diff --git a/Makefile.am b/Makefile.am index 14444964fd..382837057f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,47 +47,45 @@ MAINTAINERCLEANFILES = \ $(srcdir)/install-sh \ $(srcdir)/ltmain.sh \ $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ $(srcdir)/omf.make \ $(srcdir)/xmldocs.make \ $(srcdir)/gtk-doc.make \ $(srcdir)/ChangeLog \ `find "$(srcdir)" -type f -name Makefile.in -print` -GDKTARGET=@gdktarget@ ## Copy .pc files to target-specific names -gtk+-$(GDKTARGET)-3.0.pc: gtk+-3.0.pc - rm -f gtk+-$(GDKTARGET)-3.0.pc && \ - cp gtk+-3.0.pc gtk+-$(GDKTARGET)-3.0.pc +gtk+-x11-3.0.pc gtk+-win32-3.0.pc gtk+-quartz-3.0.pc: gtk+-3.0.pc + rm -f $@ && \ + cp gtk+-3.0.pc $@ -gdk-$(GDKTARGET)-3.0.pc: gdk-3.0.pc - rm -f gdk-$(GDKTARGET)-3.0.pc && \ - cp gdk-3.0.pc gdk-$(GDKTARGET)-3.0.pc +gdk-x11-3.0.pc gdk-win32-3.0.pc gdk-quartz-3.0.pc: gdk-3.0.pc + rm -f $@ && \ + cp gdk-3.0.pc $@ -gtk+-$(GDKTARGET)-3.0-uninstalled.pc: gtk+-3.0-uninstalled.pc - rm -f gtk+-$(GDKTARGET)-3.0-uninstalled.pc && \ - cp gtk+-3.0-uninstalled.pc gtk+-$(GDKTARGET)-3.0-uninstalled.pc - -gdk-$(GDKTARGET)-3.0-uninstalled.pc: gdk-3.0-uninstalled.pc - rm -f gdk-$(GDKTARGET)-3.0-uninstalled.pc && \ - cp gdk-3.0-uninstalled.pc gdk-$(GDKTARGET)-3.0-uninstalled.pc +gtk+-*-3.0-uninstalled.pc: gtk+-3.0-uninstalled.pc + rm -f $@ && \ + cp gtk+-3.0-uninstalled.pc $@ pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = gdk-$(GDKTARGET)-3.0.pc gtk+-$(GDKTARGET)-3.0.pc gail-3.0.pc +pkgconfig_DATA = gdk-3.0.pc gtk+-3.0.pc gail-3.0.pc + +pkgconfig_DATA += ${GDK_BACKENDS:%=gtk+-%-3.0.pc} +pkgconfig_DATA += ${GDK_BACKENDS:%=gdk-%-3.0.pc} if OS_UNIX pkgconfig_DATA += gtk+-unix-print-3.0.pc endif -DISTCLEANFILES = \ - gtk+-unix-print-3.0.pc \ - gtk+-$(GDKTARGET)-3.0.pc \ - gdk-$(GDKTARGET)-3.0.pc \ - gail-3.0.pc \ - gtk+-$(GDKTARGET)-3.0-uninstalled.pc \ - gdk-$(GDKTARGET)-3.0-uninstalled.pc \ - gail-3.0-uninstalled.pc \ +DISTCLEANFILES = \ + gtk+-unix-print-3.0.pc \ + gtk+-3.0.pc \ + gtk+-x11-3.0.pc \ + gdk-3.0.pc \ + gdk-x11-3.0.pc \ + gail-3.0.pc \ + gtk+-3.0-uninstalled.pc \ + gail-3.0-uninstalled.pc \ config.lt distclean-local: @@ -96,8 +94,7 @@ distclean-local: fi ChangeLog: - @echo Creating $@ - @if test -d "$(srcdir)/.git"; then \ + $(AM_V_GEN) if test -d "$(srcdir)/.git"; then \ (GIT_DIR=$(top_srcdir)/.git ./missing --run git log GTK_2_16_0^^.. --stat) | fmt --split-only > $@.tmp \ && mv -f $@.tmp $@ \ || ($(RM) $@.tmp; \ @@ -109,20 +106,7 @@ ChangeLog: echo A git checkout and git-log is required to generate this file >> $@); \ fi -## copy the default target for this platform to gdk-3.0.pc and gtk+-3.0.pc -DEFAULT_GDKTARGET=x11 -install-data-hook: - (cd $(DESTDIR)$(pkgconfigdir) && \ - test -f gdk-$(DEFAULT_GDKTARGET)-3.0.pc && \ - test -f gtk+-$(DEFAULT_GDKTARGET)-3.0.pc && \ - rm -f gdk-3.0.pc && cp -f gdk-$(DEFAULT_GDKTARGET)-3.0.pc gdk-3.0.pc && \ - rm -f gtk+-3.0.pc && cp -f gtk+-$(DEFAULT_GDKTARGET)-3.0.pc gtk+-3.0.pc) || \ - (cd $(DESTDIR)$(pkgconfigdir) && \ - rm -f gdk-3.0.pc && cp -f gdk-$(GDKTARGET)-3.0.pc gdk-3.0.pc && \ - rm -f gtk+-3.0.pc && cp -f gtk+-$(GDKTARGET)-3.0.pc gtk+-3.0.pc) - uninstall-local: - rm -f $(DESTDIR)$(pkgconfigdir)/gdk-3.0.pc rm -f $(DESTDIR)$(pkgconfigdir)/gtk+-3.0.pc dist-hook: diff --git a/Makefile.decl b/Makefile.decl index 2f6c579d2d..1ecbc61fe5 100644 --- a/Makefile.decl +++ b/Makefile.decl @@ -17,9 +17,15 @@ XIDS = 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 \ 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 \ 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 \ 9995 9996 9997 9998 9999 + +if USE_X11 SKIP_GDKTARGET = \ - test "$(gdktarget)" != "x11" \ - && echo "Gtk+Tests:INFO: Skipping GUI tests for non-X11 target." + false +else +SKIP_GDKTARGET = \ + echo "Gtk+Tests:INFO: Skipping GUI tests for non-X11 target." +endif + XVFB_START = \ ${XVFB} -help 2>/dev/null 1>&2 \ && XID=`for id in $(XIDS) ; do test -e /tmp/.X$$id-lock || { echo $$id; exit 0; }; done; exit 1` \ diff --git a/NEWS b/NEWS index 9fe44fb3ae..42fa6dbce8 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,296 @@ +Overview of Changes in GTK+ 2.99.2 +================================== + +* More widget are using GtkStyleContext directly: + GtkToolItemGroup, GtkMenuItem, GtkImageMenuItem, GtkMenu, + GtkTearoffMenuItem, GtkCheckMenuItem, GtkMenuShell + +* gtk-builder-convert now accepts a --target-version option + +* Bug fixes: + 637965 GtkTreeCellDataFunc called with a wrong column arguments + 639127 Misc Win32 GDK building problems + 639157 GtkOrientable should add/remove "horizontal" and "vert... + 639209 Allow toggling the GtkSwitch by clicking the handle + 639286 include gtk/gtktextattributes.h not installed + 639327 gtk-builder-convert needs to convert gtkcomboboxentry... + +* Translation updates: + Arabic + Basque + Hebrew + +Overview of Changes from GTK+ 2.99.0 to 2.99.1 +============================================== + +* More widgets are using GtkStyleContext directly: + GtkColorButton, GtkColorSelection, GtkHSV, + GtkFontSelection, GtkPrintUnixDialog, GtkImage, + GtkLayout, GtkViewport, GtkTextDisplay, GtkTextUtil, + GtkCalendar + +* GtkBuilder support has been added for setting menus + on GtkMenuToolButtons and for adding tags to + GtkTextTagTable as well as adding items to + GtkComboBoxText + +* Bug fixes: + 350618 start rubber banding on "white space" + 612918 Support disabling X11 extensions + 635687 problem with pygtk or gtk with gtk.Plug and gtk.Socket... + 638017 GtkTextView: Crash in gtk_text_view_set_tabs() + 638119 GtkSpinner animation not correctly stopped... + 638880 Need a setter for has_user_ref_count + 639030 Small cleanup in gailtextview code. + 639047 Fix remaining usage of g[dk]ktargetlib. + 639079 Obtain the fg color from the renderer + 639105 Port GtkTextDisplay to StyleContext. + 639106 New CSS style misses distinction between "selected focused"... + 639127 Misc Win32 GDK building problems + 639157 GtkOrientable should add/ remove "horizontal" and "vertical"... + +* Translation updates: + British English + Galician + Hebrew + Indonesian + Spanish + + +Overview of Changes from GTK+ 2.91.7 to 2.99.0 +============================================== + +* Deprecations and removals: + - Long-obsolete linuxfb-related GtkWindow APIs have been dropped + - All remaining G_SEALed struct members have been removed + - GtkThemeEngine has been removed + - gdk_display_get_window_at_device_position() has been renamed to + gdk_device_get_window_at_position() + - gdk_display_get_device_state() has been renamed to + gdk_device_get_position() + - gdk_device_set_source() has been dropped + - gdk_set_pointer_hooks(), gdk_display_set_pointer_hooks() and + gdk_display_set_device_hooks() have been removed + - The deprecated GtkNotebook:tab-pack child property has been removed + - The deprecated gtk_quit_add() functions have been removed + - The GtkRange update-policy facility has been removed + +* The gtk-update-icon-cache and gtk-builder-convert utilities have + been renamed back to their un-suffixed names. Distributions will + have to resolve the conflict between GTK+ 2.x and 3.0 packages + by dropping one set of the utilities and adding a dependency. + +* It is now possible to include multiple GDK backends in a single + library. The --with-gdk-backend option has been split into separate + --enable-{x11,win32,quartz}-backend options. + +* The GDK Quartz backend has been ported to the new GDK backend API + +* A number of widgets have been ported to use GtkStyleContext directly: + GtkAccelLabel, GtkArrow, GtkSeparator, GtkSpinButton, GtkMessageDialog, + GtkFrame, GtkEventBox, GtkScrolledWindow, GtkProgressBar, GtkEntry, + GtkFileChooserEntry, GtkSwitch, GtkHandleBox, GtkToolbar, GtkFixed, + GtkToolPalette, GtkAboutDialog, GtkAssistant, GtkTrayIcon, GtkPaned, + GtkToolButton, GtkSocket, GtkRecentChooser, GtkTooltip, GtkPathBar, + GtkWin32EmbedWidget, GtkCellView, GtkDialog, GtkDrawingArea, GtkPlug, + GtkEntryCompletion, GtkFileChooserButton, GtkFileChooser, GtkHandleBox, + GtkLinkButton, GtkOffscreenWindow + +* Various problems with width-for-height geometry management have been + fixed in GtkAlignment, GtkCheckButton, GtkBin + +* The GtkComboBox, GtkIconView and GtkCellView widgets have been ported + to use GtkCellArea for their cell layouts + +* The cups print backend can now send print jobs directly in PDF if + cups supports it + +* GtkNumerableIcon is a variant of GEmblemedIcon for using numbers + as emblems + +* Bugs fixed: + 144324 Leaking dnd contexts with XDnD + 165987 unsets DESKTOP_STARTUP_ID + 307963 GtkSpinButton clamps value with the wrong maximum. + 321958 gtk.Calendar Notes should also say the format of year + 533745 Segfault on gdk.DragContext.drag_get_selection() + 553404 Out-of-date comment in gtk_text_view_add_child_in_window() + 559503 Description should mention gregorian + 560177 Applications should send print jobs to CUPS in PDF format... + 562182 gtk_init() docs inaccurate + 599130 Ending a drag using space or enter doesn't always cause a... + 617312 Move documentation to inline comments: GtkDialog + 617315 Move documentation to inline comments: GtkDrawingArea + 617322 Move documentation to inline comments: GtkEntryCompletion + 617327 Move documentation to inline comments: GtkExpander + 617471 Migrate API docs from templates to source files... + 621720 Use $(AM_V_GEN) to silent the build a bit. + 622125 Note that gtk_show_uri needs gvfs to spawn URLs + 629955 Deprecate/remove gtk_main and gtk_init_add/remove* API + 633795 gdk_event_get_state wrongly extracts GDK_PROPERTY_NOTIFY... + 634711 Xlib warning when RANDR is missing + 635299 add gtk_selection_data_get_data_with_length API... + 637691 Eating events breaks proxied DND + 637721 gtk 2.91.6 issue with gtkcellrendererprogress + 637736 [GtkAboutDialog] Newlines are ignored in translator-credits + 637763 [GtkAboutDialog] no longer display contact link + 637834 gtk_widget_verify_invariants: relax toplevel checks + 637849 Shell segfaults when unicode characters after U+00FF... + 637895 gdk_pointer_grab() deprecated comment is not helpful enough + 637907 gtkwindow.h includes a private header + 637910 GtkSpinner - does not animate + 637958 print dialog doesn't fit on netbook screen size + 637974 Gtk+ 2.91.7 build of introspection fails + 638179 in draw signal handle call gtk_style_context_add_provider... + 638193 GtkSpinButton documentation out of date + 638231 GtkSwitch states translation + 638386 gdk_x11_display_init_input careless + 638580 'application' window's property released too late + 638608 gtkenums: add GTK_STATE_FLAG_NORMAL = 0 + +* Updated translations: + Estonian + Kurdish + Norwegian bokmål + Punjabi + Spanish + Swedish + Uighur + + +Overview of Changes from GTK+ 2.91.6 to 2.91.7 +============================================== + +* The treeview-refactor branch has been merged, bringing more + flexible cell arrangement with GtkCellArea, GtkCellAreaBox, etc + +* The gdk-backend branch has been merged. This branch cleans up the + internal frontend/backend separation in GDK, with the ultimate goal + of allowing to build a single gdk library that contains multiple + backends (interesting combinations are x11+wayland or quartz+x11). + + For now, GDK is still restricted to a single backend, but + as a first step, the libraries no longer include the backend name + in their soname, but are just libgdk-3.0.so and libgtk-3.0.so. + + Only the x11 backend has been kept up to date with this cleanup + work, other backends are broken in this release. + +* Deprecations and removals: + - G_SEALed struct members have been removed from GtkWindowGroup, + GtkDrawingArea, GtkTreeStore, GtkTreeModelSort, GtkTreeSelection, + GtkSocket, GtkPrintJob, GtkSelectionData + - Input device handling: + - gdk_display_list_devices, gdk_display_get_core_pointer, + gdk_input_set_extension_events, gtk_widget_set_extension_events, + gdk_devices_list have been removed + - gdk_display_warp_device has been replaced by gdk_device_warp + - gdk_enable_multidevice has been replaced by gdk_disable_multidevice + - Drag-and-Drop: + gdk_drag_context_new, gdk_drag_find_window and gdk_drag_get_protocol + have been removed + - Property handling: + Functions that deal with X11-specific encodings such as Compound Text + have been moved to backend-specific API: + gdk_string_to_compound_text[_for_display], + gdk_utf8_to_compound_text[_for_display], gdk_free_compound_text, + gdk_text_property_to_text_list[_for_display], gdk_free_text_list, + gdk_text_property_to_utf8_list + - Foreign windows: + Functions for dealing with GdkWindow wrappers around foreign + windows have been moved to backend-specific API. + - Application launching: + The gdk_spawn_* APIs have been removed, since they were trivial + wrappers around g_spawn_* on most platforms and can be replaced + by GIO GAppInfo APIs. + - Misc. other functions: gdk_net_wm_supports, gdk_set_locale, + gdkx_visual_get have been either removed, gdk_set_sm_client_id + has been moved to backend-specific API. + +* A number of GTK+ widgets have been ported to use GtkStyleContext + directly for rendering + +* The tracker search backend for the file chooser has been updated + to work with libtracker-sparql as available in tracker >= 0.9 + +* The GtkAboutDialog has been given a facelift. It no longer + opens second-level dialogs + +* The GDK X11 backend now uses XI2 (including multi-device capabilities) + by default. Use gdk_disable_multidevice() to switch back to the + XI1/Core implementation + +* Bug fixes: + 629923 Consider always calling unmap() when unsetting MAPPED flag + 634657 Dynamically attached calendar does not respond to mouse clicks + 635401 Setting conflict warning does not disappear when conflict is fixed + 636732 Gtk+ fails to build + 636777 Leak in gtk_css_provider_get_named + 637018 Add checks for id-column/entry-text-column >= 0 + 637069 Custom print settings set in custom-widget-apply are lost + 637155 Remove vestiges of support for themes using XSHAPE + 637156 Optimize gtk_widget_shape_combine_region (widget, NULL, ...) + 637189 gtk_cell_renderer_spin_start_editing uses g_ascii_strtod but... + 637243 docs: fix link failure on gtk-doc scanner binaries + 637256 gtkstylecontext: fix typos in annotations + 637464 Fix GdkWindowFilter internal refcounting + 637471 GTK2_RC_FILES should be renamed to GTK3_RC_FILES + 637520 Gtk+ seems to have broken Mutter + 637606 Missing out annotations for gtk_accelerator_parse and... + 637608 Problems with the new AboutDialog + +* Translation updates: + Estonian + Hebrew + Kazakh + Norwegian bokmål + Persian + Spanish + Vietnamese + + +Overview of Changes from GTK+ 2.91.5 to 2.91.6 +============================================== + +* Deprecations, cleanups and API changes: + - GdkDrawable and some X11-specific APIs have been removed + - GtkStyle and GtkRcStyle have been deprecated + - The GdkWindowClass enumeration is now GdkWindowWindowClass + - gdk_window_get_geometry lost its depth argument + - The old, unused gtk_decorated_window_... functions have + been removed. + +* GtkComboBox has gained an 'active id' property that is + intended for easy binding to settings + +* GtkAppChooser: A new family of widgets that allow choosing + an application to open a file. This is strongly based on + the corresponding nautilus dialog, which it is replacing. + +* The GtkStyleContext branch has been merged, changing the APIs + that are used to do themed drawing, and the theme engine interfaces. + Among the new classes are GtkStyleContext (replacing GtkStyle) and + GtkCssProvider (replacing the gtkrc parser). The migration guide + contains a chapter about porting from GtkStyle to GtkStyleContext. + +* Bugs fixed: + 549720 Add a way to hide GtkScale's slider + 582557 need open with dialog box to use with IBM's Lotus Notes... + 619148 "active ID" properties (GtkComboBox) + 636060 use ATK_DEFINE_TYPE where possible + 636129 invalid uninstantiatable type `(null)' in cast to `GtkSpinner' + 636388 gtk3-demo craches (segfault) when pressing a key in the textarea... + 636511 New style override functions do not work on textview + +* Updated translations: + Estonian + Galician + Hebrew + Persian + Slovenian + Spanish + + Overview of Changes from GTK+ 2.91.4 to 2.91.5 ============================================== diff --git a/README.win32 b/README.win32 index f7c8ca6307..fbbd691f92 100644 --- a/README.win32 +++ b/README.win32 @@ -85,7 +85,7 @@ LDFLAGS="-L/devel/dist/${ARCH}/${LIBPNG}/lib \ LIBS=-lintl \ CFLAGS=-O2 \ ./configure \ ---with-gdktarget=win32 \ +--enable-win32-backend \ --disable-gdiplus \ --with-included-immodules \ --without-libjasper \ diff --git a/autogen.sh b/autogen.sh index 2b7c0e7987..4a373e9b95 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,130 +1,32 @@ #!/bin/sh # Run this to generate all the initial makefiles, etc. -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. +test -n "$srcdir" || srcdir=`dirname "$0"` +test -n "$srcdir" || srcdir=. -ORIGDIR=`pwd` -cd $srcdir -PROJECT=Gtk+ -TEST_TYPE=-d -FILE=gdk +olddir=`pwd` +cd "$srcdir" -DIE=0 - -have_libtool=false -if libtoolize --version < /dev/null > /dev/null 2>&1 ; then - libtool_version=`libtoolize --version | - head -1 | - sed -e 's/^\(.*\)([^)]*)\(.*\)$/\1\2/g' \ - -e 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'` - case $libtool_version in - 2.*) - have_libtool=true - ;; - esac -fi -if $have_libtool ; then : ; else - echo - echo "You must have libtool 2.2 installed to compile $PROJECT." - echo "Install the appropriate package for your distribution," - echo "or get the source tarball at http://ftp.gnu.org/gnu/libtool/" - DIE=1 -fi - -(gtkdocize --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have gtk-doc installed to compile $PROJECT." - echo "Install the appropriate package for your distribution," - echo "or get the source tarball at http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/" - DIE=1 -} - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "You must have autoconf installed to compile $PROJECT." - echo "Install the appropriate package for your distribution," - echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/" - DIE=1 -} - -if automake-1.11 --version < /dev/null > /dev/null 2>&1 ; then - AUTOMAKE=automake-1.11 - ACLOCAL=aclocal-1.11 -else if automake-1.10 --version < /dev/null > /dev/null 2>&1 ; then - AUTOMAKE=automake-1.10 - ACLOCAL=aclocal-1.10 +GTKDOCIZE=`which gtkdocize` +if test -z $GTKDOCIZE; then + echo "*** No GTK-Doc found, please install it ***" + exit 1 else - echo - echo "You must have automake 1,10.x or 1.11.x installed to compile $PROJECT." - echo "Install the appropriate package for your distribution," - echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/" - DIE=1 + gtkdocize || exit $? fi -fi - -if test "$DIE" -eq 1; then - exit 1 -fi - -test $TEST_TYPE $FILE || { - echo "You must run this script in the top-level $PROJECT directory" - exit 1 -} - -# NOCONFIGURE is used by gnome-common; support both -if ! test -z "$AUTOGEN_SUBDIR_MODE"; then - NOCONFIGURE=1 -fi - -if test -z "$NOCONFIGURE"; then - if test -z "$*"; then - echo "I am going to run ./configure with no arguments - if you wish " - echo "to pass any to it, please specify them on the $0 command line." - fi -fi - -if test -z "$ACLOCAL_FLAGS"; then - - acdir=`$ACLOCAL --print-ac-dir` - m4list="glib-2.0.m4 glib-gettext.m4" - - for file in $m4list - do - if [ ! -f "$acdir/$file" ]; then - echo "WARNING: aclocal's directory is $acdir, but..." - echo " no file $acdir/$file" - echo " You may see fatal macro warnings below." - echo " If these files are installed in /some/dir, set the ACLOCAL_FLAGS " - echo " environment variable to \"-I /some/dir\", or install" - echo " $acdir/$file." - echo "" - fi - done -fi - -rm -rf autom4te.cache # README and INSTALL are required by automake, but may be deleted by clean # up rules. to get automake to work, simply touch these here, they will be # regenerated from their corresponding *.in files by ./configure anyway. touch README INSTALL -gtkdocize || exit $? - -$ACLOCAL -I m4 $ACLOCAL_FLAGS || exit $? - -libtoolize --force || exit $? - -autoheader || exit $? - -$AUTOMAKE --add-missing || exit $? -autoconf || exit $? -cd $ORIGDIR || exit $? - -if test -z "$NOCONFIGURE"; then - $srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@" || exit $? - - echo - echo "Now type 'make' to compile $PROJECT." +AUTORECONF=`which autoreconf` +if test -z $AUTORECONF; then + echo "*** No autoreconf found, please install it ***" + exit 1 +else + autoreconf --force --install --verbose || exit $? fi + +cd "$olddir" +test -n "$NOCONFIGURE" || "$srcdir/configure" "$@" diff --git a/build/win32/vs9/gdk-win32.vcproj b/build/win32/vs9/gdk-win32.vcproj index 1d6169cca3..ef0fc6e823 100644 --- a/build/win32/vs9/gdk-win32.vcproj +++ b/build/win32/vs9/gdk-win32.vcproj @@ -31,7 +31,7 @@ - - + + + - - - - - - - + diff --git a/build/win32/vs9/gdk.vcprojin b/build/win32/vs9/gdk.vcprojin index 60e0edea6d..9722543185 100644 --- a/build/win32/vs9/gdk.vcprojin +++ b/build/win32/vs9/gdk.vcprojin @@ -31,7 +31,7 @@ #include "libgdk.sourcefiles" + diff --git a/build/win32/vs9/gtk+.vsprops b/build/win32/vs9/gtk+.vsprops index ba5f174139..6cfc45b261 100644 --- a/build/win32/vs9/gtk+.vsprops +++ b/build/win32/vs9/gtk+.vsprops @@ -8,13 +8,13 @@ > @], [turn on debugging @<:@default=debug_default@:>@]),, enable_debug=debug_default) -AC_ARG_ENABLE(xkb, - [AC_HELP_STRING([--enable-xkb], - [support XKB [default=maybe]])],, - [enable_xkb="maybe"]) -AC_ARG_ENABLE(xinerama, - [AC_HELP_STRING([--enable-xinerama], - [support xinerama extension if available [default=yes]])],, - [enable_xinerama="yes"]) + AC_ARG_ENABLE(rebuilds, [AC_HELP_STRING([--disable-rebuilds], [disable all source autogeneration rules])],, [enable_rebuilds=yes]) -AC_ARG_WITH(xinput, - [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])]) +AC_ARG_ENABLE(gtk2-dependency, + AC_HELP_STRING([--enable-gtk2-dependency], + [Do not build gtk-update-icon-cache and other shared tools]),, + [enable_gtk2_dependency=no]) -if test "$platform_win32" = yes; then - gdktarget=win32 -else - gdktarget=x11 +AM_CONDITIONAL(BUILD_ICON_CACHE, [test "x$enable_gtk2_dependency" = xno]) + +AC_ARG_ENABLE(xkb, + [AC_HELP_STRING([--enable-xkb], + [support XKB extension [default=maybe]])],, + [enable_xkb="maybe"]) +AC_ARG_ENABLE(xinerama, + [AC_HELP_STRING([--enable-xinerama], + [support Xinerama extension if available [default=maybe]])],, + [enable_xinerama="maybe"]) +AC_ARG_ENABLE(xinput, + [AC_HELP_STRING([--enable-xinput], + [support XInput extension if available [default=yes]])],, + [enable_xinput="maybe"]) +AC_ARG_ENABLE(xrandr, + [AC_HELP_STRING([--enable-xrandr], + [support XRandR extension if available [default=maybe]])],, + [enable_xrandr="maybe"]) +AC_ARG_ENABLE(xfixes, + [AC_HELP_STRING([--enable-xfixes], + [support XFixes extension if available [default=maybe]])],, + [enable_xfixes="maybe"]) +AC_ARG_ENABLE(xcomposite, + [AC_HELP_STRING([--enable-xcomposite], + [support X Composite extension if available [default=maybe]])],, + [enable_xcomposite="maybe"]) +AC_ARG_ENABLE(xdamage, + [AC_HELP_STRING([--enable-xdamage], + [support X Damage extension if available [default=maybe]])],, + [enable_xdamage="maybe"]) + +AC_ARG_ENABLE(x11-backend, + [AC_HELP_STRING([--enable-x11-backend], + [enable the X11 gdk backend])], + [backend_set=yes]) +AC_ARG_ENABLE(win32-backend, + [AC_HELP_STRING([--enable-win32-backend], + [enable the Win32 gdk backend])], + [backend_set=yes]) +AC_ARG_ENABLE(quartz-backend, + [AC_HELP_STRING([--enable-quartz-backend], + [enable the quartz gdk backend])], + [backend_set=yes]) +AC_ARG_ENABLE(broadway-backend, + [AC_HELP_STRING([--enable-broadway-backend], + [enable the broadway (HTML5) gdk backend])], + [backend_set=yes]) + +if test -z "$backend_set"; then + if test "$platform_win32" = yes; then + enable_win32_backend=yes + else + enable_x11_backend=yes + fi fi -AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/broadway]] select non-default GDK target], - gdktarget=$with_gdktarget) +cairo_backends= +backend_immodules= +GDK_BACKENDS= +GDK_EXTRA_LIBS= +GDK_EXTRA_CFLAGS= +GDK_WINDOWING= +GIO_PACKAGE=gio-2.0 +PANGO_PACKAGES="pango pangocairo" -AC_SUBST(gdktarget) -case $gdktarget in - x11|win32|quartz|broadway) ;; - *) AC_MSG_ERROR([Invalid target for GDK: use x11, broadway, quartz or win32.]);; -esac +if test "x$enable_x11_backend" == xyes; then + # GDK calls the xlib backend "x11," cairo calls it "xlib." Other + # backend names are identical. + cairo_backends="$cairo_backends cairo-xlib" + GDK_BACKENDS="$GDK_BACKENDS x11" + # Pull in gio-unix for GDesktopAppInfo usage, see at least + # gdkapplaunchcontext-x11.c + GIO_PACKAGE=gio-unix-2.0 + backend_immodules="$backend_immodules,xim" + GDK_WINDOWING="$GDK_WINDOWING +#define GDK_WINDOWING_X11" +fi -gdktargetlib=libgdk-$gdktarget-$GTK_API_VERSION.la -gtktargetlib=libgtk-$gdktarget-$GTK_API_VERSION.la +if test "x$enable_win32_backend" == xyes; then + cairo_backends="$cairo_backends cairo-win32" + GDK_BACKENDS="$GDK_BACKENDS win32" + backend_immodules="$backend_immodules,ime" + GDK_WINDOWING="$GDK_WINDOWING +#define GDK_NATIVE_WINDOW_POINTER +#define GDK_WINDOWING_WIN32" + GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid" + AM_CONDITIONAL(USE_WIN32, true) + PANGO_PACKAGES="pangowin32 pangocairo" +else + AM_CONDITIONAL(USE_WIN32, false) +fi -AC_SUBST(gdktargetlib) -AC_SUBST(gtktargetlib) +if test "x$enable_quartz_backend" == xyes; then + cairo_backends="$cairo_backends cairo-quartz" + GDK_BACKENDS="$GDK_BACKENDS quartz" + GDK_WINDOWING="$GDK_WINDOWING +#define GDK_WINDOWING_QUARTZ" + GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa" + AM_CONDITIONAL(USE_QUARTZ, true) +else + AM_CONDITIONAL(USE_QUARTZ, false) +fi + +if test "x$enable_broadway_backend" == xyes; then + GDK_BACKENDS="$GDK_BACKENDS broadway" + GDK_WINDOWING="$GDK_WINDOWING +#define GDK_WINDOWING_BROADWAY" + GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lz" + AM_CONDITIONAL(USE_BROADWAY, true) +else + AM_CONDITIONAL(USE_BROADWAY, false) +fi + +# strip leading space +GDK_BACKENDS=${GDK_BACKENDS/# } + +AC_SUBST(GDK_BACKENDS) + +if test -z "$GDK_BACKENDS"; then + AC_MSG_ERROR([No GDK backends selected.]) +fi if test "x$enable_debug" = "xyes"; then test "$cflags_set" = set || CFLAGS="$CFLAGS -g" @@ -364,21 +460,7 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES, cairo-gobject >= cairo_required_version dnl gdk-pixbuf-2.0 >= gdk_pixbuf_required_version]) -## In addition to checking that cairo is present, we also need to -## check that the correct cairo backend is there. E.g. if the GDK -## target is win32 we need the cairo-win32 backend and so on. -cairo_backend=cairo-$gdktarget - -# GDK calls the xlib backend "x11," cairo calls it "xlib." Other -# backend names are identical. -if test "x$cairo_backend" = "xcairo-x11"; then - cairo_backend=cairo-xlib -fi -if test "x$cairo_backend" = "xcairo-broadway"; then - cairo_backend=cairo -fi -PKG_CHECK_MODULES(CAIRO_BACKEND, - [$cairo_backend >= cairo_required_version]) +PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends]) if test "$os_win32" != yes; then # libtool option to control which symbols are exported @@ -669,53 +751,6 @@ else fi fi -# `widechar' tests for gdki18n.h -AC_MSG_CHECKING(for wchar.h) -AC_TRY_CPP([#include ], gdk_wchar_h=yes, gdk_wchar_h=no) -if test $gdk_wchar_h = yes; then - AC_DEFINE(HAVE_WCHAR_H, 1, [Have wchar.h include file]) -fi -AC_MSG_RESULT($gdk_wchar_h) - -# Check for wctype.h (for iswalnum) -AC_MSG_CHECKING(for wctype.h) -AC_TRY_CPP([#include ], gdk_wctype_h=yes, gdk_wctype_h=no) -if test $gdk_wctype_h = yes; then - AC_DEFINE(HAVE_WCTYPE_H, 1, [Have wctype.h include file]) -fi -AC_MSG_RESULT($gdk_wctype_h) - -# in Solaris 2.5, `iswalnum' is in -lw -GDK_WLIBS= -AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)]) - -oLIBS="$LIBS" -LIBS="$LIBS $GDK_WLIBS" -# The following is necessary for Linux libc-5.4.38 -AC_MSG_CHECKING(if iswalnum() and friends are properly defined) -AC_TRY_LINK([#include ],[ -#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H)) -# ifdef HAVE_WCTYPE_H -# include -# else -# ifdef HAVE_WCHAR_H -# include -# endif -# endif -#else -# define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c)) -#endif -iswalnum((wchar_t) 0); -], gdk_working_wctype=yes, gdk_working_wctype=no) -LIBS="$oLIBS" - -if test $gdk_working_wctype = no; then - AC_DEFINE(HAVE_BROKEN_WCTYPE, 1, [Is the wctype implementation broken]) - GDK_WLIBS= -fi -AC_MSG_RESULT($gdk_working_wctype) -AC_SUBST(GDK_WLIBS) - # Check for uxtheme.h (for MS-Windows Engine) AC_MSG_CHECKING(for uxtheme.h) AC_TRY_CPP([#include ], gtk_uxtheme_h=yes, gtk_uxtheme_h=no) @@ -735,6 +770,7 @@ AC_ARG_ENABLE(modules, [disable dynamic module loading])]) dynworks=false +build_dynamic_modules=no deps= if test x$enable_modules = xno; then AC_MSG_RESULT(no) @@ -762,10 +798,12 @@ else fi if $dynworks; then + build_dynamic_modules=yes AC_DEFINE(USE_GMODULE, 1, [Define to 1 if gmodule works and should be used]) AC_MSG_RESULT(yes) else + build_dynamic_modules=no AC_MSG_RESULT(no) fi fi @@ -782,8 +820,8 @@ dnl AC_HELP_STRING cause problems. dnl AC_HELP_STRING([--with-included-immodules=MODULE1 MODULE2 ...], dnl [build the specified input method modules into gtk]) AC_ARG_WITH(included_immodules, -[ --with-included-immodules=MODULE1,MODULE2,... - build the specified input methods into gtk]) + AC_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...], + [build the specified input methods into gtk])) if $dynworks; then : @@ -794,14 +832,7 @@ else fi fi -all_immodules="am-et,cedilla,cyrillic-translit" -if test "$gdktarget" = "win32"; then - all_immodules="${all_immodules},ime" -fi -all_immodules="${all_immodules},inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr" -if test "$gdktarget" = "x11"; then - all_immodules="${all_immodules},xim" -fi +all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules" included_immodules="" # If the switch specified without listing any specific ones, include all @@ -865,13 +896,15 @@ dnl Look for a host system's gdk-pixbuf-csource if we are cross-compiling AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) -if test $cross_compiling = yes; then +if test "x$cross_compiling" = xyes || test "x$enable_gtk2_dependency" = xyes; then AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no) if test x$GTK_UPDATE_ICON_CACHE = xno; then REBUILD_PNGS=# fi fi +AM_CONDITIONAL(USE_EXTERNAL_ICON_CACHE, [test "x$cross_compiling" = xyes || test "x$enable_gtk2_dependency" = xyes]) + AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no) if test ! -f $srcdir/gtk/gtkbuiltincache.h && @@ -886,14 +919,12 @@ fi # Windowing system checks ######################################## -GDK_EXTRA_LIBS="$GDK_WLIBS" -GDK_EXTRA_CFLAGS= - # GTK+ uses some X calls, so needs to link against X directly GTK_DEP_PACKAGES_FOR_X= GTK_DEP_LIBS_FOR_X= +X_EXTENSIONS= -if test "x$gdktarget" = "xx11"; then +if test "x$enable_x11_backend" == xyes; then X_PACKAGES=fontconfig # @@ -991,10 +1022,13 @@ if test "x$gdktarget" = "xx11"; then # Check for XKB support. if test "x$enable_xkb" = "xyes"; then - AC_MSG_WARN(XKB support explicitly enabled) - AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]) + AC_CHECK_FUNC(XkbQueryExtension, + X_EXTENSIONS="$X_EXTENSIONS XKB" + AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]), + AC_MSG_ERROR([*** XKB extension not found. Check 'config.log' for more details.])) elif test "x$enable_xkb" = "xmaybe"; then AC_CHECK_FUNC(XkbQueryExtension, + X_EXTENSIONS="$X_EXTENSIONS XKB" AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])) else AC_MSG_WARN(XKB support explicitly disabled) @@ -1016,19 +1050,23 @@ if test "x$gdktarget" = "xx11"; then CFLAGS="$gtk_save_CFLAGS" - if test "x$enable_xinerama" = "xyes"; then + if test "x$enable_xinerama" != "xno"; then # Check for Xinerama extension (Solaris impl or Xfree impl) + have_xfree_xinerama=false + have_solaris_xinerama=false + gtk_save_cppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $x_cflags" # Check for XFree - AC_MSG_CHECKING(for Xinerama support on XFree86) + AC_MSG_CHECKING(for Xinerama packages) - have_xfree_xinerama=false if $PKG_CONFIG --exists xinerama ; then + AC_MSG_RESULT(yes) have_xfree_xinerama=true X_PACKAGES="$X_PACKAGES xinerama" else + AC_MSG_RESULT(no) AC_CHECK_LIB(Xinerama, XineramaQueryExtension, [AC_CHECK_HEADER(X11/extensions/Xinerama.h, [GTK_ADD_LIB(x_extra_libs,Xinerama) @@ -1037,14 +1075,12 @@ if test "x$gdktarget" = "xx11"; then fi if $have_xfree_xinerama ; then + X_EXTENSIONS="$X_EXTENSIONS Xinerama" AC_DEFINE(HAVE_XFREE_XINERAMA, 1, [Define to 1 if XFree Xinerama is available]) AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 is Xinerama is available]) - AC_MSG_RESULT(yes) else - AC_MSG_RESULT(no) - case "$host" in *-*-solaris*) # Check for solaris @@ -1057,6 +1093,7 @@ if test "x$gdktarget" = "xx11"; then [#include ])]) if $have_solaris_xinerama ; then + X_EXTENSIONS="$X_EXTENSIONS Xinerama" AC_DEFINE(HAVE_SOLARIS_XINERAMA, 1, [Define to 1 if solaris xinerama is available]) AC_DEFINE(HAVE_XINERAMA, 1, @@ -1071,9 +1108,14 @@ if test "x$gdktarget" = "xx11"; then esac fi fi + if test "x$enable_xinerama" = "xyes" ; then + if test "x$have_xfree_xinerama" != "xtrue" -a "x$have_solaris_xinerama" != "xtrue" ; then + AC_MSG_ERROR([*** Xinerama extension not found. Check 'config.log' for more details.]) + fi + fi # set up things for XInput - if test "x$with_xinput" != "xno" && $PKG_CONFIG --exists "xi" ; then + if test "x$enable_xinput" != "xno" && $PKG_CONFIG --exists "xi" ; then have_xinput=yes AC_DEFINE(XINPUT_XFREE, 1, @@ -1082,7 +1124,11 @@ if test "x$gdktarget" = "xx11"; then X_PACKAGES="$X_PACKAGES xi" AC_CHECK_HEADER(X11/extensions/XInput2.h, - have_xinput2=yes; AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available])) + have_xinput2=yes + X_EXTENSIONS="$X_EXTENSIONS XI2" + AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]), + X_EXTENSIONS="$X_EXTENSIONS XInput") + else AC_DEFINE(XINPUT_NONE, 1, [Define to 1 if no XInput should be used]) @@ -1091,11 +1137,22 @@ if test "x$gdktarget" = "xx11"; then AM_CONDITIONAL(XINPUT_XFREE, test "x$have_xinput" = "xyes") AM_CONDITIONAL(XINPUT_2, test "x$have_xinput2" = "xyes") - # Check for the RANDR extension - if $PKG_CONFIG --exists "xrandr >= 1.2.99" ; then - AC_DEFINE(HAVE_RANDR, 1, [Have the Xrandr extension library]) + if test "x$enable_xinput" = "xyes" ; then + if test "x$have_xinput" != "xyes" -a "x$have_xinput2" != "xyes" ; then + AC_MSG_ERROR([*** XInput extension not found. Check 'config.log' for more details.]) + fi + fi - X_PACKAGES="$X_PACKAGES xrandr" + # Check for the RANDR extension + if test x"$enable_xrandr" != xno; then + if $PKG_CONFIG --exists "xrandr >= 1.2.99" ; then + AC_DEFINE(HAVE_RANDR, 1, [Have the Xrandr extension library]) + + X_PACKAGES="$X_PACKAGES xrandr" + X_EXTENSIONS="$X_EXTENSIONS XRANDR" + elif test x"$enable_xrandr" = xyes; then + AC_MSG_ERROR([RANDR support requested but xrandr not found]) + fi fi # Checks for Xcursor library @@ -1108,29 +1165,44 @@ if test "x$gdktarget" = "xx11"; then # Checks for XFixes extension - if $PKG_CONFIG --exists xfixes ; then - AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension]) + if test x"$enable_xfixes" != xno; then + if $PKG_CONFIG --exists xfixes ; then + AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension]) - X_PACKAGES="$X_PACKAGES xfixes" - GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xfixes" + X_PACKAGES="$X_PACKAGES xfixes" + X_EXTENSIONS="$X_EXTENSIONS XFIXES" + GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xfixes" + elif test x"$enable_xfixes" = xyes; then + AC_MSG_ERROR([XFixes support requested but xfixes not found]) + fi fi # Checks for Xcomposite extension - if $PKG_CONFIG --exists xcomposite ; then - AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension]) + if test x"$enable_xcomposite" != xno; then + if $PKG_CONFIG --exists xcomposite ; then + AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension]) - X_PACKAGES="$X_PACKAGES xcomposite" - GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xcomposite" + X_PACKAGES="$X_PACKAGES xcomposite" + X_EXTENSIONS="$X_EXTENSIONS Composite" + GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xcomposite" + elif test x"$enable_xcomposite" = xyes; then + AC_MSG_ERROR([Xcomposite support requested but xcomposite not found]) + fi fi # Checks for Xdamage extension - if $PKG_CONFIG --exists xdamage ; then - AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension]) + if test x"$enable_xdamage" != xno; then + if $PKG_CONFIG --exists xdamage ; then + AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension]) - X_PACKAGES="$X_PACKAGES xdamage" - GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xdamage" + X_PACKAGES="$X_PACKAGES xdamage" + X_EXTENSIONS="$X_EXTENSIONS DAMAGE" + GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xdamage" + elif test x"$enable_xdamage" = xyes; then + AC_MSG_ERROR([Xdamage support requested but xdamage not found]) + fi fi if $have_base_x_pc ; then @@ -1143,6 +1215,10 @@ if test "x$gdktarget" = "xx11"; then LIBS="$gtk_save_libs" AM_CONDITIONAL(USE_X11, true) + + # strip leading space + X_EXTENSIONS=${X_EXTENSIONS/# } + else XPACKAGES= @@ -1152,32 +1228,8 @@ else AM_CONDITIONAL(HAVE_X11R6, false) fi -if test "x$gdktarget" = "xwin32"; then - GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid" - AM_CONDITIONAL(USE_WIN32, true) -else - AM_CONDITIONAL(USE_WIN32, false) -fi - -if test "x$gdktarget" = "xquartz"; then - GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa" - AM_CONDITIONAL(USE_QUARTZ, true) -else - AM_CONDITIONAL(USE_QUARTZ, false) -fi - -if test "x$gdktarget" = "xbroadway" ; then - GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lz" -fi - # Check for Pango flags -if test "x$gdktarget" = "xwin32"; then - PANGO_PACKAGES="pangowin32 pangocairo" -else - PANGO_PACKAGES="pango pangocairo" -fi - AC_MSG_CHECKING(Pango flags) if $PKG_CONFIG --exists $PANGO_PACKAGES ; then PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES` @@ -1207,12 +1259,7 @@ fi CFLAGS="$saved_cflags" LDFLAGS="$saved_ldflags" -# Pull in gio-unix for GDesktopAppInfo usage, see at least gdkapplaunchcontext-x11.c -if test "x$gdktarget" = "xx11" || test "x$gdktarget" = "xbroadway" ; then - GDK_PACKAGES="$PANGO_PACKAGES gio-unix-2.0 $X_PACKAGES gdk-pixbuf-2.0 $cairo_backend cairo-gobject" -else - GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 $cairo_backend cairo-gobject" -fi +GDK_PACKAGES="$PANGO_PACKAGES $GIO_PACKAGE $X_PACKAGES gdk-pixbuf-2.0 $cairo_backends cairo-gobject" GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES`" GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS" @@ -1221,7 +1268,7 @@ GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFL # into the pkg-config files # if test $enable_explicit_deps != yes ; then - GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0" + GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 cairo-gobject" GDK_EXTRA_LIBS= fi @@ -1262,7 +1309,7 @@ else fi GTK_PACKAGES="atk cairo cairo-gobject gdk-pixbuf-2.0 gio-2.0" -if test "x$gdktarget" = "xx11"; then +if test "x$enable_x11_backend" == xyes; then GTK_PACKAGES="$GTK_PACKAGES pangoft2" fi GTK_EXTRA_LIBS= @@ -1331,8 +1378,10 @@ LIBS="$old_LIBS" # Printing system checks ################################################################ +PRINT_BACKENDS="file lpr" + AC_ARG_ENABLE(cups, - [AC_HELP_STRING([--disable-cups] + [AC_HELP_STRING([--disable-cups], [disable cups print backend])],, [enable_cups=auto]) @@ -1369,6 +1418,7 @@ else AC_CHECK_HEADER(cups/cups.h,,AC_MSG_ERROR([[*** Sorry, cups-config present but cups/cups.h missing.]])) + PRINT_BACKENDS="$PRINT_BACKENDS cups" AM_CONDITIONAL(HAVE_CUPS, true) gtk_save_cflags="$CFLAGS" @@ -1392,7 +1442,7 @@ fi # AC_ARG_ENABLE(papi, - [AC_HELP_STRING([--disable-papi] + [AC_HELP_STRING([--disable-papi], [disable papi print backend])],, [enable_papi=auto]) @@ -1402,6 +1452,7 @@ else AC_MSG_CHECKING(libpapi) AC_CHECK_LIB(papi, papiServiceCreate, have_papi=yes, have_papi=no) if test $have_papi = yes; then + PRINT_BACKENDS="$PRINT_BACKENDS papi" AC_DEFINE([HAVE_PAPI], [], [Define to 1 if libpapi available]) fi AM_CONDITIONAL(HAVE_PAPI, test $have_papi = yes) @@ -1427,7 +1478,7 @@ if test "$os_win32" != "yes"; then *** postscript backend enabled.])) AC_CHECK_HEADER(cairo-svg.h,,AC_MSG_ERROR([ -*** Can't find cairo-svg.h. You must build Cairo with the +*** Cannot find cairo-svg.h. You must build Cairo with the *** svg backend enabled.])) fi @@ -1438,6 +1489,9 @@ AC_ARG_ENABLE(test-print-backend, [AC_HELP_STRING([--enable-test-print-backend], [build test print backend])],, [enable_test_print_backend=no]) +if test "x$enable_test_print_backend" != "xno" ; then + PRINT_BACKENDS="$PRINT_BACKENDS test" +fi AM_CONDITIONAL(TEST_PRINT_BACKEND, test "x$enable_test_print_backend" != "xno") @@ -1478,19 +1532,18 @@ GOBJECT_INTROSPECTION_CHECK([0.9.3]) ################################################# AC_ARG_ENABLE(packagekit, - AC_HELP_STRING([--disable-packagekit], - [build packagekit open with module])) + AC_HELP_STRING([--disable-packagekit], + [build packagekit open-with module])) -ENABLE_PACKAGEKIT= +build_packagekit=no if test "os_win32" != "yes"; then - if test "x$enable_packagekit" != "xno"; then - ENABLE_PACKAGEKIT=1 - AC_DEFINE(ENABLE_PACKAGEKIT, 1, [define to enable packagekit]) - fi + if test "x$enable_packagekit" != "xno"; then + build_packagekit=yes + AC_DEFINE(ENABLE_PACKAGEKIT, 1, [define to enable packagekit]) + fi fi -AC_SUBST(ENABLE_PACKAGEKIT) -AM_CONDITIONAL(ENABLE_PACKAGEKIT, test "x$ENABLE_PACKAGEKIT" = "x1") +AM_CONDITIONAL(ENABLE_PACKAGEKIT, test "x$build_packagekit" = "xyes") ################################################## # Checks for gtk-doc and docbook-tools @@ -1537,36 +1590,28 @@ AC_CONFIG_COMMANDS([gdk/gdkconfig.h], [ * This is a generated file. Please modify `configure.ac' */ -#ifndef GDKCONFIG_H -#define GDKCONFIG_H +#ifndef __GDKCONFIG_H__ +#define __GDKCONFIG_H__ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif -#ifndef GSEAL -/* introduce GSEAL() here for all of Gdk and Gtk+ without the need to modify GLib */ -# ifdef GSEAL_ENABLE -# define GSEAL(ident) _g_sealed__ ## ident -# else -# define GSEAL(ident) ident -# endif -#endif /* !GSEAL */ +#include + +G_BEGIN_DECLS _______EOF cat >>$outfile <<_______EOF $gdk_windowing -$gdk_wc _______EOF cat >>$outfile <<_______EOF -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS -#endif /* GDKCONFIG_H */ +#endif /* __GDKCONFIG_H__ */ _______EOF @@ -1577,34 +1622,7 @@ _______EOF mv $outfile gdk/gdkconfig.h fi ],[ -if test "x$gdktarget" = "xx11" ; then - gdk_windowing=' -#define GDK_WINDOWING_X11' -elif test "x$gdktarget" = "xwin32" ; then - gdk_windowing=' -#define GDK_NATIVE_WINDOW_POINTER - -#define GDK_WINDOWING_WIN32' -elif test "x$gdktarget" = "xquartz" ; then - gdk_windowing=' -#define GDK_WINDOWING_QUARTZ' -elif test "x$gdktarget" = "xbroadway" ; then - gdk_windowing=' -#define GDK_WINDOWING_BROADWAY' -fi - -if test x$gdk_wchar_h = xyes; then - gdk_wc=' -#define GDK_HAVE_WCHAR_H 1' -fi -if test x$gdk_wctype_h = xyes; then - gdk_wc="\$gdk_wc -#define GDK_HAVE_WCTYPE_H 1" -fi -if test x$gdk_working_wctype = xno; then - gdk_wc="\$gdk_wc -#define GDK_HAVE_BROKEN_WCTYPE 1" -fi +gdk_windowing='$GDK_WINDOWING' ]) dnl @@ -1624,7 +1642,7 @@ AC_ARG_ENABLE(Bsymbolic, enable_Bsymbolic=no) LDFLAGS="${SAVED_LDFLAGS}"]) -if test "x${enable_Bsymbolic}" == "xyes"; then +if test "x${enable_Bsymbolic}" = "xyes" ; then GTK_LINK_FLAGS=-Wl,-Bsymbolic-functions fi AC_SUBST(GTK_LINK_FLAGS) @@ -1637,7 +1655,6 @@ gdk-3.0.pc gtk+-3.0.pc gtk+-unix-print-3.0.pc gail-3.0.pc -gdk-3.0-uninstalled.pc gtk+-3.0-uninstalled.pc gail-3.0-uninstalled.pc m4macros/Makefile @@ -1655,6 +1672,7 @@ docs/reference/gdk/version.xml docs/reference/gtk/Makefile docs/reference/gtk/version.xml docs/reference/libgail-util/Makefile +docs/reference/libgail-util/version.xml docs/tools/Makefile build/Makefile build/win32/Makefile @@ -1695,5 +1713,19 @@ perf/Makefile AC_OUTPUT -echo "configuration: - target: $gdktarget" +# beautify the immodule list a bit +included_immodules=${included_immodules//,/ } +included_immodules=${included_immodules:-none} + +echo "configuration:" +echo " GDK backends: $GDK_BACKENDS" +if test "x$enable_x11_backend" = "xyes"; then +echo " X11 extensions: $X_EXTENSIONS" +fi +echo " Print backends: $PRINT_BACKENDS" +echo " Dynamic modules: $build_dynamic_modules" +echo " Included immodules: $included_immodules" +echo " PackageKit support: $build_packagekit" +echo " Introspection: $found_introspection" +echo " Debugging: $enable_debug" +echo " Documentation: $enable_gtk_doc" diff --git a/demos/Makefile.am b/demos/Makefile.am index 9fe2ddc33a..dc6fcb632b 100644 --- a/demos/Makefile.am +++ b/demos/Makefile.am @@ -11,14 +11,13 @@ INCLUDES = \ $(GTK_DEBUG_FLAGS) \ $(GTK_DEP_CFLAGS) -DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) +DEPS = \ + $(top_builddir)/gtk/libgtk-3.0.la -LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(GTK_DEP_LIBS) \ +LDADDS = \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ + $(GTK_DEP_LIBS) \ $(MATH_LIB) noinst_PROGRAMS = \ diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index 43b706e7ed..5385dcbbb4 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -55,13 +55,12 @@ INCLUDES = \ $(GTK_DEP_CFLAGS) DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(GTK_DEP_LIBS) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ + $(GTK_DEP_LIBS) \ -lm bin_PROGRAMS = gtk3-demo diff --git a/demos/gtk-demo/assistant.c b/demos/gtk-demo/assistant.c index 09f48d4653..232d345c07 100644 --- a/demos/gtk-demo/assistant.c +++ b/demos/gtk-demo/assistant.c @@ -110,7 +110,7 @@ create_page1 (GtkWidget *assistant) gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 1"); gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf); g_object_unref (pixbuf); } @@ -133,7 +133,7 @@ create_page2 (GtkWidget *assistant) gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 2"); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf); g_object_unref (pixbuf); } @@ -152,7 +152,7 @@ create_page3 (GtkWidget *assistant) gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, "Confirmation"); - pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, pixbuf); g_object_unref (pixbuf); } diff --git a/demos/gtk-demo/changedisplay.c b/demos/gtk-demo/changedisplay.c index 2e3d503f66..951d3730ab 100644 --- a/demos/gtk-demo/changedisplay.c +++ b/demos/gtk-demo/changedisplay.c @@ -27,6 +27,9 @@ * - Using GtkDialog */ #include + +#undef GDK_DISABLE_DEPRECATED + #include #include "demo-common.h" @@ -151,7 +154,7 @@ query_for_toplevel (GdkScreen *screen, toplevel = NULL; } - gdk_cursor_unref (cursor); + g_object_unref (cursor); gtk_widget_destroy (popup); gdk_flush (); /* Really release the grab */ diff --git a/demos/gtk-demo/clipboard.c b/demos/gtk-demo/clipboard.c index e77b88c9b2..1a321cc682 100644 --- a/demos/gtk-demo/clipboard.c +++ b/demos/gtk-demo/clipboard.c @@ -77,8 +77,8 @@ get_image_pixbuf (GtkImage *image) return g_object_ref (gtk_image_get_pixbuf (image)); case GTK_IMAGE_STOCK: gtk_image_get_stock (image, &stock_id, &size); - return gtk_widget_render_icon (GTK_WIDGET (image), - stock_id, size, NULL); + return gtk_widget_render_icon_pixbuf (GTK_WIDGET (image), + stock_id, size); default: g_warning ("Image storage type %d not handled", gtk_image_get_storage_type (image)); @@ -125,7 +125,7 @@ drag_data_received (GtkWidget *widget, { GdkPixbuf *pixbuf; - if (selection_data->length > 0) + if (gtk_selection_data_get_length (selection_data) > 0) { pixbuf = gtk_selection_data_get_pixbuf (selection_data); gtk_image_set_from_pixbuf (GTK_IMAGE (data), pixbuf); diff --git a/demos/gtk-demo/combobox.c b/demos/gtk-demo/combobox.c index fbe6c12eeb..e9bf96ba22 100644 --- a/demos/gtk-demo/combobox.c +++ b/demos/gtk-demo/combobox.c @@ -65,8 +65,8 @@ create_stock_icon_store (void) { if (stock_id[i]) { - pixbuf = gtk_widget_render_icon (cellview, stock_id[i], - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, stock_id[i], + GTK_ICON_SIZE_BUTTON); gtk_stock_lookup (stock_id[i], &item); label = strip_underscore (item.label); gtk_list_store_append (store, &iter); diff --git a/demos/gtk-demo/offscreen_window.c b/demos/gtk-demo/offscreen_window.c index 27ff99ef8d..f547f0727d 100644 --- a/demos/gtk-demo/offscreen_window.c +++ b/demos/gtk-demo/offscreen_window.c @@ -290,7 +290,6 @@ gtk_rotated_bin_realize (GtkWidget *widget) g_signal_connect (bin->offscreen_window, "from-embedder", G_CALLBACK (offscreen_window_from_parent), bin); - gtk_widget_style_attach (widget); context = gtk_widget_get_style_context (widget); gtk_style_context_set_background (context, window); gtk_style_context_set_background (context, bin->offscreen_window); diff --git a/demos/gtk-demo/offscreen_window2.c b/demos/gtk-demo/offscreen_window2.c index 96d953dbbe..ee2e595673 100644 --- a/demos/gtk-demo/offscreen_window2.c +++ b/demos/gtk-demo/offscreen_window2.c @@ -228,7 +228,6 @@ gtk_mirror_bin_realize (GtkWidget *widget) g_signal_connect (bin->offscreen_window, "from-embedder", G_CALLBACK (offscreen_window_from_parent), bin); - gtk_widget_style_attach (widget); context = gtk_widget_get_style_context (widget); gtk_style_context_set_background (context, window); gtk_style_context_set_background (context, bin->offscreen_window); diff --git a/demos/gtk-demo/stock_browser.c b/demos/gtk-demo/stock_browser.c index e6fed81dd4..d0d3442034 100644 --- a/demos/gtk-demo/stock_browser.c +++ b/demos/gtk-demo/stock_browser.c @@ -166,9 +166,9 @@ create_model (void) } g_free (sizes); - info.small_icon = gtk_widget_render_icon (window, info.id, - size, - NULL); + info.small_icon = gtk_widget_render_icon_pixbuf (window, + info.id, + size); if (size != GTK_ICON_SIZE_MENU) { diff --git a/demos/gtk-demo/toolpalette.c b/demos/gtk-demo/toolpalette.c index 2431d6a4fe..73ab5c1878 100644 --- a/demos/gtk-demo/toolpalette.c +++ b/demos/gtk-demo/toolpalette.c @@ -41,7 +41,7 @@ canvas_item_new (GtkWidget *widget, GdkPixbuf *pixbuf; stock_id = gtk_tool_button_get_stock_id (button); - pixbuf = gtk_widget_render_icon (widget, stock_id, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (widget, stock_id, GTK_ICON_SIZE_DIALOG); if (pixbuf) { diff --git a/demos/testpixbuf-scale.c b/demos/testpixbuf-scale.c index ee57763c84..bfff451d9a 100644 --- a/demos/testpixbuf-scale.c +++ b/demos/testpixbuf-scale.c @@ -24,9 +24,9 @@ set_interp_type (GtkWidget *widget, gpointer data) void overall_changed_cb (GtkAdjustment *adjustment, gpointer data) { - if (adjustment->value != overall_alpha) + if (gtk_adjustment_get_value (adjustment) != overall_alpha) { - overall_alpha = adjustment->value; + overall_alpha = gtk_adjustment_get_value (adjustment); gtk_widget_queue_draw (darea); } } diff --git a/docs/reference/gdk/Makefile.am b/docs/reference/gdk/Makefile.am index 3015baa9fa..6eeffdb0d7 100644 --- a/docs/reference/gdk/Makefile.am +++ b/docs/reference/gdk/Makefile.am @@ -1,5 +1,4 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl AUTOMAKE_OPTIONS = 1.6 @@ -13,40 +12,39 @@ DOC_MAIN_SGML_FILE=gdk-docs.sgml SCAN_OPTIONS=--deprecated-guards="GDK_ENABLE_BROKEN|GDK_DISABLE_DEPRECATED" # The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=../../../gdk +DOC_SOURCE_DIR=../../../gdk ../../../gdk/x11 # Used for dependencies HFILE_GLOB=$(top_srcdir)/gdk/*.h $(top_srcdir)/gdk/x11/gdkx.h CFILE_GLOB=$(top_srcdir)/gdk/*.c # Header files to ignore when scanning -IGNORE_HFILES= \ +IGNORE_HFILES= \ gdkintl.h \ gdkmarshalers.h \ gdkkeysyms.h \ gdkinternals.h \ gdkprivate.h \ - gdkpoly-generic.h \ + gdk*private.h \ keyname-table.h \ - win32 \ + win32 \ x11 \ quartz # Extra files to add when scanning (relative to $srcdir) EXTRA_HFILES= \ - ../../../gdk/x11/gdkx.h + ../../../gdk/x11/gdkx.h # CFLAGS and LDFLAGS for compiling scan program. Only needed # if $(DOC_MODULE).types is non-empty. -INCLUDES = \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - -I$(top_builddir)/gdk \ +INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + -I$(top_builddir)/gdk \ $(GTK_DEBUG_FLAGS) \ $(GDK_DEP_CFLAGS) -GTKDOC_LIBS = $(top_builddir)/gdk/$(gdktargetlib) - +GTKDOC_LIBS = $(top_builddir)/gdk/libgdk-3.0.la $(GDK_DEP_LIBS) # Extra options to supply to gtkdoc-mkdb MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=gdk @@ -57,86 +55,85 @@ content_files = \ multihead.sgml # Images to copy into HTML directory -HTML_IMAGES = \ +HTML_IMAGES = \ images/rotated-text.png \ - \ - images/X_cursor.png \ - images/arrow.png \ - images/based_arrow_down.png \ - images/based_arrow_up.png \ - images/boat.png \ - images/bogosity.png \ - images/bottom_left_corner.png \ - images/bottom_right_corner.png \ - images/bottom_side.png \ - images/bottom_tee.png \ - images/box_spiral.png \ - images/center_ptr.png \ - images/circle.png \ - images/clock.png \ - images/coffee_mug.png \ - images/cross.png \ - images/cross_reverse.png \ - images/crosshair.png \ - images/diamond_cross.png \ - images/dot.png \ - images/dotbox.png \ - images/double_arrow.png \ - images/draft_large.png \ - images/draft_small.png \ - images/draped_box.png \ - images/exchange.png \ - images/fleur.png \ - images/gobbler.png \ - images/gumby.png \ - images/hand1.png \ - images/hand2.png \ - images/heart.png \ - images/icon.png \ - images/iron_cross.png \ - images/left_ptr.png \ - images/left_side.png \ - images/left_tee.png \ - images/leftbutton.png \ - images/ll_angle.png \ - images/lr_angle.png \ - images/man.png \ - images/middlebutton.png \ - images/mouse.png \ - images/pencil.png \ - images/pirate.png \ - images/plus.png \ - images/question_arrow.png \ - images/right_ptr.png \ - images/right_side.png \ - images/right_tee.png \ - images/rightbutton.png \ - images/rtl_logo.png \ - images/sailboat.png \ - images/sb_down_arrow.png \ - images/sb_h_double_arrow.png \ - images/sb_left_arrow.png \ - images/sb_right_arrow.png \ - images/sb_up_arrow.png \ - images/sb_v_double_arrow.png \ - images/shuttle.png \ - images/sizing.png \ - images/spider.png \ - images/spraycan.png \ - images/star.png \ - images/target.png \ - images/tcross.png \ - images/top_left_arrow.png \ - images/top_left_corner.png \ - images/top_right_corner.png \ - images/top_side.png \ - images/top_tee.png \ - images/trek.png \ - images/ul_angle.png \ - images/umbrella.png \ - images/ur_angle.png \ - images/watch.png \ - images/xterm.png + images/X_cursor.png \ + images/arrow.png \ + images/based_arrow_down.png \ + images/based_arrow_up.png \ + images/boat.png \ + images/bogosity.png \ + images/bottom_left_corner.png \ + images/bottom_right_corner.png \ + images/bottom_side.png \ + images/bottom_tee.png \ + images/box_spiral.png \ + images/center_ptr.png \ + images/circle.png \ + images/clock.png \ + images/coffee_mug.png \ + images/cross.png \ + images/cross_reverse.png \ + images/crosshair.png \ + images/diamond_cross.png \ + images/dot.png \ + images/dotbox.png \ + images/double_arrow.png \ + images/draft_large.png \ + images/draft_small.png \ + images/draped_box.png \ + images/exchange.png \ + images/fleur.png \ + images/gobbler.png \ + images/gumby.png \ + images/hand1.png \ + images/hand2.png \ + images/heart.png \ + images/icon.png \ + images/iron_cross.png \ + images/left_ptr.png \ + images/left_side.png \ + images/left_tee.png \ + images/leftbutton.png \ + images/ll_angle.png \ + images/lr_angle.png \ + images/man.png \ + images/middlebutton.png \ + images/mouse.png \ + images/pencil.png \ + images/pirate.png \ + images/plus.png \ + images/question_arrow.png \ + images/right_ptr.png \ + images/right_side.png \ + images/right_tee.png \ + images/rightbutton.png \ + images/rtl_logo.png \ + images/sailboat.png \ + images/sb_down_arrow.png \ + images/sb_h_double_arrow.png \ + images/sb_left_arrow.png \ + images/sb_right_arrow.png \ + images/sb_up_arrow.png \ + images/sb_v_double_arrow.png \ + images/shuttle.png \ + images/sizing.png \ + images/spider.png \ + images/spraycan.png \ + images/star.png \ + images/target.png \ + images/tcross.png \ + images/top_left_arrow.png \ + images/top_left_corner.png \ + images/top_right_corner.png \ + images/top_side.png \ + images/top_tee.png \ + images/trek.png \ + images/ul_angle.png \ + images/umbrella.png \ + images/ur_angle.png \ + images/watch.png \ + images/xterm.png # Extra options to supply to gtkdoc-fixref FIXXREF_OPTIONS= \ diff --git a/docs/reference/gdk/gdk-docs.sgml b/docs/reference/gdk/gdk-docs.sgml index c77b8be902..7be666074f 100644 --- a/docs/reference/gdk/gdk-docs.sgml +++ b/docs/reference/gdk/gdk-docs.sgml @@ -20,8 +20,11 @@ + + + @@ -34,7 +37,6 @@ - diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt index f4b7e32999..459c1c242c 100644 --- a/docs/reference/gdk/gdk3-sections.txt +++ b/docs/reference/gdk/gdk3-sections.txt @@ -8,8 +8,6 @@ gdk_init gdk_init_check gdk_parse_args gdk_get_display_arg_name -gdk_set_locale -gdk_set_sm_client_id gdk_notify_startup_complete gdk_notify_startup_complete_with_id @@ -63,7 +61,6 @@ GdkStatus GDKVAR gdk_axis_use_get_type gdk_byte_order_get_type -gdk_cap_style_get_type gdk_crossing_mode_get_type gdk_cursor_type_get_type gdk_drag_action_get_type @@ -79,17 +76,14 @@ gdk_input_mode_get_type gdk_input_source_get_type gdk_modifier_type_get_type gdk_notify_type_get_type -gdk_overlap_type_get_type gdk_property_state_get_type gdk_prop_mode_get_type gdk_scroll_direction_get_type gdk_setting_action_get_type gdk_status_get_type -gdk_subwindow_mode_get_type gdk_visibility_state_get_type gdk_visual_type_get_type gdk_window_attributes_type_get_type -gdk_window_class_get_type gdk_window_edge_get_type gdk_window_hints_get_type gdk_window_state_get_type @@ -122,23 +116,17 @@ gdk_display_sync gdk_display_flush gdk_display_close gdk_display_is_closed -gdk_display_list_devices gdk_display_get_event gdk_display_peek_event gdk_display_put_event +gdk_display_has_pending gdk_display_add_client_message_filter gdk_display_set_double_click_time gdk_display_set_double_click_distance gdk_display_get_pointer -gdk_display_get_device_state +gdk_display_list_devices gdk_display_get_window_at_pointer -gdk_display_get_window_at_device_position -GdkDisplayPointerHooks -gdk_display_set_pointer_hooks -GdkDisplayDeviceHooks -gdk_display_set_device_hooks gdk_display_warp_pointer -gdk_display_warp_device gdk_display_supports_cursor_color gdk_display_supports_cursor_alpha gdk_display_get_default_cursor_size @@ -151,7 +139,11 @@ gdk_display_store_clipboard gdk_display_supports_shapes gdk_display_supports_input_shapes gdk_display_supports_composite +gdk_display_get_app_launch_context +gdk_display_notify_startup_complete + +GDK_DISPLAY GDK_DISPLAY_OBJECT GDK_IS_DISPLAY GDK_TYPE_DISPLAY @@ -173,7 +165,8 @@ gdk_display_manager_get gdk_display_manager_get_default_display gdk_display_manager_set_default_display gdk_display_manager_list_displays -gdk_display_get_core_pointer +gdk_display_manager_open_display + GDK_DISPLAY_MANAGER GDK_DISPLAY_MANAGER_CLASS @@ -219,10 +212,6 @@ gdk_screen_get_resolution gdk_screen_set_resolution gdk_screen_get_active_window gdk_screen_get_window_stack - -gdk_spawn_on_screen -gdk_spawn_on_screen_with_pipes -gdk_spawn_command_line_on_screen GDK_SCREEN @@ -317,7 +306,6 @@ GDK_VISUAL_GET_CLASS GdkVisualClass -GdkVisualPrivate gdk_visual_get_type @@ -478,10 +466,8 @@ gdk_window_get_device_cursor gdk_window_set_device_cursor gdk_window_get_device_events gdk_window_set_device_events - - -GdkPointerHooks -gdk_set_pointer_hooks +gdk_window_get_source_events +gdk_window_set_source_events gdk_offscreen_window_get_surface @@ -504,7 +490,6 @@ GDK_TYPE_FILTER_RETURN GDK_TYPE_GRAVITY GDK_TYPE_MODIFIER_TYPE GDK_TYPE_WINDOW_ATTRIBUTES_TYPE -GDK_TYPE_WINDOW_CLASS GDK_TYPE_WINDOW_EDGE GDK_TYPE_WINDOW_HINTS GDK_TYPE_WINDOW_TYPE @@ -515,7 +500,6 @@ GDK_TYPE_WM_FUNCTION gdk_window_get_type gdk_window_window_class_get_type -GdkWindowObject GdkWindowClass GdkWindowImpl GdkWindowImplClass @@ -561,17 +545,8 @@ GdkAtom GDK_ATOM_TO_POINTER GDK_POINTER_TO_ATOM GDK_NONE -gdk_text_property_to_text_list -gdk_text_property_to_text_list_for_display -gdk_free_text_list -gdk_text_property_to_utf8_list gdk_text_property_to_utf8_list_for_display -gdk_string_to_compound_text -gdk_string_to_compound_text_for_display -gdk_free_compound_text gdk_utf8_to_string_target -gdk_utf8_to_compound_text -gdk_utf8_to_compound_text_for_display gdk_atom_intern gdk_atom_intern_static_string gdk_atom_name @@ -637,10 +612,6 @@ gdk_threads_add_timeout gdk_threads_add_timeout_full gdk_threads_add_timeout_seconds gdk_threads_add_timeout_seconds_full - - -gdk_threads_lock -gdk_threads_unlock
@@ -690,25 +661,17 @@ gdk_keymap_get_type
-GdkDeviceManager -gdkdevicemanager -GdkDeviceManager +GdkDevice +gdkdevice GdkDevice -GdkDeviceType GdkInputSource GdkInputMode -GdkDeviceKey -GdkDeviceAxis GdkAxisUse +GdkDeviceType GdkGrabOwnership -gdk_enable_multidevice -gdk_device_manager_get_display -gdk_device_manager_list_devices -gdk_device_manager_get_client_pointer gdk_device_get_name -gdk_device_set_source gdk_device_get_source gdk_device_set_mode gdk_device_get_mode @@ -717,11 +680,13 @@ gdk_device_get_key gdk_device_set_axis_use gdk_device_get_axis_use gdk_device_get_associated_device +gdk_device_list_slave_devices gdk_device_get_device_type gdk_device_get_display gdk_device_get_has_cursor gdk_device_get_n_axes gdk_device_get_n_keys +gdk_device_warp gdk_device_grab @@ -729,6 +694,8 @@ gdk_device_ungrab gdk_device_get_state +gdk_device_get_position +gdk_device_get_window_at_position gdk_device_get_history gdk_device_free_history GdkTimeCoord @@ -736,14 +703,6 @@ gdk_device_get_axis gdk_device_list_axes gdk_device_get_axis_value - -gdk_input_set_extension_events -GdkExtensionMode - - -gdk_devices_list -gdk_device_get_core_pointer - GDK_TYPE_AXIS_USE GDK_TYPE_EXTENSION_MODE @@ -751,12 +710,6 @@ GDK_TYPE_INPUT_MODE GDK_TYPE_INPUT_SOURCE GDK_TYPE_DEVICE_TYPE GDK_TYPE_GRAB_OWNERSHIP -GDK_DEVICE_MANAGER -GDK_DEVICE_MANAGER_CLASS -GDK_DEVICE_MANAGER_GET_CLASS -GDK_IS_DEVICE_MANAGER -GDK_IS_DEVICE_MANAGER_CLASS -GDK_TYPE_DEVICE_MANAGER GDK_DEVICE GDK_DEVICE_CLASS GDK_DEVICE_GET_CLASS @@ -766,15 +719,33 @@ GDK_TYPE_DEVICE GdkDeviceClass -GdkDevicePrivate -GdkDeviceManagerClass -GdkDeviceManagerPrivate gdk_device_get_type -gdk_device_manager_get_type gdk_device_type_get_type GDK_MAX_TIMECOORD_AXES
+
+GdkDeviceManager +gdkdevicemanager +GdkDeviceManager +gdk_disable_multidevice +gdk_device_manager_get_display +gdk_device_manager_list_devices +gdk_device_manager_get_client_pointer + + +GDK_DEVICE_MANAGER +GDK_DEVICE_MANAGER_CLASS +GDK_DEVICE_MANAGER_GET_CLASS +GDK_IS_DEVICE_MANAGER +GDK_IS_DEVICE_MANAGER_CLASS +GDK_TYPE_DEVICE_MANAGER + + +GdkDeviceManagerClass +gdk_device_manager_get_type +
+
Events events @@ -784,7 +755,6 @@ GDK_CURRENT_TIME GDK_PRIORITY_EVENTS GDK_PRIORITY_REDRAW - gdk_events_pending gdk_event_peek @@ -820,6 +790,8 @@ gdk_event_set_screen gdk_event_get_screen gdk_event_get_device gdk_event_set_device +gdk_event_get_source_device +gdk_event_set_source_device gdk_setting_get @@ -909,30 +881,31 @@ gdk_cursor_get_type
Drag and Drop dnd +GdkDragContext gdk_drag_get_selection gdk_drag_abort gdk_drop_reply -gdk_drag_context_new gdk_drag_drop -gdk_drag_find_window gdk_drag_find_window_for_screen -gdk_drag_context_get_source_window gdk_drag_begin +gdk_drag_begin_for_device gdk_drag_motion gdk_drop_finish -gdk_drag_get_protocol gdk_drag_get_protocol_for_display GdkDragProtocol -GdkDragContext GdkDragAction gdk_drag_status gdk_drag_drop_succeeded + gdk_drag_context_get_actions gdk_drag_context_get_suggested_action gdk_drag_context_get_selected_action gdk_drag_context_list_targets gdk_drag_context_get_device gdk_drag_context_set_device +gdk_drag_context_get_source_window +gdk_drag_context_get_dest_window +gdk_drag_context_get_protocol GDK_DRAG_CONTEXT @@ -961,25 +934,9 @@ GDK_SCREEN_XNUMBER GDK_SCREEN_XSCREEN GDK_CURSOR_XCURSOR GDK_CURSOR_XDISPLAY -gdkx_visual_get -gdk_window_foreign_new -gdk_window_foreign_new_for_display -gdk_xid_table_lookup -gdk_xid_table_lookup_for_display -gdk_window_lookup -gdk_window_lookup_for_display gdk_x11_lookup_xdisplay gdk_x11_get_server_time -gdk_net_wm_supports -gdk_x11_screen_supports_net_wm_hint -gdk_x11_screen_get_window_manager_name -gdk_x11_screen_get_monitor_output -gdk_x11_screen_lookup_visual -gdk_x11_window_set_user_time -gdk_x11_window_move_to_current_desktop gdk_x11_display_get_user_time -gdk_x11_cursor_get_xcursor -gdk_x11_cursor_get_xdisplay gdk_x11_display_broadcast_startup_message gdk_x11_display_get_startup_notification_id gdk_x11_display_set_startup_notification_id @@ -991,14 +948,24 @@ gdk_x11_display_error_trap_pop gdk_x11_display_error_trap_pop_ignored gdk_x11_display_set_cursor_theme gdk_x11_register_standard_event_type +gdk_x11_screen_get_screen_number +gdk_x11_screen_get_xscreen +gdk_x11_screen_get_window_manager_name +gdk_x11_screen_get_monitor_output +gdk_x11_screen_lookup_visual +gdk_x11_screen_supports_net_wm_hint +gdk_x11_window_foreign_new_for_display +gdk_x11_window_lookup_for_display gdk_x11_window_get_xid +gdk_x11_window_set_user_time +gdk_x11_window_move_to_current_desktop gdk_x11_get_default_root_xwindow gdk_x11_get_default_screen gdk_x11_get_default_xdisplay gdk_x11_grab_server -gdk_x11_screen_get_screen_number -gdk_x11_screen_get_xscreen gdk_x11_ungrab_server +gdk_x11_cursor_get_xcursor +gdk_x11_cursor_get_xdisplay gdk_x11_visual_get_xvisual gdk_x11_atom_to_xatom gdk_x11_atom_to_xatom_for_display @@ -1008,10 +975,30 @@ gdk_x11_get_xatom_by_name gdk_x11_get_xatom_by_name_for_display gdk_x11_get_xatom_name gdk_x11_get_xatom_name_for_display +gdk_x11_set_sm_client_id +gdk_x11_display_text_property_to_text_list +gdk_x11_free_text_list +gdk_x11_display_string_to_compound_text +gdk_x11_display_utf8_to_compound_text +gdk_x11_free_compound_text -GDK_HAVE_WCHAR_H -GDK_HAVE_WCTYPE_H +gdk_x11_app_launch_context_get_type +gdk_x11_cursor_get_type +gdk_x11_device_core_get_type +gdk_x11_device_manager_core_get_type +gdk_x11_device_manager_xi2_get_type +gdk_x11_device_manager_xi_get_type +gdk_x11_device_xi2_get_type +gdk_x11_device_xi_get_type +gdk_x11_display_get_type +gdk_x11_display_manager_get_type +gdk_x11_drag_context_get_type +gdk_x11_keymap_get_type +gdk_x11_screen_get_type +gdk_x11_visual_get_type +gdk_x11_window_get_type +gdk_window_impl_x11_get_type
@@ -1033,7 +1020,6 @@ GDK_IS_APP_LAUNCH_CONTEXT GDK_IS_APP_LAUNCH_CONTEXT_CLASS GDK_TYPE_APP_LAUNCH_CONTEXT GdkAppLaunchContextClass -GdkAppLaunchContextPrivate gdk_app_launch_context_get_type
diff --git a/docs/reference/gdk/gdk3.types b/docs/reference/gdk/gdk3.types index bb8607d4f8..abf4374715 100644 --- a/docs/reference/gdk/gdk3.types +++ b/docs/reference/gdk/gdk3.types @@ -1,9 +1,13 @@ #include -gdk_display_get_type -gdk_display_manager_get_type -gdk_screen_get_type -gdk_window_get_type -gdk_keymap_get_type +gdk_app_launch_context_get_type +gdk_cursor_get_type gdk_device_get_type gdk_device_manager_get_type +gdk_display_get_type +gdk_display_manager_get_type +gdk_drag_context_get_type +gdk_keymap_get_type +gdk_screen_get_type +gdk_visual_get_type +gdk_window_get_type diff --git a/docs/reference/gtk/Makefile.am b/docs/reference/gtk/Makefile.am index 42d23fc1c1..091f06d7b7 100644 --- a/docs/reference/gtk/Makefile.am +++ b/docs/reference/gtk/Makefile.am @@ -1,5 +1,4 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl AUTOMAKE_OPTIONS = 1.6 @@ -107,8 +106,8 @@ CPPFLAGS += \ -UGTK_DISABLE_SINGLE_INCLUDES GTKDOC_LIBS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la \ + $(GTK_DEP_LIBS) # Extra options to supply to gtkdoc-mkdb @@ -135,8 +134,7 @@ content_files = \ windows.sgml \ x11.sgml \ gtk-query-immodules-3.0.xml \ - gtk-update-icon-cache-3.0.xml \ - gtk-builder-convert-3.0.xml \ + gtk-update-icon-cache.xml \ visual_index.xml \ getting_started.xml \ overview.xml @@ -276,6 +274,8 @@ HTML_IMAGES = \ $(top_srcdir)/gtk/stock-icons/24/gtk-page-setup.png \ $(srcdir)/images/aboutdialog.png \ $(srcdir)/images/accel-label.png \ + $(srcdir)/images/appchooserbutton.png \ + $(srcdir)/images/appchooserdialog.png \ $(srcdir)/images/assistant.png \ $(srcdir)/images/button.png \ $(srcdir)/images/check-button.png \ @@ -328,7 +328,9 @@ HTML_IMAGES = \ $(srcdir)/images/layout-tbrl.png \ $(srcdir)/images/window-default.png \ $(srcdir)/images/hello-world.png \ - $(srcdir)/images/switch.png + $(srcdir)/images/grid-packing.png \ + $(srcdir)/images/drawing.png \ + $(srcdir)/images/switch.png \ $(srcdir)/images/linear.png \ $(srcdir)/images/ease.png \ $(srcdir)/images/ease-in-out.png \ @@ -352,7 +354,9 @@ HTML_IMAGES = \ $(srcdir)/images/sliders.png \ $(srcdir)/images/focus.png \ $(srcdir)/images/handles.png \ - $(srcdir)/images/extensions.png + $(srcdir)/images/extensions.png \ + $(srcdir)/images/numerableicon.png \ + $(srcdir)/images/numerableicon2.png # Extra options to supply to gtkdoc-fixref FIXXREF_OPTIONS=--extra-dir=../gdk/html \ @@ -371,8 +375,7 @@ EXTRA_DIST += version.xml.in man_MANS = \ gtk-query-immodules-3.0.1 \ - gtk-update-icon-cache-3.0.1 \ - gtk-builder-convert-3.0.1 + gtk-update-icon-cache.1 if ENABLE_MAN diff --git a/docs/reference/gtk/building.sgml b/docs/reference/gtk/building.sgml index ec232717c5..70802e53c9 100644 --- a/docs/reference/gtk/building.sgml +++ b/docs/reference/gtk/building.sgml @@ -2,7 +2,7 @@ - + Compiling the GTK+ libraries 3 @@ -30,7 +30,7 @@ How to compile GTK+ itself your operating system will be available, either from your operating system vendor or from independent sources. If such a set of packages is available, installing it will get you - programming wih GTK+ much faster than building it yourself. In + programming with GTK+ much faster than building it yourself. In fact, you may well already have GTK+ installed on your system already. @@ -45,7 +45,7 @@ How to compile GTK+ itself If you are building GTK+ from the distributed source packages, - then won't need these tools installed; the necessary pieces + then you won't need these tools installed; the necessary pieces of the tools are already included in the source packages. But it's useful to know a bit about how packages that use these tools work. A source package is distributed as a @@ -57,14 +57,15 @@ How to compile GTK+ itself tar xvfj gtk+-3.0.0.tar.bz2 - In the toplevel of the directory that is created, there will be + In the toplevel directory that is created, there will be a shell script called configure which you then run to take the template makefiles called Makefile.in in the package and create - makefiles customized for your operating system. The configure - script can be passed various command line arguments to determine how - the package is built and installed. The most commonly useful - argument is the --prefix argument which + makefiles customized for your operating system. + The configure script can be passed + various command line arguments to determine how the package + is built and installed. The most commonly useful argument is + the --prefix argument which determines where the package is installed. To install a package in /opt/gtk you would run configure as: @@ -210,22 +211,6 @@ How to compile GTK+ itself message translation databases. - - - The JPEG, - PNG, and - TIFF image - loading libraries are needed to compile GTK+. You probably - already have these libraries installed, but if not, the - versions you need are available in the - dependencies directory on the the - GTK+ - FTP site.. (Before installing these libraries - from source, you should check if your operating system - vendor has prebuilt packages of these libraries that you - don't have installed.) - - The libraries from the X window system are needed to build @@ -246,10 +231,16 @@ How to compile GTK+ itself Cairo is a graphics library that supports vector graphics and image - compositing. Both Pango and GTK+ use cairo for much of their + compositing. Both Pango and GTK+ use cairo for all of their drawing. + + + The GdkPixbuf library provides facilities for loading + images in a variety of file formats. + + gobject-introspection @@ -289,8 +280,8 @@ How to compile GTK+ itself make install mentioned above. If you're lucky, this will all go smoothly, and you'll be ready to start compiling your own GTK+ - applications. You can test your GTK+ installation - by running the gtk-demo program that + applications. You can test your GTK+ installation + by running the gtk3-demo program that GTK+ installs. @@ -327,7 +318,7 @@ How to compile GTK+ itself --with-included-immodules=MODULE1,MODULE2,... - --enable-debug=[no|minimum|yes] + --enable-debug=[no/minimum/yes] --disable-Bsymbolic @@ -354,13 +345,27 @@ How to compile GTK+ itself --enable-papi - --with-xinput=[no|yes] + --enable-xinput + --disable-xinput - --with-gdktarget=[x11|win32|quartz] + --enable-packagekit + --disable-packagekit - --disable-introspection + --enable-x11-backend + --disable-x11-backend + --enable-win32-backend + --disable-win32-backend + --enable-quartz-backend + --disable-quartz-backend + + + --enable-introspection=[no/auto/yes] + + + --enable-gtk2-dependency + --disable-gtk2-dependency @@ -371,14 +376,14 @@ How to compile GTK+ itself Normally GTK+ will try to build the input method modules - as little shared libraries that are loaded on - demand. The --disable-modules - argument indicates that they should all be built statically - into the GTK+ library instead. This is useful for - people who need to produce statically-linked binaries. If - neither --disable-modules nor - --enable-modules is specified, then - the configure script will try to + as little shared libraries that are loaded on demand. + The --disable-modules argument + indicates that they should all be built statically + into the GTK+ library instead. This is useful for + people who need to produce statically-linked binaries. + If neither --disable-modules nor + --enable-modules is specified, + then the configure script will try to auto-detect whether shared modules work on your system. @@ -388,7 +393,8 @@ How to compile GTK+ itself This option allows you to specify which input method modules you - want to include. + want to include directly into the GTK+ shared library, as opposed + to building them as loadable modules. @@ -396,10 +402,9 @@ How to compile GTK+ itself <systemitem>--enable-debug</systemitem> - Turns on various amounts of debugging support. Setting this to 'no' - disables g_assert(), g_return_if_fail(), g_return_val_if_fail() and - all cast checks between different object types. Setting it to 'minimum' - disables only cast checks. Setting it to 'yes' enables + Turns on various amounts of debugging support. Setting this to + 'no' disables g_assert(), g_return_if_fail(), g_return_val_if_fail() and all cast checks between different object types. Setting it + to 'minimum' disables only cast checks. Setting it to 'yes' enables runtime debugging. The default is 'minimum'. Note that 'no' is fast, but dangerous as it tends to destabilize @@ -416,6 +421,8 @@ How to compile GTK+ itself The option --disable-Bsymbolic turns off the use of the -Bsymbolic-functions linker flag. + This is only necessary if you want to override GTK+ functions + by using LD_PRELOAD. @@ -469,6 +476,21 @@ How to compile GTK+ itself + + <systemitem>--disable-xinput</systemitem> and + <systemitem>--enable-xinput</systemitem> + + Controls whether GTK+ is built with support for the XInput + or XInput2 extension. These extensions provide an extended + interface to input devices such as graphics tablets. + When this support is compiled in, specially written + GTK+ programs can get access to subpixel positions, + multiple simultaneous input devices, and extra "axes" + provided by the device such as pressure and tilt + information. + + + <systemitem>--disable-gtk-doc</systemitem> and <systemitem>--enable-gtk-doc</systemitem> @@ -513,33 +535,54 @@ How to compile GTK+ itself - <systemitem>--with-xinput</systemitem> + <systemitem>--disable-packagekit</systemitem> and + <systemitem>--enable-packagekit</systemitem> - Controls whether GTK+ is built with support for the XInput - or XInput2 extension. These extensions provide an extended - interface to input devices such as graphics tablets. - When this support is compiled in, specially written - GTK+ programs can get access to subpixel positions, - multiple simultaneous input devices, and extra "axes" - provided by the device such as pressure and tilt - information. + By default the configure script will try + to build the PackageKit support for the open-with dialog if + the PackageKit libraries are found. + These options can be used to explicitly control whether + PackageKit support should be built. + - <systemitem>--with-gdktarget</systemitem> + <systemitem>--enable-x11-backend</systemitem>, + <systemitem>--disable-x11-backend</systemitem>, + <systemitem>--enable-win32-backend</systemitem>, + <systemitem>--disable-win32-backend</systemitem>, + <systemitem>--enable-quartz-backend</systemitem>, + and <systemitem>--disable-quartz-backend</systemitem> - Toggles between the supported backends for GDK. - The default is x11, unless the platform is Windows, in which - case the default is win32. Other supported backends are - the quartz backend for OS X. + Enables specific backends for GDK. If none of these options + are given, the x11 backend will be enabled by default, + unless the platform is Windows, in which case the default is + win32. If any backend is explicitly enabled or disabled, no + other platform will be enabled automatically. Other + supported backends are the quartz backend for OS X. + - <systemitem>--disable-introspection</systemitem> + <systemitem>--enable-introspection</systemitem> - Build without introspection support. + Build with or without introspection support. + The default is 'auto'. + + + + + <systemitem>--enable-gtk2-dependency</systemitem> or + <systemitem>--disable-gtk2-dependency</systemitem> + + + Whether to rely on an exiting gtk-update-icon-cache utility + instead of building our own. Distributions which are shipping + both GTK+ 2.x and GTK+ 3 may want to use this option to + avoid file conflicts between these packages. + The default is to build gtk-update-icon-cache. diff --git a/docs/reference/gtk/compiling.sgml b/docs/reference/gtk/compiling.sgml index f40267fb1b..7382f5c4cd 100644 --- a/docs/reference/gtk/compiling.sgml +++ b/docs/reference/gtk/compiling.sgml @@ -2,7 +2,7 @@ - + Compiling GTK+ Applications 3 @@ -32,7 +32,7 @@ your system may be different): $ pkg-config --cflags gtk+-3.0 -pthread -I/usr/include/gtk-3.0 -I/usr/lib64/gtk-3.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 $ pkg-config --libs gtk+-3.0 - -pthread -lgtk-x11-3.0 -lgdk-x11-3.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-3.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 + -pthread -lgtk-3.0 -lgdk-3.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-3.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 @@ -69,24 +69,5 @@ define the preprocessor symbol GDK_MULTIDEVICE_SAFE by using the command line option -DGTK_MULTIDEVICE_SAFE=1. - -The recommended way of using GTK+ has always been to only include the -toplevel headers gtk.h, gdk.h, -gdk-pixbuf.h. -If you want to make sure that your program follows this recommended -practise, you can define the preprocessor symbols GTK_DISABLE_SINGLE_INCLUDES -and GDK_PIXBUF_DISABLE_SINGLE_INCLUDES to make GTK+ generate an error -when individual headers are directly included. -There are some exceptions: gdkkeysyms.h is not included in -gdk.h because the file is quite large; see -Key Values documentation. -gdkx.h must be included independently because It's -platform-specific; see -X Window System Interaction -documentation. -The same for gtkunixprint.h if you use the non-portable -GtkPrintUnixDialog API. - - diff --git a/docs/reference/gtk/getting_started.xml b/docs/reference/gtk/getting_started.xml index ddbff64f8f..d47a09f1fd 100644 --- a/docs/reference/gtk/getting_started.xml +++ b/docs/reference/gtk/getting_started.xml @@ -12,97 +12,176 @@ Compiling the GTK+ libraries section in this reference. - To begin our introduction to GTK, we'll start with the simplest - program possible. This program will create an empty 200x200 pixel - window: +
+ Basics - - - + To begin our introduction to GTK, we'll start with the simplest + program possible. This program will create an empty 200x200 pixel + window: - - - FIXME: MISSING XINCLUDE CONTENT - - + + + - You can compile the program above with GCC using: - - - gcc `pkg-config --cflags gtk+-3.0` -o window-default window-default.c `pkg-config --libs gtk+-3.0` - - - For more information on how to compile a GTK+ application, please - refer to the Compiling GTK+ Applications - section in this reference. - - All GTK+ applications will, of course, include - gtk/gtk.h, which declares functions, types and - macros required by GTK+ applications. - - Even if GTK+ installs multiple header files, only the - top-level gtk/gtk.h header can be directly included - by third party code. The compiler will abort with an error if any other - header will be included. - - We then proceed into the main() function of the - application, and we declare a window variable as a pointer - of type #GtkWidget. - - The following line will call gtk_init(), which - is the initialization function for GTK+; this function will set up GTK+, - the type system, the connection to the windowing environment, etc. The - gtk_init() takes as arguments the pointers to the command line arguments - counter and string array; this allows GTK+ to parse specific command line - arguments that control the behavior of GTK+ itself. The parsed arguments - will be removed from the array, leaving the unrecognized ones for your - application to parse. - - For more information on which command line arguments GTK+ - recognizes, please refer to the Running GTK+ - Applications section in this reference. - - The call to gtk_window_new() will create a new #GtkWindow and store - it inside the window variable. The type of the window - is %GTK_WINDOW_TOPLEVEL, which means that the #GtkWindow will be managed - by the windowing system: it will have a frame, a title bar and window - controls, depending on the platform. - - In order to terminate the application when the #GtkWindow is - destroyed, we connect the #GtkWidget::destroy signal to the gtk_main_quit() - function. This function will terminate the GTK+ main loop started by calling - gtk_main() later. The #GtkWidget::destroy signal is emitted when a widget is - destroyed, either by explicitly calling gtk_widget_destroy() or when the - widget is unparented. Top-level #GtkWindows are also destroyed when - the Close window control button is clicked. - - #GtkWidgets are hidden by default. By calling gtk_widget_show() - on a #GtkWidget we are asking GTK+ to set the visibility attribute so that it - can be displayed. All this work is done after the main loop has been - started. - - The last line of interest is the call to gtk_main(). This function will - start the GTK+ main loop and will block the control flow of the - main() until the gtk_main_quit() function is - called. - - The following example is slightly more complex, and tries to - showcase some of the capabilities of GTK+. - - In the long tradition of programming languages and libraries, - it is called Hello, World. - - - - - - - Hello World in GTK+ - - + + FIXME: MISSING XINCLUDE CONTENT - - + + You can compile the program above with GCC using: + + + gcc `pkg-config --cflags gtk+-3.0` -o window-default window-default.c `pkg-config --libs gtk+-3.0` + + + For more information on how to compile a GTK+ application, please + refer to the Compiling GTK+ Applications + section in this reference. + + All GTK+ applications will, of course, include + gtk/gtk.h, which declares functions, types and + macros required by GTK+ applications. + + Even if GTK+ installs multiple header files, only the + top-level gtk/gtk.h header can be directly included + by third party code. The compiler will abort with an error if any other + header is directly included. + + We then proceed into the main() function of the + application, and we declare a window variable as a pointer + of type #GtkWidget. + + The following line will call gtk_init(), which + is the initialization function for GTK+; this function will set up GTK+, + the type system, the connection to the windowing environment, etc. The + gtk_init() takes as arguments the pointers to the command line arguments + counter and string array; this allows GTK+ to parse specific command line + arguments that control the behavior of GTK+ itself. The parsed arguments + will be removed from the array, leaving the unrecognized ones for your + application to parse. + + For more information on which command line arguments GTK+ + recognizes, please refer to the Running GTK+ + Applications section in this reference. + + The call to gtk_window_new() will create a new #GtkWindow and store + it inside the window variable. The type of the window + is %GTK_WINDOW_TOPLEVEL, which means that the #GtkWindow will be managed + by the windowing system: it will have a frame, a title bar and window + controls, depending on the platform. + + In order to terminate the application when the #GtkWindow is + destroyed, we connect the #GtkWidget::destroy signal to the gtk_main_quit() + function. This function will terminate the GTK+ main loop started by calling + gtk_main() later. The #GtkWidget::destroy signal is emitted when a widget is + destroyed, either by explicitly calling gtk_widget_destroy() or when the + widget is unparented. Top-level #GtkWindows are also destroyed when + the Close window control button is clicked. + + #GtkWidgets are hidden by default. By calling gtk_widget_show() + on a #GtkWidget we are asking GTK+ to set the visibility attribute so that it + can be displayed. All this work is done after the main loop has been + started. + + The last line of interest is the call to gtk_main(). This function will + start the GTK+ main loop and will block the control flow of the + main() until the gtk_main_quit() function is called. + + While the program is running, GTK+ is receiving + events. These are typically input events caused by + the user interacting with your program, but also things like messages from + the window manager or other applications. GTK+ processes these and as a + result, signals may be emitted on your widgets. + Connecting handlers for these signals is how you normally make your + program do something in response to user input. + + The following example is slightly more complex, and tries to + showcase some of the capabilities of GTK+. + + In the long tradition of programming languages and libraries, + it is called Hello, World. + + + + + + + Hello World in GTK+ + + + FIXME: MISSING XINCLUDE CONTENT + + + +
+ +
+ Packing + + When creating an application, you'll want to put more than one widget + inside a window. Our first helloworld example only used one widget so we + could simply use a gtk_container_add() call to "pack" the widget into the + window. But when you want to put more than one widget into a window, it + it becomes important to control how each widget is positioned and sized. + This is where packing comes in. + + GTK+ comes with a large variety of layout containers + whose purpose it is to control the layout of the child widgets that are + added to them. See for an overview. + + The following example shows how the GtkGrid container lets you + arrange several buttons: + + + + + + + Packing buttons + + + FIXME: MISSING XINCLUDE CONTENT + + + +
+ +
+ Drawing + + Many widgets, like buttons, do all their drawing themselves. You + just tell them the label you want to see, and they figure out what font + to use, draw the button outline and focus rectangle, etc. Sometimes, it + is necessary to do some custom drawing. In that case, a #GtkDrawingArea + might be the right widget to use. It offers a canvas on which you can + draw by connecting to the #GtkWidget::draw signal. + + + The contents of a widget often need to be partially or fully redrawn, + e.g. when another window is moved and uncovers part of the widget, or + when tie window containing it is resized. It is also possible to explicitly + cause part or all of the widget to be redrawn, by calling + gtk_widget_queue_draw() or its variants. GTK+ takes care of most of the + details by providing a ready-to-use cairo context to the ::draw signal + handler. + + The following example shows a ::draw signal handler. It is a bit + more complicated than the previous examples, since it also demonstrates + input event handling by means of ::button-press and ::motion-notify + handlers. + + + + + + + Drawing in response to input + + + FIXME: MISSING XINCLUDE CONTENT + + + +
diff --git a/docs/reference/gtk/gtk-builder-convert-3.0.xml b/docs/reference/gtk/gtk-builder-convert-3.0.xml deleted file mode 100644 index eccfe336f3..0000000000 --- a/docs/reference/gtk/gtk-builder-convert-3.0.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - -gtk-builder-convert-3.0 -1 - - - -gtk-builder-convert-3.0 -Glade file conversion utility - - - - -gtk-builder-convert-3.0 ---skip-windows ---root name -input -output - - - -Description -gtk-builder-convert-3.0 converts glade files -into XML files which can be loaded with GtkBuilder. - - -It expects the name of a glade file as the first argument, and writes -its output the file specified as the second argument. - - - -Options - - - --skip-windows - -w - Convert everything but GtkWindow subclasses. - - - --root - -r - Convert only the widget named name - and its children. - - - - -Bugs - -Toolbars are not handled. - - -Support for accessibility is not yet implemented. - - -The script requires a python interpreter to run. - - - - diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml index 3671b672e9..9f57e97057 100644 --- a/docs/reference/gtk/gtk-docs.sgml +++ b/docs/reference/gtk/gtk-docs.sgml @@ -61,6 +61,7 @@ + @@ -151,6 +152,9 @@ + + + @@ -353,8 +357,7 @@ GTK+ Tools - - + diff --git a/docs/reference/gtk/gtk-query-immodules-3.0.xml b/docs/reference/gtk/gtk-query-immodules-3.0.xml index 609323c7e2..c9e541b6d2 100644 --- a/docs/reference/gtk/gtk-query-immodules-3.0.xml +++ b/docs/reference/gtk/gtk-query-immodules-3.0.xml @@ -2,7 +2,7 @@ - + gtk-query-immodules-3.0 diff --git a/docs/reference/gtk/gtk-update-icon-cache-3.0.xml b/docs/reference/gtk/gtk-update-icon-cache.xml similarity index 91% rename from docs/reference/gtk/gtk-update-icon-cache-3.0.xml rename to docs/reference/gtk/gtk-update-icon-cache.xml index 477f37c381..2a5bc27fbf 100644 --- a/docs/reference/gtk/gtk-update-icon-cache-3.0.xml +++ b/docs/reference/gtk/gtk-update-icon-cache.xml @@ -5,18 +5,18 @@ -gtk-update-icon-cache-3.0 +gtk-update-icon-cache 1 -gtk-update-icon-cache-3.0 +gtk-update-icon-cache Icon theme caching utility -gtk-update-icon-cache-3.0 +gtk-update-icon-cache --force --ignore-theme-index --index-only @@ -29,7 +29,7 @@ Description - gtk-update-icon-cache-3.0 creates mmap()able cache + gtk-update-icon-cache creates mmap()able cache files for icon themes. @@ -39,7 +39,7 @@ information about the icons in the directory tree below the given directory. - GTK+ can use the cache files created by gtk-update-icon-cache-3.0 + GTK+ can use the cache files created by gtk-update-icon-cache to avoid a lot of system call and disk seek overhead when the application starts. Since the format of the cache files allows them to be mmap()ed shared between multiple applications, the overall memory consumption is @@ -60,7 +60,7 @@ --ignore-theme-index -t Don't check for the existence of 'index.theme' in the icon - theme directory. Without this option, gtk-update-icon-cache-3.0 + theme directory. Without this option, gtk-update-icon-cache refuses to create an icon cache in a directory which does not appear to be the toplevel directory of an icon theme. @@ -104,5 +104,3 @@ None known yet. - - diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 32759d9b21..8134a01b86 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -791,6 +791,8 @@ gtk_combo_box_new gtk_combo_box_new_with_entry gtk_combo_box_new_with_model gtk_combo_box_new_with_model_and_entry +gtk_combo_box_new_with_area +gtk_combo_box_new_with_area_and_entry gtk_combo_box_get_wrap_width gtk_combo_box_set_wrap_width gtk_combo_box_get_row_span_column @@ -994,9 +996,6 @@ gtk_editable_get_editable GTK_EDITABLE GTK_IS_EDITABLE GTK_TYPE_EDITABLE -GTK_EDITABLE_CLASS -GTK_IS_EDITABLE_CLASS -GTK_EDITABLE_GET_CLASS GTK_EDITABLE_GET_IFACE gtk_editable_get_type @@ -1119,6 +1118,7 @@ gtk_entry_buffer_get_type GtkEntryCompletion GtkEntryCompletionMatchFunc gtk_entry_completion_new +gtk_entry_completion_new_with_area gtk_entry_completion_get_entry gtk_entry_completion_set_model gtk_entry_completion_get_model @@ -1621,6 +1621,7 @@ gtk_hseparator_get_type GtkIconView GtkIconViewForeachFunc gtk_icon_view_new +gtk_icon_view_new_with_area gtk_icon_view_new_with_model gtk_icon_view_set_model gtk_icon_view_get_model @@ -1678,7 +1679,7 @@ gtk_icon_view_unset_model_drag_source gtk_icon_view_unset_model_drag_dest gtk_icon_view_set_reorderable gtk_icon_view_get_reorderable -gtk_icon_view_set_drag_dest_item +gtk_icon_view_set_drag_dest_item gtk_icon_view_get_drag_dest_item gtk_icon_view_get_dest_item_at_pos gtk_icon_view_create_drag_icon @@ -1736,9 +1737,7 @@ GTK_IMAGE_GET_CLASS GtkImagePrivate gtk_image_get_type GtkImageIconSetData -GtkImageImageData GtkImagePixbufData -GtkImagePixmapData GtkImageStockData GtkImageAnimationData GtkImageIconNameData @@ -2120,6 +2119,8 @@ gtk_menu_shell_activate_item gtk_menu_shell_cancel gtk_menu_shell_set_take_focus gtk_menu_shell_get_take_focus +gtk_menu_shell_get_selected_item +gtk_menu_shell_get_parent_shell GtkMenuDirectionType GTK_MENU_SHELL @@ -2269,6 +2270,34 @@ GtkNotebookTab GtkNotebookPrivate
+
+gtknumerableicon +GtkNumerableIcon +GtkNumerableIcon +gtk_numerable_icon_new +gtk_numerable_icon_new_with_style_context +gtk_numerable_icon_get_background_gicon +gtk_numerable_icon_set_background_gicon +gtk_numerable_icon_get_background_icon_name +gtk_numerable_icon_set_background_icon_name +gtk_numerable_icon_get_count +gtk_numerable_icon_set_count +gtk_numerable_icon_get_label +gtk_numerable_icon_set_label +gtk_numerable_icon_get_style_context +gtk_numerable_icon_set_style_context + +GTK_NUMERABLE_ICON +GTK_IS_NUMERABLE_ICON +GTK_TYPE_NUMERABLE_ICON +GTK_NUMERABLE_ICON_CLASS +GTK_IS_NUMERABLE_ICON_CLASS +GTK_NUMERABLE_ICON_GET_CLASS + + +gtk_numerable_icon_get_type +
+
gtkoffscreenwindow GtkOffscreenWindow @@ -2449,15 +2478,15 @@ gtk_range_set_fill_level gtk_range_set_restrict_to_fill_level gtk_range_set_show_fill_level gtk_range_get_adjustment -gtk_range_set_update_policy gtk_range_set_adjustment gtk_range_get_inverted gtk_range_set_inverted -gtk_range_get_update_policy gtk_range_get_value +gtk_range_set_value gtk_range_set_increments gtk_range_set_range -gtk_range_set_value +gtk_range_get_round_digits +gtk_range_set_round_digits GtkSensitivityType gtk_range_set_lower_stepper_sensitivity gtk_range_get_lower_stepper_sensitivity @@ -2482,8 +2511,6 @@ GTK_RANGE_GET_CLASS gtk_range_get_type GtkRangePrivate -GtkRangeLayout -GtkRangeStepTimer
@@ -2772,13 +2799,11 @@ gtk_scrollable_set_vscroll_policy -GtkScrollableIface -GTK_IS_SCROLLABLE -GTK_IS_SCROLLABLE_CLASS -GTK_SCROLLABLE -GTK_SCROLLABLE_CLASS -GTK_SCROLLABLE_GET_IFACE +GtkScrollableInterface GTK_TYPE_SCROLLABLE +GTK_SCROLLABLE +GTK_IS_SCROLLABLE +GTK_SCROLLABLE_GET_IFACE gtk_scrollable_get_type @@ -3001,7 +3026,7 @@ GTK_SPINNER GTK_IS_SPINNER GTK_TYPE_SPINNER GTK_SPINNER_CLASS -GTK_IS_SPINER_CLASS +GTK_IS_SPINNER_CLASS GTK_SPINNER_GET_CLASS GTK_IS_SPINNER_CLASS @@ -3227,7 +3252,6 @@ GTK_TEXT_BUFFER_GET_CLASS GtkTextBufferPrivate gtk_text_buffer_get_type -GtkTextLogAttrCache
@@ -3496,8 +3520,6 @@ GtkTextViewPrivate gtk_text_view_get_type gtk_text_child_anchor_get_type GtkTextBTree -GtkTextWindow -GtkTextPendingScroll
@@ -3929,6 +3951,7 @@ gtk_tree_model_get_iter_first gtk_tree_model_get_path gtk_tree_model_get_value gtk_tree_model_iter_next +gtk_tree_model_iter_previous gtk_tree_model_iter_children gtk_tree_model_iter_has_child gtk_tree_model_iter_n_children @@ -4145,6 +4168,7 @@ GtkTreeViewColumnSizing GtkTreeCellDataFunc GtkTreeViewColumn gtk_tree_view_column_new +gtk_tree_view_column_new_with_area gtk_tree_view_column_new_with_attributes gtk_tree_view_column_pack_start gtk_tree_view_column_pack_end @@ -4333,6 +4357,7 @@ gtk_tree_view_get_type GtkCellView GtkCellView gtk_cell_view_new +gtk_cell_view_new_with_context gtk_cell_view_new_with_text gtk_cell_view_new_with_markup gtk_cell_view_new_with_pixbuf @@ -4343,6 +4368,10 @@ gtk_cell_view_get_displayed_row gtk_cell_view_get_size_of_row gtk_cell_view_set_background_color gtk_cell_view_set_background_rgba +gtk_cell_view_set_draw_sensitive +gtk_cell_view_get_draw_sensitive +gtk_cell_view_set_fit_model +gtk_cell_view_get_fit_model GtkCellViewClass GTK_TYPE_CELL_VIEW @@ -4364,6 +4393,7 @@ GtkCellLayoutIface GtkCellLayoutDataFunc gtk_cell_layout_pack_start gtk_cell_layout_pack_end +gtk_cell_layout_get_area gtk_cell_layout_get_cells gtk_cell_layout_reorder gtk_cell_layout_clear @@ -4380,6 +4410,129 @@ GTK_CELL_LAYOUT_GET_IFACE gtk_cell_layout_get_type
+
+gtkcellarea +GtkCellArea +GtkCellArea +GtkCellAreaClass +GtkCellCallback +GtkCellAllocCallback +GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID +gtk_cell_area_add +gtk_cell_area_remove +gtk_cell_area_has_renderer +gtk_cell_area_foreach +gtk_cell_area_foreach_alloc +gtk_cell_area_event +gtk_cell_area_render +gtk_cell_area_set_style_detail +gtk_cell_area_get_style_detail +gtk_cell_area_get_cell_allocation +gtk_cell_area_get_cell_at_position +gtk_cell_area_create_context +gtk_cell_area_copy_context +gtk_cell_area_get_request_mode +gtk_cell_area_get_preferred_width +gtk_cell_area_get_preferred_height_for_width +gtk_cell_area_get_preferred_height +gtk_cell_area_get_preferred_width_for_height +gtk_cell_area_get_current_path_string +gtk_cell_area_apply_attributes +gtk_cell_area_attribute_connect +gtk_cell_area_attribute_disconnect +gtk_cell_area_class_install_cell_property +gtk_cell_area_class_find_cell_property +gtk_cell_area_class_list_cell_properties +gtk_cell_area_add_with_properties +gtk_cell_area_cell_set +gtk_cell_area_cell_get +gtk_cell_area_cell_set_valist +gtk_cell_area_cell_get_valist +gtk_cell_area_cell_set_property +gtk_cell_area_cell_get_property +gtk_cell_area_is_activatable +gtk_cell_area_activate +gtk_cell_area_focus +gtk_cell_area_set_focus_cell +gtk_cell_area_get_focus_cell +gtk_cell_area_add_focus_sibling +gtk_cell_area_remove_focus_sibling +gtk_cell_area_is_focus_sibling +gtk_cell_area_get_focus_siblings +gtk_cell_area_get_focus_from_sibling +gtk_cell_area_get_edited_cell +gtk_cell_area_get_edit_widget +gtk_cell_area_activate_cell +gtk_cell_area_stop_editing +gtk_cell_area_inner_cell_area +gtk_cell_area_request_renderer + +GTK_CELL_AREA +GTK_IS_CELL_AREA +GTK_TYPE_CELL_AREA +gtk_cell_area_get_type +GTK_CELL_AREA_CLASS +GTK_IS_CELL_AREA_CLASS +GTK_CELL_AREA_GET_CLASS +GtkCellAreaPrivate +
+ +
+gtkcellareacontext +GtkCellAreaContext +GtkCellAreaContextClass +GtkCellAreaContext +gtk_cell_area_context_get_area +gtk_cell_area_context_allocate +gtk_cell_area_context_reset +gtk_cell_area_context_get_preferred_width +gtk_cell_area_context_get_preferred_height +gtk_cell_area_context_get_preferred_height_for_width +gtk_cell_area_context_get_preferred_width_for_height +gtk_cell_area_context_get_allocation +gtk_cell_area_context_push_preferred_width +gtk_cell_area_context_push_preferred_height + + +GTK_CELL_AREA_CONTEXT +GTK_IS_CELL_AREA_CONTEXT +GTK_TYPE_CELL_AREA_CONTEXT +gtk_cell_area_context_get_type +GTK_CELL_AREA_CONTEXT_CLASS +GTK_IS_CELL_AREA_CONTEXT_CLASS +GTK_CELL_AREA_CONTEXT_GET_CLASS +GtkCellAreaContextPrivate +
+ +
+gtkcellareabox +GtkCellAreaBox +GtkCellAreaBox +GtkCellAreaBoxClass +gtk_cell_area_box_new +gtk_cell_area_box_pack_start +gtk_cell_area_box_pack_end +gtk_cell_area_box_get_spacing +gtk_cell_area_box_set_spacing + + +GTK_CELL_AREA_BOX +GTK_IS_CELL_AREA_BOX +GTK_TYPE_CELL_AREA_BOX +GTK_CELL_AREA_BOX_CLASS +GTK_IS_CELL_AREA_BOX_CLASS +GTK_CELL_AREA_BOX_GET_CLASS +GTK_CELL_AREA_BOX_CONTEXT +GTK_CELL_AREA_BOX_CONTEXT_CLASS +GTK_CELL_AREA_BOX_CONTEXT_GET_CLASS +GTK_IS_CELL_AREA_BOX_CONTEXT +GTK_IS_CELL_AREA_BOX_CONTEXT_CLASS + + +gtk_cell_area_box_get_type +GtkCellAreaBoxPrivate +
+
gtkcellrenderer GtkCellRenderer @@ -4387,6 +4540,7 @@ GtkCellRendererState GtkCellRendererMode GtkCellRenderer GtkCellRendererClass +gtk_cell_renderer_get_aligned_area gtk_cell_renderer_get_size gtk_cell_renderer_render gtk_cell_renderer_activate @@ -4402,6 +4556,7 @@ gtk_cell_renderer_get_alignment gtk_cell_renderer_set_alignment gtk_cell_renderer_get_padding gtk_cell_renderer_set_padding +gtk_cell_renderer_is_activatable gtk_cell_renderer_get_preferred_height @@ -4410,8 +4565,6 @@ gtk_cell_renderer_get_preferred_size gtk_cell_renderer_get_preferred_width gtk_cell_renderer_get_preferred_width_for_height gtk_cell_renderer_get_request_mode -gtk_cell_view_get_desired_height_for_width_of_row -gtk_cell_view_get_desired_width_of_row GTK_CELL_RENDERER @@ -4423,6 +4576,8 @@ GTK_CELL_RENDERER_GET_CLASS GtkCellRendererPrivate gtk_cell_renderer_get_type +gtk_cell_renderer_mode_get_type +gtk_cell_renderer_state_get_type
@@ -4586,6 +4741,7 @@ GTK_IS_CELL_RENDERER_ACCEL_CLASS GTK_CELL_RENDERER_ACCEL_GET_CLASS gtk_cell_renderer_accel_get_type +gtk_cell_renderer_accel_mode_get_type GtkCellRendererAccelPrivate
@@ -4818,11 +4974,11 @@ gtk_widget_get_parent_window gtk_widget_set_events gtk_widget_get_events gtk_widget_add_events -gtk_widget_set_extension_events -gtk_widget_get_extension_events gtk_widget_set_device_events gtk_widget_get_device_events gtk_widget_add_device_events +gtk_widget_set_device_enabled +gtk_widget_get_device_enabled gtk_widget_get_toplevel gtk_widget_get_ancestor gtk_widget_get_visual @@ -4868,7 +5024,6 @@ gtk_widget_pop_composite_child gtk_widget_push_composite_child gtk_widget_queue_draw_area gtk_widget_queue_draw_region -gtk_widget_reset_shapes gtk_widget_set_app_paintable gtk_widget_set_double_buffered gtk_widget_set_redraw_on_allocate @@ -5073,8 +5228,6 @@ gtk_window_begin_resize_drag gtk_window_begin_move_drag gtk_window_set_decorated gtk_window_set_deletable -gtk_window_set_frame_dimensions -gtk_window_set_has_frame gtk_window_set_mnemonic_modifier gtk_window_set_type_hint gtk_window_set_skip_taskbar_hint @@ -5090,8 +5243,6 @@ gtk_window_get_default_icon_list gtk_window_get_default_icon_name gtk_window_get_default_size gtk_window_get_destroy_with_parent -gtk_window_get_frame_dimensions -gtk_window_get_has_frame gtk_window_get_icon gtk_window_get_icon_list gtk_window_get_icon_name @@ -5135,6 +5286,7 @@ gtk_window_resize_grip_is_visible gtk_window_get_resize_grip_area gtk_window_get_application gtk_window_set_application +gtk_window_set_has_user_ref_count GTK_WINDOW @@ -5178,7 +5330,6 @@ gtk_window_group_get_type
gtkmain General -gtk_set_locale gtk_disable_setlocale gtk_get_default_language gtk_parse_args @@ -5208,16 +5359,6 @@ gtk_grab_remove gtk_device_grab_add gtk_device_grab_remove - -GtkFunction -gtk_quit_add_destroy -gtk_quit_add -GtkCallbackMarshal -GtkArg -gtk_quit_add_full -gtk_quit_remove -gtk_quit_remove_by_data - GTK_PRIORITY_RESIZE @@ -5267,7 +5408,7 @@ GtkWidgetPath gtk_widget_path_append_type gtk_widget_path_copy gtk_widget_path_free -gtk_widget_path_get_widget_type +gtk_widget_path_get_object_type gtk_widget_path_has_parent gtk_widget_path_is_type gtk_widget_path_iter_add_class @@ -5275,7 +5416,7 @@ gtk_widget_path_iter_add_region gtk_widget_path_iter_clear_classes gtk_widget_path_iter_clear_regions gtk_widget_path_iter_get_name -gtk_widget_path_iter_get_widget_type +gtk_widget_path_iter_get_object_type gtk_widget_path_iter_has_class gtk_widget_path_iter_has_name gtk_widget_path_iter_has_qclass @@ -5287,10 +5428,16 @@ gtk_widget_path_iter_list_regions gtk_widget_path_iter_remove_class gtk_widget_path_iter_remove_region gtk_widget_path_iter_set_name -gtk_widget_path_iter_set_widget_type +gtk_widget_path_iter_set_object_type gtk_widget_path_length gtk_widget_path_new gtk_widget_path_prepend_type + + +GTK_TYPE_WIDGET_PATH + + +gtk_widget_path_get_type
@@ -5383,6 +5530,22 @@ GTK_STYLE_CLASS_MENUITEM GTK_STYLE_CLASS_PROGRESSBAR GTK_STYLE_CLASS_SPINNER GTK_STYLE_CLASS_TOOLBAR +GTK_STYLE_CLASS_PANE_SEPARATOR +GTK_STYLE_CLASS_DND +GTK_STYLE_CLASS_ERROR +GTK_STYLE_CLASS_EXPANDER +GTK_STYLE_CLASS_FRAME +GTK_STYLE_CLASS_HIGHLIGHT +GTK_STYLE_CLASS_INFO +GTK_STYLE_CLASS_MARK +GTK_STYLE_CLASS_NOTEBOOK +GTK_STYLE_CLASS_QUESTION +GTK_STYLE_CLASS_SCALE +GTK_STYLE_CLASS_SPINBUTTON +GTK_STYLE_CLASS_VIEW +GTK_STYLE_CLASS_WARNING +GTK_STYLE_CLASS_HORIZONTAL +GTK_STYLE_CLASS_VERTICAL GTK_STYLE_REGION_COLUMN GTK_STYLE_REGION_COLUMN_HEADER GTK_STYLE_REGION_ROW @@ -5409,6 +5572,7 @@ gtk_style_context_get_border_color gtk_style_context_get_border gtk_style_context_get_padding gtk_style_context_get_margin +gtk_style_context_get_font gtk_style_context_invalidate gtk_style_context_state_is_running gtk_style_context_lookup_color @@ -5416,6 +5580,8 @@ gtk_style_context_lookup_icon_set gtk_style_context_notify_state_change gtk_style_context_pop_animatable_region gtk_style_context_push_animatable_region +gtk_style_context_cancel_animations +gtk_style_context_scroll_animations gtk_style_context_remove_provider gtk_style_context_remove_provider_for_screen gtk_style_context_reset_widgets @@ -5519,6 +5685,7 @@ gtk_theming_engine_get_border_color gtk_theming_engine_get_border gtk_theming_engine_get_padding gtk_theming_engine_get_margin +gtk_theming_engine_get_font gtk_theming_engine_has_class gtk_theming_engine_has_region gtk_theming_engine_lookup_color @@ -5715,6 +5882,7 @@ gtk_selection_data_targets_include_rich_text gtk_selection_data_get_selection gtk_selection_data_get_data gtk_selection_data_get_length +gtk_selection_data_get_data_with_length gtk_selection_data_get_data_type gtk_selection_data_get_display gtk_selection_data_get_format @@ -5877,7 +6045,6 @@ GtkShadowType GtkStateType GtkStateFlags GtkToolbarStyle -GtkUpdateType GtkWindowPosition GtkWindowType GtkSortType @@ -6556,6 +6723,26 @@ gtk_print_job_get_surface gtk_print_job_send gtk_print_job_set_track_print_status gtk_print_job_get_track_print_status +gtk_print_job_get_pages +gtk_print_job_set_pages +gtk_print_job_get_page_ranges +gtk_print_job_set_page_ranges +gtk_print_job_get_page_set +gtk_print_job_set_page_set +gtk_print_job_get_num_copies +gtk_print_job_set_num_copies +gtk_print_job_get_scale +gtk_print_job_set_scale +gtk_print_job_get_n_up +gtk_print_job_set_n_up +gtk_print_job_get_n_up_layout +gtk_print_job_set_n_up_layout +gtk_print_job_get_rotate +gtk_print_job_set_rotate +gtk_print_job_get_collate +gtk_print_job_set_collate +gtk_print_job_get_reverse +gtk_print_job_set_reverse GTK_TYPE_PRINT_JOB @@ -6748,9 +6935,18 @@ gtk_app_chooser_refresh GTK_TYPE_APP_CHOOSER GTK_APP_CHOOSER GTK_IS_APP_CHOOSER +GTK_APP_CHOOSER_GET_IFACE gtk_app_chooser_get_type +GTK_APP_CHOOSER_ONLINE +GTK_APP_CHOOSER_ONLINE_GET_IFACE +GTK_APP_CHOOSER_ONLINE_PK +GTK_APP_CHOOSER_ONLINE_PK_CLASS +GTK_APP_CHOOSER_ONLINE_PK_GET_CLASS +GTK_IS_APP_CHOOSER_ONLINE +GTK_IS_APP_CHOOSER_ONLINE_PK +GTK_IS_APP_CHOOSER_ONLINE_PK_CLASS
diff --git a/docs/reference/gtk/gtk3.types b/docs/reference/gtk/gtk3.types index c385a37c48..47295b1679 100644 --- a/docs/reference/gtk/gtk3.types +++ b/docs/reference/gtk/gtk3.types @@ -26,6 +26,9 @@ gtk_buildable_get_type gtk_button_box_get_type gtk_button_get_type gtk_calendar_get_type +gtk_cell_area_get_type +gtk_cell_area_box_get_type +gtk_cell_area_context_get_type gtk_cell_editable_get_type gtk_cell_layout_get_type gtk_cell_renderer_accel_get_type @@ -98,6 +101,7 @@ gtk_message_dialog_get_type gtk_misc_get_type gtk_mount_operation_get_type gtk_notebook_get_type +gtk_numerable_icon_get_type gtk_offscreen_window_get_type gtk_orientable_get_type gtk_page_setup_get_type diff --git a/docs/reference/gtk/images/appchooserbutton.png b/docs/reference/gtk/images/appchooserbutton.png new file mode 100644 index 0000000000..02b48003ac Binary files /dev/null and b/docs/reference/gtk/images/appchooserbutton.png differ diff --git a/docs/reference/gtk/images/appchooserdialog.png b/docs/reference/gtk/images/appchooserdialog.png new file mode 100644 index 0000000000..fd9aa7023a Binary files /dev/null and b/docs/reference/gtk/images/appchooserdialog.png differ diff --git a/docs/reference/gtk/images/drawing.png b/docs/reference/gtk/images/drawing.png new file mode 100644 index 0000000000..a5105002ef Binary files /dev/null and b/docs/reference/gtk/images/drawing.png differ diff --git a/docs/reference/gtk/images/grid-packing.png b/docs/reference/gtk/images/grid-packing.png new file mode 100644 index 0000000000..3dec7d5fcd Binary files /dev/null and b/docs/reference/gtk/images/grid-packing.png differ diff --git a/docs/reference/gtk/images/numerableicon.png b/docs/reference/gtk/images/numerableicon.png new file mode 100644 index 0000000000..fc94b61423 Binary files /dev/null and b/docs/reference/gtk/images/numerableicon.png differ diff --git a/docs/reference/gtk/images/numerableicon2.png b/docs/reference/gtk/images/numerableicon2.png new file mode 100644 index 0000000000..70ab765781 Binary files /dev/null and b/docs/reference/gtk/images/numerableicon2.png differ diff --git a/docs/reference/gtk/migrating-2to3.xml b/docs/reference/gtk/migrating-2to3.xml index fc39ff1e24..6022ce7a1b 100644 --- a/docs/reference/gtk/migrating-2to3.xml +++ b/docs/reference/gtk/migrating-2to3.xml @@ -1,6 +1,7 @@ ]> Migrating from GTK+ 2.x to GTK+ 3 @@ -99,10 +100,11 @@ To ensure that your application does not have problems with this, you - define the preprocessor symbol GSEAL_ENABLE. This - will make the compiler catch all uses of direct access to struct fields - so that you can go through them one by one and replace them with a call - to an accessor function instead. + define the preprocessor symbol GSEAL_ENABLE while + building your application against GTK+ 2.x. This will make the compiler + catch all uses of direct access to struct fields so that you can go + through them one by one and replace them with a call to an accessor + function instead. make CFLAGS+="-DGSEAL_ENABLE" @@ -122,6 +124,53 @@
+
+ Use GIO for launching applications + + The gdk_spawn family of functions has been + deprecated in GDK 2.24 and removed from GDK 3. Various replacements + exist; the best replacement depends on the circumstances: + + If you are opening a document or URI by launching a command + like firefox http://my-favourite-website.com or + gnome-open ghelp:epiphany, it is best to just use + gtk_show_uri(); as an added benefit, your application will henceforth + respect the users preference for what application to use. + If you are launching a regular, installed application that + has a desktop file, it is best to use GIOs #GAppInfo with a suitable + launch context. + + GAppInfo *info; + GAppLaunchContext *context; + GError *error = NULL; + + info = g_desktop_app_info_new ("epiphany.desktop"); + context = gdk_display_get_app_launch_context (display); + g_app_info_launch (info, NULL, context, &error); + + if (error) + { + g_warning ("Failed to launch epiphany: %s", error->message); + g_error_free (error); + } + + g_object_unref (info); + g_object_unref (context); + + + If you are launching a custom commandline, you can + still use g_app_info_launch() with a GAppInfo that is constructed + with g_app_info_create_from_commandline(), or you can use the + more lowlevel g_spawn family of functions + (e.g. g_spawn_command_line_async()), and pass DISPLAY + in the environment. gdk_screen_make_display_name() can be + used to find the right value for the DISPLAY + environment variable. + + + +
+
Use cairo for drawing @@ -655,7 +704,7 @@ g_object_unref (pixbuf); in 'native' surfaces. Therefore, #GdkColormap and related functions have been removed in GTK+ 3, and visuals are used instead. The colormap-handling functions of #GtkWidget (gtk_widget_set_colormap(), - etc) have been removed and gtk_window_set_visual() has been added. + etc) have been removed and gtk_widget_set_visual() has been added. Setting up a translucent window You might have a screen-changed handler like the following @@ -691,12 +740,55 @@ on_alpha_screen_changed (GtkWindow *window, if (visual == NULL) visual = gdk_screen_get_system_visual (screen); - gtk_window_set_visual (window, visual); + gtk_widget_set_visual (window, visual); }
+
+ Backend-specific code + + In GTK+ 2.x, GDK could only be compiled for one backend at a time, + and the %GDK_WINDOWING_X11 or %GDK_WINDOWING_WIN32 macros could + be used to find out which one you are dealing with: + +#ifdef GDK_WINDOWING_X11 + if (timestamp != GDK_CURRENT_TIME) + gdk_x11_window_set_user_time (gdk_window, timestamp); +#endif +#ifdef GDK_WINDOWING_WIN32 + /* ... win32 specific code ... */ +#endif + + In GTK+ 3, GDK can be built with multiple backends, and currently + used backend has to be determined at runtime, typically using + type-check macros on a #GdkDisplay or #GdkWindow. You still need + to use the #GDK_WINDOWING macros to only compile code referring + to supported backends: + +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + { + if (timestamp != GDK_CURRENT_TIME) + gdk_x11_window_set_user_time (gdk_window, timestamp); + } + else +#endif +#ifdef GDK_WINDOWING_WIN32 + if (GDK_IS_WIN32_DISPLAY (display)) + { + /* ... win32 specific code ... */ + } + else +#endif + { + g_warning ("Unsupported GDK backend"); + } + + +
+
The GtkWidget::draw signal @@ -954,6 +1046,8 @@ gtk_arrow_draw (GtkWidget *widget,
+ + diff --git a/docs/reference/gtk/migrating-ClientSideWindows.sgml b/docs/reference/gtk/migrating-ClientSideWindows.sgml deleted file mode 100644 index 017249c3e9..0000000000 --- a/docs/reference/gtk/migrating-ClientSideWindows.sgml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - Migrating to client-side windows - - - In version 2.18, GDK has been changed to use client-side windows. This - means that there is no longer a 1-1 correspondence between #GdkWindows - and windows in the underlying window system. In particular, it is no - longer correct to assume that each window has an associated XID. - Code that makes this assumption can sometimes be fixed by calling - gdk_window_ensure_native() on the windows in question. - Calling gdk_x11_window_get_xid() (or GDK_WINDOW_XID()) from the - X11-specific API on a non-native window will explicitly call - gdk_window_ensure_native(), so old code using this will continue to - work. A small gotcha is that the GDK_WINDOW_XID() call is no longer a - trivial accessor for the XID of the window, and thus must not be called - from another thread without taking locking precautions. - - - - GDK looks for the GDK_NATIVE_WINDOWS environment variable - and makes all windows native if it is set. It also tries to be more - compatible with the way prior versions worked in some other ways. - - - - Some applications assume that they can just operate on the X windows - corresponding to their GDK windows without ever telling GDK. One - example that we've seen is changing the child window stacking order - using XRestackWindows(). Fixing this properly requires to fix the code - to use GDK functions to achieve whatever it is trying to achieve. - To make this easier in the case of stacking order changes, we've added - a gdk_window_restack() function. - - - - One change that can cause problems for some applications is that GDK - is more aggressive about optimizing away expose events. Code that does - more than just repainting exposed areas in response to expose events - may be affected by this. - - - - Problems can also occur when using cairo for drawing. One thing that can - go wrong is clip handling. You may not use cairo_reset_clip() on a - cairo_t on a cairo context created via gdk_cairo_create() or passed to - the GtkWidget::draw signal. - - - - Due to a weird API in XClearArea the gdk_window_clear_area() call handled - a specified width or height of zero to mean "to end of window" for - non-double-buffered drawing. This has been changed to be consistent with - the docs and what happens in the double-buffered case. All code in GTK+ - that relied on this has been fixed, but it is possible (although unlikely) - that third party applications rely on this. If you need to do this, just - implement it yourself using gdk_drawable_get_size(). - - - diff --git a/docs/reference/gtk/migrating-GtkAboutDialog.sgml b/docs/reference/gtk/migrating-GtkAboutDialog.sgml deleted file mode 100644 index 07c7ca1453..0000000000 --- a/docs/reference/gtk/migrating-GtkAboutDialog.sgml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Migrating from GnomeAbout to GtkAboutDialog - - - Since version 2.6, GTK+ provides the #GtkAboutDialog widget as a - replacement for the GnomeAbout dialog in - the libgnomeui library. - - - - #GtkAboutDialog supports all features found in GnomeAbout. - The GtkAboutDialog API is bigger, since it follows - the GTK+ policy to have getters and setters for all widget properties, - but it isn't much more complex than GnomeAbout. - - - - To convert an application that uses GnomeAbout to - GtkAboutDialog, as a first step, replace calls - like - - const gchar *documentors[] = { - "Documenter 1", - "Documenter 2", - NULL - }; - - const gchar *documentors[] = { - "Author 1", - "Author 2", - NULL - }; - - GtkWidget *about = gnome_about_new ("GNOME Test Program", VERSION, - "(C) 1998-2001 The Free Software Foundation", - "Program to display GNOME functions.", - authors, - documenters, - _("translator-credits"), - "logo.png"); - - by something like - - GdkPixbuf *logo = gdk_pixbuf_new_from_file ("logo.png", NULL); - GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG, - "name", "GNOME Test Program", - "version", VERSION, - "copyright", "(C) 1998-2001 The Free Software Foundation", - "comments", "Program to display GNOME functions.", - "authors", authors, - "documenters", documenters, - "translator-credits", _("translator-credits"), - "logo", logo, - NULL); - g_object_unref (pixbuf); - - If the g_object_new() construction scares you, you can also use - gtk_about_dialog_new() to construct the dialog and then use the - setters for the individual properties. - - - - Once you are done with the initial conversion, you may want to look into - using some of the features of GtkAboutDialog - which are not present in GnomeAbout. - - - You can specify license information with the - #GtkAboutDialog:license property - - - You can add separate credits for artists with the - #GtkAboutDialog:artists property - - - You can add a pointer to the website of your application, using the - #GtkAboutDialog:website and #GtkAboutDialog:website-label properties. - - - If your credits contain email addresses or URLs, you can turn them - into clickable links using gtk_about_dialog_set_email_hook() and - gtk_about_dialog_set_url_hook(). - - - - - - diff --git a/docs/reference/gtk/migrating-GtkAction.sgml b/docs/reference/gtk/migrating-GtkAction.sgml deleted file mode 100644 index 46a574805c..0000000000 --- a/docs/reference/gtk/migrating-GtkAction.sgml +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - Federico - Mena-Quintero - -
- federico@ximian.com -
-
-
-
- - Migrating from old menu and toolbar systems to GtkAction - - - Prior to GTK+ 2.4, there were several APIs in use to create menus - and toolbars. GTK+ itself included #GtkItemFactory, which was - historically used in the GIMP; libgnomeui provided the gnome-ui - set of macros; libbonoboui provided a complex mechanism to do menu - merging across embedded components. GTK+ 2.4 includes a system - for creating menus and toolbars, with merging of items, based - around the #GtkAction mechanism. - - -
- Actions and Action Groups - - - A #GtkAction represents an operation that the user can perform from - the menus and toolbars of an application. It is similar to "verbs" - in other menu systems. A #GtkAction has a name, which is its identifier, - and it can have several widgets that represent it in the user interface. - For example, an action for EditCopy can have a menu item - as well as a toolbar button associated to it. If there is nothing selected - in the document, the application can simply de-sensitize the - EditCopy action; this will cause both the menu - item and the toolbar button to be de-sensitized automatically. - Similarly, whenever the user selects the menu item or the - toolbar button associated to the EditCopy - action, the corresponding #GtkAction object will emit an - "activate" signal. - - - - #GtkActionGroup is simply a group of #GtkAction objects. An - application may want to have several groups: one for global - actions such as "new document", "about", and "exit"; then one - group for each open document with actions specific to the - document, such as "cut", "copy", "paste", and "print". - - - - Normal actions are simply commands, such as - FileSave or EditCopy. - Toggle actions can be active or inactive, such as - FormatBold or ViewShowRulers. - Radio actions define a set of items for which one and only one - can be active at a time, for example, { - ViewHighQuality, - ViewNormalQuality, - ViewLowQuality }. - -
- -
- User Interface Manager Object - - - #GtkUIManager is an object that can construct menu and toolbar widgets - from an XML description. These widgets are in turn associated to - corresponding actions and action groups. - - - - #GtkUIManager supports merging of menus and toolbars for applications - that have multiple components, each with separate sets of commands. - For example, a word processor that can embed images may want to have - toolbar buttons for Bold and Italic when the cursor is on a text - block, but Crop and Brightness/Contrast buttons when the cursor - is on an image. These actions, which change depending on the - state of the application, can be merged and de-merged from a - #GtkUIManager as appropriate. - -
- -
- Migrating from GnomeUIInfo - - - Prior to GTK+ 2.4, some applications used the GnomeUIInfo - mechanism from - <libgnomeui/gnome-app-helper.h> to - define their menus and toolbars. With it, a program decleres an - array of GnomeUIInfo structures, which - contain information for menu or toolbar items such as their - label, icon, and accelerator key. Then, one calls - gnome_app_fill_menu() or gnome_app_fill_toolbar(), or one of the - related functions, to create the appropriate widgets based on - these structures. - - - - A downside of this API is that the same structures are used to - pass back pointers to the widgets that got created. This means - that the structures cannot simply be kept around if the program - requires multiple instances of the user interface (e.g. several - windows); each new invocation of gnome_app_fill_menu() would - overwrite the widget fields of the structures. - - - - Another disadvantage is that there is no automatic way to - synchronize the state of related controls. If there are toolbar - toogle buttons for "Bold", "Italic", "Underline", and also - corresponding menu items under "Format/Bold", etc., one has to - synchronize their toggled states by hand whenever the user - selects any one of them. - - - - Finally, there is no way to do menu and toolbar merging for - applications that require embedded components. - - - - To convert an application that uses GnomeUIInfo into the new - GtkAction mechanism, you need to do several things: - - - - - - Separate your existing GnomeUIInfo entries into normal - actions, toggle actions, and radio actions, and then create - a separate array of #GtkActionEntry structures - for each group. This will allow you to create the necessary - #GtkActionGroup objects. Note that this does not describe - the actual "shape" that your menus and toolbars will have; - it simply defines the set of commands that will appear in them. - - - - - Create an XML description of your menus and toolbars for use - with #GtkUIManager. This defines the actual shape of the menus - and toolbars. - - - - - Port the code that uses gnome-app and gnome-app-helper to - #GtkAction and #GtkUIManager. - - - - - If your GnomeUIInfo entries use GNOME_APP_PIXMAP_DATA or - GNOME_APP_PIXMAP_FILENAME for pixmaps, you have to create a - #GtkIconFactory, add it to the list of default factories, then - create a #GtkIconSet for each of your own icons. Add the sets to - the factory, and use the id in the #GtkActionEntry like a regular - GTK+ stock id. - - - - - - GnomeUIInfo Example - - - The following code shows a declaration of a simple menu bar to - be used with gnome_app_fill_menu() or similar. The menu hierarchy i - looks like this: - - - - - File - - Open - - Exit - - - - - View - - Zoom In - Zoom Out - - [ ] Full Screen - - ( ) High Quality - ( ) Normal Quality - ( ) Low Quality - - - - - -static GnomeUIInfo file_menu_items[] = { - { GNOME_APP_UI_ITEM, "_Open", "Open a file", - open_callback, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GTK_STOCK_OPEN, - 'o', GDK_CONTROL_MASK, NULL }, - { GNOME_APP_UI_SEPARATOR }, - { GNOME_APP_UI_ITEM, "E_xit", "Exit the program", - exit_callback, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GTK_STOCK_QUIT, - 'q', GDK_CONTROL_MASK, NULL}, - { GNOME_APP_UI_ENDOFINFO } -}; - -static GnomeUIInfo view_radio_items[] = { - { GNOME_APP_UI_ITEM, "_High Quality", "Display images in high quality, slow mode", - high_quality_callback, NULL, NULL, GNOME_APP_PIXMAP_FILENAME, "high-quality.png", - 0, 0, NULL }, - { GNOME_APP_UI_ITEM, "_Normal Quality", "Display images in normal quality", - normal_quality_callback, NULL, NULL, GNOME_APP_PIXMAP_FILENAME, "normal-quality.png", - 0, 0, NULL }, - { GNOME_APP_UI_ITEM, "_Low Quality", "Display images in low quality, fast mode", - low_quality_callback, NULL, NULL, GNOME_APP_PIXMAP_FILENAME, "low-quality.png", - 0, 0, NULL }, - { GNOME_APP_UI_ENDOFINFO } -}; - -static GnomeUIInfo view_menu_items[] = { - { GNOME_APP_UI_ITEM, "Zoom _In", "Zoom into the image", - zoom_in_callback, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GTK_STOCK_ZOOM_IN, - GDK_PLUS, 0, NULL }, - { GNOME_APP_UI_ITEM, "Zoom _Out", "Zoom away from the image", - zoom_out_callback, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GTK_STOCK_ZOOM_OUT, - GDK_MINUS, 0, NULL }, - { GNOME_APP_UI_SEPARATOR }, - { GNOME_APP_UI_TOGGLEITEM, "_Full Screen", "Switch between full screen and windowed mode", - full_screen_callback, NULL, NULL, GNOME_APP_PIXMAP_NONE, NULL, - GDK_F11, 0, NULL }, - { GNOME_APP_UI_SEPARATOR }, - { GNOME_APP_UI_RADIOITEMS, NULL, NULL, view_radio_items }, - { GNOME_APP_UI_ENDOFINFO } -}; - -static GnomeUIInfo menubar[] = { - { GNOME_APP_UI_SUBTREE, "_File", NULL, file_menu_items }, - { GNOME_APP_UI_SUBTREE, "_View", NULL, view_menu_items }, - { GNOME_APP_UI_ENDOFINFO } -} - - - - - <structname>GtkActionEntry</structname> Structures - - - The following code is the set of actions that are present in - the previous - example. Note that the toggle and radio entries are - separate from normal actions. Also, note that #GtkActionEntry - structures take key names in the format of gtk_accelerator_parse() - rather than key values plus modifiers; you will have to convert these - values by hand. For example, %GDK_F11 with no modifiers is equivalent - to a key name of "F11". Likewise, "o" - with %GDK_CONTROL_MASK is equivalent to "<ontrol>O". - - - -/* Normal items */ -static const GtkActionEntry entries[] = { - { "FileMenu", NULL, "_File" }, - { "ViewMenu", NULL, "_View" }, - { "Open", GTK_STOCK_OPEN, "_Open", "<control>O", "Open a file", open_action_callback }, - { "Exit", GTK_STOCK_QUIT, "E_xit", "<control>Q", "Exit the program", exit_action_callback }, - { "ZoomIn", GTK_STOCK_ZOOM_IN, "Zoom _In", "plus", "Zoom into the image", zoom_in_action_callback }, - { "ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", "minus", "Zoom away from the image", zoom_out_action_callback }, -}; - -/* Toggle items */ -static const GtkToggleActionEntry toggle_entries[] = { - { "FullScreen", NULL, "_Full Screen", "F11", "Switch between full screen and windowed mode", full_screen_action_callback, FALSE } -}; - -/* Radio items */ -static const GtkRadioActionEntry radio_entries[] = { - { "HighQuality", "my-stock-high-quality", "_High Quality", NULL, "Display images in high quality, slow mode", 0 }, - { "NormalQuality", "my-stock-normal-quality", "_Normal Quality", NULL, "Display images in normal quality", 1 }, - { "LowQuality", "my-stock-low-quality", "_Low Quality", NULL, "Display images in low quality, fast mode", 2 } -}; - - - - - XML Description - - - After extracting the actions, you will need to create an XML - description of the actual layout of your menus and toolbars - for use with #GtkUIManager. The following code shows a simple - menu bar that corresponds to the previous - example. Note that the File and - View menus have their names specified in - the action - entries, not in the XML itself. This is because the - XML description only contains identifiers - for the items in the GUI, rather than human-readable names. - - - -static const char *ui_description = -"<ui>" -" <menubar name='MainMenu'>" -" <menu action='FileMenu'>" -" <menuitem action='Open'/>" -" <menuitem action='Exit'/>" -" </menu>" -" <menu action='ViewMenu'>" -" <menuitem action='ZoomIn'/>" -" <menuitem action='ZoomOut'/>" -" <separator/>" -" <menuitem action='FullScreen'/>" -" <separator/>" -" <menuitem action='HighQuality'/>" -" <menuitem action='NormalQuality'/>" -" <menuitem action='LowQuality'/>" -" </menu>" -" </menubar>" -"</ui>"; - - - - - Creating the Menu Bar - - - In this last example, we will create a #GtkActionGroup based on the - action entries - we created above. We will then create a #GtkUIManager with the XML description of the menu - layout. We will also extract the accelerator group and the - widgets from the #GtkUIManager put them into a window. - - - -GtkWidget *window; -GtkWidget *vbox; -GtkWidget *menubar; -GtkActionGroup *action_group; -GtkUIManager *ui_manager; -GtkAccelGroup *accel_group; -GError *error; - -register_my_stock_icons (); - -window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - -vbox = gtk_vbox_new (FALSE, 0); -gtk_container_add (GTK_CONTAINER (window), vbox); - -action_group = gtk_action_group_new ("MenuActions"); -gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), window); -gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), window); -gtk_action_group_add_radio_actions (action_group, radio_entries, G_N_ELEMENTS (radio_entries), 0, radio_action_callback, window); - -ui_manager = gtk_ui_manager_new (); -gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); - -accel_group = gtk_ui_manager_get_accel_group (ui_manager); -gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); - -error = NULL; -if (!gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, &error)) - { - g_message ("building menus failed: %s", error->message); - g_error_free (error); - exit (EXIT_FAILURE); - } - -menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu"); -gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0); - -gtk_widget_show_all (window); - - - - - Registering the icons - - - Here we show how the register_my_stock_icons() function - used in the previous example could look like. - - - -static struct { - gchar *filename; - gchar *stock_id; -} stock_icons[] = { - { "high-quality.png", "my-stock-high-quality" }, - { "normal-quality.png", "my-stock-normal-quality" }, - { "low-quality.png", "my-stock-low-quality" }, -}; - -static gint n_stock_icons = G_N_ELEMENTS (stock_icons); - -static void -register_my_stock_icons (void) -{ - GtkIconFactory *icon_factory; - GtkIconSet *icon_set; - GtkIconSource *icon_source; - gint i; - - icon_factory = gtk_icon_factory_new (); - - for (i = 0; i < n_stock_icons; i++) - { - icon_set = gtk_icon_set_new (); - icon_source = gtk_icon_source_new (); - gtk_icon_source_set_filename (icon_source, stock_icons[i].filename); - gtk_icon_set_add_source (icon_set, icon_source); - gtk_icon_source_free (icon_source); - gtk_icon_factory_add (icon_factory, stock_icons[i].stock_id, icon_set); - gtk_icon_set_unref (icon_set); - } - - gtk_icon_factory_add_default (icon_factory); - - g_object_unref (icon_factory); -} - - - -
- -
- - diff --git a/docs/reference/gtk/migrating-GtkAssistant.sgml b/docs/reference/gtk/migrating-GtkAssistant.sgml deleted file mode 100644 index ef4fbfabcc..0000000000 --- a/docs/reference/gtk/migrating-GtkAssistant.sgml +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Carlos - Garnacho - -
- carlosg@gnome.org -
-
-
-
- - Migrating from GnomeDruid to GtkAssistant - - - Since version 2.10, GTK+ provides the GtkAssistant widget as a replacement - for the GnomeDruid widget in the libgnomeui - library. - - - - Conceptually, both GtkAssistant and - GnomeDruid do the same task, but there are - several areas where the API has been completely redesigned, so this - chapter covers the main changes between both widgets. - - -
- Inserting pages - - - GnomeDruid was implemented as a container for - GnomeDruidPage abstract objects, which are - implemented by the GnomeDruidPageEdge and - GnomeDruidPageStandard widgets. Instead, - GtkAssistant allows any widget to be a page, - and implements per-page settings (such as page type or title) as - child properties. So instead of: - - - -/* Page 1 */ -page = gnome_druid_page_edge_new (GNOME_EDGE_START); -gnome_druid_page_edge_set_test (GNOME_DRUID_PAGE_EDGE (page), - "Welcome to the assistant, it will make your life easier"); -gtk_widget_show (page); -gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page)); - -/* Page 2 */ -page = gnome_druid_page_standard_new (); -gtk_container_add (GTK_CONTAINER (GNOME_DRUID_PAGE_STANDARD (page)->vbox, - create_page1 ()); -gtk_widget_show_all (page); -gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page)); - -/* Page 3 */ -page = gnome_druid_page_edge_new (GNOME_EDGE_FINISH); -gnome_druid_page_edge_set_test (GNOME_DRUID_PAGE_EDGE (page), - "Now you are done, your life is easier"); -gtk_widget_show (page); -gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page)); - - - - You have to write: - - - -gtk_assistant_append_page (GTK_ASSISTANT (assistant), - gtk_label_new ("Welcome to the assistant, it will make your life easier")); -gtk_assistant_append_page (GTK_ASSISTANT (assistant), - create_page1 ()); -gtk_assistant_append_page (GTK_ASSISTANT (assistant), - gtk_label_new ("Now you are done, your life is easier"); - -
- -
- Decorating the assistant pages - - - To decorate your assistant pages, GtkAssistant provides similar functions - to GnomeDruid, so you have to transform code like this: - - - -gnome_druid_page_edge_set_title (GNOME_DRUID_PAGE_EDGE (page), "Welcome"); -gnome_druid_page_edge_set_logo (GNOME_DRUID_PAGE_EDGE (page), logo_pixbuf); -gnome_druid_page_edge_set_watermark (GNOME_DRUID_PAGE_EDGE (page), watermark_pixbuf); - - - - Into this: - - - -gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page_widget, "Welcome"); -gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page_widget, logo_pixbuf); -gtk_assistant_set_page_side_image (GTK_ASSISTANT (assistant), page_widget, watermark_pixbuf); - - - - Where page_widget is the widget used as a page. - -
- -
- Setting the page flow - - - Here is the area where GtkAssistant and GnomeDruid - differ the most. While GnomeDruid used the "next" and "back" signals from the - GnomeDruidPage, GtkAssistant uses the following - techniques: - - - - - gtk_assistant_set_forward_page_func (): Allows to define a GtkAssistantPageFunc to let the - assistant know which will be the following page given the current page. - - - gtk_assistant_set_page_complete (): Lets the assistant know whether the specified page is complete - or not, updating buttons state accordingly. - - - gtk_assistant_set_page_type (): Lets the assistant know the page role and update the buttons - state accordingly. Pages can have the following roles: - - Intro - Content - Progress - Confirmation - Summary - - - - - - A sample GtkAssistantPageFunc could look like this: - - - -static gint -forward_page_function (gint current_page, - gpointer data) -{ - switch (current_page) - { - case 0: - return 1; - case 1: - if (check_page1_data ()) - return 2; - else - return 3; - case 2: - return 3; - default: - return -1; - } -} - - -
-
- - diff --git a/docs/reference/gtk/migrating-GtkBuilder.sgml b/docs/reference/gtk/migrating-GtkBuilder.sgml deleted file mode 100644 index 1fd843c8a6..0000000000 --- a/docs/reference/gtk/migrating-GtkBuilder.sgml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - Migrating from libglade to GtkBuilder - - - Since version 2.12, GTK+ provides #GtkBuilder to construct - user interfaces from XML descriptions, similar to the functionality - provided by #GladeXML in the libglade library. - - - - A good way to start a migration from libglade to GtkBuilder is using - glade3 to convert your .glade file. - If your code uses the @root parameter of glade_xml_new(), - you can use gtk_builder_add_objects_from_file() to construct only certain - objects from a GtkBuilder file. - - - - Alternatively, GTK+ also offers the - gtk-builder-convert script you can use - to do the conversion; in which case you should be careful to inspect the output - and make sure you didn't lose any data. - - - - Step-by-step instructions for porting code from libglade to GtkBuilder - - - libgladeGtkBuilder - - - - ]]> - not needed - - - GladeXML* - GtkBuilder* - - - glade_xml_new (FILE, "first_widget", NULL) - - -GError* error = NULL; -GtkBuilder* builder = gtk_builder_new (); -if (!gtk_builder_add_from_file (builder, FILE, &error)) - { - g_warning ("Couldn't load builder file: %s", error->message); - g_error_free (error); - } - - - - - glade_xml_get_widget (gxml, “widget_name”) - GTK_WIDGET (gtk_builder_get_object (builder, “widget_name”)) - - - glade_get_widget_name (widget) - gtk_widget_get_name (widget) - - - glade_xml_get_widget_prefix (gxml, “prefix”) - can be emulated by gtk_builder_get_objects (builder) together with manual filtering. It returns a GSList* instead of a GList* though. - - - -
- - - While GtkBuilder strives to be a complete replacement for - libglade, there are a number of areas where it is currently - still behind libglade: - - - - GtkBuilder supports context information in translatable - properties in a slightly different way than libglade. - Intltool does not yet support this; see - bug - 454894 for the current status of intltool support for - GtkBuilder files. Thankfully, context in translations is a - rarely used feature, and if you are not using it, intltools - glade format support works just fine for GtkBuilder files. - - - - While libglade can often tolerate multiple widgets having the - same id in a glade file, GtkBuilder will not accept duplicate - object ids. Both gtk-builder-convert - and the GtkBuilder parser emit warnings when they see - duplicate ids. - - - - -
diff --git a/docs/reference/gtk/migrating-GtkColorButton.sgml b/docs/reference/gtk/migrating-GtkColorButton.sgml deleted file mode 100644 index be0e8b1d0c..0000000000 --- a/docs/reference/gtk/migrating-GtkColorButton.sgml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Migrating from GnomeColorPicker to GtkColorButton - - - Since version 2.6, GTK+ provides the #GtkColorButton - widget as a replacement for the GnomeColorPicker - widget in the libgnomeui library. - - - - Porting an application from GnomeColorPicker to - GtkColorButton is very simple. - GtkColorButton doesn't support dithering - (since it is rarely needed on modern hardware), and it doesn't have - setters and getters to set the color from floating point or integer - components. So instead of - - guint red, green, blue, alpha; - /* ... */ - gnome_color_picker_set_i8 (color_picker, red, green, blue, alpha); - - you have to write - - GdkColor color; - - color.red = red << 8; - color.green = green << 8; - color.blue = blue << 8; - gtk_color_button_set_color (color_picker, &color); - gtk_color_button_set_alpha (color_picker, alpha << 8); - - and similarly for the setters taking other number formats. For - gnome_color_picker_set_i16() no conversion is needed, - for gnome_color_picker_set_d(), you need to convert - the color components like this: - - color.red = (guint16) (red * 65535.0 + 0.5); - color.green = (guint16) (green * 65535.0 + 0.5); - color.blue = (guint16) (blue * 65535.0 + 0.5); - - - - - diff --git a/docs/reference/gtk/migrating-GtkComboBox.sgml b/docs/reference/gtk/migrating-GtkComboBox.sgml deleted file mode 100644 index 4114bdc15a..0000000000 --- a/docs/reference/gtk/migrating-GtkComboBox.sgml +++ /dev/null @@ -1,213 +0,0 @@ - - - - - Migrating from GtkOptionMenu and GtkCombo to GtkComboBox and - GtkComboBoxEntry - - - Prior to 2.4, GTK+ offered two widgets for the task of selecting one - item from a list of options. #GtkOptionMenu presents the list of - options as a menu while #GtkCombo presents them in a Windows-style list - popup. The only difference between the two is that a #GtkCombo allows to - manually edit the selected value, while the #GtkOptionMenu does not. - - - In GTK+ 2.4, a unified API for list selection was introduced, with - #GtkComboBox for the non-editable case and #GtkComboBoxEntry for the - editable case. - The selection of the display style — menu or list — - is no longer done at the API level, but has been made themeable via - the style property #GtkComboBox:appears-as-list. - - -
- Migrating from GtkOptionMenu to GtkComboBox - - - Here is an example of a simple, but typical use of - #GtkOptionMenu: - -GtkWidget *option_menu, *menu, *menu_item; - -option_menu = gtk_option_menu_new (); -menu = gtk_menu_new (); - -menu_item = gtk_menu_item_new_with_label ("First Item"); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); -menu_item = gtk_menu_item_new_with_label ("Second Item"); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); -menu_item = gtk_menu_item_new_with_label ("Third Item"); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); - -gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu); - - In order to react to the user's selection, connect to the #GtkOptionMenu::changed - signal on the option menu and use gtk_option_menu_get_history() - to retrieve the index of the selected item. - - - And here is how it would be done with a #GtkComboBox: - -GtkWidget *combo_box; - -combo_box = gtk_combo_box_new_text (); - -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "First Item"); -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Second Item"); -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Third Item"); - - In order to react to the user's selection, connect to the - #GtkComboBox::changed signal and use gtk_combo_box_get_active() - to retrieve the index of the selected item. - - - - A slightly more complex example involving images: - -GtkWidget *option_menu, *menu, *menu_item; - -option_menu = gtk_option_menu_new (); -menu = gtk_menu_new (); - -menu_item = gtk_image_menu_item_new_with_label ("First Item"); -gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf1)); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); -menu_item = gtk_image_menu_item_new_with_label ("Second Item"); -gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf2)); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); -menu_item = gtk_image_menu_item_new_with_label ("Third Item"); -gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf3)); -gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); -gtk_widget_show (menu_item); - -gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu); - - - - can be done using a #GtkComboBox as follows: - -GtkListStore *store; -GtkTreeIter iter; -GtkCellRenderer *renderer; -GtkWidget *combo_box; - -store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING); - -gtk_list_store_append (store, &iter); -gtk_list_store_set (store, &iter, 0, pixbuf1, 1, "First Item", -1); -gtk_list_store_append (store, &iter); -gtk_list_store_set (store, &iter, 0, pixbuf2, 1, "Second Item", -1); -gtk_list_store_append (store, &iter); -gtk_list_store_set (store, &iter, 0, pixbuf3, 1, "Third Item", -1); - -combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); - -renderer = gtk_cell_renderer_pixbuf_new (); -gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE); -gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, - "pixbuf", 0, - NULL); - -renderer = gtk_cell_renderer_text_new (); -gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); -gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, - "text", 1, - NULL); - - -
- -
- Migrating from GtkCombo to GtkComboBoxEntry - - - Here is an example of a simple, but typical use of a #GtkCombo: - -GtkWidget *combo; -GList *items = NULL; - -items = g_list_append (items, "First Item"); -items = g_list_append (items, "Second Item"); -items = g_list_append (items, "Third Item"); - -combo = gtk_combo_new (); -gtk_combo_set_popdown_strings (GTK_COMBO (combo), items); - - In order to react to the user's selection, connect to the #GtkCombo::changed - signal on the combo and use - gtk_entry_get_text (GTK_ENTRY (combo->entry)) - to retrieve the selected text. - - - And here is how it would be done using #GtkComboBoxEntry: - -combo_box = gtk_combo_box_entry_new_text (); - -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "First Item"); -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Second Item"); -gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Third Item"); - - In order to react to the user's selection, connect to the #GtkComboBox::changed - signal on the combo and use - gtk_entry_get_text (GTK_ENTRY (GTK_BIN (combo_box)->child)) - to retrieve the selected text. - -
- -
- New features - - - The new widgets have more to offer than a mere combination of the - features of #GtkOptionMenu and #GtkCombo. Notable new features - include: - - - Grid mode - Sometimes it is preferable to display the available - options not in a linear list, but in a grid. A typical example - would be a "color combo" where the individual items are small - square color swatches. The new widgets support gridded display - with the functions - gtk_combo_box_set_wrap_width(), - gtk_combo_box_set_row_span_column() and - gtk_combo_box_set_column_span_column(). - - - - Display of icons - An often-heard complaint about #GtkOptionMenu is that - the icons which appear in the image menu items in its menu are not - displayed in the button showing the selected item. This limitation - has been removed in #GtkComboBox; the selected item appears in the - same way as the options in the popup. - - - - Full tree model power - - Since the new widgets are built around the same models that are - used for #GtkTreeView, all of the powerful machinery of tree models - and cell renderers can be used. - - - - -
- -
- - diff --git a/docs/reference/gtk/migrating-GtkEntry-icons.sgml b/docs/reference/gtk/migrating-GtkEntry-icons.sgml deleted file mode 100644 index 93e21b5356..0000000000 --- a/docs/reference/gtk/migrating-GtkEntry-icons.sgml +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Migrating from SexyIconEntry to GtkEntry - - - GTK+ 2.16 supports showing icons inside a #GtkEntry, similar to - SexyIconEntry. Porting from SexyIconEntry to GtkEntry is relatively - straightforward. The main difference between the two APIs is that - SexyIconEntry uses #GtkImage widgets in a somewhat awkward way as - storage vehicles for icons, while GtkEntry allows to specify icons - via pixbufs, stock ids, icon names or #GIcons. So, if your code uses - e.g.: - -image = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_MENU); -sexy_icon_entry_set_icon (entry, SEXY_ICON_ENTRY_PRIMARY, image); - - you can get rid of the @image, and directly write: - -gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_NEW); - - - - - The signals SexyIconEntry::icon-pressed and SexyIconEntry::icon-released - have been renamed to #GtkEntry::icon-press and #GtkEntry::icon-release - to avoid problems due to signal name clashes. Also, the signature of the - signals has changed from - -void (*icon_pressed) (SexyIconEntry *entry, - SexyIconEntryPosition icon_pos, - int button) - -to - -void (*icon_press) (GtkEntry *entry, - GtkEntryIconPosition icon_pos, - GdkEventButton *event) - - The new signature has the advantage that the signal handler can use - the timestamp of the event, e.g. for passing it to gtk_menu_popup(). - When adapting an existing signal handler to the new signature, you - should note that the button number is easily available as @event->button, - as shown in the following example: - -static void -icon_pressed_cb (SexyIconEntry *entry, - SexyIconEntryPosition position, - int button, - gpointer data) -{ - GtkMenu *menu = data; - - if (position == SEXY_ICON_ENTRY_PRIMARY) - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - button, GDK_CURRENT_TIME); -} - - can be ported as: - -static void -icon_press_cb (GtkEntry *entry, - GtkEntryIconPosition position, - GdkEventButton *event, - gpointer data) -{ - GtkMenu *menu = data; - - if (position == GTK_ENTRY_ICON_PRIMARY) - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - event->button, event->time); -} - - - - - Another difference is that SexyIconEntry offers manual control of - the icon prelighting, via sexy_icon_entry_set_icon_highlight(). - #GtkEntry prelights automatically when appropriate, depending on - whether the icon is activatable and sensitive. You should make - sure that your icons are properly marked as activatable or nonactivatable - and sensitive or insensitive: - - - Sensitive, but non-activatable icons are - good for purely informational purposes. - - - Icons should be marked as insensitive if the - function that they trigger is currently not available. - - - - - - GtkEntry has no direct equivalent of the special-purpose function - sexy_icon_entry_add_clear_button(). If you need this functionality, - the following code works: - -static void -icon_pressed_cb (GtkEntry *entry, - gint position, - GdkEventButton *event, - gpointer data) -{ - if (position == GTK_ENTRY_ICON_SECONDARY) - gtk_entry_set_text (entry, ""); -} - -static void -text_changed_cb (GtkEntry *entry, - GParamSpec *pspec, - GtkWidget *button) -{ - gboolean has_text; - - has_text = gtk_entry_get_text_length (entry) > 0; - gtk_entry_set_icon_sensitive (entry, - GTK_ENTRY_ICON_SECONDARY, - has_text); -} - - - /* ... */ - - /* Set up the clear icon */ - gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), - GTK_ENTRY_ICON_SECONDARY, - GTK_STOCK_CLEAR); - g_signal_connect (entry, "icon-press", - G_CALLBACK (icon_pressed_cb), NULL); - g_signal_connect (entry, "notify::text", - G_CALLBACK (text_changed_cb), find_button); - - /* ... */ - - - diff --git a/docs/reference/gtk/migrating-GtkFileChooser.sgml b/docs/reference/gtk/migrating-GtkFileChooser.sgml deleted file mode 100644 index 731086af81..0000000000 --- a/docs/reference/gtk/migrating-GtkFileChooser.sgml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - Federico - Mena-Quintero - -
- federico@ximian.com -
-
-
-
- - Migrating from GtkFileSelection to GtkFileChooser - - - #GtkFileChooser, starting with GTK+ 2.4, is the new set of APIs for file - selection widgets and dialogs. Previous versions of GTK+ used #GtkFileSelection, - which has numerous problems. - - - - #GtkFileChooser is an abstract interface that can be implemented by widgets - that perform file selection tasks. Two widgets in GTK+ implement this - interface: #GtkFileChooserDialog and #GtkFileChooserWidget. Most applications - simply need to use #GtkFileChooserDialog, which is a dialog box that allows the - user to select existing files for opening them, or to pick new filenames for - saving documents. #GtkFileChooserWidget is for special applications that need to - embed a file selection widget inside a larger window. In the context of GTK+, - #GtkFileChooserDialog is simply a #GtkDialog box with a #GtkFileChooserWidget. - inside. - - -
- Creating a GtkFileChooserDialog - - - To create a #GtkFileChooserDialog, you simply call gtk_file_chooser_dialog_new(). - This function is similar to gtk_dialog_new() in that it takes parameters for the - title of the dialog box and its transient parent, as well as its - buttons. In addition, it takes in an argument that determines - whether the file chooser dialog will be used for opening - existing files or for saving to a possibly new file. - - - - Please see for - how to create a simple file chooser dialog and extract the - selected filename from it. - -
- -
- Selection Modes - - - #GtkFileChooser can be used in two modes, to select a single file at a - time or to select a set of more than one file. To set this, use - gtk_file_chooser_set_select_multiple(). In single-selection - mode, you can use gtk_file_chooser_get_filename() to get a file - name from the local file system or gtk_file_chooser_get_uri() to - get a full-formed URI. In multiple-selection mode, you can use - gtk_file_chooser_get_filenames() to get a #GSList of filename strings, or - gtk_file_chooser_get_uris() to get a list of URI strings. - - - - Also, you can configure #GtkFileChooser to select files - or folders. Consider a backup program that needs to let the - user select a folder that will be backed up along with its - subfolders. To configure whether #GtkFileChooser is used to select - files or folders, use gtk_file_chooser_set_action(). In - addition, this lets you configure whether the file chooser will - be used to select existing files or folders (e.g. for - "File/Open"), or to type in new filenames (for - "File/Save As..."). - -
- -
- Installing a Preview widget - - - Many applications need to have a preview facility within their - file chooser dialogs. Previous to GTK+ 2.4, one needed to - access the #GtkFileSelection widget hierarchy directly to hook in - a preview widget. With #GtkFileChooser, there is a - dedicated API to do this. - - - - Please see the section on - creating preview widgets for more information. - -
- -
- Installing Extra Widgets - - - Some applications need to install extra widgets in a file - chooser. For example, an application may want to provide a - toggle button to give the user the option of opening a file - read-only. - - - - Please see the section on - creating extra widgets for more information. - -
- -
- New features - - - New features in #GtkFileChooser include the following: - - - - - - Ability to select URIs rather than just local files. You - must use a #GtkFileSystem implementation that supports this, - for example the gnome-vfs backend. - - - - - - Present a list of application-specific shortcut folders. - For example, a paint program may want to add a shortcut for - its /usr/share/paint_program/Clipart - folder. - - - - - - Define custom filters so that not all the files in a folder - are listed. For example, you could filter out backup files, - or show only image files. - - - - - - To see how to use these features, please consult the #GtkFileChooser - reference documentation. - -
-
- - diff --git a/docs/reference/gtk/migrating-GtkIconView.sgml b/docs/reference/gtk/migrating-GtkIconView.sgml deleted file mode 100644 index f1fe85264e..0000000000 --- a/docs/reference/gtk/migrating-GtkIconView.sgml +++ /dev/null @@ -1,153 +0,0 @@ - - - - - Migrating from GnomeIconList to GtkIconView - - - Since version 2.6, GTK+ provides the #GtkIconView widget. It is similar in - functionality to the GnomeIconList widget in the - libgnomeui library, both widgets provide a way to lay out named icons in - a grid. The distinctive feature of the GTK+ widget is that it follows the - model-view pattern, allowing it to share the actual data (i.e. the names - and images of the icons) with other views. - - - - #GtkIconView currently doesn't support some features found in - GnomeIconList. Icons can not be positioned freely, - the spacing is not customizable, and it is not possible to edit the names of - icons. - - - - To convert an application that uses GnomeIconList - to #GtkIconView, the first step is to organize your data in a #GtkTreeModel. - GnomeIconList lets you directly insert data with - gnome_icon_list_insert() and gnome_icon_list_insert_pixbuf() and their - append variants. So, if you previously had a function to fill your icon - list similar to this one: - - void - fill_icon_list (GnomeIconList *icon_list) - { - gnome_icon_list_append (icon_list, "file1.png", "Icon 1"); - gnome_icon_list_append (icon_list, "file2.png", "Icon 2"); - - /* more icons ... */ - } - - you will have to create a tree model, attach your icon view to it, and - fill the model: - - enum { - PIXBUF_COLUMN, - TEXT_COLUMN, - - /* you can have more columns here, e.g */ - - DATA_COLUMN - }; - - void - fill_model (GtkListStore *store) - { - GtkTreeIter iter; - GdkPixbuf *pixbuf; - - gtk_list_store_append (store, &iter); - pixbuf = gdk_pixbuf_new_from_file ("file1.png", NULL); - gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, "Icon 1", -1); - g_object_unref (pixbuf); - - gtk_list_store_append (store, &iter); - pixbuf = gdk_pixbuf_new_from_file ("file2.png", NULL); - gtk_list_store_set (store, &iter, PIXBUF_COLUMN, pixbuf, TEXT_COLUMN, "Icon 2", -1); - g_object_unref (pixbuf); - - /* more icons ... */ - } - - int - main (int argc, char *argv[]) - { - GtkWidget *icon_view; - GtkListStore *store; - - gtk_init (&argc, &argv); - - /* do other initialization... */ - - /* construct the GtkIconView */ - icon_view = gtk_icon_view_new (); - store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER); - - gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), PIXBUF_COLUMN); - gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), TEXT_COLUMN); - gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), GTK_TREE_MODEL (store)); - - fill_model (store); - - /* ... */ - } - - This example uses a #GtkListStore as model, but part of the elegance of the - model-view pattern is that you can easily use another tree model implementation, - or even write your own custom tree model. - - - - Your application may make use of extra data attached to the icons in the - GnomeIconList via gnome_icon_list_set_icon_data() and - gnome_icon_list_get_icon_data(). With #GtkIconView such data is most - conveniently stored in an extra column in the tree model, so you would - call a function like - - void - set_icon_data (GtkIconView *icon_view, - gint idx, - gpointer data) - { - GtkTreeModel *model; - GtkTreeIter iter; - - model = gtk_icon_view_get_model (icon_view); - - if (gtk_tree_model_iter_nth_child (model, &iter, NULL, idx)) - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - DATA_COLUMN, data, -1); - } - - assuming that your tree model has a DATA_COLUMN of type - %G_TYPE_POINTER. - - - - There is a number of minor API differences between - GnomeIconList and - GtkIconView: - - - GnomeIconListMode is replaced by the - orientation - property of GtkIconView - - - GtkIconView can not be frozen in the same - way as GnomeIconList can with - gnome_icon_list_freeze() and gnome_icon_list_thaw(). Instead you can - replace the whole model of a GtkIconView, - instead of doing many small changes to the existing model. - - - - - - diff --git a/docs/reference/gtk/migrating-GtkLabel-links.sgml b/docs/reference/gtk/migrating-GtkLabel-links.sgml deleted file mode 100644 index 350aa8fb3f..0000000000 --- a/docs/reference/gtk/migrating-GtkLabel-links.sgml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Migrating from SexyUrlLabel to GtkLabel - - - GTK+ 2.18 supports showing links inside a #GtkLabel, similar to - SexyUrlLabel. Porting from SexyUrlLabel to GtkLabel is relatively - straightforward. GtkLabel accepts links in the markup using the - same HTML a notation that SexyUrlLabel uses. In addition - to the href attribute, GtkLabel accepts a title attribute that - is displayed as a tooltip on the link. Instead of - sexy_url_label_set_markup(), just call gtk_label_set_markup(). - - - One difference between the two APIs is that the ::url-activated signal - from SexyUrlLabel has been replaced by the #GtkLabel::activate-link - signal. The need for connecting to this signal is greatly reduced, - since GtkLabel has a default handler that calls gtk_show_uri(). - - diff --git a/docs/reference/gtk/migrating-GtkLinkButton.sgml b/docs/reference/gtk/migrating-GtkLinkButton.sgml deleted file mode 100644 index a4c003e05a..0000000000 --- a/docs/reference/gtk/migrating-GtkLinkButton.sgml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - Migrating from GnomeHRef to GtkLinkButton - - - Since version 2.10, GTK+ provides the #GtkLinkButton widget as a - replacement for the GnomeHRef widget - in the libgnomeui library. - - - - Porting an application from GnomeHRef to - #GtkLinkButton is very simple. #GtkLinkButton does not have a - default action for #GtkButton::clicked signal. So instead of simply - creating the widget - - GtkWidget *button; - - button = gnome_href_new (url, ""); - - you will have to handle the activation of the #GtkLinkButton, using - the ::clicked signal for instance - - static void - link_button_clicked_cb (GtkWidget *widget, - gpointer data) - { - const gchar *link; - - link = gtk_link_button_get_uri (GTK_LINK_BUTTON (widget)); - open_browser_at_url (link); - } - - /* ... */ - - GtkWidget *button; - - button = gtk_link_button_new (url); - g_signal_connect (button, "clicked", - G_CALLBACK (link_button_clicked_cb), NULL); - - If you have more than one #GtkLinkButton instead of connecting - a signal to each one, you can use a "hook function" which will be - called whenever a user activates a link button - - static void - link_button_hook (GtkLinkButton *button, - const gchar *link, - gpointer user_data) - - { - open_browser_at_url (link); - } - - /* ... */ - - GtkWidget *button1 = gtk_link_button_new (uri1); - GtkWidget *button2 = gtk_link_button_new (uri2); - - gtk_link_button_set_uri_hook (link_button_hook, NULL, NULL); - - - - - - Starting with GTK+ 2.16, it is no longer necessary to set up a uri hook - manually, since GTK+ now defaults to calling gtk_show_uri() if no uri - hook has been set. - - - - diff --git a/docs/reference/gtk/migrating-GtkRecentChooser.sgml b/docs/reference/gtk/migrating-GtkRecentChooser.sgml deleted file mode 100644 index 039c461a6c..0000000000 --- a/docs/reference/gtk/migrating-GtkRecentChooser.sgml +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - Emmanuele - Bassi - -
- ebassi@gmail.com -
-
-
-
- - Migrating from EggRecent to GtkRecentChooser - - - Since version 2.10, GTK+ provides a way of handling the recently used - documents. It is similar to the code that has lived inside the libegg - library and has been incorporated by many applications. The GTK+ version - aims to completely replace that code, and offers many distinctive features - that improve the registration and visualization of the recently used - documents, such as: - - - - - - Better performances while reading and writing the list of recently used - files - - - More meta-data available for each recent document, like the - applications that have registered a document inside the list, the last - time and the number of times the same application did register a - document inside the list, an optional user readable name and - description of the document - - - Improved the ability to sort and filter the documents, also using - custom sorting and filtering functions - - - New widgets for displaying the list, and better integration with - current #GtkFileChooser and #GtkUIManager widgets - - - - -
- Managing the Recently Used Documents - - - #GtkRecentManager is used to manage the Recently Used Documents. To - create a new #GtkRecentManager, you simply call gtk_recent_manager_new(). - Like the EggRecentModel inside EggRecent, the - #GtkRecentManager loads the list of the recent documents and notifies - you of changes inside the list. - - - - Usually, instead of creating a new #GtkRecentManager each time you - need it, you'll want to use the gtk_recent_manager_get_default() - function. - - - - To add a document to the list, you can use gtk_recent_manager_add_item(), - like: - - GtkRecentManager *manager; - - manager = gtk_recent_manager_new (); - - if (!gtk_recent_manager_add_item (manager, document_uri)) - { - /* warn about the error */ - } - - g_object_unref (manager); - - The gtk_recent_manager_add_item() function will try and guess some of the - meta-data associated to a URI. If you know some of meta-data about the - document yourself, set the desired fields of a #GtkRecentData structure - and pass it to the gtk_recent_manager_add_full() function instead: - - GtkRecentManager *manager; - GtkRecentData *recent_data; - - manager = gtk_recent_manager_new (); - - recent_data = g_new0 (GtkRecentData, 1); - /* the user visible name of the document (maybe its title); should - * be preferred when displaying the item into the list - */ - recent_data->display_name = document_name; - - /* the MIME type is mandatory */ - recent_data->mime_type = document_mime_type; - - /* the name of the application that is registering the document - * (also mandatory); usually, the same name you used with - * the g_set_application_name () function. - */ - recent_data-&app_name = APP_NAME; - - /* the command to open a file; the %u string will be automagically - * expanded to the document's URI when getting the application's - * command line from the GtkRecentInfo object with - * gtk_recent_info_get_application_info () - */ - recent_data-&app_exec = g_strjoin (" ", g_get_prgname (), "--open-file", "%u", NULL); - - if (!gtk_recent_manager_add_full (manager, document_uri, recent_data)) - { - /* warn about the error */ - } - - g_free (recent_data->app_exec); - g_free (recent_data); - g_object_unref (manager); - - - - - Getting the list of items is also similar to - EggRecentModel; the GtkRecentInfo data is - allocated at look up time in order not to waste memory keeping it - around, so you must remember to free the data inside the list and then - the list itself when you are done using it: - - GtkRecentManager *manager; - GList *recent_items, *l; - - manager = gtk_recent_manager_get_default(); - - recent_items = gtk_recent_manager_get_items (manager); - for (l = recent_items; l != NULL; l = l->next) - { - GtkRecentInfo *recent_info = l->data; - - do_something_with_the_item (recent_info); - } - - /* free everything and the list */ - g_list_foreach (recent_items, (GFunc) gtk_recent_info_unref, NULL); - g_list_free (recent_items); - - You can also look up a single item: - - GtkRecentInfo *recent_info; - GError *error = NULL; - - recent_info = gtk_recent_manager_lookup_item (manager, document_uri, &error); - if (error) - { - display_error (error); - - g_error_free (error); - } - else - { - do_something_with_the_item (recent_info); - - gtk_recent_info_unref (recent_info); - } - - The #GtkRecentInfo is a reference counted boxed type, and it holds all - the meta-data of a recently used document, like its display name, its - description, the list of each application that has registered the - document or the list of groups to which the document belong. - - -
- -
- Displaying the Recently Used Documents - - - Displaying the Recently Used Documents list is handled by any widget - implementing the #GtkRecentChooser interface. These widgets also handle - the sorting and filtering of the list; they will create their own - #GtkRecentManager objects by default: - - GtkWidget *chooser; - gint response; - - /* create a new dialog with the recently used documents list shown - * using a GtkTreeView widget - */ - chooser = gtk_recent_chooser_dialog_new ("Recent Documents", - parent_window, - GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_OK, - NULL); - /* set the sorting order to "most recently used first" */ - gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_MRU); - response = gtk_dialog_run (GTK_DIALOG (chooser)); - if (response == GTK_RESPONSE_OK) - { - GtkRecentInfo *info; - - info = gtk_recent_chooser_get_current_item (GTK_RECENT_CHOOSER (chooser)); - do_something_with_the_item (info); - - gtk_recent_info_unref (info); - } - - gtk_widget_destroy (chooser); - - - -
- -
- Advanced usage - - - The #GtkRecentChooser widgets might display items sorted and filtered, - either with already supplied or custom sorting and filtering functions. - The biggest difference from the EggRecentView - widgets in EggRecent is that the #GtkRecentChooser widgets will use - their own copy of the list and will apply the sorting and filtering - functions only on the copy; this allows the creation of many viewers - with a single controller, like using many #GtkTreeView with a single - #GtkTreeModel instance. - - - - Available sorting methods are: - - /* no sorting */ - gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_NONE); - - /* most recently used first */ - gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_MRU); - - /* most recently used last */ - gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), GTK_RECENT_SORT_LRU); - - You can create your own sorting function, and the use the - GTK_RECENT_SORT_CUSTOM method: - - /* custom sorting function, based on the registration count - * (most used first) - */ - static void - sort_by_usage_count (GtkRecentInfo *a, - GtkRecentInfo *b, - gpointer data) - { - gint count_a, count_b; - - count_a = count_b = 0; - - if (gtk_recent_info_has_application (a, APP_NAME)) - gtk_recent_info_get_application_info (a, APP_NAME, NULL, &count_a, NULL); - - if (gtk_recent_info_has_application (b, APP_NAME)) - gtk_recent_info_get_application_info (b, APP_NAME, NULL, &count_b, NULL); - - return count_a < count_b; - } - - ... - - /* set custom sorting and set the custom sorting function */ - gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (chooser), - GTK_RECENT_SORT_CUSTOM); - gtk_recent_chooser_set_sort_func (GTK_RECENT_CHOOSER, - sort_by_usage_count, - NULL, /* sort function data */ - NULL /* destroy notify for the data */); - - - - - Filtering is done using the #GtkRecentFilter object, similar to the - #GtkFileFilter object used by the #GtkFileChooser widgets. The - #GtkRecentFilter object has a set of pre-defined options based on the - meta-data exposed by the #GtkRecentInfo object. It also allows custom - filtering function: - - GtkRecentFilter *filter; - - filter = gtk_recent_filter_new (); - - /* set the user visible name of the filter */ - gtk_recent_filter_set_name (filter, "Since Last Month"); - - /* set the maximum age of a recently used document */ - gtk_recent_filter_set_age (filter, 31); - - /* the chooser takes the ownership of the object */ - gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (chooser), filter); - - /* set the currently used filter */ - gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER (chooser), filter); - - filter = gtk_recent_filter_new (); - gtk_recent_filter_set_name (filter, "Every text file"); - gtk_recent_filter_set_mime_type (filter, "text/plain"); - - gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (chooser), filter); - - The #GtkRecentChooserWidget and #GtkRecentChooserDialog widgets allow - multiple filters and the selection of an appropriate one; the - #GtkRecentChooserMenu widget allows just a single filter object. - - -
- -
- - diff --git a/docs/reference/gtk/migrating-GtkStyleContext.xml b/docs/reference/gtk/migrating-GtkStyleContext.xml index 775fee0545..42ede40768 100644 --- a/docs/reference/gtk/migrating-GtkStyleContext.xml +++ b/docs/reference/gtk/migrating-GtkStyleContext.xml @@ -1,9 +1,9 @@ - - - Migrating from GtkStyle to GtkStyleContext +
+ Theming changes In GTK+ 3.0, #GtkStyleContext was added to replace #GtkStyle and @@ -14,7 +14,7 @@ porting applications, libraries and widgets. - +
Migrating themes @@ -27,9 +27,9 @@ with possible variants such as the dark theme being named gtk-dark.css in the same directory. - +
- +
Migrating theme engines @@ -141,9 +141,9 @@ attempt to handle. - +
- +
Extending the CSS parser @@ -175,9 +175,9 @@ style property can be modified in CSS as -GtkWidget-focus-line-width. - +
- +
Using the CSS file format @@ -358,6 +358,15 @@ independently. + + In the same vein, the light, dark and mid color variants that + were available in GtkStyle should be replaced by a combination of + symbolic colors and custom CSS, where necessary. text_aa should + really not be used anywhere, anyway, and the white and black colors + that were available in GtkStyle can just be replaced by literal + GdkRGBA structs. + + Access to colors has also changed a bit. With #GtkStyle, the common way to access colors is: @@ -393,9 +402,9 @@ It is worth mentioning that the new file format does not support custom keybindings nor stock icon mappings as the RC format did. - +
- +
A checklist for widgets @@ -486,15 +495,34 @@ - Replace all gtk_paint_*() calls with corresponding - gtk_render_*() calls. The most distinctive changes - are the use of #GtkStateFlags to represent the widget state and the - lack of #GtkShadowType. For gtk_render_check() and gtk_render_option(), - the @shadow_type parameter is replaced by the #GTK_STATE_FLAG_ACTIVE - and #GTK_STATE_FLAG_INCONSISTENT state flags. For things such as - pressed/unpressed button states, #GTK_STATE_FLAG_ACTIVE is used, and - the CSS may style normal/active states differently to render - outset/inset borders, respectively. + + Replace all gtk_paint_*() calls with corresponding + gtk_render_*() calls. + + + The most distinctive changes are the use of #GtkStateFlags to + represent the widget state and the lack of #GtkShadowType. Note + that widget state is now passed implicitly via the context, so + to render in a certain state, you have to temporarily set the + state on the context, as in the following example: + + + Rendering with a specific state + + gtk_style_context_save (context); + gtk_style_context_set_state (context, GTK_STATE_FLAG_ACTIVE); + gtk_render_check (context, cr, x, y, width, height); + gtk_style_context_restore (context); + + + + For gtk_render_check() and gtk_render_option(), the @shadow_type + parameter is replaced by the #GTK_STATE_FLAG_ACTIVE and + #GTK_STATE_FLAG_INCONSISTENT state flags. For things such as + pressed/unpressed button states, #GTK_STATE_FLAG_ACTIVE is used, + and the CSS may style normal/active states differently to render + outset/inset borders, respectively. + @@ -515,9 +543,9 @@ of this is merely a guideline. Widgets may choose to follow it or not. - +
- +
Parsing of custom resources As a consequence of the RC format going away, calling gtk_rc_parse() or @@ -528,15 +556,32 @@ Typically, the provider will be a #GtkCssProvider, which parse CSS information from a file or from a string. + + Using a custom GtkStyleProvider + + GtkStyleContext *context; + GtkCssProvider *provider; + context = gtk_widget_get_style_context (widget); + provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), + ".frame1 {\n" + " border-image: url('gradient1.png') 10 10 10 10 stretch;\n" + "}\n", -1, NULL); + gtk_style_context_add_provider (context, + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref (provider); + + Notice that you can also get style information from custom resources by implementing the #GtkStyleProvider interface yourself. This is an advanced feature that should be rarely used. - +
- +
Bonus points @@ -627,5 +672,5 @@ - - +
+
diff --git a/docs/reference/gtk/migrating-GtkTooltip.sgml b/docs/reference/gtk/migrating-GtkTooltip.sgml deleted file mode 100644 index 56b2a7d18f..0000000000 --- a/docs/reference/gtk/migrating-GtkTooltip.sgml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - Migrating from GtkTooltips to GtkTooltip - - - GTK+ 2.12 brings a completely new tooltip implementation which - allows many things that were not possible with the old - #GtkTooltips interface. The new possibilities are explained - in more detail in the section about #GtkTooltip. - - - - A number of complications of the old API have been removed: - - - - Tooltips can not be grouped anymore. The old tooltips - API allowed this by using multiple #GtkTooltips objects. - We believe that the timeout behaviour of the new tooltips - implementation is better and makes it unnecessary to use - grouping as a way to overcome shortcomings of the - fast-tooltips mode. - - - - Timeouts can not be set individually anymore. Instead - there are settings #GtkSettings:gtk-tooltip-timeout, - #GtkSettings:gtk-tooltip-browse-timeout and - #GtkSettings:gtk-tooltip-browse-mode-timeout to influence - the behaviour of tooltips globally. - - - - - - - Here is an example of setting a tooltip on a widget with the old API: - -GtkTooltips *tooltips = gtk_tooltips_new (); -gtk_tooltips_set_tip (tooltips, widget, "Some tips", NULL); - - - - Using the new tooltips API, it is no longer necessary to create - an object: - -gtk_widget_set_tooltip_text (widget, "Some tips"); - - - - Similarly, setting a tooltip on a #GtkToolItem gets - simplified from - -gtk_tool_item_set_tooltip (toolitem, toolbar->tooltips, "tool tip", NULL); - - to - -gtk_tool_item_set_tooltip_text (toolitem, text); - - - - diff --git a/docs/reference/gtk/other_software.sgml b/docs/reference/gtk/other_software.sgml index 052f6c6e27..4b413a2b45 100644 --- a/docs/reference/gtk/other_software.sgml +++ b/docs/reference/gtk/other_software.sgml @@ -2,7 +2,7 @@ - + Mixing GTK+ with other software 3 diff --git a/docs/reference/gtk/question_index.sgml b/docs/reference/gtk/question_index.sgml index 8b9c3c0f8c..b633a48f4d 100644 --- a/docs/reference/gtk/question_index.sgml +++ b/docs/reference/gtk/question_index.sgml @@ -35,8 +35,8 @@ How do I get started with GTK+? -The GTK+ website offers a -tutorial and a +The GTK+ website offers a +tutorial and a FAQ. More documentation ranging from whitepapers to online books can be found at the GNOME developer's site. @@ -47,7 +47,7 @@ this reference manual for details. -Where can I get help with GTK+, submit a bug report, or make a feature +Where can I get help with GTK+, submit a bug report, or make a feature request? @@ -102,11 +102,11 @@ state (explained in its documentation). -For strings returned from functions, they will be declared "const" (using -#G_CONST_RETURN) if they should not be freed. Non-const strings should be -freed with g_free(). Arrays follow the same rule. (If you find an exception -to the rules, please report a bug to http://bugzilla.gnome.org.) +For strings returned from functions, they will be declared "const" (using +#G_CONST_RETURN) if they should not be freed. Non-const strings should be +freed with g_free(). Arrays follow the same rule. If you find an +undocumented exception to the rules, please report a bug to http://bugzilla.gnome.org. @@ -164,8 +164,8 @@ How do I use GTK+ with threads? -This is covered in the GDK threads -documentation. See also the GThread +This is covered in the GDK threads +documentation. See also the GThread documentation for portable threading primitives. @@ -182,33 +182,37 @@ How do I internationalize a GTK+ program? Most people use GNU gettext, already required in order to install GLib. On a UNIX -or Linux system with gettext installed, type info gettext +or Linux system with gettext installed, type info gettext to read the documentation. -The short checklist on how to use gettext is: call bindtextdomain() so gettext -can find the files containing your translations, call textdomain() to set the -default translation domain, call bind_textdomain_codeset() to request that -all translated strings are returned in UTF-8, then call gettext() to look up -each string to be translated in the default domain. +The short checklist on how to use gettext is: call bindtextdomain() so +gettext can find the files containing your translations, call textdomain() +to set the default translation domain, call bind_textdomain_codeset() to +request that all translated strings are returned in UTF-8, then call +gettext() to look up each string to be translated in the default domain. + + +gi18n.h provides the following shorthand macros for +convenience. Conventionally, people define macros as follows for convenience: - #define _(x) gettext (x) - #define N_(x) x + #define _(x) gettext (x) + #define N_(x) x + #define C_(ctx,x) pgettext (ctx, x) -You use N_() (N stands for no-op) to mark a string for translation in a -context where a function call to gettext() is not allowed, such as in an -array initializer. -You eventually have to call gettext() on the string to actually fetch the -translation. _() both marks the string for translation and actually +You use N_() (N stands for no-op) to mark a string for translation in +a location where a function call to gettext() is not allowed, such as +in an array initializer. +You eventually have to call gettext() on the string to actually fetch +the translation. _() both marks the string for translation and actually translates it. - - -Nowadays, GLib provides the common shorthand macros in the header file -gi18n.h, so you don't have to define them yourself, -just include that header. +The C_() macro (C stands for context) adds an additional context to +the string that is marked for translation, which can help to disambiguate +short strings that might need different translations in different +parts of your program. Code using these macros ends up looking like this: @@ -231,21 +235,21 @@ Code using these macros ends up looking like this: -Libraries using gettext should use dgettext() instead of gettext(), which -allows them to specify the translation domain each time they ask for a -translation. Libraries should also avoid calling textdomain(), since they -will be specifying the domain instead of using the default. For dgettext() -the _() macro can be defined as: - - - #define _(x) dgettext ("MyDomain", x) - - +Libraries using gettext should use dgettext() instead of gettext(), which +allows them to specify the translation domain each time they ask for a +translation. Libraries should also avoid calling textdomain(), since +they will be specifying the domain instead of using the default. -Again, GLib comes with the gi18n-lib.h, saving you the -trouble of defining the macros by hand. The macros in that header expect the -translation domain to be specified by the %GETTEXT_PACKAGE macro. +With the convention that the macro GETTEXT_PACKAGE is +defined to hold your libraries translation domain, +gi18n-lib.h can be included to provide +the following convenience: + + + #define _(x) dgettext (GETTEXT_PACKAGE, x) + + @@ -259,9 +263,9 @@ How do I use non-ASCII characters in GTK+ programs ? -GTK+ uses Unicode (more exactly -UTF-8) for all text. UTF-8 encodes each Unicode codepoint as a sequence of -one to six bytes and has a number of nice properties which make it a good +GTK+ uses Unicode (more exactly +UTF-8) for all text. UTF-8 encodes each Unicode codepoint as a sequence of +one to six bytes and has a number of nice properties which make it a good choice for working with Unicode text in C programs: @@ -271,30 +275,30 @@ ASCII characters are encoded by their familiar ASCII codepoints. ASCII characters never appear as part of any other character. -The zero byte doesn't occur as part of a character, so that UTF-8 strings -can be manipulated with the usual C library functions for handling +The zero byte doesn't occur as part of a character, so that UTF-8 strings +can be manipulated with the usual C library functions for handling zero-terminated strings. -More information about Unicode and UTF-8 can be found in the -UTF-8 and Unicode i +More information about Unicode and UTF-8 can be found in the +UTF-8 and Unicode FAQ for Unix/Linux. GLib provides functions for converting strings between UTF-8 and other encodings, see g_locale_to_utf8() and g_convert(). Text coming from external sources (e.g. files or user input), has to be -converted to UTF-8 before being handed over to GTK+. The following example -writes the content of a IS0-8859-1 encoded text file to +converted to UTF-8 before being handed over to GTK+. The following example +writes the content of a IS0-8859-1 encoded text file to stdout: gchar *text, *utf8_text; gsize length; GError *error = NULL; -if (g_file_get_contents (filename, &text, &length, NULL)) +if (g_file_get_contents (filename, &text, &length, NULL)) { - utf8_text = g_convert (text, length, "UTF-8", "ISO-8859-1", + utf8_text = g_convert (text, length, "UTF-8", "ISO-8859-1", NULL, NULL, &error); if (error != NULL) { @@ -304,7 +308,7 @@ if (g_file_get_contents (filename, &text, &length, NULL)) else g_print (utf8_text); } -else +else fprintf (stderr, "Unable to read file %s\n", filename); @@ -315,36 +319,37 @@ handling non-ASCII content: direct UTF-8 If your editor and compiler are capable of handling UTF-8 encoded sources, -it is very convenient to simply use UTF-8 for string literals, since it allows -you to edit the strings in "wysiwyg". Note that choosing this option may -reduce the portability of your code. +it is very convenient to simply use UTF-8 for string literals, since it +allows you to edit the strings in "wysiwyg". Note that choosing this option +may reduce the portability of your code. escaped UTF-8 -Even if your toolchain can't handle UTF-8 directly, you can still encode string -literals in UTF-8 by using octal or hexadecimal escapes like -\212 or \xa8 to -encode each byte. This is portable, but modifying the escaped strings is not -very convenient. Be careful when mixing hexadecimal escapes with ordinary text; +Even if your toolchain can't handle UTF-8 directly, you can still encode +string literals in UTF-8 by using octal or hexadecimal escapes like +\212 or \xa8 to encode each byte. +This is portable, but modifying the escaped strings is not very convenient. +Be careful when mixing hexadecimal escapes with ordinary text; "\xa8abcd" is a string of length 1 ! runtime conversion -If the string literals can be represented in an encoding which your toolchain -can handle (e.g. IS0-8859-1), you can write your source files in that encoding -and use g_convert() to convert the strings to UTF-8 at runtime. Note that this -has some runtime overhead, so you may want to move the conversion out of inner -loops. +If the string literals can be represented in an encoding which your +toolchain can handle (e.g. IS0-8859-1), you can write your source files +in that encoding and use g_convert() to convert the strings to UTF-8 at +runtime. Note that this has some runtime overhead, so you may want to move +the conversion out of inner loops. -Here is an example showing the three approaches using the copyright sign -© which has Unicode and ISO-8859-1 codepoint 169 and is represented in -UTF-8 by the two bytes 194, 169: +Here is an example showing the three approaches using the copyright sign +© which has Unicode and ISO-8859-1 codepoint 169 and is represented +in UTF-8 by the two bytes 194, 169, or "\302\251" as +a string literal: g_print ("direct UTF-8: ©"); g_print ("escaped UTF-8: \302\251"); @@ -368,9 +373,9 @@ How do I use GTK+ with C++? -There are two ways to approach this. The GTK+ header files use the subset -of C that's also valid C++, so you can simply use the normal GTK+ API -in a C++ program. Alternatively, you can use a "C++ binding" +There are two ways to approach this. The GTK+ header files use the subset +of C that's also valid C++, so you can simply use the normal GTK+ API +in a C++ program. Alternatively, you can use a "C++ binding" such as gtkmm which provides a native C++ API. @@ -380,20 +385,20 @@ connected to signals, not methods. So you will need to use global functions or "static" class functions for signal connections. -Another common issue when using GTK+ directly is that -C++ will not implicitly convert an integer to an enumeration. +Another common issue when using GTK+ directly is that +C++ will not implicitly convert an integer to an enumeration. This comes up when using bitfields; in C you can write the following code: - gdk_window_set_events (gdk_window, + gdk_window_set_events (gdk_window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); while in C++ you must write: - gdk_window_set_events (gdk_window, + gdk_window_set_events (gdk_window, (GdkEventMask) GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); @@ -427,19 +432,19 @@ How do I load an image or animation from a file? -To load an image file straight into a display widget, use -gtk_image_new_from_file() If the file load fails, -gtk_image_new_from_file() will display no image graphic — to detect -a failed load yourself, use gdk_pixbuf_new_from_file() directly, then -gtk_image_new_from_pixbuf().. +To load an image file straight into a display widget, use +gtk_image_new_from_file() If the file load fails, +gtk_image_new_from_file() will display no image graphic — to detect +a failed load yourself, use gdk_pixbuf_new_from_file() directly, then +gtk_image_new_from_pixbuf().. To load an image for another purpose, use gdk_pixbuf_new_from_file(). To i load an animation, use gdk_pixbuf_animation_new_from_file(). -gdk_pixbuf_animation_new_from_file() can also load non-animated images, so -use it in combination with gdk_pixbuf_animation_is_static_image() to load a -file of unknown type. +gdk_pixbuf_animation_new_from_file() can also load non-animated images, so +use it in combination with gdk_pixbuf_animation_is_static_image() to load a +file of unknown type. -To load an image or animation file asynchronously (without blocking), use +To load an image or animation file asynchronously (without blocking), use #GdkPixbufLoader. @@ -453,19 +458,17 @@ How do I draw text ? -To draw a piece of text, use a Pango layout and gdk_draw_layout(), -using code like the following: +To draw a piece of text, use a Pango layout and pango_cairo_show_layout(). layout = gtk_widget_create_pango_layout (widget, text); fontdesc = pango_font_description_from_string ("Luxi Mono 12"); - pango_layout_set_font_description (layout, fontdesc); - gdk_draw_layout (..., layout); + pango_layout_set_font_description (layout, fontdesc); + pango_cairo_show_layout (cr, layout); pango_font_description_free (fontdesc); g_object_unref (layout); -Do not use the deprecated #GdkFont and gdk_draw_text(). @@ -486,19 +489,18 @@ How do I measure the size of a piece of text ? -To obtain the size of a piece of text, use a Pango layout and +To obtain the size of a piece of text, use a Pango layout and pango_layout_get_pixel_size(), using code like the following: layout = gtk_widget_create_pango_layout (widget, text); fontdesc = pango_font_description_from_string ("Luxi Mono 12"); - pango_layout_set_font_description (layout, fontdesc); + pango_layout_set_font_description (layout, fontdesc); pango_layout_get_pixel_size (layout, &width, &height); pango_font_description_free (fontdesc); g_object_unref (layout); -Do not use the deprecated function gdk_text_width(). @@ -512,21 +514,21 @@ section of Pango manua -Why are types not registered if I use their GTK_TYPE_BLAH +Why are types not registered if I use their GTK_TYPE_BLAH macro ? -The GTK_TYPE_BLAH macros are defined as calls to +The GTK_TYPE_BLAH macros are defined as calls to gtk_blah_get_type(), and the _get_type() i functions are declared as %G_GNUC_CONST which allows the compiler to optimize the call away if it appears that the value is not being used. -A common workaround for this problem is to store the result in a volatile +A common workaround for this problem is to store the result in a volatile variable, which keeps the compiler from optimizing the call away. volatile GType dummy = GTK_TYPE_BLAH; @@ -545,28 +547,29 @@ How do I create a transparent toplevel window ? To make a window transparent, it needs to use a visual which supports that. -This is done by getting the RGBA colormap of the screen with -gdk_screen_get_rgba_colormap() and setting it on the window. Note that -gdk_screen_get_rgba_colormap() will return %NULL if transparent windows -are not supported on the screen; also note that this may change from -screen to screen, so it needs to be repeated whenever the window is moved -to a different screen. +This is done by getting the RGBA visual of the screen with +gdk_screen_get_rgba_visual() and setting it on the window. Note that +gdk_screen_get_rgba_visual() will return %NULL if transparent windows +are not supported on the screen, you should fall back to +gdk_screen_get_system_visual() in that case. Additionally, note that this +will change from screen to screen, so it needs to be repeated whenever the +window is moved to a different screen. -GdkColormap *colormap; +GdkVisual *visual; -colormap = gdk_screen_get_rgba_colormap (screen); -if (!colormap) - colormap = gdk_screen_get_rgb_colormap (screen); +visual = gdk_screen_get_rgba_visual (screen); +if (visual == NULL) + visual = gdk_screen_get_system_visual (screen); -gtk_widget_set_colormap (widget, colormap); +gtk_widget_set_visual (GTK_WIDGET (window), visual); -One possibility to fill the alpha channel on the window is to use -gdk_draw_rgb_32_image(). +To fill the alpha channel on the window simply use cairos +RGBA drawing capabilities. Note that the presence of an RGBA visual is no guarantee that the -window will actually appear transparent on screen. On X11, this -requires a compositing manager to be running. See +window will actually appear transparent on screen. On X11, this +requires a compositing manager to be running. See gtk_widget_is_composited() for a way to find out if the alpha channel will be respected. @@ -585,10 +588,8 @@ channel will be respected. See tree widget overview — you -should use the #GtkTreeView widget. (A list is just a tree with no branches, -so the tree widget is used for lists as well.) Do not use the deprecated -widgets #GtkTree or #GtkCList/#GtkCTree in newly-written code, they are -less flexible and result in an inferior user interface. +should use the #GtkTreeView widget. (A list is just a tree with no branches, +so the tree widget is used for lists as well). @@ -601,12 +602,11 @@ less flexible and result in an inferior user interface. See text widget overview — you -should use the #GtkTextView widget. Do not use the deprecated widget #GtkText -in newly-written code, it has a number of problems that are best avoided. +should use the #GtkTextView widget. -If you only have a small amount of text, #GtkLabel may also be appropriate -of course. It can be made selectable with gtk_label_set_selectable(). For a +If you only have a small amount of text, #GtkLabel may also be appropriate +of course. It can be made selectable with gtk_label_set_selectable(). For a single-line text entry, see #GtkEntry. @@ -620,8 +620,8 @@ single-line text entry, see #GtkEntry. -#GtkImage can display images in just about any format GTK+ understands. -You can also use #GtkDrawingArea if you need to do something more complex, +#GtkImage can display images in just about any format GTK+ understands. +You can also use #GtkDrawingArea if you need to do something more complex, such as draw text or graphics over the top of the image. @@ -637,7 +637,8 @@ would use a combo box? With GTK+, a #GtkComboBox is the recommended widget to use for this use case. This widget looks like either a combo box or the current option menu, depending -on the current theme. If you need an editable text entry, use #GtkComboBoxEntry. +on the current theme. If you need an editable text entry, use the +#GtkComboBox:has-entry property. @@ -652,17 +653,14 @@ How do I change the color of a widget? -See gtk_widget_modify_fg(), gtk_widget_modify_bg(), gtk_widget_modify_base(), -and gtk_widget_modify_text(). See GTK+ -resource files for more discussion. You can also change widget color -by installing a resource file and parsing it with gtk_rc_add_default_file(). -The advantage of a resource file is that users can then override the -color you've chosen. +See gtk_widget_override_color() and gtk_widget_override_background_color(). +You can also change the appearance of a widget by installing a +custom style provider, see gtk_style_context_add_provider(). -To change the background color for widgets such as #GtkLabel that have -no background, place them in a #GtkEventBox and set the background of the -event box. +To change the background color for widgets such as #GtkLabel that +have no background, place them in a #GtkEventBox and set the background +of the event box. @@ -672,35 +670,38 @@ How do I change the font of a widget? -This has several possible answers, depending on what exactly you want to -achieve. One option is gtk_widget_modify_font(). Note that this function -can be used to change only the font size, as in the following example: - +This has several possible answers, depending on what exactly you want to +achieve. One option is gtk_widget_override_font(). + PangoFontDesc *font_desc = pango_font_description_new (); pango_font_description_set_size (font_desc, 40); - gtk_widget_modify_font (widget, font); + gtk_widget_override_font (widget, font); pango_font_description_free (font_desc); - + -If you want to make the text of a label larger, you can use +If you want to make the text of a label larger, you can use gtk_label_set_markup(): - + gtk_label_set_markup (label, "<big>big text</big>"); - -This is preferred for many apps because it's a relative size to the -user's chosen font size. See g_markup_escape_text() if you are + +This is preferred for many apps because it's a relative size to the +user's chosen font size. See g_markup_escape_text() if you are constructing such strings on the fly. You can also change the font of a widget by putting - gtk-font-name = "Sans 30" + .my-widget-class { + font: Sans 30; + } -in a resource file and parsing it with gtk_rc_add_default_file(). -The advantage of a resource file is that users can then override the font you -have chosen. See GTK+ resource files -for more discussion. +in a CSS file, loading it with gtk_css_provider_load_from_file(), and +adding the provider with gtk_style_context_add_provider_for_screen(). +To associate this style information with your widget, set a style class +on its #GtkStyleContext using gtk_style_context_add_class(). +The advantage of this approach is that users can then override the font +you have chosen. See the #GtkStyleContext documentation for more discussion. @@ -710,8 +711,9 @@ for more discussion. How do I disable/ghost/desensitize a widget? - In GTK+ a disabled widget is termed "insensitive." See -gtk_widget_set_sensitive(). + +In GTK+ a disabled widget is termed "insensitive." +See gtk_widget_set_sensitive(). @@ -750,14 +752,14 @@ How do I make a text widget display its complete contents in a specific font? -If you use gtk_text_buffer_insert_with_tags() with appropriate tags to select -the font, the inserted text will have the desired appearance, but text typed -in by the user before or after the tagged block will appear in the default -style. +If you use gtk_text_buffer_insert_with_tags() with appropriate tags to +select the font, the inserted text will have the desired appearance, but +text typed in by the user before or after the tagged block will appear in +the default style. -To ensure that all text has the desired appearance, use gtk_widget_modify_font() -to change the default font for the widget. +To ensure that all text has the desired appearance, use +gtk_widget_override_font() to change the default font for the widget. @@ -774,17 +776,17 @@ A good way to keep a text buffer scrolled to the end is to place a mark at the end of the buffer, and give it right gravity. The gravity has the effect that text inserted at the mark gets inserted before, keeping the mark -at the end. +at the end. - + To ensure that the end of the buffer remains visible, use gtk_text_view_scroll_to_mark() to scroll to the mark after inserting new text. -The gtk-demo application contains an example of this technique. +The gtk-demo application contains an example of this technique. @@ -801,25 +803,10 @@ How do I associate some data with a row in the tree? -Remember that the #GtkTreeModel columns don't necessarily have to be displayed. -So you can put non-user-visible data in your model just like any other data, -and retrieve it with gtk_tree_model_get(). See the -tree widget overview. - - - - - - -What's the #GtkTreeView equivalent of gtk_clist_find_row_from_data()? - - - - -As there is no separate data column in the #GtkTreeModel, there's no -built in function to find the iter from data. You can write a custom -searching function to walk the tree and find the data, or use -gtk_tree_model_foreach(). +Remember that the #GtkTreeModel columns don't necessarily have to be +displayed. So you can put non-user-visible data in your model just +like any other data, and retrieve it with gtk_tree_model_get(). +See the tree widget overview. @@ -831,9 +818,9 @@ How do I put an image and some text in the same column? -You can pack more than one #GtkCellRenderer into a single #GtkTreeViewColumn -using gtk_tree_view_column_pack_start() or gtk_tree_view_column_pack_end(). -So pack both a #GtkCellRendererPixbuf and a #GtkCellRendererText into the +You can pack more than one #GtkCellRenderer into a single #GtkTreeViewColumn +using gtk_tree_view_column_pack_start() or gtk_tree_view_column_pack_end(). +So pack both a #GtkCellRendererPixbuf and a #GtkCellRendererText into the column. @@ -841,15 +828,15 @@ column. -I can set data easily on my #GtkTreeStore/#GtkListStore models using +I can set data easily on my #GtkTreeStore/#GtkListStore models using gtk_list_store_set() and gtk_tree_store_set(), but can't read it back? Both the #GtkTreeStore and the #GtkListStore implement the #GtkTreeModel -interface. Consequentially, the can use any function this interface -implements. The easiest way to read a set of data back is to use +interface. Consequentially, you can use any function this interface +implements. The easiest way to read a set of data back is to use gtk_tree_model_get(). @@ -861,14 +848,14 @@ How do I change the way that numbers are formatted by #GtkTreeView? Use gtk_tree_view_insert_column_with_data_func() -or gtk_tree_view_column_set_cell_data_func() and do the conversion from i -number to string yourself (with, say, g_strdup_printf()). +or gtk_tree_view_column_set_cell_data_func() and do the conversion +from number to string yourself (with, say, g_strdup_printf()). The following example demonstrates this: -enum +enum { DOUBLE_COLUMN, N_COLUMNS @@ -877,11 +864,11 @@ enum GtkListStore *mycolumns; GtkTreeView *treeview; -void +void my_cell_double_to_text (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, + GtkCellRenderer *cell, GtkTreeModel *tree_model, - GtkTreeIter *iter, + GtkTreeIter *iter, gpointer data) { GtkCellRendererText *cell_text = (GtkCellRendererText *)cell; @@ -896,7 +883,7 @@ my_cell_double_to_text (GtkTreeViewColumn *tree_column, g_free (text); } -void +void set_up_new_columns (GtkTreeView *myview) { GtkCellRendererText *renderer; @@ -912,7 +899,7 @@ set_up_new_columns (GtkTreeView *myview) /* Create a new column that has a title ("Example column"), * uses the above created renderer that will render the double - * value into text from the associated model's rows. + * value into text from the associated model's rows. */ column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, "Example column"); @@ -926,10 +913,10 @@ set_up_new_columns (GtkTreeView *myview) */ /* Set up a custom function that will be called when the column content * is rendered. We use the func_data pointer as an index into our - * model. This is convenient when using multi column lists. + * model. This is convenient when using multi column lists. */ gtk_tree_view_column_set_cell_data_func (column, renderer, - my_cell_double_to_text, + my_cell_double_to_text, (gpointer)DOUBLE_COLUMN, NULL); } @@ -957,42 +944,15 @@ How do I use cairo to draw in GTK+ applications ? -Use gdk_cairo_create() to obtain a cairo context for drawing -on a GDK window or pixmap. See Cairo -Interaction for some more useful functions. - - - - - -I have created a cairo context with gdk_cairo_create(), but when I -later use it, my drawing does not show up. Why is that ? - - - - -All drawing in GTK+ is normally done in an expose handler, and GTK+ -creates a temporary pixmap for double-buffering the drawing. If you -create a cairo context outside the expose handler, it is backed -by the GDK window itself, not the double-buffering pixmap. Consequently, -any drawing you do with that cairo context gets overwritten at the -end of the expose handler, when the double-buffering pixmap is copied -back. +The #GtkWidget::draw signal gets a ready-to-use cairo context +as parameter that you should use. -Possible solutions to this problem are: - - -Turn off double-buffering, with gtk_widget_set_double_buffered(). -This is not ideal, since it can cause some flickering. - - -Create the cairo context inside the expose handler. If you do this, -gdk_create_cairo() arranges for it to be backed by the double-buffering -pixmap. This is the preferred solution, and is used throughout GTK+ -itself. - - +All drawing in GTK+ is normally done in a draw handler, and GTK+ +creates a temporary pixmap for double-buffering the drawing. +It is possible to turn off double-buffering, with +gtk_widget_set_double_buffered(), but this is not ideal, +since it can cause some flickering. @@ -1000,7 +960,7 @@ itself. Can I improve the performance of my application by using the -Glitz backend of cairo ? +Glitz or GL backend of cairo ? @@ -1020,7 +980,7 @@ Can I use cairo to draw on a #GdkPixbuf ? No, at least not yet. The cairo image surface does not support the -pixel format used by GdkPixbuf. +pixel format used by GdkPixbuf. diff --git a/docs/reference/gtk/resources.sgml b/docs/reference/gtk/resources.sgml index c051f6cce1..4abcac5dcf 100644 --- a/docs/reference/gtk/resources.sgml +++ b/docs/reference/gtk/resources.sgml @@ -2,7 +2,7 @@ - + Mailing lists and bug reports 3 diff --git a/docs/reference/gtk/running.sgml b/docs/reference/gtk/running.sgml index 82a3c2070b..9a9376ba64 100644 --- a/docs/reference/gtk/running.sgml +++ b/docs/reference/gtk/running.sgml @@ -267,15 +267,6 @@ additional environment variables. - - <envar>GTK2_RC_FILES</envar> - - - Specifies a list of RC files to parse instead of the default ones; - see Resource Files. - - - <envar>GTK_EXE_PREFIX</envar> @@ -377,6 +368,15 @@ nevertheless. + + <envar>GDK_SYNCHRONIZE</envar> + + + If set, GDK makes all X requests synchronously. This is a useful + option for debugging, but it will slow down the performance considerably. + + + <envar>XDG_DATA_HOME</envar>, <envar>XDG_DATA_DIRS</envar> @@ -389,6 +389,19 @@ nevertheless. + + <envar>DESKTOP_STARTUP_ID</envar> + + + GTK+ uses this environment variable to provide startup notification + according to the Startup Notification Spec. + Following the specification, GTK+ unsets this variable after reading + it (to keep it from leaking to child processes). So, if you need its + value for your own purposes, you have to read it before calling + gtk_init(). + + + diff --git a/docs/reference/gtk/text_widget.sgml b/docs/reference/gtk/text_widget.sgml index f425a8b702..aaf04e36a8 100644 --- a/docs/reference/gtk/text_widget.sgml +++ b/docs/reference/gtk/text_widget.sgml @@ -2,7 +2,7 @@ - + Text Widget Overview 3 diff --git a/docs/reference/gtk/tmpl/.gitignore b/docs/reference/gtk/tmpl/.gitignore index 24771fefd3..e7c14a5afa 100644 --- a/docs/reference/gtk/tmpl/.gitignore +++ b/docs/reference/gtk/tmpl/.gitignore @@ -8,6 +8,7 @@ gtkbuilder.sgml gtkbutton.sgml gtkcalendar.sgml gtkcelleditable.sgml +gtkcelllayout.sgml gtkcellrenderer.sgml gtkcellrenderertext.sgml gtkcellview.sgml @@ -16,9 +17,17 @@ gtkcolorsel.sgml gtkcombobox.sgml gtkcomboboxentry.sgml gtkcontainer.sgml +gtkdialog.sgml +gtkdrawingarea.sgml gtkeditable.sgml gtkentry.sgml gtkentrybuffer.sgml +gtkenum.sgml +gtkeventbox.sgml +gtkexpander.sgml +gtkfeatures.sgml +gtkfixed.sgml +gtkfilefilter.sgml gtkhbox.sgml gtkiconview.sgml gtkimcontextsimple.sgml @@ -26,6 +35,10 @@ gtkimmulticontext.sgml gtkitemfactory.sgml gtklayout.sgml gtklinkbutton.sgml +gtkmain.sgml +gtkmenu.sgml +gtkmenubar.sgml +gtkmenushell.sgml gtkmessagedialog.sgml gtknotebook.sgml gtkobject.sgml @@ -35,6 +48,7 @@ gtkpagesetupunixdialog.sgml gtkpaned.sgml gtkpapersize.sgml gtkprinter.sgml +gtkprintjob.sgml gtkprogressbar.sgml gtkradioaction.sgml gtkradiobutton.sgml @@ -49,6 +63,7 @@ gtkscale.sgml gtkscalebutton.sgml gtkscrollbar.sgml gtkscrolledwindow.sgml +gtkselection.sgml gtkseparator.sgml gtkseparatormenuitem.sgml gtkseparatortoolitem.sgml @@ -57,6 +72,7 @@ gtkstatusbar.sgml gtkstyle.sgml gtktesting.sgml gtktextiter.sgml +gtktexttag.sgml gtktexttagtable.sgml gtktextview.sgml gtktoggleaction.sgml @@ -64,6 +80,7 @@ gtktoolbar.sgml gtktoolitem.sgml gtktooltip.sgml gtktreednd.sgml +gtktreemodel.sgml gtktreemodelfilter.sgml gtktreeselection.sgml gtktreesortable.sgml diff --git a/docs/reference/gtk/tmpl/gtkcelllayout.sgml b/docs/reference/gtk/tmpl/gtkcelllayout.sgml deleted file mode 100644 index 166d2cb996..0000000000 --- a/docs/reference/gtk/tmpl/gtkcelllayout.sgml +++ /dev/null @@ -1,186 +0,0 @@ - -GtkCellLayout - - -An interface for packing cells - - - -#GtkCellLayout is an interface to be implemented by all objects which -want to provide a #GtkTreeViewColumn-like API for packing cells, setting -attributes and data funcs. - - - -One of the notable features provided by implementations of GtkCellLayout -are attributes. Attributes let you set the properties -in flexible ways. They can just be set to constant values like regular -properties. But they can also be mapped to a column of the underlying -tree model with gtk_cell_layout_set_attributes(), which means that the value -of the attribute can change from cell to cell as they are rendered by the -cell renderer. Finally, it is possible to specify a function with -gtk_cell_layout_set_cell_data_func() that is called to determine the value -of the attribute for each cell that is rendered. - - - -GtkCellLayouts as GtkBuildable - -Implementations of GtkCellLayout which also implement the GtkBuildable -interface (#GtkCellView, #GtkIconView, #GtkComboBox, #GtkComboBoxEntry, -#GtkEntryCompletion, #GtkTreeViewColumn) accept GtkCellRenderer objects -as <child> elements in UI definitions. They support a custom -<attributes> element for their children, which can contain -multiple <attribute> elements. Each <attribute> element has -a name attribute which specifies a property of the cell renderer; the -content of the element is the attribute value. - - -A UI definition fragment specifying attributes - - - - - 0 - - " - -]]> - - - - - - - - - - - - - - - - - - - - - - - - - -@g_iface: -@pack_start: -@pack_end: -@clear: -@add_attribute: -@set_cell_data_func: -@clear_attributes: -@reorder: -@get_cells: - - - -A function which should set the value of @cell_layout's cell renderer(s) -as appropriate. - - -@cell_layout: a #GtkCellLayout -@cell: the cell renderer whose value is to be set -@tree_model: the model -@iter: a #GtkTreeIter indicating the row to set the value for -@data: user data passed to gtk_cell_layout_set_cell_data_func() - - - - - - - -@cell_layout: -@cell: -@expand: - - - - - - - -@cell_layout: -@cell: -@expand: - - - - - - - -@cell_layout: -@Returns: - - - - - - - -@cell_layout: -@cell: -@position: - - - - - - - -@cell_layout: - - - - - - - -@cell_layout: -@cell: -@Varargs: - - - - - - - -@cell_layout: -@cell: -@attribute: -@column: - - - - - - - -@cell_layout: -@cell: -@func: -@func_data: -@destroy: - - - - - - - -@cell_layout: -@cell: - - diff --git a/docs/reference/gtk/tmpl/gtkdialog.sgml b/docs/reference/gtk/tmpl/gtkdialog.sgml deleted file mode 100644 index 13c902f2ca..0000000000 --- a/docs/reference/gtk/tmpl/gtkdialog.sgml +++ /dev/null @@ -1,406 +0,0 @@ - -GtkDialog - - -Create popup windows - - - - -Dialog boxes are a convenient way to prompt the user for a small amount of -input, e.g. to display a message, ask a question, or anything else that does -not require extensive effort on the user's part. - - - -GTK+ treats a dialog as a window split vertically. The top section is a -#GtkVBox known as the content_area, and is -where widgets such as a #GtkLabel or a #GtkEntry should be packed. -The bottom area is known as the action_area. -This is generally used for packing buttons into the dialog which may -perform functions such as cancel, ok, or apply. - - - -GtkDialog boxes are created with a call to gtk_dialog_new() or -gtk_dialog_new_with_buttons(). gtk_dialog_new_with_buttons() is recommended; -it allows you to set the dialog title, some convenient flags, and add simple -buttons. - - - -If 'dialog' is a newly created dialog, the two primary areas of the window -can be accessed through gtk_dialog_get_content_area() and -gtk_dialog_get_action_area(), as can be seen from the example, below. - - - -A 'modal' dialog (that is, one which freezes the rest of the application from -user input), can be created by calling gtk_window_set_modal() on the dialog. Use -the GTK_WINDOW() macro to cast the widget returned from gtk_dialog_new() into a -#GtkWindow. When using gtk_dialog_new_with_buttons() you can also pass the -#GTK_DIALOG_MODAL flag to make a dialog modal. - - - -If you add buttons to #GtkDialog using gtk_dialog_new_with_buttons(), -gtk_dialog_add_button(), gtk_dialog_add_buttons(), or -gtk_dialog_add_action_widget(), clicking the button will emit a signal called -"response" with a response ID that you specified. GTK+ will never assign a -meaning to positive response IDs; these are entirely user-defined. But for -convenience, you can use the response IDs in the #GtkResponseType enumeration -(these all have values less than zero). If a dialog receives a delete event, -the "response" signal will be emitted with a response ID of #GTK_RESPONSE_DELETE_EVENT. - - - - -If you want to block waiting for a dialog to return before returning control -flow to your code, you can call gtk_dialog_run(). This function enters a -recursive main loop and waits for the user to respond to the dialog, returning the -response ID corresponding to the button the user clicked. - - - -For the simple dialog in the following example, in reality you'd probably use -#GtkMessageDialog to save yourself some effort. But you'd need to create the -dialog contents manually if you had more than a simple message in the dialog. - -Simple <structname>GtkDialog</structname> usage. - - -/* Function to open a dialog box displaying the message provided. */ - -void quick_message (gchar *message) { - - GtkWidget *dialog, *label, *content_area; - - /* Create the widgets */ - - dialog = gtk_dialog_new_with_buttons ("Message", - main_application_window, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_OK, - GTK_RESPONSE_NONE, - NULL); - content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - label = gtk_label_new (message); - - /* Ensure that the dialog box is destroyed when the user responds. */ - - g_signal_connect_swapped (dialog, - "response", - G_CALLBACK (gtk_widget_destroy), - dialog); - - /* Add the label, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (content_area), label); - gtk_widget_show_all (dialog); -} - - - - - -GtkDialog as GtkBuildable - -The GtkDialog implementation of the GtkBuildable interface exposes the -@vbox and @action_area as internal children with the names "vbox" and -"action_area". - - -GtkDialog supports a custom <action-widgets> element, which -can contain multiple <action-widget> elements. The "response" -attribute specifies a numeric response, and the content of the element -is the id of widget (which should be a child of the dialogs @action_area). - - -A <structname>GtkDialog</structname> UI definition fragment. - - " - - - - - - - - - - - - - - - button_ok - button_cancel - - -]]> - - - - - - - - -#GtkVBox -Pack widgets vertically. - - -#GtkWindow -Alter the properties of your dialog box. - - -#GtkButton -Add them to the action_area to get a -response from the user. - - - - - - - - - - - - -vbox is a #GtkVBox - the main part of the -dialog box. - - - -action_area is a #GtkHButtonBox packed below the -dividing #GtkHSeparator in the dialog. It is treated exactly the same -as any other #GtkHButtonBox. - - - - - - - - -@dialog: the object which received the signal. - - - - - - -@dialog: -@arg1: - - - - - - - - - - - - - - - - - - - - - - - -Flags used to influence dialog construction. - - -@GTK_DIALOG_MODAL: Make the constructed dialog modal, - see gtk_window_set_modal(). -@GTK_DIALOG_DESTROY_WITH_PARENT: Destroy the dialog when its - parent is destroyed, see gtk_window_set_destroy_with_parent(). - - - -Predefined values for use as response ids in gtk_dialog_add_button(). -All predefined values are negative, GTK+ leaves positive values for -application-defined response ids. - - -@GTK_RESPONSE_NONE: Returned if an action widget has no response id, or if - the dialog gets programmatically hidden or destroyed. -@GTK_RESPONSE_REJECT: Generic response id, not used by GTK+ dialogs. -@GTK_RESPONSE_ACCEPT: Generic response id, not used by GTK+ dialogs. -@GTK_RESPONSE_DELETE_EVENT: Returned if the dialog is deleted. -@GTK_RESPONSE_OK: Returned by OK buttons in GTK+ dialogs. -@GTK_RESPONSE_CANCEL: Returned by Cancel buttons in GTK+ dialogs. -@GTK_RESPONSE_CLOSE: Returned by Close buttons in GTK+ dialogs. -@GTK_RESPONSE_YES: Returned by Yes buttons in GTK+ dialogs. -@GTK_RESPONSE_NO: Returned by No buttons in GTK+ dialogs. -@GTK_RESPONSE_APPLY: Returned by Apply buttons in GTK+ dialogs. -@GTK_RESPONSE_HELP: Returned by Help buttons in GTK+ dialogs. - - - -Creates a new dialog box. Widgets should not be packed into this #GtkWindow -directly, but into the @vbox and @action_area, as described above. - - -@void: -@Returns: a new #GtkDialog. - - - - - - - -@title: -@parent: -@flags: -@first_button_text: -@Varargs: -@Returns: - - - - - - - -@dialog: -@Returns: - - - - - - - -@dialog: -@response_id: - - - - - - - -@dialog: -@button_text: -@response_id: -@Returns: - - - - - - - -@dialog: -@first_button_text: -@Varargs: - - - - - - - -@dialog: -@child: -@response_id: - - - - - - - -@dialog: -@response_id: - - - - - - - -@dialog: -@response_id: -@setting: - - - - - - - -@dialog: -@widget: -@Returns: - - - - - - - -@dialog: -@response_id: -@Returns: - - - - - - - -@dialog: -@Returns: - - - - - - - -@dialog: -@Returns: - - - - - - - -@screen: -@Returns: - - - - - - - -@dialog: -@first_response_id: -@Varargs: - - - - - - - -@dialog: -@n_params: -@new_order: - - diff --git a/docs/reference/gtk/tmpl/gtkdrawingarea.sgml b/docs/reference/gtk/tmpl/gtkdrawingarea.sgml deleted file mode 100644 index 2ec329cc83..0000000000 --- a/docs/reference/gtk/tmpl/gtkdrawingarea.sgml +++ /dev/null @@ -1,131 +0,0 @@ - -GtkDrawingArea - - -A widget for custom user interface elements - - - - -The #GtkDrawingArea widget is used for creating custom user interface -elements. It's essentially a blank widget; you can draw on -widget->window. After creating a drawing area, -the application may want to connect to: - - - - - Mouse and button press signals to respond to input from - the user. (Use gtk_widget_add_events() to enable events - you wish to receive.) - - - - - The "realize" signal to take any necessary actions - when the widget is instantiated on a particular display. - (Create GDK resources in response to this signal.) - - - - - The "configure_event" signal to take any necessary actions - when the widget changes size. - - - - - The "expose_event" signal to handle redrawing the - contents of the widget. - - - - - -The following code portion demonstrates using a drawing -area to display a circle in the normal widget foreground -color. -Note that GDK automatically clears the exposed area -to the background color before sending the expose event, and -that drawing is implicitly clipped to the exposed area. - - -Simple <structname>GtkDrawingArea</structname> usage. - -gboolean -expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data) -{ - cairo_t *cr; - - cr = gdk_cairo_create (event->window); - - cairo_set_source_rgb (cr, 0.0, 0.0, 1.0); - cairo_paint (cr); - - cairo_destroy (cr); - - return TRUE; -} -[...] - GtkWidget *drawing_area = gtk_drawing_area_new (); - gtk_widget_set_size_request (drawing_area, 100, 100); - g_signal_connect (G_OBJECT (drawing_area), "expose_event", - G_CALLBACK (expose_event_callback), NULL); - - - - -Expose events are normally delivered when a drawing area first comes -onscreen, or when it's covered by another window and then uncovered -(exposed). You can also force an expose event by adding to the "damage -region" of the drawing area's window; gtk_widget_queue_draw_area() and -gdk_window_invalidate_rect() are equally good ways to do this. You'll -then get an expose event for the invalid region. - - - -The available routines for drawing are documented on the GDK Drawing Primitives page. -See also gdk_draw_pixbuf() for drawing a #GdkPixbuf. - - - -To receive mouse events on a drawing area, you will need to enable -them with gtk_widget_add_events(). To receive keyboard events, you -will need to set the #GTK_CAN_FOCUS flag on the drawing area, and -should probably draw some user-visible indication that the drawing -area is focused. Use the GTK_HAS_FOCUS() macro in your expose event -handler to decide whether to draw the focus indicator. See -gtk_paint_focus() for one way to draw focus. - - - - -Sometimes #GtkImage is a useful alternative to a drawing area. -You can put a #GdkPixmap in the #GtkImage and draw to the #GdkPixmap, -calling gtk_widget_queue_draw() on the #GtkImage when you want to -refresh to the screen. - - - - - - - - - - -The #GtkDrawingArea struct contains private data only, and -should be accessed using the functions below. - - - - - -Creates a new drawing area. - - -@void: -@Returns: a new #GtkDrawingArea - - diff --git a/docs/reference/gtk/tmpl/gtkentrycompletion.sgml b/docs/reference/gtk/tmpl/gtkentrycompletion.sgml deleted file mode 100644 index b0422c1311..0000000000 --- a/docs/reference/gtk/tmpl/gtkentrycompletion.sgml +++ /dev/null @@ -1,377 +0,0 @@ - -GtkEntryCompletion - - -Completion functionality for GtkEntry - - - -#GtkEntryCompletion is an auxiliary object to be used in conjunction with -#GtkEntry to provide the completion functionality. It implements the -#GtkCellLayout interface, to allow the user to add extra cells to the -#GtkTreeView with completion matches. - - -"Completion functionality" means that when the user modifies the text -in the entry, #GtkEntryCompletion checks which rows in the model match -the current content of the entry, and displays a list of matches. -By default, the matching is done by comparing the entry text -case-insensitively against the text column of the model (see -gtk_entry_completion_set_text_column()), but this can be overridden with -a custom match function (see gtk_entry_completion_set_match_func()). - - -When the user selects a completion, the content of the entry is updated. -By default, the content of the entry is replaced by the text column of the -model, but this can be overridden by connecting to the ::match-selected signal -and updating the entry in the signal handler. Note that you should return -%TRUE from the signal handler to suppress the default behaviour. - - -To add completion functionality to an entry, use gtk_entry_set_completion(). - - -In addition to regular completion matches, which will be inserted into the -entry when they are selected, #GtkEntryCompletion also allows to display -"actions" in the popup window. Their appearance is similar to menuitems, -to differentiate them clearly from completion strings. When an action is -selected, the ::action-activated signal is emitted. - - - - - - - - - - - - - - - -The GtkEntryCompletion struct contains only private data. - - - - - - - - -@entrycompletion: the object which received the signal. -@arg1: - - - - - - -@entrycompletion: the object which received the signal. -@arg1: -@arg2: -@Returns: - - - - - - -@entrycompletion: the object which received the signal. -@arg1: -@Returns: - - - - - - -@entrycompletion: the object which received the signal. -@arg1: -@arg2: -@Returns: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A function which decides whether the row indicated by @iter matches a given -@key, and should be displayed as a possible completion for @key. Note that -@key is normalized and case-folded (see g_utf8_normalize() and -g_utf8_casefold()). If this is not appropriate, match functions have access -to the unmodified key via gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ())). - - -@completion: the #GtkEntryCompletion -@key: the string to match, normalized and case-folded -@iter: a #GtkTreeIter indicating the row to match -@user_data: user data given to gtk_entry_completion_set_match_func() -@Returns: %TRUE if @iter should be displayed as a possible completion for @key - - - - - - - -@void: -@Returns: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@model: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@func: -@func_data: -@func_notify: - - - - - - - -@completion: -@length: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: - - - - - - - -@completion: -@index_: -@text: - - - - - - - -@completion: -@index_: -@markup: - - - - - - - -@completion: -@index_: - - - - - - - -@completion: -@column: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@inline_completion: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@inline_selection: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@popup_completion: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@popup_set_width: - - - - - - - -@completion: -@Returns: - - - - - - - -@completion: -@popup_single_match: - - - - - - - -@completion: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkenums.sgml b/docs/reference/gtk/tmpl/gtkenums.sgml deleted file mode 100644 index 897821f075..0000000000 --- a/docs/reference/gtk/tmpl/gtkenums.sgml +++ /dev/null @@ -1,458 +0,0 @@ - -Standard Enumerations - - -Public enumerated types used throughout GTK+ - - - - - - - - - - - - - - - - - - - - - - -@GTK_ACCEL_VISIBLE: -@GTK_ACCEL_LOCKED: -@GTK_ACCEL_MASK: - - - -Used to specify the placement of scroll arrows in scrolling menus. - - -@GTK_ARROWS_BOTH: Place one arrow on each end of the menu. -@GTK_ARROWS_START: Place both arrows at the top of the menu. -@GTK_ARROWS_END: Place both arrows at the bottom of the menu. - - - -Used to indicate the direction in which a #GtkArrow should point. - - -@GTK_ARROW_UP: Represents an upward pointing arrow. -@GTK_ARROW_DOWN: Represents a downward pointing arrow. -@GTK_ARROW_LEFT: Represents a left pointing arrow. -@GTK_ARROW_RIGHT: Represents a right pointing arrow. -@GTK_ARROW_NONE: No arrow. Since 2.10. - - - -Denotes the expansion properties that a widget will have when it (or its -parent) is resized. - - -@GTK_EXPAND: the widget should expand to take up any extra space in its -container that has been allocated. -@GTK_SHRINK: the widget should shrink as and when possible. -@GTK_FILL: the widget should fill the space allocated to it. - - - -Used to dictate the style that a #GtkButtonBox uses to layout the buttons it -contains. (See also: #GtkVButtonBox and #GtkHButtonBox). - - -@GTK_BUTTONBOX_SPREAD: Buttons are evenly spread across the box. -@GTK_BUTTONBOX_EDGE: Buttons are placed at the edges of the box. -@GTK_BUTTONBOX_START: Buttons are grouped towards the start of the box, - (on the left for a HBox, or the top for a VBox). -@GTK_BUTTONBOX_END: Buttons are grouped towards the end of the box, - (on the right for a HBox, or the bottom for a VBox). -@GTK_BUTTONBOX_CENTER: Buttons are centered in the box. Since 2.12 - - - -Specifies which corner a child widget should be placed in when packed into -a #GtkScrolledWindow. This is effectively the opposite of where the scroll -bars are placed. - - -@GTK_CORNER_TOP_LEFT: Place the scrollbars on the right and bottom of the -widget (default behaviour). -@GTK_CORNER_BOTTOM_LEFT: Place the scrollbars on the top and right of the -widget. -@GTK_CORNER_TOP_RIGHT: Place the scrollbars on the left and bottom of the -widget. -@GTK_CORNER_BOTTOM_RIGHT: Place the scrollbars on the top and left of the -widget. - - - - - - -@GTK_DELETE_CHARS: -@GTK_DELETE_WORD_ENDS: -@GTK_DELETE_WORDS: -@GTK_DELETE_DISPLAY_LINES: -@GTK_DELETE_DISPLAY_LINE_ENDS: -@GTK_DELETE_PARAGRAPH_ENDS: -@GTK_DELETE_PARAGRAPHS: -@GTK_DELETE_WHITESPACE: - - - - - - -@GTK_DIR_TAB_FORWARD: -@GTK_DIR_TAB_BACKWARD: -@GTK_DIR_UP: -@GTK_DIR_DOWN: -@GTK_DIR_LEFT: -@GTK_DIR_RIGHT: - - - -Used to specify the style of the expanders drawn by a #GtkTreeView. - - -@GTK_EXPANDER_COLLAPSED: The style used for a collapsed subtree. -@GTK_EXPANDER_SEMI_COLLAPSED: Intermediate style used during animation. -@GTK_EXPANDER_SEMI_EXPANDED: Intermediate style used during animation. -@GTK_EXPANDER_EXPANDED: The style used for an expanded subtree. - - - - - - -@GTK_IM_PREEDIT_NOTHING: -@GTK_IM_PREEDIT_CALLBACK: -@GTK_IM_PREEDIT_NONE: - - - - - - -@GTK_IM_STATUS_NOTHING: -@GTK_IM_STATUS_CALLBACK: -@GTK_IM_STATUS_NONE: - - - -Used for justifying the text inside a #GtkLabel widget. (See also -#GtkAlignment). - - -@GTK_JUSTIFY_LEFT: The text is placed at the left edge of the label. -@GTK_JUSTIFY_RIGHT: The text is placed at the right edge of the label. -@GTK_JUSTIFY_CENTER: The text is placed in the center of the label. -@GTK_JUSTIFY_FILL: The text is placed is distributed across the label. - - - - - - -@GTK_MOVEMENT_LOGICAL_POSITIONS: -@GTK_MOVEMENT_VISUAL_POSITIONS: -@GTK_MOVEMENT_WORDS: -@GTK_MOVEMENT_DISPLAY_LINES: -@GTK_MOVEMENT_DISPLAY_LINE_ENDS: -@GTK_MOVEMENT_PARAGRAPHS: -@GTK_MOVEMENT_PARAGRAPH_ENDS: -@GTK_MOVEMENT_PAGES: -@GTK_MOVEMENT_BUFFER_ENDS: -@GTK_MOVEMENT_HORIZONTAL_PAGES: - - - -Represents the orientation of widgets which can be switched between horizontal -and vertical orientation on the fly, like #GtkToolbar. - - -@GTK_ORIENTATION_HORIZONTAL: The widget is in horizontal orientation. -@GTK_ORIENTATION_VERTICAL: The widget is in vertical orientation. - - - -Represents the packing location #GtkBox children. (See: #GtkVBox, -#GtkHBox, and #GtkButtonBox). - - -@GTK_PACK_START: The child is packed into the start of the box -@GTK_PACK_END: The child is packed into the end of the box - - - - - - -@GTK_PATH_PRIO_LOWEST: -@GTK_PATH_PRIO_GTK: -@GTK_PATH_PRIO_APPLICATION: -@GTK_PATH_PRIO_THEME: -@GTK_PATH_PRIO_RC: -@GTK_PATH_PRIO_HIGHEST: - - - - - - -@GTK_PATH_WIDGET: -@GTK_PATH_WIDGET_CLASS: -@GTK_PATH_CLASS: - - - -Determines when a scroll bar will be visible. - - -@GTK_POLICY_ALWAYS: The scrollbar is always visible. -@GTK_POLICY_AUTOMATIC: The scrollbar will appear and disappear as necessary. For example, -when all of a #GtkCList can not be seen. -@GTK_POLICY_NEVER: The scrollbar will never appear. - - - -Describes which edge of a widget a certain feature is positioned at, e.g. the -tabs of a #GtkNotebook, the handle of a #GtkHandleBox or the label of a -#GtkScale. - - -@GTK_POS_LEFT: The feature is at the left edge. -@GTK_POS_RIGHT: The feature is at the right edge. -@GTK_POS_TOP: The feature is at the top edge. -@GTK_POS_BOTTOM: The feature is at the bottom edge. - - - -Indicated the relief to be drawn around a #GtkButton. - - -@GTK_RELIEF_NORMAL: Draw a normal relief. -@GTK_RELIEF_HALF: A half relief. -@GTK_RELIEF_NONE: No relief. - - - - - - -@GTK_RESIZE_PARENT: -@GTK_RESIZE_QUEUE: -@GTK_RESIZE_IMMEDIATE: Deprecated. - - - - - - -@GTK_SCROLL_STEPS: -@GTK_SCROLL_PAGES: -@GTK_SCROLL_ENDS: -@GTK_SCROLL_HORIZONTAL_STEPS: -@GTK_SCROLL_HORIZONTAL_PAGES: -@GTK_SCROLL_HORIZONTAL_ENDS: - - - - - - -@GTK_SCROLL_NONE: -@GTK_SCROLL_JUMP: -@GTK_SCROLL_STEP_BACKWARD: -@GTK_SCROLL_STEP_FORWARD: -@GTK_SCROLL_PAGE_BACKWARD: -@GTK_SCROLL_PAGE_FORWARD: -@GTK_SCROLL_STEP_UP: -@GTK_SCROLL_STEP_DOWN: -@GTK_SCROLL_PAGE_UP: -@GTK_SCROLL_PAGE_DOWN: -@GTK_SCROLL_STEP_LEFT: -@GTK_SCROLL_STEP_RIGHT: -@GTK_SCROLL_PAGE_LEFT: -@GTK_SCROLL_PAGE_RIGHT: -@GTK_SCROLL_START: -@GTK_SCROLL_END: - - - -Used to control what selections users are allowed to make. - - -@GTK_SELECTION_NONE: No selection is possible. -@GTK_SELECTION_SINGLE: Zero or one element may be selected. -@GTK_SELECTION_BROWSE: Exactly one element is selected. In some circumstances, - such as initially or during a search operation, it's possible for no element - to be selected with %GTK_SELECTION_BROWSE. What is really enforced is that - the user can't deselect a currently selected element except by selecting - another element. -@GTK_SELECTION_MULTIPLE: Any number of elements may be selected. - Clicks toggle the state of an item. Any number of elements may be selected. - The Ctrl key may be used to enlarge the selection, and Shift key to select - between the focus and the child pointed to. Some widgets may also allow - Click-drag to select a range of elements. - - - -Used to change the appearance of an outline typically provided by a #GtkFrame. - - -@GTK_SHADOW_NONE: No outline. -@GTK_SHADOW_IN: The outline is bevelled inwards. -@GTK_SHADOW_OUT: The outline is bevelled outwards like a button. -@GTK_SHADOW_ETCHED_IN: The outline has a sunken 3d appearance. -@GTK_SHADOW_ETCHED_OUT: The outline has a raised 3d appearance - - - - - - -@GTK_STATE_NORMAL: -@GTK_STATE_ACTIVE: -@GTK_STATE_PRELIGHT: -@GTK_STATE_SELECTED: -@GTK_STATE_INSENSITIVE: -@GTK_STATE_INCONSISTENT: -@GTK_STATE_FOCUSED: - - - - - - -@GTK_STATE_FLAG_ACTIVE: -@GTK_STATE_FLAG_PRELIGHT: -@GTK_STATE_FLAG_SELECTED: -@GTK_STATE_FLAG_INSENSITIVE: -@GTK_STATE_FLAG_INCONSISTENT: -@GTK_STATE_FLAG_FOCUSED: - - - -Used to customize the appearance of a #GtkToolbar. Note that -setting the toolbar style overrides the user's preferences -for the default toolbar style. Note that if the button has only -a label set and GTK_TOOLBAR_ICONS is used, the label will be -visible, and vice versa. - - -@GTK_TOOLBAR_ICONS: Buttons display only icons in the toolbar. -@GTK_TOOLBAR_TEXT: Buttons display only text labels in the toolbar. -@GTK_TOOLBAR_BOTH: Buttons display text and icons in the toolbar. -@GTK_TOOLBAR_BOTH_HORIZ: Buttons display icons and text alongside each -other, rather than vertically stacked - - - -Used by #GtkRange to control the policy for notifying value changes. - - -@GTK_UPDATE_CONTINUOUS: Notify updates whenever the value changed -@GTK_UPDATE_DISCONTINUOUS: Notify updates when the mouse button has been released -@GTK_UPDATE_DELAYED: Space out updates with a small timeout - - - -Window placement can be influenced using this enumeration. Note that -using #GTK_WIN_POS_CENTER_ALWAYS is almost always a bad idea. -It won't necessarily work well with all window managers or on all windowing systems. - - -@GTK_WIN_POS_NONE: No influence is made on placement. -@GTK_WIN_POS_CENTER: Windows should be placed in the center of the screen. -@GTK_WIN_POS_MOUSE: Windows should be placed at the current mouse position. -@GTK_WIN_POS_CENTER_ALWAYS: Keep window centered as it changes size, etc. -@GTK_WIN_POS_CENTER_ON_PARENT: Center the window on its transient -parent (see gtk_window_set_transient_for()). - - - -A #GtkWindow can be one of these types. Most things you'd consider a -"window" should have type #GTK_WINDOW_TOPLEVEL; windows with this type -are managed by the window manager and have a frame by default (call -gtk_window_set_decorated() to toggle the frame). Windows with type -#GTK_WINDOW_POPUP are ignored by the window manager; window manager -keybindings won't work on them, the window manager won't decorate the -window with a frame, many GTK+ features that rely on the window -manager will not work (e.g. resize grips and -maximization/minimization). #GTK_WINDOW_POPUP is used to implement -widgets such as #GtkMenu or tooltips that you normally don't think of -as windows per se. Nearly all windows should be #GTK_WINDOW_TOPLEVEL. -In particular, do not use #GTK_WINDOW_POPUP just to turn off -the window borders; use gtk_window_set_decorated() for that. - - -@GTK_WINDOW_TOPLEVEL: A regular window, such as a dialog. -@GTK_WINDOW_POPUP: A special window such as a tooltip. - - - -Determines the direction of a sort. - - -@GTK_SORT_ASCENDING: Sorting is in ascending order. -@GTK_SORT_DESCENDING: Sorting is in descending order. - - - -Gives an indication why a drag operation failed. -The value can by obtained by connecting to the -#GtkWidget::drag-failed signal. - - -@GTK_DRAG_RESULT_SUCCESS: The drag operation was successful -@GTK_DRAG_RESULT_NO_TARGET: No suitable drag target -@GTK_DRAG_RESULT_USER_CANCELLED: The user cancelled the drag operation -@GTK_DRAG_RESULT_TIMEOUT_EXPIRED: The drag operation timed out -@GTK_DRAG_RESULT_GRAB_BROKEN: The pointer or keyboard grab used - for the drag operation was broken -@GTK_DRAG_RESULT_ERROR: The drag operation failed due to some - unspecified error - - - - - - -@GTK_JUNCTION_NONE: -@GTK_JUNCTION_CORNER_TOPLEFT: -@GTK_JUNCTION_CORNER_TOPRIGHT: -@GTK_JUNCTION_CORNER_BOTTOMLEFT: -@GTK_JUNCTION_CORNER_BOTTOMRIGHT: -@GTK_JUNCTION_TOP: -@GTK_JUNCTION_BOTTOM: -@GTK_JUNCTION_LEFT: -@GTK_JUNCTION_RIGHT: - - - - - - -@GTK_BORDER_STYLE_NONE: -@GTK_BORDER_STYLE_SOLID: -@GTK_BORDER_STYLE_INSET: -@GTK_BORDER_STYLE_OUTSET: - - - - - - -@GTK_REGION_EVEN: -@GTK_REGION_ODD: -@GTK_REGION_FIRST: -@GTK_REGION_LAST: -@GTK_REGION_SORTED: - diff --git a/docs/reference/gtk/tmpl/gtkeventbox.sgml b/docs/reference/gtk/tmpl/gtkeventbox.sgml deleted file mode 100644 index 66bbeea422..0000000000 --- a/docs/reference/gtk/tmpl/gtkeventbox.sgml +++ /dev/null @@ -1,86 +0,0 @@ - -GtkEventBox - - -A widget used to catch events for widgets which do not have their own window - - - -The #GtkEventBox widget is a subclass of #GtkBin which also has its own window. -It is useful since it allows you to catch events for widgets which do not -have their own window. - - - - - - - - - - - - - - - -The #GtkEventBox-struct struct contains private data only, and -should be accessed using the functions below. - - - - - - - - - - - - - - - -Creates a new #GtkEventBox. - - -@void: -@Returns: a new #GtkEventBox. - - - - - - - -@event_box: -@above_child: - - - - - - - -@event_box: -@Returns: - - - - - - - -@event_box: -@visible_window: - - - - - - - -@event_box: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkexpander.sgml b/docs/reference/gtk/tmpl/gtkexpander.sgml deleted file mode 100644 index 77427b4d00..0000000000 --- a/docs/reference/gtk/tmpl/gtkexpander.sgml +++ /dev/null @@ -1,296 +0,0 @@ - -GtkExpander - - -A container which can hide its child - - - -A #GtkExpander allows the user to hide or show its child by clicking -on an expander triangle similar to the triangles used in a #GtkTreeView. - - - -Normally you use an expander as you would use any other descendant -of #GtkBin; you create the child widget and use gtk_container_add() -to add it to the expander. When the expander is toggled, it will take -care of showing and hiding the child automatically. - - -
-Special Usage - - -There are situations in which you may prefer to show and hide the -expanded widget yourself, such as when you want to actually create -the widget at expansion time. In this case, create a #GtkExpander -but do not add a child to it. The expander widget has an -expanded property which can be used to monitor -its expansion state. You should watch this property with a signal -connection as follows: - - - -expander = gtk_expander_new_with_mnemonic ("_More Options"); -g_signal_connect (expander, "notify::expanded", - G_CALLBACK (expander_callback), NULL); - -... - -static void -expander_callback (GObject *object, - GParamSpec *param_spec, - gpointer user_data) -{ - GtkExpander *expander; - - expander = GTK_EXPANDER (object); - - if (gtk_expander_get_expanded (expander)) - { - /* Show or create widgets */ - } - else - { - /* Hide or destroy widgets */ - } -} - -
- -GtkExpander as GtkBuildable - -The GtkExpander implementation of the GtkBuildable interface -supports placing a child in the label position by specifying -"label" as the "type" attribute of a <child> element. -A normal content child can be specified without specifying -a <child> type attribute. - - -A UI definition fragment with GtkExpander - - - - - - - - -]]> - - - - - - - - - - - - - - - - - - - - - - - - - -@expander: the object which received the signal. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@label: -@Returns: - - - - - - - -@label: -@Returns: - - - - - - - -@expander: -@expanded: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@spacing: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@label: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@use_underline: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@use_markup: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@label_widget: - - - - - - - -@expander: -@Returns: - - - - - - - -@expander: -@label_fill: - - - - - - - -@expander: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkfeatures.sgml b/docs/reference/gtk/tmpl/gtkfeatures.sgml deleted file mode 100644 index d52d82e78f..0000000000 --- a/docs/reference/gtk/tmpl/gtkfeatures.sgml +++ /dev/null @@ -1,135 +0,0 @@ - -Version Information - - -Variables and functions to check the GTK+ version - - - -GTK+ provides version information, primarily useful in configure checks -for builds that have a configure script. Applications will not -typically use the features described here. - - - - - - - - - - - - - - - - - - -@void: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - -@required_major: -@required_minor: -@required_micro: -@Returns: - - - - -Like #gtk_major_version, but from the headers used at -application compile time, rather than from the library linked against -at application run time. - - - - - - -Like #gtk_minor_version, but from the headers used at -application compile time, rather than from the library linked against -at application run time. - - - - - - -Like #gtk_micro_version, but from the headers used at -application compile time, rather than from the library linked against -at application run time. - - - - - - -Like #gtk_binary_age, but from the headers used at -application compile time, rather than from the library linked against -at application run time. - - - - - - -Like #gtk_interface_age, but from the headers used at -application compile time, rather than from the library linked against -at application run time. - - - - - - -Returns %TRUE if the version of the GTK+ header files is the same -as or newer than the passed-in version. - - -@major: major version (e.g. 1 for version 1.2.5) -@minor: minor version (e.g. 2 for version 1.2.5) -@micro: micro version (e.g. 5 for version 1.2.5) - - diff --git a/docs/reference/gtk/tmpl/gtkfilefilter.sgml b/docs/reference/gtk/tmpl/gtkfilefilter.sgml deleted file mode 100644 index 4f22a3cca7..0000000000 --- a/docs/reference/gtk/tmpl/gtkfilefilter.sgml +++ /dev/null @@ -1,170 +0,0 @@ - -GtkFileFilter - - -A filter for selecting a file subset - - - -A GtkFileFilter can be used to restrict the files being shown -in a #GtkFileChooser. Files can be filtered based on their name -(with gtk_file_filter_add_pattern()), on their mime type (with -gtk_file_filter_add_mime_type()), or by a custom filter function -(with gtk_file_filter_add_custom()). - - - -Filtering by mime types handles aliasing and subclassing of mime -types; e.g. a filter for text/plain also matches a file with mime -type application/rtf, since application/rtf is a subclass of -text/plain. Note that #GtkFileFilter allows wildcards for the -subtype of a mime type, so you can e.g. filter for image/*. - - - -Normally, filters are used by adding them to a #GtkFileChooser, -see gtk_file_chooser_add_filter(), but it is also possible -to manually use a filter on a file with gtk_file_filter_filter(). - - - - -#GtkFileChooser - - - - - - - - - - -The GtkFileFilter struct contains -only private fields and should not be directly accessed. - - - - - -A GtkFileFilterInfo struct is used -to pass information about the tested file to -gtk_file_filter_filter(). - - -@contains: Flags indicating which of the following fields need - are filled -@filename: the filename of the file being tested -@uri: the URI for the file being tested -@display_name: the string that will be used to display the file - in the file chooser -@mime_type: the mime type of the file - - - -These flags indicate what parts of a #GtkFileFilterInfo struct -are filled or need to be filled. - - -@GTK_FILE_FILTER_FILENAME: the filename of the file being tested -@GTK_FILE_FILTER_URI: the URI for the file being tested -@GTK_FILE_FILTER_DISPLAY_NAME: the string that will be used to - display the file in the file chooser -@GTK_FILE_FILTER_MIME_TYPE: the mime type of the file - - - -The type of function that is used with custom filters, -see gtk_file_filter_add_custom(). - - -@filter_info: a #GtkFileFilterInfo that is filled according - to the @needed flags passed to gtk_file_filter_add_custom() -@data: user data passed to gtk_file_filter_add_custom() -@Returns: %TRUE if the file should be displayed - - - - - - - -@void: -@Returns: - - - - - - - -@filter: -@name: - - - - - - - -@filter: -@Returns: - - - - - - - -@filter: -@mime_type: - - - - - - - -@filter: -@pattern: - - - - - - - -@filter: - - - - - - - -@filter: -@needed: -@func: -@data: -@notify: - - - - - - - -@filter: -@Returns: - - - - - - - -@filter: -@filter_info: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkfixed.sgml b/docs/reference/gtk/tmpl/gtkfixed.sgml deleted file mode 100644 index b2366aa2fd..0000000000 --- a/docs/reference/gtk/tmpl/gtkfixed.sgml +++ /dev/null @@ -1,133 +0,0 @@ - -GtkFixed - - -A container which allows you to position widgets at fixed coordinates - - - -The #GtkFixed widget is a container which can place child widgets at fixed -positions and with fixed sizes, given in pixels. #GtkFixed performs no -automatic layout management. - - - -For most applications, you should not use this container! It keeps -you from having to learn about the other GTK+ containers, but it -results in broken applications. -With #GtkFixed, the following things will result in truncated text, -overlapping widgets, and other display bugs: - - -Themes, which may change widget sizes. - - - -Fonts other than the one you used to write the app will of -course change the size of widgets containing text; keep in mind that -users may use a larger font because of difficulty reading the default, -or they may be using Windows or the framebuffer port of GTK+, where -different fonts are available. - - - - -Translation of text into other languages changes its size. Also, -display of non-English text will use a different font in many cases. - - - - - - -In addition, the fixed widget can't properly be mirrored in -right-to-left languages such as Hebrew and Arabic. i.e. normally GTK+ -will flip the interface to put labels to the right of the thing they -label, but it can't do that with #GtkFixed. So your application will -not be usable in right-to-left languages. - - - -Finally, fixed positioning makes it kind of annoying to add/remove GUI -elements, since you have to reposition all the other elements. This is -a long-term maintenance problem for your application. - - - -If you know none of these things are an issue for your application, -and prefer the simplicity of #GtkFixed, by all means use the -widget. But you should be aware of the tradeoffs. - - - - - - - - - - - - - - - -The #GtkFixed-struct struct contains the following fields. -(These fields should be considered read-only. They should never be set by -an application.) - - - - - - -#GList *children; -a list of #GtkFixedChild elements, containing the child widgets and -their positions. - - - - - - - - - - - - - - - - - - -Creates a new #GtkFixed. - - -@void: -@Returns: a new #GtkFixed. - - - - -Adds a widget to a #GtkFixed container at the given position. - - -@fixed: a #GtkFixed. -@widget: the widget to add. -@x: the horizontal position to place the widget at. -@y: the vertical position to place the widget at. - - - - -Moves a child of a #GtkFixed container to the given position. - - -@fixed: a #GtkFixed. -@widget: the child widget. -@x: the horizontal position to move the widget to. -@y: the vertical position to move the widget to. - - diff --git a/docs/reference/gtk/tmpl/gtkmain.sgml b/docs/reference/gtk/tmpl/gtkmain.sgml deleted file mode 100644 index c49a5d92c0..0000000000 --- a/docs/reference/gtk/tmpl/gtkmain.sgml +++ /dev/null @@ -1,626 +0,0 @@ - -Main loop and Events - - -Library initialization, main event loop, and events - - - - -Before using GTK+, you need to initialize it; initialization connects -to the window system display, and parses some standard command line -arguments. The gtk_init() function initializes GTK+. gtk_init() exits -the application if errors occur; to avoid this, use gtk_init_check(). -gtk_init_check() allows you to recover from a failed GTK+ -initialization - you might start up your application in text mode instead. - - - -Like all GUI toolkits, GTK+ uses an event-driven programming -model. When the user is doing nothing, GTK+ sits in the -main loop and waits for input. If the user -performs some action - say, a mouse click - then the main loop "wakes -up" and delivers an event to GTK+. GTK+ forwards the event to one or -more widgets. - - - -When widgets receive an event, they frequently emit one or more -signals. Signals notify your program that -"something interesting happened" by invoking functions you've -connected to the signal with g_signal_connect(). Functions connected -to a signal are often termed callbacks. - - - -When your callbacks are invoked, you would typically take some action -- for example, when an Open button is clicked you might display a -#GtkFileSelectionDialog. After a callback finishes, GTK+ will return -to the main loop and await more user input. - - - -Typical <function>main</function> function for a GTK+ application - -int -main (int argc, char **argv) -{ - /* Initialize i18n support */ - gtk_set_locale (); - - /* Initialize the widget set */ - gtk_init (&argc, &argv); - - /* Create the main window */ - mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); - - /* Set up our GUI elements */ - ... - - /* Show the application window */ - gtk_widget_show_all (mainwin); - - /* Enter the main event loop, and wait for user interaction */ - gtk_main (); - - /* The user lost interest */ - return 0; -} - - - - -It's OK to use the GLib main loop directly instead of gtk_main(), -though it involves slightly more typing. See #GMainLoop in the GLib -documentation. - - - - -See the GLib manual, especially #GMainLoop and signal-related -functions such as g_signal_connect(). - - - - - - - - - - - - - -@void: -@Returns: - - - - - - - -@void: - - - - - - - -@void: -@Returns: - - - - - - - -@argc: -@argv: -@Returns: - - - - - - - - - - - -@argc: -@argv: - - - - - - -@argc: -@argv: -@Returns: - - - - - - - -@argc: -@argv: -@parameter_string: -@entries: -@translation_domain: -@error: -@Returns: - - - - - - - -@open_default_display: -@Returns: - - - - -Checks if any events are pending. This can be used to update the GUI -and invoke timeouts etc. while doing some time intensive computation. - - - -Updating the GUI during a long computation. - - /* computation going on */ -... - while (gtk_events_pending ()) - gtk_main_iteration (); -... - /* computation continued */ - - - -@void: -@Returns: %TRUE if any events are pending, %FALSE otherwise. - - - - -Runs the main loop until gtk_main_quit() is called. You can nest calls to -gtk_main(). In that case gtk_main_quit() will make the innermost invocation -of the main loop return. - - -@void: - - - - -Asks for the current nesting level of the main loop. This can be useful -when calling gtk_quit_add(). - - -@void: -@Returns: the nesting level of the current invocation of the main loop. - - - - -Makes the innermost invocation of the main loop return when it regains -control. - - -@void: - - - - -Runs a single iteration of the mainloop. If no events are waiting to be -processed GTK+ will block until the next event is noticed. If you don't -want to block look at gtk_main_iteration_do() or check if any events are -pending with gtk_events_pending() first. - - -@void: -@Returns: %TRUE if gtk_main_quit() has been called for the innermost mainloop. - - - - -Runs a single iteration of the mainloop. If no events are available either -return or block dependent on the value of @blocking. - - -@blocking: %TRUE if you want GTK+ to block if no events are pending. -@Returns: %TRUE if gtk_main_quit() has been called for the innermost mainloop. - - - - -Processes a single GDK event. This is public only to allow filtering of events -between GDK and GTK+. You will not usually need to call this function directly. - - -While you should not call this function directly, you might want to know -how exactly events are handled. So here is what this function does with -the event: - - - - - Compress enter/leave notify events. If the event passed build an - enter/leave pair together with the next event (peeked from GDK) - both events are thrown away. This is to avoid a backlog of (de-)highlighting - widgets crossed by the pointer. - - - Find the widget which got the event. If the widget can't be determined - the event is thrown away unless it belongs to a INCR transaction. In that - case it is passed to gtk_selection_incr_event(). - - - Then the event is passed on a stack so you can query the currently handled - event with gtk_get_current_event(). - - - The event is sent to a widget. If a grab is active all events for - widgets that are not in the contained in the grab widget are sent to the - latter with a few exceptions: - - - - Deletion and destruction events are still sent to the event widget for - obvious reasons. - - - Events which directly relate to the visual representation of the event - widget. - - - Leave events are delivered to the event widget if there was an enter - event delivered to it before without the paired leave event. - - - Drag events are not redirected because it is unclear what the semantics - of that would be. - - - - Another point of interest might be that all key events are first passed - through the key snooper functions if there are any. Read the description - of gtk_key_snooper_install() if you need this feature. - - - After finishing the delivery the event is popped from the event stack. - - - -@event: An event to process (normally) passed by GDK. - - - - -Each GTK+ module must have a function gtk_module_init() with this prototype. -This function is called after loading the module with the @argc and @argv -cleaned from any arguments that GTK+ handles itself. - - -@argc: Pointer to the number of arguments remaining after gtk_init(). -@argv: Points to the argument vector. - - - - - - - -@display: -@Since: 2.2 - - - - -All this function does it to return %TRUE. This can be useful for example -if you want to inhibit the deletion of a window. Of course you should -not do this as the user expects a reaction from clicking the close -icon of the window... - - - -A persistent window - -##include <gtk/gtk.h> - -int -main (int argc, char **argv) -{ - GtkWidget *win, *but; - - gtk_init( &argc, &argv ); - - win = gtk_window_new (GTK_WINDOW_TOPLEVEL); - g_signal_connect (win, "delete-event", - G_CALLBACK (gtk_true), NULL); - g_signal_connect (win, "destroy", - G_CALLBACK (gtk_main_quit), NULL); - - but = gtk_button_new_with_label ("Close yourself. I mean it!"); - g_signal_connect_swapped (but, "clicked", - G_CALLBACK (gtk_object_destroy), win); - gtk_container_add (GTK_CONTAINER (win), but); - - gtk_widget_show_all (win); - gtk_main (); - return 0; -} - - - -@void: -@Returns: %TRUE - - - - -Analogical to gtk_true() this function does nothing -but always returns %FALSE. - - -@void: -@Returns: %FALSE - - - - -Makes @widget the current grabbed widget. This means that interaction with -other widgets in the same application is blocked and mouse as well as -keyboard events are delivered to this widget. - - -If @widget is not sensitive, it is not set as the current grabbed -widget and this function does nothing. - - -@widget: The widget that grabs keyboard and pointer events. - - - - - - - -@void: -@Returns: - - - - -Removes the grab from the given widget. You have to pair calls to gtk_grab_add() -and gtk_grab_remove(). - - -If @widget does not have the grab, this function does nothing. - - -@widget: The widget which gives up the grab. - - - - - - - -@widget: -@device: -@block_others: - - - - - - - -@widget: -@device: - - - - - - - -@data: -@Returns: - - - - -Trigger destruction of @object in case the mainloop at level @main_level -is quit. - - -@main_level: Level of the mainloop which shall trigger the destruction. -@object: Object to be destroyed. -@Deprecated: This function is going to be removed in GTK+ 3.0 - - - - -Registers a function to be called when an instance of the mainloop is left. - - -@main_level: Level at which termination the function shall be called. You - can pass 0 here to have the function run at the termination of the current - mainloop. -@function: The function to call. This should return 0 to be removed from the - list of quit handlers. Otherwise the function might be called again. -@data: Pointer to pass when calling @function. -@Returns: A handle for this quit handler (you need this for gtk_quit_remove()) - or 0 if you passed a %NULL pointer in @function. -@Deprecated: This function is going to be removed in GTK+ 3.0 - - - - - - - -@object: -@data: -@n_args: -@args: - - - - - - - -@type: -@name: - - - -Registers a function to be called when an instance of the mainloop is left. -In comparison to gtk_quit_add() this function adds the possibility to -pass a marshaller and a function to be called when the quit handler is freed. - - -The former can be used to run interpreted code instead of a compiled function -while the latter can be used to free the information stored in @data (while -you can do this in @function as well)... So this function will mostly be -used by GTK+ wrappers for languages other than C. - - -@main_level: Level at which termination the function shall be called. You - can pass 0 here to have the function run at the termination of the current - mainloop. -@function: The function to call. This should return 0 to be removed from the - list of quit handlers. Otherwise the function might be called again. -@marshal: The marshaller to be used. If this is non-%NULL, @function is - ignored. -@data: Pointer to pass when calling @function. -@destroy: Function to call to destruct @data. Gets @data as argument. -@Returns: A handle for this quit handler (you need this for gtk_quit_remove()) - or 0 if you passed a %NULL pointer in @function. -@Deprecated: This function is going to be removed in GTK+ 3.0 - - - - -Removes a quit handler by its identifier. - - -@quit_handler_id: Identifier for the handler returned when installing it. -@Deprecated: This function is going to be removed in GTK+ 3.0 - - - - -Removes a quit handler identified by its @data field. - - -@data: The pointer passed as @data to gtk_quit_add() or gtk_quit_add_full(). -@Deprecated: This function is going to be removed in GTK+ 3.0 - - - - -Use this priority for resizing related stuff. It is used internally by -GTK+ to compute the sizes of widgets. This priority is higher than -%GDK_PRIORITY_REDRAW to avoid resizing a widget which was just redrawn. - - - - - - -Installs a key snooper function, which will get called on all key events -before delivering them normally. - - -@snooper: a #GtkKeySnoopFunc. -@func_data: data to pass to @snooper. -@Returns: a unique id for this key snooper for use with gtk_key_snooper_remove(). - - - - -Key snooper functions are called before normal event delivery. -They can be used to implement custom key event handling. - - -@grab_widget: the widget to which the event will be delivered. -@event: the key event. -@func_data: the @func_data supplied to gtk_key_snooper_install(). -@Returns: %TRUE to stop further processing of @event, %FALSE to continue. - - - - -Removes the key snooper function with the given id. - - -@snooper_handler_id: Identifies the key snooper to remove. - - - - - - - -@void: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@state: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@event: -@Returns: - - - - - - - -@widget: -@event: - - diff --git a/docs/reference/gtk/tmpl/gtkmenu.sgml b/docs/reference/gtk/tmpl/gtkmenu.sgml deleted file mode 100644 index 2ca8386954..0000000000 --- a/docs/reference/gtk/tmpl/gtkmenu.sgml +++ /dev/null @@ -1,494 +0,0 @@ - -GtkMenu - - -A menu widget - - - -A #GtkMenu is a #GtkMenuShell that implements a drop down menu consisting of -a list of #GtkMenuItem objects which can be navigated and activated by the -user to perform application functions. - - - -A #GtkMenu is most commonly dropped down by activating a #GtkMenuItem in a -#GtkMenuBar or popped up by activating a #GtkMenuItem in another #GtkMenu. - - - -A #GtkMenu can also be popped up by activating a #GtkOptionMenu. -Other composite widgets such as the #GtkNotebook can pop up a #GtkMenu -as well. - - - -Applications can display a #GtkMenu as a popup menu by calling the -gtk_menu_popup() function. The example below shows how an application -can pop up a menu when the 3rd mouse button is pressed. - - - -Connecting the popup signal handler. - - /* connect our handler which will popup the menu */ - g_signal_connect_swapped (window, "button_press_event", - G_CALLBACK (my_popup_handler), menu); - - - - -Signal handler which displays a popup menu. - -static gint -my_popup_handler (GtkWidget *widget, GdkEvent *event) -{ - GtkMenu *menu; - GdkEventButton *event_button; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_MENU (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - /* The "widget" is the menu that was supplied when - * g_signal_connect_swapped() was called. - */ - menu = GTK_MENU (widget); - - if (event->type == GDK_BUTTON_PRESS) - { - event_button = (GdkEventButton *) event; - if (event_button->button == 3) - { - gtk_menu_popup (menu, NULL, NULL, NULL, NULL, - event_button->button, event_button->time); - return TRUE; - } - } - - return FALSE; -} - - - - - - - - - - - - - - - - -The #GtkMenu struct contains private data only, and -should be accessed using the functions below. - - - - - - - - -@menu: the object which received the signal. -@arg1: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Creates a new #GtkMenu. - - -@void: -@Returns: a new #GtkMenu. - - - - - - - -@menu: -@screen: - - - - -Moves a #GtkMenuItem to a new position within the #GtkMenu. - - -@menu: a #GtkMenu. -@child: the #GtkMenuItem to move. -@position: the new position to place @child. Positions are numbered from -0 to n-1. - - - - - - - -@menu: -@child: -@left_attach: -@right_attach: -@top_attach: -@bottom_attach: - - - - - - - -@menu: -@device: -@parent_menu_shell: -@parent_menu_item: -@func: -@data: -@destroy: -@button: -@activate_time: - - - - - -@menu: -@parent_menu_shell: -@parent_menu_item: -@func: -@data: -@button: -@activate_time: - - - - -Set the #GtkAccelGroup which holds global accelerators for the menu. -This accelerator group needs to also be added to all windows that -this menu is being used in with gtk_window_add_accel_group(), in order -for those windows to support all the accelerators contained in this group. - - -@menu: a #GtkMenu. -@accel_group: the #GtkAccelGroup to be associated with the menu. - - - - -Gets the #GtkAccelGroup which holds global accelerators for the menu. -See gtk_menu_set_accel_group(). - - -@menu: a #GtkMenu. -@Returns: the #GtkAccelGroup associated with the menu. - - - - - - - -@menu: -@accel_path: - - - - - - - -@menu: -@Returns: - - - - - - -@menu: -@title: - - - - - - - -@menu: -@Returns: - - - - - - - -@menu: -@monitor_num: - - - - - - - -@menu: -@Returns: - - - - - - - -@menu: -@Returns: - - - - - - - -@menu: -@reserve_toggle_size: - - - - - - - -@menu: -@Returns: - - - - -Removes the menu from the screen. - - -@menu: a #GtkMenu. - - - - -Repositions the menu according to its position function. - - -@menu: a #GtkMenu. - - - - -Returns the selected menu item from the menu. This is used by the -#GtkOptionMenu. - - -@menu: a #GtkMenu. -@Returns: the #GtkMenuItem that was last selected in the menu. If a -selection has not yet been made, the first menu item is selected. - - - - -Selects the specified menu item within the menu. This is used by the -#GtkOptionMenu and should not be used by anyone else. - - -@menu: a #GtkMenu. -@index_: the index of the menu item to select. Index values are from -0 to n-1. - - - - -Changes the tearoff state of the menu. A menu is normally displayed -as drop down menu which persists as long as the menu is active. It can -also be displayed as a tearoff menu which persists until it is closed -or reattached. - - -@menu: a #GtkMenu. -@torn_off: If %TRUE, menu is displayed as a tearoff menu. - - - - -Attaches the menu to the widget and provides a callback function that will -be invoked when the menu calls gtk_menu_detach() during its destruction. - - -@menu: a #GtkMenu. -@attach_widget: the #GtkWidget that the menu will be attached to. -@detacher: the user supplied callback function that will be called when -the menu calls gtk_menu_detach(). - - - - -Detaches the menu from the widget to which it had been attached. -This function will call the callback function, @detacher, provided -when the gtk_menu_attach_to_widget() function was called. - - -@menu: a #GtkMenu. - - - - -Returns the #GtkWidget that the menu is attached to. - - -@menu: a #GtkMenu. -@Returns: the #GtkWidget that the menu is attached to. - - - - - - - -@widget: -@Returns: - - - - -A user function supplied when calling gtk_menu_popup() which controls the -positioning of the menu when it is displayed. The function sets the @x -and @y parameters to the coordinates where the menu is to be drawn. -To make the menu appear on a different monitor than the mouse pointer, -gtk_menu_set_monitor() must be called. - - -@menu: a #GtkMenu. -@x: address of the #gint representing the horizontal position where the -menu shall be drawn. This is an output parameter. -@y: address of the #gint representing the vertical position where the -menu shall be drawn. This is an output parameter. -@push_in: This parameter controls how menus placed outside the monitor are handled. - If this is set to %TRUE and part of the menu is outside the monitor then - GTK+ pushes the window into the visible area, effectively modifying the - popup position. - Note that moving and possibly resizing the menu around will alter the - scroll position to keep the menu items "in place", i.e. at the same monitor - position they would have been without resizing. - In practice, this behavior is only useful for combobox popups or option - menus and cannot be used to simply confine a menu to monitor boundaries. - In that case, changing the scroll offset is not desirable. -@user_data: the data supplied by the user in the gtk_menu_popup() @data -parameter. - - - - -A user function supplied when calling gtk_menu_attach_to_widget() which -will be called when the menu is later detached from the widget. - - -@attach_widget: the #GtkWidget that the menu is being detached from. -@menu: the #GtkMenu being detached. - - diff --git a/docs/reference/gtk/tmpl/gtkmenubar.sgml b/docs/reference/gtk/tmpl/gtkmenubar.sgml deleted file mode 100644 index 89504630b8..0000000000 --- a/docs/reference/gtk/tmpl/gtkmenubar.sgml +++ /dev/null @@ -1,104 +0,0 @@ - -GtkMenuBar - - -A subclass widget for GtkMenuShell which holds GtkMenuItem widgets - - - -The #GtkMenuBar is a subclass of #GtkMenuShell which contains one to many #GtkMenuItem. The result is a standard menu bar which can hold many menu items. #GtkMenuBar allows for a shadow type to be set for aesthetic purposes. The shadow types are defined in the #gtk_menu_bar_set_shadow_type function. - - - - -#GtkMenuShell, #GtkMenu, #GtkMenuItem - - - - - - - - - - -The #GtkMenuBar struct contains the following fields. (These fields should be considered read-only. They should never be set by an application.) - - - - - - - - - - - - - - - - - - - - - - - - - -Creates the new #GtkMenuBar - - -@void: -@Returns: the #GtkMenuBar - - - - -Determines how widgets should be packed insided menubars and -menuitems contained in menubars. - - -@GTK_PACK_DIRECTION_LTR: Widgets are packed left-to-right. -@GTK_PACK_DIRECTION_RTL: Widgets are packed right-to-left. -@GTK_PACK_DIRECTION_TTB: Widgets are packed top-to-bottom. -@GTK_PACK_DIRECTION_BTT: Widgets are packed bottom-to-top. - - - - - - -@menubar: -@pack_dir: - - - - - - - -@menubar: -@Returns: - - - - - - - -@menubar: -@child_pack_dir: - - - - - - - -@menubar: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkmenushell.sgml b/docs/reference/gtk/tmpl/gtkmenushell.sgml deleted file mode 100644 index 2153098b23..0000000000 --- a/docs/reference/gtk/tmpl/gtkmenushell.sgml +++ /dev/null @@ -1,224 +0,0 @@ - -GtkMenuShell - - -A base class for menu objects - - - -A #GtkMenuShell is the abstract base class used to derive the -#GtkMenu and #GtkMenuBar subclasses. - - - -A #GtkMenuShell is a container of #GtkMenuItem objects arranged in a -list which can be navigated, selected, and activated by the user to perform -application functions. A #GtkMenuItem can have a submenu associated with it, -allowing for nested hierarchical menus. - - - - - - - - - - - - - - - -The #GtkMenuShell-struct struct contains the following fields. -(These fields should be considered read-only. They should never be set by -an application.) - - - - - - -#GList *children; -The list of #GtkMenuItem objects contained by this #GtkMenuShell. - - - - - - - - -An action signal that activates the current menu item within the menu -shell. - - -@menushell: the object which received the signal. -@force_hide: if TRUE, hide the menu after activating the menu item. - - - -An action signal which cancels the selection within the menu shell. -Causes the GtkMenuShell::selection-done signal to be emitted. - - -@menushell: the object which received the signal. - - - - - - -@menushell: the object which received the signal. -@arg1: - - - -This signal is emitted when a menu shell is deactivated. - - -@menushell: the object which received the signal. - - - -An action signal which moves the current menu item in the direction -specified by @direction. - - -@menushell: the object which received the signal. -@direction: the direction to move. - - - - - - -@menushell: the object which received the signal. -@arg1: -@Returns: - - - -This signal is emitted when a selection has been completed within a menu -shell. - - -@menushell: the object which received the signal. - - - - - - - - -Adds a new #GtkMenuItem to the end of the menu shell's item list. - - -@menu_shell: a #GtkMenuShell. -@child: The #GtkMenuItem to add. - - - - -Adds a new #GtkMenuItem to the beginning of the menu shell's item list. - - -@menu_shell: a #GtkMenuShell. -@child: The #GtkMenuItem to add. - - - - -Adds a new #GtkMenuItem to the menu shell's item list at the position -indicated by @position. - - -@menu_shell: a #GtkMenuShell. -@child: The #GtkMenuItem to add. -@position: The position in the item list where @child is added. -Positions are numbered from 0 to n-1. - - - - -Deactivates the menu shell. Typically this results in the menu shell -being erased from the screen. - - -@menu_shell: a #GtkMenuShell. - - - - -Selects the menu item from the menu shell. - - -@menu_shell: a #GtkMenuShell. -@menu_item: The #GtkMenuItem to select. - - - - - - - -@menu_shell: -@search_sensitive: - - - - -Deselects the currently selected item from the menu shell, if any. - - -@menu_shell: a #GtkMenuShell. - - - - -Activates the menu item within the menu shell. - - -@menu_shell: a #GtkMenuShell. -@menu_item: The #GtkMenuItem to activate. -@force_deactivate: If TRUE, force the deactivation of the menu shell -after the menu item is activated. - - - - - - - -@menu_shell: - - - - - - - -@menu_shell: -@take_focus: - - - - - - - -@menu_shell: -@Returns: - - - - -An enumeration representing directional movements within a menu. - - -@GTK_MENU_DIR_PARENT: To the parent menu shell. -@GTK_MENU_DIR_CHILD: To the submenu, if any, associated with the item. -@GTK_MENU_DIR_NEXT: To the next menu item. -@GTK_MENU_DIR_PREV: To the previous menu item. - diff --git a/docs/reference/gtk/tmpl/gtkmenutoolbutton.sgml b/docs/reference/gtk/tmpl/gtkmenutoolbutton.sgml index c56eab0d76..5326d02498 100644 --- a/docs/reference/gtk/tmpl/gtkmenutoolbutton.sgml +++ b/docs/reference/gtk/tmpl/gtkmenutoolbutton.sgml @@ -16,6 +16,24 @@ A GtkToolItem containing a button with an additional dropdown menu #GtkMenuToolButton. Use gtk_menu_tool_button_new_from_stock() to create a new #GtkMenuToolButton containing a stock item. + +GtkMenuToolButton as GtkBuildable + +The GtkMenuToolButton implementation of the GtkBuildable interface +supports adding a menu by specifying "menu" as the "type" +attribute of a <child> element. + + +A UI definition fragment with menus + + + + + +]]> + + diff --git a/docs/reference/gtk/tmpl/gtkprintjob.sgml b/docs/reference/gtk/tmpl/gtkprintjob.sgml deleted file mode 100644 index 09d2681327..0000000000 --- a/docs/reference/gtk/tmpl/gtkprintjob.sgml +++ /dev/null @@ -1,186 +0,0 @@ - -GtkPrintJob - - -Represents a print job - - - -A #GtkPrintJob object represents a job that is sent to a -printer. You only need to deal directly with print jobs if -you use the non-portable #GtkPrintUnixDialog API. - - -Use gtk_print_job_get_surface() to obtain the cairo surface -onto which the pages must be drawn. Use gtk_print_job_send() -to send the finished job to the printer. If you don't use cairo -#GtkPrintJob also supports printing of manually generated postscript, -via gtk_print_job_set_source_file(). - - - - - -Printing support was added in GTK+ 2.10. - - - - - - - - - - - - - - - -The GtkPrintJob struct contains only private members -and should not be directly accessed. - - - - - - - - -@printjob: the object which received the signal. - - - - - - - - - - - - - - - - - - - - - - - - - - - - -The type of callback that is passed to gtk_print_job_send(). -It is called when the print job has been completely sent. - - -@print_job: the #GtkPrintJob -@user_data: user data that has been passed to gtk_print_job_send() -@error: a #GError that contains error information if the sending - of the print job failed, otherwise %NULL - - - - - - - -@title: -@printer: -@settings: -@page_setup: -@Returns: - - - - - - - -@job: -@Returns: - - - - - - - -@job: -@Returns: - - - - - - - -@job: -@Returns: - - - - - - - -@job: -@Returns: - - - - - - - -@job: -@filename: -@error: -@Returns: - - - - - - - -@job: -@error: -@Returns: - - - - - - - -@job: -@callback: -@user_data: -@dnotify: - - - - - - - -@job: -@track_status: - - - - - - - -@job: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtkprintoperation.sgml b/docs/reference/gtk/tmpl/gtkprintoperation.sgml index 00cc328b35..0b0446026e 100644 --- a/docs/reference/gtk/tmpl/gtkprintoperation.sgml +++ b/docs/reference/gtk/tmpl/gtkprintoperation.sgml @@ -630,14 +630,11 @@ The #GQuark used for #GtkPrintError errors. -The type of function that is passed to gtk_print_run_page_setup_dialog_async(). -This function will be called when the page setup dialog is dismissed, and -also serves as destroy notify for @data. + -@page_setup: the #GtkPageSetup that has been -@data: user data that has been passed to - gtk_print_run_page_setup_dialog_async(). +@page_setup: +@data: diff --git a/docs/reference/gtk/tmpl/gtkselection.sgml b/docs/reference/gtk/tmpl/gtkselection.sgml deleted file mode 100644 index 4d6542d720..0000000000 --- a/docs/reference/gtk/tmpl/gtkselection.sgml +++ /dev/null @@ -1,542 +0,0 @@ - -Selections - - -Functions for handling inter-process communication via selections - - - - -The selection mechanism provides the basis for different types -of communication between processes. In particular, drag and drop and -#GtkClipboard work via selections. You will very seldom or -never need to use most of the functions in this section directly; -#GtkClipboard provides a nicer interface to the same functionality. - - -Some of the datatypes defined this section are used in -the #GtkClipboard and drag-and-drop API's as well. The -#GtkTargetEntry structure and #GtkTargetList objects represent -lists of data types that are supported when sending or -receiving data. The #GtkSelectionData object is used to -store a chunk of data along with the data type and other -associated information. - - - - - - - -#GtkWidget -Much of the operation of selections happens via - signals for #GtkWidget. In particular, if you are - using the functions in this section, you may need - to pay attention to ::selection_get, - ::selection_received, and :selection_clear_event - signals. - - - - - - - - - - - - - - -A #GtkTargetEntry structure represents a single type of -data than can be supplied for by a widget for a selection -or for supplied or received during drag-and-drop. It -contains a string representing the drag type, a flags -field (used only for drag and drop - see #GtkTargetFlags), -and an application assigned integer ID. The integer -ID will later be passed as a signal parameter for signals -like "selection_get". It allows the application to identify -the target type without extensive string compares. - - -@target: -@flags: -@info: - - - -A #GtkTargetList structure is a reference counted list -of #GtkTargetPair. It is used to represent the same -information as a table of #GtkTargetEntry, but in -an efficient form. This structure should be treated as -opaque. - - -@list: -@ref_count: - - - -Internally used structure in the drag-and-drop and -selection handling code. - - -@target: -@flags: -@info: - - - - - - -@target: -@flags: -@info: -@Returns: - - - - - - - -@data: -@Returns: - - - - - - - -@data: - - - - - - -@targets: -@ntargets: -@Returns: - - - - - - -@list: -@Returns: - - - - - - -@list: - - - - - - -@list: -@target: -@flags: -@info: - - - - - - -@list: -@targets: -@ntargets: - - - - - - - -@list: -@info: - - - - - - - -@list: -@info: -@writable: - - - - - - - -@list: -@info: - - - - - - - -@list: -@info: -@deserializable: -@buffer: - - - - - - -@list: -@target: - - - - - - -@list: -@target: -@info: -@Returns: - - - - - - - -@targets: -@n_targets: - - - - - - - -@list: -@n_targets: -@Returns: - - - - - - -@widget: -@selection: -@time_: -@Returns: - - - - - - - -@display: -@widget: -@selection: -@time_: -@Returns: - - - - - - -@widget: -@selection: -@target: -@info: - - - - - - -@widget: -@selection: -@targets: -@ntargets: - - - - - - - -@widget: -@selection: - - - - - - -@widget: -@selection: -@target: -@time_: -@Returns: x - - - - - - -@selection_data: -@type: -@format: -@data: -@length: - - - - - - - -@selection_data: -@str: -@len: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@pixbuf: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@uris: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@targets: -@n_atoms: -@Returns: - - - - - - - -@selection_data: -@writable: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@buffer: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@selection_data: -@Returns: - - - - - - - -@targets: -@n_targets: -@writable: -@Returns: - - - - - - - -@targets: -@n_targets: -@Returns: - - - - - - - -@targets: -@n_targets: -@Returns: - - - - - - - -@targets: -@n_targets: -@buffer: -@Returns: - - - - - - -@widget: - - - - - - -@data: -@Returns: - - - - - - -@data: - - diff --git a/docs/reference/gtk/tmpl/gtkspinbutton.sgml b/docs/reference/gtk/tmpl/gtkspinbutton.sgml deleted file mode 100644 index b6c899c5f3..0000000000 --- a/docs/reference/gtk/tmpl/gtkspinbutton.sgml +++ /dev/null @@ -1,482 +0,0 @@ - -GtkSpinButton - - -Retrieve an integer or floating-point number from the user - - - -A #GtkSpinButton is an ideal way to allow the user to set the value of some -attribute. Rather than having to directly type a number into a #GtkEntry, -#GtkSpinButton allows the user to click on one of two arrows to increment or -decrement the displayed value. A value can still be typed in, with the bonus -that it can be checked to ensure it is in a given range. - - -The main properties of a #GtkSpinButton are through a #GtkAdjustment. See the -#GtkAdjustment section for more details about an adjustment's properties. - - - -Using a <structname>GtkSpinButton</structname> to get an integer. - - -/* Provides a function to retrieve an integer value from a GtkSpinButton - * and creates a spin button to model percentage values. - */ - -gint grab_int_value (GtkSpinButton *a_spinner, gpointer user_data) { - return gtk_spin_button_get_value_as_int (a_spinner); -} - -void create_integer_spin_button (void) { - - GtkWidget *window, *spinner; - GtkAdjustment *spinner_adj; - - spinner_adj = gtk_adjustment_new (50.0, 0.0, 100.0, 1.0, 5.0, 5.0); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (window), 5); - - /* creates the spinner, with no decimal places */ - spinner = gtk_spin_button_new (spinner_adj, 1.0, 0); - gtk_container_add (GTK_CONTAINER (window), spinner); - - gtk_widget_show_all (window); - return; -} - - - - - - - -Using a <structname>GtkSpinButton</structname> to get a floating point value. - - -/* Provides a function to retrieve a floating point value from a - * GtkSpinButton, and creates a high precision spin button. - */ - -gfloat grab_int_value (GtkSpinButton *a_spinner, gpointer user_data) { - return gtk_spin_button_get_value (a_spinner); -} - -void create_floating_spin_button (void) { - - GtkWidget *window, *spinner; - GtkAdjustment *spinner_adj; - - spinner_adj = gtk_adjustment_new (2.500, 0.0, 5.0, 0.001, 0.1, 0.1); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (window), 5); - - /* creates the spinner, with three decimal places */ - spinner = gtk_spin_button_new (spinner_adj, 0.001, 3); - gtk_container_add (GTK_CONTAINER (window), spinner); - - gtk_widget_show_all (window); - return; -} - - - - - - - - - -#GtkEntry -retrieve text rather than numbers. - - - - - - - - - - - - -entry is the #GtkEntry part of the #GtkSpinButton -widget, and can be used accordingly. All other fields contain private data -and should only be modified using the functions below. - - - - - - - - -@spinbutton: the object which received the signal. -@arg1: - - - - - - -@spinbutton: the object which received the signal. -@arg1: -@Returns: - - - - - - -@spinbutton: the object which received the signal. -@Returns: - - - - - - -@spinbutton: the object which received the signal. - - - - - - -@spinbutton: the object which received the signal. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -the type of border that surrounds the arrows of a spin button. - - - - - - - - - -GTK_UPDATE_ALWAYS -When refreshing your #GtkSpinButton, the value is always displayed. - - -GTK_UPDATE_IF_VALID -When refreshing your #GtkSpinButton, the value is only displayed if it is valid within the bounds of the spin button's #GtkAdjustment. - - - - -@GTK_UPDATE_ALWAYS: -@GTK_UPDATE_IF_VALID: - - - - - - - - -GTK_SPIN_STEP_FORWARD, -GTK_SPIN_STEP_BACKWARD, -GTK_SPIN_PAGE_FORWARD, -GTK_SPIN_PAGE_BACKWARD -These values spin a #GtkSpinButton by the relevant values of the spin button's #GtkAdjustment. - - -GTK_SPIN_HOME, -GTK_SPIN_END -These set the spin button's value to the minimum or maxmimum possible values, (set by its #GtkAdjustment), respectively. - - -GTK_SPIN_USER_DEFINED -The programmer must specify the exact amount to spin the #GtkSpinButton. - - - - -@GTK_SPIN_STEP_FORWARD: -@GTK_SPIN_STEP_BACKWARD: -@GTK_SPIN_PAGE_FORWARD: -@GTK_SPIN_PAGE_BACKWARD: -@GTK_SPIN_HOME: -@GTK_SPIN_END: -@GTK_SPIN_USER_DEFINED: - - - - - - -@spin_button: -@adjustment: -@climb_rate: -@digits: - - - - -Creates a new #GtkSpinButton. - - -@adjustment: the #GtkAdjustment object that this spin button should use. -@climb_rate: specifies how much the spin button changes when an arrow is clicked on. -@digits: the number of decimal places to display. -@Returns: The new spin button as a #GtkWidget. - - - - - - - -@min: -@max: -@step: -@Returns: - - - - - - - -@spin_button: -@adjustment: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@digits: - - - - - - - -@spin_button: -@step: -@page: - - - - - - - -@spin_button: -@min: -@max: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@value: - - - - - - - -@spin_button: -@policy: - - - - - - - -@spin_button: -@numeric: - - - - - - - -@spin_button: -@direction: -@increment: - - - - - - - -@spin_button: -@wrap: - - - - - - - -@spin_button: -@snap_to_ticks: - - - - - - - -@spin_button: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@step: -@page: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@min: -@max: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@Returns: - - - - - - - -@spin_button: -@Returns: - - - - - - - - - diff --git a/docs/reference/gtk/tmpl/gtktextbuffer.sgml b/docs/reference/gtk/tmpl/gtktextbuffer.sgml index f7cfdef356..ff1c01a417 100644 --- a/docs/reference/gtk/tmpl/gtktextbuffer.sgml +++ b/docs/reference/gtk/tmpl/gtktextbuffer.sgml @@ -931,7 +931,7 @@ It must return the serialized form of the content. @register_buffer: the #GtkTextBuffer for which the format is registered -@content_buffer: the #GtkTextsBuffer to serialize +@content_buffer: the #GtkTextBuffer to serialize @start: start of the block of text to serialize @end: end of the block of text to serialize @length: Return location for the length of the serialized data diff --git a/docs/reference/gtk/tmpl/gtktexttag.sgml b/docs/reference/gtk/tmpl/gtktexttag.sgml deleted file mode 100644 index 85203a04d9..0000000000 --- a/docs/reference/gtk/tmpl/gtktexttag.sgml +++ /dev/null @@ -1,498 +0,0 @@ - -GtkTextTag - - -A tag that can be applied to text in a GtkTextBuffer - - - -You may wish to begin by reading the text widget -conceptual overview which gives an overview of all the objects and data -types related to the text widget and how they work together. - - - -Tags should be in the #GtkTextTagTable for a given #GtkTextBuffer -before using them with that buffer. - - - -gtk_text_buffer_create_tag() is the best way to create tags. -See gtk-demo for numerous examples. - - - -The "invisible" property was not implemented for GTK+ 2.0. -It is working (with minor issues) since 2.8. - - - - - - - - - - - - - - - - - - - - - - - - -@texttag: the object which received the signal. -@arg1: -@event: -@arg2: -@Returns: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Describes a type of line wrapping. - - -@GTK_WRAP_NONE: do not wrap lines; just make the text area wider -@GTK_WRAP_CHAR: wrap text, breaking lines anywhere the cursor can - appear (between characters, usually - if you want to - be technical, between graphemes, see - pango_get_log_attrs()) -@GTK_WRAP_WORD: wrap text, breaking lines in between words -@GTK_WRAP_WORD_CHAR: wrap text, breaking lines in between words, or if - that is not enough, also between graphemes. - - - -Using #GtkTextAttributes directly should rarely be necessary. It's -primarily useful with gtk_text_iter_get_attributes(). As with most -GTK+ structs, the fields in this struct should only be read, never -modified directly. - - -@appearance: pointer to sub-struct containing certain attributes -@justification: -@direction: -@font: -@font_scale: -@left_margin: -@indent: -@right_margin: -@pixels_above_lines: -@pixels_below_lines: -@pixels_inside_wrap: -@tabs: -@wrap_mode: -@language: -@invisible: -@bg_full_height: -@editable: - - - - - - -@name: -@Returns: - - - - - - - -@tag: -@Returns: - - - - - - - -@tag: -@priority: - - - - - - - -@tag: -@event_object: -@event: -@iter: -@Returns: - - - - - - - -@bg_color: -@fg_color: -@rise: -@underline: -@strikethrough: -@draw_bg: -@inside_selection: -@is_text: - - - - - - -@void: -@Returns: - - - - - - - -@src: -@Returns: - - - - - - - -@src: -@dest: - - - - - - - -@values: - - - - - - - -@values: -@Returns: - - diff --git a/docs/reference/gtk/tmpl/gtktreemodel.sgml b/docs/reference/gtk/tmpl/gtktreemodel.sgml deleted file mode 100644 index 07dcd45d0e..0000000000 --- a/docs/reference/gtk/tmpl/gtktreemodel.sgml +++ /dev/null @@ -1,864 +0,0 @@ - -GtkTreeModel - - -The tree interface used by GtkTreeView - - - -The #GtkTreeModel interface defines a generic tree interface for use by -the #GtkTreeView widget. It is an abstract interface, and is designed -to be usable with any appropriate data structure. The programmer just -has to implement this interface on their own data type for it to be -viewable by a #GtkTreeView widget. - - - -The model is represented as a hierarchical tree of strongly-typed, -columned data. In other words, the model can be seen as a tree where -every node has different values depending on which column is being -queried. The type of data found in a column is determined by using the -GType system (ie. #G_TYPE_INT, #GTK_TYPE_BUTTON, #G_TYPE_POINTER, etc.). -The types are homogeneous per column across all nodes. It is important -to note that this interface only provides a way of examining a model and -observing changes. The implementation of each individual model decides -how and if changes are made. - - - -In order to make life simpler for programmers who do not need to write -their own specialized model, two generic models are provided — the -#GtkTreeStore and the #GtkListStore. To use these, the developer simply -pushes data into these models as necessary. These models provide the -data structure as well as all appropriate tree interfaces. As a result, -implementing drag and drop, sorting, and storing data is trivial. For -the vast majority of trees and lists, these two models are sufficient. - - - -Models are accessed on a node/column level of granularity. One can -query for the value of a model at a certain node and a certain column -on that node. There are two structures used to reference a particular -node in a model. They are the #GtkTreePath and the #GtkTreeIter - - -Here, iter is short for iterator - - -Most of the interface consists of operations on a #GtkTreeIter. - - - -A path is essentially a potential node. It is a location on a model -that may or may not actually correspond to a node on a specific model. -The #GtkTreePath struct can be converted into either an array of -unsigned integers or a string. The string form is a list of numbers -separated by a colon. Each number refers to the offset at that level. -Thus, the path 0 refers to the root node and the path -2:4 refers to the fifth child of the third node. - - - -By contrast, a #GtkTreeIter is a reference to a specific node on a -specific model. It is a generic struct with an integer and three -generic pointers. These are filled in by the model in a model-specific -way. One can convert a path to an iterator by calling -gtk_tree_model_get_iter(). These iterators are the primary way of -accessing a model and are similar to the iterators used by -#GtkTextBuffer. They are generally statically allocated on the stack and -only used for a short time. The model interface defines a set of -operations using them for navigating the model. - - - -It is expected that models fill in the iterator with private data. For -example, the #GtkListStore model, which is internally a simple linked -list, stores a list node in one of the pointers. The #GtkTreeModelSort -stores an array and an offset in two of the pointers. Additionally, -there is an integer field. This field is generally filled with a unique -stamp per model. This stamp is for catching errors resulting from using -invalid iterators with a model. - - - -The lifecycle of an iterator can be a little confusing at first. -Iterators are expected to always be valid for as long as the model is -unchanged (and doesn't emit a signal). The model is considered to own -all outstanding iterators and nothing needs to be done to free them from -the user's point of view. Additionally, some models guarantee that an -iterator is valid for as long as the node it refers to is valid (most -notably the #GtkTreeStore and #GtkListStore). Although generally -uninteresting, as one always has to allow for the case where iterators -do not persist beyond a signal, some very important performance -enhancements were made in the sort model. As a result, the -#GTK_TREE_MODEL_ITERS_PERSIST flag was added to indicate this behavior. - - - -To help show some common operation of a model, some examples are -provided. The first example shows three ways of getting the iter at the -location 3:2:5. While the first method shown is easier, -the second is much more common, as you often get paths from callbacks. - - - -Acquiring a <structname>GtkTreeIter</structname> - -/* Three ways of getting the iter pointing to the location - */ -{ - GtkTreePath *path; - GtkTreeIter iter; - GtkTreeIter parent_iter; - - /* get the iterator from a string */ - gtk_tree_model_get_iter_from_string (model, &iter, "3:2:5"); - - /* get the iterator from a path */ - path = gtk_tree_path_new_from_string ("3:2:5"); - gtk_tree_model_get_iter (model, &iter, path); - gtk_tree_path_free (path); - - - /* walk the tree to find the iterator */ - gtk_tree_model_iter_nth_child (model, &iter, NULL, 3); - parent_iter = iter; - gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 2); - parent_iter = iter; - gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 5); -} - - - - - -This second example shows a quick way of iterating through a list and -getting a string and an integer from each row. The -populate_model function used below is not shown, as -it is specific to the #GtkListStore. For information on how to write -such a function, see the #GtkListStore documentation. - -Reading data from a <structname>GtkTreeModel</structname> - -enum -{ - STRING_COLUMN, - INT_COLUMN, - N_COLUMNS -}; - -{ - GtkTreeModel *list_store; - GtkTreeIter iter; - gboolean valid; - gint row_count = 0; - - /* make a new list_store */ - list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_INT); - - /* Fill the list store with data */ - populate_model (list_store); - - /* Get the first iter in the list */ - valid = gtk_tree_model_get_iter_first (list_store, &iter); - - while (valid) - { - /* Walk through the list, reading each row */ - gchar *str_data; - gint int_data; - - /* Make sure you terminate calls to gtk_tree_model_get() - * with a '-1' value - */ - gtk_tree_model_get (list_store, &iter, - STRING_COLUMN, &str_data, - INT_COLUMN, &int_data, - -1); - - /* Do something with the data */ - g_print ("Row %d: (%s,%d)\n", row_count, str_data, int_data); - g_free (str_data); - - row_count ++; - valid = gtk_tree_model_iter_next (list_store, &iter); - } -} - - - - - - -#GtkTreeView, #GtkTreeStore, #GtkListStore, GtkTreeDnd, #GtkTreeSortable - - - - - - - - - - - - - - - - - - - -@treemodel: the object which received the signal. -@arg1: -@arg2: - - - - - - -@treemodel: the object which received the signal. -@arg1: - - - - - - -@treemodel: the object which received the signal. -@arg1: -@arg2: - - - - - - -@treemodel: the object which received the signal. -@arg1: -@arg2: - - - - - - -@treemodel: the object which received the signal. -@arg1: -@arg2: -@arg3: - - - -The GtkTreeIter is the primary structure for -accessing a structure. Models are expected to put a unique integer in -the stamp member, and put model-specific -data in the three user_data members. - - -@stamp: A unique stamp to catch invalid iterators -@user_data: Model specific data -@user_data2: Model specific data -@user_data3: Model specific data - - - - - - - - - - - - - - - - - - -@g_iface: -@row_changed: -@row_inserted: -@row_has_child_toggled: -@row_deleted: -@rows_reordered: -@get_flags: -@get_n_columns: -@get_column_type: -@get_iter: -@get_path: -@get_value: -@iter_next: -@iter_children: -@iter_has_child: -@iter_n_children: -@iter_nth_child: -@iter_parent: -@ref_node: -@unref_node: - - - - - - -@model: The #GtkTreeModel currently being iterated -@path: The current #GtkTreePath -@iter: The current #GtkTreeIter -@data: The user data passed to gtk_tree_model_foreach() -@Returns: %TRUE to stop iterating, %FALSE to continue. - - - - -These flags indicate various properties of a #GtkTreeModel. They are -returned by gtk_tree_model_get_flags(), and must be static for the -lifetime of the object. A more complete description of -#GTK_TREE_MODEL_ITERS_PERSIST can be found in the overview of this -section. - - -@GTK_TREE_MODEL_ITERS_PERSIST: Iterators survive all signals emitted by the tree. -@GTK_TREE_MODEL_LIST_ONLY: The model is a list only, and never has children - - - - - - -@void: -@Returns: - - - - - - - -@path: -@Returns: - - - - - - - -@first_index: -@Varargs: -@Returns: - - - - - - - -@path: -@Returns: - - - - - - - -@void: -@Returns: - - - - - - - -@path: -@index_: - - - - - - - -@path: -@index_: - - - - - - - -@path: -@Returns: - - - - - - - -@path: -@Returns: - - - - - - - -@path: -@depth: -@Returns: - - - - - - - -@path: - - - - - - - -@path: -@Returns: - - - - - - - -@a: -@b: -@Returns: - - - - - - - -@path: - - - - - - - -@path: -@Returns: - - - - - - - -@path: -@Returns: - - - - - - - -@path: - - - - - - - -@path: -@descendant: -@Returns: - - - - - - - -@path: -@ancestor: -@Returns: - - - - - - - -@model: -@path: -@Returns: - - - - - - - -@proxy: -@model: -@path: -@Returns: - - - - - - - -@reference: -@Returns: - - - - - - - -@reference: -@Returns: - - - - - - - -@reference: -@Returns: - - - - - - - -@reference: - - - - - - - -@reference: -@Returns: - - - - - - - -@proxy: -@path: - - - - - - - -@proxy: -@path: - - - - - - - -@proxy: -@path: -@iter: -@new_order: - - - - - - - -@iter: -@Returns: - - - - - - - -@iter: - - - - - - - -@tree_model: -@Returns: - - - - - - - -@tree_model: -@Returns: - - - - - - - -@tree_model: -@index_: -@Returns: - - - - - - - -@tree_model: -@iter: -@path: -@Returns: - - - - - - - -@tree_model: -@iter: -@path_string: -@Returns: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: -@column: -@value: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: -@parent: -@Returns: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: -@parent: -@n: -@Returns: - - - - - - - -@tree_model: -@iter: -@child: -@Returns: - - - - - - - -@tree_model: -@iter: -@Returns: - - - - - - - -@tree_model: -@iter: - - - - - - - -@tree_model: -@iter: - - - - - - - -@tree_model: -@iter: -@Varargs: - - - - - - - -@tree_model: -@iter: -@var_args: - - - - - - - -@model: -@func: -@user_data: - - - - - - - -@tree_model: -@path: -@iter: - - - - - - - -@tree_model: -@path: -@iter: - - - - - - - -@tree_model: -@path: -@iter: - - - - - - - -@tree_model: -@path: - - - - - - - -@tree_model: -@path: -@iter: -@new_order: - - diff --git a/docs/reference/gtk/tree_widget.sgml b/docs/reference/gtk/tree_widget.sgml index bdd707d2a0..8a3f096b07 100644 --- a/docs/reference/gtk/tree_widget.sgml +++ b/docs/reference/gtk/tree_widget.sgml @@ -2,7 +2,7 @@ - + Tree and List Widget Overview 3 diff --git a/docs/reference/gtk/visual_index.xml b/docs/reference/gtk/visual_index.xml index 7a11071cef..b1e1fe1237 100644 --- a/docs/reference/gtk/visual_index.xml +++ b/docs/reference/gtk/visual_index.xml @@ -30,6 +30,9 @@ + + + @@ -123,6 +126,9 @@ + + + diff --git a/docs/reference/gtk/windows.sgml b/docs/reference/gtk/windows.sgml index f5918a18a4..7b3402e6e2 100644 --- a/docs/reference/gtk/windows.sgml +++ b/docs/reference/gtk/windows.sgml @@ -2,7 +2,7 @@ - + Using GTK+ on Windows 3 diff --git a/docs/reference/gtk/x11.sgml b/docs/reference/gtk/x11.sgml index dab177cbcf..0fede1b7fe 100644 --- a/docs/reference/gtk/x11.sgml +++ b/docs/reference/gtk/x11.sgml @@ -2,7 +2,7 @@ - + Using GTK+ on the X Window System 3 @@ -20,13 +20,13 @@ X11 aspects of using GTK+ GTK+ for the X Window System -On UNIX, the X backend is the default build for GTK+. So -you don't need to do anything special when compiling it, +On UNIX, the X backend is the default build for GTK+. +So you don't need to do anything special when compiling it, and everything should "just work." -To mix low-level Xlib routines into a GTK program, +To mix low-level Xlib routines into a GTK program, see GDK X Window System interaction in the GDK manual. @@ -35,8 +35,7 @@ System interaction in the GDK manual. X11-specific commandline options -The X backend understands some additional command line -arguments. +The X backend understands some additional command line arguments. @@ -44,34 +43,7 @@ arguments. The name of the X display to open instead of the one specified -in the DISPLAY environment variable. - - - - -<systemitem>--screen <replaceable>screen_number</replaceable></systemitem> - - - The number of the screen within the default display. This overrides - any screen number specified in the display name specified by - by he --display command line option or - the DISPLAY environment variable. If this screen - cannot be opened, then GTK+ will fall back to the screen - specified in the display name. This option is not useful - interactively; the intended purposes is that when a program - registers its command line with a session - manager for later restarting, it can save the - screen it is on, without having to worry if it might be - restarted on a different display. - - - - -<systemitem>--sync</systemitem> - - -Makes all X requests synchronously. This is a useful option for -debugging, but it will slow down the performance considerably. +in the DISPLAY environment variable. diff --git a/docs/reference/libgail-util/Makefile.am b/docs/reference/libgail-util/Makefile.am index cfd0f688d0..8c30e2daf7 100644 --- a/docs/reference/libgail-util/Makefile.am +++ b/docs/reference/libgail-util/Makefile.am @@ -1,5 +1,4 @@ ## Process this file with automake to produce Makefile.in -include $(top_srcdir)/Makefile.decl AUTOMAKE_OPTIONS = 1.7 @@ -27,10 +26,14 @@ GTKDOC_LIBS = $(top_builddir)/modules/other/gail/libgail-util/libgailutil.la # gtkdoc-mkdb related varaibles MKDB_OPTIONS = -content_files = +content_files = \ + version.xml HTML_IMAGES = include $(top_srcdir)/gtk-doc.make +# Other files to distribute +EXTRA_DIST += version.xml.in + -include $(top_srcdir)/git.mk diff --git a/docs/reference/libgail-util/gail-libgail-util-docs.sgml b/docs/reference/libgail-util/gail-libgail-util-docs.sgml index e35ae2b1d0..9e71f8aca2 100644 --- a/docs/reference/libgail-util/gail-libgail-util-docs.sgml +++ b/docs/reference/libgail-util/gail-libgail-util-docs.sgml @@ -2,6 +2,7 @@ + ]> diff --git a/docs/reference/libgail-util/version.xml.in b/docs/reference/libgail-util/version.xml.in new file mode 100644 index 0000000000..3bb59ac105 --- /dev/null +++ b/docs/reference/libgail-util/version.xml.in @@ -0,0 +1 @@ +@GTK_VERSION@ diff --git a/docs/tools/Makefile.am b/docs/tools/Makefile.am index def51f2eef..c4a1c8bfcb 100644 --- a/docs/tools/Makefile.am +++ b/docs/tools/Makefile.am @@ -1,22 +1,21 @@ include $(top_srcdir)/Makefile.decl -INCLUDES = \ - -I$(top_srcdir) \ - -I$(top_builddir)/gdk \ - -I$(top_srcdir)/gdk \ - -I$(top_srcdir)/gdk/x11 \ - $(GTK_DEBUG_FLAGS) \ +INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_builddir)/gdk \ + -I$(top_srcdir)/gdk \ + -I$(top_srcdir)/gdk/x11 \ + $(GTK_DEBUG_FLAGS) \ $(GTK_DEP_CFLAGS) -DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) +DEPS = \ + $(top_builddir)/gtk/libgtk-3.0.la -LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(GTK_DEP_LIBS) \ - $(GDK_DEP_LIBS) \ +LDADDS = \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ + $(GTK_DEP_LIBS) \ + $(GDK_DEP_LIBS) \ -lm if USE_X11 diff --git a/docs/tools/shooter.c b/docs/tools/shooter.c index f9492f62e1..fa7e8459c2 100644 --- a/docs/tools/shooter.c +++ b/docs/tools/shooter.c @@ -138,7 +138,7 @@ take_window_shot (Window child, else xid = child; - window = gdk_window_foreign_new (xid); + window = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), xid); width = gdk_window_get_width (window); height = gdk_window_get_height (window); diff --git a/docs/tools/widgets.c b/docs/tools/widgets.c index 73081038e6..e847442a88 100644 --- a/docs/tools/widgets.c +++ b/docs/tools/widgets.c @@ -1070,6 +1070,39 @@ create_assistant (void) return info; } +static WidgetInfo * +create_appchooserbutton (void) +{ + GtkWidget *picker; + GtkWidget *align, *vbox; + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); + align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + picker = gtk_app_chooser_button_new ("text/plain"); + gtk_container_add (GTK_CONTAINER (align), picker); + gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), + gtk_label_new ("Application Button"), + FALSE, FALSE, 0); + + return new_widget_info ("appchooserbutton", vbox, SMALL); +} + +static WidgetInfo * +create_appchooserdialog (void) +{ + WidgetInfo *info; + GtkWidget *widget; + + widget = gtk_app_chooser_dialog_new_for_content_type (NULL, 0, "image/png"); + gtk_window_set_default_size (GTK_WINDOW (widget), 200, 300); + + info = new_widget_info ("appchooserdialog", widget, ASIS); + info->include_decorations = TRUE; + + return info; +} + GList * get_all_widgets (void) { @@ -1117,6 +1150,8 @@ get_all_widgets (void) retval = g_list_prepend (retval, create_print_dialog ()); retval = g_list_prepend (retval, create_volume_button ()); retval = g_list_prepend (retval, create_switch ()); + retval = g_list_prepend (retval, create_appchooserbutton ()); + retval = g_list_prepend (retval, create_appchooserdialog ()); return retval; } diff --git a/docs/widget_system.txt b/docs/widget_system.txt index 1c2867cad5..9463f10db9 100644 --- a/docs/widget_system.txt +++ b/docs/widget_system.txt @@ -255,7 +255,7 @@ In the following widget->parent && GTK_WIDGET_MAPPED (widget->parent) && GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_CHILD_VISIBLE - => GTK_WIDGET_MAPPED (widget) + <=> GTK_WIDGET_MAPPED (widget) Note:, the definition diff --git a/examples/Makefile.am b/examples/Makefile.am index 0dbef0aa44..440197fd0e 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -45,8 +45,15 @@ INCLUDES = \ $(GTK_DEP_CFLAGS) LDADD = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) -noinst_PROGRAMS = hello-world window-default +drawing_LDADD = $(LDADD) \ + $(top_builddir)/gdk/libgdk-3.0.la + +noinst_PROGRAMS = \ + hello-world \ + window-default \ + bloatpad \ + grid-packing \ + drawing diff --git a/gtk/tests/gtk-example-application.c b/examples/bloatpad.c similarity index 100% rename from gtk/tests/gtk-example-application.c rename to examples/bloatpad.c diff --git a/examples/drawing.c b/examples/drawing.c new file mode 100644 index 0000000000..28f291b8b8 --- /dev/null +++ b/examples/drawing.c @@ -0,0 +1,200 @@ +#include + +/* Surface to store current scribbles */ +static cairo_surface_t *surface = NULL; + +static void +clear_surface (void) +{ + cairo_t *cr; + + cr = cairo_create (surface); + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_destroy (cr); +} + +/* Create a new surface of the appropriate size to store our scribbles */ +static gboolean +configure_event_cb (GtkWidget *widget, + GdkEventConfigure *event, + gpointer data) +{ + if (surface) + cairo_surface_destroy (surface); + + surface = gdk_window_create_similar_surface (gtk_widget_get_window (widget), + CAIRO_CONTENT_COLOR, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + + /* Initialize the surface to white */ + clear_surface (); + + /* We've handled the configure event, no need for further processing. */ + return TRUE; +} + +/* Redraw the screen from the surface. Note that the ::draw + * signal receives a ready-to-be-used cairo_t that is already + * clipped to only draw the exposed areas of the widget + */ +static gboolean +draw_cb (GtkWidget *widget, + cairo_t *cr, + gpointer data) +{ + cairo_set_source_surface (cr, surface, 0, 0); + cairo_paint (cr); + + return FALSE; +} + +/* Draw a rectangle on the surface at the given position */ +static void +draw_brush (GtkWidget *widget, + gdouble x, + gdouble y) +{ + cairo_t *cr; + + /* Paint to the surface, where we store our state */ + cr = cairo_create (surface); + + cairo_rectangle (cr, x - 3, y - 3, 6, 6); + cairo_fill (cr); + + cairo_destroy (cr); + + /* Now invalidate the affected region of the drawing area. */ + gtk_widget_queue_draw_area (widget, x - 3, y - 3, 6, 6); +} + +/* Handle button press events by either drawing a rectangle + * or clearing the surface, depending on which button was pressed. + * The ::button-press signal handler receives a GdkEventButton + * struct which contains this information. + */ +static gboolean +button_press_event_cb (GtkWidget *widget, + GdkEventButton *event, + gpointer data) +{ + /* paranoia check, in case we haven't gotten a configure event */ + if (surface == NULL) + return FALSE; + + if (event->button == 1) + { + draw_brush (widget, event->x, event->y); + } + else if (event->button == 3) + { + clear_surface (); + gtk_widget_queue_draw (widget); + } + + /* We've handled the event, stop processing */ + return TRUE; +} + +/* Handle motion events by continuing to draw if button 1 is + * still held down. The ::motion-notify signal handler receives + * a GdkEventMotion struct which contains this information. + */ +static gboolean +motion_notify_event_cb (GtkWidget *widget, + GdkEventMotion *event, + gpointer data) +{ + int x, y; + GdkModifierType state; + + /* paranoia check, in case we haven't gotten a configure event */ + if (surface == NULL) + return FALSE; + + /* This call is very important; it requests the next motion event. + * If you don't call gdk_window_get_pointer() you'll only get + * a single motion event. The reason is that we specified + * GDK_POINTER_MOTION_HINT_MASK to gtk_widget_set_events(). + * If we hadn't specified that, we could just use event->x, event->y + * as the pointer location. But we'd also get deluged in events. + * By requesting the next event as we handle the current one, + * we avoid getting a huge number of events faster than we + * can cope. + */ + gdk_window_get_pointer (event->window, &x, &y, &state); + + if (state & GDK_BUTTON1_MASK) + draw_brush (widget, x, y); + + /* We've handled it, stop processing */ + return TRUE; +} + +static void +close_window (void) +{ + if (surface) + cairo_surface_destroy (surface); + + gtk_main_quit (); +} + +int +main (int argc, + char *argv[]) +{ + GtkWidget *window; + GtkWidget *frame; + GtkWidget *da; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Drawing Area"); + + g_signal_connect (window, "destroy", G_CALLBACK (close_window), NULL); + + gtk_container_set_border_width (GTK_CONTAINER (window), 8); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (window), frame); + + da = gtk_drawing_area_new (); + /* set a minimum size */ + gtk_widget_set_size_request (da, 100, 100); + + gtk_container_add (GTK_CONTAINER (frame), da); + + /* Signals used to handle the backing surface */ + g_signal_connect (da, "draw", + G_CALLBACK (draw_cb), NULL); + g_signal_connect (da,"configure-event", + G_CALLBACK (configure_event_cb), NULL); + + /* Event signals */ + g_signal_connect (da, "motion-notify-event", + G_CALLBACK (motion_notify_event_cb), NULL); + g_signal_connect (da, "button-press-event", + G_CALLBACK (button_press_event_cb), NULL); + + /* Ask to receive events the drawing area doesn't normally + * subscribe to. In particular, we need to ask for the + * button press and motion notify events that want to handle. + */ + gtk_widget_set_events (da, gtk_widget_get_events (da) + | GDK_BUTTON_PRESS_MASK + | GDK_POINTER_MOTION_MASK + | GDK_POINTER_MOTION_HINT_MASK); + + gtk_widget_show_all (window); + + gtk_main (); + + return 0; +} diff --git a/examples/grid-packing.c b/examples/grid-packing.c new file mode 100644 index 0000000000..9943babac7 --- /dev/null +++ b/examples/grid-packing.c @@ -0,0 +1,73 @@ +#include + +static void +print_hello (GtkWidget *widget, + gpointer data) +{ + g_print ("Hello World\n"); +} + +int +main (int argc, + char *argv[]) +{ + GtkWidget *window; + GtkWidget *grid; + GtkWidget *button; + + /* This is called in all GTK applications. Arguments are parsed + * from the command line and are returned to the application. + */ + gtk_init (&argc, &argv); + + /* create a new window, and set its title */ + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Grid"); + g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + gtk_container_set_border_width (GTK_CONTAINER (window), 10); + + /* Here we construct the container that is going pack our buttons */ + grid = gtk_grid_new (); + + /* Pack the container in the window */ + gtk_container_add (GTK_CONTAINER (window), grid); + + button = gtk_button_new_with_label ("Button 1"); + g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); + + /* Place the first button in the grid cell (0, 0), and make it fill + * just 1 cell horizontally and vertically (ie no spanning) + */ + gtk_grid_attach (GTK_GRID (grid), button, 0, 0, 1, 1); + + button = gtk_button_new_with_label ("Button 2"); + g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL); + + /* Place the second button in the grid cell (1, 0), and make it fill + * just 1 cell horizontally and vertically (ie no spanning) + */ + gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 1); + + button = gtk_button_new_with_label ("Quit"); + g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL); + + /* Place the Quit button in the grid cell (0, 1), and make it + * span 2 columns. + */ + gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 2, 1); + + /* Now that we are done packing our widgets, we show them all + * in one go, by calling gtk_widget_show_all() on the window. + * This call recursively calls gtk_widget_show() on all widgets + * that are contained in the window, directly or indirectly. + */ + gtk_widget_show_all (window); + + /* All GTK applications must have a gtk_main(). Control ends here + * and waits for an event to occur (like a key press or a mouse event), + * until gtk_main_quit() is called. + */ + gtk_main (); + + return 0; +} diff --git a/examples/gtkdial/dial_test.c b/examples/gtkdial/dial_test.c index b82c921bec..a0884afdcf 100644 --- a/examples/gtkdial/dial_test.c +++ b/examples/gtkdial/dial_test.c @@ -9,7 +9,7 @@ void value_changed( GtkAdjustment *adjustment, { char buffer[16]; - sprintf(buffer,"%4.2f",adjustment->value); + sprintf(buffer,"%4.2f",gtk_adjustment_get_value (adjustment)); gtk_label_set_text (GTK_LABEL (label), buffer); } diff --git a/examples/gtkdial/gtkdial.c b/examples/gtkdial/gtkdial.c index 39338f67c6..8adb035c46 100644 --- a/examples/gtkdial/gtkdial.c +++ b/examples/gtkdial/gtkdial.c @@ -199,9 +199,9 @@ gtk_dial_set_adjustment (GtkDial *dial, G_CALLBACK (gtk_dial_adjustment_value_changed), (gpointer) dial); - dial->old_value = adjustment->value; - dial->old_lower = adjustment->lower; - dial->old_upper = adjustment->upper; + dial->old_value = gtk_adjustment_get_value (adjustment); + dial->old_lower = gtk_adjustment_get_lower (adjustment); + dial->old_upper = gtk_adjustment_get_upper (adjustment); gtk_dial_update (dial); } @@ -314,8 +314,8 @@ gtk_dial_expose( GtkWidget *widget, xc = widget->allocation.width / 2; yc = widget->allocation.height / 2; - upper = dial->adjustment->upper; - lower = dial->adjustment->lower; + upper = gtk_adjustment_get_upper (dial->adjustment); + lower = gtk_adjustment_get_lower (dial->adjustment); /* Erase old pointer */ @@ -490,7 +490,7 @@ gtk_dial_button_release( GtkWidget *widget, g_source_remove (dial->timer); if ((dial->policy != GTK_UPDATE_CONTINUOUS) && - (dial->old_value != dial->adjustment->value)) + (dial->old_value != gtk_adjustment_get_value (dial->adjustment))) g_signal_emit_by_name (dial->adjustment, "value_changed"); } @@ -566,7 +566,7 @@ gtk_dial_update_mouse( GtkDial *dial, gint x, gint y ) xc = GTK_WIDGET(dial)->allocation.width / 2; yc = GTK_WIDGET(dial)->allocation.height / 2; - old_value = dial->adjustment->value; + old_value = gtk_adjustment_get_value (dial->adjustment); dial->angle = atan2(yc-y, x-xc); if (dial->angle < -M_PI/2.) @@ -578,10 +578,10 @@ gtk_dial_update_mouse( GtkDial *dial, gint x, gint y ) if (dial->angle > 7.*M_PI/6.) dial->angle = 7.*M_PI/6.; - dial->adjustment->value = dial->adjustment->lower + (7.*M_PI/6 - dial->angle) * - (dial->adjustment->upper - dial->adjustment->lower) / (4.*M_PI/3.); + gtk_adjustment_get_value (dial->adjustment) = gtk_adjustment_get_lower (dial->adjustment) + (7.*M_PI/6 - dial->angle) * + (gtk_adjustment_get_upper (dial->adjustment) - gtk_adjustment_get_lower (dial->adjustment)) / (4.*M_PI/3.); - if (dial->adjustment->value != old_value) + if (gtk_adjustment_get_value (dial->adjustment) != old_value) { if (dial->policy == GTK_UPDATE_CONTINUOUS) { @@ -612,22 +612,22 @@ gtk_dial_update (GtkDial *dial) g_return_if_fail (dial != NULL); g_return_if_fail (GTK_IS_DIAL (dial)); - new_value = dial->adjustment->value; + new_value = gtk_adjustment_get_value (dial->adjustment); - if (new_value < dial->adjustment->lower) - new_value = dial->adjustment->lower; + if (new_value < gtk_adjustment_get_lower (dial->adjustment)) + new_value = gtk_adjustment_get_lower (dial->adjustment); - if (new_value > dial->adjustment->upper) - new_value = dial->adjustment->upper; + if (new_value > gtk_adjustment_get_upper (dial->adjustment)) + new_value = gtk_adjustment_get_upper (dial->adjustment); - if (new_value != dial->adjustment->value) + if (new_value != gtk_adjustment_get_value (dial->adjustment)) { - dial->adjustment->value = new_value; + gtk_adjustment_get_value (dial->adjustment) = new_value; g_signal_emit_by_name (dial->adjustment, "value_changed"); } - dial->angle = 7.*M_PI/6. - (new_value - dial->adjustment->lower) * 4.*M_PI/3. / - (dial->adjustment->upper - dial->adjustment->lower); + dial->angle = 7.*M_PI/6. - (new_value - gtk_adjustment_get_lower (dial->adjustment)) * 4.*M_PI/3. / + (gtk_adjustment_get_upper (dial->adjustment) - gtk_adjustment_get_lower (dial->adjustment)); gtk_widget_queue_draw (GTK_WIDGET (dial)); } @@ -643,15 +643,15 @@ gtk_dial_adjustment_changed (GtkAdjustment *adjustment, dial = GTK_DIAL (data); - if ((dial->old_value != adjustment->value) || - (dial->old_lower != adjustment->lower) || - (dial->old_upper != adjustment->upper)) + if ((dial->old_value != gtk_adjustment_get_value (adjustment)) || + (dial->old_lower != gtk_adjustment_get_lower (adjustment)) || + (dial->old_upper != gtk_adjustment_get_upper (adjustment))) { gtk_dial_update (dial); - dial->old_value = adjustment->value; - dial->old_lower = adjustment->lower; - dial->old_upper = adjustment->upper; + dial->old_value = gtk_adjustment_get_value (adjustment); + dial->old_lower = gtk_adjustment_get_lower (adjustment); + dial->old_upper = gtk_adjustment_get_upper (adjustment); } } @@ -666,10 +666,10 @@ gtk_dial_adjustment_value_changed (GtkAdjustment *adjustment, dial = GTK_DIAL (data); - if (dial->old_value != adjustment->value) + if (dial->old_value != gtk_adjustment_get_value (adjustment)) { gtk_dial_update (dial); - dial->old_value = adjustment->value; + dial->old_value = gtk_adjustment_get_value (adjustment); } } diff --git a/examples/hello-world.c b/examples/hello-world.c index 50c792f12f..204b46eb4d 100644 --- a/examples/hello-world.c +++ b/examples/hello-world.c @@ -1,7 +1,8 @@ #include /* This is a callback function. The data arguments are ignored - * in this example. More on callbacks below. */ + * in this example. More on callbacks below. + */ static void print_hello (GtkWidget *widget, gpointer data) diff --git a/gdk-3.0-uninstalled.pc.in b/gdk-3.0-uninstalled.pc.in deleted file mode 100644 index 45adcf0f06..0000000000 --- a/gdk-3.0-uninstalled.pc.in +++ /dev/null @@ -1,8 +0,0 @@ -target=@gdktarget@ - -Name: GDK Uninstalled -Description: GTK+ Drawing Kit (${target} target), Not Installed -Version: @VERSION@ -Requires: gdk-pixbuf-@GTK_API_VERSION@-uninstalled @GDK_PACKAGES@ -Libs: ${pc_top_builddir}/${pcfiledir}/gdk/libgdk-${target}-@GTK_API_VERSION@.la @GDK_EXTRA_LIBS@ -Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@/gdk -I${pc_top_builddir}/${pcfiledir}/@srcdir@ -I${pc_top_builddir}/${pcfiledir} @GDK_EXTRA_CFLAGS@ diff --git a/gdk-3.0.pc.in b/gdk-3.0.pc.in index fe21977748..5c7d27e51b 100644 --- a/gdk-3.0.pc.in +++ b/gdk-3.0.pc.in @@ -2,11 +2,11 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ -target=@gdktarget@ +targets=@GDK_BACKENDS@ Name: GDK -Description: GTK+ Drawing Kit (${target} target) +Description: GTK+ Drawing Kit Version: @VERSION@ Requires: @GDK_PACKAGES@ -Libs: -L${libdir} -lgdk-${target}-@GTK_API_VERSION@ @GDK_EXTRA_LIBS@ -Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ -I${libdir}/gtk-@GTK_API_VERSION@/include @GDK_EXTRA_CFLAGS@ -DGSEAL_ENABLE +Libs: -L${libdir} -lgdk-@GTK_API_VERSION@ @GDK_EXTRA_LIBS@ +Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ @GDK_EXTRA_CFLAGS@ diff --git a/gdk/Makefile.am b/gdk/Makefile.am index eadfc81fe5..90b4520cd8 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -3,23 +3,26 @@ include $(top_srcdir)/Makefile.decl -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = \ - --add-include-path=../gdk + --add-include-path=../gdk \ + --warn-all INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. -SUBDIRS = $(gdktarget) . tests +SUBDIRS = $(GDK_BACKENDS) . tests + DIST_SUBDIRS = win32 x11 quartz broadway tests CLEANFILES = -EXTRA_DIST += \ +EXTRA_DIST += \ keynames.txt \ keyname-table.h \ + gdkkeynames.c \ gen-keyname-table.pl \ - gdkconfig.h.win32 \ + gdkconfig.h.win32 \ gdkkeysyms-update.pl \ - gdk.def \ + gdk.def \ gdkmarshalers.list \ gdkwindowimpl.h \ makeenums.pl \ @@ -29,16 +32,15 @@ EXTRA_DIST += \ gdkenumtypes.h.template \ abicheck.sh -INCLUDES = \ +INCLUDES = \ -DG_LOG_DOMAIN=\"Gdk\" \ -DGDK_COMPILATION \ -I$(top_srcdir) \ + -I$(top_builddir) \ -I$(top_builddir)/gdk \ - $(GTK_DEBUG_FLAGS) \ + $(GTK_DEBUG_FLAGS) \ $(GDK_DEP_CFLAGS) -gtarget=$(gdktarget) - if PLATFORM_WIN32 no_undefined = -no-undefined endif @@ -46,12 +48,12 @@ endif # libtool stuff: set version and export symbols for resolving # since automake doesn't support conditionalized libsomething_la_LDFLAGS # we use the general approach here -LDADD = \ - $(GTK_LINK_FLAGS) \ - -version-info $(LT_VERSION_INFO) \ - -export-dynamic \ - -rpath $(libdir) \ - $(no_undefined) \ +LDADD = \ + $(GTK_LINK_FLAGS) \ + -version-info $(LT_VERSION_INFO) \ + -export-dynamic \ + -rpath $(libdir) \ + $(no_undefined) \ $(LIBTOOL_EXPORT_OPTIONS) # @@ -60,7 +62,7 @@ LDADD = \ # # GDK header files for public installation (non-generated) # -gdk_public_h_sources = \ +gdk_public_h_sources = \ gdk.h \ gdkapplaunchcontext.h \ gdkcairo.h \ @@ -72,7 +74,6 @@ gdk_public_h_sources = \ gdkdisplaymanager.h \ gdkdnd.h \ gdkevents.h \ - gdkinput.h \ gdkkeys.h \ gdkkeysyms.h \ gdkkeysyms-compat.h \ @@ -85,49 +86,58 @@ gdk_public_h_sources = \ gdkrgba.h \ gdkscreen.h \ gdkselection.h \ - gdkspawn.h \ gdktestutils.h \ gdkthreads.h \ gdktypes.h \ gdkvisual.h \ gdkwindow.h -gdk_built_public_sources = \ +gdk_built_public_sources = \ + gdkconfig.h \ gdkenumtypes.h -gdk_private_headers = \ - gdkinternals.h \ +gdk_private_headers = \ + gdkapplaunchcontextprivate.h \ + gdkcursorprivate.h \ + gdkdevicemanagerprivate.h \ gdkdeviceprivate.h \ + gdkdisplaymanagerprivate.h \ + gdkdisplayprivate.h \ + gdkdndprivate.h \ + gdkscreenprivate.h \ + gdkinternals.h \ gdkintl.h \ - gdkpoly-generic.h + gdkkeysprivate.h \ + gdkvisualprivate.h \ + gdkx.h -gdk_c_sources = \ - gdk.c \ - gdkapplaunchcontext.c \ - gdkcairo.c \ - gdkcolor.c \ - gdkcursor.c \ - gdkdevice.c \ - gdkdevicemanager.c \ - gdkdisplay.c \ - gdkdisplaymanager.c \ - gdkdnd.c \ - gdkevents.c \ - gdkglobals.c \ - gdkkeys.c \ - gdkkeyuni.c \ - gdkoffscreenwindow.c \ - gdkpango.c \ - gdkpixbuf-drawable.c \ - gdkrectangle.c \ - gdkrgba.c \ - gdkscreen.c \ - gdkselection.c \ - gdkvisual.c \ - gdkwindow.c \ +gdk_c_sources = \ + gdk.c \ + gdkapplaunchcontext.c \ + gdkcairo.c \ + gdkcolor.c \ + gdkcursor.c \ + gdkdevice.c \ + gdkdevicemanager.c \ + gdkdisplay.c \ + gdkdisplaymanager.c \ + gdkdnd.c \ + gdkevents.c \ + gdkglobals.c \ + gdkkeys.c \ + gdkkeyuni.c \ + gdkoffscreenwindow.c \ + gdkpango.c \ + gdkpixbuf-drawable.c \ + gdkrectangle.c \ + gdkrgba.c \ + gdkscreen.c \ + gdkselection.c \ + gdkvisual.c \ + gdkwindow.c \ gdkwindowimpl.c -gdk_built_sources = \ +gdk_built_sources = \ gdkenumtypes.c \ gdkmarshalers.h \ gdkmarshalers.c \ @@ -147,22 +157,28 @@ common_sources = \ gdkmarshalers.c \ gdkmarshalers.h -libgdk_broadway_3_0_la_SOURCES = $(common_sources) -libgdk_broadway_3_0_la_LIBADD = broadway/libgdk-broadway.la $(GDK_DEP_LIBS) -libgdk_broadway_3_0_la_LDFLAGS = $(LDADD) +libgdk_3_0_la_SOURCES = $(common_sources) +libgdk_3_0_la_LIBADD = $(GDK_DEP_LIBS) +libgdk_3_0_la_LDFLAGS = $(LDADD) -libgdk_x11_3_0_la_SOURCES = $(common_sources) -libgdk_x11_3_0_la_LIBADD = x11/libgdk-x11.la $(GDK_DEP_LIBS) -libgdk_x11_3_0_la_LDFLAGS = $(LDADD) +if USE_X11 +libgdk_3_0_la_LIBADD += x11/libgdk-x11.la +endif # USE_X11 -libgdk_quartz_3_0_la_SOURCES = $(common_sources) gdkkeynames.c -libgdk_quartz_3_0_la_LIBADD = quartz/libgdk-quartz.la $(GDK_DEP_LIBS) -libgdk_quartz_3_0_la_LDFLAGS = $(LDADD) +if USE_QUARTZ +libgdk_3_0_la_LIBADD += quartz/libgdk-quartz.la +endif # USE_QUARTZ -libgdk_win32_3_0_la_SOURCES = $(common_sources) gdkkeynames.c -libgdk_win32_3_0_la_LIBADD = win32/libgdk-win32.la $(GDK_DEP_LIBS) -libgdk_win32_3_0_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def -libgdk_win32_3_0_la_LDFLAGS = -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def $(LDADD) +if USE_WIN32 +libgdk_3_0_la_SOURCES += gdkkeynames.c +libgdk_3_0_la_LIBADD += win32/libgdk-win32.la +libgdk_3_0_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o gdk.def +libgdk_3_0_la_LDFLAGS += -Wl,win32/rc/gdk-win32-res.o -export-symbols $(srcdir)/gdk.def +endif # USE_WIN32 + +if USE_BROADWAY +libgdk_3_0_la_LIBADD += broadway/libgdk-broadway.la +endif # USE_BROADWAY if HAVE_INTROSPECTION @@ -172,12 +188,14 @@ introspection_files = \ gdkenumtypes.c \ gdkenumtypes.h -Gdk-3.0.gir: $(gdktargetlib) Makefile -Gdk_3_0_gir_SCANNERFLAGS = --warn-all +Gdk-3.0.gir: libgdk-3.0.la Makefile +Gdk_3_0_gir_SCANNERFLAGS = \ + --c-include="gdk/gdk.h" Gdk_3_0_gir_INCLUDES = Gio-2.0 GdkPixbuf-2.0 Pango-1.0 cairo-1.0 -Gdk_3_0_gir_LIBS = $(gdktargetlib) +Gdk_3_0_gir_LIBS = libgdk-3.0.la Gdk_3_0_gir_FILES = $(introspection_files) Gdk_3_0_gir_CFLAGS = $(INCLUDES) +Gdk_3_0_gir_EXPORT_PACKAGES = gdk-3.0 INTROSPECTION_GIRS += Gdk-3.0.gir if USE_X11 @@ -186,11 +204,11 @@ x11_introspection_files = \ x11/gdkapplaunchcontext-x11.c \ x11/gdkasync.c \ x11/gdkcursor-x11.c \ - x11/gdkdevice-core.c \ - x11/gdkdevicemanager-core.c \ + x11/gdkdevice-core-x11.c \ + x11/gdkdevicemanager-core-x11.c \ x11/gdkdevicemanager-x11.c \ - x11/gdkdevicemanager-xi2.c \ x11/gdkdevicemanager-xi.c \ + x11/gdkdevicemanager-xi2.c \ x11/gdkdevice-xi2.c \ x11/gdkdevice-xi.c \ x11/gdkdisplay-x11.c \ @@ -198,16 +216,12 @@ x11_introspection_files = \ x11/gdkeventsource.c \ x11/gdkeventtranslator.c \ x11/gdkgeometry-x11.c \ - x11/gdkglobals-x11.c \ - x11/gdkim-x11.c \ - x11/gdkinput.c \ x11/gdkkeys-x11.c \ x11/gdkmain-x11.c \ x11/gdkproperty-x11.c \ x11/gdkscreen-x11.c \ x11/gdkselection-x11.c \ x11/gdksettings.c \ - x11/gdkspawn-x11.c \ x11/gdktestutils-x11.c \ x11/gdkvisual-x11.c \ x11/gdkwindow-x11.c \ @@ -215,18 +229,28 @@ x11_introspection_files = \ x11/gdkxid.c \ x11/xsettings-client.c \ x11/xsettings-common.c \ - x11/gdkx.h + x11/gdkx.h \ + x11/gdkx11cursor.h \ + x11/gdkx11display.h \ + x11/gdkx11property.h \ + x11/gdkx11screen.h \ + x11/gdkx11selection.h \ + x11/gdkx11utils.h \ + x11/gdkx11visual.h \ + x11/gdkx11window.h -GdkX11-3.0.gir: $(gdktargetlib) Gdk-3.0.gir Makefile -GdkX11_3_0_gir_SCANNERFLAGS = --warn-all --strip-prefix=Gdk +GdkX11-3.0.gir: libgdk-3.0.la Gdk-3.0.gir Makefile +GdkX11_3_0_gir_SCANNERFLAGS = \ + --strip-prefix=Gdk \ + --c-include="gdk/gdkx.h" \ + --include-uninstalled=$(top_builddir)/gdk/Gdk-3.0.gir GdkX11_3_0_gir_INCLUDES = Gio-2.0 Gdk-3.0 GdkPixbuf-2.0 Pango-1.0 xlib-2.0 -GdkX11_3_0_gir_LIBS = $(gdktargetlib) +GdkX11_3_0_gir_LIBS = libgdk-3.0.la GdkX11_3_0_gir_FILES = $(x11_introspection_files) GdkX11_3_0_gir_CFLAGS = $(INCLUDES) -L$(top_builddir)/gdk +GdkX11_3_0_gir_EXPORT_PACKAGES = gdk-x11-3.0 INTROSPECTION_GIRS += GdkX11-3.0.gir -introspection_files += $(filter-out x11/gdkx.h, $(x11_introspection_files)) - endif # USE_X11 girdir = $(datadir)/gir-1.0 @@ -270,37 +294,22 @@ endif # This places the generated .def file in srcdir, since it is expected to be there. # (The one from a tarball is) gdk.def: gdk.symbols - (echo -e EXPORTS; $(CPP) -P -DGDK_WINDOWING_WIN32 - <$(srcdir)/gdk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gdk.def + $(AM_V_GEN) (echo -e EXPORTS; $(CPP) -P -DGDK_WINDOWING_WIN32 - <$(srcdir)/gdk.symbols | sed -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gdk.def TESTS_ENVIRONMENT = srcdir="$(srcdir)" if OS_LINUX TESTS = abicheck.sh endif - -lib_LTLIBRARIES = $(gdktargetlib) - -EXTRA_LTLIBRARIES = libgdk-broadway-3.0.la libgdk-x11-3.0.la libgdk-win32-3.0.la libgdk-quartz-3.0.la +lib_LTLIBRARIES = libgdk-3.0.la MAINTAINERCLEANFILES = $(gdk_built_sources) stamp-gdkenumtypes.h EXTRA_DIST += $(gdk_built_sources) EXTRA_HEADERS = -# -# Rule to install gdkconfig.h header file -# -configexecincludedir = $(libdir)/gtk-3.0/include -#configexecinclude_DATA = gdkconfig.h - -install-exec-local: gdkconfig.h - $(mkinstalldirs) $(DESTDIR)$(configexecincludedir) - file=$(DESTDIR)$(configexecincludedir)/gdkconfig.h; \ - if test -r $$file && cmp -s gdkconfig.h $$file; then :; \ - else $(INSTALL_DATA) gdkconfig.h $$file; fi - install-exec-hook: if DISABLE_EXPLICIT_DEPS - $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gdktargetlib) + $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/libgdk-3.0.la endif #note: not gdkconfig.h @@ -311,40 +320,40 @@ BUILT_SOURCES = \ gdkenumtypes.h: stamp-gdkenumtypes.h @true stamp-gdkenumtypes.h: @REBUILD@ $(gdk_public_h_sources) gdkenumtypes.h.template - ( cd $(srcdir) && $(GLIB_MKENUMS) --template gdkenumtypes.h.template \ + $(AM_V_GEN) ( cd $(srcdir) && $(GLIB_MKENUMS) --template gdkenumtypes.h.template \ $(gdk_public_h_sources) ) >> xgen-geth \ && (cmp -s xgen-geth gdkenumtypes.h || cp xgen-geth gdkenumtypes.h ) \ && rm -f xgen-geth \ && echo timestamp > $(@F) gdkenumtypes.c: @REBUILD@ $(gdk_public_h_sources) gdkenumtypes.c.template - ( cd $(srcdir) && $(GLIB_MKENUMS) --template gdkenumtypes.c.template \ + $(AM_V_GEN) ( cd $(srcdir) && $(GLIB_MKENUMS) --template gdkenumtypes.c.template \ $(gdk_public_h_sources) ) > xgen-getc \ && cp xgen-getc gdkenumtypes.c \ && rm -f xgen-getc -# +# # Marshaller generation # gdkmarshalers.h: @REBUILD@ gdkmarshalers.list - $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --header > gdkmarshalers-h.tmp \ + $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --header > gdkmarshalers-h.tmp \ && mv gdkmarshalers-h.tmp gdkmarshalers.h \ || ( rm -f gdkmarshalers-h.tmp && exit 1) gdkmarshalers.c: @REBUILD@ gdkmarshalers.list - $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body > gdkmarshalers-c.tmp \ + $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_gdk_marshal $(srcdir)/gdkmarshalers.list --body > gdkmarshalers-c.tmp \ && mv gdkmarshalers-c.tmp gdkmarshalers.c \ || ( rm -f gdkmarshalers-c.tmp && exit 1 ) gdkconfig.h: stamp-gc-h - @if test -f gdkconfig.h; then :; \ + $(AM_V_GEN) if test -f gdkconfig.h; then :; \ else rm -f stamp-gc-h; $(MAKE) stamp-gc-h; fi stamp-gc-h: $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status gdk/gdkconfig.h + $(AM_V_at) cd $(top_builddir) && $(SHELL) ./config.status gdk/gdkconfig.h echo timestamp > stamp-gc-h dist-hook: ../build/win32/vs9/gdk.vcproj ../build/win32/vs9/gdk.vcproj: ../build/win32/vs9/gdk.vcprojin - for F in $(libgdk_win32_3_0_la_SOURCES); do \ + for F in $(libgdk_3_0_la_SOURCES); do \ case $$F in \ *.c) echo ' ' \ ;; \ diff --git a/gdk/abicheck.sh b/gdk/abicheck.sh index a33eef8e59..2bfefafcfa 100755 --- a/gdk/abicheck.sh +++ b/gdk/abicheck.sh @@ -1,5 +1,5 @@ #! /bin/sh -cpp -P -DGDK_ENABLE_BROKEN -include ../config.h -include ./gdkconfig.h ${srcdir:-.}/gdk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' | sort | uniq > expected-abi -nm -D -g --defined-only .libs/libgdk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi +cpp -P -DGDK_WINDOWING_X11 ${srcdir:-.}/gdk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' | sort | uniq > expected-abi +nm -D -g --defined-only .libs/libgdk-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi diff -u expected-abi actual-abi && rm -f expected-abi actual-abi diff --git a/gdk/gdk.c b/gdk/gdk.c index 003ad34847..6bb7f8deea 100644 --- a/gdk/gdk.c +++ b/gdk/gdk.c @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -48,6 +48,48 @@ * utility functions. */ +/** + * GDK_WINDOWING_X11: + * + * The #GDK_WINDOWING_X11 macro is defined if the X11 backend + * is supported. + * + * Use this macro to guard code that is specific to the X11-backend. + * Since GDK may be configured with multiple backends, an additional + * runtime check for the used backend is recommended: + * + * |[ + * #ifdef GDK_WINDOWING_X11 + * if (GDK_IS_X11_DISPLAY (display)) + * { + * /* make X11-specific calls here */ + * } + * else + * #endif + * #ifdef GDK_WINDOWING_QUARTZ + * if (GDK_IS_QUARTZ_DISPLAY (display)) + * { + * /* make Quartz-specific calls here &ast/ + * } + * else + * #endif + * g_error ("Unsupported GDK backend"); + * ]| + */ + +/** + * GDK_WINDOWING_WIN32: + * + * The #GDK_WINDOWING_WIN32 macro is defined if the Win32 backend + * is supported. + */ + +/** + * GDK_WINDOWING_QUARTZ: + * + * The #GDK_WINDOWING_QUARTZ macro is defined if the Quartz backend + * is supported. + */ typedef struct _GdkPredicate GdkPredicate; @@ -69,9 +111,9 @@ struct _GdkThreadsDispatch /* Private variable declarations */ -static int gdk_initialized = 0; /* 1 if the library is initialized, - * 0 otherwise. - */ +static int gdk_initialized = 0; /* 1 if the library is initialized, + * 0 otherwise. + */ static gchar *gdk_progclass = NULL; @@ -82,37 +124,32 @@ static GCallback gdk_threads_unlock = NULL; #ifdef G_ENABLE_DEBUG static const GDebugKey gdk_debug_keys[] = { - {"events", GDK_DEBUG_EVENTS}, - {"misc", GDK_DEBUG_MISC}, - {"dnd", GDK_DEBUG_DND}, - {"xim", GDK_DEBUG_XIM}, + {"events", GDK_DEBUG_EVENTS}, + {"misc", GDK_DEBUG_MISC}, + {"dnd", GDK_DEBUG_DND}, + {"xim", GDK_DEBUG_XIM}, {"nograbs", GDK_DEBUG_NOGRABS}, - {"colormap", GDK_DEBUG_COLORMAP}, - {"input", GDK_DEBUG_INPUT}, - {"cursor", GDK_DEBUG_CURSOR}, - {"multihead", GDK_DEBUG_MULTIHEAD}, - {"xinerama", GDK_DEBUG_XINERAMA}, - {"draw", GDK_DEBUG_DRAW}, - {"eventloop", GDK_DEBUG_EVENTLOOP} + {"colormap", GDK_DEBUG_COLORMAP}, + {"input", GDK_DEBUG_INPUT}, + {"cursor", GDK_DEBUG_CURSOR}, + {"multihead", GDK_DEBUG_MULTIHEAD}, + {"xinerama", GDK_DEBUG_XINERAMA}, + {"draw", GDK_DEBUG_DRAW}, + {"eventloop", GDK_DEBUG_EVENTLOOP} }; -static const int gdk_ndebug_keys = G_N_ELEMENTS (gdk_debug_keys); - -#endif /* G_ENABLE_DEBUG */ - -#ifdef G_ENABLE_DEBUG static gboolean gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data, GError **error) { guint debug_value = g_parse_debug_string (value, - (GDebugKey *) gdk_debug_keys, - gdk_ndebug_keys); + (GDebugKey *) gdk_debug_keys, + G_N_ELEMENTS (gdk_debug_keys)); if (debug_value == 0 && value != NULL && strcmp (value, "") != 0) { - g_set_error (error, - G_OPTION_ERROR, G_OPTION_ERROR_FAILED, - _("Error parsing option --gdk-debug")); + g_set_error (error, + G_OPTION_ERROR, G_OPTION_ERROR_FAILED, + _("Error parsing option --gdk-debug")); return FALSE; } @@ -125,14 +162,14 @@ static gboolean gdk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data, GError **error) { guint debug_value = g_parse_debug_string (value, - (GDebugKey *) gdk_debug_keys, - gdk_ndebug_keys); + (GDebugKey *) gdk_debug_keys, + G_N_ELEMENTS (gdk_debug_keys)); if (debug_value == 0 && value != NULL && strcmp (value, "") != 0) { - g_set_error (error, - G_OPTION_ERROR, G_OPTION_ERROR_FAILED, - _("Error parsing option --gdk-no-debug")); + g_set_error (error, + G_OPTION_ERROR, G_OPTION_ERROR_FAILED, + _("Error parsing option --gdk-no-debug")); return FALSE; } @@ -168,9 +205,6 @@ static const GOptionEntry gdk_args[] = { { "display", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, &_gdk_display_name, /* Description of --display=DISPLAY in --help output */ N_("X display to use"), /* Placeholder in --display=DISPLAY in --help output */ N_("DISPLAY") }, - { "screen", 0, 0, G_OPTION_ARG_INT, &_gdk_screen_number, - /* Description of --screen=SCREEN in --help output */ N_("X screen to use"), - /* Placeholder in --screen=SCREEN in --help output */ N_("SCREEN") }, #ifdef G_ENABLE_DEBUG { "gdk-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_debug_cb, /* Description of --gdk-debug=FLAGS in --help output */ N_("GDK debugging flags to set"), @@ -185,15 +219,14 @@ static const GOptionEntry gdk_args[] = { /** * gdk_add_option_entries_libgtk_only: * @group: An option group. - * + * * Appends gdk option entries to the passed in option group. This is * not public API and must not be used by applications. - **/ + */ void gdk_add_option_entries_libgtk_only (GOptionGroup *group) { g_option_group_add_entries (group, gdk_args); - g_option_group_add_entries (group, _gdk_windowing_args); } void @@ -213,24 +246,22 @@ gdk_pre_parse_libgtk_only (void) gchar *debug_string = getenv("GDK_DEBUG"); if (debug_string != NULL) _gdk_debug_flags = g_parse_debug_string (debug_string, - (GDebugKey *) gdk_debug_keys, - gdk_ndebug_keys); + (GDebugKey *) gdk_debug_keys, + G_N_ELEMENTS (gdk_debug_keys)); } -#endif /* G_ENABLE_DEBUG */ +#endif /* G_ENABLE_DEBUG */ if (getenv ("GDK_NATIVE_WINDOWS")) { _gdk_native_windows = TRUE; - /* Ensure that this is not propagated - to spawned applications */ + /* Ensure that this is not propagated to spawned applications */ g_unsetenv ("GDK_NATIVE_WINDOWS"); } g_type_init (); - /* Do any setup particular to the windowing system - */ - _gdk_windowing_init (); + /* Do any setup particular to the windowing system */ + gdk_display_manager_get (); } @@ -252,7 +283,7 @@ gdk_pre_parse_libgtk_only (void) **/ void gdk_parse_args (int *argc, - char ***argv) + char ***argv) { GOptionContext *option_context; GOptionGroup *option_group; @@ -262,15 +293,14 @@ gdk_parse_args (int *argc, return; gdk_pre_parse_libgtk_only (); - + option_context = g_option_context_new (NULL); g_option_context_set_ignore_unknown_options (option_context, TRUE); g_option_context_set_help_enabled (option_context, FALSE); option_group = g_option_group_new (NULL, NULL, NULL, NULL, NULL); g_option_context_set_main_group (option_context, option_group); - + g_option_group_add_entries (option_group, gdk_args); - g_option_group_add_entries (option_group, _gdk_windowing_args); if (!g_option_context_parse (option_context, argc, argv, &error)) { @@ -282,7 +312,7 @@ gdk_parse_args (int *argc, GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ())); } -/** +/** * gdk_get_display_arg_name: * * Gets the display name specified in the command line arguments passed @@ -297,25 +327,20 @@ G_CONST_RETURN gchar * gdk_get_display_arg_name (void) { if (!_gdk_display_arg_name) - { - if (_gdk_screen_number >= 0) - _gdk_display_arg_name = _gdk_windowing_substitute_screen_number (_gdk_display_name, _gdk_screen_number); - else - _gdk_display_arg_name = g_strdup (_gdk_display_name); - } + _gdk_display_arg_name = g_strdup (_gdk_display_name); return _gdk_display_arg_name; } /** * gdk_display_open_default_libgtk_only: - * + * * Opens the default display specified by command line arguments or * environment variables, sets it as the default display, and returns * it. gdk_parse_args must have been called first. If the default * display has previously been set, simply returns that. An internal * function that should not be used by applications. - * + * * Return value: (transfer none): the default display, if it could be * opened, otherwise %NULL. **/ @@ -325,25 +350,13 @@ gdk_display_open_default_libgtk_only (void) GdkDisplay *display; g_return_val_if_fail (gdk_initialized, NULL); - + display = gdk_display_get_default (); if (display) return display; display = gdk_display_open (gdk_get_display_arg_name ()); - if (!display && _gdk_screen_number >= 0) - { - g_free (_gdk_display_arg_name); - _gdk_display_arg_name = g_strdup (_gdk_display_name); - - display = gdk_display_open (_gdk_display_name); - } - - if (display) - gdk_display_manager_set_default_display (gdk_display_manager_get (), - display); - return display; } @@ -352,20 +365,20 @@ gdk_display_open_default_libgtk_only (void) * @argc: (inout): the number of command line arguments. * @argv: (array length=argc) (inout): the array of command line arguments. * - * Initializes the GDK library and connects to the X server, returning %TRUE on - * success. + * Initializes the GDK library and connects to the windowing system, + * returning %TRUE on success. * - * Any arguments used by GDK are removed from the array and @argc and @argv are - * updated accordingly. + * Any arguments used by GDK are removed from the array and @argc and @argv + * are updated accordingly. * - * GTK+ initializes GDK in gtk_init() and so this function is not usually needed - * by GTK+ applications. + * GTK+ initializes GDK in gtk_init() and so this function is not usually + * needed by GTK+ applications. * * Returns: %TRUE if initialization succeeded. */ gboolean gdk_init_check (int *argc, - char ***argv) + char ***argv) { gdk_parse_args (argc, argv); @@ -378,15 +391,15 @@ gdk_init_check (int *argc, * @argc: (inout): the number of command line arguments. * @argv: (array length=argc) (inout): the array of command line arguments. * - * Initializes the GDK library and connects to the X server. + * Initializes the GDK library and connects to the windowing system. * If initialization fails, a warning message is output and the application * terminates with a call to exit(1). * - * Any arguments used by GDK are removed from the array and @argc and @argv are - * updated accordingly. + * Any arguments used by GDK are removed from the array and @argc and @argv + * are updated accordingly. * - * GTK+ initializes GDK in gtk_init() and so this function is not usually needed - * by GTK+ applications. + * GTK+ initializes GDK in gtk_init() and so this function is not usually + * needed by GTK+ applications. */ void gdk_init (int *argc, char ***argv) @@ -549,28 +562,28 @@ gdk_init (int *argc, char ***argv) * say_something = (yes_or_no != data->what); * * if(say_something) - * { - * /* set the variable */ - * yes_or_no = data->what; - * } + * { + * /* set the variable */ + * yes_or_no = data->what; + * } * * /* Unlock the yes_or_no variable */ * G_UNLOCK (yes_or_no); * * if (say_something) - * { - * /* get GTK thread lock */ - * gdk_threads_enter (); + * { + * /* get GTK thread lock */ + * gdk_threads_enter (); * - * /* set label text */ - * if(data->what == YES_IT_IS) - * gtk_label_set_text (GTK_LABEL (data->label), "O yes, it is!"); - * else - * gtk_label_set_text (GTK_LABEL (data->label), "O no, it isn't!"); + * /* set label text */ + * if(data->what == YES_IT_IS) + * gtk_label_set_text (GTK_LABEL (data->label), "O yes, it is!"); + * else + * gtk_label_set_text (GTK_LABEL (data->label), "O no, it isn't!"); * - * /* release GTK thread lock */ - * gdk_threads_leave (); - * } + * /* release GTK thread lock */ + * gdk_threads_leave (); + * } * } * * return NULL; @@ -724,10 +737,10 @@ gdk_threads_init (void) **/ void gdk_threads_set_lock_functions (GCallback enter_fn, - GCallback leave_fn) + GCallback leave_fn) { g_return_if_fail (gdk_threads_lock == NULL && - gdk_threads_unlock == NULL); + gdk_threads_unlock == NULL); gdk_threads_lock = enter_fn; gdk_threads_unlock = leave_fn; @@ -764,7 +777,7 @@ gdk_threads_dispatch_free (gpointer data) /** * gdk_threads_add_idle_full: * @priority: the priority of the idle source. Typically this will be in the - * range btweeen #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE + * range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE * @function: function to call * @data: data to pass to @function * @notify: (allow-none): function to call when the idle is removed, or %NULL @@ -817,9 +830,9 @@ gdk_threads_dispatch_free (gpointer data) */ guint gdk_threads_add_idle_full (gint priority, - GSourceFunc function, - gpointer data, - GDestroyNotify notify) + GSourceFunc function, + gpointer data, + GDestroyNotify notify) { GdkThreadsDispatch *dispatch; @@ -852,7 +865,7 @@ gdk_threads_add_idle_full (gint priority, */ guint gdk_threads_add_idle (GSourceFunc function, - gpointer data) + gpointer data) { return gdk_threads_add_idle_full (G_PRIORITY_DEFAULT_IDLE, function, data, NULL); @@ -973,9 +986,9 @@ gdk_threads_add_timeout (guint interval, * @interval: the time between calls to the function, in seconds * @function: function to call * @data: data to pass to @function - * @notify: (allow-none): function to call when the timeout is removed, or %NULL + * @notify: (allow-none): function to call when the timeout is removed, or %NULL * - * A variant of gdk_threads_add_timout_full() with second-granularity. + * A variant of gdk_threads_add_timeout_full() with second-granularity. * See g_timeout_add_seconds_full() for a discussion of why it is * a good idea to use this function if you don't need finer granularity. * @@ -1063,24 +1076,24 @@ gdk_set_program_class (const char *program_class) } /** - * gdk_enable_multidevice: + * gdk_disable_multidevice: * - * Enables multidevice support in GDK. This call must happen prior + * Disables multidevice support in GDK. This call must happen prior * to gdk_display_open(), gtk_init(), gtk_init_with_args() or * gtk_init_check() in order to take effect. * - * Note that individual #GdkWindows still need to explicitly - * enable multidevice awareness through gdk_window_set_support_multidevice(). - * - * This function must be called before initializing GDK. + * Most common GTK+ applications won't ever need to call this. Only + * applications that do mixed GDK/Xlib calls could want to disable + * multidevice support if such Xlib code deals with input devices in + * any way and doesn't observe the presence of XInput 2. * * Since: 3.0 - **/ + */ void -gdk_enable_multidevice (void) +gdk_disable_multidevice (void) { if (gdk_initialized) return; - _gdk_enable_multidevice = TRUE; + _gdk_disable_multidevice = TRUE; } diff --git a/gdk/gdk.h b/gdk/gdk.h index 851185a8c0..2b849695d6 100644 --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -29,6 +29,7 @@ #define __GDK_H_INSIDE__ +#include #include #include #include @@ -40,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols index f884f6011f..9fb4b63149 100644 --- a/gdk/gdk.symbols +++ b/gdk/gdk.symbols @@ -50,7 +50,6 @@ gdk_device_get_associated_device gdk_device_get_axis gdk_device_get_axis_use gdk_device_get_axis_value -gdk_device_get_core_pointer gdk_device_get_device_type gdk_device_get_display gdk_device_get_has_cursor @@ -60,38 +59,37 @@ gdk_device_get_mode gdk_device_get_name gdk_device_get_n_axes gdk_device_get_n_keys +gdk_device_get_position gdk_device_get_source gdk_device_get_state gdk_device_get_type G_GNUC_CONST +gdk_device_get_window_at_position gdk_device_grab gdk_device_grab_info_libgtk_only gdk_device_list_axes -gdk_device_manager_core_get_type +gdk_device_list_slave_devices gdk_device_manager_get_client_pointer gdk_device_manager_get_display gdk_device_manager_get_type G_GNUC_CONST gdk_device_manager_list_devices -gdk_device_manager_xi2_get_type -gdk_device_manager_xi_get_type gdk_device_set_axis_use gdk_device_set_key gdk_device_set_mode -gdk_device_set_source -gdk_devices_list gdk_device_type_get_type G_GNUC_CONST gdk_device_ungrab +gdk_device_warp +gdk_disable_multidevice gdk_display_add_client_message_filter gdk_display_beep gdk_display_close gdk_display_device_is_grabbed gdk_display_flush -gdk_display_get_core_pointer +gdk_display_get_app_launch_context gdk_display_get_default gdk_display_get_default_cursor_size gdk_display_get_default_group gdk_display_get_default_screen gdk_display_get_device_manager -gdk_display_get_device_state gdk_display_get_event gdk_display_get_maximal_cursor_size gdk_display_get_name @@ -99,8 +97,8 @@ gdk_display_get_n_screens gdk_display_get_pointer gdk_display_get_screen gdk_display_get_type G_GNUC_CONST -gdk_display_get_window_at_device_position gdk_display_get_window_at_pointer +gdk_display_has_pending gdk_display_is_closed gdk_display_keyboard_ungrab gdk_display_list_devices @@ -108,7 +106,9 @@ gdk_display_manager_get gdk_display_manager_get_default_display gdk_display_manager_get_type G_GNUC_CONST gdk_display_manager_list_displays +gdk_display_manager_open_display gdk_display_manager_set_default_display +gdk_display_notify_startup_complete gdk_display_open gdk_display_open_default_libgtk_only gdk_display_peek_event @@ -116,10 +116,8 @@ gdk_display_pointer_is_grabbed gdk_display_pointer_ungrab gdk_display_put_event gdk_display_request_selection_notification -gdk_display_set_device_hooks gdk_display_set_double_click_distance gdk_display_set_double_click_time -gdk_display_set_pointer_hooks gdk_display_store_clipboard gdk_display_supports_clipboard_persistence gdk_display_supports_composite @@ -129,25 +127,24 @@ gdk_display_supports_input_shapes gdk_display_supports_selection_notification gdk_display_supports_shapes gdk_display_sync -gdk_display_warp_device gdk_display_warp_pointer gdk_drag_abort gdk_drag_action_get_type G_GNUC_CONST gdk_drag_begin +gdk_drag_begin_for_device gdk_drag_context_get_actions +gdk_drag_context_get_dest_window gdk_drag_context_get_device +gdk_drag_context_get_protocol gdk_drag_context_get_selected_action gdk_drag_context_get_source_window gdk_drag_context_get_suggested_action gdk_drag_context_get_type G_GNUC_CONST gdk_drag_context_list_targets -gdk_drag_context_new gdk_drag_context_set_device gdk_drag_drop gdk_drag_drop_succeeded -gdk_drag_find_window gdk_drag_find_window_for_screen -gdk_drag_get_protocol gdk_drag_get_protocol_for_display gdk_drag_get_selection gdk_drag_motion @@ -155,7 +152,6 @@ gdk_drag_protocol_get_type G_GNUC_CONST gdk_drag_status gdk_drop_finish gdk_drop_reply -gdk_enable_multidevice gdk_error_trap_pop gdk_error_trap_pop_ignored gdk_error_trap_push @@ -167,6 +163,7 @@ gdk_event_get_coords gdk_event_get_device gdk_event_get_root_coords gdk_event_get_screen +gdk_event_get_source_device gdk_event_get_state gdk_event_get_time gdk_event_get_type G_GNUC_CONST @@ -181,20 +178,15 @@ gdk_event_send_client_message_for_display gdk_event_send_clientmessage_toall gdk_event_set_device gdk_event_set_screen +gdk_event_set_source_device gdk_events_get_angle gdk_events_get_center gdk_events_get_distance gdk_events_pending -gdk_event_translator_get_handled_events -gdk_event_translator_get_type G_GNUC_CONST -gdk_event_translator_select_window_events -gdk_event_translator_translate gdk_event_type_get_type G_GNUC_CONST gdk_extension_mode_get_type G_GNUC_CONST gdk_filter_return_get_type G_GNUC_CONST gdk_flush -gdk_free_compound_text -gdk_free_text_list gdk_get_default_root_window gdk_get_display gdk_get_display_arg_name @@ -206,7 +198,6 @@ gdk_gravity_get_type G_GNUC_CONST gdk_init gdk_init_check gdk_input_mode_get_type G_GNUC_CONST -gdk_input_set_extension_events gdk_input_source_get_type G_GNUC_CONST gdk_keyboard_grab gdk_keyboard_ungrab @@ -233,7 +224,6 @@ gdk_keyval_to_unicode G_GNUC_CONST gdk_keyval_to_upper G_GNUC_CONST gdk_list_visuals gdk_modifier_type_get_type G_GNUC_CONST -gdk_net_wm_supports gdk_notify_startup_complete gdk_notify_startup_complete_with_id gdk_notify_type_get_type G_GNUC_CONST @@ -315,26 +305,15 @@ gdk_selection_property_get gdk_selection_send_notify gdk_selection_send_notify_for_display gdk_set_double_click_time -gdk_set_locale -gdk_set_pointer_hooks gdk_set_program_class gdk_set_show_events -gdk_set_sm_client_id gdk_setting_action_get_type G_GNUC_CONST gdk_setting_get -gdk_spawn_command_line_on_screen -gdk_spawn_on_screen -gdk_spawn_on_screen_with_pipes gdk_status_get_type G_GNUC_CONST -gdk_string_to_compound_text -gdk_string_to_compound_text_for_display gdk_synthesize_window_state gdk_test_render_sync gdk_test_simulate_button gdk_test_simulate_key -gdk_text_property_to_text_list -gdk_text_property_to_text_list_for_display -gdk_text_property_to_utf8_list gdk_text_property_to_utf8_list_for_display gdk_threads_add_idle gdk_threads_add_idle_full @@ -347,8 +326,6 @@ gdk_threads_init gdk_threads_leave gdk_threads_set_lock_functions gdk_unicode_to_keyval G_GNUC_CONST -gdk_utf8_to_compound_text -gdk_utf8_to_compound_text_for_display gdk_utf8_to_string_target gdk_visibility_state_get_type G_GNUC_CONST gdk_visual_get_best @@ -370,13 +347,16 @@ gdk_visual_get_type G_GNUC_CONST gdk_visual_get_visual_type gdk_visual_type_get_type G_GNUC_CONST #ifdef GDK_WINDOWING_WIN32 -gdk_win32_drawable_get_handle gdk_win32_handle_table_lookup gdk_win32_icon_to_pixbuf_libgtk_only gdk_win32_pixbuf_to_hicon_libgtk_only gdk_win32_selection_add_targets gdk_win32_set_modal_dialog_libgtk_only gdk_win32_window_is_win32 +gdk_win32_window_get_handle +gdk_win32_display_get_type +gdk_win32_window_foreign_new_for_display +gdk_win32_window_lookup_for_display #endif gdk_window_add_filter gdk_window_at_pointer @@ -386,7 +366,7 @@ gdk_window_begin_move_drag gdk_window_begin_paint_rect gdk_window_begin_paint_region gdk_window_begin_resize_drag -gdk_window_class_class_get_type G_GNUC_CONST +gdk_window_window_class_get_type G_GNUC_CONST gdk_window_configure_finished gdk_window_constrain_size gdk_window_coords_from_parent @@ -401,8 +381,6 @@ gdk_window_end_paint gdk_window_ensure_native gdk_window_flush gdk_window_focus -gdk_window_foreign_new -gdk_window_foreign_new_for_display gdk_window_freeze_toplevel_updates_libgtk_only gdk_window_freeze_updates gdk_window_fullscreen @@ -434,6 +412,7 @@ gdk_window_get_position gdk_window_get_root_coords gdk_window_get_root_origin gdk_window_get_screen +gdk_window_get_source_events gdk_window_get_state gdk_window_get_support_multidevice gdk_window_get_toplevel @@ -450,7 +429,9 @@ gdk_window_hide gdk_window_hints_get_type G_GNUC_CONST gdk_window_iconify gdk_window_impl_get_type G_GNUC_CONST +#ifdef GDK_WINDOWING_X11 gdk_window_impl_x11_get_type G_GNUC_CONST +#endif gdk_window_input_shape_combine_region gdk_window_invalidate_maybe_recurse gdk_window_invalidate_rect @@ -460,8 +441,6 @@ gdk_window_is_input_only gdk_window_is_shaped gdk_window_is_viewable gdk_window_is_visible -gdk_window_lookup -gdk_window_lookup_for_display gdk_window_lower gdk_window_maximize gdk_window_merge_child_input_shapes @@ -507,6 +486,7 @@ gdk_window_set_override_redirect gdk_window_set_role gdk_window_set_skip_pager_hint gdk_window_set_skip_taskbar_hint +gdk_window_set_source_events gdk_window_set_startup_id gdk_window_set_static_gravities gdk_window_set_support_multidevice @@ -530,21 +510,38 @@ gdk_window_unstick gdk_window_withdraw gdk_wm_decoration_get_type G_GNUC_CONST gdk_wm_function_get_type G_GNUC_CONST +#ifdef GDK_WINDOWING_X11 +gdk_x11_app_launch_context_get_type gdk_x11_atom_to_xatom gdk_x11_atom_to_xatom_for_display +gdk_x11_cursor_get_type gdk_x11_cursor_get_xcursor gdk_x11_cursor_get_xdisplay +gdk_x11_device_core_get_type +gdk_x11_device_manager_core_get_type +gdk_x11_device_manager_xi2_get_type +gdk_x11_device_manager_xi_get_type +gdk_x11_device_xi2_get_type +gdk_x11_device_xi_get_type gdk_x11_display_broadcast_startup_message gdk_x11_display_error_trap_pop gdk_x11_display_error_trap_pop_ignored gdk_x11_display_error_trap_push gdk_x11_display_get_startup_notification_id +gdk_x11_display_get_type gdk_x11_display_get_user_time gdk_x11_display_get_xdisplay gdk_x11_display_grab +gdk_x11_display_manager_get_type gdk_x11_display_set_cursor_theme gdk_x11_display_set_startup_notification_id +gdk_x11_display_string_to_compound_text +gdk_x11_display_text_property_to_text_list gdk_x11_display_ungrab +gdk_x11_display_utf8_to_compound_text +gdk_x11_drag_context_get_type +gdk_x11_free_compound_text +gdk_x11_free_text_list gdk_x11_get_default_root_xwindow gdk_x11_get_default_screen gdk_x11_get_default_xdisplay @@ -554,21 +551,26 @@ gdk_x11_get_xatom_by_name_for_display gdk_x11_get_xatom_name gdk_x11_get_xatom_name_for_display gdk_x11_grab_server +gdk_x11_keymap_get_type gdk_x11_lookup_xdisplay gdk_x11_register_standard_event_type gdk_x11_screen_get_monitor_output gdk_x11_screen_get_screen_number +gdk_x11_screen_get_type gdk_x11_screen_get_window_manager_name gdk_x11_screen_get_xscreen gdk_x11_screen_lookup_visual gdk_x11_screen_supports_net_wm_hint +gdk_x11_set_sm_client_id gdk_x11_ungrab_server +gdk_x11_visual_get_type gdk_x11_visual_get_xvisual +gdk_x11_window_foreign_new_for_display +gdk_x11_window_lookup_for_display +gdk_x11_window_get_type gdk_x11_window_get_xid gdk_x11_window_move_to_current_desktop gdk_x11_window_set_user_time gdk_x11_xatom_to_atom gdk_x11_xatom_to_atom_for_display -gdk_xid_table_lookup -gdk_xid_table_lookup_for_display -gdkx_visual_get +#endif diff --git a/gdk/gdkapplaunchcontext.c b/gdk/gdkapplaunchcontext.c index 1bd4dbbf29..5f9aa249c5 100644 --- a/gdk/gdkapplaunchcontext.c +++ b/gdk/gdkapplaunchcontext.c @@ -22,9 +22,7 @@ #include "config.h" -#include "gdkapplaunchcontext.h" - -#include "gdkinternals.h" +#include "gdkapplaunchcontextprivate.h" #include "gdkscreen.h" #include "gdkintl.h" @@ -43,9 +41,9 @@ * * GdkAppLaunchContext *context; * - * context = gdk_app_launch_context_new (); + * context = gdk_display_get_app_launch_context (display); * - * gdk_app_launch_context_set_screen (my_screen); + * gdk_app_launch_context_set_screen (screen); * gdk_app_launch_context_set_timestamp (event->time); * * if (!g_app_info_launch_default_for_uri ("http://www.gtk.org", context, &error)) @@ -61,10 +59,56 @@ static void gdk_app_launch_context_finalize (GObject *object); static gchar * gdk_app_launch_context_get_display (GAppLaunchContext *context, GAppInfo *info, GList *files); +static gchar * gdk_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, + GAppInfo *info, + GList *files); +static void gdk_app_launch_context_launch_failed (GAppLaunchContext *context, + const gchar *startup_notify_id); -G_DEFINE_TYPE (GdkAppLaunchContext, gdk_app_launch_context, - G_TYPE_APP_LAUNCH_CONTEXT) +enum +{ + PROP_0, + PROP_DISPLAY +}; + +G_DEFINE_TYPE (GdkAppLaunchContext, gdk_app_launch_context, G_TYPE_APP_LAUNCH_CONTEXT) + +static void +gdk_app_launch_context_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GdkAppLaunchContext *context = GDK_APP_LAUNCH_CONTEXT (object); + + switch (prop_id) + { + case PROP_DISPLAY: + g_value_set_object (value, context->display); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +gdk_app_launch_context_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GdkAppLaunchContext *context = GDK_APP_LAUNCH_CONTEXT (object); + + switch (prop_id) + { + case PROP_DISPLAY: + context->display = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} static void gdk_app_launch_context_class_init (GdkAppLaunchContextClass *klass) @@ -72,44 +116,42 @@ gdk_app_launch_context_class_init (GdkAppLaunchContextClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GAppLaunchContextClass *context_class = G_APP_LAUNCH_CONTEXT_CLASS (klass); + gobject_class->set_property = gdk_app_launch_context_set_property, + gobject_class->get_property = gdk_app_launch_context_get_property; + gobject_class->finalize = gdk_app_launch_context_finalize; context_class->get_display = gdk_app_launch_context_get_display; - context_class->get_startup_notify_id = _gdk_windowing_get_startup_notify_id; - context_class->launch_failed = _gdk_windowing_launch_failed; + context_class->get_startup_notify_id = gdk_app_launch_context_get_startup_notify_id; + context_class->launch_failed = gdk_app_launch_context_launch_failed; - g_type_class_add_private (klass, sizeof (GdkAppLaunchContextPrivate)); + g_object_class_install_property (gobject_class, PROP_DISPLAY, + g_param_spec_object ("display", P_("Display"), P_("Display"), + GDK_TYPE_DISPLAY, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); } static void gdk_app_launch_context_init (GdkAppLaunchContext *context) { - context->priv = G_TYPE_INSTANCE_GET_PRIVATE (context, - GDK_TYPE_APP_LAUNCH_CONTEXT, - GdkAppLaunchContextPrivate); - context->priv->workspace = -1; + context->workspace = -1; } static void gdk_app_launch_context_finalize (GObject *object) { - GdkAppLaunchContext *context; - GdkAppLaunchContextPrivate *priv; + GdkAppLaunchContext *context = GDK_APP_LAUNCH_CONTEXT (object); - context = GDK_APP_LAUNCH_CONTEXT (object); + if (context->display) + g_object_unref (context->display); - priv = context->priv; + if (context->screen) + g_object_unref (context->screen); - if (priv->display) - g_object_unref (priv->display); + if (context->icon) + g_object_unref (context->icon); - if (priv->screen) - g_object_unref (priv->screen); - - if (priv->icon) - g_object_unref (priv->icon); - - g_free (priv->icon_name); + g_free (context->icon_name); G_OBJECT_CLASS (gdk_app_launch_context_parent_class)->finalize (object); } @@ -119,16 +161,14 @@ gdk_app_launch_context_get_display (GAppLaunchContext *context, GAppInfo *info, GList *files) { + GdkAppLaunchContext *ctx = GDK_APP_LAUNCH_CONTEXT (context); GdkDisplay *display; - GdkAppLaunchContextPrivate *priv; - priv = GDK_APP_LAUNCH_CONTEXT (context)->priv; + if (ctx->screen) + return gdk_screen_make_display_name (ctx->screen); - if (priv->screen) - return gdk_screen_make_display_name (priv->screen); - - if (priv->display) - display = priv->display; + if (ctx->display) + display = ctx->display; else display = gdk_display_get_default (); @@ -144,22 +184,17 @@ gdk_app_launch_context_get_display (GAppLaunchContext *context, * using this context. See also gdk_app_launch_context_set_screen(). * * Since: 2.14 + * + * Deprecated: 3.0: Use gdk_display_get_app_launch_context() instead */ void gdk_app_launch_context_set_display (GdkAppLaunchContext *context, - GdkDisplay *display) + GdkDisplay *display) { g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); g_return_if_fail (display == NULL || GDK_IS_DISPLAY (display)); - if (context->priv->display) - { - g_object_unref (context->priv->display); - context->priv->display = NULL; - } - - if (display) - context->priv->display = g_object_ref (display); + g_warn_if_fail (display == NULL || display == context->display); } /** @@ -178,19 +213,21 @@ gdk_app_launch_context_set_display (GdkAppLaunchContext *context, */ void gdk_app_launch_context_set_screen (GdkAppLaunchContext *context, - GdkScreen *screen) + GdkScreen *screen) { g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); g_return_if_fail (screen == NULL || GDK_IS_SCREEN (screen)); - if (context->priv->screen) + g_return_if_fail (screen == NULL || gdk_screen_get_display (screen) == context->display); + + if (context->screen) { - g_object_unref (context->priv->screen); - context->priv->screen = NULL; + g_object_unref (context->screen); + context->screen = NULL; } if (screen) - context->priv->screen = g_object_ref (screen); + context->screen = g_object_ref (screen); } /** @@ -199,12 +236,12 @@ gdk_app_launch_context_set_screen (GdkAppLaunchContext *context, * @desktop: the number of a workspace, or -1 * * Sets the workspace on which applications will be launched when - * using this context when running under a window manager that - * supports multiple workspaces, as described in the - * Extended - * Window Manager Hints. + * using this context when running under a window manager that + * supports multiple workspaces, as described in the + * Extended + * Window Manager Hints. * - * When the workspace is not specified or @desktop is set to -1, + * When the workspace is not specified or @desktop is set to -1, * it is up to the window manager to pick one, typically it will * be the current workspace. * @@ -212,11 +249,11 @@ gdk_app_launch_context_set_screen (GdkAppLaunchContext *context, */ void gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, - gint desktop) + gint desktop) { g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); - context->priv->workspace = desktop; + context->workspace = desktop; } /** @@ -225,7 +262,7 @@ gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, * @timestamp: a timestamp * * Sets the timestamp of @context. The timestamp should ideally - * be taken from the event that triggered the launch. + * be taken from the event that triggered the launch. * * Window managers can use this information to avoid moving the * focus to the newly launched application when the user is busy @@ -236,11 +273,11 @@ gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, */ void gdk_app_launch_context_set_timestamp (GdkAppLaunchContext *context, - guint32 timestamp) + guint32 timestamp) { g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); - context->priv->timestamp = timestamp; + context->timestamp = timestamp; } /** @@ -265,14 +302,14 @@ gdk_app_launch_context_set_icon (GdkAppLaunchContext *context, g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); g_return_if_fail (icon == NULL || G_IS_ICON (icon)); - if (context->priv->icon) + if (context->icon) { - g_object_unref (context->priv->icon); - context->priv->icon = NULL; + g_object_unref (context->icon); + context->icon = NULL; } if (icon) - context->priv->icon = g_object_ref (icon); + context->icon = g_object_ref (icon); } /** @@ -280,25 +317,25 @@ gdk_app_launch_context_set_icon (GdkAppLaunchContext *context, * @context: a #GdkAppLaunchContext * @icon_name: (allow-none): an icon name, or %NULL * - * Sets the icon for applications that are launched with this context. - * The @icon_name will be interpreted in the same way as the Icon field - * in desktop files. See also gdk_app_launch_context_set_icon(). + * Sets the icon for applications that are launched with this context. + * The @icon_name will be interpreted in the same way as the Icon field + * in desktop files. See also gdk_app_launch_context_set_icon(). * * If both @icon and @icon_name are set, the @icon_name takes priority. - * If neither @icon or @icon_name is set, the icon is taken from either - * the file that is passed to launched application or from the #GAppInfo + * If neither @icon or @icon_name is set, the icon is taken from either + * the file that is passed to launched application or from the #GAppInfo * for the launched application itself. - * + * * Since: 2.14 */ void gdk_app_launch_context_set_icon_name (GdkAppLaunchContext *context, - const char *icon_name) + const char *icon_name) { g_return_if_fail (GDK_IS_APP_LAUNCH_CONTEXT (context)); - g_free (context->priv->icon_name); - context->priv->icon_name = g_strdup (icon_name); + g_free (context->icon_name); + context->icon_name = g_strdup (icon_name); } /** @@ -309,9 +346,25 @@ gdk_app_launch_context_set_icon_name (GdkAppLaunchContext *context, * Returns: a new #GdkAppLaunchContext * * Since: 2.14 + * + * Deprecated: 3.0: Use gdk_display_get_app_launch_context() instead */ GdkAppLaunchContext * gdk_app_launch_context_new (void) { - return g_object_new (GDK_TYPE_APP_LAUNCH_CONTEXT, NULL); + return gdk_display_get_app_launch_context (gdk_display_get_default ()); +} + +static char * +gdk_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, + GAppInfo *info, + GList *files) +{ + return NULL; +} + +static void +gdk_app_launch_context_launch_failed (GAppLaunchContext *context, + const gchar *startup_notify_id) +{ } diff --git a/gdk/gdkapplaunchcontext.h b/gdk/gdkapplaunchcontext.h index cb53025c46..96aeeba967 100644 --- a/gdk/gdkapplaunchcontext.h +++ b/gdk/gdkapplaunchcontext.h @@ -28,48 +28,33 @@ #define __GDK_APP_LAUNCH_CONTEXT_H__ #include +#include #include G_BEGIN_DECLS #define GDK_TYPE_APP_LAUNCH_CONTEXT (gdk_app_launch_context_get_type ()) #define GDK_APP_LAUNCH_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_APP_LAUNCH_CONTEXT, GdkAppLaunchContext)) -#define GDK_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDK_TYPE_APP_LAUNCH_CONTEXT, GdkAppLaunchContextClass)) #define GDK_IS_APP_LAUNCH_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_APP_LAUNCH_CONTEXT)) -#define GDK_IS_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDK_TYPE_APP_LAUNCH_CONTEXT)) -#define GDK_APP_LAUNCH_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_APP_LAUNCH_CONTEXT, GdkAppLaunchContextClass)) -typedef struct GdkAppLaunchContext GdkAppLaunchContext; -typedef struct GdkAppLaunchContextClass GdkAppLaunchContextClass; -typedef struct GdkAppLaunchContextPrivate GdkAppLaunchContextPrivate; - -struct GdkAppLaunchContext -{ - GAppLaunchContext parent_instance; - - GdkAppLaunchContextPrivate *priv; -}; - -struct GdkAppLaunchContextClass -{ - GAppLaunchContextClass parent_class; -}; GType gdk_app_launch_context_get_type (void); +#ifndef GDK_DISABLE_DEPRECATED GdkAppLaunchContext *gdk_app_launch_context_new (void); void gdk_app_launch_context_set_display (GdkAppLaunchContext *context, - GdkDisplay *display); + GdkDisplay *display); +#endif void gdk_app_launch_context_set_screen (GdkAppLaunchContext *context, - GdkScreen *screen); + GdkScreen *screen); void gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, - gint desktop); + gint desktop); void gdk_app_launch_context_set_timestamp (GdkAppLaunchContext *context, - guint32 timestamp); + guint32 timestamp); void gdk_app_launch_context_set_icon (GdkAppLaunchContext *context, - GIcon *icon); + GIcon *icon); void gdk_app_launch_context_set_icon_name (GdkAppLaunchContext *context, - const char *icon_name); + const char *icon_name); G_END_DECLS diff --git a/gdk/gdkapplaunchcontextprivate.h b/gdk/gdkapplaunchcontextprivate.h new file mode 100644 index 0000000000..2ae0f2a30e --- /dev/null +++ b/gdk/gdkapplaunchcontextprivate.h @@ -0,0 +1,50 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_APP_LAUNCH_CONTEXT_PRIVATE_H__ +#define __GDK_APP_LAUNCH_CONTEXT_PRIVATE_H__ + +#include +#include "gdkapplaunchcontext.h" +#include "gdktypes.h" + +G_BEGIN_DECLS + +#define GDK_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDK_TYPE_APP_LAUNCH_CONTEXT, GdkAppLaunchContextClass)) +#define GDK_IS_APP_LAUNCH_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GDK_TYPE_APP_LAUNCH_CONTEXT)) +#define GDK_APP_LAUNCH_CONTEXT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_APP_LAUNCH_CONTEXT, GdkAppLaunchContextClass)) + + +typedef GAppLaunchContextClass GdkAppLaunchContextClass; + +struct _GdkAppLaunchContext +{ + GAppLaunchContext parent_instance; + + GdkDisplay *display; + GdkScreen *screen; + gint workspace; + guint32 timestamp; + GIcon *icon; + char *icon_name; +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkcursor.c b/gdk/gdkcursor.c index 475e96fbff..1418b1bd0a 100644 --- a/gdk/gdkcursor.c +++ b/gdk/gdkcursor.c @@ -27,8 +27,9 @@ #include "config.h" #include "gdkcursor.h" - -#include "gdkdisplay.h" +#include "gdkcursorprivate.h" +#include "gdkdisplayprivate.h" +#include "gdkintl.h" #include "gdkinternals.h" @@ -53,28 +54,112 @@ * #GdkWindowAttr struct passed to gdk_window_new(). */ +/** + * GdkCursor: + * + * The #GdkCursor structure represents a cursor. Its contents are private. + */ -G_DEFINE_BOXED_TYPE (GdkCursor, gdk_cursor, - gdk_cursor_ref, - gdk_cursor_unref) +enum { + PROP_0, + PROP_CURSOR_TYPE, + PROP_DISPLAY +}; + +G_DEFINE_ABSTRACT_TYPE (GdkCursor, gdk_cursor, G_TYPE_OBJECT) + +static void +gdk_cursor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GdkCursor *cursor = GDK_CURSOR (object); + + switch (prop_id) + { + case PROP_CURSOR_TYPE: + g_value_set_enum (value, cursor->type); + break; + case PROP_DISPLAY: + g_value_set_object (value, cursor->display); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_cursor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GdkCursor *cursor = GDK_CURSOR (object); + + switch (prop_id) + { + case PROP_CURSOR_TYPE: + cursor->type = g_value_get_enum (value); + break; + case PROP_DISPLAY: + cursor->display = g_value_get_object (value); + /* check that implementations actually provide the display when constructing */ + g_assert (cursor->display != NULL); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_cursor_class_init (GdkCursorClass *cursor_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (cursor_class); + + object_class->get_property = gdk_cursor_get_property; + object_class->set_property = gdk_cursor_set_property; + + g_object_class_install_property (object_class, + PROP_CURSOR_TYPE, + g_param_spec_enum ("cursor-type", + P_("Cursor type"), + P_("Standard cursor type"), + GDK_TYPE_CURSOR_TYPE, GDK_X_CURSOR, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, + PROP_DISPLAY, + g_param_spec_object ("display", + P_("Display"), + P_("Display of this cursor"), + GDK_TYPE_DISPLAY, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); +} + +static void +gdk_cursor_init (GdkCursor *cursor) +{ +} /** * gdk_cursor_ref: * @cursor: a #GdkCursor - * + * * Adds a reference to @cursor. - * + * * Return value: Same @cursor that was passed in - **/ + * + * Deprecated: 3.0: Use g_object_ref() instead + */ GdkCursor* gdk_cursor_ref (GdkCursor *cursor) { g_return_val_if_fail (cursor != NULL, NULL); - g_return_val_if_fail (cursor->ref_count > 0, NULL); - cursor->ref_count += 1; - - return cursor; + return g_object_ref (cursor); } /** @@ -83,31 +168,28 @@ gdk_cursor_ref (GdkCursor *cursor) * * Removes a reference from @cursor, deallocating the cursor * if no references remain. - * - **/ + * + * Deprecated: 3.0: Use g_object_unref() instead + */ void gdk_cursor_unref (GdkCursor *cursor) { g_return_if_fail (cursor != NULL); - g_return_if_fail (cursor->ref_count > 0); - cursor->ref_count -= 1; - - if (cursor->ref_count == 0) - _gdk_cursor_destroy (cursor); + g_object_unref (cursor); } /** * gdk_cursor_new: * @cursor_type: cursor to create - * + * * Creates a new cursor from the set of builtin cursors for the default display. * See gdk_cursor_new_for_display(). * * To make the cursor invisible, use %GDK_BLANK_CURSOR. - * + * * Return value: a new #GdkCursor - **/ + */ GdkCursor* gdk_cursor_new (GdkCursorType cursor_type) { @@ -131,3 +213,185 @@ gdk_cursor_get_cursor_type (GdkCursor *cursor) return cursor->type; } + +/** + * gdk_cursor_new_for_display: + * @display: the #GdkDisplay for which the cursor will be created + * @cursor_type: cursor to create + * + * Creates a new cursor from the set of builtin cursors. + * Some useful ones are: + * + * + * #GDK_RIGHT_PTR (right-facing arrow) + * + * + * #GDK_CROSSHAIR (crosshair) + * + * + * #GDK_XTERM (I-beam) + * + * + * #GDK_WATCH (busy) + * + * + * #GDK_FLEUR (for moving objects) + * + * + * #GDK_HAND1 (a right-pointing hand) + * + * + * #GDK_HAND2 (a left-pointing hand) + * + * + * #GDK_LEFT_SIDE (resize left side) + * + * + * #GDK_RIGHT_SIDE (resize right side) + * + * + * #GDK_TOP_LEFT_CORNER (resize northwest corner) + * + * + * #GDK_TOP_RIGHT_CORNER (resize northeast corner) + * + * + * #GDK_BOTTOM_LEFT_CORNER (resize southwest corner) + * + * + * #GDK_BOTTOM_RIGHT_CORNER (resize southeast corner) + * + * + * #GDK_TOP_SIDE (resize top side) + * + * + * #GDK_BOTTOM_SIDE (resize bottom side) + * + * + * #GDK_SB_H_DOUBLE_ARROW (move vertical splitter) + * + * + * #GDK_SB_V_DOUBLE_ARROW (move horizontal splitter) + * + * + * #GDK_BLANK_CURSOR (Blank cursor). Since 2.16 + * + * + * + * Return value: a new #GdkCursor + * + * Since: 2.2 + **/ +GdkCursor* +gdk_cursor_new_for_display (GdkDisplay *display, + GdkCursorType cursor_type) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + + return GDK_DISPLAY_GET_CLASS (display)->get_cursor_for_type (display, cursor_type); +} + +/** + * gdk_cursor_new_from_name: + * @display: the #GdkDisplay for which the cursor will be created + * @name: the name of the cursor + * + * Creates a new cursor by looking up @name in the current cursor + * theme. + * + * Returns: a new #GdkCursor, or %NULL if there is no cursor with + * the given name + * + * Since: 2.8 + */ +GdkCursor* +gdk_cursor_new_from_name (GdkDisplay *display, + const gchar *name) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + + return GDK_DISPLAY_GET_CLASS (display)->get_cursor_for_name (display, name); +} + +/** + * gdk_cursor_new_from_pixbuf: + * @display: the #GdkDisplay for which the cursor will be created + * @pixbuf: the #GdkPixbuf containing the cursor image + * @x: the horizontal offset of the 'hotspot' of the cursor. + * @y: the vertical offset of the 'hotspot' of the cursor. + * + * Creates a new cursor from a pixbuf. + * + * Not all GDK backends support RGBA cursors. If they are not + * supported, a monochrome approximation will be displayed. + * The functions gdk_display_supports_cursor_alpha() and + * gdk_display_supports_cursor_color() can be used to determine + * whether RGBA cursors are supported; + * gdk_display_get_default_cursor_size() and + * gdk_display_get_maximal_cursor_size() give information about + * cursor sizes. + * + * If @x or @y are -1, the pixbuf must have + * options named "x_hot" and "y_hot", resp., containing + * integer values between %0 and the width resp. height of + * the pixbuf. (Since: 3.0) + * + * On the X backend, support for RGBA cursors requires a + * sufficently new version of the X Render extension. + * + * Returns: a new #GdkCursor. + * + * Since: 2.4 + */ +GdkCursor * +gdk_cursor_new_from_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); + + return GDK_DISPLAY_GET_CLASS (display)->get_cursor_for_pixbuf (display, pixbuf, x, y); +} + +/** + * gdk_cursor_get_display: + * @cursor: a #GdkCursor. + * + * Returns the display on which the #GdkCursor is defined. + * + * Returns: (transfer none): the #GdkDisplay associated to @cursor + * + * Since: 2.2 + */ + +GdkDisplay * +gdk_cursor_get_display (GdkCursor *cursor) +{ + g_return_val_if_fail (GDK_IS_CURSOR (cursor), NULL); + + return cursor->display; +} + +/** + * gdk_cursor_get_image: + * @cursor: a #GdkCursor + * + * Returns a #GdkPixbuf with the image used to display the cursor. + * + * Note that depending on the capabilities of the windowing system and + * on the cursor, GDK may not be able to obtain the image data. In this + * case, %NULL is returned. + * + * Returns: (transfer full): a #GdkPixbuf representing @cursor, or %NULL + * + * Since: 2.8 + */ +GdkPixbuf* +gdk_cursor_get_image (GdkCursor *cursor) +{ + g_return_val_if_fail (GDK_IS_CURSOR (cursor), NULL); + + return GDK_CURSOR_GET_CLASS (cursor)->get_image (cursor); +} diff --git a/gdk/gdkcursor.h b/gdk/gdkcursor.h index a421828389..89b0ef1d59 100644 --- a/gdk/gdkcursor.h +++ b/gdk/gdkcursor.h @@ -36,7 +36,10 @@ G_BEGIN_DECLS -#define GDK_TYPE_CURSOR (gdk_cursor_get_type ()) +#define GDK_TYPE_CURSOR (gdk_cursor_get_type ()) +#define GDK_CURSOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_CURSOR, GdkCursor)) +#define GDK_IS_CURSOR(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_CURSOR)) + /** * GdkCursorType: @@ -208,18 +211,6 @@ typedef enum GDK_CURSOR_IS_PIXMAP = -1 } GdkCursorType; -/** - * GdkCursor: - * - * A #GdkCursor structure represents a cursor. - */ -struct _GdkCursor -{ - /*< private >*/ - GdkCursorType GSEAL (type); - guint GSEAL (ref_count); -}; - /* Cursors */ @@ -234,11 +225,13 @@ GdkCursor* gdk_cursor_new_from_pixbuf (GdkDisplay *display, GdkPixbuf *pixbuf, gint x, gint y); -GdkDisplay* gdk_cursor_get_display (GdkCursor *cursor); -GdkCursor* gdk_cursor_ref (GdkCursor *cursor); -void gdk_cursor_unref (GdkCursor *cursor); GdkCursor* gdk_cursor_new_from_name (GdkDisplay *display, const gchar *name); +GdkDisplay* gdk_cursor_get_display (GdkCursor *cursor); +#ifndef GDK_DISABLE_DEPRECATED +GdkCursor* gdk_cursor_ref (GdkCursor *cursor); +void gdk_cursor_unref (GdkCursor *cursor); +#endif GdkPixbuf* gdk_cursor_get_image (GdkCursor *cursor); GdkCursorType gdk_cursor_get_cursor_type (GdkCursor *cursor); diff --git a/gdk/gdkinput.h b/gdk/gdkcursorprivate.h similarity index 60% rename from gdk/gdkinput.h rename to gdk/gdkcursorprivate.h index 3ea024dc2d..3d32ffb18f 100644 --- a/gdk/gdkinput.h +++ b/gdk/gdkcursorprivate.h @@ -24,37 +24,35 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) -#error "Only can be included directly." -#endif +#ifndef __GDK_CURSOR_PRIVATE_H__ +#define __GDK_CURSOR_PRIVATE_H__ -#ifndef __GDK_INPUT_H__ -#define __GDK_INPUT_H__ - -#include -#include +#include G_BEGIN_DECLS -#if !defined (GDK_MULTIDEVICE_SAFE) && !defined (GDK_DISABLE_DEPRECATED) +#define GDK_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_CURSOR, GdkCursorClass)) +#define GDK_IS_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_CURSOR)) +#define GDK_CURSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_CURSOR, GdkCursorClass)) -#ifndef GDK_MULTIHEAD_SAFE +typedef struct _GdkCursorClass GdkCursorClass; -/* Returns a list of GdkDevice * */ -GList * gdk_devices_list (void); +struct _GdkCursor +{ + GObject parent_instance; -#ifndef GTK_DISABLE_DEPRECATED -GdkDevice *gdk_device_get_core_pointer (void); -#endif + /*< private >*/ + GdkCursorType type; + GdkDisplay *display; +}; -#endif /* GDK_MULTIHEAD_SAFE */ +struct _GdkCursorClass +{ + GObjectClass parent_class; -void gdk_input_set_extension_events (GdkWindow *window, - gint mask, - GdkExtensionMode mode); - -#endif /* !GDK_MULTIDEVICE_SAFE && GDK_DISABLE_DEPRECATED */ + GdkPixbuf * (* get_image) (GdkCursor * cursor); +}; G_END_DECLS -#endif /* __GDK_INPUT_H__ */ +#endif /* __GDK_CURSOR_PRIVATE_H__ */ diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 4e9b3d24e8..1b772bae3b 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -19,20 +19,25 @@ #include "config.h" -#include "gdkdevice.h" +#include #include "gdkdeviceprivate.h" -#include "gdkintl.h" +#include "gdkdisplayprivate.h" #include "gdkinternals.h" +#include "gdkintl.h" - -typedef struct _GdkDeviceKey GdkDeviceKey; - -struct _GdkDeviceKey -{ - guint keyval; - GdkModifierType modifiers; -}; +/** + * SECTION:gdkdevice + * @Short_description: Object representing an input device + * @Title: GdkDevice + * @See_also: #GdkDeviceManager + * + * The #GdkDevice object represents a single input device. + * + * See the #GdkDeviceManager documentation for more information + * about the various kinds of master and slave devices, and their + * relationships. + */ typedef struct _GdkAxisInfo GdkAxisInfo; @@ -49,21 +54,14 @@ struct _GdkAxisInfo gdouble resolution; }; -struct _GdkDevicePrivate -{ - gchar *name; - GdkInputSource source; - GdkInputMode mode; - gboolean has_cursor; - gint num_keys; - GdkDeviceKey *keys; - GdkDeviceManager *device_manager; - GdkDisplay *display; - GdkDevice *associated; - GdkDeviceType type; - GArray *axes; +enum { + CHANGED, + LAST_SIGNAL }; +static guint signals [LAST_SIGNAL] = { 0 }; + + static void gdk_device_dispose (GObject *object); static void gdk_device_set_property (GObject *object, guint prop_id, @@ -108,8 +106,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_DISPLAY, - g_param_spec_object ("display", + PROP_DISPLAY, + g_param_spec_object ("display", P_("Device Display"), P_("Display which the device belongs to"), GDK_TYPE_DISPLAY, @@ -123,8 +121,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_DEVICE_MANAGER, - g_param_spec_object ("device-manager", + PROP_DEVICE_MANAGER, + g_param_spec_object ("device-manager", P_("Device manager"), P_("Device manager which the device belongs to"), GDK_TYPE_DEVICE_MANAGER, @@ -138,8 +136,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_NAME, - g_param_spec_string ("name", + PROP_NAME, + g_param_spec_string ("name", P_("Device name"), P_("Device name"), NULL, @@ -170,8 +168,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_ASSOCIATED_DEVICE, - g_param_spec_object ("associated-device", + PROP_ASSOCIATED_DEVICE, + g_param_spec_object ("associated-device", P_("Associated device"), P_("Associated pointer or keyboard with this device"), GDK_TYPE_DEVICE, @@ -184,8 +182,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_INPUT_SOURCE, - g_param_spec_enum ("input-source", + PROP_INPUT_SOURCE, + g_param_spec_enum ("input-source", P_("Input source"), P_("Source type for the device"), GDK_TYPE_INPUT_SOURCE, @@ -201,7 +199,7 @@ gdk_device_class_init (GdkDeviceClass *klass) */ g_object_class_install_property (object_class, PROP_INPUT_MODE, - g_param_spec_enum ("input-mode", + g_param_spec_enum ("input-mode", P_("Input mode for the device"), P_("Input mode for the device"), GDK_TYPE_INPUT_MODE, @@ -216,8 +214,8 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_HAS_CURSOR, - g_param_spec_boolean ("has-cursor", + PROP_HAS_CURSOR, + g_param_spec_boolean ("has-cursor", P_("Whether the device has a cursor"), P_("Whether there is a visible cursor following device motion"), FALSE, @@ -231,55 +229,66 @@ gdk_device_class_init (GdkDeviceClass *klass) * Since: 3.0 */ g_object_class_install_property (object_class, - PROP_N_AXES, - g_param_spec_uint ("n-axes", + PROP_N_AXES, + g_param_spec_uint ("n-axes", P_("Number of axes in the device"), P_("Number of axes in the device"), 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - g_type_class_add_private (object_class, sizeof (GdkDevicePrivate)); + /** + * GdkDevice::changed: + * @device: the #GdkDevice that changed. + * + * The ::changed signal is emitted either when the #GdkDevice + * has changed the number of either axes or keys. For example + * In X this will normally happen when the slave device routing + * events through the master device changes (for example, user + * switches from the USB mouse to a tablet), in that case the + * master device will change to reflect the new slave device + * axes and keys. + */ + signals[CHANGED] = + g_signal_new (g_intern_static_string ("changed"), + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } static void gdk_device_init (GdkDevice *device) { - GdkDevicePrivate *priv; - - device->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (device, - GDK_TYPE_DEVICE, - GdkDevicePrivate); - - priv->axes = g_array_new (FALSE, TRUE, sizeof (GdkAxisInfo)); + device->axes = g_array_new (FALSE, TRUE, sizeof (GdkAxisInfo)); } static void gdk_device_dispose (GObject *object) { - GdkDevicePrivate *priv; - GdkDevice *device; + GdkDevice *device = GDK_DEVICE (object); - device = GDK_DEVICE (object); - priv = device->priv; + if (device->type == GDK_DEVICE_TYPE_SLAVE) + _gdk_device_remove_slave (device->associated, device); - if (priv->associated) + if (device->associated) { - _gdk_device_set_associated_device (priv->associated, NULL); - g_object_unref (priv->associated); - priv->associated = NULL; + _gdk_device_set_associated_device (device->associated, NULL); + g_object_unref (device->associated); + device->associated = NULL; } - if (priv->axes) + if (device->axes) { - g_array_free (priv->axes, TRUE); - priv->axes = NULL; + g_array_free (device->axes, TRUE); + device->axes = NULL; } - g_free (priv->name); - g_free (priv->keys); + g_free (device->name); + g_free (device->keys); - priv->name = NULL; - priv->keys = NULL; + device->name = NULL; + device->keys = NULL; G_OBJECT_CLASS (gdk_device_parent_class)->dispose (object); } @@ -291,33 +300,32 @@ gdk_device_set_property (GObject *object, GParamSpec *pspec) { GdkDevice *device = GDK_DEVICE (object); - GdkDevicePrivate *priv = device->priv; switch (prop_id) { case PROP_DISPLAY: - priv->display = g_value_get_object (value); + device->display = g_value_get_object (value); break; case PROP_DEVICE_MANAGER: - priv->device_manager = g_value_get_object (value); + device->manager = g_value_get_object (value); break; case PROP_NAME: - if (priv->name) - g_free (priv->name); + if (device->name) + g_free (device->name); - priv->name = g_value_dup_string (value); + device->name = g_value_dup_string (value); break; case PROP_TYPE: - priv->type = g_value_get_enum (value); + device->type = g_value_get_enum (value); break; case PROP_INPUT_SOURCE: - priv->source = g_value_get_enum (value); + device->source = g_value_get_enum (value); break; case PROP_INPUT_MODE: gdk_device_set_mode (device, g_value_get_enum (value)); break; case PROP_HAS_CURSOR: - priv->has_cursor = g_value_get_boolean (value); + device->has_cursor = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -332,36 +340,35 @@ gdk_device_get_property (GObject *object, GParamSpec *pspec) { GdkDevice *device = GDK_DEVICE (object); - GdkDevicePrivate *priv = device->priv; switch (prop_id) { case PROP_DISPLAY: - g_value_set_object (value, priv->display); + g_value_set_object (value, device->display); break; case PROP_DEVICE_MANAGER: - g_value_set_object (value, priv->device_manager); + g_value_set_object (value, device->manager); break; case PROP_ASSOCIATED_DEVICE: - g_value_set_object (value, priv->associated); + g_value_set_object (value, device->associated); break; case PROP_NAME: - g_value_set_string (value, priv->name); + g_value_set_string (value, device->name); break; case PROP_TYPE: - g_value_set_enum (value, priv->type); + g_value_set_enum (value, device->type); break; case PROP_INPUT_SOURCE: - g_value_set_enum (value, priv->source); + g_value_set_enum (value, device->source); break; case PROP_INPUT_MODE: - g_value_set_enum (value, priv->mode); + g_value_set_enum (value, device->mode); break; case PROP_HAS_CURSOR: - g_value_set_boolean (value, priv->has_cursor); + g_value_set_boolean (value, device->has_cursor); break; case PROP_N_AXES: - g_value_set_uint (value, priv->axes->len); + g_value_set_uint (value, device->axes->len); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -377,7 +384,7 @@ gdk_device_get_property (GObject *object, * or %NULL. * @mask: location to store the modifiers, or %NULL. * - * Gets the current state of a device relative to @window. + * Gets the current state of a pointer device relative to @window. */ void gdk_device_get_state (GdkDevice *device, @@ -386,12 +393,105 @@ gdk_device_get_state (GdkDevice *device, GdkModifierType *mask) { g_return_if_fail (GDK_IS_DEVICE (device)); + g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); g_return_if_fail (GDK_IS_WINDOW (window)); if (GDK_DEVICE_GET_CLASS (device)->get_state) GDK_DEVICE_GET_CLASS (device)->get_state (device, window, axes, mask); } +/** + * gdk_device_get_position: + * @device: pointer device to query status about. + * @screen: (out) (transfer none) (allow-none): location to store the #GdkScreen + * the @device is on, or %NULL. + * @x: (out) (allow-none): location to store root window X coordinate of @device, or %NULL. + * @y: (out) (allow-none): location to store root window Y coordinate of @device, or %NULL. + * + * Gets the current location of @device. + * + * Since: 3.0 + **/ +void +gdk_device_get_position (GdkDevice *device, + GdkScreen **screen, + gint *x, + gint *y) +{ + GdkDisplay *display; + gint tmp_x, tmp_y; + GdkScreen *default_screen; + GdkWindow *root; + + g_return_if_fail (GDK_IS_DEVICE (device)); + g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + + display = gdk_device_get_display (device); + default_screen = gdk_display_get_default_screen (display); + + _gdk_device_query_state (device, + gdk_screen_get_root_window (default_screen), + &root, NULL, + &tmp_x, &tmp_y, + NULL, NULL, NULL); + + if (screen) + *screen = gdk_window_get_screen (root); + if (x) + *x = tmp_x; + if (y) + *y = tmp_y; +} + +/** + * gdk_device_get_window_at_position: + * @device: pointer #GdkDevice to query info to. + * @win_x: (out) (allow-none): return location for the X coordinate of the device location, + * relative to the window origin, or %NULL. + * @win_y: (out) (allow-none): return location for the Y coordinate of the device location, + * relative to the window origin, or %NULL. + * + * Obtains the window underneath @device, returning the location of the device in @win_x and @win_y. Returns + * %NULL if the window tree under @device is not known to GDK (for example, belongs to another application). + * + * Returns: (transfer none): the #GdkWindow under the device position, or %NULL. + * + * Since: 3.0 + **/ +GdkWindow * +gdk_device_get_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y) +{ + gint tmp_x, tmp_y; + GdkWindow *window; + + g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); + + window = _gdk_device_window_at_position (device, &tmp_x, &tmp_y, NULL, FALSE); + + /* This might need corrections, as the native window returned + may contain client side children */ + if (window) + { + double xx, yy; + + window = _gdk_window_find_descendant_at (window, + tmp_x, tmp_y, + &xx, &yy); + tmp_x = floor (xx + 0.5); + tmp_y = floor (yy + 0.5); + } + + if (win_x) + *win_x = tmp_x; + if (win_y) + *win_y = tmp_y; + + return window; +} + /** * gdk_device_get_history: * @device: a #GdkDevice @@ -401,7 +501,7 @@ gdk_device_get_state (GdkDevice *device, * @events: (array length=n_events) (out) (transfer none): location to store a newly-allocated array of #GdkTimeCoord, or %NULL * @n_events: location to store the length of @events, or %NULL * - * Obtains the motion history for a device; given a starting and + * Obtains the motion history for a pointer device; given a starting and * ending timestamp, return all events in the motion history for * the device in the given range of time. Some windowing systems * do not support motion history, in which case, %FALSE will @@ -420,6 +520,7 @@ gdk_device_get_history (GdkDevice *device, gint *n_events) { g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE); if (n_events) @@ -448,7 +549,7 @@ _gdk_device_allocate_history (GdkDevice *device, for (i = 0; i < n_events; i++) result[i] = g_malloc (sizeof (GdkTimeCoord) - - sizeof (double) * (GDK_MAX_TIMECOORD_AXES - device->priv->axes->len)); + sizeof (double) * (GDK_MAX_TIMECOORD_AXES - device->axes->len)); return result; } @@ -486,7 +587,7 @@ gdk_device_get_name (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - return device->priv->name; + return device->name; } /** @@ -503,8 +604,9 @@ gboolean gdk_device_get_has_cursor (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); - return device->priv->has_cursor; + return device->has_cursor; } /** @@ -522,24 +624,7 @@ gdk_device_get_source (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - return device->priv->source; -} - -/** - * gdk_device_set_source: - * @device: a #GdkDevice. - * @source: the source type. - * - * Sets the source type for an input device. - **/ -void -gdk_device_set_source (GdkDevice *device, - GdkInputSource source) -{ - g_return_if_fail (GDK_IS_DEVICE (device)); - - device->priv->source = source; - g_object_notify (G_OBJECT (device), "input-source"); + return device->source; } /** @@ -557,7 +642,7 @@ gdk_device_get_mode (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - return device->priv->mode; + return device->mode; } /** @@ -577,21 +662,16 @@ gdk_device_set_mode (GdkDevice *device, { g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - if (device->priv->mode == mode) + if (device->mode == mode) return TRUE; if (mode == GDK_MODE_DISABLED && gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER) return FALSE; - /* FIXME: setting has_cursor when mode is window? */ - - device->priv->mode = mode; + device->mode = mode; g_object_notify (G_OBJECT (device), "input-mode"); - if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER) - _gdk_input_check_extension_events (device); - return TRUE; } @@ -610,7 +690,7 @@ gdk_device_get_n_keys (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - return device->priv->num_keys; + return device->num_keys; } /** @@ -634,17 +714,17 @@ gdk_device_get_key (GdkDevice *device, GdkModifierType *modifiers) { g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); - g_return_val_if_fail (index_ < device->priv->num_keys, FALSE); + g_return_val_if_fail (index_ < device->num_keys, FALSE); - if (!device->priv->keys[index_].keyval && - !device->priv->keys[index_].modifiers) + if (!device->keys[index_].keyval && + !device->keys[index_].modifiers) return FALSE; if (keyval) - *keyval = device->priv->keys[index_].keyval; + *keyval = device->keys[index_].keyval; if (modifiers) - *modifiers = device->priv->keys[index_].modifiers; + *modifiers = device->keys[index_].modifiers; return TRUE; } @@ -661,20 +741,20 @@ gdk_device_get_key (GdkDevice *device, **/ void gdk_device_set_key (GdkDevice *device, - guint index_, - guint keyval, - GdkModifierType modifiers) + guint index_, + guint keyval, + GdkModifierType modifiers) { g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (index_ < device->priv->num_keys); + g_return_if_fail (index_ < device->num_keys); - device->priv->keys[index_].keyval = keyval; - device->priv->keys[index_].modifiers = modifiers; + device->keys[index_].keyval = keyval; + device->keys[index_].modifiers = modifiers; } /** * gdk_device_get_axis_use: - * @device: a #GdkDevice. + * @device: a pointer #GdkDevice. * @index_: the index of the axis. * * Returns the axis use for @index_. @@ -690,16 +770,17 @@ gdk_device_get_axis_use (GdkDevice *device, GdkAxisInfo *info; g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_AXIS_IGNORE); - g_return_val_if_fail (index_ < device->priv->axes->len, GDK_AXIS_IGNORE); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, GDK_AXIS_IGNORE); + g_return_val_if_fail (index_ < device->axes->len, GDK_AXIS_IGNORE); - info = &g_array_index (device->priv->axes, GdkAxisInfo, index_); + info = &g_array_index (device->axes, GdkAxisInfo, index_); return info->use; } /** * gdk_device_set_axis_use: - * @device: a #GdkDevice + * @device: a pointer #GdkDevice * @index_: the index of the axis * @use: specifies how the axis is used * @@ -707,17 +788,16 @@ gdk_device_get_axis_use (GdkDevice *device, **/ void gdk_device_set_axis_use (GdkDevice *device, - guint index_, - GdkAxisUse use) + guint index_, + GdkAxisUse use) { - GdkDevicePrivate *priv; GdkAxisInfo *info; g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (index_ < device->priv->axes->len); + g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + g_return_if_fail (index_ < device->axes->len); - priv = device->priv; - info = &g_array_index (priv->axes, GdkAxisInfo, index_); + info = &g_array_index (device->axes, GdkAxisInfo, index_); info->use = use; switch (use) @@ -753,13 +833,9 @@ gdk_device_set_axis_use (GdkDevice *device, GdkDisplay * gdk_device_get_display (GdkDevice *device) { - GdkDevicePrivate *priv; - g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - priv = device->priv; - - return priv->display; + return device->display; } /** @@ -783,37 +859,98 @@ gdk_device_get_display (GdkDevice *device) GdkDevice * gdk_device_get_associated_device (GdkDevice *device) { - GdkDevicePrivate *priv; - g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - priv = device->priv; + return device->associated; +} - return priv->associated; +static void +_gdk_device_set_device_type (GdkDevice *device, + GdkDeviceType type) +{ + if (device->type != type) + { + device->type = type; + + g_object_notify (G_OBJECT (device), "type"); + } } void _gdk_device_set_associated_device (GdkDevice *device, GdkDevice *associated) { - GdkDevicePrivate *priv; - g_return_if_fail (GDK_IS_DEVICE (device)); g_return_if_fail (associated == NULL || GDK_IS_DEVICE (associated)); - priv = device->priv; - - if (priv->associated == associated) + if (device->associated == associated) return; - if (priv->associated) + if (device->associated) { - g_object_unref (priv->associated); - priv->associated = NULL; + g_object_unref (device->associated); + device->associated = NULL; } if (associated) - priv->associated = g_object_ref (associated); + device->associated = g_object_ref (associated); + + if (device->type != GDK_DEVICE_TYPE_MASTER) + { + if (device->associated) + _gdk_device_set_device_type (device, GDK_DEVICE_TYPE_SLAVE); + else + _gdk_device_set_device_type (device, GDK_DEVICE_TYPE_FLOATING); + } +} + +/** + * gdk_device_list_slave_devices: + * @device: a #GdkDevice + * + * If the device if of type %GDK_DEVICE_TYPE_MASTER, it will return + * the list of slave devices attached to it, otherwise it will return + * %NULL + * + * Returns: (transfer container): the list of slave devices, or %NULL. The + * list must be freed with g_list_free(), the contents of the list + * are owned by GTK+ and should not be freed. + **/ +GList * +gdk_device_list_slave_devices (GdkDevice *device) +{ + g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + g_return_val_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER, NULL); + + return g_list_copy (device->slaves); +} + +void +_gdk_device_add_slave (GdkDevice *device, + GdkDevice *slave) +{ + g_return_if_fail (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER); + g_return_if_fail (gdk_device_get_device_type (slave) != GDK_DEVICE_TYPE_MASTER); + + if (!g_list_find (device->slaves, slave)) + device->slaves = g_list_prepend (device->slaves, slave); +} + +void +_gdk_device_remove_slave (GdkDevice *device, + GdkDevice *slave) +{ + GList *elem; + + g_return_if_fail (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER); + g_return_if_fail (gdk_device_get_device_type (slave) != GDK_DEVICE_TYPE_MASTER); + + elem = g_list_find (device->slaves, slave); + + if (!elem) + return; + + device->slaves = g_list_delete_link (device->slaves, elem); } /** @@ -829,18 +966,14 @@ _gdk_device_set_associated_device (GdkDevice *device, GdkDeviceType gdk_device_get_device_type (GdkDevice *device) { - GdkDevicePrivate *priv; - g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_DEVICE_TYPE_MASTER); - priv = device->priv; - - return priv->type; + return device->type; } /** * gdk_device_get_n_axes: - * @device: a #GdkDevice + * @device: a pointer #GdkDevice * * Returns the number of axes the device currently has. * @@ -852,13 +985,14 @@ gint gdk_device_get_n_axes (GdkDevice *device) { g_return_val_if_fail (GDK_IS_DEVICE (device), 0); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, 0); - return device->priv->axes->len; + return device->axes->len; } /** * gdk_device_list_axes: - * @device: a #GdkDevice + * @device: a pointer #GdkDevice * * Returns a #GList of #GdkAtoms, containing the labels for * the axes that @device currently has. @@ -871,17 +1005,17 @@ gdk_device_get_n_axes (GdkDevice *device) GList * gdk_device_list_axes (GdkDevice *device) { - GdkDevicePrivate *priv; GList *axes = NULL; gint i; - priv = device->priv; + g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); - for (i = 0; i < priv->axes->len; i++) + for (i = 0; i < device->axes->len; i++) { GdkAxisInfo axis_info; - axis_info = g_array_index (priv->axes, GdkAxisInfo, i); + axis_info = g_array_index (device->axes, GdkAxisInfo, i); axes = g_list_prepend (axes, GDK_ATOM_TO_POINTER (axis_info.label)); } @@ -890,7 +1024,7 @@ gdk_device_list_axes (GdkDevice *device) /** * gdk_device_get_axis_value: - * @device: a #GdkDevice. + * @device: a pointer #GdkDevice. * @axes: pointer to an array of axes * @axis_label: #GdkAtom with the axis label. * @value: location to store the found value. @@ -909,21 +1043,19 @@ gdk_device_get_axis_value (GdkDevice *device, GdkAtom axis_label, gdouble *value) { - GdkDevicePrivate *priv; gint i; g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); if (axes == NULL) return FALSE; - priv = device->priv; - - for (i = 0; i < priv->axes->len; i++) + for (i = 0; i < device->axes->len; i++) { GdkAxisInfo axis_info; - axis_info = g_array_index (priv->axes, GdkAxisInfo, i); + axis_info = g_array_index (device->axes, GdkAxisInfo, i); if (axis_info.label != axis_label) continue; @@ -955,23 +1087,21 @@ gdk_device_get_axis (GdkDevice *device, GdkAxisUse use, gdouble *value) { - GdkDevicePrivate *priv; gint i; g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, FALSE); if (axes == NULL) return FALSE; - priv = device->priv; + g_return_val_if_fail (device->axes != NULL, FALSE); - g_return_val_if_fail (priv->axes != NULL, FALSE); - - for (i = 0; i < priv->axes->len; i++) + for (i = 0; i < device->axes->len; i++) { GdkAxisInfo axis_info; - axis_info = g_array_index (priv->axes, GdkAxisInfo, i); + axis_info = g_array_index (device->axes, GdkAxisInfo, i); if (axis_info.use != use) continue; @@ -1004,7 +1134,10 @@ get_native_grab_event_mask (GdkEventMask grab_mask) /** * gdk_device_grab: - * @device: a #GdkDevice + * @device: a #GdkDevice. To get the device you can use gtk_get_current_event_device() + * or gdk_event_get_device() if the grab is in reaction to an event. Also, you can use + * gdk_device_manager_get_client_pointer() but only in code that isn't triggered by a + * #GdkEvent and there aren't other means to get a meaningful #GdkDevice to operate on. * @window: the #GdkWindow which will own the grab (the grab window) * @grab_ownership: specifies the grab ownership. * @owner_events: if %FALSE then all device events are reported with respect to @@ -1059,8 +1192,8 @@ gdk_device_grab (GdkDevice *device, GdkGrabStatus res; GdkWindow *native; - g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); + g_return_val_if_fail (GDK_IS_DEVICE (device), GDK_GRAB_SUCCESS); + g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_GRAB_SUCCESS); if (_gdk_native_windows) native = window; @@ -1072,21 +1205,23 @@ gdk_device_grab (GdkDevice *device, native = gdk_offscreen_window_get_embedder (native); if (native == NULL || - (!_gdk_window_has_impl (native) && - !gdk_window_is_viewable (native))) - return GDK_GRAB_NOT_VIEWABLE; + (!_gdk_window_has_impl (native) && + !gdk_window_is_viewable (native))) + return GDK_GRAB_NOT_VIEWABLE; native = gdk_window_get_toplevel (native); } - res = _gdk_windowing_device_grab (device, - window, - native, - owner_events, - get_native_grab_event_mask (event_mask), - NULL, - cursor, - time_); + if (native == NULL || GDK_WINDOW_DESTROYED (native)) + return GDK_GRAB_NOT_VIEWABLE; + + res = GDK_DEVICE_GET_CLASS (device)->grab (device, + native, + owner_events, + get_native_grab_event_mask (event_mask), + NULL, + cursor, + time_); if (res == GDK_GRAB_SUCCESS) { @@ -1094,7 +1229,7 @@ gdk_device_grab (GdkDevice *device, gulong serial; display = gdk_window_get_display (window); - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); _gdk_display_add_device_grab (display, device, @@ -1111,17 +1246,66 @@ gdk_device_grab (GdkDevice *device, return res; } +/** + * gdk_device_ungrab: + * @device: a #GdkDevice + * @time_: a timestap (e.g. %GDK_CURRENT_TIME). + * + * Release any grab on @device. + * + * Since: 3.0 + */ +void +gdk_device_ungrab (GdkDevice *device, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DEVICE (device)); + + GDK_DEVICE_GET_CLASS (device)->ungrab (device, time_); +} + +/** + * gdk_device_warp: + * @device: the device to warp. + * @screen: the screen to warp @device to. + * @x: the X coordinate of the destination. + * @y: the Y coordinate of the destination. + * + * Warps @device in @display to the point @x,@y on + * the screen @screen, unless the device is confined + * to a window by a grab, in which case it will be moved + * as far as allowed by the grab. Warping the pointer + * creates events as if the user had moved the mouse + * instantaneously to the destination. + * + * Note that the pointer should normally be under the + * control of the user. This function was added to cover + * some rare use cases like keyboard navigation support + * for the color picker in the #GtkColorSelectionDialog. + * + * Since: 3.0 + **/ +void +gdk_device_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y) +{ + g_return_if_fail (GDK_IS_DEVICE (device)); + g_return_if_fail (GDK_IS_SCREEN (screen)); + g_return_if_fail (gdk_device_get_display (device) == gdk_screen_get_display (screen)); + + GDK_DEVICE_GET_CLASS (device)->warp (device, screen, x, y); +} + /* Private API */ void _gdk_device_reset_axes (GdkDevice *device) { - GdkDevicePrivate *priv; gint i; - priv = device->priv; - - for (i = priv->axes->len - 1; i >= 0; i--) - g_array_remove_index (priv->axes, i); + for (i = device->axes->len - 1; i >= 0; i--) + g_array_remove_index (device->axes, i); g_object_notify (G_OBJECT (device), "n-axes"); } @@ -1134,12 +1318,9 @@ _gdk_device_add_axis (GdkDevice *device, gdouble max_value, gdouble resolution) { - GdkDevicePrivate *priv; GdkAxisInfo axis_info; guint pos; - priv = device->priv; - axis_info.use = use; axis_info.label = label_atom; axis_info.min_value = min_value; @@ -1164,8 +1345,8 @@ _gdk_device_add_axis (GdkDevice *device, break; } - priv->axes = g_array_append_val (priv->axes, axis_info); - pos = device->priv->axes->len - 1; + device->axes = g_array_append_val (device->axes, axis_info); + pos = device->axes->len - 1; g_object_notify (G_OBJECT (device), "n-axes"); @@ -1176,11 +1357,11 @@ void _gdk_device_set_keys (GdkDevice *device, guint num_keys) { - if (device->priv->keys) - g_free (device->priv->keys); + if (device->keys) + g_free (device->keys); - device->priv->num_keys = num_keys; - device->priv->keys = g_new0 (GdkDeviceKey, num_keys); + device->num_keys = num_keys; + device->keys = g_new0 (GdkDeviceKey, num_keys); } static GdkAxisInfo * @@ -1205,12 +1386,9 @@ GdkAxisUse _gdk_device_get_axis_use (GdkDevice *device, guint index_) { - GdkDevicePrivate *priv; GdkAxisInfo info; - priv = device->priv; - - info = g_array_index (priv->axes, GdkAxisInfo, index_); + info = g_array_index (device->axes, GdkAxisInfo, index_); return info.use; } @@ -1221,7 +1399,6 @@ _gdk_device_translate_window_coord (GdkDevice *device, gdouble value, gdouble *axis_value) { - GdkDevicePrivate *priv; GdkAxisInfo axis_info; GdkAxisInfo *axis_info_x, *axis_info_y; gdouble device_width, device_height; @@ -1232,12 +1409,10 @@ _gdk_device_translate_window_coord (GdkDevice *device, gdouble device_aspect; gint window_width, window_height; - priv = device->priv; - - if (index_ >= priv->axes->len) + if (index_ >= device->axes->len) return FALSE; - axis_info = g_array_index (priv->axes, GdkAxisInfo, index_); + axis_info = g_array_index (device->axes, GdkAxisInfo, index_); if (axis_info.use != GDK_AXIS_X && axis_info.use != GDK_AXIS_Y) @@ -1246,11 +1421,11 @@ _gdk_device_translate_window_coord (GdkDevice *device, if (axis_info.use == GDK_AXIS_X) { axis_info_x = &axis_info; - axis_info_y = find_axis_info (priv->axes, GDK_AXIS_Y); + axis_info_y = find_axis_info (device->axes, GDK_AXIS_Y); } else { - axis_info_x = find_axis_info (priv->axes, GDK_AXIS_X); + axis_info_x = find_axis_info (device->axes, GDK_AXIS_X); axis_info_y = &axis_info; } @@ -1337,17 +1512,16 @@ _gdk_device_translate_screen_coord (GdkDevice *device, gdouble value, gdouble *axis_value) { - GdkDevicePrivate *priv = device->priv; GdkAxisInfo axis_info; gdouble axis_width, scale, offset; - if (priv->mode != GDK_MODE_SCREEN) + if (device->mode != GDK_MODE_SCREEN) return FALSE; - if (index_ >= priv->axes->len) + if (index_ >= device->axes->len) return FALSE; - axis_info = g_array_index (priv->axes, GdkAxisInfo, index_); + axis_info = g_array_index (device->axes, GdkAxisInfo, index_); if (axis_info.use != GDK_AXIS_X && axis_info.use != GDK_AXIS_Y) @@ -1386,16 +1560,13 @@ _gdk_device_translate_axis (GdkDevice *device, gdouble value, gdouble *axis_value) { - GdkDevicePrivate *priv; GdkAxisInfo axis_info; gdouble axis_width, out; - priv = device->priv; - - if (index_ >= priv->axes->len) + if (index_ >= device->axes->len) return FALSE; - axis_info = g_array_index (priv->axes, GdkAxisInfo, index_); + axis_info = g_array_index (device->axes, GdkAxisInfo, index_); if (axis_info.use == GDK_AXIS_X || axis_info.use == GDK_AXIS_Y) @@ -1410,3 +1581,39 @@ _gdk_device_translate_axis (GdkDevice *device, return TRUE; } + +gboolean +_gdk_device_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask) +{ + return GDK_DEVICE_GET_CLASS (device)->query_state (device, + window, + root_window, + child_window, + root_x, + root_y, + win_x, + win_y, + mask); +} + +GdkWindow * +_gdk_device_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel) +{ + return GDK_DEVICE_GET_CLASS (device)->window_at_position (device, + win_x, + win_y, + mask, + get_toplevel); +} diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 27375f7621..1e4ae22b3b 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -33,8 +33,6 @@ G_BEGIN_DECLS #define GDK_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE, GdkDevice)) #define GDK_IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE)) -typedef struct _GdkDevice GdkDevice; -typedef struct _GdkDevicePrivate GdkDevicePrivate; typedef struct _GdkTimeCoord GdkTimeCoord; /** @@ -156,27 +154,17 @@ struct _GdkTimeCoord gdouble axes[GDK_MAX_TIMECOORD_AXES]; }; -struct _GdkDevice -{ - GObject parent_instance; - - /*< private >*/ - GdkDevicePrivate *priv; -}; - -GType gdk_device_get_type (void) G_GNUC_CONST; +GType gdk_device_get_type (void) G_GNUC_CONST; G_CONST_RETURN gchar *gdk_device_get_name (GdkDevice *device); gboolean gdk_device_get_has_cursor (GdkDevice *device); /* Functions to configure a device */ GdkInputSource gdk_device_get_source (GdkDevice *device); -void gdk_device_set_source (GdkDevice *device, - GdkInputSource source); GdkInputMode gdk_device_get_mode (GdkDevice *device); gboolean gdk_device_set_mode (GdkDevice *device, - GdkInputMode mode); + GdkInputMode mode); gint gdk_device_get_n_keys (GdkDevice *device); gboolean gdk_device_get_key (GdkDevice *device, @@ -184,9 +172,9 @@ gboolean gdk_device_get_key (GdkDevice *device, guint *keyval, GdkModifierType *modifiers); void gdk_device_set_key (GdkDevice *device, - guint index_, - guint keyval, - GdkModifierType modifiers); + guint index_, + guint keyval, + GdkModifierType modifiers); GdkAxisUse gdk_device_get_axis_use (GdkDevice *device, guint index_); @@ -196,17 +184,26 @@ void gdk_device_set_axis_use (GdkDevice *device, void gdk_device_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +void gdk_device_get_position (GdkDevice *device, + GdkScreen **screen, + gint *x, + gint *y); +GdkWindow * + gdk_device_get_window_at_position + (GdkDevice *device, + gint *win_x, + gint *win_y); gboolean gdk_device_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); void gdk_device_free_history (GdkTimeCoord **events, - gint n_events); + gint n_events); gint gdk_device_get_n_axes (GdkDevice *device); GList * gdk_device_list_axes (GdkDevice *device); @@ -216,12 +213,13 @@ gboolean gdk_device_get_axis_value (GdkDevice *device, gdouble *value); gboolean gdk_device_get_axis (GdkDevice *device, - gdouble *axes, - GdkAxisUse use, - gdouble *value); + gdouble *axes, + GdkAxisUse use, + gdouble *value); GdkDisplay * gdk_device_get_display (GdkDevice *device); GdkDevice * gdk_device_get_associated_device (GdkDevice *device); +GList * gdk_device_list_slave_devices (GdkDevice *device); GdkDeviceType gdk_device_get_device_type (GdkDevice *device); @@ -236,6 +234,11 @@ GdkGrabStatus gdk_device_grab (GdkDevice *device, void gdk_device_ungrab (GdkDevice *device, guint32 time_); +void gdk_device_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y); + gboolean gdk_device_grab_info_libgtk_only (GdkDisplay *display, GdkDevice *device, GdkWindow **grab_window, diff --git a/gdk/gdkdevicemanager.c b/gdk/gdkdevicemanager.c index 56499bcb64..33fd1082ba 100644 --- a/gdk/gdkdevicemanager.c +++ b/gdk/gdkdevicemanager.c @@ -19,74 +19,90 @@ #include "config.h" -#include "gdkdevicemanager.h" - +#include "gdkdevicemanagerprivate.h" +#include "gdkdisplay.h" #include "gdkintl.h" -#include "gdkinternals.h" /** * SECTION:gdkdevicemanager * @Short_description: Functions for handling input devices - * @Long_description: In addition to a single pointer and keyboard for user interface input, GDK - * contains support for a variety of input devices, including graphics tablets, - * touchscreens and multiple pointers/keyboards interacting simultaneously with - * the user interface. Under X, the support for multiple input devices is done - * through the XInput 2 extension, which also supports - * additional features such as sub-pixel positioning information and additional - * device-dependent information. * @Title: GdkDeviceManager - * @See_also: #GdkDevice, #GdkEvent, gdk_enable_multidevice() + * @See_also: #GdkDevice, #GdkEvent * - * By default, GDK supports the traditional single keyboard/pointer input scheme (Plus additional - * special input devices such as tablets. In short, backwards compatible with 2.X). Since version 3.0, - * if gdk_enable_multidevice() is called before gdk_display_open() and the platform supports it, GDK - * will be aware of multiple keyboard/pointer pairs interacting simultaneously with the user interface. + * In addition to a single pointer and keyboard for user interface input, + * GDK contains support for a variety of input devices, including graphics + * tablets, touchscreens and multiple pointers/keyboards interacting + * simultaneously with the user interface. Under X, the support for multiple + * input devices is done through the XInput 2 extension, + * which also supports additional features such as sub-pixel positioning + * information and additional device-dependent information. * - * Conceptually, in multidevice mode there are 2 device types, virtual devices (or master devices) - * are represented by the pointer cursors and keyboard foci that are seen on the screen. physical - * devices (or slave devices) represent the hardware that is controlling the virtual devices, and - * thus has no visible cursor on the screen. + * By default, and if the platform supports it, GDK is aware of multiple + * keyboard/pointer pairs and multitouch devices, this behavior can be + * changed by calling gdk_disable_multidevice() before gdk_display_open(), + * although there would be rarely a reason to do that. For a widget or + * window to be dealt as multipointer aware, + * gdk_window_set_support_multidevice() or + * gtk_widget_set_support_multidevice() must have been called on it. * - * Virtual devices are always paired, there is a keyboard device for every pointer device, - * associations between devices may be inspected through gdk_device_get_associated_device(). + * Conceptually, in multidevice mode there are 2 device types, virtual + * devices (or master devices) are represented by the pointer cursors + * and keyboard foci that are seen on the screen. Physical devices (or + * slave devices) represent the hardware that is controlling the virtual + * devices, and thus has no visible cursor on the screen. * - * There may be several virtual devices, and several physical devices could be controlling each of - * these virtual devices. Physical devices may also be "floating", which means they are not attached - * to any virtual device. + * Virtual devices are always paired, there is a keyboard device for every + * pointer device, associations between devices may be inspected through + * gdk_device_get_associated_device(). * - * By default, GDK will automatically listen for events coming from all master devices, setting the - * #GdkDevice for all events coming from input devices + * There may be several virtual devices, and several physical devices could + * be controlling each of these virtual devices. Physical devices may also + * be "floating", which means they are not attached to any virtual device. + * + * By default, GDK will automatically listen for events coming from all + * master devices, setting the #GdkDevice for all events coming from input + * devices, * - * Events containing device information are #GDK_MOTION_NOTIFY, #GDK_BUTTON_PRESS, #GDK_2BUTTON_PRESS, - * #GDK_3BUTTON_PRESS, #GDK_BUTTON_RELEASE, #GDK_SCROLL, #GDK_KEY_PRESS, #GDK_KEY_RELEASE, - * #GDK_ENTER_NOTIFY, #GDK_LEAVE_NOTIFY, #GDK_FOCUS_CHANGE, #GDK_PROXIMITY_IN, #GDK_PROXIMITY_OUT, - * #GDK_DRAG_ENTER, #GDK_DRAG_LEAVE, #GDK_DRAG_MOTION, #GDK_DRAG_STATUS, #GDK_DROP_START, - * #GDK_DROP_FINISHED and #GDK_GRAB_BROKEN. + * Events containing device information are #GDK_MOTION_NOTIFY, + * #GDK_BUTTON_PRESS, #GDK_2BUTTON_PRESS, #GDK_3BUTTON_PRESS, + * #GDK_BUTTON_RELEASE, #GDK_SCROLL, #GDK_KEY_PRESS, #GDK_KEY_RELEASE, + * #GDK_ENTER_NOTIFY, #GDK_LEAVE_NOTIFY, #GDK_FOCUS_CHANGE, + * #GDK_PROXIMITY_IN, #GDK_PROXIMITY_OUT, #GDK_DRAG_ENTER, #GDK_DRAG_LEAVE, + * #GDK_DRAG_MOTION, #GDK_DRAG_STATUS, #GDK_DROP_START, #GDK_DROP_FINISHED + * and #GDK_GRAB_BROKEN. * - * , although gdk_window_set_support_multidevice() has to be called on #GdkWindow in order to - * support additional features of multiple pointer interaction, such as multiple, per-device enter/leave - * events. The default setting will emit just one enter/leave event pair for all devices on the window. - * See gdk_window_set_support_multidevice() documentation for more information. + * although gdk_window_set_support_multidevice() has to be called on + * #GdkWindows in order to support additional features of multiple pointer + * interaction, such as multiple, per-device enter/leave events. The default + * setting will emit just one enter/leave event pair for all devices on the + * window. See gdk_window_set_support_multidevice() documentation for more + * information. * - * In order to listen for events coming from other than a virtual device, gdk_window_set_device_events() - * must be called. Generally, this function can be used to modify the event mask for any given device. + * In order to listen for events coming from other than a virtual device, + * gdk_window_set_device_events() must be called. Generally, this function + * can be used to modify the event mask for any given device. * - * Input devices may also provide additional information besides X/Y. For example, graphics tablets may - * also provide pressure and X/Y tilt information. This information is device-dependent, and may be - * queried through gdk_device_get_axis(). In multidevice mode, virtual devices will change axes in order - * to always represent the physical device that is routing events through it. Whenever the physical device - * changes, the #GdkDevice:n-axes property will be notified, and gdk_device_list_axes() will return the - * new device axes. + * Input devices may also provide additional information besides X/Y. + * For example, graphics tablets may also provide pressure and X/Y tilt + * information. This information is device-dependent, and may be + * queried through gdk_device_get_axis(). In multidevice mode, virtual + * devices will change axes in order to always represent the physical + * device that is routing events through it. Whenever the physical device + * changes, the #GdkDevice:n-axes property will be notified, and + * gdk_device_list_axes() will return the new device axes. * - * Devices may also have associated keys or macro buttons. Such keys can be - * globally set to map into normal X keyboard events. The mapping is set using gdk_device_set_key(). + * Devices may also have associated keys or + * macro buttons. Such keys can be globally set to map into normal X + * keyboard events. The mapping is set using gdk_device_set_key(). * - * In order to query the device hierarchy and be aware of changes in the device hierarchy (such as - * virtual devices being created or removed, or physical devices being plugged or unplugged), GDK - * provides #GdkDeviceManager. On X11, multidevice support is implemented through XInput 2. If - * gdk_enable_multidevice() is called, the XInput 2.x #GdkDeviceManager implementation will be used - * as input source, else either the core or XInput 1.x implementations will be used. + * In order to query the device hierarchy and be aware of changes in the + * device hierarchy (such as virtual devices being created or removed, or + * physical devices being plugged or unplugged), GDK provides + * #GdkDeviceManager. On X11, multidevice support is implemented through + * XInput 2. Unless gdk_disable_multidevice() is called, the XInput 2.x + * #GdkDeviceManager implementation will be used as input source, else + * either the core or XInput 1.x implementations will be used. */ static void gdk_device_manager_set_property (GObject *object, @@ -116,12 +132,6 @@ enum { static guint signals [LAST_SIGNAL] = { 0 }; -struct _GdkDeviceManagerPrivate -{ - GdkDisplay *display; -}; - - static void gdk_device_manager_class_init (GdkDeviceManagerClass *klass) { @@ -182,12 +192,16 @@ gdk_device_manager_class_init (GdkDeviceManagerClass *klass) * @device_manager: the object on which the signal is emitted * @device: the #GdkDevice that changed. * - * The ::device-changed signal is emitted either when some - * #GdkDevice has changed the number of either axes or keys. - * For example In X this will normally happen when the slave - * device routing events through the master device changes, - * in that case the master device will change to reflect the - * new slave device axes and keys. + * The ::device-changed signal is emitted whenever a device + * has changed in the hierarchy, either slave devices being + * disconnected from their master device or connected to + * another one, or master devices being added or removed + * a slave device. + * + * If a slave device is detached from all master devices + * (gdk_device_get_associated_device() returns %NULL), its + * #GdkDeviceType will change to %GDK_DEVICE_TYPE_FLOATING, + * if it's attached, it will change to %GDK_DEVICE_TYPE_SLAVE. */ signals [DEVICE_CHANGED] = g_signal_new (g_intern_static_string ("device-changed"), @@ -198,18 +212,11 @@ gdk_device_manager_class_init (GdkDeviceManagerClass *klass) g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GDK_TYPE_DEVICE); - - g_type_class_add_private (object_class, sizeof (GdkDeviceManagerPrivate)); } static void gdk_device_manager_init (GdkDeviceManager *device_manager) { - GdkDeviceManagerPrivate *priv; - - device_manager->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (device_manager, - GDK_TYPE_DEVICE_MANAGER, - GdkDeviceManagerPrivate); } static void @@ -218,14 +225,10 @@ gdk_device_manager_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GdkDeviceManagerPrivate *priv; - - priv = GDK_DEVICE_MANAGER (object)->priv; - switch (prop_id) { case PROP_DISPLAY: - priv->display = g_value_get_object (value); + GDK_DEVICE_MANAGER (object)->display = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -239,14 +242,11 @@ gdk_device_manager_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GdkDeviceManagerPrivate *priv; - - priv = GDK_DEVICE_MANAGER (object)->priv; switch (prop_id) { case PROP_DISPLAY: - g_value_set_object (value, priv->display); + g_value_set_object (value, GDK_DEVICE_MANAGER (object)->display); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -269,13 +269,9 @@ gdk_device_manager_get_property (GObject *object, GdkDisplay * gdk_device_manager_get_display (GdkDeviceManager *device_manager) { - GdkDeviceManagerPrivate *priv; - g_return_val_if_fail (GDK_IS_DEVICE_MANAGER (device_manager), NULL); - priv = device_manager->priv; - - return priv->display; + return device_manager->display; } /** diff --git a/gdk/gdkdevicemanager.h b/gdk/gdkdevicemanager.h index bed2bbba86..d49ef63521 100644 --- a/gdk/gdkdevicemanager.h +++ b/gdk/gdkdevicemanager.h @@ -31,47 +31,15 @@ G_BEGIN_DECLS #define GDK_TYPE_DEVICE_MANAGER (gdk_device_manager_get_type ()) #define GDK_DEVICE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_MANAGER, GdkDeviceManager)) -#define GDK_DEVICE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER, GdkDeviceManagerClass)) #define GDK_IS_DEVICE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_MANAGER)) -#define GDK_IS_DEVICE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER)) -#define GDK_DEVICE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER, GdkDeviceManagerClass)) -typedef struct _GdkDeviceManager GdkDeviceManager; -typedef struct _GdkDeviceManagerPrivate GdkDeviceManagerPrivate; -typedef struct _GdkDeviceManagerClass GdkDeviceManagerClass; -struct _GdkDeviceManager -{ - GObject parent_instance; +GType gdk_device_manager_get_type (void) G_GNUC_CONST; - /*< private >*/ - GdkDeviceManagerPrivate *priv; -}; - -struct _GdkDeviceManagerClass -{ - GObjectClass parent_class; - - /* Signals */ - void (* device_added) (GdkDeviceManager *device_manager, - GdkDevice *device); - void (* device_removed) (GdkDeviceManager *device_manager, - GdkDevice *device); - void (* device_changed) (GdkDeviceManager *device_manager, - GdkDevice *device); - - /* VMethods */ - GList * (* list_devices) (GdkDeviceManager *device_manager, - GdkDeviceType type); - GdkDevice * (* get_client_pointer) (GdkDeviceManager *device_manager); -}; - -GType gdk_device_manager_get_type (void) G_GNUC_CONST; - -GdkDisplay * gdk_device_manager_get_display (GdkDeviceManager *device_manager); -GList * gdk_device_manager_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type); -GdkDevice * gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager); +GdkDisplay * gdk_device_manager_get_display (GdkDeviceManager *device_manager); +GList * gdk_device_manager_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type); +GdkDevice * gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager); G_END_DECLS diff --git a/gdk/gdkdevicemanagerprivate.h b/gdk/gdkdevicemanagerprivate.h new file mode 100644 index 0000000000..df5a046961 --- /dev/null +++ b/gdk/gdkdevicemanagerprivate.h @@ -0,0 +1,63 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_DEVICE_MANAGER_PRIVATE_H__ +#define __GDK_DEVICE_MANAGER_PRIVATE_H__ + +#include "gdkdevicemanager.h" + +G_BEGIN_DECLS + + +#define GDK_DEVICE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER, GdkDeviceManagerClass)) +#define GDK_IS_DEVICE_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER)) +#define GDK_DEVICE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER, GdkDeviceManagerClass)) + + +typedef struct _GdkDeviceManagerClass GdkDeviceManagerClass; + +struct _GdkDeviceManager +{ + GObject parent_instance; + + /*< private >*/ + GdkDisplay *display; +}; + +struct _GdkDeviceManagerClass +{ + GObjectClass parent_class; + + /* Signals */ + void (* device_added) (GdkDeviceManager *device_manager, + GdkDevice *device); + void (* device_removed) (GdkDeviceManager *device_manager, + GdkDevice *device); + void (* device_changed) (GdkDeviceManager *device_manager, + GdkDevice *device); + + /* VMethods */ + GList * (* list_devices) (GdkDeviceManager *device_manager, + GdkDeviceType type); + GdkDevice * (* get_client_pointer) (GdkDeviceManager *device_manager); +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index d878ae634d..8816576b53 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -20,8 +20,9 @@ #ifndef __GDK_DEVICE_PRIVATE_H__ #define __GDK_DEVICE_PRIVATE_H__ -#include -#include +#include "gdkdevice.h" +#include "gdkdevicemanager.h" +#include "gdkevents.h" G_BEGIN_DECLS @@ -30,22 +31,50 @@ G_BEGIN_DECLS #define GDK_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE, GdkDeviceClass)) typedef struct _GdkDeviceClass GdkDeviceClass; +typedef struct _GdkDeviceKey GdkDeviceKey; + +struct _GdkDeviceKey +{ + guint keyval; + GdkModifierType modifiers; +}; + +struct _GdkDevice +{ + GObject parent_instance; + + gchar *name; + GdkInputSource source; + GdkInputMode mode; + gboolean has_cursor; + gint num_keys; + GdkDeviceKey *keys; + GdkDeviceManager *manager; + GdkDisplay *display; + /* Paired master for master, + * associated master for slaves + */ + GdkDevice *associated; + GList *slaves; + GdkDeviceType type; + GArray *axes; +}; struct _GdkDeviceClass { GObjectClass parent_class; - gboolean (* get_history) (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); + gboolean (* get_history) (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); - void (* get_state) (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); + void (* get_state) (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); void (* set_window_cursor) (GdkDevice *device, GdkWindow *window, @@ -55,10 +84,10 @@ struct _GdkDeviceClass GdkScreen *screen, gint x, gint y); - gboolean (* query_state) (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, + gboolean (* query_state) (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, gint *root_x, gint *root_y, gint *win_x, @@ -123,8 +152,24 @@ gboolean _gdk_device_translate_axis (GdkDevice *device, GdkTimeCoord ** _gdk_device_allocate_history (GdkDevice *device, gint n_events); -void _gdk_input_check_extension_events (GdkDevice *device); - +void _gdk_device_add_slave (GdkDevice *device, + GdkDevice *slave); +void _gdk_device_remove_slave (GdkDevice *device, + GdkDevice *slave); +gboolean _gdk_device_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask); +GdkWindow * _gdk_device_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel); G_END_DECLS diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index d5c01fdc02..fa2e645467 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -24,7 +24,9 @@ #include "config.h" #include "gdkdisplay.h" +#include "gdkdisplayprivate.h" +#include "gdkdeviceprivate.h" #include "gdkevents.h" #include "gdkwindowimpl.h" #include "gdkinternals.h" @@ -32,7 +34,6 @@ #include "gdkscreen.h" #include -#include /** @@ -69,106 +70,11 @@ enum { static void gdk_display_dispose (GObject *object); static void gdk_display_finalize (GObject *object); -static void multihead_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow * multihead_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow * multihead_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y); -static void multihead_default_get_pointer (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow * multihead_default_window_get_pointer (GdkDisplay *display, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow * multihead_default_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y); - - -static void singlehead_get_pointer (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow* singlehead_window_get_pointer (GdkDisplay *display, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow* singlehead_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y); - -static GdkWindow* singlehead_default_window_get_pointer (GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow* singlehead_default_window_at_pointer (GdkScreen *screen, - gint *win_x, - gint *win_y); -static GdkWindow *gdk_window_real_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); -static GdkWindow *gdk_display_real_get_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y); +static GdkAppLaunchContext *gdk_display_real_get_app_launch_context (GdkDisplay *display); static guint signals[LAST_SIGNAL] = { 0 }; -static char *gdk_sm_client_id; - -static const GdkDisplayDeviceHooks default_device_hooks = { - _gdk_windowing_get_device_state, - gdk_window_real_window_get_device_position, - gdk_display_real_get_window_at_device_position -}; - -static const GdkDisplayDeviceHooks multihead_pointer_hooks = { - multihead_get_device_state, - multihead_window_get_device_position, - multihead_window_at_device_position -}; - -static const GdkDisplayPointerHooks multihead_default_pointer_hooks = { - multihead_default_get_pointer, - multihead_default_window_get_pointer, - multihead_default_window_at_pointer -}; - -static const GdkDisplayPointerHooks singlehead_pointer_hooks = { - singlehead_get_pointer, - singlehead_window_get_pointer, - singlehead_window_at_pointer -}; - -static const GdkPointerHooks singlehead_default_pointer_hooks = { - singlehead_default_window_get_pointer, - singlehead_default_window_at_pointer -}; - -static const GdkPointerHooks *singlehead_current_pointer_hooks = &singlehead_default_pointer_hooks; -static const GdkDisplayPointerHooks *multihead_current_pointer_hooks = &multihead_default_pointer_hooks; - G_DEFINE_TYPE (GdkDisplay, gdk_display, G_TYPE_OBJECT) static void @@ -179,6 +85,9 @@ gdk_display_class_init (GdkDisplayClass *class) object_class->finalize = gdk_display_finalize; object_class->dispose = gdk_display_dispose; + class->get_app_launch_context = gdk_display_real_get_app_launch_context; + class->window_type = GDK_TYPE_WINDOW; + /** * GdkDisplay::opened: * @display: the object on which the signal is emitted @@ -270,13 +179,9 @@ gdk_display_opened (GdkDisplay *display) static void gdk_display_init (GdkDisplay *display) { - _gdk_displays = g_slist_prepend (_gdk_displays, display); - display->double_click_time = 250; display->double_click_distance = 5; - display->device_hooks = &default_device_hooks; - display->device_grabs = g_hash_table_new (NULL, NULL); display->motion_hint_info = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_free); @@ -294,28 +199,16 @@ gdk_display_init (GdkDisplay *display) static void gdk_display_dispose (GObject *object) { - GdkDisplay *display = GDK_DISPLAY_OBJECT (object); + GdkDisplay *display = GDK_DISPLAY (object); GdkDeviceManager *device_manager; - device_manager = gdk_display_get_device_manager (GDK_DISPLAY_OBJECT (object)); + device_manager = gdk_display_get_device_manager (GDK_DISPLAY (object)); g_list_foreach (display->queued_events, (GFunc)gdk_event_free, NULL); g_list_free (display->queued_events); display->queued_events = NULL; display->queued_tail = NULL; - _gdk_displays = g_slist_remove (_gdk_displays, object); - - if (gdk_display_get_default () == display) - { - if (_gdk_displays) - gdk_display_manager_set_default_display (gdk_display_manager_get(), - _gdk_displays->data); - else - gdk_display_manager_set_default_display (gdk_display_manager_get(), - NULL); - } - if (device_manager) { /* this is to make it drop devices which may require using the X @@ -331,7 +224,7 @@ gdk_display_dispose (GObject *object) static void gdk_display_finalize (GObject *object) { - GdkDisplay *display = GDK_DISPLAY_OBJECT (object); + GdkDisplay *display = GDK_DISPLAY (object); g_hash_table_foreach_remove (display->device_grabs, free_device_grabs_foreach, @@ -406,8 +299,8 @@ GdkEvent* gdk_display_get_event (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - _gdk_events_queue (display); + + GDK_DISPLAY_GET_CLASS (display)->queue_events (display); return _gdk_event_unqueue (display); } @@ -607,6 +500,29 @@ gdk_beep (void) gdk_display_beep (gdk_display_get_default ()); } +/** + * gdk_flush: + * + * Flushes the output buffers of all display connections and waits + * until all requests have been processed. + * This is rarely needed by applications. + */ +void +gdk_flush (void) +{ + GSList *list, *l; + + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = list; l; l = l->next) + { + GdkDisplay *display = l->data; + + GDK_DISPLAY_GET_CLASS (display)->sync (display); + } + + g_slist_free (list); +} + /** * gdk_event_send_client_message: * @event: the #GdkEvent to send, which should be a #GdkEventClient. @@ -649,88 +565,6 @@ gdk_event_send_clientmessage_toall (GdkEvent *event) gdk_screen_broadcast_client_message (gdk_screen_get_default (), event); } -/** - * gdk_device_get_core_pointer: - * - * Returns the core pointer device for the default display. - * - * Return value: (transfer none): the core pointer device; this is owned - * by the display and should not be freed. - * - * Deprecated: 3.0: Use gdk_device_manager_get_client_pointer() instead, or - * gdk_event_get_device() if a #GdkEvent with pointer device - * information is available. - **/ -GdkDevice * -gdk_device_get_core_pointer (void) -{ - return gdk_display_get_core_pointer (gdk_display_get_default ()); -} - -/** - * gdk_display_get_core_pointer: - * @display: a #GdkDisplay - * - * Returns the core pointer device for the given display - * - * Return value: (transfer none): the core pointer device; this is owned by the - * display and should not be freed. - * - * Since: 2.2 - * - * Deprecated: 3.0: Use gdk_device_manager_get_client_pointer() instead, or - * gdk_event_get_device() if a #GdkEvent with device - * information is available. - **/ -GdkDevice * -gdk_display_get_core_pointer (GdkDisplay *display) -{ - return display->core_pointer; -} - -/** - * gdk_set_sm_client_id: - * @sm_client_id: the client id assigned by the session manager when the - * connection was opened, or %NULL to remove the property. - * - * Sets the SM_CLIENT_ID property on the application's leader window so that - * the window manager can save the application's state using the X11R6 ICCCM - * session management protocol. - * - * See the X Session Management Library documentation for more information on - * session management and the Inter-Client Communication Conventions Manual - * (ICCCM) for information on the WM_CLIENT_LEADER property. - * (Both documents are part of the X Window System distribution.) - **/ -void -gdk_set_sm_client_id (const gchar* sm_client_id) -{ - GSList *displays, *tmp_list; - - g_free (gdk_sm_client_id); - gdk_sm_client_id = g_strdup (sm_client_id); - - displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); - for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next) - _gdk_windowing_display_set_sm_client_id (tmp_list->data, sm_client_id); - - g_slist_free (displays); -} - -/** - * _gdk_get_sm_client_id: - * - * Gets the client ID set with gdk_set_sm_client_id(), if any. - * - * Return value: Session ID, or %NULL if gdk_set_sm_client_id() - * has never been called. - **/ -const char * -_gdk_get_sm_client_id (void) -{ - return gdk_sm_client_id; -} - void _gdk_display_enable_motion_hints (GdkDisplay *display, GdkDevice *device) @@ -748,7 +582,7 @@ _gdk_display_enable_motion_hints (GdkDisplay *display, if (*device_serial != 0) { - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); /* We might not actually generate the next request, so make sure this triggers always, this may cause it to trigger slightly too early, but this is just a hint @@ -760,113 +594,6 @@ _gdk_display_enable_motion_hints (GdkDisplay *display, } } -/** - * gdk_display_get_device_state: - * @display: a #GdkDisplay. - * @device: device to query status to. - * @screen: location to store the #GdkScreen the @device is on, or %NULL. - * @x: location to store root window X coordinate of @device, or %NULL. - * @y: location to store root window Y coordinate of @device, or %NULL. - * @mask: location to store current modifier mask for @device, or %NULL. - * - * Gets the current location and state of @device for a given display. - * - * Since: 3.0 - **/ -void -gdk_display_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask) -{ - GdkScreen *tmp_screen; - gint tmp_x, tmp_y; - GdkModifierType tmp_mask; - - g_return_if_fail (GDK_IS_DISPLAY (display)); - g_return_if_fail (GDK_IS_DEVICE (device)); - - display->device_hooks->get_device_state (display, device, &tmp_screen, &tmp_x, &tmp_y, &tmp_mask); - - if (screen) - *screen = tmp_screen; - if (x) - *x = tmp_x; - if (y) - *y = tmp_y; - if (mask) - *mask = tmp_mask; -} - -/** - * gdk_display_get_window_at_device_position: - * @display: a #GdkDisplay. - * @device: #GdkDevice to query info to. - * @win_x: return location for the X coordinate of the device location, relative to the window origin, or %NULL. - * @win_y: return location for the Y coordinate of the device location, relative to the window origin, or %NULL. - * - * Obtains the window underneath @device, returning the location of the device in @win_x and @win_y. Returns - * %NULL if the window tree under @device is not known to GDK (for example, belongs to another application). - * - * Returns: (transfer none): the #GdkWindow under the device position, or %NULL. - * - * Since: 3.0 - **/ -GdkWindow * -gdk_display_get_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y) -{ - gint tmp_x, tmp_y; - GdkWindow *window; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - - window = display->device_hooks->window_at_device_position (display, device, &tmp_x, &tmp_y); - - if (win_x) - *win_x = tmp_x; - if (win_y) - *win_y = tmp_y; - - return window; -} - -/** - * gdk_display_set_device_hooks: - * @display: a #GdkDisplay. - * @new_hooks: a table of pointers to functions for getting quantities related to all - * devices position, or %NULL to restore the default table. - * - * This function allows for hooking into the operation of getting the current location of any - * #GdkDevice on a particular #GdkDisplay. This is only useful for such low-level tools as - * an event recorder. Applications should never have any reason to use this facility. - * - * Returns: (transfer none): The previous device hook table. - * - * Since: 3.0 - **/ -GdkDisplayDeviceHooks * -gdk_display_set_device_hooks (GdkDisplay *display, - const GdkDisplayDeviceHooks *new_hooks) -{ - const GdkDisplayDeviceHooks *result; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - result = display->device_hooks; - - if (new_hooks) - display->device_hooks = new_hooks; - else - display->device_hooks = &default_device_hooks; - - return (GdkDisplayDeviceHooks *) result; -} - /** * gdk_display_get_pointer: * @display: a #GdkDisplay @@ -881,7 +608,7 @@ gdk_display_set_device_hooks (GdkDisplay *display, * * Since: 2.2 * - * Deprecated: 3.0: Use gdk_display_get_device_state() instead. + * Deprecated: 3.0: Use gdk_device_get_position() instead. **/ void gdk_display_get_pointer (GdkDisplay *display, @@ -890,71 +617,36 @@ gdk_display_get_pointer (GdkDisplay *display, gint *y, GdkModifierType *mask) { + GdkScreen *default_screen; + GdkWindow *root; + gint tmp_x, tmp_y; + GdkModifierType tmp_mask; + g_return_if_fail (GDK_IS_DISPLAY (display)); - gdk_display_get_device_state (display, display->core_pointer, screen, x, y, mask); -} + if (gdk_display_is_closed (display)) + return; -static GdkWindow * -gdk_display_real_get_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y) -{ - GdkWindow *window; - gint x, y; + default_screen = gdk_display_get_default_screen (display); - window = _gdk_windowing_window_at_device_position (display, device, &x, &y, NULL, FALSE); + /* We call _gdk_device_query_state() here manually instead of + * gdk_device_get_position() because we care about the modifier mask */ - /* This might need corrections, as the native window returned - may contain client side children */ - if (window) - { - double xx, yy; - - window = _gdk_window_find_descendant_at (window, - x, y, - &xx, &yy); - x = floor (xx + 0.5); - y = floor (yy + 0.5); - } - - *win_x = x; - *win_y = y; - - return window; -} - -static GdkWindow * -gdk_window_real_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - gint tmpx, tmpy; - GdkModifierType tmp_mask; - gboolean normal_child; - - normal_child = GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_device_state (window, - device, - &tmpx, &tmpy, - &tmp_mask); - /* We got the coords on the impl, convert to the window */ - tmpx -= window->abs_x; - tmpy -= window->abs_y; + _gdk_device_query_state (display->core_pointer, + gdk_screen_get_root_window (default_screen), + &root, NULL, + &tmp_x, &tmp_y, + NULL, NULL, + &tmp_mask); + if (screen) + *screen = gdk_window_get_screen (root); if (x) - *x = tmpx; + *x = tmp_x; if (y) - *y = tmpy; + *y = tmp_y; if (mask) *mask = tmp_mask; - - if (normal_child) - return _gdk_window_find_child_at (window, tmpx, tmpy); - return NULL; } /** @@ -974,7 +666,7 @@ gdk_window_real_window_get_device_position (GdkDisplay *display, * * Since: 2.2 * - * Deprecated: 3.0: Use gdk_display_get_window_at_device_position() instead. + * Deprecated: 3.0: Use gdk_device_get_window_at_position() instead. **/ GdkWindow * gdk_display_get_window_at_pointer (GdkDisplay *display, @@ -983,209 +675,7 @@ gdk_display_get_window_at_pointer (GdkDisplay *display, { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return gdk_display_get_window_at_device_position (display, display->core_pointer, win_x, win_y); -} - -static void -multihead_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask) -{ - multihead_current_pointer_hooks->get_pointer (display, screen, x, y, mask); -} - -static GdkWindow * -multihead_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - return multihead_current_pointer_hooks->window_get_pointer (display, window, x, y, mask); -} - -static GdkWindow * -multihead_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y) -{ - return multihead_current_pointer_hooks->window_at_pointer (display, win_x, win_y); -} - -static void -multihead_default_get_pointer (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask) -{ - return _gdk_windowing_get_device_state (display, - display->core_pointer, - screen, x, y, mask); -} - -static GdkWindow * -multihead_default_window_get_pointer (GdkDisplay *display, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - return gdk_window_real_window_get_device_position (display, - display->core_pointer, - window, x, y, mask); -} - -static GdkWindow * -multihead_default_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y) -{ - return gdk_display_real_get_window_at_device_position (display, - display->core_pointer, - win_x, win_y); -} - -/** - * gdk_display_set_pointer_hooks: - * @display: a #GdkDisplay - * @new_hooks: a table of pointers to functions for getting - * quantities related to the current pointer position, - * or %NULL to restore the default table. - * - * This function allows for hooking into the operation - * of getting the current location of the pointer on a particular - * display. This is only useful for such low-level tools as an - * event recorder. Applications should never have any - * reason to use this facility. - * - * Return value: (transfer none): the previous pointer hook table - * - * Since: 2.2 - * - * Deprecated: 3.0: Use gdk_display_set_device_hooks() instead. - **/ -GdkDisplayPointerHooks * -gdk_display_set_pointer_hooks (GdkDisplay *display, - const GdkDisplayPointerHooks *new_hooks) -{ - const GdkDisplayPointerHooks *result = multihead_current_pointer_hooks; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - if (new_hooks) - multihead_current_pointer_hooks = new_hooks; - else - multihead_current_pointer_hooks = &multihead_default_pointer_hooks; - - gdk_display_set_device_hooks (display, &multihead_pointer_hooks); - - return (GdkDisplayPointerHooks *)result; -} - -static void -singlehead_get_pointer (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask) -{ - GdkScreen *default_screen = gdk_display_get_default_screen (display); - GdkWindow *root_window = gdk_screen_get_root_window (default_screen); - - *screen = default_screen; - - singlehead_current_pointer_hooks->get_pointer (root_window, x, y, mask); -} - -static GdkWindow* -singlehead_window_get_pointer (GdkDisplay *display, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - return singlehead_current_pointer_hooks->get_pointer (window, x, y, mask); -} - -static GdkWindow* -singlehead_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y) -{ - GdkScreen *default_screen = gdk_display_get_default_screen (display); - - return singlehead_current_pointer_hooks->window_at_pointer (default_screen, - win_x, win_y); -} - -static GdkWindow* -singlehead_default_window_get_pointer (GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - GdkDisplay *display; - - display = gdk_window_get_display (window); - - return gdk_window_real_window_get_device_position (display, - display->core_pointer, - window, x, y, mask); -} - -static GdkWindow* -singlehead_default_window_at_pointer (GdkScreen *screen, - gint *win_x, - gint *win_y) -{ - GdkDisplay *display; - - display = gdk_screen_get_display (screen); - - return gdk_display_real_get_window_at_device_position (display, - display->core_pointer, - win_x, win_y); -} - -/** - * gdk_set_pointer_hooks: - * @new_hooks: a table of pointers to functions for getting - * quantities related to the current pointer position, - * or %NULL to restore the default table. - * - * This function allows for hooking into the operation - * of getting the current location of the pointer. This - * is only useful for such low-level tools as an - * event recorder. Applications should never have any - * reason to use this facility. - * - * This function is not multihead safe. For multihead operation, - * see gdk_display_set_pointer_hooks(). - * - * Return value: the previous pointer hook table - * - * Deprecated: 3.0: Use gdk_display_set_device_hooks() instead. - **/ -GdkPointerHooks * -gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks) -{ - const GdkPointerHooks *result = singlehead_current_pointer_hooks; - - if (new_hooks) - singlehead_current_pointer_hooks = new_hooks; - else - singlehead_current_pointer_hooks = &singlehead_default_pointer_hooks; - - gdk_display_set_pointer_hooks (gdk_display_get_default (), - &singlehead_pointer_hooks); - - return (GdkPointerHooks *)result; + return gdk_device_get_window_at_position (display->core_pointer, win_x, win_y); } static void @@ -1299,6 +789,7 @@ _gdk_display_add_device_grab (GdkDisplay *display, static void synthesize_crossing_events (GdkDisplay *display, GdkDevice *device, + GdkDevice *source_device, GdkWindow *src_window, GdkWindow *dest_window, GdkCrossingMode crossing_mode, @@ -1334,7 +825,7 @@ synthesize_crossing_events (GdkDisplay *display, _gdk_synthesize_crossing_events (display, src_window, dest_window, - device, + device, source_device, crossing_mode, x, y, state, time, @@ -1348,7 +839,7 @@ synthesize_crossing_events (GdkDisplay *display, _gdk_synthesize_crossing_events (display, src_window, NULL, - device, + device, source_device, crossing_mode, x, y, state, time, @@ -1363,7 +854,7 @@ synthesize_crossing_events (GdkDisplay *display, _gdk_synthesize_crossing_events (display, src_window, NULL, - device, + device, source_device, crossing_mode, x, y, state, time, @@ -1374,7 +865,7 @@ synthesize_crossing_events (GdkDisplay *display, _gdk_synthesize_crossing_events (display, NULL, dest_window, - device, + device, source_device, crossing_mode, x, y, state, time, @@ -1394,7 +885,7 @@ get_current_toplevel (GdkDisplay *display, int x, y; GdkModifierType state; - pointer_window = _gdk_windowing_window_at_device_position (display, device, &x, &y, &state, TRUE); + pointer_window = _gdk_device_window_at_position (device, &x, &y, &state, TRUE); if (pointer_window != NULL && (GDK_WINDOW_DESTROYED (pointer_window) || @@ -1405,12 +896,14 @@ get_current_toplevel (GdkDisplay *display, *x_out = x; *y_out = y; *state_out = state; + return pointer_window; } static void switch_to_pointer_grab (GdkDisplay *display, GdkDevice *device, + GdkDevice *source_device, GdkDeviceGrabInfo *grab, GdkDeviceGrabInfo *last_grab, guint32 time, @@ -1446,7 +939,7 @@ switch_to_pointer_grab (GdkDisplay *display, src_window = info->window_under_pointer; if (src_window != grab->window) - synthesize_crossing_events (display, device, + synthesize_crossing_events (display, device, source_device, src_window, grab->window, GDK_CROSSING_GRAB, time, serial); @@ -1497,7 +990,7 @@ switch_to_pointer_grab (GdkDisplay *display, } if (pointer_window != last_grab->window) - synthesize_crossing_events (display, device, + synthesize_crossing_events (display, device, source_device, last_grab->window, pointer_window, GDK_CROSSING_UNGRAB, time, serial); @@ -1512,6 +1005,7 @@ switch_to_pointer_grab (GdkDisplay *display, void _gdk_display_device_grab_update (GdkDisplay *display, GdkDevice *device, + GdkDevice *source_device, gulong current_serial) { GdkDeviceGrabInfo *current_grab, *next_grab; @@ -1536,7 +1030,7 @@ _gdk_display_device_grab_update (GdkDisplay *display, if (!current_grab->activated) { if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - switch_to_pointer_grab (display, device, current_grab, NULL, time, current_serial); + switch_to_pointer_grab (display, device, source_device, current_grab, NULL, time, current_serial); } break; @@ -1564,7 +1058,7 @@ _gdk_display_device_grab_update (GdkDisplay *display, g_hash_table_insert (display->device_grabs, device, grabs); if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - switch_to_pointer_grab (display, device, + switch_to_pointer_grab (display, device, source_device, next_grab, current_grab, time, current_serial); @@ -1745,8 +1239,8 @@ _gdk_display_pointer_info_foreach (GdkDisplay *display, * gdk_device_grab_info_libgtk_only: * @display: the display for which to get the grab information * @device: device to get the grab information from - * @grab_window: location to store current grab window - * @owner_events: location to store boolean indicating whether + * @grab_window: (out) (transfer none): location to store current grab window + * @owner_events: (out): location to store boolean indicating whether * the @owner_events flag to gdk_keyboard_grab() or * gdk_pointer_grab() was %TRUE. * @@ -1862,3 +1356,862 @@ gdk_display_get_device_manager (GdkDisplay *display) return display->device_manager; } + +/** + * gdk_display_get_name: + * @display: a #GdkDisplay + * + * Gets the name of the display. + * + * Returns: a string representing the display name. This string is owned + * by GDK and should not be modified or freed. + * + * Since: 2.2 + */ +G_CONST_RETURN gchar * +gdk_display_get_name (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_name (display); +} + +gchar * +gdk_get_display (void) +{ + return g_strdup (gdk_display_get_name (gdk_display_get_default ())); +} + +/** + * gdk_display_get_n_screens: + * @display: a #GdkDisplay + * + * Gets the number of screen managed by the @display. + * + * Returns: number of screens. + * + * Since: 2.2 + */ +gint +gdk_display_get_n_screens (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_n_screens (display); +} + +/** + * gdk_display_get_screen: + * @display: a #GdkDisplay + * @screen_num: the screen number + * + * Returns a screen object for one of the screens of the display. + * + * Returns: (transfer none): the #GdkScreen object + * + * Since: 2.2 + */ +GdkScreen * +gdk_display_get_screen (GdkDisplay *display, + gint screen_num) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_screen (display, screen_num); +} + +/** + * gdk_display_get_default_screen: + * @display: a #GdkDisplay + * + * Get the default #GdkScreen for @display. + * + * Returns: (transfer none): the default #GdkScreen object for @display + * + * Since: 2.2 + */ +GdkScreen * +gdk_display_get_default_screen (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_default_screen (display); +} + +/** + * gdk_display_beep: + * @display: a #GdkDisplay + * + * Emits a short beep on @display + * + * Since: 2.2 + */ +void +gdk_display_beep (GdkDisplay *display) +{ + GDK_DISPLAY_GET_CLASS(display)->beep (display); +} + +/** + * gdk_display_sync: + * @display: a #GdkDisplay + * + * Flushes any requests queued for the windowing system and waits until all + * requests have been handled. This is often used for making sure that the + * display is synchronized with the current state of the program. Calling + * gdk_display_sync() before gdk_error_trap_pop() makes sure that any errors + * generated from earlier requests are handled before the error trap is + * removed. + * + * This is most useful for X11. On windowing systems where requests are + * handled synchronously, this function will do nothing. + * + * Since: 2.2 + */ +void +gdk_display_sync (GdkDisplay *display) +{ + GDK_DISPLAY_GET_CLASS(display)->sync (display); +} + +/** + * gdk_display_flush: + * @display: a #GdkDisplay + * + * Flushes any requests queued for the windowing system; this happens automatically + * when the main loop blocks waiting for new events, but if your application + * is drawing without returning control to the main loop, you may need + * to call this function explicitely. A common case where this function + * needs to be called is when an application is executing drawing commands + * from a thread other than the thread where the main loop is running. + * + * This is most useful for X11. On windowing systems where requests are + * handled synchronously, this function will do nothing. + * + * Since: 2.4 + */ +void +gdk_display_flush (GdkDisplay *display) +{ + GDK_DISPLAY_GET_CLASS(display)->flush (display); +} + +/** + * gdk_display_get_default_group: + * @display: a #GdkDisplay + * + * Returns the default group leader window for all toplevel windows + * on @display. This window is implicitly created by GDK. + * See gdk_window_set_group(). + * + * Return value: (transfer none): The default group leader window + * for @display + * + * Since: 2.4 + **/ +GdkWindow * +gdk_display_get_default_group (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_default_group (display); +} + +/** + * gdk_display_supports_selection_notification: + * @display: a #GdkDisplay + * + * Returns whether #GdkEventOwnerChange events will be + * sent when the owner of a selection changes. + * + * Return value: whether #GdkEventOwnerChange events will + * be sent. + * + * Since: 2.6 + **/ +gboolean +gdk_display_supports_selection_notification (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->supports_selection_notification (display); +} + +/** + * gdk_display_request_selection_notification: + * @display: a #GdkDisplay + * @selection: the #GdkAtom naming the selection for which + * ownership change notification is requested + * + * Request #GdkEventOwnerChange events for ownership changes + * of the selection named by the given atom. + * + * Return value: whether #GdkEventOwnerChange events will + * be sent. + * + * Since: 2.6 + **/ +gboolean +gdk_display_request_selection_notification (GdkDisplay *display, + GdkAtom selection) + +{ + return GDK_DISPLAY_GET_CLASS(display)->request_selection_notification (display, selection); +} + +/** + * gdk_display_supports_clipboard_persistence + * @display: a #GdkDisplay + * + * Returns whether the speicifed display supports clipboard + * persistance; i.e. if it's possible to store the clipboard data after an + * application has quit. On X11 this checks if a clipboard daemon is + * running. + * + * Returns: %TRUE if the display supports clipboard persistance. + * + * Since: 2.6 + */ +gboolean +gdk_display_supports_clipboard_persistence (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->supports_clipboard_persistence (display); +} + +/** + * gdk_display_store_clipboard + * @display: a #GdkDisplay + * @clipboard_window: a #GdkWindow belonging to the clipboard owner + * @time_: a timestamp + * @targets: an array of targets that should be saved, or %NULL + * if all available targets should be saved. + * @n_targets: length of the @targets array + * + * Issues a request to the clipboard manager to store the + * clipboard data. On X11, this is a special program that works + * according to the freedesktop clipboard specification, available at + * + * http://www.freedesktop.org/Standards/clipboard-manager-spec. + * + * Since: 2.6 + */ +void +gdk_display_store_clipboard (GdkDisplay *display, + GdkWindow *clipboard_window, + guint32 time_, + const GdkAtom *targets, + gint n_targets) +{ + GDK_DISPLAY_GET_CLASS(display)->store_clipboard (display, clipboard_window, time_, targets, n_targets); +} + +/** + * gdk_display_supports_shapes: + * @display: a #GdkDisplay + * + * Returns %TRUE if gdk_window_shape_combine_mask() can + * be used to create shaped windows on @display. + * + * Returns: %TRUE if shaped windows are supported + * + * Since: 2.10 + */ +gboolean +gdk_display_supports_shapes (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->supports_shapes (display); +} + +/** + * gdk_display_supports_input_shapes: + * @display: a #GdkDisplay + * + * Returns %TRUE if gdk_window_input_shape_combine_mask() can + * be used to modify the input shape of windows on @display. + * + * Returns: %TRUE if windows with modified input shape are supported + * + * Since: 2.10 + */ +gboolean +gdk_display_supports_input_shapes (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->supports_input_shapes (display); +} + +/** + * gdk_display_supports_composite: + * @display: a #GdkDisplay + * + * Returns %TRUE if gdk_window_set_composited() can be used + * to redirect drawing on the window using compositing. + * + * Currently this only works on X11 with XComposite and + * XDamage extensions available. + * + * Returns: %TRUE if windows may be composited. + * + * Since: 2.12 + */ +gboolean +gdk_display_supports_composite (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->supports_composite (display); +} + +/** + * gdk_display_list_devices: + * @display: a #GdkDisplay + * + * Returns the list of available input devices attached to @display. + * The list is statically allocated and should not be freed. + * + * Return value: (transfer none) (element-type GdkDevice): + * a list of #GdkDevice + * + * Since: 2.2 + * + * Deprecated: 3.0: Use gdk_device_manager_list_devices() instead. + **/ +GList * +gdk_display_list_devices (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->list_devices (display); +} + +/** + * gdk_event_send_client_message_for_display: + * @display: the #GdkDisplay for the window where the message is to be sent. + * @event: the #GdkEvent to send, which should be a #GdkEventClient. + * @winid: the window to send the client message to. + * + * On X11, sends an X ClientMessage event to a given window. On + * Windows, sends a message registered with the name + * GDK_WIN32_CLIENT_MESSAGE. + * + * This could be used for communicating between different + * applications, though the amount of data is limited to 20 bytes on + * X11, and to just four bytes on Windows. + * + * Returns: non-zero on success. + * + * Since: 2.2 + */ +gboolean +gdk_event_send_client_message_for_display (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid) +{ + return GDK_DISPLAY_GET_CLASS(display)->send_client_message (display, event, winid); +} + +/** + * gdk_display_add_client_message_filter: + * @display: a #GdkDisplay for which this message filter applies + * @message_type: the type of ClientMessage events to receive. + * This will be checked against the @message_type field + * of the XClientMessage event struct. + * @func: the function to call to process the event. + * @data: user data to pass to @func. + * + * Adds a filter to be called when X ClientMessage events are received. + * See gdk_window_add_filter() if you are interested in filtering other + * types of events. + * + * Since: 2.2 + **/ +void +gdk_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data) +{ + GDK_DISPLAY_GET_CLASS(display)->add_client_message_filter (display, message_type, func, data); +} + +/** + * gdk_add_client_message_filter: + * @message_type: the type of ClientMessage events to receive. This will be + * checked against the message_type field of the + * XClientMessage event struct. + * @func: the function to call to process the event. + * @data: user data to pass to @func. + * + * Adds a filter to the default display to be called when X ClientMessage events + * are received. See gdk_display_add_client_message_filter(). + **/ +void +gdk_add_client_message_filter (GdkAtom message_type, + GdkFilterFunc func, + gpointer data) +{ + gdk_display_add_client_message_filter (gdk_display_get_default (), + message_type, func, data); +} + +static GdkAppLaunchContext * +gdk_display_real_get_app_launch_context (GdkDisplay *display) +{ + GdkAppLaunchContext *ctx; + + ctx = g_object_new (GDK_TYPE_APP_LAUNCH_CONTEXT, + "display", display, + NULL); + + return ctx; +} + +/** + * gdk_display_get_app_launch_context: + * @display: a #GdkDisplay + * + * Returns a #GdkAppLaunchContext suitable for launching + * applications on the given display. + * + * Returns: a new #GdkAppLaunchContext for @display. + * Free with g_object_unref() when done + * + * Since: 3.0 + */ +GdkAppLaunchContext * +gdk_display_get_app_launch_context (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS(display)->get_app_launch_context (display); +} + +/** + * gdk_drag_get_protocol_for_display: + * @display: the #GdkDisplay where the destination window resides + * @xid: the windowing system id of the destination window. + * @protocol: location where the supported DND protocol is returned. + * + * Finds out the DND protocol supported by a window. + * + * Return value: the windowing system id of the window where the drop + * should happen. This may be @xid or the id of a proxy window, + * or zero if @xid does not support Drag and Drop. + * + * Since: 2.2 + */ +GdkNativeWindow +gdk_drag_get_protocol_for_display (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol) +{ + return GDK_DISPLAY_GET_CLASS (display)->get_drag_protocol (display, xid, protocol, NULL); +} + +/** + * gdk_display_open: + * @display_name: the name of the display to open + * + * Opens a display. + * + * Return value: (transfer none): a #GdkDisplay, or %NULL + * if the display could not be opened + * + * Since: 2.2 + */ +GdkDisplay * +gdk_display_open (const gchar *display_name) +{ + return gdk_display_manager_open_display (gdk_display_manager_get (), display_name); +} + +/** + * gdk_display_has_pending: + * @display: a #GdkDisplay + * + * Returns whether the display has events that are waiting + * to be processed. + * + * Returns: %TRUE if there are events ready to be processed. + * + * Since: 3.0 + */ +gboolean +gdk_display_has_pending (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS (display)->has_pending (display); +} + +/** + * gdk_display_supports_cursor_alpha: + * @display: a #GdkDisplay + * + * Returns %TRUE if cursors can use an 8bit alpha channel + * on @display. Otherwise, cursors are restricted to bilevel + * alpha (i.e. a mask). + * + * Returns: whether cursors can have alpha channels. + * + * Since: 2.4 + */ +gboolean +gdk_display_supports_cursor_alpha (GdkDisplay *display) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); + + return GDK_DISPLAY_GET_CLASS (display)->supports_cursor_alpha (display); +} + +/** + * gdk_display_supports_cursor_color: + * @display: a #GdkDisplay + * + * Returns %TRUE if multicolored cursors are supported + * on @display. Otherwise, cursors have only a forground + * and a background color. + * + * Returns: whether cursors can have multiple colors. + * + * Since: 2.4 + */ +gboolean +gdk_display_supports_cursor_color (GdkDisplay *display) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); + + return GDK_DISPLAY_GET_CLASS (display)->supports_cursor_color (display); +} + +/** + * gdk_display_get_default_cursor_size: + * @display: a #GdkDisplay + * + * Returns the default size to use for cursors on @display. + * + * Returns: the default cursor size. + * + * Since: 2.4 + */ +guint +gdk_display_get_default_cursor_size (GdkDisplay *display) +{ + guint width, height; + + g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); + + GDK_DISPLAY_GET_CLASS (display)->get_default_cursor_size (display, + &width, + &height); + + return MIN (width, height); +} + +/** + * gdk_display_get_maximal_cursor_size: + * @display: a #GdkDisplay + * @width: (out): the return location for the maximal cursor width + * @height: (out): the return location for the maximal cursor height + * + * Gets the maximal size to use for cursors on @display. + * + * Since: 2.4 + */ +void +gdk_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height) +{ + g_return_if_fail (GDK_IS_DISPLAY (display)); + + GDK_DISPLAY_GET_CLASS (display)->get_maximal_cursor_size (display, + width, + height); +} + +/** + * gdk_display_warp_pointer: + * @display: a #GdkDisplay + * @screen: the screen of @display to warp the pointer to + * @x: the x coordinate of the destination + * @y: the y coordinate of the destination + * + * Warps the pointer of @display to the point @x,@y on + * the screen @screen, unless the pointer is confined + * to a window by a grab, in which case it will be moved + * as far as allowed by the grab. Warping the pointer + * creates events as if the user had moved the mouse + * instantaneously to the destination. + * + * Note that the pointer should normally be under the + * control of the user. This function was added to cover + * some rare use cases like keyboard navigation support + * for the color picker in the #GtkColorSelectionDialog. + * + * Since: 2.8 + * + * Deprecated: 3.0: Use gdk_device_warp() instead. + */ +void +gdk_display_warp_pointer (GdkDisplay *display, + GdkScreen *screen, + gint x, + gint y) +{ + gdk_device_warp (display->core_pointer, + screen, + x, y); +} + +gulong +_gdk_display_get_next_serial (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS (display)->get_next_serial (display); +} + + +/** + * gdk_notify_startup_complete: + * + * Indicates to the GUI environment that the application has finished + * loading. If the applications opens windows, this function is + * normally called after opening the application's initial set of + * windows. + * + * GTK+ will call this function automatically after opening the first + * #GtkWindow unless gtk_window_set_auto_startup_notification() is called + * to disable that feature. + * + * Since: 2.2 + **/ +void +gdk_notify_startup_complete (void) +{ + gdk_notify_startup_complete_with_id (NULL); +} + +/** + * gdk_notify_startup_complete_with_id: + * @startup_id: a startup-notification identifier, for which + * notification process should be completed + * + * Indicates to the GUI environment that the application has + * finished loading, using a given identifier. + * + * GTK+ will call this function automatically for #GtkWindow + * with custom startup-notification identifier unless + * gtk_window_set_auto_startup_notification() is called to + * disable that feature. + * + * Since: 2.12 + */ +void +gdk_notify_startup_complete_with_id (const gchar* startup_id) +{ + GdkDisplay *display; + + display = gdk_display_get_default (); + if (display) + gdk_display_notify_startup_complete (display, startup_id); +} + +/** + * gdk_display_notify_startup_complete: + * @display: a #GdkDisplay + * @startup_id: a startup-notification identifier, for which + * notification process should be completed + * + * Indicates to the GUI environment that the application has + * finished loading, using a given identifier. + * + * GTK+ will call this function automatically for #GtkWindow + * with custom startup-notification identifier unless + * gtk_window_set_auto_startup_notification() is called to + * disable that feature. + * + * Since: 3.0 + */ +void +gdk_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id) +{ + GDK_DISPLAY_GET_CLASS (display)->notify_startup_complete (display, startup_id); +} + +void +_gdk_display_event_data_copy (GdkDisplay *display, + const GdkEvent *event, + GdkEvent *new_event) +{ + GDK_DISPLAY_GET_CLASS (display)->event_data_copy (display, event, new_event); +} + +void +_gdk_display_event_data_free (GdkDisplay *display, + GdkEvent *event) +{ + GDK_DISPLAY_GET_CLASS (display)->event_data_free (display, event); +} + +void +_gdk_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask) +{ + GDK_DISPLAY_GET_CLASS (display)->create_window_impl (display, + window, + real_parent, + screen, + event_mask, + attributes, + attributes_mask); +} + +GdkWindow * +_gdk_display_create_window (GdkDisplay *display) +{ + return g_object_new (GDK_DISPLAY_GET_CLASS (display)->window_type, NULL); +} + +/** + * gdk_keymap_get_for_display: + * @display: the #GdkDisplay. + * + * Returns the #GdkKeymap attached to @display. + * + * Return value: (transfer none): the #GdkKeymap attached to @display. + * + * Since: 2.2 + */ +GdkKeymap* +gdk_keymap_get_for_display (GdkDisplay *display) +{ + return GDK_DISPLAY_GET_CLASS (display)->get_keymap (display); +} + +typedef struct _GdkGlobalErrorTrap GdkGlobalErrorTrap; + +struct _GdkGlobalErrorTrap +{ + GSList *displays; +}; + +static GQueue gdk_error_traps = G_QUEUE_INIT; + +/** + * gdk_error_trap_push: + * + * This function allows X errors to be trapped instead of the normal + * behavior of exiting the application. It should only be used if it + * is not possible to avoid the X error in any other way. Errors are + * ignored on all #GdkDisplay currently known to the + * #GdkDisplayManager. If you don't care which error happens and just + * want to ignore everything, pop with gdk_error_trap_pop_ignored(). + * If you need the error code, use gdk_error_trap_pop() which may have + * to block and wait for the error to arrive from the X server. + * + * This API exists on all platforms but only does anything on X. + * + * You can use gdk_x11_display_error_trap_push() to ignore errors + * on only a single display. + * +* + * Trapping an X error + * + * gdk_error_trap_push (); + * + * // ... Call the X function which may cause an error here ... + * + * + * if (gdk_error_trap_pop ()) + * { + * // ... Handle the error here ... + * } + * + * + */ +void +gdk_error_trap_push (void) +{ + GdkDisplayManager *manager; + GdkDisplayClass *class; + GdkGlobalErrorTrap *trap; + GSList *l; + + manager = gdk_display_manager_get (); + class = GDK_DISPLAY_GET_CLASS (gdk_display_manager_get_default_display (manager)); + + if (class->push_error_trap == NULL) + return; + + trap = g_slice_new (GdkGlobalErrorTrap); + trap->displays = gdk_display_manager_list_displays (manager); + + g_slist_foreach (trap->displays, (GFunc) g_object_ref, NULL); + for (l = trap->displays; l != NULL; l = l->next) + { + class->push_error_trap (l->data); + } + + g_queue_push_head (&gdk_error_traps, trap); +} + +static gint +gdk_error_trap_pop_internal (gboolean need_code) +{ + GdkDisplayManager *manager; + GdkDisplayClass *class; + GdkGlobalErrorTrap *trap; + gint result; + GSList *l; + + manager = gdk_display_manager_get (); + class = GDK_DISPLAY_GET_CLASS (gdk_display_manager_get_default_display (manager)); + + if (class->pop_error_trap == NULL) + return 0; + + trap = g_queue_pop_head (&gdk_error_traps); + + g_return_val_if_fail (trap != NULL, 0); + + result = 0; + for (l = trap->displays; l != NULL; l = l->next) + { + gint code = 0; + + code = class->pop_error_trap (l->data, !need_code); + + /* we use the error on the last display listed, why not. */ + if (code != 0) + result = code; + } + + g_slist_free_full (trap->displays, g_object_unref); + g_slice_free (GdkGlobalErrorTrap, trap); + + return result; +} + +/** + * gdk_error_trap_pop_ignored: + * + * Removes an error trap pushed with gdk_error_trap_push(), but + * without bothering to wait and see whether an error occurred. If an + * error arrives later asynchronously that was triggered while the + * trap was pushed, that error will be ignored. + * + * Since: 3.0 + */ +void +gdk_error_trap_pop_ignored (void) +{ + gdk_error_trap_pop_internal (FALSE); +} + +/** + * gdk_error_trap_pop: + * + * Removes an error trap pushed with gdk_error_trap_push(). + * May block until an error has been definitively received + * or not received from the X server. gdk_error_trap_pop_ignored() + * is preferred if you don't need to know whether an error + * occurred, because it never has to block. If you don't + * need the return value of gdk_error_trap_pop(), use + * gdk_error_trap_pop_ignored(). + * + * Prior to GDK 3.0, this function would not automatically + * sync for you, so you had to gdk_flush() if your last + * call to Xlib was not a blocking round trip. + * + * Return value: X error code or 0 on success + */ +gint +gdk_error_trap_pop (void) +{ + return gdk_error_trap_pop_internal (TRUE); +} diff --git a/gdk/gdkdisplay.h b/gdk/gdkdisplay.h index 17afa4bfc7..af779096c8 100644 --- a/gdk/gdkdisplay.h +++ b/gdk/gdkdisplay.h @@ -1,7 +1,7 @@ /* * gdkdisplay.h - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -34,180 +34,12 @@ G_BEGIN_DECLS -typedef struct _GdkDisplayClass GdkDisplayClass; -typedef struct _GdkDisplayPointerHooks GdkDisplayPointerHooks; -typedef struct _GdkDisplayDeviceHooks GdkDisplayDeviceHooks; - #define GDK_TYPE_DISPLAY (gdk_display_get_type ()) -#define GDK_DISPLAY_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay)) -#define GDK_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass)) +#define GDK_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay)) #define GDK_IS_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY)) -#define GDK_IS_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY)) -#define GDK_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass)) - -/* Tracks information about the keyboard grab on this display */ -typedef struct -{ - GdkWindow *window; - GdkWindow *native_window; - gulong serial; - gboolean owner_events; - guint32 time; -} GdkKeyboardGrabInfo; - -/* Tracks information about which window and position the pointer last was in. - * This is useful when we need to synthesize events later. - * Note that we track toplevel_under_pointer using enter/leave events, - * so in the case of a grab, either with owner_events==FALSE or with the - * pointer in no clients window the x/y coordinates may actually be outside - * the window. - */ -typedef struct -{ - GdkWindow *toplevel_under_pointer; /* The toplevel window with mouse inside, tracked via native events */ - GdkWindow *window_under_pointer; /* The window that last got sent a normal enter event */ - gdouble toplevel_x, toplevel_y; - guint32 state; - guint32 button; -} GdkPointerWindowInfo; - -typedef struct -{ - guint32 button_click_time[2]; /* The last 2 button click times. */ - GdkWindow *button_window[2]; /* The last 2 windows to receive button presses. */ - gint button_number[2]; /* The last 2 buttons to be pressed. */ - gint button_x[2]; /* The last 2 button click positions. */ - gint button_y[2]; -} GdkMultipleClickInfo; - -struct _GdkDisplay -{ - GObject parent_instance; - - /*< private >*/ - GList *GSEAL (queued_events); - GList *GSEAL (queued_tail); - - /* Information for determining if the latest button click - * is part of a double-click or triple-click - */ - GHashTable *GSEAL (multiple_click_info); - - guint GSEAL (double_click_time); /* Maximum time between clicks in msecs */ - GdkDevice *GSEAL (core_pointer); /* Core pointer device */ - - const GdkDisplayDeviceHooks *GSEAL (device_hooks); /* Current hooks for querying pointer */ - - guint GSEAL (closed) : 1; /* Whether this display has been closed */ - guint GSEAL (ignore_core_events) : 1; /* Don't send core motion and button event */ - - guint GSEAL (double_click_distance); /* Maximum distance between clicks in pixels */ - - GHashTable *GSEAL (device_grabs); - GHashTable *GSEAL (motion_hint_info); - - /* Hashtable containing a GdkPointerWindowInfo for each device */ - GHashTable *GSEAL (pointers_info); - - /* Last reported event time from server */ - guint32 GSEAL (last_event_time); - - /* Device manager associated to the display */ - GdkDeviceManager *GSEAL (device_manager); -}; - -struct _GdkDisplayClass -{ - GObjectClass parent_class; - - G_CONST_RETURN gchar * (*get_display_name) (GdkDisplay *display); - gint (*get_n_screens) (GdkDisplay *display); - GdkScreen * (*get_screen) (GdkDisplay *display, - gint screen_num); - GdkScreen * (*get_default_screen) (GdkDisplay *display); - - - /* Signals */ - void (*closed) (GdkDisplay *display, - gboolean is_error); -}; - -/** - * GdkDisplayPointerHooks: - * @get_pointer: Obtains the current pointer position and modifier state. - * The position is given in coordinates relative to the screen containing - * the pointer, which is returned in @screen. - * @window_get_pointer: Obtains the window underneath the mouse pointer. - * Current pointer position and modifier state are returned in @x, @y and - * @mask. The position is given in coordinates relative to @window. - * @window_at_pointer: Obtains the window underneath the mouse pointer, - * returning the location of that window in @win_x, @win_y. Returns %NULL - * if the window under the mouse pointer is not known to GDK (for example, - * belongs to another application). - * - * A table of pointers to functions for getting quantities related to - * the current pointer position. Each #GdkDisplay has a table of this type, - * which can be set using gdk_display_set_pointer_hooks(). - * - * This is only useful for such low-level tools as an event recorder. - * Applications should never have any reason to use this facility - * - * Since: 2.2 - */ -struct _GdkDisplayPointerHooks -{ - void (*get_pointer) (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); - GdkWindow* (*window_get_pointer) (GdkDisplay *display, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); - GdkWindow* (*window_at_pointer) (GdkDisplay *display, - gint *win_x, - gint *win_y); -}; - -/** - * GdkDisplayDeviceHooks: - * @get_device_state: Obtains the current position and modifier state for - * @device. The position is given in coordinates relative to the window - * containing the pointer, which is returned in @window. - * @window_get_device_position: Obtains the window underneath the device - * position. Current device position and modifier state are returned in - * @x, @y and @mask. The position is given in coordinates relative to - * @window. - * @window_at_device_position: Obtains the window underneath the device - * position, returning the location of that window in @win_x, @win_y. - * Returns %NULL if the window under the mouse pointer is not known to - * GDK (for example, belongs to another application). - * - * A table of pointers to functions for getting quantities related to - * the current device position. Each #GdkDisplay has a table of this type, - * which can be set using gdk_display_set_device_hooks(). - */ -struct _GdkDisplayDeviceHooks -{ - void (* get_device_state) (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); - GdkWindow * (* window_get_device_position) (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); - GdkWindow * (* window_at_device_position) (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y); -}; +#ifndef GDK_DISABLE_DEPRECATED +#define GDK_DISPLAY_OBJECT(object) GDK_DISPLAY(object) +#endif GType gdk_display_get_type (void) G_GNUC_CONST; GdkDisplay *gdk_display_open (const gchar *display_name); @@ -216,15 +48,17 @@ G_CONST_RETURN gchar * gdk_display_get_name (GdkDisplay *display); gint gdk_display_get_n_screens (GdkDisplay *display); GdkScreen * gdk_display_get_screen (GdkDisplay *display, - gint screen_num); + gint screen_num); GdkScreen * gdk_display_get_default_screen (GdkDisplay *display); #ifndef GDK_MULTIDEVICE_SAFE +#ifndef GDK_DISABLE_DEPRECATED void gdk_display_pointer_ungrab (GdkDisplay *display, - guint32 time_); + guint32 time_); void gdk_display_keyboard_ungrab (GdkDisplay *display, - guint32 time_); + guint32 time_); gboolean gdk_display_pointer_is_grabbed (GdkDisplay *display); +#endif /* GDK_DISABLE_DEPRECATED */ #endif /* GDK_MULTIDEVICE_SAFE */ gboolean gdk_display_device_is_grabbed (GdkDisplay *display, @@ -233,7 +67,7 @@ void gdk_display_beep (GdkDisplay *display); void gdk_display_sync (GdkDisplay *display); void gdk_display_flush (GdkDisplay *display); -void gdk_display_close (GdkDisplay *display); +void gdk_display_close (GdkDisplay *display); gboolean gdk_display_is_closed (GdkDisplay *display); #ifndef GDK_DISABLE_DEPRECATED @@ -243,93 +77,70 @@ GList * gdk_display_list_devices (GdkDisplay *display); GdkEvent* gdk_display_get_event (GdkDisplay *display); GdkEvent* gdk_display_peek_event (GdkDisplay *display); void gdk_display_put_event (GdkDisplay *display, - const GdkEvent *event); + const GdkEvent *event); +gboolean gdk_display_has_pending (GdkDisplay *display); void gdk_display_add_client_message_filter (GdkDisplay *display, - GdkAtom message_type, - GdkFilterFunc func, - gpointer data); + GdkAtom message_type, + GdkFilterFunc func, + gpointer data); void gdk_display_set_double_click_time (GdkDisplay *display, - guint msec); + guint msec); void gdk_display_set_double_click_distance (GdkDisplay *display, - guint distance); + guint distance); GdkDisplay *gdk_display_get_default (void); #ifndef GDK_MULTIDEVICE_SAFE - #ifndef GDK_DISABLE_DEPRECATED -GdkDevice *gdk_display_get_core_pointer (GdkDisplay *display); -#endif /* GDK_DISABLE_DEPRECATED */ - void gdk_display_get_pointer (GdkDisplay *display, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); + GdkScreen **screen, + gint *x, + gint *y, + GdkModifierType *mask); GdkWindow * gdk_display_get_window_at_pointer (GdkDisplay *display, - gint *win_x, - gint *win_y); + gint *win_x, + gint *win_y); void gdk_display_warp_pointer (GdkDisplay *display, - GdkScreen *screen, - gint x, - gint y); + GdkScreen *screen, + gint x, + gint y); +#endif /* GDK_DISABLE_DEPRECATED */ #endif /* GDK_MULTIDEVICE_SAFE */ -void gdk_display_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); -GdkWindow * gdk_display_get_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y); -void gdk_display_warp_device (GdkDisplay *display, - GdkDevice *device, - GdkScreen *screen, - gint x, - gint y); - -#ifndef GDK_MULTIDEVICE_SAFE -GdkDisplayPointerHooks *gdk_display_set_pointer_hooks (GdkDisplay *display, - const GdkDisplayPointerHooks *new_hooks); -#endif /* GDK_MULTIDEVICE_SAFE */ - -GdkDisplayDeviceHooks *gdk_display_set_device_hooks (GdkDisplay *display, - const GdkDisplayDeviceHooks *new_hooks); - GdkDisplay *gdk_display_open_default_libgtk_only (void); gboolean gdk_display_supports_cursor_alpha (GdkDisplay *display); gboolean gdk_display_supports_cursor_color (GdkDisplay *display); guint gdk_display_get_default_cursor_size (GdkDisplay *display); void gdk_display_get_maximal_cursor_size (GdkDisplay *display, - guint *width, - guint *height); + guint *width, + guint *height); GdkWindow *gdk_display_get_default_group (GdkDisplay *display); gboolean gdk_display_supports_selection_notification (GdkDisplay *display); gboolean gdk_display_request_selection_notification (GdkDisplay *display, - GdkAtom selection); + GdkAtom selection); gboolean gdk_display_supports_clipboard_persistence (GdkDisplay *display); void gdk_display_store_clipboard (GdkDisplay *display, - GdkWindow *clipboard_window, - guint32 time_, - const GdkAtom *targets, - gint n_targets); + GdkWindow *clipboard_window, + guint32 time_, + const GdkAtom *targets, + gint n_targets); gboolean gdk_display_supports_shapes (GdkDisplay *display); gboolean gdk_display_supports_input_shapes (GdkDisplay *display); gboolean gdk_display_supports_composite (GdkDisplay *display); +void gdk_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id); GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display); +GdkAppLaunchContext *gdk_display_get_app_launch_context (GdkDisplay *display); G_END_DECLS -#endif /* __GDK_DISPLAY_H__ */ +#endif /* __GDK_DISPLAY_H__ */ diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c index ec975f26fa..79ed85aebd 100644 --- a/gdk/gdkdisplaymanager.c +++ b/gdk/gdkdisplaymanager.c @@ -21,19 +21,32 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" -#include "gdkdisplaymanager.h" - -#include "gdkscreen.h" -#include "gdkdisplay.h" +#include "gdkconfig.h" +#include "gdkdisplaymanagerprivate.h" #include "gdkinternals.h" #include "gdkmarshalers.h" #include "gdkintl.h" +#ifdef GDK_WINDOWING_X11 +#include "x11/gdkx.h" +#endif + +#ifdef GDK_WINDOWING_QUARTZ +/* We immediately include gdkquartzdisplaymanager.h here instead of + * gdkquartz.h so that we do not have to enable -xobjective-c for the + * "generic" GDK source code. + */ +#include "quartz/gdkquartzdisplaymanager.h" +#endif + +#ifdef GDK_WINDOWING_WIN32 +#include "win32/gdkwin32.h" +#endif /** * SECTION:gdkdisplaymanager @@ -58,18 +71,16 @@ enum { static void gdk_display_manager_class_init (GdkDisplayManagerClass *klass); static void gdk_display_manager_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gdk_display_manager_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static guint signals[LAST_SIGNAL] = { 0 }; -static GdkDisplay *default_display = NULL; - G_DEFINE_TYPE (GdkDisplayManager, gdk_display_manager, G_TYPE_OBJECT) static void @@ -82,32 +93,32 @@ gdk_display_manager_class_init (GdkDisplayManagerClass *klass) /** * GdkDisplayManager::display-opened: - * @display_manager: the object on which the signal is emitted + * @manager: the object on which the signal is emitted * @display: the opened display * - * The ::display_opened signal is emitted when a display is opened. + * The ::display-opened signal is emitted when a display is opened. * * Since: 2.2 */ signals[DISPLAY_OPENED] = g_signal_new (g_intern_static_string ("display-opened"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GdkDisplayManagerClass, display_opened), - NULL, NULL, - _gdk_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - GDK_TYPE_DISPLAY); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GdkDisplayManagerClass, display_opened), + NULL, NULL, + _gdk_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + GDK_TYPE_DISPLAY); g_object_class_install_property (object_class, - PROP_DEFAULT_DISPLAY, - g_param_spec_object ("default-display", - P_("Default Display"), - P_("The default display for GDK"), - GDK_TYPE_DISPLAY, - G_PARAM_READWRITE|G_PARAM_STATIC_NAME| - G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); + PROP_DEFAULT_DISPLAY, + g_param_spec_object ("default-display", + P_("Default Display"), + P_("The default display for GDK"), + GDK_TYPE_DISPLAY, + G_PARAM_READWRITE|G_PARAM_STATIC_NAME| + G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); } static void @@ -117,15 +128,15 @@ gdk_display_manager_init (GdkDisplayManager *manager) static void gdk_display_manager_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { switch (prop_id) { case PROP_DEFAULT_DISPLAY: gdk_display_manager_set_default_display (GDK_DISPLAY_MANAGER (object), - g_value_get_object (value)); + g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -135,14 +146,15 @@ gdk_display_manager_set_property (GObject *object, static void gdk_display_manager_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { switch (prop_id) { case PROP_DEFAULT_DISPLAY: - g_value_set_object (value, default_display); + g_value_set_object (value, + gdk_display_manager_get_default_display (GDK_DISPLAY_MANAGER (object))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -155,37 +167,66 @@ gdk_display_manager_get_property (GObject *object, * * Gets the singleton #GdkDisplayManager object. * - * Returns: (transfer none): The global #GdkDisplayManager singleton; gdk_parse_pargs(), - * gdk_init(), or gdk_init_check() must have been called first. + * When called for the first time, this function consults the + * GDK_BACKEND to find out which of the supported + * GDK backends to use (in case GDK has been compiled with multiple + * backends). + * + * Returns: (transfer none): The global #GdkDisplayManager singleton; + * gdk_parse_args(), gdk_init(), or gdk_init_check() must have + * been called first. * * Since: 2.2 **/ GdkDisplayManager* gdk_display_manager_get (void) { - static GdkDisplayManager *display_manager = NULL; + static GdkDisplayManager *manager = NULL; - if (!display_manager) - display_manager = g_object_new (GDK_TYPE_DISPLAY_MANAGER, NULL); + if (!manager) + { + const gchar *backend; - return display_manager; + backend = g_getenv ("GDK_BACKEND"); +#ifdef GDK_WINDOWING_X11 + if (backend == NULL || strcmp (backend, "x11") == 0) + manager = g_object_new (gdk_x11_display_manager_get_type (), NULL); + else +#endif +#ifdef GDK_WINDOWING_QUARTZ + if (backend == NULL || strcmp (backend, "quartz") == 0) + manager = g_object_new (gdk_quartz_display_manager_get_type (), NULL); + else +#endif +#ifdef GDK_WINDOWING_WIN32 + if (backend == NULL || strcmp (backend, "win32") == 0) + manager = g_object_new (gdk_win32_display_manager_get_type (), NULL); + else +#endif + if (backend != NULL) + g_error ("Unsupported GDK backend: %s", backend); + else + g_error ("No GDK backend found"); + } + + return manager; } /** * gdk_display_manager_get_default_display: - * @display_manager: a #GdkDisplayManager + * @manager: a #GdkDisplayManager * * Gets the default #GdkDisplay. * - * Returns: (transfer none): a #GdkDisplay, or %NULL if there is no default - * display. + * Returns: (transfer none): a #GdkDisplay, or %NULL + * if there is no default display. * * Since: 2.2 */ GdkDisplay * -gdk_display_manager_get_default_display (GdkDisplayManager *display_manager) +gdk_display_manager_get_default_display (GdkDisplayManager *manager) { - return default_display; + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->get_default_display (manager); } /** @@ -203,7 +244,7 @@ gdk_display_manager_get_default_display (GdkDisplayManager *display_manager) GdkDisplay * gdk_display_get_default (void) { - return default_display; + return gdk_display_manager_get_default_display (gdk_display_manager_get ()); } /** @@ -219,6 +260,10 @@ gdk_display_get_default (void) GdkScreen * gdk_screen_get_default (void) { + GdkDisplay *default_display; + + default_display = gdk_display_get_default (); + if (default_display) return gdk_display_get_default_screen (default_display); else @@ -227,7 +272,7 @@ gdk_screen_get_default (void) /** * gdk_display_manager_set_default_display: - * @display_manager: a #GdkDisplayManager + * @manager: a #GdkDisplayManager * @display: a #GdkDisplay * * Sets @display as the default display. @@ -235,30 +280,113 @@ gdk_screen_get_default (void) * Since: 2.2 **/ void -gdk_display_manager_set_default_display (GdkDisplayManager *display_manager, - GdkDisplay *display) +gdk_display_manager_set_default_display (GdkDisplayManager *manager, + GdkDisplay *display) { - default_display = display; + GDK_DISPLAY_MANAGER_GET_CLASS (manager)->set_default_display (manager, display); - _gdk_windowing_set_default_display (display); - - g_object_notify (G_OBJECT (display_manager), "default-display"); + g_object_notify (G_OBJECT (manager), "default-display"); } /** * gdk_display_manager_list_displays: - * @display_manager: a #GdkDisplayManager + * @manager: a #GdkDisplayManager * * List all currently open displays. - * - * Return value: (transfer container) (element-type GdkDisplay): a newly allocated - * #GSList of #GdkDisplay objects. Free this list with g_slist_free() when you - * are done with it. + * + * Return value: (transfer container) (element-type GdkDisplay): a newly + * allocated #GSList of #GdkDisplay objects. Free with g_slist_free() + * when you are done with it. * * Since: 2.2 **/ GSList * -gdk_display_manager_list_displays (GdkDisplayManager *display_manager) +gdk_display_manager_list_displays (GdkDisplayManager *manager) { - return g_slist_copy (_gdk_displays); + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->list_displays (manager); +} + +/** + * gdk_display_manager_open_display: + * @manager: a #GdkDisplayManager + * @name: the name of the display to open + * + * Opens a display. + * + * Return value: (transfer none): a #GdkDisplay, or %NULL + * if the display could not be opened + * + * Since: 3.0 + */ +GdkDisplay * +gdk_display_manager_open_display (GdkDisplayManager *manager, + const gchar *name) +{ + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->open_display (manager, name); +} + +/** + * gdk_atom_intern: + * @atom_name: a string. + * @only_if_exists: if %TRUE, GDK is allowed to not create a new atom, but + * just return %GDK_NONE if the requested atom doesn't already + * exists. Currently, the flag is ignored, since checking the + * existance of an atom is as expensive as creating it. + * + * Finds or creates an atom corresponding to a given string. + * + * Returns: the atom corresponding to @atom_name. + */ +GdkAtom +gdk_atom_intern (const gchar *atom_name, + gboolean only_if_exists) +{ + GdkDisplayManager *manager = gdk_display_manager_get (); + + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->atom_intern (manager, atom_name, TRUE); +} + +/** + * gdk_atom_intern_static_string: + * @atom_name: a static string + * + * Finds or creates an atom corresponding to a given string. + * + * Note that this function is identical to gdk_atom_intern() except + * that if a new #GdkAtom is created the string itself is used rather + * than a copy. This saves memory, but can only be used if the string + * will always exist. It can be used with statically + * allocated strings in the main program, but not with statically + * allocated memory in dynamically loaded modules, if you expect to + * ever unload the module again (e.g. do not use this function in + * GTK+ theme engines). + * + * Returns: the atom corresponding to @atom_name + * + * Since: 2.10 + */ +GdkAtom +gdk_atom_intern_static_string (const gchar *atom_name) +{ + GdkDisplayManager *manager = gdk_display_manager_get (); + + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->atom_intern (manager, atom_name, FALSE); +} + +/** + * gdk_atom_name: + * @atom: a #GdkAtom. + * + * Determines the string corresponding to an atom. + * + * Returns: a newly-allocated string containing the string + * corresponding to @atom. When you are done with the + * return value, you should free it using g_free(). + */ +gchar * +gdk_atom_name (GdkAtom atom) +{ + GdkDisplayManager *manager = gdk_display_manager_get (); + + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->get_atom_name (manager, atom); } diff --git a/gdk/gdkdisplaymanager.h b/gdk/gdkdisplaymanager.h index 4d5bd989a4..4c0e02cc11 100644 --- a/gdk/gdkdisplaymanager.h +++ b/gdk/gdkdisplaymanager.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -39,34 +39,18 @@ G_BEGIN_DECLS #define GDK_TYPE_DISPLAY_MANAGER (gdk_display_manager_get_type ()) #define GDK_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY_MANAGER, GdkDisplayManager)) -#define GDK_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY_MANAGER, GdkDisplayManagerClass)) #define GDK_IS_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY_MANAGER)) -#define GDK_IS_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY_MANAGER)) -#define GDK_DISPLAY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY_MANAGER, GdkDisplayManagerClass)) -typedef struct _GdkDisplayManager GdkDisplayManager; -typedef struct _GdkDisplayManagerClass GdkDisplayManagerClass; -struct _GdkDisplayManager -{ - GObject parent_instance; -}; - -struct _GdkDisplayManagerClass -{ - GObjectClass parent_class; - - void (*display_opened) (GdkDisplayManager *display_manager, - GdkDisplay *display); -}; - -GType gdk_display_manager_get_type (void) G_GNUC_CONST; +GType gdk_display_manager_get_type (void) G_GNUC_CONST; GdkDisplayManager *gdk_display_manager_get (void); -GdkDisplay * gdk_display_manager_get_default_display (GdkDisplayManager *display_manager); -void gdk_display_manager_set_default_display (GdkDisplayManager *display_manager, - GdkDisplay *display); -GSList * gdk_display_manager_list_displays (GdkDisplayManager *display_manager); +GdkDisplay * gdk_display_manager_get_default_display (GdkDisplayManager *manager); +void gdk_display_manager_set_default_display (GdkDisplayManager *manager, + GdkDisplay *display); +GSList * gdk_display_manager_list_displays (GdkDisplayManager *manager); +GdkDisplay * gdk_display_manager_open_display (GdkDisplayManager *manager, + const gchar *name); G_END_DECLS diff --git a/gdk/gdkdisplaymanagerprivate.h b/gdk/gdkdisplaymanagerprivate.h new file mode 100644 index 0000000000..6c1df3e11e --- /dev/null +++ b/gdk/gdkdisplaymanagerprivate.h @@ -0,0 +1,71 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010, 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_DISPLAY_MANAGER_PRIVATE_H__ +#define __GDK_DISPLAY_MANAGER_PRIVATE_H__ + +#include "gdkdisplaymanager.h" + +G_BEGIN_DECLS + +#define GDK_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY_MANAGER, GdkDisplayManagerClass)) +#define GDK_IS_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY_MANAGER)) +#define GDK_DISPLAY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY_MANAGER, GdkDisplayManagerClass)) + +typedef struct _GdkDisplayManagerClass GdkDisplayManagerClass; + +struct _GdkDisplayManager +{ + GObject parent_instance; +}; + +struct _GdkDisplayManagerClass +{ + GObjectClass parent_class; + + GSList * (*list_displays) (GdkDisplayManager *manager); + GdkDisplay * (*get_default_display) (GdkDisplayManager *manager); + void (*set_default_display) (GdkDisplayManager *manager, + GdkDisplay *display); + GdkDisplay * (*open_display) (GdkDisplayManager *manager, + const gchar *name); + + /* FIXME the following should really be frontend-only, not vfuncs */ + GdkAtom (*atom_intern) (GdkDisplayManager *manager, + const gchar *atom_name, + gboolean copy_name); + gchar * (*get_atom_name) (GdkDisplayManager *manager, + GdkAtom atom); + guint (*lookup_keyval) (GdkDisplayManager *manager, + const gchar *name); + gchar * (*get_keyval_name) (GdkDisplayManager *manager, + guint keyval); + void (*keyval_convert_case) (GdkDisplayManager *manager, + guint keyval, + guint *lower, + guint *upper); + + /* signals */ + void (*display_opened) (GdkDisplayManager *manager, + GdkDisplay *display); +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h new file mode 100644 index 0000000000..fc82f4f093 --- /dev/null +++ b/gdk/gdkdisplayprivate.h @@ -0,0 +1,299 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_DISPLAY_PRIVATE_H__ +#define __GDK_DISPLAY_PRIVATE_H__ + +#include "gdkdisplay.h" +#include "gdkwindow.h" +#include "gdkcursor.h" + +G_BEGIN_DECLS + +#define GDK_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass)) +#define GDK_IS_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY)) +#define GDK_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass)) + + +typedef struct _GdkDisplayClass GdkDisplayClass; + +/* Tracks information about the keyboard grab on this display */ +typedef struct +{ + GdkWindow *window; + GdkWindow *native_window; + gulong serial; + gboolean owner_events; + guint32 time; +} GdkKeyboardGrabInfo; + +/* Tracks information about the pointer grab on this display */ +typedef struct +{ + GdkWindow *window; + GdkWindow *native_window; + gulong serial_start; + gulong serial_end; /* exclusive, i.e. not active on serial_end */ + gboolean owner_events; + guint event_mask; + gboolean implicit; + guint32 time; + GdkGrabOwnership ownership; + + guint activated : 1; + guint implicit_ungrab : 1; +} GdkDeviceGrabInfo; + +/* Tracks information about which window and position the pointer last was in. + * This is useful when we need to synthesize events later. + * Note that we track toplevel_under_pointer using enter/leave events, + * so in the case of a grab, either with owner_events==FALSE or with the + * pointer in no clients window the x/y coordinates may actually be outside + * the window. + */ +typedef struct +{ + GdkWindow *toplevel_under_pointer; /* toplevel window containing the pointer, */ + /* tracked via native events */ + GdkWindow *window_under_pointer; /* window that last got a normal enter event */ + gdouble toplevel_x, toplevel_y; + guint32 state; + guint32 button; +} GdkPointerWindowInfo; + +typedef struct +{ + guint32 button_click_time[2]; /* last 2 button click times */ + GdkWindow *button_window[2]; /* last 2 windows to receive button presses */ + gint button_number[2]; /* last 2 buttons to be pressed */ + gint button_x[2]; /* last 2 button click positions */ + gint button_y[2]; +} GdkMultipleClickInfo; + +struct _GdkDisplay +{ + GObject parent_instance; + + GList *queued_events; + GList *queued_tail; + + /* Information for determining if the latest button click + * is part of a double-click or triple-click + */ + GHashTable *multiple_click_info; + guint double_click_time; /* Maximum time between clicks in msecs */ + GdkDevice *core_pointer; /* Core pointer device */ + + guint closed : 1; /* Whether this display has been closed */ + guint ignore_core_events : 1; /* Don't send core motion and button event */ + + guint double_click_distance; /* Maximum distance between clicks in pixels */ + + GHashTable *device_grabs; + GHashTable *motion_hint_info; + + GHashTable *pointers_info; /* GdkPointerWindowInfo for each device */ + guint32 last_event_time; /* Last reported event time from server */ + + GdkDeviceManager *device_manager; +}; + +struct _GdkDisplayClass +{ + GObjectClass parent_class; + + GType window_type; /* type for native windows for this display, set in class_init */ + + G_CONST_RETURN gchar * (*get_name) (GdkDisplay *display); + gint (*get_n_screens) (GdkDisplay *display); + GdkScreen * (*get_screen) (GdkDisplay *display, + gint screen_num); + GdkScreen * (*get_default_screen) (GdkDisplay *display); + void (*beep) (GdkDisplay *display); + void (*sync) (GdkDisplay *display); + void (*flush) (GdkDisplay *display); + gboolean (*has_pending) (GdkDisplay *display); + void (*queue_events) (GdkDisplay *display); + GdkWindow * (*get_default_group) (GdkDisplay *display); + gboolean (*supports_selection_notification) (GdkDisplay *display); + gboolean (*request_selection_notification) (GdkDisplay *display, + GdkAtom selection); + gboolean (*supports_shapes) (GdkDisplay *display); + gboolean (*supports_input_shapes) (GdkDisplay *display); + gboolean (*supports_composite) (GdkDisplay *display); + gboolean (*supports_cursor_alpha) (GdkDisplay *display); + gboolean (*supports_cursor_color) (GdkDisplay *display); + + gboolean (*supports_clipboard_persistence) (GdkDisplay *display); + void (*store_clipboard) (GdkDisplay *display, + GdkWindow *clipboard_window, + guint32 time_, + const GdkAtom *targets, + gint n_targets); + + void (*get_default_cursor_size) (GdkDisplay *display, + guint *width, + guint *height); + void (*get_maximal_cursor_size) (GdkDisplay *display, + guint *width, + guint *height); + GdkCursor * (*get_cursor_for_type) (GdkDisplay *display, + GdkCursorType type); + GdkCursor * (*get_cursor_for_name) (GdkDisplay *display, + const gchar *name); + GdkCursor * (*get_cursor_for_pixbuf) (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y); + + GList * (*list_devices) (GdkDisplay *display); + gboolean (*send_client_message) (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid); + void (*add_client_message_filter) (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data); + GdkAppLaunchContext * (*get_app_launch_context) (GdkDisplay *display); + GdkNativeWindow (*get_drag_protocol) (GdkDisplay *display, + GdkNativeWindow winid, + GdkDragProtocol *protocol, + guint *version); + + void (*before_process_all_updates) (GdkDisplay *display); + void (*after_process_all_updates) (GdkDisplay *display); + + gulong (*get_next_serial) (GdkDisplay *display); + + void (*notify_startup_complete) (GdkDisplay *display, + const gchar *startup_id); + void (*event_data_copy) (GdkDisplay *display, + const GdkEvent *event, + GdkEvent *new_event); + void (*event_data_free) (GdkDisplay *display, + GdkEvent *event); + void (*create_window_impl) (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask); + + GdkKeymap * (*get_keymap) (GdkDisplay *display); + void (*push_error_trap) (GdkDisplay *display); + gint (*pop_error_trap) (GdkDisplay *display, + gboolean ignore); + + GdkWindow * (*get_selection_owner) (GdkDisplay *display, + GdkAtom selection); + gboolean (*set_selection_owner) (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event); + void (*send_selection_notify) (GdkDisplay *dispay, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time); + gint (*get_selection_property) (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *type, + gint *format); + void (*convert_selection) (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time); + + gint (*text_property_to_utf8_list) (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); + gchar * (*utf8_to_string_target) (GdkDisplay *display, + const gchar *text); + + /* Signals */ + void (*closed) (GdkDisplay *display, + gboolean is_error); +}; + + +typedef void (* GdkDisplayPointerInfoForeach) (GdkDisplay *display, + GdkDevice *device, + GdkPointerWindowInfo *device_info, + gpointer user_data); + +void _gdk_display_device_grab_update (GdkDisplay *display, + GdkDevice *device, + GdkDevice *source_device, + gulong current_serial); +GdkDeviceGrabInfo * _gdk_display_get_last_device_grab (GdkDisplay *display, + GdkDevice *device); +GdkDeviceGrabInfo * _gdk_display_add_device_grab (GdkDisplay *display, + GdkDevice *device, + GdkWindow *window, + GdkWindow *native_window, + GdkGrabOwnership grab_ownership, + gboolean owner_events, + GdkEventMask event_mask, + gulong serial_start, + guint32 time, + gboolean implicit); +GdkDeviceGrabInfo * _gdk_display_has_device_grab (GdkDisplay *display, + GdkDevice *device, + gulong serial); +gboolean _gdk_display_end_device_grab (GdkDisplay *display, + GdkDevice *device, + gulong serial, + GdkWindow *if_child, + gboolean implicit); +gboolean _gdk_display_check_grab_ownership (GdkDisplay *display, + GdkDevice *device, + gulong serial); +void _gdk_display_enable_motion_hints (GdkDisplay *display, + GdkDevice *device); +GdkPointerWindowInfo * _gdk_display_get_pointer_info (GdkDisplay *display, + GdkDevice *device); +void _gdk_display_pointer_info_foreach (GdkDisplay *display, + GdkDisplayPointerInfoForeach func, + gpointer user_data); +gulong _gdk_display_get_next_serial (GdkDisplay *display); +void _gdk_display_event_data_copy (GdkDisplay *display, + const GdkEvent *event, + GdkEvent *new_event); +void _gdk_display_event_data_free (GdkDisplay *display, + GdkEvent *event); +void _gdk_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask); +GdkWindow * _gdk_display_create_window (GdkDisplay *display); + +G_END_DECLS + +#endif /* __GDK_DISPLAY_PRIVATE_H__ */ diff --git a/gdk/gdkdnd.c b/gdk/gdkdnd.c index cccae0968a..bb2e6a854e 100644 --- a/gdk/gdkdnd.c +++ b/gdk/gdkdnd.c @@ -26,8 +26,7 @@ #include "config.h" -#include "gdkdnd.h" - +#include "gdkdndprivate.h" #include "gdkdisplay.h" #include "gdkwindow.h" @@ -48,53 +47,6 @@ * the GTK+ documentation for more information. */ -/** - * gdk_drag_find_window: - * @context: a #GdkDragContext. - * @drag_window: a window which may be at the pointer position, but - * should be ignored, since it is put up by the drag source as an icon. - * @x_root: the x position of the pointer in root coordinates. - * @y_root: the y position of the pointer in root coordinates. - * @dest_window: (out): location to store the destination window in. - * @protocol: (out): location to store the DND protocol in. - * - * Finds the destination window and DND protocol to use at the - * given pointer position. - * - * This function is called by the drag source to obtain the - * @dest_window and @protocol parameters for gdk_drag_motion(). - **/ -void -gdk_drag_find_window (GdkDragContext *context, - GdkWindow *drag_window, - gint x_root, - gint y_root, - GdkWindow **dest_window, - GdkDragProtocol *protocol) -{ - gdk_drag_find_window_for_screen (context, drag_window, - gdk_window_get_screen (context->source_window), - x_root, y_root, dest_window, protocol); -} - -/** - * gdk_drag_get_protocol: - * @xid: the windowing system id of the destination window. - * @protocol: location where the supported DND protocol is returned. - * - * Finds out the DND protocol supported by a window. - * - * Return value: the windowing system specific id for the window where - * the drop should happen. This may be @xid or the id of a proxy - * window, or zero if @xid doesn't support Drag and Drop. - **/ -GdkNativeWindow -gdk_drag_get_protocol (GdkNativeWindow xid, - GdkDragProtocol *protocol) -{ - return gdk_drag_get_protocol_for_display (gdk_display_get_default (), xid, protocol); -} - /** * gdk_drag_context_list_targets: * @context: a #GdkDragContext @@ -185,3 +137,321 @@ gdk_drag_context_get_source_window (GdkDragContext *context) return context->source_window; } + +/** + * gdk_drag_context_get_dest_window: + * @context: a #GdkDragContext + * + * Returns the destination windw for the DND operation. + * + * Return value: (transfer none): a #GdkWindow + * + * Since: 3.0 + **/ +GdkWindow * +gdk_drag_context_get_dest_window (GdkDragContext *context) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); + + return context->dest_window; +} + +/** + * gdk_drag_context_get_protocol: + * @context: a #GdkDragContext + * + * Returns the drag protocol thats used by this context. + * + * Returns: the drag protocol + * + * Since: 3.0 + */ +GdkDragProtocol +gdk_drag_context_get_protocol (GdkDragContext *context) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), GDK_DRAG_PROTO_NONE); + + return context->protocol; +} + +/** + * gdk_drag_context_set_device: + * @context: a #GdkDragContext + * @device: a #GdkDevice + * + * Associates a #GdkDevice to @context, so all Drag and Drop events + * for @context are emitted as if they came from this device. + */ +void +gdk_drag_context_set_device (GdkDragContext *context, + GdkDevice *device) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + g_return_if_fail (GDK_IS_DEVICE (device)); + + if (context->device) + g_object_unref (context->device); + + context->device = device; + + if (context->device) + g_object_ref (context->device); +} + +/** + * gdk_drag_context_get_device: + * @context: a #GdkDragContext + * + * Returns the #GdkDevice associated to the drag context. + * + * Returns: (transfer none): The #GdkDevice associated to @context. + **/ +GdkDevice * +gdk_drag_context_get_device (GdkDragContext *context) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); + + return context->device; +} + +G_DEFINE_TYPE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT) + +static void +gdk_drag_context_init (GdkDragContext *context) +{ +} + +static void +gdk_drag_context_finalize (GObject *object) +{ + GdkDragContext *context = GDK_DRAG_CONTEXT (object); + + g_list_free (context->targets); + + if (context->source_window) + g_object_unref (context->source_window); + + if (context->dest_window) + g_object_unref (context->dest_window); + + G_OBJECT_CLASS (gdk_drag_context_parent_class)->finalize (object); +} + +static void +gdk_drag_context_class_init (GdkDragContextClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = gdk_drag_context_finalize; +} + +/** + * gdk_drag_find_window_for_screen: + * @context: a #GdkDragContext + * @drag_window: a window which may be at the pointer position, but + * should be ignored, since it is put up by the drag source as an icon + * @screen: the screen where the destination window is sought + * @x_root: the x position of the pointer in root coordinates + * @y_root: the y position of the pointer in root coordinates + * @dest_window: (out): location to store the destination window in + * @protocol: (out): location to store the DND protocol in + * + * Finds the destination window and DND protocol to use at the + * given pointer position. + * + * This function is called by the drag source to obtain the + * @dest_window and @protocol parameters for gdk_drag_motion(). + * + * Since: 2.2 + */ +void +gdk_drag_find_window_for_screen (GdkDragContext *context, + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkWindow **dest_window, + GdkDragProtocol *protocol) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + *dest_window = GDK_DRAG_CONTEXT_GET_CLASS (context) + ->find_window (context, drag_window, screen, x_root, y_root, protocol); +} + +/** + * gdk_drag_status: + * @context: a #GdkDragContext + * @action: the selected action which will be taken when a drop happens, + * or 0 to indicate that a drop will not be accepted + * @time_: the timestamp for this operation + * + * Selects one of the actions offered by the drag source. + * + * This function is called by the drag destination in response to + * gdk_drag_motion() called by the drag source. + */ +void +gdk_drag_status (GdkDragContext *context, + GdkDragAction action, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + GDK_DRAG_CONTEXT_GET_CLASS (context)->drag_status (context, action, time_); +} + +/** + * gdk_drag_motion: + * @context: a #GdkDragContext + * @dest_window: the new destination window, obtained by + * gdk_drag_find_window() + * @protocol: the DND protocol in use, obtained by gdk_drag_find_window() + * @x_root: the x position of the pointer in root coordinates + * @y_root: the y position of the pointer in root coordinates + * @suggested_action: the suggested action + * @possible_actions: the possible actions + * @time_: the timestamp for this operation + * + * Updates the drag context when the pointer moves or the + * set of actions changes. + * + * This function is called by the drag source. + */ +gboolean +gdk_drag_motion (GdkDragContext *context, + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint x_root, + gint y_root, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time_) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), FALSE); + + return GDK_DRAG_CONTEXT_GET_CLASS (context) + ->drag_motion (context, + dest_window, + protocol, + x_root, + y_root, + suggested_action, + possible_actions, + time_); +} + +/** + * gdk_drag_abort: + * @context: a #GdkDragContext + * @time_: the timestamp for this operation + * + * Aborts a drag without dropping. + * + * This function is called by the drag source. + */ +void +gdk_drag_abort (GdkDragContext *context, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + GDK_DRAG_CONTEXT_GET_CLASS (context)->drag_abort (context, time_); +} + +/** + * gdk_drag_drop: + * @context: a #GdkDragContext + * @time_: the timestamp for this operation + * + * Drops on the current destination. + * + * This function is called by the drag source. + */ +void +gdk_drag_drop (GdkDragContext *context, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + GDK_DRAG_CONTEXT_GET_CLASS (context)->drag_drop (context, time_); +} + +/** + * gdk_drop_reply: + * @context: a #GdkDragContext + * @accepted: %TRUE if the drop is accepted + * @time_: the timestamp for this operation + * + * Accepts or rejects a drop. + * + * This function is called by the drag destination in response + * to a drop initiated by the drag source. + */ +void +gdk_drop_reply (GdkDragContext *context, + gboolean accepted, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_reply (context, accepted, time_); +} + +/** + * gdk_drop_finish: + * @context: a #GtkDragContext + * @success: %TRUE if the data was successfully received + * @time_: the timestamp for this operation + * + * Ends the drag operation after a drop. + * + * This function is called by the drag destination. + */ +void +gdk_drop_finish (GdkDragContext *context, + gboolean success, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); + + GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_finish (context, success, time_); +} + +/** + * gdk_drag_drop_succeeded: + * @context: a #GdkDragContext + * + * Returns whether the dropped data has been successfully + * transferred. This function is intended to be used while + * handling a %GDK_DROP_FINISHED event, its return value is + * meaningless at other times. + * + * Return value: %TRUE if the drop was successful. + * + * Since: 2.6 + **/ +gboolean +gdk_drag_drop_succeeded (GdkDragContext *context) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), FALSE); + + return GDK_DRAG_CONTEXT_GET_CLASS (context)->drop_status (context); +} + +/** + * gdk_drag_get_selection: + * @context: a #GdkDragContext. + * + * Returns the selection atom for the current source window. + * + * Return value: the selection atom, or %GDK_NONE + */ +GdkAtom +gdk_drag_get_selection (GdkDragContext *context) +{ + g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), GDK_NONE); + g_return_val_if_fail (context->source_window != NULL, GDK_NONE); + + return GDK_DRAG_CONTEXT_GET_CLASS (context)->get_selection (context); +} diff --git a/gdk/gdkdnd.h b/gdk/gdkdnd.h index b257d1e8f0..06c5f31ccf 100644 --- a/gdk/gdkdnd.h +++ b/gdk/gdkdnd.h @@ -36,7 +36,9 @@ G_BEGIN_DECLS -typedef struct _GdkDragContext GdkDragContext; +#define GDK_TYPE_DRAG_CONTEXT (gdk_drag_context_get_type ()) +#define GDK_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAG_CONTEXT, GdkDragContext)) +#define GDK_IS_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAG_CONTEXT)) /** * GdkDragAction: @@ -81,60 +83,15 @@ typedef enum { GDK_DRAG_PROTO_MOTIF, GDK_DRAG_PROTO_XDND, - GDK_DRAG_PROTO_ROOTWIN, /* A root window with nobody claiming - * drags */ - GDK_DRAG_PROTO_NONE, /* Not a valid drag window */ - GDK_DRAG_PROTO_WIN32_DROPFILES, /* The simple WM_DROPFILES dnd */ - GDK_DRAG_PROTO_OLE2, /* The complex OLE2 dnd (not implemented) */ - GDK_DRAG_PROTO_LOCAL /* Intra-app */ + GDK_DRAG_PROTO_ROOTWIN, + GDK_DRAG_PROTO_NONE, + GDK_DRAG_PROTO_WIN32_DROPFILES, + GDK_DRAG_PROTO_OLE2, + GDK_DRAG_PROTO_LOCAL } GdkDragProtocol; -/* Object that holds information about a drag in progress. - * this is used on both source and destination sides. - */ -typedef struct _GdkDragContextClass GdkDragContextClass; - -#define GDK_TYPE_DRAG_CONTEXT (gdk_drag_context_get_type ()) -#define GDK_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAG_CONTEXT, GdkDragContext)) -#define GDK_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass)) -#define GDK_IS_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAG_CONTEXT)) -#define GDK_IS_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAG_CONTEXT)) -#define GDK_DRAG_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass)) - -struct _GdkDragContext { - GObject parent_instance; - - /*< public >*/ - - GdkDragProtocol GSEAL (protocol); - - gboolean GSEAL (is_source); - - GdkWindow *GSEAL (source_window); - GdkWindow *GSEAL (dest_window); - - GList *GSEAL (targets); - GdkDragAction GSEAL (actions); - GdkDragAction GSEAL (suggested_action); - GdkDragAction GSEAL (action); - - guint32 GSEAL (start_time); - - /*< private >*/ - - gpointer GSEAL (windowing_data); -}; - -struct _GdkDragContextClass { - GObjectClass parent_class; - -}; - -/* Drag and Drop */ - -GType gdk_drag_context_get_type (void) G_GNUC_CONST; -GdkDragContext * gdk_drag_context_new (void); +GType gdk_drag_context_get_type (void) G_GNUC_CONST; void gdk_drag_context_set_device (GdkDragContext *context, GdkDevice *device); @@ -146,61 +103,55 @@ GdkDragAction gdk_drag_context_get_suggested_action (GdkDragContext *context) GdkDragAction gdk_drag_context_get_selected_action (GdkDragContext *context); GdkWindow *gdk_drag_context_get_source_window (GdkDragContext *context); +GdkWindow *gdk_drag_context_get_dest_window (GdkDragContext *context); +GdkDragProtocol gdk_drag_context_get_protocol (GdkDragContext *context); /* Destination side */ void gdk_drag_status (GdkDragContext *context, - GdkDragAction action, - guint32 time_); + GdkDragAction action, + guint32 time_); void gdk_drop_reply (GdkDragContext *context, - gboolean ok, - guint32 time_); + gboolean accepted, + guint32 time_); void gdk_drop_finish (GdkDragContext *context, - gboolean success, - guint32 time_); + gboolean success, + guint32 time_); GdkAtom gdk_drag_get_selection (GdkDragContext *context); /* Source side */ -GdkDragContext * gdk_drag_begin (GdkWindow *window, - GList *targets); +GdkDragContext * gdk_drag_begin (GdkWindow *window, + GList *targets); + +GdkDragContext * gdk_drag_begin_for_device (GdkWindow *window, + GdkDevice *device, + GList *targets); GdkNativeWindow gdk_drag_get_protocol_for_display (GdkDisplay *display, - GdkNativeWindow xid, - GdkDragProtocol *protocol); + GdkNativeWindow xid, + GdkDragProtocol *protocol); void gdk_drag_find_window_for_screen (GdkDragContext *context, - GdkWindow *drag_window, - GdkScreen *screen, - gint x_root, - gint y_root, - GdkWindow **dest_window, - GdkDragProtocol *protocol); - -#ifndef GDK_MULTIHEAD_SAFE -GdkNativeWindow gdk_drag_get_protocol (GdkNativeWindow xid, - GdkDragProtocol *protocol); - -void gdk_drag_find_window (GdkDragContext *context, - GdkWindow *drag_window, - gint x_root, - gint y_root, - GdkWindow **dest_window, - GdkDragProtocol *protocol); -#endif /* GDK_MULTIHEAD_SAFE */ + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkWindow **dest_window, + GdkDragProtocol *protocol); gboolean gdk_drag_motion (GdkDragContext *context, - GdkWindow *dest_window, - GdkDragProtocol protocol, - gint x_root, - gint y_root, - GdkDragAction suggested_action, - GdkDragAction possible_actions, - guint32 time_); + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint x_root, + gint y_root, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time_); void gdk_drag_drop (GdkDragContext *context, - guint32 time_); + guint32 time_); void gdk_drag_abort (GdkDragContext *context, - guint32 time_); + guint32 time_); gboolean gdk_drag_drop_succeeded (GdkDragContext *context); G_END_DECLS diff --git a/gdk/gdkdndprivate.h b/gdk/gdkdndprivate.h new file mode 100644 index 0000000000..f1124304a6 --- /dev/null +++ b/gdk/gdkdndprivate.h @@ -0,0 +1,91 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010, 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_DND_PRIVATE_H__ +#define __GDK_DND_PRIVATE_H__ + +#include "gdkdnd.h" + +G_BEGIN_DECLS + + +#define GDK_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass)) +#define GDK_IS_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAG_CONTEXT)) +#define GDK_DRAG_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAG_CONTEXT, GdkDragContextClass)) + +typedef struct _GdkDragContextClass GdkDragContextClass; + + +struct _GdkDragContextClass { + GObjectClass parent_class; + + GdkWindow * (*find_window) (GdkDragContext *context, + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkDragProtocol *protocol); + GdkAtom (*get_selection) (GdkDragContext *context); + gboolean (*drag_motion) (GdkDragContext *context, + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint root_x, + gint root_y, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time_); + void (*drag_status) (GdkDragContext *context, + GdkDragAction action, + guint32 time_); + void (*drag_abort) (GdkDragContext *context, + guint32 time_); + void (*drag_drop) (GdkDragContext *context, + guint32 time_); + void (*drop_reply) (GdkDragContext *context, + gboolean accept, + guint32 time_); + void (*drop_finish) (GdkDragContext *context, + gboolean success, + guint32 time_); + gboolean (*drop_status) (GdkDragContext *context); +}; + +struct _GdkDragContext { + GObject parent_instance; + + /*< private >*/ + GdkDragProtocol protocol; + + gboolean is_source; + GdkWindow *source_window; + GdkWindow *dest_window; + + GList *targets; + GdkDragAction actions; + GdkDragAction suggested_action; + GdkDragAction action; + + guint32 start_time; + + GdkDevice *device; +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 438beb8a1f..1878799fea 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -27,6 +27,7 @@ #include "config.h" #include "gdkinternals.h" +#include "gdkdisplayprivate.h" #include #include @@ -276,6 +277,45 @@ gdk_event_handler_set (GdkEventFunc func, _gdk_event_notify = notify; } +/** + * gdk_events_pending: + * + * Checks if any events are ready to be processed for any display. + * + * Return value: %TRUE if any events are pending. + */ +gboolean +gdk_events_pending (void) +{ + GSList *list, *l; + gboolean pending; + + pending = FALSE; + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = list; l; l = l->next) + { + if (_gdk_event_queue_find_first (l->data)) + { + pending = TRUE; + goto out; + } + } + + for (l = list; l; l = l->next) + { + if (gdk_display_has_pending (l->data)) + { + pending = TRUE; + goto out; + } + } + + out: + g_slist_free (list); + + return pending; +} + /** * gdk_event_get: * @@ -289,16 +329,21 @@ gdk_event_handler_set (GdkEventFunc func, GdkEvent* gdk_event_get (void) { - GSList *tmp_list; + GSList *list, *l; + GdkEvent *event; - for (tmp_list = _gdk_displays; tmp_list; tmp_list = tmp_list->next) + event = NULL; + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = list; l; l = l->next) { - GdkEvent *event = gdk_display_get_event (tmp_list->data); + event = gdk_display_get_event (l->data); if (event) - return event; + break; } - return NULL; + g_slist_free (list); + + return event; } /** @@ -314,16 +359,21 @@ gdk_event_get (void) GdkEvent* gdk_event_peek (void) { - GSList *tmp_list; + GSList *list, *l; + GdkEvent *event; - for (tmp_list = _gdk_displays; tmp_list; tmp_list = tmp_list->next) + event = NULL; + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = list; l; l = l->next) { - GdkEvent *event = gdk_display_peek_event (tmp_list->data); + event = gdk_display_peek_event (l->data); if (event) - return event; + break; } - return NULL; + g_slist_free (list); + + return event; } /** @@ -521,8 +571,8 @@ gdk_event_copy (const GdkEvent *event) } if (gdk_event_is_allocated (event)) - _gdk_windowing_event_data_copy (event, new_event); - + _gdk_display_event_data_copy (gdk_display_get_default (), event, new_event); + return new_event; } @@ -589,7 +639,7 @@ gdk_event_free (GdkEvent *event) break; } - _gdk_windowing_event_data_free (event); + _gdk_display_event_data_free (gdk_display_get_default (), event); g_hash_table_remove (event_hash, event); g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event); @@ -706,8 +756,6 @@ gdk_event_get_state (const GdkEvent *event, *state = event->crossing.state; return TRUE; case GDK_PROPERTY_NOTIFY: - *state = event->property.state; - return TRUE; case GDK_VISIBILITY_NOTIFY: case GDK_CLIENT_EVENT: case GDK_CONFIGURE: @@ -1076,6 +1124,66 @@ gdk_event_get_device (const GdkEvent *event) } } +/** + * gdk_event_set_source_device: + * @event: a #GdkEvent + * @device: a #GdkDevice + * + * Sets the slave device for @event to @device. The event + * must have been allocated by GTK+, for instance, by + * gdk_event_copy(). + * + * Since: 3.0 + **/ +void +gdk_event_set_source_device (GdkEvent *event, + GdkDevice *device) +{ + GdkEventPrivate *private; + + g_return_if_fail (gdk_event_is_allocated (event)); + g_return_if_fail (GDK_IS_DEVICE (device)); + + private = (GdkEventPrivate *) event; + + private->source_device = device; +} + +/** + * gdk_event_get_source_device: + * @event: a #GdkEvent + * + * This function returns the hardware (slave) #GdkDevice that has triggered the event, + * falling back to the virtual (master) device (as in gdk_event_get_device()) if the + * event wasn't caused by interaction with a hardware device. This may happen for + * example in synthesized crossing events after a #GdkWindow updates its geometry or + * a grab is acquired/released. + * + * If the event does not contain device field, this function will return %NULL. + * + * Returns: a #GdkDevice, or %NULL. + * + * Since: 3.0 + **/ +GdkDevice * +gdk_event_get_source_device (const GdkEvent *event) +{ + GdkEventPrivate *private; + + g_return_val_if_fail (event != NULL, NULL); + + if (!gdk_event_is_allocated (event)) + return NULL; + + private = (GdkEventPrivate *) event; + + if (private->source_device) + return private->source_device; + + /* Fallback to event device */ + return gdk_event_get_device (event); +} + /** * gdk_event_request_motions: * @event: a valid #GdkEvent diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index fcefc6c1c8..258be496a1 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -100,7 +100,7 @@ typedef union _GdkEvent GdkEvent; /** * GdkEventFunc: * @event: the #GdkEvent to process. - * @data: user data set when the event handler was installed with + * @data: (closure): user data set when the event handler was installed with * gdk_event_handler_set(). * * Specifies the type of function passed to gdk_event_handler_set() to @@ -1089,6 +1089,9 @@ gboolean gdk_event_get_axis (const GdkEvent *event, void gdk_event_set_device (GdkEvent *event, GdkDevice *device); GdkDevice* gdk_event_get_device (const GdkEvent *event); +void gdk_event_set_source_device (GdkEvent *event, + GdkDevice *device); +GdkDevice* gdk_event_get_source_device (const GdkEvent *event); void gdk_event_request_motions (const GdkEventMotion *event); gboolean gdk_events_get_distance (GdkEvent *event1, diff --git a/gdk/gdkglobals.c b/gdk/gdkglobals.c index 5413886694..085568fbca 100644 --- a/gdk/gdkglobals.c +++ b/gdk/gdkglobals.c @@ -35,9 +35,7 @@ guint _gdk_debug_flags = 0; GList *_gdk_default_filters = NULL; gchar *_gdk_display_name = NULL; -gint _gdk_screen_number = -1; gchar *_gdk_display_arg_name = NULL; gboolean _gdk_native_windows = FALSE; -gboolean _gdk_enable_multidevice = FALSE; +gboolean _gdk_disable_multidevice = FALSE; -GSList *_gdk_displays = NULL; diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index a0063cdc97..e7baa04a68 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -30,10 +30,9 @@ #define __GDK_INTERNALS_H__ #include -#include -#include -#include -#include +#include "gdkwindowimpl.h" +#include "gdkdisplay.h" +#include "gdkprivate.h" G_BEGIN_DECLS @@ -44,8 +43,8 @@ G_BEGIN_DECLS /* Debugging support */ typedef struct _GdkColorInfo GdkColorInfo; -typedef struct _GdkEventFilter GdkEventFilter; -typedef struct _GdkClientFilter GdkClientFilter; +typedef struct _GdkEventFilter GdkEventFilter; +typedef struct _GdkClientFilter GdkClientFilter; typedef enum { GDK_COLOR_WRITEABLE = 1 << 0 @@ -80,26 +79,26 @@ typedef enum { GDK_DEBUG_DND = 1 << 2, GDK_DEBUG_XIM = 1 << 3, GDK_DEBUG_NOGRABS = 1 << 4, - GDK_DEBUG_COLORMAP = 1 << 5, - GDK_DEBUG_INPUT = 1 << 6, - GDK_DEBUG_CURSOR = 1 << 7, - GDK_DEBUG_MULTIHEAD = 1 << 8, - GDK_DEBUG_XINERAMA = 1 << 9, - GDK_DEBUG_DRAW = 1 <<10, + GDK_DEBUG_COLORMAP = 1 << 5, + GDK_DEBUG_INPUT = 1 << 6, + GDK_DEBUG_CURSOR = 1 << 7, + GDK_DEBUG_MULTIHEAD = 1 << 8, + GDK_DEBUG_XINERAMA = 1 << 9, + GDK_DEBUG_DRAW = 1 <<10, GDK_DEBUG_EVENTLOOP = 1 <<11 } GdkDebugFlag; extern GList *_gdk_default_filters; -extern GdkWindow *_gdk_parent_root; +extern GdkWindow *_gdk_parent_root; extern guint _gdk_debug_flags; extern gboolean _gdk_native_windows; #ifdef G_ENABLE_DEBUG -#define GDK_NOTE(type,action) G_STMT_START { \ - if (_gdk_debug_flags & GDK_DEBUG_##type) \ - { action; }; } G_STMT_END +#define GDK_NOTE(type,action) G_STMT_START { \ + if (_gdk_debug_flags & GDK_DEBUG_##type) \ + { action; }; } G_STMT_END #else /* !G_ENABLE_DEBUG */ @@ -156,33 +155,11 @@ struct _GdkEventPrivate GdkScreen *screen; gpointer windowing_data; GdkDevice *device; + GdkDevice *source_device; }; -/* Tracks information about the pointer grab on this display */ -typedef struct -{ - GdkWindow *window; - GdkWindow *native_window; - gulong serial_start; - gulong serial_end; /* exclusive, i.e. not active on serial_end */ - gboolean owner_events; - guint event_mask; - gboolean implicit; - guint32 time; - GdkGrabOwnership ownership; - - guint activated : 1; - guint implicit_ungrab : 1; -} GdkDeviceGrabInfo; - -typedef struct _GdkInputWindow GdkInputWindow; typedef struct _GdkWindowPaint GdkWindowPaint; -typedef void (* GdkDisplayPointerInfoForeach) (GdkDisplay *display, - GdkDevice *device, - GdkPointerWindowInfo *device_info, - gpointer user_data); - struct _GdkWindow { GObject parent_instance; @@ -252,7 +229,6 @@ struct _GdkWindow guint num_offscreen_children; GdkWindowPaint *implicit_paint; - GdkInputWindow *input_window; /* only set for impl windows */ GList *outstanding_moves; @@ -263,28 +239,33 @@ struct _GdkWindow GList *devices_inside; GHashTable *device_events; + + GHashTable *source_event_masks; + gulong device_added_handler_id; + gulong device_changed_handler_id; }; #define GDK_WINDOW_TYPE(d) (((GDK_WINDOW (d)))->window_type) #define GDK_WINDOW_DESTROYED(d) (GDK_WINDOW (d)->destroyed) -extern GSList *_gdk_displays; extern gchar *_gdk_display_name; extern gint _gdk_screen_number; extern gchar *_gdk_display_arg_name; -extern gboolean _gdk_enable_multidevice; +extern gboolean _gdk_disable_multidevice; -void _gdk_events_queue (GdkDisplay *display); GdkEvent* _gdk_event_unqueue (GdkDisplay *display); +void _gdk_event_filter_unref (GdkWindow *window, + GdkEventFilter *filter); + void _gdk_event_emit (GdkEvent *event); GList* _gdk_event_queue_find_first (GdkDisplay *display); void _gdk_event_queue_remove_link (GdkDisplay *display, - GList *node); + GList *node); GList* _gdk_event_queue_prepend (GdkDisplay *display, - GdkEvent *event); + GdkEvent *event); GList* _gdk_event_queue_append (GdkDisplay *display, - GdkEvent *event); + GdkEvent *event); GList* _gdk_event_queue_insert_after (GdkDisplay *display, GdkEvent *after_event, GdkEvent *event); @@ -292,7 +273,7 @@ GList* _gdk_event_queue_insert_before(GdkDisplay *display, GdkEvent *after_event, GdkEvent *event); void _gdk_event_button_generate (GdkDisplay *display, - GdkEvent *event); + GdkEvent *event); void _gdk_windowing_event_data_copy (const GdkEvent *src, GdkEvent *dst); @@ -302,8 +283,6 @@ void gdk_synthesize_window_state (GdkWindow *window, GdkWindowState unset_flags, GdkWindowState set_flags); -GdkDeviceManager * _gdk_device_manager_new (GdkDisplay *display); - gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface, GdkRectangle *extents); @@ -314,12 +293,6 @@ gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface, cairo_surface_t * _gdk_window_ref_cairo_surface (GdkWindow *window); -void _gdk_window_impl_new (GdkWindow *window, - GdkWindow *real_parent, - GdkScreen *screen, - GdkEventMask event_mask, - GdkWindowAttr *attributes, - gint attributes_mask); void _gdk_window_destroy (GdkWindow *window, gboolean foreign_destroy); void _gdk_window_clear_update_area (GdkWindow *window); @@ -331,8 +304,6 @@ void _gdk_window_process_updates_recurse (GdkWindow *window, void _gdk_screen_close (GdkScreen *screen); -const char *_gdk_get_sm_client_id (void); - /***************************************** * Interfaces provided by windowing code * *****************************************/ @@ -341,74 +312,20 @@ const char *_gdk_get_sm_client_id (void); void _gdk_cursor_destroy (GdkCursor *cursor); -void _gdk_windowing_init (void); - extern const GOptionEntry _gdk_windowing_args[]; -void _gdk_windowing_set_default_display (GdkDisplay *display); - gchar *_gdk_windowing_substitute_screen_number (const gchar *display_name, - gint screen_number); + gint screen_number); -gulong _gdk_windowing_window_get_next_serial (GdkDisplay *display); -void _gdk_windowing_window_get_offsets (GdkWindow *window, - gint *x_offset, - gint *y_offset); - - -void _gdk_windowing_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask); -GdkWindow* _gdk_windowing_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel); -GdkGrabStatus _gdk_windowing_device_grab (GdkDevice *device, - GdkWindow *window, - GdkWindow *native, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time); void _gdk_windowing_got_event (GdkDisplay *display, - GList *event_link, - GdkEvent *event, - gulong serial); - -void _gdk_windowing_window_process_updates_recurse (GdkWindow *window, - cairo_region_t *expose_region); -void _gdk_windowing_before_process_all_updates (void); -void _gdk_windowing_after_process_all_updates (void); - -/* Return the number of bits-per-pixel for images of the specified depth. */ -gint _gdk_windowing_get_bits_for_depth (GdkDisplay *display, - gint depth); - + GList *event_link, + GdkEvent *event, + gulong serial); #define GDK_WINDOW_IS_MAPPED(window) (((window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0) - -/* Called when gdk_window_destroy() is called on a foreign window - * or an ancestor of the foreign window. It should generally reparent - * the window out of it's current heirarchy, hide it, and then - * send a message to the owner requesting that the window be destroyed. - */ -void _gdk_windowing_window_destroy_foreign (GdkWindow *window); - -void _gdk_windowing_display_set_sm_client_id (GdkDisplay *display, - const gchar *sm_client_id); - -void _gdk_windowing_window_set_composited (GdkWindow *window, - gboolean composited); - #define GDK_TYPE_PAINTABLE (_gdk_paintable_get_type ()) #define GDK_PAINTABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_PAINTABLE, GdkPaintable)) -#define GDK_IS_PAINTABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_PAINTABLE)) +#define GDK_IS_PAINTABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GDK_TYPE_PAINTABLE)) #define GDK_PAINTABLE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GDK_TYPE_PAINTABLE, GdkPaintableIface)) typedef struct _GdkPaintable GdkPaintable; @@ -426,82 +343,31 @@ struct _GdkPaintableIface GType _gdk_paintable_get_type (void) G_GNUC_CONST; -struct GdkAppLaunchContextPrivate -{ - GdkDisplay *display; - GdkScreen *screen; - gint workspace; - guint32 timestamp; - GIcon *icon; - char *icon_name; -}; - -char *_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, - GAppInfo *info, - GList *files); -void _gdk_windowing_launch_failed (GAppLaunchContext *context, - const char *startup_notify_id); - -void _gdk_display_device_grab_update (GdkDisplay *display, - GdkDevice *device, - gulong current_serial); -GdkDeviceGrabInfo *_gdk_display_get_last_device_grab (GdkDisplay *display, - GdkDevice *device); -GdkDeviceGrabInfo *_gdk_display_add_device_grab (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - GdkWindow *native_window, - GdkGrabOwnership grab_ownership, - gboolean owner_events, - GdkEventMask event_mask, - unsigned long serial_start, - guint32 time, - gboolean implicit); -GdkDeviceGrabInfo * _gdk_display_has_device_grab (GdkDisplay *display, - GdkDevice *device, - gulong serial); -gboolean _gdk_display_end_device_grab (GdkDisplay *display, - GdkDevice *device, - gulong serial, - GdkWindow *if_child, - gboolean implicit); -gboolean _gdk_display_check_grab_ownership (GdkDisplay *display, - GdkDevice *device, - gulong serial); -void _gdk_display_enable_motion_hints (GdkDisplay *display, - GdkDevice *device); - -GdkPointerWindowInfo * _gdk_display_get_pointer_info (GdkDisplay *display, - GdkDevice *device); - -void _gdk_display_pointer_info_foreach (GdkDisplay *display, - GdkDisplayPointerInfoForeach func, - gpointer user_data); - void _gdk_window_invalidate_for_expose (GdkWindow *window, - cairo_region_t *region); + cairo_region_t *region); GdkWindow * _gdk_window_find_child_at (GdkWindow *window, - int x, int y); + int x, int y); GdkWindow * _gdk_window_find_descendant_at (GdkWindow *toplevel, - double x, double y, - double *found_x, - double *found_y); + double x, double y, + double *found_x, + double *found_y); void _gdk_window_add_damage (GdkWindow *toplevel, - cairo_region_t *damaged_region); + cairo_region_t *damaged_region); GdkEvent * _gdk_make_event (GdkWindow *window, - GdkEventType type, - GdkEvent *event_in_queue, - gboolean before_event); + GdkEventType type, + GdkEvent *event_in_queue, + gboolean before_event); gboolean _gdk_window_event_parent_of (GdkWindow *parent, GdkWindow *child); void _gdk_synthesize_crossing_events (GdkDisplay *display, - GdkWindow *src, - GdkWindow *dest, + GdkWindow *src, + GdkWindow *dest, GdkDevice *device, + GdkDevice *source_device, GdkCrossingMode mode, gint toplevel_x, gint toplevel_y, @@ -512,7 +378,7 @@ void _gdk_synthesize_crossing_events (GdkDisplay *display, gboolean non_linear); void _gdk_display_set_window_under_pointer (GdkDisplay *display, GdkDevice *device, - GdkWindow *window); + GdkWindow *window); void _gdk_synthesize_crossing_events_for_geometry_change (GdkWindow *changed_window); @@ -524,29 +390,19 @@ cairo_region_t *_gdk_window_calculate_full_clip_region (GdkWindow *window gint *base_y_offset); gboolean _gdk_window_has_impl (GdkWindow *window); GdkWindow * _gdk_window_get_impl_window (GdkWindow *window); -GdkWindow *_gdk_window_get_input_window_for_event (GdkWindow *native_window, - GdkEventType event_type, - int x, int y, - gulong serial); /***************************** * offscreen window routines * *****************************/ GType gdk_offscreen_window_get_type (void); void _gdk_offscreen_window_new (GdkWindow *window, - GdkWindowAttr *attributes, - gint attributes_mask); + GdkWindowAttr *attributes, + gint attributes_mask); cairo_surface_t * _gdk_offscreen_window_create_surface (GdkWindow *window, gint width, gint height); -/************************************ - * Initialization and exit routines * - ************************************/ - -void _gdk_windowing_exit (void); - G_END_DECLS #endif /* __GDK_INTERNALS_H__ */ diff --git a/gdk/gdkkeynames.c b/gdk/gdkkeynames.c index bbebc3b26b..6d1fcd4475 100644 --- a/gdk/gdkkeynames.c +++ b/gdk/gdkkeynames.c @@ -45,8 +45,8 @@ gdk_keys_keyval_compare (const void *pkey, const void *pbase) return (*(int *) pkey) - ((gdk_key *) pbase)->keyval; } -gchar* -gdk_keyval_name (guint keyval) +static gchar* +_gdk_keyval_name (guint keyval) { static gchar buf[100]; gdk_key *found; @@ -86,8 +86,8 @@ gdk_keys_name_compare (const void *pkey, const void *pbase) (const char *) (keynames + ((const gdk_key *) pbase)->offset)); } -guint -gdk_keyval_from_name (const gchar *keyval_name) +static guint +_gdk_keyval_from_name (const gchar *keyval_name) { gdk_key *found; diff --git a/gdk/gdkkeys.c b/gdk/gdkkeys.c index 102b6f08e0..74993d6c20 100644 --- a/gdk/gdkkeys.c +++ b/gdk/gdkkeys.c @@ -26,9 +26,9 @@ #include "config.h" -#include "gdkkeys.h" - +#include "gdkkeysprivate.h" #include "gdkdisplay.h" +#include "gdkdisplaymanagerprivate.h" /** @@ -183,12 +183,6 @@ gdk_keymap_init (GdkKeymap *keymap) /* Other key-handling stuff */ -#ifndef HAVE_XCONVERTCASE -#include "gdkkeysyms.h" - -/* compatibility function from X11R6.3, since XConvertCase is not - * supplied by X11R5. - */ /** * gdk_keyval_convert_case: * @symbol: a keyval @@ -197,133 +191,16 @@ gdk_keymap_init (GdkKeymap *keymap) * * Obtains the upper- and lower-case versions of the keyval @symbol. * Examples of keyvals are #GDK_KEY_a, #GDK_KEY_Enter, #GDK_KEY_F1, etc. - * - **/ + */ void gdk_keyval_convert_case (guint symbol, - guint *lower, - guint *upper) + guint *lower, + guint *upper) { - guint xlower = symbol; - guint xupper = symbol; + GdkDisplayManager *manager = gdk_display_manager_get (); - /* Check for directly encoded 24-bit UCS characters: */ - if ((symbol & 0xff000000) == 0x01000000) - { - if (lower) - *lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); - if (upper) - *upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); - return; - } - - switch (symbol >> 8) - { - case 0: /* Latin 1 */ - if ((symbol >= GDK_KEY_A) && (symbol <= GDK_KEY_Z)) - xlower += (GDK_KEY_a - GDK_KEY_A); - else if ((symbol >= GDK_KEY_a) && (symbol <= GDK_KEY_z)) - xupper -= (GDK_KEY_a - GDK_KEY_A); - else if ((symbol >= GDK_KEY_Agrave) && (symbol <= GDK_KEY_Odiaeresis)) - xlower += (GDK_KEY_agrave - GDK_KEY_Agrave); - else if ((symbol >= GDK_KEY_agrave) && (symbol <= GDK_KEY_odiaeresis)) - xupper -= (GDK_KEY_agrave - GDK_KEY_Agrave); - else if ((symbol >= GDK_KEY_Ooblique) && (symbol <= GDK_KEY_Thorn)) - xlower += (GDK_KEY_oslash - GDK_KEY_Ooblique); - else if ((symbol >= GDK_KEY_oslash) && (symbol <= GDK_KEY_thorn)) - xupper -= (GDK_KEY_oslash - GDK_KEY_Ooblique); - break; - - case 1: /* Latin 2 */ - /* Assume the KeySym is a legal value (ignore discontinuities) */ - if (symbol == GDK_KEY_Aogonek) - xlower = GDK_KEY_aogonek; - else if (symbol >= GDK_KEY_Lstroke && symbol <= GDK_KEY_Sacute) - xlower += (GDK_KEY_lstroke - GDK_KEY_Lstroke); - else if (symbol >= GDK_KEY_Scaron && symbol <= GDK_KEY_Zacute) - xlower += (GDK_KEY_scaron - GDK_KEY_Scaron); - else if (symbol >= GDK_KEY_Zcaron && symbol <= GDK_KEY_Zabovedot) - xlower += (GDK_KEY_zcaron - GDK_KEY_Zcaron); - else if (symbol == GDK_KEY_aogonek) - xupper = GDK_KEY_Aogonek; - else if (symbol >= GDK_KEY_lstroke && symbol <= GDK_KEY_sacute) - xupper -= (GDK_KEY_lstroke - GDK_KEY_Lstroke); - else if (symbol >= GDK_KEY_scaron && symbol <= GDK_KEY_zacute) - xupper -= (GDK_KEY_scaron - GDK_KEY_Scaron); - else if (symbol >= GDK_KEY_zcaron && symbol <= GDK_KEY_zabovedot) - xupper -= (GDK_KEY_zcaron - GDK_KEY_Zcaron); - else if (symbol >= GDK_KEY_Racute && symbol <= GDK_KEY_Tcedilla) - xlower += (GDK_KEY_racute - GDK_KEY_Racute); - else if (symbol >= GDK_KEY_racute && symbol <= GDK_KEY_tcedilla) - xupper -= (GDK_KEY_racute - GDK_KEY_Racute); - break; - - case 2: /* Latin 3 */ - /* Assume the KeySym is a legal value (ignore discontinuities) */ - if (symbol >= GDK_KEY_Hstroke && symbol <= GDK_KEY_Hcircumflex) - xlower += (GDK_KEY_hstroke - GDK_KEY_Hstroke); - else if (symbol >= GDK_KEY_Gbreve && symbol <= GDK_KEY_Jcircumflex) - xlower += (GDK_KEY_gbreve - GDK_KEY_Gbreve); - else if (symbol >= GDK_KEY_hstroke && symbol <= GDK_KEY_hcircumflex) - xupper -= (GDK_KEY_hstroke - GDK_KEY_Hstroke); - else if (symbol >= GDK_KEY_gbreve && symbol <= GDK_KEY_jcircumflex) - xupper -= (GDK_KEY_gbreve - GDK_KEY_Gbreve); - else if (symbol >= GDK_KEY_Cabovedot && symbol <= GDK_KEY_Scircumflex) - xlower += (GDK_KEY_cabovedot - GDK_KEY_Cabovedot); - else if (symbol >= GDK_KEY_cabovedot && symbol <= GDK_KEY_scircumflex) - xupper -= (GDK_KEY_cabovedot - GDK_KEY_Cabovedot); - break; - - case 3: /* Latin 4 */ - /* Assume the KeySym is a legal value (ignore discontinuities) */ - if (symbol >= GDK_KEY_Rcedilla && symbol <= GDK_KEY_Tslash) - xlower += (GDK_KEY_rcedilla - GDK_KEY_Rcedilla); - else if (symbol >= GDK_KEY_rcedilla && symbol <= GDK_KEY_tslash) - xupper -= (GDK_KEY_rcedilla - GDK_KEY_Rcedilla); - else if (symbol == GDK_KEY_ENG) - xlower = GDK_KEY_eng; - else if (symbol == GDK_KEY_eng) - xupper = GDK_KEY_ENG; - else if (symbol >= GDK_KEY_Amacron && symbol <= GDK_KEY_Umacron) - xlower += (GDK_KEY_amacron - GDK_KEY_Amacron); - else if (symbol >= GDK_KEY_amacron && symbol <= GDK_KEY_umacron) - xupper -= (GDK_KEY_amacron - GDK_KEY_Amacron); - break; - - case 6: /* Cyrillic */ - /* Assume the KeySym is a legal value (ignore discontinuities) */ - if (symbol >= GDK_KEY_Serbian_DJE && symbol <= GDK_KEY_Serbian_DZE) - xlower -= (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje); - else if (symbol >= GDK_KEY_Serbian_dje && symbol <= GDK_KEY_Serbian_dze) - xupper += (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje); - else if (symbol >= GDK_KEY_Cyrillic_YU && symbol <= GDK_KEY_Cyrillic_HARDSIGN) - xlower -= (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu); - else if (symbol >= GDK_KEY_Cyrillic_yu && symbol <= GDK_KEY_Cyrillic_hardsign) - xupper += (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu); - break; - - case 7: /* Greek */ - /* Assume the KeySym is a legal value (ignore discontinuities) */ - if (symbol >= GDK_KEY_Greek_ALPHAaccent && symbol <= GDK_KEY_Greek_OMEGAaccent) - xlower += (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent); - else if (symbol >= GDK_KEY_Greek_alphaaccent && symbol <= GDK_KEY_Greek_omegaaccent && - symbol != GDK_KEY_Greek_iotaaccentdieresis && - symbol != GDK_KEY_Greek_upsilonaccentdieresis) - xupper -= (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent); - else if (symbol >= GDK_KEY_Greek_ALPHA && symbol <= GDK_KEY_Greek_OMEGA) - xlower += (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA); - else if (symbol >= GDK_KEY_Greek_alpha && symbol <= GDK_KEY_Greek_omega && - symbol != GDK_KEY_Greek_finalsmallsigma) - xupper -= (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA); - break; - } - - if (lower) - *lower = xlower; - if (upper) - *upper = xupper; + GDK_DISPLAY_MANAGER_GET_CLASS (manager)->keyval_convert_case (manager, symbol, lower, upper); } -#endif /** * gdk_keyval_to_upper: @@ -407,7 +284,7 @@ gdk_keyval_is_lower (guint keyval) return FALSE; } -/** +/** * gdk_keymap_get_default: * * Returns the #GdkKeymap attached to the default display. @@ -419,3 +296,329 @@ gdk_keymap_get_default (void) { return gdk_keymap_get_for_display (gdk_display_get_default ()); } + +/** + * gdk_keymap_get_direction: + * @keymap: a #GdkKeymap + * + * Returns the direction of effective layout of the keymap. + * + * Returns: %PANGO_DIRECTION_LTR or %PANGO_DIRECTION_RTL + * if it can determine the direction. %PANGO_DIRECTION_NEUTRAL + * otherwise. + **/ +PangoDirection +gdk_keymap_get_direction (GdkKeymap *keymap) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->get_direction (keymap); +} + +/** + * gdk_keymap_have_bidi_layouts: + * @keymap: a #GdkKeymap + * + * Determines if keyboard layouts for both right-to-left and left-to-right + * languages are in use. + * + * Returns: %TRUE if there are layouts in both directions, %FALSE otherwise + * + * Since: 2.12 + **/ +gboolean +gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->have_bidi_layouts (keymap); +} + +/** + * gdk_keymap_get_caps_lock_state: + * @keymap: a #GdkKeymap + * + * Returns whether the Caps Lock modifer is locked. + * + * Returns: %TRUE if Caps Lock is on + * + * Since: 2.16 + */ +gboolean +gdk_keymap_get_caps_lock_state (GdkKeymap *keymap) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->get_caps_lock_state (keymap); +} + +/** + * gdk_keymap_get_num_lock_state: + * @keymap: a #GdkKeymap + * + * Returns whether the Num Lock modifer is locked. + * + * Returns: %TRUE if Num Lock is on + * + * Since: 3.0 + */ +gboolean +gdk_keymap_get_num_lock_state (GdkKeymap *keymap) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->get_num_lock_state (keymap); +} + +/** + * gdk_keymap_get_entries_for_keyval: + * @keymap: a #GdkKeymap + * @keyval: a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc. + * @keys: (out): return location for an array of #GdkKeymapKey + * @n_keys: (out): return location for number of elements in returned array + * + * Obtains a list of keycode/group/level combinations that will + * generate @keyval. Groups and levels are two kinds of keyboard mode; + * in general, the level determines whether the top or bottom symbol + * on a key is used, and the group determines whether the left or + * right symbol is used. On US keyboards, the shift key changes the + * keyboard level, and there are no groups. A group switch key might + * convert a keyboard between Hebrew to English modes, for example. + * #GdkEventKey contains a %group field that indicates the active + * keyboard group. The level is computed from the modifier mask. + * The returned array should be freed + * with g_free(). + * + * Return value: %TRUE if keys were found and returned + **/ +gboolean +gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, + guint keyval, + GdkKeymapKey **keys, + gint *n_keys) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->get_entries_for_keyval (keymap, keyval, keys, n_keys); +} + +/** + * gdk_keymap_get_entries_for_keycode: + * @keymap: a #GdkKeymap + * @hardware_keycode: a keycode + * @keys: (out): return location for array of #GdkKeymapKey, or %NULL + * @keyvals: (out): return location for array of keyvals, or %NULL + * @n_entries: length of @keys and @keyvals + * + * Returns the keyvals bound to @hardware_keycode. + * The Nth #GdkKeymapKey in @keys is bound to the Nth + * keyval in @keyvals. Free the returned arrays with g_free(). + * When a keycode is pressed by the user, the keyval from + * this list of entries is selected by considering the effective + * keyboard group and level. See gdk_keymap_translate_keyboard_state(). + * + * Returns: %TRUE if there were any entries + **/ +gboolean +gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, + guint hardware_keycode, + GdkKeymapKey **keys, + guint **keyvals, + gint *n_entries) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->get_entries_for_keycode (keymap, hardware_keycode, keys, keyvals, n_entries); +} + +/** + * gdk_keymap_lookup_key: + * @keymap: a #GdkKeymap + * @key: a #GdkKeymapKey with keycode, group, and level initialized + * + * Looks up the keyval mapped to a keycode/group/level triplet. + * If no keyval is bound to @key, returns 0. For normal user input, + * you want to use gdk_keymap_translate_keyboard_state() instead of + * this function, since the effective group/level may not be + * the same as the current keyboard state. + * + * Return value: a keyval, or 0 if none was mapped to the given @key + **/ +guint +gdk_keymap_lookup_key (GdkKeymap *keymap, + const GdkKeymapKey *key) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->lookup_key (keymap, key); +} + +/** + * gdk_keymap_translate_keyboard_state: + * @keymap: a #GdkKeymap + * @hardware_keycode: a keycode + * @state: a modifier state + * @group: active keyboard group + * @keyval: (out) (allow-none): return location for keyval, or %NULL + * @effective_group: (out) (allow-none): return location for effective + * group, or %NULL + * @level: (out) (allow-none): return location for level, or %NULL + * @consumed_modifiers: (out) (allow-none): return location for modifiers + * that were used to determine the group or level, or %NULL + * + * Translates the contents of a #GdkEventKey into a keyval, effective + * group, and level. Modifiers that affected the translation and + * are thus unavailable for application use are returned in + * @consumed_modifiers. + * See for an explanation of + * groups and levels. The @effective_group is the group that was + * actually used for the translation; some keys such as Enter are not + * affected by the active keyboard group. The @level is derived from + * @state. For convenience, #GdkEventKey already contains the translated + * keyval, so this function isn't as useful as you might think. + * + * + * @consumed_modifiers gives modifiers that should be masked out + * from @state when comparing this key press to a hot key. For + * instance, on a US keyboard, the plus + * symbol is shifted, so when comparing a key press to a + * <Control>plus accelerator <Shift> should + * be masked out. + * + * + * /* We want to ignore irrelevant modifiers like ScrollLock */ + * #define ALL_ACCELS_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK) + * gdk_keymap_translate_keyboard_state (keymap, event->hardware_keycode, + * event->state, event->group, + * &keyval, NULL, NULL, &consumed); + * if (keyval == GDK_PLUS && + * (event->state & ~consumed & ALL_ACCELS_MASK) == GDK_CONTROL_MASK) + * /* Control was pressed */ + * + * + * An older interpretation @consumed_modifiers was that it contained + * all modifiers that might affect the translation of the key; + * this allowed accelerators to be stored with irrelevant consumed + * modifiers, by doing: + * + * /* XXX Don't do this XXX */ + * if (keyval == accel_keyval && + * (event->state & ~consumed & ALL_ACCELS_MASK) == (accel_mods & ~consumed)) + * /* Accelerator was pressed */ + * + * + * However, this did not work if multi-modifier combinations were + * used in the keymap, since, for instance, <Control> + * would be masked out even if only <Control><Alt> + * was used in the keymap. To support this usage as well as well as + * possible, all single modifier combinations + * that could affect the key for any combination of modifiers will + * be returned in @consumed_modifiers; multi-modifier combinations + * are returned only when actually found in @state. When you store + * accelerators, you should always store them with consumed modifiers + * removed. Store <Control>plus, + * not <Control><Shift>plus, + * + * + * Return value: %TRUE if there was a keyval bound to the keycode/state/group + **/ +gboolean +gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, + guint hardware_keycode, + GdkModifierType state, + gint group, + guint *keyval, + gint *effective_group, + gint *level, + GdkModifierType *consumed_modifiers) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->translate_keyboard_state (keymap, + hardware_keycode, + state, + group, + keyval, + effective_group, + level, + consumed_modifiers); +} + +/** + * gdk_keymap_add_virtual_modifiers: + * @keymap: a #GdkKeymap + * @state: pointer to the modifier mask to change + * + * Adds virtual modifiers (i.e. Super, Hyper and Meta) which correspond + * to the real modifiers (i.e Mod2, Mod3, ...) in @modifiers. + * are set in @state to their non-virtual counterparts (i.e. Mod2, + * Mod3,...) and set the corresponding bits in @state. + * + * GDK already does this before delivering key events, but for + * compatibility reasons, it only sets the first virtual modifier + * it finds, whereas this function sets all matching virtual modifiers. + * + * This function is useful when matching key events against + * accelerators. + * + * Since: 2.20 + */ +void +gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) +{ + GDK_KEYMAP_GET_CLASS(keymap)->add_virtual_modifiers (keymap, state); +} + +/** + * gdk_keymap_map_virtual_modifiers: + * @keymap: a #GdkKeymap + * @state: pointer to the modifier state to map + * + * Maps the virtual modifiers (i.e. Super, Hyper and Meta) which + * are set in @state to their non-virtual counterparts (i.e. Mod2, + * Mod3,...) and set the corresponding bits in @state. + * + * This function is useful when matching key events against + * accelerators. + * + * Returns: %TRUE if no virtual modifiers were mapped to the + * same non-virtual modifier. Note that %FALSE is also returned + * if a virtual modifier is mapped to a non-virtual modifier that + * was already set in @state. + * + * Since: 2.20 + */ +gboolean +gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) +{ + return GDK_KEYMAP_GET_CLASS(keymap)->map_virtual_modifiers (keymap, state); +} + +/** + * gdk_keyval_name: + * @keyval: a key value + * + * Converts a key value into a symbolic name. + * + * The names are the same as those in the + * <gdk/gdkkeysyms.h> header file + * but without the leading "GDK_KEY_". + * + * Return value: (transfer none): a string containing the name of the key, + * or %NULL if @keyval is not a valid key. The string should not be + * modified. + */ +gchar* +gdk_keyval_name (guint keyval) +{ + GdkDisplayManager *manager = gdk_display_manager_get (); + + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->get_keyval_name (manager, keyval); +} + +/** + * gdk_keyval_from_name: + * @keyval_name: a key name + * + * Converts a key name to a key value. + * + * The names are the same as those in the + * <gdk/gdkkeysyms.h> header file + * but without the leading "GDK_KEY_". + * + * Returns: the corresponding key value, or %GDK_KEY_VoidSymbol + * if the key name is not a valid key + */ +guint +gdk_keyval_from_name (const gchar *keyval_name) +{ + GdkDisplayManager *manager = gdk_display_manager_get (); + + return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->lookup_keyval (manager, keyval_name); +} diff --git a/gdk/gdkkeys.h b/gdk/gdkkeys.h index 4551b98905..346fe40ac5 100644 --- a/gdk/gdkkeys.h +++ b/gdk/gdkkeys.h @@ -65,13 +65,7 @@ struct _GdkKeymapKey #define GDK_TYPE_KEYMAP (gdk_keymap_get_type ()) #define GDK_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_KEYMAP, GdkKeymap)) -#define GDK_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_KEYMAP, GdkKeymapClass)) #define GDK_IS_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_KEYMAP)) -#define GDK_IS_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_KEYMAP)) -#define GDK_KEYMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_KEYMAP, GdkKeymapClass)) - -typedef struct _GdkKeymap GdkKeymap; -typedef struct _GdkKeymapClass GdkKeymapClass; /** * GdkKeymap: @@ -83,20 +77,6 @@ typedef struct _GdkKeymapClass GdkKeymapClass; * state; the second phase is to look up the keycode/group/level triplet * in the keymap and see what keyval it corresponds to. */ -struct _GdkKeymap -{ - GObject parent_instance; - GdkDisplay *GSEAL (display); -}; - -struct _GdkKeymapClass -{ - GObjectClass parent_class; - - void (*direction_changed) (GdkKeymap *keymap); - void (*keys_changed) (GdkKeymap *keymap); - void (*state_changed) (GdkKeymap *keymap); -}; GType gdk_keymap_get_type (void) G_GNUC_CONST; diff --git a/gdk/gdkkeysprivate.h b/gdk/gdkkeysprivate.h new file mode 100644 index 0000000000..c0f1f0eaa9 --- /dev/null +++ b/gdk/gdkkeysprivate.h @@ -0,0 +1,80 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_KEYS_PRIVATE_H__ +#define __GDK_KEYS_PRIVATE_H__ + +#include "gdkkeys.h" + +G_BEGIN_DECLS + +#define GDK_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_KEYMAP, GdkKeymapClass)) +#define GDK_IS_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_KEYMAP)) +#define GDK_KEYMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_KEYMAP, GdkKeymapClass)) + +typedef struct _GdkKeymapClass GdkKeymapClass; + +struct _GdkKeymapClass +{ + GObjectClass parent_class; + + PangoDirection (* get_direction) (GdkKeymap *keymap); + gboolean (* have_bidi_layouts) (GdkKeymap *keymap); + gboolean (* get_caps_lock_state) (GdkKeymap *keymap); + gboolean (* get_num_lock_state) (GdkKeymap *keymap); + gboolean (* get_entries_for_keyval) (GdkKeymap *keymap, + guint keyval, + GdkKeymapKey **keys, + gint *n_keys); + gboolean (* get_entries_for_keycode) (GdkKeymap *keymap, + guint hardware_keycode, + GdkKeymapKey **keys, + guint **keyvals, + gint *n_entries); + guint (* lookup_key) (GdkKeymap *keymap, + const GdkKeymapKey *key); + gboolean (* translate_keyboard_state) (GdkKeymap *keymap, + guint hardware_keycode, + GdkModifierType state, + gint group, + guint *keyval, + gint *effective_group, + gint *level, + GdkModifierType *consumed_modifiers); + void (* add_virtual_modifiers) (GdkKeymap *keymap, + GdkModifierType *state); + gboolean (* map_virtual_modifiers) (GdkKeymap *keymap, + GdkModifierType *state); + + + /* Signals */ + void (*direction_changed) (GdkKeymap *keymap); + void (*keys_changed) (GdkKeymap *keymap); + void (*state_changed) (GdkKeymap *keymap); +}; + +struct _GdkKeymap +{ + GObject parent_instance; + GdkDisplay *display; +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkmain.h b/gdk/gdkmain.h index 75ffb4e62a..bcbe4d07dc 100644 --- a/gdk/gdkmain.h +++ b/gdk/gdkmain.h @@ -50,30 +50,6 @@ gboolean gdk_init_check (gint *argc, void gdk_add_option_entries_libgtk_only (GOptionGroup *group); void gdk_pre_parse_libgtk_only (void); -/** - * gdk_set_locale: - * - * Initializes the support for internationalization by calling the setlocale() - * system call. This function is called by gtk_set_locale() and so GTK+ - * applications should use that instead. - * - * The locale to use is determined by the LANG environment variable, - * so to run an application in a certain locale you can do something like this: - * - * - * export LANG="fr" - * ... run application ... - * - * - * - * If the locale is not supported by X then it is reset to the standard "C" - * locale. - * - * Returns: the resulting locale. - */ -gchar* gdk_set_locale (void); -void gdk_enable_multidevice (void); - G_CONST_RETURN gchar *gdk_get_program_class (void); void gdk_set_program_class (const gchar *program_class); @@ -93,14 +69,16 @@ G_CONST_RETURN gchar *gdk_get_display_arg_name (void); /** * gdk_get_display: * - * Gets the name of the display, which usually comes from the DISPLAY - * environment variable or the command line option. + * Gets the name of the display, which usually comes from the + * DISPLAY environment variable or the + * command line option. * * Returns: the name of the display. */ -gchar* gdk_get_display (void); +gchar* gdk_get_display (void); #ifndef GDK_MULTIDEVICE_SAFE +#ifndef GDK_DISABLE_DEPRECATED GdkGrabStatus gdk_pointer_grab (GdkWindow *window, gboolean owner_events, GdkEventMask event_mask, @@ -110,14 +88,17 @@ GdkGrabStatus gdk_pointer_grab (GdkWindow *window, GdkGrabStatus gdk_keyboard_grab (GdkWindow *window, gboolean owner_events, guint32 time_); +#endif /* GDK_DISABLE_DEPRECATED */ #endif /* GDK_MULTIDEVICE_SAFE */ #ifndef GDK_MULTIHEAD_SAFE #ifndef GDK_MULTIDEVICE_SAFE +#ifndef GDK_DISABLE_DEPRECATED void gdk_pointer_ungrab (guint32 time_); void gdk_keyboard_ungrab (guint32 time_); gboolean gdk_pointer_is_grabbed (void); +#endif /* GDK_DISABLE_DEPRECATED */ #endif /* GDK_MULTIDEVICE_SAFE */ gint gdk_screen_width (void) G_GNUC_CONST; @@ -132,15 +113,10 @@ void gdk_beep (void); #endif /* GDK_MULTIHEAD_SAFE */ -/** - * gdk_flush: - * - * Flushes the X output buffer and waits until all requests have been processed - * by the server. This is rarely needed by applications. It's main use is for - * trapping X errors with gdk_error_trap_push() and gdk_error_trap_pop(). - */ void gdk_flush (void); +void gdk_disable_multidevice (void); + G_END_DECLS #endif /* __GDK_MAIN_H__ */ diff --git a/gdk/gdkoffscreenwindow.c b/gdk/gdkoffscreenwindow.c index 9ade91bee1..fa1518f0d7 100644 --- a/gdk/gdkoffscreenwindow.c +++ b/gdk/gdkoffscreenwindow.c @@ -549,8 +549,7 @@ gdk_offscreen_window_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth) + gint *height) { if (!GDK_WINDOW_DESTROYED (window)) { @@ -562,8 +561,6 @@ gdk_offscreen_window_get_geometry (GdkWindow *window, *width = window->width; if (height) *height = window->height; - if (depth) - *depth = window->depth; } } @@ -690,6 +687,24 @@ gdk_offscreen_window_get_embedder (GdkWindow *window) return offscreen->embedder; } +static void +gdk_offscreen_window_do_nothing (GdkWindow *window) +{ +} + +static void +gdk_offscreen_window_set_boolean (GdkWindow *window, + gboolean setting) +{ +} + +static void +gdk_offscreen_window_process_updates_recurse (GdkWindow *window, + cairo_region_t *region) +{ + _gdk_window_process_updates_recurse (window, region); +} + static void gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass) { @@ -702,21 +717,80 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass) impl_class->show = gdk_offscreen_window_show; impl_class->hide = gdk_offscreen_window_hide; impl_class->withdraw = gdk_offscreen_window_withdraw; + impl_class->set_events = gdk_offscreen_window_set_events; + impl_class->get_events = gdk_offscreen_window_get_events; impl_class->raise = gdk_offscreen_window_raise; impl_class->lower = gdk_offscreen_window_lower; + impl_class->restack_under = NULL; + impl_class->restack_toplevel = NULL; impl_class->move_resize = gdk_offscreen_window_move_resize; impl_class->set_background = gdk_offscreen_window_set_background; - impl_class->get_events = gdk_offscreen_window_get_events; - impl_class->set_events = gdk_offscreen_window_set_events; impl_class->reparent = gdk_offscreen_window_reparent; + impl_class->set_device_cursor = NULL; impl_class->get_geometry = gdk_offscreen_window_get_geometry; + impl_class->get_root_coords = gdk_offscreen_window_get_root_coords; + impl_class->get_device_state = gdk_offscreen_window_get_device_state; impl_class->shape_combine_region = gdk_offscreen_window_shape_combine_region; impl_class->input_shape_combine_region = gdk_offscreen_window_input_shape_combine_region; impl_class->set_static_gravities = gdk_offscreen_window_set_static_gravities; impl_class->queue_antiexpose = gdk_offscreen_window_queue_antiexpose; impl_class->translate = gdk_offscreen_window_translate; - impl_class->get_root_coords = gdk_offscreen_window_get_root_coords; - impl_class->get_device_state = gdk_offscreen_window_get_device_state; impl_class->destroy = gdk_offscreen_window_destroy; + impl_class->destroy_foreign = NULL; impl_class->resize_cairo_surface = gdk_offscreen_window_resize_cairo_surface; + impl_class->get_shape = NULL; + impl_class->get_input_shape = NULL; + impl_class->beep = NULL; + + impl_class->focus = NULL; + impl_class->set_type_hint = NULL; + impl_class->get_type_hint = NULL; + impl_class->set_modal_hint = NULL; + impl_class->set_skip_taskbar_hint = gdk_offscreen_window_set_boolean; + impl_class->set_skip_pager_hint = gdk_offscreen_window_set_boolean; + impl_class->set_urgency_hint = NULL; + impl_class->set_geometry_hints = NULL; + impl_class->set_title = NULL; + impl_class->set_role = NULL; + impl_class->set_startup_id = NULL; + impl_class->set_transient_for = NULL; + impl_class->get_root_origin = NULL; + impl_class->get_frame_extents = NULL; + impl_class->set_override_redirect = NULL; + impl_class->set_accept_focus = NULL; + impl_class->set_focus_on_map = NULL; + impl_class->set_icon_list = NULL; + impl_class->set_icon_name = NULL; + impl_class->iconify = gdk_offscreen_window_do_nothing; + impl_class->deiconify = gdk_offscreen_window_do_nothing; + impl_class->stick = gdk_offscreen_window_do_nothing; + impl_class->unstick = gdk_offscreen_window_do_nothing; + impl_class->maximize = gdk_offscreen_window_do_nothing; + impl_class->unmaximize = gdk_offscreen_window_do_nothing; + impl_class->fullscreen = gdk_offscreen_window_do_nothing; + impl_class->unfullscreen = gdk_offscreen_window_do_nothing; + impl_class->set_keep_above = gdk_offscreen_window_set_boolean; + impl_class->set_keep_below = gdk_offscreen_window_set_boolean; + impl_class->get_group = NULL; + impl_class->set_group = NULL; + impl_class->set_decorations = NULL; + impl_class->get_decorations = NULL; + impl_class->set_functions = NULL; + impl_class->set_functions = NULL; + impl_class->begin_resize_drag = NULL; + impl_class->begin_move_drag = NULL; + impl_class->enable_synchronized_configure = gdk_offscreen_window_do_nothing; + impl_class->configure_finished = NULL; + impl_class->set_opacity = NULL; + impl_class->set_composited = NULL; + impl_class->destroy_notify = NULL; + impl_class->register_dnd = NULL; + impl_class->drag_begin = NULL; + impl_class->process_updates_recurse = gdk_offscreen_window_process_updates_recurse; + impl_class->sync_rendering = NULL; + impl_class->simulate_key = NULL; + impl_class->simulate_button = NULL; + impl_class->get_property = NULL; + impl_class->change_property = NULL; + impl_class->delete_property = NULL; } diff --git a/gdk/gdkpoly-generic.h b/gdk/gdkpoly-generic.h deleted file mode 100644 index 660c689adb..0000000000 --- a/gdk/gdkpoly-generic.h +++ /dev/null @@ -1,291 +0,0 @@ -/* $TOG: poly.h /main/5 1998/02/06 17:47:27 kaleb $ */ -/************************************************************************ - -Copyright 1987, 1998 The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ - -/* - * This file contains a few macros to help track - * the edge of a filled object. The object is assumed - * to be filled in scanline order, and thus the - * algorithm used is an extension of Bresenham's line - * drawing algorithm which assumes that y is always the - * major axis. - * Since these pieces of code are the same for any filled shape, - * it is more convenient to gather the library in one - * place, but since these pieces of code are also in - * the inner loops of output primitives, procedure call - * overhead is out of the question. - * See the author for a derivation if needed. - */ - - -/* - * In scan converting polygons, we want to choose those pixels - * which are inside the polygon. Thus, we add .5 to the starting - * x coordinate for both left and right edges. Now we choose the - * first pixel which is inside the pgon for the left edge and the - * first pixel which is outside the pgon for the right edge. - * Draw the left pixel, but not the right. - * - * How to add .5 to the starting x coordinate: - * If the edge is moving to the right, then subtract dy from the - * error term from the general form of the algorithm. - * If the edge is moving to the left, then add dy to the error term. - * - * The reason for the difference between edges moving to the left - * and edges moving to the right is simple: If an edge is moving - * to the right, then we want the algorithm to flip immediately. - * If it is moving to the left, then we don't want it to flip until - * we traverse an entire pixel. - */ -#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) { \ - int dx; /* local storage */ \ -\ - /* \ - * if the edge is horizontal, then it is ignored \ - * and assumed not to be processed. Otherwise, do this stuff. \ - */ \ - if ((dy) != 0) { \ - xStart = (x1); \ - dx = (x2) - xStart; \ - if (dx < 0) { \ - m = dx / (dy); \ - m1 = m - 1; \ - incr1 = -2 * dx + 2 * (dy) * m1; \ - incr2 = -2 * dx + 2 * (dy) * m; \ - d = 2 * m * (dy) - 2 * dx - 2 * (dy); \ - } else { \ - m = dx / (dy); \ - m1 = m + 1; \ - incr1 = 2 * dx - 2 * (dy) * m1; \ - incr2 = 2 * dx - 2 * (dy) * m; \ - d = -2 * m * (dy) + 2 * dx; \ - } \ - } \ -} - -#define BRESINCRPGON(d, minval, m, m1, incr1, incr2) { \ - if (m1 > 0) { \ - if (d > 0) { \ - minval += m1; \ - d += incr1; \ - } \ - else { \ - minval += m; \ - d += incr2; \ - } \ - } else {\ - if (d >= 0) { \ - minval += m1; \ - d += incr1; \ - } \ - else { \ - minval += m; \ - d += incr2; \ - } \ - } \ -} - - -/* - * This structure contains all of the information needed - * to run the bresenham algorithm. - * The variables may be hardcoded into the declarations - * instead of using this structure to make use of - * register declarations. - */ -typedef struct { - int minor_axis; /* minor axis */ - int d; /* decision variable */ - int m, m1; /* slope and slope+1 */ - int incr1, incr2; /* error increments */ -} BRESINFO; - - -#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres) \ - BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \ - bres.m, bres.m1, bres.incr1, bres.incr2) - -#define BRESINCRPGONSTRUCT(bres) \ - BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2) - - - -/* - * These are the data structures needed to scan - * convert regions. Two different scan conversion - * methods are available -- the even-odd method, and - * the winding number method. - * The even-odd rule states that a point is inside - * the polygon if a ray drawn from that point in any - * direction will pass through an odd number of - * path segments. - * By the winding number rule, a point is decided - * to be inside the polygon if a ray drawn from that - * point in any direction passes through a different - * number of clockwise and counter-clockwise path - * segments. - * - * These data structures are adapted somewhat from - * the algorithm in (Foley/Van Dam) for scan converting - * polygons. - * The basic algorithm is to start at the top (smallest y) - * of the polygon, stepping down to the bottom of - * the polygon by incrementing the y coordinate. We - * keep a list of edges which the current scanline crosses, - * sorted by x. This list is called the Active Edge Table (AET) - * As we change the y-coordinate, we update each entry in - * in the active edge table to reflect the edges new xcoord. - * This list must be sorted at each scanline in case - * two edges intersect. - * We also keep a data structure known as the Edge Table (ET), - * which keeps track of all the edges which the current - * scanline has not yet reached. The ET is basically a - * list of ScanLineList structures containing a list of - * edges which are entered at a given scanline. There is one - * ScanLineList per scanline at which an edge is entered. - * When we enter a new edge, we move it from the ET to the AET. - * - * From the AET, we can implement the even-odd rule as in - * (Foley/Van Dam). - * The winding number rule is a little trickier. We also - * keep the EdgeTableEntries in the AET linked by the - * nextWETE (winding EdgeTableEntry) link. This allows - * the edges to be linked just as before for updating - * purposes, but only uses the edges linked by the nextWETE - * link as edges representing spans of the polygon to - * drawn (as with the even-odd rule). - */ - -/* - * for the winding number rule - */ -#define CLOCKWISE 1 -#define COUNTERCLOCKWISE -1 - -typedef struct _EdgeTableEntry { - int ymax; /* ycoord at which we exit this edge. */ - BRESINFO bres; /* Bresenham info to run the edge */ - struct _EdgeTableEntry *next; /* next in the list */ - struct _EdgeTableEntry *back; /* for insertion sort */ - struct _EdgeTableEntry *nextWETE; /* for winding num rule */ - int ClockWise; /* flag for winding number rule */ -} EdgeTableEntry; - - -typedef struct _ScanLineList{ - int scanline; /* the scanline represented */ - EdgeTableEntry *edgelist; /* header node */ - struct _ScanLineList *next; /* next in the list */ -} ScanLineList; - - -typedef struct { - int ymax; /* ymax for the polygon */ - int ymin; /* ymin for the polygon */ - ScanLineList scanlines; /* header node */ -} EdgeTable; - - -/* - * Here is a struct to help with storage allocation - * so we can allocate a big chunk at a time, and then take - * pieces from this heap when we need to. - */ -#define SLLSPERBLOCK 25 - -typedef struct _ScanLineListBlock { - ScanLineList SLLs[SLLSPERBLOCK]; - struct _ScanLineListBlock *next; -} ScanLineListBlock; - - - -/* - * - * a few macros for the inner loops of the fill code where - * performance considerations don't allow a procedure call. - * - * Evaluate the given edge at the given scanline. - * If the edge has expired, then we leave it and fix up - * the active edge table; otherwise, we increment the - * x value to be ready for the next scanline. - * The winding number rule is in effect, so we must notify - * the caller when the edge has been removed so he - * can reorder the Winding Active Edge Table. - */ -#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) { \ - if (pAET->ymax == y) { /* leaving this edge */ \ - pPrevAET->next = pAET->next; \ - pAET = pPrevAET->next; \ - fixWAET = 1; \ - if (pAET) \ - pAET->back = pPrevAET; \ - } \ - else { \ - BRESINCRPGONSTRUCT(pAET->bres); \ - pPrevAET = pAET; \ - pAET = pAET->next; \ - } \ -} - - -/* - * Evaluate the given edge at the given scanline. - * If the edge has expired, then we leave it and fix up - * the active edge table; otherwise, we increment the - * x value to be ready for the next scanline. - * The even-odd rule is in effect. - */ -#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \ - if (pAET->ymax == y) { /* leaving this edge */ \ - pPrevAET->next = pAET->next; \ - pAET = pPrevAET->next; \ - if (pAET) \ - pAET->back = pPrevAET; \ - } \ - else { \ - BRESINCRPGONSTRUCT(pAET->bres); \ - pPrevAET = pAET; \ - pAET = pAET->next; \ - } \ -} diff --git a/gdk/gdkproperty.h b/gdk/gdkproperty.h index 4ea6f8153d..014234e983 100644 --- a/gdk/gdkproperty.h +++ b/gdk/gdkproperty.h @@ -54,83 +54,39 @@ typedef enum GdkAtom gdk_atom_intern (const gchar *atom_name, - gboolean only_if_exists); + gboolean only_if_exists); GdkAtom gdk_atom_intern_static_string (const gchar *atom_name); gchar* gdk_atom_name (GdkAtom atom); gboolean gdk_property_get (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gulong offset, - gulong length, - gint pdelete, - GdkAtom *actual_property_type, - gint *actual_format, - gint *actual_length, - guchar **data); + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format, + gint *actual_length, + guchar **data); void gdk_property_change (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gint format, - GdkPropMode mode, - const guchar *data, - gint nelements); + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements); void gdk_property_delete (GdkWindow *window, - GdkAtom property); + GdkAtom property); -#ifndef GDK_MULTIHEAD_SAFE -gint gdk_text_property_to_text_list (GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list); -gint gdk_text_property_to_utf8_list (GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list); -gboolean gdk_utf8_to_compound_text (const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length); -gint gdk_string_to_compound_text (const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length); -#endif /* GDK_MULTIHEAD_SAFE */ +gint gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); -gint gdk_text_property_to_text_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list); -gint gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list); - -gchar *gdk_utf8_to_string_target (const gchar *str); -gint gdk_string_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length); -gboolean gdk_utf8_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length); - -void gdk_free_text_list (gchar **list); -void gdk_free_compound_text (guchar *ctext); +gchar *gdk_utf8_to_string_target (const gchar *str); G_END_DECLS diff --git a/gdk/gdkrgba.c b/gdk/gdkrgba.c index c2cf2fca31..97c4071119 100644 --- a/gdk/gdkrgba.c +++ b/gdk/gdkrgba.c @@ -32,11 +32,31 @@ * SECTION:rgba_colors * @Short_description: RGBA colors * @Title: RGBA Colors + * + * The #GdkRGBA struct is a convenient way to pass rgba colors around. + * It's based on cairo's way to deal with colors and mirros its behavior. + * All values are in the range from 0.0 to 1.0 inclusive. So the color + * (0.0, 0.0, 0.0, 0.0) represents transparent black and + * (1.0, 1.0, 1.0, 1.0) is opaque white. Other values will be clamped + * to this range when drawing. */ G_DEFINE_BOXED_TYPE (GdkRGBA, gdk_rgba, gdk_rgba_copy, gdk_rgba_free) +/** + * GdkRGBA: + * @red: The intensity of the red channel from 0.0 to 1.0 inclusive. + * @green: The intensity of the green channel from 0.0 to 1.0 inclusive. + * @blue: The intensity of the blue channel from 0.0 to 1.0 inclusive. + * @alpha: The opacity of the color from 0.0 for completely translucent to + * 1.0 for opaque. + * + * The GdkRGBA structure is used to pass around color data. When using it + * as struct members or on the stack, you want to use the struct directly + * and not allocate it. + */ + /** * gdk_rgba_copy: * @rgba: a #GdkRGBA @@ -49,7 +69,7 @@ G_DEFINE_BOXED_TYPE (GdkRGBA, gdk_rgba, * Since: 3.0 **/ GdkRGBA * -gdk_rgba_copy (GdkRGBA *rgba) +gdk_rgba_copy (const GdkRGBA *rgba) { GdkRGBA *copy; diff --git a/gdk/gdkrgba.h b/gdk/gdkrgba.h index 2b7670477a..d0d1286c7b 100644 --- a/gdk/gdkrgba.h +++ b/gdk/gdkrgba.h @@ -45,7 +45,7 @@ struct _GdkRGBA #define GDK_TYPE_RGBA (gdk_rgba_get_type ()) -GdkRGBA * gdk_rgba_copy (GdkRGBA *rgba); +GdkRGBA * gdk_rgba_copy (const GdkRGBA *rgba); void gdk_rgba_free (GdkRGBA *rgba); gboolean gdk_rgba_parse (GdkRGBA *rgba, diff --git a/gdk/gdkscreen.c b/gdk/gdkscreen.c index 57b17ff880..7658bfab9c 100644 --- a/gdk/gdkscreen.c +++ b/gdk/gdkscreen.c @@ -23,8 +23,7 @@ #include "config.h" -#include "gdkscreen.h" - +#include "gdkscreenprivate.h" #include "gdkrectangle.h" #include "gdkwindow.h" #include "gdkintl.h" @@ -304,7 +303,7 @@ gdk_screen_get_monitor_at_window (GdkScreen *screen, g_return_val_if_fail (GDK_IS_SCREEN (screen), -1); gdk_window_get_geometry (window, &win_rect.x, &win_rect.y, &win_rect.width, - &win_rect.height, NULL); + &win_rect.height); gdk_window_get_origin (window, &win_rect.x, &win_rect.y); num_monitors = gdk_screen_get_n_monitors (screen); @@ -531,3 +530,457 @@ gdk_screen_set_property (GObject *object, break; } } + +/** + * gdk_screen_get_display: + * @screen: a #GdkScreen + * + * Gets the display to which the @screen belongs. + * + * Returns: (transfer none): the display to which @screen belongs + * + * Since: 2.2 + **/ +GdkDisplay * +gdk_screen_get_display (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_display (screen); +} + + +/** + * gdk_screen_get_width: + * @screen: a #GdkScreen + * + * Gets the width of @screen in pixels + * + * Returns: the width of @screen in pixels. + * + * Since: 2.2 + **/ +gint +gdk_screen_get_width (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_width (screen); +} + +/** + * gdk_screen_get_height: + * @screen: a #GdkScreen + * + * Gets the height of @screen in pixels + * + * Returns: the height of @screen in pixels. + * + * Since: 2.2 + **/ +gint +gdk_screen_get_height (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_height (screen); +} + +/** + * gdk_screen_get_width_mm: + * @screen: a #GdkScreen + * + * Gets the width of @screen in millimeters. + * Note that on some X servers this value will not be correct. + * + * Returns: the width of @screen in millimeters. + * + * Since: 2.2 + **/ +gint +gdk_screen_get_width_mm (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_width_mm (screen); +} + +/** + * gdk_screen_get_height_mm: + * @screen: a #GdkScreen + * + * Returns the height of @screen in millimeters. + * Note that on some X servers this value will not be correct. + * + * Returns: the heigth of @screen in millimeters. + * + * Since: 2.2 + **/ +gint +gdk_screen_get_height_mm (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_height_mm (screen); +} + +/** + * gdk_screen_get_number: + * @screen: a #GdkScreen + * + * Gets the index of @screen among the screens in the display + * to which it belongs. (See gdk_screen_get_display()) + * + * Returns: the index + * + * Since: 2.2 + **/ +gint +gdk_screen_get_number (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_number (screen); +} + +/** + * gdk_screen_get_root_window: + * @screen: a #GdkScreen + * + * Gets the root window of @screen. + * + * Returns: (transfer none): the root window + * + * Since: 2.2 + **/ +GdkWindow * +gdk_screen_get_root_window (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_root_window (screen); +} + +/** + * gdk_screen_get_n_monitors: + * @screen: a #GdkScreen + * + * Returns the number of monitors which @screen consists of. + * + * Returns: number of monitors which @screen consists of + * + * Since: 2.2 + */ +gint +gdk_screen_get_n_monitors (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_n_monitors (screen); +} + +/** + * gdk_screen_get_primary_monitor: + * @screen: a #GdkScreen. + * + * Gets the primary monitor for @screen. The primary monitor + * is considered the monitor where the 'main desktop' lives. + * While normal application windows typically allow the window + * manager to place the windows, specialized desktop applications + * such as panels should place themselves on the primary monitor. + * + * If no primary monitor is configured by the user, the return value + * will be 0, defaulting to the first monitor. + * + * Returns: An integer index for the primary monitor, or 0 if none is configured. + * + * Since: 2.20 + */ +gint +gdk_screen_get_primary_monitor (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_primary_monitor (screen); +} + +/** + * gdk_screen_get_monitor_width_mm: + * @screen: a #GdkScreen + * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) + * + * Gets the width in millimeters of the specified monitor, if available. + * + * Returns: the width of the monitor, or -1 if not available + * + * Since: 2.14 + */ +gint +gdk_screen_get_monitor_width_mm (GdkScreen *screen, + gint monitor_num) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_monitor_width_mm (screen, monitor_num); +} + +/** + * gdk_screen_get_monitor_height_mm: + * @screen: a #GdkScreen + * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) + * + * Gets the height in millimeters of the specified monitor. + * + * Returns: the height of the monitor, or -1 if not available + * + * Since: 2.14 + */ +gint +gdk_screen_get_monitor_height_mm (GdkScreen *screen, + gint monitor_num) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_monitor_height_mm (screen, monitor_num); +} + +/** + * gdk_screen_get_monitor_plug_name: + * @screen: a #GdkScreen + * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) + * + * Returns the output name of the specified monitor. + * Usually something like VGA, DVI, or TV, not the actual + * product name of the display device. + * + * Returns: a newly-allocated string containing the name of the monitor, + * or %NULL if the name cannot be determined + * + * Since: 2.14 + */ +gchar * +gdk_screen_get_monitor_plug_name (GdkScreen *screen, + gint monitor_num) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_monitor_plug_name (screen, monitor_num); +} + +/** + * gdk_screen_get_monitor_geometry: + * @screen: a #GdkScreen + * @monitor_num: the monitor number, between 0 and gdk_screen_get_n_monitors (screen) + * @dest: (out) (allow-none): a #GdkRectangle to be filled with the monitor geometry + * + * Retrieves the #GdkRectangle representing the size and position of + * the individual monitor within the entire screen area. + * + * Note that the size of the entire screen area can be retrieved via + * gdk_screen_get_width() and gdk_screen_get_height(). + * + * Since: 2.2 + */ +void +gdk_screen_get_monitor_geometry (GdkScreen *screen, + gint monitor_num, + GdkRectangle *dest) +{ + GDK_SCREEN_GET_CLASS(screen)->get_monitor_geometry (screen, monitor_num, dest); +} + +/** + * gdk_screen_list_visuals: + * @screen: the relevant #GdkScreen. + * + * Lists the available visuals for the specified @screen. + * A visual describes a hardware image data format. + * For example, a visual might support 24-bit color, or 8-bit color, + * and might expect pixels to be in a certain format. + * + * Call g_list_free() on the return value when you're finished with it. + * + * Return value: (transfer container) (element-type GdkVisual): + * a list of visuals; the list must be freed, but not its contents + * + * Since: 2.2 + **/ +GList * +gdk_screen_list_visuals (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->list_visuals (screen); +} + +/** + * gdk_screen_get_system_visual: + * @screen: a #GdkScreen. + * + * Get the system's default visual for @screen. + * This is the visual for the root window of the display. + * The return value should not be freed. + * + * Return value: (transfer none): the system visual + * + * Since: 2.2 + **/ +GdkVisual * +gdk_screen_get_system_visual (GdkScreen * screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_system_visual (screen); +} + +/** + * gdk_screen_get_rgba_visual: + * @screen: a #GdkScreen + * + * Gets a visual to use for creating windows with an alpha channel. + * The windowing system on which GTK+ is running + * may not support this capability, in which case %NULL will + * be returned. Even if a non-%NULL value is returned, its + * possible that the window's alpha channel won't be honored + * when displaying the window on the screen: in particular, for + * X an appropriate windowing manager and compositing manager + * must be running to provide appropriate display. + * + * This functionality is not implemented in the Windows backend. + * + * For setting an overall opacity for a top-level window, see + * gdk_window_set_opacity(). + * + * Return value: (transfer none): a visual to use for windows with an + * alpha channel or %NULL if the capability is not available. + * + * Since: 2.8 + **/ +GdkVisual * +gdk_screen_get_rgba_visual (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_rgba_visual (screen); +} + +/** + * gdk_screen_is_composited: + * @screen: a #GdkScreen + * + * Returns whether windows with an RGBA visual can reasonably + * be expected to have their alpha channel drawn correctly on + * the screen. + * + * On X11 this function returns whether a compositing manager is + * compositing @screen. + * + * Return value: Whether windows with RGBA visuals can reasonably be + * expected to have their alpha channels drawn correctly on the screen. + * + * Since: 2.10 + **/ +gboolean +gdk_screen_is_composited (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->is_composited (screen); +} + +/** + * gdk_screen_make_display_name: + * @screen: a #GdkScreen + * + * Determines the name to pass to gdk_display_open() to get + * a #GdkDisplay with this screen as the default screen. + * + * Return value: a newly allocated string, free with g_free() + * + * Since: 2.2 + **/ +gchar * +gdk_screen_make_display_name (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->make_display_name (screen); +} + +/** + * gdk_screen_get_active_window: + * @screen: a #GdkScreen + * + * Returns the screen's currently active window. + * + * On X11, this is done by inspecting the _NET_ACTIVE_WINDOW property + * on the root window, as described in the Extended Window + * Manager Hints. If there is no currently currently active + * window, or the window manager does not support the + * _NET_ACTIVE_WINDOW hint, this function returns %NULL. + * + * On other platforms, this function may return %NULL, depending on whether + * it is implementable on that platform. + * + * The returned window should be unrefed using g_object_unref() when + * no longer needed. + * + * Return value: (transfer full): the currently active window, or %NULL. + * + * Since: 2.10 + **/ +GdkWindow * +gdk_screen_get_active_window (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_active_window (screen); +} + +/** + * gdk_screen_get_window_stack: + * @screen: a #GdkScreen + * + * Returns a #GList of #GdkWindows representing the current + * window stack. + * + * On X11, this is done by inspecting the _NET_CLIENT_LIST_STACKING + * property on the root window, as described in the Extended Window + * Manager Hints. If the window manager does not support the + * _NET_CLIENT_LIST_STACKING hint, this function returns %NULL. + * + * On other platforms, this function may return %NULL, depending on whether + * it is implementable on that platform. + * + * The returned list is newly allocated and owns references to the + * windows it contains, so it should be freed using g_list_free() and + * its windows unrefed using g_object_unref() when no longer needed. + * + * Return value: (transfer full) (element-type GdkWindow): + * a list of #GdkWindows for the current window stack, + * or %NULL. + * + * Since: 2.10 + **/ +GList * +gdk_screen_get_window_stack (GdkScreen *screen) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_window_stack (screen); +} + +/** + * gdk_screen_broadcast_client_message: + * @screen: the #GdkScreen where the event will be broadcasted. + * @event: the #GdkEvent. + * + * On X11, sends an X ClientMessage event to all toplevel windows on + * @screen. + * + * Toplevel windows are determined by checking for the WM_STATE property, + * as described in the Inter-Client Communication Conventions Manual (ICCCM). + * If no windows are found with the WM_STATE property set, the message is + * sent to all children of the root window. + * + * On Windows, broadcasts a message registered with the name + * GDK_WIN32_CLIENT_MESSAGE to all top-level windows. The amount of + * data is limited to one long, i.e. four bytes. + * + * Since: 2.2 + */ +void +gdk_screen_broadcast_client_message (GdkScreen *screen, + GdkEvent *event) +{ + return GDK_SCREEN_GET_CLASS(screen)->broadcast_client_message (screen, event); +} + +/** + * gdk_screen_get_setting: + * @screen: the #GdkScreen where the setting is located + * @name: the name of the setting + * @value: location to store the value of the setting + * + * Retrieves a desktop-wide setting such as double-click time + * for the #GdkScreen @screen. + * + * FIXME needs a list of valid settings here, or a link to + * more information. + * + * Returns: %TRUE if the setting existed and a value was stored + * in @value, %FALSE otherwise. + * + * Since: 2.2 + **/ +gboolean +gdk_screen_get_setting (GdkScreen *screen, + const gchar *name, + GValue *value) +{ + return GDK_SCREEN_GET_CLASS(screen)->get_setting (screen, name, value); +} diff --git a/gdk/gdkscreen.h b/gdk/gdkscreen.h index 208c4cdc89..dadb9666c4 100644 --- a/gdk/gdkscreen.h +++ b/gdk/gdkscreen.h @@ -1,7 +1,7 @@ /* * gdkscreen.h - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -34,47 +34,16 @@ G_BEGIN_DECLS -typedef struct _GdkScreenClass GdkScreenClass; - #define GDK_TYPE_SCREEN (gdk_screen_get_type ()) #define GDK_SCREEN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_SCREEN, GdkScreen)) -#define GDK_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_SCREEN, GdkScreenClass)) #define GDK_IS_SCREEN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_SCREEN)) -#define GDK_IS_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_SCREEN)) -#define GDK_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_SCREEN, GdkScreenClass)) -/** - * GdkScreen: - * - * This is a currently just a placeholder typedef for the first argument of - * the #GdkPointerHooks.window_at_pointer function in #GdkPointerHooks. - * It will be used when GDK gets multihead support. - * - * Since: 2.2 - */ -struct _GdkScreen -{ - GObject parent_instance; - - guint GSEAL (closed) : 1; - - cairo_font_options_t *GSEAL (font_options); - double GSEAL (resolution); /* pixels/points scale factor for fonts */ -}; - -struct _GdkScreenClass -{ - GObjectClass parent_class; - - void (*size_changed) (GdkScreen *screen); - void (*composited_changed) (GdkScreen *screen); - void (*monitors_changed) (GdkScreen *screen); -}; GType gdk_screen_get_type (void) G_GNUC_CONST; -GdkVisual* gdk_screen_get_system_visual (GdkScreen *screen); + +GdkVisual * gdk_screen_get_system_visual (GdkScreen *screen); GdkVisual * gdk_screen_get_rgba_visual (GdkScreen *screen); -gboolean gdk_screen_is_composited (GdkScreen *screen); +gboolean gdk_screen_is_composited (GdkScreen *screen); GdkWindow * gdk_screen_get_root_window (GdkScreen *screen); GdkDisplay * gdk_screen_get_display (GdkScreen *screen); @@ -91,13 +60,13 @@ gchar * gdk_screen_make_display_name (GdkScreen *screen); gint gdk_screen_get_n_monitors (GdkScreen *screen); gint gdk_screen_get_primary_monitor (GdkScreen *screen); void gdk_screen_get_monitor_geometry (GdkScreen *screen, - gint monitor_num, - GdkRectangle *dest); + gint monitor_num, + GdkRectangle *dest); gint gdk_screen_get_monitor_at_point (GdkScreen *screen, - gint x, - gint y); + gint x, + gint y); gint gdk_screen_get_monitor_at_window (GdkScreen *screen, - GdkWindow *window); + GdkWindow *window); gint gdk_screen_get_monitor_width_mm (GdkScreen *screen, gint monitor_num); gint gdk_screen_get_monitor_height_mm (GdkScreen *screen, @@ -106,20 +75,20 @@ gchar * gdk_screen_get_monitor_plug_name (GdkScreen *screen, gint monitor_num); void gdk_screen_broadcast_client_message (GdkScreen *screen, - GdkEvent *event); + GdkEvent *event); GdkScreen *gdk_screen_get_default (void); gboolean gdk_screen_get_setting (GdkScreen *screen, - const gchar *name, - GValue *value); + const gchar *name, + GValue *value); void gdk_screen_set_font_options (GdkScreen *screen, - const cairo_font_options_t *options); + const cairo_font_options_t *options); const cairo_font_options_t *gdk_screen_get_font_options (GdkScreen *screen); void gdk_screen_set_resolution (GdkScreen *screen, - gdouble dpi); + gdouble dpi); gdouble gdk_screen_get_resolution (GdkScreen *screen); GdkWindow *gdk_screen_get_active_window (GdkScreen *screen); @@ -127,4 +96,4 @@ GList *gdk_screen_get_window_stack (GdkScreen *screen); G_END_DECLS -#endif /* __GDK_SCREEN_H__ */ +#endif /* __GDK_SCREEN_H__ */ diff --git a/gdk/gdkscreenprivate.h b/gdk/gdkscreenprivate.h new file mode 100644 index 0000000000..630b112ed4 --- /dev/null +++ b/gdk/gdkscreenprivate.h @@ -0,0 +1,104 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_SCREEN_PRIVATE_H__ +#define __GDK_SCREEN_PRIVATE_H__ + +#include "gdkscreen.h" +#include "gdkvisual.h" + +G_BEGIN_DECLS + +#define GDK_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_SCREEN, GdkScreenClass)) +#define GDK_IS_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_SCREEN)) +#define GDK_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_SCREEN, GdkScreenClass)) + +typedef struct _GdkScreenClass GdkScreenClass; + +struct _GdkScreen +{ + GObject parent_instance; + + guint closed : 1; + + cairo_font_options_t *font_options; + double resolution; /* pixels/points scale factor for fonts */ +}; + +struct _GdkScreenClass +{ + GObjectClass parent_class; + + GdkDisplay * (* get_display) (GdkScreen *screen); + gint (* get_width) (GdkScreen *screen); + gint (* get_height) (GdkScreen *screen); + gint (* get_width_mm) (GdkScreen *screen); + gint (* get_height_mm) (GdkScreen *screen); + gint (* get_number) (GdkScreen *screen); + GdkWindow * (* get_root_window) (GdkScreen *screen); + gint (* get_n_monitors) (GdkScreen *screen); + gint (* get_primary_monitor) (GdkScreen *screen); + gint (* get_monitor_width_mm) (GdkScreen *screen, + gint monitor_num); + gint (* get_monitor_height_mm) (GdkScreen *screen, + gint monitor_num); + gchar * (* get_monitor_plug_name) (GdkScreen *screen, + gint monitor_num); + void (* get_monitor_geometry) (GdkScreen *screen, + gint monitor_num, + GdkRectangle *dest); + GList * (* list_visuals) (GdkScreen *screen); + GdkVisual * (* get_system_visual) (GdkScreen *screen); + GdkVisual * (* get_rgba_visual) (GdkScreen *screen); + gboolean (* is_composited) (GdkScreen *screen); + gchar * (* make_display_name) (GdkScreen *screen); + GdkWindow * (* get_active_window) (GdkScreen *screen); + GList * (* get_window_stack) (GdkScreen *screen); + void (* broadcast_client_message) (GdkScreen *screen, + GdkEvent *event); + gboolean (* get_setting) (GdkScreen *screen, + const gchar *name, + GValue *value); + gint (* visual_get_best_depth) (GdkScreen *screen); + GdkVisualType (* visual_get_best_type) (GdkScreen *screen); + GdkVisual * (* visual_get_best) (GdkScreen *screen); + GdkVisual * (* visual_get_best_with_depth) (GdkScreen *screen, + gint depth); + GdkVisual * (* visual_get_best_with_type) (GdkScreen *screen, + GdkVisualType visual_type); + GdkVisual * (* visual_get_best_with_both) (GdkScreen *screen, + gint depth, + GdkVisualType visual_type); + void (* query_depths) (GdkScreen *screen, + gint **depths, + gint *count); + void (* query_visual_types) (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count); + + + /* Signals: */ + void (*size_changed) (GdkScreen *screen); + void (*composited_changed) (GdkScreen *screen); + void (*monitors_changed) (GdkScreen *screen); +}; + +G_END_DECLS + +#endif /* __GDK_SCREEN_PRIVATE_H__ */ diff --git a/gdk/gdkselection.c b/gdk/gdkselection.c index 9468604fe6..27adfdf7d5 100644 --- a/gdk/gdkselection.c +++ b/gdk/gdkselection.c @@ -29,7 +29,7 @@ #include "gdkselection.h" #include "gdkproperty.h" -#include "gdkdisplay.h" +#include "gdkdisplayprivate.h" /** @@ -138,111 +138,196 @@ gdk_selection_send_notify (GdkNativeWindow requestor, } /** - * gdk_text_property_to_text_list: - * @encoding: an atom representing the encoding. The most common - * values for this are STRING, - * or COMPOUND_TEXT. This is - * value used as the type for the property. - * @format: the format of the property. - * @text: the text data. - * @length: the length of the property, in items. - * @list: location to store a terminated array of strings - * in the encoding of the current locale. This - * array should be freed using gdk_free_text_list(). + * gdk_selection_owner_set_for_display: + * @display: the #GdkDisplay + * @owner: a #GdkWindow or %NULL to indicate that the owner for + * the given should be unset + * @selection: an atom identifying a selection + * @time_: timestamp to use when setting the selection + * If this is older than the timestamp given last time the owner was + * set for the given selection, the request will be ignored + * @send_event: if %TRUE, and the new owner is different from the current + * owner, the current owner will be sent a SelectionClear event * - * Converts a text string from the encoding as it is stored in - * a property into an array of strings in the encoding of - * the current local. (The elements of the array represent - * the nul-separated elements of the original text string.) + * Sets the #GdkWindow @owner as the current owner of the selection @selection. * - * Returns: the number of strings stored in @list, or 0, - * if the conversion failed. + * Returns: %TRUE if the selection owner was successfully changed to owner, + * otherwise %FALSE. + * + * Since: 2.2 */ -gint -gdk_text_property_to_text_list (GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gboolean +gdk_selection_owner_set_for_display (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event) { - return gdk_text_property_to_text_list_for_display (gdk_display_get_default (), - encoding, format, text, length, list); + g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); + g_return_val_if_fail (selection != GDK_NONE, FALSE); + + return GDK_DISPLAY_GET_CLASS (display) + ->set_selection_owner (display, owner, selection, time, send_event); } /** - * gdk_text_property_to_utf8_list: + * gdk_selection_owner_get_for_display: + * @display: a #GdkDisplay + * @selection: an atom indentifying a selection + * + * Determine the owner of the given selection. + * + * Note that the return value may be owned by a different + * process if a foreign window was previously created for that + * window, but a new foreign window will never be created by this call. + * + * Returns: (transfer none): if there is a selection owner for this window, + * and it is a window known to the current process, the #GdkWindow that + * owns the selection, otherwise %NULL. + * + * Since: 2.2 + */ +GdkWindow * +gdk_selection_owner_get_for_display (GdkDisplay *display, + GdkAtom selection) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + g_return_val_if_fail (selection != GDK_NONE, NULL); + + return GDK_DISPLAY_GET_CLASS (display)->get_selection_owner (display, selection); +} + +/** + * gdk_selection_send_notify_for_display: + * @display: the #GdkDisplay where @requestor is realized + * @requestor: window to which to deliver response + * @selection: selection that was requested + * @target: target that was selected + * @property: property in which the selection owner stored the data, + * or %GDK_NONE to indicate that the request was rejected + * @time_: timestamp + * + * Send a response to SelectionRequest event. + * + * Since: 2.2 + */ +void +gdk_selection_send_notify_for_display (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time_) +{ + g_return_if_fail (GDK_IS_DISPLAY (display)); + + GDK_DISPLAY_GET_CLASS (display) + ->send_selection_notify (display, requestor, selection,target, property, time_); +} + +/** + * gdk_selection_property_get: + * @requestor: the window on which the data is stored + * @data: location to store a pointer to the retrieved data. + If the retrieval failed, %NULL we be stored here, otherwise, it + will be non-%NULL and the returned data should be freed with g_free() + when you are finished using it. The length of the + allocated memory is one more than the length + of the returned data, and the final byte will always + be zero, to ensure nul-termination of strings + * @prop_type: location to store the type of the property + * @prop_format: location to store the format of the property + * + * Retrieves selection data that was stored by the selection + * data in response to a call to gdk_selection_convert(). This function + * will not be used by applications, who should use the #GtkClipboard + * API instead. + * + * Return value: the length of the retrieved data. + */ +gint +gdk_selection_property_get (GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format) +{ + GdkDisplay *display; + + g_return_val_if_fail (GDK_IS_WINDOW (requestor), 0); + + display = gdk_window_get_display (requestor); + + return GDK_DISPLAY_GET_CLASS (display) + ->get_selection_property (display, requestor, data, ret_type, ret_format); +} + +void +gdk_selection_convert (GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time) +{ + GdkDisplay *display; + + g_return_if_fail (selection != GDK_NONE); + + display = gdk_window_get_display (requestor); + + GDK_DISPLAY_GET_CLASS (display) + ->convert_selection (display, requestor, selection, target, time); +} + +/** + * gdk_text_property_to_utf8_list_for_display: + * @display: a #GdkDisplay * @encoding: an atom representing the encoding of the text * @format: the format of the property * @text: the text to convert * @length: the length of @text, in bytes - * @list: (allow-none): location to store the list of strings or %NULL. The + * @list: location to store the list of strings or %NULL. The * list should be freed with g_strfreev(). - * - * Convert a text property in the giving encoding to - * a list of UTF-8 strings. - * - * Return value: the number of strings in the resulting - * list. - **/ -gint -gdk_text_property_to_utf8_list (GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) -{ - return gdk_text_property_to_utf8_list_for_display (gdk_display_get_default (), - encoding, format, text, length, list); -} - -/** - * gdk_string_to_compound_text: - * @str: a nul-terminated string. - * @encoding: location to store the encoding atom (to be used as - * the type for the property). - * @format: location to store the format for the property. - * @ctext: location to store newly allocated data for the property. - * @length: location to store the length of @ctext in items. * - * Converts a string from the encoding of the current locale - * into a form suitable for storing in a window property. + * Converts a text property in the given encoding to + * a list of UTF-8 strings. * - * Returns: 0 upon sucess, non-zero upon failure. + * Return value: the number of strings in the resulting list + * + * Since: 2.2 */ gint -gdk_string_to_compound_text (const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) +gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { - return gdk_string_to_compound_text_for_display (gdk_display_get_default (), - str, encoding, format, - ctext, length); + g_return_val_if_fail (text != NULL, 0); + g_return_val_if_fail (length >= 0, 0); + g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); + + return GDK_DISPLAY_GET_CLASS (display) + ->text_property_to_utf8_list (display, encoding, format, text, length, list); } /** - * gdk_utf8_to_compound_text: - * @str: a UTF-8 string - * @encoding: location to store resulting encoding - * @format: location to store format of the result - * @ctext: location to store the data of the result - * @length: location to store the length of the data - * stored in @ctext - * - * Convert from UTF-8 to compound text. - * - * Return value: %TRUE if the conversion succeeded, otherwise - * false. + * gdk_utf8_to_string_target: + * @str: a UTF-8 string + * + * Converts an UTF-8 string into the best possible representation + * as a STRING. The representation of characters not in STRING + * is not specified; it may be as pseudo-escape sequences + * \x{ABCD}, or it may be in some other form of approximation. + * + * Return value: the newly-allocated string, or %NULL if the + * conversion failed. (It should not fail for + * any properly formed UTF-8 string unless system + * limits like memory or file descriptors are exceeded.) **/ -gboolean -gdk_utf8_to_compound_text (const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) +gchar * +gdk_utf8_to_string_target (const gchar *str) { - return gdk_utf8_to_compound_text_for_display (gdk_display_get_default (), - str, encoding, format, - ctext, length); + GdkDisplay *display = gdk_display_get_default (); + + return GDK_DISPLAY_GET_CLASS (display)->utf8_to_string_target (display, str); } diff --git a/gdk/gdkspawn.h b/gdk/gdkspawn.h deleted file mode 100644 index cb7a2eac16..0000000000 --- a/gdk/gdkspawn.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION) -#error "Only can be included directly." -#endif - -#ifndef __GDK_SPAWN_H__ -#define __GDK_SPAWN_H__ - -#include - -G_BEGIN_DECLS - -gboolean gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error); - -gboolean gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error); - -gboolean gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error); - -G_END_DECLS - -#endif /* __GDK_SPAWN_H__ */ diff --git a/gdk/gdktypes.h b/gdk/gdktypes.h index 865a7f5226..d655ff97da 100644 --- a/gdk/gdktypes.h +++ b/gdk/gdktypes.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -43,7 +43,7 @@ * itself, but also occasionally when compiling programs that use GDK * (or GTK). One such setting is what windowing API backend is in use. */ -#include +#include /* some common magic values */ @@ -69,7 +69,7 @@ G_BEGIN_DECLS /* Type definitions for the basic structures. */ -typedef struct _GdkPoint GdkPoint; +typedef struct _GdkPoint GdkPoint; /** * GdkRectangle: @@ -77,7 +77,7 @@ typedef struct _GdkPoint GdkPoint; * Defines the position and size of a rectangle. It is identical to * #cairo_rectangle_int_t. */ -typedef cairo_rectangle_int_t GdkRectangle; +typedef cairo_rectangle_int_t GdkRectangle; /** * GdkAtom: @@ -131,22 +131,22 @@ typedef gpointer GdkNativeWindow; #else typedef guint32 GdkNativeWindow; #endif - -/* Forward declarations of commonly used types - */ -typedef struct _GdkColor GdkColor; -typedef struct _GdkRGBA GdkRGBA; -typedef struct _GdkCursor GdkCursor; -typedef struct _GdkVisual GdkVisual; -/** - * GdkWindow: - * - * An opaque structure representing an onscreen drawable. - */ +/* Forward declarations of commonly used types */ +typedef struct _GdkColor GdkColor; +typedef struct _GdkRGBA GdkRGBA; +typedef struct _GdkCursor GdkCursor; +typedef struct _GdkVisual GdkVisual; +typedef struct _GdkDevice GdkDevice; +typedef struct _GdkDragContext GdkDragContext; + +typedef struct _GdkDisplayManager GdkDisplayManager; +typedef struct _GdkDeviceManager GdkDeviceManager; +typedef struct _GdkDisplay GdkDisplay; +typedef struct _GdkScreen GdkScreen; typedef struct _GdkWindow GdkWindow; -typedef struct _GdkDisplay GdkDisplay; -typedef struct _GdkScreen GdkScreen; +typedef struct _GdkKeymap GdkKeymap; +typedef struct _GdkAppLaunchContext GdkAppLaunchContext; /** * GdkByteOrder: @@ -210,13 +210,13 @@ typedef enum typedef enum { GDK_SHIFT_MASK = 1 << 0, - GDK_LOCK_MASK = 1 << 1, + GDK_LOCK_MASK = 1 << 1, GDK_CONTROL_MASK = 1 << 2, - GDK_MOD1_MASK = 1 << 3, - GDK_MOD2_MASK = 1 << 4, - GDK_MOD3_MASK = 1 << 5, - GDK_MOD4_MASK = 1 << 6, - GDK_MOD5_MASK = 1 << 7, + GDK_MOD1_MASK = 1 << 3, + GDK_MOD2_MASK = 1 << 4, + GDK_MOD3_MASK = 1 << 5, + GDK_MOD4_MASK = 1 << 6, + GDK_MOD5_MASK = 1 << 7, GDK_BUTTON1_MASK = 1 << 8, GDK_BUTTON2_MASK = 1 << 9, GDK_BUTTON3_MASK = 1 << 10, @@ -238,11 +238,11 @@ typedef enum typedef enum { - GDK_OK = 0, - GDK_ERROR = -1, + GDK_OK = 0, + GDK_ERROR = -1, GDK_ERROR_PARAM = -2, GDK_ERROR_FILE = -3, - GDK_ERROR_MEM = -4 + GDK_ERROR_MEM = -4 } GdkStatus; /** diff --git a/gdk/gdkvisual.c b/gdk/gdkvisual.c index cba4a7b3d3..c1b0160f2e 100644 --- a/gdk/gdkvisual.c +++ b/gdk/gdkvisual.c @@ -1,7 +1,7 @@ /* GDK - The GIMP Drawing Kit * gdkvisual.c - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -23,9 +23,8 @@ #include "config.h" -#include "gdkvisual.h" - -#include "gdkscreen.h" +#include "gdkvisualprivate.h" +#include "gdkscreenprivate.h" /** @@ -33,31 +32,52 @@ * @Short_description: Low-level display hardware information * @Title: Visuals * - * A #GdkVisual describes a particular video hardware display format. It includes - * information about the number of bits used for each color, the way the bits are - * translated into an RGB value for display, and the way the bits are stored in - * memory. For example, a piece of display hardware might support 24-bit color, - * 16-bit color, or 8-bit color; meaning 24/16/8-bit pixel sizes. For a given - * pixel size, pixels can be in different formats; for example the "red" element - * of an RGB pixel may be in the top 8 bits of the pixel, or may be in the lower - * 4 bits. + * A #GdkVisual describes a particular video hardware display format. + * It includes information about the number of bits used for each color, + * the way the bits are translated into an RGB value for display, and + * the way the bits are stored in memory. For example, a piece of display + * hardware might support 24-bit color, 16-bit color, or 8-bit color; + * meaning 24/16/8-bit pixel sizes. For a given pixel size, pixels can + * be in different formats; for example the "red" element of an RGB pixel + * may be in the top 8 bits of the pixel, or may be in the lower 4 bits. * * There are several standard visuals. The visual returned by * gdk_screen_get_system_visual() is the system's default visual. * - * A number of functions are provided for determining the "best" available visual. - * For the purposes of making this determination, higher bit depths are considered - * better, and for visuals of the same bit depth, %GDK_VISUAL_PSEUDO_COLOR is - * preferred at 8bpp, otherwise, the visual types are ranked in the order of - * (highest to lowest) %GDK_VISUAL_DIRECT_COLOR, %GDK_VISUAL_TRUE_COLOR, - * %GDK_VISUAL_PSEUDO_COLOR, %GDK_VISUAL_STATIC_COLOR, %GDK_VISUAL_GRAYSCALE, - * then %GDK_VISUAL_STATIC_GRAY. + * A number of functions are provided for determining the "best" available + * visual. For the purposes of making this determination, higher bit depths + * are considered better, and for visuals of the same bit depth, + * %GDK_VISUAL_PSEUDO_COLOR is preferred at 8bpp, otherwise, the visual + * types are ranked in the order of(highest to lowest) + * %GDK_VISUAL_DIRECT_COLOR, %GDK_VISUAL_TRUE_COLOR, + * %GDK_VISUAL_PSEUDO_COLOR, %GDK_VISUAL_STATIC_COLOR, + * %GDK_VISUAL_GRAYSCALE, then %GDK_VISUAL_STATIC_GRAY. */ +G_DEFINE_TYPE (GdkVisual, gdk_visual, G_TYPE_OBJECT) + +static void +gdk_visual_init (GdkVisual *visual) +{ +} + +static void +gdk_visual_finalize (GObject *object) +{ + G_OBJECT_CLASS (gdk_visual_parent_class)->finalize (object); +} + +static void +gdk_visual_class_init (GdkVisualClass *visual_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (visual_class); + + object_class->finalize = gdk_visual_finalize; +} /** * gdk_list_visuals: - * + * * Lists the available visuals for the default screen. * (See gdk_screen_list_visuals()) * A visual describes a hardware image data format. @@ -65,10 +85,10 @@ * and might expect pixels to be in a certain format. * * Call g_list_free() on the return value when you're finished with it. - * + * * Return value: (transfer container) (element-type GdkVisual): * a list of visuals; the list must be freed, but not its contents - **/ + */ GList* gdk_list_visuals (void) { @@ -77,19 +97,168 @@ gdk_list_visuals (void) /** * gdk_visual_get_system: - * + * * Get the system's default visual for the default GDK screen. * This is the visual for the root window of the display. * The return value should not be freed. - * + * * Return value: (transfer none): system visual - **/ + */ GdkVisual* gdk_visual_get_system (void) { return gdk_screen_get_system_visual (gdk_screen_get_default()); } +/** + * gdk_visual_get_best_depth: + * + * Get the best available depth for the default GDK screen. "Best" + * means "largest," i.e. 32 preferred over 24 preferred over 8 bits + * per pixel. + * + * Return value: best available depth + */ +gint +gdk_visual_get_best_depth (void) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best_depth (screen); +} + +/** + * gdk_visual_get_best_type: + * + * Return the best available visual type for the default GDK screen. + * + * Return value: best visual type + */ +GdkVisualType +gdk_visual_get_best_type (void) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best_type (screen); +} + +/** + * gdk_visual_get_best: + * + * Get the visual with the most available colors for the default + * GDK screen. The return value should not be freed. + * + * Return value: (transfer none): best visual + */ +GdkVisual* +gdk_visual_get_best (void) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best (screen); +} + +/** + * gdk_visual_get_best_with_depth: + * @depth: a bit depth + * + * Get the best visual with depth @depth for the default GDK screen. + * Color visuals and visuals with mutable colormaps are preferred + * over grayscale or fixed-colormap visuals. The return value should + * not be freed. %NULL may be returned if no visual supports @depth. + * + * Return value: (transfer none): best visual for the given depth + */ +GdkVisual* +gdk_visual_get_best_with_depth (gint depth) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best_with_depth (screen, depth); +} + +/** + * gdk_visual_get_best_with_type: + * @visual_type: a visual type + * + * Get the best visual of the given @visual_type for the default GDK screen. + * Visuals with higher color depths are considered better. The return value + * should not be freed. %NULL may be returned if no visual has type + * @visual_type. + * + * Return value: (transfer none): best visual of the given type + */ +GdkVisual* +gdk_visual_get_best_with_type (GdkVisualType visual_type) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best_with_type (screen, + visual_type); +} + +/** + * gdk_visual_get_best_with_both: + * @depth: a bit depth + * @visual_type: a visual type + * + * Combines gdk_visual_get_best_with_depth() and + * gdk_visual_get_best_with_type(). + * + * Return value: (transfer none): best visual with both @depth and + * @visual_type, or %NULL if none + */ +GdkVisual* +gdk_visual_get_best_with_both (gint depth, + GdkVisualType visual_type) +{ + GdkScreen *screen = gdk_screen_get_default(); + + return GDK_SCREEN_GET_CLASS(screen)->visual_get_best_with_both (screen, depth, visual_type); +} + +/** + * gdk_query_depths: + * @depths: (out) (array): return location for available depths + * @count: (out): return location for number of available depths + * + * This function returns the available bit depths for the default + * screen. It's equivalent to listing the visuals + * (gdk_list_visuals()) and then looking at the depth field in each + * visual, removing duplicates. + * + * The array returned by this function should not be freed. + */ +void +gdk_query_depths (gint **depths, + gint *count) +{ + GdkScreen *screen = gdk_screen_get_default(); + + GDK_SCREEN_GET_CLASS(screen)->query_depths (screen, depths, count); +} + +/** + * gdk_query_visual_types: + * @visual_types: return location for the available visual types + * @count: return location for the number of available visual types + * + * This function returns the available visual types for the default + * screen. It's equivalent to listing the visuals + * (gdk_list_visuals()) and then looking at the type field in each + * visual, removing duplicates. + * + * The array returned by this function should not be freed. + */ +void +gdk_query_visual_types (GdkVisualType **visual_types, + gint *count) +{ + GdkScreen *screen = gdk_screen_get_default(); + + GDK_SCREEN_GET_CLASS(screen)->query_visual_types (screen, visual_types, count); +} + /** * gdk_visual_get_visual_type: * @visual: A #GdkVisual. @@ -182,15 +351,15 @@ gdk_visual_get_bits_per_rgb (GdkVisual *visual) /** * gdk_visual_get_red_pixel_details: - * @visual: A #GdkVisual. - * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL. - * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. - * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. + * @visual: A #GdkVisual + * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL + * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL + * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL * * Obtains values that are needed to calculate red pixel values in TrueColor - * and DirectColor. The "mask" is the significant bits within the pixel. + * and DirectColor. The "mask" is the significant bits within the pixel. * The "shift" is the number of bits left we must shift a primary for it - * to be in position (according to the "mask"). Finally, "precision" refers + * to be in position (according to the "mask"). Finally, "precision" refers * to how much precision the pixel value contains for a particular primary. * * Since: 2.22 @@ -216,14 +385,14 @@ gdk_visual_get_red_pixel_details (GdkVisual *visual, /** * gdk_visual_get_green_pixel_details: * @visual: a #GdkVisual - * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL. - * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. - * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. + * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL + * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL + * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL * * Obtains values that are needed to calculate green pixel values in TrueColor - * and DirectColor. The "mask" is the significant bits within the pixel. + * and DirectColor. The "mask" is the significant bits within the pixel. * The "shift" is the number of bits left we must shift a primary for it - * to be in position (according to the "mask"). Finally, "precision" refers + * to be in position (according to the "mask"). Finally, "precision" refers * to how much precision the pixel value contains for a particular primary. * * Since: 2.22 @@ -249,14 +418,14 @@ gdk_visual_get_green_pixel_details (GdkVisual *visual, /** * gdk_visual_get_blue_pixel_details: * @visual: a #GdkVisual - * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL. - * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. - * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL. + * @mask: (out) (allow-none): A pointer to a #guint32 to be filled in, or %NULL + * @shift: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL + * @precision: (out) (allow-none): A pointer to a #gint to be filled in, or %NULL * * Obtains values that are needed to calculate blue pixel values in TrueColor - * and DirectColor. The "mask" is the significant bits within the pixel. + * and DirectColor. The "mask" is the significant bits within the pixel. * The "shift" is the number of bits left we must shift a primary for it - * to be in position (according to the "mask"). Finally, "precision" refers + * to be in position (according to the "mask"). Finally, "precision" refers * to how much precision the pixel value contains for a particular primary. * * Since: 2.22 @@ -278,3 +447,21 @@ gdk_visual_get_blue_pixel_details (GdkVisual *visual, if (precision) *precision = visual->blue_prec; } + +/** + * gdk_visual_get_screen: + * @visual: a #GdkVisual + * + * Gets the screen to which this visual belongs + * + * Return value: (transfer none): the screen to which this visual belongs. + * + * Since: 2.2 + */ +GdkScreen * +gdk_visual_get_screen (GdkVisual *visual) +{ + g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL); + + return visual->screen; +} diff --git a/gdk/gdkvisual.h b/gdk/gdkvisual.h index 5fa4ad919c..1d21bcf248 100644 --- a/gdk/gdkvisual.h +++ b/gdk/gdkvisual.h @@ -37,13 +37,7 @@ G_BEGIN_DECLS #define GDK_TYPE_VISUAL (gdk_visual_get_type ()) #define GDK_VISUAL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_VISUAL, GdkVisual)) -#define GDK_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_VISUAL, GdkVisualClass)) #define GDK_IS_VISUAL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_VISUAL)) -#define GDK_IS_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_VISUAL)) -#define GDK_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_VISUAL, GdkVisualClass)) - -typedef struct _GdkVisualPrivate GdkVisualPrivate; -typedef struct _GdkVisualClass GdkVisualClass; /** * GdkVisualType: @@ -84,75 +78,29 @@ typedef enum * * The #GdkVisual structure contains information about * a particular visual. - * - * - * Constructing a pixel value from components - * - * guint - * pixel_from_rgb (GdkVisual *visual, - * guchar r, guchar b, guchar g) - * { - * return ((r >> (16 - visual->red_prec)) << visual->red_shift) | - * ((g >> (16 - visual->green_prec)) << visual->green_shift) | - * ((r >> (16 - visual->blue_prec)) << visual->blue_shift); - * } - * - * */ -struct _GdkVisual -{ - /*< private >*/ - GObject parent_instance; - - GdkVisualType GSEAL (type); /* Type of visual this is (PseudoColor, TrueColor, etc) */ - gint GSEAL (depth); /* Bit depth of this visual */ - GdkByteOrder GSEAL (byte_order); - gint GSEAL (colormap_size); /* Size of a colormap for this visual */ - gint GSEAL (bits_per_rgb); /* Number of significant bits per red, green and blue. */ - - /* The red, green and blue masks, shifts and precisions refer - * to value needed to calculate pixel values in TrueColor and DirectColor - * visuals. The "mask" is the significant bits within the pixel. The - * "shift" is the number of bits left we must shift a primary for it - * to be in position (according to the "mask"). "prec" refers to how - * much precision the pixel value contains for a particular primary. - */ - guint32 GSEAL (red_mask); - gint GSEAL (red_shift); - gint GSEAL (red_prec); - - guint32 GSEAL (green_mask); - gint GSEAL (green_shift); - gint GSEAL (green_prec); - - guint32 GSEAL (blue_mask); - gint GSEAL (blue_shift); - gint GSEAL (blue_prec); - - GdkVisualPrivate *priv; -}; GType gdk_visual_get_type (void) G_GNUC_CONST; #ifndef GDK_MULTIHEAD_SAFE -gint gdk_visual_get_best_depth (void); -GdkVisualType gdk_visual_get_best_type (void); -GdkVisual* gdk_visual_get_system (void); -GdkVisual* gdk_visual_get_best (void); -GdkVisual* gdk_visual_get_best_with_depth (gint depth); +gint gdk_visual_get_best_depth (void); +GdkVisualType gdk_visual_get_best_type (void); +GdkVisual* gdk_visual_get_system (void); +GdkVisual* gdk_visual_get_best (void); +GdkVisual* gdk_visual_get_best_with_depth (gint depth); GdkVisual* gdk_visual_get_best_with_type (GdkVisualType visual_type); -GdkVisual* gdk_visual_get_best_with_both (gint depth, - GdkVisualType visual_type); +GdkVisual* gdk_visual_get_best_with_both (gint depth, + GdkVisualType visual_type); -void gdk_query_depths (gint **depths, - gint *count); +void gdk_query_depths (gint **depths, + gint *count); void gdk_query_visual_types (GdkVisualType **visual_types, - gint *count); + gint *count); GList* gdk_list_visuals (void); #endif -GdkScreen *gdk_visual_get_screen (GdkVisual *visual); +GdkScreen *gdk_visual_get_screen (GdkVisual *visual); GdkVisualType gdk_visual_get_visual_type (GdkVisual *visual); gint gdk_visual_get_depth (GdkVisual *visual); diff --git a/gdk/gdkvisualprivate.h b/gdk/gdkvisualprivate.h new file mode 100644 index 0000000000..075916a6f2 --- /dev/null +++ b/gdk/gdkvisualprivate.h @@ -0,0 +1,66 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_VISUAL_PRIVATE_H__ +#define __GDK_VISUAL_PRIVATE_H__ + +#include "gdkvisual.h" + +G_BEGIN_DECLS + +#define GDK_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_VISUAL, GdkVisualClass)) +#define GDK_IS_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_VISUAL)) +#define GDK_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_VISUAL, GdkVisualClass)) + +typedef struct _GdkVisualClass GdkVisualClass; + +struct _GdkVisual +{ + GObject parent_instance; + + /*< private >*/ + GdkVisualType type; + gint depth; + GdkByteOrder byte_order; + gint colormap_size; + gint bits_per_rgb; + + guint32 red_mask; + gint red_shift; + gint red_prec; + + guint32 green_mask; + gint green_shift; + gint green_prec; + + guint32 blue_mask; + gint blue_shift; + gint blue_prec; + + GdkScreen *screen; +}; + +struct _GdkVisualClass +{ + GObjectClass parent_class; +}; + +G_END_DECLS + +#endif diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 4307f34ae9..30d5c8d52c 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -31,17 +31,14 @@ #include "gdkwindow.h" -#ifdef GDK_WINDOWING_X11 -#include "x11/gdkx.h" /* For workaround */ -#endif - #include "gdkrectangle.h" #include "gdkinternals.h" #include "gdkintl.h" -#include "gdkscreen.h" +#include "gdkscreenprivate.h" +#include "gdkdisplayprivate.h" #include "gdkdeviceprivate.h" +#include "gdkvisualprivate.h" #include "gdkmarshalers.h" -#include "gdkscreen.h" #include "gdkwindowimpl.h" #include @@ -222,8 +219,6 @@ static void gdk_window_drop_cairo_surface (GdkWindow *private); static void gdk_window_free_paint_stack (GdkWindow *window); -static void gdk_window_init (GdkWindow *window); -static void gdk_window_class_init (GdkWindowClass *klass); static void gdk_window_finalize (GObject *object); static void gdk_window_set_property (GObject *object, @@ -276,22 +271,7 @@ new_region_tag (void) return ++tag; } -GType -gdk_window_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - object_type = g_type_register_static_simple (G_TYPE_OBJECT, - "GdkWindow", - sizeof (GdkWindowClass), - (GClassInitFunc) gdk_window_class_init, - sizeof (GdkWindow), - (GInstanceInitFunc) gdk_window_init, - 0); - - return object_type; -} +G_DEFINE_ABSTRACT_TYPE (GdkWindow, gdk_window, G_TYPE_OBJECT) GType _gdk_paintable_get_type (void) @@ -389,11 +369,11 @@ gdk_window_class_init (GdkWindowClass *klass) */ g_object_class_install_property (object_class, PROP_CURSOR, - g_param_spec_boxed ("cursor", - P_("Cursor"), - P_("Cursor"), - GDK_TYPE_CURSOR, - G_PARAM_READWRITE)); + g_param_spec_object ("cursor", + P_("Cursor"), + P_("Cursor"), + GDK_TYPE_CURSOR, + G_PARAM_READWRITE)); /** * GdkWindow::pick-embedded-child: @@ -568,7 +548,7 @@ gdk_window_finalize (GObject *object) cairo_region_destroy (window->input_shape); if (window->cursor) - gdk_cursor_unref (window->cursor); + g_object_unref (window->cursor); if (window->device_cursor) g_hash_table_destroy (window->device_cursor); @@ -576,6 +556,9 @@ gdk_window_finalize (GObject *object) if (window->device_events) g_hash_table_destroy (window->device_events); + if (window->source_event_masks) + g_hash_table_destroy (window->source_event_masks); + if (window->devices_inside) g_list_free (window->devices_inside); @@ -593,7 +576,7 @@ gdk_window_set_property (GObject *object, switch (prop_id) { case PROP_CURSOR: - gdk_window_set_cursor (window, g_value_get_boxed (value)); + gdk_window_set_cursor (window, g_value_get_object (value)); break; default: @@ -613,7 +596,7 @@ gdk_window_get_property (GObject *object, switch (prop_id) { case PROP_CURSOR: - g_value_set_boxed (value, gdk_window_get_cursor (window)); + g_value_set_object (value, gdk_window_get_cursor (window)); break; default: @@ -1272,6 +1255,7 @@ gdk_window_new (GdkWindow *parent, { GdkWindow *window; GdkScreen *screen; + GdkDisplay *display; int x, y; gboolean native; GdkEventMask event_mask; @@ -1306,7 +1290,9 @@ gdk_window_new (GdkWindow *parent, return NULL; } - window = g_object_new (GDK_TYPE_WINDOW, NULL); + display = gdk_screen_get_display (screen); + + window = _gdk_display_create_window (display); /* Windows with a foreign parent are treated as if they are children * of the root window, except for actual creation. @@ -1335,19 +1321,6 @@ gdk_window_new (GdkWindow *parent, window->width = (attributes->width > 1) ? (attributes->width) : (1); window->height = (attributes->height > 1) ? (attributes->height) : (1); -#ifdef GDK_WINDOWING_X11 - /* Work around a bug where Xorg refuses to map toplevel InputOnly windows - * from an untrusted client: http://bugs.freedesktop.org/show_bug.cgi?id=6988 - */ - if (attributes->wclass == GDK_INPUT_ONLY && - window->parent->window_type == GDK_WINDOW_ROOT && - !G_LIKELY (GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (parent))->trusted_client)) - { - g_warning ("Coercing GDK_INPUT_ONLY toplevel window to GDK_INPUT_OUTPUT to work around bug in Xorg server"); - attributes->wclass = GDK_INPUT_OUTPUT; - } -#endif - if (attributes->wclass == GDK_INPUT_ONLY) { /* Backwards compatiblity - we've always ignored @@ -1403,8 +1376,8 @@ gdk_window_new (GdkWindow *parent, if (window->parent) window->parent->children = g_list_prepend (window->parent->children, window); - window->device_cursor = g_hash_table_new_full (NULL, NULL, NULL, - (GDestroyNotify) gdk_cursor_unref); + window->device_cursor = g_hash_table_new_full (NULL, NULL, + NULL, g_object_unref); native = _gdk_native_windows; /* Default */ if (window->parent->window_type == GDK_WINDOW_ROOT) @@ -1424,7 +1397,7 @@ gdk_window_new (GdkWindow *parent, event_mask = get_native_event_mask (window); /* Create the impl */ - _gdk_window_impl_new (window, real_parent, screen, event_mask, attributes, attributes_mask); + _gdk_display_create_window_impl (display, window, real_parent, screen, event_mask, attributes, attributes_mask); window->impl_window = window; /* This will put the native window topmost in the native parent, which may @@ -1696,67 +1669,6 @@ gdk_window_reparent (GdkWindow *window, _gdk_synthesize_crossing_events_for_geometry_change (window); } -static gboolean -temporary_disable_extension_events (GdkWindow*window) -{ - GdkWindow*child; - GList *l; - gboolean res; - - if (window->extension_events != 0) - { - g_object_set_data (G_OBJECT (window), - "gdk-window-extension-events", - GINT_TO_POINTER (window->extension_events)); - gdk_input_set_extension_events ((GdkWindow *)window, 0, - GDK_EXTENSION_EVENTS_NONE); - } - else - res = FALSE; - - for (l = window->children; l != NULL; l = l->next) - { - child = l->data; - - if (window->impl_window == child->impl_window) - res |= temporary_disable_extension_events (child); - } - - return res; -} - -static void -reenable_extension_events (GdkWindow *window) -{ - GdkWindow *child; - GList *l; - int mask; - - mask = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), - "gdk-window-extension-events")); - - if (mask != 0) - { - /* We don't have the mode here, so we pass in cursor. - This works with the current code since mode is not - stored except as part of the mask, and cursor doesn't - change the mask. */ - gdk_input_set_extension_events ((GdkWindow *)window, mask, - GDK_EXTENSION_EVENTS_CURSOR); - g_object_set_data (G_OBJECT (window), - "gdk-window-extension-events", - NULL); - } - - for (l = window->children; l != NULL; l = l->next) - { - child = l->data; - - if (window->impl_window == child->impl_window) - reenable_extension_events (window); - } -} - /** * gdk_window_ensure_native: * @window: a #GdkWindow @@ -1777,11 +1689,11 @@ gdk_window_ensure_native (GdkWindow *window) { GdkWindow *impl_window; GdkWindowImpl *new_impl, *old_impl; + GdkDisplay *display; GdkScreen *screen; GdkWindow *above; GList listhead; GdkWindowImplClass *impl_class; - gboolean disabled_extension_events; g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE); @@ -1800,21 +1712,17 @@ gdk_window_ensure_native (GdkWindow *window) /* Need to create a native window */ - /* First we disable any extension events on the window or its - descendants to handle the native input window moving */ - disabled_extension_events = FALSE; - if (impl_window->input_window) - disabled_extension_events = temporary_disable_extension_events (window); - gdk_window_drop_cairo_surface (window); screen = gdk_window_get_screen (window); + display = gdk_screen_get_display (screen); old_impl = window->impl; - _gdk_window_impl_new (window, window->parent, - screen, - get_native_event_mask (window), - NULL, 0); + _gdk_display_create_window_impl (display, + window, window->parent, + screen, + get_native_event_mask (window), + NULL, 0); new_impl = window->impl; window->impl = old_impl; @@ -1845,36 +1753,68 @@ gdk_window_ensure_native (GdkWindow *window) reparent_to_impl (window); if (!window->input_only) - { - impl_class->set_background (window, window->background); - } + impl_class->set_background (window, window->background); impl_class->input_shape_combine_region (window, - window->input_shape, - 0, 0); + window->input_shape, + 0, 0); if (gdk_window_is_viewable (window)) impl_class->show (window, FALSE); - if (disabled_extension_events) - reenable_extension_events (window); - return TRUE; } +/** + * _gdk_event_filter_unref: + * @window: A #GdkWindow, or %NULL to be the global window + * @filter: A window filter + * + * Release a reference to @filter. Note this function may + * mutate the list storage, so you need to handle this + * if iterating over a list of filters. + */ +void +_gdk_event_filter_unref (GdkWindow *window, + GdkEventFilter *filter) +{ + GList **filters; + GList *tmp_list; + + if (window == NULL) + filters = &_gdk_default_filters; + else + filters = &window->filters; + + tmp_list = *filters; + while (tmp_list) + { + GdkEventFilter *iter_filter = tmp_list->data; + GList *node; + + node = tmp_list; + tmp_list = tmp_list->next; + + if (iter_filter != filter) + continue; + + g_assert (iter_filter->ref_count > 0); + + filter->ref_count--; + if (filter->ref_count != 0) + continue; + + *filters = g_list_remove_link (*filters, node); + g_free (filter); + g_list_free_1 (node); + } +} + static void window_remove_filters (GdkWindow *window) { - if (window->filters) - { - GList *tmp_list; - - for (tmp_list = window->filters; tmp_list; tmp_list = tmp_list->next) - g_free (tmp_list->data); - - g_list_free (window->filters); - window->filters = NULL; - } + while (window->filters) + _gdk_event_filter_unref (window, window->filters->data); } static void @@ -1967,7 +1907,12 @@ _gdk_window_destroy_hierarchy (GdkWindow *window, * foreign windows in our hierarchy. */ if (window->parent) - _gdk_windowing_window_destroy_foreign (window); + { + impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); + + if (gdk_window_has_impl (window)) + impl_class->destroy_foreign (window); + } /* Also for historical reasons, we remove any filters * on a foreign window when it or a parent is destroyed; @@ -2554,16 +2499,8 @@ gdk_window_remove_filter (GdkWindow *window, if ((filter->function == function) && (filter->data == data)) { filter->flags |= GDK_EVENT_FILTER_REMOVED; - filter->ref_count--; - if (filter->ref_count != 0) - return; - if (window) - window->filters = g_list_remove_link (window->filters, node); - else - _gdk_default_filters = g_list_remove_link (_gdk_default_filters, node); - g_list_free_1 (node); - g_free (filter); + _gdk_event_filter_unref (window, filter); return; } @@ -4074,19 +4011,18 @@ gdk_window_process_updates_internal (GdkWindow *window) cairo_region_get_extents (update_area, &clip_box); end_implicit = gdk_window_begin_implicit_paint (window, &clip_box); expose_region = cairo_region_copy (update_area); + impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); if (!end_implicit) { /* Rendering is not double buffered by gdk, do outstanding * moves and queue antiexposure immediately. No need to do * any tricks */ gdk_window_flush_outstanding_moves (window); - impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); save_region = impl_class->queue_antiexpose (window, update_area); } - /* Render the invalid areas to the implicit paint, by sending exposes. * May flush if non-double buffered widget draw. */ - _gdk_windowing_window_process_updates_recurse (window, expose_region); + impl_class->process_updates_recurse (window, expose_region); if (end_implicit) { @@ -4095,17 +4031,12 @@ gdk_window_process_updates_internal (GdkWindow *window) /* By this time we know that any outstanding expose for this * area is invalid and we can avoid it, so queue an antiexpose. - * However, it may be that due to an non-double buffered expose * we have already started drawing to the window, so it would * be to late to anti-expose now. Since this is merely an * optimization we just avoid doing it at all in that case. */ - if (window->implicit_paint != NULL && - !window->implicit_paint->flushed) - { - impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); - save_region = impl_class->queue_antiexpose (window, update_area); - } + if (window->implicit_paint != NULL && !window->implicit_paint->flushed) + save_region = impl_class->queue_antiexpose (window, update_area); gdk_window_end_implicit_paint (window); } @@ -4128,11 +4059,39 @@ gdk_window_process_updates_internal (GdkWindow *window) static void flush_all_displays (void) { - GSList *displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); - GSList *tmp_list; + GSList *displays, *l; - for (tmp_list = displays; tmp_list; tmp_list = tmp_list->next) - gdk_display_flush (tmp_list->data); + displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = displays; l; l = l->next) + gdk_display_flush (l->data); + + g_slist_free (displays); +} + +static void +before_process_all_updates (void) +{ + GSList *displays, *l; + GdkDisplayClass *display_class; + + displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); + display_class = GDK_DISPLAY_GET_CLASS (displays->data); + for (l = displays; l; l = l->next) + display_class->before_process_all_updates (l->data); + + g_slist_free (displays); +} + +static void +after_process_all_updates (void) +{ + GSList *displays, *l; + GdkDisplayClass *display_class; + + displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); + display_class = GDK_DISPLAY_GET_CLASS (displays->data); + for (l = displays; l; l = l->next) + display_class->after_process_all_updates (l->data); g_slist_free (displays); } @@ -4180,7 +4139,7 @@ gdk_window_process_all_updates (void) update_windows = NULL; update_idle = 0; - _gdk_windowing_before_process_all_updates (); + before_process_all_updates (); g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL); @@ -4205,7 +4164,7 @@ gdk_window_process_all_updates (void) flush_all_displays (); - _gdk_windowing_after_process_all_updates (); + after_process_all_updates (); in_process_all_updates = FALSE; @@ -4982,7 +4941,7 @@ gdk_window_get_pointer (GdkWindow *window, /** * gdk_window_get_device_position: * @window: a #GdkWindow. - * @device: #GdkDevice to query to. + * @device: pointer #GdkDevice to query to. * @x: (out) (allow-none): return location for the X coordinate of @device, or %NULL. * @y: (out) (allow-none): return location for the Y coordinate of @device, or %NULL. * @mask: (out) (allow-none): return location for the modifier mask, or %NULL. @@ -4992,8 +4951,7 @@ gdk_window_get_pointer (GdkWindow *window, * corner of @window. * * Return value: (transfer none): The window underneath @device (as with - * gdk_display_get_window_at_device_position()), or %NULL if the - * window is not known to GDK. + * gdk_device_get_window_at_position()), or %NULL if the window is not known to GDK. * * Since: 3.0 **/ @@ -5004,20 +4962,21 @@ gdk_window_get_device_position (GdkWindow *window, gint *y, GdkModifierType *mask) { - GdkDisplay *display; gint tmp_x, tmp_y; GdkModifierType tmp_mask; - GdkWindow *child; + gboolean normal_child; g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); - tmp_x = 0; - tmp_y = 0; - - display = gdk_window_get_display (window); - child = display->device_hooks->window_get_device_position (display, device, window, - &tmp_x, &tmp_y, &tmp_mask); + normal_child = GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_device_state (window, + device, + &tmp_x, &tmp_y, + &tmp_mask); + /* We got the coords on the impl, convert to the window */ + tmp_x -= window->abs_x; + tmp_y -= window->abs_y; if (x) *x = tmp_x; @@ -5026,9 +4985,11 @@ gdk_window_get_device_position (GdkWindow *window, if (mask) *mask = tmp_mask; - _gdk_display_enable_motion_hints (display, device); + _gdk_display_enable_motion_hints (gdk_window_get_display (window), device); - return child; + if (normal_child) + return _gdk_window_find_child_at (window, tmp_x, tmp_y); + return NULL; } /** @@ -5047,7 +5008,7 @@ gdk_window_get_device_position (GdkWindow *window, * * Return value: (transfer none): window under the mouse pointer * - * Deprecated: 3.0: Use gdk_display_get_window_at_device_position() instead. + * Deprecated: 3.0: Use gdk_device_get_window_at_position() instead. **/ GdkWindow* gdk_window_at_pointer (gint *win_x, @@ -5070,25 +5031,6 @@ gdk_get_default_root_window (void) return gdk_screen_get_root_window (gdk_screen_get_default ()); } -/** - * gdk_window_foreign_new: - * @anid: a native window handle. - * - * Wraps a native window for the default display in a #GdkWindow. - * This may fail if the window has been destroyed. - * - * For example in the X backend, a native window handle is an Xlib - * XID. - * - * Return value: (transfer full): the newly-created #GdkWindow wrapper - * for the native window, or %NULL if the window has been destroyed. - **/ -GdkWindow * -gdk_window_foreign_new (GdkNativeWindow anid) -{ - return gdk_window_foreign_new_for_display (gdk_display_get_default (), anid); -} - static void get_all_native_children (GdkWindow *window, GList **native) @@ -5698,8 +5640,9 @@ gdk_window_hide (GdkWindow *window) { GdkDevice *device = d->data; - if (_gdk_display_end_device_grab (display, device, - _gdk_windowing_window_get_next_serial (display), + if (_gdk_display_end_device_grab (display, + device, + _gdk_display_get_next_serial (display), window, TRUE)) gdk_device_ungrab (device, GDK_CURRENT_TIME); @@ -6716,14 +6659,14 @@ gdk_window_set_cursor (GdkWindow *window, if (window->cursor) { - gdk_cursor_unref (window->cursor); + g_object_unref (window->cursor); window->cursor = NULL; } if (!GDK_WINDOW_DESTROYED (window)) { if (cursor) - window->cursor = gdk_cursor_ref (cursor); + window->cursor = g_object_ref (cursor); _gdk_display_pointer_info_foreach (display, update_cursor_foreach, @@ -6736,7 +6679,7 @@ gdk_window_set_cursor (GdkWindow *window, /** * gdk_window_get_device_cursor: * @window: a #GdkWindow. - * @device: a #GdkDevice. + * @device: a master, pointer #GdkDevice. * * Retrieves a #GdkCursor pointer for the @device currently set on the * specified #GdkWindow, or %NULL. If the return value is %NULL then @@ -6755,6 +6698,8 @@ gdk_window_get_device_cursor (GdkWindow *window, { g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); + g_return_val_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD, NULL); + g_return_val_if_fail (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER, NULL); return g_hash_table_lookup (window->device_cursor, device); } @@ -6762,7 +6707,7 @@ gdk_window_get_device_cursor (GdkWindow *window, /** * gdk_window_set_device_cursor: * @window: a #Gdkwindow - * @device: a #GdkDevice + * @device: a master, pointer #GdkDevice * @cursor: a #GdkCursor * * Sets a specific #GdkCursor for a given device when it gets inside @window. @@ -6783,13 +6728,15 @@ gdk_window_set_device_cursor (GdkWindow *window, g_return_if_fail (GDK_IS_WINDOW (window)); g_return_if_fail (GDK_IS_DEVICE (device)); + g_return_if_fail (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD); + g_return_if_fail (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER); display = gdk_window_get_display (window); if (!cursor) g_hash_table_remove (window->device_cursor, device); else - g_hash_table_replace (window->device_cursor, device, gdk_cursor_ref (cursor)); + g_hash_table_replace (window->device_cursor, device, g_object_ref (cursor)); if (!GDK_WINDOW_DESTROYED (window)) { @@ -6809,7 +6756,6 @@ gdk_window_set_device_cursor (GdkWindow *window, * @y: (out) (allow-none): return location for Y coordinate of window (relative to its parent) * @width: (out) (allow-none): return location for width of window * @height: (out) (allow-none): return location for height of window - * @depth: (out) (allow-none): return location for bit depth of window * * Any of the return location arguments to this function may be %NULL, * if you aren't interested in getting the value of that field. @@ -6839,8 +6785,7 @@ gdk_window_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth) + gint *height) { GdkWindow *parent; GdkWindowImplClass *impl_class; @@ -6861,8 +6806,7 @@ gdk_window_get_geometry (GdkWindow *window, { impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); impl_class->get_geometry (window, x, y, - width, height, - depth); + width, height); /* This reports the position wrt to the native parent, we need to convert it to be relative to the client side parent */ parent = window->parent; @@ -6884,8 +6828,6 @@ gdk_window_get_geometry (GdkWindow *window, *width = window->width; if (height) *height = window->height; - if (depth) - *depth = window->depth; } } } @@ -7169,6 +7111,9 @@ gdk_window_shape_combine_region (GdkWindow *window, if (GDK_WINDOW_DESTROYED (window)) return; + if (!window->shape && shape_region == NULL) + return; + window->shaped = (shape_region != NULL); if (window->shape) @@ -7494,6 +7439,7 @@ gdk_window_set_composited (GdkWindow *window, gboolean composited) { GdkDisplay *display; + GdkWindowImplClass *impl_class; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -7507,14 +7453,16 @@ gdk_window_set_composited (GdkWindow *window, display = gdk_window_get_display (window); - if (!gdk_display_supports_composite (display) && composited) + impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); + + if (composited && (!gdk_display_supports_composite (display) || !impl_class->set_composited)) { g_warning ("gdk_window_set_composited called but " - "compositing is not supported"); + "compositing is not supported"); return; } - _gdk_windowing_window_set_composited (window, composited); + impl_class->set_composited (window, composited); recompute_visible_regions (window, TRUE, FALSE); @@ -8052,7 +8000,7 @@ gdk_window_beep (GdkWindow *window) if (toplevel) { - if (GDK_WINDOW_IMPL_CLASS (toplevel)->beep (window)) + if (GDK_WINDOW_IMPL_GET_CLASS (toplevel->impl)->beep (window)) return; } @@ -8340,6 +8288,7 @@ send_crossing_event (GdkDisplay *display, GdkNotifyType notify_type, GdkWindow *subwindow, GdkDevice *device, + GdkDevice *source_device, gint toplevel_x, gint toplevel_y, GdkModifierType mask, @@ -8399,6 +8348,10 @@ send_crossing_event (GdkDisplay *display, { event = _gdk_make_event ((GdkWindow *)window, type, event_in_queue, TRUE); gdk_event_set_device (event, device); + + if (source_device) + gdk_event_set_source_device (event, source_device); + event->crossing.time = time_; event->crossing.subwindow = subwindow; if (subwindow) @@ -8426,6 +8379,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display, GdkWindow *src, GdkWindow *dest, GdkDevice *device, + GdkDevice *source_device, GdkCrossingMode mode, gint toplevel_x, gint toplevel_y, @@ -8481,7 +8435,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display, a, GDK_LEAVE_NOTIFY, mode, notify_type, - NULL, device, + NULL, device, source_device, toplevel_x, toplevel_y, mask, time_, event_in_queue, @@ -8503,7 +8457,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display, mode, notify_type, (GdkWindow *)last, - device, + device, source_device, toplevel_x, toplevel_y, mask, time_, event_in_queue, @@ -8550,7 +8504,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display, mode, notify_type, (GdkWindow *)next, - device, + device, source_device, toplevel_x, toplevel_y, mask, time_, event_in_queue, @@ -8572,7 +8526,7 @@ _gdk_synthesize_crossing_events (GdkDisplay *display, mode, notify_type, NULL, - device, + device, source_device, toplevel_x, toplevel_y, mask, time_, event_in_queue, @@ -8743,7 +8697,7 @@ gdk_pointer_grab (GdkWindow * window, display = gdk_window_get_display (window); - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); device_manager = gdk_display_get_device_manager (display); devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER); @@ -8756,14 +8710,13 @@ gdk_pointer_grab (GdkWindow * window, if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE) continue; - res = _gdk_windowing_device_grab (device, - window, - native, - owner_events, - get_native_grab_event_mask (event_mask), - confine_to, - cursor, - time); + res = GDK_DEVICE_GET_CLASS (device)->grab (device, + native, + owner_events, + get_native_grab_event_mask (event_mask), + confine_to, + cursor, + time); if (res == GDK_GRAB_SUCCESS) _gdk_display_add_device_grab (display, @@ -8847,8 +8800,7 @@ gdk_keyboard_grab (GdkWindow *window, } display = gdk_window_get_display (window); - - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); device_manager = gdk_display_get_device_manager (display); devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER); @@ -8861,14 +8813,13 @@ gdk_keyboard_grab (GdkWindow *window, if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) continue; - res = _gdk_windowing_device_grab (device, - window, - native, - owner_events, - GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, - NULL, - NULL, - time); + res = GDK_DEVICE_GET_CLASS (device)->grab (device, + native, + owner_events, + GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, + NULL, + NULL, + time); if (res == GDK_GRAB_SUCCESS) _gdk_display_add_device_grab (display, @@ -8905,6 +8856,143 @@ gdk_window_geometry_changed (GdkWindow *window) _gdk_synthesize_crossing_events_for_geometry_change (window); } +static void +source_events_device_added (GdkDeviceManager *device_manager, + GdkDevice *device, + gpointer user_data) +{ + GdkWindow *window; + GdkEventMask event_mask; + GdkInputSource source; + + if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_FLOATING) + return; + + window = user_data; + source = gdk_device_get_source (device); + + event_mask = GPOINTER_TO_INT (g_hash_table_lookup (window->source_event_masks, + GINT_TO_POINTER (source))); + if (event_mask) + gdk_window_set_device_events (window, device, event_mask); +} + +static void +source_events_device_changed (GdkDeviceManager *device_manager, + GdkDevice *device, + gpointer user_data) +{ + GdkDeviceType type; + GdkInputSource source; + GdkEventMask event_mask; + GdkWindow *window; + + window = user_data; + type = gdk_device_get_device_type (device); + source = gdk_device_get_source (device); + + event_mask = GPOINTER_TO_INT (g_hash_table_lookup (window->source_event_masks, + GINT_TO_POINTER (source))); + + if (!event_mask) + return; + + if (type == GDK_DEVICE_TYPE_FLOATING) + { + /* The device was just floated, enable its event mask */ + gdk_window_set_device_events (window, device, event_mask); + } + else if (type == GDK_DEVICE_TYPE_SLAVE) + gdk_window_set_device_events (window, device, 0); +} + +/** + * gdk_window_set_source_events: + * @window: a #GdkWindow + * @source: a #GdkInputSource to define the source class. + * @event_mask: event mask for @window + * + * Sets the event mask for any floating device (i.e. not attached to any + * visible pointer) that has the source defined as @source. This event + * mask will be applied both to currently existing, newly added devices + * after this call, and devices being attached/detached. + * + * Since: 3.0 + **/ +void +gdk_window_set_source_events (GdkWindow *window, + GdkInputSource source, + GdkEventMask event_mask) +{ + GdkDeviceManager *device_manager; + GdkDisplay *display; + GList *devices, *d; + guint size; + + g_return_if_fail (GDK_IS_WINDOW (window)); + + display = gdk_window_get_display (window); + device_manager = gdk_display_get_device_manager (display); + + devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING); + + /* Set event mask for existing devices */ + for (d = devices; d; d = d->next) + { + GdkDevice *device = d->data; + + if (source == gdk_device_get_source (device)) + gdk_window_set_device_events (window, device, event_mask); + } + + /* Update accounting */ + if (G_UNLIKELY (!window->source_event_masks)) + window->source_event_masks = g_hash_table_new (NULL, NULL); + + if (event_mask) + g_hash_table_insert (window->source_event_masks, + GUINT_TO_POINTER (source), + GUINT_TO_POINTER (event_mask)); + else + g_hash_table_remove (window->source_event_masks, + GUINT_TO_POINTER (source)); + + size = g_hash_table_size (window->source_event_masks); + + /* Update handler if needed */ + if (!window->device_added_handler_id && size > 0) + { + window->device_added_handler_id = + g_signal_connect (device_manager, "device-added", + G_CALLBACK (source_events_device_added), window); + window->device_changed_handler_id = + g_signal_connect (device_manager, "device-changed", + G_CALLBACK (source_events_device_changed), window); + } + else if (window->device_added_handler_id && size == 0) + g_signal_handler_disconnect (device_manager, window->device_added_handler_id); +} + +/** + * gdk_window_get_source_events: + * @window: a #GdkWindow + * @source: a #GdkInputSource to define the source class. + * + * Returns the event mask for @window corresponding to the device class specified + * by @source. + * + * Returns: source event mask for @window + **/ +GdkEventMask +gdk_window_get_source_events (GdkWindow *window, + GdkInputSource source) +{ + g_return_val_if_fail (GDK_IS_WINDOW (window), 0); + + return GPOINTER_TO_UINT (g_hash_table_lookup (window->source_event_masks, + GUINT_TO_POINTER (source))); +} + static gboolean do_synthesize_crossing_event (gpointer data) { @@ -8922,7 +9010,7 @@ do_synthesize_crossing_event (gpointer data) return FALSE; display = gdk_window_get_display (changed_toplevel); - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); g_hash_table_iter_init (&iter, display->pointers_info); while (g_hash_table_iter_next (&iter, &key, &value)) @@ -8944,7 +9032,7 @@ do_synthesize_crossing_event (gpointer data) _gdk_synthesize_crossing_events (display, pointer_info->window_under_pointer, new_window_under_pointer, - device, + device, NULL, GDK_CROSSING_NORMAL, pointer_info->toplevel_x, pointer_info->toplevel_y, @@ -9060,7 +9148,7 @@ proxy_pointer_event (GdkDisplay *display, GdkWindow *toplevel_window, *event_window; GdkWindow *pointer_window; GdkPointerWindowInfo *pointer_info; - GdkDevice *device; + GdkDevice *device, *source_device; GdkEvent *event; guint state; gdouble toplevel_x, toplevel_y; @@ -9072,6 +9160,7 @@ proxy_pointer_event (GdkDisplay *display, gdk_event_get_state (source_event, &state); time_ = gdk_event_get_time (source_event); device = gdk_event_get_device (source_event); + source_device = gdk_event_get_source_device (source_event); pointer_info = _gdk_display_get_pointer_info (display, device); toplevel_window = convert_native_coords_to_toplevel (event_window, toplevel_x, toplevel_y, @@ -9105,7 +9194,7 @@ proxy_pointer_event (GdkDisplay *display, _gdk_synthesize_crossing_events (display, pointer_info->window_under_pointer, event_window, - device, + device, source_device, source_event->crossing.mode, toplevel_x, toplevel_y, state, time_, @@ -9121,7 +9210,7 @@ proxy_pointer_event (GdkDisplay *display, source_event->crossing.mode, source_event->crossing.detail, NULL, - device, + device, source_device, toplevel_x, toplevel_y, state, time_, source_event, @@ -9151,7 +9240,7 @@ proxy_pointer_event (GdkDisplay *display, source_event->crossing.mode, source_event->crossing.detail, NULL, - device, + device, source_device, toplevel_x, toplevel_y, state, time_, source_event, @@ -9161,7 +9250,7 @@ proxy_pointer_event (GdkDisplay *display, _gdk_synthesize_crossing_events (display, event_window, pointer_window, - device, + device, source_device, source_event->crossing.mode, toplevel_x, toplevel_y, state, time_, @@ -9180,7 +9269,7 @@ proxy_pointer_event (GdkDisplay *display, _gdk_synthesize_crossing_events (display, pointer_info->window_under_pointer, pointer_window, - device, + device, source_device, GDK_CROSSING_NORMAL, toplevel_x, toplevel_y, state, time_, @@ -9241,6 +9330,7 @@ proxy_pointer_event (GdkDisplay *display, event->motion.device = source_event->motion.device; event->motion.axes = g_memdup (source_event->motion.axes, sizeof (gdouble) * gdk_device_get_n_axes (source_event->motion.device)); + gdk_event_set_source_device (event, source_device); } } @@ -9270,7 +9360,7 @@ proxy_button_event (GdkEvent *source_event, gdouble toplevel_x, toplevel_y; GdkDisplay *display; GdkWindow *w; - GdkDevice *device; + GdkDevice *device, *source_device; type = source_event->any.type; event_window = source_event->any.window; @@ -9278,6 +9368,7 @@ proxy_button_event (GdkEvent *source_event, gdk_event_get_state (source_event, &state); time_ = gdk_event_get_time (source_event); device = gdk_event_get_device (source_event); + source_device = gdk_event_get_source_device (source_event); display = gdk_window_get_display (source_event->any.window); toplevel_window = convert_native_coords_to_toplevel (event_window, toplevel_x, toplevel_y, @@ -9314,7 +9405,7 @@ proxy_button_event (GdkEvent *source_event, serial, time_, TRUE); - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, source_device, serial); } pointer_window = get_pointer_window (display, toplevel_window, device, @@ -9351,6 +9442,8 @@ proxy_button_event (GdkEvent *source_event, event->button.axes = g_memdup (source_event->button.axes, sizeof (gdouble) * gdk_device_get_n_axes (source_event->button.device)); + gdk_event_set_source_device (event, source_device); + if (type == GDK_BUTTON_PRESS) _gdk_event_button_generate (display, event); return TRUE; @@ -9364,6 +9457,7 @@ proxy_button_event (GdkEvent *source_event, event->scroll.y_root = source_event->scroll.y_root; event->scroll.state = state; event->scroll.device = source_event->scroll.device; + gdk_event_set_source_device (event, source_device); return TRUE; default: @@ -9457,20 +9551,21 @@ _gdk_windowing_got_event (GdkDisplay *display, guint old_state, old_button; GdkDeviceGrabInfo *button_release_grab; GdkPointerWindowInfo *pointer_info; - GdkDevice *device; + GdkDevice *device, *source_device; gboolean is_toplevel; if (gdk_event_get_time (event) != GDK_CURRENT_TIME) display->last_event_time = gdk_event_get_time (event); device = gdk_event_get_device (event); + source_device = gdk_event_get_source_device (event); if (device) { GdkInputMode mode; g_object_get (device, "input-mode", &mode, NULL); - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, source_device, serial); if (mode == GDK_MODE_DISABLED || !_gdk_display_check_grab_ownership (display, device, serial)) @@ -9515,7 +9610,7 @@ _gdk_windowing_got_event (GdkDisplay *display, serial, gdk_event_get_time (event), TRUE); - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, source_device, serial); } if (event->type == GDK_BUTTON_RELEASE && !event->any.send_event) @@ -9528,7 +9623,7 @@ _gdk_windowing_got_event (GdkDisplay *display, { button_release_grab->serial_end = serial; button_release_grab->implicit_ungrab = FALSE; - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, source_device, serial); } } @@ -9650,7 +9745,7 @@ _gdk_windowing_got_event (GdkDisplay *display, { button_release_grab->serial_end = serial; button_release_grab->implicit_ungrab = FALSE; - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, source_device, serial); } } @@ -9663,88 +9758,6 @@ _gdk_windowing_got_event (GdkDisplay *display, } } - -static GdkWindow * -get_extension_event_window (GdkDisplay *display, - GdkWindow *pointer_window, - GdkEventType type, - gulong serial) -{ - guint evmask; - GdkWindow *w, *grab_window; - GdkDeviceGrabInfo *grab; - - /* FIXME: which device? */ - grab = _gdk_display_has_device_grab (display, display->core_pointer, serial); - - if (grab != NULL && !grab->owner_events) - { - evmask = grab->event_mask; - - grab_window = grab->window; - - if (evmask & type_masks[type]) - return grab_window; - else - return NULL; - } - - w = pointer_window; - while (w != NULL) - { - evmask = w->extension_events; - - if (evmask & type_masks[type]) - return w; - - w = get_event_parent (w); - } - - if (grab != NULL && - grab->owner_events) - { - evmask = grab->event_mask; - - if (evmask & type_masks[type]) - return grab->window; - else - return NULL; - } - - return NULL; -} - - -GdkWindow * -_gdk_window_get_input_window_for_event (GdkWindow *native_window, - GdkEventType event_type, - int x, int y, - gulong serial) -{ - GdkDisplay *display; - GdkWindow *toplevel_window; - GdkWindow *pointer_window; - GdkWindow *event_win; - gdouble toplevel_x, toplevel_y; - - toplevel_x = x; - toplevel_y = y; - - display = gdk_window_get_display (native_window); - toplevel_window = convert_native_coords_to_toplevel (native_window, - toplevel_x, toplevel_y, - &toplevel_x, &toplevel_y); - /* FIXME: which device? */ - pointer_window = get_pointer_window (display, toplevel_window, NULL, - toplevel_x, toplevel_y, serial); - event_win = get_extension_event_window (display, - pointer_window, - event_type, - serial); - - return event_win; -} - /** * gdk_window_create_similar_surface: * @window: window to make new surface similar to @@ -9793,3 +9806,1131 @@ gdk_window_create_similar_surface (GdkWindow * window, return surface; } +/** + * gdk_window_focus: + * @window: a #GdkWindow + * @timestamp: timestamp of the event triggering the window focus + * + * Sets keyboard focus to @window. In most cases, gtk_window_present() + * should be used on a #GtkWindow, rather than calling this function. + * + **/ +void +gdk_window_focus (GdkWindow *window, + guint32 timestamp) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->focus (window, timestamp); +} + +/** + * gdk_window_set_type_hint: + * @window: A toplevel #GdkWindow + * @hint: A hint of the function this window will have + * + * The application can use this call to provide a hint to the window + * manager about the functionality of a window. The window manager + * can use this information when determining the decoration and behaviour + * of the window. + * + * The hint must be set before the window is mapped. + **/ +void +gdk_window_set_type_hint (GdkWindow *window, + GdkWindowTypeHint hint) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_type_hint (window, hint); +} + +/** + * gdk_window_get_type_hint: + * @window: A toplevel #GdkWindow + * + * This function returns the type hint set for a window. + * + * Return value: The type hint set for @window + * + * Since: 2.10 + **/ +GdkWindowTypeHint +gdk_window_get_type_hint (GdkWindow *window) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_type_hint (window); +} + +/** + * gdk_window_set_modal_hint: + * @window: A toplevel #GdkWindow + * @modal: %TRUE if the window is modal, %FALSE otherwise. + * + * The application can use this hint to tell the window manager + * that a certain window has modal behaviour. The window manager + * can use this information to handle modal windows in a special + * way. + * + * You should only use this on windows for which you have + * previously called gdk_window_set_transient_for() + **/ +void +gdk_window_set_modal_hint (GdkWindow *window, + gboolean modal) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_modal_hint (window, modal); +} + +/** + * gdk_window_set_skip_taskbar_hint: + * @window: a toplevel #GdkWindow + * @skips_taskbar: %TRUE to skip the taskbar + * + * Toggles whether a window should appear in a task list or window + * list. If a window's semantic type as specified with + * gdk_window_set_type_hint() already fully describes the window, this + * function should not be called in addition, + * instead you should allow the window to be treated according to + * standard policy for its semantic type. + * + * Since: 2.2 + **/ +void +gdk_window_set_skip_taskbar_hint (GdkWindow *window, + gboolean skips_taskbar) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_skip_taskbar_hint (window, skips_taskbar); +} + +/** + * gdk_window_set_skip_pager_hint: + * @window: a toplevel #GdkWindow + * @skips_pager: %TRUE to skip the pager + * + * Toggles whether a window should appear in a pager (workspace + * switcher, or other desktop utility program that displays a small + * thumbnail representation of the windows on the desktop). If a + * window's semantic type as specified with gdk_window_set_type_hint() + * already fully describes the window, this function should + * not be called in addition, instead you should + * allow the window to be treated according to standard policy for + * its semantic type. + * + * Since: 2.2 + **/ +void +gdk_window_set_skip_pager_hint (GdkWindow *window, + gboolean skips_pager) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_skip_pager_hint (window, skips_pager); +} + +/** + * gdk_window_set_urgency_hint: + * @window: a toplevel #GdkWindow + * @urgent: %TRUE if the window is urgent + * + * Toggles whether a window needs the user's + * urgent attention. + * + * Since: 2.8 + **/ +void +gdk_window_set_urgency_hint (GdkWindow *window, + gboolean urgent) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_urgency_hint (window, urgent); +} + +/** + * gdk_window_set_geometry_hints: + * @window: a toplevel #GdkWindow + * @geometry: geometry hints + * @geom_mask: bitmask indicating fields of @geometry to pay attention to + * + * Sets the geometry hints for @window. Hints flagged in @geom_mask + * are set, hints not flagged in @geom_mask are unset. + * To unset all hints, use a @geom_mask of 0 and a @geometry of %NULL. + * + * This function provides hints to the windowing system about + * acceptable sizes for a toplevel window. The purpose of + * this is to constrain user resizing, but the windowing system + * will typically (but is not required to) also constrain the + * current size of the window to the provided values and + * constrain programatic resizing via gdk_window_resize() or + * gdk_window_move_resize(). + * + * Note that on X11, this effect has no effect on windows + * of type %GDK_WINDOW_TEMP or windows where override redirect + * has been turned on via gdk_window_set_override_redirect() + * since these windows are not resizable by the user. + * + * Since you can't count on the windowing system doing the + * constraints for programmatic resizes, you should generally + * call gdk_window_constrain_size() yourself to determine + * appropriate sizes. + * + **/ +void +gdk_window_set_geometry_hints (GdkWindow *window, + const GdkGeometry *geometry, + GdkWindowHints geom_mask) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_geometry_hints (window, geometry, geom_mask); +} + +/** + * gdk_window_set_title: + * @window: a toplevel #GdkWindow + * @title: title of @window + * + * Sets the title of a toplevel window, to be displayed in the titlebar. + * If you haven't explicitly set the icon name for the window + * (using gdk_window_set_icon_name()), the icon name will be set to + * @title as well. @title must be in UTF-8 encoding (as with all + * user-readable strings in GDK/GTK+). @title may not be %NULL. + **/ +void +gdk_window_set_title (GdkWindow *window, + const gchar *title) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_title (window, title); +} + +/** + * gdk_window_set_role: + * @window: a toplevel #GdkWindow + * @role: a string indicating its role + * + * When using GTK+, typically you should use gtk_window_set_role() instead + * of this low-level function. + * + * The window manager and session manager use a window's role to + * distinguish it from other kinds of window in the same application. + * When an application is restarted after being saved in a previous + * session, all windows with the same title and role are treated as + * interchangeable. So if you have two windows with the same title + * that should be distinguished for session management purposes, you + * should set the role on those windows. It doesn't matter what string + * you use for the role, as long as you have a different role for each + * non-interchangeable kind of window. + * + **/ +void +gdk_window_set_role (GdkWindow *window, + const gchar *role) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_role (window, role); +} + +/** + * gdk_window_set_startup_id: + * @window: a toplevel #GdkWindow + * @startup_id: a string with startup-notification identifier + * + * When using GTK+, typically you should use gtk_window_set_startup_id() + * instead of this low-level function. + * + * Since: 2.12 + * + **/ +void +gdk_window_set_startup_id (GdkWindow *window, + const gchar *startup_id) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_startup_id (window, startup_id); +} + +/** + * gdk_window_set_transient_for: + * @window: a toplevel #GdkWindow + * @parent: another toplevel #GdkWindow + * + * Indicates to the window manager that @window is a transient dialog + * associated with the application window @parent. This allows the + * window manager to do things like center @window on @parent and + * keep @window above @parent. + * + * See gtk_window_set_transient_for() if you're using #GtkWindow or + * #GtkDialog. + **/ +void +gdk_window_set_transient_for (GdkWindow *window, + GdkWindow *parent) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_transient_for (window, parent); +} + +/** + * gdk_window_get_root_origin: + * @window: a toplevel #GdkWindow + * @x: return location for X position of window frame + * @y: return location for Y position of window frame + * + * Obtains the top-left corner of the window manager frame in root + * window coordinates. + * + **/ +void +gdk_window_get_root_origin (GdkWindow *window, + gint *x, + gint *y) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_root_origin (window, x, y); +} + +/** + * gdk_window_get_frame_extents: + * @window: a toplevel #GdkWindow + * @rect: rectangle to fill with bounding box of the window frame + * + * Obtains the bounding box of the window, including window manager + * titlebar/borders if any. The frame position is given in root window + * coordinates. To get the position of the window itself (rather than + * the frame) in root window coordinates, use gdk_window_get_origin(). + * + **/ +void +gdk_window_get_frame_extents (GdkWindow *window, + GdkRectangle *rect) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_frame_extents (window, rect); +} + +/** + * gdk_window_set_override_redirect: + * @window: a toplevel #GdkWindow + * @override_redirect: %TRUE if window should be override redirect + * + * An override redirect window is not under the control of the window manager. + * This means it won't have a titlebar, won't be minimizable, etc. - it will + * be entirely under the control of the application. The window manager + * can't see the override redirect window at all. + * + * Override redirect should only be used for short-lived temporary + * windows, such as popup menus. #GtkMenu uses an override redirect + * window in its implementation, for example. + * + **/ +void +gdk_window_set_override_redirect (GdkWindow *window, + gboolean override_redirect) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_override_redirect (window, override_redirect); +} + +/** + * gdk_window_set_accept_focus: + * @window: a toplevel #GdkWindow + * @accept_focus: %TRUE if the window should receive input focus + * + * Setting @accept_focus to %FALSE hints the desktop environment that the + * window doesn't want to receive input focus. + * + * On X, it is the responsibility of the window manager to interpret this + * hint. ICCCM-compliant window manager usually respect it. + * + * Since: 2.4 + **/ +void +gdk_window_set_accept_focus (GdkWindow *window, + gboolean accept_focus) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_accept_focus (window, accept_focus); +} + +/** + * gdk_window_set_focus_on_map: + * @window: a toplevel #GdkWindow + * @focus_on_map: %TRUE if the window should receive input focus when mapped + * + * Setting @focus_on_map to %FALSE hints the desktop environment that the + * window doesn't want to receive input focus when it is mapped. + * focus_on_map should be turned off for windows that aren't triggered + * interactively (such as popups from network activity). + * + * On X, it is the responsibility of the window manager to interpret + * this hint. Window managers following the freedesktop.org window + * manager extension specification should respect it. + * + * Since: 2.6 + **/ +void +gdk_window_set_focus_on_map (GdkWindow *window, + gboolean focus_on_map) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_focus_on_map (window, focus_on_map); +} + +/** + * gdk_window_set_icon_list: + * @window: The #GdkWindow toplevel window to set the icon of. + * @pixbufs: (transfer none) (element-type GdkPixbuf): + * A list of pixbufs, of different sizes. + * + * Sets a list of icons for the window. One of these will be used + * to represent the window when it has been iconified. The icon is + * usually shown in an icon box or some sort of task bar. Which icon + * size is shown depends on the window manager. The window manager + * can scale the icon but setting several size icons can give better + * image quality since the window manager may only need to scale the + * icon by a small amount or not at all. + * + **/ +void +gdk_window_set_icon_list (GdkWindow *window, + GList *pixbufs) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_icon_list (window, pixbufs); +} + +/** + * gdk_window_set_icon_name: + * @window: a toplevel #GdkWindow + * @name: name of window while iconified (minimized) + * + * Windows may have a name used while minimized, distinct from the + * name they display in their titlebar. Most of the time this is a bad + * idea from a user interface standpoint. But you can set such a name + * with this function, if you like. + * + * After calling this with a non-%NULL @name, calls to gdk_window_set_title() + * will not update the icon title. + * + * Using %NULL for @name unsets the icon title; further calls to + * gdk_window_set_title() will again update the icon title as well. + **/ +void +gdk_window_set_icon_name (GdkWindow *window, + const gchar *name) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_icon_name (window, name); +} + +/** + * gdk_window_iconify: + * @window: a toplevel #GdkWindow + * + * Asks to iconify (minimize) @window. The window manager may choose + * to ignore the request, but normally will honor it. Using + * gtk_window_iconify() is preferred, if you have a #GtkWindow widget. + * + * This function only makes sense when @window is a toplevel window. + * + **/ +void +gdk_window_iconify (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->iconify (window); +} + +/** + * gdk_window_deiconify: + * @window: a toplevel #GdkWindow + * + * Attempt to deiconify (unminimize) @window. On X11 the window manager may + * choose to ignore the request to deiconify. When using GTK+, + * use gtk_window_deiconify() instead of the #GdkWindow variant. Or better yet, + * you probably want to use gtk_window_present(), which raises the window, focuses it, + * unminimizes it, and puts it on the current desktop. + * + **/ +void +gdk_window_deiconify (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->deiconify (window); +} + +/** + * gdk_window_stick: + * @window: a toplevel #GdkWindow + * + * "Pins" a window such that it's on all workspaces and does not scroll + * with viewports, for window managers that have scrollable viewports. + * (When using #GtkWindow, gtk_window_stick() may be more useful.) + * + * On the X11 platform, this function depends on window manager + * support, so may have no effect with many window managers. However, + * GDK will do the best it can to convince the window manager to stick + * the window. For window managers that don't support this operation, + * there's nothing you can do to force it to happen. + * + **/ +void +gdk_window_stick (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->stick (window); +} + +/** + * gdk_window_unstick: + * @window: a toplevel #GdkWindow + * + * Reverse operation for gdk_window_stick(); see gdk_window_stick(), + * and gtk_window_unstick(). + * + **/ +void +gdk_window_unstick (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->unstick (window); +} + +/** + * gdk_window_maximize: + * @window: a toplevel #GdkWindow + * + * Maximizes the window. If the window was already maximized, then + * this function does nothing. + * + * On X11, asks the window manager to maximize @window, if the window + * manager supports this operation. Not all window managers support + * this, and some deliberately ignore it or don't have a concept of + * "maximized"; so you can't rely on the maximization actually + * happening. But it will happen with most standard window managers, + * and GDK makes a best effort to get it to happen. + * + * On Windows, reliably maximizes the window. + * + **/ +void +gdk_window_maximize (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->maximize (window); +} + +/** + * gdk_window_unmaximize: + * @window: a toplevel #GdkWindow + * + * Unmaximizes the window. If the window wasn't maximized, then this + * function does nothing. + * + * On X11, asks the window manager to unmaximize @window, if the + * window manager supports this operation. Not all window managers + * support this, and some deliberately ignore it or don't have a + * concept of "maximized"; so you can't rely on the unmaximization + * actually happening. But it will happen with most standard window + * managers, and GDK makes a best effort to get it to happen. + * + * On Windows, reliably unmaximizes the window. + * + **/ +void +gdk_window_unmaximize (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->unmaximize (window); +} + +/** + * gdk_window_fullscreen: + * @window: a toplevel #GdkWindow + * + * Moves the window into fullscreen mode. This means the + * window covers the entire screen and is above any panels + * or task bars. + * + * If the window was already fullscreen, then this function does nothing. + * + * On X11, asks the window manager to put @window in a fullscreen + * state, if the window manager supports this operation. Not all + * window managers support this, and some deliberately ignore it or + * don't have a concept of "fullscreen"; so you can't rely on the + * fullscreenification actually happening. But it will happen with + * most standard window managers, and GDK makes a best effort to get + * it to happen. + * + * Since: 2.2 + **/ +void +gdk_window_fullscreen (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->fullscreen (window); +} + +/** + * gdk_window_unfullscreen: + * @window: a toplevel #GdkWindow + * + * Moves the window out of fullscreen mode. If the window was not + * fullscreen, does nothing. + * + * On X11, asks the window manager to move @window out of the fullscreen + * state, if the window manager supports this operation. Not all + * window managers support this, and some deliberately ignore it or + * don't have a concept of "fullscreen"; so you can't rely on the + * unfullscreenification actually happening. But it will happen with + * most standard window managers, and GDK makes a best effort to get + * it to happen. + * + * Since: 2.2 + **/ +void +gdk_window_unfullscreen (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->unfullscreen (window); +} + +/** + * gdk_window_set_keep_above: + * @window: a toplevel #GdkWindow + * @setting: whether to keep @window above other windows + * + * Set if @window must be kept above other windows. If the + * window was already above, then this function does nothing. + * + * On X11, asks the window manager to keep @window above, if the window + * manager supports this operation. Not all window managers support + * this, and some deliberately ignore it or don't have a concept of + * "keep above"; so you can't rely on the window being kept above. + * But it will happen with most standard window managers, + * and GDK makes a best effort to get it to happen. + * + * Since: 2.4 + **/ +void +gdk_window_set_keep_above (GdkWindow *window, + gboolean setting) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_keep_above (window, setting); +} + +/** + * gdk_window_set_keep_below: + * @window: a toplevel #GdkWindow + * @setting: whether to keep @window below other windows + * + * Set if @window must be kept below other windows. If the + * window was already below, then this function does nothing. + * + * On X11, asks the window manager to keep @window below, if the window + * manager supports this operation. Not all window managers support + * this, and some deliberately ignore it or don't have a concept of + * "keep below"; so you can't rely on the window being kept below. + * But it will happen with most standard window managers, + * and GDK makes a best effort to get it to happen. + * + * Since: 2.4 + **/ +void +gdk_window_set_keep_below (GdkWindow *window, gboolean setting) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_keep_below (window, setting); +} + +/** + * gdk_window_get_group: + * @window: a toplevel #GdkWindow + * + * Returns the group leader window for @window. See gdk_window_set_group(). + * + * Return value: (transfer none): the group leader window for @window + * + * Since: 2.4 + **/ +GdkWindow * +gdk_window_get_group (GdkWindow *window) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_group (window); +} + +/** + * gdk_window_set_group: + * @window: a toplevel #GdkWindow + * @leader: group leader window, or %NULL to restore the default group leader window + * + * Sets the group leader window for @window. By default, + * GDK sets the group leader for all toplevel windows + * to a global window implicitly created by GDK. With this function + * you can override this default. + * + * The group leader window allows the window manager to distinguish + * all windows that belong to a single application. It may for example + * allow users to minimize/unminimize all windows belonging to an + * application at once. You should only set a non-default group window + * if your application pretends to be multiple applications. + **/ +void +gdk_window_set_group (GdkWindow *window, + GdkWindow *leader) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_group (window, leader); +} + +/** + * gdk_window_set_decorations: + * @window: a toplevel #GdkWindow + * @decorations: decoration hint mask + * + * "Decorations" are the features the window manager adds to a toplevel #GdkWindow. + * This function sets the traditional Motif window manager hints that tell the + * window manager which decorations you would like your window to have. + * Usually you should use gtk_window_set_decorated() on a #GtkWindow instead of + * using the GDK function directly. + * + * The @decorations argument is the logical OR of the fields in + * the #GdkWMDecoration enumeration. If #GDK_DECOR_ALL is included in the + * mask, the other bits indicate which decorations should be turned off. + * If #GDK_DECOR_ALL is not included, then the other bits indicate + * which decorations should be turned on. + * + * Most window managers honor a decorations hint of 0 to disable all decorations, + * but very few honor all possible combinations of bits. + * + **/ +void +gdk_window_set_decorations (GdkWindow *window, + GdkWMDecoration decorations) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_decorations (window, decorations); +} + +/** + * gdk_window_get_decorations: + * @window: The toplevel #GdkWindow to get the decorations from + * @decorations: The window decorations will be written here + * + * Returns the decorations set on the GdkWindow with + * gdk_window_set_decorations(). + * + * Returns: %TRUE if the window has decorations set, %FALSE otherwise. + **/ +gboolean +gdk_window_get_decorations(GdkWindow *window, + GdkWMDecoration *decorations) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_decorations (window, decorations); +} + +/** + * gdk_window_set_functions: + * @window: a toplevel #GdkWindow + * @functions: bitmask of operations to allow on @window + * + * Sets hints about the window management functions to make available + * via buttons on the window frame. + * + * On the X backend, this function sets the traditional Motif window + * manager hint for this purpose. However, few window managers do + * anything reliable or interesting with this hint. Many ignore it + * entirely. + * + * The @functions argument is the logical OR of values from the + * #GdkWMFunction enumeration. If the bitmask includes #GDK_FUNC_ALL, + * then the other bits indicate which functions to disable; if + * it doesn't include #GDK_FUNC_ALL, it indicates which functions to + * enable. + * + **/ +void +gdk_window_set_functions (GdkWindow *window, + GdkWMFunction functions) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_functions (window, functions); +} + +/** + * gdk_window_begin_resize_drag: + * @window: a toplevel #GdkWindow + * @edge: the edge or corner from which the drag is started + * @button: the button being used to drag + * @root_x: root window X coordinate of mouse click that began the drag + * @root_y: root window Y coordinate of mouse click that began the drag + * @timestamp: timestamp of mouse click that began the drag (use gdk_event_get_time()) + * + * Begins a window resize operation (for a toplevel window). + * You might use this function to implement a "window resize grip," for + * example; in fact #GtkStatusbar uses it. The function works best + * with window managers that support the Extended Window Manager Hints, but has a + * fallback implementation for other window managers. + * + **/ +void +gdk_window_begin_resize_drag (GdkWindow *window, + GdkWindowEdge edge, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->begin_resize_drag (window, edge, button, root_x, root_y, timestamp); +} + +/** + * gdk_window_begin_move_drag: + * @window: a toplevel #GdkWindow + * @button: the button being used to drag + * @root_x: root window X coordinate of mouse click that began the drag + * @root_y: root window Y coordinate of mouse click that began the drag + * @timestamp: timestamp of mouse click that began the drag + * + * Begins a window move operation (for a toplevel window). You might + * use this function to implement a "window move grip," for + * example. The function works best with window managers that support + * the Extended + * Window Manager Hints, but has a fallback implementation for + * other window managers. + * + **/ +void +gdk_window_begin_move_drag (GdkWindow *window, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->begin_move_drag (window, button, root_x, root_y, timestamp); +} + +/** + * gdk_window_enable_synchronized_configure: + * @window: a toplevel #GdkWindow + * + * Indicates that the application will cooperate with the window + * system in synchronizing the window repaint with the window + * manager during resizing operations. After an application calls + * this function, it must call gdk_window_configure_finished() every + * time it has finished all processing associated with a set of + * Configure events. Toplevel GTK+ windows automatically use this + * protocol. + * + * On X, calling this function makes @window participate in the + * _NET_WM_SYNC_REQUEST window manager protocol. + * + * Since: 2.6 + **/ +void +gdk_window_enable_synchronized_configure (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->enable_synchronized_configure (window); +} + +/** + * gdk_window_configure_finished: + * @window: a toplevel #GdkWindow + * + * Signal to the window system that the application has finished + * handling Configure events it has received. Window Managers can + * use this to better synchronize the frame repaint with the + * application. GTK+ applications will automatically call this + * function when appropriate. + * + * This function can only be called if gdk_window_enable_synchronized_configure() + * was called previously. + * + * Since: 2.6 + **/ +void +gdk_window_configure_finished (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->configure_finished (window); +} + +/** + * gdk_window_set_opacity: + * @window: a top-level #GdkWindow + * @opacity: opacity + * + * Request the windowing system to make @window partially transparent, + * with opacity 0 being fully transparent and 1 fully opaque. (Values + * of the opacity parameter are clamped to the [0,1] range.) + * + * On X11, this works only on X screens with a compositing manager + * running. + * + * For setting up per-pixel alpha, see gdk_screen_get_rgba_visual(). + * For making non-toplevel windows translucent, see + * gdk_window_set_composited(). + * + * Since: 2.12 + */ +void +gdk_window_set_opacity (GdkWindow *window, + gdouble opacity) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_opacity (window, opacity); +} + +/* This function is called when the XWindow is really gone. + */ +void +gdk_window_destroy_notify (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->destroy_notify (window); +} + +/** + * gdk_window_register_dnd: + * @window: a #GdkWindow. + * + * Registers a window as a potential drop destination. + */ +void +gdk_window_register_dnd (GdkWindow *window) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->register_dnd (window); +} + +/** + * gdk_drag_begin: + * @window: the source window for this drag. + * @targets: (transfer none) (element-type GdkAtom): the offered targets, + * as list of #GdkAtoms + * + * Starts a drag and creates a new drag context for it. + * This function assumes that the drag is controlled by the + * client pointer device, use gdk_drag_begin_for_device() to + * begin a drag with a different device. + * + * This function is called by the drag source. + * + * Return value: (transfer full): a newly created #GdkDragContext + */ +GdkDragContext * +gdk_drag_begin (GdkWindow *window, + GList *targets) +{ + GdkDeviceManager *device_manager; + GdkDevice *device; + + device_manager = gdk_display_get_device_manager (gdk_window_get_display (window)); + device = gdk_device_manager_get_client_pointer (device_manager); + + return gdk_drag_begin_for_device (window, device, targets); +} + +/** + * gdk_drag_begin_for_device: + * @window: the source window for this drag + * @device: the device that controls this drag + * @targets: (transfer none) (element-type GdkAtom): the offered targets, + * as list of #GdkAtoms + * + * Starts a drag and creates a new drag context for it. + * + * This function is called by the drag source. + * + * Return value: (transfer full): a newly created #GdkDragContext + */ +GdkDragContext * +gdk_drag_begin_for_device (GdkWindow *window, + GdkDevice *device, + GList *targets) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->drag_begin (window, device, targets); +} + +/** + * gdk_test_render_sync: + * @window: a mapped #GdkWindow + * + * Retrieves a pixel from @window to force the windowing + * system to carry out any pending rendering commands. + * + * This function is intended to be used to synchronize with rendering + * pipelines, to benchmark windowing system rendering operations. + * + * Since: 2.14 + **/ +void +gdk_test_render_sync (GdkWindow *window) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl)->sync_rendering (window); +} + +/** + * gdk_test_simulate_key: + * @window: a #GdkWindow to simulate a key event for + * @x: x coordinate within @window for the key event + * @y: y coordinate within @window for the key event + * @keyval: A GDK keyboard value + * @modifiers: Keyboard modifiers the event is setup with + * @key_pressrelease: either %GDK_KEY_PRESS or %GDK_KEY_RELEASE + * + * This function is intended to be used in GTK+ test programs. + * If (@x,@y) are > (-1,-1), it will warp the mouse pointer to + * the given (@x,@y) coordinates within @window and simulate a + * key press or release event. + * + * When the mouse pointer is warped to the target location, use + * of this function outside of test programs that run in their + * own virtual windowing system (e.g. Xvfb) is not recommended. + * If (@x,@y) are passed as (-1,-1), the mouse pointer will not + * be warped and @window origin will be used as mouse pointer + * location for the event. + * + * Also, gdk_test_simulate_key() is a fairly low level function, + * for most testing purposes, gtk_test_widget_send_key() is the + * right function to call which will generate a key press event + * followed by its accompanying key release event. + * + * Returns: whether all actions necessary for a key event simulation + * were carried out successfully + * + * Since: 2.14 + */ +gboolean +gdk_test_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl) + ->simulate_key (window, x, y, keyval, modifiers, key_pressrelease); +} + +/** + * gdk_test_simulate_button: + * @window: a #GdkWindow to simulate a button event for + * @x: x coordinate within @window for the button event + * @y: y coordinate within @window for the button event + * @button: Number of the pointer button for the event, usually 1, 2 or 3 + * @modifiers: Keyboard modifiers the event is setup with + * @button_pressrelease: either %GDK_BUTTON_PRESS or %GDK_BUTTON_RELEASE + * + * This function is intended to be used in GTK+ test programs. + * It will warp the mouse pointer to the given (@x,@y) coordinates + * within @window and simulate a button press or release event. + * Because the mouse pointer needs to be warped to the target + * location, use of this function outside of test programs that + * run in their own virtual windowing system (e.g. Xvfb) is not + * recommended. + * +* Also, gdk_test_simulate_button() is a fairly low level function, + * for most testing purposes, gtk_test_widget_click() is the right + * function to call which will generate a button press event followed + * by its accompanying button release event. + * + * Returns: whether all actions necessary for a button event simulation + * were carried out successfully + * + * Since: 2.14 + */ +gboolean +gdk_test_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, /*1..3*/ + GdkModifierType modifiers, + GdkEventType button_pressrelease) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl) + ->simulate_button (window, x, y, button, modifiers, button_pressrelease); +} + +/** + * gdk_property_get: + * @window: a #GdkWindow + * @property: the property to retrieve + * @type: the desired property type, or %GDK_NONE, if any type of data + * is acceptable. If this does not match the actual + * type, then @actual_format and @actual_length will + * be filled in, a warning will be printed to stderr + * and no data will be returned. + * @offset: the offset into the property at which to begin + * retrieving data, in 4 byte units. + * @length: the length of the data to retrieve in bytes. Data is + * considered to be retrieved in 4 byte chunks, so @length + * will be rounded up to the next highest 4 byte boundary + * (so be careful not to pass a value that might overflow + * when rounded up). + * @pdelete: if %TRUE, delete the property after retrieving the + * data. + * @actual_property_type: location to store the actual type of +* the property. + * @actual_format: location to store the actual return format of the + * data; either 8, 16 or 32 bits. + * @actual_length: location to store the length of the retrieved data, in + * bytes. Data returned in the 32 bit format is stored + * in a long variable, so the actual number of 32 bit + * elements should be be calculated via + * @actual_length / sizeof(glong) to ensure portability to + * 64 bit systems. + * @data: location to store a pointer to the data. The retrieved + * data should be freed with g_free() when you are finished + * using it. + * + * Retrieves a portion of the contents of a property. If the + * property does not exist, then the function returns %FALSE, + * and %GDK_NONE will be stored in @actual_property_type. + * + * + * + * The XGetWindowProperty() function that gdk_property_get() + * uses has a very confusing and complicated set of semantics. + * uses has a very confusing and complicated set of semantics. + * Unfortunately, gdk_property_get() makes the situation + * worse instead of better (the semantics should be considered + * undefined), and also prints warnings to stderr in cases where it + * should return a useful error to the program. You are advised to use + * XGetWindowProperty() directly until a replacement function for + * gdk_property_get() + * is provided. + * + * + * + * Returns: %TRUE if data was successfully received and stored + * in @data, otherwise %FALSE. + */ +gboolean +gdk_property_get (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data) +{ + return GDK_WINDOW_IMPL_GET_CLASS (window->impl) + ->get_property (window, property, type, offset, length, pdelete, + actual_property_type, actual_format_type, + actual_length, data); +} + +/** + * gdk_property_change: + * @window: a #GdkWindow + * @property: the property to change + * @type: the new type for the property. If @mode is + * %GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this + * must match the existing type or an error will occur. + * @format: the new format for the property. If @mode is + * %GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this + * must match the existing format or an error will occur. + * @mode: a value describing how the new data is to be combined + * with the current data. + * @data: the data (a guchar * + * gushort *, or gulong *, + * depending on @format), cast to a guchar *. + * @nelements: the number of elements of size determined by the format, + * contained in @data. + * + * Changes the contents of a property on a window. + */ +void +gdk_property_change (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl) + ->change_property (window, property, type, format, mode, data, nelements); +} + +/** + * gdk_property_delete: + * @window: a #GdkWindow + * @property: the property to delete + * + * Deletes a property from a window. + */ +void +gdk_property_delete (GdkWindow *window, + GdkAtom property) +{ + GDK_WINDOW_IMPL_GET_CLASS (window->impl)->delete_property (window, property); +} diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h index 936e69af20..1cac906945 100644 --- a/gdk/gdkwindow.h +++ b/gdk/gdkwindow.h @@ -38,7 +38,6 @@ G_BEGIN_DECLS typedef struct _GdkGeometry GdkGeometry; typedef struct _GdkWindowAttr GdkWindowAttr; -typedef struct _GdkPointerHooks GdkPointerHooks; typedef struct _GdkWindowRedirect GdkWindowRedirect; /** @@ -446,35 +445,6 @@ struct _GdkGeometry GdkGravity win_gravity; }; -/** - * GdkPointerHooks: - * @get_pointer: Obtains the current pointer position and modifier state. - * The position is given in coordinates relative to the window containing - * the pointer, which is returned in @window. - * @window_at_pointer: Obtains the window underneath the mouse pointer, - * returning the location of that window in @win_x, @win_y. Returns %NULL - * if the window under the mouse pointer is not known to GDK (for example, - * belongs to another application). - * - * A table of pointers to functions for getting quantities related to - * the current pointer position. GDK has one global table of this type, - * which can be set using gdk_set_pointer_hooks(). - * - * This is only useful for such low-level tools as an event recorder. - * Applications should never have any reason to use this facility - */ -struct _GdkPointerHooks -{ - GdkWindow* (*get_pointer) (GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); - GdkWindow* (*window_at_pointer) (GdkScreen *screen, /* unused */ - gint *win_x, - gint *win_y); -}; - -typedef struct _GdkWindowObject GdkWindowObject; typedef struct _GdkWindowClass GdkWindowClass; #define GDK_TYPE_WINDOW (gdk_window_get_type ()) @@ -643,18 +613,7 @@ GdkWindowState gdk_window_get_state (GdkWindow *window); * window gravity on all children. */ gboolean gdk_window_set_static_gravities (GdkWindow *window, - gboolean use_static); - -/* Functions to create/lookup windows from their native equivalents */ -#ifndef GDK_MULTIHEAD_SAFE -GdkWindow* gdk_window_foreign_new (GdkNativeWindow anid); -GdkWindow* gdk_window_lookup (GdkNativeWindow anid); -#endif -GdkWindow *gdk_window_foreign_new_for_display (GdkDisplay *display, - GdkNativeWindow anid); -GdkWindow* gdk_window_lookup_for_display (GdkDisplay *display, - GdkNativeWindow anid); - + gboolean use_static); /* GdkWindow */ @@ -677,7 +636,6 @@ void gdk_window_set_urgency_hint (GdkWindow *window, void gdk_window_set_geometry_hints (GdkWindow *window, const GdkGeometry *geometry, GdkWindowHints geom_mask); -void gdk_set_sm_client_id (const gchar *sm_client_id); cairo_region_t *gdk_window_get_clip_region (GdkWindow *window); cairo_region_t *gdk_window_get_visible_region(GdkWindow *window); @@ -720,8 +678,7 @@ void gdk_window_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth); + gint *height); int gdk_window_get_width (GdkWindow *window); int gdk_window_get_height (GdkWindow *window); void gdk_window_get_position (GdkWindow *window, @@ -780,6 +737,12 @@ void gdk_window_set_device_events (GdkWindow *window, GdkEventMask gdk_window_get_device_events (GdkWindow *window, GdkDevice *device); +void gdk_window_set_source_events (GdkWindow *window, + GdkInputSource source, + GdkEventMask event_mask); +GdkEventMask gdk_window_get_source_events (GdkWindow *window, + GdkInputSource source); + void gdk_window_set_icon_list (GdkWindow *window, GList *pixbufs); void gdk_window_set_icon_name (GdkWindow *window, @@ -880,10 +843,6 @@ void gdk_window_constrain_size (GdkGeometry *geometry, void gdk_window_enable_synchronized_configure (GdkWindow *window); void gdk_window_configure_finished (GdkWindow *window); -#if !defined (GDK_MULTIHEAD_SAFE) && !defined (GDK_MULTIDEVICE_SAFE) -GdkPointerHooks *gdk_set_pointer_hooks (const GdkPointerHooks *new_hooks); -#endif /* !GDK_MULTIHEAD_SAFE && !GDK_MULTIDEVICE_SAFE */ - GdkWindow *gdk_get_default_root_window (void); /* Offscreen redirection */ diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h index 0332a31b71..fd9add2de0 100644 --- a/gdk/gdkwindowimpl.h +++ b/gdk/gdkwindowimpl.h @@ -28,6 +28,7 @@ #define __GDK_WINDOW_IMPL_H__ #include +#include G_BEGIN_DECLS @@ -91,8 +92,7 @@ struct _GdkWindowImplClass gint *x, gint *y, gint *width, - gint *height, - gint *depth); + gint *height); gint (* get_root_coords) (GdkWindow *window, gint x, gint y, @@ -141,19 +141,27 @@ struct _GdkWindowImplClass * * window: The window being destroyed * recursing: If TRUE, then this is being called because a parent - * was destroyed. This generally means that the call to the windowing system - * to destroy the window can be omitted, since it will be destroyed as a result - * of the parent being destroyed. Unless @foreign_destroy - * - * foreign_destroy: If TRUE, the window or a parent was destroyed by some external - * agency. The window has already been destroyed and no windowing - * system calls should be made. (This may never happen for some - * windowing systems.) + * was destroyed. This generally means that the call to the windowing + * system to destroy the window can be omitted, since it will be + * destroyed as a result of the parent being destroyed. + * Unless @foreign_destroy + * foreign_destroy: If TRUE, the window or a parent was destroyed by some + * external agency. The window has already been destroyed and no + * windowing system calls should be made. (This may never happen + * for some windowing systems.) */ void (* destroy) (GdkWindow *window, gboolean recursing, gboolean foreign_destroy); + + /* Called when gdk_window_destroy() is called on a foreign window + * or an ancestor of the foreign window. It should generally reparent + * the window out of it's current heirarchy, hide it, and then + * send a message to the owner requesting that the window be destroyed. + */ + void (*destroy_foreign) (GdkWindow *window); + cairo_surface_t * (* resize_cairo_surface) (GdkWindow *window, cairo_surface_t *surface, gint width, @@ -161,6 +169,126 @@ struct _GdkWindowImplClass /* optional */ gboolean (* beep) (GdkWindow *window); + + void (* focus) (GdkWindow *window, + guint32 timestamp); + void (* set_type_hint) (GdkWindow *window, + GdkWindowTypeHint hint); + GdkWindowTypeHint (* get_type_hint) (GdkWindow *window); + void (* set_modal_hint) (GdkWindow *window, + gboolean modal); + void (* set_skip_taskbar_hint) (GdkWindow *window, + gboolean skips_taskbar); + void (* set_skip_pager_hint) (GdkWindow *window, + gboolean skips_pager); + void (* set_urgency_hint) (GdkWindow *window, + gboolean urgent); + void (* set_geometry_hints) (GdkWindow *window, + const GdkGeometry *geometry, + GdkWindowHints geom_mask); + void (* set_title) (GdkWindow *window, + const gchar *title); + void (* set_role) (GdkWindow *window, + const gchar *role); + void (* set_startup_id) (GdkWindow *window, + const gchar *startup_id); + void (* set_transient_for) (GdkWindow *window, + GdkWindow *parent); + void (* get_root_origin) (GdkWindow *window, + gint *x, + gint *y); + void (* get_frame_extents) (GdkWindow *window, + GdkRectangle *rect); + void (* set_override_redirect) (GdkWindow *window, + gboolean override_redirect); + void (* set_accept_focus) (GdkWindow *window, + gboolean accept_focus); + void (* set_focus_on_map) (GdkWindow *window, + gboolean focus_on_map); + void (* set_icon_list) (GdkWindow *window, + GList *pixbufs); + void (* set_icon_name) (GdkWindow *window, + const gchar *name); + void (* iconify) (GdkWindow *window); + void (* deiconify) (GdkWindow *window); + void (* stick) (GdkWindow *window); + void (* unstick) (GdkWindow *window); + void (* maximize) (GdkWindow *window); + void (* unmaximize) (GdkWindow *window); + void (* fullscreen) (GdkWindow *window); + void (* unfullscreen) (GdkWindow *window); + void (* set_keep_above) (GdkWindow *window, + gboolean setting); + void (* set_keep_below) (GdkWindow *window, + gboolean setting); + GdkWindow * (* get_group) (GdkWindow *window); + void (* set_group) (GdkWindow *window, + GdkWindow *leader); + void (* set_decorations) (GdkWindow *window, + GdkWMDecoration decorations); + gboolean (* get_decorations) (GdkWindow *window, + GdkWMDecoration *decorations); + void (* set_functions) (GdkWindow *window, + GdkWMFunction functions); + void (* begin_resize_drag) (GdkWindow *window, + GdkWindowEdge edge, + gint button, + gint root_x, + gint root_y, + guint32 timestamp); + void (* begin_move_drag) (GdkWindow *window, + gint button, + gint root_x, + gint root_y, + guint32 timestamp); + void (* enable_synchronized_configure) (GdkWindow *window); + void (* configure_finished) (GdkWindow *window); + void (* set_opacity) (GdkWindow *window, + gdouble opacity); + void (* set_composited) (GdkWindow *window, + gboolean composited); + void (* destroy_notify) (GdkWindow *window); + void (* register_dnd) (GdkWindow *window); + GdkDragContext * (*drag_begin) (GdkWindow *window, + GdkDevice *device, + GList *targets); + + void (*process_updates_recurse) (GdkWindow *window, + cairo_region_t *region); + + void (*sync_rendering) (GdkWindow *window); + gboolean (*simulate_key) (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType event_type); + gboolean (*simulate_button) (GdkWindow *window, + gint x, + gint y, + guint button, + GdkModifierType modifiers, + GdkEventType event_type); + + gboolean (*get_property) (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_type, + gint *actual_format, + gint *actual_length, + guchar **data); + void (*change_property) (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint n_elements); + void (*delete_property) (GdkWindow *window, + GdkAtom property); }; /* Interface Functions */ diff --git a/gdk/x11/gdkglobals-x11.c b/gdk/gdkx.h similarity index 78% rename from gdk/x11/gdkglobals-x11.c rename to gdk/gdkx.h index de616092f0..3f474b43c2 100644 --- a/gdk/x11/gdkglobals-x11.c +++ b/gdk/gdkx.h @@ -21,17 +21,13 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#include "config.h" +/* This is a kludge to be able to include gdk/gdkx.h from inside the + * GTK source tree. + * Also, this hopefully serves as a warning to new backends to put + * their header into the backend dir from the start. + */ -#include "gdktypes.h" -#include "gdkprivate-x11.h" - -#include - - -gboolean _gdk_use_xshm = TRUE; /* used as a cmd line arg */ -GdkAtom _gdk_selection_property; -gboolean _gdk_synchronize = FALSE; +#include diff --git a/gdk/makefile.msc b/gdk/makefile.msc index 49c5978610..0d88d1e417 100644 --- a/gdk/makefile.msc +++ b/gdk/makefile.msc @@ -19,8 +19,7 @@ WTKIT = $(TOP)\wtkit126 # Nothing much configurable below # overwrite version? -GTK_VER=2.0 -GDK_PIXBUF_VER=$(GTK_VER) +GTK_VER=3.0 !IFNDEF PERL PERL = perl @@ -28,20 +27,19 @@ PERL = perl INCLUDES = -FImsvc_recommended_pragmas.h \ -I . -I .. \ - $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(CAIRO_CFLAGS) -I ../gdk-pixbuf \ + $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(CAIRO_CFLAGS) $(GDK_PIXBUF_CFLAGS) \ DEFINES = \ - -DHAVE_CONFIG_H -DGDK_ENABLE_BROKEN \ + -DHAVE_CONFIG_H \ -DGDK_VERSION=\"$(GTK_VER)\" \ -DG_LOG_DOMAIN=\"Gdk\" \ -DGDK_COMPILATION -DG_LOG_DOMAIN=\"Gdk\" EXTRALIBS = \ $(WTKIT)\lib\i386\wntab32x.lib \ - $(GLIB_LIBS) \ - ..\gdk-pixbuf\gdk_pixbuf-$(GDK_PIXBUF_VER).lib \ - $(PANGOWIN32_LIBS) $(PANGOCAIRO_LIBS) $(INTL_LIBS) $(CAIRO_LIBS) \ - $(PANGOCAIRO_LIBS) + $(GLIB_LIBS) $(GDK_PIXBUF_LIBS) \ + $(CAIRO_LIBS) $(CAIRO_GOBJECT_LIBS) \ + $(PANGOWIN32_LIBS) $(PANGOCAIRO_LIBS) $(INTL_LIBS) gdk-win32-backend : cd win32 @@ -57,8 +55,8 @@ all: \ gdkmarshalers.c \ gdk-win32-backend \ libgdk-win32-$(GTK_VER)-0.dll \ - testgdk.exe \ - gdk-win32-$(GTK_VER)s.lib \ +# testgdk.exe \ +# gdk-win32-$(GTK_VER)s.lib \ # gdk-x11-$(GTK_VER).dll \ gdk_OBJECTS = \ @@ -67,15 +65,14 @@ gdk_OBJECTS = \ gdkcairo.obj \ gdkcolor.obj \ gdkcursor.obj \ + gdkdevice.obj \ + gdkdevicemanager.obj \ gdkdisplay.obj \ gdkdisplaymanager.obj \ gdkdnd.obj \ - gdkdraw.obj \ gdkenumtypes.obj \ gdkevents.obj \ - gdkgc.obj \ gdkglobals.obj \ - gdkwindowimpl.obj \ gdkkeynames.obj \ gdkkeys.obj \ gdkkeyuni.obj \ @@ -83,31 +80,43 @@ gdk_OBJECTS = \ gdkoffscreenwindow.obj \ gdkpango.obj \ gdkpixbuf-drawable.obj \ - gdkpixbuf-render.obj \ gdkrectangle.obj \ + gdkrgba.obj \ gdkscreen.obj \ gdkselection.obj \ gdkvisual.obj \ - gdkwindow.obj + gdkwindow.obj \ + gdkwindowimpl.obj \ -gdk_public_h_sources = \ - gdk.h \ - gdkcolor.h \ - gdkcursor.h \ - gdkdnd.h \ - gdkdrawable.h \ - gdkevents.h \ - gdkgc.h \ - gdkkeysyms.h \ - gdkinput.h \ - gdkkeys.h \ - gdkpango.h \ - gdkpixbuf.h \ - gdkproperty.h \ - gdkselection.h \ - gdktypes.h \ - gdkvisual.h \ - gdkwindow.h \ +gdk_public_h_sources = \ + gdk.h \ + gdkapplaunchcontext.h \ + gdkcairo.h \ + gdkcolor.h \ + gdkcursor.h \ + gdkdevice.h \ + gdkdevicemanager.h \ + gdkdisplay.h \ + gdkdisplaymanager.h \ + gdkdnd.h \ + gdkevents.h \ + gdkkeys.h \ + gdkkeysyms.h \ + gdkkeysyms-compat.h \ + gdkmain.h \ + gdkpango.h \ + gdkpixbuf.h \ + gdkprivate.h \ + gdkproperty.h \ + gdkrectangle.h \ + gdkrgba.h \ + gdkscreen.h \ + gdkselection.h \ + gdktestutils.h \ + gdkthreads.h \ + gdktypes.h \ + gdkvisual.h \ + gdkwindow.h # private marshalers gdkmarshalers.h : gdkmarshalers.list @@ -136,6 +145,7 @@ gdk.def: gdk.symbols -DG_GNUC_CONST= \ gdk.symbols >> gdk.def +# /force /verbose:lib libgdk-win32-$(GTK_VER)-0.dll : $(gdk_OBJECTS) gdk.def win32\gdk-win32.lib $(CC) $(CFLAGS) -LD -Fe$@ $(gdk_OBJECTS) win32\gdk-win32.lib $(EXTRALIBS) \ gdi32.lib user32.lib imm32.lib shell32.lib ole32.lib uuid.lib win32\gdk.res \ diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzNSWindow.c similarity index 91% rename from gdk/quartz/GdkQuartzWindow.c rename to gdk/quartz/GdkQuartzNSWindow.c index eb3cce8947..ee21797383 100644 --- a/gdk/quartz/GdkQuartzWindow.c +++ b/gdk/quartz/GdkQuartzNSWindow.c @@ -18,11 +18,12 @@ * Boston, MA 02111-1307, USA. */ -#import "GdkQuartzWindow.h" -#include "gdkwindow-quartz.h" +#import "GdkQuartzNSWindow.h" +#include "gdkquartzwindow.h" +#include "gdkdnd-quartz.h" #include "gdkprivate-quartz.h" -@implementation GdkQuartzWindow +@implementation GdkQuartzNSWindow -(BOOL)windowShouldClose:(id)sender { @@ -140,7 +141,6 @@ -(void)windowDidMove:(NSNotification *)aNotification { GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; GdkEvent *event; _gdk_quartz_window_update_position (window); @@ -148,10 +148,10 @@ /* Synthesize a configure event */ event = gdk_event_new (GDK_CONFIGURE); event->configure.window = g_object_ref (window); - event->configure.x = private->x; - event->configure.y = private->y; - event->configure.width = private->width; - event->configure.height = private->height; + event->configure.x = window->x; + event->configure.y = window->y; + event->configure.width = window->width; + event->configure.height = window->height; _gdk_event_queue_append (gdk_display_get_default (), event); } @@ -160,23 +160,22 @@ { NSRect content_rect = [self contentRectForFrameRect:[self frame]]; GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; GdkEvent *event; - private->width = content_rect.size.width; - private->height = content_rect.size.height; + window->width = content_rect.size.width; + window->height = content_rect.size.height; - [[self contentView] setFrame:NSMakeRect (0, 0, private->width, private->height)]; + [[self contentView] setFrame:NSMakeRect (0, 0, window->width, window->height)]; _gdk_window_update_size (window); /* Synthesize a configure event */ event = gdk_event_new (GDK_CONFIGURE); event->configure.window = g_object_ref (window); - event->configure.x = private->x; - event->configure.y = private->y; - event->configure.width = private->width; - event->configure.height = private->height; + event->configure.x = window->x; + event->configure.y = window->y; + event->configure.width = window->width; + event->configure.height = window->height; _gdk_event_queue_append (gdk_display_get_default (), event); } @@ -199,8 +198,7 @@ -(BOOL)canBecomeMainWindow { GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); switch (impl->type_hint) { @@ -229,16 +227,15 @@ -(BOOL)canBecomeKeyWindow { GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); - if (!private->accept_focus) + if (!window->accept_focus) return NO; /* Popup windows should not be able to get focused in the window * manager sense, it's only handled through grabs. */ - if (private->window_type == GDK_WINDOW_TEMP) + if (window->window_type == GDK_WINDOW_TEMP) return NO; switch (impl->type_hint) @@ -268,8 +265,7 @@ - (void)showAndMakeKey:(BOOL)makeKey { GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); inShowOrHide = YES; @@ -284,8 +280,7 @@ - (void)hide { GdkWindow *window = [[self contentView] gdkWindow]; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); inShowOrHide = YES; [impl->toplevel orderOut:nil]; @@ -447,7 +442,7 @@ update_context_from_dragging_info (id sender) { g_assert (current_context != NULL); - GDK_DRAG_CONTEXT_PRIVATE (current_context)->dragging_info = sender; + GDK_QUARTZ_DRAG_CONTEXT (current_context)->dragging_info = sender; current_context->suggested_action = drag_operation_to_drag_action ([sender draggingSourceOperationMask]); current_context->actions = current_context->suggested_action; } @@ -461,7 +456,7 @@ update_context_from_dragging_info (id sender) if (current_context) g_object_unref (current_context); - current_context = gdk_drag_context_new (); + current_context = g_object_new (GDK_TYPE_QUARTZ_DRAG_CONTEXT, NULL); update_context_from_dragging_info (sender); window = [[self contentView] gdkWindow]; diff --git a/gdk/quartz/GdkQuartzWindow.h b/gdk/quartz/GdkQuartzNSWindow.h similarity index 95% rename from gdk/quartz/GdkQuartzWindow.h rename to gdk/quartz/GdkQuartzNSWindow.h index e6d1b4e155..676c48a9e6 100644 --- a/gdk/quartz/GdkQuartzWindow.h +++ b/gdk/quartz/GdkQuartzNSWindow.h @@ -1,4 +1,4 @@ -/* GdkQuartzWindow.h +/* GdkQuartzNSWindow.h * * Copyright (C) 2005-2007 Imendio AB * @@ -22,7 +22,7 @@ #import #include -@interface GdkQuartzWindow : NSWindow { +@interface GdkQuartzNSWindow : NSWindow { BOOL inMove; BOOL inShowOrHide; diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c index 8c6132b2ab..1b41aecd93 100644 --- a/gdk/quartz/GdkQuartzView.c +++ b/gdk/quartz/GdkQuartzView.c @@ -19,7 +19,7 @@ */ #import "GdkQuartzView.h" -#include "gdkwindow-quartz.h" +#include "gdkquartzwindow.h" #include "gdkprivate-quartz.h" #include "gdkquartz.h" @@ -68,8 +68,7 @@ -(void)drawRect:(NSRect)rect { GdkRectangle gdk_rect; - GdkWindowObject *private = GDK_WINDOW_OBJECT (gdk_window); - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (gdk_window->impl); const NSRect *drawn_rects; NSInteger count; int i; @@ -78,7 +77,7 @@ if (GDK_WINDOW_DESTROYED (gdk_window)) return; - if (!(private->event_mask & GDK_EXPOSURE_MASK)) + if (!(gdk_window->event_mask & GDK_EXPOSURE_MASK)) return; if (NSEqualRects (rect, NSZeroRect)) @@ -127,8 +126,7 @@ */ -(void)updateTrackingRect { - GdkWindowObject *private = GDK_WINDOW_OBJECT (gdk_window); - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (gdk_window->impl); NSRect rect; if (!impl->toplevel) diff --git a/gdk/quartz/Makefile.am b/gdk/quartz/Makefile.am index b0a967d1e8..9b2135326e 100644 --- a/gdk/quartz/Makefile.am +++ b/gdk/quartz/Makefile.am @@ -1,6 +1,7 @@ include $(top_srcdir)/Makefile.decl libgdkincludedir = $(includedir)/gtk-3.0/gdk +libgdkquartzincludedir = $(includedir)/gtk-3.0/gdk/quartz INCLUDES = \ -DG_LOG_DOMAIN=\"Gdk\" \ @@ -19,33 +20,28 @@ noinst_LTLIBRARIES = libgdk-quartz.la libgdk_quartz_la_SOURCES = \ GdkQuartzView.c \ GdkQuartzView.h \ - GdkQuartzWindow.c \ - GdkQuartzWindow.h \ - gdkapplaunchcontext-quartz.c \ + GdkQuartzNSWindow.c \ + GdkQuartzNSWindow.h \ gdkcursor-quartz.c \ - gdkdevice-core.c \ - gdkdevicemanager-core.c \ + gdkdevice-core-quartz.c \ + gdkdevicemanager-core-quartz.c \ + gdkdevicemanager-core-quartz.h \ gdkdisplay-quartz.c \ + gdkdisplaymanager-quartz.c \ gdkdnd-quartz.c \ - gdkdrawable-quartz.c \ - gdkdrawable-quartz.h \ + gdkdnd-quartz.h \ gdkevents-quartz.c \ gdkeventloop-quartz.c \ - gdkgeometry-quartz.c \ gdkglobals-quartz.c \ - gdkim-quartz.c \ - gdkinput.c \ - gdkinputprivate.h \ gdkkeys-quartz.c \ - gdkmain-quartz.c \ gdkprivate-quartz.h \ gdkproperty-quartz.c \ gdkquartz.h \ gdkscreen-quartz.c \ gdkscreen-quartz.h \ gdkselection-quartz.c \ - gdkspawn-quartz.c \ gdktestutils-quartz.c \ + gdkutils-quartz.c \ gdkvisual-quartz.c \ gdkwindow-quartz.c \ gdkwindow-quartz.h \ @@ -54,5 +50,18 @@ libgdk_quartz_la_SOURCES = \ libgdkinclude_HEADERS = \ gdkquartz.h +libgdkquartzinclude_HEADERS = \ + gdkquartzcursor.h \ + gdkquartzdevice-core.h \ + gdkquartzdevicemanager-core.h \ + gdkquartzdisplay.h \ + gdkquartzdisplaymanager.h \ + gdkquartzdnd.h \ + gdkquartzkeys.h \ + gdkquartzscreen.h \ + gdkquartzutils.h \ + gdkquartzvisual.h \ + gdkquartzwindow.h + -include $(top_srcdir)/git.mk diff --git a/gdk/quartz/gdkapplaunchcontext-quartz.c b/gdk/quartz/gdkapplaunchcontext-quartz.c deleted file mode 100644 index ce0b9c2828..0000000000 --- a/gdk/quartz/gdkapplaunchcontext-quartz.c +++ /dev/null @@ -1,42 +0,0 @@ -/* gdkapplaunchcontext-quartz.c - Gtk+ implementation for GAppLaunchContext - - Copyright (C) 2007 Red Hat, Inc. - - The Gnome 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. - - The Gnome 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 the Gnome Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - - Author: Matthias Clasen -*/ - -#include "config.h" - -#include "gdkapplaunchcontext.h" - - -char * -_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, - GAppInfo *info, - GList *files) -{ - return NULL; -} - -void -_gdk_windowing_launch_failed (GAppLaunchContext *context, - const char *startup_notify_id) -{ -} - - diff --git a/gdk/quartz/gdkcursor-quartz.c b/gdk/quartz/gdkcursor-quartz.c index 96dc7704e0..22b7676acb 100644 --- a/gdk/quartz/gdkcursor-quartz.c +++ b/gdk/quartz/gdkcursor-quartz.c @@ -22,27 +22,40 @@ #include "gdkdisplay.h" #include "gdkcursor.h" +#include "gdkcursorprivate.h" +#include "gdkquartzcursor.h" #include "gdkprivate-quartz.h" #include "xcursors.h" +struct _GdkQuartzCursor +{ + GdkCursor cursor; + + NSCursor *nscursor; +}; + +struct _GdkQuartzCursorClass +{ + GdkCursorClass cursor_class; +}; + + static GdkCursor *cached_xcursors[G_N_ELEMENTS (xcursors)]; static GdkCursor * gdk_quartz_cursor_new_from_nscursor (NSCursor *nscursor, GdkCursorType cursor_type) { - GdkCursorPrivate *private; - GdkCursor *cursor; + GdkQuartzCursor *private; - private = g_new (GdkCursorPrivate, 1); + private = g_object_new (GDK_TYPE_QUARTZ_CURSOR, + "cursor-type", cursor_type, + "display", _gdk_display, + NULL); private->nscursor = nscursor; - cursor = (GdkCursor *)private; - cursor->type = cursor_type; - cursor->ref_count = 1; - - return cursor; + return GDK_CURSOR (private); } static GdkCursor * @@ -175,14 +188,14 @@ create_builtin_cursor (GdkCursorType cursor_type) } GdkCursor* -gdk_cursor_new_for_display (GdkDisplay *display, - GdkCursorType cursor_type) +_gdk_quartz_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType cursor_type) { NSCursor *nscursor; g_return_val_if_fail (display == gdk_display_get_default (), NULL); - switch (cursor_type) + switch (cursor_type) { case GDK_XTERM: nscursor = [NSCursor IBeamCursor]; @@ -237,92 +250,23 @@ gdk_cursor_new_for_display (GdkDisplay *display, return gdk_quartz_cursor_new_from_nscursor (nscursor, cursor_type); } -static NSImage * -_gdk_quartz_pixbuf_to_ns_image (GdkPixbuf *pixbuf) -{ - NSBitmapImageRep *bitmap_rep; - NSImage *image; - gboolean has_alpha; - - has_alpha = gdk_pixbuf_get_has_alpha (pixbuf); - - /* Create a bitmap image rep */ - bitmap_rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL - pixelsWide:gdk_pixbuf_get_width (pixbuf) - pixelsHigh:gdk_pixbuf_get_height (pixbuf) - bitsPerSample:8 samplesPerPixel:has_alpha ? 4 : 3 - hasAlpha:has_alpha isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace - bytesPerRow:0 bitsPerPixel:0]; - - { - /* Add pixel data to bitmap rep */ - guchar *src, *dst; - int src_stride, dst_stride; - int x, y; - - src_stride = gdk_pixbuf_get_rowstride (pixbuf); - dst_stride = [bitmap_rep bytesPerRow]; - - for (y = 0; y < gdk_pixbuf_get_height (pixbuf); y++) - { - src = gdk_pixbuf_get_pixels (pixbuf) + y * src_stride; - dst = [bitmap_rep bitmapData] + y * dst_stride; - - for (x = 0; x < gdk_pixbuf_get_width (pixbuf); x++) - { - if (has_alpha) - { - guchar red, green, blue, alpha; - - red = *src++; - green = *src++; - blue = *src++; - alpha = *src++; - - *dst++ = (red * alpha) / 255; - *dst++ = (green * alpha) / 255; - *dst++ = (blue * alpha) / 255; - *dst++ = alpha; - } - else - { - *dst++ = *src++; - *dst++ = *src++; - *dst++ = *src++; - } - } - } - } - - image = [[NSImage alloc] init]; - [image addRepresentation:bitmap_rep]; - [bitmap_rep release]; - [image autorelease]; - - return image; -} GdkCursor * -gdk_cursor_new_from_pixbuf (GdkDisplay *display, - GdkPixbuf *pixbuf, - gint x, - gint y) +_gdk_quartz_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y) { NSImage *image; NSCursor *nscursor; GdkCursor *cursor; gboolean has_alpha; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); - g_return_val_if_fail (0 <= x && x < gdk_pixbuf_get_width (pixbuf), NULL); - g_return_val_if_fail (0 <= y && y < gdk_pixbuf_get_height (pixbuf), NULL); - GDK_QUARTZ_ALLOC_POOL; has_alpha = gdk_pixbuf_get_has_alpha (pixbuf); - image = _gdk_quartz_pixbuf_to_ns_image (pixbuf); + image = gdk_quartz_pixbuf_to_ns_image_libgtk_only (pixbuf); nscursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(x, y)]; cursor = gdk_quartz_cursor_new_from_nscursor (nscursor, GDK_CURSOR_IS_PIXMAP); @@ -332,82 +276,95 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, return cursor; } -GdkCursor* -gdk_cursor_new_from_name (GdkDisplay *display, - const gchar *name) +GdkCursor* +_gdk_quartz_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name) { /* FIXME: Implement */ return NULL; } +G_DEFINE_TYPE (GdkQuartzCursor, gdk_quartz_cursor, GDK_TYPE_CURSOR) + +static GdkPixbuf *gdk_quartz_cursor_get_image (GdkCursor *cursor); + +static void +gdk_quartz_cursor_finalize (GObject *object) +{ + GdkQuartzCursor *private = GDK_QUARTZ_CURSOR (object); + + if (private->nscursor) + [private->nscursor release]; + private->nscursor = NULL; +} + +static void +gdk_quartz_cursor_class_init (GdkQuartzCursorClass *quartz_cursor_class) +{ + GdkCursorClass *cursor_class = GDK_CURSOR_CLASS (quartz_cursor_class); + GObjectClass *object_class = G_OBJECT_CLASS (quartz_cursor_class); + + object_class->finalize = gdk_quartz_cursor_finalize; + + cursor_class->get_image = gdk_quartz_cursor_get_image; +} + +static void +gdk_quartz_cursor_init (GdkQuartzCursor *cursor) +{ +} + + +gboolean +_gdk_quartz_display_supports_cursor_alpha (GdkDisplay *display) +{ + return TRUE; +} + +gboolean +_gdk_quartz_display_supports_cursor_color (GdkDisplay *display) +{ + return TRUE; +} + void -_gdk_cursor_destroy (GdkCursor *cursor) +_gdk_quartz_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { - GdkCursorPrivate *private; - - g_return_if_fail (cursor != NULL); - g_return_if_fail (cursor->ref_count == 0); - - private = (GdkCursorPrivate *)cursor; - [private->nscursor release]; - - g_free (private); -} - -gboolean -gdk_display_supports_cursor_alpha (GdkDisplay *display) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - - return TRUE; -} - -gboolean -gdk_display_supports_cursor_color (GdkDisplay *display) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - - return TRUE; -} - -guint -gdk_display_get_default_cursor_size (GdkDisplay *display) -{ - g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - /* Mac OS X doesn't have the notion of a default size */ - return 32; + *width = 32; + *height = 32; } -void -gdk_display_get_maximal_cursor_size (GdkDisplay *display, - guint *width, - guint *height) +void +_gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { - g_return_if_fail (GDK_IS_DISPLAY (display)); - /* Cursor sizes in Mac OS X can be arbitrarily large */ *width = 65536; *height = 65536; } -GdkDisplay * -gdk_cursor_get_display (GdkCursor *cursor) +NSCursor * +_gdk_quartz_cursor_get_ns_cursor (GdkCursor *cursor) { - g_return_val_if_fail (cursor != NULL, NULL); + GdkQuartzCursor *cursor_private; - return gdk_display_get_default (); + if (!cursor) + return [NSCursor arrowCursor]; + + g_return_val_if_fail (GDK_IS_QUARTZ_CURSOR (cursor), NULL); + + cursor_private = GDK_QUARTZ_CURSOR (cursor); + + return cursor_private->nscursor; } -GdkPixbuf * -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf * +gdk_quartz_cursor_get_image (GdkCursor *cursor) { /* FIXME: Implement */ return NULL; } - -NSImage * -gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf) -{ - return _gdk_quartz_pixbuf_to_ns_image (pixbuf); -} diff --git a/gdk/quartz/gdkdevice-core-quartz.c b/gdk/quartz/gdkdevice-core-quartz.c new file mode 100644 index 0000000000..f42cc5d18d --- /dev/null +++ b/gdk/quartz/gdkdevice-core-quartz.c @@ -0,0 +1,371 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include +#include + +#import "GdkQuartzView.h" +#include "gdkquartzwindow.h" +#include "gdkquartzcursor.h" +#include "gdkprivate-quartz.h" +#include "gdkquartzdevice-core.h" + +struct _GdkQuartzDeviceCore +{ + GdkDevice parent_instance; +}; + +struct _GdkQuartzDeviceCoreClass +{ + GdkDeviceClass parent_class; +}; + +static gboolean gdk_quartz_device_core_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); +static void gdk_quartz_device_core_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +static void gdk_quartz_device_core_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor); +static void gdk_quartz_device_core_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y); +static gboolean gdk_quartz_device_core_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask); +static GdkGrabStatus gdk_quartz_device_core_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_); +static void gdk_quartz_device_core_ungrab (GdkDevice *device, + guint32 time_); +static GdkWindow * gdk_quartz_device_core_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel); +static void gdk_quartz_device_core_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask); + + +G_DEFINE_TYPE (GdkQuartzDeviceCore, gdk_quartz_device_core, GDK_TYPE_DEVICE) + +static void +gdk_quartz_device_core_class_init (GdkQuartzDeviceCoreClass *klass) +{ + GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); + + device_class->get_history = gdk_quartz_device_core_get_history; + device_class->get_state = gdk_quartz_device_core_get_state; + device_class->set_window_cursor = gdk_quartz_device_core_set_window_cursor; + device_class->warp = gdk_quartz_device_core_warp; + device_class->query_state = gdk_quartz_device_core_query_state; + device_class->grab = gdk_quartz_device_core_grab; + device_class->ungrab = gdk_quartz_device_core_ungrab; + device_class->window_at_position = gdk_quartz_device_core_window_at_position; + device_class->select_window_events = gdk_quartz_device_core_select_window_events; +} + +static void +gdk_quartz_device_core_init (GdkQuartzDeviceCore *quartz_device_core) +{ + GdkDevice *device; + + device = GDK_DEVICE (quartz_device_core); + + _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_X, 0, 0, 1); + _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_Y, 0, 0, 1); +} + +static gboolean +gdk_quartz_device_core_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events) +{ + return FALSE; +} + +static void +gdk_quartz_device_core_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask) +{ + gint x_int, y_int; + + gdk_window_get_pointer (window, &x_int, &y_int, mask); + + if (axes) + { + axes[0] = x_int; + axes[1] = y_int; + } +} + +static void +translate_coords_to_child_coords (GdkWindow *parent, + GdkWindow *child, + gint *x, + gint *y) +{ + GdkWindow *current = child; + + if (child == parent) + return; + + while (current != parent) + { + gint tmp_x, tmp_y; + + gdk_window_get_origin (current, &tmp_x, &tmp_y); + + *x -= tmp_x; + *y -= tmp_y; + + current = gdk_window_get_effective_parent (current); + } +} + +static void +gdk_quartz_device_core_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor) +{ + NSCursor *nscursor; + + if (GDK_WINDOW_DESTROYED (window)) + return; + + nscursor = _gdk_quartz_cursor_get_ns_cursor (cursor); + + [nscursor set]; +} + +static void +gdk_quartz_device_core_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y) +{ + CGDisplayMoveCursorToPoint (CGMainDisplayID (), CGPointMake (x, y)); +} + +static GdkWindow * +gdk_quartz_device_core_query_state_helper (GdkWindow *window, + GdkDevice *device, + gint *x, + gint *y, + GdkModifierType *mask) +{ + GdkWindow *toplevel; + NSPoint point; + gint x_tmp, y_tmp; + GdkWindow *found_window; + + g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL); + + if (GDK_WINDOW_DESTROYED (window)) + { + *x = 0; + *y = 0; + *mask = 0; + return NULL; + } + + toplevel = gdk_window_get_effective_toplevel (window); + + *mask = _gdk_quartz_events_get_current_event_mask (); + + /* Get the y coordinate, needs to be flipped. */ + if (window == _gdk_root) + { + point = [NSEvent mouseLocation]; + _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); + } + else + { + GdkWindowImplQuartz *impl; + NSWindow *nswindow; + + impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl); + nswindow = impl->toplevel; + + point = [nswindow mouseLocationOutsideOfEventStream]; + + x_tmp = point.x; + y_tmp = toplevel->height - point.y; + + window = toplevel; + } + + found_window = _gdk_quartz_window_find_child (window, x_tmp, y_tmp, + FALSE); + + if (found_window == _gdk_root) + found_window = NULL; + else if (found_window) + translate_coords_to_child_coords (window, found_window, + &x_tmp, &y_tmp); + + if (x) + *x = x_tmp; + + if (y) + *y = y_tmp; + + return found_window; +} + +static gboolean +gdk_quartz_device_core_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask) +{ + GdkDisplay *display; + GdkWindow *found_window; + NSPoint point; + gint x_tmp, y_tmp; + + found_window = gdk_quartz_device_core_query_state_helper (window, device, + win_x, win_y, + mask); + if (!found_window) + return FALSE; + + display = gdk_window_get_display (window); + + if (root_window) + *root_window = _gdk_root; + + if (child_window) + *child_window = found_window; + + point = [NSEvent mouseLocation]; + _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); + + if (root_x) + *root_x = x_tmp; + + if (root_y) + *root_y = y_tmp; + + return TRUE; +} + +static GdkGrabStatus +gdk_quartz_device_core_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_) +{ + /* Should remain empty */ + return GDK_GRAB_SUCCESS; +} + +static void +gdk_quartz_device_core_ungrab (GdkDevice *device, + guint32 time_) +{ + GdkDeviceGrabInfo *grab; + + grab = _gdk_display_get_last_device_grab (_gdk_display, device); + if (grab) + grab->serial_end = 0; + + _gdk_display_device_grab_update (_gdk_display, device, NULL, 0); +} + +static GdkWindow * +gdk_quartz_device_core_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel) +{ + GdkDisplay *display; + GdkScreen *screen; + GdkWindow *found_window; + NSPoint point; + gint x_tmp, y_tmp; + + display = gdk_device_get_display (device); + screen = gdk_display_get_default_screen (display); + + /* Get mouse coordinates, find window under the mouse pointer */ + point = [NSEvent mouseLocation]; + _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); + + found_window = _gdk_quartz_window_find_child (_gdk_root, x_tmp, y_tmp, + get_toplevel); + + if (found_window) + translate_coords_to_child_coords (_gdk_root, found_window, + &x_tmp, &y_tmp); + + if (win_x) + *win_x = found_window ? x_tmp : -1; + + if (win_y) + *win_y = found_window ? y_tmp : -1; + + if (mask) + *mask = _gdk_quartz_events_get_current_event_mask (); + + return found_window; +} + +static void +gdk_quartz_device_core_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask) +{ + /* The mask is set in the common code. */ +} diff --git a/gdk/quartz/gdkdevice-core.c b/gdk/quartz/gdkdevice-core.c deleted file mode 100644 index 57dc3de728..0000000000 --- a/gdk/quartz/gdkdevice-core.c +++ /dev/null @@ -1,356 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * Copyright (C) 2010 Kristian Rietveld - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#import "GdkQuartzView.h" -#include "gdkwindow-quartz.h" -#include "gdkprivate-quartz.h" -#include "gdkdevice-core.h" - -static gboolean gdk_device_core_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); -static void gdk_device_core_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); -static void gdk_device_core_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor); -static void gdk_device_core_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y); -static gboolean gdk_device_core_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask); -static GdkGrabStatus gdk_device_core_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_); -static void gdk_device_core_ungrab (GdkDevice *device, - guint32 time_); -static GdkWindow * gdk_device_core_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel); -static void gdk_device_core_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask); - - -G_DEFINE_TYPE (GdkDeviceCore, gdk_device_core, GDK_TYPE_DEVICE) - -static void -gdk_device_core_class_init (GdkDeviceCoreClass *klass) -{ - GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - - device_class->get_history = gdk_device_core_get_history; - device_class->get_state = gdk_device_core_get_state; - device_class->set_window_cursor = gdk_device_core_set_window_cursor; - device_class->warp = gdk_device_core_warp; - device_class->query_state = gdk_device_core_query_state; - device_class->grab = gdk_device_core_grab; - device_class->ungrab = gdk_device_core_ungrab; - device_class->window_at_position = gdk_device_core_window_at_position; - device_class->select_window_events = gdk_device_core_select_window_events; -} - -static void -gdk_device_core_init (GdkDeviceCore *device_core) -{ - GdkDevice *device; - - device = GDK_DEVICE (device_core); - - _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_X, 0, 0, 1); - _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_Y, 0, 0, 1); -} - -static gboolean -gdk_device_core_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events) -{ - return FALSE; -} - -static void -gdk_device_core_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask) -{ - gint x_int, y_int; - - gdk_window_get_pointer (window, &x_int, &y_int, mask); - - if (axes) - { - axes[0] = x_int; - axes[1] = y_int; - } -} - -static void -translate_coords_to_child_coords (GdkWindow *parent, - GdkWindow *child, - gint *x, - gint *y) -{ - GdkWindow *current = child; - - if (child == parent) - return; - - while (current != parent) - { - gint tmp_x, tmp_y; - - gdk_window_get_origin (current, &tmp_x, &tmp_y); - - *x -= tmp_x; - *y -= tmp_y; - - current = gdk_window_get_effective_parent (current); - } -} - -static void -gdk_device_core_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor) -{ - GdkCursorPrivate *cursor_private; - NSCursor *nscursor; - - cursor_private = (GdkCursorPrivate*) cursor; - - if (GDK_WINDOW_DESTROYED (window)) - return; - - if (!cursor) - nscursor = [NSCursor arrowCursor]; - else - nscursor = cursor_private->nscursor; - - [nscursor set]; -} - -static void -gdk_device_core_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y) -{ - CGDisplayMoveCursorToPoint (CGMainDisplayID (), CGPointMake (x, y)); -} - -static GdkWindow * -gdk_device_core_query_state_helper (GdkWindow *window, - GdkDevice *device, - gint *x, - gint *y, - GdkModifierType *mask) -{ - GdkWindowObject *toplevel; - GdkWindowObject *private; - NSPoint point; - gint x_tmp, y_tmp; - GdkWindow *found_window; - - g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL); - - if (GDK_WINDOW_DESTROYED (window)) - { - *x = 0; - *y = 0; - *mask = 0; - return NULL; - } - - toplevel = GDK_WINDOW_OBJECT (gdk_window_get_effective_toplevel (window)); - - *mask = _gdk_quartz_events_get_current_event_mask (); - - /* Get the y coordinate, needs to be flipped. */ - if (window == _gdk_root) - { - point = [NSEvent mouseLocation]; - _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); - } - else - { - GdkWindowImplQuartz *impl; - NSWindow *nswindow; - - impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl); - private = GDK_WINDOW_OBJECT (toplevel); - nswindow = impl->toplevel; - - point = [nswindow mouseLocationOutsideOfEventStream]; - - x_tmp = point.x; - y_tmp = private->height - point.y; - - window = (GdkWindow *)toplevel; - } - - found_window = _gdk_quartz_window_find_child (window, x_tmp, y_tmp, - FALSE); - - if (found_window == _gdk_root) - found_window = NULL; - else if (found_window) - translate_coords_to_child_coords (window, found_window, - &x_tmp, &y_tmp); - - *x = x_tmp; - *y = y_tmp; - - return found_window; -} - -static gboolean -gdk_device_core_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask) -{ - GdkDisplay *display; - GdkWindow *found_window; - NSPoint point; - gint x_tmp, y_tmp; - - found_window = gdk_device_core_query_state_helper (window, device, - win_x, win_y, - mask); - if (!found_window) - return FALSE; - - display = gdk_window_get_display (window); - - if (root_window) - *root_window = _gdk_root; - - if (child_window) - *child_window = found_window; - - point = [NSEvent mouseLocation]; - _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); - - if (root_x) - *root_x = x_tmp; - - if (root_y) - *root_y = y_tmp; - - return TRUE; -} - -static GdkGrabStatus -gdk_device_core_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_) -{ - /* Should remain empty */ - return GDK_GRAB_SUCCESS; -} - -static void -gdk_device_core_ungrab (GdkDevice *device, - guint32 time_) -{ - /* Should remain empty */ -} - -static GdkWindow * -gdk_device_core_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel) -{ - GdkDisplay *display; - GdkScreen *screen; - GdkWindow *found_window; - NSPoint point; - gint x_tmp, y_tmp; - - display = gdk_device_get_display (device); - screen = gdk_display_get_default_screen (display); - - /* Get mouse coordinates, find window under the mouse pointer */ - point = [NSEvent mouseLocation]; - _gdk_quartz_window_nspoint_to_gdk_xy (point, &x_tmp, &y_tmp); - - found_window = _gdk_quartz_window_find_child (_gdk_root, x_tmp, y_tmp, - get_toplevel); - - if (found_window) - translate_coords_to_child_coords (_gdk_root, found_window, - &x_tmp, &y_tmp); - - if (win_x) - *win_x = found_window ? x_tmp : -1; - - if (win_y) - *win_y = found_window ? y_tmp : -1; - - if (mask) - *mask = _gdk_quartz_events_get_current_event_mask (); - - return found_window; -} - -static void -gdk_device_core_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask) -{ - /* The mask is set in the common code. */ -} diff --git a/gdk/quartz/gdkdevicemanager-core.c b/gdk/quartz/gdkdevicemanager-core-quartz.c similarity index 53% rename from gdk/quartz/gdkdevicemanager-core.c rename to gdk/quartz/gdkdevicemanager-core-quartz.c index e96e9a9bf3..f5d0ab6cc4 100644 --- a/gdk/quartz/gdkdevicemanager-core.c +++ b/gdk/quartz/gdkdevicemanager-core-quartz.c @@ -21,41 +21,43 @@ #include #include -#include "gdkdevicemanager-core.h" -#include "gdkdevice-core.h" +#include +#include +#include "gdkdevicemanager-core-quartz.h" +#include "gdkquartzdevice-core.h" #include "gdkkeysyms.h" #define HAS_FOCUS(toplevel) \ ((toplevel)->has_focus || (toplevel)->has_pointer_focus) -static void gdk_device_manager_core_finalize (GObject *object); -static void gdk_device_manager_core_constructed (GObject *object); +static void gdk_quartz_device_manager_core_finalize (GObject *object); +static void gdk_quartz_device_manager_core_constructed (GObject *object); -static GList * gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type); -static GdkDevice * gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager); +static GList * gdk_quartz_device_manager_core_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type); +static GdkDevice * gdk_quartz_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager); -G_DEFINE_TYPE (GdkDeviceManagerCore, gdk_device_manager_core, GDK_TYPE_DEVICE_MANAGER) +G_DEFINE_TYPE (GdkQuartzDeviceManagerCore, gdk_quartz_device_manager_core, GDK_TYPE_DEVICE_MANAGER) static void -gdk_device_manager_core_class_init (GdkDeviceManagerCoreClass *klass) +gdk_quartz_device_manager_core_class_init (GdkQuartzDeviceManagerCoreClass *klass) { GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = gdk_device_manager_core_finalize; - object_class->constructed = gdk_device_manager_core_constructed; - device_manager_class->list_devices = gdk_device_manager_core_list_devices; - device_manager_class->get_client_pointer = gdk_device_manager_core_get_client_pointer; + object_class->finalize = gdk_quartz_device_manager_core_finalize; + object_class->constructed = gdk_quartz_device_manager_core_constructed; + device_manager_class->list_devices = gdk_quartz_device_manager_core_list_devices; + device_manager_class->get_client_pointer = gdk_quartz_device_manager_core_get_client_pointer; } static GdkDevice * create_core_pointer (GdkDeviceManager *device_manager, GdkDisplay *display) { - return g_object_new (GDK_TYPE_DEVICE_CORE, + return g_object_new (GDK_TYPE_QUARTZ_DEVICE_CORE, "name", "Core Pointer", "type", GDK_DEVICE_TYPE_MASTER, "input-source", GDK_SOURCE_MOUSE, @@ -70,7 +72,7 @@ static GdkDevice * create_core_keyboard (GdkDeviceManager *device_manager, GdkDisplay *display) { - return g_object_new (GDK_TYPE_DEVICE_CORE, + return g_object_new (GDK_TYPE_QUARTZ_DEVICE_CORE, "name", "Core Keyboard", "type", GDK_DEVICE_TYPE_MASTER, "input-source", GDK_SOURCE_KEYBOARD, @@ -82,30 +84,30 @@ create_core_keyboard (GdkDeviceManager *device_manager, } static void -gdk_device_manager_core_init (GdkDeviceManagerCore *device_manager) +gdk_quartz_device_manager_core_init (GdkQuartzDeviceManagerCore *device_manager) { } static void -gdk_device_manager_core_finalize (GObject *object) +gdk_quartz_device_manager_core_finalize (GObject *object) { - GdkDeviceManagerCore *device_manager_core; + GdkQuartzDeviceManagerCore *quartz_device_manager_core; - device_manager_core = GDK_DEVICE_MANAGER_CORE (object); + quartz_device_manager_core = GDK_QUARTZ_DEVICE_MANAGER_CORE (object); - g_object_unref (device_manager_core->core_pointer); - g_object_unref (device_manager_core->core_keyboard); + g_object_unref (quartz_device_manager_core->core_pointer); + g_object_unref (quartz_device_manager_core->core_keyboard); - G_OBJECT_CLASS (gdk_device_manager_core_parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_quartz_device_manager_core_parent_class)->finalize (object); } static void -gdk_device_manager_core_constructed (GObject *object) +gdk_quartz_device_manager_core_constructed (GObject *object) { - GdkDeviceManagerCore *device_manager; + GdkQuartzDeviceManagerCore *device_manager; GdkDisplay *display; - device_manager = GDK_DEVICE_MANAGER_CORE (object); + device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (object); display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object)); device_manager->core_pointer = create_core_pointer (GDK_DEVICE_MANAGER (device_manager), display); device_manager->core_keyboard = create_core_keyboard (GDK_DEVICE_MANAGER (device_manager), display); @@ -115,27 +117,27 @@ gdk_device_manager_core_constructed (GObject *object) } static GList * -gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type) +gdk_quartz_device_manager_core_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type) { - GdkDeviceManagerCore *device_manager_core; + GdkQuartzDeviceManagerCore *quartz_device_manager_core; GList *devices = NULL; if (type == GDK_DEVICE_TYPE_MASTER) { - device_manager_core = (GdkDeviceManagerCore *) device_manager; - devices = g_list_prepend (devices, device_manager_core->core_keyboard); - devices = g_list_prepend (devices, device_manager_core->core_pointer); + quartz_device_manager_core = (GdkQuartzDeviceManagerCore *) device_manager; + devices = g_list_prepend (devices, quartz_device_manager_core->core_keyboard); + devices = g_list_prepend (devices, quartz_device_manager_core->core_pointer); } return devices; } static GdkDevice * -gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager) +gdk_quartz_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager) { - GdkDeviceManagerCore *device_manager_core; + GdkQuartzDeviceManagerCore *quartz_device_manager_core; - device_manager_core = (GdkDeviceManagerCore *) device_manager; - return device_manager_core->core_pointer; + quartz_device_manager_core = (GdkQuartzDeviceManagerCore *) device_manager; + return quartz_device_manager_core->core_pointer; } diff --git a/gtk/gtkwindow-decorate.h b/gdk/quartz/gdkdevicemanager-core-quartz.h similarity index 55% rename from gtk/gtkwindow-decorate.h rename to gdk/quartz/gdkdevicemanager-core-quartz.h index 9f182f457b..48fc56c9d7 100644 --- a/gtk/gtkwindow-decorate.h +++ b/gdk/quartz/gdkdevicemanager-core-quartz.h @@ -1,5 +1,7 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 2001 Red Hat, Inc. +/* gdkdevicemanager-quartz.h + * + * Copyright (C) 2009 Carlos Garnacho + * Copyright (C) 2010 Kristian Rietveld * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,25 +19,26 @@ * Boston, MA 02111-1307, USA. */ -/* - * Authors: Alexander Larsson - */ +#ifndef __GDK_QUARTZ_DEVICE_MANAGER_CORE__ +#define __GDK_QUARTZ_DEVICE_MANAGER_CORE__ -#ifndef __GTK_WINDOW_DECORATE_H__ -#define __GTK_WINDOW_DECORATE_H__ +#include +#include G_BEGIN_DECLS -void gtk_decorated_window_init (GtkWindow *window); -void gtk_decorated_window_calculate_frame_size (GtkWindow *window); -void gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title); -void gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height); +struct _GdkQuartzDeviceManagerCore +{ + GdkDeviceManager parent_object; + GdkDevice *core_pointer; + GdkDevice *core_keyboard; +}; + +struct _GdkQuartzDeviceManagerCoreClass +{ + GdkDeviceManagerClass parent_class; +}; G_END_DECLS -#endif /* __GTK_WINDOW_DECORATE_H__ */ +#endif /* __GDK_QUARTZ_DEVICE_MANAGER__ */ diff --git a/gdk/quartz/gdkdevicemanager-core.h b/gdk/quartz/gdkdevicemanager-core.h deleted file mode 100644 index 0a337fcd00..0000000000 --- a/gdk/quartz/gdkdevicemanager-core.h +++ /dev/null @@ -1,54 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_MANAGER_CORE_H__ -#define __GDK_DEVICE_MANAGER_CORE_H__ - -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_MANAGER_CORE (gdk_device_manager_core_get_type ()) -#define GDK_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCore)) -#define GDK_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCoreClass)) -#define GDK_IS_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_MANAGER_CORE)) -#define GDK_IS_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER_CORE)) -#define GDK_DEVICE_MANAGER_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCoreClass)) - -typedef struct _GdkDeviceManagerCore GdkDeviceManagerCore; -typedef struct _GdkDeviceManagerCoreClass GdkDeviceManagerCoreClass; - -struct _GdkDeviceManagerCore -{ - GdkDeviceManager parent_object; - GdkDevice *core_pointer; - GdkDevice *core_keyboard; -}; - -struct _GdkDeviceManagerCoreClass -{ - GdkDeviceManagerClass parent_class; -}; - -GType gdk_device_manager_core_get_type (void) G_GNUC_CONST; - - -G_END_DECLS - -#endif /* __GDK_DEVICE_MANAGER_CORE_H__ */ diff --git a/gdk/quartz/gdkdisplay-quartz.c b/gdk/quartz/gdkdisplay-quartz.c index 556f84eee5..357c3c0b54 100644 --- a/gdk/quartz/gdkdisplay-quartz.c +++ b/gdk/quartz/gdkdisplay-quartz.c @@ -20,13 +20,30 @@ #include "config.h" -#include "gdk.h" -#include "gdkprivate-quartz.h" -#include "gdkscreen-quartz.h" -#include "gdkdevicemanager-core.h" +#include +#include -GdkWindow * -gdk_display_get_default_group (GdkDisplay *display) +#include "gdkprivate-quartz.h" +#include "gdkquartzscreen.h" +#include "gdkquartzwindow.h" +#include "gdkquartzdisplay.h" +#include "gdkquartzdevicemanager-core.h" + + +struct _GdkQuartzDisplay +{ + GdkDisplay display; + + GList *input_devices; +}; + +struct _GdkQuartzDisplayClass +{ + GdkDisplayClass display_class; +}; + +static GdkWindow * +gdk_quartz_display_get_default_group (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); @@ -35,22 +52,66 @@ gdk_display_get_default_group (GdkDisplay *display) return NULL; } -void -_gdk_windowing_set_default_display (GdkDisplay *display) -{ - g_assert (display == NULL || _gdk_display == display); -} - GdkDeviceManager * _gdk_device_manager_new (GdkDisplay *display) { - return g_object_new (GDK_TYPE_DEVICE_MANAGER_CORE, + return g_object_new (GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE, "display", display, NULL); } +static void +gdk_quartz_display_init_input (GdkDisplay *display) +{ + GdkQuartzDisplay *display_quartz; + GdkDeviceManager *device_manager; + GList *list, *l; + + display_quartz = GDK_QUARTZ_DISPLAY (display); + device_manager = gdk_display_get_device_manager (_gdk_display); + + /* For backwards compabitility, just add floating devices that are + * not keyboards. + */ + list = gdk_device_manager_list_devices (device_manager, + GDK_DEVICE_TYPE_FLOATING); + for (l = list; l; l = l->next) + { + GdkDevice *device = l->data; + + if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) + continue; + + display_quartz->input_devices = g_list_prepend (display_quartz->input_devices, + g_object_ref (l->data)); + } + + g_list_free (list); + + /* Now set "core" pointer to the first master device that is a pointer. */ + list = gdk_device_manager_list_devices (device_manager, + GDK_DEVICE_TYPE_MASTER); + + for (l = list; l; l = l->next) + { + GdkDevice *device = list->data; + + if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE) + continue; + + display->core_pointer = device; + break; + } + + /* Add the core pointer to the devices list */ + display_quartz->input_devices = g_list_prepend (display_quartz->input_devices, + g_object_ref (display->core_pointer)); + + g_list_free (list); +} + GdkDisplay * -gdk_display_open (const gchar *display_name) +_gdk_quartz_display_open (const gchar *display_name) { if (_gdk_display != NULL) return NULL; @@ -58,22 +119,21 @@ gdk_display_open (const gchar *display_name) /* Initialize application */ [NSApplication sharedApplication]; - _gdk_display = g_object_new (GDK_TYPE_DISPLAY, NULL); + _gdk_display = g_object_new (gdk_quartz_display_get_type (), NULL); _gdk_display->device_manager = _gdk_device_manager_new (_gdk_display); - _gdk_visual_init (); + _gdk_screen = g_object_new (gdk_quartz_screen_get_type (), NULL); + _gdk_quartz_screen_init_visuals (_gdk_screen); - _gdk_screen = _gdk_screen_quartz_new (); + _gdk_quartz_window_init_windowing (_gdk_display, _gdk_screen); - _gdk_windowing_window_init (); + _gdk_quartz_events_init (); - _gdk_events_init (); - - _gdk_input_init (); + gdk_quartz_display_init_input (_gdk_display); #if 0 /* FIXME: Remove the #if 0 when we have these functions */ - _gdk_dnd_init (); + _gdk_quartz_dnd_init (); #endif g_signal_emit_by_name (gdk_display_manager_get (), @@ -82,8 +142,8 @@ gdk_display_open (const gchar *display_name) return _gdk_display; } -G_CONST_RETURN gchar * -gdk_display_get_name (GdkDisplay *display) +static const gchar * +gdk_quartz_display_get_name (GdkDisplay *display) { static gchar *display_name = NULL; @@ -97,17 +157,17 @@ gdk_display_get_name (GdkDisplay *display) return display_name; } -int -gdk_display_get_n_screens (GdkDisplay *display) +static gint +gdk_quartz_display_get_n_screens (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); return 1; } -GdkScreen * -gdk_display_get_screen (GdkDisplay *display, - gint screen_num) +static GdkScreen * +gdk_quartz_display_get_screen (GdkDisplay *display, + gint screen_num) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); g_return_val_if_fail (screen_num == 0, NULL); @@ -115,22 +175,34 @@ gdk_display_get_screen (GdkDisplay *display, return _gdk_screen; } -GdkScreen * -gdk_display_get_default_screen (GdkDisplay *display) +static GdkScreen * +gdk_quartz_display_get_default_screen (GdkDisplay *display) { return _gdk_screen; } -void -gdk_display_beep (GdkDisplay *display) +static void +gdk_quartz_display_beep (GdkDisplay *display) { g_return_if_fail (GDK_IS_DISPLAY (display)); NSBeep(); } -gboolean -gdk_display_supports_selection_notification (GdkDisplay *display) +static void +gdk_quartz_display_sync (GdkDisplay *display) +{ + /* Not supported. */ +} + +static void +gdk_quartz_display_flush (GdkDisplay *display) +{ + /* Not supported. */ +} + +static gboolean +gdk_quartz_display_supports_selection_notification (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); @@ -138,56 +210,162 @@ gdk_display_supports_selection_notification (GdkDisplay *display) return FALSE; } -gboolean -gdk_display_request_selection_notification (GdkDisplay *display, - GdkAtom selection) +static gboolean +gdk_quartz_display_request_selection_notification (GdkDisplay *display, + GdkAtom selection) { /* FIXME: Implement */ return FALSE; } -gboolean -gdk_display_supports_clipboard_persistence (GdkDisplay *display) +static gboolean +gdk_quartz_display_supports_clipboard_persistence (GdkDisplay *display) { /* FIXME: Implement */ return FALSE; } -gboolean -gdk_display_supports_shapes (GdkDisplay *display) +static gboolean +gdk_quartz_display_supports_shapes (GdkDisplay *display) { /* FIXME: Implement */ return FALSE; } -gboolean -gdk_display_supports_input_shapes (GdkDisplay *display) +static gboolean +gdk_quartz_display_supports_input_shapes (GdkDisplay *display) { /* FIXME: Implement */ return FALSE; } -void -gdk_display_store_clipboard (GdkDisplay *display, - GdkWindow *clipboard_window, - guint32 time_, - const GdkAtom *targets, - gint n_targets) +static void +gdk_quartz_display_store_clipboard (GdkDisplay *display, + GdkWindow *clipboard_window, + guint32 time_, + const GdkAtom *targets, + gint n_targets) { /* FIXME: Implement */ } -gboolean -gdk_display_supports_composite (GdkDisplay *display) +static gboolean +gdk_quartz_display_supports_composite (GdkDisplay *display) { /* FIXME: Implement */ return FALSE; } -gulong -_gdk_windowing_window_get_next_serial (GdkDisplay *display) +static GList * +gdk_quartz_display_list_devices (GdkDisplay *display) +{ + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + + return GDK_QUARTZ_DISPLAY (display)->input_devices; +} + +static gulong +gdk_quartz_display_get_next_serial (GdkDisplay *display) { return 0; } + +static void +gdk_quartz_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id) +{ + /* FIXME: Implement? */ +} + + +G_DEFINE_TYPE (GdkQuartzDisplay, gdk_quartz_display, GDK_TYPE_DISPLAY) + +static void +gdk_quartz_display_init (GdkQuartzDisplay *display) +{ + _gdk_quartz_display_manager_add_display (gdk_display_manager_get (), + GDK_DISPLAY_OBJECT (display)); +} + +static void +gdk_quartz_display_dispose (GObject *object) +{ + GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object); + + _gdk_quartz_display_manager_remove_display (gdk_display_manager_get (), + GDK_DISPLAY_OBJECT (object)); + + g_list_foreach (display_quartz->input_devices, + (GFunc) g_object_run_dispose, NULL); + + G_OBJECT_CLASS (gdk_quartz_display_parent_class)->dispose (object); +} + +static void +gdk_quartz_display_finalize (GObject *object) +{ + GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object); + + g_list_foreach (display_quartz->input_devices, (GFunc) g_object_unref, NULL); + g_list_free (display_quartz->input_devices); + + G_OBJECT_CLASS (gdk_quartz_display_parent_class)->finalize (object); +} + +static void +gdk_quartz_display_class_init (GdkQuartzDisplayClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GdkDisplayClass *display_class = GDK_DISPLAY_CLASS (class); + + object_class->finalize = gdk_quartz_display_finalize; + + display_class->window_type = GDK_TYPE_QUARTZ_WINDOW; + + display_class->get_name = gdk_quartz_display_get_name; + display_class->get_n_screens = gdk_quartz_display_get_n_screens; + display_class->get_screen = gdk_quartz_display_get_screen; + display_class->get_default_screen = gdk_quartz_display_get_default_screen; + display_class->beep = gdk_quartz_display_beep; + display_class->sync = gdk_quartz_display_sync; + display_class->flush = gdk_quartz_display_flush; + display_class->queue_events = _gdk_quartz_display_queue_events; + display_class->has_pending = _gdk_quartz_display_has_pending; + display_class->get_default_group = gdk_quartz_display_get_default_group; + display_class->supports_selection_notification = gdk_quartz_display_supports_selection_notification; + display_class->request_selection_notification = gdk_quartz_display_request_selection_notification; + display_class->supports_clipboard_persistence = gdk_quartz_display_supports_clipboard_persistence; + display_class->store_clipboard = gdk_quartz_display_store_clipboard; + display_class->supports_shapes = gdk_quartz_display_supports_shapes; + display_class->supports_input_shapes = gdk_quartz_display_supports_input_shapes; + display_class->supports_composite = gdk_quartz_display_supports_composite; + display_class->list_devices = gdk_quartz_display_list_devices; + display_class->send_client_message = _gdk_quartz_display_send_client_message; + display_class->add_client_message_filter = _gdk_quartz_display_add_client_message_filter; + display_class->get_drag_protocol = _gdk_quartz_display_get_drag_protocol; + display_class->get_cursor_for_type = _gdk_quartz_display_get_cursor_for_type; + display_class->get_cursor_for_name = _gdk_quartz_display_get_cursor_for_name; + display_class->get_cursor_for_pixbuf = _gdk_quartz_display_get_cursor_for_pixbuf; + display_class->get_default_cursor_size = _gdk_quartz_display_get_default_cursor_size; + display_class->get_maximal_cursor_size = _gdk_quartz_display_get_maximal_cursor_size; + display_class->supports_cursor_alpha = _gdk_quartz_display_supports_cursor_alpha; + display_class->supports_cursor_color = _gdk_quartz_display_supports_cursor_color; + + display_class->before_process_all_updates = _gdk_quartz_display_before_process_all_updates; + display_class->after_process_all_updates = _gdk_quartz_display_after_process_all_updates; + display_class->get_next_serial = gdk_quartz_display_get_next_serial; + display_class->notify_startup_complete = gdk_quartz_display_notify_startup_complete; + display_class->event_data_copy = _gdk_quartz_display_event_data_copy; + display_class->event_data_free = _gdk_quartz_display_event_data_free; + display_class->create_window_impl = _gdk_quartz_display_create_window_impl; + display_class->get_keymap = _gdk_quartz_display_get_keymap; + display_class->get_selection_owner = _gdk_quartz_display_get_selection_owner; + display_class->set_selection_owner = _gdk_quartz_display_set_selection_owner; + display_class->send_selection_notify = _gdk_quartz_display_send_selection_notify; + display_class->get_selection_property = _gdk_quartz_display_get_selection_property; + display_class->convert_selection = _gdk_quartz_display_convert_selection; + display_class->text_property_to_utf8_list = _gdk_quartz_display_text_property_to_utf8_list; + display_class->utf8_to_string_target = _gdk_quartz_display_utf8_to_string_target; +} diff --git a/gdk/quartz/gdkdisplaymanager-quartz.c b/gdk/quartz/gdkdisplaymanager-quartz.c new file mode 100644 index 0000000000..087d5b3856 --- /dev/null +++ b/gdk/quartz/gdkdisplaymanager-quartz.c @@ -0,0 +1,177 @@ +/* GDK - The GIMP Drawing Kit + * gdkdisplaymanager-quartz.c + * + * Copyright (C) 2005 Imendio AB + * Copyright 2010 Red Hat, Inc. + * + * Author: Matthias clasen + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include +#include + +#include "gdkquartzdisplay.h" +#include "gdkquartzdisplaymanager.h" +#include "gdkprivate-quartz.h" + +#include "gdkdisplaymanagerprivate.h" +#include "gdkinternals.h" + +struct _GdkQuartzDisplayManager +{ + GdkDisplayManager parent; + + GdkDisplay *default_display; + GSList *displays; +}; + + +G_DEFINE_TYPE (GdkQuartzDisplayManager, gdk_quartz_display_manager, GDK_TYPE_DISPLAY_MANAGER) + +static GdkDisplay * +gdk_quartz_display_manager_open_display (GdkDisplayManager *manager, + const gchar *name) +{ + return _gdk_quartz_display_open (name); +} + +static GSList * +gdk_quartz_display_manager_list_displays (GdkDisplayManager *manager) +{ + GdkQuartzDisplayManager *manager_quartz = GDK_QUARTZ_DISPLAY_MANAGER (manager); + + return g_slist_copy (manager_quartz->displays); +} + +static GdkDisplay * +gdk_quartz_display_manager_get_default_display (GdkDisplayManager *manager) +{ + return GDK_QUARTZ_DISPLAY_MANAGER (manager)->default_display; +} + +static void +gdk_quartz_display_manager_set_default_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GdkQuartzDisplayManager *manager_quartz = GDK_QUARTZ_DISPLAY_MANAGER (manager); + + manager_quartz->default_display = display; +} + +#include "../gdkkeynames.c" + +static gchar * +gdk_quartz_display_manager_get_keyval_name (GdkDisplayManager *manager, + guint keyval) +{ + return _gdk_keyval_name (keyval); +} + +static guint +gdk_quartz_display_manager_lookup_keyval (GdkDisplayManager *manager, + const gchar *name) +{ + return _gdk_keyval_from_name (name); +} + +static void +gdk_quartz_display_manager_keyval_convert_case (GdkDisplayManager *manager, + guint symbol, + guint *lower, + guint *upper) +{ + /* FIXME implement this */ + if (lower) + *lower = symbol; + if (upper) + *upper = symbol; +} + +static void +gdk_quartz_display_manager_init (GdkQuartzDisplayManager *manager) +{ + ProcessSerialNumber psn = { 0, kCurrentProcess }; + void (*_gtk_quartz_framework_init_ptr) (void); + + /* Make the current process a foreground application, i.e. an app + * with a user interface, in case we're not running from a .app bundle + */ + TransformProcessType (&psn, kProcessTransformToForegroundApplication); + + /* Initialize GTK+ framework if there is one. */ + _gtk_quartz_framework_init_ptr = dlsym (RTLD_DEFAULT, "_gtk_quartz_framework_init"); + if (_gtk_quartz_framework_init_ptr) + _gtk_quartz_framework_init_ptr (); +} + +static void +gdk_quartz_display_manager_finalize (GObject *object) +{ + g_error ("A GdkQuartzDisplayManager object was finalized. This should not happen"); + G_OBJECT_CLASS (gdk_quartz_display_manager_parent_class)->finalize (object); +} + +static void +gdk_quartz_display_manager_class_init (GdkQuartzDisplayManagerClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GdkDisplayManagerClass *manager_class = GDK_DISPLAY_MANAGER_CLASS (class); + + object_class->finalize = gdk_quartz_display_manager_finalize; + + manager_class->open_display = gdk_quartz_display_manager_open_display; + manager_class->list_displays = gdk_quartz_display_manager_list_displays; + manager_class->set_default_display = gdk_quartz_display_manager_set_default_display; + manager_class->get_default_display = gdk_quartz_display_manager_get_default_display; + manager_class->atom_intern = _gdk_quartz_display_manager_atom_intern; + manager_class->get_atom_name = _gdk_quartz_display_manager_get_atom_name; + manager_class->lookup_keyval = gdk_quartz_display_manager_lookup_keyval; + manager_class->get_keyval_name = gdk_quartz_display_manager_get_keyval_name; + manager_class->keyval_convert_case = gdk_quartz_display_manager_keyval_convert_case; +} + +void +_gdk_quartz_display_manager_add_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GdkQuartzDisplayManager *manager_quartz = GDK_QUARTZ_DISPLAY_MANAGER (manager); + + if (manager_quartz->displays == NULL) + gdk_display_manager_set_default_display (manager, display); + + manager_quartz->displays = g_slist_prepend (manager_quartz->displays, display); +} + +void +_gdk_quartz_display_manager_remove_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GdkQuartzDisplayManager *manager_quartz = GDK_QUARTZ_DISPLAY_MANAGER (manager); + + manager_quartz->displays = g_slist_remove (manager_quartz->displays, display); + + if (manager_quartz->default_display == display) + { + if (manager_quartz->displays) + gdk_display_manager_set_default_display (manager, manager_quartz->displays->data); + else + gdk_display_manager_set_default_display (manager, NULL); + } +} diff --git a/gdk/quartz/gdkdnd-quartz.c b/gdk/quartz/gdkdnd-quartz.c index 73a68df063..7ba1705c54 100644 --- a/gdk/quartz/gdkdnd-quartz.c +++ b/gdk/quartz/gdkdnd-quartz.c @@ -19,122 +19,11 @@ */ #include "gdkdnd.h" +#include "gdkquartzdnd.h" #include "gdkprivate-quartz.h" -static gpointer parent_class = NULL; -static void -gdk_drag_context_finalize (GObject *object) -{ - GdkDragContext *context = GDK_DRAG_CONTEXT (object); - GdkDragContextPrivate *private = GDK_DRAG_CONTEXT_PRIVATE (context); - - g_free (private); - - G_OBJECT_CLASS (parent_class)->finalize (object); -} - -static void -gdk_drag_context_init (GdkDragContext *dragcontext) -{ - GdkDragContextPrivate *priv = g_new0 (GdkDragContextPrivate, 1); - - dragcontext->windowing_data = priv; -} - -static void -gdk_drag_context_class_init (GdkDragContextClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = gdk_drag_context_finalize; -} - -GType -gdk_drag_context_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkDragContextClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_drag_context_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkDragContext), - 0, /* n_preallocs */ - (GInstanceInitFunc) gdk_drag_context_init, - }; - - object_type = g_type_register_static (G_TYPE_OBJECT, - "GdkDragContext", - &object_info, - 0); - } - - return object_type; -} - -GdkDragContext * -gdk_drag_context_new (void) -{ - return (GdkDragContext *)g_object_new (gdk_drag_context_get_type (), NULL); -} - -/** - * gdk_drag_context_set_device: - * @context: a #GdkDragContext - * @device: a #GdkDevice - * - * Associates a #GdkDevice to @context, so all Drag and Drop events - * for @context are emitted as if they came from this device. - **/ -void -gdk_drag_context_set_device (GdkDragContext *context, - GdkDevice *device) -{ - GdkDragContextPrivate *private; - - g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (GDK_IS_DEVICE (device)); - - private = GDK_DRAG_CONTEXT_PRIVATE (context); - - if (private->device) - { - g_object_unref (private->device); - private->device = NULL; - } - - if (device) - private->device = g_object_ref (device); -} - -/** - * gdk_drag_context_get_device: - * @context: a #GdkDragContext - * - * Returns the #GdkDevice associated to the drag context. - * - * Returns: The #GdkDevice associated to @context. - **/ -GdkDevice * -gdk_drag_context_get_device (GdkDragContext *context) -{ - GdkDragContextPrivate *private; - - g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); - - private = GDK_DRAG_CONTEXT_PRIVATE (context); - - return private->device; -} +G_DEFINE_TYPE (GdkQuartzDragContext, gdk_quartz_drag_context, GDK_TYPE_DRAG_CONTEXT) GdkDragContext *_gdk_quartz_drag_source_context = NULL; @@ -145,117 +34,112 @@ gdk_quartz_drag_source_context () return _gdk_quartz_drag_source_context; } -GdkDragContext * -gdk_drag_begin (GdkWindow *window, - GList *targets) +GdkDragContext * +_gdk_quartz_window_drag_begin (GdkWindow *window, + GdkDevice *device, + GList *targets) { - GdkDeviceManager *device_manager; - g_assert (_gdk_quartz_drag_source_context == NULL); - + /* Create fake context */ - _gdk_quartz_drag_source_context = gdk_drag_context_new (); + _gdk_quartz_drag_source_context = g_object_new (GDK_TYPE_QUARTZ_DRAG_CONTEXT, + NULL); _gdk_quartz_drag_source_context->is_source = TRUE; - device_manager = gdk_display_get_device_manager (gdk_display_get_default ()); - gdk_drag_context_set_device (_gdk_quartz_drag_source_context, - gdk_device_manager_get_client_pointer (device_manager)); + gdk_drag_context_set_device (_gdk_quartz_drag_source_context, device); return _gdk_quartz_drag_source_context; } -gboolean -gdk_drag_motion (GdkDragContext *context, - GdkWindow *dest_window, - GdkDragProtocol protocol, - gint x_root, - gint y_root, - GdkDragAction suggested_action, - GdkDragAction possible_actions, - guint32 time) +static gboolean +gdk_quartz_drag_context_drag_motion (GdkDragContext *context, + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint x_root, + gint y_root, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time) { /* FIXME: Implement */ return FALSE; } -guint32 -gdk_drag_get_protocol_for_display (GdkDisplay *display, - guint32 xid, - GdkDragProtocol *protocol) +GdkNativeWindow +_gdk_quartz_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version) { /* FIXME: Implement */ return 0; } -void -gdk_drag_find_window_for_screen (GdkDragContext *context, - GdkWindow *drag_window, - GdkScreen *screen, - gint x_root, - gint y_root, - GdkWindow **dest_window, - GdkDragProtocol *protocol) +static GdkWindow * +gdk_quartz_drag_context_find_window (GdkDragContext *context, + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkDragProtocol *protocol) +{ + /* FIXME: Implement */ + return NULL; +} + +static void +gdk_quartz_drag_context_drag_drop (GdkDragContext *context, + guint32 time) { /* FIXME: Implement */ } -void -gdk_drag_drop (GdkDragContext *context, - guint32 time) +static void +gdk_quartz_drag_context_drag_abort (GdkDragContext *context, + guint32 time) { /* FIXME: Implement */ } -void -gdk_drag_abort (GdkDragContext *context, - guint32 time) -{ - g_return_if_fail (context != NULL); - - /* FIXME: Implement */ -} - -void -gdk_drag_status (GdkDragContext *context, - GdkDragAction action, - guint32 time) +static void +gdk_quartz_drag_context_drag_status (GdkDragContext *context, + GdkDragAction action, + guint32 time) { context->action = action; } -void -gdk_drop_reply (GdkDragContext *context, - gboolean ok, - guint32 time) -{ - g_return_if_fail (context != NULL); - - /* FIXME: Implement */ -} - -void -gdk_drop_finish (GdkDragContext *context, - gboolean success, - guint32 time) +static void +gdk_quartz_drag_context_drop_reply (GdkDragContext *context, + gboolean ok, + guint32 time) { /* FIXME: Implement */ } -void -gdk_window_register_dnd (GdkWindow *window) +static void +gdk_quartz_drag_context_drop_finish (GdkDragContext *context, + gboolean success, + guint32 time) { /* FIXME: Implement */ } -GdkAtom -gdk_drag_get_selection (GdkDragContext *context) +void +_gdk_quartz_window_register_dnd (GdkWindow *window) +{ + /* FIXME: Implement */ +} + +static GdkAtom +gdk_quartz_drag_context_get_selection (GdkDragContext *context) { /* FIXME: Implement */ return GDK_NONE; } -gboolean -gdk_drag_drop_succeeded (GdkDragContext *context) +static gboolean +gdk_quartz_drag_context_drop_status (GdkDragContext *context) { /* FIXME: Implement */ return FALSE; @@ -264,5 +148,35 @@ gdk_drag_drop_succeeded (GdkDragContext *context) id gdk_quartz_drag_context_get_dragging_info_libgtk_only (GdkDragContext *context) { - return GDK_DRAG_CONTEXT_PRIVATE (context)->dragging_info; + return GDK_QUARTZ_DRAG_CONTEXT (context)->dragging_info; +} + +static void +gdk_quartz_drag_context_init (GdkQuartzDragContext *context) +{ +} + +static void +gdk_quartz_drag_context_finalize (GObject *object) +{ + G_OBJECT_CLASS (gdk_quartz_drag_context_parent_class)->finalize (object); +} + +static void +gdk_quartz_drag_context_class_init (GdkQuartzDragContextClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkDragContextClass *context_class = GDK_DRAG_CONTEXT_CLASS (klass); + + object_class->finalize = gdk_quartz_drag_context_finalize; + + context_class->find_window = gdk_quartz_drag_context_find_window; + context_class->drag_status = gdk_quartz_drag_context_drag_status; + context_class->drag_motion = gdk_quartz_drag_context_drag_motion; + context_class->drag_abort = gdk_quartz_drag_context_drag_abort; + context_class->drag_drop = gdk_quartz_drag_context_drag_drop; + context_class->drop_reply = gdk_quartz_drag_context_drop_reply; + context_class->drop_finish = gdk_quartz_drag_context_drop_finish; + context_class->drop_status = gdk_quartz_drag_context_drop_status; + context_class->get_selection = gdk_quartz_drag_context_get_selection; } diff --git a/gdk/quartz/gdkdnd-quartz.h b/gdk/quartz/gdkdnd-quartz.h new file mode 100644 index 0000000000..ebe787d0aa --- /dev/null +++ b/gdk/quartz/gdkdnd-quartz.h @@ -0,0 +1,47 @@ +/* gdkdnd-quartz.h + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_QUARTZ_DND__ +#define __GDK_QUARTZ_DND__ + +#include +#include + +#include + +G_BEGIN_DECLS + +struct _GdkQuartzDragContext +{ + GdkDragContext context; + + id dragging_info; + GdkDevice *device; +}; + +struct _GdkQuartzDragContextClass +{ + GdkDragContextClass context_class; +}; + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DND__ */ diff --git a/gdk/quartz/gdkdrawable-quartz.c b/gdk/quartz/gdkdrawable-quartz.c deleted file mode 100644 index 632f0cd009..0000000000 --- a/gdk/quartz/gdkdrawable-quartz.c +++ /dev/null @@ -1,232 +0,0 @@ -/* gdkdrawable-quartz.c - * - * Copyright (C) 2005-2007 Imendio AB - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" -#include -#include -#include "gdkprivate-quartz.h" - -static gpointer parent_class; - -static cairo_user_data_key_t gdk_quartz_cairo_key; - -typedef struct { - GdkDrawable *drawable; - CGContextRef cg_context; -} GdkQuartzCairoSurfaceData; - -static void -gdk_quartz_cairo_surface_destroy (void *data) -{ - GdkQuartzCairoSurfaceData *surface_data = data; - GdkDrawableImplQuartz *impl = GDK_DRAWABLE_IMPL_QUARTZ (surface_data->drawable); - - impl->cairo_surface = NULL; - - gdk_quartz_drawable_release_context (surface_data->drawable, - surface_data->cg_context); - - g_free (surface_data); -} - -static cairo_surface_t * -gdk_quartz_create_cairo_surface (GdkDrawable *drawable, - int width, - int height) -{ - CGContextRef cg_context; - GdkQuartzCairoSurfaceData *surface_data; - cairo_surface_t *surface; - - cg_context = gdk_quartz_drawable_get_context (drawable, TRUE); - - if (!cg_context) - return NULL; - - surface_data = g_new (GdkQuartzCairoSurfaceData, 1); - surface_data->drawable = drawable; - surface_data->cg_context = cg_context; - - surface = cairo_quartz_surface_create_for_cg_context (cg_context, - width, height); - - cairo_surface_set_user_data (surface, &gdk_quartz_cairo_key, - surface_data, - gdk_quartz_cairo_surface_destroy); - - return surface; -} - -static cairo_surface_t * -gdk_quartz_ref_cairo_surface (GdkDrawable *drawable) -{ - GdkDrawableImplQuartz *impl = GDK_DRAWABLE_IMPL_QUARTZ (drawable); - - if (GDK_IS_WINDOW_IMPL_QUARTZ (drawable) && - GDK_WINDOW_DESTROYED (impl->wrapper)) - return NULL; - - if (!impl->cairo_surface) - { - impl->cairo_surface = - gdk_quartz_create_cairo_surface (drawable, - gdk_window_get_width (impl->wrapper), - gdk_window_get_height (impl->wrapper)); - } - else - cairo_surface_reference (impl->cairo_surface); - - return impl->cairo_surface; -} - -static void -gdk_drawable_impl_quartz_finalize (GObject *object) -{ - G_OBJECT_CLASS (parent_class)->finalize (object); -} - -static void -gdk_drawable_impl_quartz_class_init (GdkDrawableImplQuartzClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = gdk_drawable_impl_quartz_finalize; - - drawable_class->ref_cairo_surface = gdk_quartz_ref_cairo_surface; - drawable_class->create_cairo_surface = gdk_quartz_create_cairo_surface; -} - -GType -gdk_drawable_impl_quartz_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkDrawableImplQuartzClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_drawable_impl_quartz_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkDrawableImplQuartz), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - object_type = g_type_register_static (GDK_TYPE_DRAWABLE, - "GdkDrawableImplQuartz", - &object_info, 0); - } - - return object_type; -} - -CGContextRef -gdk_quartz_drawable_get_context (GdkDrawable *drawable, - gboolean antialias) -{ - if (!GDK_DRAWABLE_IMPL_QUARTZ_GET_CLASS (drawable)->get_context) - { - g_warning ("%s doesn't implement GdkDrawableImplQuartzClass::get_context()", - G_OBJECT_TYPE_NAME (drawable)); - return NULL; - } - - return GDK_DRAWABLE_IMPL_QUARTZ_GET_CLASS (drawable)->get_context (drawable, antialias); -} - -void -gdk_quartz_drawable_release_context (GdkDrawable *drawable, - CGContextRef cg_context) -{ - if (!GDK_DRAWABLE_IMPL_QUARTZ_GET_CLASS (drawable)->release_context) - { - g_warning ("%s doesn't implement GdkDrawableImplQuartzClass::release_context()", - G_OBJECT_TYPE_NAME (drawable)); - return; - } - - GDK_DRAWABLE_IMPL_QUARTZ_GET_CLASS (drawable)->release_context (drawable, cg_context); -} - -/* Help preventing "beam sync penalty" where CG makes all graphics code - * block until the next vsync if we try to flush (including call display on - * a view) too often. We do this by limiting the manual flushing done - * outside of expose calls to less than some frequency when measured over - * the last 4 flushes. This is a bit arbitray, but seems to make it possible - * for some quick manual flushes (such as gtkruler or gimp's marching ants) - * without hitting the max flush frequency. - * - * If drawable NULL, no flushing is done, only registering that a flush was - * done externally. - */ -void -_gdk_quartz_drawable_flush (GdkDrawable *drawable) -{ - static struct timeval prev_tv; - static gint intervals[4]; - static gint index; - struct timeval tv; - gint ms; - - gettimeofday (&tv, NULL); - ms = (tv.tv_sec - prev_tv.tv_sec) * 1000 + (tv.tv_usec - prev_tv.tv_usec) / 1000; - intervals[index++ % 4] = ms; - - if (drawable) - { - ms = intervals[0] + intervals[1] + intervals[2] + intervals[3]; - - /* ~25Hz on average. */ - if (ms > 4*40) - { - if (GDK_IS_WINDOW_IMPL_QUARTZ (drawable)) - { - GdkWindowImplQuartz *window_impl = GDK_WINDOW_IMPL_QUARTZ (drawable); - - [window_impl->toplevel flushWindow]; - } - - prev_tv = tv; - } - } - else - prev_tv = tv; -} - -void -_gdk_quartz_drawable_finish (GdkDrawable *drawable) -{ - GdkDrawableImplQuartz *impl = GDK_DRAWABLE_IMPL_QUARTZ (drawable); - - if (impl->cairo_surface) - { - cairo_surface_finish (impl->cairo_surface); - cairo_surface_set_user_data (impl->cairo_surface, &gdk_quartz_cairo_key, - NULL, NULL); - impl->cairo_surface = NULL; - } -} diff --git a/gdk/quartz/gdkdrawable-quartz.h b/gdk/quartz/gdkdrawable-quartz.h deleted file mode 100644 index 24d17d83ea..0000000000 --- a/gdk/quartz/gdkdrawable-quartz.h +++ /dev/null @@ -1,71 +0,0 @@ -/* gdkdrawable-quartz.h - * - * Copyright (C) 2005 Imendio AB - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DRAWABLE_QUARTZ_H__ -#define __GDK_DRAWABLE_QUARTZ_H__ - -#include - -#include - -G_BEGIN_DECLS - -/* Drawable implementation for Quartz - */ - -typedef struct _GdkDrawableImplQuartz GdkDrawableImplQuartz; -typedef struct _GdkDrawableImplQuartzClass GdkDrawableImplQuartzClass; - -#define GDK_TYPE_DRAWABLE_IMPL_QUARTZ (gdk_drawable_impl_quartz_get_type ()) -#define GDK_DRAWABLE_IMPL_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAWABLE_IMPL_QUARTZ, GdkDrawableImplQuartz)) -#define GDK_DRAWABLE_IMPL_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAWABLE_IMPL_QUARTZ, GdkDrawableImplQuartzClass)) -#define GDK_IS_DRAWABLE_IMPL_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAWABLE_IMPL_QUARTZ)) -#define GDK_IS_DRAWABLE_IMPL_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAWABLE_IMPL_QUARTZ)) -#define GDK_DRAWABLE_IMPL_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAWABLE_IMPL_QUARTZ, GdkDrawableImplQuartzClass)) - -struct _GdkDrawableImplQuartz -{ - GdkDrawable parent_instance; - - GdkDrawable *wrapper; - - cairo_surface_t *cairo_surface; -}; - -struct _GdkDrawableImplQuartzClass -{ - GdkDrawableClass parent_class; - - /* vtable */ - CGContextRef (*get_context) (GdkDrawable* drawable, - gboolean antialias); - void (*release_context) (GdkDrawable *drawable, - CGContextRef cg_context); -}; - -GType gdk_drawable_impl_quartz_get_type (void); -CGContextRef gdk_quartz_drawable_get_context (GdkDrawable *drawable, - gboolean antialias); -void gdk_quartz_drawable_release_context (GdkDrawable *drawable, - CGContextRef context); - -G_END_DECLS - -#endif /* __GDK_DRAWABLE_QUARTZ_H__ */ diff --git a/gdk/quartz/gdkeventloop-quartz.c b/gdk/quartz/gdkeventloop-quartz.c index 71c15b8a95..39f5c0aee3 100644 --- a/gdk/quartz/gdkeventloop-quartz.c +++ b/gdk/quartz/gdkeventloop-quartz.c @@ -632,21 +632,20 @@ gdk_event_check (GSource *source) GDK_THREADS_ENTER (); - /* XXX: This check isn't right it won't handle a recursive GLib main - * loop run within an outer CFRunLoop run. Such loops will pile up - * memory. Fixing this requires setting a flag *only* when we call - * g_main_context_check() from within the run loop iteraton code, - * and also maintaining our own stack of run loops... allocating and - * releasing NSAutoReleasePools not properly nested with CFRunLoop - * runs seems to cause problems. - */ - if (current_loop_level == 0) +/* Refresh the autorelease pool if we're at the base CFRunLoop level + * (indicated by current_loop_level) and the base g_main_loop level + * (indicated by g_main_depth()). Messing with the autorelease pool at + * any level of nesting can cause access to deallocated memory because + * autorelease_pool is static and releasing a pool will cause all + * pools allocated inside of it to be released as well. + */ + if (current_loop_level == 0 && g_main_depth() == 0) { if (autorelease_pool) [autorelease_pool release]; autorelease_pool = [[NSAutoreleasePool alloc] init]; } - + retval = (_gdk_event_queue_find_first (_gdk_display) != NULL || _gdk_quartz_event_loop_check_pending ()); @@ -664,7 +663,7 @@ gdk_event_dispatch (GSource *source, GDK_THREADS_ENTER (); - _gdk_events_queue (_gdk_display); + _gdk_quartz_display_queue_events (_gdk_display); event = _gdk_event_unqueue (_gdk_display); diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index 44f10cbbf4..348dff1954 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -29,10 +29,13 @@ #import #include +#include + #include "gdkscreen.h" #include "gdkkeysyms.h" +#include "gdkquartzdisplay.h" #include "gdkprivate-quartz.h" -#include "gdkdevicemanager-core.h" +#include "gdkquartzdevicemanager-core.h" #define GRIP_WIDTH 15 #define GRIP_HEIGHT 15 @@ -52,15 +55,8 @@ static int current_button_state; static void append_event (GdkEvent *event, gboolean windowing); -NSEvent * -gdk_quartz_event_get_nsevent (GdkEvent *event) -{ - /* FIXME: If the event here is unallocated, we crash. */ - return ((GdkEventPrivate *) event)->windowing_data; -} - void -_gdk_events_init (void) +_gdk_quartz_events_init (void) { _gdk_quartz_event_loop_init (); @@ -68,53 +64,10 @@ _gdk_events_init (void) } gboolean -gdk_events_pending (void) +_gdk_quartz_display_has_pending (GdkDisplay *display) { - return (_gdk_event_queue_find_first (_gdk_display) || - (_gdk_quartz_event_loop_check_pending ())); -} - -void -gdk_device_ungrab (GdkDevice *device, - guint32 time_) -{ - GdkDeviceGrabInfo *grab; - - grab = _gdk_display_get_last_device_grab (_gdk_display, device); - if (grab) - grab->serial_end = 0; - - _gdk_display_device_grab_update (_gdk_display, device, 0); -} - -GdkGrabStatus -_gdk_windowing_device_grab (GdkDevice *device, - GdkWindow *window, - GdkWindow *native, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time) -{ - g_return_val_if_fail (GDK_IS_WINDOW (window), 0); - g_return_val_if_fail (confine_to == NULL || GDK_IS_WINDOW (confine_to), 0); - - if (!window || GDK_WINDOW_DESTROYED (window)) - return GDK_GRAB_NOT_VIEWABLE; - - _gdk_display_add_device_grab (_gdk_display, - device, - window, - native, - GDK_OWNERSHIP_NONE, - owner_events, - event_mask, - 0, - time, - FALSE); - - return GDK_GRAB_SUCCESS; + return (_gdk_event_queue_find_first (display) || + (_gdk_quartz_event_loop_check_pending ())); } static void @@ -137,7 +90,7 @@ break_all_grabs (guint32 time) grab->implicit_ungrab = TRUE; } - _gdk_display_device_grab_update (_gdk_display, l->data, 0); + _gdk_display_device_grab_update (_gdk_display, l->data, NULL, 0); } g_list_free (list); @@ -354,13 +307,13 @@ create_focus_event (GdkWindow *window, gboolean in) { GdkEvent *event; - GdkDeviceManagerCore *device_manager; + GdkQuartzDeviceManagerCore *device_manager; event = gdk_event_new (GDK_FOCUS_CHANGE); event->focus_change.window = window; event->focus_change.in = in; - device_manager = GDK_DEVICE_MANAGER_CORE (_gdk_display->device_manager); + device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (_gdk_display->device_manager); gdk_event_set_device (event, device_manager->core_keyboard); return event; @@ -374,7 +327,6 @@ generate_motion_event (GdkWindow *window) NSPoint screen_point; NSWindow *nswindow; GdkQuartzView *view; - GdkWindowObject *private; GdkEvent *event; gint x, y, x_root, y_root; GdkDisplay *display; @@ -383,8 +335,7 @@ generate_motion_event (GdkWindow *window) event->any.window = NULL; event->any.send_event = TRUE; - private = (GdkWindowObject *)window; - nswindow = ((GdkWindowImplQuartz *)private->impl)->toplevel; + nswindow = ((GdkWindowImplQuartz *)window->impl)->toplevel; view = (GdkQuartzView *)[nswindow contentView]; display = gdk_window_get_display (window); @@ -396,7 +347,7 @@ generate_motion_event (GdkWindow *window) point = [nswindow convertScreenToBase:screen_point]; x = point.x; - y = private->height - point.y; + y = window->height - point.y; event->any.type = GDK_MOTION_NOTIFY; event->motion.window = window; @@ -423,7 +374,7 @@ _gdk_quartz_events_update_focus_window (GdkWindow *window, if (got_focus && window == current_keyboard_window) return; - /* FIXME: Don't do this when grabbed? Or make GdkQuartzWindow + /* FIXME: Don't do this when grabbed? Or make GdkQuartzNSWindow * disallow it in the first place instead? */ @@ -464,7 +415,6 @@ _gdk_quartz_events_send_enter_notify_event (GdkWindow *window) NSPoint point; NSPoint screen_point; NSWindow *nswindow; - GdkWindowObject *private; GdkEvent *event; gint x, y, x_root, y_root; @@ -472,8 +422,7 @@ _gdk_quartz_events_send_enter_notify_event (GdkWindow *window) event->any.window = NULL; event->any.send_event = FALSE; - private = (GdkWindowObject *)window; - nswindow = ((GdkWindowImplQuartz *)private->impl)->toplevel; + nswindow = ((GdkWindowImplQuartz *)window->impl)->toplevel; screen_point = [NSEvent mouseLocation]; @@ -482,7 +431,7 @@ _gdk_quartz_events_send_enter_notify_event (GdkWindow *window) point = [nswindow convertScreenToBase:screen_point]; x = point.x; - y = private->height - point.y; + y = window->height - point.y; event->crossing.window = window; event->crossing.subwindow = NULL; @@ -503,13 +452,12 @@ _gdk_quartz_events_send_enter_notify_event (GdkWindow *window) void _gdk_quartz_events_send_map_event (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!impl->toplevel) return; - if (private->event_mask & GDK_STRUCTURE_MASK) + if (window->event_mask & GDK_STRUCTURE_MASK) { GdkEvent event; @@ -533,17 +481,15 @@ find_toplevel_under_pointer (GdkDisplay *display, toplevel = info->toplevel_under_pointer; if (toplevel && WINDOW_IS_TOPLEVEL (toplevel)) { - GdkWindowObject *private; NSWindow *nswindow; NSPoint point; - private = (GdkWindowObject *)toplevel; - nswindow = ((GdkWindowImplQuartz *)private->impl)->toplevel; + nswindow = ((GdkWindowImplQuartz *)toplevel->impl)->toplevel; point = [nswindow convertScreenToBase:screen_point]; *x = point.x; - *y = private->height - point.y; + *y = toplevel->height - point.y; } return toplevel; @@ -599,13 +545,11 @@ find_toplevel_for_mouse_event (NSEvent *nsevent, GdkQuartzView *view; GdkDisplay *display; GdkDeviceGrabInfo *grab; - GdkWindowObject *private; view = (GdkQuartzView *)[[nsevent window] contentView]; toplevel = [view gdkWindow]; display = gdk_window_get_display (toplevel); - private = GDK_WINDOW_OBJECT (toplevel); event_type = [nsevent type]; point = [nsevent locationInWindow]; @@ -657,18 +601,16 @@ find_toplevel_for_mouse_event (NSEvent *nsevent, { /* Finally check the grab window. */ GdkWindow *grab_toplevel; - GdkWindowObject *grab_private; NSWindow *grab_nswindow; grab_toplevel = gdk_window_get_effective_toplevel (grab->window); - grab_private = (GdkWindowObject *)grab_toplevel; - grab_nswindow = ((GdkWindowImplQuartz *)grab_private->impl)->toplevel; + grab_nswindow = ((GdkWindowImplQuartz *)grab_toplevel->impl)->toplevel; point = [grab_nswindow convertScreenToBase:screen_point]; /* Note: x_root and y_root are already right. */ *x = point.x; - *y = grab_private->height - point.y; + *y = grab_toplevel->height - point.y; return grab_toplevel; } @@ -699,13 +641,11 @@ find_toplevel_for_mouse_event (NSEvent *nsevent, if (toplevel_under_pointer && WINDOW_IS_TOPLEVEL (toplevel_under_pointer)) { - GdkWindowObject *toplevel_private; GdkWindowImplQuartz *toplevel_impl; toplevel = toplevel_under_pointer; - toplevel_private = (GdkWindowObject *)toplevel; - toplevel_impl = (GdkWindowImplQuartz *)toplevel_private->impl; + toplevel_impl = (GdkWindowImplQuartz *)toplevel->impl; if ([toplevel_impl->toplevel showsResizeIndicator]) { @@ -756,17 +696,15 @@ find_window_for_ns_event (NSEvent *nsevent, NSPoint screen_point; NSEventType event_type; GdkWindow *toplevel; - GdkWindowObject *private; view = (GdkQuartzView *)[[nsevent window] contentView]; toplevel = [view gdkWindow]; - private = GDK_WINDOW_OBJECT (toplevel); point = [nsevent locationInWindow]; screen_point = [[nsevent window] convertBaseToScreen:point]; *x = point.x; - *y = private->height - point.y; + *y = toplevel->height - point.y; _gdk_quartz_window_nspoint_to_gdk_xy (screen_point, x_root, y_root); @@ -934,11 +872,8 @@ fill_scroll_event (GdkWindow *window, gint y_root, GdkScrollDirection direction) { - GdkWindowObject *private; NSPoint point; - private = GDK_WINDOW_OBJECT (window); - point = [nsevent locationInWindow]; event->any.type = GDK_SCROLL; @@ -960,7 +895,7 @@ fill_key_event (GdkWindow *window, GdkEventType type) { GdkEventPrivate *priv; - GdkDeviceManagerCore *device_manager; + GdkQuartzDeviceManagerCore *device_manager; gchar buf[7]; gunichar c = 0; @@ -975,10 +910,10 @@ fill_key_event (GdkWindow *window, event->key.group = ([nsevent modifierFlags] & NSAlternateKeyMask) ? 1 : 0; event->key.keyval = GDK_KEY_VoidSymbol; - device_manager = GDK_DEVICE_MANAGER_CORE (_gdk_display->device_manager); + device_manager = GDK_QUARTZ_DEVICE_MANAGER_CORE (_gdk_display->device_manager); gdk_event_set_device (event, device_manager->core_keyboard); - gdk_keymap_translate_keyboard_state (NULL, + gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (_gdk_display), event->key.hardware_keycode, event->key.state, event->key.group, @@ -1083,17 +1018,13 @@ synthesize_crossing_event (GdkWindow *window, gint x_root, gint y_root) { - GdkWindowObject *private; - - private = GDK_WINDOW_OBJECT (window); - switch ([nsevent type]) { case NSMouseEntered: /* Enter events are considered always to be from the root window as we * can't know for sure from what window we enter. */ - if (!(private->event_mask & GDK_ENTER_NOTIFY_MASK)) + if (!(window->event_mask & GDK_ENTER_NOTIFY_MASK)) return FALSE; fill_crossing_event (window, event, nsevent, @@ -1109,7 +1040,7 @@ synthesize_crossing_event (GdkWindow *window, * since there is no way to reliably get information about what new * window is entered when exiting one. */ - if (!(private->event_mask & GDK_LEAVE_NOTIFY_MASK)) + if (!(window->event_mask & GDK_LEAVE_NOTIFY_MASK)) return FALSE; fill_crossing_event (window, event, nsevent, @@ -1204,7 +1135,7 @@ gdk_event_translate (GdkEvent *event, * dragged. This is a workaround for the window getting events for * the window title. */ - if ([(GdkQuartzWindow *)nswindow isInMove]) + if ([(GdkQuartzNSWindow *)nswindow isInMove]) { break_all_grabs (get_time_from_ns_event (nsevent)); return FALSE; @@ -1220,14 +1151,13 @@ gdk_event_translate (GdkEvent *event, /* Apply any window filters. */ if (GDK_IS_WINDOW (window)) { - GdkWindowObject *filter_private = (GdkWindowObject *) window; GdkFilterReturn result; - if (filter_private->filters) + if (window->filters) { g_object_ref (window); - result = gdk_event_apply_filters (nsevent, event, &filter_private->filters); + result = gdk_event_apply_filters (nsevent, event, &window->filters); g_object_unref (window); @@ -1248,8 +1178,7 @@ gdk_event_translate (GdkEvent *event, event_type == NSOtherMouseDown || event_type == NSLeftMouseDown)) { - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (![NSApp isActive]) { @@ -1363,7 +1292,7 @@ gdk_event_translate (GdkEvent *event, } void -_gdk_events_queue (GdkDisplay *display) +_gdk_quartz_display_queue_events (GdkDisplay *display) { NSEvent *nsevent; @@ -1403,60 +1332,35 @@ _gdk_events_queue (GdkDisplay *display) } void -gdk_flush (void) +_gdk_quartz_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data) { /* Not supported. */ } -void -gdk_display_add_client_message_filter (GdkDisplay *display, - GdkAtom message_type, - GdkFilterFunc func, - gpointer data) -{ - /* Not supported. */ -} - -void -gdk_add_client_message_filter (GdkAtom message_type, - GdkFilterFunc func, - gpointer data) -{ - /* Not supported. */ -} - -void -gdk_display_sync (GdkDisplay *display) -{ - /* Not supported. */ -} - -void -gdk_display_flush (GdkDisplay *display) -{ - /* Not supported. */ -} gboolean -gdk_event_send_client_message_for_display (GdkDisplay *display, - GdkEvent *event, - GdkNativeWindow winid) +_gdk_quartz_display_send_client_message (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid) { /* Not supported. */ return FALSE; } void -gdk_screen_broadcast_client_message (GdkScreen *screen, - GdkEvent *event) +_gdk_quartz_screen_broadcast_client_message (GdkScreen *screen, + GdkEvent *event) { /* Not supported. */ } gboolean -gdk_screen_get_setting (GdkScreen *screen, - const gchar *name, - GValue *value) +_gdk_quartz_screen_get_setting (GdkScreen *screen, + const gchar *name, + GValue *value) { if (strcmp (name, "gtk-double-click-time") == 0) { @@ -1513,8 +1417,9 @@ gdk_screen_get_setting (GdkScreen *screen, } void -_gdk_windowing_event_data_copy (const GdkEvent *src, - GdkEvent *dst) +_gdk_quartz_display_event_data_copy (GdkDisplay *display, + const GdkEvent *src, + GdkEvent *dst) { GdkEventPrivate *priv_src = (GdkEventPrivate *) src; GdkEventPrivate *priv_dst = (GdkEventPrivate *) dst; @@ -1527,7 +1432,8 @@ _gdk_windowing_event_data_copy (const GdkEvent *src, } void -_gdk_windowing_event_data_free (GdkEvent *event) +_gdk_quartz_display_event_data_free (GdkDisplay *display, + GdkEvent *event) { GdkEventPrivate *priv = (GdkEventPrivate *) event; diff --git a/gdk/quartz/gdkgeometry-quartz.c b/gdk/quartz/gdkgeometry-quartz.c deleted file mode 100644 index bd602e33df..0000000000 --- a/gdk/quartz/gdkgeometry-quartz.c +++ /dev/null @@ -1,74 +0,0 @@ -/* gdkgeometry-quartz.c - * - * Copyright (C) 2005 Imendio AB - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#include "gdkprivate-quartz.h" - -void -_gdk_quartz_window_translate (GdkWindow *window, - cairo_region_t *area, - gint dx, - gint dy) -{ - cairo_region_t *invalidate, *scrolled; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = (GdkWindowImplQuartz *)private->impl; - GdkRectangle extents; - - cairo_region_get_extents (area, &extents); - - [impl->view scrollRect:NSMakeRect (extents.x - dx, extents.y - dy, - extents.width, extents.height) - by:NSMakeSize (dx, dy)]; - - if (impl->needs_display_region) - { - cairo_region_t *intersection; - - /* Invalidate already invalidated area that was moved at new - * location. - */ - intersection = cairo_region_copy (impl->needs_display_region); - cairo_region_intersect (intersection, area); - cairo_region_translate (intersection, dx, dy); - - _gdk_quartz_window_set_needs_display_in_region (window, intersection); - cairo_region_destroy (intersection); - } - - /* Calculate newly exposed area that needs invalidation */ - scrolled = cairo_region_copy (area); - cairo_region_translate (scrolled, dx, dy); - - invalidate = cairo_region_copy (area); - cairo_region_subtract (invalidate, scrolled); - cairo_region_destroy (scrolled); - - _gdk_quartz_window_set_needs_display_in_region (window, invalidate); - cairo_region_destroy (invalidate); -} - -gboolean -_gdk_quartz_window_queue_antiexpose (GdkWindow *window, - cairo_region_t *area) -{ - return FALSE; -} diff --git a/gdk/quartz/gdkinput-old.c b/gdk/quartz/gdkinput-old.c deleted file mode 100644 index 3ed0609d5a..0000000000 --- a/gdk/quartz/gdkinput-old.c +++ /dev/null @@ -1,68 +0,0 @@ -/* gdkinput.c - * - * Copyright (C) 2005 Imendio AB - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#include "gdkinput.h" - -GType -gdk_device_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkDeviceClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) NULL, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkDevicePrivate), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - object_type = g_type_register_static (G_TYPE_OBJECT, - "GdkDevice", - &object_info, 0); - } - - return object_type; -} - -void -gdk_device_set_key (GdkDevice *device, - guint index, - guint keyval, - GdkModifierType modifiers) -{ - /* FIXME: Implement */ -} - -gboolean -gdk_device_get_axis (GdkDevice *device, gdouble *axes, GdkAxisUse use, gdouble *value) -{ - /* FIXME: Implement */ - return FALSE; -} - diff --git a/gdk/quartz/gdkinput.c b/gdk/quartz/gdkinput.c deleted file mode 100644 index 31d1bd2c18..0000000000 --- a/gdk/quartz/gdkinput.c +++ /dev/null @@ -1,287 +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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 - -#include "gdkprivate-quartz.h" -#include "gdkinput.h" -#include "gdkprivate.h" -#include "gdkinputprivate.h" -#include -#include - -/* Addition used for extension_events mask */ -#define GDK_ALL_DEVICES_MASK (1<<30) - -GdkDevice *_gdk_core_pointer = NULL; - -/* Global variables */ - -gchar *_gdk_input_gxid_host; -gint _gdk_input_gxid_port; -gint _gdk_input_ignore_core; -GList *_gdk_input_windows; -GList *_gdk_input_devices; - - -GList * -gdk_devices_list (void) -{ - return _gdk_input_devices; -} - -GList * -gdk_display_list_devices (GdkDisplay *dpy) -{ - return _gdk_input_devices; -} - -static void -_gdk_input_select_device_events (GdkWindow *impl_window, - GdkDevice *device) -{ - guint event_mask; - GdkWindowObject *w; - GdkInputWindow *iw; - GdkInputMode mode; - gboolean has_cursor; - GdkDeviceType type; - GList *l; - - event_mask = 0; - iw = ((GdkWindowObject *)impl_window)->input_window; - - g_object_get (device, - "type", &type, - "input-mode", &mode, - "has-cursor", &has_cursor, - NULL); - - if (iw == NULL || - mode == GDK_MODE_DISABLED || - type == GDK_DEVICE_TYPE_MASTER) - return; - - for (l = _gdk_input_windows; l != NULL; l = l->next) - { - w = l->data; - - if (has_cursor || (w->extension_events & GDK_ALL_DEVICES_MASK)) - { - event_mask = w->extension_events; - - if (event_mask) - event_mask |= GDK_PROXIMITY_OUT_MASK - | GDK_BUTTON_PRESS_MASK - | GDK_BUTTON_RELEASE_MASK; - - gdk_window_set_device_events ((GdkWindow *) w, device, event_mask); - } - } -} - -gint -_gdk_input_enable_window (GdkWindow *window, GdkDevicePrivate *gdkdev) -{ - return TRUE; -} - -gint -_gdk_input_disable_window (GdkWindow *window, GdkDevicePrivate *gdkdev) -{ - return TRUE; -} - - -GdkInputWindow * -_gdk_input_window_find(GdkWindow *window) -{ - GList *tmp_list; - - for (tmp_list=_gdk_input_windows; tmp_list; tmp_list=tmp_list->next) - if (((GdkInputWindow *)(tmp_list->data))->window == window) - return (GdkInputWindow *)(tmp_list->data); - - return NULL; /* Not found */ -} - -/* FIXME: this routine currently needs to be called between creation - and the corresponding configure event (because it doesn't get the - root_relative_geometry). This should work with - gtk_window_set_extension_events, but will likely fail in other - cases */ - -void -gdk_input_set_extension_events (GdkWindow *window, - gint mask, - GdkExtensionMode mode) -{ - GdkWindowObject *window_private; - GdkWindowObject *impl_window; - GList *tmp_list; - GdkInputWindow *iw; - - g_return_if_fail (window != NULL); - g_return_if_fail (GDK_WINDOW_IS_QUARTZ (window)); - - window_private = (GdkWindowObject*) window; - impl_window = (GdkWindowObject *)_gdk_window_get_impl_window (window); - - if (mode == GDK_EXTENSION_EVENTS_NONE) - mask = 0; - - if (mask != 0) - { - iw = g_new (GdkInputWindow, 1); - - iw->window = window; - iw->mode = mode; - - iw->obscuring = NULL; - iw->num_obscuring = 0; - iw->grabbed = FALSE; - - _gdk_input_windows = g_list_append (_gdk_input_windows, iw); - window_private->extension_events = mask; - - /* Add enter window events to the event mask */ - /* FIXME, this is not needed for XINPUT_NONE */ - gdk_window_set_events (window, - gdk_window_get_events (window) | - GDK_ENTER_NOTIFY_MASK); - } - else - { - iw = _gdk_input_window_find (window); - if (iw) - { - _gdk_input_windows = g_list_remove (_gdk_input_windows,iw); - g_free (iw); - } - - window_private->extension_events = 0; - } - - for (tmp_list = _gdk_input_devices; tmp_list; tmp_list = tmp_list->next) - { - GdkDevice *dev = tmp_list->data; - - _gdk_input_select_device_events (GDK_WINDOW (impl_window), dev); - } -} - -void -_gdk_input_window_destroy (GdkWindow *window) -{ - GdkInputWindow *input_window; - - input_window = _gdk_input_window_find (window); - g_return_if_fail (input_window != NULL); - - _gdk_input_windows = g_list_remove (_gdk_input_windows,input_window); - g_free (input_window); -} - -void -_gdk_input_check_extension_events (GdkDevice *device) -{ -} - -void -_gdk_input_init (void) -{ - GdkDeviceManager *device_manager; - GList *list, *l; - - device_manager = gdk_display_get_device_manager (_gdk_display); - - /* For backward compatibility, just add floating devices that are - * not keyboards. - */ - list = gdk_device_manager_list_devices (device_manager, - GDK_DEVICE_TYPE_FLOATING); - for (l = list; l; l = l->next) - { - GdkDevice *device = l->data; - - if (gdk_device_get_source(device) == GDK_SOURCE_KEYBOARD) - continue; - - _gdk_input_devices = g_list_prepend (_gdk_input_devices, l->data); - } - - g_list_free (list); - - /* Now set "core" pointer to the first master device that is a pointer. - */ - list = gdk_device_manager_list_devices (device_manager, - GDK_DEVICE_TYPE_MASTER); - - for (l = list; l; l = l->next) - { - GdkDevice *device = list->data; - - if (gdk_device_get_source(device) != GDK_SOURCE_MOUSE) - continue; - - _gdk_display->core_pointer = device; - break; - } - - g_list_free (list); - - /* Add the core pointer to the devices list */ - _gdk_input_devices = g_list_prepend (_gdk_input_devices, - _gdk_display->core_pointer); - - _gdk_input_ignore_core = FALSE; -} - -void -_gdk_input_exit (void) -{ - GList *tmp_list; - GdkDevicePrivate *gdkdev; - - for (tmp_list = _gdk_input_devices; tmp_list; tmp_list = tmp_list->next) - { - gdkdev = (GdkDevicePrivate *)(tmp_list->data); - if (gdkdev != (GdkDevicePrivate *)_gdk_core_pointer) - { - gdk_device_set_mode ((GdkDevice *)gdkdev, GDK_MODE_DISABLED); - g_object_unref(gdkdev); - } - } - - g_list_free (_gdk_input_devices); - - for (tmp_list = _gdk_input_windows; tmp_list; tmp_list = tmp_list->next) - { - g_free (tmp_list->data); - } - g_list_free (_gdk_input_windows); -} diff --git a/gdk/quartz/gdkinputprivate.h b/gdk/quartz/gdkinputprivate.h deleted file mode 100644 index 7ba4293a8e..0000000000 --- a/gdk/quartz/gdkinputprivate.h +++ /dev/null @@ -1,149 +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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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/. - */ - -#ifndef __GDK_INPUTPRIVATE_H__ -#define __GDK_INPUTPRIVATE_H__ - -#include "config.h" -#include "gdkinput.h" -#include "gdkevents.h" -#include "gdkquartz.h" - -typedef struct _GdkAxisInfo GdkAxisInfo; -typedef struct _GdkInputVTable GdkInputVTable; - -struct _GdkInputVTable { - gint (*set_mode) (guint32 deviceid, GdkInputMode mode); - void (*set_axes) (guint32 deviceid, GdkAxisUse *axes); - void (*set_key) (guint32 deviceid, - guint index, - guint keyval, - GdkModifierType modifiers); - - GdkTimeCoord* (*motion_events) (GdkWindow *window, - guint32 deviceid, - guint32 start, - guint32 stop, - gint *nevents_return); - void (*get_pointer) (GdkWindow *window, - guint32 deviceid, - gdouble *x, - gdouble *y, - gdouble *pressure, - gdouble *xtilt, - gdouble *ytilt, - GdkModifierType *mask); - gint (*grab_pointer) (GdkWindow * window, - gint owner_events, - GdkEventMask event_mask, - GdkWindow * confine_to, - guint32 time); - void (*ungrab_pointer) (guint32 time); - - void (*configure_event) (GdkEventConfigure *event, GdkWindow *window); - void (*enter_event) (GdkEventCrossing *event, GdkWindow *window); - gint (*other_event) (GdkEvent *event, GdkWindow *window); - /* Handle an unidentified event. Returns TRUE if handled, FALSE - otherwise */ - gint (*window_none_event) (GdkEvent *event); - gint (*enable_window) (GdkWindow *window, GdkDevicePrivate *gdkdev); - gint (*disable_window) (GdkWindow *window, GdkDevicePrivate *gdkdev); -}; - -/* information about a device axis */ -struct _GdkAxisInfo -{ - /* reported x resolution */ - gint xresolution; - - /* reported x minimum/maximum values */ - gint xmin_value, xmax_value; - - /* calibrated resolution (for aspect ration) - only relative values - between axes used */ - gint resolution; - - /* calibrated minimum/maximum values */ - gint min_value, max_value; -}; - -#define GDK_INPUT_NUM_EVENTC 6 - -struct _GdkDevicePrivate { - GdkDevice info; -}; - -struct _GdkInputWindow -{ - /* gdk window */ - GdkWindow *window; - - /* Extension mode (GDK_EXTENSION_EVENTS_ALL/CURSOR) */ - GdkExtensionMode mode; - - /* position relative to root window */ - gint root_x; - gint root_y; - - /* rectangles relative to window of windows obscuring this one */ - GdkRectangle *obscuring; - gint num_obscuring; - - /* Is there a pointer grab for this window ? */ - gint grabbed; -}; - -/* Global data */ - -extern const GdkDevice gdk_input_core_info; -extern GdkDevice *_gdk_core_pointer; -extern GList *_gdk_input_devices; -extern GList *_gdk_input_windows; - -extern GdkInputVTable gdk_input_vtable; -/* information about network port and host for gxid daemon */ -extern gchar *_gdk_input_gxid_host; -extern gint _gdk_input_gxid_port; -extern gint _gdk_input_ignore_core; - -/* Function declarations */ - -GdkInputWindow * _gdk_input_window_find (GdkWindow *window); -void _gdk_input_window_destroy (GdkWindow *window); -void _gdk_input_init (void); -void _gdk_input_exit (void); -gint _gdk_input_enable_window (GdkWindow *window, - GdkDevicePrivate *gdkdev); -gint _gdk_input_disable_window (GdkWindow *window, - GdkDevicePrivate *gdkdev); -void _gdk_init_input_core (void); - -void _gdk_input_window_crossing (GdkWindow *window, - gboolean enter); - -void _gdk_input_exit (void); - -#endif /* __GDK_INPUTPRIVATE_H__ */ diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c index a077bfa225..768d10d58c 100644 --- a/gdk/quartz/gdkkeys-quartz.c +++ b/gdk/quartz/gdkkeys-quartz.c @@ -54,6 +54,8 @@ #include #include #include "gdk.h" +#include "gdkquartzkeys.h" +#include "gdkkeysprivate.h" #include "gdkkeysyms.h" #define NUM_KEYCODES 128 @@ -61,6 +63,27 @@ static GdkKeymap *default_keymap = NULL; +struct _GdkQuartzKeymap +{ + GdkKeymap keymap; +}; + +struct _GdkQuartzKeymapClass +{ + GdkKeymapClass keymap_class; +}; + +G_DEFINE_TYPE (GdkQuartzKeymap, gdk_quartz_keymap, GDK_TYPE_KEYMAP) + +GdkKeymap * +_gdk_quartz_display_get_keymap (GdkDisplay *display) +{ + if (default_keymap == NULL) + default_keymap = g_object_new (gdk_quartz_keymap_get_type (), NULL); + + return default_keymap; +} + /* Note: we could check only if building against the 10.5 SDK instead, but * that would make non-xml layouts not work in 32-bit which would be a quite * bad regression. This way, old unsupported layouts will just not work in @@ -420,58 +443,42 @@ maybe_update_keymap (void) } } -GdkKeymap * -gdk_keymap_get_for_display (GdkDisplay *display) -{ - g_return_val_if_fail (display == gdk_display_get_default (), NULL); - - if (default_keymap == NULL) - default_keymap = g_object_new (gdk_keymap_get_type (), NULL); - - return default_keymap; -} - -PangoDirection -gdk_keymap_get_direction (GdkKeymap *keymap) +static PangoDirection +gdk_quartz_keymap_get_direction (GdkKeymap *keymap) { return PANGO_DIRECTION_NEUTRAL; } -gboolean -gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) +static gboolean +gdk_quartz_keymap_have_bidi_layouts (GdkKeymap *keymap) { /* FIXME: Can we implement this? */ return FALSE; } -gboolean -gdk_keymap_get_caps_lock_state (GdkKeymap *keymap) +static gboolean +gdk_quartz_keymap_get_caps_lock_state (GdkKeymap *keymap) { /* FIXME: Implement this. */ return FALSE; } -gboolean -gdk_keymap_get_num_lock_state (GdkKeymap *keymap) +static gboolean +gdk_quartz_keymap_get_num_lock_state (GdkKeymap *keymap) { /* FIXME: Implement this. */ return FALSE; } -gboolean -gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, - guint keyval, - GdkKeymapKey **keys, - gint *n_keys) +static gboolean +gdk_quartz_keymap_get_entries_for_keyval (GdkKeymap *keymap, + guint keyval, + GdkKeymapKey **keys, + gint *n_keys) { GArray *keys_array; int i; - g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE); - g_return_val_if_fail (keys != NULL, FALSE); - g_return_val_if_fail (n_keys != NULL, FALSE); - g_return_val_if_fail (keyval != 0, FALSE); - maybe_update_keymap (); *n_keys = 0; @@ -498,20 +505,17 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, return *n_keys > 0;; } -gboolean -gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, - guint hardware_keycode, - GdkKeymapKey **keys, - guint **keyvals, - gint *n_entries) +static gboolean +gdk_quartz_keymap_get_entries_for_keycode (GdkKeymap *keymap, + guint hardware_keycode, + GdkKeymapKey **keys, + guint **keyvals, + gint *n_entries) { GArray *keys_array, *keyvals_array; int i; guint *p; - g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE); - g_return_val_if_fail (n_entries != NULL, FALSE); - maybe_update_keymap (); *n_entries = 0; @@ -562,14 +566,10 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, return *n_entries > 0; } -guint -gdk_keymap_lookup_key (GdkKeymap *keymap, - const GdkKeymapKey *key) +static guint +gdk_quartz_keymap_lookup_key (GdkKeymap *keymap, + const GdkKeymapKey *key) { - g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), 0); - g_return_val_if_fail (key != NULL, 0); - g_return_val_if_fail (key->group < 4, 0); - /* FIXME: Implement */ return 0; @@ -609,23 +609,20 @@ translate_keysym (guint hardware_keycode, return tmp_keyval; } -gboolean -gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, - guint hardware_keycode, - GdkModifierType state, - gint group, - guint *keyval, - gint *effective_group, - gint *level, - GdkModifierType *consumed_modifiers) +static gboolean +gdk_quartz_keymap_translate_keyboard_state (GdkKeymap *keymap, + guint hardware_keycode, + GdkModifierType state, + gint group, + guint *keyval, + gint *effective_group, + gint *level, + GdkModifierType *consumed_modifiers) { guint tmp_keyval; GdkModifierType bit; guint tmp_modifiers = 0; - g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE); - g_return_val_if_fail (group >= 0 && group <= 1, FALSE); - maybe_update_keymap (); if (keyval) @@ -659,16 +656,16 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, return TRUE; } -void -gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, - GdkModifierType *state) +static void +gdk_quartz_keymap_add_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) { /* FIXME: For now, we've mimiced the Windows backend. */ } -gboolean -gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, - GdkModifierType *state) +static gboolean +gdk_quartz_keymap_map_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) { /* FIXME: For now, we've mimiced the Windows backend. */ return TRUE; @@ -733,3 +730,34 @@ _gdk_quartz_keys_is_modifier (guint keycode) return FALSE; } + +static void +gdk_quartz_keymap_init (GdkQuartzKeymap *keymap) +{ +} + +static void +gdk_quartz_keymap_finalize (GObject *object) +{ + G_OBJECT_CLASS (gdk_quartz_keymap_parent_class)->finalize (object); +} + +static void +gdk_quartz_keymap_class_init (GdkQuartzKeymapClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkKeymapClass *keymap_class = GDK_KEYMAP_CLASS (klass); + + object_class->finalize = gdk_quartz_keymap_finalize; + + keymap_class->get_direction = gdk_quartz_keymap_get_direction; + keymap_class->have_bidi_layouts = gdk_quartz_keymap_have_bidi_layouts; + keymap_class->get_caps_lock_state = gdk_quartz_keymap_get_caps_lock_state; + keymap_class->get_num_lock_state = gdk_quartz_keymap_get_num_lock_state; + keymap_class->get_entries_for_keyval = gdk_quartz_keymap_get_entries_for_keyval; + keymap_class->get_entries_for_keycode = gdk_quartz_keymap_get_entries_for_keycode; + keymap_class->lookup_key = gdk_quartz_keymap_lookup_key; + keymap_class->translate_keyboard_state = gdk_quartz_keymap_translate_keyboard_state; + keymap_class->add_virtual_modifiers = gdk_quartz_keymap_add_virtual_modifiers; + keymap_class->map_virtual_modifiers = gdk_quartz_keymap_map_virtual_modifiers; +} diff --git a/gdk/quartz/gdkmain-quartz.c b/gdk/quartz/gdkmain-quartz.c deleted file mode 100644 index 6e84756907..0000000000 --- a/gdk/quartz/gdkmain-quartz.c +++ /dev/null @@ -1,93 +0,0 @@ -/* gdkmain-quartz.c - * - * Copyright (C) 2005 Imendio AB - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" -#include - -#include "gdk.h" -#include - -const GOptionEntry _gdk_windowing_args[] = { - { NULL } -}; - -void -_gdk_windowing_init (void) -{ - ProcessSerialNumber psn = { 0, kCurrentProcess }; - void (*_gtk_quartz_framework_init_ptr) (void); - - /* Make the current process a foreground application, i.e. an app - * with a user interface, in case we're not running from a .app bundle - */ - TransformProcessType (&psn, kProcessTransformToForegroundApplication); - - /* Initialize GTK+ framework if there is one. */ - _gtk_quartz_framework_init_ptr = dlsym (RTLD_DEFAULT, "_gtk_quartz_framework_init"); - if (_gtk_quartz_framework_init_ptr) - _gtk_quartz_framework_init_ptr (); -} - -void -gdk_error_trap_push (void) -{ -} - -gint -gdk_error_trap_pop (void) -{ - return 0; -} - -void -gdk_error_trap_pop_ignored (void) -{ -} - -gchar * -gdk_get_display (void) -{ - return g_strdup (gdk_display_get_name (gdk_display_get_default ())); -} - -void -gdk_notify_startup_complete (void) -{ - /* FIXME: Implement? */ -} - -void -gdk_notify_startup_complete_with_id (const gchar* startup_id) -{ - /* FIXME: Implement? */ -} - -void -gdk_window_set_startup_id (GdkWindow *window, - const gchar *startup_id) -{ - /* FIXME: Implement? */ -} - -void -_gdk_windowing_display_set_sm_client_id (GdkDisplay *display, - const gchar *sm_client_id) -{ -} diff --git a/gdk/quartz/gdkprivate-quartz.h b/gdk/quartz/gdkprivate-quartz.h index ca9eae30b1..44f186a425 100644 --- a/gdk/quartz/gdkprivate-quartz.h +++ b/gdk/quartz/gdkprivate-quartz.h @@ -25,8 +25,11 @@ #define GDK_QUARTZ_RELEASE_POOL [pool release] #include -#include #include +#include +#include +#include +#include #include @@ -34,50 +37,191 @@ #include "config.h" -#define GDK_DRAG_CONTEXT_PRIVATE(context) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (context)->windowing_data) - -typedef struct _GdkCursorPrivate GdkCursorPrivate; -typedef struct _GdkDragContextPrivate GdkDragContextPrivate; - -struct _GdkVisualClass -{ - GObjectClass parent_class; -}; - -struct _GdkCursorPrivate -{ - GdkCursor cursor; - NSCursor *nscursor; -}; - -struct _GdkDragContextPrivate -{ - id dragging_info; - GdkDevice *device; -}; - extern GdkDisplay *_gdk_display; extern GdkScreen *_gdk_screen; extern GdkWindow *_gdk_root; extern GdkDragContext *_gdk_quartz_drag_source_context; -#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindowObject *)win)->impl)) +#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl)) /* Initialization */ -void _gdk_windowing_update_window_sizes (GdkScreen *screen); -void _gdk_windowing_window_init (void); -void _gdk_events_init (void); -void _gdk_visual_init (void); -void _gdk_input_init (void); +void _gdk_quartz_window_init_windowing (GdkDisplay *display, + GdkScreen *screen); +void _gdk_quartz_events_init (void); void _gdk_quartz_event_loop_init (void); -/* GC */ +/* Cursor */ +NSCursor *_gdk_quartz_cursor_get_ns_cursor (GdkCursor *cursor); + +/* Events */ typedef enum { - GDK_QUARTZ_CONTEXT_STROKE = 1 << 0, - GDK_QUARTZ_CONTEXT_FILL = 1 << 1, - GDK_QUARTZ_CONTEXT_TEXT = 1 << 2 -} GdkQuartzContextValuesMask; + GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP +} GdkQuartzEventSubType; + +void _gdk_quartz_events_update_focus_window (GdkWindow *new_window, + gboolean got_focus); +void _gdk_quartz_events_send_map_event (GdkWindow *window); +GdkEventMask _gdk_quartz_events_get_current_event_mask (void); + +void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window); + +/* Event loop */ +gboolean _gdk_quartz_event_loop_check_pending (void); +NSEvent * _gdk_quartz_event_loop_get_pending (void); +void _gdk_quartz_event_loop_release_event (NSEvent *event); + +/* Keys */ +GdkEventType _gdk_quartz_keys_event_type (NSEvent *event); +gboolean _gdk_quartz_keys_is_modifier (guint keycode); + +/* Drag and Drop */ +void _gdk_quartz_window_register_dnd (GdkWindow *window); +GdkDragContext * _gdk_quartz_window_drag_begin (GdkWindow *window, + GdkDevice *device, + GList *targets); + +/* Display */ + +GdkDisplay * _gdk_quartz_display_open (const gchar *name); + +/* Display methods - events */ +void _gdk_quartz_display_queue_events (GdkDisplay *display); +gboolean _gdk_quartz_display_has_pending (GdkDisplay *display); + +void _gdk_quartz_display_event_data_copy (GdkDisplay *display, + const GdkEvent *src, + GdkEvent *dst); +void _gdk_quartz_display_event_data_free (GdkDisplay *display, + GdkEvent *event); + +gboolean _gdk_quartz_display_send_client_message (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid); +void _gdk_quartz_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data); + +/* Display methods - cursor */ +GdkCursor *_gdk_quartz_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType type); +GdkCursor *_gdk_quartz_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name); +GdkCursor *_gdk_quartz_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y); +gboolean _gdk_quartz_display_supports_cursor_alpha (GdkDisplay *display); +gboolean _gdk_quartz_display_supports_cursor_color (GdkDisplay *display); +void _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height); +void _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height); + +/* Display methods - window */ +void _gdk_quartz_display_before_process_all_updates (GdkDisplay *display); +void _gdk_quartz_display_after_process_all_updates (GdkDisplay *display); +void _gdk_quartz_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask); + +/* Display methods - keymap */ +GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display); + +/* Display methods - Drag and Drop */ +GdkNativeWindow _gdk_quartz_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version); + +/* Display methods - selection */ +gboolean _gdk_quartz_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event); +GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection); +void _gdk_quartz_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time); +gint _gdk_quartz_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format); +void _gdk_quartz_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time); +gint _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); +gchar * _gdk_quartz_display_utf8_to_string_target (GdkDisplay *displayt, + const gchar *str); + + +/* Display manager */ +void _gdk_quartz_display_manager_add_display (GdkDisplayManager *manager, + GdkDisplay *display); +void _gdk_quartz_display_manager_remove_display (GdkDisplayManager *manager, + GdkDisplay *display); + +/* Display manager methods - events */ +GdkAtom _gdk_quartz_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gboolean copy_name); +gchar * _gdk_quartz_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom); + +/* Screen */ +GdkScreen *_gdk_quartz_screen_new (void); +void _gdk_quartz_screen_update_window_sizes (GdkScreen *screen); + +/* Screen methods - visual */ +GdkVisual * _gdk_quartz_screen_get_rgba_visual (GdkScreen *screen); +GdkVisual * _gdk_quartz_screen_get_system_visual (GdkScreen *screen); +gint _gdk_quartz_screen_visual_get_best_depth (GdkScreen *screen); +GdkVisualType _gdk_quartz_screen_visual_get_best_type (GdkScreen *screen); +GdkVisual * _gdk_quartz_screen_get_system_visual (GdkScreen *screen); +GdkVisual* _gdk_quartz_screen_visual_get_best (GdkScreen *screen); +GdkVisual* _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen *screen, + gint depth); +GdkVisual* _gdk_quartz_screen_visual_get_best_with_type (GdkScreen *screen, + GdkVisualType visual_type); +GdkVisual* _gdk_quartz_screen_visual_get_best_with_both (GdkScreen *screen, + gint depth, + GdkVisualType visual_type); +void _gdk_quartz_screen_query_depths (GdkScreen *screen, + gint **depths, + gint *count); +void _gdk_quartz_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count); +void _gdk_quartz_screen_init_visuals (GdkScreen *screen); +GList * _gdk_quartz_screen_list_visuals (GdkScreen *screen); + +/* Screen methods - events */ +void _gdk_quartz_screen_broadcast_client_message (GdkScreen *screen, + GdkEvent *event); +gboolean _gdk_quartz_screen_get_setting (GdkScreen *screen, + const gchar *name, + GValue *value); + /* Window */ gboolean _gdk_quartz_window_is_ancestor (GdkWindow *ancestor, @@ -104,45 +248,44 @@ void _gdk_quartz_window_did_resign_main (GdkWindow *window); void _gdk_quartz_window_debug_highlight (GdkWindow *window, gint number); -void _gdk_quartz_window_set_needs_display_in_region (GdkWindow *window, - cairo_region_t *region); - void _gdk_quartz_window_update_position (GdkWindow *window); -/* Events */ -typedef enum { - GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP -} GdkQuartzEventSubType; -void _gdk_quartz_events_update_focus_window (GdkWindow *new_window, - gboolean got_focus); -void _gdk_quartz_events_send_map_event (GdkWindow *window); -GdkEventMask _gdk_quartz_events_get_current_event_mask (void); +/* Window methods - testing */ +void _gdk_quartz_window_sync_rendering (GdkWindow *window); +gboolean _gdk_quartz_window_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease); +gboolean _gdk_quartz_window_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, + GdkModifierType modifiers, + GdkEventType button_pressrelease); -void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window); +/* Window methods - property */ +gboolean _gdk_quartz_window_get_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data); +void _gdk_quartz_window_change_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements); +void _gdk_quartz_window_delete_property (GdkWindow *window, + GdkAtom property); -/* Event loop */ -gboolean _gdk_quartz_event_loop_check_pending (void); -NSEvent * _gdk_quartz_event_loop_get_pending (void); -void _gdk_quartz_event_loop_release_event (NSEvent *event); - -/* Keys */ -GdkEventType _gdk_quartz_keys_event_type (NSEvent *event); -gboolean _gdk_quartz_keys_is_modifier (guint keycode); - -/* Drawable */ -void _gdk_quartz_drawable_finish (GdkDrawable *drawable); -void _gdk_quartz_drawable_flush (GdkDrawable *drawable); - -/* Geometry */ -void _gdk_quartz_window_scroll (GdkWindow *window, - gint dx, - gint dy); -void _gdk_quartz_window_translate (GdkWindow *window, - cairo_region_t *area, - gint dx, - gint dy); -gboolean _gdk_quartz_window_queue_antiexpose (GdkWindow *window, - cairo_region_t *area); #endif /* __GDK_PRIVATE_QUARTZ_H__ */ diff --git a/gdk/quartz/gdkproperty-quartz.c b/gdk/quartz/gdkproperty-quartz.c index 3496b5c1db..40a45cc991 100644 --- a/gdk/quartz/gdkproperty-quartz.c +++ b/gdk/quartz/gdkproperty-quartz.c @@ -151,61 +151,56 @@ intern_atom_internal (const gchar *atom_name, gboolean allocate) } GdkAtom -gdk_atom_intern (const gchar *atom_name, - gboolean only_if_exists) +_gdk_quartz_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gboolean copy_name) { - return intern_atom_internal (atom_name, TRUE); + return intern_atom_internal (atom_name, copy_name); } -GdkAtom -gdk_atom_intern_static_string (const gchar *atom_name) -{ - return intern_atom_internal (atom_name, FALSE); -} - - gchar * -gdk_atom_name (GdkAtom atom) +_gdk_quartz_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom) { ensure_atom_tables (); - + if (GPOINTER_TO_INT (atom) >= atoms_to_names->len) return NULL; - + return g_strdup (g_ptr_array_index (atoms_to_names, GPOINTER_TO_INT (atom))); } void -gdk_property_delete (GdkWindow *window, - GdkAtom property) +_gdk_quartz_window_delete_property (GdkWindow *window, + GdkAtom property) { /* FIXME: Implement */ } gint -gdk_property_get (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gulong offset, - gulong length, - gint pdelete, - GdkAtom *actual_property_type, - gint *actual_format_type, - gint *actual_length, - guchar **data) +_gdk_quartz_window_get_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data) { /* FIXME: Implement */ return 0; } void -gdk_property_change (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gint format, - GdkPropMode mode, - const guchar *data, - gint nelements) +_gdk_quartz_window_change_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements) { /* FIXME: Implement */ } diff --git a/gdk/quartz/gdkquartz.h b/gdk/quartz/gdkquartz.h index 48c47484cb..ea00837393 100644 --- a/gdk/quartz/gdkquartz.h +++ b/gdk/quartz/gdkquartz.h @@ -22,6 +22,8 @@ #define __GDK_QUARTZ_H__ #include + +#include #include G_BEGIN_DECLS @@ -39,12 +41,22 @@ typedef unsigned int NSUInteger; typedef float CGFloat; #endif -NSWindow *gdk_quartz_window_get_nswindow (GdkWindow *window); -NSView *gdk_quartz_window_get_nsview (GdkWindow *window); -NSImage *gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf); -id gdk_quartz_drag_context_get_dragging_info_libgtk_only (GdkDragContext *context); -NSEvent *gdk_quartz_event_get_nsevent (GdkEvent *event); - G_END_DECLS +#define __GDKQUARTZ_H_INSIDE__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#undef __GDKQUARTZ_H_INSIDE__ + #endif /* __GDK_QUARTZ_H__ */ diff --git a/gdk/quartz/gdkquartzcursor.h b/gdk/quartz/gdkquartzcursor.h new file mode 100644 index 0000000000..7ab9498ea5 --- /dev/null +++ b/gdk/quartz/gdkquartzcursor.h @@ -0,0 +1,51 @@ +/* gdkquartzcursor.h + * + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_CURSOR_H__ +#define __GDK_QUARTZ_CURSOR_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_CURSOR (gdk_quartz_cursor_get_type ()) +#define GDK_QUARTZ_CURSOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_CURSOR, GdkQuartzCursor)) +#define GDK_QUARTZ_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_CURSOR, GdkQuartzCursorClass)) +#define GDK_IS_QUARTZ_CURSOR(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_CURSOR)) +#define GDK_IS_QUARTZ_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_CURSOR)) +#define GDK_QUARTZ_CURSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_CURSOR, GdkQuartzCursorClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzCursor GdkQuartzCursor; +#else +typedef GdkCursor GdkQuartzCursor; +#endif +typedef struct _GdkQuartzCursorClass GdkQuartzCursorClass; + +GType gdk_quartz_cursor_get_type (void); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_CURSOR_H__ */ diff --git a/gdk/quartz/gdkquartzdevice-core.h b/gdk/quartz/gdkquartzdevice-core.h new file mode 100644 index 0000000000..018a1df9cf --- /dev/null +++ b/gdk/quartz/gdkquartzdevice-core.h @@ -0,0 +1,45 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_DEVICE_CORE_H__ +#define __GDK_QUARTZ_DEVICE_CORE_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_DEVICE_CORE (gdk_quartz_device_core_get_type ()) +#define GDK_QUARTZ_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_QUARTZ_DEVICE_CORE, GdkQuartzDeviceCore)) +#define GDK_QUARTZ_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_QUARTZ_DEVICE_CORE, GdkQuartzDeviceCoreClass)) +#define GDK_IS_QUARTZ_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_QUARTZ_DEVICE_CORE)) +#define GDK_IS_QUARTZ_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_QUARTZ_DEVICE_CORE)) +#define GDK_QUARTZ_DEVICE_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_QUARTZ_DEVICE_CORE, GdkQuartzDeviceCoreClass)) + +typedef struct _GdkQuartzDeviceCore GdkQuartzDeviceCore; +typedef struct _GdkQuartzDeviceCoreClass GdkQuartzDeviceCoreClass; + +GType gdk_quartz_device_core_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DEVICE_CORE_H__ */ diff --git a/gdk/quartz/gdkquartzdevicemanager-core.h b/gdk/quartz/gdkquartzdevicemanager-core.h new file mode 100644 index 0000000000..eed8f50859 --- /dev/null +++ b/gdk/quartz/gdkquartzdevicemanager-core.h @@ -0,0 +1,47 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_DEVICE_MANAGER_CORE_H__ +#define __GDK_QUARTZ_DEVICE_MANAGER_CORE_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE (gdk_quartz_device_manager_core_get_type ()) +#define GDK_QUARTZ_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE, GdkQuartzDeviceManagerCore)) +#define GDK_QUARTZ_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE, GdkQuartzDeviceManagerCoreClass)) +#define GDK_IS_QUARTZ_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE)) +#define GDK_IS_QUARTZ_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE)) +#define GDK_QUARTZ_DEVICE_MANAGER_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_QUARTZ_DEVICE_MANAGER_CORE, GdkQuartzDeviceManagerCoreClass)) + +typedef struct _GdkQuartzDeviceManagerCore GdkQuartzDeviceManagerCore; +typedef struct _GdkQuartzDeviceManagerCoreClass GdkQuartzDeviceManagerCoreClass; + + +GType gdk_quartz_device_manager_core_get_type (void) G_GNUC_CONST; + + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DEVICE_MANAGER_CORE_H__ */ diff --git a/gdk/quartz/gdkquartzdisplay.h b/gdk/quartz/gdkquartzdisplay.h new file mode 100644 index 0000000000..708ad2f596 --- /dev/null +++ b/gdk/quartz/gdkquartzdisplay.h @@ -0,0 +1,52 @@ +/* gdkquartzdisplay.h + * + * Copyright (C) 2005-2007 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_DISPLAY_H__ +#define __GDK_QUARTZ_DISPLAY_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_DISPLAY (gdk_quartz_display_get_type ()) +#define GDK_QUARTZ_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_DISPLAY, GdkQuartzDisplay)) +#define GDK_QUARTZ_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_DISPLAY, GdkQuartzDisplayClass)) +#define GDK_IS_QUARTZ_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_DISPLAY)) +#define GDK_IS_QUARTZ_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_DISPLAY)) +#define GDK_QUARTZ_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_DISPLAY, GdkQuartzDisplayClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzDisplay GdkQuartzDisplay; +#else +typedef GdkDisplay GdkQuartzDisplay; +#endif +typedef struct _GdkQuartzDisplayClass GdkQuartzDisplayClass; + + +GType gdk_quartz_display_get_type (void); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DISPLAY_H__ */ diff --git a/gdk/quartz/gdkquartzdisplaymanager.h b/gdk/quartz/gdkquartzdisplaymanager.h new file mode 100644 index 0000000000..00a71ae5c2 --- /dev/null +++ b/gdk/quartz/gdkquartzdisplaymanager.h @@ -0,0 +1,48 @@ +/* gdkquartzdisplaymanager.h + * + * Copyright (C) 2005-2007 Imendio AB + * Copyright 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_DISPLAY_MANAGER_H__ +#define __GDK_QUARTZ_DISPLAY_MANAGER_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_DISPLAY_MANAGER (gdk_quartz_display_manager_get_type ()) +#define GDK_QUARTZ_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_DISPLAY_MANAGER, GdkQuartzDisplayManager)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzDisplayManager GdkQuartzDisplayManager; +#else +typedef GdkDisplayManager _GdkQuartzDisplayManager; +#endif +typedef struct _GdkDisplayManagerClass GdkQuartzDisplayManagerClass; + + +GType gdk_quartz_display_manager_get_type (void); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DISPLAY_MANAGER_H__ */ diff --git a/gdk/quartz/gdkquartzdnd.h b/gdk/quartz/gdkquartzdnd.h new file mode 100644 index 0000000000..2199d0d403 --- /dev/null +++ b/gdk/quartz/gdkquartzdnd.h @@ -0,0 +1,53 @@ +/* gdkquartzdnd.h + * + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_DND_H__ +#define __GDK_QUARTZ_DND_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_DRAG_CONTEXT (gdk_quartz_drag_context_get_type ()) +#define GDK_QUARTZ_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_DRAG_CONTEXT, GdkQuartzDragContext)) +#define GDK_QUARTZ_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_DRAG_CONTEXT, GdkQuartzDragContextClass)) +#define GDK_IS_QUARTZ_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_DRAG_CONTEXT)) +#define GDK_IS_QUARTZ_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_DRAG_CONTEXT)) +#define GDK_QUARTZ_DRAG_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_DRAG_CONTEXT, GdkQuartzDragContextClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzDragContext GdkQuartzDragContext; +#else +typedef GdkDragContext GdkQuartzDragContext; +#endif +typedef struct _GdkQuartzDragContextClass GdkQuartzDragContextClass; + + +GType gdk_quartz_drag_context_get_type (void); + +id gdk_quartz_drag_context_get_dragging_info_libgtk_only (GdkDragContext *context); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_DRAG_CONTEXT_H__ */ diff --git a/gdk/quartz/gdkquartzkeys.h b/gdk/quartz/gdkquartzkeys.h new file mode 100644 index 0000000000..b9e1dfe071 --- /dev/null +++ b/gdk/quartz/gdkquartzkeys.h @@ -0,0 +1,51 @@ +/* gdkquartzkeyd.h + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_KEYS_H__ +#define __GDK_QUARTZ_KEYS_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_KEYMAP (gdk_quartz_keymap_get_type ()) +#define GDK_QUARTZ_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_KEYMAP, GdkQuartzKeymap)) +#define GDK_QUARTZ_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_KEYMAP, GdkQuartzKeymapClass)) +#define GDK_IS_QUARTZ_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_KEYMAP)) +#define GDK_IS_QUARTZ_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_KEYMAP)) +#define GDK_QUARTZ_KEYMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_KEYMAP, GdkQuartzKeymapClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzKeymap GdkQuartzKeymap; +#else +typedef GdkKeymap GdkQuartzKeymap; +#endif +typedef struct _GdkQuartzKeymapClass GdkQuartzKeymapClass; + +GType gdk_quartz_keymap_get_type (void); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_KEYS_H__ */ diff --git a/gdk/quartz/gdkquartzscreen.h b/gdk/quartz/gdkquartzscreen.h new file mode 100644 index 0000000000..b8b17bfade --- /dev/null +++ b/gdk/quartz/gdkquartzscreen.h @@ -0,0 +1,51 @@ +/* gdkquartzscreen.h + * + * Copyright (C) 2009, 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_SCREEN_H__ +#define __GDK_QUARTZ_SCREEN_H__ + +G_BEGIN_DECLS + +#include + +#define GDK_TYPE_QUARTZ_SCREEN (gdk_quartz_screen_get_type ()) +#define GDK_QUARTZ_SCREEN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_SCREEN, GdkQuartzScreen)) +#define GDK_QUARTZ_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_SCREEN, GdkQuartzScreenClass)) +#define GDK_IS_QUARTZ_SCREEN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_SCREEN)) +#define GDK_IS_QUARTZ_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_SCREEN)) +#define GDK_QUARTZ_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_SCREEN, GdkQuartzScreenClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzScreen GdkQuartzScreen; +#else +typedef GdkScreen GdkQuartzScreen; +#endif +typedef struct _GdkQuartzScreenClass GdkQuartzScreenClass; + + +GType gdk_quartz_screen_get_type (void); + +G_END_DECLS + +#endif /* _GDK_QUARTZ_SCREEN_H_ */ diff --git a/gdk/quartz/gdkquartzutils.h b/gdk/quartz/gdkquartzutils.h new file mode 100644 index 0000000000..a3eeda16e3 --- /dev/null +++ b/gdk/quartz/gdkquartzutils.h @@ -0,0 +1,38 @@ +/* gdkquartzutils.h + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_UTILS_H__ +#define __GDK_QUARTZ_UTILS_H__ + +#include + +G_BEGIN_DECLS + +NSImage *gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf); +NSEvent *gdk_quartz_event_get_nsevent (GdkEvent *event); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_UTILS_H__ */ diff --git a/gdk/quartz/gdkquartzvisual.h b/gdk/quartz/gdkquartzvisual.h new file mode 100644 index 0000000000..ba3acbc83d --- /dev/null +++ b/gdk/quartz/gdkquartzvisual.h @@ -0,0 +1,52 @@ +/* gdkquartzvisual.h + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_VISUAL_H__ +#define __GDK_QUARTZ_VISUAL_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_VISUAL (gdk_quartz_visual_get_type ()) +#define GDK_QUARTZ_VISUAL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_VISUAL, GdkQuartzVisual)) +#define GDK_QUARTZ_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_VISUAL, GdkQuartzVisualClass)) +#define GDK_IS_QUARTZ_VISUAL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_VISUAL)) +#define GDK_IS_QUARTZ_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_VISUAL)) +#define GDK_QUARTZ_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_VISUAL, GdkQuartzVisualClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzVisual GdkQuartzVisual; +#else +typedef GdkVisual GdkQuartzVisual; +#endif +typedef struct _GdkQuartzVisualClass GdkQuartzVisualClass; + + +GType gdk_quartz_visual_get_type (void); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_VISUAL_H__ */ diff --git a/gdk/quartz/gdkquartzwindow.h b/gdk/quartz/gdkquartzwindow.h new file mode 100644 index 0000000000..934b4c4135 --- /dev/null +++ b/gdk/quartz/gdkquartzwindow.h @@ -0,0 +1,54 @@ +/* gdkquartzwindow.h + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKQUARTZ_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_QUARTZ_WINDOW_H__ +#define __GDK_QUARTZ_WINDOW_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_QUARTZ_WINDOW (gdk_quartz_window_get_type ()) +#define GDK_QUARTZ_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_QUARTZ_WINDOW, GdkQuartzWindow)) +#define GDK_QUARTZ_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_QUARTZ_WINDOW, GdkQuartzWindowClass)) +#define GDK_IS_QUARTZ_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_QUARTZ_WINDOW)) +#define GDK_IS_QUARTZ_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_QUARTZ_WINDOW)) +#define GDK_QUARTZ_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_QUARTZ_WINDOW, GdkQuartzWindowClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkQuartzWindow GdkQuartzWindow; +#else +typedef GdkWindow GdkQuartzWindow; +#endif +typedef struct _GdkQuartzWindowClass GdkQuartzWindowClass; + +GType gdk_quartz_window_get_type (void); + +NSWindow *gdk_quartz_window_get_nswindow (GdkWindow *window); +NSView *gdk_quartz_window_get_nsview (GdkWindow *window); + +G_END_DECLS + +#endif /* __GDK_QUARTZ_WINDOW_H__ */ diff --git a/gdk/quartz/gdkscreen-quartz.c b/gdk/quartz/gdkscreen-quartz.c index d90366e91d..678a947243 100644 --- a/gdk/quartz/gdkscreen-quartz.c +++ b/gdk/quartz/gdkscreen-quartz.c @@ -1,7 +1,7 @@ /* gdkscreen-quartz.c * * Copyright (C) 2005 Imendio AB - * Copyright (C) 2009 Kristian Rietveld + * Copyright (C) 2009,2010 Kristian Rietveld * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,8 +20,9 @@ */ #include "config.h" -#include "gdk.h" -#include "gdkscreen-quartz.h" + +#include + #include "gdkprivate-quartz.h" @@ -48,7 +49,7 @@ * all monitors in the root window. Once that size is known, we iterate * over the monitors and translate their Cocoa position to a position * in the root window of the GdkScreen. This happens below in the - * function gdk_screen_quartz_calculate_layout(). + * function gdk_quartz_screen_calculate_layout(). * * A Cocoa coordinate is always relative to the origin of the monitor * coordinate space. Such coordinates are mapped to their respective @@ -59,47 +60,38 @@ * but GDK coordinates can *not*! */ -static void gdk_screen_quartz_dispose (GObject *object); -static void gdk_screen_quartz_finalize (GObject *object); -static void gdk_screen_quartz_calculate_layout (GdkScreenQuartz *screen); +static void gdk_quartz_screen_dispose (GObject *object); +static void gdk_quartz_screen_finalize (GObject *object); +static void gdk_quartz_screen_calculate_layout (GdkQuartzScreen *screen); static void display_reconfiguration_callback (CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo); -G_DEFINE_TYPE (GdkScreenQuartz, _gdk_screen_quartz, GDK_TYPE_SCREEN); +G_DEFINE_TYPE (GdkQuartzScreen, gdk_quartz_screen, GDK_TYPE_SCREEN); static void -_gdk_screen_quartz_class_init (GdkScreenQuartzClass *klass) +gdk_quartz_screen_init (GdkQuartzScreen *quartz_screen) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->dispose = gdk_screen_quartz_dispose; - object_class->finalize = gdk_screen_quartz_finalize; -} - -static void -_gdk_screen_quartz_init (GdkScreenQuartz *screen_quartz) -{ - GdkScreen *screen = GDK_SCREEN (screen_quartz); + GdkScreen *screen = GDK_SCREEN (quartz_screen); NSScreen *nsscreen; nsscreen = [[NSScreen screens] objectAtIndex:0]; gdk_screen_set_resolution (screen, 72.0 * [nsscreen userSpaceScaleFactor]); - gdk_screen_quartz_calculate_layout (screen_quartz); + gdk_quartz_screen_calculate_layout (quartz_screen); CGDisplayRegisterReconfigurationCallback (display_reconfiguration_callback, screen); - screen_quartz->emit_monitors_changed = FALSE; + quartz_screen->emit_monitors_changed = FALSE; } static void -gdk_screen_quartz_dispose (GObject *object) +gdk_quartz_screen_dispose (GObject *object) { - GdkScreenQuartz *screen = GDK_SCREEN_QUARTZ (object); + GdkQuartzScreen *screen = GDK_QUARTZ_SCREEN (object); if (screen->screen_changed_id) { @@ -110,11 +102,11 @@ gdk_screen_quartz_dispose (GObject *object) CGDisplayRemoveReconfigurationCallback (display_reconfiguration_callback, screen); - G_OBJECT_CLASS (_gdk_screen_quartz_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_quartz_screen_parent_class)->dispose (object); } static void -gdk_screen_quartz_screen_rects_free (GdkScreenQuartz *screen) +gdk_quartz_screen_screen_rects_free (GdkQuartzScreen *screen) { screen->n_screens = 0; @@ -126,16 +118,16 @@ gdk_screen_quartz_screen_rects_free (GdkScreenQuartz *screen) } static void -gdk_screen_quartz_finalize (GObject *object) +gdk_quartz_screen_finalize (GObject *object) { - GdkScreenQuartz *screen = GDK_SCREEN_QUARTZ (object); + GdkQuartzScreen *screen = GDK_QUARTZ_SCREEN (object); - gdk_screen_quartz_screen_rects_free (screen); + gdk_quartz_screen_screen_rects_free (screen); } static void -gdk_screen_quartz_calculate_layout (GdkScreenQuartz *screen) +gdk_quartz_screen_calculate_layout (GdkQuartzScreen *screen) { NSArray *array; int i; @@ -143,7 +135,7 @@ gdk_screen_quartz_calculate_layout (GdkScreenQuartz *screen) GDK_QUARTZ_ALLOC_POOL; - gdk_screen_quartz_screen_rects_free (screen); + gdk_quartz_screen_screen_rects_free (screen); array = [NSScreen screens]; @@ -192,18 +184,48 @@ gdk_screen_quartz_calculate_layout (GdkScreenQuartz *screen) GDK_QUARTZ_RELEASE_POOL; } +void +_gdk_quartz_screen_update_window_sizes (GdkScreen *screen) +{ + GList *windows, *list; + + /* The size of the root window is so that it can contain all + * monitors attached to this machine. The monitors are laid out + * within this root window. We calculate the size of the root window + * and the positions of the different monitors in gdkscreen-quartz.c. + * + * This data is updated when the monitor configuration is changed. + */ + + /* FIXME: At some point, fetch the root window from GdkScreen. But + * on OS X will we only have a single root window anyway. + */ + _gdk_root->x = 0; + _gdk_root->y = 0; + _gdk_root->abs_x = 0; + _gdk_root->abs_y = 0; + _gdk_root->width = gdk_screen_get_width (screen); + _gdk_root->height = gdk_screen_get_height (screen); + + windows = gdk_screen_get_toplevel_windows (screen); + + for (list = windows; list; list = list->next) + _gdk_quartz_window_update_position (list->data); + + g_list_free (windows); +} static void -process_display_reconfiguration (GdkScreenQuartz *screen) +process_display_reconfiguration (GdkQuartzScreen *screen) { int width, height; width = gdk_screen_get_width (GDK_SCREEN (screen)); height = gdk_screen_get_height (GDK_SCREEN (screen)); - gdk_screen_quartz_calculate_layout (GDK_SCREEN_QUARTZ (screen)); + gdk_quartz_screen_calculate_layout (GDK_QUARTZ_SCREEN (screen)); - _gdk_windowing_update_window_sizes (GDK_SCREEN (screen)); + _gdk_quartz_screen_update_window_sizes (GDK_SCREEN (screen)); if (screen->emit_monitors_changed) { @@ -219,7 +241,7 @@ process_display_reconfiguration (GdkScreenQuartz *screen) static gboolean screen_changed_idle (gpointer data) { - GdkScreenQuartz *screen = data; + GdkQuartzScreen *screen = data; process_display_reconfiguration (data); @@ -233,7 +255,7 @@ display_reconfiguration_callback (CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo) { - GdkScreenQuartz *screen = userInfo; + GdkQuartzScreen *screen = userInfo; if (flags & kCGDisplayBeginConfigurationFlag) { @@ -263,34 +285,22 @@ display_reconfiguration_callback (CGDirectDisplayID display, } } -GdkScreen * -_gdk_screen_quartz_new (void) +static GdkDisplay * +gdk_quartz_screen_get_display (GdkScreen *screen) { - return g_object_new (GDK_TYPE_SCREEN_QUARTZ, NULL); -} - -GdkDisplay * -gdk_screen_get_display (GdkScreen *screen) -{ - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return _gdk_display; } -GdkWindow * -gdk_screen_get_root_window (GdkScreen *screen) +static GdkWindow * +gdk_quartz_screen_get_root_window (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return _gdk_root; } -gint -gdk_screen_get_number (GdkScreen *screen) +static gint +gdk_quartz_screen_get_number (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return 0; } @@ -304,20 +314,16 @@ _gdk_windowing_substitute_screen_number (const gchar *display_name, return g_strdup (display_name); } -gint -gdk_screen_get_width (GdkScreen *screen) +static gint +gdk_quartz_screen_get_width (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - - return GDK_SCREEN_QUARTZ (screen)->width; + return GDK_QUARTZ_SCREEN (screen)->width; } -gint -gdk_screen_get_height (GdkScreen *screen) +static gint +gdk_quartz_screen_get_height (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - - return GDK_SCREEN_QUARTZ (screen)->height; + return GDK_QUARTZ_SCREEN (screen)->height; } static gint @@ -352,110 +358,125 @@ get_nsscreen_for_monitor (gint monitor_num) return screen; } -gint -gdk_screen_get_width_mm (GdkScreen *screen) +static gint +gdk_quartz_screen_get_width_mm (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return get_mm_from_pixels (get_nsscreen_for_monitor (0), - GDK_SCREEN_QUARTZ (screen)->width); + GDK_QUARTZ_SCREEN (screen)->width); } -gint -gdk_screen_get_height_mm (GdkScreen *screen) +static gint +gdk_quartz_screen_get_height_mm (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return get_mm_from_pixels (get_nsscreen_for_monitor (0), - GDK_SCREEN_QUARTZ (screen)->height); + GDK_QUARTZ_SCREEN (screen)->height); } -gint -gdk_screen_get_n_monitors (GdkScreen *screen) +static gint +gdk_quartz_screen_get_n_monitors (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - - return GDK_SCREEN_QUARTZ (screen)->n_screens; + return GDK_QUARTZ_SCREEN (screen)->n_screens; } -gint -gdk_screen_get_primary_monitor (GdkScreen *screen) +static gint +gdk_quartz_screen_get_primary_monitor (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return 0; } -gint -gdk_screen_get_monitor_width_mm (GdkScreen *screen, - gint monitor_num) +static gint +gdk_quartz_screen_get_monitor_width_mm (GdkScreen *screen, + gint monitor_num) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - g_return_val_if_fail (monitor_num < gdk_screen_get_n_monitors (screen), 0); - g_return_val_if_fail (monitor_num >= 0, 0); - return get_mm_from_pixels (get_nsscreen_for_monitor (monitor_num), - GDK_SCREEN_QUARTZ (screen)->screen_rects[monitor_num].width); + GDK_QUARTZ_SCREEN (screen)->screen_rects[monitor_num].width); } -gint -gdk_screen_get_monitor_height_mm (GdkScreen *screen, - gint monitor_num) +static gint +gdk_quartz_screen_get_monitor_height_mm (GdkScreen *screen, + gint monitor_num) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - g_return_val_if_fail (monitor_num < gdk_screen_get_n_monitors (screen), 0); - g_return_val_if_fail (monitor_num >= 0, 0); - return get_mm_from_pixels (get_nsscreen_for_monitor (monitor_num), - GDK_SCREEN_QUARTZ (screen)->screen_rects[monitor_num].height); + GDK_QUARTZ_SCREEN (screen)->screen_rects[monitor_num].height); } -gchar * -gdk_screen_get_monitor_plug_name (GdkScreen *screen, - gint monitor_num) +static gchar * +gdk_quartz_screen_get_monitor_plug_name (GdkScreen *screen, + gint monitor_num) { /* FIXME: Is there some useful name we could use here? */ return NULL; } -void -gdk_screen_get_monitor_geometry (GdkScreen *screen, - gint monitor_num, - GdkRectangle *dest) +static void +gdk_quartz_screen_get_monitor_geometry (GdkScreen *screen, + gint monitor_num, + GdkRectangle *dest) { - g_return_if_fail (GDK_IS_SCREEN (screen)); - g_return_if_fail (monitor_num < gdk_screen_get_n_monitors (screen)); - g_return_if_fail (monitor_num >= 0); - - *dest = GDK_SCREEN_QUARTZ (screen)->screen_rects[monitor_num]; + *dest = GDK_QUARTZ_SCREEN (screen)->screen_rects[monitor_num]; } -gchar * -gdk_screen_make_display_name (GdkScreen *screen) +static gchar * +gdk_quartz_screen_make_display_name (GdkScreen *screen) { return g_strdup (gdk_display_get_name (_gdk_display)); } -GdkWindow * -gdk_screen_get_active_window (GdkScreen *screen) +static GdkWindow * +gdk_quartz_screen_get_active_window (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return NULL; } -GList * -gdk_screen_get_window_stack (GdkScreen *screen) +static GList * +gdk_quartz_screen_get_window_stack (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return NULL; } -gboolean -gdk_screen_is_composited (GdkScreen *screen) +static gboolean +gdk_quartz_screen_is_composited (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - return TRUE; } + +static void +gdk_quartz_screen_class_init (GdkQuartzScreenClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkScreenClass *screen_class = GDK_SCREEN_CLASS (klass); + + object_class->dispose = gdk_quartz_screen_dispose; + object_class->finalize = gdk_quartz_screen_finalize; + + screen_class->get_display = gdk_quartz_screen_get_display; + screen_class->get_width = gdk_quartz_screen_get_width; + screen_class->get_height = gdk_quartz_screen_get_height; + screen_class->get_width_mm = gdk_quartz_screen_get_width_mm; + screen_class->get_height_mm = gdk_quartz_screen_get_height_mm; + screen_class->get_number = gdk_quartz_screen_get_number; + screen_class->get_root_window = gdk_quartz_screen_get_root_window; + screen_class->get_n_monitors = gdk_quartz_screen_get_n_monitors; + screen_class->get_primary_monitor = gdk_quartz_screen_get_primary_monitor; + screen_class->get_monitor_width_mm = gdk_quartz_screen_get_monitor_width_mm; + screen_class->get_monitor_height_mm = gdk_quartz_screen_get_monitor_height_mm; + screen_class->get_monitor_plug_name = gdk_quartz_screen_get_monitor_plug_name; + screen_class->get_monitor_geometry = gdk_quartz_screen_get_monitor_geometry; + screen_class->is_composited = gdk_quartz_screen_is_composited; + screen_class->make_display_name = gdk_quartz_screen_make_display_name; + screen_class->get_active_window = gdk_quartz_screen_get_active_window; + screen_class->get_window_stack = gdk_quartz_screen_get_window_stack; + screen_class->broadcast_client_message = _gdk_quartz_screen_broadcast_client_message; + screen_class->get_setting = _gdk_quartz_screen_get_setting; + screen_class->get_rgba_visual = _gdk_quartz_screen_get_rgba_visual; + screen_class->get_system_visual = _gdk_quartz_screen_get_system_visual; + screen_class->visual_get_best_depth = _gdk_quartz_screen_visual_get_best_depth; + screen_class->visual_get_best_type = _gdk_quartz_screen_visual_get_best_type; + screen_class->visual_get_best = _gdk_quartz_screen_visual_get_best; + screen_class->visual_get_best_with_depth = _gdk_quartz_screen_visual_get_best_with_depth; + screen_class->visual_get_best_with_type = _gdk_quartz_screen_visual_get_best_with_type; + screen_class->visual_get_best_with_both = _gdk_quartz_screen_visual_get_best_with_both; + screen_class->query_depths = _gdk_quartz_screen_query_depths; + screen_class->query_visual_types = _gdk_quartz_screen_query_visual_types; + screen_class->list_visuals = _gdk_quartz_screen_list_visuals; +} diff --git a/gdk/quartz/gdkscreen-quartz.h b/gdk/quartz/gdkscreen-quartz.h index 4d211e3828..1999b5c19d 100644 --- a/gdk/quartz/gdkscreen-quartz.h +++ b/gdk/quartz/gdkscreen-quartz.h @@ -1,6 +1,6 @@ /* gdkscreen-quartz.h * - * Copyright (C) 2009 Kristian Rietveld + * Copyright (C) 2009,2010 Kristian Rietveld * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,22 +18,14 @@ * Boston, MA 02111-1307, USA. */ -#ifndef __GDK_SCREEN_QUARTZ_H__ -#define __GDK_SCREEN_QUARTZ_H__ +#ifndef __GDK_QUARTZ_SCREEN__ +#define __GDK_QUARTZ_SCREEN__ + +#include G_BEGIN_DECLS -typedef struct _GdkScreenQuartz GdkScreenQuartz; -typedef struct _GdkScreenQuartzClass GdkScreenQuartzClass; - -#define GDK_TYPE_SCREEN_QUARTZ (_gdk_screen_quartz_get_type ()) -#define GDK_SCREEN_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_SCREEN_QUARTZ, GdkScreenQuartz)) -#define GDK_SCREEN_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_SCREEN_QUARTZ, GdkScreenQuartzClass)) -#define GDK_IS_SCREEN_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_SCREEN_QUARTZ)) -#define GDK_IS_SCREEN_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_SCREEN_QUARTZ)) -#define GDK_SCREEN_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_SCREEN_QUARTZ, GdkScreenQuartzClass)) - -struct _GdkScreenQuartz +struct _GdkQuartzScreen { GdkScreen parent_instance; @@ -54,14 +46,11 @@ struct _GdkScreenQuartz guint emit_monitors_changed : 1; }; -struct _GdkScreenQuartzClass +struct _GdkQuartzScreenClass { GdkScreenClass parent_class; }; -GType _gdk_screen_quartz_get_type (void); -GdkScreen *_gdk_screen_quartz_new (void); - G_END_DECLS -#endif /* _GDK_SCREEN_QUARTZ_H_ */ +#endif /* __GDK_QUARTZ_SCREEN__ */ diff --git a/gdk/quartz/gdkselection-quartz.c b/gdk/quartz/gdkselection-quartz.c index c327eb9ef0..446a23e48f 100644 --- a/gdk/quartz/gdkselection-quartz.c +++ b/gdk/quartz/gdkselection-quartz.c @@ -26,111 +26,64 @@ #include "gdkproperty.h" gboolean -gdk_selection_owner_set_for_display (GdkDisplay *display, - GdkWindow *owner, - GdkAtom selection, - guint32 time, - gint send_event) +_gdk_quartz_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gint send_event) { /* FIXME: Implement */ return TRUE; } GdkWindow* -gdk_selection_owner_get_for_display (GdkDisplay *display, - GdkAtom selection) +_gdk_quartz_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection) { /* FIXME: Implement */ return NULL; } void -gdk_selection_convert (GdkWindow *requestor, - GdkAtom selection, - GdkAtom target, - guint32 time) +_gdk_quartz_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time) { /* FIXME: Implement */ } gint -gdk_selection_property_get (GdkWindow *requestor, - guchar **data, - GdkAtom *ret_type, - gint *ret_format) +_gdk_quartz_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format) { /* FIXME: Implement */ return 0; } void -gdk_selection_send_notify_for_display (GdkDisplay *display, - guint32 requestor, - GdkAtom selection, - GdkAtom target, - GdkAtom property, - guint32 time) -{ - /* FIXME: Implement */ -} - -gint -gdk_text_property_to_text_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) -{ - /* FIXME: Implement */ - return 0; -} - -gint -gdk_string_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) -{ - /* FIXME: Implement */ - return 0; -} - -void gdk_free_compound_text (guchar *ctext) +_gdk_quartz_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time) { /* FIXME: Implement */ } gchar * -gdk_utf8_to_string_target (const gchar *str) +_gdk_quartz_display_utf8_to_string_target (GdkDisplay *display, + const gchar *str) { /* FIXME: Implement */ return NULL; } -gboolean -gdk_utf8_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) -{ - /* FIXME: Implement */ - return 0; -} - -void -gdk_free_text_list (gchar **list) -{ - g_return_if_fail (list != NULL); - - g_free (*list); - g_free (list); -} - static gint make_list (const gchar *text, gint length, @@ -200,13 +153,13 @@ make_list (const gchar *text, return n_strings; } -gint -gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gint +_gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { g_return_val_if_fail (text != NULL, 0); g_return_val_if_fail (length >= 0, 0); diff --git a/gdk/quartz/gdkspawn-quartz.c b/gdk/quartz/gdkspawn-quartz.c deleted file mode 100644 index 6cddd648b1..0000000000 --- a/gdk/quartz/gdkspawn-quartz.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#include "config.h" - -#include "gdkspawn.h" - -#include -#include - -gboolean -gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error) -{ - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - g_assert (sizeof(GPid) == sizeof(int)); - - return g_spawn_async (working_directory, - argv, - envp, - flags, - child_setup, - user_data, - child_pid, - error); -} - -gboolean -gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error) -{ - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - g_assert (sizeof(GPid) == sizeof(int)); - - return g_spawn_async_with_pipes (working_directory, - argv, - envp, - flags, - child_setup, - user_data, - child_pid, - standard_input, - standard_output, - standard_error, - error); -} - -gboolean -gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error) -{ - gchar **argv = NULL; - gboolean retval; - - g_return_val_if_fail (command_line != NULL, FALSE); - - if (!g_shell_parse_argv (command_line, - NULL, &argv, - error)) - return FALSE; - - retval = gdk_spawn_on_screen (screen, - NULL, argv, NULL, - G_SPAWN_SEARCH_PATH, - NULL, NULL, NULL, - error); - g_strfreev (argv); - - return retval; -} diff --git a/gdk/quartz/gdktestutils-quartz.c b/gdk/quartz/gdktestutils-quartz.c index f62baa4619..731b00b2ca 100644 --- a/gdk/quartz/gdktestutils-quartz.c +++ b/gdk/quartz/gdktestutils-quartz.c @@ -22,54 +22,19 @@ #include #include -/** - * gdk_test_render_sync - * @window: a mapped GdkWindow - * - * This function retrives a pixel from @window to force the windowing - * system to carry out any pending rendering commands. - * This function is intended to be used to syncronize with rendering - * pipelines, to benchmark windowing system rendering operations. - **/ void -gdk_test_render_sync (GdkWindow *window) +_gdk_quartz_window_sync_rendering (GdkWindow *window) { /* FIXME: Find out if there is a way to implement this on quartz. */ } -/** - * gdk_test_simulate_key - * @window: Gdk window to simulate a key event for. - * @x: x coordinate within @window for the key event. - * @y: y coordinate within @window for the key event. - * @keyval: A Gdk keyboard value. - * @modifiers: Keyboard modifiers the event is setup with. - * @key_pressrelease: either %GDK_KEY_PRESS or %GDK_KEY_RELEASE - * - * This function is intended to be used in Gtk+ test programs. - * If (@x,@y) are > (-1,-1), it will warp the mouse pointer to - * the given (@x,@y) corrdinates within @window and simulate a - * key press or release event. - * When the mouse pointer is warped to the target location, use - * of this function outside of test programs that run in their - * own virtual windowing system (e.g. Xvfb) is not recommended. - * If (@x,@y) are passed as (-1,-1), the mouse pointer will not - * be warped and @window origin will be used as mouse pointer - * location for the event. - * Also, gtk_test_simulate_key() is a fairly low level function, - * for most testing purposes, gtk_test_widget_send_key() is the - * right function to call which will generate a key press event - * followed by its accompanying key release event. - * - * Returns: wether all actions neccessary for a key event simulation were carried out successfully. - **/ gboolean -gdk_test_simulate_key (GdkWindow *window, - gint x, - gint y, - guint keyval, - GdkModifierType modifiers, - GdkEventType key_pressrelease) +_gdk_quartz_window_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease) { g_return_val_if_fail (key_pressrelease == GDK_KEY_PRESS || key_pressrelease == GDK_KEY_RELEASE, FALSE); g_return_val_if_fail (window != NULL, FALSE); @@ -82,36 +47,13 @@ gdk_test_simulate_key (GdkWindow *window, return FALSE; } -/** - * gdk_test_simulate_button - * @window: Gdk window to simulate a button event for. - * @x: x coordinate within @window for the button event. - * @y: y coordinate within @window for the button event. - * @button: Number of the pointer button for the event, usually 1, 2 or 3. - * @modifiers: Keyboard modifiers the event is setup with. - * @button_pressrelease: either %GDK_BUTTON_PRESS or %GDK_BUTTON_RELEASE - * - * This function is intended to be used in Gtk+ test programs. - * It will warp the mouse pointer to the given (@x,@y) corrdinates - * within @window and simulate a button press or release event. - * Because the mouse pointer needs to be warped to the target - * location, use of this function outside of test programs that - * run in their own virtual windowing system (e.g. Xvfb) is not - * recommended. - * Also, gtk_test_simulate_button() is a fairly low level function, - * for most testing purposes, gtk_test_widget_click() is the right - * function to call which will generate a button press event followed - * by its accompanying button release event. - * - * Returns: wether all actions neccessary for a button event simulation were carried out successfully. - **/ gboolean -gdk_test_simulate_button (GdkWindow *window, - gint x, - gint y, - guint button, /*1..3*/ - GdkModifierType modifiers, - GdkEventType button_pressrelease) +_gdk_quartz_window_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, /*1..3*/ + GdkModifierType modifiers, + GdkEventType button_pressrelease) { g_return_val_if_fail (button_pressrelease == GDK_BUTTON_PRESS || button_pressrelease == GDK_BUTTON_RELEASE, FALSE); g_return_val_if_fail (window != NULL, FALSE); diff --git a/gdk/quartz/gdkutils-quartz.c b/gdk/quartz/gdkutils-quartz.c new file mode 100644 index 0000000000..122a31cb07 --- /dev/null +++ b/gdk/quartz/gdkutils-quartz.c @@ -0,0 +1,99 @@ +/* gdkutils-quartz.c + * + * Copyright (C) 2005 Imendio AB + * Copyright (C) 2010 Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include + +#include +#include "gdkprivate-quartz.h" + +NSImage * +gdk_quartz_pixbuf_to_ns_image_libgtk_only (GdkPixbuf *pixbuf) +{ + NSBitmapImageRep *bitmap_rep; + NSImage *image; + gboolean has_alpha; + + has_alpha = gdk_pixbuf_get_has_alpha (pixbuf); + + /* Create a bitmap image rep */ + bitmap_rep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL + pixelsWide:gdk_pixbuf_get_width (pixbuf) + pixelsHigh:gdk_pixbuf_get_height (pixbuf) + bitsPerSample:8 samplesPerPixel:has_alpha ? 4 : 3 + hasAlpha:has_alpha isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace + bytesPerRow:0 bitsPerPixel:0]; + + { + /* Add pixel data to bitmap rep */ + guchar *src, *dst; + int src_stride, dst_stride; + int x, y; + + src_stride = gdk_pixbuf_get_rowstride (pixbuf); + dst_stride = [bitmap_rep bytesPerRow]; + + for (y = 0; y < gdk_pixbuf_get_height (pixbuf); y++) + { + src = gdk_pixbuf_get_pixels (pixbuf) + y * src_stride; + dst = [bitmap_rep bitmapData] + y * dst_stride; + + for (x = 0; x < gdk_pixbuf_get_width (pixbuf); x++) + { + if (has_alpha) + { + guchar red, green, blue, alpha; + + red = *src++; + green = *src++; + blue = *src++; + alpha = *src++; + + *dst++ = (red * alpha) / 255; + *dst++ = (green * alpha) / 255; + *dst++ = (blue * alpha) / 255; + *dst++ = alpha; + } + else + { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + } + } + } + } + + image = [[NSImage alloc] init]; + [image addRepresentation:bitmap_rep]; + [bitmap_rep release]; + [image autorelease]; + + return image; +} + +NSEvent * +gdk_quartz_event_get_nsevent (GdkEvent *event) +{ + /* FIXME: If the event here is unallocated, we crash. */ + return ((GdkEventPrivate *) event)->windowing_data; +} diff --git a/gdk/quartz/gdkvisual-quartz.c b/gdk/quartz/gdkvisual-quartz.c index 917e5abcaf..d88141d259 100644 --- a/gdk/quartz/gdkvisual-quartz.c +++ b/gdk/quartz/gdkvisual-quartz.c @@ -20,53 +20,26 @@ #include "config.h" -#include "gdkvisual.h" +#include "gdkvisualprivate.h" +#include "gdkquartzvisual.h" #include "gdkprivate-quartz.h" + +struct _GdkQuartzVisual +{ + GdkVisual visual; +}; + +struct _GdkQuartzVisualClass +{ + GdkVisualClass visual_class; +}; + + static GdkVisual *system_visual; static GdkVisual *rgba_visual; static GdkVisual *gray_visual; -static void -gdk_visual_finalize (GObject *object) -{ - g_error ("A GdkVisual object was finalized. This should not happen"); -} - -static void -gdk_visual_class_init (GObjectClass *class) -{ - class->finalize = gdk_visual_finalize; -} - -GType -gdk_visual_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkVisualClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_visual_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkVisual), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - object_type = g_type_register_static (G_TYPE_OBJECT, - "GdkVisual", - &object_info, 0); - } - - return object_type; -} - static void gdk_visual_decompose_mask (gulong mask, gint *shift, @@ -89,14 +62,17 @@ gdk_visual_decompose_mask (gulong mask, } static GdkVisual * -create_standard_visual (gint depth) +create_standard_visual (GdkScreen *screen, + gint depth) { - GdkVisual *visual = g_object_new (GDK_TYPE_VISUAL, NULL); + GdkVisual *visual = g_object_new (GDK_TYPE_QUARTZ_VISUAL, NULL); + + visual->screen = screen; visual->depth = depth; visual->byte_order = GDK_MSB_FIRST; /* FIXME: Should this be different on intel macs? */ visual->colormap_size = 0; - + visual->type = GDK_VISUAL_TRUE_COLOR; visual->red_mask = 0xff0000; @@ -117,9 +93,11 @@ create_standard_visual (gint depth) } static GdkVisual * -create_gray_visual (void) +create_gray_visual (GdkScreen *screen) { - GdkVisual *visual = g_object_new (GDK_TYPE_VISUAL, NULL); + GdkVisual *visual = g_object_new (GDK_TYPE_QUARTZ_VISUAL, NULL); + + visual->screen = screen; visual->depth = 1; visual->byte_order = GDK_MSB_FIRST; @@ -130,49 +108,53 @@ create_gray_visual (void) return visual; } -void -_gdk_visual_init (void) + +G_DEFINE_TYPE (GdkQuartzVisual, gdk_quartz_visual, GDK_TYPE_VISUAL) + +static void +gdk_quartz_visual_init (GdkQuartzVisual *quartz_visual) +{ +} + +static void +gdk_quartz_visual_class_init (GdkQuartzVisualClass *class) { - system_visual = create_standard_visual (24); - rgba_visual = create_standard_visual (32); - gray_visual = create_gray_visual (); } /* We prefer the system visual for now ... */ gint -gdk_visual_get_best_depth (void) +_gdk_quartz_screen_visual_get_best_depth (GdkScreen *screen) { return system_visual->depth; } GdkVisualType -gdk_visual_get_best_type (void) +_gdk_quartz_screen_visual_get_best_type (GdkScreen *screen) { return system_visual->type; } GdkVisual * -gdk_screen_get_rgba_visual (GdkScreen *screen) +_gdk_quartz_screen_get_rgba_visual (GdkScreen *screen) { - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return rgba_visual; } GdkVisual* -gdk_screen_get_system_visual (GdkScreen *screen) +_gdk_quartz_screen_get_system_visual (GdkScreen *screen) { return system_visual; } GdkVisual* -gdk_visual_get_best (void) +_gdk_quartz_screen_visual_get_best (GdkScreen *screen) { return system_visual; } GdkVisual* -gdk_visual_get_best_with_depth (gint depth) +_gdk_quartz_screen_visual_get_best_with_depth (GdkScreen *screen, + gint depth) { GdkVisual *visual = NULL; @@ -198,7 +180,8 @@ gdk_visual_get_best_with_depth (gint depth) } GdkVisual* -gdk_visual_get_best_with_type (GdkVisualType visual_type) +_gdk_quartz_screen_visual_get_best_with_type (GdkScreen *screen, + GdkVisualType visual_type) { if (system_visual->type == visual_type) return system_visual; @@ -209,8 +192,9 @@ gdk_visual_get_best_with_type (GdkVisualType visual_type) } GdkVisual* -gdk_visual_get_best_with_both (gint depth, - GdkVisualType visual_type) +_gdk_quartz_screen_visual_get_best_with_both (GdkScreen *screen, + gint depth, + GdkVisualType visual_type) { if (system_visual->depth == depth && system_visual->type == visual_type) @@ -227,23 +211,33 @@ gdk_visual_get_best_with_both (gint depth, /* For these, we also prefer the system visual */ void -gdk_query_depths (gint **depths, - gint *count) +_gdk_quartz_screen_query_depths (GdkScreen *screen, + gint **depths, + gint *count) { *count = 1; *depths = &system_visual->depth; } void -gdk_query_visual_types (GdkVisualType **visual_types, - gint *count) +_gdk_quartz_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count) { *count = 1; *visual_types = &system_visual->type; } +void +_gdk_quartz_screen_init_visuals (GdkScreen *screen) +{ + system_visual = create_standard_visual (screen, 24); + rgba_visual = create_standard_visual (screen, 32); + gray_visual = create_gray_visual (screen); +} + GList* -gdk_screen_list_visuals (GdkScreen *screen) +_gdk_quartz_screen_list_visuals (GdkScreen *screen) { GList *visuals = NULL; @@ -253,12 +247,3 @@ gdk_screen_list_visuals (GdkScreen *screen) return visuals; } - -GdkScreen * -gdk_visual_get_screen (GdkVisual *visual) -{ - g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL); - - return gdk_screen_get_default (); -} - diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index 40b9dbb854..a6fc4ed22e 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -20,14 +20,20 @@ */ #include "config.h" -#include -#include "gdk.h" -#include "gdkdeviceprivate.h" +#include +#include +#include + #include "gdkwindowimpl.h" #include "gdkprivate-quartz.h" -#include "gdkscreen-quartz.h" -#include "gdkinputprivate.h" +#include "gdkquartzscreen.h" +#include "gdkquartzcursor.h" + +#include + +#include +#include static gpointer parent_class; static gpointer root_window_parent_class; @@ -37,6 +43,8 @@ static gboolean in_process_all_updates = FALSE; static GSList *main_window_stack; +void _gdk_quartz_window_flush (GdkWindowImplQuartz *window_impl); + #define FULLSCREEN_DATA "fullscreen-data" typedef struct @@ -57,39 +65,62 @@ static FullscreenSavedGeometry *get_fullscreen_geometry (GdkWindow *window); GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN && \ GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN) -static void gdk_window_impl_iface_init (GdkWindowImplIface *iface); +/* + * GdkQuartzWindow + */ + +struct _GdkQuartzWindow +{ + GdkWindow parent; +}; + +struct _GdkQuartzWindowClass +{ + GdkWindowClass parent_class; +}; + +G_DEFINE_TYPE (GdkQuartzWindow, gdk_quartz_window, GDK_TYPE_WINDOW); + +static void +gdk_quartz_window_class_init (GdkQuartzWindowClass *quartz_window_class) +{ +} + +static void +gdk_quartz_window_init (GdkQuartzWindow *quartz_window) +{ +} + + +/* + * GdkQuartzWindowImpl + */ NSView * gdk_quartz_window_get_nsview (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject *)window; - if (GDK_WINDOW_DESTROYED (window)) return NULL; - return ((GdkWindowImplQuartz *)private->impl)->view; + return ((GdkWindowImplQuartz *)window->impl)->view; } NSWindow * gdk_quartz_window_get_nswindow (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject *)window; - if (GDK_WINDOW_DESTROYED (window)) return NULL; - return ((GdkWindowImplQuartz *)private->impl)->toplevel; + return ((GdkWindowImplQuartz *)window->impl)->toplevel; } static CGContextRef -gdk_window_impl_quartz_get_context (GdkDrawable *drawable, - gboolean antialias) +gdk_window_impl_quartz_get_context (GdkWindowImplQuartz *window_impl, + gboolean antialias) { - GdkDrawableImplQuartz *drawable_impl = GDK_DRAWABLE_IMPL_QUARTZ (drawable); - GdkWindowImplQuartz *window_impl = GDK_WINDOW_IMPL_QUARTZ (drawable); CGContextRef cg_context; - if (GDK_WINDOW_DESTROYED (drawable_impl->wrapper)) + if (GDK_WINDOW_DESTROYED (window_impl->wrapper)) return NULL; /* Lock focus when not called as part of a drawRect call. This @@ -143,18 +174,16 @@ gdk_window_impl_quartz_get_context (GdkDrawable *drawable, } static void -gdk_window_impl_quartz_release_context (GdkDrawable *drawable, - CGContextRef cg_context) +gdk_window_impl_quartz_release_context (GdkWindowImplQuartz *window_impl, + CGContextRef cg_context) { - GdkWindowImplQuartz *window_impl = GDK_WINDOW_IMPL_QUARTZ (drawable); - CGContextRestoreGState (cg_context); CGContextSetAllowsAntialiasing (cg_context, TRUE); - /* See comment in gdk_quartz_drawable_get_context(). */ + /* See comment in gdk_quartz_window_get_context(). */ if (window_impl->in_paint_rect_count == 0) { - _gdk_quartz_drawable_flush (drawable); + _gdk_quartz_window_flush (window_impl); [window_impl->view unlockFocus]; } } @@ -210,7 +239,7 @@ gdk_window_impl_quartz_finalize (GObject *object) { GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (object); - check_grab_destroy (GDK_DRAWABLE_IMPL_QUARTZ (object)->wrapper); + check_grab_destroy (GDK_WINDOW_IMPL_QUARTZ (object)->wrapper); if (impl->paint_clip_region) cairo_region_destroy (impl->paint_clip_region); @@ -221,18 +250,114 @@ gdk_window_impl_quartz_finalize (GObject *object) G_OBJECT_CLASS (parent_class)->finalize (object); } -static void -gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass) +/* Help preventing "beam sync penalty" where CG makes all graphics code + * block until the next vsync if we try to flush (including call display on + * a view) too often. We do this by limiting the manual flushing done + * outside of expose calls to less than some frequency when measured over + * the last 4 flushes. This is a bit arbitray, but seems to make it possible + * for some quick manual flushes (such as gtkruler or gimp's marching ants) + * without hitting the max flush frequency. + * + * If drawable NULL, no flushing is done, only registering that a flush was + * done externally. + */ +void +_gdk_quartz_window_flush (GdkWindowImplQuartz *window_impl) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GdkDrawableImplQuartzClass *drawable_quartz_class = GDK_DRAWABLE_IMPL_QUARTZ_CLASS (klass); + static struct timeval prev_tv; + static gint intervals[4]; + static gint index; + struct timeval tv; + gint ms; - parent_class = g_type_class_peek_parent (klass); + gettimeofday (&tv, NULL); + ms = (tv.tv_sec - prev_tv.tv_sec) * 1000 + (tv.tv_usec - prev_tv.tv_usec) / 1000; + intervals[index++ % 4] = ms; - object_class->finalize = gdk_window_impl_quartz_finalize; + if (window_impl) + { + ms = intervals[0] + intervals[1] + intervals[2] + intervals[3]; - drawable_quartz_class->get_context = gdk_window_impl_quartz_get_context; - drawable_quartz_class->release_context = gdk_window_impl_quartz_release_context; + /* ~25Hz on average. */ + if (ms > 4*40) + { + if (window_impl) + [window_impl->toplevel flushWindow]; + + prev_tv = tv; + } + } + else + prev_tv = tv; +} + +static cairo_user_data_key_t gdk_quartz_cairo_key; + +typedef struct { + GdkWindowImplQuartz *window_impl; + CGContextRef cg_context; +} GdkQuartzCairoSurfaceData; + +static void +gdk_quartz_cairo_surface_destroy (void *data) +{ + GdkQuartzCairoSurfaceData *surface_data = data; + + surface_data->window_impl->cairo_surface = NULL; + + gdk_quartz_window_release_context (surface_data->window_impl, + surface_data->cg_context); + + g_free (surface_data); +} + +static cairo_surface_t * +gdk_quartz_create_cairo_surface (GdkWindowImplQuartz *impl, + int width, + int height) +{ + CGContextRef cg_context; + GdkQuartzCairoSurfaceData *surface_data; + cairo_surface_t *surface; + + cg_context = gdk_quartz_window_get_context (impl, TRUE); + + if (!cg_context) + return NULL; + + surface_data = g_new (GdkQuartzCairoSurfaceData, 1); + surface_data->window_impl = impl; + surface_data->cg_context = cg_context; + + surface = cairo_quartz_surface_create_for_cg_context (cg_context, + width, height); + + cairo_surface_set_user_data (surface, &gdk_quartz_cairo_key, + surface_data, + gdk_quartz_cairo_surface_destroy); + + return surface; +} + +static cairo_surface_t * +gdk_quartz_ref_cairo_surface (GdkWindow *window) +{ + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); + + if (GDK_WINDOW_DESTROYED (window)) + return NULL; + + if (!impl->cairo_surface) + { + impl->cairo_surface = + gdk_quartz_create_cairo_surface (impl, + gdk_window_get_width (impl->wrapper), + gdk_window_get_height (impl->wrapper)); + } + else + cairo_surface_reference (impl->cairo_surface); + + return impl->cairo_surface; } static void @@ -247,16 +372,15 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, const cairo_region_t *region) { GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (paintable); - GdkWindowObject *private = (GdkWindowObject*) window; cairo_region_t *clipped_and_offset_region; cairo_t *cr; clipped_and_offset_region = cairo_region_copy (region); cairo_region_intersect (clipped_and_offset_region, - private->clip_region_with_children); + window->clip_region_with_children); cairo_region_translate (clipped_and_offset_region, - private->abs_x, private->abs_y); + window->abs_x, window->abs_y); if (impl->begin_paint_count == 0) impl->paint_clip_region = cairo_region_reference (clipped_and_offset_region); @@ -270,19 +394,19 @@ gdk_window_impl_quartz_begin_paint_region (GdkPaintable *paintable, cr = gdk_cairo_create (window); - cairo_translate (cr, -private->abs_x, -private->abs_y); + cairo_translate (cr, -window->abs_x, -window->abs_y); gdk_cairo_region (cr, clipped_and_offset_region); cairo_clip (cr); - while (private->background == NULL && private->parent) + while (window->background == NULL && window->parent) { - cairo_translate (cr, -private->x, private->y); - private = private->parent; + cairo_translate (cr, -window->x, window->y); + window = window->parent; } - if (private->background) - cairo_set_source (cr, private->background); + if (window->background) + cairo_set_source (cr, window->background); else cairo_set_source_rgba (cr, 0, 0, 0, 0); @@ -309,16 +433,14 @@ gdk_window_impl_quartz_end_paint (GdkPaintable *paintable) } } -void -_gdk_quartz_window_set_needs_display_in_region (GdkWindow *window, - cairo_region_t *region) +static void +gdk_quartz_window_set_needs_display_in_region (GdkWindow *window, + cairo_region_t *region) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; int i, n_rects; - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!impl->needs_display_region) impl->needs_display_region = cairo_region_create (); @@ -336,8 +458,8 @@ _gdk_quartz_window_set_needs_display_in_region (GdkWindow *window, } void -_gdk_windowing_window_process_updates_recurse (GdkWindow *window, - cairo_region_t *region) +_gdk_quartz_window_process_updates_recurse (GdkWindow *window, + cairo_region_t *region) { /* Make sure to only flush each toplevel at most once if we're called * from process_all_updates. @@ -349,12 +471,10 @@ _gdk_windowing_window_process_updates_recurse (GdkWindow *window, toplevel = gdk_window_get_effective_toplevel (window); if (toplevel && WINDOW_IS_TOPLEVEL (toplevel)) { - GdkWindowObject *toplevel_private; GdkWindowImplQuartz *toplevel_impl; NSWindow *nswindow; - toplevel_private = (GdkWindowObject *)toplevel; - toplevel_impl = (GdkWindowImplQuartz *)toplevel_private->impl; + toplevel_impl = (GdkWindowImplQuartz *)toplevel->impl; nswindow = toplevel_impl->toplevel; /* In theory, we could skip the flush disabling, since we only @@ -370,7 +490,7 @@ _gdk_windowing_window_process_updates_recurse (GdkWindow *window, } if (WINDOW_IS_TOPLEVEL (window)) - _gdk_quartz_window_set_needs_display_in_region (window, region); + gdk_quartz_window_set_needs_display_in_region (window, region); else _gdk_window_process_updates_recurse (window, region); @@ -381,7 +501,7 @@ _gdk_windowing_window_process_updates_recurse (GdkWindow *window, } void -_gdk_windowing_before_process_all_updates (void) +_gdk_quartz_display_before_process_all_updates (GdkDisplay *display) { in_process_all_updates = TRUE; @@ -389,7 +509,7 @@ _gdk_windowing_before_process_all_updates (void) } void -_gdk_windowing_after_process_all_updates (void) +_gdk_quartz_display_after_process_all_updates (GdkDisplay *display) { GSList *old_update_nswindows = update_nswindows; GSList *tmp_list = update_nswindows; @@ -402,7 +522,7 @@ _gdk_windowing_after_process_all_updates (void) [[nswindow contentView] displayIfNeeded]; - _gdk_quartz_drawable_flush (NULL); + _gdk_quartz_window_flush (NULL); [nswindow enableFlushWindow]; [nswindow flushWindow]; @@ -425,54 +545,6 @@ gdk_window_impl_quartz_paintable_init (GdkPaintableIface *iface) iface->end_paint = gdk_window_impl_quartz_end_paint; } -GType -_gdk_window_impl_quartz_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkWindowImplQuartzClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_window_impl_quartz_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkWindowImplQuartz), - 0, /* n_preallocs */ - (GInstanceInitFunc) gdk_window_impl_quartz_init, - }; - - const GInterfaceInfo paintable_info = - { - (GInterfaceInitFunc) gdk_window_impl_quartz_paintable_init, - NULL, - NULL - }; - - const GInterfaceInfo window_impl_info = - { - (GInterfaceInitFunc) gdk_window_impl_iface_init, - NULL, - NULL - }; - - object_type = g_type_register_static (GDK_TYPE_DRAWABLE_IMPL_QUARTZ, - "GdkWindowImplQuartz", - &object_info, 0); - g_type_add_interface_static (object_type, - GDK_TYPE_PAINTABLE, - &paintable_info); - g_type_add_interface_static (object_type, - GDK_TYPE_WINDOW_IMPL, - &window_impl_info); - } - - return object_type; -} - static const gchar * get_default_title (void) { @@ -493,15 +565,12 @@ get_ancestor_coordinates_from_child (GdkWindow *child_window, gint *ancestor_x, gint *ancestor_y) { - GdkWindowObject *child_private = GDK_WINDOW_OBJECT (child_window); - GdkWindowObject *ancestor_private = GDK_WINDOW_OBJECT (ancestor_window); - - while (child_private != ancestor_private) + while (child_window != ancestor_window) { - child_x += child_private->x; - child_y += child_private->y; + child_x += child_window->x; + child_y += child_window->y; - child_private = child_private->parent; + child_window = child_window->parent; } *ancestor_x = child_x; @@ -511,7 +580,6 @@ get_ancestor_coordinates_from_child (GdkWindow *child_window, void _gdk_quartz_window_debug_highlight (GdkWindow *window, gint number) { - GdkWindowObject *private = GDK_WINDOW_OBJECT (window); gint x, y; gint gx, gy; GdkWindow *toplevel; @@ -542,10 +610,10 @@ _gdk_quartz_window_debug_highlight (GdkWindow *window, gint number) x += tx; y += ty; - _gdk_quartz_window_gdk_xy_to_xy (x, y + private->height, + _gdk_quartz_window_gdk_xy_to_xy (x, y + window->height, &gx, &gy); - rect = NSMakeRect (gx, gy, private->width, private->height); + rect = NSMakeRect (gx, gy, window->width, window->height); if (debug_window[number] && NSEqualRects (rect, old_rect[number])) return; @@ -615,7 +683,7 @@ _gdk_quartz_window_gdk_xy_to_xy (gint gdk_x, gint *ns_x, gint *ns_y) { - GdkScreenQuartz *screen_quartz = GDK_SCREEN_QUARTZ (_gdk_screen); + GdkQuartzScreen *screen_quartz = GDK_QUARTZ_SCREEN (_gdk_screen); if (ns_y) *ns_y = screen_quartz->height - gdk_y + screen_quartz->min_y; @@ -630,7 +698,7 @@ _gdk_quartz_window_xy_to_gdk_xy (gint ns_x, gint *gdk_x, gint *gdk_y) { - GdkScreenQuartz *screen_quartz = GDK_SCREEN_QUARTZ (_gdk_screen); + GdkQuartzScreen *screen_quartz = GDK_QUARTZ_SCREEN (_gdk_screen); if (gdk_y) *gdk_y = screen_quartz->height - ns_y + screen_quartz->min_y; @@ -659,22 +727,22 @@ find_child_window_helper (GdkWindow *window, GdkWindowImplQuartz *impl; GList *l; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (window == _gdk_root) update_toplevel_order (); for (l = impl->sorted_children; l; l = l->next) { - GdkWindowObject *child_private = l->data; - GdkWindowImplQuartz *child_impl = GDK_WINDOW_IMPL_QUARTZ (child_private->impl); + GdkWindow *child = l->data; + GdkWindowImplQuartz *child_impl = GDK_WINDOW_IMPL_QUARTZ (child->impl); int temp_x, temp_y; - if (!GDK_WINDOW_IS_MAPPED (child_private)) + if (!GDK_WINDOW_IS_MAPPED (child)) continue; - temp_x = x_offset + child_private->x; - temp_y = y_offset + child_private->y; + temp_x = x_offset + child->x; + temp_y = y_offset + child->y; /* Special-case the root window. We have to include the title * bar in the checks, otherwise the window below the title bar @@ -698,7 +766,7 @@ find_child_window_helper (GdkWindow *window, if (titlebar_height > 0 && x >= temp_x && y >= temp_y - titlebar_height && - x < temp_x + child_private->width && y < temp_y) + x < temp_x + child->width && y < temp_y) { /* The root means "unknown" i.e. a window not managed by * GDK. @@ -709,7 +777,7 @@ find_child_window_helper (GdkWindow *window, if ((!get_toplevel || (get_toplevel && window == _gdk_root)) && x >= temp_x && y >= temp_y && - x < temp_x + child_private->width && y < temp_y + child_private->height) + x < temp_x + child->width && y < temp_y + child->height) { /* Look for child windows. */ return find_child_window_helper (l->data, @@ -732,9 +800,7 @@ _gdk_quartz_window_find_child (GdkWindow *window, gint y, gboolean get_toplevel) { - GdkWindowObject *private = GDK_WINDOW_OBJECT (window); - - if (x >= 0 && y >= 0 && x < private->width && y < private->height) + if (x >= 0 && y >= 0 && x < window->width && y < window->height) return find_child_window_helper (window, x, y, 0, 0, get_toplevel); return NULL; @@ -746,7 +812,7 @@ _gdk_quartz_window_did_become_main (GdkWindow *window) { main_window_stack = g_slist_remove (main_window_stack, window); - if (GDK_WINDOW_OBJECT (window)->window_type != GDK_WINDOW_TEMP) + if (window->window_type != GDK_WINDOW_TEMP) main_window_stack = g_slist_prepend (main_window_stack, window); clear_toplevel_order (); @@ -774,8 +840,7 @@ _gdk_quartz_window_did_resign_main (GdkWindow *window) GDK_WINDOW_IS_MAPPED (new_window) && WINDOW_IS_TOPLEVEL (new_window)) { - GdkWindowObject *private = (GdkWindowObject *) new_window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (new_window->impl); [impl->toplevel makeKeyAndOrderFront:impl->toplevel]; } @@ -812,42 +877,38 @@ get_nsscreen_for_point (gint x, gint y) } void -_gdk_window_impl_new (GdkWindow *window, - GdkWindow *real_parent, - GdkScreen *screen, - GdkEventMask event_mask, - GdkWindowAttr *attributes, - gint attributes_mask) +_gdk_quartz_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; - GdkDrawableImplQuartz *draw_impl; GdkWindowImplQuartz *parent_impl; GDK_QUARTZ_ALLOC_POOL; - private = (GdkWindowObject *)window; - impl = g_object_new (GDK_TYPE_WINDOW_IMPL_QUARTZ, NULL); - private->impl = (GdkDrawable *)impl; - draw_impl = GDK_DRAWABLE_IMPL_QUARTZ (impl); - draw_impl->wrapper = GDK_DRAWABLE (window); + window->impl = GDK_WINDOW_IMPL (impl); + impl->wrapper = window; - parent_impl = GDK_WINDOW_IMPL_QUARTZ (private->parent->impl); + parent_impl = GDK_WINDOW_IMPL_QUARTZ (window->parent->impl); - switch (private->window_type) + switch (window->window_type) { case GDK_WINDOW_TOPLEVEL: case GDK_WINDOW_TEMP: - if (GDK_WINDOW_TYPE (private->parent) != GDK_WINDOW_ROOT) + if (GDK_WINDOW_TYPE (window->parent) != GDK_WINDOW_ROOT) { /* The common code warns for this case */ - parent_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl); + parent_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl); } } /* Maintain the z-ordered list of children. */ - if (private->parent != (GdkWindowObject *)_gdk_root) + if (window->parent != _gdk_root) parent_impl->sorted_children = g_list_prepend (parent_impl->sorted_children, window); else clear_toplevel_order (); @@ -875,16 +936,16 @@ _gdk_window_impl_new (GdkWindow *window, * to find the screen the window will be on and correct the * content_rect coordinates to be relative to that screen. */ - _gdk_quartz_window_gdk_xy_to_xy (private->x, private->y, &nx, &ny); + _gdk_quartz_window_gdk_xy_to_xy (window->x, window->y, &nx, &ny); screen = get_nsscreen_for_point (nx, ny); screen_rect = [screen frame]; nx -= screen_rect.origin.x; ny -= screen_rect.origin.y; - content_rect = NSMakeRect (nx, ny - private->height, - private->width, - private->height); + content_rect = NSMakeRect (nx, ny - window->height, + window->width, + window->height); if (attributes->window_type == GDK_WINDOW_TEMP || attributes->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN) @@ -899,11 +960,11 @@ _gdk_window_impl_new (GdkWindow *window, NSResizableWindowMask); } - impl->toplevel = [[GdkQuartzWindow alloc] initWithContentRect:content_rect - styleMask:style_mask - backing:NSBackingStoreBuffered - defer:NO - screen:screen]; + impl->toplevel = [[GdkQuartzNSWindow alloc] initWithContentRect:content_rect + styleMask:style_mask + backing:NSBackingStoreBuffered + defer:NO + screen:screen]; if (attributes_mask & GDK_WA_TITLE) title = attributes->title; @@ -930,14 +991,14 @@ _gdk_window_impl_new (GdkWindow *window, case GDK_WINDOW_CHILD: { - GdkWindowImplQuartz *parent_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (private->parent)->impl); + GdkWindowImplQuartz *parent_impl = GDK_WINDOW_IMPL_QUARTZ (window->parent->impl); - if (!private->input_only) + if (!window->input_only) { - NSRect frame_rect = NSMakeRect (private->x + private->parent->abs_x, - private->y + private->parent->abs_y, - private->width, - private->height); + NSRect frame_rect = NSMakeRect (window->x + window->parent->abs_x, + window->y + window->parent->abs_y, + window->width, + window->height); impl->view = [[GdkQuartzView alloc] initWithFrame:frame_rect]; @@ -966,8 +1027,7 @@ _gdk_quartz_window_update_position (GdkWindow *window) { NSRect frame_rect; NSRect content_rect; - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); GDK_QUARTZ_ALLOC_POOL; @@ -976,88 +1036,54 @@ _gdk_quartz_window_update_position (GdkWindow *window) _gdk_quartz_window_xy_to_gdk_xy (content_rect.origin.x, content_rect.origin.y + content_rect.size.height, - &private->x, &private->y); + &window->x, &window->y); GDK_QUARTZ_RELEASE_POOL; } void -_gdk_windowing_update_window_sizes (GdkScreen *screen) +_gdk_quartz_window_init_windowing (GdkDisplay *display, + GdkScreen *screen) { - GList *windows, *list; - GdkWindowObject *private = (GdkWindowObject *)_gdk_root; - - /* The size of the root window is so that it can contain all - * monitors attached to this machine. The monitors are laid out - * within this root window. We calculate the size of the root window - * and the positions of the different monitors in gdkscreen-quartz.c. - * - * This data is updated when the monitor configuration is changed. - */ - private->x = 0; - private->y = 0; - private->abs_x = 0; - private->abs_y = 0; - private->width = gdk_screen_get_width (screen); - private->height = gdk_screen_get_height (screen); - - windows = gdk_screen_get_toplevel_windows (screen); - - for (list = windows; list; list = list->next) - _gdk_quartz_window_update_position (list->data); - - g_list_free (windows); -} - -void -_gdk_windowing_window_init (void) -{ - GdkWindowObject *private; GdkWindowImplQuartz *impl; - GdkDrawableImplQuartz *drawable_impl; g_assert (_gdk_root == NULL); - _gdk_root = g_object_new (GDK_TYPE_WINDOW, NULL); + _gdk_root = _gdk_display_create_window (display); - private = (GdkWindowObject *)_gdk_root; - private->impl = g_object_new (_gdk_root_window_impl_quartz_get_type (), NULL); - private->impl_window = private; - private->visual = gdk_screen_get_system_visual (_gdk_screen); + _gdk_root->impl = g_object_new (_gdk_root_window_impl_quartz_get_type (), NULL); + _gdk_root->impl_window = _gdk_root; + _gdk_root->visual = gdk_screen_get_system_visual (screen); - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl); - _gdk_windowing_update_window_sizes (_gdk_screen); + _gdk_quartz_screen_update_window_sizes (screen); - private->state = 0; /* We don't want GDK_WINDOW_STATE_WITHDRAWN here */ - private->window_type = GDK_WINDOW_ROOT; - private->depth = 24; - private->viewable = TRUE; + _gdk_root->state = 0; /* We don't want GDK_WINDOW_STATE_WITHDRAWN here */ + _gdk_root->window_type = GDK_WINDOW_ROOT; + _gdk_root->depth = 24; + _gdk_root->viewable = TRUE; - drawable_impl = GDK_DRAWABLE_IMPL_QUARTZ (private->impl); - - drawable_impl->wrapper = GDK_DRAWABLE (private); + impl->wrapper = _gdk_root; } static void -_gdk_quartz_window_destroy (GdkWindow *window, - gboolean recursing, - gboolean foreign_destroy) +gdk_quartz_window_destroy (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; - GdkWindowObject *parent; + GdkWindow *parent; - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); main_window_stack = g_slist_remove (main_window_stack, window); g_list_free (impl->sorted_children); impl->sorted_children = NULL; - parent = private->parent; + parent = window->parent; if (parent) { GdkWindowImplQuartz *parent_impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl); @@ -1065,7 +1091,13 @@ _gdk_quartz_window_destroy (GdkWindow *window, parent_impl->sorted_children = g_list_remove (parent_impl->sorted_children, window); } - _gdk_quartz_drawable_finish (GDK_DRAWABLE (impl)); + if (impl->cairo_surface) + { + cairo_surface_finish (impl->cairo_surface); + cairo_surface_set_user_data (impl->cairo_surface, &gdk_quartz_cairo_key, + NULL, NULL); + impl->cairo_surface = NULL; + } if (!recursing && !foreign_destroy) { @@ -1092,8 +1124,8 @@ gdk_window_quartz_resize_cairo_surface (GdkWindow *window, return NULL; } -void -_gdk_windowing_window_destroy_foreign (GdkWindow *window) +static void +gdk_quartz_window_destroy_foreign (GdkWindow *window) { /* Foreign windows aren't supported in OSX. */ } @@ -1104,14 +1136,13 @@ _gdk_windowing_window_destroy_foreign (GdkWindow *window) static void gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped) { - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); gboolean focus_on_map; GDK_QUARTZ_ALLOC_POOL; if (!GDK_WINDOW_IS_MAPPED (window)) - focus_on_map = private->focus_on_map; + focus_on_map = window->focus_on_map; else focus_on_map = TRUE; @@ -1119,10 +1150,10 @@ gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped) { gboolean make_key; - make_key = (private->accept_focus && focus_on_map && - private->window_type != GDK_WINDOW_TEMP); + make_key = (window->accept_focus && focus_on_map && + window->window_type != GDK_WINDOW_TEMP); - [(GdkQuartzWindow*)impl->toplevel showAndMakeKey:make_key]; + [(GdkQuartzNSWindow*)impl->toplevel showAndMakeKey:make_key]; clear_toplevel_order (); _gdk_quartz_events_send_map_event (window); @@ -1136,10 +1167,10 @@ gdk_window_quartz_show (GdkWindow *window, gboolean already_mapped) gdk_synthesize_window_state (window, GDK_WINDOW_STATE_WITHDRAWN, 0); - if (private->state & GDK_WINDOW_STATE_MAXIMIZED) + if (window->state & GDK_WINDOW_STATE_MAXIMIZED) gdk_window_maximize (window); - if (private->state & GDK_WINDOW_STATE_ICONIFIED) + if (window->state & GDK_WINDOW_STATE_ICONIFIED) gdk_window_iconify (window); if (impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for)) @@ -1158,7 +1189,7 @@ _gdk_quartz_window_detach_from_parent (GdkWindow *window) g_return_if_fail (GDK_IS_WINDOW (window)); - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); g_return_if_fail (impl->toplevel != NULL); @@ -1166,7 +1197,7 @@ _gdk_quartz_window_detach_from_parent (GdkWindow *window) { GdkWindowImplQuartz *parent_impl; - parent_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (impl->transient_for)->impl); + parent_impl = GDK_WINDOW_IMPL_QUARTZ (impl->transient_for->impl); [parent_impl->toplevel removeChildWindow:impl->toplevel]; clear_toplevel_order (); } @@ -1180,7 +1211,7 @@ _gdk_quartz_window_attach_to_parent (GdkWindow *window) g_return_if_fail (GDK_IS_WINDOW (window)); - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); g_return_if_fail (impl->toplevel != NULL); @@ -1188,7 +1219,7 @@ _gdk_quartz_window_attach_to_parent (GdkWindow *window) { GdkWindowImplQuartz *parent_impl; - parent_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (impl->transient_for)->impl); + parent_impl = GDK_WINDOW_IMPL_QUARTZ (impl->transient_for->impl); [parent_impl->toplevel addChildWindow:impl->toplevel ordered:NSWindowAbove]; clear_toplevel_order (); } @@ -1197,7 +1228,6 @@ _gdk_quartz_window_attach_to_parent (GdkWindow *window) void gdk_window_quartz_hide (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject *)window; GdkWindowImplQuartz *impl; /* Make sure we're not stuck in fullscreen mode. */ @@ -1208,7 +1238,7 @@ gdk_window_quartz_hide (GdkWindow *window) _gdk_window_clear_update_area (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (WINDOW_IS_TOPLEVEL (window)) { @@ -1220,7 +1250,7 @@ gdk_window_quartz_hide (GdkWindow *window) if (impl->transient_for) _gdk_quartz_window_detach_from_parent (window); - [(GdkQuartzWindow*)impl->toplevel hide]; + [(GdkQuartzNSWindow*)impl->toplevel hide]; } else if (impl->view) { @@ -1241,7 +1271,6 @@ move_resize_window_internal (GdkWindow *window, gint width, gint height) { - GdkWindowObject *private = (GdkWindowObject *)window; GdkWindowImplQuartz *impl; GdkRectangle old_visible; GdkRectangle new_visible; @@ -1253,12 +1282,12 @@ move_resize_window_internal (GdkWindow *window, if (GDK_WINDOW_DESTROYED (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); - if ((x == -1 || (x == private->x)) && - (y == -1 || (y == private->y)) && - (width == -1 || (width == private->width)) && - (height == -1 || (height == private->height))) + if ((x == -1 || (x == window->x)) && + (y == -1 || (y == window->y)) && + (width == -1 || (width == window->width)) && + (height == -1 || (height == window->height))) { return; } @@ -1268,17 +1297,17 @@ move_resize_window_internal (GdkWindow *window, /* The previously visible area of this window in a coordinate * system rooted at the origin of this window. */ - old_visible.x = -private->x; - old_visible.y = -private->y; + old_visible.x = -window->x; + old_visible.y = -window->y; - old_visible.width = private->width; - old_visible.height = private->height; + old_visible.width = window->width; + old_visible.height = window->height; } if (x != -1) { - delta.width = x - private->x; - private->x = x; + delta.width = x - window->x; + window->x = x; } else { @@ -1287,8 +1316,8 @@ move_resize_window_internal (GdkWindow *window, if (y != -1) { - delta.height = y - private->y; - private->y = y; + delta.height = y - window->y; + window->y = y; } else { @@ -1296,10 +1325,10 @@ move_resize_window_internal (GdkWindow *window, } if (width != -1) - private->width = width; + window->width = width; if (height != -1) - private->height = height; + window->height = height; GDK_QUARTZ_ALLOC_POOL; @@ -1309,27 +1338,27 @@ move_resize_window_internal (GdkWindow *window, NSRect frame_rect; gint gx, gy; - _gdk_quartz_window_gdk_xy_to_xy (private->x, private->y + private->height, + _gdk_quartz_window_gdk_xy_to_xy (window->x, window->y + window->height, &gx, &gy); - content_rect = NSMakeRect (gx, gy, private->width, private->height); + content_rect = NSMakeRect (gx, gy, window->width, window->height); frame_rect = [impl->toplevel frameRectForContentRect:content_rect]; [impl->toplevel setFrame:frame_rect display:YES]; } else { - if (!private->input_only) + if (!window->input_only) { NSRect nsrect; - nsrect = NSMakeRect (private->x, private->y, private->width, private->height); + nsrect = NSMakeRect (window->x, window->y, window->width, window->height); /* The newly visible area of this window in a coordinate * system rooted at the origin of this window. */ - new_visible.x = -private->x; - new_visible.y = -private->y; + new_visible.x = -window->x; + new_visible.y = -window->y; new_visible.width = old_visible.width; /* parent has not changed size */ new_visible.height = old_visible.height; /* parent has not changed size */ @@ -1358,7 +1387,7 @@ move_resize_window_internal (GdkWindow *window, [impl->view setFrame:nsrect]; - _gdk_quartz_window_set_needs_display_in_region (window, expose_region); + gdk_quartz_window_set_needs_display_in_region (window, expose_region); } else { @@ -1381,7 +1410,7 @@ window_quartz_move (GdkWindow *window, { g_return_if_fail (GDK_IS_WINDOW (window)); - if (((GdkWindowObject *)window)->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) return; move_resize_window_internal (window, x, y, -1, -1); @@ -1394,7 +1423,7 @@ window_quartz_resize (GdkWindow *window, { g_return_if_fail (GDK_IS_WINDOW (window)); - if (((GdkWindowObject *)window)->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) return; if (width < 1) @@ -1448,7 +1477,7 @@ gdk_window_quartz_reparent (GdkWindow *window, gint x, gint y) { - GdkWindowObject *private, *old_parent_private, *new_parent_private; + GdkWindow *old_parent; GdkWindowImplQuartz *impl, *old_parent_impl, *new_parent_impl; NSView *view, *new_parent_view; @@ -1459,16 +1488,14 @@ gdk_window_quartz_reparent (GdkWindow *window, return FALSE; } - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); view = impl->view; - new_parent_private = GDK_WINDOW_OBJECT (new_parent); - new_parent_impl = GDK_WINDOW_IMPL_QUARTZ (new_parent_private->impl); + new_parent_impl = GDK_WINDOW_IMPL_QUARTZ (new_parent->impl); new_parent_view = new_parent_impl->view; - old_parent_private = GDK_WINDOW_OBJECT (private->parent); - old_parent_impl = GDK_WINDOW_IMPL_QUARTZ (old_parent_private->impl); + old_parent = window->parent; + old_parent_impl = GDK_WINDOW_IMPL_QUARTZ (old_parent->impl); [view retain]; @@ -1477,9 +1504,9 @@ gdk_window_quartz_reparent (GdkWindow *window, [view release]; - private->parent = new_parent_private; + window->parent = new_parent; - if (old_parent_private) + if (old_parent) { old_parent_impl->sorted_children = g_list_remove (old_parent_impl->sorted_children, window); } @@ -1496,14 +1523,12 @@ gdk_window_quartz_reparent (GdkWindow *window, static void update_toplevel_order (void) { - GdkWindowObject *root; GdkWindowImplQuartz *root_impl; NSEnumerator *enumerator; id nswindow; GList *toplevels = NULL; - root = GDK_WINDOW_OBJECT (_gdk_root); - root_impl = GDK_WINDOW_IMPL_QUARTZ (root->impl); + root_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl); if (root_impl->sorted_children) return; @@ -1530,11 +1555,9 @@ update_toplevel_order (void) static void clear_toplevel_order (void) { - GdkWindowObject *root; GdkWindowImplQuartz *root_impl; - root = GDK_WINDOW_OBJECT (_gdk_root); - root_impl = GDK_WINDOW_IMPL_QUARTZ (root->impl); + root_impl = GDK_WINDOW_IMPL_QUARTZ (_gdk_root->impl); g_list_free (root_impl->sorted_children); root_impl->sorted_children = NULL; @@ -1550,14 +1573,14 @@ gdk_window_quartz_raise (GdkWindow *window) { GdkWindowImplQuartz *impl; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); [impl->toplevel orderFront:impl->toplevel]; clear_toplevel_order (); } else { - GdkWindowObject *parent = GDK_WINDOW_OBJECT (window)->parent; + GdkWindow *parent = window->parent; if (parent) { @@ -1581,14 +1604,14 @@ gdk_window_quartz_lower (GdkWindow *window) { GdkWindowImplQuartz *impl; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); [impl->toplevel orderBack:impl->toplevel]; clear_toplevel_order (); } else { - GdkWindowObject *parent = GDK_WINDOW_OBJECT (window)->parent; + GdkWindow *parent = window->parent; if (parent) { @@ -1624,18 +1647,12 @@ gdk_window_quartz_set_device_cursor (GdkWindow *window, GdkDevice *device, GdkCursor *cursor) { - GdkCursorPrivate *cursor_private; NSCursor *nscursor; - cursor_private = (GdkCursorPrivate *)cursor; - if (GDK_WINDOW_DESTROYED (window)) return; - if (!cursor) - nscursor = [NSCursor arrowCursor]; - else - nscursor = cursor_private->nscursor; + nscursor = _gdk_quartz_cursor_get_ns_cursor (cursor); [nscursor set]; } @@ -1645,18 +1662,15 @@ gdk_window_quartz_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth) + gint *height) { GdkWindowImplQuartz *impl; - GdkWindowObject *private; NSRect ns_rect; if (GDK_WINDOW_DESTROYED (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); - private = GDK_WINDOW_OBJECT (window); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (window == _gdk_root) { if (x) @@ -1665,9 +1679,9 @@ gdk_window_quartz_get_geometry (GdkWindow *window, *y = 0; if (width) - *width = private->width; + *width = window->width; if (height) - *height = private->height; + *height = window->height; } else if (WINDOW_IS_TOPLEVEL (window)) { @@ -1713,9 +1727,6 @@ gdk_window_quartz_get_geometry (GdkWindow *window, if (height) *height = ns_rect.size.height; } - - if (depth) - *depth = gdk_visual_get_depth (gdk_window_get_visual (window)); } static gint @@ -1725,7 +1736,6 @@ gdk_window_quartz_get_root_coords (GdkWindow *window, gint *root_x, gint *root_y) { - GdkWindowObject *private; int tmp_x = 0, tmp_y = 0; GdkWindow *toplevel; NSRect content_rect; @@ -1751,10 +1761,8 @@ gdk_window_quartz_get_root_coords (GdkWindow *window, return 1; } - private = GDK_WINDOW_OBJECT (window); - toplevel = gdk_window_get_toplevel (window); - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl); content_rect = [impl->toplevel contentRectForFrameRect:[impl->toplevel frame]]; @@ -1765,15 +1773,15 @@ gdk_window_quartz_get_root_coords (GdkWindow *window, tmp_x += x; tmp_y += y; - while (private != GDK_WINDOW_OBJECT (toplevel)) + while (window != toplevel) { - if (_gdk_window_has_impl ((GdkWindow *)private)) + if (_gdk_window_has_impl ((GdkWindow *)window)) { - tmp_x += private->x; - tmp_y += private->y; + tmp_x += window->x; + tmp_y += window->y; } - private = private->parent; + window = window->parent; } if (root_x) @@ -1784,10 +1792,10 @@ gdk_window_quartz_get_root_coords (GdkWindow *window, return TRUE; } -void -gdk_window_get_root_origin (GdkWindow *window, - gint *x, - gint *y) +static void +gdk_quartz_window_get_root_origin (GdkWindow *window, + gint *x, + gint *y) { GdkRectangle rect; @@ -1811,10 +1819,9 @@ gdk_window_quartz_get_device_state_helper (GdkWindow *window, gint *y, GdkModifierType *mask) { - GdkWindowObject *toplevel; - GdkWindowObject *private; NSPoint point; gint x_tmp, y_tmp; + GdkWindow *toplevel; GdkWindow *found_window; g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL); @@ -1827,7 +1834,7 @@ gdk_window_quartz_get_device_state_helper (GdkWindow *window, return NULL; } - toplevel = GDK_WINDOW_OBJECT (gdk_window_get_toplevel (window)); + toplevel = gdk_window_get_toplevel (window); *mask = _gdk_quartz_events_get_current_event_mask (); @@ -1843,13 +1850,12 @@ gdk_window_quartz_get_device_state_helper (GdkWindow *window, NSWindow *nswindow; impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl); - private = GDK_WINDOW_OBJECT (toplevel); nswindow = impl->toplevel; point = [nswindow mouseLocationOutsideOfEventStream]; x_tmp = point.x; - y_tmp = private->height - point.y; + y_tmp = toplevel->height - point.y; window = (GdkWindow *)toplevel; } @@ -1894,15 +1900,6 @@ _gdk_windowing_get_device_state (GdkDisplay *display, gdk_window_quartz_get_device_state_helper (_gdk_root, device, x, y, mask); } -void -gdk_display_warp_pointer (GdkDisplay *display, - GdkScreen *screen, - gint x, - gint y) -{ - CGDisplayMoveCursorToPoint (CGMainDisplayID (), CGPointMake (x, y)); -} - /* Returns coordinates relative to the found window. */ GdkWindow * _gdk_windowing_window_at_pointer (GdkDisplay *display, @@ -1921,18 +1918,15 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, &tmp_mask); if (found_window) { - GdkWindowObject *private; - /* The coordinates returned above are relative the root, we want * coordinates relative the window here. */ - private = GDK_WINDOW_OBJECT (found_window); - while (private != GDK_WINDOW_OBJECT (_gdk_root)) + while (found_window != _gdk_root) { - x -= private->x; - y -= private->y; + x -= found_window->x; + y -= found_window->y; - private = private->parent; + found_window = found_window->parent; } *win_x = x; @@ -1950,21 +1944,19 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display, if (get_toplevel) { - GdkWindowObject *w = (GdkWindowObject *)found_window; /* Requested toplevel, find it. */ /* TODO: This can be implemented more efficient by never recursing into children in the first place */ - if (w) + if (found_window) { /* Convert to toplevel */ - while (w->parent != NULL && - w->parent->window_type != GDK_WINDOW_ROOT) + while (found_window->parent != NULL && + found_window->parent->window_type != GDK_WINDOW_ROOT) { - *win_x += w->x; - *win_y += w->y; - w = w->parent; + *win_x += found_window->x; + *win_y += found_window->y; + found_window = found_window->parent; } - found_window = (GdkWindow *)w; } } @@ -1992,7 +1984,7 @@ gdk_window_quartz_get_events (GdkWindow *window) if (GDK_WINDOW_DESTROYED (window)) return 0; else - return GDK_WINDOW_OBJECT (window)->event_mask; + return window->event_mask; } static void @@ -2002,9 +1994,9 @@ gdk_window_quartz_set_events (GdkWindow *window, /* The mask is set in the common code. */ } -void -gdk_window_set_urgency_hint (GdkWindow *window, - gboolean urgent) +static void +gdk_quartz_window_set_urgency_hint (GdkWindow *window, + gboolean urgent) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) @@ -2013,10 +2005,10 @@ gdk_window_set_urgency_hint (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_set_geometry_hints (GdkWindow *window, - const GdkGeometry *geometry, - GdkWindowHints geom_mask) +static void +gdk_quartz_window_set_geometry_hints (GdkWindow *window, + const GdkGeometry *geometry, + GdkWindowHints geom_mask) { GdkWindowImplQuartz *impl; @@ -2026,7 +2018,7 @@ gdk_window_set_geometry_hints (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *) window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!impl->toplevel) return; @@ -2091,9 +2083,9 @@ gdk_window_set_geometry_hints (GdkWindow *window, } } -void -gdk_window_set_title (GdkWindow *window, - const gchar *title) +static void +gdk_quartz_window_set_title (GdkWindow *window, + const gchar *title) { GdkWindowImplQuartz *impl; @@ -2103,7 +2095,7 @@ gdk_window_set_title (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *)window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (impl->toplevel) { @@ -2113,9 +2105,9 @@ gdk_window_set_title (GdkWindow *window, } } -void -gdk_window_set_role (GdkWindow *window, - const gchar *role) +static void +gdk_quartz_window_set_role (GdkWindow *window, + const gchar *role) { if (GDK_WINDOW_DESTROYED (window) || WINDOW_IS_TOPLEVEL (window)) @@ -2124,9 +2116,16 @@ gdk_window_set_role (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_set_transient_for (GdkWindow *window, - GdkWindow *parent) +static void +gdk_quartz_window_set_startup_id (GdkWindow *window, + const gchar *startup_id) +{ + /* FIXME: Implement? */ +} + +static void +gdk_quartz_window_set_transient_for (GdkWindow *window, + GdkWindow *parent) { GdkWindowImplQuartz *window_impl; GdkWindowImplQuartz *parent_impl; @@ -2135,7 +2134,7 @@ gdk_window_set_transient_for (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return; - window_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + window_impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!window_impl->toplevel) return; @@ -2149,7 +2148,7 @@ gdk_window_set_transient_for (GdkWindow *window, window_impl->transient_for = NULL; } - parent_impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (parent)->impl); + parent_impl = GDK_WINDOW_IMPL_QUARTZ (parent->impl); if (parent_impl->toplevel) { /* We save the parent because it needs to be unset/reset when @@ -2169,7 +2168,7 @@ gdk_window_set_transient_for (GdkWindow *window, * be shown unconditionally here. If it is not shown, the * window will be added in show() instead. */ - if (!(GDK_WINDOW_OBJECT (window)->state & GDK_WINDOW_STATE_WITHDRAWN)) + if (!(window->state & GDK_WINDOW_STATE_WITHDRAWN)) _gdk_quartz_window_attach_to_parent (window); } } @@ -2195,22 +2194,18 @@ gdk_window_quartz_input_shape_combine_region (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_set_override_redirect (GdkWindow *window, - gboolean override_redirect) +static void +gdk_quartz_window_set_override_redirect (GdkWindow *window, + gboolean override_redirect) { /* FIXME: Implement */ } -void -gdk_window_set_accept_focus (GdkWindow *window, - gboolean accept_focus) +static void +gdk_quartz_window_set_accept_focus (GdkWindow *window, + gboolean accept_focus) { - GdkWindowObject *private; - - private = (GdkWindowObject *)window; - - private->accept_focus = accept_focus != FALSE; + window->accept_focus = accept_focus != FALSE; } static gboolean @@ -2225,39 +2220,83 @@ gdk_window_quartz_set_static_gravities (GdkWindow *window, return FALSE; } -void -gdk_window_set_focus_on_map (GdkWindow *window, - gboolean focus_on_map) +static gboolean +gdk_quartz_window_queue_antiexpose (GdkWindow *window, + cairo_region_t *area) { - GdkWindowObject *private; - - private = (GdkWindowObject *)window; - - private->focus_on_map = focus_on_map != FALSE; + return FALSE; } -void -gdk_window_set_icon_name (GdkWindow *window, - const gchar *name) +static void +gdk_quartz_window_translate (GdkWindow *window, + cairo_region_t *area, + gint dx, + gint dy) +{ + cairo_region_t *invalidate, *scrolled; + GdkWindowImplQuartz *impl = (GdkWindowImplQuartz *)window->impl; + GdkRectangle extents; + + cairo_region_get_extents (area, &extents); + + [impl->view scrollRect:NSMakeRect (extents.x - dx, extents.y - dy, + extents.width, extents.height) + by:NSMakeSize (dx, dy)]; + + if (impl->needs_display_region) + { + cairo_region_t *intersection; + + /* Invalidate already invalidated area that was moved at new + * location. + */ + intersection = cairo_region_copy (impl->needs_display_region); + cairo_region_intersect (intersection, area); + cairo_region_translate (intersection, dx, dy); + + gdk_quartz_window_set_needs_display_in_region (window, intersection); + cairo_region_destroy (intersection); + } + + /* Calculate newly exposed area that needs invalidation */ + scrolled = cairo_region_copy (area); + cairo_region_translate (scrolled, dx, dy); + + invalidate = cairo_region_copy (area); + cairo_region_subtract (invalidate, scrolled); + cairo_region_destroy (scrolled); + + gdk_quartz_window_set_needs_display_in_region (window, invalidate); + cairo_region_destroy (invalidate); +} + +static void +gdk_quartz_window_set_focus_on_map (GdkWindow *window, + gboolean focus_on_map) +{ + window->focus_on_map = focus_on_map != FALSE; +} + +static void +gdk_quartz_window_set_icon_name (GdkWindow *window, + const gchar *name) { /* FIXME: Implement */ } -void -gdk_window_focus (GdkWindow *window, - guint32 timestamp) +static void +gdk_quartz_window_focus (GdkWindow *window, + guint32 timestamp) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; - private = (GdkWindowObject*) window; - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; - if (private->accept_focus && private->window_type != GDK_WINDOW_TEMP) + if (window->accept_focus && window->window_type != GDK_WINDOW_TEMP) { GDK_QUARTZ_ALLOC_POOL; [impl->toplevel makeKeyAndOrderFront:impl->toplevel]; @@ -2333,9 +2372,9 @@ window_type_hint_to_shadow (GdkWindowTypeHint hint) } -void -gdk_window_set_type_hint (GdkWindow *window, - GdkWindowTypeHint hint) +static void +gdk_quartz_window_set_type_hint (GdkWindow *window, + GdkWindowTypeHint hint) { GdkWindowImplQuartz *impl; @@ -2343,7 +2382,7 @@ gdk_window_set_type_hint (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *) window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); impl->type_hint = hint; @@ -2355,19 +2394,19 @@ gdk_window_set_type_hint (GdkWindow *window, [impl->toplevel setLevel: window_type_hint_to_level (hint)]; } -GdkWindowTypeHint -gdk_window_get_type_hint (GdkWindow *window) +static GdkWindowTypeHint +gdk_quartz_window_get_type_hint (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return GDK_WINDOW_TYPE_HINT_NORMAL; - return GDK_WINDOW_IMPL_QUARTZ (((GdkWindowObject *) window)->impl)->type_hint; + return GDK_WINDOW_IMPL_QUARTZ (window->impl)->type_hint; } -void -gdk_window_set_modal_hint (GdkWindow *window, - gboolean modal) +static void +gdk_quartz_window_set_modal_hint (GdkWindow *window, + gboolean modal) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) @@ -2376,9 +2415,9 @@ gdk_window_set_modal_hint (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_set_skip_taskbar_hint (GdkWindow *window, - gboolean skips_taskbar) +static void +gdk_quartz_window_set_skip_taskbar_hint (GdkWindow *window, + gboolean skips_taskbar) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) @@ -2387,9 +2426,9 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_set_skip_pager_hint (GdkWindow *window, - gboolean skips_pager) +static void +gdk_quartz_window_set_skip_pager_hint (GdkWindow *window, + gboolean skips_pager) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) @@ -2398,15 +2437,14 @@ gdk_window_set_skip_pager_hint (GdkWindow *window, /* FIXME: Implement */ } -void -gdk_window_begin_resize_drag (GdkWindow *window, - GdkWindowEdge edge, - gint button, - gint root_x, - gint root_y, - guint32 timestamp) +static void +gdk_quartz_window_begin_resize_drag (GdkWindow *window, + GdkWindowEdge edge, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2420,8 +2458,7 @@ gdk_window_begin_resize_drag (GdkWindow *window, if (GDK_WINDOW_DESTROYED (window)) return; - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!impl->toplevel) { @@ -2429,25 +2466,23 @@ gdk_window_begin_resize_drag (GdkWindow *window, return; } - [(GdkQuartzWindow *)impl->toplevel beginManualResize]; + [(GdkQuartzNSWindow *)impl->toplevel beginManualResize]; } -void -gdk_window_begin_move_drag (GdkWindow *window, - gint button, - gint root_x, - gint root_y, - guint32 timestamp) +static void +gdk_quartz_window_begin_move_drag (GdkWindow *window, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) { - GdkWindowObject *private; GdkWindowImplQuartz *impl; if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (!impl->toplevel) { @@ -2455,28 +2490,26 @@ gdk_window_begin_move_drag (GdkWindow *window, return; } - [(GdkQuartzWindow *)impl->toplevel beginManualMove]; + [(GdkQuartzNSWindow *)impl->toplevel beginManualMove]; } -void -gdk_window_set_icon_list (GdkWindow *window, - GList *pixbufs) +static void +gdk_quartz_window_set_icon_list (GdkWindow *window, + GList *pixbufs) { /* FIXME: Implement */ } -void -gdk_window_get_frame_extents (GdkWindow *window, - GdkRectangle *rect) +static void +gdk_quartz_window_get_frame_extents (GdkWindow *window, + GdkRectangle *rect) { - GdkWindowObject *private; GdkWindow *toplevel; GdkWindowImplQuartz *impl; NSRect ns_rect; g_return_if_fail (rect != NULL); - private = GDK_WINDOW_OBJECT (window); rect->x = 0; rect->y = 0; @@ -2484,7 +2517,7 @@ gdk_window_get_frame_extents (GdkWindow *window, rect->height = 1; toplevel = gdk_window_get_effective_toplevel (window); - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (toplevel->impl); ns_rect = [impl->toplevel frame]; @@ -2496,9 +2529,9 @@ gdk_window_get_frame_extents (GdkWindow *window, rect->height = ns_rect.size.height; } -void -gdk_window_set_decorations (GdkWindow *window, - GdkWMDecoration decorations) +static void +gdk_quartz_window_set_decorations (GdkWindow *window, + GdkWMDecoration decorations) { GdkWindowImplQuartz *impl; NSUInteger old_mask, new_mask; @@ -2508,7 +2541,7 @@ gdk_window_set_decorations (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (decorations == 0 || GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP || impl->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN ) @@ -2574,9 +2607,9 @@ gdk_window_set_decorations (GdkWindow *window, GDK_QUARTZ_RELEASE_POOL; } -gboolean -gdk_window_get_decorations (GdkWindow *window, - GdkWMDecoration *decorations) +static gboolean +gdk_quartz_window_get_decorations (GdkWindow *window, + GdkWMDecoration *decorations) { GdkWindowImplQuartz *impl; @@ -2584,7 +2617,7 @@ gdk_window_get_decorations (GdkWindow *window, !WINDOW_IS_TOPLEVEL (window)) return FALSE; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (decorations) { @@ -2603,9 +2636,9 @@ gdk_window_get_decorations (GdkWindow *window, return TRUE; } -void -gdk_window_set_functions (GdkWindow *window, - GdkWMFunction functions) +static void +gdk_quartz_window_set_functions (GdkWindow *window, + GdkWMFunction functions) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2619,24 +2652,24 @@ _gdk_windowing_window_queue_antiexpose (GdkWindow *window, return FALSE; } -void -gdk_window_stick (GdkWindow *window) +static void +gdk_quartz_window_stick (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; } -void -gdk_window_unstick (GdkWindow *window) +static void +gdk_quartz_window_unstick (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) return; } -void -gdk_window_maximize (GdkWindow *window) +static void +gdk_quartz_window_maximize (GdkWindow *window) { GdkWindowImplQuartz *impl; @@ -2644,7 +2677,7 @@ gdk_window_maximize (GdkWindow *window) !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2663,8 +2696,8 @@ gdk_window_maximize (GdkWindow *window) } } -void -gdk_window_unmaximize (GdkWindow *window) +static void +gdk_quartz_window_unmaximize (GdkWindow *window) { GdkWindowImplQuartz *impl; @@ -2672,7 +2705,7 @@ gdk_window_unmaximize (GdkWindow *window) !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2691,8 +2724,8 @@ gdk_window_unmaximize (GdkWindow *window) } } -void -gdk_window_iconify (GdkWindow *window) +static void +gdk_quartz_window_iconify (GdkWindow *window) { GdkWindowImplQuartz *impl; @@ -2700,7 +2733,7 @@ gdk_window_iconify (GdkWindow *window) !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2719,8 +2752,8 @@ gdk_window_iconify (GdkWindow *window) } } -void -gdk_window_deiconify (GdkWindow *window) +static void +gdk_quartz_window_deiconify (GdkWindow *window) { GdkWindowImplQuartz *impl; @@ -2728,7 +2761,7 @@ gdk_window_deiconify (GdkWindow *window) !WINDOW_IS_TOPLEVEL (window)) return; - impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2753,11 +2786,10 @@ get_fullscreen_geometry (GdkWindow *window) return g_object_get_data (G_OBJECT (window), FULLSCREEN_DATA); } -void -gdk_window_fullscreen (GdkWindow *window) +static void +gdk_quartz_window_fullscreen (GdkWindow *window) { FullscreenSavedGeometry *geometry; - GdkWindowObject *private = (GdkWindowObject *) window; NSRect frame; if (GDK_WINDOW_DESTROYED (window) || @@ -2769,10 +2801,10 @@ gdk_window_fullscreen (GdkWindow *window) { geometry = g_new (FullscreenSavedGeometry, 1); - geometry->x = private->x; - geometry->y = private->y; - geometry->width = private->width; - geometry->height = private->height; + geometry->x = window->x; + geometry->y = window->y; + geometry->width = window->width; + geometry->height = window->height; if (!gdk_window_get_decorations (window, &geometry->decor)) geometry->decor = GDK_DECOR_ALL; @@ -2794,8 +2826,8 @@ gdk_window_fullscreen (GdkWindow *window) gdk_synthesize_window_state (window, 0, GDK_WINDOW_STATE_FULLSCREEN); } -void -gdk_window_unfullscreen (GdkWindow *window) +static void +gdk_quartz_window_unfullscreen (GdkWindow *window) { FullscreenSavedGeometry *geometry; @@ -2822,11 +2854,11 @@ gdk_window_unfullscreen (GdkWindow *window) } } -void -gdk_window_set_keep_above (GdkWindow *window, gboolean setting) +static void +gdk_quartz_window_set_keep_above (GdkWindow *window, + gboolean setting) { - GdkWindowObject *private = (GdkWindowObject *) window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); gint level; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2841,11 +2873,11 @@ gdk_window_set_keep_above (GdkWindow *window, gboolean setting) [impl->toplevel setLevel: level + (setting ? 1 : 0)]; } -void -gdk_window_set_keep_below (GdkWindow *window, gboolean setting) +static void +gdk_quartz_window_set_keep_below (GdkWindow *window, + gboolean setting) { - GdkWindowObject *private = (GdkWindowObject *) window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); gint level; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2860,8 +2892,8 @@ gdk_window_set_keep_below (GdkWindow *window, gboolean setting) [impl->toplevel setLevel: level - (setting ? 1 : 0)]; } -GdkWindow * -gdk_window_get_group (GdkWindow *window) +static GdkWindow * +gdk_quartz_window_get_group (GdkWindow *window) { g_return_val_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD, NULL); @@ -2874,57 +2906,34 @@ gdk_window_get_group (GdkWindow *window) return NULL; } -void -gdk_window_set_group (GdkWindow *window, - GdkWindow *leader) +static void +gdk_quartz_window_set_group (GdkWindow *window, + GdkWindow *leader) { /* FIXME: Implement */ } -GdkWindow* -gdk_window_foreign_new_for_display (GdkDisplay *display, - GdkNativeWindow anid) -{ - /* Foreign windows aren't supported in Mac OS X */ - return NULL; -} - -GdkWindow* -gdk_window_lookup (GdkNativeWindow anid) -{ - /* Foreign windows aren't supported in Mac OS X */ - return NULL; -} - -GdkWindow * -gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid) -{ - /* Foreign windows aren't supported in Mac OS X */ - return NULL; -} - -void -gdk_window_enable_synchronized_configure (GdkWindow *window) +static void +gdk_quartz_window_enable_synchronized_configure (GdkWindow *window) { } -void -gdk_window_configure_finished (GdkWindow *window) +static void +gdk_quartz_window_configure_finished (GdkWindow *window) { } -void -gdk_window_destroy_notify (GdkWindow *window) +static void +gdk_quartz_window_destroy_notify (GdkWindow *window) { check_grab_destroy (window); } -void -gdk_window_set_opacity (GdkWindow *window, - gdouble opacity) +static void +gdk_quartz_window_set_opacity (GdkWindow *window, + gdouble opacity) { - GdkWindowObject *private = (GdkWindowObject *) window; - GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (window->impl); g_return_if_fail (GDK_IS_WINDOW (window)); g_return_if_fail (WINDOW_IS_TOPLEVEL (window)); @@ -2941,11 +2950,6 @@ gdk_window_set_opacity (GdkWindow *window, [impl->toplevel setAlphaValue: opacity]; } -void -_gdk_windowing_window_set_composited (GdkWindow *window, gboolean composited) -{ -} - static cairo_region_t * gdk_quartz_window_get_shape (GdkWindow *window) { @@ -2960,45 +2964,178 @@ gdk_quartz_window_get_input_shape (GdkWindow *window) return NULL; } + static void -gdk_window_impl_iface_init (GdkWindowImplIface *iface) +gdk_window_impl_quartz_class_init (GdkWindowImplQuartzClass *klass) { - iface->show = gdk_window_quartz_show; - iface->hide = gdk_window_quartz_hide; - iface->withdraw = gdk_window_quartz_withdraw; - iface->set_events = gdk_window_quartz_set_events; - iface->get_events = gdk_window_quartz_get_events; - iface->raise = gdk_window_quartz_raise; - iface->lower = gdk_window_quartz_lower; - iface->restack_toplevel = gdk_window_quartz_restack_toplevel; - iface->move_resize = gdk_window_quartz_move_resize; - iface->set_background = gdk_window_quartz_set_background; - iface->reparent = gdk_window_quartz_reparent; - iface->set_device_cursor = gdk_window_quartz_set_device_cursor; - iface->get_geometry = gdk_window_quartz_get_geometry; - iface->get_root_coords = gdk_window_quartz_get_root_coords; - iface->get_device_state = gdk_window_quartz_get_device_state; - iface->shape_combine_region = gdk_window_quartz_shape_combine_region; - iface->input_shape_combine_region = gdk_window_quartz_input_shape_combine_region; - iface->set_static_gravities = gdk_window_quartz_set_static_gravities; - iface->queue_antiexpose = _gdk_quartz_window_queue_antiexpose; - iface->translate = _gdk_quartz_window_translate; - iface->destroy = _gdk_quartz_window_destroy; - iface->resize_cairo_surface = gdk_window_quartz_resize_cairo_surface; - iface->get_shape = gdk_quartz_window_get_shape; - iface->get_input_shape = gdk_quartz_window_get_input_shape; + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkWindowImplClass *impl_class = GDK_WINDOW_IMPL_CLASS (klass); + GdkWindowImplQuartzClass *impl_quartz_class = GDK_WINDOW_IMPL_QUARTZ_CLASS (klass); + + parent_class = g_type_class_peek_parent (klass); + + object_class->finalize = gdk_window_impl_quartz_finalize; + + impl_class->ref_cairo_surface = gdk_quartz_ref_cairo_surface; + impl_class->show = gdk_window_quartz_show; + impl_class->hide = gdk_window_quartz_hide; + impl_class->withdraw = gdk_window_quartz_withdraw; + impl_class->set_events = gdk_window_quartz_set_events; + impl_class->get_events = gdk_window_quartz_get_events; + impl_class->raise = gdk_window_quartz_raise; + impl_class->lower = gdk_window_quartz_lower; + impl_class->restack_toplevel = gdk_window_quartz_restack_toplevel; + impl_class->move_resize = gdk_window_quartz_move_resize; + impl_class->set_background = gdk_window_quartz_set_background; + impl_class->reparent = gdk_window_quartz_reparent; + impl_class->set_device_cursor = gdk_window_quartz_set_device_cursor; + impl_class->get_geometry = gdk_window_quartz_get_geometry; + impl_class->get_root_coords = gdk_window_quartz_get_root_coords; + impl_class->get_device_state = gdk_window_quartz_get_device_state; + impl_class->shape_combine_region = gdk_window_quartz_shape_combine_region; + impl_class->input_shape_combine_region = gdk_window_quartz_input_shape_combine_region; + impl_class->set_static_gravities = gdk_window_quartz_set_static_gravities; + impl_class->queue_antiexpose = gdk_quartz_window_queue_antiexpose; + impl_class->translate = gdk_quartz_window_translate; + impl_class->destroy = gdk_quartz_window_destroy; + impl_class->destroy_foreign = gdk_quartz_window_destroy_foreign; + impl_class->resize_cairo_surface = gdk_window_quartz_resize_cairo_surface; + impl_class->get_shape = gdk_quartz_window_get_shape; + impl_class->get_input_shape = gdk_quartz_window_get_input_shape; + + impl_class->focus = gdk_quartz_window_focus; + impl_class->set_type_hint = gdk_quartz_window_set_type_hint; + impl_class->get_type_hint = gdk_quartz_window_get_type_hint; + impl_class->set_modal_hint = gdk_quartz_window_set_modal_hint; + impl_class->set_skip_taskbar_hint = gdk_quartz_window_set_skip_taskbar_hint; + impl_class->set_skip_pager_hint = gdk_quartz_window_set_skip_pager_hint; + impl_class->set_urgency_hint = gdk_quartz_window_set_urgency_hint; + impl_class->set_geometry_hints = gdk_quartz_window_set_geometry_hints; + impl_class->set_title = gdk_quartz_window_set_title; + impl_class->set_role = gdk_quartz_window_set_role; + impl_class->set_startup_id = gdk_quartz_window_set_startup_id; + impl_class->set_transient_for = gdk_quartz_window_set_transient_for; + impl_class->get_root_origin = gdk_quartz_window_get_root_origin; + impl_class->get_frame_extents = gdk_quartz_window_get_frame_extents; + impl_class->set_override_redirect = gdk_quartz_window_set_override_redirect; + impl_class->set_accept_focus = gdk_quartz_window_set_accept_focus; + impl_class->set_focus_on_map = gdk_quartz_window_set_focus_on_map; + impl_class->set_icon_list = gdk_quartz_window_set_icon_list; + impl_class->set_icon_name = gdk_quartz_window_set_icon_name; + impl_class->iconify = gdk_quartz_window_iconify; + impl_class->deiconify = gdk_quartz_window_deiconify; + impl_class->stick = gdk_quartz_window_stick; + impl_class->unstick = gdk_quartz_window_unstick; + impl_class->maximize = gdk_quartz_window_maximize; + impl_class->unmaximize = gdk_quartz_window_unmaximize; + impl_class->fullscreen = gdk_quartz_window_fullscreen; + impl_class->unfullscreen = gdk_quartz_window_unfullscreen; + impl_class->set_keep_above = gdk_quartz_window_set_keep_above; + impl_class->set_keep_below = gdk_quartz_window_set_keep_below; + impl_class->get_group = gdk_quartz_window_get_group; + impl_class->set_group = gdk_quartz_window_set_group; + impl_class->set_decorations = gdk_quartz_window_set_decorations; + impl_class->get_decorations = gdk_quartz_window_get_decorations; + impl_class->set_functions = gdk_quartz_window_set_functions; + impl_class->set_functions = gdk_quartz_window_set_functions; + impl_class->begin_resize_drag = gdk_quartz_window_begin_resize_drag; + impl_class->begin_move_drag = gdk_quartz_window_begin_move_drag; + impl_class->enable_synchronized_configure = gdk_quartz_window_enable_synchronized_configure; + impl_class->configure_finished = gdk_quartz_window_configure_finished; + impl_class->set_opacity = gdk_quartz_window_set_opacity; + impl_class->destroy_notify = gdk_quartz_window_destroy_notify; + impl_class->register_dnd = _gdk_quartz_window_register_dnd; + impl_class->drag_begin = _gdk_quartz_window_drag_begin; + impl_class->process_updates_recurse = _gdk_quartz_window_process_updates_recurse; + impl_class->sync_rendering = _gdk_quartz_window_sync_rendering; + impl_class->simulate_key = _gdk_quartz_window_simulate_key; + impl_class->simulate_button = _gdk_quartz_window_simulate_button; + impl_class->get_property = _gdk_quartz_window_get_property; + impl_class->change_property = _gdk_quartz_window_change_property; + impl_class->delete_property = _gdk_quartz_window_delete_property; + + + impl_quartz_class->get_context = gdk_window_impl_quartz_get_context; + impl_quartz_class->release_context = gdk_window_impl_quartz_release_context; +} + +GType +_gdk_window_impl_quartz_get_type (void) +{ + static GType object_type = 0; + + if (!object_type) + { + const GTypeInfo object_info = + { + sizeof (GdkWindowImplQuartzClass), + (GBaseInitFunc) NULL, + (GBaseFinalizeFunc) NULL, + (GClassInitFunc) gdk_window_impl_quartz_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GdkWindowImplQuartz), + 0, /* n_preallocs */ + (GInstanceInitFunc) gdk_window_impl_quartz_init, + }; + + const GInterfaceInfo paintable_info = + { + (GInterfaceInitFunc) gdk_window_impl_quartz_paintable_init, + NULL, + NULL + }; + + object_type = g_type_register_static (GDK_TYPE_WINDOW_IMPL, + "GdkWindowImplQuartz", + &object_info, 0); + g_type_add_interface_static (object_type, + GDK_TYPE_PAINTABLE, + &paintable_info); + } + + return object_type; +} + +CGContextRef +gdk_quartz_window_get_context (GdkWindowImplQuartz *window, + gboolean antialias) +{ + if (!GDK_WINDOW_IMPL_QUARTZ_GET_CLASS (window)->get_context) + { + g_warning ("%s doesn't implement GdkWindowImplQuartzClass::get_context()", + G_OBJECT_TYPE_NAME (window)); + return NULL; + } + + return GDK_WINDOW_IMPL_QUARTZ_GET_CLASS (window)->get_context (window, antialias); +} + +void +gdk_quartz_window_release_context (GdkWindowImplQuartz *window, + CGContextRef cg_context) +{ + if (!GDK_WINDOW_IMPL_QUARTZ_GET_CLASS (window)->release_context) + { + g_warning ("%s doesn't implement GdkWindowImplQuartzClass::release_context()", + G_OBJECT_TYPE_NAME (window)); + return; + } + + GDK_WINDOW_IMPL_QUARTZ_GET_CLASS (window)->release_context (window, cg_context); } + static CGContextRef -gdk_root_window_impl_quartz_get_context (GdkDrawable *drawable, - gboolean antialias) +gdk_root_window_impl_quartz_get_context (GdkWindowImplQuartz *window, + gboolean antialias) { - GdkDrawableImplQuartz *drawable_impl = GDK_DRAWABLE_IMPL_QUARTZ (drawable); CGColorSpaceRef colorspace; CGContextRef cg_context; + GdkWindowImplQuartz *window_impl = GDK_WINDOW_IMPL_QUARTZ (window); - if (GDK_WINDOW_DESTROYED (drawable_impl->wrapper)) + if (GDK_WINDOW_DESTROYED (window_impl->wrapper)) return NULL; /* We do not have the notion of a root window on OS X. We fake this @@ -3014,8 +3151,8 @@ gdk_root_window_impl_quartz_get_context (GdkDrawable *drawable, } static void -gdk_root_window_impl_quartz_release_context (GdkDrawable *drawable, - CGContextRef cg_context) +gdk_root_window_impl_quartz_release_context (GdkWindowImplQuartz *window, + CGContextRef cg_context) { CGContextRelease (cg_context); } @@ -3023,12 +3160,12 @@ gdk_root_window_impl_quartz_release_context (GdkDrawable *drawable, static void gdk_root_window_impl_quartz_class_init (GdkRootWindowImplQuartzClass *klass) { - GdkDrawableImplQuartzClass *drawable_quartz_class = GDK_DRAWABLE_IMPL_QUARTZ_CLASS (klass); + GdkWindowImplQuartzClass *window_quartz_class = GDK_WINDOW_IMPL_QUARTZ_CLASS (klass); root_window_parent_class = g_type_class_peek_parent (klass); - drawable_quartz_class->get_context = gdk_root_window_impl_quartz_get_context; - drawable_quartz_class->release_context = gdk_root_window_impl_quartz_release_context; + window_quartz_class->get_context = gdk_root_window_impl_quartz_get_context; + window_quartz_class->release_context = gdk_root_window_impl_quartz_release_context; } static void diff --git a/gdk/quartz/gdkwindow-quartz.h b/gdk/quartz/gdkwindow-quartz.h index b591eebc81..f89c20cfba 100644 --- a/gdk/quartz/gdkwindow-quartz.h +++ b/gdk/quartz/gdkwindow-quartz.h @@ -21,9 +21,9 @@ #ifndef __GDK_WINDOW_QUARTZ_H__ #define __GDK_WINDOW_QUARTZ_H__ -#include #import -#import +#import +#include "gdk/gdkwindowimpl.h" G_BEGIN_DECLS @@ -42,7 +42,9 @@ typedef struct _GdkWindowImplQuartzClass GdkWindowImplQuartzClass; struct _GdkWindowImplQuartz { - GdkDrawableImplQuartz parent_instance; + GdkWindowImpl parent_instance; + + GdkWindow *wrapper; NSWindow *toplevel; NSTrackingRectTag tracking_rect; @@ -60,15 +62,26 @@ struct _GdkWindowImplQuartz GList *sorted_children; cairo_region_t *needs_display_region; + + cairo_surface_t *cairo_surface; }; struct _GdkWindowImplQuartzClass { - GdkDrawableImplQuartzClass parent_class; + GdkWindowImplClass parent_class; + + CGContextRef (* get_context) (GdkWindowImplQuartz *window, + gboolean antialias); + void (* release_context) (GdkWindowImplQuartz *window, + CGContextRef cg_context); }; GType _gdk_window_impl_quartz_get_type (void); +CGContextRef gdk_quartz_window_get_context (GdkWindowImplQuartz *window, + gboolean antialias); +void gdk_quartz_window_release_context (GdkWindowImplQuartz *window, + CGContextRef context); /* Root window implementation for Quartz */ diff --git a/gdk/tests/Makefile.am b/gdk/tests/Makefile.am index 04e5b253fe..5cadc6d35c 100644 --- a/gdk/tests/Makefile.am +++ b/gdk/tests/Makefile.am @@ -12,17 +12,25 @@ AM_CPPFLAGS = \ progs_ldadd = \ $(GDK_DEP_LIBS) \ - $(top_builddir)/gdk/libgdk-$(gdktarget)-$(GTK_API_VERSION).la \ + $(top_builddir)/gdk/libgdk-$(GTK_API_VERSION).la \ $(NULL) #TEST_PROGS += check-gdk-cairo -check_gdk_cairo_SOURCES = check-gdk-cairo.c -check_gdk_cairo_LDADD = $(progs_ldadd) +#check_gdk_cairo_SOURCES = check-gdk-cairo.c +#check_gdk_cairo_LDADD = $(progs_ldadd) TEST_PROGS += gdk-color gdk_color_SOURCES = gdk-color.c gdk_color_LDADD = $(progs_ldadd) +TEST_PROGS += encoding +encoding_SOURCES = encoding.c +encoding_LDADD = $(progs_ldadd) + +TEST_PROGS += display +display_SOURCES = display.c +display_LDADD = $(progs_ldadd) + CLEANFILES = \ cairosurface.png \ gdksurface.png diff --git a/gdk/tests/display.c b/gdk/tests/display.c new file mode 100644 index 0000000000..79fbcfd254 --- /dev/null +++ b/gdk/tests/display.c @@ -0,0 +1,74 @@ +#include + +#include + +static void +test_unset_display (void) +{ + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR)) + { + GdkDisplayManager *manager; + + g_unsetenv ("DISPLAY"); + + g_assert (!gdk_init_check (NULL, NULL)); + manager = gdk_display_manager_get (); + g_assert (manager != NULL); + g_assert (gdk_display_manager_get_default_display (manager) == NULL); + + exit (0); + } + g_test_trap_assert_passed (); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR)) + { + g_unsetenv ("DISPLAY"); + + gdk_init (NULL, NULL); + + exit (0); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*cannot open display*"); +} + +static void +test_bad_display (void) +{ + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR)) + { + GdkDisplayManager *manager; + + g_setenv ("DISPLAY", "poo", TRUE); + + g_assert (!gdk_init_check (NULL, NULL)); + manager = gdk_display_manager_get (); + g_assert (manager != NULL); + g_assert (gdk_display_manager_get_default_display (manager) == NULL); + + exit (0); + } + g_test_trap_assert_passed (); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR)) + { + g_setenv ("DISPLAY", "poo", TRUE); + + gdk_init (NULL, NULL); + + exit (0); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*cannot open display*"); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/display/unset-display", test_unset_display); + g_test_add_func ("/display/bad-display", test_bad_display); + + return g_test_run (); +} diff --git a/gdk/tests/encoding.c b/gdk/tests/encoding.c new file mode 100644 index 0000000000..546bf29fae --- /dev/null +++ b/gdk/tests/encoding.c @@ -0,0 +1,46 @@ +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +static void +test_to_text_list (void) +{ + GdkDisplay *display; + + display = gdk_display_get_default (); + +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + { + GdkAtom encoding; + gint format; + const guchar *text; + gint length; + gchar **list; + gint n; + + encoding = gdk_atom_intern ("UTF8_STRING", FALSE); + format = 8; + text = (const guchar*)"abcdef \304\201 \304\205\0ABCDEF \304\200 \304\204"; + length = 25; + n = gdk_x11_display_text_property_to_text_list (display, encoding, format, text, length, &list); + g_assert_cmpint (n, ==, 2); + g_assert (g_str_has_prefix (list[0], "abcdef ")); + g_assert (g_str_has_prefix (list[1], "ABCDEF ")); + + gdk_x11_free_text_list (list); + } +#endif +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + gdk_init (&argc, &argv); + + g_test_add_func ("/encoding/to-text-list", test_to_text_list); + + return g_test_run (); +} diff --git a/gdk/win32/Makefile.am b/gdk/win32/Makefile.am index d851ccf056..404ddd6aef 100644 --- a/gdk/win32/Makefile.am +++ b/gdk/win32/Makefile.am @@ -25,8 +25,6 @@ EXTRA_DIST += \ makefile.msc libgdk_win32_la_SOURCES = \ - xcursors.h \ - gdkapplaunchcontext-win32.c \ gdkcursor-win32.c \ gdkdevicemanager-win32.c \ gdkdevicemanager-win32.h \ @@ -35,13 +33,11 @@ libgdk_win32_la_SOURCES = \ gdkdevice-wintab.c \ gdkdevice-wintab.h \ gdkdisplay-win32.c \ + gdkdisplaymanager-win32.c \ gdkdnd-win32.c \ - gdkdrawable-win32.c \ - gdkdrawable-win32.h \ gdkevents-win32.c \ gdkgeometry-win32.c \ gdkglobals-win32.c \ - gdkim-win32.c \ gdkinput.c \ gdkkeys-win32.c \ gdkmain-win32.c \ @@ -49,15 +45,22 @@ libgdk_win32_la_SOURCES = \ gdkproperty-win32.c \ gdkscreen-win32.c \ gdkselection-win32.c \ - gdkspawn-win32.c \ gdktestutils-win32.c \ gdkvisual-win32.c \ + gdkwin32cursor.h \ + gdkwin32display.h \ + gdkwin32displaymanager.h \ + gdkwin32dnd.h \ gdkwin32.h \ gdkwin32id.c \ + gdkwin32keys.h \ + gdkwin32screen.h \ + gdkwin32window.h \ gdkwindow-win32.c \ gdkwindow-win32.h \ + pktdef.h \ wintab.h \ - pktdef.h + xcursors.h libgdkinclude_HEADERS = \ gdkwin32.h diff --git a/gdk/win32/gdkapplaunchcontext-win32.c b/gdk/win32/gdkapplaunchcontext-win32.c deleted file mode 100644 index 8a7323c51d..0000000000 --- a/gdk/win32/gdkapplaunchcontext-win32.c +++ /dev/null @@ -1,42 +0,0 @@ -/* gdkapplaunchcontext-win32.c - Gtk+ implementation for GAppLaunchContext - - Copyright (C) 2007 Red Hat, Inc. - - The Gnome 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. - - The Gnome 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 the Gnome Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - - Author: Matthias Clasen -*/ - -#include "config.h" - -#include "gdkapplaunchcontext.h" - - -char * -_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, - GAppInfo *info, - GList *files) -{ - return NULL; -} - -void -_gdk_windowing_launch_failed (GAppLaunchContext *context, - const char *startup_notify_id) -{ -} - - diff --git a/gdk/win32/gdkcursor-win32.c b/gdk/win32/gdkcursor-win32.c index 3053b917c0..313b0d8a4f 100644 --- a/gdk/win32/gdkcursor-win32.c +++ b/gdk/win32/gdkcursor-win32.c @@ -24,6 +24,7 @@ #include "gdkscreen.h" #include "gdkcursor.h" #include "gdkprivate-win32.h" +#include "gdkwin32cursor.h" #ifdef __MINGW32__ #include @@ -135,25 +136,47 @@ hcursor_from_type (GdkCursorType cursor_type) return rv; } +struct _GdkWin32CursorClass +{ + GdkCursorClass cursor_class; +}; + +G_DEFINE_TYPE (GdkWin32Cursor, gdk_win32_cursor, GDK_TYPE_CURSOR) + +static void +_gdk_win32_cursor_finalize (GObject *object) +{ + GdkWin32Cursor *private = GDK_WIN32_CURSOR (object); + + if (GetCursor () == private->hcursor) + SetCursor (NULL); + + if (!DestroyCursor (private->hcursor)) + WIN32_API_FAILED ("DestroyCursor"); + + G_OBJECT_CLASS (gdk_win32_cursor_parent_class)->finalize (object); +} + static GdkCursor* cursor_new_from_hcursor (HCURSOR hcursor, GdkCursorType cursor_type) { - GdkCursorPrivate *private; + GdkWin32Cursor *private; GdkCursor *cursor; - private = g_new (GdkCursorPrivate, 1); + private = g_object_new (GDK_TYPE_WIN32_CURSOR, + "cursor-type", cursor_type, + "display", _gdk_display, + NULL); private->hcursor = hcursor; cursor = (GdkCursor*) private; - cursor->type = cursor_type; - cursor->ref_count = 1; return cursor; } GdkCursor* -gdk_cursor_new_for_display (GdkDisplay *display, - GdkCursorType cursor_type) +_gdk_win32_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType cursor_type) { HCURSOR hcursor; @@ -206,8 +229,8 @@ static struct { }; GdkCursor* -gdk_cursor_new_from_name (GdkDisplay *display, - const gchar *name) +_gdk_win32_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name) { HCURSOR hcursor = NULL; int i; @@ -229,32 +252,6 @@ gdk_cursor_new_from_name (GdkDisplay *display, return NULL; } -void -_gdk_cursor_destroy (GdkCursor *cursor) -{ - GdkCursorPrivate *private; - - g_return_if_fail (cursor != NULL); - private = (GdkCursorPrivate *) cursor; - - GDK_NOTE (CURSOR, g_print ("_gdk_cursor_destroy: %p\n", - (cursor->type == GDK_CURSOR_IS_PIXMAP) ? private->hcursor : 0)); - - if (GetCursor () == private->hcursor) - SetCursor (NULL); - - if (!DestroyCursor (private->hcursor)) - WIN32_API_FAILED ("DestroyCursor"); - - g_free (private); -} - -GdkDisplay * -gdk_cursor_get_display (GdkCursor *cursor) -{ - return gdk_display_get_default (); -} - GdkPixbuf * gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) { @@ -431,19 +428,19 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) return pixbuf; } -GdkPixbuf* -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf * +_gdk_win32_cursor_get_image (GdkCursor *cursor) { g_return_val_if_fail (cursor != NULL, NULL); - return gdk_win32_icon_to_pixbuf_libgtk_only (((GdkCursorPrivate *) cursor)->hcursor); + return gdk_win32_icon_to_pixbuf_libgtk_only (((GdkWin32Cursor *) cursor)->hcursor); } GdkCursor * -gdk_cursor_new_from_pixbuf (GdkDisplay *display, - GdkPixbuf *pixbuf, - gint x, - gint y) +_gdk_win32_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y) { HCURSOR hcursor; @@ -458,8 +455,8 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, return cursor_new_from_hcursor (hcursor, GDK_CURSOR_IS_PIXMAP); } -gboolean -gdk_display_supports_cursor_alpha (GdkDisplay *display) +gboolean +_gdk_win32_display_supports_cursor_alpha (GdkDisplay *display) { g_return_val_if_fail (display == _gdk_display, FALSE); @@ -467,25 +464,30 @@ gdk_display_supports_cursor_alpha (GdkDisplay *display) } gboolean -gdk_display_supports_cursor_color (GdkDisplay *display) +_gdk_win32_display_supports_cursor_color (GdkDisplay *display) { g_return_val_if_fail (display == _gdk_display, FALSE); return TRUE; } -guint -gdk_display_get_default_cursor_size (GdkDisplay *display) +void +_gdk_win32_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { - g_return_val_if_fail (display == _gdk_display, 0); - - return MIN (GetSystemMetrics (SM_CXCURSOR), GetSystemMetrics (SM_CYCURSOR)); + g_return_if_fail (display == _gdk_display); + + if (width) + *width = GetSystemMetrics (SM_CXCURSOR); + if (height) + *height = GetSystemMetrics (SM_CYCURSOR); } void -gdk_display_get_maximal_cursor_size (GdkDisplay *display, - guint *width, - guint *height) +_gdk_win32_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { g_return_if_fail (display == _gdk_display); @@ -818,3 +820,18 @@ gdk_win32_pixbuf_to_hicon_libgtk_only (GdkPixbuf *pixbuf) { return _gdk_win32_pixbuf_to_hicon (pixbuf); } + +static void +gdk_win32_cursor_init (GdkWin32Cursor *cursor) +{ +} +static void +gdk_win32_cursor_class_init(GdkWin32CursorClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkCursorClass *cursor_class = GDK_CURSOR_CLASS (klass); + + object_class->finalize = _gdk_win32_cursor_finalize; + + cursor_class->get_image = _gdk_win32_cursor_get_image; +} diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index 54f1f0b6c8..c0a1bb3ddd 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -24,6 +24,7 @@ #include #include +#include "gdkdisplayprivate.h" #include "gdkdevice-win32.h" #include "gdkwin32.h" @@ -134,14 +135,14 @@ gdk_device_win32_set_window_cursor (GdkDevice *device, GdkWindow *window, GdkCursor *cursor) { - GdkCursorPrivate *cursor_private; - GdkWindowObject *parent_window; + GdkWin32Cursor *cursor_private; + GdkWindow *parent_window; GdkWindowImplWin32 *impl; HCURSOR hcursor; HCURSOR hprevcursor; - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); - cursor_private = (GdkCursorPrivate*) cursor; + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + cursor_private = (GdkWin32Cursor*) cursor; hprevcursor = impl->hcursor; @@ -164,13 +165,11 @@ gdk_device_win32_set_window_cursor (GdkDevice *device, * first ancestor that has cursor defined, and if so, set * new cursor. */ - GdkWindowObject *curr_window_obj = GDK_WINDOW_OBJECT (curr_window); - - while (curr_window_obj && - !GDK_WINDOW_IMPL_WIN32 (curr_window_obj->impl)->hcursor) + while (curr_window && curr_window->impl && + !GDK_WINDOW_IMPL_WIN32 (curr_window->impl)->hcursor) { - curr_window_obj = curr_window_obj->parent; - if (curr_window_obj == GDK_WINDOW_OBJECT (window)) + curr_window = curr_window->parent; + if (curr_window == GDK_WINDOW (window)) { SetCursor (hcursor); break; @@ -188,7 +187,7 @@ gdk_device_win32_set_window_cursor (GdkDevice *device, { /* Look for a suitable cursor to use instead */ hcursor = NULL; - parent_window = GDK_WINDOW_OBJECT (window)->parent; + parent_window = GDK_WINDOW (window)->parent; while (hcursor == NULL) { @@ -329,12 +328,19 @@ static void gdk_device_win32_ungrab (GdkDevice *device, guint32 time_) { + GdkDeviceGrabInfo *info; GdkDisplay *display; display = gdk_device_get_display (device); + info = _gdk_display_get_last_device_grab (display, device); + + if (info) + info->serial_end = 0; if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) ReleaseCapture (); + + _gdk_display_device_grab_update (display, device, NULL, 0); } static GdkWindow * diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 9d5ed79ef6..351105fe0c 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -372,7 +372,7 @@ _gdk_input_check_extension_events (GdkDevice *device) for (l = input_windows; l; l = l->next) { - GdkWindowObject *window_private; + GdkWindow *window_private; GdkEventMask event_mask = 0; window_private = l->data; diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index 6a7b6e71d8..1af90395f6 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -29,6 +29,8 @@ #include "gdkdeviceprivate.h" #include "gdkdevice-win32.h" #include "gdkdevice-wintab.h" +#include "gdkwin32.h" +#include "gdkdisplayprivate.h" #include #include @@ -860,7 +862,6 @@ _gdk_input_other_event (GdkEvent *event, GdkWindow *window) { GdkDisplay *display; - GdkWindowObject *obj; GdkDeviceWintab *device = NULL; GdkDeviceGrabInfo *last_grab; GdkEventMask masktest; @@ -900,8 +901,6 @@ _gdk_input_other_event (GdkEvent *event, return FALSE; } - obj = GDK_WINDOW_OBJECT (window); - switch (msg->message) { case WT_PACKET: @@ -928,7 +927,6 @@ _gdk_input_other_event (GdkEvent *event, g_object_unref (window); window = g_object_ref (last_grab->window); - obj = GDK_WINDOW_OBJECT (window); } if (window == _gdk_root) @@ -1006,12 +1004,12 @@ _gdk_input_other_event (GdkEvent *event, { GDK_NOTE (EVENTS_OR_INPUT, g_print ("... not selected\n")); - if (obj->parent == GDK_WINDOW_OBJECT (_gdk_root)) + if (window->parent == GDK_WINDOW (_gdk_root)) return FALSE; /* It is not good to propagate the extended events up to the parent * if this window wants normal (not extended) motion/button events */ - if (obj->event_mask & masktest) + if (window->event_mask & masktest) { GDK_NOTE (EVENTS_OR_INPUT, g_print ("... wants ordinary event, ignoring this\n")); @@ -1022,8 +1020,7 @@ _gdk_input_other_event (GdkEvent *event, pt.y = y; ClientToScreen (GDK_WINDOW_HWND (window), &pt); g_object_unref (window); - window = (GdkWindow *) obj->parent; - obj = GDK_WINDOW_OBJECT (window); + window = window->parent; g_object_ref (window); ScreenToClient (GDK_WINDOW_HWND (window), &pt); x = pt.x; diff --git a/gdk/win32/gdkdevicemanager-win32.h b/gdk/win32/gdkdevicemanager-win32.h index 69d26b7561..6e09737d0e 100644 --- a/gdk/win32/gdkdevicemanager-win32.h +++ b/gdk/win32/gdkdevicemanager-win32.h @@ -20,7 +20,7 @@ #ifndef __GDK_DEVICE_MANAGER_WIN32_H__ #define __GDK_DEVICE_MANAGER_WIN32_H__ -#include +#include G_BEGIN_DECLS diff --git a/gdk/win32/gdkdisplay-win32.c b/gdk/win32/gdkdisplay-win32.c index 3d43c26ddd..da920984ca 100644 --- a/gdk/win32/gdkdisplay-win32.c +++ b/gdk/win32/gdkdisplay-win32.c @@ -21,6 +21,10 @@ #include "config.h" #include "gdk.h" #include "gdkprivate-win32.h" +#include "gdkdisplayprivate.h" +#include "gdkwin32display.h" +#include "gdkwin32screen.h" +#include "gdkwin32window.h" #define HAVE_MONITOR_INFO @@ -36,8 +40,8 @@ _gdk_windowing_set_default_display (GdkDisplay *display) g_assert (display == NULL || _gdk_display == display); } -gulong -_gdk_windowing_window_get_next_serial (GdkDisplay *display) +static gulong +gdk_win32_display_get_next_serial (GdkDisplay *display) { return 0; } @@ -179,7 +183,7 @@ _gdk_monitor_init (void) } GdkDisplay * -gdk_display_open (const gchar *display_name) +_gdk_win32_display_open (const gchar *display_name) { GDK_NOTE (MISC, g_print ("gdk_display_open: %s\n", (display_name ? display_name : "NULL"))); @@ -199,8 +203,8 @@ gdk_display_open (const gchar *display_name) return NULL; } - _gdk_display = g_object_new (GDK_TYPE_DISPLAY, NULL); - _gdk_screen = g_object_new (GDK_TYPE_SCREEN, NULL); + _gdk_display = g_object_new (GDK_TYPE_WIN32_DISPLAY, NULL); + _gdk_screen = g_object_new (GDK_TYPE_WIN32_SCREEN, NULL); _gdk_monitor_init (); _gdk_visual_init (); @@ -220,8 +224,20 @@ gdk_display_open (const gchar *display_name) return _gdk_display; } -G_CONST_RETURN gchar * -gdk_display_get_name (GdkDisplay *display) +struct _GdkWin32Display +{ + GdkDisplay display; +}; + +struct _GdkWin32DisplayClass +{ + GdkDisplayClass display_class; +}; + +G_DEFINE_TYPE (GdkWin32Display, gdk_win32_display, GDK_TYPE_DISPLAY) + +static G_CONST_RETURN gchar * +gdk_win32_display_get_name (GdkDisplay *display) { HDESK hdesk = GetThreadDesktop (GetCurrentThreadId ()); char dummy; @@ -277,24 +293,24 @@ gdk_display_get_name (GdkDisplay *display) window_station_name, desktop_name); - GDK_NOTE (MISC, g_print ("gdk_display_get_name: %s\n", display_name)); + GDK_NOTE (MISC, g_print ("gdk_win32_display_get_name: %s\n", display_name)); display_name_cache = display_name; return display_name_cache; } -gint -gdk_display_get_n_screens (GdkDisplay *display) +static gint +gdk_win32_display_get_n_screens (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); return 1; } -GdkScreen * -gdk_display_get_screen (GdkDisplay *display, - gint screen_num) +static GdkScreen * +gdk_win32_display_get_screen (GdkDisplay *display, + gint screen_num) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); g_return_val_if_fail (screen_num == 0, NULL); @@ -302,16 +318,16 @@ gdk_display_get_screen (GdkDisplay *display, return _gdk_screen; } -GdkScreen * -gdk_display_get_default_screen (GdkDisplay *display) +static GdkScreen * +gdk_win32_display_get_default_screen (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); return _gdk_screen; } -GdkWindow * -gdk_display_get_default_group (GdkDisplay *display) +static GdkWindow * +gdk_win32_display_get_default_group (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); @@ -320,30 +336,30 @@ gdk_display_get_default_group (GdkDisplay *display) return NULL; } -gboolean -gdk_display_supports_selection_notification (GdkDisplay *display) +static gboolean +gdk_win32_display_supports_selection_notification (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); return FALSE; } -gboolean -gdk_display_request_selection_notification (GdkDisplay *display, +static gboolean +gdk_win32_display_request_selection_notification (GdkDisplay *display, GdkAtom selection) { return FALSE; } -gboolean -gdk_display_supports_clipboard_persistence (GdkDisplay *display) +static gboolean +gdk_win32_display_supports_clipboard_persistence (GdkDisplay *display) { return FALSE; } -void -gdk_display_store_clipboard (GdkDisplay *display, +static void +gdk_win32_display_store_clipboard (GdkDisplay *display, GdkWindow *clipboard_window, guint32 time_, const GdkAtom *targets, @@ -351,16 +367,16 @@ gdk_display_store_clipboard (GdkDisplay *display, { } -gboolean -gdk_display_supports_shapes (GdkDisplay *display) +static gboolean +gdk_win32_display_supports_shapes (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); return TRUE; } -gboolean -gdk_display_supports_input_shapes (GdkDisplay *display) +static gboolean +gdk_win32_display_supports_input_shapes (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); @@ -371,8 +387,142 @@ gdk_display_supports_input_shapes (GdkDisplay *display) return FALSE; } -gboolean -gdk_display_supports_composite (GdkDisplay *display) +static gboolean +gdk_win32_display_supports_composite (GdkDisplay *display) { return FALSE; } + +static void +gdk_win32_display_beep (GdkDisplay *display) +{ + g_return_if_fail (display == gdk_display_get_default()); + if (!MessageBeep (-1)) + Beep(1000, 50); +} + +static void +gdk_win32_display_flush (GdkDisplay * display) +{ + g_return_if_fail (display == _gdk_display); + + GdiFlush (); +} + +static void +gdk_win32_display_dispose (GObject *object) +{ +} + +static void +gdk_win32_display_finalize (GObject *object) +{ +} + +static void +gdk_win32_display_init(GdkWin32Display *display) +{ +} + +static void +gdk_win32_display_before_process_all_updates (GdkDisplay *display) +{ + /* nothing */ +} +static void +gdk_win32_display_after_process_all_updates (GdkDisplay *display) +{ + /* nothing */ +} +static void +gdk_win32_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id) +{ + /* nothing */ +} +static void +gdk_win32_display_event_data_copy (GdkDisplay *display, + const GdkEvent *src, + GdkEvent *dst) +{ + /* nothing */ +} +static void +gdk_win32_display_event_data_free (GdkDisplay *display, + GdkEvent *event) +{ + /* nothing */ +} +static void +gdk_win32_display_push_error_trap (GdkDisplay *display) +{ + /* nothing */ +} +static gint +gdk_win32_display_pop_error_trap (GdkDisplay *display, + gboolean ignored) +{ + return 0; +} +static void +gdk_win32_display_class_init (GdkWin32DisplayClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkDisplayClass *display_class = GDK_DISPLAY_CLASS (klass); + + object_class->dispose = gdk_win32_display_dispose; + object_class->finalize = gdk_win32_display_finalize; + + display_class->window_type = GDK_TYPE_WIN32_WINDOW; + + display_class->get_name = gdk_win32_display_get_name; + display_class->get_n_screens = gdk_win32_display_get_n_screens; + display_class->get_screen = gdk_win32_display_get_screen; + display_class->get_default_screen = gdk_win32_display_get_default_screen; + display_class->beep = gdk_win32_display_beep; + display_class->sync = _gdk_win32_display_sync; + display_class->flush = gdk_win32_display_flush; + display_class->has_pending = _gdk_win32_display_has_pending; + display_class->queue_events = _gdk_win32_display_queue_events; + display_class->get_default_group = gdk_win32_display_get_default_group; + + display_class->supports_selection_notification = gdk_win32_display_supports_selection_notification; + display_class->request_selection_notification = gdk_win32_display_request_selection_notification; + display_class->supports_clipboard_persistence = gdk_win32_display_supports_clipboard_persistence; + display_class->store_clipboard = gdk_win32_display_store_clipboard; + display_class->supports_shapes = gdk_win32_display_supports_shapes; + display_class->supports_input_shapes = gdk_win32_display_supports_input_shapes; + display_class->supports_composite = gdk_win32_display_supports_composite; + + display_class->list_devices = _gdk_win32_display_list_devices; + display_class->send_client_message = _gdk_win32_display_send_client_message; + display_class->add_client_message_filter = _gdk_win32_display_add_client_message_filter; + //? display_class->get_app_launch_context = _gdk_win32_display_get_app_launch_context; + display_class->get_drag_protocol = _gdk_win32_display_get_drag_protocol; + display_class->get_cursor_for_type = _gdk_win32_display_get_cursor_for_type; + display_class->get_cursor_for_name = _gdk_win32_display_get_cursor_for_name; + display_class->get_cursor_for_pixbuf = _gdk_win32_display_get_cursor_for_pixbuf; + display_class->get_default_cursor_size = _gdk_win32_display_get_default_cursor_size; + display_class->get_maximal_cursor_size = _gdk_win32_display_get_maximal_cursor_size; + display_class->supports_cursor_alpha = _gdk_win32_display_supports_cursor_alpha; + display_class->supports_cursor_color = _gdk_win32_display_supports_cursor_color; + + display_class->before_process_all_updates = gdk_win32_display_before_process_all_updates; + display_class->after_process_all_updates = gdk_win32_display_after_process_all_updates; + display_class->get_next_serial = gdk_win32_display_get_next_serial; + display_class->notify_startup_complete = gdk_win32_display_notify_startup_complete; + display_class->event_data_copy = gdk_win32_display_event_data_copy; + display_class->event_data_free = gdk_win32_display_event_data_free; + display_class->create_window_impl = _gdk_win32_display_create_window_impl; + + display_class->get_keymap = _gdk_win32_display_get_keymap; + display_class->push_error_trap = gdk_win32_display_push_error_trap; + display_class->pop_error_trap = gdk_win32_display_pop_error_trap; + display_class->get_selection_owner = _gdk_win32_display_get_selection_owner; + display_class->set_selection_owner = _gdk_win32_display_set_selection_owner; + display_class->send_selection_notify = _gdk_win32_display_send_selection_notify; + display_class->get_selection_property = _gdk_win32_display_get_selection_property; + display_class->convert_selection = _gdk_win32_display_convert_selection; + display_class->text_property_to_utf8_list = _gdk_win32_display_text_property_to_utf8_list; + display_class->utf8_to_string_target = _gdk_win32_display_utf8_to_string_target; +} diff --git a/gdk/win32/gdkdisplaymanager-win32.c b/gdk/win32/gdkdisplaymanager-win32.c new file mode 100644 index 0000000000..3df8d1752e --- /dev/null +++ b/gdk/win32/gdkdisplaymanager-win32.c @@ -0,0 +1,135 @@ +/* GDK - The GIMP Drawing Kit + * gdkdisplaymanager-win32.c + * + * Copyright 2010 Hans Breuer + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include "gdkwin32display.h" +#include "gdkwin32displaymanager.h" +#include "gdkprivate-win32.h" + +#include "gdkdisplaymanagerprivate.h" +#include "gdkinternals.h" + +struct _GdkWin32DisplayManager +{ + GdkDisplayManager parent_instance; +}; + +struct _GdkWin32DisplayManagerClass +{ + GdkDisplayManagerClass parent_instance; +}; + +G_DEFINE_TYPE (GdkWin32DisplayManager, gdk_win32_display_manager, GDK_TYPE_DISPLAY_MANAGER) + +static GdkDisplay * +gdk_win32_display_manager_open_display (GdkDisplayManager *manager, + const gchar *name) +{ + return _gdk_win32_display_open (name); +} + +static GSList * +gdk_win32_display_manager_list_displays (GdkDisplayManager *manager) +{ + return g_slist_append (NULL, gdk_display_get_default ()); +} + +static GdkDisplay * +gdk_win32_display_manager_get_default_display (GdkDisplayManager *manager) +{ + return _gdk_win32_display_open (NULL); +} + +static void +gdk_win32_display_manager_set_default_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + g_assert (gdk_display_get_default () == display); +} + +#include "../gdkkeynames.c" + +static gchar * +gdk_win32_display_manager_get_keyval_name (GdkDisplayManager *manager, + guint keyval) +{ + return _gdk_keyval_name (keyval); +} + +static guint +gdk_win32_display_manager_lookup_keyval (GdkDisplayManager *manager, + const gchar *name) +{ + return _gdk_keyval_from_name (name); +} + +static void +gdk_win32_display_manager_keyval_convert_case (GdkDisplayManager *manager, + guint symbol, + guint *lower, + guint *upper) +{ + /* FIXME implement this */ + if (lower) + *lower = symbol; + if (upper) + *upper = symbol; +} + +static void +gdk_win32_display_manager_init (GdkWin32DisplayManager *manager) +{ + static once = TRUE; + /* relies on displaymanager being a singleton , but our init functions + * call gtk_diplay_maanger_get() again */ + if (once) + { + once = FALSE; + _gdk_win32_windowing_init (); + } +} + +static void +gdk_win32_display_manager_finalize (GObject *object) +{ + g_error ("A GdkWin32DisplayManager object was finalized. This should not happen"); + G_OBJECT_CLASS (gdk_win32_display_manager_parent_class)->finalize (object); +} + +static void +gdk_win32_display_manager_class_init (GdkWin32DisplayManagerClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GdkDisplayManagerClass *manager_class = GDK_DISPLAY_MANAGER_CLASS (class); + + object_class->finalize = gdk_win32_display_manager_finalize; + + manager_class->open_display = gdk_win32_display_manager_open_display; + manager_class->list_displays = gdk_win32_display_manager_list_displays; + manager_class->set_default_display = gdk_win32_display_manager_set_default_display; + manager_class->get_default_display = gdk_win32_display_manager_get_default_display; + manager_class->atom_intern = _gdk_win32_display_manager_atom_intern; + manager_class->get_atom_name = _gdk_win32_display_manager_get_atom_name; + manager_class->lookup_keyval = gdk_win32_display_manager_lookup_keyval; + manager_class->get_keyval_name = gdk_win32_display_manager_get_keyval_name; + manager_class->keyval_convert_case = gdk_win32_display_manager_keyval_convert_case; +} diff --git a/gdk/win32/gdkdnd-win32.c b/gdk/win32/gdkdnd-win32.c index 46b871bdef..9788e90d08 100644 --- a/gdk/win32/gdkdnd-win32.c +++ b/gdk/win32/gdkdnd-win32.c @@ -76,6 +76,9 @@ #include "gdkproperty.h" #include "gdkinternals.h" #include "gdkprivate-win32.h" +#include "gdkwin32.h" +#include "gdkwin32dnd.h" +#include "gdk/gdkdndprivate.h" #include @@ -98,7 +101,6 @@ typedef enum { * this is used on both source and destination sides. */ struct _GdkDragContextPrivateWin32 { - GdkDevice *device; gboolean being_finalized; gint ref_count; IUnknown *iface; @@ -108,23 +110,29 @@ struct _GdkDragContextPrivateWin32 { guint drop_failed : 1; /* Whether the drop was unsuccessful */ }; -#define PRIVATE_DATA(context) ((GdkDragContextPrivateWin32 *) GDK_DRAG_CONTEXT (context)->windowing_data) +#define PRIVATE_DATA(context) (GDK_WIN32_DRAG_CONTEXT (context)->windowing_data) static GList *contexts; static GdkDragContext *current_dest_drag = NULL; -static void gdk_drag_context_init (GdkDragContext *dragcontext); -static void gdk_drag_context_class_init (GdkDragContextClass *klass); -static void gdk_drag_context_finalize (GObject *object); +struct _GdkWin32DragContext +{ + GdkDragContext context; + + GdkDragContextPrivateWin32 *windowing_data; +}; -static gpointer parent_class = NULL; +struct _GdkWin32DragContextClass +{ + GdkDragContextClass parent_class; +}; + +G_DEFINE_TYPE (GdkWin32DragContext, gdk_win32_drag_context, GDK_TYPE_DRAG_CONTEXT) static gboolean use_ole2_dnd = FALSE; -G_DEFINE_TYPE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT) - static void -gdk_drag_context_init (GdkDragContext *dragcontext) +gdk_win32_drag_context_init (GdkWin32DragContext *dragcontext) { GdkDragContextPrivateWin32 *private; @@ -149,19 +157,7 @@ gdk_drag_context_init (GdkDragContext *dragcontext) } static void -gdk_drag_context_class_init (GdkDragContextClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = gdk_drag_context_finalize; - - g_type_class_add_private (object_class, sizeof (GdkDragContextPrivateWin32)); -} - -static void -gdk_drag_context_finalize (GObject *object) +gdk_win32_drag_context_finalize (GObject *object) { GdkDragContext *context = GDK_DRAG_CONTEXT (object); @@ -193,7 +189,7 @@ gdk_drag_context_finalize (GObject *object) } } - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_win32_drag_context_parent_class)->finalize (object); } /* Drag Contexts */ @@ -204,39 +200,6 @@ gdk_drag_context_new (void) return g_object_new (GDK_TYPE_DRAG_CONTEXT, NULL); } -GdkDevice * -gdk_drag_context_get_device (GdkDragContext *context) -{ - GdkDragContextPrivateWin32 *private; - - g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); - - private = PRIVATE_DATA (context); - - return private->device; -} - -void -gdk_drag_context_set_device (GdkDragContext *context, - GdkDevice *device) -{ - GdkDragContextPrivateWin32 *private; - - g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (GDK_IS_DEVICE (device)); - - private = PRIVATE_DATA (context); - - if (private->device) - { - g_object_unref (private->device); - private->device = NULL; - } - - if (device) - private->device = g_object_ref (device); -} - static GdkDragContext * gdk_drag_context_find (gboolean is_source, GdkWindow *source, @@ -1237,7 +1200,7 @@ target_context_new (GdkWindow *window) result->context->suggested_action = GDK_ACTION_MOVE; result->context->action = GDK_ACTION_MOVE; - private = result->context->windowing_data; + private = PRIVATE_DATA(result->context); private->iface = (IUnknown *) &result->idt; idroptarget_addref (&result->idt); @@ -1273,7 +1236,7 @@ source_context_new (GdkWindow *window, result->context->dest_window = NULL; result->context->targets = g_list_copy (targets); - private = result->context->windowing_data; + private = PRIVATE_DATA(result->context); private->iface = (IUnknown *) &result->ids; idropsource_addref (&result->ids); @@ -1853,8 +1816,9 @@ gdk_drag_do_leave (GdkDragContext *context, } GdkDragContext * -gdk_drag_begin (GdkWindow *window, - GList *targets) +_gdk_win32_window_drag_begin (GdkWindow *window, + GdkDevice *device, + GList *targets) { if (!use_ole2_dnd) { @@ -1874,6 +1838,7 @@ gdk_drag_begin (GdkWindow *window, new_context->source_window = window; g_object_ref (window); + gdk_drag_context_set_device (new_context, device); new_context->targets = g_list_copy (targets); new_context->actions = 0; @@ -2008,13 +1973,14 @@ _gdk_win32_dnd_do_dragdrop (void) } GdkNativeWindow -gdk_drag_get_protocol_for_display (GdkDisplay *display, - GdkNativeWindow xid, - GdkDragProtocol *protocol) +_gdk_win32_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version) { GdkWindow *window; - window = gdk_window_lookup (xid); + window = gdk_win32_window_lookup_for_display (display, xid); if (window && gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN) { @@ -2025,6 +1991,9 @@ gdk_drag_get_protocol_for_display (GdkDisplay *display, else *protocol = GDK_DRAG_PROTO_LOCAL; + /* even X11 code not always intializes it */ + *version = 0; + return xid; } } @@ -2032,15 +2001,15 @@ gdk_drag_get_protocol_for_display (GdkDisplay *display, return 0; } -void -gdk_drag_find_window_for_screen (GdkDragContext *context, +static GdkWindow * +gdk_win32_drag_context_find_window (GdkDragContext *context, GdkWindow *drag_window, GdkScreen *screen, gint x_root, gint y_root, - GdkWindow **dest_window, GdkDragProtocol *protocol) { + GdkWindow *dest_window; POINT pt; HWND hwnd; @@ -2050,14 +2019,14 @@ gdk_drag_find_window_for_screen (GdkDragContext *context, hwnd = WindowFromPoint (pt); if (hwnd == NULL) - *dest_window = NULL; + dest_window = NULL; else { - *dest_window = gdk_win32_handle_table_lookup (hwnd); - if (*dest_window) - g_object_ref (*dest_window); + dest_window = gdk_win32_handle_table_lookup (hwnd); + if (dest_window) + g_object_ref (dest_window); else - *dest_window = gdk_window_foreign_new_for_display (_gdk_display, hwnd); + dest_window = gdk_win32_window_foreign_new_for_display (_gdk_display, hwnd); if (use_ole2_dnd) *protocol = GDK_DRAG_PROTO_OLE2; @@ -2072,12 +2041,14 @@ gdk_drag_find_window_for_screen (GdkDragContext *context, (drag_window ? GDK_WINDOW_HWND (drag_window) : NULL), x_root, y_root, hwnd, - (*dest_window ? GDK_WINDOW_HWND (*dest_window) : NULL), + (dest_window ? GDK_WINDOW_HWND (dest_window) : NULL), _gdk_win32_drag_protocol_to_string (*protocol))); + + return dest_window; } -gboolean -gdk_drag_motion (GdkDragContext *context, +static gboolean +gdk_win32_drag_context_drag_motion (GdkDragContext *context, GdkWindow *dest_window, GdkDragProtocol protocol, gint x_root, @@ -2215,8 +2186,8 @@ gdk_drag_motion (GdkDragContext *context, return FALSE; } -void -gdk_drag_drop (GdkDragContext *context, +static void +gdk_win32_drag_context_drag_drop (GdkDragContext *context, guint32 time) { g_return_if_fail (context != NULL); @@ -2235,8 +2206,8 @@ gdk_drag_drop (GdkDragContext *context, } } -void -gdk_drag_abort (GdkDragContext *context, +static void +gdk_win32_drag_context_drag_abort (GdkDragContext *context, guint32 time) { g_return_if_fail (context != NULL); @@ -2249,8 +2220,8 @@ gdk_drag_abort (GdkDragContext *context, /* Destination side */ -void -gdk_drag_status (GdkDragContext *context, +static void +gdk_win32_drag_context_drag_status (GdkDragContext *context, GdkDragAction action, guint32 time) { @@ -2304,8 +2275,8 @@ gdk_drag_status (GdkDragContext *context, } } -void -gdk_drop_reply (GdkDragContext *context, +static void +gdk_win32_drag_context_drop_reply (GdkDragContext *context, gboolean ok, guint32 time) { @@ -2321,8 +2292,8 @@ gdk_drop_reply (GdkDragContext *context, } } -void -gdk_drop_finish (GdkDragContext *context, +static void +gdk_win32_drag_context_drop_finish (GdkDragContext *context, gboolean success, guint32 time) { @@ -2391,7 +2362,7 @@ gdk_destroy_filter (GdkXEvent *xev, #endif void -gdk_window_register_dnd (GdkWindow *window) +_gdk_win32_window_register_dnd (GdkWindow *window) { target_drag_context *ctx; HRESULT hr; @@ -2450,8 +2421,14 @@ gdk_window_register_dnd (GdkWindow *window) } } -GdkAtom -gdk_drag_get_selection (GdkDragContext *context) +static gboolean +gdk_win32_drag_context_drop_status (GdkDragContext *context) +{ + return ! PRIVATE_DATA (context)->drop_failed; +} + +static GdkAtom +gdk_win32_drag_context_get_selection (GdkDragContext *context) { switch (context->protocol) { @@ -2466,15 +2443,25 @@ gdk_drag_get_selection (GdkDragContext *context) } } -gboolean -gdk_drag_drop_succeeded (GdkDragContext *context) +static void +gdk_win32_drag_context_class_init (GdkWin32DragContextClass *klass) { - GdkDragContextPrivateWin32 *private; + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkDragContextClass *context_class = GDK_DRAG_CONTEXT_CLASS (klass); - g_return_val_if_fail (context != NULL, FALSE); + gdk_win32_drag_context_parent_class = g_type_class_peek_parent (klass); - private = PRIVATE_DATA (context); + object_class->finalize = gdk_win32_drag_context_finalize; - /* FIXME: Can we set drop_failed when the drop has failed? */ - return !private->drop_failed; + context_class->find_window = gdk_win32_drag_context_find_window; + context_class->drag_status = gdk_win32_drag_context_drag_status; + context_class->drag_motion = gdk_win32_drag_context_drag_motion; + context_class->drag_abort = gdk_win32_drag_context_drag_abort; + context_class->drag_drop = gdk_win32_drag_context_drag_drop; + context_class->drop_reply = gdk_win32_drag_context_drop_reply; + context_class->drop_finish = gdk_win32_drag_context_drop_finish; + context_class->drop_status = gdk_win32_drag_context_drop_status; + context_class->get_selection = gdk_win32_drag_context_get_selection; + + g_type_class_add_private (object_class, sizeof (GdkDragContextPrivateWin32)); } diff --git a/gdk/win32/gdkdrawable-win32.c b/gdk/win32/gdkdrawable-win32.c deleted file mode 100644 index 051569b138..0000000000 --- a/gdk/win32/gdkdrawable-win32.c +++ /dev/null @@ -1,222 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * Copyright (C) 1998-2004 Tor Lillqvist - * Copyright (C) 2001-2005 Hans Breuer - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 -#include -#include - -#include -#include - -#include "gdkprivate-win32.h" - -static cairo_surface_t *gdk_win32_ref_cairo_surface (GdkDrawable *drawable); -static cairo_surface_t *gdk_win32_create_cairo_surface (GdkDrawable *drawable, - int width, - int height); - -static void gdk_drawable_impl_win32_finalize (GObject *object); - -static const cairo_user_data_key_t gdk_win32_cairo_key; - -G_DEFINE_TYPE (GdkDrawableImplWin32, _gdk_drawable_impl_win32, GDK_TYPE_DRAWABLE) - - -static void -_gdk_drawable_impl_win32_class_init (GdkDrawableImplWin32Class *klass) -{ - GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass); - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = gdk_drawable_impl_win32_finalize; - - drawable_class->ref_cairo_surface = gdk_win32_ref_cairo_surface; - drawable_class->create_cairo_surface = gdk_win32_create_cairo_surface; -} - -static void -_gdk_drawable_impl_win32_init (GdkDrawableImplWin32 *impl) -{ -} - -static void -gdk_drawable_impl_win32_finalize (GObject *object) -{ - G_OBJECT_CLASS (_gdk_drawable_impl_win32_parent_class)->finalize (object); -} - -/***************************************************** - * Win32 specific implementations of generic functions * - *****************************************************/ - -/* Drawing - */ - -/** - * _gdk_win32_drawable_acquire_dc - * @drawable: a Win32 #GdkDrawable implementation - * - * Gets a DC with the given drawable selected into - * it. - * - * Return value: The DC, on success. Otherwise - * %NULL. If this function succeeded - * _gdk_win32_drawable_release_dc() must be called - * release the DC when you are done using it. - **/ -HDC -_gdk_win32_drawable_acquire_dc (GdkDrawable *drawable) -{ - GdkDrawableImplWin32 *impl = GDK_DRAWABLE_IMPL_WIN32 (drawable); - - if (GDK_IS_WINDOW_IMPL_WIN32 (drawable) && - GDK_WINDOW_DESTROYED (impl->wrapper)) - return NULL; - - if (!impl->hdc) - { - impl->hdc = GetDC (impl->handle); - if (!impl->hdc) - WIN32_GDI_FAILED ("GetDC"); - } - - if (impl->hdc) - { - impl->hdc_count++; - return impl->hdc; - } - else - { - return NULL; - } -} - -/** - * _gdk_win32_drawable_release_dc - * @drawable: a Win32 #GdkDrawable implementation - * - * Releases the reference count for the DC - * from _gdk_win32_drawable_acquire_dc() - **/ -void -_gdk_win32_drawable_release_dc (GdkDrawable *drawable) -{ - GdkDrawableImplWin32 *impl = GDK_DRAWABLE_IMPL_WIN32 (drawable); - - g_return_if_fail (impl->hdc_count > 0); - - impl->hdc_count--; - if (impl->hdc_count == 0) - { - if (impl->saved_dc_bitmap) - { - GDI_CALL (SelectObject, (impl->hdc, impl->saved_dc_bitmap)); - impl->saved_dc_bitmap = NULL; - } - - if (impl->hdc) - { - GDI_CALL (ReleaseDC, (impl->handle, impl->hdc)); - impl->hdc = NULL; - } - } -} - -static cairo_surface_t * -gdk_win32_create_cairo_surface (GdkDrawable *drawable, - gint width, - gint height) -{ - /* width and height are determined from the DC */ - return gdk_win32_ref_cairo_surface (drawable); -} - -static void -gdk_win32_cairo_surface_destroy (void *data) -{ - GdkDrawableImplWin32 *impl = data; - - _gdk_win32_drawable_release_dc (GDK_DRAWABLE (impl)); - impl->cairo_surface = NULL; -} - -static cairo_surface_t * -gdk_win32_ref_cairo_surface (GdkDrawable *drawable) -{ - GdkDrawableImplWin32 *impl = GDK_DRAWABLE_IMPL_WIN32 (drawable); - - if (GDK_IS_WINDOW_IMPL_WIN32 (drawable) && - GDK_WINDOW_DESTROYED (impl->wrapper)) - return NULL; - - if (!impl->cairo_surface) - { - HDC hdc = _gdk_win32_drawable_acquire_dc (drawable); - if (!hdc) - return NULL; - - impl->cairo_surface = cairo_win32_surface_create (hdc); - - cairo_surface_set_user_data (impl->cairo_surface, &gdk_win32_cairo_key, - drawable, gdk_win32_cairo_surface_destroy); - } - else - cairo_surface_reference (impl->cairo_surface); - - return impl->cairo_surface; -} - -HGDIOBJ -gdk_win32_drawable_get_handle (GdkDrawable *drawable) -{ - return GDK_DRAWABLE_HANDLE (drawable); -} - -/** - * _gdk_win32_drawable_finish - * @drawable: a Win32 #GdkDrawable implementation - * - * Releases any resources allocated internally for the drawable. - * This is called when the drawable becomes unusable, i.e. - * gdk_window_destroy() is called. - **/ -void -_gdk_win32_drawable_finish (GdkDrawable *drawable) -{ - GdkDrawableImplWin32 *impl = GDK_DRAWABLE_IMPL_WIN32 (drawable); - - if (impl->cairo_surface) - { - cairo_surface_finish (impl->cairo_surface); - cairo_surface_set_user_data (impl->cairo_surface, &gdk_win32_cairo_key, NULL, NULL); - } - - g_assert (impl->hdc_count == 0); -} - diff --git a/gdk/win32/gdkdrawable-win32.h b/gdk/win32/gdkdrawable-win32.h deleted file mode 100644 index fba149a24c..0000000000 --- a/gdk/win32/gdkdrawable-win32.h +++ /dev/null @@ -1,73 +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 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. 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/. - */ - -#ifndef __GDK_DRAWABLE_WIN32_H__ -#define __GDK_DRAWABLE_WIN32_H__ - -#include -#include - -G_BEGIN_DECLS - -/* Drawable implementation for Win32 - */ - -typedef struct _GdkDrawableImplWin32 GdkDrawableImplWin32; -typedef struct _GdkDrawableImplWin32Class GdkDrawableImplWin32Class; - -#define GDK_TYPE_DRAWABLE_IMPL_WIN32 (_gdk_drawable_impl_win32_get_type ()) -#define GDK_DRAWABLE_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAWABLE_IMPL_WIN32, GdkDrawableImplWin32)) -#define GDK_DRAWABLE_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAWABLE_IMPL_WIN32, GdkDrawableImplWin32Class)) -#define GDK_IS_DRAWABLE_IMPL_WIN32(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAWABLE_IMPL_WIN32)) -#define GDK_IS_DRAWABLE_IMPL_WIN32_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAWABLE_IMPL_WIN32)) -#define GDK_DRAWABLE_IMPL_WIN32_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAWABLE_IMPL_WIN32, GdkDrawableImplWin32Class)) - -struct _GdkDrawableImplWin32 -{ - GdkDrawable parent_instance; - GdkDrawable *wrapper; - HANDLE handle; - - guint hdc_count; - HDC hdc; - HBITMAP saved_dc_bitmap; /* Original bitmap for dc */ - cairo_surface_t *cairo_surface; -}; - -struct _GdkDrawableImplWin32Class -{ - GdkDrawableClass parent_class; -}; - -GType _gdk_drawable_impl_win32_get_type (void); - -HDC _gdk_win32_drawable_acquire_dc (GdkDrawable *drawable); -void _gdk_win32_drawable_release_dc (GdkDrawable *drawable); -void _gdk_win32_drawable_finish (GdkDrawable *drawable); - -G_END_DECLS - -#endif /* __GDK_DRAWABLE_WIN32_H__ */ diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index e29df5538f..450f8c1495 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -46,11 +46,15 @@ #include #include "gdk.h" +#include "gdkdisplayprivate.h" #include "gdkprivate-win32.h" #include "gdkkeysyms.h" #include "gdkdevicemanager-win32.h" #include "gdkdeviceprivate.h" #include "gdkdevice-wintab.h" +#include "gdkwin32.h" +#include "gdkwin32dnd.h" +#include "gdkdndprivate.h" #include @@ -390,10 +394,10 @@ _gdk_events_init (void) } gboolean -gdk_events_pending (void) +_gdk_win32_display_has_pending (GdkDisplay *display) { MSG msg; - return (_gdk_event_queue_find_first (_gdk_display) || + return (_gdk_event_queue_find_first (display) || (modal_win32_dialog == NULL && PeekMessageW (&msg, NULL, 0, 0, PM_NOREMOVE))); } @@ -449,15 +453,15 @@ _gdk_windowing_device_grab (GdkDevice *device, guint32 time) { HCURSOR hcursor; - GdkCursorPrivate *cursor_private; + GdkWin32Cursor *cursor_private; gint return_val; - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (((GdkWindowObject *) native_window)->impl); + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (native_window->impl); g_return_val_if_fail (window != NULL, 0); g_return_val_if_fail (GDK_IS_WINDOW (window), 0); g_return_val_if_fail (confine_to == NULL || GDK_IS_WINDOW (confine_to), 0); - cursor_private = (GdkCursorPrivate*) cursor; + cursor_private = (GdkWin32Cursor*) cursor; if (!cursor) hcursor = NULL; @@ -492,28 +496,6 @@ _gdk_windowing_device_grab (GdkDevice *device, return return_val; } -void -gdk_device_ungrab (GdkDevice *device, - guint32 time) -{ - GdkDeviceGrabInfo *info; - GdkDisplay *display; - - g_return_if_fail (GDK_IS_DEVICE (device)); - - display = gdk_device_get_display (device); - info = _gdk_display_get_last_device_grab (display, device); - - if (info) - { - info->serial_end = 0; - GDK_DEVICE_GET_CLASS (device)->ungrab (device, time); - } - - _gdk_display_device_grab_update (display, device, 0); -} - - static GdkWindow * find_window_for_mouse_event (GdkWindow* reported_window, MSG* msg) @@ -562,20 +544,11 @@ find_window_for_mouse_event (GdkWindow* reported_window, return other_window; } -void -gdk_display_add_client_message_filter (GdkDisplay *display, - GdkAtom message_type, - GdkFilterFunc func, - gpointer data) -{ - /* XXX */ - gdk_add_client_message_filter (message_type, func, data); -} - void -gdk_add_client_message_filter (GdkAtom message_type, - GdkFilterFunc func, - gpointer data) +_gdk_win32_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data) { GdkClientFilter *filter = g_new (GdkClientFilter, 1); @@ -1105,7 +1078,7 @@ apply_event_filters (GdkWindow *window, static void show_window_recurse (GdkWindow *window, gboolean hide_window) { - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GSList *children = impl->transient_children; GdkWindow *child = NULL; @@ -1128,9 +1101,9 @@ show_window_recurse (GdkWindow *window, gboolean hide_window) { if (!hide_window) { - if (GDK_WINDOW_OBJECT (window)->state & GDK_WINDOW_STATE_ICONIFIED) + if (gdk_window_get_state (window) & GDK_WINDOW_STATE_ICONIFIED) { - if (GDK_WINDOW_OBJECT (window)->state & GDK_WINDOW_STATE_MAXIMIZED) + if (gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED) { ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWMAXIMIZED); } @@ -1154,7 +1127,7 @@ static void do_show_window (GdkWindow *window, gboolean hide_window) { GdkWindow *tmp_window = NULL; - GdkWindowImplWin32 *tmp_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + GdkWindowImplWin32 *tmp_impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (!tmp_impl->changing_state) { @@ -1162,7 +1135,7 @@ do_show_window (GdkWindow *window, gboolean hide_window) while (tmp_impl->transient_owner != NULL) { tmp_window = tmp_impl->transient_owner; - tmp_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (tmp_window)->impl); + tmp_impl = GDK_WINDOW_IMPL_WIN32 (tmp_window->impl); } /* If we couldn't find one, use the window provided. */ @@ -1209,7 +1182,7 @@ synthesize_enter_or_leave_event (GdkWindow *window, append_event (event); if (type == GDK_ENTER_NOTIFY && - ((GdkWindowObject *) window)->extension_events != 0) + window->extension_events != 0) _gdk_device_wintab_update_window_coords (window); } @@ -1235,7 +1208,7 @@ propagate (GdkWindow **window, * device is used */ if (check_extended && - ((GdkWindowObject *) grab_window)->extension_events != 0 && + grab_window->extension_events != 0 && _gdk_input_ignore_core) { GDK_NOTE (EVENTS, g_print (" (ignored for grabber)")); @@ -1260,13 +1233,13 @@ propagate (GdkWindow **window, while (TRUE) { if (check_extended && - ((GdkWindowObject *) *window)->extension_events != 0 && + (*window)->extension_events != 0 && _gdk_input_ignore_core) { GDK_NOTE (EVENTS, g_print (" (ignored)")); return FALSE; } - if ((*doesnt_want_it) (((GdkWindowObject *) *window)->event_mask, msg)) + if ((*doesnt_want_it) ((*window)->event_mask, msg)) { /* Owner doesn't want it, propagate to parent. */ GdkWindow *parent = gdk_window_get_parent (*window); @@ -1278,7 +1251,7 @@ propagate (GdkWindow **window, /* Event source is grabbed with owner_events TRUE */ if (check_extended && - ((GdkWindowObject *) grab_window)->extension_events != 0 && + grab_window->extension_events != 0 && _gdk_input_ignore_core) { GDK_NOTE (EVENTS, g_print (" (ignored for grabber)")); @@ -1338,7 +1311,6 @@ handle_configure_event (MSG *msg, { RECT client_rect; POINT point; - GdkWindowObject *window_object; GetClientRect (msg->hwnd, &client_rect); point.x = client_rect.left; /* always 0 */ @@ -1352,17 +1324,15 @@ handle_configure_event (MSG *msg, point.y += _gdk_offset_y; } - window_object = GDK_WINDOW_OBJECT (window); - - window_object->width = client_rect.right - client_rect.left; - window_object->height = client_rect.bottom - client_rect.top; + window->width = client_rect.right - client_rect.left; + window->height = client_rect.bottom - client_rect.top; - window_object->x = point.x; - window_object->y = point.y; + window->x = point.x; + window->y = point.y; _gdk_window_update_size (window); - if (window_object->event_mask & GDK_STRUCTURE_MASK) + if (window->event_mask & GDK_STRUCTURE_MASK) { GdkEvent *event = gdk_event_new (GDK_CONFIGURE); @@ -1610,7 +1580,7 @@ ensure_stacking_on_unminimize (MSG *msg) if (rover_gdkw) { GdkWindowImplWin32 *rover_impl = - (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; + GDK_WINDOW_IMPL_WIN32 (rover_gdkw->impl); if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || @@ -1633,7 +1603,7 @@ static gboolean ensure_stacking_on_window_pos_changing (MSG *msg, GdkWindow *window) { - GdkWindowImplWin32 *impl = (GdkWindowImplWin32 *)((GdkWindowObject *) window)->impl; + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); WINDOWPOS *windowpos = (WINDOWPOS *) msg->lParam; if (GetActiveWindow () == msg->hwnd && @@ -1661,7 +1631,7 @@ ensure_stacking_on_window_pos_changing (MSG *msg, if (rover_gdkw) { GdkWindowImplWin32 *rover_impl = - (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; + GDK_WINDOW_IMPL_WIN32 (rover_gdkw->impl); if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || @@ -1688,7 +1658,7 @@ static void ensure_stacking_on_activate_app (MSG *msg, GdkWindow *window) { - GdkWindowImplWin32 *impl = (GdkWindowImplWin32 *)((GdkWindowObject *) window)->impl; + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || impl->type_hint == GDK_WINDOW_TYPE_HINT_DIALOG || @@ -1718,7 +1688,7 @@ ensure_stacking_on_activate_app (MSG *msg, if (rover_gdkw) { GdkWindowImplWin32 *rover_impl = - (GdkWindowImplWin32 *)((GdkWindowObject *)rover_gdkw)->impl; + GDK_WINDOW_IMPL_WIN32 (rover_gdkw->impl); if (GDK_WINDOW_IS_MAPPED (rover_gdkw) && (rover_impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY || @@ -1838,11 +1808,11 @@ gdk_event_translate (MSG *msg, */ #define return GOTO_DONE_INSTEAD - if (!GDK_WINDOW_DESTROYED (window) && ((GdkWindowObject *) window)->filters) + if (!GDK_WINDOW_DESTROYED (window) && window->filters) { /* Apply per-window filters */ - GdkFilterReturn result = apply_event_filters (window, msg, &((GdkWindowObject *) window)->filters); + GdkFilterReturn result = apply_event_filters (window, msg, &window->filters); if (result == GDK_FILTER_REMOVE || result == GDK_FILTER_TRANSLATE) { @@ -2018,7 +1988,7 @@ gdk_event_translate (MSG *msg, build_key_event_state (event, key_state); - gdk_keymap_translate_keyboard_state (NULL, + gdk_keymap_translate_keyboard_state (_gdk_win32_display_get_keymap (_gdk_display), event->key.hardware_keycode, event->key.state, event->key.group, @@ -2098,7 +2068,7 @@ gdk_event_translate (MSG *msg, for (i = 0; i < ccount; i++) { - if (((GdkWindowObject *) window)->event_mask & GDK_KEY_PRESS_MASK) + if (window->event_mask & GDK_KEY_PRESS_MASK) { /* Build a key press event */ event = gdk_event_new (GDK_KEY_PRESS); @@ -2109,7 +2079,7 @@ gdk_event_translate (MSG *msg, append_event (event); } - if (((GdkWindowObject *) window)->event_mask & GDK_KEY_RELEASE_MASK) + if (window->event_mask & GDK_KEY_RELEASE_MASK) { /* Build a key release event. */ event = gdk_event_new (GDK_KEY_RELEASE); @@ -2183,7 +2153,7 @@ gdk_event_translate (MSG *msg, assign_object (&window, find_window_for_mouse_event (window, msg)); #if 0 - if (((GdkWindowObject *) window)->extension_events != 0 && + if (window->extension_events != 0 && _gdk_input_ignore_core) { GDK_NOTE (EVENTS, g_print (" (ignored)")); @@ -2253,7 +2223,7 @@ gdk_event_translate (MSG *msg, GET_X_LPARAM (msg->lParam), GET_Y_LPARAM (msg->lParam))); #if 0 /* TODO_CSW? */ if (current_toplevel != NULL && - (((GdkWindowObject *) current_toplevel)->event_mask & GDK_LEAVE_NOTIFY_MASK)) + (current_toplevel->event_mask & GDK_LEAVE_NOTIFY_MASK)) { synthesize_enter_or_leave_event (current_toplevel, msg, GDK_LEAVE_NOTIFY, GDK_CROSSING_NORMAL, GDK_NOTIFY_ANCESTOR); @@ -2366,7 +2336,7 @@ gdk_event_translate (MSG *msg, GdkWindow *tmp; if (gdk_window_get_window_type (window) == GDK_WINDOW_TEMP - || !((GdkWindowObject *)window)->accept_focus) + || !window->accept_focus) { *ret_valp = MA_NOACTIVATE; return_val = TRUE; @@ -2399,7 +2369,7 @@ gdk_event_translate (MSG *msg, !keyboard_grab->owner_events) break; - if (!(((GdkWindowObject *) window)->event_mask & GDK_FOCUS_CHANGE_MASK)) + if (!(window->event_mask & GDK_FOCUS_CHANGE_MASK)) break; if (GDK_WINDOW_DESTROYED (window)) @@ -2442,7 +2412,7 @@ gdk_event_translate (MSG *msg, if (grab_window != NULL && p_grab_cursor != NULL) hcursor = p_grab_cursor; else if (!GDK_WINDOW_DESTROYED (window)) - hcursor = GDK_WINDOW_IMPL_WIN32 (((GdkWindowObject *) window)->impl)->hcursor; + hcursor = GDK_WINDOW_IMPL_WIN32 (window->impl)->hcursor; else hcursor = NULL; @@ -2465,7 +2435,7 @@ gdk_event_translate (MSG *msg, (msg->lParam == SW_PARENTOPENING ? "PARENTOPENING" : "???"))))))); - if (!(((GdkWindowObject *) window)->event_mask & GDK_STRUCTURE_MASK)) + if (!(window->event_mask & GDK_STRUCTURE_MASK)) break; if (msg->lParam == SW_OTHERUNZOOM || @@ -2482,7 +2452,7 @@ gdk_event_translate (MSG *msg, if (event->any.type == GDK_UNMAP) { - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (impl->transient_owner && GetForegroundWindow () == GDK_WINDOW_HWND (window)) { @@ -2548,7 +2518,7 @@ gdk_event_translate (MSG *msg, GdkWindowState withdrawn_bit = IsWindowVisible (msg->hwnd) ? GDK_WINDOW_STATE_WITHDRAWN : 0; - if (((GdkWindowObject *) window)->state & GDK_WINDOW_STATE_ICONIFIED) + if (window->state & GDK_WINDOW_STATE_ICONIFIED) ensure_stacking_on_unminimize (msg); if (!GDK_WINDOW_DESTROYED (window)) @@ -2575,10 +2545,10 @@ gdk_event_translate (MSG *msg, GDK_WINDOW_STATE_MAXIMIZED); } - if (((GdkWindowObject *) window)->resize_count > 1) - ((GdkWindowObject *) window)->resize_count -= 1; + if (window->resize_count > 1) + window->resize_count -= 1; - if (((GdkWindowObject *) window)->extension_events != 0) + if (window->extension_events != 0) _gdk_device_wintab_update_window_coords (window); return_val = TRUE; @@ -2637,11 +2607,11 @@ gdk_event_translate (MSG *msg, GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD && !GDK_WINDOW_DESTROYED (window)) { - if (((GdkWindowObject *) window)->event_mask & GDK_STRUCTURE_MASK) + if (window->event_mask & GDK_STRUCTURE_MASK) { GDK_NOTE (EVENTS, g_print (" do magic")); - if (((GdkWindowObject *) window)->resize_count > 1) - ((GdkWindowObject *) window)->resize_count -= 1; + if (window->resize_count > 1) + window->resize_count -= 1; handle_configure_event (msg, window); g_main_context_iteration (NULL, FALSE); @@ -2673,7 +2643,7 @@ gdk_event_translate (MSG *msg, _gdk_win32_rect_to_string (&rect), _gdk_win32_rect_to_string (drag))); - impl = GDK_WINDOW_IMPL_WIN32 (((GdkWindowObject *) window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); orig_drag = *drag; if (impl->hint_flags & GDK_HINT_RESIZE_INC) { @@ -2876,7 +2846,7 @@ gdk_event_translate (MSG *msg, if (GDK_WINDOW_DESTROYED (window)) break; - impl = GDK_WINDOW_IMPL_WIN32 (((GdkWindowObject *) window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); mmi = (MINMAXINFO*) msg->lParam; GDK_NOTE (EVENTS, g_print (" (mintrack:%ldx%ld maxtrack:%ldx%ld " "maxpos:%+ld%+ld maxsize:%ldx%ld)", @@ -2950,7 +2920,7 @@ gdk_event_translate (MSG *msg, append_event (event); - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (impl->transient_owner && GetForegroundWindow() == GDK_WINDOW_HWND (window)) { @@ -3146,7 +3116,7 @@ done: } void -_gdk_events_queue (GdkDisplay *display) +_gdk_win32_display_queue_events (GdkDisplay *display) { MSG msg; @@ -3214,7 +3184,7 @@ gdk_event_dispatch (GSource *source, GDK_THREADS_ENTER (); - _gdk_events_queue (_gdk_display); + _gdk_win32_display_queue_events (_gdk_display); event = _gdk_event_unqueue (_gdk_display); if (event) @@ -3263,9 +3233,9 @@ check_for_too_much_data (GdkEvent *event) } gboolean -gdk_event_send_client_message_for_display (GdkDisplay *display, - GdkEvent *event, - GdkNativeWindow winid) +_gdk_win32_display_send_client_message (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid) { check_for_too_much_data (event); @@ -3275,7 +3245,7 @@ gdk_event_send_client_message_for_display (GdkDisplay *display, } void -gdk_screen_broadcast_client_message (GdkScreen *screen, +_gdk_win32_screen_broadcast_client_message (GdkScreen *screen, GdkEvent *event) { check_for_too_much_data (event); @@ -3286,24 +3256,7 @@ gdk_screen_broadcast_client_message (GdkScreen *screen, } void -gdk_flush (void) -{ -#if 0 - MSG msg; - - /* Process all messages currently available */ - while (PeekMessageW (&msg, NULL, 0, 0, PM_REMOVE)) - { - TranslateMessage (&msg); - DispatchMessageW (&msg); - } -#endif - - GdiFlush (); -} - -void -gdk_display_sync (GdkDisplay * display) +_gdk_win32_display_sync (GdkDisplay * display) { MSG msg; @@ -3314,27 +3267,3 @@ gdk_display_sync (GdkDisplay * display) DispatchMessageW (&msg); } -void -gdk_display_flush (GdkDisplay * display) -{ - g_return_if_fail (display == _gdk_display); - - /* Nothing */ -} - -gboolean -gdk_net_wm_supports (GdkAtom property) -{ - return FALSE; -} - -void -_gdk_windowing_event_data_copy (const GdkEvent *src, - GdkEvent *dst) -{ -} - -void -_gdk_windowing_event_data_free (GdkEvent *event) -{ -} diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c index 947095e379..c16920886e 100644 --- a/gdk/win32/gdkgeometry-win32.c +++ b/gdk/win32/gdkgeometry-win32.c @@ -42,6 +42,7 @@ #include "gdk.h" /* For gdk_rectangle_intersect */ #include "gdkinternals.h" #include "gdkprivate-win32.h" +#include "gdkwin32.h" #define SIZE_LIMIT 32767 @@ -58,22 +59,20 @@ _gdk_window_move_resize_child (GdkWindow *window, gint height) { GdkWindowImplWin32 *impl; - GdkWindowObject *obj; gboolean is_move; gboolean is_resize; g_return_if_fail (window != NULL); g_return_if_fail (GDK_IS_WINDOW (window)); - obj = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - is_move = (x - obj->x != 0) && (y - obj->y != 0); - is_resize = obj->width != width && obj->height != height; + is_move = (x - window->x != 0) && (y - window->y != 0); + is_resize = window->width != width && window->height != height; GDK_NOTE (MISC, g_print ("_gdk_window_move_resize_child: %s@%+d%+d %dx%d@%+d%+d\n", - _gdk_win32_drawable_description (window), - obj->x, obj->y, width, height, x, y)); + _gdk_win32_window_description (window), + window->x, window->y, width, height, x, y)); if (width > 65535 || height > 65535) { @@ -85,10 +84,10 @@ _gdk_window_move_resize_child (GdkWindow *window, height = 65535; } - obj->x = x; - obj->y = y; - obj->width = width; - obj->height = height; + window->x = x; + window->y = y; + window->width = width; + window->height = height; _gdk_win32_window_tmp_unset_parent_bg (window); _gdk_win32_window_tmp_unset_bg (window, TRUE); @@ -96,19 +95,18 @@ _gdk_window_move_resize_child (GdkWindow *window, GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,%d,%d," "NOACTIVATE|NOZORDER%s%s)\n", GDK_WINDOW_HWND (window), - obj->x + obj->parent->abs_x, obj->y + obj->parent->abs_y, + window->x + window->parent->abs_x, window->y + window->parent->abs_y, width, height, (is_move ? "" : "|NOMOVE"), (is_resize ? "" : "|NOSIZE"))); API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL, - obj->x + obj->parent->abs_x, obj->y + obj->parent->abs_y, + window->x + window->parent->abs_x, window->y + window->parent->abs_y, width, height, SWP_NOACTIVATE | SWP_NOZORDER | (is_move ? 0 : SWP_NOMOVE) | (is_resize ? 0 : SWP_NOSIZE))); - //_gdk_win32_window_tmp_reset_parent_bg (window); _gdk_win32_window_tmp_reset_bg (window, TRUE); } @@ -116,28 +114,24 @@ void _gdk_win32_window_tmp_unset_bg (GdkWindow *window, gboolean recurse) { - GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); - private = (GdkWindowObject *)window; - - if (private->input_only || private->destroyed || - (private->window_type != GDK_WINDOW_ROOT && + if (window->input_only || window->destroyed || + (window->window_type != GDK_WINDOW_ROOT && !GDK_WINDOW_IS_MAPPED (window))) return; if (_gdk_window_has_impl (window) && GDK_WINDOW_IS_WIN32 (window) && - private->window_type != GDK_WINDOW_ROOT && - private->window_type != GDK_WINDOW_FOREIGN) + window->window_type != GDK_WINDOW_ROOT && + window->window_type != GDK_WINDOW_FOREIGN) tmp_unset_bg (window); if (recurse) { GList *l; - for (l = private->children; l != NULL; l = l->next) + for (l = window->children; l != NULL; l = l->next) _gdk_win32_window_tmp_unset_bg (l->data, TRUE); } } @@ -146,10 +140,8 @@ static void tmp_unset_bg (GdkWindow *window) { GdkWindowImplWin32 *impl; - GdkWindowObject *obj; - obj = (GdkWindowObject *) window; - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); impl->no_bg = TRUE; } @@ -157,11 +149,9 @@ tmp_unset_bg (GdkWindow *window) static void tmp_reset_bg (GdkWindow *window) { - GdkWindowObject *obj; GdkWindowImplWin32 *impl; - obj = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); impl->no_bg = FALSE; } @@ -169,12 +159,10 @@ tmp_reset_bg (GdkWindow *window) void _gdk_win32_window_tmp_unset_parent_bg (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject*)window; - - if (GDK_WINDOW_TYPE (private->parent) == GDK_WINDOW_ROOT) + if (GDK_WINDOW_TYPE (window->parent) == GDK_WINDOW_ROOT) return; - window = _gdk_window_get_impl_window ((GdkWindow*)private->parent); + window = _gdk_window_get_impl_window (window->parent); _gdk_win32_window_tmp_unset_bg (window, FALSE); } @@ -182,18 +170,16 @@ void _gdk_win32_window_tmp_reset_bg (GdkWindow *window, gboolean recurse) { - GdkWindowObject *private = (GdkWindowObject*)window; - g_return_if_fail (GDK_IS_WINDOW (window)); - if (private->input_only || private->destroyed || - (private->window_type != GDK_WINDOW_ROOT && !GDK_WINDOW_IS_MAPPED (window))) + if (window->input_only || window->destroyed || + (window->window_type != GDK_WINDOW_ROOT && !GDK_WINDOW_IS_MAPPED (window))) return; if (_gdk_window_has_impl (window) && GDK_WINDOW_IS_WIN32 (window) && - private->window_type != GDK_WINDOW_ROOT && - private->window_type != GDK_WINDOW_FOREIGN) + window->window_type != GDK_WINDOW_ROOT && + window->window_type != GDK_WINDOW_FOREIGN) { tmp_reset_bg (window); } @@ -202,79 +188,7 @@ _gdk_win32_window_tmp_reset_bg (GdkWindow *window, { GList *l; - for (l = private->children; l != NULL; l = l->next) + for (l = window->children; l != NULL; l = l->next) _gdk_win32_window_tmp_reset_bg (l->data, TRUE); } } - -/* -void -_gdk_win32_window_tmp_reset_bg (GdkWindow *window) -{ - GdkWindowImplWin32 *impl; - GdkWindowObject *obj; - - obj = (GdkWindowObject *) window; - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); - - impl->no_bg = FALSE; -} -*/ - -#if 0 -static cairo_region_t * -gdk_window_clip_changed (GdkWindow *window, - GdkRectangle *old_clip, - GdkRectangle *new_clip) -{ - GdkWindowImplWin32 *impl; - GdkWindowObject *obj; - cairo_region_t *old_clip_region; - cairo_region_t *new_clip_region; - - if (((GdkWindowObject *)window)->input_only) - return NULL; - - obj = (GdkWindowObject *) window; - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); - - old_clip_region = cairo_region_create_rectangle (old_clip); - new_clip_region = cairo_region_create_rectangle (new_clip); - - /* Trim invalid region of window to new clip rectangle - */ - if (obj->update_area) - cairo_region_intersect (obj->update_area, new_clip_region); - - /* Invalidate newly exposed portion of window - */ - cairo_region_subtract (new_clip_region, old_clip_region); - if (!cairo_region_is_empty (new_clip_region)) - gdk_window_tmp_unset_bg (window); - else - { - cairo_region_destroy (new_clip_region); - new_clip_region = NULL; - } - - cairo_region_destroy (old_clip_region); - - return new_clip_region; -} -#endif - -#if 0 -static void -gdk_window_post_scroll (GdkWindow *window, - cairo_region_t *new_clip_region) -{ - GDK_NOTE (EVENTS, - g_print ("gdk_window_clip_changed: invalidating region: %s\n", - _gdk_win32_cairo_region_to_string (new_clip_region))); - - gdk_window_invalidate_region (window, new_clip_region, FALSE); - g_print ("gdk_window_post_scroll\n"); - cairo_region_destroy (new_clip_region); -} - -#endif diff --git a/gdk/win32/gdkim-win32.c b/gdk/win32/gdkim-win32.c deleted file mode 100644 index dd7cf87944..0000000000 --- a/gdk/win32/gdkim-win32.c +++ /dev/null @@ -1,44 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * Copyright (C) 1998-2004 Tor Lillqvist - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 -#include -#include - -#include "gdkinternals.h" -#include "gdkwin32.h" - -gchar* -gdk_set_locale (void) -{ - if (!setlocale (LC_ALL, "")) - g_warning ("locale not supported by C library"); - - return g_win32_getlocale (); -} diff --git a/gdk/win32/gdkinput.c b/gdk/win32/gdkinput.c index 32de7fc28d..64e461dd6d 100644 --- a/gdk/win32/gdkinput.c +++ b/gdk/win32/gdkinput.c @@ -34,7 +34,8 @@ #include "config.h" #include "gdkdisplay.h" -#include "gdkinput.h" +#include "gdkdevice.h" +#include "gdkdisplayprivate.h" #include "gdkprivate-win32.h" #include "gdkdevicemanager-win32.h" @@ -47,11 +48,11 @@ GList *_gdk_input_windows; GList * gdk_devices_list (void) { - return gdk_display_list_devices (_gdk_display); + return _gdk_win32_display_list_devices (_gdk_display); } GList * -gdk_display_list_devices (GdkDisplay *dpy) +_gdk_win32_display_list_devices (GdkDisplay *dpy) { g_return_val_if_fail (dpy == _gdk_display, NULL); @@ -69,7 +70,6 @@ gdk_input_set_extension_events (GdkWindow *window, gint mask, GdkExtensionMode mode) { GdkDeviceManager *device_manager; - GdkWindowObject *window_private; GList *devices, *d; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -80,8 +80,7 @@ gdk_input_set_extension_events (GdkWindow *window, gint mask, if (mode == GDK_EXTENSION_EVENTS_NONE) mask = 0; - window_private = (GdkWindowObject *) window; - window_private->extension_events = mask; + window->extension_events = mask; device_manager = gdk_display_get_device_manager (_gdk_display); devices = gdk_device_manager_list_devices (device_manager, diff --git a/gdk/win32/gdkkeys-win32.c b/gdk/win32/gdkkeys-win32.c index dbeb1092eb..8b253d4ae8 100644 --- a/gdk/win32/gdkkeys-win32.c +++ b/gdk/win32/gdkkeys-win32.c @@ -35,9 +35,28 @@ #include "gdkprivate-win32.h" #include "gdkinternals.h" #include "gdkkeysyms.h" +#include "gdkkeysprivate.h" +#include "gdkwin32keys.h" #include "config.h" +struct _GdkWin32KeymapClass +{ + GdkKeymapClass parent_class; +}; + +struct _GdkWin32Keymap +{ + GdkKeymap parent_instance; +}; + +G_DEFINE_TYPE (GdkWin32Keymap, gdk_win32_keymap, GDK_TYPE_KEYMAP) + +static void +gdk_win32_keymap_init (GdkWin32Keymap *keymap) +{ +} + guint _gdk_keymap_serial = 0; gboolean _gdk_keyboard_has_altgr = FALSE; guint _scancode_rshift = 0; @@ -489,18 +508,18 @@ update_keymap (void) } GdkKeymap* -gdk_keymap_get_for_display (GdkDisplay *display) +_gdk_win32_display_get_keymap (GdkDisplay *display) { g_return_val_if_fail (display == gdk_display_get_default (), NULL); if (default_keymap == NULL) - default_keymap = g_object_new (gdk_keymap_get_type (), NULL); + default_keymap = g_object_new (gdk_win32_keymap_get_type (), NULL); return default_keymap; } -PangoDirection -gdk_keymap_get_direction (GdkKeymap *keymap) +static PangoDirection +gdk_win32_keymap_get_direction (GdkKeymap *keymap) { update_keymap (); @@ -520,8 +539,8 @@ gdk_keymap_get_direction (GdkKeymap *keymap) } } -gboolean -gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) +static gboolean +gdk_win32_keymap_have_bidi_layouts (GdkKeymap *keymap) { /* Should we check if the kayboard layouts switchable at the moment * cover both directionalities? What does the doc comment in @@ -530,20 +549,20 @@ gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) return FALSE; } -gboolean -gdk_keymap_get_caps_lock_state (GdkKeymap *keymap) +static gboolean +gdk_win32_keymap_get_caps_lock_state (GdkKeymap *keymap) { return ((GetKeyState (VK_CAPITAL) & 1) != 0); } -gboolean -gdk_keymap_get_num_lock_state (GdkKeymap *keymap) +static gboolean +gdk_win32_keymap_get_num_lock_state (GdkKeymap *keymap) { return ((GetKeyState (VK_NUMLOCK) & 1) != 0); } -gboolean -gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, +static gboolean +gdk_win32_keymap_get_entries_for_keyval (GdkKeymap *keymap, guint keyval, GdkKeymapKey **keys, gint *n_keys) @@ -618,8 +637,8 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, return *n_keys > 0; } -gboolean -gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, +static gboolean +gdk_win32_keymap_get_entries_for_keycode (GdkKeymap *keymap, guint hardware_keycode, GdkKeymapKey **keys, guint **keyvals, @@ -712,8 +731,8 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, return *n_entries > 0; } -guint -gdk_keymap_lookup_key (GdkKeymap *keymap, +static guint +gdk_win32_keymap_lookup_key (GdkKeymap *keymap, const GdkKeymapKey *key) { guint sym; @@ -741,8 +760,8 @@ gdk_keymap_lookup_key (GdkKeymap *keymap, return sym; } -gboolean -gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, +static gboolean +gdk_win32_keymap_translate_keyboard_state (GdkKeymap *keymap, guint hardware_keycode, GdkModifierType state, gint group, @@ -878,16 +897,41 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, return tmp_keyval != GDK_KEY_VoidSymbol; } -void -gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, +static void +gdk_win32_keymap_add_virtual_modifiers (GdkKeymap *keymap, GdkModifierType *state) { } -gboolean -gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, +static gboolean +gdk_win32_keymap_map_virtual_modifiers (GdkKeymap *keymap, GdkModifierType *state) { /* FIXME: Is this the right thing to do? */ return TRUE; } + +static void +gdk_win32_keymap_finalize (GObject *object) +{ +} + +static void +gdk_win32_keymap_class_init (GdkWin32KeymapClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkKeymapClass *keymap_class = GDK_KEYMAP_CLASS (klass); + + object_class->finalize = gdk_win32_keymap_finalize; + + keymap_class->get_direction = gdk_win32_keymap_get_direction; + keymap_class->have_bidi_layouts = gdk_win32_keymap_have_bidi_layouts; + keymap_class->get_caps_lock_state = gdk_win32_keymap_get_caps_lock_state; + keymap_class->get_num_lock_state = gdk_win32_keymap_get_num_lock_state; + keymap_class->get_entries_for_keyval = gdk_win32_keymap_get_entries_for_keyval; + keymap_class->get_entries_for_keycode = gdk_win32_keymap_get_entries_for_keycode; + keymap_class->lookup_key = gdk_win32_keymap_lookup_key; + keymap_class->translate_keyboard_state = gdk_win32_keymap_translate_keyboard_state; + keymap_class->add_virtual_modifiers = gdk_win32_keymap_add_virtual_modifiers; + keymap_class->map_virtual_modifiers = gdk_win32_keymap_map_virtual_modifiers; +} diff --git a/gdk/win32/gdkmain-win32.c b/gdk/win32/gdkmain-win32.c index e48e2bef40..a876631df6 100644 --- a/gdk/win32/gdkmain-win32.c +++ b/gdk/win32/gdkmain-win32.c @@ -38,6 +38,7 @@ #include "gdkinternals.h" #include "gdkintl.h" #include "gdkprivate-win32.h" +#include "gdkwin32.h" #include @@ -64,7 +65,7 @@ const GOptionEntry _gdk_windowing_args[] = { { NULL } }; -int __stdcall +BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD dwReason, LPVOID reserved) @@ -75,7 +76,7 @@ DllMain (HINSTANCE hinstDLL, } void -_gdk_windowing_init (void) +_gdk_win32_windowing_init (void) { gchar buf[10]; @@ -151,89 +152,6 @@ _gdk_other_api_failed (const gchar *where, g_warning ("%s: %s failed", where, api); } -gint -gdk_screen_get_width (GdkScreen *screen) -{ - return GDK_WINDOW_OBJECT (_gdk_root)->width; -} - -gint -gdk_screen_get_height (GdkScreen *screen) -{ - return GDK_WINDOW_OBJECT (_gdk_root)->height; -} -gint -gdk_screen_get_width_mm (GdkScreen *screen) -{ - return (double) gdk_screen_get_width (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSX) * 25.4; -} - -gint -gdk_screen_get_height_mm (GdkScreen *screen) -{ - return (double) gdk_screen_get_height (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY) * 25.4; -} - -void -_gdk_windowing_display_set_sm_client_id (GdkDisplay *display, - const gchar *sm_client_id) -{ - g_warning("gdk_set_sm_client_id %s", sm_client_id ? sm_client_id : "NULL"); -} - -void -gdk_display_beep (GdkDisplay *display) -{ - g_return_if_fail (display == gdk_display_get_default()); - Beep(1000, 50); -} - -void -_gdk_windowing_exit (void) -{ - _gdk_win32_dnd_exit (); - CoUninitialize (); - DeleteDC (_gdk_display_hdc); - _gdk_display_hdc = NULL; -} - -gchar * -gdk_get_display (void) -{ - return g_strdup (gdk_display_get_name (gdk_display_get_default ())); -} - -void -gdk_error_trap_push (void) -{ -} - -gint -gdk_error_trap_pop (void) -{ - return 0; -} - -void -gdk_error_trap_pop_ignored (void) -{ -} - -void -gdk_notify_startup_complete (void) -{ -} - -void -gdk_notify_startup_complete_with_id (const gchar* startup_id) -{ -} - -void -gdk_window_set_startup_id (GdkWindow *window, - const gchar *startup_id) -{ -} #ifdef G_ENABLE_DEBUG @@ -1043,13 +961,13 @@ _gdk_win32_cairo_region_to_string (const cairo_region_t *rgn) } gchar * -_gdk_win32_drawable_description (GdkDrawable *d) +_gdk_win32_window_description (GdkWindow *d) { - g_return_val_if_fail (GDK_IS_DRAWABLE (d), NULL); + g_return_val_if_fail (GDK_IS_WINDOW (d), NULL); return static_printf ("%s:%p:%dx%dx%d", G_OBJECT_TYPE_NAME (d), - GDK_DRAWABLE_HANDLE (d), + GDK_WINDOW_HWND (d), gdk_window_get_width (GDK_WINDOW (d)), gdk_window_get_height (GDK_WINDOW (d)), gdk_visual_get_depth (gdk_window_get_visual (GDK_WINDOW (d)))); diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 384167ee2b..2889e66cb6 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -36,6 +36,7 @@ #endif #include +#include #include #include "gdkinternals.h" @@ -103,16 +104,14 @@ #define GDK_DEBUG_MISC_OR_COLORMAP (GDK_DEBUG_MISC|GDK_DEBUG_COLORMAP) #define GDK_DEBUG_MISC_OR_EVENTS (GDK_DEBUG_MISC|GDK_DEBUG_EVENTS) -//#define GDK_WINDOW_SCREEN(win) (_gdk_screen) GdkScreen *GDK_WINDOW_SCREEN(GObject *win); -#define GDK_WINDOW_IS_WIN32(win) (GDK_IS_WINDOW_IMPL_WIN32 (((GdkWindowObject *)win)->impl)) +#define GDK_WINDOW_IS_WIN32(win) (GDK_IS_WINDOW_IMPL_WIN32 (win->impl)) typedef struct _GdkColormapPrivateWin32 GdkColormapPrivateWin32; -typedef struct _GdkCursorPrivate GdkCursorPrivate; typedef struct _GdkWin32SingleFont GdkWin32SingleFont; -struct _GdkCursorPrivate +struct _GdkWin32Cursor { GdkCursor cursor; HCURSOR hcursor; @@ -126,11 +125,6 @@ struct _GdkWin32SingleFont FONTSIGNATURE fs; }; -struct _GdkVisualClass -{ - GObjectClass parent_class; -}; - typedef enum { GDK_WIN32_PE_STATIC, GDK_WIN32_PE_AVAILABLE, @@ -167,9 +161,6 @@ void _gdk_win32_window_move_region (GdkWindow *window, const cairo_region_t *region, gint dx, gint dy); -void _gdk_win32_windowing_window_get_offsets (GdkWindow *window, - gint *x_offset, - gint *y_offset); void _gdk_win32_selection_init (void); @@ -211,7 +202,7 @@ gchar *_gdk_win32_window_style_to_string (LONG style); gchar *_gdk_win32_window_exstyle_to_string (LONG style); gchar *_gdk_win32_window_pos_bits_to_string (UINT flags); gchar *_gdk_win32_drag_action_to_string (GdkDragAction actions); -gchar *_gdk_win32_drawable_description (GdkDrawable *d); +gchar *_gdk_win32_window_description (GdkWindow *d); gchar *_gdk_win32_rop2_to_string (int rop2); gchar *_gdk_win32_lbstyle_to_string (UINT brush_style); @@ -374,7 +365,149 @@ HICON _gdk_win32_pixbuf_to_hcursor (GdkPixbuf *pixbuf, gint y_hotspot); gboolean _gdk_win32_pixbuf_to_hicon_supports_alpha (void); +/* GdkDisplay member functions */ +GdkNativeWindow _gdk_win32_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version); + +GdkCursor *_gdk_win32_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType cursor_type); +GdkCursor *_gdk_win32_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name); +GdkCursor *_gdk_win32_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y); +void _gdk_win32_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height); +void _gdk_win32_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height); +gboolean _gdk_win32_display_supports_cursor_alpha (GdkDisplay *display); +gboolean _gdk_win32_display_supports_cursor_color (GdkDisplay *display); + +GList *_gdk_win32_display_list_devices (GdkDisplay *dpy); + +gboolean _gdk_win32_display_send_client_message (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid); +void _gdk_win32_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data); +void _gdk_win32_display_sync (GdkDisplay * display); +gboolean _gdk_win32_display_has_pending (GdkDisplay *display); +void _gdk_win32_display_queue_events (GdkDisplay *display); + +gboolean _gdk_win32_selection_owner_set_for_display (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event); +GdkWindow *_gdk_win32_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection); +gboolean _gdk_win32_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event); +void _gdk_win32_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time); +gint _gdk_win32_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format); +void _gdk_win32_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time); +gint _gdk_win32_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); +gchar *_gdk_win32_display_utf8_to_string_target (GdkDisplay *display, const gchar *str); + +GdkKeymap *_gdk_win32_display_get_keymap (GdkDisplay *display); + +void _gdk_win32_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask); + +/* stray GdkWindowImplWin32 members */ +void _gdk_win32_window_register_dnd (GdkWindow *window); +GdkDragContext *_gdk_win32_window_drag_begin (GdkWindow *window, GdkDevice *device, GList *targets); +gboolean _gdk_win32_window_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease); +gboolean _gdk_win32_window_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, /*1..3*/ + GdkModifierType modifiers, + GdkEventType button_pressrelease); + +gint _gdk_win32_window_get_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data); +void _gdk_win32_window_change_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements); +void _gdk_win32_window_delete_property (GdkWindow *window, GdkAtom property); + +/* Stray GdkWin32Screen members */ +GdkVisual *_gdk_win32_screen_get_system_visual (GdkScreen *screen); +void _gdk_win32_screen_broadcast_client_message (GdkScreen *screen, GdkEvent *event); +gboolean _gdk_win32_screen_get_setting (GdkScreen *screen, const gchar *name, GValue *value); +gint _gdk_win32_screen_visual_get_best_depth (GdkScreen *screen); +GdkVisualType _gdk_win32_screen_visual_get_best_type (GdkScreen *screen); +GdkVisual *_gdk_win32_screen_visual_get_best (GdkScreen *screen); +GdkVisual *_gdk_win32_screen_visual_get_best_with_depth (GdkScreen *screen, gint depth); +GdkVisual *_gdk_win32_screen_visual_get_best_with_type (GdkScreen *screen, GdkVisualType visual_type); +GdkVisual *_gdk_win32_screen_visual_get_best_with_both (GdkScreen *screen, gint depth, GdkVisualType visual_type); +void _gdk_win32_screen_query_depths (GdkScreen *screen, gint **depths, gint *count); +void _gdk_win32_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count); +GList *_gdk_win32_screen_list_visuals (GdkScreen *screen); + +/* Distributed display manager implementation */ +GdkDisplay *_gdk_win32_display_open (const gchar *display_name); +GdkAtom _gdk_win32_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gint only_if_exists); +gchar *_gdk_win32_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom); + /* Initialization */ +void _gdk_win32_windowing_init (void); void _gdk_windowing_window_init (GdkScreen *screen); void _gdk_root_window_size_init (void); void _gdk_monitor_init(void); diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index 542f83a9cb..b8882bc336 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -34,10 +34,12 @@ #include "gdkproperty.h" #include "gdkselection.h" #include "gdkprivate-win32.h" +#include "gdkwin32.h" GdkAtom -gdk_atom_intern (const gchar *atom_name, - gint only_if_exists) +_gdk_win32_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gint only_if_exists) { ATOM win32_atom; GdkAtom retval; @@ -84,17 +86,9 @@ gdk_atom_intern (const gchar *atom_name, return retval; } -GdkAtom -gdk_atom_intern_static_string (const gchar *atom_name) -{ - /* on X11 this is supposed to save memory. On win32 there seems to be - * no way to make a difference ? - */ - return gdk_atom_intern (atom_name, FALSE); -} - gchar * -gdk_atom_name (GdkAtom atom) +_gdk_win32_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom) { ATOM win32_atom; gchar name[256]; @@ -122,7 +116,7 @@ gdk_atom_name (GdkAtom atom) } gint -gdk_property_get (GdkWindow *window, +_gdk_win32_window_get_property (GdkWindow *window, GdkAtom property, GdkAtom type, gulong offset, @@ -145,7 +139,7 @@ gdk_property_get (GdkWindow *window, } void -gdk_property_change (GdkWindow *window, +_gdk_win32_window_change_property (GdkWindow *window, GdkAtom property, GdkAtom type, gint format, @@ -268,8 +262,8 @@ gdk_property_change (GdkWindow *window, } void -gdk_property_delete (GdkWindow *window, - GdkAtom property) +_gdk_win32_window_delete_property (GdkWindow *window, + GdkAtom property) { gchar *prop_name; @@ -354,7 +348,7 @@ gdk_property_delete (GdkWindow *window, */ gboolean -gdk_screen_get_setting (GdkScreen *screen, +_gdk_win32_screen_get_setting (GdkScreen *screen, const gchar *name, GValue *value) { diff --git a/gdk/win32/gdkscreen-win32.c b/gdk/win32/gdkscreen-win32.c index 047e948b45..12b18d56fb 100644 --- a/gdk/win32/gdkscreen-win32.c +++ b/gdk/win32/gdkscreen-win32.c @@ -20,37 +20,77 @@ #include "config.h" #include "gdk.h" #include "gdkprivate-win32.h" +#include "gdkscreenprivate.h" +#include "gdkwin32screen.h" -GdkDisplay * -gdk_screen_get_display (GdkScreen *screen) +struct _GdkWin32Screen +{ + GdkScreen parent_instance; +}; +struct _GdkWin32ScreenClass +{ + GdkScreenClass parent_class; +}; +G_DEFINE_TYPE (GdkWin32Screen, gdk_win32_screen, GDK_TYPE_SCREEN) +static void +gdk_win32_screen_init(GdkWin32Screen *display) +{ +} + +static GdkDisplay * +gdk_win32_screen_get_display (GdkScreen *screen) { return _gdk_display; } -GdkWindow * -gdk_screen_get_root_window (GdkScreen *screen) +static gint +gdk_win32_screen_get_width (GdkScreen *screen) +{ + return GDK_WINDOW (_gdk_root)->width; +} + +static gint +gdk_win32_screen_get_height (GdkScreen *screen) +{ + return GDK_WINDOW (_gdk_root)->height; +} + +static gint +gdk_win32_screen_get_width_mm (GdkScreen *screen) +{ + return (double) gdk_screen_get_width (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSX) * 25.4; +} + +static gint +gdk_win32_screen_get_height_mm (GdkScreen *screen) +{ + return (double) gdk_screen_get_height (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY) * 25.4; +} + +static GdkWindow * +gdk_win32_screen_get_root_window (GdkScreen *screen) { return _gdk_root; } -gint -gdk_screen_get_n_monitors (GdkScreen *screen) +static gint +gdk_win32_screen_get_n_monitors (GdkScreen *screen) { g_return_val_if_fail (screen == _gdk_screen, 0); return _gdk_num_monitors; } -gint -gdk_screen_get_primary_monitor (GdkScreen *screen) +static gint +gdk_win32_screen_get_primary_monitor (GdkScreen *screen) { g_return_val_if_fail (screen == _gdk_screen, 0); return 0; } -gint -gdk_screen_get_monitor_width_mm (GdkScreen *screen, +static gint +gdk_win32_screen_get_monitor_width_mm (GdkScreen *screen, gint num_monitor) { g_return_val_if_fail (screen == _gdk_screen, 0); @@ -60,8 +100,8 @@ gdk_screen_get_monitor_width_mm (GdkScreen *screen, return _gdk_monitors[num_monitor].width_mm; } -gint -gdk_screen_get_monitor_height_mm (GdkScreen *screen, +static gint +gdk_win32_screen_get_monitor_height_mm (GdkScreen *screen, gint num_monitor) { g_return_val_if_fail (screen == _gdk_screen, 0); @@ -71,8 +111,8 @@ gdk_screen_get_monitor_height_mm (GdkScreen *screen, return _gdk_monitors[num_monitor].height_mm; } -gchar * -gdk_screen_get_monitor_plug_name (GdkScreen *screen, +static gchar * +gdk_win32_screen_get_monitor_plug_name (GdkScreen *screen, gint num_monitor) { g_return_val_if_fail (screen == _gdk_screen, 0); @@ -82,8 +122,8 @@ gdk_screen_get_monitor_plug_name (GdkScreen *screen, return g_strdup (_gdk_monitors[num_monitor].name); } -void -gdk_screen_get_monitor_geometry (GdkScreen *screen, +static void +gdk_win32_screen_get_monitor_geometry (GdkScreen *screen, gint num_monitor, GdkRectangle *dest) { @@ -94,16 +134,16 @@ gdk_screen_get_monitor_geometry (GdkScreen *screen, *dest = _gdk_monitors[num_monitor].rect; } -GdkVisual * -gdk_screen_get_rgba_visual (GdkScreen *screen) +static GdkVisual * +gdk_win32_screen_get_rgba_visual (GdkScreen *screen) { g_return_val_if_fail (screen == _gdk_screen, NULL); return NULL; } -gint -gdk_screen_get_number (GdkScreen *screen) +static gint +gdk_win32_screen_get_number (GdkScreen *screen) { g_return_val_if_fail (screen == _gdk_screen, 0); @@ -120,32 +160,83 @@ _gdk_windowing_substitute_screen_number (const gchar *display_name, return g_strdup (display_name); } -gchar * -gdk_screen_make_display_name (GdkScreen *screen) +static gchar * +gdk_win32_screen_make_display_name (GdkScreen *screen) { return g_strdup (gdk_display_get_name (_gdk_display)); } -GdkWindow * -gdk_screen_get_active_window (GdkScreen *screen) +static GdkWindow * +gdk_win32_screen_get_active_window (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); return NULL; } -GList * -gdk_screen_get_window_stack (GdkScreen *screen) +static GList * +gdk_win32_screen_get_window_stack (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); return NULL; } -gboolean -gdk_screen_is_composited (GdkScreen *screen) +static gboolean +gdk_win32_screen_is_composited (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); return FALSE; } + +static void +gdk_win32_screen_finalize (GObject *object) +{ +} + +static void +gdk_win32_screen_dispose (GObject *object) +{ +} + +static void +gdk_win32_screen_class_init (GdkWin32ScreenClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkScreenClass *screen_class = GDK_SCREEN_CLASS (klass); + + object_class->dispose = gdk_win32_screen_dispose; + object_class->finalize = gdk_win32_screen_finalize; + + screen_class->get_display = gdk_win32_screen_get_display; + screen_class->get_width = gdk_win32_screen_get_width; + screen_class->get_height = gdk_win32_screen_get_height; + screen_class->get_width_mm = gdk_win32_screen_get_width_mm; + screen_class->get_height_mm = gdk_win32_screen_get_height_mm; + screen_class->get_number = gdk_win32_screen_get_number; + screen_class->get_root_window = gdk_win32_screen_get_root_window; + screen_class->get_n_monitors = gdk_win32_screen_get_n_monitors; + screen_class->get_primary_monitor = gdk_win32_screen_get_primary_monitor; + screen_class->get_monitor_width_mm = gdk_win32_screen_get_monitor_width_mm; + screen_class->get_monitor_height_mm = gdk_win32_screen_get_monitor_height_mm; + screen_class->get_monitor_plug_name = gdk_win32_screen_get_monitor_plug_name; + screen_class->get_monitor_geometry = gdk_win32_screen_get_monitor_geometry; + screen_class->get_system_visual = _gdk_win32_screen_get_system_visual; + screen_class->get_rgba_visual = gdk_win32_screen_get_rgba_visual; + screen_class->is_composited = gdk_win32_screen_is_composited; + screen_class->make_display_name = gdk_win32_screen_make_display_name; + screen_class->get_active_window = gdk_win32_screen_get_active_window; + screen_class->get_window_stack = gdk_win32_screen_get_window_stack; + screen_class->broadcast_client_message = _gdk_win32_screen_broadcast_client_message; + screen_class->get_setting = _gdk_win32_screen_get_setting; + screen_class->visual_get_best_depth = _gdk_win32_screen_visual_get_best_depth; + screen_class->visual_get_best_type = _gdk_win32_screen_visual_get_best_type; + screen_class->visual_get_best = _gdk_win32_screen_visual_get_best; + screen_class->visual_get_best_with_depth = _gdk_win32_screen_visual_get_best_with_depth; + screen_class->visual_get_best_with_type = _gdk_win32_screen_visual_get_best_with_type; + screen_class->visual_get_best_with_both = _gdk_win32_screen_visual_get_best_with_both; + screen_class->query_depths = _gdk_win32_screen_query_depths; + screen_class->query_visual_types = _gdk_win32_screen_query_visual_types; + screen_class->list_visuals = _gdk_win32_screen_list_visuals; +} \ No newline at end of file diff --git a/gdk/win32/gdkselection-win32.c b/gdk/win32/gdkselection-win32.c index e3936a9b3e..5b56321a3e 100644 --- a/gdk/win32/gdkselection-win32.c +++ b/gdk/win32/gdkselection-win32.c @@ -33,6 +33,7 @@ #include "gdkselection.h" #include "gdkdisplay.h" #include "gdkprivate-win32.h" +#include "gdkwin32.h" /* We emulate the GDK_SELECTION window properties of windows (as used * in the X11 backend) by using a hash table from window handles to @@ -253,11 +254,11 @@ get_mapped_gdk_atom_name (GdkAtom gdk_target) } gboolean -gdk_selection_owner_set_for_display (GdkDisplay *display, - GdkWindow *owner, - GdkAtom selection, - guint32 time, - gboolean send_event) +_gdk_win32_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event) { HWND hwnd; GdkEvent tmp_event; @@ -333,8 +334,8 @@ gdk_selection_owner_set_for_display (GdkDisplay *display, } GdkWindow* -gdk_selection_owner_get_for_display (GdkDisplay *display, - GdkAtom selection) +_gdk_win32_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection) { GdkWindow *window; @@ -351,7 +352,8 @@ gdk_selection_owner_get_for_display (GdkDisplay *display, return gdk_win32_handle_table_lookup ((GdkNativeWindow) owner); } - window = gdk_window_lookup ((GdkNativeWindow) g_hash_table_lookup (sel_owner_table, selection)); + window = gdk_win32_window_lookup_for_display (display, + (GdkNativeWindow) g_hash_table_lookup (sel_owner_table, selection)); GDK_NOTE (DND, { gchar *sel_name = gdk_atom_name (selection); @@ -387,10 +389,11 @@ generate_selection_notify (GdkWindow *requestor, } void -gdk_selection_convert (GdkWindow *requestor, - GdkAtom selection, - GdkAtom target, - guint32 time) +_gdk_win32_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time) { HGLOBAL hdata; GdkAtom property = _gdk_selection; @@ -804,10 +807,11 @@ gdk_selection_convert (GdkWindow *requestor, } gint -gdk_selection_property_get (GdkWindow *requestor, - guchar **data, - GdkAtom *ret_type, - gint *ret_format) +_gdk_win32_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format) { GdkSelProp *prop; @@ -869,12 +873,12 @@ _gdk_selection_property_delete (GdkWindow *window) } void -gdk_selection_send_notify_for_display (GdkDisplay *display, - GdkNativeWindow requestor, - GdkAtom selection, - GdkAtom target, - GdkAtom property, - guint32 time) +_gdk_win32_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time) { g_return_if_fail (display == _gdk_display); @@ -1020,13 +1024,13 @@ make_list (const gchar *text, return n_strings; } -gint -gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gint +_gdk_win32_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { g_return_val_if_fail (text != NULL, 0); g_return_val_if_fail (length >= 0, 0); @@ -1086,7 +1090,8 @@ gdk_string_to_compound_text_for_display (GdkDisplay *display, } gchar * -gdk_utf8_to_string_target (const gchar *str) +_gdk_win32_display_utf8_to_string_target (GdkDisplay *display, + const gchar *str) { return _gdk_utf8_to_string_target_internal (str, strlen (str)); } diff --git a/gdk/win32/gdkspawn-win32.c b/gdk/win32/gdkspawn-win32.c deleted file mode 100644 index 6cddd648b1..0000000000 --- a/gdk/win32/gdkspawn-win32.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#include "config.h" - -#include "gdkspawn.h" - -#include -#include - -gboolean -gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error) -{ - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - g_assert (sizeof(GPid) == sizeof(int)); - - return g_spawn_async (working_directory, - argv, - envp, - flags, - child_setup, - user_data, - child_pid, - error); -} - -gboolean -gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error) -{ - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - g_assert (sizeof(GPid) == sizeof(int)); - - return g_spawn_async_with_pipes (working_directory, - argv, - envp, - flags, - child_setup, - user_data, - child_pid, - standard_input, - standard_output, - standard_error, - error); -} - -gboolean -gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error) -{ - gchar **argv = NULL; - gboolean retval; - - g_return_val_if_fail (command_line != NULL, FALSE); - - if (!g_shell_parse_argv (command_line, - NULL, &argv, - error)) - return FALSE; - - retval = gdk_spawn_on_screen (screen, - NULL, argv, NULL, - G_SPAWN_SEARCH_PATH, - NULL, NULL, NULL, - error); - g_strfreev (argv); - - return retval; -} diff --git a/gdk/win32/gdktestutils-win32.c b/gdk/win32/gdktestutils-win32.c index ed9faa7e89..062d09b0ac 100644 --- a/gdk/win32/gdktestutils-win32.c +++ b/gdk/win32/gdktestutils-win32.c @@ -22,13 +22,8 @@ #include -void -gdk_test_render_sync (GdkWindow *window) -{ -} - gboolean -gdk_test_simulate_key (GdkWindow *window, +_gdk_win32_window_simulate_key (GdkWindow *window, gint x, gint y, guint keyval, @@ -41,7 +36,7 @@ gdk_test_simulate_key (GdkWindow *window, } gboolean -gdk_test_simulate_button (GdkWindow *window, +_gdk_win32_window_simulate_button (GdkWindow *window, gint x, gint y, guint button, /*1..3*/ diff --git a/gdk/win32/gdkvisual-win32.c b/gdk/win32/gdkvisual-win32.c index b3d20b7031..b1f9a797b1 100644 --- a/gdk/win32/gdkvisual-win32.c +++ b/gdk/win32/gdkvisual-win32.c @@ -31,6 +31,7 @@ #include "gdkvisual.h" #include "gdkscreen.h" /* gdk_screen_get_default() */ #include "gdkprivate-win32.h" +#include "gdkvisualprivate.h" static void gdk_visual_decompose_mask (gulong mask, gint *shift, @@ -42,46 +43,6 @@ static gint available_depths[1]; static GdkVisualType available_types[1]; -static void -gdk_visual_finalize (GObject *object) -{ - g_error ("A GdkVisual object was finalized. This should not happen"); -} - -static void -gdk_visual_class_init (GObjectClass *class) -{ - class->finalize = gdk_visual_finalize; -} - -GType -gdk_visual_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkVisualClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_visual_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkVisual), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - object_type = g_type_register_static (G_TYPE_OBJECT, - "GdkVisual", - &object_info, 0); - } - - return object_type; -} - void _gdk_visual_init (void) { @@ -102,6 +63,7 @@ _gdk_visual_init (void) gint map_entries = 0; system_visual = g_object_new (GDK_TYPE_VISUAL, NULL); + system_visual->screen = gdk_screen_get_default(); GDK_NOTE (COLORMAP, g_print ("BITSPIXEL=%d NUMCOLORS=%d\n", bitspixel, numcolors)); @@ -290,31 +252,31 @@ _gdk_visual_init (void) } gint -gdk_visual_get_best_depth (void) +_gdk_win32_screen_visual_get_best_depth (GdkScreen *screen) { return available_depths[0]; } GdkVisualType -gdk_visual_get_best_type (void) +_gdk_win32_screen_visual_get_best_type (GdkScreen *screen) { return available_types[0]; } GdkVisual* -gdk_screen_get_system_visual (GdkScreen *screen) +_gdk_win32_screen_get_system_visual (GdkScreen *screen) { return system_visual; } GdkVisual* -gdk_visual_get_best (void) +_gdk_win32_screen_visual_get_best (GdkScreen *screen) { return ((GdkVisual*) system_visual); } GdkVisual* -gdk_visual_get_best_with_depth (gint depth) +_gdk_win32_screen_visual_get_best_with_depth (GdkScreen *screen, gint depth) { if (depth == system_visual->depth) return (GdkVisual*) system_visual; @@ -323,7 +285,7 @@ gdk_visual_get_best_with_depth (gint depth) } GdkVisual* -gdk_visual_get_best_with_type (GdkVisualType visual_type) +_gdk_win32_screen_visual_get_best_with_type (GdkScreen *screen, GdkVisualType visual_type) { if (visual_type == system_visual->type) return system_visual; @@ -332,8 +294,9 @@ gdk_visual_get_best_with_type (GdkVisualType visual_type) } GdkVisual* -gdk_visual_get_best_with_both (gint depth, - GdkVisualType visual_type) +_gdk_win32_screen_visual_get_best_with_both (GdkScreen *screen, + gint depth, + GdkVisualType visual_type) { if ((depth == system_visual->depth) && (visual_type == system_visual->type)) return system_visual; @@ -342,35 +305,29 @@ gdk_visual_get_best_with_both (gint depth, } void -gdk_query_depths (gint **depths, - gint *count) +_gdk_win32_screen_query_depths (GdkScreen *screen, + gint **depths, + gint *count) { *count = 1; *depths = available_depths; } void -gdk_query_visual_types (GdkVisualType **visual_types, - gint *count) +_gdk_win32_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count) { *count = 1; *visual_types = available_types; } GList* -gdk_screen_list_visuals (GdkScreen *screen) +_gdk_win32_screen_list_visuals (GdkScreen *screen) { return g_list_append (NULL, (gpointer) system_visual); } -GdkScreen * -gdk_visual_get_screen (GdkVisual *visual) -{ - g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL); - - return gdk_screen_get_default (); -} - static void gdk_visual_decompose_mask (gulong mask, gint *shift, diff --git a/gdk/win32/gdkwin32.h b/gdk/win32/gdkwin32.h index 5a494756d8..276d37c831 100644 --- a/gdk/win32/gdkwin32.h +++ b/gdk/win32/gdkwin32.h @@ -27,6 +27,18 @@ #ifndef __GDK_WIN32_H__ #define __GDK_WIN32_H__ +#define __GDKWIN32_H_INSIDE__ + +#include +#include +#include +#include +#include +#include +#include + +#undef __GDKWIN32_H_INSIDE__ + #include #ifndef STRICT @@ -41,19 +53,13 @@ G_BEGIN_DECLS #include "gdkprivate-win32.h" -#define GDK_WINDOW_HWND(win) (GDK_DRAWABLE_IMPL_WIN32(((GdkWindowObject *)win)->impl)->handle) -#define GDK_DRAWABLE_IMPL_WIN32_HANDLE(d) (((GdkDrawableImplWin32 *) d)->handle) -#define GDK_DRAWABLE_HANDLE(win) (GDK_IS_WINDOW (win) ? GDK_WINDOW_HWND (win) : (GDK_IS_DRAWABLE_IMPL_WIN32 (win) ? GDK_DRAWABLE_IMPL_WIN32_HANDLE (win) : 0)) +#define GDK_WINDOW_HWND(win) (GDK_WINDOW_IMPL_WIN32(win->impl)->handle) #else /* definition for exported 'internals' go here */ -#define GDK_WINDOW_HWND(d) (gdk_win32_drawable_get_handle (d)) +#define GDK_WINDOW_HWND(d) (gdk_win32_window_get_handle (d)) #endif -#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP) -#define GDK_DISPLAY() NULL - - /* These need to be here so gtkstatusicon.c can pick them up if needed. */ #ifndef WM_XBUTTONDOWN #define WM_XBUTTONDOWN 0x020B @@ -77,9 +83,8 @@ gboolean gdk_win32_window_is_win32 (GdkWindow *window); /* Return the Gdk* for a particular HANDLE */ gpointer gdk_win32_handle_table_lookup (GdkNativeWindow handle); - -/* Translate from drawable to Windows handle */ -HGDIOBJ gdk_win32_drawable_get_handle (GdkDrawable *drawable); +/* Translate from window to Windows handle */ +HGDIOBJ gdk_win32_window_get_handle (GdkWindow *window); void gdk_win32_selection_add_targets (GdkWindow *owner, GdkAtom selection, @@ -91,6 +96,10 @@ GdkPixbuf *gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon); HICON gdk_win32_pixbuf_to_hicon_libgtk_only (GdkPixbuf *pixbuf); void gdk_win32_set_modal_dialog_libgtk_only (HWND window); +GdkWindow * gdk_win32_window_foreign_new_for_display (GdkDisplay *display, + GdkNativeWindow anid); +GdkWindow * gdk_win32_window_lookup_for_display (GdkDisplay *display, + GdkNativeWindow anid); G_END_DECLS diff --git a/gdk/win32/gdkwin32cursor.h b/gdk/win32/gdkwin32cursor.h new file mode 100644 index 0000000000..6146f32d8f --- /dev/null +++ b/gdk/win32/gdkwin32cursor.h @@ -0,0 +1,56 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_CURSOR_H__ +#define __GDK_WIN32_CURSOR_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_WIN32_CURSOR (gdk_win32_cursor_get_type ()) +#define GDK_WIN32_CURSOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_CURSOR, GdkWin32Cursor)) +#define GDK_WIN32_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_CURSOR, GdkWin32CursorClass)) +#define GDK_IS_WIN32_CURSOR(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_CURSOR)) +#define GDK_IS_WIN32_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_CURSOR)) +#define GDK_WIN32_CURSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_CURSOR, GdkWin32CursorClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32Cursor GdkWin32Cursor; +#else +typedef GdkCursor GdkWin32Cursor; +#endif +typedef struct _GdkWin32CursorClass GdkWin32CursorClass; + +GType gdk_win32_cursor_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_CURSOR_H__ */ diff --git a/gdk/win32/gdkwin32display.h b/gdk/win32/gdkwin32display.h new file mode 100644 index 0000000000..9ff9a9d109 --- /dev/null +++ b/gdk/win32/gdkwin32display.h @@ -0,0 +1,56 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_DISPLAY_H__ +#define __GDK_WIN32_DISPLAY_H__ + +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32Display GdkWin32Display; +#else +typedef GdkDisplay GdkWin32Display; +#endif +typedef struct _GdkWin32DisplayClass GdkWin32DisplayClass; + +#define GDK_TYPE_WIN32_DISPLAY (gdk_win32_display_get_type()) +#define GDK_WIN32_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_DISPLAY, GdkWin32Display)) +#define GDK_WIN32_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_DISPLAY, GdkWin32DisplayClass)) +#define GDK_IS_WIN32_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_DISPLAY)) +#define GDK_IS_WIN32_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_DISPLAY)) +#define GDK_WIN32_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_DISPLAY, GdkWin32DisplayClass)) + +GType gdk_win32_display_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_DISPLAY_H__ */ diff --git a/gdk/win32/gdkwin32displaymanager.h b/gdk/win32/gdkwin32displaymanager.h new file mode 100644 index 0000000000..61c1ce4a97 --- /dev/null +++ b/gdk/win32/gdkwin32displaymanager.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_DISPLAY_MANAGER_H__ +#define __GDK_WIN32_DISPLAY_MANAGER_H__ + +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32DisplayManager GdkWin32DisplayManager; +#else +typedef GdkDisplayManager GdkWin32DisplayManager; +#endif +typedef struct _GdkWin32DisplayManagerClass GdkWin32DisplayManagerClass; + +#define GDK_TYPE_WIN32_DISPLAY_MANAGER (gdk_win32_display_manager_get_type()) +#define GDK_WIN32_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_DISPLAY_MANAGER, GdkWin32DisplayManager)) +#define GDK_WIN32_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_DISPLAY_MANAGER, GdkWin32DisplayManagerClass)) +#define GDK_IS_WIN32_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_DISPLAY_MANAGER)) +#define GDK_IS_WIN32_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_DISPLAY_MANAGER)) +#define GDK_WIN32_DISPLAY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_DISPLAY_MANAGER, GdkWin32DisplayManagerClass)) + +GType gdk_win32_display_manager_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_DISPLAY_MANAGER_H__ */ diff --git a/gdk/win32/gdkwin32dnd.h b/gdk/win32/gdkwin32dnd.h new file mode 100644 index 0000000000..1632d763fc --- /dev/null +++ b/gdk/win32/gdkwin32dnd.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_DND_H__ +#define __GDK_WIN32_DND_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_WIN32_DRAG_CONTEXT (gdk_win32_drag_context_get_type ()) +#define GDK_WIN32_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_DRAG_CONTEXT, GdkWin32DragContext)) +#define GDK_WIN32_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_DRAG_CONTEXT, GdkWin32DragContextClass)) +#define GDK_IS_WIN32_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_DRAG_CONTEXT)) +#define GDK_IS_WIN32_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_DRAG_CONTEXT)) +#define GDK_WIN32_DRAG_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_DRAG_CONTEXT, GdkWin32DragContextClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32DragContext GdkWin32DragContext; +#else +typedef GdkDragContext GdkWin32DragContext; +#endif +typedef struct _GdkWin32DragContextClass GdkWin32DragContextClass; + +GType gdk_win32_drag_context_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_DRAG_CONTEXT_H__ */ diff --git a/gdk/win32/gdkwin32keys.h b/gdk/win32/gdkwin32keys.h new file mode 100644 index 0000000000..1d7a589d74 --- /dev/null +++ b/gdk/win32/gdkwin32keys.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_KEYS_H__ +#define __GDK_WIN32_KEYS_H__ + +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32Keymap GdkWin32Keymap; +#else +typedef GdkKeymap GdkWin32Keymap; +#endif +typedef struct _GdkWin32KeymapClass GdkWin32KeymapClass; + +#define GDK_TYPE_WIN32_KEYMAP (gdk_win32_keymap_get_type()) +#define GDK_WIN32_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_KEYMAP, GdkWin32Keymap)) +#define GDK_WIN32_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_KEYMAP, GdkWin32KeymapClass)) +#define GDK_IS_WIN32_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_KEYMAP)) +#define GDK_IS_WIN32_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_KEYMAP)) +#define GDK_WIN32_KEYMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_KEYMAP, GdkWin32KeymapClass)) + +GType gdk_win32_keymap_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_KEYMAP_H__ */ diff --git a/gdk/win32/gdkwin32screen.h b/gdk/win32/gdkwin32screen.h new file mode 100644 index 0000000000..594f604e50 --- /dev/null +++ b/gdk/win32/gdkwin32screen.h @@ -0,0 +1,56 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_SCREEN_H__ +#define __GDK_WIN32_SCREEN_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_WIN32_SCREEN (gdk_win32_screen_get_type ()) +#define GDK_WIN32_SCREEN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_SCREEN, GdkWin32Screen)) +#define GDK_WIN32_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_SCREEN, GdkWin32ScreenClass)) +#define GDK_IS_WIN32_SCREEN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_SCREEN)) +#define GDK_IS_WIN32_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_SCREEN)) +#define GDK_WIN32_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_SCREEN, GdkWin32ScreenClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32Screen GdkWin32Screen; +#else +typedef GdkScreen GdkWin32Screen; +#endif +typedef struct _GdkWin32ScreenClass GdkWin32ScreenClass; + +GType gdk_win32_screen_get_type (void); + +G_END_DECLS + +#endif /* __GDK_WIN32_SCREEN_H__ */ diff --git a/gdk/win32/gdkwin32window.h b/gdk/win32/gdkwin32window.h new file mode 100644 index 0000000000..22e8f4c126 --- /dev/null +++ b/gdk/win32/gdkwin32window.h @@ -0,0 +1,56 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKWIN32_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_WIN32_WINDOW_H__ +#define __GDK_WIN32_WINDOW_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_WIN32_WINDOW (gdk_win32_window_get_type ()) +#define GDK_WIN32_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WIN32_WINDOW, GdkWin32Window)) +#define GDK_WIN32_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WIN32_WINDOW, GdkWin32WindowClass)) +#define GDK_IS_WIN32_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WIN32_WINDOW)) +#define GDK_IS_WIN32_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WIN32_WINDOW)) +#define GDK_WIN32_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WIN32_WINDOW, GdkWin32WindowClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkWin32Window GdkWin32Window; +#else +typedef GdkWindow GdkWin32Window; +#endif +typedef struct _GdkWin32WindowClass GdkWin32WindowClass; + +GType gdk_win32_window_get_type (void); + +G_END_DECLS + +#endif /* __GDK_X11_WINDOW_H__ */ diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index bcbdca33a1..01a17abee6 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -1,7 +1,7 @@ /* GDK - The GIMP Drawing Kit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * Copyright (C) 1998-2004 Tor Lillqvist - * Copyright (C) 2001-2009 Hans Breuer + * Copyright (C) 2001-2011 Hans Breuer * Copyright (C) 2007-2009 Cody Russell * * This library is free software; you can redistribute it and/or @@ -36,6 +36,12 @@ #include "gdkdeviceprivate.h" #include "gdkdevicemanager-win32.h" #include "gdkenumtypes.h" +#include "gdkwin32.h" +#include "gdkdisplayprivate.h" +#include "gdkvisualprivate.h" +#include "gdkwin32window.h" + +#include static void gdk_window_impl_win32_init (GdkWindowImplWin32 *window); static void gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass); @@ -44,6 +50,8 @@ static void gdk_window_impl_win32_finalize (GObject *object); static gpointer parent_class = NULL; static GSList *modal_window_stack = NULL; +static const cairo_user_data_key_t gdk_win32_cairo_key; + static void update_style_bits (GdkWindow *window); static gboolean _gdk_window_get_functions (GdkWindow *window, GdkWMFunction *functions); @@ -53,14 +61,35 @@ static gboolean _gdk_window_get_functions (GdkWindow *window, GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN && \ GDK_WINDOW_TYPE (window) != GDK_WINDOW_OFFSCREEN) -static void gdk_window_impl_iface_init (GdkWindowImplIface *iface); - GdkScreen * GDK_WINDOW_SCREEN (GObject *win) { return _gdk_screen; } +struct _GdkWin32Window { + GdkWindow parent; +}; + +struct _GdkWin32WindowClass { + GdkWindowClass parent_class; +}; + +G_DEFINE_TYPE (GdkWin32Window, gdk_win32_window, GDK_TYPE_WINDOW) + +static void +gdk_win32_window_class_init (GdkWin32WindowClass *window_class) +{ +} + +static void +gdk_win32_window_init (GdkWin32Window *window) +{ +} + + +G_DEFINE_TYPE (GdkWindowImplWin32, gdk_window_impl_win32, GDK_TYPE_WINDOW_IMPL) + GType _gdk_window_impl_win32_get_type (void) { @@ -81,19 +110,9 @@ _gdk_window_impl_win32_get_type (void) (GInstanceInitFunc) gdk_window_impl_win32_init, }; - const GInterfaceInfo window_impl_info = - { - (GInterfaceInitFunc) gdk_window_impl_iface_init, - NULL, - NULL - }; - - object_type = g_type_register_static (GDK_TYPE_DRAWABLE_IMPL_WIN32, + object_type = g_type_register_static (GDK_TYPE_WINDOW_IMPL, "GdkWindowImplWin32", &object_info, 0); - g_type_add_interface_static (object_type, - GDK_TYPE_WINDOW_IMPL, - &window_impl_info); } return object_type; @@ -115,33 +134,21 @@ gdk_window_impl_win32_init (GdkWindowImplWin32 *impl) impl->changing_state = FALSE; } -static void -gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = gdk_window_impl_win32_finalize; -} - static void gdk_window_impl_win32_finalize (GObject *object) { - GdkWindowObject *wrapper; - GdkDrawableImplWin32 *draw_impl; + GdkWindow *wrapper; GdkWindowImplWin32 *window_impl; g_return_if_fail (GDK_IS_WINDOW_IMPL_WIN32 (object)); - draw_impl = GDK_DRAWABLE_IMPL_WIN32 (object); window_impl = GDK_WINDOW_IMPL_WIN32 (object); - wrapper = (GdkWindowObject*) draw_impl->wrapper; + wrapper = window_impl->wrapper; if (!GDK_WINDOW_DESTROYED (wrapper)) { - gdk_win32_handle_table_remove (draw_impl->handle); + gdk_win32_handle_table_remove (window_impl->handle); } if (window_impl->hcursor != NULL) @@ -182,51 +189,50 @@ _gdk_win32_adjust_client_rect (GdkWindow *window, void _gdk_root_window_size_init (void) { - GdkWindowObject *window_object; + GdkWindow *window; GdkRectangle rect; int i; - window_object = GDK_WINDOW_OBJECT (_gdk_root); + window = GDK_WINDOW (_gdk_root); rect = _gdk_monitors[0].rect; for (i = 1; i < _gdk_num_monitors; i++) gdk_rectangle_union (&rect, &_gdk_monitors[i].rect, &rect); - window_object->width = rect.width; - window_object->height = rect.height; + window->width = rect.width; + window->height = rect.height; } void _gdk_windowing_window_init (GdkScreen *screen) { - GdkWindowObject *private; - GdkDrawableImplWin32 *draw_impl; + GdkWindow *window; + GdkWindowImplWin32 *impl_win32; g_assert (_gdk_root == NULL); - _gdk_root = g_object_new (GDK_TYPE_WINDOW, NULL); - private = (GdkWindowObject *)_gdk_root; - private->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); - private->impl_window = private; - private->visual = gdk_screen_get_system_visual (screen); + _gdk_root = _gdk_display_create_window (_gdk_display); - draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl); - - draw_impl->handle = GetDesktopWindow (); - draw_impl->wrapper = GDK_DRAWABLE (private); - - private->window_type = GDK_WINDOW_ROOT; - private->depth = gdk_visual_get_system ()->depth; + window = (GdkWindow *)_gdk_root; + window->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); + impl_win32 = GDK_WINDOW_IMPL_WIN32 (window->impl); + impl_win32->wrapper = window; + + window->impl_window = window; + window->visual = gdk_screen_get_system_visual (screen); + + window->window_type = GDK_WINDOW_ROOT; + window->depth = gdk_visual_get_system ()->depth; _gdk_root_window_size_init (); - private->x = 0; - private->y = 0; - private->abs_x = 0; - private->abs_y = 0; + window->x = 0; + window->y = 0; + window->abs_x = 0; + window->abs_y = 0; /* width and height already initialised in _gdk_root_window_size_init() */ - private->viewable = TRUE; + window->viewable = TRUE; - gdk_win32_handle_table_insert ((HANDLE *) &draw_impl->handle, _gdk_root); + gdk_win32_handle_table_insert ((HANDLE *) &impl_win32->handle, _gdk_root); GDK_NOTE (MISC, g_print ("_gdk_root=%p\n", GDK_WINDOW_HWND (_gdk_root))); } @@ -394,67 +400,93 @@ RegisterGdkClass (GdkWindowType wtype, GdkWindowTypeHint wtype_hint) return klass; } +/* + * Create native windows. + * + * With the default Gdk the created windows are mostly toplevel windows. + * A lot of child windows are only created for GDK_NATIVE_WINDOWS. + * + * Placement of the window is derived from the passed in window, + * except for toplevel window where OS/Window Manager placement + * is used. + * + * The visual parameter, is based on GDK_WA_VISUAL if set already. + * From attributes the only things used is: colormap, title, + * wmclass and type_hint. [1]. We are checking redundant information + * and complain if that changes, which would break this implementation + * again. + * + * [1] http://mail.gnome.org/archives/gtk-devel-list/2010-August/msg00214.html + */ void -_gdk_window_impl_new (GdkWindow *window, - GdkWindow *real_parent, - GdkScreen *screen, - GdkEventMask event_mask, - GdkWindowAttr *attributes, - gint attributes_mask) +_gdk_win32_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask) { HWND hwndNew; HANDLE hparent; ATOM klass = 0; DWORD dwStyle = 0, dwExStyle; RECT rect; - GdkWindow *orig_parent; - GdkWindowObject *private; GdkWindowImplWin32 *impl; - GdkDrawableImplWin32 *draw_impl; const gchar *title; wchar_t *wtitle; gint window_width, window_height; gint offset_x = 0, offset_y = 0; - - private = (GdkWindowObject *)window; - - orig_parent = real_parent; + gint x, y; + /* check consistency of redundant information */ + guint remaining_mask = attributes_mask; GDK_NOTE (MISC, - g_print ("_gdk_window_impl_new: %s\n", - (attributes->window_type == GDK_WINDOW_TOPLEVEL ? "TOPLEVEL" : - (attributes->window_type == GDK_WINDOW_CHILD ? "CHILD" : - (attributes->window_type == GDK_WINDOW_TEMP ? "TEMP" : - "???"))))); + g_print ("_gdk_window_impl_new: %s %s\n", + (window->window_type == GDK_WINDOW_TOPLEVEL ? "TOPLEVEL" : + (window->window_type == GDK_WINDOW_CHILD ? "CHILD" : + (window->window_type == GDK_WINDOW_TEMP ? "TEMP" : + "???"))), + (attributes->wclass == GDK_INPUT_OUTPUT ? "" : "input-only")) + ); + + /* to ensure to not miss important information some additional check against + * attributes which may silently work on X11 */ + if ((attributes_mask & GDK_WA_X) != 0) + { + g_assert (attributes->x == window->x); + remaining_mask &= ~GDK_WA_X; + } + if ((attributes_mask & GDK_WA_Y) != 0) + { + g_assert (attributes->y == window->y); + remaining_mask &= ~GDK_WA_Y; + } + if ((attributes_mask & GDK_WA_NOREDIR) != 0) + remaining_mask &= ~GDK_WA_NOREDIR; + + if ((remaining_mask & ~(GDK_WA_WMCLASS|GDK_WA_VISUAL|GDK_WA_CURSOR|GDK_WA_TITLE|GDK_WA_TYPE_HINT)) != 0) + g_warning ("_gdk_window_impl_new: uexpected attribute 0x%X", + remaining_mask & ~(GDK_WA_WMCLASS|GDK_WA_VISUAL|GDK_WA_CURSOR|GDK_WA_TITLE|GDK_WA_TYPE_HINT)); hparent = GDK_WINDOW_HWND (real_parent); impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); - private->impl = (GdkDrawable *)impl; - draw_impl = GDK_DRAWABLE_IMPL_WIN32 (impl); - draw_impl->wrapper = GDK_DRAWABLE (window); + impl->wrapper = GDK_WINDOW (window); + window->impl = GDK_WINDOW_IMPL (impl); - // XXX: xattributes_mask = 0 - -#if 0 if (attributes_mask & GDK_WA_VISUAL) - visual = attributes->visual; - else - visual = gdk_visual_get_system (); -#endif + g_assert (gdk_screen_get_system_visual (screen) == attributes->visual); -#if 0 - impl->width = (attributes->width > 1) ? (attributes->width) : (1); - impl->height = (attributes->height > 1) ? (attributes->height) : (1); -#endif impl->extension_events_selected = FALSE; - // XXX ? - if (attributes->wclass == GDK_INPUT_OUTPUT) + /* wclass is not any longer set always, but if is ... */ + if ((attributes_mask & GDK_WA_WMCLASS) == GDK_WA_WMCLASS) + g_assert ((attributes->wclass == GDK_INPUT_OUTPUT) == !window->input_only); + + if (!window->input_only) { dwExStyle = 0; - - private->input_only = FALSE; } else { @@ -463,27 +495,25 @@ _gdk_window_impl_new (GdkWindow *window, * to work well enough for the actual use cases in gtk. */ dwExStyle = WS_EX_TRANSPARENT; - private->depth = 0; - private->input_only = TRUE; GDK_NOTE (MISC, g_print ("... GDK_INPUT_ONLY\n")); } - switch (private->window_type) + switch (window->window_type) { case GDK_WINDOW_TOPLEVEL: - if (GDK_WINDOW_TYPE (private->parent) != GDK_WINDOW_ROOT) + if (GDK_WINDOW_TYPE (window->parent) != GDK_WINDOW_ROOT) { /* The common code warns for this case. */ hparent = GetDesktopWindow (); } /* Children of foreign windows aren't toplevel windows */ - if (GDK_WINDOW_TYPE (orig_parent) == GDK_WINDOW_FOREIGN) + if (GDK_WINDOW_TYPE (real_parent) == GDK_WINDOW_FOREIGN) { dwStyle = WS_CHILDWINDOW | WS_CLIPCHILDREN; } else { - if (private->window_type == GDK_WINDOW_TOPLEVEL) + if (window->window_type == GDK_WINDOW_TOPLEVEL) dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN; else dwStyle = WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU | WS_CAPTION | WS_THICKFRAME | WS_CLIPCHILDREN; @@ -510,21 +540,29 @@ _gdk_window_impl_new (GdkWindow *window, g_assert_not_reached (); } - if (private->window_type != GDK_WINDOW_CHILD) + if (window->window_type != GDK_WINDOW_CHILD) { - rect.left = rect.top = 0; - rect.right = private->width; - rect.bottom = private->height; + rect.left = window->x; + rect.top = window->y; + rect.right = window->width; + rect.bottom = window->height; AdjustWindowRectEx (&rect, dwStyle, FALSE, dwExStyle); + /* non child windows are placed by the OS/window manager */ + x = y = CW_USEDEFAULT; + window_width = rect.right - rect.left; window_height = rect.bottom - rect.top; } else { - window_width = private->width; - window_height = private->height; + /* adjust position relative to real_parent */ + window_width = window->width; + window_height = window->height; + /* use given position for initial placement, native coordinates */ + x = window->x + window->parent->abs_x - offset_x; + y = window->y + window->parent->abs_y - offset_y; } if (attributes_mask & GDK_WA_TITLE) @@ -534,20 +572,15 @@ _gdk_window_impl_new (GdkWindow *window, if (!title || !*title) title = ""; - private->event_mask = GDK_STRUCTURE_MASK | attributes->event_mask; + window->event_mask = GDK_STRUCTURE_MASK | event_mask; if (attributes_mask & GDK_WA_TYPE_HINT) - impl->type_hint = attributes->type_hint; - else - impl->type_hint = GDK_WINDOW_TYPE_HINT_NORMAL; + gdk_window_set_type_hint (window, attributes->type_hint); if (impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY) dwExStyle |= WS_EX_TOOLWINDOW; - if (private->parent) - private->parent->children = g_list_prepend (private->parent->children, window); - - klass = RegisterGdkClass (private->window_type, impl->type_hint); + klass = RegisterGdkClass (window->window_type, impl->type_hint); wtitle = g_utf8_to_utf16 (title, -1, NULL, NULL, NULL); @@ -555,9 +588,8 @@ _gdk_window_impl_new (GdkWindow *window, MAKEINTRESOURCEW (klass), wtitle, dwStyle, - ((attributes_mask & GDK_WA_X) ? - private->x - offset_x : CW_USEDEFAULT), - private->y - offset_y, + x, + y, window_width, window_height, hparent, NULL, @@ -580,7 +612,7 @@ _gdk_window_impl_new (GdkWindow *window, gdk_win32_handle_table_insert (&GDK_WINDOW_HWND (window), window); # else /* the old behaviour, but with warning */ - draw_impl->handle = hwndNew; + impl->handle = hwndNew; # endif } @@ -591,9 +623,8 @@ _gdk_window_impl_new (GdkWindow *window, GDK_NOTE (MISC, g_print ("... \"%s\" %dx%d@%+d%+d %p = %p\n", title, window_width, window_height, - ((attributes_mask & GDK_WA_X) ? - private->x - offset_x: CW_USEDEFAULT), - private->y - offset_y, + window->x - offset_x, + window->y - offset_y, hparent, GDK_WINDOW_HWND (window))); @@ -602,29 +633,26 @@ _gdk_window_impl_new (GdkWindow *window, g_free (wtitle); - if (draw_impl->handle == NULL) + if (impl->handle == NULL) { WIN32_API_FAILED ("CreateWindowExW"); g_object_unref (window); return; } -// if (!from_set_skip_taskbar_hint && private->window_type == GDK_WINDOW_TEMP) +// if (!from_set_skip_taskbar_hint && window->window_type == GDK_WINDOW_TEMP) // gdk_window_set_skip_taskbar_hint (window, TRUE); - gdk_window_set_cursor (window, ((attributes_mask & GDK_WA_CURSOR) ? - (attributes->cursor) : - NULL)); + if (attributes_mask & GDK_WA_CURSOR) + gdk_window_set_cursor (window, attributes->cursor); } GdkWindow * -gdk_window_foreign_new_for_display (GdkDisplay *display, - GdkNativeWindow anid) +gdk_win32_window_foreign_new_for_display (GdkDisplay *display, + GdkNativeWindow anid) { GdkWindow *window; - GdkWindowObject *private; GdkWindowImplWin32 *impl; - GdkDrawableImplWin32 *draw_impl; HANDLE parent; RECT rect; @@ -632,77 +660,67 @@ gdk_window_foreign_new_for_display (GdkDisplay *display, g_return_val_if_fail (display == _gdk_display, NULL); - window = g_object_new (GDK_TYPE_WINDOW, NULL); - private = (GdkWindowObject *)window; - private->visual = gdk_screen_get_system_visual (_gdk_screen); - private->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); - draw_impl = GDK_DRAWABLE_IMPL_WIN32 (private->impl); - draw_impl->wrapper = GDK_DRAWABLE (window); + window = _gdk_display_create_window (display); + window->visual = gdk_screen_get_system_visual (_gdk_screen); + window->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_WIN32, NULL); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + impl->wrapper = window; parent = GetParent ((HWND)anid); - private->parent = gdk_win32_handle_table_lookup ((GdkNativeWindow) parent); - if (!private->parent || GDK_WINDOW_TYPE (private->parent) == GDK_WINDOW_FOREIGN) - private->parent = (GdkWindowObject *)_gdk_root; + window->parent = gdk_win32_handle_table_lookup ((GdkNativeWindow) parent); + if (!window->parent || GDK_WINDOW_TYPE (window->parent) == GDK_WINDOW_FOREIGN) + window->parent = _gdk_root; - private->parent->children = g_list_prepend (private->parent->children, window); + window->parent->children = g_list_prepend (window->parent->children, window); - draw_impl->handle = (HWND) anid; GetClientRect ((HWND) anid, &rect); point.x = rect.left; point.y = rect.right; ClientToScreen ((HWND) anid, &point); if (parent != GetDesktopWindow ()) ScreenToClient (parent, &point); - private->x = point.x; - private->y = point.y; - private->width = rect.right - rect.left; - private->height = rect.bottom - rect.top; - private->window_type = GDK_WINDOW_FOREIGN; - private->destroyed = FALSE; - private->event_mask = GDK_ALL_EVENTS_MASK; /* XXX */ + window->x = point.x; + window->y = point.y; + window->width = rect.right - rect.left; + window->height = rect.bottom - rect.top; + window->window_type = GDK_WINDOW_FOREIGN; + window->destroyed = FALSE; + window->event_mask = GDK_ALL_EVENTS_MASK; /* XXX */ if (IsWindowVisible ((HWND) anid)) - private->state &= (~GDK_WINDOW_STATE_WITHDRAWN); + window->state &= (~GDK_WINDOW_STATE_WITHDRAWN); else - private->state |= GDK_WINDOW_STATE_WITHDRAWN; + window->state |= GDK_WINDOW_STATE_WITHDRAWN; if (GetWindowLong ((HWND)anid, GWL_EXSTYLE) & WS_EX_TOPMOST) - private->state |= GDK_WINDOW_STATE_ABOVE; + window->state |= GDK_WINDOW_STATE_ABOVE; else - private->state &= (~GDK_WINDOW_STATE_ABOVE); - private->state &= (~GDK_WINDOW_STATE_BELOW); - private->viewable = TRUE; + window->state &= (~GDK_WINDOW_STATE_ABOVE); + window->state &= (~GDK_WINDOW_STATE_BELOW); + window->viewable = TRUE; - private->depth = gdk_visual_get_system ()->depth; + window->depth = gdk_visual_get_system ()->depth; g_object_ref (window); gdk_win32_handle_table_insert (&GDK_WINDOW_HWND (window), window); - GDK_NOTE (MISC, g_print ("gdk_window_foreign_new_for_display: %p: %s@%+d%+d\n", + GDK_NOTE (MISC, g_print ("gdk_win32_window_foreign_new_for_display: %p: %s@%+d%+d\n", (HWND) anid, - _gdk_win32_drawable_description (window), - private->x, private->y)); + _gdk_win32_window_description (window), + window->x, window->y)); return window; } -GdkWindow* -gdk_window_lookup (GdkNativeWindow hwnd) +static void +gdk_win32_window_destroy (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy) { - return (GdkWindow*) gdk_win32_handle_table_lookup (hwnd); -} - -void -_gdk_win32_window_destroy (GdkWindow *window, - gboolean recursing, - gboolean foreign_destroy) -{ - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplWin32 *window_impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + GdkWindowImplWin32 *window_impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GSList *tmp; g_return_if_fail (GDK_IS_WINDOW (window)); - GDK_NOTE (MISC, g_print ("_gdk_win32_window_destroy: %p\n", + GDK_NOTE (MISC, g_print ("gdk_win32_window_destroy: %p\n", GDK_WINDOW_HWND (window))); /* Remove ourself from the modal stack */ @@ -713,7 +731,7 @@ _gdk_win32_window_destroy (GdkWindow *window, while (tmp != NULL) { GdkWindow *child = tmp->data; - GdkWindowImplWin32 *child_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (child)->impl); + GdkWindowImplWin32 *child_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW (child)->impl); child_impl->transient_owner = NULL; tmp = g_slist_next (tmp); @@ -729,9 +747,7 @@ _gdk_win32_window_destroy (GdkWindow *window, if (!recursing && !foreign_destroy) { - _gdk_win32_drawable_finish (private->impl); - - private->destroyed = TRUE; + window->destroyed = TRUE; DestroyWindow (GDK_WINDOW_HWND (window)); } @@ -750,8 +766,8 @@ gdk_win32_window_resize_cairo_surface (GdkWindow *window, return NULL; } -void -_gdk_windowing_window_destroy_foreign (GdkWindow *window) +static void +gdk_win32_window_destroy_foreign (GdkWindow *window) { /* It's somebody else's window, but in our hierarchy, so reparent it * to the desktop, and then try to destroy it. @@ -764,8 +780,8 @@ _gdk_windowing_window_destroy_foreign (GdkWindow *window) /* This function is called when the window really gone. */ -void -gdk_window_destroy_notify (GdkWindow *window) +static void +gdk_win32_window_destroy_notify (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -806,11 +822,9 @@ adjust_for_gravity_hints (GdkWindow *window, gint *x, gint *y) { - GdkWindowObject *obj; - GdkWindowImplWin32 *impl; + GdkWindowImplWin32 *impl; - obj = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_WIN32 (obj->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); if (impl->hint_flags & GDK_HINT_WIN_GRAVITY) { @@ -822,14 +836,14 @@ adjust_for_gravity_hints (GdkWindow *window, case GDK_GRAVITY_CENTER: case GDK_GRAVITY_SOUTH: *x -= (outer_rect->right - outer_rect->left) / 2; - *x += obj->width / 2; + *x += window->width / 2; break; case GDK_GRAVITY_SOUTH_EAST: case GDK_GRAVITY_EAST: case GDK_GRAVITY_NORTH_EAST: *x -= outer_rect->right - outer_rect->left; - *x += obj->width; + *x += window->width; break; case GDK_GRAVITY_STATIC: @@ -846,14 +860,14 @@ adjust_for_gravity_hints (GdkWindow *window, case GDK_GRAVITY_CENTER: case GDK_GRAVITY_EAST: *y -= (outer_rect->bottom - outer_rect->top) / 2; - *y += obj->height / 2; + *y += window->height / 2; break; case GDK_GRAVITY_SOUTH_WEST: case GDK_GRAVITY_SOUTH: case GDK_GRAVITY_SOUTH_EAST: *y -= outer_rect->bottom - outer_rect->top; - *y += obj->height; + *y += window->height; break; case GDK_GRAVITY_STATIC: @@ -876,20 +890,17 @@ show_window_internal (GdkWindow *window, gboolean raise, gboolean deiconify) { - GdkWindowObject *private; HWND old_active_window; gboolean focus_on_map = TRUE; DWORD exstyle; HWND top; - private = (GdkWindowObject *) window; - - if (private->destroyed) + if (window->destroyed) return; GDK_NOTE (MISC, g_print ("show_window_internal: %p: %s%s%s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (private->state), + _gdk_win32_window_state_to_string (window->state), (raise ? " raise" : ""), (deiconify ? " deiconify" : ""))); @@ -898,21 +909,21 @@ show_window_internal (GdkWindow *window, */ if (!deiconify && !GDK_WINDOW_IS_MAPPED (window) && - (private->state & GDK_WINDOW_STATE_ICONIFIED)) + (window->state & GDK_WINDOW_STATE_ICONIFIED)) { ShowWindow (GDK_WINDOW_HWND (window), SW_MINIMIZE); return; } /* If asked to just show an iconified window, do nothing. */ - if (!deiconify && (private->state & GDK_WINDOW_STATE_ICONIFIED)) + if (!deiconify && (window->state & GDK_WINDOW_STATE_ICONIFIED)) return; /* If asked to deiconify an already noniconified window, do * nothing. (Especially, don't cause the window to rise and * activate. There are different calls for that.) */ - if (deiconify && !(private->state & GDK_WINDOW_STATE_ICONIFIED)) + if (deiconify && !(window->state & GDK_WINDOW_STATE_ICONIFIED)) return; /* If asked to show (but not raise) a window that is already @@ -928,15 +939,15 @@ show_window_internal (GdkWindow *window, gdk_synthesize_window_state (window, GDK_WINDOW_STATE_WITHDRAWN, 0); - focus_on_map = private->focus_on_map; + focus_on_map = window->focus_on_map; } exstyle = GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE); - if (private->state & GDK_WINDOW_STATE_BELOW) + if (window->state & GDK_WINDOW_STATE_BELOW) exstyle &= (~WS_EX_TOPMOST); - if (private->state & GDK_WINDOW_STATE_ABOVE) + if (window->state & GDK_WINDOW_STATE_ABOVE) exstyle |= WS_EX_TOPMOST; if (exstyle & WS_EX_TOPMOST) @@ -963,15 +974,15 @@ show_window_internal (GdkWindow *window, old_active_window = GetActiveWindow (); - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) { gdk_window_fullscreen (window); } - else if (private->state & GDK_WINDOW_STATE_MAXIMIZED) + else if (window->state & GDK_WINDOW_STATE_MAXIMIZED) { ShowWindow (GDK_WINDOW_HWND (window), SW_MAXIMIZE); } - else if (private->state & GDK_WINDOW_STATE_ICONIFIED) + else if (window->state & GDK_WINDOW_STATE_ICONIFIED) { ShowWindow (GDK_WINDOW_HWND (window), SW_RESTORE); } @@ -992,7 +1003,7 @@ show_window_internal (GdkWindow *window, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); else if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL) { - if (focus_on_map && private->accept_focus) + if (focus_on_map && window->accept_focus) { SetForegroundWindow (GDK_WINDOW_HWND (window)); if (top == HWND_TOPMOST) @@ -1028,15 +1039,12 @@ gdk_win32_window_show (GdkWindow *window, static void gdk_win32_window_hide (GdkWindow *window) { - GdkWindowObject *private; - - private = (GdkWindowObject*) window; - if (private->destroyed) + if (window->destroyed) return; GDK_NOTE (MISC, g_print ("gdk_win32_window_hide: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (private->state))); + _gdk_win32_window_state_to_string (window->state))); if (GDK_WINDOW_IS_MAPPED (window)) gdk_synthesize_window_state (window, @@ -1063,16 +1071,13 @@ gdk_win32_window_hide (GdkWindow *window) static void gdk_win32_window_withdraw (GdkWindow *window) { - GdkWindowObject *private; - - private = (GdkWindowObject*) window; - if (private->destroyed) + if (window->destroyed) return; GDK_NOTE (MISC, g_print ("gdk_win32_window_withdraw: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (private->state))); - + _gdk_win32_window_state_to_string (window->state))); + gdk_window_hide (window); /* ??? */ } @@ -1080,7 +1085,6 @@ static void gdk_win32_window_move (GdkWindow *window, gint x, gint y) { - GdkWindowObject *private = (GdkWindowObject *)window; GdkWindowImplWin32 *impl; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -1091,24 +1095,24 @@ gdk_win32_window_move (GdkWindow *window, GDK_NOTE (MISC, g_print ("gdk_win32_window_move: %p: %+d%+d\n", GDK_WINDOW_HWND (window), x, y)); - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) return; - /* Don't check GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD. + /* Don't check GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD. * Foreign windows (another app's windows) might be children of our * windows! Especially in the case of gtkplug/socket. */ if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ()) { - _gdk_window_move_resize_child (window, x, y, private->width, private->height); + _gdk_window_move_resize_child (window, x, y, window->width, window->height); } else { RECT outer_rect; - get_outer_rect (window, private->width, private->height, &outer_rect); + get_outer_rect (window, window->width, window->height, &outer_rect); adjust_for_gravity_hints (window, &outer_rect, &x, &y); @@ -1127,7 +1131,6 @@ static void gdk_win32_window_resize (GdkWindow *window, gint width, gint height) { - GdkWindowObject *private = (GdkWindowObject*) window; GdkWindowImplWin32 *impl; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -1143,14 +1146,14 @@ gdk_win32_window_resize (GdkWindow *window, GDK_NOTE (MISC, g_print ("gdk_win32_window_resize: %p: %dx%d\n", GDK_WINDOW_HWND (window), width, height)); - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) return; if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ()) { - _gdk_window_move_resize_child (window, private->x, private->y, width, height); + _gdk_window_move_resize_child (window, window->x, window->y, width, height); } else { @@ -1169,7 +1172,7 @@ gdk_win32_window_resize (GdkWindow *window, outer_rect.right - outer_rect.left, outer_rect.bottom - outer_rect.top, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER)); - private->resize_count += 1; + window->resize_count += 1; } } @@ -1180,7 +1183,6 @@ gdk_win32_window_move_resize_internal (GdkWindow *window, gint width, gint height) { - GdkWindowObject *private; GdkWindowImplWin32 *impl; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -1193,10 +1195,9 @@ gdk_win32_window_move_resize_internal (GdkWindow *window, if (height < 1) height = 1; - private = GDK_WINDOW_OBJECT (window); - impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); - if (private->state & GDK_WINDOW_STATE_FULLSCREEN) + if (window->state & GDK_WINDOW_STATE_FULLSCREEN) return; GDK_NOTE (MISC, g_print ("gdk_win32_window_move_resize: %p: %dx%d@%+d%+d\n", @@ -1261,9 +1262,8 @@ gdk_win32_window_reparent (GdkWindow *window, gint x, gint y) { - GdkWindowObject *window_private; - GdkWindowObject *parent_private; - GdkWindowObject *old_parent_private; + GdkWindow *parent; + GdkWindow *old_parent; GdkWindowImplWin32 *impl; gboolean was_toplevel; LONG style; @@ -1271,10 +1271,9 @@ gdk_win32_window_reparent (GdkWindow *window, if (!new_parent) new_parent = _gdk_root; - window_private = (GdkWindowObject*) window; - old_parent_private = (GdkWindowObject *) window_private->parent; - parent_private = (GdkWindowObject*) new_parent; - impl = GDK_WINDOW_IMPL_WIN32 (window_private->impl); + old_parent = window->parent; + parent = new_parent; + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GDK_NOTE (MISC, g_print ("gdk_win32_window_reparent: %p: %p\n", GDK_WINDOW_HWND (window), @@ -1304,7 +1303,7 @@ gdk_win32_window_reparent (GdkWindow *window, GDK_WINDOW_HWND (new_parent))); API_CALL (MoveWindow, (GDK_WINDOW_HWND (window), - x, y, window_private->width, window_private->height, TRUE)); + x, y, window->width, window->height, TRUE)); /* From here on, we treat parents of type GDK_WINDOW_FOREIGN like * the root window @@ -1312,7 +1311,7 @@ gdk_win32_window_reparent (GdkWindow *window, if (GDK_WINDOW_TYPE (new_parent) == GDK_WINDOW_FOREIGN) new_parent = _gdk_root; - window_private->parent = (GdkWindowObject *)new_parent; + window->parent = new_parent; /* Switch the window type as appropriate */ @@ -1338,11 +1337,11 @@ gdk_win32_window_reparent (GdkWindow *window, } } - if (old_parent_private) - old_parent_private->children = - g_list_remove (old_parent_private->children, window); + if (old_parent) + old_parent->children = + g_list_remove (old_parent->children, window); - parent_private->children = g_list_prepend (parent_private->children, window); + parent->children = g_list_prepend (parent->children, window); return FALSE; } @@ -1359,7 +1358,7 @@ gdk_win32_window_raise (GdkWindow *window) API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE)); - else if (((GdkWindowObject *)window)->accept_focus) + else if (window->accept_focus) API_CALL (BringWindowToTop, (GDK_WINDOW_HWND (window))); else API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), HWND_TOP, @@ -1385,8 +1384,8 @@ gdk_win32_window_lower (GdkWindow *window) } } -void -gdk_window_set_urgency_hint (GdkWindow *window, +static void +gdk_win32_window_set_urgency_hint (GdkWindow *window, gboolean urgent) { FLASHWINFO flashwinfo; @@ -1426,12 +1425,12 @@ get_effective_window_decorations (GdkWindow *window, { GdkWindowImplWin32 *impl; - impl = (GdkWindowImplWin32 *)((GdkWindowObject *)window)->impl; + impl = (GdkWindowImplWin32 *)window->impl; if (gdk_window_get_decorations (window, decoration)) return TRUE; - if (((GdkWindowObject *) window)->window_type != GDK_WINDOW_TOPLEVEL) + if (window->window_type != GDK_WINDOW_TOPLEVEL) { return FALSE; } @@ -1509,8 +1508,8 @@ get_effective_window_decorations (GdkWindow *window, return FALSE; } -void -gdk_window_set_geometry_hints (GdkWindow *window, +static void +gdk_win32_window_set_geometry_hints (GdkWindow *window, const GdkGeometry *geometry, GdkWindowHints geom_mask) { @@ -1524,7 +1523,7 @@ gdk_window_set_geometry_hints (GdkWindow *window, GDK_NOTE (MISC, g_print ("gdk_window_set_geometry_hints: %p\n", GDK_WINDOW_HWND (window))); - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); impl->hint_flags = geom_mask; impl->hints = *geometry; @@ -1570,8 +1569,8 @@ gdk_window_set_geometry_hints (GdkWindow *window, update_style_bits (window); } -void -gdk_window_set_title (GdkWindow *window, +static void +gdk_win32_window_set_title (GdkWindow *window, const gchar *title) { wchar_t *wtitle; @@ -1598,8 +1597,8 @@ gdk_window_set_title (GdkWindow *window, GDK_NOTE (MISC_OR_EVENTS, g_free ((char *) title)); } -void -gdk_window_set_role (GdkWindow *window, +static void +gdk_win32_window_set_role (GdkWindow *window, const gchar *role) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -1610,12 +1609,12 @@ gdk_window_set_role (GdkWindow *window, /* XXX */ } -void -gdk_window_set_transient_for (GdkWindow *window, +static void +gdk_win32_window_set_transient_for (GdkWindow *window, GdkWindow *parent) { HWND window_id, parent_id; - GdkWindowImplWin32 *window_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + GdkWindowImplWin32 *window_impl = GDK_WINDOW_IMPL_WIN32 (window->impl); GdkWindowImplWin32 *parent_impl = NULL; GSList *item; @@ -1636,7 +1635,7 @@ gdk_window_set_transient_for (GdkWindow *window, return; } - if (((GdkWindowObject *) window)->window_type == GDK_WINDOW_CHILD) + if (window->window_type == GDK_WINDOW_CHILD) { GDK_NOTE (MISC, g_print ("... a child window!\n")); return; @@ -1644,7 +1643,7 @@ gdk_window_set_transient_for (GdkWindow *window, if (parent == NULL) { - GdkWindowImplWin32 *trans_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window_impl->transient_owner)->impl); + GdkWindowImplWin32 *trans_impl = GDK_WINDOW_IMPL_WIN32 (window_impl->transient_owner->impl); if (trans_impl->transient_children != NULL) { item = g_slist_find (trans_impl->transient_children, window); @@ -1664,7 +1663,7 @@ gdk_window_set_transient_for (GdkWindow *window, } else { - parent_impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (parent)->impl); + parent_impl = GDK_WINDOW_IMPL_WIN32 (parent->impl); parent_impl->transient_children = g_slist_append (parent_impl->transient_children, window); g_object_ref (G_OBJECT (window)); @@ -1719,7 +1718,7 @@ _gdk_modal_current (void) { GSList *tmp = modal_window_stack; - while (tmp != NULL && !GDK_WINDOW_IS_MAPPED (tmp->data)) + while (tmp != NULL && !GDK_WINDOW_IS_MAPPED (GDK_WINDOW (tmp->data))) { tmp = g_slist_next (tmp); } @@ -1744,12 +1743,12 @@ gdk_win32_window_set_device_cursor (GdkWindow *window, GdkCursor *cursor) { GdkWindowImplWin32 *impl; - GdkCursorPrivate *cursor_private; + GdkWin32Cursor *cursor_private; HCURSOR hcursor; HCURSOR hprevcursor; - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); - cursor_private = (GdkCursorPrivate*) cursor; + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + cursor_private = (GdkWin32Cursor*) cursor; if (GDK_WINDOW_DESTROYED (window)) return; @@ -1800,8 +1799,7 @@ gdk_win32_window_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth) + gint *height) { if (!window) window = _gdk_root; @@ -1848,8 +1846,6 @@ gdk_win32_window_get_geometry (GdkWindow *window, *width = rect.right - rect.left; if (height) *height = rect.bottom - rect.top; - if (depth) - *depth = gdk_window_get_visual (window)->depth; GDK_NOTE (MISC, g_print ("gdk_win32_window_get_geometry: %p: %ldx%ldx%d@%+ld%+ld\n", GDK_WINDOW_HWND (window), @@ -1903,8 +1899,8 @@ gdk_win32_window_restack_toplevel (GdkWindow *window, // ### TODO } -void -gdk_window_get_root_origin (GdkWindow *window, +static void +gdk_win32_window_get_root_origin (GdkWindow *window, gint *x, gint *y) { @@ -1924,19 +1920,16 @@ gdk_window_get_root_origin (GdkWindow *window, GDK_WINDOW_HWND (window), rect.x, rect.y)); } -void -gdk_window_get_frame_extents (GdkWindow *window, +static void +gdk_win32_window_get_frame_extents (GdkWindow *window, GdkRectangle *rect) { - GdkWindowObject *private; HWND hwnd; RECT r; g_return_if_fail (GDK_IS_WINDOW (window)); g_return_if_fail (rect != NULL); - private = GDK_WINDOW_OBJECT (window); - rect->x = 0; rect->y = 0; rect->width = 1; @@ -1948,8 +1941,8 @@ gdk_window_get_frame_extents (GdkWindow *window, /* FIXME: window is documented to be a toplevel GdkWindow, so is it really * necessary to walk its parent chain? */ - while (private->parent && ((GdkWindowObject*) private->parent)->parent) - private = (GdkWindowObject*) private->parent; + while (window->parent && window->parent->parent) + window = window->parent; hwnd = GDK_WINDOW_HWND (window); API_CALL (GetWindowRect, (hwnd, &r)); @@ -2004,22 +1997,6 @@ _gdk_windowing_get_device_state (GdkDisplay *display, mask); } -void -gdk_display_warp_pointer (GdkDisplay *display, - GdkScreen *screen, - gint x, - gint y) -{ - GdkDeviceManagerWin32 *device_manager; - - g_return_if_fail (display == _gdk_display); - g_return_if_fail (screen == _gdk_screen); - - device_manager = GDK_DEVICE_MANAGER_WIN32 (gdk_display_get_device_manager (display)); - GDK_DEVICE_GET_CLASS (device_manager->core_pointer)->warp (device_manager->core_pointer, - screen, x, y); -} - void gdk_display_warp_device (GdkDisplay *display, GdkDevice *device, @@ -2052,7 +2029,7 @@ gdk_win32_window_get_events (GdkWindow *window) if (GDK_WINDOW_DESTROYED (window)) return 0; - return GDK_WINDOW_OBJECT (window)->event_mask; + return window->event_mask; } static void @@ -2063,7 +2040,7 @@ gdk_win32_window_set_events (GdkWindow *window, * set it here, too. Not that I know or remember why it is * necessary, will have to test some day. */ - GDK_WINDOW_OBJECT (window)->event_mask = GDK_STRUCTURE_MASK | event_mask; + window->event_mask = GDK_STRUCTURE_MASK | event_mask; } static void @@ -2090,8 +2067,8 @@ do_shape_combine_region (GdkWindow *window, SetWindowRgn (GDK_WINDOW_HWND (window), hrgn, TRUE); } -void -gdk_window_set_override_redirect (GdkWindow *window, +static void +gdk_win32_window_set_override_redirect (GdkWindow *window, gboolean override_redirect) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2099,40 +2076,32 @@ gdk_window_set_override_redirect (GdkWindow *window, g_warning ("gdk_window_set_override_redirect not implemented"); } -void -gdk_window_set_accept_focus (GdkWindow *window, +static void +gdk_win32_window_set_accept_focus (GdkWindow *window, gboolean accept_focus) { - GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); - private = (GdkWindowObject *)window; - accept_focus = accept_focus != FALSE; - if (private->accept_focus != accept_focus) - private->accept_focus = accept_focus; + if (window->accept_focus != accept_focus) + window->accept_focus = accept_focus; } -void -gdk_window_set_focus_on_map (GdkWindow *window, +static void +gdk_win32_window_set_focus_on_map (GdkWindow *window, gboolean focus_on_map) { - GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); - private = (GdkWindowObject *)window; - focus_on_map = focus_on_map != FALSE; - if (private->focus_on_map != focus_on_map) - private->focus_on_map = focus_on_map; + if (window->focus_on_map != focus_on_map) + window->focus_on_map = focus_on_map; } -void -gdk_window_set_icon_list (GdkWindow *window, +static void +gdk_win32_window_set_icon_list (GdkWindow *window, GList *pixbufs) { GdkPixbuf *pixbuf, *big_pixbuf, *small_pixbuf; @@ -2149,7 +2118,7 @@ gdk_window_set_icon_list (GdkWindow *window, if (GDK_WINDOW_DESTROYED (window)) return; - impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl); + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); /* ideal sizes for small and large icons */ big_w = GetSystemMetrics (SM_CXICON); @@ -2212,8 +2181,8 @@ gdk_window_set_icon_list (GdkWindow *window, impl->hicon_small = small_hicon; } -void -gdk_window_set_icon_name (GdkWindow *window, +static void +gdk_win32_window_set_icon_name (GdkWindow *window, const gchar *name) { /* In case I manage to confuse this again (or somebody else does): @@ -2241,8 +2210,8 @@ gdk_window_set_icon_name (GdkWindow *window, #endif } -GdkWindow * -gdk_window_get_group (GdkWindow *window) +static GdkWindow * +gdk_win32_window_get_group (GdkWindow *window) { g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); g_return_val_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD, NULL); @@ -2255,8 +2224,8 @@ gdk_window_get_group (GdkWindow *window) return NULL; } -void -gdk_window_set_group (GdkWindow *window, +static void +gdk_win32_window_set_group (GdkWindow *window, GdkWindow *leader) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2288,8 +2257,7 @@ update_single_bit (LONG *style, static void update_style_bits (GdkWindow *window) { - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowImplWin32 *impl = (GdkWindowImplWin32 *)private->impl; + GdkWindowImplWin32 *impl = (GdkWindowImplWin32 *)window->impl; GdkWMDecoration decorations; LONG old_style, new_style, old_exstyle, new_exstyle; gboolean all; @@ -2305,7 +2273,7 @@ update_style_bits (GdkWindow *window) new_style = old_style; new_exstyle = old_exstyle; - if (private->window_type == GDK_WINDOW_TEMP || + if (window->window_type == GDK_WINDOW_TEMP || impl->type_hint == GDK_WINDOW_TYPE_HINT_UTILITY) new_exstyle |= WS_EX_TOOLWINDOW; else @@ -2411,8 +2379,8 @@ get_decorations_quark () return quark; } -void -gdk_window_set_decorations (GdkWindow *window, +static void +gdk_win32_window_set_decorations (GdkWindow *window, GdkWMDecoration decorations) { GdkWMDecoration* decorations_copy; @@ -2436,8 +2404,8 @@ gdk_window_set_decorations (GdkWindow *window, update_style_bits (window); } -gboolean -gdk_window_get_decorations (GdkWindow *window, +static gboolean +gdk_win32_window_get_decorations (GdkWindow *window, GdkWMDecoration *decorations) { GdkWMDecoration* decorations_set; @@ -2462,8 +2430,8 @@ get_functions_quark () return quark; } -void -gdk_window_set_functions (GdkWindow *window, +static void +gdk_win32_window_set_functions (GdkWindow *window, GdkWMFunction functions) { GdkWMFunction* functions_copy; @@ -2508,8 +2476,8 @@ gdk_win32_window_set_static_gravities (GdkWindow *window, return !use_static; } -void -gdk_window_begin_resize_drag (GdkWindow *window, +static void +gdk_win32_window_begin_resize_drag (GdkWindow *window, GdkWindowEdge edge, gint button, gint root_x, @@ -2577,8 +2545,8 @@ gdk_window_begin_resize_drag (GdkWindow *window, MAKELPARAM (root_x - _gdk_offset_x, root_y - _gdk_offset_y)); } -void -gdk_window_begin_move_drag (GdkWindow *window, +static void +gdk_win32_window_begin_move_drag (GdkWindow *window, gint button, gint root_x, gint root_y, @@ -2611,8 +2579,8 @@ gdk_window_begin_move_drag (GdkWindow *window, /* * Setting window states */ -void -gdk_window_iconify (GdkWindow *window) +static void +gdk_win32_window_iconify (GdkWindow *window) { HWND old_active_window; @@ -2623,7 +2591,7 @@ gdk_window_iconify (GdkWindow *window) GDK_NOTE (MISC, g_print ("gdk_window_iconify: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (((GdkWindowObject *) window)->state))); + _gdk_win32_window_state_to_string (window->state))); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2640,8 +2608,8 @@ gdk_window_iconify (GdkWindow *window) } } -void -gdk_window_deiconify (GdkWindow *window) +static void +gdk_win32_window_deiconify (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2650,7 +2618,7 @@ gdk_window_deiconify (GdkWindow *window) GDK_NOTE (MISC, g_print ("gdk_window_deiconify: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (((GdkWindowObject *) window)->state))); + _gdk_win32_window_state_to_string (window->state))); if (GDK_WINDOW_IS_MAPPED (window)) { @@ -2664,8 +2632,8 @@ gdk_window_deiconify (GdkWindow *window) } } -void -gdk_window_stick (GdkWindow *window) +static void +gdk_win32_window_stick (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2675,8 +2643,8 @@ gdk_window_stick (GdkWindow *window) /* FIXME: Do something? */ } -void -gdk_window_unstick (GdkWindow *window) +static void +gdk_win32_window_unstick (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2686,8 +2654,8 @@ gdk_window_unstick (GdkWindow *window) /* FIXME: Do something? */ } -void -gdk_window_maximize (GdkWindow *window) +static void +gdk_win32_window_maximize (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2696,7 +2664,7 @@ gdk_window_maximize (GdkWindow *window) GDK_NOTE (MISC, g_print ("gdk_window_maximize: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (((GdkWindowObject *) window)->state))); + _gdk_win32_window_state_to_string (window->state))); if (GDK_WINDOW_IS_MAPPED (window)) ShowWindow (GDK_WINDOW_HWND (window), SW_MAXIMIZE); @@ -2706,8 +2674,8 @@ gdk_window_maximize (GdkWindow *window) GDK_WINDOW_STATE_MAXIMIZED); } -void -gdk_window_unmaximize (GdkWindow *window) +static void +gdk_win32_window_unmaximize (GdkWindow *window) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2716,7 +2684,7 @@ gdk_window_unmaximize (GdkWindow *window) GDK_NOTE (MISC, g_print ("gdk_window_unmaximize: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (((GdkWindowObject *) window)->state))); + _gdk_win32_window_state_to_string (window->state))); if (GDK_WINDOW_IS_MAPPED (window)) ShowWindow (GDK_WINDOW_HWND (window), SW_RESTORE); @@ -2735,12 +2703,11 @@ struct _FullscreenInfo LONG style; }; -void -gdk_window_fullscreen (GdkWindow *window) +static void +gdk_win32_window_fullscreen (GdkWindow *window) { gint x, y, width, height; FullscreenInfo *fi; - GdkWindowObject *private = (GdkWindowObject *) window; HMONITOR monitor; MONITORINFO mi; @@ -2752,7 +2719,7 @@ gdk_window_fullscreen (GdkWindow *window) g_free (fi); else { - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); monitor = MonitorFromWindow (GDK_WINDOW_HWND (window), MONITOR_DEFAULTTONEAREST); mi.cbSize = sizeof (mi); @@ -2787,18 +2754,17 @@ gdk_window_fullscreen (GdkWindow *window) } } -void -gdk_window_unfullscreen (GdkWindow *window) +static void +gdk_win32_window_unfullscreen (GdkWindow *window) { FullscreenInfo *fi; - GdkWindowObject *private = (GdkWindowObject *) window; g_return_if_fail (GDK_IS_WINDOW (window)); fi = g_object_get_data (G_OBJECT (window), "fullscreen-info"); if (fi) { - GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (private->impl); + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); impl->hint_flags = fi->hint_flags; SetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE, fi->style); @@ -2814,8 +2780,8 @@ gdk_window_unfullscreen (GdkWindow *window) } } -void -gdk_window_set_keep_above (GdkWindow *window, +static void +gdk_win32_window_set_keep_above (GdkWindow *window, gboolean setting) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2840,8 +2806,8 @@ gdk_window_set_keep_above (GdkWindow *window, setting ? GDK_WINDOW_STATE_ABOVE : 0); } -void -gdk_window_set_keep_below (GdkWindow *window, +static void +gdk_win32_window_set_keep_below (GdkWindow *window, gboolean setting) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2866,9 +2832,9 @@ gdk_window_set_keep_below (GdkWindow *window, setting ? GDK_WINDOW_STATE_BELOW : 0); } -void -gdk_window_focus (GdkWindow *window, - guint32 timestamp) +static void +gdk_win32_window_focus (GdkWindow *window, + guint32 timestamp) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2877,21 +2843,19 @@ gdk_window_focus (GdkWindow *window, GDK_NOTE (MISC, g_print ("gdk_window_focus: %p: %s\n", GDK_WINDOW_HWND (window), - _gdk_win32_window_state_to_string (((GdkWindowObject *) window)->state))); + _gdk_win32_window_state_to_string (window->state))); - if (((GdkWindowObject *) window)->state & GDK_WINDOW_STATE_MAXIMIZED) + if (window->state & GDK_WINDOW_STATE_MAXIMIZED) ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWMAXIMIZED); else ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNORMAL); SetFocus (GDK_WINDOW_HWND (window)); } -void -gdk_window_set_modal_hint (GdkWindow *window, +static void +gdk_win32_window_set_modal_hint (GdkWindow *window, gboolean modal) { - GdkWindowObject *private; - g_return_if_fail (GDK_IS_WINDOW (window)); if (GDK_WINDOW_DESTROYED (window)) @@ -2901,12 +2865,10 @@ gdk_window_set_modal_hint (GdkWindow *window, GDK_WINDOW_HWND (window), modal ? "YES" : "NO")); - private = (GdkWindowObject*) window; - - if (modal == private->modal_hint) + if (modal == window->modal_hint) return; - private->modal_hint = modal; + window->modal_hint = modal; #if 0 /* Not sure about this one.. -- Cody */ @@ -2930,8 +2892,8 @@ gdk_window_set_modal_hint (GdkWindow *window, #endif } -void -gdk_window_set_skip_taskbar_hint (GdkWindow *window, +static void +gdk_win32_window_set_skip_taskbar_hint (GdkWindow *window, gboolean skips_taskbar) { static GdkWindow *owner = NULL; @@ -2977,8 +2939,8 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window, } } -void -gdk_window_set_skip_pager_hint (GdkWindow *window, +static void +gdk_win32_window_set_skip_pager_hint (GdkWindow *window, gboolean skips_pager) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2988,8 +2950,8 @@ gdk_window_set_skip_pager_hint (GdkWindow *window, skips_pager ? "YES" : "NO")); } -void -gdk_window_set_type_hint (GdkWindow *window, +static void +gdk_win32_window_set_type_hint (GdkWindow *window, GdkWindowTypeHint hint) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -3007,20 +2969,20 @@ gdk_window_set_type_hint (GdkWindow *window, g_enum_get_value (class, hint)->value_name); }G_STMT_END); - ((GdkWindowImplWin32 *)((GdkWindowObject *)window)->impl)->type_hint = hint; + ((GdkWindowImplWin32 *)window->impl)->type_hint = hint; update_style_bits (window); } -GdkWindowTypeHint -gdk_window_get_type_hint (GdkWindow *window) +static GdkWindowTypeHint +gdk_win32_window_get_type_hint (GdkWindow *window) { g_return_val_if_fail (GDK_IS_WINDOW (window), GDK_WINDOW_TYPE_HINT_NORMAL); if (GDK_WINDOW_DESTROYED (window)) return GDK_WINDOW_TYPE_HINT_NORMAL; - return GDK_WINDOW_IMPL_WIN32 (((GdkWindowObject *) window)->impl)->type_hint; + return GDK_WINDOW_IMPL_WIN32 (window->impl)->type_hint; } static HRGN @@ -3101,28 +3063,28 @@ gdk_win32_window_shape_combine_region (GdkWindow *window, } GdkWindow * -gdk_window_lookup_for_display (GdkDisplay *display, - GdkNativeWindow anid) +gdk_win32_window_lookup_for_display (GdkDisplay *display, + GdkNativeWindow anid) { g_return_val_if_fail (display == _gdk_display, NULL); - return gdk_window_lookup (anid); + return (GdkWindow*) gdk_win32_handle_table_lookup (anid); } -void -gdk_window_enable_synchronized_configure (GdkWindow *window) +static void +gdk_win32_window_enable_synchronized_configure (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); + /* nothing - no window manager to cooperate with */ } -void -gdk_window_configure_finished (GdkWindow *window) +static void +gdk_win32_window_configure_finished (GdkWindow *window) { - g_return_if_fail (GDK_IS_WINDOW (window)); + /* nothing - no window manager to cooperate with */ } -void -gdk_window_set_opacity (GdkWindow *window, +static void +gdk_win32_window_set_opacity (GdkWindow *window, gdouble opacity) { LONG exstyle; @@ -3159,11 +3121,6 @@ gdk_window_set_opacity (GdkWindow *window, } } -void -_gdk_windowing_window_set_composited (GdkWindow *window, gboolean composited) -{ -} - static cairo_region_t * gdk_win32_window_get_shape (GdkWindow *window) { @@ -3181,13 +3138,6 @@ gdk_win32_window_get_shape (GdkWindow *window) return NULL; } -static cairo_region_t * -_gdk_win32_window_get_input_shape (GdkWindow *window) -{ - /* CHECK: are these really supposed to be the same? */ - return _gdk_windowing_window_get_shape (window); -} - static gboolean _gdk_win32_window_queue_antiexpose (GdkWindow *window, cairo_region_t *area) @@ -3205,44 +3155,30 @@ _gdk_win32_window_queue_antiexpose (GdkWindow *window, return FALSE; } -/* FIXME: Tis function has never been compiled. - * Please make it work. */ +/* Gets called from gdwindow.c(do_move_region_bits_on_impl) + * and got tested with testgtk::big_window. Given the previous, + * untested implementation this one looks much too simple ;) + */ static void _gdk_win32_window_translate (GdkWindow *window, - cairo_region_t *area, + cairo_region_t *area, /* In impl window coords */ gint dx, gint dy) { - HRGN hrgn = CreateRectRgn (0, 0, 0, 0); - HDC hdc; - int ret; GdkRectangle extents; + RECT rect; cairo_region_get_extents (area, &extents); - hdc = _gdk_win32_drawable_acquire_dc (GDK_DRAWABLE (window)); - GDI_CALL (BitBlt, (hdc, extents.x, extents.y, extents.width, extents.height, - hdc, extents.x + dx, extents.y + dy, SRCCOPY)); + rect.left = extents.x - dx; + rect.top = extents.y - dy; + rect.right = rect.left + extents.width; + rect.bottom = rect.top + extents.height; + + API_CALL (ScrollWindowEx, (GDK_WINDOW_HWND (window), + dx, dy, &rect, + NULL, NULL, NULL, + SW_INVALIDATE)); - /* XXX: We probably need to get invalidations for the whole extents and not - * just the area as we BitBlt */ - ret = GetUpdateRgn (GDK_WINDOW_HWND (window), hrgn, FALSE); - if (ret == ERROR) - WIN32_API_FAILED ("GetUpdateRgn"); - else if (ret != NULLREGION) - { - /* Get current updateregion, move any part of it that intersects area by dx,dy */ - HRGN update = cairo_region_to_hrgn (area, 0, 0); - ret = CombineRgn (update, hrgn, update, RGN_AND); - if (ret == ERROR) - WIN32_API_FAILED ("CombineRgn"); - else if (ret != NULLREGION) - { - OffsetRgn (update, dx, dy); - API_CALL (InvalidateRgn, (GDK_WINDOW_HWND (window), update, TRUE)); - } - DeleteObject (update); - } - DeleteObject (hrgn); } static void @@ -3257,56 +3193,216 @@ gdk_win32_input_shape_combine_region (GdkWindow *window, gdk_win32_window_shape_combine_region (window, shape_region, offset_x, offset_y); } -void -_gdk_windowing_window_process_updates_recurse (GdkWindow *window, +static void +gdk_win32_window_process_updates_recurse (GdkWindow *window, cairo_region_t *region) { _gdk_window_process_updates_recurse (window, region); } -void -_gdk_windowing_before_process_all_updates (void) -{ -} - -void -_gdk_windowing_after_process_all_updates (void) -{ -} - -static void -gdk_window_impl_iface_init (GdkWindowImplIface *iface) -{ - iface->show = gdk_win32_window_show; - iface->hide = gdk_win32_window_hide; - iface->withdraw = gdk_win32_window_withdraw; - iface->set_events = gdk_win32_window_set_events; - iface->get_events = gdk_win32_window_get_events; - iface->raise = gdk_win32_window_raise; - iface->lower = gdk_win32_window_lower; - iface->restack_under = gdk_win32_window_restack_under; - iface->restack_toplevel = gdk_win32_window_restack_toplevel; - iface->move_resize = gdk_win32_window_move_resize; - iface->set_background = gdk_win32_window_set_background; - iface->reparent = gdk_win32_window_reparent; - iface->set_device_cursor = gdk_win32_window_set_device_cursor; - iface->get_geometry = gdk_win32_window_get_geometry; - iface->get_device_state = gdk_window_win32_get_device_state; - iface->get_root_coords = gdk_win32_window_get_root_coords; - iface->shape_combine_region = gdk_win32_window_shape_combine_region; - iface->input_shape_combine_region = gdk_win32_input_shape_combine_region; - iface->set_static_gravities = gdk_win32_window_set_static_gravities; - iface->queue_antiexpose = _gdk_win32_window_queue_antiexpose; - iface->translate = _gdk_win32_window_translate; - iface->destroy = _gdk_win32_window_destroy; - iface->resize_cairo_surface = gdk_win32_window_resize_cairo_surface; - iface->get_shape = gdk_win32_window_get_shape; - iface->get_input_shape = gdk_win32_window_get_input_shape; -} - gboolean gdk_win32_window_is_win32 (GdkWindow *window) { return GDK_WINDOW_IS_WIN32 (window); } +/** + * _gdk_win32_acquire_dc + * @impl: a Win32 #GdkWindowImplWin32 implementation + * + * Gets a DC with the given drawable selected into it. + * + * Return value: The DC, on success. Otherwise + * %NULL. If this function succeeded + * _gdk_win32_impl_release_dc() must be called + * release the DC when you are done using it. + **/ +static HDC +_gdk_win32_impl_acquire_dc (GdkWindowImplWin32 *impl) +{ + if (GDK_IS_WINDOW_IMPL_WIN32 (impl) && + GDK_WINDOW_DESTROYED (impl->wrapper)) + return NULL; + + if (!impl->hdc) + { + impl->hdc = GetDC (impl->handle); + if (!impl->hdc) + WIN32_GDI_FAILED ("GetDC"); + } + + if (impl->hdc) + { + impl->hdc_count++; + return impl->hdc; + } + else + { + return NULL; + } +} + +/** + * _gdk_win32_impl_release_dc + * @impl: a Win32 #GdkWindowImplWin32 implementation + * + * Releases the reference count for the DC + * from _gdk_win32_impl_acquire_dc() + **/ +static void +_gdk_win32_impl_release_dc (GdkWindowImplWin32 *impl) +{ + g_return_if_fail (impl->hdc_count > 0); + + impl->hdc_count--; + if (impl->hdc_count == 0) + { + if (impl->saved_dc_bitmap) + { + GDI_CALL (SelectObject, (impl->hdc, impl->saved_dc_bitmap)); + impl->saved_dc_bitmap = NULL; + } + + if (impl->hdc) + { + GDI_CALL (ReleaseDC, (impl->handle, impl->hdc)); + impl->hdc = NULL; + } + } +} + +static void +gdk_win32_cairo_surface_destroy (void *data) +{ + GdkWindowImplWin32 *impl = data; + + _gdk_win32_impl_release_dc (impl); + impl->cairo_surface = NULL; +} + +static cairo_surface_t * +gdk_win32_ref_cairo_surface (GdkWindow *window) +{ + GdkWindowImplWin32 *impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + + if (GDK_IS_WINDOW_IMPL_WIN32 (impl) && + GDK_WINDOW_DESTROYED (impl->wrapper)) + return NULL; + + if (!impl->cairo_surface) + { + HDC hdc = _gdk_win32_impl_acquire_dc (impl); + if (!hdc) + return NULL; + + impl->cairo_surface = cairo_win32_surface_create (hdc); + + cairo_surface_set_user_data (impl->cairo_surface, &gdk_win32_cairo_key, + impl, gdk_win32_cairo_surface_destroy); + } + else + cairo_surface_reference (impl->cairo_surface); + + return impl->cairo_surface; +} + +static void +gdk_window_impl_win32_class_init (GdkWindowImplWin32Class *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkWindowImplClass *impl_class = GDK_WINDOW_IMPL_CLASS (klass); + + parent_class = g_type_class_peek_parent (klass); + + object_class->finalize = gdk_window_impl_win32_finalize; + + impl_class->ref_cairo_surface = gdk_win32_ref_cairo_surface; + + impl_class->show = gdk_win32_window_show; + impl_class->hide = gdk_win32_window_hide; + impl_class->withdraw = gdk_win32_window_withdraw; + impl_class->set_events = gdk_win32_window_set_events; + impl_class->get_events = gdk_win32_window_get_events; + impl_class->raise = gdk_win32_window_raise; + impl_class->lower = gdk_win32_window_lower; + impl_class->restack_under = gdk_win32_window_restack_under; + impl_class->restack_toplevel = gdk_win32_window_restack_toplevel; + impl_class->move_resize = gdk_win32_window_move_resize; + impl_class->set_background = gdk_win32_window_set_background; + impl_class->reparent = gdk_win32_window_reparent; + impl_class->set_device_cursor = gdk_win32_window_set_device_cursor; + impl_class->get_geometry = gdk_win32_window_get_geometry; + impl_class->get_device_state = gdk_window_win32_get_device_state; + impl_class->get_root_coords = gdk_win32_window_get_root_coords; + + impl_class->shape_combine_region = gdk_win32_window_shape_combine_region; + impl_class->input_shape_combine_region = gdk_win32_input_shape_combine_region; + impl_class->set_static_gravities = gdk_win32_window_set_static_gravities; + impl_class->queue_antiexpose = _gdk_win32_window_queue_antiexpose; + impl_class->translate = _gdk_win32_window_translate; + impl_class->destroy = gdk_win32_window_destroy; + impl_class->destroy_foreign = gdk_win32_window_destroy_foreign; + impl_class->resize_cairo_surface = gdk_win32_window_resize_cairo_surface; + impl_class->get_shape = gdk_win32_window_get_shape; + //FIXME?: impl_class->get_input_shape = gdk_win32_window_get_input_shape; + + //impl_class->beep = gdk_x11_window_beep; + + impl_class->focus = gdk_win32_window_focus; + impl_class->set_type_hint = gdk_win32_window_set_type_hint; + impl_class->get_type_hint = gdk_win32_window_get_type_hint; + impl_class->set_modal_hint = gdk_win32_window_set_modal_hint; + impl_class->set_skip_taskbar_hint = gdk_win32_window_set_skip_taskbar_hint; + impl_class->set_skip_pager_hint = gdk_win32_window_set_skip_pager_hint; + impl_class->set_urgency_hint = gdk_win32_window_set_urgency_hint; + impl_class->set_geometry_hints = gdk_win32_window_set_geometry_hints; + impl_class->set_title = gdk_win32_window_set_title; + impl_class->set_role = gdk_win32_window_set_role; + //impl_class->set_startup_id = gdk_x11_window_set_startup_id; + impl_class->set_transient_for = gdk_win32_window_set_transient_for; + impl_class->get_root_origin = gdk_win32_window_get_root_origin; + impl_class->get_frame_extents = gdk_win32_window_get_frame_extents; + impl_class->set_override_redirect = gdk_win32_window_set_override_redirect; + impl_class->set_accept_focus = gdk_win32_window_set_accept_focus; + impl_class->set_focus_on_map = gdk_win32_window_set_focus_on_map; + impl_class->set_icon_list = gdk_win32_window_set_icon_list; + impl_class->set_icon_name = gdk_win32_window_set_icon_name; + impl_class->iconify = gdk_win32_window_iconify; + impl_class->deiconify = gdk_win32_window_deiconify; + impl_class->stick = gdk_win32_window_stick; + impl_class->unstick = gdk_win32_window_unstick; + impl_class->maximize = gdk_win32_window_maximize; + impl_class->unmaximize = gdk_win32_window_unmaximize; + impl_class->fullscreen = gdk_win32_window_fullscreen; + impl_class->unfullscreen = gdk_win32_window_unfullscreen; + impl_class->set_keep_above = gdk_win32_window_set_keep_above; + impl_class->set_keep_below = gdk_win32_window_set_keep_below; + impl_class->get_group = gdk_win32_window_get_group; + impl_class->set_group = gdk_win32_window_set_group; + impl_class->set_decorations = gdk_win32_window_set_decorations; + impl_class->get_decorations = gdk_win32_window_get_decorations; + impl_class->set_functions = gdk_win32_window_set_functions; + + impl_class->begin_resize_drag = gdk_win32_window_begin_resize_drag; + impl_class->begin_move_drag = gdk_win32_window_begin_move_drag; + impl_class->enable_synchronized_configure = gdk_win32_window_enable_synchronized_configure; + impl_class->configure_finished = gdk_win32_window_configure_finished; + impl_class->set_opacity = gdk_win32_window_set_opacity; + //impl_class->set_composited = gdk_win32_window_set_composited; + impl_class->destroy_notify = gdk_win32_window_destroy_notify; + impl_class->register_dnd = _gdk_win32_window_register_dnd; + impl_class->drag_begin = _gdk_win32_window_drag_begin; + impl_class->process_updates_recurse = gdk_win32_window_process_updates_recurse; + //? impl_class->sync_rendering = _gdk_win32_window_sync_rendering; + impl_class->simulate_key = _gdk_win32_window_simulate_key; + impl_class->simulate_button = _gdk_win32_window_simulate_button; + impl_class->get_property = _gdk_win32_window_get_property; + impl_class->change_property = _gdk_win32_window_change_property; + impl_class->delete_property = _gdk_win32_window_delete_property; +} + +HGDIOBJ +gdk_win32_window_get_handle (GdkWindow *window) +{ + return GDK_WINDOW_HWND (window); +} diff --git a/gdk/win32/gdkwindow-win32.h b/gdk/win32/gdkwindow-win32.h index f488e59faa..910d73540d 100644 --- a/gdk/win32/gdkwindow-win32.h +++ b/gdk/win32/gdkwindow-win32.h @@ -27,32 +27,14 @@ #ifndef __GDK_WINDOW_WIN32_H__ #define __GDK_WINDOW_WIN32_H__ -#include +#include "gdk/win32/gdkprivate-win32.h" +#include "gdk/gdkwindowimpl.h" +#include "gdk/gdkcursor.h" + +#include G_BEGIN_DECLS -typedef struct _GdkWin32PositionInfo GdkWin32PositionInfo; - -#if 0 -struct _GdkWin32PositionInfo -{ - gint x; - gint y; - gint width; - gint height; - gint x_offset; /* Offsets to add to Win32 coordinates */ - gint y_offset; /* within window to get GDK coodinates */ - guint big : 1; - guint mapped : 1; - guint no_bg : 1; /* Set when the window background - * is temporarily unset during resizing - * and scaling - */ - GdkRectangle clip_rect; /* visible rectangle of window */ -}; -#endif - - /* Window implementation for Win32 */ @@ -68,7 +50,10 @@ typedef struct _GdkWindowImplWin32Class GdkWindowImplWin32Class; struct _GdkWindowImplWin32 { - GdkDrawableImplWin32 parent_instance; + GdkWindowImpl parent_instance; + + GdkWindow *wrapper; + HANDLE handle; gint8 toplevel_window_type; @@ -90,11 +75,16 @@ struct _GdkWindowImplWin32 gboolean changing_state; guint no_bg : 1; + + cairo_surface_t *cairo_surface; + HDC hdc; + int hdc_count; + HBITMAP saved_dc_bitmap; /* Original bitmap for dc */ }; struct _GdkWindowImplWin32Class { - GdkDrawableImplWin32Class parent_class; + GdkWindowImplClass parent_class; }; GType _gdk_window_impl_win32_get_type (void); diff --git a/gdk/win32/makefile.msc b/gdk/win32/makefile.msc index 3dac7c69c3..fbe7dca967 100644 --- a/gdk/win32/makefile.msc +++ b/gdk/win32/makefile.msc @@ -14,7 +14,7 @@ TOP = ../../.. WTKIT = $(TOP)\wtkit126 !ENDIF -GTK_VER=2.0 +GTK_VER=3.0 DEFINES = \ -DHAVE_CONFIG_H -DINSIDE_GDK_WIN32 -DGDK_VERSION=\"$(GTK_VER)\" \ @@ -22,7 +22,7 @@ DEFINES = \ INCLUDES = -FImsvc_recommended_pragmas.h \ -I. -I.. -I..\.. $(GLIB_CFLAGS) $(PANGO_CFLAGS) $(CAIRO_CFLAGS) \ - -I$(WTKIT)\include -I$(GLIB) \ + $(GDK_PIXBUF_CFLAGS) -I$(WTKIT)\include -I$(GLIB) \ all: \ ..\..\config.h \ @@ -31,25 +31,22 @@ all: \ gdk.res gdk_win32_OBJECTS = \ - gdkapplaunchcontext-win32.obj \ gdkcursor-win32.obj \ + gdkdevice-win32.obj \ + gdkdevice-wintab.obj \ + gdkdevicemanager-win32.obj \ gdkdnd-win32.obj \ gdkdisplay-win32.obj \ - gdkdrawable-win32.obj \ + gdkdisplaymanager-win32.obj \ gdkevents-win32.obj \ - gdkgc-win32.obj \ gdkgeometry-win32.obj \ gdkglobals-win32.obj \ - gdkim-win32.obj \ gdkinput.obj \ - gdkinput-win32.obj \ gdkkeys-win32.obj \ gdkmain-win32.obj \ gdkproperty-win32.obj \ -# gdkregion-win32.obj \ gdkscreen-win32.obj \ gdkselection-win32.obj \ - gdkspawn-win32.obj \ gdktestutils-win32.obj \ gdkvisual-win32.obj \ gdkwin32id.obj \ diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am index b6a4751b32..c9421b8bf0 100644 --- a/gdk/x11/Makefile.am +++ b/gdk/x11/Makefile.am @@ -2,6 +2,7 @@ include $(top_srcdir)/Makefile.decl libgdkincludedir = $(includedir)/gtk-3.0/gdk +libgdkx11includedir = $(includedir)/gtk-3.0/gdk/x11 INCLUDES = \ -DG_LOG_DOMAIN=\"Gdk\" \ @@ -16,60 +17,61 @@ LDADDS = $(GDK_DEP_LIBS) noinst_LTLIBRARIES = libgdk-x11.la -libgdk_x11_la_SOURCES = \ - MwmUtil.h \ +libgdk_x11_la_SOURCES = \ + MwmUtil.h \ gdkapplaunchcontext-x11.c \ gdkasync.c \ gdkasync.h \ - gdkcursor-x11.c \ - gdkdevice-core.h \ - gdkdevice-core.c \ - gdkdevicemanager-core.h \ - gdkdevicemanager-core.c \ + gdkcursor-x11.c \ + gdkdevice-core-x11.c \ + gdkdeviceprivate-xi.h \ + gdkdevicemanager-core-x11.c \ gdkdevicemanager-x11.c \ + gdkdevicemanagerprivate-core.h \ + gdkdisplaymanager-x11.c \ gdkdisplay-x11.c \ gdkdisplay-x11.h \ - gdkdnd-x11.c \ + gdkdnd-x11.c \ gdkeventsource.c \ gdkeventsource.h \ gdkeventtranslator.c \ gdkeventtranslator.h \ gdkgeometry-x11.c \ - gdkglobals-x11.c \ - gdkim-x11.c \ - gdkinput.c \ gdkkeys-x11.c \ - gdkmain-x11.c \ - gdkproperty-x11.c \ + gdkmain-x11.c \ + gdkproperty-x11.c \ gdkscreen-x11.c \ gdkscreen-x11.h \ - gdkselection-x11.c \ - gdkspawn-x11.c \ + gdkselection-x11.c \ gdktestutils-x11.c \ - gdkvisual-x11.c \ - gdkwindow-x11.c \ + gdkvisual-x11.c \ + gdkwindow-x11.c \ gdkwindow-x11.h \ gdkxftdefaults.c \ - gdkxid.c \ - gdkx.h \ - gdkprivate-x11.h \ + gdkxid.c \ + gdkx.h \ + gdkprivate-x11.h \ xsettings-client.h \ xsettings-client.c \ xsettings-common.h \ xsettings-common.c +libgdkx11include_HEADERS = + if XINPUT_XFREE libgdk_x11_la_SOURCES += \ - gdkdevicemanager-xi.c \ - gdkdevicemanager-xi.h \ - gdkdevice-xi.c \ - gdkdevice-xi.h + gdkdevicemanager-xi.c \ + gdkdevice-xi.c +libgdkx11include_HEADERS += \ + gdkx11devicemanager-xi.h \ + gdkx11device-xi.h if XINPUT_2 libgdk_x11_la_SOURCES += \ - gdkdevicemanager-xi2.c \ - gdkdevicemanager-xi2.h \ - gdkdevice-xi2.c \ - gdkdevice-xi2.h + gdkdevicemanager-xi2.c \ + gdkdevice-xi2.c +libgdkx11include_HEADERS += \ + gdkx11devicemanager-xi2.h \ + gdkx11device-xi2.h endif endif @@ -77,6 +79,21 @@ endif libgdkinclude_HEADERS = \ gdkx.h +libgdkx11include_HEADERS += \ + gdkx11applaunchcontext.h \ + gdkx11cursor.h \ + gdkx11device-core.h \ + gdkx11devicemanager-core.h \ + gdkx11display.h \ + gdkx11displaymanager.h \ + gdkx11dnd.h \ + gdkx11keys.h \ + gdkx11property.h \ + gdkx11screen.h \ + gdkx11selection.h \ + gdkx11utils.h \ + gdkx11visual.h \ + gdkx11window.h noinst_PROGRAMS = checksettings checksettings_LDADD = libgdk-x11.la $(GLIB_LIBS) diff --git a/gdk/x11/gdkapplaunchcontext-x11.c b/gdk/x11/gdkapplaunchcontext-x11.c index 5aea31d12a..ff4f1cd183 100644 --- a/gdk/x11/gdkapplaunchcontext-x11.c +++ b/gdk/x11/gdkapplaunchcontext-x11.c @@ -22,12 +22,11 @@ #include "config.h" -#include "gdkapplaunchcontext.h" - -#include "gdkx.h" +#include "gdkx11applaunchcontext.h" +#include "gdkapplaunchcontextprivate.h" #include "gdkscreen.h" -#include "gdkinternals.h" #include "gdkintl.h" +#include "gdkprivate-x11.h" #include #include @@ -129,10 +128,10 @@ end_startup_notification (GdkDisplay *display, * timeouts. The reason our timeout is dumb is that we don't monitor * the sequence (don't use an SnMonitorContext) */ -#define STARTUP_TIMEOUT_LENGTH_SECONDS 30 +#define STARTUP_TIMEOUT_LENGTH_SECONDS 30 #define STARTUP_TIMEOUT_LENGTH (STARTUP_TIMEOUT_LENGTH_SECONDS * 1000) -typedef struct +typedef struct { GdkDisplay *display; char *startup_id; @@ -149,7 +148,7 @@ free_startup_notification_data (gpointer data) g_free (sn_data); } -typedef struct +typedef struct { GSList *contexts; guint timeout_id; @@ -258,13 +257,12 @@ add_startup_timeout (GdkScreen *screen, } -char * -_gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, - GAppInfo *info, - GList *files) +static char * +gdk_x11_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, + GAppInfo *info, + GList *files) { static int sequence = 0; - GdkAppLaunchContextPrivate *priv; GdkDisplay *display; GdkScreen *screen; int files_count; @@ -278,24 +276,15 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, guint32 timestamp; char *startup_id; GFileInfo *fileinfo; + GdkAppLaunchContext *ctx; - priv = GDK_APP_LAUNCH_CONTEXT (context)->priv; + ctx = GDK_APP_LAUNCH_CONTEXT (context); - if (priv->screen) - { - screen = priv->screen; - display = gdk_screen_get_display (priv->screen); - } - else if (priv->display) - { - display = priv->display; - screen = gdk_display_get_default_screen (display); - } + display = ctx->display; + if (ctx->screen) + screen = ctx->screen; else - { - display = gdk_display_get_default (); - screen = gdk_display_get_default_screen (display); - } + screen = gdk_display_get_default_screen (ctx->display); fileinfo = NULL; @@ -325,14 +314,14 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, files_count), files_count); icon_name = NULL; - if (priv->icon_name) - icon_name = g_strdup (priv->icon_name); + if (ctx->icon_name) + icon_name = g_strdup (ctx->icon_name); else { icon = NULL; - if (priv->icon != NULL) - icon = g_object_ref (priv->icon); + if (ctx->icon != NULL) + icon = g_object_ref (ctx->icon); else if (files_count == 1) icon = get_icon (files->data, fileinfo); @@ -350,13 +339,13 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, binary_name = g_app_info_get_executable (info); - timestamp = priv->timestamp; + timestamp = ctx->timestamp; if (timestamp == GDK_CURRENT_TIME) timestamp = gdk_x11_display_get_user_time (display); screen_str = g_strdup_printf ("%d", gdk_screen_get_number (screen)); - if (priv->workspace > -1) - workspace_str = g_strdup_printf ("%d", priv->workspace); + if (ctx->workspace > -1) + workspace_str = g_strdup_printf ("%d", ctx->workspace); else workspace_str = NULL; @@ -398,24 +387,22 @@ _gdk_windowing_get_startup_notify_id (GAppLaunchContext *context, } -void -_gdk_windowing_launch_failed (GAppLaunchContext *context, - const char *startup_notify_id) +static void +gdk_x11_app_launch_context_launch_failed (GAppLaunchContext *context, + const gchar *startup_notify_id) { - GdkAppLaunchContextPrivate *priv; + GdkAppLaunchContext *ctx; GdkScreen *screen; StartupTimeoutData *data; StartupNotificationData *sn_data; GSList *l; - priv = GDK_APP_LAUNCH_CONTEXT (context)->priv; + ctx = GDK_APP_LAUNCH_CONTEXT (context); - if (priv->screen) - screen = priv->screen; - else if (priv->display) - screen = gdk_display_get_default_screen (priv->display); + if (ctx->screen) + screen = ctx->screen; else - screen = gdk_display_get_default_screen (gdk_display_get_default ()); + screen = gdk_display_get_default_screen (ctx->display); data = g_object_get_data (G_OBJECT (screen), "appinfo-startup-data"); @@ -441,3 +428,42 @@ _gdk_windowing_launch_failed (GAppLaunchContext *context, } } } + +struct _GdkX11AppLaunchContext +{ + GdkAppLaunchContext parent_instance; +}; + +struct _GdkX11AppLaunchContextClass +{ + GdkAppLaunchContextClass parent_class; +}; + + +G_DEFINE_TYPE (GdkX11AppLaunchContext, gdk_x11_app_launch_context, GDK_TYPE_APP_LAUNCH_CONTEXT) + +static void +gdk_x11_app_launch_context_class_init (GdkX11AppLaunchContextClass *klass) +{ + GAppLaunchContextClass *ctx_class = G_APP_LAUNCH_CONTEXT_CLASS (klass); + + ctx_class->get_startup_notify_id = gdk_x11_app_launch_context_get_startup_notify_id; + ctx_class->launch_failed = gdk_x11_app_launch_context_launch_failed; +} + +static void +gdk_x11_app_launch_context_init (GdkX11AppLaunchContext *ctx) +{ +} + +GdkAppLaunchContext * +_gdk_x11_display_get_app_launch_context (GdkDisplay *display) +{ + GdkAppLaunchContext *ctx; + + ctx = g_object_new (GDK_TYPE_X11_APP_LAUNCH_CONTEXT, + "display", display, + NULL); + + return ctx; +} diff --git a/gdk/x11/gdkasync.c b/gdk/x11/gdkasync.c index 2f591b0906..b86218480c 100644 --- a/gdk/x11/gdkasync.c +++ b/gdk/x11/gdkasync.c @@ -46,7 +46,7 @@ in this Software without prior written authorization from The Open Group. #include "config.h" #include "gdkasync.h" -#include "gdkx.h" +#include "gdkprivate-x11.h" #ifdef NEED_XIPROTO_H_FOR_XREPLY #include @@ -653,12 +653,12 @@ _gdk_x11_get_window_child_info (GdkDisplay *display, state.children = NULL; state.nchildren = 0; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); result = list_children_and_wm_state (dpy, window, win_has_wm_state ? wm_state_atom : None, &has_wm_state, &state.children, &state.nchildren); - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); if (!result) { g_free (state.children); diff --git a/gdk/x11/gdkasync.h b/gdk/x11/gdkasync.h index eebea396a6..f9995156c7 100644 --- a/gdk/x11/gdkasync.h +++ b/gdk/x11/gdkasync.h @@ -21,7 +21,7 @@ #ifndef __GDK_ASYNC_H__ #define __GDK_ASYNC_H__ -#include +#include "gdkdisplay.h" #include G_BEGIN_DECLS diff --git a/gdk/x11/gdkcursor-x11.c b/gdk/x11/gdkcursor-x11.c index 6169cc1d89..ae3dbe9dad 100644 --- a/gdk/x11/gdkcursor-x11.c +++ b/gdk/x11/gdkcursor-x11.c @@ -31,10 +31,9 @@ #include #include "gdkcursor.h" - +#include "gdkcursorprivate.h" #include "gdkprivate-x11.h" #include "gdkdisplay-x11.h" -#include "gdkx.h" #include #include @@ -47,6 +46,19 @@ #include #include +struct _GdkX11Cursor +{ + GdkCursor cursor; + + Cursor xcursor; + gchar *name; + guint serial; +}; + +struct _GdkX11CursorClass +{ + GdkCursorClass cursor_class; +}; static guint theme_serial = 0; @@ -70,12 +82,12 @@ struct cursor_cache_key * a non-NULL name. */ static void -add_to_cache (GdkCursorPrivate* cursor) +add_to_cache (GdkX11Cursor* cursor) { cursor_cache = g_slist_prepend (cursor_cache, cursor); /* Take a ref so that if the caller frees it we still have it */ - gdk_cursor_ref ((GdkCursor*) cursor); + g_object_ref (cursor); } /* Returns 0 on a match @@ -84,11 +96,11 @@ static gint cache_compare_func (gconstpointer listelem, gconstpointer target) { - GdkCursorPrivate* cursor = (GdkCursorPrivate*)listelem; + GdkX11Cursor* cursor = (GdkX11Cursor*)listelem; struct cursor_cache_key* key = (struct cursor_cache_key*)target; if ((cursor->cursor.type != key->type) || - (cursor->display != key->display)) + (gdk_cursor_get_display (GDK_CURSOR (cursor)) != key->display)) return 1; /* No match */ /* Elements marked as pixmap must be named cursors @@ -104,7 +116,7 @@ cache_compare_func (gconstpointer listelem, * For named cursors type shall be GDK_CURSOR_IS_PIXMAP * For unnamed, typed cursors, name shall be NULL */ -static GdkCursorPrivate* +static GdkX11Cursor* find_in_cache (GdkDisplay *display, GdkCursorType type, const char *name) @@ -119,15 +131,15 @@ find_in_cache (GdkDisplay *display, res = g_slist_find_custom (cursor_cache, &key, cache_compare_func); if (res) - return (GdkCursorPrivate *) res->data; + return (GdkX11Cursor *) res->data; return NULL; } -/* Called by gdk_display_x11_finalize to flush any cached cursors +/* Called by gdk_x11_display_finalize to flush any cached cursors * for a dead display. */ -void +void _gdk_x11_cursor_display_finalize (GdkDisplay *display) { GSList* item; @@ -136,25 +148,62 @@ _gdk_x11_cursor_display_finalize (GdkDisplay *display) itemp = &cursor_cache; while (item) { - GdkCursorPrivate* cursor = (GdkCursorPrivate*)(item->data); - if (cursor->display == display) + GdkX11Cursor* cursor = (GdkX11Cursor*)(item->data); + if (gdk_cursor_get_display (GDK_CURSOR (cursor)) == display) { - GSList* olditem; + GSList* olditem; gdk_cursor_unref ((GdkCursor*) cursor); - /* Remove this item from the list */ - *(itemp) = item->next; - olditem = item; - item = g_slist_next (item); - g_slist_free_1 (olditem); + /* Remove this item from the list */ + *(itemp) = item->next; + olditem = item; + item = g_slist_next (item); + g_slist_free_1 (olditem); } else { - itemp = &(item->next); - item = g_slist_next (item); - } + itemp = &(item->next); + item = g_slist_next (item); + } } } +/*** GdkX11Cursor ***/ + +G_DEFINE_TYPE (GdkX11Cursor, gdk_x11_cursor, GDK_TYPE_CURSOR) + +static GdkPixbuf* gdk_x11_cursor_get_image (GdkCursor *cursor); + +static void +gdk_x11_cursor_finalize (GObject *object) +{ + GdkX11Cursor *private = GDK_X11_CURSOR (object); + GdkDisplay *display; + + display = gdk_cursor_get_display (GDK_CURSOR (object)); + if (private->xcursor && !gdk_display_is_closed (display)) + XFreeCursor (GDK_DISPLAY_XDISPLAY (display), private->xcursor); + + g_free (private->name); + + G_OBJECT_CLASS (gdk_x11_cursor_parent_class)->finalize (object); +} + +static void +gdk_x11_cursor_class_init (GdkX11CursorClass *xcursor_class) +{ + GdkCursorClass *cursor_class = GDK_CURSOR_CLASS (xcursor_class); + GObjectClass *object_class = G_OBJECT_CLASS (xcursor_class); + + object_class->finalize = gdk_x11_cursor_finalize; + + cursor_class->get_image = gdk_x11_cursor_get_image; +} + +static void +gdk_x11_cursor_init (GdkX11Cursor *cursor) +{ +} + static Cursor get_blank_cursor (GdkDisplay *display) { @@ -177,8 +226,8 @@ get_blank_cursor (GdkDisplay *display) color.pixel = 0; color.red = color.blue = color.green = 0; - - if (display->closed) + + if (gdk_display_is_closed (display)) cursor = None; else cursor = XCreatePixmapCursor (GDK_DISPLAY_XDISPLAY (display), @@ -189,139 +238,50 @@ get_blank_cursor (GdkDisplay *display) return cursor; } -/** - * gdk_cursor_new_for_display: - * @display: the #GdkDisplay for which the cursor will be created - * @cursor_type: cursor to create - * - * Creates a new cursor from the set of builtin cursors. - * Some useful ones are: - * - * - * #GDK_RIGHT_PTR (right-facing arrow) - * - * - * #GDK_CROSSHAIR (crosshair) - * - * - * #GDK_XTERM (I-beam) - * - * - * #GDK_WATCH (busy) - * - * - * #GDK_FLEUR (for moving objects) - * - * - * #GDK_HAND1 (a right-pointing hand) - * - * - * #GDK_HAND2 (a left-pointing hand) - * - * - * #GDK_LEFT_SIDE (resize left side) - * - * - * #GDK_RIGHT_SIDE (resize right side) - * - * - * #GDK_TOP_LEFT_CORNER (resize northwest corner) - * - * - * #GDK_TOP_RIGHT_CORNER (resize northeast corner) - * - * - * #GDK_BOTTOM_LEFT_CORNER (resize southwest corner) - * - * - * #GDK_BOTTOM_RIGHT_CORNER (resize southeast corner) - * - * - * #GDK_TOP_SIDE (resize top side) - * - * - * #GDK_BOTTOM_SIDE (resize bottom side) - * - * - * #GDK_SB_H_DOUBLE_ARROW (move vertical splitter) - * - * - * #GDK_SB_V_DOUBLE_ARROW (move horizontal splitter) - * - * - * #GDK_BLANK_CURSOR (Blank cursor). Since 2.16 - * - * - * - * Return value: a new #GdkCursor - * - * Since: 2.2 - **/ GdkCursor* -gdk_cursor_new_for_display (GdkDisplay *display, - GdkCursorType cursor_type) +_gdk_x11_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType cursor_type) { - GdkCursorPrivate *private; - GdkCursor *cursor; + GdkX11Cursor *private; Cursor xcursor; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - if (display->closed) + if (gdk_display_is_closed (display)) { xcursor = None; - } - else + } + else { private = find_in_cache (display, cursor_type, NULL); if (private) { /* Cache had it, add a ref for this user */ - gdk_cursor_ref ((GdkCursor*) private); - + g_object_ref (private); + return (GdkCursor*) private; - } - else + } + else { - if (cursor_type != GDK_BLANK_CURSOR) + if (cursor_type != GDK_BLANK_CURSOR) xcursor = XCreateFontCursor (GDK_DISPLAY_XDISPLAY (display), cursor_type); - else - xcursor = get_blank_cursor (display); + else + xcursor = get_blank_cursor (display); } } - - private = g_new (GdkCursorPrivate, 1); - private->display = display; + + private = g_object_new (GDK_TYPE_X11_CURSOR, + "cursor-type", cursor_type, + "display", display, + NULL); private->xcursor = xcursor; private->name = NULL; private->serial = theme_serial; - cursor = (GdkCursor *) private; - cursor->type = cursor_type; - cursor->ref_count = 1; - if (xcursor != None) add_to_cache (private); - return cursor; -} - -void -_gdk_cursor_destroy (GdkCursor *cursor) -{ - GdkCursorPrivate *private; - - g_return_if_fail (cursor != NULL); - g_return_if_fail (cursor->ref_count == 0); - - private = (GdkCursorPrivate *) cursor; - if (!private->display->closed && private->xcursor) - XFreeCursor (GDK_DISPLAY_XDISPLAY (private->display), private->xcursor); - - g_free (private->name); - g_free (private); + return GDK_CURSOR (private); } /** @@ -337,7 +297,7 @@ gdk_x11_cursor_get_xdisplay (GdkCursor *cursor) { g_return_val_if_fail (cursor != NULL, NULL); - return GDK_DISPLAY_XDISPLAY(((GdkCursorPrivate *)cursor)->display); + return GDK_DISPLAY_XDISPLAY (gdk_cursor_get_display (cursor)); } /** @@ -353,49 +313,16 @@ gdk_x11_cursor_get_xcursor (GdkCursor *cursor) { g_return_val_if_fail (cursor != NULL, None); - return ((GdkCursorPrivate *)cursor)->xcursor; -} - -/** - * gdk_cursor_get_display: - * @cursor: a #GdkCursor. - * - * Returns the display on which the #GdkCursor is defined. - * - * Returns: (transfer none): the #GdkDisplay associated to @cursor - * - * Since: 2.2 - */ - -GdkDisplay * -gdk_cursor_get_display (GdkCursor *cursor) -{ - g_return_val_if_fail (cursor != NULL, NULL); - - return ((GdkCursorPrivate *)cursor)->display; + return ((GdkX11Cursor *)cursor)->xcursor; } #if defined(HAVE_XCURSOR) && defined(HAVE_XFIXES) && XFIXES_MAJOR >= 2 -/** - * gdk_cursor_get_image: - * @cursor: a #GdkCursor - * - * Returns a #GdkPixbuf with the image used to display the cursor. - * - * Note that depending on the capabilities of the windowing system and - * on the cursor, GDK may not be able to obtain the image data. In this - * case, %NULL is returned. - * - * Returns: (transfer full): a #GdkPixbuf representing @cursor, or %NULL - * - * Since: 2.8 - */ -GdkPixbuf* -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf* +gdk_x11_cursor_get_image (GdkCursor *cursor) { Display *xdisplay; - GdkCursorPrivate *private; + GdkX11Cursor *private; XcursorImages *images = NULL; XcursorImage *image; gint size; @@ -404,11 +331,9 @@ gdk_cursor_get_image (GdkCursor *cursor) GdkPixbuf *pixbuf; gchar *theme; - g_return_val_if_fail (cursor != NULL, NULL); - - private = (GdkCursorPrivate *) cursor; + private = GDK_X11_CURSOR (cursor); - xdisplay = GDK_DISPLAY_XDISPLAY (private->display); + xdisplay = GDK_DISPLAY_XDISPLAY (gdk_cursor_get_display (cursor)); size = XcursorGetDefaultSize (xdisplay); theme = XcursorGetTheme (xdisplay); @@ -416,14 +341,14 @@ gdk_cursor_get_image (GdkCursor *cursor) if (cursor->type == GDK_CURSOR_IS_PIXMAP) { if (private->name) - images = XcursorLibraryLoadImages (private->name, theme, size); + images = XcursorLibraryLoadImages (private->name, theme, size); } - else + else images = XcursorShapeLoadImages (cursor->type, theme, size); if (!images) return NULL; - + image = images->images[0]; data = g_malloc (4 * image->width * image->height); @@ -437,9 +362,9 @@ gdk_cursor_get_image (GdkCursor *cursor) } pixbuf = gdk_pixbuf_new_from_data (data, GDK_COLORSPACE_RGB, TRUE, - 8, image->width, image->height, - 4 * image->width, - (GdkPixbufDestroyNotify)g_free, NULL); + 8, image->width, image->height, + 4 * image->width, + (GdkPixbufDestroyNotify)g_free, NULL); if (private->name) gdk_pixbuf_set_option (pixbuf, "name", private->name); @@ -457,13 +382,13 @@ void _gdk_x11_cursor_update_theme (GdkCursor *cursor) { Display *xdisplay; - GdkCursorPrivate *private; + GdkX11Cursor *private; Cursor new_cursor = None; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; - private = (GdkCursorPrivate *) cursor; - xdisplay = GDK_DISPLAY_XDISPLAY (private->display); - display_x11 = GDK_DISPLAY_X11 (private->display); + private = (GdkX11Cursor *) cursor; + display_x11 = GDK_X11_DISPLAY (gdk_cursor_get_display (cursor)); + xdisplay = GDK_DISPLAY_XDISPLAY (display_x11); if (!display_x11->have_xfixes) return; @@ -479,24 +404,24 @@ _gdk_x11_cursor_update_theme (GdkCursor *cursor) return; if (cursor->type == GDK_CURSOR_IS_PIXMAP) - { - if (private->name) - new_cursor = XcursorLibraryLoadCursor (xdisplay, private->name); - } + { + if (private->name) + new_cursor = XcursorLibraryLoadCursor (xdisplay, private->name); + } else - new_cursor = XcursorShapeLoadCursor (xdisplay, cursor->type); + new_cursor = XcursorShapeLoadCursor (xdisplay, cursor->type); if (new_cursor != None) - { - XFixesChangeCursor (xdisplay, new_cursor, private->xcursor); - private->xcursor = new_cursor; - } + { + XFixesChangeCursor (xdisplay, new_cursor, private->xcursor); + private->xcursor = new_cursor; + } } } static void update_cursor (gpointer data, - gpointer user_data) + gpointer user_data) { GdkCursor *cursor; @@ -531,17 +456,17 @@ update_cursor (gpointer data, */ void gdk_x11_display_set_cursor_theme (GdkDisplay *display, - const gchar *theme, - const gint size) + const gchar *theme, + const gint size) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; Display *xdisplay; gchar *old_theme; gint old_size; g_return_if_fail (GDK_IS_DISPLAY (display)); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); xdisplay = GDK_DISPLAY_XDISPLAY (display); old_theme = XcursorGetTheme (xdisplay); @@ -563,18 +488,16 @@ gdk_x11_display_set_cursor_theme (GdkDisplay *display, #else -GdkPixbuf* -gdk_cursor_get_image (GdkCursor *cursor) +static GdkPixbuf* +gdk_x11_cursor_get_image (GdkCursor *cursor) { - g_return_val_if_fail (cursor != NULL, NULL); - return NULL; } void gdk_x11_display_set_cursor_theme (GdkDisplay *display, - const gchar *theme, - const gint size) + const gchar *theme, + const gint size) { g_return_if_fail (GDK_IS_DISPLAY (display)); } @@ -591,8 +514,8 @@ _gdk_x11_cursor_update_theme (GdkCursor *cursor) static XcursorImage* create_cursor_image (GdkPixbuf *pixbuf, - gint x, - gint y) + gint x, + gint y) { guint width, height; XcursorImage *xcimage; @@ -624,54 +547,19 @@ create_cursor_image (GdkPixbuf *pixbuf, return xcimage; } - -/** - * gdk_cursor_new_from_pixbuf: - * @display: the #GdkDisplay for which the cursor will be created - * @pixbuf: the #GdkPixbuf containing the cursor image - * @x: the horizontal offset of the 'hotspot' of the cursor. - * @y: the vertical offset of the 'hotspot' of the cursor. - * - * Creates a new cursor from a pixbuf. - * - * Not all GDK backends support RGBA cursors. If they are not - * supported, a monochrome approximation will be displayed. - * The functions gdk_display_supports_cursor_alpha() and - * gdk_display_supports_cursor_color() can be used to determine - * whether RGBA cursors are supported; - * gdk_display_get_default_cursor_size() and - * gdk_display_get_maximal_cursor_size() give information about - * cursor sizes. - * - * If @x or @y are -1, the pixbuf must have - * options named "x_hot" and "y_hot", resp., containing - * integer values between %0 and the width resp. height of - * the pixbuf. (Since: 3.0) - * - * On the X backend, support for RGBA cursors requires a - * sufficently new version of the X Render extension. - * - * Returns: a new #GdkCursor. - * - * Since: 2.4 - */ GdkCursor * -gdk_cursor_new_from_pixbuf (GdkDisplay *display, - GdkPixbuf *pixbuf, - gint x, - gint y) +_gdk_x11_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y) { XcursorImage *xcimage; Cursor xcursor; - GdkCursorPrivate *private; - GdkCursor *cursor; + GdkX11Cursor *private; const char *option; char *end; gint64 value; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); - if (x == -1 && (option = gdk_pixbuf_get_option (pixbuf, "x_hot"))) { errno = 0; @@ -696,62 +584,48 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, g_return_val_if_fail (0 <= x && x < gdk_pixbuf_get_width (pixbuf), NULL); g_return_val_if_fail (0 <= y && y < gdk_pixbuf_get_height (pixbuf), NULL); - if (display->closed) - xcursor = None; - else + if (gdk_display_is_closed (display)) + { + xcursor = None; + } + else { xcimage = create_cursor_image (pixbuf, x, y); xcursor = XcursorImageLoadCursor (GDK_DISPLAY_XDISPLAY (display), xcimage); XcursorImageDestroy (xcimage); } - private = g_new (GdkCursorPrivate, 1); - private->display = display; + private = g_object_new (GDK_TYPE_X11_CURSOR, + "cursor-type", GDK_CURSOR_IS_PIXMAP, + "display", display, + NULL); private->xcursor = xcursor; private->name = NULL; private->serial = theme_serial; - cursor = (GdkCursor *) private; - cursor->type = GDK_CURSOR_IS_PIXMAP; - cursor->ref_count = 1; - - return cursor; + return GDK_CURSOR (private); } -/** - * gdk_cursor_new_from_name: - * @display: the #GdkDisplay for which the cursor will be created - * @name: the name of the cursor - * - * Creates a new cursor by looking up @name in the current cursor - * theme. - * - * Returns: a new #GdkCursor, or %NULL if there is no cursor with - * the given name - * - * Since: 2.8 - */ -GdkCursor* -gdk_cursor_new_from_name (GdkDisplay *display, - const gchar *name) +GdkCursor* +_gdk_x11_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name) { Cursor xcursor; Display *xdisplay; - GdkCursorPrivate *private; - GdkCursor *cursor; + GdkX11Cursor *private; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - if (display->closed) - xcursor = None; - else + if (gdk_display_is_closed (display)) + { + xcursor = None; + } + else { private = find_in_cache (display, GDK_CURSOR_IS_PIXMAP, name); if (private) { /* Cache had it, add a ref for this user */ - gdk_cursor_ref ((GdkCursor*) private); + g_object_ref (private); return (GdkCursor*) private; } @@ -759,79 +633,40 @@ gdk_cursor_new_from_name (GdkDisplay *display, xdisplay = GDK_DISPLAY_XDISPLAY (display); xcursor = XcursorLibraryLoadCursor (xdisplay, name); if (xcursor == None) - return NULL; + return NULL; } - private = g_new (GdkCursorPrivate, 1); - private->display = display; + private = g_object_new (GDK_TYPE_X11_CURSOR, + "cursor-type", GDK_CURSOR_IS_PIXMAP, + "display", display, + NULL); private->xcursor = xcursor; private->name = g_strdup (name); private->serial = theme_serial; - cursor = (GdkCursor *) private; - cursor->type = GDK_CURSOR_IS_PIXMAP; - cursor->ref_count = 1; add_to_cache (private); - return cursor; + return GDK_CURSOR (private); } -/** - * gdk_display_supports_cursor_alpha: - * @display: a #GdkDisplay - * - * Returns %TRUE if cursors can use an 8bit alpha channel - * on @display. Otherwise, cursors are restricted to bilevel - * alpha (i.e. a mask). - * - * Returns: whether cursors can have alpha channels. - * - * Since: 2.4 - */ -gboolean -gdk_display_supports_cursor_alpha (GdkDisplay *display) +gboolean +_gdk_x11_display_supports_cursor_alpha (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - return XcursorSupportsARGB (GDK_DISPLAY_XDISPLAY (display)); } -/** - * gdk_display_supports_cursor_color: - * @display: a #GdkDisplay - * - * Returns %TRUE if multicolored cursors are supported - * on @display. Otherwise, cursors have only a forground - * and a background color. - * - * Returns: whether cursors can have multiple colors. - * - * Since: 2.4 - */ -gboolean -gdk_display_supports_cursor_color (GdkDisplay *display) +gboolean +_gdk_x11_display_supports_cursor_color (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - return XcursorSupportsARGB (GDK_DISPLAY_XDISPLAY (display)); } -/** - * gdk_display_get_default_cursor_size: - * @display: a #GdkDisplay - * - * Returns the default size to use for cursors on @display. - * - * Returns: the default cursor size. - * - * Since: 2.4 - */ -guint -gdk_display_get_default_cursor_size (GdkDisplay *display) +void +_gdk_x11_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - - return XcursorGetDefaultSize (GDK_DISPLAY_XDISPLAY (display)); + *width = *height = XcursorGetDefaultSize (GDK_DISPLAY_XDISPLAY (display)); } #else @@ -839,14 +674,13 @@ gdk_display_get_default_cursor_size (GdkDisplay *display) static GdkCursor* gdk_cursor_new_from_pixmap (GdkDisplay *display, Pixmap source_pixmap, - Pixmap mask_pixmap, - const GdkColor *fg, - const GdkColor *bg, - gint x, - gint y) + Pixmap mask_pixmap, + const GdkColor *fg, + const GdkColor *bg, + gint x, + gint y) { - GdkCursorPrivate *private; - GdkCursor *cursor; + GdkX11Cursor *private; Cursor xcursor; XColor xfg, xbg; @@ -862,29 +696,27 @@ gdk_cursor_new_from_pixmap (GdkDisplay *display, xbg.blue = bg->blue; xbg.green = bg->green; - if (display->closed) + if (gdk_display_is_closed (display->closed)) xcursor = None; else xcursor = XCreatePixmapCursor (GDK_DISPLAY_XDISPLAY (display), - source_pixmap, mask_pixmap, &xfg, &xbg, x, y); - private = g_new (GdkCursorPrivate, 1); - private->display = display; + source_pixmap, mask_pixmap, &xfg, &xbg, x, y); + private = g_object_new (GDK_TYPE_X11_CURSOR, + "cursor-type", GDK_CURSOR_IS_PIXMAP, + "display", display, + NULL); private->xcursor = xcursor; private->name = NULL; private->serial = theme_serial; - cursor = (GdkCursor *) private; - cursor->type = GDK_CURSOR_IS_PIXMAP; - cursor->ref_count = 1; - - return cursor; + return GDK_CURSOR (private); } GdkCursor * -gdk_cursor_new_from_pixbuf (GdkDisplay *display, - GdkPixbuf *pixbuf, - gint x, - gint y) +_gdk_x11_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y) { GdkCursor *cursor; cairo_surface_t *pixmap, *mask; @@ -896,9 +728,6 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, cairo_surface_t *image; cairo_t *cr; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); - width = gdk_pixbuf_get_width (pixbuf); height = gdk_pixbuf_get_height (pixbuf); @@ -918,28 +747,28 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, guint8 *src = pixels + j * rowstride; guint8 *d = data + data_stride * j; guint8 *md = mask_data + data_stride * j; - + for (i = 0; i < width; i++) - { - if (src[1] < 0x80) - *d |= 1 << (i % 8); - - if (n_channels == 3 || src[3] >= 0x80) - *md |= 1 << (i % 8); - - src += n_channels; - if (i % 8 == 7) - { - d++; - md++; - } - } + { + if (src[1] < 0x80) + *d |= 1 << (i % 8); + + if (n_channels == 3 || src[3] >= 0x80) + *md |= 1 << (i % 8); + + src += n_channels; + if (i % 8 == 7) + { + d++; + md++; + } + } } - + screen = gdk_display_get_default_screen (display); - pixmap = _gdk_x11_window_create_bitmap_surface (gdk_screen_get_root_window (screen), - width, height); + pixmap = _gdk_x11_window_create_bitmap_surface (gdk_screen_get_root_window (screen), + width, height); cr = cairo_create (pixmap); image = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_A1, width, height, data_stride); @@ -948,9 +777,9 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_paint (cr); cairo_destroy (cr); - - mask = _gdk_x11_window_create_bitmap_surface (gdk_screen_get_root_window (screen), - width, height); + + mask = _gdk_x11_window_create_bitmap_surface (gdk_screen_get_root_window (screen), + width, height); cr = cairo_create (mask); image = cairo_image_surface_create_for_data (mask_data, CAIRO_FORMAT_A1, width, height, data_stride); @@ -959,82 +788,66 @@ gdk_cursor_new_from_pixbuf (GdkDisplay *display, cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_paint (cr); cairo_destroy (cr); - + cursor = gdk_cursor_new_from_pixmap (display, cairo_xlib_surface_get_drawable (pixmap), cairo_xlib_surface_get_drawable (mask), &fg, &bg, x, y); - + cairo_surface_destroy (pixmap); cairo_surface_destroy (mask); g_free (data); g_free (mask_data); - + return cursor; } -GdkCursor* -gdk_cursor_new_from_name (GdkDisplay *display, - const gchar *name) +GdkCursor* +_gdk_x11_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return NULL; } -gboolean -gdk_display_supports_cursor_alpha (GdkDisplay *display) +gboolean +_gdk_x11_display_supports_cursor_alpha (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - return FALSE; } -gboolean -gdk_display_supports_cursor_color (GdkDisplay *display) +gboolean +_gdk_x11_display_supports_cursor_color (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - return FALSE; } -guint -gdk_display_get_default_cursor_size (GdkDisplay *display) +void +_gdk_x11_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - /* no idea, really */ - return 20; + *width = *height = 20; + return; } #endif - -/** - * gdk_display_get_maximal_cursor_size: - * @display: a #GdkDisplay - * @width: (out): the return location for the maximal cursor width - * @height: (out): the return location for the maximal cursor height - * - * Gets the maximal size to use for cursors on @display. - * - * Since: 2.4 - */ -void -gdk_display_get_maximal_cursor_size (GdkDisplay *display, - guint *width, - guint *height) +void +_gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height) { GdkScreen *screen; GdkWindow *window; g_return_if_fail (GDK_IS_DISPLAY (display)); - + screen = gdk_display_get_default_screen (display); window = gdk_screen_get_root_window (screen); - XQueryBestCursor (GDK_DISPLAY_XDISPLAY (display), - GDK_WINDOW_XID (window), - 128, 128, width, height); + XQueryBestCursor (GDK_DISPLAY_XDISPLAY (display), + GDK_WINDOW_XID (window), + 128, 128, width, height); } diff --git a/gdk/x11/gdkdevice-core-x11.c b/gdk/x11/gdkdevice-core-x11.c new file mode 100644 index 0000000000..938aad77c0 --- /dev/null +++ b/gdk/x11/gdkdevice-core-x11.c @@ -0,0 +1,611 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include "gdkx11device-core.h" +#include "gdkdeviceprivate.h" + +#include "gdkinternals.h" +#include "gdkwindow.h" +#include "gdkprivate-x11.h" +#include "gdkasync.h" + +struct _GdkX11DeviceCore +{ + GdkDevice parent_instance; +}; + +struct _GdkX11DeviceCoreClass +{ + GdkDeviceClass parent_class; +}; + +static gboolean gdk_x11_device_core_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); +static void gdk_x11_device_core_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +static void gdk_x11_device_core_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor); +static void gdk_x11_device_core_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y); +static gboolean gdk_x11_device_core_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask); +static GdkGrabStatus gdk_x11_device_core_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_); +static void gdk_x11_device_core_ungrab (GdkDevice *device, + guint32 time_); +static GdkWindow * gdk_x11_device_core_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel); +static void gdk_x11_device_core_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask); + +G_DEFINE_TYPE (GdkX11DeviceCore, gdk_x11_device_core, GDK_TYPE_DEVICE) + +static void +gdk_x11_device_core_class_init (GdkX11DeviceCoreClass *klass) +{ + GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); + + device_class->get_history = gdk_x11_device_core_get_history; + device_class->get_state = gdk_x11_device_core_get_state; + device_class->set_window_cursor = gdk_x11_device_core_set_window_cursor; + device_class->warp = gdk_x11_device_core_warp; + device_class->query_state = gdk_x11_device_core_query_state; + device_class->grab = gdk_x11_device_core_grab; + device_class->ungrab = gdk_x11_device_core_ungrab; + device_class->window_at_position = gdk_x11_device_core_window_at_position; + device_class->select_window_events = gdk_x11_device_core_select_window_events; +} + +static void +gdk_x11_device_core_init (GdkX11DeviceCore *device_core) +{ + GdkDevice *device; + + device = GDK_DEVICE (device_core); + + _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_X, 0, 0, 1); + _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_Y, 0, 0, 1); +} + +static gboolean +impl_coord_in_window (GdkWindow *window, + int impl_x, + int impl_y) +{ + if (impl_x < window->abs_x || + impl_x >= window->abs_x + window->width) + return FALSE; + + if (impl_y < window->abs_y || + impl_y >= window->abs_y + window->height) + return FALSE; + + return TRUE; +} + +static gboolean +gdk_x11_device_core_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events) +{ + XTimeCoord *xcoords; + GdkTimeCoord **coords; + GdkWindow *impl_window; + int tmp_n_events; + int i, j; + + impl_window = _gdk_window_get_impl_window (window); + xcoords = XGetMotionEvents (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (impl_window), + start, stop, &tmp_n_events); + if (!xcoords) + return FALSE; + + coords = _gdk_device_allocate_history (device, tmp_n_events); + + for (i = 0, j = 0; i < tmp_n_events; i++) + { + if (impl_coord_in_window (window, xcoords[i].x, xcoords[i].y)) + { + coords[j]->time = xcoords[i].time; + coords[j]->axes[0] = xcoords[i].x - window->abs_x; + coords[j]->axes[1] = xcoords[i].y - window->abs_y; + j++; + } + } + + XFree (xcoords); + + /* free the events we allocated too much */ + for (i = j; i < tmp_n_events; i++) + { + g_free (coords[i]); + coords[i] = NULL; + } + + tmp_n_events = j; + + if (tmp_n_events == 0) + { + gdk_device_free_history (coords, tmp_n_events); + return FALSE; + } + + if (n_events) + *n_events = tmp_n_events; + + if (events) + *events = coords; + else if (coords) + gdk_device_free_history (coords, tmp_n_events); + + return TRUE; +} + +static void +gdk_x11_device_core_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask) +{ + gint x_int, y_int; + + gdk_window_get_pointer (window, &x_int, &y_int, mask); + + if (axes) + { + axes[0] = x_int; + axes[1] = y_int; + } +} + +static void +gdk_x11_device_core_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor) +{ + Cursor xcursor; + + if (!cursor) + xcursor = None; + else + xcursor = gdk_x11_cursor_get_xcursor (cursor); + + XDefineCursor (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + xcursor); +} + +static void +gdk_x11_device_core_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y) +{ + Display *xdisplay; + Window dest; + + xdisplay = GDK_DISPLAY_XDISPLAY (gdk_device_get_display (device)); + dest = GDK_WINDOW_XID (gdk_screen_get_root_window (screen)); + + XWarpPointer (xdisplay, None, dest, 0, 0, 0, 0, x, y); +} + +static gboolean +gdk_x11_device_core_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask) +{ + GdkDisplay *display; + GdkScreen *default_screen; + Window xroot_window, xchild_window; + int xroot_x, xroot_y, xwin_x, xwin_y; + unsigned int xmask; + + display = gdk_window_get_display (window); + default_screen = gdk_display_get_default_screen (display); + + if (G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) + { + if (!XQueryPointer (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + &xroot_window, + &xchild_window, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &xmask)) + return FALSE; + } + else + { + XSetWindowAttributes attributes; + Display *xdisplay; + Window xwindow, w; + + /* FIXME: untrusted clients not multidevice-safe */ + xdisplay = GDK_SCREEN_XDISPLAY (default_screen); + xwindow = GDK_SCREEN_XROOTWIN (default_screen); + + w = XCreateWindow (xdisplay, xwindow, 0, 0, 1, 1, 0, + CopyFromParent, InputOnly, CopyFromParent, + 0, &attributes); + XQueryPointer (xdisplay, w, + &xroot_window, + &xchild_window, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &xmask); + XDestroyWindow (xdisplay, w); + } + + if (root_window) + *root_window = gdk_x11_window_lookup_for_display (display, xroot_window); + + if (child_window) + *child_window = gdk_x11_window_lookup_for_display (display, xchild_window); + + if (root_x) + *root_x = xroot_x; + + if (root_y) + *root_y = xroot_y; + + if (win_x) + *win_x = xwin_x; + + if (win_y) + *win_y = xwin_y; + + if (mask) + *mask = xmask; + + return TRUE; +} + +static GdkGrabStatus +gdk_x11_device_core_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_) +{ + GdkDisplay *display; + Window xwindow, xconfine_to; + gint status; + + display = gdk_device_get_display (device); + + xwindow = GDK_WINDOW_XID (window); + + if (confine_to) + confine_to = _gdk_window_get_impl_window (confine_to); + + if (!confine_to || GDK_WINDOW_DESTROYED (confine_to)) + xconfine_to = None; + else + xconfine_to = GDK_WINDOW_XID (confine_to); + +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + status = GrabSuccess; + else +#endif + if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) + { + /* Device is a keyboard */ + status = XGrabKeyboard (GDK_DISPLAY_XDISPLAY (display), + xwindow, + owner_events, + GrabModeAsync, GrabModeAsync, + time_); + } + else + { + Cursor xcursor; + guint xevent_mask; + gint i; + + /* Device is a pointer */ + if (!cursor) + xcursor = None; + else + { + _gdk_x11_cursor_update_theme (cursor); + xcursor = gdk_x11_cursor_get_xcursor (cursor); + } + + xevent_mask = 0; + + for (i = 0; i < _gdk_x11_event_mask_table_size; i++) + { + if (event_mask & (1 << (i + 1))) + xevent_mask |= _gdk_x11_event_mask_table[i]; + } + + /* We don't want to set a native motion hint mask, as we're emulating motion + * hints. If we set a native one we just wouldn't get any events. + */ + xevent_mask &= ~PointerMotionHintMask; + + status = XGrabPointer (GDK_DISPLAY_XDISPLAY (display), + xwindow, + owner_events, + xevent_mask, + GrabModeAsync, GrabModeAsync, + xconfine_to, + xcursor, + time_); + } + + _gdk_x11_display_update_grab_info (display, device, status); + + return _gdk_x11_convert_grab_status (status); +} + +static void +gdk_x11_device_core_ungrab (GdkDevice *device, + guint32 time_) +{ + GdkDisplay *display; + gulong serial; + + display = gdk_device_get_display (device); + serial = NextRequest (GDK_DISPLAY_XDISPLAY (display)); + + if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) + XUngrabKeyboard (GDK_DISPLAY_XDISPLAY (display), time_); + else + XUngrabPointer (GDK_DISPLAY_XDISPLAY (display), time_); + + _gdk_x11_display_update_grab_info_ungrab (display, device, time_, serial); +} + +static GdkWindow * +gdk_x11_device_core_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel) +{ + GdkDisplay *display; + GdkScreen *screen; + Display *xdisplay; + GdkWindow *window; + Window xwindow, root, child, last; + int xroot_x, xroot_y, xwin_x, xwin_y; + unsigned int xmask; + + last = None; + display = gdk_device_get_display (device); + screen = gdk_display_get_default_screen (display); + + /* This function really only works if the mouse pointer is held still + * during its operation. If it moves from one leaf window to another + * than we'll end up with inaccurate values for win_x, win_y + * and the result. + */ + gdk_x11_display_grab (display); + + xdisplay = GDK_SCREEN_XDISPLAY (screen); + xwindow = GDK_SCREEN_XROOTWIN (screen); + + if (G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) + { + XQueryPointer (xdisplay, xwindow, + &root, &child, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &xmask); + + if (root == xwindow) + xwindow = child; + else + xwindow = root; + } + else + { + gint i, screens, width, height; + GList *toplevels, *list; + Window pointer_window, root, child; + int rootx = -1, rooty = -1; + int winx, winy; + unsigned int xmask; + + /* FIXME: untrusted clients case not multidevice-safe */ + pointer_window = None; + screens = gdk_display_get_n_screens (display); + + for (i = 0; i < screens; ++i) + { + screen = gdk_display_get_screen (display, i); + toplevels = gdk_screen_get_toplevel_windows (screen); + for (list = toplevels; list != NULL; list = g_list_next (list)) + { + window = GDK_WINDOW (list->data); + xwindow = GDK_WINDOW_XID (window); + gdk_x11_display_error_trap_push (display); + XQueryPointer (xdisplay, xwindow, + &root, &child, + &rootx, &rooty, + &winx, &winy, + &xmask); + if (gdk_x11_display_error_trap_pop (display)) + continue; + if (child != None) + { + pointer_window = child; + break; + } + gdk_window_get_geometry (window, NULL, NULL, &width, &height); + if (winx >= 0 && winy >= 0 && winx < width && winy < height) + { + /* A childless toplevel, or below another window? */ + XSetWindowAttributes attributes; + Window w; + + w = XCreateWindow (xdisplay, xwindow, winx, winy, 1, 1, 0, + CopyFromParent, InputOnly, CopyFromParent, + 0, &attributes); + XMapWindow (xdisplay, w); + XQueryPointer (xdisplay, xwindow, + &root, &child, + &rootx, &rooty, + &winx, &winy, + &xmask); + XDestroyWindow (xdisplay, w); + if (child == w) + { + pointer_window = xwindow; + break; + } + } + } + + g_list_free (toplevels); + if (pointer_window != None) + break; + } + + xwindow = pointer_window; + } + + while (xwindow) + { + last = xwindow; + gdk_x11_display_error_trap_push (display); + XQueryPointer (xdisplay, xwindow, + &root, &xwindow, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &xmask); + if (gdk_x11_display_error_trap_pop (display)) + break; + + if (get_toplevel && last != root && + (window = gdk_x11_window_lookup_for_display (display, last)) != NULL && + window->window_type != GDK_WINDOW_FOREIGN) + { + xwindow = last; + break; + } + } + + gdk_x11_display_ungrab (display); + + window = gdk_x11_window_lookup_for_display (display, last); + + if (win_x) + *win_x = (window) ? xwin_x : -1; + + if (win_y) + *win_y = (window) ? xwin_y : -1; + + if (mask) + *mask = xmask; + + return window; +} + +static void +gdk_x11_device_core_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask) +{ + GdkEventMask filter_mask, window_mask; + guint xmask = 0; + gint i; + + window_mask = gdk_window_get_events (window); + filter_mask = (GDK_POINTER_MOTION_MASK & + GDK_POINTER_MOTION_HINT_MASK & + GDK_BUTTON_MOTION_MASK & + GDK_BUTTON1_MOTION_MASK & + GDK_BUTTON2_MOTION_MASK & + GDK_BUTTON3_MOTION_MASK & + GDK_BUTTON_PRESS_MASK & + GDK_BUTTON_RELEASE_MASK & + GDK_KEY_PRESS_MASK & + GDK_KEY_RELEASE_MASK & + GDK_ENTER_NOTIFY_MASK & + GDK_LEAVE_NOTIFY_MASK & + GDK_FOCUS_CHANGE_MASK & + GDK_PROXIMITY_IN_MASK & + GDK_PROXIMITY_OUT_MASK & + GDK_SCROLL_MASK); + + /* Filter out non-device events */ + event_mask &= filter_mask; + + /* Unset device events on window mask */ + window_mask &= ~(filter_mask); + + /* Combine masks */ + event_mask |= window_mask; + + for (i = 0; i < _gdk_x11_event_mask_table_size; i++) + { + if (event_mask & (1 << (i + 1))) + xmask |= _gdk_x11_event_mask_table[i]; + } + + if (GDK_WINDOW_XID (window) != GDK_WINDOW_XROOTWIN (window)) + xmask |= StructureNotifyMask | PropertyChangeMask; + + XSelectInput (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + xmask); +} diff --git a/gdk/x11/gdkdevice-core.c b/gdk/x11/gdkdevice-core.c deleted file mode 100644 index 008e339b01..0000000000 --- a/gdk/x11/gdkdevice-core.c +++ /dev/null @@ -1,499 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#include "gdkdevice-core.h" - -#include "gdkinternals.h" -#include "gdkwindow.h" -#include "gdkprivate-x11.h" -#include "gdkx.h" - -static gboolean gdk_device_core_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); -static void gdk_device_core_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); -static void gdk_device_core_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor); -static void gdk_device_core_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y); -static gboolean gdk_device_core_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask); -static GdkGrabStatus gdk_device_core_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_); -static void gdk_device_core_ungrab (GdkDevice *device, - guint32 time_); -static GdkWindow * gdk_device_core_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel); -static void gdk_device_core_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask); - - -G_DEFINE_TYPE (GdkDeviceCore, gdk_device_core, GDK_TYPE_DEVICE) - -static void -gdk_device_core_class_init (GdkDeviceCoreClass *klass) -{ - GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - - device_class->get_history = gdk_device_core_get_history; - device_class->get_state = gdk_device_core_get_state; - device_class->set_window_cursor = gdk_device_core_set_window_cursor; - device_class->warp = gdk_device_core_warp; - device_class->query_state = gdk_device_core_query_state; - device_class->grab = gdk_device_core_grab; - device_class->ungrab = gdk_device_core_ungrab; - device_class->window_at_position = gdk_device_core_window_at_position; - device_class->select_window_events = gdk_device_core_select_window_events; -} - -static void -gdk_device_core_init (GdkDeviceCore *device_core) -{ - GdkDevice *device; - - device = GDK_DEVICE (device_core); - - _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_X, 0, 0, 1); - _gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_Y, 0, 0, 1); -} - -static gboolean -impl_coord_in_window (GdkWindow *window, - int impl_x, - int impl_y) -{ - if (impl_x < window->abs_x || - impl_x >= window->abs_x + window->width) - return FALSE; - - if (impl_y < window->abs_y || - impl_y >= window->abs_y + window->height) - return FALSE; - - return TRUE; -} - -static gboolean -gdk_device_core_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events) -{ - XTimeCoord *xcoords; - GdkTimeCoord **coords; - GdkWindow *impl_window; - int tmp_n_events; - int i, j; - - impl_window = _gdk_window_get_impl_window (window); - xcoords = XGetMotionEvents (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (impl_window), - start, stop, &tmp_n_events); - if (!xcoords) - return FALSE; - - coords = _gdk_device_allocate_history (device, tmp_n_events); - - for (i = 0, j = 0; i < tmp_n_events; i++) - { - if (impl_coord_in_window (window, xcoords[i].x, xcoords[i].y)) - { - coords[j]->time = xcoords[i].time; - coords[j]->axes[0] = xcoords[i].x - window->abs_x; - coords[j]->axes[1] = xcoords[i].y - window->abs_y; - j++; - } - } - - XFree (xcoords); - - /* free the events we allocated too much */ - for (i = j; i < tmp_n_events; i++) - { - g_free (coords[i]); - coords[i] = NULL; - } - - tmp_n_events = j; - - if (tmp_n_events == 0) - { - gdk_device_free_history (coords, tmp_n_events); - return FALSE; - } - - if (n_events) - *n_events = tmp_n_events; - - if (events) - *events = coords; - else if (coords) - gdk_device_free_history (coords, tmp_n_events); - - return TRUE; -} - -static void -gdk_device_core_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask) -{ - gint x_int, y_int; - - gdk_window_get_pointer (window, &x_int, &y_int, mask); - - if (axes) - { - axes[0] = x_int; - axes[1] = y_int; - } -} - -static void -gdk_device_core_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor) -{ - GdkCursorPrivate *cursor_private; - Cursor xcursor; - - cursor_private = (GdkCursorPrivate*) cursor; - - if (!cursor) - xcursor = None; - else - xcursor = cursor_private->xcursor; - - XDefineCursor (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - xcursor); -} - -static void -gdk_device_core_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y) -{ - Display *xdisplay; - Window dest; - - xdisplay = GDK_DISPLAY_XDISPLAY (gdk_device_get_display (device)); - dest = GDK_WINDOW_XID (gdk_screen_get_root_window (screen)); - - XWarpPointer (xdisplay, None, dest, 0, 0, 0, 0, x, y); -} - -static gboolean -gdk_device_core_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask) -{ - GdkDisplay *display; - Window xroot_window, xchild_window; - int xroot_x, xroot_y, xwin_x, xwin_y; - unsigned int xmask; - - display = gdk_window_get_display (window); - - if (!XQueryPointer (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - &xroot_window, - &xchild_window, - &xroot_x, - &xroot_y, - &xwin_x, - &xwin_y, - &xmask)) - { - return FALSE; - } - - if (root_window) - *root_window = gdk_window_lookup_for_display (display, xroot_window); - - if (child_window) - *child_window = gdk_window_lookup_for_display (display, xchild_window); - - if (root_x) - *root_x = xroot_x; - - if (root_y) - *root_y = xroot_y; - - if (win_x) - *win_x = xwin_x; - - if (win_y) - *win_y = xwin_y; - - if (mask) - *mask = xmask; - - return TRUE; -} - -static GdkGrabStatus -gdk_device_core_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_) -{ - GdkDisplay *display; - Window xwindow, xconfine_to; - int status; - - display = gdk_device_get_display (device); - - xwindow = GDK_WINDOW_XID (window); - - if (confine_to) - confine_to = _gdk_window_get_impl_window (confine_to); - - if (!confine_to || GDK_WINDOW_DESTROYED (confine_to)) - xconfine_to = None; - else - xconfine_to = GDK_WINDOW_XID (confine_to); - - if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) - { - /* Device is a keyboard */ - status = XGrabKeyboard (GDK_DISPLAY_XDISPLAY (display), - xwindow, - owner_events, - GrabModeAsync, GrabModeAsync, - time_); - } - else - { - Cursor xcursor; - guint xevent_mask; - gint i; - - /* Device is a pointer */ - if (!cursor) - xcursor = None; - else - { - _gdk_x11_cursor_update_theme (cursor); - xcursor = ((GdkCursorPrivate *) cursor)->xcursor; - } - - xevent_mask = 0; - - for (i = 0; i < _gdk_nenvent_masks; i++) - { - if (event_mask & (1 << (i + 1))) - xevent_mask |= _gdk_event_mask_table[i]; - } - - /* We don't want to set a native motion hint mask, as we're emulating motion - * hints. If we set a native one we just wouldn't get any events. - */ - xevent_mask &= ~PointerMotionHintMask; - - status = XGrabPointer (GDK_DISPLAY_XDISPLAY (display), - xwindow, - owner_events, - xevent_mask, - GrabModeAsync, GrabModeAsync, - xconfine_to, - xcursor, - time_); - } - - return _gdk_x11_convert_grab_status (status); -} - -static void -gdk_device_core_ungrab (GdkDevice *device, - guint32 time_) -{ - GdkDisplay *display; - - display = gdk_device_get_display (device); - - if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) - XUngrabKeyboard (GDK_DISPLAY_XDISPLAY (display), time_); - else - XUngrabPointer (GDK_DISPLAY_XDISPLAY (display), time_); -} - -static GdkWindow * -gdk_device_core_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel) -{ - GdkDisplay *display; - GdkScreen *screen; - Display *xdisplay; - GdkWindow *window; - Window xwindow, root, child, last; - int xroot_x, xroot_y, xwin_x, xwin_y; - unsigned int xmask; - - last = None; - display = gdk_device_get_display (device); - screen = gdk_display_get_default_screen (display); - - /* This function really only works if the mouse pointer is held still - * during its operation. If it moves from one leaf window to another - * than we'll end up with inaccurate values for win_x, win_y - * and the result. - */ - gdk_x11_display_grab (display); - - xdisplay = GDK_SCREEN_XDISPLAY (screen); - xwindow = GDK_SCREEN_XROOTWIN (screen); - - XQueryPointer (xdisplay, xwindow, - &root, &child, - &xroot_x, &xroot_y, - &xwin_x, &xwin_y, - &xmask); - - if (root == xwindow) - xwindow = child; - else - xwindow = root; - - while (xwindow) - { - last = xwindow; - XQueryPointer (xdisplay, xwindow, - &root, &xwindow, - &xroot_x, &xroot_y, - &xwin_x, &xwin_y, - &xmask); - - if (get_toplevel && last != root && - (window = gdk_window_lookup_for_display (display, last)) != NULL && - window->window_type != GDK_WINDOW_FOREIGN) - { - xwindow = last; - break; - } - } - - gdk_x11_display_ungrab (display); - - window = gdk_window_lookup_for_display (display, last); - - if (win_x) - *win_x = (window) ? xwin_x : -1; - - if (win_y) - *win_y = (window) ? xwin_y : -1; - - if (mask) - *mask = xmask; - - return window; -} - -static void -gdk_device_core_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask) -{ - GdkEventMask filter_mask, window_mask; - guint xmask = 0; - gint i; - - window_mask = gdk_window_get_events (window); - filter_mask = (GDK_POINTER_MOTION_MASK & - GDK_POINTER_MOTION_HINT_MASK & - GDK_BUTTON_MOTION_MASK & - GDK_BUTTON1_MOTION_MASK & - GDK_BUTTON2_MOTION_MASK & - GDK_BUTTON3_MOTION_MASK & - GDK_BUTTON_PRESS_MASK & - GDK_BUTTON_RELEASE_MASK & - GDK_KEY_PRESS_MASK & - GDK_KEY_RELEASE_MASK & - GDK_ENTER_NOTIFY_MASK & - GDK_LEAVE_NOTIFY_MASK & - GDK_FOCUS_CHANGE_MASK & - GDK_PROXIMITY_IN_MASK & - GDK_PROXIMITY_OUT_MASK & - GDK_SCROLL_MASK); - - /* Filter out non-device events */ - event_mask &= filter_mask; - - /* Unset device events on window mask */ - window_mask &= ~(filter_mask); - - /* Combine masks */ - event_mask |= window_mask; - - for (i = 0; i < _gdk_nenvent_masks; i++) - { - if (event_mask & (1 << (i + 1))) - xmask |= _gdk_event_mask_table[i]; - } - - if (GDK_WINDOW_XID (window) != GDK_WINDOW_XROOTWIN (window)) - xmask |= StructureNotifyMask | PropertyChangeMask; - - XSelectInput (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - xmask); -} diff --git a/gdk/x11/gdkdevice-core.h b/gdk/x11/gdkdevice-core.h deleted file mode 100644 index 04424b5883..0000000000 --- a/gdk/x11/gdkdevice-core.h +++ /dev/null @@ -1,52 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_CORE_H__ -#define __GDK_DEVICE_CORE_H__ - -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_CORE (gdk_device_core_get_type ()) -#define GDK_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_CORE, GdkDeviceCore)) -#define GDK_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_CORE, GdkDeviceCoreClass)) -#define GDK_IS_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_CORE)) -#define GDK_IS_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_CORE)) -#define GDK_DEVICE_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_CORE, GdkDeviceCoreClass)) - -typedef struct _GdkDeviceCore GdkDeviceCore; -typedef struct _GdkDeviceCoreClass GdkDeviceCoreClass; - -struct _GdkDeviceCore -{ - GdkDevice parent_instance; -}; - -struct _GdkDeviceCoreClass -{ - GdkDeviceClass parent_class; -}; - -G_GNUC_INTERNAL -GType gdk_device_core_get_type (void) G_GNUC_CONST; - -G_END_DECLS - -#endif /* __GDK_DEVICE_CORE_H__ */ diff --git a/gdk/x11/gdkdevice-xi.c b/gdk/x11/gdkdevice-xi.c index 8ffd8dfa06..bf816759f8 100644 --- a/gdk/x11/gdkdevice-xi.c +++ b/gdk/x11/gdkdevice-xi.c @@ -19,13 +19,13 @@ #include "config.h" -#include "gdkdevice-xi.h" +#include "gdkx11device-xi.h" +#include "gdkdeviceprivate-xi.h" #include "gdkwindow.h" -#include "gdkdeviceprivate.h" -#include "gdkprivate-x11.h" #include "gdkintl.h" -#include "gdkx.h" +#include "gdkprivate-x11.h" +#include "gdkasync.h" #define MAX_DEVICE_CLASSES 13 @@ -37,67 +37,67 @@ typedef struct gdouble root_y; } GdkWindowInputInfo; -static void gdk_device_xi_constructed (GObject *object); -static void gdk_device_xi_dispose (GObject *object); +static void gdk_x11_device_xi_constructed (GObject *object); +static void gdk_x11_device_xi_dispose (GObject *object); -static void gdk_device_xi_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gdk_device_xi_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); +static void gdk_x11_device_xi_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gdk_x11_device_xi_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); -static gboolean gdk_device_xi_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events); +static gboolean gdk_x11_device_xi_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); -static void gdk_device_xi_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); -static void gdk_device_xi_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor); -static void gdk_device_xi_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y); -static gboolean gdk_device_xi_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask); -static GdkGrabStatus gdk_device_xi_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_); -static void gdk_device_xi_ungrab (GdkDevice *device, - guint32 time_); +static void gdk_x11_device_xi_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +static void gdk_x11_device_xi_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor); +static void gdk_x11_device_xi_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y); +static gboolean gdk_x11_device_xi_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask); +static GdkGrabStatus gdk_x11_device_xi_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_); +static void gdk_x11_device_xi_ungrab (GdkDevice *device, + guint32 time_); -static GdkWindow* gdk_device_xi_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel); +static GdkWindow* gdk_x11_device_xi_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel); -static void gdk_device_xi_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask mask); +static void gdk_x11_device_xi_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask mask); -G_DEFINE_TYPE (GdkDeviceXI, gdk_device_xi, GDK_TYPE_DEVICE) +G_DEFINE_TYPE (GdkX11DeviceXI, gdk_x11_device_xi, GDK_TYPE_DEVICE) enum { PROP_0, @@ -105,31 +105,31 @@ enum { }; static void -gdk_device_xi_class_init (GdkDeviceXIClass *klass) +gdk_x11_device_xi_class_init (GdkX11DeviceXIClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); quark_window_input_info = g_quark_from_static_string ("gdk-window-input-info"); - object_class->constructed = gdk_device_xi_constructed; - object_class->set_property = gdk_device_xi_set_property; - object_class->get_property = gdk_device_xi_get_property; - object_class->dispose = gdk_device_xi_dispose; + object_class->constructed = gdk_x11_device_xi_constructed; + object_class->set_property = gdk_x11_device_xi_set_property; + object_class->get_property = gdk_x11_device_xi_get_property; + object_class->dispose = gdk_x11_device_xi_dispose; - device_class->get_history = gdk_device_xi_get_history; - device_class->get_state = gdk_device_xi_get_state; - device_class->set_window_cursor = gdk_device_xi_set_window_cursor; - device_class->warp = gdk_device_xi_warp; - device_class->query_state = gdk_device_xi_query_state; - device_class->grab = gdk_device_xi_grab; - device_class->ungrab = gdk_device_xi_ungrab; - device_class->window_at_position = gdk_device_xi_window_at_position; - device_class->select_window_events = gdk_device_xi_select_window_events; + device_class->get_history = gdk_x11_device_xi_get_history; + device_class->get_state = gdk_x11_device_xi_get_state; + device_class->set_window_cursor = gdk_x11_device_xi_set_window_cursor; + device_class->warp = gdk_x11_device_xi_warp; + device_class->query_state = gdk_x11_device_xi_query_state; + device_class->grab = gdk_x11_device_xi_grab; + device_class->ungrab = gdk_x11_device_xi_ungrab; + device_class->window_at_position = gdk_x11_device_xi_window_at_position; + device_class->select_window_events = gdk_x11_device_xi_select_window_events; g_object_class_install_property (object_class, - PROP_DEVICE_ID, - g_param_spec_int ("device-id", + PROP_DEVICE_ID, + g_param_spec_int ("device-id", P_("Device ID"), P_("Device ID"), 0, G_MAXINT, 0, @@ -137,38 +137,38 @@ gdk_device_xi_class_init (GdkDeviceXIClass *klass) } static void -gdk_device_xi_init (GdkDeviceXI *device) +gdk_x11_device_xi_init (GdkX11DeviceXI *device) { } static void -gdk_device_xi_constructed (GObject *object) +gdk_x11_device_xi_constructed (GObject *object) { - GdkDeviceXI *device; + GdkX11DeviceXI *device; GdkDisplay *display; - device = GDK_DEVICE_XI (object); + device = GDK_X11_DEVICE_XI (object); display = gdk_device_get_display (GDK_DEVICE (object)); - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); device->xdevice = XOpenDevice (GDK_DISPLAY_XDISPLAY (display), device->device_id); - if (gdk_error_trap_pop ()) + if (gdk_x11_display_error_trap_pop (display)) g_warning ("Device %s can't be opened", gdk_device_get_name (GDK_DEVICE (device))); - if (G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed) - G_OBJECT_CLASS (gdk_device_xi_parent_class)->constructed (object); + if (G_OBJECT_CLASS (gdk_x11_device_xi_parent_class)->constructed) + G_OBJECT_CLASS (gdk_x11_device_xi_parent_class)->constructed (object); } static void -gdk_device_xi_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +gdk_x11_device_xi_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GdkDeviceXI *device = GDK_DEVICE_XI (object); + GdkX11DeviceXI *device = GDK_X11_DEVICE_XI (object); switch (prop_id) { @@ -182,12 +182,12 @@ gdk_device_xi_set_property (GObject *object, } static void -gdk_device_xi_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +gdk_x11_device_xi_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GdkDeviceXI *device = GDK_DEVICE_XI (object); + GdkX11DeviceXI *device = GDK_X11_DEVICE_XI (object); switch (prop_id) { @@ -201,12 +201,12 @@ gdk_device_xi_get_property (GObject *object, } static void -gdk_device_xi_dispose (GObject *object) +gdk_x11_device_xi_dispose (GObject *object) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; GdkDisplay *display; - device_xi = GDK_DEVICE_XI (object); + device_xi = GDK_X11_DEVICE_XI (object); display = gdk_device_get_display (GDK_DEVICE (device_xi)); if (device_xi->xdevice) @@ -221,35 +221,35 @@ gdk_device_xi_dispose (GObject *object) device_xi->axis_data = NULL; } - G_OBJECT_CLASS (gdk_device_xi_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_x11_device_xi_parent_class)->dispose (object); } static gboolean -gdk_device_xi_get_history (GdkDevice *device, - GdkWindow *window, - guint32 start, - guint32 stop, - GdkTimeCoord ***events, - gint *n_events) +gdk_x11_device_xi_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events) { GdkTimeCoord **coords; XDeviceTimeCoord *device_coords; GdkWindow *impl_window; - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; gint n_events_return; gint mode_return; gint axis_count_return; gint i; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); impl_window = _gdk_window_get_impl_window (window); device_coords = XGetDeviceMotionEvents (GDK_WINDOW_XDISPLAY (impl_window), - device_xi->xdevice, - start, stop, - &n_events_return, + device_xi->xdevice, + start, stop, + &n_events_return, &mode_return, - &axis_count_return); + &axis_count_return); if (!device_coords) return FALSE; @@ -260,10 +260,10 @@ gdk_device_xi_get_history (GdkDevice *device, for (i = 0; i < *n_events; i++) { coords[i]->time = device_coords[i].time; - gdk_device_xi_translate_axes (device, window, - device_coords[i].data, - coords[i]->axes, - NULL, NULL); + _gdk_x11_device_xi_translate_axes (device, window, + device_coords[i].data, + coords[i]->axes, + NULL, NULL); } XFreeDeviceMotionEvents (device_coords); @@ -274,12 +274,12 @@ gdk_device_xi_get_history (GdkDevice *device, } static void -gdk_device_xi_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask) +gdk_x11_device_xi_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; XDeviceState *state; XInputClass *input_class; gint i; @@ -287,7 +287,7 @@ gdk_device_xi_get_state (GdkDevice *device, if (mask) gdk_window_get_pointer (window, NULL, NULL, mask); - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); state = XQueryDeviceState (GDK_WINDOW_XDISPLAY (window), device_xi->xdevice); input_class = state->data; @@ -298,9 +298,9 @@ gdk_device_xi_get_state (GdkDevice *device, { case ValuatorClass: if (axes) - gdk_device_xi_translate_axes (device, window, - ((XValuatorState *) input_class)->valuators, - axes, NULL, NULL); + _gdk_x11_device_xi_translate_axes (device, window, + ((XValuatorState *) input_class)->valuators, + axes, NULL, NULL); break; case ButtonClass: @@ -322,17 +322,17 @@ gdk_device_xi_get_state (GdkDevice *device, } static void -gdk_device_xi_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor) +gdk_x11_device_xi_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor) { } static void -gdk_device_xi_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y) +gdk_x11_device_xi_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y) { } @@ -342,11 +342,11 @@ find_events (GdkDevice *device, XEventClass *classes, int *num_classes) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; XEventClass class; gint i; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); i = 0; if (mask & GDK_BUTTON_PRESS_MASK) @@ -374,10 +374,10 @@ find_events (GdkDevice *device, /* Make sure device->motionnotify_type is set */ DeviceMotionNotify (device_xi->xdevice, device_xi->motion_notify_type, class); if (class != 0) - classes[i++] = class; + classes[i++] = class; DeviceStateNotify (device_xi->xdevice, device_xi->state_notify_type, class); if (class != 0) - classes[i++] = class; + classes[i++] = class; } if (mask & GDK_KEY_PRESS_MASK) @@ -412,36 +412,43 @@ find_events (GdkDevice *device, } static gboolean -gdk_device_xi_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask) +gdk_x11_device_xi_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask) { return FALSE; } static GdkGrabStatus -gdk_device_xi_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_) +gdk_x11_device_xi_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_) { XEventClass event_classes[MAX_DEVICE_CLASSES]; gint status, num_classes; - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; + GdkDisplay *display; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); + display = gdk_device_get_display (device); find_events (device, event_mask, event_classes, &num_classes); - status = XGrabDevice (GDK_WINDOW_XDISPLAY (window), +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + status = GrabSuccess; + else +#endif + status = XGrabDevice (GDK_DISPLAY_XDISPLAY (display), device_xi->xdevice, GDK_WINDOW_XID (window), owner_events, @@ -449,51 +456,59 @@ gdk_device_xi_grab (GdkDevice *device, GrabModeAsync, GrabModeAsync, time_); + _gdk_x11_display_update_grab_info (display, device, status); + return _gdk_x11_convert_grab_status (status); } static void -gdk_device_xi_ungrab (GdkDevice *device, - guint32 time_) +gdk_x11_device_xi_ungrab (GdkDevice *device, + guint32 time_) { + GdkX11DeviceXI *device_xi; GdkDisplay *display; - GdkDeviceXI *device_xi; + Display *xdisplay; + unsigned long serial; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); display = gdk_device_get_display (device); + xdisplay = GDK_DISPLAY_XDISPLAY (display); - XUngrabDevice (GDK_DISPLAY_XDISPLAY (device), - device_xi->xdevice, - time_); + serial = NextRequest (xdisplay); + + XUngrabDevice (xdisplay, device_xi->xdevice, time_); + + _gdk_x11_display_update_grab_info_ungrab (display, device, time_, serial); } static GdkWindow* -gdk_device_xi_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel) +gdk_x11_device_xi_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel) { return NULL; } + static void -gdk_device_xi_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask) +gdk_x11_device_xi_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask) { XEventClass event_classes[MAX_DEVICE_CLASSES]; - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; gint num_classes; event_mask |= (GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK); - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); find_events (device, event_mask, event_classes, &num_classes); XSelectExtensionEvent (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - event_classes, num_classes); + GDK_WINDOW_XID (window), + event_classes, num_classes); if (event_mask) { @@ -512,7 +527,7 @@ gdk_device_xi_select_window_events (GdkDevice *device, } void -gdk_device_xi_update_window_info (GdkWindow *window) +_gdk_x11_device_xi_update_window_info (GdkWindow *window) { GdkWindowInputInfo *info; gint root_x, root_y; @@ -529,9 +544,9 @@ gdk_device_xi_update_window_info (GdkWindow *window) } static gboolean -gdk_device_xi_get_window_info (GdkWindow *window, - gdouble *root_x, - gdouble *root_y) +gdk_x11_device_xi_get_window_info (GdkWindow *window, + gdouble *root_x, + gdouble *root_y) { GdkWindowInputInfo *info; @@ -548,15 +563,15 @@ gdk_device_xi_get_window_info (GdkWindow *window, } void -gdk_device_xi_update_axes (GdkDevice *device, - gint axes_count, - gint first_axis, - gint *axis_data) +_gdk_x11_device_xi_update_axes (GdkDevice *device, + gint axes_count, + gint first_axis, + gint *axis_data) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; int i; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); g_return_if_fail (first_axis >= 0 && first_axis + axes_count <= gdk_device_get_n_axes (device)); @@ -568,25 +583,25 @@ gdk_device_xi_update_axes (GdkDevice *device, } void -gdk_device_xi_translate_axes (GdkDevice *device, - GdkWindow *window, - gint *axis_data, - gdouble *axes, - gdouble *x, - gdouble *y) +_gdk_x11_device_xi_translate_axes (GdkDevice *device, + GdkWindow *window, + gint *axis_data, + gdouble *axes, + gdouble *x, + gdouble *y) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; GdkWindow *impl_window; gdouble root_x, root_y; gdouble temp_x, temp_y; gint n_axes; gint i; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); impl_window = _gdk_window_get_impl_window (window); temp_x = temp_y = 0; - if (!gdk_device_xi_get_window_info (impl_window, &root_x, &root_y)) + if (!gdk_x11_device_xi_get_window_info (impl_window, &root_x, &root_y)) return; n_axes = gdk_device_get_n_axes (device); diff --git a/gdk/x11/gdkdevice-xi.h b/gdk/x11/gdkdevice-xi.h deleted file mode 100644 index 55f33d30a2..0000000000 --- a/gdk/x11/gdkdevice-xi.h +++ /dev/null @@ -1,88 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_XI_H__ -#define __GDK_DEVICE_XI_H__ - -#include -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_XI (gdk_device_xi_get_type ()) -#define GDK_DEVICE_XI(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_XI, GdkDeviceXI)) -#define GDK_DEVICE_XI_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_XI, GdkDeviceXIClass)) -#define GDK_IS_DEVICE_XI(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_XI)) -#define GDK_IS_DEVICE_XI_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_XI)) -#define GDK_DEVICE_XI_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_XI, GdkDeviceXIClass)) - -typedef struct _GdkDeviceXI GdkDeviceXI; -typedef struct _GdkDeviceXIClass GdkDeviceXIClass; - -struct _GdkDeviceXI -{ - GdkDevice parent_instance; - - guint32 device_id; - XDevice *xdevice; - - gint button_press_type; - gint button_release_type; - gint key_press_type; - gint key_release_type; - gint motion_notify_type; - gint proximity_in_type; - gint proximity_out_type; - gint state_notify_type; - - /* minimum key code for device */ - gint min_keycode; - - gint *axis_data; - - guint in_proximity : 1; -}; - -struct _GdkDeviceXIClass -{ - GdkDeviceClass parent_class; -}; - -G_GNUC_INTERNAL -GType gdk_device_xi_get_type (void) G_GNUC_CONST; - -G_GNUC_INTERNAL -void gdk_device_xi_update_window_info (GdkWindow *window); - -G_GNUC_INTERNAL -void gdk_device_xi_update_axes (GdkDevice *device, - gint axes_count, - gint first_axis, - gint *axis_data); -G_GNUC_INTERNAL -void gdk_device_xi_translate_axes (GdkDevice *device, - GdkWindow *window, - gint *axis_data, - gdouble *axes, - gdouble *x, - gdouble *y); - -G_END_DECLS - -#endif /* __GDK_DEVICE_XI_H__ */ diff --git a/gdk/x11/gdkdevice-xi2.c b/gdk/x11/gdkdevice-xi2.c index 7c91cd3f82..78b9de693a 100644 --- a/gdk/x11/gdkdevice-xi2.c +++ b/gdk/x11/gdkdevice-xi2.c @@ -19,69 +19,80 @@ #include "config.h" -#include "gdkdevice-xi2.h" +#include "gdkx11device-xi2.h" +#include "gdkdeviceprivate.h" #include "gdkintl.h" -#include "gdkx.h" +#include "gdkasync.h" +#include "gdkprivate-x11.h" +#include +#include #include -struct _GdkDeviceXI2Private +struct _GdkX11DeviceXI2 { - int device_id; + GdkDevice parent_instance; + + gint device_id; }; -static void gdk_device_xi2_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void gdk_device_xi2_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); +struct _GdkX11DeviceXI2Class +{ + GdkDeviceClass parent_class; +}; -static void gdk_device_xi2_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask); -static void gdk_device_xi2_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor); -static void gdk_device_xi2_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y); -static gboolean gdk_device_xi2_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask); +static void gdk_x11_device_xi2_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void gdk_x11_device_xi2_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); -static GdkGrabStatus gdk_device_xi2_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_); -static void gdk_device_xi2_ungrab (GdkDevice *device, - guint32 time_); +static void gdk_x11_device_xi2_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +static void gdk_x11_device_xi2_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor); +static void gdk_x11_device_xi2_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y); +static gboolean gdk_x11_device_xi2_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask); -static GdkWindow * gdk_device_xi2_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel); -static void gdk_device_xi2_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask); +static GdkGrabStatus gdk_x11_device_xi2_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_); +static void gdk_x11_device_xi2_ungrab (GdkDevice *device, + guint32 time_); + +static GdkWindow * gdk_x11_device_xi2_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel); +static void gdk_x11_device_xi2_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask); -G_DEFINE_TYPE (GdkDeviceXI2, gdk_device_xi2, GDK_TYPE_DEVICE) +G_DEFINE_TYPE (GdkX11DeviceXI2, gdk_x11_device_xi2, GDK_TYPE_DEVICE) enum { PROP_0, @@ -89,58 +100,49 @@ enum { }; static void -gdk_device_xi2_class_init (GdkDeviceXI2Class *klass) +gdk_x11_device_xi2_class_init (GdkX11DeviceXI2Class *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - object_class->get_property = gdk_device_xi2_get_property; - object_class->set_property = gdk_device_xi2_set_property; + object_class->get_property = gdk_x11_device_xi2_get_property; + object_class->set_property = gdk_x11_device_xi2_set_property; - device_class->get_state = gdk_device_xi2_get_state; - device_class->set_window_cursor = gdk_device_xi2_set_window_cursor; - device_class->warp = gdk_device_xi2_warp; - device_class->query_state = gdk_device_xi2_query_state; - device_class->grab = gdk_device_xi2_grab; - device_class->ungrab = gdk_device_xi2_ungrab; - device_class->window_at_position = gdk_device_xi2_window_at_position; - device_class->select_window_events = gdk_device_xi2_select_window_events; + device_class->get_state = gdk_x11_device_xi2_get_state; + device_class->set_window_cursor = gdk_x11_device_xi2_set_window_cursor; + device_class->warp = gdk_x11_device_xi2_warp; + device_class->query_state = gdk_x11_device_xi2_query_state; + device_class->grab = gdk_x11_device_xi2_grab; + device_class->ungrab = gdk_x11_device_xi2_ungrab; + device_class->window_at_position = gdk_x11_device_xi2_window_at_position; + device_class->select_window_events = gdk_x11_device_xi2_select_window_events; g_object_class_install_property (object_class, - PROP_DEVICE_ID, - g_param_spec_int ("device-id", + PROP_DEVICE_ID, + g_param_spec_int ("device-id", P_("Device ID"), P_("Device identifier"), 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - - g_type_class_add_private (object_class, sizeof (GdkDeviceXI2Private)); } static void -gdk_device_xi2_init (GdkDeviceXI2 *device) +gdk_x11_device_xi2_init (GdkX11DeviceXI2 *device) { - GdkDeviceXI2Private *priv; - - device->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (device, - GDK_TYPE_DEVICE_XI2, - GdkDeviceXI2Private); } static void -gdk_device_xi2_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +gdk_x11_device_xi2_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GdkDeviceXI2Private *priv; - - priv = GDK_DEVICE_XI2 (object)->priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (object); switch (prop_id) { case PROP_DEVICE_ID: - g_value_set_int (value, priv->device_id); + g_value_set_int (value, device_xi2->device_id); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -149,19 +151,17 @@ gdk_device_xi2_get_property (GObject *object, } static void -gdk_device_xi2_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +gdk_x11_device_xi2_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GdkDeviceXI2Private *priv; - - priv = GDK_DEVICE_XI2 (object)->priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (object); switch (prop_id) { case PROP_DEVICE_ID: - priv->device_id = g_value_get_int (value); + device_xi2->device_id = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -170,23 +170,22 @@ gdk_device_xi2_set_property (GObject *object, } static void -gdk_device_xi2_get_state (GdkDevice *device, - GdkWindow *window, - gdouble *axes, - GdkModifierType *mask) +gdk_x11_device_xi2_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); GdkDisplay *display; XIDeviceInfo *info; gint i, j, ndevices; - priv = GDK_DEVICE_XI2 (device)->priv; display = gdk_device_get_display (device); if (axes) { info = XIQueryDevice(GDK_DISPLAY_XDISPLAY (display), - priv->device_id, &ndevices); + device_xi2->device_id, &ndevices); for (i = 0, j = 0; i < info->num_classes; i++) { @@ -231,73 +230,66 @@ gdk_device_xi2_get_state (GdkDevice *device, } if (mask) - gdk_device_xi2_query_state (device, window, - NULL, NULL, - NULL, NULL, - NULL, NULL, - mask); + gdk_x11_device_xi2_query_state (device, window, + NULL, NULL, + NULL, NULL, + NULL, NULL, + mask); } static void -gdk_device_xi2_set_window_cursor (GdkDevice *device, - GdkWindow *window, - GdkCursor *cursor) +gdk_x11_device_xi2_set_window_cursor (GdkDevice *device, + GdkWindow *window, + GdkCursor *cursor) { - GdkDeviceXI2Private *priv; - GdkCursorPrivate *cursor_private; - - priv = GDK_DEVICE_XI2 (device)->priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); /* Non-master devices don't have a cursor */ if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER) return; if (cursor) - { - cursor_private = (GdkCursorPrivate*) cursor; - - XIDefineCursor (GDK_WINDOW_XDISPLAY (window), - priv->device_id, - GDK_WINDOW_XID (window), - cursor_private->xcursor); - } + XIDefineCursor (GDK_WINDOW_XDISPLAY (window), + device_xi2->device_id, + GDK_WINDOW_XID (window), + gdk_x11_cursor_get_xcursor (cursor)); else XIUndefineCursor (GDK_WINDOW_XDISPLAY (window), - priv->device_id, + device_xi2->device_id, GDK_WINDOW_XID (window)); } static void -gdk_device_xi2_warp (GdkDevice *device, - GdkScreen *screen, - gint x, - gint y) +gdk_x11_device_xi2_warp (GdkDevice *device, + GdkScreen *screen, + gint x, + gint y) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); Window dest; - priv = GDK_DEVICE_XI2 (device)->priv; dest = GDK_WINDOW_XID (gdk_screen_get_root_window (screen)); XIWarpPointer (GDK_SCREEN_XDISPLAY (screen), - priv->device_id, + device_xi2->device_id, None, dest, 0, 0, 0, 0, x, y); } static gboolean -gdk_device_xi2_query_state (GdkDevice *device, - GdkWindow *window, - GdkWindow **root_window, - GdkWindow **child_window, - gint *root_x, - gint *root_y, - gint *win_x, - gint *win_y, - GdkModifierType *mask) +gdk_x11_device_xi2_query_state (GdkDevice *device, + GdkWindow *window, + GdkWindow **root_window, + GdkWindow **child_window, + gint *root_x, + gint *root_y, + gint *win_x, + gint *win_y, + GdkModifierType *mask) { + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); GdkDisplay *display; - GdkDeviceXI2Private *priv; + GdkScreen *default_screen; Window xroot_window, xchild_window; gdouble xroot_x, xroot_y, xwin_x, xwin_y; XIButtonState button_state; @@ -307,30 +299,53 @@ gdk_device_xi2_query_state (GdkDevice *device, if (!window || GDK_WINDOW_DESTROYED (window)) return FALSE; - priv = GDK_DEVICE_XI2 (device)->priv; display = gdk_window_get_display (window); + default_screen = gdk_display_get_default_screen (display); - if (!XIQueryPointer (GDK_WINDOW_XDISPLAY (window), - priv->device_id, - GDK_WINDOW_XID (window), - &xroot_window, - &xchild_window, - &xroot_x, - &xroot_y, - &xwin_x, - &xwin_y, - &button_state, - &mod_state, - &group_state)) + if (G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) { - return FALSE; + if (!XIQueryPointer (GDK_WINDOW_XDISPLAY (window), + device_xi2->device_id, + GDK_WINDOW_XID (window), + &xroot_window, + &xchild_window, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &button_state, + &mod_state, + &group_state)) + return FALSE; + } + else + { + XSetWindowAttributes attributes; + Display *xdisplay; + Window xwindow, w; + + /* FIXME: untrusted clients not multidevice-safe */ + xdisplay = GDK_SCREEN_XDISPLAY (default_screen); + xwindow = GDK_SCREEN_XROOTWIN (default_screen); + + w = XCreateWindow (xdisplay, xwindow, 0, 0, 1, 1, 0, + CopyFromParent, InputOnly, CopyFromParent, + 0, &attributes); + XIQueryPointer (xdisplay, device_xi2->device_id, + w, + &xroot_window, + &xchild_window, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &button_state, + &mod_state, + &group_state); + XDestroyWindow (xdisplay, w); } if (root_window) - *root_window = gdk_window_lookup_for_display (display, xroot_window); + *root_window = gdk_x11_window_lookup_for_display (display, xroot_window); if (child_window) - *child_window = gdk_window_lookup_for_display (display, xchild_window); + *child_window = gdk_x11_window_lookup_for_display (display, xchild_window); if (root_x) *root_x = (gint) xroot_x; @@ -345,28 +360,27 @@ gdk_device_xi2_query_state (GdkDevice *device, *win_y = (gint) xwin_y; if (mask) - *mask = gdk_device_xi2_translate_state (&mod_state, &button_state); + *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state); return TRUE; } static GdkGrabStatus -gdk_device_xi2_grab (GdkDevice *device, - GdkWindow *window, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time_) +gdk_x11_device_xi2_grab (GdkDevice *device, + GdkWindow *window, + gboolean owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time_) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); GdkDisplay *display; XIEventMask mask; Window xwindow; Cursor xcursor; - int status; + gint status; - priv = GDK_DEVICE_XI2 (device)->priv; display = gdk_device_get_display (device); /* FIXME: confine_to is actually unused */ @@ -378,14 +392,19 @@ gdk_device_xi2_grab (GdkDevice *device, else { _gdk_x11_cursor_update_theme (cursor); - xcursor = ((GdkCursorPrivate *) cursor)->xcursor; + xcursor = gdk_x11_cursor_get_xcursor (cursor); } - mask.deviceid = priv->device_id; - mask.mask = gdk_device_xi2_translate_event_mask (event_mask, &mask.mask_len); + mask.deviceid = device_xi2->device_id; + mask.mask = _gdk_x11_device_xi2_translate_event_mask (event_mask, &mask.mask_len); +#ifdef G_ENABLE_DEBUG + if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) + status = GrabSuccess; + else +#endif status = XIGrabDevice (GDK_DISPLAY_XDISPLAY (display), - priv->device_id, + device_xi2->device_id, xwindow, time_, xcursor, @@ -395,32 +414,35 @@ gdk_device_xi2_grab (GdkDevice *device, g_free (mask.mask); + _gdk_x11_display_update_grab_info (display, device, status); + return _gdk_x11_convert_grab_status (status); } static void -gdk_device_xi2_ungrab (GdkDevice *device, - guint32 time_) +gdk_x11_device_xi2_ungrab (GdkDevice *device, + guint32 time_) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); GdkDisplay *display; + gulong serial; - priv = GDK_DEVICE_XI2 (device)->priv; display = gdk_device_get_display (device); + serial = NextRequest (GDK_DISPLAY_XDISPLAY (display)); - XIUngrabDevice (GDK_DISPLAY_XDISPLAY (display), - priv->device_id, - time_); + XIUngrabDevice (GDK_DISPLAY_XDISPLAY (display), device_xi2->device_id, time_); + + _gdk_x11_display_update_grab_info_ungrab (display, device, time_, serial); } static GdkWindow * -gdk_device_xi2_window_at_position (GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel) +gdk_x11_device_xi2_window_at_position (GdkDevice *device, + gint *win_x, + gint *win_y, + GdkModifierType *mask, + gboolean get_toplevel) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); GdkDisplay *display; GdkScreen *screen; Display *xdisplay; @@ -431,7 +453,6 @@ gdk_device_xi2_window_at_position (GdkDevice *device, XIModifierState mod_state; XIGroupState group_state; - priv = GDK_DEVICE_XI2 (device)->priv; display = gdk_device_get_display (device); screen = gdk_display_get_default_screen (display); @@ -445,26 +466,101 @@ gdk_device_xi2_window_at_position (GdkDevice *device, xdisplay = GDK_SCREEN_XDISPLAY (screen); xwindow = GDK_SCREEN_XROOTWIN (screen); - XIQueryPointer (xdisplay, - priv->device_id, - xwindow, - &root, &child, - &xroot_x, &xroot_y, - &xwin_x, &xwin_y, - &button_state, - &mod_state, - &group_state); + if (G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) + { + XIQueryPointer (xdisplay, + device_xi2->device_id, + xwindow, + &root, &child, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &button_state, + &mod_state, + &group_state); - if (root == xwindow) - xwindow = child; + if (root == xwindow) + xwindow = child; + else + xwindow = root; + } else - xwindow = root; + { + gint i, screens, width, height; + GList *toplevels, *list; + Window pointer_window, root, child; + + /* FIXME: untrusted clients case not multidevice-safe */ + pointer_window = None; + screens = gdk_display_get_n_screens (display); + + for (i = 0; i < screens; ++i) + { + screen = gdk_display_get_screen (display, i); + toplevels = gdk_screen_get_toplevel_windows (screen); + for (list = toplevels; list != NULL; list = g_list_next (list)) + { + window = GDK_WINDOW (list->data); + xwindow = GDK_WINDOW_XID (window); + gdk_x11_display_error_trap_push (display); + XIQueryPointer (xdisplay, + device_xi2->device_id, + xwindow, + &root, &child, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &button_state, + &mod_state, + &group_state); + if (gdk_x11_display_error_trap_pop (display)) + continue; + if (child != None) + { + pointer_window = child; + break; + } + gdk_window_get_geometry (window, NULL, NULL, &width, &height); + if (xwin_x >= 0 && xwin_y >= 0 && xwin_x < width && xwin_y < height) + { + /* A childless toplevel, or below another window? */ + XSetWindowAttributes attributes; + Window w; + + w = XCreateWindow (xdisplay, xwindow, (int)xwin_x, (int)xwin_y, 1, 1, 0, + CopyFromParent, InputOnly, CopyFromParent, + 0, &attributes); + XMapWindow (xdisplay, w); + XIQueryPointer (xdisplay, + device_xi2->device_id, + xwindow, + &root, &child, + &xroot_x, &xroot_y, + &xwin_x, &xwin_y, + &button_state, + &mod_state, + &group_state); + XDestroyWindow (xdisplay, w); + if (child == w) + { + pointer_window = xwindow; + break; + } + } + } + + g_list_free (toplevels); + if (pointer_window != None) + break; + } + + xwindow = pointer_window; + } while (xwindow) { last = xwindow; + gdk_x11_display_error_trap_push (display); XIQueryPointer (xdisplay, - priv->device_id, + device_xi2->device_id, xwindow, &root, &xwindow, &xroot_x, &xroot_y, @@ -472,9 +568,11 @@ gdk_device_xi2_window_at_position (GdkDevice *device, &button_state, &mod_state, &group_state); + if (gdk_x11_display_error_trap_pop (display)) + break; if (get_toplevel && last != root && - (window = gdk_window_lookup_for_display (display, last)) != NULL && + (window = gdk_x11_window_lookup_for_display (display, last)) != NULL && GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) { xwindow = last; @@ -484,7 +582,7 @@ gdk_device_xi2_window_at_position (GdkDevice *device, gdk_x11_display_ungrab (display); - window = gdk_window_lookup_for_display (display, last); + window = gdk_x11_window_lookup_for_display (display, last); if (win_x) *win_x = (window) ? (gint) xwin_x : -1; @@ -493,23 +591,21 @@ gdk_device_xi2_window_at_position (GdkDevice *device, *win_y = (window) ? (gint) xwin_y : -1; if (mask) - *mask = gdk_device_xi2_translate_state (&mod_state, &button_state); + *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state); return window; } static void -gdk_device_xi2_select_window_events (GdkDevice *device, - GdkWindow *window, - GdkEventMask event_mask) +gdk_x11_device_xi2_select_window_events (GdkDevice *device, + GdkWindow *window, + GdkEventMask event_mask) { - GdkDeviceXI2Private *priv; + GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); XIEventMask evmask; - priv = GDK_DEVICE_XI2 (device)->priv; - - evmask.deviceid = priv->device_id; - evmask.mask = gdk_device_xi2_translate_event_mask (event_mask, &evmask.mask_len); + evmask.deviceid = device_xi2->device_id; + evmask.mask = _gdk_x11_device_xi2_translate_event_mask (event_mask, &evmask.mask_len); XISelectEvents (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), @@ -519,8 +615,8 @@ gdk_device_xi2_select_window_events (GdkDevice *device, } guchar * -gdk_device_xi2_translate_event_mask (GdkEventMask event_mask, - int *len) +_gdk_x11_device_xi2_translate_event_mask (GdkEventMask event_mask, + gint *len) { guchar *mask; @@ -575,8 +671,8 @@ gdk_device_xi2_translate_event_mask (GdkEventMask event_mask, } guint -gdk_device_xi2_translate_state (XIModifierState *mods_state, - XIButtonState *buttons_state) +_gdk_x11_device_xi2_translate_state (XIModifierState *mods_state, + XIButtonState *buttons_state) { guint state = 0; diff --git a/gdk/x11/gdkdevice-xi2.h b/gdk/x11/gdkdevice-xi2.h deleted file mode 100644 index 2fa3064744..0000000000 --- a/gdk/x11/gdkdevice-xi2.h +++ /dev/null @@ -1,65 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_XI2_H__ -#define __GDK_DEVICE_XI2_H__ - -#include -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_XI2 (gdk_device_xi2_get_type ()) -#define GDK_DEVICE_XI2(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_XI2, GdkDeviceXI2)) -#define GDK_DEVICE_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_XI2, GdkDeviceXI2Class)) -#define GDK_IS_DEVICE_XI2(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_XI2)) -#define GDK_IS_DEVICE_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_XI2)) -#define GDK_DEVICE_XI2_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_XI2, GdkDeviceXI2Class)) - -typedef struct _GdkDeviceXI2 GdkDeviceXI2; -typedef struct _GdkDeviceXI2Private GdkDeviceXI2Private; -typedef struct _GdkDeviceXI2Class GdkDeviceXI2Class; - -struct _GdkDeviceXI2 -{ - GdkDevice parent_instance; - - /*< private >*/ - GdkDeviceXI2Private *priv; -}; - -struct _GdkDeviceXI2Class -{ - GdkDeviceClass parent_class; -}; - -G_GNUC_INTERNAL -GType gdk_device_xi2_get_type (void) G_GNUC_CONST; - -G_GNUC_INTERNAL -guchar * gdk_device_xi2_translate_event_mask (GdkEventMask event_mask, - int *len); -G_GNUC_INTERNAL -guint gdk_device_xi2_translate_state (XIModifierState *mods_state, - XIButtonState *buttons_state); - - -G_END_DECLS - -#endif /* __GDK_DEVICE_XI2_H__ */ diff --git a/gdk/x11/gdkdevicemanager-core.c b/gdk/x11/gdkdevicemanager-core-x11.c similarity index 53% rename from gdk/x11/gdkdevicemanager-core.c rename to gdk/x11/gdkdevicemanager-core-x11.c index 5d592b6d99..951bcaeaed 100644 --- a/gdk/x11/gdkdevicemanager-core.c +++ b/gdk/x11/gdkdevicemanager-core-x11.c @@ -19,15 +19,15 @@ #include "config.h" -#include "gdkdevicemanager-core.h" +#include "gdkx11devicemanager-core.h" +#include "gdkdevicemanagerprivate-core.h" +#include "gdkx11device-core.h" -#include "gdktypes.h" -#include "gdkdevicemanager.h" +#include "gdkdeviceprivate.h" +#include "gdkdisplayprivate.h" #include "gdkeventtranslator.h" -#include "gdkdevice-core.h" -#include "gdkkeysyms.h" #include "gdkprivate-x11.h" -#include "gdkx.h" +#include "gdkkeysyms.h" #ifdef HAVE_XKB #include @@ -37,48 +37,48 @@ #define HAS_FOCUS(toplevel) \ ((toplevel)->has_focus || (toplevel)->has_pointer_focus) -static void gdk_device_manager_core_finalize (GObject *object); -static void gdk_device_manager_core_constructed (GObject *object); +static void gdk_x11_device_manager_core_finalize (GObject *object); +static void gdk_x11_device_manager_core_constructed (GObject *object); -static GList * gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type); -static GdkDevice * gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager); +static GList * gdk_x11_device_manager_core_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type); +static GdkDevice * gdk_x11_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager); -static void gdk_device_manager_event_translator_init (GdkEventTranslatorIface *iface); +static void gdk_x11_device_manager_event_translator_init (GdkEventTranslatorIface *iface); -static gboolean gdk_device_manager_core_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent); +static gboolean gdk_x11_device_manager_core_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent); -G_DEFINE_TYPE_WITH_CODE (GdkDeviceManagerCore, gdk_device_manager_core, GDK_TYPE_DEVICE_MANAGER, +G_DEFINE_TYPE_WITH_CODE (GdkX11DeviceManagerCore, gdk_x11_device_manager_core, GDK_TYPE_DEVICE_MANAGER, G_IMPLEMENT_INTERFACE (GDK_TYPE_EVENT_TRANSLATOR, - gdk_device_manager_event_translator_init)) + gdk_x11_device_manager_event_translator_init)) static void -gdk_device_manager_core_class_init (GdkDeviceManagerCoreClass *klass) +gdk_x11_device_manager_core_class_init (GdkX11DeviceManagerCoreClass *klass) { GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->finalize = gdk_device_manager_core_finalize; - object_class->constructed = gdk_device_manager_core_constructed; - device_manager_class->list_devices = gdk_device_manager_core_list_devices; - device_manager_class->get_client_pointer = gdk_device_manager_core_get_client_pointer; + object_class->finalize = gdk_x11_device_manager_core_finalize; + object_class->constructed = gdk_x11_device_manager_core_constructed; + device_manager_class->list_devices = gdk_x11_device_manager_core_list_devices; + device_manager_class->get_client_pointer = gdk_x11_device_manager_core_get_client_pointer; } static void -gdk_device_manager_event_translator_init (GdkEventTranslatorIface *iface) +gdk_x11_device_manager_event_translator_init (GdkEventTranslatorIface *iface) { - iface->translate_event = gdk_device_manager_core_translate_event; + iface->translate_event = gdk_x11_device_manager_core_translate_event; } static GdkDevice * create_core_pointer (GdkDeviceManager *device_manager, GdkDisplay *display) { - return g_object_new (GDK_TYPE_DEVICE_CORE, + return g_object_new (GDK_TYPE_X11_DEVICE_CORE, "name", "Core Pointer", "type", GDK_DEVICE_TYPE_MASTER, "input-source", GDK_SOURCE_MOUSE, @@ -93,7 +93,7 @@ static GdkDevice * create_core_keyboard (GdkDeviceManager *device_manager, GdkDisplay *display) { - return g_object_new (GDK_TYPE_DEVICE_CORE, + return g_object_new (GDK_TYPE_X11_DEVICE_CORE, "name", "Core Keyboard", "type", GDK_DEVICE_TYPE_MASTER, "input-source", GDK_SOURCE_KEYBOARD, @@ -105,30 +105,30 @@ create_core_keyboard (GdkDeviceManager *device_manager, } static void -gdk_device_manager_core_init (GdkDeviceManagerCore *device_manager) +gdk_x11_device_manager_core_init (GdkX11DeviceManagerCore *device_manager) { } static void -gdk_device_manager_core_finalize (GObject *object) +gdk_x11_device_manager_core_finalize (GObject *object) { - GdkDeviceManagerCore *device_manager_core; + GdkX11DeviceManagerCore *device_manager_core; - device_manager_core = GDK_DEVICE_MANAGER_CORE (object); + device_manager_core = GDK_X11_DEVICE_MANAGER_CORE (object); g_object_unref (device_manager_core->core_pointer); g_object_unref (device_manager_core->core_keyboard); - G_OBJECT_CLASS (gdk_device_manager_core_parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_x11_device_manager_core_parent_class)->finalize (object); } static void -gdk_device_manager_core_constructed (GObject *object) +gdk_x11_device_manager_core_constructed (GObject *object) { - GdkDeviceManagerCore *device_manager; + GdkX11DeviceManagerCore *device_manager; GdkDisplay *display; - device_manager = GDK_DEVICE_MANAGER_CORE (object); + device_manager = GDK_X11_DEVICE_MANAGER_CORE (object); display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object)); device_manager->core_pointer = create_core_pointer (GDK_DEVICE_MANAGER (device_manager), display); device_manager->core_keyboard = create_core_keyboard (GDK_DEVICE_MANAGER (device_manager), display); @@ -138,10 +138,10 @@ gdk_device_manager_core_constructed (GObject *object) } static void -translate_key_event (GdkDisplay *display, - GdkDeviceManagerCore *device_manager, - GdkEvent *event, - XEvent *xevent) +translate_key_event (GdkDisplay *display, + GdkX11DeviceManagerCore *device_manager, + GdkEvent *event, + XEvent *xevent) { GdkKeymap *keymap = gdk_keymap_get_for_display (display); GdkModifierType consumed, state; @@ -159,17 +159,17 @@ translate_key_event (GdkDisplay *display, event->key.keyval = GDK_KEY_VoidSymbol; gdk_keymap_translate_keyboard_state (keymap, - event->key.hardware_keycode, - event->key.state, - event->key.group, - &event->key.keyval, + event->key.hardware_keycode, + event->key.state, + event->key.group, + &event->key.keyval, NULL, NULL, &consumed); state = event->key.state & ~consumed; - _gdk_keymap_add_virtual_modifiers_compat (keymap, &state); + _gdk_x11_keymap_add_virt_mods (keymap, &state); event->key.state |= state; - event->key.is_modifier = _gdk_keymap_key_is_modifier (keymap, event->key.hardware_keycode); + event->key.is_modifier = _gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); /* Fill in event->string crudely, since various programs * depend on it. @@ -187,28 +187,28 @@ translate_key_event (GdkDisplay *display, /* Apply the control key - Taken from Xlib */ if (event->key.state & GDK_CONTROL_MASK) - { - if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; - else if (c == '2') - { - event->key.string = g_memdup ("\0\0", 2); - event->key.length = 1; - buf[0] = '\0'; - goto out; - } - else if (c >= '3' && c <= '7') c -= ('3' - '\033'); - else if (c == '8') c = '\177'; - else if (c == '/') c = '_' & 0x1F; - } + { + if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; + else if (c == '2') + { + event->key.string = g_memdup ("\0\0", 2); + event->key.length = 1; + buf[0] = '\0'; + goto out; + } + else if (c >= '3' && c <= '7') c -= ('3' - '\033'); + else if (c == '8') c = '\177'; + else if (c == '/') c = '_' & 0x1F; + } len = g_unichar_to_utf8 (c, buf); buf[len] = '\0'; event->key.string = g_locale_from_utf8 (buf, len, - NULL, &bytes_written, - NULL); + NULL, &bytes_written, + NULL); if (event->key.string) - event->key.length = bytes_written; + event->key.length = bytes_written; } else if (event->key.keyval == GDK_KEY_Escape) { @@ -216,7 +216,7 @@ translate_key_event (GdkDisplay *display, event->key.string = g_strdup ("\033"); } else if (event->key.keyval == GDK_KEY_Return || - event->key.keyval == GDK_KEY_KP_Enter) + event->key.keyval == GDK_KEY_KP_Enter) { event->key.length = 1; event->key.string = g_strdup ("\r"); @@ -232,15 +232,15 @@ translate_key_event (GdkDisplay *display, #ifdef G_ENABLE_DEBUG if (_gdk_debug_flags & GDK_DEBUG_EVENTS) { - g_message ("%s:\t\twindow: %ld key: %12s %d", - event->type == GDK_KEY_PRESS ? "key press " : "key release", - xevent->xkey.window, - event->key.keyval ? gdk_keyval_name (event->key.keyval) : "(none)", - event->key.keyval); + g_message ("%s:\t\twindow: %ld key: %12s %d", + event->type == GDK_KEY_PRESS ? "key press " : "key release", + xevent->xkey.window, + event->key.keyval ? gdk_keyval_name (event->key.keyval) : "(none)", + event->key.keyval); if (event->key.length > 0) - g_message ("\t\tlength: %4d string: \"%s\"", - event->key.length, buf); + g_message ("\t\tlength: %4d string: \"%s\"", + event->key.length, buf); } #endif /* G_ENABLE_DEBUG */ return; @@ -268,7 +268,7 @@ static const char notify_details[][23] = { static void set_user_time (GdkWindow *window, - GdkEvent *event) + GdkEvent *event) { g_return_if_fail (event != NULL); @@ -284,9 +284,9 @@ set_user_time (GdkWindow *window, } static void -generate_focus_event (GdkDeviceManagerCore *device_manager, - GdkWindow *window, - gboolean in) +generate_focus_event (GdkX11DeviceManagerCore *device_manager, + GdkWindow *window, + gboolean in) { GdkEvent *event; @@ -302,8 +302,8 @@ generate_focus_event (GdkDeviceManagerCore *device_manager, static gboolean set_screen_from_root (GdkDisplay *display, - GdkEvent *event, - Window xrootwin) + GdkEvent *event, + Window xrootwin) { GdkScreen *screen; @@ -365,7 +365,7 @@ is_parent_of (GdkWindow *parent, while (w != NULL) { if (w == parent) - return TRUE; + return TRUE; w = gdk_window_get_parent (w); } @@ -383,7 +383,7 @@ get_event_window (GdkEventTranslator *translator, device_manager = GDK_DEVICE_MANAGER (translator); display = gdk_device_manager_get_display (device_manager); - window = gdk_window_lookup_for_display (display, xevent->xany.window); + window = gdk_x11_window_lookup_for_display (display, xevent->xany.window); /* Apply keyboard grabs to non-native windows */ if (xevent->type == KeyPress || xevent->type == KeyRelease) @@ -391,9 +391,9 @@ get_event_window (GdkEventTranslator *translator, GdkDeviceGrabInfo *info; gulong serial; - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); info = _gdk_display_has_device_grab (display, - GDK_DEVICE_MANAGER_CORE (device_manager)->core_keyboard, + GDK_X11_DEVICE_MANAGER_CORE (device_manager)->core_keyboard, serial); if (info && (!is_parent_of (info->window, window) || @@ -408,19 +408,19 @@ get_event_window (GdkEventTranslator *translator, } static gboolean -gdk_device_manager_core_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent) +gdk_x11_device_manager_core_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent) { - GdkDeviceManagerCore *device_manager; + GdkX11DeviceManagerCore *device_manager; GdkWindow *window; GdkWindowImplX11 *window_impl = NULL; gboolean return_val; GdkToplevelX11 *toplevel = NULL; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); - device_manager = GDK_DEVICE_MANAGER_CORE (translator); + device_manager = GDK_X11_DEVICE_MANAGER_CORE (translator); return_val = FALSE; window = get_event_window (translator, xevent); @@ -441,18 +441,18 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, if (window && GDK_WINDOW_DESTROYED (window)) { if (xevent->type != DestroyNotify) - { - return_val = FALSE; - goto done; - } + { + return_val = FALSE; + goto done; + } } if (window && (xevent->type == MotionNotify || xevent->type == ButtonRelease)) { - if (_gdk_moveresize_handle_event (xevent)) - { + if (_gdk_x11_moveresize_handle_event (xevent)) + { return_val = FALSE; goto done; } @@ -492,45 +492,45 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, */ if (!display_x11->have_xkb_autorepeat && XPending (xevent->xkey.display)) - { - XEvent next_event; + { + XEvent next_event; - XPeekEvent (xevent->xkey.display, &next_event); + XPeekEvent (xevent->xkey.display, &next_event); - if (next_event.type == KeyPress && - next_event.xkey.keycode == xevent->xkey.keycode && - next_event.xkey.time == xevent->xkey.time) - { - return_val = FALSE; - break; - } - } + if (next_event.type == KeyPress && + next_event.xkey.keycode == xevent->xkey.keycode && + next_event.xkey.time == xevent->xkey.time) + { + return_val = FALSE; + break; + } + } translate_key_event (display, device_manager, event, xevent); break; case ButtonPress: GDK_NOTE (EVENTS, - g_message ("button press:\t\twindow: %ld x,y: %d %d button: %d", - xevent->xbutton.window, - xevent->xbutton.x, xevent->xbutton.y, - xevent->xbutton.button)); + g_message ("button press:\t\twindow: %ld x,y: %d %d button: %d", + xevent->xbutton.window, + xevent->xbutton.x, xevent->xbutton.y, + xevent->xbutton.button)); if (window == NULL) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } /* If we get a ButtonPress event where the button is 4 or 5, - it's a Scroll event */ + it's a Scroll event */ switch (xevent->xbutton.button) { case 4: /* up */ case 5: /* down */ case 6: /* left */ case 7: /* right */ - event->scroll.type = GDK_SCROLL; + event->scroll.type = GDK_SCROLL; if (xevent->xbutton.button == 4) event->scroll.direction = GDK_SCROLL_UP; @@ -541,41 +541,41 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, else event->scroll.direction = GDK_SCROLL_RIGHT; - event->scroll.window = window; - event->scroll.time = xevent->xbutton.time; - event->scroll.x = (gdouble) xevent->xbutton.x; - event->scroll.y = (gdouble) xevent->xbutton.y; - event->scroll.x_root = (gdouble) xevent->xbutton.x_root; - event->scroll.y_root = (gdouble) xevent->xbutton.y_root; - event->scroll.state = (GdkModifierType) xevent->xbutton.state; - event->scroll.device = device_manager->core_pointer; + event->scroll.window = window; + event->scroll.time = xevent->xbutton.time; + event->scroll.x = (gdouble) xevent->xbutton.x; + event->scroll.y = (gdouble) xevent->xbutton.y; + event->scroll.x_root = (gdouble) xevent->xbutton.x_root; + event->scroll.y_root = (gdouble) xevent->xbutton.y_root; + event->scroll.state = (GdkModifierType) xevent->xbutton.state; + event->scroll.device = device_manager->core_pointer; - if (!set_screen_from_root (display, event, xevent->xbutton.root)) - { - return_val = FALSE; - break; - } + if (!set_screen_from_root (display, event, xevent->xbutton.root)) + { + return_val = FALSE; + break; + } break; default: - event->button.type = GDK_BUTTON_PRESS; - event->button.window = window; - event->button.time = xevent->xbutton.time; - event->button.x = (gdouble) xevent->xbutton.x; - event->button.y = (gdouble) xevent->xbutton.y; - event->button.x_root = (gdouble) xevent->xbutton.x_root; - event->button.y_root = (gdouble) xevent->xbutton.y_root; - event->button.axes = NULL; - event->button.state = (GdkModifierType) xevent->xbutton.state; - event->button.button = xevent->xbutton.button; - event->button.device = device_manager->core_pointer; + event->button.type = GDK_BUTTON_PRESS; + event->button.window = window; + event->button.time = xevent->xbutton.time; + event->button.x = (gdouble) xevent->xbutton.x; + event->button.y = (gdouble) xevent->xbutton.y; + event->button.x_root = (gdouble) xevent->xbutton.x_root; + event->button.y_root = (gdouble) xevent->xbutton.y_root; + event->button.axes = NULL; + event->button.state = (GdkModifierType) xevent->xbutton.state; + event->button.button = xevent->xbutton.button; + event->button.device = device_manager->core_pointer; - if (!set_screen_from_root (display, event, xevent->xbutton.root)) + if (!set_screen_from_root (display, event, xevent->xbutton.root)) return_val = FALSE; break; - } + } set_user_time (window, event); @@ -583,24 +583,24 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, case ButtonRelease: GDK_NOTE (EVENTS, - g_message ("button release:\twindow: %ld x,y: %d %d button: %d", - xevent->xbutton.window, - xevent->xbutton.x, xevent->xbutton.y, - xevent->xbutton.button)); + g_message ("button release:\twindow: %ld x,y: %d %d button: %d", + xevent->xbutton.window, + xevent->xbutton.x, xevent->xbutton.y, + xevent->xbutton.button)); if (window == NULL) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } /* We treat button presses as scroll wheel events, so ignore the release */ if (xevent->xbutton.button == 4 || xevent->xbutton.button == 5 || xevent->xbutton.button == 6 || xevent->xbutton.button == 7) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } event->button.type = GDK_BUTTON_RELEASE; event->button.window = window; @@ -621,16 +621,16 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, case MotionNotify: GDK_NOTE (EVENTS, - g_message ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s", - xevent->xmotion.window, - xevent->xmotion.x, xevent->xmotion.y, - (xevent->xmotion.is_hint) ? "true" : "false")); + g_message ("motion notify:\t\twindow: %ld x,y: %d %d hint: %s", + xevent->xmotion.window, + xevent->xmotion.x, xevent->xmotion.y, + (xevent->xmotion.is_hint) ? "true" : "false")); if (window == NULL) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } event->motion.type = GDK_MOTION_NOTIFY; event->motion.window = window; @@ -645,19 +645,19 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, event->motion.device = device_manager->core_pointer; if (!set_screen_from_root (display, event, xevent->xbutton.root)) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } break; case EnterNotify: GDK_NOTE (EVENTS, - g_message ("enter notify:\t\twindow: %ld detail: %d subwin: %ld", - xevent->xcrossing.window, - xevent->xcrossing.detail, - xevent->xcrossing.subwindow)); + g_message ("enter notify:\t\twindow: %ld detail: %d subwin: %ld", + xevent->xcrossing.window, + xevent->xcrossing.detail, + xevent->xcrossing.subwindow)); if (window == NULL) { @@ -666,10 +666,10 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, } if (!set_screen_from_root (display, event, xevent->xbutton.root)) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } event->crossing.type = GDK_ENTER_NOTIFY; event->crossing.window = window; @@ -679,9 +679,9 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, * lookup the corresponding GdkWindow. */ if (xevent->xcrossing.subwindow != None) - event->crossing.subwindow = gdk_window_lookup_for_display (display, xevent->xcrossing.subwindow); + event->crossing.subwindow = gdk_x11_window_lookup_for_display (display, xevent->xcrossing.subwindow); else - event->crossing.subwindow = NULL; + event->crossing.subwindow = NULL; event->crossing.time = xevent->xcrossing.time; event->crossing.x = (gdouble) xevent->xcrossing.x; @@ -699,9 +699,9 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, case LeaveNotify: GDK_NOTE (EVENTS, - g_message ("leave notify:\t\twindow: %ld detail: %d subwin: %ld", - xevent->xcrossing.window, - xevent->xcrossing.detail, xevent->xcrossing.subwindow)); + g_message ("leave notify:\t\twindow: %ld detail: %d subwin: %ld", + xevent->xcrossing.window, + xevent->xcrossing.detail, xevent->xcrossing.subwindow)); if (window == NULL) { @@ -710,10 +710,10 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, } if (!set_screen_from_root (display, event, xevent->xbutton.root)) - { - return_val = FALSE; - break; - } + { + return_val = FALSE; + break; + } event->crossing.type = GDK_LEAVE_NOTIFY; event->crossing.window = window; @@ -723,9 +723,9 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, * lookup the corresponding GdkWindow. */ if (xevent->xcrossing.subwindow != None) - event->crossing.subwindow = gdk_window_lookup_for_display (display, xevent->xcrossing.subwindow); + event->crossing.subwindow = gdk_x11_window_lookup_for_display (display, xevent->xcrossing.subwindow); else - event->crossing.subwindow = NULL; + event->crossing.subwindow = NULL; event->crossing.time = xevent->xcrossing.time; event->crossing.x = (gdouble) xevent->xcrossing.x; @@ -746,113 +746,113 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, */ case FocusIn: GDK_NOTE (EVENTS, - g_message ("focus in:\t\twindow: %ld, detail: %s, mode: %s", - xevent->xfocus.window, - notify_details[xevent->xfocus.detail], - notify_modes[xevent->xfocus.mode])); + g_message ("focus in:\t\twindow: %ld, detail: %s, mode: %s", + xevent->xfocus.window, + notify_details[xevent->xfocus.detail], + notify_modes[xevent->xfocus.mode])); if (toplevel) - { - gboolean had_focus = HAS_FOCUS (toplevel); + { + gboolean had_focus = HAS_FOCUS (toplevel); - switch (xevent->xfocus.detail) - { - case NotifyAncestor: - case NotifyVirtual: - /* When the focus moves from an ancestor of the window to - * the window or a descendent of the window, *and* the - * pointer is inside the window, then we were previously - * receiving keystroke events in the has_pointer_focus - * case and are now receiving them in the - * has_focus_window case. - */ - if (toplevel->has_pointer && - xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_pointer_focus = FALSE; + switch (xevent->xfocus.detail) + { + case NotifyAncestor: + case NotifyVirtual: + /* When the focus moves from an ancestor of the window to + * the window or a descendent of the window, *and* the + * pointer is inside the window, then we were previously + * receiving keystroke events in the has_pointer_focus + * case and are now receiving them in the + * has_focus_window case. + */ + if (toplevel->has_pointer && + xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_pointer_focus = FALSE; - /* fall through */ - case NotifyNonlinear: - case NotifyNonlinearVirtual: - if (xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_focus_window = TRUE; - /* We pretend that the focus moves to the grab - * window, so we pay attention to NotifyGrab - * NotifyUngrab, and ignore NotifyWhileGrabbed - */ - if (xevent->xfocus.mode != NotifyWhileGrabbed) - toplevel->has_focus = TRUE; - break; - case NotifyPointer: - /* The X server sends NotifyPointer/NotifyGrab, - * but the pointer focus is ignored while a - * grab is in effect - */ - if (xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_pointer_focus = TRUE; - break; - case NotifyInferior: - case NotifyPointerRoot: - case NotifyDetailNone: - break; - } + /* fall through */ + case NotifyNonlinear: + case NotifyNonlinearVirtual: + if (xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_focus_window = TRUE; + /* We pretend that the focus moves to the grab + * window, so we pay attention to NotifyGrab + * NotifyUngrab, and ignore NotifyWhileGrabbed + */ + if (xevent->xfocus.mode != NotifyWhileGrabbed) + toplevel->has_focus = TRUE; + break; + case NotifyPointer: + /* The X server sends NotifyPointer/NotifyGrab, + * but the pointer focus is ignored while a + * grab is in effect + */ + if (xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_pointer_focus = TRUE; + break; + case NotifyInferior: + case NotifyPointerRoot: + case NotifyDetailNone: + break; + } - if (HAS_FOCUS (toplevel) != had_focus) - generate_focus_event (device_manager, window, TRUE); - } + if (HAS_FOCUS (toplevel) != had_focus) + generate_focus_event (device_manager, window, TRUE); + } break; case FocusOut: GDK_NOTE (EVENTS, - g_message ("focus out:\t\twindow: %ld, detail: %s, mode: %s", - xevent->xfocus.window, - notify_details[xevent->xfocus.detail], - notify_modes[xevent->xfocus.mode])); + g_message ("focus out:\t\twindow: %ld, detail: %s, mode: %s", + xevent->xfocus.window, + notify_details[xevent->xfocus.detail], + notify_modes[xevent->xfocus.mode])); if (toplevel) - { - gboolean had_focus = HAS_FOCUS (toplevel); + { + gboolean had_focus = HAS_FOCUS (toplevel); - switch (xevent->xfocus.detail) - { - case NotifyAncestor: - case NotifyVirtual: - /* When the focus moves from the window or a descendent - * of the window to an ancestor of the window, *and* the - * pointer is inside the window, then we were previously - * receiving keystroke events in the has_focus_window - * case and are now receiving them in the - * has_pointer_focus case. - */ - if (toplevel->has_pointer && - xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_pointer_focus = TRUE; + switch (xevent->xfocus.detail) + { + case NotifyAncestor: + case NotifyVirtual: + /* When the focus moves from the window or a descendent + * of the window to an ancestor of the window, *and* the + * pointer is inside the window, then we were previously + * receiving keystroke events in the has_focus_window + * case and are now receiving them in the + * has_pointer_focus case. + */ + if (toplevel->has_pointer && + xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_pointer_focus = TRUE; - /* fall through */ - case NotifyNonlinear: - case NotifyNonlinearVirtual: - if (xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_focus_window = FALSE; - if (xevent->xfocus.mode != NotifyWhileGrabbed) - toplevel->has_focus = FALSE; - break; - case NotifyPointer: - if (xevent->xfocus.mode != NotifyGrab && - xevent->xfocus.mode != NotifyUngrab) - toplevel->has_pointer_focus = FALSE; - break; - case NotifyInferior: - case NotifyPointerRoot: - case NotifyDetailNone: - break; - } + /* fall through */ + case NotifyNonlinear: + case NotifyNonlinearVirtual: + if (xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_focus_window = FALSE; + if (xevent->xfocus.mode != NotifyWhileGrabbed) + toplevel->has_focus = FALSE; + break; + case NotifyPointer: + if (xevent->xfocus.mode != NotifyGrab && + xevent->xfocus.mode != NotifyUngrab) + toplevel->has_pointer_focus = FALSE; + break; + case NotifyInferior: + case NotifyPointerRoot: + case NotifyDetailNone: + break; + } - if (HAS_FOCUS (toplevel) != had_focus) - generate_focus_event (device_manager, window, FALSE); - } + if (HAS_FOCUS (toplevel) != had_focus) + generate_focus_event (device_manager, window, FALSE); + } break; default: @@ -863,12 +863,12 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, if (return_val) { if (event->any.window) - g_object_ref (event->any.window); + g_object_ref (event->any.window); if (((event->any.type == GDK_ENTER_NOTIFY) || - (event->any.type == GDK_LEAVE_NOTIFY)) && - (event->crossing.subwindow != NULL)) - g_object_ref (event->crossing.subwindow); + (event->any.type == GDK_LEAVE_NOTIFY)) && + (event->crossing.subwindow != NULL)) + g_object_ref (event->crossing.subwindow); } else { @@ -884,15 +884,15 @@ gdk_device_manager_core_translate_event (GdkEventTranslator *translator, } static GList * -gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type) +gdk_x11_device_manager_core_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type) { - GdkDeviceManagerCore *device_manager_core; + GdkX11DeviceManagerCore *device_manager_core; GList *devices = NULL; if (type == GDK_DEVICE_TYPE_MASTER) { - device_manager_core = (GdkDeviceManagerCore *) device_manager; + device_manager_core = (GdkX11DeviceManagerCore *) device_manager; devices = g_list_prepend (devices, device_manager_core->core_keyboard); devices = g_list_prepend (devices, device_manager_core->core_pointer); } @@ -901,10 +901,10 @@ gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager, } static GdkDevice * -gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager) +gdk_x11_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager) { - GdkDeviceManagerCore *device_manager_core; + GdkX11DeviceManagerCore *device_manager_core; - device_manager_core = (GdkDeviceManagerCore *) device_manager; + device_manager_core = (GdkX11DeviceManagerCore *) device_manager; return device_manager_core->core_pointer; } diff --git a/gdk/x11/gdkdevicemanager-core.h b/gdk/x11/gdkdevicemanager-core.h deleted file mode 100644 index 0a337fcd00..0000000000 --- a/gdk/x11/gdkdevicemanager-core.h +++ /dev/null @@ -1,54 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_MANAGER_CORE_H__ -#define __GDK_DEVICE_MANAGER_CORE_H__ - -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_MANAGER_CORE (gdk_device_manager_core_get_type ()) -#define GDK_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCore)) -#define GDK_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCoreClass)) -#define GDK_IS_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_MANAGER_CORE)) -#define GDK_IS_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER_CORE)) -#define GDK_DEVICE_MANAGER_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER_CORE, GdkDeviceManagerCoreClass)) - -typedef struct _GdkDeviceManagerCore GdkDeviceManagerCore; -typedef struct _GdkDeviceManagerCoreClass GdkDeviceManagerCoreClass; - -struct _GdkDeviceManagerCore -{ - GdkDeviceManager parent_object; - GdkDevice *core_pointer; - GdkDevice *core_keyboard; -}; - -struct _GdkDeviceManagerCoreClass -{ - GdkDeviceManagerClass parent_class; -}; - -GType gdk_device_manager_core_get_type (void) G_GNUC_CONST; - - -G_END_DECLS - -#endif /* __GDK_DEVICE_MANAGER_CORE_H__ */ diff --git a/gdk/x11/gdkdevicemanager-x11.c b/gdk/x11/gdkdevicemanager-x11.c index a6bb50b7c3..a19a05e065 100644 --- a/gdk/x11/gdkdevicemanager-x11.c +++ b/gdk/x11/gdkdevicemanager-x11.c @@ -19,17 +19,18 @@ #include "config.h" -#include "gdkdevicemanager-core.h" +#include "gdkx11devicemanager-core.h" #ifdef XINPUT_XFREE -#include "gdkdevicemanager-xi.h" +#include "gdkx11devicemanager-xi.h" #ifdef XINPUT_2 -#include "gdkdevicemanager-xi2.h" +#include "gdkx11devicemanager-xi2.h" #endif #endif -#include "gdkx.h" +#include "gdkinternals.h" +#include "gdkprivate-x11.h" GdkDeviceManager * -_gdk_device_manager_new (GdkDisplay *display) +_gdk_x11_device_manager_new (GdkDisplay *display) { if (!g_getenv ("GDK_CORE_DEVICE_EVENTS")) { @@ -48,17 +49,17 @@ _gdk_device_manager_new (GdkDisplay *display) major = 2; minor = 0; - if (_gdk_enable_multidevice && + if (!_gdk_disable_multidevice && XIQueryVersion (xdisplay, &major, &minor) != BadRequest) { - GdkDeviceManagerXI2 *device_manager_xi2; + GdkX11DeviceManagerXI2 *device_manager_xi2; GDK_NOTE (INPUT, g_print ("Creating XI2 device manager\n")); - device_manager_xi2 = g_object_new (GDK_TYPE_DEVICE_MANAGER_XI2, + device_manager_xi2 = g_object_new (GDK_TYPE_X11_DEVICE_MANAGER_XI2, "display", display, + "opcode", opcode, NULL); - device_manager_xi2->opcode = opcode; return GDK_DEVICE_MANAGER (device_manager_xi2); } @@ -67,7 +68,7 @@ _gdk_device_manager_new (GdkDisplay *display) { GDK_NOTE (INPUT, g_print ("Creating XI device manager\n")); - return g_object_new (GDK_TYPE_DEVICE_MANAGER_XI, + return g_object_new (GDK_TYPE_X11_DEVICE_MANAGER_XI, "display", display, "event-base", firstevent, NULL); @@ -78,7 +79,7 @@ _gdk_device_manager_new (GdkDisplay *display) GDK_NOTE (INPUT, g_print ("Creating core device manager\n")); - return g_object_new (GDK_TYPE_DEVICE_MANAGER_CORE, + return g_object_new (GDK_TYPE_X11_DEVICE_MANAGER_CORE, "display", display, NULL); } diff --git a/gdk/x11/gdkdevicemanager-xi.c b/gdk/x11/gdkdevicemanager-xi.c index 6d65725fad..5bd479b083 100644 --- a/gdk/x11/gdkdevicemanager-xi.c +++ b/gdk/x11/gdkdevicemanager-xi.c @@ -19,47 +19,57 @@ #include "config.h" -#include "gdkdevicemanager-xi.h" +#include "gdkx11devicemanager-xi.h" +#include "gdkdevicemanagerprivate-core.h" +#include "gdkdeviceprivate-xi.h" +#include "gdkdevicemanagerprivate.h" #include "gdkeventtranslator.h" -#include "gdkdevice-xi.h" #include "gdkintl.h" -#include "gdkx.h" +#include "gdkprivate-x11.h" #include -struct _GdkDeviceManagerXIPrivate +struct _GdkX11DeviceManagerXI { + GdkX11DeviceManagerCore parent_object; + GHashTable *id_table; gint event_base; GList *devices; gboolean ignore_core_events; }; -static void gdk_device_manager_xi_constructed (GObject *object); -static void gdk_device_manager_xi_dispose (GObject *object); -static void gdk_device_manager_xi_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gdk_device_manager_xi_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); - -static void gdk_device_manager_xi_event_translator_init (GdkEventTranslatorIface *iface); -static gboolean gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent); -static GList * gdk_device_manager_xi_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type); +struct _GdkX11DeviceManagerXIClass +{ + GdkX11DeviceManagerCoreClass parent_class; +}; -G_DEFINE_TYPE_WITH_CODE (GdkDeviceManagerXI, gdk_device_manager_xi, GDK_TYPE_DEVICE_MANAGER_CORE, +static void gdk_x11_device_manager_xi_constructed (GObject *object); +static void gdk_x11_device_manager_xi_dispose (GObject *object); +static void gdk_x11_device_manager_xi_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gdk_x11_device_manager_xi_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +static void gdk_x11_device_manager_xi_event_translator_init (GdkEventTranslatorIface *iface); +static gboolean gdk_x11_device_manager_xi_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent); +static GList * gdk_x11_device_manager_xi_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type); + + +G_DEFINE_TYPE_WITH_CODE (GdkX11DeviceManagerXI, gdk_x11_device_manager_xi, GDK_TYPE_X11_DEVICE_MANAGER_CORE, G_IMPLEMENT_INTERFACE (GDK_TYPE_EVENT_TRANSLATOR, - gdk_device_manager_xi_event_translator_init)) + gdk_x11_device_manager_xi_event_translator_init)) enum { PROP_0, @@ -67,27 +77,25 @@ enum { }; static void -gdk_device_manager_xi_class_init (GdkDeviceManagerXIClass *klass) +gdk_x11_device_manager_xi_class_init (GdkX11DeviceManagerXIClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass); - object_class->constructed = gdk_device_manager_xi_constructed; - object_class->dispose = gdk_device_manager_xi_dispose; - object_class->set_property = gdk_device_manager_xi_set_property; - object_class->get_property = gdk_device_manager_xi_get_property; + object_class->constructed = gdk_x11_device_manager_xi_constructed; + object_class->dispose = gdk_x11_device_manager_xi_dispose; + object_class->set_property = gdk_x11_device_manager_xi_set_property; + object_class->get_property = gdk_x11_device_manager_xi_get_property; - device_manager_class->list_devices = gdk_device_manager_xi_list_devices; + device_manager_class->list_devices = gdk_x11_device_manager_xi_list_devices; g_object_class_install_property (object_class, - PROP_EVENT_BASE, - g_param_spec_int ("event-base", + PROP_EVENT_BASE, + g_param_spec_int ("event-base", P_("Event base"), P_("Event base for XInput events"), 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - - g_type_class_add_private (object_class, sizeof (GdkDeviceManagerXIPrivate)); } static GdkFilterReturn @@ -104,25 +112,19 @@ window_input_info_filter (GdkXEvent *xevent, xev = (XEvent *) xevent; display = gdk_device_manager_get_display (device_manager); - window = gdk_window_lookup_for_display (display, xev->xany.window); + window = gdk_x11_window_lookup_for_display (display, xev->xany.window); if (window && xev->type == ConfigureNotify) - gdk_device_xi_update_window_info (window); + _gdk_x11_device_xi_update_window_info (window); return GDK_FILTER_CONTINUE; } static void -gdk_device_manager_xi_init (GdkDeviceManagerXI *device_manager) +gdk_x11_device_manager_xi_init (GdkX11DeviceManagerXI *device_manager) { - GdkDeviceManagerXIPrivate *priv; - - device_manager->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (device_manager, - GDK_TYPE_DEVICE_MANAGER_XI, - GdkDeviceManagerXIPrivate); - - priv->id_table = g_hash_table_new_full (NULL, NULL, NULL, - (GDestroyNotify) g_object_unref); + device_manager->id_table = g_hash_table_new_full (NULL, NULL, NULL, + (GDestroyNotify) g_object_unref); gdk_window_add_filter (NULL, window_input_info_filter, device_manager); } @@ -131,72 +133,73 @@ static void translate_class_info (GdkDevice *device, XDeviceInfo *info) { - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; XAnyClassPtr class; gint i, j; - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); class = info->inputclassinfo; for (i = 0; i < info->num_classes; i++) { - switch (class->class) { - case ButtonClass: - break; - case KeyClass: - { - XKeyInfo *xki = (XKeyInfo *)class; - guint num_keys; + switch (class->class) + { + case ButtonClass: + break; + case KeyClass: + { + XKeyInfo *xki = (XKeyInfo *)class; + guint num_keys; - num_keys = xki->max_keycode - xki->min_keycode + 1; - _gdk_device_set_keys (device, num_keys); + num_keys = xki->max_keycode - xki->min_keycode + 1; + _gdk_device_set_keys (device, num_keys); - device_xi->min_keycode = xki->min_keycode; + device_xi->min_keycode = xki->min_keycode; - break; - } - case ValuatorClass: - { - XValuatorInfo *xvi = (XValuatorInfo *)class; + break; + } + case ValuatorClass: + { + XValuatorInfo *xvi = (XValuatorInfo *)class; - for (j = 0; j < xvi->num_axes; j++) - { - GdkAxisUse use; + for (j = 0; j < xvi->num_axes; j++) + { + GdkAxisUse use; - switch (j) - { - case 0: - use = GDK_AXIS_X; - break; - case 1: - use = GDK_AXIS_Y; - break; - case 2: - use = GDK_AXIS_PRESSURE; - break; - case 3: - use = GDK_AXIS_XTILT; - break; - case 4: - use = GDK_AXIS_YTILT; - break; - case 5: - use = GDK_AXIS_WHEEL; - break; - default: - use = GDK_AXIS_IGNORE; - } + switch (j) + { + case 0: + use = GDK_AXIS_X; + break; + case 1: + use = GDK_AXIS_Y; + break; + case 2: + use = GDK_AXIS_PRESSURE; + break; + case 3: + use = GDK_AXIS_XTILT; + break; + case 4: + use = GDK_AXIS_YTILT; + break; + case 5: + use = GDK_AXIS_WHEEL; + break; + default: + use = GDK_AXIS_IGNORE; + } - _gdk_device_add_axis (device, - GDK_NONE, - use, - xvi->axes[j].min_value, - xvi->axes[j].max_value, - xvi->axes[j].resolution); - } + _gdk_device_add_axis (device, + GDK_NONE, + use, + xvi->axes[j].min_value, + xvi->axes[j].max_value, + xvi->axes[j].resolution); + } - break; - } + break; + } } class = (XAnyClassPtr) (((char *) class) + class->length); @@ -242,7 +245,7 @@ create_device (GdkDeviceManager *device_manager, g_free (tmp_name); } - device = g_object_new (GDK_TYPE_DEVICE_XI, + device = g_object_new (GDK_TYPE_X11_DEVICE_XI, "name", info->name, "type", GDK_DEVICE_TYPE_FLOATING, "input-source", input_source, @@ -258,16 +261,16 @@ create_device (GdkDeviceManager *device_manager, } static void -gdk_device_manager_xi_constructed (GObject *object) +gdk_x11_device_manager_xi_constructed (GObject *object) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; XDeviceInfo *devices; gint i, num_devices; GdkDisplay *display; - priv = GDK_DEVICE_MANAGER_XI (object)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (object); display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object)); - devices = XListInputDevices(GDK_DISPLAY_XDISPLAY (display), &num_devices); + devices = XListInputDevices (GDK_DISPLAY_XDISPLAY (display), &num_devices); for(i = 0; i < num_devices; i++) { @@ -277,59 +280,58 @@ gdk_device_manager_xi_constructed (GObject *object) display, &devices[i]); if (device) { - priv->devices = g_list_prepend (priv->devices, device); - g_hash_table_insert (priv->id_table, + device_manager->devices = g_list_prepend (device_manager->devices, device); + g_hash_table_insert (device_manager->id_table, GINT_TO_POINTER (devices[i].id), g_object_ref (device)); } } - XFreeDeviceList(devices); + XFreeDeviceList (devices); gdk_x11_register_standard_event_type (display, - priv->event_base, + device_manager->event_base, 15 /* Number of events */); - if (G_OBJECT_CLASS (gdk_device_manager_xi_parent_class)->constructed) - G_OBJECT_CLASS (gdk_device_manager_xi_parent_class)->constructed (object); + if (G_OBJECT_CLASS (gdk_x11_device_manager_xi_parent_class)->constructed) + G_OBJECT_CLASS (gdk_x11_device_manager_xi_parent_class)->constructed (object); } static void -gdk_device_manager_xi_dispose (GObject *object) +gdk_x11_device_manager_xi_dispose (GObject *object) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; - priv = GDK_DEVICE_MANAGER_XI (object)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (object); + g_list_foreach (device_manager->devices, (GFunc) g_object_unref, NULL); + g_list_free (device_manager->devices); + device_manager->devices = NULL; - g_list_foreach (priv->devices, (GFunc) g_object_unref, NULL); - g_list_free (priv->devices); - priv->devices = NULL; - - if (priv->id_table != NULL) + if (device_manager->id_table != NULL) { - g_hash_table_destroy (priv->id_table); - priv->id_table = NULL; + g_hash_table_destroy (device_manager->id_table); + device_manager->id_table = NULL; } gdk_window_remove_filter (NULL, window_input_info_filter, object); - G_OBJECT_CLASS (gdk_device_manager_xi_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_x11_device_manager_xi_parent_class)->dispose (object); } static void -gdk_device_manager_xi_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +gdk_x11_device_manager_xi_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; - priv = GDK_DEVICE_MANAGER_XI (object)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (object); switch (prop_id) { case PROP_EVENT_BASE: - priv->event_base = g_value_get_int (value); + device_manager->event_base = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -338,19 +340,19 @@ gdk_device_manager_xi_set_property (GObject *object, } static void -gdk_device_manager_xi_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +gdk_x11_device_manager_xi_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; - priv = GDK_DEVICE_MANAGER_XI (object)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (object); switch (prop_id) { case PROP_EVENT_BASE: - g_value_set_int (value, priv->event_base); + g_value_set_int (value, device_manager->event_base); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -359,9 +361,9 @@ gdk_device_manager_xi_get_property (GObject *object, } static void -gdk_device_manager_xi_event_translator_init (GdkEventTranslatorIface *iface) +gdk_x11_device_manager_xi_event_translator_init (GdkEventTranslatorIface *iface) { - iface->translate_event = gdk_device_manager_xi_translate_event; + iface->translate_event = gdk_x11_device_manager_xi_translate_event; } /* combine the state of the core device and the device state @@ -377,13 +379,13 @@ translate_state (guint state, guint device_state) } static GdkDevice * -lookup_device (GdkDeviceManagerXI *device_manager, - XEvent *xevent) +lookup_device (GdkX11DeviceManagerXI *manager, + XEvent *xevent) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; guint32 device_id; - priv = GDK_DEVICE_MANAGER_XI (device_manager)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (manager); /* This is a sort of a hack, as there isn't any XDeviceAnyEvent - but it's potentially faster than scanning through the types of @@ -391,37 +393,35 @@ lookup_device (GdkDeviceManagerXI *device_manager, the types for the device anyways */ device_id = ((XDeviceButtonEvent *)xevent)->deviceid; - return g_hash_table_lookup (priv->id_table, GINT_TO_POINTER (device_id)); + return g_hash_table_lookup (device_manager->id_table, GINT_TO_POINTER (device_id)); } static gboolean -gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent) +gdk_x11_device_manager_xi_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent) { - GdkDeviceManagerXIPrivate *priv; - GdkDeviceManagerXI *device_manager; + GdkX11DeviceManagerXI *device_manager; GdkEventTranslatorIface *parent_iface; - GdkDeviceXI *device_xi; + GdkX11DeviceXI *device_xi; GdkDevice *device; GdkWindow *window; parent_iface = g_type_interface_peek_parent (GDK_EVENT_TRANSLATOR_GET_IFACE (translator)); - device_manager = GDK_DEVICE_MANAGER_XI (translator); - priv = device_manager->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (translator); - if (!priv->ignore_core_events && + if (!device_manager->ignore_core_events && parent_iface->translate_event (translator, display, event, xevent)) return TRUE; device = lookup_device (device_manager, xevent); - device_xi = GDK_DEVICE_XI (device); + device_xi = GDK_X11_DEVICE_XI (device); if (!device) return FALSE; - window = gdk_window_lookup_for_display (display, xevent->xany.window); + window = gdk_x11_window_lookup_for_display (display, xevent->xany.window); if (!window) return FALSE; @@ -442,35 +442,35 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, event->button.y_root = (gdouble) xdbe->y_root; event->button.axes = g_new0 (gdouble, gdk_device_get_n_axes (device)); - gdk_device_xi_update_axes (device, xdbe->axes_count, - xdbe->first_axis, xdbe->axis_data); - gdk_device_xi_translate_axes (device, window, - device_xi->axis_data, - event->button.axes, - &event->button.x, - &event->button.y); + _gdk_x11_device_xi_update_axes (device, xdbe->axes_count, + xdbe->first_axis, xdbe->axis_data); + _gdk_x11_device_xi_translate_axes (device, window, + device_xi->axis_data, + event->button.axes, + &event->button.x, + &event->button.y); event->button.state = translate_state (xdbe->state, xdbe->device_state); event->button.button = xdbe->button; if (event->button.type == GDK_BUTTON_PRESS) - _gdk_event_button_generate (gdk_window_get_display (event->button.window), - event); + _gdk_event_button_generate (gdk_window_get_display (event->button.window), + event); GDK_NOTE (EVENTS, - g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n", - (event->button.type == GDK_BUTTON_PRESS) ? "press" : "release", - xdbe->window, - xdbe->deviceid, - event->button.x, event->button.y, - xdbe->button)); + g_print ("button %s:\t\twindow: %ld device: %ld x,y: %f %f button: %d\n", + (event->button.type == GDK_BUTTON_PRESS) ? "press" : "release", + xdbe->window, + xdbe->deviceid, + event->button.x, event->button.y, + xdbe->button)); /* Update the timestamp of the latest user interaction, if the event has * a valid timestamp. */ if (gdk_event_get_time (event) != GDK_CURRENT_TIME) - gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), - gdk_event_get_time (event)); + gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), + gdk_event_get_time (event)); return TRUE; } @@ -480,33 +480,33 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, XDeviceKeyEvent *xdke = (XDeviceKeyEvent *) xevent; GDK_NOTE (EVENTS, - g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n", - (event->key.type == GDK_KEY_PRESS) ? "press" : "release", - xdke->window, - xdke->deviceid, - xdke->keycode)); + g_print ("device key %s:\twindow: %ld device: %ld keycode: %d\n", + (event->key.type == GDK_KEY_PRESS) ? "press" : "release", + xdke->window, + xdke->deviceid, + xdke->keycode)); if (xdke->keycode < device_xi->min_keycode || - xdke->keycode >= device_xi->min_keycode + gdk_device_get_n_keys (device)) - { - g_warning ("Invalid device key code received"); - return FALSE; - } + xdke->keycode >= device_xi->min_keycode + gdk_device_get_n_keys (device)) + { + g_warning ("Invalid device key code received"); + return FALSE; + } gdk_device_get_key (device, xdke->keycode - device_xi->min_keycode, &event->key.keyval, &event->key.state); if (event->key.keyval == 0) - { - GDK_NOTE (EVENTS, - g_print ("\t\ttranslation - NONE\n")); + { + GDK_NOTE (EVENTS, + g_print ("\t\ttranslation - NONE\n")); - return FALSE; - } + return FALSE; + } event->key.type = (xdke->type == device_xi->key_press_type) ? - GDK_KEY_PRESS : GDK_KEY_RELEASE; + GDK_KEY_PRESS : GDK_KEY_RELEASE; event->key.window = g_object_ref (window); event->key.time = xdke->time; @@ -515,29 +515,29 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, /* Add a string translation for the key event */ if ((event->key.keyval >= 0x20) && (event->key.keyval <= 0xFF)) - { - event->key.length = 1; - event->key.string = g_new (gchar, 2); - event->key.string[0] = (gchar) event->key.keyval; - event->key.string[1] = 0; - } + { + event->key.length = 1; + event->key.string = g_new (gchar, 2); + event->key.string[0] = (gchar) event->key.keyval; + event->key.string[1] = 0; + } else - { - event->key.length = 0; - event->key.string = g_new0 (gchar, 1); - } + { + event->key.length = 0; + event->key.string = g_new0 (gchar, 1); + } GDK_NOTE (EVENTS, - g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n", - event->key.keyval, - event->key.state)); + g_print ("\t\ttranslation - keyval: %d modifiers: %#x\n", + event->key.keyval, + event->key.state)); /* Update the timestamp of the latest user interaction, if the event has * a valid timestamp. */ if (gdk_event_get_time (event) != GDK_CURRENT_TIME) - gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), - gdk_event_get_time (event)); + gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), + gdk_event_get_time (event)); return TRUE; } @@ -548,19 +548,19 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, event->motion.device = device; if (device_xi->in_proximity) - priv->ignore_core_events = TRUE; + device_manager->ignore_core_events = TRUE; event->motion.x_root = (gdouble) xdme->x_root; event->motion.y_root = (gdouble) xdme->y_root; event->motion.axes = g_new0 (gdouble, gdk_device_get_n_axes (device)); - gdk_device_xi_update_axes (device, xdme->axes_count, - xdme->first_axis, xdme->axis_data); - gdk_device_xi_translate_axes (device, window, - device_xi->axis_data, - event->motion.axes, - &event->motion.x, - &event->motion.y); + _gdk_x11_device_xi_update_axes (device, xdme->axes_count, + xdme->first_axis, xdme->axis_data); + _gdk_x11_device_xi_translate_axes (device, window, + device_xi->axis_data, + event->motion.axes, + &event->motion.x, + &event->motion.y); event->motion.type = GDK_MOTION_NOTIFY; event->motion.window = g_object_ref (window); @@ -570,20 +570,20 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, event->motion.is_hint = xdme->is_hint; GDK_NOTE (EVENTS, - g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n", - xdme->window, - xdme->deviceid, - event->motion.x, event->motion.y, - event->motion.state, - (xdme->is_hint) ? "true" : "false")); + g_print ("motion notify:\t\twindow: %ld device: %ld x,y: %f %f state %#4x hint: %s\n", + xdme->window, + xdme->deviceid, + event->motion.x, event->motion.y, + event->motion.state, + (xdme->is_hint) ? "true" : "false")); /* Update the timestamp of the latest user interaction, if the event has * a valid timestamp. */ if (gdk_event_get_time (event) != GDK_CURRENT_TIME) - gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), - gdk_event_get_time (event)); + gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), + gdk_event_get_time (event)); return TRUE; } @@ -596,13 +596,13 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, { event->proximity.type = GDK_PROXIMITY_IN; device_xi->in_proximity = TRUE; - priv->ignore_core_events = TRUE; + device_manager->ignore_core_events = TRUE; } else { event->proximity.type = GDK_PROXIMITY_OUT; device_xi->in_proximity = FALSE; - priv->ignore_core_events = FALSE; + device_manager->ignore_core_events = FALSE; } event->proximity.device = device; @@ -613,8 +613,8 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, * a valid timestamp. */ if (gdk_event_get_time (event) != GDK_CURRENT_TIME) - gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), - gdk_event_get_time (event)); + gdk_x11_window_set_user_time (gdk_window_get_toplevel (window), + gdk_event_get_time (event)); return TRUE; } @@ -627,8 +627,8 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, for (i = 0; i < xdse->num_classes; i++) { if (input_class->class == ValuatorClass) - gdk_device_xi_update_axes (device, gdk_device_get_n_axes (device), 0, - ((XValuatorState *)input_class)->valuators); + _gdk_x11_device_xi_update_axes (device, gdk_device_get_n_axes (device), 0, + ((XValuatorState *)input_class)->valuators); input_class = (XInputClass *)(((char *)input_class)+input_class->length); } @@ -645,18 +645,18 @@ gdk_device_manager_xi_translate_event (GdkEventTranslator *translator, } static GList * -gdk_device_manager_xi_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type) +gdk_x11_device_manager_xi_list_devices (GdkDeviceManager *manager, + GdkDeviceType type) { - GdkDeviceManagerXIPrivate *priv; + GdkX11DeviceManagerXI *device_manager; - priv = GDK_DEVICE_MANAGER_XI (device_manager)->priv; + device_manager = GDK_X11_DEVICE_MANAGER_XI (manager); if (type == GDK_DEVICE_TYPE_MASTER) - return GDK_DEVICE_MANAGER_CLASS (gdk_device_manager_xi_parent_class)->list_devices (device_manager, type); + return GDK_DEVICE_MANAGER_CLASS (gdk_x11_device_manager_xi_parent_class)->list_devices (manager, type); else if (type == GDK_DEVICE_TYPE_FLOATING) { - return g_list_copy (priv->devices); + return g_list_copy (device_manager->devices); } else return NULL; diff --git a/gdk/x11/gdkdevicemanager-xi.h b/gdk/x11/gdkdevicemanager-xi.h deleted file mode 100644 index e2028fdb8d..0000000000 --- a/gdk/x11/gdkdevicemanager-xi.h +++ /dev/null @@ -1,57 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_MANAGER_XI_H__ -#define __GDK_DEVICE_MANAGER_XI_H__ - -#include "gdkdevicemanager-core.h" - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_MANAGER_XI (gdk_device_manager_xi_get_type ()) -#define GDK_DEVICE_MANAGER_XI(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_MANAGER_XI, GdkDeviceManagerXI)) -#define GDK_DEVICE_MANAGER_XI_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER_XI, GdkDeviceManagerXIClass)) -#define GDK_IS_DEVICE_MANAGER_XI(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_MANAGER_XI)) -#define GDK_IS_DEVICE_MANAGER_XI_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER_XI)) -#define GDK_DEVICE_MANAGER_XI_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER_XI, GdkDeviceManagerXIClass)) - -typedef struct _GdkDeviceManagerXI GdkDeviceManagerXI; -typedef struct _GdkDeviceManagerXIPrivate GdkDeviceManagerXIPrivate; -typedef struct _GdkDeviceManagerXIClass GdkDeviceManagerXIClass; - -struct _GdkDeviceManagerXI -{ - GdkDeviceManagerCore parent_object; - GdkDevice *core_pointer; - GdkDevice *core_keyboard; - - /*< private >*/ - GdkDeviceManagerXIPrivate *priv; -}; - -struct _GdkDeviceManagerXIClass -{ - GdkDeviceManagerCoreClass parent_class; -}; - -GType gdk_device_manager_xi_get_type (void) G_GNUC_CONST; - -G_END_DECLS - -#endif /* __GDK_DEVICE_MANAGER_XI_H__ */ diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 25d7a841a6..c7e8f85565 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -19,59 +19,107 @@ #include "config.h" -#include "gdkdevicemanager-xi2.h" +#include "gdkx11devicemanager-xi2.h" +#include "gdkx11device-xi2.h" -#include +#include "gdkdevicemanagerprivate.h" +#include "gdkdeviceprivate.h" +#include "gdkdisplayprivate.h" #include "gdkeventtranslator.h" -#include "gdkdevice-xi2.h" -#include "gdkkeysyms.h" #include "gdkprivate-x11.h" -#include "gdkx.h" +#include "gdkintl.h" +#include "gdkkeysyms.h" + +#include +#include +#include #include +struct _GdkX11DeviceManagerXI2 +{ + GdkDeviceManager parent_object; + + GHashTable *id_table; + + GList *master_devices; + GList *slave_devices; + + GdkDevice *client_pointer; + + gint opcode; +}; + +struct _GdkX11DeviceManagerXI2Class +{ + GdkDeviceManagerClass parent_class; +}; + #define HAS_FOCUS(toplevel) ((toplevel)->has_focus || (toplevel)->has_pointer_focus) -static void gdk_device_manager_xi2_constructed (GObject *object); -static void gdk_device_manager_xi2_dispose (GObject *object); +static void gdk_x11_device_manager_xi2_constructed (GObject *object); +static void gdk_x11_device_manager_xi2_dispose (GObject *object); +static void gdk_x11_device_manager_xi2_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gdk_x11_device_manager_xi2_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); -static GList * gdk_device_manager_xi2_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type); -static GdkDevice * gdk_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager); +static GList * gdk_x11_device_manager_xi2_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type); +static GdkDevice * gdk_x11_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager); -static void gdk_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface); +static void gdk_x11_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface); -static gboolean gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent); -static GdkEventMask gdk_device_manager_xi2_get_handled_events (GdkEventTranslator *translator); -static void gdk_device_manager_xi2_select_window_events (GdkEventTranslator *translator, - Window window, - GdkEventMask event_mask); +static gboolean gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent); +static GdkEventMask gdk_x11_device_manager_xi2_get_handled_events (GdkEventTranslator *translator); +static void gdk_x11_device_manager_xi2_select_window_events (GdkEventTranslator *translator, + Window window, + GdkEventMask event_mask); -G_DEFINE_TYPE_WITH_CODE (GdkDeviceManagerXI2, gdk_device_manager_xi2, GDK_TYPE_DEVICE_MANAGER, +G_DEFINE_TYPE_WITH_CODE (GdkX11DeviceManagerXI2, gdk_x11_device_manager_xi2, GDK_TYPE_DEVICE_MANAGER, G_IMPLEMENT_INTERFACE (GDK_TYPE_EVENT_TRANSLATOR, - gdk_device_manager_xi2_event_translator_init)) + gdk_x11_device_manager_xi2_event_translator_init)) +enum { + PROP_0, + PROP_OPCODE +}; + static void -gdk_device_manager_xi2_class_init (GdkDeviceManagerXI2Class *klass) +gdk_x11_device_manager_xi2_class_init (GdkX11DeviceManagerXI2Class *klass) { GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->constructed = gdk_device_manager_xi2_constructed; - object_class->dispose = gdk_device_manager_xi2_dispose; + object_class->constructed = gdk_x11_device_manager_xi2_constructed; + object_class->dispose = gdk_x11_device_manager_xi2_dispose; + object_class->set_property = gdk_x11_device_manager_xi2_set_property; + object_class->get_property = gdk_x11_device_manager_xi2_get_property; - device_manager_class->list_devices = gdk_device_manager_xi2_list_devices; - device_manager_class->get_client_pointer = gdk_device_manager_xi2_get_client_pointer; + device_manager_class->list_devices = gdk_x11_device_manager_xi2_list_devices; + device_manager_class->get_client_pointer = gdk_x11_device_manager_xi2_get_client_pointer; + + g_object_class_install_property (object_class, + PROP_OPCODE, + g_param_spec_int ("opcode", + P_("Opcode"), + P_("Opcode for XInput2 requests"), + 0, G_MAXINT, 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void -gdk_device_manager_xi2_init (GdkDeviceManagerXI2 *device_manager) +gdk_x11_device_manager_xi2_init (GdkX11DeviceManagerXI2 *device_manager) { device_manager->id_table = g_hash_table_new_full (g_direct_hash, g_direct_equal, @@ -80,9 +128,9 @@ gdk_device_manager_xi2_init (GdkDeviceManagerXI2 *device_manager) } static void -_gdk_device_manager_xi2_select_events (GdkDeviceManager *device_manager, - Window xwindow, - XIEventMask *event_mask) +_gdk_x11_device_manager_xi2_select_events (GdkDeviceManager *device_manager, + Window xwindow, + XIEventMask *event_mask) { GdkDisplay *display; Display *xdisplay; @@ -230,7 +278,7 @@ create_device (GdkDeviceManager *device_manager, break; } - device = g_object_new (GDK_TYPE_DEVICE_XI2, + device = g_object_new (GDK_TYPE_X11_DEVICE_XI2, "name", dev->name, "type", type, "input-source", input_source, @@ -247,9 +295,9 @@ create_device (GdkDeviceManager *device_manager, } static GdkDevice * -add_device (GdkDeviceManagerXI2 *device_manager, - XIDeviceInfo *dev, - gboolean emit_signal) +add_device (GdkX11DeviceManagerXI2 *device_manager, + XIDeviceInfo *dev, + gboolean emit_signal) { GdkDisplay *display; GdkDevice *device; @@ -263,22 +311,36 @@ add_device (GdkDeviceManagerXI2 *device_manager, if (dev->use == XIMasterPointer || dev->use == XIMasterKeyboard) device_manager->master_devices = g_list_append (device_manager->master_devices, device); - else if (dev->use == XISlavePointer || dev->use == XISlaveKeyboard) + else if (dev->use == XISlavePointer || dev->use == XISlaveKeyboard || dev->use == XIFloatingSlave) device_manager->slave_devices = g_list_append (device_manager->slave_devices, device); - else if (dev->use == XIFloatingSlave) - device_manager->floating_devices = g_list_append (device_manager->floating_devices, device); else g_warning ("Unhandled device: %s\n", gdk_device_get_name (device)); if (emit_signal) - g_signal_emit_by_name (device_manager, "device-added", device); + { + if (dev->use == XISlavePointer || dev->use == XISlaveKeyboard) + { + GdkDevice *master; + + /* The device manager is already constructed, then + * keep the hierarchy coherent for the added device. + */ + master = g_hash_table_lookup (device_manager->id_table, + GINT_TO_POINTER (dev->attachment)); + + _gdk_device_set_associated_device (device, master); + _gdk_device_add_slave (master, device); + } + + g_signal_emit_by_name (device_manager, "device-added", device); + } return device; } static void -remove_device (GdkDeviceManagerXI2 *device_manager, - int device_id) +remove_device (GdkX11DeviceManagerXI2 *device_manager, + gint device_id) { GdkDevice *device; @@ -289,7 +351,6 @@ remove_device (GdkDeviceManagerXI2 *device_manager, { device_manager->master_devices = g_list_remove (device_manager->master_devices, device); device_manager->slave_devices = g_list_remove (device_manager->slave_devices, device); - device_manager->floating_devices = g_list_remove (device_manager->floating_devices, device); g_signal_emit_by_name (device_manager, "device-removed", device); @@ -301,11 +362,11 @@ remove_device (GdkDeviceManagerXI2 *device_manager, } static void -relate_devices (gpointer key, +relate_masters (gpointer key, gpointer value, gpointer user_data) { - GdkDeviceManagerXI2 *device_manager; + GdkX11DeviceManagerXI2 *device_manager; GdkDevice *device, *relative; device_manager = user_data; @@ -317,24 +378,42 @@ relate_devices (gpointer key, } static void -gdk_device_manager_xi2_constructed (GObject *object) +relate_slaves (gpointer key, + gpointer value, + gpointer user_data) { - GdkDeviceManagerXI2 *device_manager_xi2; + GdkX11DeviceManagerXI2 *device_manager; + GdkDevice *slave, *master; + + device_manager = user_data; + slave = g_hash_table_lookup (device_manager->id_table, key); + master = g_hash_table_lookup (device_manager->id_table, value); + + _gdk_device_set_associated_device (slave, master); + _gdk_device_add_slave (master, slave); +} + +static void +gdk_x11_device_manager_xi2_constructed (GObject *object) +{ + GdkX11DeviceManagerXI2 *device_manager; GdkDisplay *display; GdkScreen *screen; - GHashTable *relations; + GHashTable *masters, *slaves; Display *xdisplay; XIDeviceInfo *info, *dev; int ndevices, i; XIEventMask event_mask; unsigned char mask[2] = { 0 }; - device_manager_xi2 = GDK_DEVICE_MANAGER_XI2 (object); + device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object); display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object)); xdisplay = GDK_DISPLAY_XDISPLAY (display); - relations = g_hash_table_new (NULL, NULL); - info = XIQueryDevice(xdisplay, XIAllDevices, &ndevices); + masters = g_hash_table_new (NULL, NULL); + slaves = g_hash_table_new (NULL, NULL); + + info = XIQueryDevice (xdisplay, XIAllDevices, &ndevices); /* Initialize devices list */ for (i = 0; i < ndevices; i++) @@ -342,22 +421,32 @@ gdk_device_manager_xi2_constructed (GObject *object) GdkDevice *device; dev = &info[i]; - device = add_device (device_manager_xi2, dev, FALSE); + device = add_device (device_manager, dev, FALSE); if (dev->use == XIMasterPointer || dev->use == XIMasterKeyboard) { - g_hash_table_insert (relations, + g_hash_table_insert (masters, + GINT_TO_POINTER (dev->deviceid), + GINT_TO_POINTER (dev->attachment)); + } + else if (dev->use == XISlavePointer || + dev->use == XISlaveKeyboard) + { + g_hash_table_insert (slaves, GINT_TO_POINTER (dev->deviceid), GINT_TO_POINTER (dev->attachment)); } } - XIFreeDeviceInfo(info); + XIFreeDeviceInfo (info); /* Stablish relationships between devices */ - g_hash_table_foreach (relations, relate_devices, object); - g_hash_table_destroy (relations); + g_hash_table_foreach (masters, relate_masters, object); + g_hash_table_destroy (masters); + + g_hash_table_foreach (slaves, relate_slaves, object); + g_hash_table_destroy (slaves); /* Connect to hierarchy change events */ screen = gdk_display_get_default_screen (display); @@ -368,74 +457,79 @@ gdk_device_manager_xi2_constructed (GObject *object) event_mask.mask_len = sizeof (mask); event_mask.mask = mask; - _gdk_device_manager_xi2_select_events (GDK_DEVICE_MANAGER (object), - GDK_WINDOW_XID (gdk_screen_get_root_window (screen)), - &event_mask); + _gdk_x11_device_manager_xi2_select_events (GDK_DEVICE_MANAGER (object), + GDK_WINDOW_XID (gdk_screen_get_root_window (screen)), + &event_mask); } static void -gdk_device_manager_xi2_dispose (GObject *object) +gdk_x11_device_manager_xi2_dispose (GObject *object) { - GdkDeviceManagerXI2 *device_manager_xi2; + GdkX11DeviceManagerXI2 *device_manager; - device_manager_xi2 = GDK_DEVICE_MANAGER_XI2 (object); + device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object); - g_list_foreach (device_manager_xi2->master_devices, (GFunc) g_object_unref, NULL); - g_list_free (device_manager_xi2->master_devices); - device_manager_xi2->master_devices = NULL; + g_list_free_full (device_manager->master_devices, g_object_unref); + device_manager->master_devices = NULL; - g_list_foreach (device_manager_xi2->slave_devices, (GFunc) g_object_unref, NULL); - g_list_free (device_manager_xi2->slave_devices); - device_manager_xi2->slave_devices = NULL; + g_list_free_full (device_manager->slave_devices, g_object_unref); + device_manager->slave_devices = NULL; - g_list_foreach (device_manager_xi2->floating_devices, (GFunc) g_object_unref, NULL); - g_list_free (device_manager_xi2->floating_devices); - device_manager_xi2->floating_devices = NULL; - - if (device_manager_xi2->id_table) + if (device_manager->id_table) { - g_hash_table_destroy (device_manager_xi2->id_table); - device_manager_xi2->id_table = NULL; + g_hash_table_destroy (device_manager->id_table); + device_manager->id_table = NULL; } - G_OBJECT_CLASS (gdk_device_manager_xi2_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_x11_device_manager_xi2_parent_class)->dispose (object); } static GList * -gdk_device_manager_xi2_list_devices (GdkDeviceManager *device_manager, - GdkDeviceType type) +gdk_x11_device_manager_xi2_list_devices (GdkDeviceManager *device_manager, + GdkDeviceType type) { - GdkDeviceManagerXI2 *device_manager_xi2; + GdkX11DeviceManagerXI2 *device_manager_xi2; GList *list = NULL; - device_manager_xi2 = GDK_DEVICE_MANAGER_XI2 (device_manager); + device_manager_xi2 = GDK_X11_DEVICE_MANAGER_XI2 (device_manager); switch (type) { case GDK_DEVICE_TYPE_MASTER: - list = device_manager_xi2->master_devices; + list = g_list_copy (device_manager_xi2->master_devices); break; case GDK_DEVICE_TYPE_SLAVE: - list = device_manager_xi2->slave_devices; - break; case GDK_DEVICE_TYPE_FLOATING: - list = device_manager_xi2->floating_devices; + { + GList *devs = device_manager_xi2->slave_devices; + + while (devs) + { + GdkDevice *dev; + + dev = devs->data; + devs = devs->next; + + if (type == gdk_device_get_device_type (dev)) + list = g_list_prepend (list, dev); + } + } break; default: g_assert_not_reached (); } - return g_list_copy (list); + return list; } static GdkDevice * -gdk_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager) +gdk_x11_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager) { - GdkDeviceManagerXI2 *device_manager_xi2; + GdkX11DeviceManagerXI2 *device_manager_xi2; GdkDisplay *display; int device_id; - device_manager_xi2 = (GdkDeviceManagerXI2 *) device_manager; + device_manager_xi2 = (GdkX11DeviceManagerXI2 *) device_manager; display = gdk_device_manager_get_display (device_manager); XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display), @@ -446,49 +540,120 @@ gdk_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager) } static void -gdk_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface) +gdk_x11_device_manager_xi2_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - iface->translate_event = gdk_device_manager_xi2_translate_event; - iface->get_handled_events = gdk_device_manager_xi2_get_handled_events; - iface->select_window_events = gdk_device_manager_xi2_select_window_events; + GdkX11DeviceManagerXI2 *device_manager; + + device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object); + + switch (prop_id) + { + case PROP_OPCODE: + device_manager->opcode = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void -handle_hierarchy_changed (GdkDeviceManagerXI2 *device_manager, - XIHierarchyEvent *ev) +gdk_x11_device_manager_xi2_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { + GdkX11DeviceManagerXI2 *device_manager; + + device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object); + + switch (prop_id) + { + case PROP_OPCODE: + g_value_set_int (value, device_manager->opcode); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_x11_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface) +{ + iface->translate_event = gdk_x11_device_manager_xi2_translate_event; + iface->get_handled_events = gdk_x11_device_manager_xi2_get_handled_events; + iface->select_window_events = gdk_x11_device_manager_xi2_select_window_events; +} + +static void +handle_hierarchy_changed (GdkX11DeviceManagerXI2 *device_manager, + XIHierarchyEvent *ev) +{ + GdkDisplay *display; + Display *xdisplay; GdkDevice *device; + XIDeviceInfo *info; + int ndevices; gint i; - /* We only care about enabled devices */ - if (!(ev->flags & XIDeviceEnabled) && - !(ev->flags & XIDeviceDisabled)) - return; + display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (device_manager)); + xdisplay = GDK_DISPLAY_XDISPLAY (display); for (i = 0; i < ev->num_info; i++) { if (ev->info[i].flags & XIDeviceEnabled) { - GdkDisplay *display; - Display *xdisplay; - XIDeviceInfo *info; - int ndevices; - - display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (device_manager)); - xdisplay = GDK_DISPLAY_XDISPLAY (display); - - info = XIQueryDevice(xdisplay, ev->info[i].deviceid, &ndevices); + info = XIQueryDevice (xdisplay, ev->info[i].deviceid, &ndevices); device = add_device (device_manager, &info[0], TRUE); - XIFreeDeviceInfo(info); + XIFreeDeviceInfo (info); } else if (ev->info[i].flags & XIDeviceDisabled) remove_device (device_manager, ev->info[i].deviceid); + else if (ev->info[i].flags & XISlaveAttached || + ev->info[i].flags & XISlaveDetached) + { + GdkDevice *master, *slave; + + slave = g_hash_table_lookup (device_manager->id_table, + GINT_TO_POINTER (ev->info[i].deviceid)); + + /* Remove old master info */ + master = gdk_device_get_associated_device (slave); + + if (master) + { + _gdk_device_remove_slave (master, slave); + _gdk_device_set_associated_device (slave, NULL); + + g_signal_emit_by_name (device_manager, "device-changed", master); + } + + /* Add new master if it's an attachment event */ + if (ev->info[i].flags & XISlaveAttached) + { + info = XIQueryDevice (xdisplay, ev->info[i].deviceid, &ndevices); + + master = g_hash_table_lookup (device_manager->id_table, + GINT_TO_POINTER (info->attachment)); + + _gdk_device_set_associated_device (slave, master); + _gdk_device_add_slave (master, slave); + + g_signal_emit_by_name (device_manager, "device-changed", master); + } + + g_signal_emit_by_name (device_manager, "device-changed", slave); + } } } static void -handle_device_changed (GdkDeviceManagerXI2 *device_manager, - XIDeviceChangedEvent *ev) +handle_device_changed (GdkX11DeviceManagerXI2 *device_manager, + XIDeviceChangedEvent *ev) { GdkDisplay *display; GdkDevice *device; @@ -499,10 +664,12 @@ handle_device_changed (GdkDeviceManagerXI2 *device_manager, _gdk_device_reset_axes (device); translate_device_classes (display, device, ev->classes, ev->num_classes); + + g_signal_emit_by_name (G_OBJECT (device), "changed"); } static GdkCrossingMode -translate_crossing_mode (int mode) +translate_crossing_mode (gint mode) { switch (mode) { @@ -518,7 +685,7 @@ translate_crossing_mode (int mode) } static GdkNotifyType -translate_notify_type (int detail) +translate_notify_type (gint detail) { switch (detail) { @@ -539,8 +706,8 @@ translate_notify_type (int detail) static gboolean set_screen_from_root (GdkDisplay *display, - GdkEvent *event, - Window xrootwin) + GdkEvent *event, + Window xrootwin) { GdkScreen *screen; @@ -596,19 +763,19 @@ translate_keyboard_string (GdkEventKey *event) /* Apply the control key - Taken from Xlib */ if (event->state & GDK_CONTROL_MASK) - { - if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; - else if (c == '2') - { - event->string = g_memdup ("\0\0", 2); - event->length = 1; - buf[0] = '\0'; + { + if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; + else if (c == '2') + { + event->string = g_memdup ("\0\0", 2); + event->length = 1; + buf[0] = '\0'; return; - } - else if (c >= '3' && c <= '7') c -= ('3' - '\033'); - else if (c == '8') c = '\177'; - else if (c == '/') c = '_' & 0x1F; - } + } + else if (c >= '3' && c <= '7') c -= ('3' - '\033'); + else if (c == '8') c = '\177'; + else if (c == '/') c = '_' & 0x1F; + } len = g_unichar_to_utf8 (c, buf); buf[len] = '\0'; @@ -617,7 +784,7 @@ translate_keyboard_string (GdkEventKey *event) NULL, &bytes_written, NULL); if (event->string) - event->length = bytes_written; + event->length = bytes_written; } else if (event->keyval == GDK_KEY_Escape) { @@ -625,7 +792,7 @@ translate_keyboard_string (GdkEventKey *event) event->string = g_strdup ("\033"); } else if (event->keyval == GDK_KEY_Return || - event->keyval == GDK_KEY_KP_Enter) + event->keyval == GDK_KEY_KP_Enter) { event->length = 1; event->string = g_strdup ("\r"); @@ -641,6 +808,7 @@ translate_keyboard_string (GdkEventKey *event) static void generate_focus_event (GdkWindow *window, GdkDevice *device, + GdkDevice *source_device, gboolean in) { GdkEvent *event; @@ -650,6 +818,7 @@ generate_focus_event (GdkWindow *window, event->focus_change.send_event = FALSE; event->focus_change.in = in; gdk_event_set_device (event, device); + gdk_event_set_source_device (event, source_device); gdk_event_put (event); gdk_event_free (event); @@ -658,6 +827,7 @@ generate_focus_event (GdkWindow *window, static void handle_focus_change (GdkWindow *window, GdkDevice *device, + GdkDevice *source_device, gint detail, gint mode, gboolean in) @@ -717,7 +887,7 @@ handle_focus_change (GdkWindow *window, } if (HAS_FOCUS (toplevel) != had_focus) - generate_focus_event (window, device, (in) ? TRUE : FALSE); + generate_focus_event (window, device, source_device, (in) ? TRUE : FALSE); } static gdouble * @@ -784,7 +954,7 @@ is_parent_of (GdkWindow *parent, while (w != NULL) { if (w == parent) - return TRUE; + return TRUE; w = gdk_window_get_parent (w); } @@ -811,7 +981,7 @@ get_event_window (GdkEventTranslator *translator, { XIDeviceEvent *xev = (XIDeviceEvent *) ev; - window = gdk_window_lookup_for_display (display, xev->event); + window = gdk_x11_window_lookup_for_display (display, xev->event); /* Apply keyboard grabs to non-native windows */ if (ev->evtype == XI_KeyPress || ev->evtype == XI_KeyRelease) @@ -820,10 +990,10 @@ get_event_window (GdkEventTranslator *translator, GdkDevice *device; gulong serial; - device = g_hash_table_lookup (GDK_DEVICE_MANAGER_XI2 (translator)->id_table, + device = g_hash_table_lookup (GDK_X11_DEVICE_MANAGER_XI2 (translator)->id_table, GUINT_TO_POINTER (((XIDeviceEvent *) ev)->deviceid)); - serial = _gdk_windowing_window_get_next_serial (display); + serial = _gdk_display_get_next_serial (display); info = _gdk_display_has_device_grab (display, device, serial); if (info && @@ -843,7 +1013,7 @@ get_event_window (GdkEventTranslator *translator, { XIEnterEvent *xev = (XIEnterEvent *) ev; - window = gdk_window_lookup_for_display (display, xev->event); + window = gdk_x11_window_lookup_for_display (display, xev->event); } break; } @@ -852,12 +1022,12 @@ get_event_window (GdkEventTranslator *translator, } static gboolean -gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, - GdkDisplay *display, - GdkEvent *event, - XEvent *xevent) +gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, + GdkDisplay *display, + GdkEvent *event, + XEvent *xevent) { - GdkDeviceManagerXI2 *device_manager; + GdkX11DeviceManagerXI2 *device_manager; XGenericEventCookie *cookie; gboolean return_val = TRUE; GdkWindow *window; @@ -865,7 +1035,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, Display *dpy; dpy = GDK_DISPLAY_XDISPLAY (display); - device_manager = (GdkDeviceManagerXI2 *) translator; + device_manager = (GdkX11DeviceManagerXI2 *) translator; cookie = &xevent->xcookie; if (!XGetEventData (dpy, cookie)) @@ -891,7 +1061,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, if (ev->evtype == XI_Motion || ev->evtype == XI_ButtonRelease) { - if (_gdk_moveresize_handle_event (xevent)) + if (_gdk_x11_moveresize_handle_event (xevent)) { XFreeEventData (dpy, cookie); return FALSE; @@ -916,23 +1086,27 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, XIDeviceEvent *xev = (XIDeviceEvent *) ev; GdkKeymap *keymap = gdk_keymap_get_for_display (display); GdkModifierType consumed, state; - GdkDevice *device; + GdkDevice *device, *source_device; event->key.type = xev->evtype == XI_KeyPress ? GDK_KEY_PRESS : GDK_KEY_RELEASE; event->key.window = window; event->key.time = xev->time; - event->key.state = gdk_device_xi2_translate_state (&xev->mods, &xev->buttons); + event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->key.group = _gdk_x11_get_group_for_state (display, event->key.state); event->key.hardware_keycode = xev->detail; - event->key.is_modifier = _gdk_keymap_key_is_modifier (keymap, event->key.hardware_keycode); + event->key.is_modifier = _gdk_x11_keymap_key_is_modifier (keymap, event->key.hardware_keycode); device = g_hash_table_lookup (device_manager->id_table, GUINT_TO_POINTER (xev->deviceid)); gdk_event_set_device (event, device); + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + gdk_event_set_source_device (event, source_device); + event->key.keyval = GDK_KEY_VoidSymbol; gdk_keymap_translate_keyboard_state (keymap, @@ -943,7 +1117,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, NULL, NULL, &consumed); state = event->key.state & ~consumed; - _gdk_keymap_add_virtual_modifiers_compat (keymap, &state); + _gdk_x11_keymap_add_virt_mods (keymap, &state); event->key.state |= state; translate_keyboard_string ((GdkEventKey *) event); @@ -961,6 +1135,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, case XI_ButtonRelease: { XIDeviceEvent *xev = (XIDeviceEvent *) ev; + GdkDevice *source_device; switch (xev->detail) { @@ -989,7 +1164,11 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, event->scroll.device = g_hash_table_lookup (device_manager->id_table, GUINT_TO_POINTER (xev->deviceid)); - event->scroll.state = gdk_device_xi2_translate_state (&xev->mods, &xev->buttons); + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + gdk_event_set_source_device (event, source_device); + + event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); break; default: event->button.type = (ev->evtype == XI_ButtonPress) ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE; @@ -1004,6 +1183,10 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, event->button.device = g_hash_table_lookup (device_manager->id_table, GUINT_TO_POINTER (xev->deviceid)); + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + gdk_event_set_source_device (event, source_device); + event->button.axes = translate_axes (event->button.device, event->button.x, event->button.y, @@ -1019,7 +1202,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, gdk_device_get_axis (device, event->button.axes, GDK_AXIS_Y, &event->button.y); } - event->button.state = gdk_device_xi2_translate_state (&xev->mods, &xev->buttons); + event->button.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); event->button.button = xev->detail; } @@ -1036,6 +1219,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, case XI_Motion: { XIDeviceEvent *xev = (XIDeviceEvent *) ev; + GdkDevice *source_device; event->motion.type = GDK_MOTION_NOTIFY; @@ -1050,7 +1234,11 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, event->motion.device = g_hash_table_lookup (device_manager->id_table, GINT_TO_POINTER (xev->deviceid)); - event->motion.state = gdk_device_xi2_translate_state (&xev->mods, &xev->buttons); + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + gdk_event_set_source_device (event, source_device); + + event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); /* There doesn't seem to be motion hints in XI */ event->motion.is_hint = FALSE; @@ -1075,7 +1263,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, case XI_Leave: { XIEnterEvent *xev = (XIEnterEvent *) ev; - GdkDevice *device; + GdkDevice *device, *source_device; event->crossing.type = (ev->evtype == XI_Enter) ? GDK_ENTER_NOTIFY : GDK_LEAVE_NOTIFY; @@ -1087,27 +1275,35 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, event->crossing.focus = xev->focus; event->crossing.window = window; - event->crossing.subwindow = gdk_window_lookup_for_display (display, xev->child); + event->crossing.subwindow = gdk_x11_window_lookup_for_display (display, xev->child); device = g_hash_table_lookup (device_manager->id_table, GINT_TO_POINTER (xev->deviceid)); gdk_event_set_device (event, device); + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + gdk_event_set_source_device (event, source_device); + event->crossing.mode = translate_crossing_mode (xev->mode); event->crossing.detail = translate_notify_type (xev->detail); - event->crossing.state = gdk_device_xi2_translate_state (&xev->mods, &xev->buttons); + event->crossing.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons); } break; case XI_FocusIn: case XI_FocusOut: { XIEnterEvent *xev = (XIEnterEvent *) ev; - GdkDevice *device; + GdkDevice *device, *source_device; device = g_hash_table_lookup (device_manager->id_table, GINT_TO_POINTER (xev->deviceid)); - handle_focus_change (window, device, xev->detail, xev->mode, + source_device = g_hash_table_lookup (device_manager->id_table, + GUINT_TO_POINTER (xev->sourceid)); + + handle_focus_change (window, device, source_device, + xev->detail, xev->mode, (ev->evtype == XI_FocusIn) ? TRUE : FALSE); return_val = FALSE; @@ -1125,8 +1321,8 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, g_object_ref (event->any.window); if (((event->any.type == GDK_ENTER_NOTIFY) || - (event->any.type == GDK_LEAVE_NOTIFY)) && - (event->crossing.subwindow != NULL)) + (event->any.type == GDK_LEAVE_NOTIFY)) && + (event->crossing.subwindow != NULL)) g_object_ref (event->crossing.subwindow); } else @@ -1142,7 +1338,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator, } static GdkEventMask -gdk_device_manager_xi2_get_handled_events (GdkEventTranslator *translator) +gdk_x11_device_manager_xi2_get_handled_events (GdkEventTranslator *translator) { return (GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | @@ -1161,9 +1357,9 @@ gdk_device_manager_xi2_get_handled_events (GdkEventTranslator *translator) } static void -gdk_device_manager_xi2_select_window_events (GdkEventTranslator *translator, - Window window, - GdkEventMask evmask) +gdk_x11_device_manager_xi2_select_window_events (GdkEventTranslator *translator, + Window window, + GdkEventMask evmask) { GdkDeviceManager *device_manager; XIEventMask event_mask; @@ -1171,8 +1367,8 @@ gdk_device_manager_xi2_select_window_events (GdkEventTranslator *translator, device_manager = GDK_DEVICE_MANAGER (translator); event_mask.deviceid = XIAllMasterDevices; - event_mask.mask = gdk_device_xi2_translate_event_mask (evmask, &event_mask.mask_len); + event_mask.mask = _gdk_x11_device_xi2_translate_event_mask (evmask, &event_mask.mask_len); - _gdk_device_manager_xi2_select_events (device_manager, window, &event_mask); + _gdk_x11_device_manager_xi2_select_events (device_manager, window, &event_mask); g_free (event_mask.mask); } diff --git a/gdk/x11/gdkdevicemanager-xi2.h b/gdk/x11/gdkdevicemanager-xi2.h deleted file mode 100644 index 20054c160c..0000000000 --- a/gdk/x11/gdkdevicemanager-xi2.h +++ /dev/null @@ -1,63 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 2009 Carlos Garnacho - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GDK_DEVICE_MANAGER_XI2_H__ -#define __GDK_DEVICE_MANAGER_XI2_H__ - -#include -#include - -G_BEGIN_DECLS - -#define GDK_TYPE_DEVICE_MANAGER_XI2 (gdk_device_manager_xi2_get_type ()) -#define GDK_DEVICE_MANAGER_XI2(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_MANAGER_XI2, GdkDeviceManagerXI2)) -#define GDK_DEVICE_MANAGER_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_MANAGER_XI2, GdkDeviceManagerXI2Class)) -#define GDK_IS_DEVICE_MANAGER_XI2(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_MANAGER_XI2)) -#define GDK_IS_DEVICE_MANAGER_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_MANAGER_XI2)) -#define GDK_DEVICE_MANAGER_XI2_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_MANAGER_XI2, GdkDeviceManagerXI2Class)) - -typedef struct _GdkDeviceManagerXI2 GdkDeviceManagerXI2; -typedef struct _GdkDeviceManagerXI2Class GdkDeviceManagerXI2Class; - -struct _GdkDeviceManagerXI2 -{ - GdkDeviceManager parent_object; - - GHashTable *id_table; - - GList *master_devices; - GList *slave_devices; - GList *floating_devices; - - GdkDevice *client_pointer; - - int opcode; -}; - -struct _GdkDeviceManagerXI2Class -{ - GdkDeviceManagerClass parent_class; -}; - -GType gdk_device_manager_xi2_get_type (void) G_GNUC_CONST; - - -G_END_DECLS - -#endif /* __GDK_DEVICE_MANAGER_XI2_H__ */ diff --git a/gdk/x11/gdkdevicemanagerprivate-core.h b/gdk/x11/gdkdevicemanagerprivate-core.h new file mode 100644 index 0000000000..5266dfc399 --- /dev/null +++ b/gdk/x11/gdkdevicemanagerprivate-core.h @@ -0,0 +1,42 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_DEVICE_MANAGER_PRIVATE_CORE_H__ +#define __GDK_DEVICE_MANAGER_PRIVATE_CORE_H__ + +#include "gdkx11devicemanager-core.h" +#include "gdkdevicemanagerprivate.h" + +G_BEGIN_DECLS + +struct _GdkX11DeviceManagerCore +{ + GdkDeviceManager parent_object; + GdkDevice *core_pointer; + GdkDevice *core_keyboard; +}; + +struct _GdkX11DeviceManagerCoreClass +{ + GdkDeviceManagerClass parent_class; +}; + +G_END_DECLS + +#endif /* __GDK_DEVICE_MANAGER_PRIVATE_CORE_H__ */ diff --git a/gdk/quartz/gdkdevice-core.h b/gdk/x11/gdkdeviceprivate-xi.h similarity index 50% rename from gdk/quartz/gdkdevice-core.h rename to gdk/x11/gdkdeviceprivate-xi.h index 8f53d6fad8..05df1ee5ab 100644 --- a/gdk/quartz/gdkdevice-core.h +++ b/gdk/x11/gdkdeviceprivate-xi.h @@ -17,35 +17,46 @@ * Boston, MA 02111-1307, USA. */ -#ifndef __GDK_DEVICE_CORE_H__ -#define __GDK_DEVICE_CORE_H__ +#ifndef __GDK_DEVICE_PRIVATE_XI_H__ +#define __GDK_DEVICE_PRIVATE_XI_H__ -#include +#include "gdkx11device-xi.h" +#include "gdkdeviceprivate.h" + +#include +#include +#include G_BEGIN_DECLS -#define GDK_TYPE_DEVICE_CORE (gdk_device_core_get_type ()) -#define GDK_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_DEVICE_CORE, GdkDeviceCore)) -#define GDK_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE_CORE, GdkDeviceCoreClass)) -#define GDK_IS_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_DEVICE_CORE)) -#define GDK_IS_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE_CORE)) -#define GDK_DEVICE_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE_CORE, GdkDeviceCoreClass)) - -typedef struct _GdkDeviceCore GdkDeviceCore; -typedef struct _GdkDeviceCoreClass GdkDeviceCoreClass; - -struct _GdkDeviceCore +struct _GdkX11DeviceXI { GdkDevice parent_instance; + + /*< private >*/ + guint32 device_id; + XDevice *xdevice; + + gint button_press_type; + gint button_release_type; + gint key_press_type; + gint key_release_type; + gint motion_notify_type; + gint proximity_in_type; + gint proximity_out_type; + gint state_notify_type; + + /* minimum key code for device */ + gint min_keycode; + gint *axis_data; + guint in_proximity : 1; }; -struct _GdkDeviceCoreClass +struct _GdkX11DeviceXIClass { GdkDeviceClass parent_class; }; -GType gdk_device_core_get_type (void) G_GNUC_CONST; - G_END_DECLS -#endif /* __GDK_DEVICE_CORE_H__ */ +#endif /* __GDK_DEVICE_PRIVATE_XI_H__ */ diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index bfcc358cce..e406bb83e3 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -24,20 +24,20 @@ #include "config.h" -#include "gdkdisplay-x11.h" - -#include "gdkx.h" #include "gdkasync.h" #include "gdkdisplay.h" #include "gdkeventsource.h" #include "gdkeventtranslator.h" #include "gdkinternals.h" #include "gdkscreen.h" -#include "gdkscreen-x11.h" #include "gdkinternals.h" #include "gdkdeviceprivate.h" +#include "gdkkeysprivate.h" #include "gdkdevicemanager.h" #include "xsettings-client.h" +#include "gdkdisplay-x11.h" +#include "gdkprivate-x11.h" +#include "gdkscreen-x11.h" #include #include @@ -88,12 +88,12 @@ struct _GdkErrorTrap int error_code; }; -static void gdk_display_x11_dispose (GObject *object); -static void gdk_display_x11_finalize (GObject *object); +static void gdk_x11_display_dispose (GObject *object); +static void gdk_x11_display_finalize (GObject *object); -static void gdk_display_x11_event_translator_init (GdkEventTranslatorIface *iface); +static void gdk_x11_display_event_translator_init (GdkEventTranslatorIface *iface); -static gboolean gdk_display_x11_translate_event (GdkEventTranslator *translator, +static gboolean gdk_x11_display_translate_event (GdkEventTranslator *translator, GdkDisplay *display, GdkEvent *event, XEvent *xevent); @@ -154,32 +154,28 @@ static const char *const precache_atoms[] = { "_NET_WM_WINDOW_TYPE", "_NET_WM_WINDOW_TYPE_NORMAL", "_NET_WM_USER_TIME", - "_NET_VIRTUAL_ROOTS" + "_NET_VIRTUAL_ROOTS", + "GDK_SELECTION" }; -G_DEFINE_TYPE_WITH_CODE (GdkDisplayX11, _gdk_display_x11, GDK_TYPE_DISPLAY, +static char *gdk_sm_client_id; + +G_DEFINE_TYPE_WITH_CODE (GdkX11Display, gdk_x11_display, GDK_TYPE_DISPLAY, G_IMPLEMENT_INTERFACE (GDK_TYPE_EVENT_TRANSLATOR, - gdk_display_x11_event_translator_init)) + gdk_x11_display_event_translator_init)) static void -_gdk_display_x11_class_init (GdkDisplayX11Class * class) +gdk_x11_display_init (GdkX11Display *display) { - GObjectClass *object_class = G_OBJECT_CLASS (class); - - object_class->dispose = gdk_display_x11_dispose; - object_class->finalize = gdk_display_x11_finalize; + _gdk_x11_display_manager_add_display (gdk_display_manager_get (), + GDK_DISPLAY (display)); } static void -_gdk_display_x11_init (GdkDisplayX11 *display) +gdk_x11_display_event_translator_init (GdkEventTranslatorIface *iface) { -} - -static void -gdk_display_x11_event_translator_init (GdkEventTranslatorIface *iface) -{ - iface->translate_event = gdk_display_x11_translate_event; + iface->translate_event = gdk_x11_display_translate_event; } static void @@ -260,14 +256,14 @@ gdk_check_wm_desktop_changed (GdkWindow *window) gulong *desktop; type = None; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP"), 0, G_MAXLONG, False, XA_CARDINAL, &type, &format, &nitems, &bytes_after, &data); - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); if (type != None) { @@ -303,12 +299,12 @@ gdk_check_wm_state_changed (GdkWindow *window) toplevel->have_fullscreen = FALSE; type = None; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE"), 0, G_MAXLONG, False, XA_ATOM, &type, &format, &nitems, &bytes_after, &data); - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); if (type != None) { @@ -373,11 +369,11 @@ get_event_window (GdkEventTranslator *translator, xwindow = xevent->xany.window; } - return gdk_window_lookup_for_display (display, xwindow); + return gdk_x11_window_lookup_for_display (display, xwindow); } static gboolean -gdk_display_x11_translate_event (GdkEventTranslator *translator, +gdk_x11_display_translate_event (GdkEventTranslator *translator, GdkDisplay *display, GdkEvent *event, XEvent *xevent) @@ -385,9 +381,9 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, GdkWindow *window; GdkWindowImplX11 *window_impl = NULL; GdkScreen *screen = NULL; - GdkScreenX11 *screen_x11 = NULL; + GdkX11Screen *x11_screen = NULL; GdkToplevelX11 *toplevel = NULL; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); gboolean return_val; Window xwindow = None; @@ -406,7 +402,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, return FALSE; screen = GDK_WINDOW_SCREEN (window); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); toplevel = _gdk_x11_window_get_toplevel (window); window_impl = GDK_WINDOW_IMPL_X11 (window->impl); xwindow = GDK_WINDOW_XID (window); @@ -434,14 +430,14 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, for (i = 0; i < n; i++) { screen = gdk_display_get_screen (display, i); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - if (screen_x11->wmspec_check_window == xwindow) + if (x11_screen->wmspec_check_window == xwindow) { - screen_x11->wmspec_check_window = None; - screen_x11->last_wmspec_check_time = 0; - g_free (screen_x11->window_manager_name); - screen_x11->window_manager_name = g_strdup ("unknown"); + x11_screen->wmspec_check_window = None; + x11_screen->last_wmspec_check_time = 0; + g_free (x11_screen->window_manager_name); + x11_screen->window_manager_name = g_strdup ("unknown"); /* careful, reentrancy */ _gdk_x11_screen_window_manager_changed (screen); @@ -493,7 +489,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, expose_rect.width = xevent->xexpose.width; expose_rect.height = xevent->xexpose.height; - _gdk_window_process_expose (window, xevent->xexpose.serial, &expose_rect); + _gdk_x11_window_process_expose (window, xevent->xexpose.serial, &expose_rect); return_val = FALSE; } @@ -518,7 +514,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, expose_rect.width = xevent->xgraphicsexpose.width; expose_rect.height = xevent->xgraphicsexpose.height; - _gdk_window_process_expose (window, xevent->xgraphicsexpose.serial, &expose_rect); + _gdk_x11_window_process_expose (window, xevent->xgraphicsexpose.serial, &expose_rect); return_val = FALSE; } break; @@ -596,7 +592,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, return_val = window && !GDK_WINDOW_DESTROYED (window); - if (window && GDK_WINDOW_XID (window) != screen_x11->xroot_window) + if (window && GDK_WINDOW_XID (window) != x11_screen->xroot_window) gdk_window_destroy_notify (window); } else @@ -618,14 +614,14 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, * will have already flipped the iconified bit off. */ if (window) - { - if (GDK_WINDOW_IS_MAPPED (window)) - gdk_synthesize_window_state (window, - 0, - GDK_WINDOW_STATE_ICONIFIED); + { + if (GDK_WINDOW_IS_MAPPED (window)) + gdk_synthesize_window_state (window, + 0, + GDK_WINDOW_STATE_ICONIFIED); - _gdk_xgrab_check_unmap (window, xevent->xany.serial); - } + _gdk_x11_window_grab_check_unmap (window, xevent->xany.serial); + } break; @@ -714,10 +710,10 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, gint ty = 0; Window child_window = 0; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); if (XTranslateCoordinates (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), - screen_x11->xroot_window, + x11_screen->xroot_window, 0, 0, &tx, &ty, &child_window)) @@ -725,7 +721,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, event->configure.x = tx; event->configure.y = ty; } - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); } else { @@ -740,14 +736,14 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, _gdk_window_update_size (window); _gdk_x11_window_update_size (GDK_WINDOW_IMPL_X11 (window->impl)); - if (window->resize_count >= 1) - { - window->resize_count -= 1; + if (window->resize_count >= 1) + { + window->resize_count -= 1; - if (window->resize_count == 0) - _gdk_moveresize_configure_done (display, window); - } - } + if (window->resize_count == 0) + _gdk_x11_moveresize_configure_done (display, window); + } + } break; case PropertyNotify: @@ -796,7 +792,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, g_message ("selection clear:\twindow: %ld", xevent->xproperty.window)); - if (_gdk_selection_filter_clear_event (&xevent->xselectionclear)) + if (_gdk_x11_selection_filter_clear_event (&xevent->xselectionclear)) { event->selection.type = GDK_SELECTION_CLEAR; event->selection.window = window; @@ -909,7 +905,7 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, /* Let XLib know that there is a new keyboard mapping. */ XRefreshKeyboardMapping (&xevent->xmapping); - _gdk_keymap_keys_changed (display); + _gdk_x11_keymap_keys_changed (display); return_val = FALSE; break; @@ -965,9 +961,9 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, repair, None); XFixesDestroyRegion (display_x11->xdisplay, repair); - if (window->parent != NULL) - _gdk_window_process_expose (window->parent, - damage_event->serial, &rect); + if (window->parent != NULL) + _gdk_x11_window_process_expose (window->parent, + damage_event->serial, &rect); return_val = TRUE; } @@ -982,13 +978,13 @@ gdk_display_x11_translate_event (GdkEventTranslator *translator, { case XkbNewKeyboardNotify: case XkbMapNotify: - _gdk_keymap_keys_changed (display); + _gdk_x11_keymap_keys_changed (display); return_val = FALSE; break; case XkbStateNotify: - _gdk_keymap_state_changed (display, xevent); + _gdk_x11_keymap_state_changed (display, xevent); break; } } @@ -1081,7 +1077,7 @@ gdk_wm_protocols_filter (GdkXEvent *xev, return GDK_FILTER_REMOVE; } else if (atom == gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_SYNC_REQUEST") && - GDK_DISPLAY_X11 (display)->use_sync) + GDK_X11_DISPLAY (display)->use_sync) { GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (event->any.window); if (toplevel) @@ -1099,36 +1095,36 @@ gdk_wm_protocols_filter (GdkXEvent *xev, } static void -_gdk_event_init (GdkDisplay *display) +gdk_event_init (GdkDisplay *display) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkDeviceManager *device_manager; - display_x11 = GDK_DISPLAY_X11 (display); - display_x11->event_source = gdk_event_source_new (display); + display_x11 = GDK_X11_DISPLAY (display); + display_x11->event_source = gdk_x11_event_source_new (display); - gdk_event_source_add_translator ((GdkEventSource *) display_x11->event_source, - GDK_EVENT_TRANSLATOR (display)); + gdk_x11_event_source_add_translator ((GdkEventSource *) display_x11->event_source, + GDK_EVENT_TRANSLATOR (display)); device_manager = gdk_display_get_device_manager (display); - gdk_event_source_add_translator ((GdkEventSource *) display_x11->event_source, - GDK_EVENT_TRANSLATOR (device_manager)); + gdk_x11_event_source_add_translator ((GdkEventSource *) display_x11->event_source, + GDK_EVENT_TRANSLATOR (device_manager)); gdk_display_add_client_message_filter (display, - gdk_atom_intern_static_string ("WM_PROTOCOLS"), - gdk_wm_protocols_filter, - NULL); + gdk_atom_intern_static_string ("WM_PROTOCOLS"), + gdk_wm_protocols_filter, + NULL); } static void -_gdk_input_init (GdkDisplay *display) +gdk_x11_display_init_input (GdkDisplay *display) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkDeviceManager *device_manager; GdkDevice *device; GList *list, *l; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); device_manager = gdk_display_get_device_manager (display); /* For backwards compatibility, just add @@ -1156,7 +1152,7 @@ _gdk_input_init (GdkDisplay *display) for (l = list; l; l = l->next) { - device = list->data; + device = l->data; if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE) continue; @@ -1172,28 +1168,35 @@ _gdk_input_init (GdkDisplay *display) g_list_free (list); } -/** - * gdk_display_open: - * @display_name: the name of the display to open - * - * Opens a display. - * - * Return value: (transfer none): a #GdkDisplay, or %NULL if the display - * could not be opened. - * - * Since: 2.2 - */ +static void +set_sm_client_id (GdkDisplay *display, + const gchar *sm_client_id) +{ + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + + if (gdk_display_is_closed (display)) + return; + + if (sm_client_id && strcmp (sm_client_id, "")) + XChangeProperty (display_x11->xdisplay, display_x11->leader_window, + gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID"), + XA_STRING, 8, PropModeReplace, (guchar *)sm_client_id, + strlen (sm_client_id)); + else + XDeleteProperty (display_x11->xdisplay, display_x11->leader_window, + gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID")); +} + GdkDisplay * -gdk_display_open (const gchar *display_name) +_gdk_x11_display_open (const gchar *display_name) { Display *xdisplay; GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkWindowAttr attr; gint argc; gchar *argv[1]; - const char *sm_client_id; - + XClassHint *class_hint; gulong pid; gint i; @@ -1204,8 +1207,8 @@ gdk_display_open (const gchar *display_name) if (!xdisplay) return NULL; - display = g_object_new (GDK_TYPE_DISPLAY_X11, NULL); - display_x11 = GDK_DISPLAY_X11 (display); + display = g_object_new (GDK_TYPE_X11_DISPLAY, NULL); + display_x11 = GDK_X11_DISPLAY (display); display_x11->xdisplay = xdisplay; @@ -1217,22 +1220,26 @@ gdk_display_open (const gchar *display_name) _gdk_x11_precache_atoms (display, precache_atoms, G_N_ELEMENTS (precache_atoms)); /* RandR must be initialized before we initialize the screens */ + display_x11->have_randr12 = FALSE; display_x11->have_randr13 = FALSE; #ifdef HAVE_RANDR if (XRRQueryExtension (display_x11->xdisplay, &display_x11->xrandr_event_base, &ignore)) { int major, minor; - + XRRQueryVersion (display_x11->xdisplay, &major, &minor); - if ((major == 1 && minor >= 3) || major > 1) - display_x11->have_randr13 = TRUE; + if ((major == 1 && minor >= 2) || major > 1) { + display_x11->have_randr12 = TRUE; + if (minor >= 3 || major > 1) + display_x11->have_randr13 = TRUE; + } gdk_x11_register_standard_event_type (display, display_x11->xrandr_event_base, RRNumberEvents); } #endif - + /* initialize the display's screens */ display_x11->screens = g_new (GdkScreen *, ScreenCount (display_x11->xdisplay)); for (i = 0; i < ScreenCount (display_x11->xdisplay); i++) @@ -1242,14 +1249,14 @@ gdk_display_open (const gchar *display_name) * structures in places */ for (i = 0; i < ScreenCount (display_x11->xdisplay); i++) - _gdk_screen_x11_events_init (display_x11->screens[i]); + _gdk_x11_screen_init_events (display_x11->screens[i]); /*set the default screen */ display_x11->default_screen = display_x11->screens[DefaultScreen (display_x11->xdisplay)]; - display->device_manager = _gdk_device_manager_new (display); + display->device_manager = _gdk_x11_device_manager_new (display); - _gdk_event_init (display); + gdk_event_init (display); attr.window_type = GDK_WINDOW_TOPLEVEL; attr.wclass = GDK_INPUT_OUTPUT; @@ -1259,7 +1266,7 @@ gdk_display_open (const gchar *display_name) attr.height = 10; attr.event_mask = 0; - display_x11->leader_gdk_window = gdk_window_new (GDK_SCREEN_X11 (display_x11->default_screen)->root_window, + display_x11->leader_gdk_window = gdk_window_new (GDK_X11_SCREEN (display_x11->default_screen)->root_window, &attr, GDK_WA_X | GDK_WA_Y); (_gdk_x11_window_get_toplevel (display_x11->leader_gdk_window))->is_leader = TRUE; @@ -1333,23 +1340,23 @@ gdk_display_open (const gchar *display_name) int rootx, rooty, winx, winy; unsigned int xmask; - gdk_error_trap_push (); - XQueryPointer (display_x11->xdisplay, - GDK_SCREEN_X11 (display_x11->default_screen)->xroot_window, + gdk_x11_display_error_trap_push (display); + XQueryPointer (display_x11->xdisplay, + GDK_X11_SCREEN (display_x11->default_screen)->xroot_window, &root, &child, &rootx, &rooty, &winx, &winy, &xmask); - if (G_UNLIKELY (gdk_error_trap_pop () == BadWindow)) + if (G_UNLIKELY (gdk_x11_display_error_trap_pop (display) == BadWindow)) { g_warning ("Connection to display %s appears to be untrusted. Pointer and keyboard grabs and inter-client communication may not work as expected.", gdk_display_get_name (display)); display_x11->trusted_client = FALSE; } } - if (_gdk_synchronize) + if (g_getenv ("GDK_SYNCHRONIZE")) XSynchronize (display_x11->xdisplay, True); - + class_hint = XAllocClassHint(); class_hint->res_name = g_get_prgname (); - + class_hint->res_class = (char *)gdk_get_program_class (); /* XmbSetWMProperties sets the RESOURCE_NAME environment variable @@ -1357,16 +1364,15 @@ gdk_display_open (const gchar *display_name) */ argc = 1; argv[0] = g_get_prgname (); - + XmbSetWMProperties (display_x11->xdisplay, display_x11->leader_window, NULL, NULL, argv, argc, NULL, NULL, class_hint); XFree (class_hint); - sm_client_id = _gdk_get_sm_client_id (); - if (sm_client_id) - _gdk_windowing_display_set_sm_client_id (display, sm_client_id); + if (gdk_sm_client_id) + set_sm_client_id (display, gdk_sm_client_id); pid = getpid (); XChangeProperty (display_x11->xdisplay, @@ -1399,7 +1405,7 @@ gdk_display_open (const gchar *display_name) XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask, XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask); - /* keep this in sync with _gdk_keymap_state_changed() */ + /* keep this in sync with _gdk_x11_keymap_state_changed() */ XkbSelectEventDetails (display_x11->xdisplay, XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, @@ -1410,7 +1416,7 @@ gdk_display_open (const gchar *display_name) &detectable_autorepeat_supported); GDK_NOTE (MISC, g_message ("Detectable autorepeat %s.", - detectable_autorepeat_supported ? + detectable_autorepeat_supported ? "supported" : "not supported")); display_x11->have_xkb_autorepeat = detectable_autorepeat_supported; @@ -1433,8 +1439,8 @@ gdk_display_open (const gchar *display_name) } #endif - _gdk_input_init (display); - _gdk_dnd_init (display); + gdk_x11_display_init_input (display); + _gdk_x11_display_init_dnd (display); for (i = 0; i < ScreenCount (display_x11->xdisplay); i++) _gdk_x11_screen_setup (display_x11->screens[i]); @@ -1474,8 +1480,8 @@ process_internal_connection (GIOChannel *gioc, return TRUE; } -gulong -_gdk_windowing_window_get_next_serial (GdkDisplay *display) +static gulong +gdk_x11_display_get_next_serial (GdkDisplay *display) { return NextRequest (GDK_DISPLAY_XDISPLAY (display)); } @@ -1526,93 +1532,42 @@ gdk_internal_connection_watch (Display *display, } #endif /* HAVE_X11R6 */ -/** - * gdk_display_get_name: - * @display: a #GdkDisplay - * - * Gets the name of the display. - * - * Returns: a string representing the display name. This string is owned - * by GDK and should not be modified or freed. - * - * Since: 2.2 - */ -G_CONST_RETURN gchar * -gdk_display_get_name (GdkDisplay *display) +static G_CONST_RETURN gchar * +gdk_x11_display_get_name (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - return (gchar *) DisplayString (GDK_DISPLAY_X11 (display)->xdisplay); + return (gchar *) DisplayString (GDK_X11_DISPLAY (display)->xdisplay); } -/** - * gdk_display_get_n_screens: - * @display: a #GdkDisplay - * - * Gets the number of screen managed by the @display. - * - * Returns: number of screens. - * - * Since: 2.2 - */ -gint -gdk_display_get_n_screens (GdkDisplay *display) +static gint +gdk_x11_display_get_n_screens (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - - return ScreenCount (GDK_DISPLAY_X11 (display)->xdisplay); + return ScreenCount (GDK_X11_DISPLAY (display)->xdisplay); } -/** - * gdk_display_get_screen: - * @display: a #GdkDisplay - * @screen_num: the screen number - * - * Returns a screen object for one of the screens of the display. - * - * Returns: (transfer none): the #GdkScreen object - * - * Since: 2.2 - */ -GdkScreen * -gdk_display_get_screen (GdkDisplay *display, - gint screen_num) +static GdkScreen * +gdk_x11_display_get_screen (GdkDisplay *display, + gint screen_num) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (ScreenCount (GDK_DISPLAY_X11 (display)->xdisplay) > screen_num, NULL); - - return GDK_DISPLAY_X11 (display)->screens[screen_num]; + g_return_val_if_fail (ScreenCount (GDK_X11_DISPLAY (display)->xdisplay) > screen_num, NULL); + + return GDK_X11_DISPLAY (display)->screens[screen_num]; } -/** - * gdk_display_get_default_screen: - * @display: a #GdkDisplay - * - * Get the default #GdkScreen for @display. - * - * Returns: (transfer none): the default #GdkScreen object for @display - * - * Since: 2.2 - */ -GdkScreen * -gdk_display_get_default_screen (GdkDisplay *display) +static GdkScreen * +gdk_x11_display_get_default_screen (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - return GDK_DISPLAY_X11 (display)->default_screen; + return GDK_X11_DISPLAY (display)->default_screen; } gboolean _gdk_x11_display_is_root_window (GdkDisplay *display, Window xroot_window) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; gint i; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - - display_x11 = GDK_DISPLAY_X11 (display); - + + display_x11 = GDK_X11_DISPLAY (display); + for (i = 0; i < ScreenCount (display_x11->xdisplay); i++) { if (GDK_SCREEN_XROOTWIN (display_x11->screens[i]) == xroot_window) @@ -1627,75 +1582,53 @@ struct XPointerUngrabInfo { }; static void -device_ungrab_callback (GdkDisplay *display, - gpointer data, - gulong serial) +device_grab_update_callback (GdkDisplay *display, + gpointer data, + gulong serial) { GdkDevice *device = data; - _gdk_display_device_grab_update (display, device, serial); + _gdk_display_device_grab_update (display, device, NULL, serial); } - #define XSERVER_TIME_IS_LATER(time1, time2) \ ( (( time1 > time2 ) && ( time1 - time2 < ((guint32)-1)/2 )) || \ (( time1 < time2 ) && ( time2 - time1 > ((guint32)-1)/2 )) \ ) -/** - * gdk_device_ungrab: - * @device: a #GdkDevice - * @time_: a timestap (e.g. %GDK_CURRENT_TIME). - * - * Release any grab on @device. - * - * Since: 3.0 - */ void -gdk_device_ungrab (GdkDevice *device, - guint32 time_) +_gdk_x11_display_update_grab_info (GdkDisplay *display, + GdkDevice *device, + gint status) +{ + if (status == GrabSuccess) + _gdk_x11_roundtrip_async (display, device_grab_update_callback, device); +} + +void +_gdk_x11_display_update_grab_info_ungrab (GdkDisplay *display, + GdkDevice *device, + guint32 time, + gulong serial) { - GdkDisplay *display; - Display *xdisplay; GdkDeviceGrabInfo *grab; - unsigned long serial; - g_return_if_fail (GDK_IS_DEVICE (device)); - - display = gdk_device_get_display (device); - xdisplay = GDK_DISPLAY_XDISPLAY (display); - - serial = NextRequest (xdisplay); - - GDK_DEVICE_GET_CLASS (device)->ungrab (device, time_); - XFlush (xdisplay); + XFlush (GDK_DISPLAY_XDISPLAY (display)); grab = _gdk_display_get_last_device_grab (display, device); if (grab && - (time_ == GDK_CURRENT_TIME || + (time == GDK_CURRENT_TIME || grab->time == GDK_CURRENT_TIME || - !XSERVER_TIME_IS_LATER (grab->time, time_))) + !XSERVER_TIME_IS_LATER (grab->time, time))) { grab->serial_end = serial; - _gdk_x11_roundtrip_async (display, - device_ungrab_callback, - device); + _gdk_x11_roundtrip_async (display, device_grab_update_callback, device); } } -/** - * gdk_display_beep: - * @display: a #GdkDisplay - * - * Emits a short beep on @display - * - * Since: 2.2 - */ -void -gdk_display_beep (GdkDisplay *display) +static void +gdk_x11_display_beep (GdkDisplay *display) { - g_return_if_fail (GDK_IS_DISPLAY (display)); - #ifdef HAVE_XKB XkbBell (GDK_DISPLAY_XDISPLAY (display), None, 0, None); #else @@ -1703,74 +1636,31 @@ gdk_display_beep (GdkDisplay *display) #endif } -/** - * gdk_display_sync: - * @display: a #GdkDisplay - * - * Flushes any requests queued for the windowing system and waits until all - * requests have been handled. This is often used for making sure that the - * display is synchronized with the current state of the program. Calling - * gdk_display_sync() before gdk_error_trap_pop() makes sure that any errors - * generated from earlier requests are handled before the error trap is - * removed. - * - * This is most useful for X11. On windowing systems where requests are - * handled synchronously, this function will do nothing. - * - * Since: 2.2 - */ -void -gdk_display_sync (GdkDisplay *display) +static void +gdk_x11_display_sync (GdkDisplay *display) { - g_return_if_fail (GDK_IS_DISPLAY (display)); - XSync (GDK_DISPLAY_XDISPLAY (display), False); } -/** - * gdk_display_flush: - * @display: a #GdkDisplay - * - * Flushes any requests queued for the windowing system; this happens automatically - * when the main loop blocks waiting for new events, but if your application - * is drawing without returning control to the main loop, you may need - * to call this function explicitely. A common case where this function - * needs to be called is when an application is executing drawing commands - * from a thread other than the thread where the main loop is running. - * - * This is most useful for X11. On windowing systems where requests are - * handled synchronously, this function will do nothing. - * - * Since: 2.4 - */ -void -gdk_display_flush (GdkDisplay *display) +static void +gdk_x11_display_flush (GdkDisplay *display) { - g_return_if_fail (GDK_IS_DISPLAY (display)); - if (!display->closed) XFlush (GDK_DISPLAY_XDISPLAY (display)); } -/** - * gdk_display_get_default_group: - * @display: a #GdkDisplay - * - * Returns the default group leader window for all toplevel windows - * on @display. This window is implicitly created by GDK. - * See gdk_window_set_group(). - * - * Return value: (transfer none): The default group leader window - * for @display - * - * Since: 2.4 - **/ -GdkWindow * -gdk_display_get_default_group (GdkDisplay *display) +static gboolean +gdk_x11_display_has_pending (GdkDisplay *display) +{ + return XPending (GDK_DISPLAY_XDISPLAY (display)); +} + +static GdkWindow * +gdk_x11_display_get_default_group (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return GDK_DISPLAY_X11 (display)->leader_gdk_window; + return GDK_X11_DISPLAY (display)->leader_gdk_window; } /** @@ -1787,11 +1677,11 @@ gdk_display_get_default_group (GdkDisplay *display) void gdk_x11_display_grab (GdkDisplay *display) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; g_return_if_fail (GDK_IS_DISPLAY (display)); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); if (display_x11->grab_count == 0) XGrabServer (display_x11->xdisplay); @@ -1810,11 +1700,11 @@ gdk_x11_display_grab (GdkDisplay *display) void gdk_x11_display_ungrab (GdkDisplay *display) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; g_return_if_fail (GDK_IS_DISPLAY (display)); - display_x11 = GDK_DISPLAY_X11 (display);; + display_x11 = GDK_X11_DISPLAY (display);; g_return_if_fail (display_x11->grab_count > 0); display_x11->grab_count--; @@ -1826,11 +1716,14 @@ gdk_x11_display_ungrab (GdkDisplay *display) } static void -gdk_display_x11_dispose (GObject *object) +gdk_x11_display_dispose (GObject *object) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (object); + GdkDisplay *display = GDK_DISPLAY (object); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (object); gint i; + _gdk_x11_display_manager_remove_display (gdk_display_manager_get (), display); + g_list_foreach (display_x11->input_devices, (GFunc) g_object_run_dispose, NULL); for (i = 0; i < ScreenCount (display_x11->xdisplay); i++) @@ -1843,13 +1736,13 @@ gdk_display_x11_dispose (GObject *object) display_x11->event_source = NULL; } - G_OBJECT_CLASS (_gdk_display_x11_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_x11_display_parent_class)->dispose (object); } static void -gdk_display_x11_finalize (GObject *object) +gdk_x11_display_finalize (GObject *object) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (object); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (object); gint i; /* Keymap */ @@ -1864,7 +1757,7 @@ gdk_display_x11_finalize (GObject *object) g_free (display_x11->motif_target_lists); } - _gdk_x11_cursor_display_finalize (GDK_DISPLAY_OBJECT(display_x11)); + _gdk_x11_cursor_display_finalize (GDK_DISPLAY (display_x11)); /* Atom Hashtable */ g_hash_table_destroy (display_x11->atom_from_virtual); @@ -1916,7 +1809,7 @@ gdk_display_x11_finalize (GObject *object) g_slice_free (GdkErrorTrap, trap); } - G_OBJECT_CLASS (_gdk_display_x11_parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_x11_display_parent_class)->finalize (object); } /** @@ -1932,15 +1825,25 @@ gdk_display_x11_finalize (GObject *object) GdkDisplay * gdk_x11_lookup_xdisplay (Display *xdisplay) { - GSList *tmp_list; + GSList *list, *l; + GdkDisplay *display; - for (tmp_list = _gdk_displays; tmp_list; tmp_list = tmp_list->next) + display = NULL; + + list = gdk_display_manager_list_displays (gdk_display_manager_get ()); + + for (l = list; l; l = l->next) { - if (GDK_DISPLAY_XDISPLAY (tmp_list->data) == xdisplay) - return tmp_list->data; + if (GDK_DISPLAY_XDISPLAY (l->data) == xdisplay) + { + display = l->data; + break; + } } - - return NULL; + + g_slist_free (list); + + return display; } /** @@ -1959,7 +1862,7 @@ _gdk_x11_display_screen_for_xrootwin (GdkDisplay *display, { gint i; - for (i = 0; i < ScreenCount (GDK_DISPLAY_X11 (display)->xdisplay); i++) + for (i = 0; i < ScreenCount (GDK_X11_DISPLAY (display)->xdisplay); i++) { GdkScreen *screen = gdk_display_get_screen (display, i); if (GDK_SCREEN_XROOTWIN (screen) == xrootwin) @@ -1982,21 +1885,18 @@ Display * gdk_x11_display_get_xdisplay (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return GDK_DISPLAY_X11 (display)->xdisplay; + return GDK_X11_DISPLAY (display)->xdisplay; } void -_gdk_windowing_set_default_display (GdkDisplay *display) +_gdk_x11_display_make_default (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); const gchar *startup_id; - - if (!display) - return; g_free (display_x11->startup_notification_id); display_x11->startup_notification_id = NULL; - + startup_id = g_getenv ("DESKTOP_STARTUP_ID"); if (startup_id && *startup_id != '\0') { @@ -2004,9 +1904,9 @@ _gdk_windowing_set_default_display (GdkDisplay *display) g_warning ("DESKTOP_STARTUP_ID contains invalid UTF-8"); else gdk_x11_display_set_startup_notification_id (display, startup_id); - + /* Clear the environment variable so it won't be inherited by - * child processes and confuse things. + * child processes and confuse things. */ g_unsetenv ("DESKTOP_STARTUP_ID"); } @@ -2027,7 +1927,7 @@ broadcast_xmessage (GdkDisplay *display, Atom type_atom_begin; Window xwindow; - if (!G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) + if (!G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) return; { @@ -2162,115 +2062,44 @@ gdk_x11_display_broadcast_startup_message (GdkDisplay *display, va_end (ap); broadcast_xmessage (display, - "_NET_STARTUP_INFO", + "_NET_STARTUP_INFO", "_NET_STARTUP_INFO_BEGIN", message->str); g_string_free (message, TRUE); } -/** - * gdk_notify_startup_complete: - * - * Indicates to the GUI environment that the application has finished - * loading. If the applications opens windows, this function is - * normally called after opening the application's initial set of - * windows. - * - * GTK+ will call this function automatically after opening the first - * #GtkWindow unless gtk_window_set_auto_startup_notification() is called - * to disable that feature. - * - * Since: 2.2 - **/ -void -gdk_notify_startup_complete (void) +static void +gdk_x11_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id) { - GdkDisplay *display; - GdkDisplayX11 *display_x11; - - display = gdk_display_get_default (); - if (!display) - return; - - display_x11 = GDK_DISPLAY_X11 (display); - - if (display_x11->startup_notification_id == NULL) - return; - - gdk_notify_startup_complete_with_id (display_x11->startup_notification_id); -} - -/** - * gdk_notify_startup_complete_with_id: - * @startup_id: a startup-notification identifier, for which notification - * process should be completed - * - * Indicates to the GUI environment that the application has finished - * loading, using a given identifier. - * - * GTK+ will call this function automatically for #GtkWindow with custom - * startup-notification identifier unless - * gtk_window_set_auto_startup_notification() is called to disable - * that feature. - * - * Since: 2.12 - **/ -void -gdk_notify_startup_complete_with_id (const gchar* startup_id) -{ - GdkDisplay *display; - - display = gdk_display_get_default (); - if (!display) - return; + if (startup_id == NULL) + { + startup_id = GDK_X11_DISPLAY (display)->startup_notification_id; + if (startup_id == NULL) + return; + } gdk_x11_display_broadcast_startup_message (display, "remove", - "ID", startup_id, - NULL); + "ID", startup_id, + NULL); } -/** - * gdk_display_supports_selection_notification: - * @display: a #GdkDisplay - * - * Returns whether #GdkEventOwnerChange events will be - * sent when the owner of a selection changes. - * - * Return value: whether #GdkEventOwnerChange events will - * be sent. - * - * Since: 2.6 - **/ -gboolean -gdk_display_supports_selection_notification (GdkDisplay *display) +static gboolean +gdk_x11_display_supports_selection_notification (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); return display_x11->have_xfixes; } -/** - * gdk_display_request_selection_notification: - * @display: a #GdkDisplay - * @selection: the #GdkAtom naming the selection for which - * ownership change notification is requested - * - * Request #GdkEventOwnerChange events for ownership changes - * of the selection named by the given atom. - * - * Return value: whether #GdkEventOwnerChange events will - * be sent. - * - * Since: 2.6 - **/ -gboolean -gdk_display_request_selection_notification (GdkDisplay *display, - GdkAtom selection) +static gboolean +gdk_x11_display_request_selection_notification (GdkDisplay *display, + GdkAtom selection) { #ifdef HAVE_XFIXES - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); Atom atom; if (display_x11->have_xfixes) @@ -2290,54 +2119,24 @@ gdk_display_request_selection_notification (GdkDisplay *display, return FALSE; } -/** - * gdk_display_supports_clipboard_persistence - * @display: a #GdkDisplay - * - * Returns whether the speicifed display supports clipboard - * persistance; i.e. if it's possible to store the clipboard data after an - * application has quit. On X11 this checks if a clipboard daemon is - * running. - * - * Returns: %TRUE if the display supports clipboard persistance. - * - * Since: 2.6 - */ -gboolean -gdk_display_supports_clipboard_persistence (GdkDisplay *display) +static gboolean +gdk_x11_display_supports_clipboard_persistence (GdkDisplay *display) { Atom clipboard_manager; /* It might make sense to cache this */ clipboard_manager = gdk_x11_get_xatom_by_name_for_display (display, "CLIPBOARD_MANAGER"); - return XGetSelectionOwner (GDK_DISPLAY_X11 (display)->xdisplay, clipboard_manager) != None; + return XGetSelectionOwner (GDK_X11_DISPLAY (display)->xdisplay, clipboard_manager) != None; } -/** - * gdk_display_store_clipboard - * @display: a #GdkDisplay - * @clipboard_window: a #GdkWindow belonging to the clipboard owner - * @time_: a timestamp - * @targets: an array of targets that should be saved, or %NULL - * if all available targets should be saved. - * @n_targets: length of the @targets array - * - * Issues a request to the clipboard manager to store the - * clipboard data. On X11, this is a special program that works - * according to the freedesktop clipboard specification, available at - * - * http://www.freedesktop.org/Standards/clipboard-manager-spec. - * - * Since: 2.6 - */ -void -gdk_display_store_clipboard (GdkDisplay *display, - GdkWindow *clipboard_window, - guint32 time_, - const GdkAtom *targets, - gint n_targets) +static void +gdk_x11_display_store_clipboard (GdkDisplay *display, + GdkWindow *clipboard_window, + guint32 time_, + const GdkAtom *targets, + gint n_targets) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); Atom clipboard_manager, save_targets; g_return_if_fail (GDK_WINDOW_IS_X11 (clipboard_window)); @@ -2345,17 +2144,17 @@ gdk_display_store_clipboard (GdkDisplay *display, clipboard_manager = gdk_x11_get_xatom_by_name_for_display (display, "CLIPBOARD_MANAGER"); save_targets = gdk_x11_get_xatom_by_name_for_display (display, "SAVE_TARGETS"); - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); if (XGetSelectionOwner (display_x11->xdisplay, clipboard_manager) != None) { Atom property_name = None; Atom *xatoms; int i; - + if (n_targets > 0) - { - property_name = gdk_x11_atom_to_xatom_for_display (display, _gdk_selection_property); + { + property_name = gdk_x11_get_xatom_by_name_for_display (display, "GDK_SELECTION"); xatoms = g_new (Atom, n_targets); for (i = 0; i < n_targets; i++) @@ -2367,13 +2166,13 @@ gdk_display_store_clipboard (GdkDisplay *display, g_free (xatoms); } - + XConvertSelection (display_x11->xdisplay, - clipboard_manager, save_targets, property_name, - GDK_WINDOW_XID (clipboard_window), time_); - + clipboard_manager, save_targets, property_name, + GDK_WINDOW_XID (clipboard_window), time_); + } - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); } @@ -2393,41 +2192,19 @@ gdk_display_store_clipboard (GdkDisplay *display, guint32 gdk_x11_display_get_user_time (GdkDisplay *display) { - return GDK_DISPLAY_X11 (display)->user_time; + return GDK_X11_DISPLAY (display)->user_time; } -/** - * gdk_display_supports_shapes: - * @display: a #GdkDisplay - * - * Returns %TRUE if gdk_window_shape_combine_mask() can - * be used to create shaped windows on @display. - * - * Returns: %TRUE if shaped windows are supported - * - * Since: 2.10 - */ -gboolean -gdk_display_supports_shapes (GdkDisplay *display) +static gboolean +gdk_x11_display_supports_shapes (GdkDisplay *display) { - return GDK_DISPLAY_X11 (display)->have_shapes; + return GDK_X11_DISPLAY (display)->have_shapes; } -/** - * gdk_display_supports_input_shapes: - * @display: a #GdkDisplay - * - * Returns %TRUE if gdk_window_input_shape_combine_mask() can - * be used to modify the input shape of windows on @display. - * - * Returns: %TRUE if windows with modified input shape are supported - * - * Since: 2.10 - */ -gboolean -gdk_display_supports_input_shapes (GdkDisplay *display) +static gboolean +gdk_x11_display_supports_input_shapes (GdkDisplay *display) { - return GDK_DISPLAY_X11 (display)->have_input_shapes; + return GDK_X11_DISPLAY (display)->have_input_shapes; } @@ -2444,7 +2221,7 @@ gdk_display_supports_input_shapes (GdkDisplay *display) G_CONST_RETURN gchar * gdk_x11_display_get_startup_notification_id (GdkDisplay *display) { - return GDK_DISPLAY_X11 (display)->startup_notification_id; + return GDK_X11_DISPLAY (display)->startup_notification_id; } /** @@ -2473,10 +2250,10 @@ void gdk_x11_display_set_startup_notification_id (GdkDisplay *display, const gchar *startup_id) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; gchar *time_str; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); g_free (display_x11->startup_notification_id); display_x11->startup_notification_id = g_strdup (startup_id); @@ -2510,74 +2287,28 @@ gdk_x11_display_set_startup_notification_id (GdkDisplay *display, (guchar *)startup_id, strlen (startup_id)); } -/** - * gdk_display_supports_composite: - * @display: a #GdkDisplay - * - * Returns %TRUE if gdk_window_set_composited() can be used - * to redirect drawing on the window using compositing. - * - * Currently this only works on X11 with XComposite and - * XDamage extensions available. - * - * Returns: %TRUE if windows may be composited. - * - * Since: 2.12 - */ -gboolean -gdk_display_supports_composite (GdkDisplay *display) +static gboolean +gdk_x11_display_supports_composite (GdkDisplay *display) { - GdkDisplayX11 *x11_display = GDK_DISPLAY_X11 (display); + GdkX11Display *x11_display = GDK_X11_DISPLAY (display); return x11_display->have_xcomposite && x11_display->have_xdamage && x11_display->have_xfixes; } -/** - * gdk_display_list_devices: - * @display: a #GdkDisplay - * - * Returns the list of available input devices attached to @display. - * The list is statically allocated and should not be freed. - * - * Return value: (transfer none) (element-type GdkDevice): - * a list of #GdkDevice - * - * Since: 2.2 - * - * Deprecated: 3.0: Use gdk_device_manager_list_devices() instead. - **/ -GList * -gdk_display_list_devices (GdkDisplay *display) +static GList * +gdk_x11_display_list_devices (GdkDisplay *display) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - return GDK_DISPLAY_X11 (display)->input_devices; + return GDK_X11_DISPLAY (display)->input_devices; } -/** - * gdk_event_send_client_message_for_display: - * @display: the #GdkDisplay for the window where the message is to be sent. - * @event: the #GdkEvent to send, which should be a #GdkEventClient. - * @winid: the window to send the client message to. - * - * On X11, sends an X ClientMessage event to a given window. On - * Windows, sends a message registered with the name - * GDK_WIN32_CLIENT_MESSAGE. - * - * This could be used for communicating between different - * applications, though the amount of data is limited to 20 bytes on - * X11, and to just four bytes on Windows. - * - * Returns: non-zero on success. - * - * Since: 2.2 - */ -gboolean -gdk_event_send_client_message_for_display (GdkDisplay *display, - GdkEvent *event, - GdkNativeWindow winid) +static gboolean +gdk_x11_display_send_client_message (GdkDisplay *display, + GdkEvent *event, + GdkNativeWindow winid) { XEvent sev; @@ -2591,29 +2322,14 @@ gdk_event_send_client_message_for_display (GdkDisplay *display, memcpy(&sev.xclient.data, &event->client.data, sizeof (sev.xclient.data)); sev.xclient.message_type = gdk_x11_atom_to_xatom_for_display (display, event->client.message_type); - return _gdk_send_xevent (display, winid, False, NoEventMask, &sev); + return _gdk_x11_display_send_xevent (display, winid, False, NoEventMask, &sev); } -/** - * gdk_display_add_client_message_filter: - * @display: a #GdkDisplay for which this message filter applies - * @message_type: the type of ClientMessage events to receive. - * This will be checked against the @message_type field - * of the XClientMessage event struct. - * @func: the function to call to process the event. - * @data: user data to pass to @func. - * - * Adds a filter to be called when X ClientMessage events are received. - * See gdk_window_add_filter() if you are interested in filtering other - * types of events. - * - * Since: 2.2 - **/ -void -gdk_display_add_client_message_filter (GdkDisplay *display, - GdkAtom message_type, - GdkFilterFunc func, - gpointer data) +static void +gdk_x11_display_add_client_message_filter (GdkDisplay *display, + GdkAtom message_type, + GdkFilterFunc func, + gpointer data) { GdkClientFilter *filter; g_return_if_fail (GDK_IS_DISPLAY (display)); @@ -2623,60 +2339,11 @@ gdk_display_add_client_message_filter (GdkDisplay *display, filter->function = func; filter->data = data; - GDK_DISPLAY_X11(display)->client_filters = - g_list_append (GDK_DISPLAY_X11 (display)->client_filters, + GDK_X11_DISPLAY(display)->client_filters = + g_list_append (GDK_X11_DISPLAY (display)->client_filters, filter); } -/** - * gdk_add_client_message_filter: - * @message_type: the type of ClientMessage events to receive. This will be - * checked against the message_type field of the - * XClientMessage event struct. - * @func: the function to call to process the event. - * @data: user data to pass to @func. - * - * Adds a filter to the default display to be called when X ClientMessage events - * are received. See gdk_display_add_client_message_filter(). - **/ -void -gdk_add_client_message_filter (GdkAtom message_type, - GdkFilterFunc func, - gpointer data) -{ - gdk_display_add_client_message_filter (gdk_display_get_default (), - message_type, func, data); -} - -/* - *-------------------------------------------------------------- - * gdk_flush - * - * Flushes the Xlib output buffer and then waits - * until all requests have been received and processed - * by the X server. The only real use for this function - * is in dealing with XShm. - * - * Arguments: - * - * Results: - * - * Side effects: - * - *-------------------------------------------------------------- - */ -void -gdk_flush (void) -{ - GSList *tmp_list = _gdk_displays; - - while (tmp_list) - { - XSync (GDK_DISPLAY_XDISPLAY (tmp_list->data), False); - tmp_list = tmp_list->next; - } -} - /** * gdk_x11_register_standard_event_type: * @display: a #GdkDisplay @@ -2704,9 +2371,9 @@ gdk_x11_register_standard_event_type (GdkDisplay *display, gint n_events) { GdkEventTypeX11 *event_type; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); event_type = g_new (GdkEventTypeX11, 1); event_type->base = event_base; @@ -2723,11 +2390,11 @@ void _gdk_x11_display_error_event (GdkDisplay *display, XErrorEvent *error) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GSList *tmp_list; gboolean ignore; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); ignore = FALSE; for (tmp_list = display_x11->error_traps; @@ -2783,7 +2450,7 @@ _gdk_x11_display_error_event (GdkDisplay *display, } static void -delete_outdated_error_traps (GdkDisplayX11 *display_x11) +delete_outdated_error_traps (GdkX11Display *display_x11) { GSList *tmp_list; gulong processed_sequence; @@ -2829,10 +2496,10 @@ delete_outdated_error_traps (GdkDisplayX11 *display_x11) void gdk_x11_display_error_trap_push (GdkDisplay *display) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkErrorTrap *trap; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); delete_outdated_error_traps (display_x11); @@ -2852,12 +2519,12 @@ static gint gdk_x11_display_error_trap_pop_internal (GdkDisplay *display, gboolean need_code) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkErrorTrap *trap; GSList *tmp_list; int result; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); g_return_val_if_fail (display_x11->error_traps != NULL, Success); @@ -2939,7 +2606,7 @@ gdk_x11_display_error_trap_pop_internal (GdkDisplay *display, gint gdk_x11_display_error_trap_pop (GdkDisplay *display) { - g_return_val_if_fail (GDK_IS_DISPLAY_X11 (display), Success); + g_return_val_if_fail (GDK_IS_X11_DISPLAY (display), Success); return gdk_x11_display_error_trap_pop_internal (display, TRUE); } @@ -2961,7 +2628,146 @@ gdk_x11_display_error_trap_pop (GdkDisplay *display) void gdk_x11_display_error_trap_pop_ignored (GdkDisplay *display) { - g_return_if_fail (GDK_IS_DISPLAY_X11 (display)); + g_return_if_fail (GDK_IS_X11_DISPLAY (display)); gdk_x11_display_error_trap_pop_internal (display, FALSE); } + +extern GdkAppLaunchContext *_gdk_x11_display_get_app_launch_context (GdkDisplay *display); +extern GdkNativeWindow _gdk_x11_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version); + + +/** + * gdk_x11_set_sm_client_id: + * @sm_client_id: the client id assigned by the session manager when the + * connection was opened, or %NULL to remove the property. + * + * Sets the SM_CLIENT_ID property on the application's leader window so that + * the window manager can save the application's state using the X11R6 ICCCM + * session management protocol. + * + * See the X Session Management Library documentation for more information on + * session management and the Inter-Client Communication Conventions Manual + * + * Since: 2.24 + */ +void +gdk_x11_set_sm_client_id (const gchar *sm_client_id) +{ + GSList *displays, *l; + + g_free (gdk_sm_client_id); + gdk_sm_client_id = g_strdup (sm_client_id); + + displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); + for (l = displays; l; l = l->next) + set_sm_client_id (l->data, sm_client_id); + + g_slist_free (displays); +} + +static void +gdk_x11_display_event_data_copy (GdkDisplay *display, + const GdkEvent *src, + GdkEvent *dst) +{ +} + +static void +gdk_x11_display_event_data_free (GdkDisplay *display, + GdkEvent *event) +{ +} + +static gint +pop_error_trap (GdkDisplay *display, + gboolean ignored) +{ + if (ignored) + { + gdk_x11_display_error_trap_pop_ignored (display); + return Success; + } + else + { + return gdk_x11_display_error_trap_pop (display); + } +} + +static GdkKeymap * +gdk_x11_display_get_keymap (GdkDisplay *display) +{ + GdkX11Display *display_x11; + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + display_x11 = GDK_X11_DISPLAY (display); + + if (!display_x11->keymap) + display_x11->keymap = g_object_new (GDK_TYPE_X11_KEYMAP, NULL); + + display_x11->keymap->display = display; + + return display_x11->keymap; +} + +static void +gdk_x11_display_class_init (GdkX11DisplayClass * class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GdkDisplayClass *display_class = GDK_DISPLAY_CLASS (class); + + object_class->dispose = gdk_x11_display_dispose; + object_class->finalize = gdk_x11_display_finalize; + + display_class->window_type = GDK_TYPE_X11_WINDOW; + + display_class->get_name = gdk_x11_display_get_name; + display_class->get_n_screens = gdk_x11_display_get_n_screens; + display_class->get_screen = gdk_x11_display_get_screen; + display_class->get_default_screen = gdk_x11_display_get_default_screen; + display_class->beep = gdk_x11_display_beep; + display_class->sync = gdk_x11_display_sync; + display_class->flush = gdk_x11_display_flush; + display_class->has_pending = gdk_x11_display_has_pending; + display_class->queue_events = _gdk_x11_display_queue_events; + display_class->get_default_group = gdk_x11_display_get_default_group; + display_class->supports_selection_notification = gdk_x11_display_supports_selection_notification; + display_class->request_selection_notification = gdk_x11_display_request_selection_notification; + display_class->supports_clipboard_persistence = gdk_x11_display_supports_clipboard_persistence; + display_class->store_clipboard = gdk_x11_display_store_clipboard; + display_class->supports_shapes = gdk_x11_display_supports_shapes; + display_class->supports_input_shapes = gdk_x11_display_supports_input_shapes; + display_class->supports_composite = gdk_x11_display_supports_composite; + display_class->list_devices = gdk_x11_display_list_devices; + display_class->send_client_message = gdk_x11_display_send_client_message; + display_class->add_client_message_filter = gdk_x11_display_add_client_message_filter; + display_class->get_app_launch_context = _gdk_x11_display_get_app_launch_context; + display_class->get_drag_protocol = _gdk_x11_display_get_drag_protocol; + display_class->get_cursor_for_type = _gdk_x11_display_get_cursor_for_type; + display_class->get_cursor_for_name = _gdk_x11_display_get_cursor_for_name; + display_class->get_cursor_for_pixbuf = _gdk_x11_display_get_cursor_for_pixbuf; + display_class->get_default_cursor_size = _gdk_x11_display_get_default_cursor_size; + display_class->get_maximal_cursor_size = _gdk_x11_display_get_maximal_cursor_size; + display_class->supports_cursor_alpha = _gdk_x11_display_supports_cursor_alpha; + display_class->supports_cursor_color = _gdk_x11_display_supports_cursor_color; + + display_class->before_process_all_updates = _gdk_x11_display_before_process_all_updates; + display_class->after_process_all_updates = _gdk_x11_display_after_process_all_updates; + display_class->get_next_serial = gdk_x11_display_get_next_serial; + display_class->notify_startup_complete = gdk_x11_display_notify_startup_complete; + display_class->event_data_copy = gdk_x11_display_event_data_copy; + display_class->event_data_free = gdk_x11_display_event_data_free; + display_class->create_window_impl = _gdk_x11_display_create_window_impl; + display_class->get_keymap = gdk_x11_display_get_keymap; + display_class->push_error_trap = gdk_x11_display_error_trap_push; + display_class->pop_error_trap = pop_error_trap; + display_class->get_selection_owner = _gdk_x11_display_get_selection_owner; + display_class->set_selection_owner = _gdk_x11_display_set_selection_owner; + display_class->send_selection_notify = _gdk_x11_display_send_selection_notify; + display_class->get_selection_property = _gdk_x11_display_get_selection_property; + display_class->convert_selection = _gdk_x11_display_convert_selection; + display_class->text_property_to_utf8_list = _gdk_x11_display_text_property_to_utf8_list; + display_class->utf8_to_string_target = _gdk_x11_display_utf8_to_string_target; +} diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h index 9ac0c3ae02..cd72cfae62 100644 --- a/gdk/x11/gdkdisplay-x11.h +++ b/gdk/x11/gdkdisplay-x11.h @@ -1,7 +1,7 @@ /* * gdkdisplay-x11.h - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -21,30 +21,22 @@ * Boston, MA 02111-1307, USA. */ -#ifndef __GDK_DISPLAY_X11__ -#define __GDK_DISPLAY_X11__ +#ifndef __GDK_X11_DISPLAY__ +#define __GDK_X11_DISPLAY__ + +#include "gdkdisplayprivate.h" +#include "gdkkeys.h" +#include "gdkwindow.h" +#include "gdkinternals.h" +#include "gdkmain.h" -#include -#include -#include -#include -#include #include #include G_BEGIN_DECLS -typedef struct _GdkDisplayX11 GdkDisplayX11; -typedef struct _GdkDisplayX11Class GdkDisplayX11Class; -#define GDK_TYPE_DISPLAY_X11 (_gdk_display_x11_get_type()) -#define GDK_DISPLAY_X11(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY_X11, GdkDisplayX11)) -#define GDK_DISPLAY_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY_X11, GdkDisplayX11Class)) -#define GDK_IS_DISPLAY_X11(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY_X11)) -#define GDK_IS_DISPLAY_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY_X11)) -#define GDK_DISPLAY_X11_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY_X11, GdkDisplayX11Class)) - -struct _GdkDisplayX11 +struct _GdkX11Display { GdkDisplay parent_instance; Display *xdisplay; @@ -56,17 +48,17 @@ struct _GdkDisplayX11 gint grab_count; /* Keyboard related information */ - gint xkb_event_type; gboolean use_xkb; - + /* Whether we were able to turn on detectable-autorepeat using * XkbSetDetectableAutorepeat. If FALSE, we'll fall back - * to checking the next event with XPending(). */ + * to checking the next event with XPending(). + */ gboolean have_xkb_autorepeat; GdkKeymap *keymap; - guint keymap_serial; + guint keymap_serial; gboolean have_xfixes; gint xfixes_event_base; @@ -75,26 +67,26 @@ struct _GdkDisplayX11 gboolean have_xdamage; gint xdamage_event_base; + gboolean have_randr12; gboolean have_randr13; gint xrandr_event_base; - /* If the SECURITY extension is in place, whether this client holds - * a trusted authorization and so is allowed to make various requests - * (grabs, properties etc.) Otherwise always TRUE. */ + /* If the SECURITY extension is in place, whether this client holds + * a trusted authorization and so is allowed to make various requests + * (grabs, properties etc.) Otherwise always TRUE. + */ gboolean trusted_client; /* drag and drop information */ GdkDragContext *current_dest_drag; /* data needed for MOTIF DnD */ - Window motif_drag_window; GdkWindow *motif_drag_gdk_window; GList **motif_target_lists; gint motif_n_target_lists; /* Mapping to/from virtual atoms */ - GHashTable *atom_from_virtual; GHashTable *atom_to_virtual; @@ -102,13 +94,13 @@ struct _GdkDisplayX11 Window leader_window; GdkWindow *leader_gdk_window; gboolean leader_window_title_set; - + /* list of filters for client messages */ GList *client_filters; /* List of functions to go from extension event => X window */ GSList *event_types; - + /* X ID hashtable */ GHashTable *xid_ht; @@ -144,17 +136,16 @@ struct _GdkDisplayX11 GSList *error_traps; }; -struct _GdkDisplayX11Class +struct _GdkX11DisplayClass { GdkDisplayClass parent_class; }; -GType _gdk_display_x11_get_type (void); GdkScreen *_gdk_x11_display_screen_for_xrootwin (GdkDisplay *display, - Window xrootwin); + Window xrootwin); void _gdk_x11_display_error_event (GdkDisplay *display, XErrorEvent *error); G_END_DECLS -#endif /* __GDK_DISPLAY_X11__ */ +#endif /* __GDK_X11_DISPLAY__ */ diff --git a/gdk/x11/gdkdisplaymanager-x11.c b/gdk/x11/gdkdisplaymanager-x11.c new file mode 100644 index 0000000000..fbd49464de --- /dev/null +++ b/gdk/x11/gdkdisplaymanager-x11.c @@ -0,0 +1,139 @@ +/* GDK - The GIMP Drawing Kit + * gdkdisplaymanager-x11.c + * + * Copyright 2010 Red Hat, Inc. + * + * Author: Matthias clasen + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include "gdkx11displaymanager.h" +#include "gdkdisplaymanagerprivate.h" +#include "gdkdisplay-x11.h" +#include "gdkprivate-x11.h" + +#include "gdkinternals.h" + +struct _GdkX11DisplayManager +{ + GdkDisplayManager parent; + + GdkDisplay *default_display; + GSList *displays; +}; + +struct _GdkX11DisplayManagerClass +{ + GdkDisplayManagerClass parent_class; +}; + +G_DEFINE_TYPE (GdkX11DisplayManager, gdk_x11_display_manager, GDK_TYPE_DISPLAY_MANAGER) + +static GdkDisplay * +gdk_x11_display_manager_open_display (GdkDisplayManager *manager, + const gchar *name) +{ + GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager); + GdkDisplay *display; + + display = _gdk_x11_display_open (name); + if (manager_x11->default_display == NULL && display != NULL) + gdk_display_manager_set_default_display (manager, display); + + return display; +} + +static GSList * +gdk_x11_display_manager_list_displays (GdkDisplayManager *manager) +{ + return g_slist_copy (GDK_X11_DISPLAY_MANAGER (manager)->displays); +} + +static GdkDisplay * +gdk_x11_display_manager_get_default_display (GdkDisplayManager *manager) +{ + return GDK_X11_DISPLAY_MANAGER (manager)->default_display; +} + +static void +gdk_x11_display_manager_set_default_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GDK_X11_DISPLAY_MANAGER (manager)->default_display = display; + + _gdk_x11_display_make_default (display); +} + +static void +gdk_x11_display_manager_init (GdkX11DisplayManager *manager) +{ + _gdk_x11_windowing_init (); +} + +static void +gdk_x11_display_manager_finalize (GObject *object) +{ + g_error ("A GdkX11DisplayManager object was finalized. This should not happen"); + G_OBJECT_CLASS (gdk_x11_display_manager_parent_class)->finalize (object); +} + +static void +gdk_x11_display_manager_class_init (GdkX11DisplayManagerClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GdkDisplayManagerClass *manager_class = GDK_DISPLAY_MANAGER_CLASS (class); + + object_class->finalize = gdk_x11_display_manager_finalize; + + manager_class->open_display = gdk_x11_display_manager_open_display; + manager_class->list_displays = gdk_x11_display_manager_list_displays; + manager_class->set_default_display = gdk_x11_display_manager_set_default_display; + manager_class->get_default_display = gdk_x11_display_manager_get_default_display; + manager_class->atom_intern = _gdk_x11_display_manager_atom_intern; + manager_class->get_atom_name = _gdk_x11_display_manager_get_atom_name; + manager_class->lookup_keyval = _gdk_x11_display_manager_lookup_keyval; + manager_class->get_keyval_name = _gdk_x11_display_manager_get_keyval_name; + manager_class->keyval_convert_case = _gdk_x11_display_manager_keyval_convert_case; +} + +void +_gdk_x11_display_manager_add_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager); + + manager_x11->displays = g_slist_prepend (manager_x11->displays, display); +} + +void +_gdk_x11_display_manager_remove_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager); + + manager_x11->displays = g_slist_remove (manager_x11->displays, display); + + if (manager_x11->default_display == display) + { + if (manager_x11->displays) + gdk_display_manager_set_default_display (manager, manager_x11->displays->data); + else + gdk_display_manager_set_default_display (manager, NULL); + } +} diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c index 0c94a6456b..4b8ee69aef 100644 --- a/gdk/x11/gdkdnd-x11.c +++ b/gdk/x11/gdkdnd-x11.c @@ -26,14 +26,14 @@ #include "config.h" -#include "gdkdnd.h" +#include "gdkx11dnd.h" +#include "gdkdndprivate.h" #include "gdkmain.h" -#include "gdkx.h" +#include "gdkinternals.h" #include "gdkasync.h" #include "gdkproperty.h" #include "gdkprivate-x11.h" -#include "gdkinternals.h" #include "gdkscreen-x11.h" #include "gdkdisplay-x11.h" @@ -41,12 +41,12 @@ #include #include #include +#ifdef HAVE_XCOMPOSITE #include +#endif #include -typedef struct _GdkDragContextPrivateX11 GdkDragContextPrivateX11; - typedef enum { GDK_DRAG_STATUS_DRAG, GDK_DRAG_STATUS_MOTION_WAIT, @@ -68,76 +68,79 @@ typedef struct { GHashTable *child_hash; guint old_event_mask; GdkScreen *screen; + gint ref_count; } GdkWindowCache; -/* Structure that holds information about a drag in progress. - * this is used on both source and destination sides. - */ -struct _GdkDragContextPrivateX11 { + +struct _GdkX11DragContext +{ GdkDragContext context; Atom motif_selection; guint ref_count; - guint16 last_x; /* Coordinates from last event */ + guint16 last_x; /* Coordinates from last event */ guint16 last_y; - GdkDragAction old_action; /* The last action we sent to the source */ - GdkDragAction old_actions; /* The last actions we sent to the source */ - GdkDragAction xdnd_actions; /* What is currently set in XdndActionList */ + GdkDragAction old_action; /* The last action we sent to the source */ + GdkDragAction old_actions; /* The last actions we sent to the source */ + GdkDragAction xdnd_actions; /* What is currently set in XdndActionList */ - Window dest_xid; /* The last window we looked up */ - Window drop_xid; /* The (non-proxied) window that is receiving drops */ - guint xdnd_targets_set : 1; /* Whether we've already set XdndTypeList */ - guint xdnd_actions_set : 1; /* Whether we've already set XdndActionList */ - guint xdnd_have_actions : 1; /* Whether an XdndActionList was provided */ - guint motif_targets_set : 1; /* Whether we've already set motif initiator info */ - guint drag_status : 4; /* current status of drag */ - - guint drop_failed : 1; /* Whether the drop was unsuccessful */ - guint version; /* Xdnd protocol version */ + Window dest_xid; /* The last window we looked up */ + Window drop_xid; /* The (non-proxied) window that is receiving drops */ + guint xdnd_targets_set : 1; /* Whether we've already set XdndTypeList */ + guint xdnd_actions_set : 1; /* Whether we've already set XdndActionList */ + guint xdnd_have_actions : 1; /* Whether an XdndActionList was provided */ + guint motif_targets_set : 1; /* Whether we've already set motif initiator info */ + guint drag_status : 4; /* current status of drag */ + + guint drop_failed : 1; /* Whether the drop was unsuccessful */ + guint version; /* Xdnd protocol version */ GSList *window_caches; - GdkDevice *device; }; -#define PRIVATE_DATA(context) ((GdkDragContextPrivateX11 *) GDK_DRAG_CONTEXT (context)->windowing_data) +struct _GdkX11DragContextClass +{ + GdkDragContextClass parent_class; +}; /* Forward declarations */ -static void gdk_window_cache_destroy (GdkWindowCache *cache); +static GdkWindowCache *gdk_window_cache_get (GdkScreen *screen); +static GdkWindowCache *gdk_window_cache_ref (GdkWindowCache *cache); +static void gdk_window_cache_unref (GdkWindowCache *cache); static void motif_read_target_table (GdkDisplay *display); static GdkFilterReturn motif_dnd_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_enter_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_leave_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_position_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_status_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_finished_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static GdkFilterReturn xdnd_drop_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); static void xdnd_manage_source_filter (GdkDragContext *context, - GdkWindow *window, - gboolean add_filter); - -static void gdk_drag_context_finalize (GObject *object); + GdkWindow *window, + gboolean add_filter); static GList *contexts; +static GSList *window_caches; static const struct { const char *atom_name; @@ -150,162 +153,123 @@ static const struct { { "XdndFinished", xdnd_finished_filter }, { "XdndDrop", xdnd_drop_filter }, }; - -G_DEFINE_TYPE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT) + + +G_DEFINE_TYPE (GdkX11DragContext, gdk_x11_drag_context, GDK_TYPE_DRAG_CONTEXT) static void -gdk_drag_context_init (GdkDragContext *dragcontext) +gdk_x11_drag_context_init (GdkX11DragContext *context) { - GdkDragContextPrivateX11 *private; - - private = G_TYPE_INSTANCE_GET_PRIVATE (dragcontext, - GDK_TYPE_DRAG_CONTEXT, - GdkDragContextPrivateX11); - - dragcontext->windowing_data = private; - - contexts = g_list_prepend (contexts, dragcontext); + contexts = g_list_prepend (contexts, context); } +static void gdk_x11_drag_context_finalize (GObject *object); +static GdkWindow * gdk_x11_drag_context_find_window (GdkDragContext *context, + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkDragProtocol *protocol); +static gboolean gdk_x11_drag_context_drag_motion (GdkDragContext *context, + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint x_root, + gint y_root, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time); +static void gdk_x11_drag_context_drag_status (GdkDragContext *context, + GdkDragAction action, + guint32 time_); +static void gdk_x11_drag_context_drag_abort (GdkDragContext *context, + guint32 time_); +static void gdk_x11_drag_context_drag_drop (GdkDragContext *context, + guint32 time_); +static void gdk_x11_drag_context_drop_reply (GdkDragContext *context, + gboolean accept, + guint32 time_); +static void gdk_x11_drag_context_drop_finish (GdkDragContext *context, + gboolean success, + guint32 time_); +static gboolean gdk_x11_drag_context_drop_status (GdkDragContext *context); +static GdkAtom gdk_x11_drag_context_get_selection (GdkDragContext *context); + static void -gdk_drag_context_class_init (GdkDragContextClass *klass) +gdk_x11_drag_context_class_init (GdkX11DragContextClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkDragContextClass *context_class = GDK_DRAG_CONTEXT_CLASS (klass); - object_class->finalize = gdk_drag_context_finalize; + object_class->finalize = gdk_x11_drag_context_finalize; - g_type_class_add_private (object_class, sizeof (GdkDragContextPrivateX11)); + context_class->find_window = gdk_x11_drag_context_find_window; + context_class->drag_status = gdk_x11_drag_context_drag_status; + context_class->drag_motion = gdk_x11_drag_context_drag_motion; + context_class->drag_abort = gdk_x11_drag_context_drag_abort; + context_class->drag_drop = gdk_x11_drag_context_drag_drop; + context_class->drop_reply = gdk_x11_drag_context_drop_reply; + context_class->drop_finish = gdk_x11_drag_context_drop_finish; + context_class->drop_status = gdk_x11_drag_context_drop_status; + context_class->get_selection = gdk_x11_drag_context_get_selection; } static void -gdk_drag_context_finalize (GObject *object) +gdk_x11_drag_context_finalize (GObject *object) { GdkDragContext *context = GDK_DRAG_CONTEXT (object); - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); - GSList *tmp_list; - - g_list_free (context->targets); + GdkX11DragContext *x11_context = GDK_X11_DRAG_CONTEXT (object); if (context->source_window) { - if ((context->protocol == GDK_DRAG_PROTO_XDND) && - !context->is_source) + if ((context->protocol == GDK_DRAG_PROTO_XDND) && !context->is_source) xdnd_manage_source_filter (context, context->source_window, FALSE); - - g_object_unref (context->source_window); } - - if (context->dest_window) - g_object_unref (context->dest_window); - for (tmp_list = private->window_caches; tmp_list; tmp_list = tmp_list->next) - gdk_window_cache_destroy (tmp_list->data); - g_slist_free (private->window_caches); - + g_slist_free_full (x11_context->window_caches, (GDestroyNotify)gdk_window_cache_unref); + x11_context->window_caches = NULL; + contexts = g_list_remove (contexts, context); - G_OBJECT_CLASS (gdk_drag_context_parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_x11_drag_context_parent_class)->finalize (object); } /* Drag Contexts */ -/** - * gdk_drag_context_new: - * - * Creates a new #GdkDragContext. - * - * Return value: the newly created #GdkDragContext. - **/ -GdkDragContext * -gdk_drag_context_new (void) -{ - return g_object_new (GDK_TYPE_DRAG_CONTEXT, NULL); -} - -/** - * gdk_drag_context_set_device: - * @context: a #GdkDragContext - * @device: a #GdkDevice - * - * Associates a #GdkDevice to @context, so all Drag and Drop events - * for @context are emitted as if they came from this device. - **/ -void -gdk_drag_context_set_device (GdkDragContext *context, - GdkDevice *device) -{ - GdkDragContextPrivateX11 *private; - - g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (GDK_IS_DEVICE (device)); - - private = PRIVATE_DATA (context); - - if (private->device) - { - g_object_unref (private->device); - private->device = NULL; - } - - if (device) - private->device = g_object_ref (device); -} - -/** - * gdk_drag_context_get_device: - * @context: a #GdkDragContext - * - * Returns the #GdkDevice associated to the drag context. - * - * Returns: (transfer none): The #GdkDevice associated to @context. - **/ -GdkDevice * -gdk_drag_context_get_device (GdkDragContext *context) -{ - GdkDragContextPrivateX11 *private; - - g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); - - private = PRIVATE_DATA (context); - - return private->device; -} - static GdkDragContext * gdk_drag_context_find (GdkDisplay *display, - gboolean is_source, - Window source_xid, - Window dest_xid) + gboolean is_source, + Window source_xid, + Window dest_xid) { GList *tmp_list = contexts; GdkDragContext *context; - GdkDragContextPrivateX11 *private; + GdkX11DragContext *context_x11; Window context_dest_xid; while (tmp_list) { context = (GdkDragContext *)tmp_list->data; - private = PRIVATE_DATA (context); + context_x11 = (GdkX11DragContext *)context; if ((context->source_window && gdk_window_get_display (context->source_window) != display) || - (context->dest_window && gdk_window_get_display (context->dest_window) != display)) - continue; + (context->dest_window && gdk_window_get_display (context->dest_window) != display)) + continue; - context_dest_xid = context->dest_window ? - (private->drop_xid ? - private->drop_xid : - GDK_WINDOW_XID (context->dest_window)) : - None; + context_dest_xid = context->dest_window + ? (context_x11->drop_xid + ? context_x11->drop_xid + : GDK_WINDOW_XID (context->dest_window)) + : None; if ((!context->is_source == !is_source) && - ((source_xid == None) || (context->source_window && - (GDK_WINDOW_XID (context->source_window) == source_xid))) && - ((dest_xid == None) || (context_dest_xid == dest_xid))) - return context; - + ((source_xid == None) || (context->source_window && + (GDK_WINDOW_XID (context->source_window) == source_xid))) && + ((dest_xid == None) || (context_dest_xid == dest_xid))) + return context; + tmp_list = tmp_list->next; } - + return NULL; } @@ -319,14 +283,14 @@ precache_target_list (GdkDragContext *context) int i; for (tmp_list = context->targets; tmp_list; tmp_list = tmp_list->next) - g_ptr_array_add (targets, gdk_atom_name (GDK_POINTER_TO_ATOM (tmp_list->data))); + g_ptr_array_add (targets, gdk_atom_name (GDK_POINTER_TO_ATOM (tmp_list->data))); _gdk_x11_precache_atoms (GDK_WINDOW_DISPLAY (context->source_window), - (const gchar **)targets->pdata, - targets->len); + (const gchar **)targets->pdata, + targets->len); for (i =0; i < targets->len; i++) - g_free (targets->pdata[i]); + g_free (targets->pdata[i]); g_ptr_array_free (targets, TRUE); } @@ -343,7 +307,7 @@ free_cache_child (GdkCacheChild *child, if (child->shape_selected && display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); XShapeSelectInput (display_x11->xdisplay, child->xid, 0); } @@ -353,9 +317,12 @@ free_cache_child (GdkCacheChild *child, static void gdk_window_cache_add (GdkWindowCache *cache, - guint32 xid, - gint x, gint y, gint width, gint height, - gboolean mapped) + guint32 xid, + gint x, + gint y, + gint width, + gint height, + gboolean mapped) { GdkCacheChild *child = g_new (GdkCacheChild, 1); @@ -370,8 +337,8 @@ gdk_window_cache_add (GdkWindowCache *cache, child->shape = NULL; cache->children = g_list_prepend (cache->children, child); - g_hash_table_insert (cache->child_hash, GUINT_TO_POINTER (xid), - cache->children); + g_hash_table_insert (cache->child_hash, GUINT_TO_POINTER (xid), + cache->children); } static GdkFilterReturn @@ -382,7 +349,7 @@ gdk_window_cache_shape_filter (GdkXEvent *xev, XEvent *xevent = (XEvent *)xev; GdkWindowCache *cache = data; - GdkDisplayX11 *display = GDK_DISPLAY_X11 (gdk_screen_get_display (cache->screen)); + GdkX11Display *display = GDK_X11_DISPLAY (gdk_screen_get_display (cache->screen)); if (display->have_shapes && xevent->type == display->shape_event_base + ShapeNotify) @@ -411,8 +378,8 @@ gdk_window_cache_shape_filter (GdkXEvent *xev, static GdkFilterReturn gdk_window_cache_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xevent = (XEvent *)xev; GdkWindowCache *cache = data; @@ -423,107 +390,106 @@ gdk_window_cache_filter (GdkXEvent *xev, break; case ConfigureNotify: { - XConfigureEvent *xce = &xevent->xconfigure; - GList *node; + XConfigureEvent *xce = &xevent->xconfigure; + GList *node; - node = g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xce->window)); - if (node) - { - GdkCacheChild *child = node->data; - child->x = xce->x; - child->y = xce->y; - child->width = xce->width; - child->height = xce->height; - if (xce->above == None && (node->next)) - { - GList *last = g_list_last (cache->children); - cache->children = g_list_remove_link (cache->children, node); - last->next = node; - node->next = NULL; - node->prev = last; - } - else - { - GList *above_node = g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xce->above)); - if (above_node && node->next != above_node) - { - /* Put the window above (before in the list) above_node - */ - cache->children = g_list_remove_link (cache->children, node); - node->prev = above_node->prev; - if (node->prev) - node->prev->next = node; - else - cache->children = node; - node->next = above_node; - above_node->prev = node; - } - } - } - break; + node = g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xce->window)); + if (node) + { + GdkCacheChild *child = node->data; + child->x = xce->x; + child->y = xce->y; + child->width = xce->width; + child->height = xce->height; + if (xce->above == None && (node->next)) + { + GList *last = g_list_last (cache->children); + cache->children = g_list_remove_link (cache->children, node); + last->next = node; + node->next = NULL; + node->prev = last; + } + else + { + GList *above_node = g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xce->above)); + if (above_node && node->next != above_node) + { + /* Put the window above (before in the list) above_node */ + cache->children = g_list_remove_link (cache->children, node); + node->prev = above_node->prev; + if (node->prev) + node->prev->next = node; + else + cache->children = node; + node->next = above_node; + above_node->prev = node; + } + } + } + break; } case CreateNotify: { - XCreateWindowEvent *xcwe = &xevent->xcreatewindow; + XCreateWindowEvent *xcwe = &xevent->xcreatewindow; - if (!g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xcwe->window))) - gdk_window_cache_add (cache, xcwe->window, - xcwe->x, xcwe->y, xcwe->width, xcwe->height, - FALSE); - break; + if (!g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xcwe->window))) + gdk_window_cache_add (cache, xcwe->window, + xcwe->x, xcwe->y, xcwe->width, xcwe->height, + FALSE); + break; } case DestroyNotify: { - XDestroyWindowEvent *xdwe = &xevent->xdestroywindow; - GList *node; + XDestroyWindowEvent *xdwe = &xevent->xdestroywindow; + GList *node; - node = g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xdwe->window)); - if (node) - { - GdkCacheChild *child = node->data; + node = g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xdwe->window)); + if (node) + { + GdkCacheChild *child = node->data; - g_hash_table_remove (cache->child_hash, - GUINT_TO_POINTER (xdwe->window)); - cache->children = g_list_remove_link (cache->children, node); - /* window is destroyed, no need to disable ShapeNotify */ - free_cache_child (child, NULL); - g_list_free_1 (node); - } - break; + g_hash_table_remove (cache->child_hash, + GUINT_TO_POINTER (xdwe->window)); + cache->children = g_list_remove_link (cache->children, node); + /* window is destroyed, no need to disable ShapeNotify */ + free_cache_child (child, NULL); + g_list_free_1 (node); + } + break; } case MapNotify: { - XMapEvent *xme = &xevent->xmap; - GList *node; + XMapEvent *xme = &xevent->xmap; + GList *node; - node = g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xme->window)); - if (node) - { - GdkCacheChild *child = node->data; - child->mapped = TRUE; - } - break; + node = g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xme->window)); + if (node) + { + GdkCacheChild *child = node->data; + child->mapped = TRUE; + } + break; } case ReparentNotify: break; case UnmapNotify: { - XMapEvent *xume = &xevent->xmap; - GList *node; + XMapEvent *xume = &xevent->xmap; + GList *node; - node = g_hash_table_lookup (cache->child_hash, - GUINT_TO_POINTER (xume->window)); - if (node) - { - GdkCacheChild *child = node->data; - child->mapped = FALSE; - } - break; + node = g_hash_table_lookup (cache->child_hash, + GUINT_TO_POINTER (xume->window)); + if (node) + { + GdkCacheChild *child = node->data; + child->mapped = FALSE; + } + break; } default: return GDK_FILTER_CONTINUE; @@ -539,51 +505,55 @@ gdk_window_cache_new (GdkScreen *screen) GdkWindow *root_window = gdk_screen_get_root_window (screen); GdkChildInfoX11 *children; guint nchildren, i; +#ifdef HAVE_XCOMPOSITE Window cow; - +#endif + GdkWindowCache *result = g_new (GdkWindowCache, 1); result->children = NULL; result->child_hash = g_hash_table_new (g_direct_hash, NULL); result->screen = screen; + result->ref_count = 1; XGetWindowAttributes (xdisplay, GDK_WINDOW_XID (root_window), &xwa); result->old_event_mask = xwa.your_event_mask; - if (G_UNLIKELY (!GDK_DISPLAY_X11 (GDK_SCREEN_X11 (screen)->display)->trusted_client)) + if (G_UNLIKELY (!GDK_X11_DISPLAY (GDK_X11_SCREEN (screen)->display)->trusted_client)) { GList *toplevel_windows, *list; GdkWindow *window; gint x, y, width, height; - + toplevel_windows = gdk_screen_get_toplevel_windows (screen); - for (list = toplevel_windows; list; list = list->next) { - window = GDK_WINDOW (list->data); - gdk_window_get_geometry (window, &x, &y, &width, &height, NULL); - gdk_window_cache_add (result, GDK_WINDOW_XID (window), - x, y, width, height, - gdk_window_is_visible (window)); - } + for (list = toplevel_windows; list; list = list->next) + { + window = GDK_WINDOW (list->data); + gdk_window_get_geometry (window, &x, &y, &width, &height); + gdk_window_cache_add (result, GDK_WINDOW_XID (window), + x, y, width, height, + gdk_window_is_visible (window)); + } g_list_free (toplevel_windows); return result; } XSelectInput (xdisplay, GDK_WINDOW_XID (root_window), - result->old_event_mask | SubstructureNotifyMask); + result->old_event_mask | SubstructureNotifyMask); gdk_window_add_filter (root_window, gdk_window_cache_filter, result); gdk_window_add_filter (NULL, gdk_window_cache_shape_filter, result); if (!_gdk_x11_get_window_child_info (gdk_screen_get_display (screen), - GDK_WINDOW_XID (root_window), - FALSE, NULL, - &children, &nchildren)) + GDK_WINDOW_XID (root_window), + FALSE, NULL, + &children, &nchildren)) return result; for (i = 0; i < nchildren ; i++) { gdk_window_cache_add (result, children[i].window, - children[i].x, children[i].y, children[i].width, children[i].height, - children[i].is_mapped); + children[i].x, children[i].y, children[i].width, children[i].height, + children[i].is_mapped); } g_free (children); @@ -611,19 +581,19 @@ static void gdk_window_cache_destroy (GdkWindowCache *cache) { GdkWindow *root_window = gdk_screen_get_root_window (cache->screen); + GdkDisplay *display; XSelectInput (GDK_WINDOW_XDISPLAY (root_window), - GDK_WINDOW_XID (root_window), - cache->old_event_mask); + GDK_WINDOW_XID (root_window), + cache->old_event_mask); gdk_window_remove_filter (root_window, gdk_window_cache_filter, cache); gdk_window_remove_filter (NULL, gdk_window_cache_shape_filter, cache); - gdk_error_trap_push (); + display = gdk_screen_get_display (cache->screen); - g_list_foreach (cache->children, (GFunc)free_cache_child, - gdk_screen_get_display (cache->screen)); - - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_push (display); + g_list_foreach (cache->children, (GFunc)free_cache_child, display); + gdk_x11_display_error_trap_pop_ignored (display); g_list_free (cache->children); g_hash_table_destroy (cache->child_hash); @@ -631,6 +601,48 @@ gdk_window_cache_destroy (GdkWindowCache *cache) g_free (cache); } +static GdkWindowCache * +gdk_window_cache_ref (GdkWindowCache *cache) +{ + cache->ref_count += 1; + + return cache; +} + +static void +gdk_window_cache_unref (GdkWindowCache *cache) +{ + g_assert (cache->ref_count > 0); + + cache->ref_count -= 1; + + if (cache->ref_count == 0) + { + window_caches = g_slist_remove (window_caches, cache); + gdk_window_cache_destroy (cache); + } +} + +GdkWindowCache * +gdk_window_cache_get (GdkScreen *screen) +{ + GSList *list; + GdkWindowCache *cache; + + for (list = window_caches; list; list = list->next) + { + cache = list->data; + if (cache->screen == screen) + return gdk_window_cache_ref (cache); + } + + cache = gdk_window_cache_new (screen); + + window_caches = g_slist_prepend (window_caches, cache); + + return cache; +} + static gboolean is_pointer_within_shape (GdkDisplay *display, GdkCacheChild *child, @@ -639,21 +651,21 @@ is_pointer_within_shape (GdkDisplay *display, { if (!child->shape_selected) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); XShapeSelectInput (display_x11->xdisplay, child->xid, ShapeNotifyMask); child->shape_selected = TRUE; } if (!child->shape_valid) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); cairo_region_t *input_shape; - child->shape = _xwindow_get_shape (display_x11->xdisplay, - child->xid, ShapeBounding); + child->shape = _gdk_x11_xwindow_get_shape (display_x11->xdisplay, + child->xid, ShapeBounding); #ifdef ShapeInput - input_shape = _xwindow_get_shape (display_x11->xdisplay, - child->xid, ShapeInput); + input_shape = _gdk_x11_xwindow_get_shape (display_x11->xdisplay, + child->xid, ShapeInput); if (child->shape && input_shape) { cairo_region_intersect (child->shape, input_shape); @@ -674,10 +686,10 @@ is_pointer_within_shape (GdkDisplay *display, static Window get_client_window_at_coords_recurse (GdkDisplay *display, - Window win, - gboolean is_toplevel, - gint x, - gint y) + Window win, + gboolean is_toplevel, + gint x, + gint y) { GdkChildInfoX11 *children; unsigned int nchildren; @@ -687,8 +699,8 @@ get_client_window_at_coords_recurse (GdkDisplay *display, gboolean has_wm_state = FALSE; if (!_gdk_x11_get_window_child_info (display, win, TRUE, - is_toplevel? &has_wm_state : NULL, - &children, &nchildren)) + is_toplevel? &has_wm_state : NULL, + &children, &nchildren)) return None; if (has_wm_state) @@ -701,42 +713,45 @@ get_client_window_at_coords_recurse (GdkDisplay *display, for (i = nchildren - 1; (i >= 0) && !found_child; i--) { GdkChildInfoX11 *cur_child = &children[i]; - + if ((cur_child->is_mapped) && (cur_child->window_class == InputOutput) && - (x >= cur_child->x) && (x < cur_child->x + cur_child->width) && - (y >= cur_child->y) && (y < cur_child->y + cur_child->height)) - { - x -= cur_child->x; - y -= cur_child->y; - child = *cur_child; - found_child = TRUE; - } + (x >= cur_child->x) && (x < cur_child->x + cur_child->width) && + (y >= cur_child->y) && (y < cur_child->y + cur_child->height)) + { + x -= cur_child->x; + y -= cur_child->y; + child = *cur_child; + found_child = TRUE; + } } - + g_free (children); - + if (found_child) { if (child.has_wm_state) - return child.window; + return child.window; else - return get_client_window_at_coords_recurse (display, child.window, FALSE, x, y); + return get_client_window_at_coords_recurse (display, child.window, FALSE, x, y); } else return None; } -static Window +static Window get_client_window_at_coords (GdkWindowCache *cache, - Window ignore, - gint x_root, - gint y_root) + Window ignore, + gint x_root, + gint y_root) { GList *tmp_list; Window retval = None; + GdkDisplay *display; + + display = gdk_screen_get_display (cache->screen); + + gdk_x11_display_error_trap_push (display); - gdk_error_trap_push (); - tmp_list = cache->children; while (tmp_list && !retval) @@ -748,8 +763,6 @@ get_client_window_at_coords (GdkWindowCache *cache, if ((x_root >= child->x) && (x_root < child->x + child->width) && (y_root >= child->y) && (y_root < child->y + child->height)) { - GdkDisplay *display = gdk_screen_get_display (cache->screen); - if (!is_pointer_within_shape (display, child, x_root - child->x, y_root - child->y)) @@ -769,8 +782,8 @@ get_client_window_at_coords (GdkWindowCache *cache, tmp_list = tmp_list->next; } - gdk_error_trap_pop_ignored (); - + gdk_x11_display_error_trap_pop_ignored (display); + if (retval) return retval; else @@ -855,7 +868,8 @@ init_byte_order (void) } static guint16 -card16_to_host (guint16 x, gchar byte_order) { +card16_to_host (guint16 x, gchar byte_order) +{ if (byte_order == local_byte_order) return x; else @@ -863,7 +877,8 @@ card16_to_host (guint16 x, gchar byte_order) { } static guint32 -card32_to_host (guint32 x, gchar byte_order) { +card32_to_host (guint32 x, gchar byte_order) +{ if (byte_order == local_byte_order) return x; else @@ -873,7 +888,7 @@ card32_to_host (guint32 x, gchar byte_order) { /* Motif packs together fields of varying length into the * client message. We can't rely on accessing these * through data.s[], data.l[], etc, because on some architectures - * (i.e., Alpha) these won't be valid for format == 8. + * (i.e., Alpha) these won't be valid for format == 8. */ #define MOTIF_XCLIENT_BYTE(xevent,i) \ @@ -892,7 +907,8 @@ card32_to_host (guint32 x, gchar byte_order) { /***** Dest side ***********/ /* Property placed on source windows */ -typedef struct _MotifDragInitiatorInfo { +typedef struct _MotifDragInitiatorInfo +{ guint8 byte_order; guint8 protocol_version; guint16 targets_index; @@ -900,7 +916,8 @@ typedef struct _MotifDragInitiatorInfo { } MotifDragInitiatorInfo; /* Header for target table on the drag window */ -typedef struct _MotifTargetTableHeader { +typedef struct _MotifTargetTableHeader +{ guchar byte_order; guchar protocol_version; guint16 n_lists; @@ -908,7 +925,8 @@ typedef struct _MotifTargetTableHeader { } MotifTargetTableHeader; /* Property placed on target windows */ -typedef struct _MotifDragReceiverInfo { +typedef struct _MotifDragReceiverInfo +{ guint8 byte_order; guint8 protocol_version; guint8 protocol_style; @@ -923,12 +941,12 @@ typedef struct _MotifDragReceiverInfo { static GdkFilterReturn motif_drag_window_filter (GdkXEvent *xevent, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xev = (XEvent *)xevent; - GdkDisplay *display = GDK_WINDOW_DISPLAY (event->any.window); - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkDisplay *display = GDK_WINDOW_DISPLAY (event->any.window); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); switch (xev->xany.type) { @@ -938,8 +956,8 @@ motif_drag_window_filter (GdkXEvent *xevent, break; case PropertyNotify: if (display_x11->motif_target_lists && - (xev->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"))) - motif_read_target_table (display); + (xev->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"))) + motif_read_target_table (display); break; } return GDK_FILTER_REMOVE; @@ -947,7 +965,7 @@ motif_drag_window_filter (GdkXEvent *xevent, static Window motif_lookup_drag_window (GdkDisplay *display, - Display *lookup_xdisplay) + Display *lookup_xdisplay) { Window retval = None; gulong bytes_after, nitems; @@ -956,16 +974,16 @@ motif_lookup_drag_window (GdkDisplay *display, guchar *data; XGetWindowProperty (lookup_xdisplay, RootWindow (lookup_xdisplay, 0), - gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_WINDOW"), - 0, 1, FALSE, - XA_WINDOW, &type, &format, &nitems, &bytes_after, - &data); - + gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_WINDOW"), + 0, 1, FALSE, + XA_WINDOW, &type, &format, &nitems, &bytes_after, + &data); + if ((format == 32) && (nitems == 1) && (bytes_after == 0)) { retval = *(Window *)data; - GDK_NOTE (DND, - g_message ("Found drag window %#lx\n", GDK_DISPLAY_X11 (display)->motif_drag_window)); + GDK_NOTE (DND, + g_message ("Found drag window %#lx\n", GDK_X11_DISPLAY (display)->motif_drag_window)); } if (type != None) @@ -977,88 +995,86 @@ motif_lookup_drag_window (GdkDisplay *display, /* Finds the window where global Motif drag information is stored. * If it doesn't exist and 'create' is TRUE, create one. */ -static Window +static Window motif_find_drag_window (GdkDisplay *display, - gboolean create) + gboolean create) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + if (!display_x11->motif_drag_window) { Atom motif_drag_window_atom = gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_WINDOW"); display_x11->motif_drag_window = motif_lookup_drag_window (display, display_x11->xdisplay); - + if (!display_x11->motif_drag_window && create) - { - /* Create a persistant window. (Copied from LessTif) */ - - Display *persistant_xdisplay; - XSetWindowAttributes attr; - persistant_xdisplay = XOpenDisplay (gdk_display_get_name (display)); - XSetCloseDownMode (persistant_xdisplay, RetainPermanent); + { + /* Create a persistant window. (Copied from LessTif) */ + Display *persistant_xdisplay; + XSetWindowAttributes attr; + persistant_xdisplay = XOpenDisplay (gdk_display_get_name (display)); + XSetCloseDownMode (persistant_xdisplay, RetainPermanent); - XGrabServer (persistant_xdisplay); - - display_x11->motif_drag_window = motif_lookup_drag_window (display, persistant_xdisplay); + XGrabServer (persistant_xdisplay); - if (!display_x11->motif_drag_window) - { - attr.override_redirect = True; - attr.event_mask = PropertyChangeMask; - - display_x11->motif_drag_window = - XCreateWindow (persistant_xdisplay, - RootWindow (persistant_xdisplay, 0), - -100, -100, 10, 10, 0, 0, - InputOnly, (Visual *)CopyFromParent, - (CWOverrideRedirect | CWEventMask), &attr); - - GDK_NOTE (DND, - g_message ("Created drag window %#lx\n", display_x11->motif_drag_window)); - - XChangeProperty (persistant_xdisplay, - RootWindow (persistant_xdisplay, 0), - motif_drag_window_atom, XA_WINDOW, - 32, PropModeReplace, - (guchar *)&motif_drag_window_atom, 1); + display_x11->motif_drag_window = motif_lookup_drag_window (display, persistant_xdisplay); - } - XUngrabServer (persistant_xdisplay); - XCloseDisplay (persistant_xdisplay); - } + if (!display_x11->motif_drag_window) + { + attr.override_redirect = True; + attr.event_mask = PropertyChangeMask; + + display_x11->motif_drag_window = + XCreateWindow (persistant_xdisplay, + RootWindow (persistant_xdisplay, 0), + -100, -100, 10, 10, 0, 0, + InputOnly, (Visual *)CopyFromParent, + (CWOverrideRedirect | CWEventMask), &attr); + + GDK_NOTE (DND, + g_message ("Created drag window %#lx\n", display_x11->motif_drag_window)); + + XChangeProperty (persistant_xdisplay, + RootWindow (persistant_xdisplay, 0), + motif_drag_window_atom, XA_WINDOW, + 32, PropModeReplace, + (guchar *)&motif_drag_window_atom, 1); + } + XUngrabServer (persistant_xdisplay); + XCloseDisplay (persistant_xdisplay); + } /* There is a miniscule race condition here if the drag window * gets destroyed exactly now. */ if (display_x11->motif_drag_window) - { - display_x11->motif_drag_gdk_window = - gdk_window_foreign_new_for_display (display, display_x11->motif_drag_window); - gdk_window_add_filter (display_x11->motif_drag_gdk_window, - motif_drag_window_filter, - NULL); - } + { + display_x11->motif_drag_gdk_window = + gdk_x11_window_foreign_new_for_display (display, display_x11->motif_drag_window); + gdk_window_add_filter (display_x11->motif_drag_gdk_window, + motif_drag_window_filter, + NULL); + } } return display_x11->motif_drag_window; } -static void +static void motif_read_target_table (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); gulong bytes_after, nitems; Atom type; gint format; gint i, j; - + Atom motif_drag_targets_atom = gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"); if (display_x11->motif_target_lists) { for (i=0; imotif_n_target_lists; i++) - g_list_free (display_x11->motif_target_lists[i]); - + g_list_free (display_x11->motif_target_lists[i]); + g_free (display_x11->motif_target_lists); display_x11->motif_target_lists = NULL; display_x11->motif_n_target_lists = 0; @@ -1072,89 +1088,91 @@ motif_read_target_table (GdkDisplay *display) guchar *p; gboolean success = FALSE; - gdk_error_trap_push (); - XGetWindowProperty (display_x11->xdisplay, - display_x11->motif_drag_window, - motif_drag_targets_atom, - 0, (sizeof(MotifTargetTableHeader)+3)/4, FALSE, - motif_drag_targets_atom, - &type, &format, &nitems, &bytes_after, - &data); + gdk_x11_display_error_trap_push (display); + XGetWindowProperty (display_x11->xdisplay, + display_x11->motif_drag_window, + motif_drag_targets_atom, + 0, (sizeof(MotifTargetTableHeader)+3)/4, FALSE, + motif_drag_targets_atom, + &type, &format, &nitems, &bytes_after, + &data); - if (gdk_error_trap_pop () || (format != 8) || (nitems < sizeof (MotifTargetTableHeader))) - goto error; + if (gdk_x11_display_error_trap_pop (display) || + (format != 8) || (nitems < sizeof (MotifTargetTableHeader))) + goto error; header = (MotifTargetTableHeader *)data; header->n_lists = card16_to_host (header->n_lists, header->byte_order); header->total_size = card32_to_host (header->total_size, header->byte_order); - gdk_error_trap_push (); - XGetWindowProperty (display_x11->xdisplay, - display_x11->motif_drag_window, - motif_drag_targets_atom, - (sizeof(MotifTargetTableHeader)+3)/4, - (header->total_size + 3)/4 - (sizeof(MotifTargetTableHeader) + 3)/4, - FALSE, - motif_drag_targets_atom, &type, &format, &nitems, - &bytes_after, &target_bytes); - - if (gdk_error_trap_pop () || (format != 8) || (bytes_after != 0) || - (nitems != header->total_size - sizeof(MotifTargetTableHeader))) - goto error; + gdk_x11_display_error_trap_push (display); + XGetWindowProperty (display_x11->xdisplay, + display_x11->motif_drag_window, + motif_drag_targets_atom, + (sizeof(MotifTargetTableHeader)+3)/4, + (header->total_size + 3)/4 - (sizeof(MotifTargetTableHeader) + 3)/4, + FALSE, + motif_drag_targets_atom, &type, &format, &nitems, + &bytes_after, &target_bytes); + + if (gdk_x11_display_error_trap_pop (display) || + (format != 8) || (bytes_after != 0) || + (nitems != header->total_size - sizeof(MotifTargetTableHeader))) + goto error; display_x11->motif_n_target_lists = header->n_lists; display_x11->motif_target_lists = g_new0 (GList *, display_x11->motif_n_target_lists); p = target_bytes; for (i=0; in_lists; i++) - { - gint n_targets; - guint32 *targets; - - if (p + sizeof(guint16) - target_bytes > nitems) - goto error; + { + gint n_targets; + guint32 *targets; - n_targets = card16_to_host (*(gushort *)p, header->byte_order); + if (p + sizeof(guint16) - target_bytes > nitems) + goto error; - /* We need to make a copy of the targets, since it may - * be unaligned - */ - targets = g_new (guint32, n_targets); - memcpy (targets, p + sizeof(guint16), sizeof(guint32) * n_targets); + n_targets = card16_to_host (*(gushort *)p, header->byte_order); - p += sizeof(guint16) + n_targets * sizeof(guint32); - if (p - target_bytes > nitems) - goto error; + /* We need to make a copy of the targets, since it may + * be unaligned + */ + targets = g_new (guint32, n_targets); + memcpy (targets, p + sizeof(guint16), sizeof(guint32) * n_targets); - for (j=0; jmotif_target_lists[i] = - g_list_prepend (display_x11->motif_target_lists[i], - GUINT_TO_POINTER (card32_to_host (targets[j], - header->byte_order))); - g_free (targets); - display_x11->motif_target_lists[i] = g_list_reverse (display_x11->motif_target_lists[i]); - } + p += sizeof(guint16) + n_targets * sizeof(guint32); + if (p - target_bytes > nitems) + goto error; + + for (j=0; jmotif_target_lists[i] = + g_list_prepend (display_x11->motif_target_lists[i], + GUINT_TO_POINTER (card32_to_host (targets[j], + header->byte_order))); + g_free (targets); + display_x11->motif_target_lists[i] = g_list_reverse (display_x11->motif_target_lists[i]); + } success = TRUE; - + error: if (header) - XFree (header); - + XFree (header); + if (target_bytes) - XFree (target_bytes); + XFree (target_bytes); if (!success) - { - if (display_x11->motif_target_lists) - { - g_free (display_x11->motif_target_lists); - display_x11->motif_target_lists = NULL; - display_x11->motif_n_target_lists = 0; - } - g_warning ("Error reading Motif target table\n"); - } + { + if (display_x11->motif_target_lists) + { + g_free (display_x11->motif_target_lists); + display_x11->motif_target_lists = NULL; + display_x11->motif_n_target_lists = 0; + } + g_warning ("Error reading Motif target table\n"); + } } } @@ -1168,9 +1186,9 @@ targets_sort_func (gconstpointer a, gconstpointer b) /* Check if given (sorted) list is in the targets table */ static gint motif_target_table_check (GdkDisplay *display, - GList *sorted) + GList *sorted) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); GList *tmp_list1, *tmp_list2; gint i; @@ -1178,17 +1196,17 @@ motif_target_table_check (GdkDisplay *display, { tmp_list1 = display_x11->motif_target_lists[i]; tmp_list2 = sorted; - - while (tmp_list1 && tmp_list2) - { - if (tmp_list1->data != tmp_list2->data) - break; - tmp_list1 = tmp_list1->next; - tmp_list2 = tmp_list2->next; - } - if (!tmp_list1 && !tmp_list2) /* Found it */ - return i; + while (tmp_list1 && tmp_list2) + { + if (tmp_list1->data != tmp_list2->data) + break; + + tmp_list1 = tmp_list1->next; + tmp_list2 = tmp_list2->next; + } + if (!tmp_list1 && !tmp_list2) /* Found it */ + return i; } return -1; @@ -1196,16 +1214,15 @@ motif_target_table_check (GdkDisplay *display, static gint motif_add_to_target_table (GdkDisplay *display, - GList *targets) /* targets is list of GdkAtom */ + GList *targets) /* targets is list of GdkAtom */ { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); GList *sorted = NULL; gint index = -1; gint i; GList *tmp_list; - + /* make a sorted copy of the list */ - while (targets) { Atom xatom = gdk_x11_atom_to_xatom_for_display (display, GDK_POINTER_TO_ATOM (targets->data)); @@ -1226,87 +1243,86 @@ motif_add_to_target_table (GdkDisplay *display, { /* We need to make sure that it exists _before_ we grab the * server, since we can't open a new connection after we - * grab the server. + * grab the server. */ motif_find_drag_window (display, TRUE); gdk_x11_display_grab (display); motif_read_target_table (display); - + /* Check again, in case it was added in the meantime */ - if (display_x11->motif_target_lists) - index = motif_target_table_check (display, sorted); + index = motif_target_table_check (display, sorted); if (index < 0) - { - guint32 total_size = 0; - guchar *data; - guchar *p; - guint16 *p16; - MotifTargetTableHeader *header; - - if (!display_x11->motif_target_lists) - { - display_x11->motif_target_lists = g_new (GList *, 1); - display_x11->motif_n_target_lists = 1; - } - else - { - display_x11->motif_n_target_lists++; - display_x11->motif_target_lists = g_realloc (display_x11->motif_target_lists, - sizeof(GList *) * display_x11->motif_n_target_lists); - } - display_x11->motif_target_lists[display_x11->motif_n_target_lists - 1] = sorted; - sorted = NULL; - index = display_x11->motif_n_target_lists - 1; + { + guint32 total_size = 0; + guchar *data; + guchar *p; + guint16 *p16; + MotifTargetTableHeader *header; - total_size = sizeof (MotifTargetTableHeader); - for (i = 0; i < display_x11->motif_n_target_lists ; i++) - total_size += sizeof(guint16) + sizeof(guint32) * g_list_length (display_x11->motif_target_lists[i]); + if (!display_x11->motif_target_lists) + { + display_x11->motif_target_lists = g_new (GList *, 1); + display_x11->motif_n_target_lists = 1; + } + else + { + display_x11->motif_n_target_lists++; + display_x11->motif_target_lists = g_realloc (display_x11->motif_target_lists, + sizeof(GList *) * display_x11->motif_n_target_lists); + } + display_x11->motif_target_lists[display_x11->motif_n_target_lists - 1] = sorted; + sorted = NULL; + index = display_x11->motif_n_target_lists - 1; - data = g_malloc (total_size); + total_size = sizeof (MotifTargetTableHeader); + for (i = 0; i < display_x11->motif_n_target_lists ; i++) + total_size += sizeof(guint16) + sizeof(guint32) * g_list_length (display_x11->motif_target_lists[i]); - header = (MotifTargetTableHeader *)data; - p = data + sizeof(MotifTargetTableHeader); + data = g_malloc (total_size); - header->byte_order = local_byte_order; - header->protocol_version = 0; - header->n_lists = display_x11->motif_n_target_lists; - header->total_size = total_size; + header = (MotifTargetTableHeader *)data; + p = data + sizeof(MotifTargetTableHeader); - for (i = 0; i < display_x11->motif_n_target_lists ; i++) - { - guint16 n_targets = g_list_length (display_x11->motif_target_lists[i]); - guint32 *targets = g_new (guint32, n_targets); - guint32 *p32 = targets; - - tmp_list = display_x11->motif_target_lists[i]; - while (tmp_list) - { - *p32 = GPOINTER_TO_UINT (tmp_list->data); - - tmp_list = tmp_list->next; - p32++; - } + header->byte_order = local_byte_order; + header->protocol_version = 0; + header->n_lists = display_x11->motif_n_target_lists; + header->total_size = total_size; - p16 = (guint16 *)p; - p += sizeof(guint16); + for (i = 0; i < display_x11->motif_n_target_lists ; i++) + { + guint16 n_targets = g_list_length (display_x11->motif_target_lists[i]); + guint32 *targets = g_new (guint32, n_targets); + guint32 *p32 = targets; - memcpy (p, targets, n_targets * sizeof(guint32)); + tmp_list = display_x11->motif_target_lists[i]; + while (tmp_list) + { + *p32 = GPOINTER_TO_UINT (tmp_list->data); - *p16 = n_targets; - p += sizeof(guint32) * n_targets; - g_free (targets); - } + tmp_list = tmp_list->next; + p32++; + } - XChangeProperty (display_x11->xdisplay, - display_x11->motif_drag_window, - gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"), - gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"), - 8, PropModeReplace, - data, total_size); - } + p16 = (guint16 *)p; + p += sizeof(guint16); + + memcpy (p, targets, n_targets * sizeof(guint32)); + + *p16 = n_targets; + p += sizeof(guint32) * n_targets; + g_free (targets); + } + + XChangeProperty (display_x11->xdisplay, + display_x11->motif_drag_window, + gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"), + gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_TARGETS"), + 8, PropModeReplace, + data, total_size); + } gdk_x11_display_ungrab (display); } @@ -1317,11 +1333,13 @@ motif_add_to_target_table (GdkDisplay *display, /* Translate flags */ static void -motif_dnd_translate_flags (GdkDragContext *context, guint16 flags) +motif_dnd_translate_flags (GdkX11DragContext *context_x11, + guint16 flags) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); guint recommended_op = flags & 0x000f; guint possible_ops = (flags & 0x0f0) >> 4; - + switch (recommended_op) { case XmDROP_MOVE: @@ -1351,7 +1369,7 @@ static guint16 motif_dnd_get_flags (GdkDragContext *context) { guint16 flags = 0; - + switch (context->suggested_action) { case GDK_ACTION_MOVE: @@ -1367,7 +1385,7 @@ motif_dnd_get_flags (GdkDragContext *context) flags = XmDROP_NOOP; break; } - + if (context->actions & GDK_ACTION_MOVE) flags |= XmDROP_MOVE << 8; if (context->actions & GDK_ACTION_COPY) @@ -1381,43 +1399,42 @@ motif_dnd_get_flags (GdkDragContext *context) /* Source Side */ static void -motif_set_targets (GdkDragContext *context) +motif_set_targets (GdkX11DragContext *context_x11) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); MotifDragInitiatorInfo info; gint i; GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); - + info.byte_order = local_byte_order; info.protocol_version = 0; - info.targets_index = motif_add_to_target_table (display, context->targets); - for (i=0; ; i++) + for (i = 0; ; i++) { gchar buf[20]; - g_snprintf(buf, 20, "_GDK_SELECTION_%d", i); - - private->motif_selection = gdk_x11_get_xatom_by_name_for_display (display, buf); - if (!XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), private->motif_selection)) - break; + g_snprintf (buf, 20, "_GDK_SELECTION_%d", i); + + context_x11->motif_selection = gdk_x11_get_xatom_by_name_for_display (display, buf); + if (!XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), context_x11->motif_selection)) + break; } - info.selection_atom = private->motif_selection; + info.selection_atom = context_x11->motif_selection; XChangeProperty (GDK_WINDOW_XDISPLAY (context->source_window), - GDK_WINDOW_XID (context->source_window), - private->motif_selection, - gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"), - 8, PropModeReplace, - (guchar *)&info, sizeof (info)); + GDK_WINDOW_XID (context->source_window), + context_x11->motif_selection, + gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"), + 8, PropModeReplace, + (guchar *)&info, sizeof (info)); - private->motif_targets_set = 1; + context_x11->motif_targets_set = 1; } static guint32 motif_check_dest (GdkDisplay *display, - Window win) + Window win) { gboolean retval = FALSE; guchar *data; @@ -1427,49 +1444,49 @@ motif_check_dest (GdkDisplay *display, unsigned long nitems, after; Atom motif_drag_receiver_info_atom = gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_RECEIVER_INFO"); - gdk_error_trap_push (); - XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win, - motif_drag_receiver_info_atom, - 0, (sizeof(*info)+3)/4, False, AnyPropertyType, - &type, &format, &nitems, &after, - &data); + gdk_x11_display_error_trap_push (display); + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win, + motif_drag_receiver_info_atom, + 0, (sizeof(*info)+3)/4, False, AnyPropertyType, + &type, &format, &nitems, &after, + &data); - if (gdk_error_trap_pop() == 0) + if (gdk_x11_display_error_trap_pop (display) == 0) { if (type != None) - { - info = (MotifDragReceiverInfo *)data; - - if ((format == 8) && (nitems == sizeof(*info))) - { - if ((info->protocol_version == 0) && - ((info->protocol_style == XmDRAG_PREFER_PREREGISTER) || - (info->protocol_style == XmDRAG_PREFER_DYNAMIC) || - (info->protocol_style == XmDRAG_DYNAMIC))) - retval = TRUE; - } - else - { - GDK_NOTE (DND, - g_warning ("Invalid Motif drag receiver property on window %ld\n", win)); - } - - XFree (info); - } + { + info = (MotifDragReceiverInfo *)data; + + if ((format == 8) && (nitems == sizeof(*info))) + { + if ((info->protocol_version == 0) && + ((info->protocol_style == XmDRAG_PREFER_PREREGISTER) || + (info->protocol_style == XmDRAG_PREFER_DYNAMIC) || + (info->protocol_style == XmDRAG_DYNAMIC))) + retval = TRUE; + } + else + { + GDK_NOTE (DND, + g_warning ("Invalid Motif drag receiver property on window %ld\n", win)); + } + + XFree (info); + } } return retval ? win : None; } static void -motif_send_enter (GdkDragContext *context, - guint32 time) +motif_send_enter (GdkX11DragContext *context_x11, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; - if (!G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) + if (!G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) return; /* Motif Dnd requires getting properties on the root window */ xev.xclient.type = ClientMessage; @@ -1483,24 +1500,25 @@ motif_send_enter (GdkDragContext *context, MOTIF_XCLIENT_LONG (&xev, 1) = time; MOTIF_XCLIENT_LONG (&xev, 2) = GDK_WINDOW_XID (context->source_window); - if (!private->motif_targets_set) - motif_set_targets (context); + if (!context_x11->motif_targets_set) + motif_set_targets (context_x11); - MOTIF_XCLIENT_LONG (&xev, 3) = private->motif_selection; + MOTIF_XCLIENT_LONG (&xev, 3) = context_x11->motif_selection; MOTIF_XCLIENT_LONG (&xev, 4) = 0; - if (!_gdk_send_xevent (display, - GDK_WINDOW_XID (context->dest_window), - FALSE, 0, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + if (!_gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->dest_window), + FALSE, 0, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); } static void -motif_send_leave (GdkDragContext *context, - guint32 time) +motif_send_leave (GdkX11DragContext *context_x11, + guint32 time) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; @@ -1517,22 +1535,22 @@ motif_send_leave (GdkDragContext *context, MOTIF_XCLIENT_LONG (&xev, 3) = 0; MOTIF_XCLIENT_LONG (&xev, 4) = 0; - if (!_gdk_send_xevent (display, - GDK_WINDOW_XID (context->dest_window), - FALSE, 0, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + if (!_gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->dest_window), + FALSE, 0, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); } static gboolean -motif_send_motion (GdkDragContext *context, - gint x_root, - gint y_root, - GdkDragAction action, - guint32 time) +motif_send_motion (GdkX11DragContext *context_x11, + gint x_root, + gint y_root, + GdkDragAction action, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); gboolean retval; XEvent xev; @@ -1548,12 +1566,12 @@ motif_send_motion (GdkDragContext *context, MOTIF_XCLIENT_LONG (&xev, 3) = 0; MOTIF_XCLIENT_LONG (&xev, 4) = 0; - if ((context->suggested_action != private->old_action) || - (context->actions != private->old_actions)) + if ((context->suggested_action != context_x11->old_action) || + (context->actions != context_x11->old_actions)) { MOTIF_XCLIENT_BYTE (&xev, 0) = XmOPERATION_CHANGED; - /* private->drag_status = GDK_DRAG_STATUS_ACTION_WAIT; */ + /* context_x11->drag_status = GDK_DRAG_STATUS_ACTION_WAIT; */ retval = TRUE; } else @@ -1562,25 +1580,26 @@ motif_send_motion (GdkDragContext *context, MOTIF_XCLIENT_SHORT (&xev, 4) = x_root; MOTIF_XCLIENT_SHORT (&xev, 5) = y_root; - - private->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; + + context_x11->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; retval = FALSE; } - if (!_gdk_send_xevent (display, - GDK_WINDOW_XID (context->dest_window), - FALSE, 0, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + if (!_gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->dest_window), + FALSE, 0, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); return retval; } static void -motif_send_drop (GdkDragContext *context, guint32 time) +motif_send_drop (GdkX11DragContext *context_x11, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; @@ -1594,28 +1613,28 @@ motif_send_drop (GdkDragContext *context, guint32 time) MOTIF_XCLIENT_SHORT (&xev, 1) = motif_dnd_get_flags (context); MOTIF_XCLIENT_LONG (&xev, 1) = time; - MOTIF_XCLIENT_SHORT (&xev, 4) = private->last_x; - MOTIF_XCLIENT_SHORT (&xev, 5) = private->last_y; + MOTIF_XCLIENT_SHORT (&xev, 4) = context_x11->last_x; + MOTIF_XCLIENT_SHORT (&xev, 5) = context_x11->last_y; - MOTIF_XCLIENT_LONG (&xev, 3) = private->motif_selection; + MOTIF_XCLIENT_LONG (&xev, 3) = context_x11->motif_selection; MOTIF_XCLIENT_LONG (&xev, 4) = GDK_WINDOW_XID (context->source_window); - if (!_gdk_send_xevent (display, - GDK_WINDOW_XID (context->dest_window), - FALSE, 0, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + if (!_gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->dest_window), + FALSE, 0, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); } /* Target Side */ static gboolean motif_read_initiator_info (GdkDisplay *display, - Window source_window, - Atom atom, - GList **targets, - Atom *selection) + Window source_window, + Atom atom, + GList **targets, + Atom *selection) { GList *tmp_list; Atom type; @@ -1624,17 +1643,19 @@ motif_read_initiator_info (GdkDisplay *display, gulong bytes_after; guchar *data; MotifDragInitiatorInfo *initiator_info; - - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - - gdk_error_trap_push (); - XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), source_window, atom, - 0, sizeof(*initiator_info), FALSE, - gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"), - &type, &format, &nitems, &bytes_after, - &data); - if (gdk_error_trap_pop () || (format != 8) || (nitems != sizeof (MotifDragInitiatorInfo)) || (bytes_after != 0)) + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + + gdk_x11_display_error_trap_push (display); + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), source_window, atom, + 0, sizeof(*initiator_info), FALSE, + gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"), + &type, &format, &nitems, &bytes_after, + &data); + + if (gdk_x11_display_error_trap_pop (display) || + (format != 8) || (nitems != sizeof (MotifDragInitiatorInfo)) || + (bytes_after != 0)) { g_warning ("Error reading initiator info\n"); return FALSE; @@ -1644,11 +1665,11 @@ motif_read_initiator_info (GdkDisplay *display, motif_read_target_table (display); - initiator_info->targets_index = + initiator_info->targets_index = card16_to_host (initiator_info->targets_index, initiator_info->byte_order); - initiator_info->selection_atom = + initiator_info->selection_atom = card32_to_host (initiator_info->selection_atom, initiator_info->byte_order); - + if (initiator_info->targets_index >= display_x11->motif_n_target_lists) { g_warning ("Invalid target index in TOP_LEVEL_ENTER MESSAGE"); @@ -1680,14 +1701,14 @@ motif_read_initiator_info (GdkDisplay *display, static GdkDragContext * motif_drag_context_new (GdkWindow *dest_window, - guint32 timestamp, - guint32 source_window, - guint32 atom) + guint32 timestamp, + guint32 source_window, + guint32 atom) { - GdkDragContext *new_context; - GdkDragContextPrivateX11 *private; + GdkX11DragContext *context_x11; + GdkDragContext *context; GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window); - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); /* FIXME, current_dest_drag really shouldn't be NULL'd * if we error below. @@ -1695,48 +1716,48 @@ motif_drag_context_new (GdkWindow *dest_window, if (display_x11->current_dest_drag != NULL) { if (timestamp >= display_x11->current_dest_drag->start_time) - { - g_object_unref (display_x11->current_dest_drag); - display_x11->current_dest_drag = NULL; - } + { + g_object_unref (display_x11->current_dest_drag); + display_x11->current_dest_drag = NULL; + } else - return NULL; + return NULL; } - new_context = gdk_drag_context_new (); - private = PRIVATE_DATA (new_context); + context_x11 = g_object_new (GDK_TYPE_X11_DRAG_CONTEXT, NULL); + context = GDK_DRAG_CONTEXT (context_x11); - new_context->protocol = GDK_DRAG_PROTO_MOTIF; - new_context->is_source = FALSE; + context->protocol = GDK_DRAG_PROTO_MOTIF; + context->is_source = FALSE; - new_context->source_window = gdk_window_lookup_for_display (display, source_window); - if (new_context->source_window) - g_object_ref (new_context->source_window); + context->source_window = gdk_x11_window_lookup_for_display (display, source_window); + if (context->source_window) + g_object_ref (context->source_window); else { - new_context->source_window = gdk_window_foreign_new_for_display (display, source_window); - if (!new_context->source_window) - { - g_object_unref (new_context); - return NULL; - } + context->source_window = gdk_x11_window_foreign_new_for_display (display, source_window); + if (!context->source_window) + { + g_object_unref (context_x11); + return NULL; + } } - new_context->dest_window = dest_window; + context->dest_window = dest_window; g_object_ref (dest_window); - new_context->start_time = timestamp; + context->start_time = timestamp; if (!motif_read_initiator_info (GDK_WINDOW_DISPLAY (dest_window), - source_window, - atom, - &new_context->targets, - &private->motif_selection)) + source_window, + atom, + &context->targets, + &context_x11->motif_selection)) { - g_object_unref (new_context); + g_object_unref (context_x11); return NULL; } - return new_context; + return context; } /* @@ -1748,16 +1769,16 @@ motif_drag_context_new (GdkWindow *dest_window, static GdkFilterReturn motif_top_level_enter (GdkEvent *event, - guint16 flags, - guint32 timestamp, - guint32 source_window, - guint32 atom) + guint16 flags, + guint32 timestamp, + guint32 source_window, + guint32 atom) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (event->any.window)); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (event->any.window)); GdkDragContext *new_context; GDK_NOTE(DND, g_message ("Motif DND top level enter: flags: %#4x time: %d source_widow: %#4x atom: %d", - flags, timestamp, source_window, atom)); + flags, timestamp, source_window, atom)); new_context = motif_drag_context_new (event->any.window, timestamp, source_window, atom); if (!new_context) @@ -1774,13 +1795,13 @@ motif_top_level_enter (GdkEvent *event, static GdkFilterReturn motif_top_level_leave (GdkEvent *event, - guint16 flags, - guint32 timestamp) + guint16 flags, + guint32 timestamp) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (event->any.window)); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (event->any.window)); GDK_NOTE(DND, g_message ("Motif DND top level leave: flags: %#4x time: %d", - flags, timestamp)); + flags, timestamp)); if ((display_x11->current_dest_drag != NULL) && (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_MOTIF) && @@ -1800,22 +1821,22 @@ motif_top_level_leave (GdkEvent *event, static GdkFilterReturn motif_motion (GdkEvent *event, - guint16 flags, - guint32 timestamp, - gint16 x_root, - gint16 y_root) + guint16 flags, + guint32 timestamp, + gint16 x_root, + gint16 y_root) { - GdkDragContextPrivateX11 *private; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (event->any.window)); - + GdkX11DragContext *context_x11; + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (event->any.window)); + GDK_NOTE(DND, g_message ("Motif DND motion: flags: %#4x time: %d (%d, %d)", - flags, timestamp, x_root, y_root)); + flags, timestamp, x_root, y_root)); if ((display_x11->current_dest_drag != NULL) && (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_MOTIF) && (timestamp >= display_x11->current_dest_drag->start_time)) { - private = PRIVATE_DATA (display_x11->current_dest_drag); + context_x11 = GDK_X11_DRAG_CONTEXT (display_x11->current_dest_drag); event->dnd.type = GDK_DRAG_MOTION; event->dnd.context = display_x11->current_dest_drag; @@ -1823,15 +1844,15 @@ motif_motion (GdkEvent *event, event->dnd.time = timestamp; - motif_dnd_translate_flags (display_x11->current_dest_drag, flags); + motif_dnd_translate_flags (context_x11, flags); event->dnd.x_root = x_root; event->dnd.y_root = y_root; - private->last_x = x_root; - private->last_y = y_root; + context_x11->last_x = x_root; + context_x11->last_y = y_root; - private->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; + context_x11->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; return GDK_FILTER_TRANSLATE; } @@ -1841,13 +1862,13 @@ motif_motion (GdkEvent *event, static GdkFilterReturn motif_operation_changed (GdkEvent *event, - guint16 flags, - guint32 timestamp) + guint16 flags, + guint32 timestamp) { - GdkDragContextPrivateX11 *private; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (event->any.window)); + GdkX11DragContext *context_x11; + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (event->any.window)); GDK_NOTE(DND, g_message ("Motif DND operation changed: flags: %#4x time: %d", - flags, timestamp)); + flags, timestamp)); if ((display_x11->current_dest_drag != NULL) && (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_MOTIF) && @@ -1859,14 +1880,14 @@ motif_operation_changed (GdkEvent *event, g_object_ref (display_x11->current_dest_drag); event->dnd.time = timestamp; - private = PRIVATE_DATA (display_x11->current_dest_drag); + context_x11 = GDK_X11_DRAG_CONTEXT (display_x11->current_dest_drag); - motif_dnd_translate_flags (display_x11->current_dest_drag, flags); + motif_dnd_translate_flags (context_x11, flags); - event->dnd.x_root = private->last_x; - event->dnd.y_root = private->last_y; + event->dnd.x_root = context_x11->last_x; + event->dnd.y_root = context_x11->last_y; - private->drag_status = GDK_DRAG_STATUS_ACTION_WAIT; + context_x11->drag_status = GDK_DRAG_STATUS_ACTION_WAIT; return GDK_FILTER_TRANSLATE; } @@ -1876,24 +1897,24 @@ motif_operation_changed (GdkEvent *event, static GdkFilterReturn motif_drop_start (GdkEvent *event, - guint16 flags, - guint32 timestamp, - guint32 source_window, - guint32 atom, - gint16 x_root, - gint16 y_root) + guint16 flags, + guint32 timestamp, + guint32 source_window, + guint32 atom, + gint16 x_root, + gint16 y_root) { GdkDragContext *new_context; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (event->any.window)); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (event->any.window)); GDK_NOTE(DND, g_message ("Motif DND drop start: flags: %#4x time: %d (%d, %d) source_widow: %#4x atom: %d", - flags, timestamp, x_root, y_root, source_window, atom)); + flags, timestamp, x_root, y_root, source_window, atom)); new_context = motif_drag_context_new (event->any.window, timestamp, source_window, atom); if (!new_context) return GDK_FILTER_REMOVE; - motif_dnd_translate_flags (new_context, flags); + motif_dnd_translate_flags (GDK_X11_DRAG_CONTEXT (new_context), flags); event->dnd.type = GDK_DROP_START; event->dnd.context = new_context; @@ -1907,32 +1928,32 @@ motif_drop_start (GdkEvent *event, display_x11->current_dest_drag = new_context; return GDK_FILTER_TRANSLATE; -} +} static GdkFilterReturn motif_drag_status (GdkEvent *event, - guint16 flags, - guint32 timestamp) + guint16 flags, + guint32 timestamp) { GdkDragContext *context; GdkDisplay *display; - - GDK_NOTE (DND, - g_message ("Motif status message: flags %x", flags)); + + GDK_NOTE (DND, + g_message ("Motif status message: flags %x", flags)); display = gdk_window_get_display (event->any.window); if (!display) return GDK_FILTER_REMOVE; - + context = gdk_drag_context_find (display, TRUE, GDK_WINDOW_XID (event->any.window), None); if (context) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); - if ((private->drag_status == GDK_DRAG_STATUS_MOTION_WAIT) || - (private->drag_status == GDK_DRAG_STATUS_ACTION_WAIT)) - private->drag_status = GDK_DRAG_STATUS_DRAG; - + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); + if ((context_x11->drag_status == GDK_DRAG_STATUS_MOTION_WAIT) || + (context_x11->drag_status == GDK_DRAG_STATUS_ACTION_WAIT)) + context_x11->drag_status = GDK_DRAG_STATUS_DRAG; + event->dnd.type = GDK_DRAG_STATUS; event->dnd.send_event = FALSE; event->dnd.context = context; @@ -1941,25 +1962,25 @@ motif_drag_status (GdkEvent *event, event->dnd.time = timestamp; if ((flags & 0x00f0) >> 4 == XmDROP_SITE_VALID) - { - switch (flags & 0x000f) - { - case XmDROP_NOOP: - context->action = 0; - break; - case XmDROP_MOVE: - context->action = GDK_ACTION_MOVE; - break; - case XmDROP_COPY: - context->action = GDK_ACTION_COPY; - break; - case XmDROP_LINK: - context->action = GDK_ACTION_LINK; - break; - } - } + { + switch (flags & 0x000f) + { + case XmDROP_NOOP: + context->action = 0; + break; + case XmDROP_MOVE: + context->action = GDK_ACTION_MOVE; + break; + case XmDROP_COPY: + context->action = GDK_ACTION_COPY; + break; + case XmDROP_LINK: + context->action = GDK_ACTION_LINK; + break; + } + } else - context->action = 0; + context->action = 0; return GDK_FILTER_TRANSLATE; } @@ -1968,8 +1989,8 @@ motif_drag_status (GdkEvent *event, static GdkFilterReturn motif_dnd_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xevent = (XEvent *)xev; @@ -1983,10 +2004,9 @@ motif_dnd_filter (GdkXEvent *xev, if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - /* First read some fields common to all Motif DND messages */ + return GDK_FILTER_CONTINUE; /* Not for us */ + /* First read some fields common to all Motif DND messages */ reason = MOTIF_UNPACK_BYTE (xevent, 0); flags = MOTIF_UNPACK_SHORT (xevent, 1); timestamp = MOTIF_UNPACK_LONG (xevent, 1); @@ -2005,19 +2025,19 @@ motif_dnd_filter (GdkXEvent *xev, case XmDRAG_MOTION: x_root = MOTIF_UNPACK_SHORT (xevent, 4); y_root = MOTIF_UNPACK_SHORT (xevent, 5); - + if (!is_reply) - return motif_motion (event, flags, timestamp, x_root, y_root); + return motif_motion (event, flags, timestamp, x_root, y_root); else - return motif_drag_status (event, flags, timestamp); + return motif_drag_status (event, flags, timestamp); case XmDROP_SITE_ENTER: return motif_drag_status (event, flags, timestamp); case XmDROP_SITE_LEAVE: return motif_drag_status (event, - XmNO_DROP_SITE << 8 | XmDROP_NOOP, - timestamp); + XmNO_DROP_SITE << 8 | XmDROP_NOOP, + timestamp); case XmDROP_START: x_root = MOTIF_UNPACK_SHORT (xevent, 4); y_root = MOTIF_UNPACK_SHORT (xevent, 5); @@ -2025,17 +2045,17 @@ motif_dnd_filter (GdkXEvent *xev, source_window = MOTIF_UNPACK_LONG (xevent, 4); if (!is_reply) - return motif_drop_start (event, flags, timestamp, source_window, atom, x_root, y_root); - + return motif_drop_start (event, flags, timestamp, source_window, atom, x_root, y_root); + break; case XmOPERATION_CHANGED: if (!is_reply) - return motif_operation_changed (event, flags, timestamp); + return motif_operation_changed (event, flags, timestamp); else - return motif_drag_status (event, flags, timestamp); + return motif_drag_status (event, flags, timestamp); break; - /* To the best of my knowledge, these next two messages are + /* To the best of my knowledge, these next two messages are * not part of the protocol, though they are defined in * the header files. */ @@ -2065,22 +2085,22 @@ static struct { { "XdndActionPrivate", None, GDK_ACTION_COPY }, }; -static const gint xdnd_n_actions = sizeof(xdnd_actions_table) / sizeof(xdnd_actions_table[0]); +static const gint xdnd_n_actions = G_N_ELEMENTS (xdnd_actions_table); static gboolean xdnd_actions_initialized = FALSE; static void xdnd_initialize_actions (void) { gint i; - + xdnd_actions_initialized = TRUE; - for (i=0; i < xdnd_n_actions; i++) + for (i = 0; i < xdnd_n_actions; i++) xdnd_actions_table[i].atom = gdk_atom_intern_static_string (xdnd_actions_table[i].name); } static GdkDragAction xdnd_action_from_atom (GdkDisplay *display, - Atom xatom) + Atom xatom) { GdkAtom atom; gint i; @@ -2093,7 +2113,7 @@ xdnd_action_from_atom (GdkDisplay *display, if (!xdnd_actions_initialized) xdnd_initialize_actions(); - for (i=0; iany.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - GDK_NOTE (DND, - g_message ("XdndStatus: dest_window: %#x action: %ld", - dest_window, action)); + return GDK_FILTER_CONTINUE; /* Not for us */ + + GDK_NOTE (DND, + g_message ("XdndStatus: dest_window: %#x action: %ld", + dest_window, action)); display = gdk_window_get_display (event->any.window); context = gdk_drag_context_find (display, TRUE, xevent->xclient.window, dest_window); - + if (context) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); - if (private->drag_status == GDK_DRAG_STATUS_MOTION_WAIT) - private->drag_status = GDK_DRAG_STATUS_DRAG; - + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); + if (context_x11->drag_status == GDK_DRAG_STATUS_MOTION_WAIT) + context_x11->drag_status = GDK_DRAG_STATUS_DRAG; + event->dnd.send_event = FALSE; event->dnd.type = GDK_DRAG_STATUS; event->dnd.context = context; @@ -2155,11 +2175,11 @@ xdnd_status_filter (GdkXEvent *xev, event->dnd.time = GDK_CURRENT_TIME; /* FIXME? */ if (!(action != 0) != !(flags & 1)) - { - GDK_NOTE (DND, - g_warning ("Received status event with flags not corresponding to action!\n")); - action = 0; - } + { + GDK_NOTE (DND, + g_warning ("Received status event with flags not corresponding to action!\n")); + action = 0; + } context->action = xdnd_action_from_atom (display, action); @@ -2169,33 +2189,33 @@ xdnd_status_filter (GdkXEvent *xev, return GDK_FILTER_REMOVE; } -static GdkFilterReturn +static GdkFilterReturn xdnd_finished_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { GdkDisplay *display; XEvent *xevent = (XEvent *)xev; guint32 dest_window = xevent->xclient.data.l[0]; GdkDragContext *context; - GdkDragContextPrivateX11 *private; + GdkX11DragContext *context_x11; if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - GDK_NOTE (DND, - g_message ("XdndFinished: dest_window: %#x", dest_window)); + return GDK_FILTER_CONTINUE; /* Not for us */ + + GDK_NOTE (DND, + g_message ("XdndFinished: dest_window: %#x", dest_window)); display = gdk_window_get_display (event->any.window); context = gdk_drag_context_find (display, TRUE, xevent->xclient.window, dest_window); - + if (context) { - private = PRIVATE_DATA (context); - if (private->version == 5) - private->drop_failed = xevent->xclient.data.l[1] == 0; - + context_x11 = GDK_X11_DRAG_CONTEXT (context); + if (context_x11->version == 5) + context_x11->drop_failed = xevent->xclient.data.l[1] == 0; + event->dnd.type = GDK_DROP_FINISHED; event->dnd.context = context; gdk_event_set_device (event, gdk_drag_context_get_device (context)); @@ -2210,9 +2230,9 @@ xdnd_finished_filter (GdkXEvent *xev, } static void -xdnd_set_targets (GdkDragContext *context) +xdnd_set_targets (GdkX11DragContext *context_x11) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); Atom *atomlist; GList *tmp_list = context->targets; gint i; @@ -2229,20 +2249,20 @@ xdnd_set_targets (GdkDragContext *context) } XChangeProperty (GDK_WINDOW_XDISPLAY (context->source_window), - GDK_WINDOW_XID (context->source_window), - gdk_x11_get_xatom_by_name_for_display (display, "XdndTypeList"), - XA_ATOM, 32, PropModeReplace, - (guchar *)atomlist, n_atoms); + GDK_WINDOW_XID (context->source_window), + gdk_x11_get_xatom_by_name_for_display (display, "XdndTypeList"), + XA_ATOM, 32, PropModeReplace, + (guchar *)atomlist, n_atoms); g_free (atomlist); - private->xdnd_targets_set = 1; + context_x11->xdnd_targets_set = 1; } static void -xdnd_set_actions (GdkDragContext *context) +xdnd_set_actions (GdkX11DragContext *context_x11) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); Atom *atomlist; gint i; gint n_atoms; @@ -2251,53 +2271,53 @@ xdnd_set_actions (GdkDragContext *context) if (!xdnd_actions_initialized) xdnd_initialize_actions(); - + actions = context->actions; n_atoms = 0; - for (i=0; iactions; n_atoms = 0; - for (i=0; isource_window), - GDK_WINDOW_XID (context->source_window), - gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"), - XA_ATOM, 32, PropModeReplace, - (guchar *)atomlist, n_atoms); + GDK_WINDOW_XID (context->source_window), + gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"), + XA_ATOM, 32, PropModeReplace, + (guchar *)atomlist, n_atoms); g_free (atomlist); - private->xdnd_actions_set = TRUE; - private->xdnd_actions = context->actions; + context_x11->xdnd_actions_set = TRUE; + context_x11->xdnd_actions = context->actions; } static void send_client_message_async_cb (Window window, - gboolean success, - gpointer data) + gboolean success, + gpointer data) { GdkDragContext *context = data; GDK_NOTE (DND, - g_message ("Got async callback for #%lx, success = %d", - window, success)); + g_message ("Got async callback for #%lx, success = %d", + window, success)); /* On failure, we immediately continue with the protocol * so we don't end up blocking for a timeout @@ -2307,13 +2327,13 @@ send_client_message_async_cb (Window window, window == GDK_WINDOW_XID (context->dest_window)) { GdkEvent *temp_event; - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkX11DragContext *context_x11 = data; g_object_unref (context->dest_window); context->dest_window = NULL; context->action = 0; - private->drag_status = GDK_DRAG_STATUS_DRAG; + context_x11->drag_status = GDK_DRAG_STATUS_DRAG; temp_event = gdk_event_new (GDK_DRAG_STATUS); temp_event->dnd.window = g_object_ref (context->source_window); @@ -2345,26 +2365,27 @@ gdk_drag_context_get_display (GdkDragContext *context) static void send_client_message_async (GdkDragContext *context, - Window window, - gboolean propagate, - glong event_mask, - XClientMessageEvent *event_send) + Window window, + gboolean propagate, + glong event_mask, + XClientMessageEvent *event_send) { GdkDisplay *display = gdk_drag_context_get_display (context); - + g_object_ref (context); _gdk_x11_send_client_message_async (display, window, - propagate, event_mask, event_send, - send_client_message_async_cb, context); + propagate, event_mask, event_send, + send_client_message_async_cb, context); } static gboolean -xdnd_send_xevent (GdkDragContext *context, - GdkWindow *window, - gboolean propagate, - XEvent *event_send) +xdnd_send_xevent (GdkX11DragContext *context_x11, + GdkWindow *window, + gboolean propagate, + XEvent *event_send) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = gdk_drag_context_get_display (context); Window xwindow; glong event_mask; @@ -2375,67 +2396,67 @@ xdnd_send_xevent (GdkDragContext *context, if (gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN) { gint i; - + for (i = 0; i < G_N_ELEMENTS (xdnd_filters); i++) - { - if (gdk_x11_get_xatom_by_name_for_display (display, xdnd_filters[i].atom_name) == - event_send->xclient.message_type) - { - GdkEvent *temp_event; + { + if (gdk_x11_get_xatom_by_name_for_display (display, xdnd_filters[i].atom_name) == + event_send->xclient.message_type) + { + GdkEvent *temp_event; temp_event = gdk_event_new (GDK_NOTHING); temp_event->any.window = g_object_ref (window); - if ((*xdnd_filters[i].func) (event_send, temp_event, NULL) == GDK_FILTER_TRANSLATE) - { - gdk_event_put (temp_event); + if ((*xdnd_filters[i].func) (event_send, temp_event, NULL) == GDK_FILTER_TRANSLATE) + { + gdk_event_put (temp_event); gdk_event_free (temp_event); - } - - return TRUE; - } - } + } + + return TRUE; + } + } } xwindow = GDK_WINDOW_XID (window); - + if (_gdk_x11_display_is_root_window (display, xwindow)) event_mask = ButtonPressMask; else event_mask = 0; - + send_client_message_async (context, xwindow, propagate, event_mask, - &event_send->xclient); + &event_send->xclient); return TRUE; } - + static void -xdnd_send_enter (GdkDragContext *context) +xdnd_send_enter (GdkX11DragContext *context_x11) { - XEvent xev; - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->dest_window); + XEvent xev; xev.xclient.type = ClientMessage; xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndEnter"); xev.xclient.format = 32; - xev.xclient.window = private->drop_xid ? - private->drop_xid : - GDK_WINDOW_XID (context->dest_window); + xev.xclient.window = context_x11->drop_xid + ? context_x11->drop_xid + : GDK_WINDOW_XID (context->dest_window); xev.xclient.data.l[0] = GDK_WINDOW_XID (context->source_window); - xev.xclient.data.l[1] = (private->version << 24); /* version */ + xev.xclient.data.l[1] = (context_x11->version << 24); /* version */ xev.xclient.data.l[2] = 0; xev.xclient.data.l[3] = 0; xev.xclient.data.l[4] = 0; GDK_NOTE(DND, - g_message ("Sending enter source window %#lx XDND protocol version %d\n", - GDK_WINDOW_XID (context->source_window), private->version)); + g_message ("Sending enter source window %#lx XDND protocol version %d\n", + GDK_WINDOW_XID (context->source_window), context_x11->version)); if (g_list_length (context->targets) > 3) { - if (!private->xdnd_targets_set) - xdnd_set_targets (context); + if (!context_x11->xdnd_targets_set) + xdnd_set_targets (context_x11); xev.xclient.data.l[1] |= 1; } else @@ -2444,125 +2465,121 @@ xdnd_send_enter (GdkDragContext *context) gint i = 2; while (tmp_list) - { - xev.xclient.data.l[i] = gdk_x11_atom_to_xatom_for_display (display, - GDK_POINTER_TO_ATOM (tmp_list->data)); - tmp_list = tmp_list->next; - i++; - } + { + xev.xclient.data.l[i] = gdk_x11_atom_to_xatom_for_display (display, + GDK_POINTER_TO_ATOM (tmp_list->data)); + tmp_list = tmp_list->next; + i++; + } } - if (!xdnd_send_xevent (context, context->dest_window, - FALSE, &xev)) + if (!xdnd_send_xevent (context_x11, context->dest_window, FALSE, &xev)) { - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); g_object_unref (context->dest_window); context->dest_window = NULL; } } static void -xdnd_send_leave (GdkDragContext *context) +xdnd_send_leave (GdkX11DragContext *context_x11) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); - xev.xclient.type = ClientMessage; xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndLeave"); xev.xclient.format = 32; - xev.xclient.window = private->drop_xid ? - private->drop_xid : - GDK_WINDOW_XID (context->dest_window); + xev.xclient.window = context_x11->drop_xid + ? context_x11->drop_xid + : GDK_WINDOW_XID (context->dest_window); xev.xclient.data.l[0] = GDK_WINDOW_XID (context->source_window); xev.xclient.data.l[1] = 0; xev.xclient.data.l[2] = 0; xev.xclient.data.l[3] = 0; xev.xclient.data.l[4] = 0; - if (!xdnd_send_xevent (context, context->dest_window, - FALSE, &xev)) + if (!xdnd_send_xevent (context_x11, context->dest_window, FALSE, &xev)) { - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); g_object_unref (context->dest_window); context->dest_window = NULL; } } static void -xdnd_send_drop (GdkDragContext *context, guint32 time) +xdnd_send_drop (GdkX11DragContext *context_x11, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; xev.xclient.type = ClientMessage; xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndDrop"); xev.xclient.format = 32; - xev.xclient.window = private->drop_xid ? - private->drop_xid : - GDK_WINDOW_XID (context->dest_window); + xev.xclient.window = context_x11->drop_xid + ? context_x11->drop_xid + : GDK_WINDOW_XID (context->dest_window); xev.xclient.data.l[0] = GDK_WINDOW_XID (context->source_window); xev.xclient.data.l[1] = 0; xev.xclient.data.l[2] = time; xev.xclient.data.l[3] = 0; xev.xclient.data.l[4] = 0; - if (!xdnd_send_xevent (context, context->dest_window, - FALSE, &xev)) + if (!xdnd_send_xevent (context_x11, context->dest_window, FALSE, &xev)) { - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); g_object_unref (context->dest_window); context->dest_window = NULL; } } static void -xdnd_send_motion (GdkDragContext *context, - gint x_root, - gint y_root, - GdkDragAction action, - guint32 time) +xdnd_send_motion (GdkX11DragContext *context_x11, + gint x_root, + gint y_root, + GdkDragAction action, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); XEvent xev; xev.xclient.type = ClientMessage; xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndPosition"); xev.xclient.format = 32; - xev.xclient.window = private->drop_xid ? - private->drop_xid : - GDK_WINDOW_XID (context->dest_window); + xev.xclient.window = context_x11->drop_xid + ? context_x11->drop_xid + : GDK_WINDOW_XID (context->dest_window); xev.xclient.data.l[0] = GDK_WINDOW_XID (context->source_window); xev.xclient.data.l[1] = 0; xev.xclient.data.l[2] = (x_root << 16) | y_root; xev.xclient.data.l[3] = time; xev.xclient.data.l[4] = xdnd_action_to_atom (display, action); - if (!xdnd_send_xevent (context, context->dest_window, - FALSE, &xev)) + if (!xdnd_send_xevent (context_x11, context->dest_window, FALSE, &xev)) { - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->dest_window))); + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->dest_window))); g_object_unref (context->dest_window); context->dest_window = NULL; } - private->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; + context_x11->drag_status = GDK_DRAG_STATUS_MOTION_WAIT; } static guint32 xdnd_check_dest (GdkDisplay *display, - Window win, - guint *xdnd_version) + Window win, + guint *xdnd_version) { gboolean retval = FALSE; Atom type = None; @@ -2577,123 +2594,121 @@ xdnd_check_dest (GdkDisplay *display, proxy = None; - gdk_error_trap_push (); - - if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win, - xdnd_proxy_atom, 0, - 1, False, AnyPropertyType, - &type, &format, &nitems, &after, - &data) == Success) + gdk_x11_display_error_trap_push (display); + if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win, + xdnd_proxy_atom, 0, + 1, False, AnyPropertyType, + &type, &format, &nitems, &after, + &data) == Success) { if (type != None) - { - proxy_data = (Window *)data; - - if ((format == 32) && (nitems == 1)) - { - proxy = *proxy_data; - } - else - GDK_NOTE (DND, - g_warning ("Invalid XdndProxy " - "property on window %ld\n", win)); - - XFree (proxy_data); - } - + { + proxy_data = (Window *)data; + + if ((format == 32) && (nitems == 1)) + { + proxy = *proxy_data; + } + else + GDK_NOTE (DND, + g_warning ("Invalid XdndProxy " + "property on window %ld\n", win)); + + XFree (proxy_data); + } + if ((XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), proxy ? proxy : win, - xdnd_aware_atom, 0, - 1, False, AnyPropertyType, - &type, &format, &nitems, &after, - &data) == Success) && - type != None) - { - version = (Atom *)data; - - if ((format == 32) && (nitems == 1)) - { - if (*version >= 3) - retval = TRUE; - if (xdnd_version) - *xdnd_version = *version; - } - else - GDK_NOTE (DND, - g_warning ("Invalid XdndAware " - "property on window %ld\n", win)); - - XFree (version); - } + xdnd_aware_atom, 0, + 1, False, AnyPropertyType, + &type, &format, &nitems, &after, + &data) == Success) && + type != None) + { + version = (Atom *)data; + + if ((format == 32) && (nitems == 1)) + { + if (*version >= 3) + retval = TRUE; + if (xdnd_version) + *xdnd_version = *version; + } + else + GDK_NOTE (DND, + g_warning ("Invalid XdndAware " + "property on window %ld\n", win)); + + XFree (version); + } } - gdk_error_trap_pop_ignored (); - + gdk_x11_display_error_trap_pop_ignored (display); + return retval ? (proxy ? proxy : win) : None; } /* Target side */ static void -xdnd_read_actions (GdkDragContext *context) +xdnd_read_actions (GdkX11DragContext *context_x11) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); Atom type; int format; gulong nitems, after; guchar *data; Atom *atoms; - gint i; - - PRIVATE_DATA (context)->xdnd_have_actions = FALSE; + + context_x11->xdnd_have_actions = FALSE; if (gdk_window_get_window_type (context->source_window) == GDK_WINDOW_FOREIGN) { /* Get the XdndActionList, if set */ - - gdk_error_trap_push (); - + + gdk_x11_display_error_trap_push (display); if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), - GDK_WINDOW_XID (context->source_window), - gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"), - 0, 65536, - False, XA_ATOM, &type, &format, &nitems, - &after, &data) == Success && - type == XA_ATOM) - { - atoms = (Atom *)data; - - context->actions = 0; - - for (i=0; iactions |= xdnd_action_from_atom (display, atoms[i]); - - PRIVATE_DATA (context)->xdnd_have_actions = TRUE; - + GDK_WINDOW_XID (context->source_window), + gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"), + 0, 65536, + False, XA_ATOM, &type, &format, &nitems, + &after, &data) == Success && + type == XA_ATOM) + { + atoms = (Atom *)data; + + context->actions = 0; + + for (i = 0; i < nitems; i++) + context->actions |= xdnd_action_from_atom (display, atoms[i]); + + context_x11->xdnd_have_actions = TRUE; + #ifdef G_ENABLE_DEBUG - if (_gdk_debug_flags & GDK_DEBUG_DND) - { - GString *action_str = g_string_new (NULL); - if (context->actions & GDK_ACTION_MOVE) - g_string_append(action_str, "MOVE "); - if (context->actions & GDK_ACTION_COPY) - g_string_append(action_str, "COPY "); - if (context->actions & GDK_ACTION_LINK) - g_string_append(action_str, "LINK "); - if (context->actions & GDK_ACTION_ASK) - g_string_append(action_str, "ASK "); - - g_message("Xdnd actions = %s", action_str->str); - g_string_free (action_str, TRUE); - } + if (_gdk_debug_flags & GDK_DEBUG_DND) + { + GString *action_str = g_string_new (NULL); + if (context->actions & GDK_ACTION_MOVE) + g_string_append(action_str, "MOVE "); + if (context->actions & GDK_ACTION_COPY) + g_string_append(action_str, "COPY "); + if (context->actions & GDK_ACTION_LINK) + g_string_append(action_str, "LINK "); + if (context->actions & GDK_ACTION_ASK) + g_string_append(action_str, "ASK "); + + g_message("Xdnd actions = %s", action_str->str); + g_string_free (action_str, TRUE); + } #endif /* G_ENABLE_DEBUG */ - - } + + } if (data) - XFree (data); - - gdk_error_trap_pop_ignored (); + XFree (data); + + gdk_x11_display_error_trap_pop_ignored (display); } else { @@ -2702,14 +2717,14 @@ xdnd_read_actions (GdkDragContext *context) GdkDragContext *source_context; source_context = gdk_drag_context_find (display, TRUE, - GDK_WINDOW_XID (context->source_window), - GDK_WINDOW_XID (context->dest_window)); + GDK_WINDOW_XID (context->source_window), + GDK_WINDOW_XID (context->dest_window)); if (source_context) - { - context->actions = source_context->actions; - PRIVATE_DATA (context)->xdnd_have_actions = TRUE; - } + { + context->actions = source_context->actions; + context_x11->xdnd_have_actions = TRUE; + } } } @@ -2719,19 +2734,19 @@ xdnd_read_actions (GdkDragContext *context) * to continually send actions. So we select on PropertyChangeMask * and add this filter. */ -static GdkFilterReturn +static GdkFilterReturn xdnd_source_window_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer cb_data) + GdkEvent *event, + gpointer cb_data) { XEvent *xevent = (XEvent *)xev; - GdkDragContext *context = cb_data; + GdkX11DragContext *context_x11 = cb_data; GdkDisplay *display = GDK_WINDOW_DISPLAY(event->any.window); if ((xevent->xany.type == PropertyNotify) && (xevent->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"))) { - xdnd_read_actions (context); + xdnd_read_actions (context_x11); return GDK_FILTER_REMOVE; } @@ -2741,53 +2756,53 @@ xdnd_source_window_filter (GdkXEvent *xev, static void xdnd_manage_source_filter (GdkDragContext *context, - GdkWindow *window, - gboolean add_filter) + GdkWindow *window, + gboolean add_filter) { if (!GDK_WINDOW_DESTROYED (window) && gdk_window_get_window_type (window) == GDK_WINDOW_FOREIGN) { - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (GDK_WINDOW_DISPLAY (window)); if (add_filter) - { - gdk_window_set_events (window, - gdk_window_get_events (window) | - GDK_PROPERTY_CHANGE_MASK); - gdk_window_add_filter (window, xdnd_source_window_filter, context); - } + { + gdk_window_set_events (window, + gdk_window_get_events (window) | + GDK_PROPERTY_CHANGE_MASK); + gdk_window_add_filter (window, xdnd_source_window_filter, context); + } else - { - gdk_window_remove_filter (window, - xdnd_source_window_filter, - context); - /* Should we remove the GDK_PROPERTY_NOTIFY mask? - * but we might want it for other reasons. (Like - * INCR selection transactions). - */ - } - - gdk_error_trap_pop_ignored (); + { + gdk_window_remove_filter (window, + xdnd_source_window_filter, + context); + /* Should we remove the GDK_PROPERTY_NOTIFY mask? + * but we might want it for other reasons. (Like + * INCR selection transactions). + */ + } + + gdk_x11_display_error_trap_pop_ignored (GDK_WINDOW_DISPLAY (window)); } } static void base_precache_atoms (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); if (!display_x11->base_dnd_atoms_precached) { static const char *const precache_atoms[] = { - "ENLIGHTENMENT_DESKTOP", - "WM_STATE", - "XdndAware", - "XdndProxy", - "_MOTIF_DRAG_RECEIVER_INFO" + "ENLIGHTENMENT_DESKTOP", + "WM_STATE", + "XdndAware", + "XdndProxy", + "_MOTIF_DRAG_RECEIVER_INFO" }; _gdk_x11_precache_atoms (display, - precache_atoms, G_N_ELEMENTS (precache_atoms)); + precache_atoms, G_N_ELEMENTS (precache_atoms)); display_x11->base_dnd_atoms_precached = TRUE; } @@ -2796,72 +2811,71 @@ base_precache_atoms (GdkDisplay *display) static void xdnd_precache_atoms (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); if (!display_x11->xdnd_atoms_precached) { - static const char *const precache_atoms[] = { - "XdndActionAsk", - "XdndActionCopy", - "XdndActionLink", - "XdndActionList", - "XdndActionMove", - "XdndActionPrivate", - "XdndDrop", - "XdndEnter", - "XdndFinished", - "XdndLeave", - "XdndPosition", - "XdndSelection", - "XdndStatus", - "XdndTypeList" + static const gchar *const precache_atoms[] = { + "XdndActionAsk", + "XdndActionCopy", + "XdndActionLink", + "XdndActionList", + "XdndActionMove", + "XdndActionPrivate", + "XdndDrop", + "XdndEnter", + "XdndFinished", + "XdndLeave", + "XdndPosition", + "XdndSelection", + "XdndStatus", + "XdndTypeList" }; _gdk_x11_precache_atoms (display, - precache_atoms, G_N_ELEMENTS (precache_atoms)); + precache_atoms, G_N_ELEMENTS (precache_atoms)); display_x11->xdnd_atoms_precached = TRUE; } } -static GdkFilterReturn +static GdkFilterReturn xdnd_enter_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer cb_data) + GdkEvent *event, + gpointer cb_data) { GdkDeviceManager *device_manager; GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; XEvent *xevent = (XEvent *)xev; - GdkDragContext *new_context; + GdkDragContext *context; + GdkX11DragContext *context_x11; gint i; - Atom type; int format; gulong nitems, after; guchar *data; Atom *atoms; - guint32 source_window; gboolean get_types; gint version; if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ + return GDK_FILTER_CONTINUE; /* Not for us */ source_window = xevent->xclient.data.l[0]; get_types = ((xevent->xclient.data.l[1] & 1) != 0); version = (xevent->xclient.data.l[1] & 0xff000000) >> 24; - + display = GDK_WINDOW_DISPLAY (event->any.window); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); xdnd_precache_atoms (display); - GDK_NOTE (DND, - g_message ("XdndEnter: source_window: %#x, version: %#x", - source_window, version)); + GDK_NOTE (DND, + g_message ("XdndEnter: source_window: %#x, version: %#x", + source_window, version)); if (version < 3) { @@ -2869,115 +2883,117 @@ xdnd_enter_filter (GdkXEvent *xev, GDK_NOTE (DND, g_message ("Ignored old XdndEnter message")); return GDK_FILTER_REMOVE; } - + if (display_x11->current_dest_drag != NULL) { g_object_unref (display_x11->current_dest_drag); display_x11->current_dest_drag = NULL; } - new_context = gdk_drag_context_new (); - new_context->protocol = GDK_DRAG_PROTO_XDND; - PRIVATE_DATA(new_context)->version = version; + context_x11 = (GdkX11DragContext *)g_object_new (GDK_TYPE_X11_DRAG_CONTEXT, NULL); + context = (GdkDragContext *)context_x11; + + context->protocol = GDK_DRAG_PROTO_XDND; + context_x11->version = version; /* FIXME: Should extend DnD protocol to have device info */ device_manager = gdk_display_get_device_manager (display); - gdk_drag_context_set_device (new_context, gdk_device_manager_get_client_pointer (device_manager)); + gdk_drag_context_set_device (context, gdk_device_manager_get_client_pointer (device_manager)); - new_context->source_window = gdk_window_lookup_for_display (display, source_window); - if (new_context->source_window) - g_object_ref (new_context->source_window); + context->source_window = gdk_x11_window_lookup_for_display (display, source_window); + if (context->source_window) + g_object_ref (context->source_window); else { - new_context->source_window = gdk_window_foreign_new_for_display (display, source_window); - if (!new_context->source_window) - { - g_object_unref (new_context); - return GDK_FILTER_REMOVE; - } + context->source_window = gdk_x11_window_foreign_new_for_display (display, source_window); + if (!context->source_window) + { + g_object_unref (context); + return GDK_FILTER_REMOVE; + } } - new_context->dest_window = event->any.window; - g_object_ref (new_context->dest_window); + context->dest_window = event->any.window; + g_object_ref (context->dest_window); - new_context->targets = NULL; + context->targets = NULL; if (get_types) { - gdk_error_trap_push (); - XGetWindowProperty (GDK_WINDOW_XDISPLAY (event->any.window), - source_window, - gdk_x11_get_xatom_by_name_for_display (display, "XdndTypeList"), - 0, 65536, - False, XA_ATOM, &type, &format, &nitems, - &after, &data); + gdk_x11_display_error_trap_push (display); + XGetWindowProperty (GDK_WINDOW_XDISPLAY (event->any.window), + source_window, + gdk_x11_get_xatom_by_name_for_display (display, "XdndTypeList"), + 0, 65536, + False, XA_ATOM, &type, &format, &nitems, + &after, &data); - if (gdk_error_trap_pop () || (format != 32) || (type != XA_ATOM)) - { - g_object_unref (new_context); + if (gdk_x11_display_error_trap_pop (display) || (format != 32) || (type != XA_ATOM)) + { + g_object_unref (context); - if (data) - XFree (data); + if (data) + XFree (data); - return GDK_FILTER_REMOVE; - } + return GDK_FILTER_REMOVE; + } atoms = (Atom *)data; - for (i=0; itargets = - g_list_append (new_context->targets, - GDK_ATOM_TO_POINTER (gdk_x11_xatom_to_atom_for_display (display, - atoms[i]))); + for (i = 0; i < nitems; i++) + context->targets = + g_list_append (context->targets, + GDK_ATOM_TO_POINTER (gdk_x11_xatom_to_atom_for_display (display, + atoms[i]))); - XFree(atoms); + XFree (atoms); } else { - for (i=0; i<3; i++) - if (xevent->xclient.data.l[2+i]) - new_context->targets = - g_list_append (new_context->targets, - GDK_ATOM_TO_POINTER (gdk_x11_xatom_to_atom_for_display (display, - xevent->xclient.data.l[2+i]))); + for (i = 0; i < 3; i++) + if (xevent->xclient.data.l[2 + i]) + context->targets = + g_list_append (context->targets, + GDK_ATOM_TO_POINTER (gdk_x11_xatom_to_atom_for_display (display, + xevent->xclient.data.l[2 + i]))); } #ifdef G_ENABLE_DEBUG if (_gdk_debug_flags & GDK_DEBUG_DND) - print_target_list (new_context->targets); + print_target_list (context->targets); #endif /* G_ENABLE_DEBUG */ - xdnd_manage_source_filter (new_context, new_context->source_window, TRUE); - xdnd_read_actions (new_context); + xdnd_manage_source_filter (context, context->source_window, TRUE); + xdnd_read_actions (context_x11); event->dnd.type = GDK_DRAG_ENTER; - event->dnd.context = new_context; - gdk_event_set_device (event, gdk_drag_context_get_device (new_context)); - g_object_ref (new_context); + event->dnd.context = context; + gdk_event_set_device (event, gdk_drag_context_get_device (context)); + g_object_ref (context); - display_x11->current_dest_drag = new_context; + display_x11->current_dest_drag = context; return GDK_FILTER_TRANSLATE; } -static GdkFilterReturn +static GdkFilterReturn xdnd_leave_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xevent = (XEvent *)xev; guint32 source_window = xevent->xclient.data.l[0]; GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - GDK_NOTE (DND, - g_message ("XdndLeave: source_window: %#x", - source_window)); + return GDK_FILTER_CONTINUE; /* Not for us */ + + GDK_NOTE (DND, + g_message ("XdndLeave: source_window: %#x", + source_window)); display = GDK_WINDOW_DISPLAY (event->any.window); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); xdnd_precache_atoms (display); @@ -2998,10 +3014,10 @@ xdnd_leave_filter (GdkXEvent *xev, return GDK_FILTER_REMOVE; } -static GdkFilterReturn +static GdkFilterReturn xdnd_position_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xevent = (XEvent *)xev; guint32 source_window = xevent->xclient.data.l[0]; @@ -3009,224 +3025,209 @@ xdnd_position_filter (GdkXEvent *xev, gint16 y_root = xevent->xclient.data.l[2] & 0xffff; guint32 time = xevent->xclient.data.l[3]; Atom action = xevent->xclient.data.l[4]; - GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; + GdkDragContext *context; + GdkX11DragContext *context_x11; if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - GDK_NOTE (DND, - g_message ("XdndPosition: source_window: %#x position: (%d, %d) time: %d action: %ld", - source_window, x_root, y_root, time, action)); + return GDK_FILTER_CONTINUE; /* Not for us */ + + GDK_NOTE (DND, + g_message ("XdndPosition: source_window: %#x position: (%d, %d) time: %d action: %ld", + source_window, x_root, y_root, time, action)); display = GDK_WINDOW_DISPLAY (event->any.window); - display_x11 = GDK_DISPLAY_X11 (display); - + display_x11 = GDK_X11_DISPLAY (display); + xdnd_precache_atoms (display); - if ((display_x11->current_dest_drag != NULL) && - (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_XDND) && - (GDK_WINDOW_XID (display_x11->current_dest_drag->source_window) == source_window)) + context = display_x11->current_dest_drag; + + if ((context != NULL) && + (context->protocol == GDK_DRAG_PROTO_XDND) && + (GDK_WINDOW_XID (context->source_window) == source_window)) { + context_x11 = GDK_X11_DRAG_CONTEXT (context); + event->dnd.type = GDK_DRAG_MOTION; - event->dnd.context = display_x11->current_dest_drag; - gdk_event_set_device (event, gdk_drag_context_get_device (event->dnd.context)); - g_object_ref (display_x11->current_dest_drag); + event->dnd.context = context; + gdk_event_set_device (event, gdk_drag_context_get_device (context)); + g_object_ref (context); event->dnd.time = time; - display_x11->current_dest_drag->suggested_action = xdnd_action_from_atom (display, action); - - if (!(PRIVATE_DATA (display_x11->current_dest_drag))->xdnd_have_actions) - display_x11->current_dest_drag->actions = display_x11->current_dest_drag->suggested_action; + context->suggested_action = xdnd_action_from_atom (display, action); + + if (!context_x11->xdnd_have_actions) + context->actions = context->suggested_action; event->dnd.x_root = x_root; event->dnd.y_root = y_root; - (PRIVATE_DATA (display_x11->current_dest_drag))->last_x = x_root; - (PRIVATE_DATA (display_x11->current_dest_drag))->last_y = y_root; - + context_x11->last_x = x_root; + context_x11->last_y = y_root; + return GDK_FILTER_TRANSLATE; } return GDK_FILTER_REMOVE; } -static GdkFilterReturn +static GdkFilterReturn xdnd_drop_filter (GdkXEvent *xev, - GdkEvent *event, - gpointer data) + GdkEvent *event, + gpointer data) { XEvent *xevent = (XEvent *)xev; guint32 source_window = xevent->xclient.data.l[0]; guint32 time = xevent->xclient.data.l[2]; GdkDisplay *display; - GdkDisplayX11 *display_x11; - + GdkX11Display *display_x11; + GdkDragContext *context; + GdkX11DragContext *context_x11; + if (!event->any.window || gdk_window_get_window_type (event->any.window) == GDK_WINDOW_FOREIGN) - return GDK_FILTER_CONTINUE; /* Not for us */ - - GDK_NOTE (DND, - g_message ("XdndDrop: source_window: %#x time: %d", - source_window, time)); + return GDK_FILTER_CONTINUE; /* Not for us */ + + GDK_NOTE (DND, + g_message ("XdndDrop: source_window: %#x time: %d", + source_window, time)); display = GDK_WINDOW_DISPLAY (event->any.window); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); xdnd_precache_atoms (display); - if ((display_x11->current_dest_drag != NULL) && - (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_XDND) && - (GDK_WINDOW_XID (display_x11->current_dest_drag->source_window) == source_window)) - { - GdkDragContextPrivateX11 *private; - private = PRIVATE_DATA (display_x11->current_dest_drag); + context = display_x11->current_dest_drag; + if ((context != NULL) && + (context->protocol == GDK_DRAG_PROTO_XDND) && + (GDK_WINDOW_XID (context->source_window) == source_window)) + { + context_x11 = GDK_X11_DRAG_CONTEXT (context); event->dnd.type = GDK_DROP_START; - event->dnd.context = display_x11->current_dest_drag; - gdk_event_set_device (event, gdk_drag_context_get_device (event->dnd.context)); - g_object_ref (display_x11->current_dest_drag); + event->dnd.context = context; + gdk_event_set_device (event, gdk_drag_context_get_device (context)); + g_object_ref (context); event->dnd.time = time; - event->dnd.x_root = private->last_x; - event->dnd.y_root = private->last_y; + event->dnd.x_root = context_x11->last_x; + event->dnd.y_root = context_x11->last_y; gdk_x11_window_set_user_time (event->any.window, time); - + return GDK_FILTER_TRANSLATE; } return GDK_FILTER_REMOVE; } -/************************************************************* - ************************** Public API *********************** - *************************************************************/ void -_gdk_dnd_init (GdkDisplay *display) +_gdk_x11_display_init_dnd (GdkDisplay *display) { int i; init_byte_order (); gdk_display_add_client_message_filter ( - display, - gdk_atom_intern_static_string ("_MOTIF_DRAG_AND_DROP_MESSAGE"), - motif_dnd_filter, NULL); - + display, + gdk_atom_intern_static_string ("_MOTIF_DRAG_AND_DROP_MESSAGE"), + motif_dnd_filter, NULL); + for (i = 0; i < G_N_ELEMENTS (xdnd_filters); i++) { gdk_display_add_client_message_filter ( - display, - gdk_atom_intern_static_string (xdnd_filters[i].atom_name), - xdnd_filters[i].func, NULL); + display, + gdk_atom_intern_static_string (xdnd_filters[i].atom_name), + xdnd_filters[i].func, NULL); } -} +} /* Source side */ static void -gdk_drag_do_leave (GdkDragContext *context, guint32 time) +gdk_drag_do_leave (GdkX11DragContext *context_x11, + guint32 time) { + GdkDragContext *context = GDK_DRAG_CONTEXT (context_x11); + if (context->dest_window) { switch (context->protocol) - { - case GDK_DRAG_PROTO_MOTIF: - motif_send_leave (context, time); - break; - case GDK_DRAG_PROTO_XDND: - xdnd_send_leave (context); - break; - case GDK_DRAG_PROTO_ROOTWIN: - case GDK_DRAG_PROTO_NONE: - default: - break; - } + { + case GDK_DRAG_PROTO_MOTIF: + motif_send_leave (context_x11, time); + break; + case GDK_DRAG_PROTO_XDND: + xdnd_send_leave (context_x11); + break; + case GDK_DRAG_PROTO_ROOTWIN: + case GDK_DRAG_PROTO_NONE: + default: + break; + } g_object_unref (context->dest_window); context->dest_window = NULL; } } -/** - * gdk_drag_begin: - * @window: the source window for this drag. - * @targets: (transfer none) (element-type GdkAtom): the offered targets, - * as list of #GdkAtoms - * - * Starts a drag and creates a new drag context for it. - * - * This function is called by the drag source. - * - * Return value: (transfer full): a newly created #GdkDragContext. - **/ -GdkDragContext * -gdk_drag_begin (GdkWindow *window, - GList *targets) +GdkDragContext * +_gdk_x11_window_drag_begin (GdkWindow *window, + GdkDevice *device, + GList *targets) { - GdkDragContext *new_context; - GdkDisplay *display; - GdkDevice *device; - GdkDeviceManager *device_manager; + GdkDragContext *context; - g_return_val_if_fail (window != NULL, NULL); - g_return_val_if_fail (GDK_WINDOW_IS_X11 (window), NULL); + context = (GdkDragContext *) g_object_new (GDK_TYPE_X11_DRAG_CONTEXT, NULL); - new_context = gdk_drag_context_new (); - new_context->is_source = TRUE; - new_context->source_window = window; + context->is_source = TRUE; + context->source_window = window; g_object_ref (window); - new_context->targets = g_list_copy (targets); - precache_target_list (new_context); - - new_context->actions = 0; + context->targets = g_list_copy (targets); + precache_target_list (context); - display = gdk_window_get_display (window); - device_manager = gdk_display_get_device_manager (display); - device = gdk_device_manager_get_client_pointer (device_manager); - gdk_drag_context_set_device (new_context, device); + context->actions = 0; - return new_context; + gdk_drag_context_set_device (context, device); + + return context; } -static GdkNativeWindow -_gdk_drag_get_protocol_for_display (GdkDisplay *display, - GdkNativeWindow xid, - GdkDragProtocol *protocol, - guint *version) +GdkNativeWindow +_gdk_x11_display_get_drag_protocol (GdkDisplay *display, + GdkNativeWindow xid, + GdkDragProtocol *protocol, + guint *version) { GdkWindow *window; GdkNativeWindow retval; - g_return_val_if_fail (GDK_IS_DISPLAY (display), None); base_precache_atoms (display); - /* Check for a local drag - */ - window = gdk_window_lookup_for_display (display, xid); - if (window && - gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN) + /* Check for a local drag */ + window = gdk_x11_window_lookup_for_display (display, xid); + if (window && gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN) { if (g_object_get_data (G_OBJECT (window), "gdk-dnd-registered") != NULL) - { - *protocol = GDK_DRAG_PROTO_XDND; - *version = 5; - xdnd_precache_atoms (display); - GDK_NOTE (DND, g_message ("Entering local Xdnd window %#x\n", xid)); - return xid; - } + { + *protocol = GDK_DRAG_PROTO_XDND; + *version = 5; + xdnd_precache_atoms (display); + GDK_NOTE (DND, g_message ("Entering local Xdnd window %#x\n", xid)); + return xid; + } else if (_gdk_x11_display_is_root_window (display, (Window) xid)) - { - *protocol = GDK_DRAG_PROTO_ROOTWIN; - GDK_NOTE (DND, g_message ("Entering root window\n")); - return xid; - } + { + *protocol = GDK_DRAG_PROTO_ROOTWIN; + GDK_NOTE (DND, g_message ("Entering root window\n")); + return xid; + } } else if ((retval = xdnd_check_dest (display, xid, version))) { @@ -3244,58 +3245,17 @@ _gdk_drag_get_protocol_for_display (GdkDisplay *display, else { /* Check if this is a root window */ - gboolean rootwin = FALSE; - Atom type = None; - int format; - unsigned long nitems, after; - unsigned char *data; if (_gdk_x11_display_is_root_window (display, (Window) xid)) - rootwin = TRUE; - - gdk_error_trap_push (); - - if (!rootwin) - { - if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), xid, - gdk_x11_get_xatom_by_name_for_display (display, "ENLIGHTENMENT_DESKTOP"), - 0, 0, False, AnyPropertyType, - &type, &format, &nitems, &after, &data) == Success && - type != None) - { - XFree (data); - rootwin = TRUE; - } - } - - /* Until I find out what window manager the next one is for, - * I'm leaving it commented out. It's supported in the - * xscreensaver sources, though. - */ -#if 0 - if (!rootwin) - { - if (XGetWindowProperty (gdk_display, win, - gdk_x11_get_xatom_by_name ("__SWM_VROOT"), - 0, 0, False, AnyPropertyType, - &type, &format, &nitems, &data) && - type != None) - { - XFree (data); - rootwin = TRUE; - } - } -#endif - - gdk_error_trap_pop_ignored (); + rootwin = TRUE; if (rootwin) - { - GDK_NOTE (DND, g_message ("Entering root window\n")); - *protocol = GDK_DRAG_PROTO_ROOTWIN; - return xid; - } + { + GDK_NOTE (DND, g_message ("Entering root window\n")); + *protocol = GDK_DRAG_PROTO_ROOTWIN; + return xid; + } } *protocol = GDK_DRAG_PROTO_NONE; @@ -3303,96 +3263,53 @@ _gdk_drag_get_protocol_for_display (GdkDisplay *display, return 0; /* a.k.a. None */ } -/** - * gdk_drag_get_protocol_for_display: - * @display: the #GdkDisplay where the destination window resides - * @xid: the windowing system id of the destination window. - * @protocol: location where the supported DND protocol is returned. - * @returns: the windowing system id of the window where the drop should happen. This - * may be @xid or the id of a proxy window, or zero if @xid doesn't - * support Drag and Drop. - * - * Finds out the DND protocol supported by a window. - * - * Since: 2.2 - */ -GdkNativeWindow -gdk_drag_get_protocol_for_display (GdkDisplay *display, - GdkNativeWindow xid, - GdkDragProtocol *protocol) -{ - return _gdk_drag_get_protocol_for_display (display, xid, protocol, NULL); -} - static GdkWindowCache * -drag_context_find_window_cache (GdkDragContext *context, - GdkScreen *screen) +drag_context_find_window_cache (GdkX11DragContext *context_x11, + GdkScreen *screen) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); - GSList *tmp_list; + GSList *list; GdkWindowCache *cache; - for (tmp_list = private->window_caches; tmp_list; tmp_list = tmp_list->next) + for (list = context_x11->window_caches; list; list = list->next) { - cache = tmp_list->data; + cache = list->data; if (cache->screen == screen) - return cache; + return cache; } - cache = gdk_window_cache_new (screen); - private->window_caches = g_slist_prepend (private->window_caches, cache); - + cache = gdk_window_cache_get (screen); + context_x11->window_caches = g_slist_prepend (context_x11->window_caches, cache); + return cache; } -/** - * gdk_drag_find_window_for_screen: - * @context: a #GdkDragContext - * @drag_window: a window which may be at the pointer position, but - * should be ignored, since it is put up by the drag source as an icon. - * @screen: the screen where the destination window is sought. - * @x_root: the x position of the pointer in root coordinates. - * @y_root: the y position of the pointer in root coordinates. - * @dest_window: (out): location to store the destination window in. - * @protocol: (out): location to store the DND protocol in. - * - * Finds the destination window and DND protocol to use at the - * given pointer position. - * - * This function is called by the drag source to obtain the - * @dest_window and @protocol parameters for gdk_drag_motion(). - * - * Since: 2.2 - **/ -void -gdk_drag_find_window_for_screen (GdkDragContext *context, - GdkWindow *drag_window, - GdkScreen *screen, - gint x_root, - gint y_root, - GdkWindow **dest_window, - GdkDragProtocol *protocol) +static GdkWindow * +gdk_x11_drag_context_find_window (GdkDragContext *context, + GdkWindow *drag_window, + GdkScreen *screen, + gint x_root, + gint y_root, + GdkDragProtocol *protocol) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); GdkWindowCache *window_cache; GdkDisplay *display; Window dest; - - g_return_if_fail (context != NULL); + GdkWindow *dest_window; display = GDK_WINDOW_DISPLAY (context->source_window); - window_cache = drag_context_find_window_cache (context, screen); + window_cache = drag_context_find_window_cache (context_x11, screen); dest = get_client_window_at_coords (window_cache, - drag_window && GDK_WINDOW_IS_X11 (drag_window) ? - GDK_WINDOW_XID (drag_window) : None, - x_root, y_root); + drag_window && GDK_WINDOW_IS_X11 (drag_window) ? + GDK_WINDOW_XID (drag_window) : None, + x_root, y_root); - if (private->dest_xid != dest) + if (context_x11->dest_xid != dest) { Window recipient; - private->dest_xid = dest; + context_x11->dest_xid = dest; /* Check if new destination accepts drags, and which protocol */ @@ -3402,112 +3319,96 @@ gdk_drag_find_window_for_screen (GdkDragContext *context, * two are passed explicitely, the third implicitly through * protocol->dest_xid. */ - if ((recipient = _gdk_drag_get_protocol_for_display (display, dest, - protocol, &private->version))) - { - *dest_window = gdk_window_lookup_for_display (display, recipient); - if (*dest_window) - g_object_ref (*dest_window); - else - *dest_window = gdk_window_foreign_new_for_display (display, recipient); - } + recipient = _gdk_x11_display_get_drag_protocol (display, + dest, + protocol, + &context_x11->version); + + if (recipient != None) + { + dest_window = gdk_x11_window_lookup_for_display (display, recipient); + if (dest_window) + g_object_ref (dest_window); + else + dest_window = gdk_x11_window_foreign_new_for_display (display, recipient); + } else - *dest_window = NULL; + dest_window = NULL; } else { - *dest_window = context->dest_window; - if (*dest_window) - g_object_ref (*dest_window); + dest_window = context->dest_window; + if (dest_window) + g_object_ref (dest_window); *protocol = context->protocol; } + + return dest_window; } -/** - * gdk_drag_motion: - * @context: a #GdkDragContext. - * @dest_window: the new destination window, obtained by - * gdk_drag_find_window(). - * @protocol: the DND protocol in use, obtained by gdk_drag_find_window(). - * @x_root: the x position of the pointer in root coordinates. - * @y_root: the y position of the pointer in root coordinates. - * @suggested_action: the suggested action. - * @possible_actions: the possible actions. - * @time_: the timestamp for this operation. - * - * Updates the drag context when the pointer moves or the - * set of actions changes. - * - * This function is called by the drag source. - * - * Return value: FIXME - **/ -gboolean -gdk_drag_motion (GdkDragContext *context, - GdkWindow *dest_window, - GdkDragProtocol protocol, - gint x_root, - gint y_root, - GdkDragAction suggested_action, - GdkDragAction possible_actions, - guint32 time) +static gboolean +gdk_x11_drag_context_drag_motion (GdkDragContext *context, + GdkWindow *dest_window, + GdkDragProtocol protocol, + gint x_root, + gint y_root, + GdkDragAction suggested_action, + GdkDragAction possible_actions, + guint32 time) { - GdkDragContextPrivateX11 *private = PRIVATE_DATA (context); + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); - g_return_val_if_fail (context != NULL, FALSE); - g_return_val_if_fail (dest_window == NULL || GDK_WINDOW_IS_X11 (dest_window), FALSE); - - private->old_actions = context->actions; + context_x11->old_actions = context->actions; context->actions = possible_actions; - - if (private->old_actions != possible_actions) - private->xdnd_actions_set = FALSE; - - if (protocol == GDK_DRAG_PROTO_XDND && private->version == 0) + + if (context_x11->old_actions != possible_actions) + context_x11->xdnd_actions_set = FALSE; + + if (protocol == GDK_DRAG_PROTO_XDND && context_x11->version == 0) { /* This ugly hack is necessary since GTK+ doesn't know about - * the XDND protocol version, and in particular doesn't know - * that gdk_drag_find_window_for_screen() has the side-effect - * of setting private->version, and therefore sometimes call - * gdk_drag_motion() without a prior call to + * the XDND protocol version, and in particular doesn't know + * that gdk_drag_find_window_for_screen() has the side-effect + * of setting context_x11->version, and therefore sometimes call + * gdk_drag_motion() without a prior call to * gdk_drag_find_window_for_screen(). This happens, e.g. * when GTK+ is proxying DND events to embedded windows. - */ + */ if (dest_window) - { - GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window); - - xdnd_check_dest (display, - GDK_WINDOW_XID (dest_window), - &private->version); - } + { + GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window); + + xdnd_check_dest (display, + GDK_WINDOW_XID (dest_window), + &context_x11->version); + } } /* When we have a Xdnd target, make sure our XdndActionList * matches the current actions; */ - if (protocol == GDK_DRAG_PROTO_XDND && !private->xdnd_actions_set) + if (protocol == GDK_DRAG_PROTO_XDND && !context_x11->xdnd_actions_set) { if (dest_window) - { - if (gdk_window_get_window_type (dest_window) == GDK_WINDOW_FOREIGN) - xdnd_set_actions (context); - else if (context->dest_window == dest_window) - { - GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window); - GdkDragContext *dest_context; - - dest_context = gdk_drag_context_find (display, FALSE, - GDK_WINDOW_XID (context->source_window), - GDK_WINDOW_XID (dest_window)); + { + if (gdk_window_get_window_type (dest_window) == GDK_WINDOW_FOREIGN) + xdnd_set_actions (context_x11); + else if (context->dest_window == dest_window) + { + GdkDisplay *display = GDK_WINDOW_DISPLAY (dest_window); + GdkDragContext *dest_context; - if (dest_context) - { - dest_context->actions = context->actions; - PRIVATE_DATA (dest_context)->xdnd_have_actions = TRUE; - } - } - } + dest_context = gdk_drag_context_find (display, FALSE, + GDK_WINDOW_XID (context->source_window), + GDK_WINDOW_XID (dest_window)); + + if (dest_context) + { + dest_context->actions = context->actions; + GDK_X11_DRAG_CONTEXT (dest_context)->xdnd_have_actions = TRUE; + } + } + } } if (context->dest_window != dest_window) @@ -3515,46 +3416,46 @@ gdk_drag_motion (GdkDragContext *context, GdkEvent *temp_event; /* Send a leave to the last destination */ - gdk_drag_do_leave (context, time); - private->drag_status = GDK_DRAG_STATUS_DRAG; + gdk_drag_do_leave (context_x11, time); + context_x11->drag_status = GDK_DRAG_STATUS_DRAG; /* Check if new destination accepts drags, and which protocol */ if (dest_window) - { - context->dest_window = dest_window; - private->drop_xid = private->dest_xid; - g_object_ref (context->dest_window); - context->protocol = protocol; + { + context->dest_window = dest_window; + context_x11->drop_xid = context_x11->dest_xid; + g_object_ref (context->dest_window); + context->protocol = protocol; - switch (protocol) - { - case GDK_DRAG_PROTO_MOTIF: - motif_send_enter (context, time); - break; + switch (protocol) + { + case GDK_DRAG_PROTO_MOTIF: + motif_send_enter (context_x11, time); + break; - case GDK_DRAG_PROTO_XDND: - xdnd_send_enter (context); - break; + case GDK_DRAG_PROTO_XDND: + xdnd_send_enter (context_x11); + break; - case GDK_DRAG_PROTO_ROOTWIN: - case GDK_DRAG_PROTO_NONE: - default: - break; - } - private->old_action = suggested_action; - context->suggested_action = suggested_action; - private->old_actions = possible_actions; - } + case GDK_DRAG_PROTO_ROOTWIN: + case GDK_DRAG_PROTO_NONE: + default: + break; + } + context_x11->old_action = suggested_action; + context->suggested_action = suggested_action; + context_x11->old_actions = possible_actions; + } else - { - context->dest_window = NULL; - private->drop_xid = None; - context->action = 0; - } + { + context->dest_window = NULL; + context_x11->drop_xid = None; + context->action = 0; + } /* Push a status event, to let the client know that - * the drag changed + * the drag changed */ temp_event = gdk_event_new (GDK_DRAG_STATUS); temp_event->dnd.window = g_object_ref (context->source_window); @@ -3572,234 +3473,202 @@ gdk_drag_motion (GdkDragContext *context, } else { - private->old_action = context->suggested_action; + context_x11->old_action = context->suggested_action; context->suggested_action = suggested_action; } /* Send a drag-motion event */ - private->last_x = x_root; - private->last_y = y_root; - + context_x11->last_x = x_root; + context_x11->last_y = y_root; + if (context->dest_window) { - if (private->drag_status == GDK_DRAG_STATUS_DRAG) - { - switch (context->protocol) - { - case GDK_DRAG_PROTO_MOTIF: - motif_send_motion (context, x_root, y_root, suggested_action, time); - break; - - case GDK_DRAG_PROTO_XDND: - xdnd_send_motion (context, x_root, y_root, suggested_action, time); - break; + if (context_x11->drag_status == GDK_DRAG_STATUS_DRAG) + { + switch (context->protocol) + { + case GDK_DRAG_PROTO_MOTIF: + motif_send_motion (context_x11, x_root, y_root, suggested_action, time); + break; - case GDK_DRAG_PROTO_ROOTWIN: - { - GdkEvent *temp_event; - /* GTK+ traditionally has used application/x-rootwin-drop, - * but the XDND spec specifies x-rootwindow-drop. - */ - GdkAtom target1 = gdk_atom_intern_static_string ("application/x-rootwindow-drop"); - GdkAtom target2 = gdk_atom_intern_static_string ("application/x-rootwin-drop"); + case GDK_DRAG_PROTO_XDND: + xdnd_send_motion (context_x11, x_root, y_root, suggested_action, time); + break; - if (g_list_find (context->targets, - GDK_ATOM_TO_POINTER (target1)) || - g_list_find (context->targets, - GDK_ATOM_TO_POINTER (target2))) - context->action = context->suggested_action; - else - context->action = 0; + case GDK_DRAG_PROTO_ROOTWIN: + { + GdkEvent *temp_event; + /* GTK+ traditionally has used application/x-rootwin-drop, + * but the XDND spec specifies x-rootwindow-drop. + */ + GdkAtom target1 = gdk_atom_intern_static_string ("application/x-rootwindow-drop"); + GdkAtom target2 = gdk_atom_intern_static_string ("application/x-rootwin-drop"); + + if (g_list_find (context->targets, + GDK_ATOM_TO_POINTER (target1)) || + g_list_find (context->targets, + GDK_ATOM_TO_POINTER (target2))) + context->action = context->suggested_action; + else + context->action = 0; temp_event = gdk_event_new (GDK_DRAG_STATUS); - temp_event->dnd.window = g_object_ref (context->source_window); - temp_event->dnd.send_event = FALSE; - temp_event->dnd.context = g_object_ref (context); - temp_event->dnd.time = time; + temp_event->dnd.window = g_object_ref (context->source_window); + temp_event->dnd.send_event = FALSE; + temp_event->dnd.context = g_object_ref (context); + temp_event->dnd.time = time; gdk_event_set_device (temp_event, gdk_drag_context_get_device (context)); - gdk_event_put (temp_event); + gdk_event_put (temp_event); gdk_event_free (temp_event); - } - break; - case GDK_DRAG_PROTO_NONE: - g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_motion()"); - break; - default: - break; - } - } + } + break; + case GDK_DRAG_PROTO_NONE: + g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_motion()"); + break; + default: + break; + } + } else - return TRUE; + return TRUE; } return FALSE; } -/** - * gdk_drag_drop: - * @context: a #GdkDragContext. - * @time_: the timestamp for this operation. - * - * Drops on the current destination. - * - * This function is called by the drag source. - **/ -void -gdk_drag_drop (GdkDragContext *context, - guint32 time) +static void +gdk_x11_drag_context_drag_abort (GdkDragContext *context, + guint32 time) { - g_return_if_fail (context != NULL); + gdk_drag_do_leave (GDK_X11_DRAG_CONTEXT (context), time); +} + +static void +gdk_x11_drag_context_drag_drop (GdkDragContext *context, + guint32 time) +{ + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); if (context->dest_window) { switch (context->protocol) - { - case GDK_DRAG_PROTO_MOTIF: - motif_send_leave (context, time); - motif_send_drop (context, time); - break; - - case GDK_DRAG_PROTO_XDND: - xdnd_send_drop (context, time); - break; + { + case GDK_DRAG_PROTO_MOTIF: + motif_send_leave (context_x11, time); + motif_send_drop (context_x11, time); + break; - case GDK_DRAG_PROTO_ROOTWIN: - g_warning ("Drops for GDK_DRAG_PROTO_ROOTWIN must be handled internally"); - break; - case GDK_DRAG_PROTO_NONE: - g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_drop()"); - break; - default: - break; - } + case GDK_DRAG_PROTO_XDND: + xdnd_send_drop (context_x11, time); + break; + + case GDK_DRAG_PROTO_ROOTWIN: + g_warning ("Drops for GDK_DRAG_PROTO_ROOTWIN must be handled internally"); + break; + case GDK_DRAG_PROTO_NONE: + g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_drop()"); + break; + default: + break; + } } } -/** - * gdk_drag_abort: - * @context: a #GdkDragContext. - * @time_: the timestamp for this operation. - * - * Aborts a drag without dropping. - * - * This function is called by the drag source. - **/ -void -gdk_drag_abort (GdkDragContext *context, - guint32 time) -{ - g_return_if_fail (context != NULL); - - gdk_drag_do_leave (context, time); -} - /* Destination side */ -/** - * gdk_drag_status: - * @context: a #GdkDragContext. - * @action: the selected action which will be taken when a drop happens, - * or 0 to indicate that a drop will not be accepted. - * @time_: the timestamp for this operation. - * - * Selects one of the actions offered by the drag source. - * - * This function is called by the drag destination in response to - * gdk_drag_motion() called by the drag source. - **/ -void -gdk_drag_status (GdkDragContext *context, - GdkDragAction action, - guint32 time) +static void +gdk_x11_drag_context_drag_status (GdkDragContext *context, + GdkDragAction action, + guint32 time_) { - GdkDragContextPrivateX11 *private; + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); XEvent xev; GdkDisplay *display; - g_return_if_fail (context != NULL); - - private = PRIVATE_DATA (context); display = GDK_WINDOW_DISPLAY (context->source_window); - + context->action = action; if (context->protocol == GDK_DRAG_PROTO_MOTIF) { gboolean need_coords = FALSE; - + xev.xclient.type = ClientMessage; - xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, - "_MOTIF_DRAG_AND_DROP_MESSAGE"); + xev.xclient.message_type = + gdk_x11_get_xatom_by_name_for_display (display, + "_MOTIF_DRAG_AND_DROP_MESSAGE"); xev.xclient.format = 8; xev.xclient.window = GDK_WINDOW_XID (context->source_window); - if (private->drag_status == GDK_DRAG_STATUS_ACTION_WAIT) - { - MOTIF_XCLIENT_BYTE (&xev, 0) = XmOPERATION_CHANGED | 0x80; - } + if (context_x11->drag_status == GDK_DRAG_STATUS_ACTION_WAIT) + { + MOTIF_XCLIENT_BYTE (&xev, 0) = XmOPERATION_CHANGED | 0x80; + } else - { - if ((action != 0) != (private->old_action != 0)) - { - if (action != 0) - { - MOTIF_XCLIENT_BYTE (&xev, 0) = XmDROP_SITE_ENTER | 0x80; - need_coords = TRUE; - } - else - MOTIF_XCLIENT_BYTE (&xev, 0) = XmDROP_SITE_LEAVE | 0x80; - } - else - { - MOTIF_XCLIENT_BYTE (&xev, 0) = XmDRAG_MOTION | 0x80; - need_coords = TRUE; - } - } + { + if ((action != 0) != (context_x11->old_action != 0)) + { + if (action != 0) + { + MOTIF_XCLIENT_BYTE (&xev, 0) = XmDROP_SITE_ENTER | 0x80; + need_coords = TRUE; + } + else + { + MOTIF_XCLIENT_BYTE (&xev, 0) = XmDROP_SITE_LEAVE | 0x80; + } + } + else + { + MOTIF_XCLIENT_BYTE (&xev, 0) = XmDRAG_MOTION | 0x80; + need_coords = TRUE; + } + } MOTIF_XCLIENT_BYTE (&xev, 1) = local_byte_order; switch (action) - { - case GDK_ACTION_MOVE: - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_MOVE; - break; - case GDK_ACTION_COPY: - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_COPY; - break; - case GDK_ACTION_LINK: - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_LINK; - break; - default: - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_NOOP; - break; - } + { + case GDK_ACTION_MOVE: + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_MOVE; + break; + case GDK_ACTION_COPY: + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_COPY; + break; + case GDK_ACTION_LINK: + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_LINK; + break; + default: + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_NOOP; + break; + } if (action) - MOTIF_XCLIENT_SHORT (&xev, 1) |= (XmDROP_SITE_VALID << 4); + MOTIF_XCLIENT_SHORT (&xev, 1) |= (XmDROP_SITE_VALID << 4); else - MOTIF_XCLIENT_SHORT (&xev, 1) |= (XmNO_DROP_SITE << 4); + MOTIF_XCLIENT_SHORT (&xev, 1) |= (XmNO_DROP_SITE << 4); + + MOTIF_XCLIENT_LONG (&xev, 1) = time_; - MOTIF_XCLIENT_LONG (&xev, 1) = time; - if (need_coords) - { - MOTIF_XCLIENT_SHORT (&xev, 4) = private->last_x; - MOTIF_XCLIENT_SHORT (&xev, 5) = private->last_y; - } + { + MOTIF_XCLIENT_SHORT (&xev, 4) = context_x11->last_x; + MOTIF_XCLIENT_SHORT (&xev, 5) = context_x11->last_y; + } else - MOTIF_XCLIENT_LONG (&xev, 2) = 0; - + MOTIF_XCLIENT_LONG (&xev, 2) = 0; + MOTIF_XCLIENT_LONG (&xev, 3) = 0; MOTIF_XCLIENT_LONG (&xev, 4) = 0; - if (!_gdk_send_xevent (display, - GDK_WINDOW_XID (context->source_window), - FALSE, 0, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->source_window))); + if (!_gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->source_window), + FALSE, 0, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->source_window))); } else if (context->protocol == GDK_DRAG_PROTO_XDND) { @@ -3813,39 +3682,22 @@ gdk_drag_status (GdkDragContext *context, xev.xclient.data.l[2] = 0; xev.xclient.data.l[3] = 0; xev.xclient.data.l[4] = xdnd_action_to_atom (display, action); - - if (!xdnd_send_xevent (context, context->source_window, - FALSE, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->source_window))); + if (!xdnd_send_xevent (context_x11, context->source_window, FALSE, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->source_window))); } - private->old_action = action; + context_x11->old_action = action; } -/** - * gdk_drop_reply: - * @context: a #GdkDragContext. - * @ok: %TRUE if the drop is accepted. - * @time_: the timestamp for this operation. - * - * Accepts or rejects a drop. - * - * This function is called by the drag destination in response - * to a drop initiated by the drag source. - **/ -void -gdk_drop_reply (GdkDragContext *context, - gboolean ok, - guint32 time) +static void +gdk_x11_drag_context_drop_reply (GdkDragContext *context, + gboolean accepted, + guint32 time_) { - GdkDragContextPrivateX11 *private; + GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context); - g_return_if_fail (context != NULL); - - private = PRIVATE_DATA (context); - if (context->protocol == GDK_DRAG_PROTO_MOTIF) { GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); @@ -3853,50 +3705,38 @@ gdk_drop_reply (GdkDragContext *context, xev.xclient.type = ClientMessage; xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, - "_MOTIF_DRAG_AND_DROP_MESSAGE"); + "_MOTIF_DRAG_AND_DROP_MESSAGE"); xev.xclient.format = 8; MOTIF_XCLIENT_BYTE (&xev, 0) = XmDROP_START | 0x80; MOTIF_XCLIENT_BYTE (&xev, 1) = local_byte_order; - if (ok) - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_COPY | - (XmDROP_SITE_VALID << 4) | - (XmDROP_NOOP << 8) | - (XmDROP << 12); + if (accepted) + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_COPY | + (XmDROP_SITE_VALID << 4) | + (XmDROP_NOOP << 8) | + (XmDROP << 12); else - MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_NOOP | - (XmNO_DROP_SITE << 4) | - (XmDROP_NOOP << 8) | - (XmDROP_CANCEL << 12); - MOTIF_XCLIENT_SHORT (&xev, 2) = private->last_x; - MOTIF_XCLIENT_SHORT (&xev, 3) = private->last_y; + MOTIF_XCLIENT_SHORT (&xev, 1) = XmDROP_NOOP | + (XmNO_DROP_SITE << 4) | + (XmDROP_NOOP << 8) | + (XmDROP_CANCEL << 12); + MOTIF_XCLIENT_SHORT (&xev, 2) = context_x11->last_x; + MOTIF_XCLIENT_SHORT (&xev, 3) = context_x11->last_y; MOTIF_XCLIENT_LONG (&xev, 2) = 0; MOTIF_XCLIENT_LONG (&xev, 3) = 0; MOTIF_XCLIENT_LONG (&xev, 4) = 0; - - _gdk_send_xevent (display, - GDK_WINDOW_XID (context->source_window), - FALSE, 0, &xev); + + _gdk_x11_display_send_xevent (display, + GDK_WINDOW_XID (context->source_window), + FALSE, 0, &xev); } } -/** - * gdk_drop_finish: - * @context: a #GtkDragContext. - * @success: %TRUE if the data was successfully received. - * @time_: the timestamp for this operation. - * - * Ends the drag operation after a drop. - * - * This function is called by the drag destination. - **/ -void -gdk_drop_finish (GdkDragContext *context, - gboolean success, - guint32 time) +static void +gdk_x11_drag_context_drop_finish (GdkDragContext *context, + gboolean success, + guint32 time) { - g_return_if_fail (context != NULL); - if (context->protocol == GDK_DRAG_PROTO_XDND) { GdkDisplay *display = GDK_WINDOW_DISPLAY (context->source_window); @@ -3906,39 +3746,31 @@ gdk_drop_finish (GdkDragContext *context, xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndFinished"); xev.xclient.format = 32; xev.xclient.window = GDK_WINDOW_XID (context->source_window); - + xev.xclient.data.l[0] = GDK_WINDOW_XID (context->dest_window); if (success) - { - xev.xclient.data.l[1] = 1; - xev.xclient.data.l[2] = xdnd_action_to_atom (display, - context->action); - } + { + xev.xclient.data.l[1] = 1; + xev.xclient.data.l[2] = xdnd_action_to_atom (display, + context->action); + } else - { - xev.xclient.data.l[1] = 0; - xev.xclient.data.l[2] = None; - } + { + xev.xclient.data.l[1] = 0; + xev.xclient.data.l[2] = None; + } xev.xclient.data.l[3] = 0; xev.xclient.data.l[4] = 0; - if (!xdnd_send_xevent (context, context->source_window, - FALSE, &xev)) - GDK_NOTE (DND, - g_message ("Send event to %lx failed", - GDK_WINDOW_XID (context->source_window))); + if (!xdnd_send_xevent (GDK_X11_DRAG_CONTEXT (context), context->source_window, FALSE, &xev)) + GDK_NOTE (DND, + g_message ("Send event to %lx failed", + GDK_WINDOW_XID (context->source_window))); } } - -/** - * gdk_window_register_dnd: - * @window: a #GdkWindow. - * - * Registers a window as a potential drop destination. - */ -void -gdk_window_register_dnd (GdkWindow *window) +void +_gdk_x11_window_register_dnd (GdkWindow *window) { static const gulong xdnd_version = 5; MotifDragReceiverInfo info; @@ -3956,11 +3788,10 @@ gdk_window_register_dnd (GdkWindow *window) return; else g_object_set_data (G_OBJECT (window), "gdk-dnd-registered", GINT_TO_POINTER (TRUE)); - - /* Set Motif drag receiver information property */ + /* Set Motif drag receiver information property */ motif_drag_receiver_info_atom = gdk_x11_get_xatom_by_name_for_display (display, - "_MOTIF_DRAG_RECEIVER_INFO"); + "_MOTIF_DRAG_RECEIVER_INFO"); /* initialize to zero to avoid writing uninitialized data to socket */ memset(&info, 0, sizeof(info)); info.byte_order = local_byte_order; @@ -3970,66 +3801,38 @@ gdk_window_register_dnd (GdkWindow *window) info.num_drop_sites = 0; info.total_size = sizeof(info); - XChangeProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), - motif_drag_receiver_info_atom, - motif_drag_receiver_info_atom, - 8, PropModeReplace, - (guchar *)&info, - sizeof (info)); + XChangeProperty (GDK_DISPLAY_XDISPLAY (display), + GDK_WINDOW_XID (window), + motif_drag_receiver_info_atom, + motif_drag_receiver_info_atom, + 8, PropModeReplace, + (guchar *)&info, + sizeof (info)); /* Set XdndAware */ /* The property needs to be of type XA_ATOM, not XA_INTEGER. Blech */ XChangeProperty (GDK_DISPLAY_XDISPLAY (display), - GDK_WINDOW_XID (window), - gdk_x11_get_xatom_by_name_for_display (display, "XdndAware"), - XA_ATOM, 32, PropModeReplace, - (guchar *)&xdnd_version, 1); + GDK_WINDOW_XID (window), + gdk_x11_get_xatom_by_name_for_display (display, "XdndAware"), + XA_ATOM, 32, PropModeReplace, + (guchar *)&xdnd_version, 1); } -/** - * gdk_drag_get_selection: - * @context: a #GdkDragContext. - * - * Returns the selection atom for the current source window. - * - * Return value: the selection atom. - **/ -GdkAtom -gdk_drag_get_selection (GdkDragContext *context) +static GdkAtom +gdk_x11_drag_context_get_selection (GdkDragContext *context) { - g_return_val_if_fail (context != NULL, GDK_NONE); - if (context->protocol == GDK_DRAG_PROTO_MOTIF) return gdk_x11_xatom_to_atom_for_display (GDK_WINDOW_DISPLAY (context->source_window), - (PRIVATE_DATA (context))->motif_selection); + (GDK_X11_DRAG_CONTEXT (context))->motif_selection); else if (context->protocol == GDK_DRAG_PROTO_XDND) return gdk_atom_intern_static_string ("XdndSelection"); else return GDK_NONE; } -/** - * gdk_drag_drop_succeeded: - * @context: a #GdkDragContext - * - * Returns whether the dropped data has been successfully - * transferred. This function is intended to be used while - * handling a %GDK_DROP_FINISHED event, its return value is - * meaningless at other times. - * - * Return value: %TRUE if the drop was successful. - * - * Since: 2.6 - **/ -gboolean -gdk_drag_drop_succeeded (GdkDragContext *context) +static gboolean +gdk_x11_drag_context_drop_status (GdkDragContext *context) { - GdkDragContextPrivateX11 *private; - - g_return_val_if_fail (context != NULL, FALSE); - - private = PRIVATE_DATA (context); - - return !private->drop_failed; + return ! GDK_X11_DRAG_CONTEXT (context)->drop_failed; } diff --git a/gdk/x11/gdkeventsource.c b/gdk/x11/gdkeventsource.c index 5f0c3a79e6..892e68662a 100644 --- a/gdk/x11/gdkeventsource.c +++ b/gdk/x11/gdkeventsource.c @@ -22,7 +22,8 @@ #include "gdkeventsource.h" #include "gdkinternals.h" -#include "gdkx.h" +#include "gdkwindow-x11.h" +#include "gdkprivate-x11.h" static gboolean gdk_event_source_prepare (GSource *source, @@ -55,14 +56,17 @@ static GSourceFuncs event_funcs = { static GList *event_sources = NULL; static gint -gdk_event_apply_filters (XEvent *xevent, - GdkEvent *event, - GList **filters) +gdk_event_apply_filters (XEvent *xevent, + GdkEvent *event, + GdkWindow *window) { GList *tmp_list; GdkFilterReturn result; - tmp_list = *filters; + if (window == NULL) + tmp_list = _gdk_default_filters; + else + tmp_list = window->filters; while (tmp_list) { @@ -78,21 +82,15 @@ gdk_event_apply_filters (XEvent *xevent, filter->ref_count++; result = filter->function (xevent, event, filter->data); - /* get the next node after running the function since the - function may add or remove a next node */ - node = tmp_list; - tmp_list = tmp_list->next; + /* Protect against unreffing the filter mutating the list */ + node = tmp_list->next; - filter->ref_count--; - if (filter->ref_count == 0) - { - *filters = g_list_remove_link (*filters, node); - g_list_free_1 (node); - g_free (filter); - } + _gdk_event_filter_unref (window, filter); + + tmp_list = node; if (result != GDK_FILTER_CONTINUE) - return result; + return result; } return GDK_FILTER_CONTINUE; @@ -104,8 +102,8 @@ gdk_event_source_get_filter_window (GdkEventSource *event_source, { GdkWindow *window; - window = gdk_window_lookup_for_display (event_source->display, - xevent->xany.window); + window = gdk_x11_window_lookup_for_display (event_source->display, + xevent->xany.window); if (window && !GDK_IS_WINDOW (window)) window = NULL; @@ -162,8 +160,7 @@ gdk_event_source_translate_event (GdkEventSource *event_source, { /* Apply global filters */ - result = gdk_event_apply_filters (xevent, event, - &_gdk_default_filters); + result = gdk_event_apply_filters (xevent, event, NULL); if (result == GDK_FILTER_REMOVE) { @@ -186,7 +183,7 @@ gdk_event_source_translate_event (GdkEventSource *event_source, if (filter_window->filters) { result = gdk_event_apply_filters (xevent, event, - &filter_window->filters); + filter_window); if (result == GDK_FILTER_REMOVE) { @@ -195,7 +192,7 @@ gdk_event_source_translate_event (GdkEventSource *event_source, } else if (result == GDK_FILTER_TRANSLATE) return event; - } + } } gdk_event_free (event); @@ -206,9 +203,9 @@ gdk_event_source_translate_event (GdkEventSource *event_source, GdkEventTranslator *translator = list->data; list = list->next; - event = gdk_event_translator_translate (translator, - event_source->display, - xevent); + event = _gdk_x11_event_translator_translate (translator, + event_source->display, + xevent); } if (event && @@ -240,7 +237,7 @@ gdk_event_source_prepare (GSource *source, *timeout = -1; retval = (_gdk_event_queue_find_first (display) != NULL || - gdk_check_xpending (display)); + gdk_check_xpending (display)); GDK_THREADS_LEAVE (); @@ -257,7 +254,7 @@ gdk_event_source_check (GSource *source) if (event_source->event_poll_fd.revents & G_IO_IN) retval = (_gdk_event_queue_find_first (event_source->display) != NULL || - gdk_check_xpending (event_source->display)); + gdk_check_xpending (event_source->display)); else retval = FALSE; @@ -267,15 +264,15 @@ gdk_event_source_check (GSource *source) } void -_gdk_events_queue (GdkDisplay *display) +_gdk_x11_display_queue_events (GdkDisplay *display) { GdkEvent *event; XEvent xevent; Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); GdkEventSource *event_source; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); event_source = (GdkEventSource *) display_x11->event_source; while (!_gdk_event_queue_find_first (display) && XPending (xdisplay)) @@ -283,14 +280,14 @@ _gdk_events_queue (GdkDisplay *display) XNextEvent (xdisplay, &xevent); switch (xevent.type) - { - case KeyPress: - case KeyRelease: - break; - default: - if (XFilterEvent (&xevent, None)) - continue; - } + { + case KeyPress: + case KeyRelease: + break; + default: + if (XFilterEvent (&xevent, None)) + continue; + } event = gdk_event_source_translate_event (event_source, &xevent); @@ -340,23 +337,23 @@ gdk_event_source_finalize (GSource *source) } GSource * -gdk_event_source_new (GdkDisplay *display) +gdk_x11_event_source_new (GdkDisplay *display) { GSource *source; GdkEventSource *event_source; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; int connection_number; char *name; source = g_source_new (&event_funcs, sizeof (GdkEventSource)); name = g_strdup_printf ("GDK X11 Event source (%s)", - gdk_display_get_name (display)); + gdk_display_get_name (display)); g_source_set_name (source, name); g_free (name); event_source = (GdkEventSource *) source; event_source->display = display; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); connection_number = ConnectionNumber (display_x11->xdisplay); event_source->event_poll_fd.fd = connection_number; @@ -373,8 +370,8 @@ gdk_event_source_new (GdkDisplay *display) } void -gdk_event_source_add_translator (GdkEventSource *source, - GdkEventTranslator *translator) +gdk_x11_event_source_add_translator (GdkEventSource *source, + GdkEventTranslator *translator) { g_return_if_fail (GDK_IS_EVENT_TRANSLATOR (translator)); @@ -382,10 +379,10 @@ gdk_event_source_add_translator (GdkEventSource *source, } void -gdk_event_source_select_events (GdkEventSource *source, - Window window, - GdkEventMask event_mask, - unsigned int extra_x_mask) +gdk_x11_event_source_select_events (GdkEventSource *source, + Window window, + GdkEventMask event_mask, + unsigned int extra_x_mask) { unsigned int xmask = extra_x_mask; GList *list; @@ -398,56 +395,23 @@ gdk_event_source_select_events (GdkEventSource *source, GdkEventTranslator *translator = list->data; GdkEventMask translator_mask, mask; - translator_mask = gdk_event_translator_get_handled_events (translator); + translator_mask = _gdk_x11_event_translator_get_handled_events (translator); mask = event_mask & translator_mask; if (mask != 0) { - gdk_event_translator_select_window_events (translator, window, mask); + _gdk_x11_event_translator_select_window_events (translator, window, mask); event_mask &= ~mask; } list = list->next; } - for (i = 0; i < _gdk_nenvent_masks; i++) + for (i = 0; i < _gdk_x11_event_mask_table_size; i++) { if (event_mask & (1 << (i + 1))) - xmask |= _gdk_event_mask_table[i]; + xmask |= _gdk_x11_event_mask_table[i]; } XSelectInput (GDK_DISPLAY_XDISPLAY (source->display), window, xmask); } - -/** - * gdk_events_pending: - * - * Checks if any events are ready to be processed for any display. - * - * Return value: %TRUE if any events are pending. - **/ -gboolean -gdk_events_pending (void) -{ - GList *tmp_list; - - for (tmp_list = event_sources; tmp_list; tmp_list = tmp_list->next) - { - GdkEventSource *tmp_source = tmp_list->data; - GdkDisplay *display = tmp_source->display; - - if (_gdk_event_queue_find_first (display)) - return TRUE; - } - - for (tmp_list = event_sources; tmp_list; tmp_list = tmp_list->next) - { - GdkEventSource *tmp_source = tmp_list->data; - GdkDisplay *display = tmp_source->display; - - if (gdk_check_xpending (display)) - return TRUE; - } - - return FALSE; -} diff --git a/gdk/x11/gdkeventsource.h b/gdk/x11/gdkeventsource.h index 4fc0dbe7b4..3bc5fc40ec 100644 --- a/gdk/x11/gdkeventsource.h +++ b/gdk/x11/gdkeventsource.h @@ -21,24 +21,23 @@ #define __GDK_EVENT_SOURCE_H__ #include "gdkeventtranslator.h" -#include "gdkprivate-x11.h" G_BEGIN_DECLS typedef struct _GdkEventSource GdkEventSource; G_GNUC_INTERNAL -GSource * gdk_event_source_new (GdkDisplay *display); +GSource * gdk_x11_event_source_new (GdkDisplay *display); G_GNUC_INTERNAL -void gdk_event_source_add_translator (GdkEventSource *source, - GdkEventTranslator *translator); +void gdk_x11_event_source_add_translator (GdkEventSource *source, + GdkEventTranslator *translator); G_GNUC_INTERNAL -void gdk_event_source_select_events (GdkEventSource *source, - Window window, - GdkEventMask event_mask, - unsigned int extra_x_mask); +void gdk_x11_event_source_select_events (GdkEventSource *source, + Window window, + GdkEventMask event_mask, + unsigned int extra_x_mask); G_END_DECLS diff --git a/gdk/x11/gdkeventtranslator.c b/gdk/x11/gdkeventtranslator.c index b4a285a962..bbd79dcae2 100644 --- a/gdk/x11/gdkeventtranslator.c +++ b/gdk/x11/gdkeventtranslator.c @@ -23,19 +23,19 @@ typedef GdkEventTranslatorIface GdkEventTranslatorInterface; -G_DEFINE_INTERFACE (GdkEventTranslator, gdk_event_translator, G_TYPE_OBJECT); +G_DEFINE_INTERFACE (GdkEventTranslator, _gdk_x11_event_translator, G_TYPE_OBJECT); static void -gdk_event_translator_default_init (GdkEventTranslatorInterface *iface) +_gdk_x11_event_translator_default_init (GdkEventTranslatorInterface *iface) { } GdkEvent * -gdk_event_translator_translate (GdkEventTranslator *translator, - GdkDisplay *display, - XEvent *xevent) +_gdk_x11_event_translator_translate (GdkEventTranslator *translator, + GdkDisplay *display, + XEvent *xevent) { GdkEventTranslatorIface *iface; GdkEvent *event; @@ -59,7 +59,7 @@ gdk_event_translator_translate (GdkEventTranslator *translator, } GdkEventMask -gdk_event_translator_get_handled_events (GdkEventTranslator *translator) +_gdk_x11_event_translator_get_handled_events (GdkEventTranslator *translator) { GdkEventTranslatorIface *iface; @@ -74,9 +74,9 @@ gdk_event_translator_get_handled_events (GdkEventTranslator *translator) } void -gdk_event_translator_select_window_events (GdkEventTranslator *translator, - Window window, - GdkEventMask event_mask) +_gdk_x11_event_translator_select_window_events (GdkEventTranslator *translator, + Window window, + GdkEventMask event_mask) { GdkEventTranslatorIface *iface; diff --git a/gdk/x11/gdkeventtranslator.h b/gdk/x11/gdkeventtranslator.h index 62c99e3f5d..933ad66f42 100644 --- a/gdk/x11/gdkeventtranslator.h +++ b/gdk/x11/gdkeventtranslator.h @@ -20,13 +20,14 @@ #ifndef __GDK_EVENT_TRANSLATOR_H__ #define __GDK_EVENT_TRANSLATOR_H__ -#include -#include -#include "gdkprivate-x11.h" +#include "gdktypes.h" +#include "gdkdisplay.h" + +#include G_BEGIN_DECLS -#define GDK_TYPE_EVENT_TRANSLATOR (gdk_event_translator_get_type ()) +#define GDK_TYPE_EVENT_TRANSLATOR (_gdk_x11_event_translator_get_type ()) #define GDK_EVENT_TRANSLATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_EVENT_TRANSLATOR, GdkEventTranslator)) #define GDK_IS_EVENT_TRANSLATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_EVENT_TRANSLATOR)) #define GDK_EVENT_TRANSLATOR_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GDK_TYPE_EVENT_TRANSLATOR, GdkEventTranslatorIface)) @@ -50,15 +51,15 @@ struct _GdkEventTranslatorIface GdkEventMask event_mask); }; -GType gdk_event_translator_get_type (void) G_GNUC_CONST; +GType _gdk_x11_event_translator_get_type (void) G_GNUC_CONST; -GdkEvent * gdk_event_translator_translate (GdkEventTranslator *translator, - GdkDisplay *display, - XEvent *xevent); -GdkEventMask gdk_event_translator_get_handled_events (GdkEventTranslator *translator); -void gdk_event_translator_select_window_events (GdkEventTranslator *translator, - Window window, - GdkEventMask event_mask); +GdkEvent * _gdk_x11_event_translator_translate (GdkEventTranslator *translator, + GdkDisplay *display, + XEvent *xevent); +GdkEventMask _gdk_x11_event_translator_get_handled_events (GdkEventTranslator *translator); +void _gdk_x11_event_translator_select_window_events (GdkEventTranslator *translator, + Window window, + GdkEventMask event_mask); G_END_DECLS diff --git a/gdk/x11/gdkgeometry-x11.c b/gdk/x11/gdkgeometry-x11.c index 8ad8c24279..6745e3d969 100644 --- a/gdk/x11/gdkgeometry-x11.c +++ b/gdk/x11/gdkgeometry-x11.c @@ -19,10 +19,9 @@ #include "config.h" +#include "gdkinternals.h" #include "gdkrectangle.h" #include "gdkprivate-x11.h" -#include "gdkx.h" -#include "gdkinternals.h" #include "gdkscreen-x11.h" #include "gdkdisplay-x11.h" #include "gdkwindow-x11.h" @@ -54,11 +53,11 @@ struct _GdkWindowQueueItem }; void -_gdk_window_move_resize_child (GdkWindow *window, - gint x, - gint y, - gint width, - gint height) +_gdk_x11_window_move_resize_child (GdkWindow *window, + gint x, + gint y, + gint width, + gint height) { g_return_if_fail (window != NULL); g_return_if_fail (GDK_IS_WINDOW (window)); @@ -69,9 +68,9 @@ _gdk_window_move_resize_child (GdkWindow *window, g_warning ("Native children wider or taller than 65535 pixels are not supported"); if (width > 65535) - width = 65535; + width = 65535; if (height > 65535) - height = 65535; + height = 65535; } window->x = x; @@ -80,16 +79,16 @@ _gdk_window_move_resize_child (GdkWindow *window, window->height = height; /* We don't really care about origin overflow, because on overflow - the window won't be visible anyway and thus it will be shaped - to nothing */ - + * the window won't be visible anyway and thus it will be shaped + * to nothing + */ _gdk_x11_window_tmp_unset_parent_bg (window); _gdk_x11_window_tmp_unset_bg (window, TRUE); XMoveResizeWindow (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - window->x + window->parent->abs_x, - window->y + window->parent->abs_y, - width, height); + GDK_WINDOW_XID (window), + window->x + window->parent->abs_x, + window->y + window->parent->abs_y, + width, height); _gdk_x11_window_tmp_reset_parent_bg (window); _gdk_x11_window_tmp_reset_bg (window, TRUE); } @@ -158,7 +157,7 @@ static void gdk_window_queue (GdkWindow *window, GdkWindowQueueItem *item) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (window)); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (window)); if (!display_x11->translate_queue) display_x11->translate_queue = g_queue_new (); @@ -225,12 +224,12 @@ gdk_window_queue (GdkWindow *window, static GC _get_scratch_gc (GdkWindow *window, cairo_region_t *clip_region) { - GdkScreenX11 *screen; + GdkX11Screen *screen; XRectangle *rectangles; gint n_rects; gint depth; - screen = GDK_SCREEN_X11 (gdk_window_get_screen (window)); + screen = GDK_X11_SCREEN (gdk_window_get_screen (window)); depth = gdk_visual_get_depth (gdk_window_get_visual (window)) - 1; if (!screen->subwindow_gcs[depth]) @@ -246,10 +245,10 @@ _get_scratch_gc (GdkWindow *window, cairo_region_t *clip_region) &values); } - _gdk_region_get_xrectangles (clip_region, - 0, 0, - &rectangles, - &n_rects); + _gdk_x11_region_get_xrectangles (clip_region, + 0, 0, + &rectangles, + &n_rects); XSetClipRectangles (screen->xdisplay, screen->subwindow_gcs[depth], @@ -327,56 +326,56 @@ _gdk_x11_window_queue_antiexpose (GdkWindow *window, } void -_gdk_window_process_expose (GdkWindow *window, - gulong serial, - GdkRectangle *area) +_gdk_x11_window_process_expose (GdkWindow *window, + gulong serial, + GdkRectangle *area) { cairo_region_t *invalidate_region = cairo_region_create_rectangle (area); - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (window)); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_WINDOW_DISPLAY (window)); if (display_x11->translate_queue) { GList *tmp_list = display_x11->translate_queue->head; while (tmp_list) - { - GdkWindowQueueItem *item = tmp_list->data; + { + GdkWindowQueueItem *item = tmp_list->data; GList *next = tmp_list->next; - /* an overflow-safe (serial < item->serial) */ - if (serial - item->serial > (gulong) G_MAXLONG) - { - if (item->window == window) - { - if (item->type == GDK_WINDOW_QUEUE_TRANSLATE) - { - if (item->u.translate.area) - { - cairo_region_t *intersection; + /* an overflow-safe (serial < item->serial) */ + if (serial - item->serial > (gulong) G_MAXLONG) + { + if (item->window == window) + { + if (item->type == GDK_WINDOW_QUEUE_TRANSLATE) + { + if (item->u.translate.area) + { + cairo_region_t *intersection; - intersection = cairo_region_copy (invalidate_region); - cairo_region_intersect (intersection, item->u.translate.area); - cairo_region_subtract (invalidate_region, intersection); - cairo_region_translate (intersection, item->u.translate.dx, item->u.translate.dy); - cairo_region_union (invalidate_region, intersection); - cairo_region_destroy (intersection); - } - else - cairo_region_translate (invalidate_region, item->u.translate.dx, item->u.translate.dy); - } - else /* anti-expose */ - { - cairo_region_subtract (invalidate_region, item->u.antiexpose.area); - } - } - } - else - { - queue_delete_link (display_x11->translate_queue, tmp_list); - queue_item_free (item); - } - tmp_list = next; - } + intersection = cairo_region_copy (invalidate_region); + cairo_region_intersect (intersection, item->u.translate.area); + cairo_region_subtract (invalidate_region, intersection); + cairo_region_translate (intersection, item->u.translate.dx, item->u.translate.dy); + cairo_region_union (invalidate_region, intersection); + cairo_region_destroy (intersection); + } + else + cairo_region_translate (invalidate_region, item->u.translate.dx, item->u.translate.dy); + } + else /* anti-expose */ + { + cairo_region_subtract (invalidate_region, item->u.antiexpose.area); + } + } + } + else + { + queue_delete_link (display_x11->translate_queue, tmp_list); + queue_item_free (item); + } + tmp_list = next; + } } if (!cairo_region_is_empty (invalidate_region)) diff --git a/gdk/x11/gdkim-x11.c b/gdk/x11/gdkim-x11.c deleted file mode 100644 index 389e653ec0..0000000000 --- a/gdk/x11/gdkim-x11.c +++ /dev/null @@ -1,103 +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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 "gdkx.h" -#include "gdkmain.h" -#include "gdkinternals.h" -#include "gdkdisplay-x11.h" - -#include -#include -#include - - -/* If this variable is FALSE, it indicates that we should - * avoid trying to use multibyte conversion functions and - * assume everything is 1-byte per character - */ -static gboolean gdk_use_mb; - -void -_gdk_x11_initialize_locale (void) -{ - wchar_t result; - gchar *current_locale; - static char *last_locale = NULL; - - gdk_use_mb = FALSE; - - current_locale = setlocale (LC_ALL, NULL); - - if (last_locale && strcmp (last_locale, current_locale) == 0) - return; - - g_free (last_locale); - last_locale = g_strdup (current_locale); - - if (XSupportsLocale ()) - XSetLocaleModifiers (""); - - if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX"))) - { - gdk_use_mb = TRUE; - -#ifndef X_LOCALE - /* Detect ancient GNU libc, where mb == UTF8. Not useful unless it's - * really a UTF8 locale. The below still probably will - * screw up on Greek, Cyrillic, etc, encoded as UTF8. - */ - - if ((MB_CUR_MAX == 2) && - (mbstowcs (&result, "\xdd\xa5", 1) > 0) && - result == 0x765) - { - if ((strlen (current_locale) < 4) || - g_ascii_strcasecmp (current_locale + strlen(current_locale) - 4, - "utf8")) - gdk_use_mb = FALSE; - } -#endif /* X_LOCALE */ - } - - GDK_NOTE (XIM, - g_message ("%s multi-byte string functions.", - gdk_use_mb ? "Using" : "Not using")); - - return; -} - -gchar* -gdk_set_locale (void) -{ - if (!setlocale (LC_ALL,"")) - g_warning ("locale not supported by C library"); - - _gdk_x11_initialize_locale (); - - return setlocale (LC_ALL, NULL); -} diff --git a/gdk/x11/gdkinput.c b/gdk/x11/gdkinput.c deleted file mode 100644 index bd41a428ea..0000000000 --- a/gdk/x11/gdkinput.c +++ /dev/null @@ -1,227 +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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 "gdkscreen-x11.h" -#include "gdkdisplay-x11.h" -#include "gdkwindow.h" - -#include - - -/* Addition used for extension_events mask */ -#define GDK_ALL_DEVICES_MASK (1<<30) - -struct _GdkInputWindow -{ - GList *windows; /* GdkWindow:s with extension_events set */ - - /* gdk window */ - GdkWindow *impl_window; /* an impl window */ -}; - - -/** - * gdk_devices_list: - * - * Returns the list of available input devices for the default display. - * The list is statically allocated and should not be freed. - * - * Return value: (transfer none) (element-type GdkDevice): a list of #GdkDevice - * - * Deprecated: 3.0: Use gdk_device_manager_list_devices() instead. - **/ -GList * -gdk_devices_list (void) -{ - return gdk_display_list_devices (gdk_display_get_default ()); -} - -static void -_gdk_input_select_device_events (GdkWindow *impl_window, - GdkDevice *device) -{ - guint event_mask; - GdkWindow *w; - GdkInputWindow *iw; - GdkInputMode mode; - gboolean has_cursor; - GdkDeviceType type; - GList *l; - - event_mask = 0; - iw = impl_window->input_window; - - g_object_get (device, - "type", &type, - "input-mode", &mode, - "has-cursor", &has_cursor, - NULL); - - if (iw == NULL || - mode == GDK_MODE_DISABLED || - type == GDK_DEVICE_TYPE_MASTER) - return; - - for (l = iw->windows; l != NULL; l = l->next) - { - w = l->data; - - if (has_cursor || (w->extension_events & GDK_ALL_DEVICES_MASK)) - { - event_mask = w->extension_events; - - if (event_mask) - event_mask |= GDK_PROXIMITY_OUT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK; - - gdk_window_set_device_events (w, device, event_mask); - } - } -} - -static void -unset_extension_events (GdkWindow *window) -{ - GdkWindow *impl_window; - GdkDisplayX11 *display_x11; - GdkInputWindow *iw; - - impl_window = _gdk_window_get_impl_window (window); - iw = impl_window->input_window; - - display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (window)); - - if (window->extension_events != 0) - { - g_assert (iw != NULL); - g_assert (g_list_find (iw->windows, window) != NULL); - - iw->windows = g_list_remove (iw->windows, window); - if (iw->windows == NULL) - { - impl_window->input_window = NULL; - display_x11->input_windows = g_list_remove (display_x11->input_windows, iw); - g_free (iw); - } - } - - window->extension_events = 0; -} - -/** - * gdk_input_set_extension_events: - * @window: a #GdkWindow. - * @mask: the event mask - * @mode: the type of extension events that are desired. - * - * Turns extension events on or off for a particular window, - * and specifies the event mask for extension events. - * - * Deprecated: 3.0: Use gdk_window_set_device_events() instead. - **/ -void -gdk_input_set_extension_events (GdkWindow *window, - gint mask, - GdkExtensionMode mode) -{ - GdkWindow *impl_window; - GdkInputWindow *iw; - GdkDisplayX11 *display_x11; -#ifndef XINPUT_NONE - GList *tmp_list; -#endif - - g_return_if_fail (window != NULL); - g_return_if_fail (GDK_WINDOW_IS_X11 (window)); - - display_x11 = GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (window)); - if (GDK_WINDOW_DESTROYED (window)) - return; - - impl_window = _gdk_window_get_impl_window (window); - - if (mode == GDK_EXTENSION_EVENTS_ALL && mask != 0) - mask |= GDK_ALL_DEVICES_MASK; - - if (mode == GDK_EXTENSION_EVENTS_NONE) - mask = 0; - - iw = impl_window->input_window; - - if (mask != 0) - { - if (!iw) - { - iw = g_new0 (GdkInputWindow,1); - - iw->impl_window = (GdkWindow *)impl_window; - - iw->windows = NULL; - - display_x11->input_windows = g_list_append (display_x11->input_windows, iw); - impl_window->input_window = iw; - } - - if (window->extension_events == 0) - iw->windows = g_list_append (iw->windows, window); - window->extension_events = mask; - } - else - { - unset_extension_events (window); - } - -#ifndef XINPUT_NONE - for (tmp_list = display_x11->input_devices; tmp_list; tmp_list = tmp_list->next) - { - GdkDevice *dev = tmp_list->data; - _gdk_input_select_device_events (GDK_WINDOW (impl_window), dev); - } -#endif /* !XINPUT_NONE */ -} - -void -_gdk_input_window_destroy (GdkWindow *window) -{ - unset_extension_events (window); -} - -void -_gdk_input_check_extension_events (GdkDevice *device) -{ - GdkDisplayX11 *display_impl; - GdkInputWindow *input_window; - GList *tmp_list; - - display_impl = GDK_DISPLAY_X11 (gdk_device_get_display (device)); - - for (tmp_list = display_impl->input_windows; tmp_list; tmp_list = tmp_list->next) - { - input_window = tmp_list->data; - _gdk_input_select_device_events (input_window->impl_window, device); - } -} diff --git a/gdk/x11/gdkkeys-x11.c b/gdk/x11/gdkkeys-x11.c index 1de8400fb3..5c907df789 100644 --- a/gdk/x11/gdkkeys-x11.c +++ b/gdk/x11/gdkkeys-x11.c @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -26,11 +26,11 @@ #include "config.h" -#include "gdkx.h" -#include "gdkprivate-x11.h" -#include "gdkinternals.h" -#include "gdkdisplay-x11.h" +#include "gdkx11keys.h" +#include "gdkkeysprivate.h" #include "gdkkeysyms.h" +#include "gdkprivate-x11.h" +#include "gdkdisplay-x11.h" #include #include @@ -46,17 +46,10 @@ */ # ifndef XkbKeySymEntry # define XkbKeySymEntry(d,k,sl,g) \ - (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl)))) + (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl)))) # endif #endif /* HAVE_XKB */ -typedef struct _GdkKeymapX11 GdkKeymapX11; -typedef struct _GdkKeymapClass GdkKeymapX11Class; - -#define GDK_TYPE_KEYMAP_X11 (gdk_keymap_x11_get_type ()) -#define GDK_KEYMAP_X11(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_KEYMAP_X11, GdkKeymapX11)) -#define GDK_IS_KEYMAP_X11(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_KEYMAP_X11)) - typedef struct _DirectionCacheEntry DirectionCacheEntry; struct _DirectionCacheEntry @@ -66,7 +59,7 @@ struct _DirectionCacheEntry PangoDirection direction; }; -struct _GdkKeymapX11 +struct _GdkX11Keymap { GdkKeymap parent_instance; @@ -100,56 +93,18 @@ struct _GdkKeymapX11 #endif }; -#define KEYMAP_USE_XKB(keymap) GDK_DISPLAY_X11 ((keymap)->display)->use_xkb +struct _GdkX11KeymapClass +{ + GdkKeymapClass parent_class; +}; + +#define KEYMAP_USE_XKB(keymap) GDK_X11_DISPLAY ((keymap)->display)->use_xkb #define KEYMAP_XDISPLAY(keymap) GDK_DISPLAY_XDISPLAY ((keymap)->display) -static GType gdk_keymap_x11_get_type (void); -static void gdk_keymap_x11_class_init (GdkKeymapX11Class *klass); -static void gdk_keymap_x11_init (GdkKeymapX11 *keymap); -static void gdk_keymap_x11_finalize (GObject *object); - -static GdkKeymapClass *parent_class = NULL; - -static GType -gdk_keymap_x11_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - const GTypeInfo object_info = - { - sizeof (GdkKeymapClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) gdk_keymap_x11_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GdkKeymapX11), - 0, /* n_preallocs */ - (GInstanceInitFunc) gdk_keymap_x11_init, - }; - - object_type = g_type_register_static (GDK_TYPE_KEYMAP, - g_intern_static_string ("GdkKeymapX11"), - &object_info, 0); - } - - return object_type; -} +G_DEFINE_TYPE (GdkX11Keymap, gdk_x11_keymap, GDK_TYPE_KEYMAP) static void -gdk_keymap_x11_class_init (GdkKeymapX11Class *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->finalize = gdk_keymap_x11_finalize; -} - -static void -gdk_keymap_x11_init (GdkKeymapX11 *keymap) +gdk_x11_keymap_init (GdkX11Keymap *keymap) { keymap->min_keycode = 0; keymap->max_keycode = 0; @@ -157,7 +112,7 @@ gdk_keymap_x11_init (GdkKeymapX11 *keymap) keymap->keymap = NULL; keymap->keysyms_per_keycode = 0; keymap->mod_keymap = NULL; - + keymap->num_lock_mask = 0; keymap->sun_keypad = FALSE; keymap->group_switch_mask = 0; @@ -174,9 +129,9 @@ gdk_keymap_x11_init (GdkKeymapX11 *keymap) } static void -gdk_keymap_x11_finalize (GObject *object) +gdk_x11_keymap_finalize (GObject *object) { - GdkKeymapX11 *keymap_x11 = GDK_KEYMAP_X11 (object); + GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (object); if (keymap_x11->keymap) XFree (keymap_x11->keymap); @@ -189,22 +144,22 @@ gdk_keymap_x11_finalize (GObject *object) XkbFreeKeyboard (keymap_x11->xkb_desc, XkbAllComponentsMask, True); #endif - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_x11_keymap_parent_class)->finalize (object); } static inline void -update_keyrange (GdkKeymapX11 *keymap_x11) +update_keyrange (GdkX11Keymap *keymap_x11) { if (keymap_x11->max_keycode == 0) XDisplayKeycodes (KEYMAP_XDISPLAY (GDK_KEYMAP (keymap_x11)), - &keymap_x11->min_keycode, &keymap_x11->max_keycode); + &keymap_x11->min_keycode, &keymap_x11->max_keycode); } #ifdef HAVE_XKB static void update_modmap (Display *display, - GdkKeymapX11 *keymap_x11) + GdkX11Keymap *keymap_x11) { static struct { const gchar *name; @@ -229,33 +184,33 @@ update_modmap (Display *display, for (i = 0; i < XkbNumVirtualMods; i++) { for (j = 0; vmods[j].atom; j++) - { - if (keymap_x11->xkb_desc->names->vmods[i] == vmods[j].atom) - { - for (k = 0; k < 8; k++) - { - if (keymap_x11->xkb_desc->server->vmods[i] & (1 << k)) - keymap_x11->modmap[k] |= vmods[j].mask; - } - } - } + { + if (keymap_x11->xkb_desc->names->vmods[i] == vmods[j].atom) + { + for (k = 0; k < 8; k++) + { + if (keymap_x11->xkb_desc->server->vmods[i] & (1 << k)) + keymap_x11->modmap[k] |= vmods[j].mask; + } + } + } } } static XkbDescPtr -get_xkb (GdkKeymapX11 *keymap_x11) +get_xkb (GdkX11Keymap *keymap_x11) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_KEYMAP (keymap_x11)->display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_KEYMAP (keymap_x11)->display); Display *xdisplay = display_x11->xdisplay; - + update_keyrange (keymap_x11); - + if (keymap_x11->xkb_desc == NULL) { keymap_x11->xkb_desc = XkbGetMap (xdisplay, XkbKeySymsMask | XkbKeyTypesMask | XkbModifierMapMask | XkbVirtualModsMask, XkbUseCoreKbd); if (keymap_x11->xkb_desc == NULL) { - g_error ("Failed to get keymap"); + g_error ("Failed to get keymap"); return NULL; } @@ -266,7 +221,7 @@ get_xkb (GdkKeymapX11 *keymap_x11) else if (keymap_x11->current_serial != display_x11->keymap_serial) { XkbGetUpdatedMap (xdisplay, XkbKeySymsMask | XkbKeyTypesMask | XkbModifierMapMask | XkbVirtualModsMask, - keymap_x11->xkb_desc); + keymap_x11->xkb_desc); XkbGetNames (xdisplay, XkbGroupNamesMask | XkbVirtualModNamesMask, keymap_x11->xkb_desc); update_modmap (xdisplay, keymap_x11); @@ -286,31 +241,6 @@ get_xkb (GdkKeymapX11 *keymap_x11) * to checking the next event with XPending(). */ -/** - * gdk_keymap_get_for_display: - * @display: the #GdkDisplay. - * - * Returns the #GdkKeymap attached to @display. - * - * Return value: (transfer none): the #GdkKeymap attached to @display. - * - * Since: 2.2 - **/ -GdkKeymap* -gdk_keymap_get_for_display (GdkDisplay *display) -{ - GdkDisplayX11 *display_x11; - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - display_x11 = GDK_DISPLAY_X11 (display); - - if (!display_x11->keymap) - display_x11->keymap = g_object_new (gdk_keymap_x11_get_type (), NULL); - - display_x11->keymap->display = display; - - return display_x11->keymap; -} - /* Find the index of the group/level pair within the keysyms for a key. * We round up the number of keysyms per keycode to the next even number, * otherwise we lose a whole group of keys @@ -322,9 +252,9 @@ gdk_keymap_get_for_display (GdkDisplay *display) static gint get_symbol (const KeySym *syms, - GdkKeymapX11 *keymap_x11, - gint group, - gint level) + GdkX11Keymap *keymap_x11, + gint group, + gint level) { gint index; @@ -336,11 +266,11 @@ get_symbol (const KeySym *syms, } static void -set_symbol (KeySym *syms, - GdkKeymapX11 *keymap_x11, - gint group, - gint level, - KeySym sym) +set_symbol (KeySym *syms, + GdkX11Keymap *keymap_x11, + gint group, + gint level, + KeySym sym) { gint index; @@ -352,15 +282,15 @@ set_symbol (KeySym *syms, } static void -update_keymaps (GdkKeymapX11 *keymap_x11) +update_keymaps (GdkX11Keymap *keymap_x11) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (GDK_KEYMAP (keymap_x11)->display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (GDK_KEYMAP (keymap_x11)->display); Display *xdisplay = display_x11->xdisplay; - + #ifdef HAVE_XKB g_assert (!KEYMAP_USE_XKB (GDK_KEYMAP (keymap_x11))); #endif - + if (keymap_x11->keymap == NULL || keymap_x11->current_serial != display_x11->keymap_serial) { @@ -369,18 +299,18 @@ update_keymaps (GdkKeymapX11 *keymap_x11) gint keycode; keymap_x11->current_serial = display_x11->keymap_serial; - + update_keyrange (keymap_x11); - + if (keymap_x11->keymap) XFree (keymap_x11->keymap); if (keymap_x11->mod_keymap) XFreeModifiermap (keymap_x11->mod_keymap); - + keymap_x11->keymap = XGetKeyboardMapping (xdisplay, keymap_x11->min_keycode, - keymap_x11->max_keycode - keymap_x11->min_keycode + 1, - &keymap_x11->keysyms_per_keycode); + keymap_x11->max_keycode - keymap_x11->min_keycode + 1, + &keymap_x11->keysyms_per_keycode); /* GDK_KEY_ISO_Left_Tab, as usually configured through XKB, really messes @@ -392,12 +322,12 @@ update_keymaps (GdkKeymapX11 *keymap_x11) while (keycode <= keymap_x11->max_keycode) { KeySym *syms = keymap_x11->keymap + (keycode - keymap_x11->min_keycode) * keymap_x11->keysyms_per_keycode; - /* Check both groups */ - for (i = 0 ; i < 2 ; i++) - { - if (get_symbol (syms, keymap_x11, i, 0) == GDK_KEY_Tab) - set_symbol (syms, keymap_x11, i, 1, GDK_KEY_ISO_Left_Tab); - } + /* Check both groups */ + for (i = 0 ; i < 2 ; i++) + { + if (get_symbol (syms, keymap_x11, i, 0) == GDK_KEY_Tab) + set_symbol (syms, keymap_x11, i, 1, GDK_KEY_ISO_Left_Tab); + } /* * If there is one keysym and the key symbol has upper and lower @@ -411,12 +341,11 @@ update_keymaps (GdkKeymapX11 *keymap_x11) gdk_keyval_convert_case (get_symbol (syms, keymap_x11, 0, 0), &lower, &upper); if (lower != upper) { - set_symbol (syms, keymap_x11, 0, 0, lower); - set_symbol (syms, keymap_x11, 0, 1, upper); + set_symbol (syms, keymap_x11, 0, 0, lower); + set_symbol (syms, keymap_x11, 0, 1, upper); } } - - + ++keycode; } @@ -427,8 +356,8 @@ update_keymaps (GdkKeymapX11 *keymap_x11) keymap_x11->num_lock_mask = 0; for (i = 0; i < 8; i++) - keymap_x11->modmap[i] = 1 << i; - + keymap_x11->modmap[i] = 1 << i; + /* There are 8 sets of modifiers, with each set containing * max_keypermod keycodes. */ @@ -439,7 +368,7 @@ update_keymaps (GdkKeymapX11 *keymap_x11) gint keycode = keymap_x11->mod_keymap->modifiermap[i]; gint j; KeySym *syms; - guint mask; + guint mask; /* Ignore invalid keycodes. */ if (keycode < keymap_x11->min_keycode || @@ -448,24 +377,24 @@ update_keymaps (GdkKeymapX11 *keymap_x11) syms = keymap_x11->keymap + (keycode - keymap_x11->min_keycode) * keymap_x11->keysyms_per_keycode; - mask = 0; - for (j = 0; j < keymap_x11->keysyms_per_keycode; j++) - { - if (syms[j] == GDK_KEY_Meta_L || - syms[j] == GDK_KEY_Meta_R) - mask |= GDK_META_MASK; - else if (syms[j] == GDK_KEY_Hyper_L || - syms[j] == GDK_KEY_Hyper_R) - mask |= GDK_HYPER_MASK; - else if (syms[j] == GDK_KEY_Super_L || - syms[j] == GDK_KEY_Super_R) - mask |= GDK_SUPER_MASK; - } + mask = 0; + for (j = 0; j < keymap_x11->keysyms_per_keycode; j++) + { + if (syms[j] == GDK_KEY_Meta_L || + syms[j] == GDK_KEY_Meta_R) + mask |= GDK_META_MASK; + else if (syms[j] == GDK_KEY_Hyper_L || + syms[j] == GDK_KEY_Hyper_R) + mask |= GDK_HYPER_MASK; + else if (syms[j] == GDK_KEY_Super_L || + syms[j] == GDK_KEY_Super_R) + mask |= GDK_SUPER_MASK; + } - keymap_x11->modmap[i/keymap_x11->mod_keymap->max_keypermod] |= mask; + keymap_x11->modmap[i/keymap_x11->mod_keymap->max_keypermod] |= mask; /* The fourth modifier, GDK_MOD1_MASK is 1 << 3. - * Each group of max_keypermod entries refers to the same modifier. + * Each group of max_keypermod entries refers to the same modifier. */ mask = 1 << (i / keymap_x11->mod_keymap->max_keypermod); @@ -476,16 +405,16 @@ update_keymaps (GdkKeymapX11 *keymap_x11) * is Caps_Lock, we will interpret the modifier as Caps_Lock; * otherwise, if any is bound to Shift_Lock, we will interpret * the modifier as Shift_Lock. Otherwise, the lock modifier - * has no effect. + * has no effect. */ - for (j = 0; j < keymap_x11->keysyms_per_keycode; j++) - { - if (syms[j] == GDK_KEY_Caps_Lock) - keymap_x11->lock_keysym = GDK_KEY_Caps_Lock; - else if (syms[j] == GDK_KEY_Shift_Lock && - keymap_x11->lock_keysym == GDK_KEY_VoidSymbol) - keymap_x11->lock_keysym = GDK_KEY_Shift_Lock; - } + for (j = 0; j < keymap_x11->keysyms_per_keycode; j++) + { + if (syms[j] == GDK_KEY_Caps_Lock) + keymap_x11->lock_keysym = GDK_KEY_Caps_Lock; + else if (syms[j] == GDK_KEY_Shift_Lock && + keymap_x11->lock_keysym == GDK_KEY_VoidSymbol) + keymap_x11->lock_keysym = GDK_KEY_Shift_Lock; + } break; case GDK_CONTROL_MASK: @@ -529,10 +458,10 @@ update_keymaps (GdkKeymapX11 *keymap_x11) } static const KeySym* -get_keymap (GdkKeymapX11 *keymap_x11) +get_keymap (GdkX11Keymap *keymap_x11) { update_keymaps (keymap_x11); - + return keymap_x11->keymap; } @@ -540,13 +469,13 @@ get_keymap (GdkKeymapX11 *keymap_x11) static GdkKeymap * get_effective_keymap (GdkKeymap *keymap, - const char *function) + const char *function) { if (!keymap) { GDK_NOTE (MULTIHEAD, - g_message ("reverting to default display keymap in %s", - function)); + g_message ("reverting to default display keymap in %s", + function)); return gdk_keymap_get_default (); } @@ -555,8 +484,8 @@ get_effective_keymap (GdkKeymap *keymap, #if HAVE_XKB static PangoDirection -get_direction (XkbDescRec *xkb, - gint group) +get_direction (XkbDescRec *xkb, + gint group) { gint code; @@ -569,16 +498,16 @@ get_direction (XkbDescRec *xkb, PangoDirection dir = pango_unichar_direction (gdk_keyval_to_unicode (sym)); switch (dir) - { - case PANGO_DIRECTION_RTL: - rtl_minus_ltr++; - break; - case PANGO_DIRECTION_LTR: - rtl_minus_ltr--; - break; - default: - break; - } + { + case PANGO_DIRECTION_RTL: + rtl_minus_ltr++; + break; + case PANGO_DIRECTION_LTR: + rtl_minus_ltr--; + break; + default: + break; + } } if (rtl_minus_ltr > 0) @@ -588,9 +517,9 @@ get_direction (XkbDescRec *xkb, } static PangoDirection -get_direction_from_cache (GdkKeymapX11 *keymap_x11, - XkbDescPtr xkb, - gint group) +get_direction_from_cache (GdkX11Keymap *keymap_x11, + XkbDescPtr xkb, + gint group) { Atom group_atom = xkb->names->groups[group]; @@ -605,24 +534,24 @@ get_direction_from_cache (GdkKeymapX11 *keymap_x11, /* lookup in cache */ for (i = 0; i < G_N_ELEMENTS (keymap_x11->group_direction_cache); i++) { - if (cache[i].group_atom == group_atom) - { - cache_hit = TRUE; - cache[i].serial = keymap_x11->current_cache_serial++; /* freshen */ - direction = cache[i].direction; - group_atom = cache[i].group_atom; - break; - } + if (cache[i].group_atom == group_atom) + { + cache_hit = TRUE; + cache[i].serial = keymap_x11->current_cache_serial++; /* freshen */ + direction = cache[i].direction; + group_atom = cache[i].group_atom; + break; + } } } else { /* initialize cache */ for (i = 0; i < G_N_ELEMENTS (keymap_x11->group_direction_cache); i++) - { - cache[i].group_atom = 0; - cache[i].serial = keymap_x11->current_cache_serial; - } + { + cache[i].group_atom = 0; + cache[i].serial = keymap_x11->current_cache_serial; + } keymap_x11->current_cache_serial++; } @@ -635,11 +564,11 @@ get_direction_from_cache (GdkKeymapX11 *keymap_x11, /* remove the oldest entry */ for (i = 0; i < G_N_ELEMENTS (keymap_x11->group_direction_cache); i++) - { - if (cache[i].serial < cache[oldest].serial) - oldest = i; - } - + { + if (cache[i].serial < cache[oldest].serial) + oldest = i; + } + cache[oldest].group_atom = group_atom; cache[oldest].direction = direction; cache[oldest].serial = keymap_x11->current_cache_serial++; @@ -650,24 +579,24 @@ get_direction_from_cache (GdkKeymapX11 *keymap_x11, static int get_num_groups (GdkKeymap *keymap, - XkbDescPtr xkb) + XkbDescPtr xkb) { Display *display = KEYMAP_XDISPLAY (keymap); XkbGetControls(display, XkbSlowKeysMask, xkb); XkbGetUpdatedMap (display, XkbKeySymsMask | XkbKeyTypesMask | - XkbModifierMapMask | XkbVirtualModsMask, xkb); + XkbModifierMapMask | XkbVirtualModsMask, xkb); return xkb->ctrls->num_groups; } static gboolean -update_direction (GdkKeymapX11 *keymap_x11, - gint group) +update_direction (GdkX11Keymap *keymap_x11, + gint group) { XkbDescPtr xkb = get_xkb (keymap_x11); Atom group_atom; gboolean had_direction; PangoDirection old_direction; - + had_direction = keymap_x11->have_direction; old_direction = keymap_x11->current_direction; @@ -685,7 +614,7 @@ update_direction (GdkKeymapX11 *keymap_x11, } static gboolean -update_lock_state (GdkKeymapX11 *keymap_x11, +update_lock_state (GdkX11Keymap *keymap_x11, gint locked_mods) { gboolean caps_lock_state; @@ -701,22 +630,22 @@ update_lock_state (GdkKeymapX11 *keymap_x11, || (num_lock_state != keymap_x11->num_lock_state); } -/* keep this in sync with the XkbSelectEventDetails() call - * in gdk_display_open() +/* keep this in sync with the XkbSelectEventDetails() + * call in gdk_display_open() */ void -_gdk_keymap_state_changed (GdkDisplay *display, - XEvent *xevent) +_gdk_x11_keymap_state_changed (GdkDisplay *display, + XEvent *xevent) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); XkbEvent *xkb_event = (XkbEvent *)xevent; - + if (display_x11->keymap) { - GdkKeymapX11 *keymap_x11 = GDK_KEYMAP_X11 (display_x11->keymap); - + GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (display_x11->keymap); + if (update_direction (keymap_x11, XkbStateGroup (&xkb_event->state))) - g_signal_emit_by_name (keymap_x11, "direction-changed"); + g_signal_emit_by_name (keymap_x11, "direction-changed"); if (update_lock_state (keymap_x11, xkb_event->state.locked_mods)) g_signal_emit_by_name (keymap_x11, "state-changed"); @@ -726,46 +655,36 @@ _gdk_keymap_state_changed (GdkDisplay *display, #endif /* HAVE_XKB */ void -_gdk_keymap_keys_changed (GdkDisplay *display) +_gdk_x11_keymap_keys_changed (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + ++display_x11->keymap_serial; - + if (display_x11->keymap) g_signal_emit_by_name (display_x11->keymap, "keys_changed", 0); } -/** - * gdk_keymap_get_direction: - * @keymap: a #GdkKeymap or %NULL to use the default keymap - * - * Returns the direction of effective layout of the keymap. - * - * Returns: %PANGO_DIRECTION_LTR or %PANGO_DIRECTION_RTL - * if it can determine the direction. %PANGO_DIRECTION_NEUTRAL - * otherwise. - **/ -PangoDirection -gdk_keymap_get_direction (GdkKeymap *keymap) +static PangoDirection +gdk_x11_keymap_get_direction (GdkKeymap *keymap) { keymap = GET_EFFECTIVE_KEYMAP (keymap); - + #if HAVE_XKB if (KEYMAP_USE_XKB (keymap)) { - GdkKeymapX11 *keymap_x11 = GDK_KEYMAP_X11 (keymap); + GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap); if (!keymap_x11->have_direction) - { - GdkDisplay *display = GDK_KEYMAP (keymap_x11)->display; - XkbStateRec state_rec; + { + GdkDisplay *display = keymap->display; + XkbStateRec state_rec; + + XkbGetState (GDK_DISPLAY_XDISPLAY (display), XkbUseCoreKbd, + &state_rec); + update_direction (keymap_x11, XkbStateGroup (&state_rec)); + } - XkbGetState (GDK_DISPLAY_XDISPLAY (display), XkbUseCoreKbd, - &state_rec); - update_direction (keymap_x11, XkbStateGroup (&state_rec)); - } - return keymap_x11->current_direction; } else @@ -773,26 +692,15 @@ gdk_keymap_get_direction (GdkKeymap *keymap) return PANGO_DIRECTION_NEUTRAL; } -/** - * gdk_keymap_have_bidi_layouts: - * @keymap: a #GdkKeymap or %NULL to use the default keymap - * - * Determines if keyboard layouts for both right-to-left and left-to-right - * languages are in use. - * - * Returns: %TRUE if there are layouts in both directions, %FALSE otherwise - * - * Since: 2.12 - **/ -gboolean -gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) +static gboolean +gdk_x11_keymap_have_bidi_layouts (GdkKeymap *keymap) { keymap = GET_EFFECTIVE_KEYMAP (keymap); #if HAVE_XKB if (KEYMAP_USE_XKB (keymap)) { - GdkKeymapX11 *keymap_x11 = GDK_KEYMAP_X11 (keymap); + GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap); XkbDescPtr xkb = get_xkb (keymap_x11); int num_groups = get_num_groups (keymap, xkb); @@ -802,10 +710,10 @@ gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) for (i = 0; i < num_groups; i++) { - if (get_direction_from_cache (keymap_x11, xkb, i) == PANGO_DIRECTION_RTL) - have_rtl_keyboard = TRUE; - else - have_ltr_keyboard = TRUE; + if (get_direction_from_cache (keymap_x11, xkb, i) == PANGO_DIRECTION_RTL) + have_rtl_keyboard = TRUE; + else + have_ltr_keyboard = TRUE; } return have_ltr_keyboard && have_rtl_keyboard; @@ -815,79 +723,30 @@ gdk_keymap_have_bidi_layouts (GdkKeymap *keymap) return FALSE; } -/** - * gdk_keymap_get_caps_lock_state: - * @keymap: a #GdkKeymap - * - * Returns whether the Caps Lock modifer is locked. - * - * Returns: %TRUE if Caps Lock is on - * - * Since: 2.16 - */ -gboolean -gdk_keymap_get_caps_lock_state (GdkKeymap *keymap) +static gboolean +gdk_x11_keymap_get_caps_lock_state (GdkKeymap *keymap) { - GdkKeymapX11 *keymap_x11; - - keymap = GET_EFFECTIVE_KEYMAP (keymap); - - keymap_x11 = GDK_KEYMAP_X11 (keymap); - - return keymap_x11->caps_lock_state; -} - -/** - * gdk_keymap_get_num_lock_state: - * @keymap: a #GdkKeymap - * - * Returns whether the Num Lock modifer is locked. - * - * Returns: %TRUE if Num Lock is on - * - * Since: 3.0 - */ -gboolean -gdk_keymap_get_num_lock_state (GdkKeymap *keymap) -{ - GdkKeymapX11 *keymap_x11; - keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); - - return keymap_x11->num_lock_state; + return GDK_X11_KEYMAP (keymap)->caps_lock_state; } -/** - * gdk_keymap_get_entries_for_keyval: - * @keymap: (allow-none): a #GdkKeymap, or %NULL to use the default keymap - * @keyval: a keyval, such as %GDK_a, %GDK_Up, %GDK_Return, etc. - * @keys: (out): return location for an array of #GdkKeymapKey - * @n_keys: (out): return location for number of elements in returned array - * - * Obtains a list of keycode/group/level combinations that will - * generate @keyval. Groups and levels are two kinds of keyboard mode; - * in general, the level determines whether the top or bottom symbol - * on a key is used, and the group determines whether the left or - * right symbol is used. On US keyboards, the shift key changes the - * keyboard level, and there are no groups. A group switch key might - * convert a keyboard between Hebrew to English modes, for example. - * #GdkEventKey contains a %group field that indicates the active - * keyboard group. The level is computed from the modifier mask. - * The returned array should be freed - * with g_free(). - * - * Return value: %TRUE if keys were found and returned - **/ -gboolean -gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, - guint keyval, - GdkKeymapKey **keys, - gint *n_keys) +static gboolean +gdk_x11_keymap_get_num_lock_state (GdkKeymap *keymap) +{ + keymap = GET_EFFECTIVE_KEYMAP (keymap); + + return GDK_X11_KEYMAP (keymap)->num_lock_state; +} + +static gboolean +gdk_x11_keymap_get_entries_for_keyval (GdkKeymap *keymap, + guint keyval, + GdkKeymapKey **keys, + gint *n_keys) { GArray *retval; - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE); g_return_val_if_fail (keys != NULL, FALSE); @@ -895,8 +754,8 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, g_return_val_if_fail (keyval != 0, FALSE); keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); - + keymap_x11 = GDK_X11_KEYMAP (keymap); + retval = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey)); #ifdef HAVE_XKB @@ -906,7 +765,7 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, XkbDescRec *xkb = get_xkb (keymap_x11); gint keycode; - + keycode = keymap_x11->min_keycode; while (keycode <= keymap_x11->max_keycode) @@ -940,8 +799,8 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, g_array_append_val (retval, key); - g_assert (XkbKeySymEntry (xkb, keycode, level, group) == - keyval); + g_assert (XkbKeySymEntry (xkb, keycode, level, group) == + keyval); } ++level; @@ -963,7 +822,7 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, { const KeySym *map = get_keymap (keymap_x11); gint keycode; - + keycode = keymap_x11->min_keycode; while (keycode <= keymap_x11->max_keycode) { @@ -985,11 +844,9 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, g_array_append_val (retval, key); } - + ++i; } - - ++keycode; } } @@ -1003,38 +860,21 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap, *keys = NULL; *n_keys = 0; } - + g_array_free (retval, retval->len > 0 ? FALSE : TRUE); return *n_keys > 0; } -/** - * gdk_keymap_get_entries_for_keycode: - * @keymap: (allow-none): a #GdkKeymap or %NULL to use the default keymap - * @hardware_keycode: a keycode - * @keys: (out): return location for array of #GdkKeymapKey, or %NULL - * @keyvals: (out): return location for array of keyvals, or %NULL - * @n_entries: length of @keys and @keyvals - * - * Returns the keyvals bound to @hardware_keycode. - * The Nth #GdkKeymapKey in @keys is bound to the Nth - * keyval in @keyvals. Free the returned arrays with g_free(). - * When a keycode is pressed by the user, the keyval from - * this list of entries is selected by considering the effective - * keyboard group and level. See gdk_keymap_translate_keyboard_state(). - * - * Returns: %TRUE if there were any entries - **/ -gboolean -gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, - guint hardware_keycode, - GdkKeymapKey **keys, - guint **keyvals, - gint *n_entries) +static gboolean +gdk_x11_keymap_get_entries_for_keycode (GdkKeymap *keymap, + guint hardware_keycode, + GdkKeymapKey **keys, + guint **keyvals, + gint *n_entries) { - GdkKeymapX11 *keymap_x11; - + GdkX11Keymap *keymap_x11; + GArray *key_array; GArray *keyval_array; @@ -1042,7 +882,7 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, g_return_val_if_fail (n_entries != NULL, FALSE); keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); update_keyrange (keymap_x11); @@ -1057,17 +897,17 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, *n_entries = 0; return FALSE; } - + if (keys) key_array = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey)); else key_array = NULL; - + if (keyvals) keyval_array = g_array_new (FALSE, FALSE, sizeof (guint)); else keyval_array = NULL; - + #ifdef HAVE_XKB if (KEYMAP_USE_XKB (keymap)) { @@ -1080,7 +920,7 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, gint total_syms; gint i = 0; KeySym *entry; - + max_shift_levels = XkbKeyGroupsWidth (xkb, hardware_keycode); /* "key width" */ total_syms = XkbKeyNumSyms (xkb, hardware_keycode); @@ -1091,32 +931,32 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, entry = XkbKeySymsPtr (xkb, hardware_keycode); while (i < total_syms) - { - /* check out our cool loop invariant */ + { + /* check out our cool loop invariant */ g_assert (i == (group * max_shift_levels + level)); if (key_array) { GdkKeymapKey key; - + key.keycode = hardware_keycode; key.group = group; key.level = level; - + g_array_append_val (key_array, key); } if (keyval_array) g_array_append_val (keyval_array, entry[i]); - + ++level; - + if (level == max_shift_levels) { level = 0; ++group; } - + ++i; } } @@ -1134,19 +974,19 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, if (key_array) { GdkKeymapKey key; - + key.keycode = hardware_keycode; - + /* The "classic" non-XKB keymap has 2 levels per group */ key.group = i / 2; key.level = i % 2; - + g_array_append_val (key_array, key); } if (keyval_array) g_array_append_val (keyval_array, syms[i]); - + ++i; } } @@ -1158,7 +998,7 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, *n_entries = key_array->len; *keys = (GdkKeymapKey*) g_array_free (key_array, FALSE); } - + if (keyvals) { *n_entries = keyval_array->len; @@ -1168,38 +1008,24 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap, return *n_entries > 0; } - -/** - * gdk_keymap_lookup_key: - * @keymap: a #GdkKeymap or %NULL to use the default keymap - * @key: a #GdkKeymapKey with keycode, group, and level initialized - * - * Looks up the keyval mapped to a keycode/group/level triplet. - * If no keyval is bound to @key, returns 0. For normal user input, - * you want to use gdk_keymap_translate_keyboard_state() instead of - * this function, since the effective group/level may not be - * the same as the current keyboard state. - * - * Return value: a keyval, or 0 if none was mapped to the given @key - **/ -guint -gdk_keymap_lookup_key (GdkKeymap *keymap, - const GdkKeymapKey *key) +static guint +gdk_x11_keymap_lookup_key (GdkKeymap *keymap, + const GdkKeymapKey *key) { - GdkKeymapX11 *keymap_x11; - + GdkX11Keymap *keymap_x11; + g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), 0); g_return_val_if_fail (key != NULL, 0); g_return_val_if_fail (key->group < 4, 0); keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); - + keymap_x11 = GDK_X11_KEYMAP (keymap); + #ifdef HAVE_XKB if (KEYMAP_USE_XKB (keymap)) { XkbDescRec *xkb = get_xkb (keymap_x11); - + return XkbKeySymEntry (xkb, key->keycode, key->level, key->group); } else @@ -1271,27 +1097,27 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, if (type->map) { /* find the column (shift level) within the group */ register int i; register XkbKTMapEntryPtr entry; - /* ---- Begin section modified for GDK ---- */ - int found = 0; - + /* ---- Begin section modified for GDK ---- */ + int found = 0; + for (i=0,entry=type->map;imap_count;i++,entry++) { - if (mods_rtrn) { - int bits = 0; - unsigned long tmp = entry->mods.mask; - while (tmp) { - if ((tmp & 1) == 1) - bits++; - tmp >>= 1; - } - /* We always add one-modifiers levels to mods_rtrn since - * they can't wipe out bits in the state unless the - * level would be triggered. But return other modifiers - * - */ - if (bits == 1 || (mods&type->mods.mask)==entry->mods.mask) - *mods_rtrn |= entry->mods.mask; - } - + if (mods_rtrn) { + int bits = 0; + unsigned long tmp = entry->mods.mask; + while (tmp) { + if ((tmp & 1) == 1) + bits++; + tmp >>= 1; + } + /* We always add one-modifiers levels to mods_rtrn since + * they can't wipe out bits in the state unless the + * level would be triggered. But return other modifiers + * + */ + if (bits == 1 || (mods&type->mods.mask)==entry->mods.mask) + *mods_rtrn |= entry->mods.mask; + } + if (!found&&entry->active&&((mods&type->mods.mask)==entry->mods.mask)) { col+= entry->level; if (type->preserve) @@ -1299,36 +1125,36 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, if (level_rtrn) *level_rtrn = entry->level; - + found = 1; } } - /* ---- End section modified for GDK ---- */ + /* ---- End section modified for GDK ---- */ } if (keysym_rtrn!=NULL) *keysym_rtrn= syms[col]; if (mods_rtrn) { - /* ---- Begin section modified for GDK ---- */ + /* ---- Begin section modified for GDK ---- */ *mods_rtrn &= ~preserve; - /* ---- End section modified for GDK ---- */ - + /* ---- End section modified for GDK ---- */ + /* ---- Begin stuff GDK comments out of the original Xlib version ---- */ /* This is commented out because xkb_info is a private struct */ #if 0 /* The Motif VTS doesn't get the help callback called if help - * is bound to Shift+, and it appears as though it - * is XkbTranslateKeyCode that is causing the problem. The - * core X version of XTranslateKey always OR's in ShiftMask - * and LockMask for mods_rtrn, so this "fix" keeps this behavior + * is bound to Shift+, and it appears as though it + * is XkbTranslateKeyCode that is causing the problem. The + * core X version of XTranslateKey always OR's in ShiftMask + * and LockMask for mods_rtrn, so this "fix" keeps this behavior * and solves the VTS problem. */ if ((xkb->dpy)&&(xkb->dpy->xkb_info)&& (xkb->dpy->xkb_info->xlib_ctrls&XkbLC_AlwaysConsumeShiftAndLock)) { *mods_rtrn|= (ShiftMask|LockMask); } #endif - + /* ---- End stuff GDK comments out of the original Xlib version ---- */ } @@ -1336,9 +1162,9 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, if (group_rtrn) *group_rtrn = effectiveGroup; - + /* ---- End stuff GDK adds to the original Xlib version ---- */ - + return (syms[col] != NoSymbol); } #endif /* HAVE_XKB */ @@ -1347,12 +1173,12 @@ MyEnhancedXkbTranslateKeyCode(register XkbDescPtr xkb, * of the keyboard map. See section 12.7 of the Xlib reference manual */ static guint -translate_keysym (GdkKeymapX11 *keymap_x11, - guint hardware_keycode, - gint group, - GdkModifierType state, - gint *effective_group, - gint *effective_level) +translate_keysym (GdkX11Keymap *keymap_x11, + guint hardware_keycode, + gint group, + GdkModifierType state, + gint *effective_group, + gint *effective_level) { const KeySym *map = get_keymap (keymap_x11); const KeySym *syms = map + (hardware_keycode - keymap_x11->min_keycode) * keymap_x11->keysyms_per_keycode; @@ -1380,15 +1206,15 @@ translate_keysym (GdkKeymapX11 *keymap_x11, if (keymap_x11->sun_keypad) { num_lock_index = 2; - + if (group != 0) - { - gint i; - - for (i = 0; i < keymap_x11->keysyms_per_keycode; i++) - if (KEYSYM_IS_KEYPAD (SYM (keymap_x11, 0, i))) - group = 0; - } + { + gint i; + + for (i = 0; i < keymap_x11->keysyms_per_keycode; i++) + if (KEYSYM_IS_KEYPAD (SYM (keymap_x11, 0, i))) + group = 0; + } } else num_lock_index = 1; @@ -1411,115 +1237,48 @@ translate_keysym (GdkKeymapX11 *keymap_x11, */ shift_level = (state & shift_modifiers) ? 1 : 0; if (!SYM (keymap_x11, group, shift_level) && SYM (keymap_x11, group, 0)) - shift_level = 0; - + shift_level = 0; + tmp_keyval = SYM (keymap_x11, group, shift_level); - + if (keymap_x11->lock_keysym == GDK_KEY_Caps_Lock && (state & GDK_LOCK_MASK) != 0) - { - guint upper = gdk_keyval_to_upper (tmp_keyval); - if (upper != tmp_keyval) - tmp_keyval = upper; - } + { + guint upper = gdk_keyval_to_upper (tmp_keyval); + if (upper != tmp_keyval) + tmp_keyval = upper; + } } if (effective_group) *effective_group = group; - + if (effective_level) *effective_level = shift_level; return tmp_keyval; - + #undef SYM } -/** - * gdk_keymap_translate_keyboard_state: - * @keymap: (allow-none): a #GdkKeymap, or %NULL to use the default - * @hardware_keycode: a keycode - * @state: a modifier state - * @group: active keyboard group - * @keyval: (out) (allow-none): return location for keyval, or %NULL - * @effective_group: (out) (allow-none): return location for effective group, or %NULL - * @level: (out) (allow-none): return location for level, or %NULL - * @consumed_modifiers: (out) (allow-none): return location for modifiers that were used to - * determine the group or level, or %NULL - * - * Translates the contents of a #GdkEventKey into a keyval, effective - * group, and level. Modifiers that affected the translation and - * are thus unavailable for application use are returned in - * @consumed_modifiers. See for an explanation of - * groups and levels. The @effective_group is the group that was - * actually used for the translation; some keys such as Enter are not - * affected by the active keyboard group. The @level is derived from - * @state. For convenience, #GdkEventKey already contains the translated - * keyval, so this function isn't as useful as you might think. - * - * - * @consumed_modifiers gives modifiers that should be masked out - * from @state when comparing this key press to a hot key. For - * instance, on a US keyboard, the plus - * symbol is shifted, so when comparing a key press to a - * <Control>plus accelerator <Shift> should - * be masked out. - * - * - * /* We want to ignore irrelevant modifiers like ScrollLock */ - * #define ALL_ACCELS_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK) - * gdk_keymap_translate_keyboard_state (keymap, event->hardware_keycode, - * event->state, event->group, - * &keyval, NULL, NULL, &consumed); - * if (keyval == GDK_PLUS && - * (event->state & ~consumed & ALL_ACCELS_MASK) == GDK_CONTROL_MASK) - * /* Control was pressed */ - * - * - * An older interpretation @consumed_modifiers was that it contained - * all modifiers that might affect the translation of the key; - * this allowed accelerators to be stored with irrelevant consumed - * modifiers, by doing: - * - * /* XXX Don't do this XXX */ - * if (keyval == accel_keyval && - * (event->state & ~consumed & ALL_ACCELS_MASK) == (accel_mods & ~consumed)) - * /* Accelerator was pressed */ - * - * - * However, this did not work if multi-modifier combinations were - * used in the keymap, since, for instance, <Control> - * would be masked out even if only <Control><Alt> - * was used in the keymap. To support this usage as well as well as - * possible, all single modifier combinations - * that could affect the key for any combination of modifiers will - * be returned in @consumed_modifiers; multi-modifier combinations - * are returned only when actually found in @state. When you store - * accelerators, you should always store them with consumed modifiers - * removed. Store <Control>plus, - * not <Control><Shift>plus, - * - * - * Return value: %TRUE if there was a keyval bound to the keycode/state/group - **/ -gboolean -gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, - guint hardware_keycode, - GdkModifierType state, - gint group, - guint *keyval, - gint *effective_group, - gint *level, - GdkModifierType *consumed_modifiers) +static gboolean +gdk_x11_keymap_translate_keyboard_state (GdkKeymap *keymap, + guint hardware_keycode, + GdkModifierType state, + gint group, + guint *keyval, + gint *effective_group, + gint *level, + GdkModifierType *consumed_modifiers) { - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; KeySym tmp_keyval = NoSymbol; guint tmp_modifiers; g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE); g_return_val_if_fail (group < 4, FALSE); - keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap = GET_EFFECTIVE_KEYMAP (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); if (keyval) *keyval = NoSymbol; @@ -1531,7 +1290,7 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, *consumed_modifiers = 0; update_keyrange (keymap_x11); - + if (hardware_keycode < keymap_x11->min_keycode || hardware_keycode > keymap_x11->max_keycode) return FALSE; @@ -1544,7 +1303,7 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, /* replace bits 13 and 14 with the provided group */ state &= ~(1 << 13 | 1 << 14); state |= group << 13; - + MyEnhancedXkbTranslateKeyCode (xkb, hardware_keycode, state, @@ -1554,7 +1313,7 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, level); if (state & ~tmp_modifiers & LockMask) - tmp_keyval = gdk_keyval_to_upper (tmp_keyval); + tmp_keyval = gdk_keyval_to_upper (tmp_keyval); /* We need to augment the consumed modifiers with LockMask, since * we handle that ourselves, and also with the group bits @@ -1565,62 +1324,50 @@ gdk_keymap_translate_keyboard_state (GdkKeymap *keymap, #endif { GdkModifierType bit; - + tmp_modifiers = 0; /* We see what modifiers matter by trying the translation with * and without each possible modifier */ for (bit = GDK_SHIFT_MASK; bit < GDK_BUTTON1_MASK; bit <<= 1) - { - /* Handling of the group here is a bit funky; a traditional - * X keyboard map can have more than two groups, but no way - * of accessing the extra groups is defined. We allow a - * caller to pass in any group to this function, but we - * only can represent switching between group 0 and 1 in - * consumed modifiers. - */ - if (translate_keysym (keymap_x11, hardware_keycode, - (bit == keymap_x11->group_switch_mask) ? 0 : group, - state & ~bit, - NULL, NULL) != - translate_keysym (keymap_x11, hardware_keycode, - (bit == keymap_x11->group_switch_mask) ? 1 : group, - state | bit, - NULL, NULL)) - tmp_modifiers |= bit; - } - + { + /* Handling of the group here is a bit funky; a traditional + * X keyboard map can have more than two groups, but no way + * of accessing the extra groups is defined. We allow a + * caller to pass in any group to this function, but we + * only can represent switching between group 0 and 1 in + * consumed modifiers. + */ + if (translate_keysym (keymap_x11, hardware_keycode, + (bit == keymap_x11->group_switch_mask) ? 0 : group, + state & ~bit, + NULL, NULL) != + translate_keysym (keymap_x11, hardware_keycode, + (bit == keymap_x11->group_switch_mask) ? 1 : group, + state | bit, + NULL, NULL)) + tmp_modifiers |= bit; + } + tmp_keyval = translate_keysym (keymap_x11, hardware_keycode, - group, state, - level, effective_group); + group, state, + level, effective_group); } if (consumed_modifiers) *consumed_modifiers = tmp_modifiers; - + if (keyval) *keyval = tmp_keyval; return tmp_keyval != NoSymbol; } - /* Key handling not part of the keymap */ -/** - * gdk_keyval_name: - * @keyval: a key value. - * - * Converts a key value into a symbolic name. - * The names are the same as those in the - * <gdk/gdkkeysyms.h> header file - * but without the leading "GDK_KEY_". - * - * Return value: (transfer none): a string containing the name of the key, or - * %NULL if @keyval is not a valid key. The string should not be modified. - **/ gchar* -gdk_keyval_name (guint keyval) +_gdk_x11_display_manager_get_keyval_name (GdkDisplayManager *manager, + guint keyval) { switch (keyval) { @@ -1633,23 +1380,25 @@ gdk_keyval_name (guint keyval) case GDK_KEY_KP_Page_Down: return "KP_Page_Down"; } - + return XKeysymToString (keyval); } guint -gdk_keyval_from_name (const gchar *keyval_name) +_gdk_x11_display_manager_lookup_keyval (GdkDisplayManager *manager, + const gchar *keyval_name) { g_return_val_if_fail (keyval_name != NULL, 0); - + return XStringToKeysym (keyval_name); } #ifdef HAVE_XCONVERTCASE void -gdk_keyval_convert_case (guint symbol, - guint *lower, - guint *upper) +_gdk_x11_display_manager_keyval_convert_case (GdkDisplayManager *manager, + guint symbol, + guint *lower, + guint *upper) { KeySym xlower = 0; KeySym xupper = 0; @@ -1658,12 +1407,12 @@ gdk_keyval_convert_case (guint symbol, if ((symbol & 0xff000000) == 0x01000000) { if (lower) - *lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); + *lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); if (upper) - *upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); + *upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); return; } - + if (symbol) XConvertCase (symbol, &xlower, &xupper); @@ -1671,15 +1420,141 @@ gdk_keyval_convert_case (guint symbol, *lower = xlower; if (upper) *upper = xupper; -} -#endif /* HAVE_XCONVERTCASE */ +} +#else /* !HAVE_XCONVERTCASE */ +void +_gdk_x11_display_manager_keyval_convert_case (GdkDisplayManager *manager, + guint symbol, + guint *lower, + guint *upper) +{ + guint xlower = symbol; + guint xupper = symbol; + + /* Check for directly encoded 24-bit UCS characters: */ + if ((symbol & 0xff000000) == 0x01000000) + { + if (lower) + *lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); + if (upper) + *upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); + return; + } + + switch (symbol >> 8) + { + case 0: /* Latin 1 */ + if ((symbol >= GDK_KEY_A) && (symbol <= GDK_KEY_Z)) + xlower += (GDK_KEY_a - GDK_KEY_A); + else if ((symbol >= GDK_KEY_a) && (symbol <= GDK_KEY_z)) + xupper -= (GDK_KEY_a - GDK_KEY_A); + else if ((symbol >= GDK_KEY_Agrave) && (symbol <= GDK_KEY_Odiaeresis)) + xlower += (GDK_KEY_agrave - GDK_KEY_Agrave); + else if ((symbol >= GDK_KEY_agrave) && (symbol <= GDK_KEY_odiaeresis)) + xupper -= (GDK_KEY_agrave - GDK_KEY_Agrave); + else if ((symbol >= GDK_KEY_Ooblique) && (symbol <= GDK_KEY_Thorn)) + xlower += (GDK_KEY_oslash - GDK_KEY_Ooblique); + else if ((symbol >= GDK_KEY_oslash) && (symbol <= GDK_KEY_thorn)) + xupper -= (GDK_KEY_oslash - GDK_KEY_Ooblique); + break; + + case 1: /* Latin 2 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol == GDK_KEY_Aogonek) + xlower = GDK_KEY_aogonek; + else if (symbol >= GDK_KEY_Lstroke && symbol <= GDK_KEY_Sacute) + xlower += (GDK_KEY_lstroke - GDK_KEY_Lstroke); + else if (symbol >= GDK_KEY_Scaron && symbol <= GDK_KEY_Zacute) + xlower += (GDK_KEY_scaron - GDK_KEY_Scaron); + else if (symbol >= GDK_KEY_Zcaron && symbol <= GDK_KEY_Zabovedot) + xlower += (GDK_KEY_zcaron - GDK_KEY_Zcaron); + else if (symbol == GDK_KEY_aogonek) + xupper = GDK_KEY_Aogonek; + else if (symbol >= GDK_KEY_lstroke && symbol <= GDK_KEY_sacute) + xupper -= (GDK_KEY_lstroke - GDK_KEY_Lstroke); + else if (symbol >= GDK_KEY_scaron && symbol <= GDK_KEY_zacute) + xupper -= (GDK_KEY_scaron - GDK_KEY_Scaron); + else if (symbol >= GDK_KEY_zcaron && symbol <= GDK_KEY_zabovedot) + xupper -= (GDK_KEY_zcaron - GDK_KEY_Zcaron); + else if (symbol >= GDK_KEY_Racute && symbol <= GDK_KEY_Tcedilla) + xlower += (GDK_KEY_racute - GDK_KEY_Racute); + else if (symbol >= GDK_KEY_racute && symbol <= GDK_KEY_tcedilla) + xupper -= (GDK_KEY_racute - GDK_KEY_Racute); + break; + + case 2: /* Latin 3 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= GDK_KEY_Hstroke && symbol <= GDK_KEY_Hcircumflex) + xlower += (GDK_KEY_hstroke - GDK_KEY_Hstroke); + else if (symbol >= GDK_KEY_Gbreve && symbol <= GDK_KEY_Jcircumflex) + xlower += (GDK_KEY_gbreve - GDK_KEY_Gbreve); + else if (symbol >= GDK_KEY_hstroke && symbol <= GDK_KEY_hcircumflex) + xupper -= (GDK_KEY_hstroke - GDK_KEY_Hstroke); + else if (symbol >= GDK_KEY_gbreve && symbol <= GDK_KEY_jcircumflex) + xupper -= (GDK_KEY_gbreve - GDK_KEY_Gbreve); + else if (symbol >= GDK_KEY_Cabovedot && symbol <= GDK_KEY_Scircumflex) + xlower += (GDK_KEY_cabovedot - GDK_KEY_Cabovedot); + else if (symbol >= GDK_KEY_cabovedot && symbol <= GDK_KEY_scircumflex) + xupper -= (GDK_KEY_cabovedot - GDK_KEY_Cabovedot); + break; + + case 3: /* Latin 4 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= GDK_KEY_Rcedilla && symbol <= GDK_KEY_Tslash) + xlower += (GDK_KEY_rcedilla - GDK_KEY_Rcedilla); + else if (symbol >= GDK_KEY_rcedilla && symbol <= GDK_KEY_tslash) + xupper -= (GDK_KEY_rcedilla - GDK_KEY_Rcedilla); + else if (symbol == GDK_KEY_ENG) + xlower = GDK_KEY_eng; + else if (symbol == GDK_KEY_eng) + xupper = GDK_KEY_ENG; + else if (symbol >= GDK_KEY_Amacron && symbol <= GDK_KEY_Umacron) + xlower += (GDK_KEY_amacron - GDK_KEY_Amacron); + else if (symbol >= GDK_KEY_amacron && symbol <= GDK_KEY_umacron) + xupper -= (GDK_KEY_amacron - GDK_KEY_Amacron); + break; + + case 6: /* Cyrillic */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= GDK_KEY_Serbian_DJE && symbol <= GDK_KEY_Serbian_DZE) + xlower -= (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje); + else if (symbol >= GDK_KEY_Serbian_dje && symbol <= GDK_KEY_Serbian_dze) + xupper += (GDK_KEY_Serbian_DJE - GDK_KEY_Serbian_dje); + else if (symbol >= GDK_KEY_Cyrillic_YU && symbol <= GDK_KEY_Cyrillic_HARDSIGN) + xlower -= (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu); + else if (symbol >= GDK_KEY_Cyrillic_yu && symbol <= GDK_KEY_Cyrillic_hardsign) + xupper += (GDK_KEY_Cyrillic_YU - GDK_KEY_Cyrillic_yu); + break; + + case 7: /* Greek */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= GDK_KEY_Greek_ALPHAaccent && symbol <= GDK_KEY_Greek_OMEGAaccent) + xlower += (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent); + else if (symbol >= GDK_KEY_Greek_alphaaccent && symbol <= GDK_KEY_Greek_omegaaccent && + symbol != GDK_KEY_Greek_iotaaccentdieresis && + symbol != GDK_KEY_Greek_upsilonaccentdieresis) + xupper -= (GDK_KEY_Greek_alphaaccent - GDK_KEY_Greek_ALPHAaccent); + else if (symbol >= GDK_KEY_Greek_ALPHA && symbol <= GDK_KEY_Greek_OMEGA) + xlower += (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA); + else if (symbol >= GDK_KEY_Greek_alpha && symbol <= GDK_KEY_Greek_omega && + symbol != GDK_KEY_Greek_finalsmallsigma) + xupper -= (GDK_KEY_Greek_alpha - GDK_KEY_Greek_ALPHA); + break; + } + + if (lower) + *lower = xlower; + if (upper) + *upper = xupper; +} +#endif gint _gdk_x11_get_group_for_state (GdkDisplay *display, - GdkModifierType state) + GdkModifierType state) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + #ifdef HAVE_XKB if (display_x11->use_xkb) { @@ -1688,92 +1563,73 @@ _gdk_x11_get_group_for_state (GdkDisplay *display, else #endif { - GdkKeymapX11 *keymap_impl = GDK_KEYMAP_X11 (gdk_keymap_get_for_display (display)); + GdkX11Keymap *keymap_impl = GDK_X11_KEYMAP (gdk_keymap_get_for_display (display)); update_keymaps (keymap_impl); return (state & keymap_impl->group_switch_mask) ? 1 : 0; } } void -_gdk_keymap_add_virtual_modifiers_compat (GdkKeymap *keymap, - GdkModifierType *modifiers) +_gdk_x11_keymap_add_virt_mods (GdkKeymap *keymap, + GdkModifierType *modifiers) { - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; int i; - + keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); for (i = 3; i < 8; i++) { if ((1 << i) & *modifiers) { - if (keymap_x11->modmap[i] & GDK_MOD1_MASK) - *modifiers |= GDK_MOD1_MASK; - else if (keymap_x11->modmap[i] & GDK_SUPER_MASK) - *modifiers |= GDK_SUPER_MASK; - else if (keymap_x11->modmap[i] & GDK_HYPER_MASK) - *modifiers |= GDK_HYPER_MASK; - else if (keymap_x11->modmap[i] & GDK_META_MASK) - *modifiers |= GDK_META_MASK; + if (keymap_x11->modmap[i] & GDK_MOD1_MASK) + *modifiers |= GDK_MOD1_MASK; + else if (keymap_x11->modmap[i] & GDK_SUPER_MASK) + *modifiers |= GDK_SUPER_MASK; + else if (keymap_x11->modmap[i] & GDK_HYPER_MASK) + *modifiers |= GDK_HYPER_MASK; + else if (keymap_x11->modmap[i] & GDK_META_MASK) + *modifiers |= GDK_META_MASK; } } } -/** - * gdk_keymap_add_virtual_modifiers: - * @keymap: a #GdkKeymap - * @state: pointer to the modifier mask to change - * - * Adds virtual modifiers (i.e. Super, Hyper and Meta) which correspond - * to the real modifiers (i.e Mod2, Mod3, ...) in @modifiers. - * are set in @state to their non-virtual counterparts (i.e. Mod2, - * Mod3,...) and set the corresponding bits in @state. - * - * GDK already does this before delivering key events, but for - * compatibility reasons, it only sets the first virtual modifier - * it finds, whereas this function sets all matching virtual modifiers. - * - * This function is useful when matching key events against - * accelerators. - * - * Since: 2.20 - */ -void -gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, - GdkModifierType *state) +static void +gdk_x11_keymap_add_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) { - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; int i; keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); for (i = 3; i < 8; i++) { if ((1 << i) & *state) { - if (keymap_x11->modmap[i] & GDK_MOD1_MASK) - *state |= GDK_MOD1_MASK; - if (keymap_x11->modmap[i] & GDK_SUPER_MASK) - *state |= GDK_SUPER_MASK; - if (keymap_x11->modmap[i] & GDK_HYPER_MASK) - *state |= GDK_HYPER_MASK; - if (keymap_x11->modmap[i] & GDK_META_MASK) - *state |= GDK_META_MASK; + if (keymap_x11->modmap[i] & GDK_MOD1_MASK) + *state |= GDK_MOD1_MASK; + if (keymap_x11->modmap[i] & GDK_SUPER_MASK) + *state |= GDK_SUPER_MASK; + if (keymap_x11->modmap[i] & GDK_HYPER_MASK) + *state |= GDK_HYPER_MASK; + if (keymap_x11->modmap[i] & GDK_META_MASK) + *state |= GDK_META_MASK; } } } gboolean -_gdk_keymap_key_is_modifier (GdkKeymap *keymap, - guint keycode) +_gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, + guint keycode) { - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; gint i; - keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap = GET_EFFECTIVE_KEYMAP (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); if (keycode < keymap_x11->min_keycode || keycode > keymap_x11->max_keycode) @@ -1783,47 +1639,28 @@ _gdk_keymap_key_is_modifier (GdkKeymap *keymap, if (KEYMAP_USE_XKB (keymap)) { XkbDescRec *xkb = get_xkb (keymap_x11); - + if (xkb->map->modmap && xkb->map->modmap[keycode] != 0) - return TRUE; + return TRUE; } else #endif { for (i = 0; i < 8 * keymap_x11->mod_keymap->max_keypermod; i++) - { - if (keycode == keymap_x11->mod_keymap->modifiermap[i]) - return TRUE; - } + { + if (keycode == keymap_x11->mod_keymap->modifiermap[i]) + return TRUE; + } } return FALSE; } -/** - * gdk_keymap_map_virtual_modifiers: - * @keymap: a #GdkKeymap - * @state: pointer to the modifier state to map - * - * Maps the virtual modifiers (i.e. Super, Hyper and Meta) which - * are set in @state to their non-virtual counterparts (i.e. Mod2, - * Mod3,...) and set the corresponding bits in @state. - * - * This function is useful when matching key events against - * accelerators. - * - * Returns: %TRUE if no virtual modifiers were mapped to the - * same non-virtual modifier. Note that %FALSE is also returned - * if a virtual modifier is mapped to a non-virtual modifier that - * was already set in @state. - * - * Since: 2.20 - */ -gboolean -gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, - GdkModifierType *state) +static gboolean +gdk_x11_keymap_map_virtual_modifiers (GdkKeymap *keymap, + GdkModifierType *state) { - GdkKeymapX11 *keymap_x11; + GdkX11Keymap *keymap_x11; const guint vmods[] = { GDK_SUPER_MASK, GDK_HYPER_MASK, GDK_META_MASK }; @@ -1831,7 +1668,7 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, gboolean retval; keymap = GET_EFFECTIVE_KEYMAP (keymap); - keymap_x11 = GDK_KEYMAP_X11 (keymap); + keymap_x11 = GDK_X11_KEYMAP (keymap); if (KEYMAP_USE_XKB (keymap)) get_xkb (keymap_x11); @@ -1857,3 +1694,23 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, return retval; } + +static void +gdk_x11_keymap_class_init (GdkX11KeymapClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkKeymapClass *keymap_class = GDK_KEYMAP_CLASS (klass); + + object_class->finalize = gdk_x11_keymap_finalize; + + keymap_class->get_direction = gdk_x11_keymap_get_direction; + keymap_class->have_bidi_layouts = gdk_x11_keymap_have_bidi_layouts; + keymap_class->get_caps_lock_state = gdk_x11_keymap_get_caps_lock_state; + keymap_class->get_num_lock_state = gdk_x11_keymap_get_num_lock_state; + keymap_class->get_entries_for_keyval = gdk_x11_keymap_get_entries_for_keyval; + keymap_class->get_entries_for_keycode = gdk_x11_keymap_get_entries_for_keycode; + keymap_class->lookup_key = gdk_x11_keymap_lookup_key; + keymap_class->translate_keyboard_state = gdk_x11_keymap_translate_keyboard_state; + keymap_class->add_virtual_modifiers = gdk_x11_keymap_add_virtual_modifiers; + keymap_class->map_virtual_modifiers = gdk_x11_keymap_map_virtual_modifiers; +} diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c index f9df29592f..0f2fd9636a 100644 --- a/gdk/x11/gdkmain-x11.c +++ b/gdk/x11/gdkmain-x11.c @@ -26,13 +26,12 @@ #include "config.h" -#include "gdkx.h" +#include "gdkdeviceprivate.h" +#include "gdkinternals.h" +#include "gdkintl.h" #include "gdkasync.h" #include "gdkdisplay-x11.h" -#include "gdkinternals.h" #include "gdkprivate-x11.h" -#include "gdkintl.h" -#include "gdkdeviceprivate.h" #include #include @@ -49,9 +48,41 @@ #include #endif +/** + * SECTION:x_interaction + * @Short_description: X backend-specific functions + * @Title: X Window System Interaction + * + * The functions in this section are specific to the GDK X11 backend. + * To use them, you need to include the <gdk/gdkx.h> + * header and use the X11-specific pkg-config files to build your + * application (either gdk-x11-3.0 or + * gtk+-x11-3.0). + * + * To make your code compile with other GDK backends, guard backend-specific + * calls by an ifdef as follows. Since GDK may be built with multiple + * backends, you should also check for the backend that is in use (e.g. by + * using the GDK_IS_X11_DISPLAY() macro). + * |[ + * #ifdef GDK_WINDOWING_X11 + * if (GDK_IS_X11_DISPLAY (display)) + * { + * /* make X11-specific calls here */ + * } + * else + * #endif + * #ifdef GDK_WINDOWING_QUARTZ + * if (GDK_IS_QUARTZ_DISPLAY (display)) + * { + * /* make Quartz-specific calls here &ast/ + * } + * else + * #endif + * g_error ("Unsupported GDK backend"); + * ]| + */ -typedef struct _GdkPredicate GdkPredicate; -typedef struct _GdkGlobalErrorTrap GdkGlobalErrorTrap; +typedef struct _GdkPredicate GdkPredicate; struct _GdkPredicate { @@ -65,12 +96,7 @@ static GdkXErrorHandler _gdk_old_error_handler; /* number of times we've pushed the GDK error handler */ static int _gdk_error_handler_push_count = 0; -struct _GdkGlobalErrorTrap -{ - GSList *displays; -}; - -/* +/* * Private function declarations */ @@ -85,26 +111,11 @@ static int gdk_x_error (Display *display, XErrorEvent *error); static int gdk_x_io_error (Display *display); -/* Private variable declarations - */ -static GQueue gdk_error_traps; - -const GOptionEntry _gdk_windowing_args[] = { - { "sync", 0, 0, G_OPTION_ARG_NONE, &_gdk_synchronize, - /* Description of --sync in --help output */ N_("Make X calls synchronous"), NULL }, - { NULL } -}; - void -_gdk_windowing_init (void) +_gdk_x11_windowing_init (void) { - _gdk_x11_initialize_locale (); - - g_queue_init (&gdk_error_traps); XSetErrorHandler (gdk_x_error); XSetIOErrorHandler (gdk_x_io_error); - - _gdk_selection_property = gdk_atom_intern_static_string ("GDK_SELECTION"); } GdkGrabStatus @@ -129,66 +140,19 @@ _gdk_x11_convert_grab_status (gint status) return 0; } -static void -has_pointer_grab_callback (GdkDisplay *display, - gpointer data, - gulong serial) -{ - GdkDevice *device = data; - - _gdk_display_device_grab_update (display, device, serial); -} - -GdkGrabStatus -_gdk_windowing_device_grab (GdkDevice *device, - GdkWindow *window, - GdkWindow *native, - gboolean owner_events, - GdkEventMask event_mask, - GdkWindow *confine_to, - GdkCursor *cursor, - guint32 time) -{ - GdkDisplay *display; - GdkGrabStatus status = GDK_GRAB_SUCCESS; - - if (!window || GDK_WINDOW_DESTROYED (window)) - return GDK_GRAB_NOT_VIEWABLE; - - display = gdk_device_get_display (device); - -#ifdef G_ENABLE_DEBUG - if (_gdk_debug_flags & GDK_DEBUG_NOGRABS) - status = GrabSuccess; - else -#endif - status = GDK_DEVICE_GET_CLASS (device)->grab (device, - native, - owner_events, - event_mask, - confine_to, - cursor, - time); - if (status == GDK_GRAB_SUCCESS) - _gdk_x11_roundtrip_async (display, - has_pointer_grab_callback, - device); - return status; -} - -/** - * _gdk_xgrab_check_unmap: +/* + * _gdk_x11_window_grab_check_unmap: * @window: a #GdkWindow * @serial: serial from Unmap event (or from NextRequest(display) * if the unmap is being done by this client.) - * + * * Checks to see if an unmap request or event causes the current * grab window to become not viewable, and if so, clear the * the pointer we keep to it. **/ void -_gdk_xgrab_check_unmap (GdkWindow *window, - gulong serial) +_gdk_x11_window_grab_check_unmap (GdkWindow *window, + gulong serial) { GdkDisplay *display = gdk_window_get_display (window); GdkDeviceManager *device_manager; @@ -208,15 +172,15 @@ _gdk_xgrab_check_unmap (GdkWindow *window, g_list_free (devices); } -/** - * _gdk_xgrab_check_destroy: +/* + * _gdk_x11_window_grab_check_destroy: * @window: a #GdkWindow * * Checks to see if window is the current grab window, and if * so, clear the current grab window. **/ void -_gdk_xgrab_check_destroy (GdkWindow *window) +_gdk_x11_window_grab_check_destroy (GdkWindow *window) { GdkDisplay *display = gdk_window_get_display (window); GdkDeviceManager *device_manager; @@ -250,42 +214,6 @@ _gdk_xgrab_check_destroy (GdkWindow *window) g_list_free (devices); } -void -_gdk_windowing_display_set_sm_client_id (GdkDisplay *display, - const gchar *sm_client_id) -{ - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - - if (display->closed) - return; - - if (sm_client_id && strcmp (sm_client_id, "")) - { - XChangeProperty (display_x11->xdisplay, display_x11->leader_window, - gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID"), - XA_STRING, 8, PropModeReplace, (guchar *)sm_client_id, - strlen (sm_client_id)); - } - else - XDeleteProperty (display_x11->xdisplay, display_x11->leader_window, - gdk_x11_get_xatom_by_name_for_display (display, "SM_CLIENT_ID")); -} - -/* Close all open displays - */ -void -_gdk_windowing_exit (void) -{ - GSList *tmp_list = _gdk_displays; - - while (tmp_list) - { - XCloseDisplay (GDK_DISPLAY_XDISPLAY (tmp_list->data)); - - tmp_list = tmp_list->next; - } -} - /* *-------------------------------------------------------------- * gdk_x_io_error @@ -352,11 +280,11 @@ gdk_x_error (Display *xdisplay, displays = gdk_display_manager_list_displays (manager); while (displays != NULL) { - GdkDisplayX11 *gdk_display = displays->data; + GdkX11Display *gdk_display = displays->data; if (xdisplay == gdk_display->xdisplay) { - error_display = GDK_DISPLAY_OBJECT (gdk_display); + error_display = GDK_DISPLAY (gdk_display); g_slist_free (displays); displays = NULL; } @@ -415,186 +343,35 @@ _gdk_x11_error_handler_pop (void) } } -/** - * gdk_error_trap_push: - * - * This function allows X errors to be trapped instead of the normal - * behavior of exiting the application. It should only be used if it - * is not possible to avoid the X error in any other way. Errors are - * ignored on all #GdkDisplay currently known to the - * #GdkDisplayManager. If you don't care which error happens and just - * want to ignore everything, pop with gdk_error_trap_pop_ignored(). - * If you need the error code, use gdk_error_trap_pop() which may have - * to block and wait for the error to arrive from the X server. - * - * This API exists on all platforms but only does anything on X. - * - * You can use gdk_x11_display_error_trap_push() to ignore errors - * on only a single display. - * - * - * Trapping an X error - * - * gdk_error_trap_push (); - * - * // ... Call the X function which may cause an error here ... - * - * - * if (gdk_error_trap_pop ()) - * { - * // ... Handle the error here ... - * } - * - * - * - */ -void -gdk_error_trap_push (void) -{ - GdkGlobalErrorTrap *trap; - GdkDisplayManager *manager; - GSList *tmp_list; - - trap = g_slice_new (GdkGlobalErrorTrap); - manager = gdk_display_manager_get (); - trap->displays = gdk_display_manager_list_displays (manager); - - g_slist_foreach (trap->displays, (GFunc) g_object_ref, NULL); - for (tmp_list = trap->displays; - tmp_list != NULL; - tmp_list = tmp_list->next) - { - gdk_x11_display_error_trap_push (tmp_list->data); - } - - g_queue_push_head (&gdk_error_traps, trap); -} - -static gint -gdk_error_trap_pop_internal (gboolean need_code) -{ - GdkGlobalErrorTrap *trap; - gint result; - GSList *tmp_list; - - trap = g_queue_pop_head (&gdk_error_traps); - - g_return_val_if_fail (trap != NULL, Success); - - result = Success; - for (tmp_list = trap->displays; - tmp_list != NULL; - tmp_list = tmp_list->next) - { - gint code = Success; - - if (need_code) - code = gdk_x11_display_error_trap_pop (tmp_list->data); - else - gdk_x11_display_error_trap_pop_ignored (tmp_list->data); - - /* we use the error on the last display listed, why not. */ - if (code != Success) - result = code; - } - - g_slist_foreach (trap->displays, (GFunc) g_object_unref, NULL); - g_slist_free (trap->displays); - - g_slice_free (GdkGlobalErrorTrap, trap); - - return result; -} - -/** - * gdk_error_trap_pop_ignored: - * - * Removes an error trap pushed with gdk_error_trap_push(), but - * without bothering to wait and see whether an error occurred. If an - * error arrives later asynchronously that was triggered while the - * trap was pushed, that error will be ignored. - * - * Since: 3.0 - */ -void -gdk_error_trap_pop_ignored (void) -{ - gdk_error_trap_pop_internal (FALSE); -} - -/** - * gdk_error_trap_pop: - * - * Removes an error trap pushed with gdk_error_trap_push(). - * May block until an error has been definitively received - * or not received from the X server. gdk_error_trap_pop_ignored() - * is preferred if you don't need to know whether an error - * occurred, because it never has to block. If you don't - * need the return value of gdk_error_trap_pop(), use - * gdk_error_trap_pop_ignored(). - * - * Prior to GDK 3.0, this function would not automatically - * sync for you, so you had to gdk_flush() if your last - * call to Xlib was not a blocking round trip. - * - * Return value: X error code or 0 on success - */ gint -gdk_error_trap_pop (void) -{ - return gdk_error_trap_pop_internal (TRUE); -} - -gchar * -gdk_get_display (void) -{ - return g_strdup (gdk_display_get_name (gdk_display_get_default ())); -} - -/** - * _gdk_send_xevent: - * @display: #GdkDisplay which @window is on - * @window: window ID to which to send the event - * @propagate: %TRUE if the event should be propagated if the target window - * doesn't handle it. - * @event_mask: event mask to match against, or 0 to send it to @window - * without regard to event masks. - * @event_send: #XEvent to send - * - * Send an event, like XSendEvent(), but trap errors and check - * the result. - * - * Return value: %TRUE if sending the event succeeded. - **/ -gint -_gdk_send_xevent (GdkDisplay *display, - Window window, - gboolean propagate, - glong event_mask, - XEvent *event_send) +_gdk_x11_display_send_xevent (GdkDisplay *display, + Window window, + gboolean propagate, + glong event_mask, + XEvent *event_send) { gboolean result; - if (display->closed) + if (gdk_display_is_closed (display)) return FALSE; - gdk_error_trap_push (); - result = XSendEvent (GDK_DISPLAY_XDISPLAY (display), window, - propagate, event_mask, event_send); + gdk_x11_display_error_trap_push (display); + result = XSendEvent (GDK_DISPLAY_XDISPLAY (display), window, + propagate, event_mask, event_send); XSync (GDK_DISPLAY_XDISPLAY (display), False); - - if (gdk_error_trap_pop ()) + + if (gdk_x11_display_error_trap_pop (display)) return FALSE; - + return result; } void -_gdk_region_get_xrectangles (const cairo_region_t *region, - gint x_offset, - gint y_offset, - XRectangle **rects, - gint *n_rects) +_gdk_x11_region_get_xrectangles (const cairo_region_t *region, + gint x_offset, + gint y_offset, + XRectangle **rects, + gint *n_rects) { XRectangle *rectangles; cairo_rectangle_int_t box; @@ -685,14 +462,3 @@ gdk_x11_get_default_xdisplay (void) { return GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); } - -void -_gdk_windowing_event_data_copy (const GdkEvent *src, - GdkEvent *dst) -{ -} - -void -_gdk_windowing_event_data_free (GdkEvent *event) -{ -} diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h index ee5e1a76d9..d4114c9108 100644 --- a/gdk/x11/gdkprivate-x11.h +++ b/gdk/x11/gdkprivate-x11.h @@ -31,111 +31,275 @@ #ifndef __GDK_PRIVATE_X11_H__ #define __GDK_PRIVATE_X11_H__ -#include -#include -#include +#include "gdkcursor.h" +#include "gdkprivate.h" +#include "gdkinternals.h" +#include "gdkx.h" #include "gdkwindow-x11.h" +#include "gdkscreen-x11.h" #include "gdkdisplay-x11.h" + +#include +#include +#include +#include + #include -typedef struct _GdkCursorPrivate GdkCursorPrivate; - -struct _GdkCursorPrivate -{ - GdkCursor cursor; - Cursor xcursor; - GdkDisplay *display; - gchar *name; - guint serial; -}; - void _gdk_x11_error_handler_push (void); void _gdk_x11_error_handler_pop (void); Colormap _gdk_visual_get_x11_colormap (GdkVisual *visual); -void _gdk_xid_table_insert (GdkDisplay *display, - XID *xid, - gpointer data); -void _gdk_xid_table_remove (GdkDisplay *display, - XID xid); -gint _gdk_send_xevent (GdkDisplay *display, - Window window, - gboolean propagate, - glong event_mask, - XEvent *event_send); +gint _gdk_x11_screen_visual_get_best_depth (GdkScreen *screen); +GdkVisualType _gdk_x11_screen_visual_get_best_type (GdkScreen *screen); +GdkVisual * _gdk_x11_screen_get_system_visual (GdkScreen *screen); +GdkVisual* _gdk_x11_screen_visual_get_best (GdkScreen *screen); +GdkVisual* _gdk_x11_screen_visual_get_best_with_depth (GdkScreen *screen, + gint depth); +GdkVisual* _gdk_x11_screen_visual_get_best_with_type (GdkScreen *screen, + GdkVisualType visual_type); +GdkVisual* _gdk_x11_screen_visual_get_best_with_both (GdkScreen *screen, + gint depth, + GdkVisualType visual_type); +void _gdk_x11_screen_query_depths (GdkScreen *screen, + gint **depths, + gint *count); +void _gdk_x11_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count); +GList * _gdk_x11_screen_list_visuals (GdkScreen *screen); + + + +void _gdk_x11_display_add_window (GdkDisplay *display, + XID *xid, + GdkWindow *window); +void _gdk_x11_display_remove_window (GdkDisplay *display, + XID xid); + +gint _gdk_x11_display_send_xevent (GdkDisplay *display, + Window window, + gboolean propagate, + glong event_mask, + XEvent *event_send); /* Routines from gdkgeometry-x11.c */ -void _gdk_window_move_resize_child (GdkWindow *window, - gint x, - gint y, - gint width, - gint height); -void _gdk_window_process_expose (GdkWindow *window, - gulong serial, - GdkRectangle *area); +void _gdk_x11_window_move_resize_child (GdkWindow *window, + gint x, + gint y, + gint width, + gint height); +void _gdk_x11_window_process_expose (GdkWindow *window, + gulong serial, + GdkRectangle *area); + +void _gdk_x11_window_sync_rendering (GdkWindow *window); +gboolean _gdk_x11_window_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease); +gboolean _gdk_x11_window_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, + GdkModifierType modifiers, + GdkEventType button_pressrelease); +gboolean _gdk_x11_window_get_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data); +void _gdk_x11_window_change_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements); +void _gdk_x11_window_delete_property (GdkWindow *window, + GdkAtom property); gboolean _gdk_x11_window_queue_antiexpose (GdkWindow *window, - cairo_region_t *area); + cairo_region_t *area); void _gdk_x11_window_translate (GdkWindow *window, - cairo_region_t *area, - gint dx, - gint dy); + cairo_region_t *area, + gint dx, + gint dy); -void _gdk_selection_window_destroyed (GdkWindow *window); -gboolean _gdk_selection_filter_clear_event (XSelectionClearEvent *event); +void _gdk_x11_selection_window_destroyed (GdkWindow *window); +gboolean _gdk_x11_selection_filter_clear_event (XSelectionClearEvent *event); -cairo_region_t* _xwindow_get_shape (Display *xdisplay, - Window window, - gint shape_type); +cairo_region_t* _gdk_x11_xwindow_get_shape (Display *xdisplay, + Window window, + gint shape_type); -void _gdk_region_get_xrectangles (const cairo_region_t *region, - gint x_offset, - gint y_offset, - XRectangle **rects, - gint *n_rects); +void _gdk_x11_region_get_xrectangles (const cairo_region_t *region, + gint x_offset, + gint y_offset, + XRectangle **rects, + gint *n_rects); -gboolean _gdk_moveresize_handle_event (XEvent *event); -gboolean _gdk_moveresize_configure_done (GdkDisplay *display, - GdkWindow *window); +gboolean _gdk_x11_moveresize_handle_event (XEvent *event); +gboolean _gdk_x11_moveresize_configure_done (GdkDisplay *display, + GdkWindow *window); -void _gdk_keymap_state_changed (GdkDisplay *display, - XEvent *event); -void _gdk_keymap_keys_changed (GdkDisplay *display); -gint _gdk_x11_get_group_for_state (GdkDisplay *display, - GdkModifierType state); -void _gdk_keymap_add_virtual_modifiers_compat (GdkKeymap *keymap, - GdkModifierType *modifiers); -gboolean _gdk_keymap_key_is_modifier (GdkKeymap *keymap, - guint keycode); +void _gdk_x11_keymap_state_changed (GdkDisplay *display, + XEvent *event); +void _gdk_x11_keymap_keys_changed (GdkDisplay *display); +gint _gdk_x11_get_group_for_state (GdkDisplay *display, + GdkModifierType state); +void _gdk_x11_keymap_add_virt_mods (GdkKeymap *keymap, + GdkModifierType *modifiers); +gboolean _gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap, + guint keycode); -void _gdk_x11_initialize_locale (void); +void _gdk_x11_windowing_init (void); -void _gdk_xgrab_check_unmap (GdkWindow *window, - gulong serial); -void _gdk_xgrab_check_destroy (GdkWindow *window); +void _gdk_x11_window_grab_check_unmap (GdkWindow *window, + gulong serial); +void _gdk_x11_window_grab_check_destroy (GdkWindow *window); gboolean _gdk_x11_display_is_root_window (GdkDisplay *display, - Window xroot_window); + Window xroot_window); + +GdkDisplay * _gdk_x11_display_open (const gchar *display_name); +void _gdk_x11_display_make_default (GdkDisplay *display); +void _gdk_x11_display_update_grab_info (GdkDisplay *display, + GdkDevice *device, + gint status); +void _gdk_x11_display_update_grab_info_ungrab (GdkDisplay *display, + GdkDevice *device, + guint32 time, + gulong serial); +void _gdk_x11_display_queue_events (GdkDisplay *display); + + +gboolean _gdk_x11_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event); +GdkWindow * _gdk_x11_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection); +void _gdk_x11_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time); +gint _gdk_x11_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format); +void _gdk_x11_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time); + +gint _gdk_x11_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); +gchar * _gdk_x11_display_utf8_to_string_target (GdkDisplay *displayt, + const gchar *str); + +void _gdk_x11_device_check_extension_events (GdkDevice *device); + +GdkDeviceManager *_gdk_x11_device_manager_new (GdkDisplay *display); + +void _gdk_x11_device_xi_update_window_info (GdkWindow *window); + +void _gdk_x11_device_xi_update_axes (GdkDevice *device, + gint axes_count, + gint first_axis, + gint *axis_data); +void _gdk_x11_device_xi_translate_axes (GdkDevice *device, + GdkWindow *window, + gint *axis_data, + gdouble *axes, + gdouble *x, + gdouble *y); + +guchar * _gdk_x11_device_xi2_translate_event_mask (GdkEventMask event_mask, + gint *len); +guint _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state, + XIButtonState *buttons_state); + +void _gdk_x11_display_manager_add_display (GdkDisplayManager *manager, + GdkDisplay *display); +void _gdk_x11_display_manager_remove_display (GdkDisplayManager *manager, + GdkDisplay *display); + +GdkAtom _gdk_x11_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gboolean copy_name); +gchar * _gdk_x11_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom); +guint _gdk_x11_display_manager_lookup_keyval (GdkDisplayManager *manager, + const gchar *name); +gchar * _gdk_x11_display_manager_get_keyval_name (GdkDisplayManager *manager, + guint keyval); +void _gdk_x11_display_manager_keyval_convert_case (GdkDisplayManager *manager, + guint symbol, + guint *lower, + guint *upper); + +GdkCursor *_gdk_x11_display_get_cursor_for_type (GdkDisplay *display, + GdkCursorType type); +GdkCursor *_gdk_x11_display_get_cursor_for_name (GdkDisplay *display, + const gchar *name); +GdkCursor *_gdk_x11_display_get_cursor_for_pixbuf (GdkDisplay *display, + GdkPixbuf *pixbuf, + gint x, + gint y); +gboolean _gdk_x11_display_supports_cursor_alpha (GdkDisplay *display); +gboolean _gdk_x11_display_supports_cursor_color (GdkDisplay *display); +void _gdk_x11_display_get_default_cursor_size (GdkDisplay *display, + guint *width, + guint *height); +void _gdk_x11_display_get_maximal_cursor_size (GdkDisplay *display, + guint *width, + guint *height); +void _gdk_x11_display_before_process_all_updates (GdkDisplay *display); +void _gdk_x11_display_after_process_all_updates (GdkDisplay *display); +void _gdk_x11_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask); void _gdk_x11_precache_atoms (GdkDisplay *display, - const gchar * const *atom_names, - gint n_atoms); + const gchar * const *atom_names, + gint n_atoms); -void _gdk_screen_x11_events_init (GdkScreen *screen); +void _gdk_x11_display_init_dnd (GdkDisplay *display); -void _gdk_events_init (GdkDisplay *display); -void _gdk_events_uninit (GdkDisplay *display); -void _gdk_windowing_window_init (GdkScreen *screen); -void _gdk_visual_init (GdkScreen *screen); -void _gdk_dnd_init (GdkDisplay *display); +void _gdk_x11_screen_init_root_window (GdkScreen *screen); +void _gdk_x11_screen_init_visuals (GdkScreen *screen); +void _gdk_x11_screen_init_events (GdkScreen *screen); void _gdk_x11_cursor_update_theme (GdkCursor *cursor); void _gdk_x11_cursor_display_finalize (GdkDisplay *display); +void _gdk_x11_window_register_dnd (GdkWindow *window); + gboolean _gdk_x11_get_xft_setting (GdkScreen *screen, - const gchar *name, - GValue *value); + const gchar *name, + GValue *value); GdkGrabStatus _gdk_x11_convert_grab_status (gint status); @@ -143,18 +307,26 @@ cairo_surface_t * _gdk_x11_window_create_bitmap_surface (GdkWindow *window, int width, int height); -extern gboolean _gdk_use_xshm; -extern const int _gdk_nenvent_masks; -extern const int _gdk_event_mask_table[]; -extern GdkAtom _gdk_selection_property; -extern gboolean _gdk_synchronize; +extern const gint _gdk_x11_event_mask_table[]; +extern const gint _gdk_x11_event_mask_table_size; -#define GDK_SCREEN_DISPLAY(screen) (GDK_SCREEN_X11 (screen)->display) -#define GDK_SCREEN_XROOTWIN(screen) (GDK_SCREEN_X11 (screen)->xroot_window) -#define GDK_WINDOW_SCREEN(win) (gdk_window_get_screen (win)) -#define GDK_WINDOW_DISPLAY(win) (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->display) -#define GDK_WINDOW_XROOTWIN(win) (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xroot_window) +#define GDK_SCREEN_DISPLAY(screen) (GDK_X11_SCREEN (screen)->display) +#define GDK_SCREEN_XROOTWIN(screen) (GDK_X11_SCREEN (screen)->xroot_window) +#define GDK_WINDOW_SCREEN(win) (gdk_window_get_screen (win)) +#define GDK_WINDOW_DISPLAY(win) (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->display) +#define GDK_WINDOW_XROOTWIN(win) (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->xroot_window) #define GDK_GC_DISPLAY(gc) (GDK_SCREEN_DISPLAY (GDK_GC_X11(gc)->screen)) #define GDK_WINDOW_IS_X11(win) (GDK_IS_WINDOW_IMPL_X11 ((win)->impl)) +/* override some macros from gdkx.h with direct-access variants */ +#undef GDK_DISPLAY_XDISPLAY +#undef GDK_WINDOW_XDISPLAY +#undef GDK_WINDOW_XID +#undef GDK_SCREEN_XDISPLAY + +#define GDK_DISPLAY_XDISPLAY(display) (GDK_X11_DISPLAY(display)->xdisplay) +#define GDK_WINDOW_XDISPLAY(win) (GDK_X11_SCREEN (GDK_WINDOW_SCREEN (win))->xdisplay) +#define GDK_WINDOW_XID(win) (GDK_WINDOW_IMPL_X11(GDK_WINDOW (win)->impl)->xid) +#define GDK_SCREEN_XDISPLAY(screen) (GDK_X11_SCREEN (screen)->xdisplay) + #endif /* __GDK_PRIVATE_X11_H__ */ diff --git a/gdk/x11/gdkproperty-x11.c b/gdk/x11/gdkproperty-x11.c index 00132b29e1..e8ddecd992 100644 --- a/gdk/x11/gdkproperty-x11.c +++ b/gdk/x11/gdkproperty-x11.c @@ -27,14 +27,13 @@ #include "config.h" #include "gdkproperty.h" - #include "gdkmain.h" -#include "gdkx.h" #include "gdkprivate.h" #include "gdkinternals.h" +#include "gdkselection.h" +#include "gdkprivate-x11.h" #include "gdkdisplay-x11.h" #include "gdkscreen-x11.h" -#include "gdkselection.h" #include #include @@ -175,7 +174,7 @@ insert_atom_pair (GdkDisplay *display, GdkAtom virtual_atom, Atom xatom) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); if (!display_x11->atom_from_virtual) { @@ -195,7 +194,7 @@ static Atom lookup_cached_xatom (GdkDisplay *display, GdkAtom atom) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); if (ATOM_TO_INDEX (atom) < G_N_ELEMENTS (xatoms_offset) - N_CUSTOM_PREDEFINED) return ATOM_TO_INDEX (atom); @@ -231,7 +230,7 @@ gdk_x11_atom_to_xatom_for_display (GdkDisplay *display, if (atom == GDK_NONE) return None; - if (display->closed) + if (gdk_display_is_closed (display)) return None; xatom = lookup_cached_xatom (display, atom); @@ -329,7 +328,7 @@ GdkAtom gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, Atom xatom) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkAtom virtual_atom = GDK_NONE; g_return_val_if_fail (GDK_IS_DISPLAY (display), GDK_NONE); @@ -337,10 +336,10 @@ gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, if (xatom == None) return GDK_NONE; - if (display->closed) + if (gdk_display_is_closed (display)) return GDK_NONE; - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); if (xatom < G_N_ELEMENTS (xatoms_offset) - N_CUSTOM_PREDEFINED) return INDEX_TO_ATOM (xatom); @@ -355,9 +354,9 @@ gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, * we take precautions */ char *name; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); name = XGetAtomName (GDK_DISPLAY_XDISPLAY (display), xatom); - if (gdk_error_trap_pop ()) + if (gdk_x11_display_error_trap_pop (display)) { g_warning (G_STRLOC " invalid X atom: %ld", xatom); } @@ -394,87 +393,44 @@ virtual_atom_check_init (void) if (!virtual_atom_hash) { gint i; - + virtual_atom_hash = g_hash_table_new (g_str_hash, g_str_equal); virtual_atom_array = g_ptr_array_new (); - + for (i = 0; i < G_N_ELEMENTS (xatoms_offset); i++) - { - g_ptr_array_add (virtual_atom_array, (gchar *)(xatoms_string + xatoms_offset[i])); - g_hash_table_insert (virtual_atom_hash, (gchar *)(xatoms_string + xatoms_offset[i]), - GUINT_TO_POINTER (i)); - } + { + g_ptr_array_add (virtual_atom_array, (gchar *)(xatoms_string + xatoms_offset[i])); + g_hash_table_insert (virtual_atom_hash, (gchar *)(xatoms_string + xatoms_offset[i]), + GUINT_TO_POINTER (i)); + } } } -static GdkAtom -intern_atom (const gchar *atom_name, - gboolean dup) +GdkAtom +_gdk_x11_display_manager_atom_intern (GdkDisplayManager *manager, + const gchar *atom_name, + gboolean dup) { GdkAtom result; virtual_atom_check_init (); - + result = GDK_POINTER_TO_ATOM (g_hash_table_lookup (virtual_atom_hash, atom_name)); if (!result) { result = INDEX_TO_ATOM (virtual_atom_array->len); - + g_ptr_array_add (virtual_atom_array, dup ? g_strdup (atom_name) : (gchar *)atom_name); - g_hash_table_insert (virtual_atom_hash, - g_ptr_array_index (virtual_atom_array, - ATOM_TO_INDEX (result)), - GDK_ATOM_TO_POINTER (result)); + g_hash_table_insert (virtual_atom_hash, + g_ptr_array_index (virtual_atom_array, + ATOM_TO_INDEX (result)), + GDK_ATOM_TO_POINTER (result)); } return result; } -/** - * gdk_atom_intern: - * @atom_name: a string. - * @only_if_exists: if %TRUE, GDK is allowed to not create a new atom, but - * just return %GDK_NONE if the requested atom doesn't already - * exists. Currently, the flag is ignored, since checking the - * existance of an atom is as expensive as creating it. - * - * Finds or creates an atom corresponding to a given string. - * - * Returns: the atom corresponding to @atom_name. - */ -GdkAtom -gdk_atom_intern (const gchar *atom_name, - gboolean only_if_exists) -{ - return intern_atom (atom_name, TRUE); -} - -/** - * gdk_atom_intern_static_string: - * @atom_name: a static string - * - * Finds or creates an atom corresponding to a given string. - * - * Note that this function is identical to gdk_atom_intern() except - * that if a new #GdkAtom is created the string itself is used rather - * than a copy. This saves memory, but can only be used if the string - * will always exist. It can be used with statically - * allocated strings in the main program, but not with statically - * allocated memory in dynamically loaded modules, if you expect to - * ever unload the module again (e.g. do not use this function in - * GTK+ theme engines). - * - * Returns: the atom corresponding to @atom_name - * - * Since: 2.10 - */ -GdkAtom -gdk_atom_intern_static_string (const gchar *atom_name) -{ - return intern_atom (atom_name, FALSE); -} - -static G_CONST_RETURN char * +static const gchar * get_atom_name (GdkAtom atom) { virtual_atom_check_init (); @@ -485,18 +441,10 @@ get_atom_name (GdkAtom atom) return NULL; } -/** - * gdk_atom_name: - * @atom: a #GdkAtom. - * - * Determines the string corresponding to an atom. - * - * Returns: a newly-allocated string containing the string - * corresponding to @atom. When you are done with the - * return value, you should free it using g_free(). - */ + gchar * -gdk_atom_name (GdkAtom atom) +_gdk_x11_display_manager_get_atom_name (GdkDisplayManager *manager, + GdkAtom atom) { return g_strdup (get_atom_name (atom)); } @@ -583,70 +531,17 @@ gdk_x11_get_xatom_name (Atom xatom) return get_atom_name (gdk_x11_xatom_to_atom (xatom)); } -/** - * gdk_property_get: - * @window: a #GdkWindow. - * @property: the property to retrieve. - * @type: the desired property type, or %GDK_NONE, if any type of data - * is acceptable. If this does not match the actual - * type, then @actual_format and @actual_length will - * be filled in, a warning will be printed to stderr - * and no data will be returned. - * @offset: the offset into the property at which to begin - * retrieving data, in 4 byte units. - * @length: the length of the data to retrieve in bytes. Data is - * considered to be retrieved in 4 byte chunks, so @length - * will be rounded up to the next highest 4 byte boundary - * (so be careful not to pass a value that might overflow - * when rounded up). - * @pdelete: if %TRUE, delete the property after retrieving the - * data. - * @actual_property_type: location to store the actual type of - * the property. - * @actual_format: location to store the actual return format of the - * data; either 8, 16 or 32 bits. - * @actual_length: location to store the length of the retrieved data, in - * bytes. Data returned in the 32 bit format is stored - * in a long variable, so the actual number of 32 bit - * elements should be be calculated via - * @actual_length / sizeof(glong) to ensure portability to - * 64 bit systems. - * @data: location to store a pointer to the data. The retrieved - * data should be freed with g_free() when you are finished - * using it. - * - * Retrieves a portion of the contents of a property. If the - * property does not exist, then the function returns %FALSE, - * and %GDK_NONE will be stored in @actual_property_type. - * - * - * - * The XGetWindowProperty() function that gdk_property_get() - * uses has a very confusing and complicated set of semantics. - * Unfortunately, gdk_property_get() makes the situation - * worse instead of better (the semantics should be considered - * undefined), and also prints warnings to stderr in cases where it - * should return a useful error to the program. You are advised to use - * XGetWindowProperty() directly until a replacement function for - * gdk_property_get() - * is provided. - * - * - * - * Returns: %TRUE if data was successfully received and stored - * in @data, otherwise %FALSE. - */ gboolean -gdk_property_get (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gulong offset, - gulong length, - gint pdelete, - GdkAtom *actual_property_type, - gint *actual_format_type, - gint *actual_length, - guchar **data) +_gdk_x11_window_get_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gulong offset, + gulong length, + gint pdelete, + GdkAtom *actual_property_type, + gint *actual_format_type, + gint *actual_length, + guchar **data) { GdkDisplay *display; Atom ret_prop_type; @@ -782,34 +677,14 @@ gdk_property_get (GdkWindow *window, return TRUE; } -/** - * gdk_property_change: - * @window: a #GdkWindow. - * @property: the property to change. - * @type: the new type for the property. If @mode is - * %GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this - * must match the existing type or an error will occur. - * @format: the new format for the property. If @mode is - * %GDK_PROP_MODE_PREPEND or %GDK_PROP_MODE_APPEND, then this - * must match the existing format or an error will occur. - * @mode: a value describing how the new data is to be combined - * with the current data. - * @data: the data (a guchar * - * gushort *, or gulong *, - * depending on @format), cast to a guchar *. - * @nelements: the number of elements of size determined by the format, - * contained in @data. - * - * Changes the contents of a property on a window. - */ void -gdk_property_change (GdkWindow *window, - GdkAtom property, - GdkAtom type, - gint format, - GdkPropMode mode, - const guchar *data, - gint nelements) +_gdk_x11_window_change_property (GdkWindow *window, + GdkAtom property, + GdkAtom type, + gint format, + GdkPropMode mode, + const guchar *data, + gint nelements) { GdkDisplay *display; Window xwindow; @@ -865,16 +740,9 @@ gdk_property_change (GdkWindow *window, xtype, format, mode, (guchar *)data, nelements); } -/** - * gdk_property_delete: - * @window: a #GdkWindow. - * @property: the property to delete. - * - * Deletes a property from a window. - */ void -gdk_property_delete (GdkWindow *window, - GdkAtom property) +_gdk_x11_window_delete_property (GdkWindow *window, + GdkAtom property) { g_return_if_fail (!window || GDK_WINDOW_IS_X11 (window)); diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index 5927378839..85aa09afc9 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -1,7 +1,7 @@ /* * gdkscreen-x11.c - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -24,11 +24,8 @@ #include "config.h" #include "gdkscreen-x11.h" - -#include "gdkscreen.h" -#include "gdkdisplay.h" #include "gdkdisplay-x11.h" -#include "gdkx.h" +#include "gdkprivate-x11.h" #include @@ -54,8 +51,8 @@ #include "gdksettings.c" -static void gdk_screen_x11_dispose (GObject *object); -static void gdk_screen_x11_finalize (GObject *object); +static void gdk_x11_screen_dispose (GObject *object); +static void gdk_x11_screen_finalize (GObject *object); static void init_randr_support (GdkScreen *screen); static void deinit_multihead (GdkScreen *screen); @@ -67,7 +64,7 @@ enum static guint signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_TYPE (GdkScreenX11, _gdk_screen_x11, GDK_TYPE_SCREEN) +G_DEFINE_TYPE (GdkX11Screen, gdk_x11_screen, GDK_TYPE_SCREEN) typedef struct _NetWmSupportedAtoms NetWmSupportedAtoms; @@ -87,337 +84,184 @@ struct _GdkX11Monitor char * manufacturer; }; -static void -_gdk_screen_x11_class_init (GdkScreenX11Class *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->dispose = gdk_screen_x11_dispose; - object_class->finalize = gdk_screen_x11_finalize; - - signals[WINDOW_MANAGER_CHANGED] = - g_signal_new (g_intern_static_string ("window_manager_changed"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GdkScreenX11Class, window_manager_changed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); -} static void -_gdk_screen_x11_init (GdkScreenX11 *screen) +gdk_x11_screen_init (GdkX11Screen *screen) { } -/** - * gdk_screen_get_display: - * @screen: a #GdkScreen - * - * Gets the display to which the @screen belongs. - * - * Returns: (transfer none): the display to which @screen belongs - * - * Since: 2.2 - **/ -GdkDisplay * -gdk_screen_get_display (GdkScreen *screen) +static GdkDisplay * +gdk_x11_screen_get_display (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return GDK_SCREEN_X11 (screen)->display; + return GDK_X11_SCREEN (screen)->display; } -/** - * gdk_screen_get_width: - * @screen: a #GdkScreen - * - * Gets the width of @screen in pixels - * - * Returns: the width of @screen in pixels. - * - * Since: 2.2 - **/ -gint -gdk_screen_get_width (GdkScreen *screen) + +static gint +gdk_x11_screen_get_width (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return WidthOfScreen (GDK_SCREEN_X11 (screen)->xscreen); + return WidthOfScreen (GDK_X11_SCREEN (screen)->xscreen); } -/** - * gdk_screen_get_height: - * @screen: a #GdkScreen - * - * Gets the height of @screen in pixels - * - * Returns: the height of @screen in pixels. - * - * Since: 2.2 - **/ -gint -gdk_screen_get_height (GdkScreen *screen) +static gint +gdk_x11_screen_get_height (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return HeightOfScreen (GDK_SCREEN_X11 (screen)->xscreen); + return HeightOfScreen (GDK_X11_SCREEN (screen)->xscreen); } -/** - * gdk_screen_get_width_mm: - * @screen: a #GdkScreen - * - * Gets the width of @screen in millimeters. - * Note that on some X servers this value will not be correct. - * - * Returns: the width of @screen in millimeters. - * - * Since: 2.2 - **/ -gint -gdk_screen_get_width_mm (GdkScreen *screen) +static gint +gdk_x11_screen_get_width_mm (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return WidthMMOfScreen (GDK_SCREEN_X11 (screen)->xscreen); + return WidthMMOfScreen (GDK_X11_SCREEN (screen)->xscreen); } -/** - * gdk_screen_get_height_mm: - * @screen: a #GdkScreen - * - * Returns the height of @screen in millimeters. - * Note that on some X servers this value will not be correct. - * - * Returns: the heigth of @screen in millimeters. - * - * Since: 2.2 - **/ -gint -gdk_screen_get_height_mm (GdkScreen *screen) +static gint +gdk_x11_screen_get_height_mm (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return HeightMMOfScreen (GDK_SCREEN_X11 (screen)->xscreen); + return HeightMMOfScreen (GDK_X11_SCREEN (screen)->xscreen); } -/** - * gdk_screen_get_number: - * @screen: a #GdkScreen - * - * Gets the index of @screen among the screens in the display - * to which it belongs. (See gdk_screen_get_display()) - * - * Returns: the index - * - * Since: 2.2 - **/ -gint -gdk_screen_get_number (GdkScreen *screen) +static gint +gdk_x11_screen_get_number (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return GDK_SCREEN_X11 (screen)->screen_num; + return GDK_X11_SCREEN (screen)->screen_num; } -/** - * gdk_screen_get_root_window: - * @screen: a #GdkScreen - * - * Gets the root window of @screen. - * - * Returns: (transfer none): the root window - * - * Since: 2.2 - **/ -GdkWindow * -gdk_screen_get_root_window (GdkScreen *screen) +static GdkWindow * +gdk_x11_screen_get_root_window (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return GDK_SCREEN_X11 (screen)->root_window; + return GDK_X11_SCREEN (screen)->root_window; } static void -_gdk_screen_x11_events_uninit (GdkScreen *screen) +_gdk_x11_screen_events_uninit (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - if (screen_x11->xsettings_client) + if (x11_screen->xsettings_client) { - xsettings_client_destroy (screen_x11->xsettings_client); - screen_x11->xsettings_client = NULL; + xsettings_client_destroy (x11_screen->xsettings_client); + x11_screen->xsettings_client = NULL; } } static void -gdk_screen_x11_dispose (GObject *object) +gdk_x11_screen_dispose (GObject *object) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (object); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (object); int i; for (i = 0; i < 32; ++i) { - if (screen_x11->subwindow_gcs[i]) + if (x11_screen->subwindow_gcs[i]) { - XFreeGC (screen_x11->xdisplay, screen_x11->subwindow_gcs[i]); - screen_x11->subwindow_gcs[i] = 0; + XFreeGC (x11_screen->xdisplay, x11_screen->subwindow_gcs[i]); + x11_screen->subwindow_gcs[i] = 0; } } - _gdk_screen_x11_events_uninit (GDK_SCREEN (object)); + _gdk_x11_screen_events_uninit (GDK_SCREEN (object)); - if (screen_x11->root_window) - _gdk_window_destroy (screen_x11->root_window, TRUE); + if (x11_screen->root_window) + _gdk_window_destroy (x11_screen->root_window, TRUE); - G_OBJECT_CLASS (_gdk_screen_x11_parent_class)->dispose (object); + G_OBJECT_CLASS (gdk_x11_screen_parent_class)->dispose (object); - screen_x11->xdisplay = NULL; - screen_x11->xscreen = NULL; - screen_x11->screen_num = -1; - screen_x11->xroot_window = None; - screen_x11->wmspec_check_window = None; + x11_screen->xdisplay = NULL; + x11_screen->xscreen = NULL; + x11_screen->screen_num = -1; + x11_screen->xroot_window = None; + x11_screen->wmspec_check_window = None; } static void -gdk_screen_x11_finalize (GObject *object) +gdk_x11_screen_finalize (GObject *object) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (object); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (object); gint i; - if (screen_x11->root_window) - g_object_unref (screen_x11->root_window); + if (x11_screen->root_window) + g_object_unref (x11_screen->root_window); /* Visual Part */ - for (i = 0; i < screen_x11->nvisuals; i++) - g_object_unref (screen_x11->visuals[i]); - g_free (screen_x11->visuals); - g_hash_table_destroy (screen_x11->visual_hash); + for (i = 0; i < x11_screen->nvisuals; i++) + g_object_unref (x11_screen->visuals[i]); + g_free (x11_screen->visuals); + g_hash_table_destroy (x11_screen->visual_hash); - g_free (screen_x11->window_manager_name); + g_free (x11_screen->window_manager_name); deinit_multihead (GDK_SCREEN (object)); - G_OBJECT_CLASS (_gdk_screen_x11_parent_class)->finalize (object); + G_OBJECT_CLASS (gdk_x11_screen_parent_class)->finalize (object); } -/** - * gdk_screen_get_n_monitors: - * @screen: a #GdkScreen - * - * Returns the number of monitors which @screen consists of. - * - * Returns: number of monitors which @screen consists of - * - * Since: 2.2 - */ -gint -gdk_screen_get_n_monitors (GdkScreen *screen) +static gint +gdk_x11_screen_get_n_monitors (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return GDK_SCREEN_X11 (screen)->n_monitors; + return GDK_X11_SCREEN (screen)->n_monitors; } -/** - * gdk_screen_get_primary_monitor: - * @screen: a #GdkScreen. - * - * Gets the primary monitor for @screen. The primary monitor - * is considered the monitor where the 'main desktop' lives. - * While normal application windows typically allow the window - * manager to place the windows, specialized desktop applications - * such as panels should place themselves on the primary monitor. - * - * If no primary monitor is configured by the user, the return value - * will be 0, defaulting to the first monitor. - * - * Returns: An integer index for the primary monitor, or 0 if none is configured. - * - * Since: 2.20 - */ -gint -gdk_screen_get_primary_monitor (GdkScreen *screen) +static gint +gdk_x11_screen_get_primary_monitor (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), 0); - return GDK_SCREEN_X11 (screen)->primary_monitor; + return GDK_X11_SCREEN (screen)->primary_monitor; } -/** - * gdk_screen_get_monitor_width_mm: - * @screen: a #GdkScreen - * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) - * - * Gets the width in millimeters of the specified monitor, if available. - * - * Returns: the width of the monitor, or -1 if not available - * - * Since: 2.14 - */ -gint -gdk_screen_get_monitor_width_mm (GdkScreen *screen, - gint monitor_num) +static gint +gdk_x11_screen_get_monitor_width_mm (GdkScreen *screen, + gint monitor_num) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); g_return_val_if_fail (GDK_IS_SCREEN (screen), -1); g_return_val_if_fail (monitor_num >= 0, -1); - g_return_val_if_fail (monitor_num < screen_x11->n_monitors, -1); + g_return_val_if_fail (monitor_num < x11_screen->n_monitors, -1); - return screen_x11->monitors[monitor_num].width_mm; + return x11_screen->monitors[monitor_num].width_mm; } -/** - * gdk_screen_get_monitor_height_mm: - * @screen: a #GdkScreen - * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) - * - * Gets the height in millimeters of the specified monitor. - * - * Returns: the height of the monitor, or -1 if not available - * - * Since: 2.14 - */ -gint -gdk_screen_get_monitor_height_mm (GdkScreen *screen, - gint monitor_num) +static gint +gdk_x11_screen_get_monitor_height_mm (GdkScreen *screen, + gint monitor_num) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); g_return_val_if_fail (GDK_IS_SCREEN (screen), -1); g_return_val_if_fail (monitor_num >= 0, -1); - g_return_val_if_fail (monitor_num < screen_x11->n_monitors, -1); + g_return_val_if_fail (monitor_num < x11_screen->n_monitors, -1); - return screen_x11->monitors[monitor_num].height_mm; + return x11_screen->monitors[monitor_num].height_mm; } -/** - * gdk_screen_get_monitor_plug_name: - * @screen: a #GdkScreen - * @monitor_num: number of the monitor, between 0 and gdk_screen_get_n_monitors (screen) - * - * Returns the output name of the specified monitor. - * Usually something like VGA, DVI, or TV, not the actual - * product name of the display device. - * - * Returns: a newly-allocated string containing the name of the monitor, - * or %NULL if the name cannot be determined - * - * Since: 2.14 - */ -gchar * -gdk_screen_get_monitor_plug_name (GdkScreen *screen, - gint monitor_num) +static gchar * +gdk_x11_screen_get_monitor_plug_name (GdkScreen *screen, + gint monitor_num) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); g_return_val_if_fail (monitor_num >= 0, NULL); - g_return_val_if_fail (monitor_num < screen_x11->n_monitors, NULL); + g_return_val_if_fail (monitor_num < x11_screen->n_monitors, NULL); - return g_strdup (screen_x11->monitors[monitor_num].output_name); + return g_strdup (x11_screen->monitors[monitor_num].output_name); } /** @@ -437,77 +281,40 @@ XID gdk_x11_screen_get_monitor_output (GdkScreen *screen, gint monitor_num) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); g_return_val_if_fail (GDK_IS_SCREEN (screen), None); g_return_val_if_fail (monitor_num >= 0, None); - g_return_val_if_fail (monitor_num < screen_x11->n_monitors, None); + g_return_val_if_fail (monitor_num < x11_screen->n_monitors, None); - return screen_x11->monitors[monitor_num].output; + return x11_screen->monitors[monitor_num].output; } -/** - * gdk_screen_get_monitor_geometry: - * @screen: a #GdkScreen - * @monitor_num: the monitor number, between 0 and gdk_screen_get_n_monitors (screen) - * @dest: (out) (allow-none): a #GdkRectangle to be filled with the monitor geometry - * - * Retrieves the #GdkRectangle representing the size and position of - * the individual monitor within the entire screen area. - * - * Note that the size of the entire screen area can be retrieved via - * gdk_screen_get_width() and gdk_screen_get_height(). - * - * Since: 2.2 - */ -void -gdk_screen_get_monitor_geometry (GdkScreen *screen, - gint monitor_num, - GdkRectangle *dest) +static void +gdk_x11_screen_get_monitor_geometry (GdkScreen *screen, + gint monitor_num, + GdkRectangle *dest) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); g_return_if_fail (GDK_IS_SCREEN (screen)); g_return_if_fail (monitor_num >= 0); - g_return_if_fail (monitor_num < screen_x11->n_monitors); + g_return_if_fail (monitor_num < x11_screen->n_monitors); if (dest) - *dest = screen_x11->monitors[monitor_num].geometry; + *dest = x11_screen->monitors[monitor_num].geometry; } -/** - * gdk_screen_get_rgba_visual: - * @screen: a #GdkScreen - * - * Gets a visual to use for creating windows with an alpha channel. - * The windowing system on which GTK+ is running - * may not support this capability, in which case %NULL will - * be returned. Even if a non-%NULL value is returned, its - * possible that the window's alpha channel won't be honored - * when displaying the window on the screen: in particular, for - * X an appropriate windowing manager and compositing manager - * must be running to provide appropriate display. - * - * This functionality is not implemented in the Windows backend. - * - * For setting an overall opacity for a top-level window, see - * gdk_window_set_opacity(). - * - * Return value: (transfer none): a visual to use for windows with an - * alpha channel or %NULL if the capability is not available. - * - * Since: 2.8 - **/ -GdkVisual * -gdk_screen_get_rgba_visual (GdkScreen *screen) +static GdkVisual * +gdk_x11_screen_get_rgba_visual (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - return screen_x11->rgba_visual; + return x11_screen->rgba_visual; } /** @@ -522,7 +329,7 @@ gdk_screen_get_rgba_visual (GdkScreen *screen) Screen * gdk_x11_screen_get_xscreen (GdkScreen *screen) { - return GDK_SCREEN_X11 (screen)->xscreen; + return GDK_X11_SCREEN (screen)->xscreen; } /** @@ -538,14 +345,14 @@ gdk_x11_screen_get_xscreen (GdkScreen *screen) int gdk_x11_screen_get_screen_number (GdkScreen *screen) { - return GDK_SCREEN_X11 (screen)->screen_num; + return GDK_X11_SCREEN (screen)->screen_num; } static gboolean check_is_composited (GdkDisplay *display, - GdkScreenX11 *screen_x11) + GdkX11Screen *x11_screen) { - Atom xselection = gdk_x11_atom_to_xatom_for_display (display, screen_x11->cm_selection_atom); + Atom xselection = gdk_x11_atom_to_xatom_for_display (display, x11_screen->cm_selection_atom); Window xwindow; xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), xselection); @@ -582,7 +389,7 @@ static gboolean init_fake_xinerama (GdkScreen *screen) { #ifdef G_ENABLE_DEBUG - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); XSetWindowAttributes atts; Window win; gint w, h; @@ -593,36 +400,36 @@ init_fake_xinerama (GdkScreen *screen) /* Fake Xinerama mode by splitting the screen into 4 monitors. * Also draw a little cross to make the monitor boundaries visible. */ - w = WidthOfScreen (screen_x11->xscreen); - h = HeightOfScreen (screen_x11->xscreen); + w = WidthOfScreen (x11_screen->xscreen); + h = HeightOfScreen (x11_screen->xscreen); - screen_x11->n_monitors = 4; - screen_x11->monitors = g_new0 (GdkX11Monitor, 4); - init_monitor_geometry (&screen_x11->monitors[0], 0, 0, w / 2, h / 2); - init_monitor_geometry (&screen_x11->monitors[1], w / 2, 0, w / 2, h / 2); - init_monitor_geometry (&screen_x11->monitors[2], 0, h / 2, w / 2, h / 2); - init_monitor_geometry (&screen_x11->monitors[3], w / 2, h / 2, w / 2, h / 2); + x11_screen->n_monitors = 4; + x11_screen->monitors = g_new0 (GdkX11Monitor, 4); + init_monitor_geometry (&x11_screen->monitors[0], 0, 0, w / 2, h / 2); + init_monitor_geometry (&x11_screen->monitors[1], w / 2, 0, w / 2, h / 2); + init_monitor_geometry (&x11_screen->monitors[2], 0, h / 2, w / 2, h / 2); + init_monitor_geometry (&x11_screen->monitors[3], w / 2, h / 2, w / 2, h / 2); atts.override_redirect = 1; atts.background_pixel = WhitePixel(GDK_SCREEN_XDISPLAY (screen), - screen_x11->screen_num); + x11_screen->screen_num); win = XCreateWindow(GDK_SCREEN_XDISPLAY (screen), - screen_x11->xroot_window, 0, h / 2, w, 1, 0, + x11_screen->xroot_window, 0, h / 2, w, 1, 0, DefaultDepth(GDK_SCREEN_XDISPLAY (screen), - screen_x11->screen_num), + x11_screen->screen_num), InputOutput, DefaultVisual(GDK_SCREEN_XDISPLAY (screen), - screen_x11->screen_num), + x11_screen->screen_num), CWOverrideRedirect|CWBackPixel, &atts); XMapRaised(GDK_SCREEN_XDISPLAY (screen), win); win = XCreateWindow(GDK_SCREEN_XDISPLAY (screen), - screen_x11->xroot_window, w/2 , 0, 1, h, 0, + x11_screen->xroot_window, w/2 , 0, 1, h, 0, DefaultDepth(GDK_SCREEN_XDISPLAY (screen), - screen_x11->screen_num), + x11_screen->screen_num), InputOutput, DefaultVisual(GDK_SCREEN_XDISPLAY (screen), - screen_x11->screen_num), + x11_screen->screen_num), CWOverrideRedirect|CWBackPixel, &atts); XMapRaised(GDK_SCREEN_XDISPLAY (screen), win); @@ -679,8 +486,8 @@ init_randr13 (GdkScreen *screen) { #ifdef HAVE_RANDR GdkDisplay *display = gdk_screen_get_display (screen); - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); Display *dpy = GDK_SCREEN_XDISPLAY (screen); XRRScreenResources *resources; RROutput primary_output; @@ -692,8 +499,8 @@ init_randr13 (GdkScreen *screen) if (!display_x11->have_randr13) return FALSE; - resources = XRRGetScreenResourcesCurrent (screen_x11->xdisplay, - screen_x11->xroot_window); + resources = XRRGetScreenResourcesCurrent (x11_screen->xdisplay, + x11_screen->xroot_window); if (!resources) return FALSE; @@ -757,36 +564,36 @@ init_randr13 (GdkScreen *screen) g_array_sort (monitors, (GCompareFunc) monitor_compare_function); - screen_x11->n_monitors = monitors->len; - screen_x11->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE); + x11_screen->n_monitors = monitors->len; + x11_screen->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE); - screen_x11->primary_monitor = 0; + x11_screen->primary_monitor = 0; - primary_output = XRRGetOutputPrimary (screen_x11->xdisplay, - screen_x11->xroot_window); + primary_output = XRRGetOutputPrimary (x11_screen->xdisplay, + x11_screen->xroot_window); - for (i = 0; i < screen_x11->n_monitors; ++i) + for (i = 0; i < x11_screen->n_monitors; ++i) { - if (screen_x11->monitors[i].output == primary_output) + if (x11_screen->monitors[i].output == primary_output) { - screen_x11->primary_monitor = i; + x11_screen->primary_monitor = i; break; } /* No RandR1.3+ available or no primary set, fall back to prefer LVDS as primary if present */ if (primary_output == None && - g_ascii_strncasecmp (screen_x11->monitors[i].output_name, "LVDS", 4) == 0) + g_ascii_strncasecmp (x11_screen->monitors[i].output_name, "LVDS", 4) == 0) { - screen_x11->primary_monitor = i; + x11_screen->primary_monitor = i; break; } /* No primary specified and no LVDS found */ - if (screen_x11->monitors[i].output == first_output) - screen_x11->primary_monitor = i; + if (x11_screen->monitors[i].output == first_output) + x11_screen->primary_monitor = i; } - return screen_x11->n_monitors > 0; + return x11_screen->n_monitors > 0; #endif return FALSE; @@ -798,7 +605,7 @@ init_solaris_xinerama (GdkScreen *screen) #ifdef HAVE_SOLARIS_XINERAMA Display *dpy = GDK_SCREEN_XDISPLAY (screen); int screen_no = gdk_screen_get_number (screen); - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); XRectangle monitors[MAXFRAMEBUFFERS]; unsigned char hints[16]; gint result; @@ -818,17 +625,17 @@ init_solaris_xinerama (GdkScreen *screen) return FALSE; } - screen_x11->monitors = g_new0 (GdkX11Monitor, n_monitors); - screen_x11->n_monitors = n_monitors; + x11_screen->monitors = g_new0 (GdkX11Monitor, n_monitors); + x11_screen->n_monitors = n_monitors; for (i = 0; i < n_monitors; i++) { - init_monitor_geometry (&screen_x11->monitors[i], + init_monitor_geometry (&x11_screen->monitors[i], monitors[i].x, monitors[i].y, monitors[i].width, monitors[i].height); } - screen_x11->primary_monitor = 0; + x11_screen->primary_monitor = 0; return TRUE; #endif /* HAVE_SOLARIS_XINERAMA */ @@ -841,7 +648,7 @@ init_xfree_xinerama (GdkScreen *screen) { #ifdef HAVE_XFREE_XINERAMA Display *dpy = GDK_SCREEN_XDISPLAY (screen); - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); XineramaScreenInfo *monitors; int i, n_monitors; @@ -864,19 +671,19 @@ init_xfree_xinerama (GdkScreen *screen) return FALSE; } - screen_x11->n_monitors = n_monitors; - screen_x11->monitors = g_new0 (GdkX11Monitor, n_monitors); + x11_screen->n_monitors = n_monitors; + x11_screen->monitors = g_new0 (GdkX11Monitor, n_monitors); for (i = 0; i < n_monitors; ++i) { - init_monitor_geometry (&screen_x11->monitors[i], + init_monitor_geometry (&x11_screen->monitors[i], monitors[i].x_org, monitors[i].y_org, monitors[i].width, monitors[i].height); } XFree (monitors); - screen_x11->primary_monitor = 0; + x11_screen->primary_monitor = 0; return TRUE; #endif /* HAVE_XFREE_XINERAMA */ @@ -887,12 +694,12 @@ init_xfree_xinerama (GdkScreen *screen) static void deinit_multihead (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - free_monitors (screen_x11->monitors, screen_x11->n_monitors); + free_monitors (x11_screen->monitors, x11_screen->n_monitors); - screen_x11->n_monitors = 0; - screen_x11->monitors = NULL; + x11_screen->n_monitors = 0; + x11_screen->monitors = NULL; } static gboolean @@ -939,7 +746,7 @@ compare_monitors (GdkX11Monitor *monitors1, gint n_monitors1, static void init_multihead (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); int opcode, firstevent, firsterror; /* There are four different implementations of multihead support: @@ -968,13 +775,13 @@ init_multihead (GdkScreen *screen) } /* No multihead support of any kind for this screen */ - screen_x11->n_monitors = 1; - screen_x11->monitors = g_new0 (GdkX11Monitor, 1); - screen_x11->primary_monitor = 0; + x11_screen->n_monitors = 1; + x11_screen->monitors = g_new0 (GdkX11Monitor, 1); + x11_screen->primary_monitor = 0; - init_monitor_geometry (screen_x11->monitors, 0, 0, - WidthOfScreen (screen_x11->xscreen), - HeightOfScreen (screen_x11->xscreen)); + init_monitor_geometry (x11_screen->monitors, 0, 0, + WidthOfScreen (x11_screen->xscreen), + HeightOfScreen (x11_screen->xscreen)); } GdkScreen * @@ -982,26 +789,26 @@ _gdk_x11_screen_new (GdkDisplay *display, gint screen_number) { GdkScreen *screen; - GdkScreenX11 *screen_x11; - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Screen *x11_screen; + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); - screen = g_object_new (GDK_TYPE_SCREEN_X11, NULL); + screen = g_object_new (GDK_TYPE_X11_SCREEN, NULL); - screen_x11 = GDK_SCREEN_X11 (screen); - screen_x11->display = display; - screen_x11->xdisplay = display_x11->xdisplay; - screen_x11->xscreen = ScreenOfDisplay (display_x11->xdisplay, screen_number); - screen_x11->screen_num = screen_number; - screen_x11->xroot_window = RootWindow (display_x11->xdisplay,screen_number); - screen_x11->wmspec_check_window = None; + x11_screen = GDK_X11_SCREEN (screen); + x11_screen->display = display; + x11_screen->xdisplay = display_x11->xdisplay; + x11_screen->xscreen = ScreenOfDisplay (display_x11->xdisplay, screen_number); + x11_screen->screen_num = screen_number; + x11_screen->xroot_window = RootWindow (display_x11->xdisplay,screen_number); + x11_screen->wmspec_check_window = None; /* we want this to be always non-null */ - screen_x11->window_manager_name = g_strdup ("unknown"); + x11_screen->window_manager_name = g_strdup ("unknown"); init_multihead (screen); init_randr_support (screen); - _gdk_visual_init (screen); - _gdk_windowing_window_init (screen); + _gdk_x11_screen_init_visuals (screen); + _gdk_x11_screen_init_root_window (screen); return screen; } @@ -1014,78 +821,65 @@ _gdk_x11_screen_new (GdkDisplay *display, void _gdk_x11_screen_setup (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - screen_x11->cm_selection_atom = make_cm_atom (screen_x11->screen_num); - gdk_display_request_selection_notification (screen_x11->display, - screen_x11->cm_selection_atom); - screen_x11->is_composited = check_is_composited (screen_x11->display, screen_x11); + x11_screen->cm_selection_atom = make_cm_atom (x11_screen->screen_num); + gdk_display_request_selection_notification (x11_screen->display, + x11_screen->cm_selection_atom); + x11_screen->is_composited = check_is_composited (x11_screen->display, x11_screen); } -/** - * gdk_screen_is_composited: - * @screen: a #GdkScreen - * - * Returns whether windows with an RGBA visual can reasonably - * be expected to have their alpha channel drawn correctly on - * the screen. - * - * On X11 this function returns whether a compositing manager is - * compositing @screen. - * - * Return value: Whether windows with RGBA visuals can reasonably be - * expected to have their alpha channels drawn correctly on the screen. - * - * Since: 2.10 - **/ -gboolean -gdk_screen_is_composited (GdkScreen *screen) +static gboolean +gdk_x11_screen_is_composited (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - return screen_x11->is_composited; + return x11_screen->is_composited; } static void -init_randr_support (GdkScreen * screen) +init_randr_support (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); - + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); + XSelectInput (GDK_SCREEN_XDISPLAY (screen), - screen_x11->xroot_window, - StructureNotifyMask); + x11_screen->xroot_window, + StructureNotifyMask); #ifdef HAVE_RANDR + if (!GDK_X11_DISPLAY (gdk_screen_get_display (screen))->have_randr12) + return; + XRRSelectInput (GDK_SCREEN_XDISPLAY (screen), - screen_x11->xroot_window, - RRScreenChangeNotifyMask | - RRCrtcChangeNotifyMask | - RROutputPropertyNotifyMask); + x11_screen->xroot_window, + RRScreenChangeNotifyMask + | RRCrtcChangeNotifyMask + | RROutputPropertyNotifyMask); #endif } static void process_monitors_change (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); gint n_monitors; GdkX11Monitor *monitors; gboolean changed; - n_monitors = screen_x11->n_monitors; - monitors = screen_x11->monitors; + n_monitors = x11_screen->n_monitors; + monitors = x11_screen->monitors; - screen_x11->n_monitors = 0; - screen_x11->monitors = NULL; + x11_screen->n_monitors = 0; + x11_screen->monitors = NULL; init_multihead (screen); changed = !compare_monitors (monitors, n_monitors, - screen_x11->monitors, screen_x11->n_monitors); + x11_screen->monitors, x11_screen->n_monitors); free_monitors (monitors, n_monitors); @@ -1099,14 +893,14 @@ _gdk_x11_screen_size_changed (GdkScreen *screen, { gint width, height; #ifdef HAVE_RANDR - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; #endif width = gdk_screen_get_width (screen); height = gdk_screen_get_height (screen); #ifdef HAVE_RANDR - display_x11 = GDK_DISPLAY_X11 (gdk_screen_get_display (screen)); + display_x11 = GDK_X11_DISPLAY (gdk_screen_get_display (screen)); if (display_x11->have_randr13 && event->type == ConfigureNotify) { @@ -1147,17 +941,17 @@ _gdk_x11_screen_process_owner_change (GdkScreen *screen, { #ifdef HAVE_XFIXES XFixesSelectionNotifyEvent *selection_event = (XFixesSelectionNotifyEvent *)event; - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); - Atom xcm_selection_atom = gdk_x11_atom_to_xatom_for_display (screen_x11->display, - screen_x11->cm_selection_atom); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); + Atom xcm_selection_atom = gdk_x11_atom_to_xatom_for_display (x11_screen->display, + x11_screen->cm_selection_atom); if (selection_event->selection == xcm_selection_atom) { gboolean composited = selection_event->owner != None; - if (composited != screen_x11->is_composited) + if (composited != x11_screen->is_composited) { - screen_x11->is_composited = composited; + x11_screen->is_composited = composited; g_signal_emit_by_name (screen, "composited-changed"); } @@ -1165,34 +959,13 @@ _gdk_x11_screen_process_owner_change (GdkScreen *screen, #endif } -/** - * _gdk_windowing_substitute_screen_number: - * @display_name: The name of a display, in the form used by - * gdk_display_open (). If %NULL a default value - * will be used. On X11, this is derived from the DISPLAY - * environment variable. - * @screen_number: The number of a screen within the display - * referred to by @display_name. - * - * Modifies a @display_name to make @screen_number the default - * screen when the display is opened. - * - * Return value: a newly allocated string holding the resulting - * display name. Free with g_free(). - */ -gchar * -_gdk_windowing_substitute_screen_number (const gchar *display_name, - gint screen_number) +static gchar * +substitute_screen_number (const gchar *display_name, + gint screen_number) { GString *str; gchar *p; - if (!display_name) - display_name = getenv ("DISPLAY"); - - if (!display_name) - return NULL; - str = g_string_new (display_name); p = strrchr (str->str, '.'); @@ -1204,19 +977,8 @@ _gdk_windowing_substitute_screen_number (const gchar *display_name, return g_string_free (str, FALSE); } -/** - * gdk_screen_make_display_name: - * @screen: a #GdkScreen - * - * Determines the name to pass to gdk_display_open() to get - * a #GdkDisplay with this screen as the default screen. - * - * Return value: a newly allocated string, free with g_free() - * - * Since: 2.2 - **/ -gchar * -gdk_screen_make_display_name (GdkScreen *screen) +static gchar * +gdk_x11_screen_make_display_name (GdkScreen *screen) { const gchar *old_display; @@ -1224,37 +986,14 @@ gdk_screen_make_display_name (GdkScreen *screen) old_display = gdk_display_get_name (gdk_screen_get_display (screen)); - return _gdk_windowing_substitute_screen_number (old_display, - gdk_screen_get_number (screen)); + return substitute_screen_number (old_display, + gdk_screen_get_number (screen)); } -/** - * gdk_screen_get_active_window: - * @screen: a #GdkScreen - * - * Returns the screen's currently active window. - * - * On X11, this is done by inspecting the _NET_ACTIVE_WINDOW property - * on the root window, as described in the Extended Window - * Manager Hints. If there is no currently currently active - * window, or the window manager does not support the - * _NET_ACTIVE_WINDOW hint, this function returns %NULL. - * - * On other platforms, this function may return %NULL, depending on whether - * it is implementable on that platform. - * - * The returned window should be unrefed using g_object_unref() when - * no longer needed. - * - * Return value: (transfer full): the currently active window, or %NULL. - * - * Since: 2.10 - **/ -GdkWindow * -gdk_screen_get_active_window (GdkScreen *screen) +static GdkWindow * +gdk_x11_screen_get_active_window (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; GdkWindow *ret = NULL; Atom type_return; gint format_return; @@ -1268,10 +1007,10 @@ gdk_screen_get_active_window (GdkScreen *screen) gdk_atom_intern_static_string ("_NET_ACTIVE_WINDOW"))) return NULL; - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - if (XGetWindowProperty (screen_x11->xdisplay, screen_x11->xroot_window, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, + if (XGetWindowProperty (x11_screen->xdisplay, x11_screen->xroot_window, + gdk_x11_get_xatom_by_name_for_display (x11_screen->display, "_NET_ACTIVE_WINDOW"), 0, 1, False, XA_WINDOW, &type_return, &format_return, &nitems_return, @@ -1284,8 +1023,8 @@ gdk_screen_get_active_window (GdkScreen *screen) if (window != None) { - ret = gdk_window_foreign_new_for_display (screen_x11->display, - *(GdkNativeWindow *) data); + ret = gdk_x11_window_foreign_new_for_display (x11_screen->display, + *(Window *) data); } } } @@ -1296,36 +1035,10 @@ gdk_screen_get_active_window (GdkScreen *screen) return ret; } -/** - * gdk_screen_get_window_stack: - * @screen: a #GdkScreen - * - * Returns a #GList of #GdkWindows representing the current - * window stack. - * - * On X11, this is done by inspecting the _NET_CLIENT_LIST_STACKING - * property on the root window, as described in the Extended Window - * Manager Hints. If the window manager does not support the - * _NET_CLIENT_LIST_STACKING hint, this function returns %NULL. - * - * On other platforms, this function may return %NULL, depending on whether - * it is implementable on that platform. - * - * The returned list is newly allocated and owns references to the - * windows it contains, so it should be freed using g_list_free() and - * its windows unrefed using g_object_unref() when no longer needed. - * - * Return value: (transfer full) (element-type GdkWindow): - * a list of #GdkWindows for the current window stack, - * or %NULL. - * - * Since: 2.10 - **/ -GList * -gdk_screen_get_window_stack (GdkScreen *screen) +static GList * +gdk_x11_screen_get_window_stack (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; GList *ret = NULL; Atom type_return; gint format_return; @@ -1339,10 +1052,10 @@ gdk_screen_get_window_stack (GdkScreen *screen) gdk_atom_intern_static_string ("_NET_CLIENT_LIST_STACKING"))) return NULL; - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - if (XGetWindowProperty (screen_x11->xdisplay, screen_x11->xroot_window, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, + if (XGetWindowProperty (x11_screen->xdisplay, x11_screen->xroot_window, + gdk_x11_get_xatom_by_name_for_display (x11_screen->display, "_NET_CLIENT_LIST_STACKING"), 0, G_MAXLONG, False, XA_WINDOW, &type_return, &format_return, &nitems_return, @@ -1358,8 +1071,8 @@ gdk_screen_get_window_stack (GdkScreen *screen) for (i = 0; i < nitems_return; i++) { - win = gdk_window_foreign_new_for_display (screen_x11->display, - (GdkNativeWindow)stack[i]); + win = gdk_x11_window_foreign_new_for_display (x11_screen->display, + (Window)stack[i]); if (win != NULL) ret = g_list_append (ret, win); @@ -1391,7 +1104,7 @@ gdk_event_send_client_message_to_all_recurse (GdkDisplay *display, gboolean result = FALSE; int i; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), xid, gdk_x11_get_xatom_by_name_for_display (display, "WM_STATE"), @@ -1422,40 +1135,20 @@ gdk_event_send_client_message_to_all_recurse (GdkDisplay *display, if (send || (!found && (level == 1))) { xev->xclient.window = xid; - _gdk_send_xevent (display, xid, False, NoEventMask, xev); + _gdk_x11_display_send_xevent (display, xid, False, NoEventMask, xev); } result = send || found; out: - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); return result; } -/** - * gdk_screen_broadcast_client_message: - * @screen: the #GdkScreen where the event will be broadcasted. - * @event: the #GdkEvent. - * - * On X11, sends an X ClientMessage event to all toplevel windows on - * @screen. - * - * Toplevel windows are determined by checking for the WM_STATE property, - * as described in the Inter-Client Communication Conventions Manual (ICCCM). - * If no windows are found with the WM_STATE property set, the message is - * sent to all children of the root window. - * - * On Windows, broadcasts a message registered with the name - * GDK_WIN32_CLIENT_MESSAGE to all top-level windows. The amount of - * data is limited to one long, i.e. four bytes. - * - * Since: 2.2 - */ - -void -gdk_screen_broadcast_client_message (GdkScreen *screen, - GdkEvent *event) +static void +gdk_x11_screen_broadcast_client_message (GdkScreen *screen, + GdkEvent *event) { XEvent sev; GdkWindow *root_window; @@ -1496,40 +1189,23 @@ check_transform (const gchar *xsettings_name, return TRUE; } -/** - * gdk_screen_get_setting: - * @screen: the #GdkScreen where the setting is located - * @name: the name of the setting - * @value: location to store the value of the setting - * - * Retrieves a desktop-wide setting such as double-click time - * for the #GdkScreen @screen. - * - * FIXME needs a list of valid settings here, or a link to - * more information. - * - * Returns: %TRUE if the setting existed and a value was stored - * in @value, %FALSE otherwise. - * - * Since: 2.2 - **/ -gboolean -gdk_screen_get_setting (GdkScreen *screen, - const gchar *name, - GValue *value) +static gboolean +gdk_x11_screen_get_setting (GdkScreen *screen, + const gchar *name, + GValue *value) { const char *xsettings_name = NULL; XSettingsResult result; XSettingsSetting *setting = NULL; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; gboolean success = FALSE; gint i; GValue tmp_val = { 0, }; g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); for (i = 0; i < GDK_SETTINGS_N_ELEMENTS(); i++) if (strcmp (GDK_SETTINGS_GDK_NAME (i), name) == 0) @@ -1541,7 +1217,7 @@ gdk_screen_get_setting (GdkScreen *screen, if (!xsettings_name) goto out; - result = xsettings_client_get_setting (screen_x11->xsettings_client, + result = xsettings_client_get_setting (x11_screen->xsettings_client, xsettings_name, &setting); if (result != XSETTINGS_SUCCESS) goto out; @@ -1613,7 +1289,7 @@ cleanup_atoms(gpointer data) static void fetch_net_wm_check_window (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; GdkDisplay *display; Atom type; gint format; @@ -1624,20 +1300,20 @@ fetch_net_wm_check_window (GdkScreen *screen) GTimeVal tv; gint error; - screen_x11 = GDK_SCREEN_X11 (screen); - display = screen_x11->display; + x11_screen = GDK_X11_SCREEN (screen); + display = x11_screen->display; - g_return_if_fail (GDK_DISPLAY_X11 (display)->trusted_client); + g_return_if_fail (GDK_X11_DISPLAY (display)->trusted_client); g_get_current_time (&tv); - if (ABS (tv.tv_sec - screen_x11->last_wmspec_check_time) < 15) + if (ABS (tv.tv_sec - x11_screen->last_wmspec_check_time) < 15) return; /* we've checked recently */ - screen_x11->last_wmspec_check_time = tv.tv_sec; + x11_screen->last_wmspec_check_time = tv.tv_sec; data = NULL; - XGetWindowProperty (screen_x11->xdisplay, screen_x11->xroot_window, + XGetWindowProperty (x11_screen->xdisplay, x11_screen->xroot_window, gdk_x11_get_xatom_by_name_for_display (display, "_NET_SUPPORTING_WM_CHECK"), 0, G_MAXLONG, False, XA_WINDOW, &type, &format, &n_items, &bytes_after, &data); @@ -1651,31 +1327,31 @@ fetch_net_wm_check_window (GdkScreen *screen) xwindow = (Window *)data; - if (screen_x11->wmspec_check_window == *xwindow) + if (x11_screen->wmspec_check_window == *xwindow) { XFree (xwindow); return; } - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); /* Find out if this WM goes away, so we can reset everything. */ - XSelectInput (screen_x11->xdisplay, *xwindow, StructureNotifyMask); + XSelectInput (x11_screen->xdisplay, *xwindow, StructureNotifyMask); - error = gdk_error_trap_pop (); + error = gdk_x11_display_error_trap_pop (display); if (!error) { - screen_x11->wmspec_check_window = *xwindow; - screen_x11->need_refetch_net_supported = TRUE; - screen_x11->need_refetch_wm_name = TRUE; + x11_screen->wmspec_check_window = *xwindow; + x11_screen->need_refetch_net_supported = TRUE; + x11_screen->need_refetch_wm_name = TRUE; /* Careful, reentrancy */ - _gdk_x11_screen_window_manager_changed (GDK_SCREEN (screen_x11)); + _gdk_x11_screen_window_manager_changed (GDK_SCREEN (x11_screen)); } else if (error == BadWindow) { /* Leftover property, try again immediately, new wm may be starting up */ - screen_x11->last_wmspec_check_time = 0; + x11_screen->last_wmspec_check_time = 0; } XFree (xwindow); @@ -1710,16 +1386,16 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, GdkAtom property) { gulong i; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; NetWmSupportedAtoms *supported_atoms; GdkDisplay *display; g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - screen_x11 = GDK_SCREEN_X11 (screen); - display = screen_x11->display; + x11_screen = GDK_X11_SCREEN (screen); + display = x11_screen->display; - if (!G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) + if (!G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) return FALSE; supported_atoms = g_object_get_data (G_OBJECT (screen), "gdk-net-wm-supported-atoms"); @@ -1731,10 +1407,10 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, fetch_net_wm_check_window (screen); - if (screen_x11->wmspec_check_window == None) + if (x11_screen->wmspec_check_window == None) return FALSE; - if (screen_x11->need_refetch_net_supported) + if (x11_screen->need_refetch_net_supported) { /* WM has changed since we last got the supported list, * refetch it. @@ -1743,7 +1419,7 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, gint format; gulong bytes_after; - screen_x11->need_refetch_net_supported = FALSE; + x11_screen->need_refetch_net_supported = FALSE; if (supported_atoms->atoms) XFree (supported_atoms->atoms); @@ -1751,7 +1427,7 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, supported_atoms->atoms = NULL; supported_atoms->n_atoms = 0; - XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), screen_x11->xroot_window, + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), x11_screen->xroot_window, gdk_x11_get_xatom_by_name_for_display (display, "_NET_SUPPORTED"), 0, G_MAXLONG, False, XA_ATOM, &type, &format, &supported_atoms->n_atoms, &bytes_after, @@ -1776,23 +1452,6 @@ gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, return FALSE; } -/** - * gdk_net_wm_supports: - * @property: a property atom. - * - * This function is specific to the X11 backend of GDK, and indicates - * whether the window manager for the default screen supports a certain - * hint from the Extended Window Manager Hints Specification. See - * gdk_x11_screen_supports_net_wm_hint() for complete details. - * - * Return value: %TRUE if the window manager supports @property - **/ -gboolean -gdk_net_wm_supports (GdkAtom property) -{ - return gdk_x11_screen_supports_net_wm_hint (gdk_screen_get_default (), property); -} - static void refcounted_grab_server (Display *xdisplay) { @@ -1814,7 +1473,7 @@ gdk_xsettings_client_event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data) { - GdkScreenX11 *screen = data; + GdkX11Screen *screen = data; if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent)) return GDK_FILTER_REMOVE; @@ -1831,7 +1490,7 @@ gdk_xsettings_watch_cb (Window window, GdkWindow *gdkwin; GdkScreen *screen = cb_data; - gdkwin = gdk_window_lookup_for_display (gdk_screen_get_display (screen), window); + gdkwin = gdk_x11_window_lookup_for_display (gdk_screen_get_display (screen), window); if (is_start) { @@ -1839,7 +1498,7 @@ gdk_xsettings_watch_cb (Window window, g_object_ref (gdkwin); else { - gdkwin = gdk_window_foreign_new_for_display (gdk_screen_get_display (screen), window); + gdkwin = gdk_x11_window_foreign_new_for_display (gdk_screen_get_display (screen), window); /* gdk_window_foreign_new_for_display() can fail and return NULL if the * window has already been destroyed. @@ -1878,10 +1537,10 @@ gdk_xsettings_notify_cb (const char *name, { GdkEvent new_event; GdkScreen *screen = data; - GdkScreenX11 *screen_x11 = data; + GdkX11Screen *x11_screen = data; int i; - if (screen_x11->xsettings_in_init) + if (x11_screen->xsettings_in_init) return; new_event.type = GDK_SETTING; @@ -1916,21 +1575,21 @@ gdk_xsettings_notify_cb (const char *name, } void -_gdk_screen_x11_events_init (GdkScreen *screen) +_gdk_x11_screen_init_events (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); /* Keep a flag to avoid extra notifies that we don't need */ - screen_x11->xsettings_in_init = TRUE; - screen_x11->xsettings_client = xsettings_client_new_with_grab_funcs (screen_x11->xdisplay, - screen_x11->screen_num, + x11_screen->xsettings_in_init = TRUE; + x11_screen->xsettings_client = xsettings_client_new_with_grab_funcs (x11_screen->xdisplay, + x11_screen->screen_num, gdk_xsettings_notify_cb, gdk_xsettings_watch_cb, screen, refcounted_grab_server, refcounted_ungrab_server); - screen_x11->xsettings_in_init = FALSE; + x11_screen->xsettings_in_init = FALSE; } /** @@ -1948,24 +1607,26 @@ _gdk_screen_x11_events_init (GdkScreen *screen) const char* gdk_x11_screen_get_window_manager_name (GdkScreen *screen) { - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; + GdkDisplay *display; - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); + display = x11_screen->display; - if (!G_LIKELY (GDK_DISPLAY_X11 (screen_x11->display)->trusted_client)) - return screen_x11->window_manager_name; + if (!G_LIKELY (GDK_X11_DISPLAY (display)->trusted_client)) + return x11_screen->window_manager_name; fetch_net_wm_check_window (screen); - if (screen_x11->need_refetch_wm_name) + if (x11_screen->need_refetch_wm_name) { /* Get the name of the window manager */ - screen_x11->need_refetch_wm_name = FALSE; + x11_screen->need_refetch_wm_name = FALSE; - g_free (screen_x11->window_manager_name); - screen_x11->window_manager_name = g_strdup ("unknown"); + g_free (x11_screen->window_manager_name); + x11_screen->window_manager_name = g_strdup ("unknown"); - if (screen_x11->wmspec_check_window != None) + if (x11_screen->wmspec_check_window != None) { Atom type; gint format; @@ -1975,29 +1636,80 @@ gdk_x11_screen_get_window_manager_name (GdkScreen *screen) name = NULL; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (display); - XGetWindowProperty (GDK_DISPLAY_XDISPLAY (screen_x11->display), - screen_x11->wmspec_check_window, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), + x11_screen->wmspec_check_window, + gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_NAME"), 0, G_MAXLONG, False, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, + gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), &type, &format, &n_items, &bytes_after, (guchar **)&name); - gdk_error_trap_pop_ignored (); + gdk_x11_display_error_trap_pop_ignored (display); if (name != NULL) { - g_free (screen_x11->window_manager_name); - screen_x11->window_manager_name = g_strdup (name); + g_free (x11_screen->window_manager_name); + x11_screen->window_manager_name = g_strdup (name); XFree (name); } } } - return GDK_SCREEN_X11 (screen)->window_manager_name; + return GDK_X11_SCREEN (screen)->window_manager_name; +} + +static void +gdk_x11_screen_class_init (GdkX11ScreenClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GdkScreenClass *screen_class = GDK_SCREEN_CLASS (klass); + + object_class->dispose = gdk_x11_screen_dispose; + object_class->finalize = gdk_x11_screen_finalize; + + screen_class->get_display = gdk_x11_screen_get_display; + screen_class->get_width = gdk_x11_screen_get_width; + screen_class->get_height = gdk_x11_screen_get_height; + screen_class->get_width_mm = gdk_x11_screen_get_width_mm; + screen_class->get_height_mm = gdk_x11_screen_get_height_mm; + screen_class->get_number = gdk_x11_screen_get_number; + screen_class->get_root_window = gdk_x11_screen_get_root_window; + screen_class->get_n_monitors = gdk_x11_screen_get_n_monitors; + screen_class->get_primary_monitor = gdk_x11_screen_get_primary_monitor; + screen_class->get_monitor_width_mm = gdk_x11_screen_get_monitor_width_mm; + screen_class->get_monitor_height_mm = gdk_x11_screen_get_monitor_height_mm; + screen_class->get_monitor_plug_name = gdk_x11_screen_get_monitor_plug_name; + screen_class->get_monitor_geometry = gdk_x11_screen_get_monitor_geometry; + screen_class->get_system_visual = _gdk_x11_screen_get_system_visual; + screen_class->get_rgba_visual = gdk_x11_screen_get_rgba_visual; + screen_class->is_composited = gdk_x11_screen_is_composited; + screen_class->make_display_name = gdk_x11_screen_make_display_name; + screen_class->get_active_window = gdk_x11_screen_get_active_window; + screen_class->get_window_stack = gdk_x11_screen_get_window_stack; + screen_class->broadcast_client_message = gdk_x11_screen_broadcast_client_message; + screen_class->get_setting = gdk_x11_screen_get_setting; + screen_class->visual_get_best_depth = _gdk_x11_screen_visual_get_best_depth; + screen_class->visual_get_best_type = _gdk_x11_screen_visual_get_best_type; + screen_class->visual_get_best = _gdk_x11_screen_visual_get_best; + screen_class->visual_get_best_with_depth = _gdk_x11_screen_visual_get_best_with_depth; + screen_class->visual_get_best_with_type = _gdk_x11_screen_visual_get_best_with_type; + screen_class->visual_get_best_with_both = _gdk_x11_screen_visual_get_best_with_both; + screen_class->query_depths = _gdk_x11_screen_query_depths; + screen_class->query_visual_types = _gdk_x11_screen_query_visual_types; + screen_class->list_visuals = _gdk_x11_screen_list_visuals; + + signals[WINDOW_MANAGER_CHANGED] = + g_signal_new (g_intern_static_string ("window_manager_changed"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GdkX11ScreenClass, window_manager_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); } diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h index 72c0ead900..e7aeca9665 100644 --- a/gdk/x11/gdkscreen-x11.h +++ b/gdk/x11/gdkscreen-x11.h @@ -1,7 +1,7 @@ /* * gdkscreen-x11.h - * - * Copyright 2001 Sun Microsystems Inc. + * + * Copyright 2001 Sun Microsystems Inc. * * Erwann Chenede * @@ -21,31 +21,21 @@ * Boston, MA 02111-1307, USA. */ -#ifndef __GDK_SCREEN_X11_H__ -#define __GDK_SCREEN_X11_H__ +#ifndef __GDK_X11_SCREEN__ +#define __GDK_X11_SCREEN__ -#include -#include -#include "gdkprivate-x11.h" +#include "gdkscreenprivate.h" +#include "gdkx11screen.h" +#include "gdkvisual.h" #include "xsettings-client.h" #include #include G_BEGIN_DECLS -typedef struct _GdkScreenX11 GdkScreenX11; -typedef struct _GdkScreenX11Class GdkScreenX11Class; - -#define GDK_TYPE_SCREEN_X11 (_gdk_screen_x11_get_type ()) -#define GDK_SCREEN_X11(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_SCREEN_X11, GdkScreenX11)) -#define GDK_SCREEN_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_SCREEN_X11, GdkScreenX11Class)) -#define GDK_IS_SCREEN_X11(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_SCREEN_X11)) -#define GDK_IS_SCREEN_X11_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_SCREEN_X11)) -#define GDK_SCREEN_X11_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_SCREEN_X11, GdkScreenX11Class)) - typedef struct _GdkX11Monitor GdkX11Monitor; -struct _GdkScreenX11 +struct _GdkX11Screen { GdkScreen parent_instance; @@ -106,14 +96,14 @@ struct _GdkScreenX11 gboolean is_composited; }; -struct _GdkScreenX11Class +struct _GdkX11ScreenClass { GdkScreenClass parent_class; - void (* window_manager_changed) (GdkScreenX11 *screen_x11); + void (* window_manager_changed) (GdkX11Screen *x11_screen); }; -GType _gdk_screen_x11_get_type (void); +GType _gdk_x11_screen_get_type (void); GdkScreen * _gdk_x11_screen_new (GdkDisplay *display, gint screen_number); @@ -126,4 +116,4 @@ void _gdk_x11_screen_process_owner_change (GdkScreen *screen, G_END_DECLS -#endif /* __GDK_SCREEN_X11_H__ */ +#endif /* __GDK_X11_SCREEN__ */ diff --git a/gdk/x11/gdkselection-x11.c b/gdk/x11/gdkselection-x11.c index 00390aa34f..f13207b955 100644 --- a/gdk/x11/gdkselection-x11.c +++ b/gdk/x11/gdkselection-x11.c @@ -21,14 +21,12 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" #include "gdkselection.h" - -#include "gdkx.h" #include "gdkproperty.h" #include "gdkprivate.h" #include "gdkprivate-x11.h" @@ -56,19 +54,19 @@ static GSList *owner_list; * low code solution */ void -_gdk_selection_window_destroyed (GdkWindow *window) +_gdk_x11_selection_window_destroyed (GdkWindow *window) { GSList *tmp_list = owner_list; while (tmp_list) { OwnerInfo *info = tmp_list->data; tmp_list = tmp_list->next; - + if (info->owner == window) - { - owner_list = g_slist_remove (owner_list, info); - g_free (info); - } + { + owner_list = g_slist_remove (owner_list, info); + g_free (info); + } } } @@ -76,58 +74,40 @@ _gdk_selection_window_destroyed (GdkWindow *window) * reflect changes to the selection owner that we didn't make ourself. */ gboolean -_gdk_selection_filter_clear_event (XSelectionClearEvent *event) +_gdk_x11_selection_filter_clear_event (XSelectionClearEvent *event) { GSList *tmp_list = owner_list; GdkDisplay *display = gdk_x11_lookup_xdisplay (event->display); - + while (tmp_list) { OwnerInfo *info = tmp_list->data; if (gdk_window_get_display (info->owner) == display && - info->selection == gdk_x11_xatom_to_atom_for_display (display, event->selection)) - { - if ((GDK_WINDOW_XID (info->owner) == event->window && - event->serial >= info->serial)) - { - owner_list = g_slist_remove (owner_list, info); - g_free (info); - return TRUE; - } - else - return FALSE; - } + info->selection == gdk_x11_xatom_to_atom_for_display (display, event->selection)) + { + if ((GDK_WINDOW_XID (info->owner) == event->window && + event->serial >= info->serial)) + { + owner_list = g_slist_remove (owner_list, info); + g_free (info); + return TRUE; + } + else + return FALSE; + } tmp_list = tmp_list->next; } return FALSE; } -/** - * gdk_selection_owner_set_for_display: - * @display: the #GdkDisplay. - * @owner: a #GdkWindow or %NULL to indicate that the owner for - * the given should be unset. - * @selection: an atom identifying a selection. - * @time_: timestamp to use when setting the selection. - * If this is older than the timestamp given last time the owner was - * set for the given selection, the request will be ignored. - * @send_event: if %TRUE, and the new owner is different from the current - * owner, the current owner will be sent a SelectionClear event. - * - * Sets the #GdkWindow @owner as the current owner of the selection @selection. - * - * Returns: %TRUE if the selection owner was successfully changed to owner, - * otherwise %FALSE. - * - * Since: 2.2 - */ + gboolean -gdk_selection_owner_set_for_display (GdkDisplay *display, - GdkWindow *owner, - GdkAtom selection, - guint32 time, - gboolean send_event) +_gdk_x11_display_set_selection_owner (GdkDisplay *display, + GdkWindow *owner, + GdkAtom selection, + guint32 time, + gboolean send_event) { Display *xdisplay; Window xwindow; @@ -135,39 +115,36 @@ gdk_selection_owner_set_for_display (GdkDisplay *display, GSList *tmp_list; OwnerInfo *info; - g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE); - g_return_val_if_fail (selection != GDK_NONE, FALSE); - - if (display->closed) + if (gdk_display_is_closed (display)) return FALSE; - if (owner) + if (owner) { if (GDK_WINDOW_DESTROYED (owner) || !GDK_WINDOW_IS_X11 (owner)) - return FALSE; - + return FALSE; + gdk_window_ensure_native (owner); xdisplay = GDK_WINDOW_XDISPLAY (owner); xwindow = GDK_WINDOW_XID (owner); } - else + else { xdisplay = GDK_DISPLAY_XDISPLAY (display); xwindow = None; } - + xselection = gdk_x11_atom_to_xatom_for_display (display, selection); tmp_list = owner_list; while (tmp_list) { info = tmp_list->data; - if (info->selection == selection) - { - owner_list = g_slist_remove (owner_list, info); - g_free (info); - break; - } + if (info->selection == selection) + { + owner_list = g_slist_remove (owner_list, info); + g_free (info); + break; + } tmp_list = tmp_list->next; } @@ -186,106 +163,58 @@ gdk_selection_owner_set_for_display (GdkDisplay *display, return (XGetSelectionOwner (xdisplay, xselection) == xwindow); } -/** - * gdk_selection_owner_get_for_display: - * @display: a #GdkDisplay. - * @selection: an atom indentifying a selection. - * - * Determine the owner of the given selection. - * - * Note that the return value may be owned by a different - * process if a foreign window was previously created for that - * window, but a new foreign window will never be created by this call. - * - * Returns: (transfer none): if there is a selection owner for this window, - * and it is a window known to the current process, the #GdkWindow that - * owns the selection, otherwise %NULL. - * - * Since: 2.2 - */ GdkWindow * -gdk_selection_owner_get_for_display (GdkDisplay *display, - GdkAtom selection) +_gdk_x11_display_get_selection_owner (GdkDisplay *display, + GdkAtom selection) { Window xwindow; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (selection != GDK_NONE, NULL); - - if (display->closed) + + if (gdk_display_is_closed (display)) return NULL; - + xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), - gdk_x11_atom_to_xatom_for_display (display, - selection)); + gdk_x11_atom_to_xatom_for_display (display, + selection)); if (xwindow == None) return NULL; - return gdk_window_lookup_for_display (display, xwindow); + return gdk_x11_window_lookup_for_display (display, xwindow); } void -gdk_selection_convert (GdkWindow *requestor, - GdkAtom selection, - GdkAtom target, - guint32 time) +_gdk_x11_display_convert_selection (GdkDisplay *display, + GdkWindow *requestor, + GdkAtom selection, + GdkAtom target, + guint32 time) { - GdkDisplay *display; - g_return_if_fail (selection != GDK_NONE); if (GDK_WINDOW_DESTROYED (requestor) || !GDK_WINDOW_IS_X11 (requestor)) return; gdk_window_ensure_native (requestor); - display = GDK_WINDOW_DISPLAY (requestor); XConvertSelection (GDK_WINDOW_XDISPLAY (requestor), - gdk_x11_atom_to_xatom_for_display (display, selection), - gdk_x11_atom_to_xatom_for_display (display, target), - gdk_x11_atom_to_xatom_for_display (display, _gdk_selection_property), - GDK_WINDOW_XID (requestor), time); + gdk_x11_atom_to_xatom_for_display (display, selection), + gdk_x11_atom_to_xatom_for_display (display, target), + gdk_x11_get_xatom_by_name_for_display (display, "GDK_SELECTION"), + GDK_WINDOW_XID (requestor), time); } -/** - * gdk_selection_property_get: - * @requestor: the window on which the data is stored - * @data: location to store a pointer to the retrieved data. - If the retrieval failed, %NULL we be stored here, otherwise, it - will be non-%NULL and the returned data should be freed with g_free() - when you are finished using it. The length of the - allocated memory is one more than the length - of the returned data, and the final byte will always - be zero, to ensure nul-termination of strings. - * @prop_type: location to store the type of the property. - * @prop_format: location to store the format of the property. - * - * Retrieves selection data that was stored by the selection - * data in response to a call to gdk_selection_convert(). This function - * will not be used by applications, who should use the #GtkClipboard - * API instead. - * - * Return value: the length of the retrieved data. - **/ gint -gdk_selection_property_get (GdkWindow *requestor, - guchar **data, - GdkAtom *ret_type, - gint *ret_format) +_gdk_x11_display_get_selection_property (GdkDisplay *display, + GdkWindow *requestor, + guchar **data, + GdkAtom *ret_type, + gint *ret_format) { gulong nitems; gulong nbytes; - gulong length = 0; /* Quiet GCC */ + gulong length = 0; Atom prop_type; gint prop_format; guchar *t = NULL; - GdkDisplay *display; - - g_return_val_if_fail (requestor != NULL, 0); - g_return_val_if_fail (GDK_IS_WINDOW (requestor), 0); - g_return_val_if_fail (GDK_WINDOW_IS_X11 (requestor), 0); - - display = GDK_WINDOW_DISPLAY (requestor); if (GDK_WINDOW_DESTROYED (requestor) || !GDK_WINDOW_IS_X11 (requestor)) goto err; @@ -297,72 +226,72 @@ gdk_selection_property_get (GdkWindow *requestor, notified of PropertyChange events _before_ the property is deleted. Otherwise there's no guarantee we'll win the race ... */ if (XGetWindowProperty (GDK_WINDOW_XDISPLAY (requestor), - GDK_WINDOW_XID (requestor), - gdk_x11_atom_to_xatom_for_display (display, _gdk_selection_property), - 0, 0x1FFFFFFF /* MAXINT32 / 4 */, False, - AnyPropertyType, &prop_type, &prop_format, - &nitems, &nbytes, &t) != Success) + GDK_WINDOW_XID (requestor), + gdk_x11_get_xatom_by_name_for_display (display, "GDK_SELECTION"), + 0, 0x1FFFFFFF /* MAXINT32 / 4 */, False, + AnyPropertyType, &prop_type, &prop_format, + &nitems, &nbytes, &t) != Success) goto err; - + if (prop_type != None) { if (ret_type) - *ret_type = gdk_x11_xatom_to_atom_for_display (display, prop_type); + *ret_type = gdk_x11_xatom_to_atom_for_display (display, prop_type); if (ret_format) - *ret_format = prop_format; + *ret_format = prop_format; if (prop_type == XA_ATOM || - prop_type == gdk_x11_get_xatom_by_name_for_display (display, "ATOM_PAIR")) - { - Atom* atoms = (Atom*) t; - GdkAtom* atoms_dest; - gint num_atom, i; + prop_type == gdk_x11_get_xatom_by_name_for_display (display, "ATOM_PAIR")) + { + Atom* atoms = (Atom*) t; + GdkAtom* atoms_dest; + gint num_atom, i; - if (prop_format != 32) - goto err; - - num_atom = nitems; - length = sizeof (GdkAtom) * num_atom + 1; + if (prop_format != 32) + goto err; - if (data) - { - *data = g_malloc (length); - (*data)[length - 1] = '\0'; - atoms_dest = (GdkAtom *)(*data); - - for (i=0; i < num_atom; i++) - atoms_dest[i] = gdk_x11_xatom_to_atom_for_display (display, atoms[i]); - } - } + num_atom = nitems; + length = sizeof (GdkAtom) * num_atom + 1; + + if (data) + { + *data = g_malloc (length); + (*data)[length - 1] = '\0'; + atoms_dest = (GdkAtom *)(*data); + + for (i=0; i < num_atom; i++) + atoms_dest[i] = gdk_x11_xatom_to_atom_for_display (display, atoms[i]); + } + } else - { - switch (prop_format) - { - case 8: - length = nitems; - break; - case 16: - length = sizeof(short) * nitems; - break; - case 32: - length = sizeof(long) * nitems; - break; - default: - g_assert_not_reached (); - break; - } - - /* Add on an extra byte to handle null termination. X guarantees - that t will be 1 longer than nitems and null terminated */ - length += 1; + { + switch (prop_format) + { + case 8: + length = nitems; + break; + case 16: + length = sizeof(short) * nitems; + break; + case 32: + length = sizeof(long) * nitems; + break; + default: + g_assert_not_reached (); + break; + } + + /* Add on an extra byte to handle null termination. X guarantees + that t will be 1 longer than nitems and null terminated */ + length += 1; + + if (data) + *data = g_memdup (t, length); + } - if (data) - *data = g_memdup (t, length); - } - if (t) - XFree (t); - + XFree (t); + return length - 1; } @@ -373,36 +302,20 @@ gdk_selection_property_get (GdkWindow *requestor, *ret_format = 0; if (data) *data = NULL; - + return 0; } -/** - * gdk_selection_send_notify_for_display: - * @display: the #GdkDisplay where @requestor is realized - * @requestor: window to which to deliver response. - * @selection: selection that was requested. - * @target: target that was selected. - * @property: property in which the selection owner stored the data, - * or %GDK_NONE to indicate that the request was rejected. - * @time_: timestamp. - * - * Send a response to SelectionRequest event. - * - * Since: 2.2 - **/ void -gdk_selection_send_notify_for_display (GdkDisplay *display, - GdkNativeWindow requestor, - GdkAtom selection, - GdkAtom target, - GdkAtom property, - guint32 time) +_gdk_x11_display_send_selection_notify (GdkDisplay *display, + GdkNativeWindow requestor, + GdkAtom selection, + GdkAtom target, + GdkAtom property, + guint32 time) { XSelectionEvent xevent; - - g_return_if_fail (GDK_IS_DISPLAY (display)); - + xevent.type = SelectionNotify; xevent.serial = 0; xevent.send_event = True; @@ -415,39 +328,39 @@ gdk_selection_send_notify_for_display (GdkDisplay *display, xevent.property = gdk_x11_atom_to_xatom_for_display (display, property); xevent.time = time; - _gdk_send_xevent (display, requestor, False, NoEventMask, (XEvent*) & xevent); + _gdk_x11_display_send_xevent (display, requestor, False, NoEventMask, (XEvent*) & xevent); } /** - * gdk_text_property_to_text_list_for_display: - * @display: The #GdkDisplay where the encoding is defined. - * @encoding: an atom representing the encoding. The most - * common values for this are STRING, or COMPOUND_TEXT. - * This is value used as the type for the property. - * @format: the format of the property. - * @text: The text data. - * @length: The number of items to transform. - * @list: location to store a terminated array of strings in - * the encoding of the current locale. This array should be + * gdk_x11_display_text_property_to_text_list: + * @display: The #GdkDisplay where the encoding is defined + * @encoding: an atom representing the encoding. The most + * common values for this are STRING, or COMPOUND_TEXT. + * This is value used as the type for the property + * @format: the format of the property + * @text: The text data + * @length: The number of items to transform + * @list: location to store an array of strings in + * the encoding of the current locale. This array should be * freed using gdk_free_text_list(). * - * Convert a text string from the encoding as it is stored + * Convert a text string from the encoding as it is stored * in a property into an array of strings in the encoding of * the current locale. (The elements of the array represent the * nul-separated elements of the original text string.) * - * Returns: the number of strings stored in list, or 0, - * if the conversion failed. + * Returns: the number of strings stored in list, or 0, + * if the conversion failed * - * Since: 2.2 + * Since: 2.24 */ gint -gdk_text_property_to_text_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gdk_x11_display_text_property_to_text_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { XTextProperty property; gint count = 0; @@ -458,38 +371,40 @@ gdk_text_property_to_text_list_for_display (GdkDisplay *display, if (list) *list = NULL; - if (display->closed) + if (gdk_display_is_closed (display)) return 0; property.value = (guchar *)text; property.encoding = gdk_x11_atom_to_xatom_for_display (display, encoding); property.format = format; property.nitems = length; - res = XmbTextPropertyToTextList (GDK_DISPLAY_XDISPLAY (display), &property, - &local_list, &count); + res = XmbTextPropertyToTextList (GDK_DISPLAY_XDISPLAY (display), &property, + &local_list, &count); if (res == XNoMemory || res == XLocaleNotSupported || res == XConverterNotFound) return 0; else { if (list) - *list = local_list; + *list = local_list; else - XFreeStringList (local_list); - + XFreeStringList (local_list); + return count; } } /** - * gdk_free_text_list: + * gdk_x11_free_text_list: * @list: the value stored in the @list parameter by - * a call to gdk_text_property_to_text_list(). + * a call to gdk_x11_display_text_property_to_text_list(). * * Frees the array of strings created by - * gdk_text_property_to_text_list(). + * gdk_x11_display_text_property_to_text_list(). + * + * Since: 2.24 */ void -gdk_free_text_list (gchar **list) +gdk_x11_free_text_list (gchar **list) { g_return_if_fail (list != NULL); @@ -498,9 +413,9 @@ gdk_free_text_list (gchar **list) static gint make_list (const gchar *text, - gint length, - gboolean latin1, - gchar ***list) + gint length, + gboolean latin1, + gchar ***list) { GSList *strings = NULL; gint n_strings = 0; @@ -513,40 +428,40 @@ make_list (const gchar *text, while (p < text + length) { gchar *str; - + q = p; while (*q && q < text + length) - q++; + q++; if (latin1) - { - str = g_convert (p, q - p, - "UTF-8", "ISO-8859-1", - NULL, NULL, &error); + { + str = g_convert (p, q - p, + "UTF-8", "ISO-8859-1", + NULL, NULL, &error); - if (!str) - { - g_warning ("Error converting selection from STRING: %s", - error->message); - g_error_free (error); - } - } + if (!str) + { + g_warning ("Error converting selection from STRING: %s", + error->message); + g_error_free (error); + } + } else - { - str = g_strndup (p, q - p); - if (!g_utf8_validate (str, -1, NULL)) - { - g_warning ("Error converting selection from UTF8_STRING"); - g_free (str); - str = NULL; - } - } + { + str = g_strndup (p, q - p); + if (!g_utf8_validate (str, -1, NULL)) + { + g_warning ("Error converting selection from UTF8_STRING"); + g_free (str); + str = NULL; + } + } if (str) - { - strings = g_slist_prepend (strings, str); - n_strings++; - } + { + strings = g_slist_prepend (strings, str); + n_strings++; + } p = q + 1; } @@ -556,54 +471,32 @@ make_list (const gchar *text, *list = g_new (gchar *, n_strings + 1); (*list)[n_strings] = NULL; } - + i = n_strings; tmp_list = strings; while (tmp_list) { if (list) - (*list)[--i] = tmp_list->data; + (*list)[--i] = tmp_list->data; else - g_free (tmp_list->data); - + g_free (tmp_list->data); + tmp_list = tmp_list->next; } - + g_slist_free (strings); return n_strings; } -/** - * gdk_text_property_to_utf8_list_for_display: - * @display: a #GdkDisplay - * @encoding: an atom representing the encoding of the text - * @format: the format of the property - * @text: the text to convert - * @length: the length of @text, in bytes - * @list: location to store the list of strings or %NULL. The - * list should be freed with g_strfreev(). - * - * Converts a text property in the given encoding to - * a list of UTF-8 strings. - * - * Return value: the number of strings in the resulting - * list. - * - * Since: 2.2 - **/ -gint -gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, - GdkAtom encoding, - gint format, - const guchar *text, - gint length, - gchar ***list) +gint +_gdk_x11_display_text_property_to_utf8_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list) { - g_return_val_if_fail (text != NULL, 0); - g_return_val_if_fail (length >= 0, 0); - g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - if (encoding == GDK_TARGET_STRING) { return make_list ((gchar *)text, length, TRUE, list); @@ -621,100 +514,100 @@ gdk_text_property_to_utf8_list_for_display (GdkDisplay *display, gboolean need_conversion = !g_get_charset (&charset); gint count = 0; GError *error = NULL; - + /* Probably COMPOUND text, we fall back to Xlib routines */ - local_count = gdk_text_property_to_text_list_for_display (display, - encoding, - format, - text, - length, - &local_list); + local_count = gdk_x11_display_text_property_to_text_list (display, + encoding, + format, + text, + length, + &local_list); if (list) - *list = g_new (gchar *, local_count + 1); - + *list = g_new (gchar *, local_count + 1); + for (i=0; imessage); - g_error_free (error); - error = NULL; - } - } - else - { - if (list) - { - if (g_utf8_validate (local_list[i], -1, NULL)) - (*list)[count++] = g_strdup (local_list[i]); - else - g_warning ("Error converting selection"); - } - } - } + { + /* list contains stuff in our default encoding + */ + if (need_conversion) + { + gchar *utf = g_convert (local_list[i], -1, + "UTF-8", charset, + NULL, NULL, &error); + if (utf) + { + if (list) + (*list)[count++] = utf; + else + g_free (utf); + } + else + { + g_warning ("Error converting to UTF-8 from '%s': %s", + charset, error->message); + g_error_free (error); + error = NULL; + } + } + else + { + if (list) + { + if (g_utf8_validate (local_list[i], -1, NULL)) + (*list)[count++] = g_strdup (local_list[i]); + else + g_warning ("Error converting selection"); + } + } + } if (local_count) - gdk_free_text_list (local_list); - + gdk_x11_free_text_list (local_list); + if (list) - (*list)[count] = NULL; + (*list)[count] = NULL; return count; } } /** - * gdk_string_to_compound_text_for_display: - * @display: the #GdkDisplay where the encoding is defined. - * @str: a nul-terminated string. - * @encoding: location to store the encoding atom - * (to be used as the type for the property). - * @format: location to store the format of the property - * @ctext: location to store newly allocated data for the property. - * @length: the length of @text, in bytes - * - * Convert a string from the encoding of the current - * locale into a form suitable for storing in a window property. - * - * Returns: 0 upon success, non-zero upon failure. + * gdk_x11_display_string_to_compound_text: + * @display: the #GdkDisplay where the encoding is defined + * @str: a nul-terminated string + * @encoding: location to store the encoding atom + * (to be used as the type for the property) + * @format: location to store the format of the property + * @ctext: location to store newly allocated data for the property + * @length: the length of @text, in bytes * - * Since: 2.2 - **/ + * Convert a string from the encoding of the current + * locale into a form suitable for storing in a window property. + * + * Returns: 0 upon success, non-zero upon failure + * + * Since: 2.24 + */ gint -gdk_string_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) +gdk_x11_display_string_to_compound_text (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length) { gint res; XTextProperty property; g_return_val_if_fail (GDK_IS_DISPLAY (display), 0); - if (display->closed) + if (gdk_display_is_closed (display)) res = XLocaleNotSupported; else - res = XmbTextListToTextProperty (GDK_DISPLAY_XDISPLAY (display), - (char **)&str, 1, XCompoundTextStyle, - &property); + res = XmbTextListToTextProperty (GDK_DISPLAY_XDISPLAY (display), + (char **)&str, 1, XCompoundTextStyle, + &property); if (res != Success) { property.encoding = None; @@ -742,9 +635,9 @@ gdk_string_to_compound_text_for_display (GdkDisplay *display, * This routine strips out all non-allowed C0 and C1 characters * from the input string and also canonicalizes \r, and \r\n to \n */ -static gchar * +static gchar * sanitize_utf8 (const gchar *src, - gboolean return_latin1) + gboolean return_latin1) { gint len = strlen (src); GString *result = g_string_sized_new (len); @@ -753,89 +646,76 @@ sanitize_utf8 (const gchar *src, while (*p) { if (*p == '\r') - { - p++; - if (*p == '\n') - p++; + { + p++; + if (*p == '\n') + p++; - g_string_append_c (result, '\n'); - } + g_string_append_c (result, '\n'); + } else - { - gunichar ch = g_utf8_get_char (p); - - if (!((ch < 0x20 && ch != '\t' && ch != '\n') || (ch >= 0x7f && ch < 0xa0))) - { - if (return_latin1) - { - if (ch <= 0xff) - g_string_append_c (result, ch); - else - g_string_append_printf (result, - ch < 0x10000 ? "\\u%04x" : "\\U%08x", - ch); - } - else - { - char buf[7]; - gint buflen; - - buflen = g_unichar_to_utf8 (ch, buf); - g_string_append_len (result, buf, buflen); - } - } + { + gunichar ch = g_utf8_get_char (p); - p = g_utf8_next_char (p); - } + if (!((ch < 0x20 && ch != '\t' && ch != '\n') || (ch >= 0x7f && ch < 0xa0))) + { + if (return_latin1) + { + if (ch <= 0xff) + g_string_append_c (result, ch); + else + g_string_append_printf (result, + ch < 0x10000 ? "\\u%04x" : "\\U%08x", + ch); + } + else + { + char buf[7]; + gint buflen; + + buflen = g_unichar_to_utf8 (ch, buf); + g_string_append_len (result, buf, buflen); + } + } + + p = g_utf8_next_char (p); + } } return g_string_free (result, FALSE); } -/** - * gdk_utf8_to_string_target: - * @str: a UTF-8 string - * - * Converts an UTF-8 string into the best possible representation - * as a STRING. The representation of characters not in STRING - * is not specified; it may be as pseudo-escape sequences - * \x{ABCD}, or it may be in some other form of approximation. - * - * Return value: the newly-allocated string, or %NULL if the - * conversion failed. (It should not fail for - * any properly formed UTF-8 string unless system - * limits like memory or file descriptors are exceeded.) - **/ gchar * -gdk_utf8_to_string_target (const gchar *str) +_gdk_x11_display_utf8_to_string_target (GdkDisplay *display, + const gchar *str) { return sanitize_utf8 (str, TRUE); } /** - * gdk_utf8_to_compound_text_for_display: - * @display: a #GdkDisplay - * @str: a UTF-8 string + * gdk_x11_display_utf8_to_compound_text: + * @display: a #GdkDisplay + * @str: a UTF-8 string * @encoding: location to store resulting encoding - * @format: location to store format of the result - * @ctext: location to store the data of the result - * @length: location to store the length of the data - * stored in @ctext - * - * Converts from UTF-8 to compound text. - * - * Return value: %TRUE if the conversion succeeded, otherwise - * %FALSE. + * @format: location to store format of the result + * @ctext: location to store the data of the result + * @length: location to store the length of the data + * stored in @ctext * - * Since: 2.2 - **/ + * Converts from UTF-8 to compound text. + * + * Return value: %TRUE if the conversion succeeded, + * otherwise %FALSE + * + * Since: 2.24 + */ gboolean -gdk_utf8_to_compound_text_for_display (GdkDisplay *display, - const gchar *str, - GdkAtom *encoding, - gint *format, - guchar **ctext, - gint *length) +gdk_x11_display_utf8_to_compound_text (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length) { gboolean need_conversion; const gchar *charset; @@ -853,53 +733,56 @@ gdk_utf8_to_compound_text_for_display (GdkDisplay *display, if (need_conversion) { locale_str = g_convert (tmp_str, -1, - charset, "UTF-8", - NULL, NULL, &error); + charset, "UTF-8", + NULL, NULL, &error); g_free (tmp_str); if (!locale_str) - { - if (!(error->domain = G_CONVERT_ERROR && - error->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE)) - { - g_warning ("Error converting from UTF-8 to '%s': %s", - charset, error->message); - } - g_error_free (error); + { + if (!(error->domain = G_CONVERT_ERROR && + error->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE)) + { + g_warning ("Error converting from UTF-8 to '%s': %s", + charset, error->message); + } + g_error_free (error); - if (encoding) - *encoding = None; - if (format) - *format = None; - if (ctext) - *ctext = NULL; - if (length) - *length = 0; + if (encoding) + *encoding = None; + if (format) + *format = None; + if (ctext) + *ctext = NULL; + if (length) + *length = 0; - return FALSE; - } + return FALSE; + } } else locale_str = tmp_str; - - result = gdk_string_to_compound_text_for_display (display, locale_str, - encoding, format, - ctext, length); + + result = gdk_x11_display_string_to_compound_text (display, locale_str, + encoding, format, + ctext, length); result = (result == Success? TRUE : FALSE); - + g_free (locale_str); return result; } /** - * gdk_free_compound_text: + * gdk_x11_free_compound_text: * @ctext: The pointer stored in @ctext from a call to - * gdk_string_to_compound_text(). + * gdk_x11_display_string_to_compound_text(). * - * Frees the data returned from gdk_string_to_compound_text(). + * Frees the data returned from gdk_x11_display_string_to_compound_text(). + * + * Since: 2.24 */ -void gdk_free_compound_text (guchar *ctext) +void +gdk_x11_free_compound_text (guchar *ctext) { if (ctext) XFree (ctext); diff --git a/gdk/x11/gdkspawn-x11.c b/gdk/x11/gdkspawn-x11.c deleted file mode 100644 index 7f97b4e4f0..0000000000 --- a/gdk/x11/gdkspawn-x11.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (C) 2003 Sun Microsystems Inc. - * - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Authors: Mark McLoughlin - */ - -#include "config.h" - -#include "gdkspawn.h" - -#include -#include -#include - - -typedef struct { - char *display; - GSpawnChildSetupFunc child_setup; - gpointer user_data; -} UserChildSetup; - -/* - * Set the DISPLAY variable, and then call the user-specified child setup - * function. This is required so that applications can use gdk_spawn_* and - * call putenv() in their child_setup functions. - */ -static void -set_environment (gpointer user_data) -{ - UserChildSetup *setup = user_data; - - g_setenv ("DISPLAY", setup->display, TRUE); - - if (setup->child_setup) - setup->child_setup (setup->user_data); -} - -/** - * gdk_spawn_on_screen: - * @screen: a #GdkScreen - * @working_directory: child's current working directory, or %NULL to - * inherit parent's - * @argv: child's argument vector - * @envp: child's environment, or %NULL to inherit parent's - * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() - * @user_data: user data for @child_setup - * @child_pid: return location for child process ID, or %NULL - * @error: return location for error - * - * Like g_spawn_async(), except the child process is spawned in such - * an environment that on calling gdk_display_open() it would be - * returned a #GdkDisplay with @screen as the default screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if error is set - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_on_screen (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - GError **error) -{ - UserChildSetup setup_data; - - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - - setup_data.display = gdk_screen_make_display_name (screen); - setup_data.child_setup = child_setup; - setup_data.user_data = user_data; - - return g_spawn_async (working_directory, - argv, - envp, - flags, - set_environment, - &setup_data, - child_pid, - error); -} - -/** - * gdk_spawn_on_screen_with_pipes: - * @screen: a #GdkScreen - * @working_directory: child's current working directory, or %NULL to - * inherit parent's - * @argv: child's argument vector - * @envp: child's environment, or %NULL to inherit parent's - * @flags: flags from #GSpawnFlags - * @child_setup: function to run in the child just before exec() - * @user_data: user data for @child_setup - * @child_pid: return location for child process ID, or %NULL - * @standard_input: return location for file descriptor to write to - * child's stdin, or %NULL - * @standard_output: return location for file descriptor to read child's - * stdout, or %NULL - * @standard_error: return location for file descriptor to read child's - * stderr, or %NULL - * @error: return location for error - * - * Like g_spawn_async_with_pipes(), except the child process is - * spawned in such an environment that on calling gdk_display_open() - * it would be returned a #GdkDisplay with @screen as the default - * screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if an error was set - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_on_screen_with_pipes (GdkScreen *screen, - const gchar *working_directory, - gchar **argv, - gchar **envp, - GSpawnFlags flags, - GSpawnChildSetupFunc child_setup, - gpointer user_data, - GPid *child_pid, - gint *standard_input, - gint *standard_output, - gint *standard_error, - GError **error) -{ - UserChildSetup setup_data; - - g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); - - setup_data.display = gdk_screen_make_display_name (screen); - setup_data.child_setup = child_setup; - setup_data.user_data = user_data; - - return g_spawn_async_with_pipes (working_directory, - argv, - envp, - flags, - set_environment, - &setup_data, - child_pid, - standard_input, - standard_output, - standard_error, - error); - -} - -/** - * gdk_spawn_command_line_on_screen: - * @screen: a #GdkScreen - * @command_line: a command line - * @error: return location for errors - * - * Like g_spawn_command_line_async(), except the child process is - * spawned in such an environment that on calling gdk_display_open() - * it would be returned a #GdkDisplay with @screen as the default - * screen. - * - * This is useful for applications which wish to launch an application - * on a specific screen. - * - * Return value: %TRUE on success, %FALSE if error is set. - * - * Since: 2.4 - **/ -gboolean -gdk_spawn_command_line_on_screen (GdkScreen *screen, - const gchar *command_line, - GError **error) -{ - gchar **argv = NULL; - gboolean retval; - - g_return_val_if_fail (command_line != NULL, FALSE); - - if (!g_shell_parse_argv (command_line, - NULL, &argv, - error)) - return FALSE; - - retval = gdk_spawn_on_screen (screen, - NULL, argv, NULL, - G_SPAWN_SEARCH_PATH, - NULL, NULL, NULL, - error); - g_strfreev (argv); - - return retval; -} diff --git a/gdk/x11/gdktestutils-x11.c b/gdk/x11/gdktestutils-x11.c index 960301b1e3..4450c082e6 100644 --- a/gdk/x11/gdktestutils-x11.c +++ b/gdk/x11/gdktestutils-x11.c @@ -23,23 +23,12 @@ #include "gdktestutils.h" #include "gdkkeysyms.h" -#include "gdkx.h" +#include "gdkprivate-x11.h" #include -/** - * gdk_test_render_sync: - * @window: a mapped #GdkWindow - * - * This function retrieves a pixel from @window to force the windowing - * system to carry out any pending rendering commands. - * This function is intended to be used to syncronize with rendering - * pipelines, to benchmark windowing system rendering operations. - * - * Since: 2.14 - **/ void -gdk_test_render_sync (GdkWindow *window) +_gdk_x11_window_sync_rendering (GdkWindow *window) { Display *display = GDK_WINDOW_XDISPLAY (window); XImage *ximage; @@ -53,44 +42,13 @@ gdk_test_render_sync (GdkWindow *window) XDestroyImage (ximage); } -/** - * gdk_test_simulate_key - * @window: a #GdkWindow to simulate a key event for. - * @x: x coordinate within @window for the key event. - * @y: y coordinate within @window for the key event. - * @keyval: A GDK keyboard value. - * @modifiers: Keyboard modifiers the event is setup with. - * @key_pressrelease: either %GDK_KEY_PRESS or %GDK_KEY_RELEASE - * - * This function is intended to be used in GTK+ test programs. - * If (@x,@y) are > (-1,-1), it will warp the mouse pointer to - * the given (@x,@y) corrdinates within @window and simulate a - * key press or release event. - * - * When the mouse pointer is warped to the target location, use - * of this function outside of test programs that run in their - * own virtual windowing system (e.g. Xvfb) is not recommended. - * If (@x,@y) are passed as (-1,-1), the mouse pointer will not - * be warped and @window origin will be used as mouse pointer - * location for the event. - * - * Also, gtk_test_simulate_key() is a fairly low level function, - * for most testing purposes, gtk_test_widget_send_key() is the - * right function to call which will generate a key press event - * followed by its accompanying key release event. - * - * Returns: whether all actions neccessary for a key event simulation - * were carried out successfully. - * - * Since: 2.14 - **/ gboolean -gdk_test_simulate_key (GdkWindow *window, - gint x, - gint y, - guint keyval, - GdkModifierType modifiers, - GdkEventType key_pressrelease) +_gdk_x11_window_simulate_key (GdkWindow *window, + gint x, + gint y, + guint keyval, + GdkModifierType modifiers, + GdkEventType key_pressrelease) { GdkScreen *screen; GdkKeymapKey *keys = NULL; @@ -121,7 +79,7 @@ gdk_test_simulate_key (GdkWindow *window, xev.type = key_pressrelease == GDK_KEY_PRESS ? KeyPress : KeyRelease; xev.display = GDK_WINDOW_XDISPLAY (window); xev.window = GDK_WINDOW_XID (window); - xev.root = RootWindow (xev.display, GDK_SCREEN_XNUMBER (screen)); + xev.root = RootWindow (xev.display, GDK_X11_SCREEN (screen)->screen_num); xev.subwindow = 0; xev.time = 0; xev.x = MAX (x, 0); @@ -147,7 +105,7 @@ gdk_test_simulate_key (GdkWindow *window, g_free (keys); if (!success) return FALSE; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (GDK_WINDOW_DISPLAY (window)); xev.same_screen = XTranslateCoordinates (xev.display, xev.window, xev.root, xev.x, xev.y, &xev.x_root, &xev.y_root, &xev.subwindow); @@ -158,44 +116,17 @@ gdk_test_simulate_key (GdkWindow *window, success &= 0 != XWarpPointer (xev.display, None, xev.window, 0, 0, 0, 0, xev.x, xev.y); success &= 0 != XSendEvent (xev.display, xev.window, True, key_pressrelease == GDK_KEY_PRESS ? KeyPressMask : KeyReleaseMask, (XEvent*) &xev); XSync (xev.display, False); - success &= 0 == gdk_error_trap_pop(); + success &= 0 == gdk_x11_display_error_trap_pop (GDK_WINDOW_DISPLAY (window)); return success; } -/** - * gdk_test_simulate_button - * @window: a #GdkWindow to simulate a button event for. - * @x: x coordinate within @window for the button event. - * @y: y coordinate within @window for the button event. - * @button: Number of the pointer button for the event, usually 1, 2 or 3. - * @modifiers: Keyboard modifiers the event is setup with. - * @button_pressrelease: either %GDK_BUTTON_PRESS or %GDK_BUTTON_RELEASE - * - * This function is intended to be used in GTK+ test programs. - * It will warp the mouse pointer to the given (@x,@y) corrdinates - * within @window and simulate a button press or release event. - * Because the mouse pointer needs to be warped to the target - * location, use of this function outside of test programs that - * run in their own virtual windowing system (e.g. Xvfb) is not - * recommended. - * - * Also, gtk_test_simulate_button() is a fairly low level function, - * for most testing purposes, gtk_test_widget_click() is the right - * function to call which will generate a button press event followed - * by its accompanying button release event. - * - * Returns: whether all actions neccessary for a button event simulation - * were carried out successfully. - * - * Since: 2.14 - **/ gboolean -gdk_test_simulate_button (GdkWindow *window, - gint x, - gint y, - guint button, /*1..3*/ - GdkModifierType modifiers, - GdkEventType button_pressrelease) +_gdk_x11_window_simulate_button (GdkWindow *window, + gint x, + gint y, + guint button, /*1..3*/ + GdkModifierType modifiers, + GdkEventType button_pressrelease) { GdkScreen *screen; XButtonEvent xev = { @@ -226,7 +157,7 @@ gdk_test_simulate_button (GdkWindow *window, xev.type = button_pressrelease == GDK_BUTTON_PRESS ? ButtonPress : ButtonRelease; xev.display = GDK_WINDOW_XDISPLAY (window); xev.window = GDK_WINDOW_XID (window); - xev.root = RootWindow (xev.display, GDK_SCREEN_XNUMBER (screen)); + xev.root = RootWindow (xev.display, GDK_X11_SCREEN (screen)->screen_num); xev.subwindow = 0; xev.time = 0; xev.x = x; @@ -235,7 +166,7 @@ gdk_test_simulate_button (GdkWindow *window, xev.y_root = 0; xev.state = modifiers; xev.button = button; - gdk_error_trap_push (); + gdk_x11_display_error_trap_push (GDK_WINDOW_DISPLAY (window)); xev.same_screen = XTranslateCoordinates (xev.display, xev.window, xev.root, xev.x, xev.y, &xev.x_root, &xev.y_root, &xev.subwindow); @@ -245,6 +176,6 @@ gdk_test_simulate_button (GdkWindow *window, success &= 0 != XWarpPointer (xev.display, None, xev.window, 0, 0, 0, 0, xev.x, xev.y); success &= 0 != XSendEvent (xev.display, xev.window, True, button_pressrelease == GDK_BUTTON_PRESS ? ButtonPressMask : ButtonReleaseMask, (XEvent*) &xev); XSync (xev.display, False); - success &= 0 == gdk_error_trap_pop(); + success &= 0 == gdk_x11_display_error_trap_pop(GDK_WINDOW_DISPLAY (window)); return success; } diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c index 59acba26b0..eb394f6fc2 100644 --- a/gdk/x11/gdkvisual-x11.c +++ b/gdk/x11/gdkvisual-x11.c @@ -26,26 +26,24 @@ #include "config.h" -#include "gdkvisual.h" - -#include "gdkx.h" +#include "gdkvisualprivate.h" #include "gdkprivate-x11.h" #include "gdkscreen-x11.h" -#include "gdkinternals.h" #include #include -struct _GdkVisualPrivate +struct _GdkX11Visual { + GdkVisual visual; + Visual *xvisual; - GdkScreen *screen; Colormap colormap; }; -struct _GdkVisualClass +struct _GdkX11VisualClass { - GObjectClass parent_class; + GdkVisualClass visual_class; }; static void gdk_visual_add (GdkVisual *visual); @@ -71,42 +69,36 @@ static const gchar *const visual_names[] = #endif /* G_ENABLE_DEBUG */ -G_DEFINE_TYPE (GdkVisual, gdk_visual, G_TYPE_OBJECT) +G_DEFINE_TYPE (GdkX11Visual, gdk_x11_visual, GDK_TYPE_VISUAL) static void -gdk_visual_finalize (GObject *object) +gdk_x11_visual_init (GdkX11Visual *x11_visual) { - GdkVisualPrivate *priv = (GdkVisualPrivate *) object; - - if (priv->colormap != None) - XFreeColormap (GDK_SCREEN_XDISPLAY (priv->screen), - priv->colormap); - - G_OBJECT_CLASS (gdk_visual_parent_class)->finalize (object); + x11_visual->colormap = None; } static void -gdk_visual_class_init (GdkVisualClass *visual_class) +gdk_x11_visual_finalize (GObject *object) { - GObjectClass *object_class = G_OBJECT_CLASS (visual_class); + GdkVisual *visual = (GdkVisual *)object; + GdkX11Visual *x11_visual = (GdkX11Visual *)object; - g_type_class_add_private (object_class, sizeof (GdkVisualPrivate)); + if (x11_visual->colormap != None) + XFreeColormap (GDK_SCREEN_XDISPLAY (visual->screen), x11_visual->colormap); - object_class->finalize = gdk_visual_finalize; + G_OBJECT_CLASS (gdk_x11_visual_parent_class)->finalize (object); } static void -gdk_visual_init (GdkVisual *visual) +gdk_x11_visual_class_init (GdkX11VisualClass *class) { - visual->priv = G_TYPE_INSTANCE_GET_PRIVATE (visual, - GDK_TYPE_VISUAL, - GdkVisualPrivate); + GObjectClass *object_class = G_OBJECT_CLASS (class); - visual->priv->colormap = None; + object_class->finalize = gdk_x11_visual_finalize; } void -_gdk_visual_init (GdkScreen *screen) +_gdk_x11_screen_init_visuals (GdkScreen *screen) { static const gint possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 }; static const GdkVisualType possible_types[6] = @@ -119,7 +111,7 @@ _gdk_visual_init (GdkScreen *screen) GDK_VISUAL_STATIC_GRAY }; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; XVisualInfo *visual_list; XVisualInfo visual_template; GdkVisual *temp_visual; @@ -128,25 +120,25 @@ _gdk_visual_init (GdkScreen *screen) int nxvisuals; int nvisuals; int i, j; - + g_return_if_fail (GDK_IS_SCREEN (screen)); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); nxvisuals = 0; - visual_template.screen = screen_x11->screen_num; - visual_list = XGetVisualInfo (screen_x11->xdisplay, VisualScreenMask, &visual_template, &nxvisuals); - + visual_template.screen = x11_screen->screen_num; + visual_list = XGetVisualInfo (x11_screen->xdisplay, VisualScreenMask, &visual_template, &nxvisuals); + visuals = g_new (GdkVisual *, nxvisuals); for (i = 0; i < nxvisuals; i++) - visuals[i] = g_object_new (GDK_TYPE_VISUAL, NULL); + visuals[i] = g_object_new (GDK_TYPE_X11_VISUAL, NULL); - default_xvisual = DefaultVisual (screen_x11->xdisplay, screen_x11->screen_num); + default_xvisual = DefaultVisual (x11_screen->xdisplay, x11_screen->screen_num); nvisuals = 0; for (i = 0; i < nxvisuals; i++) { - visuals[nvisuals]->priv->screen = screen; - + visuals[nvisuals]->screen = screen; + if (visual_list[i].depth >= 1) { #ifdef __cplusplus @@ -177,14 +169,14 @@ _gdk_visual_init (GdkScreen *screen) visuals[nvisuals]->depth = visual_list[i].depth; visuals[nvisuals]->byte_order = - (ImageByteOrder(screen_x11->xdisplay) == LSBFirst) ? + (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; - visuals[nvisuals]->priv->xvisual = visual_list[i].visual; + 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)) @@ -215,7 +207,7 @@ _gdk_visual_init (GdkScreen *screen) visuals[nvisuals]->blue_shift = 0; visuals[nvisuals]->blue_prec = 0; } - + nvisuals += 1; } } @@ -259,11 +251,11 @@ _gdk_visual_init (GdkScreen *screen) for (i = 0; i < nvisuals; i++) { - if (default_xvisual->visualid == visuals[i]->priv->xvisual->visualid) + if (default_xvisual->visualid == GDK_X11_VISUAL (visuals[i])->xvisual->visualid) { - screen_x11->system_visual = visuals[i]; - visuals[i]->priv->colormap = DefaultColormap (screen_x11->xdisplay, - screen_x11->screen_num); + x11_screen->system_visual = visuals[i]; + GDK_X11_VISUAL (visuals[i])->colormap = + DefaultColormap (x11_screen->xdisplay, x11_screen->screen_num); } /* For now, we only support 8888 ARGB for the "rgba visual". @@ -275,11 +267,11 @@ _gdk_visual_init (GdkScreen *screen) visuals[i]->green_mask == 0x00ff00 && visuals[i]->blue_mask == 0x0000ff)) { - screen_x11->rgba_visual = GDK_VISUAL (visuals[i]); - } + x11_screen->rgba_visual = visuals[i]; + } } -#ifdef G_ENABLE_DEBUG +#ifdef G_ENABLE_DEBUG if (_gdk_debug_flags & GDK_DEBUG_MISC) { static const gchar *const visual_names[] = @@ -293,282 +285,172 @@ _gdk_visual_init (GdkScreen *screen) }; for (i = 0; i < nvisuals; i++) - g_message ("visual: %s: %d", - visual_names[visuals[i]->type], - visuals[i]->depth); + g_message ("visual: %s: %d", visual_names[visuals[i]->type], visuals[i]->depth); } #endif /* G_ENABLE_DEBUG */ - screen_x11->navailable_depths = 0; + 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]) { - screen_x11->available_depths[screen_x11->navailable_depths++] = visuals[j]->depth; + x11_screen->available_depths[x11_screen->navailable_depths++] = visuals[j]->depth; break; } } } - if (screen_x11->navailable_depths == 0) + if (x11_screen->navailable_depths == 0) g_error ("unable to find a usable depth"); - screen_x11->navailable_types = 0; + 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]) { - screen_x11->available_types[screen_x11->navailable_types++] = visuals[j]->type; + x11_screen->available_types[x11_screen->navailable_types++] = visuals[j]->type; break; } } } for (i = 0; i < nvisuals; i++) - gdk_visual_add ((GdkVisual*) visuals[i]); + gdk_visual_add (visuals[i]); - if (screen_x11->navailable_types == 0) + if (x11_screen->navailable_types == 0) g_error ("unable to find a usable visual type"); - screen_x11->visuals = visuals; - screen_x11->nvisuals = nvisuals; + x11_screen->visuals = visuals; + x11_screen->nvisuals = nvisuals; } -/** - * gdk_visual_get_best_depth: - * - * Get the best available depth for the default GDK screen. "Best" - * means "largest," i.e. 32 preferred over 24 preferred over 8 bits - * per pixel. - * - * Return value: best available depth - **/ gint -gdk_visual_get_best_depth (void) +_gdk_x11_screen_visual_get_best_depth (GdkScreen *screen) { - GdkScreen *screen = gdk_screen_get_default(); - - return GDK_SCREEN_X11 (screen)->available_depths[0]; + return GDK_X11_SCREEN (screen)->available_depths[0]; } -/** - * gdk_visual_get_best_type: - * - * Return the best available visual type for the default GDK screen. - * - * Return value: best visual type - **/ GdkVisualType -gdk_visual_get_best_type (void) +_gdk_x11_screen_visual_get_best_type (GdkScreen *screen) { - GdkScreen *screen = gdk_screen_get_default(); - - return GDK_SCREEN_X11 (screen)->available_types[0]; + return GDK_X11_SCREEN (screen)->available_types[0]; } -/** - * gdk_screen_get_system_visual: - * @screen: a #GdkScreen. - * - * Get the system's default visual for @screen. - * This is the visual for the root window of the display. - * The return value should not be freed. - * - * Return value: (transfer none): the system visual - * - * Since: 2.2 - **/ GdkVisual * -gdk_screen_get_system_visual (GdkScreen * screen) +_gdk_x11_screen_get_system_visual (GdkScreen *screen) { g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - return ((GdkVisual *) GDK_SCREEN_X11 (screen)->system_visual); + return ((GdkVisual *) GDK_X11_SCREEN (screen)->system_visual); } -/** - * gdk_visual_get_best: - * - * Get the visual with the most available colors for the default - * GDK screen. The return value should not be freed. - * - * Return value: (transfer none): best visual - **/ GdkVisual* -gdk_visual_get_best (void) +_gdk_x11_screen_visual_get_best (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default()); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); - return (GdkVisual *)screen_x11->visuals[0]; + return x11_screen->visuals[0]; } -/** - * gdk_visual_get_best_with_depth: - * @depth: a bit depth - * - * Get the best visual with depth @depth for the default GDK screen. - * Color visuals and visuals with mutable colormaps are preferred - * over grayscale or fixed-colormap visuals. The return value should not - * be freed. %NULL may be returned if no visual supports @depth. - * - * Return value: (transfer none): best visual for the given depth - **/ GdkVisual* -gdk_visual_get_best_with_depth (gint depth) +_gdk_x11_screen_visual_get_best_with_depth (GdkScreen *screen, + gint depth) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ()); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); GdkVisual *return_val; int i; return_val = NULL; - for (i = 0; i < screen_x11->nvisuals; i++) - if (depth == screen_x11->visuals[i]->depth) + for (i = 0; i < x11_screen->nvisuals; i++) + if (depth == x11_screen->visuals[i]->depth) { - return_val = (GdkVisual *) screen_x11->visuals[i]; + return_val = x11_screen->visuals[i]; break; } return return_val; } -/** - * gdk_visual_get_best_with_type: - * @visual_type: a visual type - * - * Get the best visual of the given @visual_type for the default GDK screen. - * Visuals with higher color depths are considered better. The return value - * should not be freed. %NULL may be returned if no visual has type - * @visual_type. - * - * Return value: (transfer none): best visual of the given type - **/ GdkVisual* -gdk_visual_get_best_with_type (GdkVisualType visual_type) +_gdk_x11_screen_visual_get_best_with_type (GdkScreen *screen, + GdkVisualType visual_type) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ()); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); GdkVisual *return_val; int i; return_val = NULL; - for (i = 0; i < screen_x11->nvisuals; i++) - if (visual_type == screen_x11->visuals[i]->type) + for (i = 0; i < x11_screen->nvisuals; i++) + if (visual_type == x11_screen->visuals[i]->type) { - return_val = (GdkVisual *) screen_x11->visuals[i]; + return_val = x11_screen->visuals[i]; break; } return return_val; } -/** - * gdk_visual_get_best_with_both: - * @depth: a bit depth - * @visual_type: a visual type - * - * Combines gdk_visual_get_best_with_depth() and gdk_visual_get_best_with_type(). - * - * Return value: (transfer none): best visual with both @depth and - * @visual_type, or %NULL if none - **/ GdkVisual* -gdk_visual_get_best_with_both (gint depth, - GdkVisualType visual_type) +_gdk_x11_screen_visual_get_best_with_both (GdkScreen *screen, + gint depth, + GdkVisualType visual_type) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ()); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); GdkVisual *return_val; int i; return_val = NULL; - for (i = 0; i < screen_x11->nvisuals; i++) - if ((depth == screen_x11->visuals[i]->depth) && - (visual_type == screen_x11->visuals[i]->type)) + for (i = 0; i < x11_screen->nvisuals; i++) + if ((depth == x11_screen->visuals[i]->depth) && + (visual_type == x11_screen->visuals[i]->type)) { - return_val = (GdkVisual *) screen_x11->visuals[i]; + return_val = x11_screen->visuals[i]; break; } return return_val; } -/** - * gdk_query_depths: - * @depths: (out) (array): return location for available depths - * @count: (out): return location for number of available depths - * - * This function returns the available bit depths for the default - * screen. It's equivalent to listing the visuals - * (gdk_list_visuals()) and then looking at the depth field in each - * visual, removing duplicates. - * - * The array returned by this function should not be freed. - * - **/ void -gdk_query_depths (gint **depths, - gint *count) +_gdk_x11_screen_query_depths (GdkScreen *screen, + gint **depths, + gint *count) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ()); - - *count = screen_x11->navailable_depths; - *depths = screen_x11->available_depths; + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); + + *count = x11_screen->navailable_depths; + *depths = x11_screen->available_depths; } -/** - * gdk_query_visual_types: - * @visual_types: return location for the available visual types - * @count: return location for the number of available visual types - * - * This function returns the available visual types for the default - * screen. It's equivalent to listing the visuals - * (gdk_list_visuals()) and then looking at the type field in each - * visual, removing duplicates. - * - * The array returned by this function should not be freed. - **/ void -gdk_query_visual_types (GdkVisualType **visual_types, - gint *count) +_gdk_x11_screen_query_visual_types (GdkScreen *screen, + GdkVisualType **visual_types, + gint *count) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ()); - - *count = screen_x11->navailable_types; - *visual_types = screen_x11->available_types; + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); + + *count = x11_screen->navailable_types; + *visual_types = x11_screen->available_types; } -/** - * gdk_screen_list_visuals: - * @screen: the relevant #GdkScreen. - * - * Lists the available visuals for the specified @screen. - * A visual describes a hardware image data format. - * For example, a visual might support 24-bit color, or 8-bit color, - * and might expect pixels to be in a certain format. - * - * Call g_list_free() on the return value when you're finished with it. - * - * Return value: (transfer container) (element-type GdkVisual): - * a list of visuals; the list must be freed, but not its contents - * - * Since: 2.2 - **/ GList * -gdk_screen_list_visuals (GdkScreen *screen) +_gdk_x11_screen_list_visuals (GdkScreen *screen) { GList *list; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; guint i; g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - screen_x11 = GDK_SCREEN_X11 (screen); - + x11_screen = GDK_X11_SCREEN (screen); + list = NULL; - for (i = 0; i < screen_x11->nvisuals; ++i) - list = g_list_append (list, screen_x11->visuals[i]); + for (i = 0; i < x11_screen->nvisuals; ++i) + list = g_list_append (list, x11_screen->visuals[i]); return list; } @@ -587,50 +469,36 @@ gdk_screen_list_visuals (GdkScreen *screen) */ GdkVisual * gdk_x11_screen_lookup_visual (GdkScreen *screen, - VisualID xvisualid) + VisualID xvisualid) { int i; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - for (i = 0; i < screen_x11->nvisuals; i++) - if (xvisualid == screen_x11->visuals[i]->priv->xvisual->visualid) - return (GdkVisual *) screen_x11->visuals[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; } -/** - * gdkx_visual_get: - * @xvisualid: a X visual id. - * - * Returns a #GdkVisual corresponding to a X visual. - * - * Return value: the #GdkVisual. - **/ -GdkVisual* -gdkx_visual_get (VisualID xvisualid) -{ - return gdk_x11_screen_lookup_visual (gdk_screen_get_default (), xvisualid); -} - static void gdk_visual_add (GdkVisual *visual) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (visual->priv->screen); - - if (!screen_x11->visual_hash) - screen_x11->visual_hash = g_hash_table_new ((GHashFunc) gdk_visual_hash, + GdkX11Screen *x11_screen = GDK_X11_SCREEN (visual->screen); + + if (!x11_screen->visual_hash) + x11_screen->visual_hash = g_hash_table_new ((GHashFunc) gdk_visual_hash, (GEqualFunc) gdk_visual_equal); - g_hash_table_insert (screen_x11->visual_hash, visual->priv->xvisual, visual); + g_hash_table_insert (x11_screen->visual_hash, GDK_X11_VISUAL (visual)->xvisual, visual); } static void gdk_visual_decompose_mask (gulong mask, - gint *shift, - gint *prec) + gint *shift, + gint *prec) { *shift = 0; *prec = 0; @@ -662,7 +530,7 @@ gdk_visual_hash (Visual *key) static gboolean gdk_visual_equal (Visual *a, - Visual *b) + Visual *b) { return (a->visualid == b->visualid); } @@ -678,53 +546,35 @@ gdk_visual_equal (Visual *a, Colormap _gdk_visual_get_x11_colormap (GdkVisual *visual) { - GdkVisualPrivate *priv; + GdkX11Visual *x11_visual; g_return_val_if_fail (GDK_IS_VISUAL (visual), None); - priv = visual->priv; + x11_visual = GDK_X11_VISUAL (visual); - if (priv->colormap == None) + if (x11_visual->colormap == None) { - priv->colormap = XCreateColormap (GDK_SCREEN_XDISPLAY (priv->screen), - GDK_SCREEN_XROOTWIN (priv->screen), - GDK_VISUAL_XVISUAL (visual), - AllocNone); + x11_visual->colormap = XCreateColormap (GDK_SCREEN_XDISPLAY (visual->screen), + GDK_SCREEN_XROOTWIN (visual->screen), + x11_visual->xvisual, + AllocNone); } - return priv->colormap; + return x11_visual->colormap; } /** * gdk_x11_visual_get_xvisual: * @visual: a #GdkVisual. - * + * * Returns the X visual belonging to a #GdkVisual. - * + * * Return value: an Xlib Visual*. **/ Visual * gdk_x11_visual_get_xvisual (GdkVisual *visual) -{ - g_return_val_if_fail (visual != NULL, NULL); - - return visual->priv->xvisual; -} - -/** - * gdk_visual_get_screen: - * @visual: a #GdkVisual - * - * Gets the screen to which this visual belongs - * - * Return value: (transfer none): the screen to which this visual belongs. - * - * Since: 2.2 - **/ -GdkScreen * -gdk_visual_get_screen (GdkVisual *visual) { g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL); - return visual->priv->screen; + return GDK_X11_VISUAL (visual)->xvisual; } diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 725f77a61b..bd76a511a9 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -29,15 +29,15 @@ #include "gdkwindow-x11.h" -#include "gdkx.h" #include "gdkwindow.h" #include "gdkwindowimpl.h" -#include "gdkasync.h" -#include "gdkdisplay-x11.h" -#include "gdkprivate-x11.h" +#include "gdkvisualprivate.h" #include "gdkinternals.h" #include "gdkdeviceprivate.h" +#include "gdkasync.h" #include "gdkeventsource.h" +#include "gdkdisplay-x11.h" +#include "gdkprivate-x11.h" #include #include @@ -71,7 +71,7 @@ #include #endif -const int _gdk_event_mask_table[21] = +const int _gdk_x11_event_mask_table[21] = { ExposureMask, PointerMotionMask, @@ -90,12 +90,13 @@ const int _gdk_event_mask_table[21] = StructureNotifyMask, PropertyChangeMask, VisibilityChangeMask, - 0, /* PROXIMITY_IN */ - 0, /* PROXIMTY_OUT */ + 0, /* PROXIMITY_IN */ + 0, /* PROXIMTY_OUT */ SubstructureNotifyMask, ButtonPressMask /* SCROLL; on X mouse wheel events is treated as mouse button 4/5 */ }; -const int _gdk_nenvent_masks = sizeof (_gdk_event_mask_table) / sizeof (int); + +const gint _gdk_x11_event_mask_table_size = G_N_ELEMENTS (_gdk_x11_event_mask_table); /* Forward declarations */ static void gdk_window_set_static_win_gravity (GdkWindow *window, @@ -127,14 +128,35 @@ static void gdk_window_impl_x11_finalize (GObject *object); (( time1 < time2 ) && ( time2 - time1 > ((guint32)-1)/2 )) \ ) +struct _GdkX11Window { + GdkWindow parent; +}; + +struct _GdkX11WindowClass { + GdkWindowClass parent_class; +}; + +G_DEFINE_TYPE (GdkX11Window, gdk_x11_window, GDK_TYPE_WINDOW) + +static void +gdk_x11_window_class_init (GdkX11WindowClass *x11_window_class) +{ +} + +static void +gdk_x11_window_init (GdkX11Window *x11_window) +{ +} + + G_DEFINE_TYPE (GdkWindowImplX11, gdk_window_impl_x11, GDK_TYPE_WINDOW_IMPL) static void gdk_window_impl_x11_init (GdkWindowImplX11 *impl) { impl->toplevel_window_type = -1; - impl->device_cursor = g_hash_table_new_full (NULL, NULL, NULL, - (GDestroyNotify) gdk_cursor_unref); + impl->device_cursor = g_hash_table_new_full (NULL, NULL, + NULL, g_object_unref); } GdkToplevelX11 * @@ -230,22 +252,22 @@ gdk_window_impl_x11_finalize (GObject *object) { GdkWindow *wrapper; GdkWindowImplX11 *impl; - + g_return_if_fail (GDK_IS_WINDOW_IMPL_X11 (object)); impl = GDK_WINDOW_IMPL_X11 (object); - + wrapper = impl->wrapper; - _gdk_xgrab_check_destroy (wrapper); + _gdk_x11_window_grab_check_destroy (wrapper); if (!GDK_WINDOW_DESTROYED (wrapper)) { GdkDisplay *display = GDK_WINDOW_DISPLAY (wrapper); - - _gdk_xid_table_remove (display, impl->xid); + + _gdk_x11_display_remove_window (display, impl->xid); if (impl->toplevel && impl->toplevel->focus_window) - _gdk_xid_table_remove (display, impl->toplevel->focus_window); + _gdk_x11_display_remove_window (display, impl->toplevel->focus_window); } g_free (impl->toplevel); @@ -311,7 +333,7 @@ _gdk_x11_window_create_bitmap_surface (GdkWindow *window, width, height, 1); surface = cairo_xlib_surface_create_for_bitmap (GDK_WINDOW_XDISPLAY (window), pixmap, - GDK_SCREEN_XSCREEN (GDK_WINDOW_SCREEN (window)), + GDK_X11_SCREEN (GDK_WINDOW_SCREEN (window))->xscreen, width, height); attach_free_pixmap_handler (surface, GDK_WINDOW_DISPLAY (window), pixmap); @@ -449,17 +471,17 @@ _gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window) } void -_gdk_windowing_window_init (GdkScreen * screen) +_gdk_x11_screen_init_root_window (GdkScreen *screen) { GdkWindow *window; GdkWindowImplX11 *impl; - GdkScreenX11 *screen_x11; + GdkX11Screen *x11_screen; - screen_x11 = GDK_SCREEN_X11 (screen); + x11_screen = GDK_X11_SCREEN (screen); - g_assert (screen_x11->root_window == NULL); + g_assert (x11_screen->root_window == NULL); - window = screen_x11->root_window = g_object_new (GDK_TYPE_WINDOW, NULL); + window = x11_screen->root_window = _gdk_display_create_window (gdk_screen_get_display (screen)); window->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_X11, NULL); window->impl_window = window; @@ -467,28 +489,28 @@ _gdk_windowing_window_init (GdkScreen * screen) impl = GDK_WINDOW_IMPL_X11 (window->impl); - impl->xid = screen_x11->xroot_window; + impl->xid = x11_screen->xroot_window; impl->wrapper = window; window->window_type = GDK_WINDOW_ROOT; - window->depth = DefaultDepthOfScreen (screen_x11->xscreen); + window->depth = DefaultDepthOfScreen (x11_screen->xscreen); window->x = 0; window->y = 0; window->abs_x = 0; window->abs_y = 0; - window->width = WidthOfScreen (screen_x11->xscreen); - window->height = HeightOfScreen (screen_x11->xscreen); + window->width = WidthOfScreen (x11_screen->xscreen); + window->height = HeightOfScreen (x11_screen->xscreen); window->viewable = TRUE; /* see init_randr_support() in gdkscreen-x11.c */ window->event_mask = GDK_STRUCTURE_MASK; - _gdk_window_update_size (screen_x11->root_window); - - _gdk_xid_table_insert (screen_x11->display, - &screen_x11->xroot_window, - screen_x11->root_window); + _gdk_window_update_size (x11_screen->root_window); + + _gdk_x11_display_add_window (x11_screen->display, + &x11_screen->xroot_window, + x11_screen->root_window); } static void @@ -503,7 +525,7 @@ set_wm_protocols (GdkWindow *window) protocols[n++] = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_PING"); #ifdef HAVE_XSYNC - if (GDK_DISPLAY_X11 (display)->use_sync) + if (GDK_X11_DISPLAY (display)->use_sync) protocols[n++] = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_SYNC_REQUEST"); #endif @@ -527,7 +549,7 @@ get_default_title (void) static void check_leader_window_title (GdkDisplay *display) { - GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); if (display_x11->leader_window && !display_x11->leader_window_title_set) { @@ -543,13 +565,13 @@ static Window create_focus_window (GdkDisplay *display, XID parent) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkEventMask event_mask; Display *xdisplay; Window focus_window; xdisplay = GDK_DISPLAY_XDISPLAY (display); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); focus_window = XCreateSimpleWindow (xdisplay, parent, -1, -1, 1, 1, 0, @@ -561,9 +583,9 @@ create_focus_window (GdkDisplay *display, GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK); - gdk_event_source_select_events ((GdkEventSource *) display_x11->event_source, - focus_window, - event_mask, 0); + gdk_x11_event_source_select_events ((GdkEventSource *) display_x11->event_source, + focus_window, + event_mask, 0); XMapWindow (xdisplay, focus_window); @@ -582,7 +604,7 @@ ensure_sync_counter (GdkWindow *window) if (toplevel && impl->use_synchronized_configure && toplevel->update_counter == None && - GDK_DISPLAY_X11 (display)->use_sync) + GDK_X11_DISPLAY (display)->use_sync) { Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); XSyncValue value; @@ -614,7 +636,7 @@ setup_toplevel_window (GdkWindow *window, GdkDisplay *display = gdk_window_get_display (window); Display *xdisplay = GDK_WINDOW_XDISPLAY (window); XID xid = GDK_WINDOW_XID (window); - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (parent)); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (GDK_WINDOW_SCREEN (parent)); XSizeHints size_hints; long pid; Window leader_window; @@ -627,11 +649,13 @@ setup_toplevel_window (GdkWindow *window, * press events so they don't get sent to child windows. */ toplevel->focus_window = create_focus_window (display, xid); - _gdk_xid_table_insert (screen_x11->display, &toplevel->focus_window, window); + _gdk_x11_display_add_window (x11_screen->display, + &toplevel->focus_window, + window); } - - check_leader_window_title (screen_x11->display); - + + check_leader_window_title (x11_screen->display); + /* FIXME: Is there any point in doing this? Do any WM's pay * attention to PSize, and even if they do, is this the * correct value??? @@ -647,45 +671,46 @@ setup_toplevel_window (GdkWindow *window, pid = getpid (); XChangeProperty (xdisplay, xid, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, "_NET_WM_PID"), + gdk_x11_get_xatom_by_name_for_display (x11_screen->display, "_NET_WM_PID"), XA_CARDINAL, 32, PropModeReplace, (guchar *)&pid, 1); - leader_window = GDK_DISPLAY_X11 (screen_x11->display)->leader_window; + leader_window = GDK_X11_DISPLAY (x11_screen->display)->leader_window; if (!leader_window) leader_window = xid; XChangeProperty (xdisplay, xid, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, "WM_CLIENT_LEADER"), + gdk_x11_get_xatom_by_name_for_display (x11_screen->display, "WM_CLIENT_LEADER"), XA_WINDOW, 32, PropModeReplace, (guchar *) &leader_window, 1); if (toplevel->focus_window != None) XChangeProperty (xdisplay, xid, - gdk_x11_get_xatom_by_name_for_display (screen_x11->display, "_NET_WM_USER_TIME_WINDOW"), + gdk_x11_get_xatom_by_name_for_display (x11_screen->display, "_NET_WM_USER_TIME_WINDOW"), XA_WINDOW, 32, PropModeReplace, (guchar *) &toplevel->focus_window, 1); if (!window->focus_on_map) gdk_x11_window_set_user_time (window, 0); - else if (GDK_DISPLAY_X11 (screen_x11->display)->user_time != 0) - gdk_x11_window_set_user_time (window, GDK_DISPLAY_X11 (screen_x11->display)->user_time); + else if (GDK_X11_DISPLAY (x11_screen->display)->user_time != 0) + gdk_x11_window_set_user_time (window, GDK_X11_DISPLAY (x11_screen->display)->user_time); ensure_sync_counter (window); } void -_gdk_window_impl_new (GdkWindow *window, - GdkWindow *real_parent, - GdkScreen *screen, - GdkEventMask event_mask, - GdkWindowAttr *attributes, - gint attributes_mask) +_gdk_x11_display_create_window_impl (GdkDisplay *display, + GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask) { GdkWindowImplX11 *impl; - GdkScreenX11 *screen_x11; - GdkDisplayX11 *display_x11; - + GdkX11Screen *x11_screen; + GdkX11Display *display_x11; + Window xparent; Visual *xvisual; Display *xdisplay; @@ -693,81 +718,81 @@ _gdk_window_impl_new (GdkWindow *window, XSetWindowAttributes xattributes; long xattributes_mask; XClassHint *class_hint; - + unsigned int class; const char *title; - - screen_x11 = GDK_SCREEN_X11 (screen); + + display_x11 = GDK_X11_DISPLAY (display); xparent = GDK_WINDOW_XID (real_parent); - display_x11 = GDK_DISPLAY_X11 (GDK_SCREEN_DISPLAY (screen)); - + x11_screen = GDK_X11_SCREEN (screen); + impl = g_object_new (GDK_TYPE_WINDOW_IMPL_X11, NULL); window->impl = GDK_WINDOW_IMPL (impl); impl->wrapper = GDK_WINDOW (window); - - xdisplay = screen_x11->xdisplay; + + xdisplay = x11_screen->xdisplay; xattributes_mask = 0; xvisual = gdk_x11_visual_get_xvisual (window->visual); - + if (attributes_mask & GDK_WA_NOREDIR) { xattributes.override_redirect = - (attributes->override_redirect == FALSE)?False:True; + (attributes->override_redirect == FALSE)?False:True; xattributes_mask |= CWOverrideRedirect; - } + } else xattributes.override_redirect = False; impl->override_redirect = xattributes.override_redirect; - + if (window->parent && window->parent->guffaw_gravity) { xattributes.win_gravity = StaticGravity; xattributes_mask |= CWWinGravity; } - + /* Sanity checks */ switch (window->window_type) { case GDK_WINDOW_TOPLEVEL: case GDK_WINDOW_TEMP: if (GDK_WINDOW_TYPE (window->parent) != GDK_WINDOW_ROOT) - { - /* The common code warns for this case */ - xparent = GDK_SCREEN_XROOTWIN (screen); - } + { + /* The common code warns for this case */ + xparent = GDK_SCREEN_XROOTWIN (screen); + } } - + if (!window->input_only) { class = InputOutput; - xattributes.background_pixel = BlackPixel (xdisplay, screen_x11->screen_num); + xattributes.background_pixel = BlackPixel (xdisplay, x11_screen->screen_num); - xattributes.border_pixel = BlackPixel (xdisplay, screen_x11->screen_num); + xattributes.border_pixel = BlackPixel (xdisplay, x11_screen->screen_num); xattributes_mask |= CWBorderPixel | CWBackPixel; if (window->guffaw_gravity) - xattributes.bit_gravity = StaticGravity; + xattributes.bit_gravity = StaticGravity; else - xattributes.bit_gravity = NorthWestGravity; - + xattributes.bit_gravity = NorthWestGravity; + xattributes_mask |= CWBitGravity; xattributes.colormap = _gdk_visual_get_x11_colormap (window->visual); xattributes_mask |= CWColormap; if (window->window_type == GDK_WINDOW_TEMP) - { - xattributes.save_under = True; - xattributes.override_redirect = True; - xattributes.cursor = None; - xattributes_mask |= CWSaveUnder | CWOverrideRedirect; + { + xattributes.save_under = True; + xattributes.override_redirect = True; + xattributes.cursor = None; + xattributes_mask |= CWSaveUnder | CWOverrideRedirect; - impl->override_redirect = TRUE; - } + impl->override_redirect = TRUE; + } } else { @@ -778,13 +803,13 @@ _gdk_window_impl_new (GdkWindow *window, window->height > 65535) { g_warning ("Native Windows wider or taller than 65535 pixels are not supported"); - + if (window->width > 65535) - window->width = 65535; + window->width = 65535; if (window->height > 65535) - window->height = 65535; + window->height = 65535; } - + impl->xid = XCreateWindow (xdisplay, xparent, window->x + window->parent->abs_x, window->y + window->parent->abs_y, @@ -793,28 +818,28 @@ _gdk_window_impl_new (GdkWindow *window, xattributes_mask, &xattributes); g_object_ref (window); - _gdk_xid_table_insert (screen_x11->display, &impl->xid, window); + _gdk_x11_display_add_window (x11_screen->display, &impl->xid, window); switch (GDK_WINDOW_TYPE (window)) { case GDK_WINDOW_TOPLEVEL: case GDK_WINDOW_TEMP: if (attributes_mask & GDK_WA_TITLE) - title = attributes->title; + title = attributes->title; else - title = get_default_title (); - + title = get_default_title (); + gdk_window_set_title (window, title); - + if (attributes_mask & GDK_WA_WMCLASS) - { - class_hint = XAllocClassHint (); - class_hint->res_name = attributes->wmclass_name; - class_hint->res_class = attributes->wmclass_class; - XSetClassHint (xdisplay, impl->xid, class_hint); - XFree (class_hint); - } - + { + class_hint = XAllocClassHint (); + class_hint->res_name = attributes->wmclass_name; + class_hint->res_class = attributes->wmclass_class; + XSetClassHint (xdisplay, impl->xid, class_hint); + XFree (class_hint); + } + setup_toplevel_window (window, window->parent); break; @@ -826,9 +851,9 @@ _gdk_window_impl_new (GdkWindow *window, if (attributes_mask & GDK_WA_TYPE_HINT) gdk_window_set_type_hint (window, attributes->type_hint); - gdk_event_source_select_events ((GdkEventSource *) display_x11->event_source, - GDK_WINDOW_XID (window), event_mask, - StructureNotifyMask | PropertyChangeMask); + gdk_x11_event_source_select_events ((GdkEventSource *) display_x11->event_source, + GDK_WINDOW_XID (window), event_mask, + StructureNotifyMask | PropertyChangeMask); } static GdkEventMask @@ -837,9 +862,9 @@ x_event_mask_to_gdk_event_mask (long mask) GdkEventMask event_mask = 0; int i; - for (i = 0; i < _gdk_nenvent_masks; i++) + for (i = 0; i < _gdk_x11_event_mask_table_size; i++) { - if (mask & _gdk_event_mask_table[i]) + if (mask & _gdk_x11_event_mask_table[i]) event_mask |= 1 << (i + 1); } @@ -847,32 +872,30 @@ x_event_mask_to_gdk_event_mask (long mask) } /** - * gdk_window_foreign_new_for_display: + * gdk_x11_window_foreign_new_for_display: * @display: the #GdkDisplay where the window handle comes from. - * @anid: a native window handle. - * + * @window: an XLib Window + * * Wraps a native window in a #GdkWindow. + * * This may fail if the window has been destroyed. If the window - * was already known to GDK, a new reference to the existing + * was already known to GDK, a new reference to the existing * #GdkWindow is returned. * - * For example in the X backend, a native window handle is an Xlib - * XID. - * * Return value: (transfer full): a #GdkWindow wrapper for the native * window, or %NULL if the window has been destroyed. The wrapper * will be newly created, if one doesn't exist already. * - * Since: 2.2 - **/ + * Since: 2.24 + */ GdkWindow * -gdk_window_foreign_new_for_display (GdkDisplay *display, - GdkNativeWindow anid) +gdk_x11_window_foreign_new_for_display (GdkDisplay *display, + Window window) { GdkScreen *screen; - GdkWindow *window; + GdkWindow *win; GdkWindowImplX11 *impl; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; XWindowAttributes attrs; Window root, parent; Window *children = NULL; @@ -881,110 +904,71 @@ gdk_window_foreign_new_for_display (GdkDisplay *display, g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); - if ((window = gdk_xid_table_lookup_for_display (display, anid)) != NULL) - return g_object_ref (window); + if ((win = gdk_x11_window_lookup_for_display (display, window)) != NULL) + return g_object_ref (win); - gdk_error_trap_push (); - result = XGetWindowAttributes (display_x11->xdisplay, anid, &attrs); - if (gdk_error_trap_pop () || !result) + gdk_x11_display_error_trap_push (display); + result = XGetWindowAttributes (display_x11->xdisplay, window, &attrs); + if (gdk_x11_display_error_trap_pop (display) || !result) return NULL; - /* FIXME: This is pretty expensive. Maybe the caller should supply - * the parent */ - gdk_error_trap_push (); - result = XQueryTree (display_x11->xdisplay, anid, &root, &parent, &children, &nchildren); - if (gdk_error_trap_pop () || !result) + /* FIXME: This is pretty expensive. + * Maybe the caller should supply the parent + */ + gdk_x11_display_error_trap_push (display); + result = XQueryTree (display_x11->xdisplay, window, &root, &parent, &children, &nchildren); + if (gdk_x11_display_error_trap_pop (display) || !result) return NULL; if (children) XFree (children); - + screen = _gdk_x11_display_screen_for_xrootwin (display, root); - window = g_object_new (GDK_TYPE_WINDOW, NULL); + win = _gdk_display_create_window (display); + win->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_X11, NULL); + win->impl_window = win; + win->visual = gdk_x11_screen_lookup_visual (screen, + XVisualIDFromVisual (attrs.visual)); - window->impl = g_object_new (GDK_TYPE_WINDOW_IMPL_X11, NULL); - window->impl_window = window; - window->visual = gdk_x11_screen_lookup_visual (screen, - XVisualIDFromVisual (attrs.visual)); + impl = GDK_WINDOW_IMPL_X11 (win->impl); + impl->wrapper = win; - impl = GDK_WINDOW_IMPL_X11 (window->impl); - impl->wrapper = window; - - window->parent = gdk_xid_table_lookup_for_display (display, parent); - - if (!window->parent || GDK_WINDOW_TYPE (window->parent) == GDK_WINDOW_FOREIGN) - window->parent = gdk_screen_get_root_window (screen); - - window->parent->children = g_list_prepend (window->parent->children, window); + win->parent = gdk_x11_window_lookup_for_display (display, parent); - impl->xid = anid; + if (!win->parent || GDK_WINDOW_TYPE (win->parent) == GDK_WINDOW_FOREIGN) + win->parent = gdk_screen_get_root_window (screen); - window->x = attrs.x; - window->y = attrs.y; - window->width = attrs.width; - window->height = attrs.height; - window->window_type = GDK_WINDOW_FOREIGN; - window->destroyed = FALSE; + win->parent->children = g_list_prepend (win->parent->children, win); - window->event_mask = x_event_mask_to_gdk_event_mask (attrs.your_event_mask); + impl->xid = window; + + win->x = attrs.x; + win->y = attrs.y; + win->width = attrs.width; + win->height = attrs.height; + win->window_type = GDK_WINDOW_FOREIGN; + win->destroyed = FALSE; + + win->event_mask = x_event_mask_to_gdk_event_mask (attrs.your_event_mask); if (attrs.map_state == IsUnmapped) - window->state = GDK_WINDOW_STATE_WITHDRAWN; + win->state = GDK_WINDOW_STATE_WITHDRAWN; else - window->state = 0; - window->viewable = TRUE; + win->state = 0; + win->viewable = TRUE; - window->depth = attrs.depth; - - g_object_ref (window); - _gdk_xid_table_insert (display, &GDK_WINDOW_XID (window), window); + win->depth = attrs.depth; + + g_object_ref (win); + _gdk_x11_display_add_window (display, &GDK_WINDOW_XID (win), win); /* Update the clip region, etc */ - _gdk_window_update_size (window); + _gdk_window_update_size (win); - return window; -} - -/** - * gdk_window_lookup_for_display: - * @display: the #GdkDisplay corresponding to the window handle - * @anid: a native window handle. - * - * Looks up the #GdkWindow that wraps the given native window handle. - * - * For example in the X backend, a native window handle is an Xlib - * XID. - * - * Return value: (transfer none): the #GdkWindow wrapper for the native - * window, or %NULL if there is none. - * - * Since: 2.2 - **/ -GdkWindow * -gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid) -{ - return (GdkWindow*) gdk_xid_table_lookup_for_display (display, anid); -} - -/** - * gdk_window_lookup: - * @anid: a native window handle. - * - * Looks up the #GdkWindow that wraps the given native window handle. - * - * For example in the X backend, a native window handle is an Xlib - * XID. - * - * Return value: (transfer none): the #GdkWindow wrapper for the native - * window, or %NULL if there is none. - **/ -GdkWindow * -gdk_window_lookup (GdkNativeWindow anid) -{ - return (GdkWindow*) gdk_xid_table_lookup (anid); + return win; } static void @@ -1019,17 +1003,17 @@ gdk_toplevel_x11_free_contents (GdkDisplay *display, } static void -_gdk_x11_window_destroy (GdkWindow *window, - gboolean recursing, - gboolean foreign_destroy) +gdk_x11_window_destroy (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy) { GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (window->impl); GdkToplevelX11 *toplevel; - + g_return_if_fail (GDK_IS_WINDOW (window)); - _gdk_selection_window_destroyed (window); - + _gdk_x11_selection_window_destroyed (window); + toplevel = _gdk_x11_window_get_toplevel (window); if (toplevel) gdk_toplevel_x11_free_contents (GDK_WINDOW_DISPLAY (window), toplevel); @@ -1038,13 +1022,11 @@ _gdk_x11_window_destroy (GdkWindow *window, { cairo_surface_finish (impl->cairo_surface); cairo_surface_set_user_data (impl->cairo_surface, &gdk_x11_cairo_key, - NULL, NULL); + NULL, NULL); } if (!recursing && !foreign_destroy) - { - XDestroyWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window)); - } + XDestroyWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window)); } static cairo_surface_t * @@ -1058,36 +1040,36 @@ gdk_window_x11_resize_cairo_surface (GdkWindow *window, return surface; } -void -_gdk_windowing_window_destroy_foreign (GdkWindow *window) +static void +gdk_x11_window_destroy_foreign (GdkWindow *window) { /* It's somebody else's window, but in our hierarchy, * so reparent it to the root window, and then send * it a delete event, as if we were a WM */ XClientMessageEvent xclient; - - gdk_error_trap_push (); + GdkDisplay *display; + + display = GDK_WINDOW_DISPLAY (window); + gdk_x11_display_error_trap_push (display); gdk_window_hide (window); gdk_window_reparent (window, NULL, 0, 0); - + memset (&xclient, 0, sizeof (xclient)); xclient.type = ClientMessage; xclient.window = GDK_WINDOW_XID (window); - xclient.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window), - "WM_PROTOCOLS"); + xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "WM_PROTOCOLS"); xclient.format = 32; - xclient.data.l[0] = gdk_x11_get_xatom_by_name_for_display (GDK_WINDOW_DISPLAY (window), - "WM_DELETE_WINDOW"); + xclient.data.l[0] = gdk_x11_get_xatom_by_name_for_display (display, "WM_DELETE_WINDOW"); xclient.data.l[1] = CurrentTime; xclient.data.l[2] = 0; xclient.data.l[3] = 0; xclient.data.l[4] = 0; XSendEvent (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - False, 0, (XEvent *)&xclient); - gdk_error_trap_pop_ignored (); + GDK_WINDOW_XID (window), + False, 0, (XEvent *)&xclient); + gdk_x11_display_error_trap_pop_ignored (display); } static GdkWindow * @@ -1100,8 +1082,8 @@ get_root (GdkWindow *window) /* This function is called when the XWindow is really gone. */ -void -gdk_window_destroy_notify (GdkWindow *window) +static void +gdk_x11_window_destroy_notify (GdkWindow *window) { GdkWindowImplX11 *window_impl; @@ -1114,13 +1096,13 @@ gdk_window_destroy_notify (GdkWindow *window) _gdk_window_destroy (window, TRUE); } - - _gdk_xid_table_remove (GDK_WINDOW_DISPLAY (window), GDK_WINDOW_XID (window)); - if (window_impl->toplevel && window_impl->toplevel->focus_window) - _gdk_xid_table_remove (GDK_WINDOW_DISPLAY (window), window_impl->toplevel->focus_window); - _gdk_xgrab_check_destroy (window); - + _gdk_x11_display_remove_window (GDK_WINDOW_DISPLAY (window), GDK_WINDOW_XID (window)); + if (window_impl->toplevel && window_impl->toplevel->focus_window) + _gdk_x11_display_remove_window (GDK_WINDOW_DISPLAY (window), window_impl->toplevel->focus_window); + + _gdk_x11_window_grab_check_destroy (window); + g_object_unref (window); } @@ -1166,7 +1148,7 @@ update_wm_hints (GdkWindow *window, wm_hints.window_group = GDK_WINDOW_XID (toplevel->group_leader); } else - wm_hints.window_group = GDK_DISPLAY_X11 (display)->leader_window; + wm_hints.window_group = GDK_X11_DISPLAY (display)->leader_window; if (toplevel->urgency_hint) wm_hints.flags |= XUrgencyHint; @@ -1301,7 +1283,7 @@ static void gdk_window_x11_show (GdkWindow *window, gboolean already_mapped) { GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkToplevelX11 *toplevel; GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (window->impl); Display *xdisplay = GDK_WINDOW_XDISPLAY (window); @@ -1314,7 +1296,7 @@ gdk_window_x11_show (GdkWindow *window, gboolean already_mapped) if (WINDOW_IS_TOPLEVEL (window)) { display = gdk_window_get_display (window); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); toplevel = _gdk_x11_window_get_toplevel (window); if (toplevel->user_time != 0 && @@ -1391,8 +1373,8 @@ gdk_window_x11_hide (GdkWindow *window) * but checking here makes things more consistent if we are * just doing stuff ourself. */ - _gdk_xgrab_check_unmap (window, - NextRequest (GDK_WINDOW_XDISPLAY (window))); + _gdk_x11_window_grab_check_unmap (window, + NextRequest (GDK_WINDOW_XDISPLAY (window))); /* You can't simply unmap toplevel windows. */ switch (window->window_type) @@ -1446,9 +1428,9 @@ window_x11_move (GdkWindow *window, if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD) { - _gdk_window_move_resize_child (window, - x, y, - window->width, window->height); + _gdk_x11_window_move_resize_child (window, + x, y, + window->width, window->height); } else { @@ -1477,9 +1459,9 @@ window_x11_resize (GdkWindow *window, if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD) { - _gdk_window_move_resize_child (window, - window->x, window->y, - width, height); + _gdk_x11_window_move_resize_child (window, + window->x, window->y, + width, height); } else { @@ -1520,7 +1502,7 @@ window_x11_move_resize (GdkWindow *window, if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD) { - _gdk_window_move_resize_child (window, x, y, width, height); + _gdk_x11_window_move_resize_child (window, x, y, width, height); _gdk_x11_window_update_size (GDK_WINDOW_IMPL_X11 (window->impl)); } else @@ -1625,7 +1607,7 @@ gdk_window_x11_reparent (GdkWindow *window, if (impl->toplevel->focus_window) { XDestroyWindow (GDK_WINDOW_XDISPLAY (window), impl->toplevel->focus_window); - _gdk_xid_table_remove (GDK_WINDOW_DISPLAY (window), impl->toplevel->focus_window); + _gdk_x11_display_remove_window (GDK_WINDOW_DISPLAY (window), impl->toplevel->focus_window); } gdk_toplevel_x11_free_contents (GDK_WINDOW_DISPLAY (window), @@ -1771,18 +1753,9 @@ move_to_current_desktop (GdkWindow *window) } } -/** - * gdk_window_focus: - * @window: a #GdkWindow - * @timestamp: timestamp of the event triggering the window focus - * - * Sets keyboard focus to @window. In most cases, gtk_window_present() - * should be used on a #GtkWindow, rather than calling this function. - * - **/ -void -gdk_window_focus (GdkWindow *window, - guint32 timestamp) +static void +gdk_x11_window_focus (GdkWindow *window, + guint32 timestamp) { GdkDisplay *display; @@ -1828,21 +1801,9 @@ gdk_window_focus (GdkWindow *window, } } -/** - * gdk_window_set_type_hint: - * @window: A toplevel #GdkWindow - * @hint: A hint of the function this window will have - * - * The application can use this call to provide a hint to the window - * manager about the functionality of a window. The window manager - * can use this information when determining the decoration and behaviour - * of the window. - * - * The hint must be set before the window is mapped. - **/ -void -gdk_window_set_type_hint (GdkWindow *window, - GdkWindowTypeHint hint) +static void +gdk_x11_window_set_type_hint (GdkWindow *window, + GdkWindowTypeHint hint) { GdkDisplay *display; Atom atom; @@ -1908,18 +1869,8 @@ gdk_window_set_type_hint (GdkWindow *window, (guchar *)&atom, 1); } -/** - * gdk_window_get_type_hint: - * @window: A toplevel #GdkWindow - * - * This function returns the type hint set for a window. - * - * Return value: The type hint set for @window - * - * Since: 2.10 - **/ -GdkWindowTypeHint -gdk_window_get_type_hint (GdkWindow *window) +static GdkWindowTypeHint +gdk_x11_window_get_type_hint (GdkWindow *window) { GdkDisplay *display; GdkWindowTypeHint type; @@ -2014,22 +1965,9 @@ gdk_wmspec_change_state (gboolean add, (XEvent *)&xclient); } -/** - * gdk_window_set_modal_hint: - * @window: A toplevel #GdkWindow - * @modal: %TRUE if the window is modal, %FALSE otherwise. - * - * The application can use this hint to tell the window manager - * that a certain window has modal behaviour. The window manager - * can use this information to handle modal windows in a special - * way. - * - * You should only use this on windows for which you have - * previously called gdk_window_set_transient_for() - **/ -void -gdk_window_set_modal_hint (GdkWindow *window, - gboolean modal) +static void +gdk_x11_window_set_modal_hint (GdkWindow *window, + gboolean modal) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -2043,23 +1981,9 @@ gdk_window_set_modal_hint (GdkWindow *window, GDK_NONE); } -/** - * gdk_window_set_skip_taskbar_hint: - * @window: a toplevel #GdkWindow - * @skips_taskbar: %TRUE to skip the taskbar - * - * Toggles whether a window should appear in a task list or window - * list. If a window's semantic type as specified with - * gdk_window_set_type_hint() already fully describes the window, this - * function should not be called in addition, - * instead you should allow the window to be treated according to - * standard policy for its semantic type. - * - * Since: 2.2 - **/ -void -gdk_window_set_skip_taskbar_hint (GdkWindow *window, - gboolean skips_taskbar) +static void +gdk_x11_window_set_skip_taskbar_hint (GdkWindow *window, + gboolean skips_taskbar) { GdkToplevelX11 *toplevel; @@ -2078,25 +2002,9 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window, GDK_NONE); } -/** - * gdk_window_set_skip_pager_hint: - * @window: a toplevel #GdkWindow - * @skips_pager: %TRUE to skip the pager - * - * Toggles whether a window should appear in a pager (workspace - * switcher, or other desktop utility program that displays a small - * thumbnail representation of the windows on the desktop). If a - * window's semantic type as specified with gdk_window_set_type_hint() - * already fully describes the window, this function should - * not be called in addition, instead you should - * allow the window to be treated according to standard policy for - * its semantic type. - * - * Since: 2.2 - **/ -void -gdk_window_set_skip_pager_hint (GdkWindow *window, - gboolean skips_pager) +static void +gdk_x11_window_set_skip_pager_hint (GdkWindow *window, + gboolean skips_pager) { GdkToplevelX11 *toplevel; @@ -2115,18 +2023,8 @@ gdk_window_set_skip_pager_hint (GdkWindow *window, GDK_NONE); } -/** - * gdk_window_set_urgency_hint: - * @window: a toplevel #GdkWindow - * @urgent: %TRUE if the window is urgent - * - * Toggles whether a window needs the user's - * urgent attention. - * - * Since: 2.8 - **/ -void -gdk_window_set_urgency_hint (GdkWindow *window, +static void +gdk_x11_window_set_urgency_hint (GdkWindow *window, gboolean urgent) { GdkToplevelX11 *toplevel; @@ -2143,39 +2041,10 @@ gdk_window_set_urgency_hint (GdkWindow *window, update_wm_hints (window, FALSE); } -/** - * gdk_window_set_geometry_hints: - * @window: a toplevel #GdkWindow - * @geometry: geometry hints - * @geom_mask: bitmask indicating fields of @geometry to pay attention to - * - * Sets the geometry hints for @window. Hints flagged in @geom_mask - * are set, hints not flagged in @geom_mask are unset. - * To unset all hints, use a @geom_mask of 0 and a @geometry of %NULL. - * - * This function provides hints to the windowing system about - * acceptable sizes for a toplevel window. The purpose of - * this is to constrain user resizing, but the windowing system - * will typically (but is not required to) also constrain the - * current size of the window to the provided values and - * constrain programatic resizing via gdk_window_resize() or - * gdk_window_move_resize(). - * - * Note that on X11, this effect has no effect on windows - * of type %GDK_WINDOW_TEMP or windows where override redirect - * has been turned on via gdk_window_set_override_redirect() - * since these windows are not resizable by the user. - * - * Since you can't count on the windowing system doing the - * constraints for programmatic resizes, you should generally - * call gdk_window_constrain_size() yourself to determine - * appropriate sizes. - * - **/ -void -gdk_window_set_geometry_hints (GdkWindow *window, - const GdkGeometry *geometry, - GdkWindowHints geom_mask) +static void +gdk_x11_window_set_geometry_hints (GdkWindow *window, + const GdkGeometry *geometry, + GdkWindowHints geom_mask) { XSizeHints size_hints; @@ -2375,7 +2244,7 @@ set_text_property (GdkDisplay *display, if (utf8_is_latin1 (utf8_str)) { prop_type = XA_STRING; - prop_text = gdk_utf8_to_string_target (utf8_str); + prop_text = _gdk_x11_display_utf8_to_string_target (display, utf8_str); prop_length = prop_text ? strlen (prop_text) : 0; prop_format = 8; is_compound_text = FALSE; @@ -2383,10 +2252,10 @@ set_text_property (GdkDisplay *display, else { GdkAtom gdk_type; - - gdk_utf8_to_compound_text_for_display (display, - utf8_str, &gdk_type, &prop_format, - (guchar **)&prop_text, &prop_length); + + gdk_x11_display_utf8_to_compound_text (display, + utf8_str, &gdk_type, &prop_format, + (guchar **)&prop_text, &prop_length); prop_type = gdk_x11_atom_to_xatom_for_display (display, gdk_type); is_compound_text = TRUE; } @@ -2401,7 +2270,7 @@ set_text_property (GdkDisplay *display, prop_length); if (is_compound_text) - gdk_free_compound_text ((guchar *)prop_text); + gdk_x11_free_compound_text ((guchar *)prop_text); else g_free (prop_text); } @@ -2424,20 +2293,9 @@ set_wm_name (GdkDisplay *display, name); } -/** - * gdk_window_set_title: - * @window: a toplevel #GdkWindow - * @title: title of @window - * - * Sets the title of a toplevel window, to be displayed in the titlebar. - * If you haven't explicitly set the icon name for the window - * (using gdk_window_set_icon_name()), the icon name will be set to - * @title as well. @title must be in UTF-8 encoding (as with all - * user-readable strings in GDK/GTK+). @title may not be %NULL. - **/ -void -gdk_window_set_title (GdkWindow *window, - const gchar *title) +static void +gdk_x11_window_set_title (GdkWindow *window, + const gchar *title) { GdkDisplay *display; Display *xdisplay; @@ -2468,28 +2326,9 @@ gdk_window_set_title (GdkWindow *window, } } -/** - * gdk_window_set_role: - * @window: a toplevel #GdkWindow - * @role: a string indicating its role - * - * When using GTK+, typically you should use gtk_window_set_role() instead - * of this low-level function. - * - * The window manager and session manager use a window's role to - * distinguish it from other kinds of window in the same application. - * When an application is restarted after being saved in a previous - * session, all windows with the same title and role are treated as - * interchangeable. So if you have two windows with the same title - * that should be distinguished for session management purposes, you - * should set the role on those windows. It doesn't matter what string - * you use for the role, as long as you have a different role for each - * non-interchangeable kind of window. - * - **/ -void -gdk_window_set_role (GdkWindow *window, - const gchar *role) +static void +gdk_x11_window_set_role (GdkWindow *window, + const gchar *role) { GdkDisplay *display; @@ -2508,20 +2347,9 @@ gdk_window_set_role (GdkWindow *window, gdk_x11_get_xatom_by_name_for_display (display, "WM_WINDOW_ROLE")); } -/** - * gdk_window_set_startup_id: - * @window: a toplevel #GdkWindow - * @startup_id: a string with startup-notification identifier - * - * When using GTK+, typically you should use gtk_window_set_startup_id() - * instead of this low-level function. - * - * Since: 2.12 - * - **/ -void -gdk_window_set_startup_id (GdkWindow *window, - const gchar *startup_id) +static void +gdk_x11_window_set_startup_id (GdkWindow *window, + const gchar *startup_id) { GdkDisplay *display; @@ -2543,22 +2371,9 @@ gdk_window_set_startup_id (GdkWindow *window, gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID")); } -/** - * gdk_window_set_transient_for: - * @window: a toplevel #GdkWindow - * @parent: another toplevel #GdkWindow - * - * Indicates to the window manager that @window is a transient dialog - * associated with the application window @parent. This allows the - * window manager to do things like center @window on @parent and - * keep @window above @parent. - * - * See gtk_window_set_transient_for() if you're using #GtkWindow or - * #GtkDialog. - **/ -void -gdk_window_set_transient_for (GdkWindow *window, - GdkWindow *parent) +static void +gdk_x11_window_set_transient_for (GdkWindow *window, + GdkWindow *parent) { if (!GDK_WINDOW_DESTROYED (window) && !GDK_WINDOW_DESTROYED (parent) && WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -2715,7 +2530,7 @@ gdk_window_x11_set_device_cursor (GdkWindow *window, { _gdk_x11_cursor_update_theme (cursor); g_hash_table_replace (impl->device_cursor, - device, gdk_cursor_ref (cursor)); + device, g_object_ref (cursor)); } if (!GDK_WINDOW_DESTROYED (window)) @@ -2739,8 +2554,7 @@ gdk_window_x11_get_geometry (GdkWindow *window, gint *x, gint *y, gint *width, - gint *height, - gint *depth) + gint *height) { Window root; gint tx; @@ -2764,8 +2578,6 @@ gdk_window_x11_get_geometry (GdkWindow *window, *width = twidth; if (height) *height = theight; - if (depth) - *depth = tdepth; } } @@ -2795,18 +2607,8 @@ gdk_window_x11_get_root_coords (GdkWindow *window, return return_val; } -/** - * gdk_window_get_root_origin: - * @window: a toplevel #GdkWindow - * @x: return location for X position of window frame - * @y: return location for Y position of window frame - * - * Obtains the top-left corner of the window manager frame in root - * window coordinates. - * - **/ -void -gdk_window_get_root_origin (GdkWindow *window, +static void +gdk_x11_window_get_root_origin (GdkWindow *window, gint *x, gint *y) { @@ -2821,20 +2623,9 @@ gdk_window_get_root_origin (GdkWindow *window, *y = rect.y; } -/** - * gdk_window_get_frame_extents: - * @window: a toplevel #GdkWindow - * @rect: rectangle to fill with bounding box of the window frame - * - * Obtains the bounding box of the window, including window manager - * titlebar/borders if any. The frame position is given in root window - * coordinates. To get the position of the window itself (rather than - * the frame) in root window coordinates, use gdk_window_get_origin(). - * - **/ -void -gdk_window_get_frame_extents (GdkWindow *window, - GdkRectangle *rect) +static void +gdk_x11_window_get_frame_extents (GdkWindow *window, + GdkRectangle *rect) { GdkDisplay *display; GdkWindowImplX11 *impl; @@ -2855,14 +2646,14 @@ gdk_window_get_frame_extents (GdkWindow *window, guint ww, wh, wb, wd; gint wx, wy; gboolean got_frame_extents = FALSE; - + g_return_if_fail (rect != NULL); - + rect->x = 0; rect->y = 0; rect->width = 1; rect->height = 1; - + while (window->parent && (window->parent)->parent) window = window->parent; @@ -2879,18 +2670,19 @@ gdk_window_get_frame_extents (GdkWindow *window, nvroots = 0; vroots = NULL; - gdk_error_trap_push(); - display = gdk_window_get_display (window); + + gdk_x11_display_error_trap_push (display); + xwindow = GDK_WINDOW_XID (window); /* first try: use _NET_FRAME_EXTENTS */ if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), xwindow, - gdk_x11_get_xatom_by_name_for_display (display, - "_NET_FRAME_EXTENTS"), - 0, G_MAXLONG, False, XA_CARDINAL, &type_return, - &format_return, &nitems_return, &bytes_after_return, - &data) + gdk_x11_get_xatom_by_name_for_display (display, + "_NET_FRAME_EXTENTS"), + 0, G_MAXLONG, False, XA_CARDINAL, &type_return, + &format_return, &nitems_return, &bytes_after_return, + &data) == Success) { if ((type_return == XA_CARDINAL) && (format_return == 32) && @@ -2972,8 +2764,8 @@ gdk_window_get_frame_extents (GdkWindow *window, } } while (xparent != root); - - if (XGetGeometry (GDK_DISPLAY_XDISPLAY (display), xwindow, + + if (XGetGeometry (GDK_DISPLAY_XDISPLAY (display), xwindow, &root, &wx, &wy, &ww, &wh, &wb, &wd)) { rect->x = wx; @@ -2986,67 +2778,7 @@ gdk_window_get_frame_extents (GdkWindow *window, if (vroots) XFree (vroots); - gdk_error_trap_pop_ignored (); -} - -void -_gdk_windowing_get_device_state (GdkDisplay *display, - GdkDevice *device, - GdkScreen **screen, - gint *x, - gint *y, - GdkModifierType *mask) -{ - GdkScreen *default_screen; - - if (display->closed) - return; - - default_screen = gdk_display_get_default_screen (display); - - - if (G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) - { - GdkWindow *root; - - GDK_DEVICE_GET_CLASS (device)->query_state (device, - gdk_screen_get_root_window (default_screen), - &root, NULL, - x, y, - NULL, NULL, - mask); - *screen = gdk_window_get_screen (root); - } - else - { - XSetWindowAttributes attributes; - Display *xdisplay; - Window xwindow, w, root, child; - int rootx, rooty, winx, winy; - unsigned int xmask; - - /* FIXME: untrusted clients not multidevice-safe */ - - xdisplay = GDK_SCREEN_XDISPLAY (default_screen); - xwindow = GDK_SCREEN_XROOTWIN (default_screen); - - w = XCreateWindow (xdisplay, xwindow, 0, 0, 1, 1, 0, - CopyFromParent, InputOnly, CopyFromParent, - 0, &attributes); - XQueryPointer (xdisplay, w, - &root, &child, &rootx, &rooty, &winx, &winy, &xmask); - XDestroyWindow (xdisplay, w); - - if (root != None) - { - GdkWindow *gdk_root = gdk_window_lookup_for_display (display, root); - *screen = gdk_window_get_screen (gdk_root); - } - - *x = rootx; - *y = rooty; - *mask = xmask; - } + gdk_x11_display_error_trap_pop_ignored (display); } static gboolean @@ -3056,231 +2788,18 @@ gdk_window_x11_get_device_state (GdkWindow *window, gint *y, GdkModifierType *mask) { - GdkDisplay *display = GDK_WINDOW_DISPLAY (window); - gboolean return_val; + GdkWindow *child; g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), FALSE); - return_val = TRUE; + if (GDK_WINDOW_DESTROYED (window)) + return FALSE; - if (!GDK_WINDOW_DESTROYED (window)) - { - if (G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) - { - GdkWindow *child; - - GDK_DEVICE_GET_CLASS (device)->query_state (device, window, - NULL, &child, - NULL, NULL, - x, y, mask); - return_val = (child != NULL); - } - else - { - GdkScreen *screen; - int originx, originy; - int rootx, rooty; - int winx = 0; - int winy = 0; - unsigned int xmask = 0; - - _gdk_windowing_get_device_state (gdk_window_get_display (window), device, - &screen, &rootx, &rooty, &xmask); - gdk_window_get_origin (window, &originx, &originy); - winx = rootx - originx; - winy = rooty - originy; - - *x = winx; - *y = winy; - *mask = xmask; - } - } - - return return_val; -} - -/** - * gdk_display_warp_pointer: - * @display: a #GdkDisplay - * @screen: the screen of @display to warp the pointer to - * @x: the x coordinate of the destination - * @y: the y coordinate of the destination - * - * Warps the pointer of @display to the point @x,@y on - * the screen @screen, unless the pointer is confined - * to a window by a grab, in which case it will be moved - * as far as allowed by the grab. Warping the pointer - * creates events as if the user had moved the mouse - * instantaneously to the destination. - * - * Note that the pointer should normally be under the - * control of the user. This function was added to cover - * some rare use cases like keyboard navigation support - * for the color picker in the #GtkColorSelectionDialog. - * - * Since: 2.8 - * - * Deprecated: 3.0: Use gdk_display_warp_device() instead. - */ -void -gdk_display_warp_pointer (GdkDisplay *display, - GdkScreen *screen, - gint x, - gint y) -{ - GdkDevice *device; - - g_return_if_fail (GDK_IS_DISPLAY (display)); - g_return_if_fail (GDK_IS_SCREEN (screen)); - - device = display->core_pointer; - GDK_DEVICE_GET_CLASS (device)->warp (device, screen, x, y); -} - -/** - * gdk_display_warp_device: - * @display: a #GdkDisplay. - * @device: a #GdkDevice. - * @screen: the screen of @display to warp @device to. - * @x: the X coordinate of the destination. - * @y: the Y coordinate of the destination. - * - * Warps @device in @display to the point @x,@y on - * the screen @screen, unless the device is confined - * to a window by a grab, in which case it will be moved - * as far as allowed by the grab. Warping the pointer - * creates events as if the user had moved the mouse - * instantaneously to the destination. - * - * Note that the pointer should normally be under the - * control of the user. This function was added to cover - * some rare use cases like keyboard navigation support - * for the color picker in the #GtkColorSelectionDialog. - * - * Since: 3.0 - **/ -void -gdk_display_warp_device (GdkDisplay *display, - GdkDevice *device, - GdkScreen *screen, - gint x, - gint y) -{ - g_return_if_fail (GDK_IS_DISPLAY (display)); - g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (GDK_IS_SCREEN (screen)); - g_return_if_fail (display == gdk_device_get_display (device)); - - GDK_DEVICE_GET_CLASS (device)->warp (device, screen, x, y); -} - -GdkWindow* -_gdk_windowing_window_at_device_position (GdkDisplay *display, - GdkDevice *device, - gint *win_x, - gint *win_y, - GdkModifierType *mask, - gboolean get_toplevel) -{ - GdkWindow *window; - GdkScreen *screen; - - screen = gdk_display_get_default_screen (display); - - /* This function really only works if the mouse pointer is held still - * during its operation. If it moves from one leaf window to another - * than we'll end up with inaccurate values for win_x, win_y - * and the result. - */ - gdk_x11_display_grab (display); - if (G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client)) - window = GDK_DEVICE_GET_CLASS (device)->window_at_position (device, win_x, win_y, mask, get_toplevel); - else - { - gint i, screens, width, height; - GList *toplevels, *list; - Window pointer_window, root, xwindow, child; - Window xwindow_last = 0; - Display *xdisplay; - int rootx = -1, rooty = -1; - int winx, winy; - unsigned int xmask; - - /* FIXME: untrusted clients case not multidevice-safe */ - - xwindow = GDK_SCREEN_XROOTWIN (screen); - xdisplay = GDK_SCREEN_XDISPLAY (screen); - - pointer_window = None; - screens = gdk_display_get_n_screens (display); - for (i = 0; i < screens; ++i) { - screen = gdk_display_get_screen (display, i); - toplevels = gdk_screen_get_toplevel_windows (screen); - for (list = toplevels; list != NULL; list = g_list_next (list)) { - window = GDK_WINDOW (list->data); - xwindow = GDK_WINDOW_XID (window); - gdk_error_trap_push (); - XQueryPointer (xdisplay, xwindow, - &root, &child, &rootx, &rooty, &winx, &winy, &xmask); - if (gdk_error_trap_pop ()) - continue; - if (child != None) - { - pointer_window = child; - break; - } - gdk_window_get_geometry (window, NULL, NULL, &width, &height, NULL); - if (winx >= 0 && winy >= 0 && winx < width && winy < height) - { - /* A childless toplevel, or below another window? */ - XSetWindowAttributes attributes; - Window w; - - w = XCreateWindow (xdisplay, xwindow, winx, winy, 1, 1, 0, - CopyFromParent, InputOnly, CopyFromParent, - 0, &attributes); - XMapWindow (xdisplay, w); - XQueryPointer (xdisplay, xwindow, - &root, &child, &rootx, &rooty, &winx, &winy, &xmask); - XDestroyWindow (xdisplay, w); - if (child == w) - { - pointer_window = xwindow; - break; - } - } - } - g_list_free (toplevels); - if (pointer_window != None) - break; - } - xwindow = pointer_window; - - while (xwindow) - { - xwindow_last = xwindow; - gdk_error_trap_push (); - XQueryPointer (xdisplay, xwindow, - &root, &xwindow, &rootx, &rooty, &winx, &winy, &xmask); - if (gdk_error_trap_pop ()) - break; - if (get_toplevel && xwindow_last != root && - (window = gdk_window_lookup_for_display (display, xwindow_last)) != NULL && - GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN) - break; - } - - window = gdk_window_lookup_for_display (display, xwindow_last); - - *win_x = window ? winx : -1; - *win_y = window ? winy : -1; - if (mask) - *mask = xmask; - } - - gdk_x11_display_ungrab (display); - - return window; + GDK_DEVICE_GET_CLASS (device)->query_state (device, window, + NULL, &child, + NULL, NULL, + x, y, mask); + return child != NULL; } static GdkEventMask @@ -3313,15 +2832,15 @@ gdk_window_x11_set_events (GdkWindow *window, if (!GDK_WINDOW_DESTROYED (window)) { - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; if (GDK_WINDOW_XID (window) != GDK_WINDOW_XROOTWIN (window)) xevent_mask = StructureNotifyMask | PropertyChangeMask; - display_x11 = GDK_DISPLAY_X11 (gdk_window_get_display (window)); - gdk_event_source_select_events ((GdkEventSource *) display_x11->event_source, - GDK_WINDOW_XID (window), event_mask, - xevent_mask); + display_x11 = GDK_X11_DISPLAY (gdk_window_get_display (window)); + gdk_x11_event_source_select_events ((GdkEventSource *) display_x11->event_source, + GDK_WINDOW_XID (window), event_mask, + xevent_mask); } } @@ -3369,9 +2888,9 @@ do_shape_combine_region (GdkWindow *window, gint n_rects = 0; XRectangle *xrects = NULL; - _gdk_region_get_xrectangles (shape_region, - 0, 0, - &xrects, &n_rects); + _gdk_x11_region_get_xrectangles (shape_region, + 0, 0, + &xrects, &n_rects); if (shape == ShapeBounding) { @@ -3417,23 +2936,8 @@ gdk_window_x11_input_shape_combine_region (GdkWindow *window, } -/** - * gdk_window_set_override_redirect: - * @window: a toplevel #GdkWindow - * @override_redirect: %TRUE if window should be override redirect - * - * An override redirect window is not under the control of the window manager. - * This means it won't have a titlebar, won't be minimizable, etc. - it will - * be entirely under the control of the application. The window manager - * can't see the override redirect window at all. - * - * Override redirect should only be used for short-lived temporary - * windows, such as popup menus. #GtkMenu uses an override redirect - * window in its implementation, for example. - * - **/ -void -gdk_window_set_override_redirect (GdkWindow *window, +static void +gdk_x11_window_set_override_redirect (GdkWindow *window, gboolean override_redirect) { XSetWindowAttributes attr; @@ -3453,22 +2957,9 @@ gdk_window_set_override_redirect (GdkWindow *window, } } -/** - * gdk_window_set_accept_focus: - * @window: a toplevel #GdkWindow - * @accept_focus: %TRUE if the window should receive input focus - * - * Setting @accept_focus to %FALSE hints the desktop environment that the - * window doesn't want to receive input focus. - * - * On X, it is the responsibility of the window manager to interpret this - * hint. ICCCM-compliant window manager usually respect it. - * - * Since: 2.4 - **/ -void -gdk_window_set_accept_focus (GdkWindow *window, - gboolean accept_focus) +static void +gdk_x11_window_set_accept_focus (GdkWindow *window, + gboolean accept_focus) { accept_focus = accept_focus != FALSE; @@ -3482,25 +2973,9 @@ gdk_window_set_accept_focus (GdkWindow *window, } } -/** - * gdk_window_set_focus_on_map: - * @window: a toplevel #GdkWindow - * @focus_on_map: %TRUE if the window should receive input focus when mapped - * - * Setting @focus_on_map to %FALSE hints the desktop environment that the - * window doesn't want to receive input focus when it is mapped. - * focus_on_map should be turned off for windows that aren't triggered - * interactively (such as popups from network activity). - * - * On X, it is the responsibility of the window manager to interpret - * this hint. Window managers following the freedesktop.org window - * manager extension specification should respect it. - * - * Since: 2.6 - **/ -void -gdk_window_set_focus_on_map (GdkWindow *window, - gboolean focus_on_map) +static void +gdk_x11_window_set_focus_on_map (GdkWindow *window, + gboolean focus_on_map) { focus_on_map = focus_on_map != FALSE; @@ -3540,7 +3015,7 @@ gdk_x11_window_set_user_time (GdkWindow *window, guint32 timestamp) { GdkDisplay *display; - GdkDisplayX11 *display_x11; + GdkX11Display *display_x11; GdkToplevelX11 *toplevel; glong timestamp_long = (glong)timestamp; Window xid; @@ -3550,7 +3025,7 @@ gdk_x11_window_set_user_time (GdkWindow *window, return; display = gdk_window_get_display (window); - display_x11 = GDK_DISPLAY_X11 (display); + display_x11 = GDK_X11_DISPLAY (display); toplevel = _gdk_x11_window_get_toplevel (window); if (!toplevel) @@ -3686,24 +3161,9 @@ gdk_window_update_icon (GdkWindow *window, update_wm_hints (window, FALSE); } -/** - * gdk_window_set_icon_list: - * @window: The #GdkWindow toplevel window to set the icon of. - * @pixbufs: (transfer none) (element-type GdkPixbuf): - * A list of pixbufs, of different sizes. - * - * Sets a list of icons for the window. One of these will be used - * to represent the window when it has been iconified. The icon is - * usually shown in an icon box or some sort of task bar. Which icon - * size is shown depends on the window manager. The window manager - * can scale the icon but setting several size icons can give better - * image quality since the window manager may only need to scale the - * icon by a small amount or not at all. - * - **/ -void -gdk_window_set_icon_list (GdkWindow *window, - GList *pixbufs) +static void +gdk_x11_window_set_icon_list (GdkWindow *window, + GList *pixbufs) { gulong *data; guchar *pixels; @@ -3815,25 +3275,9 @@ gdk_window_icon_name_set (GdkWindow *window) g_quark_from_static_string ("gdk-icon-name-set"))); } -/** - * gdk_window_set_icon_name: - * @window: a toplevel #GdkWindow - * @name: name of window while iconified (minimized) - * - * Windows may have a name used while minimized, distinct from the - * name they display in their titlebar. Most of the time this is a bad - * idea from a user interface standpoint. But you can set such a name - * with this function, if you like. - * - * After calling this with a non-%NULL @name, calls to gdk_window_set_title() - * will not update the icon title. - * - * Using %NULL for @name unsets the icon title; further calls to - * gdk_window_set_title() will again update the icon title as well. - **/ -void -gdk_window_set_icon_name (GdkWindow *window, - const gchar *name) +static void +gdk_x11_window_set_icon_name (GdkWindow *window, + const gchar *name) { GdkDisplay *display; @@ -3869,19 +3313,8 @@ gdk_window_set_icon_name (GdkWindow *window, } } -/** - * gdk_window_iconify: - * @window: a toplevel #GdkWindow - * - * Asks to iconify (minimize) @window. The window manager may choose - * to ignore the request, but normally will honor it. Using - * gtk_window_iconify() is preferred, if you have a #GtkWindow widget. - * - * This function only makes sense when @window is a toplevel window. - * - **/ -void -gdk_window_iconify (GdkWindow *window) +static void +gdk_x11_window_iconify (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -3902,19 +3335,8 @@ gdk_window_iconify (GdkWindow *window) } } -/** - * gdk_window_deiconify: - * @window: a toplevel #GdkWindow - * - * Attempt to deiconify (unminimize) @window. On X11 the window manager may - * choose to ignore the request to deiconify. When using GTK+, - * use gtk_window_deiconify() instead of the #GdkWindow variant. Or better yet, - * you probably want to use gtk_window_present(), which raises the window, focuses it, - * unminimizes it, and puts it on the current desktop. - * - **/ -void -gdk_window_deiconify (GdkWindow *window) +static void +gdk_x11_window_deiconify (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -3933,23 +3355,8 @@ gdk_window_deiconify (GdkWindow *window) } } -/** - * gdk_window_stick: - * @window: a toplevel #GdkWindow - * - * "Pins" a window such that it's on all workspaces and does not scroll - * with viewports, for window managers that have scrollable viewports. - * (When using #GtkWindow, gtk_window_stick() may be more useful.) - * - * On the X11 platform, this function depends on window manager - * support, so may have no effect with many window managers. However, - * GDK will do the best it can to convince the window manager to stick - * the window. For window managers that don't support this operation, - * there's nothing you can do to force it to happen. - * - **/ -void -gdk_window_stick (GdkWindow *window) +static void +gdk_x11_window_stick (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -3996,16 +3403,8 @@ gdk_window_stick (GdkWindow *window) } } -/** - * gdk_window_unstick: - * @window: a toplevel #GdkWindow - * - * Reverse operation for gdk_window_stick(); see gdk_window_stick(), - * and gtk_window_unstick(). - * - **/ -void -gdk_window_unstick (GdkWindow *window) +static void +gdk_x11_window_unstick (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -4030,25 +3429,8 @@ gdk_window_unstick (GdkWindow *window) } } -/** - * gdk_window_maximize: - * @window: a toplevel #GdkWindow - * - * Maximizes the window. If the window was already maximized, then - * this function does nothing. - * - * On X11, asks the window manager to maximize @window, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don't have a concept of - * "maximized"; so you can't rely on the maximization actually - * happening. But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - * - * On Windows, reliably maximizes the window. - * - **/ -void -gdk_window_maximize (GdkWindow *window) +static void +gdk_x11_window_maximize (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -4064,25 +3446,8 @@ gdk_window_maximize (GdkWindow *window) GDK_WINDOW_STATE_MAXIMIZED); } -/** - * gdk_window_unmaximize: - * @window: a toplevel #GdkWindow - * - * Unmaximizes the window. If the window wasn't maximized, then this - * function does nothing. - * - * On X11, asks the window manager to unmaximize @window, if the - * window manager supports this operation. Not all window managers - * support this, and some deliberately ignore it or don't have a - * concept of "maximized"; so you can't rely on the unmaximization - * actually happening. But it will happen with most standard window - * managers, and GDK makes a best effort to get it to happen. - * - * On Windows, reliably unmaximizes the window. - * - **/ -void -gdk_window_unmaximize (GdkWindow *window) +static void +gdk_x11_window_unmaximize (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -4098,28 +3463,8 @@ gdk_window_unmaximize (GdkWindow *window) 0); } -/** - * gdk_window_fullscreen: - * @window: a toplevel #GdkWindow - * - * Moves the window into fullscreen mode. This means the - * window covers the entire screen and is above any panels - * or task bars. - * - * If the window was already fullscreen, then this function does nothing. - * - * On X11, asks the window manager to put @window in a fullscreen - * state, if the window manager supports this operation. Not all - * window managers support this, and some deliberately ignore it or - * don't have a concept of "fullscreen"; so you can't rely on the - * fullscreenification actually happening. But it will happen with - * most standard window managers, and GDK makes a best effort to get - * it to happen. - * - * Since: 2.2 - **/ -void -gdk_window_fullscreen (GdkWindow *window) +static void +gdk_x11_window_fullscreen (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -4136,25 +3481,8 @@ gdk_window_fullscreen (GdkWindow *window) GDK_WINDOW_STATE_FULLSCREEN); } -/** - * gdk_window_unfullscreen: - * @window: a toplevel #GdkWindow - * - * Moves the window out of fullscreen mode. If the window was not - * fullscreen, does nothing. - * - * On X11, asks the window manager to move @window out of the fullscreen - * state, if the window manager supports this operation. Not all - * window managers support this, and some deliberately ignore it or - * don't have a concept of "fullscreen"; so you can't rely on the - * unfullscreenification actually happening. But it will happen with - * most standard window managers, and GDK makes a best effort to get - * it to happen. - * - * Since: 2.2 - **/ -void -gdk_window_unfullscreen (GdkWindow *window) +static void +gdk_x11_window_unfullscreen (GdkWindow *window) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -4171,26 +3499,9 @@ gdk_window_unfullscreen (GdkWindow *window) 0); } -/** - * gdk_window_set_keep_above: - * @window: a toplevel #GdkWindow - * @setting: whether to keep @window above other windows - * - * Set if @window must be kept above other windows. If the - * window was already above, then this function does nothing. - * - * On X11, asks the window manager to keep @window above, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don't have a concept of - * "keep above"; so you can't rely on the window being kept above. - * But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - * - * Since: 2.4 - **/ -void -gdk_window_set_keep_above (GdkWindow *window, - gboolean setting) +static void +gdk_x11_window_set_keep_above (GdkWindow *window, + gboolean setting) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -4214,25 +3525,8 @@ gdk_window_set_keep_above (GdkWindow *window, setting ? GDK_WINDOW_STATE_ABOVE : 0); } -/** - * gdk_window_set_keep_below: - * @window: a toplevel #GdkWindow - * @setting: whether to keep @window below other windows - * - * Set if @window must be kept below other windows. If the - * window was already below, then this function does nothing. - * - * On X11, asks the window manager to keep @window below, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don't have a concept of - * "keep below"; so you can't rely on the window being kept below. - * But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - * - * Since: 2.4 - **/ -void -gdk_window_set_keep_below (GdkWindow *window, gboolean setting) +static void +gdk_x11_window_set_keep_below (GdkWindow *window, gboolean setting) { g_return_if_fail (GDK_IS_WINDOW (window)); @@ -4256,18 +3550,8 @@ gdk_window_set_keep_below (GdkWindow *window, gboolean setting) setting ? GDK_WINDOW_STATE_BELOW : 0); } -/** - * gdk_window_get_group: - * @window: a toplevel #GdkWindow - * - * Returns the group leader window for @window. See gdk_window_set_group(). - * - * Return value: (transfer none): the group leader window for @window - * - * Since: 2.4 - **/ -GdkWindow * -gdk_window_get_group (GdkWindow *window) +static GdkWindow * +gdk_x11_window_get_group (GdkWindow *window) { GdkToplevelX11 *toplevel; @@ -4280,25 +3564,9 @@ gdk_window_get_group (GdkWindow *window) return toplevel->group_leader; } -/** - * gdk_window_set_group: - * @window: a toplevel #GdkWindow - * @leader: group leader window, or %NULL to restore the default group leader window - * - * Sets the group leader window for @window. By default, - * GDK sets the group leader for all toplevel windows - * to a global window implicitly created by GDK. With this function - * you can override this default. - * - * The group leader window allows the window manager to distinguish - * all windows that belong to a single application. It may for example - * allow users to minimize/unminimize all windows belonging to an - * application at once. You should only set a non-default group window - * if your application pretends to be multiple applications. - **/ -void -gdk_window_set_group (GdkWindow *window, - GdkWindow *leader) +static void +gdk_x11_window_set_group (GdkWindow *window, + GdkWindow *leader) { GdkToplevelX11 *toplevel; @@ -4407,30 +3675,9 @@ gdk_window_set_mwm_hints (GdkWindow *window, XFree (hints); } -/** - * gdk_window_set_decorations: - * @window: a toplevel #GdkWindow - * @decorations: decoration hint mask - * - * "Decorations" are the features the window manager adds to a toplevel #GdkWindow. - * This function sets the traditional Motif window manager hints that tell the - * window manager which decorations you would like your window to have. - * Usually you should use gtk_window_set_decorated() on a #GtkWindow instead of - * using the GDK function directly. - * - * The @decorations argument is the logical OR of the fields in - * the #GdkWMDecoration enumeration. If #GDK_DECOR_ALL is included in the - * mask, the other bits indicate which decorations should be turned off. - * If #GDK_DECOR_ALL is not included, then the other bits indicate - * which decorations should be turned on. - * - * Most window managers honor a decorations hint of 0 to disable all decorations, - * but very few honor all possible combinations of bits. - * - **/ -void -gdk_window_set_decorations (GdkWindow *window, - GdkWMDecoration decorations) +static void +gdk_x11_window_set_decorations (GdkWindow *window, + GdkWMDecoration decorations) { MotifWmHints hints; @@ -4446,19 +3693,9 @@ gdk_window_set_decorations (GdkWindow *window, gdk_window_set_mwm_hints (window, &hints); } -/** - * gdk_window_get_decorations: - * @window: The toplevel #GdkWindow to get the decorations from - * @decorations: The window decorations will be written here - * - * Returns the decorations set on the GdkWindow with - * gdk_window_set_decorations(). - * - * Returns: %TRUE if the window has decorations set, %FALSE otherwise. - **/ -gboolean -gdk_window_get_decorations(GdkWindow *window, - GdkWMDecoration *decorations) +static gboolean +gdk_x11_window_get_decorations(GdkWindow *window, + GdkWMDecoration *decorations) { MotifWmHints *hints; gboolean result = FALSE; @@ -4484,28 +3721,8 @@ gdk_window_get_decorations(GdkWindow *window, return result; } -/** - * gdk_window_set_functions: - * @window: a toplevel #GdkWindow - * @functions: bitmask of operations to allow on @window - * - * Sets hints about the window management functions to make available - * via buttons on the window frame. - * - * On the X backend, this function sets the traditional Motif window - * manager hint for this purpose. However, few window managers do - * anything reliable or interesting with this hint. Many ignore it - * entirely. - * - * The @functions argument is the logical OR of values from the - * #GdkWMFunction enumeration. If the bitmask includes #GDK_FUNC_ALL, - * then the other bits indicate which functions to disable; if - * it doesn't include #GDK_FUNC_ALL, it indicates which functions to - * enable. - * - **/ -void -gdk_window_set_functions (GdkWindow *window, +static void +gdk_x11_window_set_functions (GdkWindow *window, GdkWMFunction functions) { MotifWmHints hints; @@ -4525,9 +3742,9 @@ gdk_window_set_functions (GdkWindow *window, } cairo_region_t * -_xwindow_get_shape (Display *xdisplay, - Window window, - gint shape_type) +_gdk_x11_xwindow_get_shape (Display *xdisplay, + Window window, + gint shape_type) { cairo_region_t *shape; GdkRectangle *rl; @@ -4575,8 +3792,9 @@ gdk_x11_window_get_shape (GdkWindow *window) { if (!GDK_WINDOW_DESTROYED (window) && gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))) - return _xwindow_get_shape (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), ShapeBounding); + return _gdk_x11_xwindow_get_shape (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + ShapeBounding); return NULL; } @@ -4587,9 +3805,9 @@ gdk_x11_window_get_input_shape (GdkWindow *window) #if defined(ShapeInput) if (!GDK_WINDOW_DESTROYED (window) && gdk_display_supports_shapes (GDK_WINDOW_DISPLAY (window))) - return _xwindow_get_shape (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), - ShapeInput); + return _gdk_x11_xwindow_get_shape (GDK_WINDOW_XDISPLAY (window), + GDK_WINDOW_XID (window), + ShapeInput); #endif return NULL; @@ -4936,22 +4154,22 @@ moveresize_lookahead (MoveResizeData *mv_resize, if (mv_resize->moveresize_process_time) { if (event->xmotion.time == mv_resize->moveresize_process_time) - { - mv_resize->moveresize_process_time = 0; - return TRUE; - } + { + mv_resize->moveresize_process_time = 0; + return TRUE; + } else - return FALSE; + return FALSE; } XCheckIfEvent (event->xany.display, &tmp_event, - lookahead_motion_predicate, (XPointer) & seen_release); + lookahead_motion_predicate, (XPointer) & seen_release); return mv_resize->moveresize_process_time == 0; } - + gboolean -_gdk_moveresize_handle_event (XEvent *event) +_gdk_x11_moveresize_handle_event (XEvent *event) { guint button_mask = 0; GdkDisplay *display = gdk_x11_lookup_xdisplay (event->xany.display); @@ -4966,21 +4184,21 @@ _gdk_moveresize_handle_event (XEvent *event) { case MotionNotify: if (mv_resize->moveresize_window->resize_count > 0) - { - if (mv_resize->moveresize_pending_event) - *mv_resize->moveresize_pending_event = *event; - else - mv_resize->moveresize_pending_event = - g_memdup (event, sizeof (XEvent)); + { + if (mv_resize->moveresize_pending_event) + *mv_resize->moveresize_pending_event = *event; + else + mv_resize->moveresize_pending_event = + g_memdup (event, sizeof (XEvent)); - break; - } + break; + } if (!moveresize_lookahead (mv_resize, event)) - break; + break; update_pos (mv_resize, - event->xmotion.x_root, - event->xmotion.y_root); + event->xmotion.x_root, + event->xmotion.y_root); /* This should never be triggered in normal cases, but in the * case where the drag started without an implicit grab being @@ -4989,28 +4207,28 @@ _gdk_moveresize_handle_event (XEvent *event) * get a permanently stuck grab. */ if ((event->xmotion.state & button_mask) == 0) - finish_drag (mv_resize); + finish_drag (mv_resize); break; case ButtonRelease: update_pos (mv_resize, - event->xbutton.x_root, - event->xbutton.y_root); + event->xbutton.x_root, + event->xbutton.y_root); if (event->xbutton.button == mv_resize->moveresize_button) - finish_drag (mv_resize); + finish_drag (mv_resize); break; } return TRUE; } -gboolean -_gdk_moveresize_configure_done (GdkDisplay *display, - GdkWindow *window) +gboolean +_gdk_x11_moveresize_configure_done (GdkDisplay *display, + GdkWindow *window) { XEvent *tmp_event; MoveResizeData *mv_resize = get_move_resize_data (display, FALSE); - + if (!mv_resize || window != mv_resize->moveresize_window) return FALSE; @@ -5018,16 +4236,16 @@ _gdk_moveresize_configure_done (GdkDisplay *display, { tmp_event = mv_resize->moveresize_pending_event; mv_resize->moveresize_pending_event = NULL; - _gdk_moveresize_handle_event (tmp_event); + _gdk_x11_moveresize_handle_event (tmp_event); g_free (tmp_event); } - + return TRUE; } static void create_moveresize_window (MoveResizeData *mv_resize, - guint32 timestamp) + guint32 timestamp) { GdkWindowAttr attributes; gint attributes_mask; @@ -5096,7 +4314,7 @@ calculate_unmoving_origin (MoveResizeData *mv_resize) { gdk_window_get_frame_extents (mv_resize->moveresize_window, &rect); gdk_window_get_geometry (mv_resize->moveresize_window, - NULL, NULL, &width, &height, NULL); + NULL, NULL, &width, &height); switch (mv_resize->moveresize_geometry.win_gravity) { @@ -5195,29 +4413,13 @@ emulate_move_drag (GdkWindow *window, create_moveresize_window (mv_resize, timestamp); } -/** - * gdk_window_begin_resize_drag: - * @window: a toplevel #GdkWindow - * @edge: the edge or corner from which the drag is started - * @button: the button being used to drag - * @root_x: root window X coordinate of mouse click that began the drag - * @root_y: root window Y coordinate of mouse click that began the drag - * @timestamp: timestamp of mouse click that began the drag (use gdk_event_get_time()) - * - * Begins a window resize operation (for a toplevel window). - * You might use this function to implement a "window resize grip," for - * example; in fact #GtkStatusbar uses it. The function works best - * with window managers that support the Extended Window Manager Hints, but has a - * fallback implementation for other window managers. - * - **/ -void -gdk_window_begin_resize_drag (GdkWindow *window, - GdkWindowEdge edge, - gint button, - gint root_x, - gint root_y, - guint32 timestamp) +static void +gdk_x11_window_begin_resize_drag (GdkWindow *window, + GdkWindowEdge edge, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL_OR_FOREIGN (window)) @@ -5230,28 +4432,12 @@ gdk_window_begin_resize_drag (GdkWindow *window, emulate_resize_drag (window, edge, button, root_x, root_y, timestamp); } -/** - * gdk_window_begin_move_drag: - * @window: a toplevel #GdkWindow - * @button: the button being used to drag - * @root_x: root window X coordinate of mouse click that began the drag - * @root_y: root window Y coordinate of mouse click that began the drag - * @timestamp: timestamp of mouse click that began the drag - * - * Begins a window move operation (for a toplevel window). You might - * use this function to implement a "window move grip," for - * example. The function works best with window managers that support - * the Extended - * Window Manager Hints, but has a fallback implementation for - * other window managers. - * - **/ -void -gdk_window_begin_move_drag (GdkWindow *window, - gint button, - gint root_x, - gint root_y, - guint32 timestamp) +static void +gdk_x11_window_begin_move_drag (GdkWindow *window, + gint button, + gint root_x, + gint root_y, + guint32 timestamp) { if (GDK_WINDOW_DESTROYED (window) || !WINDOW_IS_TOPLEVEL (window)) @@ -5265,25 +4451,8 @@ gdk_window_begin_move_drag (GdkWindow *window, emulate_move_drag (window, button, root_x, root_y, timestamp); } -/** - * gdk_window_enable_synchronized_configure: - * @window: a toplevel #GdkWindow - * - * Indicates that the application will cooperate with the window - * system in synchronizing the window repaint with the window - * manager during resizing operations. After an application calls - * this function, it must call gdk_window_configure_finished() every - * time it has finished all processing associated with a set of - * Configure events. Toplevel GTK+ windows automatically use this - * protocol. - * - * On X, calling this function makes @window participate in the - * _NET_WM_SYNC_REQUEST window manager protocol. - * - * Since: 2.6 - **/ -void -gdk_window_enable_synchronized_configure (GdkWindow *window) +static void +gdk_x11_window_enable_synchronized_configure (GdkWindow *window) { GdkWindowImplX11 *impl; @@ -5303,23 +4472,8 @@ gdk_window_enable_synchronized_configure (GdkWindow *window) } } -/** - * gdk_window_configure_finished: - * @window: a toplevel #GdkWindow - * - * Signal to the window system that the application has finished - * handling Configure events it has received. Window Managers can - * use this to better synchronize the frame repaint with the - * application. GTK+ applications will automatically call this - * function when appropriate. - * - * This function can only be called if gdk_window_enable_synchronized_configure() - * was called previously. - * - * Since: 2.6 - **/ -void -gdk_window_configure_finished (GdkWindow *window) +static void +gdk_x11_window_configure_finished (GdkWindow *window) { GdkWindowImplX11 *impl; @@ -5337,7 +4491,7 @@ gdk_window_configure_finished (GdkWindow *window) GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (window); if (toplevel && toplevel->update_counter != None && - GDK_DISPLAY_X11 (display)->use_sync && + GDK_X11_DISPLAY (display)->use_sync && !XSyncValueIsZero (toplevel->current_counter_value)) { XSyncSetCounter (GDK_WINDOW_XDISPLAY (window), @@ -5358,7 +4512,7 @@ gdk_x11_window_beep (GdkWindow *window) display = GDK_WINDOW_DISPLAY (window); #ifdef HAVE_XKB - if (GDK_DISPLAY_X11 (display)->use_xkb) + if (GDK_X11_DISPLAY (display)->use_xkb) { XkbBell (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), @@ -5371,27 +4525,9 @@ gdk_x11_window_beep (GdkWindow *window) return FALSE; } -/** - * gdk_window_set_opacity: - * @window: a top-level #GdkWindow - * @opacity: opacity - * - * Request the windowing system to make @window partially transparent, - * with opacity 0 being fully transparent and 1 fully opaque. (Values - * of the opacity parameter are clamped to the [0,1] range.) - * - * On X11, this works only on X screens with a compositing manager - * running. - * - * For setting up per-pixel alpha, see gdk_screen_get_rgba_visual(). - * For making non-toplevel windows translucent, see - * gdk_window_set_composited(). - * - * Since: 2.12 - */ -void -gdk_window_set_opacity (GdkWindow *window, - gdouble opacity) +static void +gdk_x11_window_set_opacity (GdkWindow *window, + gdouble opacity) { GdkDisplay *display; guint32 cardinal; @@ -5424,9 +4560,9 @@ gdk_window_set_opacity (GdkWindow *window, (guchar *) &cardinal, 1); } -void -_gdk_windowing_window_set_composited (GdkWindow *window, - gboolean composited) +static void +gdk_x11_window_set_composited (GdkWindow *window, + gboolean composited) { #if defined(HAVE_XCOMPOSITE) && defined(HAVE_XDAMAGE) && defined (HAVE_XFIXES) GdkWindowImplX11 *impl; @@ -5454,20 +4590,20 @@ _gdk_windowing_window_set_composited (GdkWindow *window, #endif } -void -_gdk_windowing_window_process_updates_recurse (GdkWindow *window, - cairo_region_t *region) +static void +gdk_x11_window_process_updates_recurse (GdkWindow *window, + cairo_region_t *region) { _gdk_window_process_updates_recurse (window, region); } void -_gdk_windowing_before_process_all_updates (void) +_gdk_x11_display_before_process_all_updates (GdkDisplay *display) { } void -_gdk_windowing_after_process_all_updates (void) +_gdk_x11_display_after_process_all_updates (GdkDisplay *display) { } @@ -5558,6 +4694,10 @@ gdk_x11_window_get_xid (GdkWindow *window) return GDK_WINDOW_IMPL_X11 (window->impl)->xid; } +extern GdkDragContext * _gdk_x11_window_drag_begin (GdkWindow *window, + GdkDevice *device, + GList *targets); + static void gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass) { @@ -5588,10 +4728,62 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass) impl_class->set_static_gravities = gdk_window_x11_set_static_gravities; impl_class->queue_antiexpose = _gdk_x11_window_queue_antiexpose; impl_class->translate = _gdk_x11_window_translate; - impl_class->destroy = _gdk_x11_window_destroy; + impl_class->destroy = gdk_x11_window_destroy; + impl_class->destroy_foreign = gdk_x11_window_destroy_foreign; impl_class->resize_cairo_surface = gdk_window_x11_resize_cairo_surface; impl_class->get_shape = gdk_x11_window_get_shape; impl_class->get_input_shape = gdk_x11_window_get_input_shape; impl_class->beep = gdk_x11_window_beep; -} + impl_class->focus = gdk_x11_window_focus; + impl_class->set_type_hint = gdk_x11_window_set_type_hint; + impl_class->get_type_hint = gdk_x11_window_get_type_hint; + impl_class->set_modal_hint = gdk_x11_window_set_modal_hint; + impl_class->set_skip_taskbar_hint = gdk_x11_window_set_skip_taskbar_hint; + impl_class->set_skip_pager_hint = gdk_x11_window_set_skip_pager_hint; + impl_class->set_urgency_hint = gdk_x11_window_set_urgency_hint; + impl_class->set_geometry_hints = gdk_x11_window_set_geometry_hints; + impl_class->set_title = gdk_x11_window_set_title; + impl_class->set_role = gdk_x11_window_set_role; + impl_class->set_startup_id = gdk_x11_window_set_startup_id; + impl_class->set_transient_for = gdk_x11_window_set_transient_for; + impl_class->get_root_origin = gdk_x11_window_get_root_origin; + impl_class->get_frame_extents = gdk_x11_window_get_frame_extents; + impl_class->set_override_redirect = gdk_x11_window_set_override_redirect; + impl_class->set_accept_focus = gdk_x11_window_set_accept_focus; + impl_class->set_focus_on_map = gdk_x11_window_set_focus_on_map; + impl_class->set_icon_list = gdk_x11_window_set_icon_list; + impl_class->set_icon_name = gdk_x11_window_set_icon_name; + impl_class->iconify = gdk_x11_window_iconify; + impl_class->deiconify = gdk_x11_window_deiconify; + impl_class->stick = gdk_x11_window_stick; + impl_class->unstick = gdk_x11_window_unstick; + impl_class->maximize = gdk_x11_window_maximize; + impl_class->unmaximize = gdk_x11_window_unmaximize; + impl_class->fullscreen = gdk_x11_window_fullscreen; + impl_class->unfullscreen = gdk_x11_window_unfullscreen; + impl_class->set_keep_above = gdk_x11_window_set_keep_above; + impl_class->set_keep_below = gdk_x11_window_set_keep_below; + impl_class->get_group = gdk_x11_window_get_group; + impl_class->set_group = gdk_x11_window_set_group; + impl_class->set_decorations = gdk_x11_window_set_decorations; + impl_class->get_decorations = gdk_x11_window_get_decorations; + impl_class->set_functions = gdk_x11_window_set_functions; + impl_class->set_functions = gdk_x11_window_set_functions; + impl_class->begin_resize_drag = gdk_x11_window_begin_resize_drag; + impl_class->begin_move_drag = gdk_x11_window_begin_move_drag; + impl_class->enable_synchronized_configure = gdk_x11_window_enable_synchronized_configure; + impl_class->configure_finished = gdk_x11_window_configure_finished; + impl_class->set_opacity = gdk_x11_window_set_opacity; + impl_class->set_composited = gdk_x11_window_set_composited; + impl_class->destroy_notify = gdk_x11_window_destroy_notify; + impl_class->register_dnd = _gdk_x11_window_register_dnd; + impl_class->drag_begin = _gdk_x11_window_drag_begin; + impl_class->process_updates_recurse = gdk_x11_window_process_updates_recurse; + impl_class->sync_rendering = _gdk_x11_window_sync_rendering; + impl_class->simulate_key = _gdk_x11_window_simulate_key; + impl_class->simulate_button = _gdk_x11_window_simulate_button; + impl_class->get_property = _gdk_x11_window_get_property; + impl_class->change_property = _gdk_x11_window_change_property; + impl_class->delete_property = _gdk_x11_window_delete_property; +} diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h index fd63e8b462..5a50464f0c 100644 --- a/gdk/x11/gdkwindow-x11.h +++ b/gdk/x11/gdkwindow-x11.h @@ -30,11 +30,14 @@ #include "gdk/x11/gdkprivate-x11.h" #include "gdk/gdkwindowimpl.h" +#include + #ifdef HAVE_XDAMAGE #include #endif #ifdef HAVE_XSYNC +#include #include #endif @@ -160,9 +163,6 @@ void _gdk_x11_window_tmp_unset_parent_bg (GdkWindow *window); void _gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window); GdkCursor *_gdk_x11_window_get_cursor (GdkWindow *window); -void _gdk_x11_window_get_offsets (GdkWindow *window, - gint *x_offset, - gint *y_offset); void _gdk_x11_window_update_size (GdkWindowImplX11 *impl); diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h index 51aae0dad1..48207b585d 100644 --- a/gdk/x11/gdkx.h +++ b/gdk/x11/gdkx.h @@ -21,7 +21,7 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #ifndef __GDK_X_H__ @@ -32,222 +32,27 @@ #include #include -G_BEGIN_DECLS +#define __GDKX_H_INSIDE__ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -/** - * SECTION:x_interaction - * @Short_description: X backend-specific functions - * @Title: X Window System Interaction - * - * The functions in this section are specific to the GDK X11 backend. - * To use them, you need to include the <gdk/gdkx.h> - * header and use the X11-specific pkg-config files to build your - * application (either gdk-x11-3.0 or - * gtk+-x11-3.0). - * - * To make your code compile with other GDK backends, guard backend-specific - * calls by an ifdef as follows: - * - * #ifdef GDK_WINDOWING_X11 - * /* X11-specific calls here... */ - * #endif - * - */ - - -Window gdk_x11_window_get_xid (GdkWindow *window); -Display *gdk_x11_cursor_get_xdisplay (GdkCursor *cursor); -Cursor gdk_x11_cursor_get_xcursor (GdkCursor *cursor); -Display *gdk_x11_display_get_xdisplay (GdkDisplay *display); -Visual * gdk_x11_visual_get_xvisual (GdkVisual *visual); -Screen * gdk_x11_screen_get_xscreen (GdkScreen *screen); -int gdk_x11_screen_get_screen_number (GdkScreen *screen); -void gdk_x11_window_set_user_time (GdkWindow *window, - guint32 timestamp); -void gdk_x11_window_move_to_current_desktop (GdkWindow *window); - -const char* gdk_x11_screen_get_window_manager_name (GdkScreen *screen); - -#ifndef GDK_MULTIHEAD_SAFE -Window gdk_x11_get_default_root_xwindow (void); -Display *gdk_x11_get_default_xdisplay (void); -gint gdk_x11_get_default_screen (void); -#endif - -/** - * GDK_CURSOR_XDISPLAY: - * @cursor: a #GdkCursor. - * - * Returns the display of a #GdkCursor. - * - * Returns: an Xlib Display*. - */ -#define GDK_CURSOR_XDISPLAY(cursor) (gdk_x11_cursor_get_xdisplay (cursor)) - -/** - * GDK_CURSOR_XCURSOR: - * @cursor: a #GdkCursor. - * - * Returns the X cursor belonging to a #GdkCursor. - * - * Returns: an Xlib Cursor. - */ -#define GDK_CURSOR_XCURSOR(cursor) (gdk_x11_cursor_get_xcursor (cursor)) - - -#ifdef GDK_COMPILATION - -#include "gdkprivate-x11.h" -#include "gdkscreen-x11.h" - -/** - * GDK_DISPLAY_XDISPLAY: - * @display: a #GdkDisplay. - * - * Returns the display of a #GdkDisplay. - * - * Returns: an Xlib Display* - */ -#define GDK_DISPLAY_XDISPLAY(display) (GDK_DISPLAY_X11(display)->xdisplay) - -/** - * GDK_WINDOW_XDISPLAY: - * @win: a #GdkWindow. - * - * Returns the display of a #GdkWindow. - * - * Returns: an Xlib Display*. - */ -#define GDK_WINDOW_XDISPLAY(win) (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xdisplay) -#define GDK_WINDOW_XID(win) (GDK_WINDOW_IMPL_X11(GDK_WINDOW (win)->impl)->xid) - -#define GDK_SCREEN_XDISPLAY(screen) (GDK_SCREEN_X11 (screen)->xdisplay) - -/** - * GDK_SCREEN_XSCREEN: - * @screen: a #GdkScreen - * - * Returns the screen of a #GdkScreen. - * - * Returns: an Xlib Screen*. - */ -#define GDK_SCREEN_XSCREEN(screen) (GDK_SCREEN_X11 (screen)->xscreen) -#define GDK_SCREEN_XNUMBER(screen) (GDK_SCREEN_X11 (screen)->screen_num) - -#else /* GDK_COMPILATION */ - -#ifndef GDK_MULTIHEAD_SAFE -/** - * GDK_ROOT_WINDOW: - * - * Obtains the Xlib window id of the root window of the current screen. - */ -#define GDK_ROOT_WINDOW() (gdk_x11_get_default_root_xwindow ()) -#endif - -#define GDK_DISPLAY_XDISPLAY(display) (gdk_x11_display_get_xdisplay (display)) - -#define GDK_WINDOW_XDISPLAY(win) (GDK_DISPLAY_XDISPLAY (gdk_window_get_display (win))) - -/** - * GDK_WINDOW_XID: - * @win: a #GdkWindow. - * - * Returns the X window belonging to a #GdkWindow. - * - * Returns: the Xlib Window of @win. - */ -#define GDK_WINDOW_XID(win) (gdk_x11_window_get_xid (win)) - -#define GDK_SCREEN_XDISPLAY(screen) (gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen))) -#define GDK_SCREEN_XSCREEN(screen) (gdk_x11_screen_get_xscreen (screen)) - -/** - * GDK_SCREEN_XNUMBER: - * @screen: a #GdkScreen - * - * Returns the index of a #GdkScreen. - * - * Returns: the position of @screen among the screens of - * its display. - */ -#define GDK_SCREEN_XNUMBER(screen) (gdk_x11_screen_get_screen_number (screen)) - -#endif /* GDK_COMPILATION */ - -#define GDK_VISUAL_XVISUAL(visual) (gdk_x11_visual_get_xvisual (visual)) - -GdkVisual* gdk_x11_screen_lookup_visual (GdkScreen *screen, - VisualID xvisualid); -#ifndef GDK_MULTIHEAD_SAFE -GdkVisual* gdkx_visual_get (VisualID xvisualid); -#endif - - /* Return the Gdk* for a particular XID */ -gpointer gdk_xid_table_lookup_for_display (GdkDisplay *display, - XID xid); -guint32 gdk_x11_get_server_time (GdkWindow *window); -guint32 gdk_x11_display_get_user_time (GdkDisplay *display); - -G_CONST_RETURN gchar *gdk_x11_display_get_startup_notification_id (GdkDisplay *display); -void gdk_x11_display_set_startup_notification_id (GdkDisplay *display, - const gchar *startup_id); - -void gdk_x11_display_set_cursor_theme (GdkDisplay *display, - const gchar *theme, - const gint size); - -void gdk_x11_display_broadcast_startup_message (GdkDisplay *display, - const char *message_type, - ...) G_GNUC_NULL_TERMINATED; - -/* returns TRUE if we support the given WM spec feature */ -gboolean gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, - GdkAtom property); - -XID gdk_x11_screen_get_monitor_output (GdkScreen *screen, - gint monitor_num); - -#ifndef GDK_MULTIHEAD_SAFE -gpointer gdk_xid_table_lookup (XID xid); -gboolean gdk_net_wm_supports (GdkAtom property); -void gdk_x11_grab_server (void); -void gdk_x11_ungrab_server (void); -#endif - -GdkDisplay *gdk_x11_lookup_xdisplay (Display *xdisplay); - - -/* Functions to get the X Atom equivalent to the GdkAtom */ -Atom gdk_x11_atom_to_xatom_for_display (GdkDisplay *display, - GdkAtom atom); -GdkAtom gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, - Atom xatom); -Atom gdk_x11_get_xatom_by_name_for_display (GdkDisplay *display, - const gchar *atom_name); -G_CONST_RETURN gchar *gdk_x11_get_xatom_name_for_display (GdkDisplay *display, - Atom xatom); -#ifndef GDK_MULTIHEAD_SAFE -Atom gdk_x11_atom_to_xatom (GdkAtom atom); -GdkAtom gdk_x11_xatom_to_atom (Atom xatom); -Atom gdk_x11_get_xatom_by_name (const gchar *atom_name); -G_CONST_RETURN gchar *gdk_x11_get_xatom_name (Atom xatom); -#endif - -void gdk_x11_display_grab (GdkDisplay *display); -void gdk_x11_display_ungrab (GdkDisplay *display); - -void gdk_x11_display_error_trap_push (GdkDisplay *display); -/* warn unused because you could use pop_ignored otherwise */ -G_GNUC_WARN_UNUSED_RESULT gint gdk_x11_display_error_trap_pop (GdkDisplay *display); -void gdk_x11_display_error_trap_pop_ignored (GdkDisplay *display); - -void gdk_x11_register_standard_event_type (GdkDisplay *display, - gint event_base, - gint n_events); - - -G_END_DECLS +#undef __GDKX_H_INSIDE__ #endif /* __GDK_X_H__ */ diff --git a/gdk/x11/gdkx11applaunchcontext.h b/gdk/x11/gdkx11applaunchcontext.h new file mode 100644 index 0000000000..e067a73820 --- /dev/null +++ b/gdk/x11/gdkx11applaunchcontext.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_APP_LAUNCH_CONTEXT_H__ +#define __GDK_X11_APP_LAUNCH_CONTEXT_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_APP_LAUNCH_CONTEXT (gdk_x11_app_launch_context_get_type ()) +#define GDK_X11_APP_LAUNCH_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_APP_LAUNCH_CONTEXT, GdkX11AppLaunchContext)) +#define GDK_X11_APP_LAUNCH_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_APP_LAUNCH_CONTEXT, GdkX11AppLaunchContextClass)) +#define GDK_IS_X11_APP_LAUNCH_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_APP_LAUNCH_CONTEXT)) +#define GDK_IS_X11_APP_LAUNCH_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_APP_LAUNCH_CONTEXT)) +#define GDK_X11_APP_LAUNCH_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_APP_LAUNCH_CONTEXT, GdkX11AppLaunchContextClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11AppLaunchContext GdkX11AppLaunchContext; +#else +typedef GdkAppLaunchContext GdkX11AppLaunchContext; +#endif +typedef struct _GdkX11AppLaunchContextClass GdkX11AppLaunchContextClass; + +GType gdk_x11_app_launch_context_get_type (void); + +G_END_DECLS + +#endif /* __GDK_X11_APP_LAUNCH_CONTEXT_H__ */ diff --git a/gdk/x11/gdkx11cursor.h b/gdk/x11/gdkx11cursor.h new file mode 100644 index 0000000000..a4647c9096 --- /dev/null +++ b/gdk/x11/gdkx11cursor.h @@ -0,0 +1,82 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_CURSOR_H__ +#define __GDK_X11_CURSOR_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_CURSOR (gdk_x11_cursor_get_type ()) +#define GDK_X11_CURSOR(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_CURSOR, GdkX11Cursor)) +#define GDK_X11_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_CURSOR, GdkX11CursorClass)) +#define GDK_IS_X11_CURSOR(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_CURSOR)) +#define GDK_IS_X11_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_CURSOR)) +#define GDK_X11_CURSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_CURSOR, GdkX11CursorClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Cursor GdkX11Cursor; +#else +typedef GdkCursor GdkX11Cursor; +#endif +typedef struct _GdkX11CursorClass GdkX11CursorClass; + +GType gdk_x11_cursor_get_type (void); + +Display *gdk_x11_cursor_get_xdisplay (GdkCursor *cursor); +Cursor gdk_x11_cursor_get_xcursor (GdkCursor *cursor); + +/** + * GDK_CURSOR_XDISPLAY: + * @cursor: a #GdkCursor. + * + * Returns the display of a #GdkCursor. + * + * Returns: an Xlib Display*. + */ +#define GDK_CURSOR_XDISPLAY(cursor) (gdk_x11_cursor_get_xdisplay (cursor)) + +/** + * GDK_CURSOR_XCURSOR: + * @cursor: a #GdkCursor. + * + * Returns the X cursor belonging to a #GdkCursor. + * + * Returns: an Xlib Cursor. + */ +#define GDK_CURSOR_XCURSOR(cursor) (gdk_x11_cursor_get_xcursor (cursor)) + +G_END_DECLS + +#endif /* __GDK_X11_CURSOR_H__ */ diff --git a/gdk/x11/gdkx11device-core.h b/gdk/x11/gdkx11device-core.h new file mode 100644 index 0000000000..d53d7b8418 --- /dev/null +++ b/gdk/x11/gdkx11device-core.h @@ -0,0 +1,42 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_CORE_H__ +#define __GDK_X11_DEVICE_CORE_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_CORE (gdk_x11_device_core_get_type ()) +#define GDK_X11_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_CORE, GdkX11DeviceCore)) +#define GDK_X11_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_CORE, GdkX11DeviceCoreClass)) +#define GDK_IS_X11_DEVICE_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_CORE)) +#define GDK_IS_X11_DEVICE_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_CORE)) +#define GDK_X11_DEVICE_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_CORE, GdkX11DeviceCoreClass)) + +typedef struct _GdkX11DeviceCore GdkX11DeviceCore; +typedef struct _GdkX11DeviceCoreClass GdkX11DeviceCoreClass; + + +GType gdk_x11_device_core_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_CORE_H__ */ diff --git a/gdk/x11/gdkx11device-xi.h b/gdk/x11/gdkx11device-xi.h new file mode 100644 index 0000000000..65e5295622 --- /dev/null +++ b/gdk/x11/gdkx11device-xi.h @@ -0,0 +1,42 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_XI_H__ +#define __GDK_X11_DEVICE_XI_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_XI (gdk_x11_device_xi_get_type ()) +#define GDK_X11_DEVICE_XI(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_XI, GdkX11DeviceXI)) +#define GDK_X11_DEVICE_XI_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_XI, GdkX11DeviceXIClass)) +#define GDK_IS_X11_DEVICE_XI(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_XI)) +#define GDK_IS_X11_DEVICE_XI_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_XI)) +#define GDK_X11_DEVICE_XI_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_XI, GdkX11DeviceXIClass)) + +typedef struct _GdkX11DeviceXI GdkX11DeviceXI; +typedef struct _GdkX11DeviceXIClass GdkX11DeviceXIClass; + + +GType gdk_x11_device_xi_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_XI_H__ */ diff --git a/gdk/x11/gdkx11device-xi2.h b/gdk/x11/gdkx11device-xi2.h new file mode 100644 index 0000000000..15f7db6a80 --- /dev/null +++ b/gdk/x11/gdkx11device-xi2.h @@ -0,0 +1,41 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_XI2_H__ +#define __GDK_X11_DEVICE_XI2_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_XI2 (gdk_x11_device_xi2_get_type ()) +#define GDK_X11_DEVICE_XI2(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_XI2, GdkX11DeviceXI2)) +#define GDK_X11_DEVICE_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_XI2, GdkX11DeviceXI2Class)) +#define GDK_IS_X11_DEVICE_XI2(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_XI2)) +#define GDK_IS_X11_DEVICE_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_XI2)) +#define GDK_X11_DEVICE_XI2_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_XI2, GdkX11DeviceXI2Class)) + +typedef struct _GdkX11DeviceXI2 GdkX11DeviceXI2; +typedef struct _GdkX11DeviceXI2Class GdkX11DeviceXI2Class; + +GType gdk_x11_device_xi2_get_type (void) G_GNUC_CONST; + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_XI2_H__ */ diff --git a/gdk/x11/gdkx11devicemanager-core.h b/gdk/x11/gdkx11devicemanager-core.h new file mode 100644 index 0000000000..eb9fbe31d4 --- /dev/null +++ b/gdk/x11/gdkx11devicemanager-core.h @@ -0,0 +1,43 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_MANAGER_CORE_H__ +#define __GDK_X11_DEVICE_MANAGER_CORE_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_MANAGER_CORE (gdk_x11_device_manager_core_get_type ()) +#define GDK_X11_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_MANAGER_CORE, GdkX11DeviceManagerCore)) +#define GDK_X11_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_MANAGER_CORE, GdkX11DeviceManagerCoreClass)) +#define GDK_IS_X11_DEVICE_MANAGER_CORE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_MANAGER_CORE)) +#define GDK_IS_X11_DEVICE_MANAGER_CORE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_MANAGER_CORE)) +#define GDK_X11_DEVICE_MANAGER_CORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_MANAGER_CORE, GdkX11DeviceManagerCoreClass)) + +typedef struct _GdkX11DeviceManagerCore GdkX11DeviceManagerCore; +typedef struct _GdkX11DeviceManagerCoreClass GdkX11DeviceManagerCoreClass; + + +GType gdk_x11_device_manager_core_get_type (void) G_GNUC_CONST; + + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_MANAGER_CORE_H__ */ diff --git a/gdk/x11/gdkx11devicemanager-xi.h b/gdk/x11/gdkx11devicemanager-xi.h new file mode 100644 index 0000000000..e01c744dda --- /dev/null +++ b/gdk/x11/gdkx11devicemanager-xi.h @@ -0,0 +1,43 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_MANAGER_XI_H__ +#define __GDK_X11_DEVICE_MANAGER_XI_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_MANAGER_XI (gdk_x11_device_manager_xi_get_type ()) +#define GDK_X11_DEVICE_MANAGER_XI(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI, GdkX11DeviceManagerXI)) +#define GDK_X11_DEVICE_MANAGER_XI_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_MANAGER_XI, GdkX11DeviceManagerXIClass)) +#define GDK_IS_X11_DEVICE_MANAGER_XI(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI)) +#define GDK_IS_X11_DEVICE_MANAGER_XI_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_MANAGER_XI)) +#define GDK_X11_DEVICE_MANAGER_XI_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI, GdkX11DeviceManagerXIClass)) + +typedef struct _GdkX11DeviceManagerXI GdkX11DeviceManagerXI; +typedef struct _GdkX11DeviceManagerXIClass GdkX11DeviceManagerXIClass; + + +GType gdk_x11_device_manager_xi_get_type (void) G_GNUC_CONST; + + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_MANAGER_XI_H__ */ diff --git a/gdk/x11/gdkx11devicemanager-xi2.h b/gdk/x11/gdkx11devicemanager-xi2.h new file mode 100644 index 0000000000..acae52bc62 --- /dev/null +++ b/gdk/x11/gdkx11devicemanager-xi2.h @@ -0,0 +1,43 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2009 Carlos Garnacho + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GDK_X11_DEVICE_MANAGER_XI2_H__ +#define __GDK_X11_DEVICE_MANAGER_XI2_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DEVICE_MANAGER_XI2 (gdk_x11_device_manager_xi2_get_type ()) +#define GDK_X11_DEVICE_MANAGER_XI2(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI2, GdkX11DeviceManagerXI2)) +#define GDK_X11_DEVICE_MANAGER_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_X11_DEVICE_MANAGER_XI2, GdkX11DeviceManagerXI2Class)) +#define GDK_IS_X11_DEVICE_MANAGER_XI2(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI2)) +#define GDK_IS_X11_DEVICE_MANAGER_XI2_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_X11_DEVICE_MANAGER_XI2)) +#define GDK_X11_DEVICE_MANAGER_XI2_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_X11_DEVICE_MANAGER_XI2, GdkX11DeviceManagerXI2Class)) + +typedef struct _GdkX11DeviceManagerXI2 GdkX11DeviceManagerXI2; +typedef struct _GdkX11DeviceManagerXI2Class GdkX11DeviceManagerXI2Class; + + +GType gdk_x11_device_manager_xi2_get_type (void) G_GNUC_CONST; + + +G_END_DECLS + +#endif /* __GDK_X11_DEVICE_MANAGER_XI2_H__ */ diff --git a/gdk/x11/gdkx11display.h b/gdk/x11/gdkx11display.h new file mode 100644 index 0000000000..b544ac47bc --- /dev/null +++ b/gdk/x11/gdkx11display.h @@ -0,0 +1,94 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_DISPLAY_H__ +#define __GDK_X11_DISPLAY_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Display GdkX11Display; +#else +typedef GdkDisplay GdkX11Display; +#endif +typedef struct _GdkX11DisplayClass GdkX11DisplayClass; + +#define GDK_TYPE_X11_DISPLAY (gdk_x11_display_get_type()) +#define GDK_X11_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_DISPLAY, GdkX11Display)) +#define GDK_X11_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_DISPLAY, GdkX11DisplayClass)) +#define GDK_IS_X11_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_DISPLAY)) +#define GDK_IS_X11_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_DISPLAY)) +#define GDK_X11_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_DISPLAY, GdkX11DisplayClass)) + +GType gdk_x11_display_get_type (void); + +Display *gdk_x11_display_get_xdisplay (GdkDisplay *display); + +#define GDK_DISPLAY_XDISPLAY(display) (gdk_x11_display_get_xdisplay (display)) + +guint32 gdk_x11_display_get_user_time (GdkDisplay *display); + +G_CONST_RETURN gchar *gdk_x11_display_get_startup_notification_id (GdkDisplay *display); +void gdk_x11_display_set_startup_notification_id (GdkDisplay *display, + const gchar *startup_id); + +void gdk_x11_display_set_cursor_theme (GdkDisplay *display, + const gchar *theme, + const gint size); + +void gdk_x11_display_broadcast_startup_message (GdkDisplay *display, + const char *message_type, + ...) G_GNUC_NULL_TERMINATED; + +GdkDisplay *gdk_x11_lookup_xdisplay (Display *xdisplay); + +void gdk_x11_display_grab (GdkDisplay *display); +void gdk_x11_display_ungrab (GdkDisplay *display); + +void gdk_x11_display_error_trap_push (GdkDisplay *display); +/* warn unused because you could use pop_ignored otherwise */ +G_GNUC_WARN_UNUSED_RESULT gint gdk_x11_display_error_trap_pop (GdkDisplay *display); +void gdk_x11_display_error_trap_pop_ignored (GdkDisplay *display); + +void gdk_x11_register_standard_event_type (GdkDisplay *display, + gint event_base, + gint n_events); + +void gdk_x11_set_sm_client_id (const gchar *sm_client_id); + + +G_END_DECLS + +#endif /* __GDK_X11_DISPLAY_H__ */ diff --git a/gdk/x11/gdkx11displaymanager.h b/gdk/x11/gdkx11displaymanager.h new file mode 100644 index 0000000000..b729a046ed --- /dev/null +++ b/gdk/x11/gdkx11displaymanager.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_DISPLAY_MANAGER_H__ +#define __GDK_X11_DISPLAY_MANAGER_H__ + +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkX11DisplayManager GdkX11DisplayManager; +#else +typedef GdkDisplayManager GdkX11DisplayManager; +#endif +typedef struct _GdkX11DisplayManagerClass GdkX11DisplayManagerClass; + +#define GDK_TYPE_X11_DISPLAY_MANAGER (gdk_x11_display_manager_get_type()) +#define GDK_X11_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_DISPLAY_MANAGER, GdkX11DisplayManager)) +#define GDK_X11_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_DISPLAY_MANAGER, GdkX11DisplayManagerClass)) +#define GDK_IS_X11_DISPLAY_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_DISPLAY_MANAGER)) +#define GDK_IS_X11_DISPLAY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_DISPLAY_MANAGER)) +#define GDK_X11_DISPLAY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_DISPLAY_MANAGER, GdkX11DisplayManagerClass)) + +GType gdk_x11_display_manager_get_type (void); + +G_END_DECLS + +#endif /* __GDK_X11_DISPLAY_MANAGER_H__ */ diff --git a/gdk/x11/gdkx11dnd.h b/gdk/x11/gdkx11dnd.h new file mode 100644 index 0000000000..3ca0819af4 --- /dev/null +++ b/gdk/x11/gdkx11dnd.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_DND_H__ +#define __GDK_X11_DND_H__ + +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_DRAG_CONTEXT (gdk_x11_drag_context_get_type ()) +#define GDK_X11_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_DRAG_CONTEXT, GdkX11DragContext)) +#define GDK_X11_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_DRAG_CONTEXT, GdkX11DragContextClass)) +#define GDK_IS_X11_DRAG_CONTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_DRAG_CONTEXT)) +#define GDK_IS_X11_DRAG_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_DRAG_CONTEXT)) +#define GDK_X11_DRAG_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_DRAG_CONTEXT, GdkX11DragContextClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11DragContext GdkX11DragContext; +#else +typedef GdkDragContext GdkX11DragContext; +#endif +typedef struct _GdkX11DragContextClass GdkX11DragContextClass; + +GType gdk_x11_drag_context_get_type (void); + +G_END_DECLS + +#endif /* __GDK_X11_DRAG_CONTEXT_H__ */ diff --git a/gdk/x11/gdkx11keys.h b/gdk/x11/gdkx11keys.h new file mode 100644 index 0000000000..0b10216d04 --- /dev/null +++ b/gdk/x11/gdkx11keys.h @@ -0,0 +1,49 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_KEYS_H__ +#define __GDK_X11_KEYS_H__ + +#include + +G_BEGIN_DECLS + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Keymap GdkX11Keymap; +#else +typedef GdkKeymap GdkX11Keymap; +#endif +typedef struct _GdkX11KeymapClass GdkX11KeymapClass; + +#define GDK_TYPE_X11_KEYMAP (gdk_x11_keymap_get_type()) +#define GDK_X11_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_KEYMAP, GdkX11Keymap)) +#define GDK_X11_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_KEYMAP, GdkX11KeymapClass)) +#define GDK_IS_X11_KEYMAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_KEYMAP)) +#define GDK_IS_X11_KEYMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_KEYMAP)) +#define GDK_X11_KEYMAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_KEYMAP, GdkX11KeymapClass)) + +GType gdk_x11_keymap_get_type (void); + +G_END_DECLS + +#endif /* __GDK_X11_KEYMAP_H__ */ diff --git a/gdk/x11/gdkx11property.h b/gdk/x11/gdkx11property.h new file mode 100644 index 0000000000..64fb97865d --- /dev/null +++ b/gdk/x11/gdkx11property.h @@ -0,0 +1,59 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_PROPERTY_H__ +#define __GDK_X11_PROPERTY_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +/* Functions to get the X Atom equivalent to the GdkAtom */ +Atom gdk_x11_atom_to_xatom_for_display (GdkDisplay *display, + GdkAtom atom); +GdkAtom gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, + Atom xatom); +Atom gdk_x11_get_xatom_by_name_for_display (GdkDisplay *display, + const gchar *atom_name); +G_CONST_RETURN gchar *gdk_x11_get_xatom_name_for_display (GdkDisplay *display, + Atom xatom); +#ifndef GDK_MULTIHEAD_SAFE +Atom gdk_x11_atom_to_xatom (GdkAtom atom); +GdkAtom gdk_x11_xatom_to_atom (Atom xatom); +Atom gdk_x11_get_xatom_by_name (const gchar *atom_name); +G_CONST_RETURN gchar *gdk_x11_get_xatom_name (Atom xatom); +#endif + +G_END_DECLS + +#endif /* __GDK_X11_PROPERTY_H__ */ diff --git a/gdk/x11/gdkx11screen.h b/gdk/x11/gdkx11screen.h new file mode 100644 index 0000000000..cb709a30e0 --- /dev/null +++ b/gdk/x11/gdkx11screen.h @@ -0,0 +1,104 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_SCREEN_H__ +#define __GDK_X11_SCREEN_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_SCREEN (gdk_x11_screen_get_type ()) +#define GDK_X11_SCREEN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_SCREEN, GdkX11Screen)) +#define GDK_X11_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_SCREEN, GdkX11ScreenClass)) +#define GDK_IS_X11_SCREEN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_SCREEN)) +#define GDK_IS_X11_SCREEN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_SCREEN)) +#define GDK_X11_SCREEN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_SCREEN, GdkX11ScreenClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Screen GdkX11Screen; +#else +typedef GdkScreen GdkX11Screen; +#endif +typedef struct _GdkX11ScreenClass GdkX11ScreenClass; + +GType gdk_x11_screen_get_type (void); + +Screen * gdk_x11_screen_get_xscreen (GdkScreen *screen); +int gdk_x11_screen_get_screen_number (GdkScreen *screen); + +const char* gdk_x11_screen_get_window_manager_name (GdkScreen *screen); + +#ifndef GDK_MULTIHEAD_SAFE +gint gdk_x11_get_default_screen (void); +#endif + +/** + * GDK_SCREEN_XDISPLAY: + * @screen: a #GdkScreen + * + * Returns the display of a X11 #GdkScreen. + * + * Returns: an Xlib Display* + */ +#define GDK_SCREEN_XDISPLAY(screen) (gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen))) + +/** + * GDK_SCREEN_XSCREEN: + * @screen: a #GdkScreen + * + * Returns the screen of a X11 #GdkScreen. + * + * Returns: an Xlib Screen* + */ +#define GDK_SCREEN_XSCREEN(screen) (gdk_x11_screen_get_xscreen (screen)) + +/** + * GDK_SCREEN_XNUMBER: + * @screen: a #GdkScreen + * + * Returns the index of a X11 #GdkScreen. + * + * Returns: the position of @screen among the screens of its display + */ +#define GDK_SCREEN_XNUMBER(screen) (gdk_x11_screen_get_screen_number (screen)) + +gboolean gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen, + GdkAtom property); + +XID gdk_x11_screen_get_monitor_output (GdkScreen *screen, + gint monitor_num); + +G_END_DECLS + +#endif /* __GDK_X11_SCREEN_H__ */ diff --git a/gdk/x11/gdkx11selection.h b/gdk/x11/gdkx11selection.h new file mode 100644 index 0000000000..03b7ef045d --- /dev/null +++ b/gdk/x11/gdkx11selection.h @@ -0,0 +1,64 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_SELECTION_H__ +#define __GDK_X11_SELECTION_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +gint gdk_x11_display_text_property_to_text_list (GdkDisplay *display, + GdkAtom encoding, + gint format, + const guchar *text, + gint length, + gchar ***list); +void gdk_x11_free_text_list (gchar **list); +gint gdk_x11_display_string_to_compound_text (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length); +gboolean gdk_x11_display_utf8_to_compound_text (GdkDisplay *display, + const gchar *str, + GdkAtom *encoding, + gint *format, + guchar **ctext, + gint *length); +void gdk_x11_free_compound_text (guchar *ctext); + +G_END_DECLS + +#endif /* __GDK_X11_SELECTION_H__ */ diff --git a/gdk/quartz/gdkim-quartz.c b/gdk/x11/gdkx11utils.h similarity index 55% rename from gdk/quartz/gdkim-quartz.c rename to gdk/x11/gdkx11utils.h index 621bda9e5a..f00ee5b653 100644 --- a/gdk/quartz/gdkim-quartz.c +++ b/gdk/x11/gdkx11utils.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -24,18 +24,39 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#include "config.h" +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif -#include +#ifndef __GDK_X11_UTILS_H__ +#define __GDK_X11_UTILS_H__ -#include "gdkinternals.h" -#include "gdkprivate-quartz.h" +#include -gchar* -gdk_set_locale (void) -{ - if (!setlocale (LC_ALL,"")) - g_warning ("locale not supported by C library"); - - return setlocale (LC_ALL, NULL); -} +#include +#include + +G_BEGIN_DECLS + +#ifndef GDK_MULTIHEAD_SAFE +Window gdk_x11_get_default_root_xwindow (void); +Display *gdk_x11_get_default_xdisplay (void); +#endif + +#ifndef GDK_MULTIHEAD_SAFE +/** + * GDK_ROOT_WINDOW: + * + * Obtains the Xlib window id of the root window of the current screen. + */ +#define GDK_ROOT_WINDOW() (gdk_x11_get_default_root_xwindow ()) +#endif + +#ifndef GDK_MULTIHEAD_SAFE +void gdk_x11_grab_server (void); +void gdk_x11_ungrab_server (void); +#endif + +G_END_DECLS + +#endif /* __GDK_X11_UTILS_H__ */ diff --git a/gdk/x11/gdkx11visual.h b/gdk/x11/gdkx11visual.h new file mode 100644 index 0000000000..b356df56c6 --- /dev/null +++ b/gdk/x11/gdkx11visual.h @@ -0,0 +1,66 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_VISUAL_H__ +#define __GDK_X11_VISUAL_H__ + +#include + +#include +#include + +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)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Visual GdkX11Visual; +#else +typedef GdkVisual GdkX11Visual; +#endif +typedef struct _GdkX11VisualClass GdkX11VisualClass; + +GType gdk_x11_visual_get_type (void); + +Visual * gdk_x11_visual_get_xvisual (GdkVisual *visual); + +#define GDK_VISUAL_XVISUAL(visual) (gdk_x11_visual_get_xvisual (visual)) + +GdkVisual* gdk_x11_screen_lookup_visual (GdkScreen *screen, + VisualID xvisualid); + +G_END_DECLS + +#endif /* __GDK_X11_VISUAL_H__ */ diff --git a/gdk/x11/gdkx11window.h b/gdk/x11/gdkx11window.h new file mode 100644 index 0000000000..ecfbea5c8d --- /dev/null +++ b/gdk/x11/gdkx11window.h @@ -0,0 +1,91 @@ +/* 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * 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/. + */ + +#if !defined (__GDKX_H_INSIDE__) && !defined (GDK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GDK_X11_WINDOW_H__ +#define __GDK_X11_WINDOW_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +#define GDK_TYPE_X11_WINDOW (gdk_x11_window_get_type ()) +#define GDK_X11_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_X11_WINDOW, GdkX11Window)) +#define GDK_X11_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_X11_WINDOW, GdkX11WindowClass)) +#define GDK_IS_X11_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_X11_WINDOW)) +#define GDK_IS_X11_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_X11_WINDOW)) +#define GDK_X11_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_X11_WINDOW, GdkX11WindowClass)) + +#ifdef GDK_COMPILATION +typedef struct _GdkX11Window GdkX11Window; +#else +typedef GdkWindow GdkX11Window; +#endif +typedef struct _GdkX11WindowClass GdkX11WindowClass; + +GType gdk_x11_window_get_type (void); + +Window gdk_x11_window_get_xid (GdkWindow *window); +void gdk_x11_window_set_user_time (GdkWindow *window, + guint32 timestamp); +void gdk_x11_window_move_to_current_desktop (GdkWindow *window); + +/** + * GDK_WINDOW_XDISPLAY: + * @win: a #GdkWindow. + * + * Returns the display of a #GdkWindow. + * + * Returns: an Xlib Display*. + */ +#define GDK_WINDOW_XDISPLAY(win) (GDK_DISPLAY_XDISPLAY (gdk_window_get_display (win))) + +/** + * GDK_WINDOW_XID: + * @win: a #GdkWindow. + * + * Returns the X window belonging to a #GdkWindow. + * + * Returns: the Xlib Window of @win. + */ +#define GDK_WINDOW_XID(win) (gdk_x11_window_get_xid (win)) + +guint32 gdk_x11_get_server_time (GdkWindow *window); + +GdkWindow *gdk_x11_window_foreign_new_for_display (GdkDisplay *display, + Window window); +GdkWindow *gdk_x11_window_lookup_for_display (GdkDisplay *display, + Window window); + +G_END_DECLS + +#endif /* __GDK_X11_WINDOW_H__ */ diff --git a/gdk/x11/gdkxftdefaults.c b/gdk/x11/gdkxftdefaults.c index 0cc9972581..ca598e6532 100644 --- a/gdk/x11/gdkxftdefaults.c +++ b/gdk/x11/gdkxftdefaults.c @@ -54,7 +54,7 @@ #endif #include -#include +#include static gint parse_boolean (char *v) @@ -151,33 +151,32 @@ get_integer_default (Display *dpy, static void init_xft_settings (GdkScreen *screen) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); Display *xdisplay = GDK_SCREEN_XDISPLAY (screen); - int xscreen = GDK_SCREEN_XNUMBER (screen); double dpi_double; - if (screen_x11->xft_init) + if (x11_screen->xft_init) return; - screen_x11->xft_init = TRUE; + x11_screen->xft_init = TRUE; - if (!get_boolean_default (xdisplay, "antialias", &screen_x11->xft_antialias)) - screen_x11->xft_antialias = TRUE; + if (!get_boolean_default (xdisplay, "antialias", &x11_screen->xft_antialias)) + x11_screen->xft_antialias = TRUE; - if (!get_boolean_default (xdisplay, "hinting", &screen_x11->xft_hinting)) - screen_x11->xft_hinting = TRUE; + if (!get_boolean_default (xdisplay, "hinting", &x11_screen->xft_hinting)) + x11_screen->xft_hinting = TRUE; - if (!get_integer_default (xdisplay, "hintstyle", &screen_x11->xft_hintstyle)) - screen_x11->xft_hintstyle = FC_HINT_FULL; + if (!get_integer_default (xdisplay, "hintstyle", &x11_screen->xft_hintstyle)) + x11_screen->xft_hintstyle = FC_HINT_FULL; - if (!get_integer_default (xdisplay, "rgba", &screen_x11->xft_rgba)) - screen_x11->xft_rgba = FC_RGBA_UNKNOWN; + if (!get_integer_default (xdisplay, "rgba", &x11_screen->xft_rgba)) + x11_screen->xft_rgba = FC_RGBA_UNKNOWN; if (!get_double_default (xdisplay, "dpi", &dpi_double)) - dpi_double = (((double) DisplayHeight (xdisplay, xscreen) * 25.4) / - (double) DisplayHeightMM (xdisplay, xscreen)); + dpi_double = (((double) DisplayHeight (xdisplay, x11_screen->screen_num) * 25.4) / + (double) DisplayHeightMM (xdisplay, x11_screen->screen_num)); - screen_x11->xft_dpi = (int)(0.5 + PANGO_SCALE * dpi_double); + x11_screen->xft_dpi = (int)(0.5 + PANGO_SCALE * dpi_double); } gboolean @@ -185,7 +184,7 @@ _gdk_x11_get_xft_setting (GdkScreen *screen, const gchar *name, GValue *value) { - GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); + GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); if (strncmp (name, "gtk-xft-", 8) != 0) return FALSE; @@ -196,19 +195,19 @@ _gdk_x11_get_xft_setting (GdkScreen *screen, if (strcmp (name, "antialias") == 0) { - g_value_set_int (value, screen_x11->xft_antialias); + g_value_set_int (value, x11_screen->xft_antialias); return TRUE; } else if (strcmp (name, "hinting") == 0) { - g_value_set_int (value, screen_x11->xft_hinting); + g_value_set_int (value, x11_screen->xft_hinting); return TRUE; } else if (strcmp (name, "hintstyle") == 0) { const char *str; - switch (screen_x11->xft_hintstyle) + switch (x11_screen->xft_hintstyle) { case FC_HINT_NONE: str = "hintnone"; @@ -233,7 +232,7 @@ _gdk_x11_get_xft_setting (GdkScreen *screen, { const char *str; - switch (screen_x11->xft_rgba) + switch (x11_screen->xft_rgba) { case FC_RGBA_NONE: str = "none"; @@ -260,7 +259,7 @@ _gdk_x11_get_xft_setting (GdkScreen *screen, } else if (strcmp (name, "dpi") == 0) { - g_value_set_int (value, screen_x11->xft_dpi); + g_value_set_int (value, x11_screen->xft_dpi); return TRUE; } diff --git a/gdk/x11/gdkxid.c b/gdk/x11/gdkxid.c index 52b86c9e64..cb6639cb9e 100644 --- a/gdk/x11/gdkxid.c +++ b/gdk/x11/gdkxid.c @@ -26,99 +26,11 @@ #include "config.h" -#include "gdkx.h" #include "gdkprivate-x11.h" #include "gdkdisplay-x11.h" #include -static guint gdk_xid_hash (XID *xid); -static gboolean gdk_xid_equal (XID *a, - XID *b); - - -void -_gdk_xid_table_insert (GdkDisplay *display, - XID *xid, - gpointer data) -{ - GdkDisplayX11 *display_x11; - - g_return_if_fail (xid != NULL); - g_return_if_fail (GDK_IS_DISPLAY (display)); - - display_x11 = GDK_DISPLAY_X11 (display); - - if (!display_x11->xid_ht) - display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash, - (GEqualFunc) gdk_xid_equal); - - if (g_hash_table_lookup (display_x11->xid_ht, xid)) - g_warning ("XID collision, trouble ahead"); - - g_hash_table_insert (display_x11->xid_ht, xid, data); -} - -void -_gdk_xid_table_remove (GdkDisplay *display, - XID xid) -{ - GdkDisplayX11 *display_x11; - - g_return_if_fail (GDK_IS_DISPLAY (display)); - - display_x11 = GDK_DISPLAY_X11 (display); - - if (display_x11->xid_ht) - g_hash_table_remove (display_x11->xid_ht, &xid); -} - -/** - * gdk_xid_table_lookup_for_display: - * @display: the #GdkDisplay. - * @xid: an X id. - * - * Returns the GDK object associated with the given X id. - * - * Return value: (transfer none): the associated #GdkWindow, or %NULL - * of no object is associated with the X id. - * - * Since: 2.2 - */ -gpointer -gdk_xid_table_lookup_for_display (GdkDisplay *display, - XID xid) -{ - GdkDisplayX11 *display_x11; - gpointer data = NULL; - - g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - - display_x11 = GDK_DISPLAY_X11 (display); - - if (display_x11->xid_ht) - data = g_hash_table_lookup (display_x11->xid_ht, &xid); - - return data; -} - - -/** - * gdk_xid_table_lookup: - * @xid: an X id. - * - * Returns the Gdk object associated with the given X id for the default - * display. - * - * Return value: (transfer none): the associated #GdkWindow, or %NULL - * if no object is associated with the X id. - */ -gpointer -gdk_xid_table_lookup (XID xid) -{ - return gdk_xid_table_lookup_for_display (gdk_display_get_default (), xid); -} - static guint gdk_xid_hash (XID *xid) { @@ -126,8 +38,72 @@ gdk_xid_hash (XID *xid) } static gboolean -gdk_xid_equal (XID *a, - XID *b) +gdk_xid_equal (XID *a, XID *b) { return (*a == *b); } + +void +_gdk_x11_display_add_window (GdkDisplay *display, + XID *xid, + GdkWindow *data) +{ + GdkX11Display *display_x11; + + g_return_if_fail (xid != NULL); + g_return_if_fail (GDK_IS_DISPLAY (display)); + + display_x11 = GDK_X11_DISPLAY (display); + + if (!display_x11->xid_ht) + display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash, + (GEqualFunc) gdk_xid_equal); + + if (g_hash_table_lookup (display_x11->xid_ht, xid)) + g_warning ("XID collision, trouble ahead"); + + g_hash_table_insert (display_x11->xid_ht, xid, data); +} + +void +_gdk_x11_display_remove_window (GdkDisplay *display, + XID xid) +{ + GdkX11Display *display_x11; + + g_return_if_fail (GDK_IS_DISPLAY (display)); + + display_x11 = GDK_X11_DISPLAY (display); + + if (display_x11->xid_ht) + g_hash_table_remove (display_x11->xid_ht, &xid); +} + +/** + * gdk_x11_window_lookup_for_display: + * @display: the #GdkDisplay corresponding to the window handle + * @window: an XLib Window + * + * Looks up the #GdkWindow that wraps the given native window handle. + * + * Return value: (transfer none): the #GdkWindow wrapper for the native + * window, or %NULL if there is none. + * + * Since: 2.24 + */ +GdkWindow * +gdk_x11_window_lookup_for_display (GdkDisplay *display, + Window window) +{ + GdkX11Display *display_x11; + GdkWindow *data = NULL; + + g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); + + display_x11 = GDK_X11_DISPLAY (display); + + if (display_x11->xid_ht) + data = g_hash_table_lookup (display_x11->xid_ht, &window); + + return data; +} diff --git a/gdk/x11/xsettings-common.h b/gdk/x11/xsettings-common.h index de7367a6c2..dcd87f4fa4 100644 --- a/gdk/x11/xsettings-common.h +++ b/gdk/x11/xsettings-common.h @@ -31,22 +31,22 @@ extern "C" { /* Renames for GDK inclusion */ -#define xsettings_byte_order _gdk_xsettings_byte_order -#define xsettings_client_destroy _gdk_xsettings_client_destroy -#define xsettings_client_get_setting _gdk_xsettings_client_get_setting -#define xsettings_client_new _gdk_xsettings_client_new -#define xsettings_client_new_with_grab_funcs _gdk_xsettings_client_new_with_grab_funcs -#define xsettings_client_set_grab_func _gdk_xsettings_client_set_grab_func -#define xsettings_client_set_ungrab_func _gdk_xsettings_client_set_ungrab_func -#define xsettings_client_process_event _gdk_xsettings_client_process_event -#define xsettings_list_copy _gdk_xsettings_list_copy -#define xsettings_list_delete _gdk_xsettings_list_delete -#define xsettings_list_free _gdk_xsettings_list_free -#define xsettings_list_insert _gdk_xsettings_list_insert -#define xsettings_list_lookup _gdk_xsettings_list_lookup -#define xsettings_setting_copy _gdk_xsettings_setting_copy -#define xsettings_setting_equal _gdk_xsettings_setting_equal -#define xsettings_setting_free _gdk_xsettings_setting_free +#define xsettings_byte_order _gdk_x11_xsettings_byte_order +#define xsettings_client_destroy _gdk_x11_xsettings_client_destroy +#define xsettings_client_get_setting _gdk_x11_xsettings_client_get_setting +#define xsettings_client_new _gdk_x11_xsettings_client_new +#define xsettings_client_new_with_grab_funcs _gdk_x11_xsettings_client_new_with_grab_funcs +#define xsettings_client_set_grab_func _gdk_x11_xsettings_client_set_grab_func +#define xsettings_client_set_ungrab_func _gdk_x11_xsettings_client_set_ungrab_func +#define xsettings_client_process_event _gdk_x11_xsettings_client_process_event +#define xsettings_list_copy _gdk_x11_xsettings_list_copy +#define xsettings_list_delete _gdk_x11_xsettings_list_delete +#define xsettings_list_free _gdk_x11_xsettings_list_free +#define xsettings_list_insert _gdk_x11_xsettings_list_insert +#define xsettings_list_lookup _gdk_x11_xsettings_list_lookup +#define xsettings_setting_copy _gdk_x11_xsettings_setting_copy +#define xsettings_setting_equal _gdk_x11_xsettings_setting_equal +#define xsettings_setting_free _gdk_x11_xsettings_setting_free typedef struct _XSettingsBuffer XSettingsBuffer; diff --git a/gtk+-3.0-uninstalled.pc.in b/gtk+-3.0-uninstalled.pc.in index 238ad6ff9e..dbccc16111 100644 --- a/gtk+-3.0-uninstalled.pc.in +++ b/gtk+-3.0-uninstalled.pc.in @@ -1,10 +1,10 @@ -target=@gdktarget@ +targets=@GDK_BACKENDS@ gtk_binary_version=@GTK_BINARY_VERSION@ Name: GTK+ Uninstalled Description: GTK+ Graphical UI Library (${target} target), Not Installed Version: @VERSION@ -Requires: gdk-${target}-@GTK_API_VERSION@-uninstalled @GTK_PACKAGES@ -Libs: ${pc_top_builddir}/${pcfiledir}/gtk/libgtk-${target}-@GTK_API_VERSION@.la @GTK_EXTRA_LIBS@ +Requires: gdk-@GTK_API_VERSION@-uninstalled @GTK_PACKAGES@ +Libs: ${pc_top_builddir}/${pcfiledir}/gtk/libgtk-@GTK_API_VERSION@.la @GTK_EXTRA_LIBS@ Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@ -I${pc_top_builddir}/${pcfiledir} @GTK_EXTRA_CFLAGS@ diff --git a/gtk+-3.0.pc.in b/gtk+-3.0.pc.in index ccb8c7e107..cc318822a8 100644 --- a/gtk+-3.0.pc.in +++ b/gtk+-3.0.pc.in @@ -2,14 +2,14 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ -target=@gdktarget@ +targets=@GDK_BACKENDS@ gtk_binary_version=@GTK_BINARY_VERSION@ gtk_host=@host@ Name: GTK+ -Description: GTK+ Graphical UI Library (${target} target) +Description: GTK+ Graphical UI Library Version: @VERSION@ -Requires: gdk-${target}-@GTK_API_VERSION@ @GTK_PACKAGES@ -Libs: -L${libdir} -lgtk-${target}-@GTK_API_VERSION@ @GTK_EXTRA_LIBS@ +Requires: gdk-@GTK_API_VERSION@ @GTK_PACKAGES@ +Libs: -L${libdir} -lgtk-@GTK_API_VERSION@ @GTK_EXTRA_LIBS@ Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ @GTK_EXTRA_CFLAGS@ -DGSEAL_ENABLE diff --git a/gtk+-unix-print-3.0.pc.in b/gtk+-unix-print-3.0.pc.in index 5b8462a209..8c0f32326c 100644 --- a/gtk+-unix-print-3.0.pc.in +++ b/gtk+-unix-print-3.0.pc.in @@ -2,7 +2,7 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ -target=@gdktarget@ +targets=@GDK_BACKENDS@ gtk_binary_version=@GTK_BINARY_VERSION@ gtk_host=@host@ @@ -10,5 +10,5 @@ gtk_host=@host@ Name: GTK+ Description: GTK+ Unix print support Version: @VERSION@ -Requires: gtk+-${target}-@GTK_API_VERSION@ @GTK_PACKAGES@ +Requires: gtk+-@GTK_API_VERSION@ @GTK_PACKAGES@ Cflags: -I${includedir}/gtk-@GTK_API_VERSION@/unix-print diff --git a/gtk/Makefile.am b/gtk/Makefile.am index d740dae1f7..04bbadd51e 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -3,7 +3,8 @@ include $(top_srcdir)/Makefile.decl -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = \ - --add-include-path=../gdk + --add-include-path=../gdk \ + --warn-all INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. \ @@ -57,8 +58,6 @@ INCLUDES = \ $(gtk_clipboard_dnd_c_sources_CFLAGS) \ $(INCLUDED_IMMODULE_DEFINE) -gtarget=$(gdktarget) - if PLATFORM_WIN32 no_undefined = -no-undefined endif @@ -101,7 +100,7 @@ endif # This places the generated .def file in srcdir, since it is expected to be there. # (The one from a tarball is) gtk.def: gtk.symbols - (echo -e EXPORTS; $(CPP) -P -DG_OS_WIN32 - <$(srcdir)/gtk.symbols | $(SED) -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gtk.def + $(AM_V_GEN) (echo -e EXPORTS; $(CPP) -P -DG_OS_WIN32 - <$(srcdir)/gtk.symbols | $(SED) -e '/^$$/d' -e 's/^/ /' -e 's/G_GNUC_[^ ]*//g') > $(srcdir)/gtk.def TESTS_ENVIRONMENT = srcdir="$(srcdir)" gtk_all_c_sources="$(gtk_all_c_sources)" if OS_LINUX @@ -109,8 +108,8 @@ TESTS = abicheck.sh endif libgtkincludedir = $(includedir)/gtk-3.0/gtk -libadd = \ - $(top_builddir)/gdk/$(gdktargetlib) \ +libadd = \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) deps = @@ -143,7 +142,7 @@ endif # GTK+ header files for public installation (non-generated, or generated # by configure) -gtk_public_h_sources = \ +gtk_public_h_sources = \ gtk.h \ gtkaboutdialog.h \ gtkaccelgroup.h \ @@ -152,15 +151,14 @@ gtk_public_h_sources = \ gtkaccessible.h \ gtkaction.h \ gtkactiongroup.h \ - gtkaccelgroupprivate.h \ gtkactivatable.h \ gtkadjustment.h \ gtkalignment.h \ gtkappchooser.h \ + gtkappchooserbutton.h \ gtkappchooserdialog.h \ - gtkappchooserbutton.h \ gtkappchooserwidget.h \ - gtkapplication.h \ + gtkapplication.h \ gtkarrow.h \ gtkaspectframe.h \ gtkassistant.h \ @@ -173,6 +171,10 @@ gtk_public_h_sources = \ gtkbuildable.h \ gtkbutton.h \ gtkcalendar.h \ + gtkcellarea.h \ + gtkcellareacontext.h \ + gtkcellareabox.h \ + gtkcellareaboxcontextprivate.h \ gtkcelleditable.h \ gtkcelllayout.h \ gtkcellrenderer.h \ @@ -251,6 +253,7 @@ gtk_public_h_sources = \ gtkmodules.h \ gtkmountoperation.h \ gtknotebook.h \ + gtknumerableicon.h \ gtkoffscreenwindow.h \ gtkorientable.h \ gtkpagesetup.h \ @@ -269,12 +272,12 @@ gtk_public_h_sources = \ gtkrange.h \ gtkrc.h \ gtkrecentaction.h \ - gtkrecentchooser.h \ + gtkrecentchooser.h \ gtkrecentchooserdialog.h \ gtkrecentchoosermenu.h \ gtkrecentchooserwidget.h \ gtkrecentfilter.h \ - gtkrecentmanager.h \ + gtkrecentmanager.h \ gtkscale.h \ gtkscalebutton.h \ gtkscrollable.h \ @@ -284,8 +287,8 @@ gtk_public_h_sources = \ gtkseparator.h \ gtkseparatormenuitem.h \ gtkseparatortoolitem.h \ - gtkshow.h \ gtksettings.h \ + gtkshow.h \ gtksizegroup.h \ gtksizerequest.h \ gtksocket.h \ @@ -303,6 +306,7 @@ gtk_public_h_sources = \ gtktable.h \ gtktearoffmenuitem.h \ gtktestutils.h \ + gtktextattributes.h \ gtktextbuffer.h \ gtktextbufferrichtext.h \ gtktextchild.h \ @@ -332,7 +336,6 @@ gtk_public_h_sources = \ gtktreestore.h \ gtktreeview.h \ gtktreeviewcolumn.h \ - gtktypeutils.h \ gtkuimanager.h \ gtkvbbox.h \ gtkvbox.h \ @@ -347,7 +350,7 @@ gtk_public_h_sources = \ gtkwindow.h if OS_UNIX -gtk_unix_print_public_h_sources = \ +gtk_unix_print_public_h_sources = \ gtkpagesetupunixdialog.h \ gtkprintunixdialog.h \ gtkprinter.h \ @@ -357,33 +360,32 @@ endif # Installed header files without compatibility guarantees # that are not included in gtk/gtk.h -gtk_semi_private_h_sources = \ +gtk_semi_private_h_sources = \ gtktextlayout.h if ENABLE_PACKAGEKIT gtk_appchooser_impl_h_sources = \ - gtkappchooseronlinepk.h \ - $(NULL) + gtkappchooseronlinepk.h endif if ENABLE_PACKAGEKIT gtk_appchooser_impl_c_sources = \ - gtkappchooseronlinepk.c \ - $(NULL) + gtkappchooseronlinepk.c endif # GTK+ header files that don't get installed gtk_private_h_sources = \ - gtk9slice.h \ + gtk9slice.h \ + gtkaccelgroupprivate.h \ + gtkanimationdescription.h \ + gtkappchooserprivate.h \ + gtkappchoosermodule.h \ + gtkappchooseronline.h \ + gtkbuilderprivate.h \ gtkbuttonprivate.h \ - gtkquery.h \ - gtksearchengine.h \ - gtksearchenginesimple.h \ + gtkcustompaperunixdialog.h \ gtkdndcursors.h \ gtkentryprivate.h \ - gtkanimationdescription.h \ - gtkbuilderprivate.h \ - gtkcustompaperunixdialog.h\ gtkfilechooserdefault.h \ gtkfilechooserembed.h \ gtkfilechooserentry.h \ @@ -392,30 +394,36 @@ gtk_private_h_sources = \ gtkfilesystem.h \ gtkfilesystemmodel.h \ gtkiconcache.h \ - gtkimcontextsimpleseqs.h \ + gtkimcontextsimpleseqs.h \ gtkintl.h \ gtkkeyhash.h \ + gtkmainprivate.h \ gtkmenuprivate.h \ + gtkmenuitemprivate.h \ + gtkmenushellprivate.h \ gtkmnemonichash.h \ gtkmodifierstyle.h \ gtkmountoperationprivate.h \ - gtkappchooserprivate.h \ - gtkappchoosermodule.h \ - gtkappchooseronline.h \ + gtknumerableiconprivate.h \ gtkpango.h \ gtkpathbar.h \ gtkplugprivate.h \ - gtkprintoperation-private.h\ + gtkprintoperation-private.h \ gtkprintutils.h \ gtkprivate.h \ + gtkquery.h \ gtkrbtree.h \ gtkrecentchooserdefault.h \ gtkrecentchooserprivate.h \ - gtkrecentchooserutils.h \ + gtkrecentchooserutils.h \ + gtksearchengine.h \ + gtksearchenginesimple.h \ + gtkselectionprivate.h \ + gtksettingsprivate.h \ gtksizegroup-private.h \ gtksocketprivate.h \ gtktextbtree.h \ - gtktextbufferserialize.h\ + gtktextbufferserialize.h \ gtktextchildprivate.h \ gtktextiterprivate.h \ gtktextmarkprivate.h \ @@ -424,17 +432,17 @@ gtk_private_h_sources = \ gtktexttypes.h \ gtktextutil.h \ gtktimeline.h \ - gtkthemes.h \ gtktoolpaletteprivate.h \ gtktreedatalist.h \ gtktreeprivate.h \ - gtkwindow-decorate.h \ gtkwidgetprivate.h \ + gtkwindowprivate.h \ + gtktreemenu.h \ $(gtk_clipboard_dnd_h_sources) \ $(gtk_appchooser_impl_h_sources) # GTK+ C sources to build the library from -gtk_base_c_sources = \ +gtk_base_c_sources = \ gtk9slice.c \ gtkquery.c \ gtksearchengine.c \ @@ -452,11 +460,11 @@ gtk_base_c_sources = \ gtkalignment.c \ gtkappchooser.c \ gtkappchooserwidget.c \ - gtkappchooserbutton.c \ + gtkappchooserbutton.c \ gtkappchooserdialog.c \ gtkappchoosermodule.c \ gtkappchooseronline.c \ - gtkapplication.c \ + gtkapplication.c \ gtkanimationdescription.c \ gtkarrow.c \ gtkaspectframe.c \ @@ -471,6 +479,10 @@ gtk_base_c_sources = \ gtkbuilderparser.c \ gtkbutton.c \ gtkcalendar.c \ + gtkcellarea.c \ + gtkcellareabox.c \ + gtkcellareaboxcontext.c \ + gtkcellareacontext.c \ gtkcelleditable.c \ gtkcelllayout.c \ gtkcellrenderer.c \ @@ -478,8 +490,8 @@ gtk_base_c_sources = \ gtkcellrenderercombo.c \ gtkcellrendererpixbuf.c \ gtkcellrendererprogress.c \ - gtkcellrendererspin.c \ - gtkcellrendererspinner.c\ + gtkcellrendererspin.c \ + gtkcellrendererspinner.c \ gtkcellrenderertext.c \ gtkcellrenderertoggle.c \ gtkcellview.c \ @@ -489,7 +501,7 @@ gtk_base_c_sources = \ gtkcolorsel.c \ gtkcolorseldialog.c \ gtkcombobox.c \ - gtkcomboboxtext.c \ + gtkcomboboxtext.c \ gtkcontainer.c \ gtkcssprovider.c \ gtkdialog.c \ @@ -557,6 +569,7 @@ gtk_base_c_sources = \ gtkmodules.c \ gtkmountoperation.c \ gtknotebook.c \ + gtknumerableicon.c \ gtkoffscreenwindow.c \ gtkorientable.c \ gtkpagesetup.c \ @@ -580,13 +593,13 @@ gtk_base_c_sources = \ gtkrc.c \ gtkrecentaction.c \ gtkrecentchooserdefault.c \ - gtkrecentchooserdialog.c\ + gtkrecentchooserdialog.c \ gtkrecentchoosermenu.c \ - gtkrecentchooserwidget.c\ - gtkrecentchooserutils.c \ - gtkrecentchooser.c \ - gtkrecentfilter.c \ - gtkrecentmanager.c \ + gtkrecentchooserwidget.c \ + gtkrecentchooserutils.c \ + gtkrecentchooser.c \ + gtkrecentfilter.c \ + gtkrecentmanager.c \ gtkscale.c \ gtkscalebutton.c \ gtkscrollable.c \ @@ -615,10 +628,11 @@ gtk_base_c_sources = \ gtktable.c \ gtktearoffmenuitem.c \ gtktestutils.c \ + gtktextattributes.c \ gtktextbtree.c \ gtktextbuffer.c \ gtktextbufferrichtext.c \ - gtktextbufferserialize.c\ + gtktextbufferserialize.c \ gtktextchild.c \ gtktextdisplay.c \ gtktextiter.c \ @@ -630,7 +644,6 @@ gtk_base_c_sources = \ gtktexttypes.c \ gtktextutil.c \ gtktextview.c \ - gtkthemes.c \ gtkthemingengine.c \ gtktimeline.c \ gtktoggleaction.c \ @@ -645,6 +658,7 @@ gtk_base_c_sources = \ gtktooltip.c \ gtktreedatalist.c \ gtktreednd.c \ + gtktreemenu.c \ gtktreemodel.c \ gtktreemodelfilter.c \ gtktreemodelsort.c \ @@ -654,7 +668,6 @@ gtk_base_c_sources = \ gtktreeview.c \ gtktreeviewcolumn.c \ gtktypebuiltins.c \ - gtktypeutils.c \ gtkuimanager.c \ gtkvbbox.c \ gtkvbox.c \ @@ -666,7 +679,6 @@ gtk_base_c_sources = \ gtkvseparator.c \ gtkwidget.c \ gtkwidgetpath.c \ - gtkwindow-decorate.c \ gtkwindow.c \ $(gtk_clipboard_dnd_c_sources) \ $(gtk_appchooser_impl_c_sources) @@ -674,7 +686,7 @@ gtk_base_c_sources = \ gtk_c_sources = $(gtk_base_c_sources) gtk_all_c_sources = $(gtk_base_c_sources) -gtk_os_unix_c_sources = \ +gtk_os_unix_c_sources = \ gtkcustompaperunixdialog.c \ gtkpagesetupunixdialog.c \ gtkprinter.c \ @@ -710,38 +722,44 @@ gtk_private_h_sources += gtkprint-win32.h gtk_c_sources += $(gtk_os_win32_c_sources) endif -gtk_use_x11_c_sources = \ - gtkplug-x11.c \ - gtksocket-x11.c \ - gtkxembed.c \ - gtktrayicon-x11.c \ +gtk_use_x11_c_sources = \ + gtkplug-x11.c \ + gtksocket-x11.c \ + gtkxembed.c \ + gtktrayicon-x11.c \ gtkmountoperation-x11.c -gtk_use_win32_c_sources = \ - gtkplug-win32.c \ - gtksocket-win32.c \ - gtkwin32embed.c \ - gtkwin32embedwidget.c \ +gtk_use_win32_c_sources = \ + gtkplug-win32.c \ + gtksocket-win32.c \ + gtkwin32embed.c \ + gtkwin32embedwidget.c \ gtkmountoperation-stub.c -gtk_use_quartz_c_sources = \ +gtk_use_quartz_c_sources = \ gtksearchenginequartz.c \ gtkplug-stub.c \ gtksocket-stub.c \ gtkmountoperation-stub.c -gtk_use_stub_c_sources = \ - gtkplug-stub.c \ - gtksocket-stub.c \ +gtk_use_stub_c_sources = \ + gtkplug-stub.c \ + gtksocket-stub.c \ gtkmountoperation-stub.c gtk_all_c_sources += $(gtk_use_x11_c_sources) $(gtk_use_win32_c_sources) $(gtk_use_quartz_c_sources) $(gtk_use_stub_c_sources) if USE_X11 -gtk_private_h_sources += gtkxembed.h gtktrayicon.h xembed.h +gtk_private_h_sources += \ + gtkxembed.h \ + gtktrayicon.h \ + xembed.h gtk_c_sources += $(gtk_use_x11_c_sources) else if USE_WIN32 -gtk_private_h_sources += gtkwin32embed.h gtkwin32embedwidget.h +gtk_private_h_sources += \ + gtkwin32embed.h \ + gtkwin32embedwidget.h gtk_c_sources += $(gtk_use_win32_c_sources) else if USE_QUARTZ -gtk_private_h_sources += gtksearchenginequartz.h +gtk_private_h_sources += \ + gtksearchenginequartz.h gtk_c_sources += $(gtk_use_quartz_c_sources) gtk_use_quartz_c_sources_CFLAGS = "-xobjective-c" else @@ -751,11 +769,16 @@ endif endif if USE_QUARTZ -gtk_clipboard_dnd_c_sources = gtkclipboard-quartz.c gtkdnd-quartz.c gtkquartz.c +gtk_clipboard_dnd_c_sources = \ + gtkclipboard-quartz.c \ + gtkdnd-quartz.c \ + gtkquartz.c gtk_clipboard_dnd_h_sources = gtkquartz.h gtk_clipboard_dnd_c_sources_CFLAGS = "-xobjective-c" else -gtk_clipboard_dnd_c_sources = gtkclipboard.c gtkdnd.c +gtk_clipboard_dnd_c_sources = \ + gtkclipboard.c \ + gtkdnd.c gtk_clipboard_dnd_c_sources_CFLAGS = endif EXTRA_DIST += gtkquartz.h @@ -794,7 +817,7 @@ gtk_extra_sources = \ paper_names.c \ paper_names_offsets.c \ gen-paper-names.c \ - gtkstatusicon-quartz.c \ + gtkstatusicon-quartz.c \ gtk.symbols \ gtkversion.h.in \ gtkmarshalers.list @@ -825,12 +848,12 @@ BUILT_SOURCES = $(gtk_built_sources) gtkmarshalers.h: stamp-gtkmarshalers.h @true stamp-gtkmarshalers.h: @REBUILD@ gtkmarshalers.list - $(GLIB_GENMARSHAL) --prefix=_gtk_marshal $(srcdir)/gtkmarshalers.list --header >> xgen-gmlh \ + $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_gtk_marshal $(srcdir)/gtkmarshalers.list --header >> xgen-gmlh \ && (cmp -s xgen-gmlh gtkmarshalers.h || cp xgen-gmlh gtkmarshalers.h) \ && rm -f xgen-gmlh \ - && echo timestamp > $(@F) + && echo timestamp > $(@F) gtkmarshalers.c: @REBUILD@ gtkmarshalers.list - (echo "#include \"gtkmarshalers.h\""; \ + $(AM_V_GEN) (echo "#include \"gtkmarshalers.h\""; \ $(GLIB_GENMARSHAL) --prefix=_gtk_marshal $(srcdir)/gtkmarshalers.list --body) >> xgen-gmlc \ && cp xgen-gmlc gtkmarshalers.c \ && rm -f xgen-gmlc @@ -838,19 +861,19 @@ gtkmarshalers.c: @REBUILD@ gtkmarshalers.list gtktypebuiltins.h: stamp-gtktypebuiltins.h @true stamp-gtktypebuiltins.h: @REBUILD@ $(gtk_public_h_sources) gtktypebuiltins.h.template - ( cd $(srcdir) && $(GLIB_MKENUMS) --template gtktypebuiltins.h.template \ + $(AM_V_GEN) ( cd $(srcdir) && $(GLIB_MKENUMS) --template gtktypebuiltins.h.template \ $(gtk_public_h_sources) ) >> xgen-gtbh \ && (cmp -s xgen-gtbh gtktypebuiltins.h || cp xgen-gtbh gtktypebuiltins.h ) \ && rm -f xgen-gtbh \ && echo timestamp > $(@F) gtktypebuiltins.c: @REBUILD@ $(gtk_public_h_sources) gtktypebuiltins.c.template - ( cd $(srcdir) && $(GLIB_MKENUMS) --template gtktypebuiltins.c.template \ + $(AM_V_GEN) ( cd $(srcdir) && $(GLIB_MKENUMS) --template gtktypebuiltins.c.template \ $(gtk_public_h_sources) ) > xgen-gtbc \ && cp xgen-gtbc gtktypebuiltins.c \ && rm -f xgen-gtbc -gtktypefuncs.c: @REBUILD@ $(top_srcdir)/gtk/*.h $(top_srcdir)/gdk/*.h Makefile - echo '#include ' > xgen-gtfsrc.c && \ +gtktypefuncs.c: @REBUILD@ stamp-gtktypebuiltins.h $(top_srcdir)/gtk/*.h $(top_srcdir)/gdk/*.h Makefile + $(AM_V_GEN) echo '#include ' > xgen-gtfsrc.c && \ ${CPP} $(DEFS) $(INCLUDES) -DGTK_ENABLE_BROKEN $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-gtfsrc.c | \ $(GREP) -o '\bg[td]k_[a-zA-Z0-9_]*_get_type\b' | \ sort | uniq | \ @@ -859,7 +882,7 @@ gtktypefuncs.c: @REBUILD@ $(top_srcdir)/gtk/*.h $(top_srcdir)/gdk/*.h Makefile gtktestutils.c: gtktypefuncs.c # target platform: -lib_LTLIBRARIES = $(gtktargetlib) +lib_LTLIBRARIES = libgtk-3.0.la gtkincludedir = $(includedir)/gtk-3.0/gtk gtkinclude_HEADERS = $(gtk_public_h_sources) $(gtk_semi_private_h_sources) $(gtk_built_public_sources) gtkversion.h @@ -867,39 +890,27 @@ gtkinclude_HEADERS = $(gtk_public_h_sources) $(gtk_semi_private_h_sources) $(gtk gtkunixprintincludedir = $(includedir)/gtk-3.0/unix-print/gtk gtkunixprintinclude_HEADERS = $(gtk_unix_print_public_h_sources) -libgtk_broadway_3_0_la_SOURCES = $(gtk_c_sources) -libgtk_x11_3_0_la_SOURCES = $(gtk_c_sources) -libgtk_win32_3_0_la_SOURCES = $(gtk_c_sources) -libgtk_quartz_3_0_la_SOURCES = $(gtk_c_sources) +libgtk_3_0_la_SOURCES = $(gtk_c_sources) +libgtk_3_0_la_LDFLAGS = $(libtool_opts) +libgtk_3_0_la_LIBADD = $(libadd) +libgtk_3_0_la_DEPENDENCIES = $(deps) -libgtk_broadway_3_0_la_LDFLAGS = $(libtool_opts) -libgtk_x11_3_0_la_LDFLAGS = $(libtool_opts) -libgtk_win32_3_0_la_LDFLAGS = $(libtool_opts) -Wl,-luuid -libgtk_quartz_3_0_la_LDFLAGS = $(libtool_opts) - -libgtk_broadway_3_0_la_LIBADD = $(libadd) -libgtk_x11_3_0_la_LIBADD = $(libadd) -libgtk_win32_3_0_la_LIBADD = $(libadd) -lole32 -lgdi32 -lcomdlg32 -lwinspool -lcomctl32 -libgtk_quartz_3_0_la_LIBADD = $(libadd) - -libgtk_broadway_3_0_la_DEPENDENCIES = $(deps) -libgtk_x11_3_0_la_DEPENDENCIES = $(deps) -libgtk_win32_3_0_la_DEPENDENCIES = $(gtk_def) $(gtk_win32_res) $(deps) -libgtk_quartz_3_0_la_DEPENDENCIES = $(deps) +#libgtk_win32_3_0_la_LDFLAGS = $(libtool_opts) -Wl,-luuid if USE_WIN32 +libgtk_3_0_la_LIBADD += -lole32 -lgdi32 -lcomdlg32 -lwinspool -lcomctl32 -luuid +libgtk_3_0_la_DEPENDENCIES += $(gtk_def) $(gtk_win32_res) $(deps) libgtk_target_ldflags = $(gtk_win32_res_ldflag) $(gtk_win32_symbols) endif -EXTRA_LTLIBRARIES = libgtk-broadway-3.0.la libgtk-x11-3.0.la libgtk-win32-3.0.la libgtk-quartz-3.0.la install-exec-hook: if DISABLE_EXPLICIT_DEPS - $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gtktargetlib) + $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/libgtk-3.0.la endif if USE_QUARTZ install-mac-key-theme: - $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Mac/gtk-3.0-key + $(mkdir_p) $(DESTDIR)$(datadir)/themes/Mac/gtk-3.0-key $(INSTALL_DATA) $(srcdir)/gtkrc.key.mac $(DESTDIR)$(datadir)/themes/Mac/gtk-3.0-key/gtkrc uninstall-mac-key-theme: rm -f $(DESTDIR)$(datadir)/themes/Mac/gtk-3.0-key/gtkrc @@ -922,11 +933,11 @@ dist-hook: ../build/win32/vs9/gtk.vcproj # Install a RC file for the default GTK+ theme, and key themes install-data-local: install-ms-lib install-def-file install-mac-key-theme - $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0 + $(mkdir_p) $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0 $(INSTALL_DATA) $(srcdir)/gtkrc.default $(DESTDIR)$(datadir)/themes/Raleigh/gtk-3.0/gtkrc - $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-3.0-key + $(mkdir_p) $(DESTDIR)$(datadir)/themes/Default/gtk-3.0-key $(INSTALL_DATA) $(srcdir)/gtkrc.key.default $(DESTDIR)$(datadir)/themes/Default/gtk-3.0-key/gtkrc - $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0-key + $(mkdir_p) $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0-key $(INSTALL_DATA) $(srcdir)/gtkrc.key.emacs $(DESTDIR)$(datadir)/themes/Emacs/gtk-3.0-key/gtkrc uninstall-local: uninstall-ms-lib uninstall-def-file uninstall-mac-key-theme @@ -941,13 +952,13 @@ distclean-local: rm -f $(MAINTAINERCLEANFILES); \ fi -DEPS = $(gtktargetlib) $(top_builddir)/gdk/$(gdktargetlib) +DEPS = libgtk-3.0.la $(top_builddir)/gdk/libgdk-3.0.la TEST_DEPS = $(DEPS) immodules.cache LDADDS = \ - $(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) if HAVE_INTROSPECTION @@ -957,22 +968,23 @@ introspection_files = \ gtktypebuiltins.h \ gtktypebuiltins.c -Gtk-3.0.gir: $(INTROSPECTION_SCANNER) $(gtktargetlib) $(top_builddir)/gdk/Gdk-3.0.gir Makefile -Gtk_3_0_gir_SCANNERFLAGS = --warn-all --add-include-path=$(top_builddir)/gdk +Gtk-3.0.gir: $(INTROSPECTION_SCANNER) libgtk-3.0.la $(top_builddir)/gdk/Gdk-3.0.gir Makefile +Gtk_3_0_gir_SCANNERFLAGS = \ + --add-include-path=$(top_builddir)/gdk \ + --include-uninstalled=$(top_builddir)/gdk/Gdk-3.0.gir if USE_X11 Gtk_3_0_gir_SCANNERFLAGS += --add-include-path=$(top_builddir)/gdk/x11 endif +Gtk_3_0_gir_SCANNERFLAGS += --c-include="gtk/gtk.h" Gtk_3_0_gir_INCLUDES = Atk-1.0 Gdk-3.0 Gtk_3_0_gir_CFLAGS = \ $(INCLUDES) \ -UGDK_DISABLE_DEPRECATED \ -UGTK_DISABLE_DEPRECATED \ -DGTK_TEXT_USE_INTERNAL_UNSUPPORTED_API -Gtk_3_0_gir_LIBS = $(gtktargetlib) -if USE_X11 -Gtk_3_0_gir_LIBS += $(top_builddir)/gdk/libgdk-x11-3.0.la -endif +Gtk_3_0_gir_LIBS = libgtk-3.0.la Gtk_3_0_gir_FILES = $(introspection_files) +Gtk_3_0_gir_EXPORT_PACKAGES = gtk+-3.0 INTROSPECTION_GIRS += Gtk-3.0.gir girdir = $(datadir)/gir-1.0 @@ -988,29 +1000,29 @@ endif # Installed tools # bin_PROGRAMS = \ - gtk-query-immodules-3.0 \ - gtk-update-icon-cache-3.0 + gtk-query-immodules-3.0 -bin_SCRIPTS = gtk-builder-convert-3.0 +if BUILD_ICON_CACHE +bin_PROGRAMS += gtk-update-icon-cache +endif if OS_WIN32 # Workaround for UAC silliness: programs with "update" in their name # are believed to be installers and require elevated privileges to be # used... Use a manifest file to tell Windows that -# gtk-update-icon-cache-3.0.exe doesn't require any special privileges. +# gtk-update-icon-cache.exe doesn't require any special privileges. -GTK_UPDATE_ICON_CACHE_MANIFEST = gtk-update-icon-cache-3.0.exe.manifest +GTK_UPDATE_ICON_CACHE_MANIFEST = gtk-update-icon-cache.exe.manifest -bin_SCRIPTS += \ - $(GTK_UPDATE_ICON_CACHE_MANIFEST) +bin_SCRIPTS = $(GTK_UPDATE_ICON_CACHE_MANIFEST) $(GTK_UPDATE_ICON_CACHE_MANIFEST): (echo '' ; \ echo '' ; \ echo ' ' ; \ echo ' ' ; \ echo ' ' ; \ @@ -1030,8 +1042,10 @@ gtk_query_immodules_3_0_DEPENDENCIES = $(DEPS) gtk_query_immodules_3_0_LDADD = $(LDADDS) gtk_query_immodules_3_0_SOURCES = queryimmodules.c -gtk_update_icon_cache_3_0_LDADD = $(GDK_PIXBUF_LIBS) -gtk_update_icon_cache_3_0_SOURCES = updateiconcache.c +if BUILD_ICON_CACHE +gtk_update_icon_cache_LDADD = $(GDK_PIXBUF_LIBS) +gtk_update_icon_cache_SOURCES = updateiconcache.c +endif .PHONY: files test test-debug @@ -1284,7 +1298,7 @@ GENERATED_ICONS = \ # need to copy the icons so that we can replace the generated ones with # symlinks, even in the readonly srcdir case stamp-icons: $(STOCK_ICONS) - if [ ! -d stock-icons ]; then \ + $(AM_V_GEN) if [ ! -d stock-icons ]; then \ for d in 16 20 24 32 48; do \ mkdir -p stock-icons/$$d; \ done; \ @@ -1324,16 +1338,15 @@ stamp-icons: $(STOCK_ICONS) ) done \ && touch stamp-icons -if CROSS_COMPILING +if USE_EXTERNAL_ICON_CACHE gtk_update_icon_cache_program = $(GTK_UPDATE_ICON_CACHE) else -gtk_update_icon_cache_program = \ - ./gtk-update-icon-cache-3.0 +gtk_update_icon_cache_program = ./gtk-update-icon-cache endif gtkbuiltincache.h: @REBUILD@ stamp-icons - $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache-3.0$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) - $(gtk_update_icon_cache_program) --force --ignore-theme-index \ + $(AM_V_at) $(MAKE) $(AM_MAKEFLAGS) gtk-update-icon-cache$(EXEEXT) $(GTK_UPDATE_ICON_CACHE_MANIFEST) + $(AM_V_GEN) $(gtk_update_icon_cache_program) --quiet --force --ignore-theme-index \ --source builtin_icons stock-icons > gtkbuiltincache.h.tmp && \ mv gtkbuiltincache.h.tmp gtkbuiltincache.h @@ -1343,11 +1356,10 @@ EXTRA_DIST += \ line-arrow.xbm \ line-wrap.xbm \ tree_plus.xbm \ - tree_minus.xbm \ + tree_minus.xbm \ tree_minus.xpm \ tree_plus.xpm \ gtk.def \ - gtk-builder-convert-3.0 \ gtk-win32.rc \ gtk-win32.rc.in \ gtkwin32embed.h \ diff --git a/gtk/abicheck.sh b/gtk/abicheck.sh index e818a64fe4..ecb8439bc3 100755 --- a/gtk/abicheck.sh +++ b/gtk/abicheck.sh @@ -1,5 +1,5 @@ #! /bin/sh cpp -P -DG_OS_UNIX -DGDK_WINDOWING_X11 ${srcdir:-.}/gtk.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi -nm -D -g --defined-only .libs/libgtk-x11-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi +nm -D -g --defined-only .libs/libgtk-3.0.so | cut -d ' ' -f 3 | egrep -v '^(__bss_start|_edata|_end)' | sort > actual-abi diff -u expected-abi actual-abi && rm -f expected-abi actual-abi diff --git a/gtk/compose-parse.py b/gtk/compose-parse.py index 6fe1929725..18d9f3f162 100755 --- a/gtk/compose-parse.py +++ b/gtk/compose-parse.py @@ -253,7 +253,7 @@ def process_gdkkeysymsh(): for line in gdkkeysymsh.readlines(): linenum_gdkkeysymsh += 1 line = line.strip() - if line == "" or not match('^#define GDK_', line): + if line == "" or not match('^#define GDK_KEY_', line): continue components = split('\s+', line) if len(components) < 3: @@ -261,10 +261,10 @@ def process_gdkkeysymsh(): % {'linenum': linenum_gdkkeysymsh, 'filename': filename_gdkkeysymsh, 'line': line} print "Was expecting 3 items in the line" sys.exit(-1) - if not match('^GDK_', components[1]): + if not match('^GDK_KEY_', components[1]): print "Invalid line %(linenum)d in %(filename)s: %(line)s"\ % {'linenum': linenum_gdkkeysymsh, 'filename': filename_gdkkeysymsh, 'line': line} - print "Was expecting a keysym starting with GDK_" + print "Was expecting a keysym starting with GDK_KEY_" sys.exit(-1) if match('^0x[0-9a-fA-F]+$', components[2]): unival = long(components[2][2:], 16) @@ -772,9 +772,9 @@ def convert_UnotationToHex(arg): def addprefix_GDK(arg): if match('^0x', arg): - return '%(arg)s, ' % { 'arg': arg } + return '%(arg)s, ' % { 'arg': arg } else: - return 'GDK_%(arg)s, ' % { 'arg': arg } + return 'GDK_KEY_%(arg)s, ' % { 'arg': arg } if opt_gtk: first_keysym = "" @@ -818,7 +818,7 @@ if opt_gtk: print "0x%(ks)04X," % { "ks": keysymvalue(i[0]) }, print '%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i[1:])) } elif not match('^0x', i[0]): - print 'GDK_%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i)) } + print 'GDK_KEY_%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i)) } else: print '%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i)) } for i in ct_second_part: diff --git a/gtk/gtk-builder-convert-3.0 b/gtk/gtk-builder-convert-3.0 deleted file mode 100755 index 4cae240a66..0000000000 --- a/gtk/gtk-builder-convert-3.0 +++ /dev/null @@ -1,772 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (C) 2006-2008 Async Open Source -# Henrique Romano -# Johan Dahlin -# -# This program 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 program 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 General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# TODO: -# Toolbars - -"""Usage: gtk-builder-convert-3.0 [OPTION] [INPUT] [OUTPUT] -Converts Glade files into XML files which can be loaded with GtkBuilder. -The [INPUT] file is - - -w, --skip-windows Convert everything but GtkWindow subclasses. - -r, --root Convert only widget named root and its children - -h, --help display this help and exit - -When OUTPUT is -, write to standard output. - -Examples: - gtk-builder-convert-3.0 preference.glade preferences.ui - -Report bugs to http://bugzilla.gnome.org/.""" - -import getopt -import os -import sys - -from xml.dom import minidom, Node - -DIALOGS = ['GtkDialog', - 'GtkFileChooserDialog', - 'GtkMessageDialog'] -WINDOWS = ['GtkWindow'] + DIALOGS - -# The subprocess is only available in Python 2.4+ -try: - import subprocess - subprocess # pyflakes -except ImportError: - subprocess = None - -def get_child_nodes(node): - assert node.tagName == 'object' - nodes = [] - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName != 'child': - continue - nodes.append(child) - return nodes - -def get_properties(node): - assert node.tagName == 'object' - properties = {} - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName != 'property': - continue - value = child.childNodes[0].data - properties[child.getAttribute('name')] = value - return properties - -def get_property(node, property_name): - assert node.tagName == 'object' - properties = get_properties(node) - return properties.get(property_name) - -def get_property_node(node, property_name): - assert node.tagName == 'object' - properties = {} - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName != 'property': - continue - if child.getAttribute('name') == property_name: - return child - -def get_signal_nodes(node): - assert node.tagName == 'object' - signals = [] - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName == 'signal': - signals.append(child) - return signals - -def get_property_nodes(node): - assert node.tagName == 'object' - properties = [] - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - # FIXME: handle comments - if child.tagName == 'property': - properties.append(child) - return properties - -def get_accelerator_nodes(node): - assert node.tagName == 'object' - accelerators = [] - for child in node.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName == 'accelerator': - accelerators.append(child) - return accelerators - -def get_object_node(child_node): - assert child_node.tagName == 'child', child_node - nodes = [] - for node in child_node.childNodes: - if node.nodeType != Node.ELEMENT_NODE: - continue - if node.tagName == 'object': - nodes.append(node) - assert len(nodes) == 1, nodes - return nodes[0] - -def copy_properties(node, props, prop_dict): - assert node.tagName == 'object' - for prop_name in props: - child = get_property_node(node, prop_name) - if child is not None: - prop_dict[prop_name] = child - - return node - -class GtkBuilderConverter(object): - - def __init__(self, skip_windows, root): - self.skip_windows = skip_windows - self.root = root - self.root_objects = [] - self.objects = {} - - # - # Public API - # - - def parse_file(self, file): - self._dom = minidom.parse(file) - self._parse() - - def parse_buffer(self, buffer): - self._dom = minidom.parseString(buffer) - self._parse() - - def to_xml(self): - xml = self._dom.toprettyxml("", "") - return xml.encode('utf-8') - - # - # Private - # - - def _get_object(self, name): - return self.objects.get(name) - - def _get_objects_by_attr(self, attribute, value): - return [w for w in self._dom.getElementsByTagName("object") - if w.getAttribute(attribute) == value] - - def _create_object(self, obj_class, obj_id, template=None, properties=None): - """ - Creates a new tag. - Optionally a name template can be provided which will be used - to avoid naming collisions. - The properties dictionary can either contain string values or Node - values. If a node is provided the name of the node will be overridden - by the dictionary key. - - @param obj_class: class of the object (class tag) - @param obj_id: identifier of the object (id tag) - @param template: name template to use, for example 'button' - @param properties: dictionary of properties - @type properties: string or Node. - @returns: Newly created node of the object - """ - if template is not None: - count = 1 - while True: - obj_id = template + str(count) - widget = self._get_object(obj_id) - if widget is None: - break - - count += 1 - - obj = self._dom.createElement('object') - obj.setAttribute('class', obj_class) - obj.setAttribute('id', obj_id) - if properties: - for name, value in properties.items(): - if isinstance(value, Node): - # Reuse the node, so translatable and context still will be - # set when converting nodes. See also #509153 - prop = value - else: - prop = self._dom.createElement('property') - prop.appendChild(self._dom.createTextNode(value)) - - prop.setAttribute('name', str(name)) - obj.appendChild(prop) - self.objects[obj_id] = obj - return obj - - def _create_root_object(self, obj_class, template, properties=None): - obj = self._create_object(obj_class, None, template, properties) - self.root_objects.append(obj) - return obj - - def _parse(self): - glade_iface = self._dom.getElementsByTagName("glade-interface") - assert glade_iface, ("Badly formed XML, there is " - "no tag.") - # Rename glade-interface to interface - glade_iface[0].tagName = 'interface' - self._interface = glade_iface[0] - - # Remove glade-interface doc type - for node in self._dom.childNodes: - if node.nodeType == Node.DOCUMENT_TYPE_NODE: - if node.name == 'glade-interface': - self._dom.removeChild(node) - - # Strip unsupported tags - for tag in ['requires', 'requires-version']: - for child in self._dom.getElementsByTagName(tag): - child.parentNode.removeChild(child) - - if self.root: - self._strip_root(self.root) - - # Rename widget to object - objects = self._dom.getElementsByTagName("widget") - for node in objects: - node.tagName = "object" - - for node in objects: - self._convert(node.getAttribute("class"), node) - if self._get_object(node.getAttribute('id')) is not None: - print "WARNING: duplicate id \"" + node.getAttribute('id') + "\"" - self.objects[node.getAttribute('id')] = node - - # Convert Gazpachos UI tag - for node in self._dom.getElementsByTagName("ui"): - self._convert_ui(node) - - # Convert accessibility tag - for node in self._dom.getElementsByTagName("accessibility"): - self._convert_accessibility(node) - - # Output the newly created root objects and sort them - # by attribute id - # FIXME: Use sorted(self.root_objects, - # key=lambda n: n.getAttribute('id'), - # reverse=True): - # when we can depend on python 2.4 or higher - root_objects = self.root_objects[:] - root_objects.sort(lambda a, b: cmp(b.getAttribute('id'), - a.getAttribute('id'))) - for obj in root_objects: - self._interface.childNodes.insert(0, obj) - - def _convert(self, klass, node): - if klass == 'GtkNotebook': - self._packing_prop_to_child_attr(node, "type", "tab") - elif klass in ['GtkExpander', 'GtkFrame']: - self._packing_prop_to_child_attr( - node, "type", "label_item", "label") - elif klass == "GtkMenuBar": - self._convert_menu(node) - elif klass == "GtkMenu": - # Only convert toplevel popups - if node.parentNode == self._interface: - self._convert_menu(node, popup=True) - elif klass in WINDOWS and self.skip_windows: - self._remove_window(node) - self._default_widget_converter(node) - - def _default_widget_converter(self, node): - klass = node.getAttribute("class") - for prop in get_property_nodes(node): - prop_name = prop.getAttribute("name") - if prop_name == "sizegroup": - self._convert_sizegroup(node, prop) - elif prop_name == "tooltip" and klass != "GtkAction": - prop.setAttribute("name", "tooltip-text") - elif prop_name in ["response_id", 'response-id']: - # It does not make sense to convert responses when - # we're not going to output dialogs - if self.skip_windows: - continue - object_id = node.getAttribute('id') - response = prop.childNodes[0].data - self._convert_dialog_response(node, object_id, response) - prop.parentNode.removeChild(prop) - elif prop_name == "adjustment": - self._convert_adjustment(prop) - elif prop_name == "items" and klass in ['GtkComboBox', - 'GtkComboBoxEntry']: - self._convert_combobox_items(node, prop) - elif prop_name == "text" and klass == 'GtkTextView': - self._convert_textview_text(prop) - - def _remove_window(self, node): - object_node = get_object_node(get_child_nodes(node)[0]) - parent = node.parentNode - parent.removeChild(node) - parent.appendChild(object_node) - - def _convert_menu(self, node, popup=False): - if node.hasAttribute('constructor'): - return - - uimgr = self._create_root_object('GtkUIManager', - template='uimanager') - - if popup: - name = 'popup' - else: - name = 'menubar' - - menu = self._dom.createElement(name) - menu.setAttribute('name', node.getAttribute('id')) - node.setAttribute('constructor', uimgr.getAttribute('id')) - - for child in get_child_nodes(node): - obj_node = get_object_node(child) - item = self._convert_menuitem(uimgr, obj_node) - menu.appendChild(item) - child.removeChild(obj_node) - child.parentNode.removeChild(child) - - ui = self._dom.createElement('ui') - uimgr.appendChild(ui) - - ui.appendChild(menu) - - def _convert_menuitem(self, uimgr, obj_node): - children = get_child_nodes(obj_node) - name = 'menuitem' - if children: - child_node = children[0] - menu_node = get_object_node(child_node) - # Can be GtkImage, which will take care of later. - if menu_node.getAttribute('class') == 'GtkMenu': - name = 'menu' - - object_class = obj_node.getAttribute('class') - if object_class in ['GtkMenuItem', - 'GtkImageMenuItem', - 'GtkCheckMenuItem', - 'GtkRadioMenuItem']: - menu = self._dom.createElement(name) - elif object_class == 'GtkSeparatorMenuItem': - return self._dom.createElement('separator') - else: - raise NotImplementedError(object_class) - - menu.setAttribute('action', obj_node.getAttribute('id')) - self._add_action_from_menuitem(uimgr, obj_node) - if children: - for child in get_child_nodes(menu_node): - obj_node = get_object_node(child) - item = self._convert_menuitem(uimgr, obj_node) - menu.appendChild(item) - child.removeChild(obj_node) - child.parentNode.removeChild(child) - return menu - - def _menuitem_to_action(self, node, properties): - copy_properties(node, ['label', 'tooltip'], properties) - - def _togglemenuitem_to_action(self, node, properties): - self._menuitem_to_action(node, properties) - copy_properties(node, ['active'], properties) - - def _radiomenuitem_to_action(self, node, properties): - self._togglemenuitem_to_action(node, properties) - copy_properties(node, ['group'], properties) - - def _add_action_from_menuitem(self, uimgr, node): - properties = {} - object_class = node.getAttribute('class') - object_id = node.getAttribute('id') - if object_class == 'GtkMenuItem': - name = 'GtkAction' - self._menuitem_to_action(node, properties) - elif object_class == 'GtkCheckMenuItem': - name = 'GtkToggleAction' - self._togglemenuitem_to_action(node, properties) - elif object_class == 'GtkRadioMenuItem': - name = 'GtkRadioAction' - self._radiomenuitem_to_action(node, properties) - elif object_class == 'GtkImageMenuItem': - name = 'GtkAction' - children = get_child_nodes(node) - if (children and - children[0].getAttribute('internal-child') == 'image'): - image = get_object_node(children[0]) - child = get_property_node(image, 'stock') - if child is not None: - properties['stock_id'] = child - self._menuitem_to_action(node, properties) - elif object_class == 'GtkSeparatorMenuItem': - return - else: - raise NotImplementedError(object_class) - - if get_property(node, 'use_stock') == 'True': - if 'label' in properties: - properties['stock_id'] = properties['label'] - del properties['label'] - - properties['name'] = object_id - action = self._create_object(name, - object_id, - properties=properties) - for signal in get_signal_nodes(node): - signal_name = signal.getAttribute('name') - if signal_name in ['activate', 'toggled']: - action.appendChild(signal) - else: - print 'Unhandled signal %s::%s' % (node.getAttribute('class'), - signal_name) - - if not uimgr.childNodes: - child = self._dom.createElement('child') - uimgr.appendChild(child) - - group = self._create_object('GtkActionGroup', None, - template='actiongroup') - child.appendChild(group) - else: - group = uimgr.childNodes[0].childNodes[0] - - child = self._dom.createElement('child') - group.appendChild(child) - child.appendChild(action) - - for accelerator in get_accelerator_nodes(node): - signal_name = accelerator.getAttribute('signal') - if signal_name != 'activate': - print 'Unhandled accelerator signal for %s::%s' % ( - node.getAttribute('class'), signal_name) - continue - accelerator.removeAttribute('signal') - child.appendChild(accelerator) - - def _convert_sizegroup(self, node, prop): - # This is Gazpacho only - node.removeChild(prop) - obj = self._get_object(prop.childNodes[0].data) - if obj is None: - widgets = self._get_objects_by_attr("class", "GtkSizeGroup") - if widgets: - obj = widgets[-1] - else: - obj = self._create_root_object('GtkSizeGroup', - template='sizegroup') - - widgets = obj.getElementsByTagName("widgets") - if widgets: - assert len(widgets) == 1 - widgets = widgets[0] - else: - widgets = self._dom.createElement("widgets") - obj.appendChild(widgets) - - member = self._dom.createElement("widget") - member.setAttribute("name", node.getAttribute("id")) - widgets.appendChild(member) - - def _convert_dialog_response(self, node, object_name, response): - # 1) Get parent dialog node - while True: - # If we can't find the parent dialog, give up - if node == self._dom: - return - - if (node.tagName == 'object' and - node.getAttribute('class') in DIALOGS): - dialog = node - break - node = node.parentNode - assert node - - # 2) Get dialogs action-widgets tag, create if not found - for child in dialog.childNodes: - if child.nodeType != Node.ELEMENT_NODE: - continue - if child.tagName == 'action-widgets': - actions = child - break - else: - actions = self._dom.createElement("action-widgets") - dialog.appendChild(actions) - - # 3) Add action-widget tag for the response - action = self._dom.createElement("action-widget") - action.setAttribute("response", response) - action.appendChild(self._dom.createTextNode(object_name)) - actions.appendChild(action) - - def _convert_adjustment(self, prop): - properties = {} - if prop.childNodes: - data = prop.childNodes[0].data - value, lower, upper, step, page, page_size = data.split(' ') - properties.update(value=value, - lower=lower, - upper=upper, - step_increment=step, - page_increment=page, - page_size=page_size) - else: - prop.appendChild(self._dom.createTextNode("")) - - adj = self._create_root_object("GtkAdjustment", - template='adjustment', - properties=properties) - prop.childNodes[0].data = adj.getAttribute('id') - - def _convert_combobox_items(self, node, prop): - parent = prop.parentNode - if not prop.childNodes: - parent.removeChild(prop) - return - - translatable_attr = prop.attributes.get('translatable') - translatable = translatable_attr is not None and translatable_attr.value == 'yes' - has_context_attr = prop.attributes.get('context') - has_context = has_context_attr is not None and has_context_attr.value == 'yes' - comments_attr = prop.attributes.get('comments') - comments = comments_attr is not None and comments_attr.value or None - - value = prop.childNodes[0].data - model = self._create_root_object("GtkListStore", - template="model") - - columns = self._dom.createElement('columns') - model.appendChild(columns) - - column = self._dom.createElement('column') - column.setAttribute('type', 'gchararray') - columns.appendChild(column) - - data = self._dom.createElement('data') - model.appendChild(data) - - if value.endswith('\n'): - value = value[:-1] - for item in value.split('\n'): - row = self._dom.createElement('row') - data.appendChild(row) - - col = self._dom.createElement('col') - col.setAttribute('id', '0') - if translatable: - col.setAttribute('translatable', 'yes') - if has_context: - splitting = item.split('|', 1) - if len(splitting) == 2: - context, item = splitting - col.setAttribute('context', context) - if comments is not None: - col.setAttribute('comments', comments) - col.appendChild(self._dom.createTextNode(item)) - row.appendChild(col) - - model_prop = self._dom.createElement('property') - model_prop.setAttribute('name', 'model') - model_prop.appendChild( - self._dom.createTextNode(model.getAttribute('id'))) - parent.appendChild(model_prop) - - parent.removeChild(prop) - - child = self._dom.createElement('child') - node.appendChild(child) - cell_renderer = self._create_object('GtkCellRendererText', None, - template='renderer') - child.appendChild(cell_renderer) - - attributes = self._dom.createElement('attributes') - child.appendChild(attributes) - - attribute = self._dom.createElement('attribute') - attributes.appendChild(attribute) - attribute.setAttribute('name', 'text') - attribute.appendChild(self._dom.createTextNode('0')) - - def _convert_textview_text(self, prop): - if not prop.childNodes: - prop.parentNode.removeChild(prop) - return - - data = prop.childNodes[0].data - if prop.hasAttribute('translatable'): - prop.removeAttribute('translatable') - tbuffer = self._create_root_object("GtkTextBuffer", - template='textbuffer', - properties=dict(text=data)) - prop.childNodes[0].data = tbuffer.getAttribute('id') - prop.setAttribute('name', 'buffer') - - def _packing_prop_to_child_attr(self, node, prop_name, prop_val, - attr_val=None): - for child in get_child_nodes(node): - packing_props = [p for p in child.childNodes if p.nodeName == "packing"] - if not packing_props: - continue - assert len(packing_props) == 1 - packing_prop = packing_props[0] - properties = packing_prop.getElementsByTagName("property") - for prop in properties: - if (prop.getAttribute("name") != prop_name or - prop.childNodes[0].data != prop_val): - continue - packing_prop.removeChild(prop) - child.setAttribute(prop_name, attr_val or prop_val) - if len(properties) == 1: - child.removeChild(packing_prop) - - def _convert_ui(self, node): - cdata = node.childNodes[0] - data = cdata.toxml().strip() - if not data.startswith(""): - return - data = data[9:-3] - child = minidom.parseString(data).childNodes[0] - nodes = child.childNodes[:] - for child_node in nodes: - node.appendChild(child_node) - node.removeChild(cdata) - if not node.hasAttribute("id"): - return - - # Updating references made by widgets - parent_id = node.parentNode.getAttribute("id") - for widget in self._get_objects_by_attr("constructor", - node.getAttribute("id")): - widget.getAttributeNode("constructor").value = parent_id - node.removeAttribute("id") - - def _convert_accessibility(self, node): - objectNode = node.parentNode - parent_id = objectNode.getAttribute("id") - - properties = {} - for node in node.childNodes: - if node.nodeName == 'atkproperty': - node.tagName = 'property' - properties[node.getAttribute('name')] = node - node.parentNode.removeChild(node) - elif node.nodeName == 'atkrelation': - node.tagName = 'relation' - relation_type = node.getAttribute('type') - relation_type = relation_type.replace('_', '-') - node.setAttribute('type', relation_type) - elif node.nodeName == 'atkaction': - node.tagName = 'action' - - if properties: - child = self._dom.createElement('child') - child.setAttribute("internal-child", "accessible") - - atkobject = self._create_object( - "AtkObject", None, - template='a11y-%s' % (parent_id,), - properties=properties) - child.appendChild(atkobject) - objectNode.appendChild(child) - - def _strip_root(self, root_name): - for widget in self._dom.getElementsByTagName("widget"): - if widget.getAttribute('id') == root_name: - break - else: - raise SystemExit("Could not find an object called `%s'" % ( - root_name)) - - for child in self._interface.childNodes[:]: - if child.nodeType != Node.ELEMENT_NODE: - continue - child.parentNode.removeChild(child) - - self._interface.appendChild(widget) - - -def _indent(output): - if not subprocess: - return output - - for directory in os.environ['PATH'].split(os.pathsep): - filename = os.path.join(directory, 'xmllint') - if os.path.exists(filename): - break - else: - return output - - s = subprocess.Popen([filename, '--format', '-'], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE) - s.stdin.write(output) - s.stdin.close() - return s.stdout.read() - -def usage(): - print __doc__ - -def main(args): - try: - opts, args = getopt.getopt(args[1:], "hwr:", - ["help", "skip-windows", "root="]) - except getopt.GetoptError: - usage() - return 2 - - if len(args) != 2: - usage() - return 2 - - input_filename, output_filename = args - - skip_windows = False - split = False - root = None - for o, a in opts: - if o in ("-h", "--help"): - usage() - sys.exit() - elif o in ("-r", "--root"): - root = a - elif o in ("-w", "--skip-windows"): - skip_windows = True - - conv = GtkBuilderConverter(skip_windows=skip_windows, - root=root) - conv.parse_file(input_filename) - - xml = _indent(conv.to_xml()) - if output_filename == "-": - print xml - else: - open(output_filename, 'w').write(xml) - print "Wrote", output_filename - - return 0 - -if __name__ == "__main__": - sys.exit(main(sys.argv)) diff --git a/gtk/gtk.h b/gtk/gtk.h index 3b1155d7fb..6f984eab9d 100644 --- a/gtk/gtk.h +++ b/gtk/gtk.h @@ -57,6 +57,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -134,6 +137,7 @@ #include #include #include +#include #include #include #include @@ -185,6 +189,7 @@ #include #include #include +#include #include #include #include @@ -214,7 +219,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index e1d9de295f..8aefc9b34f 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -265,6 +265,7 @@ gtk_border_copy gtk_border_free gtk_border_get_type G_GNUC_CONST gtk_border_new G_GNUC_MALLOC +gtk_border_style_get_type G_GNUC_CONST gtk_box_get_homogeneous gtk_box_get_spacing gtk_box_get_type G_GNUC_CONST @@ -358,6 +359,73 @@ gtk_calendar_set_detail_height_rows gtk_calendar_set_detail_width_chars gtk_calendar_set_display_options gtk_calendar_unmark_day +gtk_cell_area_activate +gtk_cell_area_activate_cell +gtk_cell_area_add +gtk_cell_area_add_focus_sibling +gtk_cell_area_add_with_properties +gtk_cell_area_apply_attributes +gtk_cell_area_attribute_connect +gtk_cell_area_attribute_disconnect +gtk_cell_area_box_get_spacing +gtk_cell_area_box_get_type G_GNUC_CONST +gtk_cell_area_box_init_groups +gtk_cell_area_box_new +gtk_cell_area_box_pack_end +gtk_cell_area_box_pack_start +gtk_cell_area_box_set_spacing +gtk_cell_area_cell_get +gtk_cell_area_cell_get_property +gtk_cell_area_cell_get_valist +gtk_cell_area_cell_set +gtk_cell_area_cell_set_property +gtk_cell_area_cell_set_valist +gtk_cell_area_class_find_cell_property +gtk_cell_area_class_install_cell_property +gtk_cell_area_class_list_cell_properties +gtk_cell_area_context_allocate +gtk_cell_area_context_get_allocation +gtk_cell_area_context_get_area +gtk_cell_area_context_get_preferred_height +gtk_cell_area_context_get_preferred_height_for_width +gtk_cell_area_context_get_preferred_width +gtk_cell_area_context_get_preferred_width_for_height +gtk_cell_area_context_get_type G_GNUC_CONST +gtk_cell_area_context_push_preferred_width +gtk_cell_area_context_push_preferred_height +gtk_cell_area_context_reset +gtk_cell_area_copy_context +gtk_cell_area_create_context +gtk_cell_area_event +gtk_cell_area_foreach +gtk_cell_area_foreach_alloc +gtk_cell_area_focus +gtk_cell_area_get_edited_cell +gtk_cell_area_get_edit_widget +gtk_cell_area_get_focus_cell +gtk_cell_area_get_focus_from_sibling +gtk_cell_area_get_focus_siblings +gtk_cell_area_get_cell_allocation +gtk_cell_area_get_cell_at_position +gtk_cell_area_get_current_path_string +gtk_cell_area_get_preferred_height +gtk_cell_area_get_preferred_height_for_width +gtk_cell_area_get_preferred_width +gtk_cell_area_get_preferred_width_for_height +gtk_cell_area_get_request_mode +gtk_cell_area_get_style_detail +gtk_cell_area_get_type G_GNUC_CONST +gtk_cell_area_has_renderer +gtk_cell_area_inner_cell_area +gtk_cell_area_is_activatable +gtk_cell_area_is_focus_sibling +gtk_cell_area_remove +gtk_cell_area_remove_focus_sibling +gtk_cell_area_render +gtk_cell_area_request_renderer +gtk_cell_area_set_focus_cell +gtk_cell_area_set_style_detail +gtk_cell_area_stop_editing gtk_cell_editable_editing_done gtk_cell_editable_get_type G_GNUC_CONST gtk_cell_editable_remove_widget @@ -365,6 +433,7 @@ gtk_cell_editable_start_editing gtk_cell_layout_add_attribute gtk_cell_layout_clear gtk_cell_layout_clear_attributes +gtk_cell_layout_get_area gtk_cell_layout_get_cells gtk_cell_layout_get_type G_GNUC_CONST gtk_cell_layout_pack_end @@ -378,6 +447,7 @@ gtk_cell_renderer_accel_new gtk_cell_renderer_activate gtk_cell_renderer_combo_get_type G_GNUC_CONST gtk_cell_renderer_combo_new +gtk_cell_renderer_get_aligned_area gtk_cell_renderer_get_alignment gtk_cell_renderer_get_fixed_size gtk_cell_renderer_get_padding @@ -391,6 +461,7 @@ gtk_cell_renderer_get_sensitive gtk_cell_renderer_get_size gtk_cell_renderer_get_type G_GNUC_CONST gtk_cell_renderer_get_visible +gtk_cell_renderer_is_activatable gtk_cell_renderer_mode_get_type G_GNUC_CONST gtk_cell_renderer_pixbuf_get_type G_GNUC_CONST gtk_cell_renderer_pixbuf_new @@ -420,19 +491,22 @@ gtk_cell_renderer_toggle_new gtk_cell_renderer_toggle_set_activatable gtk_cell_renderer_toggle_set_active gtk_cell_renderer_toggle_set_radio -gtk_cell_view_get_desired_height_for_width_of_row -gtk_cell_view_get_desired_width_of_row gtk_cell_view_get_displayed_row +gtk_cell_view_get_draw_sensitive +gtk_cell_view_get_fit_model gtk_cell_view_get_model gtk_cell_view_get_size_of_row gtk_cell_view_get_type G_GNUC_CONST gtk_cell_view_new +gtk_cell_view_new_with_context gtk_cell_view_new_with_markup gtk_cell_view_new_with_pixbuf gtk_cell_view_new_with_text gtk_cell_view_set_background_color gtk_cell_view_set_background_rgba gtk_cell_view_set_displayed_row +gtk_cell_view_set_draw_sensitive +gtk_cell_view_set_fit_model gtk_cell_view_set_model gtk_check_button_get_type G_GNUC_CONST gtk_check_button_new @@ -518,6 +592,7 @@ gtk_color_selection_set_has_palette gtk_color_selection_set_previous_alpha gtk_color_selection_set_previous_color gtk_color_selection_set_previous_rgba +gtk_combo_box_cell_layout_get_area gtk_combo_box_get_active gtk_combo_box_get_active_id gtk_combo_box_get_active_iter @@ -537,6 +612,8 @@ gtk_combo_box_get_title gtk_combo_box_get_type G_GNUC_CONST gtk_combo_box_get_wrap_width gtk_combo_box_new +gtk_combo_box_new_with_area +gtk_combo_box_new_with_area_and_entry gtk_combo_box_new_with_entry gtk_combo_box_new_with_model gtk_combo_box_new_with_model_and_entry @@ -592,6 +669,7 @@ gtk_container_get_focus_chain gtk_container_get_focus_child gtk_container_get_focus_hadjustment gtk_container_get_focus_vadjustment +gtk_container_get_path_for_child gtk_container_get_resize_mode gtk_container_get_type G_GNUC_CONST gtk_container_propagate_draw @@ -606,16 +684,30 @@ gtk_container_set_reallocate_redraws gtk_container_set_resize_mode gtk_container_unset_focus_chain gtk_corner_type_get_type G_GNUC_CONST +gtk_css_provider_error_get_type +gtk_css_provider_error_quark +gtk_css_provider_get_default +gtk_css_provider_get_named +gtk_css_provider_get_type +gtk_css_provider_load_from_data +gtk_css_provider_load_from_file +gtk_css_provider_load_from_path +gtk_css_provider_new +#ifdef G_OS_UNIX gtk_custom_paper_unix_dialog_get_type G_GNUC_CONST +#endif gtk_debug_flag_get_type G_GNUC_CONST -gtk_decorated_window_calculate_frame_size -gtk_decorated_window_init -gtk_decorated_window_move_resize_window -gtk_decorated_window_set_title gtk_delete_type_get_type G_GNUC_CONST gtk_dest_defaults_get_type G_GNUC_CONST gtk_device_grab_add gtk_device_grab_remove +gtk_gradient_add_color_stop +gtk_gradient_get_type +gtk_gradient_new_linear +gtk_gradient_new_radial +gtk_gradient_ref +gtk_gradient_resolve +gtk_gradient_unref gtk_dialog_add_action_widget gtk_dialog_add_button gtk_dialog_add_buttons G_GNUC_NULL_TERMINATED @@ -717,6 +809,7 @@ gtk_entry_completion_insert_action_markup gtk_entry_completion_insert_action_text gtk_entry_completion_insert_prefix gtk_entry_completion_new +gtk_entry_completion_new_with_area gtk_entry_completion_set_inline_completion gtk_entry_completion_set_inline_selection gtk_entry_completion_set_match_func @@ -791,7 +884,9 @@ gtk_entry_set_visibility gtk_entry_set_width_chars gtk_entry_text_index_to_layout_index gtk_entry_unset_invisible_char +#ifdef G_OS_UNIX gtk_enumerate_printers +#endif gtk_event_box_get_above_child gtk_event_box_get_type G_GNUC_CONST gtk_event_box_get_visible_window @@ -1033,6 +1128,7 @@ gtk_icon_info_get_filename gtk_icon_info_get_type G_GNUC_CONST gtk_icon_info_load_icon gtk_icon_info_load_symbolic +gtk_icon_info_load_symbolic_for_context gtk_icon_info_load_symbolic_for_style gtk_icon_info_new_for_pixbuf gtk_icon_info_set_raw_coordinates @@ -1132,6 +1228,7 @@ gtk_icon_view_get_type G_GNUC_CONST gtk_icon_view_get_visible_range gtk_icon_view_item_activated gtk_icon_view_new +gtk_icon_view_new_with_area gtk_icon_view_new_with_model gtk_icon_view_path_is_selected gtk_icon_view_scroll_to_path @@ -1238,7 +1335,7 @@ gtk_info_bar_set_message_type gtk_info_bar_set_response_sensitive gtk_init gtk_init_check -#ifdef GDK_WINDOWING_WIN32 +#ifdef G_OS_WIN32 gtk_init_abi_check gtk_init_check_abi_check #endif @@ -1248,6 +1345,7 @@ gtk_invisible_get_type G_GNUC_CONST gtk_invisible_new gtk_invisible_new_for_screen gtk_invisible_set_screen +gtk_junction_sides_get_type G_GNUC_CONST gtk_justification_get_type G_GNUC_CONST gtk_key_snooper_install gtk_key_snooper_remove @@ -1367,6 +1465,7 @@ gtk_menu_item_activate gtk_menu_item_deselect gtk_menu_item_get_accel_path gtk_menu_item_get_label +gtk_menu_item_get_reserve_indicator gtk_menu_item_get_right_justified gtk_menu_item_get_submenu gtk_menu_item_get_type G_GNUC_CONST @@ -1377,6 +1476,7 @@ gtk_menu_item_new_with_mnemonic gtk_menu_item_select gtk_menu_item_set_accel_path gtk_menu_item_set_label +gtk_menu_item_set_reserve_indicator gtk_menu_item_set_right_justified gtk_menu_item_set_submenu gtk_menu_item_set_use_underline @@ -1401,6 +1501,8 @@ gtk_menu_shell_append gtk_menu_shell_cancel gtk_menu_shell_deactivate gtk_menu_shell_deselect +gtk_menu_shell_get_selected_item +gtk_menu_shell_get_parent_shell gtk_menu_shell_get_take_focus gtk_menu_shell_get_type G_GNUC_CONST gtk_menu_shell_insert @@ -1430,6 +1532,13 @@ gtk_misc_get_padding gtk_misc_get_type G_GNUC_CONST gtk_misc_set_alignment gtk_misc_set_padding +gtk_modifier_style_get_type +gtk_modifier_style_map_color +gtk_modifier_style_new +gtk_modifier_style_set_background_color +gtk_modifier_style_set_color +gtk_modifier_style_set_color_property +gtk_modifier_style_set_font gtk_mount_operation_get_parent gtk_mount_operation_get_screen gtk_mount_operation_get_type G_GNUC_CONST @@ -1485,6 +1594,19 @@ gtk_notebook_set_tab_pos gtk_notebook_set_tab_reorderable gtk_notebook_tab_get_type G_GNUC_CONST gtk_number_up_layout_get_type G_GNUC_CONST +gtk_numerable_icon_get_background_gicon +gtk_numerable_icon_get_background_icon_name +gtk_numerable_icon_get_count +gtk_numerable_icon_get_label +gtk_numerable_icon_get_style_context +gtk_numerable_icon_get_type G_GNUC_CONST +gtk_numerable_icon_new +gtk_numerable_icon_new_with_style_context +gtk_numerable_icon_set_background_gicon +gtk_numerable_icon_set_background_icon_name +gtk_numerable_icon_set_count +gtk_numerable_icon_set_label +gtk_numerable_icon_set_style_context gtk_offscreen_window_get_pixbuf gtk_offscreen_window_get_surface gtk_offscreen_window_get_type G_GNUC_CONST @@ -1523,12 +1645,14 @@ gtk_page_setup_set_right_margin gtk_page_setup_set_top_margin gtk_page_setup_to_file gtk_page_setup_to_key_file +#ifdef G_OS_UNIX gtk_page_setup_unix_dialog_get_page_setup gtk_page_setup_unix_dialog_get_print_settings gtk_page_setup_unix_dialog_get_type G_GNUC_CONST gtk_page_setup_unix_dialog_new gtk_page_setup_unix_dialog_set_page_setup gtk_page_setup_unix_dialog_set_print_settings +#endif /* G_OS_UNIX */ gtk_paint_arrow gtk_paint_box gtk_paint_box_gap @@ -1596,6 +1720,7 @@ gtk_plug_new gtk_plug_new_for_display gtk_policy_type_get_type G_GNUC_CONST gtk_position_type_get_type G_GNUC_CONST +#ifdef G_OS_UNIX gtk_print_backend_add_printer gtk_print_backend_destroy gtk_print_backend_error_quark @@ -1609,6 +1734,7 @@ gtk_print_backend_remove_printer gtk_print_backend_set_list_done gtk_print_backend_set_password gtk_print_capabilities_get_type G_GNUC_CONST +#endif /* G_OS_UNIX */ gtk_print_context_create_pango_context gtk_print_context_create_pango_layout gtk_print_context_get_cairo_context @@ -1622,6 +1748,7 @@ gtk_print_context_get_type G_GNUC_CONST gtk_print_context_get_width gtk_print_context_set_cairo_context gtk_print_duplex_get_type G_GNUC_CONST +#ifdef G_OS_UNIX gtk_printer_accepts_pdf gtk_printer_accepts_ps gtk_printer_compare @@ -1672,8 +1799,12 @@ gtk_printer_option_widget_has_external_label gtk_printer_option_widget_new gtk_printer_option_widget_set_source gtk_printer_request_details +#endif /* G_OS_UNIX */ gtk_print_error_get_type G_GNUC_CONST gtk_print_error_quark +#ifdef G_OS_UNIX +gtk_printer_set_accepts_pdf +gtk_printer_set_accepts_ps gtk_printer_set_description gtk_printer_set_has_details gtk_printer_set_icon_name @@ -1685,7 +1816,17 @@ gtk_printer_set_is_paused gtk_printer_set_job_count gtk_printer_set_location gtk_printer_set_state_message +gtk_print_job_get_collate +gtk_print_job_get_n_up +gtk_print_job_get_n_up_layout +gtk_print_job_get_num_copies +gtk_print_job_get_pages +gtk_print_job_get_page_ranges +gtk_print_job_get_page_set gtk_print_job_get_printer +gtk_print_job_get_reverse +gtk_print_job_get_rotate +gtk_print_job_get_scale gtk_print_job_get_settings gtk_print_job_get_status gtk_print_job_get_surface @@ -1694,9 +1835,20 @@ gtk_print_job_get_track_print_status gtk_print_job_get_type G_GNUC_CONST gtk_print_job_new gtk_print_job_send +gtk_print_job_set_collate +gtk_print_job_set_n_up +gtk_print_job_set_n_up_layout +gtk_print_job_set_num_copies +gtk_print_job_set_pages +gtk_print_job_set_page_ranges +gtk_print_job_set_page_set +gtk_print_job_set_reverse +gtk_print_job_set_rotate +gtk_print_job_set_scale gtk_print_job_set_source_file gtk_print_job_set_status gtk_print_job_set_track_print_status +#endif /* G_OS_UNIX */ gtk_print_operation_action_get_type G_GNUC_CONST gtk_print_operation_cancel gtk_print_operation_draw_page_finish @@ -1814,6 +1966,7 @@ gtk_print_settings_to_file gtk_print_settings_to_key_file gtk_print_settings_unset gtk_print_status_get_type G_GNUC_CONST +#ifdef G_OS_UNIX gtk_print_unix_dialog_add_custom_tab gtk_print_unix_dialog_get_current_page gtk_print_unix_dialog_get_embed_page_setup @@ -1833,6 +1986,7 @@ gtk_print_unix_dialog_set_manual_capabilities gtk_print_unix_dialog_set_page_setup gtk_print_unix_dialog_set_settings gtk_print_unix_dialog_set_support_selection +#endif #ifdef GDK_WINDOWING_WIN32 gtk_print_win32_devnames_free gtk_print_win32_devnames_from_printer_name @@ -1855,11 +2009,6 @@ gtk_progress_bar_set_pulse_step gtk_progress_bar_set_show_text gtk_progress_bar_set_text gtk_propagate_event -gtk_quit_add -gtk_quit_add_destroy -gtk_quit_add_full -gtk_quit_remove -gtk_quit_remove_by_data gtk_radio_action_get_current_value gtk_radio_action_get_group gtk_radio_action_get_type G_GNUC_CONST @@ -1901,11 +2050,11 @@ gtk_range_get_lower_stepper_sensitivity gtk_range_get_min_slider_size gtk_range_get_range_rect gtk_range_get_restrict_to_fill_level +gtk_range_get_round_digits gtk_range_get_show_fill_level gtk_range_get_slider_range gtk_range_get_slider_size_fixed gtk_range_get_type G_GNUC_CONST -gtk_range_get_update_policy gtk_range_get_upper_stepper_sensitivity gtk_range_get_value gtk_range_set_adjustment @@ -1917,9 +2066,9 @@ gtk_range_set_lower_stepper_sensitivity gtk_range_set_min_slider_size gtk_range_set_range gtk_range_set_restrict_to_fill_level +gtk_range_set_round_digits gtk_range_set_show_fill_level gtk_range_set_slider_size_fixed -gtk_range_set_update_policy gtk_range_set_upper_stepper_sensitivity gtk_range_set_value gtk_rc_add_default_file @@ -2057,7 +2206,23 @@ gtk_recent_manager_new gtk_recent_manager_purge_items gtk_recent_manager_remove_item gtk_recent_sort_type_get_type G_GNUC_CONST +gtk_region_flags_get_type G_GNUC_CONST gtk_relief_style_get_type G_GNUC_CONST +gtk_render_activity +gtk_render_arrow +gtk_render_background +gtk_render_check +gtk_render_expander +gtk_render_extension +gtk_render_focus +gtk_render_frame +gtk_render_frame_gap +gtk_render_handle +gtk_render_icon_pixbuf +gtk_render_layout +gtk_render_line +gtk_render_option +gtk_render_slider gtk_requisition_copy gtk_requisition_free gtk_requisition_get_type G_GNUC_CONST @@ -2133,6 +2298,7 @@ gtk_selection_data_get_data_type gtk_selection_data_get_display gtk_selection_data_get_format gtk_selection_data_get_length +gtk_selection_data_get_data_with_length gtk_selection_data_get_pixbuf gtk_selection_data_get_selection gtk_selection_data_get_target @@ -2162,7 +2328,6 @@ gtk_separator_tool_item_get_type G_GNUC_CONST gtk_separator_tool_item_new gtk_separator_tool_item_set_draw gtk_set_debug_flags -gtk_set_locale gtk_settings_get_default gtk_settings_get_for_screen gtk_settings_get_type G_GNUC_CONST @@ -2223,6 +2388,7 @@ gtk_spinner_new gtk_spinner_start gtk_spinner_stop gtk_spin_type_get_type G_GNUC_CONST +gtk_state_flags_get_type G_GNUC_CONST gtk_state_type_get_type G_GNUC_CONST gtk_statusbar_get_context_id gtk_statusbar_get_message_area @@ -2280,17 +2446,97 @@ gtk_switch_new gtk_switch_set_active gtk_style_apply_default_background gtk_style_attach +gtk_style_context_add_class +gtk_style_context_add_provider +gtk_style_context_add_provider_for_screen +gtk_style_context_add_region +gtk_style_context_cancel_animations +gtk_style_context_get +gtk_style_context_get_background_color +gtk_style_context_get_border +gtk_style_context_get_border_color +gtk_style_context_get_color +gtk_style_context_get_direction +gtk_style_context_get_font +gtk_style_context_get_junction_sides +gtk_style_context_get_margin +gtk_style_context_get_padding +gtk_style_context_get_path +gtk_style_context_get_property +gtk_style_context_get_screen +gtk_style_context_get_state +gtk_style_context_get_style +gtk_style_context_get_style_property +gtk_style_context_get_style_valist +gtk_style_context_get_type +gtk_style_context_get_valist +gtk_style_context_has_class +gtk_style_context_has_region +gtk_style_context_invalidate +gtk_style_context_list_classes +gtk_style_context_list_regions +gtk_style_context_lookup_color +gtk_style_context_lookup_icon_set +gtk_style_context_new +gtk_style_context_notify_state_change +gtk_style_context_pop_animatable_region +gtk_style_context_push_animatable_region +gtk_style_context_remove_class +gtk_style_context_remove_provider +gtk_style_context_remove_provider_for_screen +gtk_style_context_remove_region +gtk_style_context_reset_widgets +gtk_style_context_restore +gtk_style_context_save +gtk_style_context_scroll_animations +gtk_style_context_set_background +gtk_style_context_set_direction +gtk_style_context_set_junction_sides +gtk_style_context_set_path +gtk_style_context_set_screen +gtk_style_context_set_state +gtk_style_context_state_is_running gtk_style_copy gtk_style_detach gtk_style_get gtk_style_get_style_property gtk_style_get_type G_GNUC_CONST gtk_style_get_valist +gtk_style_has_context gtk_style_lookup_color gtk_style_lookup_icon_set gtk_style_new +gtk_style_properties_clear +gtk_style_properties_get +gtk_style_properties_get_property +gtk_style_properties_get_style +gtk_style_properties_get_type +gtk_style_properties_get_valist +gtk_style_properties_lookup_color +gtk_style_properties_lookup_property +gtk_style_properties_map_color +gtk_style_properties_merge +gtk_style_properties_new +gtk_style_properties_register_property +gtk_style_properties_set +gtk_style_properties_set_property +gtk_style_properties_set_valist +gtk_style_properties_unset_property +gtk_style_provider_get_icon_factory +gtk_style_provider_get_style +gtk_style_provider_get_style_property +gtk_style_provider_get_type gtk_style_render_icon gtk_style_set_background +gtk_symbolic_color_get_type +gtk_symbolic_color_new_alpha +gtk_symbolic_color_new_literal +gtk_symbolic_color_new_mix +gtk_symbolic_color_new_name +gtk_symbolic_color_new_shade +gtk_symbolic_color_ref +gtk_symbolic_color_resolve +gtk_symbolic_color_unref gtk_table_attach gtk_table_attach_defaults gtk_table_get_col_spacing @@ -2661,9 +2907,32 @@ gtk_text_view_set_wrap_mode gtk_text_view_starts_display_line gtk_text_view_window_to_buffer_coords gtk_text_window_type_get_type G_GNUC_CONST -gtk_theme_engine_create_rc_style -gtk_theme_engine_get -gtk_theme_engine_get_type G_GNUC_CONST +gtk_theming_engine_get +gtk_theming_engine_get_background_color +gtk_theming_engine_get_border +gtk_theming_engine_get_border_color +gtk_theming_engine_get_color +gtk_theming_engine_get_direction +gtk_theming_engine_get_font +gtk_theming_engine_get_junction_sides +gtk_theming_engine_get_margin +gtk_theming_engine_get_padding +gtk_theming_engine_get_path +gtk_theming_engine_get_property +gtk_theming_engine_get_screen +gtk_theming_engine_get_state +gtk_theming_engine_get_style +gtk_theming_engine_get_style_property +gtk_theming_engine_get_style_valist +gtk_theming_engine_get_type +gtk_theming_engine_get_valist +gtk_theming_engine_has_class +gtk_theming_engine_has_region +gtk_theming_engine_load +gtk_theming_engine_lookup_color +gtk_theming_engine_register_property +gtk_theming_engine_state_is_running +gtk_theming_module_get_type gtk_toggle_action_get_active gtk_toggle_action_get_draw_as_radio gtk_toggle_action_get_type G_GNUC_CONST @@ -2812,7 +3081,9 @@ gtk_tooltip_set_markup gtk_tooltip_set_text gtk_tooltip_set_tip_area gtk_tooltip_trigger_tooltip_query +#ifdef GDK_WINDOWING_X11 gtk_tray_icon_get_type G_GNUC_CONST +#endif gtk_tree_drag_dest_drag_data_received gtk_tree_drag_dest_get_type G_GNUC_CONST gtk_tree_drag_dest_row_drop_possible @@ -2856,6 +3127,7 @@ gtk_tree_model_iter_n_children gtk_tree_model_iter_next gtk_tree_model_iter_nth_child gtk_tree_model_iter_parent +gtk_tree_model_iter_previous gtk_tree_model_ref_node gtk_tree_model_row_changed gtk_tree_model_row_deleted @@ -2970,6 +3242,7 @@ gtk_tree_view_column_clear_attributes gtk_tree_view_column_clicked gtk_tree_view_column_focus_cell gtk_tree_view_column_get_alignment +gtk_tree_view_column_get_button gtk_tree_view_column_get_clickable gtk_tree_view_column_get_expand gtk_tree_view_column_get_fixed_width @@ -2989,6 +3262,7 @@ gtk_tree_view_column_get_visible gtk_tree_view_column_get_widget gtk_tree_view_column_get_width gtk_tree_view_column_new +gtk_tree_view_column_new_with_area gtk_tree_view_column_new_with_attributes G_GNUC_NULL_TERMINATED gtk_tree_view_column_pack_end gtk_tree_view_column_pack_start @@ -3067,6 +3341,7 @@ gtk_tree_view_grid_lines_get_type G_GNUC_CONST gtk_tree_view_insert_column gtk_tree_view_insert_column_with_attributes G_GNUC_NULL_TERMINATED gtk_tree_view_insert_column_with_data_func +gtk_tree_view_is_blank_at_pos gtk_tree_view_is_rubber_banding_active gtk_tree_view_map_expanded_rows gtk_tree_view_move_column_after @@ -3128,7 +3403,6 @@ gtk_ui_manager_remove_action_group gtk_ui_manager_remove_ui gtk_ui_manager_set_add_tearoffs gtk_unit_get_type G_GNUC_CONST -gtk_update_type_get_type G_GNUC_CONST gtk_vbox_get_type G_GNUC_CONST gtk_vbox_new gtk_vbutton_box_get_type G_GNUC_CONST @@ -3192,12 +3466,12 @@ gtk_widget_get_clipboard gtk_widget_get_composite_name gtk_widget_get_default_direction gtk_widget_get_default_style +gtk_widget_get_device_enabled gtk_widget_get_device_events gtk_widget_get_direction gtk_widget_get_display gtk_widget_get_double_buffered gtk_widget_get_events -gtk_widget_get_extension_events gtk_widget_get_halign gtk_widget_get_has_tooltip gtk_widget_get_has_window @@ -3214,6 +3488,7 @@ gtk_widget_get_no_show_all gtk_widget_get_pango_context gtk_widget_get_parent gtk_widget_get_parent_window +gtk_widget_get_path gtk_widget_get_pointer gtk_widget_get_preferred_height gtk_widget_get_preferred_height_for_width @@ -3230,7 +3505,9 @@ gtk_widget_get_sensitive gtk_widget_get_settings gtk_widget_get_size_request gtk_widget_get_state +gtk_widget_get_state_flags gtk_widget_get_style +gtk_widget_get_style_context gtk_widget_get_support_multidevice gtk_widget_get_tooltip_markup gtk_widget_get_tooltip_text @@ -3277,9 +3554,38 @@ gtk_widget_modify_text gtk_widget_new gtk_widget_override_background_color gtk_widget_override_color +gtk_widget_override_cursor gtk_widget_override_font gtk_widget_override_symbolic_color gtk_widget_path +gtk_widget_path_append_type +gtk_widget_path_copy +gtk_widget_path_free +gtk_widget_path_get_type G_GNUC_CONST +gtk_widget_path_get_object_type +gtk_widget_path_has_parent +gtk_widget_path_is_type +gtk_widget_path_iter_add_class +gtk_widget_path_iter_add_region +gtk_widget_path_iter_clear_classes +gtk_widget_path_iter_clear_regions +gtk_widget_path_iter_get_name +gtk_widget_path_iter_get_object_type +gtk_widget_path_iter_has_class +gtk_widget_path_iter_has_name +gtk_widget_path_iter_has_qclass +gtk_widget_path_iter_has_qname +gtk_widget_path_iter_has_qregion +gtk_widget_path_iter_has_region +gtk_widget_path_iter_list_classes +gtk_widget_path_iter_list_regions +gtk_widget_path_iter_remove_class +gtk_widget_path_iter_remove_region +gtk_widget_path_iter_set_name +gtk_widget_path_iter_set_object_type +gtk_widget_path_length +gtk_widget_path_new +gtk_widget_path_prepend_type gtk_widget_pop_composite_child gtk_widget_push_composite_child gtk_widget_queue_compute_expand @@ -3296,7 +3602,7 @@ gtk_widget_render_icon gtk_widget_render_icon_pixbuf gtk_widget_reparent gtk_widget_reset_rc_styles -gtk_widget_reset_shapes +gtk_widget_reset_style gtk_widget_send_expose gtk_widget_send_focus_change gtk_widget_set_accel_path @@ -3307,11 +3613,11 @@ gtk_widget_set_can_focus gtk_widget_set_child_visible gtk_widget_set_composite_name gtk_widget_set_default_direction +gtk_widget_set_device_enabled gtk_widget_set_device_events gtk_widget_set_direction gtk_widget_set_double_buffered gtk_widget_set_events -gtk_widget_set_extension_events gtk_widget_set_halign gtk_widget_set_has_tooltip gtk_widget_set_has_window @@ -3332,6 +3638,7 @@ gtk_widget_set_redraw_on_allocate gtk_widget_set_sensitive gtk_widget_set_size_request gtk_widget_set_state +gtk_widget_set_state_flags gtk_widget_set_style gtk_widget_set_support_multidevice gtk_widget_set_tooltip_markup @@ -3359,6 +3666,7 @@ gtk_widget_trigger_tooltip_query gtk_widget_unmap gtk_widget_unparent gtk_widget_unrealize +gtk_widget_unset_state_flags #ifdef GDK_WINDOWING_WIN32 gtk_win32_embed_widget_get_type G_GNUC_CONST #endif @@ -3383,10 +3691,8 @@ gtk_window_get_deletable gtk_window_get_destroy_with_parent gtk_window_get_focus gtk_window_get_focus_on_map -gtk_window_get_frame_dimensions gtk_window_get_gravity gtk_window_get_group -gtk_window_get_has_frame gtk_window_get_has_resize_grip gtk_window_get_icon gtk_window_get_icon_list @@ -3452,11 +3758,10 @@ gtk_window_set_deletable gtk_window_set_destroy_with_parent gtk_window_set_focus gtk_window_set_focus_on_map -gtk_window_set_frame_dimensions gtk_window_set_geometry_hints gtk_window_set_gravity -gtk_window_set_has_frame gtk_window_set_has_resize_grip +gtk_window_set_has_user_ref_count gtk_window_set_icon gtk_window_set_icon_from_file gtk_window_set_icon_list diff --git a/gtk/gtk9slice.c b/gtk/gtk9slice.c index c3e824b4d5..1f2e517131 100644 --- a/gtk/gtk9slice.c +++ b/gtk/gtk9slice.c @@ -44,18 +44,18 @@ struct Gtk9Slice gint ref_count; }; -G_DEFINE_BOXED_TYPE (Gtk9Slice, gtk_9slice, - gtk_9slice_ref, gtk_9slice_unref) +G_DEFINE_BOXED_TYPE (Gtk9Slice, _gtk_9slice, + _gtk_9slice_ref, _gtk_9slice_unref) Gtk9Slice * -gtk_9slice_new (GdkPixbuf *pixbuf, - gdouble distance_top, - gdouble distance_bottom, - gdouble distance_left, - gdouble distance_right, - GtkSliceSideModifier horizontal_modifier, - GtkSliceSideModifier vertical_modifier) +_gtk_9slice_new (GdkPixbuf *pixbuf, + gdouble distance_top, + gdouble distance_bottom, + gdouble distance_left, + gdouble distance_right, + GtkSliceSideModifier horizontal_modifier, + GtkSliceSideModifier vertical_modifier) { Gtk9Slice *slice; cairo_surface_t *surface; @@ -264,12 +264,12 @@ render_corner (cairo_t *cr, } void -gtk_9slice_render (Gtk9Slice *slice, - cairo_t *cr, - gdouble x, - gdouble y, - gdouble width, - gdouble height) +_gtk_9slice_render (Gtk9Slice *slice, + cairo_t *cr, + gdouble x, + gdouble y, + gdouble width, + gdouble height) { int img_width, img_height; cairo_surface_t *surface; @@ -347,7 +347,7 @@ gtk_9slice_render (Gtk9Slice *slice, } Gtk9Slice * -gtk_9slice_ref (Gtk9Slice *slice) +_gtk_9slice_ref (Gtk9Slice *slice) { g_return_val_if_fail (slice != NULL, NULL); @@ -356,7 +356,7 @@ gtk_9slice_ref (Gtk9Slice *slice) } void -gtk_9slice_unref (Gtk9Slice *slice) +_gtk_9slice_unref (Gtk9Slice *slice) { g_return_if_fail (slice != NULL); diff --git a/gtk/gtk9slice.h b/gtk/gtk9slice.h index 10e3df079d..72b5efd435 100644 --- a/gtk/gtk9slice.h +++ b/gtk/gtk9slice.h @@ -27,32 +27,32 @@ G_BEGIN_DECLS /* Dummy typedefs */ typedef struct Gtk9Slice Gtk9Slice; -#define GTK_TYPE_9SLICE (gtk_9slice_get_type ()) +#define GTK_TYPE_9SLICE (_gtk_9slice_get_type ()) typedef enum { GTK_SLICE_REPEAT, GTK_SLICE_STRETCH } GtkSliceSideModifier; -GType gtk_9slice_get_type (void) G_GNUC_CONST; +GType _gtk_9slice_get_type (void) G_GNUC_CONST; -Gtk9Slice * gtk_9slice_new (GdkPixbuf *pixbuf, - gdouble distance_top, - gdouble distance_bottom, - gdouble distance_left, - gdouble distance_right, - GtkSliceSideModifier horizontal_modifier, - GtkSliceSideModifier vertical_modifier); +Gtk9Slice * _gtk_9slice_new (GdkPixbuf *pixbuf, + gdouble distance_top, + gdouble distance_bottom, + gdouble distance_left, + gdouble distance_right, + GtkSliceSideModifier horizontal_modifier, + GtkSliceSideModifier vertical_modifier); -Gtk9Slice * gtk_9slice_ref (Gtk9Slice *slice); -void gtk_9slice_unref (Gtk9Slice *slice); +Gtk9Slice * _gtk_9slice_ref (Gtk9Slice *slice); +void _gtk_9slice_unref (Gtk9Slice *slice); -void gtk_9slice_render (Gtk9Slice *slice, - cairo_t *cr, - gdouble x, - gdouble y, - gdouble width, - gdouble height); +void _gtk_9slice_render (Gtk9Slice *slice, + cairo_t *cr, + gdouble x, + gdouble y, + gdouble width, + gdouble height); G_END_DECLS diff --git a/gtk/gtkaboutdialog.c b/gtk/gtkaboutdialog.c index 677f16acb9..414355e971 100644 --- a/gtk/gtkaboutdialog.c +++ b/gtk/gtkaboutdialog.c @@ -32,26 +32,29 @@ #include -#include - #include "gtkaboutdialog.h" +#include "gtkalignment.h" #include "gtkbutton.h" #include "gtkbbox.h" #include "gtkdialog.h" +#include "gtkgrid.h" #include "gtkhbox.h" #include "gtkimage.h" #include "gtklabel.h" #include "gtklinkbutton.h" #include "gtkmarshalers.h" #include "gtknotebook.h" +#include "gtkorientable.h" #include "gtkscrolledwindow.h" #include "gtkstock.h" #include "gtktextview.h" #include "gtkvbox.h" #include "gtkiconfactory.h" #include "gtkshow.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmessagedialog.h" +#include "gtktogglebutton.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -98,7 +101,7 @@ static GdkColor default_visited_link_color = { 0, 0x5555, 0x1a1a, 0x8b8b }; /* Translators: this is the license preamble; the string at the end * contains the URL of the license. */ -static const gchar *gtk_license_preamble = N_("This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s"); +static const gchar *gtk_license_preamble = N_("This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s"); /* URLs for each GtkLicense type; keep in the same order as the enumeration */ static const gchar *gtk_license_urls[] = { @@ -132,16 +135,20 @@ struct _GtkAboutDialogPrivate gchar **documenters; gchar **artists; + gint credits_page; + gint license_page; + + GtkWidget *notebook; GtkWidget *logo_image; GtkWidget *name_label; + GtkWidget *version_label; GtkWidget *comments_label; GtkWidget *copyright_label; + GtkWidget *license_label; GtkWidget *website_label; GtkWidget *credits_button; - GtkWidget *credits_dialog; GtkWidget *license_button; - GtkWidget *license_dialog; GdkCursor *hand_cursor; GdkCursor *regular_cursor; @@ -197,9 +204,9 @@ static void set_cursor_if_appropriate (GtkAboutDialog GdkDevice *device, gint x, gint y); -static void display_credits_dialog (GtkWidget *button, +static void display_credits_page (GtkWidget *button, gpointer data); -static void display_license_dialog (GtkWidget *button, +static void display_license_page (GtkWidget *button, gpointer data); static void close_cb (GtkAboutDialog *about); static gboolean gtk_about_dialog_activate_link (GtkAboutDialog *about, @@ -390,8 +397,7 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass) /** * GtkAboutDialog:website-label: * - * The label for the link to the website of the program. If this is not set, - * it defaults to the URL specified in the #GtkAboutDialog:website property. + * The label for the link to the website of the program. * * Since: 2.6 */ @@ -399,7 +405,7 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass) PROP_WEBSITE_LABEL, g_param_spec_string ("website-label", P_("Website label"), - P_("The label for the link to the website of the program. If this is not set, it defaults to the URL"), + P_("The label for the link to the website of the program"), NULL, GTK_PARAM_READWRITE)); @@ -533,12 +539,100 @@ emit_activate_link (GtkAboutDialog *about, return TRUE; } +static void +update_license_button_visibility (GtkAboutDialog *about) +{ + GtkAboutDialogPrivate *priv = about->priv; + + if (priv->license_type == GTK_LICENSE_CUSTOM && priv->license != NULL) + gtk_widget_show (priv->license_button); + else + gtk_widget_hide (priv->license_button); +} + +static void +update_credits_button_visibility (GtkAboutDialog *about) +{ + GtkAboutDialogPrivate *priv = about->priv; + gboolean show; + + show = (priv->authors != NULL || + priv->documenters != NULL || + priv->artists != NULL || + (priv->translator_credits != NULL && + strcmp (priv->translator_credits, "translator_credits") && + strcmp (priv->translator_credits, "translator-credits"))); + if (show) + gtk_widget_show (priv->credits_button); + else + gtk_widget_hide (priv->credits_button); +} + +static void +switch_page (GtkAboutDialog *about, + gint page) +{ + GtkAboutDialogPrivate *priv = about->priv; + + gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), page); +} + +static void +display_main_page (GtkButton *button, + gpointer data) +{ + GtkAboutDialog *about = (GtkAboutDialog *)data; + + switch_page (about, 0); +} + +static void +credits_button_clicked (GtkButton *button, + gpointer data) +{ + GtkAboutDialog *about = (GtkAboutDialog *)data; + GtkAboutDialogPrivate *priv = about->priv; + gboolean active; + + active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)); + + if (active) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->license_button), FALSE); + display_credits_page (NULL, data); + } + else + { + display_main_page (NULL, data); + } +} + +static void +license_button_clicked (GtkButton *button, + gpointer data) +{ + GtkAboutDialog *about = (GtkAboutDialog *)data; + GtkAboutDialogPrivate *priv = about->priv; + gboolean active; + + active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)); + + if (active) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->credits_button), FALSE); + display_license_page (NULL, data); + } + else + { + display_main_page (NULL, data); + } +} static void gtk_about_dialog_init (GtkAboutDialog *about) { GtkDialog *dialog = GTK_DIALOG (about); GtkAboutDialogPrivate *priv; - GtkWidget *vbox, *hbox, *button, *close_button, *image; + GtkWidget *vbox, *page_vbox, *hbox, *button, *close_button, *image; GtkWidget *content_area, *action_area; /* Data */ @@ -574,7 +668,7 @@ gtk_about_dialog_init (GtkAboutDialog *about) /* Widgets */ gtk_widget_push_composite_child (); - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); gtk_box_pack_start (GTK_BOX (content_area), vbox, TRUE, TRUE, 0); @@ -586,20 +680,30 @@ gtk_about_dialog_init (GtkAboutDialog *about) gtk_label_set_justify (GTK_LABEL (priv->name_label), GTK_JUSTIFY_CENTER); gtk_box_pack_start (GTK_BOX (vbox), priv->name_label, FALSE, FALSE, 0); + priv->notebook = gtk_notebook_new (); + gtk_box_pack_start (GTK_BOX (vbox), priv->notebook, TRUE, TRUE, 0); + gtk_widget_set_size_request (priv->notebook, 400, 100); + + page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8); + gtk_widget_show (page_vbox); + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE); + gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->notebook), FALSE); + gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), page_vbox, NULL); + + priv->version_label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (priv->version_label), TRUE); + gtk_label_set_justify (GTK_LABEL (priv->version_label), GTK_JUSTIFY_CENTER); + gtk_box_pack_start (GTK_BOX (page_vbox), priv->version_label, FALSE, FALSE, 0); + priv->comments_label = gtk_label_new (NULL); gtk_label_set_selectable (GTK_LABEL (priv->comments_label), TRUE); gtk_label_set_justify (GTK_LABEL (priv->comments_label), GTK_JUSTIFY_CENTER); gtk_label_set_line_wrap (GTK_LABEL (priv->comments_label), TRUE); - gtk_box_pack_start (GTK_BOX (vbox), priv->comments_label, FALSE, FALSE, 0); - - priv->copyright_label = gtk_label_new (NULL); - gtk_label_set_selectable (GTK_LABEL (priv->copyright_label), TRUE); - gtk_label_set_justify (GTK_LABEL (priv->copyright_label), GTK_JUSTIFY_CENTER); - gtk_box_pack_start (GTK_BOX (vbox), priv->copyright_label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (page_vbox), priv->comments_label, FALSE, FALSE, 0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous (GTK_BOX (hbox), TRUE); - gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (page_vbox), hbox, FALSE, FALSE, 0); priv->website_label = button = gtk_label_new (""); gtk_widget_set_no_show_all (button, TRUE); @@ -608,7 +712,20 @@ gtk_about_dialog_init (GtkAboutDialog *about) g_signal_connect_swapped (button, "activate-link", G_CALLBACK (emit_activate_link), about); + priv->license_label = gtk_label_new (NULL); + gtk_label_set_use_markup (GTK_LABEL (priv->license_label), TRUE); + gtk_label_set_selectable (GTK_LABEL (priv->license_label), TRUE); + gtk_label_set_justify (GTK_LABEL (priv->license_label), GTK_JUSTIFY_CENTER); + gtk_box_pack_end (GTK_BOX (page_vbox), priv->license_label, FALSE, FALSE, 0); + gtk_label_set_line_wrap (GTK_LABEL (priv->license_label), TRUE); + + priv->copyright_label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (priv->copyright_label), TRUE); + gtk_label_set_justify (GTK_LABEL (priv->copyright_label), GTK_JUSTIFY_CENTER); + gtk_box_pack_end (GTK_BOX (page_vbox), priv->copyright_label, FALSE, FALSE, 0); + gtk_widget_show (vbox); + gtk_widget_show (priv->notebook); gtk_widget_show (priv->logo_image); gtk_widget_show (priv->name_label); gtk_widget_show (hbox); @@ -619,30 +736,30 @@ gtk_about_dialog_init (GtkAboutDialog *about) gtk_dialog_set_default_response (GTK_DIALOG (about), GTK_RESPONSE_CANCEL); /* Add the credits button */ - button = gtk_button_new_with_mnemonic (_("C_redits")); + button = gtk_toggle_button_new_with_mnemonic (_("C_redits")); gtk_widget_set_can_default (button, TRUE); image = gtk_image_new_from_stock (GTK_STOCK_ABOUT, GTK_ICON_SIZE_BUTTON); gtk_button_set_image (GTK_BUTTON (button), image); gtk_widget_set_no_show_all (button, TRUE); - gtk_box_pack_end (GTK_BOX (action_area), - button, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (action_area), button, FALSE, TRUE, 0); gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE); g_signal_connect (button, "clicked", - G_CALLBACK (display_credits_dialog), about); + G_CALLBACK (credits_button_clicked), about); priv->credits_button = button; - priv->credits_dialog = NULL; + priv->credits_page = 0; /* Add the license button */ - button = gtk_button_new_from_stock (_("_License")); + button = gtk_toggle_button_new_with_mnemonic (_("_License")); gtk_widget_set_can_default (button, TRUE); gtk_widget_set_no_show_all (button, TRUE); - gtk_box_pack_end (GTK_BOX (action_area), - button, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (action_area), button, FALSE, TRUE, 0); gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE); g_signal_connect (button, "clicked", - G_CALLBACK (display_license_dialog), about); + G_CALLBACK (license_button_clicked), about); priv->license_button = button; - priv->license_dialog = NULL; + priv->license_page = 0; + + switch_page (about, 0); gtk_window_set_resizable (GTK_WINDOW (about), FALSE); @@ -678,8 +795,8 @@ gtk_about_dialog_finalize (GObject *object) g_slist_foreach (priv->visited_links, (GFunc)g_free, NULL); g_slist_free (priv->visited_links); - gdk_cursor_unref (priv->hand_cursor); - gdk_cursor_unref (priv->regular_cursor); + g_object_unref (priv->hand_cursor); + g_object_unref (priv->regular_cursor); G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object); } @@ -874,7 +991,7 @@ update_website (GtkAboutDialog *about) else { markup = g_strdup_printf ("%s", - priv->website_url, priv->website_url); + priv->website_url, _("Homepage")); } gtk_label_set_markup (GTK_LABEL (priv->website_label), markup); @@ -882,9 +999,7 @@ update_website (GtkAboutDialog *about) } else { - if (priv->website_url) - gtk_label_set_text (GTK_LABEL (priv->website_label), priv->website_url); - else if (priv->website_text) + if (priv->website_text) gtk_label_set_text (GTK_LABEL (priv->website_label), priv->website_text); else gtk_widget_hide (priv->website_label); @@ -935,14 +1050,16 @@ update_name_version (GtkAboutDialog *about) g_free (title_string); if (priv->version != NULL) - name_string = g_markup_printf_escaped ("%s %s", - priv->name, priv->version); + { + gtk_label_set_markup (GTK_LABEL (priv->version_label), priv->version); + gtk_widget_show (priv->version_label); + } else - name_string = g_markup_printf_escaped ("%s", - priv->name); + gtk_widget_hide (priv->version_label); + name_string = g_markup_printf_escaped ("%s", + priv->name); gtk_label_set_markup (GTK_LABEL (priv->name_label), name_string); - g_free (name_string); } @@ -1187,16 +1304,18 @@ gtk_about_dialog_set_license (GtkAboutDialog *about, { priv->license = g_strdup (license); priv->license_type = GTK_LICENSE_CUSTOM; - gtk_widget_show (priv->license_button); } else { priv->license = NULL; priv->license_type = GTK_LICENSE_UNKNOWN; - gtk_widget_hide (priv->license_button); } g_free (tmp); + gtk_widget_hide (priv->license_label); + + update_license_button_visibility (about); + g_object_notify (G_OBJECT (about), "license"); g_object_notify (G_OBJECT (about), "license-type"); } @@ -1331,7 +1450,6 @@ gtk_about_dialog_get_website_label (GtkAboutDialog *about) * @website_label: the label used for the website link * * Sets the label to be used for the website link. - * It defaults to the website URL. * * Since: 2.6 */ @@ -1380,24 +1498,6 @@ gtk_about_dialog_get_authors (GtkAboutDialog *about) return (const gchar * const *) priv->authors; } -static void -update_credits_button_visibility (GtkAboutDialog *about) -{ - GtkAboutDialogPrivate *priv = about->priv; - gboolean show; - - show = priv->authors != NULL || - priv->documenters != NULL || - priv->artists != NULL || - (priv->translator_credits != NULL && - strcmp (priv->translator_credits, "translator_credits") && - strcmp (priv->translator_credits, "translator-credits")); - if (show) - gtk_widget_show (priv->credits_button); - else - gtk_widget_hide (priv->credits_button); -} - /** * gtk_about_dialog_set_authors: * @about: a #GtkAboutDialog @@ -1778,7 +1878,6 @@ follow_if_link (GtkAboutDialog *about, GdkColor *style_visited_link_color; GdkColor color; - gtk_widget_ensure_style (GTK_WIDGET (about)); gtk_widget_style_get (GTK_WIDGET (about), "visited-link-color", &style_visited_link_color, NULL); @@ -1940,6 +2039,9 @@ text_view_visibility_notify_event (GtkWidget *text_view, { GdkDevice *dev = d->data; + if (gdk_device_get_source (dev) == GDK_SOURCE_KEYBOARD) + continue; + gdk_window_get_device_position (gtk_widget_get_window (text_view), dev, &wx, &wy, NULL); @@ -1955,7 +2057,6 @@ text_view_visibility_notify_event (GtkWidget *text_view, static GtkWidget * text_view_new (GtkAboutDialog *about, - GtkWidget *dialog, gchar **strings, GtkWrapMode wrap_mode) { @@ -1969,10 +2070,12 @@ text_view_new (GtkAboutDialog *about, GdkColor color; GdkColor link_color; GdkColor visited_link_color; - + gint size; + PangoFontDescription *font_desc; GtkAboutDialogPrivate *priv = about->priv; + GtkStyleContext *context; + GtkStateFlags state; - gtk_widget_ensure_style (GTK_WIDGET (about)); gtk_widget_style_get (GTK_WIDGET (about), "link-color", &style_link_color, "visited-link-color", &style_visited_link_color, @@ -2000,6 +2103,15 @@ text_view_new (GtkAboutDialog *about, gtk_text_view_set_editable (text_view, FALSE); gtk_text_view_set_wrap_mode (text_view, wrap_mode); + context = gtk_widget_get_style_context (view); + state = gtk_widget_get_state_flags (view); + + size = pango_font_description_get_size (gtk_style_context_get_font (context, state)); + font_desc = pango_font_description_new (); + pango_font_description_set_size (font_desc, size * PANGO_SCALE_SMALL); + gtk_widget_modify_font (view, font_desc); + pango_font_description_free (font_desc); + gtk_text_view_set_left_margin (text_view, 8); gtk_text_view_set_right_margin (text_view, 8); @@ -2051,7 +2163,7 @@ text_view_new (GtkAboutDialog *about, if (*q1 == '<') { - gtk_text_buffer_insert_at_cursor (buffer, q0, (q1 - q0) + 1); + gtk_text_buffer_insert_at_cursor (buffer, q0, q1 - q0 + 1); gtk_text_buffer_get_end_iter (buffer, &end); q1++; link_type = "email"; @@ -2109,172 +2221,230 @@ text_view_new (GtkAboutDialog *about, } static void -add_credits_page (GtkAboutDialog *about, - GtkWidget *credits_dialog, - GtkWidget *notebook, - gchar *title, - gchar **people) +add_credits_section (GtkAboutDialog *about, + GtkGrid *grid, + gint *row, + gchar *title, + gchar **people) { - GtkWidget *sw, *view; + GtkWidget *label; + gchar *markup; + gchar **p; + gchar *q0, *q1, *q2, *r1, *r2; - view = text_view_new (about, credits_dialog, people, GTK_WRAP_NONE); + if (people == NULL) + return; - sw = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), - GTK_SHADOW_IN); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (sw), view); + markup = g_strdup_printf ("%s", title); + label = gtk_label_new (markup); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + g_free (markup); + gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); + gtk_grid_attach (grid, label, 0, *row, 1, 1); - gtk_notebook_append_page (GTK_NOTEBOOK (notebook), - sw, gtk_label_new (title)); + for (p = people; *p; p++) + { + GString *str; + + str = g_string_new (""); + + q0 = *p; + while (*q0) + { + q1 = strchr (q0, '<'); + q2 = q1 ? strchr (q1, '>') : NULL; + r1 = strstr (q0, "http://"); + if (r1) + { + r2 = strpbrk (r1, " \n\t"); + if (!r2) + r2 = strchr (r1, '\0'); + } + else + r2 = NULL; + + if (r1 && r2 && (!q1 || !q2 || (r1 < q1))) + { + q1 = r1; + q2 = r2; + } + else if (q1 && (q1[1] == 'a' || q1[1] == 'A') && q1[2] == ' ') + { + /* if it is a link leave it for the label to parse */ + q1 = NULL; + } + + if (q1 && q2) + { + gchar *link; + gchar *text; + gchar *name; + + if (*q1 == '<') + { + /* email */ + gchar *escaped; + + text = g_strstrip (g_strndup (q0, q1 - q0)); + name = g_markup_escape_text (text, -1); + q1++; + link = g_strndup (q1, q2 - q1); + q2++; + escaped = g_uri_escape_string (link, NULL, FALSE); + g_string_append_printf (str, + "%s", + escaped, + name[0] ? name : link); + g_free (escaped); + g_free (link); + g_free (text); + g_free (name); + } + else + { + /* uri */ + text = g_strstrip (g_strndup (q0, q1 - q0)); + name = g_markup_escape_text (text, -1); + link = g_strndup (q1, q2 - q1); + g_string_append_printf (str, + "%s", + link, + name[0] ? name : link); + g_free (link); + g_free (text); + g_free (name); + } + + q0 = q2; + } + else + { + g_string_append (str, q0); + break; + } + } + g_string_append (str, ""); + + label = gtk_label_new (str->str); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + g_string_free (str, TRUE); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_grid_attach (grid, label, 1, *row, 1, 1); + (*row)++; + } + + /* skip one at the end */ + (*row)++; } static void -display_credits_dialog (GtkWidget *button, - gpointer data) +create_credits_page (GtkAboutDialog *about) { - GtkAboutDialog *about = (GtkAboutDialog *)data; GtkAboutDialogPrivate *priv = about->priv; - GtkWidget *dialog, *notebook; - GtkDialog *credits_dialog; - GtkWidget *content_area; - GtkWidget *action_area; + GtkWidget *page_vbox; + GtkWidget *sw; + GtkWidget *grid; + GtkWidget *alignment; + gint row; - if (priv->credits_dialog != NULL) - { - gtk_window_present (GTK_WINDOW (priv->credits_dialog)); - return; - } + page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8); + gtk_widget_show (page_vbox); + priv->credits_page = gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), page_vbox, NULL); - dialog = gtk_dialog_new_with_buttons (_("Credits"), - GTK_WINDOW (about), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, - NULL); - credits_dialog = GTK_DIALOG (dialog); + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_NONE); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (page_vbox), sw, TRUE, TRUE, 0); - content_area = gtk_dialog_get_content_area (credits_dialog); - action_area = gtk_dialog_get_action_area (credits_dialog); + alignment = gtk_alignment_new (0.5, 0, 0, 0); + gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), alignment); - gtk_container_set_border_width (GTK_CONTAINER (credits_dialog), 5); - gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */ - gtk_container_set_border_width (GTK_CONTAINER (action_area), 5); - - priv->credits_dialog = dialog; - gtk_window_set_default_size (GTK_WINDOW (dialog), 360, 260); - gtk_dialog_set_default_response (credits_dialog, GTK_RESPONSE_CANCEL); - - gtk_window_set_modal (GTK_WINDOW (dialog), - gtk_window_get_modal (GTK_WINDOW (about))); - - g_signal_connect (dialog, "response", - G_CALLBACK (gtk_widget_destroy), dialog); - g_signal_connect (dialog, "destroy", - G_CALLBACK (gtk_widget_destroyed), - &(priv->credits_dialog)); - - notebook = gtk_notebook_new (); - gtk_container_set_border_width (GTK_CONTAINER (notebook), 5); - gtk_box_pack_start (GTK_BOX (content_area), notebook, TRUE, TRUE, 0); + grid = gtk_grid_new (); + gtk_container_set_border_width (GTK_CONTAINER (grid), 5); + gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_VERTICAL); + gtk_grid_set_column_spacing (GTK_GRID (grid), 2); + gtk_grid_set_row_spacing (GTK_GRID (grid), 12); + gtk_container_add (GTK_CONTAINER (alignment), grid); if (priv->authors != NULL) - add_credits_page (about, dialog, notebook, _("Written by"), priv->authors); + add_credits_section (about, GTK_GRID (grid), &row, _("Created by"), priv->authors); if (priv->documenters != NULL) - add_credits_page (about, dialog, notebook, _("Documented by"), priv->documenters); + add_credits_section (about, GTK_GRID (grid), &row, _("Documented by"), priv->documenters); /* Don't show an untranslated gettext msgid */ if (priv->translator_credits != NULL && strcmp (priv->translator_credits, "translator_credits") != 0 && strcmp (priv->translator_credits, "translator-credits") != 0) { - gchar *translators[2]; + gchar **translators; - translators[0] = priv->translator_credits; - translators[1] = NULL; - - add_credits_page (about, dialog, notebook, _("Translated by"), translators); + translators = g_strsplit (priv->translator_credits, "\n", 0); + add_credits_section (about, GTK_GRID (grid), &row, _("Translated by"), translators); + g_strfreev (translators); } if (priv->artists != NULL) - add_credits_page (about, dialog, notebook, _("Artwork by"), priv->artists); + add_credits_section (about, GTK_GRID (grid), &row, _("Artwork by"), priv->artists); - gtk_widget_show_all (dialog); + gtk_widget_show_all (sw); } static void -set_policy (GtkWidget *sw) -{ - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); -} - -static void -display_license_dialog (GtkWidget *button, - gpointer data) +display_credits_page (GtkWidget *button, + gpointer data) { GtkAboutDialog *about = (GtkAboutDialog *)data; GtkAboutDialogPrivate *priv = about->priv; - GtkWidget *dialog, *view, *sw; - GtkDialog *license_dialog; - GtkWidget *content_area; - GtkWidget *action_area; + + if (priv->credits_page == 0) + create_credits_page (about); + + switch_page (about, priv->credits_page); +} + +static void +create_license_page (GtkAboutDialog *about) +{ + GtkAboutDialogPrivate *priv = about->priv; + GtkWidget *page_vbox; + GtkWidget *sw; + GtkWidget *view; gchar *strings[2]; - if (priv->license_dialog != NULL) - { - gtk_window_present (GTK_WINDOW (priv->license_dialog)); - return; - } - - dialog = gtk_dialog_new_with_buttons (_("License"), - GTK_WINDOW (about), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, - NULL); - license_dialog = GTK_DIALOG (dialog); - - content_area = gtk_dialog_get_content_area (license_dialog); - action_area = gtk_dialog_get_action_area (license_dialog); - - gtk_container_set_border_width (GTK_CONTAINER (license_dialog), 5); - gtk_box_set_spacing (GTK_BOX (content_area), 2); /* 2 * 5 + 2 = 12 */ - gtk_container_set_border_width (GTK_CONTAINER (action_area), 5); - - priv->license_dialog = dialog; - gtk_window_set_default_size (GTK_WINDOW (dialog), 420, 320); - gtk_dialog_set_default_response (license_dialog, GTK_RESPONSE_CANCEL); - - gtk_window_set_modal (GTK_WINDOW (dialog), - gtk_window_get_modal (GTK_WINDOW (about))); - - g_signal_connect (dialog, "response", - G_CALLBACK (gtk_widget_destroy), dialog); - g_signal_connect (dialog, "destroy", - G_CALLBACK (gtk_widget_destroyed), - &(priv->license_dialog)); + page_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8); + priv->license_page = gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), page_vbox, NULL); sw = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (sw), 5); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), - GTK_SHADOW_IN); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), - GTK_POLICY_NEVER, - GTK_POLICY_AUTOMATIC); - g_signal_connect (sw, "map", G_CALLBACK (set_policy), NULL); - gtk_box_pack_start (GTK_BOX (content_area), sw, TRUE, TRUE, 0); + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (page_vbox), sw, TRUE, TRUE, 0); strings[0] = priv->license; strings[1] = NULL; - view = text_view_new (about, dialog, strings, + view = text_view_new (about, strings, priv->wrap_license ? GTK_WRAP_WORD : GTK_WRAP_NONE); gtk_container_add (GTK_CONTAINER (sw), view); - gtk_widget_show_all (dialog); + gtk_widget_show_all (page_vbox); +} + +static void +display_license_page (GtkWidget *button, + gpointer data) +{ + GtkAboutDialog *about = (GtkAboutDialog *)data; + GtkAboutDialogPrivate *priv = about->priv; + + if (priv->license_page == 0) + create_license_page (about); + + switch_page (about, priv->license_page); } /** @@ -2297,22 +2467,8 @@ gtk_about_dialog_new (void) static void close_cb (GtkAboutDialog *about) { - GtkAboutDialogPrivate *priv = about->priv; - - if (priv->license_dialog != NULL) - { - gtk_widget_destroy (priv->license_dialog); - priv->license_dialog = NULL; - } - - if (priv->credits_dialog != NULL) - { - gtk_widget_destroy (priv->credits_dialog); - priv->credits_dialog = NULL; - } - + switch_page (about, 0); gtk_widget_hide (GTK_WIDGET (about)); - } /** @@ -2360,6 +2516,7 @@ gtk_show_about_dialog (GtkWindow *parent, if (parent) { + gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); g_object_set_data_full (G_OBJECT (parent), @@ -2409,37 +2566,35 @@ gtk_about_dialog_set_license_type (GtkAboutDialog *about, if (priv->license_type != GTK_LICENSE_CUSTOM) { const gchar *url; + gchar *license_string; GString *str; url = gtk_license_urls[priv->license_type]; if (url == NULL) url = priv->website_url; - /* compose the new license string as: - * - * \n - * \n - * ... - * \n - * \n - * license preamble + URL - * - */ str = g_string_sized_new (256); - g_string_append (str, priv->name); - g_string_append (str, "\n"); - g_string_append (str, priv->copyright); - g_string_append (str, "\n\n"); - g_string_append_printf (str, _(gtk_license_preamble), url); + g_string_append_printf (str, _(gtk_license_preamble), url, url); g_free (priv->license); priv->license = g_string_free (str, FALSE); priv->wrap_license = TRUE; - gtk_widget_show (priv->license_button); + + license_string = g_strdup_printf ("%s", + priv->license); + gtk_label_set_markup (GTK_LABEL (priv->license_label), license_string); + g_free (license_string); + gtk_widget_show (priv->license_label); + + update_license_button_visibility (about); g_object_notify (G_OBJECT (about), "wrap-license"); g_object_notify (G_OBJECT (about), "license"); } + else + { + gtk_widget_show (priv->license_label); + } g_object_notify (G_OBJECT (about), "license-type"); diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c index 39c63989e9..560386dd31 100644 --- a/gtk/gtkaccelgroup.c +++ b/gtk/gtkaccelgroup.c @@ -30,11 +30,10 @@ #include "gtkaccelgroup.h" #include "gtkaccelgroupprivate.h" -#include "gtkaccellabel.h" /* For _gtk_accel_label_class_get_accelerator_label */ +#include "gtkaccellabel.h" #include "gtkaccelmap.h" #include "gtkintl.h" -#include "gtkmain.h" /* For _gtk_boolean_handled_accumulator */ -#include "gdk/gdkkeysyms.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" @@ -44,7 +43,7 @@ * @Title: Accelerator Groups * @See_also:gtk_window_add_accel_group(), gtk_accel_map_change_entry(), * gtk_item_factory_new(), gtk_label_new_with_mnemonic() - * + * * A #GtkAccelGroup represents a group of keyboard accelerators, * typically attached to a toplevel #GtkWindow (with * gtk_window_add_accel_group()). Usually you won't need to create a @@ -820,8 +819,11 @@ _gtk_accel_group_get_accelerables (GtkAccelGroup *accel_group) * @accel_group: the accelerator group to query * @accel_key: key value of the accelerator * @accel_mods: modifier combination of the accelerator - * @n_entries: (allow-none): location to return the number of entries found, or %NULL - * @returns: (allow-none): an array of @n_entries #GtkAccelGroupEntry elements, or %NULL. The array is owned by GTK+ and must not be freed. + * @n_entries: (allow-none): location to return the number of entries found, + * or %NULL + * @returns: (transfer none) (array length=n_entries): an array of + * @n_entries #GtkAccelGroupEntry elements, or %NULL. The array is + * owned by GTK+ and must not be freed. * * Queries an accelerator group for all entries matching @accel_key and * @accel_mods. @@ -951,11 +953,11 @@ gtk_accel_groups_activate (GObject *object, * @keyval: a GDK keyval * @modifiers: modifier mask * @returns: %TRUE if the accelerator is valid - * + * * Determines whether a given keyval and modifier mask constitute - * a valid keyboard accelerator. For example, the #GDK_a keyval + * a valid keyboard accelerator. For example, the #GDK_KEY_a keyval * plus #GDK_CONTROL_MASK is valid - this is a "Ctrl+a" accelerator. - * But, you can't, for instance, use the #GDK_Control_L keyval + * But, you can't, for instance, use the #GDK_KEY_Control_L keyval * as an accelerator. */ gboolean @@ -1139,8 +1141,8 @@ is_hyper (const gchar *string) /** * gtk_accelerator_parse: * @accelerator: string representing an accelerator - * @accelerator_key: return location for accelerator keyval - * @accelerator_mods: return location for accelerator modifier mask + * @accelerator_key: (out): return location for accelerator keyval + * @accelerator_mods: (out): return location for accelerator modifier mask * * Parses a string representing an accelerator. The * format looks like "<Control>a" or "<Shift><Alt>F1" or @@ -1279,11 +1281,11 @@ gtk_accelerator_parse (const gchar *accelerator, * gtk_accelerator_name: * @accelerator_key: accelerator keyval * @accelerator_mods: accelerator modifier mask - * + * * Converts an accelerator keyval and modifier mask * into a string parseable by gtk_accelerator_parse(). - * For example, if you pass in #GDK_q and #GDK_CONTROL_MASK, - * this function returns "<Control>q". + * For example, if you pass in #GDK_KEY_q and #GDK_CONTROL_MASK, + * this function returns "<Control>q". * * If you need to display accelerators in the user interface, * see gtk_accelerator_get_label(). diff --git a/gtk/gtkaccelgroup.h b/gtk/gtkaccelgroup.h index 5efe4fa87e..3195a91b3e 100644 --- a/gtk/gtkaccelgroup.h +++ b/gtk/gtkaccelgroup.h @@ -71,7 +71,7 @@ typedef gboolean (*GtkAccelGroupActivate) (GtkAccelGroup *accel_group, * GtkAccelGroupFindFunc: * @key: * @closure: - * @data: + * @data: (closure): * * Since: 2.2 */ diff --git a/gtk/gtkaccellabel.c b/gtk/gtkaccellabel.c index 6e5f06a5a8..e373542d29 100644 --- a/gtk/gtkaccellabel.c +++ b/gtk/gtkaccellabel.c @@ -37,8 +37,6 @@ #include "gtkprivate.h" #include "gtkintl.h" -#include - /** * SECTION:gtkaccellabel * @Short_description: A label which displays an accelerator key on the right of the text @@ -392,6 +390,7 @@ gtk_accel_label_draw (GtkWidget *widget, if (allocation.width >= requisition.width + ac_width) { + GtkStyleContext *context; PangoLayout *label_layout; PangoLayout *accel_layout; GtkLabel *label = GTK_LABEL (widget); @@ -400,6 +399,7 @@ gtk_accel_label_draw (GtkWidget *widget, gint y; gint xpad; + context = gtk_widget_get_style_context (widget); label_layout = gtk_label_get_layout (GTK_LABEL (accel_label)); cairo_save (cr); @@ -440,14 +440,12 @@ gtk_accel_label_draw (GtkWidget *widget, y += get_first_baseline (label_layout) - get_first_baseline (accel_layout) - allocation.y; - gtk_paint_layout (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - FALSE, - widget, - "accellabel", - x, y, - accel_layout); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_ACCELERATOR); + gtk_style_context_set_state (context, gtk_widget_get_state_flags (widget)); + + gtk_render_layout (context, cr, x, y, accel_layout); + gtk_style_context_restore (context); g_object_unref (accel_layout); } diff --git a/gtk/gtkaccelmap.c b/gtk/gtkaccelmap.c index de3745e2ce..26577738f6 100644 --- a/gtk/gtkaccelmap.c +++ b/gtk/gtkaccelmap.c @@ -22,7 +22,7 @@ #include "gtkaccelmap.h" #include "gtkmarshalers.h" -#include "gtkwindow.h" /* in lack of GtkAcceleratable */ +#include "gtkwindowprivate.h" #include "gtkintl.h" #include @@ -669,7 +669,7 @@ gtk_accel_map_load_fd (gint fd) /** * gtk_accel_map_load: - * @file_name: a file containing accelerator specifications, + * @file_name: (type filename): a file containing accelerator specifications, * in the GLib file name encoding * * Parses a file previously saved with gtk_accel_map_save() for @@ -780,8 +780,8 @@ gtk_accel_map_save_fd (gint fd) /** * gtk_accel_map_save: - * @file_name: the name of the file to contain accelerator specifications, - * in the GLib file name encoding + * @file_name: (type filename): the name of the file to contain + * accelerator specifications, in the GLib file name encoding * * Saves current accelerator specifications (accelerator path, key * and modifiers) to @file_name. diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c index 64b94bfd9d..c9a644107f 100644 --- a/gtk/gtkaction.c +++ b/gtk/gtkaction.c @@ -506,10 +506,11 @@ gtk_action_buildable_get_name (GtkBuildable *buildable) /** * gtk_action_new: * @name: A unique name for the action - * @label: (allow-none): the label displayed in menu items and on buttons, or %NULL + * @label: (allow-none): the label displayed in menu items and on buttons, + * or %NULL * @tooltip: (allow-none): a tooltip for the action, or %NULL - * @stock_id: the stock icon to display in widgets representing the - * action, or %NULL + * @stock_id: (allow-none): the stock icon to display in widgets representing + * the action, or %NULL * * Creates a new #GtkAction object. To add the action to a * #GtkActionGroup and set the accelerator for the action, diff --git a/gtk/gtkactiongroup.h b/gtk/gtkactiongroup.h index c77987c127..33fa000dfa 100644 --- a/gtk/gtkactiongroup.h +++ b/gtk/gtkactiongroup.h @@ -36,7 +36,7 @@ #define __GTK_ACTION_GROUP_H__ #include -#include /* for GtkTranslateFunc */ +#include G_BEGIN_DECLS diff --git a/gtk/gtkactivatable.c b/gtk/gtkactivatable.c index 6b93f32b84..c22690ccb4 100644 --- a/gtk/gtkactivatable.c +++ b/gtk/gtkactivatable.c @@ -263,7 +263,6 @@ #include "config.h" #include "gtkactivatable.h" #include "gtkactiongroup.h" -#include "gtktypeutils.h" #include "gtkprivate.h" #include "gtkintl.h" diff --git a/gtk/gtkactivatable.h b/gtk/gtkactivatable.h index 705bfa4e80..920b4a4eae 100644 --- a/gtk/gtkactivatable.h +++ b/gtk/gtkactivatable.h @@ -25,7 +25,6 @@ #define __GTK_ACTIVATABLE_H__ #include -#include G_BEGIN_DECLS diff --git a/gtk/gtkadjustment.c b/gtk/gtkadjustment.c index ae5e2926b2..40329a4ef3 100644 --- a/gtk/gtkadjustment.c +++ b/gtk/gtkadjustment.c @@ -52,6 +52,15 @@ */ +struct _GtkAdjustmentPrivate { + gdouble lower; + gdouble upper; + gdouble value; + gdouble step_increment; + gdouble page_increment; + gdouble page_size; +}; + enum { PROP_0, @@ -239,17 +248,16 @@ gtk_adjustment_class_init (GtkAdjustmentClass *class) NULL, NULL, _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); + + g_type_class_add_private (class, sizeof (GtkAdjustmentPrivate)); } static void gtk_adjustment_init (GtkAdjustment *adjustment) { - adjustment->value = 0.0; - adjustment->lower = 0.0; - adjustment->upper = 0.0; - adjustment->step_increment = 0.0; - adjustment->page_increment = 0.0; - adjustment->page_size = 0.0; + adjustment->priv = G_TYPE_INSTANCE_GET_PRIVATE (adjustment, + GTK_TYPE_ADJUSTMENT, + GtkAdjustmentPrivate); } static void @@ -259,26 +267,27 @@ gtk_adjustment_get_property (GObject *object, GParamSpec *pspec) { GtkAdjustment *adjustment = GTK_ADJUSTMENT (object); + GtkAdjustmentPrivate *priv = adjustment->priv; switch (prop_id) { case PROP_VALUE: - g_value_set_double (value, adjustment->value); + g_value_set_double (value, priv->value); break; case PROP_LOWER: - g_value_set_double (value, adjustment->lower); + g_value_set_double (value, priv->lower); break; case PROP_UPPER: - g_value_set_double (value, adjustment->upper); + g_value_set_double (value, priv->upper); break; case PROP_STEP_INCREMENT: - g_value_set_double (value, adjustment->step_increment); + g_value_set_double (value, priv->step_increment); break; case PROP_PAGE_INCREMENT: - g_value_set_double (value, adjustment->page_increment); + g_value_set_double (value, priv->page_increment); break; case PROP_PAGE_SIZE: - g_value_set_double (value, adjustment->page_size); + g_value_set_double (value, priv->page_size); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -294,6 +303,7 @@ gtk_adjustment_set_property (GObject *object, { GtkAdjustment *adjustment = GTK_ADJUSTMENT (object); gdouble double_value = g_value_get_double (value); + GtkAdjustmentPrivate *priv = adjustment->priv; switch (prop_id) { @@ -301,19 +311,19 @@ gtk_adjustment_set_property (GObject *object, gtk_adjustment_set_value (adjustment, double_value); break; case PROP_LOWER: - adjustment->lower = double_value; + priv->lower = double_value; break; case PROP_UPPER: - adjustment->upper = double_value; + priv->upper = double_value; break; case PROP_STEP_INCREMENT: - adjustment->step_increment = double_value; + priv->step_increment = double_value; break; case PROP_PAGE_INCREMENT: - adjustment->page_increment = double_value; + priv->page_increment = double_value; break; case PROP_PAGE_SIZE: - adjustment->page_size = double_value; + priv->page_size = double_value; break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -397,7 +407,7 @@ gtk_adjustment_get_value (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->value; + return adjustment->priv->value; } /** @@ -416,17 +426,21 @@ void gtk_adjustment_set_value (GtkAdjustment *adjustment, gdouble value) { + GtkAdjustmentPrivate *priv; + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + priv = adjustment->priv; + /* don't use CLAMP() so we don't end up below lower if upper - page_size * is smaller than lower */ - value = MIN (value, adjustment->upper - adjustment->page_size); - value = MAX (value, adjustment->lower); + value = MIN (value, priv->upper - priv->page_size); + value = MAX (value, priv->lower); - if (value != adjustment->value) + if (value != priv->value) { - adjustment->value = value; + priv->value = value; gtk_adjustment_value_changed (adjustment); } @@ -447,7 +461,7 @@ gtk_adjustment_get_lower (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->lower; + return adjustment->priv->lower; } /** @@ -477,7 +491,7 @@ gtk_adjustment_set_lower (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - if (lower != adjustment->lower) + if (lower != adjustment->priv->lower) g_object_set (adjustment, "lower", lower, NULL); } @@ -496,7 +510,7 @@ gtk_adjustment_get_upper (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->upper; + return adjustment->priv->upper; } /** @@ -522,7 +536,7 @@ gtk_adjustment_set_upper (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - if (upper != adjustment->upper) + if (upper != adjustment->priv->upper) g_object_set (adjustment, "upper", upper, NULL); } @@ -541,7 +555,7 @@ gtk_adjustment_get_step_increment (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->step_increment; + return adjustment->priv->step_increment; } /** @@ -563,7 +577,7 @@ gtk_adjustment_set_step_increment (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - if (step_increment != adjustment->step_increment) + if (step_increment != adjustment->priv->step_increment) g_object_set (adjustment, "step-increment", step_increment, NULL); } @@ -582,7 +596,7 @@ gtk_adjustment_get_page_increment (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->page_increment; + return adjustment->priv->page_increment; } /** @@ -604,7 +618,7 @@ gtk_adjustment_set_page_increment (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - if (page_increment != adjustment->page_increment) + if (page_increment != adjustment->priv->page_increment) g_object_set (adjustment, "page-increment", page_increment, NULL); } @@ -623,7 +637,7 @@ gtk_adjustment_get_page_size (GtkAdjustment *adjustment) { g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), 0.0); - return adjustment->page_size; + return adjustment->priv->page_size; } /** @@ -645,7 +659,7 @@ gtk_adjustment_set_page_size (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - if (page_size != adjustment->page_size) + if (page_size != adjustment->priv->page_size) g_object_set (adjustment, "page-size", page_size, NULL); } @@ -676,11 +690,14 @@ gtk_adjustment_configure (GtkAdjustment *adjustment, gdouble page_increment, gdouble page_size) { + GtkAdjustmentPrivate *priv; gboolean value_changed = FALSE; guint64 old_stamp = adjustment_changed_stamp; g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + priv = adjustment->priv; + g_object_freeze_notify (G_OBJECT (adjustment)); g_object_set (adjustment, @@ -697,12 +714,12 @@ gtk_adjustment_configure (GtkAdjustment *adjustment, value = MIN (value, upper - page_size); value = MAX (value, lower); - if (value != adjustment->value) + if (value != priv->value) { /* set value manually to make sure "changed" is emitted with the * new value in place and is emitted before "value-changed" */ - adjustment->value = value; + priv->value = value; value_changed = TRUE; } @@ -766,23 +783,26 @@ gtk_adjustment_clamp_page (GtkAdjustment *adjustment, gdouble lower, gdouble upper) { + GtkAdjustmentPrivate *priv; gboolean need_emission; g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - lower = CLAMP (lower, adjustment->lower, adjustment->upper); - upper = CLAMP (upper, adjustment->lower, adjustment->upper); + priv = adjustment->priv; + + lower = CLAMP (lower, priv->lower, priv->upper); + upper = CLAMP (upper, priv->lower, priv->upper); need_emission = FALSE; - if (adjustment->value + adjustment->page_size < upper) + if (priv->value + priv->page_size < upper) { - adjustment->value = upper - adjustment->page_size; + priv->value = upper - priv->page_size; need_emission = TRUE; } - if (adjustment->value > lower) + if (priv->value > lower) { - adjustment->value = lower; + priv->value = lower; need_emission = TRUE; } diff --git a/gtk/gtkadjustment.h b/gtk/gtkadjustment.h index 319953b342..1ea9de5011 100644 --- a/gtk/gtkadjustment.h +++ b/gtk/gtkadjustment.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -43,42 +43,28 @@ G_BEGIN_DECLS #define GTK_ADJUSTMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ADJUSTMENT, GtkAdjustmentClass)) -typedef struct _GtkAdjustment GtkAdjustment; -typedef struct _GtkAdjustmentClass GtkAdjustmentClass; +typedef struct _GtkAdjustment GtkAdjustment; +typedef struct _GtkAdjustmentPrivate GtkAdjustmentPrivate; +typedef struct _GtkAdjustmentClass GtkAdjustmentClass; /** * GtkAdjustment: - * @lower: the minimum value. - * @upper: the maximum value. - * @value: the current value. - * @step_increment: the increment to use to make minor changes to the @value. - * In a #GtkScrollbar this increment is used when the mouse is clicked on the - * arrows at the top and bottom of the scrollbar, to scroll by a small amount. - * @page_increment: the increment to use to make major changes to the @value. - * In a #GtkScrollbar this increment is used when the mouse is clicked in the - * trough, to scroll by a large amount. - * @page_size: In a #GtkScrollbar this is the size of the area which is currently - * visible. * - * The #GtkAdjustment struct contains the following fields. + * The #GtkAdjustment struct contains only private fields and + * should not be directly accessed. */ struct _GtkAdjustment { GInitiallyUnowned parent_instance; - gdouble GSEAL (lower); - gdouble GSEAL (upper); - gdouble GSEAL (value); - gdouble GSEAL (step_increment); - gdouble GSEAL (page_increment); - gdouble GSEAL (page_size); + GtkAdjustmentPrivate *priv; }; struct _GtkAdjustmentClass { GInitiallyUnownedClass parent_class; - void (* changed) (GtkAdjustment *adjustment); + void (* changed) (GtkAdjustment *adjustment); void (* value_changed) (GtkAdjustment *adjustment); /* Padding for future expansion */ @@ -89,23 +75,23 @@ struct _GtkAdjustmentClass }; -GType gtk_adjustment_get_type (void) G_GNUC_CONST; -GtkAdjustment* gtk_adjustment_new (gdouble value, - gdouble lower, - gdouble upper, - gdouble step_increment, - gdouble page_increment, - gdouble page_size); +GType gtk_adjustment_get_type (void) G_GNUC_CONST; +GtkAdjustment* gtk_adjustment_new (gdouble value, + gdouble lower, + gdouble upper, + gdouble step_increment, + gdouble page_increment, + gdouble page_size); -void gtk_adjustment_changed (GtkAdjustment *adjustment); -void gtk_adjustment_value_changed (GtkAdjustment *adjustment); -void gtk_adjustment_clamp_page (GtkAdjustment *adjustment, - gdouble lower, - gdouble upper); +void gtk_adjustment_changed (GtkAdjustment *adjustment); +void gtk_adjustment_value_changed (GtkAdjustment *adjustment); +void gtk_adjustment_clamp_page (GtkAdjustment *adjustment, + gdouble lower, + gdouble upper); -gdouble gtk_adjustment_get_value (GtkAdjustment *adjustment); -void gtk_adjustment_set_value (GtkAdjustment *adjustment, - gdouble value); +gdouble gtk_adjustment_get_value (GtkAdjustment *adjustment); +void gtk_adjustment_set_value (GtkAdjustment *adjustment, + gdouble value); gdouble gtk_adjustment_get_lower (GtkAdjustment *adjustment); void gtk_adjustment_set_lower (GtkAdjustment *adjustment, gdouble lower); @@ -124,11 +110,11 @@ void gtk_adjustment_set_page_size (GtkAdjustment *adjustment, void gtk_adjustment_configure (GtkAdjustment *adjustment, gdouble value, - gdouble lower, - gdouble upper, - gdouble step_increment, - gdouble page_increment, - gdouble page_size); + gdouble lower, + gdouble upper, + gdouble step_increment, + gdouble page_increment, + gdouble page_size); G_END_DECLS diff --git a/gtk/gtkalignment.c b/gtk/gtkalignment.c index d8b3fec570..78f21aafff 100644 --- a/gtk/gtkalignment.c +++ b/gtk/gtkalignment.c @@ -102,6 +102,14 @@ static void gtk_alignment_get_preferred_width (GtkWidget *wid static void gtk_alignment_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size); +static void gtk_alignment_get_preferred_width_for_height (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size); +static void gtk_alignment_get_preferred_height_for_width (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size); G_DEFINE_TYPE (GtkAlignment, gtk_alignment, GTK_TYPE_BIN) @@ -120,6 +128,8 @@ gtk_alignment_class_init (GtkAlignmentClass *class) widget_class->size_allocate = gtk_alignment_size_allocate; widget_class->get_preferred_width = gtk_alignment_get_preferred_width; widget_class->get_preferred_height = gtk_alignment_get_preferred_height; + widget_class->get_preferred_width_for_height = gtk_alignment_get_preferred_width_for_height; + widget_class->get_preferred_height_for_width = gtk_alignment_get_preferred_height_for_width; g_object_class_install_property (gobject_class, PROP_XALIGN, @@ -571,6 +581,7 @@ gtk_alignment_size_allocate (GtkWidget *widget, static void gtk_alignment_get_preferred_size (GtkWidget *widget, GtkOrientation orientation, + gint for_size, gint *minimum_size, gint *natural_size) { @@ -589,12 +600,44 @@ gtk_alignment_get_preferred_size (GtkWidget *widget, if (orientation == GTK_ORIENTATION_HORIZONTAL) { minimum += (priv->padding_left + priv->padding_right); - gtk_widget_get_preferred_width (child, &child_min, &child_nat); + + if (for_size < 0) + gtk_widget_get_preferred_width (child, &child_min, &child_nat); + else + { + gint min_height; + + gtk_widget_get_preferred_height (child, &min_height, NULL); + + for_size -= (priv->padding_top + priv->padding_bottom); + + if (for_size > min_height) + for_size = (min_height * (1.0 - priv->yscale) + + for_size * priv->yscale); + + gtk_widget_get_preferred_width_for_height (child, for_size, &child_min, &child_nat); + } } else { minimum += (priv->padding_top + priv->padding_bottom); - gtk_widget_get_preferred_height (child, &child_min, &child_nat); + + if (for_size < 0) + gtk_widget_get_preferred_height (child, &child_min, &child_nat); + else + { + gint min_width; + + gtk_widget_get_preferred_width (child, &min_width, NULL); + + for_size -= (priv->padding_left + priv->padding_right); + + if (for_size > min_width) + for_size = (min_width * (1.0 - priv->xscale) + + for_size * priv->xscale); + + gtk_widget_get_preferred_height_for_width (child, for_size, &child_min, &child_nat); + } } natural = minimum; @@ -615,7 +658,7 @@ gtk_alignment_get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size) { - gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size); + gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, -1, minimum_size, natural_size); } static void @@ -623,7 +666,26 @@ gtk_alignment_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) { - gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size); + gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, -1, minimum_size, natural_size); +} + + +static void +gtk_alignment_get_preferred_width_for_height (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_HORIZONTAL, for_size, minimum_size, natural_size); +} + +static void +gtk_alignment_get_preferred_height_for_width (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + gtk_alignment_get_preferred_size (widget, GTK_ORIENTATION_VERTICAL, for_size, minimum_size, natural_size); } /** diff --git a/gtk/gtkanimationdescription.c b/gtk/gtkanimationdescription.c index 785018ad37..f46ab4bef3 100644 --- a/gtk/gtkanimationdescription.c +++ b/gtk/gtkanimationdescription.c @@ -30,9 +30,9 @@ struct GtkAnimationDescription }; GtkAnimationDescription * -gtk_animation_description_new (gdouble duration, - GtkTimelineProgressType progress_type, - gboolean loop) +_gtk_animation_description_new (gdouble duration, + GtkTimelineProgressType progress_type, + gboolean loop) { GtkAnimationDescription *desc; @@ -46,32 +46,32 @@ gtk_animation_description_new (gdouble duration, } gdouble -gtk_animation_description_get_duration (GtkAnimationDescription *desc) +_gtk_animation_description_get_duration (GtkAnimationDescription *desc) { return desc->duration; } GtkTimelineProgressType -gtk_animation_description_get_progress_type (GtkAnimationDescription *desc) +_gtk_animation_description_get_progress_type (GtkAnimationDescription *desc) { return desc->progress_type; } gboolean -gtk_animation_description_get_loop (GtkAnimationDescription *desc) +_gtk_animation_description_get_loop (GtkAnimationDescription *desc) { return (desc->loop != 0); } GtkAnimationDescription * -gtk_animation_description_ref (GtkAnimationDescription *desc) +_gtk_animation_description_ref (GtkAnimationDescription *desc) { desc->ref_count++; return desc; } void -gtk_animation_description_unref (GtkAnimationDescription *desc) +_gtk_animation_description_unref (GtkAnimationDescription *desc) { desc->ref_count--; @@ -80,7 +80,7 @@ gtk_animation_description_unref (GtkAnimationDescription *desc) } GtkAnimationDescription * -gtk_animation_description_from_string (const gchar *str) +_gtk_animation_description_from_string (const gchar *str) { gchar timing_function[16] = { 0, }; gchar duration_unit[3] = { 0, }; @@ -120,18 +120,18 @@ gtk_animation_description_from_string (const gchar *str) return NULL; } - return gtk_animation_description_new ((gdouble) duration, progress_type, loop); + return _gtk_animation_description_new ((gdouble) duration, progress_type, loop); } GType -gtk_animation_description_get_type (void) +_gtk_animation_description_get_type (void) { static GType type = 0; if (G_UNLIKELY (!type)) type = g_boxed_type_register_static (I_("GtkAnimationDescription"), - (GBoxedCopyFunc) gtk_animation_description_ref, - (GBoxedFreeFunc) gtk_animation_description_unref); + (GBoxedCopyFunc) _gtk_animation_description_ref, + (GBoxedFreeFunc) _gtk_animation_description_unref); return type; } diff --git a/gtk/gtkanimationdescription.h b/gtk/gtkanimationdescription.h index 34fc8fcb95..7bff674cc1 100644 --- a/gtk/gtkanimationdescription.h +++ b/gtk/gtkanimationdescription.h @@ -27,22 +27,22 @@ G_BEGIN_DECLS /* Dummy typedefs */ typedef struct GtkAnimationDescription GtkAnimationDescription; -#define GTK_TYPE_ANIMATION_DESCRIPTION (gtk_animation_description_get_type ()) +#define GTK_TYPE_ANIMATION_DESCRIPTION (_gtk_animation_description_get_type ()) -GType gtk_animation_description_get_type (void) G_GNUC_CONST; +GType _gtk_animation_description_get_type (void) G_GNUC_CONST; -GtkAnimationDescription * gtk_animation_description_new (gdouble duration, - GtkTimelineProgressType progress_type, - gboolean loop); +GtkAnimationDescription * _gtk_animation_description_new (gdouble duration, + GtkTimelineProgressType progress_type, + gboolean loop); -gdouble gtk_animation_description_get_duration (GtkAnimationDescription *desc); -GtkTimelineProgressType gtk_animation_description_get_progress_type (GtkAnimationDescription *desc); -gboolean gtk_animation_description_get_loop (GtkAnimationDescription *desc); +gdouble _gtk_animation_description_get_duration (GtkAnimationDescription *desc); +GtkTimelineProgressType _gtk_animation_description_get_progress_type (GtkAnimationDescription *desc); +gboolean _gtk_animation_description_get_loop (GtkAnimationDescription *desc); -GtkAnimationDescription * gtk_animation_description_ref (GtkAnimationDescription *desc); -void gtk_animation_description_unref (GtkAnimationDescription *desc); +GtkAnimationDescription * _gtk_animation_description_ref (GtkAnimationDescription *desc); +void _gtk_animation_description_unref (GtkAnimationDescription *desc); -GtkAnimationDescription * gtk_animation_description_from_string (const gchar *str); +GtkAnimationDescription * _gtk_animation_description_from_string (const gchar *str); G_END_DECLS diff --git a/gtk/gtkappchooser.c b/gtk/gtkappchooser.c index cb630c332b..c5b93c8af9 100644 --- a/gtk/gtkappchooser.c +++ b/gtk/gtkappchooser.c @@ -21,6 +21,17 @@ * Authors: Cosimo Cecchi */ +/** + * SECTION:gtkappchooser + * @Title: GtkAppChooser + * @Short_description: Interface implemented by widgets allowing to chooser applications + * + * #GtkAppChooser is an interface that can be implemented by widgets which + * allow the user to choose an application (typically for the purpose of + * opening a file). The main objects that implement this interface are + * #GtkAppChooserWidget, #GtkAppChooserDialog and #GtkAppChooserButton. + */ + #include "config.h" #include "gtkappchooser.h" diff --git a/gtk/gtkappchooserbutton.c b/gtk/gtkappchooserbutton.c index a956a7953c..df00ae820d 100644 --- a/gtk/gtkappchooserbutton.c +++ b/gtk/gtkappchooserbutton.c @@ -21,6 +21,14 @@ * Authors: Cosimo Cecchi */ +/** + * SECTION:gtkappchooserbutton + * @Title: GtkAppChooserButton + * @Short_description: A button to launch an application chooser dialog + * + * The #GtkAppChooserButton is a widget that lets the user select + * an application. It implements the #GtkAppChooser interface. + */ #include "config.h" #include "gtkappchooserbutton.h" @@ -263,7 +271,9 @@ gtk_app_chooser_button_populate (GtkAppChooserButton *self) GIcon *icon; gboolean cycled_recommended; +#ifndef G_OS_WIN32 recommended_apps = g_app_info_get_recommended_for_type (self->priv->content_type); +#endif cycled_recommended = FALSE; for (l = recommended_apps; l != NULL; l = l->next) diff --git a/gtk/gtkappchooserdialog.c b/gtk/gtkappchooserdialog.c index 83cf7e00e4..04785d0c49 100644 --- a/gtk/gtkappchooserdialog.c +++ b/gtk/gtkappchooserdialog.c @@ -24,6 +24,18 @@ * Cosimo Cecchi */ +/** + * SECTION:gtkappchooserdialog + * @Title: GtkAppChooserDialog + * @Short_description: An application chooser dialog + * + * #GtkAppChooserDialog shows a #GtkAppChooserWidget inside a #GtkDialog. + * + * Note that #GtkAppChooserDialog does not have any interesting methods + * of its own. Instead, you should get the embedded #GtkAppChooserWidget + * using gtk_app_chooser_dialog_get_widget() and call its methods if + * the generic #GtkAppChooser interface is not sufficient for your needs. + */ #include "config.h" #include "gtkappchooserdialog.h" @@ -108,7 +120,7 @@ search_for_mimetype_ready_cb (GObject *source, GtkAppChooserDialog *self = user_data; GError *error = NULL; - gtk_app_chooser_online_search_for_mimetype_finish (online, res, &error); + _gtk_app_chooser_online_search_for_mimetype_finish (online, res, &error); if (error != NULL) { @@ -128,11 +140,11 @@ online_button_clicked_cb (GtkButton *b, { GtkAppChooserDialog *self = user_data; - gtk_app_chooser_online_search_for_mimetype_async (self->priv->online, - self->priv->content_type, - GTK_WINDOW (self), - search_for_mimetype_ready_cb, - self); + _gtk_app_chooser_online_search_for_mimetype_async (self->priv->online, + self->priv->content_type, + GTK_WINDOW (self), + search_for_mimetype_ready_cb, + self); } static void @@ -142,7 +154,7 @@ app_chooser_online_get_default_ready_cb (GObject *source, { GtkAppChooserDialog *self = user_data; - self->priv->online = gtk_app_chooser_online_get_default_finish (source, res); + self->priv->online = _gtk_app_chooser_online_get_default_finish (source, res); if (self->priv->online != NULL) { @@ -164,7 +176,7 @@ app_chooser_online_get_default_ready_cb (GObject *source, static void ensure_online_button (GtkAppChooserDialog *self) { - gtk_app_chooser_online_get_default_async (app_chooser_online_get_default_ready_cb, self); + _gtk_app_chooser_online_get_default_async (app_chooser_online_get_default_ready_cb, self); } /* An application is valid if: @@ -234,9 +246,9 @@ add_or_find_application (GtkAppChooserDialog *self) app = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self)); /* we don't care about reporting errors here */ - g_app_info_add_supports_type (app, - self->priv->content_type, - NULL); + g_app_info_set_as_last_used_for_type (app, + self->priv->content_type, + NULL); g_object_unref (app); } diff --git a/gtk/gtkappchooseronline.c b/gtk/gtkappchooseronline.c index 71267ca7f5..99454cd5ee 100644 --- a/gtk/gtkappchooseronline.c +++ b/gtk/gtkappchooseronline.c @@ -30,20 +30,18 @@ #include -#define gtk_app_chooser_online_get_type _gtk_app_chooser_online_get_type -static void gtk_app_chooser_online_default_init (GtkAppChooserOnlineInterface *iface); -G_DEFINE_INTERFACE_WITH_CODE (GtkAppChooserOnline, gtk_app_chooser_online, G_TYPE_OBJECT, +G_DEFINE_INTERFACE_WITH_CODE (GtkAppChooserOnline, _gtk_app_chooser_online, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_ASYNC_INITABLE);) static void -gtk_app_chooser_online_default_init (GtkAppChooserOnlineInterface *iface) +_gtk_app_chooser_online_default_init (GtkAppChooserOnlineInterface *iface) { /* do nothing */ } GtkAppChooserOnline * -gtk_app_chooser_online_get_default_finish (GObject *source, - GAsyncResult *result) +_gtk_app_chooser_online_get_default_finish (GObject *source, + GAsyncResult *result) { GtkAppChooserOnline *retval; @@ -51,11 +49,11 @@ gtk_app_chooser_online_get_default_finish (GObject *source, result, NULL)); return retval; -} +} void -gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback, - gpointer user_data) +_gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback, + gpointer user_data) { GIOExtensionPoint *ep; GIOExtension *extension; @@ -76,11 +74,11 @@ gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback, } void -gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self, - const gchar *content_type, - GtkWindow *parent, - GAsyncReadyCallback callback, - gpointer user_data) +_gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self, + const gchar *content_type, + GtkWindow *parent, + GAsyncReadyCallback callback, + gpointer user_data) { GtkAppChooserOnlineInterface *iface; @@ -92,9 +90,9 @@ gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self, } gboolean -gtk_app_chooser_online_search_for_mimetype_finish (GtkAppChooserOnline *self, - GAsyncResult *res, - GError **error) +_gtk_app_chooser_online_search_for_mimetype_finish (GtkAppChooserOnline *self, + GAsyncResult *res, + GError **error) { GtkAppChooserOnlineInterface *iface; diff --git a/gtk/gtkappchooseronline.h b/gtk/gtkappchooseronline.h index d0eca3b9e0..a8316c1e1e 100644 --- a/gtk/gtkappchooseronline.h +++ b/gtk/gtkappchooseronline.h @@ -54,20 +54,20 @@ struct _GtkAppChooserOnlineInterface { GError **error); }; -GType _gtk_app_chooser_online_get_type (void) G_GNUC_CONST; +GType _gtk_app_chooser_online_get_type (void) G_GNUC_CONST; -void gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback, - gpointer user_data); -GtkAppChooserOnline * gtk_app_chooser_online_get_default_finish (GObject *source, +void _gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback, + gpointer user_data); +GtkAppChooserOnline * _gtk_app_chooser_online_get_default_finish (GObject *source, GAsyncResult *result); -void gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self, - const gchar *content_type, - GtkWindow *parent, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean gtk_app_chooser_online_search_for_mimetype_finish (GtkAppChooserOnline *self, - GAsyncResult *res, - GError **error); +void _gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self, + const gchar *content_type, + GtkWindow *parent, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean _gtk_app_chooser_online_search_for_mimetype_finish (GtkAppChooserOnline *self, + GAsyncResult *res, + GError **error); #endif /* __GTK_APP_CHOOSER_ONLINE_H__ */ diff --git a/gtk/gtkappchooseronlinepk.c b/gtk/gtkappchooseronlinepk.c index c498546890..4b6df0ec22 100644 --- a/gtk/gtkappchooseronlinepk.c +++ b/gtk/gtkappchooseronlinepk.c @@ -134,7 +134,7 @@ pk_search_mime_async (GtkAppChooserOnline *obj, self->priv->result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, - gtk_app_chooser_online_search_for_mimetype_async); + _gtk_app_chooser_online_search_for_mimetype_async); #ifdef GDK_WINDOWING_X11 window = gtk_widget_get_window (GTK_WIDGET (parent)); @@ -243,7 +243,7 @@ app_chooser_online_pk_init_async (GAsyncInitable *init, self->priv->init_result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, - gtk_app_chooser_online_get_default_async); + _gtk_app_chooser_online_get_default_async); self->priv->watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, diff --git a/gtk/gtkappchooserwidget.c b/gtk/gtkappchooserwidget.c index 95510e9a35..6d0c3fa3f3 100644 --- a/gtk/gtkappchooserwidget.c +++ b/gtk/gtkappchooserwidget.c @@ -45,6 +45,17 @@ #include #include +/** + * SECTION:gtkappchooserwidget + * @Title: GtkAppChooserWidget + * @Short_description: Application chooser widget that can be embedded in other widgets + * + * #GtkAppChooserWidget is a widget for selecting applications. + * It is the main building block for #GtkAppChooserDialog. Most + * applications only need to use the latter; but you can use + * this widget as part of a larger widget if you have special needs. + */ + struct _GtkAppChooserWidgetPrivate { GAppInfo *selected_app_info; @@ -402,13 +413,13 @@ gtk_app_chooser_sort_func (GtkTreeModel *model, /* they're both recommended/falback or not, so if one is a heading, wins */ if (a_heading) { - return -1; + retval = -1; goto out; } if (b_heading) { - return 1; + retval = 1; goto out; } @@ -711,6 +722,7 @@ gtk_app_chooser_widget_real_add_items (GtkAppChooserWidget *self) } } +#ifndef G_OS_WIN32 if (self->priv->show_recommended || self->priv->show_all) { recommended_apps = g_app_info_get_recommended_for_type (self->priv->content_type); @@ -737,6 +749,7 @@ gtk_app_chooser_widget_real_add_items (GtkAppChooserWidget *self) exclude_apps = g_list_concat (exclude_apps, g_list_copy (fallback_apps)); } +#endif if (self->priv->show_other || self->priv->show_all) { diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c index 59c081bea1..2d68b0994f 100644 --- a/gtk/gtkapplication.c +++ b/gtk/gtkapplication.c @@ -22,7 +22,9 @@ #include "config.h" #include +#ifdef HAVE_UNISTD_H #include +#endif #include #include "gtkapplication.h" @@ -51,7 +53,7 @@ * * A simple application * - * + * * FIXME: MISSING XINCLUDE CONTENT * * diff --git a/gtk/gtkarrow.c b/gtk/gtkarrow.c index 2c69ca0515..c0c4ccfa77 100644 --- a/gtk/gtkarrow.c +++ b/gtk/gtkarrow.c @@ -28,7 +28,7 @@ * SECTION:gtkarrow * @Short_description: Displays an arrow * @Title: GtkArrow - * @See_also: gtk_paint_arrow() + * @See_also: gtk_render_arrow() * * GtkArrow should be used to draw simple arrows that need to point in * one of the four cardinal directions (up, down, left, or right). The @@ -48,7 +48,7 @@ #include #include "gtkarrow.h" #include "gtksizerequest.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -310,15 +310,20 @@ gtk_arrow_draw (GtkWidget *widget, GtkArrow *arrow = GTK_ARROW (widget); GtkArrowPrivate *priv = arrow->priv; GtkMisc *misc = GTK_MISC (widget); - GtkShadowType shadow_type; - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state; gint x, y, width, height; gint extent; gint xpad, ypad; gfloat xalign, yalign; GtkArrowType effective_arrow_type; gfloat arrow_scaling; + gdouble angle; + if (priv->arrow_type == GTK_ARROW_NONE) + return FALSE; + + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, "arrow-scaling", &arrow_scaling, NULL); gtk_misc_get_padding (misc, &xpad, &ypad); @@ -342,26 +347,30 @@ gtk_arrow_draw (GtkWidget *widget, x = floor (xpad + ((width - extent) * xalign)); y = floor (ypad + ((height - extent) * yalign)); - shadow_type = priv->shadow_type; - state = gtk_widget_get_state (widget); - - if (state == GTK_STATE_ACTIVE) + switch (effective_arrow_type) { - if (shadow_type == GTK_SHADOW_IN) - shadow_type = GTK_SHADOW_OUT; - else if (shadow_type == GTK_SHADOW_OUT) - shadow_type = GTK_SHADOW_IN; - else if (shadow_type == GTK_SHADOW_ETCHED_IN) - shadow_type = GTK_SHADOW_ETCHED_OUT; - else if (shadow_type == GTK_SHADOW_ETCHED_OUT) - shadow_type = GTK_SHADOW_ETCHED_IN; + case GTK_ARROW_UP: + angle = 0; + break; + case GTK_ARROW_RIGHT: + angle = G_PI / 2; + break; + case GTK_ARROW_DOWN: + angle = G_PI; + break; + case GTK_ARROW_LEFT: + default: + angle = (3 * G_PI) / 2; + break; } - gtk_paint_arrow (gtk_widget_get_style (widget), cr, - state, shadow_type, - widget, "arrow", - effective_arrow_type, TRUE, - x, y, extent, extent); + gtk_style_context_save (context); + + state = gtk_widget_get_state_flags (widget); + gtk_style_context_set_state (context, state); + gtk_render_arrow (context, cr, angle, x, y, extent); + + gtk_style_context_restore (context); return FALSE; } diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c index c3baf9cf16..fa740bd18a 100644 --- a/gtk/gtkassistant.c +++ b/gtk/gtkassistant.c @@ -71,7 +71,7 @@ #include "gtksizegroup.h" #include "gtksizerequest.h" #include "gtkstock.h" - +#include "gtktypebuiltins.h" #include "gtkintl.h" #include "gtkprivate.h" #include "gtkbuildable.h" @@ -126,8 +126,7 @@ struct _GtkAssistantPrivate static void gtk_assistant_class_init (GtkAssistantClass *class); static void gtk_assistant_init (GtkAssistant *assistant); static void gtk_assistant_destroy (GtkWidget *widget); -static void gtk_assistant_style_set (GtkWidget *widget, - GtkStyle *old_style); +static void gtk_assistant_style_updated (GtkWidget *widget); static void gtk_assistant_get_preferred_width (GtkWidget *widget, gint *minimum, gint *natural); @@ -224,7 +223,7 @@ gtk_assistant_class_init (GtkAssistantClass *class) container_class = (GtkContainerClass *) class; widget_class->destroy = gtk_assistant_destroy; - widget_class->style_set = gtk_assistant_style_set; + widget_class->style_updated = gtk_assistant_style_updated; widget_class->get_preferred_width = gtk_assistant_get_preferred_width; widget_class->get_preferred_height = gtk_assistant_get_preferred_height; widget_class->size_allocate = gtk_assistant_size_allocate; @@ -782,6 +781,7 @@ static void gtk_assistant_init (GtkAssistant *assistant) { GtkAssistantPrivate *priv; + GtkStyleContext *context; assistant->priv = G_TYPE_INSTANCE_GET_PRIVATE (assistant, GTK_TYPE_ASSISTANT, @@ -799,12 +799,18 @@ gtk_assistant_init (GtkAssistant *assistant) gtk_widget_set_parent (priv->header_image, GTK_WIDGET (assistant)); gtk_widget_show (priv->header_image); + context = gtk_widget_get_style_context (priv->header_image); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); + /* Sidebar */ priv->sidebar_image = gtk_image_new (); gtk_misc_set_alignment (GTK_MISC (priv->sidebar_image), 0., 0.); gtk_widget_set_parent (priv->sidebar_image, GTK_WIDGET (assistant)); gtk_widget_show (priv->sidebar_image); + context = gtk_widget_get_style_context (priv->sidebar_image); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); + /* Action area */ priv->action_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); @@ -1083,29 +1089,17 @@ find_page (GtkAssistant *assistant, return NULL; } -static void -set_title_colors (GtkWidget *assistant, - GtkWidget *title_label) -{ - GtkStyle *style; - - gtk_widget_ensure_style (assistant); - style = gtk_widget_get_style (assistant); - - /* change colors schema, for making the header text visible */ - gtk_widget_modify_bg (title_label, GTK_STATE_NORMAL, &style->bg[GTK_STATE_SELECTED]); - gtk_widget_modify_fg (title_label, GTK_STATE_NORMAL, &style->fg[GTK_STATE_SELECTED]); -} - static void set_title_font (GtkWidget *assistant, GtkWidget *title_label) { PangoFontDescription *desc; + GtkStyleContext *context; gint size; desc = pango_font_description_new (); - size = pango_font_description_get_size (gtk_widget_get_style (assistant)->font_desc); + context = gtk_widget_get_style_context (title_label); + size = pango_font_description_get_size (gtk_style_context_get_font (context, 0)); pango_font_description_set_weight (desc, PANGO_WEIGHT_ULTRABOLD); pango_font_description_set_size (desc, size * PANGO_SCALE_XX_LARGE); @@ -1115,8 +1109,7 @@ set_title_font (GtkWidget *assistant, } static void -gtk_assistant_style_set (GtkWidget *widget, - GtkStyle *old_style) +gtk_assistant_style_updated (GtkWidget *widget) { GtkAssistant *assistant = GTK_ASSISTANT (widget); GtkAssistantPrivate *priv = assistant->priv; @@ -1128,9 +1121,7 @@ gtk_assistant_style_set (GtkWidget *widget, { GtkAssistantPage *page = list->data; - set_title_colors (widget, page->title); set_title_font (widget, page->title); - list = list->next; } } @@ -1412,7 +1403,9 @@ assistant_paint_colored_box (GtkWidget *widget, GtkAssistant *assistant = GTK_ASSISTANT (widget); GtkAssistantPrivate *priv = assistant->priv; GtkAllocation allocation, action_area_allocation, header_image_allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GdkRGBA color; gint border_width, header_padding, content_padding; gint content_x, content_width; gboolean rtl; @@ -1425,13 +1418,20 @@ assistant_paint_colored_box (GtkWidget *widget, "content-padding", &content_padding, NULL); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_widget_get_allocation (widget, &allocation); gtk_widget_get_allocation (priv->action_area, &action_area_allocation); gtk_widget_get_allocation (priv->header_image, &header_image_allocation); /* colored box */ - gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_SELECTED]); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); + + gtk_style_context_get_background_color (context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); + cairo_rectangle (cr, border_width, border_width, @@ -1454,7 +1454,10 @@ assistant_paint_colored_box (GtkWidget *widget, content_width -= sidebar_image_allocation.width; } - gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]); + gtk_style_context_restore (context); + + gtk_style_context_get_background_color (context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_rectangle (cr, content_x, @@ -1867,6 +1870,7 @@ gtk_assistant_insert_page (GtkAssistant *assistant, { GtkAssistantPrivate *priv; GtkAssistantPage *page_info; + GtkStyleContext *context; gint n_pages; g_return_val_if_fail (GTK_IS_ASSISTANT (assistant), 0); @@ -1884,10 +1888,12 @@ gtk_assistant_insert_page (GtkAssistant *assistant, G_CALLBACK (on_page_notify_visibility), assistant); gtk_misc_set_alignment (GTK_MISC (page_info->title), 0.,0.5); - set_title_colors (GTK_WIDGET (assistant), page_info->title); set_title_font (GTK_WIDGET (assistant), page_info->title); gtk_widget_show (page_info->title); + context = gtk_widget_get_style_context (page_info->title); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); + n_pages = g_list_length (priv->pages); if (position < 0 || position > n_pages) @@ -2478,7 +2484,7 @@ gtk_assistant_get_accessible (GtkWidget *widget) typedef struct _GtkAssistantAccessible GtkAssistantAccessible; typedef struct _GtkAssistantAccessibleClass GtkAssistantAccessibleClass; -ATK_DEFINE_TYPE (GtkAssistantAccessible, gtk_assistant_accessible, GTK_TYPE_ASSISTANT); +ATK_DEFINE_TYPE (GtkAssistantAccessible, _gtk_assistant_accessible, GTK_TYPE_ASSISTANT); static gint gtk_assistant_accessible_get_n_children (AtkObject *accessible) @@ -2537,7 +2543,7 @@ gtk_assistant_accessible_ref_child (AtkObject *accessible, } static void -gtk_assistant_accessible_class_init (GtkAssistantAccessibleClass *klass) +_gtk_assistant_accessible_class_init (GtkAssistantAccessibleClass *klass) { AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass); @@ -2546,7 +2552,7 @@ gtk_assistant_accessible_class_init (GtkAssistantAccessibleClass *klass) } static void -gtk_assistant_accessible_init (GtkAssistantAccessible *self) +_gtk_assistant_accessible_init (GtkAssistantAccessible *self) { } @@ -2561,7 +2567,7 @@ G_DEFINE_TYPE (GtkAssistantAccessibleFactory, static GType gtk_assistant_accessible_factory_get_accessible_type (void) { - return gtk_assistant_accessible_get_type (); + return _gtk_assistant_accessible_get_type (); } static AtkObject* @@ -2569,7 +2575,7 @@ gtk_assistant_accessible_factory_create_accessible (GObject *obj) { AtkObject *accessible; - accessible = g_object_new (gtk_assistant_accessible_get_type (), NULL); + accessible = g_object_new (_gtk_assistant_accessible_get_type (), NULL); atk_object_initialize (accessible, obj); return accessible; diff --git a/gtk/gtkassistant.h b/gtk/gtkassistant.h index ea3ae8168d..62f9eadbc2 100644 --- a/gtk/gtkassistant.h +++ b/gtk/gtkassistant.h @@ -111,7 +111,7 @@ struct _GtkAssistantClass /** * GtkAssistantPageFunc: * @current_page: The page number used to calculate the next page. - * @data: user data. + * @data: (closure): user data. * * A function used by gtk_assistant_set_forward_page_func() to know which * is the next page given a current one. It's called both for computing the diff --git a/gtk/gtkbbox.c b/gtk/gtkbbox.c index 5fdf837a15..24bdf1c392 100644 --- a/gtk/gtkbbox.c +++ b/gtk/gtkbbox.c @@ -49,9 +49,9 @@ #include "gtkbbox.h" #include "gtkorientable.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtksizerequest.h" -#include "gtktypeutils.h" #include "gtkintl.h" diff --git a/gtk/gtkbin.c b/gtk/gtkbin.c index 2e2cde65d1..af3efea253 100644 --- a/gtk/gtkbin.c +++ b/gtk/gtkbin.c @@ -211,7 +211,12 @@ get_child_padding_delta (GtkBin *bin, * direct vfuncs */ GTK_WIDGET_GET_CLASS (bin)->get_preferred_width (GTK_WIDGET (bin), &hmin, &hnat); + GTK_WIDGET_GET_CLASS (bin)->adjust_size_request (GTK_WIDGET (bin), + GTK_ORIENTATION_HORIZONTAL, &hmin, &hnat); + GTK_WIDGET_GET_CLASS (bin)->get_preferred_height (GTK_WIDGET (bin), &vmin, &vnat); + GTK_WIDGET_GET_CLASS (bin)->adjust_size_request (GTK_WIDGET (bin), + GTK_ORIENTATION_VERTICAL, &vmin, &vnat); gtk_widget_get_preferred_width (priv->child, &child_hmin, NULL); gtk_widget_get_preferred_height (priv->child, &child_vmin, NULL); diff --git a/gtk/gtkbindings.c b/gtk/gtkbindings.c index 6973a6a2bb..733c9b1060 100644 --- a/gtk/gtkbindings.c +++ b/gtk/gtkbindings.c @@ -11,7 +11,7 @@ * * 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 + * 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 @@ -30,42 +30,56 @@ #include "config.h" #include #include -#include #include "gtkbindings.h" #include "gtkkeyhash.h" -#include "gtktypeutils.h" #include "gtkwidget.h" #include "gtkrc.h" - +#include "gtkintl.h" /* --- defines --- */ -#define BINDING_MOD_MASK() (gtk_accelerator_get_default_mod_mask () | GDK_RELEASE_MASK) +#define BINDING_MOD_MASK() (gtk_accelerator_get_default_mod_mask () | GDK_RELEASE_MASK) + + +#define GTK_TYPE_IDENTIFIER (gtk_identifier_get_type ()) +GType gtk_identifier_get_type (void) G_GNUC_CONST; /* --- structures --- */ typedef struct { GtkPathType type; GPatternSpec *pspec; - GSList *path; gpointer user_data; guint seq_id; } PatternSpec; /* --- variables --- */ -static GHashTable *binding_entry_hash_table = NULL; +static GHashTable *binding_entry_hash_table = NULL; static GSList *binding_key_hashes = NULL; -static GSList *binding_set_list = NULL; -static const gchar key_class_binding_set[] = "gtk-class-binding-set"; -static GQuark key_id_class_binding_set = 0; +static GSList *binding_set_list = NULL; +static const gchar key_class_binding_set[] = "gtk-class-binding-set"; +static GQuark key_id_class_binding_set = 0; /* --- functions --- */ +GType +gtk_identifier_get_type (void) +{ + static GType our_type = 0; + + if (our_type == 0) + { + GTypeInfo tinfo = { 0, }; + our_type = g_type_register_static (G_TYPE_STRING, I_("GtkIdentifier"), &tinfo, 0); + } + + return our_type; +} + static void pattern_spec_free (PatternSpec *pspec) { - _gtk_rc_free_widget_class_path (pspec->path); if (pspec->pspec) g_pattern_spec_free (pspec->pspec); g_free (pspec); @@ -73,7 +87,7 @@ pattern_spec_free (PatternSpec *pspec) static GtkBindingSignal* binding_signal_new (const gchar *signal_name, - guint n_args) + guint n_args) { GtkBindingSignal *signal; @@ -94,7 +108,7 @@ binding_signal_free (GtkBindingSignal *sig) for (i = 0; i < sig->n_args; i++) { if (G_TYPE_FUNDAMENTAL (sig->args[i].arg_type) == G_TYPE_STRING) - g_free (sig->args[i].d.string_data); + g_free (sig->args[i].d.string_data); } g_slice_free1 (sizeof (GtkBindingSignal) + sig->n_args * sizeof (GtkBindingArg), sig); } @@ -113,7 +127,7 @@ binding_entry_hash (gconstpointer key) static gint binding_entries_compare (gconstpointer a, - gconstpointer b) + gconstpointer b) { register const GtkBindingEntry *ea = a; register const GtkBindingEntry *eb = b; @@ -123,7 +137,7 @@ binding_entries_compare (gconstpointer a, static void binding_key_hash_insert_entry (GtkKeyHash *key_hash, - GtkBindingEntry *entry) + GtkBindingEntry *entry) { guint keyval = entry->keyval; @@ -133,9 +147,9 @@ binding_key_hash_insert_entry (GtkKeyHash *key_hash, if (entry->modifiers & GDK_SHIFT_MASK) { if (keyval == GDK_KEY_Tab) - keyval = GDK_KEY_ISO_Left_Tab; + keyval = GDK_KEY_ISO_Left_Tab; else - keyval = gdk_keyval_to_upper (keyval); + keyval = gdk_keyval_to_upper (keyval); } _gtk_key_hash_add_entry (key_hash, keyval, entry->modifiers & ~GDK_RELEASE_MASK, entry); @@ -152,8 +166,8 @@ binding_key_hash_destroy (gpointer data) static void insert_entries_into_key_hash (gpointer key, - gpointer value, - gpointer data) + gpointer value, + gpointer data) { GtkKeyHash *key_hash = data; GtkBindingEntry *entry = value; @@ -179,9 +193,9 @@ binding_key_hash_for_keymap (GdkKeymap *keymap) g_object_set_qdata_full (G_OBJECT (keymap), key_hash_quark, key_hash, binding_key_hash_destroy); if (binding_entry_hash_table) - g_hash_table_foreach (binding_entry_hash_table, - insert_entries_into_key_hash, - key_hash); + g_hash_table_foreach (binding_entry_hash_table, + insert_entries_into_key_hash, + key_hash); binding_key_hashes = g_slist_prepend (binding_key_hashes, key_hash); } @@ -192,8 +206,8 @@ binding_key_hash_for_keymap (GdkKeymap *keymap) static GtkBindingEntry* binding_entry_new (GtkBindingSet *binding_set, - guint keyval, - GdkModifierType modifiers) + guint keyval, + GdkModifierType modifiers) { GSList *tmp_list; GtkBindingEntry *entry; @@ -233,9 +247,9 @@ binding_entry_free (GtkBindingEntry *entry) GtkBindingSignal *sig; g_assert (entry->set_next == NULL && - entry->hash_next == NULL && - entry->in_emission == FALSE && - entry->destroyed == TRUE); + entry->hash_next == NULL && + entry->in_emission == FALSE && + entry->destroyed == TRUE); entry->destroyed = FALSE; @@ -267,13 +281,13 @@ binding_entry_destroy (GtkBindingEntry *entry) while (tmp) { if (tmp == entry) - { - if (last) - last->set_next = entry->set_next; - else - entry->binding_set->entries = entry->set_next; - break; - } + { + if (last) + last->set_next = entry->set_next; + else + entry->binding_set->entries = entry->set_next; + break; + } last = tmp; tmp = last->set_next; } @@ -286,13 +300,13 @@ binding_entry_destroy (GtkBindingEntry *entry) while (tmp) { if (tmp == entry) - { - if (last) - last->hash_next = entry->hash_next; - else - begin = entry->hash_next; - break; - } + { + if (last) + last->hash_next = entry->hash_next; + else + begin = entry->hash_next; + break; + } last = tmp; tmp = last->hash_next; } @@ -320,8 +334,8 @@ binding_entry_destroy (GtkBindingEntry *entry) static GtkBindingEntry* binding_ht_lookup_entry (GtkBindingSet *set, - guint keyval, - GdkModifierType modifiers) + guint keyval, + GdkModifierType modifiers) { GtkBindingEntry lookup_entry = { 0 }; GtkBindingEntry *entry; @@ -342,9 +356,9 @@ binding_ht_lookup_entry (GtkBindingSet *set, static gboolean binding_compose_params (GObject *object, - GtkBindingArg *args, - GSignalQuery *query, - GValue **params_p) + GtkBindingArg *args, + GSignalQuery *query, + GValue **params_p) { GValue *params; const GType *types; @@ -369,85 +383,85 @@ binding_compose_params (GObject *object, g_value_init (params, *types); switch (G_TYPE_FUNDAMENTAL (args->arg_type)) - { - case G_TYPE_DOUBLE: - g_value_init (&tmp_value, G_TYPE_DOUBLE); - g_value_set_double (&tmp_value, args->d.double_data); - break; - case G_TYPE_LONG: - g_value_init (&tmp_value, G_TYPE_LONG); - g_value_set_long (&tmp_value, args->d.long_data); - break; - case G_TYPE_STRING: - /* gtk_rc_parse_flags/enum() has fancier parsing for this; we can't call - * that since we don't have a GParamSpec, so just do something simple - */ - if (G_TYPE_FUNDAMENTAL (*types) == G_TYPE_ENUM) - { - GEnumClass *class = G_ENUM_CLASS (g_type_class_ref (*types)); - - valid = FALSE; - - if (args->arg_type == GTK_TYPE_IDENTIFIER) - { - GEnumValue *enum_value = NULL; - enum_value = g_enum_get_value_by_name (class, args->d.string_data); - if (!enum_value) - enum_value = g_enum_get_value_by_nick (class, args->d.string_data); - if (enum_value) - { - g_value_init (&tmp_value, *types); - g_value_set_enum (&tmp_value, enum_value->value); - valid = TRUE; - } - } + { + case G_TYPE_DOUBLE: + g_value_init (&tmp_value, G_TYPE_DOUBLE); + g_value_set_double (&tmp_value, args->d.double_data); + break; + case G_TYPE_LONG: + g_value_init (&tmp_value, G_TYPE_LONG); + g_value_set_long (&tmp_value, args->d.long_data); + break; + case G_TYPE_STRING: + /* gtk_rc_parse_flags/enum() has fancier parsing for this; we can't call + * that since we don't have a GParamSpec, so just do something simple + */ + if (G_TYPE_FUNDAMENTAL (*types) == G_TYPE_ENUM) + { + GEnumClass *class = G_ENUM_CLASS (g_type_class_ref (*types)); - g_type_class_unref (class); - } - /* This is just a hack for compatibility with GTK+-1.2 where a string - * could be used for a single flag value / without the support for multiple - * values in gtk_rc_parse_flags(), this isn't very useful. - */ - else if (G_TYPE_FUNDAMENTAL (*types) == G_TYPE_FLAGS) - { - GFlagsClass *class = G_FLAGS_CLASS (g_type_class_ref (*types)); - - valid = FALSE; - - if (args->arg_type == GTK_TYPE_IDENTIFIER) - { - GFlagsValue *flags_value = NULL; - flags_value = g_flags_get_value_by_name (class, args->d.string_data); - if (!flags_value) - flags_value = g_flags_get_value_by_nick (class, args->d.string_data); - if (flags_value) - { - g_value_init (&tmp_value, *types); - g_value_set_flags (&tmp_value, flags_value->value); - valid = TRUE; - } - } + valid = FALSE; - g_type_class_unref (class); - } - else - { - g_value_init (&tmp_value, G_TYPE_STRING); - g_value_set_static_string (&tmp_value, args->d.string_data); - } - break; - default: - valid = FALSE; - break; - } + if (args->arg_type == GTK_TYPE_IDENTIFIER) + { + GEnumValue *enum_value = NULL; + enum_value = g_enum_get_value_by_name (class, args->d.string_data); + if (!enum_value) + enum_value = g_enum_get_value_by_nick (class, args->d.string_data); + if (enum_value) + { + g_value_init (&tmp_value, *types); + g_value_set_enum (&tmp_value, enum_value->value); + valid = TRUE; + } + } + + g_type_class_unref (class); + } + /* This is just a hack for compatibility with GTK+-1.2 where a string + * could be used for a single flag value / without the support for multiple + * values in gtk_rc_parse_flags(), this isn't very useful. + */ + else if (G_TYPE_FUNDAMENTAL (*types) == G_TYPE_FLAGS) + { + GFlagsClass *class = G_FLAGS_CLASS (g_type_class_ref (*types)); + + valid = FALSE; + + if (args->arg_type == GTK_TYPE_IDENTIFIER) + { + GFlagsValue *flags_value = NULL; + flags_value = g_flags_get_value_by_name (class, args->d.string_data); + if (!flags_value) + flags_value = g_flags_get_value_by_nick (class, args->d.string_data); + if (flags_value) + { + g_value_init (&tmp_value, *types); + g_value_set_flags (&tmp_value, flags_value->value); + valid = TRUE; + } + } + + g_type_class_unref (class); + } + else + { + g_value_init (&tmp_value, G_TYPE_STRING); + g_value_set_static_string (&tmp_value, args->d.string_data); + } + break; + default: + valid = FALSE; + break; + } if (valid) - { - if (!g_value_transform (&tmp_value, params)) - valid = FALSE; + { + if (!g_value_transform (&tmp_value, params)) + valid = FALSE; - g_value_unset (&tmp_value); - } + g_value_unset (&tmp_value); + } types++; params++; @@ -459,7 +473,7 @@ binding_compose_params (GObject *object, guint j; for (j = 0; j < i; j++) - g_value_unset (&(*params_p)[j]); + g_value_unset (&(*params_p)[j]); g_free (*params_p); *params_p = NULL; @@ -470,7 +484,7 @@ binding_compose_params (GObject *object, static gboolean gtk_binding_entry_activate (GtkBindingEntry *entry, - GObject *object) + GObject *object) { GtkBindingSignal *sig; gboolean old_emission; @@ -492,65 +506,65 @@ gtk_binding_entry_activate (GtkBindingEntry *entry, signal_id = g_signal_lookup (sig->signal_name, G_OBJECT_TYPE (object)); if (!signal_id) - { - accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); - g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " - "could not find signal \"%s\" in the `%s' class ancestry", - entry->binding_set->set_name, - accelerator, - sig->signal_name, - g_type_name (G_OBJECT_TYPE (object))); - g_free (accelerator); - continue; - } - + { + accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); + g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " + "could not find signal \"%s\" in the `%s' class ancestry", + entry->binding_set->set_name, + accelerator, + sig->signal_name, + g_type_name (G_OBJECT_TYPE (object))); + g_free (accelerator); + continue; + } + g_signal_query (signal_id, &query); if (query.n_params != sig->n_args || - (query.return_type != G_TYPE_NONE && query.return_type != G_TYPE_BOOLEAN) || - !binding_compose_params (object, sig->args, &query, ¶ms)) - { - accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); - g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " - "signature mismatch for signal \"%s\" in the `%s' class ancestry", - entry->binding_set->set_name, - accelerator, - sig->signal_name, - g_type_name (G_OBJECT_TYPE (object))); - } + (query.return_type != G_TYPE_NONE && query.return_type != G_TYPE_BOOLEAN) || + !binding_compose_params (object, sig->args, &query, ¶ms)) + { + accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); + g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " + "signature mismatch for signal \"%s\" in the `%s' class ancestry", + entry->binding_set->set_name, + accelerator, + sig->signal_name, + g_type_name (G_OBJECT_TYPE (object))); + } else if (!(query.signal_flags & G_SIGNAL_ACTION)) - { - accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); - g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " - "signal \"%s\" in the `%s' class ancestry cannot be used for action emissions", - entry->binding_set->set_name, - accelerator, - sig->signal_name, - g_type_name (G_OBJECT_TYPE (object))); - } + { + accelerator = gtk_accelerator_name (entry->keyval, entry->modifiers); + g_warning ("gtk_binding_entry_activate(): binding \"%s::%s\": " + "signal \"%s\" in the `%s' class ancestry cannot be used for action emissions", + entry->binding_set->set_name, + accelerator, + sig->signal_name, + g_type_name (G_OBJECT_TYPE (object))); + } g_free (accelerator); if (accelerator) - continue; + continue; if (query.return_type == G_TYPE_BOOLEAN) - g_value_init (&return_val, G_TYPE_BOOLEAN); + g_value_init (&return_val, G_TYPE_BOOLEAN); g_signal_emitv (params, signal_id, 0, &return_val); if (query.return_type == G_TYPE_BOOLEAN) - { - if (g_value_get_boolean (&return_val)) - handled = TRUE; - g_value_unset (&return_val); - } + { + if (g_value_get_boolean (&return_val)) + handled = TRUE; + g_value_unset (&return_val); + } else - handled = TRUE; + handled = TRUE; for (i = 0; i < query.n_params + 1; i++) - g_value_unset (¶ms[i]); + g_value_unset (¶ms[i]); g_free (params); if (entry->destroyed) - break; + break; } g_object_unref (object); @@ -620,9 +634,9 @@ gtk_binding_set_by_class (gpointer object_class) binding_set = gtk_binding_set_new (g_type_name (G_OBJECT_CLASS_TYPE (class))); gtk_binding_set_add_path (binding_set, - GTK_PATH_CLASS, - g_type_name (G_OBJECT_CLASS_TYPE (class)), - GTK_PATH_PRIO_GTK); + GTK_PATH_CLASS, + g_type_name (G_OBJECT_CLASS_TYPE (class)), + GTK_PATH_PRIO_GTK); g_dataset_id_set_data (class, key_id_class_binding_set, binding_set); return binding_set; @@ -651,7 +665,7 @@ gtk_binding_set_find (const gchar *set_name) binding_set = slist->data; if (g_str_equal (binding_set->set_name, (gpointer) set_name)) - return binding_set; + return binding_set; } return NULL; } @@ -669,10 +683,10 @@ gtk_binding_set_find (const gchar *set_name) * Return value: %TRUE if a binding was found and activated */ gboolean -gtk_binding_set_activate (GtkBindingSet *binding_set, - guint keyval, - GdkModifierType modifiers, - GObject *object) +gtk_binding_set_activate (GtkBindingSet *binding_set, + guint keyval, + GdkModifierType modifiers, + GObject *object) { GtkBindingEntry *entry; @@ -748,9 +762,9 @@ gtk_binding_entry_skip (GtkBindingSet *binding_set, * gtk_binding_entry_add_signal() on @binding_set. */ void -gtk_binding_entry_remove (GtkBindingSet *binding_set, - guint keyval, - GdkModifierType modifiers) +gtk_binding_entry_remove (GtkBindingSet *binding_set, + guint keyval, + GdkModifierType modifiers) { GtkBindingEntry *entry; @@ -778,10 +792,10 @@ gtk_binding_entry_remove (GtkBindingSet *binding_set, */ void gtk_binding_entry_add_signall (GtkBindingSet *binding_set, - guint keyval, + guint keyval, GdkModifierType modifiers, const gchar *signal_name, - GSList *binding_args) + GSList *binding_args) { _gtk_binding_entry_add_signall (binding_set, keyval, modifiers, @@ -790,10 +804,10 @@ gtk_binding_entry_add_signall (GtkBindingSet *binding_set, void _gtk_binding_entry_add_signall (GtkBindingSet *binding_set, - guint keyval, + guint keyval, GdkModifierType modifiers, const gchar *signal_name, - GSList *binding_args) + GSList *binding_args) { GtkBindingEntry *entry; GtkBindingSignal *signal, **signal_p; @@ -816,40 +830,40 @@ _gtk_binding_entry_add_signall (GtkBindingSet *binding_set, tmp_arg = slist->data; if (!tmp_arg) - { - g_warning ("gtk_binding_entry_add_signall(): arg[%u] is `NULL'", n); - binding_signal_free (signal); - return; - } + { + g_warning ("gtk_binding_entry_add_signall(): arg[%u] is `NULL'", n); + binding_signal_free (signal); + return; + } switch (G_TYPE_FUNDAMENTAL (tmp_arg->arg_type)) - { - case G_TYPE_LONG: - arg->arg_type = G_TYPE_LONG; - arg->d.long_data = tmp_arg->d.long_data; - break; - case G_TYPE_DOUBLE: - arg->arg_type = G_TYPE_DOUBLE; - arg->d.double_data = tmp_arg->d.double_data; - break; - case G_TYPE_STRING: + { + case G_TYPE_LONG: + arg->arg_type = G_TYPE_LONG; + arg->d.long_data = tmp_arg->d.long_data; + break; + case G_TYPE_DOUBLE: + arg->arg_type = G_TYPE_DOUBLE; + arg->d.double_data = tmp_arg->d.double_data; + break; + case G_TYPE_STRING: if (tmp_arg->arg_type != GTK_TYPE_IDENTIFIER) - arg->arg_type = G_TYPE_STRING; - else - arg->arg_type = GTK_TYPE_IDENTIFIER; - arg->d.string_data = g_strdup (tmp_arg->d.string_data); - if (!arg->d.string_data) - { - g_warning ("gtk_binding_entry_add_signall(): value of `string' arg[%u] is `NULL'", n); - binding_signal_free (signal); - return; - } - break; - default: - g_warning ("gtk_binding_entry_add_signall(): unsupported type `%s' for arg[%u]", - g_type_name (arg->arg_type), n); - binding_signal_free (signal); - return; - } + arg->arg_type = G_TYPE_STRING; + else + arg->arg_type = GTK_TYPE_IDENTIFIER; + arg->d.string_data = g_strdup (tmp_arg->d.string_data); + if (!arg->d.string_data) + { + g_warning ("gtk_binding_entry_add_signall(): value of `string' arg[%u] is `NULL'", n); + binding_signal_free (signal); + return; + } + break; + default: + g_warning ("gtk_binding_entry_add_signall(): unsupported type `%s' for arg[%u]", + g_type_name (arg->arg_type), n); + binding_signal_free (signal); + return; + } arg++; n++; } @@ -882,11 +896,11 @@ _gtk_binding_entry_add_signall (GtkBindingSet *binding_set, */ void gtk_binding_entry_add_signal (GtkBindingSet *binding_set, - guint keyval, - GdkModifierType modifiers, - const gchar *signal_name, - guint n_args, - ...) + guint keyval, + GdkModifierType modifiers, + const gchar *signal_name, + guint n_args, + ...) { GSList *slist, *free_slist; va_list args; @@ -906,45 +920,45 @@ gtk_binding_entry_add_signal (GtkBindingSet *binding_set, arg->arg_type = va_arg (args, GType); switch (G_TYPE_FUNDAMENTAL (arg->arg_type)) - { - case G_TYPE_CHAR: - case G_TYPE_UCHAR: - case G_TYPE_INT: - case G_TYPE_UINT: - case G_TYPE_BOOLEAN: - case G_TYPE_ENUM: - case G_TYPE_FLAGS: - arg->arg_type = G_TYPE_LONG; - arg->d.long_data = va_arg (args, gint); - break; - case G_TYPE_LONG: - case G_TYPE_ULONG: - arg->arg_type = G_TYPE_LONG; - arg->d.long_data = va_arg (args, glong); - break; - case G_TYPE_FLOAT: - case G_TYPE_DOUBLE: - arg->arg_type = G_TYPE_DOUBLE; - arg->d.double_data = va_arg (args, gdouble); - break; - case G_TYPE_STRING: - if (arg->arg_type != GTK_TYPE_IDENTIFIER) - arg->arg_type = G_TYPE_STRING; - arg->d.string_data = va_arg (args, gchar*); - if (!arg->d.string_data) - { - g_warning ("gtk_binding_entry_add_signal(): type `%s' arg[%u] is `NULL'", - g_type_name (arg->arg_type), - i); - i += n_args + 1; - } - break; - default: - g_warning ("gtk_binding_entry_add_signal(): unsupported type `%s' for arg[%u]", - g_type_name (arg->arg_type), i); - i += n_args + 1; - break; - } + { + case G_TYPE_CHAR: + case G_TYPE_UCHAR: + case G_TYPE_INT: + case G_TYPE_UINT: + case G_TYPE_BOOLEAN: + case G_TYPE_ENUM: + case G_TYPE_FLAGS: + arg->arg_type = G_TYPE_LONG; + arg->d.long_data = va_arg (args, gint); + break; + case G_TYPE_LONG: + case G_TYPE_ULONG: + arg->arg_type = G_TYPE_LONG; + arg->d.long_data = va_arg (args, glong); + break; + case G_TYPE_FLOAT: + case G_TYPE_DOUBLE: + arg->arg_type = G_TYPE_DOUBLE; + arg->d.double_data = va_arg (args, gdouble); + break; + case G_TYPE_STRING: + if (arg->arg_type != GTK_TYPE_IDENTIFIER) + arg->arg_type = G_TYPE_STRING; + arg->d.string_data = va_arg (args, gchar*); + if (!arg->d.string_data) + { + g_warning ("gtk_binding_entry_add_signal(): type `%s' arg[%u] is `NULL'", + g_type_name (arg->arg_type), + i); + i += n_args + 1; + } + break; + default: + g_warning ("gtk_binding_entry_add_signal(): unsupported type `%s' for arg[%u]", + g_type_name (arg->arg_type), i); + i += n_args + 1; + break; + } } va_end (args); @@ -972,12 +986,14 @@ gtk_binding_entry_add_signal (GtkBindingSet *binding_set, * * This function is used internally by the GtkRC parsing mechanism to * assign match patterns to #GtkBindingSet structures. + * + * Deprecated: 3.0 */ void -gtk_binding_set_add_path (GtkBindingSet *binding_set, - GtkPathType path_type, - const gchar *path_pattern, - GtkPathPriorityType priority) +gtk_binding_set_add_path (GtkBindingSet *binding_set, + GtkPathType path_type, + const gchar *path_pattern, + GtkPathPriorityType priority) { PatternSpec *pspec; GSList **slist_p, *slist; @@ -1009,16 +1025,10 @@ gtk_binding_set_add_path (GtkBindingSet *binding_set, pspec = g_new (PatternSpec, 1); pspec->type = path_type; if (path_type == GTK_PATH_WIDGET_CLASS) - { - pspec->pspec = NULL; - pspec->path = _gtk_rc_parse_widget_class_path (path_pattern); - } + pspec->pspec = NULL; else - { - pspec->pspec = g_pattern_spec_new (path_pattern); - pspec->path = NULL; - } - + pspec->pspec = g_pattern_spec_new (path_pattern); + pspec->seq_id = priority << 28; pspec->user_data = binding_set; @@ -1031,18 +1041,18 @@ gtk_binding_set_add_path (GtkBindingSet *binding_set, slist = slist->next; if (g_pattern_spec_equal (tmp_pspec->pspec, pspec->pspec)) - { - GtkPathPriorityType lprio = tmp_pspec->seq_id >> 28; + { + GtkPathPriorityType lprio = tmp_pspec->seq_id >> 28; - pattern_spec_free (pspec); - pspec = NULL; - if (lprio < priority) - { - tmp_pspec->seq_id &= 0x0fffffff; - tmp_pspec->seq_id |= priority << 28; - } - break; - } + pattern_spec_free (pspec); + pspec = NULL; + if (lprio < priority) + { + tmp_pspec->seq_id &= 0x0fffffff; + tmp_pspec->seq_id |= priority << 28; + } + break; + } } if (pspec) { @@ -1053,10 +1063,10 @@ gtk_binding_set_add_path (GtkBindingSet *binding_set, static gboolean binding_match_activate (GSList *pspec_list, - GObject *object, - guint path_length, - gchar *path, - gchar *path_reversed, + GObject *object, + guint path_length, + gchar *path, + gchar *path_reversed, gboolean *unbound) { GSList *slist; @@ -1070,16 +1080,11 @@ binding_match_activate (GSList *pspec_list, binding_set = NULL; pspec = slist->data; - - if (pspec->type == GTK_PATH_WIDGET_CLASS) - { - if (_gtk_rc_match_widget_class (pspec->path, path_length, path, path_reversed)) - binding_set = pspec->user_data; - } - else + + if (pspec->type != GTK_PATH_WIDGET_CLASS) { if (g_pattern_match (pspec->pspec, path_length, path, path_reversed)) - binding_set = pspec->user_data; + binding_set = pspec->user_data; } if (binding_set) @@ -1100,7 +1105,7 @@ binding_match_activate (GSList *pspec_list, static gint gtk_binding_pattern_compare (gconstpointer new_pattern, - gconstpointer existing_pattern) + gconstpointer existing_pattern) { register const PatternSpec *np = new_pattern; register const PatternSpec *ep = existing_pattern; @@ -1114,8 +1119,8 @@ gtk_binding_pattern_compare (gconstpointer new_pattern, static GSList* gtk_binding_entries_sort_patterns (GSList *entries, - GtkPathType path_id, - gboolean is_release) + GtkPathType path_id, + gboolean is_release) { GSList *patterns; GSList *tmp_list; @@ -1137,34 +1142,34 @@ gtk_binding_entries_sort_patterns (GSList *entries, GSList *slist = NULL; if (is_release != ((entry->modifiers & GDK_RELEASE_MASK) != 0)) - continue; + continue; binding_set = entry->binding_set; if (binding_set->current) - continue; + continue; binding_set->current = entry; switch (path_id) - { - case GTK_PATH_WIDGET: - slist = binding_set->widget_path_pspecs; - break; - case GTK_PATH_WIDGET_CLASS: - slist = binding_set->widget_class_pspecs; - break; - case GTK_PATH_CLASS: - slist = binding_set->class_branch_pspecs; - break; - } + { + case GTK_PATH_WIDGET: + slist = binding_set->widget_path_pspecs; + break; + case GTK_PATH_WIDGET_CLASS: + slist = binding_set->widget_class_pspecs; + break; + case GTK_PATH_CLASS: + slist = binding_set->class_branch_pspecs; + break; + } for (; slist; slist = slist->next) - { - PatternSpec *pspec; + { + PatternSpec *pspec; - pspec = slist->data; - patterns = g_slist_insert_sorted (patterns, pspec, gtk_binding_pattern_compare); - } + pspec = slist->data; + patterns = g_slist_insert_sorted (patterns, pspec, gtk_binding_pattern_compare); + } } return patterns; @@ -1172,50 +1177,15 @@ gtk_binding_entries_sort_patterns (GSList *entries, static gboolean gtk_bindings_activate_list (GObject *object, - GSList *entries, - gboolean is_release) + GSList *entries, + gboolean is_release) { - GtkWidget *widget = GTK_WIDGET (object); gboolean handled = FALSE; if (!entries) return FALSE; - if (!handled) - { - guint path_length; - gchar *path, *path_reversed; - GSList *patterns; - gboolean unbound; - - gtk_widget_path (widget, &path_length, &path, &path_reversed); - patterns = gtk_binding_entries_sort_patterns (entries, GTK_PATH_WIDGET, is_release); - handled = binding_match_activate (patterns, object, path_length, path, path_reversed, &unbound); - g_slist_free (patterns); - g_free (path); - g_free (path_reversed); - - if (unbound) - return FALSE; - } - - if (!handled) - { - guint path_length; - gchar *path, *path_reversed; - GSList *patterns; - gboolean unbound; - - gtk_widget_class_path (widget, &path_length, &path, &path_reversed); - patterns = gtk_binding_entries_sort_patterns (entries, GTK_PATH_WIDGET_CLASS, is_release); - handled = binding_match_activate (patterns, object, path_length, path, path_reversed, &unbound); - g_slist_free (patterns); - g_free (path); - g_free (path_reversed); - - if (unbound) - return FALSE; - } + /* FIXME: Add back binding parsing from user config files */ if (!handled) { @@ -1226,24 +1196,24 @@ gtk_bindings_activate_list (GObject *object, patterns = gtk_binding_entries_sort_patterns (entries, GTK_PATH_CLASS, is_release); class_type = G_TYPE_FROM_INSTANCE (object); while (class_type && !handled) - { - guint path_length; - gchar *path; - gchar *path_reversed; + { + guint path_length; + gchar *path; + gchar *path_reversed; - path = g_strdup (g_type_name (class_type)); - path_reversed = g_strdup (path); - g_strreverse (path_reversed); - path_length = strlen (path); - handled = binding_match_activate (patterns, object, path_length, path, path_reversed, &unbound); - g_free (path); - g_free (path_reversed); + path = g_strdup (g_type_name (class_type)); + path_reversed = g_strdup (path); + g_strreverse (path_reversed); + path_length = strlen (path); + handled = binding_match_activate (patterns, object, path_length, path, path_reversed, &unbound); + g_free (path); + g_free (path_reversed); if (unbound) break; - class_type = g_type_parent (class_type); - } + class_type = g_type_parent (class_type); + } g_slist_free (patterns); if (unbound) @@ -1266,8 +1236,8 @@ gtk_bindings_activate_list (GObject *object, */ gboolean gtk_bindings_activate (GObject *object, - guint keyval, - GdkModifierType modifiers) + guint keyval, + GdkModifierType modifiers) { GSList *entries = NULL; GdkDisplay *display; @@ -1321,360 +1291,15 @@ gtk_bindings_activate_event (GObject *object, key_hash = binding_key_hash_for_keymap (gdk_keymap_get_for_display (display)); entries = _gtk_key_hash_lookup (key_hash, - event->hardware_keycode, - event->state, - BINDING_MOD_MASK () & ~GDK_RELEASE_MASK, - event->group); + event->hardware_keycode, + event->state, + BINDING_MOD_MASK () & ~GDK_RELEASE_MASK, + event->group); handled = gtk_bindings_activate_list (object, entries, - event->type == GDK_KEY_RELEASE); + event->type == GDK_KEY_RELEASE); g_slist_free (entries); return handled; } - -static guint -gtk_binding_parse_signal (GScanner *scanner, - GtkBindingSet *binding_set, - guint keyval, - GdkModifierType modifiers) -{ - gchar *signal; - guint expected_token = 0; - GSList *args; - GSList *slist; - gboolean done; - gboolean negate; - gboolean need_arg; - gboolean seen_comma; - guint token; - - g_return_val_if_fail (scanner != NULL, G_TOKEN_ERROR); - - g_scanner_get_next_token (scanner); - if (scanner->token != G_TOKEN_STRING) - return G_TOKEN_STRING; - g_scanner_peek_next_token (scanner); - if (scanner->next_token != '(') - { - g_scanner_get_next_token (scanner); - return '('; - } - signal = g_strdup (scanner->value.v_string); - g_scanner_get_next_token (scanner); - - negate = FALSE; - args = NULL; - done = FALSE; - need_arg = TRUE; - seen_comma = FALSE; - scanner->config->scan_symbols = FALSE; - do - { - if (need_arg) - expected_token = G_TOKEN_INT; - else - expected_token = ')'; - - token = g_scanner_get_next_token (scanner); - switch (token) - { - GtkBindingArg *arg; - - case G_TOKEN_FLOAT: - if (need_arg) - { - need_arg = FALSE; - arg = g_new (GtkBindingArg, 1); - arg->arg_type = G_TYPE_DOUBLE; - arg->d.double_data = scanner->value.v_float; - if (negate) - { - arg->d.double_data = - arg->d.double_data; - negate = FALSE; - } - args = g_slist_prepend (args, arg); - } - else - done = TRUE; - break; - case G_TOKEN_INT: - if (need_arg) - { - need_arg = FALSE; - arg = g_new (GtkBindingArg, 1); - arg->arg_type = G_TYPE_LONG; - arg->d.long_data = scanner->value.v_int; - if (negate) - { - arg->d.long_data = - arg->d.long_data; - negate = FALSE; - } - args = g_slist_prepend (args, arg); - } - else - done = TRUE; - break; - case G_TOKEN_STRING: - if (need_arg && !negate) - { - need_arg = FALSE; - arg = g_new (GtkBindingArg, 1); - arg->arg_type = G_TYPE_STRING; - arg->d.string_data = g_strdup (scanner->value.v_string); - args = g_slist_prepend (args, arg); - } - else - done = TRUE; - break; - case G_TOKEN_IDENTIFIER: - if (need_arg && !negate) - { - need_arg = FALSE; - arg = g_new (GtkBindingArg, 1); - arg->arg_type = GTK_TYPE_IDENTIFIER; - arg->d.string_data = g_strdup (scanner->value.v_identifier); - args = g_slist_prepend (args, arg); - } - else - done = TRUE; - break; - case '-': - if (!need_arg) - done = TRUE; - else if (negate) - { - expected_token = G_TOKEN_INT; - done = TRUE; - } - else - negate = TRUE; - break; - case ',': - seen_comma = TRUE; - if (need_arg) - done = TRUE; - else - need_arg = TRUE; - break; - case ')': - if (!(need_arg && seen_comma) && !negate) - { - args = g_slist_reverse (args); - _gtk_binding_entry_add_signall (binding_set, - keyval, - modifiers, - signal, - args); - expected_token = G_TOKEN_NONE; - } - done = TRUE; - break; - default: - done = TRUE; - break; - } - } - while (!done); - scanner->config->scan_symbols = TRUE; - - for (slist = args; slist; slist = slist->next) - { - GtkBindingArg *arg; - - arg = slist->data; - if (G_TYPE_FUNDAMENTAL (arg->arg_type) == G_TYPE_STRING) - g_free (arg->d.string_data); - g_free (arg); - } - g_slist_free (args); - g_free (signal); - - return expected_token; -} - -static inline guint -gtk_binding_parse_bind (GScanner *scanner, - GtkBindingSet *binding_set) -{ - guint keyval = 0; - GdkModifierType modifiers = 0; - gboolean unbind = FALSE; - guint token; - - g_return_val_if_fail (scanner != NULL, G_TOKEN_ERROR); - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_BIND && - token != GTK_RC_TOKEN_UNBIND) - return GTK_RC_TOKEN_BIND; - unbind = token == GTK_RC_TOKEN_UNBIND; - g_scanner_get_next_token (scanner); - if (scanner->token != G_TOKEN_STRING) - return G_TOKEN_STRING; - gtk_accelerator_parse (scanner->value.v_string, &keyval, &modifiers); - modifiers &= BINDING_MOD_MASK (); - if (keyval == 0) - return G_TOKEN_STRING; - - if (unbind) - { - gtk_binding_entry_skip (binding_set, keyval, modifiers); - return G_TOKEN_NONE; - } - - g_scanner_get_next_token (scanner); - - if (scanner->token != '{') - return '{'; - - gtk_binding_entry_clear_internal (binding_set, keyval, modifiers); - - g_scanner_peek_next_token (scanner); - while (scanner->next_token != '}') - { - switch (scanner->next_token) - { - guint expected_token; - - case G_TOKEN_STRING: - expected_token = gtk_binding_parse_signal (scanner, - binding_set, - keyval, - modifiers); - if (expected_token != G_TOKEN_NONE) - return expected_token; - break; - default: - g_scanner_get_next_token (scanner); - return '}'; - } - g_scanner_peek_next_token (scanner); - } - g_scanner_get_next_token (scanner); - - return G_TOKEN_NONE; -} - -guint -_gtk_binding_parse_binding (GScanner *scanner) -{ - GtkBindingSet *binding_set; - gchar *name; - guint token; - - g_return_val_if_fail (scanner != NULL, G_TOKEN_ERROR); - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_BINDING) - return GTK_RC_TOKEN_BINDING; - g_scanner_get_next_token (scanner); - if (scanner->token != G_TOKEN_STRING) - return G_TOKEN_STRING; - name = g_strdup (scanner->value.v_string); - - g_scanner_get_next_token (scanner); - if (scanner->token != '{') - { - g_free (name); - return G_TOKEN_STRING; - } - - binding_set = gtk_binding_set_find (name); - if (!binding_set) - { - binding_set = gtk_binding_set_new (name); - binding_set->parsed = 1; - } - g_free (name); - - g_scanner_peek_next_token (scanner); - while (scanner->next_token != '}') - { - guint next_token = scanner->next_token; - switch (next_token) - { - guint expected_token; - - case GTK_RC_TOKEN_BIND: - case GTK_RC_TOKEN_UNBIND: - expected_token = gtk_binding_parse_bind (scanner, binding_set); - if (expected_token != G_TOKEN_NONE) - return expected_token; - break; - default: - g_scanner_get_next_token (scanner); - return '}'; - } - g_scanner_peek_next_token (scanner); - } - g_scanner_get_next_token (scanner); - - return G_TOKEN_NONE; -} - -static void -free_pattern_specs (GSList *pattern_specs) -{ - GSList *slist; - - for (slist = pattern_specs; slist; slist = slist->next) - { - PatternSpec *pspec; - - pspec = slist->data; - - pattern_spec_free (pspec); - } - - g_slist_free (pattern_specs); -} - -static void -binding_set_delete (GtkBindingSet *binding_set) -{ - GtkBindingEntry *entry, *next; - - entry = binding_set->entries; - while (entry) - { - next = entry->set_next; - binding_entry_destroy (entry); - entry = next; - } - - free_pattern_specs (binding_set->widget_path_pspecs); - free_pattern_specs (binding_set->widget_class_pspecs); - free_pattern_specs (binding_set->class_branch_pspecs); - - g_free (binding_set); -} - -/** - * _gtk_binding_reset_parsed: - * - * Remove all binding sets that were added by gtk_binding_parse_binding(). - */ -void -_gtk_binding_reset_parsed (void) -{ - GSList *slist, *next; - - slist = binding_set_list; - while (slist) - { - GtkBindingSet *binding_set; - - binding_set = slist->data; - next = slist->next; - - if (binding_set->parsed) - { - binding_set_list = g_slist_delete_link (binding_set_list, slist); - binding_set_delete (binding_set); - } - - slist = next; - } -} diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index e3c4b42e83..8c7f86705e 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -88,7 +88,7 @@ #include "gtkbox.h" #include "gtkorientable.h" #include "gtksizerequest.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" diff --git a/gtk/gtkbuildable.c b/gtk/gtkbuildable.c index d813fff451..25c9fc2e52 100644 --- a/gtk/gtkbuildable.c +++ b/gtk/gtkbuildable.c @@ -40,7 +40,6 @@ #include "config.h" #include "gtkbuildable.h" -#include "gtktypeutils.h" #include "gtkintl.h" diff --git a/gtk/gtkbuildable.h b/gtk/gtkbuildable.h index 50ed14cd1d..5f46026a5e 100644 --- a/gtk/gtkbuildable.h +++ b/gtk/gtkbuildable.h @@ -26,7 +26,6 @@ #define __GTK_BUILDABLE_H__ #include -#include G_BEGIN_DECLS diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 97b0053da3..faa3ef79ad 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -913,7 +913,7 @@ gtk_builder_add_from_file (GtkBuilder *builder, * gtk_builder_add_objects_from_file: * @builder: a #GtkBuilder * @filename: the name of the file to parse - * @object_ids: nul-terminated array of objects to build + * @object_ids: (array zero-terminated=1) (element-type utf8): nul-terminated array of objects to build * @error: (allow-none): return location for an error, or %NULL * * Parses a file containing a GtkBuilder diff --git a/gtk/gtkbuilder.h b/gtk/gtkbuilder.h index 298e3e8aed..cdbd06f673 100644 --- a/gtk/gtkbuilder.h +++ b/gtk/gtkbuilder.h @@ -25,7 +25,6 @@ #ifndef __GTK_BUILDER_H__ #define __GTK_BUILDER_H__ -#include #include G_BEGIN_DECLS diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c index 11fe3c63f1..5ea15e3c60 100644 --- a/gtk/gtkbuilderparser.c +++ b/gtk/gtkbuilderparser.c @@ -23,13 +23,12 @@ #include #include -#include "gtktypeutils.h" #include "gtkbuilderprivate.h" #include "gtkbuilder.h" #include "gtkbuildable.h" #include "gtkdebug.h" #include "gtkversion.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index f0e00dadef..116bfb7713 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -55,6 +55,7 @@ #include "gtkiconfactory.h" #include "gtkactivatable.h" #include "gtksizerequest.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -300,7 +301,7 @@ gtk_button_class_init (GtkButtonClass *klass) GTK_PARAM_READWRITE)); /** - * GtkButton::image: + * GtkButton:image: * * The child widget to appear next to the button text. * @@ -971,6 +972,7 @@ static void gtk_button_construct_child (GtkButton *button) { GtkButtonPrivate *priv = button->priv; + GtkStyleContext *context; GtkStockItem item; GtkWidget *child; GtkWidget *label; @@ -986,9 +988,11 @@ gtk_button_construct_child (GtkButton *button) if (!priv->label_text && !priv->image) return; - gtk_widget_style_get (GTK_WIDGET (button), - "image-spacing", &image_spacing, - NULL); + context = gtk_widget_get_style_context (GTK_WIDGET (button)); + + gtk_style_context_get_style (context, + "image-spacing", &image_spacing, + NULL); if (priv->image && !priv->image_is_stock) { @@ -1302,8 +1306,6 @@ gtk_button_realize (GtkWidget *widget) priv->event_window = gdk_window_new (window, &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, button); - - gtk_widget_style_attach (widget); } static void @@ -1350,7 +1352,8 @@ gtk_button_unmap (GtkWidget *widget) } static void -gtk_button_update_image_spacing (GtkButton *button) +gtk_button_update_image_spacing (GtkButton *button, + GtkStyleContext *context) { GtkButtonPrivate *priv = button->priv; GtkWidget *child; @@ -1369,19 +1372,23 @@ gtk_button_update_image_spacing (GtkButton *button) child = gtk_bin_get_child (GTK_BIN (child)); if (GTK_IS_BOX (child)) { - gtk_widget_style_get (GTK_WIDGET (button), - "image-spacing", &spacing, - NULL); + gtk_style_context_get_style (context, + "image-spacing", &spacing, + NULL); gtk_box_set_spacing (GTK_BOX (child), spacing); } - } + } } static void gtk_button_style_updated (GtkWidget *widget) { - gtk_button_update_image_spacing (GTK_BUTTON (widget)); + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + + gtk_button_update_image_spacing (GTK_BUTTON (widget), context); } static void @@ -1391,12 +1398,16 @@ gtk_button_get_props (GtkButton *button, GtkBorder *inner_border, gboolean *interior_focus) { - GtkWidget *widget = GTK_WIDGET (button); + GtkStyleContext *context; GtkBorder *tmp_border; + context = gtk_widget_get_style_context (GTK_WIDGET (button)); + if (default_border) { - gtk_widget_style_get (widget, "default-border", &tmp_border, NULL); + gtk_style_context_get_style (context, + "default-border", &tmp_border, + NULL); if (tmp_border) { @@ -1409,7 +1420,9 @@ gtk_button_get_props (GtkButton *button, if (default_outside_border) { - gtk_widget_style_get (widget, "default-outside-border", &tmp_border, NULL); + gtk_style_context_get_style (context, + "default-outside-border", &tmp_border, + NULL); if (tmp_border) { @@ -1422,7 +1435,9 @@ gtk_button_get_props (GtkButton *button, if (inner_border) { - gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); + gtk_style_context_get_style (context, + "inner-border", &tmp_border, + NULL); if (tmp_border) { @@ -1434,7 +1449,11 @@ gtk_button_get_props (GtkButton *button, } if (interior_focus) - gtk_widget_style_get (widget, "interior-focus", interior_focus, NULL); + { + gtk_style_context_get_style (context, + "interior-focus", interior_focus, + NULL); + } } static void @@ -1447,25 +1466,25 @@ gtk_button_size_allocate (GtkWidget *widget, GtkStyleContext *context; GtkStateFlags state; GtkWidget *child; - GtkBorder default_border; - GtkBorder inner_border, *border; + GtkBorder inner_border; + GtkBorder *border; gint focus_width; gint focus_pad; context = gtk_widget_get_style_context (widget); state = gtk_widget_get_state_flags (widget); + gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); + gtk_style_context_get_style (context, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); + gtk_style_context_get (context, state, "border-width", &border, NULL); - gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); - gtk_widget_set_allocation (widget, allocation); if (gtk_widget_get_realized (widget)) @@ -1513,11 +1532,11 @@ gtk_button_size_allocate (GtkWidget *widget, { gint child_displacement_x; gint child_displacement_y; - - gtk_widget_style_get (widget, - "child-displacement-x", &child_displacement_x, - "child-displacement-y", &child_displacement_y, - NULL); + + gtk_style_context_get_style (context, + "child-displacement-x", &child_displacement_x, + "child-displacement-y", &child_displacement_y, + NULL); child_allocation.x += child_displacement_x; child_allocation.y += child_displacement_y; } @@ -1536,10 +1555,7 @@ _gtk_button_paint (GtkButton *button, cairo_t *cr, int width, int height, - GtkStateType state_type, - GtkShadowType shadow_type, - const gchar *main_detail, - const gchar *default_detail) + GtkStateFlags state) { GtkButtonPrivate *priv = button->priv; GtkWidget *widget; @@ -1552,18 +1568,20 @@ _gtk_button_paint (GtkButton *button, GtkAllocation allocation; GdkWindow *window; GtkStyleContext *context; - GtkStateFlags state; widget = GTK_WIDGET (button); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); gtk_button_get_props (button, &default_border, &default_outside_border, NULL, &interior_focus); - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); + gtk_style_context_get_style (context, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); gtk_widget_get_allocation (widget, &allocation); - context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); x = 0; @@ -1595,9 +1613,6 @@ _gtk_button_paint (GtkButton *button, height -= 2 * (focus_width + focus_pad); } - state = gtk_widget_get_state_flags (widget); - gtk_style_context_set_state (context, state); - if (priv->relief != GTK_RELIEF_NONE || priv->depressed || state & GTK_STATE_FLAG_PRELIGHT) { @@ -1614,15 +1629,15 @@ _gtk_button_paint (GtkButton *button, gboolean displace_focus; GtkBorder *border; - gtk_widget_style_get (widget, - "child-displacement-y", &child_displacement_y, - "child-displacement-x", &child_displacement_x, - "displace-focus", &displace_focus, - NULL); + gtk_style_context_get_style (context, + "child-displacement-y", &child_displacement_y, + "child-displacement-x", &child_displacement_x, + "displace-focus", &displace_focus, + NULL); gtk_style_context_get (context, state, - "border-width", &border, - NULL); + "border-width", &border, + NULL); if (interior_focus) { @@ -1650,6 +1665,8 @@ _gtk_button_paint (GtkButton *button, gtk_border_free (border); } + + gtk_style_context_restore (context); } static gboolean @@ -1657,14 +1674,11 @@ gtk_button_draw (GtkWidget *widget, cairo_t *cr) { GtkButton *button = GTK_BUTTON (widget); - GtkButtonPrivate *priv = button->priv; _gtk_button_paint (button, cr, gtk_widget_get_allocated_width (widget), gtk_widget_get_allocated_height (widget), - gtk_widget_get_state (widget), - priv->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT, - "button", "buttondefault"); + gtk_widget_get_state_flags (widget)); GTK_WIDGET_CLASS (gtk_button_parent_class)->draw (widget, cr); @@ -1906,23 +1920,23 @@ gtk_button_get_size (GtkWidget *widget, { GtkButton *button = GTK_BUTTON (widget); GtkStyleContext *context; + GtkStateFlags state; GtkWidget *child; GtkBorder default_border; GtkBorder inner_border; - GtkStateFlags state; GtkBorder *border; gint focus_width; gint focus_pad; gint minimum, natural; - gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); - gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - context = gtk_widget_get_style_context (GTK_WIDGET (widget)); - state = gtk_widget_get_state_flags (GTK_WIDGET (widget)); + gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL); + gtk_style_context_get_style (context, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); gtk_style_context_get (context, state, "border-width", &border, diff --git a/gtk/gtkbutton.h b/gtk/gtkbutton.h index 0bab7e6ae3..2ad602e8d2 100644 --- a/gtk/gtkbutton.h +++ b/gtk/gtkbutton.h @@ -127,10 +127,7 @@ void _gtk_button_paint (GtkButton *button, cairo_t *cr, int width, int height, - GtkStateType state_type, - GtkShadowType shadow_type, - const gchar *main_detail, - const gchar *default_detail); + GtkStateFlags state); G_END_DECLS diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c index 57a26d6d7e..50aa3e5f27 100644 --- a/gtk/gtkcalendar.c +++ b/gtk/gtkcalendar.c @@ -34,22 +34,26 @@ * @Short_description: Displays a calendar and allows the user to select a date * @Title: GtkCalendar * - * #GtkCalendar is a widget that displays a calendar, one month at a time. It - * can be created with gtk_calendar_new(). + * #GtkCalendar is a widget that displays a Gregorian calendar, one month + * at a time. It can be created with gtk_calendar_new(). * * The month and year currently displayed can be altered with - * gtk_calendar_select_month(). The exact day can be selected from the displayed - * month using gtk_calendar_select_day(). + * gtk_calendar_select_month(). The exact day can be selected from the + * displayed month using gtk_calendar_select_day(). * - * To place a visual marker on a particular day, use gtk_calendar_mark_day() and - * to remove the marker, gtk_calendar_unmark_day(). Alternative, all marks can - * be cleared with gtk_calendar_clear_marks(). + * To place a visual marker on a particular day, use gtk_calendar_mark_day() + * and to remove the marker, gtk_calendar_unmark_day(). Alternative, all + * marks can be cleared with gtk_calendar_clear_marks(). * * The way in which the calendar itself is displayed can be altered using * gtk_calendar_set_display_options(). * * The selected date can be retrieved from a #GtkCalendar using * gtk_calendar_get_date(). + * + * Users should be aware that, although the Gregorian calendar is the legal + * calendar in most countries, it was adopted progressively between 1582 and + * 1929. Display before these dates is likely to be historically incorrect. */ #include "config.h" @@ -77,7 +81,6 @@ #include "gtkmarshalers.h" #include "gtktooltip.h" #include "gtkprivate.h" -#include "gdk/gdkkeysyms.h" /***************************************************************************/ /* The following date routines are taken from the lib_date package. @@ -201,18 +204,6 @@ dates_difference(guint year1, guint mm1, guint dd1, #define SCROLL_DELAY_FACTOR 5 -/* Color usage */ -#define HEADER_FG_COLOR(widget) (& gtk_widget_get_style (widget)->fg[gtk_widget_get_state (widget)]) -#define HEADER_BG_COLOR(widget) (& gtk_widget_get_style (widget)->bg[gtk_widget_get_state (widget)]) -#define SELECTED_BG_COLOR(widget) (& gtk_widget_get_style (widget)->base[gtk_widget_has_focus (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) -#define SELECTED_FG_COLOR(widget) (& gtk_widget_get_style (widget)->text[gtk_widget_has_focus (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) -#define NORMAL_DAY_COLOR(widget) (& gtk_widget_get_style (widget)->text[gtk_widget_get_state (widget)]) -#define PREV_MONTH_COLOR(widget) (& gtk_widget_get_style (widget)->mid[gtk_widget_get_state (widget)]) -#define NEXT_MONTH_COLOR(widget) (& gtk_widget_get_style (widget)->mid[gtk_widget_get_state (widget)]) -#define MARKED_COLOR(widget) (& gtk_widget_get_style (widget)->text[gtk_widget_get_state (widget)]) -#define BACKGROUND_COLOR(widget) (& gtk_widget_get_style (widget)->base[gtk_widget_get_state (widget)]) -#define HIGHLIGHT_BACK_COLOR(widget) (& gtk_widget_get_style (widget)->mid[gtk_widget_get_state (widget)]) - enum { ARROW_YEAR_LEFT, ARROW_YEAR_RIGHT, @@ -257,8 +248,6 @@ static guint gtk_calendar_signals[LAST_SIGNAL] = { 0 }; struct _GtkCalendarPrivate { GtkCalendarDisplayOptions display_flags; - GtkStyle *header_style; - GtkStyle *label_style; GdkColor marked_date_color[31]; GdkWindow *main_win; @@ -341,6 +330,8 @@ static void gtk_calendar_get_property (GObject *object, static void gtk_calendar_realize (GtkWidget *widget); static void gtk_calendar_unrealize (GtkWidget *widget); +static void gtk_calendar_map (GtkWidget *widget); +static void gtk_calendar_unmap (GtkWidget *widget); static void gtk_calendar_get_preferred_width (GtkWidget *widget, gint *minimum, gint *natural); @@ -369,8 +360,8 @@ static gboolean gtk_calendar_focus_out (GtkWidget *widget, GdkEventFocus *event); static void gtk_calendar_grab_notify (GtkWidget *widget, gboolean was_grabbed); -static void gtk_calendar_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_calendar_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gboolean gtk_calendar_query_tooltip (GtkWidget *widget, gint x, gint y, @@ -441,6 +432,8 @@ gtk_calendar_class_init (GtkCalendarClass *class) widget_class->destroy = gtk_calendar_destroy; widget_class->realize = gtk_calendar_realize; widget_class->unrealize = gtk_calendar_unrealize; + widget_class->map = gtk_calendar_map; + widget_class->unmap = gtk_calendar_unmap; widget_class->draw = gtk_calendar_draw; widget_class->get_preferred_width = gtk_calendar_get_preferred_width; widget_class->get_preferred_height = gtk_calendar_get_preferred_height; @@ -452,7 +445,7 @@ gtk_calendar_class_init (GtkCalendarClass *class) widget_class->leave_notify_event = gtk_calendar_leave_notify; widget_class->key_press_event = gtk_calendar_key_press; widget_class->scroll_event = gtk_calendar_scroll; - widget_class->state_changed = gtk_calendar_state_changed; + widget_class->state_flags_changed = gtk_calendar_state_flags_changed; widget_class->grab_notify = gtk_calendar_grab_notify; widget_class->focus_out_event = gtk_calendar_focus_out; widget_class->query_tooltip = gtk_calendar_query_tooltip; @@ -1165,12 +1158,16 @@ calendar_left_x_for_column (GtkCalendar *calendar, gint x_left; gint week_width; gint calendar_xsep = calendar_get_xsep (calendar); - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; gint inner_border = calendar_get_inner_border (calendar); + GtkBorder padding; - style = gtk_widget_get_style (GTK_WIDGET (calendar)); + context = gtk_widget_get_style_context (GTK_WIDGET (calendar)); + state = gtk_widget_get_state_flags (GTK_WIDGET (calendar)); + gtk_style_context_get_padding (context, state, &padding); - week_width = priv->week_width + style->xthickness + inner_border; + week_width = priv->week_width + padding.left + inner_border; if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) { @@ -1219,15 +1216,20 @@ static gint calendar_top_y_for_row (GtkCalendar *calendar, gint row) { - GtkStyle *style; + GtkStyleContext *context; GtkAllocation allocation; gint inner_border = calendar_get_inner_border (calendar); + GtkStateFlags state; + GtkBorder padding; gtk_widget_get_allocation (GTK_WIDGET (calendar), &allocation); - style = gtk_widget_get_style (GTK_WIDGET (calendar)); - + context = gtk_widget_get_style_context (GTK_WIDGET (calendar)); + state = gtk_widget_get_state_flags (GTK_WIDGET (calendar)); + + gtk_style_context_get_padding (context, state, &padding); + return allocation.height - - style->ythickness - inner_border + - padding.top - inner_border - (CALENDAR_MARGIN + (6 - row) * calendar_row_height (calendar)); } @@ -1268,11 +1270,16 @@ calendar_arrow_rectangle (GtkCalendar *calendar, GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gboolean year_left; gtk_widget_get_allocation (widget, &allocation); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_get_padding (context, state, &padding); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) year_left = priv->year_before; @@ -1287,14 +1294,14 @@ calendar_arrow_rectangle (GtkCalendar *calendar, { case ARROW_MONTH_LEFT: if (year_left) - rect->x = (allocation.width - 2 * style->xthickness + rect->x = (allocation.width - padding.left - padding.right - (3 + 2 * priv->arrow_width + priv->max_month_width)); else rect->x = 3; break; case ARROW_MONTH_RIGHT: if (year_left) - rect->x = (allocation.width - 2 * style->xthickness + rect->x = (allocation.width - padding.left - padding.right - 3 - priv->arrow_width); else rect->x = (priv->arrow_width + priv->max_month_width); @@ -1303,20 +1310,20 @@ calendar_arrow_rectangle (GtkCalendar *calendar, if (year_left) rect->x = 3; else - rect->x = (allocation.width - 2 * style->xthickness + rect->x = (allocation.width - padding.left - padding.right - (3 + 2 * priv->arrow_width + priv->max_year_width)); break; case ARROW_YEAR_RIGHT: if (year_left) rect->x = (priv->arrow_width + priv->max_year_width); else - rect->x = (allocation.width - 2 * style->xthickness + rect->x = (allocation.width - padding.left - padding.right - 3 - priv->arrow_width); break; } - rect->x += style->xthickness; - rect->y += style->ythickness; + rect->x += padding.left; + rect->y += padding.top; } static void @@ -1584,11 +1591,10 @@ calendar_realize_arrows (GtkCalendar *calendar) priv->arrow_win[i] = gdk_window_new (gtk_widget_get_window (widget), &attributes, attributes_mask); - if (gtk_widget_is_sensitive (widget)) - priv->arrow_state[i] = GTK_STATE_NORMAL; - else - priv->arrow_state[i] = GTK_STATE_INSENSITIVE; - gdk_window_show (priv->arrow_win[i]); + + if (!gtk_widget_is_sensitive (widget)) + priv->arrow_state[i] = GTK_STATE_FLAG_INSENSITIVE; + gdk_window_set_user_data (priv->arrow_win[i], widget); } } @@ -1660,10 +1666,15 @@ gtk_calendar_realize (GtkWidget *widget) GdkWindowAttr attributes; gint attributes_mask; gint inner_border = calendar_get_inner_border (GTK_CALENDAR (widget)); - GtkStyle *style; + GtkStyleContext *context; GtkAllocation allocation; + GtkStateFlags state = 0; + GtkBorder padding; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); - style = gtk_widget_get_style (widget); gtk_widget_get_allocation (widget, &allocation); GTK_WIDGET_CLASS (gtk_calendar_parent_class)->realize (widget); @@ -1675,12 +1686,12 @@ gtk_calendar_realize (GtkWidget *widget) | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - attributes.x = priv->week_width + style->ythickness + inner_border; + attributes.x = priv->week_width + padding.left + inner_border; else - attributes.x = style->ythickness + inner_border; + attributes.x = padding.left + inner_border; - attributes.y = priv->header_h + priv->day_name_h + style->ythickness + inner_border; - attributes.width = allocation.width - attributes.x - (style->xthickness + inner_border); + attributes.y = priv->header_h + priv->day_name_h + padding.top + inner_border; + attributes.width = allocation.width - attributes.x - (padding.right + inner_border); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) attributes.width -= priv->week_width; @@ -1693,7 +1704,6 @@ gtk_calendar_realize (GtkWidget *widget) priv->main_win = gdk_window_new (gtk_widget_get_window (widget), &attributes, attributes_mask); - gdk_window_show (priv->main_win); gdk_window_set_user_data (priv->main_win, widget); calendar_realize_arrows (GTK_CALENDAR (widget)); @@ -1716,6 +1726,56 @@ gtk_calendar_unrealize (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_calendar_parent_class)->unrealize (widget); } +static void +calendar_map_arrows (GtkCalendar *calendar) +{ + GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); + gint i; + + for (i = 0; i < 4; i++) + { + if (priv->arrow_win[i]) + gdk_window_show (priv->arrow_win[i]); + } +} + +static void +calendar_unmap_arrows (GtkCalendar *calendar) +{ + GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); + gint i; + + for (i = 0; i < 4; i++) + { + if (priv->arrow_win[i]) + gdk_window_hide (priv->arrow_win[i]); + } +} + +static void +gtk_calendar_map (GtkWidget *widget) +{ + GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); + + GTK_WIDGET_CLASS (gtk_calendar_parent_class)->map (widget); + + gdk_window_show (priv->main_win); + + calendar_map_arrows (GTK_CALENDAR (widget)); +} + +static void +gtk_calendar_unmap (GtkWidget *widget) +{ + GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); + + calendar_unmap_arrows (GTK_CALENDAR (widget)); + + gdk_window_hide (priv->main_win); + + GTK_WIDGET_CLASS (gtk_calendar_parent_class)->unmap (widget); +} + static gchar* gtk_calendar_get_detail (GtkCalendar *calendar, gint row, @@ -1798,7 +1858,9 @@ gtk_calendar_size_request (GtkWidget *widget, { GtkCalendar *calendar = GTK_CALENDAR (widget); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; PangoLayout *layout; PangoRectangle logical_rect; @@ -1991,9 +2053,11 @@ gtk_calendar_size_request (GtkWidget *widget, ? priv->max_week_char_width * 2 + (focus_padding + focus_width) * 2 + calendar_xsep * 2 : 0)); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); - requisition->width = MAX (header_width, main_width + inner_border * 2) + style->xthickness * 2; + requisition->width = MAX (header_width, main_width + inner_border * 2) + padding.left + padding.right; /* * Calculate the requisition height for the widget. @@ -2029,7 +2093,7 @@ gtk_calendar_size_request (GtkWidget *widget, height = priv->header_h + priv->day_name_h + priv->main_h; - requisition->height = height + (style->ythickness + inner_border) * 2; + requisition->height = height + padding.top + padding.bottom + (inner_border * 2); g_object_unref (layout); } @@ -2064,32 +2128,34 @@ gtk_calendar_size_allocate (GtkWidget *widget, { GtkCalendar *calendar = GTK_CALENDAR (widget); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); - GtkStyle *style; - gint xthickness, ythickness; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; guint i; gint inner_border = calendar_get_inner_border (calendar); gint calendar_xsep = calendar_get_xsep (calendar); - style = gtk_widget_get_style (widget); - xthickness = style->xthickness; - ythickness = style->xthickness; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); gtk_widget_set_allocation (widget, allocation); if (priv->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS) { priv->day_width = (priv->min_day_width - * ((allocation->width - (xthickness + inner_border) * 2 + * ((allocation->width - (inner_border * 2) - padding.left - padding.right - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6) - calendar_xsep * 2)) / (7 * priv->min_day_width + priv->max_week_char_width * 2)); - priv->week_width = ((allocation->width - (xthickness + inner_border) * 2 + priv->week_width = ((allocation->width - (inner_border * 2) - padding.left - padding.right - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6) - calendar_xsep * 2 ) - priv->day_width * 7 + CALENDAR_MARGIN + calendar_xsep); } else { priv->day_width = (allocation->width - - (xthickness + inner_border) * 2 + - (inner_border * 2) + - padding.left - padding.right - (CALENDAR_MARGIN * 2) - (DAY_XSEP * 6))/7; priv->week_width = 0; @@ -2099,19 +2165,23 @@ gtk_calendar_size_allocate (GtkWidget *widget, { if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) gdk_window_move_resize (priv->main_win, - priv->week_width + xthickness + inner_border, - priv->header_h + priv->day_name_h - + (style->ythickness + inner_border), + allocation->x + + priv->week_width + padding.left + inner_border, + allocation->y + + priv->header_h + priv->day_name_h + + (padding.top + inner_border), allocation->width - priv->week_width - - (xthickness + inner_border) * 2, + - (inner_border * 2) - padding.left - padding.right, priv->main_h); else gdk_window_move_resize (priv->main_win, - xthickness + inner_border, - priv->header_h + priv->day_name_h - + style->ythickness + inner_border, + allocation->x + + padding.left + inner_border, + allocation->y + + priv->header_h + priv->day_name_h + + padding.top + inner_border, allocation->width - priv->week_width - - (xthickness + inner_border) * 2, + - (inner_border * 2) - padding.left - padding.right, priv->main_h); for (i = 0 ; i < 4 ; i++) @@ -2141,7 +2211,9 @@ calendar_paint_header (GtkCalendar *calendar, cairo_t *cr) GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; char buffer[255]; gint x, y; gint header_width; @@ -2154,10 +2226,12 @@ calendar_paint_header (GtkCalendar *calendar, cairo_t *cr) struct tm *tm; gchar *str; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); cairo_save (cr); - cairo_translate (cr, style->xthickness, style->ythickness); + cairo_translate (cr, padding.left, padding.top); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) year_left = priv->year_before; @@ -2166,19 +2240,16 @@ calendar_paint_header (GtkCalendar *calendar, cairo_t *cr) gtk_widget_get_allocation (widget, &allocation); - header_width = allocation.width - 2 * style->xthickness; + header_width = allocation.width - padding.left - padding.right; max_month_width = priv->max_month_width; max_year_width = priv->max_year_width; - gdk_cairo_set_source_color (cr, HEADER_BG_COLOR (widget)); - cairo_rectangle (cr, 0, 0, header_width, priv->header_h); - cairo_fill (cr); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HEADER); - gtk_paint_shadow (style, cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "calendar", - 0, 0, header_width, priv->header_h); + gtk_render_background (context, cr, 0, 0, header_width, priv->header_h); + gtk_render_frame (context, cr, 0, 0, header_width, priv->header_h); tmp_time = 1; /* Jan 1 1970, 00:00:01 UTC */ tm = gmtime (&tmp_time); @@ -2218,12 +2289,9 @@ calendar_paint_header (GtkCalendar *calendar, cairo_t *cr) else x = header_width - (3 + priv->arrow_width + max_year_width - (max_year_width - logical_rect.width)/2); - - gdk_cairo_set_source_color (cr, HEADER_FG_COLOR (GTK_WIDGET (calendar))); - cairo_move_to (cr, x, y); - pango_cairo_show_layout (cr, layout); - + gtk_render_layout (context, cr, x, y, layout); + /* Draw month */ g_snprintf (buffer, sizeof (buffer), "%s", default_monthname[priv->month]); pango_layout_set_text (layout, buffer, -1); @@ -2242,11 +2310,10 @@ calendar_paint_header (GtkCalendar *calendar, cairo_t *cr) else x = 3 + priv->arrow_width + (max_month_width - logical_rect.width)/2; - cairo_move_to (cr, x, y); - pango_cairo_show_layout (cr, layout); - + gtk_render_layout (context, cr, x, y, layout); g_object_unref (layout); + gtk_style_context_restore (context); cairo_restore (cr); } @@ -2256,7 +2323,9 @@ calendar_paint_day_names (GtkCalendar *calendar, { GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkAllocation allocation; char buffer[255]; int day,i; @@ -2270,13 +2339,15 @@ calendar_paint_day_names (GtkCalendar *calendar, gint calendar_xsep = calendar_get_xsep (calendar); gint inner_border = calendar_get_inner_border (calendar); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); cairo_save (cr); cairo_translate (cr, - style->xthickness + inner_border, - priv->header_h + style->ythickness + inner_border); + padding.left + inner_border, + priv->header_h + padding.top + inner_border); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, @@ -2286,37 +2357,33 @@ calendar_paint_day_names (GtkCalendar *calendar, gtk_widget_get_allocation (widget, &allocation); day_width = priv->day_width; - cal_width = allocation.width - (style->xthickness + inner_border) * 2; + cal_width = allocation.width - (inner_border * 2) - padding.left - padding.right; day_wid_sep = day_width + DAY_XSEP; /* * Draw rectangles as inverted background for the labels. */ - gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget)); - cairo_rectangle (cr, - CALENDAR_MARGIN, CALENDAR_MARGIN, - cal_width - CALENDAR_MARGIN * 2, - priv->day_name_h - CALENDAR_MARGIN); - cairo_fill (cr); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); + + gtk_render_background (context, cr, + CALENDAR_MARGIN, CALENDAR_MARGIN, + cal_width - CALENDAR_MARGIN * 2, + priv->day_name_h - CALENDAR_MARGIN); if (priv->display_flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS) - { - cairo_rectangle (cr, - CALENDAR_MARGIN, - priv->day_name_h - calendar_ysep, - priv->week_width - calendar_ysep - CALENDAR_MARGIN, - calendar_ysep); - cairo_fill (cr); - } + gtk_render_background (context, cr, + CALENDAR_MARGIN, + priv->day_name_h - calendar_ysep, + priv->week_width - calendar_ysep - CALENDAR_MARGIN, + calendar_ysep); /* * Write the labels */ - layout = gtk_widget_create_pango_layout (widget, NULL); - gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget)); for (i = 0; i < 7; i++) { if (gtk_widget_get_direction (GTK_WIDGET (calendar)) == GTK_TEXT_DIR_RTL) @@ -2329,19 +2396,20 @@ calendar_paint_day_names (GtkCalendar *calendar, pango_layout_set_text (layout, buffer, -1); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - cairo_move_to (cr, - (CALENDAR_MARGIN + - + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ? - (priv->week_width + (priv->week_width ? calendar_xsep : 0)) - : 0) - + day_wid_sep * i - + (day_width - logical_rect.width)/2), - CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y); - pango_cairo_show_layout (cr, layout); + gtk_render_layout (context, cr, + (CALENDAR_MARGIN + + + (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR ? + (priv->week_width + (priv->week_width ? calendar_xsep : 0)) + : 0) + + day_wid_sep * i + + (day_width - logical_rect.width)/2), + CALENDAR_MARGIN + focus_width + focus_padding + logical_rect.y, + layout); } g_object_unref (layout); + gtk_style_context_restore (context); cairo_restore (cr); } @@ -2351,7 +2419,9 @@ calendar_paint_week_numbers (GtkCalendar *calendar, { GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; guint week = 0, year; gint row, x_loc, y_loc; gint day_height; @@ -2364,48 +2434,45 @@ calendar_paint_week_numbers (GtkCalendar *calendar, gint inner_border = calendar_get_inner_border (calendar); gint x, y; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); cairo_save (cr); - y = priv->header_h + priv->day_name_h + (style->ythickness + inner_border); + y = priv->header_h + priv->day_name_h + (padding.top + inner_border); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - x = style->xthickness + inner_border; + x = padding.left + inner_border; else - x = gtk_widget_get_allocated_width (widget) - priv->week_width - (style->xthickness + inner_border); + x = gtk_widget_get_allocated_width (widget) - priv->week_width - (padding.right + inner_border); gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_padding, NULL); - /* - * Draw a rectangle as inverted background for the labels. - */ + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HIGHLIGHT); - gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget)); if (priv->display_flags & GTK_CALENDAR_SHOW_DAY_NAMES) - cairo_rectangle (cr, - x + CALENDAR_MARGIN, - y, - priv->week_width - CALENDAR_MARGIN, - priv->main_h - CALENDAR_MARGIN); + gtk_render_background (context, cr, + x + CALENDAR_MARGIN, y, + priv->week_width - CALENDAR_MARGIN, + priv->main_h - CALENDAR_MARGIN); else - cairo_rectangle (cr, - x + CALENDAR_MARGIN, - y + CALENDAR_MARGIN, - priv->week_width - CALENDAR_MARGIN, - priv->main_h - 2 * CALENDAR_MARGIN); - cairo_fill (cr); + gtk_render_background (context, cr, + x + CALENDAR_MARGIN, + y + CALENDAR_MARGIN, + priv->week_width - CALENDAR_MARGIN, + priv->main_h - 2 * CALENDAR_MARGIN); /* * Write the labels */ layout = gtk_widget_create_pango_layout (widget, NULL); - - gdk_cairo_set_source_color (cr, SELECTED_FG_COLOR (widget)); day_height = calendar_row_height (calendar); + for (row = 0; row < 6; row++) { gboolean result; @@ -2439,12 +2506,12 @@ calendar_paint_week_numbers (GtkCalendar *calendar, - logical_rect.width - calendar_xsep - focus_padding - focus_width); - cairo_move_to (cr, x_loc, y_loc); - pango_cairo_show_layout (cr, layout); + gtk_render_layout (context, cr, x_loc, y_loc, layout); } - + g_object_unref (layout); + gtk_style_context_restore (context); cairo_restore (cr); } @@ -2504,8 +2571,8 @@ calendar_paint_day (GtkCalendar *calendar, { GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (calendar); - GtkStyle *style; - GdkColor *text_color; + GtkStyleContext *context; + GtkStateFlags state = 0; gchar *detail; gchar buffer[32]; gint day; @@ -2520,37 +2587,44 @@ calendar_paint_day (GtkCalendar *calendar, g_return_if_fail (row < 6); g_return_if_fail (col < 7); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); day = priv->day[row][col]; show_details = (priv->display_flags & GTK_CALENDAR_SHOW_DETAILS); calendar_day_rectangle (calendar, row, col, &day_rect); - - if (priv->day_month[row][col] == MONTH_PREV) + + gtk_style_context_save (context); + + if (!gtk_widget_get_sensitive (widget)) + state |= GTK_STATE_FLAG_INSENSITIVE; + else { - text_color = PREV_MONTH_COLOR (widget); - } - else if (priv->day_month[row][col] == MONTH_NEXT) - { - text_color = NEXT_MONTH_COLOR (widget); - } - else - { - if (priv->selected_day == day) - { - gdk_cairo_set_source_color (cr, SELECTED_BG_COLOR (widget)); - gdk_cairo_rectangle (cr, &day_rect); - cairo_fill (cr); - } - if (priv->selected_day == day) - text_color = SELECTED_FG_COLOR (widget); - else if (priv->marked_date[day-1]) - text_color = MARKED_COLOR (widget); + if (gtk_widget_has_focus (widget)) + state |= GTK_STATE_FLAG_FOCUSED; + + if (priv->day_month[row][col] == MONTH_PREV || + priv->day_month[row][col] == MONTH_NEXT) + state |= GTK_STATE_FLAG_INCONSISTENT; else - text_color = NORMAL_DAY_COLOR (widget); + { + if (priv->marked_date[day-1]) + state |= GTK_STATE_FLAG_ACTIVE; + + if (priv->selected_day == day) + { + state |= GTK_STATE_FLAG_SELECTED; + + gtk_style_context_set_state (context, state); + gtk_render_background (context, cr, + day_rect.x, day_rect.y, + day_rect.width, day_rect.height); + } + } } + gtk_style_context_set_state (context, state); + /* Translators: this defines whether the day numbers should use * localized digits or the ones used in English (0123...). * @@ -2574,29 +2648,22 @@ calendar_paint_day (GtkCalendar *calendar, x_loc = day_rect.x + (day_rect.width - logical_rect.width) / 2; y_loc = day_rect.y; - gdk_cairo_set_source_color (cr, text_color); - cairo_move_to (cr, x_loc, y_loc); - pango_cairo_show_layout (cr, layout); + gtk_render_layout (context, cr, x_loc, y_loc, layout); if (priv->day_month[row][col] == MONTH_CURRENT && (priv->marked_date[day-1] || (detail && !show_details))) - { - cairo_move_to (cr, x_loc - 1, y_loc); - pango_cairo_show_layout (cr, layout); - } + gtk_render_layout (context, cr, x_loc - 1, y_loc, layout); y_loc += priv->max_day_char_descent; if (priv->detail_func && show_details) { + GdkRGBA color; + cairo_save (cr); - if (priv->selected_day == day) - gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_ACTIVE]); - else if (priv->day_month[row][col] == MONTH_CURRENT) - gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_ACTIVE]); - else - gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_INSENSITIVE]); + gtk_style_context_get_color (context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_set_line_width (cr, 1); cairo_move_to (cr, day_rect.x + 2, y_loc + 0.5); @@ -2643,25 +2710,16 @@ calendar_paint_day (GtkCalendar *calendar, if (gtk_widget_has_focus (widget) && priv->focus_row == row && priv->focus_col == col) - { - GtkStateType state; - - if (priv->selected_day == day) - state = gtk_widget_has_focus (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE; - else - state = GTK_STATE_NORMAL; - - gtk_paint_focus (style, cr, - state, widget, "calendar-day", - day_rect.x, day_rect.y, - day_rect.width, day_rect.height); - } + gtk_render_focus (context, cr, + day_rect.x, day_rect.y, + day_rect.width, day_rect.height); if (overflow) priv->detail_overflow[row] |= (1 << col); else priv->detail_overflow[row] &= ~(1 << col); + gtk_style_context_restore (context); g_object_unref (layout); g_free (detail); } @@ -2709,9 +2767,10 @@ calendar_paint_arrow (GtkCalendar *calendar, { GtkWidget *widget = GTK_WIDGET (calendar); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); - GtkStyle *style; - gint state; + GtkStyleContext *context; + GtkStateFlags state; GdkRectangle rect; + gdouble angle; if (!priv->arrow_win[arrow]) return; @@ -2720,28 +2779,28 @@ calendar_paint_arrow (GtkCalendar *calendar, cairo_save (cr); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); state = priv->arrow_state[arrow]; - cairo_rectangle (cr, rect.x, rect.y, rect.width, rect.height); - gdk_cairo_set_source_color (cr, &style->bg[state]); - cairo_fill (cr); + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); + + gtk_render_background (context, cr, + rect.x, rect.y, + rect.width, rect.height); if (arrow == ARROW_MONTH_LEFT || arrow == ARROW_YEAR_LEFT) - gtk_paint_arrow (style, cr, state, - GTK_SHADOW_OUT, widget, "calendar", - GTK_ARROW_LEFT, TRUE, - rect.x + (rect.width - 8) / 2, - rect.y + (rect.height - 8) / 2, - 8, 8); + angle = 3 * (G_PI / 2); else - gtk_paint_arrow (style, cr, state, - GTK_SHADOW_OUT, widget, "calendar", - GTK_ARROW_RIGHT, TRUE, - rect.x + (rect.width - 8) / 2, - rect.y + (rect.height - 8) / 2, - 8, 8); + angle = G_PI / 2; + gtk_render_arrow (context, cr, angle, + rect.x + (rect.width - 8) / 2, + rect.y + (rect.height - 8) / 2, + 8); + + gtk_style_context_restore (context); cairo_restore (cr); } @@ -2755,16 +2814,17 @@ gtk_calendar_draw (GtkWidget *widget, if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget))) { - gdk_cairo_set_source_color (cr, BACKGROUND_COLOR (widget)); - cairo_rectangle (cr, - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); - cairo_fill (cr); - gtk_paint_shadow (gtk_widget_get_style (widget), cr, - gtk_widget_get_state (widget), GTK_SHADOW_IN, - widget, "calendar", - 0, 0, + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + gtk_render_frame (context, cr, 0, 0, gtk_widget_get_allocated_width (widget), gtk_widget_get_allocated_height (widget)); } @@ -3036,25 +3096,25 @@ gtk_calendar_enter_notify (GtkWidget *widget, if (event->window == priv->arrow_win[ARROW_MONTH_LEFT]) { - priv->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_PRELIGHT; + priv->arrow_state[ARROW_MONTH_LEFT] |= GTK_STATE_FLAG_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_MONTH_LEFT); } if (event->window == priv->arrow_win[ARROW_MONTH_RIGHT]) { - priv->arrow_state[ARROW_MONTH_RIGHT] = GTK_STATE_PRELIGHT; + priv->arrow_state[ARROW_MONTH_RIGHT] |= GTK_STATE_FLAG_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_MONTH_RIGHT); } if (event->window == priv->arrow_win[ARROW_YEAR_LEFT]) { - priv->arrow_state[ARROW_YEAR_LEFT] = GTK_STATE_PRELIGHT; + priv->arrow_state[ARROW_YEAR_LEFT] |= GTK_STATE_FLAG_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_YEAR_LEFT); } if (event->window == priv->arrow_win[ARROW_YEAR_RIGHT]) { - priv->arrow_state[ARROW_YEAR_RIGHT] = GTK_STATE_PRELIGHT; + priv->arrow_state[ARROW_YEAR_RIGHT] |= GTK_STATE_FLAG_PRELIGHT; calendar_invalidate_arrow (calendar, ARROW_YEAR_RIGHT); } @@ -3070,25 +3130,25 @@ gtk_calendar_leave_notify (GtkWidget *widget, if (event->window == priv->arrow_win[ARROW_MONTH_LEFT]) { - priv->arrow_state[ARROW_MONTH_LEFT] = GTK_STATE_NORMAL; + priv->arrow_state[ARROW_MONTH_LEFT] &= ~(GTK_STATE_FLAG_PRELIGHT); calendar_invalidate_arrow (calendar, ARROW_MONTH_LEFT); } if (event->window == priv->arrow_win[ARROW_MONTH_RIGHT]) { - priv->arrow_state[ARROW_MONTH_RIGHT] = GTK_STATE_NORMAL; + priv->arrow_state[ARROW_MONTH_RIGHT] &= ~(GTK_STATE_FLAG_PRELIGHT); calendar_invalidate_arrow (calendar, ARROW_MONTH_RIGHT); } if (event->window == priv->arrow_win[ARROW_YEAR_LEFT]) { - priv->arrow_state[ARROW_YEAR_LEFT] = GTK_STATE_NORMAL; + priv->arrow_state[ARROW_YEAR_LEFT] &= ~(GTK_STATE_FLAG_PRELIGHT); calendar_invalidate_arrow (calendar, ARROW_YEAR_LEFT); } if (event->window == priv->arrow_win[ARROW_YEAR_RIGHT]) { - priv->arrow_state[ARROW_YEAR_RIGHT] = GTK_STATE_NORMAL; + priv->arrow_state[ARROW_YEAR_RIGHT] &= ~(GTK_STATE_FLAG_PRELIGHT); calendar_invalidate_arrow (calendar, ARROW_YEAR_RIGHT); } @@ -3270,8 +3330,8 @@ gtk_calendar_key_press (GtkWidget *widget, ****************************************/ static void -gtk_calendar_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_calendar_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { GtkCalendar *calendar = GTK_CALENDAR (widget); GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); @@ -3285,9 +3345,9 @@ gtk_calendar_state_changed (GtkWidget *widget, for (i = 0; i < 4; i++) if (gtk_widget_is_sensitive (widget)) - priv->arrow_state[i] = GTK_STATE_NORMAL; + priv->arrow_state[i] &= ~(GTK_STATE_FLAG_INSENSITIVE); else - priv->arrow_state[i] = GTK_STATE_INSENSITIVE; + priv->arrow_state[i] |= GTK_STATE_FLAG_INSENSITIVE; } static void @@ -3379,19 +3439,19 @@ gtk_calendar_drag_motion (GtkWidget *widget, { GtkCalendarPrivate *priv = GTK_CALENDAR_GET_PRIVATE (widget); GdkAtom target; - - if (!priv->drag_highlight) + + if (!priv->drag_highlight) { priv->drag_highlight = 1; gtk_drag_highlight (widget); } - + target = gtk_drag_dest_find_target (widget, context, NULL); - if (target == GDK_NONE || context->suggested_action == 0) + if (target == GDK_NONE || gdk_drag_context_get_suggested_action (context) == 0) gdk_drag_status (context, 0, time); else { - set_status_pending (context, context->suggested_action); + set_status_pending (context, gdk_drag_context_get_suggested_action (context)); gtk_drag_get_data (widget, context, target, time); } @@ -3566,6 +3626,8 @@ gtk_calendar_set_display_options (GtkCalendar *calendar, { priv->display_flags &= ~GTK_CALENDAR_NO_MONTH_CHANGE; calendar_realize_arrows (calendar); + if (gtk_widget_get_mapped (widget)) + calendar_map_arrows (calendar); } else { @@ -3581,6 +3643,8 @@ gtk_calendar_set_display_options (GtkCalendar *calendar, { priv->display_flags |= GTK_CALENDAR_SHOW_HEADING; calendar_realize_arrows (calendar); + if (gtk_widget_get_mapped (widget)) + calendar_map_arrows (calendar); } else { @@ -3814,12 +3878,12 @@ gtk_calendar_unmark_day (GtkCalendar *calendar, /** * gtk_calendar_get_date: * @calendar: a #GtkCalendar - * @year: (allow-none): location to store the year number, or %NULL - * @month: (allow-none): location to store the month number (between 0 and 11), or %NULL - * @day: (allow-none): location to store the day number (between 1 and 31), or %NULL - * + * @year: (out) (allow-none): location to store the year as a decimal number (e.g. 2011), or %NULL + * @month: (out) (allow-none): location to store the month number (between 0 and 11), or %NULL + * @day: (out) (allow-none): location to store the day number (between 1 and 31), or %NULL + * * Obtains the selected date from a #GtkCalendar. - **/ + */ void gtk_calendar_get_date (GtkCalendar *calendar, guint *year, diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c new file mode 100644 index 0000000000..2175f5078e --- /dev/null +++ b/gtk/gtkcellarea.c @@ -0,0 +1,3668 @@ +/* gtkcellarea.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:gtkcellarea + * @Short_Description: An abstract class for laying out GtkCellRenderers + * @Title: GtkCellArea + * + * The #GtkCellArea is an abstract class for #GtkCellLayout widgets + * (also referred to as "layouting widgets") to interface with an + * arbitrary number of #GtkCellRenderers and interact with the user + * for a given #GtkTreeModel row. + * + * The cell area handles events, focus navigation, drawing and + * size requests and allocations for a given row of data. + * + * Usually users dont have to interact with the #GtkCellArea directly + * unless they are implementing a cell layouting widget themselves. + * + * + * Requesting area sizes + * + * As outlined in GtkWidget's + * geometry management section, GTK+ uses a height-for-width + * geometry management system to compute the sizes of widgets and user + * interfaces. #GtkCellArea uses the same semantics to calculate the + * size of an area for an arbitrary number of #GtkTreeModel rows. + * + * When requesting the size of a cell area one needs to calculate + * the size for a handful of rows, this will be done differently by + * different layouting widgets. For instance a #GtkTreeViewColumn + * always lines up the areas from top to bottom while a #GtkIconView + * on the other hand might enforce that all areas received the same + * width and wrap the areas around, requesting height for more cell + * areas when allocated less width. + * + * It's also important for areas to maintain some cell + * alignments with areas rendered for adjacent rows (cells can + * appear "columnized" inside an area even when the size of + * cells are different in each row). For this reason the #GtkCellArea + * uses a #GtkCellAreaContext object to store the alignments + * and sizes along the way (as well as the overall largest minimum + * and natural size for all the rows which have been calculated + * with the said context). + * + * The #GtkCellAreaContext is an opaque object specific to the + * #GtkCellArea which created it (see gtk_cell_area_create_context()). + * The owning cell layouting widget can create as many contexts as + * it wishes to calculate sizes of rows which should receive the + * same size in at least one orientation (horizontally or vertically), + * however it's important that the same #GtkCellAreaContext which + * was used to request the sizes for a given #GtkTreeModel row be + * used when rendering or processing events for that row. + * + * In order to request the width of all the rows at the root level + * of a #GtkTreeModel one would do the following: + * + * Requesting the width of a handful of GtkTreeModel rows + * + * GtkTreeIter iter; + * gint minimum_width; + * gint natural_width; + * + * valid = gtk_tree_model_get_iter_first (model, &iter); + * while (valid) + * { + * gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE); + * gtk_cell_area_get_preferred_width (area, context, widget, NULL, NULL); + * + * valid = gtk_tree_model_iter_next (model, &iter); + * } + * gtk_cell_area_context_get_preferred_width (context, &minimum_width, &natural_width); + * + * + * Note that in this example it's not important to observe the + * returned minimum and natural width of the area for each row + * unless the cell layouting object is actually interested in the + * widths of individual rows. The overall width is however stored + * in the accompanying #GtkCellAreaContext object and can be consulted + * at any time. + * + * This can be useful since #GtkCellLayout widgets usually have to + * support requesting and rendering rows in treemodels with an + * exceedingly large amount of rows. The #GtkCellLayout widget in + * that case would calculate the required width of the rows in an + * idle or timeout source (see g_timeout_add()) and when the widget + * is requested its actual width in #GtkWidgetClass.get_preferred_width() + * it can simply consult the width accumulated so far in the + * #GtkCellAreaContext object. + * + * A simple example where rows are rendered from top to bottom and + * take up the full width of the layouting widget would look like: + * + * A typical get_preferred_width() implementation + * + * static void + * foo_get_preferred_width (GtkWidget *widget, + * gint *minimum_size, + * gint *natural_size) + * { + * Foo *foo = FOO (widget); + * FooPrivate *priv = foo->priv; + * + * foo_ensure_at_least_one_handfull_of_rows_have_been_requested (foo); + * + * gtk_cell_area_context_get_preferred_width (priv->context, minimum_size, natural_size); + * } + * + * + * In the above example the Foo widget has to make sure that some + * row sizes have been calculated (the amount of rows that Foo judged + * was appropriate to request space for in a single timeout iteration) + * before simply returning the amount of space required by the area via + * the #GtkCellAreaContext. + * + * Requesting the height for width (or width for height) of an area is + * a similar task except in this case the #GtkCellAreaContext does not + * store the data (actually, it does not know how much space the layouting + * widget plans to allocate it for every row, it's up to the layouting + * widget to render each row of data with the appropriate height and + * width which was requested by the #GtkCellArea). + * + * In order to request the height for width of all the rows at the + * root level of a #GtkTreeModel one would do the following: + * + * Requesting the height for width of a handful of GtkTreeModel rows + * + * GtkTreeIter iter; + * gint minimum_height; + * gint natural_height; + * gint full_minimum_height = 0; + * gint full_natural_height = 0; + * + * valid = gtk_tree_model_get_iter_first (model, &iter); + * while (valid) + * { + * gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE); + * gtk_cell_area_get_preferred_height_for_width (area, context, widget, + * width, &minimum_height, &natural_height); + * + * if (width_is_for_allocation) + * cache_row_height (&iter, minimum_height, natural_height); + * + * full_minimum_height += minimum_height; + * full_natural_height += natural_height; + * + * valid = gtk_tree_model_iter_next (model, &iter); + * } + * + * + * Note that in the above example we would need to cache the heights + * returned for each row so that we would know what sizes to render the + * areas for each row. However we would only want to really cache the + * heights if the request is intended for the layouting widgets real + * allocation. + * + * In some cases the layouting widget is requested the height for an + * arbitrary for_width, this is a special case for layouting widgets + * who need to request size for tens of thousands of rows. For this + * case it's only important that the layouting widget calculate + * one reasonably sized chunk of rows and return that height + * synchronously. The reasoning here is that any layouting widget is + * at least capable of synchronously calculating enough height to fill + * the screen height (or scrolled window height) in response to a single + * call to #GtkWidgetClass.get_preferred_height_for_width(). Returning + * a perfect height for width that is larger than the screen area is + * inconsequential since after the layouting receives an allocation + * from a scrolled window it simply continues to drive the the scrollbar + * values while more and more height is required for the row heights + * that are calculated in the background. + * + * + * + * Rendering Areas + * + * Once area sizes have been aquired at least for the rows in the + * visible area of the layouting widget they can be rendered at + * #GtkWidgetClass.draw() time. + * + * A crude example of how to render all the rows at the root level + * runs as follows: + * + * Requesting the width of a handful of GtkTreeModel rows + * + * GtkAllocation allocation; + * GdkRectangle cell_area = { 0, }; + * GtkTreeIter iter; + * gint minimum_width; + * gint natural_width; + * + * gtk_widget_get_allocation (widget, &allocation); + * cell_area.width = allocation.width; + * + * valid = gtk_tree_model_get_iter_first (model, &iter); + * while (valid) + * { + * cell_area.height = get_cached_height_for_row (&iter); + * + * gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE); + * gtk_cell_area_render (area, context, widget, cr, + * &cell_area, &cell_area, state_flags, FALSE); + * + * cell_area.y += cell_area.height; + * + * valid = gtk_tree_model_iter_next (model, &iter); + * } + * + * + * Note that the cached height in this example really depends on how + * the layouting widget works. The layouting widget might decide to + * give every row it's minimum or natural height or, if the model content + * is expected to fit inside the layouting widget without scrolling, it + * would make sense to calculate the allocation for each row at + * #GtkWidget::size-allocate time using gtk_distribute_natural_allocation(). + * + * + * + * Handling Events and Driving Keyboard Focus + * + * Passing events to the area is as simple as handling events on any + * normal widget and then passing them to the gtk_cell_area_event() + * API as they come in. Usually #GtkCellArea is only interested in + * button events, however some customized derived areas can be implemented + * who are interested in handling other events. Handling an event can + * trigger the #GtkCellArea::focus-changed signal to fire; as well as + * #GtkCellArea::add-editable in the case that an editable cell was + * clicked and needs to start editing. You can call + * gtk_cell_area_stop_editing() at any time to cancel any cell editing + * that is currently in progress. + * + * The #GtkCellArea drives keyboard focus from cell to cell in a way + * similar to #GtkWidget. For layouting widgets that support giving + * focus to cells it's important to remember to pass %GTK_CELL_RENDERER_FOCUSED + * to the area functions for the row that has focus and to tell the + * area to paint the focus at render time. + * + * Layouting widgets that accept focus on cells should implement the + * #GtkWidgetClass.focus() virtual method. The layouting widget is always + * responsible for knowing where #GtkTreeModel rows are rendered inside + * the widget, so at #GtkWidgetClass.focus() time the layouting widget + * should use the #GtkCellArea methods to navigate focus inside the area + * and then observe the GtkDirectionType to pass the focus to adjacent + * rows and areas. + * + * A basic example of how the #GtkWidgetClass.focus() virtual method + * should be implemented: + * + * Implementing keyboard focus navigation + * + * static gboolean + * foo_focus (GtkWidget *widget, + * GtkDirectionType direction) + * { + * Foo *foo = FOO (widget); + * FooPrivate *priv = foo->priv; + * gint focus_row; + * gboolean have_focus = FALSE; + * + * focus_row = priv->focus_row; + * + * if (!gtk_widget_has_focus (widget)) + * gtk_widget_grab_focus (widget); + * + * valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, priv->focus_row); + * while (valid) + * { + * gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + * + * if (gtk_cell_area_focus (priv->area, direction)) + * { + * priv->focus_row = focus_row; + * have_focus = TRUE; + * break; + * } + * else + * { + * if (direction == GTK_DIR_RIGHT || + * direction == GTK_DIR_LEFT) + * break; + * else if (direction == GTK_DIR_UP || + * direction == GTK_DIR_TAB_BACKWARD) + * { + * if (focus_row == 0) + * break; + * else + * { + * focus_row--; + * valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, focus_row); + * } + * } + * else + * { + * if (focus_row == last_row) + * break; + * else + * { + * focus_row++; + * valid = gtk_tree_model_iter_next (priv->model, &iter); + * } + * } + * } + * } + * return have_focus; + * } + * + * + * Note that the layouting widget is responsible for matching the + * GtkDirectionType values to the way it lays out its cells. + * + * + * + * Cell Properties + * + * The #GtkCellArea introduces cell properties + * for #GtkCellRenderers in very much the same way that #GtkContainer + * introduces child properties + * for #GtkWidgets. This provides some general interfaces for defining + * the relationship cell areas have with their cells. For instance in a + * #GtkCellAreaBox a cell might "expand" and receive extra space when + * the area is allocated more than it's full natural request, or a cell + * might be configured to "align" with adjacent rows which were requested + * and rendered with the same #GtkCellAreaContext. + * + * Use gtk_cell_area_class_install_cell_property() to install cell + * properties for a cell area class and gtk_cell_area_class_find_cell_property() + * or gtk_cell_area_class_list_cell_properties() to get information about + * existing cell properties. + * + * To set the value of a cell property, use gtk_cell_area_cell_set_property(), + * gtk_cell_area_cell_set() or gtk_cell_area_cell_set_valist(). To obtain + * the value of a cell property, use gtk_cell_area_cell_get_property(), + * gtk_cell_area_cell_get() or gtk_cell_area_cell_get_valist(). + * + * + */ + +#include "config.h" + +#include +#include +#include + +#include "gtkintl.h" +#include "gtkcelllayout.h" +#include "gtkcellarea.h" +#include "gtkcellareacontext.h" +#include "gtkmarshalers.h" +#include "gtkprivate.h" + +#include + + +/* GObjectClass */ +static void gtk_cell_area_dispose (GObject *object); +static void gtk_cell_area_finalize (GObject *object); +static void gtk_cell_area_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +/* GtkCellAreaClass */ +static gint gtk_cell_area_real_event (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); +static void gtk_cell_area_real_render (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean paint_focus); +static void gtk_cell_area_real_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded); +static void gtk_cell_area_real_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); +static void gtk_cell_area_real_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); +static gboolean gtk_cell_area_real_is_activatable (GtkCellArea *area); +static gboolean gtk_cell_area_real_activate (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean edit_only); + +/* GtkCellLayoutIface */ +static void gtk_cell_area_cell_layout_init (GtkCellLayoutIface *iface); +static void gtk_cell_area_pack_default (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand); +static void gtk_cell_area_clear (GtkCellLayout *cell_layout); +static void gtk_cell_area_add_attribute (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + const gchar *attribute, + gint column); +static void gtk_cell_area_set_cell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkCellLayoutDataFunc func, + gpointer func_data, + GDestroyNotify destroy); +static void gtk_cell_area_clear_attributes (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer); +static void gtk_cell_area_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gint position); +static GList *gtk_cell_area_get_cells (GtkCellLayout *cell_layout); +static GtkCellArea *gtk_cell_area_get_area (GtkCellLayout *cell_layout); + +/* GtkBuildableIface */ +static void gtk_cell_area_buildable_init (GtkBuildableIface *iface); +static void gtk_cell_area_buildable_custom_tag_end (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data); + +/* Used in foreach loop to check if a child renderer is present */ +typedef struct { + GtkCellRenderer *renderer; + gboolean has_renderer; +} HasRendererCheck; + +/* Used in foreach loop to get a cell's allocation */ +typedef struct { + GtkCellRenderer *renderer; + GdkRectangle allocation; +} RendererAllocationData; + +/* Used in foreach loop to render cells */ +typedef struct { + GtkCellArea *area; + GtkWidget *widget; + cairo_t *cr; + GdkRectangle focus_rect; + GtkCellRendererState render_flags; + guint paint_focus : 1; + guint focus_all : 1; + guint first_focus : 1; +} CellRenderData; + +/* Used in foreach loop to get a cell by position */ +typedef struct { + gint x; + gint y; + GtkCellRenderer *renderer; + GdkRectangle cell_area; +} CellByPositionData; + +/* Attribute/Cell metadata */ +typedef struct { + const gchar *attribute; + gint column; +} CellAttribute; + +typedef struct { + GSList *attributes; + + GtkCellLayoutDataFunc func; + gpointer data; + GDestroyNotify destroy; + GtkCellLayout *proxy; +} CellInfo; + +static CellInfo *cell_info_new (GtkCellLayoutDataFunc func, + gpointer data, + GDestroyNotify destroy); +static void cell_info_free (CellInfo *info); +static CellAttribute *cell_attribute_new (GtkCellRenderer *renderer, + const gchar *attribute, + gint column); +static void cell_attribute_free (CellAttribute *attribute); +static gint cell_attribute_find (CellAttribute *cell_attribute, + const gchar *attribute); + +/* Internal functions/signal emissions */ +static void gtk_cell_area_add_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + const GdkRectangle *cell_area); +static void gtk_cell_area_remove_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable); +static void gtk_cell_area_set_edit_widget (GtkCellArea *area, + GtkCellEditable *editable); +static void gtk_cell_area_set_edited_cell (GtkCellArea *area, + GtkCellRenderer *renderer); + + +/* Struct to pass data along while looping over + * cell renderers to apply attributes + */ +typedef struct { + GtkCellArea *area; + GtkTreeModel *model; + GtkTreeIter *iter; + gboolean is_expander; + gboolean is_expanded; +} AttributeData; + +struct _GtkCellAreaPrivate +{ + /* The GtkCellArea bookkeeps any connected + * attributes in this hash table. + */ + GHashTable *cell_info; + + /* Current path is saved as a side-effect + * of gtk_cell_area_apply_attributes() + */ + gchar *current_path; + + /* Current cell being edited and editable widget used */ + GtkCellEditable *edit_widget; + GtkCellRenderer *edited_cell; + + /* Signal connections to the editable widget */ + gulong remove_widget_id; + + /* Currently focused cell */ + GtkCellRenderer *focus_cell; + + /* Tracking which cells are focus siblings of focusable cells */ + GHashTable *focus_siblings; + + /* Detail string to pass to gtk_paint_*() functions */ + gchar *style_detail; +}; + +enum { + PROP_0, + PROP_FOCUS_CELL, + PROP_EDITED_CELL, + PROP_EDIT_WIDGET +}; + +enum { + SIGNAL_APPLY_ATTRIBUTES, + SIGNAL_ADD_EDITABLE, + SIGNAL_REMOVE_EDITABLE, + SIGNAL_FOCUS_CHANGED, + LAST_SIGNAL +}; + +/* Keep the paramspec pool internal, no need to deliver notifications + * on cells. at least no perceived need for now + */ +static GParamSpecPool *cell_property_pool = NULL; +static guint cell_area_signals[LAST_SIGNAL] = { 0 }; + +#define PARAM_SPEC_PARAM_ID(pspec) ((pspec)->param_id) +#define PARAM_SPEC_SET_PARAM_ID(pspec, id) ((pspec)->param_id = (id)) + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GtkCellArea, gtk_cell_area, G_TYPE_INITIALLY_UNOWNED, + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, + gtk_cell_area_cell_layout_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_cell_area_buildable_init)) + +static void +gtk_cell_area_init (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + area->priv = G_TYPE_INSTANCE_GET_PRIVATE (area, + GTK_TYPE_CELL_AREA, + GtkCellAreaPrivate); + priv = area->priv; + + priv->cell_info = g_hash_table_new_full (g_direct_hash, + g_direct_equal, + NULL, + (GDestroyNotify)cell_info_free); + + priv->focus_siblings = g_hash_table_new_full (g_direct_hash, + g_direct_equal, + NULL, + (GDestroyNotify)g_list_free); + + priv->focus_cell = NULL; + priv->edited_cell = NULL; + priv->edit_widget = NULL; + + priv->remove_widget_id = 0; +} + +static void +gtk_cell_area_class_init (GtkCellAreaClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + /* GObjectClass */ + object_class->dispose = gtk_cell_area_dispose; + object_class->finalize = gtk_cell_area_finalize; + object_class->get_property = gtk_cell_area_get_property; + object_class->set_property = gtk_cell_area_set_property; + + /* general */ + class->add = NULL; + class->remove = NULL; + class->foreach = NULL; + class->event = gtk_cell_area_real_event; + class->render = gtk_cell_area_real_render; + class->apply_attributes = gtk_cell_area_real_apply_attributes; + + /* geometry */ + class->create_context = NULL; + class->get_request_mode = NULL; + class->get_preferred_width = NULL; + class->get_preferred_height = NULL; + class->get_preferred_height_for_width = gtk_cell_area_real_get_preferred_height_for_width; + class->get_preferred_width_for_height = gtk_cell_area_real_get_preferred_width_for_height; + + /* focus */ + class->is_activatable = gtk_cell_area_real_is_activatable; + class->activate = gtk_cell_area_real_activate; + class->focus = NULL; + + /* Signals */ + /** + * GtkCellArea::apply-attributes: + * @area: the #GtkCellArea to apply the attributes to + * @model: the #GtkTreeModel to apply the attributes from + * @iter: the #GtkTreeIter indicating which row to apply the attributes of + * @is_expander: whether the view shows children for this row + * @is_expanded: whether the view is currently showing the children of this row + * + * This signal is emitted whenever applying attributes to @area from @model + * + * Since: 3.0 + */ + cell_area_signals[SIGNAL_APPLY_ATTRIBUTES] = + g_signal_new (I_("apply-attributes"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkCellAreaClass, apply_attributes), + NULL, NULL, + _gtk_marshal_VOID__OBJECT_BOXED_BOOLEAN_BOOLEAN, + G_TYPE_NONE, 4, + GTK_TYPE_TREE_MODEL, + GTK_TYPE_TREE_ITER, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + + /** + * GtkCellArea::add-editable: + * @area: the #GtkCellArea where editing started + * @renderer: the #GtkCellRenderer that started the edited + * @editable: the #GtkCellEditable widget to add + * @cell_area: the #GtkWidget relative #GdkRectangle coordinates + * where @editable should be added + * @path: the #GtkTreePath string this edit was initiated for + * + * Indicates that editing has started on @renderer and that @editable + * should be added to the owning cell layouting widget at @cell_area. + * + * Since: 3.0 + */ + cell_area_signals[SIGNAL_ADD_EDITABLE] = + g_signal_new (I_("add-editable"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, /* No class closure here */ + NULL, NULL, + _gtk_marshal_VOID__OBJECT_OBJECT_BOXED_STRING, + G_TYPE_NONE, 4, + GTK_TYPE_CELL_RENDERER, + GTK_TYPE_CELL_EDITABLE, + GDK_TYPE_RECTANGLE, + G_TYPE_STRING); + + + /** + * GtkCellArea::remove-editable: + * @area: the #GtkCellArea where editing finished + * @renderer: the #GtkCellRenderer that finished editeding + * @editable: the #GtkCellEditable widget to remove + * + * Indicates that editing finished on @renderer and that @editable + * should be removed from the owning cell layouting widget. + * + * Since: 3.0 + */ + cell_area_signals[SIGNAL_REMOVE_EDITABLE] = + g_signal_new (I_("remove-editable"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, /* No class closure here */ + NULL, NULL, + _gtk_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, 2, + GTK_TYPE_CELL_RENDERER, + GTK_TYPE_CELL_EDITABLE); + + /** + * GtkCellArea::focus-changed: + * @area: the #GtkCellArea where focus changed + * @renderer: the #GtkCellRenderer that has focus + * @path: the current #GtkTreePath string set for @area + * + * Indicates that focus changed on this @area. This signal + * is emitted either as a result of focus handling or event + * handling. + * + * It's possible that the signal is emitted even if the + * currently focused renderer did not change, this is + * because focus may change to the same renderer in the + * same cell area for a different row of data. + * + * Since: 3.0 + */ + cell_area_signals[SIGNAL_FOCUS_CHANGED] = + g_signal_new (I_("focus-changed"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, /* No class closure here */ + NULL, NULL, + _gtk_marshal_VOID__OBJECT_STRING, + G_TYPE_NONE, 2, + GTK_TYPE_CELL_RENDERER, + G_TYPE_STRING); + + /* Properties */ + /** + * GtkCellArea:focus-cell: + * + * The cell in the area that currently has focus + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_FOCUS_CELL, + g_param_spec_object + ("focus-cell", + P_("Focus Cell"), + P_("The cell which currently has focus"), + GTK_TYPE_CELL_RENDERER, + GTK_PARAM_READWRITE)); + + /** + * GtkCellArea:edited-cell: + * + * The cell in the area that is currently edited + * + * This property is read-only and only changes as + * a result of a call gtk_cell_area_activate_cell(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_EDITED_CELL, + g_param_spec_object + ("edited-cell", + P_("Edited Cell"), + P_("The cell which is currently being edited"), + GTK_TYPE_CELL_RENDERER, + G_PARAM_READABLE)); + + /** + * GtkCellArea:edit-widget: + * + * The widget currently editing the edited cell + * + * This property is read-only and only changes as + * a result of a call gtk_cell_area_activate_cell(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_EDIT_WIDGET, + g_param_spec_object + ("edit-widget", + P_("Edit Widget"), + P_("The widget currently editing the edited cell"), + GTK_TYPE_CELL_EDITABLE, + G_PARAM_READABLE)); + + /* Pool for Cell Properties */ + if (!cell_property_pool) + cell_property_pool = g_param_spec_pool_new (FALSE); + + g_type_class_add_private (object_class, sizeof (GtkCellAreaPrivate)); +} + +/************************************************************* + * CellInfo Basics * + *************************************************************/ +static CellInfo * +cell_info_new (GtkCellLayoutDataFunc func, + gpointer data, + GDestroyNotify destroy) +{ + CellInfo *info = g_slice_new0 (CellInfo); + + info->func = func; + info->data = data; + info->destroy = destroy; + + return info; +} + +static void +cell_info_free (CellInfo *info) +{ + if (info->destroy) + info->destroy (info->data); + + g_slist_foreach (info->attributes, (GFunc)cell_attribute_free, NULL); + g_slist_free (info->attributes); + + g_slice_free (CellInfo, info); +} + +static CellAttribute * +cell_attribute_new (GtkCellRenderer *renderer, + const gchar *attribute, + gint column) +{ + GParamSpec *pspec; + + /* Check if the attribute really exists and point to + * the property string installed on the cell renderer + * class (dont dup the string) + */ + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (renderer), attribute); + + if (pspec) + { + CellAttribute *cell_attribute = g_slice_new (CellAttribute); + + cell_attribute->attribute = pspec->name; + cell_attribute->column = column; + + return cell_attribute; + } + + return NULL; +} + +static void +cell_attribute_free (CellAttribute *attribute) +{ + g_slice_free (CellAttribute, attribute); +} + +/* GCompareFunc for g_slist_find_custom() */ +static gint +cell_attribute_find (CellAttribute *cell_attribute, + const gchar *attribute) +{ + return g_strcmp0 (cell_attribute->attribute, attribute); +} + +/************************************************************* + * GObjectClass * + *************************************************************/ +static void +gtk_cell_area_finalize (GObject *object) +{ + GtkCellArea *area = GTK_CELL_AREA (object); + GtkCellAreaPrivate *priv = area->priv; + + /* All cell renderers should already be removed at this point, + * just kill our (empty) hash tables here. + */ + g_hash_table_destroy (priv->cell_info); + g_hash_table_destroy (priv->focus_siblings); + + g_free (priv->current_path); + g_free (priv->style_detail); + + G_OBJECT_CLASS (gtk_cell_area_parent_class)->finalize (object); +} + + +static void +gtk_cell_area_dispose (GObject *object) +{ + /* This removes every cell renderer that may be added to the GtkCellArea, + * subclasses should be breaking references to the GtkCellRenderers + * at this point. + */ + gtk_cell_layout_clear (GTK_CELL_LAYOUT (object)); + + /* Remove any ref to a focused/edited cell */ + gtk_cell_area_set_focus_cell (GTK_CELL_AREA (object), NULL); + gtk_cell_area_set_edited_cell (GTK_CELL_AREA (object), NULL); + gtk_cell_area_set_edit_widget (GTK_CELL_AREA (object), NULL); + + G_OBJECT_CLASS (gtk_cell_area_parent_class)->dispose (object); +} + +static void +gtk_cell_area_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkCellArea *area = GTK_CELL_AREA (object); + + switch (prop_id) + { + case PROP_FOCUS_CELL: + gtk_cell_area_set_focus_cell (area, (GtkCellRenderer *)g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_cell_area_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkCellArea *area = GTK_CELL_AREA (object); + GtkCellAreaPrivate *priv = area->priv; + + switch (prop_id) + { + case PROP_FOCUS_CELL: + g_value_set_object (value, priv->focus_cell); + break; + case PROP_EDITED_CELL: + g_value_set_object (value, priv->edited_cell); + break; + case PROP_EDIT_WIDGET: + g_value_set_object (value, priv->edit_widget); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/************************************************************* + * GtkCellAreaClass * + *************************************************************/ +static gint +gtk_cell_area_real_event (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + GtkCellAreaPrivate *priv = area->priv; + gboolean retval = FALSE; + + if (event->type == GDK_KEY_PRESS && (flags & GTK_CELL_RENDERER_FOCUSED) != 0) + { + GdkEventKey *key_event = (GdkEventKey *)event; + + /* Cancel any edits in progress */ + if (priv->edited_cell && (key_event->keyval == GDK_KEY_Escape)) + { + gtk_cell_area_stop_editing (area, TRUE); + retval = TRUE; + } + } + else if (event->type == GDK_BUTTON_PRESS) + { + GdkEventButton *button_event = (GdkEventButton *)event; + + if (button_event->button == 1) + { + GtkCellRenderer *renderer = NULL; + GtkCellRenderer *focus_renderer; + GdkRectangle alloc_area; + gint event_x, event_y; + + /* We may need some semantics to tell us the offset of the event + * window we are handling events for (i.e. GtkTreeView has a bin_window) */ + event_x = button_event->x; + event_y = button_event->y; + + /* Dont try to search for an event coordinate that is not in the area, that will + * trigger a runtime warning. + */ + if (event_x >= cell_area->x && event_x <= cell_area->x + cell_area->width && + event_y >= cell_area->y && event_y <= cell_area->y + cell_area->height) + renderer = + gtk_cell_area_get_cell_at_position (area, context, widget, + cell_area, event_x, event_y, + &alloc_area); + + if (renderer) + { + focus_renderer = gtk_cell_area_get_focus_from_sibling (area, renderer); + if (!focus_renderer) + focus_renderer = renderer; + + /* If we're already editing, cancel it and set focus */ + if (gtk_cell_area_get_edited_cell (area)) + { + /* XXX Was it really canceled in this case ? */ + gtk_cell_area_stop_editing (area, TRUE); + gtk_cell_area_set_focus_cell (area, focus_renderer); + retval = TRUE; + } + else + { + /* If we are activating via a focus sibling, + * we need to fetch the right cell area for the real event renderer */ + if (focus_renderer != renderer) + gtk_cell_area_get_cell_allocation (area, context, widget, focus_renderer, + cell_area, &alloc_area); + + gtk_cell_area_set_focus_cell (area, focus_renderer); + retval = gtk_cell_area_activate_cell (area, widget, focus_renderer, + event, &alloc_area, flags); + } + } + } + } + + return retval; +} + +static gboolean +render_cell (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + CellRenderData *data) +{ + GtkCellRenderer *focus_cell; + GtkCellRendererState flags; + GdkRectangle inner_area; + + focus_cell = gtk_cell_area_get_focus_cell (data->area); + flags = data->render_flags; + + gtk_cell_area_inner_cell_area (data->area, data->widget, cell_area, &inner_area); + + if ((flags & GTK_CELL_RENDERER_FOCUSED) && + (data->focus_all || + (focus_cell && + (renderer == focus_cell || + gtk_cell_area_is_focus_sibling (data->area, focus_cell, renderer))))) + { + gint focus_line_width; + GdkRectangle cell_focus; + + gtk_cell_renderer_get_aligned_area (renderer, data->widget, flags, &inner_area, &cell_focus); + + gtk_widget_style_get (data->widget, + "focus-line-width", &focus_line_width, + NULL); + + /* The focus rectangle is located around the aligned area of the cell */ + cell_focus.x -= focus_line_width; + cell_focus.y -= focus_line_width; + cell_focus.width += 2 * focus_line_width; + cell_focus.height += 2 * focus_line_width; + + if (data->first_focus) + { + data->first_focus = FALSE; + data->focus_rect = cell_focus; + } + else + { + gdk_rectangle_union (&data->focus_rect, &cell_focus, &data->focus_rect); + } + } + else + flags &= ~GTK_CELL_RENDERER_FOCUSED; + + gtk_cell_renderer_render (renderer, data->cr, data->widget, + cell_background, &inner_area, flags); + + return FALSE; +} + +static void +gtk_cell_area_real_render (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean paint_focus) +{ + CellRenderData render_data = + { + area, + widget, + cr, + { 0, }, + flags, + paint_focus, + FALSE, TRUE + }; + + /* Make sure we dont paint a focus rectangle while there + * is an editable widget in play + */ + if (gtk_cell_area_get_edited_cell (area)) + render_data.paint_focus = FALSE; + + /* If no cell can activate but the caller wants focus painted, + * then we paint focus around all cells */ + if ((flags & GTK_CELL_RENDERER_FOCUSED) != 0 && paint_focus && + !gtk_cell_area_is_activatable (area)) + render_data.focus_all = TRUE; + + gtk_cell_area_foreach_alloc (area, context, widget, cell_area, background_area, + (GtkCellAllocCallback)render_cell, &render_data); + + if (render_data.paint_focus && + render_data.focus_rect.width != 0 && + render_data.focus_rect.height != 0) + { + GtkStateType renderer_state = + flags & GTK_CELL_RENDERER_SELECTED ? GTK_STATE_SELECTED : + (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT : + (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL)); + + cairo_save (cr); + + gdk_cairo_rectangle (cr, background_area); + cairo_clip (cr); + + gtk_paint_focus (gtk_widget_get_style (widget), cr, + renderer_state, widget, + gtk_cell_area_get_style_detail (area), + render_data.focus_rect.x, render_data.focus_rect.y, + render_data.focus_rect.width, render_data.focus_rect.height); + + cairo_restore (cr); + } +} + +static void +apply_cell_attributes (GtkCellRenderer *renderer, + CellInfo *info, + AttributeData *data) +{ + CellAttribute *attribute; + GSList *list; + GValue value = { 0, }; + gboolean is_expander; + gboolean is_expanded; + + g_object_freeze_notify (G_OBJECT (renderer)); + + /* Whether a row expands or is presently expanded can only be + * provided by the view (as these states can vary across views + * accessing the same model). + */ + g_object_get (renderer, "is-expander", &is_expander, NULL); + if (is_expander != data->is_expander) + g_object_set (renderer, "is-expander", data->is_expander, NULL); + + g_object_get (renderer, "is-expanded", &is_expanded, NULL); + if (is_expanded != data->is_expanded) + g_object_set (renderer, "is-expanded", data->is_expanded, NULL); + + /* Apply the attributes directly to the renderer */ + for (list = info->attributes; list; list = list->next) + { + attribute = list->data; + + gtk_tree_model_get_value (data->model, data->iter, attribute->column, &value); + g_object_set_property (G_OBJECT (renderer), attribute->attribute, &value); + g_value_unset (&value); + } + + /* Call any GtkCellLayoutDataFunc that may have been set by the user + */ + if (info->func) + info->func (info->proxy ? info->proxy : GTK_CELL_LAYOUT (data->area), renderer, + data->model, data->iter, info->data); + + g_object_thaw_notify (G_OBJECT (renderer)); +} + +static void +gtk_cell_area_real_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded) +{ + + GtkCellAreaPrivate *priv; + AttributeData data; + GtkTreePath *path; + + priv = area->priv; + + /* Feed in data needed to apply to every renderer */ + data.area = area; + data.model = tree_model; + data.iter = iter; + data.is_expander = is_expander; + data.is_expanded = is_expanded; + + /* Go over any cells that have attributes or custom GtkCellLayoutDataFuncs and + * apply the data from the treemodel */ + g_hash_table_foreach (priv->cell_info, (GHFunc)apply_cell_attributes, &data); + + /* Update the currently applied path */ + g_free (priv->current_path); + path = gtk_tree_model_get_path (tree_model, iter); + priv->current_path = gtk_tree_path_to_string (path); + gtk_tree_path_free (path); +} + +static void +gtk_cell_area_real_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height) +{ + /* If the area doesnt do height-for-width, fallback on base preferred height */ + GTK_CELL_AREA_GET_CLASS (area)->get_preferred_width (area, context, widget, minimum_height, natural_height); +} + +static void +gtk_cell_area_real_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width) +{ + /* If the area doesnt do width-for-height, fallback on base preferred width */ + GTK_CELL_AREA_GET_CLASS (area)->get_preferred_width (area, context, widget, minimum_width, natural_width); +} + +static gboolean +get_is_activatable (GtkCellRenderer *renderer, + gboolean *activatable) +{ + + if (gtk_cell_renderer_is_activatable (renderer)) + *activatable = TRUE; + + return *activatable; +} + +static gboolean +gtk_cell_area_real_is_activatable (GtkCellArea *area) +{ + gboolean activatable = FALSE; + + /* Checks if any renderer can focus for the currently applied + * attributes. + * + * Subclasses can override this in the case that they are also + * rendering widgets as well as renderers. + */ + gtk_cell_area_foreach (area, (GtkCellCallback)get_is_activatable, &activatable); + + return activatable; +} + +static gboolean +gtk_cell_area_real_activate (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean edit_only) +{ + GtkCellAreaPrivate *priv = area->priv; + GdkRectangle renderer_area; + GtkCellRenderer *activate_cell = NULL; + GtkCellRendererMode mode; + + if (priv->focus_cell) + { + g_object_get (priv->focus_cell, "mode", &mode, NULL); + + if (gtk_cell_renderer_get_visible (priv->focus_cell) && + (edit_only ? mode == GTK_CELL_RENDERER_MODE_EDITABLE : + mode != GTK_CELL_RENDERER_MODE_INERT)) + activate_cell = priv->focus_cell; + } + else + { + GList *cells, *l; + + /* GtkTreeView sometimes wants to activate a cell when no + * cells are in focus. + */ + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area)); + for (l = cells; l && !activate_cell; l = l->next) + { + GtkCellRenderer *renderer = l->data; + + g_object_get (renderer, "mode", &mode, NULL); + + if (gtk_cell_renderer_get_visible (renderer) && + (edit_only ? mode == GTK_CELL_RENDERER_MODE_EDITABLE : + mode != GTK_CELL_RENDERER_MODE_INERT)) + activate_cell = renderer; + } + g_list_free (cells); + } + + if (activate_cell) + { + /* Get the allocation of the focused cell. + */ + gtk_cell_area_get_cell_allocation (area, context, widget, activate_cell, + cell_area, &renderer_area); + + /* Activate or Edit the cell + * + * Currently just not sending an event, renderers afaics dont use + * the event argument anyway, worst case is we can synthesize one. + */ + if (gtk_cell_area_activate_cell (area, widget, activate_cell, NULL, + &renderer_area, flags)) + return TRUE; + } + + return FALSE; +} + +/************************************************************* + * GtkCellLayoutIface * + *************************************************************/ +static void +gtk_cell_area_cell_layout_init (GtkCellLayoutIface *iface) +{ + iface->pack_start = gtk_cell_area_pack_default; + iface->pack_end = gtk_cell_area_pack_default; + iface->clear = gtk_cell_area_clear; + iface->add_attribute = gtk_cell_area_add_attribute; + iface->set_cell_data_func = gtk_cell_area_set_cell_data_func; + iface->clear_attributes = gtk_cell_area_clear_attributes; + iface->reorder = gtk_cell_area_reorder; + iface->get_cells = gtk_cell_area_get_cells; + iface->get_area = gtk_cell_area_get_area; +} + +static void +gtk_cell_area_pack_default (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand) +{ + gtk_cell_area_add (GTK_CELL_AREA (cell_layout), renderer); +} + +static void +gtk_cell_area_clear (GtkCellLayout *cell_layout) +{ + GtkCellArea *area = GTK_CELL_AREA (cell_layout); + GList *l, *cells = + gtk_cell_layout_get_cells (cell_layout); + + for (l = cells; l; l = l->next) + { + GtkCellRenderer *renderer = l->data; + gtk_cell_area_remove (area, renderer); + } + + g_list_free (cells); +} + +static void +gtk_cell_area_add_attribute (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + const gchar *attribute, + gint column) +{ + gtk_cell_area_attribute_connect (GTK_CELL_AREA (cell_layout), + renderer, attribute, column); +} + +static void +gtk_cell_area_set_cell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + GtkCellLayoutDataFunc func, + gpointer func_data, + GDestroyNotify destroy) +{ + GtkCellArea *area = GTK_CELL_AREA (cell_layout); + + _gtk_cell_area_set_cell_data_func_with_proxy (area, renderer, (GFunc)func, func_data, destroy, NULL); +} + +static void +gtk_cell_area_clear_attributes (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer) +{ + GtkCellArea *area = GTK_CELL_AREA (cell_layout); + GtkCellAreaPrivate *priv = area->priv; + CellInfo *info; + + info = g_hash_table_lookup (priv->cell_info, renderer); + + if (info) + { + g_slist_foreach (info->attributes, (GFunc)cell_attribute_free, NULL); + g_slist_free (info->attributes); + + info->attributes = NULL; + } +} + +static void +gtk_cell_area_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gint position) +{ + g_warning ("GtkCellLayout::reorder not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (cell_layout))); +} + +static gboolean +accum_cells (GtkCellRenderer *renderer, + GList **accum) +{ + *accum = g_list_prepend (*accum, renderer); + + return FALSE; +} + +static GList * +gtk_cell_area_get_cells (GtkCellLayout *cell_layout) +{ + GList *cells = NULL; + + gtk_cell_area_foreach (GTK_CELL_AREA (cell_layout), + (GtkCellCallback)accum_cells, + &cells); + + return g_list_reverse (cells); +} + +static GtkCellArea * +gtk_cell_area_get_area (GtkCellLayout *cell_layout) +{ + return GTK_CELL_AREA (cell_layout); +} + +/************************************************************* + * GtkBuildableIface * + *************************************************************/ +static void +gtk_cell_area_buildable_init (GtkBuildableIface *iface) +{ + iface->add_child = _gtk_cell_layout_buildable_add_child; + iface->custom_tag_start = _gtk_cell_layout_buildable_custom_tag_start; + iface->custom_tag_end = gtk_cell_area_buildable_custom_tag_end; +} + +static void +gtk_cell_area_buildable_custom_tag_end (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data) +{ + /* Just ignore the boolean return from here */ + _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, data); +} + +/************************************************************* + * API * + *************************************************************/ + +/** + * gtk_cell_area_add: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to add to @area + * + * Adds @renderer to @area with the default child cell properties. + * + * Since: 3.0 + */ +void +gtk_cell_area_add (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->add) + class->add (area, renderer); + else + g_warning ("GtkCellAreaClass::add not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_remove: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to remove from @area + * + * Removes @renderer from @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_remove (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaClass *class; + GtkCellAreaPrivate *priv; + GList *renderers, *l; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + class = GTK_CELL_AREA_GET_CLASS (area); + priv = area->priv; + + /* Remove any custom attributes and custom cell data func here first */ + g_hash_table_remove (priv->cell_info, renderer); + + /* Remove focus siblings of this renderer */ + g_hash_table_remove (priv->focus_siblings, renderer); + + /* Remove this renderer from any focus renderer's sibling list */ + renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area)); + + for (l = renderers; l; l = l->next) + { + GtkCellRenderer *focus_renderer = l->data; + + if (gtk_cell_area_is_focus_sibling (area, focus_renderer, renderer)) + { + gtk_cell_area_remove_focus_sibling (area, focus_renderer, renderer); + break; + } + } + + g_list_free (renderers); + + if (class->remove) + class->remove (area, renderer); + else + g_warning ("GtkCellAreaClass::remove not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +static gboolean +get_has_renderer (GtkCellRenderer *renderer, + HasRendererCheck *check) +{ + if (renderer == check->renderer) + check->has_renderer = TRUE; + + return check->has_renderer; +} + +/** + * gtk_cell_area_has_renderer: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to check + * + * Checks if @area contains @renderer. + * + * Return value: %TRUE if @renderer is in the @area. + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_has_renderer (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + HasRendererCheck check = { renderer, FALSE }; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), FALSE); + + gtk_cell_area_foreach (area, (GtkCellCallback)get_has_renderer, &check); + + return check.has_renderer; +} + +/** + * gtk_cell_area_foreach: + * @area: a #GtkCellArea + * @callback: the #GtkCellCallback to call + * @callback_data: user provided data pointer + * + * Calls @callback for every #GtkCellRenderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_foreach (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (callback != NULL); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->foreach) + class->foreach (area, callback, callback_data); + else + g_warning ("GtkCellAreaClass::foreach not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_foreach_alloc: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext for this row of data. + * @widget: the #GtkWidget that @area is rendering to + * @cell_area: the @widget relative coordinates and size for @area + * @background_area: the @widget relative coordinates of the background area + * @callback: the #GtkCellAllocCallback to call + * @callback_data: user provided data pointer + * + * Calls @callback for every #GtkCellRenderer in @area with the + * allocated rectangle inside @cell_area. + * + * Since: 3.0 + */ +void +gtk_cell_area_foreach_alloc (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + const GdkRectangle *background_area, + GtkCellAllocCallback callback, + gpointer callback_data) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (cell_area != NULL); + g_return_if_fail (callback != NULL); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->foreach_alloc) + class->foreach_alloc (area, context, widget, cell_area, background_area, callback, callback_data); + else + g_warning ("GtkCellAreaClass::foreach_alloc not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_event: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext for this row of data. + * @widget: the #GtkWidget that @area is rendering to + * @event: the #GdkEvent to handle + * @cell_area: the @widget relative coordinates for @area + * @flags: the #GtkCellRendererState for @area in this row. + * + * Delegates event handling to a #GtkCellArea. + * + * Return value: %TRUE if the event was handled by @area. + * + * Since: 3.0 + */ +gint +gtk_cell_area_event (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + GtkCellAreaClass *class; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), 0); + g_return_val_if_fail (GTK_IS_CELL_AREA_CONTEXT (context), 0); + g_return_val_if_fail (GTK_IS_WIDGET (widget), 0); + g_return_val_if_fail (event != NULL, 0); + g_return_val_if_fail (cell_area != NULL, 0); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->event) + return class->event (area, context, widget, event, cell_area, flags); + + g_warning ("GtkCellAreaClass::event not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); + return 0; +} + +/** + * gtk_cell_area_render: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext for this row of data. + * @widget: the #GtkWidget that @area is rendering to + * @cr: the #cairo_t to render with + * @background_area: the @widget relative coordinates for @area's background + * @cell_area: the @widget relative coordinates for @area + * @flags: the #GtkCellRendererState for @area in this row. + * @paint_focus: whether @area should paint focus on focused cells for focused rows or not. + * + * Renders @area's cells according to @area's layout onto @widget at + * the given coordinates. + * + * Since: 3.0 + */ +void +gtk_cell_area_render (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean paint_focus) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (cr != NULL); + g_return_if_fail (background_area != NULL); + g_return_if_fail (cell_area != NULL); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->render) + class->render (area, context, widget, cr, background_area, cell_area, flags, paint_focus); + else + g_warning ("GtkCellAreaClass::render not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_set_style_detail: + * @area: a #GtkCellArea + * @detail: the #GtkStyle detail string to set + * + * Sets the detail string used in any gtk_paint_*() functions + * used by @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_set_style_detail (GtkCellArea *area, + const gchar *detail) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + + priv = area->priv; + + if (g_strcmp0 (priv->style_detail, detail) != 0) + { + g_free (priv->style_detail); + priv->style_detail = g_strdup (detail); + } +} + +/** + * gtk_cell_area_get_style_detail: + * @area: a #GtkCellArea + * + * Gets the detail string used in any gtk_paint_*() functions + * used by @area. + * + * Return value: the detail string, the string belongs to the area and should not be freed. + * + * Since: 3.0 + */ +G_CONST_RETURN gchar * +gtk_cell_area_get_style_detail (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + priv = area->priv; + + return priv->style_detail; +} + +static gboolean +get_cell_allocation (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + RendererAllocationData *data) +{ + if (data->renderer == renderer) + data->allocation = *cell_area; + + return (data->renderer == renderer); +} + +/** + * gtk_cell_area_get_cell_allocation: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext used to hold sizes for @area. + * @widget: the #GtkWidget that @area is rendering on + * @renderer: the #GtkCellRenderer to get the allocation for + * @cell_area: the whole allocated area for @area in @widget + * for this row + * @allocation: (out): where to store the allocation for @renderer + * + * Derives the allocation of @renderer inside @area if @area + * were to be renderered in @cell_area. + * + * Since: 3.0 + */ +void +gtk_cell_area_get_cell_allocation (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + GdkRectangle *allocation) +{ + RendererAllocationData data = { renderer, { 0, } }; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (cell_area != NULL); + g_return_if_fail (allocation != NULL); + + gtk_cell_area_foreach_alloc (area, context, widget, cell_area, cell_area, + (GtkCellAllocCallback)get_cell_allocation, &data); + + *allocation = data.allocation; +} + +static gboolean +get_cell_by_position (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + CellByPositionData *data) +{ + if (data->x >= cell_area->x && data->x < cell_area->x + cell_area->width && + data->y >= cell_area->y && data->y < cell_area->y + cell_area->height) + { + data->renderer = renderer; + data->cell_area = *cell_area; + } + + return (data->renderer != NULL); +} + +/** + * gtk_cell_area_get_cell_at_position: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext used to hold sizes for @area. + * @widget: the #GtkWidget that @area is rendering on + * @cell_area: the whole allocated area for @area in @widget + * for this row + * @x: the x position + * @y: the y position + * @alloc_area: (out) (allow-none): where to store the inner allocated area of the + * returned cell renderer, or %NULL. + * + * Gets the #GtkCellRenderer at @x and @y coordinates inside @area and optionally + * returns the full cell allocation for it inside @cell_area. + * + * Return value: the #GtkCellRenderer at @x and @y. + * + * Since: 3.0 + */ +GtkCellRenderer * +gtk_cell_area_get_cell_at_position (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + gint x, + gint y, + GdkRectangle *alloc_area) +{ + CellByPositionData data = { x, y, NULL, { 0, } }; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + g_return_val_if_fail (GTK_IS_CELL_AREA_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); + g_return_val_if_fail (cell_area != NULL, NULL); + g_return_val_if_fail (x >= cell_area->x && x <= cell_area->x + cell_area->width, NULL); + g_return_val_if_fail (y >= cell_area->y && y <= cell_area->y + cell_area->height, NULL); + + gtk_cell_area_foreach_alloc (area, context, widget, cell_area, cell_area, + (GtkCellAllocCallback)get_cell_by_position, &data); + + if (alloc_area) + *alloc_area = data.cell_area; + + return data.renderer; +} + +/************************************************************* + * API: Geometry * + *************************************************************/ +/** + * gtk_cell_area_create_context: + * @area: a #GtkCellArea + * + * Creates a #GtkCellAreaContext to be used with @area for + * all purposes. #GtkCellAreaContext stores geometry information + * for rows for which it was operated on, it is important to use + * the same context for the same row of data at all times (i.e. + * one should render and handle events with the same #GtkCellAreaContext + * which was used to request the size of those rows of data). + * + * Return value: (transfer full): a newly created #GtkCellAreaContext which can be used with @area. + * + * Since: 3.0 + */ +GtkCellAreaContext * +gtk_cell_area_create_context (GtkCellArea *area) +{ + GtkCellAreaClass *class; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->create_context) + return class->create_context (area); + + g_warning ("GtkCellAreaClass::create_context not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); + + return NULL; +} + +/** + * gtk_cell_area_copy_context: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext to copy + * + * This is sometimes needed for cases where rows need to share + * alignments in one orientation but may be separately grouped + * in the opposing orientation. + * + * For instance, #GtkIconView creates all icons (rows) to have + * the same width and the cells theirin to have the same + * horizontal alignments. However each row of icons may have + * a separate collective height. #GtkIconView uses this to + * request the heights of each row based on a context which + * was already used to request all the row widths that are + * to be displayed. + * + * Return value: (transfer full): a newly created #GtkCellAreaContext copy of @context. + * + * Since: 3.0 + */ +GtkCellAreaContext * +gtk_cell_area_copy_context (GtkCellArea *area, + GtkCellAreaContext *context) +{ + GtkCellAreaClass *class; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + g_return_val_if_fail (GTK_IS_CELL_AREA_CONTEXT (context), NULL); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->copy_context) + return class->copy_context (area, context); + + g_warning ("GtkCellAreaClass::copy_context not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); + + return NULL; +} + +/** + * gtk_cell_area_get_request_mode: + * @area: a #GtkCellArea + * + * Gets whether the area prefers a height-for-width layout + * or a width-for-height layout. + * + * Return value: The #GtkSizeRequestMode preferred by @area. + * + * Since: 3.0 + */ +GtkSizeRequestMode +gtk_cell_area_get_request_mode (GtkCellArea *area) +{ + GtkCellAreaClass *class; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), + GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->get_request_mode) + return class->get_request_mode (area); + + g_warning ("GtkCellAreaClass::get_request_mode not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); + + return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; +} + +/** + * gtk_cell_area_get_preferred_width: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext to perform this request with + * @widget: the #GtkWidget where @area will be rendering + * @minimum_width: (out) (allow-none): location to store the minimum width, or %NULL + * @natural_width: (out) (allow-none): location to store the natural width, or %NULL + * + * Retrieves a cell area's initial minimum and natural width. + * + * @area will store some geometrical information in @context along the way, + * when requesting sizes over an arbitrary number of rows, its not important + * to check the @minimum_width and @natural_width of this call but rather to + * consult gtk_cell_area_context_get_preferred_width() after a series of + * requests. + * + * Since: 3.0 + */ +void +gtk_cell_area_get_preferred_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->get_preferred_width) + class->get_preferred_width (area, context, widget, minimum_width, natural_width); + else + g_warning ("GtkCellAreaClass::get_preferred_width not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_get_preferred_height_for_width: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext which has already been requested for widths. + * @widget: the #GtkWidget where @area will be rendering + * @width: the width for which to check the height of this area + * @minimum_height: (out) (allow-none): location to store the minimum height, or %NULL + * @natural_height: (out) (allow-none): location to store the natural height, or %NULL + * + * Retrieves a cell area's minimum and natural height if it would be given + * the specified @width. + * + * @area stores some geometrical information in @context along the way + * while calling gtk_cell_area_get_preferred_width(), it's important to + * perform a series of gtk_cell_area_get_preferred_width() requests with + * @context first and then call gtk_cell_area_get_preferred_height_for_width() + * on each cell area individually to get the height for width of each + * fully requested row. + * + * If at some point, the width of a single row changes, it should be + * requested with gtk_cell_area_get_preferred_width() again and then + * the full width of the requested rows checked again with + * gtk_cell_area_context_get_preferred_width(). + * + * Since: 3.0 + */ +void +gtk_cell_area_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + + class = GTK_CELL_AREA_GET_CLASS (area); + class->get_preferred_height_for_width (area, context, widget, width, minimum_height, natural_height); +} + + +/** + * gtk_cell_area_get_preferred_height: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext to perform this request with + * @widget: the #GtkWidget where @area will be rendering + * @minimum_height: (out) (allow-none): location to store the minimum height, or %NULL + * @natural_height: (out) (allow-none): location to store the natural height, or %NULL + * + * Retrieves a cell area's initial minimum and natural height. + * + * @area will store some geometrical information in @context along the way, + * when requesting sizes over an arbitrary number of rows, its not important + * to check the @minimum_height and @natural_height of this call but rather to + * consult gtk_cell_area_context_get_preferred_height() after a series of + * requests. + * + * Since: 3.0 + */ +void +gtk_cell_area_get_preferred_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->get_preferred_height) + class->get_preferred_height (area, context, widget, minimum_height, natural_height); + else + g_warning ("GtkCellAreaClass::get_preferred_height not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_get_preferred_width_for_height: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext which has already been requested for widths. + * @widget: the #GtkWidget where @area will be rendering + * @height: the height for which to check the width of this area + * @minimum_width: (out) (allow-none): location to store the minimum width, or %NULL + * @natural_width: (out) (allow-none): location to store the natural width, or %NULL + * + * Retrieves a cell area's minimum and natural width if it would be given + * the specified @height. + * + * @area stores some geometrical information in @context along the way + * while calling gtk_cell_area_get_preferred_height(), it's important to + * perform a series of gtk_cell_area_get_preferred_height() requests with + * @context first and then call gtk_cell_area_get_preferred_width_for_height() + * on each cell area individually to get the height for width of each + * fully requested row. + * + * If at some point, the height of a single row changes, it should be + * requested with gtk_cell_area_get_preferred_height() again and then + * the full height of the requested rows checked again with + * gtk_cell_area_context_get_preferred_height(). + * + * Since: 3.0 + */ +void +gtk_cell_area_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + + class = GTK_CELL_AREA_GET_CLASS (area); + class->get_preferred_width_for_height (area, context, widget, height, minimum_width, natural_width); +} + +/************************************************************* + * API: Attributes * + *************************************************************/ + +/** + * gtk_cell_area_attribute_connect: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to connect an attribute for + * @attribute: the attribute name + * @column: the #GtkTreeModel column to fetch attribute values from + * + * Connects an @attribute to apply values from @column for the + * #GtkTreeModel in use. + * + * Since: 3.0 + */ +void +gtk_cell_area_attribute_connect (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *attribute, + gint column) +{ + GtkCellAreaPrivate *priv; + CellInfo *info; + CellAttribute *cell_attribute; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (attribute != NULL); + g_return_if_fail (gtk_cell_area_has_renderer (area, renderer)); + + priv = area->priv; + info = g_hash_table_lookup (priv->cell_info, renderer); + + if (!info) + { + info = cell_info_new (NULL, NULL, NULL); + + g_hash_table_insert (priv->cell_info, renderer, info); + } + else + { + GSList *node; + + /* Check we are not adding the same attribute twice */ + if ((node = g_slist_find_custom (info->attributes, attribute, + (GCompareFunc)cell_attribute_find)) != NULL) + { + cell_attribute = node->data; + + g_warning ("Cannot connect attribute `%s' for cell renderer class `%s' " + "since `%s' is already attributed to column %d", + attribute, + g_type_name (G_TYPE_FROM_INSTANCE (area)), + attribute, cell_attribute->column); + return; + } + } + + cell_attribute = cell_attribute_new (renderer, attribute, column); + + if (!cell_attribute) + { + g_warning ("Cannot connect attribute `%s' for cell renderer class `%s' " + "since attribute does not exist", + attribute, + g_type_name (G_TYPE_FROM_INSTANCE (area))); + return; + } + + info->attributes = g_slist_prepend (info->attributes, cell_attribute); +} + +/** + * gtk_cell_area_attribute_disconnect: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to disconnect an attribute for + * @attribute: the attribute name + * + * Disconnects @attribute for the @renderer in @area so that + * attribute will no longer be updated with values from the + * model. + * + * Since: 3.0 + */ +void +gtk_cell_area_attribute_disconnect (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *attribute) +{ + GtkCellAreaPrivate *priv; + CellInfo *info; + CellAttribute *cell_attribute; + GSList *node; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (attribute != NULL); + g_return_if_fail (gtk_cell_area_has_renderer (area, renderer)); + + priv = area->priv; + info = g_hash_table_lookup (priv->cell_info, renderer); + + if (info) + { + node = g_slist_find_custom (info->attributes, attribute, + (GCompareFunc)cell_attribute_find); + if (node) + { + cell_attribute = node->data; + + cell_attribute_free (cell_attribute); + + info->attributes = g_slist_delete_link (info->attributes, node); + } + } +} + +/** + * gtk_cell_area_apply_attributes + * @area: a #GtkCellArea + * @tree_model: the #GtkTreeModel to pull values from + * @iter: the #GtkTreeIter in @tree_model to apply values for + * @is_expander: whether @iter has children + * @is_expanded: whether @iter is expanded in the view and + * children are visible + * + * Applies any connected attributes to the renderers in + * @area by pulling the values from @tree_model. + * + * Since: 3.0 + */ +void +gtk_cell_area_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded) +{ + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); + g_return_if_fail (iter != NULL); + + g_signal_emit (area, cell_area_signals[SIGNAL_APPLY_ATTRIBUTES], 0, + tree_model, iter, is_expander, is_expanded); +} + +/** + * gtk_cell_area_get_current_path_string: + * @area: a #GtkCellArea + * + * Gets the current #GtkTreePath string for the currently + * applied #GtkTreeIter, this is implicitly updated when + * gtk_cell_area_apply_attributes() is called and can be + * used to interact with renderers from #GtkCellArea + * subclasses. + * + * Return value: The current #GtkTreePath string for the current + * attributes applied to @area. This string belongs to the area and + * should not be freed. + * + * Since: 3.0 + */ +G_CONST_RETURN gchar * +gtk_cell_area_get_current_path_string (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + priv = area->priv; + + return priv->current_path; +} + + +/************************************************************* + * API: Cell Properties * + *************************************************************/ +/** + * gtk_cell_area_class_install_cell_property: + * @aclass: a #GtkCellAreaClass + * @property_id: the id for the property + * @pspec: the #GParamSpec for the property + * + * Installs a cell property on a cell area class. + * + * Since: 3.0 + */ +void +gtk_cell_area_class_install_cell_property (GtkCellAreaClass *aclass, + guint property_id, + GParamSpec *pspec) +{ + g_return_if_fail (GTK_IS_CELL_AREA_CLASS (aclass)); + g_return_if_fail (G_IS_PARAM_SPEC (pspec)); + if (pspec->flags & G_PARAM_WRITABLE) + g_return_if_fail (aclass->set_cell_property != NULL); + if (pspec->flags & G_PARAM_READABLE) + g_return_if_fail (aclass->get_cell_property != NULL); + g_return_if_fail (property_id > 0); + g_return_if_fail (PARAM_SPEC_PARAM_ID (pspec) == 0); /* paranoid */ + g_return_if_fail ((pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY)) == 0); + + if (g_param_spec_pool_lookup (cell_property_pool, pspec->name, G_OBJECT_CLASS_TYPE (aclass), TRUE)) + { + g_warning (G_STRLOC ": class `%s' already contains a cell property named `%s'", + G_OBJECT_CLASS_NAME (aclass), pspec->name); + return; + } + g_param_spec_ref (pspec); + g_param_spec_sink (pspec); + PARAM_SPEC_SET_PARAM_ID (pspec, property_id); + g_param_spec_pool_insert (cell_property_pool, pspec, G_OBJECT_CLASS_TYPE (aclass)); +} + +/** + * gtk_cell_area_class_find_cell_property: + * @aclass: a #GtkCellAreaClass + * @property_name: the name of the child property to find + * + * Finds a cell property of a cell area class by name. + * + * Return value: (allow-none): the #GParamSpec of the child property or %NULL if @aclass has no + * child property with that name. + * + * Since: 3.0 + */ +GParamSpec* +gtk_cell_area_class_find_cell_property (GtkCellAreaClass *aclass, + const gchar *property_name) +{ + g_return_val_if_fail (GTK_IS_CELL_AREA_CLASS (aclass), NULL); + g_return_val_if_fail (property_name != NULL, NULL); + + return g_param_spec_pool_lookup (cell_property_pool, + property_name, + G_OBJECT_CLASS_TYPE (aclass), + TRUE); +} + +/** + * gtk_cell_area_class_list_cell_properties: + * @aclass: a #GtkCellAreaClass + * @n_properties: location to return the number of cell properties found + * + * Returns all cell properties of a cell area class. + * + * Return value: a newly allocated %NULL-terminated array of #GParamSpec*. + * The array must be freed with g_free(). + * + * Since: 3.0 + */ +GParamSpec** +gtk_cell_area_class_list_cell_properties (GtkCellAreaClass *aclass, + guint *n_properties) +{ + GParamSpec **pspecs; + guint n; + + g_return_val_if_fail (GTK_IS_CELL_AREA_CLASS (aclass), NULL); + + pspecs = g_param_spec_pool_list (cell_property_pool, + G_OBJECT_CLASS_TYPE (aclass), + &n); + if (n_properties) + *n_properties = n; + + return pspecs; +} + +/** + * gtk_cell_area_add_with_properties: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer to be placed inside @area + * @first_prop_name: the name of the first cell property to set + * @Varargs: a %NULL-terminated list of property names and values, starting + * with @first_prop_name + * + * Adds @renderer to @area, setting cell properties at the same time. + * See gtk_cell_area_add() and gtk_cell_area_cell_set() for more details. + * + * Since: 3.0 + */ +void +gtk_cell_area_add_with_properties (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) +{ + GtkCellAreaClass *class; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->add) + { + va_list var_args; + + class->add (area, renderer); + + va_start (var_args, first_prop_name); + gtk_cell_area_cell_set_valist (area, renderer, first_prop_name, var_args); + va_end (var_args); + } + else + g_warning ("GtkCellAreaClass::add not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); +} + +/** + * gtk_cell_area_cell_set: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer which is a cell inside @area + * @first_prop_name: the name of the first cell property to set + * @Varargs: a %NULL-terminated list of property names and values, starting + * with @first_prop_name + * + * Sets one or more cell properties for @cell in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_set (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) +{ + va_list var_args; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + va_start (var_args, first_prop_name); + gtk_cell_area_cell_set_valist (area, renderer, first_prop_name, var_args); + va_end (var_args); +} + +/** + * gtk_cell_area_cell_get: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer which is inside @area + * @first_prop_name: the name of the first cell property to get + * @Varargs: return location for the first cell property, followed + * optionally by more name/return location pairs, followed by %NULL + * + * Gets the values of one or more cell properties for @renderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_get (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) +{ + va_list var_args; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + va_start (var_args, first_prop_name); + gtk_cell_area_cell_get_valist (area, renderer, first_prop_name, var_args); + va_end (var_args); +} + +static inline void +area_get_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + GParamSpec *pspec, + GValue *value) +{ + GtkCellAreaClass *class = g_type_class_peek (pspec->owner_type); + + class->get_cell_property (area, renderer, PARAM_SPEC_PARAM_ID (pspec), value, pspec); +} + +static inline void +area_set_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + GParamSpec *pspec, + const GValue *value) +{ + GValue tmp_value = { 0, }; + GtkCellAreaClass *class = g_type_class_peek (pspec->owner_type); + + /* provide a copy to work from, convert (if necessary) and validate */ + g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + if (!g_value_transform (value, &tmp_value)) + g_warning ("unable to set cell property `%s' of type `%s' from value of type `%s'", + pspec->name, + g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), + G_VALUE_TYPE_NAME (value)); + else if (g_param_value_validate (pspec, &tmp_value) && !(pspec->flags & G_PARAM_LAX_VALIDATION)) + { + gchar *contents = g_strdup_value_contents (value); + + g_warning ("value \"%s\" of type `%s' is invalid for property `%s' of type `%s'", + contents, + G_VALUE_TYPE_NAME (value), + pspec->name, + g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec))); + g_free (contents); + } + else + { + class->set_cell_property (area, renderer, PARAM_SPEC_PARAM_ID (pspec), &tmp_value, pspec); + } + g_value_unset (&tmp_value); +} + +/** + * gtk_cell_area_cell_set_valist: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer which inside @area + * @first_property_name: the name of the first cell property to set + * @var_args: a %NULL-terminated list of property names and values, starting + * with @first_prop_name + * + * Sets one or more cell properties for @renderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_set_valist (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_property_name, + va_list var_args) +{ + const gchar *name; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + name = first_property_name; + while (name) + { + GValue value = { 0, }; + gchar *error = NULL; + GParamSpec *pspec = + g_param_spec_pool_lookup (cell_property_pool, name, + G_OBJECT_TYPE (area), TRUE); + if (!pspec) + { + g_warning ("%s: cell area class `%s' has no cell property named `%s'", + G_STRLOC, G_OBJECT_TYPE_NAME (area), name); + break; + } + if (!(pspec->flags & G_PARAM_WRITABLE)) + { + g_warning ("%s: cell property `%s' of cell area class `%s' is not writable", + G_STRLOC, pspec->name, G_OBJECT_TYPE_NAME (area)); + break; + } + + g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + G_VALUE_COLLECT (&value, var_args, 0, &error); + if (error) + { + g_warning ("%s: %s", G_STRLOC, error); + g_free (error); + + /* we purposely leak the value here, it might not be + * in a sane state if an error condition occoured + */ + break; + } + area_set_cell_property (area, renderer, pspec, &value); + g_value_unset (&value); + name = va_arg (var_args, gchar*); + } +} + +/** + * gtk_cell_area_cell_get_valist: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer inside @area + * @first_property_name: the name of the first property to get + * @var_args: return location for the first property, followed + * optionally by more name/return location pairs, followed by %NULL + * + * Gets the values of one or more cell properties for @renderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_get_valist (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_property_name, + va_list var_args) +{ + const gchar *name; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + name = first_property_name; + while (name) + { + GValue value = { 0, }; + GParamSpec *pspec; + gchar *error; + + pspec = g_param_spec_pool_lookup (cell_property_pool, name, + G_OBJECT_TYPE (area), TRUE); + if (!pspec) + { + g_warning ("%s: cell area class `%s' has no cell property named `%s'", + G_STRLOC, G_OBJECT_TYPE_NAME (area), name); + break; + } + if (!(pspec->flags & G_PARAM_READABLE)) + { + g_warning ("%s: cell property `%s' of cell area class `%s' is not readable", + G_STRLOC, pspec->name, G_OBJECT_TYPE_NAME (area)); + break; + } + + g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + area_get_cell_property (area, renderer, pspec, &value); + G_VALUE_LCOPY (&value, var_args, 0, &error); + if (error) + { + g_warning ("%s: %s", G_STRLOC, error); + g_free (error); + g_value_unset (&value); + break; + } + g_value_unset (&value); + name = va_arg (var_args, gchar*); + } +} + +/** + * gtk_cell_area_cell_set_property: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer inside @area + * @property_name: the name of the cell property to set + * @value: the value to set the cell property to + * + * Sets a cell property for @renderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_set_property (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *property_name, + const GValue *value) +{ + GParamSpec *pspec; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (property_name != NULL); + g_return_if_fail (G_IS_VALUE (value)); + + pspec = g_param_spec_pool_lookup (cell_property_pool, property_name, + G_OBJECT_TYPE (area), TRUE); + if (!pspec) + g_warning ("%s: cell area class `%s' has no cell property named `%s'", + G_STRLOC, G_OBJECT_TYPE_NAME (area), property_name); + else if (!(pspec->flags & G_PARAM_WRITABLE)) + g_warning ("%s: cell property `%s' of cell area class `%s' is not writable", + G_STRLOC, pspec->name, G_OBJECT_TYPE_NAME (area)); + else + { + area_set_cell_property (area, renderer, pspec, value); + } +} + +/** + * gtk_cell_area_cell_get_property: + * @area: a #GtkCellArea + * @renderer: a #GtkCellRenderer inside @area + * @property_name: the name of the property to get + * @value: a location to return the value + * + * Gets the value of a cell property for @renderer in @area. + * + * Since: 3.0 + */ +void +gtk_cell_area_cell_get_property (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *property_name, + GValue *value) +{ + GParamSpec *pspec; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (property_name != NULL); + g_return_if_fail (G_IS_VALUE (value)); + + pspec = g_param_spec_pool_lookup (cell_property_pool, property_name, + G_OBJECT_TYPE (area), TRUE); + if (!pspec) + g_warning ("%s: cell area class `%s' has no cell property named `%s'", + G_STRLOC, G_OBJECT_TYPE_NAME (area), property_name); + else if (!(pspec->flags & G_PARAM_READABLE)) + g_warning ("%s: cell property `%s' of cell area class `%s' is not readable", + G_STRLOC, pspec->name, G_OBJECT_TYPE_NAME (area)); + else + { + GValue *prop_value, tmp_value = { 0, }; + + /* auto-conversion of the callers value type + */ + if (G_VALUE_TYPE (value) == G_PARAM_SPEC_VALUE_TYPE (pspec)) + { + g_value_reset (value); + prop_value = value; + } + else if (!g_value_type_transformable (G_PARAM_SPEC_VALUE_TYPE (pspec), G_VALUE_TYPE (value))) + { + g_warning ("can't retrieve cell property `%s' of type `%s' as value of type `%s'", + pspec->name, + g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), + G_VALUE_TYPE_NAME (value)); + return; + } + else + { + g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + prop_value = &tmp_value; + } + + area_get_cell_property (area, renderer, pspec, prop_value); + + if (prop_value != value) + { + g_value_transform (prop_value, value); + g_value_unset (&tmp_value); + } + } +} + +/************************************************************* + * API: Focus * + *************************************************************/ + +/** + * gtk_cell_area_is_activatable: + * @area: a #GtkCellArea + * + * Returns whether the area can do anything when activated, + * after applying new attributes to @area. + * + * Return value: whether @area can do anything when activated. + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_is_activatable (GtkCellArea *area) +{ + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + + return GTK_CELL_AREA_GET_CLASS (area)->is_activatable (area); +} + +/** + * gtk_cell_area_focus: + * @area: a #GtkCellArea + * @direction: the #GtkDirectionType + * + * This should be called by the @area's owning layout widget + * when focus is to be passed to @area, or moved within @area + * for a given @direction and row data. + * + * Implementing #GtkCellArea classes should implement this + * method to receive and navigate focus in it's own way particular + * to how it lays out cells. + * + * Return value: %TRUE if focus remains inside @area as a result of this call. + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_focus (GtkCellArea *area, + GtkDirectionType direction) +{ + GtkCellAreaClass *class; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + + class = GTK_CELL_AREA_GET_CLASS (area); + + if (class->focus) + return class->focus (area, direction); + + g_warning ("GtkCellAreaClass::focus not implemented for `%s'", + g_type_name (G_TYPE_FROM_INSTANCE (area))); + + return FALSE; +} + +/** + * gtk_cell_area_activate: + * @area: a #GtkCellArea + * @context: the #GtkCellAreaContext in context with the current row data + * @widget: the #GtkWidget that @area is rendering on + * @cell_area: the size and location of @area relative to @widget's allocation + * @flags: the #GtkCellRendererState flags for @area for this row of data. + * @edit_only: if %TRUE then only cell renderers that are %GTK_CELL_RENDERER_MODE_EDITABLE + * will be activated. + * + * Activates @area, usually by activating the currently focused + * cell, however some subclasses which embed widgets in the area + * can also activate a widget if it currently has the focus. + * + * Return value: Whether @area was successfully activated. + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_activate (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean edit_only) +{ + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + + return GTK_CELL_AREA_GET_CLASS (area)->activate (area, context, widget, cell_area, flags, edit_only); +} + + +/** + * gtk_cell_area_set_focus_cell: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to give focus to + * + * Explicitly sets the currently focused cell to @renderer. + * + * This is generally called by implementations of + * #GtkCellAreaClass.focus() or #GtkCellAreaClass.event(), + * however it can also be used to implement functions such + * as gtk_tree_view_set_cursor_on_cell(). + * + * Since: 3.0 + */ +void +gtk_cell_area_set_focus_cell (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (renderer == NULL || GTK_IS_CELL_RENDERER (renderer)); + + priv = area->priv; + + if (priv->focus_cell != renderer) + { + if (priv->focus_cell) + g_object_unref (priv->focus_cell); + + priv->focus_cell = renderer; + + if (priv->focus_cell) + g_object_ref (priv->focus_cell); + + g_object_notify (G_OBJECT (area), "focus-cell"); + } + + /* Signal that the current focus renderer for this path changed + * (it may be that the focus cell did not change, but the row + * may have changed so we need to signal it) */ + g_signal_emit (area, cell_area_signals[SIGNAL_FOCUS_CHANGED], 0, + priv->focus_cell, priv->current_path); + +} + +/** + * gtk_cell_area_get_focus_cell: + * @area: a #GtkCellArea + * + * Retrieves the currently focused cell for @area + * + * Return value: the currently focused cell in @area. + * + * Since: 3.0 + */ +GtkCellRenderer * +gtk_cell_area_get_focus_cell (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + priv = area->priv; + + return priv->focus_cell; +} + + +/************************************************************* + * API: Focus Siblings * + *************************************************************/ + +/** + * gtk_cell_area_add_focus_sibling: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer expected to have focus + * @sibling: the #GtkCellRenderer to add to @renderer's focus area + * + * Adds @sibling to @renderer's focusable area, focus will be drawn + * around @renderer and all of it's siblings if @renderer can + * focus for a given row. + * + * Events handled by focus siblings can also activate the given + * focusable @renderer. + * + * Since: 3.0 + */ +void +gtk_cell_area_add_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling) +{ + GtkCellAreaPrivate *priv; + GList *siblings; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (GTK_IS_CELL_RENDERER (sibling)); + g_return_if_fail (renderer != sibling); + g_return_if_fail (gtk_cell_area_has_renderer (area, renderer)); + g_return_if_fail (gtk_cell_area_has_renderer (area, sibling)); + g_return_if_fail (!gtk_cell_area_is_focus_sibling (area, renderer, sibling)); + + /* XXX We should also check that sibling is not in any other renderer's sibling + * list already, a renderer can be sibling of only one focusable renderer + * at a time. + */ + + priv = area->priv; + + siblings = g_hash_table_lookup (priv->focus_siblings, renderer); + + if (siblings) + siblings = g_list_append (siblings, sibling); + else + { + siblings = g_list_append (siblings, sibling); + g_hash_table_insert (priv->focus_siblings, renderer, siblings); + } +} + +/** + * gtk_cell_area_remove_focus_sibling: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer expected to have focus + * @sibling: the #GtkCellRenderer to remove from @renderer's focus area + * + * Removes @sibling from @renderer's focus sibling list + * (see gtk_cell_area_add_focus_sibling()). + * + * Since: 3.0 + */ +void +gtk_cell_area_remove_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling) +{ + GtkCellAreaPrivate *priv; + GList *siblings; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (GTK_IS_CELL_RENDERER (sibling)); + g_return_if_fail (gtk_cell_area_is_focus_sibling (area, renderer, sibling)); + + priv = area->priv; + + siblings = g_hash_table_lookup (priv->focus_siblings, renderer); + + siblings = g_list_copy (siblings); + siblings = g_list_remove (siblings, sibling); + + if (!siblings) + g_hash_table_remove (priv->focus_siblings, renderer); + else + g_hash_table_insert (priv->focus_siblings, renderer, siblings); +} + +/** + * gtk_cell_area_is_focus_sibling: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer expected to have focus + * @sibling: the #GtkCellRenderer to check against @renderer's sibling list + * + * Returns %TRUE if @sibling is one of @renderer's focus siblings + * (see gtk_cell_area_add_focus_sibling()). + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_is_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling) +{ + GtkCellAreaPrivate *priv; + GList *siblings, *l; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), FALSE); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (sibling), FALSE); + + priv = area->priv; + + siblings = g_hash_table_lookup (priv->focus_siblings, renderer); + + for (l = siblings; l; l = l->next) + { + GtkCellRenderer *a_sibling = l->data; + + if (a_sibling == sibling) + return TRUE; + } + + return FALSE; +} + +/** + * gtk_cell_area_get_focus_siblings: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer expected to have focus + * + * Gets the focus sibling cell renderers for @renderer. + * + * Return value: (element-type GtkCellRenderer) (transfer none): A #GList of #GtkCellRenderers. + * The returned list is internal and should not be freed. + * + * Since: 3.0 + */ +const GList * +gtk_cell_area_get_focus_siblings (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), NULL); + + priv = area->priv; + + return g_hash_table_lookup (priv->focus_siblings, renderer); +} + +/** + * gtk_cell_area_get_focus_from_sibling: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer + * + * Gets the #GtkCellRenderer which is expected to be focusable + * for which @renderer is, or may be a sibling. + * + * This is handy for #GtkCellArea subclasses when handling events, + * after determining the renderer at the event location it can + * then chose to activate the focus cell for which the event + * cell may have been a sibling. + * + * Return value: the #GtkCellRenderer for which @renderer is a sibling, or %NULL. + * + * Since: 3.0 + */ +GtkCellRenderer * +gtk_cell_area_get_focus_from_sibling (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellRenderer *ret_renderer = NULL; + GList *renderers, *l; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), NULL); + + renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area)); + + for (l = renderers; l; l = l->next) + { + GtkCellRenderer *a_renderer = l->data; + const GList *list; + + for (list = gtk_cell_area_get_focus_siblings (area, a_renderer); + list; list = list->next) + { + GtkCellRenderer *sibling_renderer = list->data; + + if (sibling_renderer == renderer) + { + ret_renderer = a_renderer; + break; + } + } + } + g_list_free (renderers); + + return ret_renderer; +} + +/************************************************************* + * API: Cell Activation/Editing * + *************************************************************/ +static void +gtk_cell_area_add_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + const GdkRectangle *cell_area) +{ + g_signal_emit (area, cell_area_signals[SIGNAL_ADD_EDITABLE], 0, + renderer, editable, cell_area, area->priv->current_path); +} + +static void +gtk_cell_area_remove_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable) +{ + g_signal_emit (area, cell_area_signals[SIGNAL_REMOVE_EDITABLE], 0, renderer, editable); +} + +static void +cell_area_remove_widget_cb (GtkCellEditable *editable, + GtkCellArea *area) +{ + GtkCellAreaPrivate *priv = area->priv; + + g_assert (priv->edit_widget == editable); + g_assert (priv->edited_cell != NULL); + + gtk_cell_area_remove_editable (area, priv->edited_cell, priv->edit_widget); + + /* Now that we're done with editing the widget and it can be removed, + * remove our references to the widget and disconnect handlers */ + gtk_cell_area_set_edited_cell (area, NULL); + gtk_cell_area_set_edit_widget (area, NULL); +} + +static void +gtk_cell_area_set_edited_cell (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (renderer == NULL || GTK_IS_CELL_RENDERER (renderer)); + + priv = area->priv; + + if (priv->edited_cell != renderer) + { + if (priv->edited_cell) + g_object_unref (priv->edited_cell); + + priv->edited_cell = renderer; + + if (priv->edited_cell) + g_object_ref (priv->edited_cell); + + g_object_notify (G_OBJECT (area), "edited-cell"); + } +} + +static void +gtk_cell_area_set_edit_widget (GtkCellArea *area, + GtkCellEditable *editable) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (editable == NULL || GTK_IS_CELL_EDITABLE (editable)); + + priv = area->priv; + + if (priv->edit_widget != editable) + { + if (priv->edit_widget) + { + g_signal_handler_disconnect (priv->edit_widget, priv->remove_widget_id); + + g_object_unref (priv->edit_widget); + } + + priv->edit_widget = editable; + + if (priv->edit_widget) + { + priv->remove_widget_id = + g_signal_connect (priv->edit_widget, "remove-widget", + G_CALLBACK (cell_area_remove_widget_cb), area); + + g_object_ref (priv->edit_widget); + } + + g_object_notify (G_OBJECT (area), "edit-widget"); + } +} + +/** + * gtk_cell_area_get_edited_cell: + * @area: a #GtkCellArea + * + * Gets the #GtkCellRenderer in @area that is currently + * being edited. + * + * Return value: The currently edited #GtkCellRenderer + * + * Since: 3.0 + */ +GtkCellRenderer * +gtk_cell_area_get_edited_cell (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + priv = area->priv; + + return priv->edited_cell; +} + +/** + * gtk_cell_area_get_edit_widget: + * @area: a #GtkCellArea + * + * Gets the #GtkCellEditable widget currently used + * to edit the currently edited cell. + * + * Return value: The currently active #GtkCellEditable widget + * + * Since: 3.0 + */ +GtkCellEditable * +gtk_cell_area_get_edit_widget (GtkCellArea *area) +{ + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + + priv = area->priv; + + return priv->edit_widget; +} + +/** + * gtk_cell_area_activate_cell: + * @area: a #GtkCellArea + * @widget: the #GtkWidget that @area is rendering onto + * @renderer: the #GtkCellRenderer in @area to activate + * @event: the #GdkEvent for which cell activation should occur + * @cell_area: the #GdkRectangle in @widget relative coordinates + * of @renderer for the current row. + * @flags: the #GtkCellRendererState for @renderer + * + * This is used by #GtkCellArea subclasses when handling events + * to activate cells, the base #GtkCellArea class activates cells + * for keyboard events for free in it's own GtkCellArea->activate() + * implementation. + * + * Return value: whether cell activation was successful + * + * Since: 3.0 + */ +gboolean +gtk_cell_area_activate_cell (GtkCellArea *area, + GtkWidget *widget, + GtkCellRenderer *renderer, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags) +{ + GtkCellRendererMode mode; + GtkCellAreaPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA (area), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), FALSE); + g_return_val_if_fail (cell_area != NULL, FALSE); + + priv = area->priv; + + if (!gtk_cell_renderer_get_sensitive (renderer)) + return FALSE; + + g_object_get (renderer, "mode", &mode, NULL); + + if (mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) + { + if (gtk_cell_renderer_activate (renderer, + event, widget, + priv->current_path, + cell_area, + cell_area, + flags)) + return TRUE; + } + else if (mode == GTK_CELL_RENDERER_MODE_EDITABLE) + { + GtkCellEditable *editable_widget; + GdkRectangle inner_area; + + gtk_cell_area_inner_cell_area (area, widget, cell_area, &inner_area); + + editable_widget = + gtk_cell_renderer_start_editing (renderer, + event, widget, + priv->current_path, + &inner_area, + &inner_area, + flags); + + if (editable_widget != NULL) + { + g_return_val_if_fail (GTK_IS_CELL_EDITABLE (editable_widget), FALSE); + + gtk_cell_area_set_edited_cell (area, renderer); + gtk_cell_area_set_edit_widget (area, editable_widget); + + /* Signal that editing started so that callers can get + * a handle on the editable_widget */ + gtk_cell_area_add_editable (area, priv->focus_cell, editable_widget, cell_area); + + /* If the signal was successfully handled start the editing */ + if (gtk_widget_get_parent (GTK_WIDGET (editable_widget))) + { + gtk_cell_editable_start_editing (editable_widget, NULL); + gtk_widget_grab_focus (GTK_WIDGET (editable_widget)); + } + else + { + /* Otherwise clear the editing state and fire a warning */ + gtk_cell_area_set_edited_cell (area, NULL); + gtk_cell_area_set_edit_widget (area, NULL); + + g_warning ("GtkCellArea::add-editable fired in the dark, no cell editing was started."); + } + + return TRUE; + } + } + + return FALSE; +} + +/** + * gtk_cell_area_stop_editing: + * @area: a #GtkCellArea + * @canceled: whether editing was canceled. + * + * Explicitly stops the editing of the currently + * edited cell (see gtk_cell_area_get_edited_cell()). + * + * If @canceled is %TRUE, the cell renderer will emit + * the ::editing-canceled signal. + * + * Since: 3.0 + */ +void +gtk_cell_area_stop_editing (GtkCellArea *area, + gboolean canceled) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + + priv = area->priv; + + if (priv->edited_cell) + { + GtkCellEditable *edit_widget = g_object_ref (priv->edit_widget); + GtkCellRenderer *edit_cell = g_object_ref (priv->edited_cell); + + /* Stop editing of the cell renderer */ + gtk_cell_renderer_stop_editing (priv->edited_cell, canceled); + + /* Remove any references to the editable widget */ + gtk_cell_area_set_edited_cell (area, NULL); + gtk_cell_area_set_edit_widget (area, NULL); + + /* Send the remove-widget signal explicitly (this is done after setting + * the edit cell/widget NULL to avoid feedback) + */ + gtk_cell_area_remove_editable (area, edit_cell, edit_widget); + g_object_unref (edit_cell); + g_object_unref (edit_widget); + } +} + +/************************************************************* + * API: Convenience for area implementations * + *************************************************************/ + +/** + * gtk_cell_area_inner_cell_area: + * @area: a #GtkCellArea + * @widget: the #GtkWidget that @area is rendering onto + * @cell_area: the @widget relative coordinates where one of @area's cells + * is to be placed + * @inner_area: (out): the return location for the inner cell area + * + * This is a convenience function for #GtkCellArea implementations + * to get the inner area where a given #GtkCellRenderer will be + * rendered. It removes any padding previously added by gtk_cell_area_request_renderer(). + * + * Since: 3.0 + */ +void +gtk_cell_area_inner_cell_area (GtkCellArea *area, + GtkWidget *widget, + const GdkRectangle *cell_area, + GdkRectangle *inner_area) +{ + gint focus_line_width; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (cell_area != NULL); + g_return_if_fail (inner_area != NULL); + + gtk_widget_style_get (widget, "focus-line-width", &focus_line_width, NULL); + + *inner_area = *cell_area; + + inner_area->x += focus_line_width; + inner_area->width -= focus_line_width * 2; + inner_area->y += focus_line_width; + inner_area->height -= focus_line_width * 2; +} + +/** + * gtk_cell_area_request_renderer: + * @area: a #GtkCellArea + * @renderer: the #GtkCellRenderer to request size for + * @orientation: the #GtkOrientation in which to request size + * @widget: the #GtkWidget that @area is rendering onto + * @for_size: the allocation contextual size to request for, or -1 if + * the base request for the orientation is to be returned. + * @minimum_size: (out) (allow-none): location to store the minimum size, or %NULL + * @natural_size: (out) (allow-none): location to store the natural size, or %NULL + * + * This is a convenience function for #GtkCellArea implementations + * to request size for cell renderers. It's important to use this + * function to request size and then use gtk_cell_area_inner_cell_area() + * at render and event time since this function will add padding + * around the cell for focus painting. + * + * Since: 3.0 + */ +void +gtk_cell_area_request_renderer (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkOrientation orientation, + GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellAreaPrivate *priv; + gint focus_line_width; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (minimum_size != NULL); + g_return_if_fail (natural_size != NULL); + + priv = area->priv; + + gtk_widget_style_get (widget, "focus-line-width", &focus_line_width, NULL); + + focus_line_width *= 2; + + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + if (for_size < 0) + gtk_cell_renderer_get_preferred_width (renderer, widget, minimum_size, natural_size); + else + { + for_size = MAX (0, for_size - focus_line_width); + + gtk_cell_renderer_get_preferred_width_for_height (renderer, widget, for_size, + minimum_size, natural_size); + } + } + else /* GTK_ORIENTATION_VERTICAL */ + { + if (for_size < 0) + gtk_cell_renderer_get_preferred_height (renderer, widget, minimum_size, natural_size); + else + { + for_size = MAX (0, for_size - focus_line_width); + + gtk_cell_renderer_get_preferred_height_for_width (renderer, widget, for_size, + minimum_size, natural_size); + } + } + + *minimum_size += focus_line_width; + *natural_size += focus_line_width; +} + +void +_gtk_cell_area_set_cell_data_func_with_proxy (GtkCellArea *area, + GtkCellRenderer *cell, + GFunc func, + gpointer func_data, + GDestroyNotify destroy, + gpointer proxy) +{ + GtkCellAreaPrivate *priv; + CellInfo *info; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); + + priv = area->priv; + + info = g_hash_table_lookup (priv->cell_info, cell); + + /* Note we do not take a reference to the proxy, the proxy is a GtkCellLayout + * that is forwarding it's implementation to a delegate GtkCellArea therefore + * it's life-cycle is longer than the area's life cycle. + */ + if (info) + { + if (info->destroy && info->data) + info->destroy (info->data); + + if (func) + { + info->func = (GtkCellLayoutDataFunc)func; + info->data = func_data; + info->destroy = destroy; + info->proxy = proxy; + } + else + { + info->func = NULL; + info->data = NULL; + info->destroy = NULL; + info->proxy = NULL; + } + } + else + { + info = cell_info_new ((GtkCellLayoutDataFunc)func, func_data, destroy); + info->proxy = proxy; + + g_hash_table_insert (priv->cell_info, cell, info); + } +} diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h new file mode 100644 index 0000000000..2b0f707b9b --- /dev/null +++ b/gtk/gtkcellarea.h @@ -0,0 +1,488 @@ +/* gtkcellarea.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_CELL_AREA_H__ +#define __GTK_CELL_AREA_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_CELL_AREA (gtk_cell_area_get_type ()) +#define GTK_CELL_AREA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA, GtkCellArea)) +#define GTK_CELL_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA, GtkCellAreaClass)) +#define GTK_IS_CELL_AREA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA)) +#define GTK_IS_CELL_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA)) +#define GTK_CELL_AREA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA, GtkCellAreaClass)) + +typedef struct _GtkCellArea GtkCellArea; +typedef struct _GtkCellAreaClass GtkCellAreaClass; +typedef struct _GtkCellAreaPrivate GtkCellAreaPrivate; +typedef struct _GtkCellAreaContext GtkCellAreaContext; + +/** + * GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID: + * @object: the #GObject on which set_cell_property() or get_get_property() + * was called + * @property_id: the numeric id of the property + * @pspec: the #GParamSpec of the property + * + * This macro should be used to emit a standard warning about unexpected + * properties in set_cell_property() and get_cell_property() implementations. + */ +#define GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID(object, property_id, pspec) \ + G_OBJECT_WARN_INVALID_PSPEC ((object), "cell property id", (property_id), (pspec)) + +/** + * GtkCellCallback: + * @renderer: the cell renderer to operate on + * @data: (closure): user-supplied data + * + * The type of the callback functions used for iterating over + * the cell renderers of a #GtkCellArea, see gtk_cell_area_foreach(). + * + * Return value: %TRUE to stop iterating over cells. + */ +typedef gboolean (*GtkCellCallback) (GtkCellRenderer *renderer, + gpointer data); + +/** + * GtkCellAllocCallback: + * @renderer: the cell renderer to operate on + * @cell_area: the area allocated to @renderer inside the rectangle + * provided to gtk_cell_area_foreach_alloc(). + * @cell_background: the background area for @renderer inside the + * background area provided to gtk_cell_area_foreach_alloc(). + * @data: (closure): user-supplied data + * + * The type of the callback functions used for iterating over the + * cell renderers and their allocated areas inside a #GtkCellArea, + * see gtk_cell_area_foreach_alloc(). + * + * Return value: %TRUE to stop iterating over cells. + */ +typedef gboolean (*GtkCellAllocCallback) (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + gpointer data); + + +struct _GtkCellArea +{ + /*< private >*/ + GInitiallyUnowned parent_instance; + + GtkCellAreaPrivate *priv; +}; + + +/** + * GtkCellAreaClass: + * @add: adds a #GtkCellRenderer to the area. + * @remove: removes a #GtkCellRenderer from the area. + * @foreach: calls the #GtkCellCallback function on every #GtkCellRenderer in + * the area with the provided user data until the callback returns %TRUE. + * @foreach_alloc: Calls the #GtkCellAllocCallback function on every + * #GtkCellRenderer in the area with the allocated area for the cell + * and the provided user data until the callback returns %TRUE. + * @event: Handle an event in the area, this is generally used to activate + * a cell at the event location for button events but can also be used + * to generically pass events to #GtkWidgets drawn onto the area. + * @render: Actually render the area's cells to the specified rectangle, + * @background_area should be correctly distributed to the cells + * corresponding background areas. + * @apply_attributes: Apply the cell attributes to the cells. This is + * implemented as a signal and generally #GtkCellArea subclasses don't + * need to implement it since it is handled by the base class. + * @create_context: Creates and returns a class specific #GtkCellAreaContext + * to store cell alignment and allocation details for a said #GtkCellArea + * class. + * @copy_context: Creates a new #GtkCellAreaContext in the same state as + * the passed @context with any cell alignment data and allocations intact. + * @get_request_mode: This allows an area to tell its layouting widget whether + * it prefers to be allocated in %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH or + * %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT mode. + * @get_preferred_width: Calculates the minimum and natural width of the + * areas cells with the current attributes applied while considering + * the particular layouting details of the said #GtkCellArea. While + * requests are performed over a series of rows, alignments and overall + * minimum and natural sizes should be stored in the corresponding + * #GtkCellAreaContext. + * @get_preferred_height_for_width: Calculates the minimum and natural height + * for the area if the passed @context would be allocated the given width. + * When implementing this virtual method it is safe to assume that @context + * has already stored the aligned cell widths for every #GtkTreeModel row + * that @context will be allocated for since this information was stored + * at #GtkCellAreaClass.get_preferred_width() time. This virtual method + * should also store any necessary alignments of cell heights for the + * case that the context is allocated a height. + * @get_preferred_height: Calculates the minimum and natural height of the + * areas cells with the current attributes applied. Essentially this is + * the same as #GtkCellAreaClass.get_preferred_width() only for areas + * that are being requested as %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT. + * @get_preferred_width_for_height: Calculates the minimum and natural width + * for the area if the passed @context would be allocated the given + * height. The same as #GtkCellAreaClass.get_preferred_height_for_width() + * only for handling requests in the %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT + * mode. + * @set_cell_property: This should be implemented to handle changes in child + * cell properties for a given #GtkCellRenderer that were previously + * installed on the #GtkCellAreaClass with gtk_cell_area_class_install_cell_property(). + * @get_cell_property: This should be implemented to report the values of + * child cell properties for a given child #GtkCellRenderer. + * @focus: This virtual method should be implemented to navigate focus from + * cell to cell inside the #GtkCellArea. The #GtkCellArea should move + * focus from cell to cell inside the area and return %FALSE if focus + * logically leaves the area with the following exceptions: When the + * area contains no activatable cells, the entire area recieves focus. + * Focus should not be given to cells that are actually "focus siblings" + * of other sibling cells (see gtk_cell_area_get_focus_from_sibling()). + * Focus is set by calling gtk_cell_area_set_focus_cell(). + * @is_activatable: Returns whether the #GtkCellArea can respond to + * #GtkCellAreaClass.activate(), usually this does not need to be + * implemented since the base class takes care of this however it can + * be enhanced if the #GtkCellArea subclass can handle activation in + * other ways than activating its #GtkCellRenderers. + * @activate: This is called when the layouting widget rendering the + * #GtkCellArea activates the focus cell (see gtk_cell_area_get_focus_cell()). + */ +struct _GtkCellAreaClass +{ + /*< private >*/ + GInitiallyUnownedClass parent_class; + + /*< public >*/ + + /* Basic methods */ + void (* add) (GtkCellArea *area, + GtkCellRenderer *renderer); + void (* remove) (GtkCellArea *area, + GtkCellRenderer *renderer); + void (* foreach) (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data); + void (* foreach_alloc) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + const GdkRectangle *background_area, + GtkCellAllocCallback callback, + gpointer callback_data); + gint (* event) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); + void (* render) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean paint_focus); + void (* apply_attributes) (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded); + + /* Geometry */ + GtkCellAreaContext *(* create_context) (GtkCellArea *area); + GtkCellAreaContext *(* copy_context) (GtkCellArea *area, + GtkCellAreaContext *context); + GtkSizeRequestMode (* get_request_mode) (GtkCellArea *area); + void (* get_preferred_width) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width); + void (* get_preferred_height_for_width) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); + void (* get_preferred_height) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height); + void (* get_preferred_width_for_height) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); + + /* Cell Properties */ + void (* set_cell_property) (GtkCellArea *area, + GtkCellRenderer *renderer, + guint property_id, + const GValue *value, + GParamSpec *pspec); + void (* get_cell_property) (GtkCellArea *area, + GtkCellRenderer *renderer, + guint property_id, + GValue *value, + GParamSpec *pspec); + + /* Focus */ + gboolean (* focus) (GtkCellArea *area, + GtkDirectionType direction); + gboolean (* is_activatable) (GtkCellArea *area); + gboolean (* activate) (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean edit_only); + + /*< private >*/ + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); + void (*_gtk_reserved7) (void); + void (*_gtk_reserved8) (void); +}; + +GType gtk_cell_area_get_type (void) G_GNUC_CONST; + +/* Basic methods */ +void gtk_cell_area_add (GtkCellArea *area, + GtkCellRenderer *renderer); +void gtk_cell_area_remove (GtkCellArea *area, + GtkCellRenderer *renderer); +gboolean gtk_cell_area_has_renderer (GtkCellArea *area, + GtkCellRenderer *renderer); +void gtk_cell_area_foreach (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data); +void gtk_cell_area_foreach_alloc (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + const GdkRectangle *background_area, + GtkCellAllocCallback callback, + gpointer callback_data); +gint gtk_cell_area_event (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); +void gtk_cell_area_render (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + cairo_t *cr, + const GdkRectangle *background_area, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean paint_focus); +void gtk_cell_area_set_style_detail (GtkCellArea *area, + const gchar *detail); +G_CONST_RETURN gchar *gtk_cell_area_get_style_detail (GtkCellArea *area); + + +void gtk_cell_area_get_cell_allocation (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + GdkRectangle *allocation); +GtkCellRenderer *gtk_cell_area_get_cell_at_position (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + gint x, + gint y, + GdkRectangle *alloc_area); + +/* Geometry */ +GtkCellAreaContext *gtk_cell_area_create_context (GtkCellArea *area); +GtkCellAreaContext *gtk_cell_area_copy_context (GtkCellArea *area, + GtkCellAreaContext *context); +GtkSizeRequestMode gtk_cell_area_get_request_mode (GtkCellArea *area); +void gtk_cell_area_get_preferred_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +void gtk_cell_area_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_get_preferred_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); +G_CONST_RETURN gchar *gtk_cell_area_get_current_path_string (GtkCellArea *area); + + +/* Attributes */ +void gtk_cell_area_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded); +void gtk_cell_area_attribute_connect (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *attribute, + gint column); +void gtk_cell_area_attribute_disconnect (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *attribute); + +/* Cell Properties */ +void gtk_cell_area_class_install_cell_property (GtkCellAreaClass *aclass, + guint property_id, + GParamSpec *pspec); +GParamSpec* gtk_cell_area_class_find_cell_property (GtkCellAreaClass *aclass, + const gchar *property_name); +GParamSpec** gtk_cell_area_class_list_cell_properties (GtkCellAreaClass *aclass, + guint *n_properties); +void gtk_cell_area_add_with_properties (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) G_GNUC_NULL_TERMINATED; +void gtk_cell_area_cell_set (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) G_GNUC_NULL_TERMINATED; +void gtk_cell_area_cell_get (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_prop_name, + ...) G_GNUC_NULL_TERMINATED; +void gtk_cell_area_cell_set_valist (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_property_name, + va_list var_args); +void gtk_cell_area_cell_get_valist (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *first_property_name, + va_list var_args); +void gtk_cell_area_cell_set_property (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *property_name, + const GValue *value); +void gtk_cell_area_cell_get_property (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *property_name, + GValue *value); + +/* Focus */ +gboolean gtk_cell_area_is_activatable (GtkCellArea *area); +gboolean gtk_cell_area_activate (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + GtkCellRendererState flags, + gboolean edit_only); +gboolean gtk_cell_area_focus (GtkCellArea *area, + GtkDirectionType direction); +void gtk_cell_area_set_focus_cell (GtkCellArea *area, + GtkCellRenderer *renderer); +GtkCellRenderer *gtk_cell_area_get_focus_cell (GtkCellArea *area); + + +/* Focus siblings */ +void gtk_cell_area_add_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling); +void gtk_cell_area_remove_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling); +gboolean gtk_cell_area_is_focus_sibling (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellRenderer *sibling); +G_CONST_RETURN GList *gtk_cell_area_get_focus_siblings (GtkCellArea *area, + GtkCellRenderer *renderer); +GtkCellRenderer *gtk_cell_area_get_focus_from_sibling (GtkCellArea *area, + GtkCellRenderer *renderer); + +/* Cell Activation/Editing */ +GtkCellRenderer *gtk_cell_area_get_edited_cell (GtkCellArea *area); +GtkCellEditable *gtk_cell_area_get_edit_widget (GtkCellArea *area); +gboolean gtk_cell_area_activate_cell (GtkCellArea *area, + GtkWidget *widget, + GtkCellRenderer *renderer, + GdkEvent *event, + const GdkRectangle *cell_area, + GtkCellRendererState flags); +void gtk_cell_area_stop_editing (GtkCellArea *area, + gboolean canceled); + +/* Functions for area implementations */ + +/* Distinguish the inner cell area from the whole requested area including margins */ +void gtk_cell_area_inner_cell_area (GtkCellArea *area, + GtkWidget *widget, + const GdkRectangle *cell_area, + GdkRectangle *inner_area); + +/* Request the size of a cell while respecting the cell margins (requests are margin inclusive) */ +void gtk_cell_area_request_renderer (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkOrientation orientation, + GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size); + +/* For api stability, this is called from gtkcelllayout.c in order to ensure the correct + * object is passed to the user function in gtk_cell_layout_set_cell_data_func. + * + * This private api takes gpointer & GFunc arguments to circumvent circular header file + * dependancies. + */ +void _gtk_cell_area_set_cell_data_func_with_proxy (GtkCellArea *area, + GtkCellRenderer *cell, + GFunc func, + gpointer func_data, + GDestroyNotify destroy, + gpointer proxy); + +G_END_DECLS + +#endif /* __GTK_CELL_AREA_H__ */ diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c new file mode 100644 index 0000000000..3779fba923 --- /dev/null +++ b/gtk/gtkcellareabox.c @@ -0,0 +1,2276 @@ +/* gtkcellareabox.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +/** + * SECTION:gtkcellareabox + * @Short_Description: A cell area that renders GtkCellRenderers + * into a row or a column + * @Title: GtkCellAreaBox + * + * The #GtkCellAreaBox renders cell renderers into a row or a column + * depending on its #GtkOrientation. + * + * GtkCellAreaBox uses a notion of packing. Packing + * refers to adding cell renderers with reference to a particular position + * in a #GtkCellAreaBox. There are two reference positions: the + * start and the end of the box. + * When the #GtkCellAreaBox is oriented in the %GTK_ORIENTATION_VERTICAL + * orientation, the start is defined as the top of the box and the end is + * defined as the bottom. In the %GTK_ORIENTATION_HORIZONTAL orientation + * start is defined as the left side and the end is defined as the right + * side. + * + * Alignments of #GtkCellRenderers rendered in adjacent rows can be + * configured by configuring the #GtkCellAreaBox:align child cell property + * with gtk_cell_area_cell_set_property() or by specifying the "align" + * argument to gtk_cell_area_box_pack_start() and gtk_cell_area_box_pack_end(). + */ + +#include "config.h" +#include "gtkintl.h" +#include "gtkorientable.h" +#include "gtkcelllayout.h" +#include "gtkcellareabox.h" +#include "gtkcellareaboxcontextprivate.h" +#include "gtktypebuiltins.h" +#include "gtkprivate.h" + + +/* GObjectClass */ +static void gtk_cell_area_box_finalize (GObject *object); +static void gtk_cell_area_box_dispose (GObject *object); +static void gtk_cell_area_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +/* GtkCellAreaClass */ +static void gtk_cell_area_box_add (GtkCellArea *area, + GtkCellRenderer *renderer); +static void gtk_cell_area_box_remove (GtkCellArea *area, + GtkCellRenderer *renderer); +static void gtk_cell_area_box_foreach (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data); +static void gtk_cell_area_box_foreach_alloc (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + const GdkRectangle *background_area, + GtkCellAllocCallback callback, + gpointer callback_data); +static void gtk_cell_area_box_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded); +static void gtk_cell_area_box_set_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_box_get_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static GtkCellAreaContext *gtk_cell_area_box_create_context (GtkCellArea *area); +static GtkCellAreaContext *gtk_cell_area_box_copy_context (GtkCellArea *area, + GtkCellAreaContext *context); +static GtkSizeRequestMode gtk_cell_area_box_get_request_mode (GtkCellArea *area); +static void gtk_cell_area_box_get_preferred_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width); +static void gtk_cell_area_box_get_preferred_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height); +static void gtk_cell_area_box_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height); +static void gtk_cell_area_box_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width); +static gboolean gtk_cell_area_box_focus (GtkCellArea *area, + GtkDirectionType direction); + +/* GtkCellLayoutIface */ +static void gtk_cell_area_box_cell_layout_init (GtkCellLayoutIface *iface); +static void gtk_cell_area_box_layout_pack_start (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand); +static void gtk_cell_area_box_layout_pack_end (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand); +static void gtk_cell_area_box_layout_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gint position); +static void gtk_cell_area_box_focus_changed (GtkCellArea *area, + GParamSpec *pspec, + GtkCellAreaBox *box); + + +/* CellInfo/CellGroup metadata handling and convenience functions */ +typedef struct { + GtkCellRenderer *renderer; + + guint expand : 1; /* Whether the cell expands */ + guint pack : 1; /* Whether it is packed from the start or end */ + guint align : 1; /* Whether to align its position with adjacent rows */ + guint fixed : 1; /* Whether to require the same size for all rows */ +} CellInfo; + +typedef struct { + GList *cells; + + guint id : 8; + guint n_cells : 8; + guint expand_cells : 8; + guint align : 1; + guint visible : 1; +} CellGroup; + +typedef struct { + GtkCellRenderer *renderer; + + gint position; + gint size; +} AllocatedCell; + +static CellInfo *cell_info_new (GtkCellRenderer *renderer, + GtkPackType pack, + gboolean expand, + gboolean align, + gboolean fixed); +static void cell_info_free (CellInfo *info); +static gint cell_info_find (CellInfo *info, + GtkCellRenderer *renderer); + +static AllocatedCell *allocated_cell_new (GtkCellRenderer *renderer, + gint position, + gint size); +static void allocated_cell_free (AllocatedCell *cell); +static GList *list_consecutive_cells (GtkCellAreaBox *box); +static gint count_expand_groups (GtkCellAreaBox *box); +static void context_weak_notify (GtkCellAreaBox *box, + GtkCellAreaBoxContext *dead_context); +static void reset_contexts (GtkCellAreaBox *box); +static void init_context_groups (GtkCellAreaBox *box); +static void init_context_group (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context); +static GSList *get_allocated_cells (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context, + GtkWidget *widget, + gint width, + gint height); + + +struct _GtkCellAreaBoxPrivate +{ + GtkOrientation orientation; + + /* We hold on to the previously focused cell when navigating + * up and down in a horizontal box (or left and right on a vertical one) + * this way we always re-enter the last focused cell. + */ + GtkCellRenderer *last_focus_cell; + gulong focus_cell_id; + + GList *cells; + GArray *groups; + + GSList *contexts; + + gint spacing; + + /* We hold on to the rtl state from a widget we are requested for + * so that we can navigate focus correctly + */ + gboolean rtl; +}; + +enum { + PROP_0, + PROP_ORIENTATION, + PROP_SPACING +}; + +enum { + CELL_PROP_0, + CELL_PROP_EXPAND, + CELL_PROP_ALIGN, + CELL_PROP_FIXED_SIZE, + CELL_PROP_PACK_TYPE +}; + +G_DEFINE_TYPE_WITH_CODE (GtkCellAreaBox, gtk_cell_area_box, GTK_TYPE_CELL_AREA, + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, + gtk_cell_area_box_cell_layout_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL)); + +#define OPPOSITE_ORIENTATION(orientation) \ + ((orientation) == GTK_ORIENTATION_HORIZONTAL ? \ + GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL) + +static void +gtk_cell_area_box_init (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv; + + box->priv = G_TYPE_INSTANCE_GET_PRIVATE (box, + GTK_TYPE_CELL_AREA_BOX, + GtkCellAreaBoxPrivate); + priv = box->priv; + + priv->orientation = GTK_ORIENTATION_HORIZONTAL; + priv->groups = g_array_new (FALSE, TRUE, sizeof (CellGroup)); + priv->cells = NULL; + priv->contexts = NULL; + priv->spacing = 0; + priv->rtl = FALSE; + + /* Watch whenever focus is given to a cell, even if it's not with keynav, + * this way we remember upon entry of the area where focus was last time + * around + */ + priv->focus_cell_id = g_signal_connect (box, "notify::focus-cell", + G_CALLBACK (gtk_cell_area_box_focus_changed), box); +} + +static void +gtk_cell_area_box_class_init (GtkCellAreaBoxClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkCellAreaClass *area_class = GTK_CELL_AREA_CLASS (class); + + /* GObjectClass */ + object_class->finalize = gtk_cell_area_box_finalize; + object_class->dispose = gtk_cell_area_box_dispose; + object_class->set_property = gtk_cell_area_box_set_property; + object_class->get_property = gtk_cell_area_box_get_property; + + /* GtkCellAreaClass */ + area_class->add = gtk_cell_area_box_add; + area_class->remove = gtk_cell_area_box_remove; + area_class->foreach = gtk_cell_area_box_foreach; + area_class->foreach_alloc = gtk_cell_area_box_foreach_alloc; + area_class->apply_attributes = gtk_cell_area_box_apply_attributes; + area_class->set_cell_property = gtk_cell_area_box_set_cell_property; + area_class->get_cell_property = gtk_cell_area_box_get_cell_property; + + area_class->create_context = gtk_cell_area_box_create_context; + area_class->copy_context = gtk_cell_area_box_copy_context; + area_class->get_request_mode = gtk_cell_area_box_get_request_mode; + area_class->get_preferred_width = gtk_cell_area_box_get_preferred_width; + area_class->get_preferred_height = gtk_cell_area_box_get_preferred_height; + area_class->get_preferred_height_for_width = gtk_cell_area_box_get_preferred_height_for_width; + area_class->get_preferred_width_for_height = gtk_cell_area_box_get_preferred_width_for_height; + + area_class->focus = gtk_cell_area_box_focus; + + /* Properties */ + g_object_class_override_property (object_class, PROP_ORIENTATION, "orientation"); + + /** + * GtkCellAreaBox:spacing: + * + * The amount of space to reserve between cells. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_SPACING, + g_param_spec_int ("spacing", + P_("Spacing"), + P_("Space which is inserted between cells"), + 0, + G_MAXINT, + 0, + GTK_PARAM_READWRITE)); + + /* Cell Properties */ + /** + * GtkCellAreaBox:expand: + * + * Whether the cell renderer should receive extra space + * when the area receives more than its natural size. + * + * Since: 3.0 + */ + gtk_cell_area_class_install_cell_property (area_class, + CELL_PROP_EXPAND, + g_param_spec_boolean + ("expand", + P_("Expand"), + P_("Whether the cell expands"), + FALSE, + GTK_PARAM_READWRITE)); + + /** + * GtkCellAreaBox:align: + * + * Whether the cell renderer should be aligned in adjacent rows. + * + * Since: 3.0 + */ + gtk_cell_area_class_install_cell_property (area_class, + CELL_PROP_ALIGN, + g_param_spec_boolean + ("align", + P_("Align"), + P_("Whether cell should align with adjacent rows"), + FALSE, + GTK_PARAM_READWRITE)); + + /** + * GtkCellAreaBox:fixed-size: + * + * Whether the cell renderer should require the same size + * for all rows for which it was requested. + * + * Since: 3.0 + */ + gtk_cell_area_class_install_cell_property (area_class, + CELL_PROP_FIXED_SIZE, + g_param_spec_boolean + ("fixed-size", + P_("Fixed Size"), + P_("Whether cells should be the same size in all rows"), + TRUE, + GTK_PARAM_READWRITE)); + + /** + * GtkCellAreaBox:pack-type: + * + * A GtkPackType indicating whether the cell renderer is packed + * with reference to the start or end of the area. + * + * Since: 3.0 + */ + gtk_cell_area_class_install_cell_property (area_class, + CELL_PROP_PACK_TYPE, + g_param_spec_enum + ("pack-type", + P_("Pack Type"), + P_("A GtkPackType indicating whether the cell is packed with " + "reference to the start or end of the cell area"), + GTK_TYPE_PACK_TYPE, GTK_PACK_START, + GTK_PARAM_READWRITE)); + + g_type_class_add_private (object_class, sizeof (GtkCellAreaBoxPrivate)); +} + + +/************************************************************* + * CellInfo/CellGroup basics and convenience functions * + *************************************************************/ +static CellInfo * +cell_info_new (GtkCellRenderer *renderer, + GtkPackType pack, + gboolean expand, + gboolean align, + gboolean fixed) +{ + CellInfo *info = g_slice_new (CellInfo); + + info->renderer = g_object_ref_sink (renderer); + info->pack = pack; + info->expand = expand; + info->align = align; + info->fixed = fixed; + + return info; +} + +static void +cell_info_free (CellInfo *info) +{ + g_object_unref (info->renderer); + + g_slice_free (CellInfo, info); +} + +static gint +cell_info_find (CellInfo *info, + GtkCellRenderer *renderer) +{ + return (info->renderer == renderer) ? 0 : -1; +} + +static AllocatedCell * +allocated_cell_new (GtkCellRenderer *renderer, + gint position, + gint size) +{ + AllocatedCell *cell = g_slice_new (AllocatedCell); + + cell->renderer = renderer; + cell->position = position; + cell->size = size; + + return cell; +} + +static void +allocated_cell_free (AllocatedCell *cell) +{ + g_slice_free (AllocatedCell, cell); +} + +static GList * +list_consecutive_cells (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GList *l, *consecutive_cells = NULL, *pack_end_cells = NULL; + CellInfo *info; + + /* List cells in consecutive order taking their + * PACK_START/PACK_END options into account + */ + for (l = priv->cells; l; l = l->next) + { + info = l->data; + + if (info->pack == GTK_PACK_START) + consecutive_cells = g_list_prepend (consecutive_cells, info); + } + + for (l = priv->cells; l; l = l->next) + { + info = l->data; + + if (info->pack == GTK_PACK_END) + pack_end_cells = g_list_prepend (pack_end_cells, info); + } + + consecutive_cells = g_list_reverse (consecutive_cells); + consecutive_cells = g_list_concat (consecutive_cells, pack_end_cells); + + return consecutive_cells; +} + +static void +cell_groups_clear (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + gint i; + + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + + g_list_free (group->cells); + } + + g_array_set_size (priv->groups, 0); +} + +static void +cell_groups_rebuild (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + CellGroup group = { 0, }; + CellGroup *group_ptr; + GList *cells, *l; + guint id = 0; + gboolean last_cell_fixed = FALSE; + + cell_groups_clear (box); + + if (!priv->cells) + return; + + cells = list_consecutive_cells (box); + + /* First group is implied */ + g_array_append_val (priv->groups, group); + group_ptr = &g_array_index (priv->groups, CellGroup, id); + + for (l = cells; l; l = l->next) + { + CellInfo *info = l->data; + + /* A new group starts with any aligned cell, or + * at the beginning and end of a fixed size cell. + * the first group is implied */ + if ((info->align || info->fixed || last_cell_fixed) && l != cells) + { + memset (&group, 0x0, sizeof (CellGroup)); + group.id = ++id; + + g_array_append_val (priv->groups, group); + group_ptr = &g_array_index (priv->groups, CellGroup, id); + } + + group_ptr->cells = g_list_prepend (group_ptr->cells, info); + group_ptr->n_cells++; + + /* Not every group is aligned, some are floating + * fixed size cells */ + if (info->align) + group_ptr->align = TRUE; + + /* A group expands if it contains any expand cells */ + if (info->expand) + group_ptr->expand_cells++; + + last_cell_fixed = info->fixed; + } + + g_list_free (cells); + + for (id = 0; id < priv->groups->len; id++) + { + group_ptr = &g_array_index (priv->groups, CellGroup, id); + + group_ptr->cells = g_list_reverse (group_ptr->cells); + } + + /* Contexts need to be updated with the new grouping information */ + init_context_groups (box); +} + +static gint +count_visible_cells (CellGroup *group, + gint *expand_cells) +{ + GList *l; + gint visible_cells = 0; + gint n_expand_cells = 0; + + for (l = group->cells; l; l = l->next) + { + CellInfo *info = l->data; + + if (gtk_cell_renderer_get_visible (info->renderer)) + { + visible_cells++; + + if (info->expand) + n_expand_cells++; + } + } + + if (expand_cells) + *expand_cells = n_expand_cells; + + return visible_cells; +} + +static gint +count_expand_groups (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + gint i; + gint expand_groups = 0; + + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + + if (group->expand_cells > 0) + expand_groups++; + } + + return expand_groups; +} + +static void +context_weak_notify (GtkCellAreaBox *box, + GtkCellAreaBoxContext *dead_context) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + + priv->contexts = g_slist_remove (priv->contexts, dead_context); +} + +static void +init_context_group (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + gint *expand_groups, *align_groups, i; + + expand_groups = g_new (gboolean, priv->groups->len); + align_groups = g_new (gboolean, priv->groups->len); + + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + + expand_groups[i] = (group->expand_cells > 0); + align_groups[i] = group->align; + } + + /* This call implies reseting the request info */ + gtk_cell_area_box_init_groups (context, priv->groups->len, expand_groups, align_groups); + g_free (expand_groups); + g_free (align_groups); +} + +static void +init_context_groups (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GSList *l; + + /* When the box's groups are reconstructed, + * contexts need to be reinitialized. + */ + for (l = priv->contexts; l; l = l->next) + { + GtkCellAreaBoxContext *context = l->data; + + init_context_group (box, context); + } +} + +static void +reset_contexts (GtkCellAreaBox *box) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GSList *l; + + /* When the box layout changes, contexts need to + * be reset and sizes for the box get requested again + */ + for (l = priv->contexts; l; l = l->next) + { + GtkCellAreaContext *context = l->data; + + gtk_cell_area_context_reset (context); + } +} + +/* Fall back on a completely unaligned dynamic allocation of cells + * when not allocated for the said orientation, alignment of cells + * is not done when each area gets a different size in the orientation + * of the box. + */ +static GSList * +allocate_cells_manually (GtkCellAreaBox *box, + GtkWidget *widget, + gint width, + gint height) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GList *cells, *l; + GSList *allocated_cells = NULL; + GtkRequestedSize *sizes; + gint i; + gint nvisible = 0, nexpand = 0, group_expand; + gint avail_size, extra_size, extra_extra, full_size; + gint position = 0, for_size; + gboolean rtl; + + if (!priv->cells) + return NULL; + + /* For vertical oriented boxes, we just let the cell renderers + * realign themselves for rtl + */ + rtl = (priv->orientation == GTK_ORIENTATION_HORIZONTAL && + gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); + + cells = list_consecutive_cells (box); + + /* Count the visible and expand cells */ + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + + nvisible += count_visible_cells (group, &group_expand); + nexpand += group_expand; + } + + if (nvisible <= 0) + { + g_list_free (cells); + return NULL; + } + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + full_size = avail_size = width; + for_size = height; + } + else + { + full_size = avail_size = height; + for_size = width; + } + + /* Go ahead and collect the requests on the fly */ + sizes = g_new0 (GtkRequestedSize, nvisible); + for (l = cells, i = 0; l; l = l->next) + { + CellInfo *info = l->data; + + if (!gtk_cell_renderer_get_visible (info->renderer)) + continue; + + gtk_cell_area_request_renderer (GTK_CELL_AREA (box), info->renderer, + priv->orientation, + widget, for_size, + &sizes[i].minimum_size, + &sizes[i].natural_size); + + avail_size -= sizes[i].minimum_size; + + sizes[i].data = info; + + i++; + } + + /* Naturally distribute the allocation */ + avail_size -= (nvisible - 1) * priv->spacing; + if (avail_size > 0) + avail_size = gtk_distribute_natural_allocation (avail_size, nvisible, sizes); + else + avail_size = 0; + + /* Calculate/distribute expand for cells */ + if (nexpand > 0) + { + extra_size = avail_size / nexpand; + extra_extra = avail_size % nexpand; + } + else + extra_size = extra_extra = 0; + + /* Create the allocated cells */ + for (i = 0; i < nvisible; i++) + { + CellInfo *info = sizes[i].data; + AllocatedCell *cell; + + if (info->expand) + { + sizes[i].minimum_size += extra_size; + if (extra_extra) + { + sizes[i].minimum_size++; + extra_extra--; + } + } + + if (rtl) + cell = allocated_cell_new (info->renderer, + full_size - (position + sizes[i].minimum_size), + sizes[i].minimum_size); + else + cell = allocated_cell_new (info->renderer, position, sizes[i].minimum_size); + + allocated_cells = g_slist_prepend (allocated_cells, cell); + + position += sizes[i].minimum_size; + position += priv->spacing; + } + + g_free (sizes); + g_list_free (cells); + + /* Note it might not be important to reverse the list here at all, + * we have the correct positions, no need to allocate from left to right + */ + return g_slist_reverse (allocated_cells); +} + +/* Returns an allocation for each cell in the orientation of the box, + * used in ->render()/->event() implementations to get a straight-forward + * list of allocated cells to operate on. + */ +static GSList * +get_allocated_cells (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context, + GtkWidget *widget, + gint width, + gint height) +{ + GtkCellAreaBoxAllocation *group_allocs; + GtkCellArea *area = GTK_CELL_AREA (box); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *cell_list; + GSList *allocated_cells = NULL; + gint i, j, n_allocs, position; + gint for_size, full_size; + gboolean rtl; + + group_allocs = _gtk_cell_area_box_context_get_orientation_allocs (context, &n_allocs); + if (!group_allocs) + return allocate_cells_manually (box, widget, width, height); + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + full_size = width; + for_size = height; + } + else + { + full_size = height; + for_size = width; + } + + /* For vertical oriented boxes, we just let the cell renderers + * realign themselves for rtl + */ + rtl = (priv->orientation == GTK_ORIENTATION_HORIZONTAL && + gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); + + for (position = 0, i = 0; i < n_allocs; i++) + { + /* We dont always allocate all groups, sometimes the requested + * group has only invisible cells for every row, hence the usage + * of group_allocs[i].group_idx here + */ + CellGroup *group = &g_array_index (priv->groups, CellGroup, group_allocs[i].group_idx); + + /* Exception for single cell groups */ + if (group->n_cells == 1) + { + CellInfo *info = group->cells->data; + AllocatedCell *cell; + gint cell_position, cell_size; + + if (!gtk_cell_renderer_get_visible (info->renderer)) + continue; + + /* If were not aligned, place the cell after the last cell */ + if (info->align) + position = cell_position = group_allocs[i].position; + else + cell_position = position; + + /* If not a fixed size, use only the requested size for this row */ + if (info->fixed) + cell_size = group_allocs[i].size; + else + { + gint dummy; + gtk_cell_area_request_renderer (area, info->renderer, + priv->orientation, + widget, for_size, + &dummy, + &cell_size); + cell_size = MIN (cell_size, group_allocs[i].size); + } + + if (rtl) + cell = allocated_cell_new (info->renderer, + full_size - (cell_position + cell_size), cell_size); + else + cell = allocated_cell_new (info->renderer, cell_position, cell_size); + + position += cell_size; + position += priv->spacing; + + allocated_cells = g_slist_prepend (allocated_cells, cell); + } + else + { + GtkRequestedSize *sizes; + gint avail_size, cell_position; + gint visible_cells, expand_cells; + gint extra_size, extra_extra; + + visible_cells = count_visible_cells (group, &expand_cells); + + /* If this row has no visible cells in this group, just + * skip the allocation + */ + if (visible_cells == 0) + continue; + + /* If were not aligned, place the cell after the last cell + * and eat up the extra space + */ + if (group->align) + { + avail_size = group_allocs[i].size; + position = cell_position = group_allocs[i].position; + } + else + { + avail_size = group_allocs[i].size + (group_allocs[i].position - position); + cell_position = position; + } + + sizes = g_new (GtkRequestedSize, visible_cells); + + for (j = 0, cell_list = group->cells; cell_list; cell_list = cell_list->next) + { + CellInfo *info = cell_list->data; + + if (!gtk_cell_renderer_get_visible (info->renderer)) + continue; + + gtk_cell_area_request_renderer (area, info->renderer, + priv->orientation, + widget, for_size, + &sizes[j].minimum_size, + &sizes[j].natural_size); + + sizes[j].data = info; + avail_size -= sizes[j].minimum_size; + + j++; + } + + /* Distribute cells naturally within the group */ + avail_size -= (visible_cells - 1) * priv->spacing; + if (avail_size > 0) + avail_size = gtk_distribute_natural_allocation (avail_size, visible_cells, sizes); + else + avail_size = 0; + + /* Calculate/distribute expand for cells */ + if (expand_cells > 0) + { + extra_size = avail_size / expand_cells; + extra_extra = avail_size % expand_cells; + } + else + extra_size = extra_extra = 0; + + /* Create the allocated cells (loop only over visible cells here) */ + for (j = 0; j < visible_cells; j++) + { + CellInfo *info = sizes[j].data; + AllocatedCell *cell; + + if (info->expand) + { + sizes[j].minimum_size += extra_size; + if (extra_extra) + { + sizes[j].minimum_size++; + extra_extra--; + } + } + + if (rtl) + cell = allocated_cell_new (info->renderer, + full_size - (cell_position + sizes[j].minimum_size), + sizes[j].minimum_size); + else + cell = allocated_cell_new (info->renderer, cell_position, sizes[j].minimum_size); + + allocated_cells = g_slist_prepend (allocated_cells, cell); + + cell_position += sizes[j].minimum_size; + cell_position += priv->spacing; + } + + g_free (sizes); + + position = cell_position; + } + } + + g_free (group_allocs); + + /* Note it might not be important to reverse the list here at all, + * we have the correct positions, no need to allocate from left to right + */ + return g_slist_reverse (allocated_cells); +} + + +static void +gtk_cell_area_box_focus_changed (GtkCellArea *area, + GParamSpec *pspec, + GtkCellAreaBox *box) +{ + if (gtk_cell_area_get_focus_cell (area)) + box->priv->last_focus_cell = gtk_cell_area_get_focus_cell (area); +} + +/************************************************************* + * GObjectClass * + *************************************************************/ +static void +gtk_cell_area_box_finalize (GObject *object) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (object); + GtkCellAreaBoxPrivate *priv = box->priv; + GSList *l; + + /* Unref/free the context list */ + for (l = priv->contexts; l; l = l->next) + g_object_weak_unref (G_OBJECT (l->data), (GWeakNotify)context_weak_notify, box); + + g_slist_free (priv->contexts); + priv->contexts = NULL; + + /* Free the cell grouping info */ + cell_groups_clear (box); + g_array_free (priv->groups, TRUE); + + G_OBJECT_CLASS (gtk_cell_area_box_parent_class)->finalize (object); +} + +static void +gtk_cell_area_box_dispose (GObject *object) +{ + G_OBJECT_CLASS (gtk_cell_area_box_parent_class)->dispose (object); +} + +static void +gtk_cell_area_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (object); + + switch (prop_id) + { + case PROP_ORIENTATION: + box->priv->orientation = g_value_get_enum (value); + + /* Notify that size needs to be requested again */ + reset_contexts (box); + + break; + case PROP_SPACING: + gtk_cell_area_box_set_spacing (box, g_value_get_int (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_cell_area_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (object); + + switch (prop_id) + { + case PROP_ORIENTATION: + g_value_set_enum (value, box->priv->orientation); + break; + case PROP_SPACING: + g_value_set_int (value, gtk_cell_area_box_get_spacing (box)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/************************************************************* + * GtkCellAreaClass * + *************************************************************/ +static void +gtk_cell_area_box_add (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), + renderer, FALSE, FALSE, TRUE); +} + +static void +gtk_cell_area_box_remove (GtkCellArea *area, + GtkCellRenderer *renderer) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *node; + + if (priv->last_focus_cell == renderer) + priv->last_focus_cell = NULL; + + node = g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find); + + if (node) + { + CellInfo *info = node->data; + + cell_info_free (info); + + priv->cells = g_list_delete_link (priv->cells, node); + + /* Reconstruct cell groups */ + cell_groups_rebuild (box); + } + else + g_warning ("Trying to remove a cell renderer that is not present GtkCellAreaBox"); +} + +static void +gtk_cell_area_box_foreach (GtkCellArea *area, + GtkCellCallback callback, + gpointer callback_data) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *list; + + for (list = priv->cells; list; list = list->next) + { + CellInfo *info = list->data; + + if (callback (info->renderer, callback_data)) + break; + } +} + +static void +gtk_cell_area_box_foreach_alloc (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + const GdkRectangle *cell_area, + const GdkRectangle *background_area, + GtkCellAllocCallback callback, + gpointer callback_data) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + GSList *allocated_cells, *l; + GdkRectangle cell_alloc, cell_background; + gboolean rtl; + + rtl = (priv->orientation == GTK_ORIENTATION_HORIZONTAL && + gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); + + cell_alloc = *cell_area; + + /* Get a list of cells with allocation sizes decided regardless + * of alignments and pack order etc. + */ + allocated_cells = get_allocated_cells (box, box_context, widget, + cell_area->width, cell_area->height); + + for (l = allocated_cells; l; l = l->next) + { + AllocatedCell *cell = l->data; + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + cell_alloc.x = cell_area->x + cell->position; + cell_alloc.width = cell->size; + } + else + { + cell_alloc.y = cell_area->y + cell->position; + cell_alloc.height = cell->size; + } + + /* Stop iterating over cells if they flow out of the render + * area, this can happen because the render area can actually + * be smaller than the requested area (treeview columns can + * be user resizable and can be resized to be smaller than + * the actual requested area). + */ + if (cell_alloc.x > cell_area->x + cell_area->width || + cell_alloc.x + cell_alloc.width < cell_area->x || + cell_alloc.y > cell_area->y + cell_area->height) + break; + + /* Special case for the last cell (or first cell in rtl)... + * let the last cell consume the remaining space in the area + * (the last cell is allowed to consume the remaining space if + * the space given for rendering is actually larger than allocation, + * this can happen in the expander GtkTreeViewColumn where only the + * deepest depth column receives the allocation... shallow columns + * receive more width). */ + if (!l->next) + { + if (rtl) + { + /* Fill the leading space for the first cell in the area + * (still last in the list) + */ + cell_alloc.width = (cell_alloc.x - cell_area->x) + cell_alloc.width; + cell_alloc.x = cell_area->x; + } + else + { + cell_alloc.width = cell_area->x + cell_area->width - cell_alloc.x; + cell_alloc.height = cell_area->y + cell_area->height - cell_alloc.y; + } + } + else + { + /* If the cell we are rendering doesnt fit into the remaining space, + * clip it so that the underlying renderer has a chance to deal with + * it (for instance text renderers get a chance to ellipsize). + */ + if (cell_alloc.x + cell_alloc.width > cell_area->x + cell_area->width) + cell_alloc.width = cell_area->x + cell_area->width - cell_alloc.x; + + if (cell_alloc.y + cell_alloc.height > cell_area->y + cell_area->height) + cell_alloc.height = cell_area->y + cell_area->height - cell_alloc.y; + } + + /* Add portions of the background_area to the cell_alloc + * to create the cell_background + */ + cell_background = cell_alloc; + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + if (l == allocated_cells) + { + /* Add the depth to the first cell */ + if (rtl) + { + cell_background.width += background_area->width - cell_area->width; + cell_background.x = background_area->x + background_area->width - cell_background.width; + } + else + { + cell_background.width += cell_area->x - background_area->x; + cell_background.x = background_area->x; + } + } + + if (l->next == NULL) + { + /* Grant this cell the remaining space */ + int remain = cell_background.x - background_area->x; + + if (rtl) + cell_background.x -= remain; + else + cell_background.width = background_area->width - remain; + } + + cell_background.y = background_area->y; + cell_background.height = background_area->height; + } + else + { + if (l == allocated_cells) + { + cell_background.height += cell_background.y - background_area->y; + cell_background.y = background_area->y; + } + + if (l->next == NULL) + cell_background.height = + background_area->height - (cell_background.y - background_area->y); + + cell_background.x = background_area->x; + cell_background.width = background_area->width; + } + + if (callback (cell->renderer, &cell_alloc, &cell_background, callback_data)) + break; + } + + g_slist_foreach (allocated_cells, (GFunc)allocated_cell_free, NULL); + g_slist_free (allocated_cells); +} + +static void +gtk_cell_area_box_apply_attributes (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + gint i; + + /* Call the parent class to apply the attributes */ + GTK_CELL_AREA_CLASS + (gtk_cell_area_box_parent_class)->apply_attributes (area, tree_model, iter, + is_expander, is_expanded); + + /* Update visible state for cell groups */ + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + GList *list; + + group->visible = FALSE; + + for (list = group->cells; list && group->visible == FALSE; list = list->next) + { + CellInfo *info = list->data; + + if (gtk_cell_renderer_get_visible (info->renderer)) + group->visible = TRUE; + } + } +} + +static void +gtk_cell_area_box_set_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *node; + CellInfo *info; + gboolean rebuild = FALSE; + gboolean val; + GtkPackType pack_type; + + node = g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find); + if (!node) + return; + + info = node->data; + + switch (prop_id) + { + case CELL_PROP_EXPAND: + val = g_value_get_boolean (value); + + if (info->expand != val) + { + info->expand = val; + rebuild = TRUE; + } + break; + + case CELL_PROP_ALIGN: + val = g_value_get_boolean (value); + + if (info->align != val) + { + info->align = val; + rebuild = TRUE; + } + break; + + case CELL_PROP_FIXED_SIZE: + val = g_value_get_boolean (value); + + if (info->fixed != val) + { + info->fixed = val; + rebuild = TRUE; + } + break; + + case CELL_PROP_PACK_TYPE: + pack_type = g_value_get_enum (value); + + if (info->pack != pack_type) + { + info->pack = pack_type; + rebuild = TRUE; + } + break; + default: + GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID (area, prop_id, pspec); + break; + } + + /* Groups need to be rebuilt */ + if (rebuild) + cell_groups_rebuild (box); +} + +static void +gtk_cell_area_box_get_cell_property (GtkCellArea *area, + GtkCellRenderer *renderer, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *node; + CellInfo *info; + + node = g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find); + if (!node) + return; + + info = node->data; + + switch (prop_id) + { + case CELL_PROP_EXPAND: + g_value_set_boolean (value, info->expand); + break; + + case CELL_PROP_ALIGN: + g_value_set_boolean (value, info->align); + break; + + case CELL_PROP_FIXED_SIZE: + g_value_set_boolean (value, info->fixed); + break; + + case CELL_PROP_PACK_TYPE: + g_value_set_enum (value, info->pack); + break; + default: + GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID (area, prop_id, pspec); + break; + } +} + + +static GtkCellAreaContext * +gtk_cell_area_box_create_context (GtkCellArea *area) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GtkCellAreaContext *context = + (GtkCellAreaContext *)g_object_new (GTK_TYPE_CELL_AREA_BOX_CONTEXT, + "area", area, NULL); + + priv->contexts = g_slist_prepend (priv->contexts, context); + + g_object_weak_ref (G_OBJECT (context), (GWeakNotify)context_weak_notify, box); + + /* Tell the new group about our cell layout */ + init_context_group (box, GTK_CELL_AREA_BOX_CONTEXT (context)); + + return context; +} + +static GtkCellAreaContext * +gtk_cell_area_box_copy_context (GtkCellArea *area, + GtkCellAreaContext *context) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + GtkCellAreaContext *copy = + (GtkCellAreaContext *)_gtk_cell_area_box_context_copy (GTK_CELL_AREA_BOX (area), + GTK_CELL_AREA_BOX_CONTEXT (context)); + + priv->contexts = g_slist_prepend (priv->contexts, copy); + + g_object_weak_ref (G_OBJECT (copy), (GWeakNotify)context_weak_notify, box); + + return copy; +} + +static GtkSizeRequestMode +gtk_cell_area_box_get_request_mode (GtkCellArea *area) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + + return (priv->orientation) == GTK_ORIENTATION_HORIZONTAL ? + GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH : + GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT; +} + +static void +compute_size (GtkCellAreaBox *box, + GtkOrientation orientation, + GtkCellAreaBoxContext *context, + GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GtkCellArea *area = GTK_CELL_AREA (box); + GList *list; + gint i; + gint min_size = 0; + gint nat_size = 0; + + for (i = 0; i < priv->groups->len; i++) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + gint group_min_size = 0; + gint group_nat_size = 0; + + for (list = group->cells; list; list = list->next) + { + CellInfo *info = list->data; + gint renderer_min_size, renderer_nat_size; + + if (!gtk_cell_renderer_get_visible (info->renderer)) + continue; + + gtk_cell_area_request_renderer (area, info->renderer, orientation, widget, for_size, + &renderer_min_size, &renderer_nat_size); + + if (orientation == priv->orientation) + { + if (min_size > 0) + { + min_size += priv->spacing; + nat_size += priv->spacing; + } + + if (group_min_size > 0) + { + group_min_size += priv->spacing; + group_nat_size += priv->spacing; + } + + min_size += renderer_min_size; + nat_size += renderer_nat_size; + group_min_size += renderer_min_size; + group_nat_size += renderer_nat_size; + } + else + { + min_size = MAX (min_size, renderer_min_size); + nat_size = MAX (nat_size, renderer_nat_size); + group_min_size = MAX (group_min_size, renderer_min_size); + group_nat_size = MAX (group_nat_size, renderer_nat_size); + } + } + + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + if (for_size < 0) + _gtk_cell_area_box_context_push_group_width (context, group->id, group_min_size, group_nat_size); + else + _gtk_cell_area_box_context_push_group_width_for_height (context, group->id, for_size, + group_min_size, group_nat_size); + } + else + { + if (for_size < 0) + _gtk_cell_area_box_context_push_group_height (context, group->id, group_min_size, group_nat_size); + else + _gtk_cell_area_box_context_push_group_height_for_width (context, group->id, for_size, + group_min_size, group_nat_size); + } + } + + *minimum_size = min_size; + *natural_size = nat_size; + + /* Update rtl state for focus navigation to work */ + priv->rtl = (priv->orientation == GTK_ORIENTATION_HORIZONTAL && + gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); +} + +static GtkRequestedSize * +get_group_sizes (GtkCellArea *area, + CellGroup *group, + GtkOrientation orientation, + GtkWidget *widget, + gint *n_sizes) +{ + GtkRequestedSize *sizes; + GList *l; + gint i; + + *n_sizes = count_visible_cells (group, NULL); + sizes = g_new (GtkRequestedSize, *n_sizes); + + for (l = group->cells, i = 0; l; l = l->next) + { + CellInfo *info = l->data; + + if (!gtk_cell_renderer_get_visible (info->renderer)) + continue; + + sizes[i].data = info; + + gtk_cell_area_request_renderer (area, info->renderer, + orientation, widget, -1, + &sizes[i].minimum_size, + &sizes[i].natural_size); + + i++; + } + + return sizes; +} + +static void +compute_group_size_for_opposing_orientation (GtkCellAreaBox *box, + CellGroup *group, + GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + GtkCellArea *area = GTK_CELL_AREA (box); + + /* Exception for single cell groups */ + if (group->n_cells == 1) + { + CellInfo *info = group->cells->data; + + gtk_cell_area_request_renderer (area, info->renderer, + OPPOSITE_ORIENTATION (priv->orientation), + widget, for_size, minimum_size, natural_size); + } + else + { + GtkRequestedSize *orientation_sizes; + CellInfo *info; + gint n_sizes, i; + gint avail_size = for_size; + gint extra_size, extra_extra; + gint min_size = 0, nat_size = 0; + + orientation_sizes = get_group_sizes (area, group, priv->orientation, widget, &n_sizes); + + /* First naturally allocate the cells in the group into the for_size */ + avail_size -= (n_sizes - 1) * priv->spacing; + for (i = 0; i < n_sizes; i++) + avail_size -= orientation_sizes[i].minimum_size; + + if (avail_size > 0) + avail_size = gtk_distribute_natural_allocation (avail_size, n_sizes, orientation_sizes); + else + avail_size = 0; + + /* Calculate/distribute expand for cells */ + if (group->expand_cells > 0) + { + extra_size = avail_size / group->expand_cells; + extra_extra = avail_size % group->expand_cells; + } + else + extra_size = extra_extra = 0; + + for (i = 0; i < n_sizes; i++) + { + gint cell_min, cell_nat; + + info = orientation_sizes[i].data; + + if (info->expand) + { + orientation_sizes[i].minimum_size += extra_size; + if (extra_extra) + { + orientation_sizes[i].minimum_size++; + extra_extra--; + } + } + + gtk_cell_area_request_renderer (area, info->renderer, + OPPOSITE_ORIENTATION (priv->orientation), + widget, + orientation_sizes[i].minimum_size, + &cell_min, &cell_nat); + + min_size = MAX (min_size, cell_min); + nat_size = MAX (nat_size, cell_nat); + } + + *minimum_size = min_size; + *natural_size = nat_size; + + g_free (orientation_sizes); + } +} + +static void +compute_size_for_opposing_orientation (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context, + GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + CellGroup *group; + GtkRequestedSize *orientation_sizes; + gint n_groups, n_expand_groups, i; + gint avail_size = for_size; + gint extra_size, extra_extra; + gint min_size = 0, nat_size = 0; + + n_expand_groups = count_expand_groups (box); + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + orientation_sizes = _gtk_cell_area_box_context_get_widths (context, &n_groups); + else + orientation_sizes = _gtk_cell_area_box_context_get_heights (context, &n_groups); + + /* First start by naturally allocating space among groups of cells */ + avail_size -= (n_groups - 1) * priv->spacing; + for (i = 0; i < n_groups; i++) + avail_size -= orientation_sizes[i].minimum_size; + + if (avail_size > 0) + avail_size = gtk_distribute_natural_allocation (avail_size, n_groups, orientation_sizes); + else + avail_size = 0; + + /* Calculate/distribute expand for groups */ + if (n_expand_groups > 0) + { + extra_size = avail_size / n_expand_groups; + extra_extra = avail_size % n_expand_groups; + } + else + extra_size = extra_extra = 0; + + /* Now we need to naturally allocate sizes for cells in each group + * and push the height-for-width for each group accordingly while + * accumulating the overall height-for-width for this row. + */ + for (i = 0; i < n_groups; i++) + { + gint group_min, group_nat; + gint group_idx = GPOINTER_TO_INT (orientation_sizes[i].data); + + group = &g_array_index (priv->groups, CellGroup, group_idx); + + if (group->expand_cells > 0) + { + orientation_sizes[i].minimum_size += extra_size; + if (extra_extra) + { + orientation_sizes[i].minimum_size++; + extra_extra--; + } + } + + /* Now we have the allocation for the group, + * request it's height-for-width + */ + compute_group_size_for_opposing_orientation (box, group, widget, + orientation_sizes[i].minimum_size, + &group_min, &group_nat); + + min_size = MAX (min_size, group_min); + nat_size = MAX (nat_size, group_nat); + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + _gtk_cell_area_box_context_push_group_height_for_width (context, group_idx, for_size, + group_min, group_nat); + } + else + { + _gtk_cell_area_box_context_push_group_width_for_height (context, group_idx, for_size, + group_min, group_nat); + } + } + + *minimum_size = min_size; + *natural_size = nat_size; + + g_free (orientation_sizes); + + /* Update rtl state for focus navigation to work */ + priv->rtl = (priv->orientation == GTK_ORIENTATION_HORIZONTAL && + gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); +} + + + +static void +gtk_cell_area_box_get_preferred_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxContext *box_context; + gint min_width, nat_width; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (context)); + + box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + + /* Compute the size of all renderers for current row data, + * bumping cell alignments in the context along the way + */ + compute_size (box, GTK_ORIENTATION_HORIZONTAL, + box_context, widget, -1, &min_width, &nat_width); + + if (minimum_width) + *minimum_width = min_width; + + if (natural_width) + *natural_width = nat_width; +} + +static void +gtk_cell_area_box_get_preferred_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxContext *box_context; + gint min_height, nat_height; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (context)); + + box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + + /* Compute the size of all renderers for current row data, + * bumping cell alignments in the context along the way + */ + compute_size (box, GTK_ORIENTATION_VERTICAL, + box_context, widget, -1, &min_height, &nat_height); + + if (minimum_height) + *minimum_height = min_height; + + if (natural_height) + *natural_height = nat_height; +} + +static void +gtk_cell_area_box_get_preferred_height_for_width (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint width, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxContext *box_context; + GtkCellAreaBoxPrivate *priv; + gint min_height, nat_height; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (context)); + + box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + priv = box->priv; + + if (priv->orientation == GTK_ORIENTATION_VERTICAL) + { + /* Add up vertical requests of height for width and push + * the overall cached sizes for alignments + */ + compute_size (box, priv->orientation, box_context, widget, width, &min_height, &nat_height); + } + else + { + /* Juice: virtually allocate cells into the for_width using the + * alignments and then return the overall height for that width, + * and cache it + */ + compute_size_for_opposing_orientation (box, box_context, widget, width, &min_height, &nat_height); + } + + if (minimum_height) + *minimum_height = min_height; + + if (natural_height) + *natural_height = nat_height; +} + +static void +gtk_cell_area_box_get_preferred_width_for_height (GtkCellArea *area, + GtkCellAreaContext *context, + GtkWidget *widget, + gint height, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxContext *box_context; + GtkCellAreaBoxPrivate *priv; + gint min_width, nat_width; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (context)); + + box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + priv = box->priv; + + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + /* Add up horizontal requests of width for height and push + * the overall cached sizes for alignments + */ + compute_size (box, priv->orientation, box_context, widget, height, &min_width, &nat_width); + } + else + { + /* Juice: horizontally allocate cells into the for_height using the + * alignments and then return the overall width for that height, + * and cache it + */ + compute_size_for_opposing_orientation (box, box_context, widget, height, &min_width, &nat_width); + } + + if (minimum_width) + *minimum_width = min_width; + + if (natural_width) + *natural_width = nat_width; +} + +enum { + FOCUS_NONE, + FOCUS_PREV, + FOCUS_NEXT, + FOCUS_LAST_CELL +}; + +static gboolean +gtk_cell_area_box_focus (GtkCellArea *area, + GtkDirectionType direction) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (area); + GtkCellAreaBoxPrivate *priv = box->priv; + gint cycle = FOCUS_NONE; + gboolean cycled_focus = FALSE; + GtkCellRenderer *focus_cell; + + focus_cell = gtk_cell_area_get_focus_cell (area); + + /* Special case, when there is no activatable cell, focus + * is painted around the entire area... in this case we + * let focus leave the area directly. + */ + if (focus_cell && !gtk_cell_area_is_activatable (area)) + { + gtk_cell_area_set_focus_cell (area, NULL); + return FALSE; + } + + switch (direction) + { + case GTK_DIR_TAB_FORWARD: + cycle = priv->rtl ? FOCUS_PREV : FOCUS_NEXT; + break; + case GTK_DIR_TAB_BACKWARD: + cycle = priv->rtl ? FOCUS_NEXT : FOCUS_PREV; + break; + case GTK_DIR_UP: + if (priv->orientation == GTK_ORIENTATION_VERTICAL || !priv->last_focus_cell) + cycle = FOCUS_PREV; + else if (!focus_cell) + cycle = FOCUS_LAST_CELL; + break; + case GTK_DIR_DOWN: + if (priv->orientation == GTK_ORIENTATION_VERTICAL || !priv->last_focus_cell) + cycle = FOCUS_NEXT; + else if (!focus_cell) + cycle = FOCUS_LAST_CELL; + break; + case GTK_DIR_LEFT: + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL || !priv->last_focus_cell) + cycle = priv->rtl ? FOCUS_NEXT : FOCUS_PREV; + else if (!focus_cell) + cycle = FOCUS_LAST_CELL; + break; + case GTK_DIR_RIGHT: + if (priv->orientation == GTK_ORIENTATION_HORIZONTAL || !priv->last_focus_cell) + cycle = priv->rtl ? FOCUS_PREV : FOCUS_NEXT; + else if (!focus_cell) + cycle = FOCUS_LAST_CELL; + break; + default: + break; + } + + if (cycle == FOCUS_LAST_CELL) + { + gtk_cell_area_set_focus_cell (area, priv->last_focus_cell); + cycled_focus = TRUE; + } + else if (cycle != FOCUS_NONE) + { + gboolean found_cell = FALSE; + GList *list; + gint i; + + /* If there is no focused cell, focus on the first (or last) one */ + if (!focus_cell) + found_cell = TRUE; + + for (i = (cycle == FOCUS_NEXT) ? 0 : priv->groups->len -1; + cycled_focus == FALSE && i >= 0 && i < priv->groups->len; + i = (cycle == FOCUS_NEXT) ? i + 1 : i - 1) + { + CellGroup *group = &g_array_index (priv->groups, CellGroup, i); + + for (list = (cycle == FOCUS_NEXT) ? g_list_first (group->cells) : g_list_last (group->cells); + cycled_focus == FALSE && list; list = (cycle == FOCUS_NEXT) ? list->next : list->prev) + { + CellInfo *info = list->data; + + if (info->renderer == focus_cell) + found_cell = TRUE; + else if (found_cell && /* Dont give focus to cells that are siblings to a focus cell */ + gtk_cell_area_get_focus_from_sibling (area, info->renderer) == NULL) + { + gtk_cell_area_set_focus_cell (area, info->renderer); + cycled_focus = TRUE; + } + } + } + } + + if (!cycled_focus) + gtk_cell_area_set_focus_cell (area, NULL); + + return cycled_focus; +} + + +/************************************************************* + * GtkCellLayoutIface * + *************************************************************/ +static void +gtk_cell_area_box_cell_layout_init (GtkCellLayoutIface *iface) +{ + iface->pack_start = gtk_cell_area_box_layout_pack_start; + iface->pack_end = gtk_cell_area_box_layout_pack_end; + iface->reorder = gtk_cell_area_box_layout_reorder; +} + +static void +gtk_cell_area_box_layout_pack_start (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand) +{ + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (cell_layout), renderer, expand, FALSE, TRUE); +} + +static void +gtk_cell_area_box_layout_pack_end (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gboolean expand) +{ + gtk_cell_area_box_pack_end (GTK_CELL_AREA_BOX (cell_layout), renderer, expand, FALSE, TRUE); +} + +static void +gtk_cell_area_box_layout_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *renderer, + gint position) +{ + GtkCellAreaBox *box = GTK_CELL_AREA_BOX (cell_layout); + GtkCellAreaBoxPrivate *priv = box->priv; + GList *node; + CellInfo *info; + + node = g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find); + + if (node) + { + info = node->data; + + priv->cells = g_list_delete_link (priv->cells, node); + priv->cells = g_list_insert (priv->cells, info, position); + + cell_groups_rebuild (box); + } +} + +/************************************************************* + * Private interaction with GtkCellAreaBoxContext * + *************************************************************/ +gboolean +_gtk_cell_area_box_group_visible (GtkCellAreaBox *box, + gint group_idx) +{ + GtkCellAreaBoxPrivate *priv = box->priv; + CellGroup *group; + + g_assert (group_idx >= 0 && group_idx < priv->groups->len); + + group = &g_array_index (priv->groups, CellGroup, group_idx); + + return group->visible; +} + + +/************************************************************* + * API * + *************************************************************/ +/** + * gtk_cell_area_box_new: + * + * Creates a new #GtkCellAreaBox. + * + * Return value: a newly created #GtkCellAreaBox + * + * Since: 3.0 + */ +GtkCellArea * +gtk_cell_area_box_new (void) +{ + return (GtkCellArea *)g_object_new (GTK_TYPE_CELL_AREA_BOX, NULL); +} + +/** + * gtk_cell_area_box_pack_start: + * @box: a #GtkCellAreaBox + * @renderer: the #GtkCellRenderer to add + * @expand: whether @renderer should receive extra space when the area receives + * more than its natural size + * @align: whether @renderer should be aligned in adjacent rows + * @fixed: whether @renderer should have the same size in all rows + * + * Adds @renderer to @box, packed with reference to the start of @box. + * + * The @renderer is packed after any other #GtkCellRenderer packed + * with reference to the start of @box. + * + * Since: 3.0 + */ +void +gtk_cell_area_box_pack_start (GtkCellAreaBox *box, + GtkCellRenderer *renderer, + gboolean expand, + gboolean align, + gboolean fixed) +{ + GtkCellAreaBoxPrivate *priv; + CellInfo *info; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX (box)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + priv = box->priv; + + if (g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find)) + { + g_warning ("Refusing to add the same cell renderer to a GtkCellAreaBox twice"); + return; + } + + info = cell_info_new (renderer, GTK_PACK_START, expand, align, fixed); + + priv->cells = g_list_append (priv->cells, info); + + cell_groups_rebuild (box); +} + +/** + * gtk_cell_area_box_pack_end: + * @box: a #GtkCellAreaBox + * @renderer: the #GtkCellRenderer to add + * @expand: whether @renderer should receive extra space when the area receives + * more than its natural size + * @align: whether @renderer should be aligned in adjacent rows + * @fixed: whether @renderer should have the same size in all rows + * + * Adds @renderer to @box, packed with reference to the end of @box. + * + * The @renderer is packed after (away from end of) any other + * #GtkCellRenderer packed with reference to the end of @box. + * + * Since: 3.0 + */ +void +gtk_cell_area_box_pack_end (GtkCellAreaBox *box, + GtkCellRenderer *renderer, + gboolean expand, + gboolean align, + gboolean fixed) +{ + GtkCellAreaBoxPrivate *priv; + CellInfo *info; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX (box)); + g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); + + priv = box->priv; + + if (g_list_find_custom (priv->cells, renderer, + (GCompareFunc)cell_info_find)) + { + g_warning ("Refusing to add the same cell renderer to a GtkCellArea twice"); + return; + } + + info = cell_info_new (renderer, GTK_PACK_END, expand, align, fixed); + + priv->cells = g_list_append (priv->cells, info); + + cell_groups_rebuild (box); +} + +/** + * gtk_cell_area_box_get_spacing: + * @box: a #GtkCellAreaBox + * + * Gets the spacing added between cell renderers. + * + * Return value: the space added between cell renderers in @box. + * + * Since: 3.0 + */ +gint +gtk_cell_area_box_get_spacing (GtkCellAreaBox *box) +{ + g_return_val_if_fail (GTK_IS_CELL_AREA_BOX (box), 0); + + return box->priv->spacing; +} + +/** + * gtk_cell_area_box_set_spacing: + * @box: a #GtkCellAreaBox + * @spacing: the space to add between #GtkCellRenderers + * + * Sets the spacing to add between cell renderers in @box. + * + * Since: 3.0 + */ +void +gtk_cell_area_box_set_spacing (GtkCellAreaBox *box, + gint spacing) +{ + GtkCellAreaBoxPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX (box)); + + priv = box->priv; + + if (priv->spacing != spacing) + { + priv->spacing = spacing; + + g_object_notify (G_OBJECT (box), "spacing"); + + /* Notify that size needs to be requested again */ + reset_contexts (box); + } +} diff --git a/gtk/gtkcellareabox.h b/gtk/gtkcellareabox.h new file mode 100644 index 0000000000..cfe00e831e --- /dev/null +++ b/gtk/gtkcellareabox.h @@ -0,0 +1,89 @@ +/* gtkcellareabox.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_CELL_AREA_BOX_H__ +#define __GTK_CELL_AREA_BOX_H__ + +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_CELL_AREA_BOX (gtk_cell_area_box_get_type ()) +#define GTK_CELL_AREA_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA_BOX, GtkCellAreaBox)) +#define GTK_CELL_AREA_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA_BOX, GtkCellAreaBoxClass)) +#define GTK_IS_CELL_AREA_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA_BOX)) +#define GTK_IS_CELL_AREA_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA_BOX)) +#define GTK_CELL_AREA_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA_BOX, GtkCellAreaBoxClass)) + +typedef struct _GtkCellAreaBox GtkCellAreaBox; +typedef struct _GtkCellAreaBoxClass GtkCellAreaBoxClass; +typedef struct _GtkCellAreaBoxPrivate GtkCellAreaBoxPrivate; + +struct _GtkCellAreaBox +{ + /*< private >*/ + GtkCellArea parent_instance; + + GtkCellAreaBoxPrivate *priv; +}; + +struct _GtkCellAreaBoxClass +{ + /*< private >*/ + GtkCellAreaClass parent_class; + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); +}; + +GType gtk_cell_area_box_get_type (void) G_GNUC_CONST; + +GtkCellArea *gtk_cell_area_box_new (void); +void gtk_cell_area_box_pack_start (GtkCellAreaBox *box, + GtkCellRenderer *renderer, + gboolean expand, + gboolean align, + gboolean fixed); +void gtk_cell_area_box_pack_end (GtkCellAreaBox *box, + GtkCellRenderer *renderer, + gboolean expand, + gboolean align, + gboolean fixed); +gint gtk_cell_area_box_get_spacing (GtkCellAreaBox *box); +void gtk_cell_area_box_set_spacing (GtkCellAreaBox *box, + gint spacing); + +/* Private interaction with GtkCellAreaBoxContext */ +gboolean _gtk_cell_area_box_group_visible (GtkCellAreaBox *box, + gint group_idx); + +G_END_DECLS + +#endif /* __GTK_CELL_AREA_BOX_H__ */ diff --git a/gtk/gtkcellareaboxcontext.c b/gtk/gtkcellareaboxcontext.c new file mode 100644 index 0000000000..57793c7242 --- /dev/null +++ b/gtk/gtkcellareaboxcontext.c @@ -0,0 +1,862 @@ +/* gtkcellareaboxcontext.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" +#include "gtkintl.h" +#include "gtkcellareabox.h" +#include "gtkcellareaboxcontextprivate.h" +#include "gtkorientable.h" + +/* GObjectClass */ +static void _gtk_cell_area_box_context_finalize (GObject *object); + +/* GtkCellAreaContextClass */ +static void _gtk_cell_area_box_context_reset (GtkCellAreaContext *context); +static void _gtk_cell_area_box_context_get_preferred_height_for_width (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height); +static void _gtk_cell_area_box_context_get_preferred_width_for_height (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width); + + + +/* Internal functions */ +static void _gtk_cell_area_box_context_sum (GtkCellAreaBoxContext *context, + GtkOrientation orientation, + gint for_size, + gint *minimum_size, + gint *natural_size); +static void free_cache_array (GArray *array); +static GArray *group_array_new (GtkCellAreaBoxContext *context); +static GArray *get_array (GtkCellAreaBoxContext *context, + GtkOrientation orientation, + gint for_size); +static gboolean group_expands (GtkCellAreaBoxContext *context, + gint group_idx); +static gint count_expand_groups (GtkCellAreaBoxContext *context); + + +/* CachedSize management */ +typedef struct { + gint min_size; + gint nat_size; +} CachedSize; + +struct _GtkCellAreaBoxContextPrivate +{ + /* Table of per renderer CachedSizes */ + GArray *base_widths; + GArray *base_heights; + + /* Table of per height/width hash tables of per renderer CachedSizes */ + GHashTable *widths; + GHashTable *heights; + + /* Whether each group expands */ + gboolean *expand; + + /* Whether each group is aligned */ + gboolean *align; +}; + +G_DEFINE_TYPE (GtkCellAreaBoxContext, _gtk_cell_area_box_context, GTK_TYPE_CELL_AREA_CONTEXT); + +static void +free_cache_array (GArray *array) +{ + g_array_free (array, TRUE); +} + +static GArray * +group_array_new (GtkCellAreaBoxContext *context) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + GArray *group_array; + + group_array = g_array_new (FALSE, TRUE, sizeof (CachedSize)); + g_array_set_size (group_array, priv->base_widths->len); + + return group_array; +} + +static GArray * +get_array (GtkCellAreaBoxContext *context, + GtkOrientation orientation, + gint for_size) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + GArray *array; + + if (for_size < 0) + { + if (orientation == GTK_ORIENTATION_HORIZONTAL) + array = priv->base_widths; + else + array = priv->base_heights; + } + else + { + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_size)); + + if (!array) + array = priv->base_widths; + } + else + { + array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_size)); + + if (!array) + array = priv->base_heights; + } + } + + return array; +} + +static gboolean +group_expands (GtkCellAreaBoxContext *context, + gint group_idx) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + + g_assert (group_idx >= 0 && group_idx < priv->base_widths->len); + + return priv->expand[group_idx]; +} + +static gint +count_expand_groups (GtkCellAreaBoxContext *context) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + gint i, expand = 0; + + for (i = 0; i < priv->base_widths->len; i++) + { + if (priv->expand[i]) + expand++; + } + + return expand; +} + +static void +_gtk_cell_area_box_context_init (GtkCellAreaBoxContext *box_context) +{ + GtkCellAreaBoxContextPrivate *priv; + + box_context->priv = G_TYPE_INSTANCE_GET_PRIVATE (box_context, + GTK_TYPE_CELL_AREA_BOX_CONTEXT, + GtkCellAreaBoxContextPrivate); + priv = box_context->priv; + + priv->base_widths = g_array_new (FALSE, TRUE, sizeof (CachedSize)); + priv->base_heights = g_array_new (FALSE, TRUE, sizeof (CachedSize)); + + priv->widths = g_hash_table_new_full (g_direct_hash, g_direct_equal, + NULL, (GDestroyNotify)free_cache_array); + priv->heights = g_hash_table_new_full (g_direct_hash, g_direct_equal, + NULL, (GDestroyNotify)free_cache_array); +} + +static void +_gtk_cell_area_box_context_class_init (GtkCellAreaBoxContextClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkCellAreaContextClass *context_class = GTK_CELL_AREA_CONTEXT_CLASS (class); + + /* GObjectClass */ + object_class->finalize = _gtk_cell_area_box_context_finalize; + + context_class->reset = _gtk_cell_area_box_context_reset; + context_class->get_preferred_height_for_width = _gtk_cell_area_box_context_get_preferred_height_for_width; + context_class->get_preferred_width_for_height = _gtk_cell_area_box_context_get_preferred_width_for_height; + + g_type_class_add_private (object_class, sizeof (GtkCellAreaBoxContextPrivate)); +} + +/************************************************************* + * GObjectClass * + *************************************************************/ +static void +_gtk_cell_area_box_context_finalize (GObject *object) +{ + GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (object); + GtkCellAreaBoxContextPrivate *priv = box_context->priv; + + g_array_free (priv->base_widths, TRUE); + g_array_free (priv->base_heights, TRUE); + g_hash_table_destroy (priv->widths); + g_hash_table_destroy (priv->heights); + + g_free (priv->expand); + g_free (priv->align); + + G_OBJECT_CLASS (_gtk_cell_area_box_context_parent_class)->finalize (object); +} + +/************************************************************* + * GtkCellAreaContextClass * + *************************************************************/ +static void +_gtk_cell_area_box_context_reset (GtkCellAreaContext *context) +{ + GtkCellAreaBoxContext *box_context = GTK_CELL_AREA_BOX_CONTEXT (context); + GtkCellAreaBoxContextPrivate *priv = box_context->priv; + CachedSize *size; + gint i; + + for (i = 0; i < priv->base_widths->len; i++) + { + size = &g_array_index (priv->base_widths, CachedSize, i); + + size->min_size = 0; + size->nat_size = 0; + + size = &g_array_index (priv->base_heights, CachedSize, i); + + size->min_size = 0; + size->nat_size = 0; + } + + /* Reset context sizes as well */ + g_hash_table_remove_all (priv->widths); + g_hash_table_remove_all (priv->heights); + + GTK_CELL_AREA_CONTEXT_CLASS + (_gtk_cell_area_box_context_parent_class)->reset (context); +} + +static void +_gtk_cell_area_box_context_sum (GtkCellAreaBoxContext *context, + GtkOrientation orientation, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + GtkCellAreaBox *area; + GtkOrientation box_orientation; + GArray *array; + gint spacing, i, last_aligned_group_idx; + gint min_size = 0, nat_size = 0; + + area = (GtkCellAreaBox *)gtk_cell_area_context_get_area (GTK_CELL_AREA_CONTEXT (context)); + spacing = gtk_cell_area_box_get_spacing (area); + box_orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (area)); + array = get_array (context, orientation, for_size); + + /* Get the last visible aligned group + * (we need to get space at least up till this group) */ + for (i = array->len - 1; i >= 0; i--) + { + if (priv->align[i] && + _gtk_cell_area_box_group_visible (area, i)) + break; + } + last_aligned_group_idx = i >= 0 ? i : 0; + + for (i = 0; i < array->len; i++) + { + CachedSize *size = &g_array_index (array, CachedSize, i); + + if (box_orientation == orientation) + { + if (i > last_aligned_group_idx && + !_gtk_cell_area_box_group_visible (area, i)) + continue; + + /* Dont add spacing for 0 size groups, they can be 0 size because + * they contain only invisible cells for this round of requests + */ + if (min_size > 0 && size->nat_size > 0) + { + min_size += spacing; + nat_size += spacing; + } + + min_size += size->min_size; + nat_size += size->nat_size; + } + else + { + min_size = MAX (min_size, size->min_size); + nat_size = MAX (nat_size, size->nat_size); + } + } + + if (for_size < 0) + { + if (orientation == GTK_ORIENTATION_HORIZONTAL) + gtk_cell_area_context_push_preferred_width (GTK_CELL_AREA_CONTEXT (context), min_size, nat_size); + else + gtk_cell_area_context_push_preferred_height (GTK_CELL_AREA_CONTEXT (context), min_size, nat_size); + } + + if (minimum_size) + *minimum_size = min_size; + if (natural_size) + *natural_size = nat_size; +} + +static void +_gtk_cell_area_box_context_get_preferred_height_for_width (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height) +{ + _gtk_cell_area_box_context_sum (GTK_CELL_AREA_BOX_CONTEXT (context), GTK_ORIENTATION_VERTICAL, + width, minimum_height, natural_height); +} + +static void +_gtk_cell_area_box_context_get_preferred_width_for_height (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width) +{ + _gtk_cell_area_box_context_sum (GTK_CELL_AREA_BOX_CONTEXT (context), GTK_ORIENTATION_HORIZONTAL, + height, minimum_width, natural_width); +} + +/************************************************************* + * API * + *************************************************************/ +static void +copy_size_array (GArray *src_array, + GArray *dest_array) +{ + gint i; + + for (i = 0; i < src_array->len; i++) + { + CachedSize *src = &g_array_index (src_array, CachedSize, i); + CachedSize *dest = &g_array_index (dest_array, CachedSize, i); + + memcpy (dest, src, sizeof (CachedSize)); + } +} + +static void +for_size_copy (gpointer key, + GArray *size_array, + GHashTable *dest_hash) +{ + GArray *new_array; + + new_array = g_array_new (FALSE, TRUE, sizeof (CachedSize)); + g_array_set_size (new_array, size_array->len); + + copy_size_array (size_array, new_array); + + g_hash_table_insert (dest_hash, key, new_array); +} + +GtkCellAreaBoxContext * +_gtk_cell_area_box_context_copy (GtkCellAreaBox *box, + GtkCellAreaBoxContext *context) +{ + GtkCellAreaBoxContext *copy; + + copy = g_object_new (GTK_TYPE_CELL_AREA_BOX_CONTEXT, + "area", box, NULL); + + gtk_cell_area_box_init_groups (copy, + context->priv->base_widths->len, + context->priv->expand, + context->priv->align); + + /* Copy the base arrays */ + copy_size_array (context->priv->base_widths, + copy->priv->base_widths); + copy_size_array (context->priv->base_heights, + copy->priv->base_heights); + + /* Copy each for size */ + g_hash_table_foreach (context->priv->heights, + (GHFunc)for_size_copy, copy->priv->heights); + g_hash_table_foreach (context->priv->widths, + (GHFunc)for_size_copy, copy->priv->widths); + + + return copy; +} + +void +gtk_cell_area_box_init_groups (GtkCellAreaBoxContext *box_context, + guint n_groups, + gboolean *expand_groups, + gboolean *align_groups) +{ + GtkCellAreaBoxContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + g_return_if_fail (n_groups == 0 || expand_groups != NULL); + + /* When the group dimensions change, all info must be reset + * Note this already clears the min/nat values on the CachedSizes + */ + gtk_cell_area_context_reset (GTK_CELL_AREA_CONTEXT (box_context)); + + priv = box_context->priv; + g_array_set_size (priv->base_widths, n_groups); + g_array_set_size (priv->base_heights, n_groups); + + g_free (priv->expand); + priv->expand = g_memdup (expand_groups, n_groups * sizeof (gboolean)); + + g_free (priv->align); + priv->align = g_memdup (align_groups, n_groups * sizeof (gboolean)); +} + +void +_gtk_cell_area_box_context_push_group_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint minimum_width, + gint natural_width) +{ + GtkCellAreaBoxContextPrivate *priv; + CachedSize *size; + gboolean grew = FALSE; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + size = &g_array_index (priv->base_widths, CachedSize, group_idx); + if (minimum_width > size->min_size) + { + size->min_size = minimum_width; + grew = TRUE; + } + if (natural_width > size->nat_size) + { + size->nat_size = natural_width; + grew = TRUE; + } + + if (grew) + _gtk_cell_area_box_context_sum (box_context, GTK_ORIENTATION_HORIZONTAL, -1, NULL, NULL); +} + +void +_gtk_cell_area_box_context_push_group_height_for_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_width, + gint minimum_height, + gint natural_height) +{ + GtkCellAreaBoxContextPrivate *priv; + GArray *group_array; + CachedSize *size; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + group_array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width)); + if (!group_array) + { + group_array = group_array_new (box_context); + g_hash_table_insert (priv->heights, GINT_TO_POINTER (for_width), group_array); + } + + size = &g_array_index (group_array, CachedSize, group_idx); + size->min_size = MAX (size->min_size, minimum_height); + size->nat_size = MAX (size->nat_size, natural_height); +} + +void +_gtk_cell_area_box_context_push_group_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint minimum_height, + gint natural_height) +{ + GtkCellAreaBoxContextPrivate *priv; + CachedSize *size; + gboolean grew = FALSE; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_heights->len); + + size = &g_array_index (priv->base_heights, CachedSize, group_idx); + if (minimum_height > size->min_size) + { + size->min_size = minimum_height; + grew = TRUE; + } + if (natural_height > size->nat_size) + { + size->nat_size = natural_height; + grew = TRUE; + } + + if (grew) + _gtk_cell_area_box_context_sum (box_context, GTK_ORIENTATION_VERTICAL, -1, NULL, NULL); +} + +void +_gtk_cell_area_box_context_push_group_width_for_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_height, + gint minimum_width, + gint natural_width) +{ + GtkCellAreaBoxContextPrivate *priv; + GArray *group_array; + CachedSize *size; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + group_array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height)); + if (!group_array) + { + group_array = group_array_new (box_context); + g_hash_table_insert (priv->widths, GINT_TO_POINTER (for_height), group_array); + } + + size = &g_array_index (group_array, CachedSize, group_idx); + size->min_size = MAX (size->min_size, minimum_width); + size->nat_size = MAX (size->nat_size, natural_width); +} + +void +_gtk_cell_area_box_context_get_group_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaBoxContextPrivate *priv; + CachedSize *size; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + size = &g_array_index (priv->base_widths, CachedSize, group_idx); + + if (minimum_width) + *minimum_width = size->min_size; + + if (natural_width) + *natural_width = size->nat_size; +} + +void +_gtk_cell_area_box_context_get_group_height_for_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_width, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaBoxContextPrivate *priv; + GArray *group_array; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + group_array = g_hash_table_lookup (priv->heights, GINT_TO_POINTER (for_width)); + + if (group_array) + { + CachedSize *size = &g_array_index (group_array, CachedSize, group_idx); + + if (minimum_height) + *minimum_height = size->min_size; + + if (natural_height) + *natural_height = size->nat_size; + } + else + { + if (minimum_height) + *minimum_height = -1; + + if (natural_height) + *natural_height = -1; + } +} + +void +_gtk_cell_area_box_context_get_group_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaBoxContextPrivate *priv; + CachedSize *size; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_heights->len); + + size = &g_array_index (priv->base_heights, CachedSize, group_idx); + + if (minimum_height) + *minimum_height = size->min_size; + + if (natural_height) + *natural_height = size->nat_size; +} + +void +_gtk_cell_area_box_context_get_group_width_for_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_height, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaBoxContextPrivate *priv; + GArray *group_array; + + g_return_if_fail (GTK_IS_CELL_AREA_BOX_CONTEXT (box_context)); + + priv = box_context->priv; + g_return_if_fail (group_idx < priv->base_widths->len); + + group_array = g_hash_table_lookup (priv->widths, GINT_TO_POINTER (for_height)); + + if (group_array) + { + CachedSize *size = &g_array_index (group_array, CachedSize, group_idx); + + if (minimum_width) + *minimum_width = size->min_size; + + if (natural_width) + *natural_width = size->nat_size; + } + else + { + if (minimum_width) + *minimum_width = -1; + + if (natural_width) + *natural_width = -1; + } +} + +static GtkRequestedSize * +_gtk_cell_area_box_context_get_requests (GtkCellAreaBoxContext *box_context, + GtkCellAreaBox *area, + GtkOrientation orientation, + gint for_size, + gint *n_requests) +{ + GtkCellAreaBoxContextPrivate *priv = box_context->priv; + GtkRequestedSize *requests; + GArray *array; + CachedSize *size; + gint visible_groups = 0; + gint last_aligned_group_idx = 0; + gint i, j; + + /* Get the last visible aligned group + * (we need to get space at least up till this group) */ + for (i = priv->base_widths->len - 1; i >= 0; i--) + { + if (priv->align[i] && + _gtk_cell_area_box_group_visible (area, i)) + break; + } + last_aligned_group_idx = i >= 0 ? i : 0; + + priv = box_context->priv; + array = get_array (box_context, orientation, for_size); + + for (i = 0; i < array->len; i++) + { + size = &g_array_index (array, CachedSize, i); + + if (size->nat_size > 0 && + (i <= last_aligned_group_idx || + _gtk_cell_area_box_group_visible (area, i))) + visible_groups++; + } + + requests = g_new (GtkRequestedSize, visible_groups); + + for (j = 0, i = 0; i < array->len; i++) + { + size = &g_array_index (array, CachedSize, i); + + if (size->nat_size > 0 && + (i <= last_aligned_group_idx || + _gtk_cell_area_box_group_visible (area, i))) + { + requests[j].data = GINT_TO_POINTER (i); + requests[j].minimum_size = size->min_size; + requests[j].natural_size = size->nat_size; + j++; + } + } + + if (n_requests) + *n_requests = visible_groups; + + return requests; +} + +static GtkCellAreaBoxAllocation * +allocate_for_orientation (GtkCellAreaBoxContext *context, + GtkCellAreaBox *area, + GtkOrientation orientation, + gint spacing, + gint size, + gint for_size, + gint *n_allocs) +{ + GtkCellAreaBoxContextPrivate *priv = context->priv; + GtkCellAreaBoxAllocation *allocs; + GtkRequestedSize *sizes; + GArray *array; + gint n_expand_groups = 0; + gint i, n_groups, position, vis_position; + gint extra_size, extra_extra; + gint avail_size = size; + + sizes = _gtk_cell_area_box_context_get_requests (context, area, orientation, for_size, &n_groups); + array = get_array (context, orientation, for_size); + n_expand_groups = count_expand_groups (context); + + /* First start by naturally allocating space among groups */ + avail_size -= (n_groups - 1) * spacing; + for (i = 0; i < n_groups; i++) + avail_size -= sizes[i].minimum_size; + + if (avail_size > 0) + avail_size = gtk_distribute_natural_allocation (avail_size, n_groups, sizes); + else + avail_size = 0; + + /* Calculate/distribute expand for groups */ + if (n_expand_groups > 0) + { + extra_size = avail_size / n_expand_groups; + extra_extra = avail_size % n_expand_groups; + } + else + extra_size = extra_extra = 0; + + allocs = g_new (GtkCellAreaBoxAllocation, n_groups); + + for (vis_position = 0, position = 0, i = 0; i < n_groups; i++) + { + allocs[i].group_idx = GPOINTER_TO_INT (sizes[i].data); + + if (priv->align[allocs[i].group_idx]) + vis_position = position; + + allocs[i].position = vis_position; + allocs[i].size = sizes[i].minimum_size; + + if (group_expands (context, allocs[i].group_idx)) + { + allocs[i].size += extra_size; + if (extra_extra) + { + allocs[i].size++; + extra_extra--; + } + } + + position += allocs[i].size; + position += spacing; + + if (_gtk_cell_area_box_group_visible (area, allocs[i].group_idx)) + { + vis_position += allocs[i].size; + vis_position += spacing; + } + } + + if (n_allocs) + *n_allocs = n_groups; + + g_free (sizes); + + return allocs; +} + +GtkRequestedSize * +_gtk_cell_area_box_context_get_widths (GtkCellAreaBoxContext *box_context, + gint *n_widths) +{ + GtkCellAreaBox *area = (GtkCellAreaBox *)gtk_cell_area_context_get_area (GTK_CELL_AREA_CONTEXT (box_context)); + + return _gtk_cell_area_box_context_get_requests (box_context, area, GTK_ORIENTATION_HORIZONTAL, -1, n_widths); +} + +GtkRequestedSize * +_gtk_cell_area_box_context_get_heights (GtkCellAreaBoxContext *box_context, + gint *n_heights) +{ + GtkCellAreaBox *area = (GtkCellAreaBox *)gtk_cell_area_context_get_area (GTK_CELL_AREA_CONTEXT (box_context)); + + return _gtk_cell_area_box_context_get_requests (box_context, area, GTK_ORIENTATION_VERTICAL, -1, n_heights); +} + +GtkCellAreaBoxAllocation * +_gtk_cell_area_box_context_get_orientation_allocs (GtkCellAreaBoxContext *context, + gint *n_allocs) +{ + GtkCellAreaContext *ctx = GTK_CELL_AREA_CONTEXT (context); + GtkCellAreaBox *area; + GtkOrientation orientation; + gint spacing, width, height, alloc_count = 0; + GtkCellAreaBoxAllocation *allocs = NULL; + + area = (GtkCellAreaBox *)gtk_cell_area_context_get_area (ctx); + orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (area)); + spacing = gtk_cell_area_box_get_spacing (area); + + gtk_cell_area_context_get_allocation (ctx, &width, &height); + + if (orientation == GTK_ORIENTATION_HORIZONTAL && width > 0) + allocs = allocate_for_orientation (context, area, orientation, + spacing, width, height, + &alloc_count); + else if (orientation == GTK_ORIENTATION_VERTICAL && height > 0) + allocs = allocate_for_orientation (context, area, orientation, + spacing, height, width, + &alloc_count); + + *n_allocs = alloc_count; + + return allocs; +} diff --git a/gtk/gtkcellareaboxcontextprivate.h b/gtk/gtkcellareaboxcontextprivate.h new file mode 100644 index 0000000000..b5664ae78b --- /dev/null +++ b/gtk/gtkcellareaboxcontextprivate.h @@ -0,0 +1,139 @@ +/* gtkcellareaboxcontext.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_CELL_AREA_BOX_CONTEXT_H__ +#define __GTK_CELL_AREA_BOX_CONTEXT_H__ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_CELL_AREA_BOX_CONTEXT (_gtk_cell_area_box_context_get_type ()) +#define GTK_CELL_AREA_BOX_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA_BOX_CONTEXT, GtkCellAreaBoxContext)) +#define GTK_CELL_AREA_BOX_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA_BOX_CONTEXT, GtkCellAreaBoxContextClass)) +#define GTK_IS_CELL_AREA_BOX_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA_BOX_CONTEXT)) +#define GTK_IS_CELL_AREA_BOX_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA_BOX_CONTEXT)) +#define GTK_CELL_AREA_BOX_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA_BOX_CONTEXT, GtkCellAreaBoxContextClass)) + +typedef struct _GtkCellAreaBoxContext GtkCellAreaBoxContext; +typedef struct _GtkCellAreaBoxContextClass GtkCellAreaBoxContextClass; +typedef struct _GtkCellAreaBoxContextPrivate GtkCellAreaBoxContextPrivate; + +struct _GtkCellAreaBoxContext +{ + GtkCellAreaContext parent_instance; + + GtkCellAreaBoxContextPrivate *priv; +}; + +struct _GtkCellAreaBoxContextClass +{ + GtkCellAreaContextClass parent_class; + +}; + +GType _gtk_cell_area_box_context_get_type (void) G_GNUC_CONST; + + +/* Create a duplicate of the context */ +GtkCellAreaBoxContext *_gtk_cell_area_box_context_copy (GtkCellAreaBox *box, + GtkCellAreaBoxContext *box_context); + +/* Initialize group array dimensions */ +void gtk_cell_area_box_init_groups (GtkCellAreaBoxContext *box_context, + guint n_groups, + gboolean *expand_groups, + gboolean *align_groups); + +/* Update cell-group sizes */ +void _gtk_cell_area_box_context_push_group_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint minimum_width, + gint natural_width); + +void _gtk_cell_area_box_context_push_group_height_for_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_width, + gint minimum_height, + gint natural_height); + +void _gtk_cell_area_box_context_push_group_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint minimum_height, + gint natural_height); + +void _gtk_cell_area_box_context_push_group_width_for_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_height, + gint minimum_width, + gint natural_width); + +/* Fetch cell-group sizes */ +void _gtk_cell_area_box_context_get_group_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint *minimum_width, + gint *natural_width); + +void _gtk_cell_area_box_context_get_group_height_for_width (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_width, + gint *minimum_height, + gint *natural_height); + +void _gtk_cell_area_box_context_get_group_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint *minimum_height, + gint *natural_height); + +void _gtk_cell_area_box_context_get_group_width_for_height (GtkCellAreaBoxContext *box_context, + gint group_idx, + gint for_height, + gint *minimum_width, + gint *natural_width); + +GtkRequestedSize *_gtk_cell_area_box_context_get_widths (GtkCellAreaBoxContext *box_context, + gint *n_widths); +GtkRequestedSize *_gtk_cell_area_box_context_get_heights (GtkCellAreaBoxContext *box_context, + gint *n_heights); + +/* Private context/area interaction */ +typedef struct { + gint group_idx; /* Groups containing only invisible cells are not allocated */ + gint position; /* Relative group allocation position in the orientation of the box */ + gint size; /* Full allocated size of the cells in this group spacing inclusive */ +} GtkCellAreaBoxAllocation; + +GtkCellAreaBoxAllocation * +_gtk_cell_area_box_context_get_orientation_allocs (GtkCellAreaBoxContext *context, + gint *n_allocs); + +G_END_DECLS + +#endif /* __GTK_CELL_AREA_BOX_CONTEXT_H__ */ diff --git a/gtk/gtkcellareacontext.c b/gtk/gtkcellareacontext.c new file mode 100644 index 0000000000..ca1ac3a0d8 --- /dev/null +++ b/gtk/gtkcellareacontext.c @@ -0,0 +1,689 @@ +/* gtkcellareacontext.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** + * SECTION:gtkcellareacontext + * @Short_Description: Stores geometrical information for a series of rows in a GtkCellArea + * @Title: GtkCellAreaContext + * + * The #GtkCellAreaContext object is created by a given #GtkCellArea + * implementation via it's #GtkCellAreaClass.create_context() virtual + * method and is used to store cell sizes and alignments for a series of + * #GtkTreeModel rows that are requested and rendered in the same context. + * + * #GtkCellLayout widgets can create any number of contexts in which to + * request and render groups of data rows. However its important that the + * same context which was used to request sizes for a given #GtkTreeModel + * row also be used for the same row when calling other #GtkCellArea APIs + * such as gtk_cell_area_render() and gtk_cell_area_event(). + */ + +#include "config.h" +#include "gtkintl.h" +#include "gtkmarshalers.h" +#include "gtkcellareacontext.h" +#include "gtkprivate.h" + +/* GObjectClass */ +static void gtk_cell_area_context_dispose (GObject *object); +static void gtk_cell_area_context_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void gtk_cell_area_context_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); + +/* GtkCellAreaContextClass */ +static void gtk_cell_area_context_real_reset (GtkCellAreaContext *context); +static void gtk_cell_area_context_real_allocate (GtkCellAreaContext *context, + gint width, + gint height); + +struct _GtkCellAreaContextPrivate +{ + GtkCellArea *cell_area; + + gint min_width; + gint nat_width; + gint min_height; + gint nat_height; + gint alloc_width; + gint alloc_height; +}; + +enum { + PROP_0, + PROP_CELL_AREA, + PROP_MIN_WIDTH, + PROP_NAT_WIDTH, + PROP_MIN_HEIGHT, + PROP_NAT_HEIGHT +}; + +G_DEFINE_TYPE (GtkCellAreaContext, gtk_cell_area_context, G_TYPE_OBJECT); + +static void +gtk_cell_area_context_init (GtkCellAreaContext *context) +{ + GtkCellAreaContextPrivate *priv; + + context->priv = G_TYPE_INSTANCE_GET_PRIVATE (context, + GTK_TYPE_CELL_AREA_CONTEXT, + GtkCellAreaContextPrivate); + priv = context->priv; + + priv->min_width = -1; + priv->nat_width = -1; + priv->min_height = -1; + priv->nat_height = -1; +} + +static void +gtk_cell_area_context_class_init (GtkCellAreaContextClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + /* GObjectClass */ + object_class->dispose = gtk_cell_area_context_dispose; + object_class->get_property = gtk_cell_area_context_get_property; + object_class->set_property = gtk_cell_area_context_set_property; + + /* GtkCellAreaContextClass */ + class->reset = gtk_cell_area_context_real_reset; + class->allocate = gtk_cell_area_context_real_allocate; + + /** + * GtkCellAreaContext:area: + * + * The #GtkCellArea this context was created by + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_CELL_AREA, + g_param_spec_object ("area", + P_("Area"), + P_("The Cell Area this context was created for"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * GtkCellAreaContext:minimum-width: + * + * The minimum width for the #GtkCellArea in this context + * for all #GtkTreeModel rows that this context was requested + * for using gtk_cell_area_get_preferred_width(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_MIN_WIDTH, + g_param_spec_int ("minimum-width", + P_("Minimum Width"), + P_("Minimum cached width"), + -1, + G_MAXINT, + -1, + G_PARAM_READABLE)); + + /** + * GtkCellAreaContext:natural-width: + * + * The natural width for the #GtkCellArea in this context + * for all #GtkTreeModel rows that this context was requested + * for using gtk_cell_area_get_preferred_width(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_NAT_WIDTH, + g_param_spec_int ("natural-width", + P_("Minimum Width"), + P_("Minimum cached width"), + -1, + G_MAXINT, + -1, + G_PARAM_READABLE)); + + /** + * GtkCellAreaContext:minimum-height: + * + * The minimum height for the #GtkCellArea in this context + * for all #GtkTreeModel rows that this context was requested + * for using gtk_cell_area_get_preferred_height(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_MIN_HEIGHT, + g_param_spec_int ("minimum-height", + P_("Minimum Height"), + P_("Minimum cached height"), + -1, + G_MAXINT, + -1, + G_PARAM_READABLE)); + + /** + * GtkCellAreaContext:natural-height: + * + * The natural height for the #GtkCellArea in this context + * for all #GtkTreeModel rows that this context was requested + * for using gtk_cell_area_get_preferred_height(). + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_NAT_HEIGHT, + g_param_spec_int ("natural-height", + P_("Minimum Height"), + P_("Minimum cached height"), + -1, + G_MAXINT, + -1, + G_PARAM_READABLE)); + + g_type_class_add_private (object_class, sizeof (GtkCellAreaContextPrivate)); +} + +/************************************************************* + * GObjectClass * + *************************************************************/ +static void +gtk_cell_area_context_dispose (GObject *object) +{ + GtkCellAreaContext *context = GTK_CELL_AREA_CONTEXT (object); + GtkCellAreaContextPrivate *priv = context->priv; + + if (priv->cell_area) + { + g_object_unref (priv->cell_area); + + priv->cell_area = NULL; + } + + G_OBJECT_CLASS (gtk_cell_area_context_parent_class)->dispose (object); +} + +static void +gtk_cell_area_context_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaContext *context = GTK_CELL_AREA_CONTEXT (object); + GtkCellAreaContextPrivate *priv = context->priv; + + switch (prop_id) + { + case PROP_CELL_AREA: + priv->cell_area = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_cell_area_context_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkCellAreaContext *context = GTK_CELL_AREA_CONTEXT (object); + GtkCellAreaContextPrivate *priv = context->priv; + + switch (prop_id) + { + case PROP_CELL_AREA: + g_value_set_object (value, priv->cell_area); + break; + case PROP_MIN_WIDTH: + g_value_set_int (value, priv->min_width); + break; + case PROP_NAT_WIDTH: + g_value_set_int (value, priv->nat_width); + break; + case PROP_MIN_HEIGHT: + g_value_set_int (value, priv->min_height); + break; + case PROP_NAT_HEIGHT: + g_value_set_int (value, priv->nat_height); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/************************************************************* + * GtkCellAreaContextClass * + *************************************************************/ +static void +gtk_cell_area_context_real_reset (GtkCellAreaContext *context) +{ + GtkCellAreaContextPrivate *priv = context->priv; + + g_object_freeze_notify (G_OBJECT (context)); + + if (priv->min_width != -1) + { + priv->min_width = -1; + g_object_notify (G_OBJECT (context), "minimum-width"); + } + + if (priv->nat_width != -1) + { + priv->nat_width = -1; + g_object_notify (G_OBJECT (context), "natural-width"); + } + + if (priv->min_height != -1) + { + priv->min_height = -1; + g_object_notify (G_OBJECT (context), "minimum-height"); + } + + if (priv->nat_height != -1) + { + priv->nat_height = -1; + g_object_notify (G_OBJECT (context), "natural-height"); + } + + priv->alloc_width = 0; + priv->alloc_height = 0; + + g_object_thaw_notify (G_OBJECT (context)); +} + +static void +gtk_cell_area_context_real_allocate (GtkCellAreaContext *context, + gint width, + gint height) +{ + GtkCellAreaContextPrivate *priv = context->priv; + + priv->alloc_width = width; + priv->alloc_height = height; +} + +/************************************************************* + * API * + *************************************************************/ +/** + * gtk_cell_area_context_get_area: + * @context: a #GtkCellAreaContext + * + * Fetches the #GtkCellArea this @context was created by. + * + * This is generally unneeded by layouting widgets; however + * it is important for the context implementation itself to + * fetch information about the area it is being used for. + * + * For instance at #GtkCellAreaContextClass.allocate() time + * it's important to know details about any cell spacing + * that the #GtkCellArea is configured with in order to + * compute a proper allocation. + * + * Return value: the #GtkCellArea this context was created by. + * + * Since: 3.0 + */ +GtkCellArea * +gtk_cell_area_context_get_area (GtkCellAreaContext *context) +{ + GtkCellAreaContextPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_AREA_CONTEXT (context), NULL); + + priv = context->priv; + + return priv->cell_area; +} + +/** + * gtk_cell_area_context_reset: + * @context: a #GtkCellAreaContext + * + * Resets any previously cached request and allocation + * data. + * + * When underlying #GtkTreeModel data changes it's + * important to reset the context if the content + * size is allowed to shrink. If the content size + * is only allowed to grow (this is usually an option + * for views rendering large data stores as a measure + * of optimization), then only the row that changed + * or was inserted needs to be (re)requested with + * gtk_cell_area_get_preferred_width(). + * + * When the new overall size of the context requires + * that the allocated size changes (or whenever this + * allocation changes at all), the variable row + * sizes need to be re-requested for every row. + * + * For instance, if the rows are displayed all with + * the same width from top to bottom then a change + * in the allocated width necessitates a recalculation + * of all the displayed row heights using + * gtk_cell_area_get_preferred_height_for_width(). + * + * Since 3.0 + */ +void +gtk_cell_area_context_reset (GtkCellAreaContext *context) +{ + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->reset (context); +} + +/** + * gtk_cell_area_context_allocate: + * @context: a #GtkCellAreaContext + * @width: the allocated width for all #GtkTreeModel rows rendered + * with @context, or -1. + * @height: the allocated height for all #GtkTreeModel rows rendered + * with @context, or -1. + * + * Allocates a width and/or a height for all rows which are to be + * rendered with @context. + * + * Usually allocation is performed only horizontally or sometimes + * vertically since a group of rows are usually rendered side by + * side vertically or horizontally and share either the same width + * or the same height. Sometimes they are allocated in both horizontal + * and vertical orientations producing a homogeneous effect of the + * rows. This is generally the case for #GtkTreeView when + * #GtkTreeView:fixed-height-mode is enabled. + * + * Since 3.0 + */ +void +gtk_cell_area_context_allocate (GtkCellAreaContext *context, + gint width, + gint height) +{ + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->allocate (context, width, height); +} + +/** + * gtk_cell_area_context_get_preferred_width: + * @context: a #GtkCellAreaContext + * @minimum_width: (out) (allow-none): location to store the minimum width, + * or %NULL + * @natural_width: (out) (allow-none): location to store the natural width, + * or %NULL + * + * Gets the accumulative preferred width for all rows which have been + * requested with this context. + * + * After gtk_cell_area_context_reset() is called and/or before ever + * requesting the size of a #GtkCellArea, the returned values are -1. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context, + gint *minimum_width, + gint *natural_width) +{ + GtkCellAreaContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + priv = context->priv; + + if (minimum_width) + *minimum_width = priv->min_width; + + if (natural_width) + *natural_width = priv->nat_width; +} + +/** + * gtk_cell_area_context_get_preferred_height: + * @context: a #GtkCellAreaContext + * @minimum_height: (out) (allow-none): location to store the minimum height, + * or %NULL + * @natural_height: (out) (allow-none): location to store the natural height, + * or %NULL + * + * Gets the accumulative preferred height for all rows which have been + * requested with this context. + * + * After gtk_cell_area_context_reset() is called and/or before ever + * requesting the size of a #GtkCellArea, the returned values are -1. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context, + gint *minimum_height, + gint *natural_height) +{ + GtkCellAreaContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + priv = context->priv; + + if (minimum_height) + *minimum_height = priv->min_height; + + if (natural_height) + *natural_height = priv->nat_height; +} + +/** + * gtk_cell_area_context_get_preferred_height_for_width: + * @context: a #GtkCellAreaContext + * @width: a proposed width for allocation + * @minimum_height: (out) (allow-none): location to store the minimum height, + * or %NULL + * @natural_height: (out) (allow-none): location to store the natural height, + * or %NULL + * + * Gets the accumulative preferred height for @width for all rows + * which have been requested for the same said @width with this context. + * + * After gtk_cell_area_context_reset() is called and/or before ever + * requesting the size of a #GtkCellArea, the returned values are -1. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_get_preferred_height_for_width (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height) +{ + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + if (GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->get_preferred_height_for_width) + GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->get_preferred_height_for_width (context, + width, + minimum_height, + natural_height); +} + +/** + * gtk_cell_area_context_get_preferred_width_for_height: + * @context: a #GtkCellAreaContext + * @height: a proposed height for allocation + * @minimum_width: (out) (allow-none): location to store the minimum width, + * or %NULL + * @natural_width: (out) (allow-none): location to store the natural width, + * or %NULL + * + * Gets the accumulative preferred width for @height for all rows which + * have been requested for the same said @height with this context. + * + * After gtk_cell_area_context_reset() is called and/or before ever + * requesting the size of a #GtkCellArea, the returned values are -1. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_get_preferred_width_for_height (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width) +{ + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + if (GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->get_preferred_width_for_height) + GTK_CELL_AREA_CONTEXT_GET_CLASS (context)->get_preferred_width_for_height (context, + height, + minimum_width, + natural_width); +} + +/** + * gtk_cell_area_context_get_allocation: + * @context: a #GtkCellAreaContext + * @width: (out) (allow-none): location to store the allocated width, or %NULL + * @height: (out) (allow-none): location to store the allocated height, or %NULL + * + * Fetches the current allocation size for @context. + * + * If the context was not allocated in width or height, or if the + * context was recently reset with gtk_cell_area_context_reset(), + * the returned value will be -1. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_get_allocation (GtkCellAreaContext *context, + gint *width, + gint *height) +{ + GtkCellAreaContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + priv = context->priv; + + if (width) + *width = priv->alloc_width; + + if (height) + *height = priv->alloc_height; +} + +/** + * gtk_cell_area_context_push_preferred_width: + * @context: a #GtkCellAreaContext + * @minimum_width: the proposed new minimum width for @context + * @natural_width: the proposed new natural width for @context + * + * Causes the minimum and/or natural width to grow if the new + * proposed sizes exceed the current minimum and natural width. + * + * This is used by #GtkCellAreaContext implementations during + * the request process over a series of #GtkTreeModel rows to + * progressively push the requested width over a series of + * gtk_cell_area_get_preferred_width() requests. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context, + gint minimum_width, + gint natural_width) +{ + GtkCellAreaContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + priv = context->priv; + + g_object_freeze_notify (G_OBJECT (context)); + + if (minimum_width > priv->min_width) + { + priv->min_width = minimum_width; + + g_object_notify (G_OBJECT (context), "minimum-width"); + } + + if (natural_width > priv->nat_width) + { + priv->nat_width = natural_width; + + g_object_notify (G_OBJECT (context), "natural-width"); + } + + g_object_thaw_notify (G_OBJECT (context)); +} + +/** + * gtk_cell_area_context_push_preferred_height: + * @context: a #GtkCellAreaContext + * @minimum_height: the proposed new minimum height for @context + * @natural_height: the proposed new natural height for @context + * + * Causes the minimum and/or natural height to grow if the new + * proposed sizes exceed the current minimum and natural height. + * + * This is used by #GtkCellAreaContext implementations during + * the request process over a series of #GtkTreeModel rows to + * progressively push the requested height over a series of + * gtk_cell_area_get_preferred_height() requests. + * + * Since: 3.0 + */ +void +gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context, + gint minimum_height, + gint natural_height) +{ + GtkCellAreaContextPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA_CONTEXT (context)); + + priv = context->priv; + + g_object_freeze_notify (G_OBJECT (context)); + + if (minimum_height > priv->min_height) + { + priv->min_height = minimum_height; + + g_object_notify (G_OBJECT (context), "minimum-height"); + } + + if (natural_height > priv->nat_height) + { + priv->nat_height = natural_height; + + g_object_notify (G_OBJECT (context), "natural-height"); + } + + g_object_thaw_notify (G_OBJECT (context)); +} diff --git a/gtk/gtkcellareacontext.h b/gtk/gtkcellareacontext.h new file mode 100644 index 0000000000..787344e619 --- /dev/null +++ b/gtk/gtkcellareacontext.h @@ -0,0 +1,137 @@ +/* gtkcellareacontext.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_CELL_AREA_CONTEXT_H__ +#define __GTK_CELL_AREA_CONTEXT_H__ + +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_CELL_AREA_CONTEXT (gtk_cell_area_context_get_type ()) +#define GTK_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContext)) +#define GTK_CELL_AREA_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContextClass)) +#define GTK_IS_CELL_AREA_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA_CONTEXT)) +#define GTK_IS_CELL_AREA_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA_CONTEXT)) +#define GTK_CELL_AREA_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA_CONTEXT, GtkCellAreaContextClass)) + +typedef struct _GtkCellAreaContextPrivate GtkCellAreaContextPrivate; +typedef struct _GtkCellAreaContextClass GtkCellAreaContextClass; + +struct _GtkCellAreaContext +{ + /*< private >*/ + GObject parent_instance; + + GtkCellAreaContextPrivate *priv; +}; + +/** + * GtkCellAreaContextClass: + * @allocate: This tells the context that an allocation width or height + * (or both) have been decided for a group of rows. The context should + * store any allocations for internally aligned cells at this point so + * that they dont need to be recalculated at gtk_cell_area_render() time. + * @reset: Clear any previously stored information about requested and + * allocated sizes for the context. + * @get_preferred_height_for_width: Returns the aligned height for the given + * width that context must store while collecting sizes for it's rows. + * @get_preferred_width_for_height: Returns the aligned width for the given + * height that context must store while collecting sizes for it's rows. + */ +struct _GtkCellAreaContextClass +{ + /*< private >*/ + GObjectClass parent_class; + + /*< public >*/ + void (* allocate) (GtkCellAreaContext *context, + gint width, + gint height); + void (* reset) (GtkCellAreaContext *context); + void (* get_preferred_height_for_width) (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height); + void (* get_preferred_width_for_height) (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width); + + /*< private >*/ + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); +}; + +GType gtk_cell_area_context_get_type (void) G_GNUC_CONST; + +/* Main apis */ +GtkCellArea *gtk_cell_area_context_get_area (GtkCellAreaContext *context); +void gtk_cell_area_context_allocate (GtkCellAreaContext *context, + gint width, + gint height); +void gtk_cell_area_context_reset (GtkCellAreaContext *context); + +/* Apis for GtkCellArea clients to consult cached values + * for a series of GtkTreeModel rows + */ +void gtk_cell_area_context_get_preferred_width (GtkCellAreaContext *context, + gint *minimum_width, + gint *natural_width); +void gtk_cell_area_context_get_preferred_height (GtkCellAreaContext *context, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_context_get_preferred_height_for_width (GtkCellAreaContext *context, + gint width, + gint *minimum_height, + gint *natural_height); +void gtk_cell_area_context_get_preferred_width_for_height (GtkCellAreaContext *context, + gint height, + gint *minimum_width, + gint *natural_width); +void gtk_cell_area_context_get_allocation (GtkCellAreaContext *context, + gint *width, + gint *height); + +/* Apis for GtkCellArea implementations to update cached values + * for multiple GtkTreeModel rows + */ +void gtk_cell_area_context_push_preferred_width (GtkCellAreaContext *context, + gint minimum_width, + gint natural_width); +void gtk_cell_area_context_push_preferred_height (GtkCellAreaContext *context, + gint minimum_height, + gint natural_height); + +G_END_DECLS + +#endif /* __GTK_CELL_AREA_CONTEXT_H__ */ diff --git a/gtk/gtkcelllayout.c b/gtk/gtkcelllayout.c index 8388b5f7d5..d56747c1c4 100644 --- a/gtk/gtkcelllayout.c +++ b/gtk/gtkcelllayout.c @@ -17,34 +17,307 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:gtkcelllayout + * @Short_Description: An interface for packing cells + * @Title: GtkCellLayout + * + * #GtkCellLayout is an interface to be implemented by all objects which + * want to provide a #GtkTreeViewColumn-like API for packing cells, setting + * attributes and data funcs. + * + * One of the notable features provided by implementations of GtkCellLayout + * are attributes. Attributes let you set the properties + * in flexible ways. They can just be set to constant values like regular + * properties. But they can also be mapped to a column of the underlying + * tree model with gtk_cell_layout_set_attributes(), which means that the value + * of the attribute can change from cell to cell as they are rendered by the + * cell renderer. Finally, it is possible to specify a function with + * gtk_cell_layout_set_cell_data_func() that is called to determine the value + * of the attribute for each cell that is rendered. + * + * + * GtkCellLayouts as GtkBuildable + * + * Implementations of GtkCellLayout which also implement the GtkBuildable + * interface (#GtkCellView, #GtkIconView, #GtkComboBox, #GtkComboBoxEntry, + * #GtkEntryCompletion, #GtkTreeViewColumn) accept GtkCellRenderer objects + * as <child> elements in UI definitions. They support a custom + * <attributes> element for their children, which can contain + * multiple <attribute> elements. Each <attribute> element has + * a name attribute which specifies a property of the cell renderer; the + * content of the element is the attribute value. + * + * + * A UI definition fragment specifying attributes + * + * + * + * + * 0 + * + * " + * + * ]]> + * + * + * Furthermore for implementations of GtkCellLayout that use a #GtkCellArea + * to lay out cells (all GtkCellLayouts in GTK+ use a GtkCellArea) + * cell properties can also be defined + * in the format by specifying the custom <cell-packing> attribute which + * can contain multiple <property> elements defined in the normal way. + * + * A UI definition fragment specifying cell properties + * + * + * + * + * True + * False + * + * " + * + * ]]> + * + * + * + */ + #include "config.h" #include #include #include #include "gtkcelllayout.h" +#include "gtkbuilderprivate.h" #include "gtkintl.h" +#define warn_no_cell_area(func) \ + g_critical ("%s: Called but no GtkCellArea is available yet", func) typedef GtkCellLayoutIface GtkCellLayoutInterface; G_DEFINE_INTERFACE (GtkCellLayout, gtk_cell_layout, G_TYPE_OBJECT); +static void gtk_cell_layout_default_pack_start (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gboolean expand); +static void gtk_cell_layout_default_pack_end (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gboolean expand); +static void gtk_cell_layout_default_clear (GtkCellLayout *cell_layout); +static void gtk_cell_layout_default_add_attribute (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + const gchar *attribute, + gint column); +static void gtk_cell_layout_default_set_cell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkCellLayoutDataFunc func, + gpointer func_data, + GDestroyNotify destroy); +static void gtk_cell_layout_default_clear_attributes (GtkCellLayout *cell_layout, + GtkCellRenderer *cell); +static void gtk_cell_layout_default_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gint position); +static GList *gtk_cell_layout_default_get_cells (GtkCellLayout *cell_layout); + static void -gtk_cell_layout_default_init (GtkCellLayoutInterface *iface) +gtk_cell_layout_default_init (GtkCellLayoutIface *iface) { + iface->pack_start = gtk_cell_layout_default_pack_start; + iface->pack_end = gtk_cell_layout_default_pack_end; + iface->clear = gtk_cell_layout_default_clear; + iface->add_attribute = gtk_cell_layout_default_add_attribute; + iface->set_cell_data_func = gtk_cell_layout_default_set_cell_data_func; + iface->clear_attributes = gtk_cell_layout_default_clear_attributes; + iface->reorder = gtk_cell_layout_default_reorder; + iface->get_cells = gtk_cell_layout_default_get_cells; } +/* Default implementation is to fall back on an underlying cell area */ +static void +gtk_cell_layout_default_pack_start (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gboolean expand) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (area), cell, expand); + else + warn_no_cell_area ("GtkCellLayoutIface->pack_start()"); + } +} + +static void +gtk_cell_layout_default_pack_end (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gboolean expand) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (area), cell, expand); + else + warn_no_cell_area ("GtkCellLayoutIface->pack_end()"); + } +} + +static void +gtk_cell_layout_default_clear (GtkCellLayout *cell_layout) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_clear (GTK_CELL_LAYOUT (area)); + else + warn_no_cell_area ("GtkCellLayoutIface->clear()"); + } +} + +static void +gtk_cell_layout_default_add_attribute (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + const gchar *attribute, + gint column) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (area), cell, attribute, column); + else + warn_no_cell_area ("GtkCellLayoutIface->add_attribute()"); + } +} + +static void +gtk_cell_layout_default_set_cell_data_func (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + GtkCellLayoutDataFunc func, + gpointer func_data, + GDestroyNotify destroy) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + _gtk_cell_area_set_cell_data_func_with_proxy (area, cell, + (GFunc)func, func_data, destroy, + cell_layout); + else + warn_no_cell_area ("GtkCellLayoutIface->set_cell_data_func()"); + } +} + +static void +gtk_cell_layout_default_clear_attributes (GtkCellLayout *cell_layout, + GtkCellRenderer *cell) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_clear_attributes (GTK_CELL_LAYOUT (area), cell); + else + warn_no_cell_area ("GtkCellLayoutIface->clear_attributes()"); + } +} + +static void +gtk_cell_layout_default_reorder (GtkCellLayout *cell_layout, + GtkCellRenderer *cell, + gint position) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + gtk_cell_layout_reorder (GTK_CELL_LAYOUT (area), cell, position); + else + warn_no_cell_area ("GtkCellLayoutIface->reorder()"); + } +} + +static GList * +gtk_cell_layout_default_get_cells (GtkCellLayout *cell_layout) +{ + GtkCellLayoutIface *iface; + GtkCellArea *area; + + iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); + + if (iface->get_area) + { + area = iface->get_area (cell_layout); + + if (area) + return gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area)); + else + warn_no_cell_area ("GtkCellLayoutIface->get_cells()"); + } + return NULL; +} + + /** * gtk_cell_layout_pack_start: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer. - * @expand: %TRUE if @cell is to be given extra space allocated to @cell_layout. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer + * @expand: %TRUE if @cell is to be given extra space allocated to @cell_layout * * Packs the @cell into the beginning of @cell_layout. If @expand is %FALSE, * then the @cell is allocated no more space than it needs. Any unused space * is divided evenly between cells for which @expand is %TRUE. * - * Note that reusing the same cell renderer is not supported. + * Note that reusing the same cell renderer is not supported. * * Since: 2.4 */ @@ -56,22 +329,20 @@ gtk_cell_layout_pack_start (GtkCellLayout *cell_layout, g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->pack_start) (cell_layout, - cell, - expand); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->pack_start (cell_layout, cell, expand); } /** * gtk_cell_layout_pack_end: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer. - * @expand: %TRUE if @cell is to be given extra space allocated to @cell_layout. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer + * @expand: %TRUE if @cell is to be given extra space allocated to @cell_layout * * Adds the @cell to the end of @cell_layout. If @expand is %FALSE, then the * @cell is allocated no more space than it needs. Any unused space is * divided evenly between cells for which @expand is %TRUE. * - * Note that reusing the same cell renderer is not supported. + * Note that reusing the same cell renderer is not supported. * * Since: 2.4 */ @@ -83,14 +354,12 @@ gtk_cell_layout_pack_end (GtkCellLayout *cell_layout, g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->pack_end) (cell_layout, - cell, - expand); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->pack_end (cell_layout, cell, expand); } /** * gtk_cell_layout_clear: - * @cell_layout: A #GtkCellLayout. + * @cell_layout: a #GtkCellLayout * * Unsets all the mappings on all renderers on @cell_layout and * removes all renderers from @cell_layout. @@ -102,7 +371,7 @@ gtk_cell_layout_clear (GtkCellLayout *cell_layout) { g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->clear) (cell_layout); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->clear (cell_layout); } static void @@ -112,32 +381,32 @@ gtk_cell_layout_set_attributesv (GtkCellLayout *cell_layout, { gchar *attribute; gint column; - GtkCellLayoutIface *iface; attribute = va_arg (args, gchar *); - iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); - - (* iface->clear_attributes) (cell_layout, cell); + gtk_cell_layout_clear_attributes (cell_layout, cell); while (attribute != NULL) { column = va_arg (args, gint); - (* iface->add_attribute) (cell_layout, cell, attribute, column); + + gtk_cell_layout_add_attribute (cell_layout, cell, attribute, column); + attribute = va_arg (args, gchar *); } } /** * gtk_cell_layout_set_attributes: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer. - * @Varargs: A %NULL-terminated list of attributes. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer + * @Varargs: a %NULL-terminated list of attributes * - * Sets the attributes in list as the attributes of @cell_layout. The - * attributes should be in attribute/column order, as in - * gtk_cell_layout_add_attribute(). All existing attributes are removed, and - * replaced with the new attributes. + * Sets the attributes in list as the attributes of @cell_layout. + * + * The attributes should be in attribute/column order, as in + * gtk_cell_layout_add_attribute(). All existing attributes are + * removed, and replaced with the new attributes. * * Since: 2.4 */ @@ -158,16 +427,17 @@ gtk_cell_layout_set_attributes (GtkCellLayout *cell_layout, /** * gtk_cell_layout_add_attribute: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer. - * @attribute: An attribute on the renderer. - * @column: The column position on the model to get the attribute from. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer + * @attribute: an attribute on the renderer + * @column: the column position on the model to get the attribute from * - * Adds an attribute mapping to the list in @cell_layout. The @column is the - * column of the model to get a value from, and the @attribute is the - * parameter on @cell to be set from the value. So for example if column 2 - * of the model contains strings, you could have the "text" attribute of a - * #GtkCellRendererText get its values from column 2. + * Adds an attribute mapping to the list in @cell_layout. + * + * The @column is the column of the model to get a value from, and the + * @attribute is the parameter on @cell to be set from the value. So for + * example if column 2 of the model contains strings, you could have the + * "text" attribute of a #GtkCellRendererText get its values from column 2. * * Since: 2.4 */ @@ -182,24 +452,24 @@ gtk_cell_layout_add_attribute (GtkCellLayout *cell_layout, g_return_if_fail (attribute != NULL); g_return_if_fail (column >= 0); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->add_attribute) (cell_layout, - cell, - attribute, - column); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->add_attribute (cell_layout, cell, attribute, column); } /** * gtk_cell_layout_set_cell_data_func: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer. - * @func: The #GtkCellLayoutDataFunc to use. - * @func_data: The user data for @func. - * @destroy: The destroy notification for @func_data. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer + * @func: (allow-none): the #GtkCellLayoutDataFunc to use, or %NULL + * @func_data: user data for @func + * @destroy: destroy notify for @func_data * - * Sets the #GtkCellLayoutDataFunc to use for @cell_layout. This function - * is used instead of the standard attributes mapping for setting the - * column value, and should set the value of @cell_layout's cell renderer(s) - * as appropriate. @func may be %NULL to remove and older one. + * Sets the #GtkCellLayoutDataFunc to use for @cell_layout. + * + * This function is used instead of the standard attributes mapping + * for setting the column value, and should set the value of @cell_layout's + * cell renderer(s) as appropriate. + * + * @func may be %NULL to remove a previously set function. * * Since: 2.4 */ @@ -213,17 +483,14 @@ gtk_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout, g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->set_cell_data_func) (cell_layout, - cell, - func, - func_data, - destroy); + GTK_CELL_LAYOUT_GET_IFACE + (cell_layout)->set_cell_data_func (cell_layout, cell, func, func_data, destroy); } /** * gtk_cell_layout_clear_attributes: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer to clear the attribute mapping on. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer to clear the attribute mapping on * * Clears all existing attributes previously set with * gtk_cell_layout_set_attributes(). @@ -237,18 +504,19 @@ gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout, g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->clear_attributes) (cell_layout, - cell); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->clear_attributes (cell_layout, cell); } /** * gtk_cell_layout_reorder: - * @cell_layout: A #GtkCellLayout. - * @cell: A #GtkCellRenderer to reorder. - * @position: New position to insert @cell at. + * @cell_layout: a #GtkCellLayout + * @cell: a #GtkCellRenderer to reorder + * @position: new position to insert @cell at * - * Re-inserts @cell at @position. Note that @cell has already to be packed - * into @cell_layout for this to function properly. + * Re-inserts @cell at @position. + * + * Note that @cell has already to be packed into @cell_layout + * for this to function properly. * * Since: 2.4 */ @@ -260,37 +528,57 @@ gtk_cell_layout_reorder (GtkCellLayout *cell_layout, g_return_if_fail (GTK_IS_CELL_LAYOUT (cell_layout)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - (* GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->reorder) (cell_layout, - cell, - position); + GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->reorder (cell_layout, cell, position); } /** * gtk_cell_layout_get_cells: * @cell_layout: a #GtkCellLayout - * + * * Returns the cell renderers which have been added to @cell_layout. * - * Return value: (element-type GtkCellRenderer) (transfer container): a list of cell renderers. The list, but not the - * renderers has been newly allocated and should be freed with - * g_list_free() when no longer needed. + * Return value: (element-type GtkCellRenderer) (transfer container): + * a list of cell renderers. The list, but not the renderers has + * been newly allocated and should be freed with g_list_free() + * when no longer needed. * * Since: 2.12 */ GList * gtk_cell_layout_get_cells (GtkCellLayout *cell_layout) +{ + g_return_val_if_fail (GTK_IS_CELL_LAYOUT (cell_layout), NULL); + + return GTK_CELL_LAYOUT_GET_IFACE (cell_layout)->get_cells (cell_layout); +} + +/** + * gtk_cell_layout_get_area: + * @cell_layout: a #GtkCellLayout + * + * Returns the underlying #GtkCellArea which might be @cell_layout + * if called on a #GtkCellArea or might be %NULL if no #GtkCellArea + * is used by @cell_layout. + * + * Return value: (transfer none): the cell area used by @cell_layout. + * + * Since: 3.0 + */ +GtkCellArea * +gtk_cell_layout_get_area (GtkCellLayout *cell_layout) { GtkCellLayoutIface *iface; g_return_val_if_fail (GTK_IS_CELL_LAYOUT (cell_layout), NULL); iface = GTK_CELL_LAYOUT_GET_IFACE (cell_layout); - if (iface->get_cells) - return iface->get_cells (cell_layout); + if (iface->get_area) + return iface->get_area (cell_layout); return NULL; } +/* Attribute parsing */ typedef struct { GtkCellLayout *cell_layout; GtkCellRenderer *renderer; @@ -364,6 +652,147 @@ static const GMarkupParser attributes_parser = attributes_text_element, }; + +/* Cell packing parsing */ +static void +gtk_cell_layout_buildable_set_cell_property (GtkCellArea *area, + GtkBuilder *builder, + GtkCellRenderer *cell, + gchar *name, + const gchar *value) +{ + GParamSpec *pspec; + GValue gvalue = { 0, }; + GError *error = NULL; + + pspec = gtk_cell_area_class_find_cell_property (GTK_CELL_AREA_GET_CLASS (area), name); + if (!pspec) + { + g_warning ("%s does not have a property called %s", + g_type_name (G_OBJECT_TYPE (area)), name); + return; + } + + if (!gtk_builder_value_from_string (builder, pspec, value, &gvalue, &error)) + { + g_warning ("Could not read property %s:%s with value %s of type %s: %s", + g_type_name (G_OBJECT_TYPE (area)), + name, + value, + g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), + error->message); + g_error_free (error); + return; + } + + gtk_cell_area_cell_set_property (area, cell, name, &gvalue); + g_value_unset (&gvalue); +} + +typedef struct { + GtkBuilder *builder; + GtkCellLayout *cell_layout; + GtkCellRenderer *renderer; + gchar *cell_prop_name; + gchar *context; + gboolean translatable; +} CellPackingSubParserData; + +static void +cell_packing_start_element (GMarkupParseContext *context, + const gchar *element_name, + const gchar **names, + const gchar **values, + gpointer user_data, + GError **error) +{ + CellPackingSubParserData *parser_data = (CellPackingSubParserData*)user_data; + guint i; + + if (strcmp (element_name, "property") == 0) + { + for (i = 0; names[i]; i++) + if (strcmp (names[i], "name") == 0) + parser_data->cell_prop_name = g_strdup (values[i]); + else if (strcmp (names[i], "translatable") == 0) + { + if (!_gtk_builder_boolean_from_string (values[i], + &parser_data->translatable, + error)) + return; + } + else if (strcmp (names[i], "comments") == 0) + ; /* for translators */ + else if (strcmp (names[i], "context") == 0) + parser_data->context = g_strdup (values[i]); + else + g_warning ("Unsupported attribute for GtkCellLayout Cell " + "property: %s\n", names[i]); + } + else if (strcmp (element_name, "cell-packing") == 0) + return; + else + g_warning ("Unsupported tag for GtkCellLayout: %s\n", element_name); +} + +static void +cell_packing_text_element (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) +{ + CellPackingSubParserData *parser_data = (CellPackingSubParserData*)user_data; + GtkCellArea *area; + gchar* value; + + if (!parser_data->cell_prop_name) + return; + + if (parser_data->translatable && text_len) + { + const gchar* domain; + domain = gtk_builder_get_translation_domain (parser_data->builder); + + value = _gtk_builder_parser_translate (domain, + parser_data->context, + text); + } + else + { + value = g_strdup (text); + } + + area = gtk_cell_layout_get_area (parser_data->cell_layout); + + if (!area) + { + g_warning ("%s does not have an internal GtkCellArea class and cannot apply child cell properties", + g_type_name (G_OBJECT_TYPE (parser_data->cell_layout))); + return; + } + + gtk_cell_layout_buildable_set_cell_property (area, + parser_data->builder, + parser_data->renderer, + parser_data->cell_prop_name, + value); + + g_free (parser_data->cell_prop_name); + g_free (parser_data->context); + g_free (value); + parser_data->cell_prop_name = NULL; + parser_data->context = NULL; + parser_data->translatable = FALSE; +} + +static const GMarkupParser cell_packing_parser = + { + cell_packing_start_element, + NULL, + cell_packing_text_element, + }; + gboolean _gtk_cell_layout_buildable_custom_tag_start (GtkBuildable *buildable, GtkBuilder *builder, @@ -372,38 +801,60 @@ _gtk_cell_layout_buildable_custom_tag_start (GtkBuildable *buildable, GMarkupParser *parser, gpointer *data) { - AttributesSubParserData *parser_data; + AttributesSubParserData *attr_data; + CellPackingSubParserData *packing_data; if (!child) return FALSE; if (strcmp (tagname, "attributes") == 0) { - parser_data = g_slice_new0 (AttributesSubParserData); - parser_data->cell_layout = GTK_CELL_LAYOUT (buildable); - parser_data->renderer = GTK_CELL_RENDERER (child); - parser_data->attr_name = NULL; + attr_data = g_slice_new0 (AttributesSubParserData); + attr_data->cell_layout = GTK_CELL_LAYOUT (buildable); + attr_data->renderer = GTK_CELL_RENDERER (child); + attr_data->attr_name = NULL; *parser = attributes_parser; - *data = parser_data; + *data = attr_data; + return TRUE; + } + else if (strcmp (tagname, "cell-packing") == 0) + { + packing_data = g_slice_new0 (CellPackingSubParserData); + packing_data->builder = builder; + packing_data->cell_layout = GTK_CELL_LAYOUT (buildable); + packing_data->renderer = GTK_CELL_RENDERER (child); + + *parser = cell_packing_parser; + *data = packing_data; return TRUE; } return FALSE; } -void +gboolean _gtk_cell_layout_buildable_custom_tag_end (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, gpointer *data) { - AttributesSubParserData *parser_data; + AttributesSubParserData *attr_data; - parser_data = (AttributesSubParserData*)data; - g_assert (!parser_data->attr_name); - g_slice_free (AttributesSubParserData, parser_data); + if (strcmp (tagname, "attributes") == 0) + { + attr_data = (AttributesSubParserData*)data; + g_assert (!attr_data->attr_name); + g_slice_free (AttributesSubParserData, attr_data); + return TRUE; + } + else if (strcmp (tagname, "cell-packing") == 0) + { + g_slice_free (CellPackingSubParserData, (gpointer)data); + return TRUE; + } + return FALSE; } void @@ -412,12 +863,8 @@ _gtk_cell_layout_buildable_add_child (GtkBuildable *buildable, GObject *child, const gchar *type) { - GtkCellLayoutIface *iface; - g_return_if_fail (GTK_IS_CELL_LAYOUT (buildable)); g_return_if_fail (GTK_IS_CELL_RENDERER (child)); - iface = GTK_CELL_LAYOUT_GET_IFACE (buildable); - g_return_if_fail (iface->pack_start != NULL); - iface->pack_start (GTK_CELL_LAYOUT (buildable), GTK_CELL_RENDERER (child), FALSE); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (buildable), GTK_CELL_RENDERER (child), FALSE); } diff --git a/gtk/gtkcelllayout.h b/gtk/gtkcelllayout.h index 04e4745ee9..6ab3844542 100644 --- a/gtk/gtkcelllayout.h +++ b/gtk/gtkcelllayout.h @@ -25,6 +25,7 @@ #define __GTK_CELL_LAYOUT_H__ #include +#include #include #include #include @@ -40,6 +41,17 @@ typedef struct _GtkCellLayout GtkCellLayout; /* dummy typedef */ typedef struct _GtkCellLayoutIface GtkCellLayoutIface; /* keep in sync with GtkTreeCellDataFunc */ +/** + * GtkCellLayoutDataFunc: + * @cell_layout: a #GtkCellLayout + * @cell: the cell renderer whose value is to be set + * @tree_model: the model + * @iter: a #GtkTreeIter indicating the row to set the value for + * @data: user data passed to gtk_cell_layout_set_cell_data_func() + * + * A function which should set the value of @cell_layout's cell renderer(s) + * as appropriate. + */ typedef void (* GtkCellLayoutDataFunc) (GtkCellLayout *cell_layout, GtkCellRenderer *cell, GtkTreeModel *tree_model, @@ -73,6 +85,8 @@ struct _GtkCellLayoutIface GtkCellRenderer *cell, gint position); GList* (* get_cells) (GtkCellLayout *cell_layout); + + GtkCellArea *(* get_area) (GtkCellLayout *cell_layout); }; GType gtk_cell_layout_get_type (void) G_GNUC_CONST; @@ -101,13 +115,15 @@ void gtk_cell_layout_clear_attributes (GtkCellLayout *cell_layout, void gtk_cell_layout_reorder (GtkCellLayout *cell_layout, GtkCellRenderer *cell, gint position); +GtkCellArea *gtk_cell_layout_get_area (GtkCellLayout *cell_layout); + gboolean _gtk_cell_layout_buildable_custom_tag_start (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, GMarkupParser *parser, gpointer *data); -void _gtk_cell_layout_buildable_custom_tag_end (GtkBuildable *buildable, +gboolean _gtk_cell_layout_buildable_custom_tag_end (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const gchar *tagname, diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c index 05e60689d1..b5e738a08c 100644 --- a/gtk/gtkcellrenderer.c +++ b/gtk/gtkcellrenderer.c @@ -21,6 +21,7 @@ #include "gtkcellrenderer.h" #include "gtkintl.h" #include "gtkmarshalers.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtktreeprivate.h" @@ -97,7 +98,11 @@ static void gtk_cell_renderer_real_get_preferred_width_for_height(GtkCellRendere gint height, gint *minimum_width, gint *natural_width); - +static void gtk_cell_renderer_real_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area); struct _GtkCellRendererPrivate @@ -192,6 +197,7 @@ gtk_cell_renderer_class_init (GtkCellRendererClass *class) class->get_preferred_height = gtk_cell_renderer_real_get_preferred_height; class->get_preferred_width_for_height = gtk_cell_renderer_real_get_preferred_width_for_height; class->get_preferred_height_for_width = gtk_cell_renderer_real_get_preferred_height_for_width; + class->get_aligned_area = gtk_cell_renderer_real_get_aligned_area; /** * GtkCellRenderer::editing-canceled: @@ -693,6 +699,9 @@ gtk_cell_renderer_render (GtkCellRenderer *cell, cairo_fill (cr); } + gdk_cairo_rectangle (cr, background_area); + cairo_clip (cr); + GTK_CELL_RENDERER_GET_CLASS (cell)->render (cell, cr, widget, @@ -1097,6 +1106,32 @@ gtk_cell_renderer_get_sensitive (GtkCellRenderer *cell) return cell->priv->sensitive; } + +/** + * gtk_cell_renderer_is_activatable: + * @cell: A #GtkCellRenderer + * + * Checks whether the cell renderer can do something when activated. + * + * Returns: %TRUE if the cell renderer can do anything when activated. + * + * Since: 3.0 + */ +gboolean +gtk_cell_renderer_is_activatable (GtkCellRenderer *cell) +{ + GtkCellRendererPrivate *priv; + + g_return_val_if_fail (GTK_IS_CELL_RENDERER (cell), FALSE); + + priv = cell->priv; + + return (cell->priv->visible && + (cell->priv->mode == GTK_CELL_RENDERER_MODE_EDITABLE || + cell->priv->mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE)); +} + + /** * gtk_cell_renderer_stop_editing: * @cell: A #GtkCellRenderer @@ -1210,6 +1245,67 @@ gtk_cell_renderer_real_get_preferred_width_for_height (GtkCellRenderer *cell, gtk_cell_renderer_get_preferred_width (cell, widget, minimum_width, natural_width); } + +/* Default implementation assumes that a cell renderer will never use more + * space than it's natural size (this is fine for toggles and pixbufs etc + * but needs to be overridden from wrapping/ellipsizing text renderers) */ +static void +gtk_cell_renderer_real_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area) +{ + gint opposite_size, x_offset, y_offset; + gint natural_size; + + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (cell_area != NULL); + g_return_if_fail (aligned_area != NULL); + + *aligned_area = *cell_area; + + /* Trim up the aligned size */ + if (gtk_cell_renderer_get_request_mode (cell) == GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH) + { + gtk_cell_renderer_get_preferred_width (cell, widget, + NULL, &natural_size); + + aligned_area->width = MIN (aligned_area->width, natural_size); + + gtk_cell_renderer_get_preferred_height_for_width (cell, widget, + aligned_area->width, + NULL, &opposite_size); + + aligned_area->height = MIN (opposite_size, aligned_area->height); + } + else + { + gtk_cell_renderer_get_preferred_height (cell, widget, + NULL, &natural_size); + + aligned_area->height = MIN (aligned_area->width, natural_size); + + gtk_cell_renderer_get_preferred_width_for_height (cell, widget, + aligned_area->height, + NULL, &opposite_size); + + aligned_area->width = MIN (opposite_size, aligned_area->width); + } + + /* offset the cell position */ + _gtk_cell_renderer_calc_offset (cell, cell_area, + gtk_widget_get_direction (widget), + aligned_area->width, + aligned_area->height, + &x_offset, &y_offset); + + aligned_area->x += x_offset; + aligned_area->y += y_offset; +} + + /* An internal convenience function for some containers to peek at the * cell alignment in a target allocation (used to draw focus and align * cells in the icon view). @@ -1474,17 +1570,12 @@ gtk_cell_renderer_get_preferred_height_for_width (GtkCellRenderer *cell, * gtk_cell_renderer_get_preferred_size: * @cell: a #GtkCellRenderer instance * @widget: the #GtkWidget this cell will be rendering to - * @request_natural: Whether to base the contextual request off of the - * base natural or the base minimum * @minimum_size: (out) (allow-none): location for storing the minimum size, or %NULL * @natural_size: (out) (allow-none): location for storing the natural size, or %NULL * * Retrieves the minimum and natural size of a cell taking * into account the widget's preference for height-for-width management. * - * If request_natural is specified, the non-contextual natural value will - * be used to make the contextual request; otherwise the minimum will be used. - * * Since: 3.0 */ void @@ -1535,3 +1626,40 @@ gtk_cell_renderer_get_preferred_size (GtkCellRenderer *cell, } } } + +/** + * gtk_cell_renderer_get_aligned_area: + * @cell: a #GtkCellRenderer instance + * @widget: the #GtkWidget this cell will be rendering to + * @flags: render flags + * @cell_area: cell area which would be passed to gtk_cell_renderer_render() + * @aligned_area: the return location for the space inside @cell_area that + * would acually be used to render. + * + * Gets the aligned area used by @cell inside @cell_area. Used for finding + * the appropriate edit and focus rectangle. + * + * Since: 3.0 + */ +void +gtk_cell_renderer_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area) +{ + GtkCellRendererClass *klass; + + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (cell_area != NULL); + g_return_if_fail (aligned_area != NULL); + + klass = GTK_CELL_RENDERER_GET_CLASS (cell); + klass->get_aligned_area (cell, widget, flags, cell_area, aligned_area); + + g_assert (aligned_area->x >= cell_area->x && aligned_area->x <= cell_area->x + cell_area->width); + g_assert (aligned_area->y >= cell_area->y && aligned_area->y <= cell_area->y + cell_area->height); + g_assert ((aligned_area->x - cell_area->x) + aligned_area->width <= cell_area->width); + g_assert ((aligned_area->y - cell_area->y) + aligned_area->height <= cell_area->height); +} diff --git a/gtk/gtkcellrenderer.h b/gtk/gtkcellrenderer.h index d2abd128bd..22e86379cf 100644 --- a/gtk/gtkcellrenderer.h +++ b/gtk/gtkcellrenderer.h @@ -111,6 +111,11 @@ struct _GtkCellRendererClass gint height, gint *minimum_width, gint *natural_width); + void (* get_aligned_area) (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area); void (* get_size) (GtkCellRenderer *cell, GtkWidget *widget, const GdkRectangle *cell_area, @@ -177,6 +182,12 @@ void gtk_cell_renderer_get_preferred_size (GtkCellRend GtkWidget *widget, GtkRequisition *minimum_size, GtkRequisition *natural_size); +void gtk_cell_renderer_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area); + #ifndef GTK_DISABLE_DEPRECATED void gtk_cell_renderer_get_size (GtkCellRenderer *cell, GtkWidget *widget, @@ -236,6 +247,8 @@ void gtk_cell_renderer_set_sensitive (GtkCellRenderer *cell, gboolean sensitive); gboolean gtk_cell_renderer_get_sensitive (GtkCellRenderer *cell); +gboolean gtk_cell_renderer_is_activatable (GtkCellRenderer *cell); + /* For use by cell renderer implementations only */ void gtk_cell_renderer_stop_editing (GtkCellRenderer *cell, gboolean canceled); diff --git a/gtk/gtkcellrendereraccel.c b/gtk/gtkcellrendereraccel.c index b0a42dbc36..04d5d6de08 100644 --- a/gtk/gtkcellrendereraccel.c +++ b/gtk/gtkcellrendereraccel.c @@ -21,8 +21,6 @@ #include "gtkcellrendereraccel.h" -#include "gdk/gdkkeysyms.h" - #include "gtkintl.h" #include "gtkaccelgroup.h" #include "gtkmarshalers.h" @@ -30,6 +28,7 @@ #include "gtkeventbox.h" #include "gtkmain.h" #include "gtksizerequest.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" @@ -168,14 +167,14 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class) * Since: 2.10 */ g_object_class_install_property (object_class, - PROP_KEYCODE, - g_param_spec_uint ("keycode", - P_("Accelerator keycode"), - P_("The hardware keycode of the accelerator"), - 0, - G_MAXINT, - 0, - GTK_PARAM_READWRITE)); + PROP_KEYCODE, + g_param_spec_uint ("keycode", + P_("Accelerator keycode"), + P_("The hardware keycode of the accelerator"), + 0, + G_MAXINT, + 0, + GTK_PARAM_READWRITE)); /** * GtkCellRendererAccel:accel-mode: @@ -190,11 +189,11 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class) g_object_class_install_property (object_class, PROP_ACCEL_MODE, g_param_spec_enum ("accel-mode", - P_("Accelerator Mode"), - P_("The type of accelerators"), - GTK_TYPE_CELL_RENDERER_ACCEL_MODE, - GTK_CELL_RENDERER_ACCEL_MODE_GTK, - GTK_PARAM_READWRITE)); + P_("Accelerator Mode"), + P_("The type of accelerators"), + GTK_TYPE_CELL_RENDERER_ACCEL_MODE, + GTK_CELL_RENDERER_ACCEL_MODE_GTK, + GTK_PARAM_READWRITE)); /** * GtkCellRendererAccel::accel-edited: @@ -209,16 +208,16 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class) * Since: 2.10 */ signals[ACCEL_EDITED] = g_signal_new (I_("accel-edited"), - GTK_TYPE_CELL_RENDERER_ACCEL, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_edited), - NULL, NULL, - _gtk_marshal_VOID__STRING_UINT_FLAGS_UINT, - G_TYPE_NONE, 4, - G_TYPE_STRING, - G_TYPE_UINT, - GDK_TYPE_MODIFIER_TYPE, - G_TYPE_UINT); + GTK_TYPE_CELL_RENDERER_ACCEL, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_edited), + NULL, NULL, + _gtk_marshal_VOID__STRING_UINT_FLAGS_UINT, + G_TYPE_NONE, 4, + G_TYPE_STRING, + G_TYPE_UINT, + GDK_TYPE_MODIFIER_TYPE, + G_TYPE_UINT); /** * GtkCellRendererAccel::accel-cleared: @@ -230,13 +229,13 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class) * Since: 2.10 */ signals[ACCEL_CLEARED] = g_signal_new (I_("accel-cleared"), - GTK_TYPE_CELL_RENDERER_ACCEL, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_cleared), - NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, 1, - G_TYPE_STRING); + GTK_TYPE_CELL_RENDERER_ACCEL, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_cleared), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, + G_TYPE_STRING); g_type_class_add_private (cell_accel_class, sizeof (GtkCellRendererAccelPrivate)); } @@ -259,9 +258,9 @@ gtk_cell_renderer_accel_new (void) static gchar * convert_keysym_state_to_string (GtkCellRendererAccel *accel, - guint keysym, + guint keysym, GdkModifierType mask, - guint keycode) + guint keycode) { GtkCellRendererAccelPrivate *priv = accel->priv; @@ -284,24 +283,24 @@ convert_keysym_state_to_string (GtkCellRendererAccel *accel, return gtk_accelerator_get_label (keysym, mask); } else - { - gchar *name; + { + gchar *name; - name = gtk_accelerator_get_label (keysym, mask); - if (name == NULL) - name = gtk_accelerator_name (keysym, mask); + name = gtk_accelerator_get_label (keysym, mask); + if (name == NULL) + name = gtk_accelerator_name (keysym, mask); - if (keysym == 0) - { - gchar *tmp; + if (keysym == 0) + { + gchar *tmp; - tmp = name; - name = g_strdup_printf ("%s0x%02x", tmp, keycode); - g_free (tmp); - } + tmp = name; + name = g_strdup_printf ("%s0x%02x", tmp, keycode); + g_free (tmp); + } - return name; - } + return name; + } } } @@ -350,36 +349,36 @@ gtk_cell_renderer_accel_set_property (GObject *object, { case PROP_ACCEL_KEY: { - guint accel_key = g_value_get_uint (value); + guint accel_key = g_value_get_uint (value); - if (priv->accel_key != accel_key) - { - priv->accel_key = accel_key; - changed = TRUE; - } + if (priv->accel_key != accel_key) + { + priv->accel_key = accel_key; + changed = TRUE; + } } break; case PROP_ACCEL_MODS: { - guint accel_mods = g_value_get_flags (value); + guint accel_mods = g_value_get_flags (value); - if (priv->accel_mods != accel_mods) - { - priv->accel_mods = accel_mods; - changed = TRUE; - } + if (priv->accel_mods != accel_mods) + { + priv->accel_mods = accel_mods; + changed = TRUE; + } } break; case PROP_KEYCODE: { - guint keycode = g_value_get_uint (value); + guint keycode = g_value_get_uint (value); - if (priv->keycode != keycode) - { - priv->keycode = keycode; - changed = TRUE; - } + if (priv->keycode != keycode) + { + priv->keycode = keycode; + changed = TRUE; + } } break; @@ -452,10 +451,10 @@ grab_key_callback (GtkWidget *widget, cleared = FALSE; gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (display), - event->hardware_keycode, + event->hardware_keycode, event->state, event->group, - NULL, NULL, NULL, &consumed_modifiers); + NULL, NULL, NULL, &consumed_modifiers); accel_key = gdk_keyval_to_lower (event->keyval); if (accel_key == GDK_KEY_ISO_Left_Tab) @@ -476,26 +475,26 @@ grab_key_callback (GtkWidget *widget, if (accel_mods == 0) { switch (event->keyval) - { - case GDK_KEY_Escape: - goto out; /* cancel */ - case GDK_KEY_BackSpace: - /* clear the accelerator on Backspace */ - cleared = TRUE; - goto out; - default: - break; - } + { + case GDK_KEY_Escape: + goto out; /* cancel */ + case GDK_KEY_BackSpace: + /* clear the accelerator on Backspace */ + cleared = TRUE; + goto out; + default: + break; + } } if (priv->accel_mode == GTK_CELL_RENDERER_ACCEL_MODE_GTK) { if (!gtk_accelerator_valid (accel_key, accel_mods)) - { - gtk_widget_error_bell (widget); + { + gtk_widget_error_bell (widget); - return TRUE; - } + return TRUE; + } } edited = TRUE; @@ -516,7 +515,7 @@ grab_key_callback (GtkWidget *widget, if (edited) g_signal_emit (accel, signals[ACCEL_EDITED], 0, path, - accel_key, accel_mods, event->hardware_keycode); + accel_key, accel_mods, event->hardware_keycode); else if (cleared) g_signal_emit (accel, signals[ACCEL_CLEARED], 0, path); @@ -545,7 +544,7 @@ ungrab_stuff (GtkWidget *widget, static void _gtk_cell_editable_event_box_start_editing (GtkCellEditable *cell_editable, - GdkEvent *event) + GdkEvent *event) { /* do nothing, because we are pointless */ } @@ -556,17 +555,73 @@ _gtk_cell_editable_event_box_cell_editable_init (GtkCellEditableIface *iface) iface->start_editing = _gtk_cell_editable_event_box_start_editing; } -typedef GtkEventBox GtkCellEditableEventBox; -typedef GtkEventBoxClass GtkCellEditableEventBoxClass; +typedef struct _GtkCellEditableEventBox GtkCellEditableEventBox; +typedef GtkEventBoxClass GtkCellEditableEventBoxClass; + +struct _GtkCellEditableEventBox +{ + GtkEventBox box; + gboolean editing_canceled; +}; G_DEFINE_TYPE_WITH_CODE (GtkCellEditableEventBox, _gtk_cell_editable_event_box, GTK_TYPE_EVENT_BOX, { \ G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_EDITABLE, _gtk_cell_editable_event_box_cell_editable_init) \ }) +enum { + PROP_ZERO, + PROP_EDITING_CANCELED +}; + +static void +gtk_cell_editable_event_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkCellEditableEventBox *box = (GtkCellEditableEventBox*)object; + + switch (prop_id) + { + case PROP_EDITING_CANCELED: + box->editing_canceled = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_cell_editable_event_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkCellEditableEventBox *box = (GtkCellEditableEventBox*)object; + + switch (prop_id) + { + case PROP_EDITING_CANCELED: + g_value_set_boolean (value, box->editing_canceled); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} static void _gtk_cell_editable_event_box_class_init (GtkCellEditableEventBoxClass *class) { + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + + gobject_class->set_property = gtk_cell_editable_event_box_set_property; + gobject_class->get_property = gtk_cell_editable_event_box_get_property; + + g_object_class_override_property (gobject_class, + PROP_EDITING_CANCELED, + "editing-canceled"); } static void diff --git a/gtk/gtkcellrendererpixbuf.c b/gtk/gtkcellrendererpixbuf.c index 729d08a89d..8a191d981a 100644 --- a/gtk/gtkcellrendererpixbuf.c +++ b/gtk/gtkcellrendererpixbuf.c @@ -481,10 +481,9 @@ gtk_cell_renderer_pixbuf_create_stock_pixbuf (GtkCellRendererPixbuf *cellpixbuf, if (priv->pixbuf) g_object_unref (priv->pixbuf); - priv->pixbuf = gtk_widget_render_icon (widget, - priv->stock_id, - priv->stock_size, - priv->stock_detail); + priv->pixbuf = gtk_widget_render_icon_pixbuf (widget, + priv->stock_id, + priv->stock_size); g_object_notify (G_OBJECT (cellpixbuf), "pixbuf"); } diff --git a/gtk/gtkcellrendererprogress.c b/gtk/gtkcellrendererprogress.c index 20abba0fcd..ba69ae1d42 100644 --- a/gtk/gtkcellrendererprogress.c +++ b/gtk/gtkcellrendererprogress.c @@ -93,7 +93,7 @@ static void gtk_cell_renderer_progress_render (GtkCellRenderer *ce GtkWidget *widget, const GdkRectangle *background_area, const GdkRectangle *cell_area, - guint flags); + GtkCellRendererState flags); G_DEFINE_TYPE_WITH_CODE (GtkCellRendererProgress, gtk_cell_renderer_progress, GTK_TYPE_CELL_RENDERER, @@ -604,12 +604,13 @@ gtk_cell_renderer_progress_render (GtkCellRenderer *cell, clip.y = bar_position; } - gtk_paint_box (style, - cr, - GTK_STATE_SELECTED, GTK_SHADOW_OUT, - widget, "bar", - clip.x, clip.y, - clip.width, clip.height); + if (bar_size > 0) + gtk_paint_box (style, + cr, + GTK_STATE_SELECTED, GTK_SHADOW_OUT, + widget, "bar", + clip.x, clip.y, + clip.width, clip.height); if (priv->label) { diff --git a/gtk/gtkcellrendererspin.c b/gtk/gtkcellrendererspin.c index 2a7fc10ddf..bd620b4c55 100644 --- a/gtk/gtkcellrendererspin.c +++ b/gtk/gtkcellrendererspin.c @@ -21,7 +21,7 @@ */ #include "config.h" -#include + #include "gtkintl.h" #include "gtkprivate.h" #include "gtkspinbutton.h" @@ -323,9 +323,11 @@ gtk_cell_renderer_spin_start_editing (GtkCellRenderer *cell, g_object_get (cell_text, "text", &text, NULL); if (text) - gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), - g_ascii_strtod (text, NULL)); - g_free (text); + { + gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), + g_strtod (text, NULL)); + g_free (text); + } g_object_set_data_full (G_OBJECT (spin), GTK_CELL_RENDERER_SPIN_PATH, g_strdup (path), g_free); diff --git a/gtk/gtkcellrendererspinner.c b/gtk/gtkcellrendererspinner.c index 5d50f8dfdd..e609fe7b23 100644 --- a/gtk/gtkcellrendererspinner.c +++ b/gtk/gtkcellrendererspinner.c @@ -32,7 +32,7 @@ #include "gtkcellrendererspinner.h" #include "gtkiconfactory.h" #include "gtkicontheme.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" @@ -126,10 +126,8 @@ gtk_cell_renderer_spinner_class_init (GtkCellRendererSpinnerClass *klass) * Pulse of the spinner. Increment this value to draw the next frame of the * spinner animation. Usually, you would update this value in a timeout. * - * The #GtkSpinner widget draws one full cycle of the animation per second by default. - * You can learn about the number of frames used by the theme - * by looking at the #GtkSpinner:num-steps style property and the duration - * of the cycle by looking at #GtkSpinner:cycle-duration. + * By default, the #GtkSpinner widget draws one full cycle of the animation, + * consisting of 12 frames, in 750 milliseconds. * * Since: 2.20 */ @@ -172,7 +170,7 @@ gtk_cell_renderer_spinner_init (GtkCellRendererSpinner *cell) } /** - * gtk_cell_renderer_spinner_new + * gtk_cell_renderer_spinner_new: * * Returns a new cell renderer which will show a spinner to indicate * activity. @@ -372,6 +370,11 @@ gtk_cell_renderer_spinner_render (GtkCellRenderer *cellr, state = GTK_STATE_PRELIGHT; } + cairo_save (cr); + + gdk_cairo_rectangle (cr, cell_area); + cairo_clip (cr); + gtk_paint_spinner (gtk_widget_get_style (widget), cr, state, @@ -380,4 +383,6 @@ gtk_cell_renderer_spinner_render (GtkCellRenderer *cellr, priv->pulse, draw_rect.x, draw_rect.y, draw_rect.width, draw_rect.height); + + cairo_restore (cr); } diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index cf58d4dacb..a54b274559 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -84,6 +84,13 @@ static void gtk_cell_renderer_text_get_preferred_height_for_width (GtkCell gint width, gint *minimum_height, gint *natural_height); +static void gtk_cell_renderer_text_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area); + + enum { EDITED, @@ -240,6 +247,7 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class) cell_class->get_preferred_width = gtk_cell_renderer_text_get_preferred_width; cell_class->get_preferred_height = gtk_cell_renderer_text_get_preferred_height; cell_class->get_preferred_height_for_width = gtk_cell_renderer_text_get_preferred_height_for_width; + cell_class->get_aligned_area = gtk_cell_renderer_text_get_aligned_area; g_object_class_install_property (object_class, PROP_TEXT, @@ -1728,40 +1736,15 @@ get_size (GtkCellRenderer *cell, pango_layout_get_pixel_extents (layout, NULL, &rect); - if (height) - *height = ypad * 2 + rect.height; - - /* The minimum size for ellipsized labels is ~ 3 chars */ - if (width) - { - if (priv->ellipsize || priv->width_chars > 0) - { - PangoContext *context; - PangoFontMetrics *metrics; - gint char_width; - - context = pango_layout_get_context (layout); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, - pango_context_get_language (context)); - - char_width = pango_font_metrics_get_approximate_char_width (metrics); - pango_font_metrics_unref (metrics); - - *width = xpad * 2 + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); - } - else - { - *width = xpad * 2 + rect.x + rect.width; - } - } - if (cell_area) { gfloat xalign, yalign; gtk_cell_renderer_get_alignment (cell, &xalign, &yalign); + rect.height = MIN (rect.height, cell_area->height - 2 * ypad); + rect.width = MIN (rect.width, cell_area->width - (2 * xpad) - rect.x); + if (x_offset) { if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) @@ -1784,6 +1767,12 @@ get_size (GtkCellRenderer *cell, if (y_offset) *y_offset = 0; } + if (height) + *height = ypad * 2 + rect.height; + + if (width) + *width = xpad * 2 + rect.x + rect.width; + g_object_unref (layout); } @@ -1847,6 +1836,11 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, else if (priv->wrap_width == -1) pango_layout_set_width (layout, -1); + cairo_save (cr); + + gdk_cairo_rectangle (cr, cell_area); + cairo_clip (cr); + gtk_paint_layout (gtk_widget_get_style (widget), cr, state, @@ -1857,6 +1851,8 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, cell_area->y + y_offset + ypad, layout); + cairo_restore (cr); + g_object_unref (layout); } @@ -2117,7 +2113,7 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, PangoContext *context; PangoFontMetrics *metrics; PangoRectangle rect; - gint char_width, digit_width, char_pixels, text_width, ellipsize_chars, guess_width, xpad; + gint char_width, digit_width, char_pixels, text_width, ellipsize_chars, xpad; gint min_width, nat_width; /* "width-chars" Hard-coded minimum width: @@ -2138,10 +2134,6 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, layout = get_layout (celltext, widget, NULL, 0); - /* Get the layout with the text possibly wrapping at wrap_width */ - pango_layout_get_pixel_extents (layout, NULL, &rect); - guess_width = rect.width; - /* Fetch the length of the complete unwrapped text */ pango_layout_set_width (layout, -1); pango_layout_get_extents (layout, NULL, &rect); @@ -2167,18 +2159,21 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, if ((priv->ellipsize_set && priv->ellipsize != PANGO_ELLIPSIZE_NONE) || priv->width_chars > 0) min_width = - xpad * 2 + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, ellipsize_chars)); + xpad * 2 + + MIN (PANGO_PIXELS_CEIL (text_width), + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, ellipsize_chars))); /* If no width-chars set, minimum for wrapping text will be the wrap-width */ else if (priv->wrap_width > -1) - min_width = xpad * 2 + rect.x + priv->wrap_width; + min_width = xpad * 2 + rect.x + MIN (PANGO_PIXELS_CEIL (text_width), priv->wrap_width); else - min_width = xpad * 2 + rect.x + guess_width; + min_width = xpad * 2 + rect.x + PANGO_PIXELS_CEIL (text_width); if (priv->width_chars > 0) nat_width = xpad * 2 + - MAX ((PANGO_PIXELS (char_width) * priv->width_chars), PANGO_PIXELS (text_width)); + MAX ((PANGO_PIXELS (char_width) * priv->width_chars), PANGO_PIXELS_CEIL (text_width)); else - nat_width = xpad * 2 + PANGO_PIXELS (text_width); + nat_width = xpad * 2 + PANGO_PIXELS_CEIL (text_width); + nat_width = MAX (nat_width, min_width); @@ -2195,7 +2190,6 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, if (natural_size) *natural_size = nat_width; - } static void @@ -2250,3 +2244,24 @@ gtk_cell_renderer_text_get_preferred_height (GtkCellRenderer *cell, minimum_size, natural_size); } +static void +gtk_cell_renderer_text_get_aligned_area (GtkCellRenderer *cell, + GtkWidget *widget, + GtkCellRendererState flags, + const GdkRectangle *cell_area, + GdkRectangle *aligned_area) +{ + GtkCellRendererText *celltext = GTK_CELL_RENDERER_TEXT (cell); + PangoLayout *layout; + gint x_offset = 0; + gint y_offset = 0; + + layout = get_layout (celltext, widget, cell_area, flags); + get_size (cell, widget, cell_area, layout, &x_offset, &y_offset, + &aligned_area->width, &aligned_area->height); + + aligned_area->x = cell_area->x + x_offset; + aligned_area->y = cell_area->y + y_offset; + + g_object_unref (layout); +} diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c index e1aa78e03f..177cafd32a 100644 --- a/gtk/gtkcellrenderertoggle.c +++ b/gtk/gtkcellrenderertoggle.c @@ -372,6 +372,11 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell, state = GTK_STATE_INSENSITIVE; } + cairo_save (cr); + + gdk_cairo_rectangle (cr, cell_area); + cairo_clip (cr); + if (priv->radio) { gtk_paint_option (gtk_widget_get_style (widget), @@ -392,6 +397,8 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell, cell_area->y + y_offset + ypad, width, height); } + + cairo_restore (cr); } static gint diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c index 77079f0c7f..e47d5eac71 100644 --- a/gtk/gtkcellview.c +++ b/gtk/gtkcellview.c @@ -21,11 +21,12 @@ #include #include "gtkcellview.h" #include "gtkcelllayout.h" +#include "gtkcellareabox.h" #include "gtkintl.h" #include "gtkcellrenderertext.h" #include "gtkcellrendererpixbuf.h" #include "gtkprivate.h" -#include "gtksizerequest.h" +#include "gtkorientable.h" #include #include "gtkbuildable.h" @@ -35,45 +36,24 @@ * @Short_description: A widget displaying a single row of a GtkTreeModel * @Title: GtkCellView * - * A #GtkCellView displays a single row of a #GtkTreeModel, using - * cell renderers just like #GtkTreeView. #GtkCellView doesn't support - * some of the more complex features of #GtkTreeView, like cell editing - * and drag and drop. + * A #GtkCellView displays a single row of a #GtkTreeModel using a #GtkCellArea + * and #GtkCellAreaContext. A #GtkCellAreaContext can be provided to the + * #GtkCellView at construction time in order to keep the cellview in context + * of a group of cell views, this ensures that the renderers displayed will + * be properly aligned with eachother (like the aligned cells in the menus + * of #GtkComboBox). + * + * #GtkCellView is #GtkOrientable in order to decide in which orientation + * the underlying #GtkCellAreaContext should be allocated. Taking the #GtkComboBox + * menu as an example, cellviews should be oriented horizontally if the menus are + * listed top-to-bottom and thus all share the same width but may have separate + * individual heights (left-to-right menus should be allocated vertically since + * they all share the same height but may have variable widths). */ - - -typedef struct _GtkCellViewCellInfo GtkCellViewCellInfo; -struct _GtkCellViewCellInfo -{ - GtkCellRenderer *cell; - - gint requested_width; - gint natural_width; - gint real_width; - guint expand : 1; - guint pack : 1; - - GSList *attributes; - - GtkCellLayoutDataFunc func; - gpointer func_data; - GDestroyNotify destroy; -}; - -struct _GtkCellViewPrivate -{ - GtkTreeModel *model; - GtkTreeRowReference *displayed_row; - GList *cell_list; - gint spacing; - - GdkRGBA background; - gboolean background_set; -}; - - -static void gtk_cell_view_cell_layout_init (GtkCellLayoutIface *iface); +static GObject *gtk_cell_view_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); static void gtk_cell_view_get_property (GObject *object, guint param_id, GValue *value, @@ -83,6 +63,7 @@ static void gtk_cell_view_set_property (GObject *obj const GValue *value, GParamSpec *pspec); static void gtk_cell_view_finalize (GObject *object); +static void gtk_cell_view_dispose (GObject *object); static void gtk_cell_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gboolean gtk_cell_view_draw (GtkWidget *widget, @@ -91,33 +72,12 @@ static void gtk_cell_view_set_value (GtkCellView *cell GtkCellRenderer *renderer, gchar *property, GValue *value); -static GtkCellViewCellInfo *gtk_cell_view_get_cell_info (GtkCellView *cellview, - GtkCellRenderer *renderer); static void gtk_cell_view_set_cell_data (GtkCellView *cell_view); +/* celllayout */ +static void gtk_cell_view_cell_layout_init (GtkCellLayoutIface *iface); +static GtkCellArea *gtk_cell_view_cell_layout_get_area (GtkCellLayout *layout); -static void gtk_cell_view_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand); -static void gtk_cell_view_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand); -static void gtk_cell_view_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *renderer, - const gchar *attribute, - gint column); -static void gtk_cell_view_cell_layout_clear (GtkCellLayout *layout); -static void gtk_cell_view_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *renderer); -static void gtk_cell_view_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy); -static void gtk_cell_view_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position); -static GList * gtk_cell_view_cell_layout_get_cells (GtkCellLayout *layout); /* buildable */ static void gtk_cell_view_buildable_init (GtkBuildableIface *iface); @@ -148,35 +108,70 @@ static void gtk_cell_view_get_preferred_height_for_width (GtkWidget gint *minimum_size, gint *natural_size); -static GtkBuildableIface *parent_buildable_iface; +static void context_size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkWidget *view); +static void row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkCellView *view); +struct _GtkCellViewPrivate +{ + GtkTreeModel *model; + GtkTreeRowReference *displayed_row; + + GtkCellArea *area; + GtkCellAreaContext *context; + + GtkOrientation orientation; + + GdkRGBA background; + gboolean background_set; + + gulong size_changed_id; + gulong row_changed_id; + + guint32 draw_sensitive : 1; + guint32 fit_model : 1; +}; + +static GtkBuildableIface *parent_buildable_iface; + enum { PROP_0, + PROP_ORIENTATION, PROP_BACKGROUND, PROP_BACKGROUND_GDK, PROP_BACKGROUND_RGBA, PROP_BACKGROUND_SET, - PROP_MODEL + PROP_MODEL, + PROP_CELL_AREA, + PROP_CELL_AREA_CONTEXT, + PROP_DRAW_SENSITIVE, + PROP_FIT_MODEL }; G_DEFINE_TYPE_WITH_CODE (GtkCellView, gtk_cell_view, GTK_TYPE_WIDGET, G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, gtk_cell_view_cell_layout_init) G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_cell_view_buildable_init)) - + gtk_cell_view_buildable_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL)); static void gtk_cell_view_class_init (GtkCellViewClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + gobject_class->constructor = gtk_cell_view_constructor; gobject_class->get_property = gtk_cell_view_get_property; gobject_class->set_property = gtk_cell_view_set_property; gobject_class->finalize = gtk_cell_view_finalize; + gobject_class->dispose = gtk_cell_view_dispose; widget_class->draw = gtk_cell_view_draw; widget_class->size_allocate = gtk_cell_view_size_allocate; @@ -186,6 +181,8 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) widget_class->get_preferred_height_for_width = gtk_cell_view_get_preferred_height_for_width; /* properties */ + g_object_class_override_property (gobject_class, PROP_ORIENTATION, "orientation"); + g_object_class_install_property (gobject_class, PROP_BACKGROUND, g_param_spec_string ("background", @@ -229,6 +226,85 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) P_("The model for cell view"), GTK_TYPE_TREE_MODEL, GTK_PARAM_READWRITE)); + + + /** + * GtkCellView:cell-area + * + * The #GtkCellArea rendering cells + * + * since 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * GtkCellView:cell-area-context + * + * The #GtkCellAreaContext used to compute the geometry of the cell view. + * + * A group of cell views can be assigned the same context in order to + * ensure the sizes and cell alignments match across all the views with + * the same context. + * + * #GtkComboBox menus uses this to assign the same context to all cell views + * in the menu items for a single menu (each submenu creates it's own + * context since the size of each submenu does not depend on parent + * or sibling menus). + * + * since 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_CELL_AREA_CONTEXT, + g_param_spec_object ("cell-area-context", + P_("Cell Area Context"), + P_("The GtkCellAreaContext used to " + "compute the geometry of the cell view"), + GTK_TYPE_CELL_AREA_CONTEXT, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * GtkCellView:draw-sensitive + * + * Whether all cells should be draw as sensitive for this view regardless + * of the actual cell properties (used to make menus with submenus appear + * sensitive when the items in submenus might be insensitive). + * + * since 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_DRAW_SENSITIVE, + g_param_spec_boolean ("draw-sensitive", + P_("Draw Sensitive"), + P_("Whether to force cells to be drawn in a " + "sensitive state"), + FALSE, + GTK_PARAM_READWRITE)); + + /** + * GtkCellView:fit-model + * + * Whether the view should request enough space to always fit + * the size of every row in the model (used by the combo box to + * ensure the combo box size doesnt change when different items + * are selected). + * + * since 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_FIT_MODEL, + g_param_spec_boolean ("fit-model", + P_("Fit Model"), + P_("Whether to request enough space for " + "every row in the model"), + FALSE, + GTK_PARAM_READWRITE)); + #define ADD_SET_PROP(propname, propval, nick, blurb) g_object_class_install_property (gobject_class, propval, g_param_spec_boolean (propname, nick, blurb, FALSE, GTK_PARAM_READWRITE)) @@ -251,14 +327,39 @@ gtk_cell_view_buildable_init (GtkBuildableIface *iface) static void gtk_cell_view_cell_layout_init (GtkCellLayoutIface *iface) { - iface->pack_start = gtk_cell_view_cell_layout_pack_start; - iface->pack_end = gtk_cell_view_cell_layout_pack_end; - iface->clear = gtk_cell_view_cell_layout_clear; - iface->add_attribute = gtk_cell_view_cell_layout_add_attribute; - iface->set_cell_data_func = gtk_cell_view_cell_layout_set_cell_data_func; - iface->clear_attributes = gtk_cell_view_cell_layout_clear_attributes; - iface->reorder = gtk_cell_view_cell_layout_reorder; - iface->get_cells = gtk_cell_view_cell_layout_get_cells; + iface->get_area = gtk_cell_view_cell_layout_get_area; +} + +static GObject * +gtk_cell_view_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) +{ + GObject *object; + GtkCellView *view; + GtkCellViewPrivate *priv; + + object = G_OBJECT_CLASS (gtk_cell_view_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + view = GTK_CELL_VIEW (object); + priv = view->priv; + + if (!priv->area) + { + GtkCellArea *area = gtk_cell_area_box_new (); + + priv->area = g_object_ref_sink (area); + } + + if (!priv->context) + priv->context = gtk_cell_area_create_context (priv->area); + + priv->size_changed_id = + g_signal_connect (priv->context, "notify", + G_CALLBACK (context_size_changed_cb), view); + + return object; } static void @@ -271,30 +372,45 @@ gtk_cell_view_get_property (GObject *object, switch (param_id) { - case PROP_BACKGROUND_GDK: - { - GdkColor color; - - color.red = (guint) (view->priv->background.red * 65535); - color.green = (guint) (view->priv->background.green * 65535); - color.blue = (guint) (view->priv->background.blue * 65535); - color.pixel = 0; - - g_value_set_boxed (value, &color); - } - break; - case PROP_BACKGROUND_RGBA: - g_value_set_boxed (value, &view->priv->background); - break; - case PROP_BACKGROUND_SET: - g_value_set_boolean (value, view->priv->background_set); - break; - case PROP_MODEL: - g_value_set_object (value, view->priv->model); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; + case PROP_ORIENTATION: + g_value_set_enum (value, view->priv->orientation); + break; + case PROP_BACKGROUND_GDK: + { + GdkColor color; + + color.red = (guint) (view->priv->background.red * 65535); + color.green = (guint) (view->priv->background.green * 65535); + color.blue = (guint) (view->priv->background.blue * 65535); + color.pixel = 0; + + g_value_set_boxed (value, &color); + } + break; + case PROP_BACKGROUND_RGBA: + g_value_set_boxed (value, &view->priv->background); + break; + case PROP_BACKGROUND_SET: + g_value_set_boolean (value, view->priv->background_set); + break; + case PROP_MODEL: + g_value_set_object (value, view->priv->model); + break; + case PROP_CELL_AREA: + g_value_set_object (value, view->priv->area); + break; + case PROP_CELL_AREA_CONTEXT: + g_value_set_object (value, view->priv->context); + break; + case PROP_DRAW_SENSITIVE: + g_value_set_boolean (value, view->priv->draw_sensitive); + break; + case PROP_FIT_MODEL: + g_value_set_boolean (value, view->priv->fit_model); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; } } @@ -305,35 +421,67 @@ gtk_cell_view_set_property (GObject *object, GParamSpec *pspec) { GtkCellView *view = GTK_CELL_VIEW (object); + GtkCellArea *area; + GtkCellAreaContext *context; switch (param_id) { - case PROP_BACKGROUND: - { - GdkColor color; + case PROP_ORIENTATION: + view->priv->orientation = g_value_get_enum (value); + if (view->priv->context) + gtk_cell_area_context_reset (view->priv->context); - if (!g_value_get_string (value)) - gtk_cell_view_set_background_color (view, NULL); - else if (gdk_color_parse (g_value_get_string (value), &color)) - gtk_cell_view_set_background_color (view, &color); - else - g_warning ("Don't know color `%s'", g_value_get_string (value)); + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (object)); + break; + case PROP_BACKGROUND: + { + GdkColor color; + + if (!g_value_get_string (value)) + gtk_cell_view_set_background_color (view, NULL); + else if (gdk_color_parse (g_value_get_string (value), &color)) + gtk_cell_view_set_background_color (view, &color); + else + g_warning ("Don't know color `%s'", g_value_get_string (value)); + + g_object_notify (object, "background-gdk"); + } + break; + case PROP_BACKGROUND_GDK: + gtk_cell_view_set_background_color (view, g_value_get_boxed (value)); + break; + case PROP_BACKGROUND_RGBA: + gtk_cell_view_set_background_rgba (view, g_value_get_boxed (value)); + break; + case PROP_BACKGROUND_SET: + view->priv->background_set = g_value_get_boolean (value); + break; + case PROP_MODEL: + gtk_cell_view_set_model (view, g_value_get_object (value)); + break; + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + area = g_value_get_object (value); + + if (area) + view->priv->area = g_object_ref_sink (area); + break; + case PROP_CELL_AREA_CONTEXT: + /* Construct-only, can only be assigned once */ + context = g_value_get_object (value); + + if (context) + view->priv->context = g_object_ref (context); + break; + + case PROP_DRAW_SENSITIVE: + gtk_cell_view_set_draw_sensitive (view, g_value_get_boolean (value)); + break; + + case PROP_FIT_MODEL: + gtk_cell_view_set_fit_model (view, g_value_get_boolean (value)); + break; - g_object_notify (object, "background-gdk"); - } - break; - case PROP_BACKGROUND_GDK: - gtk_cell_view_set_background_color (view, g_value_get_boxed (value)); - break; - case PROP_BACKGROUND_RGBA: - gtk_cell_view_set_background_rgba (view, g_value_get_boxed (value)); - break; - case PROP_BACKGROUND_SET: - view->priv->background_set = g_value_get_boolean (value); - break; - case PROP_MODEL: - gtk_cell_view_set_model (view, g_value_get_object (value)); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -351,6 +499,8 @@ gtk_cell_view_init (GtkCellView *cellview) priv = cellview->priv; gtk_widget_set_has_window (GTK_WIDGET (cellview), FALSE); + + priv->orientation = GTK_ORIENTATION_HORIZONTAL; } static void @@ -358,128 +508,235 @@ gtk_cell_view_finalize (GObject *object) { GtkCellView *cellview = GTK_CELL_VIEW (object); - gtk_cell_view_cell_layout_clear (GTK_CELL_LAYOUT (cellview)); - - if (cellview->priv->model) - g_object_unref (cellview->priv->model); - if (cellview->priv->displayed_row) gtk_tree_row_reference_free (cellview->priv->displayed_row); G_OBJECT_CLASS (gtk_cell_view_parent_class)->finalize (object); } +static void +gtk_cell_view_dispose (GObject *object) +{ + GtkCellView *cellview = GTK_CELL_VIEW (object); + + gtk_cell_view_set_model (cellview, NULL); + + if (cellview->priv->area) + { + g_object_unref (cellview->priv->area); + cellview->priv->area = NULL; + } + + if (cellview->priv->context) + { + g_signal_handler_disconnect (cellview->priv->context, cellview->priv->size_changed_id); + + g_object_unref (cellview->priv->context); + cellview->priv->context = NULL; + cellview->priv->size_changed_id = 0; + } + + G_OBJECT_CLASS (gtk_cell_view_parent_class)->dispose (object); +} + static void gtk_cell_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { - GtkCellView *cellview; - GtkRequestedSize *sizes; - GList *list; - gint n_visible_cells, n_expand_cells; - gint avail_width = 0; - gint extra_per_cell, extra_extra, i; - gboolean first_cell = TRUE; + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; + gint alloc_width, alloc_height; gtk_widget_set_allocation (widget, allocation); - cellview = GTK_CELL_VIEW (widget); + gtk_cell_area_context_get_allocation (priv->context, &alloc_width, &alloc_height); - avail_width = allocation->width; + /* The first cell view in context is responsible for allocating the context at allocate time + * (or the cellview has its own context and is not grouped with any other cell views) + * + * If the cellview is in "fit model" mode, we assume its not in context and needs to + * allocate every time. + */ + if (priv->fit_model) + gtk_cell_area_context_allocate (priv->context, allocation->width, allocation->height); + else if (alloc_width != allocation->width && priv->orientation == GTK_ORIENTATION_HORIZONTAL) + gtk_cell_area_context_allocate (priv->context, allocation->width, -1); + else if (alloc_height != allocation->height && priv->orientation == GTK_ORIENTATION_VERTICAL) + gtk_cell_area_context_allocate (priv->context, -1, allocation->height); +} - /* Count visible/expand children */ - for (n_visible_cells = 0, n_expand_cells = 0, list = cellview->priv->cell_list; - list; list = list->next) +static void +gtk_cell_view_request_model (GtkCellView *cellview, + GtkTreeIter *parent, + GtkOrientation orientation, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellViewPrivate *priv = cellview->priv; + GtkTreeIter iter; + gboolean valid; + + valid = gtk_tree_model_iter_children (priv->model, &iter, parent); + while (valid) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; + gint min, nat; - n_visible_cells++; + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); - if (info->expand) - n_expand_cells++; + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + if (for_size < 0) + gtk_cell_area_get_preferred_width (priv->area, priv->context, + GTK_WIDGET (cellview), &min, &nat); + else + gtk_cell_area_get_preferred_width_for_height (priv->area, priv->context, + GTK_WIDGET (cellview), for_size, &min, &nat); + } + else + { + if (for_size < 0) + gtk_cell_area_get_preferred_height (priv->area, priv->context, + GTK_WIDGET (cellview), &min, &nat); + else + gtk_cell_area_get_preferred_height_for_width (priv->area, priv->context, + GTK_WIDGET (cellview), for_size, &min, &nat); + } + + *minimum_size = MAX (min, *minimum_size); + *natural_size = MAX (nat, *natural_size); + + /* Recurse into children when they exist */ + gtk_cell_view_request_model (cellview, &iter, orientation, for_size, minimum_size, natural_size); + + valid = gtk_tree_model_iter_next (priv->model, &iter); } +} - sizes = g_new0 (GtkRequestedSize, n_visible_cells); +static void +gtk_cell_view_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; - /* checking how much extra space we have */ - for (i = 0, list = cellview->priv->cell_list; list; list = list->next) + g_signal_handler_block (priv->context, priv->size_changed_id); + + if (priv->fit_model) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - sizes[i].data = info; - sizes[i].minimum_size = info->requested_width; - sizes[i].natural_size = info->natural_width; - - if (!first_cell) - avail_width -= cellview->priv->spacing; - - avail_width -= sizes[i].minimum_size; - - first_cell = FALSE; - - i++; - } - - avail_width = gtk_distribute_natural_allocation (MAX (0, avail_width), n_visible_cells, sizes); - - /* Deal with any expand space... */ - if (n_expand_cells > 0) - { - extra_per_cell = avail_width / n_expand_cells; - extra_extra = avail_width % n_expand_cells; + gint min = 0, nat = 0; + gtk_cell_view_request_model (cellview, NULL, GTK_ORIENTATION_HORIZONTAL, -1, &min, &nat); } else - /* Everything just left-aligned if no cells expand */ - extra_per_cell = extra_extra = 0; - - for (i = 0, list = cellview->priv->cell_list; list; list = list->next) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; + if (cellview->priv->displayed_row) + gtk_cell_view_set_cell_data (cellview); - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - info->real_width = sizes[i].minimum_size; - - if (info->expand) - { - info->real_width += extra_per_cell; - - if (extra_extra) - { - info->real_width++; - extra_extra--; - } - } - - /* increment index into sizes for visible children */ - i++; + gtk_cell_area_get_preferred_width (priv->area, priv->context, widget, NULL, NULL); } - g_free (sizes); + gtk_cell_area_context_get_preferred_width (priv->context, minimum_size, natural_size); + + g_signal_handler_unblock (priv->context, priv->size_changed_id); +} + +static void +gtk_cell_view_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; + + g_signal_handler_block (priv->context, priv->size_changed_id); + + if (priv->fit_model) + { + gint min = 0, nat = 0; + gtk_cell_view_request_model (cellview, NULL, GTK_ORIENTATION_VERTICAL, -1, &min, &nat); + } + else + { + if (cellview->priv->displayed_row) + gtk_cell_view_set_cell_data (cellview); + + gtk_cell_area_get_preferred_height (priv->area, priv->context, widget, NULL, NULL); + } + + gtk_cell_area_context_get_preferred_height (priv->context, minimum_size, natural_size); + + g_signal_handler_unblock (priv->context, priv->size_changed_id); +} + +static void +gtk_cell_view_get_preferred_width_for_height (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; + + if (priv->fit_model) + { + gint min = 0, nat = 0; + gtk_cell_view_request_model (cellview, NULL, GTK_ORIENTATION_HORIZONTAL, for_size, &min, &nat); + + *minimum_size = min; + *natural_size = nat; + } + else + { + if (cellview->priv->displayed_row) + gtk_cell_view_set_cell_data (cellview); + + gtk_cell_area_get_preferred_width_for_height (priv->area, priv->context, widget, + for_size, minimum_size, natural_size); + } +} + +static void +gtk_cell_view_get_preferred_height_for_width (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; + + if (priv->fit_model) + { + gint min = 0, nat = 0; + gtk_cell_view_request_model (cellview, NULL, GTK_ORIENTATION_VERTICAL, for_size, &min, &nat); + + *minimum_size = min; + *natural_size = nat; + } + else + { + if (cellview->priv->displayed_row) + gtk_cell_view_set_cell_data (cellview); + + gtk_cell_area_get_preferred_height_for_width (priv->area, priv->context, widget, + for_size, minimum_size, natural_size); + } } static gboolean gtk_cell_view_draw (GtkWidget *widget, cairo_t *cr) { - GList *list; GtkCellView *cellview; GdkRectangle area; GtkCellRendererState state; - gboolean rtl = (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL); - GtkPackType packing; - int width; cellview = GTK_CELL_VIEW (widget); /* render cells */ area.x = 0; area.y = 0; - area.width = width = gtk_widget_get_allocated_width (widget); + area.width = gtk_widget_get_allocated_width (widget); area.height = gtk_widget_get_allocated_height (widget); /* "blank" background */ @@ -496,77 +753,23 @@ gtk_cell_view_draw (GtkWidget *widget, else if (cellview->priv->model) return FALSE; - if (gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT) + if (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_PRELIGHT) state = GTK_CELL_RENDERER_PRELIT; - else if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE) + else if (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_INSENSITIVE) state = GTK_CELL_RENDERER_INSENSITIVE; else state = 0; - for (packing = GTK_PACK_START; packing <= GTK_PACK_END; ++packing) - { - if (packing == GTK_PACK_START) - area.x = rtl ? width : 0; - else - area.x = rtl ? 0 : width; - - for (list = cellview->priv->cell_list; list; list = list->next) - { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; - - if (info->pack != packing) - continue; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - area.width = info->real_width; - - if ((packing == GTK_PACK_START && rtl) || - (packing == GTK_PACK_END && !rtl)) - area.x -= area.width; - - gtk_cell_renderer_render (info->cell, - cr, - widget, - /* FIXME! */ - &area, &area, state); - - if ((packing == GTK_PACK_START && !rtl) || - (packing == GTK_PACK_END && rtl)) - { - area.x += area.width; - area.x += cellview->priv->spacing; - } - else - area.x -= cellview->priv->spacing; - } - } + /* Render the cells */ + gtk_cell_area_render (cellview->priv->area, cellview->priv->context, + widget, cr, &area, &area, state, FALSE); return FALSE; } -static GtkCellViewCellInfo * -gtk_cell_view_get_cell_info (GtkCellView *cellview, - GtkCellRenderer *renderer) -{ - GList *i; - - for (i = cellview->priv->cell_list; i; i = i->next) - { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)i->data; - - if (info->cell == renderer) - return info; - } - - return NULL; -} - static void gtk_cell_view_set_cell_data (GtkCellView *cell_view) { - GList *i; GtkTreeIter iter; GtkTreePath *path; @@ -579,192 +782,103 @@ gtk_cell_view_set_cell_data (GtkCellView *cell_view) gtk_tree_model_get_iter (cell_view->priv->model, &iter, path); gtk_tree_path_free (path); - for (i = cell_view->priv->cell_list; i; i = i->next) + gtk_cell_area_apply_attributes (cell_view->priv->area, + cell_view->priv->model, + &iter, FALSE, FALSE); + + if (cell_view->priv->draw_sensitive) { - GSList *j; - GtkCellViewCellInfo *info = i->data; + GList *l, *cells = + gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (cell_view->priv->area)); - g_object_freeze_notify (G_OBJECT (info->cell)); + for (l = cells; l; l = l->next) + { + GObject *renderer = l->data; - for (j = info->attributes; j && j->next; j = j->next->next) - { - gchar *property = j->data; - gint column = GPOINTER_TO_INT (j->next->data); - GValue value = {0, }; - - gtk_tree_model_get_value (cell_view->priv->model, &iter, - column, &value); - g_object_set_property (G_OBJECT (info->cell), - property, &value); - g_value_unset (&value); - } - - if (info->func) - (* info->func) (GTK_CELL_LAYOUT (cell_view), - info->cell, - cell_view->priv->model, - &iter, - info->func_data); - - g_object_thaw_notify (G_OBJECT (info->cell)); + g_object_set (renderer, "sensitive", TRUE, NULL); + } + g_list_free (cells); } } /* GtkCellLayout implementation */ -static void -gtk_cell_view_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand) +static GtkCellArea * +gtk_cell_view_cell_layout_get_area (GtkCellLayout *layout) { - GtkCellViewCellInfo *info; GtkCellView *cellview = GTK_CELL_VIEW (layout); - g_return_if_fail (!gtk_cell_view_get_cell_info (cellview, renderer)); + return cellview->priv->area; +} - g_object_ref_sink (renderer); +/* GtkBuildable implementation */ +static gboolean +gtk_cell_view_buildable_custom_tag_start (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + GMarkupParser *parser, + gpointer *data) +{ + if (parent_buildable_iface->custom_tag_start && + parent_buildable_iface->custom_tag_start (buildable, builder, child, + tagname, parser, data)) + return TRUE; - info = g_slice_new0 (GtkCellViewCellInfo); - info->cell = renderer; - info->expand = expand ? TRUE : FALSE; - info->pack = GTK_PACK_START; - - cellview->priv->cell_list = g_list_append (cellview->priv->cell_list, info); - - gtk_widget_queue_resize (GTK_WIDGET (cellview)); + return _gtk_cell_layout_buildable_custom_tag_start (buildable, builder, child, + tagname, parser, data); } static void -gtk_cell_view_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand) +gtk_cell_view_buildable_custom_tag_end (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data) { - GtkCellViewCellInfo *info; - GtkCellView *cellview = GTK_CELL_VIEW (layout); - - g_return_if_fail (!gtk_cell_view_get_cell_info (cellview, renderer)); - - g_object_ref_sink (renderer); - - info = g_slice_new0 (GtkCellViewCellInfo); - info->cell = renderer; - info->expand = expand ? TRUE : FALSE; - info->pack = GTK_PACK_END; - - cellview->priv->cell_list = g_list_append (cellview->priv->cell_list, info); - - gtk_widget_queue_resize (GTK_WIDGET (cellview)); + if (_gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, + data)) + return; + else if (parent_buildable_iface->custom_tag_end) + parent_buildable_iface->custom_tag_end (buildable, builder, child, tagname, + data); } static void -gtk_cell_view_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *renderer, - const gchar *attribute, - gint column) +context_size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkWidget *view) { - GtkCellViewCellInfo *info; - GtkCellView *cellview = GTK_CELL_VIEW (layout); - - info = gtk_cell_view_get_cell_info (cellview, renderer); - g_return_if_fail (info != NULL); - - info->attributes = g_slist_prepend (info->attributes, - GINT_TO_POINTER (column)); - info->attributes = g_slist_prepend (info->attributes, - g_strdup (attribute)); + if (!strcmp (pspec->name, "minimum-width") || + !strcmp (pspec->name, "natural-width") || + !strcmp (pspec->name, "minimum-height") || + !strcmp (pspec->name, "natural-height")) + gtk_widget_queue_resize (view); } static void -gtk_cell_view_cell_layout_clear (GtkCellLayout *layout) +row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkCellView *view) { - GtkCellView *cellview = GTK_CELL_VIEW (layout); + GtkTreePath *row_path; - while (cellview->priv->cell_list) + if (view->priv->displayed_row) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)cellview->priv->cell_list->data; + row_path = + gtk_tree_row_reference_get_path (view->priv->displayed_row); - gtk_cell_view_cell_layout_clear_attributes (layout, info->cell); - g_object_unref (info->cell); - g_slice_free (GtkCellViewCellInfo, info); - cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, - cellview->priv->cell_list); - } -} - -static void -gtk_cell_view_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy) -{ - GtkCellView *cellview = GTK_CELL_VIEW (layout); - GtkCellViewCellInfo *info; - - info = gtk_cell_view_get_cell_info (cellview, cell); - g_return_if_fail (info != NULL); - - if (info->destroy) - { - GDestroyNotify d = info->destroy; - - info->destroy = NULL; - d (info->func_data); - } - - info->func = func; - info->func_data = func_data; - info->destroy = destroy; -} - -static void -gtk_cell_view_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *renderer) -{ - GtkCellView *cellview = GTK_CELL_VIEW (layout); - GtkCellViewCellInfo *info; - GSList *list; - - info = gtk_cell_view_get_cell_info (cellview, renderer); - if (info != NULL) - { - list = info->attributes; - while (list && list->next) + if (row_path) { - g_free (list->data); - list = list->next->next; + /* Resize everything in our context if our row changed */ + if (gtk_tree_path_compare (row_path, path) == 0) + gtk_cell_area_context_reset (view->priv->context); + + gtk_tree_path_free (row_path); } - - g_slist_free (info->attributes); - info->attributes = NULL; } } -static void -gtk_cell_view_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position) -{ - GtkCellView *cellview = GTK_CELL_VIEW (layout); - GtkCellViewCellInfo *info; - GList *link; - - info = gtk_cell_view_get_cell_info (cellview, cell); - - g_return_if_fail (info != NULL); - g_return_if_fail (position >= 0); - - link = g_list_find (cellview->priv->cell_list, info); - - g_return_if_fail (link != NULL); - - cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, - link); - cellview->priv->cell_list = g_list_insert (cellview->priv->cell_list, - info, position); - - gtk_widget_queue_draw (GTK_WIDGET (cellview)); -} - /** * gtk_cell_view_new: * @@ -784,6 +898,37 @@ gtk_cell_view_new (void) return GTK_WIDGET (cellview); } + +/** + * gtk_cell_view_new_with_context: + * @area: the #GtkCellArea to layout cells + * @context: the #GtkCellAreaContext in which to calculate cell geometry + * + * Creates a new #GtkCellView widget with a specific #GtkCellArea + * to layout cells and a specific #GtkCellAreaContext. + * + * Specifying the same context for a handfull of cells lets + * the underlying area synchronize the geometry for those cells, + * in this way alignments with cellviews for other rows are + * possible. + * + * Return value: A newly created #GtkCellView widget. + * + * Since: 2.6 + */ +GtkWidget * +gtk_cell_view_new_with_context (GtkCellArea *area, + GtkCellAreaContext *context) +{ + g_return_val_if_fail (GTK_IS_CELL_AREA (area), NULL); + g_return_val_if_fail (context == NULL || GTK_IS_CELL_AREA_CONTEXT (context), NULL); + + return (GtkWidget *)g_object_new (GTK_TYPE_CELL_VIEW, + "cell-area", area, + "cell-area-context", context, + NULL); +} + /** * gtk_cell_view_new_with_text: * @text: the text to display in the cell view @@ -805,8 +950,8 @@ gtk_cell_view_new_with_text (const gchar *text) cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); renderer = gtk_cell_renderer_text_new (); - gtk_cell_view_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), - renderer, TRUE); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), + renderer, TRUE); g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, text); @@ -839,8 +984,8 @@ gtk_cell_view_new_with_markup (const gchar *markup) cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); renderer = gtk_cell_renderer_text_new (); - gtk_cell_view_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), - renderer, TRUE); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), + renderer, TRUE); g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, markup); @@ -871,8 +1016,8 @@ gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf) cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); renderer = gtk_cell_renderer_pixbuf_new (); - gtk_cell_view_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), - renderer, TRUE); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), + renderer, TRUE); g_value_init (&value, GDK_TYPE_PIXBUF); g_value_set_object (&value, pixbuf); @@ -927,6 +1072,10 @@ gtk_cell_view_set_model (GtkCellView *cell_view, if (cell_view->priv->model) { + g_signal_handler_disconnect (cell_view->priv->model, + cell_view->priv->row_changed_id); + cell_view->priv->row_changed_id = 0; + if (cell_view->priv->displayed_row) gtk_tree_row_reference_free (cell_view->priv->displayed_row); cell_view->priv->displayed_row = NULL; @@ -938,7 +1087,13 @@ gtk_cell_view_set_model (GtkCellView *cell_view, cell_view->priv->model = model; if (cell_view->priv->model) - g_object_ref (cell_view->priv->model); + { + g_object_ref (cell_view->priv->model); + + cell_view->priv->row_changed_id = + g_signal_connect (cell_view->priv->model, "row-changed", + G_CALLBACK (row_changed_cb), cell_view); + } } /** @@ -1033,22 +1188,31 @@ gtk_cell_view_get_displayed_row (GtkCellView *cell_view) * * Since: 2.6 * - * Deprecated: 3.0: Use gtk_cell_view_get_desired_width_of_row() and - * gtk_cell_view_get_desired_height_for_width_of_row() instead. + * Deprecated: 3.0: Combo box formerly used this to calculate the + * sizes for cellviews, now you can achieve this by either using + * the #GtkCellView:fit-model property or by setting the currently + * displayed row of the #GtkCellView and using gtk_widget_get_preferred_size(). */ gboolean gtk_cell_view_get_size_of_row (GtkCellView *cell_view, GtkTreePath *path, GtkRequisition *requisition) { + GtkTreeRowReference *tmp; GtkRequisition req; g_return_val_if_fail (GTK_IS_CELL_VIEW (cell_view), FALSE); g_return_val_if_fail (path != NULL, FALSE); - /* Return the minimum height for the minimum width */ - gtk_cell_view_get_desired_width_of_row (cell_view, path, &req.width, NULL); - gtk_cell_view_get_desired_height_for_width_of_row (cell_view, path, req.width, &req.height, NULL); + tmp = cell_view->priv->displayed_row; + cell_view->priv->displayed_row = + gtk_tree_row_reference_new (cell_view->priv->model, path); + + gtk_widget_get_preferred_width (GTK_WIDGET (cell_view), &req.width, NULL); + gtk_widget_get_preferred_height_for_width (GTK_WIDGET (cell_view), req.width, &req.height, NULL); + + gtk_tree_row_reference_free (cell_view->priv->displayed_row); + cell_view->priv->displayed_row = tmp; if (requisition) *requisition = req; @@ -1056,86 +1220,6 @@ gtk_cell_view_get_size_of_row (GtkCellView *cell_view, return TRUE; } - -/** - * gtk_cell_view_get_desired_width_of_row: - * @cell_view: a #GtkCellView - * @path: a #GtkTreePath - * @minimum_size: location to store the minimum size - * @natural_size: location to store the natural size - * - * Sets @minimum_size and @natural_size to the width desired by @cell_view - * to display the model row pointed to by @path. - * - * Since: 3.0 - */ -void -gtk_cell_view_get_desired_width_of_row (GtkCellView *cell_view, - GtkTreePath *path, - gint *minimum_size, - gint *natural_size) -{ - GtkTreeRowReference *tmp; - - g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); - g_return_if_fail (path != NULL); - g_return_if_fail (minimum_size != NULL || natural_size != NULL); - - tmp = cell_view->priv->displayed_row; - cell_view->priv->displayed_row = - gtk_tree_row_reference_new (cell_view->priv->model, path); - - gtk_cell_view_get_preferred_width (GTK_WIDGET (cell_view), minimum_size, natural_size); - - gtk_tree_row_reference_free (cell_view->priv->displayed_row); - cell_view->priv->displayed_row = tmp; - - /* Restore active size (this will restore the cellrenderer info->width/requested_width's) */ - gtk_cell_view_get_preferred_width (GTK_WIDGET (cell_view), NULL, NULL); -} - - -/** - * gtk_cell_view_get_desired_height_for_width_of_row: - * @cell_view: a #GtkCellView - * @path: a #GtkTreePath - * @avail_size: available width - * @minimum_size: location to store the minimum height - * @natural_size: location to store the natural height - * - * Sets @minimum_size and @natural_size to the height desired by @cell_view - * if it were allocated a width of @avail_size to display the model row - * pointed to by @path. - * - * Since: 3.0 - */ -void -gtk_cell_view_get_desired_height_for_width_of_row (GtkCellView *cell_view, - GtkTreePath *path, - gint avail_size, - gint *minimum_size, - gint *natural_size) -{ - GtkTreeRowReference *tmp; - - g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); - g_return_if_fail (path != NULL); - g_return_if_fail (minimum_size != NULL || natural_size != NULL); - - tmp = cell_view->priv->displayed_row; - cell_view->priv->displayed_row = - gtk_tree_row_reference_new (cell_view->priv->model, path); - - /* Then get the collective height_for_width based on the cached values */ - gtk_cell_view_get_preferred_height_for_width (GTK_WIDGET (cell_view), avail_size, minimum_size, natural_size); - - gtk_tree_row_reference_free (cell_view->priv->displayed_row); - cell_view->priv->displayed_row = tmp; - - /* Restore active size (this will restore the cellrenderer info->width/requested_width's) */ - gtk_cell_view_get_preferred_width (GTK_WIDGET (cell_view), NULL, NULL); -} - /** * gtk_cell_view_set_background_color: * @cell_view: a #GtkCellView @@ -1213,235 +1297,113 @@ gtk_cell_view_set_background_rgba (GtkCellView *cell_view, gtk_widget_queue_draw (GTK_WIDGET (cell_view)); } -static GList * -gtk_cell_view_cell_layout_get_cells (GtkCellLayout *layout) +/** + * gtk_cell_view_get_draw_sensitive: + * @cell_view: a #GtkCellView + * + * Gets whether @cell_view is configured to draw all of it's + * cells in a sensitive state. + * + * Return value: whether @cell_view draws all of it's + * cells in a sensitive state + * + * Since: 3.0 + */ +gboolean +gtk_cell_view_get_draw_sensitive (GtkCellView *cell_view) { - GtkCellView *cell_view = GTK_CELL_VIEW (layout); - GList *retval = NULL, *list; + GtkCellViewPrivate *priv; - g_return_val_if_fail (cell_view != NULL, NULL); + g_return_val_if_fail (GTK_IS_CELL_VIEW (cell_view), FALSE); - gtk_cell_view_set_cell_data (cell_view); + priv = cell_view->priv; - for (list = cell_view->priv->cell_list; list; list = list->next) + return priv->draw_sensitive; +} + +/** + * gtk_cell_view_set_draw_sensitive: + * @cell_view: a #GtkCellView + * @draw_sensitive: whether to draw all cells in a sensitive state. + * + * Sets whether @cell_view should draw all of it's + * cells in a sensitive state, this is used by #GtkComboBox menus + * to ensure that rows with insensitive cells that contain + * children appear sensitive in the parent menu item. + * + * Since: 3.0 + */ +void +gtk_cell_view_set_draw_sensitive (GtkCellView *cell_view, + gboolean draw_sensitive) +{ + GtkCellViewPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); + + priv = cell_view->priv; + + if (priv->draw_sensitive != draw_sensitive) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; + priv->draw_sensitive = draw_sensitive; - retval = g_list_prepend (retval, info->cell); + g_object_notify (G_OBJECT (cell_view), "draw-sensitive"); } - - return g_list_reverse (retval); } -static gboolean -gtk_cell_view_buildable_custom_tag_start (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - GMarkupParser *parser, - gpointer *data) +/** + * gtk_cell_view_get_fit_model: + * @cell_view: a #GtkCellView + * + * Gets whether @cell_view is configured to request space + * to fit the entire #GtkTreeModel. + * + * Return value: whether @cell_view requests space to fit + * the entire #GtkTreeModel. + * + * Since: 3.0 + */ +gboolean +gtk_cell_view_get_fit_model (GtkCellView *cell_view) { - if (parent_buildable_iface->custom_tag_start && - parent_buildable_iface->custom_tag_start (buildable, builder, child, - tagname, parser, data)) - return TRUE; + GtkCellViewPrivate *priv; - return _gtk_cell_layout_buildable_custom_tag_start (buildable, builder, child, - tagname, parser, data); + g_return_val_if_fail (GTK_IS_CELL_VIEW (cell_view), FALSE); + + priv = cell_view->priv; + + return priv->fit_model; } -static void -gtk_cell_view_buildable_custom_tag_end (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - gpointer *data) +/** + * gtk_cell_view_set_fit_model: + * @cell_view: a #GtkCellView + * @fit_model: whether @cell_view should request space for the whole model. + * + * Sets whether @cell_view should request space to fit the entire #GtkTreeModel. + * + * This is used by #GtkComboBox to ensure that the cell view displayed on + * the combo box's button always gets enough space and does not resize + * when selection changes. + * + * Since: 3.0 + */ +void +gtk_cell_view_set_fit_model (GtkCellView *cell_view, + gboolean fit_model) { - if (strcmp (tagname, "attributes") == 0) - _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, - data); - else if (parent_buildable_iface->custom_tag_end) - parent_buildable_iface->custom_tag_end (buildable, builder, child, tagname, - data); -} + GtkCellViewPrivate *priv; -static void -gtk_cell_view_get_preferred_width (GtkWidget *widget, - gint *minimum_size, - gint *natural_size) -{ - GList *list; - gint cell_min, cell_nat; - gboolean first_cell = TRUE; - GtkCellView *cellview = GTK_CELL_VIEW (widget); - gint minimum, natural; + g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); - minimum = natural = 0; + priv = cell_view->priv; - if (cellview->priv->displayed_row) - gtk_cell_view_set_cell_data (cellview); - - for (list = cellview->priv->cell_list; list; list = list->next) + if (priv->fit_model != fit_model) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; + priv->fit_model = fit_model; - if (gtk_cell_renderer_get_visible (info->cell)) - { - - if (!first_cell) - { - minimum += cellview->priv->spacing; - natural += cellview->priv->spacing; - } + gtk_cell_area_context_reset (cell_view->priv->context); - gtk_cell_renderer_get_preferred_width (info->cell, - GTK_WIDGET (cellview), &cell_min, &cell_nat); - - info->requested_width = cell_min; - info->natural_width = cell_nat; - - minimum += info->requested_width; - natural += info->natural_width; - - first_cell = FALSE; - } + g_object_notify (G_OBJECT (cell_view), "fit-model"); } - - if (minimum_size) - *minimum_size = minimum; - - if (natural_size) - *natural_size = natural; -} - -static void -gtk_cell_view_get_preferred_height (GtkWidget *widget, - gint *minimum_size, - gint *natural_size) -{ - gint minimum_width; - - /* CellViews only need to respond to height-for-width mode (cellview is pretty much - * an implementation detail of GtkComboBox) */ - gtk_cell_view_get_preferred_width (widget, &minimum_width, NULL); - gtk_cell_view_get_preferred_height_for_width (widget, minimum_width, minimum_size, natural_size); -} - -static void -gtk_cell_view_get_preferred_width_for_height (GtkWidget *widget, - gint for_size, - gint *minimum_size, - gint *natural_size) -{ - /* CellViews only need to respond to height-for-width mode (cellview is pretty much - * an implementation detail of GtkComboBox) */ - gtk_cell_view_get_preferred_width (widget, minimum_size, natural_size); -} - -static void -gtk_cell_view_get_preferred_height_for_width (GtkWidget *widget, - gint for_size, - gint *minimum_size, - gint *natural_size) -{ - GtkCellView *cellview = GTK_CELL_VIEW (widget); - GList *list; - GtkRequestedSize *sizes; - GArray *array; - gint minimum, natural, avail_size; - gboolean first_cell = TRUE; - gint n_expand_cells = 0; - gint extra_per_cell, extra_extra, i; - - minimum = natural = 0; - avail_size = for_size; - - array = g_array_new (0, TRUE, sizeof (GtkRequestedSize)); - - if (cellview->priv->displayed_row) - gtk_cell_view_set_cell_data (cellview); - - /* First allocate the right width to all cells */ - for (list = cellview->priv->cell_list; list; list = list->next) - { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; - - if (gtk_cell_renderer_get_visible (info->cell)) - { - GtkRequestedSize requested; - - gtk_cell_renderer_get_preferred_width (GTK_CELL_RENDERER (info->cell), - GTK_WIDGET (cellview), - &requested.minimum_size, - &requested.natural_size); - - requested.data = info; - g_array_append_val (array, requested); - - avail_size -= requested.minimum_size; - - if (!first_cell) - avail_size -= cellview->priv->spacing; - - first_cell = FALSE; - - if (info->expand) - n_expand_cells++; - } - } - - sizes = (GtkRequestedSize *)array->data; - avail_size = gtk_distribute_natural_allocation (MAX (0, avail_size), array->len, sizes); - - /* Deal with any expand space... */ - if (n_expand_cells > 0) - { - extra_per_cell = avail_size / n_expand_cells; - extra_extra = avail_size % n_expand_cells; - } - else - /* Everything just left-aligned if no cells expand */ - extra_per_cell = extra_extra = 0; - - /* Now get the height for the real width of each cell */ - for (i = 0, list = cellview->priv->cell_list; list; list = list->next) - { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)list->data; - gint cell_minimum, cell_natural; - - if (gtk_cell_renderer_get_visible (info->cell)) - { - gint cell_width = sizes[i].minimum_size; - - g_assert (sizes[i].data == info); - - if (info->expand) - { - cell_width += extra_per_cell; - if (extra_extra) - { - cell_width++; - extra_extra--; - } - } - - /* Get the height for the real width of this cell */ - gtk_cell_renderer_get_preferred_height_for_width (GTK_CELL_RENDERER (info->cell), - GTK_WIDGET (widget), - cell_width, &cell_minimum, &cell_natural); - - minimum = MAX (minimum, cell_minimum); - natural = MAX (natural, cell_natural); - - /* increment sizes[] index for visible cells */ - i++; - } - } - - g_array_free (array, TRUE); - - if (minimum_size) - *minimum_size = minimum; - if (natural_size) - *natural_size = natural; } diff --git a/gtk/gtkcellview.h b/gtk/gtkcellview.h index 50feda7f37..0e7fd9ac0a 100644 --- a/gtk/gtkcellview.h +++ b/gtk/gtkcellview.h @@ -26,6 +26,8 @@ #include #include +#include +#include #include G_BEGIN_DECLS @@ -60,37 +62,35 @@ struct _GtkCellViewClass void (*_gtk_reserved4) (void); }; -GType gtk_cell_view_get_type (void) G_GNUC_CONST; -GtkWidget *gtk_cell_view_new (void); -GtkWidget *gtk_cell_view_new_with_text (const gchar *text); -GtkWidget *gtk_cell_view_new_with_markup (const gchar *markup); -GtkWidget *gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf); - +GType gtk_cell_view_get_type (void) G_GNUC_CONST; +GtkWidget *gtk_cell_view_new (void); +GtkWidget *gtk_cell_view_new_with_context (GtkCellArea *area, + GtkCellAreaContext *context); +GtkWidget *gtk_cell_view_new_with_text (const gchar *text); +GtkWidget *gtk_cell_view_new_with_markup (const gchar *markup); +GtkWidget *gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf); void gtk_cell_view_set_model (GtkCellView *cell_view, GtkTreeModel *model); GtkTreeModel *gtk_cell_view_get_model (GtkCellView *cell_view); void gtk_cell_view_set_displayed_row (GtkCellView *cell_view, GtkTreePath *path); GtkTreePath *gtk_cell_view_get_displayed_row (GtkCellView *cell_view); +void gtk_cell_view_set_background_color (GtkCellView *cell_view, + const GdkColor *color); +void gtk_cell_view_set_background_rgba (GtkCellView *cell_view, + const GdkRGBA *rgba); +gboolean gtk_cell_view_get_draw_sensitive (GtkCellView *cell_view); +void gtk_cell_view_set_draw_sensitive (GtkCellView *cell_view, + gboolean draw_sensitive); +gboolean gtk_cell_view_get_fit_model (GtkCellView *cell_view); +void gtk_cell_view_set_fit_model (GtkCellView *cell_view, + gboolean fit_model); + #ifndef GTK_DISABLE_DEPRECATED gboolean gtk_cell_view_get_size_of_row (GtkCellView *cell_view, GtkTreePath *path, GtkRequisition *requisition); #endif -void gtk_cell_view_get_desired_width_of_row(GtkCellView *cell_view, - GtkTreePath *path, - gint *minimum_size, - gint *natural_size); -void gtk_cell_view_get_desired_height_for_width_of_row(GtkCellView *cell_view, - GtkTreePath *path, - gint avail_size, - gint *minimum_size, - gint *natural_size); - -void gtk_cell_view_set_background_color (GtkCellView *cell_view, - const GdkColor *color); -void gtk_cell_view_set_background_rgba (GtkCellView *cell_view, - const GdkRGBA *rgba); G_END_DECLS diff --git a/gtk/gtkcheckbutton.c b/gtk/gtkcheckbutton.c index 91b92f0f70..686dc84534 100644 --- a/gtk/gtkcheckbutton.c +++ b/gtk/gtkcheckbutton.c @@ -96,6 +96,7 @@ gtk_check_button_init (GtkCheckButton *check_button) gtk_widget_set_has_window (GTK_WIDGET (check_button), FALSE); gtk_widget_set_receives_default (GTK_WIDGET (check_button), FALSE); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (check_button), TRUE); + gtk_button_set_alignment (GTK_BUTTON (check_button), 0.0, 0.5); } GtkWidget* @@ -331,19 +332,13 @@ gtk_check_button_size_allocate (GtkWidget *widget, child = gtk_bin_get_child (GTK_BIN (button)); if (child && gtk_widget_get_visible (child)) { - GtkRequisition child_requisition; guint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - gtk_widget_get_preferred_size (child, &child_requisition, NULL); - - child_allocation.width = MIN (child_requisition.width, - allocation->width - - ((border_width + focus_width + focus_pad) * 2 - + indicator_size + indicator_spacing * 3)); + child_allocation.width = allocation->width - + ((border_width + focus_width + focus_pad) * 2 + indicator_size + indicator_spacing * 3); child_allocation.width = MAX (child_allocation.width, 1); - child_allocation.height = MIN (child_requisition.height, - allocation->height - (border_width + focus_width + focus_pad) * 2); + child_allocation.height = allocation->height - (border_width + focus_width + focus_pad) * 2; child_allocation.height = MAX (child_allocation.height, 1); child_allocation.x = (border_width + indicator_size + indicator_spacing * 3 + diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c index 428fd238fb..f91a27deda 100644 --- a/gtk/gtkcheckmenuitem.c +++ b/gtk/gtkcheckmenuitem.c @@ -21,11 +21,12 @@ * Modified by the GTK+ Team and others 1997-2001. 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" #include "gtkcheckmenuitem.h" +#include "gtkmenuitemprivate.h" #include "gtkaccellabel.h" #include "gtkactivatable.h" #include "gtktoggleaction.h" @@ -59,31 +60,31 @@ static gint gtk_check_menu_item_draw (GtkWidget *wid cairo_t *cr); static void gtk_check_menu_item_activate (GtkMenuItem *menu_item); static void gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition); + gint *requisition); static void gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, - cairo_t *cr); + cairo_t *cr); static void gtk_check_menu_item_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_check_menu_item_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_check_menu_item_activatable_interface_init (GtkActivatableIface *iface); static void gtk_check_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name); + GtkAction *action, + const gchar *property_name); static void gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action); + GtkAction *action); static GtkActivatableIface *parent_activatable_iface; static guint check_menu_item_signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_CODE (GtkCheckMenuItem, gtk_check_menu_item, GTK_TYPE_MENU_ITEM, - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, - gtk_check_menu_item_activatable_interface_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, + gtk_check_menu_item_activatable_interface_init)) static void gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) @@ -143,12 +144,12 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) check_menu_item_signals[TOGGLED] = g_signal_new (I_("toggled"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkCheckMenuItemClass, toggled), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkCheckMenuItemClass, toggled), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); g_type_class_add_private (klass, sizeof (GtkCheckMenuItemPrivate)); } @@ -163,8 +164,8 @@ gtk_check_menu_item_activatable_interface_init (GtkActivatableIface *iface) static void gtk_check_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name) + GtkAction *action, + const gchar *property_name) { GtkCheckMenuItem *check_menu_item; @@ -184,12 +185,12 @@ gtk_check_menu_item_update (GtkActivatable *activatable, if (strcmp (property_name, "draw-as-radio") == 0) gtk_check_menu_item_set_draw_as_radio (check_menu_item, - gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); + gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); } static void gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action) + GtkAction *action) { GtkCheckMenuItem *check_menu_item; @@ -208,7 +209,7 @@ gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable, return; gtk_check_menu_item_set_draw_as_radio (check_menu_item, - gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); + gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); } GtkWidget* @@ -221,8 +222,8 @@ GtkWidget* gtk_check_menu_item_new_with_label (const gchar *label) { return g_object_new (GTK_TYPE_CHECK_MENU_ITEM, - "label", label, - NULL); + "label", label, + NULL); } @@ -240,14 +241,14 @@ GtkWidget* gtk_check_menu_item_new_with_mnemonic (const gchar *label) { return g_object_new (GTK_TYPE_CHECK_MENU_ITEM, - "label", label, - "use-underline", TRUE, - NULL); + "label", label, + "use-underline", TRUE, + NULL); } void gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item, - gboolean is_active) + gboolean is_active) { GtkCheckMenuItemPrivate *priv; @@ -280,7 +281,7 @@ gtk_check_menu_item_get_active (GtkCheckMenuItem *check_menu_item) static void gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition) + gint *requisition) { guint toggle_spacing; guint indicator_size; @@ -288,9 +289,9 @@ gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item, g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item)); gtk_widget_style_get (GTK_WIDGET (menu_item), - "toggle-spacing", &toggle_spacing, - "indicator-size", &indicator_size, - NULL); + "toggle-spacing", &toggle_spacing, + "indicator-size", &indicator_size, + NULL); *requisition = indicator_size + toggle_spacing; } @@ -363,7 +364,7 @@ gtk_check_menu_item_get_inconsistent (GtkCheckMenuItem *check_menu_item) **/ void gtk_check_menu_item_set_draw_as_radio (GtkCheckMenuItem *check_menu_item, - gboolean draw_as_radio) + gboolean draw_as_radio) { GtkCheckMenuItemPrivate *priv; @@ -450,12 +451,10 @@ gtk_check_menu_item_activate (GtkMenuItem *menu_item) static void gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, - cairo_t *cr) + cairo_t *cr) { GtkCheckMenuItemPrivate *priv = check_menu_item->priv; GtkWidget *widget; - GtkStateType state_type; - GtkShadowType shadow_type; gint x, y; widget = GTK_WIDGET (check_menu_item); @@ -463,84 +462,89 @@ gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, if (gtk_widget_is_drawable (widget)) { GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; guint border_width; guint offset; guint toggle_size; guint toggle_spacing; guint horizontal_padding; guint indicator_size; + GtkStateFlags state; + GtkBorder padding; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); - style = gtk_widget_get_style (widget); gtk_widget_get_allocation (widget, &allocation); gtk_widget_style_get (widget, - "toggle-spacing", &toggle_spacing, - "horizontal-padding", &horizontal_padding, - "indicator-size", &indicator_size, - NULL); + "toggle-spacing", &toggle_spacing, + "horizontal-padding", &horizontal_padding, + "indicator-size", &indicator_size, + NULL); - toggle_size = GTK_MENU_ITEM (check_menu_item)->toggle_size; + toggle_size = GTK_MENU_ITEM (check_menu_item)->priv->toggle_size; border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - offset = border_width + style->xthickness + 2; + offset = border_width + padding.left + 2; if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - { + { x = offset + horizontal_padding + - (toggle_size - toggle_spacing - indicator_size) / 2; - } - else - { + (toggle_size - toggle_spacing - indicator_size) / 2; + } + else + { x = allocation.width - - offset - horizontal_padding - toggle_size + toggle_spacing + - (toggle_size - toggle_spacing - indicator_size) / 2; - } + offset - horizontal_padding - toggle_size + toggle_spacing + + (toggle_size - toggle_spacing - indicator_size) / 2; + } y = (allocation.height - indicator_size) / 2; if (priv->active || - priv->always_show_toggle || - (gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT)) - { + priv->always_show_toggle || + (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_PRELIGHT)) + { GdkWindow *window; window = gtk_widget_get_window (widget); - state_type = gtk_widget_get_state (widget); - - if (priv->inconsistent) - shadow_type = GTK_SHADOW_ETCHED_IN; - else if (priv->active) - shadow_type = GTK_SHADOW_IN; - else - shadow_type = GTK_SHADOW_OUT; - - if (!gtk_widget_is_sensitive (widget)) - state_type = GTK_STATE_INSENSITIVE; + gtk_style_context_save (context); - if (priv->draw_as_radio) - { - gtk_paint_option (style, cr, - state_type, shadow_type, - widget, "option", - x, y, indicator_size, indicator_size); - } - else - { - gtk_paint_check (style, cr, - state_type, shadow_type, - widget, "check", - x, y, indicator_size, indicator_size); - } - } + if (priv->inconsistent) + state |= GTK_STATE_FLAG_INCONSISTENT; + else if (priv->active) + state |= GTK_STATE_FLAG_ACTIVE; + + if (!gtk_widget_is_sensitive (widget)) + state |= GTK_STATE_FLAG_INSENSITIVE; + + gtk_style_context_set_state (context, state); + + if (priv->draw_as_radio) + { + gtk_style_context_add_class (context, GTK_STYLE_CLASS_RADIO); + gtk_render_option (context, cr, x, y, + indicator_size, indicator_size); + } + else + { + gtk_style_context_add_class (context, GTK_STYLE_CLASS_CHECK); + gtk_render_check (context, cr, x, y, + indicator_size, indicator_size); + } + + gtk_style_context_restore (context); + } } } static void gtk_check_menu_item_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkCheckMenuItem *checkitem = GTK_CHECK_MENU_ITEM (object); GtkCheckMenuItemPrivate *priv = checkitem->priv; @@ -565,9 +569,9 @@ gtk_check_menu_item_get_property (GObject *object, static void gtk_check_menu_item_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkCheckMenuItem *checkitem = GTK_CHECK_MENU_ITEM (object); diff --git a/gtk/gtkclipboard-quartz.c b/gtk/gtkclipboard-quartz.c index f433070ce1..a77d44379f 100644 --- a/gtk/gtkclipboard-quartz.c +++ b/gtk/gtkclipboard-quartz.c @@ -31,6 +31,7 @@ #include "gtkmarshalers.h" #include "gtkintl.h" #include "gtktextbuffer.h" +#include "gtkselectionprivate.h" #include "gtkquartz.h" @@ -252,7 +253,7 @@ gtk_clipboard_get_for_display (GdkDisplay *display, GdkAtom selection) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (!display->closed, NULL); + g_return_val_if_fail (!gdk_display_is_closed (display), NULL); return clipboard_peek (display, selection, FALSE); } diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c index 7273bd3944..0c4063934e 100644 --- a/gtk/gtkclipboard.c +++ b/gtk/gtkclipboard.c @@ -301,7 +301,7 @@ gtk_clipboard_get_for_display (GdkDisplay *display, { g_return_val_if_fail (display != NULL, NULL); /* See bgo#463773; this is needed because Flash Player sucks */ g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); - g_return_val_if_fail (!display->closed, NULL); + g_return_val_if_fail (!gdk_display_is_closed (display), NULL); return clipboard_peek (display, selection, FALSE); } @@ -331,7 +331,10 @@ selection_get_cb (GtkWidget *widget, guint info, guint time) { - GtkClipboard *clipboard = gtk_widget_get_clipboard (widget, selection_data->selection); + GtkClipboard *clipboard; + + clipboard = gtk_widget_get_clipboard (widget, + gtk_selection_data_get_selection (selection_data)); if (clipboard && clipboard->get_func) clipboard->get_func (clipboard, selection_data, info, clipboard->user_data); @@ -863,8 +866,8 @@ selection_received (GtkWidget *widget, { RequestContentsInfo *request_info = get_request_contents_info (widget); set_request_contents_info (widget, NULL); - - request_info->callback (gtk_widget_get_clipboard (widget, selection_data->selection), + + request_info->callback (gtk_widget_get_clipboard (widget, gtk_selection_data_get_selection (selection_data)), selection_data, request_info->user_data); @@ -935,14 +938,16 @@ request_text_received_func (GtkClipboard *clipboard, * if we asked for compound_text and didn't get it, try string; * If we asked for anything else and didn't get it, give up. */ - if (selection_data->target == gdk_atom_intern_static_string ("UTF8_STRING")) + GdkAtom target = gtk_selection_data_get_target (selection_data); + + if (target == gdk_atom_intern_static_string ("UTF8_STRING")) { gtk_clipboard_request_contents (clipboard, gdk_atom_intern_static_string ("COMPOUND_TEXT"), request_text_received_func, info); return; } - else if (selection_data->target == gdk_atom_intern_static_string ("COMPOUND_TEXT")) + else if (target == gdk_atom_intern_static_string ("COMPOUND_TEXT")) { gtk_clipboard_request_contents (clipboard, GDK_TARGET_STRING, @@ -1000,8 +1005,8 @@ request_rich_text_received_func (GtkClipboard *clipboard, guint8 *result = NULL; gsize length = 0; - result = selection_data->data; - length = selection_data->length; + result = (guint8 *) gtk_selection_data_get_data (selection_data); + length = gtk_selection_data_get_length (selection_data); info->current_atom++; @@ -1013,7 +1018,8 @@ request_rich_text_received_func (GtkClipboard *clipboard, return; } - info->callback (clipboard, selection_data->target, result, length, + info->callback (clipboard, gtk_selection_data_get_target (selection_data), + result, length, info->user_data); g_free (info->atoms); g_free (info); @@ -1081,21 +1087,23 @@ request_image_received_func (GtkClipboard *clipboard, * if we asked for image/gif and didn't get it, try image/bmp; * If we asked for anything else and didn't get it, give up. */ - if (selection_data->target == gdk_atom_intern_static_string ("image/png")) + GdkAtom target = gtk_selection_data_get_target (selection_data); + + if (target == gdk_atom_intern_static_string ("image/png")) { gtk_clipboard_request_contents (clipboard, gdk_atom_intern_static_string ("image/jpeg"), request_image_received_func, info); return; } - else if (selection_data->target == gdk_atom_intern_static_string ("image/jpeg")) + else if (target == gdk_atom_intern_static_string ("image/jpeg")) { gtk_clipboard_request_contents (clipboard, gdk_atom_intern_static_string ("image/gif"), request_image_received_func, info); return; } - else if (selection_data->target == gdk_atom_intern_static_string ("image/gif")) + else if (target == gdk_atom_intern_static_string ("image/gif")) { gtk_clipboard_request_contents (clipboard, gdk_atom_intern_static_string ("image/bmp"), @@ -1276,7 +1284,7 @@ clipboard_received_func (GtkClipboard *clipboard, { WaitResults *results = data; - if (selection_data->length >= 0) + if (gtk_selection_data_get_length (selection_data) >= 0) results->data = gtk_selection_data_copy (selection_data); g_main_loop_quit (results->loop); diff --git a/gtk/gtkcolorbutton.c b/gtk/gtkcolorbutton.c index c363f3aa26..3fd11cbcb5 100644 --- a/gtk/gtkcolorbutton.c +++ b/gtk/gtkcolorbutton.c @@ -25,14 +25,13 @@ * Modified by the GTK+ Team and others 2003. 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" #include "gtkcolorbutton.h" -#include "gdk/gdkkeysyms.h" -#include "gdk-pixbuf/gdk-pixbuf.h" + #include "gtkbutton.h" #include "gtkmain.h" #include "gtkalignment.h" @@ -52,9 +51,9 @@ * @Title: GtkColorButton * @See_also: #GtkColorSelectionDialog, #GtkFontButton * - * The #GtkColorButton is a button which displays the currently selected color - * an allows to open a color selection dialog to change the color. It is suitable - * widget for selecting a color in a preference dialog. + * The #GtkColorButton is a button which displays the currently selected + * color an allows to open a color selection dialog to change the color. + * It is suitable widget for selecting a color in a preference dialog. */ @@ -64,11 +63,11 @@ #define CHECK_LIGHT (2.0 / 3.0) -struct _GtkColorButtonPrivate +struct _GtkColorButtonPrivate { GtkWidget *draw_area; /* Widget where we draw the color sample */ GtkWidget *cs_dialog; /* Color selection dialog */ - + gchar *title; /* Title for the color selection window */ GdkRGBA rgba; @@ -76,7 +75,7 @@ struct _GtkColorButtonPrivate }; /* Properties */ -enum +enum { PROP_0, PROP_USE_ALPHA, @@ -87,7 +86,7 @@ enum }; /* Signals */ -enum +enum { COLOR_SET, LAST_SIGNAL @@ -96,25 +95,25 @@ enum /* gobject signals */ static void gtk_color_button_finalize (GObject *object); static void gtk_color_button_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec); + guint param_id, + const GValue *value, + GParamSpec *pspec); static void gtk_color_button_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec); + guint param_id, + GValue *value, + GParamSpec *pspec); /* gtkwidget signals */ -static void gtk_color_button_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_color_button_state_changed (GtkWidget *widget, + GtkStateType previous_state); /* gtkbutton signals */ static void gtk_color_button_clicked (GtkButton *button); /* source side drag signals */ static void gtk_color_button_drag_begin (GtkWidget *widget, - GdkDragContext *context, - gpointer data); + GdkDragContext *context, + gpointer data); static void gtk_color_button_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, @@ -124,13 +123,13 @@ static void gtk_color_button_drag_data_get (GtkWidget *widget, /* target side drag signals */ static void gtk_color_button_drag_data_received (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *selection_data, - guint info, - guint32 time, - GtkColorButton *color_button); + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *selection_data, + guint info, + guint32 time, + GtkColorButton *color_button); static guint color_button_signals[LAST_SIGNAL] = { 0 }; @@ -160,15 +159,15 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) /** * GtkColorButton:use-alpha: * - * If this property is set to %TRUE, the color swatch on the button is rendered against a - * checkerboard background to show its opacity and the opacity slider is displayed in the - * color selection dialog. + * If this property is set to %TRUE, the color swatch on the button is rendered against a + * checkerboard background to show its opacity and the opacity slider is displayed in the + * color selection dialog. * * Since: 2.4 */ g_object_class_install_property (gobject_class, PROP_USE_ALPHA, - g_param_spec_boolean ("use-alpha", P_("Use alpha"), + g_param_spec_boolean ("use-alpha", P_("Use alpha"), P_("Whether to give the color an alpha value"), FALSE, GTK_PARAM_READWRITE)); @@ -182,8 +181,8 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) */ g_object_class_install_property (gobject_class, PROP_TITLE, - g_param_spec_string ("title", - P_("Title"), + g_param_spec_string ("title", + P_("Title"), P_("The title of the color selection dialog"), _("Pick a Color"), GTK_PARAM_READWRITE)); @@ -206,7 +205,7 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) /** * GtkColorButton:alpha: * - * The selected opacity value (0 fully transparent, 65535 fully opaque). + * The selected opacity value (0 fully transparent, 65535 fully opaque). * * Since: 2.4 */ @@ -219,7 +218,7 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) GTK_PARAM_READWRITE)); /** - * GtkColorButton::rgba + * GtkColorButton:rgba: * * The RGBA color. * @@ -237,10 +236,11 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) /** * GtkColorButton::color-set: * @widget: the object which received the signal. - * - * The ::color-set signal is emitted when the user selects a color. - * When handling this signal, use gtk_color_button_get_color() and - * gtk_color_button_get_alpha() to find out which color was just selected. + * + * The ::color-set signal is emitted when the user selects a color. + * When handling this signal, use gtk_color_button_get_color() and + * gtk_color_button_get_alpha() (or gtk_color_button_get_rgba()) to + * find out which color was just selected. * * Note that this signal is only emitted when the user * changes the color. If you need to react to programmatic color changes @@ -249,12 +249,12 @@ gtk_color_button_class_init (GtkColorButtonClass *klass) * Since: 2.4 */ color_button_signals[COLOR_SET] = g_signal_new (I_("color-set"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkColorButtonClass, color_set), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkColorButtonClass, color_set), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); g_type_class_add_private (gobject_class, sizeof (GtkColorButtonPrivate)); } @@ -291,7 +291,7 @@ gtk_color_button_get_checkered (void) /* Handle exposure events for the color picker's drawing area */ static gint -gtk_color_button_draw_cb (GtkWidget *widget, +gtk_color_button_draw_cb (GtkWidget *widget, cairo_t *cr, gpointer data) { @@ -324,7 +324,13 @@ gtk_color_button_draw_cb (GtkWidget *widget, if (!gtk_widget_is_sensitive (GTK_WIDGET (color_button))) { - gdk_cairo_set_source_color (cr, >k_widget_get_style (GTK_WIDGET(color_button))->bg[GTK_STATE_INSENSITIVE]); + GtkStyleContext *context; + GdkRGBA color; + + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_background_color (context, GTK_STATE_FLAG_INSENSITIVE, &color); + + gdk_cairo_set_source_rgba (cr, &color); checkered = gtk_color_button_get_checkered (); cairo_mask (cr, checkered); cairo_pattern_destroy (checkered); @@ -334,7 +340,7 @@ gtk_color_button_draw_cb (GtkWidget *widget, } static void -gtk_color_button_state_changed (GtkWidget *widget, +gtk_color_button_state_changed (GtkWidget *widget, GtkStateType previous_state) { gtk_widget_queue_draw (widget); @@ -342,30 +348,33 @@ gtk_color_button_state_changed (GtkWidget *widget, static void gtk_color_button_drag_data_received (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *selection_data, - guint info, - guint32 time, - GtkColorButton *color_button) + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *selection_data, + guint info, + guint32 time, + GtkColorButton *color_button) { + gint length; guint16 *dropped; - if (selection_data->length < 0) + length = gtk_selection_data_get_length (selection_data); + + if (length < 0) return; /* We accept drops with the wrong format, since the KDE color * chooser incorrectly drops application/x-color with format 8. */ - if (selection_data->length != 8) + if (length != 8) { g_warning (_("Received invalid color data\n")); return; } - dropped = (guint16 *)selection_data->data; + dropped = (guint16 *) gtk_selection_data_get_data (selection_data); color_button->priv->rgba.red = dropped[0] / 65535.; color_button->priv->rgba.green = dropped[1] / 65535.; @@ -405,8 +414,8 @@ set_color_icon (GdkDragContext *context, static void gtk_color_button_drag_begin (GtkWidget *widget, - GdkDragContext *context, - gpointer data) + GdkDragContext *context, + gpointer data) { GtkColorButton *color_button = data; @@ -415,11 +424,11 @@ gtk_color_button_drag_begin (GtkWidget *widget, static void gtk_color_button_drag_data_get (GtkWidget *widget, - GdkDragContext *context, - GtkSelectionData *selection_data, - guint info, - guint time, - GtkColorButton *color_button) + GdkDragContext *context, + GtkSelectionData *selection_data, + guint info, + guint time, + GtkColorButton *color_button) { guint16 dropped[4]; @@ -428,8 +437,9 @@ gtk_color_button_drag_data_get (GtkWidget *widget, dropped[2] = (guint16) (color_button->priv->rgba.blue * 65535); dropped[3] = (guint16) (color_button->priv->rgba.alpha * 65535); - gtk_selection_data_set (selection_data, selection_data->target, - 16, (guchar *)dropped, 8); + gtk_selection_data_set (selection_data, + gtk_selection_data_get_target (selection_data), + 16, (guchar *)dropped, 8); } static void @@ -490,7 +500,7 @@ gtk_color_button_init (GtkColorButton *color_button) drop_types, 1, GDK_ACTION_COPY); g_signal_connect (color_button, "drag-begin", - G_CALLBACK (gtk_color_button_drag_begin), color_button); + G_CALLBACK (gtk_color_button_drag_begin), color_button); g_signal_connect (color_button, "drag-data-received", G_CALLBACK (gtk_color_button_drag_data_received), color_button); g_signal_connect (color_button, "drag-data-get", @@ -518,13 +528,15 @@ gtk_color_button_finalize (GObject *object) /** * gtk_color_button_new: * - * Creates a new color button. This returns a widget in the form of - * a small button containing a swatch representing the current selected - * color. When the button is clicked, a color-selection dialog will open, - * allowing the user to select a color. The swatch will be updated to reflect - * the new color when the user finishes. + * Creates a new color button. * - * Returns: a new color button. + * This returns a widget in the form of a small button containing + * a swatch representing the current selected color. When the button + * is clicked, a color-selection dialog will open, allowing the user + * to select a color. The swatch will be updated to reflect the new + * color when the user finishes. + * + * Returns: a new color button * * Since: 2.4 */ @@ -536,11 +548,11 @@ gtk_color_button_new (void) /** * gtk_color_button_new_with_color: - * @color: A #GdkColor to set the current color with. + * @color: A #GdkColor to set the current color with * - * Creates a new color button. + * Creates a new color button. * - * Returns: a new color button. + * Returns: a new color button * * Since: 2.4 */ @@ -552,7 +564,7 @@ gtk_color_button_new_with_color (const GdkColor *color) /** * gtk_color_button_new_with_rgba: - * @rgba: A #GdkRGBA to set the current color with. + * @rgba: A #GdkRGBA to set the current color with * * Creates a new color button. * @@ -567,8 +579,8 @@ gtk_color_button_new_with_rgba (const GdkRGBA *rgba) } static void -dialog_ok_clicked (GtkWidget *widget, - gpointer data) +dialog_ok_clicked (GtkWidget *widget, + gpointer data) { GtkColorButton *color_button = GTK_COLOR_BUTTON (data); GtkColorSelection *color_selection; @@ -593,11 +605,11 @@ dialog_ok_clicked (GtkWidget *widget, } static gboolean -dialog_destroy (GtkWidget *widget, - gpointer data) +dialog_destroy (GtkWidget *widget, + gpointer data) { GtkColorButton *color_button = GTK_COLOR_BUTTON (data); - + color_button->priv->cs_dialog = NULL; return FALSE; @@ -605,11 +617,11 @@ dialog_destroy (GtkWidget *widget, static void dialog_cancel_clicked (GtkWidget *widget, - gpointer data) + gpointer data) { GtkColorButton *color_button = GTK_COLOR_BUTTON (data); - - gtk_widget_hide (color_button->priv->cs_dialog); + + gtk_widget_hide (color_button->priv->cs_dialog); } static void @@ -620,36 +632,36 @@ gtk_color_button_clicked (GtkButton *button) GtkColorSelectionDialog *color_dialog; /* if dialog already exists, make sure it's shown and raised */ - if (!color_button->priv->cs_dialog) + if (!color_button->priv->cs_dialog) { /* Create the dialog and connects its buttons */ GtkWidget *parent; GtkWidget *ok_button, *cancel_button; - + parent = gtk_widget_get_toplevel (GTK_WIDGET (color_button)); - + color_button->priv->cs_dialog = gtk_color_selection_dialog_new (color_button->priv->title); - + color_dialog = GTK_COLOR_SELECTION_DIALOG (color_button->priv->cs_dialog); if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent)) { if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (color_dialog))) - gtk_window_set_transient_for (GTK_WINDOW (color_dialog), GTK_WINDOW (parent)); - - gtk_window_set_modal (GTK_WINDOW (color_dialog), - gtk_window_get_modal (GTK_WINDOW (parent))); - } + gtk_window_set_transient_for (GTK_WINDOW (color_dialog), GTK_WINDOW (parent)); + + gtk_window_set_modal (GTK_WINDOW (color_dialog), + gtk_window_get_modal (GTK_WINDOW (parent))); + } g_object_get (color_dialog, "ok-button", &ok_button, "cancel-button", &cancel_button, NULL); - + g_signal_connect (ok_button, "clicked", G_CALLBACK (dialog_ok_clicked), color_button); g_signal_connect (cancel_button, "clicked", - G_CALLBACK (dialog_cancel_clicked), color_button); + G_CALLBACK (dialog_cancel_clicked), color_button); g_signal_connect (color_dialog, "destroy", G_CALLBACK (dialog_destroy), color_button); } @@ -670,16 +682,16 @@ gtk_color_button_clicked (GtkButton *button) /** * gtk_color_button_set_color: - * @color_button: a #GtkColorButton. - * @color: A #GdkColor to set the current color with. + * @color_button: a #GtkColorButton + * @color: A #GdkColor to set the current color with * * Sets the current color to be @color. * * Since: 2.4 - **/ + */ void gtk_color_button_set_color (GtkColorButton *color_button, - const GdkColor *color) + const GdkColor *color) { g_return_if_fail (GTK_IS_COLOR_BUTTON (color_button)); g_return_if_fail (color != NULL); @@ -689,7 +701,7 @@ gtk_color_button_set_color (GtkColorButton *color_button, color_button->priv->rgba.blue = color->blue / 65535.; gtk_widget_queue_draw (color_button->priv->draw_area); - + g_object_notify (G_OBJECT (color_button), "color"); g_object_notify (G_OBJECT (color_button), "rgba"); } @@ -697,16 +709,16 @@ gtk_color_button_set_color (GtkColorButton *color_button, /** * gtk_color_button_set_alpha: - * @color_button: a #GtkColorButton. - * @alpha: an integer between 0 and 65535. + * @color_button: a #GtkColorButton + * @alpha: an integer between 0 and 65535 * - * Sets the current opacity to be @alpha. + * Sets the current opacity to be @alpha. * * Since: 2.4 - **/ + */ void gtk_color_button_set_alpha (GtkColorButton *color_button, - guint16 alpha) + guint16 alpha) { g_return_if_fail (GTK_IS_COLOR_BUTTON (color_button)); @@ -720,16 +732,16 @@ gtk_color_button_set_alpha (GtkColorButton *color_button, /** * gtk_color_button_get_color: - * @color_button: a #GtkColorButton. - * @color: a #GdkColor to fill in with the current color. + * @color_button: a #GtkColorButton + * @color: (out): a #GdkColor to fill in with the current color * * Sets @color to be the current color in the #GtkColorButton widget. * * Since: 2.4 - **/ + */ void gtk_color_button_get_color (GtkColorButton *color_button, - GdkColor *color) + GdkColor *color) { g_return_if_fail (GTK_IS_COLOR_BUTTON (color_button)); @@ -740,14 +752,14 @@ gtk_color_button_get_color (GtkColorButton *color_button, /** * gtk_color_button_get_alpha: - * @color_button: a #GtkColorButton. + * @color_button: a #GtkColorButton * - * Returns the current alpha value. + * Returns the current alpha value. * - * Return value: an integer between 0 and 65535. + * Return value: an integer between 0 and 65535 * * Since: 2.4 - **/ + */ guint16 gtk_color_button_get_alpha (GtkColorButton *color_button) { @@ -758,13 +770,13 @@ gtk_color_button_get_alpha (GtkColorButton *color_button) /** * gtk_color_button_set_rgba: - * @color_button: a #GtkColorButton. + * @color_button: a #GtkColorButton * @rgba: a #GdkRGBA to set the current color with * * Sets the current color to be @rgba. * * Since: 3.0 - **/ + */ void gtk_color_button_set_rgba (GtkColorButton *color_button, const GdkRGBA *rgba) @@ -779,13 +791,13 @@ gtk_color_button_set_rgba (GtkColorButton *color_button, /** * gtk_color_button_get_rgba: - * @color_button: a #GtkColorButton. - * @rgba: a #GdkRGBA to fill in with the current color + * @color_button: a #GtkColorButton + * @rgba: (out): a #GdkRGBA to fill in with the current color * * Sets @rgba to be the current color in the #GtkColorButton widget. * * Since: 3.0 - **/ + */ void gtk_color_button_get_rgba (GtkColorButton *color_button, GdkRGBA *rgba) @@ -798,22 +810,22 @@ gtk_color_button_get_rgba (GtkColorButton *color_button, /** * gtk_color_button_set_use_alpha: - * @color_button: a #GtkColorButton. - * @use_alpha: %TRUE if color button should use alpha channel, %FALSE if not. + * @color_button: a #GtkColorButton + * @use_alpha: %TRUE if color button should use alpha channel, %FALSE if not * * Sets whether or not the color button should use the alpha channel. * * Since: 2.4 */ void -gtk_color_button_set_use_alpha (GtkColorButton *color_button, - gboolean use_alpha) +gtk_color_button_set_use_alpha (GtkColorButton *color_button, + gboolean use_alpha) { g_return_if_fail (GTK_IS_COLOR_BUTTON (color_button)); use_alpha = (use_alpha != FALSE); - if (color_button->priv->use_alpha != use_alpha) + if (color_button->priv->use_alpha != use_alpha) { color_button->priv->use_alpha = use_alpha; @@ -825,11 +837,11 @@ gtk_color_button_set_use_alpha (GtkColorButton *color_button, /** * gtk_color_button_get_use_alpha: - * @color_button: a #GtkColorButton. + * @color_button: a #GtkColorButton * - * Does the color selection dialog use the alpha channel? + * Does the color selection dialog use the alpha channel ? * - * Returns: %TRUE if the color sample uses alpha channel, %FALSE if not. + * Returns: %TRUE if the color sample uses alpha channel, %FALSE if not * * Since: 2.4 */ @@ -845,15 +857,15 @@ gtk_color_button_get_use_alpha (GtkColorButton *color_button) /** * gtk_color_button_set_title: * @color_button: a #GtkColorButton - * @title: String containing new window title. + * @title: String containing new window title * * Sets the title for the color selection dialog. * * Since: 2.4 */ void -gtk_color_button_set_title (GtkColorButton *color_button, - const gchar *title) +gtk_color_button_set_title (GtkColorButton *color_button, + const gchar *title) { gchar *old_title; @@ -864,9 +876,9 @@ gtk_color_button_set_title (GtkColorButton *color_button, g_free (old_title); if (color_button->priv->cs_dialog) - gtk_window_set_title (GTK_WINDOW (color_button->priv->cs_dialog), - color_button->priv->title); - + gtk_window_set_title (GTK_WINDOW (color_button->priv->cs_dialog), + color_button->priv->title); + g_object_notify (G_OBJECT (color_button), "title"); } @@ -890,13 +902,13 @@ gtk_color_button_get_title (GtkColorButton *color_button) static void gtk_color_button_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec) + guint param_id, + const GValue *value, + GParamSpec *pspec) { GtkColorButton *color_button = GTK_COLOR_BUTTON (object); - switch (param_id) + switch (param_id) { case PROP_USE_ALPHA: gtk_color_button_set_use_alpha (color_button, g_value_get_boolean (value)); @@ -921,14 +933,14 @@ gtk_color_button_set_property (GObject *object, static void gtk_color_button_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec) + guint param_id, + GValue *value, + GParamSpec *pspec) { GtkColorButton *color_button = GTK_COLOR_BUTTON (object); GdkColor color; - switch (param_id) + switch (param_id) { case PROP_USE_ALPHA: g_value_set_boolean (value, gtk_color_button_get_use_alpha (color_button)); diff --git a/gtk/gtkcolorbutton.h b/gtk/gtkcolorbutton.h index ae56f896f2..98e7e8cf20 100644 --- a/gtk/gtkcolorbutton.h +++ b/gtk/gtkcolorbutton.h @@ -42,12 +42,6 @@ G_BEGIN_DECLS -/* The GtkColorButton widget is a simple color picker in a button. - * The button displays a sample of the currently selected color. When - * the user clicks on the button, a color selection dialog pops up. - * The color picker emits the "color_set" signal when the color is set. - */ - #define GTK_TYPE_COLOR_BUTTON (gtk_color_button_get_type ()) #define GTK_COLOR_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_COLOR_BUTTON, GtkColorButton)) #define GTK_COLOR_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_COLOR_BUTTON, GtkColorButtonClass)) @@ -84,22 +78,21 @@ GtkWidget *gtk_color_button_new (void); GtkWidget *gtk_color_button_new_with_color (const GdkColor *color); GtkWidget *gtk_color_button_new_with_rgba (const GdkRGBA *rgba); void gtk_color_button_set_color (GtkColorButton *color_button, - const GdkColor *color); + const GdkColor *color); void gtk_color_button_set_alpha (GtkColorButton *color_button, - guint16 alpha); + guint16 alpha); void gtk_color_button_get_color (GtkColorButton *color_button, - GdkColor *color); + GdkColor *color); guint16 gtk_color_button_get_alpha (GtkColorButton *color_button); void gtk_color_button_set_use_alpha (GtkColorButton *color_button, - gboolean use_alpha); + gboolean use_alpha); gboolean gtk_color_button_get_use_alpha (GtkColorButton *color_button); - void gtk_color_button_set_rgba (GtkColorButton *color_button, const GdkRGBA *rgba); void gtk_color_button_get_rgba (GtkColorButton *color_button, GdkRGBA *rgba); void gtk_color_button_set_title (GtkColorButton *color_button, - const gchar *title); + const gchar *title); G_CONST_RETURN gchar *gtk_color_button_get_title (GtkColorButton *color_button); diff --git a/gtk/gtkcolorsel.c b/gtk/gtkcolorsel.c index 2ed64827af..f60d1e7805 100644 --- a/gtk/gtkcolorsel.c +++ b/gtk/gtkcolorsel.c @@ -32,8 +32,7 @@ #include #include -#include "gdkconfig.h" -#include "gdk/gdkkeysyms.h" +#include "gdk/gdk.h" #include "gtkhsv.h" #include "gtkwindow.h" #include "gtkselection.h" @@ -808,6 +807,7 @@ color_sample_drop_handle (GtkWidget *widget, { GtkColorSelection *colorsel = data; GtkColorSelectionPrivate *priv; + gint length; guint16 *vals; gdouble color[4]; priv = colorsel->private_data; @@ -818,21 +818,23 @@ color_sample_drop_handle (GtkWidget *widget, * B * opacity */ - - if (selection_data->length < 0) + + length = gtk_selection_data_get_length (selection_data); + + if (length < 0) return; /* We accept drops with the wrong format, since the KDE color * chooser incorrectly drops application/x-color with format 8. */ - if (selection_data->length != 8) + if (length != 8) { g_warning ("Received invalid color data\n"); return; } - - vals = (guint16 *)selection_data->data; - + + vals = (guint16 *) gtk_selection_data_get_data (selection_data); + if (widget == priv->cur_sample) { color[0] = (gdouble)vals[0] / 0xffff; @@ -1110,11 +1112,15 @@ palette_draw (GtkWidget *drawing_area, cairo_t *cr, gpointer data) { + GtkStyleContext *context; gint focus_width; + GdkRGBA color; - gdk_cairo_set_source_color (cr, >k_widget_get_style (drawing_area)->bg[GTK_STATE_NORMAL]); + context = gtk_widget_get_style_context (drawing_area); + gtk_style_context_get_background_color (context, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_paint (cr); - + if (gtk_widget_has_focus (drawing_area)) { set_focus_line_attributes (drawing_area, cr, &focus_width); @@ -1533,23 +1539,26 @@ palette_drop_handle (GtkWidget *widget, gpointer data) { GtkColorSelection *colorsel = GTK_COLOR_SELECTION (data); + gint length; guint16 *vals; gdouble color[4]; - - if (selection_data->length < 0) + + length = gtk_selection_data_get_length (selection_data); + + if (length < 0) return; /* We accept drops with the wrong format, since the KDE color * chooser incorrectly drops application/x-color with format 8. */ - if (selection_data->length != 8) + if (length != 8) { g_warning ("Received invalid color data\n"); return; } - - vals = (guint16 *)selection_data->data; - + + vals = (guint16 *) gtk_selection_data_get_data (selection_data); + color[0] = (gdouble)vals[0] / 0xffff; color[1] = (gdouble)vals[1] / 0xffff; color[2] = (gdouble)vals[2] / 0xffff; @@ -1705,8 +1714,7 @@ grab_color_at_pointer (GdkScreen *screen, if (!pixbuf) { gint x, y; - GdkDisplay *display = gdk_screen_get_display (screen); - GdkWindow *window = gdk_display_get_window_at_device_position (display, device, &x, &y); + GdkWindow *window = gdk_device_get_window_at_position (device, &x, &y); if (!window) return; pixbuf = gdk_pixbuf_get_from_window (window, @@ -1799,7 +1807,6 @@ key_press (GtkWidget *invisible, GdkEventKey *event, gpointer data) { - GdkDisplay *display = gtk_widget_get_display (invisible); GdkScreen *screen = gdk_event_get_screen ((GdkEvent *) event); GdkDevice *device, *pointer_device; guint state = event->state & gtk_accelerator_get_default_mod_mask (); @@ -1808,7 +1815,7 @@ key_press (GtkWidget *invisible, device = gdk_event_get_device ((GdkEvent * ) event); pointer_device = gdk_device_get_associated_device (device); - gdk_display_get_device_state (display, pointer_device, NULL, &x, &y, NULL); + gdk_device_get_position (pointer_device, NULL, &x, &y); dx = 0; dy = 0; @@ -1861,7 +1868,7 @@ key_press (GtkWidget *invisible, return FALSE; } - gdk_display_warp_device (display, pointer_device, screen, x + dx, y + dy); + gdk_device_warp (pointer_device, screen, x + dx, y + dy); return TRUE; @@ -1963,7 +1970,7 @@ get_screen_color (GtkWidget *button) GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_POINTER_MOTION_MASK, picker_cursor, time); - gdk_cursor_unref (picker_cursor); + g_object_unref (picker_cursor); if (grab_status != GDK_GRAB_SUCCESS) { @@ -2071,7 +2078,7 @@ adjustment_changed (GtkAdjustment *adjustment, { case COLORSEL_SATURATION: case COLORSEL_VALUE: - priv->color[GPOINTER_TO_INT (data)] = adjustment->value / 100; + priv->color[GPOINTER_TO_INT (data)] = gtk_adjustment_get_value (adjustment) / 100; gtk_hsv_to_rgb (priv->color[COLORSEL_HUE], priv->color[COLORSEL_SATURATION], priv->color[COLORSEL_VALUE], @@ -2080,7 +2087,7 @@ adjustment_changed (GtkAdjustment *adjustment, &priv->color[COLORSEL_BLUE]); break; case COLORSEL_HUE: - priv->color[GPOINTER_TO_INT (data)] = adjustment->value / 360; + priv->color[GPOINTER_TO_INT (data)] = gtk_adjustment_get_value (adjustment) / 360; gtk_hsv_to_rgb (priv->color[COLORSEL_HUE], priv->color[COLORSEL_SATURATION], priv->color[COLORSEL_VALUE], @@ -2091,7 +2098,7 @@ adjustment_changed (GtkAdjustment *adjustment, case COLORSEL_RED: case COLORSEL_GREEN: case COLORSEL_BLUE: - priv->color[GPOINTER_TO_INT (data)] = adjustment->value / 255; + priv->color[GPOINTER_TO_INT (data)] = gtk_adjustment_get_value (adjustment) / 255; gtk_rgb_to_hsv (priv->color[COLORSEL_RED], priv->color[COLORSEL_GREEN], @@ -2101,7 +2108,7 @@ adjustment_changed (GtkAdjustment *adjustment, &priv->color[COLORSEL_VALUE]); break; default: - priv->color[GPOINTER_TO_INT (data)] = adjustment->value / 255; + priv->color[GPOINTER_TO_INT (data)] = gtk_adjustment_get_value (adjustment) / 255; break; } update_color (colorsel); diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index 0cf07377b0..b2adcfb51a 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -19,7 +19,8 @@ #include "config.h" #include "gtkcombobox.h" - +#include "gtkcellareabox.h" +#include "gtktreemenu.h" #include "gtkarrow.h" #include "gtkbindings.h" #include "gtkcelllayout.h" @@ -30,7 +31,8 @@ #include "gtkhbox.h" #include "gtkliststore.h" #include "gtkmain.h" -#include "gtkmenu.h" +#include "gtkmenuprivate.h" +#include "gtkmenushellprivate.h" #include "gtkscrolledwindow.h" #include "gtkseparatormenuitem.h" #include "gtktearoffmenuitem.h" @@ -38,10 +40,9 @@ #include "gtktreeselection.h" #include "gtkvseparator.h" #include "gtkwindow.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" -#include - #include #include @@ -50,6 +51,7 @@ #include "gtkmarshalers.h" #include "gtkintl.h" +#include "gtkentryprivate.h" #include "gtktreeprivate.h" @@ -74,33 +76,24 @@ * not restricted to a flat list, it can be a real tree, and the popup will * reflect the tree structure. * + * To allow the user to enter values not in the model, the 'has-entry' + * property allows the GtkComboBox to contain a #GtkEntry. This entry + * can be accessed by calling gtk_bin_get_child() on the combo box. + * * For a simple list of textual choices, the model-view API of GtkComboBox * can be a bit overwhelming. In this case, #GtkComboBoxText offers a - * simple alternative. + * simple alternative. Both GtkComboBox and #GtkComboBoxText can contain + * an entry. */ /* WELCOME, to THE house of evil code */ - -typedef struct _ComboCellInfo ComboCellInfo; -struct _ComboCellInfo -{ - GtkCellRenderer *cell; - GSList *attributes; - - GtkCellLayoutDataFunc func; - gpointer func_data; - GDestroyNotify destroy; - - guint expand : 1; - guint pack : 1; -}; - - struct _GtkComboBoxPrivate { GtkTreeModel *model; + GtkCellArea *area; + gint col_column; gint row_column; @@ -135,9 +128,6 @@ struct _GtkComboBoxPrivate guint scroll_timer; guint resize_idle_id; - gint minimum_width; - gint natural_width; - /* For "has-entry" specific behavior we track * an automated cell renderer and text column */ gint text_column; @@ -145,8 +135,6 @@ struct _GtkComboBoxPrivate gint id_column; - GSList *cells; - guint popup_in_progress : 1; guint popup_shown : 1; guint add_tearoffs : 1; @@ -249,7 +237,8 @@ enum { PROP_ENTRY_TEXT_COLUMN, PROP_POPUP_FIXED_WIDTH, PROP_ID_COLUMN, - PROP_ACTIVE_ID + PROP_ACTIVE_ID, + PROP_CELL_AREA }; static guint combo_box_signals[LAST_SIGNAL] = {0,}; @@ -262,8 +251,8 @@ static guint combo_box_signals[LAST_SIGNAL] = {0,}; static void gtk_combo_box_cell_layout_init (GtkCellLayoutIface *iface); static void gtk_combo_box_cell_editable_init (GtkCellEditableIface *iface); static GObject *gtk_combo_box_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties); + guint n_construct_properties, + GObjectConstructParam *construct_properties); static void gtk_combo_box_dispose (GObject *object); static void gtk_combo_box_finalize (GObject *object); static void gtk_combo_box_destroy (GtkWidget *widget); @@ -278,7 +267,7 @@ static void gtk_combo_box_get_property (GObject *object, GParamSpec *spec); static void gtk_combo_box_state_changed (GtkWidget *widget, - GtkStateType previous); + GtkStateType previous); static void gtk_combo_box_grab_focus (GtkWidget *widget); static void gtk_combo_box_style_updated (GtkWidget *widget); static void gtk_combo_box_button_toggled (GtkWidget *widget, @@ -291,9 +280,6 @@ static void gtk_combo_box_add (GtkContainer *container, static void gtk_combo_box_remove (GtkContainer *container, GtkWidget *widget); -static ComboCellInfo *gtk_combo_box_get_cell_info (GtkComboBox *combo_box, - GtkCellRenderer *cell); - static void gtk_combo_box_menu_show (GtkWidget *menu, gpointer user_data); static void gtk_combo_box_menu_hide (GtkWidget *menu, @@ -317,10 +303,6 @@ static void gtk_combo_box_menu_position (GtkMenu *menu, gint *push_in, gpointer user_data); -static void gtk_combo_box_update_requested_width(GtkComboBox *combo_box, - GtkTreePath *path); -static void gtk_combo_box_remeasure (GtkComboBox *combo_box); - static void gtk_combo_box_unset_model (GtkComboBox *combo_box); static void gtk_combo_box_size_allocate (GtkWidget *widget, @@ -334,7 +316,7 @@ static gboolean gtk_combo_box_draw (GtkWidget *widget, static gboolean gtk_combo_box_scroll_event (GtkWidget *widget, GdkEventScroll *event); static void gtk_combo_box_set_active_internal (GtkComboBox *combo_box, - GtkTreePath *path); + GtkTreePath *path); static void gtk_combo_box_check_appearance (GtkComboBox *combo_box); static void gtk_combo_box_real_move_active (GtkComboBox *combo_box, @@ -344,32 +326,32 @@ static gboolean gtk_combo_box_real_popdown (GtkComboBox *combo_box) /* listening to the model */ static void gtk_combo_box_model_row_inserted (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data); + GtkTreePath *path, + GtkTreeIter *iter, + gpointer user_data); static void gtk_combo_box_model_row_deleted (GtkTreeModel *model, - GtkTreePath *path, - gpointer user_data); + GtkTreePath *path, + gpointer user_data); static void gtk_combo_box_model_rows_reordered (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order, - gpointer user_data); + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order, + gpointer user_data); static void gtk_combo_box_model_row_changed (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data); + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data); static void gtk_combo_box_model_row_expanded (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data); + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data); /* list */ -static void gtk_combo_box_list_position (GtkComboBox *combo_box, - gint *x, - gint *y, - gint *width, - gint *height); +static void gtk_combo_box_list_position (GtkComboBox *combo_box, + gint *x, + gint *y, + gint *width, + gint *height); static void gtk_combo_box_list_setup (GtkComboBox *combo_box); static void gtk_combo_box_list_destroy (GtkComboBox *combo_box); @@ -383,18 +365,18 @@ static gboolean gtk_combo_box_list_enter_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer data); static void gtk_combo_box_list_auto_scroll (GtkComboBox *combo, - gint x, - gint y); + gint x, + gint y); static gboolean gtk_combo_box_list_scroll_timeout (GtkComboBox *combo); static gboolean gtk_combo_box_list_button_pressed (GtkWidget *widget, GdkEventButton *event, gpointer data); static gboolean gtk_combo_box_list_select_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer data); + GtkTreeModel *model, + GtkTreePath *path, + gboolean path_currently_selected, + gpointer data); static void gtk_combo_box_list_row_changed (GtkTreeModel *model, GtkTreePath *path, @@ -405,95 +387,40 @@ static void gtk_combo_box_list_popup_resize (GtkComboBox *combo_box) /* menu */ static void gtk_combo_box_menu_setup (GtkComboBox *combo_box, gboolean add_children); -static void gtk_combo_box_menu_fill (GtkComboBox *combo_box); -static void gtk_combo_box_menu_fill_level (GtkComboBox *combo_box, - GtkWidget *menu, - GtkTreeIter *iter); static void gtk_combo_box_update_title (GtkComboBox *combo_box); static void gtk_combo_box_menu_destroy (GtkComboBox *combo_box); -static void gtk_combo_box_relayout_item (GtkComboBox *combo_box, - GtkWidget *item, - GtkTreeIter *iter, - GtkWidget *last); -static void gtk_combo_box_relayout (GtkComboBox *combo_box); static gboolean gtk_combo_box_menu_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data); -static void gtk_combo_box_menu_item_activate (GtkWidget *item, - gpointer user_data); - +static void gtk_combo_box_menu_activate (GtkWidget *menu, + const gchar *path, + GtkComboBox *combo_box); static void gtk_combo_box_update_sensitivity (GtkComboBox *combo_box); -static void gtk_combo_box_menu_row_inserted (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data); -static void gtk_combo_box_menu_row_deleted (GtkTreeModel *model, - GtkTreePath *path, - gpointer user_data); -static void gtk_combo_box_menu_rows_reordered (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order, - gpointer user_data); -static void gtk_combo_box_menu_row_changed (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data); static gboolean gtk_combo_box_menu_key_press (GtkWidget *widget, - GdkEventKey *event, - gpointer data); + GdkEventKey *event, + gpointer data); static void gtk_combo_box_menu_popup (GtkComboBox *combo_box, - guint button, - guint32 activate_time); -static GtkWidget *gtk_cell_view_menu_item_new (GtkComboBox *combo_box, - GtkTreeModel *model, - GtkTreeIter *iter); + guint button, + guint32 activate_time); /* cell layout */ -static void gtk_combo_box_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *cell, - gboolean expand); -static void gtk_combo_box_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *cell, - gboolean expand); -static GList *gtk_combo_box_cell_layout_get_cells (GtkCellLayout *layout); -static void gtk_combo_box_cell_layout_clear (GtkCellLayout *layout); -static void gtk_combo_box_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *cell, - const gchar *attribute, - gint column); -static void gtk_combo_box_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy); -static void gtk_combo_box_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *cell); -static void gtk_combo_box_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position); -static gboolean gtk_combo_box_mnemonic_activate (GtkWidget *widget, - gboolean group_cycling); +GtkCellArea *gtk_combo_box_cell_layout_get_area (GtkCellLayout *cell_layout); + +static gboolean gtk_combo_box_mnemonic_activate (GtkWidget *widget, + gboolean group_cycling); -static void gtk_combo_box_sync_cells (GtkComboBox *combo_box, - GtkCellLayout *cell_layout); -static void combo_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkTreeModel *tree_model, - GtkTreeIter *iter, - gpointer data); static void gtk_combo_box_child_show (GtkWidget *widget, - GtkComboBox *combo_box); + GtkComboBox *combo_box); static void gtk_combo_box_child_hide (GtkWidget *widget, - GtkComboBox *combo_box); + GtkComboBox *combo_box); /* GtkComboBox:has-entry callbacks */ static void gtk_combo_box_entry_contents_changed (GtkEntry *entry, - gpointer user_data); + gpointer user_data); static void gtk_combo_box_entry_active_changed (GtkComboBox *combo_box, - gpointer user_data); + gpointer user_data); /* GtkBuildable method implementation */ @@ -501,48 +428,48 @@ static GtkBuildableIface *parent_buildable_iface; static void gtk_combo_box_buildable_init (GtkBuildableIface *iface); static gboolean gtk_combo_box_buildable_custom_tag_start (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - GMarkupParser *parser, - gpointer *data); + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + GMarkupParser *parser, + gpointer *data); static void gtk_combo_box_buildable_custom_tag_end (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - gpointer *data); + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data); static GObject *gtk_combo_box_buildable_get_internal_child (GtkBuildable *buildable, - GtkBuilder *builder, - const gchar *childname); + GtkBuilder *builder, + const gchar *childname); /* GtkCellEditable method implementations */ static void gtk_combo_box_start_editing (GtkCellEditable *cell_editable, - GdkEvent *event); + GdkEvent *event); -static void gtk_combo_box_get_preferred_width (GtkWidget *widget, - gint *minimum_size, - gint *natural_size); -static void gtk_combo_box_get_preferred_height (GtkWidget *widget, - gint *minimum_size, - gint *natural_size); -static void gtk_combo_box_get_preferred_width_for_height (GtkWidget *widget, - gint avail_size, - gint *minimum_size, - gint *natural_size); -static void gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget, - gint avail_size, - gint *minimum_size, - gint *natural_size); +static void gtk_combo_box_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); +static void gtk_combo_box_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); +static void gtk_combo_box_get_preferred_width_for_height (GtkWidget *widget, + gint avail_size, + gint *minimum_size, + gint *natural_size); +static void gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget, + gint avail_size, + gint *minimum_size, + gint *natural_size); G_DEFINE_TYPE_WITH_CODE (GtkComboBox, gtk_combo_box, GTK_TYPE_BIN, - G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, - gtk_combo_box_cell_layout_init) - G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_EDITABLE, - gtk_combo_box_cell_editable_init) - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_combo_box_buildable_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, + gtk_combo_box_cell_layout_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_EDITABLE, + gtk_combo_box_cell_editable_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_combo_box_buildable_init)) /* common */ @@ -607,7 +534,7 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * @widget: the object that received the signal * @scroll_type: a #GtkScrollType * - * The ::move-active signal is a + * The ::move-active signal is a * keybinding signal * which gets emitted to move the active selection. * @@ -627,7 +554,7 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * GtkComboBox::popup: * @widget: the object that received the signal * - * The ::popup signal is a + * The ::popup signal is a * keybinding signal * which gets emitted to popup the combo box list. * @@ -647,8 +574,8 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * GtkComboBox::popdown: * @button: the object which received the signal * - * The ::popdown signal is a - * keybinding signal + * The ::popdown signal is a + * keybinding signal * which gets emitted to popdown the combo box list. * * The default bindings for this signal are Alt+Up and Escape. @@ -668,54 +595,54 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) binding_set = gtk_binding_set_by_class (widget_class); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Down, GDK_MOD1_MASK, - "popup", 0); + "popup", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Down, GDK_MOD1_MASK, - "popup", 0); + "popup", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Up, GDK_MOD1_MASK, - "popdown", 0); + "popdown", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Up, GDK_MOD1_MASK, - "popdown", 0); + "popdown", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, - "popdown", 0); + "popdown", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Up, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_UP); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_UP); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Up, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_UP); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_UP); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Up, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_UP); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_UP); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Page_Up, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_UP); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_UP); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Home, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_START); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_START); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Home, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_START); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_START); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Down, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_DOWN); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_DOWN); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Down, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_DOWN); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_DOWN); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Down, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_DOWN); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_DOWN); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Page_Down, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_DOWN); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_DOWN); gtk_binding_entry_add_signal (binding_set, GDK_KEY_End, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_END); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_END); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_End, 0, - "move-active", 1, - GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_END); + "move-active", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_END); /* properties */ g_object_class_override_property (object_class, @@ -726,7 +653,7 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * GtkComboBox:model: * * The model from which the combo box takes the values shown - * in the list. + * in the list. * * Since: 2.4 */ @@ -761,11 +688,11 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) /** * GtkComboBox:row-span-column: * - * If this is set to a non-negative value, it must be the index of a column - * of type %G_TYPE_INT in the model. + * If this is set to a non-negative value, it must be the index of a column + * of type %G_TYPE_INT in the model. * - * The values of that column are used to determine how many rows a value in - * the list will span. Therefore, the values in the model column pointed to + * The values of that column are used to determine how many rows a value in + * the list will span. Therefore, the values in the model column pointed to * by this property must be greater than zero and not larger than wrap-width. * * Since: 2.4 @@ -784,11 +711,11 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) /** * GtkComboBox:column-span-column: * - * If this is set to a non-negative value, it must be the index of a column - * of type %G_TYPE_INT in the model. + * If this is set to a non-negative value, it must be the index of a column + * of type %G_TYPE_INT in the model. * - * The values of that column are used to determine how many columns a value - * in the list will span. + * The values of that column are used to determine how many columns a value + * in the list will span. * * Since: 2.4 */ @@ -808,7 +735,7 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * * The item which is currently active. If the model is a non-flat treemodel, * and the active item is not an immediate child of the root of the tree, - * this property has the value + * this property has the value * gtk_tree_path_get_indices (path)[0], * where path is the #GtkTreePath of the active item. * @@ -827,8 +754,8 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) /** * GtkComboBox:add-tearoffs: * - * The add-tearoffs property controls whether generated menus - * have tearoff menu items. + * The add-tearoffs property controls whether generated menus + * have tearoff menu items. * * Note that this only affects menu style combo boxes. * @@ -836,12 +763,12 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) */ g_object_class_install_property (object_class, PROP_ADD_TEAROFFS, - g_param_spec_boolean ("add-tearoffs", - P_("Add tearoffs to menus"), - P_("Whether dropdowns should have a tearoff menu item"), - FALSE, - GTK_PARAM_READWRITE)); - + g_param_spec_boolean ("add-tearoffs", + P_("Add tearoffs to menus"), + P_("Whether dropdowns should have a tearoff menu item"), + FALSE, + GTK_PARAM_READWRITE)); + /** * GtkComboBox:has-frame: * @@ -852,24 +779,24 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) */ g_object_class_install_property (object_class, PROP_HAS_FRAME, - g_param_spec_boolean ("has-frame", - P_("Has Frame"), - P_("Whether the combo box draws a frame around the child"), - TRUE, - GTK_PARAM_READWRITE)); - + g_param_spec_boolean ("has-frame", + P_("Has Frame"), + P_("Whether the combo box draws a frame around the child"), + TRUE, + GTK_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_FOCUS_ON_CLICK, g_param_spec_boolean ("focus-on-click", - P_("Focus on click"), - P_("Whether the combo box grabs focus when it is clicked with the mouse"), - TRUE, - GTK_PARAM_READWRITE)); + P_("Focus on click"), + P_("Whether the combo box grabs focus when it is clicked with the mouse"), + TRUE, + GTK_PARAM_READWRITE)); /** * GtkComboBox:tearoff-title: * - * A title that may be displayed by the window manager + * A title that may be displayed by the window manager * when the popup is torn-off. * * Since: 2.10 @@ -886,7 +813,7 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) /** * GtkComboBox:popup-shown: * - * Whether the combo boxes dropdown is popped up. + * Whether the combo boxes dropdown is popped up. * Note that this property is mainly useful, because * it allows you to connect to notify::popup-shown. * @@ -928,10 +855,10 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) g_object_class_install_property (object_class, PROP_HAS_ENTRY, g_param_spec_boolean ("has-entry", - P_("Has Entry"), - P_("Whether combo box has an entry"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + P_("Has Entry"), + P_("Whether combo box has an entry"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtkComboBox:entry-text-column: @@ -944,12 +871,12 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) g_object_class_install_property (object_class, PROP_ENTRY_TEXT_COLUMN, g_param_spec_int ("entry-text-column", - P_("Entry Text Column"), - P_("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"), - -1, G_MAXINT, -1, - GTK_PARAM_READWRITE)); + P_("Entry Text Column"), + P_("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"), + -1, G_MAXINT, -1, + GTK_PARAM_READWRITE)); /** * GtkComboBox:id-column: @@ -994,12 +921,27 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) g_object_class_install_property (object_class, PROP_POPUP_FIXED_WIDTH, g_param_spec_boolean ("popup-fixed-width", - P_("Popup Fixed Width"), - P_("Whether the popup's width should be a " - "fixed width matching the allocated width " - "of the combo box"), - TRUE, - GTK_PARAM_READWRITE)); + P_("Popup Fixed Width"), + P_("Whether the popup's width should be a " + "fixed width matching the allocated width " + "of the combo box"), + TRUE, + GTK_PARAM_READWRITE)); + + /** + * GtkComboBox:cell-area: + * + * The #GtkCellArea used to layout cell renderers for this combo box. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); gtk_widget_class_install_style_property (widget_class, g_param_spec_boolean ("appears-as-list", @@ -1019,13 +961,13 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) * Since: 2.12 */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("arrow-size", - P_("Arrow Size"), - P_("The minimum size of the arrow in the combo box"), - 0, - G_MAXINT, - 15, - GTK_PARAM_READABLE)); + g_param_spec_int ("arrow-size", + P_("Arrow Size"), + P_("The minimum size of the arrow in the combo box"), + 0, + G_MAXINT, + 15, + GTK_PARAM_READABLE)); /** * GtkComboBox:shadow-type: @@ -1058,14 +1000,7 @@ gtk_combo_box_buildable_init (GtkBuildableIface *iface) static void gtk_combo_box_cell_layout_init (GtkCellLayoutIface *iface) { - iface->pack_start = gtk_combo_box_cell_layout_pack_start; - iface->pack_end = gtk_combo_box_cell_layout_pack_end; - iface->get_cells = gtk_combo_box_cell_layout_get_cells; - iface->clear = gtk_combo_box_cell_layout_clear; - iface->add_attribute = gtk_combo_box_cell_layout_add_attribute; - iface->set_cell_data_func = gtk_combo_box_cell_layout_set_cell_data_func; - iface->clear_attributes = gtk_combo_box_cell_layout_clear_attributes; - iface->reorder = gtk_combo_box_cell_layout_reorder; + iface->get_area = gtk_combo_box_cell_layout_get_area; } static void @@ -1078,21 +1013,12 @@ static void gtk_combo_box_init (GtkComboBox *combo_box) { GtkComboBoxPrivate *priv; - GtkStyleContext *context; combo_box->priv = G_TYPE_INSTANCE_GET_PRIVATE (combo_box, GTK_TYPE_COMBO_BOX, GtkComboBoxPrivate); priv = combo_box->priv; - priv->cell_view = gtk_cell_view_new (); - gtk_widget_set_parent (priv->cell_view, GTK_WIDGET (combo_box)); - _gtk_bin_set_child (GTK_BIN (combo_box), priv->cell_view); - gtk_widget_show (priv->cell_view); - - priv->minimum_width = 0; - priv->natural_width = 0; - priv->wrap_width = 0; priv->active = -1; @@ -1114,11 +1040,6 @@ gtk_combo_box_init (GtkComboBox *combo_box) priv->text_column = -1; priv->text_renderer = NULL; priv->id_column = -1; - - gtk_combo_box_check_appearance (combo_box); - - context = gtk_widget_get_style_context (GTK_WIDGET (combo_box)); - gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); } static void @@ -1128,6 +1049,7 @@ gtk_combo_box_set_property (GObject *object, GParamSpec *pspec) { GtkComboBox *combo_box = GTK_COMBO_BOX (object); + GtkCellArea *area; switch (prop_id) { @@ -1193,7 +1115,7 @@ gtk_combo_box_set_property (GObject *object, case PROP_POPUP_FIXED_WIDTH: gtk_combo_box_set_popup_fixed_width (combo_box, - g_value_get_boolean (value)); + g_value_get_boolean (value)); break; case PROP_EDITING_CANCELED: @@ -1216,6 +1138,14 @@ gtk_combo_box_set_property (GObject *object, gtk_combo_box_set_active_id (combo_box, g_value_get_string (value)); break; + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + area = g_value_get_object (value); + + if (area) + combo_box->priv->area = g_object_ref_sink (area); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1286,12 +1216,12 @@ gtk_combo_box_get_property (GObject *object, break; case PROP_HAS_ENTRY: - g_value_set_boolean (value, priv->has_entry); - break; + g_value_set_boolean (value, priv->has_entry); + break; case PROP_ENTRY_TEXT_COLUMN: - g_value_set_int (value, priv->text_column); - break; + g_value_set_int (value, priv->text_column); + break; case PROP_ID_COLUMN: g_value_set_int (value, priv->id_column); @@ -1301,6 +1231,10 @@ gtk_combo_box_get_property (GObject *object, g_value_set_string (value, gtk_combo_box_get_active_id (combo_box)); break; + case PROP_CELL_AREA: + g_value_set_object (value, priv->area); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1309,7 +1243,7 @@ gtk_combo_box_get_property (GObject *object, static void gtk_combo_box_state_changed (GtkWidget *widget, - GtkStateType previous) + GtkStateType previous) { GtkComboBox *combo_box = GTK_COMBO_BOX (widget); GtkComboBoxPrivate *priv = combo_box->priv; @@ -1369,33 +1303,33 @@ gtk_combo_box_check_appearance (GtkComboBox *combo_box) appears_as_list = FALSE; else gtk_widget_style_get (GTK_WIDGET (combo_box), - "appears-as-list", &appears_as_list, - NULL); - + "appears-as-list", &appears_as_list, + NULL); + if (appears_as_list) { /* Destroy all the menu mode widgets, if they exist. */ if (GTK_IS_MENU (priv->popup_widget)) - gtk_combo_box_menu_destroy (combo_box); + gtk_combo_box_menu_destroy (combo_box); /* Create the list mode widgets, if they don't already exist. */ if (!GTK_IS_TREE_VIEW (priv->tree_view)) - gtk_combo_box_list_setup (combo_box); + gtk_combo_box_list_setup (combo_box); } else { /* Destroy all the list mode widgets, if they exist. */ if (GTK_IS_TREE_VIEW (priv->tree_view)) - gtk_combo_box_list_destroy (combo_box); + gtk_combo_box_list_destroy (combo_box); /* Create the menu mode widgets, if they don't already exist. */ if (!GTK_IS_MENU (priv->popup_widget)) - gtk_combo_box_menu_setup (combo_box, TRUE); + gtk_combo_box_menu_setup (combo_box, TRUE); } gtk_widget_style_get (GTK_WIDGET (combo_box), - "shadow-type", &priv->shadow_type, - NULL); + "shadow-type", &priv->shadow_type, + NULL); } static void @@ -1455,7 +1389,7 @@ gtk_combo_box_add (GtkContainer *container, if (priv->has_entry && !GTK_IS_ENTRY (widget)) { g_warning ("Attempting to add a widget with type %s to a GtkComboBox that needs an entry " - "(need an instance of GtkEntry or of a subclass)", + "(need an instance of GtkEntry or of a subclass)", G_OBJECT_TYPE_NAME (widget)); return; } @@ -1481,7 +1415,7 @@ gtk_combo_box_add (GtkContainer *container, { gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (priv->separator)), priv->separator); - priv->separator = NULL; + priv->separator = NULL; gtk_widget_queue_resize (GTK_WIDGET (container)); } @@ -1495,9 +1429,13 @@ gtk_combo_box_add (GtkContainer *container, if (priv->has_entry) { + /* this flag is a hack to tell the entry to fill its allocation. + */ + _gtk_entry_set_is_cell_renderer (GTK_ENTRY (widget), TRUE); + g_signal_connect (widget, "changed", - G_CALLBACK (gtk_combo_box_entry_contents_changed), - combo_box); + G_CALLBACK (gtk_combo_box_entry_contents_changed), + combo_box); gtk_entry_set_has_frame (GTK_ENTRY (widget), priv->has_frame); } @@ -1505,7 +1443,7 @@ gtk_combo_box_add (GtkContainer *container, static void gtk_combo_box_remove (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GtkComboBox *combo_box = GTK_COMBO_BOX (container); GtkComboBoxPrivate *priv = combo_box->priv; @@ -1518,11 +1456,12 @@ gtk_combo_box_remove (GtkContainer *container, child_widget = gtk_bin_get_child (GTK_BIN (container)); if (widget && widget == child_widget) - { - g_signal_handlers_disconnect_by_func (widget, - gtk_combo_box_entry_contents_changed, - container); - } + { + g_signal_handlers_disconnect_by_func (widget, + gtk_combo_box_entry_contents_changed, + container); + _gtk_entry_set_is_cell_renderer (GTK_ENTRY (widget), FALSE); + } } if (widget == priv->cell_view) @@ -1555,16 +1494,15 @@ gtk_combo_box_remove (GtkContainer *container, priv->cell_view = gtk_cell_view_new (); gtk_widget_set_parent (priv->cell_view, GTK_WIDGET (container)); _gtk_bin_set_child (GTK_BIN (container), priv->cell_view); - + gtk_widget_show (priv->cell_view); gtk_cell_view_set_model (GTK_CELL_VIEW (priv->cell_view), - priv->model); - gtk_combo_box_sync_cells (combo_box, GTK_CELL_LAYOUT (priv->cell_view)); + priv->model); } if (appears_as_list) - gtk_combo_box_list_setup (combo_box); + gtk_combo_box_list_setup (combo_box); else gtk_combo_box_menu_setup (combo_box, TRUE); @@ -1578,23 +1516,6 @@ gtk_combo_box_remove (GtkContainer *container, gtk_combo_box_set_active_internal (combo_box, NULL); } -static ComboCellInfo * -gtk_combo_box_get_cell_info (GtkComboBox *combo_box, - GtkCellRenderer *cell) -{ - GSList *i; - - for (i = combo_box->priv->cells; i; i = i->next) - { - ComboCellInfo *info = (ComboCellInfo *)i->data; - - if (info && info->cell == cell) - return info; - } - - return NULL; -} - static void gtk_combo_box_menu_show (GtkWidget *menu, gpointer user_data) @@ -1624,19 +1545,19 @@ gtk_combo_box_menu_hide (GtkWidget *menu, static void gtk_combo_box_detacher (GtkWidget *widget, - GtkMenu *menu) + GtkMenu *menu) { GtkComboBox *combo_box = GTK_COMBO_BOX (widget); GtkComboBoxPrivate *priv = combo_box->priv; g_return_if_fail (priv->popup_widget == (GtkWidget *) menu); - g_signal_handlers_disconnect_by_func (menu->toplevel, - gtk_combo_box_menu_show, - combo_box); - g_signal_handlers_disconnect_by_func (menu->toplevel, - gtk_combo_box_menu_hide, - combo_box); + g_signal_handlers_disconnect_by_func (menu->priv->toplevel, + gtk_combo_box_menu_show, + combo_box); + g_signal_handlers_disconnect_by_func (menu->priv->toplevel, + gtk_combo_box_menu_hide, + combo_box); priv->popup_widget = NULL; } @@ -1670,64 +1591,64 @@ gtk_combo_box_set_popup_widget (GtkComboBox *combo_box, priv->popup_widget = popup; - /* + /* * Note that we connect to show/hide on the toplevel, not the * menu itself, since the menu is not shown/hidden when it is * popped up while torn-off. */ - g_signal_connect (GTK_MENU (popup)->toplevel, "show", + g_signal_connect (GTK_MENU (popup)->priv->toplevel, "show", G_CALLBACK (gtk_combo_box_menu_show), combo_box); - g_signal_connect (GTK_MENU (popup)->toplevel, "hide", + g_signal_connect (GTK_MENU (popup)->priv->toplevel, "hide", G_CALLBACK (gtk_combo_box_menu_hide), combo_box); gtk_menu_attach_to_widget (GTK_MENU (popup), - GTK_WIDGET (combo_box), - gtk_combo_box_detacher); + GTK_WIDGET (combo_box), + gtk_combo_box_detacher); } else { if (!priv->popup_window) { - GtkWidget *toplevel; - + GtkWidget *toplevel; + priv->popup_window = gtk_window_new (GTK_WINDOW_POPUP); gtk_widget_set_name (priv->popup_window, "gtk-combobox-popup-window"); - gtk_window_set_type_hint (GTK_WINDOW (priv->popup_window), - GDK_WINDOW_TYPE_HINT_COMBO); + gtk_window_set_type_hint (GTK_WINDOW (priv->popup_window), + GDK_WINDOW_TYPE_HINT_COMBO); - g_signal_connect (GTK_WINDOW (priv->popup_window),"show", - G_CALLBACK (gtk_combo_box_child_show), - combo_box); - g_signal_connect (GTK_WINDOW (priv->popup_window),"hide", - G_CALLBACK (gtk_combo_box_child_hide), - combo_box); - - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (combo_box)); - if (GTK_IS_WINDOW (toplevel)) - { - gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), - GTK_WINDOW (priv->popup_window)); - gtk_window_set_transient_for (GTK_WINDOW (priv->popup_window), - GTK_WINDOW (toplevel)); - } + g_signal_connect (GTK_WINDOW (priv->popup_window),"show", + G_CALLBACK (gtk_combo_box_child_show), + combo_box); + g_signal_connect (GTK_WINDOW (priv->popup_window),"hide", + G_CALLBACK (gtk_combo_box_child_hide), + combo_box); - gtk_window_set_resizable (GTK_WINDOW (priv->popup_window), FALSE); + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (combo_box)); + if (GTK_IS_WINDOW (toplevel)) + { + gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), + GTK_WINDOW (priv->popup_window)); + gtk_window_set_transient_for (GTK_WINDOW (priv->popup_window), + GTK_WINDOW (toplevel)); + } + + gtk_window_set_resizable (GTK_WINDOW (priv->popup_window), FALSE); gtk_window_set_screen (GTK_WINDOW (priv->popup_window), gtk_widget_get_screen (GTK_WIDGET (combo_box))); - priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL); - - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), - GTK_POLICY_NEVER, - GTK_POLICY_NEVER); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->scrolled_window), - GTK_SHADOW_IN); + priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL); + + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), + GTK_POLICY_NEVER, + GTK_POLICY_NEVER); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->scrolled_window), + GTK_SHADOW_IN); gtk_widget_show (priv->scrolled_window); - - gtk_container_add (GTK_CONTAINER (priv->popup_window), - priv->scrolled_window); + + gtk_container_add (GTK_CONTAINER (priv->popup_window), + priv->scrolled_window); } gtk_container_add (GTK_CONTAINER (priv->scrolled_window), @@ -1759,10 +1680,10 @@ get_widget_border (GtkWidget *widget, static void gtk_combo_box_menu_position_below (GtkMenu *menu, - gint *x, - gint *y, - gint *push_in, - gpointer user_data) + gint *x, + gint *y, + gint *push_in, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); GtkAllocation child_allocation; @@ -1804,15 +1725,15 @@ gtk_combo_box_menu_position_below (GtkMenu *menu, *y = sy; screen = gtk_widget_get_screen (GTK_WIDGET (combo_box)); - monitor_num = gdk_screen_get_monitor_at_window (screen, + monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET (combo_box))); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); - + if (*x < monitor.x) *x = monitor.x; else if (*x + req.width > monitor.x + monitor.width) *x = monitor.x + monitor.width - req.width; - + if (monitor.y + monitor.height - *y - child_allocation.height >= req.height) *y += child_allocation.height; else if (*y - monitor.y >= req.height) @@ -1827,10 +1748,10 @@ gtk_combo_box_menu_position_below (GtkMenu *menu, static void gtk_combo_box_menu_position_over (GtkMenu *menu, - gint *x, - gint *y, - gboolean *push_in, - gpointer user_data) + gint *x, + gint *y, + gboolean *push_in, + gpointer user_data) { GtkComboBox *combo_box; GtkWidget *active; @@ -1865,20 +1786,20 @@ gtk_combo_box_menu_position_over (GtkMenu *menu, menu_ypos -= child_allocation.height / 2; } - children = GTK_MENU_SHELL (combo_box->priv->popup_widget)->children; + children = GTK_MENU_SHELL (combo_box->priv->popup_widget)->priv->children; while (children) { child = children->data; if (active == child) - break; + break; if (gtk_widget_get_visible (child)) - { - gtk_widget_get_allocation (child, &child_allocation); + { + gtk_widget_get_allocation (child, &child_allocation); - menu_ypos -= child_allocation.height; - } + menu_ypos -= child_allocation.height; + } children = children->next; } @@ -1888,7 +1809,7 @@ gtk_combo_box_menu_position_over (GtkMenu *menu, gdk_window_get_root_coords (gtk_widget_get_window (widget), menu_xpos, menu_ypos, - &menu_xpos, &menu_ypos); + &menu_xpos, &menu_ypos); /* Clamp the position on screen */ screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget)); @@ -1906,39 +1827,39 @@ gtk_combo_box_menu_position_over (GtkMenu *menu, static void gtk_combo_box_menu_position (GtkMenu *menu, - gint *x, - gint *y, - gint *push_in, - gpointer user_data) + gint *x, + gint *y, + gint *push_in, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); GtkComboBoxPrivate *priv = combo_box->priv; GtkWidget *menu_item; - if (priv->wrap_width > 0 || priv->cell_view == NULL) + if (priv->wrap_width > 0 || priv->cell_view == NULL) gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data); else { /* FIXME handle nested menus better */ menu_item = gtk_menu_get_active (GTK_MENU (priv->popup_widget)); if (menu_item) - gtk_menu_shell_select_item (GTK_MENU_SHELL (priv->popup_widget), - menu_item); + gtk_menu_shell_select_item (GTK_MENU_SHELL (priv->popup_widget), + menu_item); gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data); } - if (!gtk_widget_get_visible (GTK_MENU (priv->popup_widget)->toplevel)) - gtk_window_set_type_hint (GTK_WINDOW (GTK_MENU (priv->popup_widget)->toplevel), + if (!gtk_widget_get_visible (GTK_MENU (priv->popup_widget)->priv->toplevel)) + gtk_window_set_type_hint (GTK_WINDOW (GTK_MENU (priv->popup_widget)->priv->toplevel), GDK_WINDOW_TYPE_HINT_COMBO); } static void -gtk_combo_box_list_position (GtkComboBox *combo_box, - gint *x, - gint *y, - gint *width, - gint *height) +gtk_combo_box_list_position (GtkComboBox *combo_box, + gint *x, + gint *y, + gint *width, + gint *height) { GtkComboBoxPrivate *priv = combo_box->priv; GtkAllocation allocation; @@ -1972,48 +1893,33 @@ gtk_combo_box_list_position (GtkComboBox *combo_box, hpolicy = vpolicy = GTK_POLICY_NEVER; gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), - hpolicy, vpolicy); - - /* XXX This set_size_request call is part of the hack outlined below and can - * go away once height-for-width is implemented on treeviews. */ - gtk_widget_set_size_request (priv->tree_view, -1, -1); + hpolicy, vpolicy); if (combo_box->priv->popup_fixed_width) { gtk_widget_get_preferred_size (priv->scrolled_window, &popup_req, NULL); if (popup_req.width > *width) - { - hpolicy = GTK_POLICY_ALWAYS; - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), - hpolicy, vpolicy); - } + { + hpolicy = GTK_POLICY_ALWAYS; + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), + hpolicy, vpolicy); + } } else { - gtk_combo_box_remeasure (combo_box); + /* XXX This code depends on treeviews properly reporting their natural width + * list-mode menus won't fill up to their natural width until then */ + gtk_widget_get_preferred_size (priv->scrolled_window, NULL, &popup_req); - if (priv->natural_width > *width) - { - hpolicy = GTK_POLICY_NEVER; - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), - hpolicy, vpolicy); + if (popup_req.width > *width) + { + hpolicy = GTK_POLICY_NEVER; + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), + hpolicy, vpolicy); - - /* XXX Currently we set the size-request on the internal treeview to be - * the natural width of the cells, this hack can go away once our - * treeview does height-for-width properly (i.e. just adjust *width - * here to be the natural width request of the scrolled-window). - * - * I can't tell why the magic number 5 is needed here (i.e. without it - * treeviews are left ellipsizing) , however it this all should be - * removed with height-for-width treeviews. - */ - gtk_widget_set_size_request (priv->tree_view, priv->natural_width + 5, -1); - gtk_widget_get_preferred_size (priv->scrolled_window, NULL, &popup_req); - - *width = popup_req.width; - } + *width = popup_req.width; + } } *height = popup_req.height; @@ -2029,7 +1935,7 @@ gtk_combo_box_list_position (GtkComboBox *combo_box, *x = monitor.x; else if (*x + *width > monitor.x + monitor.width) *x = monitor.x + monitor.width - *width; - + if (*y + allocation.height + *height <= monitor.y + monitor.height) *y += allocation.height; else if (*y - *height >= monitor.y) @@ -2039,7 +1945,7 @@ gtk_combo_box_list_position (GtkComboBox *combo_box, *y += allocation.height; *height = monitor.y + monitor.height - *y; } - else + else { *height = *y - monitor.y; *y = monitor.y; @@ -2048,27 +1954,27 @@ gtk_combo_box_list_position (GtkComboBox *combo_box, if (popup_req.height > *height) { vpolicy = GTK_POLICY_ALWAYS; - + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), - hpolicy, vpolicy); + hpolicy, vpolicy); } -} +} static gboolean cell_view_is_sensitive (GtkCellView *cell_view) { GList *cells, *list; gboolean sensitive; - + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (cell_view)); sensitive = FALSE; for (list = cells; list; list = list->next) { g_object_get (list->data, "sensitive", &sensitive, NULL); - + if (sensitive) - break; + break; } g_list_free (cells); @@ -2077,7 +1983,7 @@ cell_view_is_sensitive (GtkCellView *cell_view) static gboolean tree_column_row_is_sensitive (GtkComboBox *combo_box, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkComboBoxPrivate *priv = combo_box->priv; GList *cells, *list; @@ -2090,12 +1996,12 @@ tree_column_row_is_sensitive (GtkComboBox *combo_box, { if (priv->row_separator_func (priv->model, iter, priv->row_separator_data)) - return FALSE; + return FALSE; } gtk_tree_view_column_cell_set_cell_data (priv->column, - priv->model, - iter, FALSE, FALSE); + priv->model, + iter, FALSE, FALSE); cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (priv->column)); @@ -2103,9 +2009,9 @@ tree_column_row_is_sensitive (GtkComboBox *combo_box, for (list = cells; list; list = list->next) { g_object_get (list->data, "sensitive", &sensitive, NULL); - + if (sensitive) - break; + break; } g_list_free (cells); @@ -2114,7 +2020,7 @@ tree_column_row_is_sensitive (GtkComboBox *combo_box, static void update_menu_sensitivity (GtkComboBox *combo_box, - GtkWidget *menu) + GtkWidget *menu) { GtkComboBoxPrivate *priv = combo_box->priv; GList *children, *child; @@ -2133,42 +2039,42 @@ update_menu_sensitivity (GtkComboBox *combo_box, cell_view = gtk_bin_get_child (GTK_BIN (item)); if (!GTK_IS_CELL_VIEW (cell_view)) - continue; - + continue; + submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (item)); if (submenu != NULL) - { - gtk_widget_set_sensitive (item, TRUE); - update_menu_sensitivity (combo_box, submenu); - } + { + gtk_widget_set_sensitive (item, TRUE); + update_menu_sensitivity (combo_box, submenu); + } else - { - sensitive = cell_view_is_sensitive (GTK_CELL_VIEW (cell_view)); + { + sensitive = cell_view_is_sensitive (GTK_CELL_VIEW (cell_view)); - if (menu != priv->popup_widget && child == children) - { - separator = GTK_WIDGET (child->next->data); - g_object_set (item, "visible", sensitive, NULL); - g_object_set (separator, "visible", sensitive, NULL); - } - else - gtk_widget_set_sensitive (item, sensitive); - } + if (menu != priv->popup_widget && child == children) + { + separator = GTK_WIDGET (child->next->data); + g_object_set (item, "visible", sensitive, NULL); + g_object_set (separator, "visible", sensitive, NULL); + } + else + gtk_widget_set_sensitive (item, sensitive); + } } g_list_free (children); } -static void +static void gtk_combo_box_menu_popup (GtkComboBox *combo_box, - guint button, - guint32 activate_time) + guint button, + guint32 activate_time) { GtkComboBoxPrivate *priv = combo_box->priv; GtkTreePath *path; gint active_item; gint width, min_width, nat_width; - + update_menu_sensitivity (combo_box, priv->popup_widget); active_item = -1; @@ -2177,14 +2083,14 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box, path = gtk_tree_row_reference_get_path (priv->active_row); active_item = gtk_tree_path_get_indices (path)[0]; gtk_tree_path_free (path); - + if (priv->add_tearoffs) - active_item++; + active_item++; } /* FIXME handle nested menus better */ gtk_menu_set_active (GTK_MENU (priv->popup_widget), active_item); - + if (priv->wrap_width == 0) { GtkAllocation allocation; @@ -2195,24 +2101,24 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box, gtk_widget_get_preferred_width (priv->popup_widget, &min_width, &nat_width); if (combo_box->priv->popup_fixed_width) - width = MAX (width, min_width); + width = MAX (width, min_width); else - width = MAX (width, nat_width); + width = MAX (width, nat_width); gtk_widget_set_size_request (priv->popup_widget, width, -1); } - + gtk_menu_popup (GTK_MENU (priv->popup_widget), - NULL, NULL, - gtk_combo_box_menu_position, combo_box, - button, activate_time); + NULL, NULL, + gtk_combo_box_menu_position, combo_box, + button, activate_time); } static gboolean popup_grab_on_window (GdkWindow *window, GdkDevice *keyboard, GdkDevice *pointer, - guint32 activate_time) + guint32 activate_time) { if (keyboard && gdk_device_grab (keyboard, window, @@ -2240,8 +2146,8 @@ popup_grab_on_window (GdkWindow *window, /** * gtk_combo_box_popup: * @combo_box: a #GtkComboBox - * - * Pops up the menu or dropdown list of @combo_box. + * + * Pops up the menu or dropdown list of @combo_box. * * This function is mostly intended for use by accessibility technologies; * applications should have little use for it. @@ -2305,7 +2211,7 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box, if (GTK_IS_MENU (priv->popup_widget)) { - gtk_combo_box_menu_popup (combo_box, + gtk_combo_box_menu_popup (combo_box, priv->activate_button, priv->activate_time); return; @@ -2313,13 +2219,13 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box, toplevel = gtk_widget_get_toplevel (GTK_WIDGET (combo_box)); if (GTK_IS_WINDOW (toplevel)) - gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), - GTK_WINDOW (priv->popup_window)); + gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), + GTK_WINDOW (priv->popup_window)); gtk_widget_show_all (priv->scrolled_window); gtk_combo_box_list_position (combo_box, &x, &y, &width, &height); - - gtk_widget_set_size_request (priv->popup_window, width, height); + + gtk_widget_set_size_request (priv->popup_window, width, height); gtk_window_move (GTK_WINDOW (priv->popup_window), x, y); if (gtk_tree_row_reference_valid (priv->active_row)) @@ -2327,20 +2233,20 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box, path = gtk_tree_row_reference_get_path (priv->active_row); ppath = gtk_tree_path_copy (path); if (gtk_tree_path_up (ppath)) - gtk_tree_view_expand_to_path (GTK_TREE_VIEW (priv->tree_view), - ppath); + gtk_tree_view_expand_to_path (GTK_TREE_VIEW (priv->tree_view), + ppath); gtk_tree_path_free (ppath); } - gtk_tree_view_set_hover_expand (GTK_TREE_VIEW (priv->tree_view), - TRUE); - + gtk_tree_view_set_hover_expand (GTK_TREE_VIEW (priv->tree_view), + TRUE); + /* popup */ gtk_widget_show (priv->popup_window); if (path) { gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->tree_view), - path, NULL, FALSE); + path, NULL, FALSE); gtk_tree_path_free (path); } @@ -2352,7 +2258,7 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box, gtk_widget_grab_focus (priv->tree_view); if (!popup_grab_on_window (gtk_widget_get_window (priv->popup_window), - keyboard, pointer, time)) + keyboard, pointer, time)) { gtk_widget_hide (priv->popup_window); return; @@ -2403,7 +2309,7 @@ gtk_combo_box_real_popdown (GtkComboBox *combo_box) /** * gtk_combo_box_popdown: * @combo_box: a #GtkComboBox - * + * * Hides the menu or dropdown list of @combo_box. * * This function is mostly intended for use by accessibility technologies; @@ -2436,62 +2342,24 @@ gtk_combo_box_popdown (GtkComboBox *combo_box) priv->grab_keyboard = NULL; } -static void -gtk_combo_box_update_requested_width (GtkComboBox *combo_box, - GtkTreePath *path) -{ - GtkComboBoxPrivate *priv = combo_box->priv; - gint padding, min_width, nat_width; - - if (priv->cell_view) - gtk_widget_style_get (priv->cell_view, - "focus-line-width", &padding, - NULL); - else - padding = 0; - - /* add some pixels for good measure */ - padding += BONUS_PADDING; - - if (priv->cell_view) - gtk_cell_view_get_desired_width_of_row (GTK_CELL_VIEW (priv->cell_view), - path, &min_width, &nat_width); - else - min_width = nat_width = 0; - - min_width += padding; - nat_width += padding; - - if (min_width > priv->minimum_width || nat_width > priv->natural_width) - { - priv->minimum_width = MAX (priv->minimum_width, min_width); - priv->natural_width = MAX (priv->natural_width, nat_width); - - if (priv->cell_view) - { - gtk_widget_set_size_request (priv->cell_view, min_width, -1); - gtk_widget_queue_resize (priv->cell_view); - } - } -} - -#define GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON \ - gtk_widget_get_preferred_size (combo_box->priv->button, \ - &req, NULL); \ - \ - if (is_rtl) \ - child.x = allocation->x + border.right; \ - else \ - child.x = allocation->x + allocation->width - req.width - border.left; \ - \ - child.y = allocation->y + border.top; \ - child.width = req.width; \ - child.height = allocation->height - (border.top + border.bottom); \ - child.width = MAX (1, child.width); \ - child.height = MAX (1, child.height); \ - \ +#define GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON \ + gtk_widget_get_preferred_size (combo_box->priv->button, \ + &req, NULL); \ + \ + if (is_rtl) \ + child.x = allocation->x + border.right; \ + else \ + child.x = allocation->x + allocation->width - req.width - border.left; \ + \ + child.y = allocation->y + border.top; \ + child.width = req.width; \ + child.height = allocation->height - (border.top + border.bottom); \ + child.width = MAX (1, child.width); \ + child.height = MAX (1, child.height); \ + \ gtk_widget_size_allocate (combo_box->priv->button, &child); + static void gtk_combo_box_size_allocate (GtkWidget *widget, GtkAllocation *allocation) @@ -2502,17 +2370,17 @@ gtk_combo_box_size_allocate (GtkWidget *widget, gint focus_width, focus_pad; GtkAllocation child; GtkRequisition req; - GtkBorder border; gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; + GtkBorder border; gtk_widget_set_allocation (widget, allocation); child_widget = gtk_bin_get_child (GTK_BIN (widget)); get_widget_border (widget, &border); gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); if (!priv->tree_view) { @@ -2536,27 +2404,26 @@ gtk_combo_box_size_allocate (GtkWidget *widget, child.x = allocation->x; child.y = allocation->y; - width = allocation->width; - child.height = allocation->height; + width = allocation->width; + child.height = allocation->height; - if (!priv->is_cell_renderer) - { - child.x += border_width + button_border.left + focus_width + focus_pad; - child.y += border_width + button_border.top + focus_width + focus_pad; - width -= (2 * (border_width + focus_width + focus_pad)) + + if (!priv->is_cell_renderer) + { + child.x += border_width + button_border.left + focus_width + focus_pad; + child.y += border_width + button_border.top + focus_width + focus_pad; + width -= (2 * (border_width + focus_width + focus_pad)) + button_border.left + button_border.right; - child.height -= (2 * (border_width + focus_width + focus_pad)) + + child.height -= (2 * (border_width + focus_width + focus_pad)) + button_border.top + button_border.bottom; - } - + } /* handle the children */ gtk_widget_get_preferred_size (priv->arrow, &req, NULL); child.width = req.width; if (!is_rtl) child.x += width - req.width; - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); + child.width = MAX (1, child.width); + child.height = MAX (1, child.height); gtk_widget_size_allocate (priv->arrow, &child); if (is_rtl) child.x += req.width; @@ -2564,22 +2431,22 @@ gtk_combo_box_size_allocate (GtkWidget *widget, child.width = req.width; if (!is_rtl) child.x -= req.width; - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); + child.width = MAX (1, child.width); + child.height = MAX (1, child.height); gtk_widget_size_allocate (priv->separator, &child); if (is_rtl) { child.x += req.width; - child.width = allocation->x + allocation->width - - (border_width + button_border.right + focus_width + focus_pad) - - child.x; + child.width = allocation->x + allocation->width + - (border_width + button_border.right + focus_width + focus_pad) + - child.x; } - else + else { child.width = child.x; - child.x = allocation->x - + border_width + button_border.left + focus_width + focus_pad; + child.x = allocation->x + + border_width + button_border.left + focus_width + focus_pad; child.width -= child.x; } @@ -2595,21 +2462,21 @@ gtk_combo_box_size_allocate (GtkWidget *widget, width = combo_box_allocation.width; gtk_widget_set_size_request (priv->popup_widget, -1, -1); - if (combo_box->priv->popup_fixed_width) - gtk_widget_get_preferred_width (priv->popup_widget, &menu_width, NULL); - else - gtk_widget_get_preferred_width (priv->popup_widget, NULL, &menu_width); + if (combo_box->priv->popup_fixed_width) + gtk_widget_get_preferred_width (priv->popup_widget, &menu_width, NULL); + else + gtk_widget_get_preferred_width (priv->popup_widget, NULL, &menu_width); gtk_widget_set_size_request (priv->popup_widget, - MAX (width, menu_width), -1); + MAX (width, menu_width), -1); } /* reposition the menu after giving it a new width */ gtk_menu_reposition (GTK_MENU (priv->popup_widget)); } - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); + child.width = MAX (1, child.width); + child.height = MAX (1, child.height); gtk_widget_size_allocate (child_widget, &child); } else @@ -2622,8 +2489,8 @@ gtk_combo_box_size_allocate (GtkWidget *widget, child.x = allocation->x + border.left; child.y = allocation->y + border.top; child.width = allocation->width - req.width - (border.left + border.right); - child.width = MAX (1, child.width); - child.height = MAX (1, child.height); + child.width = MAX (1, child.width); + child.height = MAX (1, child.height); gtk_widget_size_allocate (child_widget, &child); } } @@ -2683,10 +2550,8 @@ gtk_combo_box_size_allocate (GtkWidget *widget, gtk_widget_set_size_request (priv->popup_window, width, height); } - child.width = MAX (1, child.width); child.height = MAX (1, child.height); - gtk_widget_size_allocate (child_widget, &child); } } @@ -2701,21 +2566,13 @@ gtk_combo_box_unset_model (GtkComboBox *combo_box) if (priv->model) { g_signal_handler_disconnect (priv->model, - priv->inserted_id); + priv->inserted_id); g_signal_handler_disconnect (priv->model, - priv->deleted_id); + priv->deleted_id); g_signal_handler_disconnect (priv->model, - priv->reordered_id); + priv->reordered_id); g_signal_handler_disconnect (priv->model, - priv->changed_id); - } - - /* menu mode */ - if (!priv->tree_view) - { - if (priv->popup_widget) - gtk_container_foreach (GTK_CONTAINER (priv->popup_widget), - (GtkCallback)gtk_widget_destroy, NULL); + priv->changed_id); } if (priv->model) @@ -2747,9 +2604,9 @@ gtk_combo_box_forall (GtkContainer *container, if (include_internals) { if (priv->button) - (* callback) (priv->button, callback_data); + (* callback) (priv->button, callback_data); if (priv->cell_view_frame) - (* callback) (priv->cell_view_frame, callback_data); + (* callback) (priv->cell_view_frame, callback_data); } child = gtk_bin_get_child (GTK_BIN (container)); @@ -2757,7 +2614,7 @@ gtk_combo_box_forall (GtkContainer *container, (* callback) (child, callback_data); } -static void +static void gtk_combo_box_child_show (GtkWidget *widget, GtkComboBox *combo_box) { @@ -2767,7 +2624,7 @@ gtk_combo_box_child_show (GtkWidget *widget, g_object_notify (G_OBJECT (combo_box), "popup-shown"); } -static void +static void gtk_combo_box_child_hide (GtkWidget *widget, GtkComboBox *combo_box) { @@ -2802,12 +2659,12 @@ gtk_combo_box_draw (GtkWidget *widget, } gtk_container_propagate_draw (GTK_CONTAINER (widget), - priv->button, cr); + priv->button, cr); if (priv->tree_view && priv->cell_view_frame) { gtk_container_propagate_draw (GTK_CONTAINER (widget), - priv->cell_view_frame, cr); + priv->cell_view_frame, cr); } gtk_container_propagate_draw (GTK_CONTAINER (widget), @@ -2828,51 +2685,51 @@ typedef struct { static gboolean path_visible (GtkTreeView *view, - GtkTreePath *path) + GtkTreePath *path) { GtkRBTree *tree; GtkRBNode *node; - - /* Note that we rely on the fact that collapsed rows don't have nodes + + /* Note that we rely on the fact that collapsed rows don't have nodes */ return _gtk_tree_view_find_node (view, path, &tree, &node); } static gboolean tree_next_func (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) { SearchData *search_data = (SearchData *)data; - if (search_data->found) + if (search_data->found) { if (!tree_column_row_is_sensitive (search_data->combo, iter)) - return FALSE; - + return FALSE; + if (search_data->visible && - !path_visible (GTK_TREE_VIEW (search_data->combo->priv->tree_view), path)) - return FALSE; + !path_visible (GTK_TREE_VIEW (search_data->combo->priv->tree_view), path)) + return FALSE; search_data->set = TRUE; search_data->iter = *iter; return TRUE; } - + if (gtk_tree_path_compare (path, search_data->path) == 0) search_data->found = TRUE; - + return FALSE; } static gboolean tree_next (GtkComboBox *combo, - GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreeIter *next, - gboolean visible) + GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreeIter *next, + gboolean visible) { SearchData search_data; @@ -2883,7 +2740,7 @@ tree_next (GtkComboBox *combo, search_data.set = FALSE; gtk_tree_model_foreach (model, tree_next_func, &search_data); - + *next = search_data.iter; gtk_tree_path_free (search_data.path); @@ -2893,9 +2750,9 @@ tree_next (GtkComboBox *combo, static gboolean tree_prev_func (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) { SearchData *search_data = (SearchData *)data; @@ -2904,26 +2761,26 @@ tree_prev_func (GtkTreeModel *model, search_data->found = TRUE; return TRUE; } - + if (!tree_column_row_is_sensitive (search_data->combo, iter)) return FALSE; - + if (search_data->visible && !path_visible (GTK_TREE_VIEW (search_data->combo->priv->tree_view), path)) - return FALSE; - + return FALSE; + search_data->set = TRUE; search_data->iter = *iter; - - return FALSE; + + return FALSE; } static gboolean tree_prev (GtkComboBox *combo, - GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreeIter *prev, - gboolean visible) + GtkTreeModel *model, + GtkTreeIter *iter, + GtkTreeIter *prev, + gboolean visible) { SearchData search_data; @@ -2934,7 +2791,7 @@ tree_prev (GtkComboBox *combo, search_data.set = FALSE; gtk_tree_model_foreach (model, tree_prev_func, &search_data); - + *prev = search_data.iter; gtk_tree_path_free (search_data.path); @@ -2944,32 +2801,32 @@ tree_prev (GtkComboBox *combo, static gboolean tree_last_func (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) { SearchData *search_data = (SearchData *)data; if (!tree_column_row_is_sensitive (search_data->combo, iter)) return FALSE; - - /* Note that we rely on the fact that collapsed rows don't have nodes + + /* Note that we rely on the fact that collapsed rows don't have nodes */ if (search_data->visible && !path_visible (GTK_TREE_VIEW (search_data->combo->priv->tree_view), path)) - return FALSE; - + return FALSE; + search_data->set = TRUE; search_data->iter = *iter; - - return FALSE; + + return FALSE; } static gboolean tree_last (GtkComboBox *combo, - GtkTreeModel *model, - GtkTreeIter *last, - gboolean visible) + GtkTreeModel *model, + GtkTreeIter *last, + gboolean visible) { SearchData search_data; @@ -2978,51 +2835,51 @@ tree_last (GtkComboBox *combo, search_data.set = FALSE; gtk_tree_model_foreach (model, tree_last_func, &search_data); - + *last = search_data.iter; - return search_data.set; + return search_data.set; } static gboolean tree_first_func (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data) { SearchData *search_data = (SearchData *)data; if (!tree_column_row_is_sensitive (search_data->combo, iter)) return FALSE; - + if (search_data->visible && !path_visible (GTK_TREE_VIEW (search_data->combo->priv->tree_view), path)) return FALSE; - + search_data->set = TRUE; search_data->iter = *iter; - + return TRUE; } static gboolean tree_first (GtkComboBox *combo, - GtkTreeModel *model, - GtkTreeIter *first, - gboolean visible) + GtkTreeModel *model, + GtkTreeIter *first, + gboolean visible) { SearchData search_data; - + search_data.combo = combo; search_data.visible = visible; search_data.set = FALSE; gtk_tree_model_foreach (model, tree_first_func, &search_data); - + *first = search_data.iter; - return search_data.set; + return search_data.set; } static gboolean @@ -3036,14 +2893,14 @@ gtk_combo_box_scroll_event (GtkWidget *widget, if (!gtk_combo_box_get_active_iter (combo_box, &iter)) return TRUE; - + if (event->direction == GDK_SCROLL_UP) - found = tree_prev (combo_box, combo_box->priv->model, - &iter, &new_iter, FALSE); + found = tree_prev (combo_box, combo_box->priv->model, + &iter, &new_iter, FALSE); else - found = tree_next (combo_box, combo_box->priv->model, - &iter, &new_iter, FALSE); - + found = tree_next (combo_box, combo_box->priv->model, + &iter, &new_iter, FALSE); + if (found) gtk_combo_box_set_active_iter (combo_box, &new_iter); @@ -3053,38 +2910,28 @@ gtk_combo_box_scroll_event (GtkWidget *widget, /* * menu style */ - -static void -gtk_combo_box_sync_cells (GtkComboBox *combo_box, - GtkCellLayout *cell_layout) +static gboolean +gtk_combo_box_row_separator_func (GtkTreeModel *model, + GtkTreeIter *iter, + GtkComboBox *combo) { - GtkComboBoxPrivate *priv = combo_box->priv; - GSList *k; + GtkComboBoxPrivate *priv = combo->priv; - for (k = priv->cells; k; k = k->next) - { - GSList *j; - ComboCellInfo *info = (ComboCellInfo *)k->data; + if (priv->row_separator_func) + return priv->row_separator_func (model, iter, priv->row_separator_data); - if (info->pack == GTK_PACK_START) - gtk_cell_layout_pack_start (cell_layout, - info->cell, info->expand); - else if (info->pack == GTK_PACK_END) - gtk_cell_layout_pack_end (cell_layout, - info->cell, info->expand); + return FALSE; +} - gtk_cell_layout_set_cell_data_func (cell_layout, - info->cell, - combo_cell_data_func, info, NULL); - - for (j = info->attributes; j; j = j->next->next) - { - gtk_cell_layout_add_attribute (cell_layout, - info->cell, - j->data, - GPOINTER_TO_INT (j->next->data)); - } - } +static gboolean +gtk_combo_box_header_func (GtkTreeModel *model, + GtkTreeIter *iter, + GtkComboBox *combo) +{ + /* Every submenu has a selectable header, however we + * can expose a method to make that configurable by + * the user (like row_separator_func is done) */ + return TRUE; } static void @@ -3101,7 +2948,7 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box, { priv->button = gtk_toggle_button_new (); gtk_button_set_focus_on_click (GTK_BUTTON (priv->button), - priv->focus_on_click); + priv->focus_on_click); g_signal_connect (priv->button, "toggled", G_CALLBACK (gtk_combo_box_button_toggled), combo_box); @@ -3123,7 +2970,7 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box, { priv->button = gtk_toggle_button_new (); gtk_button_set_focus_on_click (GTK_BUTTON (priv->button), - priv->focus_on_click); + priv->focus_on_click); g_signal_connect (priv->button, "toggled", G_CALLBACK (gtk_combo_box_button_toggled), combo_box); @@ -3139,157 +2986,40 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box, G_CALLBACK (gtk_combo_box_menu_button_press), combo_box); g_signal_connect (priv->button, "state-flags-changed", - G_CALLBACK (gtk_combo_box_button_state_flags_changed), - combo_box); + G_CALLBACK (gtk_combo_box_button_state_flags_changed), + combo_box); /* create our funky menu */ - menu = gtk_menu_new (); + menu = _gtk_tree_menu_new_with_area (priv->area); gtk_widget_set_name (menu, "gtk-combobox-popup-menu"); - gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE); - + + _gtk_tree_menu_set_model (GTK_TREE_MENU (menu), priv->model); + + _gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (menu), priv->wrap_width); + _gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (menu), priv->row_column); + _gtk_tree_menu_set_column_span_column (GTK_TREE_MENU (menu), priv->col_column); + _gtk_tree_menu_set_tearoff (GTK_TREE_MENU (menu), + combo_box->priv->add_tearoffs); + + g_signal_connect (menu, "menu-activate", + G_CALLBACK (gtk_combo_box_menu_activate), combo_box); + + /* Chain our row_separator_func through */ + _gtk_tree_menu_set_row_separator_func (GTK_TREE_MENU (menu), + (GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func, + combo_box, NULL); + + _gtk_tree_menu_set_header_func (GTK_TREE_MENU (menu), + (GtkTreeMenuHeaderFunc)gtk_combo_box_header_func, + combo_box, NULL); + + gtk_widget_set_name (menu, "gtk-combobox-popup-menu"); + g_signal_connect (menu, "key-press-event", - G_CALLBACK (gtk_combo_box_menu_key_press), combo_box); + G_CALLBACK (gtk_combo_box_menu_key_press), combo_box); gtk_combo_box_set_popup_widget (combo_box, menu); - /* add items */ - if (add_children) - gtk_combo_box_menu_fill (combo_box); - - /* the column is needed in tree_column_row_is_sensitive() */ - priv->column = gtk_tree_view_column_new (); - g_object_ref_sink (priv->column); - gtk_combo_box_sync_cells (combo_box, GTK_CELL_LAYOUT (priv->column)); - gtk_combo_box_update_title (combo_box); - gtk_combo_box_update_sensitivity (combo_box); -} - -static void -gtk_combo_box_menu_fill (GtkComboBox *combo_box) -{ - GtkComboBoxPrivate *priv = combo_box->priv; - GtkWidget *menu; - - if (!priv->model) - return; - - menu = priv->popup_widget; - - if (priv->add_tearoffs) - { - GtkWidget *tearoff = gtk_tearoff_menu_item_new (); - - gtk_widget_show (tearoff); - - if (priv->wrap_width) - gtk_menu_attach (GTK_MENU (menu), tearoff, 0, priv->wrap_width, 0, 1); - else - gtk_menu_shell_append (GTK_MENU_SHELL (menu), tearoff); - } - - gtk_combo_box_menu_fill_level (combo_box, menu, NULL); -} - -static GtkWidget * -gtk_cell_view_menu_item_new (GtkComboBox *combo_box, - GtkTreeModel *model, - GtkTreeIter *iter) -{ - GtkWidget *cell_view; - GtkWidget *item; - GtkTreePath *path; - GtkRequisition req; - - cell_view = gtk_cell_view_new (); - item = gtk_menu_item_new (); - gtk_container_add (GTK_CONTAINER (item), cell_view); - - gtk_cell_view_set_model (GTK_CELL_VIEW (cell_view), model); - path = gtk_tree_model_get_path (model, iter); - gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (cell_view), path); - gtk_tree_path_free (path); - - gtk_combo_box_sync_cells (combo_box, GTK_CELL_LAYOUT (cell_view)); - gtk_widget_get_preferred_size (cell_view, &req, NULL); - gtk_widget_show (cell_view); - - return item; -} - -static void -gtk_combo_box_menu_fill_level (GtkComboBox *combo_box, - GtkWidget *menu, - GtkTreeIter *parent) -{ - GtkComboBoxPrivate *priv = combo_box->priv; - GtkTreeModel *model = priv->model; - GtkWidget *item, *submenu, *subitem, *separator; - GtkTreeIter iter; - gboolean is_separator; - gint i, n_children; - GtkWidget *last; - GtkTreePath *path; - - n_children = gtk_tree_model_iter_n_children (model, parent); - - last = NULL; - for (i = 0; i < n_children; i++) - { - gtk_tree_model_iter_nth_child (model, &iter, parent, i); - - if (priv->row_separator_func) - is_separator = priv->row_separator_func (priv->model, &iter, - priv->row_separator_data); - else - is_separator = FALSE; - - if (is_separator) - { - item = gtk_separator_menu_item_new (); - path = gtk_tree_model_get_path (model, &iter); - g_object_set_data_full (G_OBJECT (item), - I_("gtk-combo-box-item-path"), - gtk_tree_row_reference_new (model, path), - (GDestroyNotify)gtk_tree_row_reference_free); - gtk_tree_path_free (path); - } - else - { - item = gtk_cell_view_menu_item_new (combo_box, model, &iter); - if (gtk_tree_model_iter_has_child (model, &iter)) - { - submenu = gtk_menu_new (); - gtk_menu_set_reserve_toggle_size (GTK_MENU (submenu), FALSE); - gtk_widget_show (submenu); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); - - /* Ugly - since menus can only activate leafs, we have to - * duplicate the item inside the submenu. - */ - subitem = gtk_cell_view_menu_item_new (combo_box, model, &iter); - separator = gtk_separator_menu_item_new (); - gtk_widget_show (subitem); - gtk_widget_show (separator); - g_signal_connect (subitem, "activate", - G_CALLBACK (gtk_combo_box_menu_item_activate), - combo_box); - gtk_menu_shell_append (GTK_MENU_SHELL (submenu), subitem); - gtk_menu_shell_append (GTK_MENU_SHELL (submenu), separator); - - gtk_combo_box_menu_fill_level (combo_box, submenu, &iter); - } - g_signal_connect (item, "activate", - G_CALLBACK (gtk_combo_box_menu_item_activate), - combo_box); - } - - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - if (priv->wrap_width && menu == priv->popup_widget) - gtk_combo_box_relayout_item (combo_box, item, &iter, last); - gtk_widget_show (item); - - last = item; - } } static void @@ -3305,139 +3035,24 @@ gtk_combo_box_menu_destroy (GtkComboBox *combo_box) G_SIGNAL_MATCH_DATA, 0, 0, NULL, gtk_combo_box_button_state_flags_changed, combo_box); + g_signal_handlers_disconnect_matched (priv->popup_widget, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + gtk_combo_box_menu_activate, combo_box); /* unparent will remove our latest ref */ gtk_widget_unparent (priv->button); - + priv->box = NULL; priv->button = NULL; priv->arrow = NULL; priv->separator = NULL; - g_object_unref (priv->column); priv->column = NULL; /* changing the popup window will unref the menu and the children */ } -/* - * grid - */ - -static gboolean -menu_occupied (GtkMenu *menu, - guint left_attach, - guint right_attach, - guint top_attach, - guint bottom_attach) -{ - GList *i; - - for (i = GTK_MENU_SHELL (menu)->children; i; i = i->next) - { - guint l, r, b, t; - - gtk_container_child_get (GTK_CONTAINER (menu), - i->data, - "left-attach", &l, - "right-attach", &r, - "bottom-attach", &b, - "top-attach", &t, - NULL); - - /* look if this item intersects with the given coordinates */ - if (right_attach > l && left_attach < r && bottom_attach > t && top_attach < b) - return TRUE; - } - - return FALSE; -} - -static void -gtk_combo_box_relayout_item (GtkComboBox *combo_box, - GtkWidget *item, - GtkTreeIter *iter, - GtkWidget *last) -{ - GtkComboBoxPrivate *priv = combo_box->priv; - gint current_col = 0, current_row = 0; - gint rows = 1, cols = 1; - GtkWidget *menu = priv->popup_widget; - - if (!GTK_IS_MENU_SHELL (menu)) - return; - - if (priv->col_column == -1 && - priv->row_column == -1 && - last) - { - gtk_container_child_get (GTK_CONTAINER (menu), - last, - "right-attach", ¤t_col, - "top-attach", ¤t_row, - NULL); - if (current_col + cols > priv->wrap_width) - { - current_col = 0; - current_row++; - } - } - else - { - if (priv->col_column != -1) - gtk_tree_model_get (priv->model, iter, - priv->col_column, &cols, - -1); - if (priv->row_column != -1) - gtk_tree_model_get (priv->model, iter, - priv->row_column, &rows, - -1); - - while (1) - { - if (current_col + cols > priv->wrap_width) - { - current_col = 0; - current_row++; - } - - if (!menu_occupied (GTK_MENU (menu), - current_col, current_col + cols, - current_row, current_row + rows)) - break; - - current_col++; - } - } - - /* set attach props */ - gtk_menu_attach (GTK_MENU (menu), item, - current_col, current_col + cols, - current_row, current_row + rows); -} - -static void -gtk_combo_box_relayout (GtkComboBox *combo_box) -{ - GList *list, *j; - GtkWidget *menu; - - menu = combo_box->priv->popup_widget; - - /* do nothing unless we are in menu style and realized */ - if (combo_box->priv->tree_view || !GTK_IS_MENU_SHELL (menu)) - return; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - - for (j = g_list_last (list); j; j = j->prev) - gtk_container_remove (GTK_CONTAINER (menu), j->data); - - gtk_combo_box_menu_fill (combo_box); - - g_list_free (list); -} - /* callbacks */ static gboolean gtk_combo_box_menu_button_press (GtkWidget *widget, @@ -3450,9 +3065,9 @@ gtk_combo_box_menu_button_press (GtkWidget *widget, if (GTK_IS_MENU (priv->popup_widget) && event->type == GDK_BUTTON_PRESS && event->button == 1) { - if (priv->focus_on_click && - !gtk_widget_has_focus (priv->button)) - gtk_widget_grab_focus (priv->button); + if (priv->focus_on_click && + !gtk_widget_has_focus (priv->button)) + gtk_widget_grab_focus (priv->button); gtk_combo_box_menu_popup (combo_box, event->button, event->time); @@ -3463,33 +3078,21 @@ gtk_combo_box_menu_button_press (GtkWidget *widget, } static void -gtk_combo_box_menu_item_activate (GtkWidget *item, - gpointer user_data) +gtk_combo_box_menu_activate (GtkWidget *menu, + const gchar *path, + GtkComboBox *combo_box) { - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - GtkWidget *cell_view; - GtkTreePath *path; GtkTreeIter iter; - cell_view = gtk_bin_get_child (GTK_BIN (item)); - - g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); - - path = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (cell_view)); - - if (gtk_tree_model_get_iter (combo_box->priv->model, &iter, path)) - { - if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (item)) == NULL) - gtk_combo_box_set_active_iter (combo_box, &iter); - } - - gtk_tree_path_free (path); + if (gtk_tree_model_get_iter_from_string (combo_box->priv->model, &iter, path)) + gtk_combo_box_set_active_iter (combo_box, &iter); g_object_set (combo_box, "editing-canceled", FALSE, NULL); } + static void gtk_combo_box_update_sensitivity (GtkComboBox *combo_box) { @@ -3526,24 +3129,22 @@ gtk_combo_box_update_sensitivity (GtkComboBox *combo_box) static void gtk_combo_box_model_row_inserted (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); if (combo_box->priv->tree_view) gtk_combo_box_list_popup_resize (combo_box); - else - gtk_combo_box_menu_row_inserted (model, path, iter, user_data); gtk_combo_box_update_sensitivity (combo_box); } static void gtk_combo_box_model_row_deleted (GtkTreeModel *model, - GtkTreePath *path, - gpointer user_data) + GtkTreePath *path, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); GtkComboBoxPrivate *priv = combo_box->priv; @@ -3551,38 +3152,31 @@ gtk_combo_box_model_row_deleted (GtkTreeModel *model, if (!gtk_tree_row_reference_valid (priv->active_row)) { if (priv->cell_view) - gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (priv->cell_view), NULL); + gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (priv->cell_view), NULL); g_signal_emit (combo_box, combo_box_signals[CHANGED], 0); } if (priv->tree_view) gtk_combo_box_list_popup_resize (combo_box); - else - gtk_combo_box_menu_row_deleted (model, path, user_data); gtk_combo_box_update_sensitivity (combo_box); } static void gtk_combo_box_model_rows_reordered (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order, - gpointer user_data) + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order, + gpointer user_data) { - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - gtk_tree_row_reference_reordered (G_OBJECT (user_data), path, iter, new_order); - - if (!combo_box->priv->tree_view) - gtk_combo_box_menu_rows_reordered (model, path, iter, new_order, user_data); } - + static void gtk_combo_box_model_row_changed (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); GtkComboBoxPrivate *priv = combo_box->priv; @@ -3593,15 +3187,13 @@ gtk_combo_box_model_row_changed (GtkTreeModel *model, { active_path = gtk_tree_row_reference_get_path (priv->active_row); if (gtk_tree_path_compare (path, active_path) == 0 && - priv->cell_view) - gtk_widget_queue_resize (GTK_WIDGET (priv->cell_view)); + priv->cell_view) + gtk_widget_queue_resize (GTK_WIDGET (priv->cell_view)); gtk_tree_path_free (active_path); } - + if (priv->tree_view) gtk_combo_box_list_row_changed (model, path, iter, user_data); - else - gtk_combo_box_menu_row_changed (model, path, iter, user_data); } static gboolean @@ -3614,7 +3206,7 @@ list_popup_resize_idle (gpointer user_data) if (priv->tree_view && gtk_widget_get_mapped (priv->popup_window)) { gtk_combo_box_list_position (combo_box, &x, &y, &width, &height); - + gtk_widget_set_size_request (priv->popup_window, width, height); gtk_window_move (GTK_WINDOW (priv->popup_window), x, y); } @@ -3630,317 +3222,22 @@ gtk_combo_box_list_popup_resize (GtkComboBox *combo_box) GtkComboBoxPrivate *priv = combo_box->priv; if (!priv->resize_idle_id) - priv->resize_idle_id = + priv->resize_idle_id = gdk_threads_add_idle (list_popup_resize_idle, combo_box); } static void gtk_combo_box_model_row_expanded (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) + GtkTreePath *path, + GtkTreeIter *iter, + gpointer user_data) { GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - + gtk_combo_box_list_popup_resize (combo_box); } -static GtkWidget * -find_menu_by_path (GtkWidget *menu, - GtkTreePath *path, - gboolean skip_first) -{ - GList *i, *list; - GtkWidget *child; - GtkWidget *item; - GtkWidget *submenu; - GtkTreeRowReference *mref; - GtkTreePath *mpath; - gboolean skip; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - skip = skip_first; - item = NULL; - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (i->data); - if (GTK_IS_SEPARATOR_MENU_ITEM (i->data)) - { - mref = g_object_get_data (G_OBJECT (i->data), "gtk-combo-box-item-path"); - if (!mref) - continue; - else if (!gtk_tree_row_reference_valid (mref)) - mpath = NULL; - else - mpath = gtk_tree_row_reference_get_path (mref); - } - else if (GTK_IS_CELL_VIEW (child)) - { - if (skip) - { - skip = FALSE; - continue; - } - - mpath = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (child)); - } - else - continue; - - /* this case is necessary, since the row reference of - * the cell view may already be updated after a deletion - */ - if (!mpath) - { - item = i->data; - break; - } - if (gtk_tree_path_compare (mpath, path) == 0) - { - gtk_tree_path_free (mpath); - item = i->data; - break; - } - if (gtk_tree_path_is_ancestor (mpath, path)) - { - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - { - gtk_tree_path_free (mpath); - item = find_menu_by_path (submenu, path, TRUE); - break; - } - } - gtk_tree_path_free (mpath); - } - - g_list_free (list); - - return item; -} - -#if 0 -static void -dump_menu_tree (GtkWidget *menu, - gint level) -{ - GList *i, *list; - GtkWidget *submenu; - GtkTreePath *path; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - if (GTK_IS_CELL_VIEW (GTK_BIN (i->data)->child)) - { - path = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (GTK_BIN (i->data)->child)); - g_print ("%*s%s\n", 2 * level, " ", gtk_tree_path_to_string (path)); - gtk_tree_path_free (path); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - dump_menu_tree (submenu, level + 1); - } - } - - g_list_free (list); -} -#endif - -static void -gtk_combo_box_menu_row_inserted (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - GtkComboBoxPrivate *priv = combo_box->priv; - GtkWidget *parent; - GtkWidget *item, *menu, *separator; - GtkTreePath *ppath; - GtkTreeIter piter; - gint depth, pos; - gboolean is_separator; - - if (!priv->popup_widget) - return; - - depth = gtk_tree_path_get_depth (path); - pos = gtk_tree_path_get_indices (path)[depth - 1]; - if (depth > 1) - { - ppath = gtk_tree_path_copy (path); - gtk_tree_path_up (ppath); - parent = find_menu_by_path (priv->popup_widget, ppath, FALSE); - gtk_tree_path_free (ppath); - - menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (parent)); - if (!menu) - { - menu = gtk_menu_new (); - gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE); - gtk_widget_show (menu); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (parent), menu); - - /* Ugly - since menus can only activate leaves, we have to - * duplicate the item inside the submenu. - */ - gtk_tree_model_iter_parent (model, &piter, iter); - item = gtk_cell_view_menu_item_new (combo_box, model, &piter); - separator = gtk_separator_menu_item_new (); - g_signal_connect (item, "activate", - G_CALLBACK (gtk_combo_box_menu_item_activate), - combo_box); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), separator); - if (cell_view_is_sensitive (GTK_CELL_VIEW (gtk_bin_get_child (GTK_BIN (item))))) - { - gtk_widget_show (item); - gtk_widget_show (separator); - } - } - pos += 2; - } - else - { - menu = priv->popup_widget; - if (priv->add_tearoffs) - pos += 1; - } - - if (priv->row_separator_func) - is_separator = priv->row_separator_func (model, iter, - priv->row_separator_data); - else - is_separator = FALSE; - - if (is_separator) - { - item = gtk_separator_menu_item_new (); - g_object_set_data_full (G_OBJECT (item), - I_("gtk-combo-box-item-path"), - gtk_tree_row_reference_new (model, path), - (GDestroyNotify)gtk_tree_row_reference_free); - } - else - { - item = gtk_cell_view_menu_item_new (combo_box, model, iter); - - g_signal_connect (item, "activate", - G_CALLBACK (gtk_combo_box_menu_item_activate), - combo_box); - } - - gtk_widget_show (item); - gtk_menu_shell_insert (GTK_MENU_SHELL (menu), item, pos); -} - -static void -gtk_combo_box_menu_row_deleted (GtkTreeModel *model, - GtkTreePath *path, - gpointer user_data) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - GtkComboBoxPrivate *priv = combo_box->priv; - GtkWidget *menu; - GtkWidget *item; - - if (!priv->popup_widget) - return; - - item = find_menu_by_path (priv->popup_widget, path, FALSE); - menu = gtk_widget_get_parent (item); - gtk_container_remove (GTK_CONTAINER (menu), item); - - if (gtk_tree_path_get_depth (path) > 1) - { - GtkTreePath *parent_path; - GtkTreeIter iter; - GtkWidget *parent; - - parent_path = gtk_tree_path_copy (path); - gtk_tree_path_up (parent_path); - gtk_tree_model_get_iter (model, &iter, parent_path); - - if (!gtk_tree_model_iter_has_child (model, &iter)) - { - parent = find_menu_by_path (priv->popup_widget, - parent_path, FALSE); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (parent), NULL); - } - } -} - -static void -gtk_combo_box_menu_rows_reordered (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order, - gpointer user_data) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - - gtk_combo_box_relayout (combo_box); -} - -static void -gtk_combo_box_menu_row_changed (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - gpointer user_data) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (user_data); - GtkComboBoxPrivate *priv = combo_box->priv; - GtkWidget *item; - gboolean is_separator; - - if (!priv->popup_widget) - return; - - item = find_menu_by_path (priv->popup_widget, path, FALSE); - - if (priv->row_separator_func) - is_separator = priv->row_separator_func (model, iter, - priv->row_separator_data); - else - is_separator = FALSE; - - if (is_separator != GTK_IS_SEPARATOR_MENU_ITEM (item)) - { - gtk_combo_box_menu_row_deleted (model, path, combo_box); - gtk_combo_box_menu_row_inserted (model, path, iter, combo_box); - } - - if (priv->wrap_width && - gtk_widget_get_parent (item) == priv->popup_widget) - { - GtkWidget *pitem = NULL; - GtkTreePath *prev; - - prev = gtk_tree_path_copy (path); - - if (gtk_tree_path_prev (prev)) - pitem = find_menu_by_path (priv->popup_widget, prev, FALSE); - - gtk_tree_path_free (prev); - - /* unattach item so gtk_combo_box_relayout_item() won't spuriously - move it */ - gtk_container_child_set (GTK_CONTAINER (priv->popup_widget), - item, - "left-attach", -1, - "right-attach", -1, - "top-attach", -1, - "bottom-attach", -1, - NULL); - - gtk_combo_box_relayout_item (combo_box, item, iter, pitem); - } - - gtk_combo_box_update_requested_width (combo_box, path); -} - /* * list style */ @@ -3984,56 +3281,52 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box) gdk_rgba_free (color); priv->box = gtk_event_box_new (); - gtk_event_box_set_visible_window (GTK_EVENT_BOX (priv->box), - FALSE); + gtk_event_box_set_visible_window (GTK_EVENT_BOX (priv->box), + FALSE); if (priv->has_frame) - { - priv->cell_view_frame = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (priv->cell_view_frame), - GTK_SHADOW_IN); - } - else - { - combo_box->priv->cell_view_frame = gtk_event_box_new (); - gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->cell_view_frame), - FALSE); - } + { + priv->cell_view_frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (priv->cell_view_frame), + GTK_SHADOW_IN); + } + else + { + combo_box->priv->cell_view_frame = gtk_event_box_new (); + gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->cell_view_frame), + FALSE); + } gtk_widget_set_parent (priv->cell_view_frame, - gtk_widget_get_parent (child)); + gtk_widget_get_parent (child)); gtk_container_add (GTK_CONTAINER (priv->cell_view_frame), priv->box); gtk_widget_show_all (priv->cell_view_frame); g_signal_connect (priv->box, "button-press-event", - G_CALLBACK (gtk_combo_box_list_button_pressed), - combo_box); + G_CALLBACK (gtk_combo_box_list_button_pressed), + combo_box); } priv->tree_view = gtk_tree_view_new (); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view)); gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function (sel, - gtk_combo_box_list_select_func, - NULL, NULL); + gtk_combo_box_list_select_func, + NULL, NULL); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_tree_view_set_hover_selection (GTK_TREE_VIEW (priv->tree_view), - TRUE); - if (priv->row_separator_func) - gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (priv->tree_view), - priv->row_separator_func, - priv->row_separator_data, - NULL); + TRUE); + + gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (priv->tree_view), + (GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func, + combo_box, NULL); + if (priv->model) gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree_view), priv->model); - - priv->column = gtk_tree_view_column_new (); - gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), priv->column); - /* sync up */ - gtk_combo_box_sync_cells (combo_box, - GTK_CELL_LAYOUT (priv->column)); + priv->column = gtk_tree_view_column_new_with_area (priv->area); + gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), priv->column); if (gtk_tree_row_reference_valid (priv->active_row)) { @@ -4041,7 +3334,7 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box) path = gtk_tree_row_reference_get_path (priv->active_row); gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->tree_view), - path, NULL, FALSE); + path, NULL, FALSE); gtk_tree_path_free (path); } @@ -4055,11 +3348,11 @@ gtk_combo_box_list_setup (GtkComboBox *combo_box) G_CALLBACK (gtk_combo_box_list_enter_notify), combo_box); g_signal_connect (priv->tree_view, "row-expanded", - G_CALLBACK (gtk_combo_box_model_row_expanded), - combo_box); + G_CALLBACK (gtk_combo_box_model_row_expanded), + combo_box); g_signal_connect (priv->tree_view, "row-collapsed", - G_CALLBACK (gtk_combo_box_model_row_expanded), - combo_box); + G_CALLBACK (gtk_combo_box_model_row_expanded), + combo_box); g_signal_connect (priv->popup_window, "button-press-event", G_CALLBACK (gtk_combo_box_list_button_pressed), combo_box); @@ -4098,23 +3391,23 @@ gtk_combo_box_list_destroy (GtkComboBox *combo_box) NULL); g_signal_handlers_disconnect_matched (priv->popup_window, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, - gtk_combo_box_child_show, - NULL); + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + gtk_combo_box_child_show, + NULL); g_signal_handlers_disconnect_matched (priv->popup_window, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, - gtk_combo_box_child_hide, - NULL); - + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + gtk_combo_box_child_hide, + NULL); + if (priv->box) g_signal_handlers_disconnect_matched (priv->box, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, - gtk_combo_box_list_button_pressed, - NULL); + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, + gtk_combo_box_list_button_pressed, + NULL); /* destroy things (unparent will kill the latest ref from us) * last unref on button will destroy the arrow @@ -4178,7 +3471,7 @@ gtk_combo_box_list_button_pressed (GtkWidget *widget, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->button))) return FALSE; - if (priv->focus_on_click && + if (priv->focus_on_click && !gtk_widget_has_focus (priv->button)) gtk_widget_grab_focus (priv->button); @@ -4188,9 +3481,9 @@ gtk_combo_box_list_button_pressed (GtkWidget *widget, priv->auto_scroll = FALSE; if (priv->scroll_timer == 0) - priv->scroll_timer = gdk_threads_add_timeout (SCROLL_TIME, - (GSourceFunc) gtk_combo_box_list_scroll_timeout, - combo_box); + priv->scroll_timer = gdk_threads_add_timeout (SCROLL_TIME, + (GSourceFunc) gtk_combo_box_list_scroll_timeout, + combo_box); priv->popup_in_progress = TRUE; @@ -4219,8 +3512,8 @@ gtk_combo_box_list_button_released (GtkWidget *widget, priv->popup_in_progress = FALSE; } - gtk_tree_view_set_hover_expand (GTK_TREE_VIEW (priv->tree_view), - FALSE); + gtk_tree_view_set_hover_expand (GTK_TREE_VIEW (priv->tree_view), + FALSE); if (priv->scroll_timer) { g_source_remove (priv->scroll_timer); @@ -4229,8 +3522,8 @@ gtk_combo_box_list_button_released (GtkWidget *widget, if (ewidget != priv->tree_view) { - if ((ewidget == priv->button || - ewidget == priv->box) && + if ((ewidget == priv->button || + ewidget == priv->box) && !popup_in_progress && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->button))) { @@ -4271,8 +3564,8 @@ gtk_combo_box_list_button_released (GtkWidget *widget, static gboolean gtk_combo_box_menu_key_press (GtkWidget *widget, - GdkEventKey *event, - gpointer data) + GdkEventKey *event, + gpointer data) { GtkComboBox *combo_box = GTK_COMBO_BOX (data); @@ -4296,22 +3589,22 @@ gtk_combo_box_list_key_press (GtkWidget *widget, GtkTreeIter iter; if (event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_ISO_Enter || event->keyval == GDK_KEY_KP_Enter || - event->keyval == GDK_KEY_space || event->keyval == GDK_KEY_KP_Space) + event->keyval == GDK_KEY_space || event->keyval == GDK_KEY_KP_Space) { GtkTreeModel *model = NULL; - + gtk_combo_box_popdown (combo_box); - + if (combo_box->priv->model) { - GtkTreeSelection *sel; + GtkTreeSelection *sel; - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (combo_box->priv->tree_view)); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (combo_box->priv->tree_view)); - if (gtk_tree_selection_get_selected (sel, &model, &iter)) - gtk_combo_box_set_active_iter (combo_box, &iter); + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + gtk_combo_box_set_active_iter (combo_box, &iter); } - + return TRUE; } @@ -4328,8 +3621,8 @@ gtk_combo_box_list_key_press (GtkWidget *widget, static void gtk_combo_box_list_auto_scroll (GtkComboBox *combo_box, - gint x, - gint y) + gint x, + gint y) { GtkAdjustment *adj; GtkAllocation allocation; @@ -4339,37 +3632,37 @@ gtk_combo_box_list_auto_scroll (GtkComboBox *combo_box, gtk_widget_get_allocation (tree_view, &allocation); adj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (combo_box->priv->scrolled_window)); - if (adj && adj->upper - adj->lower > adj->page_size) + if (adj && gtk_adjustment_get_upper (adj) - gtk_adjustment_get_lower (adj) > gtk_adjustment_get_page_size (adj)) { if (x <= allocation.x && - adj->lower < adj->value) - { - value = adj->value - (allocation.x - x + 1); - gtk_adjustment_set_value (adj, value); - } + gtk_adjustment_get_lower (adj) < gtk_adjustment_get_value (adj)) + { + value = gtk_adjustment_get_value (adj) - (allocation.x - x + 1); + gtk_adjustment_set_value (adj, value); + } else if (x >= allocation.x + allocation.width && - adj->upper - adj->page_size > adj->value) - { - value = adj->value + (x - allocation.x - allocation.width + 1); - gtk_adjustment_set_value (adj, MAX (value, 0.0)); - } + gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj) > gtk_adjustment_get_value (adj)) + { + value = gtk_adjustment_get_value (adj) + (x - allocation.x - allocation.width + 1); + gtk_adjustment_set_value (adj, MAX (value, 0.0)); + } } adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (combo_box->priv->scrolled_window)); - if (adj && adj->upper - adj->lower > adj->page_size) + if (adj && gtk_adjustment_get_upper (adj) - gtk_adjustment_get_lower (adj) > gtk_adjustment_get_page_size (adj)) { if (y <= allocation.y && - adj->lower < adj->value) - { - value = adj->value - (allocation.y - y + 1); - gtk_adjustment_set_value (adj, value); - } + gtk_adjustment_get_lower (adj) < gtk_adjustment_get_value (adj)) + { + value = gtk_adjustment_get_value (adj) - (allocation.y - y + 1); + gtk_adjustment_set_value (adj, value); + } else if (y >= allocation.height && - adj->upper - adj->page_size > adj->value) - { - value = adj->value + (y - allocation.height + 1); - gtk_adjustment_set_value (adj, MAX (value, 0.0)); - } + gtk_adjustment_get_upper (adj) - gtk_adjustment_get_page_size (adj) > gtk_adjustment_get_value (adj)) + { + value = gtk_adjustment_get_value (adj) + (y - allocation.height + 1); + gtk_adjustment_set_value (adj, MAX (value, 0.0)); + } } } @@ -4390,10 +3683,10 @@ gtk_combo_box_list_scroll_timeout (GtkComboBox *combo_box) return TRUE; } -static gboolean +static gboolean gtk_combo_box_list_enter_notify (GtkWidget *widget, - GdkEventCrossing *event, - gpointer data) + GdkEventCrossing *event, + gpointer data) { GtkComboBox *combo_box = GTK_COMBO_BOX (data); @@ -4404,15 +3697,17 @@ gtk_combo_box_list_enter_notify (GtkWidget *widget, static gboolean gtk_combo_box_list_select_func (GtkTreeSelection *selection, - GtkTreeModel *model, - GtkTreePath *path, - gboolean path_currently_selected, - gpointer data) + GtkTreeModel *model, + GtkTreePath *path, + gboolean path_currently_selected, + gpointer data) { - GList *list; + GList *list, *columns; gboolean sensitive = FALSE; - for (list = selection->tree_view->priv->columns; list && !sensitive; list = list->next) + columns = gtk_tree_view_get_columns (gtk_tree_selection_get_tree_view (selection)); + + for (list = columns; list && !sensitive; list = list->next) { GList *cells, *cell; gboolean cell_sensitive, cell_visible; @@ -4420,30 +3715,32 @@ gtk_combo_box_list_select_func (GtkTreeSelection *selection, GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (list->data); if (!gtk_tree_view_column_get_visible (column)) - continue; + continue; gtk_tree_model_get_iter (model, &iter, path); gtk_tree_view_column_cell_set_cell_data (column, model, &iter, - FALSE, FALSE); + FALSE, FALSE); cell = cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column)); while (cell) { - g_object_get (cell->data, - "sensitive", &cell_sensitive, - "visible", &cell_visible, - NULL); + g_object_get (cell->data, + "sensitive", &cell_sensitive, + "visible", &cell_visible, + NULL); - if (cell_visible && cell_sensitive) - break; + if (cell_visible && cell_sensitive) + break; - cell = cell->next; - } + cell = cell->next; + } g_list_free (cells); sensitive = cell_sensitive; } + g_list_free (columns); + return sensitive; } @@ -4453,466 +3750,16 @@ gtk_combo_box_list_row_changed (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { - GtkComboBox *combo_box = GTK_COMBO_BOX (data); - - gtk_combo_box_update_requested_width (combo_box, path); + /* XXX Do nothing ? */ } /* * GtkCellLayout implementation */ - -static void -pack_start_recurse (GtkWidget *menu, - GtkCellRenderer *cell, - gboolean expand) +GtkCellArea * +gtk_combo_box_cell_layout_get_area (GtkCellLayout *cell_layout) { - GList *i, *list; - GtkWidget *child; - GtkWidget *submenu; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (child), - cell, expand); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - pack_start_recurse (submenu, cell, expand); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *cell, - gboolean expand) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - ComboCellInfo *info; - GtkComboBoxPrivate *priv; - - priv = combo_box->priv; - - g_object_ref_sink (cell); - - info = g_slice_new0 (ComboCellInfo); - info->cell = cell; - info->expand = expand; - info->pack = GTK_PACK_START; - - priv->cells = g_slist_append (priv->cells, info); - - if (priv->cell_view) - { - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->cell_view), - cell, expand); - - } - - if (priv->column) - gtk_tree_view_column_pack_start (priv->column, cell, expand); - - if (GTK_IS_MENU (priv->popup_widget)) - pack_start_recurse (priv->popup_widget, cell, expand); -} - -static void -pack_end_recurse (GtkWidget *menu, - GtkCellRenderer *cell, - gboolean expand) -{ - GList *i, *list; - GtkWidget *child; - GtkWidget *submenu; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (child), - cell, expand); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - pack_end_recurse (submenu, cell, expand); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *cell, - gboolean expand) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - ComboCellInfo *info; - GtkComboBoxPrivate *priv; - - priv = combo_box->priv; - - g_object_ref_sink (cell); - - info = g_slice_new0 (ComboCellInfo); - info->cell = cell; - info->expand = expand; - info->pack = GTK_PACK_END; - - priv->cells = g_slist_append (priv->cells, info); - - if (priv->cell_view) - gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (priv->cell_view), - cell, expand); - - if (priv->column) - gtk_tree_view_column_pack_end (priv->column, cell, expand); - - if (GTK_IS_MENU (priv->popup_widget)) - pack_end_recurse (priv->popup_widget, cell, expand); -} - -static GList * -gtk_combo_box_cell_layout_get_cells (GtkCellLayout *layout) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - GSList *list; - GList *retval = NULL; - - for (list = combo_box->priv->cells; list; list = list->next) - { - ComboCellInfo *info = (ComboCellInfo *)list->data; - - retval = g_list_prepend (retval, info->cell); - } - - return g_list_reverse (retval); -} - -static void -clear_recurse (GtkWidget *menu) -{ - GList *i, *list; - GtkWidget *child; - GtkWidget *submenu; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_clear (GTK_CELL_LAYOUT (child)); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - clear_recurse (submenu); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_clear (GtkCellLayout *layout) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - GtkComboBoxPrivate *priv = combo_box->priv; - GSList *i; - - if (priv->cell_view) - gtk_cell_layout_clear (GTK_CELL_LAYOUT (priv->cell_view)); - - if (priv->column) - gtk_tree_view_column_clear (priv->column); - - for (i = priv->cells; i; i = i->next) - { - ComboCellInfo *info = (ComboCellInfo *)i->data; - - gtk_combo_box_cell_layout_clear_attributes (layout, info->cell); - g_object_unref (info->cell); - g_slice_free (ComboCellInfo, info); - i->data = NULL; - } - g_slist_free (priv->cells); - priv->cells = NULL; - - if (GTK_IS_MENU (priv->popup_widget)) - clear_recurse (priv->popup_widget); -} - -static void -add_attribute_recurse (GtkWidget *menu, - GtkCellRenderer *cell, - const gchar *attribute, - gint column) -{ - GList *i, *list; - GtkWidget *child; - GtkWidget *submenu; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (child), - cell, attribute, column); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - add_attribute_recurse (submenu, cell, attribute, column); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *cell, - const gchar *attribute, - gint column) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - ComboCellInfo *info; - - info = gtk_combo_box_get_cell_info (combo_box, cell); - g_return_if_fail (info != NULL); - - info->attributes = g_slist_prepend (info->attributes, - GINT_TO_POINTER (column)); - info->attributes = g_slist_prepend (info->attributes, - g_strdup (attribute)); - - if (combo_box->priv->cell_view) - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_box->priv->cell_view), - cell, attribute, column); - - if (combo_box->priv->column) - gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_box->priv->column), - cell, attribute, column); - - if (GTK_IS_MENU (combo_box->priv->popup_widget)) - add_attribute_recurse (combo_box->priv->popup_widget, cell, attribute, column); - gtk_widget_queue_resize (GTK_WIDGET (combo_box)); -} - -static void -combo_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkTreeModel *tree_model, - GtkTreeIter *iter, - gpointer data) -{ - ComboCellInfo *info = (ComboCellInfo *)data; - GtkWidget *parent = NULL; - - if (!info->func) - return; - - info->func (cell_layout, cell, tree_model, iter, info->func_data); - - if (GTK_IS_WIDGET (cell_layout)) - parent = gtk_widget_get_parent (GTK_WIDGET (cell_layout)); - - if (GTK_IS_MENU_ITEM (parent) && - gtk_menu_item_get_submenu (GTK_MENU_ITEM (parent))) - g_object_set (cell, "sensitive", TRUE, NULL); -} - - -static void -set_cell_data_func_recurse (GtkWidget *menu, - GtkCellRenderer *cell, - ComboCellInfo *info) -{ - GList *i, *list; - GtkWidget *submenu; - GtkWidget *cell_view; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - cell_view = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (cell_view)) - { - /* Override sensitivity for inner nodes; we don't - * want menuitems with submenus to appear insensitive - */ - gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (cell_view), - cell, - combo_cell_data_func, - info, NULL); - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - set_cell_data_func_recurse (submenu, cell, info); - } - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - GtkComboBoxPrivate *priv = combo_box->priv; - ComboCellInfo *info; - - info = gtk_combo_box_get_cell_info (combo_box, cell); - g_return_if_fail (info != NULL); - - if (info->destroy) - { - GDestroyNotify d = info->destroy; - - info->destroy = NULL; - d (info->func_data); - } - - info->func = func; - info->func_data = func_data; - info->destroy = destroy; - - if (priv->cell_view) - gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (priv->cell_view), cell, func, func_data, NULL); - - if (priv->column) - gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (priv->column), cell, func, func_data, NULL); - - if (GTK_IS_MENU (priv->popup_widget)) - set_cell_data_func_recurse (priv->popup_widget, cell, info); - - gtk_widget_queue_resize (GTK_WIDGET (combo_box)); -} - -static void -clear_attributes_recurse (GtkWidget *menu, - GtkCellRenderer *cell) -{ - GList *i, *list; - GtkWidget *submenu; - GtkWidget *child; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_clear_attributes (GTK_CELL_LAYOUT (child), cell); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - clear_attributes_recurse (submenu, cell); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *cell) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - GtkComboBoxPrivate *priv; - ComboCellInfo *info; - GSList *list; - - priv = combo_box->priv; - - info = gtk_combo_box_get_cell_info (combo_box, cell); - g_return_if_fail (info != NULL); - - list = info->attributes; - while (list && list->next) - { - g_free (list->data); - list = list->next->next; - } - g_slist_free (info->attributes); - info->attributes = NULL; - - if (priv->cell_view) - gtk_cell_layout_clear_attributes (GTK_CELL_LAYOUT (priv->cell_view), cell); - - if (priv->column) - gtk_cell_layout_clear_attributes (GTK_CELL_LAYOUT (priv->column), cell); - - if (GTK_IS_MENU (priv->popup_widget)) - clear_attributes_recurse (priv->popup_widget, cell); - - gtk_widget_queue_resize (GTK_WIDGET (combo_box)); -} - -static void -reorder_recurse (GtkWidget *menu, - GtkCellRenderer *cell, - gint position) -{ - GList *i, *list; - GtkWidget *child; - GtkWidget *submenu; - - list = gtk_container_get_children (GTK_CONTAINER (menu)); - for (i = list; i; i = i->next) - { - child = gtk_bin_get_child (GTK_BIN (i->data)); - if (GTK_IS_CELL_LAYOUT (child)) - gtk_cell_layout_reorder (GTK_CELL_LAYOUT (child), - cell, position); - - submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (i->data)); - if (submenu != NULL) - reorder_recurse (submenu, cell, position); - } - - g_list_free (list); -} - -static void -gtk_combo_box_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position) -{ - GtkComboBox *combo_box = GTK_COMBO_BOX (layout); - GtkComboBoxPrivate *priv; - ComboCellInfo *info; - GSList *link; - - priv = combo_box->priv; - - info = gtk_combo_box_get_cell_info (combo_box, cell); - - g_return_if_fail (info != NULL); - g_return_if_fail (position >= 0); - - link = g_slist_find (priv->cells, info); - - g_return_if_fail (link != NULL); - - priv->cells = g_slist_delete_link (priv->cells, link); - priv->cells = g_slist_insert (priv->cells, info, position); - - if (priv->cell_view) - gtk_cell_layout_reorder (GTK_CELL_LAYOUT (priv->cell_view), - cell, position); - - if (priv->column) - gtk_cell_layout_reorder (GTK_CELL_LAYOUT (priv->column), - cell, position); - - if (GTK_IS_MENU (priv->popup_widget)) - reorder_recurse (priv->popup_widget, cell, position); - - gtk_widget_queue_draw (GTK_WIDGET (combo_box)); + return GTK_COMBO_BOX (cell_layout)->priv->area; } /* @@ -4934,6 +3781,40 @@ gtk_combo_box_new (void) return g_object_new (GTK_TYPE_COMBO_BOX, NULL); } +/** + * gtk_combo_box_new_with_area: + * @area: the #GtkCellArea to use to layout cell renderers + * + * Creates a new empty #GtkComboBox using @area to layout cells. + * + * Return value: A new #GtkComboBox. + */ +GtkWidget * +gtk_combo_box_new_with_area (GtkCellArea *area) +{ + return g_object_new (GTK_TYPE_COMBO_BOX, "cell-area", area, NULL); +} + +/** + * gtk_combo_box_new_with_area_and_entry: + * @area: the #GtkCellArea to use to layout cell renderers + * + * Creates a new empty #GtkComboBox with an entry. + * + * The new combo box will use @area to layout cells. + * + * Return value: A new #GtkComboBox. + */ +GtkWidget * +gtk_combo_box_new_with_area_and_entry (GtkCellArea *area) +{ + return g_object_new (GTK_TYPE_COMBO_BOX, + "has-entry", TRUE, + "cell-area", area, + NULL); +} + + /** * gtk_combo_box_new_with_entry: * @@ -4991,8 +3872,8 @@ gtk_combo_box_new_with_model_and_entry (GtkTreeModel *model) * gtk_combo_box_get_wrap_width: * @combo_box: A #GtkComboBox * - * Returns the wrap width which is used to determine the number of columns - * for the popup menu. If the wrap width is larger than 1, the combo box + * Returns the wrap width which is used to determine the number of columns + * for the popup menu. If the wrap width is larger than 1, the combo box * is in table mode. * * Returns: the wrap width. @@ -5034,8 +3915,10 @@ gtk_combo_box_set_wrap_width (GtkComboBox *combo_box, priv->wrap_width = width; gtk_combo_box_check_appearance (combo_box); - gtk_combo_box_relayout (combo_box); - + + if (GTK_IS_TREE_MENU (priv->popup_widget)) + _gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (priv->popup_widget), priv->wrap_width); + g_object_notify (G_OBJECT (combo_box), "wrap-width"); } } @@ -5086,9 +3969,10 @@ gtk_combo_box_set_row_span_column (GtkComboBox *combo_box, if (row_span != priv->row_column) { priv->row_column = row_span; - - gtk_combo_box_relayout (combo_box); - + + if (GTK_IS_TREE_MENU (priv->popup_widget)) + _gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (priv->popup_widget), priv->row_column); + g_object_notify (G_OBJECT (combo_box), "row-span-column"); } } @@ -5139,8 +4023,9 @@ gtk_combo_box_set_column_span_column (GtkComboBox *combo_box, if (column_span != priv->col_column) { priv->col_column = column_span; - - gtk_combo_box_relayout (combo_box); + + if (GTK_IS_TREE_MENU (priv->popup_widget)) + _gtk_tree_menu_set_column_span_column (GTK_TREE_MENU (priv->popup_widget), priv->col_column); g_object_notify (G_OBJECT (combo_box), "column-span-column"); } @@ -5151,12 +4036,12 @@ gtk_combo_box_set_column_span_column (GtkComboBox *combo_box, * @combo_box: A #GtkComboBox * * Returns the index of the currently active item, or -1 if there's no - * active item. If the model is a non-flat treemodel, and the active item - * is not an immediate child of the root of the tree, this function returns - * gtk_tree_path_get_indices (path)[0], where + * active item. If the model is a non-flat treemodel, and the active item + * is not an immediate child of the root of the tree, this function returns + * gtk_tree_path_get_indices (path)[0], where * path is the #GtkTreePath of the active item. * - * Return value: An integer which is the index of the currently active item, + * Return value: An integer which is the index of the currently active item, * or -1 if there's no active item. * * Since: 2.4 @@ -5175,7 +4060,7 @@ gtk_combo_box_get_active (GtkComboBox *combo_box) { GtkTreePath *path; - path = gtk_tree_row_reference_get_path (priv->active_row); + path = gtk_tree_row_reference_get_path (priv->active_row); result = gtk_tree_path_get_indices (path)[0]; gtk_tree_path_free (path); } @@ -5213,7 +4098,7 @@ gtk_combo_box_set_active (GtkComboBox *combo_box, if (index_ != -1) path = gtk_tree_path_new_from_indices (index_, -1); - + gtk_combo_box_set_active_internal (combo_box, path); if (path) @@ -5222,7 +4107,7 @@ gtk_combo_box_set_active (GtkComboBox *combo_box, static void gtk_combo_box_set_active_internal (GtkComboBox *combo_box, - GtkTreePath *path) + GtkTreePath *path) { GtkComboBoxPrivate *priv = combo_box->priv; GtkTreePath *active_path; @@ -5237,7 +4122,7 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, path_cmp = gtk_tree_path_compare (path, active_path); gtk_tree_path_free (active_path); if (path_cmp == 0) - return; + return; } if (priv->active_row) @@ -5245,7 +4130,7 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, gtk_tree_row_reference_free (priv->active_row); priv->active_row = NULL; } - + if (!path) { if (priv->tree_view) @@ -5270,24 +4155,24 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, } else { - priv->active_row = - gtk_tree_row_reference_new (priv->model, path); + priv->active_row = + gtk_tree_row_reference_new (priv->model, path); if (priv->tree_view) - { - gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->tree_view), - path, NULL, FALSE); - } + { + gtk_tree_view_set_cursor (GTK_TREE_VIEW (priv->tree_view), + path, NULL, FALSE); + } else if (GTK_IS_MENU (priv->popup_widget)) { - /* FIXME handle nested menus better */ - gtk_menu_set_active (GTK_MENU (priv->popup_widget), - gtk_tree_path_get_indices (path)[0]); + /* FIXME handle nested menus better */ + gtk_menu_set_active (GTK_MENU (priv->popup_widget), + gtk_tree_path_get_indices (path)[0]); } if (priv->cell_view) - gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (priv->cell_view), - path); + gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (priv->cell_view), + path); } g_signal_emit (combo_box, combo_box_signals[CHANGED], 0); @@ -5301,9 +4186,9 @@ gtk_combo_box_set_active_internal (GtkComboBox *combo_box, * gtk_combo_box_get_active_iter: * @combo_box: A #GtkComboBox * @iter: (out): The uninitialized #GtkTreeIter - * + * * Sets @iter to point to the current active item, if it exists. - * + * * Return value: %TRUE, if @iter was set * * Since: 2.4 @@ -5331,10 +4216,10 @@ gtk_combo_box_get_active_iter (GtkComboBox *combo_box, * gtk_combo_box_set_active_iter: * @combo_box: A #GtkComboBox * @iter: (allow-none): The #GtkTreeIter, or %NULL - * + * * Sets the current active item to be the one referenced by @iter, or * unsets the active item if @iter is %NULL. - * + * * Since: 2.4 */ void @@ -5360,8 +4245,8 @@ gtk_combo_box_set_active_iter (GtkComboBox *combo_box, * Sets the model used by @combo_box to be @model. Will unset a previously set * model (if applicable). If model is %NULL, then it will unset the model. * - * Note that this function does not clear the cell renderers, you have to - * call gtk_cell_layout_clear() yourself if you need to set up different + * Note that this function does not clear the cell renderers, you have to + * call gtk_cell_layout_clear() yourself if you need to set up different * cell renderers for the new model. * * Since: 2.4 @@ -5375,7 +4260,7 @@ gtk_combo_box_set_model (GtkComboBox *combo_box, if (model == combo_box->priv->model) return; - + gtk_combo_box_unset_model (combo_box); if (model == NULL) @@ -5386,21 +4271,21 @@ gtk_combo_box_set_model (GtkComboBox *combo_box, combo_box->priv->inserted_id = g_signal_connect (combo_box->priv->model, "row-inserted", - G_CALLBACK (gtk_combo_box_model_row_inserted), - combo_box); + G_CALLBACK (gtk_combo_box_model_row_inserted), + combo_box); combo_box->priv->deleted_id = g_signal_connect (combo_box->priv->model, "row-deleted", - G_CALLBACK (gtk_combo_box_model_row_deleted), - combo_box); + G_CALLBACK (gtk_combo_box_model_row_deleted), + combo_box); combo_box->priv->reordered_id = g_signal_connect (combo_box->priv->model, "rows-reordered", - G_CALLBACK (gtk_combo_box_model_rows_reordered), - combo_box); + G_CALLBACK (gtk_combo_box_model_rows_reordered), + combo_box); combo_box->priv->changed_id = g_signal_connect (combo_box->priv->model, "row-changed", - G_CALLBACK (gtk_combo_box_model_row_changed), - combo_box); - + G_CALLBACK (gtk_combo_box_model_row_changed), + combo_box); + if (combo_box->priv->tree_view) { /* list mode */ @@ -5408,12 +4293,12 @@ gtk_combo_box_set_model (GtkComboBox *combo_box, combo_box->priv->model); gtk_combo_box_list_popup_resize (combo_box); } - else + + if (GTK_IS_TREE_MENU (combo_box->priv->popup_widget)) { /* menu mode */ - if (combo_box->priv->popup_widget) - gtk_combo_box_menu_fill (combo_box); - + _gtk_tree_menu_set_model (GTK_TREE_MENU (combo_box->priv->popup_widget), + combo_box->priv->model); } if (combo_box->priv->cell_view) @@ -5476,9 +4361,9 @@ gtk_combo_box_real_move_active (GtkComboBox *combo_box, case GTK_SCROLL_STEP_LEFT: if (active_iter) { - found = tree_prev (combo_box, combo_box->priv->model, - &iter, &new_iter, FALSE); - break; + found = tree_prev (combo_box, combo_box->priv->model, + &iter, &new_iter, FALSE); + break; } /* else fall through */ @@ -5494,8 +4379,8 @@ gtk_combo_box_real_move_active (GtkComboBox *combo_box, case GTK_SCROLL_STEP_RIGHT: if (active_iter) { - found = tree_next (combo_box, combo_box->priv->model, - &iter, &new_iter, FALSE); + found = tree_next (combo_box, combo_box->priv->model, + &iter, &new_iter, FALSE); break; } /* else fall through */ @@ -5538,7 +4423,7 @@ gtk_combo_box_real_move_active (GtkComboBox *combo_box, static gboolean gtk_combo_box_mnemonic_activate (GtkWidget *widget, - gboolean group_cycling) + gboolean group_cycling) { GtkComboBox *combo_box = GTK_COMBO_BOX (widget); @@ -5548,7 +4433,7 @@ gtk_combo_box_mnemonic_activate (GtkWidget *widget, child = gtk_bin_get_child (GTK_BIN (combo_box)); if (child) - gtk_widget_grab_focus (child); + gtk_widget_grab_focus (child); } else gtk_widget_grab_focus (combo_box->priv->button); @@ -5567,7 +4452,7 @@ gtk_combo_box_grab_focus (GtkWidget *widget) child = gtk_bin_get_child (GTK_BIN (combo_box)); if (child) - gtk_widget_grab_focus (child); + gtk_widget_grab_focus (child); } else gtk_widget_grab_focus (combo_box->priv->button); @@ -5627,35 +4512,36 @@ gtk_combo_box_entry_active_changed (GtkComboBox *combo_box, GtkEntry *entry = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_box))); if (entry) - { + { GValue value = {0,}; - g_signal_handlers_block_by_func (entry, - gtk_combo_box_entry_contents_changed, - combo_box); + g_signal_handlers_block_by_func (entry, + gtk_combo_box_entry_contents_changed, + combo_box); - model = gtk_combo_box_get_model (combo_box); + model = gtk_combo_box_get_model (combo_box); gtk_tree_model_get_value (model, &iter, priv->text_column, &value); g_object_set_property (G_OBJECT (entry), "text", &value); g_value_unset (&value); - g_signal_handlers_unblock_by_func (entry, - gtk_combo_box_entry_contents_changed, - combo_box); - } + g_signal_handlers_unblock_by_func (entry, + gtk_combo_box_entry_contents_changed, + combo_box); + } } } static GObject * gtk_combo_box_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) + guint n_construct_properties, + GObjectConstructParam *construct_properties) { GObject *object; GtkComboBox *combo_box; GtkComboBoxPrivate *priv; + GtkStyleContext *context; object = G_OBJECT_CLASS (gtk_combo_box_parent_class)->constructor (type, n_construct_properties, construct_properties); @@ -5663,6 +4549,25 @@ gtk_combo_box_constructor (GType type, combo_box = GTK_COMBO_BOX (object); priv = combo_box->priv; + if (!priv->area) + { + GtkCellArea *area = gtk_cell_area_box_new (); + + priv->area = g_object_ref_sink (area); + } + + priv->cell_view = gtk_cell_view_new_with_context (priv->area, NULL); + gtk_cell_view_set_fit_model (GTK_CELL_VIEW (priv->cell_view), TRUE); + gtk_cell_view_set_model (GTK_CELL_VIEW (priv->cell_view), priv->model); + gtk_widget_set_parent (priv->cell_view, GTK_WIDGET (combo_box)); + _gtk_bin_set_child (GTK_BIN (combo_box), priv->cell_view); + gtk_widget_show (priv->cell_view); + + gtk_combo_box_check_appearance (combo_box); + + context = gtk_widget_get_style_context (GTK_WIDGET (combo_box)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); + if (priv->has_entry) { GtkWidget *entry; @@ -5673,12 +4578,12 @@ gtk_combo_box_constructor (GType type, priv->text_renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), - priv->text_renderer, TRUE); + priv->text_renderer, TRUE); gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), -1); g_signal_connect (combo_box, "changed", - G_CALLBACK (gtk_combo_box_entry_active_changed), NULL); + G_CALLBACK (gtk_combo_box_entry_active_changed), NULL); } return object; @@ -5697,6 +4602,23 @@ gtk_combo_box_dispose(GObject* object) combo_box->priv->popup_widget = NULL; } + if (combo_box->priv->area) + { + g_object_unref (combo_box->priv->area); + combo_box->priv->area = NULL; + } + + if (GTK_IS_TREE_VIEW (combo_box->priv->tree_view)) + gtk_combo_box_list_destroy (combo_box); + + if (combo_box->priv->popup_window) + { + gtk_widget_destroy (combo_box->priv->popup_window); + combo_box->priv->popup_window = NULL; + } + + gtk_combo_box_unset_model (combo_box); + G_OBJECT_CLASS (gtk_combo_box_parent_class)->dispose (object); } @@ -5704,46 +4626,16 @@ static void gtk_combo_box_finalize (GObject *object) { GtkComboBox *combo_box = GTK_COMBO_BOX (object); - GSList *i; - - if (GTK_IS_TREE_VIEW (combo_box->priv->tree_view)) - gtk_combo_box_list_destroy (combo_box); - if (combo_box->priv->popup_window) - gtk_widget_destroy (combo_box->priv->popup_window); + g_free (combo_box->priv->tearoff_title); - gtk_combo_box_unset_model (combo_box); - - for (i = combo_box->priv->cells; i; i = i->next) - { - ComboCellInfo *info = (ComboCellInfo *)i->data; - GSList *list = info->attributes; - - if (info->destroy) - info->destroy (info->func_data); - - while (list && list->next) - { - g_free (list->data); - list = list->next->next; - } - g_slist_free (info->attributes); - - g_object_unref (info->cell); - g_slice_free (ComboCellInfo, info); - } - g_slist_free (combo_box->priv->cells); - - g_free (combo_box->priv->tearoff_title); - - G_OBJECT_CLASS (gtk_combo_box_parent_class)->finalize (object); + G_OBJECT_CLASS (gtk_combo_box_parent_class)->finalize (object); } - static gboolean gtk_cell_editable_key_press (GtkWidget *widget, - GdkEventKey *event, - gpointer data) + GdkEventKey *event, + gpointer data) { GtkComboBox *combo_box = GTK_COMBO_BOX (data); @@ -5754,7 +4646,7 @@ gtk_cell_editable_key_press (GtkWidget *widget, NULL); gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (combo_box)); gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (combo_box)); - + return TRUE; } else if (event->keyval == GDK_KEY_Return || @@ -5763,7 +4655,7 @@ gtk_cell_editable_key_press (GtkWidget *widget, { gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (combo_box)); gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (combo_box)); - + return TRUE; } @@ -5776,7 +4668,7 @@ popdown_idle (gpointer data) GtkComboBox *combo_box; combo_box = GTK_COMBO_BOX (data); - + gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (combo_box)); gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (combo_box)); @@ -5787,7 +4679,7 @@ popdown_idle (gpointer data) static void popdown_handler (GtkWidget *widget, - gpointer data) + gpointer data) { gdk_threads_add_idle (popdown_idle, g_object_ref (data)); } @@ -5802,9 +4694,9 @@ popup_idle (gpointer data) if (GTK_IS_MENU (combo_box->priv->popup_widget) && combo_box->priv->cell_view) g_signal_connect_object (combo_box->priv->popup_widget, - "unmap", G_CALLBACK (popdown_handler), - combo_box, 0); - + "unmap", G_CALLBACK (popdown_handler), + combo_box, 0); + /* we unset this if a menu item is activated */ g_object_set (combo_box, "editing-canceled", TRUE, @@ -5820,7 +4712,7 @@ popup_idle (gpointer data) static void gtk_combo_box_start_editing (GtkCellEditable *cell_editable, - GdkEvent *event) + GdkEvent *event) { GtkComboBox *combo_box = GTK_COMBO_BOX (cell_editable); GtkWidget *child; @@ -5830,8 +4722,8 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable, if (combo_box->priv->cell_view) { g_signal_connect_object (combo_box->priv->button, "key-press-event", - G_CALLBACK (gtk_cell_editable_key_press), - cell_editable, 0); + G_CALLBACK (gtk_cell_editable_key_press), + cell_editable, 0); gtk_widget_grab_focus (combo_box->priv->button); } @@ -5840,17 +4732,17 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable, child = gtk_bin_get_child (GTK_BIN (combo_box)); g_signal_connect_object (child, "key-press-event", - G_CALLBACK (gtk_cell_editable_key_press), - cell_editable, 0); + G_CALLBACK (gtk_cell_editable_key_press), + cell_editable, 0); gtk_widget_grab_focus (child); gtk_widget_set_can_focus (combo_box->priv->button, FALSE); } - /* we do the immediate popup only for the optionmenu-like - * appearance - */ - if (combo_box->priv->is_cell_renderer && + /* we do the immediate popup only for the optionmenu-like + * appearance + */ + if (combo_box->priv->is_cell_renderer && combo_box->priv->cell_view && !combo_box->priv->tree_view) { if (event && event->type == GDK_BUTTON_PRESS) @@ -5861,7 +4753,7 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable, combo_box->priv->activate_time = event_button->time; } - combo_box->priv->popup_idle_id = + combo_box->priv->popup_idle_id = gdk_threads_add_idle (popup_idle, combo_box); } } @@ -5870,9 +4762,9 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable, /** * gtk_combo_box_get_add_tearoffs: * @combo_box: a #GtkComboBox - * + * * Gets the current value of the :add-tearoffs property. - * + * * Return value: the current value of the :add-tearoffs property. */ gboolean @@ -5885,17 +4777,17 @@ gtk_combo_box_get_add_tearoffs (GtkComboBox *combo_box) /** * gtk_combo_box_set_add_tearoffs: - * @combo_box: a #GtkComboBox + * @combo_box: a #GtkComboBox * @add_tearoffs: %TRUE to add tearoff menu items - * - * Sets whether the popup menu should have a tearoff + * + * Sets whether the popup menu should have a tearoff * menu item. * * Since: 2.6 */ void gtk_combo_box_set_add_tearoffs (GtkComboBox *combo_box, - gboolean add_tearoffs) + gboolean add_tearoffs) { g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); @@ -5905,7 +4797,11 @@ gtk_combo_box_set_add_tearoffs (GtkComboBox *combo_box, { combo_box->priv->add_tearoffs = add_tearoffs; gtk_combo_box_check_appearance (combo_box); - gtk_combo_box_relayout (combo_box); + + if (GTK_IS_TREE_MENU (combo_box->priv->popup_widget)) + _gtk_tree_menu_set_tearoff (GTK_TREE_MENU (combo_box->priv->popup_widget), + combo_box->priv->add_tearoffs); + g_object_notify (G_OBJECT (combo_box), "add-tearoffs"); } } @@ -5926,7 +4822,7 @@ G_CONST_RETURN gchar* gtk_combo_box_get_title (GtkComboBox *combo_box) { g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL); - + return combo_box->priv->tearoff_title; } @@ -5934,25 +4830,25 @@ static void gtk_combo_box_update_title (GtkComboBox *combo_box) { gtk_combo_box_check_appearance (combo_box); - - if (combo_box->priv->popup_widget && + + if (combo_box->priv->popup_widget && GTK_IS_MENU (combo_box->priv->popup_widget)) - gtk_menu_set_title (GTK_MENU (combo_box->priv->popup_widget), - combo_box->priv->tearoff_title); + gtk_menu_set_title (GTK_MENU (combo_box->priv->popup_widget), + combo_box->priv->tearoff_title); } /** * gtk_combo_box_set_title: - * @combo_box: a #GtkComboBox + * @combo_box: a #GtkComboBox * @title: a title for the menu in tearoff mode - * + * * Sets the menu's title in tearoff mode. * * Since: 2.10 */ void gtk_combo_box_set_title (GtkComboBox *combo_box, - const gchar *title) + const gchar *title) { GtkComboBoxPrivate *priv; @@ -5960,8 +4856,8 @@ gtk_combo_box_set_title (GtkComboBox *combo_box, priv = combo_box->priv; - if (strcmp (title ? title : "", - priv->tearoff_title ? priv->tearoff_title : "") != 0) + if (strcmp (title ? title : "", + priv->tearoff_title ? priv->tearoff_title : "") != 0) { g_free (priv->tearoff_title); priv->tearoff_title = g_strdup (title); @@ -6050,14 +4946,14 @@ gtk_combo_box_get_popup_accessible (GtkComboBox *combo_box) /** * gtk_combo_box_get_row_separator_func: * @combo_box: a #GtkComboBox - * + * * Returns the current row separator function. - * + * * Return value: the current row separator function. * * Since: 2.6 */ -GtkTreeViewRowSeparatorFunc +GtkTreeViewRowSeparatorFunc gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box) { g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), NULL); @@ -6071,7 +4967,7 @@ gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box) * @func: a #GtkTreeViewRowSeparatorFunc * @data: (allow-none): user data to pass to @func, or %NULL * @destroy: (allow-none): destroy notifier for @data, or %NULL - * + * * Sets the row separator function, which is used to determine * whether a row should be drawn as a separator. If the row separator * function is %NULL, no separators are drawn. This is the default value. @@ -6080,9 +4976,9 @@ gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box) */ void gtk_combo_box_set_row_separator_func (GtkComboBox *combo_box, - GtkTreeViewRowSeparatorFunc func, - gpointer data, - GDestroyNotify destroy) + GtkTreeViewRowSeparatorFunc func, + gpointer data, + GDestroyNotify destroy) { g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); @@ -6093,11 +4989,18 @@ gtk_combo_box_set_row_separator_func (GtkComboBox *combo_box, combo_box->priv->row_separator_data = data; combo_box->priv->row_separator_destroy = destroy; + /* Provoke the underlying treeview/menu to rebuild themselves with the new separator func */ if (combo_box->priv->tree_view) - gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (combo_box->priv->tree_view), - func, data, NULL); + { + gtk_tree_view_set_model (GTK_TREE_VIEW (combo_box->priv->tree_view), NULL); + gtk_tree_view_set_model (GTK_TREE_VIEW (combo_box->priv->tree_view), combo_box->priv->model); + } - gtk_combo_box_relayout (combo_box); + if (GTK_IS_TREE_MENU (combo_box->priv->popup_widget)) + { + _gtk_tree_menu_set_model (GTK_TREE_MENU (combo_box->priv->popup_widget), NULL); + _gtk_tree_menu_set_model (GTK_TREE_MENU (combo_box->priv->popup_widget), combo_box->priv->model); + } gtk_widget_queue_draw (GTK_WIDGET (combo_box)); } @@ -6187,7 +5090,7 @@ gtk_combo_box_get_has_entry (GtkComboBox *combo_box) */ void gtk_combo_box_set_entry_text_column (GtkComboBox *combo_box, - gint text_column) + gint text_column) { GtkComboBoxPrivate *priv = combo_box->priv; GtkTreeModel *model; @@ -6230,22 +5133,22 @@ gtk_combo_box_get_entry_text_column (GtkComboBox *combo_box) /** * gtk_combo_box_set_focus_on_click: * @combo: a #GtkComboBox - * @focus_on_click: whether the combo box grabs focus when clicked + * @focus_on_click: whether the combo box grabs focus when clicked * with the mouse - * - * Sets whether the combo box will grab focus when it is clicked with - * the mouse. Making mouse clicks not grab focus is useful in places - * like toolbars where you don't want the keyboard focus removed from + * + * Sets whether the combo box will grab focus when it is clicked with + * the mouse. Making mouse clicks not grab focus is useful in places + * like toolbars where you don't want the keyboard focus removed from * the main area of the application. * * Since: 2.6 */ void gtk_combo_box_set_focus_on_click (GtkComboBox *combo_box, - gboolean focus_on_click) + gboolean focus_on_click) { g_return_if_fail (GTK_IS_COMBO_BOX (combo_box)); - + focus_on_click = focus_on_click != FALSE; if (combo_box->priv->focus_on_click != focus_on_click) @@ -6253,9 +5156,9 @@ gtk_combo_box_set_focus_on_click (GtkComboBox *combo_box, combo_box->priv->focus_on_click = focus_on_click; if (combo_box->priv->button) - gtk_button_set_focus_on_click (GTK_BUTTON (combo_box->priv->button), - focus_on_click); - + gtk_button_set_focus_on_click (GTK_BUTTON (combo_box->priv->button), + focus_on_click); + g_object_notify (G_OBJECT (combo_box), "focus-on-click"); } } @@ -6263,11 +5166,11 @@ gtk_combo_box_set_focus_on_click (GtkComboBox *combo_box, /** * gtk_combo_box_get_focus_on_click: * @combo: a #GtkComboBox - * - * Returns whether the combo box grabs focus when it is clicked + * + * Returns whether the combo box grabs focus when it is clicked * with the mouse. See gtk_combo_box_set_focus_on_click(). * - * Return value: %TRUE if the combo box grabs focus when it is + * Return value: %TRUE if the combo box grabs focus when it is * clicked with the mouse. * * Since: 2.6 @@ -6283,39 +5186,35 @@ gtk_combo_box_get_focus_on_click (GtkComboBox *combo_box) static gboolean gtk_combo_box_buildable_custom_tag_start (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - GMarkupParser *parser, - gpointer *data) + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + GMarkupParser *parser, + gpointer *data) { if (parent_buildable_iface->custom_tag_start (buildable, builder, child, - tagname, parser, data)) + tagname, parser, data)) return TRUE; return _gtk_cell_layout_buildable_custom_tag_start (buildable, builder, child, - tagname, parser, data); + tagname, parser, data); } static void gtk_combo_box_buildable_custom_tag_end (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - gpointer *data) + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data) { - if (strcmp (tagname, "attributes") == 0) - _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, - data); - else - parent_buildable_iface->custom_tag_end (buildable, builder, child, tagname, - data); + if (!_gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, data)) + parent_buildable_iface->custom_tag_end (buildable, builder, child, tagname, data); } static GObject * gtk_combo_box_buildable_get_internal_child (GtkBuildable *buildable, - GtkBuilder *builder, - const gchar *childname) + GtkBuilder *builder, + const gchar *childname) { GtkComboBox *combo_box = GTK_COMBO_BOX (buildable); @@ -6326,90 +5225,6 @@ gtk_combo_box_buildable_get_internal_child (GtkBuildable *buildable, } static void -gtk_combo_box_remeasure (GtkComboBox *combo_box) -{ - GtkComboBoxPrivate *priv = combo_box->priv; - GtkTreeIter iter; - GtkTreePath *path; - - if (!priv->model || - !gtk_tree_model_get_iter_first (priv->model, &iter)) - return; - - priv->minimum_width = priv->natural_width = 0; - - path = gtk_tree_path_new_from_indices (0, -1); - - do - { - gint row_min = 0, row_nat = 0; - - if (priv->cell_view) - gtk_cell_view_get_desired_width_of_row (GTK_CELL_VIEW (priv->cell_view), - path, &row_min, &row_nat); - - priv->minimum_width = MAX (priv->minimum_width, row_min); - priv->natural_width = MAX (priv->natural_width, row_nat); - - gtk_tree_path_next (path); - } - while (gtk_tree_model_iter_next (priv->model, &iter)); - - gtk_tree_path_free (path); -} - - -static void -gtk_combo_box_measure_height_for_width (GtkComboBox *combo_box, - gint avail_width, - gint *min_height, - gint *nat_height) -{ - GtkWidget *child; - GtkComboBoxPrivate *priv = combo_box->priv; - GtkTreeIter iter; - GtkTreePath *path; - gint child_min, child_nat; - - child = gtk_bin_get_child (GTK_BIN (combo_box)); - - gtk_widget_get_preferred_height_for_width (child, avail_width, - &child_min, &child_nat); - - if (!priv->model || - !gtk_tree_model_get_iter_first (priv->model, &iter)) - goto out; - - path = gtk_tree_path_new_from_indices (0, -1); - - do - { - gint row_min = 0, row_nat = 0; - - if (priv->cell_view) - gtk_cell_view_get_desired_height_for_width_of_row (GTK_CELL_VIEW (priv->cell_view), - path, avail_width, - &row_min, &row_nat); - - child_min = MAX (child_min, row_min); - child_nat = MAX (child_nat, row_nat); - - gtk_tree_path_next (path); - } - while (gtk_tree_model_iter_next (priv->model, &iter)); - - gtk_tree_path_free (path); - - out: - - if (min_height) - *min_height = child_min; - if (nat_height) - *nat_height = child_nat; -} - - -static void gtk_combo_box_get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size) @@ -6422,26 +5237,22 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget, PangoFontMetrics *metrics; PangoFontDescription *font_desc; GtkWidget *child; - gint minimum_width, natural_width; + gint minimum_width = 0, natural_width = 0; gint child_min, child_nat; GtkStyleContext *style_context; GtkStateFlags state; GtkBorder *border; child = gtk_bin_get_child (GTK_BIN (widget)); - + /* common */ gtk_widget_get_preferred_width (child, &child_min, &child_nat); - gtk_combo_box_remeasure (combo_box); - - child_min = MAX (child_min, priv->minimum_width); - child_nat = MAX (child_nat, priv->natural_width); gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "arrow-size", &arrow_size, - NULL); + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "arrow-size", &arrow_size, + NULL); style_context = gtk_widget_get_style_context (widget); state = gtk_widget_get_state_flags (widget); @@ -6453,9 +5264,9 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget, context = gtk_widget_get_pango_context (GTK_WIDGET (widget)); metrics = pango_context_get_metrics (context, font_desc, - pango_context_get_language (context)); + pango_context_get_language (context)); font_size = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) + - pango_font_metrics_get_descent (metrics)); + pango_font_metrics_get_descent (metrics)); pango_font_metrics_unref (metrics); pango_font_description_free (font_desc); @@ -6466,20 +5277,19 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget, if (!priv->tree_view) { /* menu mode */ - if (priv->cell_view) { gint sep_width, arrow_width; gint border_width, xpad; GtkBorder button_border; - border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box)); + border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box)); get_widget_border (priv->button, &button_border); gtk_widget_get_preferred_width (priv->separator, &sep_width, NULL); gtk_widget_get_preferred_width (priv->arrow, &arrow_width, NULL); - xpad = 2 * (border_width + focus_width + focus_pad) + + xpad = 2 * (border_width + focus_width + focus_pad) + button_border.left + button_border.right; minimum_width = child_min + sep_width + arrow_width + xpad; @@ -6489,7 +5299,7 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget, { gint but_width, but_nat_width; - gtk_widget_get_preferred_width (priv->button, + gtk_widget_get_preferred_width (priv->button, &but_width, &but_nat_width); minimum_width = child_min + but_width; @@ -6507,25 +5317,25 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget, minimum_width += 2 * focus_width; natural_width += 2 * focus_width; - + if (priv->cell_view_frame) { - if (priv->has_frame) - { - gint border_width, xpad; + if (priv->has_frame) + { + gint border_width, xpad; GtkBorder frame_border; border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame)); get_widget_border (priv->cell_view_frame, &frame_border); xpad = (2 * border_width) + frame_border.left + frame_border.right; - minimum_width += xpad; - natural_width += xpad; - } + minimum_width += xpad; + natural_width += xpad; + } } /* the button */ - gtk_widget_get_preferred_width (priv->button, + gtk_widget_get_preferred_width (priv->button, &button_width, &button_nat_width); minimum_width += button_width; @@ -6547,10 +5357,10 @@ static void gtk_combo_box_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) -{ +{ gint min_width; - /* Combo box is height-for-width only + /* Combo box is height-for-width only * (so we always just reserve enough height for the minimum width) */ GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, &min_width, NULL); GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, min_width, minimum_size, natural_size); @@ -6562,7 +5372,7 @@ gtk_combo_box_get_preferred_width_for_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) { - /* Combo box is height-for-width only + /* Combo box is height-for-width only * (so we assume we always reserved enough height for the minimum width) */ GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, minimum_size, natural_size); } @@ -6577,14 +5387,17 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget, GtkComboBox *combo_box = GTK_COMBO_BOX (widget); GtkComboBoxPrivate *priv = combo_box->priv; gint focus_width, focus_pad; - gint min_height, nat_height; + gint min_height = 0, nat_height = 0; gint size; + GtkWidget *child; GtkBorder border; gtk_widget_style_get (GTK_WIDGET (widget), - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - NULL); + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + NULL); + + child = gtk_bin_get_child (GTK_BIN (widget)); get_widget_border (widget, &border); size = avail_size - border.left; @@ -6594,52 +5407,56 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget, /* menu mode */ if (priv->cell_view) { - /* calculate x/y padding and separator/arrow size */ + /* calculate x/y padding and separator/arrow size */ gint sep_width, arrow_width, sep_height, arrow_height; gint border_width, xpad, ypad; GtkBorder button_border; - border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box)); + border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box)); get_widget_border (priv->button, &button_border); gtk_widget_get_preferred_width (priv->separator, &sep_width, NULL); gtk_widget_get_preferred_width (priv->arrow, &arrow_width, NULL); - gtk_widget_get_preferred_height_for_width (priv->separator, + gtk_widget_get_preferred_height_for_width (priv->separator, sep_width, &sep_height, NULL); - gtk_widget_get_preferred_height_for_width (priv->arrow, + gtk_widget_get_preferred_height_for_width (priv->arrow, arrow_width, &arrow_height, NULL); - xpad = 2 * (border_width + focus_width + focus_pad) + + xpad = 2 * (border_width + focus_width + focus_pad) + button_border.left + button_border.right; - ypad = 2 * (border_width + focus_width + focus_pad) + + ypad = 2 * (border_width + focus_width + focus_pad) + button_border.top + button_border.bottom; - size -= sep_width + arrow_width + xpad; + size -= sep_width + arrow_width + xpad; - gtk_combo_box_measure_height_for_width (combo_box, size, &min_height, &nat_height); + /* Get height-for-width of the child widget, usually a GtkCellArea calculating + * and fitting the whole treemodel */ + gtk_widget_get_preferred_height_for_width (child, size, &min_height, &nat_height); - arrow_height = MAX (arrow_height, sep_height); - min_height = MAX (min_height, arrow_height); - nat_height = MAX (nat_height, arrow_height); + arrow_height = MAX (arrow_height, sep_height); + min_height = MAX (min_height, arrow_height); + nat_height = MAX (nat_height, arrow_height); - min_height += ypad; - nat_height += ypad; + min_height += ypad; + nat_height += ypad; } else { - /* there is a custom child widget inside (no priv->cell_view) */ + /* there is a custom child widget inside (no priv->cell_view) */ gint but_width, but_height; gtk_widget_get_preferred_width (priv->button, &but_width, NULL); - gtk_widget_get_preferred_height_for_width (priv->button, + gtk_widget_get_preferred_height_for_width (priv->button, but_width, &but_height, NULL); - size -= but_width; + size -= but_width; - gtk_combo_box_measure_height_for_width (combo_box, size, &min_height, &nat_height); - - min_height = MAX (min_height, but_height); - nat_height = MAX (nat_height, but_height); + /* Get height-for-width of the child widget, usually a GtkCellArea calculating + * and fitting the whole treemodel */ + gtk_widget_get_preferred_height_for_width (child, size, &min_height, &nat_height); + + min_height = MAX (min_height, but_height); + nat_height = MAX (nat_height, but_height); } } else @@ -6649,26 +5466,28 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget, gint xpad = 0, ypad = 0; gtk_widget_get_preferred_width (priv->button, &but_width, NULL); - gtk_widget_get_preferred_height_for_width (priv->button, + gtk_widget_get_preferred_height_for_width (priv->button, but_width, &but_height, NULL); - + if (priv->cell_view_frame && priv->has_frame) - { + { GtkBorder frame_border; - gint border_width; + gint border_width; border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame)); get_widget_border (GTK_WIDGET (priv->cell_view_frame), &frame_border); - xpad = (2 * border_width) + border.left + frame_border.right; - ypad = (2 * border_width) + border.top + frame_border.bottom; - } + xpad = (2 * border_width) + border.left + frame_border.right; + ypad = (2 * border_width) + border.top + frame_border.bottom; + } size -= but_width; size -= 2 * focus_width; size -= xpad; - gtk_combo_box_measure_height_for_width (combo_box, size, &min_height, &nat_height); + /* Get height-for-width of the child widget, usually a GtkCellArea calculating + * and fitting the whole treemodel */ + gtk_widget_get_preferred_height_for_width (child, size, &min_height, &nat_height); min_height = MAX (min_height, but_height); nat_height = MAX (nat_height, but_height); diff --git a/gtk/gtkcombobox.h b/gtk/gtkcombobox.h index 1c674b9c06..124a9bfb61 100644 --- a/gtk/gtkcombobox.h +++ b/gtk/gtkcombobox.h @@ -67,6 +67,8 @@ struct _GtkComboBoxClass /* construction */ GType gtk_combo_box_get_type (void) G_GNUC_CONST; GtkWidget *gtk_combo_box_new (void); +GtkWidget *gtk_combo_box_new_with_area (GtkCellArea *area); +GtkWidget *gtk_combo_box_new_with_area_and_entry (GtkCellArea *area); GtkWidget *gtk_combo_box_new_with_entry (void); GtkWidget *gtk_combo_box_new_with_model (GtkTreeModel *model); GtkWidget *gtk_combo_box_new_with_model_and_entry (GtkTreeModel *model); @@ -84,15 +86,15 @@ void gtk_combo_box_set_column_span_column (GtkComboBox *combo_box, gboolean gtk_combo_box_get_add_tearoffs (GtkComboBox *combo_box); void gtk_combo_box_set_add_tearoffs (GtkComboBox *combo_box, - gboolean add_tearoffs); + gboolean add_tearoffs); G_CONST_RETURN gchar *gtk_combo_box_get_title (GtkComboBox *combo_box); void gtk_combo_box_set_title (GtkComboBox *combo_box, - const gchar *title); + const gchar *title); gboolean gtk_combo_box_get_focus_on_click (GtkComboBox *combo); void gtk_combo_box_set_focus_on_click (GtkComboBox *combo, - gboolean focus_on_click); + gboolean focus_on_click); /* get/set active item */ gint gtk_combo_box_get_active (GtkComboBox *combo_box); @@ -110,21 +112,21 @@ GtkTreeModel *gtk_combo_box_get_model (GtkComboBox *combo_box); GtkTreeViewRowSeparatorFunc gtk_combo_box_get_row_separator_func (GtkComboBox *combo_box); void gtk_combo_box_set_row_separator_func (GtkComboBox *combo_box, - GtkTreeViewRowSeparatorFunc func, - gpointer data, - GDestroyNotify destroy); + GtkTreeViewRowSeparatorFunc func, + gpointer data, + GDestroyNotify destroy); void gtk_combo_box_set_button_sensitivity (GtkComboBox *combo_box, - GtkSensitivityType sensitivity); + GtkSensitivityType sensitivity); GtkSensitivityType gtk_combo_box_get_button_sensitivity (GtkComboBox *combo_box); gboolean gtk_combo_box_get_has_entry (GtkComboBox *combo_box); void gtk_combo_box_set_entry_text_column (GtkComboBox *combo_box, - gint text_column); + gint text_column); gint gtk_combo_box_get_entry_text_column (GtkComboBox *combo_box); void gtk_combo_box_set_popup_fixed_width (GtkComboBox *combo_box, - gboolean fixed); + gboolean fixed); gboolean gtk_combo_box_get_popup_fixed_width (GtkComboBox *combo_box); /* programmatic control */ diff --git a/gtk/gtkcomboboxtext.c b/gtk/gtkcomboboxtext.c index c7b82d1063..60da361f9b 100644 --- a/gtk/gtkcomboboxtext.c +++ b/gtk/gtkcomboboxtext.c @@ -22,6 +22,10 @@ #include "gtkcombobox.h" #include "gtkcellrenderertext.h" #include "gtkcelllayout.h" +#include "gtkbuildable.h" +#include "gtkbuilderprivate.h" + +#include /** * SECTION:gtkcomboboxtext @@ -39,9 +43,56 @@ * gtk_combo_box_text_append_text(), gtk_combo_box_text_insert_text() * or gtk_combo_box_text_prepend_text() and remove options with * gtk_combo_box_text_remove(). + * + * If the GtkComboBoxText contains an entry (via the 'has-entry' property), + * its contents can be retrieved using gtk_combo_box_text_get_active_text(). + * The entry itself can be accessed by calling gtk_bin_get_child() on the + * combo box. + * + * + * GtkComboBoxText as GtkBuildable + * + * The GtkComboBoxText implementation of the GtkBuildable interface + * supports adding items directly using the <items> element + * and specifying <item> elements for each item. Each <item> + * element supports the regular translation attributes "translatable", + * "context" and "comments". + * + * + * A UI definition fragment specifying GtkComboBoxText items + * + * + * Factory + * Home + * Subway + * + * + * ]]> + * + * + * */ -G_DEFINE_TYPE (GtkComboBoxText, gtk_combo_box_text, GTK_TYPE_COMBO_BOX); +static void gtk_combo_box_text_buildable_interface_init (GtkBuildableIface *iface); +static gboolean gtk_combo_box_text_buildable_custom_tag_start (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + GMarkupParser *parser, + gpointer *data); + +static void gtk_combo_box_text_buildable_custom_finished (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer user_data); + +static GtkBuildableIface *buildable_parent_iface = NULL; + +G_DEFINE_TYPE_WITH_CODE (GtkComboBoxText, gtk_combo_box_text, GTK_TYPE_COMBO_BOX, + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_combo_box_text_buildable_interface_init)); static GObject * gtk_combo_box_text_constructor (GType type, @@ -86,6 +137,174 @@ gtk_combo_box_text_class_init (GtkComboBoxTextClass *klass) object_class->constructor = gtk_combo_box_text_constructor; } +static void +gtk_combo_box_text_buildable_interface_init (GtkBuildableIface *iface) +{ + buildable_parent_iface = g_type_interface_peek_parent (iface); + + iface->custom_tag_start = gtk_combo_box_text_buildable_custom_tag_start; + iface->custom_finished = gtk_combo_box_text_buildable_custom_finished; +} + +typedef struct { + GtkBuilder *builder; + GObject *object; + const gchar *domain; + + gchar *context; + gchar *string; + guint translatable : 1; + + guint is_text : 1; +} ItemParserData; + +static void +item_start_element (GMarkupParseContext *context, + const gchar *element_name, + const gchar **names, + const gchar **values, + gpointer user_data, + GError **error) +{ + ItemParserData *data = (ItemParserData*)user_data; + guint i; + + if (strcmp (element_name, "item") == 0) + { + data->is_text = TRUE; + + for (i = 0; names[i]; i++) + { + if (strcmp (names[i], "translatable") == 0) + { + gboolean bval; + + if (!_gtk_builder_boolean_from_string (values[i], &bval, + error)) + return; + + data->translatable = bval; + } + else if (strcmp (names[i], "comments") == 0) + { + /* do nothing, comments are for translators */ + } + else if (strcmp (names[i], "context") == 0) + data->context = g_strdup (values[i]); + else + g_warning ("Unknown custom combo box item attribute: %s", names[i]); + } + } +} + +static void +item_text (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) +{ + ItemParserData *data = (ItemParserData*)user_data; + gchar *string; + + if (!data->is_text) + return; + + string = g_strndup (text, text_len); + + if (data->translatable && text_len) + { + gchar *translated; + + /* FIXME: This will not use the domain set in the .ui file, + * since the parser is not telling the builder about the domain. + * However, it will work for gtk_builder_set_translation_domain() calls. + */ + translated = _gtk_builder_parser_translate (data->domain, + data->context, + string); + g_free (string); + string = translated; + } + + data->string = string; +} + +static void +item_end_element (GMarkupParseContext *context, + const gchar *element_name, + gpointer user_data, + GError **error) +{ + ItemParserData *data = (ItemParserData*)user_data; + + /* Append the translated strings */ + if (data->string) + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (data->object), data->string); + + data->translatable = FALSE; + g_free (data->context); + g_free (data->string); + data->context = NULL; + data->string = NULL; + data->is_text = FALSE; +} + +static const GMarkupParser item_parser = + { + item_start_element, + item_end_element, + item_text + }; + +static gboolean +gtk_combo_box_text_buildable_custom_tag_start (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + GMarkupParser *parser, + gpointer *data) +{ + if (buildable_parent_iface->custom_tag_start (buildable, builder, child, + tagname, parser, data)) + return TRUE; + + if (strcmp (tagname, "items") == 0) + { + ItemParserData *parser_data; + + parser_data = g_slice_new0 (ItemParserData); + parser_data->builder = g_object_ref (builder); + parser_data->object = g_object_ref (buildable); + parser_data->domain = gtk_builder_get_translation_domain (builder); + *parser = item_parser; + *data = parser_data; + return TRUE; + } + return FALSE; +} + +static void +gtk_combo_box_text_buildable_custom_finished (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer user_data) +{ + ItemParserData *data; + + buildable_parent_iface->custom_finished (buildable, builder, child, + tagname, user_data); + + if (strcmp (tagname, "items") == 0) + { + data = (ItemParserData*)user_data; + + g_object_unref (data->object); + g_object_unref (data->builder); + g_slice_free (ItemParserData, data); + } +} /** * gtk_combo_box_text_new: @@ -211,7 +430,8 @@ gtk_combo_box_text_append (GtkComboBoxText *combo_box, /** * gtk_combo_box_text_prepend: * @combo_box: A #GtkComboBox - * @text: A string + * @id: (allow-none): a string ID for this value, or %NULL + * @text: a string * * Prepends @text to the list of strings stored in @combo_box. If @id * is non-%NULL then it is used as the ID of the row. @@ -234,7 +454,7 @@ gtk_combo_box_text_prepend (GtkComboBoxText *combo_box, * gtk_combo_box_text_insert: * @combo_box: A #GtkComboBoxText * @position: An index to insert @text - * @id: a string ID for this value, or %NULL + * @id: (allow-none): a string ID for this value, or %NULL * @text: A string to display * * Inserts @text at @position in the list of strings stored in @combo_box. @@ -259,16 +479,24 @@ gtk_combo_box_text_insert (GtkComboBoxText *combo_box, g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (combo_box)); g_return_if_fail (text != NULL); - if (position < 0) - position = G_MAXINT; - store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box))); g_return_if_fail (GTK_IS_LIST_STORE (store)); + text_column = gtk_combo_box_get_entry_text_column (GTK_COMBO_BOX (combo_box)); + + if (gtk_combo_box_get_has_entry (GTK_COMBO_BOX (combo_box))) + g_return_if_fail (text_column >= 0); + else if (text_column < 0) + text_column = 0; + column_type = gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), text_column); g_return_if_fail (column_type == G_TYPE_STRING); - gtk_list_store_insert (store, &iter, position); + if (position < 0) + gtk_list_store_append (store, &iter); + else + gtk_list_store_insert (store, &iter, position); + gtk_list_store_set (store, &iter, text_column, text, -1); if (id != NULL) @@ -276,6 +504,7 @@ gtk_combo_box_text_insert (GtkComboBoxText *combo_box, gint id_column; id_column = gtk_combo_box_get_id_column (GTK_COMBO_BOX (combo_box)); + g_return_if_fail (id_column >= 0); column_type = gtk_tree_model_get_column_type (GTK_TREE_MODEL (store), id_column); g_return_if_fail (column_type == G_TYPE_STRING); @@ -334,8 +563,9 @@ gtk_combo_box_text_remove_all (GtkComboBoxText *combo_box) * gtk_combo_box_text_get_active_text: * @combo_box: A #GtkComboBoxText * - * Returns the currently active string in @combo_box or %NULL if none - * is selected. + * Returns the currently active string in @combo_box, or %NULL if none + * is selected. If @combo_box contains an entry, this function will return + * its contents (which will not necessarily be an item from the list). * * Returns: a newly allocated string containing the currently active text. * Must be freed with g_free(). @@ -359,6 +589,7 @@ gtk_combo_box_text_get_active_text (GtkComboBoxText *combo_box) model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo_box)); g_return_val_if_fail (GTK_IS_LIST_STORE (model), NULL); text_column = gtk_combo_box_get_entry_text_column (GTK_COMBO_BOX (combo_box)); + g_return_val_if_fail (text_column >= 0, NULL); column_type = gtk_tree_model_get_column_type (model, text_column); g_return_val_if_fail (column_type == G_TYPE_STRING, NULL); gtk_tree_model_get (model, &iter, text_column, &text, -1); diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c index 5433766c25..cd400b3e02 100644 --- a/gtk/gtkcontainer.c +++ b/gtk/gtkcontainer.c @@ -32,8 +32,12 @@ #include #include +#include +#include + #include "gtkbuildable.h" #include "gtkbuilderprivate.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkmain.h" #include "gtkmarshalers.h" @@ -42,8 +46,6 @@ #include "gtkwindow.h" #include "gtkintl.h" #include "gtktoolbar.h" -#include -#include /** @@ -144,32 +146,6 @@ * } * ]]> * - * Furthermore, in order to ensure correct height-for-width requests it is important - * to check the input width against the real required minimum width. This can - * easily be achieved as follows: - * - * get_preferred_width (widget, &min_width, NULL); - * - * for_width = MAX (min_width, for_width); - * - * execute_real_height_for_width_request_code (widget, for_width, min_height, nat_height); - * } - * else - * { - * ... fall back on virtual results as mentioned in the previous example ... - * } - * } - * ]]> - * * Height for width requests are generally implemented in terms of a virtual allocation * of widgets in the input orientation. Assuming an height-for-width request mode, a container * would implement the get_preferred_height_for_width() virtual function by first calling @@ -327,6 +303,7 @@ static void gtk_container_adjust_size_request (GtkWidget *widget, gint *natural_size); static void gtk_container_adjust_size_allocation (GtkWidget *widget, GtkOrientation orientation, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size); @@ -1789,7 +1766,7 @@ gtk_container_adjust_size_request (GtkWidget *widget, container = GTK_CONTAINER (widget); - if (GTK_CONTAINER_GET_CLASS (widget)->handle_border_width) + if (GTK_CONTAINER_GET_CLASS (widget)->_handle_border_width) { int border_width; @@ -1809,6 +1786,7 @@ gtk_container_adjust_size_request (GtkWidget *widget, static void gtk_container_adjust_size_allocation (GtkWidget *widget, GtkOrientation orientation, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size) @@ -1818,10 +1796,10 @@ gtk_container_adjust_size_allocation (GtkWidget *widget, container = GTK_CONTAINER (widget); - if (!GTK_CONTAINER_GET_CLASS (widget)->handle_border_width) + if (!GTK_CONTAINER_GET_CLASS (widget)->_handle_border_width) { parent_class->adjust_size_allocation (widget, orientation, - natural_size, allocated_pos, + minimum_size, natural_size, allocated_pos, allocated_size); return; } @@ -1845,6 +1823,7 @@ gtk_container_adjust_size_allocation (GtkWidget *widget, else { *allocated_pos += border_width; + *minimum_size -= border_width * 2; *natural_size -= border_width * 2; } @@ -1856,7 +1835,7 @@ gtk_container_adjust_size_allocation (GtkWidget *widget, * and padding values. */ parent_class->adjust_size_allocation (widget, orientation, - natural_size, allocated_pos, + minimum_size, natural_size, allocated_pos, allocated_size); } @@ -1880,7 +1859,7 @@ gtk_container_class_handle_border_width (GtkContainerClass *klass) { g_return_if_fail (GTK_IS_CONTAINER_CLASS (klass)); - klass->handle_border_width = TRUE; + klass->_handle_border_width = TRUE; } /** @@ -3133,12 +3112,17 @@ gtk_container_unmap (GtkWidget *widget) { gtk_widget_set_mapped (widget, FALSE); + /* hide our window first so user doesn't see all the child windows + * vanishing one by one. (only matters these days if one of the + * children has an actual native window instead of client-side + * window, e.g. a GtkSocket would) + */ if (gtk_widget_get_has_window (widget)) gdk_window_hide (gtk_widget_get_window (widget)); - else - gtk_container_forall (GTK_CONTAINER (widget), - (GtkCallback)gtk_widget_unmap, - NULL); + + gtk_container_forall (GTK_CONTAINER (widget), + (GtkCallback)gtk_widget_unmap, + NULL); } /** diff --git a/gtk/gtkcontainer.h b/gtk/gtkcontainer.h index 94a8502c8f..b21e2d827b 100644 --- a/gtk/gtkcontainer.h +++ b/gtk/gtkcontainer.h @@ -62,8 +62,6 @@ struct _GtkContainerClass { GtkWidgetClass parent_class; - unsigned int handle_border_width : 1; - void (*add) (GtkContainer *container, GtkWidget *widget); void (*remove) (GtkContainer *container, @@ -74,7 +72,7 @@ struct _GtkContainerClass GtkCallback callback, gpointer callback_data); void (*set_focus_child) (GtkContainer *container, - GtkWidget *widget); + GtkWidget *child); GType (*child_type) (GtkContainer *container); gchar* (*composite_name) (GtkContainer *container, GtkWidget *child); @@ -91,6 +89,11 @@ struct _GtkContainerClass GtkWidgetPath * (*get_path_for_child) (GtkContainer *container, GtkWidget *child); + + /*< private >*/ + + unsigned int _handle_border_width : 1; + /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 5ab102a85e..32d637efd5 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -29,6 +29,7 @@ #include "gtkanimationdescription.h" #include "gtk9slice.h" #include "gtkcssprovider.h" +#include "gtkprivate.h" /** * SECTION:gtkcssprovider @@ -47,13 +48,13 @@ * calling gtk_css_provider_load_from_file() and adding the provider with * gtk_style_context_add_provider() or gtk_style_context_add_provider_for_screen(). * In addition, certain files will be read when GTK+ is initialized. First, - * the file XDG_CONFIG_HOME/gtk-3.0/gtk.css + * the file $XDG_CONFIG_HOME/gtk-3.0/gtk.css * is loaded if it exists. Then, GTK+ tries to load - * HOME/.themes/theme-name/gtk-3.0/gtk.css, + * $HOME/.themes/theme-name/gtk-3.0/gtk.css, * falling back to - * GTK_DATA_PREFIX/share/themes/theme-name/gtk-3.0/gtk.css, + * datadir/share/themes/theme-name/gtk-3.0/gtk.css, * where theme-name is the name of the current theme - * (see the #GtkSettings:gtk-theme-name setting) and GTK_DATA_PREFIX + * (see the #GtkSettings:gtk-theme-name setting) and datadir * is the prefix configured when GTK+ was compiled, unless overridden by the * GTK_DATA_PREFIX environment variable. * @@ -156,6 +157,12 @@ * style classes they define and see * for a list of all style classes used by GTK+ widgets. * + * + * Note that there is some ambiguity in the selector syntax when it comes + * to differentiation widget class names from regions. GTK+ currently treats + * a string as a widget class name if it contains any uppercase characters + * (which should work for more widgets with names like GtkLabel). + * * * Style classes in selectors * @@ -558,7 +565,8 @@ * engine * engine-name * #GtkThemingEngine - * engine: clearlooks; + * engine: clearlooks; + * engine: none; /* use the default (i.e. builtin) engine) */ * * * background-color @@ -791,11 +799,6 @@ static gboolean gtk_css_provider_load_from_path_internal (GtkCssProvider *css_p gboolean reset, GError **error); -enum { - CSS_PROVIDER_PARSE_ERROR -}; - - GQuark gtk_css_provider_error_quark (void) { @@ -973,6 +976,8 @@ selector_style_info_free (SelectorStyleInfo *info) if (info->path) selector_path_unref (info->path); + + g_slice_free (SelectorStyleInfo, info); } static void @@ -1078,7 +1083,7 @@ compare_selector_element (GtkWidgetPath *path, { GType type; - type = gtk_widget_path_iter_get_widget_type (path, index); + type = gtk_widget_path_iter_get_object_type (path, index); if (!g_type_is_a (type, elem->type)) return FALSE; @@ -1155,7 +1160,7 @@ compare_selector (GtkWidgetPath *path, SelectorPath *selector) { GSList *elements = selector->elements; - gboolean match = TRUE; + gboolean match = TRUE, first = TRUE, first_match = FALSE; guint64 score = 0; gint i; @@ -1170,6 +1175,9 @@ compare_selector (GtkWidgetPath *path, match = compare_selector_element (path, i, elem, &elem_score); + if (match && first) + first_match = TRUE; + /* Only move on to the next index if there is no match * with the current element (whether to continue or not * handled right after in the combinator check), or a @@ -1202,6 +1210,8 @@ compare_selector (GtkWidgetPath *path, score <<= 4; score |= elem_score; } + + first = FALSE; } /* If there are pending selector @@ -1213,6 +1223,13 @@ compare_selector (GtkWidgetPath *path, if (!match) score = 0; + else if (first_match) + { + /* Assign more weight to these selectors + * that matched right from the first element. + */ + score <<= 4; + } return score; } @@ -1375,7 +1392,7 @@ gtk_css_provider_get_style_property (GtkStyleProvider *provider, (info->state == 0 || info->state == state || ((info->state & state) != 0 && - (info->state & ~(state)) == 0))) + (info->state & ~(state)) == 0))) { const gchar *val_str; @@ -1456,7 +1473,7 @@ scanner_apply_scope (GScanner *scanner, if (scope == SCOPE_VALUE) { scanner->config->cset_identifier_first = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_"; - scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_ (),.%\t\n'/\""; + scanner->config->cset_identifier_nth = G_CSET_a_2_z G_CSET_A_2_Z G_CSET_DIGITS "@#-_ +(),.%\t\n'/\""; scanner->config->scan_identifier_1char = TRUE; } else if (scope == SCOPE_SELECTOR) @@ -1700,6 +1717,26 @@ parse_classes (SelectorPath *path, selector_path_prepend_class (path, str); } +static gboolean +is_widget_class_name (const gchar *str) +{ + /* Do a pretty lax check here, not all + * widget class names contain only CamelCase + * (gtkmm widgets don't), but at least part of + * the name will be CamelCase, so check for + * the first uppercase char + */ + while (*str) + { + if (g_ascii_isupper (*str)) + return TRUE; + + str++; + } + + return FALSE; +} + static GTokenType parse_selector (GtkCssProvider *css_provider, GScanner *scanner, @@ -1750,7 +1787,7 @@ parse_selector (GtkCssProvider *css_provider, parse_classes (path, pos + 1); } } - else if (g_ascii_isupper (scanner->value.v_identifier[0])) + else if (is_widget_class_name (scanner->value.v_identifier)) { gchar *pos; @@ -1791,7 +1828,7 @@ parse_selector (GtkCssProvider *css_provider, else selector_path_prepend_type (path, scanner->value.v_identifier); } - else if (g_ascii_islower (scanner->value.v_identifier[0])) + else if (_gtk_style_context_check_region_name (scanner->value.v_identifier)) { GtkRegionFlags flags = 0; gchar *region_name; @@ -1880,7 +1917,7 @@ parse_selector (GtkCssProvider *css_provider, static GtkSymbolicColor * symbolic_color_parse_str (const gchar *string, - gchar **end_ptr) + gchar **end_ptr) { GtkSymbolicColor *symbolic_color = NULL; gchar *str; @@ -2073,7 +2110,7 @@ symbolic_color_parse_str (const gchar *string, *end_ptr = (gchar *) str; if (str[0] != ')') - { + { gtk_symbolic_color_unref (color1); gtk_symbolic_color_unref (color2); return NULL; @@ -2109,8 +2146,9 @@ symbolic_color_parse_str (const gchar *string, } else { - /* color name? parse until first whitespace */ - while (*end != ' ' && *end != '\0') + /* Color name */ + while (*end != '\0' && + (g_ascii_isalnum (*end) || *end == ' ')) end++; } @@ -2142,8 +2180,8 @@ symbolic_color_parse (const gchar *str, if (*end != '\0') { g_set_error_literal (error, - gtk_css_provider_error_quark (), - CSS_PROVIDER_PARSE_ERROR, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, "Could not parse symbolic color"); if (color) @@ -2412,7 +2450,6 @@ path_parse_str (GtkCssProvider *css_provider, { gchar *path, *chr; const gchar *start, *end; - start = str; if (g_str_has_prefix (str, "url")) @@ -2519,8 +2556,8 @@ path_parse (GtkCssProvider *css_provider, if (*end != '\0') { g_set_error_literal (error, - gtk_css_provider_error_quark (), - CSS_PROVIDER_PARSE_ERROR, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, "Error parsing path"); g_free (path); path = NULL; @@ -2621,10 +2658,10 @@ slice_parse_str (GtkCssProvider *css_provider, return NULL; } - slice = gtk_9slice_new (pixbuf, - distance_top, distance_bottom, - distance_left, distance_right, - mods[0], mods[1]); + slice = _gtk_9slice_new (pixbuf, + distance_top, distance_bottom, + distance_left, distance_right, + mods[0], mods[1]); g_object_unref (pixbuf); return slice; @@ -2673,14 +2710,14 @@ border_parse_str (const gchar *str, border = gtk_border_new (); SKIP_SPACES (str); - if (!g_ascii_isdigit (*str)) + if (!g_ascii_isdigit (*str) && *str != '-') return border; first = unit_parse_str (str, end_str); str = *end_str; SKIP_SPACES (str); - if (!g_ascii_isdigit (*str)) + if (!g_ascii_isdigit (*str) && *str != '-') { border->left = border->right = border->top = border->bottom = (gint) first; *end_str = (gchar *) str; @@ -2691,7 +2728,7 @@ border_parse_str (const gchar *str, str = *end_str; SKIP_SPACES (str); - if (!g_ascii_isdigit (*str)) + if (!g_ascii_isdigit (*str) && *str != '-') { border->top = border->bottom = (gint) first; border->left = border->right = (gint) second; @@ -2703,7 +2740,7 @@ border_parse_str (const gchar *str, str = *end_str; SKIP_SPACES (str); - if (!g_ascii_isdigit (*str)) + if (!g_ascii_isdigit (*str) && *str != '-') { border->top = (gint) first; border->left = border->right = (gint) second; @@ -2739,27 +2776,29 @@ css_provider_parse_value (GtkCssProvider *css_provider, if (type == GDK_TYPE_RGBA || type == GDK_TYPE_COLOR) { - GdkRGBA color; - GdkColor rgb; + GdkRGBA rgba; + GdkColor color; if (type == GDK_TYPE_RGBA && - gdk_rgba_parse (&color, value_str)) - g_value_set_boxed (value, &color); + gdk_rgba_parse (&rgba, value_str)) + g_value_set_boxed (value, &rgba); else if (type == GDK_TYPE_COLOR && - gdk_color_parse (value_str, &rgb)) - g_value_set_boxed (value, &rgb); + gdk_color_parse (value_str, &color)) + g_value_set_boxed (value, &color); else { GtkSymbolicColor *symbolic_color; symbolic_color = symbolic_color_parse_str (value_str, &end); - if (!symbolic_color) - return FALSE; - - g_value_unset (value); - g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR); - g_value_take_boxed (value, symbolic_color); + if (symbolic_color) + { + g_value_unset (value); + g_value_init (value, GTK_TYPE_SYMBOLIC_COLOR); + g_value_take_boxed (value, symbolic_color); + } + else + parsed = FALSE; } } else if (type == PANGO_TYPE_FONT_DESCRIPTION) @@ -2790,13 +2829,16 @@ css_provider_parse_value (GtkCssProvider *css_provider, GtkThemingEngine *engine; engine = gtk_theming_engine_load (value_str); - g_value_set_object (value, engine); + if (engine) + g_value_set_object (value, engine); + else + parsed = FALSE; } else if (type == GTK_TYPE_ANIMATION_DESCRIPTION) { GtkAnimationDescription *desc; - desc = gtk_animation_description_from_string (value_str); + desc = _gtk_animation_description_from_string (value_str); if (desc) g_value_take_boxed (value, desc); @@ -2878,8 +2920,11 @@ css_provider_parse_value (GtkCssProvider *css_provider, if (!enum_value) { - g_warning ("Unknown value '%s' for enum type '%s'", - value_str, g_type_name (type)); + g_set_error (error, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, + "Unknown value '%s' for enum type '%s'", + value_str, g_type_name (type)); parsed = FALSE; } else @@ -2912,8 +2957,11 @@ css_provider_parse_value (GtkCssProvider *css_provider, if (!flag_value) { - g_warning ("Unknown flag '%s' for type '%s'", - value_str, g_type_name (type)); + g_set_error (error, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, + "Unknown flag '%s' for type '%s'", + value_str, g_type_name (type)); parsed = FALSE; } else @@ -2928,8 +2976,11 @@ css_provider_parse_value (GtkCssProvider *css_provider, if (!flag_value) { - g_warning ("Unknown flag '%s' for type '%s'", - value_str, g_type_name (type)); + g_set_error (error, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, + "Unknown flag '%s' for type '%s'", + value_str, g_type_name (type)); parsed = FALSE; } else @@ -2953,7 +3004,11 @@ css_provider_parse_value (GtkCssProvider *css_provider, } else { - g_warning ("Cannot parse string '%s' for type %s", value_str, g_type_name (type)); + g_set_error (error, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, + "Cannot parse string '%s' for type %s", + value_str, g_type_name (type)); parsed = FALSE; } @@ -2966,8 +3021,8 @@ css_provider_parse_value (GtkCssProvider *css_provider, if (error && !*error) g_set_error_literal (error, - gtk_css_provider_error_quark (), - CSS_PROVIDER_PARSE_ERROR, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, "Failed to parse value"); } @@ -3284,8 +3339,7 @@ parse_rule (GtkCssProvider *css_provider, return G_TOKEN_IDENTIFIER; } } - else if (prop[0] == '-' && - g_ascii_isupper (prop[1])) + else if (prop[0] == '-') { GValue *val; @@ -3320,6 +3374,9 @@ parse_stylesheet (GtkCssProvider *css_provider, GError **error) { GtkCssProviderPrivate *priv; + gboolean result; + + result = TRUE; priv = css_provider->priv; g_scanner_get_next_token (priv->scanner); @@ -3334,7 +3391,26 @@ parse_stylesheet (GtkCssProvider *css_provider, if (expected_token != G_TOKEN_NONE) { - scanner_report_warning (css_provider, expected_token, err); + /* If a GError was passed in, propagate the error and bail out, + * else report a warning and keep going + */ + if (error != NULL) + { + result = FALSE; + if (err) + g_propagate_error (error, err); + else + g_set_error_literal (error, + GTK_CSS_PROVIDER_ERROR, + GTK_CSS_PROVIDER_ERROR_FAILED, + "Error parsing stylesheet"); + break; + } + else + { + scanner_report_warning (css_provider, expected_token, err); + g_clear_error (&err); + } while (!g_scanner_eof (priv->scanner) && priv->scanner->token != G_TOKEN_RIGHT_CURLY) @@ -3343,11 +3419,10 @@ parse_stylesheet (GtkCssProvider *css_provider, else css_provider_commit (css_provider); - g_clear_error (&err); g_scanner_get_next_token (priv->scanner); } - return TRUE; + return result; } /** @@ -3544,6 +3619,15 @@ gtk_css_provider_get_default (void) "@define-color tooltip_bg_color #eee1b3; \n" "@define-color tooltip_fg_color #000; \n" "\n" + "@define-color info_fg_color rgb (181, 171, 156);\n" + "@define-color info_bg_color rgb (252, 252, 189);\n" + "@define-color warning_fg_color rgb (173, 120, 41);\n" + "@define-color warning_bg_color rgb (250, 173, 61);\n" + "@define-color question_fg_color rgb (97, 122, 214);\n" + "@define-color question_bg_color rgb (138, 173, 212);\n" + "@define-color error_fg_color rgb (166, 38, 38);\n" + "@define-color error_bg_color rgb (237, 54, 54);\n" + "\n" "*,\n" "GtkTreeView > GtkButton {\n" " background-color: @bg_color;\n" @@ -3563,8 +3647,16 @@ gtk_css_provider_get_default (void) " color: @selected_fg_color;\n" "}\n" "\n" + ".expander, .view.expander {\n" + " color: #fff;\n" + "}\n" + "\n" ".expander:prelight {\n" - " color: @selected_fg_color\n" + " color: @text_color;\n" + "}\n" + "\n" + ".expander:active {\n" + " transition: 300ms linear;\n" "}\n" "\n" "*:insensitive {\n" @@ -3573,11 +3665,25 @@ gtk_css_provider_get_default (void) " color: shade (@bg_color, 0.7);\n" "}\n" "\n" - "GtkTreeView, GtkIconView, GtkTextView {\n" + "GtkTreeView, GtkIconView {\n" " background-color: @base_color;\n" " color: @text_color;\n" "}\n" "\n" + ".view {\n" + " background-color: @base_color;\n" + " color: @text_color;\n" + "}\n" + ".view:selected {\n" + " background-color: shade (@bg_color, 0.9);\n" + " color: @fg_color;\n" + "}\n" + "\n" + ".view:selected:focused {\n" + " background-color: @selected_bg_color;\n" + " color: @selected_fg_color;\n" + "}\n" + "\n" "GtkTreeView > row {\n" " background-color: @base_color;\n" " color: @text_color;\n" @@ -3590,6 +3696,9 @@ gtk_css_provider_get_default (void) ".tooltip {\n" " background-color: @tooltip_bg_color; \n" " color: @tooltip_fg_color; \n" + " border-color: @tooltip_fg_color; \n" + " border-width: 1;\n" + " border-style: solid;\n" "}\n" "\n" ".button,\n" @@ -3613,6 +3722,7 @@ gtk_css_provider_get_default (void) ".trough {\n" " border-style: inset;\n" " border-width: 1;\n" + " padding: 0;\n" "}\n" "\n" ".entry {\n" @@ -3631,11 +3741,13 @@ gtk_css_provider_get_default (void) " color: #000;\n" "}\n" "\n" - ".progressbar:prelight,\n" + ".progressbar,\n" ".entry.progressbar {\n" " background-color: @selected_bg_color;\n" " border-color: shade (@selected_bg_color, 0.7);\n" " color: @selected_fg_color;\n" + " border-style: outset;\n" + " border-width: 1;\n" "}\n" "\n" "GtkCheckButton:hover,\n" @@ -3645,14 +3757,17 @@ gtk_css_provider_get_default (void) " background-color: shade (@bg_color, 1.05);\n" "}\n" "\n" - ".check, .radio,\n" + ".check, .radio {\n" + " border-style: solid;\n" + " border-width: 1;\n" + " background-color: @base_color;\n" + "}\n" + "\n" ".check:active, .radio:active,\n" ".check:hover, .radio:hover {\n" " background-color: @base_color;\n" " border-color: @fg_color;\n" - " color: @text_color;\n" - " border-style: solid;\n" - " border-width: 1;\n" + " color: @text_color;\n" "}\n" "\n" ".check:selected, .radio:selected {\n" @@ -3662,11 +3777,8 @@ gtk_css_provider_get_default (void) "\n" ".menu.check, .menu.radio {\n" " color: @fg_color;\n" - "}\n" - "\n" - ".menu:hover {\n" - " background-color: @selected_bg_color;\n" " border-style: none;\n" + " border-width: 0;\n" "}\n" "\n" ".popup {\n" @@ -3689,6 +3801,10 @@ gtk_css_provider_get_default (void) " border-width: 1;\n" "}\n" "\n" + "GtkScrolledWindow.frame {\n" + " padding: 0;\n" + "}\n" + "\n" ".menu,\n" ".menubar,\n" ".toolbar {\n" @@ -3697,18 +3813,13 @@ gtk_css_provider_get_default (void) "}\n" "\n" ".menu:hover,\n" - ".menubar:hover {\n" + ".menubar:hover,\n" + ".menu.check:hover,\n" + ".menu.radio:hover {\n" " background-color: @selected_bg_color;\n" " color: @selected_fg_color;\n" "}\n" "\n" - ".menu .check,\n" - ".menu .radio,\n" - ".menu .check:active,\n" - ".menu .radio:active {\n" - " border-style: none;\n" - "}\n" - "\n" "GtkSpinButton.button {\n" " border-width: 1;\n" "}\n" @@ -3739,10 +3850,84 @@ gtk_css_provider_get_default (void) ".spinner:active {\n" " transition: 750ms linear loop;\n" "}\n" + "\n" + ".info {\n" + " background-color: @info_bg_color;\n" + " color: @info_fg_color;\n" + "}\n" + "\n" + ".warning {\n" + " background-color: @warning_bg_color;\n" + " color: @warning_fg_color;\n" + "}\n" + "\n" + ".question {\n" + " background-color: @question_bg_color;\n" + " color: @question_fg_color;\n" + "}\n" + "\n" + ".error {\n" + " background-color: @error_bg_color;\n" + " color: @error_fg_color;\n" + "}\n" + "\n" + ".highlight {\n" + " background-color: @selected_bg_color;\n" + " color: @selected_fg_color;\n" + "}\n" + "\n" + ".light-area-focus {\n" + " color: #000;\n" + "}\n" + "\n" + ".dark-area-focus {\n" + " color: #fff;\n" + "}\n" + "GtkCalendar.view {\n" + " border-width: 1;\n" + " border-style: inset;\n" + " padding: 1;\n" + "}\n" + "\n" + "GtkCalendar.view:inconsistent {\n" + " color: darker (@bg_color);\n" + "}\n" + "\n" + "GtkCalendar.header {\n" + " background-color: @bg_color;\n" + " border-style: outset;\n" + " border-width: 2;\n" + "}\n" + "\n" + "GtkCalendar.highlight {\n" + " border-width: 0;\n" + "}\n" + "\n" + "GtkCalendar.button {\n" + " background-color: @bg_color;\n" + "}\n" + "\n" + "GtkCalendar.button:hover {\n" + " background-color: lighter (@bg_color);\n" + " color: @fg_color;\n" + "}\n" + "\n" + ".menu {\n" + " border-width: 1;\n" + " padding: 0;\n" + "}\n" + "\n" + ".menu * {\n" + " border-width: 0;\n" + " padding: 2;\n" + "}\n" "\n"; provider = gtk_css_provider_new (); - gtk_css_provider_load_from_data (provider, str, -1, NULL); + if (!gtk_css_provider_load_from_data (provider, str, -1, NULL)) + { + g_error ("Failed to load the internal default CSS."); + } } return provider; @@ -3823,6 +4008,8 @@ gtk_css_provider_get_named (const gchar *name, } } + g_free (subpath); + if (path) { GError *error = NULL; diff --git a/gtk/gtkdialog.c b/gtk/gtkdialog.c index b765b72aff..0aa57773d5 100644 --- a/gtk/gtkdialog.c +++ b/gtk/gtkdialog.c @@ -24,22 +24,147 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +#include "config.h" + #include #include -#include "config.h" + #include "gtkbutton.h" #include "gtkdialog.h" #include "gtkhbbox.h" #include "gtklabel.h" #include "gtkmarshalers.h" #include "gtkvbox.h" -#include "gdkkeysyms.h" #include "gtkmain.h" #include "gtkintl.h" #include "gtkbindings.h" #include "gtkprivate.h" #include "gtkbuildable.h" +/** + * SECTION:gtkdialog + * @Short_description: Create popup windows + * @Title: GtkDialog + * @See_also: #GtkVBox, #GtkWindow, #GtkButton + * + * Dialog boxes are a convenient way to prompt the user for a small amount + * of input, e.g. to display a message, ask a question, or anything else + * that does not require extensive effort on the user's part. + * + * GTK+ treats a dialog as a window split vertically. The top section is a + * #GtkVBox, and is where widgets such as a #GtkLabel or a #GtkEntry should + * be packed. The bottom area is known as the + * action_area. This is generally used for + * packing buttons into the dialog which may perform functions such as + * cancel, ok, or apply. The two areas are separated by a #GtkHSeparator. + * + * #GtkDialog boxes are created with a call to gtk_dialog_new() or + * gtk_dialog_new_with_buttons(). gtk_dialog_new_with_buttons() is + * recommended; it allows you to set the dialog title, some convenient flags, + * and add simple buttons. + * + * If 'dialog' is a newly created dialog, the two primary areas of the + * window can be accessed through gtk_dialog_get_content_area() and + * gtk_dialog_get_action_area(), as can be seen from the example below. + * + * A 'modal' dialog (that is, one which freezes the rest of the application + * from user input), can be created by calling gtk_window_set_modal() on the + * dialog. Use the GTK_WINDOW() macro to cast the widget returned from + * gtk_dialog_new() into a #GtkWindow. When using gtk_dialog_new_with_buttons() + * you can also pass the #GTK_DIALOG_MODAL flag to make a dialog modal. + * + * If you add buttons to #GtkDialog using gtk_dialog_new_with_buttons(), + * gtk_dialog_add_button(), gtk_dialog_add_buttons(), or + * gtk_dialog_add_action_widget(), clicking the button will emit a signal + * called #GtkDialog::response with a response ID that you specified. GTK+ + * will never assign a meaning to positive response IDs; these are entirely + * user-defined. But for convenience, you can use the response IDs in the + * #GtkResponseType enumeration (these all have values less than zero). If + * a dialog receives a delete event, the #GtkDialog::response signal will + * be emitted with a response ID of #GTK_RESPONSE_DELETE_EVENT. + * + * If you want to block waiting for a dialog to return before returning + * control flow to your code, you can call gtk_dialog_run(). This function + * enters a recursive main loop and waits for the user to respond to the + * dialog, returning the response ID corresponding to the button the user + * clicked. + * + * For the simple dialog in the following example, in reality you'd probably + * use #GtkMessageDialog to save yourself some effort. But you'd need to + * create the dialog contents manually if you had more than a simple message + * in the dialog. + * + * Simple GtkDialog usage + * + * /* Function to open a dialog box displaying the message provided. */ + * void + * quick_message (gchar *message) + * { + * GtkWidget *dialog, *label, *content_area; + * + * /* Create the widgets */ + * dialog = gtk_dialog_new_with_buttons ("Message", + * main_application_window, + * GTK_DIALOG_DESTROY_WITH_PARENT, + * GTK_STOCK_OK, + * GTK_RESPONSE_NONE, + * NULL); + * content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + * label = gtk_label_new (message); + * + * /* Ensure that the dialog box is destroyed when the user responds */ + * g_signal_connect_swapped (dialog, + * "response", + * G_CALLBACK (gtk_widget_destroy), + * dialog); + * + * /* Add the label, and show everything we've added to the dialog */ + * + * gtk_container_add (GTK_CONTAINER (content_area), label); + * gtk_widget_show_all (dialog); + * } + * + * + * + * GtkDialog as GtkBuildable + * + * The GtkDialog implementation of the #GtkBuildable interface exposes the + * @vbox and @action_area as internal children with the names "vbox" and + * "action_area". + * + * + * GtkDialog supports a custom <action-widgets> element, which + * can contain multiple <action-widget> elements. The "response" + * attribute specifies a numeric response, and the content of the element + * is the id of widget (which should be a child of the dialogs @action_area). + * + * + * A <structname>GtkDialog</structname> UI definition fragment. + * + * " + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * button_ok + * button_cancel + * + * + * ]]> + * + * + */ struct _GtkDialogPrivate { @@ -61,8 +186,7 @@ static void gtk_dialog_add_buttons_valist (GtkDialog *dialog, static gboolean gtk_dialog_delete_event_handler (GtkWidget *widget, GdkEventAny *event, gpointer user_data); -static void gtk_dialog_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_dialog_style_updated (GtkWidget *widget); static void gtk_dialog_map (GtkWidget *widget); static void gtk_dialog_close (GtkDialog *dialog); @@ -115,7 +239,7 @@ gtk_dialog_class_init (GtkDialogClass *class) widget_class = GTK_WIDGET_CLASS (class); widget_class->map = gtk_dialog_map; - widget_class->style_set = gtk_dialog_style_set; + widget_class->style_updated = gtk_dialog_style_updated; class->close = gtk_dialog_close; @@ -382,8 +506,7 @@ gtk_dialog_map (GtkWidget *widget) } static void -gtk_dialog_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_dialog_style_updated (GtkWidget *widget) { update_spacings (GTK_DIALOG (widget)); } @@ -431,6 +554,16 @@ gtk_dialog_close (GtkDialog *dialog) gdk_event_free (event); } +/** + * gtk_dialog_new: + * + * Creates a new dialog box. + * + * Widgets should not be packed into this #GtkWindow + * directly, but into the @vbox and @action_area, as described above. + * + * Returns: the new dialog as a #GtkWidget + */ GtkWidget* gtk_dialog_new (void) { @@ -998,7 +1131,8 @@ gtk_dialog_run (GtkDialog *dialog) * Gets the widget button that uses the given response ID in the action area * of a dialog. * - * Returns: (transfer none):the @widget button that uses the given @response_id, or %NULL. + * Returns: (transfer none): the @widget button that uses the given + * @response_id, or %NULL. * * Since: 2.20 */ diff --git a/gtk/gtkdialog.h b/gtk/gtkdialog.h index 9069d22fc8..ab1d143e2d 100644 --- a/gtk/gtkdialog.h +++ b/gtk/gtkdialog.h @@ -37,48 +37,53 @@ G_BEGIN_DECLS -/* Parameters for dialog construction */ -typedef enum -{ - GTK_DIALOG_MODAL = 1 << 0, /* call gtk_window_set_modal (win, TRUE) */ - GTK_DIALOG_DESTROY_WITH_PARENT = 1 << 1 /* call gtk_window_set_destroy_with_parent () */ -} GtkDialogFlags; - -/* Convenience enum to use for response_id's. Positive values are - * totally user-interpreted. GTK will sometimes return - * GTK_RESPONSE_NONE if no response_id is available. +/** + * GtkDialogFlags: + * @GTK_DIALOG_MODAL: Make the constructed dialog modal, + * see gtk_window_set_modal() + * @GTK_DIALOG_DESTROY_WITH_PARENT: Destroy the dialog when its + * parent is destroyed, see gtk_window_set_destroy_with_parent() * - * Typical usage is: - * if (gtk_dialog_run(dialog) == GTK_RESPONSE_ACCEPT) - * blah(); + * Flags used to influence dialog construction. */ typedef enum { - /* GTK returns this if a response widget has no response_id, - * or if the dialog gets programmatically hidden or destroyed. - */ - GTK_RESPONSE_NONE = -1, + GTK_DIALOG_MODAL = 1 << 0, + GTK_DIALOG_DESTROY_WITH_PARENT = 1 << 1 +} GtkDialogFlags; - /* GTK won't return these unless you pass them in - * as the response for an action widget. They are - * for your convenience. - */ - GTK_RESPONSE_REJECT = -2, - GTK_RESPONSE_ACCEPT = -3, - - /* If the dialog is deleted. */ +/** + * GtkResponseType: + * @GTK_RESPONSE_NONE: Returned if an action widget has no response id, + * or if the dialog gets programmatically hidden or destroyed + * @GTK_RESPONSE_REJECT: Generic response id, not used by GTK+ dialogs + * @GTK_RESPONSE_ACCEPT: Generic response id, not used by GTK+ dialogs + * @GTK_RESPONSE_DELETE_EVENT: Returned if the dialog is deleted + * @GTK_RESPONSE_OK: Returned by OK buttons in GTK+ dialogs + * @GTK_RESPONSE_CANCEL: Returned by Cancel buttons in GTK+ dialogs + * @GTK_RESPONSE_CLOSE: Returned by Close buttons in GTK+ dialogs + * @GTK_RESPONSE_YES: Returned by Yes buttons in GTK+ dialogs + * @GTK_RESPONSE_NO: Returned by No buttons in GTK+ dialogs + * @GTK_RESPONSE_APPLY: Returned by Apply buttons in GTK+ dialogs + * @GTK_RESPONSE_HELP: Returned by Help buttons in GTK+ dialogs + * + * Predefined values for use as response ids in gtk_dialog_add_button(). + * All predefined values are negative, GTK+ leaves positive values for + * application-defined response ids. + */ +typedef enum +{ + GTK_RESPONSE_NONE = -1, + GTK_RESPONSE_REJECT = -2, + GTK_RESPONSE_ACCEPT = -3, GTK_RESPONSE_DELETE_EVENT = -4, - - /* These are returned from GTK dialogs, and you can also use them - * yourself if you like. - */ - GTK_RESPONSE_OK = -5, - GTK_RESPONSE_CANCEL = -6, - GTK_RESPONSE_CLOSE = -7, - GTK_RESPONSE_YES = -8, - GTK_RESPONSE_NO = -9, - GTK_RESPONSE_APPLY = -10, - GTK_RESPONSE_HELP = -11 + GTK_RESPONSE_OK = -5, + GTK_RESPONSE_CANCEL = -6, + GTK_RESPONSE_CLOSE = -7, + GTK_RESPONSE_YES = -8, + GTK_RESPONSE_NO = -9, + GTK_RESPONSE_APPLY = -10, + GTK_RESPONSE_HELP = -11 } GtkResponseType; @@ -94,6 +99,12 @@ typedef struct _GtkDialog GtkDialog; typedef struct _GtkDialogPrivate GtkDialogPrivate; typedef struct _GtkDialogClass GtkDialogClass; +/** + * GtkDialog: + * + * The GtkDialog struct contains only private fields + * and should not be directly accessed. + */ struct _GtkDialog { GtkWindow window; @@ -147,12 +158,12 @@ void gtk_dialog_set_default_response (GtkDialog *dialog, GtkWidget* gtk_dialog_get_widget_for_response (GtkDialog *dialog, gint response_id); gint gtk_dialog_get_response_for_widget (GtkDialog *dialog, - GtkWidget *widget); + GtkWidget *widget); gboolean gtk_alternative_dialog_button_order (GdkScreen *screen); void gtk_dialog_set_alternative_button_order (GtkDialog *dialog, - gint first_response_id, - ...); + gint first_response_id, + ...); void gtk_dialog_set_alternative_button_order_from_array (GtkDialog *dialog, gint n_params, gint *new_order); diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c index 687f1aa606..f541cf1689 100644 --- a/gtk/gtkdnd-quartz.c +++ b/gtk/gtkdnd-quartz.c @@ -29,9 +29,7 @@ #include #include -#include "gdkconfig.h" - -#include "gdk/gdkkeysyms.h" +#include "gdk/gdk.h" #include "gtkdnd.h" #include "gtkiconfactory.h" @@ -45,6 +43,7 @@ #include "gtkintl.h" #include "gtkquartz.h" #include "gdk/quartz/gdkquartz.h" +#include "gtkselectionprivate.h" typedef struct _GtkDragSourceSite GtkDragSourceSite; typedef struct _GtkDragSourceInfo GtkDragSourceInfo; @@ -231,7 +230,7 @@ gtk_drag_get_data (GtkWidget *widget, { gtk_drag_finish (context, (selection_data->length >= 0), - (context->action == GDK_ACTION_MOVE), + (gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE), time); } } @@ -348,11 +347,14 @@ gtk_drag_highlight_draw (GtkWidget *widget, { int width = gtk_widget_get_allocated_width (widget); int height = gtk_widget_get_allocated_height (widget); + GtkStyleContext *context; - gtk_paint_shadow (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "dnd", - 0, 0, width, height); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_DND); + + gtk_render_frame (context, cr, 0, 0, width, height); + + gtk_style_context_restore (context); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ cairo_set_line_width (cr, 1.0); @@ -809,8 +811,8 @@ gtk_drag_dest_motion (GtkWidget *widget, if (site->track_motion || site->flags & GTK_DEST_DEFAULT_MOTION) { - if (context->suggested_action & site->actions) - action = context->suggested_action; + if (gdk_drag_context_get_suggested_action (context) & site->actions) + action = gdk_drag_context_get_suggested_action (context); if (action && gtk_drag_dest_find_target (widget, context, NULL)) { @@ -1003,7 +1005,6 @@ gtk_drag_dest_find_target (GtkWidget *widget, g_return_val_if_fail (GTK_IS_WIDGET (widget), GDK_NONE); g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), GDK_NONE); - g_return_val_if_fail (!context->is_source, GDK_NONE); dragging_info = gdk_quartz_drag_context_get_dragging_info_libgtk_only (context); pasteboard = [dragging_info draggingPasteboard]; @@ -1111,8 +1112,7 @@ gtk_drag_begin_internal (GtkWidget *widget, GdkDragContext *context; NSWindow *nswindow; - context = gdk_drag_begin (NULL, NULL); - context->is_source = TRUE; + context = gdk_drag_begin (gtk_widget_get_window (widget), NULL); info = gtk_drag_get_source_info (context, TRUE); @@ -1547,7 +1547,6 @@ gtk_drag_set_icon_widget (GdkDragContext *context, gint hot_y) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (GTK_IS_WIDGET (widget)); g_warning ("gtk_drag_set_icon_widget is not supported on Mac OS X"); @@ -1566,8 +1565,8 @@ set_icon_stock_pixbuf (GdkDragContext *context, if (stock_id) { - pixbuf = gtk_widget_render_icon (info->widget, stock_id, - GTK_ICON_SIZE_DND, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (info->widget, stock_id, + GTK_ICON_SIZE_DND); if (!pixbuf) { @@ -1602,7 +1601,6 @@ gtk_drag_set_icon_pixbuf (GdkDragContext *context, gint hot_y) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (GDK_IS_PIXBUF (pixbuf)); set_icon_stock_pixbuf (context, NULL, pixbuf, hot_x, hot_y); @@ -1626,7 +1624,6 @@ gtk_drag_set_icon_stock (GdkDragContext *context, { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (stock_id != NULL); set_icon_stock_pixbuf (context, stock_id, NULL, hot_x, hot_y); @@ -1694,7 +1691,6 @@ gtk_drag_set_icon_surface (GdkDragContext *context, double x_offset, y_offset; g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (surface != NULL); _gtk_cairo_surface_extents (surface, &extents); @@ -1736,10 +1732,9 @@ gtk_drag_set_icon_name (GdkDragContext *context, gint width, height, icon_size; g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (icon_name != NULL); - screen = gdk_window_get_screen (context->source_window); + screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context)); g_return_if_fail (screen != NULL); settings = gtk_settings_get_for_screen (screen); @@ -1772,7 +1767,6 @@ void gtk_drag_set_icon_default (GdkDragContext *context) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); gtk_drag_set_icon_stock (context, GTK_STOCK_DND, -2, -2); } diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c index 08496d5761..933172ba9c 100644 --- a/gtk/gtkdnd.c +++ b/gtk/gtkdnd.c @@ -30,9 +30,7 @@ #include #include -#include "gdkconfig.h" - -#include "gdk/gdkkeysyms.h" +#include "gdk/gdk.h" #ifdef GDK_WINDOWING_X11 #include @@ -52,6 +50,7 @@ #include "gtkwindow.h" #include "gtkintl.h" #include "gtkdndcursors.h" +#include "gtkselectionprivate.h" static GSList *source_widgets = NULL; @@ -735,7 +734,7 @@ gtk_drag_get_cursor (GdkDisplay *display, for (i = 0 ; i < n_drag_cursors - 1; i++) if (drag_cursors[i].cursor != NULL) { - gdk_cursor_unref (drag_cursors[i].cursor); + g_object_unref (drag_cursors[i].cursor); drag_cursors[i].cursor = NULL; } } @@ -752,7 +751,7 @@ gtk_drag_get_cursor (GdkDisplay *display, { if (display != gdk_cursor_get_display (drag_cursors[i].cursor)) { - gdk_cursor_unref (drag_cursors[i].cursor); + g_object_unref (drag_cursors[i].cursor); drag_cursors[i].cursor = NULL; } } @@ -777,7 +776,7 @@ gtk_drag_get_cursor (GdkDisplay *display, if (display == gdk_cursor_get_display (info->drag_cursors[i])) return info->drag_cursors[i]; - gdk_cursor_unref (info->drag_cursors[i]); + g_object_unref (info->drag_cursors[i]); info->drag_cursors[i] = NULL; } @@ -981,7 +980,6 @@ gtk_drag_get_data (GtkWidget *widget, g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (!context->is_source); selection_widget = gtk_drag_get_ipc_widget (widget); @@ -1016,14 +1014,13 @@ gtk_drag_get_source_widget (GdkDragContext *context) GSList *tmp_list; g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL); - g_return_val_if_fail (!context->is_source, NULL); tmp_list = source_widgets; while (tmp_list) { GtkWidget *ipc_widget = tmp_list->data; - if (gtk_widget_get_window (ipc_widget) == context->source_window) + if (gtk_widget_get_window (ipc_widget) == gdk_drag_context_get_source_window (context)) { GtkDragSourceInfo *info; info = g_object_get_data (G_OBJECT (ipc_widget), "gtk-info"); @@ -1057,13 +1054,12 @@ gtk_drag_finish (GdkDragContext *context, GdkAtom target = GDK_NONE; g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (!context->is_source); if (success && del) { target = gdk_atom_intern_static_string ("DELETE"); } - else if (context->protocol == GDK_DRAG_PROTO_MOTIF) + else if (gdk_drag_context_get_protocol (context) == GDK_DRAG_PROTO_MOTIF) { target = gdk_atom_intern_static_string (success ? "XmTRANSFER_SUCCESS" : @@ -1072,7 +1068,7 @@ gtk_drag_finish (GdkDragContext *context, if (target != GDK_NONE) { - GtkWidget *selection_widget = gtk_drag_get_ipc_widget_for_screen (gdk_window_get_screen (context->source_window)); + GtkWidget *selection_widget = gtk_drag_get_ipc_widget_for_screen (gdk_window_get_screen (gdk_drag_context_get_source_window (context))); g_object_ref (context); @@ -1108,11 +1104,16 @@ gtk_drag_highlight_draw (GtkWidget *widget, { int width = gtk_widget_get_allocated_width (widget); int height = gtk_widget_get_allocated_height (widget); + GtkStyleContext *context; - gtk_paint_shadow (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "dnd", - 0, 0, width, height); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_DND); + + gtk_render_frame (context, cr, 0, 0, width, height); + + gtk_style_context_restore (context); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ cairo_set_line_width (cr, 1.0); @@ -1639,7 +1640,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel, else if (event->type == GDK_DROP_START && !info->proxy_source) { gdk_drop_reply (context, found, event->dnd.time); - if ((context->protocol == GDK_DRAG_PROTO_MOTIF) && !found) + if ((gdk_drag_context_get_protocol (context) == GDK_DRAG_PROTO_MOTIF) && !found) gtk_drag_finish (context, FALSE, FALSE, event->dnd.time); } } @@ -1657,7 +1658,7 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel, * @target_list: (allow-none): list of droppable targets, or %NULL to use * gtk_drag_dest_get_target_list (@widget). * - * Looks for a match between @context->targets and the + * Looks for a match between the supported targets of @context and the * @dest_target_list, returning the first matching target, otherwise * returning %GDK_NONE. @dest_target_list should usually be the return * value from gtk_drag_dest_get_target_list(), but some widgets may @@ -1665,7 +1666,8 @@ _gtk_drag_dest_handle_event (GtkWidget *toplevel, * that case, they will have to implement a drag_motion handler that * passes the correct target list to this function. * - * Return value: first target that the source offers and the dest can accept, or %GDK_NONE + * Return value: first target that the source offers and the dest can + * accept, or %GDK_NONE **/ GdkAtom gtk_drag_dest_find_target (GtkWidget *widget, @@ -1678,7 +1680,6 @@ gtk_drag_dest_find_target (GtkWidget *widget, g_return_val_if_fail (GTK_IS_WIDGET (widget), GDK_NONE); g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), GDK_NONE); - g_return_val_if_fail (!context->is_source, GDK_NONE); source_widget = gtk_drag_get_source_widget (context); @@ -1693,7 +1694,7 @@ gtk_drag_dest_find_target (GtkWidget *widget, while (tmp_target) { GtkTargetPair *pair = tmp_target->data; - tmp_source = context->targets; + tmp_source = gdk_drag_context_list_targets (context); while (tmp_source) { if (tmp_source->data == GUINT_TO_POINTER (pair->target)) @@ -1723,6 +1724,7 @@ gtk_drag_selection_received (GtkWidget *widget, GdkDragContext *context; GtkDragDestInfo *info; GtkWidget *drop_widget; + GdkAtom target; drop_widget = data; @@ -1730,23 +1732,24 @@ gtk_drag_selection_received (GtkWidget *widget, info = gtk_drag_get_dest_info (context, FALSE); if (info->proxy_data && - info->proxy_data->target == selection_data->target) + gtk_selection_data_get_target (info->proxy_data) == gtk_selection_data_get_target (selection_data)) { gtk_selection_data_set (info->proxy_data, - selection_data->type, - selection_data->format, - selection_data->data, - selection_data->length); + gtk_selection_data_get_data_type (selection_data), + gtk_selection_data_get_format (selection_data), + gtk_selection_data_get_data (selection_data), + gtk_selection_data_get_length (selection_data)); gtk_main_quit (); return; } - if (selection_data->target == gdk_atom_intern_static_string ("DELETE")) + target = gtk_selection_data_get_target (selection_data); + if (target == gdk_atom_intern_static_string ("DELETE")) { gtk_drag_finish (context, TRUE, FALSE, time); } - else if ((selection_data->target == gdk_atom_intern_static_string ("XmTRANSFER_SUCCESS")) || - (selection_data->target == gdk_atom_intern_static_string ("XmTRANSFER_FAILURE"))) + else if ((target == gdk_atom_intern_static_string ("XmTRANSFER_SUCCESS")) || + (target == gdk_atom_intern_static_string ("XmTRANSFER_FAILURE"))) { /* Do nothing */ } @@ -1761,11 +1764,11 @@ gtk_drag_selection_received (GtkWidget *widget, guint target_info; if (gtk_target_list_find (site->target_list, - selection_data->target, + target, &target_info)) { if (!(site->flags & GTK_DEST_DEFAULT_DROP) || - selection_data->length >= 0) + gtk_selection_data_get_length (selection_data) >= 0) g_signal_emit_by_name (drop_widget, "drag-data-received", context, info->drop_x, info->drop_y, @@ -1786,8 +1789,8 @@ gtk_drag_selection_received (GtkWidget *widget, { gtk_drag_finish (context, - (selection_data->length >= 0), - (context->action == GDK_ACTION_MOVE), + (gtk_selection_data_get_length (selection_data) >= 0), + (gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE), time); } @@ -1906,7 +1909,7 @@ gtk_drag_find_widget (GtkWidget *widget, } static void -gtk_drag_proxy_begin (GtkWidget *widget, +gtk_drag_proxy_begin (GtkWidget *widget, GtkDragDestInfo *dest_info, guint32 time) { @@ -1924,7 +1927,7 @@ gtk_drag_proxy_begin (GtkWidget *widget, ipc_widget = gtk_drag_get_ipc_widget (widget); context = gdk_drag_begin (gtk_widget_get_window (ipc_widget), - dest_info->context->targets); + gdk_drag_context_list_targets (dest_info->context)); source_info = gtk_drag_get_source_info (context, TRUE); @@ -1932,10 +1935,10 @@ gtk_drag_proxy_begin (GtkWidget *widget, source_info->widget = g_object_ref (widget); source_info->target_list = gtk_target_list_new (NULL, 0); - tmp_list = dest_info->context->targets; + tmp_list = gdk_drag_context_list_targets (dest_info->context); while (tmp_list) { - gtk_target_list_add (source_info->target_list, + gtk_target_list_add (source_info->target_list, GDK_POINTER_TO_ATOM (tmp_list->data), 0, 0); tmp_list = tmp_list->next; } @@ -2123,8 +2126,9 @@ gtk_drag_dest_motion (GtkWidget *widget, dest_window, proto, current_event->dnd.x_root, current_event->dnd.y_root, - context->suggested_action, - context->actions, time); + gdk_drag_context_get_suggested_action (context), + gdk_drag_context_get_actions (context), + time); if (!site->proxy_window && dest_window) g_object_unref (dest_window); @@ -2141,8 +2145,8 @@ gtk_drag_dest_motion (GtkWidget *widget, if (site->track_motion || site->flags & GTK_DEST_DEFAULT_MOTION) { - if (context->suggested_action & site->actions) - action = context->suggested_action; + if (gdk_drag_context_get_suggested_action (context) & site->actions) + action = gdk_drag_context_get_suggested_action (context); else { gint i; @@ -2150,7 +2154,7 @@ gtk_drag_dest_motion (GtkWidget *widget, for (i = 0; i < 8; i++) { if ((site->actions & (1 << i)) && - (context->actions & (1 << i))) + (gdk_drag_context_get_actions (context) & (1 << i))) { action = (1 << i); break; @@ -2205,7 +2209,7 @@ gtk_drag_dest_drop (GtkWidget *widget, if (site->do_proxy) { if (info->proxy_source || - (info->context->protocol == GDK_DRAG_PROTO_ROOTWIN)) + (gdk_drag_context_get_protocol (info->context) == GDK_DRAG_PROTO_ROOTWIN)) { gtk_drag_drop (info->proxy_source, time); } @@ -2245,8 +2249,9 @@ gtk_drag_dest_drop (GtkWidget *widget, dest_window, proto, current_event->dnd.x_root, current_event->dnd.y_root, - context->suggested_action, - context->actions, time); + gdk_drag_context_get_suggested_action (context), + gdk_drag_context_get_actions (context), + time); if (!site->proxy_window && dest_window) g_object_unref (dest_window); @@ -2415,8 +2420,7 @@ gtk_drag_begin_internal (GtkWidget *widget, } else { - gdk_display_get_device_state (gtk_widget_get_display (widget), pointer, - &info->cur_screen, &info->cur_x, &info->cur_y, NULL); + gdk_device_get_position (pointer, &info->cur_screen, &info->cur_x, &info->cur_y); } g_signal_emit_by_name (widget, "drag-begin", info->context); @@ -3024,7 +3028,6 @@ gtk_drag_set_icon_widget (GdkDragContext *context, gint hot_y) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (GTK_IS_WIDGET (widget)); gtk_drag_set_icon_window (context, widget, hot_x, hot_y, FALSE); @@ -3097,7 +3100,7 @@ set_icon_stock_pixbuf (GdkDragContext *context, g_return_if_fail (pixbuf != NULL || stock_id != NULL); g_return_if_fail (pixbuf == NULL || stock_id == NULL); - screen = gdk_window_get_screen (context->source_window); + screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context)); window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND); @@ -3109,8 +3112,8 @@ set_icon_stock_pixbuf (GdkDragContext *context, if (stock_id) { - pixbuf = gtk_widget_render_icon (window, stock_id, - GTK_ICON_SIZE_DND, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (window, stock_id, + GTK_ICON_SIZE_DND); if (!pixbuf) { @@ -3123,7 +3126,7 @@ set_icon_stock_pixbuf (GdkDragContext *context, else g_object_ref (pixbuf); - display = gdk_window_get_display (context->source_window); + display = gdk_window_get_display (gdk_drag_context_get_source_window (context)); width = gdk_pixbuf_get_width (pixbuf); height = gdk_pixbuf_get_height (pixbuf); @@ -3173,7 +3176,6 @@ gtk_drag_set_icon_pixbuf (GdkDragContext *context, gint hot_y) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (GDK_IS_PIXBUF (pixbuf)); set_icon_stock_pixbuf (context, NULL, pixbuf, hot_x, hot_y, FALSE); @@ -3196,7 +3198,6 @@ gtk_drag_set_icon_stock (GdkDragContext *context, gint hot_y) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (stock_id != NULL); set_icon_stock_pixbuf (context, stock_id, NULL, hot_x, hot_y, FALSE); @@ -3264,13 +3265,12 @@ gtk_drag_set_icon_surface (GdkDragContext *context, cairo_pattern_t *pattern; g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (surface != NULL); _gtk_cairo_surface_extents (surface, &extents); - screen = gdk_window_get_screen (context->source_window); + screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context)); window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DND); @@ -3359,10 +3359,9 @@ gtk_drag_set_icon_name (GdkDragContext *context, gint width, height, icon_size; g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); g_return_if_fail (icon_name != NULL); - screen = gdk_window_get_screen (context->source_window); + screen = gdk_window_get_screen (gdk_drag_context_get_source_window (context)); g_return_if_fail (screen != NULL); settings = gtk_settings_get_for_screen (screen); @@ -3395,7 +3394,6 @@ void gtk_drag_set_icon_default (GdkDragContext *context) { g_return_if_fail (GDK_IS_DRAG_CONTEXT (context)); - g_return_if_fail (context->is_source); gtk_drag_set_icon_stock (context, GTK_STOCK_DND, -2, -2); } @@ -3438,7 +3436,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget, { if (info->proxy_dest->proxy_drop_wait) { - gboolean result = context->action != 0; + gboolean result = gdk_drag_context_get_selected_action (context) != 0; /* Aha - we can finally pass the MOTIF DROP on... */ gdk_drop_reply (info->proxy_dest->context, result, info->proxy_dest->proxy_drop_time); @@ -3450,7 +3448,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget, else { gdk_drag_status (info->proxy_dest->context, - event->dnd.context->action, + gdk_drag_context_get_selected_action (event->dnd.context), event->dnd.time); } } @@ -3458,7 +3456,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget, else if (info->have_grab) { cursor = gtk_drag_get_cursor (gtk_widget_get_display (widget), - event->dnd.context->action, + gdk_drag_context_get_selected_action (event->dnd.context), info); if (info->cursor != cursor) { @@ -3528,7 +3526,7 @@ gtk_drag_source_check_selection (GtkDragSourceInfo *info, tmp_list = tmp_list->next; } - if (info->context->protocol == GDK_DRAG_PROTO_MOTIF) + if (gdk_drag_context_get_protocol (info->context) == GDK_DRAG_PROTO_MOTIF) { gtk_selection_add_target (info->ipc_widget, selection, @@ -3642,7 +3640,7 @@ static void gtk_drag_drop (GtkDragSourceInfo *info, guint32 time) { - if (info->context->protocol == GDK_DRAG_PROTO_ROOTWIN) + if (gdk_drag_context_get_protocol (info->context) == GDK_DRAG_PROTO_ROOTWIN) { GtkSelectionData selection_data; GList *tmp_list; @@ -3803,7 +3801,7 @@ gtk_drag_selection_get (GtkWidget *widget, info->proxy_dest->proxy_data = selection_data; gtk_drag_get_data (info->widget, info->proxy_dest->context, - selection_data->target, + gtk_selection_data_get_target (selection_data), time); gtk_main (); info->proxy_dest->proxy_data = NULL; @@ -3811,7 +3809,7 @@ gtk_drag_selection_get (GtkWidget *widget, else { if (gtk_target_list_find (info->target_list, - selection_data->target, + gtk_selection_data_get_target (selection_data), &target_info)) { g_signal_emit_by_name (info->widget, "drag-data-get", @@ -3897,7 +3895,7 @@ gtk_drag_source_info_destroy (GtkDragSourceInfo *info) { if (info->drag_cursors[i] != NULL) { - gdk_cursor_unref (info->drag_cursors[i]); + g_object_unref (info->drag_cursors[i]); info->drag_cursors[i] = NULL; } } @@ -4156,8 +4154,8 @@ gtk_drag_cancel (GtkDragSourceInfo *info, GtkDragResult result, guint32 time) *************************************************************/ static gboolean -gtk_drag_motion_cb (GtkWidget *widget, - GdkEventMotion *event, +gtk_drag_motion_cb (GtkWidget *widget, + GdkEventMotion *event, gpointer data) { GtkDragSourceInfo *info = (GtkDragSourceInfo *)data; @@ -4166,17 +4164,16 @@ gtk_drag_motion_cb (GtkWidget *widget, if (event->is_hint) { - GdkDisplay *display = gtk_widget_get_display (widget); - - gdk_display_get_device_state (display, event->device, - &screen, &x_root, &y_root, NULL); + gdk_device_get_position (event->device, &screen, &x_root, &y_root); event->x_root = x_root; event->y_root = y_root; } else screen = gdk_event_get_screen ((GdkEvent *)event); - gtk_drag_update (info, screen, event->x_root, event->y_root, (GdkEvent *) event); + x_root = (gint)(event->x_root + 0.5); + y_root = (gint)(event->y_root + 0.5); + gtk_drag_update (info, screen, x_root, y_root, (GdkEvent *) event); return TRUE; } @@ -4210,41 +4207,49 @@ gtk_drag_key_cb (GtkWidget *widget, if (event->type == GDK_KEY_PRESS) { switch (event->keyval) - { - case GDK_KEY_Escape: - gtk_drag_cancel (info, GTK_DRAG_RESULT_USER_CANCELLED, event->time); - return TRUE; +{ + case GDK_KEY_Escape: + gtk_drag_cancel (info, GTK_DRAG_RESULT_USER_CANCELLED, event->time); + return TRUE; - case GDK_KEY_space: - case GDK_KEY_Return: + case GDK_KEY_space: + case GDK_KEY_Return: case GDK_KEY_ISO_Enter: - case GDK_KEY_KP_Enter: - case GDK_KEY_KP_Space: - gtk_drag_end (info, event->time); - gtk_drag_drop (info, event->time); - return TRUE; + case GDK_KEY_KP_Enter: + case GDK_KEY_KP_Space: + if ((gdk_drag_context_get_selected_action (info->context) != 0) && + (gdk_drag_context_get_dest_window (info->context) != NULL)) + { + gtk_drag_end (info, event->time); + gtk_drag_drop (info, event->time); + } + else + { + gtk_drag_cancel (info, GTK_DRAG_RESULT_NO_TARGET, event->time); + } - case GDK_KEY_Up: - case GDK_KEY_KP_Up: - dy = (state & GDK_MOD1_MASK) ? -BIG_STEP : -SMALL_STEP; - break; - - case GDK_KEY_Down: - case GDK_KEY_KP_Down: - dy = (state & GDK_MOD1_MASK) ? BIG_STEP : SMALL_STEP; - break; - - case GDK_KEY_Left: - case GDK_KEY_KP_Left: - dx = (state & GDK_MOD1_MASK) ? -BIG_STEP : -SMALL_STEP; - break; - - case GDK_KEY_Right: - case GDK_KEY_KP_Right: - dx = (state & GDK_MOD1_MASK) ? BIG_STEP : SMALL_STEP; - break; - } - + return TRUE; + + case GDK_KEY_Up: + case GDK_KEY_KP_Up: + dy = (state & GDK_MOD1_MASK) ? -BIG_STEP : -SMALL_STEP; + break; + + case GDK_KEY_Down: + case GDK_KEY_KP_Down: + dy = (state & GDK_MOD1_MASK) ? BIG_STEP : SMALL_STEP; + break; + + case GDK_KEY_Left: + case GDK_KEY_KP_Left: + dx = (state & GDK_MOD1_MASK) ? -BIG_STEP : -SMALL_STEP; + break; + + case GDK_KEY_Right: + case GDK_KEY_KP_Right: + dx = (state & GDK_MOD1_MASK) ? BIG_STEP : SMALL_STEP; + break; + } } /* Now send a "motion" so that the modifier state is updated */ @@ -4261,9 +4266,9 @@ gtk_drag_key_cb (GtkWidget *widget, { info->cur_x += dx; info->cur_y += dy; - gdk_display_warp_device (gtk_widget_get_display (widget), pointer, - gtk_widget_get_screen (widget), - info->cur_x, info->cur_y); + gdk_device_warp (pointer, + gtk_widget_get_screen (widget), + info->cur_x, info->cur_y); } gtk_drag_update (info, info->cur_screen, info->cur_x, info->cur_y, (GdkEvent *)event); @@ -4330,7 +4335,8 @@ gtk_drag_button_release_cb (GtkWidget *widget, if (event->button != info->button) return FALSE; - if ((info->context->action != 0) && (info->context->dest_window != NULL)) + if ((gdk_drag_context_get_selected_action (info->context) != 0) && + (gdk_drag_context_get_dest_window (info->context) != NULL)) { gtk_drag_end (info, event->time); gtk_drag_drop (info, event->time); diff --git a/gtk/gtkdrawingarea.c b/gtk/gtkdrawingarea.c index b3a2e6c39a..6f8272b154 100644 --- a/gtk/gtkdrawingarea.c +++ b/gtk/gtkdrawingarea.c @@ -21,7 +21,7 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" @@ -29,9 +29,109 @@ #include "gtkintl.h" +/** + * SECTION:gtkdrawingarea + * @Short_description: A widget for custom user interface elements + * @Title: GtkDrawingArea + * @See_also: #GtkImage + * + * The #GtkDrawingArea widget is used for creating custom user interface + * elements. It's essentially a blank widget; you can draw on it. After + * creating a drawing area, the application may want to connect to: + * + * + * + * + * Mouse and button press signals to respond to input from + * the user. (Use gtk_widget_add_events() to enable events + * you wish to receive.) + * + * + * + * + * The #GtkWidget::realize signal to take any necessary actions + * when the widget is instantiated on a particular display. + * (Create GDK resources in response to this signal.) + * + * + * + * + * The #GtkWidget::configure-event signal to take any necessary + * actions when the widget changes size. + * + * + * + * + * The #GtkWidget::draw signal to handle redrawing the + * contents of the widget. + * + * + * + * + * The following code portion demonstrates using a drawing + * area to display a circle in the normal widget foreground + * color. + * + * Note that GDK automatically clears the exposed area to the + * background color before sending the expose event, and that + * drawing is implicitly clipped to the exposed area. + * + * + * Simple GtkDrawingArea usage + * + * gboolean + * draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data) + * { + * guint width, height; + * GdkRGBA color; + * + * width = gtk_widget_get_allocated_width (widget); + * height = gtk_widget_get_allocated_height (widget); + * cairo_arc (cr, + * width / 2.0, height / 2.0, + * MIN (width, height) / 2.0, + * 0, 2 * G_PI); + * + * gtk_style_context_get_color (gtk_widget_get_style_context (widget), + * 0, + * &color); + * gdk_cairo_set_source_rgba (cr, &color); + * + * cairo_fill (cr); + * + * return FALSE; + * } + * [...] + * GtkWidget *drawing_area = gtk_drawing_area_new (); + * gtk_widget_set_size_request (drawing_area, 100, 100); + * g_signal_connect (G_OBJECT (drawing_area), "draw", + * G_CALLBACK (draw_callback), NULL); + * + * + * + * Draw signals are normally delivered when a drawing area first comes + * onscreen, or when it's covered by another window and then uncovered. + * You can also force an expose event by adding to the "damage region" + * of the drawing area's window; gtk_widget_queue_draw_area() and + * gdk_window_invalidate_rect() are equally good ways to do this. + * You'll then get a draw signal for the invalid region. + * + * The available routines for drawing are documented on the GDK Drawing Primitives page + * and the cairo documentation. + * + * To receive mouse events on a drawing area, you will need to enable + * them with gtk_widget_add_events(). To receive keyboard events, you + * will need to set the #GTK_CAN_FOCUS flag on the drawing area, and + * should probably draw some user-visible indication that the drawing + * area is focused. Use the GTK_HAS_FOCUS() macro in your expose event + * handler to decide whether to draw the focus indicator. See + * gtk_paint_focus() for one way to draw focus. + */ + static void gtk_drawing_area_realize (GtkWidget *widget); static void gtk_drawing_area_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static void gtk_drawing_area_send_configure (GtkDrawingArea *darea); G_DEFINE_TYPE (GtkDrawingArea, gtk_drawing_area, GTK_TYPE_WIDGET) @@ -48,10 +148,15 @@ gtk_drawing_area_class_init (GtkDrawingAreaClass *class) static void gtk_drawing_area_init (GtkDrawingArea *darea) { - darea->draw_data = NULL; } - +/** + * gtk_drawing_area_new: + * + * Creates a new drawing area. + * + * Returns: a new #GtkDrawingArea + */ GtkWidget* gtk_drawing_area_new (void) { @@ -93,8 +198,8 @@ gtk_drawing_area_realize (GtkWidget *widget) gdk_window_set_user_data (window, darea); gtk_widget_set_window (widget, window); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + window); } gtk_drawing_area_send_configure (GTK_DRAWING_AREA (widget)); @@ -102,7 +207,7 @@ gtk_drawing_area_realize (GtkWidget *widget) static void gtk_drawing_area_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { g_return_if_fail (GTK_IS_DRAWING_AREA (widget)); g_return_if_fail (allocation != NULL); @@ -136,7 +241,7 @@ gtk_drawing_area_send_configure (GtkDrawingArea *darea) event->configure.y = allocation.y; event->configure.width = allocation.width; event->configure.height = allocation.height; - + gtk_widget_event (widget, event); gdk_event_free (event); } diff --git a/gtk/gtkdrawingarea.h b/gtk/gtkdrawingarea.h index 07283bbfb6..20365831b2 100644 --- a/gtk/gtkdrawingarea.h +++ b/gtk/gtkdrawingarea.h @@ -52,7 +52,8 @@ struct _GtkDrawingArea { GtkWidget widget; - gpointer GSEAL (draw_data); + /*< private >*/ + gpointer dummy; }; struct _GtkDrawingAreaClass @@ -67,8 +68,8 @@ struct _GtkDrawingAreaClass }; -GType gtk_drawing_area_get_type (void) G_GNUC_CONST; -GtkWidget* gtk_drawing_area_new (void); +GType gtk_drawing_area_get_type (void) G_GNUC_CONST; +GtkWidget* gtk_drawing_area_new (void); G_END_DECLS diff --git a/gtk/gtkeditable.h b/gtk/gtkeditable.h index 5ccebce9f3..90849ffaac 100644 --- a/gtk/gtkeditable.h +++ b/gtk/gtkeditable.h @@ -51,8 +51,8 @@ struct _GtkEditableInterface /* signals */ void (* insert_text) (GtkEditable *editable, - const gchar *text, - gint length, + const gchar *new_text, + gint new_text_length, gint *position); void (* delete_text) (GtkEditable *editable, gint start_pos, @@ -61,8 +61,8 @@ struct _GtkEditableInterface /* vtable */ void (* do_insert_text) (GtkEditable *editable, - const gchar *text, - gint length, + const gchar *new_text, + gint new_text_length, gint *position); void (* do_delete_text) (GtkEditable *editable, gint start_pos, diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 2e584762e0..0b905db13f 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -33,7 +33,6 @@ #include #include -#include "gdk/gdkkeysyms.h" #include "gtkalignment.h" #include "gtkbindings.h" #include "gtkcelleditable.h" @@ -59,6 +58,7 @@ #include "gtkwindow.h" #include "gtktreeview.h" #include "gtktreeselection.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkentryprivate.h" #include "gtkcelllayout.h" @@ -353,8 +353,10 @@ static void gtk_entry_get_preferred_height (GtkWidget *widget, static void gtk_entry_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gtk_entry_draw_frame (GtkWidget *widget, + GtkStyleContext *context, cairo_t *cr); static void gtk_entry_draw_progress (GtkWidget *widget, + GtkStyleContext *context, cairo_t *cr); static gint gtk_entry_draw (GtkWidget *widget, cairo_t *cr); @@ -377,8 +379,7 @@ static gint gtk_entry_focus_in (GtkWidget *widget, static gint gtk_entry_focus_out (GtkWidget *widget, GdkEventFocus *event); static void gtk_entry_grab_focus (GtkWidget *widget); -static void gtk_entry_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_entry_style_updated (GtkWidget *widget); static gboolean gtk_entry_query_tooltip (GtkWidget *widget, gint x, gint y, @@ -386,8 +387,8 @@ static gboolean gtk_entry_query_tooltip (GtkWidget *widget, GtkTooltip *tooltip); static void gtk_entry_direction_changed (GtkWidget *widget, GtkTextDirection previous_dir); -static void gtk_entry_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_entry_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static void gtk_entry_screen_changed (GtkWidget *widget, GdkScreen *old_screen); @@ -681,12 +682,12 @@ gtk_entry_class_init (GtkEntryClass *class) widget_class->focus_in_event = gtk_entry_focus_in; widget_class->focus_out_event = gtk_entry_focus_out; widget_class->grab_focus = gtk_entry_grab_focus; - widget_class->style_set = gtk_entry_style_set; + widget_class->style_updated = gtk_entry_style_updated; widget_class->query_tooltip = gtk_entry_query_tooltip; widget_class->drag_begin = gtk_entry_drag_begin; widget_class->drag_end = gtk_entry_drag_end; widget_class->direction_changed = gtk_entry_direction_changed; - widget_class->state_changed = gtk_entry_state_changed; + widget_class->state_flags_changed = gtk_entry_state_flags_changed; widget_class->screen_changed = gtk_entry_screen_changed; widget_class->mnemonic_activate = gtk_entry_mnemonic_activate; @@ -1151,7 +1152,7 @@ gtk_entry_class_init (GtkEntryClass *class) g_param_spec_boolean ("primary-icon-activatable", P_("Primary icon activatable"), P_("Whether the primary icon is activatable"), - FALSE, + TRUE, GTK_PARAM_READWRITE)); /** @@ -1172,7 +1173,7 @@ gtk_entry_class_init (GtkEntryClass *class) g_param_spec_boolean ("secondary-icon-activatable", P_("Secondary icon activatable"), P_("Whether the secondary icon is activatable"), - FALSE, + TRUE, GTK_PARAM_READWRITE)); @@ -2309,10 +2310,9 @@ find_invisible_char (GtkWidget *widget) 0x273a /* SIXTEEN POINTED ASTERISK */ }; - if (gtk_widget_get_style (widget)) - gtk_widget_style_get (widget, - "invisible-char", &invisible_chars[0], - NULL); + gtk_widget_style_get (widget, + "invisible-char", &invisible_chars[0], + NULL); layout = gtk_widget_create_pango_layout (widget, NULL); @@ -2347,6 +2347,7 @@ find_invisible_char (GtkWidget *widget) static void gtk_entry_init (GtkEntry *entry) { + GtkStyleContext *context; GtkEntryPrivate *priv; entry->priv = G_TYPE_INSTANCE_GET_PRIVATE (entry, @@ -2393,6 +2394,8 @@ gtk_entry_init (GtkEntry *entry) g_signal_connect (priv->im_context, "delete-surrounding", G_CALLBACK (gtk_entry_delete_surrounding_cb), entry); + context = gtk_widget_get_style_context (GTK_WIDGET (entry)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_ENTRY); } static gint @@ -2696,7 +2699,7 @@ update_cursors (GtkWidget *widget) display = gtk_widget_get_display (widget); cursor = gdk_cursor_new_for_display (display, GDK_XTERM); gdk_window_set_cursor (icon_info->window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } else { @@ -2772,6 +2775,8 @@ gtk_entry_map (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_entry_parent_class)->map (widget); + gdk_window_show (priv->text_area); + for (i = 0; i < MAX_ICONS; i++) { if ((icon_info = priv->icons[i]) != NULL) @@ -2801,6 +2806,8 @@ gtk_entry_unmap (GtkWidget *widget) } } + gdk_window_hide (priv->text_area); + GTK_WIDGET_CLASS (gtk_entry_parent_class)->unmap (widget); } @@ -2856,11 +2863,7 @@ gtk_entry_realize (GtkWidget *widget) gdk_window_set_user_data (priv->text_area, entry); if (attributes_mask & GDK_WA_CURSOR) - gdk_cursor_unref (attributes.cursor); - - gtk_widget_style_attach (widget); - - gdk_window_show (priv->text_area); + g_object_unref (attributes.cursor); gtk_im_context_set_client_window (priv->im_context, priv->text_area); @@ -2934,14 +2937,17 @@ _gtk_entry_get_borders (GtkEntry *entry, { GtkEntryPrivate *priv = entry->priv; GtkWidget *widget = GTK_WIDGET (entry); - GtkStyle *style; if (priv->has_frame) { - style = gtk_widget_get_style (widget); + GtkStyleContext *context; + GtkBorder padding; - *xborder = style->xthickness; - *yborder = style->ythickness; + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, 0, &padding); + + *xborder = padding.left; + *yborder = padding.top; } else { @@ -2967,14 +2973,19 @@ gtk_entry_get_preferred_width (GtkWidget *widget, gint xborder, yborder; GtkBorder inner_border; PangoContext *context; + GtkStyleContext *style_context; + GtkStateFlags state; gint icon_widths = 0; gint icon_width, i; gint width; - gtk_widget_ensure_style (widget); context = gtk_widget_get_pango_context (widget); + + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, + gtk_style_context_get_font (style_context, state), pango_context_get_language (context)); _gtk_entry_get_borders (entry, &xborder, &yborder); @@ -3017,13 +3028,18 @@ gtk_entry_get_preferred_height (GtkWidget *widget, PangoFontMetrics *metrics; gint xborder, yborder; GtkBorder inner_border; + GtkStyleContext *style_context; + GtkStateFlags state; PangoContext *context; gint height; - gtk_widget_ensure_style (widget); context = gtk_widget_get_pango_context (widget); + + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, + gtk_style_context_get_font (style_context, state), pango_context_get_language (context)); priv->ascent = pango_font_metrics_get_ascent (metrics); @@ -3226,55 +3242,6 @@ gtk_entry_size_allocate (GtkWidget *widget, } } -/* Kudos to the gnome-panel guys. */ -static void -colorshift_pixbuf (GdkPixbuf *dest, - GdkPixbuf *src, - gint shift) -{ - gint i, j; - gint width, height, has_alpha, src_rowstride, dest_rowstride; - guchar *target_pixels; - guchar *original_pixels; - guchar *pix_src; - guchar *pix_dest; - int val; - guchar r, g, b; - - has_alpha = gdk_pixbuf_get_has_alpha (src); - width = gdk_pixbuf_get_width (src); - height = gdk_pixbuf_get_height (src); - src_rowstride = gdk_pixbuf_get_rowstride (src); - dest_rowstride = gdk_pixbuf_get_rowstride (dest); - original_pixels = gdk_pixbuf_get_pixels (src); - target_pixels = gdk_pixbuf_get_pixels (dest); - - for (i = 0; i < height; i++) - { - pix_dest = target_pixels + i * dest_rowstride; - pix_src = original_pixels + i * src_rowstride; - - for (j = 0; j < width; j++) - { - r = *(pix_src++); - g = *(pix_src++); - b = *(pix_src++); - - val = r + shift; - *(pix_dest++) = CLAMP (val, 0, 255); - - val = g + shift; - *(pix_dest++) = CLAMP (val, 0, 255); - - val = b + shift; - *(pix_dest++) = CLAMP (val, 0, 255); - - if (has_alpha) - *(pix_dest++) = *(pix_src++); - } - } -} - static gboolean should_prelight (GtkEntry *entry, GtkEntryIconPosition icon_pos) @@ -3283,7 +3250,7 @@ should_prelight (GtkEntry *entry, EntryIconInfo *icon_info = priv->icons[icon_pos]; gboolean prelight; - if (!icon_info) + if (!icon_info) return FALSE; if (icon_info->nonactivatable && icon_info->target_list == NULL) @@ -3309,6 +3276,9 @@ draw_icon (GtkWidget *widget, EntryIconInfo *icon_info = priv->icons[icon_pos]; GdkPixbuf *pixbuf; gint x, y, width, height; + GtkStyleContext *context; + GtkIconSource *icon_source; + GtkStateFlags state; if (!icon_info) return; @@ -3344,28 +3314,23 @@ draw_icon (GtkWidget *widget, x = (width - gdk_pixbuf_get_width (pixbuf)) / 2; y = (height - gdk_pixbuf_get_height (pixbuf)) / 2; - if (!gtk_widget_is_sensitive (widget) || - icon_info->insensitive) - { - GdkPixbuf *temp_pixbuf; + icon_source = gtk_icon_source_new (); + gtk_icon_source_set_pixbuf (icon_source, pixbuf); + gtk_icon_source_set_state_wildcarded (icon_source, TRUE); - temp_pixbuf = gdk_pixbuf_copy (pixbuf); - gdk_pixbuf_saturate_and_pixelate (pixbuf, - temp_pixbuf, - 0.8f, - TRUE); - g_object_unref (pixbuf); - pixbuf = temp_pixbuf; - } + state = 0; + if (!gtk_widget_is_sensitive (widget) || icon_info->insensitive) + state |= GTK_STATE_FLAG_INSENSITIVE; else if (icon_info->prelight) - { - GdkPixbuf *temp_pixbuf; + state |= GTK_STATE_FLAG_PRELIGHT; - temp_pixbuf = gdk_pixbuf_copy (pixbuf); - colorshift_pixbuf (temp_pixbuf, pixbuf, 30); - g_object_unref (pixbuf); - pixbuf = temp_pixbuf; - } + context = gtk_widget_get_style_context (widget); + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + pixbuf = gtk_render_icon_pixbuf (context, icon_source, (GtkIconSize)-1); + gtk_style_context_restore (context); + + gtk_icon_source_free (icon_source); gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y); cairo_paint (cr); @@ -3375,15 +3340,14 @@ draw_icon (GtkWidget *widget, static void -gtk_entry_draw_frame (GtkWidget *widget, - cairo_t *cr) +gtk_entry_draw_frame (GtkWidget *widget, + GtkStyleContext *context, + cairo_t *cr) { GtkEntry *entry = GTK_ENTRY (widget); GtkEntryPrivate *priv = entry->priv; - GtkStyle *style; GdkWindow *window; gint x = 0, y = 0, width, height; - GtkStateType state; GtkAllocation allocation; gint frame_x, frame_y; @@ -3418,20 +3382,14 @@ gtk_entry_draw_frame (GtkWidget *widget, height -= 2 * priv->focus_width; } - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); - - gtk_paint_flat_box (style, cr, - state, GTK_SHADOW_NONE, - widget, "entry_bg", - x, y, width, height); + gtk_render_background (context, cr, + x, y, width, height); if (priv->has_frame) - gtk_paint_shadow (style, cr, - state, priv->shadow_type, - widget, "entry", x, y, width, height); + gtk_render_frame (context, cr, + x, y, width, height); - gtk_entry_draw_progress (widget, cr); + gtk_entry_draw_progress (widget, context, cr); if (gtk_widget_has_focus (widget) && !priv->interior_focus) { @@ -3440,10 +3398,8 @@ gtk_entry_draw_frame (GtkWidget *widget, width += 2 * priv->focus_width; height += 2 * priv->focus_width; - gtk_paint_focus (style, cr, - gtk_widget_get_state (widget), - widget, "entry", - 0, 0, width, height); + gtk_render_focus (context, cr, + 0, 0, width, height); } cairo_restore (cr); @@ -3514,26 +3470,24 @@ get_progress_area (GtkWidget *widget, } static void -gtk_entry_draw_progress (GtkWidget *widget, - cairo_t *cr) +gtk_entry_draw_progress (GtkWidget *widget, + GtkStyleContext *context, + cairo_t *cr) { gint x, y, width, height; - GtkStateType state; get_progress_area (widget, &x, &y, &width, &height); if ((width <= 0) || (height <= 0)) return; - state = GTK_STATE_SELECTED; - if (!gtk_widget_get_sensitive (widget)) - state = GTK_STATE_INSENSITIVE; + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); - gtk_paint_box (gtk_widget_get_style (widget), cr, - state, GTK_SHADOW_OUT, - widget, "entry-progress", - x, y, - width, height); + gtk_render_activity (context, cr, + x, y, width, height); + + gtk_style_context_restore (context); } static gint @@ -3541,20 +3495,24 @@ gtk_entry_draw (GtkWidget *widget, cairo_t *cr) { GtkEntry *entry = GTK_ENTRY (widget); - GtkStyle *style; - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state; GtkEntryPrivate *priv = entry->priv; int i; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - state = gtk_widget_has_focus (widget) ? - GTK_STATE_ACTIVE : gtk_widget_get_state (widget); + if (gtk_widget_has_focus (widget)) + state |= GTK_STATE_FLAG_FOCUSED; + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget))) { /* Draw entry_bg, shadow, progress and focus */ - gtk_entry_draw_frame (widget, cr); + gtk_entry_draw_frame (widget, context, cr); /* Draw text and cursor */ cairo_save (cr); @@ -3592,6 +3550,8 @@ gtk_entry_draw (GtkWidget *widget, } } + gtk_style_context_restore (context); + return FALSE; } @@ -4019,7 +3979,7 @@ gtk_entry_motion_notify (GtkWidget *widget, cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), GDK_XTERM); gdk_window_set_cursor (priv->text_area, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); priv->mouse_cursor_obscured = FALSE; } @@ -4132,7 +4092,7 @@ set_invisible_cursor (GdkWindow *window) gdk_window_set_cursor (window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -4309,8 +4269,8 @@ gtk_entry_direction_changed (GtkWidget *widget, } static void -gtk_entry_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_entry_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { GtkEntry *entry = GTK_ENTRY (widget); GtkEntryPrivate *priv = entry->priv; @@ -4326,7 +4286,7 @@ gtk_entry_state_changed (GtkWidget *widget, gdk_window_set_cursor (priv->text_area, cursor); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); priv->mouse_cursor_obscured = FALSE; @@ -4508,8 +4468,7 @@ icon_margin_changed (GtkEntry *entry) } static void -gtk_entry_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_entry_style_updated (GtkWidget *widget) { GtkEntry *entry = GTK_ENTRY (widget); GtkEntryPrivate *priv = entry->priv; @@ -5596,7 +5555,9 @@ get_layout_position (GtkEntry *entry, } static void -draw_text_with_color (GtkEntry *entry, cairo_t *cr, GdkColor *default_color) +draw_text_with_color (GtkEntry *entry, + cairo_t *cr, + GdkRGBA *default_color) { GtkEntryPrivate *priv = entry->priv; PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE); @@ -5611,7 +5572,7 @@ draw_text_with_color (GtkEntry *entry, cairo_t *cr, GdkColor *default_color) get_layout_position (entry, &x, &y); cairo_move_to (cr, x, y); - gdk_cairo_set_source_color (cr, default_color); + gdk_cairo_set_source_rgba (cr, default_color); pango_cairo_show_layout (cr, layout); if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos)) @@ -5619,25 +5580,22 @@ draw_text_with_color (GtkEntry *entry, cairo_t *cr, GdkColor *default_color) gint *ranges; gint n_ranges, i; PangoRectangle logical_rect; - GdkColor *selection_color, *text_color; + GdkRGBA selection_color, text_color; GtkBorder inner_border; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + context = gtk_widget_get_style_context (widget); pango_layout_get_pixel_extents (layout, NULL, &logical_rect); gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges); - style = gtk_widget_get_style (widget); + state = GTK_STATE_FLAG_SELECTED; if (gtk_widget_has_focus (widget)) - { - selection_color = &style->base [GTK_STATE_SELECTED]; - text_color = &style->text [GTK_STATE_SELECTED]; - } - else - { - selection_color = &style->base [GTK_STATE_ACTIVE]; - text_color = &style->text [GTK_STATE_ACTIVE]; - } + state |= GTK_STATE_FLAG_FOCUSED; + + gtk_style_context_get_background_color (context, state, &selection_color); + gtk_style_context_get_color (context, state, &text_color); _gtk_entry_effective_inner_border (entry, &inner_border); @@ -5650,11 +5608,11 @@ draw_text_with_color (GtkEntry *entry, cairo_t *cr, GdkColor *default_color) cairo_clip (cr); - gdk_cairo_set_source_color (cr, selection_color); + gdk_cairo_set_source_rgba (cr, &selection_color); cairo_paint (cr); cairo_move_to (cr, x, y); - gdk_cairo_set_source_color (cr, text_color); + gdk_cairo_set_source_rgba (cr, &text_color); pango_cairo_show_layout (cr, layout); g_free (ranges); @@ -5668,9 +5626,9 @@ gtk_entry_draw_text (GtkEntry *entry, { GtkEntryPrivate *priv = entry->priv; GtkWidget *widget = GTK_WIDGET (entry); - GtkStateType state; - GtkStyle *style; - GdkColor text_color, bar_text_color; + GtkStateFlags state = 0; + GdkRGBA text_color, bar_text_color; + GtkStyleContext *context; gint pos_x, pos_y; gint width, height; gint progress_x, progress_y, progress_width, progress_height; @@ -5679,13 +5637,17 @@ gtk_entry_draw_text (GtkEntry *entry, /* Nothing to display at all */ if (gtk_entry_get_display_mode (entry) == DISPLAY_BLANK) return; - - state = GTK_STATE_SELECTED; - if (!gtk_widget_get_sensitive (widget)) - state = GTK_STATE_INSENSITIVE; - style = gtk_widget_get_style (widget); - text_color = style->text[gtk_widget_get_state (widget)]; - bar_text_color = style->fg[state]; + + state = gtk_widget_get_state_flags (widget); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_get_color (context, state, &text_color); + + /* Get foreground color for progressbars */ + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); + gtk_style_context_get_color (context, state, &bar_text_color); + gtk_style_context_restore (context); get_progress_area (widget, &progress_x, &progress_y, @@ -5698,7 +5660,7 @@ gtk_entry_draw_text (GtkEntry *entry, /* If the color is the same, or the progress area has a zero * size, then we only need to draw once. */ - if ((text_color.pixel == bar_text_color.pixel) || + if (gdk_rgba_equal (&text_color, &bar_text_color) || ((progress_width == 0) || (progress_height == 0))) { draw_text_with_color (entry, cr, &text_color); @@ -5869,10 +5831,18 @@ gtk_entry_draw_cursor (GtkEntry *entry, if (!block_at_line_end) { + GtkStyleContext *context; + GtkStateFlags state; + GdkRGBA color; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_background_color (context, state, &color); + gdk_cairo_rectangle (cr, &rect); cairo_clip (cr); cairo_move_to (cr, x, y); - gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->base[gtk_widget_get_state (widget)]); + gdk_cairo_set_source_rgba (cr, &color); pango_cairo_show_layout (cr, layout); } @@ -6153,6 +6123,8 @@ gtk_entry_move_adjustments (GtkEntry *entry) GtkAdjustment *adjustment; PangoContext *context; PangoFontMetrics *metrics; + GtkStyleContext *style_context; + GtkStateFlags state; gint x, layout_x, border_x, border_y; gint char_width; @@ -6170,8 +6142,11 @@ gtk_entry_move_adjustments (GtkEntry *entry) /* Approximate width of a char, so user can see what is ahead/behind */ context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + metrics = pango_context_get_metrics (context, + gtk_style_context_get_font (style_context, state), pango_context_get_language (context)); char_width = pango_font_metrics_get_approximate_char_width (metrics) / PANGO_SCALE; @@ -6634,15 +6609,13 @@ gtk_entry_ensure_pixbuf (GtkEntry *entry, case GTK_IMAGE_STOCK: state = gtk_widget_get_state_flags (widget); gtk_widget_set_state_flags (widget, 0, TRUE); - icon_info->pixbuf = gtk_widget_render_icon (widget, - icon_info->stock_id, - GTK_ICON_SIZE_MENU, - NULL); + icon_info->pixbuf = gtk_widget_render_icon_pixbuf (widget, + icon_info->stock_id, + GTK_ICON_SIZE_MENU); if (!icon_info->pixbuf) - icon_info->pixbuf = gtk_widget_render_icon (widget, - GTK_STOCK_MISSING_IMAGE, - GTK_ICON_SIZE_MENU, - NULL); + icon_info->pixbuf = gtk_widget_render_icon_pixbuf (widget, + GTK_STOCK_MISSING_IMAGE, + GTK_ICON_SIZE_MENU); gtk_widget_set_state_flags (widget, state, TRUE); break; @@ -6652,7 +6625,7 @@ gtk_entry_ensure_pixbuf (GtkEntry *entry, { icon_theme = gtk_icon_theme_get_for_screen (screen); settings = gtk_settings_get_for_screen (screen); - + gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU, &width, &height); @@ -6666,10 +6639,9 @@ gtk_entry_ensure_pixbuf (GtkEntry *entry, { state = gtk_widget_get_state_flags (widget); gtk_widget_set_state_flags (widget, 0, TRUE); - icon_info->pixbuf = gtk_widget_render_icon (widget, - GTK_STOCK_MISSING_IMAGE, - GTK_ICON_SIZE_MENU, - NULL); + icon_info->pixbuf = gtk_widget_render_icon_pixbuf (widget, + GTK_STOCK_MISSING_IMAGE, + GTK_ICON_SIZE_MENU); gtk_widget_set_state_flags (widget, state, TRUE); } } @@ -6700,10 +6672,9 @@ gtk_entry_ensure_pixbuf (GtkEntry *entry, { state = gtk_widget_get_state_flags (widget); gtk_widget_set_state_flags (widget, 0, TRUE); - icon_info->pixbuf = gtk_widget_render_icon (widget, - GTK_STOCK_MISSING_IMAGE, - GTK_ICON_SIZE_MENU, - NULL); + icon_info->pixbuf = gtk_widget_render_icon_pixbuf (widget, + GTK_STOCK_MISSING_IMAGE, + GTK_ICON_SIZE_MENU); gtk_widget_set_state_flags (widget, state, TRUE); } } @@ -7710,8 +7681,6 @@ gtk_entry_set_icon_from_stock (GtkEntry *entry, g_object_freeze_notify (G_OBJECT (entry)); - gtk_widget_ensure_style (GTK_WIDGET (entry)); - /* need to dup before clearing */ new_id = g_strdup (stock_id); @@ -7780,8 +7749,6 @@ gtk_entry_set_icon_from_icon_name (GtkEntry *entry, g_object_freeze_notify (G_OBJECT (entry)); - gtk_widget_ensure_style (GTK_WIDGET (entry)); - /* need to dup before clearing */ new_name = g_strdup (icon_name); @@ -7946,7 +7913,7 @@ gtk_entry_get_icon_activatable (GtkEntry *entry, priv = entry->priv; icon_info = priv->icons[icon_pos]; - return (icon_info != NULL && !icon_info->nonactivatable); + return (!icon_info || !icon_info->nonactivatable); } /** @@ -8467,8 +8434,8 @@ gtk_entry_set_icon_tooltip_text (GtkEntry *entry, priv = entry->priv; - if (!(icon_info = priv->icons[icon_pos])) - icon_info = priv->icons[icon_pos]; + if ((icon_info = priv->icons[icon_pos]) == NULL) + icon_info = construct_icon_info (GTK_WIDGET (entry), icon_pos); if (icon_info->tooltip) g_free (icon_info->tooltip); @@ -8547,8 +8514,8 @@ gtk_entry_set_icon_tooltip_markup (GtkEntry *entry, priv = entry->priv; - if (!(icon_info = priv->icons[icon_pos])) - icon_info = priv->icons[icon_pos]; + if ((icon_info = priv->icons[icon_pos]) == NULL) + icon_info = construct_icon_info (GTK_WIDGET (entry), icon_pos); if (icon_info->tooltip) g_free (icon_info->tooltip); @@ -8975,15 +8942,17 @@ gtk_entry_drag_motion (GtkWidget *widget, { GtkEntry *entry = GTK_ENTRY (widget); GtkEntryPrivate *priv = entry->priv; - GtkStyle *style; + GtkStyleContext *style_context; GtkWidget *source_widget; GdkDragAction suggested_action; gint new_position, old_position; gint sel1, sel2; + GtkBorder padding; - style = gtk_widget_get_style (widget); - x -= style->xthickness; - y -= style->ythickness; + style_context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (style_context, 0, &padding); + x -= padding.left; + y -= padding.top; old_position = priv->dnd_position; new_position = gtk_entry_find_position (entry, x + priv->scroll_offset); @@ -8992,7 +8961,7 @@ gtk_entry_drag_motion (GtkWidget *widget, gtk_drag_dest_find_target (widget, context, NULL) != GDK_NONE) { source_widget = gtk_drag_get_source_widget (context); - suggested_action = context->suggested_action; + suggested_action = gdk_drag_context_get_suggested_action (context); if (!gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &sel1, &sel2) || new_position < sel1 || new_position > sel2) @@ -9002,7 +8971,7 @@ gtk_entry_drag_motion (GtkWidget *widget, /* Default to MOVE, unless the user has * pressed ctrl or alt to affect available actions */ - if ((context->actions & GDK_ACTION_MOVE) != 0) + if ((gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0) suggested_action = GDK_ACTION_MOVE; } @@ -9043,14 +9012,16 @@ gtk_entry_drag_data_received (GtkWidget *widget, GtkEntry *entry = GTK_ENTRY (widget); GtkEntryPrivate *priv = entry->priv; GtkEditable *editable = GTK_EDITABLE (widget); - GtkStyle *style; + GtkStyleContext *style_context; + GtkBorder padding; gchar *str; str = (gchar *) gtk_selection_data_get_text (selection_data); - style = gtk_widget_get_style (widget); - x -= style->xthickness; - y -= style->ythickness; + style_context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (style_context, 0, &padding); + x -= padding.left; + y -= padding.top; if (str && priv->editable) { @@ -9079,7 +9050,7 @@ gtk_entry_drag_data_received (GtkWidget *widget, end_change (entry); } - gtk_drag_finish (context, TRUE, context->action == GDK_ACTION_MOVE, time); + gtk_drag_finish (context, TRUE, gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE, time); } else { @@ -10216,3 +10187,21 @@ keymap_state_changed (GdkKeymap *keymap, else remove_capslock_feedback (entry); } + +/* + * _gtk_entry_set_is_cell_renderer: + * @entry: a #GtkEntry + * @is_cell_renderer: new value + * + * This is a helper function for GtkComboBox. A GtkEntry in a GtkComboBox + * is supposed to behave like a GtkCellEditable when placed in a combo box. + * + * I.e take up it's allocation and get GtkEntry->is_cell_renderer = TRUE. + * + */ +void +_gtk_entry_set_is_cell_renderer (GtkEntry *entry, + gboolean is_cell_renderer) +{ + entry->priv->is_cell_renderer = is_cell_renderer; +} diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index a14303588b..77ec2b837e 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -17,12 +17,47 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:gtkentrycompletion + * @Short_description: Completion functionality for GtkEntry + * @Title: GtkEntryCompletion + * + * #GtkEntryCompletion is an auxiliary object to be used in conjunction with + * #GtkEntry to provide the completion functionality. It implements the + * #GtkCellLayout interface, to allow the user to add extra cells to the + * #GtkTreeView with completion matches. + * + * "Completion functionality" means that when the user modifies the text + * in the entry, #GtkEntryCompletion checks which rows in the model match + * the current content of the entry, and displays a list of matches. + * By default, the matching is done by comparing the entry text + * case-insensitively against the text column of the model (see + * gtk_entry_completion_set_text_column()), but this can be overridden + * with a custom match function (see gtk_entry_completion_set_match_func()). + * + * When the user selects a completion, the content of the entry is + * updated. By default, the content of the entry is replaced by the + * text column of the model, but this can be overridden by connecting + * to the #GtkEntryCompletion::match-selected signal and updating the + * entry in the signal handler. Note that you should return %TRUE from + * the signal handler to suppress the default behaviour. + * + * To add completion functionality to an entry, use gtk_entry_set_completion(). + * + * In addition to regular completion matches, which will be inserted into the + * entry when they are selected, #GtkEntryCompletion also allows to display + * "actions" in the popup window. Their appearance is similar to menuitems, + * to differentiate them clearly from completion strings. When an action is + * selected, the #GtkEntryCompletion::action-activated signal is emitted. + */ + #include "config.h" #include "gtkentrycompletion.h" #include "gtkentryprivate.h" #include "gtkcelllayout.h" +#include "gtkcellareabox.h" #include "gtkintl.h" #include "gtkcellrenderertext.h" @@ -34,7 +69,7 @@ #include "gtkvbox.h" #include "gtkwindow.h" #include "gtkentry.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkprivate.h" @@ -63,11 +98,17 @@ enum PROP_POPUP_COMPLETION, PROP_POPUP_SET_WIDTH, PROP_POPUP_SINGLE_MATCH, - PROP_INLINE_SELECTION + PROP_INLINE_SELECTION, + PROP_CELL_AREA }; -static void gtk_entry_completion_cell_layout_init (GtkCellLayoutIface *iface); +static void gtk_entry_completion_cell_layout_init (GtkCellLayoutIface *iface); +static GtkCellArea* gtk_entry_completion_get_area (GtkCellLayout *cell_layout); + +static GObject *gtk_entry_completion_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); static void gtk_entry_completion_set_property (GObject *object, guint prop_id, const GValue *value, @@ -76,30 +117,8 @@ static void gtk_entry_completion_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gtk_entry_completion_finalize (GObject *object); - -static void gtk_entry_completion_pack_start (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand); -static void gtk_entry_completion_pack_end (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand); -static void gtk_entry_completion_clear (GtkCellLayout *cell_layout); -static void gtk_entry_completion_add_attribute (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - const char *attribute, - gint column); -static void gtk_entry_completion_set_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy); -static void gtk_entry_completion_clear_attributes (GtkCellLayout *cell_layout, - GtkCellRenderer *cell); -static void gtk_entry_completion_reorder (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gint position); -static GList * gtk_entry_completion_get_cells (GtkCellLayout *cell_layout); +static void gtk_entry_completion_finalize (GObject *object); +static void gtk_entry_completion_dispose (GObject *object); static gboolean gtk_entry_completion_visible_func (GtkTreeModel *model, GtkTreeIter *iter, @@ -118,12 +137,12 @@ static gboolean gtk_entry_completion_action_button_press (GtkWidget *wi gpointer user_data); static void gtk_entry_completion_selection_changed (GtkTreeSelection *selection, gpointer data); -static gboolean gtk_entry_completion_list_enter_notify (GtkWidget *widget, - GdkEventCrossing *event, - gpointer data); -static gboolean gtk_entry_completion_list_motion_notify (GtkWidget *widget, - GdkEventMotion *event, - gpointer data); +static gboolean gtk_entry_completion_list_enter_notify (GtkWidget *widget, + GdkEventCrossing *event, + gpointer data); +static gboolean gtk_entry_completion_list_motion_notify (GtkWidget *widget, + GdkEventMotion *event, + gpointer data); static void gtk_entry_completion_insert_action (GtkEntryCompletion *completion, gint index, const gchar *string, @@ -135,13 +154,13 @@ static void gtk_entry_completion_action_data_func (GtkTreeViewColumn *tr gpointer data); static gboolean gtk_entry_completion_match_selected (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter); + GtkTreeModel *model, + GtkTreeIter *iter); static gboolean gtk_entry_completion_real_insert_prefix (GtkEntryCompletion *completion, - const gchar *prefix); + const gchar *prefix); static gboolean gtk_entry_completion_cursor_on_match (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter); + GtkTreeModel *model, + GtkTreeIter *iter); static gboolean gtk_entry_completion_insert_completion (GtkEntryCompletion *completion, GtkTreeModel *model, GtkTreeIter *iter); @@ -154,10 +173,10 @@ static guint entry_completion_signals[LAST_SIGNAL] = { 0 }; static void gtk_entry_completion_buildable_init (GtkBuildableIface *iface); G_DEFINE_TYPE_WITH_CODE (GtkEntryCompletion, gtk_entry_completion, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, - gtk_entry_completion_cell_layout_init) - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_entry_completion_buildable_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, + gtk_entry_completion_cell_layout_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_entry_completion_buildable_init)) static void @@ -167,8 +186,10 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) object_class = (GObjectClass *)klass; + object_class->constructor = gtk_entry_completion_constructor; object_class->set_property = gtk_entry_completion_set_property; object_class->get_property = gtk_entry_completion_get_property; + object_class->dispose = gtk_entry_completion_dispose; object_class->finalize = gtk_entry_completion_finalize; klass->match_selected = gtk_entry_completion_match_selected; @@ -246,14 +267,14 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) */ entry_completion_signals[CURSOR_ON_MATCH] = g_signal_new (I_("cursor-on-match"), - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkEntryCompletionClass, cursor_on_match), - _gtk_boolean_handled_accumulator, NULL, - _gtk_marshal_BOOLEAN__OBJECT_BOXED, - G_TYPE_BOOLEAN, 2, - GTK_TYPE_TREE_MODEL, - GTK_TYPE_TREE_ITER); + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkEntryCompletionClass, cursor_on_match), + _gtk_boolean_handled_accumulator, NULL, + _gtk_marshal_BOOLEAN__OBJECT_BOXED, + G_TYPE_BOOLEAN, 2, + GTK_TYPE_TREE_MODEL, + GTK_TYPE_TREE_ITER); /** * GtkEntryCompletion::action-activated: @@ -261,7 +282,7 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) * @index: the index of the activated action * * Gets emitted when an action is activated. - * + * * Since: 2.4 */ entry_completion_signals[ACTION_ACTIVATED] = @@ -310,8 +331,8 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) /** * GtkEntryCompletion:inline-completion: - * - * Determines whether the common prefix of the possible completions + * + * Determines whether the common prefix of the possible completions * should be inserted automatically in the entry. Note that this * requires text-column to be set, even if you are using a custom * match function. @@ -319,109 +340,127 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) * Since: 2.6 **/ g_object_class_install_property (object_class, - PROP_INLINE_COMPLETION, - g_param_spec_boolean ("inline-completion", - P_("Inline completion"), - P_("Whether the common prefix should be inserted automatically"), - FALSE, - GTK_PARAM_READWRITE)); + PROP_INLINE_COMPLETION, + g_param_spec_boolean ("inline-completion", + P_("Inline completion"), + P_("Whether the common prefix should be inserted automatically"), + FALSE, + GTK_PARAM_READWRITE)); /** * GtkEntryCompletion:popup-completion: - * - * Determines whether the possible completions should be - * shown in a popup window. + * + * Determines whether the possible completions should be + * shown in a popup window. * * Since: 2.6 **/ g_object_class_install_property (object_class, - PROP_POPUP_COMPLETION, - g_param_spec_boolean ("popup-completion", - P_("Popup completion"), - P_("Whether the completions should be shown in a popup window"), - TRUE, - GTK_PARAM_READWRITE)); + PROP_POPUP_COMPLETION, + g_param_spec_boolean ("popup-completion", + P_("Popup completion"), + P_("Whether the completions should be shown in a popup window"), + TRUE, + GTK_PARAM_READWRITE)); /** * GtkEntryCompletion:popup-set-width: - * + * * Determines whether the completions popup window will be * resized to the width of the entry. * * Since: 2.8 */ g_object_class_install_property (object_class, - PROP_POPUP_SET_WIDTH, - g_param_spec_boolean ("popup-set-width", - P_("Popup set width"), - P_("If TRUE, the popup window will have the same size as the entry"), - TRUE, - GTK_PARAM_READWRITE)); + PROP_POPUP_SET_WIDTH, + g_param_spec_boolean ("popup-set-width", + P_("Popup set width"), + P_("If TRUE, the popup window will have the same size as the entry"), + TRUE, + GTK_PARAM_READWRITE)); /** * GtkEntryCompletion:popup-single-match: - * + * * Determines whether the completions popup window will shown * for a single possible completion. You probably want to set - * this to %FALSE if you are using - * inline + * this to %FALSE if you are using + * inline * completion. * * Since: 2.8 */ g_object_class_install_property (object_class, - PROP_POPUP_SINGLE_MATCH, - g_param_spec_boolean ("popup-single-match", - P_("Popup single match"), - P_("If TRUE, the popup window will appear for a single match."), - TRUE, - GTK_PARAM_READWRITE)); + PROP_POPUP_SINGLE_MATCH, + g_param_spec_boolean ("popup-single-match", + P_("Popup single match"), + P_("If TRUE, the popup window will appear for a single match."), + TRUE, + GTK_PARAM_READWRITE)); /** * GtkEntryCompletion:inline-selection: - * + * * Determines whether the possible completions on the popup * will appear in the entry as you navigate through them. - + * * Since: 2.12 */ g_object_class_install_property (object_class, - PROP_INLINE_SELECTION, - g_param_spec_boolean ("inline-selection", - P_("Inline selection"), - P_("Your description here"), - FALSE, - GTK_PARAM_READWRITE)); + PROP_INLINE_SELECTION, + g_param_spec_boolean ("inline-selection", + P_("Inline selection"), + P_("Your description here"), + FALSE, + GTK_PARAM_READWRITE)); + + + /** + * GtkEntryCompletion:cell-area: + * + * The #GtkCellArea used to layout cell renderers in the treeview column. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_type_class_add_private (object_class, sizeof (GtkEntryCompletionPrivate)); } + +static void +gtk_entry_completion_buildable_custom_tag_end (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data) +{ + /* Just ignore the boolean return from here */ + _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, data); +} + static void gtk_entry_completion_buildable_init (GtkBuildableIface *iface) { iface->add_child = _gtk_cell_layout_buildable_add_child; iface->custom_tag_start = _gtk_cell_layout_buildable_custom_tag_start; - iface->custom_tag_end = _gtk_cell_layout_buildable_custom_tag_end; + iface->custom_tag_end = gtk_entry_completion_buildable_custom_tag_end; } static void gtk_entry_completion_cell_layout_init (GtkCellLayoutIface *iface) { - iface->pack_start = gtk_entry_completion_pack_start; - iface->pack_end = gtk_entry_completion_pack_end; - iface->clear = gtk_entry_completion_clear; - iface->add_attribute = gtk_entry_completion_add_attribute; - iface->set_cell_data_func = gtk_entry_completion_set_cell_data_func; - iface->clear_attributes = gtk_entry_completion_clear_attributes; - iface->reorder = gtk_entry_completion_reorder; - iface->get_cells = gtk_entry_completion_get_cells; + iface->get_area = gtk_entry_completion_get_area; } static void gtk_entry_completion_init (GtkEntryCompletion *completion) { - GtkCellRenderer *cell; - GtkTreeSelection *sel; GtkEntryCompletionPrivate *priv; - GtkWidget *popup_frame; /* yes, also priv, need to keep the code readable */ completion->priv = G_TYPE_INSTANCE_GET_PRIVATE (completion, @@ -438,19 +477,44 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) priv->popup_single_match = TRUE; priv->inline_selection = FALSE; - /* completions */ priv->filter_model = NULL; +} +static GObject * +gtk_entry_completion_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) +{ + GtkEntryCompletion *completion; + GtkEntryCompletionPrivate *priv; + GObject *object; + GtkCellRenderer *cell; + GtkTreeSelection *sel; + GtkWidget *popup_frame; + + object = G_OBJECT_CLASS (gtk_entry_completion_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + completion = (GtkEntryCompletion *) object; + priv = completion->priv; + + if (!priv->cell_area) + { + priv->cell_area = gtk_cell_area_box_new (); + g_object_ref_sink (priv->cell_area); + } + + /* completions */ priv->tree_view = gtk_tree_view_new (); g_signal_connect (priv->tree_view, "button-press-event", G_CALLBACK (gtk_entry_completion_list_button_press), completion); g_signal_connect (priv->tree_view, "enter-notify-event", - G_CALLBACK (gtk_entry_completion_list_enter_notify), - completion); + G_CALLBACK (gtk_entry_completion_list_enter_notify), + completion); g_signal_connect (priv->tree_view, "motion-notify-event", - G_CALLBACK (gtk_entry_completion_list_motion_notify), - completion); + G_CALLBACK (gtk_entry_completion_list_motion_notify), + completion); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_tree_view_set_hover_selection (GTK_TREE_VIEW (priv->tree_view), TRUE); @@ -463,7 +527,7 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) completion); priv->first_sel_changed = TRUE; - priv->column = gtk_tree_view_column_new (); + priv->column = gtk_tree_view_column_new_with_area (priv->cell_area); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), priv->column); priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL); @@ -487,11 +551,11 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) G_CALLBACK (gtk_entry_completion_action_button_press), completion); g_signal_connect (priv->action_view, "enter-notify-event", - G_CALLBACK (gtk_entry_completion_list_enter_notify), - completion); + G_CALLBACK (gtk_entry_completion_list_enter_notify), + completion); g_signal_connect (priv->action_view, "motion-notify-event", - G_CALLBACK (gtk_entry_completion_list_motion_notify), - completion); + G_CALLBACK (gtk_entry_completion_list_motion_notify), + completion); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->action_view), FALSE); gtk_tree_view_set_hover_selection (GTK_TREE_VIEW (priv->action_view), TRUE); @@ -524,7 +588,7 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) popup_frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (popup_frame), - GTK_SHADOW_ETCHED_IN); + GTK_SHADOW_ETCHED_IN); gtk_widget_show (popup_frame); gtk_container_add (GTK_CONTAINER (priv->popup_window), popup_frame); @@ -539,8 +603,11 @@ gtk_entry_completion_init (GtkEntryCompletion *completion) * been inserted, so we pack the action treeview after the first * action has been added */ + + return object; } + static void gtk_entry_completion_set_property (GObject *object, guint prop_id, @@ -549,6 +616,7 @@ gtk_entry_completion_set_property (GObject *object, { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (object); GtkEntryCompletionPrivate *priv = completion->priv; + GtkCellArea *area; switch (prop_id) { @@ -563,29 +631,37 @@ gtk_entry_completion_set_property (GObject *object, break; case PROP_TEXT_COLUMN: - priv->text_column = g_value_get_int (value); + priv->text_column = g_value_get_int (value); break; case PROP_INLINE_COMPLETION: - priv->inline_completion = g_value_get_boolean (value); + priv->inline_completion = g_value_get_boolean (value); break; case PROP_POPUP_COMPLETION: - priv->popup_completion = g_value_get_boolean (value); + priv->popup_completion = g_value_get_boolean (value); break; case PROP_POPUP_SET_WIDTH: - priv->popup_set_width = g_value_get_boolean (value); + priv->popup_set_width = g_value_get_boolean (value); break; case PROP_POPUP_SINGLE_MATCH: - priv->popup_single_match = g_value_get_boolean (value); + priv->popup_single_match = g_value_get_boolean (value); break; case PROP_INLINE_SELECTION: priv->inline_selection = g_value_get_boolean (value); break; - + + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + area = g_value_get_object (value); + + if (area) + priv->cell_area = g_object_ref_sink (area); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -635,6 +711,10 @@ gtk_entry_completion_get_property (GObject *object, g_value_set_boolean (value, gtk_entry_completion_get_inline_selection (completion)); break; + case PROP_CELL_AREA: + g_value_set_object (value, completion->priv->cell_area); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -647,123 +727,66 @@ gtk_entry_completion_finalize (GObject *object) GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (object); GtkEntryCompletionPrivate *priv = completion->priv; - if (priv->tree_view) - gtk_widget_destroy (priv->tree_view); - - if (priv->entry) - gtk_entry_set_completion (GTK_ENTRY (priv->entry), NULL); - - if (priv->actions) - g_object_unref (priv->actions); - if (priv->action_view) - g_object_unref (priv->action_view); - g_free (priv->case_normalized_key); g_free (priv->completion_prefix); - if (priv->popup_window) - gtk_widget_destroy (priv->popup_window); - if (priv->match_notify) (* priv->match_notify) (priv->match_data); G_OBJECT_CLASS (gtk_entry_completion_parent_class)->finalize (object); } -/* implement cell layout interface */ static void -gtk_entry_completion_pack_start (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand) +gtk_entry_completion_dispose (GObject *object) +{ + GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (object); + GtkEntryCompletionPrivate *priv = completion->priv; + + if (priv->tree_view) + { + gtk_widget_destroy (priv->tree_view); + priv->tree_view = NULL; + } + + if (priv->entry) + gtk_entry_set_completion (GTK_ENTRY (priv->entry), NULL); + + if (priv->actions) + { + g_object_unref (priv->actions); + priv->actions = NULL; + } + + if (priv->action_view) + { + g_object_unref (priv->action_view); + priv->action_view = NULL; + } + + if (priv->popup_window) + { + gtk_widget_destroy (priv->popup_window); + priv->popup_window = NULL; + } + + if (priv->cell_area) + { + g_object_unref (priv->cell_area); + priv->cell_area = NULL; + } + + G_OBJECT_CLASS (gtk_entry_completion_parent_class)->dispose (object); +} + +/* implement cell layout interface (only need to return the underlying cell area) */ +static GtkCellArea* +gtk_entry_completion_get_area (GtkCellLayout *cell_layout) { GtkEntryCompletionPrivate *priv; priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - gtk_tree_view_column_pack_start (priv->column, cell, expand); -} - -static void -gtk_entry_completion_pack_end (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_tree_view_column_pack_end (priv->column, cell, expand); -} - -static void -gtk_entry_completion_clear (GtkCellLayout *cell_layout) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_tree_view_column_clear (priv->column); -} - -static void -gtk_entry_completion_add_attribute (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - const gchar *attribute, - gint column) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_tree_view_column_add_attribute (priv->column, cell, attribute, column); -} - -static void -gtk_entry_completion_set_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (priv->column), - cell, func, func_data, destroy); -} - -static void -gtk_entry_completion_clear_attributes (GtkCellLayout *cell_layout, - GtkCellRenderer *cell) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_tree_view_column_clear_attributes (priv->column, cell); -} - -static void -gtk_entry_completion_reorder (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gint position) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - gtk_cell_layout_reorder (GTK_CELL_LAYOUT (priv->column), cell, position); -} - -static GList * -gtk_entry_completion_get_cells (GtkCellLayout *cell_layout) -{ - GtkEntryCompletionPrivate *priv; - - priv = GTK_ENTRY_COMPLETION (cell_layout)->priv; - - return gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (priv->column)); + return priv->cell_area; } /* all those callbacks */ @@ -783,8 +806,8 @@ gtk_entry_completion_default_completion_func (GtkEntryCompletion *completion, model = gtk_tree_model_filter_get_model (completion->priv->filter_model); - g_return_val_if_fail (gtk_tree_model_get_column_type (model, completion->priv->text_column) == G_TYPE_STRING, - FALSE); + g_return_val_if_fail (gtk_tree_model_get_column_type (model, completion->priv->text_column) == G_TYPE_STRING, + FALSE); gtk_tree_model_get (model, iter, completion->priv->text_column, &item, @@ -799,7 +822,7 @@ gtk_entry_completion_default_completion_func (GtkEntryCompletion *completion, case_normalized_string = g_utf8_casefold (normalized_string, -1); if (!strncmp (key, case_normalized_string, strlen (key))) - ret = TRUE; + ret = TRUE; g_free (case_normalized_string); } @@ -992,7 +1015,7 @@ gtk_entry_completion_selection_changed (GtkTreeSelection *selection, * * Creates a new #GtkEntryCompletion object. * - * Return value: A newly created #GtkEntryCompletion object. + * Return value: A newly created #GtkEntryCompletion object * * Since: 2.4 */ @@ -1006,13 +1029,35 @@ gtk_entry_completion_new (void) return completion; } +/** + * gtk_entry_completion_new_with_area: + * @area: the #GtkCellArea used to layout cells + * + * Creates a new #GtkEntryCompletion object using the + * specified @area to layout cells in the underlying + * #GtkTreeViewColumn for the drop-down menu. + * + * Return value: A newly created #GtkEntryCompletion object + * + * Since: 3.0 + */ +GtkEntryCompletion * +gtk_entry_completion_new_with_area (GtkCellArea *area) +{ + GtkEntryCompletion *completion; + + completion = g_object_new (GTK_TYPE_ENTRY_COMPLETION, "cell-area", area, NULL); + + return completion; +} + /** * gtk_entry_completion_get_entry: - * @completion: A #GtkEntryCompletion. + * @completion: a #GtkEntryCompletion * * Gets the entry @completion has been attached to. * - * Return value: (transfer none): The entry @completion has been attached to. + * Return value: (transfer none): The entry @completion has been attached to * * Since: 2.4 */ @@ -1026,8 +1071,8 @@ gtk_entry_completion_get_entry (GtkEntryCompletion *completion) /** * gtk_entry_completion_set_model: - * @completion: A #GtkEntryCompletion. - * @model: (allow-none): The #GtkTreeModel. + * @completion: a #GtkEntryCompletion + * @model: (allow-none): the #GtkTreeModel * * Sets the model for a #GtkEntryCompletion. If @completion already has * a model set, it will remove it before setting the new model. @@ -1045,12 +1090,12 @@ gtk_entry_completion_set_model (GtkEntryCompletion *completion, if (!model) { gtk_tree_view_set_model (GTK_TREE_VIEW (completion->priv->tree_view), - NULL); + NULL); _gtk_entry_completion_popdown (completion); completion->priv->filter_model = NULL; return; } - + /* code will unref the old filter model (if any) */ completion->priv->filter_model = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (model, NULL)); @@ -1071,13 +1116,13 @@ gtk_entry_completion_set_model (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_model: - * @completion: A #GtkEntryCompletion. + * @completion: a #GtkEntryCompletion * * Returns the model the #GtkEntryCompletion is using as data source. * Returns %NULL if the model is unset. * * Return value: (transfer none): A #GtkTreeModel, or %NULL if none - * is currently being used. + * is currently being used * * Since: 2.4 */ @@ -1094,10 +1139,10 @@ gtk_entry_completion_get_model (GtkEntryCompletion *completion) /** * gtk_entry_completion_set_match_func: - * @completion: A #GtkEntryCompletion. - * @func: The #GtkEntryCompletionMatchFunc to use. - * @func_data: The user data for @func. - * @func_notify: Destroy notifier for @func_data. + * @completion: a #GtkEntryCompletion + * @func: the #GtkEntryCompletionMatchFunc to use + * @func_data: user data for @func + * @func_notify: destroy notify for @func_data. * * Sets the match function for @completion to be @func. The match function * is used to determine if a row should or should not be in the completion @@ -1123,8 +1168,8 @@ gtk_entry_completion_set_match_func (GtkEntryCompletion *completion, /** * gtk_entry_completion_set_minimum_key_length: - * @completion: A #GtkEntryCompletion. - * @length: The minimum length of the key in order to start completing. + * @completion: a #GtkEntryCompletion + * @length: the minimum length of the key in order to start completing * * Requires the length of the search key for @completion to be at least * @length. This is useful for long lists, where completing using a small @@ -1143,18 +1188,18 @@ gtk_entry_completion_set_minimum_key_length (GtkEntryCompletion *completion, if (completion->priv->minimum_key_length != length) { completion->priv->minimum_key_length = length; - + g_object_notify (G_OBJECT (completion), "minimum-key-length"); } } /** * gtk_entry_completion_get_minimum_key_length: - * @completion: A #GtkEntryCompletion. + * @completion: a #GtkEntryCompletion * * Returns the minimum key length as set for @completion. * - * Return value: The currently used minimum key length. + * Return value: The currently used minimum key length * * Since: 2.4 */ @@ -1168,7 +1213,7 @@ gtk_entry_completion_get_minimum_key_length (GtkEntryCompletion *completion) /** * gtk_entry_completion_complete: - * @completion: A #GtkEntryCompletion. + * @completion: a #GtkEntryCompletion * * Requests a completion operation, or in other words a refiltering of the * current list with completions, using the current key. The completion list @@ -1185,7 +1230,7 @@ gtk_entry_completion_complete (GtkEntryCompletion *completion) if (!completion->priv->filter_model) return; - + g_free (completion->priv->case_normalized_key); tmp = g_utf8_normalize (gtk_entry_get_text (GTK_ENTRY (completion->priv->entry)), @@ -1229,9 +1274,9 @@ gtk_entry_completion_insert_action (GtkEntryCompletion *completion, /** * gtk_entry_completion_insert_action_text: - * @completion: A #GtkEntryCompletion. - * @index_: The index of the item to insert. - * @text: Text of the item to insert. + * @completion: a #GtkEntryCompletion + * @index_: the index of the item to insert + * @text: text of the item to insert * * Inserts an action in @completion's action item list at position @index_ * with text @text. If you want the action item to have markup, use @@ -1252,9 +1297,9 @@ gtk_entry_completion_insert_action_text (GtkEntryCompletion *completion, /** * gtk_entry_completion_insert_action_markup: - * @completion: A #GtkEntryCompletion. - * @index_: The index of the item to insert. - * @markup: Markup of the item to insert. + * @completion: a #GtkEntryCompletion + * @index_: the index of the item to insert + * @markup: markup of the item to insert * * Inserts an action in @completion's action item list at position @index_ * with markup @markup. @@ -1274,8 +1319,8 @@ gtk_entry_completion_insert_action_markup (GtkEntryCompletion *completion, /** * gtk_entry_completion_delete_action: - * @completion: A #GtkEntryCompletion. - * @index_: The index of the item to Delete. + * @completion: a #GtkEntryCompletion + * @index_: the index of the item to delete * * Deletes the action at @index_ from @completion's action list. * @@ -1297,18 +1342,19 @@ gtk_entry_completion_delete_action (GtkEntryCompletion *completion, /** * gtk_entry_completion_set_text_column: - * @completion: A #GtkEntryCompletion. - * @column: The column in the model of @completion to get strings from. + * @completion: a #GtkEntryCompletion + * @column: the column in the model of @completion to get strings from * * Convenience function for setting up the most used case of this code: a * completion list with just strings. This function will set up @completion * to have a list displaying all (and just) strings in the completion list, * and to get those strings from @column in the model of @completion. * - * This functions creates and adds a #GtkCellRendererText for the selected - * column. If you need to set the text column, but don't want the cell - * renderer, use g_object_set() to set the ::text_column property directly. - * + * This functions creates and adds a #GtkCellRendererText for the selected + * column. If you need to set the text column, but don't want the cell + * renderer, use g_object_set() to set the #GtkEntryCompletion:text-column + * property directly. + * * Since: 2.4 */ void @@ -1335,42 +1381,42 @@ gtk_entry_completion_set_text_column (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_text_column: * @completion: a #GtkEntryCompletion - * + * * Returns the column in the model of @completion to get strings from. - * + * * Return value: the column containing the strings * * Since: 2.6 - **/ + */ gint gtk_entry_completion_get_text_column (GtkEntryCompletion *completion) { g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), -1); - return completion->priv->text_column; + return completion->priv->text_column; } /* private */ static gboolean gtk_entry_completion_list_enter_notify (GtkWidget *widget, - GdkEventCrossing *event, - gpointer data) + GdkEventCrossing *event, + gpointer data) { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (data); - + return completion->priv->ignore_enter; } static gboolean gtk_entry_completion_list_motion_notify (GtkWidget *widget, - GdkEventMotion *event, - gpointer data) + GdkEventMotion *event, + gpointer data) { GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (data); completion->priv->ignore_enter = FALSE; - + return FALSE; } @@ -1424,14 +1470,14 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) NULL); height += vertical_separator; - + gtk_widget_realize (completion->priv->tree_view); screen = gtk_widget_get_screen (GTK_WIDGET (completion->priv->entry)); monitor_num = gdk_screen_get_monitor_at_window (screen, window); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); - + if (y > monitor.height / 2) items = MIN (matches, (((monitor.y + y) - (actions * action_height)) / height) - 1); @@ -1468,7 +1514,7 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) x = monitor.x; else if (x + popup_req.width > monitor.x + monitor.width) x = monitor.x + monitor.width - popup_req.width; - + if (y + entry_req.height + popup_req.height <= monitor.y + monitor.height || y - monitor.y < (monitor.y + monitor.height) - (y + entry_req.height)) { @@ -1480,12 +1526,12 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion) y -= popup_req.height; above = TRUE; } - - if (matches > 0) + + if (matches > 0) { path = gtk_tree_path_new_from_indices (above ? matches - 1 : 0, -1); - gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (completion->priv->tree_view), path, - NULL, FALSE, 0.0, 0.0); + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (completion->priv->tree_view), path, + NULL, FALSE, 0.0, 0.0); gtk_tree_path_free (path); } @@ -1499,6 +1545,8 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion, GdkDevice *device) { GtkTreeViewColumn *column; + GtkStyleContext *context; + GdkRGBA color; GList *renderers; GtkWidget *toplevel; @@ -1515,12 +1563,15 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion, return; completion->priv->ignore_enter = TRUE; - + column = gtk_tree_view_get_column (GTK_TREE_VIEW (completion->priv->action_view), 0); renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column)); - gtk_widget_ensure_style (completion->priv->tree_view); - g_object_set (GTK_CELL_RENDERER (renderers->data), "cell-background-gdk", - >k_widget_get_style (completion->priv->tree_view)->bg[GTK_STATE_NORMAL], + + context = gtk_widget_get_style_context (completion->priv->tree_view); + gtk_style_context_get_background_color (context, 0, &color); + + g_object_set (GTK_CELL_RENDERER (renderers->data), + "cell-background-rgba", &color, NULL); g_list_free (renderers); @@ -1533,8 +1584,8 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion, toplevel = gtk_widget_get_toplevel (completion->priv->entry); if (GTK_IS_WINDOW (toplevel)) - gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), - GTK_WINDOW (completion->priv->popup_window)); + gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), + GTK_WINDOW (completion->priv->popup_window)); /* prevent the first row being focused */ gtk_widget_grab_focus (completion->priv->tree_view); @@ -1577,19 +1628,19 @@ _gtk_entry_completion_popdown (GtkEntryCompletion *completion) gtk_widget_hide (completion->priv->popup_window); } -static gboolean +static gboolean gtk_entry_completion_match_selected (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter) + GtkTreeModel *model, + GtkTreeIter *iter) { gchar *str = NULL; gtk_tree_model_get (model, iter, completion->priv->text_column, &str, -1); gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), str ? str : ""); - + /* move cursor to the end */ gtk_editable_set_position (GTK_EDITABLE (completion->priv->entry), -1); - + g_free (str); return TRUE; @@ -1597,8 +1648,8 @@ gtk_entry_completion_match_selected (GtkEntryCompletion *completion, static gboolean gtk_entry_completion_cursor_on_match (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter) + GtkTreeModel *model, + GtkTreeIter *iter) { gtk_entry_completion_insert_completion (completion, model, iter); @@ -1619,33 +1670,33 @@ gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion) key = gtk_entry_get_text (GTK_ENTRY (completion->priv->entry)); valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (completion->priv->filter_model), - &iter); - + &iter); + while (valid) { gchar *text; - + gtk_tree_model_get (GTK_TREE_MODEL (completion->priv->filter_model), - &iter, completion->priv->text_column, &text, - -1); + &iter, completion->priv->text_column, &text, + -1); if (text && g_str_has_prefix (text, key)) - { - if (!prefix) - prefix = g_strdup (text); - else - { - gchar *p = prefix; - gchar *q = text; - - while (*p && *p == *q) - { - p++; - q++; - } - - *p = '\0'; - + { + if (!prefix) + prefix = g_strdup (text); + else + { + gchar *p = prefix; + gchar *q = text; + + while (*p && *p == *q) + { + p++; + q++; + } + + *p = '\0'; + if (p > prefix) { /* strip a partial multibyte character */ @@ -1658,12 +1709,12 @@ gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion) default: ; } } - } - } - + } + } + g_free (text); valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (completion->priv->filter_model), - &iter); + &iter); } return prefix; @@ -1672,7 +1723,7 @@ gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion) static gboolean gtk_entry_completion_real_insert_prefix (GtkEntryCompletion *completion, - const gchar *prefix) + const gchar *prefix) { if (prefix) { @@ -1686,16 +1737,16 @@ gtk_entry_completion_real_insert_prefix (GtkEntryCompletion *completion, key_len = g_utf8_strlen (key, -1); if (prefix_len > key_len) - { - gint pos = prefix_len; + { + gint pos = prefix_len; - gtk_editable_insert_text (GTK_EDITABLE (completion->priv->entry), - prefix + strlen (key), -1, &pos); - gtk_editable_select_region (GTK_EDITABLE (completion->priv->entry), - key_len, prefix_len); + gtk_editable_insert_text (GTK_EDITABLE (completion->priv->entry), + prefix + strlen (key), -1, &pos); + gtk_editable_select_region (GTK_EDITABLE (completion->priv->entry), + key_len, prefix_len); - completion->priv->has_completion = TRUE; - } + completion->priv->has_completion = TRUE; + } } return TRUE; @@ -1704,14 +1755,14 @@ gtk_entry_completion_real_insert_prefix (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_completion_prefix: * @completion: a #GtkEntryCompletion - * + * * Get the original text entered by the user that triggered * the completion or %NULL if there's no completion ongoing. - * + * * Returns: the prefix for the current completion - * + * * Since: 2.12 - **/ + */ const gchar* gtk_entry_completion_get_completion_prefix (GtkEntryCompletion *completion) { @@ -1722,7 +1773,7 @@ gtk_entry_completion_get_completion_prefix (GtkEntryCompletion *completion) static void gtk_entry_completion_insert_completion_text (GtkEntryCompletion *completion, - const gchar *text) + const gchar *text) { GtkEntryCompletionPrivate *priv = completion->priv; gint len; @@ -1749,8 +1800,8 @@ gtk_entry_completion_insert_completion_text (GtkEntryCompletion *completion, static gboolean gtk_entry_completion_insert_completion (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter) + GtkTreeModel *model, + GtkTreeIter *iter) { gchar *str = NULL; @@ -1758,8 +1809,8 @@ gtk_entry_completion_insert_completion (GtkEntryCompletion *completion, return FALSE; gtk_tree_model_get (model, iter, - completion->priv->text_column, &str, - -1); + completion->priv->text_column, &str, + -1); gtk_entry_completion_insert_completion_text (completion, str); @@ -1771,12 +1822,11 @@ gtk_entry_completion_insert_completion (GtkEntryCompletion *completion, /** * gtk_entry_completion_insert_prefix: * @completion: a #GtkEntryCompletion - * - * Requests a prefix insertion. - * + * + * Requests a prefix insertion. + * * Since: 2.6 - **/ - + */ void gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion) { @@ -1791,7 +1841,7 @@ gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion) if (prefix) { g_signal_emit (completion, entry_completion_signals[INSERT_PREFIX], - 0, prefix, &done); + 0, prefix, &done); g_free (prefix); } @@ -1804,18 +1854,18 @@ gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion) * gtk_entry_completion_set_inline_completion: * @completion: a #GtkEntryCompletion * @inline_completion: %TRUE to do inline completion - * + * * Sets whether the common prefix of the possible completions should * be automatically inserted in the entry. - * + * * Since: 2.6 - **/ -void + */ +void gtk_entry_completion_set_inline_completion (GtkEntryCompletion *completion, - gboolean inline_completion) + gboolean inline_completion) { g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion)); - + inline_completion = inline_completion != FALSE; if (completion->priv->inline_completion != inline_completion) @@ -1829,19 +1879,19 @@ gtk_entry_completion_set_inline_completion (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_inline_completion: * @completion: a #GtkEntryCompletion - * + * * Returns whether the common prefix of the possible completions should * be automatically inserted in the entry. - * + * * Return value: %TRUE if inline completion is turned on - * + * * Since: 2.6 - **/ + */ gboolean gtk_entry_completion_get_inline_completion (GtkEntryCompletion *completion) { g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), FALSE); - + return completion->priv->inline_completion; } @@ -1849,17 +1899,17 @@ gtk_entry_completion_get_inline_completion (GtkEntryCompletion *completion) * gtk_entry_completion_set_popup_completion: * @completion: a #GtkEntryCompletion * @popup_completion: %TRUE to do popup completion - * + * * Sets whether the completions should be presented in a popup window. - * + * * Since: 2.6 - **/ -void + */ +void gtk_entry_completion_set_popup_completion (GtkEntryCompletion *completion, - gboolean popup_completion) + gboolean popup_completion) { g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion)); - + popup_completion = popup_completion != FALSE; if (completion->priv->popup_completion != popup_completion) @@ -1874,18 +1924,18 @@ gtk_entry_completion_set_popup_completion (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_popup_completion: * @completion: a #GtkEntryCompletion - * + * * Returns whether the completions should be presented in a popup window. - * + * * Return value: %TRUE if popup completion is turned on - * + * * Since: 2.6 - **/ + */ gboolean gtk_entry_completion_get_popup_completion (GtkEntryCompletion *completion) { g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), TRUE); - + return completion->priv->popup_completion; } @@ -1899,12 +1949,12 @@ gtk_entry_completion_get_popup_completion (GtkEntryCompletion *completion) * * Since: 2.8 */ -void +void gtk_entry_completion_set_popup_set_width (GtkEntryCompletion *completion, - gboolean popup_set_width) + gboolean popup_set_width) { g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion)); - + popup_set_width = popup_set_width != FALSE; if (completion->priv->popup_set_width != popup_set_width) @@ -1918,20 +1968,20 @@ gtk_entry_completion_set_popup_set_width (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_popup_set_width: * @completion: a #GtkEntryCompletion - * - * Returns whether the completion popup window will be resized to the + * + * Returns whether the completion popup window will be resized to the * width of the entry. - * - * Return value: %TRUE if the popup window will be resized to the width of + * + * Return value: %TRUE if the popup window will be resized to the width of * the entry - * + * * Since: 2.8 - **/ + */ gboolean gtk_entry_completion_get_popup_set_width (GtkEntryCompletion *completion) { g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), TRUE); - + return completion->priv->popup_set_width; } @@ -1940,7 +1990,7 @@ gtk_entry_completion_get_popup_set_width (GtkEntryCompletion *completion) * gtk_entry_completion_set_popup_single_match: * @completion: a #GtkEntryCompletion * @popup_single_match: %TRUE if the popup should appear even for a single - * match + * match * * Sets whether the completion popup window will appear even if there is * only a single match. You may want to set this to %FALSE if you @@ -1949,12 +1999,12 @@ gtk_entry_completion_get_popup_set_width (GtkEntryCompletion *completion) * * Since: 2.8 */ -void +void gtk_entry_completion_set_popup_single_match (GtkEntryCompletion *completion, - gboolean popup_single_match) + gboolean popup_single_match) { g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion)); - + popup_single_match = popup_single_match != FALSE; if (completion->priv->popup_single_match != popup_single_match) @@ -1968,20 +2018,20 @@ gtk_entry_completion_set_popup_single_match (GtkEntryCompletion *completion, /** * gtk_entry_completion_get_popup_single_match: * @completion: a #GtkEntryCompletion - * + * * Returns whether the completion popup window will appear even if there is - * only a single match. - * + * only a single match. + * * Return value: %TRUE if the popup window will appear regardless of the - * number of matches. - * + * number of matches + * * Since: 2.8 - **/ + */ gboolean gtk_entry_completion_get_popup_single_match (GtkEntryCompletion *completion) { g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), TRUE); - + return completion->priv->popup_single_match; } @@ -1989,15 +2039,15 @@ gtk_entry_completion_get_popup_single_match (GtkEntryCompletion *completion) * gtk_entry_completion_set_inline_selection: * @completion: a #GtkEntryCompletion * @inline_selection: %TRUE to do inline selection - * + * * Sets whether it is possible to cycle through the possible completions * inside the entry. - * + * * Since: 2.12 - **/ + */ void gtk_entry_completion_set_inline_selection (GtkEntryCompletion *completion, - gboolean inline_selection) + gboolean inline_selection) { g_return_if_fail (GTK_IS_ENTRY_COMPLETION (completion)); @@ -2020,7 +2070,7 @@ gtk_entry_completion_set_inline_selection (GtkEntryCompletion *completion, * Returns: %TRUE if inline-selection mode is on * * Since: 2.12 - **/ + */ gboolean gtk_entry_completion_get_inline_selection (GtkEntryCompletion *completion) { diff --git a/gtk/gtkentrycompletion.h b/gtk/gtkentrycompletion.h index f120c3a679..368b944342 100644 --- a/gtk/gtkentrycompletion.h +++ b/gtk/gtkentrycompletion.h @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -42,6 +43,23 @@ typedef struct _GtkEntryCompletion GtkEntryCompletion; typedef struct _GtkEntryCompletionClass GtkEntryCompletionClass; typedef struct _GtkEntryCompletionPrivate GtkEntryCompletionPrivate; +/** + * GtkEntryCompletionMatchFunc: + * @completion: the #GtkEntryCompletion + * @key: the string to match, normalized and case-folded + * @iter: a #GtkTreeIter indicating the row to match + * @user_data: user data given to gtk_entry_completion_set_match_func() + * + * A function which decides whether the row indicated by @iter matches + * a given @key, and should be displayed as a possible completion for @key. + * Note that @key is normalized and case-folded (see g_utf8_normalize() + * and g_utf8_casefold()). If this is not appropriate, match functions + * have access to the unmodified key via + * gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ())). + * + * Returns: %TRUE if @iter should be displayed as a possible completion + * for @key + */ typedef gboolean (* GtkEntryCompletionMatchFunc) (GtkEntryCompletion *completion, const gchar *key, GtkTreeIter *iter, @@ -66,10 +84,10 @@ struct _GtkEntryCompletionClass void (* action_activated) (GtkEntryCompletion *completion, gint index_); gboolean (* insert_prefix) (GtkEntryCompletion *completion, - const gchar *prefix); + const gchar *prefix); gboolean (* cursor_on_match) (GtkEntryCompletion *completion, - GtkTreeModel *model, - GtkTreeIter *iter); + GtkTreeModel *model, + GtkTreeIter *iter); /* Padding for future expansion */ void (*_gtk_reserved0) (void); @@ -81,6 +99,7 @@ struct _GtkEntryCompletionClass /* core */ GType gtk_entry_completion_get_type (void) G_GNUC_CONST; GtkEntryCompletion *gtk_entry_completion_new (void); +GtkEntryCompletion *gtk_entry_completion_new_with_area (GtkCellArea *area); GtkWidget *gtk_entry_completion_get_entry (GtkEntryCompletion *completion); diff --git a/gtk/gtkentryprivate.h b/gtk/gtkentryprivate.h index 63a5cd02c2..59f24e6e5e 100644 --- a/gtk/gtkentryprivate.h +++ b/gtk/gtkentryprivate.h @@ -37,6 +37,7 @@ struct _GtkEntryCompletionPrivate GtkTreeModelFilter *filter_model; GtkListStore *actions; gboolean first_sel_changed; + GtkCellArea *cell_area; GtkEntryCompletionMatchFunc match_func; gpointer match_data; @@ -85,6 +86,10 @@ void _gtk_entry_effective_inner_border (GtkEntry *entry, GtkBorder *border); void _gtk_entry_reset_im_context (GtkEntry *entry); GtkIMContext* _gtk_entry_get_im_context (GtkEntry *entry); +void _gtk_entry_set_is_cell_renderer (GtkEntry *entry, + gboolean is_cell_renderer); + + G_END_DECLS #endif /* __GTK_ENTRY_PRIVATE_H__ */ diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index 8a100aad0f..78ea40c98d 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -33,6 +33,14 @@ #include + +/** + * SECTION:gtkenum + * @Short_description: Public enumerated types used throughout GTK+ + * @Title: Standard Enumerations + */ + + G_BEGIN_DECLS /** @@ -64,7 +72,15 @@ typedef enum GTK_ALIGN_CENTER } GtkAlign; -/* Arrow placement */ + +/** + * GtkArrowPlacement: + * @GTK_ARROWS_BOTH: Place one arrow on each end of the menu. + * @GTK_ARROWS_START: Place both arrows at the top of the menu. + * @GTK_ARROWS_END: Place both arrows at the bottom of the menu. + * + * Used to specify the placement of scroll arrows in scrolling menus. + */ typedef enum { GTK_ARROWS_BOTH, @@ -72,7 +88,16 @@ typedef enum GTK_ARROWS_END } GtkArrowPlacement; -/* Arrow types */ +/** + * GtkArrowType + * @GTK_ARROW_UP: Represents an upward pointing arrow. + * @GTK_ARROW_DOWN: Represents a downward pointing arrow. + * @GTK_ARROW_LEFT: Represents a left pointing arrow. + * @GTK_ARROW_RIGHT: Represents a right pointing arrow. + * @GTK_ARROW_NONE: No arrow. Since 2.10. + * + * Used to indicate the direction in which a #GtkArrow should point. + */ typedef enum { GTK_ARROW_UP, @@ -82,7 +107,16 @@ typedef enum GTK_ARROW_NONE } GtkArrowType; -/* Attach options (for tables) */ +/** + * GtkAttachOptions: + * @GTK_EXPAND: the widget should expand to take up any extra space in its + * container that has been allocated. + * @GTK_SHRINK: the widget should shrink as and when possible. + * @GTK_FILL: the widget should fill the space allocated to it. + * + * Denotes the expansion properties that a widget will have when it (or its + * parent) is resized. + */ typedef enum { GTK_EXPAND = 1 << 0, @@ -90,7 +124,20 @@ typedef enum GTK_FILL = 1 << 2 } GtkAttachOptions; -/* Button box styles */ +/** + * GtkButtonBoxStyle: + * @GTK_BUTTONBOX_DEFAULT_STYLE: Default packing. + * @GTK_BUTTONBOX_SPREAD: Buttons are evenly spread across the box. + * @GTK_BUTTONBOX_EDGE: Buttons are placed at the edges of the box. + * @GTK_BUTTONBOX_START: Buttons are grouped towards the start of the box, + * (on the left for a HBox, or the top for a VBox). + * @GTK_BUTTONBOX_END: Buttons are grouped towards the end of the box, + * (on the right for a HBox, or the bottom for a VBox). + * @GTK_BUTTONBOX_CENTER: Buttons are centered in the box. Since 2.12. + * + * Used to dictate the style that a #GtkButtonBox uses to layout the buttons it + * contains. (See also: #GtkVButtonBox and #GtkHButtonBox). + */ typedef enum { GTK_BUTTONBOX_SPREAD = 1, @@ -100,6 +147,7 @@ typedef enum GTK_BUTTONBOX_CENTER } GtkButtonBoxStyle; + typedef enum { GTK_DELETE_CHARS, @@ -125,7 +173,15 @@ typedef enum GTK_DIR_RIGHT } GtkDirectionType; -/* Expander styles */ +/** + * GtkExpanderStyle: + * @GTK_EXPANDER_COLLAPSED: The style used for a collapsed subtree. + * @GTK_EXPANDER_SEMI_COLLAPSED: Intermediate style used during animation. + * @GTK_EXPANDER_SEMI_EXPANDED: Intermediate style used during animation. + * @GTK_EXPANDER_EXPANDED: The style used for an expanded subtree. + * + * Used to specify the style of the expanders drawn by a #GtkTreeView. + */ typedef enum { GTK_EXPANDER_COLLAPSED, @@ -171,7 +227,16 @@ typedef enum GTK_TEXT_DIR_RTL } GtkTextDirection; -/* justification for label and maybe other widgets (text?) */ +/** + * GtkJustification: + * @GTK_JUSTIFY_LEFT: The text is placed at the left edge of the label. + * @GTK_JUSTIFY_RIGHT: The text is placed at the right edge of the label. + * @GTK_JUSTIFY_CENTER: The text is placed in the center of the label. + * @GTK_JUSTIFY_FILL: The text is placed is distributed across the label. + * + * Used for justifying the text inside a #GtkLabel widget. (See also + * #GtkAlignment). + */ typedef enum { GTK_JUSTIFY_LEFT, @@ -180,7 +245,15 @@ typedef enum GTK_JUSTIFY_FILL } GtkJustification; -/* Menu keyboard movement types */ +/** + * GtkMenuDirectionType: + * @GTK_MENU_DIR_PARENT: To the parent menu shell + * @GTK_MENU_DIR_CHILD: To the submenu, if any, associated with the item + * @GTK_MENU_DIR_NEXT: To the next menu item + * @GTK_MENU_DIR_PREV: To the previous menu item + * + * An enumeration representing directional movements within a menu. + */ typedef enum { GTK_MENU_DIR_PARENT, @@ -245,14 +318,35 @@ typedef enum GTK_SCROLL_HORIZONTAL_ENDS } GtkScrollStep; -/* Orientation for toolbars, etc. */ +/** + * GtkOrientation: + * @GTK_ORIENTATION_HORIZONTAL: The widget is in horizontal orientation. + * @GTK_ORIENTATION_VERTICAL: The widget is in vertical orientation. + * + * Represents the orientation of widgets which can be switched between horizontal + * and vertical orientation on the fly, like #GtkToolbar. + */ typedef enum { GTK_ORIENTATION_HORIZONTAL, GTK_ORIENTATION_VERTICAL } GtkOrientation; -/* Placement type for scrolled window */ +/** + * GtkCornerType: + * @GTK_CORNER_TOP_LEFT: Place the scrollbars on the right and bottom of the + * widget (default behaviour). + * @GTK_CORNER_BOTTOM_LEFT: Place the scrollbars on the top and right of the + * widget. + * @GTK_CORNER_TOP_RIGHT: Place the scrollbars on the left and bottom of the + * widget. + * @GTK_CORNER_BOTTOM_RIGHT: Place the scrollbars on the top and left of the + * widget. + * + * Specifies which corner a child widget should be placed in when packed into + * a #GtkScrolledWindow. This is effectively the opposite of where the scroll + * bars are placed. + */ typedef enum { GTK_CORNER_TOP_LEFT, @@ -261,7 +355,14 @@ typedef enum GTK_CORNER_BOTTOM_RIGHT } GtkCornerType; -/* Packing types (for boxes) */ +/** + * GtkPackType: + * @GTK_PACK_START: The child is packed into the start of the box + * @GTK_PACK_END: The child is packed into the end of the box + * + * Represents the packing location #GtkBox children. (See: #GtkVBox, + * #GtkHBox, and #GtkButtonBox). + */ typedef enum { GTK_PACK_START, @@ -288,7 +389,15 @@ typedef enum GTK_PATH_CLASS } GtkPathType; -/* Scrollbar policy types (for scrolled windows) */ +/** + * GtkPolicyType: + * @GTK_POLICY_ALWAYS: The scrollbar is always visible. + * @GTK_POLICY_AUTOMATIC: The scrollbar will appear and disappear as necessary. For example, + * when all of a #GtkCList can not be seen. + * @GTK_POLICY_NEVER: The scrollbar will never appear. + * + * Determines when a scroll bar will be visible. + */ typedef enum { GTK_POLICY_ALWAYS, @@ -296,6 +405,17 @@ typedef enum GTK_POLICY_NEVER } GtkPolicyType; +/** + * GtkPositionType: + * @GTK_POS_LEFT: The feature is at the left edge. + * @GTK_POS_RIGHT: The feature is at the right edge. + * @GTK_POS_TOP: The feature is at the top edge. + * @GTK_POS_BOTTOM: The feature is at the bottom edge. + * + * Describes which edge of a widget a certain feature is positioned at, e.g. the + * tabs of a #GtkNotebook, the handle of a #GtkHandleBox or the label of a + * #GtkScale. + */ typedef enum { GTK_POS_LEFT, @@ -304,7 +424,14 @@ typedef enum GTK_POS_BOTTOM } GtkPositionType; -/* Style for buttons */ +/** + * GtkReliefStyle: + * @GTK_RELIEF_NORMAL: Draw a normal relief. + * @GTK_RELIEF_HALF: A half relief. + * @GTK_RELIEF_NONE: No relief. + * + * Indicated the relief to be drawn around a #GtkButton. + */ typedef enum { GTK_RELIEF_NORMAL, @@ -312,12 +439,17 @@ typedef enum GTK_RELIEF_NONE } GtkReliefStyle; -/* Resize type */ +/** + * GtkResizeMode: + * @GTK_RESIZE_PARENT: Pass resize request to the parent + * @GTK_RESIZE_QUEUE: Queue resizes on this widget + * @GTK_RESIZE_IMMEDIATE: Resize immediately. Deprecated. + */ typedef enum { - GTK_RESIZE_PARENT, /* Pass resize request to the parent */ - GTK_RESIZE_QUEUE, /* Queue resizes on this widget */ - GTK_RESIZE_IMMEDIATE /* Perform the resizes now */ + GTK_RESIZE_PARENT, + GTK_RESIZE_QUEUE, + GTK_RESIZE_IMMEDIATE } GtkResizeMode; /* scrolling types */ @@ -341,16 +473,42 @@ typedef enum GTK_SCROLL_END } GtkScrollType; -/* list selection modes */ +/** + * GtkSelectionMode: + * @GTK_SELECTION_NONE: No selection is possible. + * @GTK_SELECTION_SINGLE: Zero or one element may be selected. + * @GTK_SELECTION_BROWSE: Exactly one element is selected. In some circumstances, + * such as initially or during a search operation, it's possible for no element + * to be selected with %GTK_SELECTION_BROWSE. What is really enforced is that + * the user can't deselect a currently selected element except by selecting + * another element. + * @GTK_SELECTION_MULTIPLE: Any number of elements may be selected. + * Clicks toggle the state of an item. Any number of elements may be selected. + * The Ctrl key may be used to enlarge the selection, and Shift key to select + * between the focus and the child pointed to. Some widgets may also allow + * Click-drag to select a range of elements. + * @GTK_SELECTION_EXTENDED: Deprecated, behaves identical to %GTK_SELECTION_MULTIPLE. + * + * Used to control what selections users are allowed to make. + */ typedef enum { - GTK_SELECTION_NONE, /* Nothing can be selected */ + GTK_SELECTION_NONE, GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE } GtkSelectionMode; -/* Shadow types */ +/** + * GtkShadowType: + * @GTK_SHADOW_NONE: No outline. + * @GTK_SHADOW_IN: The outline is bevelled inwards. + * @GTK_SHADOW_OUT: The outline is bevelled outwards like a button. + * @GTK_SHADOW_ETCHED_IN: The outline has a sunken 3d appearance. + * @GTK_SHADOW_ETCHED_OUT: The outline has a raised 3d appearance. + * + * Used to change the appearance of an outline typically provided by a #GtkFrame. + */ typedef enum { GTK_SHADOW_NONE, @@ -364,12 +522,6 @@ typedef enum /** * GtkStateType: - * - * This type indicates the current state of a widget; the state determines how - * the widget is drawn. The #GtkStateType enumeration is also used to - * identify different colors in a #GtkStyle for drawing, so states can be - * used for subparts of a widget as well as entire widgets. - * * @GTK_STATE_NORMAL: State during normal operation. * @GTK_STATE_ACTIVE: State of a currently active widget, such as a depressed button. * @GTK_STATE_PRELIGHT: State indicating that the mouse pointer is over @@ -381,6 +533,11 @@ typedef enum * or radiobuttons that aren't either set to %TRUE nor %FALSE, * or buttons requiring the user attention. * @GTK_STATE_FOCUSED: The widget has the keyboard focus. + * + * This type indicates the current state of a widget; the state determines how + * the widget is drawn. The #GtkStateType enumeration is also used to + * identify different colors in a #GtkStyle for drawing, so states can be + * used for subparts of a widget as well as entire widgets. */ typedef enum { @@ -393,7 +550,20 @@ typedef enum GTK_STATE_FOCUSED } GtkStateType; -/* Style for toolbars */ +/** + * GtkToolbarStyle: + * @GTK_TOOLBAR_ICONS: Buttons display only icons in the toolbar. + * @GTK_TOOLBAR_TEXT: Buttons display only text labels in the toolbar. + * @GTK_TOOLBAR_BOTH: Buttons display text and icons in the toolbar. + * @GTK_TOOLBAR_BOTH_HORIZ: Buttons display icons and text alongside each + * other, rather than vertically stacked + * + * Used to customize the appearance of a #GtkToolbar. Note that + * setting the toolbar style overrides the user's preferences + * for the default toolbar style. Note that if the button has only + * a label set and GTK_TOOLBAR_ICONS is used, the label will be + * visible, and vice versa. + */ typedef enum { GTK_TOOLBAR_ICONS, @@ -402,15 +572,19 @@ typedef enum GTK_TOOLBAR_BOTH_HORIZ } GtkToolbarStyle; -/* Data update types (for ranges) */ -typedef enum -{ - GTK_UPDATE_CONTINUOUS, - GTK_UPDATE_DISCONTINUOUS, - GTK_UPDATE_DELAYED -} GtkUpdateType; - -/* Window position types */ +/** + * GtkWindowPosition: + * @GTK_WIN_POS_NONE: No influence is made on placement. + * @GTK_WIN_POS_CENTER: Windows should be placed in the center of the screen. + * @GTK_WIN_POS_MOUSE: Windows should be placed at the current mouse position. + * @GTK_WIN_POS_CENTER_ALWAYS: Keep window centered as it changes size, etc. + * @GTK_WIN_POS_CENTER_ON_PARENT: Center the window on its transient + * parent (see gtk_window_set_transient_for()). + * + * Window placement can be influenced using this enumeration. Note that + * using #GTK_WIN_POS_CENTER_ALWAYS is almost always a bad idea. + * It won't necessarily work well with all window managers or on all windowing systems. + */ typedef enum { GTK_WIN_POS_NONE, @@ -420,14 +594,43 @@ typedef enum GTK_WIN_POS_CENTER_ON_PARENT } GtkWindowPosition; -/* Window types */ +/** + * GtkWindowType: + * @GTK_WINDOW_TOPLEVEL: A regular window, such as a dialog. + * @GTK_WINDOW_POPUP: A special window such as a tooltip. + * + * A #GtkWindow can be one of these types. Most things you'd consider a + * "window" should have type #GTK_WINDOW_TOPLEVEL; windows with this type + * are managed by the window manager and have a frame by default (call + * gtk_window_set_decorated() to toggle the frame). Windows with type + * #GTK_WINDOW_POPUP are ignored by the window manager; window manager + * keybindings won't work on them, the window manager won't decorate the + * window with a frame, many GTK+ features that rely on the window + * manager will not work (e.g. resize grips and + * maximization/minimization). #GTK_WINDOW_POPUP is used to implement + * widgets such as #GtkMenu or tooltips that you normally don't think of + * as windows per se. Nearly all windows should be #GTK_WINDOW_TOPLEVEL. + * In particular, do not use #GTK_WINDOW_POPUP just to turn off + * the window borders; use gtk_window_set_decorated() for that. + */ typedef enum { GTK_WINDOW_TOPLEVEL, GTK_WINDOW_POPUP } GtkWindowType; -/* Text wrap */ +/** + * GtkWrapMode: + * @GTK_WRAP_NONE: do not wrap lines; just make the text area wider + * @GTK_WRAP_CHAR: wrap text, breaking lines anywhere the cursor can + * appear (between characters, usually - if you want to be technical, + * between graphemes, see pango_get_log_attrs()) + * @GTK_WRAP_WORD: wrap text, breaking lines in between words + * @GTK_WRAP_WORD_CHAR: wrap text, breaking lines in between words, or if + * that is not enough, also between graphemes + * + * Describes a type of line wrapping. + */ typedef enum { GTK_WRAP_NONE, @@ -436,7 +639,13 @@ typedef enum GTK_WRAP_WORD_CHAR } GtkWrapMode; -/* How to sort */ +/** + * GtkSortType: + * @GTK_SORT_ASCENDING: Sorting is in ascending order. + * @GTK_SORT_DESCENDING: Sorting is in descending order. + * + * Determines the direction of a sort. + */ typedef enum { GTK_SORT_ASCENDING, @@ -458,6 +667,16 @@ typedef enum GTK_IM_STATUS_NONE } GtkIMStatusStyle; +/** + * GtkPackDirection: + * @GTK_PACK_DIRECTION_LTR: Widgets are packed left-to-right + * @GTK_PACK_DIRECTION_RTL: Widgets are packed right-to-left + * @GTK_PACK_DIRECTION_TTB: Widgets are packed top-to-bottom + * @GTK_PACK_DIRECTION_BTT: Widgets are packed bottom-to-top + * + * Determines how widgets should be packed insided menubars + * and menuitems contained in menubars. + */ typedef enum { GTK_PACK_DIRECTION_LTR, @@ -542,6 +761,21 @@ typedef enum GTK_TREE_VIEW_GRID_LINES_BOTH } GtkTreeViewGridLines; +/** + * GtkDragResult: + * @GTK_DRAG_RESULT_SUCCESS: The drag operation was successful. + * @GTK_DRAG_RESULT_NO_TARGET: No suitable drag target. + * @GTK_DRAG_RESULT_USER_CANCELLED: The user cancelled the drag operation. + * @GTK_DRAG_RESULT_TIMEOUT_EXPIRED: The drag operation timed out. + * @GTK_DRAG_RESULT_GRAB_BROKEN: The pointer or keyboard grab used + * for the drag operation was broken. + * @GTK_DRAG_RESULT_ERROR: The drag operation failed due to some + * unspecified error. + * + * Gives an indication why a drag operation failed. + * The value can by obtained by connecting to the + * #GtkWidget::drag-failed signal. + */ typedef enum { GTK_DRAG_RESULT_SUCCESS, @@ -582,6 +816,7 @@ typedef enum /** * GtkStateFlags: + * @GTK_STATE_FLAG_NORMAL: State during normal operation. * @GTK_STATE_FLAG_ACTIVE: Widget is active. * @GTK_STATE_FLAG_PRELIGHT: Widget has a mouse pointer over it. * @GTK_STATE_FLAG_SELECTED: Widget is selected. @@ -593,6 +828,7 @@ typedef enum */ typedef enum { + GTK_STATE_FLAG_NORMAL = 0, GTK_STATE_FLAG_ACTIVE = 1 << 0, GTK_STATE_FLAG_PRELIGHT = 1 << 1, GTK_STATE_FLAG_SELECTED = 1 << 2, diff --git a/gtk/gtkeventbox.c b/gtk/gtkeventbox.c index 5514e11b3e..d2d8c6d39d 100644 --- a/gtk/gtkeventbox.c +++ b/gtk/gtkeventbox.c @@ -34,11 +34,22 @@ #include "gtkintl.h" -typedef struct +/** + * SECTION:gtkeventbox + * @Short_description: A widget used to catch events for widgets which + * do not have their own window + * @Title: GtkEventBox + * + * The #GtkEventBox widget is a subclass of #GtkBin which also has its + * own window. It is useful since it allows you to catch events for widgets + * which do not have their own window. + */ + +struct _GtkEventBoxPrivate { gboolean above_child; GdkWindow *event_window; -} GtkEventBoxPrivate; +}; enum { PROP_0, @@ -46,9 +57,6 @@ enum { PROP_ABOVE_CHILD }; - -#define GTK_EVENT_BOX_GET_PRIVATE(obj) G_TYPE_INSTANCE_GET_PRIVATE((obj), GTK_TYPE_EVENT_BOX, GtkEventBoxPrivate) - static void gtk_event_box_realize (GtkWidget *widget); static void gtk_event_box_unrealize (GtkWidget *widget); static void gtk_event_box_map (GtkWidget *widget); @@ -109,7 +117,7 @@ gtk_event_box_class_init (GtkEventBoxClass *class) P_("Whether the event-trapping window of the eventbox is above the window of the child widget as opposed to below it."), FALSE, GTK_PARAM_READWRITE)); - + g_type_class_add_private (class, sizeof (GtkEventBoxPrivate)); } @@ -119,59 +127,74 @@ gtk_event_box_init (GtkEventBox *event_box) GtkEventBoxPrivate *priv; gtk_widget_set_has_window (GTK_WIDGET (event_box), TRUE); - - priv = GTK_EVENT_BOX_GET_PRIVATE (event_box); + + priv = G_TYPE_INSTANCE_GET_PRIVATE (event_box, + GTK_TYPE_EVENT_BOX, + GtkEventBoxPrivate); + + event_box->priv = priv; priv->above_child = FALSE; } +/** + * gtk_event_box_new: + * + * Creates a new #GtkEventBox. + * + * Returns: a new #GtkEventBox + */ GtkWidget* gtk_event_box_new (void) { return g_object_new (GTK_TYPE_EVENT_BOX, NULL); } -static void +static void gtk_event_box_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkEventBox *event_box; - + event_box = GTK_EVENT_BOX (object); - + switch (prop_id) { case PROP_VISIBLE_WINDOW: gtk_event_box_set_visible_window (event_box, g_value_get_boolean (value)); - break; + break; + case PROP_ABOVE_CHILD: gtk_event_box_set_above_child (event_box, g_value_get_boolean (value)); - break; + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } -static void +static void gtk_event_box_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkEventBox *event_box; - + event_box = GTK_EVENT_BOX (object); - + switch (prop_id) { case PROP_VISIBLE_WINDOW: g_value_set_boolean (value, gtk_event_box_get_visible_window (event_box)); break; + case PROP_ABOVE_CHILD: g_value_set_boolean (value, gtk_event_box_get_above_child (event_box)); break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -188,7 +211,7 @@ gtk_event_box_get_property (GObject *object, * Return value: %TRUE if the event box window is visible * * Since: 2.4 - **/ + */ gboolean gtk_event_box_get_visible_window (GtkEventBox *event_box) { @@ -200,25 +223,25 @@ gtk_event_box_get_visible_window (GtkEventBox *event_box) /** * gtk_event_box_set_visible_window: * @event_box: a #GtkEventBox - * @visible_window: boolean value + * @visible_window: %TRUE to make the event box have a visible window * * Set whether the event box uses a visible or invisible child * window. The default is to use visible windows. * * In an invisible window event box, the window that the - * event box creates is a %GDK_INPUT_ONLY window, which + * event box creates is a %GDK_INPUT_ONLY window, which * means that it is invisible and only serves to receive * events. - * + * * A visible window event box creates a visible (%GDK_INPUT_OUTPUT) - * window that acts as the parent window for all the widgets + * window that acts as the parent window for all the widgets * contained in the event box. - * + * * You should generally make your event box invisible if * you just want to trap events. Creating a visible window * may cause artifacts that are visible to the user, especially * if the user is using a theme with gradients or pixmaps. - * + * * The main reason to create a non input-only event box is if * you want to set the background to a different color or * draw on it. @@ -227,22 +250,22 @@ gtk_event_box_get_visible_window (GtkEventBox *event_box) * There is one unexpected issue for an invisible event box that has its * window below the child. (See gtk_event_box_set_above_child().) * Since the input-only window is not an ancestor window of any windows - * that descendent widgets of the event box create, events on these + * that descendent widgets of the event box create, events on these * windows aren't propagated up by the windowing system, but only by GTK+. * The practical effect of this is if an event isn't in the event - * mask for the descendant window (see gtk_widget_add_events()), - * it won't be received by the event box. + * mask for the descendant window (see gtk_widget_add_events()), + * it won't be received by the event box. * * This problem doesn't occur for visible event boxes, because in * that case, the event box window is actually the ancestor of the * descendant windows, not just at the same place on the screen. * - * + * * Since: 2.4 - **/ + */ void gtk_event_box_set_visible_window (GtkEventBox *event_box, - gboolean visible_window) + gboolean visible_window) { GtkWidget *widget; @@ -255,29 +278,29 @@ gtk_event_box_set_visible_window (GtkEventBox *event_box, if (visible_window != gtk_widget_get_has_window (widget)) { if (gtk_widget_get_realized (widget)) - { - gboolean visible = gtk_widget_get_visible (widget); + { + gboolean visible = gtk_widget_get_visible (widget); - if (visible) - gtk_widget_hide (widget); + if (visible) + gtk_widget_hide (widget); - gtk_widget_unrealize (widget); + gtk_widget_unrealize (widget); gtk_widget_set_has_window (widget, visible_window); - gtk_widget_realize (widget); + gtk_widget_realize (widget); - if (visible) - gtk_widget_show (widget); - } + if (visible) + gtk_widget_show (widget); + } else - { + { gtk_widget_set_has_window (widget, visible_window); - } + } if (gtk_widget_get_visible (widget)) - gtk_widget_queue_resize (widget); - + gtk_widget_queue_resize (widget); + g_object_notify (G_OBJECT (event_box), "visible-window"); } } @@ -287,52 +310,49 @@ gtk_event_box_set_visible_window (GtkEventBox *event_box, * @event_box: a #GtkEventBox * * Returns whether the event box window is above or below the - * windows of its child. See gtk_event_box_set_above_child() for - * details. + * windows of its child. See gtk_event_box_set_above_child() + * for details. * - * Return value: %TRUE if the event box window is above the window - * of its child. + * Return value: %TRUE if the event box window is above the + * window of its child * * Since: 2.4 - **/ + */ gboolean gtk_event_box_get_above_child (GtkEventBox *event_box) { - GtkEventBoxPrivate *priv; + GtkEventBoxPrivate *priv = event_box->priv; g_return_val_if_fail (GTK_IS_EVENT_BOX (event_box), FALSE); - priv = GTK_EVENT_BOX_GET_PRIVATE (event_box); - return priv->above_child; } /** * gtk_event_box_set_above_child: * @event_box: a #GtkEventBox - * @above_child: %TRUE if the event box window is above the windows of its child + * @above_child: %TRUE if the event box window is above its child * - * Set whether the event box window is positioned above the windows of its child, - * as opposed to below it. If the window is above, all events inside the - * event box will go to the event box. If the window is below, events - * in windows of child widgets will first got to that widget, and then - * to its parents. + * Set whether the event box window is positioned above the windows + * of its child, as opposed to below it. If the window is above, all + * events inside the event box will go to the event box. If the window + * is below, events in windows of child widgets will first got to that + * widget, and then to its parents. * * The default is to keep the window below the child. - * + * * Since: 2.4 - **/ + */ void gtk_event_box_set_above_child (GtkEventBox *event_box, - gboolean above_child) + gboolean above_child) { + GtkEventBoxPrivate *priv = event_box->priv; GtkWidget *widget; - GtkEventBoxPrivate *priv; g_return_if_fail (GTK_IS_EVENT_BOX (event_box)); widget = GTK_WIDGET (event_box); - priv = GTK_EVENT_BOX_GET_PRIVATE (event_box); above_child = above_child != FALSE; @@ -341,46 +361,44 @@ gtk_event_box_set_above_child (GtkEventBox *event_box, priv->above_child = above_child; if (gtk_widget_get_realized (widget)) - { - if (!gtk_widget_get_has_window (widget)) - { - if (above_child) - gdk_window_raise (priv->event_window); - else - gdk_window_lower (priv->event_window); - } - else - { - gboolean visible = gtk_widget_get_visible (widget); + { + if (!gtk_widget_get_has_window (widget)) + { + if (above_child) + gdk_window_raise (priv->event_window); + else + gdk_window_lower (priv->event_window); + } + else + { + gboolean visible = gtk_widget_get_visible (widget); - if (visible) - gtk_widget_hide (widget); - - gtk_widget_unrealize (widget); - - gtk_widget_realize (widget); - - if (visible) - gtk_widget_show (widget); - } - } + if (visible) + gtk_widget_hide (widget); + + gtk_widget_unrealize (widget); + gtk_widget_realize (widget); + + if (visible) + gtk_widget_show (widget); + } + } if (gtk_widget_get_visible (widget)) - gtk_widget_queue_resize (widget); - + gtk_widget_queue_resize (widget); + g_object_notify (G_OBJECT (event_box), "above-child"); } } - static void gtk_event_box_realize (GtkWidget *widget) { + GtkEventBoxPrivate *priv; GtkAllocation allocation; GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; - GtkEventBoxPrivate *priv; gboolean visible_window; gtk_widget_get_allocation (widget, &allocation); @@ -393,14 +411,14 @@ gtk_event_box_realize (GtkWidget *widget) attributes.height = allocation.height; attributes.window_type = GDK_WINDOW_CHILD; attributes.event_mask = gtk_widget_get_events (widget) - | GDK_BUTTON_MOTION_MASK - | GDK_BUTTON_PRESS_MASK - | GDK_BUTTON_RELEASE_MASK - | GDK_EXPOSURE_MASK - | GDK_ENTER_NOTIFY_MASK - | GDK_LEAVE_NOTIFY_MASK; + | GDK_BUTTON_MOTION_MASK + | GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_EXPOSURE_MASK + | GDK_ENTER_NOTIFY_MASK + | GDK_LEAVE_NOTIFY_MASK; - priv = GTK_EVENT_BOX_GET_PRIVATE (widget); + priv = GTK_EVENT_BOX (widget)->priv; visible_window = gtk_widget_get_has_window (widget); if (visible_window) @@ -431,23 +449,19 @@ gtk_event_box_realize (GtkWidget *widget) attributes_mask = 0; priv->event_window = gdk_window_new (window, - &attributes, attributes_mask); + &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, widget); } - gtk_widget_style_attach (widget); - if (visible_window) - gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), window); } static void gtk_event_box_unrealize (GtkWidget *widget) { - GtkEventBoxPrivate *priv; - - priv = GTK_EVENT_BOX_GET_PRIVATE (widget); - + GtkEventBoxPrivate *priv = GTK_EVENT_BOX (widget)->priv; + if (priv->event_window != NULL) { gdk_window_set_user_data (priv->event_window, NULL); @@ -461,9 +475,7 @@ gtk_event_box_unrealize (GtkWidget *widget) static void gtk_event_box_map (GtkWidget *widget) { - GtkEventBoxPrivate *priv; - - priv = GTK_EVENT_BOX_GET_PRIVATE (widget); + GtkEventBoxPrivate *priv = GTK_EVENT_BOX (widget)->priv; if (priv->event_window != NULL && !priv->above_child) gdk_window_show (priv->event_window); @@ -477,9 +489,7 @@ gtk_event_box_map (GtkWidget *widget) static void gtk_event_box_unmap (GtkWidget *widget) { - GtkEventBoxPrivate *priv; - - priv = GTK_EVENT_BOX_GET_PRIVATE (widget); + GtkEventBoxPrivate *priv = GTK_EVENT_BOX (widget)->priv; if (priv->event_window != NULL) gdk_window_hide (priv->event_window); @@ -553,21 +563,21 @@ gtk_event_box_size_allocate (GtkWidget *widget, if (gtk_widget_get_realized (widget)) { - priv = GTK_EVENT_BOX_GET_PRIVATE (widget); + priv = GTK_EVENT_BOX (widget)->priv; if (priv->event_window != NULL) - gdk_window_move_resize (priv->event_window, - child_allocation.x, - child_allocation.y, - child_allocation.width, - child_allocation.height); - + gdk_window_move_resize (priv->event_window, + child_allocation.x, + child_allocation.y, + child_allocation.width, + child_allocation.height); + if (gtk_widget_get_has_window (widget)) - gdk_window_move_resize (gtk_widget_get_window (widget), - allocation->x, - allocation->y, - child_allocation.width, - child_allocation.height); + gdk_window_move_resize (gtk_widget_get_window (widget), + allocation->x, + allocation->y, + child_allocation.width, + child_allocation.height); } child = gtk_bin_get_child (bin); @@ -576,20 +586,24 @@ gtk_event_box_size_allocate (GtkWidget *widget, } static gboolean -gtk_event_box_draw (GtkWidget *widget, - cairo_t *cr) +gtk_event_box_draw (GtkWidget *widget, + cairo_t *cr) { if (gtk_widget_get_has_window (widget) && !gtk_widget_get_app_paintable (widget)) - gtk_paint_flat_box (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - GTK_SHADOW_NONE, - widget, "eventbox", - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); - + { + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, gtk_widget_get_state_flags (widget)); + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + gtk_style_context_restore (context); + } + GTK_WIDGET_CLASS (gtk_event_box_parent_class)->draw (widget, cr); return FALSE; diff --git a/gtk/gtkeventbox.h b/gtk/gtkeventbox.h index fddd76a2b4..aac154ab5e 100644 --- a/gtk/gtkeventbox.h +++ b/gtk/gtkeventbox.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -44,12 +44,16 @@ G_BEGIN_DECLS #define GTK_IS_EVENT_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_EVENT_BOX)) #define GTK_EVENT_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_EVENT_BOX, GtkEventBoxClass)) -typedef struct _GtkEventBox GtkEventBox; -typedef struct _GtkEventBoxClass GtkEventBoxClass; +typedef struct _GtkEventBox GtkEventBox; +typedef struct _GtkEventBoxClass GtkEventBoxClass; +typedef struct _GtkEventBoxPrivate GtkEventBoxPrivate; struct _GtkEventBox { GtkBin bin; + + /*< private >*/ + GtkEventBoxPrivate *priv; }; struct _GtkEventBoxClass @@ -63,14 +67,14 @@ struct _GtkEventBoxClass void (*_gtk_reserved4) (void); }; -GType gtk_event_box_get_type (void) G_GNUC_CONST; +GType gtk_event_box_get_type (void) G_GNUC_CONST; GtkWidget* gtk_event_box_new (void); gboolean gtk_event_box_get_visible_window (GtkEventBox *event_box); void gtk_event_box_set_visible_window (GtkEventBox *event_box, - gboolean visible_window); + gboolean visible_window); gboolean gtk_event_box_get_above_child (GtkEventBox *event_box); void gtk_event_box_set_above_child (GtkEventBox *event_box, - gboolean above_child); + gboolean above_child); G_END_DECLS diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c index 236ff279f6..0370c1226a 100644 --- a/gtk/gtkexpander.c +++ b/gtk/gtkexpander.c @@ -18,11 +18,92 @@ * Boston, MA 02111-1307, USA. * * Authors: - * Mark McLoughlin + * Mark McLoughlin + */ + +/** + * SECTION:gtkexpander + * @Short_description: A container which can hide its child + * @Title: GtkExpander + * + * A #GtkExpander allows the user to hide or show its child by clicking + * on an expander triangle similar to the triangles used in a #GtkTreeView. + * + * Normally you use an expander as you would use any other descendant + * of #GtkBin; you create the child widget and use gtk_container_add() + * to add it to the expander. When the expander is toggled, it will take + * care of showing and hiding the child automatically. + * + * + * Special Usage + * + * There are situations in which you may prefer to show and hide the + * expanded widget yourself, such as when you want to actually create + * the widget at expansion time. In this case, create a #GtkExpander + * but do not add a child to it. The expander widget has an + * #GtkExpander:expanded property which can be used to monitor + * its expansion state. You should watch this property with a signal + * connection as follows: + * + * + * + * expander = gtk_expander_new_with_mnemonic ("_More Options"); + * g_signal_connect (expander, "notify::expanded", + * G_CALLBACK (expander_callback), NULL); + * + * ... + * + * static void + * expander_callback (GObject *object, + * GParamSpec *param_spec, + * gpointer user_data) + * { + * GtkExpander *expander; + * + * expander = GTK_EXPANDER (object); + * + * if (gtk_expander_get_expanded (expander)) + * { + * /* Show or create widgets */ + * } + * else + * { + * /* Hide or destroy widgets */ + * } + * } + * + * + * + * + * GtkExpander as GtkBuildable + * + * The GtkExpander implementation of the GtkBuildable interface + * supports placing a child in the label position by specifying + * "label" as the "type" attribute of a <child> element. + * A normal content child can be specified without specifying + * a <child> type attribute. + * + * + * A UI definition fragment with GtkExpander + * + * + * + * + * + * + * + * + * ]]> + * + * + * */ #include "config.h" + #include + #include "gtkexpander.h" #include "gtklabel.h" @@ -32,7 +113,6 @@ #include "gtkmain.h" #include "gtkintl.h" #include "gtkprivate.h" -#include #include "gtkdnd.h" @@ -57,8 +137,6 @@ struct _GtkExpanderPrivate GdkWindow *event_window; gint spacing; - GtkExpanderStyle expander_style; - guint animation_timeout; guint expand_timer; guint expanded : 1; @@ -70,66 +148,66 @@ struct _GtkExpanderPrivate }; static void gtk_expander_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_expander_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_expander_destroy (GtkWidget *widget); static void gtk_expander_realize (GtkWidget *widget); static void gtk_expander_unrealize (GtkWidget *widget); static void gtk_expander_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static void gtk_expander_map (GtkWidget *widget); static void gtk_expander_unmap (GtkWidget *widget); static gboolean gtk_expander_draw (GtkWidget *widget, - cairo_t *cr); + cairo_t *cr); static gboolean gtk_expander_button_press (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gboolean gtk_expander_button_release (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gboolean gtk_expander_enter_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gboolean gtk_expander_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gboolean gtk_expander_focus (GtkWidget *widget, - GtkDirectionType direction); + GtkDirectionType direction); static void gtk_expander_grab_notify (GtkWidget *widget, - gboolean was_grabbed); -static void gtk_expander_state_changed (GtkWidget *widget, - GtkStateType previous_state); + gboolean was_grabbed); +static void gtk_expander_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gboolean gtk_expander_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time); + GdkDragContext *context, + gint x, + gint y, + guint time); static void gtk_expander_drag_leave (GtkWidget *widget, - GdkDragContext *context, - guint time); + GdkDragContext *context, + guint time); static void gtk_expander_add (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_expander_remove (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_expander_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); static void gtk_expander_activate (GtkExpander *expander); static void get_expander_bounds (GtkExpander *expander, - GdkRectangle *rect); + GdkRectangle *rect); /* GtkBuildable */ static void gtk_expander_buildable_init (GtkBuildableIface *iface); static void gtk_expander_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type); + GtkBuilder *builder, + GObject *child, + const gchar *type); /* GtkWidget */ @@ -149,8 +227,8 @@ static void gtk_expander_get_preferred_width_for_height (GtkWidget * gint *natural_height); G_DEFINE_TYPE_WITH_CODE (GtkExpander, gtk_expander, GTK_TYPE_BIN, - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_expander_buildable_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_expander_buildable_init)) static void gtk_expander_class_init (GtkExpanderClass *klass) @@ -179,7 +257,7 @@ gtk_expander_class_init (GtkExpanderClass *klass) widget_class->leave_notify_event = gtk_expander_leave_notify; widget_class->focus = gtk_expander_focus; widget_class->grab_notify = gtk_expander_grab_notify; - widget_class->state_changed = gtk_expander_state_changed; + widget_class->state_flags_changed = gtk_expander_state_flags_changed; widget_class->drag_motion = gtk_expander_drag_motion; widget_class->drag_leave = gtk_expander_drag_leave; widget_class->get_preferred_width = gtk_expander_get_preferred_width; @@ -196,89 +274,89 @@ gtk_expander_class_init (GtkExpanderClass *klass) g_type_class_add_private (klass, sizeof (GtkExpanderPrivate)); g_object_class_install_property (gobject_class, - PROP_EXPANDED, - g_param_spec_boolean ("expanded", - P_("Expanded"), - P_("Whether the expander has been opened to reveal the child widget"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + PROP_EXPANDED, + g_param_spec_boolean ("expanded", + P_("Expanded"), + P_("Whether the expander has been opened to reveal the child widget"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (gobject_class, - PROP_LABEL, - g_param_spec_string ("label", - P_("Label"), - P_("Text of the expander's label"), - NULL, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + PROP_LABEL, + g_param_spec_string ("label", + P_("Label"), + P_("Text of the expander's label"), + NULL, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (gobject_class, - PROP_USE_UNDERLINE, - g_param_spec_boolean ("use-underline", - P_("Use underline"), - P_("If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + PROP_USE_UNDERLINE, + g_param_spec_boolean ("use-underline", + P_("Use underline"), + P_("If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (gobject_class, - PROP_USE_MARKUP, - g_param_spec_boolean ("use-markup", - P_("Use markup"), - P_("The text of the label includes XML markup. See pango_parse_markup()"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + PROP_USE_MARKUP, + g_param_spec_boolean ("use-markup", + P_("Use markup"), + P_("The text of the label includes XML markup. See pango_parse_markup()"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (gobject_class, - PROP_SPACING, - g_param_spec_int ("spacing", - P_("Spacing"), - P_("Space to put between the label and the child"), - 0, - G_MAXINT, - 0, - GTK_PARAM_READWRITE)); + PROP_SPACING, + g_param_spec_int ("spacing", + P_("Spacing"), + P_("Space to put between the label and the child"), + 0, + G_MAXINT, + 0, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_LABEL_WIDGET, - g_param_spec_object ("label-widget", - P_("Label widget"), - P_("A widget to display in place of the usual expander label"), - GTK_TYPE_WIDGET, - GTK_PARAM_READWRITE)); + PROP_LABEL_WIDGET, + g_param_spec_object ("label-widget", + P_("Label widget"), + P_("A widget to display in place of the usual expander label"), + GTK_TYPE_WIDGET, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_LABEL_FILL, - g_param_spec_boolean ("label-fill", - P_("Label fill"), - P_("Whether the label widget should fill all available horizontal space"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + PROP_LABEL_FILL, + g_param_spec_boolean ("label-fill", + P_("Label fill"), + P_("Whether the label widget should fill all available horizontal space"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("expander-size", - P_("Expander Size"), - P_("Size of the expander arrow"), - 0, - G_MAXINT, - DEFAULT_EXPANDER_SIZE, - GTK_PARAM_READABLE)); + g_param_spec_int ("expander-size", + P_("Expander Size"), + P_("Size of the expander arrow"), + 0, + G_MAXINT, + DEFAULT_EXPANDER_SIZE, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("expander-spacing", - P_("Indicator Spacing"), - P_("Spacing around expander arrow"), - 0, - G_MAXINT, - DEFAULT_EXPANDER_SPACING, - GTK_PARAM_READABLE)); + g_param_spec_int ("expander-spacing", + P_("Indicator Spacing"), + P_("Spacing around expander arrow"), + 0, + G_MAXINT, + DEFAULT_EXPANDER_SPACING, + GTK_PARAM_READABLE)); widget_class->activate_signal = g_signal_new (I_("activate"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (GtkExpanderClass, activate), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkExpanderClass, activate), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); } static void @@ -297,9 +375,6 @@ gtk_expander_init (GtkExpander *expander) priv->event_window = NULL; priv->spacing = 0; - priv->expander_style = GTK_EXPANDER_COLLAPSED; - priv->animation_timeout = 0; - priv->expanded = FALSE; priv->use_underline = FALSE; priv->use_markup = FALSE; @@ -314,9 +389,9 @@ gtk_expander_init (GtkExpander *expander) static void gtk_expander_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type) + GtkBuilder *builder, + GObject *child, + const gchar *type) { if (!type) gtk_container_add (GTK_CONTAINER (buildable), GTK_WIDGET (child)); @@ -334,12 +409,12 @@ gtk_expander_buildable_init (GtkBuildableIface *iface) static void gtk_expander_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkExpander *expander = GTK_EXPANDER (object); - + switch (prop_id) { case PROP_EXPANDED: @@ -371,9 +446,9 @@ gtk_expander_set_property (GObject *object, static void gtk_expander_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkExpander *expander = GTK_EXPANDER (object); GtkExpanderPrivate *priv = expander->priv; @@ -397,8 +472,8 @@ gtk_expander_get_property (GObject *object, break; case PROP_LABEL_WIDGET: g_value_set_object (value, - priv->label_widget ? - G_OBJECT (priv->label_widget) : NULL); + priv->label_widget ? + G_OBJECT (priv->label_widget) : NULL); break; case PROP_LABEL_FILL: g_value_set_boolean (value, priv->label_fill); @@ -414,10 +489,10 @@ gtk_expander_destroy (GtkWidget *widget) { GtkExpanderPrivate *priv = GTK_EXPANDER (widget)->priv; - if (priv->animation_timeout) + if (priv->expand_timer) { - g_source_remove (priv->animation_timeout); - priv->animation_timeout = 0; + g_source_remove (priv->expand_timer); + priv->expand_timer = 0; } GTK_WIDGET_CLASS (gtk_expander_parent_class)->destroy (widget); @@ -442,7 +517,7 @@ gtk_expander_realize (GtkWidget *widget) border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); get_expander_bounds (GTK_EXPANDER (widget), &expander_rect); - + if (priv->label_widget && gtk_widget_get_visible (priv->label_widget)) { GtkRequisition label_requisition; @@ -462,11 +537,11 @@ gtk_expander_realize (GtkWidget *widget) attributes.width = MAX (allocation.width - 2 * border_width, 1); attributes.height = MAX (expander_rect.height, label_height - 2 * border_width); attributes.wclass = GDK_INPUT_ONLY; - attributes.event_mask = gtk_widget_get_events (widget) | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK; + attributes.event_mask = gtk_widget_get_events (widget) + | GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_ENTER_NOTIFY_MASK + | GDK_LEAVE_NOTIFY_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y; @@ -475,10 +550,8 @@ gtk_expander_realize (GtkWidget *widget) g_object_ref (window); priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), - &attributes, attributes_mask); + &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, widget); - - gtk_widget_style_attach (widget); } static void @@ -498,7 +571,7 @@ gtk_expander_unrealize (GtkWidget *widget) static void get_expander_bounds (GtkExpander *expander, - GdkRectangle *rect) + GdkRectangle *rect) { GtkAllocation allocation; GtkWidget *widget; @@ -519,12 +592,12 @@ get_expander_bounds (GtkExpander *expander, border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); gtk_widget_style_get (widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); ltr = gtk_widget_get_direction (widget) != GTK_TEXT_DIR_RTL; @@ -544,9 +617,9 @@ get_expander_bounds (GtkExpander *expander, gtk_widget_get_allocation (priv->label_widget, &label_allocation); if (expander_size < label_allocation.height) - rect->y += focus_width + focus_pad + (label_allocation.height - expander_size) / 2; + rect->y += focus_width + focus_pad + (label_allocation.height - expander_size) / 2; else - rect->y += expander_spacing; + rect->y += expander_spacing; } else { @@ -556,9 +629,9 @@ get_expander_bounds (GtkExpander *expander, if (!interior_focus) { if (ltr) - rect->x += focus_width + focus_pad; + rect->x += focus_width + focus_pad; else - rect->x -= focus_width + focus_pad; + rect->x -= focus_width + focus_pad; rect->y += focus_width + focus_pad; } @@ -567,7 +640,7 @@ get_expander_bounds (GtkExpander *expander, static void gtk_expander_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkExpander *expander; GtkWidget *child; @@ -592,12 +665,12 @@ gtk_expander_size_allocate (GtkWidget *widget, gtk_widget_set_allocation (widget, allocation); gtk_widget_style_get (widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); /* Calculate some offsets/padding first */ @@ -625,7 +698,8 @@ gtk_expander_size_allocate (GtkWidget *widget, label_allocation.width = MAX (label_allocation.width, 1); /* We distribute the minimum height to the label widget and prioritize - * the child widget giving it the remaining height */ + * the child widget giving it the remaining height + */ gtk_widget_get_preferred_height_for_width (priv->label_widget, label_allocation.width, &label_height, NULL); @@ -641,9 +715,9 @@ gtk_expander_size_allocate (GtkWidget *widget, label_allocation.y = allocation->y + border_width + focus_width + focus_pad; label_allocation.height = MIN (label_height, - allocation->height - 2 * border_width - - 2 * focus_width - 2 * focus_pad - - (child_visible ? priv->spacing : 0)); + allocation->height - 2 * border_width - + 2 * focus_width - 2 * focus_pad - + (child_visible ? priv->spacing : 0)); label_allocation.height = MAX (label_allocation.height, 1); gtk_widget_size_allocate (priv->label_widget, &label_allocation); @@ -662,10 +736,10 @@ gtk_expander_size_allocate (GtkWidget *widget, get_expander_bounds (expander, &rect); gdk_window_move_resize (priv->event_window, - allocation->x + border_width, - allocation->y + border_width, - MAX (allocation->width - 2 * border_width, 1), - MAX (rect.height, label_height - 2 * border_width)); + allocation->x + border_width, + allocation->y + border_width, + MAX (allocation->width - 2 * border_width, 1), + MAX (rect.height, label_height - 2 * border_width)); } if (child_visible) @@ -674,7 +748,7 @@ gtk_expander_size_allocate (GtkWidget *widget, gint top_height; top_height = MAX (top_min_height, - label_height + (interior_focus ? 2 * focus_width + 2 * focus_pad : 0)); + label_height + (interior_focus ? 2 * focus_width + 2 * focus_pad : 0)); child_allocation.x = allocation->x + border_width; child_allocation.y = allocation->y + top_height + child_yoffset; @@ -716,13 +790,15 @@ gtk_expander_unmap (GtkWidget *widget) } static void -gtk_expander_paint_prelight (GtkExpander *expander, cairo_t *cr) +gtk_expander_paint_prelight (GtkExpander *expander, + cairo_t *cr) { GtkAllocation allocation; GtkWidget *widget; GtkContainer *container; GtkExpanderPrivate *priv; GdkRectangle area; + GtkStyleContext *context; gboolean interior_focus; int focus_width; int focus_pad; @@ -735,12 +811,12 @@ gtk_expander_paint_prelight (GtkExpander *expander, cairo_t *cr) container = GTK_CONTAINER (expander); gtk_widget_style_get (widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); gtk_widget_get_allocation (widget, &allocation); @@ -763,53 +839,70 @@ gtk_expander_paint_prelight (GtkExpander *expander, cairo_t *cr) area.height = MAX (area.height, expander_size + 2 * expander_spacing); area.height += !interior_focus ? (focus_width + focus_pad) * 2 : 0; - gtk_paint_flat_box (gtk_widget_get_style (widget), - cr, - GTK_STATE_PRELIGHT, - GTK_SHADOW_ETCHED_OUT, - widget, "expander", - area.x, area.y, - area.width, area.height); + context = gtk_widget_get_style_context (widget); + gtk_render_background (context, cr, + area.x, area.y, + area.width, area.height); } static void -gtk_expander_paint (GtkExpander *expander, cairo_t *cr) +gtk_expander_paint (GtkExpander *expander, + cairo_t *cr) { + GtkExpanderPrivate *priv = expander->priv; GtkWidget *widget; GdkRectangle clip; GtkAllocation allocation; - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state = 0; + gint size; widget = GTK_WIDGET (expander); + context = gtk_widget_get_style_context (widget); get_expander_bounds (expander, &clip); gtk_widget_get_allocation (widget, &allocation); - state = gtk_widget_get_state (widget); + gtk_style_context_save (context); + if (expander->priv->prelight) { - state = GTK_STATE_PRELIGHT; - + state = GTK_STATE_FLAG_PRELIGHT; + gtk_style_context_set_state (context, state); gtk_expander_paint_prelight (expander, cr); } - gtk_paint_expander (gtk_widget_get_style (widget), - cr, - state, - widget, - "expander", - clip.x + clip.width / 2 - allocation.x, - clip.y + clip.height / 2 - allocation.y, - expander->priv->expander_style); + gtk_widget_style_get (widget, "expander-size", &size, NULL); + + state = gtk_style_context_get_state (context); + + /* Set active flag as per the expanded state */ + if (priv->expanded) + state |= GTK_STATE_FLAG_ACTIVE; + + gtk_style_context_set_state (context, state); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER); + + /* The expander is the only animatable region */ + gtk_style_context_push_animatable_region (context, GUINT_TO_POINTER (1)); + + gtk_render_expander (context, cr, + clip.x - allocation.x, + clip.y - allocation.y, + size, size); + + gtk_style_context_pop_animatable_region (context); + gtk_style_context_restore (context); } static void gtk_expander_paint_focus (GtkExpander *expander, - cairo_t *cr) + cairo_t *cr) { GtkWidget *widget; GtkExpanderPrivate *priv; GdkRectangle rect; + GtkStyleContext *context; gint x, y, width, height; gboolean interior_focus; gint border_width; @@ -827,27 +920,27 @@ gtk_expander_paint_focus (GtkExpander *expander, gtk_widget_get_allocation (widget, &allocation); gtk_widget_style_get (widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); ltr = gtk_widget_get_direction (widget) != GTK_TEXT_DIR_RTL; - + width = height = 0; if (priv->label_widget) { if (gtk_widget_get_visible (priv->label_widget)) - { - GtkAllocation label_allocation; + { + GtkAllocation label_allocation; - gtk_widget_get_allocation (priv->label_widget, &label_allocation); - width = label_allocation.width; - height = label_allocation.height; - } + gtk_widget_get_allocation (priv->label_widget, &label_allocation); + width = label_allocation.width; + height = label_allocation.height; + } width += 2 * focus_pad + 2 * focus_width; height += 2 * focus_pad + 2 * focus_width; @@ -856,21 +949,21 @@ gtk_expander_paint_focus (GtkExpander *expander, y = border_width; if (ltr) - { - if (interior_focus) - x += expander_spacing * 2 + expander_size; - } + { + if (interior_focus) + x += expander_spacing * 2 + expander_size; + } else - { - x += allocation.width - 2 * border_width - - expander_spacing * 2 - expander_size - width; - } + { + x += allocation.width - 2 * border_width + - expander_spacing * 2 - expander_size - width; + } if (!interior_focus) - { - width += expander_size + 2 * expander_spacing; - height = MAX (height, expander_size + 2 * expander_spacing); - } + { + width += expander_size + 2 * expander_spacing; + height = MAX (height, expander_size + 2 * expander_spacing); + } } else { @@ -882,16 +975,14 @@ gtk_expander_paint_focus (GtkExpander *expander, height = rect.height + 2 * focus_pad; } - gtk_paint_focus (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - widget, "expander", - x, y, width, height); + context = gtk_widget_get_style_context (widget); + gtk_render_focus (context, cr, + x, y, width, height); } static gboolean gtk_expander_draw (GtkWidget *widget, - cairo_t *cr) + cairo_t *cr) { GtkExpander *expander = GTK_EXPANDER (widget); @@ -907,7 +998,7 @@ gtk_expander_draw (GtkWidget *widget, static gboolean gtk_expander_button_press (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkExpander *expander = GTK_EXPANDER (widget); @@ -922,7 +1013,7 @@ gtk_expander_button_press (GtkWidget *widget, static gboolean gtk_expander_button_release (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkExpander *expander = GTK_EXPANDER (widget); @@ -938,15 +1029,15 @@ gtk_expander_button_release (GtkWidget *widget, static void gtk_expander_grab_notify (GtkWidget *widget, - gboolean was_grabbed) + gboolean was_grabbed) { if (!was_grabbed) GTK_EXPANDER (widget)->priv->button_down = FALSE; } static void -gtk_expander_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_expander_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { if (!gtk_widget_is_sensitive (widget)) GTK_EXPANDER (widget)->priv->button_down = FALSE; @@ -967,7 +1058,7 @@ gtk_expander_redraw_expander (GtkExpander *expander) static gboolean gtk_expander_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkExpander *expander = GTK_EXPANDER (widget); @@ -989,7 +1080,7 @@ gtk_expander_enter_notify (GtkWidget *widget, static gboolean gtk_expander_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkExpander *expander = GTK_EXPANDER (widget); @@ -1022,10 +1113,10 @@ expand_timeout (gpointer data) static gboolean gtk_expander_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time) + GdkDragContext *context, + gint x, + gint y, + guint time) { GtkExpander *expander = GTK_EXPANDER (widget); GtkExpanderPrivate *priv = expander->priv; @@ -1046,8 +1137,8 @@ gtk_expander_drag_motion (GtkWidget *widget, static void gtk_expander_drag_leave (GtkWidget *widget, - GdkDragContext *context, - guint time) + GdkDragContext *context, + guint time) { GtkExpander *expander = GTK_EXPANDER (widget); GtkExpanderPrivate *priv = expander->priv; @@ -1069,7 +1160,7 @@ typedef enum static gboolean focus_current_site (GtkExpander *expander, - GtkDirectionType direction) + GtkDirectionType direction) { GtkWidget *current_focus; @@ -1083,8 +1174,8 @@ focus_current_site (GtkExpander *expander, static gboolean focus_in_site (GtkExpander *expander, - FocusSite site, - GtkDirectionType direction) + FocusSite site, + GtkDirectionType direction) { switch (site) { @@ -1093,17 +1184,17 @@ focus_in_site (GtkExpander *expander, return TRUE; case FOCUS_LABEL: if (expander->priv->label_widget) - return gtk_widget_child_focus (expander->priv->label_widget, direction); + return gtk_widget_child_focus (expander->priv->label_widget, direction); else - return FALSE; + return FALSE; case FOCUS_CHILD: { - GtkWidget *child = gtk_bin_get_child (GTK_BIN (expander)); + GtkWidget *child = gtk_bin_get_child (GTK_BIN (expander)); - if (child && gtk_widget_get_child_visible (child)) - return gtk_widget_child_focus (child, direction); - else - return FALSE; + if (child && gtk_widget_get_child_visible (child)) + return gtk_widget_child_focus (child, direction); + else + return FALSE; } case FOCUS_NONE: break; @@ -1115,8 +1206,8 @@ focus_in_site (GtkExpander *expander, static FocusSite get_next_site (GtkExpander *expander, - FocusSite site, - GtkDirectionType direction) + FocusSite site, + GtkDirectionType direction) { gboolean ltr; @@ -1126,58 +1217,58 @@ get_next_site (GtkExpander *expander, { case FOCUS_NONE: switch (direction) - { - case GTK_DIR_TAB_BACKWARD: - case GTK_DIR_LEFT: - case GTK_DIR_UP: - return FOCUS_CHILD; - case GTK_DIR_TAB_FORWARD: - case GTK_DIR_DOWN: - case GTK_DIR_RIGHT: - return FOCUS_WIDGET; - } + { + case GTK_DIR_TAB_BACKWARD: + case GTK_DIR_LEFT: + case GTK_DIR_UP: + return FOCUS_CHILD; + case GTK_DIR_TAB_FORWARD: + case GTK_DIR_DOWN: + case GTK_DIR_RIGHT: + return FOCUS_WIDGET; + } case FOCUS_WIDGET: switch (direction) - { - case GTK_DIR_TAB_BACKWARD: - case GTK_DIR_UP: - return FOCUS_NONE; - case GTK_DIR_LEFT: - return ltr ? FOCUS_NONE : FOCUS_LABEL; - case GTK_DIR_TAB_FORWARD: - case GTK_DIR_DOWN: - return FOCUS_LABEL; - case GTK_DIR_RIGHT: - return ltr ? FOCUS_LABEL : FOCUS_NONE; - break; - } + { + case GTK_DIR_TAB_BACKWARD: + case GTK_DIR_UP: + return FOCUS_NONE; + case GTK_DIR_LEFT: + return ltr ? FOCUS_NONE : FOCUS_LABEL; + case GTK_DIR_TAB_FORWARD: + case GTK_DIR_DOWN: + return FOCUS_LABEL; + case GTK_DIR_RIGHT: + return ltr ? FOCUS_LABEL : FOCUS_NONE; + break; + } case FOCUS_LABEL: switch (direction) - { - case GTK_DIR_TAB_BACKWARD: - case GTK_DIR_UP: - return FOCUS_WIDGET; - case GTK_DIR_LEFT: - return ltr ? FOCUS_WIDGET : FOCUS_CHILD; - case GTK_DIR_TAB_FORWARD: - case GTK_DIR_DOWN: - return FOCUS_CHILD; - case GTK_DIR_RIGHT: - return ltr ? FOCUS_CHILD : FOCUS_WIDGET; - break; - } + { + case GTK_DIR_TAB_BACKWARD: + case GTK_DIR_UP: + return FOCUS_WIDGET; + case GTK_DIR_LEFT: + return ltr ? FOCUS_WIDGET : FOCUS_CHILD; + case GTK_DIR_TAB_FORWARD: + case GTK_DIR_DOWN: + return FOCUS_CHILD; + case GTK_DIR_RIGHT: + return ltr ? FOCUS_CHILD : FOCUS_WIDGET; + break; + } case FOCUS_CHILD: switch (direction) - { - case GTK_DIR_TAB_BACKWARD: - case GTK_DIR_LEFT: - case GTK_DIR_UP: - return FOCUS_LABEL; - case GTK_DIR_TAB_FORWARD: - case GTK_DIR_DOWN: - case GTK_DIR_RIGHT: - return FOCUS_NONE; - } + { + case GTK_DIR_TAB_BACKWARD: + case GTK_DIR_LEFT: + case GTK_DIR_UP: + return FOCUS_LABEL; + case GTK_DIR_TAB_FORWARD: + case GTK_DIR_DOWN: + case GTK_DIR_RIGHT: + return FOCUS_NONE; + } } g_assert_not_reached (); @@ -1186,31 +1277,31 @@ get_next_site (GtkExpander *expander, static gboolean gtk_expander_focus (GtkWidget *widget, - GtkDirectionType direction) + GtkDirectionType direction) { GtkExpander *expander = GTK_EXPANDER (widget); - + if (!focus_current_site (expander, direction)) { GtkWidget *old_focus_child; gboolean widget_is_focus; FocusSite site = FOCUS_NONE; - + widget_is_focus = gtk_widget_is_focus (widget); old_focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget)); - + if (old_focus_child && old_focus_child == expander->priv->label_widget) - site = FOCUS_LABEL; + site = FOCUS_LABEL; else if (old_focus_child) - site = FOCUS_CHILD; + site = FOCUS_CHILD; else if (widget_is_focus) - site = FOCUS_WIDGET; + site = FOCUS_WIDGET; while ((site = get_next_site (expander, site, direction)) != FOCUS_NONE) - { - if (focus_in_site (expander, site, direction)) - return TRUE; - } + { + if (focus_in_site (expander, site, direction)) + return TRUE; + } return FALSE; } @@ -1220,7 +1311,7 @@ gtk_expander_focus (GtkWidget *widget, static void gtk_expander_add (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GTK_CONTAINER_CLASS (gtk_expander_parent_class)->add (container, widget); @@ -1230,7 +1321,7 @@ gtk_expander_add (GtkContainer *container, static void gtk_expander_remove (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GtkExpander *expander = GTK_EXPANDER (container); @@ -1242,9 +1333,9 @@ gtk_expander_remove (GtkContainer *container, static void gtk_expander_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) { GtkBin *bin = GTK_BIN (container); GtkExpanderPrivate *priv = GTK_EXPANDER (container)->priv; @@ -1265,7 +1356,7 @@ gtk_expander_activate (GtkExpander *expander) } -static void +static void gtk_expander_get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size) @@ -1287,14 +1378,14 @@ gtk_expander_get_preferred_width (GtkWidget *widget, border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); gtk_widget_style_get (GTK_WIDGET (widget), - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); - *minimum_size = *natural_size = + *minimum_size = *natural_size = expander_size + 2 * expander_spacing + 2 * focus_width + 2 * focus_pad; @@ -1302,7 +1393,7 @@ gtk_expander_get_preferred_width (GtkWidget *widget, { gint label_min, label_nat; - gtk_widget_get_preferred_width (priv->label_widget, + gtk_widget_get_preferred_width (priv->label_widget, &label_min, &label_nat); *minimum_size += label_min; @@ -1313,7 +1404,7 @@ gtk_expander_get_preferred_width (GtkWidget *widget, { gint child_min, child_nat; - gtk_widget_get_preferred_width (child, + gtk_widget_get_preferred_width (child, &child_min, &child_nat); *minimum_size = MAX (*minimum_size, child_min); @@ -1329,7 +1420,7 @@ static void gtk_expander_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) -{ +{ GtkExpander *expander; GtkWidget *child; GtkExpanderPrivate *priv; @@ -1347,14 +1438,14 @@ gtk_expander_get_preferred_height (GtkWidget *widget, border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); gtk_widget_style_get (GTK_WIDGET (widget), - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); - *minimum_size = *natural_size = + *minimum_size = *natural_size = interior_focus ? (2 * focus_width + 2 * focus_pad) : 0; @@ -1362,9 +1453,9 @@ gtk_expander_get_preferred_height (GtkWidget *widget, { gint label_min, label_nat; - gtk_widget_get_preferred_height (priv->label_widget, + gtk_widget_get_preferred_height (priv->label_widget, &label_min, &label_nat); - + *minimum_size += label_min; *natural_size += label_nat; } @@ -1383,7 +1474,7 @@ gtk_expander_get_preferred_height (GtkWidget *widget, { gint child_min, child_nat; - gtk_widget_get_preferred_height (child, + gtk_widget_get_preferred_height (child, &child_min, &child_nat); *minimum_size += child_min + priv->spacing; @@ -1419,16 +1510,16 @@ gtk_expander_get_preferred_height_for_width (GtkWidget *widget, border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); gtk_widget_style_get (GTK_WIDGET (widget), - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, - "focus-padding", &focus_pad, - "expander-size", &expander_size, - "expander-spacing", &expander_spacing, - NULL); + "interior-focus", &interior_focus, + "focus-line-width", &focus_width, + "focus-padding", &focus_pad, + "expander-size", &expander_size, + "expander-spacing", &expander_spacing, + NULL); label_xpad = 2 * border_width + expander_size + 2 * expander_spacing - 2 * focus_width + 2 * focus_pad; - *minimum_height = *natural_height = + *minimum_height = *natural_height = interior_focus ? (2 * focus_width + 2 * focus_pad) : 0; @@ -1436,10 +1527,10 @@ gtk_expander_get_preferred_height_for_width (GtkWidget *widget, { gint label_min, label_nat; - gtk_widget_get_preferred_height_for_width (priv->label_widget, - MAX (width - label_xpad, 1), + gtk_widget_get_preferred_height_for_width (priv->label_widget, + MAX (width - label_xpad, 1), &label_min, &label_nat); - + *minimum_height += label_min; *natural_height += label_nat; } @@ -1458,8 +1549,8 @@ gtk_expander_get_preferred_height_for_width (GtkWidget *widget, { gint child_min, child_nat; - gtk_widget_get_preferred_height_for_width (child, - MAX (width - 2 * border_width, 1), + gtk_widget_get_preferred_height_for_width (child, + MAX (width - 2 * border_width, 1), &child_min, &child_nat); *minimum_height += child_min + priv->spacing; @@ -1484,13 +1575,13 @@ gtk_expander_get_preferred_width_for_height (GtkWidget *widget, /** * gtk_expander_new: * @label: the text of the label - * + * * Creates a new expander using @label as the text of the label. - * + * * Return value: a new #GtkExpander widget. * * Since: 2.4 - **/ + */ GtkWidget * gtk_expander_new (const gchar *label) { @@ -1499,94 +1590,27 @@ gtk_expander_new (const gchar *label) /** * gtk_expander_new_with_mnemonic: - * @label: (allow-none): the text of the label with an underscore in front of the - * mnemonic character + * @label: (allow-none): the text of the label with an underscore + * in front of the mnemonic character * * Creates a new expander using @label as the text of the label. * If characters in @label are preceded by an underscore, they are underlined. - * If you need a literal underscore character in a label, use '__' (two - * underscores). The first underlined character represents a keyboard + * If you need a literal underscore character in a label, use '__' (two + * underscores). The first underlined character represents a keyboard * accelerator called a mnemonic. * Pressing Alt and that key activates the button. - * + * * Return value: a new #GtkExpander widget. * * Since: 2.4 - **/ + */ GtkWidget * gtk_expander_new_with_mnemonic (const gchar *label) { return g_object_new (GTK_TYPE_EXPANDER, - "label", label, - "use-underline", TRUE, - NULL); -} - -static gboolean -gtk_expander_animation_timeout (GtkExpander *expander) -{ - GtkExpanderPrivate *priv = expander->priv; - GtkWidget *widget = GTK_WIDGET (expander); - GtkWidget *child; - GdkRectangle area; - gboolean finish = FALSE; - - if (gtk_widget_get_realized (widget)) - { - get_expander_bounds (expander, &area); - gdk_window_invalidate_rect (gtk_widget_get_window (widget), &area, TRUE); - } - - if (priv->expanded) - { - if (priv->expander_style == GTK_EXPANDER_COLLAPSED) - { - priv->expander_style = GTK_EXPANDER_SEMI_EXPANDED; - } - else - { - priv->expander_style = GTK_EXPANDER_EXPANDED; - finish = TRUE; - } - } - else - { - if (priv->expander_style == GTK_EXPANDER_EXPANDED) - { - priv->expander_style = GTK_EXPANDER_SEMI_COLLAPSED; - } - else - { - priv->expander_style = GTK_EXPANDER_COLLAPSED; - finish = TRUE; - } - } - - if (finish) - { - priv->animation_timeout = 0; - - child = gtk_bin_get_child (GTK_BIN (expander)); - if (child) - gtk_widget_set_child_visible (child, priv->expanded); - gtk_widget_queue_resize (widget); - } - - return !finish; -} - -static void -gtk_expander_start_animation (GtkExpander *expander) -{ - GtkExpanderPrivate *priv = expander->priv; - - if (priv->animation_timeout) - g_source_remove (priv->animation_timeout); - - priv->animation_timeout = - gdk_threads_add_timeout (50, - (GSourceFunc) gtk_expander_animation_timeout, - expander); + "label", label, + "use-underline", TRUE, + NULL); } /** @@ -1599,10 +1623,10 @@ gtk_expander_start_animation (GtkExpander *expander) * child widget to be hidden. * * Since: 2.4 - **/ + */ void gtk_expander_set_expanded (GtkExpander *expander, - gboolean expanded) + gboolean expanded) { GtkExpanderPrivate *priv; GtkWidget *child; @@ -1615,29 +1639,36 @@ gtk_expander_set_expanded (GtkExpander *expander, if (priv->expanded != expanded) { - GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (expander)); - gboolean enable_animations; + GtkWidget *widget = GTK_WIDGET (expander); + GtkSettings *settings = gtk_widget_get_settings (widget); + GtkStyleContext *context; + gboolean enable_animations; + context = gtk_widget_get_style_context (widget); priv->expanded = expanded; g_object_get (settings, "gtk-enable-animations", &enable_animations, NULL); - if (enable_animations && gtk_widget_get_realized (GTK_WIDGET (expander))) - { - gtk_expander_start_animation (expander); - } - else - { - priv->expander_style = expanded ? GTK_EXPANDER_EXPANDED : - GTK_EXPANDER_COLLAPSED; + if (enable_animations && gtk_widget_get_realized (widget)) + { + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER); - child = gtk_bin_get_child (GTK_BIN (expander)); - if (child) - { - gtk_widget_set_child_visible (child, priv->expanded); - gtk_widget_queue_resize (GTK_WIDGET (expander)); - } - } + gtk_style_context_notify_state_change (context, + gtk_widget_get_window (widget), + GUINT_TO_POINTER (1), + GTK_STATE_ACTIVE, + expanded); + gtk_style_context_restore (context); + } + + child = gtk_bin_get_child (GTK_BIN (expander)); + + if (child) + { + gtk_widget_set_child_visible (child, priv->expanded); + gtk_widget_queue_resize (widget); + } g_object_notify (G_OBJECT (expander), "expanded"); } @@ -1652,10 +1683,10 @@ gtk_expander_set_expanded (GtkExpander *expander, * * See gtk_expander_set_expanded(). * - * Return value: the current state of the expander. + * Return value: the current state of the expander * * Since: 2.4 - **/ + */ gboolean gtk_expander_get_expanded (GtkExpander *expander) { @@ -1667,16 +1698,16 @@ gtk_expander_get_expanded (GtkExpander *expander) /** * gtk_expander_set_spacing: * @expander: a #GtkExpander - * @spacing: distance between the expander and child in pixels. + * @spacing: distance between the expander and child in pixels * - * Sets the spacing field of @expander, which is the number of pixels to - * place between expander and the child. + * Sets the spacing field of @expander, which is the number of + * pixels to place between expander and the child. * * Since: 2.4 - **/ + */ void gtk_expander_set_spacing (GtkExpander *expander, - gint spacing) + gint spacing) { g_return_if_fail (GTK_IS_EXPANDER (expander)); g_return_if_fail (spacing >= 0); @@ -1697,10 +1728,10 @@ gtk_expander_set_spacing (GtkExpander *expander, * * Gets the value set by gtk_expander_set_spacing(). * - * Return value: spacing between the expander and child. + * Return value: spacing between the expander and child * * Since: 2.4 - **/ + */ gint gtk_expander_get_spacing (GtkExpander *expander) { @@ -1719,10 +1750,10 @@ gtk_expander_get_spacing (GtkExpander *expander) * This will also clear any previously set labels. * * Since: 2.4 - **/ + */ void gtk_expander_set_label (GtkExpander *expander, - const gchar *label) + const gchar *label) { g_return_if_fail (GTK_IS_EXPANDER (expander)); @@ -1762,10 +1793,10 @@ gtk_expander_set_label (GtkExpander *expander, * widget. * * Return value: The text of the label widget. This string is owned - * by the widget and must not be modified or freed. + * by the widget and must not be modified or freed. * * Since: 2.4 - **/ + */ G_CONST_RETURN char * gtk_expander_get_label (GtkExpander *expander) { @@ -1790,10 +1821,10 @@ gtk_expander_get_label (GtkExpander *expander) * the next character should be used for the mnemonic accelerator key. * * Since: 2.4 - **/ + */ void gtk_expander_set_use_underline (GtkExpander *expander, - gboolean use_underline) + gboolean use_underline) { GtkExpanderPrivate *priv; @@ -1808,7 +1839,7 @@ gtk_expander_set_use_underline (GtkExpander *expander, priv->use_underline = use_underline; if (GTK_IS_LABEL (priv->label_widget)) - gtk_label_set_use_underline (GTK_LABEL (priv->label_widget), use_underline); + gtk_label_set_use_underline (GTK_LABEL (priv->label_widget), use_underline); g_object_notify (G_OBJECT (expander), "use-underline"); } @@ -1818,14 +1849,14 @@ gtk_expander_set_use_underline (GtkExpander *expander, * gtk_expander_get_use_underline: * @expander: a #GtkExpander * - * Returns whether an embedded underline in the expander label indicates a - * mnemonic. See gtk_expander_set_use_underline(). + * Returns whether an embedded underline in the expander label + * indicates a mnemonic. See gtk_expander_set_use_underline(). * - * Return value: %TRUE if an embedded underline in the expander label - * indicates the mnemonic accelerator keys. + * Return value: %TRUE if an embedded underline in the expander + * label indicates the mnemonic accelerator keys * * Since: 2.4 - **/ + */ gboolean gtk_expander_get_use_underline (GtkExpander *expander) { @@ -1844,10 +1875,10 @@ gtk_expander_get_use_underline (GtkExpander *expander) * language. See gtk_label_set_markup(). * * Since: 2.4 - **/ + */ void gtk_expander_set_use_markup (GtkExpander *expander, - gboolean use_markup) + gboolean use_markup) { GtkExpanderPrivate *priv; @@ -1862,7 +1893,7 @@ gtk_expander_set_use_markup (GtkExpander *expander, priv->use_markup = use_markup; if (GTK_IS_LABEL (priv->label_widget)) - gtk_label_set_use_markup (GTK_LABEL (priv->label_widget), use_markup); + gtk_label_set_use_markup (GTK_LABEL (priv->label_widget), use_markup); g_object_notify (G_OBJECT (expander), "use-markup"); } @@ -1874,12 +1905,12 @@ gtk_expander_set_use_markup (GtkExpander *expander, * * Returns whether the label's text is interpreted as marked up with * the Pango text markup - * language. See gtk_expander_set_use_markup (). + * language. See gtk_expander_set_use_markup(). * * Return value: %TRUE if the label's text will be parsed for markup * * Since: 2.4 - **/ + */ gboolean gtk_expander_get_use_markup (GtkExpander *expander) { @@ -1897,10 +1928,10 @@ gtk_expander_get_use_markup (GtkExpander *expander) * that will appear embedded alongside the expander arrow. * * Since: 2.4 - **/ + */ void gtk_expander_set_label_widget (GtkExpander *expander, - GtkWidget *label_widget) + GtkWidget *label_widget) { GtkExpanderPrivate *priv; GtkWidget *widget; @@ -1930,7 +1961,7 @@ gtk_expander_set_label_widget (GtkExpander *expander, gtk_widget_set_parent (label_widget, widget); if (priv->prelight) - gtk_widget_set_state_flags (label_widget, + gtk_widget_set_state_flags (label_widget, GTK_STATE_FLAG_PRELIGHT, FALSE); } @@ -1952,10 +1983,10 @@ gtk_expander_set_label_widget (GtkExpander *expander, * gtk_expander_set_label_widget(). * * Return value: (transfer none): the label widget, - * or %NULL if there is none. + * or %NULL if there is none * * Since: 2.4 - **/ + */ GtkWidget * gtk_expander_get_label_widget (GtkExpander *expander) { @@ -1967,11 +1998,11 @@ gtk_expander_get_label_widget (GtkExpander *expander) /** * gtk_expander_set_label_fill: * @expander: a #GtkExpander - * @label_fill: %TRUE if the label should should fill all available horizontal - * space + * @label_fill: %TRUE if the label should should fill + * all available horizontal space * - * Sets whether the label widget should fill all available horizontal space - * allocated to @expander. + * Sets whether the label widget should fill all available + * horizontal space allocated to @expander. * * Since: 2.22 */ @@ -2002,11 +2033,11 @@ gtk_expander_set_label_fill (GtkExpander *expander, * gtk_expander_get_label_fill: * @expander: a #GtkExpander * - * Returns whether the label widget will fill all available horizontal - * space allocated to @expander. + * Returns whether the label widget will fill all available + * horizontal space allocated to @expander. * - * Return value: %TRUE if the label widget will fill all available horizontal - * space + * Return value: %TRUE if the label widget will fill all + * available horizontal space * * Since: 2.22 */ @@ -2017,4 +2048,3 @@ gtk_expander_get_label_fill (GtkExpander *expander) return expander->priv->label_fill; } - diff --git a/gtk/gtkfilechooser.c b/gtk/gtkfilechooser.c index a0eecbdbe4..da9d7c5e94 100644 --- a/gtk/gtkfilechooser.c +++ b/gtk/gtkfilechooser.c @@ -915,7 +915,7 @@ gtk_file_chooser_set_local_only (GtkFileChooser *chooser, /** * gtk_file_chooser_get_local_only: - * @chooser: a #GtkFileChoosre + * @chooser: a #GtkFileChooser * * Gets whether only local files can be selected in the * file selector. See gtk_file_chooser_set_local_only() @@ -1033,7 +1033,7 @@ gtk_file_chooser_get_create_folders (GtkFileChooser *chooser) * If the file chooser is in folder mode, this function returns the selected * folder. * - * Return value: The currently selected filename, or %NULL + * Return value: (type filename): The currently selected filename, or %NULL * if no file is selected, or the selected file can't * be represented with a local filename. Free with g_free(). * @@ -1061,7 +1061,7 @@ gtk_file_chooser_get_filename (GtkFileChooser *chooser) /** * gtk_file_chooser_set_filename: * @chooser: a #GtkFileChooser - * @filename: the filename to set as current + * @filename: (type filename): the filename to set as current * * Sets @filename as the current filename for the file chooser, by changing * to the file's parent folder and actually selecting the file in list. If @@ -1115,7 +1115,7 @@ gtk_file_chooser_set_filename (GtkFileChooser *chooser, /** * gtk_file_chooser_select_filename: * @chooser: a #GtkFileChooser - * @filename: the filename to select + * @filename: (type filename): the filename to select * * Selects a filename. If the file name isn't in the current * folder of @chooser, then the current folder of @chooser will @@ -1146,7 +1146,7 @@ gtk_file_chooser_select_filename (GtkFileChooser *chooser, /** * gtk_file_chooser_unselect_filename: * @chooser: a #GtkFileChooser - * @filename: the filename to unselect + * @filename: (type filename): the filename to unselect * * Unselects a currently selected filename. If the filename * is not in the current directory, does not exist, or @@ -1201,9 +1201,10 @@ files_to_strings (GSList *files, * folder cannot be represented as local filenames they will be ignored. (See * gtk_file_chooser_get_uris()) * - * Return value: (element-type utf8) (transfer full): a #GSList containing the filenames of all selected - * files and subfolders in the current folder. Free the returned list - * with g_slist_free(), and the filenames with g_free(). + * Return value: (element-type filename) (transfer full): a #GSList + * containing the filenames of all selected files and subfolders in + * the current folder. Free the returned list with g_slist_free(), + * and the filenames with g_free(). * * Since: 2.4 **/ @@ -1226,7 +1227,7 @@ gtk_file_chooser_get_filenames (GtkFileChooser *chooser) /** * gtk_file_chooser_set_current_folder: * @chooser: a #GtkFileChooser - * @filename: the full path of the new current folder + * @filename: (type filename): the full path of the new current folder * * Sets the current folder for @chooser from a local filename. * The user will be shown the full contents of the current folder, @@ -1264,15 +1265,16 @@ gtk_file_chooser_set_current_folder (GtkFileChooser *chooser, * Note that this is the folder that the file chooser is currently displaying * (e.g. "/home/username/Documents"), which is not the same * as the currently-selected folder if the chooser is in - * %GTK_FILE_CHOOSER_SELECT_FOLDER mode + * %GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER mode * (e.g. "/home/username/Documents/selected-folder/". To get the * currently-selected folder in that mode, use gtk_file_chooser_get_uri() as the * usual way to get the selection. * - * Return value: the full path of the current folder, or %NULL if the current - * path cannot be represented as a local filename. Free with g_free(). This - * function will also return %NULL if the file chooser was unable to load the - * last folder that was requested from it; for example, as would be for calling + * Return value: (type filename): the full path of the current folder, + * or %NULL if the current path cannot be represented as a local + * filename. Free with g_free(). This function will also return + * %NULL if the file chooser was unable to load the last folder that + * was requested from it; for example, as would be for calling * gtk_file_chooser_set_current_folder() on a nonexistent folder. * * Since: 2.4 @@ -1298,7 +1300,7 @@ gtk_file_chooser_get_current_folder (GtkFileChooser *chooser) /** * gtk_file_chooser_set_current_name: * @chooser: a #GtkFileChooser - * @name: the filename to use, as a UTF-8 string + * @name: (type filename): the filename to use, as a UTF-8 string * * Sets the current name in the file selector, as if entered * by the user. Note that the name passed in here is a UTF-8 @@ -1568,7 +1570,7 @@ gtk_file_chooser_set_current_folder_uri (GtkFileChooser *chooser, * Note that this is the folder that the file chooser is currently displaying * (e.g. "file:///home/username/Documents"), which is not the same * as the currently-selected folder if the chooser is in - * %GTK_FILE_CHOOSER_SELECT_FOLDER mode + * %GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER mode * (e.g. "file:///home/username/Documents/selected-folder/". To get the * currently-selected folder in that mode, use gtk_file_chooser_get_uri() as the * usual way to get the selection. @@ -2056,8 +2058,8 @@ _gtk_file_chooser_remove_shortcut_folder (GtkFileChooser *chooser, * Gets the filename that should be previewed in a custom preview * widget. See gtk_file_chooser_set_preview_widget(). * - * Return value: the filename to preview, or %NULL if no file - * is selected, or if the selected file cannot be represented + * Return value: (type filename): the filename to preview, or %NULL if + * no file is selected, or if the selected file cannot be represented * as a local filename. Free with g_free() * * Since: 2.4 @@ -2276,7 +2278,7 @@ gtk_file_chooser_get_filter (GtkFileChooser *chooser) /** * gtk_file_chooser_add_shortcut_folder: * @chooser: a #GtkFileChooser - * @folder: filename of the folder to add + * @folder: (type filename): filename of the folder to add * @error: (allow-none): location to store error, or %NULL * * Adds a folder to be displayed with the shortcut folders in a file chooser. @@ -2310,7 +2312,7 @@ gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser, /** * gtk_file_chooser_remove_shortcut_folder: * @chooser: a #GtkFileChooser - * @folder: filename of the folder to remove + * @folder: (type filename): filename of the folder to remove * @error: (allow-none): location to store error, or %NULL * * Removes a folder from a file chooser's list of shortcut folders. @@ -2347,8 +2349,9 @@ gtk_file_chooser_remove_shortcut_folder (GtkFileChooser *chooser, * Queries the list of shortcut folders in the file chooser, as set by * gtk_file_chooser_add_shortcut_folder(). * - * Return value: (element-type utf8) (transfer full): A list of folder filenames, or %NULL if there are no shortcut - * folders. Free the returned list with g_slist_free(), and the filenames with + * Return value: (element-type filename) (transfer full): A list of + * folder filenames, or %NULL if there are no shortcut folders. Free + * the returned list with g_slist_free(), and the filenames with * g_free(). * * Since: 2.4 @@ -2444,9 +2447,9 @@ gtk_file_chooser_remove_shortcut_folder_uri (GtkFileChooser *chooser, * Queries the list of shortcut folders in the file chooser, as set by * gtk_file_chooser_add_shortcut_folder_uri(). * - * Return value: (element-type utf8) (transfer full): A list of folder URIs, or %NULL if there are no shortcut - * folders. Free the returned list with g_slist_free(), and the URIs with - * g_free(). + * Return value: (element-type utf8) (transfer full): A list of folder + * URIs, or %NULL if there are no shortcut folders. Free the returned + * list with g_slist_free(), and the URIs with g_free(). * * Since: 2.4 **/ diff --git a/gtk/gtkfilechooserbutton.c b/gtk/gtkfilechooserbutton.c index 3db63bf8d9..8463533038 100644 --- a/gtk/gtkfilechooserbutton.c +++ b/gtk/gtkfilechooserbutton.c @@ -52,13 +52,14 @@ #include "gtkfilechooserbutton.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" /* **************** * * Private Macros * * **************** */ -#define DEFAULT_TITLE N_("Select A File") +#define DEFAULT_TITLE N_("Select a File") #define DESKTOP_DISPLAY_NAME N_("Desktop") #define FALLBACK_DISPLAY_NAME N_("(None)") #define FALLBACK_ICON_NAME "stock_unknown" @@ -222,8 +223,7 @@ static void gtk_file_chooser_button_hide (GtkWidget *wi static void gtk_file_chooser_button_map (GtkWidget *widget); static gboolean gtk_file_chooser_button_mnemonic_activate (GtkWidget *widget, gboolean group_cycling); -static void gtk_file_chooser_button_style_set (GtkWidget *widget, - GtkStyle *old_style); +static void gtk_file_chooser_button_style_updated (GtkWidget *widget); static void gtk_file_chooser_button_screen_changed (GtkWidget *widget, GdkScreen *old_screen); @@ -330,7 +330,7 @@ gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class) widget_class->show = gtk_file_chooser_button_show; widget_class->hide = gtk_file_chooser_button_hide; widget_class->map = gtk_file_chooser_button_map; - widget_class->style_set = gtk_file_chooser_button_style_set; + widget_class->style_updated = gtk_file_chooser_button_style_updated; widget_class->screen_changed = gtk_file_chooser_button_screen_changed; widget_class->mnemonic_activate = gtk_file_chooser_button_mnemonic_activate; @@ -1041,7 +1041,7 @@ gtk_file_chooser_button_drag_data_received (GtkWidget *widget, data, type, drag_time); - if (widget == NULL || context == NULL || data == NULL || data->length < 0) + if (widget == NULL || context == NULL || data == NULL || gtk_selection_data_get_length (data) < 0) return; switch (type) @@ -1347,11 +1347,9 @@ change_icon_theme (GtkFileChooserButton *button) } static void -gtk_file_chooser_button_style_set (GtkWidget *widget, - GtkStyle *old_style) +gtk_file_chooser_button_style_updated (GtkWidget *widget) { - GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_set (widget, - old_style); + GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->style_updated (widget); if (gtk_widget_has_screen (widget)) change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget)); diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 1ae575880e..2a5adf9b92 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -23,7 +23,6 @@ #include "gtkfilechooserdefault.h" -#include "gdk/gdkkeysyms.h" #include "gtkalignment.h" #include "gtkbindings.h" #include "gtkcelllayout.h" @@ -280,8 +279,7 @@ static void gtk_file_chooser_default_map (GtkWidget * static void gtk_file_chooser_default_unmap (GtkWidget *widget); static void gtk_file_chooser_default_hierarchy_changed (GtkWidget *widget, GtkWidget *previous_toplevel); -static void gtk_file_chooser_default_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_file_chooser_default_style_updated (GtkWidget *widget); static void gtk_file_chooser_default_screen_changed (GtkWidget *widget, GdkScreen *previous_screen); static void gtk_file_chooser_default_size_allocate (GtkWidget *widget, @@ -487,7 +485,7 @@ _gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class) widget_class->map = gtk_file_chooser_default_map; widget_class->unmap = gtk_file_chooser_default_unmap; widget_class->hierarchy_changed = gtk_file_chooser_default_hierarchy_changed; - widget_class->style_set = gtk_file_chooser_default_style_set; + widget_class->style_updated = gtk_file_chooser_default_style_updated; widget_class->screen_changed = gtk_file_chooser_default_screen_changed; widget_class->size_allocate = gtk_file_chooser_default_size_allocate; @@ -1124,7 +1122,7 @@ set_preview_widget (GtkFileChooserDefault *impl, static GdkPixbuf * render_search_icon (GtkFileChooserDefault *impl) { - return gtk_widget_render_icon (GTK_WIDGET (impl), GTK_STOCK_FIND, GTK_ICON_SIZE_MENU, NULL); + return gtk_widget_render_icon_pixbuf (GTK_WIDGET (impl), GTK_STOCK_FIND, GTK_ICON_SIZE_MENU); } static GdkPixbuf * @@ -1144,7 +1142,7 @@ render_recent_icon (GtkFileChooserDefault *impl) /* fallback */ if (!retval) - retval = gtk_widget_render_icon (GTK_WIDGET (impl), GTK_STOCK_FILE, GTK_ICON_SIZE_MENU, NULL); + retval = gtk_widget_render_icon_pixbuf (GTK_WIDGET (impl), GTK_STOCK_FILE, GTK_ICON_SIZE_MENU); return retval; } @@ -1180,11 +1178,14 @@ shortcuts_reload_icons_get_info_cb (GCancellable *cancellable, pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->impl), data->impl->icon_size); path = gtk_tree_row_reference_get_path (data->row_ref); - gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->shortcuts_model), &iter, path); - gtk_list_store_set (data->impl->shortcuts_model, &iter, - SHORTCUTS_COL_PIXBUF, pixbuf, - -1); - gtk_tree_path_free (path); + if (path) + { + gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->shortcuts_model), &iter, path); + gtk_list_store_set (data->impl->shortcuts_model, &iter, + SHORTCUTS_COL_PIXBUF, pixbuf, + -1); + gtk_tree_path_free (path); + } if (pixbuf) g_object_unref (pixbuf); @@ -2998,14 +2999,18 @@ shortcuts_compute_drop_position (GtkFileChooserDefault *impl, GdkRectangle cell; int row; int bookmarks_index; + int header_height = 0; tree_view = GTK_TREE_VIEW (impl->browse_shortcuts_tree_view); + if (gtk_tree_view_get_headers_visible (tree_view)) + header_height = _gtk_tree_view_get_header_height (tree_view); + bookmarks_index = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS); if (!gtk_tree_view_get_path_at_pos (tree_view, x, - y - TREE_VIEW_HEADER_HEIGHT (tree_view), + y - header_height, path, &column, NULL, @@ -3071,11 +3076,11 @@ shortcuts_drag_motion_cb (GtkWidget *widget, } #endif - if (context->suggested_action == GDK_ACTION_COPY || - (context->actions & GDK_ACTION_COPY) != 0) + if (gdk_drag_context_get_suggested_action (context) == GDK_ACTION_COPY || + (gdk_drag_context_get_actions (context) & GDK_ACTION_COPY) != 0) action = GDK_ACTION_COPY; - else if (context->suggested_action == GDK_ACTION_MOVE || - (context->actions & GDK_ACTION_MOVE) != 0) + else if (gdk_drag_context_get_suggested_action (context) == GDK_ACTION_MOVE || + (gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0) action = GDK_ACTION_MOVE; else { @@ -3224,6 +3229,7 @@ shortcuts_drag_data_received_cb (GtkWidget *widget, GtkFileChooserDefault *impl; GtkTreePath *tree_path; GtkTreeViewDropPosition tree_pos; + GdkAtom target; int position; int bookmarks_index; @@ -3243,9 +3249,11 @@ shortcuts_drag_data_received_cb (GtkWidget *widget, g_assert (position >= bookmarks_index); position -= bookmarks_index; - if (gtk_targets_include_uri (&selection_data->target, 1)) + target = gtk_selection_data_get_target (selection_data); + + if (gtk_targets_include_uri (&target, 1)) shortcuts_drop_uris (impl, selection_data, position); - else if (selection_data->target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) + else if (target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) shortcuts_reorder (impl, position); g_signal_stop_emission_by_name (widget, "drag-data-received"); @@ -5581,21 +5589,20 @@ gtk_file_chooser_default_hierarchy_changed (GtkWidget *widget, GtkWidget *toplevel; impl = GTK_FILE_CHOOSER_DEFAULT (widget); + toplevel = gtk_widget_get_toplevel (widget); - if (previous_toplevel) + if (previous_toplevel && + impl->toplevel_set_focus_id != 0) { - g_assert (impl->toplevel_set_focus_id != 0); g_signal_handler_disconnect (previous_toplevel, impl->toplevel_set_focus_id); impl->toplevel_set_focus_id = 0; impl->toplevel_last_focus_widget = NULL; } - else - g_assert (impl->toplevel_set_focus_id == 0); - toplevel = gtk_widget_get_toplevel (widget); - if (GTK_IS_WINDOW (toplevel)) + if (gtk_widget_is_toplevel (toplevel)) { + g_assert (impl->toplevel_set_focus_id == 0); impl->toplevel_set_focus_id = g_signal_connect (toplevel, "set-focus", G_CALLBACK (toplevel_set_focus_cb), impl); impl->toplevel_last_focus_widget = gtk_window_get_focus (GTK_WINDOW (toplevel)); @@ -5682,8 +5689,7 @@ check_icon_theme (GtkFileChooserDefault *impl) } static void -gtk_file_chooser_default_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_file_chooser_default_style_updated (GtkWidget *widget) { GtkFileChooserDefault *impl; @@ -5691,9 +5697,9 @@ gtk_file_chooser_default_style_set (GtkWidget *widget, impl = GTK_FILE_CHOOSER_DEFAULT (widget); - profile_msg (" parent class style_set start", NULL); - GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->style_set (widget, previous_style); - profile_msg (" parent class style_set end", NULL); + profile_msg (" parent class style_udpated start", NULL); + GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->style_updated (widget); + profile_msg (" parent class style_updated end", NULL); if (gtk_widget_has_screen (GTK_WIDGET (impl))) change_icon_theme (impl); @@ -6046,7 +6052,7 @@ set_busy_cursor (GtkFileChooserDefault *impl, gdk_display_flush (display); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } /* Creates a sort model to wrap the file system model and sets it on the tree view */ @@ -7833,14 +7839,15 @@ find_good_size_from_style (GtkWidget *widget, gint *height) { GtkFileChooserDefault *impl; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; int font_size; GdkScreen *screen; double resolution; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - g_assert (style != NULL); impl = GTK_FILE_CHOOSER_DEFAULT (widget); screen = gtk_widget_get_screen (widget); @@ -7853,7 +7860,7 @@ find_good_size_from_style (GtkWidget *widget, else resolution = 96.0; /* wheeee */ - font_size = pango_font_description_get_size (style->font_desc); + font_size = pango_font_description_get_size (gtk_style_context_get_font (context, state)); font_size = PANGO_PIXELS (font_size) * resolution / 72.0; *width = font_size * NUM_CHARS; diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c index 009d842f37..6df60c7d32 100644 --- a/gtk/gtkfilechooserentry.c +++ b/gtk/gtkfilechooserentry.c @@ -34,8 +34,6 @@ #include "gtkwindow.h" #include "gtkintl.h" -#include "gdkkeysyms.h" - typedef struct _GtkFileChooserEntryClass GtkFileChooserEntryClass; #define GTK_FILE_CHOOSER_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_FILE_CHOOSER_ENTRY, GtkFileChooserEntryClass)) @@ -889,16 +887,16 @@ completion_feedback_window_draw_cb (GtkWidget *widget, /* Stolen from gtk_tooltip_paint_window() */ GtkFileChooserEntry *chooser_entry = GTK_FILE_CHOOSER_ENTRY (data); + GtkStyleContext *context; - gtk_paint_flat_box (gtk_widget_get_style (chooser_entry->completion_feedback_window), - cr, - GTK_STATE_NORMAL, - GTK_SHADOW_OUT, - chooser_entry->completion_feedback_window, - "tooltip", - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + context = gtk_widget_get_style_context (chooser_entry->completion_feedback_window); + + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + gtk_render_frame (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); return FALSE; } @@ -914,7 +912,7 @@ set_invisible_mouse_cursor (GdkWindow *window) gdk_window_set_cursor (window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -933,8 +931,9 @@ create_completion_feedback_window (GtkFileChooserEntry *chooser_entry) { /* Stolen from gtk_tooltip_init() */ - GtkStyle *style; + GtkStyleContext *context; GtkWidget *alignment; + GtkBorder padding, border; chooser_entry->completion_feedback_window = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_type_hint (GTK_WINDOW (chooser_entry->completion_feedback_window), @@ -944,10 +943,17 @@ create_completion_feedback_window (GtkFileChooserEntry *chooser_entry) gtk_widget_set_name (chooser_entry->completion_feedback_window, "gtk-tooltip"); alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); - style = gtk_widget_get_style (chooser_entry->completion_feedback_window); + context = gtk_widget_get_style_context (chooser_entry->completion_feedback_window); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOOLTIP); + + gtk_style_context_get_padding (context, 0, &padding); + gtk_style_context_get_border (context, 0, &border); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), - style->ythickness, style->ythickness, - style->xthickness, style->xthickness); + border.top + padding.top, + border.bottom + padding.bottom, + border.left + padding.left, + border.right + padding.right); gtk_container_add (GTK_CONTAINER (chooser_entry->completion_feedback_window), alignment); gtk_widget_show (alignment); diff --git a/gtk/gtkfilefilter.c b/gtk/gtkfilefilter.c index 04f3c55cf7..cdfb6cbedf 100644 --- a/gtk/gtkfilefilter.c +++ b/gtk/gtkfilefilter.c @@ -18,6 +18,30 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:gtkfilefilter + * @Short_description: A filter for selecting a file subset + * @Title: GtkFileFilter + * + * A GtkFileFilter can be used to restrict the files being shown in a + * #GtkFileChooser. Files can be filtered based on their name (with + * gtk_file_filter_add_pattern()), on their mime type (with + * gtk_file_filter_add_mime_type()), or by a custom filter function + * (with gtk_file_filter_add_custom()). + * + * Filtering by mime types handles aliasing and subclassing of mime + * types; e.g. a filter for text/plain also matches a file with mime + * type application/rtf, since application/rtf is a subclass of + * text/plain. Note that #GtkFileFilter allows wildcards for the + * subtype of a mime type, so you can e.g. filter for image/*. + * + * Normally, filters are used by adding them to a #GtkFileChooser, + * see gtk_file_chooser_add_filter(), but it is also possible + * to manually use a filter on a file with gtk_file_filter_filter(). + * + * @see_also: #GtkFileChooser + */ + #include "config.h" #include diff --git a/gtk/gtkfilefilter.h b/gtk/gtkfilefilter.h index 7a848e51a5..02e277557d 100644 --- a/gtk/gtkfilefilter.h +++ b/gtk/gtkfilefilter.h @@ -36,6 +36,17 @@ G_BEGIN_DECLS typedef struct _GtkFileFilter GtkFileFilter; typedef struct _GtkFileFilterInfo GtkFileFilterInfo; +/** + * GtkFileFilterFlags: + * @GTK_FILE_FILTER_FILENAME: the filename of the file being tested + * @GTK_FILE_FILTER_URI: the URI for the file being tested + * @GTK_FILE_FILTER_DISPLAY_NAME: the string that will be used to + * display the file in the file chooser + * @GTK_FILE_FILTER_MIME_TYPE: the mime type of the file + * + * These flags indicate what parts of a #GtkFileFilterInfo struct + * are filled or need to be filled. + */ typedef enum { GTK_FILE_FILTER_FILENAME = 1 << 0, GTK_FILE_FILTER_URI = 1 << 1, @@ -43,9 +54,33 @@ typedef enum { GTK_FILE_FILTER_MIME_TYPE = 1 << 3 } GtkFileFilterFlags; +/** + * GtkFileFilterFunc: + * @filter_info: a #GtkFileFilterInfo that is filled according + * to the @needed flags passed to gtk_file_filter_add_custom() + * @data: (closure): user data passed to gtk_file_filter_add_custom() + * + * The type of function that is used with custom filters, see + * gtk_file_filter_add_custom(). + * + * @Returns: %TRUE if the file should be displayed + */ typedef gboolean (*GtkFileFilterFunc) (const GtkFileFilterInfo *filter_info, gpointer data); +/** + * GtkFileFilterInfo: + * @contains: Flags indicating which of the following fields need + * are filled + * @filename: the filename of the file being tested + * @uri: the URI for the file being tested + * @display_name: the string that will be used to display the file + * in the file chooser + * @mime_type: the mime type of the file + * + * A #GtkFileFilterInfo struct is used to pass information about the + * tested file to gtk_file_filter_filter(). + */ struct _GtkFileFilterInfo { GtkFileFilterFlags contains; diff --git a/gtk/gtkfixed.c b/gtk/gtkfixed.c index cf9fb20dfe..e61f03a625 100644 --- a/gtk/gtkfixed.c +++ b/gtk/gtkfixed.c @@ -24,6 +24,55 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkfixed + * @Short_description: A container which allows you to position + * widgets at fixed coordinates + * @Title: GtkFixed + * + * The #GtkFixed widget is a container which can place child widgets + * at fixed positions and with fixed sizes, given in pixels. #GtkFixed + * performs no automatic layout management. + * + * For most applications, you should not use this container! It keeps + * you from having to learn about the other GTK+ containers, but it + * results in broken applications. With #GtkFixed, the following + * things will result in truncated text, overlapping widgets, and + * other display bugs: + * + * + * Themes, which may change widget sizes. + * + * + * Fonts other than the one you used to write the app will of course + * change the size of widgets containing text; keep in mind that + * users may use a larger font because of difficulty reading the + * default, or they may be using Windows or the framebuffer port of + * GTK+, where different fonts are available. + * + * + * Translation of text into other languages changes its size. Also, + * display of non-English text will use a different font in many + * cases. + * + * + * + * In addition, the fixed widget can't properly be mirrored in + * right-to-left languages such as Hebrew and Arabic. i.e. normally + * GTK+ will flip the interface to put labels to the right of the + * thing they label, but it can't do that with #GtkFixed. So your + * application will not be usable in right-to-left languages. + * + * Finally, fixed positioning makes it kind of annoying to add/remove + * GUI elements, since you have to reposition all the other + * elements. This is a long-term maintenance problem for your + * application. + * + * If you know none of these things are an issue for your application, + * and prefer the simplicity of #GtkFixed, by all means use the + * widget. But you should be aware of the tradeoffs. + */ + #include "config.h" #include "gtkfixed.h" @@ -132,6 +181,13 @@ gtk_fixed_init (GtkFixed *fixed) fixed->priv->children = NULL; } +/** + * gtk_fixed_new: + * + * Creates a new #GtkFixed. + * + * Returns: a new #GtkFixed. + */ GtkWidget* gtk_fixed_new (void) { @@ -158,6 +214,15 @@ get_child (GtkFixed *fixed, return NULL; } +/** + * gtk_fixed_put: + * @fixed: a #GtkFixed. + * @widget: the widget to add. + * @x: the horizontal position to place the widget at. + * @y: the vertical position to place the widget at. + * + * Adds a widget to a #GtkFixed container at the given position. + */ void gtk_fixed_put (GtkFixed *fixed, GtkWidget *widget, @@ -210,6 +275,15 @@ gtk_fixed_move_internal (GtkFixed *fixed, gtk_widget_queue_resize (GTK_WIDGET (fixed)); } +/** + * gtk_fixed_move: + * @fixed: a #GtkFixed. + * @widget: the child widget. + * @x: the horizontal position to move the widget to. + * @y: the vertical position to move the widget to. + * + * Moves a child of a #GtkFixed container to the given position. + */ void gtk_fixed_move (GtkFixed *fixed, GtkWidget *widget, @@ -309,8 +383,8 @@ gtk_fixed_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + window); } } diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c index e73b4ba426..5353fb9dea 100644 --- a/gtk/gtkfontsel.c +++ b/gtk/gtkfontsel.c @@ -30,17 +30,14 @@ */ #include "config.h" + #include #include #include #include -#include "gdk/gdk.h" -#include "gdk/gdkkeysyms.h" - #include "gtkfontsel.h" - #include "gtkbutton.h" #include "gtkcellrenderertext.h" #include "gtkentry.h" @@ -154,8 +151,7 @@ static void gtk_font_selection_get_property (GObject *object, static void gtk_font_selection_finalize (GObject *object); static void gtk_font_selection_screen_changed (GtkWidget *widget, GdkScreen *previous_screen); -static void gtk_font_selection_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_font_selection_style_updated (GtkWidget *widget); /* These are the callbacks & related functions. */ static void gtk_font_selection_select_font (GtkTreeSelection *selection, @@ -215,7 +211,7 @@ gtk_font_selection_class_init (GtkFontSelectionClass *klass) gobject_class->get_property = gtk_font_selection_get_property; widget_class->screen_changed = gtk_font_selection_screen_changed; - widget_class->style_set = gtk_font_selection_style_set; + widget_class->style_updated = gtk_font_selection_style_updated; g_object_class_install_property (gobject_class, PROP_FONT_NAME, @@ -658,8 +654,7 @@ gtk_font_selection_screen_changed (GtkWidget *widget, } static void -gtk_font_selection_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_font_selection_style_updated (GtkWidget *widget) { /* Maybe fonts where installed or removed... */ gtk_font_selection_reload_fonts (GTK_FONT_SELECTION (widget)); @@ -1165,7 +1160,7 @@ static void gtk_font_selection_update_preview (GtkFontSelection *fontsel) { GtkFontSelectionPrivate *priv = fontsel->priv; - GtkRcStyle *rc_style; + GtkStyleContext *context; gint new_height; GtkRequisition old_requisition, new_requisition; GtkWidget *preview_entry = priv->preview_entry; @@ -1173,11 +1168,9 @@ gtk_font_selection_update_preview (GtkFontSelection *fontsel) gtk_widget_get_preferred_size (preview_entry, &old_requisition, NULL); - rc_style = gtk_rc_style_new (); - rc_style->font_desc = gtk_font_selection_get_font_description (fontsel); - - gtk_widget_modify_style (preview_entry, rc_style); - g_object_unref (rc_style); + context = gtk_widget_get_style_context (preview_entry); + gtk_widget_override_font (preview_entry, + gtk_font_selection_get_font_description (fontsel)); gtk_widget_get_preferred_size (preview_entry, &new_requisition, NULL); diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c index 3390e47e8b..5e6e2fc787 100644 --- a/gtk/gtkframe.c +++ b/gtk/gtkframe.c @@ -29,6 +29,7 @@ #include "gtkframe.h" #include "gtklabel.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" #include "gtkbuildable.h" @@ -77,6 +78,8 @@ static void gtk_frame_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); +static GtkWidgetPath * gtk_frame_get_path_for_child (GtkContainer *container, + GtkWidget *child); static void gtk_frame_compute_child_allocation (GtkFrame *frame, GtkAllocation *child_allocation); @@ -176,6 +179,7 @@ gtk_frame_class_init (GtkFrameClass *class) container_class->remove = gtk_frame_remove; container_class->forall = gtk_frame_forall; + container_class->get_path_for_child = gtk_frame_get_path_for_child; class->compute_child_allocation = gtk_frame_real_compute_child_allocation; @@ -333,6 +337,21 @@ gtk_frame_forall (GtkContainer *container, (* callback) (priv->label_widget, callback_data); } +static GtkWidgetPath * +gtk_frame_get_path_for_child (GtkContainer *container, + GtkWidget *child) +{ + GtkFramePrivate *priv = GTK_FRAME (container)->priv; + GtkWidgetPath *path; + + path = GTK_CONTAINER_CLASS (gtk_frame_parent_class)->get_path_for_child (container, child); + + if (child == priv->label_widget) + gtk_widget_path_iter_add_class (path, -1, GTK_STYLE_CLASS_FRAME); + + return path; +} + /** * gtk_frame_set_label: * @frame: a #GtkFrame @@ -582,59 +601,62 @@ gtk_frame_draw (GtkWidget *widget, { GtkFrame *frame; GtkFramePrivate *priv; - GtkStateType state; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; gint x, y, width, height; GtkAllocation allocation; + GtkBorder padding; frame = GTK_FRAME (widget); priv = frame->priv; - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); gtk_widget_get_allocation (widget, &allocation); - x = priv->child_allocation.x - allocation.x - style->xthickness; - y = priv->child_allocation.y - allocation.y - style->ythickness; - width = priv->child_allocation.width + 2 * style->xthickness; - height = priv->child_allocation.height + 2 * style->ythickness; + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); - if (priv->label_widget) + gtk_style_context_get_padding (context, state, &padding); + + x = priv->child_allocation.x - allocation.x - padding.left; + y = priv->child_allocation.y - allocation.y - padding.top; + width = priv->child_allocation.width + padding.left + padding.right; + height = priv->child_allocation.height + padding.top + padding.bottom; + + if (priv->shadow_type != GTK_SHADOW_NONE) { - gfloat xalign; - gint height_extra; - gint x2; + if (priv->label_widget) + { + gfloat xalign; + gint height_extra; + gint x2; - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) - xalign = priv->label_xalign; + if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) + xalign = priv->label_xalign; + else + xalign = 1 - priv->label_xalign; + + height_extra = MAX (0, priv->label_allocation.height - padding.top) + - priv->label_yalign * priv->label_allocation.height; + y -= height_extra; + height += height_extra; + + x2 = padding.left + (priv->child_allocation.width - priv->label_allocation.width - 2 * LABEL_PAD - 2 * LABEL_SIDE_PAD) * xalign + LABEL_SIDE_PAD; + /* If the label is completely over or under the frame we can omit the gap */ + if (priv->label_yalign == 0.0 || priv->label_yalign == 1.0) + gtk_render_frame (context, cr, x, y, width, height); + else + gtk_render_frame_gap (context, cr, + x, y, width, height, + GTK_POS_TOP, x2, + x2 + priv->label_allocation.width + 2 * LABEL_PAD); + } else - xalign = 1 - priv->label_xalign; - - height_extra = MAX (0, priv->label_allocation.height - style->ythickness) - - priv->label_yalign * priv->label_allocation.height; - y -= height_extra; - height += height_extra; - - x2 = style->xthickness + (priv->child_allocation.width - priv->label_allocation.width - 2 * LABEL_PAD - 2 * LABEL_SIDE_PAD) * xalign + LABEL_SIDE_PAD; - /* If the label is completely over or under the frame we can omit the gap */ - if (priv->label_yalign == 0.0 || priv->label_yalign == 1.0) - gtk_paint_shadow (style, cr, - state, priv->shadow_type, - widget, "frame", - x, y, width, height); - else - gtk_paint_shadow_gap (style, cr, - state, priv->shadow_type, - widget, "frame", - x, y, width, height, - GTK_POS_TOP, - x2, priv->label_allocation.width + 2 * LABEL_PAD); + gtk_render_frame (context, cr, x, y, width, height); } - else - gtk_paint_shadow (style, cr, - state, priv->shadow_type, - widget, "frame", - x, y, width, height); + + gtk_style_context_restore (context); GTK_WIDGET_CLASS (gtk_frame_parent_class)->draw (widget, cr); @@ -671,11 +693,19 @@ gtk_frame_size_allocate (GtkWidget *widget, if (priv->label_widget && gtk_widget_get_visible (priv->label_widget)) { - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint nat_width, width, height; gfloat xalign; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_style_context_get_padding (context, state, &padding); if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) xalign = priv->label_xalign; @@ -695,10 +725,12 @@ gtk_frame_size_allocate (GtkWidget *widget, priv->label_allocation.width = width; - priv->label_allocation.y = priv->child_allocation.y - MAX (height, style->ythickness); + priv->label_allocation.y = priv->child_allocation.y - MAX (height, padding.top); priv->label_allocation.height = height; gtk_widget_size_allocate (priv->label_widget, &priv->label_allocation); + + gtk_style_context_restore (context); } } @@ -719,12 +751,19 @@ gtk_frame_real_compute_child_allocation (GtkFrame *frame, GtkFramePrivate *priv = frame->priv; GtkWidget *widget = GTK_WIDGET (frame); GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint top_margin; guint border_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_style_context_get_padding (context, state, &padding); gtk_widget_get_allocation (widget, &allocation); border_width = gtk_container_get_border_width (GTK_CONTAINER (frame)); @@ -737,26 +776,29 @@ gtk_frame_real_compute_child_allocation (GtkFrame *frame, width = allocation.width; width -= 2 * LABEL_PAD + 2 * LABEL_SIDE_PAD; - width -= (border_width + style->xthickness) * 2; + width -= (border_width * 2) + padding.left + padding.right; width = MIN (width, nat_width); gtk_widget_get_preferred_height_for_width (priv->label_widget, width, &height, NULL); - top_margin = MAX (height, style->ythickness); + top_margin = MAX (height, padding.top); } else - top_margin = style->ythickness; + top_margin = padding.top; - child_allocation->x = border_width + style->xthickness; + child_allocation->x = border_width + padding.left; child_allocation->y = border_width + top_margin; - child_allocation->width = MAX (1, (gint) allocation.width - child_allocation->x * 2); + child_allocation->width = MAX (1, (gint) allocation.width - (border_width * 2) - + padding.left - padding.right); child_allocation->height = MAX (1, ((gint) allocation.height - child_allocation->y - - border_width - (gint) style->ythickness)); + border_width - padding.bottom)); child_allocation->x += allocation.x; child_allocation->y += allocation.y; + + gtk_style_context_restore (context); } static void @@ -767,7 +809,9 @@ gtk_frame_get_preferred_size (GtkWidget *request, { GtkFrame *frame = GTK_FRAME (request); GtkFramePrivate *priv = frame->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkWidget *widget = GTK_WIDGET (request); GtkWidget *child; GtkBin *bin = GTK_BIN (widget); @@ -775,7 +819,12 @@ gtk_frame_get_preferred_size (GtkWidget *request, gint minimum, natural; guint border_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + gtk_style_context_get_padding (context, state, &padding); if (priv->label_widget && gtk_widget_get_visible (priv->label_widget)) { @@ -790,8 +839,8 @@ gtk_frame_get_preferred_size (GtkWidget *request, { gtk_widget_get_preferred_height (priv->label_widget, &child_min, &child_nat); - minimum = MAX (0, child_min - style->ythickness); - natural = MAX (0, child_nat - style->ythickness); + minimum = MAX (0, child_min - padding.top); + natural = MAX (0, child_nat - padding.top); } } else @@ -823,13 +872,13 @@ gtk_frame_get_preferred_size (GtkWidget *request, if (orientation == GTK_ORIENTATION_HORIZONTAL) { - minimum += (border_width + style->xthickness) * 2; - natural += (border_width + style->xthickness) * 2; + minimum += (border_width * 2) + padding.left + padding.right; + natural += (border_width * 2) + padding.left + padding.right; } else { - minimum += (border_width + style->ythickness) * 2; - natural += (border_width + style->ythickness) * 2; + minimum += (border_width * 2) + padding.top + padding.bottom; + natural += (border_width * 2) + padding.top + padding.bottom; } if (minimum_size) @@ -837,6 +886,8 @@ gtk_frame_get_preferred_size (GtkWidget *request, if (natural_size) *natural_size = natural; + + gtk_style_context_restore (context); } static void @@ -867,18 +918,25 @@ gtk_frame_get_preferred_height_for_width (GtkWidget *request, GtkFrame *frame = GTK_FRAME (widget); GtkFramePrivate *priv = frame->priv; GtkBin *bin = GTK_BIN (widget); - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint child_min, child_nat, label_width; gint minimum, natural; guint border_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + gtk_style_context_get_padding (context, state, &padding); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - minimum = (border_width + style->ythickness) * 2; - natural = (border_width + style->ythickness) * 2; + minimum = (border_width * 2) + padding.top + padding.bottom; + natural = (border_width * 2) + padding.top + padding.bottom; - width -= (border_width + style->xthickness) * 2; + width -= (border_width * 2) + padding.left + padding.right; label_width = width - 2 * LABEL_PAD + 2 * LABEL_SIDE_PAD; if (priv->label_widget && gtk_widget_get_visible (priv->label_widget)) @@ -903,6 +961,8 @@ gtk_frame_get_preferred_height_for_width (GtkWidget *request, if (natural_height) *natural_height = natural; + + gtk_style_context_restore (context); } static void diff --git a/gtk/gtkgrid.c b/gtk/gtkgrid.c index 7aaf8ef818..9e1498d3e2 100644 --- a/gtk/gtkgrid.c +++ b/gtk/gtkgrid.c @@ -191,6 +191,7 @@ gtk_grid_set_orientation (GtkGrid *grid, if (priv->orientation != orientation) { priv->orientation = orientation; + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (grid)); g_object_notify (G_OBJECT (grid), "orientation"); } @@ -439,9 +440,11 @@ gtk_grid_forall (GtkContainer *container, GtkGridChild *child; GList *list; - for (list = priv->children; list; list = list->next) + list = priv->children; + while (list) { child = list->data; + list = list->next; (* callback) (child->widget, callback_data); } diff --git a/gtk/gtkhandlebox.c b/gtk/gtkhandlebox.c index 1e02e84f87..a57d81b992 100644 --- a/gtk/gtkhandlebox.c +++ b/gtk/gtkhandlebox.c @@ -26,12 +26,15 @@ */ #include "config.h" + #include + #include "gtkhandlebox.h" #include "gtkinvisible.h" #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkwindow.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -136,8 +139,7 @@ static void gtk_handle_box_map (GtkWidget *widget); static void gtk_handle_box_unmap (GtkWidget *widget); static void gtk_handle_box_realize (GtkWidget *widget); static void gtk_handle_box_unrealize (GtkWidget *widget); -static void gtk_handle_box_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_handle_box_style_updated (GtkWidget *widget); static void gtk_handle_box_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gtk_handle_box_get_preferred_width (GtkWidget *widget, @@ -229,7 +231,7 @@ gtk_handle_box_class_init (GtkHandleBoxClass *class) widget_class->unmap = gtk_handle_box_unmap; widget_class->realize = gtk_handle_box_realize; widget_class->unrealize = gtk_handle_box_unrealize; - widget_class->style_set = gtk_handle_box_style_set; + widget_class->style_updated = gtk_handle_box_style_updated; widget_class->get_preferred_width = gtk_handle_box_get_preferred_width; widget_class->get_preferred_height = gtk_handle_box_get_preferred_height; widget_class->size_allocate = gtk_handle_box_size_allocate; @@ -269,6 +271,7 @@ static void gtk_handle_box_init (GtkHandleBox *handle_box) { GtkHandleBoxPrivate *priv; + GtkStyleContext *context; handle_box->priv = G_TYPE_INSTANCE_GET_PRIVATE (handle_box, GTK_TYPE_HANDLE_BOX, @@ -286,6 +289,9 @@ gtk_handle_box_init (GtkHandleBox *handle_box) priv->in_drag = FALSE; priv->shrink_on_detach = TRUE; priv->snap_edge = -1; + + context = gtk_widget_get_style_context (GTK_WIDGET (handle_box)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_DOCK); } static void @@ -397,6 +403,8 @@ gtk_handle_box_unmap (GtkWidget *widget) gdk_window_hide (priv->float_window); priv->float_window_mapped = FALSE; } + + GTK_WIDGET_CLASS (gtk_handle_box_parent_class)->unmap (widget); } static void @@ -406,8 +414,8 @@ gtk_handle_box_realize (GtkWidget *widget) GtkHandleBoxPrivate *priv = hb->priv; GtkAllocation allocation; GtkRequisition requisition; - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; GtkWidget *child; GdkWindow *window; GdkWindowAttr attributes; @@ -477,12 +485,12 @@ gtk_handle_box_realize (GtkWidget *widget) gdk_window_set_decorations (priv->float_window, 0); gdk_window_set_type_hint (priv->float_window, GDK_WINDOW_TYPE_HINT_TOOLBAR); - gtk_widget_style_attach (widget); - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); - gtk_style_set_background (style, window, state); - gtk_style_set_background (style, priv->bin_window, state); - gtk_style_set_background (style, priv->float_window, state); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_set_background (context, window); + gtk_style_context_set_background (context, priv->bin_window); + gtk_style_context_set_background (context, priv->float_window); } static void @@ -502,8 +510,7 @@ gtk_handle_box_unrealize (GtkWidget *widget) } static void -gtk_handle_box_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_handle_box_style_updated (GtkWidget *widget) { GtkHandleBox *hb = GTK_HANDLE_BOX (widget); GtkHandleBoxPrivate *priv = hb->priv; @@ -511,15 +518,20 @@ gtk_handle_box_style_set (GtkWidget *widget, if (gtk_widget_get_realized (widget) && gtk_widget_get_has_window (widget)) { - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - gtk_style_set_background (style, gtk_widget_get_window (widget), state); - gtk_style_set_background (style, priv->bin_window, state); - gtk_style_set_background (style, priv->float_window, state); + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_style_context_set_background (context, gtk_widget_get_window (widget)); + gtk_style_context_set_background (context, priv->bin_window); + gtk_style_context_set_background (context, priv->float_window); + + gtk_style_context_restore (context); } } @@ -602,11 +614,19 @@ gtk_handle_box_size_request (GtkWidget *widget, } else { + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + if (handle_position == GTK_POS_LEFT || handle_position == GTK_POS_RIGHT) - requisition->height += gtk_widget_get_style (widget)->ythickness; + requisition->height += padding.top; else - requisition->width += gtk_widget_get_style (widget)->xthickness; + requisition->width += padding.left; } } else @@ -758,8 +778,8 @@ gtk_handle_box_draw_ghost (GtkHandleBox *hb, cairo_t *cr) { GtkWidget *widget = GTK_WIDGET (hb); - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; GdkWindow *window; guint x; guint y; @@ -789,36 +809,31 @@ gtk_handle_box_draw_ghost (GtkHandleBox *hb, height = DRAG_HANDLE_SIZE; } - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); - state = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); - gtk_paint_shadow (style, - cr, - state, - GTK_SHADOW_ETCHED_IN, - widget, "handle", - x, - y, - width, - height); - if (handle_position == GTK_POS_LEFT || - handle_position == GTK_POS_RIGHT) - gtk_paint_hline (style, - cr, - state, - widget, "handlebox", - handle_position == GTK_POS_LEFT ? DRAG_HANDLE_SIZE : 0, - handle_position == GTK_POS_LEFT ? allocation_width : allocation_width - DRAG_HANDLE_SIZE, - allocation_height / 2); - else - gtk_paint_vline (style, - cr, - state, - widget, "handlebox", - handle_position == GTK_POS_TOP ? DRAG_HANDLE_SIZE : 0, - handle_position == GTK_POS_TOP ? allocation_height : allocation_height - DRAG_HANDLE_SIZE, - allocation_width / 2); + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_background (context, cr, x, y, width, height); + gtk_render_frame (context, cr, x, y, width, height); + + if (handle_position == GTK_POS_LEFT || + handle_position == GTK_POS_RIGHT) + gtk_render_line (context, cr, + handle_position == GTK_POS_LEFT ? DRAG_HANDLE_SIZE : 0, + allocation_height / 2, + handle_position == GTK_POS_LEFT ? allocation_width : allocation_width - DRAG_HANDLE_SIZE, + allocation_height / 2); + else + gtk_render_line (context, cr, + allocation_width / 2, + handle_position == GTK_POS_TOP ? DRAG_HANDLE_SIZE : 0, + allocation_width / 2, + handle_position == GTK_POS_TOP ? allocation_height : allocation_height - DRAG_HANDLE_SIZE); + + gtk_style_context_restore (context); } void @@ -955,6 +970,8 @@ gtk_handle_box_paint (GtkWidget *widget, GtkHandleBox *hb = GTK_HANDLE_BOX (widget); GtkHandleBoxPrivate *priv = hb->priv; GtkBin *bin = GTK_BIN (widget); + GtkStyleContext *context; + GtkStateFlags state; GtkWidget *child; gint width, height; GdkRectangle rect; @@ -966,12 +983,14 @@ gtk_handle_box_paint (GtkWidget *widget, width = gdk_window_get_width (priv->bin_window); height = gdk_window_get_height (priv->bin_window); - gtk_paint_box (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - priv->shadow_type, - widget, "handlebox_bin", - 0, 0, width, height); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_background (context, cr, 0, 0, width, height); + gtk_render_frame (context, cr, 0, 0, width, height); switch (handle_position) { @@ -1008,15 +1027,14 @@ gtk_handle_box_paint (GtkWidget *widget, break; } - gtk_paint_handle (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "handlebox", - rect.x, rect.y, rect.width, rect.height, - handle_orientation); + gtk_render_handle (context, cr, + rect.x, rect.y, rect.width, rect.height); child = gtk_bin_get_child (bin); if (child != NULL && gtk_widget_get_visible (child)) GTK_WIDGET_CLASS (gtk_handle_box_parent_class)->draw (widget, cr); + + gtk_style_context_restore (context); } static gboolean @@ -1197,7 +1215,7 @@ gtk_handle_box_button_press (GtkWidget *widget, G_CALLBACK (gtk_handle_box_grab_event), hb); } - gdk_cursor_unref (fleur); + g_object_unref (fleur); event_handled = TRUE; } else if (priv->child_detached) /* Double click */ @@ -1234,10 +1252,9 @@ gtk_handle_box_motion (GtkWidget *widget, new_x = 0; new_y = 0; screen = gtk_widget_get_screen (widget); - gdk_display_get_device_state (gdk_screen_get_display (screen), - event->device, - &pointer_screen, - &new_x, &new_y, NULL); + gdk_device_get_position (event->device, + &pointer_screen, + &new_x, &new_y); if (pointer_screen != screen) { new_x = priv->orig_x; diff --git a/gtk/gtkhsv.c b/gtk/gtkhsv.c index e6093fa3b5..62356bc35b 100644 --- a/gtk/gtkhsv.c +++ b/gtk/gtkhsv.c @@ -34,12 +34,10 @@ #include #include -#include "gdk/gdkkeysyms.h" - #include "gtkhsv.h" #include "gtkbindings.h" #include "gtkmarshalers.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" /* Default width/height */ @@ -255,8 +253,6 @@ gtk_hsv_realize (GtkWidget *widget) priv->window = gdk_window_new (parent_window, &attr, attr_mask); gdk_window_set_user_data (priv->window, hsv); gdk_window_show (priv->window); - - gtk_widget_style_attach (widget); } static void @@ -669,22 +665,25 @@ compute_v (GtkHSV *hsv, /* Event handlers */ static void -set_cross_grab (GtkHSV *hsv, - guint32 time) +set_cross_grab (GtkHSV *hsv, + GdkDevice *device, + guint32 time) { GtkHSVPrivate *priv = hsv->priv; GdkCursor *cursor; cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (hsv)), GDK_CROSSHAIR); - gdk_pointer_grab (priv->window, FALSE, - (GDK_POINTER_MOTION_MASK - | GDK_POINTER_MOTION_HINT_MASK - | GDK_BUTTON_RELEASE_MASK), - NULL, - cursor, - time); - gdk_cursor_unref (cursor); + gdk_device_grab (device, + priv->window, + GDK_OWNERSHIP_NONE, + FALSE, + GDK_POINTER_MOTION_MASK + | GDK_POINTER_MOTION_HINT_MASK + | GDK_BUTTON_RELEASE_MASK, + cursor, + time); + g_object_unref (cursor); } static gboolean @@ -709,15 +708,15 @@ gtk_hsv_button_press (GtkWidget *widget, if (priv->mode != DRAG_NONE || event->button != 1) return FALSE; - + x = event->x; y = event->y; - + if (is_in_ring (hsv, x, y)) { priv->mode = DRAG_H; - set_cross_grab (hsv, event->time); - + set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event->time); + gtk_hsv_set_color (hsv, compute_v (hsv, x, y), priv->s, @@ -725,26 +724,26 @@ gtk_hsv_button_press (GtkWidget *widget, gtk_widget_grab_focus (widget); priv->focus_on_ring = TRUE; - + return TRUE; } - + if (is_in_triangle (hsv, x, y)) { gdouble s, v; - + priv->mode = DRAG_SV; - set_cross_grab (hsv, event->time); - + set_cross_grab (hsv, gdk_event_get_device ((GdkEvent *) event), event->time); + compute_sv (hsv, x, y, &s, &v); gtk_hsv_set_color (hsv, priv->h, s, v); gtk_widget_grab_focus (widget); priv->focus_on_ring = FALSE; - + return TRUE; } - + return FALSE; } @@ -759,14 +758,13 @@ gtk_hsv_button_release (GtkWidget *widget, if (priv->mode == DRAG_NONE || event->button != 1) return FALSE; - + /* Set the drag mode to DRAG_NONE so that signal handlers for "catched" * can see that this is the final color state. */ - mode = priv->mode; priv->mode = DRAG_NONE; - + x = event->x; y = event->y; @@ -786,8 +784,8 @@ gtk_hsv_button_release (GtkWidget *widget, g_assert_not_reached (); } - gdk_display_pointer_ungrab (gdk_window_get_display (event->window), - event->time); + gdk_device_ungrab (gdk_event_get_device ((GdkEvent *) event), event->time); + return TRUE; } @@ -997,10 +995,11 @@ paint_triangle (GtkHSV *hsv, gint x_start, x_end; cairo_surface_t *source; gdouble r, g, b; - gchar *detail; gint stride; int width, height; - + GtkStyleContext *context; + GtkStateFlags state; + priv = hsv->priv; width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); @@ -1142,14 +1141,20 @@ paint_triangle (GtkHSV *hsv, b = priv->v; hsv_to_rgb (&r, &g, &b); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_set_state (context, state); + if (INTENSITY (r, g, b) > 0.5) { - detail = "colorwheel_light"; + gtk_style_context_add_class (context, "light-area-focus"); cairo_set_source_rgb (cr, 0., 0., 0.); } else { - detail = "colorwheel_dark"; + gtk_style_context_add_class (context, "dark-area-focus"); cairo_set_source_rgb (cr, 1., 1., 1.); } @@ -1173,15 +1178,14 @@ paint_triangle (GtkHSV *hsv, "focus-padding", &focus_pad, NULL); - gtk_paint_focus (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - widget, detail, - xx - FOCUS_RADIUS - focus_width - focus_pad, - yy - FOCUS_RADIUS - focus_width - focus_pad, - 2 * (FOCUS_RADIUS + focus_width + focus_pad), - 2 * (FOCUS_RADIUS + focus_width + focus_pad)); + gtk_render_focus (context, cr, + xx - FOCUS_RADIUS - focus_width - focus_pad, + yy - FOCUS_RADIUS - focus_width - focus_pad, + 2 * (FOCUS_RADIUS + focus_width + focus_pad), + 2 * (FOCUS_RADIUS + focus_width + focus_pad)); } + + gtk_style_context_restore (context); } /* Paints the contents of the HSV color selector */ @@ -1196,13 +1200,22 @@ gtk_hsv_draw (GtkWidget *widget, paint_triangle (hsv, cr); if (gtk_widget_has_focus (widget) && priv->focus_on_ring) - gtk_paint_focus (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - widget, NULL, - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + { + GtkStyleContext *context; + GtkStateFlags state; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_focus (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + + gtk_style_context_restore (context); + } return FALSE; } diff --git a/gtk/gtkiconfactory.c b/gtk/gtkiconfactory.c index 5b21c62fd6..7b428e4e46 100644 --- a/gtk/gtkiconfactory.c +++ b/gtk/gtkiconfactory.c @@ -25,20 +25,22 @@ */ #include "config.h" + #include #include #include + #include "gtkiconfactory.h" #include "gtkiconcache.h" #include "gtkdebug.h" #include "gtkicontheme.h" -#include "gtksettings.h" +#include "gtksettingsprivate.h" #include "gtkstock.h" #include "gtkwidget.h" #include "gtkintl.h" #include "gtkbuildable.h" #include "gtkbuilderprivate.h" - +#include "gtktypebuiltins.h" static GSList *all_icon_factories = NULL; @@ -865,14 +867,14 @@ icon_size_lookup_intern (GtkSettings *settings, * @settings: a #GtkSettings object, used to determine * which set of user preferences to used. * @size: (type int): an icon size - * @width: location to store icon width - * @height: location to store icon height + * @width: (out): location to store icon width + * @height: (out): location to store icon height * * Obtains the pixel size of a semantic icon size, possibly * modified by user preferences for a particular * #GtkSettings. Normally @size would be * #GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_BUTTON, etc. This function - * isn't normally needed, gtk_widget_render_icon() is the usual + * isn't normally needed, gtk_widget_render_icon_pixbuf() is the usual * way to get an icon for rendering, then just look at the size of * the rendered pixbuf. The rendered pixbuf may not even correspond to * the width/height returned by gtk_icon_size_lookup(), because themes @@ -897,15 +899,15 @@ gtk_icon_size_lookup_for_settings (GtkSettings *settings, /** * gtk_icon_size_lookup: * @size: (type int): an icon size - * @width: location to store icon width - * @height: location to store icon height + * @width: (out): location to store icon width + * @height: (out): location to store icon height * * Obtains the pixel size of a semantic icon size, possibly * modified by user preferences for the default #GtkSettings. * (See gtk_icon_size_lookup_for_settings().) * Normally @size would be * #GTK_ICON_SIZE_MENU, #GTK_ICON_SIZE_BUTTON, etc. This function - * isn't normally needed, gtk_widget_render_icon() is the usual + * isn't normally needed, gtk_widget_render_icon_pixbuf() is the usual * way to get an icon for rendering, then just look at the size of * the rendered pixbuf. The rendered pixbuf may not even correspond to * the width/height returned by gtk_icon_size_lookup(), because themes @@ -1131,7 +1133,7 @@ static guint cache_serial = 0; * for a given size and state on request, and automatically caches * some of the rendered #GdkPixbuf objects. * - * Normally you would use gtk_widget_render_icon() instead of + * Normally you would use gtk_widget_render_icon_pixbuf() instead of * using #GtkIconSet directly. The one case where you'd use * #GtkIconSet is to create application-specific icon sets to place in * a #GtkIconFactory. @@ -1577,7 +1579,7 @@ render_fallback_image (GtkStyleContext *context, * means render at the size of the source and don't scale. * * Renders an icon using gtk_render_icon_pixbuf(). In most cases, - * gtk_widget_render_icon() is better, since it automatically provides + * gtk_widget_render_icon_pixbuf() is better, since it automatically provides * most of the arguments from the current widget settings. This * function never returns %NULL; if the icon can't be rendered * (perhaps because an image file fails to load), a default "missing @@ -2016,7 +2018,7 @@ icon_source_clear (GtkIconSource *source) /** * gtk_icon_source_set_filename: * @source: a #GtkIconSource - * @filename: image file to use + * @filename: (type filename): image file to use * * Sets the name of an image file to use as a base image when creating * icon variants for #GtkIconSet. The filename must be absolute. @@ -2104,8 +2106,8 @@ gtk_icon_source_set_pixbuf (GtkIconSource *source, * filename is not a copy, and should not be modified or expected to * persist beyond the lifetime of the icon source. * - * Return value: image filename. This string must not be modified - * or freed. + * Return value: (type filename): image filename. This string must not + * be modified or freed. */ G_CONST_RETURN gchar* gtk_icon_source_get_filename (const GtkIconSource *source) diff --git a/gtk/gtkiconfactory.h b/gtk/gtkiconfactory.h index 69ab250b0e..1faf7b73cd 100644 --- a/gtk/gtkiconfactory.h +++ b/gtk/gtkiconfactory.h @@ -121,6 +121,7 @@ GtkIconSet* gtk_icon_set_ref (GtkIconSet *icon_set); void gtk_icon_set_unref (GtkIconSet *icon_set); GtkIconSet* gtk_icon_set_copy (GtkIconSet *icon_set); +#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) /* Get one of the icon variants in the set, creating the variant if * necessary. */ @@ -130,7 +131,8 @@ GdkPixbuf* gtk_icon_set_render_icon (GtkIconSet *icon_set, GtkStateType state, GtkIconSize size, GtkWidget *widget, - const char *detail); + const gchar *detail); +#endif void gtk_icon_set_add_source (GtkIconSet *icon_set, const GtkIconSource *source); diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c index 2f41849967..705cc122f7 100644 --- a/gtk/gtkicontheme.c +++ b/gtk/gtkicontheme.c @@ -45,6 +45,7 @@ #include "gtkbuiltincache.h" #include "gtkintl.h" #include "gtkmain.h" +#include "gtknumerableiconprivate.h" #include "gtksettings.h" #include "gtkprivate.h" @@ -310,7 +311,6 @@ gtk_icon_theme_get_for_screen (GdkScreen *screen) GtkIconTheme *icon_theme; g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - g_return_val_if_fail (!screen->closed, NULL); icon_theme = g_object_get_data (G_OBJECT (screen), "gtk-icon-theme"); if (!icon_theme) @@ -737,7 +737,9 @@ gtk_icon_theme_set_search_path (GtkIconTheme *icon_theme, /** * gtk_icon_theme_get_search_path: * @icon_theme: a #GtkIconTheme - * @path: (allow-none) (array length=n_elements) (out): location to store a list of icon theme path directories or %NULL + + * @path: (allow-none) (array length=n_elements) (element-type filename) (out): + * location to store a list of icon theme path directories or %NULL . * The stored value should be freed with g_strfreev(). * @n_elements: location to store number of elements * in @path, or %NULL @@ -773,7 +775,7 @@ gtk_icon_theme_get_search_path (GtkIconTheme *icon_theme, /** * gtk_icon_theme_append_search_path: * @icon_theme: a #GtkIconTheme - * @path: directory name to append to the icon path + * @path: (type filename): directory name to append to the icon path * * Appends a directory to the search path. * See gtk_icon_theme_set_search_path(). @@ -802,7 +804,7 @@ gtk_icon_theme_append_search_path (GtkIconTheme *icon_theme, /** * gtk_icon_theme_prepend_search_path: * @icon_theme: a #GtkIconTheme - * @path: directory name to prepend to the icon path + * @path: (type filename): directory name to prepend to the icon path * * Prepends a directory to the search path. * See gtk_icon_theme_set_search_path(). @@ -835,8 +837,8 @@ gtk_icon_theme_prepend_search_path (GtkIconTheme *icon_theme, /** * gtk_icon_theme_set_custom_theme: * @icon_theme: a #GtkIconTheme - * @theme_name: name of icon theme to use instead of configured theme, - * or %NULL to unset a previously set custom theme + * @theme_name: (allow-none): name of icon theme to use instead of + * configured theme, or %NULL to unset a previously set custom theme * * Sets the name of the icon theme that the #GtkIconTheme object uses * overriding system configuration. This function cannot be called @@ -1720,8 +1722,8 @@ add_key_to_list (gpointer key, /** * gtk_icon_theme_list_icons: * @icon_theme: a #GtkIconTheme - * @context: a string identifying a particular type of icon, - * or %NULL to list all icons. + * @context: (allow-none): a string identifying a particular type of + * icon, or %NULL to list all icons. * * Lists the icons in the current icon theme. Only a subset * of the icons can be listed by providing a context string. @@ -1791,10 +1793,10 @@ gtk_icon_theme_list_icons (GtkIconTheme *icon_theme, * Gets the list of contexts available within the current * hierarchy of icon themes * - * Return value: (element-type utf8) (transfer full): a #GList list holding the names of all the - * contexts in the theme. You must first free each element - * in the list with g_free(), then free the list itself - * with g_list_free(). + * Return value: (element-type utf8) (transfer full): a #GList list + * holding the names of all the contexts in the theme. You must first + * free each element in the list with g_free(), then free the list + * itself with g_list_free(). * * Since: 2.12 **/ @@ -2697,10 +2699,9 @@ gtk_icon_info_get_base_size (GtkIconInfo *icon_info) * no filename if a builtin icon is returned; in this * case, you should use gtk_icon_info_get_builtin_pixbuf(). * - * Return value: the filename for the icon, or %NULL - * if gtk_icon_info_get_builtin_pixbuf() should - * be used instead. The return value is owned by - * GTK+ and should not be modified or freed. + * Return value: (type filename): the filename for the icon, or %NULL + * if gtk_icon_info_get_builtin_pixbuf() should be used instead. The + * return value is owned by GTK+ and should not be modified or freed. * * Since: 2.4 **/ @@ -3071,11 +3072,11 @@ gdk_color_to_css (GdkColor *color) static gchar * gdk_rgba_to_css (GdkRGBA *color) { - return g_strdup_printf ("rgba(%d,%d,%d,%f)", + /* drop a for now, since librsvg does not understand rgba() */ + return g_strdup_printf ("rgb(%d,%d,%d)", (gint)(color->red * 255), (gint)(color->green * 255), - (gint)(color->blue * 255), - color->alpha); + (gint)(color->blue * 255)); } static GdkPixbuf * @@ -3245,7 +3246,7 @@ gtk_icon_info_load_symbolic (GtkIconInfo *icon_info, /** * gtk_icon_info_load_symbolic_for_context: * @icon_info: a #GtkIconInfo - * context: a #GtkStyleContext + * @context: a #GtkStyleContext * @was_symbolic: (allow-none): a #gboolean, returns whether the loaded icon * was a symbolic one and whether the @fg color was applied to it. * @error: (allow-none): location to store error information on failure, @@ -3254,6 +3255,9 @@ gtk_icon_info_load_symbolic (GtkIconInfo *icon_info, * Loads an icon, modifying it to match the system colors for the foreground, * success, warning and error colors provided. If the icon is not a symbolic * one, the function will return the result from gtk_icon_info_load_icon(). + * This function uses the regular foreground color and the symbolic colors + * with the names "success_color", "warning_color" and "error_color" from + * the context. * * This allows loading symbolic icons that will match the system theme. * @@ -3800,6 +3804,9 @@ gtk_icon_theme_lookup_by_gicon (GtkIconTheme *icon_theme, GList *list, *l; GtkIconInfo *emblem_info; + if (GTK_IS_NUMERABLE_ICON (icon)) + _gtk_numerable_icon_set_background_icon_size (GTK_NUMERABLE_ICON (icon), size / 2); + base = g_emblemed_icon_get_icon (G_EMBLEMED_ICON (icon)); info = gtk_icon_theme_lookup_by_gicon (icon_theme, base, size, flags); if (info) diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index 17ce6af25b..9f89851cf3 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -18,17 +18,19 @@ */ #include "config.h" + #include #include -#include - #include "gtkiconview.h" #include "gtkcelllayout.h" #include "gtkcellrenderer.h" +#include "gtkcellareabox.h" +#include "gtkcellareacontext.h" #include "gtkcellrenderertext.h" #include "gtkcellrendererpixbuf.h" +#include "gtkorientable.h" #include "gtkmarshalers.h" #include "gtkbindings.h" #include "gtkdnd.h" @@ -42,6 +44,7 @@ #include "gtkscrollable.h" #include "gtksizerequest.h" #include "gtktreednd.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" /** @@ -69,58 +72,38 @@ typedef struct _GtkIconViewItem GtkIconViewItem; struct _GtkIconViewItem { + /* First member is always the rectangle so it + * can be cast to a rectangle. */ + GdkRectangle cell_area; + GtkTreeIter iter; gint index; gint row, col; - /* Bounding box */ - gint x, y, width, height; - - /* Individual cells. - * box[i] is the actual area occupied by cell i, - * before, after are used to calculate the cell - * area relative to the box. - * See gtk_icon_view_get_cell_area(). - */ - gint n_cells; - GdkRectangle *box; - gint *before; - gint *after; - guint selected : 1; guint selected_before_rubberbanding : 1; }; -typedef struct _GtkIconViewCellInfo GtkIconViewCellInfo; -struct _GtkIconViewCellInfo -{ - GtkCellRenderer *cell; - - guint expand : 1; - guint pack : 1; - guint editing : 1; - - gint position; - - GSList *attributes; - - GtkCellLayoutDataFunc func; - gpointer func_data; - GDestroyNotify destroy; -}; - typedef struct _GtkIconViewChild GtkIconViewChild; struct _GtkIconViewChild { - GtkWidget *widget; - GtkIconViewItem *item; - gint cell; + GtkWidget *widget; + GdkRectangle area; }; struct _GtkIconViewPrivate { + GtkCellArea *cell_area; + GtkCellAreaContext *cell_area_context; + + gulong add_editable_id; + gulong remove_editable_id; + gulong context_changed_id; + + GPtrArray *row_contexts; + gint width, height; GtkSelectionMode selection_mode; @@ -138,7 +121,6 @@ struct _GtkIconViewPrivate guint layout_idle_id; - gboolean doing_rubberband; gint rubberband_x1, rubberband_y1; gint rubberband_x2, rubberband_y2; GdkDevice *rubberband_device; @@ -149,16 +131,9 @@ struct _GtkIconViewPrivate GtkIconViewItem *anchor_item; GtkIconViewItem *cursor_item; - GtkIconViewItem *edited_item; - GtkCellEditable *editable; GtkIconViewItem *last_single_clicked; - GList *cell_list; - guint n_cells; - - gint cursor_cell; - GtkOrientation item_orientation; gint columns; @@ -173,8 +148,8 @@ struct _GtkIconViewPrivate gint markup_column; gint pixbuf_column; - gint pixbuf_cell; - gint text_cell; + GtkCellRenderer *pixbuf_cell; + GtkCellRenderer *text_cell; gint tooltip_column; @@ -210,6 +185,9 @@ struct _GtkIconViewPrivate * driving the scrollable adjustment values */ guint hscroll_policy : 1; guint vscroll_policy : 1; + + guint doing_rubberband : 1; + }; /* Signals */ @@ -245,6 +223,7 @@ enum PROP_REORDERABLE, PROP_TOOLTIP_COLUMN, PROP_ITEM_PADDING, + PROP_CELL_AREA, /* For scrollable interface */ PROP_HADJUSTMENT, @@ -255,7 +234,10 @@ enum /* GObject vfuncs */ static void gtk_icon_view_cell_layout_init (GtkCellLayoutIface *iface); -static void gtk_icon_view_finalize (GObject *object); +static void gtk_icon_view_dispose (GObject *object); +static GObject *gtk_icon_view_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); static void gtk_icon_view_set_property (GObject *object, guint prop_id, const GValue *value, @@ -338,7 +320,7 @@ static void gtk_icon_view_queue_draw_item (GtkIco static void gtk_icon_view_queue_layout (GtkIconView *icon_view); static void gtk_icon_view_set_cursor_item (GtkIconView *icon_view, GtkIconViewItem *item, - gint cursor_cell); + GtkCellRenderer *cursor_cell); static void gtk_icon_view_start_rubberbanding (GtkIconView *icon_view, GdkDevice *device, gint x, @@ -352,11 +334,7 @@ static gboolean gtk_icon_view_item_hit_test (GtkIco gint width, gint height); static gboolean gtk_icon_view_unselect_all_internal (GtkIconView *icon_view); -static void gtk_icon_view_calculate_item_size (GtkIconView *icon_view, - GtkIconViewItem *item); -static void gtk_icon_view_calculate_item_size2 (GtkIconView *icon_view, - GtkIconViewItem *item, - gint *max_height); +static void gtk_icon_view_cache_widths (GtkIconView *icon_view); static void gtk_icon_view_update_rubberband (gpointer data); static void gtk_icon_view_item_invalidate_size (GtkIconViewItem *item); static void gtk_icon_view_invalidate_sizes (GtkIconView *icon_view); @@ -389,60 +367,28 @@ static GtkIconViewItem * gtk_icon_view_get_item_at_coords (GtkIco gint x, gint y, gboolean only_in_cell, - GtkIconViewCellInfo **cell_at_pos); -static void gtk_icon_view_get_cell_area (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *cell_info, - GdkRectangle *cell_area); -static void gtk_icon_view_get_cell_box (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *info, - GdkRectangle *box); -static GtkIconViewCellInfo *gtk_icon_view_get_cell_info (GtkIconView *icon_view, - GtkCellRenderer *renderer); + GtkCellRenderer **cell_at_pos); static void gtk_icon_view_set_cell_data (GtkIconView *icon_view, GtkIconViewItem *item); -static void gtk_icon_view_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand); -static void gtk_icon_view_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand); -static void gtk_icon_view_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *renderer, - const gchar *attribute, - gint column); -static void gtk_icon_view_cell_layout_clear (GtkCellLayout *layout); -static void gtk_icon_view_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *renderer); -static void gtk_icon_view_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy); -static void gtk_icon_view_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position); -static GList * gtk_icon_view_cell_layout_get_cells (GtkCellLayout *layout); -static void gtk_icon_view_item_activate_cell (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *cell_info, - GdkEvent *event); +static GtkCellArea *gtk_icon_view_cell_layout_get_area (GtkCellLayout *layout); + static void gtk_icon_view_item_selected_changed (GtkIconView *icon_view, GtkIconViewItem *item); -static void gtk_icon_view_put (GtkIconView *icon_view, - GtkWidget *widget, - GtkIconViewItem *item, - gint cell); -static void gtk_icon_view_remove_widget (GtkCellEditable *editable, + +static void gtk_icon_view_add_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + GdkRectangle *cell_area, + const gchar *path, + GtkIconView *icon_view); +static void gtk_icon_view_remove_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + GtkIconView *icon_view); +static void gtk_icon_view_context_changed (GtkCellAreaContext *context, + GParamSpec *pspec, GtkIconView *icon_view); -static void gtk_icon_view_start_editing (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *cell_info, - GdkEvent *event); -static void gtk_icon_view_stop_editing (GtkIconView *icon_view, - gboolean cancel_editing); /* Source side drag signals */ static void gtk_icon_view_drag_begin (GtkWidget *widget, @@ -483,9 +429,6 @@ static gboolean gtk_icon_view_maybe_begin_drag (GtkIconView *icon_ static void remove_scroll_timeout (GtkIconView *icon_view); -static void adjust_wrap_width (GtkIconView *icon_view, - GtkIconViewItem *item); - /* GtkBuildable */ static GtkBuildableIface *parent_buildable_iface; static void gtk_icon_view_buildable_init (GtkBuildableIface *iface); @@ -526,7 +469,8 @@ gtk_icon_view_class_init (GtkIconViewClass *klass) widget_class = (GtkWidgetClass *) klass; container_class = (GtkContainerClass *) klass; - gobject_class->finalize = gtk_icon_view_finalize; + gobject_class->constructor = gtk_icon_view_constructor; + gobject_class->dispose = gtk_icon_view_dispose; gobject_class->set_property = gtk_icon_view_set_property; gobject_class->get_property = gtk_icon_view_get_property; @@ -805,6 +749,21 @@ gtk_icon_view_class_init (GtkIconViewClass *klass) 0, G_MAXINT, 6, GTK_PARAM_READWRITE)); + /** + * GtkIconView:cell-area: + * + * The #GtkCellArea used to layout cell renderers for this view. + * + * Since: 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /* Scrollable interface properties */ g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, "hadjustment"); g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, "vadjustment"); @@ -1094,14 +1053,7 @@ gtk_icon_view_buildable_init (GtkBuildableIface *iface) static void gtk_icon_view_cell_layout_init (GtkCellLayoutIface *iface) { - iface->pack_start = gtk_icon_view_cell_layout_pack_start; - iface->pack_end = gtk_icon_view_cell_layout_pack_end; - iface->clear = gtk_icon_view_cell_layout_clear; - iface->add_attribute = gtk_icon_view_cell_layout_add_attribute; - iface->set_cell_data_func = gtk_icon_view_cell_layout_set_cell_data_func; - iface->clear_attributes = gtk_icon_view_cell_layout_clear_attributes; - iface->reorder = gtk_icon_view_cell_layout_reorder; - iface->get_cells = gtk_icon_view_cell_layout_get_cells; + iface->get_area = gtk_icon_view_cell_layout_get_area; } static void @@ -1120,15 +1072,11 @@ gtk_icon_view_init (GtkIconView *icon_view) icon_view->priv->text_column = -1; icon_view->priv->markup_column = -1; icon_view->priv->pixbuf_column = -1; - icon_view->priv->text_cell = -1; - icon_view->priv->pixbuf_cell = -1; + icon_view->priv->text_cell = NULL; + icon_view->priv->pixbuf_cell = NULL; icon_view->priv->tooltip_column = -1; gtk_widget_set_can_focus (GTK_WIDGET (icon_view), TRUE); - - icon_view->priv->cell_list = NULL; - icon_view->priv->n_cells = 0; - icon_view->priv->cursor_cell = -1; icon_view->priv->item_orientation = GTK_ORIENTATION_VERTICAL; @@ -1141,17 +1089,92 @@ gtk_icon_view_init (GtkIconView *icon_view) icon_view->priv->item_padding = 6; icon_view->priv->draw_focus = TRUE; + + icon_view->priv->row_contexts = + g_ptr_array_new_with_free_func ((GDestroyNotify)g_object_unref); } /* GObject methods */ -static void -gtk_icon_view_finalize (GObject *object) +static GObject * +gtk_icon_view_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) { - gtk_icon_view_cell_layout_clear (GTK_CELL_LAYOUT (object)); + GtkIconView *icon_view; + GtkIconViewPrivate *priv; + GObject *object; - G_OBJECT_CLASS (gtk_icon_view_parent_class)->finalize (object); + object = G_OBJECT_CLASS (gtk_icon_view_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + icon_view = (GtkIconView *) object; + priv = icon_view->priv; + + if (!priv->cell_area) + { + priv->cell_area = gtk_cell_area_box_new (); + g_object_ref_sink (priv->cell_area); + } + + if (GTK_IS_ORIENTABLE (priv->cell_area)) + gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->cell_area), priv->item_orientation); + + gtk_cell_area_set_style_detail (priv->cell_area, "icon_view"); + + priv->cell_area_context = gtk_cell_area_create_context (priv->cell_area); + + priv->add_editable_id = + g_signal_connect (priv->cell_area, "add-editable", + G_CALLBACK (gtk_icon_view_add_editable), icon_view); + priv->remove_editable_id = + g_signal_connect (priv->cell_area, "remove-editable", + G_CALLBACK (gtk_icon_view_remove_editable), icon_view); + priv->context_changed_id = + g_signal_connect (priv->cell_area_context, "notify", + G_CALLBACK (gtk_icon_view_context_changed), icon_view); + + return object; } +static void +gtk_icon_view_dispose (GObject *object) +{ + GtkIconView *icon_view; + GtkIconViewPrivate *priv; + + icon_view = GTK_ICON_VIEW (object); + priv = icon_view->priv; + + if (priv->cell_area_context) + { + g_signal_handler_disconnect (priv->cell_area_context, priv->context_changed_id); + priv->context_changed_id = 0; + + g_object_unref (priv->cell_area_context); + priv->cell_area_context = NULL; + } + + if (priv->row_contexts) + { + g_ptr_array_free (priv->row_contexts, TRUE); + priv->row_contexts = NULL; + } + + if (priv->cell_area) + { + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); + + g_signal_handler_disconnect (priv->cell_area, priv->add_editable_id); + g_signal_handler_disconnect (priv->cell_area, priv->remove_editable_id); + priv->add_editable_id = 0; + priv->remove_editable_id = 0; + + g_object_unref (priv->cell_area); + priv->cell_area = NULL; + } + + G_OBJECT_CLASS (gtk_icon_view_parent_class)->dispose (object); +} static void gtk_icon_view_set_property (GObject *object, @@ -1160,6 +1183,7 @@ gtk_icon_view_set_property (GObject *object, GParamSpec *pspec) { GtkIconView *icon_view; + GtkCellArea *area; icon_view = GTK_ICON_VIEW (object); @@ -1213,6 +1237,14 @@ gtk_icon_view_set_property (GObject *object, gtk_icon_view_set_item_padding (icon_view, g_value_get_int (value)); break; + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + area = g_value_get_object (value); + + if (area) + icon_view->priv->cell_area = g_object_ref_sink (area); + break; + case PROP_HADJUSTMENT: gtk_icon_view_set_hadjustment (icon_view, g_value_get_object (value)); break; @@ -1293,6 +1325,10 @@ gtk_icon_view_get_property (GObject *object, g_value_set_int (value, icon_view->priv->item_padding); break; + case PROP_CELL_AREA: + g_value_set_object (value, icon_view->priv->cell_area); + break; + case PROP_HADJUSTMENT: g_value_set_object (value, icon_view->priv->hadjustment); break; @@ -1318,8 +1354,6 @@ gtk_icon_view_destroy (GtkWidget *widget) { GtkIconView *icon_view = GTK_ICON_VIEW (widget); - gtk_icon_view_stop_editing (icon_view, TRUE); - gtk_icon_view_set_model (icon_view, NULL); if (icon_view->priv->layout_idle_id != 0) @@ -1486,27 +1520,9 @@ gtk_icon_view_allocate_children (GtkIconView *icon_view) for (list = icon_view->priv->children; list; list = list->next) { GtkIconViewChild *child = list->data; - GtkAllocation allocation; /* totally ignore our child's requisition */ - if (child->cell < 0) - { - allocation.x = child->item->x + icon_view->priv->item_padding; - allocation.y = child->item->y + icon_view->priv->item_padding; - allocation.width = child->item->width - icon_view->priv->item_padding * 2; - allocation.height = child->item->height - icon_view->priv->item_padding * 2; - } - else - { - GdkRectangle *box = &child->item->box[child->cell]; - - allocation.x = box->x; - allocation.y = box->y; - allocation.width = box->width; - allocation.height = box->height; - } - - gtk_widget_size_allocate (child->widget, &allocation); + gtk_widget_size_allocate (child->widget, &child->area); } } @@ -1594,16 +1610,22 @@ gtk_icon_view_draw (GtkWidget *widget, for (icons = icon_view->priv->items; icons; icons = icons->next) { GtkIconViewItem *item = icons->data; + GdkRectangle paint_area; + + paint_area.x = ((GdkRectangle *)item)->x - icon_view->priv->item_padding; + paint_area.y = ((GdkRectangle *)item)->y - icon_view->priv->item_padding; + paint_area.width = ((GdkRectangle *)item)->width + icon_view->priv->item_padding * 2; + paint_area.height = ((GdkRectangle *)item)->height + icon_view->priv->item_padding * 2; cairo_save (cr); - cairo_rectangle (cr, item->x, item->y, item->width, item->height); + cairo_rectangle (cr, paint_area.x, paint_area.y, paint_area.width, paint_area.height); cairo_clip (cr); if (gdk_cairo_get_clip_rectangle (cr, NULL)) { gtk_icon_view_paint_item (icon_view, cr, item, - item->x, item->y, + ((GdkRectangle *)item)->x, ((GdkRectangle *)item)->y, icon_view->priv->draw_focus); if (dest_index == item->index) @@ -1624,49 +1646,36 @@ gtk_icon_view_draw (GtkWidget *widget, switch (dest_pos) { case GTK_ICON_VIEW_DROP_INTO: - gtk_paint_focus (style, - cr, - state, - widget, - "iconview-drop-indicator", - dest_item->x, dest_item->y, - dest_item->width, dest_item->height); + gtk_paint_focus (style, cr, state, widget, + "iconview-drop-indicator", + dest_item->cell_area.x, dest_item->cell_area.y, + dest_item->cell_area.width, dest_item->cell_area.height); break; case GTK_ICON_VIEW_DROP_ABOVE: - gtk_paint_focus (style, - cr, - state, - widget, - "iconview-drop-indicator", - dest_item->x, dest_item->y - 1, - dest_item->width, 2); + gtk_paint_focus (style, cr, state, widget, + "iconview-drop-indicator", + dest_item->cell_area.x, dest_item->cell_area.y - 1, + dest_item->cell_area.width, 2); break; case GTK_ICON_VIEW_DROP_LEFT: - gtk_paint_focus (style, - cr, - state, - widget, - "iconview-drop-indicator", - dest_item->x - 1, dest_item->y, - 2, dest_item->height); + gtk_paint_focus (style, cr, state, widget, + "iconview-drop-indicator", + dest_item->cell_area.x - 1, dest_item->cell_area.y, + 2, dest_item->cell_area.height); break; case GTK_ICON_VIEW_DROP_BELOW: - gtk_paint_focus (style, - cr, - state, - widget, - "iconview-drop-indicator", - dest_item->x, dest_item->y + dest_item->height - 1, - dest_item->width, 2); + gtk_paint_focus (style, cr, state, widget, + "iconview-drop-indicator", + dest_item->cell_area.x, + dest_item->cell_area.y + dest_item->cell_area.height - 1, + dest_item->cell_area.width, 2); break; case GTK_ICON_VIEW_DROP_RIGHT: - gtk_paint_focus (style, - cr, - state, - widget, - "iconview-drop-indicator", - dest_item->x + dest_item->width - 1, dest_item->y, - 2, dest_item->height); + gtk_paint_focus (style, cr, state, widget, + "iconview-drop-indicator", + dest_item->cell_area.x + dest_item->cell_area.width - 1, + dest_item->cell_area.y, + 2, dest_item->cell_area.height); case GTK_ICON_VIEW_NO_DROP: ; break; } @@ -1688,7 +1697,7 @@ rubberband_scroll_timeout (gpointer data) GtkIconView *icon_view = data; gtk_adjustment_set_value (icon_view->priv->vadjustment, - icon_view->priv->vadjustment->value + + gtk_adjustment_get_value (icon_view->priv->vadjustment) + icon_view->priv->scroll_value_diff); gtk_icon_view_update_rubberband (icon_view); @@ -1713,9 +1722,9 @@ gtk_icon_view_motion (GtkWidget *widget, gtk_icon_view_update_rubberband (widget); abs_y = event->y - icon_view->priv->height * - (icon_view->priv->vadjustment->value / - (icon_view->priv->vadjustment->upper - - icon_view->priv->vadjustment->lower)); + (gtk_adjustment_get_value (icon_view->priv->vadjustment) / + (gtk_adjustment_get_upper (icon_view->priv->vadjustment) - + gtk_adjustment_get_lower (icon_view->priv->vadjustment))); gtk_widget_get_allocation (widget, &allocation); @@ -1790,44 +1799,6 @@ gtk_icon_view_forall (GtkContainer *container, } } -static void -gtk_icon_view_item_activate_cell (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *info, - GdkEvent *event) -{ - GtkTreePath *path; - gchar *path_string; - GdkRectangle cell_area; - gboolean visible, mode; - - gtk_icon_view_set_cell_data (icon_view, item); - - g_object_get (info->cell, - "visible", &visible, - "mode", &mode, - NULL); - - if (visible && mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) - { - gtk_icon_view_get_cell_area (icon_view, item, info, &cell_area); - - path = gtk_tree_path_new_from_indices (item->index, -1); - path_string = gtk_tree_path_to_string (path); - gtk_tree_path_free (path); - - gtk_cell_renderer_activate (info->cell, - event, - GTK_WIDGET (icon_view), - path_string, - &cell_area, - &cell_area, - 0); - - g_free (path_string); - } -} - static void gtk_icon_view_item_selected_changed (GtkIconView *icon_view, GtkIconViewItem *item) @@ -1847,19 +1818,24 @@ gtk_icon_view_item_selected_changed (GtkIconView *icon_view, } } -static void -gtk_icon_view_put (GtkIconView *icon_view, - GtkWidget *widget, - GtkIconViewItem *item, - gint cell) +static void +gtk_icon_view_add_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + GdkRectangle *cell_area, + const gchar *path, + GtkIconView *icon_view) { GtkIconViewChild *child; + GtkWidget *widget = GTK_WIDGET (editable); child = g_new (GtkIconViewChild, 1); - child->widget = widget; - child->item = item; - child->cell = cell; + child->widget = widget; + child->area.x = cell_area->x; + child->area.y = cell_area->y; + child->area.width = cell_area->width; + child->area.height = cell_area->height; icon_view->priv->children = g_list_append (icon_view->priv->children, child); @@ -1870,136 +1846,34 @@ gtk_icon_view_put (GtkIconView *icon_view, } static void -gtk_icon_view_remove_widget (GtkCellEditable *editable, - GtkIconView *icon_view) +gtk_icon_view_remove_editable (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *editable, + GtkIconView *icon_view) { - GList *l; - GtkIconViewItem *item; - - if (icon_view->priv->edited_item == NULL) - return; - - item = icon_view->priv->edited_item; - icon_view->priv->edited_item = NULL; - icon_view->priv->editable = NULL; - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = l->data; - - info->editing = FALSE; - } + GtkTreePath *path; if (gtk_widget_has_focus (GTK_WIDGET (editable))) gtk_widget_grab_focus (GTK_WIDGET (icon_view)); - g_signal_handlers_disconnect_by_func (editable, - gtk_icon_view_remove_widget, - icon_view); - gtk_container_remove (GTK_CONTAINER (icon_view), GTK_WIDGET (editable)); - gtk_icon_view_queue_draw_item (icon_view, item); -} - - -static void -gtk_icon_view_start_editing (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *info, - GdkEvent *event) -{ - GtkTreePath *path; - gchar *path_string; - GdkRectangle cell_area; - gboolean visible, mode; - GtkCellEditable *editable; - - gtk_icon_view_set_cell_data (icon_view, item); - - g_object_get (info->cell, - "visible", &visible, - "mode", &mode, - NULL); - if (visible && mode == GTK_CELL_RENDERER_MODE_EDITABLE) - { - gtk_icon_view_get_cell_area (icon_view, item, info, &cell_area); - - path = gtk_tree_path_new_from_indices (item->index, -1); - path_string = gtk_tree_path_to_string (path); - gtk_tree_path_free (path); - - editable = gtk_cell_renderer_start_editing (info->cell, - event, - GTK_WIDGET (icon_view), - path_string, - &cell_area, - &cell_area, - 0); - g_free (path_string); - - /* the rest corresponds to tree_view_real_start_editing... */ - icon_view->priv->edited_item = item; - icon_view->priv->editable = editable; - info->editing = TRUE; - - gtk_icon_view_put (icon_view, GTK_WIDGET (editable), item, - info->position); - gtk_cell_editable_start_editing (GTK_CELL_EDITABLE (editable), - (GdkEvent *)event); - gtk_widget_grab_focus (GTK_WIDGET (editable)); - g_signal_connect (editable, "remove-widget", - G_CALLBACK (gtk_icon_view_remove_widget), - icon_view); - - } + path = gtk_tree_path_new_from_string (gtk_cell_area_get_current_path_string (area)); + gtk_icon_view_queue_draw_path (icon_view, path); + gtk_tree_path_free (path); } static void -gtk_icon_view_stop_editing (GtkIconView *icon_view, - gboolean cancel_editing) +gtk_icon_view_context_changed (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkIconView *icon_view) { - GtkCellRenderer *cell = NULL; - GtkIconViewItem *item; - GList *l; - - if (icon_view->priv->edited_item == NULL) - return; - - /* - * This is very evil. We need to do this, because - * gtk_cell_editable_editing_done may trigger gtk_icon_view_row_changed - * later on. If gtk_icon_view_row_changed notices - * icon_view->priv->edited_item != NULL, it'll call - * gtk_icon_view_stop_editing again. Bad things will happen then. - * - * Please read that again if you intend to modify anything here. - */ - - item = icon_view->priv->edited_item; - icon_view->priv->edited_item = NULL; - - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = l->data; - - if (info->editing) - { - cell = info->cell; - break; - } - } - - if (cell == NULL) - return; - - gtk_cell_renderer_stop_editing (cell, cancel_editing); - if (!cancel_editing) - gtk_cell_editable_editing_done (icon_view->priv->editable); - - icon_view->priv->edited_item = item; - - gtk_cell_editable_remove_widget (icon_view->priv->editable); + if (!strcmp (pspec->name, "minimum-width") || + !strcmp (pspec->name, "natural-width") || + !strcmp (pspec->name, "minimum-height") || + !strcmp (pspec->name, "natural-height")) + gtk_icon_view_invalidate_sizes (icon_view); } /** @@ -2028,15 +1902,12 @@ gtk_icon_view_set_cursor (GtkIconView *icon_view, gboolean start_editing) { GtkIconViewItem *item = NULL; - GtkIconViewCellInfo *info = NULL; - GList *l; - gint i, cell_pos; g_return_if_fail (GTK_IS_ICON_VIEW (icon_view)); g_return_if_fail (path != NULL); g_return_if_fail (cell == NULL || GTK_IS_CELL_RENDERER (cell)); - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); if (gtk_tree_path_get_depth (path) == 1) item = g_list_nth_data (icon_view->priv->items, @@ -2044,35 +1915,27 @@ gtk_icon_view_set_cursor (GtkIconView *icon_view, if (!item) return; - - cell_pos = -1; - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - info = l->data; - - if (info->cell == cell) - { - cell_pos = i; - break; - } - - info = NULL; - } - g_return_if_fail (cell == NULL || info != NULL); - - gtk_icon_view_set_cursor_item (icon_view, item, cell_pos); + gtk_icon_view_set_cursor_item (icon_view, item, cell); gtk_icon_view_scroll_to_path (icon_view, path, FALSE, 0.0, 0.0); - - if (info && start_editing) - gtk_icon_view_start_editing (icon_view, item, info, NULL); + + if (start_editing) + { + GtkCellAreaContext *context; + + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_activate (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), (GdkRectangle *)item, + 0 /* XXX flags */, TRUE); + } } /** * gtk_icon_view_get_cursor: * @icon_view: A #GtkIconView - * @path: (allow-none): Return location for the current cursor path, or %NULL - * @cell: (allow-none): Return location the current focus cell, or %NULL + * @path: (allow-none) (out): Return location for the current cursor path, or %NULL + * @cell: (allow-none) (out): Return location the current focus cell, or %NULL * * Fills in @path and @cell with the current cursor path and cell. * If the cursor isn't currently set, then *@path will be %NULL. @@ -2090,16 +1953,10 @@ gtk_icon_view_get_cursor (GtkIconView *icon_view, GtkCellRenderer **cell) { GtkIconViewItem *item; - GtkIconViewCellInfo *info; g_return_val_if_fail (GTK_IS_ICON_VIEW (icon_view), FALSE); item = icon_view->priv->cursor_item; - if (icon_view->priv->cursor_cell < 0) - info = NULL; - else - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->cursor_cell); if (path != NULL) { @@ -2109,13 +1966,8 @@ gtk_icon_view_get_cursor (GtkIconView *icon_view, *path = NULL; } - if (cell != NULL) - { - if (info != NULL) - *cell = info->cell; - else - *cell = NULL; - } + if (cell != NULL && item != NULL) + *cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area); return (item != NULL); } @@ -2126,10 +1978,8 @@ gtk_icon_view_button_press (GtkWidget *widget, { GtkIconView *icon_view; GtkIconViewItem *item; - GtkIconViewCellInfo *info = NULL; gboolean dirty = FALSE; - GtkCellRendererMode mode; - gint cursor_cell = -1; + GtkCellRenderer *cell = NULL, *cursor_cell = NULL; icon_view = GTK_ICON_VIEW (widget); @@ -2144,22 +1994,19 @@ gtk_icon_view_button_press (GtkWidget *widget, item = gtk_icon_view_get_item_at_coords (icon_view, event->x, event->y, FALSE, - &info); + &cell); /* * We consider only the the cells' area as the item area if the * item is not selected, but if it *is* selected, the complete * selection rectangle is considered to be part of the item. */ - if (item != NULL && (info != NULL || item->selected)) + if (item != NULL && (cell != NULL || item->selected)) { - if (info != NULL) + if (cell != NULL) { - g_object_get (info->cell, "mode", &mode, NULL); - - if (mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE || - mode == GTK_CELL_RENDERER_MODE_EDITABLE) - cursor_cell = g_list_index (icon_view->priv->cell_list, info); + if (gtk_cell_renderer_is_activatable (cell)) + cursor_cell = cell; } gtk_icon_view_scroll_to_item (icon_view, item); @@ -2216,16 +2063,18 @@ gtk_icon_view_button_press (GtkWidget *widget, icon_view->priv->last_single_clicked = item; /* cancel the current editing, if it exists */ - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); - if (info != NULL) + if (cell != NULL && gtk_cell_renderer_is_activatable (cell)) { - if (mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) - gtk_icon_view_item_activate_cell (icon_view, item, info, - (GdkEvent *)event); - else if (mode == GTK_CELL_RENDERER_MODE_EDITABLE) - gtk_icon_view_start_editing (icon_view, item, info, - (GdkEvent *)event); + GtkCellAreaContext *context; + + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); + + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_activate (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + (GdkRectangle *)item, 0/* XXX flags */, FALSE); } } else @@ -2463,6 +2312,27 @@ gtk_icon_view_update_rubberband_selection (GtkIconView *icon_view) g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0); } + +typedef struct { + GdkRectangle hit_rect; + gboolean hit; +} HitTestData; + +static gboolean +hit_test (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + HitTestData *data) +{ + if (MIN (data->hit_rect.x + data->hit_rect.width, cell_area->x + cell_area->width) - + MAX (data->hit_rect.x, cell_area->x) > 0 && + MIN (data->hit_rect.y + data->hit_rect.height, cell_area->y + cell_area->height) - + MAX (data->hit_rect.y, cell_area->y) > 0) + data->hit = TRUE; + + return (data->hit != FALSE); +} + static gboolean gtk_icon_view_item_hit_test (GtkIconView *icon_view, GtkIconViewItem *item, @@ -2471,28 +2341,23 @@ gtk_icon_view_item_hit_test (GtkIconView *icon_view, gint width, gint height) { - GList *l; - GdkRectangle box; - - if (MIN (x + width, item->x + item->width) - MAX (x, item->x) <= 0 || - MIN (y + height, item->y + item->height) - MAX (y, item->y) <= 0) + HitTestData data = { { x, y, width, height }, FALSE }; + GtkCellAreaContext *context; + GdkRectangle *item_area = (GdkRectangle *)item; + + if (MIN (x + width, item_area->x + item_area->width) - MAX (x, item_area->x) <= 0 || + MIN (y + height, item_area->y + item_area->height) - MAX (y, item_area->y) <= 0) return FALSE; - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - gtk_icon_view_get_cell_box (icon_view, item, info, &box); + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); - if (MIN (x + width, box.x + box.width) - MAX (x, box.x) > 0 && - MIN (y + height, box.y + box.height) - MAX (y, box.y) > 0) - return TRUE; - } + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_foreach_alloc (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + item_area, item_area, + (GtkCellAllocCallback)hit_test, &data); - return FALSE; + return data.hit; } static gboolean @@ -2547,35 +2412,20 @@ static gboolean gtk_icon_view_real_activate_cursor_item (GtkIconView *icon_view) { GtkTreePath *path; - GtkCellRendererMode mode; - GtkIconViewCellInfo *info = NULL; + gboolean activated; + GtkCellAreaContext *context; if (!icon_view->priv->cursor_item) return FALSE; - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->cursor_cell); + context = g_ptr_array_index (icon_view->priv->row_contexts, icon_view->priv->cursor_item->row); - if (info) - { - g_object_get (info->cell, "mode", &mode, NULL); + gtk_icon_view_set_cell_data (icon_view, icon_view->priv->cursor_item); + activated = gtk_cell_area_activate (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + (GdkRectangle *)icon_view->priv->cursor_item, + 0 /* XXX flags */, FALSE); - if (mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) - { - gtk_icon_view_item_activate_cell (icon_view, - icon_view->priv->cursor_item, - info, NULL); - return TRUE; - } - else if (mode == GTK_CELL_RENDERER_MODE_EDITABLE) - { - gtk_icon_view_start_editing (icon_view, - icon_view->priv->cursor_item, - info, NULL); - return TRUE; - } - } - path = gtk_tree_path_new_from_indices (icon_view->priv->cursor_item->index, -1); gtk_icon_view_item_activated (icon_view, path); gtk_tree_path_free (path); @@ -2644,14 +2494,6 @@ gtk_icon_view_set_hadjustment_values (GtkIconView *icon_view) old_page_size = gtk_adjustment_get_page_size (adj); new_upper = MAX (allocation.width, icon_view->priv->width); - g_object_set (adj, - "lower", 0.0, - "upper", new_upper, - "page-size", (gdouble)allocation.width, - "step-increment", allocation.width * 0.1, - "page-increment", allocation.width * 0.9, - NULL); - if (gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL) { /* Make sure no scrolling occurs for RTL locales also (if possible) */ @@ -2671,8 +2513,13 @@ gtk_icon_view_set_hadjustment_values (GtkIconView *icon_view) else new_value = CLAMP (old_value, 0, new_upper - allocation.width); - if (new_value != old_value) - gtk_adjustment_set_value (adj, new_value); + gtk_adjustment_configure (adj, + new_value, + 0.0, + new_upper, + allocation.width * 0.1, + allocation.width * 0.9, + allocation.width); } static void @@ -2680,26 +2527,16 @@ gtk_icon_view_set_vadjustment_values (GtkIconView *icon_view) { GtkAllocation allocation; GtkAdjustment *adj = icon_view->priv->vadjustment; - gdouble old_value; - gdouble new_value; - gdouble new_upper; gtk_widget_get_allocation (GTK_WIDGET (icon_view), &allocation); - old_value = gtk_adjustment_get_value (adj); - new_upper = MAX (allocation.height, icon_view->priv->height); - - g_object_set (adj, - "lower", 0.0, - "upper", new_upper, - "page-size", (gdouble)allocation.height, - "step-increment", allocation.height * 0.1, - "page-increment", allocation.height * 0.9, - NULL); - - new_value = CLAMP (old_value, 0, new_upper - allocation.height); - if (new_value != old_value) - gtk_adjustment_set_value (adj, new_value); + gtk_adjustment_configure (adj, + gtk_adjustment_get_value (adj), + 0.0, + MAX (allocation.height, icon_view->priv->height), + allocation.height * 0.1, + allocation.height * 0.9, + allocation.height); } static void @@ -2781,8 +2618,8 @@ gtk_icon_view_adjustment_changed (GtkAdjustment *adjustment, if (gtk_widget_get_realized (GTK_WIDGET (icon_view))) { gdk_window_move (priv->bin_window, - - priv->hadjustment->value, - - priv->vadjustment->value); + - gtk_adjustment_get_value (priv->hadjustment), + - gtk_adjustment_get_value (priv->vadjustment)); if (icon_view->priv->doing_rubberband) gtk_icon_view_update_rubberband (GTK_WIDGET (icon_view)); @@ -2800,61 +2637,62 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, gint *maximum_width) { GtkAllocation allocation; + GtkCellAreaContext *context; + GtkIconViewPrivate *priv = icon_view->priv; GtkWidget *widget = GTK_WIDGET (icon_view); - gint focus_width; gint x, current_width; GList *items, *last_item; gint col; - gint colspan; - gint *max_height; - gint i; + gint max_height = 0; gboolean rtl; rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - max_height = g_new0 (gint, icon_view->priv->n_cells); x = 0; col = 0; items = first_item; current_width = 0; - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - NULL); + x += priv->margin; + current_width += 2 * priv->margin; - x += icon_view->priv->margin + focus_width; - current_width += 2 * (icon_view->priv->margin + focus_width); + gtk_widget_get_allocation (widget, &allocation); + context = gtk_cell_area_copy_context (priv->cell_area, priv->cell_area_context); + g_ptr_array_add (priv->row_contexts, context); + + /* In the first loop we iterate horizontally until we hit allocation width + * and collect the aligned height-for-width */ items = first_item; while (items) { GtkIconViewItem *item = items->data; + GdkRectangle *item_area = (GdkRectangle *)item; - gtk_icon_view_calculate_item_size (icon_view, item); - colspan = 1 + (item->width - 1) / (item_width + icon_view->priv->column_spacing); + item_area->width = item_width; - item->width = colspan * item_width + (colspan - 1) * icon_view->priv->column_spacing; - - current_width += item->width; + current_width += item_area->width + icon_view->priv->item_padding * 2; if (items != first_item) { - gtk_widget_get_allocation (widget, &allocation); - if ((icon_view->priv->columns <= 0 && current_width > allocation.width) || (icon_view->priv->columns > 0 && col >= icon_view->priv->columns)) break; } - current_width += icon_view->priv->column_spacing + 2 * focus_width; + /* Get this item's particular width & height (all alignments are cached by now) */ + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_get_preferred_height_for_width (priv->cell_area, + context, + widget, item_width, + NULL, NULL); - item->y = *y + focus_width; - item->x = x; + current_width += icon_view->priv->column_spacing; - x = current_width - (icon_view->priv->margin + focus_width); + item_area->y = *y + icon_view->priv->item_padding; + item_area->x = x + icon_view->priv->item_padding; - for (i = 0; i < icon_view->priv->n_cells; i++) - max_height[i] = MAX (max_height[i], item->box[i].height); + x = current_width - icon_view->priv->margin; if (current_width > *maximum_width) *maximum_width = current_width; @@ -2862,56 +2700,60 @@ gtk_icon_view_layout_single_row (GtkIconView *icon_view, item->row = row; item->col = col; - col += colspan; + col ++; items = items->next; } last_item = items; - /* Now go through the row again and align the icons */ + gtk_cell_area_context_get_preferred_height_for_width (context, item_width, &max_height, NULL); + gtk_cell_area_context_allocate (context, item_width, max_height); + + /* In the second loop the item height has been aligned and derived and + * we just set the height and handle rtl layout */ for (items = first_item; items != last_item; items = items->next) { GtkIconViewItem *item = items->data; + GdkRectangle *item_area = (GdkRectangle *)item; if (rtl) { - item->x = *maximum_width - item->width - item->x; + item_area->x = *maximum_width - item_area->width - item_area->x; item->col = col - 1 - item->col; } - gtk_icon_view_calculate_item_size2 (icon_view, item, max_height); - - /* We may want to readjust the new y coordinate. */ - if (item->y + item->height + focus_width + icon_view->priv->row_spacing > *y) - *y = item->y + item->height + focus_width + icon_view->priv->row_spacing; + /* All items in the same row get the same height */ + item_area->height = max_height; } - g_free (max_height); + /* Adjust the new y coordinate. */ + *y += max_height + icon_view->priv->row_spacing + icon_view->priv->item_padding * 2; return last_item; } static void -gtk_icon_view_set_adjustment_upper (GtkAdjustment *adj, - gdouble upper) +adjust_wrap_width (GtkIconView *icon_view) { - if (upper != adj->upper) + if (icon_view->priv->text_cell) { - gdouble min = MAX (0.0, upper - adj->page_size); - gboolean value_changed = FALSE; - - adj->upper = upper; + gint wrap_width = 50; - if (adj->value > min) + /* Here we go with the same old guess, try the icon size and set double + * the size of the first icon found in the list, naive but works much + * of the time */ + if (icon_view->priv->items && icon_view->priv->pixbuf_cell) { - adj->value = min; - value_changed = TRUE; + gtk_icon_view_set_cell_data (icon_view, icon_view->priv->items->data); + gtk_cell_renderer_get_preferred_width (icon_view->priv->pixbuf_cell, + GTK_WIDGET (icon_view), + &wrap_width, NULL); + + wrap_width = MAX (wrap_width * 2, 50); } - gtk_adjustment_changed (adj); - - if (value_changed) - gtk_adjustment_value_changed (adj); + g_object_set (icon_view->priv->text_cell, "wrap-width", wrap_width, NULL); + g_object_set (icon_view->priv->text_cell, "width", wrap_width, NULL); } } @@ -2939,26 +2781,25 @@ gtk_icon_view_layout (GtkIconView *icon_view) item_width = icon_view->priv->item_width; - if (item_width < 0) - { - for (icons = icon_view->priv->items; icons; icons = icons->next) - { - GtkIconViewItem *item = icons->data; - gtk_icon_view_calculate_item_size (icon_view, item); - item_width = MAX (item_width, item->width); - } - } + /* Update the wrap width for the text cell before going and requesting sizes */ + adjust_wrap_width (icon_view); + /* Update the context widths for any invalidated items */ + gtk_icon_view_cache_widths (icon_view); + + /* Fetch the new item width if needed */ + if (item_width < 0) + gtk_cell_area_context_get_preferred_width (icon_view->priv->cell_area_context, + &item_width, NULL); + + gtk_cell_area_context_allocate (icon_view->priv->cell_area_context, item_width, -1); icons = icon_view->priv->items; y += icon_view->priv->margin; row = 0; - if (icons) - { - gtk_icon_view_set_cell_data (icon_view, icons->data); - adjust_wrap_width (icon_view, icons->data); - } + /* Clear the per row contexts */ + g_ptr_array_set_size (icon_view->priv->row_contexts, 0); do { @@ -2983,10 +2824,8 @@ gtk_icon_view_layout (GtkIconView *icon_view) size_changed = TRUE; } - gtk_icon_view_set_adjustment_upper (icon_view->priv->hadjustment, - icon_view->priv->width); - gtk_icon_view_set_adjustment_upper (icon_view->priv->vadjustment, - icon_view->priv->height); + gtk_icon_view_set_hadjustment_values (icon_view); + gtk_icon_view_set_vadjustment_values (icon_view); if (size_changed) gtk_widget_queue_resize_no_redraw (widget); @@ -3015,264 +2854,58 @@ gtk_icon_view_layout (GtkIconView *icon_view) gtk_widget_queue_draw (widget); } -static void -gtk_icon_view_get_cell_area (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *info, - GdkRectangle *cell_area) -{ - g_return_if_fail (info->position < item->n_cells); - - if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) - { - cell_area->x = item->box[info->position].x - item->before[info->position]; - cell_area->y = item->y + icon_view->priv->item_padding; - cell_area->width = item->box[info->position].width + - item->before[info->position] + item->after[info->position]; - cell_area->height = item->height - icon_view->priv->item_padding * 2; - } - else - { - cell_area->x = item->x + icon_view->priv->item_padding; - cell_area->y = item->box[info->position].y - item->before[info->position]; - cell_area->width = item->width - icon_view->priv->item_padding * 2; - cell_area->height = item->box[info->position].height + - item->before[info->position] + item->after[info->position]; - } -} - -static void -gtk_icon_view_get_cell_box (GtkIconView *icon_view, - GtkIconViewItem *item, - GtkIconViewCellInfo *info, - GdkRectangle *box) -{ - g_return_if_fail (info->position < item->n_cells); - - *box = item->box[info->position]; -} - -/* try to guess a reasonable wrap width for an implicit text cell renderer +/* This ensures that all widths have been cached in the + * context and we have proper alignments to go on. */ static void -adjust_wrap_width (GtkIconView *icon_view, - GtkIconViewItem *item) +gtk_icon_view_cache_widths (GtkIconView *icon_view) { - GtkIconViewCellInfo *text_info; - GtkIconViewCellInfo *pixbuf_info; - gint wrap_width; + GList *items; - if (icon_view->priv->text_cell != -1 && - icon_view->priv->pixbuf_cell != -1) + g_signal_handler_block (icon_view->priv->cell_area_context, + icon_view->priv->context_changed_id); + + for (items = icon_view->priv->items; items; items = items->next) { - GtkRequisition min_size; - gint item_width; + GtkIconViewItem *item = items->data; - text_info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->text_cell); - pixbuf_info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->pixbuf_cell); - - gtk_cell_renderer_get_preferred_size (pixbuf_info->cell, - GTK_WIDGET (icon_view), - &min_size, NULL); - - if (icon_view->priv->item_width > 0) - item_width = icon_view->priv->item_width; - else - item_width = item->width; - - if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL) - wrap_width = item_width; - else { - if (item->width == -1 && item_width <= 0) - wrap_width = MAX (2 * min_size.width, 50); - else - wrap_width = item_width - min_size.width - icon_view->priv->spacing; - } - - wrap_width -= icon_view->priv->item_padding * 2; - - g_object_set (text_info->cell, "wrap-width", wrap_width, NULL); - g_object_set (text_info->cell, "width", wrap_width, NULL); - } -} - -static void -gtk_icon_view_calculate_item_size (GtkIconView *icon_view, - GtkIconViewItem *item) -{ - GtkRequisition min_size; - gint spacing; - GList *l; - - if (item->width != -1 && item->height != -1) - return; - - if (item->n_cells != icon_view->priv->n_cells) - { - g_free (item->before); - g_free (item->after); - g_free (item->box); - - item->before = g_new0 (gint, icon_view->priv->n_cells); - item->after = g_new0 (gint, icon_view->priv->n_cells); - item->box = g_new0 (GdkRectangle, icon_view->priv->n_cells); - - item->n_cells = icon_view->priv->n_cells; - } - - gtk_icon_view_set_cell_data (icon_view, item); - - spacing = icon_view->priv->spacing; - - item->width = 0; - item->height = 0; - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - gtk_cell_renderer_get_preferred_size (info->cell, - GTK_WIDGET (icon_view), - &min_size, NULL); - item->box[info->position].width = min_size.width; - item->box[info->position].height = min_size.height; - - if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) + /* Only fetch the width of items with invalidated sizes */ + if (item->cell_area.width < 0) { - item->width += item->box[info->position].width - + (info->position > 0 ? spacing : 0); - item->height = MAX (item->height, item->box[info->position].height); - } - else - { - item->width = MAX (item->width, item->box[info->position].width); - item->height += item->box[info->position].height + (info->position > 0 ? spacing : 0); + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_get_preferred_width (icon_view->priv->cell_area, + icon_view->priv->cell_area_context, + GTK_WIDGET (icon_view), NULL, NULL); } } - item->width += icon_view->priv->item_padding * 2; - item->height += icon_view->priv->item_padding * 2; -} - -static void -gtk_icon_view_calculate_item_size2 (GtkIconView *icon_view, - GtkIconViewItem *item, - gint *max_height) -{ - GtkRequisition min_size; - GdkRectangle cell_area; - gint spacing; - GList *l; - gint i, k; - gboolean rtl; - - rtl = gtk_widget_get_direction (GTK_WIDGET (icon_view)) == GTK_TEXT_DIR_RTL; - - gtk_icon_view_set_cell_data (icon_view, item); - - spacing = icon_view->priv->spacing; - - item->height = 0; - for (i = 0; i < icon_view->priv->n_cells; i++) - { - if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) - item->height = MAX (item->height, max_height[i]); - else - item->height += max_height[i] + (i > 0 ? spacing : 0); - } - - cell_area.x = item->x + icon_view->priv->item_padding; - cell_area.y = item->y + icon_view->priv->item_padding; - - for (k = 0; k < 2; k++) - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - if (info->pack == (k ? GTK_PACK_START : GTK_PACK_END)) - continue; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) - { - /* We should not subtract icon_view->priv->item_padding from item->height, - * because item->height is recalculated above using - * max_height which does not contain item padding. - */ - cell_area.width = item->box[info->position].width; - cell_area.height = item->height; - } - else - { - /* item->width is not recalculated and thus needs to be - * corrected for the padding. - */ - cell_area.width = item->width - 2 * icon_view->priv->item_padding; - cell_area.height = max_height[i]; - } - - gtk_cell_renderer_get_preferred_size (info->cell, - GTK_WIDGET (icon_view), - &min_size, NULL); - item->box[info->position].width = min_size.width; - item->box[info->position].height = min_size.height; - - _gtk_cell_renderer_calc_offset (info->cell, &cell_area, - gtk_widget_get_direction (GTK_WIDGET (icon_view)), - item->box[info->position].width, item->box[info->position].height, - &item->box[info->position].x, &item->box[info->position].y); - item->box[info->position].x += cell_area.x; - item->box[info->position].y += cell_area.y; - - if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) - { - item->before[info->position] = item->box[info->position].x - cell_area.x; - item->after[info->position] = cell_area.width - item->box[info->position].width - item->before[info->position]; - cell_area.x += cell_area.width + spacing; - } - else - { - if (item->box[info->position].width > item->width - icon_view->priv->item_padding * 2) - { - item->width = item->box[info->position].width + icon_view->priv->item_padding * 2; - cell_area.width = item->width; - } - item->before[info->position] = item->box[info->position].y - cell_area.y; - item->after[info->position] = cell_area.height - item->box[info->position].height - item->before[info->position]; - cell_area.y += cell_area.height + spacing; - } - } - - if (rtl && icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL) - { - for (i = 0; i < icon_view->priv->n_cells; i++) - { - item->box[i].x = item->x + item->width - - (item->box[i].x + item->box[i].width - item->x); - } - } - - item->height += icon_view->priv->item_padding * 2; + g_signal_handler_unblock (icon_view->priv->cell_area_context, + icon_view->priv->context_changed_id); } static void gtk_icon_view_invalidate_sizes (GtkIconView *icon_view) { + /* Clear all item sizes */ g_list_foreach (icon_view->priv->items, (GFunc)gtk_icon_view_item_invalidate_size, NULL); + + /* Reset the context */ + g_signal_handler_block (icon_view->priv->cell_area_context, + icon_view->priv->context_changed_id); + gtk_cell_area_context_reset (icon_view->priv->cell_area_context); + g_signal_handler_unblock (icon_view->priv->cell_area_context, + icon_view->priv->context_changed_id); + + /* Re-layout the items */ + gtk_icon_view_queue_layout (icon_view); } static void gtk_icon_view_item_invalidate_size (GtkIconViewItem *item) { - item->width = -1; - item->height = -1; + item->cell_area.width = -1; + item->cell_area.height = -1; } static void @@ -3283,27 +2916,19 @@ gtk_icon_view_paint_item (GtkIconView *icon_view, gint y, gboolean draw_focus) { - gint focus_width; - gint padding; - GdkRectangle cell_area, box; - GList *l; - gint i; + GdkRectangle cell_area; GtkStateType state; GtkCellRendererState flags; - GtkStyle *style; GtkWidget *widget = GTK_WIDGET (icon_view); + GtkIconViewPrivate *priv = icon_view->priv; + GtkStyle *style; + GtkCellAreaContext *context; - if (icon_view->priv->model == NULL) + if (priv->model == NULL) return; - gtk_icon_view_set_cell_data (icon_view, item); - style = gtk_widget_get_style (widget); - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - NULL); - - padding = focus_width; + gtk_icon_view_set_cell_data (icon_view, item); if (item->selected) { @@ -3327,77 +2952,24 @@ gtk_icon_view_paint_item (GtkIconView *icon_view, GTK_SHADOW_NONE, GTK_WIDGET (icon_view), "icon_view_item", - x, y, - item->width, item->height); - } - - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - gtk_icon_view_get_cell_area (icon_view, item, info, &cell_area); - - cell_area.x = x - item->x + cell_area.x; - cell_area.y = y - item->y + cell_area.y; - - gtk_cell_renderer_render (info->cell, - cr, - widget, - &cell_area, &cell_area, flags); + x - icon_view->priv->item_padding, + y - icon_view->priv->item_padding, + item->cell_area.width + icon_view->priv->item_padding * 2, + item->cell_area.height + icon_view->priv->item_padding * 2); } - if (draw_focus && - gtk_widget_has_focus (widget) && - item == icon_view->priv->cursor_item) - { - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - GtkCellRendererMode mode; - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; + cell_area.x = x; + cell_area.y = y; + cell_area.width = item->cell_area.width; + cell_area.height = item->cell_area.height; - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; + if (gtk_widget_has_focus (widget) && item == icon_view->priv->cursor_item) + flags |= GTK_CELL_RENDERER_FOCUSED; - /* If found a editable/activatable cell, draw focus on it. */ - g_object_get (info->cell, "mode", &mode, NULL); - if (icon_view->priv->cursor_cell < 0 && - mode != GTK_CELL_RENDERER_MODE_INERT) - icon_view->priv->cursor_cell = i; - - gtk_icon_view_get_cell_box (icon_view, item, info, &box); - - if (i == icon_view->priv->cursor_cell) - { - gtk_paint_focus (style, - cr, - GTK_STATE_NORMAL, - widget, - "icon_view", - x - item->x + box.x - padding, - y - item->y + box.y - padding, - box.width + 2 * padding, - box.height + 2 * padding); - break; - } - } - - /* If there are no editable/activatable cells, draw focus - * around the whole item. - */ - if (icon_view->priv->cursor_cell < 0) - gtk_paint_focus (style, - cr, - GTK_STATE_NORMAL, - widget, - "icon_view", - x - padding, - y - padding, - item->width + 2 * padding, - item->height + 2 * padding); - } + context = g_ptr_array_index (priv->row_contexts, item->row); + gtk_cell_area_render (priv->cell_area, context, + widget, cr, &cell_area, &cell_area, flags, + draw_focus); } static void @@ -3465,17 +3037,13 @@ static void gtk_icon_view_queue_draw_item (GtkIconView *icon_view, GtkIconViewItem *item) { - gint focus_width; - GdkRectangle rect; + GdkRectangle rect; + GdkRectangle *item_area = (GdkRectangle *)item; - gtk_widget_style_get (GTK_WIDGET (icon_view), - "focus-line-width", &focus_width, - NULL); - - rect.x = item->x - focus_width; - rect.y = item->y - focus_width; - rect.width = item->width + 2 * focus_width; - rect.height = item->height + 2 * focus_width; + rect.x = item_area->x - icon_view->priv->item_padding; + rect.y = item_area->y - icon_view->priv->item_padding; + rect.width = item_area->width + icon_view->priv->item_padding * 2; + rect.height = item_area->height + icon_view->priv->item_padding * 2; if (icon_view->priv->bin_window) gdk_window_invalidate_rect (icon_view->priv->bin_window, &rect, TRUE); @@ -3509,14 +3077,21 @@ gtk_icon_view_queue_layout (GtkIconView *icon_view) static void gtk_icon_view_set_cursor_item (GtkIconView *icon_view, GtkIconViewItem *item, - gint cursor_cell) + GtkCellRenderer *cursor_cell) { AtkObject *obj; AtkObject *item_obj; AtkObject *cursor_item_obj; + /* When hitting this path from keynav, the focus cell is + * already set, we dont need to notify the atk object + * but we still need to queue the draw here (in the case + * that the focus cell changes but not the cursor item). + */ + gtk_icon_view_queue_draw_item (icon_view, item); + if (icon_view->priv->cursor_item == item && - (cursor_cell < 0 || cursor_cell == icon_view->priv->cursor_cell)) + (cursor_cell == NULL || cursor_cell == gtk_cell_area_get_focus_cell (icon_view->priv->cell_area))) return; obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view)); @@ -3531,10 +3106,15 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view, } } icon_view->priv->cursor_item = item; - if (cursor_cell >= 0) - icon_view->priv->cursor_cell = cursor_cell; - gtk_icon_view_queue_draw_item (icon_view, item); + if (cursor_cell) + gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cursor_cell); + else + { + /* Make sure there is a cell in focus initially */ + if (!gtk_cell_area_get_focus_cell (icon_view->priv->cell_area)) + gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD); + } /* Notify that accessible focus object has changed */ item_obj = atk_object_ref_accessible_child (obj, item->index); @@ -3553,10 +3133,10 @@ gtk_icon_view_item_new (void) { GtkIconViewItem *item; - item = g_new0 (GtkIconViewItem, 1); + item = g_slice_new0 (GtkIconViewItem); - item->width = -1; - item->height = -1; + item->cell_area.width = -1; + item->cell_area.height = -1; return item; } @@ -3566,23 +3146,17 @@ gtk_icon_view_item_free (GtkIconViewItem *item) { g_return_if_fail (item != NULL); - g_free (item->before); - g_free (item->after); - g_free (item->box); - - g_free (item); + g_slice_free (GtkIconViewItem, item); } - static GtkIconViewItem * gtk_icon_view_get_item_at_coords (GtkIconView *icon_view, gint x, gint y, gboolean only_in_cell, - GtkIconViewCellInfo **cell_at_pos) + GtkCellRenderer **cell_at_pos) { - GList *items, *l; - GdkRectangle box; + GList *items; if (cell_at_pos) *cell_at_pos = NULL; @@ -3590,45 +3164,39 @@ gtk_icon_view_get_item_at_coords (GtkIconView *icon_view, for (items = icon_view->priv->items; items; items = items->next) { GtkIconViewItem *item = items->data; + GdkRectangle *item_area = (GdkRectangle *)item; - if (x >= item->x - icon_view->priv->column_spacing/2 && x <= item->x + item->width + icon_view->priv->column_spacing/2 && - y >= item->y - icon_view->priv->row_spacing/2 && y <= item->y + item->height + icon_view->priv->row_spacing/2) + if (x >= item_area->x - icon_view->priv->column_spacing/2 && + x <= item_area->x + item_area->width + icon_view->priv->column_spacing/2 && + y >= item_area->y - icon_view->priv->row_spacing/2 && + y <= item_area->y + item_area->height + icon_view->priv->row_spacing/2) { if (only_in_cell || cell_at_pos) { + GtkCellRenderer *cell = NULL; + GtkCellAreaContext *context; + + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); gtk_icon_view_set_cell_data (icon_view, item); - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; + if (x >= item_area->x && x <= item_area->x + item_area->width && + y >= item_area->y && y <= item_area->y + item_area->height) + cell = gtk_cell_area_get_cell_at_position (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + item_area, + x, y, NULL); - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - gtk_icon_view_get_cell_box (icon_view, item, info, &box); - - if ((x >= box.x && x <= box.x + box.width && - y >= box.y && y <= box.y + box.height) || - (x >= box.x && - x <= box.x + box.width && - y >= box.y && - y <= box.y + box.height)) - { - if (cell_at_pos) - *cell_at_pos = info; - - return item; - } - } + if (cell_at_pos) + *cell_at_pos = cell; if (only_in_cell) - return NULL; + return cell != NULL ? item : NULL; + else + return item; } - return item; } } - return NULL; } @@ -3710,13 +3278,20 @@ gtk_icon_view_row_changed (GtkTreeModel *model, if (gtk_tree_path_get_depth (path) > 1) return; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); index = gtk_tree_path_get_indices(path)[0]; item = g_list_nth_data (icon_view->priv->items, index); - gtk_icon_view_item_invalidate_size (item); - gtk_icon_view_queue_layout (icon_view); + /* Here we can use a "grow-only" strategy for optimization + * and only invalidate a single item and queue a relayout + * instead of invalidating the whole thing. + * + * For now GtkIconView still cant deal with huge models + * so just invalidate the whole thing when the model + * changes. + */ + gtk_icon_view_invalidate_sizes (icon_view); verify_items (icon_view); } @@ -3788,7 +3363,7 @@ gtk_icon_view_row_deleted (GtkTreeModel *model, list = g_list_nth (icon_view->priv->items, index); item = list->data; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); if (item == icon_view->priv->anchor_item) icon_view->priv->anchor_item = NULL; @@ -3836,7 +3411,7 @@ gtk_icon_view_rows_reordered (GtkTreeModel *model, if (iter != NULL) return; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); length = gtk_tree_model_iter_n_children (model, NULL); @@ -3947,7 +3522,7 @@ gtk_icon_view_real_move_cursor (GtkIconView *icon_view, if (!gtk_widget_has_focus (GTK_WIDGET (icon_view))) return FALSE; - gtk_icon_view_stop_editing (icon_view, FALSE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, FALSE); gtk_widget_grab_focus (GTK_WIDGET (icon_view)); if (gtk_get_current_event_state (&state)) @@ -4011,86 +3586,6 @@ find_item (GtkIconView *icon_view, return NULL; } -static gint -find_cell (GtkIconView *icon_view, - GtkIconViewItem *item, - gint cell, - GtkOrientation orientation, - gint step, - gint *count) -{ - gint n_focusable; - gint *focusable; - gint current; - gint i, k; - GList *l; - - if (icon_view->priv->item_orientation != orientation) - return cell; - - gtk_icon_view_set_cell_data (icon_view, item); - - focusable = g_new0 (gint, icon_view->priv->n_cells); - n_focusable = 0; - - current = 0; - for (k = 0; k < 2; k++) - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - GtkCellRendererMode mode; - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - if (info->pack == (k ? GTK_PACK_START : GTK_PACK_END)) - continue; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - g_object_get (info->cell, "mode", &mode, NULL); - if (mode != GTK_CELL_RENDERER_MODE_INERT) - { - if (cell == i) - current = n_focusable; - - focusable[n_focusable] = i; - - n_focusable++; - } - } - - if (n_focusable == 0) - { - g_free (focusable); - return -1; - } - - if (cell < 0) - { - current = step > 0 ? 0 : n_focusable - 1; - cell = focusable[current]; - } - - if (current + *count < 0) - { - cell = -1; - *count = current + *count; - } - else if (current + *count > n_focusable - 1) - { - cell = -1; - *count = current + *count - (n_focusable - 1); - } - else - { - cell = focusable[current + *count]; - *count = 0; - } - - g_free (focusable); - - return cell; -} - static GtkIconViewItem * find_item_page_up_down (GtkIconView *icon_view, GtkIconViewItem *current, @@ -4100,7 +3595,7 @@ find_item_page_up_down (GtkIconView *icon_view, gint y, col; col = current->col; - y = current->y + count * icon_view->priv->vadjustment->page_size; + y = current->cell_area.y + count * gtk_adjustment_get_page_size (icon_view->priv->vadjustment); item = g_list_find (icon_view->priv->items, current); if (count > 0) @@ -4112,7 +3607,7 @@ find_item_page_up_down (GtkIconView *icon_view, if (((GtkIconViewItem *)next->data)->col == col) break; } - if (!next || ((GtkIconViewItem *)next->data)->y > y) + if (!next || ((GtkIconViewItem *)next->data)->cell_area.y > y) break; item = next; @@ -4127,7 +3622,7 @@ find_item_page_up_down (GtkIconView *icon_view, if (((GtkIconViewItem *)next->data)->col == col) break; } - if (!next || ((GtkIconViewItem *)next->data)->y < y) + if (!next || ((GtkIconViewItem *)next->data)->cell_area.y < y) break; item = next; @@ -4197,7 +3692,7 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view, gint count) { GtkIconViewItem *item; - gint cell; + GtkCellRenderer *cell; gboolean dirty = FALSE; gint step; GtkDirectionType direction; @@ -4217,23 +3712,27 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view, list = g_list_last (icon_view->priv->items); item = list ? list->data : NULL; - cell = -1; + + /* Give focus to the first cell initially */ + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_focus (icon_view->priv->cell_area, direction); } else { item = icon_view->priv->cursor_item; - cell = icon_view->priv->cursor_cell; step = count > 0 ? 1 : -1; + + /* Save the current focus cell in case we hit the edge */ + cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area); + while (item) { - cell = find_cell (icon_view, item, cell, - GTK_ORIENTATION_VERTICAL, - step, &count); - if (count == 0) + gtk_icon_view_set_cell_data (icon_view, item); + + if (gtk_cell_area_focus (icon_view->priv->cell_area, direction)) break; item = find_item (icon_view, item, step, 0); - count = count - step; } } @@ -4247,8 +3746,10 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view, direction == GTK_DIR_UP ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD); + } + gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell); return; } @@ -4258,6 +3759,7 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view, icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE) icon_view->priv->anchor_item = item; + cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area); gtk_icon_view_set_cursor_item (icon_view, item, cell); if (!icon_view->priv->ctrl_pressed && @@ -4313,7 +3815,7 @@ gtk_icon_view_move_cursor_page_up_down (GtkIconView *icon_view, icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE) icon_view->priv->anchor_item = item; - gtk_icon_view_set_cursor_item (icon_view, item, -1); + gtk_icon_view_set_cursor_item (icon_view, item, NULL); if (!icon_view->priv->ctrl_pressed && icon_view->priv->selection_mode != GTK_SELECTION_NONE) @@ -4335,7 +3837,7 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view, gint count) { GtkIconViewItem *item; - gint cell = -1; + GtkCellRenderer *cell = NULL; gboolean dirty = FALSE; gint step; GtkDirectionType direction; @@ -4355,22 +3857,27 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view, list = g_list_last (icon_view->priv->items); item = list ? list->data : NULL; + + /* Give focus to the first cell initially */ + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_focus (icon_view->priv->cell_area, direction); } else { item = icon_view->priv->cursor_item; - cell = icon_view->priv->cursor_cell; step = count > 0 ? 1 : -1; + + /* Save the current focus cell in case we hit the edge */ + cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area); + while (item) { - cell = find_cell (icon_view, item, cell, - GTK_ORIENTATION_HORIZONTAL, - step, &count); - if (count == 0) + gtk_icon_view_set_cell_data (icon_view, item); + + if (gtk_cell_area_focus (icon_view->priv->cell_area, direction)) break; item = find_item (icon_view, item, 0, step); - count = count - step; } } @@ -4384,8 +3891,10 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view, direction == GTK_DIR_LEFT ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD); + } + gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell); return; } @@ -4395,6 +3904,7 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view, icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE) icon_view->priv->anchor_item = item; + cell = gtk_cell_area_get_focus_cell (icon_view->priv->cell_area); gtk_icon_view_set_cursor_item (icon_view, item, cell); if (!icon_view->priv->ctrl_pressed && @@ -4442,7 +3952,7 @@ gtk_icon_view_move_cursor_start_end (GtkIconView *icon_view, icon_view->priv->selection_mode != GTK_SELECTION_MULTIPLE) icon_view->priv->anchor_item = item; - gtk_icon_view_set_cursor_item (icon_view, item, -1); + gtk_icon_view_set_cursor_item (icon_view, item, NULL); if (!icon_view->priv->ctrl_pressed && icon_view->priv->selection_mode != GTK_SELECTION_NONE) @@ -4505,7 +4015,7 @@ gtk_icon_view_scroll_to_path (GtkIconView *icon_view, item = g_list_nth_data (icon_view->priv->items, gtk_tree_path_get_indices(path)[0]); - if (!item || item->width < 0 || + if (!item || item->cell_area.width < 0 || !gtk_widget_get_realized (widget)) { if (icon_view->priv->scroll_to_path) @@ -4527,26 +4037,28 @@ gtk_icon_view_scroll_to_path (GtkIconView *icon_view, { GtkAllocation allocation; gint x, y; - gint focus_width; gfloat offset; + GdkRectangle item_area = + { + item->cell_area.x - icon_view->priv->item_padding, + item->cell_area.y - icon_view->priv->item_padding, + item->cell_area.width + icon_view->priv->item_padding * 2, + item->cell_area.height + icon_view->priv->item_padding * 2 + }; - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - NULL); - gdk_window_get_position (icon_view->priv->bin_window, &x, &y); gtk_widget_get_allocation (widget, &allocation); - offset = y + item->y - focus_width - row_align * (allocation.height - item->height); + offset = y + item_area.y - row_align * (allocation.height - item_area.height); gtk_adjustment_set_value (icon_view->priv->vadjustment, - icon_view->priv->vadjustment->value + offset); + gtk_adjustment_get_value (icon_view->priv->vadjustment) + offset); - offset = x + item->x - focus_width - col_align * (allocation.width - item->width); + offset = x + item_area.x - col_align * (allocation.width - item_area.width); gtk_adjustment_set_value (icon_view->priv->hadjustment, - icon_view->priv->hadjustment->value + offset); + gtk_adjustment_get_value (icon_view->priv->hadjustment) + offset); gtk_adjustment_changed (icon_view->priv->hadjustment); gtk_adjustment_changed (icon_view->priv->vadjustment); @@ -4563,11 +4075,13 @@ gtk_icon_view_scroll_to_item (GtkIconView *icon_view, GtkAllocation allocation; GtkWidget *widget = GTK_WIDGET (icon_view); gint x, y, width, height; - gint focus_width; - - gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - NULL); + GdkRectangle item_area = + { + item->cell_area.x - icon_view->priv->item_padding, + item->cell_area.y - icon_view->priv->item_padding, + item->cell_area.width + icon_view->priv->item_padding * 2, + item->cell_area.height + icon_view->priv->item_padding * 2 + }; width = gdk_window_get_width (icon_view->priv->bin_window); height = gdk_window_get_height (icon_view->priv->bin_window); @@ -4575,49 +4089,39 @@ gtk_icon_view_scroll_to_item (GtkIconView *icon_view, gtk_widget_get_allocation (widget, &allocation); - if (y + item->y - focus_width < 0) + if (y + item_area.y < 0) gtk_adjustment_set_value (icon_view->priv->vadjustment, - icon_view->priv->vadjustment->value + y + item->y - focus_width); - else if (y + item->y + item->height + focus_width > allocation.height) + gtk_adjustment_get_value (icon_view->priv->vadjustment) + y + item_area.y); + else if (y + item_area.y + item_area.height > allocation.height) gtk_adjustment_set_value (icon_view->priv->vadjustment, - icon_view->priv->vadjustment->value + y + item->y + item->height - + focus_width - allocation.height); + gtk_adjustment_get_value (icon_view->priv->vadjustment) + y + item_area.y + + item_area.height - allocation.height); - if (x + item->x - focus_width < 0) + if (x + item_area.x < 0) gtk_adjustment_set_value (icon_view->priv->hadjustment, - icon_view->priv->hadjustment->value + x + item->x - focus_width); - else if (x + item->x + item->width + focus_width > allocation.width) + gtk_adjustment_get_value (icon_view->priv->hadjustment) + x + item_area.x); + else if (x + item_area.x + item_area.width > allocation.width) gtk_adjustment_set_value (icon_view->priv->hadjustment, - icon_view->priv->hadjustment->value + x + item->x + item->width - + focus_width - allocation.width); + gtk_adjustment_get_value (icon_view->priv->hadjustment) + x + item_area.x + + item_area.width - allocation.width); gtk_adjustment_changed (icon_view->priv->hadjustment); gtk_adjustment_changed (icon_view->priv->vadjustment); } /* GtkCellLayout implementation */ -static GtkIconViewCellInfo * -gtk_icon_view_get_cell_info (GtkIconView *icon_view, - GtkCellRenderer *renderer) +static GtkCellArea * +gtk_icon_view_cell_layout_get_area (GtkCellLayout *cell_layout) { - GList *i; + GtkIconView *icon_view = GTK_ICON_VIEW (cell_layout); - for (i = icon_view->priv->cell_list; i; i = i->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)i->data; - - if (info->cell == renderer) - return info; - } - - return NULL; + return icon_view->priv->cell_area; } static void gtk_icon_view_set_cell_data (GtkIconView *icon_view, GtkIconViewItem *item) { - GList *i; gboolean iters_persist; GtkTreeIter iter; @@ -4634,237 +4138,13 @@ gtk_icon_view_set_cell_data (GtkIconView *icon_view, } else iter = item->iter; - - for (i = icon_view->priv->cell_list; i; i = i->next) - { - GSList *j; - GtkIconViewCellInfo *info = i->data; - g_object_freeze_notify (G_OBJECT (info->cell)); - - for (j = info->attributes; j && j->next; j = j->next->next) - { - gchar *property = j->data; - gint column = GPOINTER_TO_INT (j->next->data); - GValue value = {0, }; - - gtk_tree_model_get_value (icon_view->priv->model, &iter, - column, &value); - g_object_set_property (G_OBJECT (info->cell), - property, &value); - g_value_unset (&value); - } - - if (info->func) - (* info->func) (GTK_CELL_LAYOUT (icon_view), - info->cell, - icon_view->priv->model, - &iter, - info->func_data); - - g_object_thaw_notify (G_OBJECT (info->cell)); - } + gtk_cell_area_apply_attributes (icon_view->priv->cell_area, + icon_view->priv->model, + &iter, FALSE, FALSE); } -static void -free_cell_attributes (GtkIconViewCellInfo *info) -{ - GSList *list; - list = info->attributes; - while (list && list->next) - { - g_free (list->data); - list = list->next->next; - } - - g_slist_free (info->attributes); - info->attributes = NULL; -} - -static void -free_cell_info (GtkIconViewCellInfo *info) -{ - free_cell_attributes (info); - - g_object_unref (info->cell); - - if (info->destroy) - (* info->destroy) (info->func_data); - - g_free (info); -} - -static void -gtk_icon_view_cell_layout_pack_start (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand) -{ - GtkIconViewCellInfo *info; - GtkIconView *icon_view = GTK_ICON_VIEW (layout); - - g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); - g_return_if_fail (!gtk_icon_view_get_cell_info (icon_view, renderer)); - - g_object_ref_sink (renderer); - - info = g_new0 (GtkIconViewCellInfo, 1); - info->cell = renderer; - info->expand = expand ? TRUE : FALSE; - info->pack = GTK_PACK_START; - info->position = icon_view->priv->n_cells; - - icon_view->priv->cell_list = g_list_append (icon_view->priv->cell_list, info); - icon_view->priv->n_cells++; -} - -static void -gtk_icon_view_cell_layout_pack_end (GtkCellLayout *layout, - GtkCellRenderer *renderer, - gboolean expand) -{ - GtkIconViewCellInfo *info; - GtkIconView *icon_view = GTK_ICON_VIEW (layout); - - g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); - g_return_if_fail (!gtk_icon_view_get_cell_info (icon_view, renderer)); - - g_object_ref_sink (renderer); - - info = g_new0 (GtkIconViewCellInfo, 1); - info->cell = renderer; - info->expand = expand ? TRUE : FALSE; - info->pack = GTK_PACK_END; - info->position = icon_view->priv->n_cells; - - icon_view->priv->cell_list = g_list_append (icon_view->priv->cell_list, info); - icon_view->priv->n_cells++; -} - -static void -gtk_icon_view_cell_layout_add_attribute (GtkCellLayout *layout, - GtkCellRenderer *renderer, - const gchar *attribute, - gint column) -{ - GtkIconViewCellInfo *info; - GtkIconView *icon_view = GTK_ICON_VIEW (layout); - - info = gtk_icon_view_get_cell_info (icon_view, renderer); - g_return_if_fail (info != NULL); - - info->attributes = g_slist_prepend (info->attributes, - GINT_TO_POINTER (column)); - info->attributes = g_slist_prepend (info->attributes, - g_strdup (attribute)); -} - -static void -gtk_icon_view_cell_layout_clear (GtkCellLayout *layout) -{ - GtkIconView *icon_view = GTK_ICON_VIEW (layout); - - while (icon_view->priv->cell_list) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)icon_view->priv->cell_list->data; - free_cell_info (info); - icon_view->priv->cell_list = g_list_delete_link (icon_view->priv->cell_list, - icon_view->priv->cell_list); - } - - icon_view->priv->n_cells = 0; -} - -static void -gtk_icon_view_cell_layout_set_cell_data_func (GtkCellLayout *layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy) -{ - GtkIconViewCellInfo *info; - GtkIconView *icon_view = GTK_ICON_VIEW (layout); - - info = gtk_icon_view_get_cell_info (icon_view, cell); - g_return_if_fail (info != NULL); - - if (info->destroy) - { - GDestroyNotify d = info->destroy; - - info->destroy = NULL; - d (info->func_data); - } - - info->func = func; - info->func_data = func_data; - info->destroy = destroy; -} - -static void -gtk_icon_view_cell_layout_clear_attributes (GtkCellLayout *layout, - GtkCellRenderer *renderer) -{ - GtkIconViewCellInfo *info; - - info = gtk_icon_view_get_cell_info (GTK_ICON_VIEW (layout), renderer); - if (info != NULL) - free_cell_attributes (info); -} - -static void -gtk_icon_view_cell_layout_reorder (GtkCellLayout *layout, - GtkCellRenderer *cell, - gint position) -{ - GtkIconView *icon_view; - GList *link, *l; - GtkIconViewCellInfo *info; - gint i; - - icon_view = GTK_ICON_VIEW (layout); - - g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - - info = gtk_icon_view_get_cell_info (icon_view, cell); - - g_return_if_fail (info != NULL); - g_return_if_fail (position >= 0); - - link = g_list_find (icon_view->priv->cell_list, info); - - g_return_if_fail (link != NULL); - - icon_view->priv->cell_list = g_list_delete_link (icon_view->priv->cell_list, - link); - icon_view->priv->cell_list = g_list_insert (icon_view->priv->cell_list, - info, position); - - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - info = l->data; - - info->position = i; - } - - gtk_widget_queue_draw (GTK_WIDGET (icon_view)); -} - -static GList * -gtk_icon_view_cell_layout_get_cells (GtkCellLayout *layout) -{ - GtkIconView *icon_view = (GtkIconView *)layout; - GList *retval = NULL, *l; - - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data; - - retval = g_list_prepend (retval, info->cell); - } - - return g_list_reverse (retval); -} /* Public API */ @@ -4884,6 +4164,23 @@ gtk_icon_view_new (void) return g_object_new (GTK_TYPE_ICON_VIEW, NULL); } +/** + * gtk_icon_view_new_with_area: + * @area: the #GtkCellArea to use to layout cells + * + * Creates a new #GtkIconView widget using the + * specified @area to layout cells inside the icons. + * + * Return value: A newly created #GtkIconView widget + * + * Since: 3.0 + **/ +GtkWidget * +gtk_icon_view_new_with_area (GtkCellArea *area) +{ + return g_object_new (GTK_TYPE_ICON_VIEW, "cell-area", area, NULL); +} + /** * gtk_icon_view_new_with_model: * @model: The model. @@ -4977,9 +4274,9 @@ gtk_icon_view_get_path_at_pos (GtkIconView *icon_view, * @icon_view: A #GtkIconView. * @x: The x position to be identified * @y: The y position to be identified - * @path: (allow-none): Return location for the path, or %NULL - * @cell: Return location for the renderer responsible for the cell - * at (@x, @y), or %NULL + * @path: (allow-none) (out): Return location for the path, or %NULL + * @cell: (allow-none) (out): Return location for the renderer responsible for + * the cell at (@x, @y), or %NULL * * Finds the path at the point (@x, @y), relative to bin_window coordinates. * In contrast to gtk_icon_view_get_path_at_pos(), this function also @@ -5000,11 +4297,11 @@ gtk_icon_view_get_item_at_pos (GtkIconView *icon_view, GtkCellRenderer **cell) { GtkIconViewItem *item; - GtkIconViewCellInfo *info; + GtkCellRenderer *renderer = NULL; g_return_val_if_fail (GTK_IS_ICON_VIEW (icon_view), FALSE); - item = gtk_icon_view_get_item_at_coords (icon_view, x, y, TRUE, &info); + item = gtk_icon_view_get_item_at_coords (icon_view, x, y, TRUE, &renderer); if (path != NULL) { @@ -5015,12 +4312,7 @@ gtk_icon_view_get_item_at_pos (GtkIconView *icon_view, } if (cell != NULL) - { - if (info != NULL) - *cell = info->cell; - else - *cell = NULL; - } + *cell = renderer; return (item != NULL); } @@ -5070,7 +4362,6 @@ gtk_icon_view_set_tooltip_cell (GtkIconView *icon_view, { GdkRectangle rect; GtkIconViewItem *item = NULL; - GtkIconViewCellInfo *info = NULL; gint x, y; g_return_if_fail (GTK_IS_ICON_VIEW (icon_view)); @@ -5086,15 +4377,20 @@ gtk_icon_view_set_tooltip_cell (GtkIconView *icon_view, if (cell) { - info = gtk_icon_view_get_cell_info (icon_view, cell); - gtk_icon_view_get_cell_area (icon_view, item, info, &rect); + GtkCellAreaContext *context; + + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_get_cell_allocation (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + cell, (GdkRectangle *)item, &rect); } else { - rect.x = item->x; - rect.y = item->y; - rect.width = item->width; - rect.height = item->height; + rect.x = item->cell_area.x - icon_view->priv->item_padding; + rect.y = item->cell_area.y - icon_view->priv->item_padding; + rect.width = item->cell_area.width + icon_view->priv->item_padding * 2; + rect.height = item->cell_area.height + icon_view->priv->item_padding * 2; } if (icon_view->priv->bin_window) @@ -5266,7 +4562,7 @@ gtk_icon_view_set_tooltip_column (GtkIconView *icon_view, g_object_notify (G_OBJECT (icon_view), "tooltip-column"); } -/** +/** * gtk_icon_view_get_tooltip_column: * @icon_view: a #GtkIconView * @@ -5289,8 +4585,8 @@ gtk_icon_view_get_tooltip_column (GtkIconView *icon_view) /** * gtk_icon_view_get_visible_range: * @icon_view: A #GtkIconView - * @start_path: (allow-none): Return location for start of region, or %NULL - * @end_path: (allow-none): Return location for end of region, or %NULL + * @start_path: (allow-none) (out): Return location for start of region, or %NULL + * @end_path: (allow-none) (out): Return location for end of region, or %NULL * * Sets @start_path and @end_path to be the first and last visible path. * Note that there may be invisible paths in between. @@ -5322,11 +4618,16 @@ gtk_icon_view_get_visible_range (GtkIconView *icon_view, for (icons = icon_view->priv->items; icons; icons = icons->next) { GtkIconViewItem *item = icons->data; + GdkRectangle *item_area = (GdkRectangle *)item; - if ((item->x + item->width >= (int)icon_view->priv->hadjustment->value) && - (item->y + item->height >= (int)icon_view->priv->vadjustment->value) && - (item->x <= (int) (icon_view->priv->hadjustment->value + icon_view->priv->hadjustment->page_size)) && - (item->y <= (int) (icon_view->priv->vadjustment->value + icon_view->priv->vadjustment->page_size))) + if ((item_area->x + item_area->width >= (int)gtk_adjustment_get_value (icon_view->priv->hadjustment)) && + (item_area->y + item_area->height >= (int)gtk_adjustment_get_value (icon_view->priv->vadjustment)) && + (item_area->x <= + (int) (gtk_adjustment_get_value (icon_view->priv->hadjustment) + + gtk_adjustment_get_page_size (icon_view->priv->hadjustment))) && + (item_area->y <= + (int) (gtk_adjustment_get_value (icon_view->priv->vadjustment) + + gtk_adjustment_get_page_size (icon_view->priv->vadjustment)))) { if (start_index == -1) start_index = item->index; @@ -5445,7 +4746,9 @@ gtk_icon_view_set_model (GtkIconView *icon_view, icon_view->priv->scroll_to_path = NULL; } - gtk_icon_view_stop_editing (icon_view, TRUE); + /* The area can be NULL while disposing */ + if (icon_view->priv->cell_area) + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); if (model) { @@ -5560,69 +4863,45 @@ gtk_icon_view_get_model (GtkIconView *icon_view) static void update_text_cell (GtkIconView *icon_view) { - GtkIconViewCellInfo *info; - GList *l; - gint i; - if (icon_view->priv->text_column == -1 && icon_view->priv->markup_column == -1) { - if (icon_view->priv->text_cell != -1) + if (icon_view->priv->text_cell != NULL) { - if (icon_view->priv->pixbuf_cell > icon_view->priv->text_cell) - icon_view->priv->pixbuf_cell--; - - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->text_cell); - - icon_view->priv->cell_list = g_list_remove (icon_view->priv->cell_list, info); - - free_cell_info (info); - - icon_view->priv->n_cells--; - icon_view->priv->text_cell = -1; + gtk_cell_area_remove (icon_view->priv->cell_area, + icon_view->priv->text_cell); + icon_view->priv->text_cell = NULL; } } else { - if (icon_view->priv->text_cell == -1) + if (icon_view->priv->text_cell == NULL) { - GtkCellRenderer *cell = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (icon_view), cell, FALSE); - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - info = l->data; - if (info->cell == cell) - { - icon_view->priv->text_cell = i; - break; - } - } + icon_view->priv->text_cell = gtk_cell_renderer_text_new (); + + gtk_cell_layout_pack_end (GTK_CELL_LAYOUT (icon_view), icon_view->priv->text_cell, FALSE); } - - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->text_cell); if (icon_view->priv->markup_column != -1) gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), - info->cell, + icon_view->priv->text_cell, "markup", icon_view->priv->markup_column, NULL); else gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), - info->cell, + icon_view->priv->text_cell, "text", icon_view->priv->text_column, NULL); if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL) - g_object_set (info->cell, + g_object_set (icon_view->priv->text_cell, "alignment", PANGO_ALIGN_CENTER, "wrap-mode", PANGO_WRAP_WORD_CHAR, "xalign", 0.5, "yalign", 0.0, NULL); else - g_object_set (info->cell, + g_object_set (icon_view->priv->text_cell, "alignment", PANGO_ALIGN_LEFT, "wrap-mode", PANGO_WRAP_WORD_CHAR, "xalign", 0.0, @@ -5634,64 +4913,40 @@ update_text_cell (GtkIconView *icon_view) static void update_pixbuf_cell (GtkIconView *icon_view) { - GtkIconViewCellInfo *info; - GList *l; - gint i; - if (icon_view->priv->pixbuf_column == -1) { - if (icon_view->priv->pixbuf_cell != -1) + if (icon_view->priv->pixbuf_cell != NULL) { - if (icon_view->priv->text_cell > icon_view->priv->pixbuf_cell) - icon_view->priv->text_cell--; + gtk_cell_area_remove (icon_view->priv->cell_area, + icon_view->priv->pixbuf_cell); - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->pixbuf_cell); - - icon_view->priv->cell_list = g_list_remove (icon_view->priv->cell_list, info); - - free_cell_info (info); - - icon_view->priv->n_cells--; - icon_view->priv->pixbuf_cell = -1; + icon_view->priv->pixbuf_cell = NULL; } } else { - if (icon_view->priv->pixbuf_cell == -1) + if (icon_view->priv->pixbuf_cell == NULL) { - GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new (); + icon_view->priv->pixbuf_cell = gtk_cell_renderer_pixbuf_new (); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), cell, FALSE); - for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++) - { - info = l->data; - if (info->cell == cell) - { - icon_view->priv->pixbuf_cell = i; - break; - } - } + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), icon_view->priv->pixbuf_cell, FALSE); } - info = g_list_nth_data (icon_view->priv->cell_list, - icon_view->priv->pixbuf_cell); - - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), - info->cell, - "pixbuf", icon_view->priv->pixbuf_column, - NULL); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), + icon_view->priv->pixbuf_cell, + "pixbuf", icon_view->priv->pixbuf_column, + NULL); - if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL) - g_object_set (info->cell, - "xalign", 0.5, - "yalign", 1.0, - NULL); - else - g_object_set (info->cell, - "xalign", 0.0, - "yalign", 0.0, - NULL); + if (icon_view->priv->item_orientation == GTK_ORIENTATION_VERTICAL) + g_object_set (icon_view->priv->pixbuf_cell, + "xalign", 0.5, + "yalign", 1.0, + NULL); + else + g_object_set (icon_view->priv->pixbuf_cell, + "xalign", 0.0, + "yalign", 0.0, + NULL); } } @@ -5728,12 +4983,12 @@ gtk_icon_view_set_text_column (GtkIconView *icon_view, icon_view->priv->text_column = column; } - gtk_icon_view_stop_editing (icon_view, TRUE); + + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); update_text_cell (icon_view); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "text-column"); } @@ -5791,12 +5046,11 @@ gtk_icon_view_set_markup_column (GtkIconView *icon_view, icon_view->priv->markup_column = column; } - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); update_text_cell (icon_view); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "markup-column"); } @@ -5852,12 +5106,11 @@ gtk_icon_view_set_pixbuf_column (GtkIconView *icon_view, icon_view->priv->pixbuf_column = column; } - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); update_pixbuf_cell (icon_view); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "pixbuf-column"); @@ -6170,9 +5423,12 @@ gtk_icon_view_set_item_orientation (GtkIconView *icon_view, { icon_view->priv->item_orientation = orientation; - gtk_icon_view_stop_editing (icon_view, TRUE); + if (GTK_IS_ORIENTABLE (icon_view->priv->cell_area)) + gtk_orientable_set_orientation (GTK_ORIENTABLE (icon_view->priv->cell_area), + icon_view->priv->item_orientation); + + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); update_text_cell (icon_view); update_pixbuf_cell (icon_view); @@ -6223,7 +5479,7 @@ gtk_icon_view_set_columns (GtkIconView *icon_view, { icon_view->priv->columns = columns; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "columns"); @@ -6269,9 +5525,8 @@ gtk_icon_view_set_item_width (GtkIconView *icon_view, { icon_view->priv->item_width = item_width; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); update_text_cell (icon_view); @@ -6319,9 +5574,8 @@ gtk_icon_view_set_spacing (GtkIconView *icon_view, { icon_view->priv->spacing = spacing; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "spacing"); } @@ -6365,9 +5619,8 @@ gtk_icon_view_set_row_spacing (GtkIconView *icon_view, { icon_view->priv->row_spacing = row_spacing; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "row-spacing"); } @@ -6411,9 +5664,8 @@ gtk_icon_view_set_column_spacing (GtkIconView *icon_view, { icon_view->priv->column_spacing = column_spacing; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "column-spacing"); } @@ -6458,9 +5710,8 @@ gtk_icon_view_set_margin (GtkIconView *icon_view, { icon_view->priv->margin = margin; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "margin"); } @@ -6504,9 +5755,8 @@ gtk_icon_view_set_item_padding (GtkIconView *icon_view, { icon_view->priv->item_padding = item_padding; - gtk_icon_view_stop_editing (icon_view, TRUE); + gtk_cell_area_stop_editing (icon_view->priv->cell_area, TRUE); gtk_icon_view_invalidate_sizes (icon_view); - gtk_icon_view_queue_layout (icon_view); g_object_notify (G_OBJECT (icon_view), "item-padding"); } @@ -6704,7 +5954,7 @@ gtk_icon_view_autoscroll (GtkIconView *icon_view) window = gtk_widget_get_window (GTK_WIDGET (icon_view)); gdk_window_get_pointer (window, &px, &py, NULL); - gdk_window_get_geometry (window, &x, &y, &width, &height, NULL); + gdk_window_get_geometry (window, &x, &y, &width, &height); /* see if we are near the edge. */ voffset = py - (y + 2 * SCROLL_EDGE_SIZE); @@ -6717,11 +5967,11 @@ gtk_icon_view_autoscroll (GtkIconView *icon_view) if (voffset != 0) gtk_adjustment_set_value (icon_view->priv->vadjustment, - icon_view->priv->vadjustment->value + voffset); + gtk_adjustment_get_value (icon_view->priv->vadjustment) + voffset); if (hoffset != 0) gtk_adjustment_set_value (icon_view->priv->hadjustment, - icon_view->priv->hadjustment->value + hoffset); + gtk_adjustment_get_value (icon_view->priv->hadjustment) + hoffset); } @@ -6825,7 +6075,7 @@ out: { GtkWidget *source_widget; - *suggested_action = context->suggested_action; + *suggested_action = gdk_drag_context_get_suggested_action (context); source_widget = gtk_drag_get_source_widget (context); if (source_widget == widget) @@ -6833,7 +6083,7 @@ out: /* Default to MOVE, unless the user has * pressed ctrl or shift to affect available actions */ - if ((context->actions & GDK_ACTION_MOVE) != 0) + if ((gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0) *suggested_action = GDK_ACTION_MOVE; } @@ -6979,8 +6229,8 @@ gtk_icon_view_drag_begin (GtkWidget *widget, g_return_if_fail (item != NULL); - x = icon_view->priv->press_start_x - item->x + 1; - y = icon_view->priv->press_start_y - item->y + 1; + x = icon_view->priv->press_start_x - item->cell_area.x + 1; + y = icon_view->priv->press_start_y - item->cell_area.y + 1; path = gtk_tree_path_new_from_indices (item->index, -1); icon = gtk_icon_view_create_drag_icon (icon_view, path); @@ -7037,7 +6287,7 @@ gtk_icon_view_drag_data_get (GtkWidget *widget, goto done; /* If drag_data_get does nothing, try providing row data. */ - if (selection_data->target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) + if (gtk_selection_data_get_target (selection_data) == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) gtk_tree_set_row_drag_data (selection_data, model, source_row); @@ -7274,7 +6524,7 @@ gtk_icon_view_drag_data_received (GtkWidget *widget, if (dest_row == NULL) return; - if (selection_data->length >= 0) + if (gtk_selection_data_get_length (selection_data) >= 0) { if (gtk_tree_drag_dest_drag_data_received (GTK_TREE_DRAG_DEST (model), dest_row, @@ -7284,7 +6534,7 @@ gtk_icon_view_drag_data_received (GtkWidget *widget, gtk_drag_finish (context, accepted, - (context->action == GDK_ACTION_MOVE), + (gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE), time); gtk_tree_path_free (dest_row); @@ -7298,7 +6548,8 @@ gtk_icon_view_drag_data_received (GtkWidget *widget, * gtk_icon_view_enable_model_drag_source: * @icon_view: a #GtkIconTreeView * @start_button_mask: Mask of allowed buttons to start drag - * @targets: the table of targets that the drag will support + * @targets: (array length=n_targets): the table of targets that the drag will + * support * @n_targets: the number of items in @targets * @actions: the bitmask of possible actions for a drag from this * widget @@ -7330,7 +6581,8 @@ gtk_icon_view_enable_model_drag_source (GtkIconView *icon_view, /** * gtk_icon_view_enable_model_drag_dest: * @icon_view: a #GtkIconView - * @targets: the table of targets that the drag will support + * @targets: (array length=n_targets): the table of targets that the drag will + * support * @n_targets: the number of items in @targets * @actions: the bitmask of possible actions for a drag to this * widget @@ -7466,8 +6718,8 @@ gtk_icon_view_set_drag_dest_item (GtkIconView *icon_view, /** * gtk_icon_view_get_drag_dest_item: * @icon_view: a #GtkIconView - * @path: (allow-none): Return location for the path of the highlighted item, or %NULL. - * @pos: (allow-none): Return location for the drop position, or %NULL + * @path: (allow-none) (out): Return location for the path of the highlighted item, or %NULL. + * @pos: (allow-none) (out): Return location for the drop position, or %NULL * * Gets information about the item that is highlighted for feedback. * @@ -7497,8 +6749,8 @@ gtk_icon_view_get_drag_dest_item (GtkIconView *icon_view, * @icon_view: a #GtkIconView * @drag_x: the position to determine the destination item for * @drag_y: the position to determine the destination item for - * @path: (allow-none): Return location for the path of the item, or %NULL. - * @pos: (allow-none): Return location for the drop position, or %NULL + * @path: (allow-none) (out): Return location for the path of the item, or %NULL. + * @pos: (allow-none) (out): Return location for the drop position, or %NULL * * Determines the destination item for a given position. * @@ -7529,8 +6781,8 @@ gtk_icon_view_get_dest_item_at_pos (GtkIconView *icon_view, *path = NULL; item = gtk_icon_view_get_item_at_coords (icon_view, - drag_x + icon_view->priv->hadjustment->value, - drag_y + icon_view->priv->vadjustment->value, + drag_x + gtk_adjustment_get_value (icon_view->priv->hadjustment), + drag_y + gtk_adjustment_get_value (icon_view->priv->vadjustment), FALSE, NULL); if (item == NULL) @@ -7541,13 +6793,13 @@ gtk_icon_view_get_dest_item_at_pos (GtkIconView *icon_view, if (pos) { - if (drag_x < item->x + item->width / 4) + if (drag_x < item->cell_area.x + item->cell_area.width / 4) *pos = GTK_ICON_VIEW_DROP_LEFT; - else if (drag_x > item->x + item->width * 3 / 4) + else if (drag_x > item->cell_area.x + item->cell_area.width * 3 / 4) *pos = GTK_ICON_VIEW_DROP_RIGHT; - else if (drag_y < item->y + item->height / 4) + else if (drag_y < item->cell_area.y + item->cell_area.height / 4) *pos = GTK_ICON_VIEW_DROP_ABOVE; - else if (drag_y > item->y + item->height * 3 / 4) + else if (drag_y > item->cell_area.y + item->cell_area.height * 3 / 4) *pos = GTK_ICON_VIEW_DROP_BELOW; else *pos = GTK_ICON_VIEW_DROP_INTO; @@ -7594,29 +6846,38 @@ gtk_icon_view_create_drag_icon (GtkIconView *icon_view, if (index == item->index) { + GdkRectangle rect = { + item->cell_area.x - icon_view->priv->item_padding, + item->cell_area.y - icon_view->priv->item_padding, + item->cell_area.width + icon_view->priv->item_padding * 2, + item->cell_area.height + icon_view->priv->item_padding * 2 + }; + surface = gdk_window_create_similar_surface (icon_view->priv->bin_window, CAIRO_CONTENT_COLOR, - item->width + 2, - item->height + 2); + rect.width + 2, + rect.height + 2); cr = cairo_create (surface); cairo_set_line_width (cr, 1.); gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->base[gtk_widget_get_state (widget)]); - cairo_rectangle (cr, 0, 0, item->width + 2, item->height + 2); + cairo_rectangle (cr, 0, 0, rect.width + 2, rect.height + 2); cairo_fill (cr); cairo_save (cr); - cairo_rectangle (cr, 0, 0, item->width, item->height); + cairo_rectangle (cr, 1, 1, rect.width, rect.height); cairo_clip (cr); - gtk_icon_view_paint_item (icon_view, cr, item, 1, 1, FALSE); + gtk_icon_view_paint_item (icon_view, cr, item, + icon_view->priv->item_padding + 1, + icon_view->priv->item_padding + 1, FALSE); cairo_restore (cr); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */ - cairo_rectangle (cr, 0.5, 0.5, item->width + 1, item->height + 1); + cairo_rectangle (cr, 0.5, 0.5, rect.width + 1, rect.height + 1); cairo_stroke (cr); cairo_destroy (cr); @@ -7900,25 +7161,54 @@ gtk_icon_view_item_accessible_image_set_image_description (AtkImage *image, return TRUE; } +typedef struct { + GdkRectangle box; + gboolean pixbuf_found; +} GetPixbufBoxData; + +static gboolean +get_pixbuf_foreach (GtkCellRenderer *renderer, + const GdkRectangle *cell_area, + const GdkRectangle *cell_background, + GetPixbufBoxData *data) +{ + if (GTK_IS_CELL_RENDERER_PIXBUF (renderer)) + { + data->box = *cell_area; + data->pixbuf_found = TRUE; + } + return (data->pixbuf_found != FALSE); +} + static gboolean get_pixbuf_box (GtkIconView *icon_view, GtkIconViewItem *item, GdkRectangle *box) { - GList *l; + GetPixbufBoxData data = { { 0, }, FALSE }; + GtkCellAreaContext *context; - for (l = icon_view->priv->cell_list; l; l = l->next) + context = g_ptr_array_index (icon_view->priv->row_contexts, item->row); + + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_foreach_alloc (icon_view->priv->cell_area, context, + GTK_WIDGET (icon_view), + (GdkRectangle *)item, (GdkRectangle *)item, + (GtkCellAllocCallback)get_pixbuf_foreach, &data); + + return data.pixbuf_found; +} + +static gboolean +get_text_foreach (GtkCellRenderer *renderer, + gchar **text) +{ + if (GTK_IS_CELL_RENDERER_TEXT (renderer)) { - GtkIconViewCellInfo *info = l->data; - - if (GTK_IS_CELL_RENDERER_PIXBUF (info->cell)) - { - gtk_icon_view_get_cell_box (icon_view, item, info, box); + g_object_get (renderer, "text", text, NULL); - return TRUE; - } + return TRUE; } - return FALSE; } @@ -7926,22 +7216,13 @@ static gchar * get_text (GtkIconView *icon_view, GtkIconViewItem *item) { - GList *l; - gchar *text; + gchar *text = NULL; - for (l = icon_view->priv->cell_list; l; l = l->next) - { - GtkIconViewCellInfo *info = l->data; - - if (GTK_IS_CELL_RENDERER_TEXT (info->cell)) - { - g_object_get (info->cell, "text", &text, NULL); - - return text; - } - } + gtk_icon_view_set_cell_data (icon_view, item); + gtk_cell_area_foreach (icon_view->priv->cell_area, + (GtkCellCallback)get_text_foreach, &text); - return NULL; + return text; } static void @@ -7988,8 +7269,8 @@ gtk_icon_view_item_accessible_image_get_image_position (AtkImage *image, if (get_pixbuf_box (GTK_ICON_VIEW (item->widget), item->item, &box)) { - *x+= box.x - item->item->x; - *y+= box.y - item->item->y; + *x+= box.x - item->item->cell_area.x; + *y+= box.y - item->item->cell_area.y; } } @@ -8663,14 +7944,14 @@ gtk_icon_view_item_accessible_get_extents (AtkComponent *component, if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; - *width = item->item->width; - *height = item->item->height; + *width = item->item->cell_area.width; + *height = item->item->cell_area.height; if (gtk_icon_view_item_accessible_is_showing (item)) { parent_obj = gtk_widget_get_accessible (item->widget); atk_component_get_position (ATK_COMPONENT (parent_obj), &l_x, &l_y, coord_type); - *x = l_x + item->item->x; - *y = l_y + item->item->y; + *x = l_x + item->item->cell_area.x; + *y = l_y + item->item->cell_area.y; } else { @@ -8692,7 +7973,7 @@ gtk_icon_view_item_accessible_grab_focus (AtkComponent *component) return FALSE; gtk_widget_grab_focus (item->widget); - gtk_icon_view_set_cursor_item (GTK_ICON_VIEW (item->widget), item->item, -1); + gtk_icon_view_set_cursor_item (GTK_ICON_VIEW (item->widget), item->item, NULL); toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item->widget)); if (gtk_widget_is_toplevel (toplevel)) gtk_window_present (GTK_WINDOW (toplevel)); @@ -8786,17 +8067,17 @@ gtk_icon_view_item_accessible_is_showing (GtkIconViewItemAccessible *item) icon_view = GTK_ICON_VIEW (item->widget); visible_rect.x = 0; if (icon_view->priv->hadjustment) - visible_rect.x += icon_view->priv->hadjustment->value; + visible_rect.x += gtk_adjustment_get_value (icon_view->priv->hadjustment); visible_rect.y = 0; if (icon_view->priv->hadjustment) - visible_rect.y += icon_view->priv->vadjustment->value; + visible_rect.y += gtk_adjustment_get_value (icon_view->priv->vadjustment); visible_rect.width = allocation.width; visible_rect.height = allocation.height; - if (((item->item->x + item->item->width) < visible_rect.x) || - ((item->item->y + item->item->height) < (visible_rect.y)) || - (item->item->x > (visible_rect.x + visible_rect.width)) || - (item->item->y > (visible_rect.y + visible_rect.height))) + if (((item->item->cell_area.x + item->item->cell_area.width) < visible_rect.x) || + ((item->item->cell_area.y + item->item->cell_area.height) < (visible_rect.y)) || + (item->item->cell_area.x > (visible_rect.x + visible_rect.width)) || + (item->item->cell_area.y > (visible_rect.y + visible_rect.height))) is_showing = FALSE; else is_showing = TRUE; @@ -9154,7 +8435,6 @@ gtk_icon_view_accessible_ref_child (AtkObject *accessible, a11y_item->widget = widget; a11y_item->text_buffer = gtk_text_buffer_new (NULL); - gtk_icon_view_set_cell_data (icon_view, item); text = get_text (icon_view, item); if (text) { @@ -9297,7 +8577,6 @@ gtk_icon_view_accessible_model_row_changed (GtkTreeModel *tree_model, if (!name || strcmp (name, "") == 0) { - gtk_icon_view_set_cell_data (icon_view, item); text = get_text (icon_view, item); if (text) { @@ -10061,10 +9340,8 @@ gtk_icon_view_buildable_custom_tag_end (GtkBuildable *buildable, const gchar *tagname, gpointer *data) { - if (strcmp (tagname, "attributes") == 0) - _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, - data); - else + if (!_gtk_cell_layout_buildable_custom_tag_end (buildable, builder, + child, tagname, data)) parent_buildable_iface->custom_tag_end (buildable, builder, child, tagname, data); } diff --git a/gtk/gtkiconview.h b/gtk/gtkiconview.h index cf769b6d59..bac6218046 100644 --- a/gtk/gtkiconview.h +++ b/gtk/gtkiconview.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -112,6 +113,7 @@ struct _GtkIconViewClass GType gtk_icon_view_get_type (void) G_GNUC_CONST; GtkWidget * gtk_icon_view_new (void); +GtkWidget * gtk_icon_view_new_with_area (GtkCellArea *area); GtkWidget * gtk_icon_view_new_with_model (GtkTreeModel *model); void gtk_icon_view_set_model (GtkIconView *icon_view, diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index 184451ef23..473bb3ade9 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -25,6 +25,7 @@ */ #include "config.h" + #include #include @@ -36,6 +37,7 @@ #include "gtksizerequest.h" #include "gtkintl.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" /** * SECTION:gtkimage @@ -145,12 +147,13 @@ struct _GtkImagePrivate gboolean was_symbolic; gchar *filename; /* Only used with GTK_IMAGE_ANIMATION, GTK_IMAGE_PIXBUF */ - gint last_rendered_state; /* a GtkStateType, with -1 meaning an invalid state, + gint last_rendered_state; /* a GtkStateFlags, with -1 meaning an invalid state, * only used with GTK_IMAGE_GICON, GTK_IMAGE_ICON_NAME */ gint pixel_size; - guint need_calc_size : 1; gint required_width; gint required_height; + guint need_calc_size : 1; + guint use_fallback : 1; }; @@ -166,8 +169,7 @@ static void gtk_image_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural); -static void gtk_image_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_image_style_updated (GtkWidget *widget); static void gtk_image_screen_changed (GtkWidget *widget, GdkScreen *prev_screen); static void gtk_image_destroy (GtkWidget *widget); @@ -201,7 +203,8 @@ enum PROP_PIXBUF_ANIMATION, PROP_ICON_NAME, PROP_STORAGE_TYPE, - PROP_GICON + PROP_GICON, + PROP_USE_FALLBACK }; G_DEFINE_TYPE (GtkImage, gtk_image, GTK_TYPE_MISC) @@ -224,7 +227,7 @@ gtk_image_class_init (GtkImageClass *class) widget_class->get_preferred_height = gtk_image_get_preferred_height; widget_class->unmap = gtk_image_unmap; widget_class->unrealize = gtk_image_unrealize; - widget_class->style_set = gtk_image_style_set; + widget_class->style_updated = gtk_image_style_updated; widget_class->screen_changed = gtk_image_screen_changed; g_object_class_install_property (gobject_class, @@ -336,6 +339,24 @@ gtk_image_class_init (GtkImageClass *class) GTK_IMAGE_EMPTY, GTK_PARAM_READABLE)); + /** + * GtkImage:use-fallback: + * + * Whether the icon displayed in the GtkImage will use + * standard icon names fallback. The value of this property + * is only relevant for images of type %GTK_IMAGE_ICON_NAME + * and %GTK_IMAGE_GICON. + * + * Since: 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_USE_FALLBACK, + g_param_spec_boolean ("use-fallback", + P_("Use Fallback"), + P_("Whether to use icon names fallback"), + FALSE, + GTK_PARAM_READWRITE)); + g_type_class_add_private (class, sizeof (GtkImagePrivate)); } @@ -432,6 +453,18 @@ gtk_image_set_property (GObject *object, priv->icon_size); break; + case PROP_USE_FALLBACK: + priv->use_fallback = g_value_get_boolean (value); + if (priv->storage_type == GTK_IMAGE_ICON_NAME) + gtk_image_set_from_icon_name (image, + priv->data.name.icon_name, + priv->icon_size); + else if (priv->storage_type == GTK_IMAGE_GICON) + gtk_image_set_from_gicon (image, + priv->data.gicon.icon, + priv->icon_size); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -509,6 +542,10 @@ gtk_image_get_property (GObject *object, case PROP_STORAGE_TYPE: g_value_set_enum (value, priv->storage_type); break; + + case PROP_USE_FALLBACK: + g_value_set_boolean (value, priv->use_fallback); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -519,7 +556,7 @@ gtk_image_get_property (GObject *object, /** * gtk_image_new_from_file: - * @filename: a filename + * @filename: (type filename): a filename * * Creates a new #GtkImage displaying the file @filename. If the file * isn't found or can't be loaded, the resulting #GtkImage will @@ -725,7 +762,7 @@ gtk_image_new_from_gicon (GIcon *icon, /** * gtk_image_set_from_file: * @image: a #GtkImage - * @filename: (allow-none): a filename or %NULL + * @filename: (type filename) (allow-none): a filename or %NULL * * See gtk_image_new_from_file() for details. **/ @@ -1389,8 +1426,8 @@ icon_theme_changed (GtkImage *image) } static void -ensure_pixbuf_for_icon_name (GtkImage *image, - GtkStateType state) +ensure_pixbuf_for_icon_name (GtkImage *image, + GtkStateFlags state) { GtkImagePrivate *priv = image->priv; GdkScreen *screen; @@ -1407,6 +1444,8 @@ ensure_pixbuf_for_icon_name (GtkImage *image, icon_theme = gtk_icon_theme_get_for_screen (screen); settings = gtk_settings_get_for_screen (screen); flags = GTK_ICON_LOOKUP_USE_BUILTIN; + if (priv->use_fallback) + flags |= GTK_ICON_LOOKUP_GENERIC_FALLBACK; if (priv->data.name.pixbuf == NULL || (priv->was_symbolic && priv->last_rendered_state != state)) { @@ -1485,18 +1524,17 @@ ensure_pixbuf_for_icon_name (GtkImage *image, if (priv->data.name.pixbuf == NULL) { priv->data.name.pixbuf = - gtk_widget_render_icon (GTK_WIDGET (image), - GTK_STOCK_MISSING_IMAGE, - priv->icon_size, - NULL); + gtk_widget_render_icon_pixbuf (GTK_WIDGET (image), + GTK_STOCK_MISSING_IMAGE, + priv->icon_size); priv->was_symbolic = FALSE; } } } static void -ensure_pixbuf_for_gicon (GtkImage *image, - GtkStateType state) +ensure_pixbuf_for_gicon (GtkImage *image, + GtkStateFlags state) { GtkImagePrivate *priv = image->priv; GdkScreen *screen; @@ -1512,6 +1550,8 @@ ensure_pixbuf_for_gicon (GtkImage *image, icon_theme = gtk_icon_theme_get_for_screen (screen); settings = gtk_settings_get_for_screen (screen); flags = GTK_ICON_LOOKUP_USE_BUILTIN; + if (priv->use_fallback) + flags |= GTK_ICON_LOOKUP_GENERIC_FALLBACK; if (priv->data.gicon.pixbuf == NULL || (priv->was_symbolic && priv->last_rendered_state != state)) { @@ -1560,10 +1600,9 @@ ensure_pixbuf_for_gicon (GtkImage *image, if (priv->data.gicon.pixbuf == NULL) { priv->data.gicon.pixbuf = - gtk_widget_render_icon (GTK_WIDGET (image), - GTK_STOCK_MISSING_IMAGE, - priv->icon_size, - NULL); + gtk_widget_render_icon_pixbuf (GTK_WIDGET (image), + GTK_STOCK_MISSING_IMAGE, + priv->icon_size); priv->was_symbolic = FALSE; } } @@ -1588,10 +1627,16 @@ gtk_image_draw (GtkWidget *widget, gint xpad, ypad; gfloat xalign, yalign; GdkPixbuf *pixbuf; - GtkStateType state; + GtkStateFlags state; gboolean needs_state_transform; + GtkStyleContext *context; misc = GTK_MISC (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); /* For stock items and icon sets, we lazily calculate * the size; we might get here between a queue_resize() @@ -1609,9 +1654,9 @@ gtk_image_draw (GtkWidget *widget, x = floor (xpad + ((gtk_widget_get_allocated_width (widget) - priv->required_width) * xalign)); y = floor (ypad + ((gtk_widget_get_allocated_height (widget) - priv->required_height) * yalign)); - - needs_state_transform = gtk_widget_get_state (widget) != GTK_STATE_NORMAL; - + + needs_state_transform = state != 0; + switch (priv->storage_type) { @@ -1621,10 +1666,9 @@ gtk_image_draw (GtkWidget *widget, break; case GTK_IMAGE_STOCK: - pixbuf = gtk_widget_render_icon (widget, - priv->data.stock.stock_id, - priv->icon_size, - NULL); + pixbuf = gtk_widget_render_icon_pixbuf (widget, + priv->data.stock.stock_id, + priv->icon_size); /* already done */ needs_state_transform = FALSE; @@ -1632,13 +1676,8 @@ gtk_image_draw (GtkWidget *widget, case GTK_IMAGE_ICON_SET: pixbuf = - gtk_icon_set_render_icon (priv->data.icon_set.icon_set, - gtk_widget_get_style (widget), - gtk_widget_get_direction (widget), - gtk_widget_get_state (widget), - priv->icon_size, - widget, - NULL); + gtk_icon_set_render_icon_pixbuf (priv->data.icon_set.icon_set, + context, priv->icon_size); /* already done */ needs_state_transform = FALSE; @@ -1667,10 +1706,9 @@ gtk_image_draw (GtkWidget *widget, break; case GTK_IMAGE_ICON_NAME: - state = gtk_widget_get_state (widget); - if (state == GTK_STATE_INSENSITIVE) + if (state & GTK_STATE_FLAG_INSENSITIVE) { - ensure_pixbuf_for_icon_name (image, GTK_STATE_NORMAL); + ensure_pixbuf_for_icon_name (image, 0); } else { @@ -1687,10 +1725,9 @@ gtk_image_draw (GtkWidget *widget, break; case GTK_IMAGE_GICON: - state = gtk_widget_get_state (widget); - if (state == GTK_STATE_INSENSITIVE) + if (state & GTK_STATE_FLAG_INSENSITIVE) { - ensure_pixbuf_for_gicon (image, GTK_STATE_NORMAL); + ensure_pixbuf_for_gicon (image, 0); } else { @@ -1729,16 +1766,8 @@ gtk_image_draw (GtkWidget *widget, gtk_icon_source_set_size (source, GTK_ICON_SIZE_SMALL_TOOLBAR); gtk_icon_source_set_size_wildcarded (source, FALSE); - - rendered = gtk_style_render_icon (gtk_widget_get_style (widget), - source, - gtk_widget_get_direction (widget), - gtk_widget_get_state (widget), - /* arbitrary */ - (GtkIconSize)-1, - widget, - "gtk-image"); + rendered = gtk_render_icon_pixbuf (context, source, (GtkIconSize) -1); gtk_icon_source_free (source); g_object_unref (pixbuf); @@ -1750,6 +1779,8 @@ gtk_image_draw (GtkWidget *widget, g_object_unref (pixbuf); } + + gtk_style_context_restore (context); } return FALSE; @@ -1879,8 +1910,15 @@ gtk_image_calc_size (GtkImage *image) GtkWidget *widget = GTK_WIDGET (image); GtkImagePrivate *priv = image->priv; GdkPixbuf *pixbuf = NULL; + GtkStyleContext *context; + GtkStateFlags state; priv->need_calc_size = 0; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); /* We update stock/icon set on every size request, because * the theme could have affected the size; for other kinds of @@ -1890,28 +1928,22 @@ gtk_image_calc_size (GtkImage *image) switch (priv->storage_type) { case GTK_IMAGE_STOCK: - pixbuf = gtk_widget_render_icon (widget, - priv->data.stock.stock_id, - priv->icon_size, - NULL); + pixbuf = gtk_widget_render_icon_pixbuf (widget, + priv->data.stock.stock_id, + priv->icon_size); break; case GTK_IMAGE_ICON_SET: - pixbuf = gtk_icon_set_render_icon (priv->data.icon_set.icon_set, - gtk_widget_get_style (widget), - gtk_widget_get_direction (widget), - gtk_widget_get_state (widget), - priv->icon_size, - widget, - NULL); + pixbuf = gtk_icon_set_render_icon_pixbuf (priv->data.icon_set.icon_set, + context, priv->icon_size); break; case GTK_IMAGE_ICON_NAME: - ensure_pixbuf_for_icon_name (image, GTK_STATE_NORMAL); + ensure_pixbuf_for_icon_name (image, 0); pixbuf = priv->data.name.pixbuf; if (pixbuf) g_object_ref (pixbuf); break; case GTK_IMAGE_GICON: - ensure_pixbuf_for_gicon (image, GTK_STATE_NORMAL); + ensure_pixbuf_for_gicon (image, 0); pixbuf = priv->data.gicon.pixbuf; if (pixbuf) g_object_ref (pixbuf); @@ -1931,6 +1963,8 @@ gtk_image_calc_size (GtkImage *image) g_object_unref (pixbuf); } + + gtk_style_context_restore (context); } static void @@ -1966,14 +2000,13 @@ gtk_image_get_preferred_height (GtkWidget *widget, } static void -gtk_image_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_image_style_updated (GtkWidget *widget) { GtkImage *image; image = GTK_IMAGE (widget); - GTK_WIDGET_CLASS (gtk_image_parent_class)->style_set (widget, prev_style); + GTK_WIDGET_CLASS (gtk_image_parent_class)->style_updated (widget); icon_theme_changed (image); } diff --git a/gtk/gtkimagemenuitem.c b/gtk/gtkimagemenuitem.c index 520972570c..6d3a2d7119 100644 --- a/gtk/gtkimagemenuitem.c +++ b/gtk/gtkimagemenuitem.c @@ -28,6 +28,7 @@ #include "gtkimagemenuitem.h" +#include "gtkmenuitemprivate.h" #include "gtkaccellabel.h" #include "gtkstock.h" #include "gtkiconfactory.h" @@ -64,55 +65,55 @@ static GtkActivatableIface *parent_activatable_iface; static void gtk_image_menu_item_destroy (GtkWidget *widget); static void gtk_image_menu_item_get_preferred_width (GtkWidget *widget, gint *minimum, - gint *natural); + gint *natural); static void gtk_image_menu_item_get_preferred_height (GtkWidget *widget, gint *minimum, - gint *natural); + gint *natural); static void gtk_image_menu_item_get_preferred_height_for_width (GtkWidget *widget, - gint width, - gint *minimum, - gint *natural); + gint width, + gint *minimum, + gint *natural); static void gtk_image_menu_item_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gtk_image_menu_item_map (GtkWidget *widget); static void gtk_image_menu_item_remove (GtkContainer *container, GtkWidget *child); static void gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition); + gint *requisition); static void gtk_image_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label); + const gchar *label); static G_CONST_RETURN gchar *gtk_image_menu_item_get_label (GtkMenuItem *menu_item); static void gtk_image_menu_item_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); static void gtk_image_menu_item_finalize (GObject *object); static void gtk_image_menu_item_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_image_menu_item_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_image_menu_item_screen_changed (GtkWidget *widget, - GdkScreen *previous_screen); + GdkScreen *previous_screen); static void gtk_image_menu_item_recalculate (GtkImageMenuItem *image_menu_item); static void gtk_image_menu_item_activatable_interface_init (GtkActivatableIface *iface); static void gtk_image_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name); + GtkAction *action, + const gchar *property_name); static void gtk_image_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action); + GtkAction *action); G_DEFINE_TYPE_WITH_CODE (GtkImageMenuItem, gtk_image_menu_item, GTK_TYPE_MENU_ITEM, - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, - gtk_image_menu_item_activatable_interface_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, + gtk_image_menu_item_activatable_interface_init)) static void @@ -133,7 +134,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass) container_class->forall = gtk_image_menu_item_forall; container_class->remove = gtk_image_menu_item_remove; - + menu_item_class->toggle_size_request = gtk_image_menu_item_toggle_size_request; menu_item_class->set_label = gtk_image_menu_item_set_label; menu_item_class->get_label = gtk_image_menu_item_get_label; @@ -141,7 +142,7 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass) gobject_class->finalize = gtk_image_menu_item_finalize; gobject_class->set_property = gtk_image_menu_item_set_property; gobject_class->get_property = gtk_image_menu_item_get_property; - + g_object_class_install_property (gobject_class, PROP_IMAGE, g_param_spec_object ("image", @@ -156,33 +157,33 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass) * stock id to select the stock item for the item. * * Since: 2.16 - **/ + */ g_object_class_install_property (gobject_class, PROP_USE_STOCK, g_param_spec_boolean ("use-stock", - P_("Use stock"), - P_("Whether to use the label text to create a stock menu item"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + P_("Use stock"), + P_("Whether to use the label text to create a stock menu item"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * GtkImageMenuItem:always-show-image: * - * If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images + * If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images * setting and always show the image, if available. * * Use this property if the menuitem would be useless or hard to use - * without the image. + * without the image. * * Since: 2.16 - **/ + */ g_object_class_install_property (gobject_class, PROP_ALWAYS_SHOW_IMAGE, g_param_spec_boolean ("always-show-image", - P_("Always show image"), - P_("Whether the image will always be shown"), - FALSE, - GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + P_("Always show image"), + P_("Whether the image will always be shown"), + FALSE, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * GtkImageMenuItem:accel-group: @@ -190,14 +191,14 @@ gtk_image_menu_item_class_init (GtkImageMenuItemClass *klass) * The Accel Group to use for stock accelerator keys * * Since: 2.16 - **/ + */ g_object_class_install_property (gobject_class, PROP_ACCEL_GROUP, g_param_spec_object ("accel-group", - P_("Accel Group"), - P_("The Accel Group to use for stock accelerator keys"), - GTK_TYPE_ACCEL_GROUP, - GTK_PARAM_WRITABLE)); + P_("Accel Group"), + P_("The Accel Group to use for stock accelerator keys"), + GTK_TYPE_ACCEL_GROUP, + GTK_PARAM_WRITABLE)); g_type_class_add_private (klass, sizeof (GtkImageMenuItemPrivate)); } @@ -217,7 +218,7 @@ gtk_image_menu_item_init (GtkImageMenuItem *image_menu_item) priv->label = NULL; } -static void +static void gtk_image_menu_item_finalize (GObject *object) { GtkImageMenuItemPrivate *priv = GTK_IMAGE_MENU_ITEM (object)->priv; @@ -235,7 +236,7 @@ gtk_image_menu_item_set_property (GObject *object, GParamSpec *pspec) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (object); - + switch (prop_id) { case PROP_IMAGE: @@ -263,14 +264,14 @@ gtk_image_menu_item_get_property (GObject *object, GParamSpec *pspec) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (object); - + switch (prop_id) { case PROP_IMAGE: g_value_set_object (value, gtk_image_menu_item_get_image (image_menu_item)); break; case PROP_USE_STOCK: - g_value_set_boolean (value, gtk_image_menu_item_get_use_stock (image_menu_item)); + g_value_set_boolean (value, gtk_image_menu_item_get_use_stock (image_menu_item)); break; case PROP_ALWAYS_SHOW_IMAGE: g_value_set_boolean (value, gtk_image_menu_item_get_always_show_image (image_menu_item)); @@ -325,7 +326,7 @@ gtk_image_menu_item_destroy (GtkWidget *widget) static void gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition) + gint *requisition) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (menu_item); GtkImageMenuItemPrivate *priv = image_menu_item->priv; @@ -350,19 +351,19 @@ gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, gtk_widget_get_preferred_size (priv->image, &image_requisition, NULL); gtk_widget_style_get (GTK_WIDGET (menu_item), - "toggle-spacing", &toggle_spacing, - NULL); - + "toggle-spacing", &toggle_spacing, + NULL); + if (pack_dir == GTK_PACK_DIRECTION_LTR || pack_dir == GTK_PACK_DIRECTION_RTL) - { - if (image_requisition.width > 0) - *requisition = image_requisition.width + toggle_spacing; - } + { + if (image_requisition.width > 0) + *requisition = image_requisition.width + toggle_spacing; + } else - { - if (image_requisition.height > 0) - *requisition = image_requisition.height + toggle_spacing; - } + { + if (image_requisition.height > 0) + *requisition = image_requisition.height + toggle_spacing; + } } } @@ -378,15 +379,15 @@ gtk_image_menu_item_recalculate (GtkImageMenuItem *image_menu_item) { if (!priv->image) - { - image = gtk_image_new_from_stock (priv->label, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image (image_menu_item, image); - } + { + image = gtk_image_new_from_stock (priv->label, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (image_menu_item, image); + } if (gtk_stock_lookup (priv->label, &stock_item)) - resolved_label = stock_item.label; + resolved_label = stock_item.label; - gtk_menu_item_set_use_underline (GTK_MENU_ITEM (image_menu_item), TRUE); + gtk_menu_item_set_use_underline (GTK_MENU_ITEM (image_menu_item), TRUE); } GTK_MENU_ITEM_CLASS @@ -394,9 +395,9 @@ gtk_image_menu_item_recalculate (GtkImageMenuItem *image_menu_item) } -static void +static void gtk_image_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label) + const gchar *label) { GtkImageMenuItemPrivate *priv = GTK_IMAGE_MENU_ITEM (menu_item)->priv; @@ -422,8 +423,8 @@ gtk_image_menu_item_get_label (GtkMenuItem *menu_item) static void gtk_image_menu_item_get_preferred_width (GtkWidget *widget, - gint *minimum, - gint *natural) + gint *minimum, + gint *natural) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (widget); GtkImageMenuItemPrivate *priv = image_menu_item->priv; @@ -458,8 +459,8 @@ gtk_image_menu_item_get_preferred_width (GtkWidget *widget, static void gtk_image_menu_item_get_preferred_height (GtkWidget *widget, - gint *minimum, - gint *natural) + gint *minimum, + gint *natural) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (widget); GtkImageMenuItemPrivate *priv = image_menu_item->priv; @@ -494,9 +495,9 @@ gtk_image_menu_item_get_preferred_height (GtkWidget *widget, static void gtk_image_menu_item_get_preferred_height_for_width (GtkWidget *widget, - gint width, - gint *minimum, - gint *natural) + gint width, + gint *minimum, + gint *natural) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (widget); GtkImageMenuItemPrivate *priv = image_menu_item->priv; @@ -553,15 +554,20 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, if (priv->image && gtk_widget_get_visible (priv->image)) { gint x, y, offset; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkRequisition child_requisition; GtkAllocation child_allocation; guint horizontal_padding, toggle_spacing; + gint toggle_size; + toggle_size = GTK_MENU_ITEM (image_menu_item)->priv->toggle_size; gtk_widget_style_get (widget, - "horizontal-padding", &horizontal_padding, - "toggle-spacing", &toggle_spacing, - NULL); - + "horizontal-padding", &horizontal_padding, + "toggle-spacing", &toggle_spacing, + NULL); + /* Man this is lame hardcoding action, but I can't * come up with a solution that's really better. */ @@ -570,44 +576,39 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, gtk_widget_get_allocation (widget, &widget_allocation); - if (pack_dir == GTK_PACK_DIRECTION_LTR || - pack_dir == GTK_PACK_DIRECTION_RTL) - { - offset = gtk_container_get_border_width (GTK_CONTAINER (image_menu_item)) + - gtk_widget_get_style (widget)->xthickness; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + offset = gtk_container_get_border_width (GTK_CONTAINER (image_menu_item)); - if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == - (pack_dir == GTK_PACK_DIRECTION_LTR)) - x = offset + horizontal_padding + - (GTK_MENU_ITEM (image_menu_item)->toggle_size - - toggle_spacing - child_requisition.width) / 2; - else - x = widget_allocation.width - offset - horizontal_padding - - GTK_MENU_ITEM (image_menu_item)->toggle_size + toggle_spacing + - (GTK_MENU_ITEM (image_menu_item)->toggle_size - - toggle_spacing - child_requisition.width) / 2; + if (pack_dir == GTK_PACK_DIRECTION_LTR || + pack_dir == GTK_PACK_DIRECTION_RTL) + { + if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == + (pack_dir == GTK_PACK_DIRECTION_LTR)) + x = offset + horizontal_padding + padding.left + + (toggle_size - toggle_spacing - child_requisition.width) / 2; + else + x = widget_allocation.width - offset - horizontal_padding - padding.right - + toggle_size + toggle_spacing + + (toggle_size - toggle_spacing - child_requisition.width) / 2; y = (widget_allocation.height - child_requisition.height) / 2; - } + } else - { - offset = gtk_container_get_border_width (GTK_CONTAINER (image_menu_item)) + - gtk_widget_get_style (widget)->ythickness; - - if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == - (pack_dir == GTK_PACK_DIRECTION_TTB)) - y = offset + horizontal_padding + - (GTK_MENU_ITEM (image_menu_item)->toggle_size - - toggle_spacing - child_requisition.height) / 2; - else - y = widget_allocation.height - offset - horizontal_padding - - GTK_MENU_ITEM (image_menu_item)->toggle_size + toggle_spacing + - (GTK_MENU_ITEM (image_menu_item)->toggle_size - - toggle_spacing - child_requisition.height) / 2; + { + if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == + (pack_dir == GTK_PACK_DIRECTION_TTB)) + y = offset + horizontal_padding + padding.top + + (toggle_size - toggle_spacing - child_requisition.height) / 2; + else + y = widget_allocation.height - offset - horizontal_padding - padding.bottom - + toggle_size + toggle_spacing + + (toggle_size - toggle_spacing - child_requisition.height) / 2; x = (widget_allocation.width - child_requisition.width) / 2; - } - + } + child_allocation.width = child_requisition.width; child_allocation.height = child_requisition.height; child_allocation.x = widget_allocation.x + MAX (x, 0); @@ -619,7 +620,7 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, static void gtk_image_menu_item_forall (GtkContainer *container, - gboolean include_internals, + gboolean include_internals, GtkCallback callback, gpointer callback_data) { @@ -636,7 +637,7 @@ gtk_image_menu_item_forall (GtkContainer *container, } -static void +static void gtk_image_menu_item_activatable_interface_init (GtkActivatableIface *iface) { parent_activatable_iface = g_type_interface_peek_parent (iface); @@ -651,7 +652,7 @@ activatable_update_stock_id (GtkImageMenuItem *image_menu_item, GtkAction *actio const gchar *stock_id = gtk_action_get_stock_id (action); image = gtk_image_menu_item_get_image (image_menu_item); - + if (GTK_IS_IMAGE (image) && stock_id && gtk_icon_factory_lookup_default (stock_id)) { @@ -688,8 +689,8 @@ activatable_update_icon_name (GtkImageMenuItem *image_menu_item, GtkAction *acti const gchar *icon_name = gtk_action_get_icon_name (action); image = gtk_image_menu_item_get_image (image_menu_item); - - if (GTK_IS_IMAGE (image) && + + if (GTK_IS_IMAGE (image) && (gtk_image_get_storage_type (GTK_IMAGE (image)) == GTK_IMAGE_EMPTY || gtk_image_get_storage_type (GTK_IMAGE (image)) == GTK_IMAGE_ICON_NAME)) { @@ -699,8 +700,8 @@ activatable_update_icon_name (GtkImageMenuItem *image_menu_item, GtkAction *acti static void gtk_image_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name) + GtkAction *action, + const gchar *property_name) { GtkImageMenuItem *image_menu_item; gboolean use_appearance; @@ -721,9 +722,9 @@ gtk_image_menu_item_update (GtkActivatable *activatable, activatable_update_icon_name (image_menu_item, action); } -static void +static void gtk_image_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action) + GtkAction *action) { GtkImageMenuItem *image_menu_item; GtkWidget *image; @@ -746,15 +747,15 @@ gtk_image_menu_item_sync_action_properties (GtkActivatable *activatable, gtk_image_menu_item_set_image (image_menu_item, NULL); image = NULL; } - + if (!image) { image = gtk_image_new (); gtk_widget_show (image); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (activatable), - image); + image); } - + if (!activatable_update_stock_id (image_menu_item, action) && !activatable_update_gicon (image_menu_item, action)) activatable_update_icon_name (image_menu_item, action); @@ -781,14 +782,14 @@ gtk_image_menu_item_new (void) * @label: the text of the menu item. * @returns: a new #GtkImageMenuItem. * - * Creates a new #GtkImageMenuItem containing a label. - **/ + * Creates a new #GtkImageMenuItem containing a label. + */ GtkWidget* gtk_image_menu_item_new_with_label (const gchar *label) { - return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, - "label", label, - NULL); + return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, + "label", label, + NULL); } @@ -801,25 +802,25 @@ gtk_image_menu_item_new_with_label (const gchar *label) * Creates a new #GtkImageMenuItem containing a label. The label * will be created using gtk_label_new_with_mnemonic(), so underscores * in @label indicate the mnemonic for the menu item. - **/ + */ GtkWidget* gtk_image_menu_item_new_with_mnemonic (const gchar *label) { - return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, - "use-underline", TRUE, - "label", label, - NULL); + return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, + "use-underline", TRUE, + "label", label, + NULL); } /** * gtk_image_menu_item_new_from_stock: * @stock_id: the name of the stock item. - * @accel_group: (allow-none): the #GtkAccelGroup to add the menu items + * @accel_group: (allow-none): the #GtkAccelGroup to add the menu items * accelerator to, or %NULL. * @returns: a new #GtkImageMenuItem. * - * Creates a new #GtkImageMenuItem containing the image and text from a - * stock item. Some stock ids have preprocessor macros like #GTK_STOCK_OK + * Creates a new #GtkImageMenuItem containing the image and text from a + * stock item. Some stock ids have preprocessor macros like #GTK_STOCK_OK * and #GTK_STOCK_APPLY. * * If you want this menu item to have changeable accelerators, then pass in @@ -827,16 +828,16 @@ gtk_image_menu_item_new_with_mnemonic (const gchar *label) * appropriate path for the menu item, use gtk_stock_lookup() to look up the * standard accelerator for the stock item, and if one is found, call * gtk_accel_map_add_entry() to register it. - **/ + */ GtkWidget* -gtk_image_menu_item_new_from_stock (const gchar *stock_id, - GtkAccelGroup *accel_group) +gtk_image_menu_item_new_from_stock (const gchar *stock_id, + GtkAccelGroup *accel_group) { - return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, - "label", stock_id, - "use-stock", TRUE, - "accel-group", accel_group, - NULL); + return g_object_new (GTK_TYPE_IMAGE_MENU_ITEM, + "label", stock_id, + "use-stock", TRUE, + "accel-group", accel_group, + NULL); } /** @@ -851,7 +852,7 @@ gtk_image_menu_item_new_from_stock (const gchar *stock_id, */ void gtk_image_menu_item_set_use_stock (GtkImageMenuItem *image_menu_item, - gboolean use_stock) + gboolean use_stock) { GtkImageMenuItemPrivate *priv; @@ -894,12 +895,12 @@ gtk_image_menu_item_get_use_stock (GtkImageMenuItem *image_menu_item) * @image_menu_item: a #GtkImageMenuItem * @always_show: %TRUE if the menuitem should always show the image * - * If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images + * If %TRUE, the menu item will ignore the #GtkSettings:gtk-menu-images * setting and always show the image, if available. * * Use this property if the menuitem would be useless or hard to use - * without the image. - * + * without the image. + * * Since: 2.16 */ void @@ -934,7 +935,7 @@ gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item, * * Returns whether the menu item will ignore the #GtkSettings:gtk-menu-images * setting and always show the image, if available. - * + * * Returns: %TRUE if the menu item will always show the image * * Since: 2.16 @@ -964,16 +965,16 @@ gtk_image_menu_item_get_always_show_image (GtkImageMenuItem *image_menu_item) * Since: 2.16 */ void -gtk_image_menu_item_set_accel_group (GtkImageMenuItem *image_menu_item, - GtkAccelGroup *accel_group) +gtk_image_menu_item_set_accel_group (GtkImageMenuItem *image_menu_item, + GtkAccelGroup *accel_group) { GtkImageMenuItemPrivate *priv; GtkStockItem stock_item; /* Silent return for the constructor */ - if (!accel_group) + if (!accel_group) return; - + g_return_if_fail (GTK_IS_IMAGE_MENU_ITEM (image_menu_item)); g_return_if_fail (GTK_IS_ACCEL_GROUP (accel_group)); @@ -982,18 +983,18 @@ gtk_image_menu_item_set_accel_group (GtkImageMenuItem *image_menu_item, if (priv->use_stock && priv->label && gtk_stock_lookup (priv->label, &stock_item)) if (stock_item.keyval) { - gtk_widget_add_accelerator (GTK_WIDGET (image_menu_item), - "activate", - accel_group, - stock_item.keyval, - stock_item.modifier, - GTK_ACCEL_VISIBLE); - - g_object_notify (G_OBJECT (image_menu_item), "accel-group"); + gtk_widget_add_accelerator (GTK_WIDGET (image_menu_item), + "activate", + accel_group, + stock_item.keyval, + stock_item.modifier, + GTK_ACCEL_VISIBLE); + + g_object_notify (G_OBJECT (image_menu_item), "accel-group"); } } -/** +/** * gtk_image_menu_item_set_image: * @image_menu_item: a #GtkImageMenuItem. * @image: (allow-none): a widget to set as the image for the menu item. @@ -1001,7 +1002,7 @@ gtk_image_menu_item_set_accel_group (GtkImageMenuItem *image_menu_item, * Sets the image of @image_menu_item to the given widget. * Note that it depends on the show-menu-images setting whether * the image will be displayed or not. - **/ + */ void gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item, GtkWidget *image) @@ -1026,9 +1027,9 @@ gtk_image_menu_item_set_image (GtkImageMenuItem *image_menu_item, gtk_widget_set_parent (image, GTK_WIDGET (image_menu_item)); g_object_set (image, - "visible", show_image (image_menu_item), - "no-show-all", TRUE, - NULL); + "visible", show_image (image_menu_item), + "no-show-all", TRUE, + NULL); g_object_notify (G_OBJECT (image_menu_item), "image"); } @@ -1060,9 +1061,9 @@ gtk_image_menu_item_remove (GtkContainer *container, if (child == priv->image) { gboolean widget_was_visible; - + widget_was_visible = gtk_widget_get_visible (child); - + gtk_widget_unparent (child); priv->image = NULL; @@ -1078,7 +1079,7 @@ gtk_image_menu_item_remove (GtkContainer *container, } } -static void +static void show_image_change_notify (GtkImageMenuItem *image_menu_item) { GtkImageMenuItemPrivate *priv = image_menu_item->priv; @@ -1086,15 +1087,15 @@ show_image_change_notify (GtkImageMenuItem *image_menu_item) if (priv->image) { if (show_image (image_menu_item)) - gtk_widget_show (priv->image); + gtk_widget_show (priv->image); else - gtk_widget_hide (priv->image); + gtk_widget_hide (priv->image); } } static void traverse_container (GtkWidget *widget, - gpointer data) + gpointer data) { if (GTK_IS_IMAGE_MENU_ITEM (widget)) show_image_change_notify (GTK_IMAGE_MENU_ITEM (widget)); @@ -1110,15 +1111,15 @@ gtk_image_menu_item_setting_changed (GtkSettings *settings) list = gtk_window_list_toplevels (); for (l = list; l; l = l->next) - gtk_container_forall (GTK_CONTAINER (l->data), - traverse_container, NULL); + gtk_container_forall (GTK_CONTAINER (l->data), + traverse_container, NULL); - g_list_free (list); + g_list_free (list); } static void gtk_image_menu_item_screen_changed (GtkWidget *widget, - GdkScreen *previous_screen) + GdkScreen *previous_screen) { GtkSettings *settings; gulong show_image_connection; @@ -1127,11 +1128,11 @@ gtk_image_menu_item_screen_changed (GtkWidget *widget, return; settings = gtk_widget_get_settings (widget); - - show_image_connection = + + show_image_connection = g_signal_handler_find (settings, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, gtk_image_menu_item_setting_changed, NULL); - + if (show_image_connection) return; diff --git a/gtk/gtkimcontext.c b/gtk/gtkimcontext.c index d4f5cea09d..245c59b35a 100644 --- a/gtk/gtkimcontext.c +++ b/gtk/gtkimcontext.c @@ -20,7 +20,7 @@ #include "config.h" #include #include "gtkimcontext.h" -#include "gtkmain.h" /* For _gtk_boolean_handled_accumulator */ +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkintl.h" diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c index 1270bb0563..ef724b575c 100644 --- a/gtk/gtkimcontextsimple.c +++ b/gtk/gtkimcontextsimple.c @@ -18,10 +18,10 @@ */ #include "config.h" + #include #include -#include #include "gtkprivate.h" #include "gtkaccelgroup.h" #include "gtkimcontextsimple.h" @@ -87,22 +87,22 @@ static const GtkComposeTableCompact gtk_compose_table_compact = { }; static const guint16 gtk_compose_ignore[] = { - GDK_Shift_L, - GDK_Shift_R, - GDK_Control_L, - GDK_Control_R, - GDK_Caps_Lock, - GDK_Shift_Lock, - GDK_Meta_L, - GDK_Meta_R, - GDK_Alt_L, - GDK_Alt_R, - GDK_Super_L, - GDK_Super_R, - GDK_Hyper_L, - GDK_Hyper_R, - GDK_Mode_switch, - GDK_ISO_Level3_Shift + GDK_KEY_Shift_L, + GDK_KEY_Shift_R, + GDK_KEY_Control_L, + GDK_KEY_Control_R, + GDK_KEY_Caps_Lock, + GDK_KEY_Shift_Lock, + GDK_KEY_Meta_L, + GDK_KEY_Meta_R, + GDK_KEY_Alt_L, + GDK_KEY_Alt_R, + GDK_KEY_Super_L, + GDK_KEY_Super_R, + GDK_KEY_Hyper_L, + GDK_KEY_Hyper_R, + GDK_KEY_Mode_switch, + GDK_KEY_ISO_Level3_Shift }; static void gtk_im_context_simple_finalize (GObject *obj); @@ -155,7 +155,7 @@ gtk_im_context_simple_finalize (GObject *obj) G_OBJECT_CLASS (gtk_im_context_simple_parent_class)->finalize (obj); } -/** +/** * gtk_im_context_simple_new: * * Creates a new #GtkIMContextSimple. @@ -299,14 +299,14 @@ check_table (GtkIMContextSimple *context_simple, } /* Checks if a keysym is a dead key. Dead key keysym values are defined in - * ../gdk/gdkkeysyms.h and the first is GDK_dead_grave. As X.Org is updated, + * ../gdk/gdkkeysyms.h and the first is GDK_KEY_dead_grave. As X.Org is updated, * more dead keys are added and we need to update the upper limit. - * Currently, the upper limit is GDK_dead_dasia+1. The +1 has to do with - * a temporary issue in the X.Org header files. + * Currently, the upper limit is GDK_KEY_dead_dasia+1. The +1 has to do with + * a temporary issue in the X.Org header files. * In future versions it will be just the keysym (no +1). */ #define IS_DEAD_KEY(k) \ - ((k) >= GDK_dead_grave && (k) <= (GDK_dead_dasia+1)) + ((k) >= GDK_KEY_dead_grave && (k) <= (GDK_KEY_dead_dasia+1)) #ifdef GDK_WINDOWING_WIN32 @@ -323,15 +323,15 @@ check_win32_special_cases (GtkIMContextSimple *context_simple, { GtkIMContextSimplePrivate *priv = context_simple->priv; if (n_compose == 2 && - priv->compose_buffer[1] == GDK_space) + priv->compose_buffer[1] == GDK_KEY_space) { gunichar value = 0; switch (priv->compose_buffer[0]) { - case GDK_dead_acute: + case GDK_KEY_dead_acute: value = 0x00B4; break; - case GDK_dead_diaeresis: + case GDK_KEY_dead_diaeresis: value = 0x00A8; break; } if (value > 0) @@ -523,8 +523,8 @@ check_normalize_nfc (gunichar* combination_buffer, gint n_compose) } static gboolean -check_algorithmically (GtkIMContextSimple *context_simple, - gint n_compose) +check_algorithmically (GtkIMContextSimple *context_simple, + gint n_compose) { GtkIMContextSimplePrivate *priv = context_simple->priv; @@ -550,7 +550,7 @@ check_algorithmically (GtkIMContextSimple *context_simple, switch (priv->compose_buffer[i]) { #define CASE(keysym, unicode) \ - case GDK_dead_##keysym: combination_buffer[i+1] = unicode; break + case GDK_KEY_dead_##keysym: combination_buffer[i+1] = unicode; break CASE (grave, 0x0300); CASE (acute, 0x0301); @@ -830,8 +830,8 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context, if (event->type == GDK_KEY_RELEASE) { if (priv->in_hex_sequence && - (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R || - event->keyval == GDK_Shift_L || event->keyval == GDK_Shift_R)) + (event->keyval == GDK_KEY_Control_L || event->keyval == GDK_KEY_Control_R || + event->keyval == GDK_KEY_Shift_L || event->keyval == GDK_KEY_Shift_R)) { if (priv->tentative_match && g_unichar_validate (priv->tentative_match)) @@ -872,14 +872,14 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context, have_hex_mods = TRUE; else have_hex_mods = (event->state & (HEX_MOD_MASK)) == HEX_MOD_MASK; - is_hex_start = event->keyval == GDK_U; - is_hex_end = (event->keyval == GDK_space || - event->keyval == GDK_KP_Space || - event->keyval == GDK_Return || - event->keyval == GDK_ISO_Enter || - event->keyval == GDK_KP_Enter); - is_backspace = event->keyval == GDK_BackSpace; - is_escape = event->keyval == GDK_Escape; + is_hex_start = event->keyval == GDK_KEY_U; + is_hex_end = (event->keyval == GDK_KEY_space || + event->keyval == GDK_KEY_KP_Space || + event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_ISO_Enter || + event->keyval == GDK_KEY_KP_Enter); + is_backspace = event->keyval == GDK_KEY_BackSpace; + is_escape = event->keyval == GDK_KEY_Escape; hex_keyval = canonical_hex_keyval (event); /* If we are already in a non-hex sequence, or @@ -897,9 +897,9 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context, { if (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK) || (priv->in_hex_sequence && priv->modifiers_dropped && - (event->keyval == GDK_Return || - event->keyval == GDK_ISO_Enter || - event->keyval == GDK_KP_Enter))) + (event->keyval == GDK_KEY_Return || + event->keyval == GDK_KEY_ISO_Enter || + event->keyval == GDK_KEY_KP_Enter))) { return FALSE; } diff --git a/gtk/gtkimcontextsimpleseqs.h b/gtk/gtkimcontextsimpleseqs.h index f804815f41..a5cd046c99 100644 --- a/gtk/gtkimcontextsimpleseqs.h +++ b/gtk/gtkimcontextsimpleseqs.h @@ -26,7 +26,7 @@ * * This table is optimised for space and requires special handling to access the content. * This table is used solely by http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimple.c - * + * * The resulting file is placed at http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimpleseqs.h * This file is described in bug report http://bugzilla.gnome.org/show_bug.cgi?id=321896 */ @@ -67,4417 +67,4417 @@ */ static const guint16 gtk_compose_seqs_compact[] = { -GDK_dead_stroke, 144, 232, 241, 241, 241, -GDK_Greek_accentdieresis, 241, 245, 245, 245, 245, -GDK_dead_grave, 245, 307, 394, 606, 606, -GDK_dead_acute, 606, 670, 766, 1042, 1042, -GDK_dead_circumflex, 1042, 1166, 1166, 1366, 1366, -GDK_dead_tilde, 1366, 1450, 1513, 1653, 1653, -GDK_dead_macron, 1653, 1699, 1699, 1771, 1771, -GDK_dead_breve, 1771, 1821, 1821, 1845, 1845, -GDK_dead_abovedot, 1845, 1875, 1878, 1910, 1910, -GDK_dead_diaeresis, 1910, 1998, 2007, 2031, 2031, -GDK_dead_abovering, 2031, 2041, 2041, 2041, 2041, -GDK_dead_doubleacute, 2041, 2051, 2051, 2051, 2051, -GDK_dead_caron, 2051, 2093, 2093, 2101, 2101, -GDK_dead_cedilla, 2101, 2113, 2113, 2113, 2113, -GDK_dead_ogonek, 2113, 2123, 2123, 2123, 2123, -GDK_dead_iota, 2123, 2145, 2244, 2676, 3336, -GDK_dead_voiced_sound, 3336, 3382, 3382, 3382, 3382, -GDK_dead_semivoiced_sound, 3382, 3392, 3392, 3392, 3392, -GDK_dead_belowdot, 3392, 3408, 3408, 3424, 3424, -GDK_dead_hook, 3424, 3500, 3500, 3556, 3556, -GDK_dead_horn, 3556, 3566, 3566, 3566, 3566, -GDK_dead_psili, 3566, 3594, 3594, 3594, 3594, -GDK_dead_dasia, 3594, 3626, 3626, 3626, 3626, -GDK_Multi_key, 3626, 3626, 9560, 13268, 15133, -GDK_space, 0x002F, -GDK_2, 0x01BB, -GDK_A, 0x023A, -GDK_B, 0x0243, -GDK_C, 0x023B, -GDK_D, 0x0110, -GDK_E, 0x0246, -GDK_G, 0x01E4, -GDK_H, 0x0126, -GDK_I, 0x0197, -GDK_J, 0x0248, -GDK_L, 0x0141, -GDK_O, 0x00D8, -GDK_P, 0x2C63, -GDK_R, 0x024C, -GDK_T, 0x0166, -GDK_U, 0x0244, -GDK_Y, 0x024E, -GDK_Z, 0x01B5, -GDK_a, 0x2C65, -GDK_b, 0x0180, -GDK_c, 0x023C, -GDK_d, 0x0111, -GDK_e, 0x0247, -GDK_g, 0x01E5, -GDK_h, 0x0127, -GDK_i, 0x0268, -GDK_j, 0x0249, -GDK_l, 0x0142, -GDK_o, 0x00F8, -GDK_p, 0x1D7D, -GDK_r, 0x024D, -GDK_t, 0x0167, -GDK_u, 0x0289, -GDK_y, 0x024F, -GDK_z, 0x01B6, -GDK_nobreakspace, 0x0338, -GDK_Oacute, 0x01FE, -GDK_oacute, 0x01FF, -0x0237, 0x025F, -0x0269, 0x1D7C, -GDK_dead_stroke, 0x002F, -GDK_lessthanequal, 0x2270, -GDK_greaterthanequal, 0x2271, -GDK_dead_acute, GDK_O, 0x01FE, -GDK_dead_acute, GDK_o, 0x01FF, -GDK_dead_abovedot, GDK_j, 0x025F, -GDK_Greek_iota, 0x0390, -GDK_Greek_upsilon, 0x03B0, -GDK_space, 0x0060, -GDK_V, 0x01DB, -GDK_v, 0x01DC, -GDK_nobreakspace, 0x0300, -GDK_Abreve, 0x1EB0, -GDK_abreve, 0x1EB1, -GDK_Emacron, 0x1E14, -GDK_emacron, 0x1E15, -GDK_Omacron, 0x1E50, -GDK_omacron, 0x1E51, -GDK_Cyrillic_ie, 0x0450, -GDK_Cyrillic_i, 0x045D, -GDK_Cyrillic_IE, 0x0400, -GDK_Cyrillic_I, 0x040D, -GDK_Greek_iotadieresis, 0x1FD2, -GDK_Greek_upsilondieresis, 0x1FE2, -GDK_Greek_ALPHA, 0x1FBA, -GDK_Greek_EPSILON, 0x1FC8, -GDK_Greek_ETA, 0x1FCA, -GDK_Greek_IOTA, 0x1FDA, -GDK_Greek_OMICRON, 0x1FF8, -GDK_Greek_UPSILON, 0x1FEA, -GDK_Greek_OMEGA, 0x1FFA, -GDK_Greek_alpha, 0x1F70, -GDK_Greek_epsilon, 0x1F72, -GDK_Greek_eta, 0x1F74, -GDK_Greek_iota, 0x1F76, -GDK_Greek_omicron, 0x1F78, -GDK_Greek_upsilon, 0x1F7A, -GDK_Greek_omega, 0x1F7C, -GDK_dead_grave, 0x0060, -GDK_dead_diaeresis, GDK_Greek_iota, 0x1FD2, -GDK_dead_diaeresis, GDK_Greek_upsilon, 0x1FE2, -GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0A, -GDK_dead_psili, GDK_Greek_EPSILON, 0x1F1A, -GDK_dead_psili, GDK_Greek_ETA, 0x1F2A, -GDK_dead_psili, GDK_Greek_IOTA, 0x1F3A, -GDK_dead_psili, GDK_Greek_OMICRON, 0x1F4A, -GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6A, -GDK_dead_psili, GDK_Greek_alpha, 0x1F02, -GDK_dead_psili, GDK_Greek_epsilon, 0x1F12, -GDK_dead_psili, GDK_Greek_eta, 0x1F22, -GDK_dead_psili, GDK_Greek_iota, 0x1F32, -GDK_dead_psili, GDK_Greek_omicron, 0x1F42, -GDK_dead_psili, GDK_Greek_upsilon, 0x1F52, -GDK_dead_psili, GDK_Greek_omega, 0x1F62, -GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0B, -GDK_dead_dasia, GDK_Greek_EPSILON, 0x1F1B, -GDK_dead_dasia, GDK_Greek_ETA, 0x1F2B, -GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3B, -GDK_dead_dasia, GDK_Greek_OMICRON, 0x1F4B, -GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5B, -GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6B, -GDK_dead_dasia, GDK_Greek_alpha, 0x1F03, -GDK_dead_dasia, GDK_Greek_epsilon, 0x1F13, -GDK_dead_dasia, GDK_Greek_eta, 0x1F23, -GDK_dead_dasia, GDK_Greek_iota, 0x1F33, -GDK_dead_dasia, GDK_Greek_omicron, 0x1F43, -GDK_dead_dasia, GDK_Greek_upsilon, 0x1F53, -GDK_dead_dasia, GDK_Greek_omega, 0x1F63, -GDK_Multi_key, GDK_quotedbl, GDK_U, 0x01DB, -GDK_Multi_key, GDK_quotedbl, GDK_u, 0x01DC, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_iota, 0x1FD2, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_upsilon, 0x1FE2, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_EPSILON, 0x1F1B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F2B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_IOTA, 0x1F3B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMICRON, 0x1F4B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6B, -GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F03, -GDK_Multi_key, GDK_parenleft, GDK_Greek_epsilon, 0x1F13, -GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F23, -GDK_Multi_key, GDK_parenleft, GDK_Greek_iota, 0x1F33, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omicron, 0x1F43, -GDK_Multi_key, GDK_parenleft, GDK_Greek_upsilon, 0x1F53, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1F63, -GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F0A, -GDK_Multi_key, GDK_parenright, GDK_Greek_EPSILON, 0x1F1A, -GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F2A, -GDK_Multi_key, GDK_parenright, GDK_Greek_IOTA, 0x1F3A, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMICRON, 0x1F4A, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1F6A, -GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F02, -GDK_Multi_key, GDK_parenright, GDK_Greek_epsilon, 0x1F12, -GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F22, -GDK_Multi_key, GDK_parenright, GDK_Greek_iota, 0x1F32, -GDK_Multi_key, GDK_parenright, GDK_Greek_omicron, 0x1F42, -GDK_Multi_key, GDK_parenright, GDK_Greek_upsilon, 0x1F52, -GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1F62, -GDK_Multi_key, GDK_plus, GDK_O, 0x1EDC, -GDK_Multi_key, GDK_plus, GDK_U, 0x1EEA, -GDK_Multi_key, GDK_plus, GDK_o, 0x1EDD, -GDK_Multi_key, GDK_plus, GDK_u, 0x1EEB, -GDK_Multi_key, GDK_U, GDK_A, 0x1EB0, -GDK_Multi_key, GDK_U, GDK_a, 0x1EB1, -GDK_Multi_key, GDK_asciicircum, GDK_A, 0x1EA6, -GDK_Multi_key, GDK_asciicircum, GDK_E, 0x1EC0, -GDK_Multi_key, GDK_asciicircum, GDK_O, 0x1ED2, -GDK_Multi_key, GDK_asciicircum, GDK_a, 0x1EA7, -GDK_Multi_key, GDK_asciicircum, GDK_e, 0x1EC1, -GDK_Multi_key, GDK_asciicircum, GDK_o, 0x1ED3, -GDK_Multi_key, GDK_underscore, GDK_E, 0x1E14, -GDK_Multi_key, GDK_underscore, GDK_O, 0x1E50, -GDK_Multi_key, GDK_underscore, GDK_e, 0x1E15, -GDK_Multi_key, GDK_underscore, GDK_o, 0x1E51, -GDK_Multi_key, GDK_b, GDK_A, 0x1EB0, -GDK_Multi_key, GDK_b, GDK_a, 0x1EB1, -GDK_Multi_key, GDK_macron, GDK_E, 0x1E14, -GDK_Multi_key, GDK_macron, GDK_O, 0x1E50, -GDK_Multi_key, GDK_macron, GDK_e, 0x1E15, -GDK_Multi_key, GDK_macron, GDK_o, 0x1E51, -GDK_space, 0x0027, -GDK_V, 0x01D7, -GDK_v, 0x01D8, -GDK_nobreakspace, 0x0301, -GDK_Abreve, 0x1EAE, -GDK_abreve, 0x1EAF, -GDK_Emacron, 0x1E16, -GDK_emacron, 0x1E17, -GDK_Utilde, 0x1E78, -GDK_omacron, 0x1E53, -GDK_utilde, 0x1E79, -GDK_Cyrillic_ghe, 0x0453, -GDK_Cyrillic_ka, 0x045C, -GDK_Cyrillic_GHE, 0x0403, -GDK_Cyrillic_KA, 0x040C, -GDK_Greek_iotadieresis, 0x0390, -GDK_Greek_upsilondieresis, 0x03B0, -GDK_Greek_ALPHA, 0x0386, -GDK_Greek_EPSILON, 0x0388, -GDK_Greek_ETA, 0x0389, -GDK_Greek_IOTA, 0x038A, -GDK_Greek_OMICRON, 0x038C, -GDK_Greek_UPSILON, 0x038E, -GDK_Greek_OMEGA, 0x038F, -GDK_Greek_alpha, 0x03AC, -GDK_Greek_epsilon, 0x03AD, -GDK_Greek_eta, 0x03AE, -GDK_Greek_iota, 0x03AF, -GDK_Greek_omicron, 0x03CC, -GDK_Greek_upsilon, 0x03CD, -GDK_Greek_omega, 0x03CE, -GDK_dead_acute, 0x00B4, -GDK_dead_stroke, GDK_O, 0x01FE, -GDK_dead_stroke, GDK_o, 0x01FF, -GDK_dead_diaeresis, GDK_space, 0x0385, -GDK_dead_diaeresis, GDK_Greek_iota, 0x0390, -GDK_dead_diaeresis, GDK_Greek_upsilon, 0x03B0, -GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0C, -GDK_dead_psili, GDK_Greek_EPSILON, 0x1F1C, -GDK_dead_psili, GDK_Greek_ETA, 0x1F2C, -GDK_dead_psili, GDK_Greek_IOTA, 0x1F3C, -GDK_dead_psili, GDK_Greek_OMICRON, 0x1F4C, -GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6C, -GDK_dead_psili, GDK_Greek_alpha, 0x1F04, -GDK_dead_psili, GDK_Greek_epsilon, 0x1F14, -GDK_dead_psili, GDK_Greek_eta, 0x1F24, -GDK_dead_psili, GDK_Greek_iota, 0x1F34, -GDK_dead_psili, GDK_Greek_omicron, 0x1F44, -GDK_dead_psili, GDK_Greek_upsilon, 0x1F54, -GDK_dead_psili, GDK_Greek_omega, 0x1F64, -GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0D, -GDK_dead_dasia, GDK_Greek_EPSILON, 0x1F1D, -GDK_dead_dasia, GDK_Greek_ETA, 0x1F2D, -GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3D, -GDK_dead_dasia, GDK_Greek_OMICRON, 0x1F4D, -GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5D, -GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6D, -GDK_dead_dasia, GDK_Greek_alpha, 0x1F05, -GDK_dead_dasia, GDK_Greek_epsilon, 0x1F15, -GDK_dead_dasia, GDK_Greek_eta, 0x1F25, -GDK_dead_dasia, GDK_Greek_iota, 0x1F35, -GDK_dead_dasia, GDK_Greek_omicron, 0x1F45, -GDK_dead_dasia, GDK_Greek_upsilon, 0x1F55, -GDK_dead_dasia, GDK_Greek_omega, 0x1F65, -GDK_Multi_key, GDK_quotedbl, GDK_I, 0x1E2E, -GDK_Multi_key, GDK_quotedbl, GDK_U, 0x01D7, -GDK_Multi_key, GDK_quotedbl, GDK_i, 0x1E2F, -GDK_Multi_key, GDK_quotedbl, GDK_u, 0x01D8, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_iota, 0x0390, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_upsilon, 0x03B0, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_EPSILON, 0x1F1D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F2D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_IOTA, 0x1F3D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMICRON, 0x1F4D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6D, -GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F05, -GDK_Multi_key, GDK_parenleft, GDK_Greek_epsilon, 0x1F15, -GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F25, -GDK_Multi_key, GDK_parenleft, GDK_Greek_iota, 0x1F35, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omicron, 0x1F45, -GDK_Multi_key, GDK_parenleft, GDK_Greek_upsilon, 0x1F55, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1F65, -GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F0C, -GDK_Multi_key, GDK_parenright, GDK_Greek_EPSILON, 0x1F1C, -GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F2C, -GDK_Multi_key, GDK_parenright, GDK_Greek_IOTA, 0x1F3C, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMICRON, 0x1F4C, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1F6C, -GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F04, -GDK_Multi_key, GDK_parenright, GDK_Greek_epsilon, 0x1F14, -GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F24, -GDK_Multi_key, GDK_parenright, GDK_Greek_iota, 0x1F34, -GDK_Multi_key, GDK_parenright, GDK_Greek_omicron, 0x1F44, -GDK_Multi_key, GDK_parenright, GDK_Greek_upsilon, 0x1F54, -GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1F64, -GDK_Multi_key, GDK_plus, GDK_O, 0x1EDA, -GDK_Multi_key, GDK_plus, GDK_U, 0x1EE8, -GDK_Multi_key, GDK_plus, GDK_o, 0x1EDB, -GDK_Multi_key, GDK_plus, GDK_u, 0x1EE9, -GDK_Multi_key, GDK_comma, GDK_C, 0x1E08, -GDK_Multi_key, GDK_comma, GDK_c, 0x1E09, -GDK_Multi_key, GDK_slash, GDK_O, 0x01FE, -GDK_Multi_key, GDK_slash, GDK_o, 0x01FF, -GDK_Multi_key, GDK_U, GDK_A, 0x1EAE, -GDK_Multi_key, GDK_U, GDK_a, 0x1EAF, -GDK_Multi_key, GDK_asciicircum, GDK_A, 0x1EA4, -GDK_Multi_key, GDK_asciicircum, GDK_E, 0x1EBE, -GDK_Multi_key, GDK_asciicircum, GDK_O, 0x1ED0, -GDK_Multi_key, GDK_asciicircum, GDK_a, 0x1EA5, -GDK_Multi_key, GDK_asciicircum, GDK_e, 0x1EBF, -GDK_Multi_key, GDK_asciicircum, GDK_o, 0x1ED1, -GDK_Multi_key, GDK_underscore, GDK_E, 0x1E16, -GDK_Multi_key, GDK_underscore, GDK_O, 0x1E52, -GDK_Multi_key, GDK_underscore, GDK_e, 0x1E17, -GDK_Multi_key, GDK_underscore, GDK_o, 0x1E53, -GDK_Multi_key, GDK_b, GDK_A, 0x1EAE, -GDK_Multi_key, GDK_b, GDK_a, 0x1EAF, -GDK_Multi_key, GDK_o, GDK_A, 0x01FA, -GDK_Multi_key, GDK_o, GDK_a, 0x01FB, -GDK_Multi_key, GDK_asciitilde, GDK_O, 0x1E4C, -GDK_Multi_key, GDK_asciitilde, GDK_U, 0x1E78, -GDK_Multi_key, GDK_asciitilde, GDK_o, 0x1E4D, -GDK_Multi_key, GDK_asciitilde, GDK_u, 0x1E79, -GDK_Multi_key, GDK_macron, GDK_E, 0x1E16, -GDK_Multi_key, GDK_macron, GDK_O, 0x1E52, -GDK_Multi_key, GDK_macron, GDK_e, 0x1E17, -GDK_Multi_key, GDK_macron, GDK_o, 0x1E53, -GDK_Multi_key, GDK_cedilla, GDK_C, 0x1E08, -GDK_Multi_key, GDK_cedilla, GDK_c, 0x1E09, -GDK_Multi_key, GDK_KP_Divide, GDK_O, 0x01FE, -GDK_Multi_key, GDK_KP_Divide, GDK_o, 0x01FF, -GDK_space, 0x005E, -GDK_parenleft, 0x207D, -GDK_parenright, 0x207E, -GDK_plus, 0x207A, -GDK_minus, 0x207B, -GDK_0, 0x2070, -GDK_1, 0x00B9, -GDK_2, 0x00B2, -GDK_3, 0x00B3, -GDK_4, 0x2074, -GDK_5, 0x2075, -GDK_6, 0x2076, -GDK_7, 0x2077, -GDK_8, 0x2078, -GDK_9, 0x2079, -GDK_equal, 0x207C, -GDK_nobreakspace, 0x0302, -GDK_Agrave, 0x1EA6, -GDK_Aacute, 0x1EA4, -GDK_Atilde, 0x1EAA, -GDK_Egrave, 0x1EC0, -GDK_Eacute, 0x1EBE, -GDK_Ograve, 0x1ED2, -GDK_Oacute, 0x1ED0, -GDK_Otilde, 0x1ED6, -GDK_agrave, 0x1EA7, -GDK_aacute, 0x1EA5, -GDK_atilde, 0x1EAB, -GDK_egrave, 0x1EC1, -GDK_eacute, 0x1EBF, -GDK_ograve, 0x1ED3, -GDK_oacute, 0x1ED1, -GDK_otilde, 0x1ED7, -0x2212, 0x207B, -0x4E00, 0x3192, -0x4E01, 0x319C, -0x4E09, 0x3194, -0x4E0A, 0x3196, -0x4E0B, 0x3198, -0x4E19, 0x319B, -0x4E2D, 0x3197, -0x4E59, 0x319A, -0x4E8C, 0x3193, -0x4EBA, 0x319F, -0x56DB, 0x3195, -0x5730, 0x319E, -0x5929, 0x319D, -0x7532, 0x3199, -GDK_dead_circumflex, 0x005E, -GDK_KP_Space, 0x00B2, -GDK_KP_Add, 0x207A, -GDK_KP_0, 0x2070, -GDK_KP_1, 0x00B9, -GDK_KP_2, 0x00B2, -GDK_KP_3, 0x00B3, -GDK_KP_4, 0x2074, -GDK_KP_5, 0x2075, -GDK_KP_6, 0x2076, -GDK_KP_7, 0x2077, -GDK_KP_8, 0x2078, -GDK_KP_9, 0x2079, -GDK_KP_Equal, 0x207C, -GDK_Multi_key, GDK_exclam, GDK_A, 0x1EAC, -GDK_Multi_key, GDK_exclam, GDK_E, 0x1EC6, -GDK_Multi_key, GDK_exclam, GDK_O, 0x1ED8, -GDK_Multi_key, GDK_exclam, GDK_a, 0x1EAD, -GDK_Multi_key, GDK_exclam, GDK_e, 0x1EC7, -GDK_Multi_key, GDK_exclam, GDK_o, 0x1ED9, -GDK_Multi_key, GDK_S, GDK_M, 0x2120, -GDK_Multi_key, GDK_S, GDK_m, 0x2120, -GDK_Multi_key, GDK_T, GDK_M, 0x2122, -GDK_Multi_key, GDK_T, GDK_m, 0x2122, -GDK_Multi_key, GDK_underscore, GDK_a, 0x00AA, -GDK_Multi_key, GDK_underscore, GDK_h, 0x02B0, -GDK_Multi_key, GDK_underscore, GDK_i, 0x2071, -GDK_Multi_key, GDK_underscore, GDK_j, 0x02B2, -GDK_Multi_key, GDK_underscore, GDK_l, 0x02E1, -GDK_Multi_key, GDK_underscore, GDK_n, 0x207F, -GDK_Multi_key, GDK_underscore, GDK_o, 0x00BA, -GDK_Multi_key, GDK_underscore, GDK_r, 0x02B3, -GDK_Multi_key, GDK_underscore, GDK_s, 0x02E2, -GDK_Multi_key, GDK_underscore, GDK_w, 0x02B7, -GDK_Multi_key, GDK_underscore, GDK_x, 0x02E3, -GDK_Multi_key, GDK_underscore, GDK_y, 0x02B8, -GDK_Multi_key, GDK_underscore, 0x0263, 0x02E0, -GDK_Multi_key, GDK_underscore, 0x0266, 0x02B1, -GDK_Multi_key, GDK_underscore, 0x0279, 0x02B4, -GDK_Multi_key, GDK_underscore, 0x027B, 0x02B5, -GDK_Multi_key, GDK_underscore, 0x0281, 0x02B6, -GDK_Multi_key, GDK_underscore, 0x0295, 0x02E4, -GDK_Multi_key, GDK_s, GDK_M, 0x2120, -GDK_Multi_key, GDK_s, GDK_m, 0x2120, -GDK_Multi_key, GDK_t, GDK_M, 0x2122, -GDK_Multi_key, GDK_t, GDK_m, 0x2122, -GDK_Multi_key, GDK_underbar, GDK_a, 0x00AA, -GDK_Multi_key, GDK_underbar, GDK_h, 0x02B0, -GDK_Multi_key, GDK_underbar, GDK_i, 0x2071, -GDK_Multi_key, GDK_underbar, GDK_j, 0x02B2, -GDK_Multi_key, GDK_underbar, GDK_l, 0x02E1, -GDK_Multi_key, GDK_underbar, GDK_n, 0x207F, -GDK_Multi_key, GDK_underbar, GDK_o, 0x00BA, -GDK_Multi_key, GDK_underbar, GDK_r, 0x02B3, -GDK_Multi_key, GDK_underbar, GDK_s, 0x02E2, -GDK_Multi_key, GDK_underbar, GDK_w, 0x02B7, -GDK_Multi_key, GDK_underbar, GDK_x, 0x02E3, -GDK_Multi_key, GDK_underbar, GDK_y, 0x02B8, -GDK_Multi_key, GDK_underbar, 0x0263, 0x02E0, -GDK_Multi_key, GDK_underbar, 0x0266, 0x02B1, -GDK_Multi_key, GDK_underbar, 0x0279, 0x02B4, -GDK_Multi_key, GDK_underbar, 0x027B, 0x02B5, -GDK_Multi_key, GDK_underbar, 0x0281, 0x02B6, -GDK_Multi_key, GDK_underbar, 0x0295, 0x02E4, -GDK_space, 0x007E, -GDK_less, 0x2272, -GDK_equal, 0x2243, -GDK_greater, 0x2273, -GDK_nobreakspace, 0x0303, -GDK_Oacute, 0x1E4C, -GDK_Odiaeresis, 0x1E4E, -GDK_Uacute, 0x1E78, -GDK_oacute, 0x1E4D, -GDK_odiaeresis, 0x1E4F, -GDK_uacute, 0x1E79, -GDK_Abreve, 0x1EB4, -GDK_abreve, 0x1EB5, -GDK_Omacron, 0x022C, -GDK_omacron, 0x022D, -GDK_Greek_iotadieresis, 0x1FD7, -GDK_Greek_upsilondieresis, 0x1FE7, -GDK_Greek_alpha, 0x1FB6, -GDK_Greek_eta, 0x1FC6, -GDK_Greek_iota, 0x1FD6, -GDK_Greek_upsilon, 0x1FE6, -GDK_Greek_omega, 0x1FF6, -0x1F00, 0x1F06, -0x1F01, 0x1F07, -0x1F08, 0x1F0E, -0x1F09, 0x1F0F, -0x1F20, 0x1F26, -0x1F21, 0x1F27, -0x1F28, 0x1F2E, -0x1F29, 0x1F2F, -0x1F30, 0x1F36, -0x1F31, 0x1F37, -0x1F38, 0x1F3E, -0x1F39, 0x1F3F, -0x1F50, 0x1F56, -0x1F51, 0x1F57, -0x1F59, 0x1F5F, -0x1F60, 0x1F66, -0x1F61, 0x1F67, -0x1F68, 0x1F6E, -0x1F69, 0x1F6F, -GDK_dead_tilde, 0x007E, -GDK_dead_diaeresis, GDK_Greek_iota, 0x1FD7, -GDK_dead_diaeresis, GDK_Greek_upsilon, 0x1FE7, -GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0E, -GDK_dead_psili, GDK_Greek_ETA, 0x1F2E, -GDK_dead_psili, GDK_Greek_IOTA, 0x1F3E, -GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6E, -GDK_dead_psili, GDK_Greek_alpha, 0x1F06, -GDK_dead_psili, GDK_Greek_eta, 0x1F26, -GDK_dead_psili, GDK_Greek_iota, 0x1F36, -GDK_dead_psili, GDK_Greek_upsilon, 0x1F56, -GDK_dead_psili, GDK_Greek_omega, 0x1F66, -GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0F, -GDK_dead_dasia, GDK_Greek_ETA, 0x1F2F, -GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3F, -GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5F, -GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6F, -GDK_dead_dasia, GDK_Greek_alpha, 0x1F07, -GDK_dead_dasia, GDK_Greek_eta, 0x1F27, -GDK_dead_dasia, GDK_Greek_iota, 0x1F37, -GDK_dead_dasia, GDK_Greek_upsilon, 0x1F57, -GDK_dead_dasia, GDK_Greek_omega, 0x1F67, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_iota, 0x1FD7, -GDK_Multi_key, GDK_quotedbl, GDK_Greek_upsilon, 0x1FE7, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0F, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F2F, -GDK_Multi_key, GDK_parenleft, GDK_Greek_IOTA, 0x1F3F, -GDK_Multi_key, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5F, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6F, -GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F07, -GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F27, -GDK_Multi_key, GDK_parenleft, GDK_Greek_iota, 0x1F37, -GDK_Multi_key, GDK_parenleft, GDK_Greek_upsilon, 0x1F57, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1F67, -GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F0E, -GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F2E, -GDK_Multi_key, GDK_parenright, GDK_Greek_IOTA, 0x1F3E, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1F6E, -GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F06, -GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F26, -GDK_Multi_key, GDK_parenright, GDK_Greek_iota, 0x1F36, -GDK_Multi_key, GDK_parenright, GDK_Greek_upsilon, 0x1F56, -GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1F66, -GDK_Multi_key, GDK_plus, GDK_O, 0x1EE0, -GDK_Multi_key, GDK_plus, GDK_U, 0x1EEE, -GDK_Multi_key, GDK_plus, GDK_o, 0x1EE1, -GDK_Multi_key, GDK_plus, GDK_u, 0x1EEF, -GDK_Multi_key, GDK_U, GDK_A, 0x1EB4, -GDK_Multi_key, GDK_U, GDK_a, 0x1EB5, -GDK_Multi_key, GDK_asciicircum, GDK_A, 0x1EAA, -GDK_Multi_key, GDK_asciicircum, GDK_E, 0x1EC4, -GDK_Multi_key, GDK_asciicircum, GDK_O, 0x1ED6, -GDK_Multi_key, GDK_asciicircum, GDK_a, 0x1EAB, -GDK_Multi_key, GDK_asciicircum, GDK_e, 0x1EC5, -GDK_Multi_key, GDK_asciicircum, GDK_o, 0x1ED7, -GDK_Multi_key, GDK_b, GDK_A, 0x1EB4, -GDK_Multi_key, GDK_b, GDK_a, 0x1EB5, -GDK_space, 0x00AF, -GDK_V, 0x01D5, -GDK_v, 0x01D6, -GDK_nobreakspace, 0x0304, -GDK_Egrave, 0x1E14, -GDK_Eacute, 0x1E16, -GDK_Ograve, 0x1E50, -GDK_Oacute, 0x1E52, -GDK_egrave, 0x1E15, -GDK_eacute, 0x1E17, -GDK_ograve, 0x1E51, -GDK_oacute, 0x1E53, -GDK_Cyrillic_i, 0x04E3, -GDK_Cyrillic_u, 0x04EF, -GDK_Cyrillic_I, 0x04E2, -GDK_Cyrillic_U, 0x04EE, -GDK_Greek_ALPHA, 0x1FB9, -GDK_Greek_IOTA, 0x1FD9, -GDK_Greek_UPSILON, 0x1FE9, -GDK_Greek_alpha, 0x1FB1, -GDK_Greek_iota, 0x1FD1, -GDK_Greek_upsilon, 0x1FE1, -GDK_dead_macron, 0x00AF, -GDK_Multi_key, GDK_exclam, GDK_L, 0x1E38, -GDK_Multi_key, GDK_exclam, GDK_R, 0x1E5C, -GDK_Multi_key, GDK_exclam, GDK_l, 0x1E39, -GDK_Multi_key, GDK_exclam, GDK_r, 0x1E5D, -GDK_Multi_key, GDK_quotedbl, GDK_A, 0x01DE, -GDK_Multi_key, GDK_quotedbl, GDK_O, 0x022A, -GDK_Multi_key, GDK_quotedbl, GDK_U, 0x01D5, -GDK_Multi_key, GDK_quotedbl, GDK_a, 0x01DF, -GDK_Multi_key, GDK_quotedbl, GDK_o, 0x022B, -GDK_Multi_key, GDK_quotedbl, GDK_u, 0x01D6, -GDK_Multi_key, GDK_period, GDK_A, 0x01E0, -GDK_Multi_key, GDK_period, GDK_O, 0x0230, -GDK_Multi_key, GDK_period, GDK_a, 0x01E1, -GDK_Multi_key, GDK_period, GDK_o, 0x0231, -GDK_Multi_key, GDK_semicolon, GDK_O, 0x01EC, -GDK_Multi_key, GDK_semicolon, GDK_o, 0x01ED, -GDK_Multi_key, GDK_asciitilde, GDK_O, 0x022C, -GDK_Multi_key, GDK_asciitilde, GDK_o, 0x022D, -GDK_space, 0x02D8, -GDK_nobreakspace, 0x0306, -GDK_Agrave, 0x1EB0, -GDK_Aacute, 0x1EAE, -GDK_Atilde, 0x1EB4, -GDK_agrave, 0x1EB1, -GDK_aacute, 0x1EAF, -GDK_atilde, 0x1EB5, -GDK_Cyrillic_a, 0x04D1, -GDK_Cyrillic_ie, 0x04D7, -GDK_Cyrillic_i, 0x0439, -GDK_Cyrillic_u, 0x045E, -GDK_Cyrillic_zhe, 0x04C2, -GDK_Cyrillic_A, 0x04D0, -GDK_Cyrillic_IE, 0x04D6, -GDK_Cyrillic_I, 0x0419, -GDK_Cyrillic_U, 0x040E, -GDK_Cyrillic_ZHE, 0x04C1, -GDK_Greek_ALPHA, 0x1FB8, -GDK_Greek_IOTA, 0x1FD8, -GDK_Greek_UPSILON, 0x1FE8, -GDK_Greek_alpha, 0x1FB0, -GDK_Greek_iota, 0x1FD0, -GDK_Greek_upsilon, 0x1FE0, -GDK_dead_breve, 0x02D8, -GDK_Multi_key, GDK_exclam, GDK_A, 0x1EB6, -GDK_Multi_key, GDK_exclam, GDK_a, 0x1EB7, -GDK_Multi_key, GDK_comma, GDK_E, 0x1E1C, -GDK_Multi_key, GDK_comma, GDK_e, 0x1E1D, -GDK_Multi_key, GDK_cedilla, GDK_E, 0x1E1C, -GDK_Multi_key, GDK_cedilla, GDK_e, 0x1E1D, -GDK_space, 0x02D9, -GDK_L, 0x013F, -GDK_i, 0x0131, -GDK_j, 0x0237, -GDK_l, 0x0140, -GDK_nobreakspace, 0x0307, -GDK_Sacute, 0x1E64, -GDK_Scaron, 0x1E66, -GDK_sacute, 0x1E65, -GDK_scaron, 0x1E67, -GDK_Amacron, 0x01E0, -GDK_Omacron, 0x0230, -GDK_amacron, 0x01E1, -GDK_omacron, 0x0231, -GDK_dead_abovedot, 0x02D9, -GDK_dead_stroke, GDK_j, 0x025F, -GDK_Multi_key, GDK_exclam, GDK_S, 0x1E68, -GDK_Multi_key, GDK_exclam, GDK_s, 0x1E69, -GDK_Multi_key, GDK_apostrophe, GDK_S, 0x1E64, -GDK_Multi_key, GDK_apostrophe, GDK_s, 0x1E65, -GDK_Multi_key, GDK_c, GDK_S, 0x1E66, -GDK_Multi_key, GDK_c, GDK_s, 0x1E67, -GDK_Multi_key, GDK_acute, GDK_S, 0x1E64, -GDK_Multi_key, GDK_acute, GDK_s, 0x1E65, -GDK_space, 0x0022, -GDK_apostrophe, 0x0344, -GDK_nobreakspace, 0x0308, -GDK_acute, 0x0344, -GDK_Iacute, 0x1E2E, -GDK_Ugrave, 0x01DB, -GDK_Uacute, 0x01D7, -GDK_iacute, 0x1E2F, -GDK_ugrave, 0x01DC, -GDK_uacute, 0x01D8, -0x01D3, 0x01D9, -0x01D4, 0x01DA, -GDK_Amacron, 0x01DE, -GDK_Umacron, 0x1E7A, -GDK_amacron, 0x01DF, -GDK_omacron, 0x022B, -GDK_umacron, 0x1E7B, -GDK_Ukrainian_i, 0x0457, -GDK_Ukrainian_I, 0x0407, -GDK_Cyrillic_a, 0x04D3, -GDK_Cyrillic_ie, 0x0451, -GDK_Cyrillic_i, 0x04E5, -GDK_Cyrillic_o, 0x04E7, -GDK_Cyrillic_u, 0x04F1, -GDK_Cyrillic_zhe, 0x04DD, -GDK_Cyrillic_yeru, 0x04F9, -GDK_Cyrillic_ze, 0x04DF, -GDK_Cyrillic_e, 0x04ED, -GDK_Cyrillic_che, 0x04F5, -GDK_Cyrillic_A, 0x04D2, -GDK_Cyrillic_IE, 0x0401, -GDK_Cyrillic_I, 0x04E4, -GDK_Cyrillic_O, 0x04E6, -GDK_Cyrillic_U, 0x04F0, -GDK_Cyrillic_ZHE, 0x04DC, -GDK_Cyrillic_YERU, 0x04F8, -GDK_Cyrillic_ZE, 0x04DE, -GDK_Cyrillic_E, 0x04EC, -GDK_Cyrillic_CHE, 0x04F4, -GDK_Greek_IOTA, 0x03AA, -GDK_Greek_UPSILON, 0x03AB, -GDK_Greek_iota, 0x03CA, -GDK_Greek_upsilon, 0x03CB, -GDK_dead_diaeresis, 0x00A8, -GDK_dead_acute, GDK_space, 0x0385, -GDK_dead_acute, GDK_Greek_iota, 0x0390, -GDK_dead_acute, GDK_Greek_upsilon, 0x03B0, -GDK_Multi_key, GDK_underscore, GDK_U, 0x1E7A, -GDK_Multi_key, GDK_underscore, GDK_u, 0x1E7B, -GDK_Multi_key, GDK_asciitilde, GDK_O, 0x1E4E, -GDK_Multi_key, GDK_asciitilde, GDK_o, 0x1E4F, -GDK_Multi_key, GDK_macron, GDK_U, 0x1E7A, -GDK_Multi_key, GDK_macron, GDK_u, 0x1E7B, -GDK_space, 0x00B0, -GDK_nobreakspace, 0x030A, -GDK_Aacute, 0x01FA, -GDK_aacute, 0x01FB, -GDK_dead_abovering, 0x00B0, -GDK_space, 0x02DD, -GDK_nobreakspace, 0x030B, -GDK_Cyrillic_u, 0x04F3, -GDK_Cyrillic_U, 0x04F2, -GDK_dead_doubleacute, 0x02DD, -GDK_space, 0x02C7, -GDK_parenleft, 0x208D, -GDK_parenright, 0x208E, -GDK_plus, 0x208A, -GDK_minus, 0x208B, -GDK_0, 0x2080, -GDK_1, 0x2081, -GDK_2, 0x2082, -GDK_3, 0x2083, -GDK_4, 0x2084, -GDK_5, 0x2085, -GDK_6, 0x2086, -GDK_7, 0x2087, -GDK_8, 0x2088, -GDK_9, 0x2089, -GDK_equal, 0x208C, -GDK_V, 0x01D9, -GDK_v, 0x01DA, -GDK_nobreakspace, 0x030C, -0x01F2, 0x01C5, -GDK_dead_caron, 0x02C7, -GDK_Multi_key, GDK_quotedbl, GDK_U, 0x01D9, -GDK_Multi_key, GDK_quotedbl, GDK_u, 0x01DA, -GDK_space, 0x00B8, -GDK_nobreakspace, 0x0327, -GDK_cent, 0x20B5, -GDK_Cacute, 0x1E08, -GDK_cacute, 0x1E09, -GDK_dead_cedilla, 0x00B8, -GDK_space, 0x02DB, -GDK_nobreakspace, 0x0328, -GDK_Omacron, 0x01EC, -GDK_omacron, 0x01ED, -GDK_dead_ogonek, 0x02DB, -GDK_space, 0x037A, -GDK_Greek_alphaaccent, 0x1FB4, -GDK_Greek_etaaccent, 0x1FC4, -GDK_Greek_omegaaccent, 0x1FF4, -GDK_Greek_ALPHA, 0x1FBC, -GDK_Greek_ETA, 0x1FCC, -GDK_Greek_OMEGA, 0x1FFC, -GDK_Greek_alpha, 0x1FB3, -GDK_Greek_eta, 0x1FC3, -GDK_Greek_omega, 0x1FF3, -GDK_dead_iota, 0x037A, -GDK_dead_grave, GDK_Greek_alpha, 0x1FB2, -GDK_dead_grave, GDK_Greek_eta, 0x1FC2, -GDK_dead_grave, GDK_Greek_omega, 0x1FF2, -GDK_dead_acute, GDK_Greek_alpha, 0x1FB4, -GDK_dead_acute, GDK_Greek_eta, 0x1FC4, -GDK_dead_acute, GDK_Greek_omega, 0x1FF4, -GDK_dead_tilde, GDK_Greek_alpha, 0x1FB7, -GDK_dead_tilde, GDK_Greek_eta, 0x1FC7, -GDK_dead_tilde, GDK_Greek_omega, 0x1FF7, -GDK_dead_tilde, 0x1F00, 0x1F86, -GDK_dead_tilde, 0x1F01, 0x1F87, -GDK_dead_tilde, 0x1F08, 0x1F8E, -GDK_dead_tilde, 0x1F09, 0x1F8F, -GDK_dead_tilde, 0x1F20, 0x1F96, -GDK_dead_tilde, 0x1F21, 0x1F97, -GDK_dead_tilde, 0x1F28, 0x1F9E, -GDK_dead_tilde, 0x1F29, 0x1F9F, -GDK_dead_tilde, 0x1F60, 0x1FA6, -GDK_dead_tilde, 0x1F61, 0x1FA7, -GDK_dead_tilde, 0x1F68, 0x1FAE, -GDK_dead_tilde, 0x1F69, 0x1FAF, -GDK_dead_psili, GDK_Greek_ALPHA, 0x1F88, -GDK_dead_psili, GDK_Greek_ETA, 0x1F98, -GDK_dead_psili, GDK_Greek_OMEGA, 0x1FA8, -GDK_dead_psili, GDK_Greek_alpha, 0x1F80, -GDK_dead_psili, GDK_Greek_eta, 0x1F90, -GDK_dead_psili, GDK_Greek_omega, 0x1FA0, -GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F89, -GDK_dead_dasia, GDK_Greek_ETA, 0x1F99, -GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FA9, -GDK_dead_dasia, GDK_Greek_alpha, 0x1F81, -GDK_dead_dasia, GDK_Greek_eta, 0x1F91, -GDK_dead_dasia, GDK_Greek_omega, 0x1FA1, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8A, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_ETA, 0x1F9A, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAA, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_alpha, 0x1F82, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_eta, 0x1F92, -GDK_dead_grave, GDK_dead_psili, GDK_Greek_omega, 0x1FA2, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8B, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9B, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAB, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_alpha, 0x1F83, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_eta, 0x1F93, -GDK_dead_grave, GDK_dead_dasia, GDK_Greek_omega, 0x1FA3, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_dead_acute, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_dead_acute, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8E, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_ETA, 0x1F9E, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAE, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_alpha, 0x1F86, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_eta, 0x1F96, -GDK_dead_tilde, GDK_dead_psili, GDK_Greek_omega, 0x1FA6, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8F, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9F, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAF, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_alpha, 0x1F87, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_eta, 0x1F97, -GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_omega, 0x1FA7, -GDK_Multi_key, GDK_apostrophe, GDK_Greek_alpha, 0x1FB4, -GDK_Multi_key, GDK_apostrophe, GDK_Greek_eta, 0x1FC4, -GDK_Multi_key, GDK_apostrophe, GDK_Greek_omega, 0x1FF4, -GDK_Multi_key, GDK_apostrophe, 0x1F00, 0x1F84, -GDK_Multi_key, GDK_apostrophe, 0x1F01, 0x1F85, -GDK_Multi_key, GDK_apostrophe, 0x1F08, 0x1F8C, -GDK_Multi_key, GDK_apostrophe, 0x1F09, 0x1F8D, -GDK_Multi_key, GDK_apostrophe, 0x1F20, 0x1F94, -GDK_Multi_key, GDK_apostrophe, 0x1F21, 0x1F95, -GDK_Multi_key, GDK_apostrophe, 0x1F28, 0x1F9C, -GDK_Multi_key, GDK_apostrophe, 0x1F29, 0x1F9D, -GDK_Multi_key, GDK_apostrophe, 0x1F60, 0x1FA4, -GDK_Multi_key, GDK_apostrophe, 0x1F61, 0x1FA5, -GDK_Multi_key, GDK_apostrophe, 0x1F68, 0x1FAC, -GDK_Multi_key, GDK_apostrophe, 0x1F69, 0x1FAD, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F89, -GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F99, -GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1FA9, -GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F81, -GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F91, -GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1FA1, -GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F88, -GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F98, -GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1FA8, -GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F80, -GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F90, -GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1FA0, -GDK_Multi_key, GDK_grave, GDK_Greek_alpha, 0x1FB2, -GDK_Multi_key, GDK_grave, GDK_Greek_eta, 0x1FC2, -GDK_Multi_key, GDK_grave, GDK_Greek_omega, 0x1FF2, -GDK_Multi_key, GDK_grave, 0x1F00, 0x1F82, -GDK_Multi_key, GDK_grave, 0x1F01, 0x1F83, -GDK_Multi_key, GDK_grave, 0x1F08, 0x1F8A, -GDK_Multi_key, GDK_grave, 0x1F09, 0x1F8B, -GDK_Multi_key, GDK_grave, 0x1F20, 0x1F92, -GDK_Multi_key, GDK_grave, 0x1F21, 0x1F93, -GDK_Multi_key, GDK_grave, 0x1F28, 0x1F9A, -GDK_Multi_key, GDK_grave, 0x1F29, 0x1F9B, -GDK_Multi_key, GDK_grave, 0x1F60, 0x1FA2, -GDK_Multi_key, GDK_grave, 0x1F61, 0x1FA3, -GDK_Multi_key, GDK_grave, 0x1F68, 0x1FAA, -GDK_Multi_key, GDK_grave, 0x1F69, 0x1FAB, -GDK_Multi_key, GDK_asciitilde, GDK_Greek_alpha, 0x1FB7, -GDK_Multi_key, GDK_asciitilde, GDK_Greek_eta, 0x1FC7, -GDK_Multi_key, GDK_asciitilde, GDK_Greek_omega, 0x1FF7, -GDK_Multi_key, GDK_asciitilde, 0x1F00, 0x1F86, -GDK_Multi_key, GDK_asciitilde, 0x1F01, 0x1F87, -GDK_Multi_key, GDK_asciitilde, 0x1F08, 0x1F8E, -GDK_Multi_key, GDK_asciitilde, 0x1F09, 0x1F8F, -GDK_Multi_key, GDK_asciitilde, 0x1F20, 0x1F96, -GDK_Multi_key, GDK_asciitilde, 0x1F21, 0x1F97, -GDK_Multi_key, GDK_asciitilde, 0x1F28, 0x1F9E, -GDK_Multi_key, GDK_asciitilde, 0x1F29, 0x1F9F, -GDK_Multi_key, GDK_asciitilde, 0x1F60, 0x1FA6, -GDK_Multi_key, GDK_asciitilde, 0x1F61, 0x1FA7, -GDK_Multi_key, GDK_asciitilde, 0x1F68, 0x1FAE, -GDK_Multi_key, GDK_asciitilde, 0x1F69, 0x1FAF, -GDK_Multi_key, GDK_acute, GDK_Greek_alpha, 0x1FB4, -GDK_Multi_key, GDK_acute, GDK_Greek_eta, 0x1FC4, -GDK_Multi_key, GDK_acute, GDK_Greek_omega, 0x1FF4, -GDK_Multi_key, GDK_acute, 0x1F00, 0x1F84, -GDK_Multi_key, GDK_acute, 0x1F01, 0x1F85, -GDK_Multi_key, GDK_acute, 0x1F08, 0x1F8C, -GDK_Multi_key, GDK_acute, 0x1F09, 0x1F8D, -GDK_Multi_key, GDK_acute, 0x1F20, 0x1F94, -GDK_Multi_key, GDK_acute, 0x1F21, 0x1F95, -GDK_Multi_key, GDK_acute, 0x1F28, 0x1F9C, -GDK_Multi_key, GDK_acute, 0x1F29, 0x1F9D, -GDK_Multi_key, GDK_acute, 0x1F60, 0x1FA4, -GDK_Multi_key, GDK_acute, 0x1F61, 0x1FA5, -GDK_Multi_key, GDK_acute, 0x1F68, 0x1FAC, -GDK_Multi_key, GDK_acute, 0x1F69, 0x1FAD, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8B, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F9B, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAB, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F83, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F93, -GDK_dead_grave, GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1FA3, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F8A, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F9A, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1FAA, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F82, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F92, -GDK_dead_grave, GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1FA2, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_dead_acute, GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_dead_acute, GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8F, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_ETA, 0x1F9F, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAF, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_alpha, 0x1F87, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_eta, 0x1F97, -GDK_dead_tilde, GDK_Multi_key, GDK_parenleft, GDK_Greek_omega, 0x1FA7, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_ALPHA, 0x1F8E, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_ETA, 0x1F9E, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_OMEGA, 0x1FAE, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_alpha, 0x1F86, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_eta, 0x1F96, -GDK_dead_tilde, GDK_Multi_key, GDK_parenright, GDK_Greek_omega, 0x1FA6, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_Multi_key, GDK_apostrophe, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_Multi_key, GDK_apostrophe, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_Multi_key, GDK_apostrophe, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_Multi_key, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8B, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_ETA, 0x1F9B, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAB, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_alpha, 0x1F83, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_eta, 0x1F93, -GDK_Multi_key, GDK_grave, GDK_parenleft, GDK_Greek_omega, 0x1FA3, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_ALPHA, 0x1F8A, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_ETA, 0x1F9A, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_OMEGA, 0x1FAA, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_alpha, 0x1F82, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_eta, 0x1F92, -GDK_Multi_key, GDK_grave, GDK_parenright, GDK_Greek_omega, 0x1FA2, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8A, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_ETA, 0x1F9A, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAA, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_alpha, 0x1F82, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_eta, 0x1F92, -GDK_Multi_key, GDK_grave, GDK_dead_psili, GDK_Greek_omega, 0x1FA2, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8B, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9B, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAB, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_alpha, 0x1F83, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_eta, 0x1F93, -GDK_Multi_key, GDK_grave, GDK_dead_dasia, GDK_Greek_omega, 0x1FA3, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8F, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_ETA, 0x1F9F, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAF, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_alpha, 0x1F87, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_eta, 0x1F97, -GDK_Multi_key, GDK_asciitilde, GDK_parenleft, GDK_Greek_omega, 0x1FA7, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_ALPHA, 0x1F8E, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_ETA, 0x1F9E, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_OMEGA, 0x1FAE, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_alpha, 0x1F86, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_eta, 0x1F96, -GDK_Multi_key, GDK_asciitilde, GDK_parenright, GDK_Greek_omega, 0x1FA6, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8E, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_ETA, 0x1F9E, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAE, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_alpha, 0x1F86, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_eta, 0x1F96, -GDK_Multi_key, GDK_asciitilde, GDK_dead_psili, GDK_Greek_omega, 0x1FA6, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8F, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9F, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAF, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_alpha, 0x1F87, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_eta, 0x1F97, -GDK_Multi_key, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_omega, 0x1FA7, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_Multi_key, GDK_acute, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_Multi_key, GDK_acute, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_Multi_key, GDK_acute, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_Multi_key, GDK_acute, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_kana_WO, 0x30FA, -GDK_kana_U, 0x30F4, -GDK_kana_KA, 0x30AC, -GDK_kana_KI, 0x30AE, -GDK_kana_KU, 0x30B0, -GDK_kana_KE, 0x30B2, -GDK_kana_KO, 0x30B4, -GDK_kana_SA, 0x30B6, -GDK_kana_SHI, 0x30B8, -GDK_kana_SU, 0x30BA, -GDK_kana_SE, 0x30BC, -GDK_kana_SO, 0x30BE, -GDK_kana_TA, 0x30C0, -GDK_kana_CHI, 0x30C2, -GDK_kana_TSU, 0x30C5, -GDK_kana_TE, 0x30C7, -GDK_kana_TO, 0x30C9, -GDK_kana_HA, 0x30D0, -GDK_kana_HI, 0x30D3, -GDK_kana_FU, 0x30D6, -GDK_kana_HE, 0x30D9, -GDK_kana_HO, 0x30DC, -GDK_kana_WA, 0x30F7, -GDK_kana_HA, 0x30D1, -GDK_kana_HI, 0x30D4, -GDK_kana_FU, 0x30D7, -GDK_kana_HE, 0x30DA, -GDK_kana_HO, 0x30DD, -GDK_space, 0x0323, -GDK_plus, 0x2A25, -GDK_minus, 0x2A2A, -GDK_equal, 0x2A66, -GDK_nobreakspace, 0x0323, -GDK_Abreve, 0x1EB6, -GDK_abreve, 0x1EB7, -GDK_dead_belowdot, 0x0323, -GDK_Multi_key, GDK_plus, GDK_O, 0x1EE2, -GDK_Multi_key, GDK_plus, GDK_U, 0x1EF0, -GDK_Multi_key, GDK_plus, GDK_o, 0x1EE3, -GDK_Multi_key, GDK_plus, GDK_u, 0x1EF1, -GDK_space, 0x0309, -GDK_B, 0x0181, -GDK_C, 0x0187, -GDK_D, 0x018A, -GDK_F, 0x0191, -GDK_G, 0x0193, -GDK_K, 0x0198, -GDK_M, 0x2C6E, -GDK_N, 0x019D, -GDK_P, 0x01A4, -GDK_T, 0x01AC, -GDK_V, 0x01B2, -GDK_W, 0x2C72, -GDK_Z, 0x0224, -GDK_b, 0x0253, -GDK_c, 0x0188, -GDK_d, 0x0257, -GDK_f, 0x0192, -GDK_g, 0x0260, -GDK_h, 0x0266, -GDK_k, 0x0199, -GDK_m, 0x0271, -GDK_n, 0x0272, -GDK_p, 0x01A5, -GDK_q, 0x02A0, -GDK_s, 0x0282, -GDK_t, 0x01AD, -GDK_v, 0x028B, -GDK_w, 0x2C73, -GDK_z, 0x0225, -GDK_nobreakspace, 0x0309, -GDK_Abreve, 0x1EB2, -GDK_abreve, 0x1EB3, -0x0256, 0x1D91, -0x025C, 0x025D, -0x025F, 0x0284, -0x0279, 0x027B, -GDK_dead_hook, 0x0309, -GDK_Multi_key, GDK_plus, GDK_O, 0x1EDE, -GDK_Multi_key, GDK_plus, GDK_U, 0x1EEC, -GDK_Multi_key, GDK_plus, GDK_o, 0x1EDF, -GDK_Multi_key, GDK_plus, GDK_u, 0x1EED, -GDK_Multi_key, GDK_U, GDK_A, 0x1EB2, -GDK_Multi_key, GDK_U, GDK_a, 0x1EB3, -GDK_Multi_key, GDK_asciicircum, GDK_A, 0x1EA8, -GDK_Multi_key, GDK_asciicircum, GDK_E, 0x1EC2, -GDK_Multi_key, GDK_asciicircum, GDK_O, 0x1ED4, -GDK_Multi_key, GDK_asciicircum, GDK_a, 0x1EA9, -GDK_Multi_key, GDK_asciicircum, GDK_e, 0x1EC3, -GDK_Multi_key, GDK_asciicircum, GDK_o, 0x1ED5, -GDK_Multi_key, GDK_b, GDK_A, 0x1EB2, -GDK_Multi_key, GDK_b, GDK_a, 0x1EB3, -GDK_space, 0x031B, -GDK_nobreakspace, 0x031B, -GDK_Utilde, 0x1EEE, -GDK_utilde, 0x1EEF, -GDK_dead_horn, 0x031B, -GDK_Greek_ALPHA, 0x1F08, -GDK_Greek_EPSILON, 0x1F18, -GDK_Greek_ETA, 0x1F28, -GDK_Greek_IOTA, 0x1F38, -GDK_Greek_OMICRON, 0x1F48, -GDK_Greek_OMEGA, 0x1F68, -GDK_Greek_alpha, 0x1F00, -GDK_Greek_epsilon, 0x1F10, -GDK_Greek_eta, 0x1F20, -GDK_Greek_iota, 0x1F30, -GDK_Greek_omicron, 0x1F40, -GDK_Greek_rho, 0x1FE4, -GDK_Greek_upsilon, 0x1F50, -GDK_Greek_omega, 0x1F60, -GDK_Greek_ALPHA, 0x1F09, -GDK_Greek_EPSILON, 0x1F19, -GDK_Greek_ETA, 0x1F29, -GDK_Greek_IOTA, 0x1F39, -GDK_Greek_OMICRON, 0x1F49, -GDK_Greek_RHO, 0x1FEC, -GDK_Greek_UPSILON, 0x1F59, -GDK_Greek_OMEGA, 0x1F69, -GDK_Greek_alpha, 0x1F01, -GDK_Greek_epsilon, 0x1F11, -GDK_Greek_eta, 0x1F21, -GDK_Greek_iota, 0x1F31, -GDK_Greek_omicron, 0x1F41, -GDK_Greek_rho, 0x1FE5, -GDK_Greek_upsilon, 0x1F51, -GDK_Greek_omega, 0x1F61, -GDK_space, GDK_space, 0x00A0, -GDK_space, GDK_apostrophe, 0x0027, -GDK_space, GDK_parenleft, 0x02D8, -GDK_space, GDK_comma, 0x00B8, -GDK_space, GDK_minus, 0x007E, -GDK_space, GDK_period, 0x2008, -GDK_space, GDK_less, 0x02C7, -GDK_space, GDK_greater, 0x005E, -GDK_space, GDK_asciicircum, 0x005E, -GDK_space, GDK_grave, 0x0060, -GDK_space, GDK_asciitilde, 0x007E, -GDK_exclam, GDK_exclam, 0x00A1, -GDK_exclam, GDK_question, 0x203D, -GDK_exclam, GDK_A, 0x1EA0, -GDK_exclam, GDK_B, 0x1E04, -GDK_exclam, GDK_D, 0x1E0C, -GDK_exclam, GDK_E, 0x1EB8, -GDK_exclam, GDK_H, 0x1E24, -GDK_exclam, GDK_I, 0x1ECA, -GDK_exclam, GDK_K, 0x1E32, -GDK_exclam, GDK_L, 0x1E36, -GDK_exclam, GDK_M, 0x1E42, -GDK_exclam, GDK_N, 0x1E46, -GDK_exclam, GDK_O, 0x1ECC, -GDK_exclam, GDK_P, 0x00B6, -GDK_exclam, GDK_R, 0x1E5A, -GDK_exclam, GDK_S, 0x1E62, -GDK_exclam, GDK_T, 0x1E6C, -GDK_exclam, GDK_U, 0x1EE4, -GDK_exclam, GDK_V, 0x1E7E, -GDK_exclam, GDK_W, 0x1E88, -GDK_exclam, GDK_Y, 0x1EF4, -GDK_exclam, GDK_Z, 0x1E92, -GDK_exclam, GDK_asciicircum, 0x00A6, -GDK_exclam, GDK_a, 0x1EA1, -GDK_exclam, GDK_b, 0x1E05, -GDK_exclam, GDK_d, 0x1E0D, -GDK_exclam, GDK_e, 0x1EB9, -GDK_exclam, GDK_h, 0x1E25, -GDK_exclam, GDK_i, 0x1ECB, -GDK_exclam, GDK_k, 0x1E33, -GDK_exclam, GDK_l, 0x1E37, -GDK_exclam, GDK_m, 0x1E43, -GDK_exclam, GDK_n, 0x1E47, -GDK_exclam, GDK_o, 0x1ECD, -GDK_exclam, GDK_p, 0x00B6, -GDK_exclam, GDK_r, 0x1E5B, -GDK_exclam, GDK_s, 0x1E63, -GDK_exclam, GDK_t, 0x1E6D, -GDK_exclam, GDK_u, 0x1EE5, -GDK_exclam, GDK_v, 0x1E7F, -GDK_exclam, GDK_w, 0x1E89, -GDK_exclam, GDK_y, 0x1EF5, -GDK_exclam, GDK_z, 0x1E93, -GDK_quotedbl, GDK_quotedbl, 0x00A8, -GDK_quotedbl, GDK_apostrophe, 0x0344, -GDK_quotedbl, GDK_comma, 0x201E, -GDK_quotedbl, GDK_slash, 0x301E, -GDK_quotedbl, GDK_less, 0x201C, -GDK_quotedbl, GDK_greater, 0x201D, -GDK_quotedbl, GDK_A, 0x00C4, -GDK_quotedbl, GDK_E, 0x00CB, -GDK_quotedbl, GDK_H, 0x1E26, -GDK_quotedbl, GDK_I, 0x00CF, -GDK_quotedbl, GDK_O, 0x00D6, -GDK_quotedbl, GDK_U, 0x00DC, -GDK_quotedbl, GDK_W, 0x1E84, -GDK_quotedbl, GDK_X, 0x1E8C, -GDK_quotedbl, GDK_Y, 0x0178, -GDK_quotedbl, GDK_backslash, 0x301D, -GDK_quotedbl, GDK_a, 0x00E4, -GDK_quotedbl, GDK_e, 0x00EB, -GDK_quotedbl, GDK_h, 0x1E27, -GDK_quotedbl, GDK_i, 0x00EF, -GDK_quotedbl, GDK_o, 0x00F6, -GDK_quotedbl, GDK_t, 0x1E97, -GDK_quotedbl, GDK_u, 0x00FC, -GDK_quotedbl, GDK_w, 0x1E85, -GDK_quotedbl, GDK_x, 0x1E8D, -GDK_quotedbl, GDK_y, 0x00FF, -GDK_quotedbl, GDK_acute, 0x0344, -GDK_quotedbl, GDK_Otilde, 0x1E4E, -GDK_quotedbl, GDK_otilde, 0x1E4F, -GDK_quotedbl, 0x03D2, 0x03D4, -GDK_quotedbl, GDK_Umacron, 0x1E7A, -GDK_quotedbl, GDK_umacron, 0x1E7B, -GDK_quotedbl, 0x04D8, 0x04DA, -GDK_quotedbl, 0x04D9, 0x04DB, -GDK_quotedbl, 0x04E8, 0x04EA, -GDK_quotedbl, 0x04E9, 0x04EB, -GDK_quotedbl, GDK_Ukrainian_i, 0x0457, -GDK_quotedbl, GDK_Ukrainian_I, 0x0407, -GDK_quotedbl, GDK_Cyrillic_a, 0x04D3, -GDK_quotedbl, GDK_Cyrillic_ie, 0x0451, -GDK_quotedbl, GDK_Cyrillic_i, 0x04E5, -GDK_quotedbl, GDK_Cyrillic_o, 0x04E7, -GDK_quotedbl, GDK_Cyrillic_u, 0x04F1, -GDK_quotedbl, GDK_Cyrillic_zhe, 0x04DD, -GDK_quotedbl, GDK_Cyrillic_yeru, 0x04F9, -GDK_quotedbl, GDK_Cyrillic_ze, 0x04DF, -GDK_quotedbl, GDK_Cyrillic_e, 0x04ED, -GDK_quotedbl, GDK_Cyrillic_che, 0x04F5, -GDK_quotedbl, GDK_Cyrillic_A, 0x04D2, -GDK_quotedbl, GDK_Cyrillic_IE, 0x0401, -GDK_quotedbl, GDK_Cyrillic_I, 0x04E4, -GDK_quotedbl, GDK_Cyrillic_O, 0x04E6, -GDK_quotedbl, GDK_Cyrillic_U, 0x04F0, -GDK_quotedbl, GDK_Cyrillic_ZHE, 0x04DC, -GDK_quotedbl, GDK_Cyrillic_YERU, 0x04F8, -GDK_quotedbl, GDK_Cyrillic_ZE, 0x04DE, -GDK_quotedbl, GDK_Cyrillic_E, 0x04EC, -GDK_quotedbl, GDK_Cyrillic_CHE, 0x04F4, -GDK_quotedbl, GDK_Greek_IOTA, 0x03AA, -GDK_quotedbl, GDK_Greek_UPSILON, 0x03AB, -GDK_quotedbl, GDK_Greek_iota, 0x03CA, -GDK_quotedbl, GDK_Greek_upsilon, 0x03CB, -GDK_quotedbl, GDK_dead_acute, 0x0344, -GDK_numbersign, GDK_numbersign, 0x266F, -GDK_numbersign, GDK_b, 0x266D, -GDK_numbersign, GDK_f, 0x266E, -GDK_percent, GDK_o, 0x2030, -GDK_apostrophe, GDK_space, 0x0027, -GDK_apostrophe, GDK_apostrophe, 0x00B4, -GDK_apostrophe, GDK_comma, 0x201A, -GDK_apostrophe, GDK_less, 0x2018, -GDK_apostrophe, GDK_greater, 0x2019, -GDK_apostrophe, GDK_A, 0x00C1, -GDK_apostrophe, GDK_C, 0x0106, -GDK_apostrophe, GDK_E, 0x00C9, -GDK_apostrophe, GDK_G, 0x01F4, -GDK_apostrophe, GDK_I, 0x00CD, -GDK_apostrophe, GDK_K, 0x1E30, -GDK_apostrophe, GDK_L, 0x0139, -GDK_apostrophe, GDK_M, 0x1E3E, -GDK_apostrophe, GDK_N, 0x0143, -GDK_apostrophe, GDK_O, 0x00D3, -GDK_apostrophe, GDK_P, 0x1E54, -GDK_apostrophe, GDK_R, 0x0154, -GDK_apostrophe, GDK_S, 0x015A, -GDK_apostrophe, GDK_U, 0x00DA, -GDK_apostrophe, GDK_W, 0x1E82, -GDK_apostrophe, GDK_Y, 0x00DD, -GDK_apostrophe, GDK_Z, 0x0179, -GDK_apostrophe, GDK_a, 0x00E1, -GDK_apostrophe, GDK_c, 0x0107, -GDK_apostrophe, GDK_e, 0x00E9, -GDK_apostrophe, GDK_g, 0x01F5, -GDK_apostrophe, GDK_i, 0x00ED, -GDK_apostrophe, GDK_k, 0x1E31, -GDK_apostrophe, GDK_l, 0x013A, -GDK_apostrophe, GDK_m, 0x1E3F, -GDK_apostrophe, GDK_n, 0x0144, -GDK_apostrophe, GDK_o, 0x00F3, -GDK_apostrophe, GDK_p, 0x1E55, -GDK_apostrophe, GDK_r, 0x0155, -GDK_apostrophe, GDK_s, 0x015B, -GDK_apostrophe, GDK_u, 0x00FA, -GDK_apostrophe, GDK_w, 0x1E83, -GDK_apostrophe, GDK_y, 0x00FD, -GDK_apostrophe, GDK_z, 0x017A, -GDK_apostrophe, GDK_Acircumflex, 0x1EA4, -GDK_apostrophe, GDK_Aring, 0x01FA, -GDK_apostrophe, GDK_AE, 0x01FC, -GDK_apostrophe, GDK_Ccedilla, 0x1E08, -GDK_apostrophe, GDK_Ecircumflex, 0x1EBE, -GDK_apostrophe, GDK_Idiaeresis, 0x1E2E, -GDK_apostrophe, GDK_Ocircumflex, 0x1ED0, -GDK_apostrophe, GDK_Otilde, 0x1E4C, -GDK_apostrophe, GDK_Ooblique, 0x01FE, -GDK_apostrophe, GDK_Udiaeresis, 0x01D7, -GDK_apostrophe, GDK_acircumflex, 0x1EA5, -GDK_apostrophe, GDK_aring, 0x01FB, -GDK_apostrophe, GDK_ae, 0x01FD, -GDK_apostrophe, GDK_ccedilla, 0x1E09, -GDK_apostrophe, GDK_ecircumflex, 0x1EBF, -GDK_apostrophe, GDK_idiaeresis, 0x1E2F, -GDK_apostrophe, GDK_ocircumflex, 0x1ED1, -GDK_apostrophe, GDK_otilde, 0x1E4D, -GDK_apostrophe, GDK_oslash, 0x01FF, -GDK_apostrophe, GDK_udiaeresis, 0x01D8, -GDK_apostrophe, GDK_Abreve, 0x1EAE, -GDK_apostrophe, GDK_abreve, 0x1EAF, -GDK_apostrophe, GDK_Emacron, 0x1E16, -GDK_apostrophe, GDK_emacron, 0x1E17, -GDK_apostrophe, GDK_Omacron, 0x1E52, -GDK_apostrophe, GDK_Utilde, 0x1E78, -GDK_apostrophe, GDK_omacron, 0x1E53, -GDK_apostrophe, GDK_utilde, 0x1E79, -GDK_apostrophe, GDK_Cyrillic_ghe, 0x0453, -GDK_apostrophe, GDK_Cyrillic_ka, 0x045C, -GDK_apostrophe, GDK_Cyrillic_GHE, 0x0403, -GDK_apostrophe, GDK_Cyrillic_KA, 0x040C, -GDK_apostrophe, GDK_Greek_iotadieresis, 0x0390, -GDK_apostrophe, GDK_Greek_upsilondieresis, 0x03B0, -GDK_apostrophe, GDK_Greek_ALPHA, 0x0386, -GDK_apostrophe, GDK_Greek_EPSILON, 0x0388, -GDK_apostrophe, GDK_Greek_ETA, 0x0389, -GDK_apostrophe, GDK_Greek_IOTA, 0x038A, -GDK_apostrophe, GDK_Greek_OMICRON, 0x038C, -GDK_apostrophe, GDK_Greek_UPSILON, 0x038E, -GDK_apostrophe, GDK_Greek_OMEGA, 0x038F, -GDK_apostrophe, GDK_Greek_alpha, 0x03AC, -GDK_apostrophe, GDK_Greek_epsilon, 0x03AD, -GDK_apostrophe, GDK_Greek_eta, 0x03AE, -GDK_apostrophe, GDK_Greek_iota, 0x03AF, -GDK_apostrophe, GDK_Greek_omicron, 0x03CC, -GDK_apostrophe, GDK_Greek_upsilon, 0x03CD, -GDK_apostrophe, GDK_Greek_omega, 0x03CE, -GDK_apostrophe, 0x1F00, 0x1F04, -GDK_apostrophe, 0x1F01, 0x1F05, -GDK_apostrophe, 0x1F08, 0x1F0C, -GDK_apostrophe, 0x1F09, 0x1F0D, -GDK_apostrophe, 0x1F10, 0x1F14, -GDK_apostrophe, 0x1F11, 0x1F15, -GDK_apostrophe, 0x1F18, 0x1F1C, -GDK_apostrophe, 0x1F19, 0x1F1D, -GDK_apostrophe, 0x1F20, 0x1F24, -GDK_apostrophe, 0x1F21, 0x1F25, -GDK_apostrophe, 0x1F28, 0x1F2C, -GDK_apostrophe, 0x1F29, 0x1F2D, -GDK_apostrophe, 0x1F30, 0x1F34, -GDK_apostrophe, 0x1F31, 0x1F35, -GDK_apostrophe, 0x1F38, 0x1F3C, -GDK_apostrophe, 0x1F39, 0x1F3D, -GDK_apostrophe, 0x1F40, 0x1F44, -GDK_apostrophe, 0x1F41, 0x1F45, -GDK_apostrophe, 0x1F48, 0x1F4C, -GDK_apostrophe, 0x1F49, 0x1F4D, -GDK_apostrophe, 0x1F50, 0x1F54, -GDK_apostrophe, 0x1F51, 0x1F55, -GDK_apostrophe, 0x1F59, 0x1F5D, -GDK_apostrophe, 0x1F60, 0x1F64, -GDK_apostrophe, 0x1F61, 0x1F65, -GDK_apostrophe, 0x1F68, 0x1F6C, -GDK_apostrophe, 0x1F69, 0x1F6D, -GDK_parenleft, GDK_space, 0x02D8, -GDK_parenleft, GDK_parenleft, 0x005B, -GDK_parenleft, GDK_minus, 0x007B, -GDK_parenleft, GDK_A, 0x0102, -GDK_parenleft, GDK_G, 0x011E, -GDK_parenleft, GDK_a, 0x0103, -GDK_parenleft, GDK_c, 0x00A9, -GDK_parenleft, GDK_g, 0x011F, -GDK_parenleft, GDK_r, 0x00AE, -GDK_parenleft, GDK_Greek_ALPHA, 0x1F09, -GDK_parenleft, GDK_Greek_EPSILON, 0x1F19, -GDK_parenleft, GDK_Greek_ETA, 0x1F29, -GDK_parenleft, GDK_Greek_IOTA, 0x1F39, -GDK_parenleft, GDK_Greek_OMICRON, 0x1F49, -GDK_parenleft, GDK_Greek_RHO, 0x1FEC, -GDK_parenleft, GDK_Greek_UPSILON, 0x1F59, -GDK_parenleft, GDK_Greek_OMEGA, 0x1F69, -GDK_parenleft, GDK_Greek_alpha, 0x1F01, -GDK_parenleft, GDK_Greek_epsilon, 0x1F11, -GDK_parenleft, GDK_Greek_eta, 0x1F21, -GDK_parenleft, GDK_Greek_iota, 0x1F31, -GDK_parenleft, GDK_Greek_omicron, 0x1F41, -GDK_parenleft, GDK_Greek_rho, 0x1FE5, -GDK_parenleft, GDK_Greek_upsilon, 0x1F51, -GDK_parenleft, GDK_Greek_omega, 0x1F61, -GDK_parenright, GDK_parenright, 0x005D, -GDK_parenright, GDK_minus, 0x007D, -GDK_parenright, GDK_Greek_ALPHA, 0x1F08, -GDK_parenright, GDK_Greek_EPSILON, 0x1F18, -GDK_parenright, GDK_Greek_ETA, 0x1F28, -GDK_parenright, GDK_Greek_IOTA, 0x1F38, -GDK_parenright, GDK_Greek_OMICRON, 0x1F48, -GDK_parenright, GDK_Greek_OMEGA, 0x1F68, -GDK_parenright, GDK_Greek_alpha, 0x1F00, -GDK_parenright, GDK_Greek_epsilon, 0x1F10, -GDK_parenright, GDK_Greek_eta, 0x1F20, -GDK_parenright, GDK_Greek_iota, 0x1F30, -GDK_parenright, GDK_Greek_omicron, 0x1F40, -GDK_parenright, GDK_Greek_rho, 0x1FE4, -GDK_parenright, GDK_Greek_upsilon, 0x1F50, -GDK_parenright, GDK_Greek_omega, 0x1F60, -GDK_asterisk, GDK_0, 0x00B0, -GDK_asterisk, GDK_A, 0x00C5, -GDK_asterisk, GDK_U, 0x016E, -GDK_asterisk, GDK_a, 0x00E5, -GDK_asterisk, GDK_u, 0x016F, -GDK_plus, GDK_plus, 0x0023, -GDK_plus, GDK_minus, 0x00B1, -GDK_plus, GDK_O, 0x01A0, -GDK_plus, GDK_U, 0x01AF, -GDK_plus, GDK_o, 0x01A1, -GDK_plus, GDK_u, 0x01B0, -GDK_comma, GDK_space, 0x00B8, -GDK_comma, GDK_quotedbl, 0x201E, -GDK_comma, GDK_apostrophe, 0x201A, -GDK_comma, GDK_comma, 0x00B8, -GDK_comma, GDK_minus, 0x00AC, -GDK_comma, GDK_A, 0x0104, -GDK_comma, GDK_C, 0x00C7, -GDK_comma, GDK_D, 0x1E10, -GDK_comma, GDK_E, 0x0228, -GDK_comma, GDK_G, 0x0122, -GDK_comma, GDK_H, 0x1E28, -GDK_comma, GDK_I, 0x012E, -GDK_comma, GDK_K, 0x0136, -GDK_comma, GDK_L, 0x013B, -GDK_comma, GDK_N, 0x0145, -GDK_comma, GDK_R, 0x0156, -GDK_comma, GDK_S, 0x015E, -GDK_comma, GDK_T, 0x0162, -GDK_comma, GDK_U, 0x0172, -GDK_comma, GDK_a, 0x0105, -GDK_comma, GDK_c, 0x00E7, -GDK_comma, GDK_d, 0x1E11, -GDK_comma, GDK_e, 0x0229, -GDK_comma, GDK_g, 0x0123, -GDK_comma, GDK_h, 0x1E29, -GDK_comma, GDK_i, 0x012F, -GDK_comma, GDK_k, 0x0137, -GDK_comma, GDK_l, 0x013C, -GDK_comma, GDK_n, 0x0146, -GDK_comma, GDK_r, 0x0157, -GDK_comma, GDK_s, 0x015F, -GDK_comma, GDK_t, 0x0163, -GDK_comma, GDK_u, 0x0173, -GDK_minus, GDK_space, 0x007E, -GDK_minus, GDK_parenleft, 0x007B, -GDK_minus, GDK_parenright, 0x007D, -GDK_minus, GDK_plus, 0x00B1, -GDK_minus, GDK_comma, 0x00AC, -GDK_minus, GDK_colon, 0x00F7, -GDK_minus, GDK_greater, 0x2192, -GDK_minus, GDK_A, 0x00C3, -GDK_minus, GDK_D, 0x0110, -GDK_minus, GDK_E, 0x0112, -GDK_minus, GDK_I, 0x012A, -GDK_minus, GDK_L, 0x00A3, -GDK_minus, GDK_N, 0x00D1, -GDK_minus, GDK_O, 0x00D5, -GDK_minus, GDK_U, 0x016A, -GDK_minus, GDK_Y, 0x00A5, -GDK_minus, GDK_asciicircum, 0x00AF, -GDK_minus, GDK_a, 0x0101, -GDK_minus, GDK_d, 0x0111, -GDK_minus, GDK_e, 0x0113, -GDK_minus, GDK_i, 0x012B, -GDK_minus, GDK_l, 0x00A3, -GDK_minus, GDK_n, 0x00F1, -GDK_minus, GDK_o, 0x014D, -GDK_minus, GDK_u, 0x016B, -GDK_minus, GDK_y, 0x00A5, -GDK_period, GDK_minus, 0x00B7, -GDK_period, GDK_period, 0x2026, -GDK_period, GDK_less, 0x2039, -GDK_period, GDK_equal, 0x2022, -GDK_period, GDK_greater, 0x203A, -GDK_period, GDK_A, 0x0226, -GDK_period, GDK_B, 0x1E02, -GDK_period, GDK_C, 0x010A, -GDK_period, GDK_D, 0x1E0A, -GDK_period, GDK_E, 0x0116, -GDK_period, GDK_F, 0x1E1E, -GDK_period, GDK_G, 0x0120, -GDK_period, GDK_H, 0x1E22, -GDK_period, GDK_I, 0x0130, -GDK_period, GDK_M, 0x1E40, -GDK_period, GDK_N, 0x1E44, -GDK_period, GDK_O, 0x022E, -GDK_period, GDK_P, 0x1E56, -GDK_period, GDK_R, 0x1E58, -GDK_period, GDK_S, 0x1E60, -GDK_period, GDK_T, 0x1E6A, -GDK_period, GDK_W, 0x1E86, -GDK_period, GDK_X, 0x1E8A, -GDK_period, GDK_Y, 0x1E8E, -GDK_period, GDK_Z, 0x017B, -GDK_period, GDK_asciicircum, 0x00B7, -GDK_period, GDK_a, 0x0227, -GDK_period, GDK_b, 0x1E03, -GDK_period, GDK_c, 0x010B, -GDK_period, GDK_d, 0x1E0B, -GDK_period, GDK_e, 0x0117, -GDK_period, GDK_f, 0x1E1F, -GDK_period, GDK_g, 0x0121, -GDK_period, GDK_h, 0x1E23, -GDK_period, GDK_i, 0x0131, -GDK_period, GDK_m, 0x1E41, -GDK_period, GDK_n, 0x1E45, -GDK_period, GDK_o, 0x022F, -GDK_period, GDK_p, 0x1E57, -GDK_period, GDK_r, 0x1E59, -GDK_period, GDK_s, 0x1E61, -GDK_period, GDK_t, 0x1E6B, -GDK_period, GDK_w, 0x1E87, -GDK_period, GDK_x, 0x1E8B, -GDK_period, GDK_y, 0x1E8F, -GDK_period, GDK_z, 0x017C, -GDK_period, 0x017F, 0x1E9B, -GDK_period, GDK_Sacute, 0x1E64, -GDK_period, GDK_Scaron, 0x1E66, -GDK_period, GDK_sacute, 0x1E65, -GDK_period, GDK_scaron, 0x1E67, -GDK_period, 0x1E62, 0x1E68, -GDK_period, 0x1E63, 0x1E69, -GDK_slash, GDK_slash, 0x005C, -GDK_slash, GDK_less, 0x005C, -GDK_slash, GDK_equal, 0x2260, -GDK_slash, GDK_C, 0x20A1, -GDK_slash, GDK_D, 0x0110, -GDK_slash, GDK_G, 0x01E4, -GDK_slash, GDK_H, 0x0126, -GDK_slash, GDK_I, 0x0197, -GDK_slash, GDK_L, 0x0141, -GDK_slash, GDK_O, 0x00D8, -GDK_slash, GDK_T, 0x0166, -GDK_slash, GDK_U, 0x00B5, -GDK_slash, GDK_Z, 0x01B5, -GDK_slash, GDK_asciicircum, 0x007C, -GDK_slash, GDK_b, 0x0180, -GDK_slash, GDK_c, 0x00A2, -GDK_slash, GDK_d, 0x0111, -GDK_slash, GDK_g, 0x01E5, -GDK_slash, GDK_h, 0x0127, -GDK_slash, GDK_i, 0x0268, -GDK_slash, GDK_l, 0x0142, -GDK_slash, GDK_m, 0x20A5, -GDK_slash, GDK_o, 0x00F8, -GDK_slash, GDK_t, 0x0167, -GDK_slash, GDK_u, 0x00B5, -GDK_slash, GDK_z, 0x01B6, -GDK_slash, 0x0294, 0x02A1, -GDK_slash, 0x04AE, 0x04B0, -GDK_slash, 0x04AF, 0x04B1, -GDK_slash, GDK_Cyrillic_ghe, 0x0493, -GDK_slash, GDK_Cyrillic_ka, 0x049F, -GDK_slash, GDK_Cyrillic_GHE, 0x0492, -GDK_slash, GDK_Cyrillic_KA, 0x049E, -GDK_slash, GDK_leftarrow, 0x219A, -GDK_slash, GDK_rightarrow, 0x219B, -GDK_slash, 0x2194, 0x21AE, -GDK_0, GDK_asterisk, 0x00B0, -GDK_0, GDK_C, 0x00A9, -GDK_0, GDK_S, 0x00A7, -GDK_0, GDK_X, 0x00A4, -GDK_0, GDK_asciicircum, 0x00B0, -GDK_0, GDK_c, 0x00A9, -GDK_0, GDK_s, 0x00A7, -GDK_0, GDK_x, 0x00A4, -GDK_1, GDK_2, 0x00BD, -GDK_1, GDK_3, 0x2153, -GDK_1, GDK_4, 0x00BC, -GDK_1, GDK_5, 0x2155, -GDK_1, GDK_6, 0x2159, -GDK_1, GDK_8, 0x215B, -GDK_1, GDK_S, 0x00B9, -GDK_1, GDK_asciicircum, 0x00B9, -GDK_1, GDK_s, 0x00B9, -GDK_2, GDK_3, 0x2154, -GDK_2, GDK_5, 0x2156, -GDK_2, GDK_S, 0x00B2, -GDK_2, GDK_asciicircum, 0x00B2, -GDK_2, GDK_s, 0x00B2, -GDK_3, GDK_4, 0x00BE, -GDK_3, GDK_5, 0x2157, -GDK_3, GDK_8, 0x215C, -GDK_3, GDK_S, 0x00B3, -GDK_3, GDK_asciicircum, 0x00B3, -GDK_3, GDK_s, 0x00B3, -GDK_4, GDK_5, 0x2158, -GDK_5, GDK_6, 0x215A, -GDK_5, GDK_8, 0x215D, -GDK_7, GDK_8, 0x215E, -GDK_colon, GDK_parenleft, 0x2639, -GDK_colon, GDK_parenright, 0x263A, -GDK_colon, GDK_minus, 0x00F7, -GDK_semicolon, GDK_A, 0x0104, -GDK_semicolon, GDK_E, 0x0118, -GDK_semicolon, GDK_I, 0x012E, -GDK_semicolon, GDK_O, 0x01EA, -GDK_semicolon, GDK_U, 0x0172, -GDK_semicolon, GDK_a, 0x0105, -GDK_semicolon, GDK_e, 0x0119, -GDK_semicolon, GDK_i, 0x012F, -GDK_semicolon, GDK_o, 0x01EB, -GDK_semicolon, GDK_u, 0x0173, -GDK_less, GDK_space, 0x02C7, -GDK_less, GDK_quotedbl, 0x201C, -GDK_less, GDK_apostrophe, 0x2018, -GDK_less, GDK_minus, 0x2190, -GDK_less, GDK_slash, 0x005C, -GDK_less, GDK_3, 0x2665, -GDK_less, GDK_less, 0x00AB, -GDK_less, GDK_equal, 0x2264, -GDK_less, GDK_C, 0x010C, -GDK_less, GDK_D, 0x010E, -GDK_less, GDK_E, 0x011A, -GDK_less, GDK_L, 0x013D, -GDK_less, GDK_N, 0x0147, -GDK_less, GDK_R, 0x0158, -GDK_less, GDK_S, 0x0160, -GDK_less, GDK_T, 0x0164, -GDK_less, GDK_Z, 0x017D, -GDK_less, GDK_c, 0x010D, -GDK_less, GDK_d, 0x010F, -GDK_less, GDK_e, 0x011B, -GDK_less, GDK_l, 0x013E, -GDK_less, GDK_n, 0x0148, -GDK_less, GDK_r, 0x0159, -GDK_less, GDK_s, 0x0161, -GDK_less, GDK_t, 0x0165, -GDK_less, GDK_z, 0x017E, -GDK_less, 0x0338, 0x226E, -GDK_equal, GDK_slash, 0x2260, -GDK_equal, GDK_C, 0x20AC, -GDK_equal, GDK_E, 0x20AC, -GDK_equal, GDK_L, 0x20A4, -GDK_equal, GDK_N, 0x20A6, -GDK_equal, GDK_O, 0x0150, -GDK_equal, GDK_U, 0x0170, -GDK_equal, GDK_W, 0x20A9, -GDK_equal, GDK_Y, 0x00A5, -GDK_equal, GDK_c, 0x20AC, -GDK_equal, GDK_e, 0x20AC, -GDK_equal, GDK_l, 0x00A3, -GDK_equal, GDK_o, 0x0151, -GDK_equal, GDK_u, 0x0171, -GDK_equal, GDK_y, 0x00A5, -GDK_equal, 0x0338, 0x2260, -GDK_equal, GDK_Cyrillic_u, 0x04F3, -GDK_equal, GDK_Cyrillic_IE, 0x20AC, -GDK_equal, GDK_Cyrillic_ES, 0x20AC, -GDK_equal, GDK_Cyrillic_U, 0x04F2, -GDK_greater, GDK_space, 0x005E, -GDK_greater, GDK_quotedbl, 0x201D, -GDK_greater, GDK_apostrophe, 0x2019, -GDK_greater, GDK_equal, 0x2265, -GDK_greater, GDK_greater, 0x00BB, -GDK_greater, GDK_A, 0x00C2, -GDK_greater, GDK_E, 0x00CA, -GDK_greater, GDK_I, 0x00CE, -GDK_greater, GDK_O, 0x00D4, -GDK_greater, GDK_U, 0x00DB, -GDK_greater, GDK_a, 0x00E2, -GDK_greater, GDK_e, 0x00EA, -GDK_greater, GDK_i, 0x00EE, -GDK_greater, GDK_o, 0x00F4, -GDK_greater, GDK_u, 0x00FB, -GDK_greater, 0x0338, 0x226F, -GDK_question, GDK_exclam, 0x203D, -GDK_question, GDK_question, 0x00BF, -GDK_question, GDK_A, 0x1EA2, -GDK_question, GDK_E, 0x1EBA, -GDK_question, GDK_I, 0x1EC8, -GDK_question, GDK_O, 0x1ECE, -GDK_question, GDK_U, 0x1EE6, -GDK_question, GDK_Y, 0x1EF6, -GDK_question, GDK_a, 0x1EA3, -GDK_question, GDK_e, 0x1EBB, -GDK_question, GDK_i, 0x1EC9, -GDK_question, GDK_o, 0x1ECF, -GDK_question, GDK_u, 0x1EE7, -GDK_question, GDK_y, 0x1EF7, -GDK_question, GDK_Acircumflex, 0x1EA8, -GDK_question, GDK_Ecircumflex, 0x1EC2, -GDK_question, GDK_Ocircumflex, 0x1ED4, -GDK_question, GDK_acircumflex, 0x1EA9, -GDK_question, GDK_ecircumflex, 0x1EC3, -GDK_question, GDK_ocircumflex, 0x1ED5, -GDK_question, GDK_Abreve, 0x1EB2, -GDK_question, GDK_abreve, 0x1EB3, -GDK_A, GDK_quotedbl, 0x00C4, -GDK_A, GDK_apostrophe, 0x00C1, -GDK_A, GDK_parenleft, 0x0102, -GDK_A, GDK_asterisk, 0x00C5, -GDK_A, GDK_comma, 0x0104, -GDK_A, GDK_minus, 0x00C3, -GDK_A, GDK_greater, 0x00C2, -GDK_A, GDK_A, 0x00C5, -GDK_A, GDK_E, 0x00C6, -GDK_A, GDK_T, 0x0040, -GDK_A, GDK_asciicircum, 0x00C2, -GDK_A, GDK_underscore, 0x00AA, -GDK_A, GDK_grave, 0x00C0, -GDK_A, GDK_asciitilde, 0x00C3, -GDK_A, GDK_diaeresis, 0x00C4, -GDK_A, GDK_acute, 0x00C1, -GDK_B, GDK_period, 0x1E02, -GDK_C, GDK_apostrophe, 0x0106, -GDK_C, GDK_comma, 0x00C7, -GDK_C, GDK_period, 0x010A, -GDK_C, GDK_slash, 0x20A1, -GDK_C, GDK_0, 0x00A9, -GDK_C, GDK_less, 0x010C, -GDK_C, GDK_equal, 0x20AC, -GDK_C, GDK_E, 0x20A0, -GDK_C, GDK_O, 0x00A9, -GDK_C, GDK_o, 0x00A9, -GDK_C, GDK_r, 0x20A2, -GDK_C, GDK_bar, 0x00A2, -GDK_D, GDK_minus, 0x0110, -GDK_D, GDK_period, 0x1E0A, -GDK_D, GDK_less, 0x010E, -GDK_D, GDK_H, 0x00D0, -GDK_E, GDK_quotedbl, 0x00CB, -GDK_E, GDK_apostrophe, 0x00C9, -GDK_E, GDK_comma, 0x0118, -GDK_E, GDK_minus, 0x0112, -GDK_E, GDK_period, 0x0116, -GDK_E, GDK_less, 0x011A, -GDK_E, GDK_equal, 0x20AC, -GDK_E, GDK_greater, 0x00CA, -GDK_E, GDK_asciicircum, 0x00CA, -GDK_E, GDK_underscore, 0x0112, -GDK_E, GDK_grave, 0x00C8, -GDK_E, GDK_diaeresis, 0x00CB, -GDK_E, GDK_acute, 0x00C9, -GDK_F, GDK_period, 0x1E1E, -GDK_F, GDK_r, 0x20A3, -GDK_G, GDK_parenleft, 0x011E, -GDK_G, GDK_comma, 0x0122, -GDK_G, GDK_period, 0x0120, -GDK_G, GDK_U, 0x011E, -GDK_G, GDK_breve, 0x011E, -GDK_I, GDK_quotedbl, 0x00CF, -GDK_I, GDK_apostrophe, 0x00CD, -GDK_I, GDK_comma, 0x012E, -GDK_I, GDK_minus, 0x012A, -GDK_I, GDK_period, 0x0130, -GDK_I, GDK_greater, 0x00CE, -GDK_I, GDK_asciicircum, 0x00CE, -GDK_I, GDK_underscore, 0x012A, -GDK_I, GDK_grave, 0x00CC, -GDK_I, GDK_asciitilde, 0x0128, -GDK_I, GDK_diaeresis, 0x00CF, -GDK_I, GDK_acute, 0x00CD, -GDK_K, GDK_comma, 0x0136, -GDK_L, GDK_apostrophe, 0x0139, -GDK_L, GDK_comma, 0x013B, -GDK_L, GDK_minus, 0x00A3, -GDK_L, GDK_slash, 0x0141, -GDK_L, GDK_less, 0x013D, -GDK_L, GDK_equal, 0x00A3, -GDK_L, GDK_V, 0x007C, -GDK_M, GDK_period, 0x1E40, -GDK_N, GDK_apostrophe, 0x0143, -GDK_N, GDK_comma, 0x0145, -GDK_N, GDK_minus, 0x00D1, -GDK_N, GDK_less, 0x0147, -GDK_N, GDK_equal, 0x20A6, -GDK_N, GDK_G, 0x014A, -GDK_N, GDK_O, 0x2116, -GDK_N, GDK_o, 0x2116, -GDK_N, GDK_asciitilde, 0x00D1, -GDK_O, GDK_quotedbl, 0x00D6, -GDK_O, GDK_apostrophe, 0x00D3, -GDK_O, GDK_minus, 0x00D5, -GDK_O, GDK_slash, 0x00D8, -GDK_O, GDK_greater, 0x00D4, -GDK_O, GDK_C, 0x00A9, -GDK_O, GDK_E, 0x0152, -GDK_O, GDK_R, 0x00AE, -GDK_O, GDK_S, 0x00A7, -GDK_O, GDK_X, 0x00A4, -GDK_O, GDK_asciicircum, 0x00D4, -GDK_O, GDK_underscore, 0x00BA, -GDK_O, GDK_grave, 0x00D2, -GDK_O, GDK_c, 0x00A9, -GDK_O, GDK_r, 0x00AE, -GDK_O, GDK_x, 0x00A4, -GDK_O, GDK_asciitilde, 0x00D5, -GDK_O, GDK_diaeresis, 0x00D6, -GDK_O, GDK_acute, 0x00D3, -GDK_P, GDK_exclam, 0x00B6, -GDK_P, GDK_period, 0x1E56, -GDK_P, GDK_P, 0x00B6, -GDK_P, GDK_t, 0x20A7, -GDK_R, GDK_apostrophe, 0x0154, -GDK_R, GDK_comma, 0x0156, -GDK_R, GDK_less, 0x0158, -GDK_R, GDK_O, 0x00AE, -GDK_R, GDK_s, 0x20A8, -GDK_S, GDK_exclam, 0x00A7, -GDK_S, GDK_apostrophe, 0x015A, -GDK_S, GDK_comma, 0x015E, -GDK_S, GDK_period, 0x1E60, -GDK_S, GDK_0, 0x00A7, -GDK_S, GDK_1, 0x00B9, -GDK_S, GDK_2, 0x00B2, -GDK_S, GDK_3, 0x00B3, -GDK_S, GDK_less, 0x0160, -GDK_S, GDK_M, 0x2120, -GDK_S, GDK_O, 0x00A7, -GDK_S, GDK_m, 0x2120, -GDK_S, GDK_cedilla, 0x015E, -GDK_T, GDK_minus, 0x0166, -GDK_T, GDK_period, 0x1E6A, -GDK_T, GDK_slash, 0x0166, -GDK_T, GDK_less, 0x0164, -GDK_T, GDK_H, 0x00DE, -GDK_T, GDK_M, 0x2122, -GDK_T, GDK_m, 0x2122, -GDK_U, GDK_quotedbl, 0x00DC, -GDK_U, GDK_apostrophe, 0x00DA, -GDK_U, GDK_asterisk, 0x016E, -GDK_U, GDK_comma, 0x0172, -GDK_U, GDK_minus, 0x016A, -GDK_U, GDK_slash, 0x00B5, -GDK_U, GDK_greater, 0x00DB, -GDK_U, GDK_A, 0x0102, -GDK_U, GDK_E, 0x0114, -GDK_U, GDK_G, 0x011E, -GDK_U, GDK_I, 0x012C, -GDK_U, GDK_O, 0x014E, -GDK_U, GDK_U, 0x016C, -GDK_U, GDK_asciicircum, 0x00DB, -GDK_U, GDK_underscore, 0x016A, -GDK_U, GDK_grave, 0x00D9, -GDK_U, GDK_a, 0x0103, -GDK_U, GDK_e, 0x0115, -GDK_U, GDK_g, 0x011F, -GDK_U, GDK_i, 0x012D, -GDK_U, GDK_o, 0x014F, -GDK_U, GDK_u, 0x016D, -GDK_U, GDK_asciitilde, 0x0168, -GDK_U, GDK_diaeresis, 0x00DC, -GDK_U, GDK_acute, 0x00DA, -GDK_U, 0x0228, 0x1E1C, -GDK_U, 0x0229, 0x1E1D, -GDK_U, GDK_Cyrillic_a, 0x04D1, -GDK_U, GDK_Cyrillic_ie, 0x04D7, -GDK_U, GDK_Cyrillic_i, 0x0439, -GDK_U, GDK_Cyrillic_u, 0x045E, -GDK_U, GDK_Cyrillic_zhe, 0x04C2, -GDK_U, GDK_Cyrillic_A, 0x04D0, -GDK_U, GDK_Cyrillic_IE, 0x04D6, -GDK_U, GDK_Cyrillic_I, 0x0419, -GDK_U, GDK_Cyrillic_U, 0x040E, -GDK_U, GDK_Cyrillic_ZHE, 0x04C1, -GDK_U, GDK_Greek_ALPHA, 0x1FB8, -GDK_U, GDK_Greek_IOTA, 0x1FD8, -GDK_U, GDK_Greek_UPSILON, 0x1FE8, -GDK_U, GDK_Greek_alpha, 0x1FB0, -GDK_U, GDK_Greek_iota, 0x1FD0, -GDK_U, GDK_Greek_upsilon, 0x1FE0, -GDK_U, 0x1EA0, 0x1EB6, -GDK_U, 0x1EA1, 0x1EB7, -GDK_V, GDK_L, 0x007C, -GDK_W, GDK_equal, 0x20A9, -GDK_W, GDK_asciicircum, 0x0174, -GDK_X, GDK_0, 0x00A4, -GDK_X, GDK_O, 0x00A4, -GDK_X, GDK_o, 0x00A4, -GDK_Y, GDK_quotedbl, 0x0178, -GDK_Y, GDK_apostrophe, 0x00DD, -GDK_Y, GDK_minus, 0x00A5, -GDK_Y, GDK_equal, 0x00A5, -GDK_Y, GDK_asciicircum, 0x0176, -GDK_Y, GDK_diaeresis, 0x0178, -GDK_Y, GDK_acute, 0x00DD, -GDK_Z, GDK_apostrophe, 0x0179, -GDK_Z, GDK_period, 0x017B, -GDK_Z, GDK_less, 0x017D, -GDK_asciicircum, GDK_space, 0x005E, -GDK_asciicircum, GDK_parenleft, 0x207D, -GDK_asciicircum, GDK_parenright, 0x207E, -GDK_asciicircum, GDK_plus, 0x207A, -GDK_asciicircum, GDK_minus, 0x00AF, -GDK_asciicircum, GDK_period, 0x00B7, -GDK_asciicircum, GDK_slash, 0x007C, -GDK_asciicircum, GDK_0, 0x2070, -GDK_asciicircum, GDK_1, 0x00B9, -GDK_asciicircum, GDK_2, 0x00B2, -GDK_asciicircum, GDK_3, 0x00B3, -GDK_asciicircum, GDK_4, 0x2074, -GDK_asciicircum, GDK_5, 0x2075, -GDK_asciicircum, GDK_6, 0x2076, -GDK_asciicircum, GDK_7, 0x2077, -GDK_asciicircum, GDK_8, 0x2078, -GDK_asciicircum, GDK_9, 0x2079, -GDK_asciicircum, GDK_equal, 0x207C, -GDK_asciicircum, GDK_A, 0x00C2, -GDK_asciicircum, GDK_C, 0x0108, -GDK_asciicircum, GDK_E, 0x00CA, -GDK_asciicircum, GDK_G, 0x011C, -GDK_asciicircum, GDK_H, 0x0124, -GDK_asciicircum, GDK_I, 0x00CE, -GDK_asciicircum, GDK_J, 0x0134, -GDK_asciicircum, GDK_O, 0x00D4, -GDK_asciicircum, GDK_S, 0x015C, -GDK_asciicircum, GDK_U, 0x00DB, -GDK_asciicircum, GDK_W, 0x0174, -GDK_asciicircum, GDK_Y, 0x0176, -GDK_asciicircum, GDK_Z, 0x1E90, -GDK_asciicircum, GDK_underscore, 0x00AF, -GDK_asciicircum, GDK_a, 0x00E2, -GDK_asciicircum, GDK_c, 0x0109, -GDK_asciicircum, GDK_e, 0x00EA, -GDK_asciicircum, GDK_g, 0x011D, -GDK_asciicircum, GDK_h, 0x0125, -GDK_asciicircum, GDK_i, 0x00EE, -GDK_asciicircum, GDK_j, 0x0135, -GDK_asciicircum, GDK_o, 0x00F4, -GDK_asciicircum, GDK_s, 0x015D, -GDK_asciicircum, GDK_u, 0x00FB, -GDK_asciicircum, GDK_w, 0x0175, -GDK_asciicircum, GDK_y, 0x0177, -GDK_asciicircum, GDK_z, 0x1E91, -GDK_asciicircum, 0x1EA0, 0x1EAC, -GDK_asciicircum, 0x1EA1, 0x1EAD, -GDK_asciicircum, 0x1EB8, 0x1EC6, -GDK_asciicircum, 0x1EB9, 0x1EC7, -GDK_asciicircum, 0x1ECC, 0x1ED8, -GDK_asciicircum, 0x1ECD, 0x1ED9, -GDK_asciicircum, 0x2212, 0x207B, -GDK_asciicircum, 0x4E00, 0x3192, -GDK_asciicircum, 0x4E01, 0x319C, -GDK_asciicircum, 0x4E09, 0x3194, -GDK_asciicircum, 0x4E0A, 0x3196, -GDK_asciicircum, 0x4E0B, 0x3198, -GDK_asciicircum, 0x4E19, 0x319B, -GDK_asciicircum, 0x4E2D, 0x3197, -GDK_asciicircum, 0x4E59, 0x319A, -GDK_asciicircum, 0x4E8C, 0x3193, -GDK_asciicircum, 0x4EBA, 0x319F, -GDK_asciicircum, 0x56DB, 0x3195, -GDK_asciicircum, 0x5730, 0x319E, -GDK_asciicircum, 0x5929, 0x319D, -GDK_asciicircum, 0x7532, 0x3199, -GDK_asciicircum, GDK_KP_Space, 0x00B2, -GDK_asciicircum, GDK_KP_Add, 0x207A, -GDK_asciicircum, GDK_KP_0, 0x2070, -GDK_asciicircum, GDK_KP_1, 0x00B9, -GDK_asciicircum, GDK_KP_2, 0x00B2, -GDK_asciicircum, GDK_KP_3, 0x00B3, -GDK_asciicircum, GDK_KP_4, 0x2074, -GDK_asciicircum, GDK_KP_5, 0x2075, -GDK_asciicircum, GDK_KP_6, 0x2076, -GDK_asciicircum, GDK_KP_7, 0x2077, -GDK_asciicircum, GDK_KP_8, 0x2078, -GDK_asciicircum, GDK_KP_9, 0x2079, -GDK_asciicircum, GDK_KP_Equal, 0x207C, -GDK_underscore, GDK_parenleft, 0x208D, -GDK_underscore, GDK_parenright, 0x208E, -GDK_underscore, GDK_plus, 0x208A, -GDK_underscore, GDK_0, 0x2080, -GDK_underscore, GDK_1, 0x2081, -GDK_underscore, GDK_2, 0x2082, -GDK_underscore, GDK_3, 0x2083, -GDK_underscore, GDK_4, 0x2084, -GDK_underscore, GDK_5, 0x2085, -GDK_underscore, GDK_6, 0x2086, -GDK_underscore, GDK_7, 0x2087, -GDK_underscore, GDK_8, 0x2088, -GDK_underscore, GDK_9, 0x2089, -GDK_underscore, GDK_equal, 0x208C, -GDK_underscore, GDK_A, 0x0100, -GDK_underscore, GDK_E, 0x0112, -GDK_underscore, GDK_G, 0x1E20, -GDK_underscore, GDK_I, 0x012A, -GDK_underscore, GDK_O, 0x014C, -GDK_underscore, GDK_U, 0x016A, -GDK_underscore, GDK_Y, 0x0232, -GDK_underscore, GDK_asciicircum, 0x00AF, -GDK_underscore, GDK_underscore, 0x00AF, -GDK_underscore, GDK_a, 0x0101, -GDK_underscore, GDK_e, 0x0113, -GDK_underscore, GDK_g, 0x1E21, -GDK_underscore, GDK_i, 0x012B, -GDK_underscore, GDK_o, 0x014D, -GDK_underscore, GDK_u, 0x016B, -GDK_underscore, GDK_y, 0x0233, -GDK_underscore, GDK_Adiaeresis, 0x01DE, -GDK_underscore, GDK_AE, 0x01E2, -GDK_underscore, GDK_Otilde, 0x022C, -GDK_underscore, GDK_Odiaeresis, 0x022A, -GDK_underscore, GDK_Udiaeresis, 0x01D5, -GDK_underscore, GDK_adiaeresis, 0x01DF, -GDK_underscore, GDK_ae, 0x01E3, -GDK_underscore, GDK_otilde, 0x022D, -GDK_underscore, GDK_odiaeresis, 0x022B, -GDK_underscore, GDK_udiaeresis, 0x01D6, -GDK_underscore, 0x01EA, 0x01EC, -GDK_underscore, 0x01EB, 0x01ED, -GDK_underscore, 0x0226, 0x01E0, -GDK_underscore, 0x0227, 0x01E1, -GDK_underscore, 0x022E, 0x0230, -GDK_underscore, 0x022F, 0x0231, -GDK_underscore, GDK_Cyrillic_i, 0x04E3, -GDK_underscore, GDK_Cyrillic_u, 0x04EF, -GDK_underscore, GDK_Cyrillic_I, 0x04E2, -GDK_underscore, GDK_Cyrillic_U, 0x04EE, -GDK_underscore, GDK_Greek_ALPHA, 0x1FB9, -GDK_underscore, GDK_Greek_IOTA, 0x1FD9, -GDK_underscore, GDK_Greek_UPSILON, 0x1FE9, -GDK_underscore, GDK_Greek_alpha, 0x1FB1, -GDK_underscore, GDK_Greek_iota, 0x1FD1, -GDK_underscore, GDK_Greek_upsilon, 0x1FE1, -GDK_underscore, 0x1E36, 0x1E38, -GDK_underscore, 0x1E37, 0x1E39, -GDK_underscore, 0x1E5A, 0x1E5C, -GDK_underscore, 0x1E5B, 0x1E5D, -GDK_underscore, 0x2212, 0x208B, -GDK_underscore, GDK_KP_Space, 0x2082, -GDK_underscore, GDK_KP_Add, 0x208A, -GDK_underscore, GDK_KP_0, 0x2080, -GDK_underscore, GDK_KP_1, 0x2081, -GDK_underscore, GDK_KP_2, 0x2082, -GDK_underscore, GDK_KP_3, 0x2083, -GDK_underscore, GDK_KP_4, 0x2084, -GDK_underscore, GDK_KP_5, 0x2085, -GDK_underscore, GDK_KP_6, 0x2086, -GDK_underscore, GDK_KP_7, 0x2087, -GDK_underscore, GDK_KP_8, 0x2088, -GDK_underscore, GDK_KP_9, 0x2089, -GDK_underscore, GDK_KP_Equal, 0x208C, -GDK_grave, GDK_space, 0x0060, -GDK_grave, GDK_A, 0x00C0, -GDK_grave, GDK_E, 0x00C8, -GDK_grave, GDK_I, 0x00CC, -GDK_grave, GDK_N, 0x01F8, -GDK_grave, GDK_O, 0x00D2, -GDK_grave, GDK_U, 0x00D9, -GDK_grave, GDK_W, 0x1E80, -GDK_grave, GDK_Y, 0x1EF2, -GDK_grave, GDK_a, 0x00E0, -GDK_grave, GDK_e, 0x00E8, -GDK_grave, GDK_i, 0x00EC, -GDK_grave, GDK_n, 0x01F9, -GDK_grave, GDK_o, 0x00F2, -GDK_grave, GDK_u, 0x00F9, -GDK_grave, GDK_w, 0x1E81, -GDK_grave, GDK_y, 0x1EF3, -GDK_grave, GDK_Acircumflex, 0x1EA6, -GDK_grave, GDK_Ecircumflex, 0x1EC0, -GDK_grave, GDK_Ocircumflex, 0x1ED2, -GDK_grave, GDK_Udiaeresis, 0x01DB, -GDK_grave, GDK_acircumflex, 0x1EA7, -GDK_grave, GDK_ecircumflex, 0x1EC1, -GDK_grave, GDK_ocircumflex, 0x1ED3, -GDK_grave, GDK_udiaeresis, 0x01DC, -GDK_grave, GDK_Abreve, 0x1EB0, -GDK_grave, GDK_abreve, 0x1EB1, -GDK_grave, GDK_Emacron, 0x1E14, -GDK_grave, GDK_emacron, 0x1E15, -GDK_grave, GDK_Omacron, 0x1E50, -GDK_grave, GDK_omacron, 0x1E51, -GDK_grave, GDK_Cyrillic_ie, 0x0450, -GDK_grave, GDK_Cyrillic_i, 0x045D, -GDK_grave, GDK_Cyrillic_IE, 0x0400, -GDK_grave, GDK_Cyrillic_I, 0x040D, -GDK_grave, GDK_Greek_iotadieresis, 0x1FD2, -GDK_grave, GDK_Greek_upsilondieresis, 0x1FE2, -GDK_grave, GDK_Greek_ALPHA, 0x1FBA, -GDK_grave, GDK_Greek_EPSILON, 0x1FC8, -GDK_grave, GDK_Greek_ETA, 0x1FCA, -GDK_grave, GDK_Greek_IOTA, 0x1FDA, -GDK_grave, GDK_Greek_OMICRON, 0x1FF8, -GDK_grave, GDK_Greek_UPSILON, 0x1FEA, -GDK_grave, GDK_Greek_OMEGA, 0x1FFA, -GDK_grave, GDK_Greek_alpha, 0x1F70, -GDK_grave, GDK_Greek_epsilon, 0x1F72, -GDK_grave, GDK_Greek_eta, 0x1F74, -GDK_grave, GDK_Greek_iota, 0x1F76, -GDK_grave, GDK_Greek_omicron, 0x1F78, -GDK_grave, GDK_Greek_upsilon, 0x1F7A, -GDK_grave, GDK_Greek_omega, 0x1F7C, -GDK_grave, 0x1F00, 0x1F02, -GDK_grave, 0x1F01, 0x1F03, -GDK_grave, 0x1F08, 0x1F0A, -GDK_grave, 0x1F09, 0x1F0B, -GDK_grave, 0x1F10, 0x1F12, -GDK_grave, 0x1F11, 0x1F13, -GDK_grave, 0x1F18, 0x1F1A, -GDK_grave, 0x1F19, 0x1F1B, -GDK_grave, 0x1F20, 0x1F22, -GDK_grave, 0x1F21, 0x1F23, -GDK_grave, 0x1F28, 0x1F2A, -GDK_grave, 0x1F29, 0x1F2B, -GDK_grave, 0x1F30, 0x1F32, -GDK_grave, 0x1F31, 0x1F33, -GDK_grave, 0x1F38, 0x1F3A, -GDK_grave, 0x1F39, 0x1F3B, -GDK_grave, 0x1F40, 0x1F42, -GDK_grave, 0x1F41, 0x1F43, -GDK_grave, 0x1F48, 0x1F4A, -GDK_grave, 0x1F49, 0x1F4B, -GDK_grave, 0x1F50, 0x1F52, -GDK_grave, 0x1F51, 0x1F53, -GDK_grave, 0x1F59, 0x1F5B, -GDK_grave, 0x1F60, 0x1F62, -GDK_grave, 0x1F61, 0x1F63, -GDK_grave, 0x1F68, 0x1F6A, -GDK_grave, 0x1F69, 0x1F6B, -GDK_a, GDK_quotedbl, 0x00E4, -GDK_a, GDK_apostrophe, 0x00E1, -GDK_a, GDK_parenleft, 0x0103, -GDK_a, GDK_asterisk, 0x00E5, -GDK_a, GDK_comma, 0x0105, -GDK_a, GDK_minus, 0x0101, -GDK_a, GDK_greater, 0x00E2, -GDK_a, GDK_asciicircum, 0x00E2, -GDK_a, GDK_underscore, 0x00AA, -GDK_a, GDK_grave, 0x00E0, -GDK_a, GDK_a, 0x00E5, -GDK_a, GDK_e, 0x00E6, -GDK_a, GDK_asciitilde, 0x00E3, -GDK_a, GDK_diaeresis, 0x00E4, -GDK_a, GDK_acute, 0x00E1, -GDK_b, GDK_period, 0x1E03, -GDK_b, GDK_A, 0x0102, -GDK_b, GDK_E, 0x0114, -GDK_b, GDK_G, 0x011E, -GDK_b, GDK_I, 0x012C, -GDK_b, GDK_O, 0x014E, -GDK_b, GDK_U, 0x016C, -GDK_b, GDK_a, 0x0103, -GDK_b, GDK_e, 0x0115, -GDK_b, GDK_g, 0x011F, -GDK_b, GDK_i, 0x012D, -GDK_b, GDK_o, 0x014F, -GDK_b, GDK_u, 0x016D, -GDK_b, 0x0228, 0x1E1C, -GDK_b, 0x0229, 0x1E1D, -GDK_b, GDK_Cyrillic_a, 0x04D1, -GDK_b, GDK_Cyrillic_ie, 0x04D7, -GDK_b, GDK_Cyrillic_i, 0x0439, -GDK_b, GDK_Cyrillic_u, 0x045E, -GDK_b, GDK_Cyrillic_zhe, 0x04C2, -GDK_b, GDK_Cyrillic_A, 0x04D0, -GDK_b, GDK_Cyrillic_IE, 0x04D6, -GDK_b, GDK_Cyrillic_I, 0x0419, -GDK_b, GDK_Cyrillic_U, 0x040E, -GDK_b, GDK_Cyrillic_ZHE, 0x04C1, -GDK_b, GDK_Greek_ALPHA, 0x1FB8, -GDK_b, GDK_Greek_IOTA, 0x1FD8, -GDK_b, GDK_Greek_UPSILON, 0x1FE8, -GDK_b, GDK_Greek_alpha, 0x1FB0, -GDK_b, GDK_Greek_iota, 0x1FD0, -GDK_b, GDK_Greek_upsilon, 0x1FE0, -GDK_b, 0x1EA0, 0x1EB6, -GDK_b, 0x1EA1, 0x1EB7, -GDK_c, GDK_apostrophe, 0x0107, -GDK_c, GDK_comma, 0x00E7, -GDK_c, GDK_period, 0x010B, -GDK_c, GDK_slash, 0x00A2, -GDK_c, GDK_0, 0x00A9, -GDK_c, GDK_less, 0x010D, -GDK_c, GDK_equal, 0x20AC, -GDK_c, GDK_A, 0x01CD, -GDK_c, GDK_C, 0x010C, -GDK_c, GDK_D, 0x010E, -GDK_c, GDK_E, 0x011A, -GDK_c, GDK_G, 0x01E6, -GDK_c, GDK_H, 0x021E, -GDK_c, GDK_I, 0x01CF, -GDK_c, GDK_K, 0x01E8, -GDK_c, GDK_L, 0x013D, -GDK_c, GDK_N, 0x0147, -GDK_c, GDK_O, 0x01D1, -GDK_c, GDK_R, 0x0158, -GDK_c, GDK_S, 0x0160, -GDK_c, GDK_T, 0x0164, -GDK_c, GDK_U, 0x01D3, -GDK_c, GDK_Z, 0x017D, -GDK_c, GDK_a, 0x01CE, -GDK_c, GDK_c, 0x010D, -GDK_c, GDK_d, 0x010F, -GDK_c, GDK_e, 0x011B, -GDK_c, GDK_g, 0x01E7, -GDK_c, GDK_h, 0x021F, -GDK_c, GDK_i, 0x01D0, -GDK_c, GDK_j, 0x01F0, -GDK_c, GDK_k, 0x01E9, -GDK_c, GDK_l, 0x013E, -GDK_c, GDK_n, 0x0148, -GDK_c, GDK_o, 0x01D2, -GDK_c, GDK_r, 0x0159, -GDK_c, GDK_s, 0x0161, -GDK_c, GDK_t, 0x0165, -GDK_c, GDK_u, 0x01D4, -GDK_c, GDK_z, 0x017E, -GDK_c, GDK_bar, 0x00A2, -GDK_c, GDK_Udiaeresis, 0x01D9, -GDK_c, GDK_udiaeresis, 0x01DA, -GDK_c, 0x01B7, 0x01EE, -GDK_c, 0x0292, 0x01EF, -GDK_d, GDK_minus, 0x20AB, -GDK_d, GDK_period, 0x1E0B, -GDK_d, GDK_less, 0x010F, -GDK_d, GDK_h, 0x00F0, -GDK_e, GDK_quotedbl, 0x00EB, -GDK_e, GDK_apostrophe, 0x00E9, -GDK_e, GDK_comma, 0x0119, -GDK_e, GDK_minus, 0x0113, -GDK_e, GDK_period, 0x0117, -GDK_e, GDK_less, 0x011B, -GDK_e, GDK_equal, 0x20AC, -GDK_e, GDK_greater, 0x00EA, -GDK_e, GDK_asciicircum, 0x00EA, -GDK_e, GDK_underscore, 0x0113, -GDK_e, GDK_grave, 0x00E8, -GDK_e, GDK_e, 0x0259, -GDK_e, GDK_diaeresis, 0x00EB, -GDK_e, GDK_acute, 0x00E9, -GDK_f, GDK_period, 0x1E1F, -GDK_f, GDK_S, 0x017F, -GDK_f, GDK_s, 0x017F, -GDK_g, GDK_parenleft, 0x011F, -GDK_g, GDK_comma, 0x0123, -GDK_g, GDK_period, 0x0121, -GDK_g, GDK_U, 0x011F, -GDK_g, GDK_breve, 0x011F, -GDK_i, GDK_quotedbl, 0x00EF, -GDK_i, GDK_apostrophe, 0x00ED, -GDK_i, GDK_comma, 0x012F, -GDK_i, GDK_minus, 0x012B, -GDK_i, GDK_period, 0x0131, -GDK_i, GDK_greater, 0x00EE, -GDK_i, GDK_asciicircum, 0x00EE, -GDK_i, GDK_underscore, 0x012B, -GDK_i, GDK_grave, 0x00EC, -GDK_i, GDK_asciitilde, 0x0129, -GDK_i, GDK_diaeresis, 0x00EF, -GDK_i, GDK_acute, 0x00ED, -GDK_k, GDK_comma, 0x0137, -GDK_k, GDK_k, 0x0138, -GDK_l, GDK_apostrophe, 0x013A, -GDK_l, GDK_comma, 0x013C, -GDK_l, GDK_minus, 0x00A3, -GDK_l, GDK_slash, 0x0142, -GDK_l, GDK_less, 0x013E, -GDK_l, GDK_equal, 0x00A3, -GDK_l, GDK_v, 0x007C, -GDK_m, GDK_period, 0x1E41, -GDK_m, GDK_slash, 0x20A5, -GDK_m, GDK_u, 0x00B5, -GDK_n, GDK_apostrophe, 0x0144, -GDK_n, GDK_comma, 0x0146, -GDK_n, GDK_minus, 0x00F1, -GDK_n, GDK_less, 0x0148, -GDK_n, GDK_g, 0x014B, -GDK_n, GDK_asciitilde, 0x00F1, -GDK_o, GDK_quotedbl, 0x00F6, -GDK_o, GDK_apostrophe, 0x00F3, -GDK_o, GDK_minus, 0x014D, -GDK_o, GDK_slash, 0x00F8, -GDK_o, GDK_greater, 0x00F4, -GDK_o, GDK_A, 0x00C5, -GDK_o, GDK_C, 0x00A9, -GDK_o, GDK_R, 0x00AE, -GDK_o, GDK_U, 0x016E, -GDK_o, GDK_X, 0x00A4, -GDK_o, GDK_asciicircum, 0x00F4, -GDK_o, GDK_underscore, 0x00BA, -GDK_o, GDK_grave, 0x00F2, -GDK_o, GDK_a, 0x00E5, -GDK_o, GDK_c, 0x00A9, -GDK_o, GDK_e, 0x0153, -GDK_o, GDK_o, 0x00B0, -GDK_o, GDK_r, 0x00AE, -GDK_o, GDK_s, 0x00A7, -GDK_o, GDK_u, 0x016F, -GDK_o, GDK_w, 0x1E98, -GDK_o, GDK_x, 0x00A4, -GDK_o, GDK_y, 0x1E99, -GDK_o, GDK_asciitilde, 0x00F5, -GDK_o, GDK_diaeresis, 0x00F6, -GDK_o, GDK_acute, 0x00F3, -GDK_p, GDK_exclam, 0x00B6, -GDK_p, GDK_period, 0x1E57, -GDK_r, GDK_apostrophe, 0x0155, -GDK_r, GDK_comma, 0x0157, -GDK_r, GDK_less, 0x0159, -GDK_s, GDK_exclam, 0x00A7, -GDK_s, GDK_apostrophe, 0x015B, -GDK_s, GDK_comma, 0x015F, -GDK_s, GDK_period, 0x1E61, -GDK_s, GDK_0, 0x00A7, -GDK_s, GDK_1, 0x00B9, -GDK_s, GDK_2, 0x00B2, -GDK_s, GDK_3, 0x00B3, -GDK_s, GDK_less, 0x0161, -GDK_s, GDK_M, 0x2120, -GDK_s, GDK_m, 0x2120, -GDK_s, GDK_o, 0x00A7, -GDK_s, GDK_s, 0x00DF, -GDK_s, GDK_cedilla, 0x015F, -GDK_t, GDK_minus, 0x0167, -GDK_t, GDK_period, 0x1E6B, -GDK_t, GDK_slash, 0x0167, -GDK_t, GDK_less, 0x0165, -GDK_t, GDK_M, 0x2122, -GDK_t, GDK_h, 0x00FE, -GDK_t, GDK_m, 0x2122, -GDK_u, GDK_quotedbl, 0x00FC, -GDK_u, GDK_apostrophe, 0x00FA, -GDK_u, GDK_asterisk, 0x016F, -GDK_u, GDK_comma, 0x0173, -GDK_u, GDK_minus, 0x016B, -GDK_u, GDK_slash, 0x00B5, -GDK_u, GDK_greater, 0x00FB, -GDK_u, GDK_asciicircum, 0x00FB, -GDK_u, GDK_underscore, 0x016B, -GDK_u, GDK_grave, 0x00F9, -GDK_u, GDK_u, 0x016D, -GDK_u, GDK_asciitilde, 0x0169, -GDK_u, GDK_diaeresis, 0x00FC, -GDK_u, GDK_acute, 0x00FA, -GDK_v, GDK_Z, 0x017D, -GDK_v, GDK_l, 0x007C, -GDK_v, GDK_z, 0x017E, -GDK_w, GDK_asciicircum, 0x0175, -GDK_x, GDK_0, 0x00A4, -GDK_x, GDK_O, 0x00A4, -GDK_x, GDK_o, 0x00A4, -GDK_x, GDK_x, 0x00D7, -GDK_y, GDK_quotedbl, 0x00FF, -GDK_y, GDK_apostrophe, 0x00FD, -GDK_y, GDK_minus, 0x00A5, -GDK_y, GDK_equal, 0x00A5, -GDK_y, GDK_asciicircum, 0x0177, -GDK_y, GDK_diaeresis, 0x00FF, -GDK_y, GDK_acute, 0x00FD, -GDK_z, GDK_apostrophe, 0x017A, -GDK_z, GDK_period, 0x017C, -GDK_z, GDK_less, 0x017E, -GDK_bar, GDK_C, 0x00A2, -GDK_bar, GDK_c, 0x00A2, -GDK_asciitilde, GDK_space, 0x007E, -GDK_asciitilde, GDK_A, 0x00C3, -GDK_asciitilde, GDK_E, 0x1EBC, -GDK_asciitilde, GDK_I, 0x0128, -GDK_asciitilde, GDK_N, 0x00D1, -GDK_asciitilde, GDK_O, 0x00D5, -GDK_asciitilde, GDK_U, 0x0168, -GDK_asciitilde, GDK_V, 0x1E7C, -GDK_asciitilde, GDK_Y, 0x1EF8, -GDK_asciitilde, GDK_a, 0x00E3, -GDK_asciitilde, GDK_e, 0x1EBD, -GDK_asciitilde, GDK_i, 0x0129, -GDK_asciitilde, GDK_n, 0x00F1, -GDK_asciitilde, GDK_o, 0x00F5, -GDK_asciitilde, GDK_u, 0x0169, -GDK_asciitilde, GDK_v, 0x1E7D, -GDK_asciitilde, GDK_y, 0x1EF9, -GDK_asciitilde, GDK_Acircumflex, 0x1EAA, -GDK_asciitilde, GDK_Ecircumflex, 0x1EC4, -GDK_asciitilde, GDK_Ocircumflex, 0x1ED6, -GDK_asciitilde, GDK_acircumflex, 0x1EAB, -GDK_asciitilde, GDK_ecircumflex, 0x1EC5, -GDK_asciitilde, GDK_ocircumflex, 0x1ED7, -GDK_asciitilde, GDK_Abreve, 0x1EB4, -GDK_asciitilde, GDK_abreve, 0x1EB5, -GDK_asciitilde, GDK_Greek_iotadieresis, 0x1FD7, -GDK_asciitilde, GDK_Greek_upsilondieresis, 0x1FE7, -GDK_asciitilde, GDK_Greek_alpha, 0x1FB6, -GDK_asciitilde, GDK_Greek_eta, 0x1FC6, -GDK_asciitilde, GDK_Greek_iota, 0x1FD6, -GDK_asciitilde, GDK_Greek_upsilon, 0x1FE6, -GDK_asciitilde, GDK_Greek_omega, 0x1FF6, -GDK_asciitilde, 0x1F00, 0x1F06, -GDK_asciitilde, 0x1F01, 0x1F07, -GDK_asciitilde, 0x1F08, 0x1F0E, -GDK_asciitilde, 0x1F09, 0x1F0F, -GDK_asciitilde, 0x1F20, 0x1F26, -GDK_asciitilde, 0x1F21, 0x1F27, -GDK_asciitilde, 0x1F28, 0x1F2E, -GDK_asciitilde, 0x1F29, 0x1F2F, -GDK_asciitilde, 0x1F30, 0x1F36, -GDK_asciitilde, 0x1F31, 0x1F37, -GDK_asciitilde, 0x1F38, 0x1F3E, -GDK_asciitilde, 0x1F39, 0x1F3F, -GDK_asciitilde, 0x1F50, 0x1F56, -GDK_asciitilde, 0x1F51, 0x1F57, -GDK_asciitilde, 0x1F59, 0x1F5F, -GDK_asciitilde, 0x1F60, 0x1F66, -GDK_asciitilde, 0x1F61, 0x1F67, -GDK_asciitilde, 0x1F68, 0x1F6E, -GDK_asciitilde, 0x1F69, 0x1F6F, -GDK_diaeresis, GDK_apostrophe, 0x0385, -GDK_diaeresis, GDK_A, 0x00C4, -GDK_diaeresis, GDK_E, 0x00CB, -GDK_diaeresis, GDK_I, 0x00CF, -GDK_diaeresis, GDK_O, 0x00D6, -GDK_diaeresis, GDK_U, 0x00DC, -GDK_diaeresis, GDK_Y, 0x0178, -GDK_diaeresis, GDK_grave, 0x1FED, -GDK_diaeresis, GDK_a, 0x00E4, -GDK_diaeresis, GDK_e, 0x00EB, -GDK_diaeresis, GDK_i, 0x00EF, -GDK_diaeresis, GDK_o, 0x00F6, -GDK_diaeresis, GDK_u, 0x00FC, -GDK_diaeresis, GDK_y, 0x00FF, -GDK_diaeresis, GDK_asciitilde, 0x1FC1, -GDK_diaeresis, GDK_acute, 0x0385, -GDK_diaeresis, GDK_dead_grave, 0x1FED, -GDK_diaeresis, GDK_dead_acute, 0x0385, -GDK_diaeresis, GDK_dead_tilde, 0x1FC1, -GDK_macron, GDK_A, 0x0100, -GDK_macron, GDK_E, 0x0112, -GDK_macron, GDK_G, 0x1E20, -GDK_macron, GDK_I, 0x012A, -GDK_macron, GDK_O, 0x014C, -GDK_macron, GDK_U, 0x016A, -GDK_macron, GDK_Y, 0x0232, -GDK_macron, GDK_a, 0x0101, -GDK_macron, GDK_e, 0x0113, -GDK_macron, GDK_g, 0x1E21, -GDK_macron, GDK_i, 0x012B, -GDK_macron, GDK_o, 0x014D, -GDK_macron, GDK_u, 0x016B, -GDK_macron, GDK_y, 0x0233, -GDK_macron, GDK_Adiaeresis, 0x01DE, -GDK_macron, GDK_AE, 0x01E2, -GDK_macron, GDK_Otilde, 0x022C, -GDK_macron, GDK_Odiaeresis, 0x022A, -GDK_macron, GDK_Udiaeresis, 0x01D5, -GDK_macron, GDK_adiaeresis, 0x01DF, -GDK_macron, GDK_ae, 0x01E3, -GDK_macron, GDK_otilde, 0x022D, -GDK_macron, GDK_odiaeresis, 0x022B, -GDK_macron, GDK_udiaeresis, 0x01D6, -GDK_macron, 0x01EA, 0x01EC, -GDK_macron, 0x01EB, 0x01ED, -GDK_macron, 0x0226, 0x01E0, -GDK_macron, 0x0227, 0x01E1, -GDK_macron, 0x022E, 0x0230, -GDK_macron, 0x022F, 0x0231, -GDK_macron, GDK_Cyrillic_i, 0x04E3, -GDK_macron, GDK_Cyrillic_u, 0x04EF, -GDK_macron, GDK_Cyrillic_I, 0x04E2, -GDK_macron, GDK_Cyrillic_U, 0x04EE, -GDK_macron, GDK_Greek_ALPHA, 0x1FB9, -GDK_macron, GDK_Greek_IOTA, 0x1FD9, -GDK_macron, GDK_Greek_UPSILON, 0x1FE9, -GDK_macron, GDK_Greek_alpha, 0x1FB1, -GDK_macron, GDK_Greek_iota, 0x1FD1, -GDK_macron, GDK_Greek_upsilon, 0x1FE1, -GDK_macron, 0x1E36, 0x1E38, -GDK_macron, 0x1E37, 0x1E39, -GDK_macron, 0x1E5A, 0x1E5C, -GDK_macron, 0x1E5B, 0x1E5D, -GDK_acute, GDK_A, 0x00C1, -GDK_acute, GDK_C, 0x0106, -GDK_acute, GDK_E, 0x00C9, -GDK_acute, GDK_G, 0x01F4, -GDK_acute, GDK_I, 0x00CD, -GDK_acute, GDK_K, 0x1E30, -GDK_acute, GDK_L, 0x0139, -GDK_acute, GDK_M, 0x1E3E, -GDK_acute, GDK_N, 0x0143, -GDK_acute, GDK_O, 0x00D3, -GDK_acute, GDK_P, 0x1E54, -GDK_acute, GDK_R, 0x0154, -GDK_acute, GDK_S, 0x015A, -GDK_acute, GDK_U, 0x00DA, -GDK_acute, GDK_W, 0x1E82, -GDK_acute, GDK_Y, 0x00DD, -GDK_acute, GDK_Z, 0x0179, -GDK_acute, GDK_a, 0x00E1, -GDK_acute, GDK_c, 0x0107, -GDK_acute, GDK_e, 0x00E9, -GDK_acute, GDK_g, 0x01F5, -GDK_acute, GDK_i, 0x00ED, -GDK_acute, GDK_k, 0x1E31, -GDK_acute, GDK_l, 0x013A, -GDK_acute, GDK_m, 0x1E3F, -GDK_acute, GDK_n, 0x0144, -GDK_acute, GDK_o, 0x00F3, -GDK_acute, GDK_p, 0x1E55, -GDK_acute, GDK_r, 0x0155, -GDK_acute, GDK_s, 0x015B, -GDK_acute, GDK_u, 0x00FA, -GDK_acute, GDK_w, 0x1E83, -GDK_acute, GDK_y, 0x00FD, -GDK_acute, GDK_z, 0x017A, -GDK_acute, GDK_Acircumflex, 0x1EA4, -GDK_acute, GDK_Aring, 0x01FA, -GDK_acute, GDK_AE, 0x01FC, -GDK_acute, GDK_Ccedilla, 0x1E08, -GDK_acute, GDK_Ecircumflex, 0x1EBE, -GDK_acute, GDK_Idiaeresis, 0x1E2E, -GDK_acute, GDK_Ocircumflex, 0x1ED0, -GDK_acute, GDK_Otilde, 0x1E4C, -GDK_acute, GDK_Ooblique, 0x01FE, -GDK_acute, GDK_Udiaeresis, 0x01D7, -GDK_acute, GDK_acircumflex, 0x1EA5, -GDK_acute, GDK_aring, 0x01FB, -GDK_acute, GDK_ae, 0x01FD, -GDK_acute, GDK_ccedilla, 0x1E09, -GDK_acute, GDK_ecircumflex, 0x1EBF, -GDK_acute, GDK_idiaeresis, 0x1E2F, -GDK_acute, GDK_ocircumflex, 0x1ED1, -GDK_acute, GDK_otilde, 0x1E4D, -GDK_acute, GDK_oslash, 0x01FF, -GDK_acute, GDK_udiaeresis, 0x01D8, -GDK_acute, GDK_Abreve, 0x1EAE, -GDK_acute, GDK_abreve, 0x1EAF, -GDK_acute, GDK_Emacron, 0x1E16, -GDK_acute, GDK_emacron, 0x1E17, -GDK_acute, GDK_Omacron, 0x1E52, -GDK_acute, GDK_Utilde, 0x1E78, -GDK_acute, GDK_omacron, 0x1E53, -GDK_acute, GDK_utilde, 0x1E79, -GDK_acute, GDK_Cyrillic_ghe, 0x0453, -GDK_acute, GDK_Cyrillic_ka, 0x045C, -GDK_acute, GDK_Cyrillic_GHE, 0x0403, -GDK_acute, GDK_Cyrillic_KA, 0x040C, -GDK_acute, GDK_Greek_iotadieresis, 0x0390, -GDK_acute, GDK_Greek_upsilondieresis, 0x03B0, -GDK_acute, GDK_Greek_ALPHA, 0x0386, -GDK_acute, GDK_Greek_EPSILON, 0x0388, -GDK_acute, GDK_Greek_ETA, 0x0389, -GDK_acute, GDK_Greek_IOTA, 0x038A, -GDK_acute, GDK_Greek_OMICRON, 0x038C, -GDK_acute, GDK_Greek_UPSILON, 0x038E, -GDK_acute, GDK_Greek_OMEGA, 0x038F, -GDK_acute, GDK_Greek_alpha, 0x03AC, -GDK_acute, GDK_Greek_epsilon, 0x03AD, -GDK_acute, GDK_Greek_eta, 0x03AE, -GDK_acute, GDK_Greek_iota, 0x03AF, -GDK_acute, GDK_Greek_omicron, 0x03CC, -GDK_acute, GDK_Greek_upsilon, 0x03CD, -GDK_acute, GDK_Greek_omega, 0x03CE, -GDK_acute, 0x1F00, 0x1F04, -GDK_acute, 0x1F01, 0x1F05, -GDK_acute, 0x1F08, 0x1F0C, -GDK_acute, 0x1F09, 0x1F0D, -GDK_acute, 0x1F10, 0x1F14, -GDK_acute, 0x1F11, 0x1F15, -GDK_acute, 0x1F18, 0x1F1C, -GDK_acute, 0x1F19, 0x1F1D, -GDK_acute, 0x1F20, 0x1F24, -GDK_acute, 0x1F21, 0x1F25, -GDK_acute, 0x1F28, 0x1F2C, -GDK_acute, 0x1F29, 0x1F2D, -GDK_acute, 0x1F30, 0x1F34, -GDK_acute, 0x1F31, 0x1F35, -GDK_acute, 0x1F38, 0x1F3C, -GDK_acute, 0x1F39, 0x1F3D, -GDK_acute, 0x1F40, 0x1F44, -GDK_acute, 0x1F41, 0x1F45, -GDK_acute, 0x1F48, 0x1F4C, -GDK_acute, 0x1F49, 0x1F4D, -GDK_acute, 0x1F50, 0x1F54, -GDK_acute, 0x1F51, 0x1F55, -GDK_acute, 0x1F59, 0x1F5D, -GDK_acute, 0x1F60, 0x1F64, -GDK_acute, 0x1F61, 0x1F65, -GDK_acute, 0x1F68, 0x1F6C, -GDK_acute, 0x1F69, 0x1F6D, -GDK_cedilla, GDK_C, 0x00C7, -GDK_cedilla, GDK_D, 0x1E10, -GDK_cedilla, GDK_E, 0x0228, -GDK_cedilla, GDK_G, 0x0122, -GDK_cedilla, GDK_H, 0x1E28, -GDK_cedilla, GDK_K, 0x0136, -GDK_cedilla, GDK_L, 0x013B, -GDK_cedilla, GDK_N, 0x0145, -GDK_cedilla, GDK_R, 0x0156, -GDK_cedilla, GDK_S, 0x015E, -GDK_cedilla, GDK_T, 0x0162, -GDK_cedilla, GDK_c, 0x00E7, -GDK_cedilla, GDK_d, 0x1E11, -GDK_cedilla, GDK_e, 0x0229, -GDK_cedilla, GDK_g, 0x0123, -GDK_cedilla, GDK_h, 0x1E29, -GDK_cedilla, GDK_k, 0x0137, -GDK_cedilla, GDK_l, 0x013C, -GDK_cedilla, GDK_n, 0x0146, -GDK_cedilla, GDK_r, 0x0157, -GDK_cedilla, GDK_s, 0x015F, -GDK_cedilla, GDK_t, 0x0163, -GDK_breve, GDK_G, 0x011E, -GDK_breve, GDK_g, 0x011F, -0x05B4, GDK_hebrew_yod, 0xFB1D, -0x05B7, 0x05F2, 0xFB1F, -0x05B7, GDK_hebrew_aleph, 0xFB2E, -0x05B8, GDK_hebrew_aleph, 0xFB2F, -0x05B9, GDK_hebrew_waw, 0xFB4B, -0x05BC, GDK_hebrew_aleph, 0xFB30, -0x05BC, GDK_hebrew_beth, 0xFB31, -0x05BC, GDK_hebrew_gimmel, 0xFB32, -0x05BC, GDK_hebrew_daleth, 0xFB33, -0x05BC, GDK_hebrew_he, 0xFB34, -0x05BC, GDK_hebrew_waw, 0xFB35, -0x05BC, GDK_hebrew_zayin, 0xFB36, -0x05BC, GDK_hebrew_teth, 0xFB38, -0x05BC, GDK_hebrew_yod, 0xFB39, -0x05BC, GDK_hebrew_finalkaph, 0xFB3A, -0x05BC, GDK_hebrew_kaph, 0xFB3B, -0x05BC, GDK_hebrew_lamed, 0xFB3C, -0x05BC, GDK_hebrew_mem, 0xFB3E, -0x05BC, GDK_hebrew_nun, 0xFB40, -0x05BC, GDK_hebrew_samekh, 0xFB41, -0x05BC, GDK_hebrew_finalpe, 0xFB43, -0x05BC, GDK_hebrew_pe, 0xFB44, -0x05BC, GDK_hebrew_zadi, 0xFB46, -0x05BC, GDK_hebrew_qoph, 0xFB47, -0x05BC, GDK_hebrew_resh, 0xFB48, -0x05BC, GDK_hebrew_shin, 0xFB49, -0x05BC, GDK_hebrew_taw, 0xFB4A, -0x05BF, GDK_hebrew_beth, 0xFB4C, -0x05BF, GDK_hebrew_kaph, 0xFB4D, -0x05BF, GDK_hebrew_pe, 0xFB4E, -0x05C1, GDK_hebrew_shin, 0xFB2A, -0x05C1, 0xFB49, 0xFB2C, -0x05C2, GDK_hebrew_shin, 0xFB2B, -0x05C2, 0xFB49, 0xFB2D, -0x0653, GDK_Arabic_alef, 0x0622, -0x0654, GDK_Arabic_alef, 0x0623, -0x0654, GDK_Arabic_waw, 0x0624, -0x0654, GDK_Arabic_yeh, 0x0626, -0x0654, 0x06C1, 0x06C2, -0x0654, 0x06D2, 0x06D3, -0x0654, 0x06D5, 0x06C0, -0x0655, GDK_Arabic_alef, 0x0625, -GDK_Cyrillic_pe, GDK_Cyrillic_a, 0x00A7, -GDK_Cyrillic_IE, GDK_equal, 0x20AC, -GDK_Cyrillic_EN, GDK_Cyrillic_o, 0x2116, -GDK_Cyrillic_EN, GDK_Cyrillic_O, 0x2116, -GDK_Cyrillic_ES, GDK_equal, 0x20AC, -GDK_Greek_ALPHA, GDK_apostrophe, 0x0386, -GDK_Greek_EPSILON, GDK_apostrophe, 0x0388, -GDK_Greek_ETA, GDK_apostrophe, 0x0389, -GDK_Greek_IOTA, GDK_quotedbl, 0x03AA, -GDK_Greek_IOTA, GDK_apostrophe, 0x038A, -GDK_Greek_OMICRON, GDK_apostrophe, 0x038C, -GDK_Greek_UPSILON, GDK_quotedbl, 0x03AB, -GDK_Greek_UPSILON, GDK_apostrophe, 0x038E, -GDK_Greek_OMEGA, GDK_apostrophe, 0x038F, -GDK_Greek_alpha, GDK_apostrophe, 0x03AC, -GDK_Greek_epsilon, GDK_apostrophe, 0x03AD, -GDK_Greek_eta, GDK_apostrophe, 0x03AE, -GDK_Greek_iota, GDK_quotedbl, 0x03CA, -GDK_Greek_iota, GDK_apostrophe, 0x03AF, -GDK_Greek_iota, GDK_Greek_alphaaccent, 0x1FB4, -GDK_Greek_iota, GDK_Greek_etaaccent, 0x1FC4, -GDK_Greek_iota, GDK_Greek_omegaaccent, 0x1FF4, -GDK_Greek_iota, GDK_Greek_ALPHA, 0x1FBC, -GDK_Greek_iota, GDK_Greek_ETA, 0x1FCC, -GDK_Greek_iota, GDK_Greek_OMEGA, 0x1FFC, -GDK_Greek_iota, GDK_Greek_alpha, 0x1FB3, -GDK_Greek_iota, GDK_Greek_eta, 0x1FC3, -GDK_Greek_iota, GDK_Greek_omega, 0x1FF3, -GDK_Greek_iota, 0x1F00, 0x1F80, -GDK_Greek_iota, 0x1F01, 0x1F81, -GDK_Greek_iota, 0x1F02, 0x1F82, -GDK_Greek_iota, 0x1F03, 0x1F83, -GDK_Greek_iota, 0x1F04, 0x1F84, -GDK_Greek_iota, 0x1F05, 0x1F85, -GDK_Greek_iota, 0x1F06, 0x1F86, -GDK_Greek_iota, 0x1F07, 0x1F87, -GDK_Greek_iota, 0x1F08, 0x1F88, -GDK_Greek_iota, 0x1F09, 0x1F89, -GDK_Greek_iota, 0x1F0A, 0x1F8A, -GDK_Greek_iota, 0x1F0B, 0x1F8B, -GDK_Greek_iota, 0x1F0C, 0x1F8C, -GDK_Greek_iota, 0x1F0D, 0x1F8D, -GDK_Greek_iota, 0x1F0E, 0x1F8E, -GDK_Greek_iota, 0x1F0F, 0x1F8F, -GDK_Greek_iota, 0x1F20, 0x1F90, -GDK_Greek_iota, 0x1F21, 0x1F91, -GDK_Greek_iota, 0x1F22, 0x1F92, -GDK_Greek_iota, 0x1F23, 0x1F93, -GDK_Greek_iota, 0x1F24, 0x1F94, -GDK_Greek_iota, 0x1F25, 0x1F95, -GDK_Greek_iota, 0x1F26, 0x1F96, -GDK_Greek_iota, 0x1F27, 0x1F97, -GDK_Greek_iota, 0x1F28, 0x1F98, -GDK_Greek_iota, 0x1F29, 0x1F99, -GDK_Greek_iota, 0x1F2A, 0x1F9A, -GDK_Greek_iota, 0x1F2B, 0x1F9B, -GDK_Greek_iota, 0x1F2C, 0x1F9C, -GDK_Greek_iota, 0x1F2D, 0x1F9D, -GDK_Greek_iota, 0x1F2E, 0x1F9E, -GDK_Greek_iota, 0x1F2F, 0x1F9F, -GDK_Greek_iota, 0x1F60, 0x1FA0, -GDK_Greek_iota, 0x1F61, 0x1FA1, -GDK_Greek_iota, 0x1F62, 0x1FA2, -GDK_Greek_iota, 0x1F63, 0x1FA3, -GDK_Greek_iota, 0x1F64, 0x1FA4, -GDK_Greek_iota, 0x1F65, 0x1FA5, -GDK_Greek_iota, 0x1F66, 0x1FA6, -GDK_Greek_iota, 0x1F67, 0x1FA7, -GDK_Greek_iota, 0x1F68, 0x1FA8, -GDK_Greek_iota, 0x1F69, 0x1FA9, -GDK_Greek_iota, 0x1F6A, 0x1FAA, -GDK_Greek_iota, 0x1F6B, 0x1FAB, -GDK_Greek_iota, 0x1F6C, 0x1FAC, -GDK_Greek_iota, 0x1F6D, 0x1FAD, -GDK_Greek_iota, 0x1F6E, 0x1FAE, -GDK_Greek_iota, 0x1F6F, 0x1FAF, -GDK_Greek_iota, 0x1F70, 0x1FB2, -GDK_Greek_iota, 0x1F74, 0x1FC2, -GDK_Greek_iota, 0x1F7C, 0x1FF2, -GDK_Greek_iota, 0x1FB6, 0x1FB7, -GDK_Greek_iota, 0x1FC6, 0x1FC7, -GDK_Greek_iota, 0x1FF6, 0x1FF7, -GDK_Greek_omicron, GDK_apostrophe, 0x03CC, -GDK_Greek_upsilon, GDK_quotedbl, 0x03CB, -GDK_Greek_upsilon, GDK_apostrophe, 0x03CD, -GDK_Greek_omega, GDK_apostrophe, 0x03CE, -GDK_lessthanequal, 0x0338, 0x2270, -GDK_greaterthanequal, 0x0338, 0x2271, -GDK_approximate, 0x0338, 0x2247, -GDK_identical, 0x0338, 0x2262, -GDK_includedin, 0x0338, 0x2284, -GDK_includes, 0x0338, 0x2285, -0x093C, 0x0915, 0x0958, -0x093C, 0x0916, 0x0959, -0x093C, 0x0917, 0x095A, -0x093C, 0x091C, 0x095B, -0x093C, 0x0921, 0x095C, -0x093C, 0x0922, 0x095D, -0x093C, 0x0928, 0x0929, -0x093C, 0x092B, 0x095E, -0x093C, 0x092F, 0x095F, -0x093C, 0x0930, 0x0931, -0x093C, 0x0933, 0x0934, -0x09BC, 0x09A1, 0x09DC, -0x09BC, 0x09A2, 0x09DD, -0x09BC, 0x09AF, 0x09DF, -0x09C7, 0x09BE, 0x09CB, -0x09C7, 0x09D7, 0x09CC, -0x0A3C, 0x0A16, 0x0A59, -0x0A3C, 0x0A17, 0x0A5A, -0x0A3C, 0x0A1C, 0x0A5B, -0x0A3C, 0x0A2B, 0x0A5E, -0x0A3C, 0x0A32, 0x0A33, -0x0A3C, 0x0A38, 0x0A36, -0x0B3C, 0x0B21, 0x0B5C, -0x0B3C, 0x0B22, 0x0B5D, -0x0B47, 0x0B3E, 0x0B4B, -0x0B47, 0x0B56, 0x0B48, -0x0B47, 0x0B57, 0x0B4C, -GDK_leftcaret, 0x0338, 0x226E, -GDK_rightcaret, 0x0338, 0x226F, -GDK_underbar, GDK_parenleft, 0x208D, -GDK_underbar, GDK_parenright, 0x208E, -GDK_underbar, GDK_plus, 0x208A, -GDK_underbar, GDK_0, 0x2080, -GDK_underbar, GDK_1, 0x2081, -GDK_underbar, GDK_2, 0x2082, -GDK_underbar, GDK_3, 0x2083, -GDK_underbar, GDK_4, 0x2084, -GDK_underbar, GDK_5, 0x2085, -GDK_underbar, GDK_6, 0x2086, -GDK_underbar, GDK_7, 0x2087, -GDK_underbar, GDK_8, 0x2088, -GDK_underbar, GDK_9, 0x2089, -GDK_underbar, GDK_equal, 0x208C, -0x0BC6, 0x0BBE, 0x0BCA, -0x0BC6, 0x0BD7, 0x0BCC, -GDK_underbar, 0x2212, 0x208B, -GDK_underbar, GDK_KP_Space, 0x2082, -GDK_underbar, GDK_KP_Add, 0x208A, -GDK_underbar, GDK_KP_0, 0x2080, -GDK_underbar, GDK_KP_1, 0x2081, -GDK_underbar, GDK_KP_2, 0x2082, -GDK_underbar, GDK_KP_3, 0x2083, -GDK_underbar, GDK_KP_4, 0x2084, -GDK_underbar, GDK_KP_5, 0x2085, -GDK_underbar, GDK_KP_6, 0x2086, -GDK_underbar, GDK_KP_7, 0x2087, -GDK_underbar, GDK_KP_8, 0x2088, -GDK_underbar, GDK_KP_9, 0x2089, -GDK_underbar, GDK_KP_Equal, 0x208C, -0x0BC7, 0x0BBE, 0x0BCB, -0x0BD7, 0x0B92, 0x0B94, -GDK_rightshoe, 0x0338, 0x2285, -GDK_leftshoe, 0x0338, 0x2284, -GDK_righttack, 0x0338, 0x22AC, -0x0C46, 0x0C56, 0x0C48, -0x0CBF, 0x0CD5, 0x0CC0, -0x0CC6, 0x0CC2, 0x0CCA, -0x0CC6, 0x0CD5, 0x0CC7, -0x0CC6, 0x0CD6, 0x0CC8, -0x0CCA, 0x0CD5, 0x0CCB, -0x0D46, 0x0D3E, 0x0D4A, -0x0D46, 0x0D57, 0x0D4C, -0x0D47, 0x0D3E, 0x0D4B, -0x0DD9, 0x0DCA, 0x0DDA, -0x0DD9, 0x0DCF, 0x0DDC, -0x0DD9, 0x0DDF, 0x0DDE, -0x0DDC, 0x0DCA, 0x0DDD, -0x0F71, 0x0F72, 0x0F73, -0x0F71, 0x0F74, 0x0F75, -0x0F71, 0x0F80, 0x0F81, -0x0F90, 0x0FB5, 0x0FB9, -0x0F92, 0x0FB7, 0x0F93, -0x0F9C, 0x0FB7, 0x0F9D, -0x0FA1, 0x0FB7, 0x0FA2, -0x0FA6, 0x0FB7, 0x0FA7, -0x0FAB, 0x0FB7, 0x0FAC, -0x0FB2, 0x0F80, 0x0F76, -0x0FB3, 0x0F80, 0x0F78, -0x0FB5, 0x0F40, 0x0F69, -0x0FB7, 0x0F42, 0x0F43, -0x0FB7, 0x0F4C, 0x0F4D, -0x0FB7, 0x0F51, 0x0F52, -0x0FB7, 0x0F56, 0x0F57, -0x0FB7, 0x0F5B, 0x0F5C, -0x102E, 0x1025, 0x1026, -0x1100, 0x1100, 0x1101, -0x1102, 0x1100, 0x1113, -0x1102, 0x1102, 0x1114, -0x1102, 0x1103, 0x1115, -0x1102, 0x1107, 0x1116, -0x1103, 0x1100, 0x1117, -0x1103, 0x1103, 0x1104, -0x1105, 0x1102, 0x1118, -0x1105, 0x1105, 0x1119, -0x1105, 0x110B, 0x111B, -0x1105, 0x1112, 0x111A, -0x1106, 0x1107, 0x111C, -0x1106, 0x110B, 0x111D, -0x1107, 0x1100, 0x111E, -0x1107, 0x1102, 0x111F, -0x1107, 0x1103, 0x1120, -0x1107, 0x1107, 0x1108, -0x1107, 0x1109, 0x1121, -0x1107, 0x110A, 0x1125, -0x1107, 0x110B, 0x112B, -0x1107, 0x110C, 0x1127, -0x1107, 0x110E, 0x1128, -0x1107, 0x1110, 0x1129, -0x1107, 0x1111, 0x112A, -0x1107, 0x112B, 0x112C, -0x1107, 0x112D, 0x1122, -0x1107, 0x112F, 0x1123, -0x1107, 0x1132, 0x1124, -0x1107, 0x1136, 0x1126, -0x1108, 0x110B, 0x112C, -0x1109, 0x1100, 0x112D, -0x1109, 0x1102, 0x112E, -0x1109, 0x1103, 0x112F, -0x1109, 0x1105, 0x1130, -0x1109, 0x1106, 0x1131, -0x1109, 0x1107, 0x1132, -0x1109, 0x1109, 0x110A, -0x1109, 0x110A, 0x1134, -0x1109, 0x110B, 0x1135, -0x1109, 0x110C, 0x1136, -0x1109, 0x110E, 0x1137, -0x1109, 0x110F, 0x1138, -0x1109, 0x1110, 0x1139, -0x1109, 0x1111, 0x113A, -0x1109, 0x1112, 0x113B, -0x1109, 0x111E, 0x1133, -0x110A, 0x1109, 0x1134, -0x110B, 0x1100, 0x1141, -0x110B, 0x1103, 0x1142, -0x110B, 0x1106, 0x1143, -0x110B, 0x1107, 0x1144, -0x110B, 0x1109, 0x1145, -0x110B, 0x110B, 0x1147, -0x110B, 0x110C, 0x1148, -0x110B, 0x110E, 0x1149, -0x110B, 0x1110, 0x114A, -0x110B, 0x1111, 0x114B, -0x110B, 0x1140, 0x1146, -0x110C, 0x110B, 0x114D, -0x110C, 0x110C, 0x110D, -0x110E, 0x110F, 0x1152, -0x110E, 0x1112, 0x1153, -0x1111, 0x1107, 0x1156, -0x1111, 0x110B, 0x1157, -0x1112, 0x1112, 0x1158, -0x1121, 0x1100, 0x1122, -0x1121, 0x1103, 0x1123, -0x1121, 0x1107, 0x1124, -0x1121, 0x1109, 0x1125, -0x1121, 0x110C, 0x1126, -0x1132, 0x1100, 0x1133, -0x113C, 0x113C, 0x113D, -0x113E, 0x113E, 0x113F, -0x114E, 0x114E, 0x114F, -0x1150, 0x1150, 0x1151, -0x1161, 0x1169, 0x1176, -0x1161, 0x116E, 0x1177, -0x1161, 0x1175, 0x1162, -0x1163, 0x1169, 0x1178, -0x1163, 0x116D, 0x1179, -0x1163, 0x1175, 0x1164, -0x1165, 0x1169, 0x117A, -0x1165, 0x116E, 0x117B, -0x1165, 0x1173, 0x117C, -0x1165, 0x1175, 0x1166, -0x1167, 0x1169, 0x117D, -0x1167, 0x116E, 0x117E, -0x1167, 0x1175, 0x1168, -0x1169, 0x1161, 0x116A, -0x1169, 0x1162, 0x116B, -0x1169, 0x1165, 0x117F, -0x1169, 0x1166, 0x1180, -0x1169, 0x1168, 0x1181, -0x1169, 0x1169, 0x1182, -0x1169, 0x116E, 0x1183, -0x1169, 0x1175, 0x116C, -0x116A, 0x1175, 0x116B, -0x116D, 0x1163, 0x1184, -0x116D, 0x1164, 0x1185, -0x116D, 0x1167, 0x1186, -0x116D, 0x1169, 0x1187, -0x116D, 0x1175, 0x1188, -0x116E, 0x1161, 0x1189, -0x116E, 0x1162, 0x118A, -0x116E, 0x1165, 0x116F, -0x116E, 0x1166, 0x1170, -0x116E, 0x1168, 0x118C, -0x116E, 0x116E, 0x118D, -0x116E, 0x1175, 0x1171, -0x116E, 0x117C, 0x118B, -0x116F, 0x1173, 0x118B, -0x116F, 0x1175, 0x1170, -0x1172, 0x1161, 0x118E, -0x1172, 0x1165, 0x118F, -0x1172, 0x1166, 0x1190, -0x1172, 0x1167, 0x1191, -0x1172, 0x1168, 0x1192, -0x1172, 0x116E, 0x1193, -0x1172, 0x1175, 0x1194, -0x1173, 0x116E, 0x1195, -0x1173, 0x1173, 0x1196, -0x1173, 0x1175, 0x1174, -0x1174, 0x116E, 0x1197, -0x1175, 0x1161, 0x1198, -0x1175, 0x1163, 0x1199, -0x1175, 0x1169, 0x119A, -0x1175, 0x116E, 0x119B, -0x1175, 0x1173, 0x119C, -0x1175, 0x119E, 0x119D, -0x119E, 0x1165, 0x119F, -0x119E, 0x116E, 0x11A0, -0x119E, 0x1175, 0x11A1, -0x119E, 0x119E, 0x11A2, -0x11A8, 0x11A8, 0x11A9, -0x11A8, 0x11AF, 0x11C3, -0x11A8, 0x11BA, 0x11AA, -0x11A8, 0x11E7, 0x11C4, -0x11AA, 0x11A8, 0x11C4, -0x11AB, 0x11A8, 0x11C5, -0x11AB, 0x11AE, 0x11C6, -0x11AB, 0x11BA, 0x11C7, -0x11AB, 0x11BD, 0x11AC, -0x11AB, 0x11C0, 0x11C9, -0x11AB, 0x11C2, 0x11AD, -0x11AB, 0x11EB, 0x11C8, -0x11AE, 0x11A8, 0x11CA, -0x11AE, 0x11AF, 0x11CB, -0x11AF, 0x11A8, 0x11B0, -0x11AF, 0x11AA, 0x11CC, -0x11AF, 0x11AB, 0x11CD, -0x11AF, 0x11AE, 0x11CE, -0x11AF, 0x11AF, 0x11D0, -0x11AF, 0x11B7, 0x11B1, -0x11AF, 0x11B8, 0x11B2, -0x11AF, 0x11B9, 0x11D3, -0x11AF, 0x11BA, 0x11B3, -0x11AF, 0x11BB, 0x11D6, -0x11AF, 0x11BF, 0x11D8, -0x11AF, 0x11C0, 0x11B4, -0x11AF, 0x11C1, 0x11B5, -0x11AF, 0x11C2, 0x11B6, -0x11AF, 0x11DA, 0x11D1, -0x11AF, 0x11DD, 0x11D2, -0x11AF, 0x11E5, 0x11D4, -0x11AF, 0x11E6, 0x11D5, -0x11AF, 0x11EB, 0x11D7, -0x11AF, 0x11F9, 0x11D9, -0x11B0, 0x11BA, 0x11CC, -0x11B1, 0x11A8, 0x11D1, -0x11B1, 0x11BA, 0x11D2, -0x11B2, 0x11BA, 0x11D3, -0x11B2, 0x11BC, 0x11D5, -0x11B2, 0x11C2, 0x11D4, -0x11B3, 0x11BA, 0x11D6, -0x11B7, 0x11A8, 0x11DA, -0x11B7, 0x11AF, 0x11DB, -0x11B7, 0x11B8, 0x11DC, -0x11B7, 0x11BA, 0x11DD, -0x11B7, 0x11BB, 0x11DE, -0x11B7, 0x11BC, 0x11E2, -0x11B7, 0x11BE, 0x11E0, -0x11B7, 0x11C2, 0x11E1, -0x11B7, 0x11EB, 0x11DF, -0x11B8, 0x11AF, 0x11E3, -0x11B8, 0x11BA, 0x11B9, -0x11B8, 0x11BC, 0x11E6, -0x11B8, 0x11C1, 0x11E4, -0x11B8, 0x11C2, 0x11E5, -0x11BA, 0x11A8, 0x11E7, -0x11BA, 0x11AE, 0x11E8, -0x11BA, 0x11AF, 0x11E9, -0x11BA, 0x11B8, 0x11EA, -0x11BA, 0x11BA, 0x11BB, -0x11BC, 0x11A8, 0x11EC, -0x11BC, 0x11A9, 0x11ED, -0x11BC, 0x11BC, 0x11EE, -0x11BC, 0x11BF, 0x11EF, -0x11C1, 0x11B8, 0x11F3, -0x11C1, 0x11BC, 0x11F4, -0x11C2, 0x11AB, 0x11F5, -0x11C2, 0x11AF, 0x11F6, -0x11C2, 0x11B7, 0x11F7, -0x11C2, 0x11B8, 0x11F8, -0x11CE, 0x11C2, 0x11CF, -0x11DD, 0x11BA, 0x11DE, -0x11EC, 0x11A8, 0x11ED, -0x11F0, 0x11BA, 0x11F1, -0x11F0, 0x11EB, 0x11F2, -0x1FBF, GDK_apostrophe, 0x1FCE, -0x1FBF, GDK_grave, 0x1FCD, -0x1FBF, GDK_asciitilde, 0x1FCF, -0x1FBF, GDK_acute, 0x1FCE, -0x1FBF, GDK_dead_grave, 0x1FCD, -0x1FBF, GDK_dead_acute, 0x1FCE, -0x1FBF, GDK_dead_tilde, 0x1FCF, -0x1FFE, GDK_apostrophe, 0x1FDE, -0x1FFE, GDK_grave, 0x1FDD, -0x1FFE, GDK_asciitilde, 0x1FDF, -0x1FFE, GDK_acute, 0x1FDE, -0x1FFE, GDK_dead_grave, 0x1FDD, -0x1FFE, GDK_dead_acute, 0x1FDE, -0x1FFE, GDK_dead_tilde, 0x1FDF, -0x2203, 0x0338, 0x2204, -0x2208, 0x0338, 0x2209, -0x220B, 0x0338, 0x220C, -0x2223, 0x0338, 0x2224, -0x2225, 0x0338, 0x2226, -0x223C, 0x0338, 0x2241, -0x2243, 0x0338, 0x2244, -0x2248, 0x0338, 0x2249, -0x224D, 0x0338, 0x226D, -0x2272, 0x0338, 0x2274, -0x2273, 0x0338, 0x2275, -0x2276, 0x0338, 0x2278, -0x2277, 0x0338, 0x2279, -0x227A, 0x0338, 0x2280, -0x227B, 0x0338, 0x2281, -0x227C, 0x0338, 0x22E0, -0x227D, 0x0338, 0x22E1, -0x2286, 0x0338, 0x2288, -0x2287, 0x0338, 0x2289, -0x2291, 0x0338, 0x22E2, -0x2292, 0x0338, 0x22E3, -0x22A8, 0x0338, 0x22AD, -0x22A9, 0x0338, 0x22AE, -0x22AB, 0x0338, 0x22AF, -0x22B2, 0x0338, 0x22EA, -0x22B3, 0x0338, 0x22EB, -0x22B4, 0x0338, 0x22EC, -0x22B5, 0x0338, 0x22ED, -0x2ADD, 0x0338, 0x2ADC, -GDK_KP_Divide, GDK_D, 0x0110, -GDK_KP_Divide, GDK_G, 0x01E4, -GDK_KP_Divide, GDK_H, 0x0126, -GDK_KP_Divide, GDK_I, 0x0197, -GDK_KP_Divide, GDK_L, 0x0141, -GDK_KP_Divide, GDK_O, 0x00D8, -GDK_KP_Divide, GDK_T, 0x0166, -GDK_KP_Divide, GDK_Z, 0x01B5, -GDK_KP_Divide, GDK_b, 0x0180, -GDK_KP_Divide, GDK_d, 0x0111, -GDK_KP_Divide, GDK_g, 0x01E5, -GDK_KP_Divide, GDK_h, 0x0127, -GDK_KP_Divide, GDK_i, 0x0268, -GDK_KP_Divide, GDK_l, 0x0142, -GDK_KP_Divide, GDK_o, 0x00F8, -GDK_KP_Divide, GDK_t, 0x0167, -GDK_KP_Divide, GDK_z, 0x01B6, -GDK_KP_Divide, 0x0294, 0x02A1, -GDK_KP_Divide, 0x04AE, 0x04B0, -GDK_KP_Divide, 0x04AF, 0x04B1, -GDK_KP_Divide, GDK_Cyrillic_ghe, 0x0493, -GDK_KP_Divide, GDK_Cyrillic_ka, 0x049F, -GDK_KP_Divide, GDK_Cyrillic_GHE, 0x0492, -GDK_KP_Divide, GDK_Cyrillic_KA, 0x049E, -GDK_KP_Divide, GDK_leftarrow, 0x219A, -GDK_KP_Divide, GDK_rightarrow, 0x219B, -GDK_KP_Divide, 0x2194, 0x21AE, -GDK_KP_Equal, 0x0338, 0x2260, -GDK_exclam, GDK_plus, GDK_O, 0x1EE2, -GDK_exclam, GDK_plus, GDK_U, 0x1EF0, -GDK_exclam, GDK_plus, GDK_o, 0x1EE3, -GDK_exclam, GDK_plus, GDK_u, 0x1EF1, -GDK_exclam, GDK_dead_horn, GDK_O, 0x1EE2, -GDK_exclam, GDK_dead_horn, GDK_U, 0x1EF0, -GDK_exclam, GDK_dead_horn, GDK_o, 0x1EE3, -GDK_exclam, GDK_dead_horn, GDK_u, 0x1EF1, -GDK_quotedbl, GDK_apostrophe, GDK_space, 0x0385, -GDK_quotedbl, GDK_apostrophe, GDK_Greek_iota, 0x0390, -GDK_quotedbl, GDK_apostrophe, GDK_Greek_upsilon, 0x03B0, -GDK_quotedbl, GDK_underscore, GDK_U, 0x1E7A, -GDK_quotedbl, GDK_underscore, GDK_u, 0x1E7B, -GDK_quotedbl, GDK_asciitilde, GDK_O, 0x1E4E, -GDK_quotedbl, GDK_asciitilde, GDK_o, 0x1E4F, -GDK_quotedbl, GDK_macron, GDK_U, 0x1E7A, -GDK_quotedbl, GDK_macron, GDK_u, 0x1E7B, -GDK_quotedbl, GDK_dead_tilde, GDK_O, 0x1E4E, -GDK_quotedbl, GDK_dead_tilde, GDK_o, 0x1E4F, -GDK_quotedbl, GDK_dead_macron, GDK_U, 0x1E7A, -GDK_quotedbl, GDK_dead_macron, GDK_u, 0x1E7B, -GDK_apostrophe, GDK_quotedbl, GDK_space, 0x0385, -GDK_apostrophe, GDK_quotedbl, GDK_I, 0x1E2E, -GDK_apostrophe, GDK_quotedbl, GDK_U, 0x01D7, -GDK_apostrophe, GDK_quotedbl, GDK_i, 0x1E2F, -GDK_apostrophe, GDK_quotedbl, GDK_u, 0x01D8, -GDK_apostrophe, GDK_quotedbl, GDK_Greek_iota, 0x0390, -GDK_apostrophe, GDK_quotedbl, GDK_Greek_upsilon, 0x03B0, -GDK_apostrophe, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_EPSILON, 0x1F1D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_ETA, 0x1F2D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_IOTA, 0x1F3D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_OMICRON, 0x1F4D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6D, -GDK_apostrophe, GDK_parenleft, GDK_Greek_alpha, 0x1F05, -GDK_apostrophe, GDK_parenleft, GDK_Greek_epsilon, 0x1F15, -GDK_apostrophe, GDK_parenleft, GDK_Greek_eta, 0x1F25, -GDK_apostrophe, GDK_parenleft, GDK_Greek_iota, 0x1F35, -GDK_apostrophe, GDK_parenleft, GDK_Greek_omicron, 0x1F45, -GDK_apostrophe, GDK_parenleft, GDK_Greek_upsilon, 0x1F55, -GDK_apostrophe, GDK_parenleft, GDK_Greek_omega, 0x1F65, -GDK_apostrophe, GDK_parenright, GDK_Greek_ALPHA, 0x1F0C, -GDK_apostrophe, GDK_parenright, GDK_Greek_EPSILON, 0x1F1C, -GDK_apostrophe, GDK_parenright, GDK_Greek_ETA, 0x1F2C, -GDK_apostrophe, GDK_parenright, GDK_Greek_IOTA, 0x1F3C, -GDK_apostrophe, GDK_parenright, GDK_Greek_OMICRON, 0x1F4C, -GDK_apostrophe, GDK_parenright, GDK_Greek_OMEGA, 0x1F6C, -GDK_apostrophe, GDK_parenright, GDK_Greek_alpha, 0x1F04, -GDK_apostrophe, GDK_parenright, GDK_Greek_epsilon, 0x1F14, -GDK_apostrophe, GDK_parenright, GDK_Greek_eta, 0x1F24, -GDK_apostrophe, GDK_parenright, GDK_Greek_iota, 0x1F34, -GDK_apostrophe, GDK_parenright, GDK_Greek_omicron, 0x1F44, -GDK_apostrophe, GDK_parenright, GDK_Greek_upsilon, 0x1F54, -GDK_apostrophe, GDK_parenright, GDK_Greek_omega, 0x1F64, -GDK_apostrophe, GDK_plus, GDK_O, 0x1EDA, -GDK_apostrophe, GDK_plus, GDK_U, 0x1EE8, -GDK_apostrophe, GDK_plus, GDK_o, 0x1EDB, -GDK_apostrophe, GDK_plus, GDK_u, 0x1EE9, -GDK_apostrophe, GDK_slash, GDK_O, 0x01FE, -GDK_apostrophe, GDK_slash, GDK_o, 0x01FF, -GDK_apostrophe, GDK_asciicircum, GDK_A, 0x1EA4, -GDK_apostrophe, GDK_asciicircum, GDK_E, 0x1EBE, -GDK_apostrophe, GDK_asciicircum, GDK_O, 0x1ED0, -GDK_apostrophe, GDK_asciicircum, GDK_a, 0x1EA5, -GDK_apostrophe, GDK_asciicircum, GDK_e, 0x1EBF, -GDK_apostrophe, GDK_asciicircum, GDK_o, 0x1ED1, -GDK_apostrophe, GDK_underscore, GDK_E, 0x1E16, -GDK_apostrophe, GDK_underscore, GDK_O, 0x1E52, -GDK_apostrophe, GDK_underscore, GDK_e, 0x1E17, -GDK_apostrophe, GDK_underscore, GDK_o, 0x1E53, -GDK_apostrophe, GDK_b, GDK_A, 0x1EAE, -GDK_apostrophe, GDK_b, GDK_a, 0x1EAF, -GDK_apostrophe, GDK_asciitilde, GDK_O, 0x1E4C, -GDK_apostrophe, GDK_asciitilde, GDK_U, 0x1E78, -GDK_apostrophe, GDK_asciitilde, GDK_o, 0x1E4D, -GDK_apostrophe, GDK_asciitilde, GDK_u, 0x1E79, -GDK_apostrophe, GDK_macron, GDK_E, 0x1E16, -GDK_apostrophe, GDK_macron, GDK_O, 0x1E52, -GDK_apostrophe, GDK_macron, GDK_e, 0x1E17, -GDK_apostrophe, GDK_macron, GDK_o, 0x1E53, -GDK_apostrophe, GDK_cedilla, GDK_C, 0x1E08, -GDK_apostrophe, GDK_cedilla, GDK_c, 0x1E09, -GDK_apostrophe, GDK_dead_circumflex, GDK_A, 0x1EA4, -GDK_apostrophe, GDK_dead_circumflex, GDK_E, 0x1EBE, -GDK_apostrophe, GDK_dead_circumflex, GDK_O, 0x1ED0, -GDK_apostrophe, GDK_dead_circumflex, GDK_a, 0x1EA5, -GDK_apostrophe, GDK_dead_circumflex, GDK_e, 0x1EBF, -GDK_apostrophe, GDK_dead_circumflex, GDK_o, 0x1ED1, -GDK_apostrophe, GDK_dead_tilde, GDK_O, 0x1E4C, -GDK_apostrophe, GDK_dead_tilde, GDK_U, 0x1E78, -GDK_apostrophe, GDK_dead_tilde, GDK_o, 0x1E4D, -GDK_apostrophe, GDK_dead_tilde, GDK_u, 0x1E79, -GDK_apostrophe, GDK_dead_macron, GDK_E, 0x1E16, -GDK_apostrophe, GDK_dead_macron, GDK_O, 0x1E52, -GDK_apostrophe, GDK_dead_macron, GDK_e, 0x1E17, -GDK_apostrophe, GDK_dead_macron, GDK_o, 0x1E53, -GDK_apostrophe, GDK_dead_breve, GDK_A, 0x1EAE, -GDK_apostrophe, GDK_dead_breve, GDK_a, 0x1EAF, -GDK_apostrophe, GDK_dead_diaeresis, GDK_I, 0x1E2E, -GDK_apostrophe, GDK_dead_diaeresis, GDK_U, 0x01D7, -GDK_apostrophe, GDK_dead_diaeresis, GDK_i, 0x1E2F, -GDK_apostrophe, GDK_dead_diaeresis, GDK_u, 0x01D8, -GDK_apostrophe, GDK_dead_diaeresis, GDK_Greek_iota, 0x0390, -GDK_apostrophe, GDK_dead_diaeresis, GDK_Greek_upsilon, 0x03B0, -GDK_apostrophe, GDK_dead_abovering, GDK_A, 0x01FA, -GDK_apostrophe, GDK_dead_abovering, GDK_a, 0x01FB, -GDK_apostrophe, GDK_dead_cedilla, GDK_C, 0x1E08, -GDK_apostrophe, GDK_dead_cedilla, GDK_c, 0x1E09, -GDK_apostrophe, GDK_dead_horn, GDK_O, 0x1EDA, -GDK_apostrophe, GDK_dead_horn, GDK_U, 0x1EE8, -GDK_apostrophe, GDK_dead_horn, GDK_o, 0x1EDB, -GDK_apostrophe, GDK_dead_horn, GDK_u, 0x1EE9, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_EPSILON, 0x1F1C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_ETA, 0x1F2C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_IOTA, 0x1F3C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_OMICRON, 0x1F4C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6C, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_alpha, 0x1F04, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_epsilon, 0x1F14, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_eta, 0x1F24, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_iota, 0x1F34, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_omicron, 0x1F44, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_upsilon, 0x1F54, -GDK_apostrophe, GDK_dead_psili, GDK_Greek_omega, 0x1F64, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_EPSILON, 0x1F1D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ETA, 0x1F2D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_OMICRON, 0x1F4D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6D, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_alpha, 0x1F05, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_epsilon, 0x1F15, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_eta, 0x1F25, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_iota, 0x1F35, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_omicron, 0x1F45, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_upsilon, 0x1F55, -GDK_apostrophe, GDK_dead_dasia, GDK_Greek_omega, 0x1F65, -GDK_apostrophe, GDK_KP_Divide, GDK_O, 0x01FE, -GDK_apostrophe, GDK_KP_Divide, GDK_o, 0x01FF, -GDK_parenleft, GDK_0, GDK_parenright, 0x24EA, -GDK_parenleft, GDK_1, GDK_parenright, 0x2460, -GDK_parenleft, GDK_2, GDK_parenright, 0x2461, -GDK_parenleft, GDK_3, GDK_parenright, 0x2462, -GDK_parenleft, GDK_4, GDK_parenright, 0x2463, -GDK_parenleft, GDK_5, GDK_parenright, 0x2464, -GDK_parenleft, GDK_6, GDK_parenright, 0x2465, -GDK_parenleft, GDK_7, GDK_parenright, 0x2466, -GDK_parenleft, GDK_8, GDK_parenright, 0x2467, -GDK_parenleft, GDK_9, GDK_parenright, 0x2468, -GDK_parenleft, GDK_A, GDK_parenright, 0x24B6, -GDK_parenleft, GDK_B, GDK_parenright, 0x24B7, -GDK_parenleft, GDK_C, GDK_parenright, 0x24B8, -GDK_parenleft, GDK_D, GDK_parenright, 0x24B9, -GDK_parenleft, GDK_E, GDK_parenright, 0x24BA, -GDK_parenleft, GDK_F, GDK_parenright, 0x24BB, -GDK_parenleft, GDK_G, GDK_parenright, 0x24BC, -GDK_parenleft, GDK_H, GDK_parenright, 0x24BD, -GDK_parenleft, GDK_I, GDK_parenright, 0x24BE, -GDK_parenleft, GDK_J, GDK_parenright, 0x24BF, -GDK_parenleft, GDK_K, GDK_parenright, 0x24C0, -GDK_parenleft, GDK_L, GDK_parenright, 0x24C1, -GDK_parenleft, GDK_M, GDK_parenright, 0x24C2, -GDK_parenleft, GDK_N, GDK_parenright, 0x24C3, -GDK_parenleft, GDK_O, GDK_parenright, 0x24C4, -GDK_parenleft, GDK_P, GDK_parenright, 0x24C5, -GDK_parenleft, GDK_Q, GDK_parenright, 0x24C6, -GDK_parenleft, GDK_R, GDK_parenright, 0x24C7, -GDK_parenleft, GDK_S, GDK_parenright, 0x24C8, -GDK_parenleft, GDK_T, GDK_parenright, 0x24C9, -GDK_parenleft, GDK_U, GDK_parenright, 0x24CA, -GDK_parenleft, GDK_V, GDK_parenright, 0x24CB, -GDK_parenleft, GDK_W, GDK_parenright, 0x24CC, -GDK_parenleft, GDK_X, GDK_parenright, 0x24CD, -GDK_parenleft, GDK_Y, GDK_parenright, 0x24CE, -GDK_parenleft, GDK_Z, GDK_parenright, 0x24CF, -GDK_parenleft, GDK_a, GDK_parenright, 0x24D0, -GDK_parenleft, GDK_b, GDK_parenright, 0x24D1, -GDK_parenleft, GDK_c, GDK_parenright, 0x24D2, -GDK_parenleft, GDK_d, GDK_parenright, 0x24D3, -GDK_parenleft, GDK_e, GDK_parenright, 0x24D4, -GDK_parenleft, GDK_f, GDK_parenright, 0x24D5, -GDK_parenleft, GDK_g, GDK_parenright, 0x24D6, -GDK_parenleft, GDK_h, GDK_parenright, 0x24D7, -GDK_parenleft, GDK_i, GDK_parenright, 0x24D8, -GDK_parenleft, GDK_j, GDK_parenright, 0x24D9, -GDK_parenleft, GDK_k, GDK_parenright, 0x24DA, -GDK_parenleft, GDK_l, GDK_parenright, 0x24DB, -GDK_parenleft, GDK_m, GDK_parenright, 0x24DC, -GDK_parenleft, GDK_n, GDK_parenright, 0x24DD, -GDK_parenleft, GDK_o, GDK_parenright, 0x24DE, -GDK_parenleft, GDK_p, GDK_parenright, 0x24DF, -GDK_parenleft, GDK_q, GDK_parenright, 0x24E0, -GDK_parenleft, GDK_r, GDK_parenright, 0x24E1, -GDK_parenleft, GDK_s, GDK_parenright, 0x24E2, -GDK_parenleft, GDK_t, GDK_parenright, 0x24E3, -GDK_parenleft, GDK_u, GDK_parenright, 0x24E4, -GDK_parenleft, GDK_v, GDK_parenright, 0x24E5, -GDK_parenleft, GDK_w, GDK_parenright, 0x24E6, -GDK_parenleft, GDK_x, GDK_parenright, 0x24E7, -GDK_parenleft, GDK_y, GDK_parenright, 0x24E8, -GDK_parenleft, GDK_z, GDK_parenright, 0x24E9, -GDK_parenleft, GDK_kana_WO, GDK_parenright, 0x32FE, -GDK_parenleft, GDK_kana_A, GDK_parenright, 0x32D0, -GDK_parenleft, GDK_kana_I, GDK_parenright, 0x32D1, -GDK_parenleft, GDK_kana_U, GDK_parenright, 0x32D2, -GDK_parenleft, GDK_kana_E, GDK_parenright, 0x32D3, -GDK_parenleft, GDK_kana_O, GDK_parenright, 0x32D4, -GDK_parenleft, GDK_kana_KA, GDK_parenright, 0x32D5, -GDK_parenleft, GDK_kana_KI, GDK_parenright, 0x32D6, -GDK_parenleft, GDK_kana_KU, GDK_parenright, 0x32D7, -GDK_parenleft, GDK_kana_KE, GDK_parenright, 0x32D8, -GDK_parenleft, GDK_kana_KO, GDK_parenright, 0x32D9, -GDK_parenleft, GDK_kana_SA, GDK_parenright, 0x32DA, -GDK_parenleft, GDK_kana_SHI, GDK_parenright, 0x32DB, -GDK_parenleft, GDK_kana_SU, GDK_parenright, 0x32DC, -GDK_parenleft, GDK_kana_SE, GDK_parenright, 0x32DD, -GDK_parenleft, GDK_kana_SO, GDK_parenright, 0x32DE, -GDK_parenleft, GDK_kana_TA, GDK_parenright, 0x32DF, -GDK_parenleft, GDK_kana_CHI, GDK_parenright, 0x32E0, -GDK_parenleft, GDK_kana_TSU, GDK_parenright, 0x32E1, -GDK_parenleft, GDK_kana_TE, GDK_parenright, 0x32E2, -GDK_parenleft, GDK_kana_TO, GDK_parenright, 0x32E3, -GDK_parenleft, GDK_kana_NA, GDK_parenright, 0x32E4, -GDK_parenleft, GDK_kana_NI, GDK_parenright, 0x32E5, -GDK_parenleft, GDK_kana_NU, GDK_parenright, 0x32E6, -GDK_parenleft, GDK_kana_NE, GDK_parenright, 0x32E7, -GDK_parenleft, GDK_kana_NO, GDK_parenright, 0x32E8, -GDK_parenleft, GDK_kana_HA, GDK_parenright, 0x32E9, -GDK_parenleft, GDK_kana_HI, GDK_parenright, 0x32EA, -GDK_parenleft, GDK_kana_FU, GDK_parenright, 0x32EB, -GDK_parenleft, GDK_kana_HE, GDK_parenright, 0x32EC, -GDK_parenleft, GDK_kana_HO, GDK_parenright, 0x32ED, -GDK_parenleft, GDK_kana_MA, GDK_parenright, 0x32EE, -GDK_parenleft, GDK_kana_MI, GDK_parenright, 0x32EF, -GDK_parenleft, GDK_kana_MU, GDK_parenright, 0x32F0, -GDK_parenleft, GDK_kana_ME, GDK_parenright, 0x32F1, -GDK_parenleft, GDK_kana_MO, GDK_parenright, 0x32F2, -GDK_parenleft, GDK_kana_YA, GDK_parenright, 0x32F3, -GDK_parenleft, GDK_kana_YU, GDK_parenright, 0x32F4, -GDK_parenleft, GDK_kana_YO, GDK_parenright, 0x32F5, -GDK_parenleft, GDK_kana_RA, GDK_parenright, 0x32F6, -GDK_parenleft, GDK_kana_RI, GDK_parenright, 0x32F7, -GDK_parenleft, GDK_kana_RU, GDK_parenright, 0x32F8, -GDK_parenleft, GDK_kana_RE, GDK_parenright, 0x32F9, -GDK_parenleft, GDK_kana_RO, GDK_parenright, 0x32FA, -GDK_parenleft, GDK_kana_WA, GDK_parenright, 0x32FB, -GDK_parenleft, 0x1100, GDK_parenright, 0x3260, -GDK_parenleft, 0x1102, GDK_parenright, 0x3261, -GDK_parenleft, 0x1103, GDK_parenright, 0x3262, -GDK_parenleft, 0x1105, GDK_parenright, 0x3263, -GDK_parenleft, 0x1106, GDK_parenright, 0x3264, -GDK_parenleft, 0x1107, GDK_parenright, 0x3265, -GDK_parenleft, 0x1109, GDK_parenright, 0x3266, -GDK_parenleft, 0x110B, GDK_parenright, 0x3267, -GDK_parenleft, 0x110C, GDK_parenright, 0x3268, -GDK_parenleft, 0x110E, GDK_parenright, 0x3269, -GDK_parenleft, 0x110F, GDK_parenright, 0x326A, -GDK_parenleft, 0x1110, GDK_parenright, 0x326B, -GDK_parenleft, 0x1111, GDK_parenright, 0x326C, -GDK_parenleft, 0x1112, GDK_parenright, 0x326D, -GDK_parenleft, 0x30F0, GDK_parenright, 0x32FC, -GDK_parenleft, 0x30F1, GDK_parenright, 0x32FD, -GDK_parenleft, 0x4E00, GDK_parenright, 0x3280, -GDK_parenleft, 0x4E03, GDK_parenright, 0x3286, -GDK_parenleft, 0x4E09, GDK_parenright, 0x3282, -GDK_parenleft, 0x4E0A, GDK_parenright, 0x32A4, -GDK_parenleft, 0x4E0B, GDK_parenright, 0x32A6, -GDK_parenleft, 0x4E2D, GDK_parenright, 0x32A5, -GDK_parenleft, 0x4E5D, GDK_parenright, 0x3288, -GDK_parenleft, 0x4E8C, GDK_parenright, 0x3281, -GDK_parenleft, 0x4E94, GDK_parenright, 0x3284, -GDK_parenleft, 0x4F01, GDK_parenright, 0x32AD, -GDK_parenleft, 0x4F11, GDK_parenright, 0x32A1, -GDK_parenleft, 0x512A, GDK_parenright, 0x329D, -GDK_parenleft, 0x516B, GDK_parenright, 0x3287, -GDK_parenleft, 0x516D, GDK_parenright, 0x3285, -GDK_parenleft, 0x5199, GDK_parenright, 0x32A2, -GDK_parenleft, 0x52B4, GDK_parenright, 0x3298, -GDK_parenleft, 0x533B, GDK_parenright, 0x32A9, -GDK_parenleft, 0x5341, GDK_parenright, 0x3289, -GDK_parenleft, 0x5354, GDK_parenright, 0x32AF, -GDK_parenleft, 0x5370, GDK_parenright, 0x329E, -GDK_parenleft, 0x53F3, GDK_parenright, 0x32A8, -GDK_parenleft, 0x540D, GDK_parenright, 0x3294, -GDK_parenleft, 0x56DB, GDK_parenright, 0x3283, -GDK_parenleft, 0x571F, GDK_parenright, 0x328F, -GDK_parenleft, 0x591C, GDK_parenright, 0x32B0, -GDK_parenleft, 0x5973, GDK_parenright, 0x329B, -GDK_parenleft, 0x5B66, GDK_parenright, 0x32AB, -GDK_parenleft, 0x5B97, GDK_parenright, 0x32AA, -GDK_parenleft, 0x5DE6, GDK_parenright, 0x32A7, -GDK_parenleft, 0x65E5, GDK_parenright, 0x3290, -GDK_parenleft, 0x6708, GDK_parenright, 0x328A, -GDK_parenleft, 0x6709, GDK_parenright, 0x3292, -GDK_parenleft, 0x6728, GDK_parenright, 0x328D, -GDK_parenleft, 0x682A, GDK_parenright, 0x3291, -GDK_parenleft, 0x6B63, GDK_parenright, 0x32A3, -GDK_parenleft, 0x6C34, GDK_parenright, 0x328C, -GDK_parenleft, 0x6CE8, GDK_parenright, 0x329F, -GDK_parenleft, 0x706B, GDK_parenright, 0x328B, -GDK_parenleft, 0x7279, GDK_parenright, 0x3295, -GDK_parenleft, 0x7537, GDK_parenright, 0x329A, -GDK_parenleft, 0x76E3, GDK_parenright, 0x32AC, -GDK_parenleft, 0x793E, GDK_parenright, 0x3293, -GDK_parenleft, 0x795D, GDK_parenright, 0x3297, -GDK_parenleft, 0x79D8, GDK_parenright, 0x3299, -GDK_parenleft, 0x8CA1, GDK_parenright, 0x3296, -GDK_parenleft, 0x8CC7, GDK_parenright, 0x32AE, -GDK_parenleft, 0x9069, GDK_parenright, 0x329C, -GDK_parenleft, 0x91D1, GDK_parenright, 0x328E, -GDK_parenleft, 0x9805, GDK_parenright, 0x32A0, -GDK_parenleft, GDK_KP_Space, GDK_parenright, 0x2461, -GDK_parenleft, GDK_KP_0, GDK_parenright, 0x24EA, -GDK_parenleft, GDK_KP_1, GDK_parenright, 0x2460, -GDK_parenleft, GDK_KP_2, GDK_parenright, 0x2461, -GDK_parenleft, GDK_KP_3, GDK_parenright, 0x2462, -GDK_parenleft, GDK_KP_4, GDK_parenright, 0x2463, -GDK_parenleft, GDK_KP_5, GDK_parenright, 0x2464, -GDK_parenleft, GDK_KP_6, GDK_parenright, 0x2465, -GDK_parenleft, GDK_KP_7, GDK_parenright, 0x2466, -GDK_parenleft, GDK_KP_8, GDK_parenright, 0x2467, -GDK_parenleft, GDK_KP_9, GDK_parenright, 0x2468, -GDK_minus, GDK_minus, GDK_space, 0x00AD, -GDK_minus, GDK_minus, GDK_minus, 0x2014, -GDK_minus, GDK_minus, GDK_period, 0x2013, -GDK_period, GDK_exclam, GDK_S, 0x1E68, -GDK_period, GDK_exclam, GDK_s, 0x1E69, -GDK_period, GDK_apostrophe, GDK_S, 0x1E64, -GDK_period, GDK_apostrophe, GDK_s, 0x1E65, -GDK_period, GDK_acute, GDK_S, 0x1E64, -GDK_period, GDK_acute, GDK_s, 0x1E65, -GDK_period, GDK_dead_acute, GDK_S, 0x1E64, -GDK_period, GDK_dead_acute, GDK_s, 0x1E65, -GDK_period, GDK_dead_caron, GDK_S, 0x1E66, -GDK_period, GDK_dead_caron, GDK_s, 0x1E67, -GDK_period, GDK_dead_belowdot, GDK_S, 0x1E68, -GDK_period, GDK_dead_belowdot, GDK_s, 0x1E69, -GDK_question, GDK_plus, GDK_O, 0x1EDE, -GDK_question, GDK_plus, GDK_U, 0x1EEC, -GDK_question, GDK_plus, GDK_o, 0x1EDF, -GDK_question, GDK_plus, GDK_u, 0x1EED, -GDK_question, GDK_asciicircum, GDK_A, 0x1EA8, -GDK_question, GDK_asciicircum, GDK_E, 0x1EC2, -GDK_question, GDK_asciicircum, GDK_O, 0x1ED4, -GDK_question, GDK_asciicircum, GDK_a, 0x1EA9, -GDK_question, GDK_asciicircum, GDK_e, 0x1EC3, -GDK_question, GDK_asciicircum, GDK_o, 0x1ED5, -GDK_question, GDK_b, GDK_A, 0x1EB2, -GDK_question, GDK_b, GDK_a, 0x1EB3, -GDK_question, GDK_dead_circumflex, GDK_A, 0x1EA8, -GDK_question, GDK_dead_circumflex, GDK_E, 0x1EC2, -GDK_question, GDK_dead_circumflex, GDK_O, 0x1ED4, -GDK_question, GDK_dead_circumflex, GDK_a, 0x1EA9, -GDK_question, GDK_dead_circumflex, GDK_e, 0x1EC3, -GDK_question, GDK_dead_circumflex, GDK_o, 0x1ED5, -GDK_question, GDK_dead_breve, GDK_A, 0x1EB2, -GDK_question, GDK_dead_breve, GDK_a, 0x1EB3, -GDK_question, GDK_dead_horn, GDK_O, 0x1EDE, -GDK_question, GDK_dead_horn, GDK_U, 0x1EEC, -GDK_question, GDK_dead_horn, GDK_o, 0x1EDF, -GDK_question, GDK_dead_horn, GDK_u, 0x1EED, -GDK_U, GDK_exclam, GDK_A, 0x1EB6, -GDK_U, GDK_exclam, GDK_a, 0x1EB7, -GDK_U, GDK_comma, GDK_E, 0x1E1C, -GDK_U, GDK_comma, GDK_e, 0x1E1D, -GDK_U, GDK_cedilla, GDK_E, 0x1E1C, -GDK_U, GDK_cedilla, GDK_e, 0x1E1D, -GDK_U, GDK_dead_cedilla, GDK_E, 0x1E1C, -GDK_U, GDK_dead_cedilla, GDK_e, 0x1E1D, -GDK_U, GDK_dead_belowdot, GDK_A, 0x1EB6, -GDK_U, GDK_dead_belowdot, GDK_a, 0x1EB7, -GDK_asciicircum, GDK_exclam, GDK_A, 0x1EAC, -GDK_asciicircum, GDK_exclam, GDK_E, 0x1EC6, -GDK_asciicircum, GDK_exclam, GDK_O, 0x1ED8, -GDK_asciicircum, GDK_exclam, GDK_a, 0x1EAD, -GDK_asciicircum, GDK_exclam, GDK_e, 0x1EC7, -GDK_asciicircum, GDK_exclam, GDK_o, 0x1ED9, -GDK_asciicircum, GDK_underscore, GDK_a, 0x00AA, -GDK_asciicircum, GDK_underscore, GDK_h, 0x02B0, -GDK_asciicircum, GDK_underscore, GDK_i, 0x2071, -GDK_asciicircum, GDK_underscore, GDK_j, 0x02B2, -GDK_asciicircum, GDK_underscore, GDK_l, 0x02E1, -GDK_asciicircum, GDK_underscore, GDK_n, 0x207F, -GDK_asciicircum, GDK_underscore, GDK_o, 0x00BA, -GDK_asciicircum, GDK_underscore, GDK_r, 0x02B3, -GDK_asciicircum, GDK_underscore, GDK_s, 0x02E2, -GDK_asciicircum, GDK_underscore, GDK_w, 0x02B7, -GDK_asciicircum, GDK_underscore, GDK_x, 0x02E3, -GDK_asciicircum, GDK_underscore, GDK_y, 0x02B8, -GDK_asciicircum, GDK_underscore, 0x0263, 0x02E0, -GDK_asciicircum, GDK_underscore, 0x0266, 0x02B1, -GDK_asciicircum, GDK_underscore, 0x0279, 0x02B4, -GDK_asciicircum, GDK_underscore, 0x027B, 0x02B5, -GDK_asciicircum, GDK_underscore, 0x0281, 0x02B6, -GDK_asciicircum, GDK_underscore, 0x0295, 0x02E4, -GDK_asciicircum, GDK_underbar, GDK_a, 0x00AA, -GDK_asciicircum, GDK_underbar, GDK_h, 0x02B0, -GDK_asciicircum, GDK_underbar, GDK_i, 0x2071, -GDK_asciicircum, GDK_underbar, GDK_j, 0x02B2, -GDK_asciicircum, GDK_underbar, GDK_l, 0x02E1, -GDK_asciicircum, GDK_underbar, GDK_n, 0x207F, -GDK_asciicircum, GDK_underbar, GDK_o, 0x00BA, -GDK_asciicircum, GDK_underbar, GDK_r, 0x02B3, -GDK_asciicircum, GDK_underbar, GDK_s, 0x02E2, -GDK_asciicircum, GDK_underbar, GDK_w, 0x02B7, -GDK_asciicircum, GDK_underbar, GDK_x, 0x02E3, -GDK_asciicircum, GDK_underbar, GDK_y, 0x02B8, -GDK_asciicircum, GDK_underbar, 0x0263, 0x02E0, -GDK_asciicircum, GDK_underbar, 0x0266, 0x02B1, -GDK_asciicircum, GDK_underbar, 0x0279, 0x02B4, -GDK_asciicircum, GDK_underbar, 0x027B, 0x02B5, -GDK_asciicircum, GDK_underbar, 0x0281, 0x02B6, -GDK_asciicircum, GDK_underbar, 0x0295, 0x02E4, -GDK_asciicircum, GDK_dead_belowdot, GDK_A, 0x1EAC, -GDK_asciicircum, GDK_dead_belowdot, GDK_E, 0x1EC6, -GDK_asciicircum, GDK_dead_belowdot, GDK_O, 0x1ED8, -GDK_asciicircum, GDK_dead_belowdot, GDK_a, 0x1EAD, -GDK_asciicircum, GDK_dead_belowdot, GDK_e, 0x1EC7, -GDK_asciicircum, GDK_dead_belowdot, GDK_o, 0x1ED9, -GDK_underscore, GDK_exclam, GDK_L, 0x1E38, -GDK_underscore, GDK_exclam, GDK_R, 0x1E5C, -GDK_underscore, GDK_exclam, GDK_l, 0x1E39, -GDK_underscore, GDK_exclam, GDK_r, 0x1E5D, -GDK_underscore, GDK_quotedbl, GDK_A, 0x01DE, -GDK_underscore, GDK_quotedbl, GDK_O, 0x022A, -GDK_underscore, GDK_quotedbl, GDK_U, 0x01D5, -GDK_underscore, GDK_quotedbl, GDK_a, 0x01DF, -GDK_underscore, GDK_quotedbl, GDK_o, 0x022B, -GDK_underscore, GDK_quotedbl, GDK_u, 0x01D6, -GDK_underscore, GDK_period, GDK_A, 0x01E0, -GDK_underscore, GDK_period, GDK_O, 0x0230, -GDK_underscore, GDK_period, GDK_a, 0x01E1, -GDK_underscore, GDK_period, GDK_o, 0x0231, -GDK_underscore, GDK_semicolon, GDK_O, 0x01EC, -GDK_underscore, GDK_semicolon, GDK_o, 0x01ED, -GDK_underscore, GDK_asciitilde, GDK_O, 0x022C, -GDK_underscore, GDK_asciitilde, GDK_o, 0x022D, -GDK_underscore, GDK_dead_tilde, GDK_O, 0x022C, -GDK_underscore, GDK_dead_tilde, GDK_o, 0x022D, -GDK_underscore, GDK_dead_abovedot, GDK_A, 0x01E0, -GDK_underscore, GDK_dead_abovedot, GDK_O, 0x0230, -GDK_underscore, GDK_dead_abovedot, GDK_a, 0x01E1, -GDK_underscore, GDK_dead_abovedot, GDK_o, 0x0231, -GDK_underscore, GDK_dead_diaeresis, GDK_A, 0x01DE, -GDK_underscore, GDK_dead_diaeresis, GDK_O, 0x022A, -GDK_underscore, GDK_dead_diaeresis, GDK_U, 0x01D5, -GDK_underscore, GDK_dead_diaeresis, GDK_a, 0x01DF, -GDK_underscore, GDK_dead_diaeresis, GDK_o, 0x022B, -GDK_underscore, GDK_dead_diaeresis, GDK_u, 0x01D6, -GDK_underscore, GDK_dead_ogonek, GDK_O, 0x01EC, -GDK_underscore, GDK_dead_ogonek, GDK_o, 0x01ED, -GDK_underscore, GDK_dead_belowdot, GDK_L, 0x1E38, -GDK_underscore, GDK_dead_belowdot, GDK_R, 0x1E5C, -GDK_underscore, GDK_dead_belowdot, GDK_l, 0x1E39, -GDK_underscore, GDK_dead_belowdot, GDK_r, 0x1E5D, -GDK_grave, GDK_quotedbl, GDK_U, 0x01DB, -GDK_grave, GDK_quotedbl, GDK_u, 0x01DC, -GDK_grave, GDK_quotedbl, GDK_Greek_iota, 0x1FD2, -GDK_grave, GDK_quotedbl, GDK_Greek_upsilon, 0x1FE2, -GDK_grave, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0B, -GDK_grave, GDK_parenleft, GDK_Greek_EPSILON, 0x1F1B, -GDK_grave, GDK_parenleft, GDK_Greek_ETA, 0x1F2B, -GDK_grave, GDK_parenleft, GDK_Greek_IOTA, 0x1F3B, -GDK_grave, GDK_parenleft, GDK_Greek_OMICRON, 0x1F4B, -GDK_grave, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5B, -GDK_grave, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6B, -GDK_grave, GDK_parenleft, GDK_Greek_alpha, 0x1F03, -GDK_grave, GDK_parenleft, GDK_Greek_epsilon, 0x1F13, -GDK_grave, GDK_parenleft, GDK_Greek_eta, 0x1F23, -GDK_grave, GDK_parenleft, GDK_Greek_iota, 0x1F33, -GDK_grave, GDK_parenleft, GDK_Greek_omicron, 0x1F43, -GDK_grave, GDK_parenleft, GDK_Greek_upsilon, 0x1F53, -GDK_grave, GDK_parenleft, GDK_Greek_omega, 0x1F63, -GDK_grave, GDK_parenright, GDK_Greek_ALPHA, 0x1F0A, -GDK_grave, GDK_parenright, GDK_Greek_EPSILON, 0x1F1A, -GDK_grave, GDK_parenright, GDK_Greek_ETA, 0x1F2A, -GDK_grave, GDK_parenright, GDK_Greek_IOTA, 0x1F3A, -GDK_grave, GDK_parenright, GDK_Greek_OMICRON, 0x1F4A, -GDK_grave, GDK_parenright, GDK_Greek_OMEGA, 0x1F6A, -GDK_grave, GDK_parenright, GDK_Greek_alpha, 0x1F02, -GDK_grave, GDK_parenright, GDK_Greek_epsilon, 0x1F12, -GDK_grave, GDK_parenright, GDK_Greek_eta, 0x1F22, -GDK_grave, GDK_parenright, GDK_Greek_iota, 0x1F32, -GDK_grave, GDK_parenright, GDK_Greek_omicron, 0x1F42, -GDK_grave, GDK_parenright, GDK_Greek_upsilon, 0x1F52, -GDK_grave, GDK_parenright, GDK_Greek_omega, 0x1F62, -GDK_grave, GDK_plus, GDK_O, 0x1EDC, -GDK_grave, GDK_plus, GDK_U, 0x1EEA, -GDK_grave, GDK_plus, GDK_o, 0x1EDD, -GDK_grave, GDK_plus, GDK_u, 0x1EEB, -GDK_grave, GDK_asciicircum, GDK_A, 0x1EA6, -GDK_grave, GDK_asciicircum, GDK_E, 0x1EC0, -GDK_grave, GDK_asciicircum, GDK_O, 0x1ED2, -GDK_grave, GDK_asciicircum, GDK_a, 0x1EA7, -GDK_grave, GDK_asciicircum, GDK_e, 0x1EC1, -GDK_grave, GDK_asciicircum, GDK_o, 0x1ED3, -GDK_grave, GDK_underscore, GDK_E, 0x1E14, -GDK_grave, GDK_underscore, GDK_O, 0x1E50, -GDK_grave, GDK_underscore, GDK_e, 0x1E15, -GDK_grave, GDK_underscore, GDK_o, 0x1E51, -GDK_grave, GDK_b, GDK_A, 0x1EB0, -GDK_grave, GDK_b, GDK_a, 0x1EB1, -GDK_grave, GDK_macron, GDK_E, 0x1E14, -GDK_grave, GDK_macron, GDK_O, 0x1E50, -GDK_grave, GDK_macron, GDK_e, 0x1E15, -GDK_grave, GDK_macron, GDK_o, 0x1E51, -GDK_grave, GDK_dead_circumflex, GDK_A, 0x1EA6, -GDK_grave, GDK_dead_circumflex, GDK_E, 0x1EC0, -GDK_grave, GDK_dead_circumflex, GDK_O, 0x1ED2, -GDK_grave, GDK_dead_circumflex, GDK_a, 0x1EA7, -GDK_grave, GDK_dead_circumflex, GDK_e, 0x1EC1, -GDK_grave, GDK_dead_circumflex, GDK_o, 0x1ED3, -GDK_grave, GDK_dead_macron, GDK_E, 0x1E14, -GDK_grave, GDK_dead_macron, GDK_O, 0x1E50, -GDK_grave, GDK_dead_macron, GDK_e, 0x1E15, -GDK_grave, GDK_dead_macron, GDK_o, 0x1E51, -GDK_grave, GDK_dead_breve, GDK_A, 0x1EB0, -GDK_grave, GDK_dead_breve, GDK_a, 0x1EB1, -GDK_grave, GDK_dead_diaeresis, GDK_U, 0x01DB, -GDK_grave, GDK_dead_diaeresis, GDK_u, 0x01DC, -GDK_grave, GDK_dead_diaeresis, GDK_Greek_iota, 0x1FD2, -GDK_grave, GDK_dead_diaeresis, GDK_Greek_upsilon, 0x1FE2, -GDK_grave, GDK_dead_horn, GDK_O, 0x1EDC, -GDK_grave, GDK_dead_horn, GDK_U, 0x1EEA, -GDK_grave, GDK_dead_horn, GDK_o, 0x1EDD, -GDK_grave, GDK_dead_horn, GDK_u, 0x1EEB, -GDK_grave, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0A, -GDK_grave, GDK_dead_psili, GDK_Greek_EPSILON, 0x1F1A, -GDK_grave, GDK_dead_psili, GDK_Greek_ETA, 0x1F2A, -GDK_grave, GDK_dead_psili, GDK_Greek_IOTA, 0x1F3A, -GDK_grave, GDK_dead_psili, GDK_Greek_OMICRON, 0x1F4A, -GDK_grave, GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6A, -GDK_grave, GDK_dead_psili, GDK_Greek_alpha, 0x1F02, -GDK_grave, GDK_dead_psili, GDK_Greek_epsilon, 0x1F12, -GDK_grave, GDK_dead_psili, GDK_Greek_eta, 0x1F22, -GDK_grave, GDK_dead_psili, GDK_Greek_iota, 0x1F32, -GDK_grave, GDK_dead_psili, GDK_Greek_omicron, 0x1F42, -GDK_grave, GDK_dead_psili, GDK_Greek_upsilon, 0x1F52, -GDK_grave, GDK_dead_psili, GDK_Greek_omega, 0x1F62, -GDK_grave, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0B, -GDK_grave, GDK_dead_dasia, GDK_Greek_EPSILON, 0x1F1B, -GDK_grave, GDK_dead_dasia, GDK_Greek_ETA, 0x1F2B, -GDK_grave, GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3B, -GDK_grave, GDK_dead_dasia, GDK_Greek_OMICRON, 0x1F4B, -GDK_grave, GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5B, -GDK_grave, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6B, -GDK_grave, GDK_dead_dasia, GDK_Greek_alpha, 0x1F03, -GDK_grave, GDK_dead_dasia, GDK_Greek_epsilon, 0x1F13, -GDK_grave, GDK_dead_dasia, GDK_Greek_eta, 0x1F23, -GDK_grave, GDK_dead_dasia, GDK_Greek_iota, 0x1F33, -GDK_grave, GDK_dead_dasia, GDK_Greek_omicron, 0x1F43, -GDK_grave, GDK_dead_dasia, GDK_Greek_upsilon, 0x1F53, -GDK_grave, GDK_dead_dasia, GDK_Greek_omega, 0x1F63, -GDK_b, GDK_exclam, GDK_A, 0x1EB6, -GDK_b, GDK_exclam, GDK_a, 0x1EB7, -GDK_b, GDK_comma, GDK_E, 0x1E1C, -GDK_b, GDK_comma, GDK_e, 0x1E1D, -GDK_b, GDK_cedilla, GDK_E, 0x1E1C, -GDK_b, GDK_cedilla, GDK_e, 0x1E1D, -GDK_b, GDK_dead_cedilla, GDK_E, 0x1E1C, -GDK_b, GDK_dead_cedilla, GDK_e, 0x1E1D, -GDK_b, GDK_dead_belowdot, GDK_A, 0x1EB6, -GDK_b, GDK_dead_belowdot, GDK_a, 0x1EB7, -GDK_c, GDK_quotedbl, GDK_U, 0x01D9, -GDK_c, GDK_quotedbl, GDK_u, 0x01DA, -GDK_c, GDK_dead_diaeresis, GDK_U, 0x01D9, -GDK_c, GDK_dead_diaeresis, GDK_u, 0x01DA, -GDK_o, GDK_apostrophe, GDK_A, 0x01FA, -GDK_o, GDK_apostrophe, GDK_a, 0x01FB, -GDK_asciitilde, GDK_quotedbl, GDK_Greek_iota, 0x1FD7, -GDK_asciitilde, GDK_quotedbl, GDK_Greek_upsilon, 0x1FE7, -GDK_asciitilde, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0F, -GDK_asciitilde, GDK_parenleft, GDK_Greek_ETA, 0x1F2F, -GDK_asciitilde, GDK_parenleft, GDK_Greek_IOTA, 0x1F3F, -GDK_asciitilde, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5F, -GDK_asciitilde, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6F, -GDK_asciitilde, GDK_parenleft, GDK_Greek_alpha, 0x1F07, -GDK_asciitilde, GDK_parenleft, GDK_Greek_eta, 0x1F27, -GDK_asciitilde, GDK_parenleft, GDK_Greek_iota, 0x1F37, -GDK_asciitilde, GDK_parenleft, GDK_Greek_upsilon, 0x1F57, -GDK_asciitilde, GDK_parenleft, GDK_Greek_omega, 0x1F67, -GDK_asciitilde, GDK_parenright, GDK_Greek_ALPHA, 0x1F0E, -GDK_asciitilde, GDK_parenright, GDK_Greek_ETA, 0x1F2E, -GDK_asciitilde, GDK_parenright, GDK_Greek_IOTA, 0x1F3E, -GDK_asciitilde, GDK_parenright, GDK_Greek_OMEGA, 0x1F6E, -GDK_asciitilde, GDK_parenright, GDK_Greek_alpha, 0x1F06, -GDK_asciitilde, GDK_parenright, GDK_Greek_eta, 0x1F26, -GDK_asciitilde, GDK_parenright, GDK_Greek_iota, 0x1F36, -GDK_asciitilde, GDK_parenright, GDK_Greek_upsilon, 0x1F56, -GDK_asciitilde, GDK_parenright, GDK_Greek_omega, 0x1F66, -GDK_asciitilde, GDK_plus, GDK_O, 0x1EE0, -GDK_asciitilde, GDK_plus, GDK_U, 0x1EEE, -GDK_asciitilde, GDK_plus, GDK_o, 0x1EE1, -GDK_asciitilde, GDK_plus, GDK_u, 0x1EEF, -GDK_asciitilde, GDK_asciicircum, GDK_A, 0x1EAA, -GDK_asciitilde, GDK_asciicircum, GDK_E, 0x1EC4, -GDK_asciitilde, GDK_asciicircum, GDK_O, 0x1ED6, -GDK_asciitilde, GDK_asciicircum, GDK_a, 0x1EAB, -GDK_asciitilde, GDK_asciicircum, GDK_e, 0x1EC5, -GDK_asciitilde, GDK_asciicircum, GDK_o, 0x1ED7, -GDK_asciitilde, GDK_b, GDK_A, 0x1EB4, -GDK_asciitilde, GDK_b, GDK_a, 0x1EB5, -GDK_asciitilde, GDK_dead_circumflex, GDK_A, 0x1EAA, -GDK_asciitilde, GDK_dead_circumflex, GDK_E, 0x1EC4, -GDK_asciitilde, GDK_dead_circumflex, GDK_O, 0x1ED6, -GDK_asciitilde, GDK_dead_circumflex, GDK_a, 0x1EAB, -GDK_asciitilde, GDK_dead_circumflex, GDK_e, 0x1EC5, -GDK_asciitilde, GDK_dead_circumflex, GDK_o, 0x1ED7, -GDK_asciitilde, GDK_dead_breve, GDK_A, 0x1EB4, -GDK_asciitilde, GDK_dead_breve, GDK_a, 0x1EB5, -GDK_asciitilde, GDK_dead_diaeresis, GDK_Greek_iota, 0x1FD7, -GDK_asciitilde, GDK_dead_diaeresis, GDK_Greek_upsilon, 0x1FE7, -GDK_asciitilde, GDK_dead_horn, GDK_O, 0x1EE0, -GDK_asciitilde, GDK_dead_horn, GDK_U, 0x1EEE, -GDK_asciitilde, GDK_dead_horn, GDK_o, 0x1EE1, -GDK_asciitilde, GDK_dead_horn, GDK_u, 0x1EEF, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0E, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_ETA, 0x1F2E, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_IOTA, 0x1F3E, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6E, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_alpha, 0x1F06, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_eta, 0x1F26, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_iota, 0x1F36, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_upsilon, 0x1F56, -GDK_asciitilde, GDK_dead_psili, GDK_Greek_omega, 0x1F66, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0F, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ETA, 0x1F2F, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3F, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5F, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6F, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_alpha, 0x1F07, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_eta, 0x1F27, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_iota, 0x1F37, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_upsilon, 0x1F57, -GDK_asciitilde, GDK_dead_dasia, GDK_Greek_omega, 0x1F67, -GDK_macron, GDK_exclam, GDK_L, 0x1E38, -GDK_macron, GDK_exclam, GDK_R, 0x1E5C, -GDK_macron, GDK_exclam, GDK_l, 0x1E39, -GDK_macron, GDK_exclam, GDK_r, 0x1E5D, -GDK_macron, GDK_quotedbl, GDK_A, 0x01DE, -GDK_macron, GDK_quotedbl, GDK_O, 0x022A, -GDK_macron, GDK_quotedbl, GDK_U, 0x01D5, -GDK_macron, GDK_quotedbl, GDK_a, 0x01DF, -GDK_macron, GDK_quotedbl, GDK_o, 0x022B, -GDK_macron, GDK_quotedbl, GDK_u, 0x01D6, -GDK_macron, GDK_period, GDK_A, 0x01E0, -GDK_macron, GDK_period, GDK_O, 0x0230, -GDK_macron, GDK_period, GDK_a, 0x01E1, -GDK_macron, GDK_period, GDK_o, 0x0231, -GDK_macron, GDK_semicolon, GDK_O, 0x01EC, -GDK_macron, GDK_semicolon, GDK_o, 0x01ED, -GDK_macron, GDK_asciitilde, GDK_O, 0x022C, -GDK_macron, GDK_asciitilde, GDK_o, 0x022D, -GDK_macron, GDK_dead_tilde, GDK_O, 0x022C, -GDK_macron, GDK_dead_tilde, GDK_o, 0x022D, -GDK_macron, GDK_dead_abovedot, GDK_A, 0x01E0, -GDK_macron, GDK_dead_abovedot, GDK_O, 0x0230, -GDK_macron, GDK_dead_abovedot, GDK_a, 0x01E1, -GDK_macron, GDK_dead_abovedot, GDK_o, 0x0231, -GDK_macron, GDK_dead_diaeresis, GDK_A, 0x01DE, -GDK_macron, GDK_dead_diaeresis, GDK_O, 0x022A, -GDK_macron, GDK_dead_diaeresis, GDK_U, 0x01D5, -GDK_macron, GDK_dead_diaeresis, GDK_a, 0x01DF, -GDK_macron, GDK_dead_diaeresis, GDK_o, 0x022B, -GDK_macron, GDK_dead_diaeresis, GDK_u, 0x01D6, -GDK_macron, GDK_dead_ogonek, GDK_O, 0x01EC, -GDK_macron, GDK_dead_ogonek, GDK_o, 0x01ED, -GDK_macron, GDK_dead_belowdot, GDK_L, 0x1E38, -GDK_macron, GDK_dead_belowdot, GDK_R, 0x1E5C, -GDK_macron, GDK_dead_belowdot, GDK_l, 0x1E39, -GDK_macron, GDK_dead_belowdot, GDK_r, 0x1E5D, -GDK_acute, GDK_quotedbl, GDK_I, 0x1E2E, -GDK_acute, GDK_quotedbl, GDK_U, 0x01D7, -GDK_acute, GDK_quotedbl, GDK_i, 0x1E2F, -GDK_acute, GDK_quotedbl, GDK_u, 0x01D8, -GDK_acute, GDK_quotedbl, GDK_Greek_iota, 0x0390, -GDK_acute, GDK_quotedbl, GDK_Greek_upsilon, 0x03B0, -GDK_acute, GDK_parenleft, GDK_Greek_ALPHA, 0x1F0D, -GDK_acute, GDK_parenleft, GDK_Greek_EPSILON, 0x1F1D, -GDK_acute, GDK_parenleft, GDK_Greek_ETA, 0x1F2D, -GDK_acute, GDK_parenleft, GDK_Greek_IOTA, 0x1F3D, -GDK_acute, GDK_parenleft, GDK_Greek_OMICRON, 0x1F4D, -GDK_acute, GDK_parenleft, GDK_Greek_UPSILON, 0x1F5D, -GDK_acute, GDK_parenleft, GDK_Greek_OMEGA, 0x1F6D, -GDK_acute, GDK_parenleft, GDK_Greek_alpha, 0x1F05, -GDK_acute, GDK_parenleft, GDK_Greek_epsilon, 0x1F15, -GDK_acute, GDK_parenleft, GDK_Greek_eta, 0x1F25, -GDK_acute, GDK_parenleft, GDK_Greek_iota, 0x1F35, -GDK_acute, GDK_parenleft, GDK_Greek_omicron, 0x1F45, -GDK_acute, GDK_parenleft, GDK_Greek_upsilon, 0x1F55, -GDK_acute, GDK_parenleft, GDK_Greek_omega, 0x1F65, -GDK_acute, GDK_parenright, GDK_Greek_ALPHA, 0x1F0C, -GDK_acute, GDK_parenright, GDK_Greek_EPSILON, 0x1F1C, -GDK_acute, GDK_parenright, GDK_Greek_ETA, 0x1F2C, -GDK_acute, GDK_parenright, GDK_Greek_IOTA, 0x1F3C, -GDK_acute, GDK_parenright, GDK_Greek_OMICRON, 0x1F4C, -GDK_acute, GDK_parenright, GDK_Greek_OMEGA, 0x1F6C, -GDK_acute, GDK_parenright, GDK_Greek_alpha, 0x1F04, -GDK_acute, GDK_parenright, GDK_Greek_epsilon, 0x1F14, -GDK_acute, GDK_parenright, GDK_Greek_eta, 0x1F24, -GDK_acute, GDK_parenright, GDK_Greek_iota, 0x1F34, -GDK_acute, GDK_parenright, GDK_Greek_omicron, 0x1F44, -GDK_acute, GDK_parenright, GDK_Greek_upsilon, 0x1F54, -GDK_acute, GDK_parenright, GDK_Greek_omega, 0x1F64, -GDK_acute, GDK_plus, GDK_O, 0x1EDA, -GDK_acute, GDK_plus, GDK_U, 0x1EE8, -GDK_acute, GDK_plus, GDK_o, 0x1EDB, -GDK_acute, GDK_plus, GDK_u, 0x1EE9, -GDK_acute, GDK_comma, GDK_C, 0x1E08, -GDK_acute, GDK_comma, GDK_c, 0x1E09, -GDK_acute, GDK_slash, GDK_O, 0x01FE, -GDK_acute, GDK_slash, GDK_o, 0x01FF, -GDK_acute, GDK_asciicircum, GDK_A, 0x1EA4, -GDK_acute, GDK_asciicircum, GDK_E, 0x1EBE, -GDK_acute, GDK_asciicircum, GDK_O, 0x1ED0, -GDK_acute, GDK_asciicircum, GDK_a, 0x1EA5, -GDK_acute, GDK_asciicircum, GDK_e, 0x1EBF, -GDK_acute, GDK_asciicircum, GDK_o, 0x1ED1, -GDK_acute, GDK_underscore, GDK_E, 0x1E16, -GDK_acute, GDK_underscore, GDK_O, 0x1E52, -GDK_acute, GDK_underscore, GDK_e, 0x1E17, -GDK_acute, GDK_underscore, GDK_o, 0x1E53, -GDK_acute, GDK_b, GDK_A, 0x1EAE, -GDK_acute, GDK_b, GDK_a, 0x1EAF, -GDK_acute, GDK_asciitilde, GDK_O, 0x1E4C, -GDK_acute, GDK_asciitilde, GDK_U, 0x1E78, -GDK_acute, GDK_asciitilde, GDK_o, 0x1E4D, -GDK_acute, GDK_asciitilde, GDK_u, 0x1E79, -GDK_acute, GDK_macron, GDK_E, 0x1E16, -GDK_acute, GDK_macron, GDK_O, 0x1E52, -GDK_acute, GDK_macron, GDK_e, 0x1E17, -GDK_acute, GDK_macron, GDK_o, 0x1E53, -GDK_acute, GDK_cedilla, GDK_C, 0x1E08, -GDK_acute, GDK_cedilla, GDK_c, 0x1E09, -GDK_acute, GDK_dead_circumflex, GDK_A, 0x1EA4, -GDK_acute, GDK_dead_circumflex, GDK_E, 0x1EBE, -GDK_acute, GDK_dead_circumflex, GDK_O, 0x1ED0, -GDK_acute, GDK_dead_circumflex, GDK_a, 0x1EA5, -GDK_acute, GDK_dead_circumflex, GDK_e, 0x1EBF, -GDK_acute, GDK_dead_circumflex, GDK_o, 0x1ED1, -GDK_acute, GDK_dead_tilde, GDK_O, 0x1E4C, -GDK_acute, GDK_dead_tilde, GDK_U, 0x1E78, -GDK_acute, GDK_dead_tilde, GDK_o, 0x1E4D, -GDK_acute, GDK_dead_tilde, GDK_u, 0x1E79, -GDK_acute, GDK_dead_macron, GDK_E, 0x1E16, -GDK_acute, GDK_dead_macron, GDK_O, 0x1E52, -GDK_acute, GDK_dead_macron, GDK_e, 0x1E17, -GDK_acute, GDK_dead_macron, GDK_o, 0x1E53, -GDK_acute, GDK_dead_breve, GDK_A, 0x1EAE, -GDK_acute, GDK_dead_breve, GDK_a, 0x1EAF, -GDK_acute, GDK_dead_diaeresis, GDK_I, 0x1E2E, -GDK_acute, GDK_dead_diaeresis, GDK_U, 0x01D7, -GDK_acute, GDK_dead_diaeresis, GDK_i, 0x1E2F, -GDK_acute, GDK_dead_diaeresis, GDK_u, 0x01D8, -GDK_acute, GDK_dead_diaeresis, GDK_Greek_iota, 0x0390, -GDK_acute, GDK_dead_diaeresis, GDK_Greek_upsilon, 0x03B0, -GDK_acute, GDK_dead_abovering, GDK_A, 0x01FA, -GDK_acute, GDK_dead_abovering, GDK_a, 0x01FB, -GDK_acute, GDK_dead_cedilla, GDK_C, 0x1E08, -GDK_acute, GDK_dead_cedilla, GDK_c, 0x1E09, -GDK_acute, GDK_dead_horn, GDK_O, 0x1EDA, -GDK_acute, GDK_dead_horn, GDK_U, 0x1EE8, -GDK_acute, GDK_dead_horn, GDK_o, 0x1EDB, -GDK_acute, GDK_dead_horn, GDK_u, 0x1EE9, -GDK_acute, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F0C, -GDK_acute, GDK_dead_psili, GDK_Greek_EPSILON, 0x1F1C, -GDK_acute, GDK_dead_psili, GDK_Greek_ETA, 0x1F2C, -GDK_acute, GDK_dead_psili, GDK_Greek_IOTA, 0x1F3C, -GDK_acute, GDK_dead_psili, GDK_Greek_OMICRON, 0x1F4C, -GDK_acute, GDK_dead_psili, GDK_Greek_OMEGA, 0x1F6C, -GDK_acute, GDK_dead_psili, GDK_Greek_alpha, 0x1F04, -GDK_acute, GDK_dead_psili, GDK_Greek_epsilon, 0x1F14, -GDK_acute, GDK_dead_psili, GDK_Greek_eta, 0x1F24, -GDK_acute, GDK_dead_psili, GDK_Greek_iota, 0x1F34, -GDK_acute, GDK_dead_psili, GDK_Greek_omicron, 0x1F44, -GDK_acute, GDK_dead_psili, GDK_Greek_upsilon, 0x1F54, -GDK_acute, GDK_dead_psili, GDK_Greek_omega, 0x1F64, -GDK_acute, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F0D, -GDK_acute, GDK_dead_dasia, GDK_Greek_EPSILON, 0x1F1D, -GDK_acute, GDK_dead_dasia, GDK_Greek_ETA, 0x1F2D, -GDK_acute, GDK_dead_dasia, GDK_Greek_IOTA, 0x1F3D, -GDK_acute, GDK_dead_dasia, GDK_Greek_OMICRON, 0x1F4D, -GDK_acute, GDK_dead_dasia, GDK_Greek_UPSILON, 0x1F5D, -GDK_acute, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1F6D, -GDK_acute, GDK_dead_dasia, GDK_Greek_alpha, 0x1F05, -GDK_acute, GDK_dead_dasia, GDK_Greek_epsilon, 0x1F15, -GDK_acute, GDK_dead_dasia, GDK_Greek_eta, 0x1F25, -GDK_acute, GDK_dead_dasia, GDK_Greek_iota, 0x1F35, -GDK_acute, GDK_dead_dasia, GDK_Greek_omicron, 0x1F45, -GDK_acute, GDK_dead_dasia, GDK_Greek_upsilon, 0x1F55, -GDK_acute, GDK_dead_dasia, GDK_Greek_omega, 0x1F65, -GDK_acute, GDK_KP_Divide, GDK_O, 0x01FE, -GDK_acute, GDK_KP_Divide, GDK_o, 0x01FF, -0x05C1, 0x05BC, GDK_hebrew_shin, 0xFB2C, -0x05C2, 0x05BC, GDK_hebrew_shin, 0xFB2D, -GDK_Greek_iota, GDK_apostrophe, GDK_Greek_alpha, 0x1FB4, -GDK_Greek_iota, GDK_apostrophe, GDK_Greek_eta, 0x1FC4, -GDK_Greek_iota, GDK_apostrophe, GDK_Greek_omega, 0x1FF4, -GDK_Greek_iota, GDK_apostrophe, 0x1F00, 0x1F84, -GDK_Greek_iota, GDK_apostrophe, 0x1F01, 0x1F85, -GDK_Greek_iota, GDK_apostrophe, 0x1F08, 0x1F8C, -GDK_Greek_iota, GDK_apostrophe, 0x1F09, 0x1F8D, -GDK_Greek_iota, GDK_apostrophe, 0x1F20, 0x1F94, -GDK_Greek_iota, GDK_apostrophe, 0x1F21, 0x1F95, -GDK_Greek_iota, GDK_apostrophe, 0x1F28, 0x1F9C, -GDK_Greek_iota, GDK_apostrophe, 0x1F29, 0x1F9D, -GDK_Greek_iota, GDK_apostrophe, 0x1F60, 0x1FA4, -GDK_Greek_iota, GDK_apostrophe, 0x1F61, 0x1FA5, -GDK_Greek_iota, GDK_apostrophe, 0x1F68, 0x1FAC, -GDK_Greek_iota, GDK_apostrophe, 0x1F69, 0x1FAD, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_ALPHA, 0x1F89, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_ETA, 0x1F99, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_OMEGA, 0x1FA9, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_alpha, 0x1F81, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_eta, 0x1F91, -GDK_Greek_iota, GDK_parenleft, GDK_Greek_omega, 0x1FA1, -GDK_Greek_iota, GDK_parenright, GDK_Greek_ALPHA, 0x1F88, -GDK_Greek_iota, GDK_parenright, GDK_Greek_ETA, 0x1F98, -GDK_Greek_iota, GDK_parenright, GDK_Greek_OMEGA, 0x1FA8, -GDK_Greek_iota, GDK_parenright, GDK_Greek_alpha, 0x1F80, -GDK_Greek_iota, GDK_parenright, GDK_Greek_eta, 0x1F90, -GDK_Greek_iota, GDK_parenright, GDK_Greek_omega, 0x1FA0, -GDK_Greek_iota, GDK_grave, GDK_Greek_alpha, 0x1FB2, -GDK_Greek_iota, GDK_grave, GDK_Greek_eta, 0x1FC2, -GDK_Greek_iota, GDK_grave, GDK_Greek_omega, 0x1FF2, -GDK_Greek_iota, GDK_grave, 0x1F00, 0x1F82, -GDK_Greek_iota, GDK_grave, 0x1F01, 0x1F83, -GDK_Greek_iota, GDK_grave, 0x1F08, 0x1F8A, -GDK_Greek_iota, GDK_grave, 0x1F09, 0x1F8B, -GDK_Greek_iota, GDK_grave, 0x1F20, 0x1F92, -GDK_Greek_iota, GDK_grave, 0x1F21, 0x1F93, -GDK_Greek_iota, GDK_grave, 0x1F28, 0x1F9A, -GDK_Greek_iota, GDK_grave, 0x1F29, 0x1F9B, -GDK_Greek_iota, GDK_grave, 0x1F60, 0x1FA2, -GDK_Greek_iota, GDK_grave, 0x1F61, 0x1FA3, -GDK_Greek_iota, GDK_grave, 0x1F68, 0x1FAA, -GDK_Greek_iota, GDK_grave, 0x1F69, 0x1FAB, -GDK_Greek_iota, GDK_asciitilde, GDK_Greek_alpha, 0x1FB7, -GDK_Greek_iota, GDK_asciitilde, GDK_Greek_eta, 0x1FC7, -GDK_Greek_iota, GDK_asciitilde, GDK_Greek_omega, 0x1FF7, -GDK_Greek_iota, GDK_asciitilde, 0x1F00, 0x1F86, -GDK_Greek_iota, GDK_asciitilde, 0x1F01, 0x1F87, -GDK_Greek_iota, GDK_asciitilde, 0x1F08, 0x1F8E, -GDK_Greek_iota, GDK_asciitilde, 0x1F09, 0x1F8F, -GDK_Greek_iota, GDK_asciitilde, 0x1F20, 0x1F96, -GDK_Greek_iota, GDK_asciitilde, 0x1F21, 0x1F97, -GDK_Greek_iota, GDK_asciitilde, 0x1F28, 0x1F9E, -GDK_Greek_iota, GDK_asciitilde, 0x1F29, 0x1F9F, -GDK_Greek_iota, GDK_asciitilde, 0x1F60, 0x1FA6, -GDK_Greek_iota, GDK_asciitilde, 0x1F61, 0x1FA7, -GDK_Greek_iota, GDK_asciitilde, 0x1F68, 0x1FAE, -GDK_Greek_iota, GDK_asciitilde, 0x1F69, 0x1FAF, -GDK_Greek_iota, GDK_acute, GDK_Greek_alpha, 0x1FB4, -GDK_Greek_iota, GDK_acute, GDK_Greek_eta, 0x1FC4, -GDK_Greek_iota, GDK_acute, GDK_Greek_omega, 0x1FF4, -GDK_Greek_iota, GDK_acute, 0x1F00, 0x1F84, -GDK_Greek_iota, GDK_acute, 0x1F01, 0x1F85, -GDK_Greek_iota, GDK_acute, 0x1F08, 0x1F8C, -GDK_Greek_iota, GDK_acute, 0x1F09, 0x1F8D, -GDK_Greek_iota, GDK_acute, 0x1F20, 0x1F94, -GDK_Greek_iota, GDK_acute, 0x1F21, 0x1F95, -GDK_Greek_iota, GDK_acute, 0x1F28, 0x1F9C, -GDK_Greek_iota, GDK_acute, 0x1F29, 0x1F9D, -GDK_Greek_iota, GDK_acute, 0x1F60, 0x1FA4, -GDK_Greek_iota, GDK_acute, 0x1F61, 0x1FA5, -GDK_Greek_iota, GDK_acute, 0x1F68, 0x1FAC, -GDK_Greek_iota, GDK_acute, 0x1F69, 0x1FAD, -GDK_Greek_iota, GDK_dead_grave, GDK_Greek_alpha, 0x1FB2, -GDK_Greek_iota, GDK_dead_grave, GDK_Greek_eta, 0x1FC2, -GDK_Greek_iota, GDK_dead_grave, GDK_Greek_omega, 0x1FF2, -GDK_Greek_iota, GDK_dead_grave, 0x1F00, 0x1F82, -GDK_Greek_iota, GDK_dead_grave, 0x1F01, 0x1F83, -GDK_Greek_iota, GDK_dead_grave, 0x1F08, 0x1F8A, -GDK_Greek_iota, GDK_dead_grave, 0x1F09, 0x1F8B, -GDK_Greek_iota, GDK_dead_grave, 0x1F20, 0x1F92, -GDK_Greek_iota, GDK_dead_grave, 0x1F21, 0x1F93, -GDK_Greek_iota, GDK_dead_grave, 0x1F28, 0x1F9A, -GDK_Greek_iota, GDK_dead_grave, 0x1F29, 0x1F9B, -GDK_Greek_iota, GDK_dead_grave, 0x1F60, 0x1FA2, -GDK_Greek_iota, GDK_dead_grave, 0x1F61, 0x1FA3, -GDK_Greek_iota, GDK_dead_grave, 0x1F68, 0x1FAA, -GDK_Greek_iota, GDK_dead_grave, 0x1F69, 0x1FAB, -GDK_Greek_iota, GDK_dead_acute, GDK_Greek_alpha, 0x1FB4, -GDK_Greek_iota, GDK_dead_acute, GDK_Greek_eta, 0x1FC4, -GDK_Greek_iota, GDK_dead_acute, GDK_Greek_omega, 0x1FF4, -GDK_Greek_iota, GDK_dead_acute, 0x1F00, 0x1F84, -GDK_Greek_iota, GDK_dead_acute, 0x1F01, 0x1F85, -GDK_Greek_iota, GDK_dead_acute, 0x1F08, 0x1F8C, -GDK_Greek_iota, GDK_dead_acute, 0x1F09, 0x1F8D, -GDK_Greek_iota, GDK_dead_acute, 0x1F20, 0x1F94, -GDK_Greek_iota, GDK_dead_acute, 0x1F21, 0x1F95, -GDK_Greek_iota, GDK_dead_acute, 0x1F28, 0x1F9C, -GDK_Greek_iota, GDK_dead_acute, 0x1F29, 0x1F9D, -GDK_Greek_iota, GDK_dead_acute, 0x1F60, 0x1FA4, -GDK_Greek_iota, GDK_dead_acute, 0x1F61, 0x1FA5, -GDK_Greek_iota, GDK_dead_acute, 0x1F68, 0x1FAC, -GDK_Greek_iota, GDK_dead_acute, 0x1F69, 0x1FAD, -GDK_Greek_iota, GDK_dead_tilde, GDK_Greek_alpha, 0x1FB7, -GDK_Greek_iota, GDK_dead_tilde, GDK_Greek_eta, 0x1FC7, -GDK_Greek_iota, GDK_dead_tilde, GDK_Greek_omega, 0x1FF7, -GDK_Greek_iota, GDK_dead_tilde, 0x1F00, 0x1F86, -GDK_Greek_iota, GDK_dead_tilde, 0x1F01, 0x1F87, -GDK_Greek_iota, GDK_dead_tilde, 0x1F08, 0x1F8E, -GDK_Greek_iota, GDK_dead_tilde, 0x1F09, 0x1F8F, -GDK_Greek_iota, GDK_dead_tilde, 0x1F20, 0x1F96, -GDK_Greek_iota, GDK_dead_tilde, 0x1F21, 0x1F97, -GDK_Greek_iota, GDK_dead_tilde, 0x1F28, 0x1F9E, -GDK_Greek_iota, GDK_dead_tilde, 0x1F29, 0x1F9F, -GDK_Greek_iota, GDK_dead_tilde, 0x1F60, 0x1FA6, -GDK_Greek_iota, GDK_dead_tilde, 0x1F61, 0x1FA7, -GDK_Greek_iota, GDK_dead_tilde, 0x1F68, 0x1FAE, -GDK_Greek_iota, GDK_dead_tilde, 0x1F69, 0x1FAF, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F88, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_ETA, 0x1F98, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FA8, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_alpha, 0x1F80, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_eta, 0x1F90, -GDK_Greek_iota, GDK_dead_psili, GDK_Greek_omega, 0x1FA0, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F89, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_ETA, 0x1F99, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FA9, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_alpha, 0x1F81, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_eta, 0x1F91, -GDK_Greek_iota, GDK_dead_dasia, GDK_Greek_omega, 0x1FA1, -GDK_parenleft, GDK_1, GDK_0, GDK_parenright, 0x2469, -GDK_parenleft, GDK_1, GDK_1, GDK_parenright, 0x246A, -GDK_parenleft, GDK_1, GDK_2, GDK_parenright, 0x246B, -GDK_parenleft, GDK_1, GDK_3, GDK_parenright, 0x246C, -GDK_parenleft, GDK_1, GDK_4, GDK_parenright, 0x246D, -GDK_parenleft, GDK_1, GDK_5, GDK_parenright, 0x246E, -GDK_parenleft, GDK_1, GDK_6, GDK_parenright, 0x246F, -GDK_parenleft, GDK_1, GDK_7, GDK_parenright, 0x2470, -GDK_parenleft, GDK_1, GDK_8, GDK_parenright, 0x2471, -GDK_parenleft, GDK_1, GDK_9, GDK_parenright, 0x2472, -GDK_parenleft, GDK_1, GDK_KP_Space, GDK_parenright, 0x246B, -GDK_parenleft, GDK_1, GDK_KP_0, GDK_parenright, 0x2469, -GDK_parenleft, GDK_1, GDK_KP_1, GDK_parenright, 0x246A, -GDK_parenleft, GDK_1, GDK_KP_2, GDK_parenright, 0x246B, -GDK_parenleft, GDK_1, GDK_KP_3, GDK_parenright, 0x246C, -GDK_parenleft, GDK_1, GDK_KP_4, GDK_parenright, 0x246D, -GDK_parenleft, GDK_1, GDK_KP_5, GDK_parenright, 0x246E, -GDK_parenleft, GDK_1, GDK_KP_6, GDK_parenright, 0x246F, -GDK_parenleft, GDK_1, GDK_KP_7, GDK_parenright, 0x2470, -GDK_parenleft, GDK_1, GDK_KP_8, GDK_parenright, 0x2471, -GDK_parenleft, GDK_1, GDK_KP_9, GDK_parenright, 0x2472, -GDK_parenleft, GDK_2, GDK_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_2, GDK_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_2, GDK_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_2, GDK_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_2, GDK_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_2, GDK_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_2, GDK_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_2, GDK_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_2, GDK_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_2, GDK_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_2, GDK_KP_Space, GDK_parenright, 0x3252, -GDK_parenleft, GDK_2, GDK_KP_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_2, GDK_KP_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_2, GDK_KP_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_2, GDK_KP_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_2, GDK_KP_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_2, GDK_KP_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_2, GDK_KP_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_2, GDK_KP_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_2, GDK_KP_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_2, GDK_KP_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_3, GDK_0, GDK_parenright, 0x325A, -GDK_parenleft, GDK_3, GDK_1, GDK_parenright, 0x325B, -GDK_parenleft, GDK_3, GDK_2, GDK_parenright, 0x325C, -GDK_parenleft, GDK_3, GDK_3, GDK_parenright, 0x325D, -GDK_parenleft, GDK_3, GDK_4, GDK_parenright, 0x325E, -GDK_parenleft, GDK_3, GDK_5, GDK_parenright, 0x325F, -GDK_parenleft, GDK_3, GDK_6, GDK_parenright, 0x32B1, -GDK_parenleft, GDK_3, GDK_7, GDK_parenright, 0x32B2, -GDK_parenleft, GDK_3, GDK_8, GDK_parenright, 0x32B3, -GDK_parenleft, GDK_3, GDK_9, GDK_parenright, 0x32B4, -GDK_parenleft, GDK_3, GDK_KP_Space, GDK_parenright, 0x325C, -GDK_parenleft, GDK_3, GDK_KP_0, GDK_parenright, 0x325A, -GDK_parenleft, GDK_3, GDK_KP_1, GDK_parenright, 0x325B, -GDK_parenleft, GDK_3, GDK_KP_2, GDK_parenright, 0x325C, -GDK_parenleft, GDK_3, GDK_KP_3, GDK_parenright, 0x325D, -GDK_parenleft, GDK_3, GDK_KP_4, GDK_parenright, 0x325E, -GDK_parenleft, GDK_3, GDK_KP_5, GDK_parenright, 0x325F, -GDK_parenleft, GDK_3, GDK_KP_6, GDK_parenright, 0x32B1, -GDK_parenleft, GDK_3, GDK_KP_7, GDK_parenright, 0x32B2, -GDK_parenleft, GDK_3, GDK_KP_8, GDK_parenright, 0x32B3, -GDK_parenleft, GDK_3, GDK_KP_9, GDK_parenright, 0x32B4, -GDK_parenleft, GDK_4, GDK_0, GDK_parenright, 0x32B5, -GDK_parenleft, GDK_4, GDK_1, GDK_parenright, 0x32B6, -GDK_parenleft, GDK_4, GDK_2, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_4, GDK_3, GDK_parenright, 0x32B8, -GDK_parenleft, GDK_4, GDK_4, GDK_parenright, 0x32B9, -GDK_parenleft, GDK_4, GDK_5, GDK_parenright, 0x32BA, -GDK_parenleft, GDK_4, GDK_6, GDK_parenright, 0x32BB, -GDK_parenleft, GDK_4, GDK_7, GDK_parenright, 0x32BC, -GDK_parenleft, GDK_4, GDK_8, GDK_parenright, 0x32BD, -GDK_parenleft, GDK_4, GDK_9, GDK_parenright, 0x32BE, -GDK_parenleft, GDK_4, GDK_KP_Space, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_4, GDK_KP_0, GDK_parenright, 0x32B5, -GDK_parenleft, GDK_4, GDK_KP_1, GDK_parenright, 0x32B6, -GDK_parenleft, GDK_4, GDK_KP_2, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_4, GDK_KP_3, GDK_parenright, 0x32B8, -GDK_parenleft, GDK_4, GDK_KP_4, GDK_parenright, 0x32B9, -GDK_parenleft, GDK_4, GDK_KP_5, GDK_parenright, 0x32BA, -GDK_parenleft, GDK_4, GDK_KP_6, GDK_parenright, 0x32BB, -GDK_parenleft, GDK_4, GDK_KP_7, GDK_parenright, 0x32BC, -GDK_parenleft, GDK_4, GDK_KP_8, GDK_parenright, 0x32BD, -GDK_parenleft, GDK_4, GDK_KP_9, GDK_parenright, 0x32BE, -GDK_parenleft, GDK_5, GDK_KP_0, GDK_parenright, 0x32BF, -GDK_parenleft, 0x1100, 0x1161, GDK_parenright, 0x326E, -GDK_parenleft, 0x1102, 0x1161, GDK_parenright, 0x326F, -GDK_parenleft, 0x1103, 0x1161, GDK_parenright, 0x3270, -GDK_parenleft, 0x1105, 0x1161, GDK_parenright, 0x3271, -GDK_parenleft, 0x1106, 0x1161, GDK_parenright, 0x3272, -GDK_parenleft, 0x1107, 0x1161, GDK_parenright, 0x3273, -GDK_parenleft, 0x1109, 0x1161, GDK_parenright, 0x3274, -GDK_parenleft, 0x110B, 0x1161, GDK_parenright, 0x3275, -GDK_parenleft, 0x110C, 0x1161, GDK_parenright, 0x3276, -GDK_parenleft, 0x110E, 0x1161, GDK_parenright, 0x3277, -GDK_parenleft, 0x110F, 0x1161, GDK_parenright, 0x3278, -GDK_parenleft, 0x1110, 0x1161, GDK_parenright, 0x3279, -GDK_parenleft, 0x1111, 0x1161, GDK_parenright, 0x327A, -GDK_parenleft, 0x1112, 0x1161, GDK_parenright, 0x327B, -GDK_parenleft, GDK_KP_Space, GDK_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_KP_Space, GDK_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_KP_Space, GDK_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_Space, GDK_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_KP_Space, GDK_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_KP_Space, GDK_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_KP_Space, GDK_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_KP_Space, GDK_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_KP_Space, GDK_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_KP_Space, GDK_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_KP_Space, GDK_KP_Space, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_Space, GDK_KP_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_KP_Space, GDK_KP_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_KP_Space, GDK_KP_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_Space, GDK_KP_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_KP_Space, GDK_KP_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_KP_Space, GDK_KP_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_KP_Space, GDK_KP_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_KP_Space, GDK_KP_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_KP_Space, GDK_KP_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_KP_Space, GDK_KP_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_KP_1, GDK_0, GDK_parenright, 0x2469, -GDK_parenleft, GDK_KP_1, GDK_1, GDK_parenright, 0x246A, -GDK_parenleft, GDK_KP_1, GDK_2, GDK_parenright, 0x246B, -GDK_parenleft, GDK_KP_1, GDK_3, GDK_parenright, 0x246C, -GDK_parenleft, GDK_KP_1, GDK_4, GDK_parenright, 0x246D, -GDK_parenleft, GDK_KP_1, GDK_5, GDK_parenright, 0x246E, -GDK_parenleft, GDK_KP_1, GDK_6, GDK_parenright, 0x246F, -GDK_parenleft, GDK_KP_1, GDK_7, GDK_parenright, 0x2470, -GDK_parenleft, GDK_KP_1, GDK_8, GDK_parenright, 0x2471, -GDK_parenleft, GDK_KP_1, GDK_9, GDK_parenright, 0x2472, -GDK_parenleft, GDK_KP_1, GDK_KP_Space, GDK_parenright, 0x246B, -GDK_parenleft, GDK_KP_1, GDK_KP_0, GDK_parenright, 0x2469, -GDK_parenleft, GDK_KP_1, GDK_KP_1, GDK_parenright, 0x246A, -GDK_parenleft, GDK_KP_1, GDK_KP_2, GDK_parenright, 0x246B, -GDK_parenleft, GDK_KP_1, GDK_KP_3, GDK_parenright, 0x246C, -GDK_parenleft, GDK_KP_1, GDK_KP_4, GDK_parenright, 0x246D, -GDK_parenleft, GDK_KP_1, GDK_KP_5, GDK_parenright, 0x246E, -GDK_parenleft, GDK_KP_1, GDK_KP_6, GDK_parenright, 0x246F, -GDK_parenleft, GDK_KP_1, GDK_KP_7, GDK_parenright, 0x2470, -GDK_parenleft, GDK_KP_1, GDK_KP_8, GDK_parenright, 0x2471, -GDK_parenleft, GDK_KP_1, GDK_KP_9, GDK_parenright, 0x2472, -GDK_parenleft, GDK_KP_2, GDK_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_KP_2, GDK_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_KP_2, GDK_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_2, GDK_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_KP_2, GDK_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_KP_2, GDK_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_KP_2, GDK_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_KP_2, GDK_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_KP_2, GDK_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_KP_2, GDK_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_KP_2, GDK_KP_Space, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_2, GDK_KP_0, GDK_parenright, 0x2473, -GDK_parenleft, GDK_KP_2, GDK_KP_1, GDK_parenright, 0x3251, -GDK_parenleft, GDK_KP_2, GDK_KP_2, GDK_parenright, 0x3252, -GDK_parenleft, GDK_KP_2, GDK_KP_3, GDK_parenright, 0x3253, -GDK_parenleft, GDK_KP_2, GDK_KP_4, GDK_parenright, 0x3254, -GDK_parenleft, GDK_KP_2, GDK_KP_5, GDK_parenright, 0x3255, -GDK_parenleft, GDK_KP_2, GDK_KP_6, GDK_parenright, 0x3256, -GDK_parenleft, GDK_KP_2, GDK_KP_7, GDK_parenright, 0x3257, -GDK_parenleft, GDK_KP_2, GDK_KP_8, GDK_parenright, 0x3258, -GDK_parenleft, GDK_KP_2, GDK_KP_9, GDK_parenright, 0x3259, -GDK_parenleft, GDK_KP_3, GDK_0, GDK_parenright, 0x325A, -GDK_parenleft, GDK_KP_3, GDK_1, GDK_parenright, 0x325B, -GDK_parenleft, GDK_KP_3, GDK_2, GDK_parenright, 0x325C, -GDK_parenleft, GDK_KP_3, GDK_3, GDK_parenright, 0x325D, -GDK_parenleft, GDK_KP_3, GDK_4, GDK_parenright, 0x325E, -GDK_parenleft, GDK_KP_3, GDK_5, GDK_parenright, 0x325F, -GDK_parenleft, GDK_KP_3, GDK_6, GDK_parenright, 0x32B1, -GDK_parenleft, GDK_KP_3, GDK_7, GDK_parenright, 0x32B2, -GDK_parenleft, GDK_KP_3, GDK_8, GDK_parenright, 0x32B3, -GDK_parenleft, GDK_KP_3, GDK_9, GDK_parenright, 0x32B4, -GDK_parenleft, GDK_KP_3, GDK_KP_Space, GDK_parenright, 0x325C, -GDK_parenleft, GDK_KP_3, GDK_KP_0, GDK_parenright, 0x325A, -GDK_parenleft, GDK_KP_3, GDK_KP_1, GDK_parenright, 0x325B, -GDK_parenleft, GDK_KP_3, GDK_KP_2, GDK_parenright, 0x325C, -GDK_parenleft, GDK_KP_3, GDK_KP_3, GDK_parenright, 0x325D, -GDK_parenleft, GDK_KP_3, GDK_KP_4, GDK_parenright, 0x325E, -GDK_parenleft, GDK_KP_3, GDK_KP_5, GDK_parenright, 0x325F, -GDK_parenleft, GDK_KP_3, GDK_KP_6, GDK_parenright, 0x32B1, -GDK_parenleft, GDK_KP_3, GDK_KP_7, GDK_parenright, 0x32B2, -GDK_parenleft, GDK_KP_3, GDK_KP_8, GDK_parenright, 0x32B3, -GDK_parenleft, GDK_KP_3, GDK_KP_9, GDK_parenright, 0x32B4, -GDK_parenleft, GDK_KP_4, GDK_0, GDK_parenright, 0x32B5, -GDK_parenleft, GDK_KP_4, GDK_1, GDK_parenright, 0x32B6, -GDK_parenleft, GDK_KP_4, GDK_2, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_KP_4, GDK_3, GDK_parenright, 0x32B8, -GDK_parenleft, GDK_KP_4, GDK_4, GDK_parenright, 0x32B9, -GDK_parenleft, GDK_KP_4, GDK_5, GDK_parenright, 0x32BA, -GDK_parenleft, GDK_KP_4, GDK_6, GDK_parenright, 0x32BB, -GDK_parenleft, GDK_KP_4, GDK_7, GDK_parenright, 0x32BC, -GDK_parenleft, GDK_KP_4, GDK_8, GDK_parenright, 0x32BD, -GDK_parenleft, GDK_KP_4, GDK_9, GDK_parenright, 0x32BE, -GDK_parenleft, GDK_KP_4, GDK_KP_Space, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_KP_4, GDK_KP_0, GDK_parenright, 0x32B5, -GDK_parenleft, GDK_KP_4, GDK_KP_1, GDK_parenright, 0x32B6, -GDK_parenleft, GDK_KP_4, GDK_KP_2, GDK_parenright, 0x32B7, -GDK_parenleft, GDK_KP_4, GDK_KP_3, GDK_parenright, 0x32B8, -GDK_parenleft, GDK_KP_4, GDK_KP_4, GDK_parenright, 0x32B9, -GDK_parenleft, GDK_KP_4, GDK_KP_5, GDK_parenright, 0x32BA, -GDK_parenleft, GDK_KP_4, GDK_KP_6, GDK_parenright, 0x32BB, -GDK_parenleft, GDK_KP_4, GDK_KP_7, GDK_parenright, 0x32BC, -GDK_parenleft, GDK_KP_4, GDK_KP_8, GDK_parenright, 0x32BD, -GDK_parenleft, GDK_KP_4, GDK_KP_9, GDK_parenright, 0x32BE, -GDK_parenleft, GDK_KP_5, GDK_KP_0, GDK_parenright, 0x32BF, -GDK_C, GDK_C, GDK_C, GDK_P, 0x262D, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_apostrophe, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_apostrophe, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_apostrophe, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8B, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_ETA, 0x1F9B, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAB, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_alpha, 0x1F83, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_eta, 0x1F93, -GDK_Greek_iota, GDK_grave, GDK_parenleft, GDK_Greek_omega, 0x1FA3, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_ALPHA, 0x1F8A, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_ETA, 0x1F9A, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_OMEGA, 0x1FAA, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_alpha, 0x1F82, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_eta, 0x1F92, -GDK_Greek_iota, GDK_grave, GDK_parenright, GDK_Greek_omega, 0x1FA2, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8A, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_ETA, 0x1F9A, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAA, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_alpha, 0x1F82, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_eta, 0x1F92, -GDK_Greek_iota, GDK_grave, GDK_dead_psili, GDK_Greek_omega, 0x1FA2, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8B, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9B, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAB, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_alpha, 0x1F83, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_eta, 0x1F93, -GDK_Greek_iota, GDK_grave, GDK_dead_dasia, GDK_Greek_omega, 0x1FA3, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8F, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_ETA, 0x1F9F, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAF, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_alpha, 0x1F87, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_eta, 0x1F97, -GDK_Greek_iota, GDK_asciitilde, GDK_parenleft, GDK_Greek_omega, 0x1FA7, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_ALPHA, 0x1F8E, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_ETA, 0x1F9E, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_OMEGA, 0x1FAE, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_alpha, 0x1F86, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_eta, 0x1F96, -GDK_Greek_iota, GDK_asciitilde, GDK_parenright, GDK_Greek_omega, 0x1FA6, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8E, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_ETA, 0x1F9E, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAE, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_alpha, 0x1F86, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_eta, 0x1F96, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_psili, GDK_Greek_omega, 0x1FA6, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8F, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9F, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAF, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_alpha, 0x1F87, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_eta, 0x1F97, -GDK_Greek_iota, GDK_asciitilde, GDK_dead_dasia, GDK_Greek_omega, 0x1FA7, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_acute, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_acute, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_acute, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_acute, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8B, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_ETA, 0x1F9B, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAB, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_alpha, 0x1F83, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_eta, 0x1F93, -GDK_Greek_iota, GDK_dead_grave, GDK_parenleft, GDK_Greek_omega, 0x1FA3, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_ALPHA, 0x1F8A, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_ETA, 0x1F9A, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_OMEGA, 0x1FAA, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_alpha, 0x1F82, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_eta, 0x1F92, -GDK_Greek_iota, GDK_dead_grave, GDK_parenright, GDK_Greek_omega, 0x1FA2, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8A, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_ETA, 0x1F9A, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAA, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_alpha, 0x1F82, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_eta, 0x1F92, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_psili, GDK_Greek_omega, 0x1FA2, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8B, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9B, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAB, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_alpha, 0x1F83, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_eta, 0x1F93, -GDK_Greek_iota, GDK_dead_grave, GDK_dead_dasia, GDK_Greek_omega, 0x1FA3, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_dead_acute, GDK_parenleft, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_dead_acute, GDK_parenright, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8C, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_ETA, 0x1F9C, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAC, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_alpha, 0x1F84, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_eta, 0x1F94, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_psili, GDK_Greek_omega, 0x1FA4, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8D, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9D, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAD, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_alpha, 0x1F85, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_eta, 0x1F95, -GDK_Greek_iota, GDK_dead_acute, GDK_dead_dasia, GDK_Greek_omega, 0x1FA5, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_ALPHA, 0x1F8F, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_ETA, 0x1F9F, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_OMEGA, 0x1FAF, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_alpha, 0x1F87, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_eta, 0x1F97, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenleft, GDK_Greek_omega, 0x1FA7, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_ALPHA, 0x1F8E, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_ETA, 0x1F9E, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_OMEGA, 0x1FAE, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_alpha, 0x1F86, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_eta, 0x1F96, -GDK_Greek_iota, GDK_dead_tilde, GDK_parenright, GDK_Greek_omega, 0x1FA6, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_ALPHA, 0x1F8E, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_ETA, 0x1F9E, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_OMEGA, 0x1FAE, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_alpha, 0x1F86, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_eta, 0x1F96, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_psili, GDK_Greek_omega, 0x1FA6, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_ALPHA, 0x1F8F, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_ETA, 0x1F9F, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_OMEGA, 0x1FAF, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_alpha, 0x1F87, -GDK_Greek_iota, GDK_dead_tilde, GDK_dead_dasia, GDK_Greek_eta, 0x1F97, +GDK_KEY_dead_stroke, 144, 232, 241, 241, 241, +GDK_KEY_Greek_accentdieresis, 241, 245, 245, 245, 245, +GDK_KEY_dead_grave, 245, 307, 394, 606, 606, +GDK_KEY_dead_acute, 606, 670, 766, 1042, 1042, +GDK_KEY_dead_circumflex, 1042, 1166, 1166, 1366, 1366, +GDK_KEY_dead_tilde, 1366, 1450, 1513, 1653, 1653, +GDK_KEY_dead_macron, 1653, 1699, 1699, 1771, 1771, +GDK_KEY_dead_breve, 1771, 1821, 1821, 1845, 1845, +GDK_KEY_dead_abovedot, 1845, 1875, 1878, 1910, 1910, +GDK_KEY_dead_diaeresis, 1910, 1998, 2007, 2031, 2031, +GDK_KEY_dead_abovering, 2031, 2041, 2041, 2041, 2041, +GDK_KEY_dead_doubleacute, 2041, 2051, 2051, 2051, 2051, +GDK_KEY_dead_caron, 2051, 2093, 2093, 2101, 2101, +GDK_KEY_dead_cedilla, 2101, 2113, 2113, 2113, 2113, +GDK_KEY_dead_ogonek, 2113, 2123, 2123, 2123, 2123, +GDK_KEY_dead_iota, 2123, 2145, 2244, 2676, 3336, +GDK_KEY_dead_voiced_sound, 3336, 3382, 3382, 3382, 3382, +GDK_KEY_dead_semivoiced_sound, 3382, 3392, 3392, 3392, 3392, +GDK_KEY_dead_belowdot, 3392, 3408, 3408, 3424, 3424, +GDK_KEY_dead_hook, 3424, 3500, 3500, 3556, 3556, +GDK_KEY_dead_horn, 3556, 3566, 3566, 3566, 3566, +GDK_KEY_dead_psili, 3566, 3594, 3594, 3594, 3594, +GDK_KEY_dead_dasia, 3594, 3626, 3626, 3626, 3626, +GDK_KEY_Multi_key, 3626, 3626, 9560, 13268, 15133, +GDK_KEY_space, 0x002F, +GDK_KEY_2, 0x01BB, +GDK_KEY_A, 0x023A, +GDK_KEY_B, 0x0243, +GDK_KEY_C, 0x023B, +GDK_KEY_D, 0x0110, +GDK_KEY_E, 0x0246, +GDK_KEY_G, 0x01E4, +GDK_KEY_H, 0x0126, +GDK_KEY_I, 0x0197, +GDK_KEY_J, 0x0248, +GDK_KEY_L, 0x0141, +GDK_KEY_O, 0x00D8, +GDK_KEY_P, 0x2C63, +GDK_KEY_R, 0x024C, +GDK_KEY_T, 0x0166, +GDK_KEY_U, 0x0244, +GDK_KEY_Y, 0x024E, +GDK_KEY_Z, 0x01B5, +GDK_KEY_a, 0x2C65, +GDK_KEY_b, 0x0180, +GDK_KEY_c, 0x023C, +GDK_KEY_d, 0x0111, +GDK_KEY_e, 0x0247, +GDK_KEY_g, 0x01E5, +GDK_KEY_h, 0x0127, +GDK_KEY_i, 0x0268, +GDK_KEY_j, 0x0249, +GDK_KEY_l, 0x0142, +GDK_KEY_o, 0x00F8, +GDK_KEY_p, 0x1D7D, +GDK_KEY_r, 0x024D, +GDK_KEY_t, 0x0167, +GDK_KEY_u, 0x0289, +GDK_KEY_y, 0x024F, +GDK_KEY_z, 0x01B6, +GDK_KEY_nobreakspace, 0x0338, +GDK_KEY_Oacute, 0x01FE, +GDK_KEY_oacute, 0x01FF, +0x0237, 0x025F, +0x0269, 0x1D7C, +GDK_KEY_dead_stroke, 0x002F, +GDK_KEY_lessthanequal, 0x2270, +GDK_KEY_greaterthanequal, 0x2271, +GDK_KEY_dead_acute, GDK_KEY_O, 0x01FE, +GDK_KEY_dead_acute, GDK_KEY_o, 0x01FF, +GDK_KEY_dead_abovedot, GDK_KEY_j, 0x025F, +GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_space, 0x0060, +GDK_KEY_V, 0x01DB, +GDK_KEY_v, 0x01DC, +GDK_KEY_nobreakspace, 0x0300, +GDK_KEY_Abreve, 0x1EB0, +GDK_KEY_abreve, 0x1EB1, +GDK_KEY_Emacron, 0x1E14, +GDK_KEY_emacron, 0x1E15, +GDK_KEY_Omacron, 0x1E50, +GDK_KEY_omacron, 0x1E51, +GDK_KEY_Cyrillic_ie, 0x0450, +GDK_KEY_Cyrillic_i, 0x045D, +GDK_KEY_Cyrillic_IE, 0x0400, +GDK_KEY_Cyrillic_I, 0x040D, +GDK_KEY_Greek_iotadieresis, 0x1FD2, +GDK_KEY_Greek_upsilondieresis, 0x1FE2, +GDK_KEY_Greek_ALPHA, 0x1FBA, +GDK_KEY_Greek_EPSILON, 0x1FC8, +GDK_KEY_Greek_ETA, 0x1FCA, +GDK_KEY_Greek_IOTA, 0x1FDA, +GDK_KEY_Greek_OMICRON, 0x1FF8, +GDK_KEY_Greek_UPSILON, 0x1FEA, +GDK_KEY_Greek_OMEGA, 0x1FFA, +GDK_KEY_Greek_alpha, 0x1F70, +GDK_KEY_Greek_epsilon, 0x1F72, +GDK_KEY_Greek_eta, 0x1F74, +GDK_KEY_Greek_iota, 0x1F76, +GDK_KEY_Greek_omicron, 0x1F78, +GDK_KEY_Greek_upsilon, 0x1F7A, +GDK_KEY_Greek_omega, 0x1F7C, +GDK_KEY_dead_grave, 0x0060, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD2, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE2, +GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0A, +GDK_KEY_dead_psili, GDK_KEY_Greek_EPSILON, 0x1F1A, +GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2A, +GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3A, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMICRON, 0x1F4A, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6A, +GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F02, +GDK_KEY_dead_psili, GDK_KEY_Greek_epsilon, 0x1F12, +GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F22, +GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F32, +GDK_KEY_dead_psili, GDK_KEY_Greek_omicron, 0x1F42, +GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F52, +GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F62, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_EPSILON, 0x1F1B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMICRON, 0x1F4B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6B, +GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F03, +GDK_KEY_dead_dasia, GDK_KEY_Greek_epsilon, 0x1F13, +GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F23, +GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F33, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omicron, 0x1F43, +GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F53, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F63, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01DB, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DC, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x1FD2, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x1FE2, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F1B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F4B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6B, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F03, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F13, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F23, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F33, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F43, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F53, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F63, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F1A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F4A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6A, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F02, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F12, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F22, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F32, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F42, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F52, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F62, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_O, 0x1EDC, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_U, 0x1EEA, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_o, 0x1EDD, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_u, 0x1EEB, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_A, 0x1EB0, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_a, 0x1EB1, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA6, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC0, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED2, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA7, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC1, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED3, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_E, 0x1E14, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_O, 0x1E50, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_e, 0x1E15, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_o, 0x1E51, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_A, 0x1EB0, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_a, 0x1EB1, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_E, 0x1E14, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_O, 0x1E50, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_e, 0x1E15, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_o, 0x1E51, +GDK_KEY_space, 0x0027, +GDK_KEY_V, 0x01D7, +GDK_KEY_v, 0x01D8, +GDK_KEY_nobreakspace, 0x0301, +GDK_KEY_Abreve, 0x1EAE, +GDK_KEY_abreve, 0x1EAF, +GDK_KEY_Emacron, 0x1E16, +GDK_KEY_emacron, 0x1E17, +GDK_KEY_Utilde, 0x1E78, +GDK_KEY_omacron, 0x1E53, +GDK_KEY_utilde, 0x1E79, +GDK_KEY_Cyrillic_ghe, 0x0453, +GDK_KEY_Cyrillic_ka, 0x045C, +GDK_KEY_Cyrillic_GHE, 0x0403, +GDK_KEY_Cyrillic_KA, 0x040C, +GDK_KEY_Greek_iotadieresis, 0x0390, +GDK_KEY_Greek_upsilondieresis, 0x03B0, +GDK_KEY_Greek_ALPHA, 0x0386, +GDK_KEY_Greek_EPSILON, 0x0388, +GDK_KEY_Greek_ETA, 0x0389, +GDK_KEY_Greek_IOTA, 0x038A, +GDK_KEY_Greek_OMICRON, 0x038C, +GDK_KEY_Greek_UPSILON, 0x038E, +GDK_KEY_Greek_OMEGA, 0x038F, +GDK_KEY_Greek_alpha, 0x03AC, +GDK_KEY_Greek_epsilon, 0x03AD, +GDK_KEY_Greek_eta, 0x03AE, +GDK_KEY_Greek_iota, 0x03AF, +GDK_KEY_Greek_omicron, 0x03CC, +GDK_KEY_Greek_upsilon, 0x03CD, +GDK_KEY_Greek_omega, 0x03CE, +GDK_KEY_dead_acute, 0x00B4, +GDK_KEY_dead_stroke, GDK_KEY_O, 0x01FE, +GDK_KEY_dead_stroke, GDK_KEY_o, 0x01FF, +GDK_KEY_dead_diaeresis, GDK_KEY_space, 0x0385, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_dead_psili, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_dead_psili, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_dead_psili, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_dead_dasia, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_I, 0x1E2E, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D7, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_i, 0x1E2F, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D8, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_O, 0x1EDA, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_U, 0x1EE8, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_o, 0x1EDB, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_u, 0x1EE9, +GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_C, 0x1E08, +GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_c, 0x1E09, +GDK_KEY_Multi_key, GDK_KEY_slash, GDK_KEY_O, 0x01FE, +GDK_KEY_Multi_key, GDK_KEY_slash, GDK_KEY_o, 0x01FF, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_A, 0x1EAE, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_a, 0x1EAF, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA4, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EBE, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED0, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA5, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EBF, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED1, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_E, 0x1E16, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_O, 0x1E52, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_e, 0x1E17, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_o, 0x1E53, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_A, 0x1EAE, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_a, 0x1EAF, +GDK_KEY_Multi_key, GDK_KEY_o, GDK_KEY_A, 0x01FA, +GDK_KEY_Multi_key, GDK_KEY_o, GDK_KEY_a, 0x01FB, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4C, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_U, 0x1E78, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_o, 0x1E4D, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_u, 0x1E79, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_E, 0x1E16, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_O, 0x1E52, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_e, 0x1E17, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_o, 0x1E53, +GDK_KEY_Multi_key, GDK_KEY_cedilla, GDK_KEY_C, 0x1E08, +GDK_KEY_Multi_key, GDK_KEY_cedilla, GDK_KEY_c, 0x1E09, +GDK_KEY_Multi_key, GDK_KEY_KP_Divide, GDK_KEY_O, 0x01FE, +GDK_KEY_Multi_key, GDK_KEY_KP_Divide, GDK_KEY_o, 0x01FF, +GDK_KEY_space, 0x005E, +GDK_KEY_parenleft, 0x207D, +GDK_KEY_parenright, 0x207E, +GDK_KEY_plus, 0x207A, +GDK_KEY_minus, 0x207B, +GDK_KEY_0, 0x2070, +GDK_KEY_1, 0x00B9, +GDK_KEY_2, 0x00B2, +GDK_KEY_3, 0x00B3, +GDK_KEY_4, 0x2074, +GDK_KEY_5, 0x2075, +GDK_KEY_6, 0x2076, +GDK_KEY_7, 0x2077, +GDK_KEY_8, 0x2078, +GDK_KEY_9, 0x2079, +GDK_KEY_equal, 0x207C, +GDK_KEY_nobreakspace, 0x0302, +GDK_KEY_Agrave, 0x1EA6, +GDK_KEY_Aacute, 0x1EA4, +GDK_KEY_Atilde, 0x1EAA, +GDK_KEY_Egrave, 0x1EC0, +GDK_KEY_Eacute, 0x1EBE, +GDK_KEY_Ograve, 0x1ED2, +GDK_KEY_Oacute, 0x1ED0, +GDK_KEY_Otilde, 0x1ED6, +GDK_KEY_agrave, 0x1EA7, +GDK_KEY_aacute, 0x1EA5, +GDK_KEY_atilde, 0x1EAB, +GDK_KEY_egrave, 0x1EC1, +GDK_KEY_eacute, 0x1EBF, +GDK_KEY_ograve, 0x1ED3, +GDK_KEY_oacute, 0x1ED1, +GDK_KEY_otilde, 0x1ED7, +0x2212, 0x207B, +0x4E00, 0x3192, +0x4E01, 0x319C, +0x4E09, 0x3194, +0x4E0A, 0x3196, +0x4E0B, 0x3198, +0x4E19, 0x319B, +0x4E2D, 0x3197, +0x4E59, 0x319A, +0x4E8C, 0x3193, +0x4EBA, 0x319F, +0x56DB, 0x3195, +0x5730, 0x319E, +0x5929, 0x319D, +0x7532, 0x3199, +GDK_KEY_dead_circumflex, 0x005E, +GDK_KEY_KP_Space, 0x00B2, +GDK_KEY_KP_Add, 0x207A, +GDK_KEY_KP_0, 0x2070, +GDK_KEY_KP_1, 0x00B9, +GDK_KEY_KP_2, 0x00B2, +GDK_KEY_KP_3, 0x00B3, +GDK_KEY_KP_4, 0x2074, +GDK_KEY_KP_5, 0x2075, +GDK_KEY_KP_6, 0x2076, +GDK_KEY_KP_7, 0x2077, +GDK_KEY_KP_8, 0x2078, +GDK_KEY_KP_9, 0x2079, +GDK_KEY_KP_Equal, 0x207C, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_A, 0x1EAC, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_E, 0x1EC6, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_O, 0x1ED8, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_a, 0x1EAD, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_e, 0x1EC7, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_o, 0x1ED9, +GDK_KEY_Multi_key, GDK_KEY_S, GDK_KEY_M, 0x2120, +GDK_KEY_Multi_key, GDK_KEY_S, GDK_KEY_m, 0x2120, +GDK_KEY_Multi_key, GDK_KEY_T, GDK_KEY_M, 0x2122, +GDK_KEY_Multi_key, GDK_KEY_T, GDK_KEY_m, 0x2122, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_a, 0x00AA, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_h, 0x02B0, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_i, 0x2071, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_j, 0x02B2, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_l, 0x02E1, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_n, 0x207F, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_o, 0x00BA, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_r, 0x02B3, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_s, 0x02E2, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_w, 0x02B7, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_x, 0x02E3, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_y, 0x02B8, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x0263, 0x02E0, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x0266, 0x02B1, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x0279, 0x02B4, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x027B, 0x02B5, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x0281, 0x02B6, +GDK_KEY_Multi_key, GDK_KEY_underscore, 0x0295, 0x02E4, +GDK_KEY_Multi_key, GDK_KEY_s, GDK_KEY_M, 0x2120, +GDK_KEY_Multi_key, GDK_KEY_s, GDK_KEY_m, 0x2120, +GDK_KEY_Multi_key, GDK_KEY_t, GDK_KEY_M, 0x2122, +GDK_KEY_Multi_key, GDK_KEY_t, GDK_KEY_m, 0x2122, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_a, 0x00AA, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_h, 0x02B0, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_i, 0x2071, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_j, 0x02B2, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_l, 0x02E1, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_n, 0x207F, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_o, 0x00BA, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_r, 0x02B3, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_s, 0x02E2, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_w, 0x02B7, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_x, 0x02E3, +GDK_KEY_Multi_key, GDK_KEY_underbar, GDK_KEY_y, 0x02B8, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x0263, 0x02E0, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x0266, 0x02B1, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x0279, 0x02B4, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x027B, 0x02B5, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x0281, 0x02B6, +GDK_KEY_Multi_key, GDK_KEY_underbar, 0x0295, 0x02E4, +GDK_KEY_space, 0x007E, +GDK_KEY_less, 0x2272, +GDK_KEY_equal, 0x2243, +GDK_KEY_greater, 0x2273, +GDK_KEY_nobreakspace, 0x0303, +GDK_KEY_Oacute, 0x1E4C, +GDK_KEY_Odiaeresis, 0x1E4E, +GDK_KEY_Uacute, 0x1E78, +GDK_KEY_oacute, 0x1E4D, +GDK_KEY_odiaeresis, 0x1E4F, +GDK_KEY_uacute, 0x1E79, +GDK_KEY_Abreve, 0x1EB4, +GDK_KEY_abreve, 0x1EB5, +GDK_KEY_Omacron, 0x022C, +GDK_KEY_omacron, 0x022D, +GDK_KEY_Greek_iotadieresis, 0x1FD7, +GDK_KEY_Greek_upsilondieresis, 0x1FE7, +GDK_KEY_Greek_alpha, 0x1FB6, +GDK_KEY_Greek_eta, 0x1FC6, +GDK_KEY_Greek_iota, 0x1FD6, +GDK_KEY_Greek_upsilon, 0x1FE6, +GDK_KEY_Greek_omega, 0x1FF6, +0x1F00, 0x1F06, +0x1F01, 0x1F07, +0x1F08, 0x1F0E, +0x1F09, 0x1F0F, +0x1F20, 0x1F26, +0x1F21, 0x1F27, +0x1F28, 0x1F2E, +0x1F29, 0x1F2F, +0x1F30, 0x1F36, +0x1F31, 0x1F37, +0x1F38, 0x1F3E, +0x1F39, 0x1F3F, +0x1F50, 0x1F56, +0x1F51, 0x1F57, +0x1F59, 0x1F5F, +0x1F60, 0x1F66, +0x1F61, 0x1F67, +0x1F68, 0x1F6E, +0x1F69, 0x1F6F, +GDK_KEY_dead_tilde, 0x007E, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD7, +GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE7, +GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0E, +GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2E, +GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3E, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6E, +GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F06, +GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F26, +GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F36, +GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F56, +GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F66, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0F, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2F, +GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3F, +GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5F, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6F, +GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F07, +GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F27, +GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F37, +GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F57, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F67, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x1FD7, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x1FE7, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0F, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2F, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3F, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5F, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6F, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F07, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F27, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F37, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F57, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F67, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0E, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2E, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3E, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6E, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F06, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F26, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F36, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F56, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F66, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_O, 0x1EE0, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_U, 0x1EEE, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_o, 0x1EE1, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_u, 0x1EEF, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_A, 0x1EB4, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_a, 0x1EB5, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EAA, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC4, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED6, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EAB, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC5, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED7, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_A, 0x1EB4, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_a, 0x1EB5, +GDK_KEY_space, 0x00AF, +GDK_KEY_V, 0x01D5, +GDK_KEY_v, 0x01D6, +GDK_KEY_nobreakspace, 0x0304, +GDK_KEY_Egrave, 0x1E14, +GDK_KEY_Eacute, 0x1E16, +GDK_KEY_Ograve, 0x1E50, +GDK_KEY_Oacute, 0x1E52, +GDK_KEY_egrave, 0x1E15, +GDK_KEY_eacute, 0x1E17, +GDK_KEY_ograve, 0x1E51, +GDK_KEY_oacute, 0x1E53, +GDK_KEY_Cyrillic_i, 0x04E3, +GDK_KEY_Cyrillic_u, 0x04EF, +GDK_KEY_Cyrillic_I, 0x04E2, +GDK_KEY_Cyrillic_U, 0x04EE, +GDK_KEY_Greek_ALPHA, 0x1FB9, +GDK_KEY_Greek_IOTA, 0x1FD9, +GDK_KEY_Greek_UPSILON, 0x1FE9, +GDK_KEY_Greek_alpha, 0x1FB1, +GDK_KEY_Greek_iota, 0x1FD1, +GDK_KEY_Greek_upsilon, 0x1FE1, +GDK_KEY_dead_macron, 0x00AF, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_L, 0x1E38, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_R, 0x1E5C, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_l, 0x1E39, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_r, 0x1E5D, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_A, 0x01DE, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_O, 0x022A, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D5, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_a, 0x01DF, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_o, 0x022B, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D6, +GDK_KEY_Multi_key, GDK_KEY_period, GDK_KEY_A, 0x01E0, +GDK_KEY_Multi_key, GDK_KEY_period, GDK_KEY_O, 0x0230, +GDK_KEY_Multi_key, GDK_KEY_period, GDK_KEY_a, 0x01E1, +GDK_KEY_Multi_key, GDK_KEY_period, GDK_KEY_o, 0x0231, +GDK_KEY_Multi_key, GDK_KEY_semicolon, GDK_KEY_O, 0x01EC, +GDK_KEY_Multi_key, GDK_KEY_semicolon, GDK_KEY_o, 0x01ED, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_O, 0x022C, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_o, 0x022D, +GDK_KEY_space, 0x02D8, +GDK_KEY_nobreakspace, 0x0306, +GDK_KEY_Agrave, 0x1EB0, +GDK_KEY_Aacute, 0x1EAE, +GDK_KEY_Atilde, 0x1EB4, +GDK_KEY_agrave, 0x1EB1, +GDK_KEY_aacute, 0x1EAF, +GDK_KEY_atilde, 0x1EB5, +GDK_KEY_Cyrillic_a, 0x04D1, +GDK_KEY_Cyrillic_ie, 0x04D7, +GDK_KEY_Cyrillic_i, 0x0439, +GDK_KEY_Cyrillic_u, 0x045E, +GDK_KEY_Cyrillic_zhe, 0x04C2, +GDK_KEY_Cyrillic_A, 0x04D0, +GDK_KEY_Cyrillic_IE, 0x04D6, +GDK_KEY_Cyrillic_I, 0x0419, +GDK_KEY_Cyrillic_U, 0x040E, +GDK_KEY_Cyrillic_ZHE, 0x04C1, +GDK_KEY_Greek_ALPHA, 0x1FB8, +GDK_KEY_Greek_IOTA, 0x1FD8, +GDK_KEY_Greek_UPSILON, 0x1FE8, +GDK_KEY_Greek_alpha, 0x1FB0, +GDK_KEY_Greek_iota, 0x1FD0, +GDK_KEY_Greek_upsilon, 0x1FE0, +GDK_KEY_dead_breve, 0x02D8, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_A, 0x1EB6, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_a, 0x1EB7, +GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_E, 0x1E1C, +GDK_KEY_Multi_key, GDK_KEY_comma, GDK_KEY_e, 0x1E1D, +GDK_KEY_Multi_key, GDK_KEY_cedilla, GDK_KEY_E, 0x1E1C, +GDK_KEY_Multi_key, GDK_KEY_cedilla, GDK_KEY_e, 0x1E1D, +GDK_KEY_space, 0x02D9, +GDK_KEY_L, 0x013F, +GDK_KEY_i, 0x0131, +GDK_KEY_j, 0x0237, +GDK_KEY_l, 0x0140, +GDK_KEY_nobreakspace, 0x0307, +GDK_KEY_Sacute, 0x1E64, +GDK_KEY_Scaron, 0x1E66, +GDK_KEY_sacute, 0x1E65, +GDK_KEY_scaron, 0x1E67, +GDK_KEY_Amacron, 0x01E0, +GDK_KEY_Omacron, 0x0230, +GDK_KEY_amacron, 0x01E1, +GDK_KEY_omacron, 0x0231, +GDK_KEY_dead_abovedot, 0x02D9, +GDK_KEY_dead_stroke, GDK_KEY_j, 0x025F, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_S, 0x1E68, +GDK_KEY_Multi_key, GDK_KEY_exclam, GDK_KEY_s, 0x1E69, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_S, 0x1E64, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_s, 0x1E65, +GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_S, 0x1E66, +GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_s, 0x1E67, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_S, 0x1E64, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_s, 0x1E65, +GDK_KEY_space, 0x0022, +GDK_KEY_apostrophe, 0x0344, +GDK_KEY_nobreakspace, 0x0308, +GDK_KEY_acute, 0x0344, +GDK_KEY_Iacute, 0x1E2E, +GDK_KEY_Ugrave, 0x01DB, +GDK_KEY_Uacute, 0x01D7, +GDK_KEY_iacute, 0x1E2F, +GDK_KEY_ugrave, 0x01DC, +GDK_KEY_uacute, 0x01D8, +0x01D3, 0x01D9, +0x01D4, 0x01DA, +GDK_KEY_Amacron, 0x01DE, +GDK_KEY_Umacron, 0x1E7A, +GDK_KEY_amacron, 0x01DF, +GDK_KEY_omacron, 0x022B, +GDK_KEY_umacron, 0x1E7B, +GDK_KEY_Ukrainian_i, 0x0457, +GDK_KEY_Ukrainian_I, 0x0407, +GDK_KEY_Cyrillic_a, 0x04D3, +GDK_KEY_Cyrillic_ie, 0x0451, +GDK_KEY_Cyrillic_i, 0x04E5, +GDK_KEY_Cyrillic_o, 0x04E7, +GDK_KEY_Cyrillic_u, 0x04F1, +GDK_KEY_Cyrillic_zhe, 0x04DD, +GDK_KEY_Cyrillic_yeru, 0x04F9, +GDK_KEY_Cyrillic_ze, 0x04DF, +GDK_KEY_Cyrillic_e, 0x04ED, +GDK_KEY_Cyrillic_che, 0x04F5, +GDK_KEY_Cyrillic_A, 0x04D2, +GDK_KEY_Cyrillic_IE, 0x0401, +GDK_KEY_Cyrillic_I, 0x04E4, +GDK_KEY_Cyrillic_O, 0x04E6, +GDK_KEY_Cyrillic_U, 0x04F0, +GDK_KEY_Cyrillic_ZHE, 0x04DC, +GDK_KEY_Cyrillic_YERU, 0x04F8, +GDK_KEY_Cyrillic_ZE, 0x04DE, +GDK_KEY_Cyrillic_E, 0x04EC, +GDK_KEY_Cyrillic_CHE, 0x04F4, +GDK_KEY_Greek_IOTA, 0x03AA, +GDK_KEY_Greek_UPSILON, 0x03AB, +GDK_KEY_Greek_iota, 0x03CA, +GDK_KEY_Greek_upsilon, 0x03CB, +GDK_KEY_dead_diaeresis, 0x00A8, +GDK_KEY_dead_acute, GDK_KEY_space, 0x0385, +GDK_KEY_dead_acute, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_dead_acute, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_U, 0x1E7A, +GDK_KEY_Multi_key, GDK_KEY_underscore, GDK_KEY_u, 0x1E7B, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_o, 0x1E4F, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_U, 0x1E7A, +GDK_KEY_Multi_key, GDK_KEY_macron, GDK_KEY_u, 0x1E7B, +GDK_KEY_space, 0x00B0, +GDK_KEY_nobreakspace, 0x030A, +GDK_KEY_Aacute, 0x01FA, +GDK_KEY_aacute, 0x01FB, +GDK_KEY_dead_abovering, 0x00B0, +GDK_KEY_space, 0x02DD, +GDK_KEY_nobreakspace, 0x030B, +GDK_KEY_Cyrillic_u, 0x04F3, +GDK_KEY_Cyrillic_U, 0x04F2, +GDK_KEY_dead_doubleacute, 0x02DD, +GDK_KEY_space, 0x02C7, +GDK_KEY_parenleft, 0x208D, +GDK_KEY_parenright, 0x208E, +GDK_KEY_plus, 0x208A, +GDK_KEY_minus, 0x208B, +GDK_KEY_0, 0x2080, +GDK_KEY_1, 0x2081, +GDK_KEY_2, 0x2082, +GDK_KEY_3, 0x2083, +GDK_KEY_4, 0x2084, +GDK_KEY_5, 0x2085, +GDK_KEY_6, 0x2086, +GDK_KEY_7, 0x2087, +GDK_KEY_8, 0x2088, +GDK_KEY_9, 0x2089, +GDK_KEY_equal, 0x208C, +GDK_KEY_V, 0x01D9, +GDK_KEY_v, 0x01DA, +GDK_KEY_nobreakspace, 0x030C, +0x01F2, 0x01C5, +GDK_KEY_dead_caron, 0x02C7, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D9, +GDK_KEY_Multi_key, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DA, +GDK_KEY_space, 0x00B8, +GDK_KEY_nobreakspace, 0x0327, +GDK_KEY_cent, 0x20B5, +GDK_KEY_Cacute, 0x1E08, +GDK_KEY_cacute, 0x1E09, +GDK_KEY_dead_cedilla, 0x00B8, +GDK_KEY_space, 0x02DB, +GDK_KEY_nobreakspace, 0x0328, +GDK_KEY_Omacron, 0x01EC, +GDK_KEY_omacron, 0x01ED, +GDK_KEY_dead_ogonek, 0x02DB, +GDK_KEY_space, 0x037A, +GDK_KEY_Greek_alphaaccent, 0x1FB4, +GDK_KEY_Greek_etaaccent, 0x1FC4, +GDK_KEY_Greek_omegaaccent, 0x1FF4, +GDK_KEY_Greek_ALPHA, 0x1FBC, +GDK_KEY_Greek_ETA, 0x1FCC, +GDK_KEY_Greek_OMEGA, 0x1FFC, +GDK_KEY_Greek_alpha, 0x1FB3, +GDK_KEY_Greek_eta, 0x1FC3, +GDK_KEY_Greek_omega, 0x1FF3, +GDK_KEY_dead_iota, 0x037A, +GDK_KEY_dead_grave, GDK_KEY_Greek_alpha, 0x1FB2, +GDK_KEY_dead_grave, GDK_KEY_Greek_eta, 0x1FC2, +GDK_KEY_dead_grave, GDK_KEY_Greek_omega, 0x1FF2, +GDK_KEY_dead_acute, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_dead_acute, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_dead_acute, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_dead_tilde, GDK_KEY_Greek_alpha, 0x1FB7, +GDK_KEY_dead_tilde, GDK_KEY_Greek_eta, 0x1FC7, +GDK_KEY_dead_tilde, GDK_KEY_Greek_omega, 0x1FF7, +GDK_KEY_dead_tilde, 0x1F00, 0x1F86, +GDK_KEY_dead_tilde, 0x1F01, 0x1F87, +GDK_KEY_dead_tilde, 0x1F08, 0x1F8E, +GDK_KEY_dead_tilde, 0x1F09, 0x1F8F, +GDK_KEY_dead_tilde, 0x1F20, 0x1F96, +GDK_KEY_dead_tilde, 0x1F21, 0x1F97, +GDK_KEY_dead_tilde, 0x1F28, 0x1F9E, +GDK_KEY_dead_tilde, 0x1F29, 0x1F9F, +GDK_KEY_dead_tilde, 0x1F60, 0x1FA6, +GDK_KEY_dead_tilde, 0x1F61, 0x1FA7, +GDK_KEY_dead_tilde, 0x1F68, 0x1FAE, +GDK_KEY_dead_tilde, 0x1F69, 0x1FAF, +GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F88, +GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F98, +GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FA8, +GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F80, +GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F90, +GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA0, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F89, +GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F99, +GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FA9, +GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F81, +GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F91, +GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA1, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F00, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F01, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F08, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F09, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F20, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F21, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F28, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F29, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F60, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F61, 0x1FA5, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F68, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, 0x1F69, 0x1FAD, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F89, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F99, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FA9, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F81, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F91, +GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA1, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F88, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F98, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FA8, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F80, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F90, +GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA0, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_Greek_alpha, 0x1FB2, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_Greek_eta, 0x1FC2, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_Greek_omega, 0x1FF2, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F00, 0x1F82, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F01, 0x1F83, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F08, 0x1F8A, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F09, 0x1F8B, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F20, 0x1F92, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F21, 0x1F93, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F28, 0x1F9A, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F29, 0x1F9B, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F60, 0x1FA2, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F61, 0x1FA3, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F68, 0x1FAA, +GDK_KEY_Multi_key, GDK_KEY_grave, 0x1F69, 0x1FAB, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_Greek_alpha, 0x1FB7, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_Greek_eta, 0x1FC7, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_Greek_omega, 0x1FF7, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F00, 0x1F86, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F01, 0x1F87, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F08, 0x1F8E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F09, 0x1F8F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F20, 0x1F96, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F21, 0x1F97, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F28, 0x1F9E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F29, 0x1F9F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F60, 0x1FA6, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F61, 0x1FA7, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F68, 0x1FAE, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, 0x1F69, 0x1FAF, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F00, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F01, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F08, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F09, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F20, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F21, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F28, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F29, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F60, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F61, 0x1FA5, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F68, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_acute, 0x1F69, 0x1FAD, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_dead_grave, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_dead_acute, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_dead_tilde, GDK_KEY_Multi_key, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Multi_key, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_Multi_key, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Multi_key, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_kana_WO, 0x30FA, +GDK_KEY_kana_U, 0x30F4, +GDK_KEY_kana_KA, 0x30AC, +GDK_KEY_kana_KI, 0x30AE, +GDK_KEY_kana_KU, 0x30B0, +GDK_KEY_kana_KE, 0x30B2, +GDK_KEY_kana_KO, 0x30B4, +GDK_KEY_kana_SA, 0x30B6, +GDK_KEY_kana_SHI, 0x30B8, +GDK_KEY_kana_SU, 0x30BA, +GDK_KEY_kana_SE, 0x30BC, +GDK_KEY_kana_SO, 0x30BE, +GDK_KEY_kana_TA, 0x30C0, +GDK_KEY_kana_CHI, 0x30C2, +GDK_KEY_kana_TSU, 0x30C5, +GDK_KEY_kana_TE, 0x30C7, +GDK_KEY_kana_TO, 0x30C9, +GDK_KEY_kana_HA, 0x30D0, +GDK_KEY_kana_HI, 0x30D3, +GDK_KEY_kana_FU, 0x30D6, +GDK_KEY_kana_HE, 0x30D9, +GDK_KEY_kana_HO, 0x30DC, +GDK_KEY_kana_WA, 0x30F7, +GDK_KEY_kana_HA, 0x30D1, +GDK_KEY_kana_HI, 0x30D4, +GDK_KEY_kana_FU, 0x30D7, +GDK_KEY_kana_HE, 0x30DA, +GDK_KEY_kana_HO, 0x30DD, +GDK_KEY_space, 0x0323, +GDK_KEY_plus, 0x2A25, +GDK_KEY_minus, 0x2A2A, +GDK_KEY_equal, 0x2A66, +GDK_KEY_nobreakspace, 0x0323, +GDK_KEY_Abreve, 0x1EB6, +GDK_KEY_abreve, 0x1EB7, +GDK_KEY_dead_belowdot, 0x0323, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_O, 0x1EE2, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_U, 0x1EF0, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_o, 0x1EE3, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_u, 0x1EF1, +GDK_KEY_space, 0x0309, +GDK_KEY_B, 0x0181, +GDK_KEY_C, 0x0187, +GDK_KEY_D, 0x018A, +GDK_KEY_F, 0x0191, +GDK_KEY_G, 0x0193, +GDK_KEY_K, 0x0198, +GDK_KEY_M, 0x2C6E, +GDK_KEY_N, 0x019D, +GDK_KEY_P, 0x01A4, +GDK_KEY_T, 0x01AC, +GDK_KEY_V, 0x01B2, +GDK_KEY_W, 0x2C72, +GDK_KEY_Z, 0x0224, +GDK_KEY_b, 0x0253, +GDK_KEY_c, 0x0188, +GDK_KEY_d, 0x0257, +GDK_KEY_f, 0x0192, +GDK_KEY_g, 0x0260, +GDK_KEY_h, 0x0266, +GDK_KEY_k, 0x0199, +GDK_KEY_m, 0x0271, +GDK_KEY_n, 0x0272, +GDK_KEY_p, 0x01A5, +GDK_KEY_q, 0x02A0, +GDK_KEY_s, 0x0282, +GDK_KEY_t, 0x01AD, +GDK_KEY_v, 0x028B, +GDK_KEY_w, 0x2C73, +GDK_KEY_z, 0x0225, +GDK_KEY_nobreakspace, 0x0309, +GDK_KEY_Abreve, 0x1EB2, +GDK_KEY_abreve, 0x1EB3, +0x0256, 0x1D91, +0x025C, 0x025D, +0x025F, 0x0284, +0x0279, 0x027B, +GDK_KEY_dead_hook, 0x0309, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_O, 0x1EDE, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_U, 0x1EEC, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_o, 0x1EDF, +GDK_KEY_Multi_key, GDK_KEY_plus, GDK_KEY_u, 0x1EED, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_A, 0x1EB2, +GDK_KEY_Multi_key, GDK_KEY_U, GDK_KEY_a, 0x1EB3, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA8, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC2, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED4, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA9, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC3, +GDK_KEY_Multi_key, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED5, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_A, 0x1EB2, +GDK_KEY_Multi_key, GDK_KEY_b, GDK_KEY_a, 0x1EB3, +GDK_KEY_space, 0x031B, +GDK_KEY_nobreakspace, 0x031B, +GDK_KEY_Utilde, 0x1EEE, +GDK_KEY_utilde, 0x1EEF, +GDK_KEY_dead_horn, 0x031B, +GDK_KEY_Greek_ALPHA, 0x1F08, +GDK_KEY_Greek_EPSILON, 0x1F18, +GDK_KEY_Greek_ETA, 0x1F28, +GDK_KEY_Greek_IOTA, 0x1F38, +GDK_KEY_Greek_OMICRON, 0x1F48, +GDK_KEY_Greek_OMEGA, 0x1F68, +GDK_KEY_Greek_alpha, 0x1F00, +GDK_KEY_Greek_epsilon, 0x1F10, +GDK_KEY_Greek_eta, 0x1F20, +GDK_KEY_Greek_iota, 0x1F30, +GDK_KEY_Greek_omicron, 0x1F40, +GDK_KEY_Greek_rho, 0x1FE4, +GDK_KEY_Greek_upsilon, 0x1F50, +GDK_KEY_Greek_omega, 0x1F60, +GDK_KEY_Greek_ALPHA, 0x1F09, +GDK_KEY_Greek_EPSILON, 0x1F19, +GDK_KEY_Greek_ETA, 0x1F29, +GDK_KEY_Greek_IOTA, 0x1F39, +GDK_KEY_Greek_OMICRON, 0x1F49, +GDK_KEY_Greek_RHO, 0x1FEC, +GDK_KEY_Greek_UPSILON, 0x1F59, +GDK_KEY_Greek_OMEGA, 0x1F69, +GDK_KEY_Greek_alpha, 0x1F01, +GDK_KEY_Greek_epsilon, 0x1F11, +GDK_KEY_Greek_eta, 0x1F21, +GDK_KEY_Greek_iota, 0x1F31, +GDK_KEY_Greek_omicron, 0x1F41, +GDK_KEY_Greek_rho, 0x1FE5, +GDK_KEY_Greek_upsilon, 0x1F51, +GDK_KEY_Greek_omega, 0x1F61, +GDK_KEY_space, GDK_KEY_space, 0x00A0, +GDK_KEY_space, GDK_KEY_apostrophe, 0x0027, +GDK_KEY_space, GDK_KEY_parenleft, 0x02D8, +GDK_KEY_space, GDK_KEY_comma, 0x00B8, +GDK_KEY_space, GDK_KEY_minus, 0x007E, +GDK_KEY_space, GDK_KEY_period, 0x2008, +GDK_KEY_space, GDK_KEY_less, 0x02C7, +GDK_KEY_space, GDK_KEY_greater, 0x005E, +GDK_KEY_space, GDK_KEY_asciicircum, 0x005E, +GDK_KEY_space, GDK_KEY_grave, 0x0060, +GDK_KEY_space, GDK_KEY_asciitilde, 0x007E, +GDK_KEY_exclam, GDK_KEY_exclam, 0x00A1, +GDK_KEY_exclam, GDK_KEY_question, 0x203D, +GDK_KEY_exclam, GDK_KEY_A, 0x1EA0, +GDK_KEY_exclam, GDK_KEY_B, 0x1E04, +GDK_KEY_exclam, GDK_KEY_D, 0x1E0C, +GDK_KEY_exclam, GDK_KEY_E, 0x1EB8, +GDK_KEY_exclam, GDK_KEY_H, 0x1E24, +GDK_KEY_exclam, GDK_KEY_I, 0x1ECA, +GDK_KEY_exclam, GDK_KEY_K, 0x1E32, +GDK_KEY_exclam, GDK_KEY_L, 0x1E36, +GDK_KEY_exclam, GDK_KEY_M, 0x1E42, +GDK_KEY_exclam, GDK_KEY_N, 0x1E46, +GDK_KEY_exclam, GDK_KEY_O, 0x1ECC, +GDK_KEY_exclam, GDK_KEY_P, 0x00B6, +GDK_KEY_exclam, GDK_KEY_R, 0x1E5A, +GDK_KEY_exclam, GDK_KEY_S, 0x1E62, +GDK_KEY_exclam, GDK_KEY_T, 0x1E6C, +GDK_KEY_exclam, GDK_KEY_U, 0x1EE4, +GDK_KEY_exclam, GDK_KEY_V, 0x1E7E, +GDK_KEY_exclam, GDK_KEY_W, 0x1E88, +GDK_KEY_exclam, GDK_KEY_Y, 0x1EF4, +GDK_KEY_exclam, GDK_KEY_Z, 0x1E92, +GDK_KEY_exclam, GDK_KEY_asciicircum, 0x00A6, +GDK_KEY_exclam, GDK_KEY_a, 0x1EA1, +GDK_KEY_exclam, GDK_KEY_b, 0x1E05, +GDK_KEY_exclam, GDK_KEY_d, 0x1E0D, +GDK_KEY_exclam, GDK_KEY_e, 0x1EB9, +GDK_KEY_exclam, GDK_KEY_h, 0x1E25, +GDK_KEY_exclam, GDK_KEY_i, 0x1ECB, +GDK_KEY_exclam, GDK_KEY_k, 0x1E33, +GDK_KEY_exclam, GDK_KEY_l, 0x1E37, +GDK_KEY_exclam, GDK_KEY_m, 0x1E43, +GDK_KEY_exclam, GDK_KEY_n, 0x1E47, +GDK_KEY_exclam, GDK_KEY_o, 0x1ECD, +GDK_KEY_exclam, GDK_KEY_p, 0x00B6, +GDK_KEY_exclam, GDK_KEY_r, 0x1E5B, +GDK_KEY_exclam, GDK_KEY_s, 0x1E63, +GDK_KEY_exclam, GDK_KEY_t, 0x1E6D, +GDK_KEY_exclam, GDK_KEY_u, 0x1EE5, +GDK_KEY_exclam, GDK_KEY_v, 0x1E7F, +GDK_KEY_exclam, GDK_KEY_w, 0x1E89, +GDK_KEY_exclam, GDK_KEY_y, 0x1EF5, +GDK_KEY_exclam, GDK_KEY_z, 0x1E93, +GDK_KEY_quotedbl, GDK_KEY_quotedbl, 0x00A8, +GDK_KEY_quotedbl, GDK_KEY_apostrophe, 0x0344, +GDK_KEY_quotedbl, GDK_KEY_comma, 0x201E, +GDK_KEY_quotedbl, GDK_KEY_slash, 0x301E, +GDK_KEY_quotedbl, GDK_KEY_less, 0x201C, +GDK_KEY_quotedbl, GDK_KEY_greater, 0x201D, +GDK_KEY_quotedbl, GDK_KEY_A, 0x00C4, +GDK_KEY_quotedbl, GDK_KEY_E, 0x00CB, +GDK_KEY_quotedbl, GDK_KEY_H, 0x1E26, +GDK_KEY_quotedbl, GDK_KEY_I, 0x00CF, +GDK_KEY_quotedbl, GDK_KEY_O, 0x00D6, +GDK_KEY_quotedbl, GDK_KEY_U, 0x00DC, +GDK_KEY_quotedbl, GDK_KEY_W, 0x1E84, +GDK_KEY_quotedbl, GDK_KEY_X, 0x1E8C, +GDK_KEY_quotedbl, GDK_KEY_Y, 0x0178, +GDK_KEY_quotedbl, GDK_KEY_backslash, 0x301D, +GDK_KEY_quotedbl, GDK_KEY_a, 0x00E4, +GDK_KEY_quotedbl, GDK_KEY_e, 0x00EB, +GDK_KEY_quotedbl, GDK_KEY_h, 0x1E27, +GDK_KEY_quotedbl, GDK_KEY_i, 0x00EF, +GDK_KEY_quotedbl, GDK_KEY_o, 0x00F6, +GDK_KEY_quotedbl, GDK_KEY_t, 0x1E97, +GDK_KEY_quotedbl, GDK_KEY_u, 0x00FC, +GDK_KEY_quotedbl, GDK_KEY_w, 0x1E85, +GDK_KEY_quotedbl, GDK_KEY_x, 0x1E8D, +GDK_KEY_quotedbl, GDK_KEY_y, 0x00FF, +GDK_KEY_quotedbl, GDK_KEY_acute, 0x0344, +GDK_KEY_quotedbl, GDK_KEY_Otilde, 0x1E4E, +GDK_KEY_quotedbl, GDK_KEY_otilde, 0x1E4F, +GDK_KEY_quotedbl, 0x03D2, 0x03D4, +GDK_KEY_quotedbl, GDK_KEY_Umacron, 0x1E7A, +GDK_KEY_quotedbl, GDK_KEY_umacron, 0x1E7B, +GDK_KEY_quotedbl, 0x04D8, 0x04DA, +GDK_KEY_quotedbl, 0x04D9, 0x04DB, +GDK_KEY_quotedbl, 0x04E8, 0x04EA, +GDK_KEY_quotedbl, 0x04E9, 0x04EB, +GDK_KEY_quotedbl, GDK_KEY_Ukrainian_i, 0x0457, +GDK_KEY_quotedbl, GDK_KEY_Ukrainian_I, 0x0407, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_a, 0x04D3, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_ie, 0x0451, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_i, 0x04E5, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_o, 0x04E7, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_u, 0x04F1, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_zhe, 0x04DD, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_yeru, 0x04F9, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_ze, 0x04DF, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_e, 0x04ED, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_che, 0x04F5, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_A, 0x04D2, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_IE, 0x0401, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_I, 0x04E4, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_O, 0x04E6, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_U, 0x04F0, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_ZHE, 0x04DC, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_YERU, 0x04F8, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_ZE, 0x04DE, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_E, 0x04EC, +GDK_KEY_quotedbl, GDK_KEY_Cyrillic_CHE, 0x04F4, +GDK_KEY_quotedbl, GDK_KEY_Greek_IOTA, 0x03AA, +GDK_KEY_quotedbl, GDK_KEY_Greek_UPSILON, 0x03AB, +GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x03CA, +GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x03CB, +GDK_KEY_quotedbl, GDK_KEY_dead_acute, 0x0344, +GDK_KEY_numbersign, GDK_KEY_numbersign, 0x266F, +GDK_KEY_numbersign, GDK_KEY_b, 0x266D, +GDK_KEY_numbersign, GDK_KEY_f, 0x266E, +GDK_KEY_percent, GDK_KEY_o, 0x2030, +GDK_KEY_apostrophe, GDK_KEY_space, 0x0027, +GDK_KEY_apostrophe, GDK_KEY_apostrophe, 0x00B4, +GDK_KEY_apostrophe, GDK_KEY_comma, 0x201A, +GDK_KEY_apostrophe, GDK_KEY_less, 0x2018, +GDK_KEY_apostrophe, GDK_KEY_greater, 0x2019, +GDK_KEY_apostrophe, GDK_KEY_A, 0x00C1, +GDK_KEY_apostrophe, GDK_KEY_C, 0x0106, +GDK_KEY_apostrophe, GDK_KEY_E, 0x00C9, +GDK_KEY_apostrophe, GDK_KEY_G, 0x01F4, +GDK_KEY_apostrophe, GDK_KEY_I, 0x00CD, +GDK_KEY_apostrophe, GDK_KEY_K, 0x1E30, +GDK_KEY_apostrophe, GDK_KEY_L, 0x0139, +GDK_KEY_apostrophe, GDK_KEY_M, 0x1E3E, +GDK_KEY_apostrophe, GDK_KEY_N, 0x0143, +GDK_KEY_apostrophe, GDK_KEY_O, 0x00D3, +GDK_KEY_apostrophe, GDK_KEY_P, 0x1E54, +GDK_KEY_apostrophe, GDK_KEY_R, 0x0154, +GDK_KEY_apostrophe, GDK_KEY_S, 0x015A, +GDK_KEY_apostrophe, GDK_KEY_U, 0x00DA, +GDK_KEY_apostrophe, GDK_KEY_W, 0x1E82, +GDK_KEY_apostrophe, GDK_KEY_Y, 0x00DD, +GDK_KEY_apostrophe, GDK_KEY_Z, 0x0179, +GDK_KEY_apostrophe, GDK_KEY_a, 0x00E1, +GDK_KEY_apostrophe, GDK_KEY_c, 0x0107, +GDK_KEY_apostrophe, GDK_KEY_e, 0x00E9, +GDK_KEY_apostrophe, GDK_KEY_g, 0x01F5, +GDK_KEY_apostrophe, GDK_KEY_i, 0x00ED, +GDK_KEY_apostrophe, GDK_KEY_k, 0x1E31, +GDK_KEY_apostrophe, GDK_KEY_l, 0x013A, +GDK_KEY_apostrophe, GDK_KEY_m, 0x1E3F, +GDK_KEY_apostrophe, GDK_KEY_n, 0x0144, +GDK_KEY_apostrophe, GDK_KEY_o, 0x00F3, +GDK_KEY_apostrophe, GDK_KEY_p, 0x1E55, +GDK_KEY_apostrophe, GDK_KEY_r, 0x0155, +GDK_KEY_apostrophe, GDK_KEY_s, 0x015B, +GDK_KEY_apostrophe, GDK_KEY_u, 0x00FA, +GDK_KEY_apostrophe, GDK_KEY_w, 0x1E83, +GDK_KEY_apostrophe, GDK_KEY_y, 0x00FD, +GDK_KEY_apostrophe, GDK_KEY_z, 0x017A, +GDK_KEY_apostrophe, GDK_KEY_Acircumflex, 0x1EA4, +GDK_KEY_apostrophe, GDK_KEY_Aring, 0x01FA, +GDK_KEY_apostrophe, GDK_KEY_AE, 0x01FC, +GDK_KEY_apostrophe, GDK_KEY_Ccedilla, 0x1E08, +GDK_KEY_apostrophe, GDK_KEY_Ecircumflex, 0x1EBE, +GDK_KEY_apostrophe, GDK_KEY_Idiaeresis, 0x1E2E, +GDK_KEY_apostrophe, GDK_KEY_Ocircumflex, 0x1ED0, +GDK_KEY_apostrophe, GDK_KEY_Otilde, 0x1E4C, +GDK_KEY_apostrophe, GDK_KEY_Ooblique, 0x01FE, +GDK_KEY_apostrophe, GDK_KEY_Udiaeresis, 0x01D7, +GDK_KEY_apostrophe, GDK_KEY_acircumflex, 0x1EA5, +GDK_KEY_apostrophe, GDK_KEY_aring, 0x01FB, +GDK_KEY_apostrophe, GDK_KEY_ae, 0x01FD, +GDK_KEY_apostrophe, GDK_KEY_ccedilla, 0x1E09, +GDK_KEY_apostrophe, GDK_KEY_ecircumflex, 0x1EBF, +GDK_KEY_apostrophe, GDK_KEY_idiaeresis, 0x1E2F, +GDK_KEY_apostrophe, GDK_KEY_ocircumflex, 0x1ED1, +GDK_KEY_apostrophe, GDK_KEY_otilde, 0x1E4D, +GDK_KEY_apostrophe, GDK_KEY_oslash, 0x01FF, +GDK_KEY_apostrophe, GDK_KEY_udiaeresis, 0x01D8, +GDK_KEY_apostrophe, GDK_KEY_Abreve, 0x1EAE, +GDK_KEY_apostrophe, GDK_KEY_abreve, 0x1EAF, +GDK_KEY_apostrophe, GDK_KEY_Emacron, 0x1E16, +GDK_KEY_apostrophe, GDK_KEY_emacron, 0x1E17, +GDK_KEY_apostrophe, GDK_KEY_Omacron, 0x1E52, +GDK_KEY_apostrophe, GDK_KEY_Utilde, 0x1E78, +GDK_KEY_apostrophe, GDK_KEY_omacron, 0x1E53, +GDK_KEY_apostrophe, GDK_KEY_utilde, 0x1E79, +GDK_KEY_apostrophe, GDK_KEY_Cyrillic_ghe, 0x0453, +GDK_KEY_apostrophe, GDK_KEY_Cyrillic_ka, 0x045C, +GDK_KEY_apostrophe, GDK_KEY_Cyrillic_GHE, 0x0403, +GDK_KEY_apostrophe, GDK_KEY_Cyrillic_KA, 0x040C, +GDK_KEY_apostrophe, GDK_KEY_Greek_iotadieresis, 0x0390, +GDK_KEY_apostrophe, GDK_KEY_Greek_upsilondieresis, 0x03B0, +GDK_KEY_apostrophe, GDK_KEY_Greek_ALPHA, 0x0386, +GDK_KEY_apostrophe, GDK_KEY_Greek_EPSILON, 0x0388, +GDK_KEY_apostrophe, GDK_KEY_Greek_ETA, 0x0389, +GDK_KEY_apostrophe, GDK_KEY_Greek_IOTA, 0x038A, +GDK_KEY_apostrophe, GDK_KEY_Greek_OMICRON, 0x038C, +GDK_KEY_apostrophe, GDK_KEY_Greek_UPSILON, 0x038E, +GDK_KEY_apostrophe, GDK_KEY_Greek_OMEGA, 0x038F, +GDK_KEY_apostrophe, GDK_KEY_Greek_alpha, 0x03AC, +GDK_KEY_apostrophe, GDK_KEY_Greek_epsilon, 0x03AD, +GDK_KEY_apostrophe, GDK_KEY_Greek_eta, 0x03AE, +GDK_KEY_apostrophe, GDK_KEY_Greek_iota, 0x03AF, +GDK_KEY_apostrophe, GDK_KEY_Greek_omicron, 0x03CC, +GDK_KEY_apostrophe, GDK_KEY_Greek_upsilon, 0x03CD, +GDK_KEY_apostrophe, GDK_KEY_Greek_omega, 0x03CE, +GDK_KEY_apostrophe, 0x1F00, 0x1F04, +GDK_KEY_apostrophe, 0x1F01, 0x1F05, +GDK_KEY_apostrophe, 0x1F08, 0x1F0C, +GDK_KEY_apostrophe, 0x1F09, 0x1F0D, +GDK_KEY_apostrophe, 0x1F10, 0x1F14, +GDK_KEY_apostrophe, 0x1F11, 0x1F15, +GDK_KEY_apostrophe, 0x1F18, 0x1F1C, +GDK_KEY_apostrophe, 0x1F19, 0x1F1D, +GDK_KEY_apostrophe, 0x1F20, 0x1F24, +GDK_KEY_apostrophe, 0x1F21, 0x1F25, +GDK_KEY_apostrophe, 0x1F28, 0x1F2C, +GDK_KEY_apostrophe, 0x1F29, 0x1F2D, +GDK_KEY_apostrophe, 0x1F30, 0x1F34, +GDK_KEY_apostrophe, 0x1F31, 0x1F35, +GDK_KEY_apostrophe, 0x1F38, 0x1F3C, +GDK_KEY_apostrophe, 0x1F39, 0x1F3D, +GDK_KEY_apostrophe, 0x1F40, 0x1F44, +GDK_KEY_apostrophe, 0x1F41, 0x1F45, +GDK_KEY_apostrophe, 0x1F48, 0x1F4C, +GDK_KEY_apostrophe, 0x1F49, 0x1F4D, +GDK_KEY_apostrophe, 0x1F50, 0x1F54, +GDK_KEY_apostrophe, 0x1F51, 0x1F55, +GDK_KEY_apostrophe, 0x1F59, 0x1F5D, +GDK_KEY_apostrophe, 0x1F60, 0x1F64, +GDK_KEY_apostrophe, 0x1F61, 0x1F65, +GDK_KEY_apostrophe, 0x1F68, 0x1F6C, +GDK_KEY_apostrophe, 0x1F69, 0x1F6D, +GDK_KEY_parenleft, GDK_KEY_space, 0x02D8, +GDK_KEY_parenleft, GDK_KEY_parenleft, 0x005B, +GDK_KEY_parenleft, GDK_KEY_minus, 0x007B, +GDK_KEY_parenleft, GDK_KEY_A, 0x0102, +GDK_KEY_parenleft, GDK_KEY_G, 0x011E, +GDK_KEY_parenleft, GDK_KEY_a, 0x0103, +GDK_KEY_parenleft, GDK_KEY_c, 0x00A9, +GDK_KEY_parenleft, GDK_KEY_g, 0x011F, +GDK_KEY_parenleft, GDK_KEY_r, 0x00AE, +GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F09, +GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F19, +GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F29, +GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F39, +GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F49, +GDK_KEY_parenleft, GDK_KEY_Greek_RHO, 0x1FEC, +GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F59, +GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F69, +GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F01, +GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F11, +GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F21, +GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F31, +GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F41, +GDK_KEY_parenleft, GDK_KEY_Greek_rho, 0x1FE5, +GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F51, +GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F61, +GDK_KEY_parenright, GDK_KEY_parenright, 0x005D, +GDK_KEY_parenright, GDK_KEY_minus, 0x007D, +GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F08, +GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F18, +GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F28, +GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F38, +GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F48, +GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F68, +GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F00, +GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F10, +GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F20, +GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F30, +GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F40, +GDK_KEY_parenright, GDK_KEY_Greek_rho, 0x1FE4, +GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F50, +GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F60, +GDK_KEY_asterisk, GDK_KEY_0, 0x00B0, +GDK_KEY_asterisk, GDK_KEY_A, 0x00C5, +GDK_KEY_asterisk, GDK_KEY_U, 0x016E, +GDK_KEY_asterisk, GDK_KEY_a, 0x00E5, +GDK_KEY_asterisk, GDK_KEY_u, 0x016F, +GDK_KEY_plus, GDK_KEY_plus, 0x0023, +GDK_KEY_plus, GDK_KEY_minus, 0x00B1, +GDK_KEY_plus, GDK_KEY_O, 0x01A0, +GDK_KEY_plus, GDK_KEY_U, 0x01AF, +GDK_KEY_plus, GDK_KEY_o, 0x01A1, +GDK_KEY_plus, GDK_KEY_u, 0x01B0, +GDK_KEY_comma, GDK_KEY_space, 0x00B8, +GDK_KEY_comma, GDK_KEY_quotedbl, 0x201E, +GDK_KEY_comma, GDK_KEY_apostrophe, 0x201A, +GDK_KEY_comma, GDK_KEY_comma, 0x00B8, +GDK_KEY_comma, GDK_KEY_minus, 0x00AC, +GDK_KEY_comma, GDK_KEY_A, 0x0104, +GDK_KEY_comma, GDK_KEY_C, 0x00C7, +GDK_KEY_comma, GDK_KEY_D, 0x1E10, +GDK_KEY_comma, GDK_KEY_E, 0x0228, +GDK_KEY_comma, GDK_KEY_G, 0x0122, +GDK_KEY_comma, GDK_KEY_H, 0x1E28, +GDK_KEY_comma, GDK_KEY_I, 0x012E, +GDK_KEY_comma, GDK_KEY_K, 0x0136, +GDK_KEY_comma, GDK_KEY_L, 0x013B, +GDK_KEY_comma, GDK_KEY_N, 0x0145, +GDK_KEY_comma, GDK_KEY_R, 0x0156, +GDK_KEY_comma, GDK_KEY_S, 0x015E, +GDK_KEY_comma, GDK_KEY_T, 0x0162, +GDK_KEY_comma, GDK_KEY_U, 0x0172, +GDK_KEY_comma, GDK_KEY_a, 0x0105, +GDK_KEY_comma, GDK_KEY_c, 0x00E7, +GDK_KEY_comma, GDK_KEY_d, 0x1E11, +GDK_KEY_comma, GDK_KEY_e, 0x0229, +GDK_KEY_comma, GDK_KEY_g, 0x0123, +GDK_KEY_comma, GDK_KEY_h, 0x1E29, +GDK_KEY_comma, GDK_KEY_i, 0x012F, +GDK_KEY_comma, GDK_KEY_k, 0x0137, +GDK_KEY_comma, GDK_KEY_l, 0x013C, +GDK_KEY_comma, GDK_KEY_n, 0x0146, +GDK_KEY_comma, GDK_KEY_r, 0x0157, +GDK_KEY_comma, GDK_KEY_s, 0x015F, +GDK_KEY_comma, GDK_KEY_t, 0x0163, +GDK_KEY_comma, GDK_KEY_u, 0x0173, +GDK_KEY_minus, GDK_KEY_space, 0x007E, +GDK_KEY_minus, GDK_KEY_parenleft, 0x007B, +GDK_KEY_minus, GDK_KEY_parenright, 0x007D, +GDK_KEY_minus, GDK_KEY_plus, 0x00B1, +GDK_KEY_minus, GDK_KEY_comma, 0x00AC, +GDK_KEY_minus, GDK_KEY_colon, 0x00F7, +GDK_KEY_minus, GDK_KEY_greater, 0x2192, +GDK_KEY_minus, GDK_KEY_A, 0x00C3, +GDK_KEY_minus, GDK_KEY_D, 0x0110, +GDK_KEY_minus, GDK_KEY_E, 0x0112, +GDK_KEY_minus, GDK_KEY_I, 0x012A, +GDK_KEY_minus, GDK_KEY_L, 0x00A3, +GDK_KEY_minus, GDK_KEY_N, 0x00D1, +GDK_KEY_minus, GDK_KEY_O, 0x00D5, +GDK_KEY_minus, GDK_KEY_U, 0x016A, +GDK_KEY_minus, GDK_KEY_Y, 0x00A5, +GDK_KEY_minus, GDK_KEY_asciicircum, 0x00AF, +GDK_KEY_minus, GDK_KEY_a, 0x0101, +GDK_KEY_minus, GDK_KEY_d, 0x0111, +GDK_KEY_minus, GDK_KEY_e, 0x0113, +GDK_KEY_minus, GDK_KEY_i, 0x012B, +GDK_KEY_minus, GDK_KEY_l, 0x00A3, +GDK_KEY_minus, GDK_KEY_n, 0x00F1, +GDK_KEY_minus, GDK_KEY_o, 0x014D, +GDK_KEY_minus, GDK_KEY_u, 0x016B, +GDK_KEY_minus, GDK_KEY_y, 0x00A5, +GDK_KEY_period, GDK_KEY_minus, 0x00B7, +GDK_KEY_period, GDK_KEY_period, 0x2026, +GDK_KEY_period, GDK_KEY_less, 0x2039, +GDK_KEY_period, GDK_KEY_equal, 0x2022, +GDK_KEY_period, GDK_KEY_greater, 0x203A, +GDK_KEY_period, GDK_KEY_A, 0x0226, +GDK_KEY_period, GDK_KEY_B, 0x1E02, +GDK_KEY_period, GDK_KEY_C, 0x010A, +GDK_KEY_period, GDK_KEY_D, 0x1E0A, +GDK_KEY_period, GDK_KEY_E, 0x0116, +GDK_KEY_period, GDK_KEY_F, 0x1E1E, +GDK_KEY_period, GDK_KEY_G, 0x0120, +GDK_KEY_period, GDK_KEY_H, 0x1E22, +GDK_KEY_period, GDK_KEY_I, 0x0130, +GDK_KEY_period, GDK_KEY_M, 0x1E40, +GDK_KEY_period, GDK_KEY_N, 0x1E44, +GDK_KEY_period, GDK_KEY_O, 0x022E, +GDK_KEY_period, GDK_KEY_P, 0x1E56, +GDK_KEY_period, GDK_KEY_R, 0x1E58, +GDK_KEY_period, GDK_KEY_S, 0x1E60, +GDK_KEY_period, GDK_KEY_T, 0x1E6A, +GDK_KEY_period, GDK_KEY_W, 0x1E86, +GDK_KEY_period, GDK_KEY_X, 0x1E8A, +GDK_KEY_period, GDK_KEY_Y, 0x1E8E, +GDK_KEY_period, GDK_KEY_Z, 0x017B, +GDK_KEY_period, GDK_KEY_asciicircum, 0x00B7, +GDK_KEY_period, GDK_KEY_a, 0x0227, +GDK_KEY_period, GDK_KEY_b, 0x1E03, +GDK_KEY_period, GDK_KEY_c, 0x010B, +GDK_KEY_period, GDK_KEY_d, 0x1E0B, +GDK_KEY_period, GDK_KEY_e, 0x0117, +GDK_KEY_period, GDK_KEY_f, 0x1E1F, +GDK_KEY_period, GDK_KEY_g, 0x0121, +GDK_KEY_period, GDK_KEY_h, 0x1E23, +GDK_KEY_period, GDK_KEY_i, 0x0131, +GDK_KEY_period, GDK_KEY_m, 0x1E41, +GDK_KEY_period, GDK_KEY_n, 0x1E45, +GDK_KEY_period, GDK_KEY_o, 0x022F, +GDK_KEY_period, GDK_KEY_p, 0x1E57, +GDK_KEY_period, GDK_KEY_r, 0x1E59, +GDK_KEY_period, GDK_KEY_s, 0x1E61, +GDK_KEY_period, GDK_KEY_t, 0x1E6B, +GDK_KEY_period, GDK_KEY_w, 0x1E87, +GDK_KEY_period, GDK_KEY_x, 0x1E8B, +GDK_KEY_period, GDK_KEY_y, 0x1E8F, +GDK_KEY_period, GDK_KEY_z, 0x017C, +GDK_KEY_period, 0x017F, 0x1E9B, +GDK_KEY_period, GDK_KEY_Sacute, 0x1E64, +GDK_KEY_period, GDK_KEY_Scaron, 0x1E66, +GDK_KEY_period, GDK_KEY_sacute, 0x1E65, +GDK_KEY_period, GDK_KEY_scaron, 0x1E67, +GDK_KEY_period, 0x1E62, 0x1E68, +GDK_KEY_period, 0x1E63, 0x1E69, +GDK_KEY_slash, GDK_KEY_slash, 0x005C, +GDK_KEY_slash, GDK_KEY_less, 0x005C, +GDK_KEY_slash, GDK_KEY_equal, 0x2260, +GDK_KEY_slash, GDK_KEY_C, 0x20A1, +GDK_KEY_slash, GDK_KEY_D, 0x0110, +GDK_KEY_slash, GDK_KEY_G, 0x01E4, +GDK_KEY_slash, GDK_KEY_H, 0x0126, +GDK_KEY_slash, GDK_KEY_I, 0x0197, +GDK_KEY_slash, GDK_KEY_L, 0x0141, +GDK_KEY_slash, GDK_KEY_O, 0x00D8, +GDK_KEY_slash, GDK_KEY_T, 0x0166, +GDK_KEY_slash, GDK_KEY_U, 0x00B5, +GDK_KEY_slash, GDK_KEY_Z, 0x01B5, +GDK_KEY_slash, GDK_KEY_asciicircum, 0x007C, +GDK_KEY_slash, GDK_KEY_b, 0x0180, +GDK_KEY_slash, GDK_KEY_c, 0x00A2, +GDK_KEY_slash, GDK_KEY_d, 0x0111, +GDK_KEY_slash, GDK_KEY_g, 0x01E5, +GDK_KEY_slash, GDK_KEY_h, 0x0127, +GDK_KEY_slash, GDK_KEY_i, 0x0268, +GDK_KEY_slash, GDK_KEY_l, 0x0142, +GDK_KEY_slash, GDK_KEY_m, 0x20A5, +GDK_KEY_slash, GDK_KEY_o, 0x00F8, +GDK_KEY_slash, GDK_KEY_t, 0x0167, +GDK_KEY_slash, GDK_KEY_u, 0x00B5, +GDK_KEY_slash, GDK_KEY_z, 0x01B6, +GDK_KEY_slash, 0x0294, 0x02A1, +GDK_KEY_slash, 0x04AE, 0x04B0, +GDK_KEY_slash, 0x04AF, 0x04B1, +GDK_KEY_slash, GDK_KEY_Cyrillic_ghe, 0x0493, +GDK_KEY_slash, GDK_KEY_Cyrillic_ka, 0x049F, +GDK_KEY_slash, GDK_KEY_Cyrillic_GHE, 0x0492, +GDK_KEY_slash, GDK_KEY_Cyrillic_KA, 0x049E, +GDK_KEY_slash, GDK_KEY_leftarrow, 0x219A, +GDK_KEY_slash, GDK_KEY_rightarrow, 0x219B, +GDK_KEY_slash, 0x2194, 0x21AE, +GDK_KEY_0, GDK_KEY_asterisk, 0x00B0, +GDK_KEY_0, GDK_KEY_C, 0x00A9, +GDK_KEY_0, GDK_KEY_S, 0x00A7, +GDK_KEY_0, GDK_KEY_X, 0x00A4, +GDK_KEY_0, GDK_KEY_asciicircum, 0x00B0, +GDK_KEY_0, GDK_KEY_c, 0x00A9, +GDK_KEY_0, GDK_KEY_s, 0x00A7, +GDK_KEY_0, GDK_KEY_x, 0x00A4, +GDK_KEY_1, GDK_KEY_2, 0x00BD, +GDK_KEY_1, GDK_KEY_3, 0x2153, +GDK_KEY_1, GDK_KEY_4, 0x00BC, +GDK_KEY_1, GDK_KEY_5, 0x2155, +GDK_KEY_1, GDK_KEY_6, 0x2159, +GDK_KEY_1, GDK_KEY_8, 0x215B, +GDK_KEY_1, GDK_KEY_S, 0x00B9, +GDK_KEY_1, GDK_KEY_asciicircum, 0x00B9, +GDK_KEY_1, GDK_KEY_s, 0x00B9, +GDK_KEY_2, GDK_KEY_3, 0x2154, +GDK_KEY_2, GDK_KEY_5, 0x2156, +GDK_KEY_2, GDK_KEY_S, 0x00B2, +GDK_KEY_2, GDK_KEY_asciicircum, 0x00B2, +GDK_KEY_2, GDK_KEY_s, 0x00B2, +GDK_KEY_3, GDK_KEY_4, 0x00BE, +GDK_KEY_3, GDK_KEY_5, 0x2157, +GDK_KEY_3, GDK_KEY_8, 0x215C, +GDK_KEY_3, GDK_KEY_S, 0x00B3, +GDK_KEY_3, GDK_KEY_asciicircum, 0x00B3, +GDK_KEY_3, GDK_KEY_s, 0x00B3, +GDK_KEY_4, GDK_KEY_5, 0x2158, +GDK_KEY_5, GDK_KEY_6, 0x215A, +GDK_KEY_5, GDK_KEY_8, 0x215D, +GDK_KEY_7, GDK_KEY_8, 0x215E, +GDK_KEY_colon, GDK_KEY_parenleft, 0x2639, +GDK_KEY_colon, GDK_KEY_parenright, 0x263A, +GDK_KEY_colon, GDK_KEY_minus, 0x00F7, +GDK_KEY_semicolon, GDK_KEY_A, 0x0104, +GDK_KEY_semicolon, GDK_KEY_E, 0x0118, +GDK_KEY_semicolon, GDK_KEY_I, 0x012E, +GDK_KEY_semicolon, GDK_KEY_O, 0x01EA, +GDK_KEY_semicolon, GDK_KEY_U, 0x0172, +GDK_KEY_semicolon, GDK_KEY_a, 0x0105, +GDK_KEY_semicolon, GDK_KEY_e, 0x0119, +GDK_KEY_semicolon, GDK_KEY_i, 0x012F, +GDK_KEY_semicolon, GDK_KEY_o, 0x01EB, +GDK_KEY_semicolon, GDK_KEY_u, 0x0173, +GDK_KEY_less, GDK_KEY_space, 0x02C7, +GDK_KEY_less, GDK_KEY_quotedbl, 0x201C, +GDK_KEY_less, GDK_KEY_apostrophe, 0x2018, +GDK_KEY_less, GDK_KEY_minus, 0x2190, +GDK_KEY_less, GDK_KEY_slash, 0x005C, +GDK_KEY_less, GDK_KEY_3, 0x2665, +GDK_KEY_less, GDK_KEY_less, 0x00AB, +GDK_KEY_less, GDK_KEY_equal, 0x2264, +GDK_KEY_less, GDK_KEY_C, 0x010C, +GDK_KEY_less, GDK_KEY_D, 0x010E, +GDK_KEY_less, GDK_KEY_E, 0x011A, +GDK_KEY_less, GDK_KEY_L, 0x013D, +GDK_KEY_less, GDK_KEY_N, 0x0147, +GDK_KEY_less, GDK_KEY_R, 0x0158, +GDK_KEY_less, GDK_KEY_S, 0x0160, +GDK_KEY_less, GDK_KEY_T, 0x0164, +GDK_KEY_less, GDK_KEY_Z, 0x017D, +GDK_KEY_less, GDK_KEY_c, 0x010D, +GDK_KEY_less, GDK_KEY_d, 0x010F, +GDK_KEY_less, GDK_KEY_e, 0x011B, +GDK_KEY_less, GDK_KEY_l, 0x013E, +GDK_KEY_less, GDK_KEY_n, 0x0148, +GDK_KEY_less, GDK_KEY_r, 0x0159, +GDK_KEY_less, GDK_KEY_s, 0x0161, +GDK_KEY_less, GDK_KEY_t, 0x0165, +GDK_KEY_less, GDK_KEY_z, 0x017E, +GDK_KEY_less, 0x0338, 0x226E, +GDK_KEY_equal, GDK_KEY_slash, 0x2260, +GDK_KEY_equal, GDK_KEY_C, 0x20AC, +GDK_KEY_equal, GDK_KEY_E, 0x20AC, +GDK_KEY_equal, GDK_KEY_L, 0x20A4, +GDK_KEY_equal, GDK_KEY_N, 0x20A6, +GDK_KEY_equal, GDK_KEY_O, 0x0150, +GDK_KEY_equal, GDK_KEY_U, 0x0170, +GDK_KEY_equal, GDK_KEY_W, 0x20A9, +GDK_KEY_equal, GDK_KEY_Y, 0x00A5, +GDK_KEY_equal, GDK_KEY_c, 0x20AC, +GDK_KEY_equal, GDK_KEY_e, 0x20AC, +GDK_KEY_equal, GDK_KEY_l, 0x00A3, +GDK_KEY_equal, GDK_KEY_o, 0x0151, +GDK_KEY_equal, GDK_KEY_u, 0x0171, +GDK_KEY_equal, GDK_KEY_y, 0x00A5, +GDK_KEY_equal, 0x0338, 0x2260, +GDK_KEY_equal, GDK_KEY_Cyrillic_u, 0x04F3, +GDK_KEY_equal, GDK_KEY_Cyrillic_IE, 0x20AC, +GDK_KEY_equal, GDK_KEY_Cyrillic_ES, 0x20AC, +GDK_KEY_equal, GDK_KEY_Cyrillic_U, 0x04F2, +GDK_KEY_greater, GDK_KEY_space, 0x005E, +GDK_KEY_greater, GDK_KEY_quotedbl, 0x201D, +GDK_KEY_greater, GDK_KEY_apostrophe, 0x2019, +GDK_KEY_greater, GDK_KEY_equal, 0x2265, +GDK_KEY_greater, GDK_KEY_greater, 0x00BB, +GDK_KEY_greater, GDK_KEY_A, 0x00C2, +GDK_KEY_greater, GDK_KEY_E, 0x00CA, +GDK_KEY_greater, GDK_KEY_I, 0x00CE, +GDK_KEY_greater, GDK_KEY_O, 0x00D4, +GDK_KEY_greater, GDK_KEY_U, 0x00DB, +GDK_KEY_greater, GDK_KEY_a, 0x00E2, +GDK_KEY_greater, GDK_KEY_e, 0x00EA, +GDK_KEY_greater, GDK_KEY_i, 0x00EE, +GDK_KEY_greater, GDK_KEY_o, 0x00F4, +GDK_KEY_greater, GDK_KEY_u, 0x00FB, +GDK_KEY_greater, 0x0338, 0x226F, +GDK_KEY_question, GDK_KEY_exclam, 0x203D, +GDK_KEY_question, GDK_KEY_question, 0x00BF, +GDK_KEY_question, GDK_KEY_A, 0x1EA2, +GDK_KEY_question, GDK_KEY_E, 0x1EBA, +GDK_KEY_question, GDK_KEY_I, 0x1EC8, +GDK_KEY_question, GDK_KEY_O, 0x1ECE, +GDK_KEY_question, GDK_KEY_U, 0x1EE6, +GDK_KEY_question, GDK_KEY_Y, 0x1EF6, +GDK_KEY_question, GDK_KEY_a, 0x1EA3, +GDK_KEY_question, GDK_KEY_e, 0x1EBB, +GDK_KEY_question, GDK_KEY_i, 0x1EC9, +GDK_KEY_question, GDK_KEY_o, 0x1ECF, +GDK_KEY_question, GDK_KEY_u, 0x1EE7, +GDK_KEY_question, GDK_KEY_y, 0x1EF7, +GDK_KEY_question, GDK_KEY_Acircumflex, 0x1EA8, +GDK_KEY_question, GDK_KEY_Ecircumflex, 0x1EC2, +GDK_KEY_question, GDK_KEY_Ocircumflex, 0x1ED4, +GDK_KEY_question, GDK_KEY_acircumflex, 0x1EA9, +GDK_KEY_question, GDK_KEY_ecircumflex, 0x1EC3, +GDK_KEY_question, GDK_KEY_ocircumflex, 0x1ED5, +GDK_KEY_question, GDK_KEY_Abreve, 0x1EB2, +GDK_KEY_question, GDK_KEY_abreve, 0x1EB3, +GDK_KEY_A, GDK_KEY_quotedbl, 0x00C4, +GDK_KEY_A, GDK_KEY_apostrophe, 0x00C1, +GDK_KEY_A, GDK_KEY_parenleft, 0x0102, +GDK_KEY_A, GDK_KEY_asterisk, 0x00C5, +GDK_KEY_A, GDK_KEY_comma, 0x0104, +GDK_KEY_A, GDK_KEY_minus, 0x00C3, +GDK_KEY_A, GDK_KEY_greater, 0x00C2, +GDK_KEY_A, GDK_KEY_A, 0x00C5, +GDK_KEY_A, GDK_KEY_E, 0x00C6, +GDK_KEY_A, GDK_KEY_T, 0x0040, +GDK_KEY_A, GDK_KEY_asciicircum, 0x00C2, +GDK_KEY_A, GDK_KEY_underscore, 0x00AA, +GDK_KEY_A, GDK_KEY_grave, 0x00C0, +GDK_KEY_A, GDK_KEY_asciitilde, 0x00C3, +GDK_KEY_A, GDK_KEY_diaeresis, 0x00C4, +GDK_KEY_A, GDK_KEY_acute, 0x00C1, +GDK_KEY_B, GDK_KEY_period, 0x1E02, +GDK_KEY_C, GDK_KEY_apostrophe, 0x0106, +GDK_KEY_C, GDK_KEY_comma, 0x00C7, +GDK_KEY_C, GDK_KEY_period, 0x010A, +GDK_KEY_C, GDK_KEY_slash, 0x20A1, +GDK_KEY_C, GDK_KEY_0, 0x00A9, +GDK_KEY_C, GDK_KEY_less, 0x010C, +GDK_KEY_C, GDK_KEY_equal, 0x20AC, +GDK_KEY_C, GDK_KEY_E, 0x20A0, +GDK_KEY_C, GDK_KEY_O, 0x00A9, +GDK_KEY_C, GDK_KEY_o, 0x00A9, +GDK_KEY_C, GDK_KEY_r, 0x20A2, +GDK_KEY_C, GDK_KEY_bar, 0x00A2, +GDK_KEY_D, GDK_KEY_minus, 0x0110, +GDK_KEY_D, GDK_KEY_period, 0x1E0A, +GDK_KEY_D, GDK_KEY_less, 0x010E, +GDK_KEY_D, GDK_KEY_H, 0x00D0, +GDK_KEY_E, GDK_KEY_quotedbl, 0x00CB, +GDK_KEY_E, GDK_KEY_apostrophe, 0x00C9, +GDK_KEY_E, GDK_KEY_comma, 0x0118, +GDK_KEY_E, GDK_KEY_minus, 0x0112, +GDK_KEY_E, GDK_KEY_period, 0x0116, +GDK_KEY_E, GDK_KEY_less, 0x011A, +GDK_KEY_E, GDK_KEY_equal, 0x20AC, +GDK_KEY_E, GDK_KEY_greater, 0x00CA, +GDK_KEY_E, GDK_KEY_asciicircum, 0x00CA, +GDK_KEY_E, GDK_KEY_underscore, 0x0112, +GDK_KEY_E, GDK_KEY_grave, 0x00C8, +GDK_KEY_E, GDK_KEY_diaeresis, 0x00CB, +GDK_KEY_E, GDK_KEY_acute, 0x00C9, +GDK_KEY_F, GDK_KEY_period, 0x1E1E, +GDK_KEY_F, GDK_KEY_r, 0x20A3, +GDK_KEY_G, GDK_KEY_parenleft, 0x011E, +GDK_KEY_G, GDK_KEY_comma, 0x0122, +GDK_KEY_G, GDK_KEY_period, 0x0120, +GDK_KEY_G, GDK_KEY_U, 0x011E, +GDK_KEY_G, GDK_KEY_breve, 0x011E, +GDK_KEY_I, GDK_KEY_quotedbl, 0x00CF, +GDK_KEY_I, GDK_KEY_apostrophe, 0x00CD, +GDK_KEY_I, GDK_KEY_comma, 0x012E, +GDK_KEY_I, GDK_KEY_minus, 0x012A, +GDK_KEY_I, GDK_KEY_period, 0x0130, +GDK_KEY_I, GDK_KEY_greater, 0x00CE, +GDK_KEY_I, GDK_KEY_asciicircum, 0x00CE, +GDK_KEY_I, GDK_KEY_underscore, 0x012A, +GDK_KEY_I, GDK_KEY_grave, 0x00CC, +GDK_KEY_I, GDK_KEY_asciitilde, 0x0128, +GDK_KEY_I, GDK_KEY_diaeresis, 0x00CF, +GDK_KEY_I, GDK_KEY_acute, 0x00CD, +GDK_KEY_K, GDK_KEY_comma, 0x0136, +GDK_KEY_L, GDK_KEY_apostrophe, 0x0139, +GDK_KEY_L, GDK_KEY_comma, 0x013B, +GDK_KEY_L, GDK_KEY_minus, 0x00A3, +GDK_KEY_L, GDK_KEY_slash, 0x0141, +GDK_KEY_L, GDK_KEY_less, 0x013D, +GDK_KEY_L, GDK_KEY_equal, 0x00A3, +GDK_KEY_L, GDK_KEY_V, 0x007C, +GDK_KEY_M, GDK_KEY_period, 0x1E40, +GDK_KEY_N, GDK_KEY_apostrophe, 0x0143, +GDK_KEY_N, GDK_KEY_comma, 0x0145, +GDK_KEY_N, GDK_KEY_minus, 0x00D1, +GDK_KEY_N, GDK_KEY_less, 0x0147, +GDK_KEY_N, GDK_KEY_equal, 0x20A6, +GDK_KEY_N, GDK_KEY_G, 0x014A, +GDK_KEY_N, GDK_KEY_O, 0x2116, +GDK_KEY_N, GDK_KEY_o, 0x2116, +GDK_KEY_N, GDK_KEY_asciitilde, 0x00D1, +GDK_KEY_O, GDK_KEY_quotedbl, 0x00D6, +GDK_KEY_O, GDK_KEY_apostrophe, 0x00D3, +GDK_KEY_O, GDK_KEY_minus, 0x00D5, +GDK_KEY_O, GDK_KEY_slash, 0x00D8, +GDK_KEY_O, GDK_KEY_greater, 0x00D4, +GDK_KEY_O, GDK_KEY_C, 0x00A9, +GDK_KEY_O, GDK_KEY_E, 0x0152, +GDK_KEY_O, GDK_KEY_R, 0x00AE, +GDK_KEY_O, GDK_KEY_S, 0x00A7, +GDK_KEY_O, GDK_KEY_X, 0x00A4, +GDK_KEY_O, GDK_KEY_asciicircum, 0x00D4, +GDK_KEY_O, GDK_KEY_underscore, 0x00BA, +GDK_KEY_O, GDK_KEY_grave, 0x00D2, +GDK_KEY_O, GDK_KEY_c, 0x00A9, +GDK_KEY_O, GDK_KEY_r, 0x00AE, +GDK_KEY_O, GDK_KEY_x, 0x00A4, +GDK_KEY_O, GDK_KEY_asciitilde, 0x00D5, +GDK_KEY_O, GDK_KEY_diaeresis, 0x00D6, +GDK_KEY_O, GDK_KEY_acute, 0x00D3, +GDK_KEY_P, GDK_KEY_exclam, 0x00B6, +GDK_KEY_P, GDK_KEY_period, 0x1E56, +GDK_KEY_P, GDK_KEY_P, 0x00B6, +GDK_KEY_P, GDK_KEY_t, 0x20A7, +GDK_KEY_R, GDK_KEY_apostrophe, 0x0154, +GDK_KEY_R, GDK_KEY_comma, 0x0156, +GDK_KEY_R, GDK_KEY_less, 0x0158, +GDK_KEY_R, GDK_KEY_O, 0x00AE, +GDK_KEY_R, GDK_KEY_s, 0x20A8, +GDK_KEY_S, GDK_KEY_exclam, 0x00A7, +GDK_KEY_S, GDK_KEY_apostrophe, 0x015A, +GDK_KEY_S, GDK_KEY_comma, 0x015E, +GDK_KEY_S, GDK_KEY_period, 0x1E60, +GDK_KEY_S, GDK_KEY_0, 0x00A7, +GDK_KEY_S, GDK_KEY_1, 0x00B9, +GDK_KEY_S, GDK_KEY_2, 0x00B2, +GDK_KEY_S, GDK_KEY_3, 0x00B3, +GDK_KEY_S, GDK_KEY_less, 0x0160, +GDK_KEY_S, GDK_KEY_M, 0x2120, +GDK_KEY_S, GDK_KEY_O, 0x00A7, +GDK_KEY_S, GDK_KEY_m, 0x2120, +GDK_KEY_S, GDK_KEY_cedilla, 0x015E, +GDK_KEY_T, GDK_KEY_minus, 0x0166, +GDK_KEY_T, GDK_KEY_period, 0x1E6A, +GDK_KEY_T, GDK_KEY_slash, 0x0166, +GDK_KEY_T, GDK_KEY_less, 0x0164, +GDK_KEY_T, GDK_KEY_H, 0x00DE, +GDK_KEY_T, GDK_KEY_M, 0x2122, +GDK_KEY_T, GDK_KEY_m, 0x2122, +GDK_KEY_U, GDK_KEY_quotedbl, 0x00DC, +GDK_KEY_U, GDK_KEY_apostrophe, 0x00DA, +GDK_KEY_U, GDK_KEY_asterisk, 0x016E, +GDK_KEY_U, GDK_KEY_comma, 0x0172, +GDK_KEY_U, GDK_KEY_minus, 0x016A, +GDK_KEY_U, GDK_KEY_slash, 0x00B5, +GDK_KEY_U, GDK_KEY_greater, 0x00DB, +GDK_KEY_U, GDK_KEY_A, 0x0102, +GDK_KEY_U, GDK_KEY_E, 0x0114, +GDK_KEY_U, GDK_KEY_G, 0x011E, +GDK_KEY_U, GDK_KEY_I, 0x012C, +GDK_KEY_U, GDK_KEY_O, 0x014E, +GDK_KEY_U, GDK_KEY_U, 0x016C, +GDK_KEY_U, GDK_KEY_asciicircum, 0x00DB, +GDK_KEY_U, GDK_KEY_underscore, 0x016A, +GDK_KEY_U, GDK_KEY_grave, 0x00D9, +GDK_KEY_U, GDK_KEY_a, 0x0103, +GDK_KEY_U, GDK_KEY_e, 0x0115, +GDK_KEY_U, GDK_KEY_g, 0x011F, +GDK_KEY_U, GDK_KEY_i, 0x012D, +GDK_KEY_U, GDK_KEY_o, 0x014F, +GDK_KEY_U, GDK_KEY_u, 0x016D, +GDK_KEY_U, GDK_KEY_asciitilde, 0x0168, +GDK_KEY_U, GDK_KEY_diaeresis, 0x00DC, +GDK_KEY_U, GDK_KEY_acute, 0x00DA, +GDK_KEY_U, 0x0228, 0x1E1C, +GDK_KEY_U, 0x0229, 0x1E1D, +GDK_KEY_U, GDK_KEY_Cyrillic_a, 0x04D1, +GDK_KEY_U, GDK_KEY_Cyrillic_ie, 0x04D7, +GDK_KEY_U, GDK_KEY_Cyrillic_i, 0x0439, +GDK_KEY_U, GDK_KEY_Cyrillic_u, 0x045E, +GDK_KEY_U, GDK_KEY_Cyrillic_zhe, 0x04C2, +GDK_KEY_U, GDK_KEY_Cyrillic_A, 0x04D0, +GDK_KEY_U, GDK_KEY_Cyrillic_IE, 0x04D6, +GDK_KEY_U, GDK_KEY_Cyrillic_I, 0x0419, +GDK_KEY_U, GDK_KEY_Cyrillic_U, 0x040E, +GDK_KEY_U, GDK_KEY_Cyrillic_ZHE, 0x04C1, +GDK_KEY_U, GDK_KEY_Greek_ALPHA, 0x1FB8, +GDK_KEY_U, GDK_KEY_Greek_IOTA, 0x1FD8, +GDK_KEY_U, GDK_KEY_Greek_UPSILON, 0x1FE8, +GDK_KEY_U, GDK_KEY_Greek_alpha, 0x1FB0, +GDK_KEY_U, GDK_KEY_Greek_iota, 0x1FD0, +GDK_KEY_U, GDK_KEY_Greek_upsilon, 0x1FE0, +GDK_KEY_U, 0x1EA0, 0x1EB6, +GDK_KEY_U, 0x1EA1, 0x1EB7, +GDK_KEY_V, GDK_KEY_L, 0x007C, +GDK_KEY_W, GDK_KEY_equal, 0x20A9, +GDK_KEY_W, GDK_KEY_asciicircum, 0x0174, +GDK_KEY_X, GDK_KEY_0, 0x00A4, +GDK_KEY_X, GDK_KEY_O, 0x00A4, +GDK_KEY_X, GDK_KEY_o, 0x00A4, +GDK_KEY_Y, GDK_KEY_quotedbl, 0x0178, +GDK_KEY_Y, GDK_KEY_apostrophe, 0x00DD, +GDK_KEY_Y, GDK_KEY_minus, 0x00A5, +GDK_KEY_Y, GDK_KEY_equal, 0x00A5, +GDK_KEY_Y, GDK_KEY_asciicircum, 0x0176, +GDK_KEY_Y, GDK_KEY_diaeresis, 0x0178, +GDK_KEY_Y, GDK_KEY_acute, 0x00DD, +GDK_KEY_Z, GDK_KEY_apostrophe, 0x0179, +GDK_KEY_Z, GDK_KEY_period, 0x017B, +GDK_KEY_Z, GDK_KEY_less, 0x017D, +GDK_KEY_asciicircum, GDK_KEY_space, 0x005E, +GDK_KEY_asciicircum, GDK_KEY_parenleft, 0x207D, +GDK_KEY_asciicircum, GDK_KEY_parenright, 0x207E, +GDK_KEY_asciicircum, GDK_KEY_plus, 0x207A, +GDK_KEY_asciicircum, GDK_KEY_minus, 0x00AF, +GDK_KEY_asciicircum, GDK_KEY_period, 0x00B7, +GDK_KEY_asciicircum, GDK_KEY_slash, 0x007C, +GDK_KEY_asciicircum, GDK_KEY_0, 0x2070, +GDK_KEY_asciicircum, GDK_KEY_1, 0x00B9, +GDK_KEY_asciicircum, GDK_KEY_2, 0x00B2, +GDK_KEY_asciicircum, GDK_KEY_3, 0x00B3, +GDK_KEY_asciicircum, GDK_KEY_4, 0x2074, +GDK_KEY_asciicircum, GDK_KEY_5, 0x2075, +GDK_KEY_asciicircum, GDK_KEY_6, 0x2076, +GDK_KEY_asciicircum, GDK_KEY_7, 0x2077, +GDK_KEY_asciicircum, GDK_KEY_8, 0x2078, +GDK_KEY_asciicircum, GDK_KEY_9, 0x2079, +GDK_KEY_asciicircum, GDK_KEY_equal, 0x207C, +GDK_KEY_asciicircum, GDK_KEY_A, 0x00C2, +GDK_KEY_asciicircum, GDK_KEY_C, 0x0108, +GDK_KEY_asciicircum, GDK_KEY_E, 0x00CA, +GDK_KEY_asciicircum, GDK_KEY_G, 0x011C, +GDK_KEY_asciicircum, GDK_KEY_H, 0x0124, +GDK_KEY_asciicircum, GDK_KEY_I, 0x00CE, +GDK_KEY_asciicircum, GDK_KEY_J, 0x0134, +GDK_KEY_asciicircum, GDK_KEY_O, 0x00D4, +GDK_KEY_asciicircum, GDK_KEY_S, 0x015C, +GDK_KEY_asciicircum, GDK_KEY_U, 0x00DB, +GDK_KEY_asciicircum, GDK_KEY_W, 0x0174, +GDK_KEY_asciicircum, GDK_KEY_Y, 0x0176, +GDK_KEY_asciicircum, GDK_KEY_Z, 0x1E90, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x00AF, +GDK_KEY_asciicircum, GDK_KEY_a, 0x00E2, +GDK_KEY_asciicircum, GDK_KEY_c, 0x0109, +GDK_KEY_asciicircum, GDK_KEY_e, 0x00EA, +GDK_KEY_asciicircum, GDK_KEY_g, 0x011D, +GDK_KEY_asciicircum, GDK_KEY_h, 0x0125, +GDK_KEY_asciicircum, GDK_KEY_i, 0x00EE, +GDK_KEY_asciicircum, GDK_KEY_j, 0x0135, +GDK_KEY_asciicircum, GDK_KEY_o, 0x00F4, +GDK_KEY_asciicircum, GDK_KEY_s, 0x015D, +GDK_KEY_asciicircum, GDK_KEY_u, 0x00FB, +GDK_KEY_asciicircum, GDK_KEY_w, 0x0175, +GDK_KEY_asciicircum, GDK_KEY_y, 0x0177, +GDK_KEY_asciicircum, GDK_KEY_z, 0x1E91, +GDK_KEY_asciicircum, 0x1EA0, 0x1EAC, +GDK_KEY_asciicircum, 0x1EA1, 0x1EAD, +GDK_KEY_asciicircum, 0x1EB8, 0x1EC6, +GDK_KEY_asciicircum, 0x1EB9, 0x1EC7, +GDK_KEY_asciicircum, 0x1ECC, 0x1ED8, +GDK_KEY_asciicircum, 0x1ECD, 0x1ED9, +GDK_KEY_asciicircum, 0x2212, 0x207B, +GDK_KEY_asciicircum, 0x4E00, 0x3192, +GDK_KEY_asciicircum, 0x4E01, 0x319C, +GDK_KEY_asciicircum, 0x4E09, 0x3194, +GDK_KEY_asciicircum, 0x4E0A, 0x3196, +GDK_KEY_asciicircum, 0x4E0B, 0x3198, +GDK_KEY_asciicircum, 0x4E19, 0x319B, +GDK_KEY_asciicircum, 0x4E2D, 0x3197, +GDK_KEY_asciicircum, 0x4E59, 0x319A, +GDK_KEY_asciicircum, 0x4E8C, 0x3193, +GDK_KEY_asciicircum, 0x4EBA, 0x319F, +GDK_KEY_asciicircum, 0x56DB, 0x3195, +GDK_KEY_asciicircum, 0x5730, 0x319E, +GDK_KEY_asciicircum, 0x5929, 0x319D, +GDK_KEY_asciicircum, 0x7532, 0x3199, +GDK_KEY_asciicircum, GDK_KEY_KP_Space, 0x00B2, +GDK_KEY_asciicircum, GDK_KEY_KP_Add, 0x207A, +GDK_KEY_asciicircum, GDK_KEY_KP_0, 0x2070, +GDK_KEY_asciicircum, GDK_KEY_KP_1, 0x00B9, +GDK_KEY_asciicircum, GDK_KEY_KP_2, 0x00B2, +GDK_KEY_asciicircum, GDK_KEY_KP_3, 0x00B3, +GDK_KEY_asciicircum, GDK_KEY_KP_4, 0x2074, +GDK_KEY_asciicircum, GDK_KEY_KP_5, 0x2075, +GDK_KEY_asciicircum, GDK_KEY_KP_6, 0x2076, +GDK_KEY_asciicircum, GDK_KEY_KP_7, 0x2077, +GDK_KEY_asciicircum, GDK_KEY_KP_8, 0x2078, +GDK_KEY_asciicircum, GDK_KEY_KP_9, 0x2079, +GDK_KEY_asciicircum, GDK_KEY_KP_Equal, 0x207C, +GDK_KEY_underscore, GDK_KEY_parenleft, 0x208D, +GDK_KEY_underscore, GDK_KEY_parenright, 0x208E, +GDK_KEY_underscore, GDK_KEY_plus, 0x208A, +GDK_KEY_underscore, GDK_KEY_0, 0x2080, +GDK_KEY_underscore, GDK_KEY_1, 0x2081, +GDK_KEY_underscore, GDK_KEY_2, 0x2082, +GDK_KEY_underscore, GDK_KEY_3, 0x2083, +GDK_KEY_underscore, GDK_KEY_4, 0x2084, +GDK_KEY_underscore, GDK_KEY_5, 0x2085, +GDK_KEY_underscore, GDK_KEY_6, 0x2086, +GDK_KEY_underscore, GDK_KEY_7, 0x2087, +GDK_KEY_underscore, GDK_KEY_8, 0x2088, +GDK_KEY_underscore, GDK_KEY_9, 0x2089, +GDK_KEY_underscore, GDK_KEY_equal, 0x208C, +GDK_KEY_underscore, GDK_KEY_A, 0x0100, +GDK_KEY_underscore, GDK_KEY_E, 0x0112, +GDK_KEY_underscore, GDK_KEY_G, 0x1E20, +GDK_KEY_underscore, GDK_KEY_I, 0x012A, +GDK_KEY_underscore, GDK_KEY_O, 0x014C, +GDK_KEY_underscore, GDK_KEY_U, 0x016A, +GDK_KEY_underscore, GDK_KEY_Y, 0x0232, +GDK_KEY_underscore, GDK_KEY_asciicircum, 0x00AF, +GDK_KEY_underscore, GDK_KEY_underscore, 0x00AF, +GDK_KEY_underscore, GDK_KEY_a, 0x0101, +GDK_KEY_underscore, GDK_KEY_e, 0x0113, +GDK_KEY_underscore, GDK_KEY_g, 0x1E21, +GDK_KEY_underscore, GDK_KEY_i, 0x012B, +GDK_KEY_underscore, GDK_KEY_o, 0x014D, +GDK_KEY_underscore, GDK_KEY_u, 0x016B, +GDK_KEY_underscore, GDK_KEY_y, 0x0233, +GDK_KEY_underscore, GDK_KEY_Adiaeresis, 0x01DE, +GDK_KEY_underscore, GDK_KEY_AE, 0x01E2, +GDK_KEY_underscore, GDK_KEY_Otilde, 0x022C, +GDK_KEY_underscore, GDK_KEY_Odiaeresis, 0x022A, +GDK_KEY_underscore, GDK_KEY_Udiaeresis, 0x01D5, +GDK_KEY_underscore, GDK_KEY_adiaeresis, 0x01DF, +GDK_KEY_underscore, GDK_KEY_ae, 0x01E3, +GDK_KEY_underscore, GDK_KEY_otilde, 0x022D, +GDK_KEY_underscore, GDK_KEY_odiaeresis, 0x022B, +GDK_KEY_underscore, GDK_KEY_udiaeresis, 0x01D6, +GDK_KEY_underscore, 0x01EA, 0x01EC, +GDK_KEY_underscore, 0x01EB, 0x01ED, +GDK_KEY_underscore, 0x0226, 0x01E0, +GDK_KEY_underscore, 0x0227, 0x01E1, +GDK_KEY_underscore, 0x022E, 0x0230, +GDK_KEY_underscore, 0x022F, 0x0231, +GDK_KEY_underscore, GDK_KEY_Cyrillic_i, 0x04E3, +GDK_KEY_underscore, GDK_KEY_Cyrillic_u, 0x04EF, +GDK_KEY_underscore, GDK_KEY_Cyrillic_I, 0x04E2, +GDK_KEY_underscore, GDK_KEY_Cyrillic_U, 0x04EE, +GDK_KEY_underscore, GDK_KEY_Greek_ALPHA, 0x1FB9, +GDK_KEY_underscore, GDK_KEY_Greek_IOTA, 0x1FD9, +GDK_KEY_underscore, GDK_KEY_Greek_UPSILON, 0x1FE9, +GDK_KEY_underscore, GDK_KEY_Greek_alpha, 0x1FB1, +GDK_KEY_underscore, GDK_KEY_Greek_iota, 0x1FD1, +GDK_KEY_underscore, GDK_KEY_Greek_upsilon, 0x1FE1, +GDK_KEY_underscore, 0x1E36, 0x1E38, +GDK_KEY_underscore, 0x1E37, 0x1E39, +GDK_KEY_underscore, 0x1E5A, 0x1E5C, +GDK_KEY_underscore, 0x1E5B, 0x1E5D, +GDK_KEY_underscore, 0x2212, 0x208B, +GDK_KEY_underscore, GDK_KEY_KP_Space, 0x2082, +GDK_KEY_underscore, GDK_KEY_KP_Add, 0x208A, +GDK_KEY_underscore, GDK_KEY_KP_0, 0x2080, +GDK_KEY_underscore, GDK_KEY_KP_1, 0x2081, +GDK_KEY_underscore, GDK_KEY_KP_2, 0x2082, +GDK_KEY_underscore, GDK_KEY_KP_3, 0x2083, +GDK_KEY_underscore, GDK_KEY_KP_4, 0x2084, +GDK_KEY_underscore, GDK_KEY_KP_5, 0x2085, +GDK_KEY_underscore, GDK_KEY_KP_6, 0x2086, +GDK_KEY_underscore, GDK_KEY_KP_7, 0x2087, +GDK_KEY_underscore, GDK_KEY_KP_8, 0x2088, +GDK_KEY_underscore, GDK_KEY_KP_9, 0x2089, +GDK_KEY_underscore, GDK_KEY_KP_Equal, 0x208C, +GDK_KEY_grave, GDK_KEY_space, 0x0060, +GDK_KEY_grave, GDK_KEY_A, 0x00C0, +GDK_KEY_grave, GDK_KEY_E, 0x00C8, +GDK_KEY_grave, GDK_KEY_I, 0x00CC, +GDK_KEY_grave, GDK_KEY_N, 0x01F8, +GDK_KEY_grave, GDK_KEY_O, 0x00D2, +GDK_KEY_grave, GDK_KEY_U, 0x00D9, +GDK_KEY_grave, GDK_KEY_W, 0x1E80, +GDK_KEY_grave, GDK_KEY_Y, 0x1EF2, +GDK_KEY_grave, GDK_KEY_a, 0x00E0, +GDK_KEY_grave, GDK_KEY_e, 0x00E8, +GDK_KEY_grave, GDK_KEY_i, 0x00EC, +GDK_KEY_grave, GDK_KEY_n, 0x01F9, +GDK_KEY_grave, GDK_KEY_o, 0x00F2, +GDK_KEY_grave, GDK_KEY_u, 0x00F9, +GDK_KEY_grave, GDK_KEY_w, 0x1E81, +GDK_KEY_grave, GDK_KEY_y, 0x1EF3, +GDK_KEY_grave, GDK_KEY_Acircumflex, 0x1EA6, +GDK_KEY_grave, GDK_KEY_Ecircumflex, 0x1EC0, +GDK_KEY_grave, GDK_KEY_Ocircumflex, 0x1ED2, +GDK_KEY_grave, GDK_KEY_Udiaeresis, 0x01DB, +GDK_KEY_grave, GDK_KEY_acircumflex, 0x1EA7, +GDK_KEY_grave, GDK_KEY_ecircumflex, 0x1EC1, +GDK_KEY_grave, GDK_KEY_ocircumflex, 0x1ED3, +GDK_KEY_grave, GDK_KEY_udiaeresis, 0x01DC, +GDK_KEY_grave, GDK_KEY_Abreve, 0x1EB0, +GDK_KEY_grave, GDK_KEY_abreve, 0x1EB1, +GDK_KEY_grave, GDK_KEY_Emacron, 0x1E14, +GDK_KEY_grave, GDK_KEY_emacron, 0x1E15, +GDK_KEY_grave, GDK_KEY_Omacron, 0x1E50, +GDK_KEY_grave, GDK_KEY_omacron, 0x1E51, +GDK_KEY_grave, GDK_KEY_Cyrillic_ie, 0x0450, +GDK_KEY_grave, GDK_KEY_Cyrillic_i, 0x045D, +GDK_KEY_grave, GDK_KEY_Cyrillic_IE, 0x0400, +GDK_KEY_grave, GDK_KEY_Cyrillic_I, 0x040D, +GDK_KEY_grave, GDK_KEY_Greek_iotadieresis, 0x1FD2, +GDK_KEY_grave, GDK_KEY_Greek_upsilondieresis, 0x1FE2, +GDK_KEY_grave, GDK_KEY_Greek_ALPHA, 0x1FBA, +GDK_KEY_grave, GDK_KEY_Greek_EPSILON, 0x1FC8, +GDK_KEY_grave, GDK_KEY_Greek_ETA, 0x1FCA, +GDK_KEY_grave, GDK_KEY_Greek_IOTA, 0x1FDA, +GDK_KEY_grave, GDK_KEY_Greek_OMICRON, 0x1FF8, +GDK_KEY_grave, GDK_KEY_Greek_UPSILON, 0x1FEA, +GDK_KEY_grave, GDK_KEY_Greek_OMEGA, 0x1FFA, +GDK_KEY_grave, GDK_KEY_Greek_alpha, 0x1F70, +GDK_KEY_grave, GDK_KEY_Greek_epsilon, 0x1F72, +GDK_KEY_grave, GDK_KEY_Greek_eta, 0x1F74, +GDK_KEY_grave, GDK_KEY_Greek_iota, 0x1F76, +GDK_KEY_grave, GDK_KEY_Greek_omicron, 0x1F78, +GDK_KEY_grave, GDK_KEY_Greek_upsilon, 0x1F7A, +GDK_KEY_grave, GDK_KEY_Greek_omega, 0x1F7C, +GDK_KEY_grave, 0x1F00, 0x1F02, +GDK_KEY_grave, 0x1F01, 0x1F03, +GDK_KEY_grave, 0x1F08, 0x1F0A, +GDK_KEY_grave, 0x1F09, 0x1F0B, +GDK_KEY_grave, 0x1F10, 0x1F12, +GDK_KEY_grave, 0x1F11, 0x1F13, +GDK_KEY_grave, 0x1F18, 0x1F1A, +GDK_KEY_grave, 0x1F19, 0x1F1B, +GDK_KEY_grave, 0x1F20, 0x1F22, +GDK_KEY_grave, 0x1F21, 0x1F23, +GDK_KEY_grave, 0x1F28, 0x1F2A, +GDK_KEY_grave, 0x1F29, 0x1F2B, +GDK_KEY_grave, 0x1F30, 0x1F32, +GDK_KEY_grave, 0x1F31, 0x1F33, +GDK_KEY_grave, 0x1F38, 0x1F3A, +GDK_KEY_grave, 0x1F39, 0x1F3B, +GDK_KEY_grave, 0x1F40, 0x1F42, +GDK_KEY_grave, 0x1F41, 0x1F43, +GDK_KEY_grave, 0x1F48, 0x1F4A, +GDK_KEY_grave, 0x1F49, 0x1F4B, +GDK_KEY_grave, 0x1F50, 0x1F52, +GDK_KEY_grave, 0x1F51, 0x1F53, +GDK_KEY_grave, 0x1F59, 0x1F5B, +GDK_KEY_grave, 0x1F60, 0x1F62, +GDK_KEY_grave, 0x1F61, 0x1F63, +GDK_KEY_grave, 0x1F68, 0x1F6A, +GDK_KEY_grave, 0x1F69, 0x1F6B, +GDK_KEY_a, GDK_KEY_quotedbl, 0x00E4, +GDK_KEY_a, GDK_KEY_apostrophe, 0x00E1, +GDK_KEY_a, GDK_KEY_parenleft, 0x0103, +GDK_KEY_a, GDK_KEY_asterisk, 0x00E5, +GDK_KEY_a, GDK_KEY_comma, 0x0105, +GDK_KEY_a, GDK_KEY_minus, 0x0101, +GDK_KEY_a, GDK_KEY_greater, 0x00E2, +GDK_KEY_a, GDK_KEY_asciicircum, 0x00E2, +GDK_KEY_a, GDK_KEY_underscore, 0x00AA, +GDK_KEY_a, GDK_KEY_grave, 0x00E0, +GDK_KEY_a, GDK_KEY_a, 0x00E5, +GDK_KEY_a, GDK_KEY_e, 0x00E6, +GDK_KEY_a, GDK_KEY_asciitilde, 0x00E3, +GDK_KEY_a, GDK_KEY_diaeresis, 0x00E4, +GDK_KEY_a, GDK_KEY_acute, 0x00E1, +GDK_KEY_b, GDK_KEY_period, 0x1E03, +GDK_KEY_b, GDK_KEY_A, 0x0102, +GDK_KEY_b, GDK_KEY_E, 0x0114, +GDK_KEY_b, GDK_KEY_G, 0x011E, +GDK_KEY_b, GDK_KEY_I, 0x012C, +GDK_KEY_b, GDK_KEY_O, 0x014E, +GDK_KEY_b, GDK_KEY_U, 0x016C, +GDK_KEY_b, GDK_KEY_a, 0x0103, +GDK_KEY_b, GDK_KEY_e, 0x0115, +GDK_KEY_b, GDK_KEY_g, 0x011F, +GDK_KEY_b, GDK_KEY_i, 0x012D, +GDK_KEY_b, GDK_KEY_o, 0x014F, +GDK_KEY_b, GDK_KEY_u, 0x016D, +GDK_KEY_b, 0x0228, 0x1E1C, +GDK_KEY_b, 0x0229, 0x1E1D, +GDK_KEY_b, GDK_KEY_Cyrillic_a, 0x04D1, +GDK_KEY_b, GDK_KEY_Cyrillic_ie, 0x04D7, +GDK_KEY_b, GDK_KEY_Cyrillic_i, 0x0439, +GDK_KEY_b, GDK_KEY_Cyrillic_u, 0x045E, +GDK_KEY_b, GDK_KEY_Cyrillic_zhe, 0x04C2, +GDK_KEY_b, GDK_KEY_Cyrillic_A, 0x04D0, +GDK_KEY_b, GDK_KEY_Cyrillic_IE, 0x04D6, +GDK_KEY_b, GDK_KEY_Cyrillic_I, 0x0419, +GDK_KEY_b, GDK_KEY_Cyrillic_U, 0x040E, +GDK_KEY_b, GDK_KEY_Cyrillic_ZHE, 0x04C1, +GDK_KEY_b, GDK_KEY_Greek_ALPHA, 0x1FB8, +GDK_KEY_b, GDK_KEY_Greek_IOTA, 0x1FD8, +GDK_KEY_b, GDK_KEY_Greek_UPSILON, 0x1FE8, +GDK_KEY_b, GDK_KEY_Greek_alpha, 0x1FB0, +GDK_KEY_b, GDK_KEY_Greek_iota, 0x1FD0, +GDK_KEY_b, GDK_KEY_Greek_upsilon, 0x1FE0, +GDK_KEY_b, 0x1EA0, 0x1EB6, +GDK_KEY_b, 0x1EA1, 0x1EB7, +GDK_KEY_c, GDK_KEY_apostrophe, 0x0107, +GDK_KEY_c, GDK_KEY_comma, 0x00E7, +GDK_KEY_c, GDK_KEY_period, 0x010B, +GDK_KEY_c, GDK_KEY_slash, 0x00A2, +GDK_KEY_c, GDK_KEY_0, 0x00A9, +GDK_KEY_c, GDK_KEY_less, 0x010D, +GDK_KEY_c, GDK_KEY_equal, 0x20AC, +GDK_KEY_c, GDK_KEY_A, 0x01CD, +GDK_KEY_c, GDK_KEY_C, 0x010C, +GDK_KEY_c, GDK_KEY_D, 0x010E, +GDK_KEY_c, GDK_KEY_E, 0x011A, +GDK_KEY_c, GDK_KEY_G, 0x01E6, +GDK_KEY_c, GDK_KEY_H, 0x021E, +GDK_KEY_c, GDK_KEY_I, 0x01CF, +GDK_KEY_c, GDK_KEY_K, 0x01E8, +GDK_KEY_c, GDK_KEY_L, 0x013D, +GDK_KEY_c, GDK_KEY_N, 0x0147, +GDK_KEY_c, GDK_KEY_O, 0x01D1, +GDK_KEY_c, GDK_KEY_R, 0x0158, +GDK_KEY_c, GDK_KEY_S, 0x0160, +GDK_KEY_c, GDK_KEY_T, 0x0164, +GDK_KEY_c, GDK_KEY_U, 0x01D3, +GDK_KEY_c, GDK_KEY_Z, 0x017D, +GDK_KEY_c, GDK_KEY_a, 0x01CE, +GDK_KEY_c, GDK_KEY_c, 0x010D, +GDK_KEY_c, GDK_KEY_d, 0x010F, +GDK_KEY_c, GDK_KEY_e, 0x011B, +GDK_KEY_c, GDK_KEY_g, 0x01E7, +GDK_KEY_c, GDK_KEY_h, 0x021F, +GDK_KEY_c, GDK_KEY_i, 0x01D0, +GDK_KEY_c, GDK_KEY_j, 0x01F0, +GDK_KEY_c, GDK_KEY_k, 0x01E9, +GDK_KEY_c, GDK_KEY_l, 0x013E, +GDK_KEY_c, GDK_KEY_n, 0x0148, +GDK_KEY_c, GDK_KEY_o, 0x01D2, +GDK_KEY_c, GDK_KEY_r, 0x0159, +GDK_KEY_c, GDK_KEY_s, 0x0161, +GDK_KEY_c, GDK_KEY_t, 0x0165, +GDK_KEY_c, GDK_KEY_u, 0x01D4, +GDK_KEY_c, GDK_KEY_z, 0x017E, +GDK_KEY_c, GDK_KEY_bar, 0x00A2, +GDK_KEY_c, GDK_KEY_Udiaeresis, 0x01D9, +GDK_KEY_c, GDK_KEY_udiaeresis, 0x01DA, +GDK_KEY_c, 0x01B7, 0x01EE, +GDK_KEY_c, 0x0292, 0x01EF, +GDK_KEY_d, GDK_KEY_minus, 0x20AB, +GDK_KEY_d, GDK_KEY_period, 0x1E0B, +GDK_KEY_d, GDK_KEY_less, 0x010F, +GDK_KEY_d, GDK_KEY_h, 0x00F0, +GDK_KEY_e, GDK_KEY_quotedbl, 0x00EB, +GDK_KEY_e, GDK_KEY_apostrophe, 0x00E9, +GDK_KEY_e, GDK_KEY_comma, 0x0119, +GDK_KEY_e, GDK_KEY_minus, 0x0113, +GDK_KEY_e, GDK_KEY_period, 0x0117, +GDK_KEY_e, GDK_KEY_less, 0x011B, +GDK_KEY_e, GDK_KEY_equal, 0x20AC, +GDK_KEY_e, GDK_KEY_greater, 0x00EA, +GDK_KEY_e, GDK_KEY_asciicircum, 0x00EA, +GDK_KEY_e, GDK_KEY_underscore, 0x0113, +GDK_KEY_e, GDK_KEY_grave, 0x00E8, +GDK_KEY_e, GDK_KEY_e, 0x0259, +GDK_KEY_e, GDK_KEY_diaeresis, 0x00EB, +GDK_KEY_e, GDK_KEY_acute, 0x00E9, +GDK_KEY_f, GDK_KEY_period, 0x1E1F, +GDK_KEY_f, GDK_KEY_S, 0x017F, +GDK_KEY_f, GDK_KEY_s, 0x017F, +GDK_KEY_g, GDK_KEY_parenleft, 0x011F, +GDK_KEY_g, GDK_KEY_comma, 0x0123, +GDK_KEY_g, GDK_KEY_period, 0x0121, +GDK_KEY_g, GDK_KEY_U, 0x011F, +GDK_KEY_g, GDK_KEY_breve, 0x011F, +GDK_KEY_i, GDK_KEY_quotedbl, 0x00EF, +GDK_KEY_i, GDK_KEY_apostrophe, 0x00ED, +GDK_KEY_i, GDK_KEY_comma, 0x012F, +GDK_KEY_i, GDK_KEY_minus, 0x012B, +GDK_KEY_i, GDK_KEY_period, 0x0131, +GDK_KEY_i, GDK_KEY_greater, 0x00EE, +GDK_KEY_i, GDK_KEY_asciicircum, 0x00EE, +GDK_KEY_i, GDK_KEY_underscore, 0x012B, +GDK_KEY_i, GDK_KEY_grave, 0x00EC, +GDK_KEY_i, GDK_KEY_asciitilde, 0x0129, +GDK_KEY_i, GDK_KEY_diaeresis, 0x00EF, +GDK_KEY_i, GDK_KEY_acute, 0x00ED, +GDK_KEY_k, GDK_KEY_comma, 0x0137, +GDK_KEY_k, GDK_KEY_k, 0x0138, +GDK_KEY_l, GDK_KEY_apostrophe, 0x013A, +GDK_KEY_l, GDK_KEY_comma, 0x013C, +GDK_KEY_l, GDK_KEY_minus, 0x00A3, +GDK_KEY_l, GDK_KEY_slash, 0x0142, +GDK_KEY_l, GDK_KEY_less, 0x013E, +GDK_KEY_l, GDK_KEY_equal, 0x00A3, +GDK_KEY_l, GDK_KEY_v, 0x007C, +GDK_KEY_m, GDK_KEY_period, 0x1E41, +GDK_KEY_m, GDK_KEY_slash, 0x20A5, +GDK_KEY_m, GDK_KEY_u, 0x00B5, +GDK_KEY_n, GDK_KEY_apostrophe, 0x0144, +GDK_KEY_n, GDK_KEY_comma, 0x0146, +GDK_KEY_n, GDK_KEY_minus, 0x00F1, +GDK_KEY_n, GDK_KEY_less, 0x0148, +GDK_KEY_n, GDK_KEY_g, 0x014B, +GDK_KEY_n, GDK_KEY_asciitilde, 0x00F1, +GDK_KEY_o, GDK_KEY_quotedbl, 0x00F6, +GDK_KEY_o, GDK_KEY_apostrophe, 0x00F3, +GDK_KEY_o, GDK_KEY_minus, 0x014D, +GDK_KEY_o, GDK_KEY_slash, 0x00F8, +GDK_KEY_o, GDK_KEY_greater, 0x00F4, +GDK_KEY_o, GDK_KEY_A, 0x00C5, +GDK_KEY_o, GDK_KEY_C, 0x00A9, +GDK_KEY_o, GDK_KEY_R, 0x00AE, +GDK_KEY_o, GDK_KEY_U, 0x016E, +GDK_KEY_o, GDK_KEY_X, 0x00A4, +GDK_KEY_o, GDK_KEY_asciicircum, 0x00F4, +GDK_KEY_o, GDK_KEY_underscore, 0x00BA, +GDK_KEY_o, GDK_KEY_grave, 0x00F2, +GDK_KEY_o, GDK_KEY_a, 0x00E5, +GDK_KEY_o, GDK_KEY_c, 0x00A9, +GDK_KEY_o, GDK_KEY_e, 0x0153, +GDK_KEY_o, GDK_KEY_o, 0x00B0, +GDK_KEY_o, GDK_KEY_r, 0x00AE, +GDK_KEY_o, GDK_KEY_s, 0x00A7, +GDK_KEY_o, GDK_KEY_u, 0x016F, +GDK_KEY_o, GDK_KEY_w, 0x1E98, +GDK_KEY_o, GDK_KEY_x, 0x00A4, +GDK_KEY_o, GDK_KEY_y, 0x1E99, +GDK_KEY_o, GDK_KEY_asciitilde, 0x00F5, +GDK_KEY_o, GDK_KEY_diaeresis, 0x00F6, +GDK_KEY_o, GDK_KEY_acute, 0x00F3, +GDK_KEY_p, GDK_KEY_exclam, 0x00B6, +GDK_KEY_p, GDK_KEY_period, 0x1E57, +GDK_KEY_r, GDK_KEY_apostrophe, 0x0155, +GDK_KEY_r, GDK_KEY_comma, 0x0157, +GDK_KEY_r, GDK_KEY_less, 0x0159, +GDK_KEY_s, GDK_KEY_exclam, 0x00A7, +GDK_KEY_s, GDK_KEY_apostrophe, 0x015B, +GDK_KEY_s, GDK_KEY_comma, 0x015F, +GDK_KEY_s, GDK_KEY_period, 0x1E61, +GDK_KEY_s, GDK_KEY_0, 0x00A7, +GDK_KEY_s, GDK_KEY_1, 0x00B9, +GDK_KEY_s, GDK_KEY_2, 0x00B2, +GDK_KEY_s, GDK_KEY_3, 0x00B3, +GDK_KEY_s, GDK_KEY_less, 0x0161, +GDK_KEY_s, GDK_KEY_M, 0x2120, +GDK_KEY_s, GDK_KEY_m, 0x2120, +GDK_KEY_s, GDK_KEY_o, 0x00A7, +GDK_KEY_s, GDK_KEY_s, 0x00DF, +GDK_KEY_s, GDK_KEY_cedilla, 0x015F, +GDK_KEY_t, GDK_KEY_minus, 0x0167, +GDK_KEY_t, GDK_KEY_period, 0x1E6B, +GDK_KEY_t, GDK_KEY_slash, 0x0167, +GDK_KEY_t, GDK_KEY_less, 0x0165, +GDK_KEY_t, GDK_KEY_M, 0x2122, +GDK_KEY_t, GDK_KEY_h, 0x00FE, +GDK_KEY_t, GDK_KEY_m, 0x2122, +GDK_KEY_u, GDK_KEY_quotedbl, 0x00FC, +GDK_KEY_u, GDK_KEY_apostrophe, 0x00FA, +GDK_KEY_u, GDK_KEY_asterisk, 0x016F, +GDK_KEY_u, GDK_KEY_comma, 0x0173, +GDK_KEY_u, GDK_KEY_minus, 0x016B, +GDK_KEY_u, GDK_KEY_slash, 0x00B5, +GDK_KEY_u, GDK_KEY_greater, 0x00FB, +GDK_KEY_u, GDK_KEY_asciicircum, 0x00FB, +GDK_KEY_u, GDK_KEY_underscore, 0x016B, +GDK_KEY_u, GDK_KEY_grave, 0x00F9, +GDK_KEY_u, GDK_KEY_u, 0x016D, +GDK_KEY_u, GDK_KEY_asciitilde, 0x0169, +GDK_KEY_u, GDK_KEY_diaeresis, 0x00FC, +GDK_KEY_u, GDK_KEY_acute, 0x00FA, +GDK_KEY_v, GDK_KEY_Z, 0x017D, +GDK_KEY_v, GDK_KEY_l, 0x007C, +GDK_KEY_v, GDK_KEY_z, 0x017E, +GDK_KEY_w, GDK_KEY_asciicircum, 0x0175, +GDK_KEY_x, GDK_KEY_0, 0x00A4, +GDK_KEY_x, GDK_KEY_O, 0x00A4, +GDK_KEY_x, GDK_KEY_o, 0x00A4, +GDK_KEY_x, GDK_KEY_x, 0x00D7, +GDK_KEY_y, GDK_KEY_quotedbl, 0x00FF, +GDK_KEY_y, GDK_KEY_apostrophe, 0x00FD, +GDK_KEY_y, GDK_KEY_minus, 0x00A5, +GDK_KEY_y, GDK_KEY_equal, 0x00A5, +GDK_KEY_y, GDK_KEY_asciicircum, 0x0177, +GDK_KEY_y, GDK_KEY_diaeresis, 0x00FF, +GDK_KEY_y, GDK_KEY_acute, 0x00FD, +GDK_KEY_z, GDK_KEY_apostrophe, 0x017A, +GDK_KEY_z, GDK_KEY_period, 0x017C, +GDK_KEY_z, GDK_KEY_less, 0x017E, +GDK_KEY_bar, GDK_KEY_C, 0x00A2, +GDK_KEY_bar, GDK_KEY_c, 0x00A2, +GDK_KEY_asciitilde, GDK_KEY_space, 0x007E, +GDK_KEY_asciitilde, GDK_KEY_A, 0x00C3, +GDK_KEY_asciitilde, GDK_KEY_E, 0x1EBC, +GDK_KEY_asciitilde, GDK_KEY_I, 0x0128, +GDK_KEY_asciitilde, GDK_KEY_N, 0x00D1, +GDK_KEY_asciitilde, GDK_KEY_O, 0x00D5, +GDK_KEY_asciitilde, GDK_KEY_U, 0x0168, +GDK_KEY_asciitilde, GDK_KEY_V, 0x1E7C, +GDK_KEY_asciitilde, GDK_KEY_Y, 0x1EF8, +GDK_KEY_asciitilde, GDK_KEY_a, 0x00E3, +GDK_KEY_asciitilde, GDK_KEY_e, 0x1EBD, +GDK_KEY_asciitilde, GDK_KEY_i, 0x0129, +GDK_KEY_asciitilde, GDK_KEY_n, 0x00F1, +GDK_KEY_asciitilde, GDK_KEY_o, 0x00F5, +GDK_KEY_asciitilde, GDK_KEY_u, 0x0169, +GDK_KEY_asciitilde, GDK_KEY_v, 0x1E7D, +GDK_KEY_asciitilde, GDK_KEY_y, 0x1EF9, +GDK_KEY_asciitilde, GDK_KEY_Acircumflex, 0x1EAA, +GDK_KEY_asciitilde, GDK_KEY_Ecircumflex, 0x1EC4, +GDK_KEY_asciitilde, GDK_KEY_Ocircumflex, 0x1ED6, +GDK_KEY_asciitilde, GDK_KEY_acircumflex, 0x1EAB, +GDK_KEY_asciitilde, GDK_KEY_ecircumflex, 0x1EC5, +GDK_KEY_asciitilde, GDK_KEY_ocircumflex, 0x1ED7, +GDK_KEY_asciitilde, GDK_KEY_Abreve, 0x1EB4, +GDK_KEY_asciitilde, GDK_KEY_abreve, 0x1EB5, +GDK_KEY_asciitilde, GDK_KEY_Greek_iotadieresis, 0x1FD7, +GDK_KEY_asciitilde, GDK_KEY_Greek_upsilondieresis, 0x1FE7, +GDK_KEY_asciitilde, GDK_KEY_Greek_alpha, 0x1FB6, +GDK_KEY_asciitilde, GDK_KEY_Greek_eta, 0x1FC6, +GDK_KEY_asciitilde, GDK_KEY_Greek_iota, 0x1FD6, +GDK_KEY_asciitilde, GDK_KEY_Greek_upsilon, 0x1FE6, +GDK_KEY_asciitilde, GDK_KEY_Greek_omega, 0x1FF6, +GDK_KEY_asciitilde, 0x1F00, 0x1F06, +GDK_KEY_asciitilde, 0x1F01, 0x1F07, +GDK_KEY_asciitilde, 0x1F08, 0x1F0E, +GDK_KEY_asciitilde, 0x1F09, 0x1F0F, +GDK_KEY_asciitilde, 0x1F20, 0x1F26, +GDK_KEY_asciitilde, 0x1F21, 0x1F27, +GDK_KEY_asciitilde, 0x1F28, 0x1F2E, +GDK_KEY_asciitilde, 0x1F29, 0x1F2F, +GDK_KEY_asciitilde, 0x1F30, 0x1F36, +GDK_KEY_asciitilde, 0x1F31, 0x1F37, +GDK_KEY_asciitilde, 0x1F38, 0x1F3E, +GDK_KEY_asciitilde, 0x1F39, 0x1F3F, +GDK_KEY_asciitilde, 0x1F50, 0x1F56, +GDK_KEY_asciitilde, 0x1F51, 0x1F57, +GDK_KEY_asciitilde, 0x1F59, 0x1F5F, +GDK_KEY_asciitilde, 0x1F60, 0x1F66, +GDK_KEY_asciitilde, 0x1F61, 0x1F67, +GDK_KEY_asciitilde, 0x1F68, 0x1F6E, +GDK_KEY_asciitilde, 0x1F69, 0x1F6F, +GDK_KEY_diaeresis, GDK_KEY_apostrophe, 0x0385, +GDK_KEY_diaeresis, GDK_KEY_A, 0x00C4, +GDK_KEY_diaeresis, GDK_KEY_E, 0x00CB, +GDK_KEY_diaeresis, GDK_KEY_I, 0x00CF, +GDK_KEY_diaeresis, GDK_KEY_O, 0x00D6, +GDK_KEY_diaeresis, GDK_KEY_U, 0x00DC, +GDK_KEY_diaeresis, GDK_KEY_Y, 0x0178, +GDK_KEY_diaeresis, GDK_KEY_grave, 0x1FED, +GDK_KEY_diaeresis, GDK_KEY_a, 0x00E4, +GDK_KEY_diaeresis, GDK_KEY_e, 0x00EB, +GDK_KEY_diaeresis, GDK_KEY_i, 0x00EF, +GDK_KEY_diaeresis, GDK_KEY_o, 0x00F6, +GDK_KEY_diaeresis, GDK_KEY_u, 0x00FC, +GDK_KEY_diaeresis, GDK_KEY_y, 0x00FF, +GDK_KEY_diaeresis, GDK_KEY_asciitilde, 0x1FC1, +GDK_KEY_diaeresis, GDK_KEY_acute, 0x0385, +GDK_KEY_diaeresis, GDK_KEY_dead_grave, 0x1FED, +GDK_KEY_diaeresis, GDK_KEY_dead_acute, 0x0385, +GDK_KEY_diaeresis, GDK_KEY_dead_tilde, 0x1FC1, +GDK_KEY_macron, GDK_KEY_A, 0x0100, +GDK_KEY_macron, GDK_KEY_E, 0x0112, +GDK_KEY_macron, GDK_KEY_G, 0x1E20, +GDK_KEY_macron, GDK_KEY_I, 0x012A, +GDK_KEY_macron, GDK_KEY_O, 0x014C, +GDK_KEY_macron, GDK_KEY_U, 0x016A, +GDK_KEY_macron, GDK_KEY_Y, 0x0232, +GDK_KEY_macron, GDK_KEY_a, 0x0101, +GDK_KEY_macron, GDK_KEY_e, 0x0113, +GDK_KEY_macron, GDK_KEY_g, 0x1E21, +GDK_KEY_macron, GDK_KEY_i, 0x012B, +GDK_KEY_macron, GDK_KEY_o, 0x014D, +GDK_KEY_macron, GDK_KEY_u, 0x016B, +GDK_KEY_macron, GDK_KEY_y, 0x0233, +GDK_KEY_macron, GDK_KEY_Adiaeresis, 0x01DE, +GDK_KEY_macron, GDK_KEY_AE, 0x01E2, +GDK_KEY_macron, GDK_KEY_Otilde, 0x022C, +GDK_KEY_macron, GDK_KEY_Odiaeresis, 0x022A, +GDK_KEY_macron, GDK_KEY_Udiaeresis, 0x01D5, +GDK_KEY_macron, GDK_KEY_adiaeresis, 0x01DF, +GDK_KEY_macron, GDK_KEY_ae, 0x01E3, +GDK_KEY_macron, GDK_KEY_otilde, 0x022D, +GDK_KEY_macron, GDK_KEY_odiaeresis, 0x022B, +GDK_KEY_macron, GDK_KEY_udiaeresis, 0x01D6, +GDK_KEY_macron, 0x01EA, 0x01EC, +GDK_KEY_macron, 0x01EB, 0x01ED, +GDK_KEY_macron, 0x0226, 0x01E0, +GDK_KEY_macron, 0x0227, 0x01E1, +GDK_KEY_macron, 0x022E, 0x0230, +GDK_KEY_macron, 0x022F, 0x0231, +GDK_KEY_macron, GDK_KEY_Cyrillic_i, 0x04E3, +GDK_KEY_macron, GDK_KEY_Cyrillic_u, 0x04EF, +GDK_KEY_macron, GDK_KEY_Cyrillic_I, 0x04E2, +GDK_KEY_macron, GDK_KEY_Cyrillic_U, 0x04EE, +GDK_KEY_macron, GDK_KEY_Greek_ALPHA, 0x1FB9, +GDK_KEY_macron, GDK_KEY_Greek_IOTA, 0x1FD9, +GDK_KEY_macron, GDK_KEY_Greek_UPSILON, 0x1FE9, +GDK_KEY_macron, GDK_KEY_Greek_alpha, 0x1FB1, +GDK_KEY_macron, GDK_KEY_Greek_iota, 0x1FD1, +GDK_KEY_macron, GDK_KEY_Greek_upsilon, 0x1FE1, +GDK_KEY_macron, 0x1E36, 0x1E38, +GDK_KEY_macron, 0x1E37, 0x1E39, +GDK_KEY_macron, 0x1E5A, 0x1E5C, +GDK_KEY_macron, 0x1E5B, 0x1E5D, +GDK_KEY_acute, GDK_KEY_A, 0x00C1, +GDK_KEY_acute, GDK_KEY_C, 0x0106, +GDK_KEY_acute, GDK_KEY_E, 0x00C9, +GDK_KEY_acute, GDK_KEY_G, 0x01F4, +GDK_KEY_acute, GDK_KEY_I, 0x00CD, +GDK_KEY_acute, GDK_KEY_K, 0x1E30, +GDK_KEY_acute, GDK_KEY_L, 0x0139, +GDK_KEY_acute, GDK_KEY_M, 0x1E3E, +GDK_KEY_acute, GDK_KEY_N, 0x0143, +GDK_KEY_acute, GDK_KEY_O, 0x00D3, +GDK_KEY_acute, GDK_KEY_P, 0x1E54, +GDK_KEY_acute, GDK_KEY_R, 0x0154, +GDK_KEY_acute, GDK_KEY_S, 0x015A, +GDK_KEY_acute, GDK_KEY_U, 0x00DA, +GDK_KEY_acute, GDK_KEY_W, 0x1E82, +GDK_KEY_acute, GDK_KEY_Y, 0x00DD, +GDK_KEY_acute, GDK_KEY_Z, 0x0179, +GDK_KEY_acute, GDK_KEY_a, 0x00E1, +GDK_KEY_acute, GDK_KEY_c, 0x0107, +GDK_KEY_acute, GDK_KEY_e, 0x00E9, +GDK_KEY_acute, GDK_KEY_g, 0x01F5, +GDK_KEY_acute, GDK_KEY_i, 0x00ED, +GDK_KEY_acute, GDK_KEY_k, 0x1E31, +GDK_KEY_acute, GDK_KEY_l, 0x013A, +GDK_KEY_acute, GDK_KEY_m, 0x1E3F, +GDK_KEY_acute, GDK_KEY_n, 0x0144, +GDK_KEY_acute, GDK_KEY_o, 0x00F3, +GDK_KEY_acute, GDK_KEY_p, 0x1E55, +GDK_KEY_acute, GDK_KEY_r, 0x0155, +GDK_KEY_acute, GDK_KEY_s, 0x015B, +GDK_KEY_acute, GDK_KEY_u, 0x00FA, +GDK_KEY_acute, GDK_KEY_w, 0x1E83, +GDK_KEY_acute, GDK_KEY_y, 0x00FD, +GDK_KEY_acute, GDK_KEY_z, 0x017A, +GDK_KEY_acute, GDK_KEY_Acircumflex, 0x1EA4, +GDK_KEY_acute, GDK_KEY_Aring, 0x01FA, +GDK_KEY_acute, GDK_KEY_AE, 0x01FC, +GDK_KEY_acute, GDK_KEY_Ccedilla, 0x1E08, +GDK_KEY_acute, GDK_KEY_Ecircumflex, 0x1EBE, +GDK_KEY_acute, GDK_KEY_Idiaeresis, 0x1E2E, +GDK_KEY_acute, GDK_KEY_Ocircumflex, 0x1ED0, +GDK_KEY_acute, GDK_KEY_Otilde, 0x1E4C, +GDK_KEY_acute, GDK_KEY_Ooblique, 0x01FE, +GDK_KEY_acute, GDK_KEY_Udiaeresis, 0x01D7, +GDK_KEY_acute, GDK_KEY_acircumflex, 0x1EA5, +GDK_KEY_acute, GDK_KEY_aring, 0x01FB, +GDK_KEY_acute, GDK_KEY_ae, 0x01FD, +GDK_KEY_acute, GDK_KEY_ccedilla, 0x1E09, +GDK_KEY_acute, GDK_KEY_ecircumflex, 0x1EBF, +GDK_KEY_acute, GDK_KEY_idiaeresis, 0x1E2F, +GDK_KEY_acute, GDK_KEY_ocircumflex, 0x1ED1, +GDK_KEY_acute, GDK_KEY_otilde, 0x1E4D, +GDK_KEY_acute, GDK_KEY_oslash, 0x01FF, +GDK_KEY_acute, GDK_KEY_udiaeresis, 0x01D8, +GDK_KEY_acute, GDK_KEY_Abreve, 0x1EAE, +GDK_KEY_acute, GDK_KEY_abreve, 0x1EAF, +GDK_KEY_acute, GDK_KEY_Emacron, 0x1E16, +GDK_KEY_acute, GDK_KEY_emacron, 0x1E17, +GDK_KEY_acute, GDK_KEY_Omacron, 0x1E52, +GDK_KEY_acute, GDK_KEY_Utilde, 0x1E78, +GDK_KEY_acute, GDK_KEY_omacron, 0x1E53, +GDK_KEY_acute, GDK_KEY_utilde, 0x1E79, +GDK_KEY_acute, GDK_KEY_Cyrillic_ghe, 0x0453, +GDK_KEY_acute, GDK_KEY_Cyrillic_ka, 0x045C, +GDK_KEY_acute, GDK_KEY_Cyrillic_GHE, 0x0403, +GDK_KEY_acute, GDK_KEY_Cyrillic_KA, 0x040C, +GDK_KEY_acute, GDK_KEY_Greek_iotadieresis, 0x0390, +GDK_KEY_acute, GDK_KEY_Greek_upsilondieresis, 0x03B0, +GDK_KEY_acute, GDK_KEY_Greek_ALPHA, 0x0386, +GDK_KEY_acute, GDK_KEY_Greek_EPSILON, 0x0388, +GDK_KEY_acute, GDK_KEY_Greek_ETA, 0x0389, +GDK_KEY_acute, GDK_KEY_Greek_IOTA, 0x038A, +GDK_KEY_acute, GDK_KEY_Greek_OMICRON, 0x038C, +GDK_KEY_acute, GDK_KEY_Greek_UPSILON, 0x038E, +GDK_KEY_acute, GDK_KEY_Greek_OMEGA, 0x038F, +GDK_KEY_acute, GDK_KEY_Greek_alpha, 0x03AC, +GDK_KEY_acute, GDK_KEY_Greek_epsilon, 0x03AD, +GDK_KEY_acute, GDK_KEY_Greek_eta, 0x03AE, +GDK_KEY_acute, GDK_KEY_Greek_iota, 0x03AF, +GDK_KEY_acute, GDK_KEY_Greek_omicron, 0x03CC, +GDK_KEY_acute, GDK_KEY_Greek_upsilon, 0x03CD, +GDK_KEY_acute, GDK_KEY_Greek_omega, 0x03CE, +GDK_KEY_acute, 0x1F00, 0x1F04, +GDK_KEY_acute, 0x1F01, 0x1F05, +GDK_KEY_acute, 0x1F08, 0x1F0C, +GDK_KEY_acute, 0x1F09, 0x1F0D, +GDK_KEY_acute, 0x1F10, 0x1F14, +GDK_KEY_acute, 0x1F11, 0x1F15, +GDK_KEY_acute, 0x1F18, 0x1F1C, +GDK_KEY_acute, 0x1F19, 0x1F1D, +GDK_KEY_acute, 0x1F20, 0x1F24, +GDK_KEY_acute, 0x1F21, 0x1F25, +GDK_KEY_acute, 0x1F28, 0x1F2C, +GDK_KEY_acute, 0x1F29, 0x1F2D, +GDK_KEY_acute, 0x1F30, 0x1F34, +GDK_KEY_acute, 0x1F31, 0x1F35, +GDK_KEY_acute, 0x1F38, 0x1F3C, +GDK_KEY_acute, 0x1F39, 0x1F3D, +GDK_KEY_acute, 0x1F40, 0x1F44, +GDK_KEY_acute, 0x1F41, 0x1F45, +GDK_KEY_acute, 0x1F48, 0x1F4C, +GDK_KEY_acute, 0x1F49, 0x1F4D, +GDK_KEY_acute, 0x1F50, 0x1F54, +GDK_KEY_acute, 0x1F51, 0x1F55, +GDK_KEY_acute, 0x1F59, 0x1F5D, +GDK_KEY_acute, 0x1F60, 0x1F64, +GDK_KEY_acute, 0x1F61, 0x1F65, +GDK_KEY_acute, 0x1F68, 0x1F6C, +GDK_KEY_acute, 0x1F69, 0x1F6D, +GDK_KEY_cedilla, GDK_KEY_C, 0x00C7, +GDK_KEY_cedilla, GDK_KEY_D, 0x1E10, +GDK_KEY_cedilla, GDK_KEY_E, 0x0228, +GDK_KEY_cedilla, GDK_KEY_G, 0x0122, +GDK_KEY_cedilla, GDK_KEY_H, 0x1E28, +GDK_KEY_cedilla, GDK_KEY_K, 0x0136, +GDK_KEY_cedilla, GDK_KEY_L, 0x013B, +GDK_KEY_cedilla, GDK_KEY_N, 0x0145, +GDK_KEY_cedilla, GDK_KEY_R, 0x0156, +GDK_KEY_cedilla, GDK_KEY_S, 0x015E, +GDK_KEY_cedilla, GDK_KEY_T, 0x0162, +GDK_KEY_cedilla, GDK_KEY_c, 0x00E7, +GDK_KEY_cedilla, GDK_KEY_d, 0x1E11, +GDK_KEY_cedilla, GDK_KEY_e, 0x0229, +GDK_KEY_cedilla, GDK_KEY_g, 0x0123, +GDK_KEY_cedilla, GDK_KEY_h, 0x1E29, +GDK_KEY_cedilla, GDK_KEY_k, 0x0137, +GDK_KEY_cedilla, GDK_KEY_l, 0x013C, +GDK_KEY_cedilla, GDK_KEY_n, 0x0146, +GDK_KEY_cedilla, GDK_KEY_r, 0x0157, +GDK_KEY_cedilla, GDK_KEY_s, 0x015F, +GDK_KEY_cedilla, GDK_KEY_t, 0x0163, +GDK_KEY_breve, GDK_KEY_G, 0x011E, +GDK_KEY_breve, GDK_KEY_g, 0x011F, +0x05B4, GDK_KEY_hebrew_yod, 0xFB1D, +0x05B7, 0x05F2, 0xFB1F, +0x05B7, GDK_KEY_hebrew_aleph, 0xFB2E, +0x05B8, GDK_KEY_hebrew_aleph, 0xFB2F, +0x05B9, GDK_KEY_hebrew_waw, 0xFB4B, +0x05BC, GDK_KEY_hebrew_aleph, 0xFB30, +0x05BC, GDK_KEY_hebrew_beth, 0xFB31, +0x05BC, GDK_KEY_hebrew_gimmel, 0xFB32, +0x05BC, GDK_KEY_hebrew_daleth, 0xFB33, +0x05BC, GDK_KEY_hebrew_he, 0xFB34, +0x05BC, GDK_KEY_hebrew_waw, 0xFB35, +0x05BC, GDK_KEY_hebrew_zayin, 0xFB36, +0x05BC, GDK_KEY_hebrew_teth, 0xFB38, +0x05BC, GDK_KEY_hebrew_yod, 0xFB39, +0x05BC, GDK_KEY_hebrew_finalkaph, 0xFB3A, +0x05BC, GDK_KEY_hebrew_kaph, 0xFB3B, +0x05BC, GDK_KEY_hebrew_lamed, 0xFB3C, +0x05BC, GDK_KEY_hebrew_mem, 0xFB3E, +0x05BC, GDK_KEY_hebrew_nun, 0xFB40, +0x05BC, GDK_KEY_hebrew_samekh, 0xFB41, +0x05BC, GDK_KEY_hebrew_finalpe, 0xFB43, +0x05BC, GDK_KEY_hebrew_pe, 0xFB44, +0x05BC, GDK_KEY_hebrew_zadi, 0xFB46, +0x05BC, GDK_KEY_hebrew_qoph, 0xFB47, +0x05BC, GDK_KEY_hebrew_resh, 0xFB48, +0x05BC, GDK_KEY_hebrew_shin, 0xFB49, +0x05BC, GDK_KEY_hebrew_taw, 0xFB4A, +0x05BF, GDK_KEY_hebrew_beth, 0xFB4C, +0x05BF, GDK_KEY_hebrew_kaph, 0xFB4D, +0x05BF, GDK_KEY_hebrew_pe, 0xFB4E, +0x05C1, GDK_KEY_hebrew_shin, 0xFB2A, +0x05C1, 0xFB49, 0xFB2C, +0x05C2, GDK_KEY_hebrew_shin, 0xFB2B, +0x05C2, 0xFB49, 0xFB2D, +0x0653, GDK_KEY_Arabic_alef, 0x0622, +0x0654, GDK_KEY_Arabic_alef, 0x0623, +0x0654, GDK_KEY_Arabic_waw, 0x0624, +0x0654, GDK_KEY_Arabic_yeh, 0x0626, +0x0654, 0x06C1, 0x06C2, +0x0654, 0x06D2, 0x06D3, +0x0654, 0x06D5, 0x06C0, +0x0655, GDK_KEY_Arabic_alef, 0x0625, +GDK_KEY_Cyrillic_pe, GDK_KEY_Cyrillic_a, 0x00A7, +GDK_KEY_Cyrillic_IE, GDK_KEY_equal, 0x20AC, +GDK_KEY_Cyrillic_EN, GDK_KEY_Cyrillic_o, 0x2116, +GDK_KEY_Cyrillic_EN, GDK_KEY_Cyrillic_O, 0x2116, +GDK_KEY_Cyrillic_ES, GDK_KEY_equal, 0x20AC, +GDK_KEY_Greek_ALPHA, GDK_KEY_apostrophe, 0x0386, +GDK_KEY_Greek_EPSILON, GDK_KEY_apostrophe, 0x0388, +GDK_KEY_Greek_ETA, GDK_KEY_apostrophe, 0x0389, +GDK_KEY_Greek_IOTA, GDK_KEY_quotedbl, 0x03AA, +GDK_KEY_Greek_IOTA, GDK_KEY_apostrophe, 0x038A, +GDK_KEY_Greek_OMICRON, GDK_KEY_apostrophe, 0x038C, +GDK_KEY_Greek_UPSILON, GDK_KEY_quotedbl, 0x03AB, +GDK_KEY_Greek_UPSILON, GDK_KEY_apostrophe, 0x038E, +GDK_KEY_Greek_OMEGA, GDK_KEY_apostrophe, 0x038F, +GDK_KEY_Greek_alpha, GDK_KEY_apostrophe, 0x03AC, +GDK_KEY_Greek_epsilon, GDK_KEY_apostrophe, 0x03AD, +GDK_KEY_Greek_eta, GDK_KEY_apostrophe, 0x03AE, +GDK_KEY_Greek_iota, GDK_KEY_quotedbl, 0x03CA, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x03AF, +GDK_KEY_Greek_iota, GDK_KEY_Greek_alphaaccent, 0x1FB4, +GDK_KEY_Greek_iota, GDK_KEY_Greek_etaaccent, 0x1FC4, +GDK_KEY_Greek_iota, GDK_KEY_Greek_omegaaccent, 0x1FF4, +GDK_KEY_Greek_iota, GDK_KEY_Greek_ALPHA, 0x1FBC, +GDK_KEY_Greek_iota, GDK_KEY_Greek_ETA, 0x1FCC, +GDK_KEY_Greek_iota, GDK_KEY_Greek_OMEGA, 0x1FFC, +GDK_KEY_Greek_iota, GDK_KEY_Greek_alpha, 0x1FB3, +GDK_KEY_Greek_iota, GDK_KEY_Greek_eta, 0x1FC3, +GDK_KEY_Greek_iota, GDK_KEY_Greek_omega, 0x1FF3, +GDK_KEY_Greek_iota, 0x1F00, 0x1F80, +GDK_KEY_Greek_iota, 0x1F01, 0x1F81, +GDK_KEY_Greek_iota, 0x1F02, 0x1F82, +GDK_KEY_Greek_iota, 0x1F03, 0x1F83, +GDK_KEY_Greek_iota, 0x1F04, 0x1F84, +GDK_KEY_Greek_iota, 0x1F05, 0x1F85, +GDK_KEY_Greek_iota, 0x1F06, 0x1F86, +GDK_KEY_Greek_iota, 0x1F07, 0x1F87, +GDK_KEY_Greek_iota, 0x1F08, 0x1F88, +GDK_KEY_Greek_iota, 0x1F09, 0x1F89, +GDK_KEY_Greek_iota, 0x1F0A, 0x1F8A, +GDK_KEY_Greek_iota, 0x1F0B, 0x1F8B, +GDK_KEY_Greek_iota, 0x1F0C, 0x1F8C, +GDK_KEY_Greek_iota, 0x1F0D, 0x1F8D, +GDK_KEY_Greek_iota, 0x1F0E, 0x1F8E, +GDK_KEY_Greek_iota, 0x1F0F, 0x1F8F, +GDK_KEY_Greek_iota, 0x1F20, 0x1F90, +GDK_KEY_Greek_iota, 0x1F21, 0x1F91, +GDK_KEY_Greek_iota, 0x1F22, 0x1F92, +GDK_KEY_Greek_iota, 0x1F23, 0x1F93, +GDK_KEY_Greek_iota, 0x1F24, 0x1F94, +GDK_KEY_Greek_iota, 0x1F25, 0x1F95, +GDK_KEY_Greek_iota, 0x1F26, 0x1F96, +GDK_KEY_Greek_iota, 0x1F27, 0x1F97, +GDK_KEY_Greek_iota, 0x1F28, 0x1F98, +GDK_KEY_Greek_iota, 0x1F29, 0x1F99, +GDK_KEY_Greek_iota, 0x1F2A, 0x1F9A, +GDK_KEY_Greek_iota, 0x1F2B, 0x1F9B, +GDK_KEY_Greek_iota, 0x1F2C, 0x1F9C, +GDK_KEY_Greek_iota, 0x1F2D, 0x1F9D, +GDK_KEY_Greek_iota, 0x1F2E, 0x1F9E, +GDK_KEY_Greek_iota, 0x1F2F, 0x1F9F, +GDK_KEY_Greek_iota, 0x1F60, 0x1FA0, +GDK_KEY_Greek_iota, 0x1F61, 0x1FA1, +GDK_KEY_Greek_iota, 0x1F62, 0x1FA2, +GDK_KEY_Greek_iota, 0x1F63, 0x1FA3, +GDK_KEY_Greek_iota, 0x1F64, 0x1FA4, +GDK_KEY_Greek_iota, 0x1F65, 0x1FA5, +GDK_KEY_Greek_iota, 0x1F66, 0x1FA6, +GDK_KEY_Greek_iota, 0x1F67, 0x1FA7, +GDK_KEY_Greek_iota, 0x1F68, 0x1FA8, +GDK_KEY_Greek_iota, 0x1F69, 0x1FA9, +GDK_KEY_Greek_iota, 0x1F6A, 0x1FAA, +GDK_KEY_Greek_iota, 0x1F6B, 0x1FAB, +GDK_KEY_Greek_iota, 0x1F6C, 0x1FAC, +GDK_KEY_Greek_iota, 0x1F6D, 0x1FAD, +GDK_KEY_Greek_iota, 0x1F6E, 0x1FAE, +GDK_KEY_Greek_iota, 0x1F6F, 0x1FAF, +GDK_KEY_Greek_iota, 0x1F70, 0x1FB2, +GDK_KEY_Greek_iota, 0x1F74, 0x1FC2, +GDK_KEY_Greek_iota, 0x1F7C, 0x1FF2, +GDK_KEY_Greek_iota, 0x1FB6, 0x1FB7, +GDK_KEY_Greek_iota, 0x1FC6, 0x1FC7, +GDK_KEY_Greek_iota, 0x1FF6, 0x1FF7, +GDK_KEY_Greek_omicron, GDK_KEY_apostrophe, 0x03CC, +GDK_KEY_Greek_upsilon, GDK_KEY_quotedbl, 0x03CB, +GDK_KEY_Greek_upsilon, GDK_KEY_apostrophe, 0x03CD, +GDK_KEY_Greek_omega, GDK_KEY_apostrophe, 0x03CE, +GDK_KEY_lessthanequal, 0x0338, 0x2270, +GDK_KEY_greaterthanequal, 0x0338, 0x2271, +GDK_KEY_approximate, 0x0338, 0x2247, +GDK_KEY_identical, 0x0338, 0x2262, +GDK_KEY_includedin, 0x0338, 0x2284, +GDK_KEY_includes, 0x0338, 0x2285, +0x093C, 0x0915, 0x0958, +0x093C, 0x0916, 0x0959, +0x093C, 0x0917, 0x095A, +0x093C, 0x091C, 0x095B, +0x093C, 0x0921, 0x095C, +0x093C, 0x0922, 0x095D, +0x093C, 0x0928, 0x0929, +0x093C, 0x092B, 0x095E, +0x093C, 0x092F, 0x095F, +0x093C, 0x0930, 0x0931, +0x093C, 0x0933, 0x0934, +0x09BC, 0x09A1, 0x09DC, +0x09BC, 0x09A2, 0x09DD, +0x09BC, 0x09AF, 0x09DF, +0x09C7, 0x09BE, 0x09CB, +0x09C7, 0x09D7, 0x09CC, +0x0A3C, 0x0A16, 0x0A59, +0x0A3C, 0x0A17, 0x0A5A, +0x0A3C, 0x0A1C, 0x0A5B, +0x0A3C, 0x0A2B, 0x0A5E, +0x0A3C, 0x0A32, 0x0A33, +0x0A3C, 0x0A38, 0x0A36, +0x0B3C, 0x0B21, 0x0B5C, +0x0B3C, 0x0B22, 0x0B5D, +0x0B47, 0x0B3E, 0x0B4B, +0x0B47, 0x0B56, 0x0B48, +0x0B47, 0x0B57, 0x0B4C, +GDK_KEY_leftcaret, 0x0338, 0x226E, +GDK_KEY_rightcaret, 0x0338, 0x226F, +GDK_KEY_underbar, GDK_KEY_parenleft, 0x208D, +GDK_KEY_underbar, GDK_KEY_parenright, 0x208E, +GDK_KEY_underbar, GDK_KEY_plus, 0x208A, +GDK_KEY_underbar, GDK_KEY_0, 0x2080, +GDK_KEY_underbar, GDK_KEY_1, 0x2081, +GDK_KEY_underbar, GDK_KEY_2, 0x2082, +GDK_KEY_underbar, GDK_KEY_3, 0x2083, +GDK_KEY_underbar, GDK_KEY_4, 0x2084, +GDK_KEY_underbar, GDK_KEY_5, 0x2085, +GDK_KEY_underbar, GDK_KEY_6, 0x2086, +GDK_KEY_underbar, GDK_KEY_7, 0x2087, +GDK_KEY_underbar, GDK_KEY_8, 0x2088, +GDK_KEY_underbar, GDK_KEY_9, 0x2089, +GDK_KEY_underbar, GDK_KEY_equal, 0x208C, +0x0BC6, 0x0BBE, 0x0BCA, +0x0BC6, 0x0BD7, 0x0BCC, +GDK_KEY_underbar, 0x2212, 0x208B, +GDK_KEY_underbar, GDK_KEY_KP_Space, 0x2082, +GDK_KEY_underbar, GDK_KEY_KP_Add, 0x208A, +GDK_KEY_underbar, GDK_KEY_KP_0, 0x2080, +GDK_KEY_underbar, GDK_KEY_KP_1, 0x2081, +GDK_KEY_underbar, GDK_KEY_KP_2, 0x2082, +GDK_KEY_underbar, GDK_KEY_KP_3, 0x2083, +GDK_KEY_underbar, GDK_KEY_KP_4, 0x2084, +GDK_KEY_underbar, GDK_KEY_KP_5, 0x2085, +GDK_KEY_underbar, GDK_KEY_KP_6, 0x2086, +GDK_KEY_underbar, GDK_KEY_KP_7, 0x2087, +GDK_KEY_underbar, GDK_KEY_KP_8, 0x2088, +GDK_KEY_underbar, GDK_KEY_KP_9, 0x2089, +GDK_KEY_underbar, GDK_KEY_KP_Equal, 0x208C, +0x0BC7, 0x0BBE, 0x0BCB, +0x0BD7, 0x0B92, 0x0B94, +GDK_KEY_rightshoe, 0x0338, 0x2285, +GDK_KEY_leftshoe, 0x0338, 0x2284, +GDK_KEY_righttack, 0x0338, 0x22AC, +0x0C46, 0x0C56, 0x0C48, +0x0CBF, 0x0CD5, 0x0CC0, +0x0CC6, 0x0CC2, 0x0CCA, +0x0CC6, 0x0CD5, 0x0CC7, +0x0CC6, 0x0CD6, 0x0CC8, +0x0CCA, 0x0CD5, 0x0CCB, +0x0D46, 0x0D3E, 0x0D4A, +0x0D46, 0x0D57, 0x0D4C, +0x0D47, 0x0D3E, 0x0D4B, +0x0DD9, 0x0DCA, 0x0DDA, +0x0DD9, 0x0DCF, 0x0DDC, +0x0DD9, 0x0DDF, 0x0DDE, +0x0DDC, 0x0DCA, 0x0DDD, +0x0F71, 0x0F72, 0x0F73, +0x0F71, 0x0F74, 0x0F75, +0x0F71, 0x0F80, 0x0F81, +0x0F90, 0x0FB5, 0x0FB9, +0x0F92, 0x0FB7, 0x0F93, +0x0F9C, 0x0FB7, 0x0F9D, +0x0FA1, 0x0FB7, 0x0FA2, +0x0FA6, 0x0FB7, 0x0FA7, +0x0FAB, 0x0FB7, 0x0FAC, +0x0FB2, 0x0F80, 0x0F76, +0x0FB3, 0x0F80, 0x0F78, +0x0FB5, 0x0F40, 0x0F69, +0x0FB7, 0x0F42, 0x0F43, +0x0FB7, 0x0F4C, 0x0F4D, +0x0FB7, 0x0F51, 0x0F52, +0x0FB7, 0x0F56, 0x0F57, +0x0FB7, 0x0F5B, 0x0F5C, +0x102E, 0x1025, 0x1026, +0x1100, 0x1100, 0x1101, +0x1102, 0x1100, 0x1113, +0x1102, 0x1102, 0x1114, +0x1102, 0x1103, 0x1115, +0x1102, 0x1107, 0x1116, +0x1103, 0x1100, 0x1117, +0x1103, 0x1103, 0x1104, +0x1105, 0x1102, 0x1118, +0x1105, 0x1105, 0x1119, +0x1105, 0x110B, 0x111B, +0x1105, 0x1112, 0x111A, +0x1106, 0x1107, 0x111C, +0x1106, 0x110B, 0x111D, +0x1107, 0x1100, 0x111E, +0x1107, 0x1102, 0x111F, +0x1107, 0x1103, 0x1120, +0x1107, 0x1107, 0x1108, +0x1107, 0x1109, 0x1121, +0x1107, 0x110A, 0x1125, +0x1107, 0x110B, 0x112B, +0x1107, 0x110C, 0x1127, +0x1107, 0x110E, 0x1128, +0x1107, 0x1110, 0x1129, +0x1107, 0x1111, 0x112A, +0x1107, 0x112B, 0x112C, +0x1107, 0x112D, 0x1122, +0x1107, 0x112F, 0x1123, +0x1107, 0x1132, 0x1124, +0x1107, 0x1136, 0x1126, +0x1108, 0x110B, 0x112C, +0x1109, 0x1100, 0x112D, +0x1109, 0x1102, 0x112E, +0x1109, 0x1103, 0x112F, +0x1109, 0x1105, 0x1130, +0x1109, 0x1106, 0x1131, +0x1109, 0x1107, 0x1132, +0x1109, 0x1109, 0x110A, +0x1109, 0x110A, 0x1134, +0x1109, 0x110B, 0x1135, +0x1109, 0x110C, 0x1136, +0x1109, 0x110E, 0x1137, +0x1109, 0x110F, 0x1138, +0x1109, 0x1110, 0x1139, +0x1109, 0x1111, 0x113A, +0x1109, 0x1112, 0x113B, +0x1109, 0x111E, 0x1133, +0x110A, 0x1109, 0x1134, +0x110B, 0x1100, 0x1141, +0x110B, 0x1103, 0x1142, +0x110B, 0x1106, 0x1143, +0x110B, 0x1107, 0x1144, +0x110B, 0x1109, 0x1145, +0x110B, 0x110B, 0x1147, +0x110B, 0x110C, 0x1148, +0x110B, 0x110E, 0x1149, +0x110B, 0x1110, 0x114A, +0x110B, 0x1111, 0x114B, +0x110B, 0x1140, 0x1146, +0x110C, 0x110B, 0x114D, +0x110C, 0x110C, 0x110D, +0x110E, 0x110F, 0x1152, +0x110E, 0x1112, 0x1153, +0x1111, 0x1107, 0x1156, +0x1111, 0x110B, 0x1157, +0x1112, 0x1112, 0x1158, +0x1121, 0x1100, 0x1122, +0x1121, 0x1103, 0x1123, +0x1121, 0x1107, 0x1124, +0x1121, 0x1109, 0x1125, +0x1121, 0x110C, 0x1126, +0x1132, 0x1100, 0x1133, +0x113C, 0x113C, 0x113D, +0x113E, 0x113E, 0x113F, +0x114E, 0x114E, 0x114F, +0x1150, 0x1150, 0x1151, +0x1161, 0x1169, 0x1176, +0x1161, 0x116E, 0x1177, +0x1161, 0x1175, 0x1162, +0x1163, 0x1169, 0x1178, +0x1163, 0x116D, 0x1179, +0x1163, 0x1175, 0x1164, +0x1165, 0x1169, 0x117A, +0x1165, 0x116E, 0x117B, +0x1165, 0x1173, 0x117C, +0x1165, 0x1175, 0x1166, +0x1167, 0x1169, 0x117D, +0x1167, 0x116E, 0x117E, +0x1167, 0x1175, 0x1168, +0x1169, 0x1161, 0x116A, +0x1169, 0x1162, 0x116B, +0x1169, 0x1165, 0x117F, +0x1169, 0x1166, 0x1180, +0x1169, 0x1168, 0x1181, +0x1169, 0x1169, 0x1182, +0x1169, 0x116E, 0x1183, +0x1169, 0x1175, 0x116C, +0x116A, 0x1175, 0x116B, +0x116D, 0x1163, 0x1184, +0x116D, 0x1164, 0x1185, +0x116D, 0x1167, 0x1186, +0x116D, 0x1169, 0x1187, +0x116D, 0x1175, 0x1188, +0x116E, 0x1161, 0x1189, +0x116E, 0x1162, 0x118A, +0x116E, 0x1165, 0x116F, +0x116E, 0x1166, 0x1170, +0x116E, 0x1168, 0x118C, +0x116E, 0x116E, 0x118D, +0x116E, 0x1175, 0x1171, +0x116E, 0x117C, 0x118B, +0x116F, 0x1173, 0x118B, +0x116F, 0x1175, 0x1170, +0x1172, 0x1161, 0x118E, +0x1172, 0x1165, 0x118F, +0x1172, 0x1166, 0x1190, +0x1172, 0x1167, 0x1191, +0x1172, 0x1168, 0x1192, +0x1172, 0x116E, 0x1193, +0x1172, 0x1175, 0x1194, +0x1173, 0x116E, 0x1195, +0x1173, 0x1173, 0x1196, +0x1173, 0x1175, 0x1174, +0x1174, 0x116E, 0x1197, +0x1175, 0x1161, 0x1198, +0x1175, 0x1163, 0x1199, +0x1175, 0x1169, 0x119A, +0x1175, 0x116E, 0x119B, +0x1175, 0x1173, 0x119C, +0x1175, 0x119E, 0x119D, +0x119E, 0x1165, 0x119F, +0x119E, 0x116E, 0x11A0, +0x119E, 0x1175, 0x11A1, +0x119E, 0x119E, 0x11A2, +0x11A8, 0x11A8, 0x11A9, +0x11A8, 0x11AF, 0x11C3, +0x11A8, 0x11BA, 0x11AA, +0x11A8, 0x11E7, 0x11C4, +0x11AA, 0x11A8, 0x11C4, +0x11AB, 0x11A8, 0x11C5, +0x11AB, 0x11AE, 0x11C6, +0x11AB, 0x11BA, 0x11C7, +0x11AB, 0x11BD, 0x11AC, +0x11AB, 0x11C0, 0x11C9, +0x11AB, 0x11C2, 0x11AD, +0x11AB, 0x11EB, 0x11C8, +0x11AE, 0x11A8, 0x11CA, +0x11AE, 0x11AF, 0x11CB, +0x11AF, 0x11A8, 0x11B0, +0x11AF, 0x11AA, 0x11CC, +0x11AF, 0x11AB, 0x11CD, +0x11AF, 0x11AE, 0x11CE, +0x11AF, 0x11AF, 0x11D0, +0x11AF, 0x11B7, 0x11B1, +0x11AF, 0x11B8, 0x11B2, +0x11AF, 0x11B9, 0x11D3, +0x11AF, 0x11BA, 0x11B3, +0x11AF, 0x11BB, 0x11D6, +0x11AF, 0x11BF, 0x11D8, +0x11AF, 0x11C0, 0x11B4, +0x11AF, 0x11C1, 0x11B5, +0x11AF, 0x11C2, 0x11B6, +0x11AF, 0x11DA, 0x11D1, +0x11AF, 0x11DD, 0x11D2, +0x11AF, 0x11E5, 0x11D4, +0x11AF, 0x11E6, 0x11D5, +0x11AF, 0x11EB, 0x11D7, +0x11AF, 0x11F9, 0x11D9, +0x11B0, 0x11BA, 0x11CC, +0x11B1, 0x11A8, 0x11D1, +0x11B1, 0x11BA, 0x11D2, +0x11B2, 0x11BA, 0x11D3, +0x11B2, 0x11BC, 0x11D5, +0x11B2, 0x11C2, 0x11D4, +0x11B3, 0x11BA, 0x11D6, +0x11B7, 0x11A8, 0x11DA, +0x11B7, 0x11AF, 0x11DB, +0x11B7, 0x11B8, 0x11DC, +0x11B7, 0x11BA, 0x11DD, +0x11B7, 0x11BB, 0x11DE, +0x11B7, 0x11BC, 0x11E2, +0x11B7, 0x11BE, 0x11E0, +0x11B7, 0x11C2, 0x11E1, +0x11B7, 0x11EB, 0x11DF, +0x11B8, 0x11AF, 0x11E3, +0x11B8, 0x11BA, 0x11B9, +0x11B8, 0x11BC, 0x11E6, +0x11B8, 0x11C1, 0x11E4, +0x11B8, 0x11C2, 0x11E5, +0x11BA, 0x11A8, 0x11E7, +0x11BA, 0x11AE, 0x11E8, +0x11BA, 0x11AF, 0x11E9, +0x11BA, 0x11B8, 0x11EA, +0x11BA, 0x11BA, 0x11BB, +0x11BC, 0x11A8, 0x11EC, +0x11BC, 0x11A9, 0x11ED, +0x11BC, 0x11BC, 0x11EE, +0x11BC, 0x11BF, 0x11EF, +0x11C1, 0x11B8, 0x11F3, +0x11C1, 0x11BC, 0x11F4, +0x11C2, 0x11AB, 0x11F5, +0x11C2, 0x11AF, 0x11F6, +0x11C2, 0x11B7, 0x11F7, +0x11C2, 0x11B8, 0x11F8, +0x11CE, 0x11C2, 0x11CF, +0x11DD, 0x11BA, 0x11DE, +0x11EC, 0x11A8, 0x11ED, +0x11F0, 0x11BA, 0x11F1, +0x11F0, 0x11EB, 0x11F2, +0x1FBF, GDK_KEY_apostrophe, 0x1FCE, +0x1FBF, GDK_KEY_grave, 0x1FCD, +0x1FBF, GDK_KEY_asciitilde, 0x1FCF, +0x1FBF, GDK_KEY_acute, 0x1FCE, +0x1FBF, GDK_KEY_dead_grave, 0x1FCD, +0x1FBF, GDK_KEY_dead_acute, 0x1FCE, +0x1FBF, GDK_KEY_dead_tilde, 0x1FCF, +0x1FFE, GDK_KEY_apostrophe, 0x1FDE, +0x1FFE, GDK_KEY_grave, 0x1FDD, +0x1FFE, GDK_KEY_asciitilde, 0x1FDF, +0x1FFE, GDK_KEY_acute, 0x1FDE, +0x1FFE, GDK_KEY_dead_grave, 0x1FDD, +0x1FFE, GDK_KEY_dead_acute, 0x1FDE, +0x1FFE, GDK_KEY_dead_tilde, 0x1FDF, +0x2203, 0x0338, 0x2204, +0x2208, 0x0338, 0x2209, +0x220B, 0x0338, 0x220C, +0x2223, 0x0338, 0x2224, +0x2225, 0x0338, 0x2226, +0x223C, 0x0338, 0x2241, +0x2243, 0x0338, 0x2244, +0x2248, 0x0338, 0x2249, +0x224D, 0x0338, 0x226D, +0x2272, 0x0338, 0x2274, +0x2273, 0x0338, 0x2275, +0x2276, 0x0338, 0x2278, +0x2277, 0x0338, 0x2279, +0x227A, 0x0338, 0x2280, +0x227B, 0x0338, 0x2281, +0x227C, 0x0338, 0x22E0, +0x227D, 0x0338, 0x22E1, +0x2286, 0x0338, 0x2288, +0x2287, 0x0338, 0x2289, +0x2291, 0x0338, 0x22E2, +0x2292, 0x0338, 0x22E3, +0x22A8, 0x0338, 0x22AD, +0x22A9, 0x0338, 0x22AE, +0x22AB, 0x0338, 0x22AF, +0x22B2, 0x0338, 0x22EA, +0x22B3, 0x0338, 0x22EB, +0x22B4, 0x0338, 0x22EC, +0x22B5, 0x0338, 0x22ED, +0x2ADD, 0x0338, 0x2ADC, +GDK_KEY_KP_Divide, GDK_KEY_D, 0x0110, +GDK_KEY_KP_Divide, GDK_KEY_G, 0x01E4, +GDK_KEY_KP_Divide, GDK_KEY_H, 0x0126, +GDK_KEY_KP_Divide, GDK_KEY_I, 0x0197, +GDK_KEY_KP_Divide, GDK_KEY_L, 0x0141, +GDK_KEY_KP_Divide, GDK_KEY_O, 0x00D8, +GDK_KEY_KP_Divide, GDK_KEY_T, 0x0166, +GDK_KEY_KP_Divide, GDK_KEY_Z, 0x01B5, +GDK_KEY_KP_Divide, GDK_KEY_b, 0x0180, +GDK_KEY_KP_Divide, GDK_KEY_d, 0x0111, +GDK_KEY_KP_Divide, GDK_KEY_g, 0x01E5, +GDK_KEY_KP_Divide, GDK_KEY_h, 0x0127, +GDK_KEY_KP_Divide, GDK_KEY_i, 0x0268, +GDK_KEY_KP_Divide, GDK_KEY_l, 0x0142, +GDK_KEY_KP_Divide, GDK_KEY_o, 0x00F8, +GDK_KEY_KP_Divide, GDK_KEY_t, 0x0167, +GDK_KEY_KP_Divide, GDK_KEY_z, 0x01B6, +GDK_KEY_KP_Divide, 0x0294, 0x02A1, +GDK_KEY_KP_Divide, 0x04AE, 0x04B0, +GDK_KEY_KP_Divide, 0x04AF, 0x04B1, +GDK_KEY_KP_Divide, GDK_KEY_Cyrillic_ghe, 0x0493, +GDK_KEY_KP_Divide, GDK_KEY_Cyrillic_ka, 0x049F, +GDK_KEY_KP_Divide, GDK_KEY_Cyrillic_GHE, 0x0492, +GDK_KEY_KP_Divide, GDK_KEY_Cyrillic_KA, 0x049E, +GDK_KEY_KP_Divide, GDK_KEY_leftarrow, 0x219A, +GDK_KEY_KP_Divide, GDK_KEY_rightarrow, 0x219B, +GDK_KEY_KP_Divide, 0x2194, 0x21AE, +GDK_KEY_KP_Equal, 0x0338, 0x2260, +GDK_KEY_exclam, GDK_KEY_plus, GDK_KEY_O, 0x1EE2, +GDK_KEY_exclam, GDK_KEY_plus, GDK_KEY_U, 0x1EF0, +GDK_KEY_exclam, GDK_KEY_plus, GDK_KEY_o, 0x1EE3, +GDK_KEY_exclam, GDK_KEY_plus, GDK_KEY_u, 0x1EF1, +GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EE2, +GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EF0, +GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EE3, +GDK_KEY_exclam, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EF1, +GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_space, 0x0385, +GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_quotedbl, GDK_KEY_apostrophe, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_quotedbl, GDK_KEY_underscore, GDK_KEY_U, 0x1E7A, +GDK_KEY_quotedbl, GDK_KEY_underscore, GDK_KEY_u, 0x1E7B, +GDK_KEY_quotedbl, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4E, +GDK_KEY_quotedbl, GDK_KEY_asciitilde, GDK_KEY_o, 0x1E4F, +GDK_KEY_quotedbl, GDK_KEY_macron, GDK_KEY_U, 0x1E7A, +GDK_KEY_quotedbl, GDK_KEY_macron, GDK_KEY_u, 0x1E7B, +GDK_KEY_quotedbl, GDK_KEY_dead_tilde, GDK_KEY_O, 0x1E4E, +GDK_KEY_quotedbl, GDK_KEY_dead_tilde, GDK_KEY_o, 0x1E4F, +GDK_KEY_quotedbl, GDK_KEY_dead_macron, GDK_KEY_U, 0x1E7A, +GDK_KEY_quotedbl, GDK_KEY_dead_macron, GDK_KEY_u, 0x1E7B, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_space, 0x0385, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_I, 0x1E2E, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D7, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_i, 0x1E2F, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D8, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_apostrophe, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_apostrophe, GDK_KEY_plus, GDK_KEY_O, 0x1EDA, +GDK_KEY_apostrophe, GDK_KEY_plus, GDK_KEY_U, 0x1EE8, +GDK_KEY_apostrophe, GDK_KEY_plus, GDK_KEY_o, 0x1EDB, +GDK_KEY_apostrophe, GDK_KEY_plus, GDK_KEY_u, 0x1EE9, +GDK_KEY_apostrophe, GDK_KEY_slash, GDK_KEY_O, 0x01FE, +GDK_KEY_apostrophe, GDK_KEY_slash, GDK_KEY_o, 0x01FF, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA4, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EBE, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED0, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA5, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EBF, +GDK_KEY_apostrophe, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED1, +GDK_KEY_apostrophe, GDK_KEY_underscore, GDK_KEY_E, 0x1E16, +GDK_KEY_apostrophe, GDK_KEY_underscore, GDK_KEY_O, 0x1E52, +GDK_KEY_apostrophe, GDK_KEY_underscore, GDK_KEY_e, 0x1E17, +GDK_KEY_apostrophe, GDK_KEY_underscore, GDK_KEY_o, 0x1E53, +GDK_KEY_apostrophe, GDK_KEY_b, GDK_KEY_A, 0x1EAE, +GDK_KEY_apostrophe, GDK_KEY_b, GDK_KEY_a, 0x1EAF, +GDK_KEY_apostrophe, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4C, +GDK_KEY_apostrophe, GDK_KEY_asciitilde, GDK_KEY_U, 0x1E78, +GDK_KEY_apostrophe, GDK_KEY_asciitilde, GDK_KEY_o, 0x1E4D, +GDK_KEY_apostrophe, GDK_KEY_asciitilde, GDK_KEY_u, 0x1E79, +GDK_KEY_apostrophe, GDK_KEY_macron, GDK_KEY_E, 0x1E16, +GDK_KEY_apostrophe, GDK_KEY_macron, GDK_KEY_O, 0x1E52, +GDK_KEY_apostrophe, GDK_KEY_macron, GDK_KEY_e, 0x1E17, +GDK_KEY_apostrophe, GDK_KEY_macron, GDK_KEY_o, 0x1E53, +GDK_KEY_apostrophe, GDK_KEY_cedilla, GDK_KEY_C, 0x1E08, +GDK_KEY_apostrophe, GDK_KEY_cedilla, GDK_KEY_c, 0x1E09, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_A, 0x1EA4, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_E, 0x1EBE, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_O, 0x1ED0, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_a, 0x1EA5, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_e, 0x1EBF, +GDK_KEY_apostrophe, GDK_KEY_dead_circumflex, GDK_KEY_o, 0x1ED1, +GDK_KEY_apostrophe, GDK_KEY_dead_tilde, GDK_KEY_O, 0x1E4C, +GDK_KEY_apostrophe, GDK_KEY_dead_tilde, GDK_KEY_U, 0x1E78, +GDK_KEY_apostrophe, GDK_KEY_dead_tilde, GDK_KEY_o, 0x1E4D, +GDK_KEY_apostrophe, GDK_KEY_dead_tilde, GDK_KEY_u, 0x1E79, +GDK_KEY_apostrophe, GDK_KEY_dead_macron, GDK_KEY_E, 0x1E16, +GDK_KEY_apostrophe, GDK_KEY_dead_macron, GDK_KEY_O, 0x1E52, +GDK_KEY_apostrophe, GDK_KEY_dead_macron, GDK_KEY_e, 0x1E17, +GDK_KEY_apostrophe, GDK_KEY_dead_macron, GDK_KEY_o, 0x1E53, +GDK_KEY_apostrophe, GDK_KEY_dead_breve, GDK_KEY_A, 0x1EAE, +GDK_KEY_apostrophe, GDK_KEY_dead_breve, GDK_KEY_a, 0x1EAF, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_I, 0x1E2E, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01D7, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_i, 0x1E2F, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01D8, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_apostrophe, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_apostrophe, GDK_KEY_dead_abovering, GDK_KEY_A, 0x01FA, +GDK_KEY_apostrophe, GDK_KEY_dead_abovering, GDK_KEY_a, 0x01FB, +GDK_KEY_apostrophe, GDK_KEY_dead_cedilla, GDK_KEY_C, 0x1E08, +GDK_KEY_apostrophe, GDK_KEY_dead_cedilla, GDK_KEY_c, 0x1E09, +GDK_KEY_apostrophe, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EDA, +GDK_KEY_apostrophe, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EE8, +GDK_KEY_apostrophe, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EDB, +GDK_KEY_apostrophe, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EE9, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_apostrophe, GDK_KEY_KP_Divide, GDK_KEY_O, 0x01FE, +GDK_KEY_apostrophe, GDK_KEY_KP_Divide, GDK_KEY_o, 0x01FF, +GDK_KEY_parenleft, GDK_KEY_0, GDK_KEY_parenright, 0x24EA, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_parenright, 0x2460, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_parenright, 0x2461, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_parenright, 0x2462, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_parenright, 0x2463, +GDK_KEY_parenleft, GDK_KEY_5, GDK_KEY_parenright, 0x2464, +GDK_KEY_parenleft, GDK_KEY_6, GDK_KEY_parenright, 0x2465, +GDK_KEY_parenleft, GDK_KEY_7, GDK_KEY_parenright, 0x2466, +GDK_KEY_parenleft, GDK_KEY_8, GDK_KEY_parenright, 0x2467, +GDK_KEY_parenleft, GDK_KEY_9, GDK_KEY_parenright, 0x2468, +GDK_KEY_parenleft, GDK_KEY_A, GDK_KEY_parenright, 0x24B6, +GDK_KEY_parenleft, GDK_KEY_B, GDK_KEY_parenright, 0x24B7, +GDK_KEY_parenleft, GDK_KEY_C, GDK_KEY_parenright, 0x24B8, +GDK_KEY_parenleft, GDK_KEY_D, GDK_KEY_parenright, 0x24B9, +GDK_KEY_parenleft, GDK_KEY_E, GDK_KEY_parenright, 0x24BA, +GDK_KEY_parenleft, GDK_KEY_F, GDK_KEY_parenright, 0x24BB, +GDK_KEY_parenleft, GDK_KEY_G, GDK_KEY_parenright, 0x24BC, +GDK_KEY_parenleft, GDK_KEY_H, GDK_KEY_parenright, 0x24BD, +GDK_KEY_parenleft, GDK_KEY_I, GDK_KEY_parenright, 0x24BE, +GDK_KEY_parenleft, GDK_KEY_J, GDK_KEY_parenright, 0x24BF, +GDK_KEY_parenleft, GDK_KEY_K, GDK_KEY_parenright, 0x24C0, +GDK_KEY_parenleft, GDK_KEY_L, GDK_KEY_parenright, 0x24C1, +GDK_KEY_parenleft, GDK_KEY_M, GDK_KEY_parenright, 0x24C2, +GDK_KEY_parenleft, GDK_KEY_N, GDK_KEY_parenright, 0x24C3, +GDK_KEY_parenleft, GDK_KEY_O, GDK_KEY_parenright, 0x24C4, +GDK_KEY_parenleft, GDK_KEY_P, GDK_KEY_parenright, 0x24C5, +GDK_KEY_parenleft, GDK_KEY_Q, GDK_KEY_parenright, 0x24C6, +GDK_KEY_parenleft, GDK_KEY_R, GDK_KEY_parenright, 0x24C7, +GDK_KEY_parenleft, GDK_KEY_S, GDK_KEY_parenright, 0x24C8, +GDK_KEY_parenleft, GDK_KEY_T, GDK_KEY_parenright, 0x24C9, +GDK_KEY_parenleft, GDK_KEY_U, GDK_KEY_parenright, 0x24CA, +GDK_KEY_parenleft, GDK_KEY_V, GDK_KEY_parenright, 0x24CB, +GDK_KEY_parenleft, GDK_KEY_W, GDK_KEY_parenright, 0x24CC, +GDK_KEY_parenleft, GDK_KEY_X, GDK_KEY_parenright, 0x24CD, +GDK_KEY_parenleft, GDK_KEY_Y, GDK_KEY_parenright, 0x24CE, +GDK_KEY_parenleft, GDK_KEY_Z, GDK_KEY_parenright, 0x24CF, +GDK_KEY_parenleft, GDK_KEY_a, GDK_KEY_parenright, 0x24D0, +GDK_KEY_parenleft, GDK_KEY_b, GDK_KEY_parenright, 0x24D1, +GDK_KEY_parenleft, GDK_KEY_c, GDK_KEY_parenright, 0x24D2, +GDK_KEY_parenleft, GDK_KEY_d, GDK_KEY_parenright, 0x24D3, +GDK_KEY_parenleft, GDK_KEY_e, GDK_KEY_parenright, 0x24D4, +GDK_KEY_parenleft, GDK_KEY_f, GDK_KEY_parenright, 0x24D5, +GDK_KEY_parenleft, GDK_KEY_g, GDK_KEY_parenright, 0x24D6, +GDK_KEY_parenleft, GDK_KEY_h, GDK_KEY_parenright, 0x24D7, +GDK_KEY_parenleft, GDK_KEY_i, GDK_KEY_parenright, 0x24D8, +GDK_KEY_parenleft, GDK_KEY_j, GDK_KEY_parenright, 0x24D9, +GDK_KEY_parenleft, GDK_KEY_k, GDK_KEY_parenright, 0x24DA, +GDK_KEY_parenleft, GDK_KEY_l, GDK_KEY_parenright, 0x24DB, +GDK_KEY_parenleft, GDK_KEY_m, GDK_KEY_parenright, 0x24DC, +GDK_KEY_parenleft, GDK_KEY_n, GDK_KEY_parenright, 0x24DD, +GDK_KEY_parenleft, GDK_KEY_o, GDK_KEY_parenright, 0x24DE, +GDK_KEY_parenleft, GDK_KEY_p, GDK_KEY_parenright, 0x24DF, +GDK_KEY_parenleft, GDK_KEY_q, GDK_KEY_parenright, 0x24E0, +GDK_KEY_parenleft, GDK_KEY_r, GDK_KEY_parenright, 0x24E1, +GDK_KEY_parenleft, GDK_KEY_s, GDK_KEY_parenright, 0x24E2, +GDK_KEY_parenleft, GDK_KEY_t, GDK_KEY_parenright, 0x24E3, +GDK_KEY_parenleft, GDK_KEY_u, GDK_KEY_parenright, 0x24E4, +GDK_KEY_parenleft, GDK_KEY_v, GDK_KEY_parenright, 0x24E5, +GDK_KEY_parenleft, GDK_KEY_w, GDK_KEY_parenright, 0x24E6, +GDK_KEY_parenleft, GDK_KEY_x, GDK_KEY_parenright, 0x24E7, +GDK_KEY_parenleft, GDK_KEY_y, GDK_KEY_parenright, 0x24E8, +GDK_KEY_parenleft, GDK_KEY_z, GDK_KEY_parenright, 0x24E9, +GDK_KEY_parenleft, GDK_KEY_kana_WO, GDK_KEY_parenright, 0x32FE, +GDK_KEY_parenleft, GDK_KEY_kana_A, GDK_KEY_parenright, 0x32D0, +GDK_KEY_parenleft, GDK_KEY_kana_I, GDK_KEY_parenright, 0x32D1, +GDK_KEY_parenleft, GDK_KEY_kana_U, GDK_KEY_parenright, 0x32D2, +GDK_KEY_parenleft, GDK_KEY_kana_E, GDK_KEY_parenright, 0x32D3, +GDK_KEY_parenleft, GDK_KEY_kana_O, GDK_KEY_parenright, 0x32D4, +GDK_KEY_parenleft, GDK_KEY_kana_KA, GDK_KEY_parenright, 0x32D5, +GDK_KEY_parenleft, GDK_KEY_kana_KI, GDK_KEY_parenright, 0x32D6, +GDK_KEY_parenleft, GDK_KEY_kana_KU, GDK_KEY_parenright, 0x32D7, +GDK_KEY_parenleft, GDK_KEY_kana_KE, GDK_KEY_parenright, 0x32D8, +GDK_KEY_parenleft, GDK_KEY_kana_KO, GDK_KEY_parenright, 0x32D9, +GDK_KEY_parenleft, GDK_KEY_kana_SA, GDK_KEY_parenright, 0x32DA, +GDK_KEY_parenleft, GDK_KEY_kana_SHI, GDK_KEY_parenright, 0x32DB, +GDK_KEY_parenleft, GDK_KEY_kana_SU, GDK_KEY_parenright, 0x32DC, +GDK_KEY_parenleft, GDK_KEY_kana_SE, GDK_KEY_parenright, 0x32DD, +GDK_KEY_parenleft, GDK_KEY_kana_SO, GDK_KEY_parenright, 0x32DE, +GDK_KEY_parenleft, GDK_KEY_kana_TA, GDK_KEY_parenright, 0x32DF, +GDK_KEY_parenleft, GDK_KEY_kana_CHI, GDK_KEY_parenright, 0x32E0, +GDK_KEY_parenleft, GDK_KEY_kana_TSU, GDK_KEY_parenright, 0x32E1, +GDK_KEY_parenleft, GDK_KEY_kana_TE, GDK_KEY_parenright, 0x32E2, +GDK_KEY_parenleft, GDK_KEY_kana_TO, GDK_KEY_parenright, 0x32E3, +GDK_KEY_parenleft, GDK_KEY_kana_NA, GDK_KEY_parenright, 0x32E4, +GDK_KEY_parenleft, GDK_KEY_kana_NI, GDK_KEY_parenright, 0x32E5, +GDK_KEY_parenleft, GDK_KEY_kana_NU, GDK_KEY_parenright, 0x32E6, +GDK_KEY_parenleft, GDK_KEY_kana_NE, GDK_KEY_parenright, 0x32E7, +GDK_KEY_parenleft, GDK_KEY_kana_NO, GDK_KEY_parenright, 0x32E8, +GDK_KEY_parenleft, GDK_KEY_kana_HA, GDK_KEY_parenright, 0x32E9, +GDK_KEY_parenleft, GDK_KEY_kana_HI, GDK_KEY_parenright, 0x32EA, +GDK_KEY_parenleft, GDK_KEY_kana_FU, GDK_KEY_parenright, 0x32EB, +GDK_KEY_parenleft, GDK_KEY_kana_HE, GDK_KEY_parenright, 0x32EC, +GDK_KEY_parenleft, GDK_KEY_kana_HO, GDK_KEY_parenright, 0x32ED, +GDK_KEY_parenleft, GDK_KEY_kana_MA, GDK_KEY_parenright, 0x32EE, +GDK_KEY_parenleft, GDK_KEY_kana_MI, GDK_KEY_parenright, 0x32EF, +GDK_KEY_parenleft, GDK_KEY_kana_MU, GDK_KEY_parenright, 0x32F0, +GDK_KEY_parenleft, GDK_KEY_kana_ME, GDK_KEY_parenright, 0x32F1, +GDK_KEY_parenleft, GDK_KEY_kana_MO, GDK_KEY_parenright, 0x32F2, +GDK_KEY_parenleft, GDK_KEY_kana_YA, GDK_KEY_parenright, 0x32F3, +GDK_KEY_parenleft, GDK_KEY_kana_YU, GDK_KEY_parenright, 0x32F4, +GDK_KEY_parenleft, GDK_KEY_kana_YO, GDK_KEY_parenright, 0x32F5, +GDK_KEY_parenleft, GDK_KEY_kana_RA, GDK_KEY_parenright, 0x32F6, +GDK_KEY_parenleft, GDK_KEY_kana_RI, GDK_KEY_parenright, 0x32F7, +GDK_KEY_parenleft, GDK_KEY_kana_RU, GDK_KEY_parenright, 0x32F8, +GDK_KEY_parenleft, GDK_KEY_kana_RE, GDK_KEY_parenright, 0x32F9, +GDK_KEY_parenleft, GDK_KEY_kana_RO, GDK_KEY_parenright, 0x32FA, +GDK_KEY_parenleft, GDK_KEY_kana_WA, GDK_KEY_parenright, 0x32FB, +GDK_KEY_parenleft, 0x1100, GDK_KEY_parenright, 0x3260, +GDK_KEY_parenleft, 0x1102, GDK_KEY_parenright, 0x3261, +GDK_KEY_parenleft, 0x1103, GDK_KEY_parenright, 0x3262, +GDK_KEY_parenleft, 0x1105, GDK_KEY_parenright, 0x3263, +GDK_KEY_parenleft, 0x1106, GDK_KEY_parenright, 0x3264, +GDK_KEY_parenleft, 0x1107, GDK_KEY_parenright, 0x3265, +GDK_KEY_parenleft, 0x1109, GDK_KEY_parenright, 0x3266, +GDK_KEY_parenleft, 0x110B, GDK_KEY_parenright, 0x3267, +GDK_KEY_parenleft, 0x110C, GDK_KEY_parenright, 0x3268, +GDK_KEY_parenleft, 0x110E, GDK_KEY_parenright, 0x3269, +GDK_KEY_parenleft, 0x110F, GDK_KEY_parenright, 0x326A, +GDK_KEY_parenleft, 0x1110, GDK_KEY_parenright, 0x326B, +GDK_KEY_parenleft, 0x1111, GDK_KEY_parenright, 0x326C, +GDK_KEY_parenleft, 0x1112, GDK_KEY_parenright, 0x326D, +GDK_KEY_parenleft, 0x30F0, GDK_KEY_parenright, 0x32FC, +GDK_KEY_parenleft, 0x30F1, GDK_KEY_parenright, 0x32FD, +GDK_KEY_parenleft, 0x4E00, GDK_KEY_parenright, 0x3280, +GDK_KEY_parenleft, 0x4E03, GDK_KEY_parenright, 0x3286, +GDK_KEY_parenleft, 0x4E09, GDK_KEY_parenright, 0x3282, +GDK_KEY_parenleft, 0x4E0A, GDK_KEY_parenright, 0x32A4, +GDK_KEY_parenleft, 0x4E0B, GDK_KEY_parenright, 0x32A6, +GDK_KEY_parenleft, 0x4E2D, GDK_KEY_parenright, 0x32A5, +GDK_KEY_parenleft, 0x4E5D, GDK_KEY_parenright, 0x3288, +GDK_KEY_parenleft, 0x4E8C, GDK_KEY_parenright, 0x3281, +GDK_KEY_parenleft, 0x4E94, GDK_KEY_parenright, 0x3284, +GDK_KEY_parenleft, 0x4F01, GDK_KEY_parenright, 0x32AD, +GDK_KEY_parenleft, 0x4F11, GDK_KEY_parenright, 0x32A1, +GDK_KEY_parenleft, 0x512A, GDK_KEY_parenright, 0x329D, +GDK_KEY_parenleft, 0x516B, GDK_KEY_parenright, 0x3287, +GDK_KEY_parenleft, 0x516D, GDK_KEY_parenright, 0x3285, +GDK_KEY_parenleft, 0x5199, GDK_KEY_parenright, 0x32A2, +GDK_KEY_parenleft, 0x52B4, GDK_KEY_parenright, 0x3298, +GDK_KEY_parenleft, 0x533B, GDK_KEY_parenright, 0x32A9, +GDK_KEY_parenleft, 0x5341, GDK_KEY_parenright, 0x3289, +GDK_KEY_parenleft, 0x5354, GDK_KEY_parenright, 0x32AF, +GDK_KEY_parenleft, 0x5370, GDK_KEY_parenright, 0x329E, +GDK_KEY_parenleft, 0x53F3, GDK_KEY_parenright, 0x32A8, +GDK_KEY_parenleft, 0x540D, GDK_KEY_parenright, 0x3294, +GDK_KEY_parenleft, 0x56DB, GDK_KEY_parenright, 0x3283, +GDK_KEY_parenleft, 0x571F, GDK_KEY_parenright, 0x328F, +GDK_KEY_parenleft, 0x591C, GDK_KEY_parenright, 0x32B0, +GDK_KEY_parenleft, 0x5973, GDK_KEY_parenright, 0x329B, +GDK_KEY_parenleft, 0x5B66, GDK_KEY_parenright, 0x32AB, +GDK_KEY_parenleft, 0x5B97, GDK_KEY_parenright, 0x32AA, +GDK_KEY_parenleft, 0x5DE6, GDK_KEY_parenright, 0x32A7, +GDK_KEY_parenleft, 0x65E5, GDK_KEY_parenright, 0x3290, +GDK_KEY_parenleft, 0x6708, GDK_KEY_parenright, 0x328A, +GDK_KEY_parenleft, 0x6709, GDK_KEY_parenright, 0x3292, +GDK_KEY_parenleft, 0x6728, GDK_KEY_parenright, 0x328D, +GDK_KEY_parenleft, 0x682A, GDK_KEY_parenright, 0x3291, +GDK_KEY_parenleft, 0x6B63, GDK_KEY_parenright, 0x32A3, +GDK_KEY_parenleft, 0x6C34, GDK_KEY_parenright, 0x328C, +GDK_KEY_parenleft, 0x6CE8, GDK_KEY_parenright, 0x329F, +GDK_KEY_parenleft, 0x706B, GDK_KEY_parenright, 0x328B, +GDK_KEY_parenleft, 0x7279, GDK_KEY_parenright, 0x3295, +GDK_KEY_parenleft, 0x7537, GDK_KEY_parenright, 0x329A, +GDK_KEY_parenleft, 0x76E3, GDK_KEY_parenright, 0x32AC, +GDK_KEY_parenleft, 0x793E, GDK_KEY_parenright, 0x3293, +GDK_KEY_parenleft, 0x795D, GDK_KEY_parenright, 0x3297, +GDK_KEY_parenleft, 0x79D8, GDK_KEY_parenright, 0x3299, +GDK_KEY_parenleft, 0x8CA1, GDK_KEY_parenright, 0x3296, +GDK_KEY_parenleft, 0x8CC7, GDK_KEY_parenright, 0x32AE, +GDK_KEY_parenleft, 0x9069, GDK_KEY_parenright, 0x329C, +GDK_KEY_parenleft, 0x91D1, GDK_KEY_parenright, 0x328E, +GDK_KEY_parenleft, 0x9805, GDK_KEY_parenright, 0x32A0, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x2461, +GDK_KEY_parenleft, GDK_KEY_KP_0, GDK_KEY_parenright, 0x24EA, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_parenright, 0x2460, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_parenright, 0x2461, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_parenright, 0x2462, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_parenright, 0x2463, +GDK_KEY_parenleft, GDK_KEY_KP_5, GDK_KEY_parenright, 0x2464, +GDK_KEY_parenleft, GDK_KEY_KP_6, GDK_KEY_parenright, 0x2465, +GDK_KEY_parenleft, GDK_KEY_KP_7, GDK_KEY_parenright, 0x2466, +GDK_KEY_parenleft, GDK_KEY_KP_8, GDK_KEY_parenright, 0x2467, +GDK_KEY_parenleft, GDK_KEY_KP_9, GDK_KEY_parenright, 0x2468, +GDK_KEY_minus, GDK_KEY_minus, GDK_KEY_space, 0x00AD, +GDK_KEY_minus, GDK_KEY_minus, GDK_KEY_minus, 0x2014, +GDK_KEY_minus, GDK_KEY_minus, GDK_KEY_period, 0x2013, +GDK_KEY_period, GDK_KEY_exclam, GDK_KEY_S, 0x1E68, +GDK_KEY_period, GDK_KEY_exclam, GDK_KEY_s, 0x1E69, +GDK_KEY_period, GDK_KEY_apostrophe, GDK_KEY_S, 0x1E64, +GDK_KEY_period, GDK_KEY_apostrophe, GDK_KEY_s, 0x1E65, +GDK_KEY_period, GDK_KEY_acute, GDK_KEY_S, 0x1E64, +GDK_KEY_period, GDK_KEY_acute, GDK_KEY_s, 0x1E65, +GDK_KEY_period, GDK_KEY_dead_acute, GDK_KEY_S, 0x1E64, +GDK_KEY_period, GDK_KEY_dead_acute, GDK_KEY_s, 0x1E65, +GDK_KEY_period, GDK_KEY_dead_caron, GDK_KEY_S, 0x1E66, +GDK_KEY_period, GDK_KEY_dead_caron, GDK_KEY_s, 0x1E67, +GDK_KEY_period, GDK_KEY_dead_belowdot, GDK_KEY_S, 0x1E68, +GDK_KEY_period, GDK_KEY_dead_belowdot, GDK_KEY_s, 0x1E69, +GDK_KEY_question, GDK_KEY_plus, GDK_KEY_O, 0x1EDE, +GDK_KEY_question, GDK_KEY_plus, GDK_KEY_U, 0x1EEC, +GDK_KEY_question, GDK_KEY_plus, GDK_KEY_o, 0x1EDF, +GDK_KEY_question, GDK_KEY_plus, GDK_KEY_u, 0x1EED, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA8, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC2, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED4, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA9, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC3, +GDK_KEY_question, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED5, +GDK_KEY_question, GDK_KEY_b, GDK_KEY_A, 0x1EB2, +GDK_KEY_question, GDK_KEY_b, GDK_KEY_a, 0x1EB3, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_A, 0x1EA8, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_E, 0x1EC2, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_O, 0x1ED4, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_a, 0x1EA9, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_e, 0x1EC3, +GDK_KEY_question, GDK_KEY_dead_circumflex, GDK_KEY_o, 0x1ED5, +GDK_KEY_question, GDK_KEY_dead_breve, GDK_KEY_A, 0x1EB2, +GDK_KEY_question, GDK_KEY_dead_breve, GDK_KEY_a, 0x1EB3, +GDK_KEY_question, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EDE, +GDK_KEY_question, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EEC, +GDK_KEY_question, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EDF, +GDK_KEY_question, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EED, +GDK_KEY_U, GDK_KEY_exclam, GDK_KEY_A, 0x1EB6, +GDK_KEY_U, GDK_KEY_exclam, GDK_KEY_a, 0x1EB7, +GDK_KEY_U, GDK_KEY_comma, GDK_KEY_E, 0x1E1C, +GDK_KEY_U, GDK_KEY_comma, GDK_KEY_e, 0x1E1D, +GDK_KEY_U, GDK_KEY_cedilla, GDK_KEY_E, 0x1E1C, +GDK_KEY_U, GDK_KEY_cedilla, GDK_KEY_e, 0x1E1D, +GDK_KEY_U, GDK_KEY_dead_cedilla, GDK_KEY_E, 0x1E1C, +GDK_KEY_U, GDK_KEY_dead_cedilla, GDK_KEY_e, 0x1E1D, +GDK_KEY_U, GDK_KEY_dead_belowdot, GDK_KEY_A, 0x1EB6, +GDK_KEY_U, GDK_KEY_dead_belowdot, GDK_KEY_a, 0x1EB7, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_A, 0x1EAC, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_E, 0x1EC6, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_O, 0x1ED8, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_a, 0x1EAD, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_e, 0x1EC7, +GDK_KEY_asciicircum, GDK_KEY_exclam, GDK_KEY_o, 0x1ED9, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_a, 0x00AA, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_h, 0x02B0, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_i, 0x2071, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_j, 0x02B2, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_l, 0x02E1, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_n, 0x207F, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_o, 0x00BA, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_r, 0x02B3, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_s, 0x02E2, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_w, 0x02B7, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_x, 0x02E3, +GDK_KEY_asciicircum, GDK_KEY_underscore, GDK_KEY_y, 0x02B8, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x0263, 0x02E0, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x0266, 0x02B1, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x0279, 0x02B4, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x027B, 0x02B5, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x0281, 0x02B6, +GDK_KEY_asciicircum, GDK_KEY_underscore, 0x0295, 0x02E4, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_a, 0x00AA, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_h, 0x02B0, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_i, 0x2071, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_j, 0x02B2, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_l, 0x02E1, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_n, 0x207F, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_o, 0x00BA, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_r, 0x02B3, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_s, 0x02E2, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_w, 0x02B7, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_x, 0x02E3, +GDK_KEY_asciicircum, GDK_KEY_underbar, GDK_KEY_y, 0x02B8, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x0263, 0x02E0, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x0266, 0x02B1, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x0279, 0x02B4, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x027B, 0x02B5, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x0281, 0x02B6, +GDK_KEY_asciicircum, GDK_KEY_underbar, 0x0295, 0x02E4, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_A, 0x1EAC, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_E, 0x1EC6, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_O, 0x1ED8, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_a, 0x1EAD, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_e, 0x1EC7, +GDK_KEY_asciicircum, GDK_KEY_dead_belowdot, GDK_KEY_o, 0x1ED9, +GDK_KEY_underscore, GDK_KEY_exclam, GDK_KEY_L, 0x1E38, +GDK_KEY_underscore, GDK_KEY_exclam, GDK_KEY_R, 0x1E5C, +GDK_KEY_underscore, GDK_KEY_exclam, GDK_KEY_l, 0x1E39, +GDK_KEY_underscore, GDK_KEY_exclam, GDK_KEY_r, 0x1E5D, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_A, 0x01DE, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_O, 0x022A, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D5, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_a, 0x01DF, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_o, 0x022B, +GDK_KEY_underscore, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D6, +GDK_KEY_underscore, GDK_KEY_period, GDK_KEY_A, 0x01E0, +GDK_KEY_underscore, GDK_KEY_period, GDK_KEY_O, 0x0230, +GDK_KEY_underscore, GDK_KEY_period, GDK_KEY_a, 0x01E1, +GDK_KEY_underscore, GDK_KEY_period, GDK_KEY_o, 0x0231, +GDK_KEY_underscore, GDK_KEY_semicolon, GDK_KEY_O, 0x01EC, +GDK_KEY_underscore, GDK_KEY_semicolon, GDK_KEY_o, 0x01ED, +GDK_KEY_underscore, GDK_KEY_asciitilde, GDK_KEY_O, 0x022C, +GDK_KEY_underscore, GDK_KEY_asciitilde, GDK_KEY_o, 0x022D, +GDK_KEY_underscore, GDK_KEY_dead_tilde, GDK_KEY_O, 0x022C, +GDK_KEY_underscore, GDK_KEY_dead_tilde, GDK_KEY_o, 0x022D, +GDK_KEY_underscore, GDK_KEY_dead_abovedot, GDK_KEY_A, 0x01E0, +GDK_KEY_underscore, GDK_KEY_dead_abovedot, GDK_KEY_O, 0x0230, +GDK_KEY_underscore, GDK_KEY_dead_abovedot, GDK_KEY_a, 0x01E1, +GDK_KEY_underscore, GDK_KEY_dead_abovedot, GDK_KEY_o, 0x0231, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_A, 0x01DE, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_O, 0x022A, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01D5, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_a, 0x01DF, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_o, 0x022B, +GDK_KEY_underscore, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01D6, +GDK_KEY_underscore, GDK_KEY_dead_ogonek, GDK_KEY_O, 0x01EC, +GDK_KEY_underscore, GDK_KEY_dead_ogonek, GDK_KEY_o, 0x01ED, +GDK_KEY_underscore, GDK_KEY_dead_belowdot, GDK_KEY_L, 0x1E38, +GDK_KEY_underscore, GDK_KEY_dead_belowdot, GDK_KEY_R, 0x1E5C, +GDK_KEY_underscore, GDK_KEY_dead_belowdot, GDK_KEY_l, 0x1E39, +GDK_KEY_underscore, GDK_KEY_dead_belowdot, GDK_KEY_r, 0x1E5D, +GDK_KEY_grave, GDK_KEY_quotedbl, GDK_KEY_U, 0x01DB, +GDK_KEY_grave, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DC, +GDK_KEY_grave, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x1FD2, +GDK_KEY_grave, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x1FE2, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F1B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F4B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6B, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F03, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F13, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F23, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F33, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F43, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F53, +GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F63, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F1A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F4A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6A, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F02, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F12, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F22, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F32, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F42, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F52, +GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F62, +GDK_KEY_grave, GDK_KEY_plus, GDK_KEY_O, 0x1EDC, +GDK_KEY_grave, GDK_KEY_plus, GDK_KEY_U, 0x1EEA, +GDK_KEY_grave, GDK_KEY_plus, GDK_KEY_o, 0x1EDD, +GDK_KEY_grave, GDK_KEY_plus, GDK_KEY_u, 0x1EEB, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA6, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC0, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED2, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA7, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC1, +GDK_KEY_grave, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED3, +GDK_KEY_grave, GDK_KEY_underscore, GDK_KEY_E, 0x1E14, +GDK_KEY_grave, GDK_KEY_underscore, GDK_KEY_O, 0x1E50, +GDK_KEY_grave, GDK_KEY_underscore, GDK_KEY_e, 0x1E15, +GDK_KEY_grave, GDK_KEY_underscore, GDK_KEY_o, 0x1E51, +GDK_KEY_grave, GDK_KEY_b, GDK_KEY_A, 0x1EB0, +GDK_KEY_grave, GDK_KEY_b, GDK_KEY_a, 0x1EB1, +GDK_KEY_grave, GDK_KEY_macron, GDK_KEY_E, 0x1E14, +GDK_KEY_grave, GDK_KEY_macron, GDK_KEY_O, 0x1E50, +GDK_KEY_grave, GDK_KEY_macron, GDK_KEY_e, 0x1E15, +GDK_KEY_grave, GDK_KEY_macron, GDK_KEY_o, 0x1E51, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_A, 0x1EA6, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_E, 0x1EC0, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_O, 0x1ED2, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_a, 0x1EA7, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_e, 0x1EC1, +GDK_KEY_grave, GDK_KEY_dead_circumflex, GDK_KEY_o, 0x1ED3, +GDK_KEY_grave, GDK_KEY_dead_macron, GDK_KEY_E, 0x1E14, +GDK_KEY_grave, GDK_KEY_dead_macron, GDK_KEY_O, 0x1E50, +GDK_KEY_grave, GDK_KEY_dead_macron, GDK_KEY_e, 0x1E15, +GDK_KEY_grave, GDK_KEY_dead_macron, GDK_KEY_o, 0x1E51, +GDK_KEY_grave, GDK_KEY_dead_breve, GDK_KEY_A, 0x1EB0, +GDK_KEY_grave, GDK_KEY_dead_breve, GDK_KEY_a, 0x1EB1, +GDK_KEY_grave, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01DB, +GDK_KEY_grave, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01DC, +GDK_KEY_grave, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD2, +GDK_KEY_grave, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE2, +GDK_KEY_grave, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EDC, +GDK_KEY_grave, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EEA, +GDK_KEY_grave, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EDD, +GDK_KEY_grave, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EEB, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_EPSILON, 0x1F1A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMICRON, 0x1F4A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6A, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F02, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_epsilon, 0x1F12, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F22, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F32, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omicron, 0x1F42, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F52, +GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F62, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_EPSILON, 0x1F1B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMICRON, 0x1F4B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6B, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F03, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_epsilon, 0x1F13, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F23, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F33, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omicron, 0x1F43, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F53, +GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F63, +GDK_KEY_b, GDK_KEY_exclam, GDK_KEY_A, 0x1EB6, +GDK_KEY_b, GDK_KEY_exclam, GDK_KEY_a, 0x1EB7, +GDK_KEY_b, GDK_KEY_comma, GDK_KEY_E, 0x1E1C, +GDK_KEY_b, GDK_KEY_comma, GDK_KEY_e, 0x1E1D, +GDK_KEY_b, GDK_KEY_cedilla, GDK_KEY_E, 0x1E1C, +GDK_KEY_b, GDK_KEY_cedilla, GDK_KEY_e, 0x1E1D, +GDK_KEY_b, GDK_KEY_dead_cedilla, GDK_KEY_E, 0x1E1C, +GDK_KEY_b, GDK_KEY_dead_cedilla, GDK_KEY_e, 0x1E1D, +GDK_KEY_b, GDK_KEY_dead_belowdot, GDK_KEY_A, 0x1EB6, +GDK_KEY_b, GDK_KEY_dead_belowdot, GDK_KEY_a, 0x1EB7, +GDK_KEY_c, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D9, +GDK_KEY_c, GDK_KEY_quotedbl, GDK_KEY_u, 0x01DA, +GDK_KEY_c, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01D9, +GDK_KEY_c, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01DA, +GDK_KEY_o, GDK_KEY_apostrophe, GDK_KEY_A, 0x01FA, +GDK_KEY_o, GDK_KEY_apostrophe, GDK_KEY_a, 0x01FB, +GDK_KEY_asciitilde, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x1FD7, +GDK_KEY_asciitilde, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x1FE7, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0F, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2F, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3F, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5F, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6F, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F07, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F27, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F37, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F57, +GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F67, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0E, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2E, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3E, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6E, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F06, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F26, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F36, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F56, +GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F66, +GDK_KEY_asciitilde, GDK_KEY_plus, GDK_KEY_O, 0x1EE0, +GDK_KEY_asciitilde, GDK_KEY_plus, GDK_KEY_U, 0x1EEE, +GDK_KEY_asciitilde, GDK_KEY_plus, GDK_KEY_o, 0x1EE1, +GDK_KEY_asciitilde, GDK_KEY_plus, GDK_KEY_u, 0x1EEF, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EAA, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EC4, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED6, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EAB, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EC5, +GDK_KEY_asciitilde, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED7, +GDK_KEY_asciitilde, GDK_KEY_b, GDK_KEY_A, 0x1EB4, +GDK_KEY_asciitilde, GDK_KEY_b, GDK_KEY_a, 0x1EB5, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_A, 0x1EAA, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_E, 0x1EC4, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_O, 0x1ED6, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_a, 0x1EAB, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_e, 0x1EC5, +GDK_KEY_asciitilde, GDK_KEY_dead_circumflex, GDK_KEY_o, 0x1ED7, +GDK_KEY_asciitilde, GDK_KEY_dead_breve, GDK_KEY_A, 0x1EB4, +GDK_KEY_asciitilde, GDK_KEY_dead_breve, GDK_KEY_a, 0x1EB5, +GDK_KEY_asciitilde, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x1FD7, +GDK_KEY_asciitilde, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x1FE7, +GDK_KEY_asciitilde, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EE0, +GDK_KEY_asciitilde, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EEE, +GDK_KEY_asciitilde, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EE1, +GDK_KEY_asciitilde, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EEF, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0E, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2E, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3E, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6E, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F06, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F26, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F36, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F56, +GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F66, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0F, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2F, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3F, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5F, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6F, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F07, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F27, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F37, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F57, +GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F67, +GDK_KEY_macron, GDK_KEY_exclam, GDK_KEY_L, 0x1E38, +GDK_KEY_macron, GDK_KEY_exclam, GDK_KEY_R, 0x1E5C, +GDK_KEY_macron, GDK_KEY_exclam, GDK_KEY_l, 0x1E39, +GDK_KEY_macron, GDK_KEY_exclam, GDK_KEY_r, 0x1E5D, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_A, 0x01DE, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_O, 0x022A, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D5, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_a, 0x01DF, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_o, 0x022B, +GDK_KEY_macron, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D6, +GDK_KEY_macron, GDK_KEY_period, GDK_KEY_A, 0x01E0, +GDK_KEY_macron, GDK_KEY_period, GDK_KEY_O, 0x0230, +GDK_KEY_macron, GDK_KEY_period, GDK_KEY_a, 0x01E1, +GDK_KEY_macron, GDK_KEY_period, GDK_KEY_o, 0x0231, +GDK_KEY_macron, GDK_KEY_semicolon, GDK_KEY_O, 0x01EC, +GDK_KEY_macron, GDK_KEY_semicolon, GDK_KEY_o, 0x01ED, +GDK_KEY_macron, GDK_KEY_asciitilde, GDK_KEY_O, 0x022C, +GDK_KEY_macron, GDK_KEY_asciitilde, GDK_KEY_o, 0x022D, +GDK_KEY_macron, GDK_KEY_dead_tilde, GDK_KEY_O, 0x022C, +GDK_KEY_macron, GDK_KEY_dead_tilde, GDK_KEY_o, 0x022D, +GDK_KEY_macron, GDK_KEY_dead_abovedot, GDK_KEY_A, 0x01E0, +GDK_KEY_macron, GDK_KEY_dead_abovedot, GDK_KEY_O, 0x0230, +GDK_KEY_macron, GDK_KEY_dead_abovedot, GDK_KEY_a, 0x01E1, +GDK_KEY_macron, GDK_KEY_dead_abovedot, GDK_KEY_o, 0x0231, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_A, 0x01DE, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_O, 0x022A, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01D5, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_a, 0x01DF, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_o, 0x022B, +GDK_KEY_macron, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01D6, +GDK_KEY_macron, GDK_KEY_dead_ogonek, GDK_KEY_O, 0x01EC, +GDK_KEY_macron, GDK_KEY_dead_ogonek, GDK_KEY_o, 0x01ED, +GDK_KEY_macron, GDK_KEY_dead_belowdot, GDK_KEY_L, 0x1E38, +GDK_KEY_macron, GDK_KEY_dead_belowdot, GDK_KEY_R, 0x1E5C, +GDK_KEY_macron, GDK_KEY_dead_belowdot, GDK_KEY_l, 0x1E39, +GDK_KEY_macron, GDK_KEY_dead_belowdot, GDK_KEY_r, 0x1E5D, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_I, 0x1E2E, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_U, 0x01D7, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_i, 0x1E2F, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_u, 0x01D8, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_acute, GDK_KEY_quotedbl, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_acute, GDK_KEY_plus, GDK_KEY_O, 0x1EDA, +GDK_KEY_acute, GDK_KEY_plus, GDK_KEY_U, 0x1EE8, +GDK_KEY_acute, GDK_KEY_plus, GDK_KEY_o, 0x1EDB, +GDK_KEY_acute, GDK_KEY_plus, GDK_KEY_u, 0x1EE9, +GDK_KEY_acute, GDK_KEY_comma, GDK_KEY_C, 0x1E08, +GDK_KEY_acute, GDK_KEY_comma, GDK_KEY_c, 0x1E09, +GDK_KEY_acute, GDK_KEY_slash, GDK_KEY_O, 0x01FE, +GDK_KEY_acute, GDK_KEY_slash, GDK_KEY_o, 0x01FF, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_A, 0x1EA4, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_E, 0x1EBE, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_O, 0x1ED0, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_a, 0x1EA5, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_e, 0x1EBF, +GDK_KEY_acute, GDK_KEY_asciicircum, GDK_KEY_o, 0x1ED1, +GDK_KEY_acute, GDK_KEY_underscore, GDK_KEY_E, 0x1E16, +GDK_KEY_acute, GDK_KEY_underscore, GDK_KEY_O, 0x1E52, +GDK_KEY_acute, GDK_KEY_underscore, GDK_KEY_e, 0x1E17, +GDK_KEY_acute, GDK_KEY_underscore, GDK_KEY_o, 0x1E53, +GDK_KEY_acute, GDK_KEY_b, GDK_KEY_A, 0x1EAE, +GDK_KEY_acute, GDK_KEY_b, GDK_KEY_a, 0x1EAF, +GDK_KEY_acute, GDK_KEY_asciitilde, GDK_KEY_O, 0x1E4C, +GDK_KEY_acute, GDK_KEY_asciitilde, GDK_KEY_U, 0x1E78, +GDK_KEY_acute, GDK_KEY_asciitilde, GDK_KEY_o, 0x1E4D, +GDK_KEY_acute, GDK_KEY_asciitilde, GDK_KEY_u, 0x1E79, +GDK_KEY_acute, GDK_KEY_macron, GDK_KEY_E, 0x1E16, +GDK_KEY_acute, GDK_KEY_macron, GDK_KEY_O, 0x1E52, +GDK_KEY_acute, GDK_KEY_macron, GDK_KEY_e, 0x1E17, +GDK_KEY_acute, GDK_KEY_macron, GDK_KEY_o, 0x1E53, +GDK_KEY_acute, GDK_KEY_cedilla, GDK_KEY_C, 0x1E08, +GDK_KEY_acute, GDK_KEY_cedilla, GDK_KEY_c, 0x1E09, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_A, 0x1EA4, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_E, 0x1EBE, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_O, 0x1ED0, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_a, 0x1EA5, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_e, 0x1EBF, +GDK_KEY_acute, GDK_KEY_dead_circumflex, GDK_KEY_o, 0x1ED1, +GDK_KEY_acute, GDK_KEY_dead_tilde, GDK_KEY_O, 0x1E4C, +GDK_KEY_acute, GDK_KEY_dead_tilde, GDK_KEY_U, 0x1E78, +GDK_KEY_acute, GDK_KEY_dead_tilde, GDK_KEY_o, 0x1E4D, +GDK_KEY_acute, GDK_KEY_dead_tilde, GDK_KEY_u, 0x1E79, +GDK_KEY_acute, GDK_KEY_dead_macron, GDK_KEY_E, 0x1E16, +GDK_KEY_acute, GDK_KEY_dead_macron, GDK_KEY_O, 0x1E52, +GDK_KEY_acute, GDK_KEY_dead_macron, GDK_KEY_e, 0x1E17, +GDK_KEY_acute, GDK_KEY_dead_macron, GDK_KEY_o, 0x1E53, +GDK_KEY_acute, GDK_KEY_dead_breve, GDK_KEY_A, 0x1EAE, +GDK_KEY_acute, GDK_KEY_dead_breve, GDK_KEY_a, 0x1EAF, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_I, 0x1E2E, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_U, 0x01D7, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_i, 0x1E2F, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_u, 0x01D8, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_iota, 0x0390, +GDK_KEY_acute, GDK_KEY_dead_diaeresis, GDK_KEY_Greek_upsilon, 0x03B0, +GDK_KEY_acute, GDK_KEY_dead_abovering, GDK_KEY_A, 0x01FA, +GDK_KEY_acute, GDK_KEY_dead_abovering, GDK_KEY_a, 0x01FB, +GDK_KEY_acute, GDK_KEY_dead_cedilla, GDK_KEY_C, 0x1E08, +GDK_KEY_acute, GDK_KEY_dead_cedilla, GDK_KEY_c, 0x1E09, +GDK_KEY_acute, GDK_KEY_dead_horn, GDK_KEY_O, 0x1EDA, +GDK_KEY_acute, GDK_KEY_dead_horn, GDK_KEY_U, 0x1EE8, +GDK_KEY_acute, GDK_KEY_dead_horn, GDK_KEY_o, 0x1EDB, +GDK_KEY_acute, GDK_KEY_dead_horn, GDK_KEY_u, 0x1EE9, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F0C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_EPSILON, 0x1F1C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F2C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_IOTA, 0x1F3C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMICRON, 0x1F4C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1F6C, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F04, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_epsilon, 0x1F14, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F24, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_iota, 0x1F34, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omicron, 0x1F44, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_upsilon, 0x1F54, +GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1F64, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F0D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_EPSILON, 0x1F1D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F2D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_IOTA, 0x1F3D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMICRON, 0x1F4D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_UPSILON, 0x1F5D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1F6D, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F05, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_epsilon, 0x1F15, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F25, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_iota, 0x1F35, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omicron, 0x1F45, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_upsilon, 0x1F55, +GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1F65, +GDK_KEY_acute, GDK_KEY_KP_Divide, GDK_KEY_O, 0x01FE, +GDK_KEY_acute, GDK_KEY_KP_Divide, GDK_KEY_o, 0x01FF, +0x05C1, 0x05BC, GDK_KEY_hebrew_shin, 0xFB2C, +0x05C2, 0x05BC, GDK_KEY_hebrew_shin, 0xFB2D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F00, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F01, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F08, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F09, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F20, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F21, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F28, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F29, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F60, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F61, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F68, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, 0x1F69, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F89, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F99, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FA9, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F81, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F91, +GDK_KEY_Greek_iota, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA1, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F88, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F98, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FA8, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F80, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F90, +GDK_KEY_Greek_iota, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA0, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_Greek_alpha, 0x1FB2, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_Greek_eta, 0x1FC2, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_Greek_omega, 0x1FF2, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F00, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F01, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F08, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F09, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F20, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F21, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F28, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F29, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F60, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F61, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F68, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_grave, 0x1F69, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_Greek_alpha, 0x1FB7, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_Greek_eta, 0x1FC7, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_Greek_omega, 0x1FF7, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F00, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F01, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F08, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F09, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F20, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F21, 0x1F97, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F28, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F29, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F60, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F61, 0x1FA7, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F68, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, 0x1F69, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F00, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F01, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F08, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F09, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F20, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F21, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F28, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F29, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F60, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F61, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F68, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_acute, 0x1F69, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_Greek_alpha, 0x1FB2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_Greek_eta, 0x1FC2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_Greek_omega, 0x1FF2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F00, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F01, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F08, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F09, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F20, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F21, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F28, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F29, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F60, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F61, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F68, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, 0x1F69, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_Greek_alpha, 0x1FB4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_Greek_eta, 0x1FC4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_Greek_omega, 0x1FF4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F00, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F01, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F08, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F09, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F20, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F21, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F28, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F29, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F60, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F61, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F68, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, 0x1F69, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_Greek_alpha, 0x1FB7, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_Greek_eta, 0x1FC7, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_Greek_omega, 0x1FF7, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F00, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F01, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F08, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F09, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F20, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F21, 0x1F97, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F28, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F29, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F60, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F61, 0x1FA7, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F68, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, 0x1F69, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F88, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F98, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FA8, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F80, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F90, +GDK_KEY_Greek_iota, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA0, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F89, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F99, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FA9, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F81, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F91, +GDK_KEY_Greek_iota, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA1, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_0, GDK_KEY_parenright, 0x2469, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_1, GDK_KEY_parenright, 0x246A, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_2, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_3, GDK_KEY_parenright, 0x246C, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_4, GDK_KEY_parenright, 0x246D, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_5, GDK_KEY_parenright, 0x246E, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_6, GDK_KEY_parenright, 0x246F, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_7, GDK_KEY_parenright, 0x2470, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_8, GDK_KEY_parenright, 0x2471, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_9, GDK_KEY_parenright, 0x2472, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_0, GDK_KEY_parenright, 0x2469, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_1, GDK_KEY_parenright, 0x246A, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_2, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_3, GDK_KEY_parenright, 0x246C, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_4, GDK_KEY_parenright, 0x246D, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_5, GDK_KEY_parenright, 0x246E, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_6, GDK_KEY_parenright, 0x246F, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_7, GDK_KEY_parenright, 0x2470, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_8, GDK_KEY_parenright, 0x2471, +GDK_KEY_parenleft, GDK_KEY_1, GDK_KEY_KP_9, GDK_KEY_parenright, 0x2472, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_2, GDK_KEY_KP_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_0, GDK_KEY_parenright, 0x325A, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_1, GDK_KEY_parenright, 0x325B, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_2, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_3, GDK_KEY_parenright, 0x325D, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_4, GDK_KEY_parenright, 0x325E, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_5, GDK_KEY_parenright, 0x325F, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_6, GDK_KEY_parenright, 0x32B1, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_7, GDK_KEY_parenright, 0x32B2, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_8, GDK_KEY_parenright, 0x32B3, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_9, GDK_KEY_parenright, 0x32B4, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_0, GDK_KEY_parenright, 0x325A, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_1, GDK_KEY_parenright, 0x325B, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_2, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_3, GDK_KEY_parenright, 0x325D, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_4, GDK_KEY_parenright, 0x325E, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_5, GDK_KEY_parenright, 0x325F, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_6, GDK_KEY_parenright, 0x32B1, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_7, GDK_KEY_parenright, 0x32B2, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_8, GDK_KEY_parenright, 0x32B3, +GDK_KEY_parenleft, GDK_KEY_3, GDK_KEY_KP_9, GDK_KEY_parenright, 0x32B4, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_0, GDK_KEY_parenright, 0x32B5, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_1, GDK_KEY_parenright, 0x32B6, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_2, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_3, GDK_KEY_parenright, 0x32B8, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_4, GDK_KEY_parenright, 0x32B9, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_5, GDK_KEY_parenright, 0x32BA, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_6, GDK_KEY_parenright, 0x32BB, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_7, GDK_KEY_parenright, 0x32BC, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_8, GDK_KEY_parenright, 0x32BD, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_9, GDK_KEY_parenright, 0x32BE, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_0, GDK_KEY_parenright, 0x32B5, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_1, GDK_KEY_parenright, 0x32B6, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_2, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_3, GDK_KEY_parenright, 0x32B8, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_4, GDK_KEY_parenright, 0x32B9, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_5, GDK_KEY_parenright, 0x32BA, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_6, GDK_KEY_parenright, 0x32BB, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_7, GDK_KEY_parenright, 0x32BC, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_8, GDK_KEY_parenright, 0x32BD, +GDK_KEY_parenleft, GDK_KEY_4, GDK_KEY_KP_9, GDK_KEY_parenright, 0x32BE, +GDK_KEY_parenleft, GDK_KEY_5, GDK_KEY_KP_0, GDK_KEY_parenright, 0x32BF, +GDK_KEY_parenleft, 0x1100, 0x1161, GDK_KEY_parenright, 0x326E, +GDK_KEY_parenleft, 0x1102, 0x1161, GDK_KEY_parenright, 0x326F, +GDK_KEY_parenleft, 0x1103, 0x1161, GDK_KEY_parenright, 0x3270, +GDK_KEY_parenleft, 0x1105, 0x1161, GDK_KEY_parenright, 0x3271, +GDK_KEY_parenleft, 0x1106, 0x1161, GDK_KEY_parenright, 0x3272, +GDK_KEY_parenleft, 0x1107, 0x1161, GDK_KEY_parenright, 0x3273, +GDK_KEY_parenleft, 0x1109, 0x1161, GDK_KEY_parenright, 0x3274, +GDK_KEY_parenleft, 0x110B, 0x1161, GDK_KEY_parenright, 0x3275, +GDK_KEY_parenleft, 0x110C, 0x1161, GDK_KEY_parenright, 0x3276, +GDK_KEY_parenleft, 0x110E, 0x1161, GDK_KEY_parenright, 0x3277, +GDK_KEY_parenleft, 0x110F, 0x1161, GDK_KEY_parenright, 0x3278, +GDK_KEY_parenleft, 0x1110, 0x1161, GDK_KEY_parenright, 0x3279, +GDK_KEY_parenleft, 0x1111, 0x1161, GDK_KEY_parenright, 0x327A, +GDK_KEY_parenleft, 0x1112, 0x1161, GDK_KEY_parenright, 0x327B, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_KP_Space, GDK_KEY_KP_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_0, GDK_KEY_parenright, 0x2469, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_1, GDK_KEY_parenright, 0x246A, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_2, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_3, GDK_KEY_parenright, 0x246C, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_4, GDK_KEY_parenright, 0x246D, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_5, GDK_KEY_parenright, 0x246E, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_6, GDK_KEY_parenright, 0x246F, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_7, GDK_KEY_parenright, 0x2470, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_8, GDK_KEY_parenright, 0x2471, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_9, GDK_KEY_parenright, 0x2472, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_0, GDK_KEY_parenright, 0x2469, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_1, GDK_KEY_parenright, 0x246A, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_2, GDK_KEY_parenright, 0x246B, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_3, GDK_KEY_parenright, 0x246C, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_4, GDK_KEY_parenright, 0x246D, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_5, GDK_KEY_parenright, 0x246E, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_6, GDK_KEY_parenright, 0x246F, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_7, GDK_KEY_parenright, 0x2470, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_8, GDK_KEY_parenright, 0x2471, +GDK_KEY_parenleft, GDK_KEY_KP_1, GDK_KEY_KP_9, GDK_KEY_parenright, 0x2472, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_0, GDK_KEY_parenright, 0x2473, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_1, GDK_KEY_parenright, 0x3251, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_2, GDK_KEY_parenright, 0x3252, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_3, GDK_KEY_parenright, 0x3253, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_4, GDK_KEY_parenright, 0x3254, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_5, GDK_KEY_parenright, 0x3255, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_6, GDK_KEY_parenright, 0x3256, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_7, GDK_KEY_parenright, 0x3257, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_8, GDK_KEY_parenright, 0x3258, +GDK_KEY_parenleft, GDK_KEY_KP_2, GDK_KEY_KP_9, GDK_KEY_parenright, 0x3259, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_0, GDK_KEY_parenright, 0x325A, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_1, GDK_KEY_parenright, 0x325B, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_2, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_3, GDK_KEY_parenright, 0x325D, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_4, GDK_KEY_parenright, 0x325E, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_5, GDK_KEY_parenright, 0x325F, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_6, GDK_KEY_parenright, 0x32B1, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_7, GDK_KEY_parenright, 0x32B2, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_8, GDK_KEY_parenright, 0x32B3, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_9, GDK_KEY_parenright, 0x32B4, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_0, GDK_KEY_parenright, 0x325A, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_1, GDK_KEY_parenright, 0x325B, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_2, GDK_KEY_parenright, 0x325C, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_3, GDK_KEY_parenright, 0x325D, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_4, GDK_KEY_parenright, 0x325E, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_5, GDK_KEY_parenright, 0x325F, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_6, GDK_KEY_parenright, 0x32B1, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_7, GDK_KEY_parenright, 0x32B2, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_8, GDK_KEY_parenright, 0x32B3, +GDK_KEY_parenleft, GDK_KEY_KP_3, GDK_KEY_KP_9, GDK_KEY_parenright, 0x32B4, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_0, GDK_KEY_parenright, 0x32B5, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_1, GDK_KEY_parenright, 0x32B6, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_2, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_3, GDK_KEY_parenright, 0x32B8, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_4, GDK_KEY_parenright, 0x32B9, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_5, GDK_KEY_parenright, 0x32BA, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_6, GDK_KEY_parenright, 0x32BB, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_7, GDK_KEY_parenright, 0x32BC, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_8, GDK_KEY_parenright, 0x32BD, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_9, GDK_KEY_parenright, 0x32BE, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_Space, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_0, GDK_KEY_parenright, 0x32B5, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_1, GDK_KEY_parenright, 0x32B6, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_2, GDK_KEY_parenright, 0x32B7, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_3, GDK_KEY_parenright, 0x32B8, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_4, GDK_KEY_parenright, 0x32B9, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_5, GDK_KEY_parenright, 0x32BA, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_6, GDK_KEY_parenright, 0x32BB, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_7, GDK_KEY_parenright, 0x32BC, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_8, GDK_KEY_parenright, 0x32BD, +GDK_KEY_parenleft, GDK_KEY_KP_4, GDK_KEY_KP_9, GDK_KEY_parenright, 0x32BE, +GDK_KEY_parenleft, GDK_KEY_KP_5, GDK_KEY_KP_0, GDK_KEY_parenright, 0x32BF, +GDK_KEY_C, GDK_KEY_C, GDK_KEY_C, GDK_KEY_P, 0x262D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_apostrophe, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_Greek_iota, GDK_KEY_asciitilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9A, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAA, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F82, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F92, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA2, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9B, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAB, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F83, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F93, +GDK_KEY_Greek_iota, GDK_KEY_dead_grave, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA3, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9C, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAC, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F84, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F94, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA4, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9D, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAD, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F85, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F95, +GDK_KEY_Greek_iota, GDK_KEY_dead_acute, GDK_KEY_dead_dasia, GDK_KEY_Greek_omega, 0x1FA5, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_eta, 0x1F97, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenleft, GDK_KEY_Greek_omega, 0x1FA7, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_parenright, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ALPHA, 0x1F8E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_ETA, 0x1F9E, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_OMEGA, 0x1FAE, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_alpha, 0x1F86, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_eta, 0x1F96, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_psili, GDK_KEY_Greek_omega, 0x1FA6, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ALPHA, 0x1F8F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_ETA, 0x1F9F, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_OMEGA, 0x1FAF, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_alpha, 0x1F87, +GDK_KEY_Greek_iota, GDK_KEY_dead_tilde, GDK_KEY_dead_dasia, GDK_KEY_Greek_eta, 0x1F97, }; #endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */ diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c index 868cfe17c2..f9fce34cac 100644 --- a/gtk/gtkimmodule.c +++ b/gtk/gtkimmodule.c @@ -35,7 +35,7 @@ #include "gtkimmodule.h" #include "gtkimcontextsimple.h" #include "gtksettings.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkrc.h" #include "gtkintl.h" diff --git a/gtk/gtkinfobar.c b/gtk/gtkinfobar.c index a7879606b4..e82095e01c 100644 --- a/gtk/gtkinfobar.c +++ b/gtk/gtkinfobar.c @@ -46,7 +46,7 @@ #include "gtkintl.h" #include "gtkprivate.h" #include "gtkstock.h" -#include "gdkkeysyms.h" +#include "gtktypebuiltins.h" /** * SECTION:gtkinfobar @@ -157,8 +157,7 @@ static void gtk_info_bar_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gtk_info_bar_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_info_bar_style_updated (GtkWidget *widget); static gboolean gtk_info_bar_draw (GtkWidget *widget, cairo_t *cr); static void gtk_info_bar_buildable_interface_init (GtkBuildableIface *iface); @@ -300,29 +299,34 @@ gtk_info_bar_draw (GtkWidget *widget, cairo_t *cr) { GtkInfoBarPrivate *priv = GTK_INFO_BAR (widget)->priv; - const char* type_detail[] = { - "infobar-info", - "infobar-warning", - "infobar-question", - "infobar-error", - "infobar" + const char* type_class[] = { + GTK_STYLE_CLASS_INFO, + GTK_STYLE_CLASS_WARNING, + GTK_STYLE_CLASS_QUESTION, + GTK_STYLE_CLASS_ERROR, + NULL }; if (priv->message_type != GTK_MESSAGE_OTHER) { - const char *detail; + GtkStyleContext *context; - detail = type_detail[priv->message_type]; + context = gtk_widget_get_style_context (widget); - gtk_paint_box (gtk_widget_get_style (widget), - cr, - GTK_STATE_NORMAL, - GTK_SHADOW_OUT, - widget, - detail, - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + gtk_style_context_save (context); + + if (type_class[priv->message_type]) + gtk_style_context_add_class (context, + type_class[priv->message_type]); + + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + gtk_render_frame (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); + + gtk_style_context_restore (context); } if (GTK_WIDGET_CLASS (gtk_info_bar_parent_class)->draw) @@ -345,7 +349,7 @@ gtk_info_bar_class_init (GtkInfoBarClass *klass) object_class->set_property = gtk_info_bar_set_property; object_class->finalize = gtk_info_bar_finalize; - widget_class->style_set = gtk_info_bar_style_set; + widget_class->style_updated = gtk_info_bar_style_updated; widget_class->draw = gtk_info_bar_draw; klass->close = gtk_info_bar_close; @@ -491,100 +495,7 @@ gtk_info_bar_class_init (GtkInfoBarClass *klass) } static void -gtk_info_bar_update_colors (GtkInfoBar *info_bar) -{ - GtkWidget *widget = GTK_WIDGET (info_bar); - GtkInfoBarPrivate *priv = info_bar->priv; - GdkRGBA info_default_border_color = { 0.71, 0.67, 0.61, 1.0 }; - GdkRGBA info_default_fill_color = { 0.99, 0.99, 0.74, 1.0 }; - GdkRGBA warning_default_border_color = { 0.68, 0.47, 0.16, 1.0 }; - GdkRGBA warning_default_fill_color = { 0.98, 0.68, 0.24, 1.0 }; - GdkRGBA question_default_border_color = { 0.38, 0.48, 0.84, 1.0 }; - GdkRGBA question_default_fill_color = { 0.54, 0.68, 0.83, 1.0 }; - GdkRGBA error_default_border_color = { 0.65, 0.15, 0.15, 1.0 }; - GdkRGBA error_default_fill_color = { 0.93, 0.21, 0.21, 1.0 }; - GdkRGBA other_default_border_color = { 0.71, 0.67, 0.61, 1.0 }; - GdkRGBA other_default_fill_color = { 0.99, 0.99, 0.74, 1.0 }; - GdkRGBA *fg, *bg; - GdkRGBA sym_fg, sym_bg; - GdkRGBA *color, *bg_color; - GtkStyleContext *context; - - const char* fg_color_name[] = { - "info_fg_color", - "warning_fg_color", - "question_fg_color", - "error_fg_color", - "other_fg_color" - }; - const char* bg_color_name[] = { - "info_bg_color", - "warning_bg_color", - "question_bg_color", - "error_bg_color", - "other_bg_color" - }; - - context = gtk_widget_get_style_context (widget); - - if (gtk_style_context_lookup_color (context, fg_color_name[priv->message_type], &sym_fg) && - gtk_style_context_lookup_color (context, bg_color_name[priv->message_type], &sym_bg)) - { - fg = &sym_fg; - bg = &sym_bg; - } - else - { - switch (priv->message_type) - { - case GTK_MESSAGE_INFO: - fg = &info_default_border_color; - bg = &info_default_fill_color; - break; - - case GTK_MESSAGE_WARNING: - fg = &warning_default_border_color; - bg = &warning_default_fill_color; - break; - - case GTK_MESSAGE_QUESTION: - fg = &question_default_border_color; - bg = &question_default_fill_color; - break; - - case GTK_MESSAGE_ERROR: - fg = &error_default_border_color; - bg = &error_default_fill_color; - break; - - case GTK_MESSAGE_OTHER: - fg = &other_default_border_color; - bg = &other_default_fill_color; - break; - - default: - g_assert_not_reached(); - fg = NULL; - bg = NULL; - } - } - - gtk_style_context_get (context, 0, - "color", &color, - "background-color", &bg_color, - NULL); - if (!gdk_rgba_equal (bg_color, bg)) - gtk_widget_override_background_color (widget, 0, bg); - if (!gdk_rgba_equal (color, fg)) - gtk_widget_override_color (widget, 0, fg); - - gdk_rgba_free (color); - gdk_rgba_free (bg_color); -} - -static void -gtk_info_bar_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_info_bar_style_updated (GtkWidget *widget) { GtkInfoBar *info_bar = GTK_INFO_BAR (widget); gint button_spacing; @@ -605,8 +516,6 @@ gtk_info_bar_style_set (GtkWidget *widget, gtk_box_set_spacing (GTK_BOX (info_bar->priv->content_area), content_area_spacing); gtk_container_set_border_width (GTK_CONTAINER (info_bar->priv->content_area), content_area_border); - - gtk_info_bar_update_colors (info_bar); } static void @@ -1191,7 +1100,6 @@ gtk_info_bar_set_message_type (GtkInfoBar *info_bar, { priv->message_type = message_type; - gtk_info_bar_update_colors (info_bar); gtk_widget_queue_draw (GTK_WIDGET (info_bar)); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (info_bar)); diff --git a/gtk/gtkinvisible.c b/gtk/gtkinvisible.c index 55baa8412d..7003a183f0 100644 --- a/gtk/gtkinvisible.c +++ b/gtk/gtkinvisible.c @@ -45,8 +45,7 @@ enum { static void gtk_invisible_destroy (GtkWidget *widget); static void gtk_invisible_realize (GtkWidget *widget); -static void gtk_invisible_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_invisible_style_updated (GtkWidget *widget); static void gtk_invisible_show (GtkWidget *widget); static void gtk_invisible_size_allocate (GtkWidget *widget, GtkAllocation *allocation); @@ -75,7 +74,7 @@ gtk_invisible_class_init (GtkInvisibleClass *class) gobject_class = (GObjectClass*) class; widget_class->realize = gtk_invisible_realize; - widget_class->style_set = gtk_invisible_style_set; + widget_class->style_updated = gtk_invisible_style_updated; widget_class->show = gtk_invisible_show; widget_class->size_allocate = gtk_invisible_size_allocate; widget_class->destroy = gtk_invisible_destroy; @@ -250,13 +249,10 @@ gtk_invisible_realize (GtkWidget *widget) window = gdk_window_new (parent, &attributes, attributes_mask); gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); - - gtk_widget_style_attach (widget); } static void -gtk_invisible_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_invisible_style_updated (GtkWidget *widget) { /* Don't chain up to parent implementation */ } diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 55bc6c335e..7fff5474bd 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -31,17 +31,17 @@ #include "gtklabel.h" #include "gtkaccellabel.h" #include "gtkdnd.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkpango.h" #include "gtkwindow.h" -#include "gdk/gdkkeysyms.h" #include "gtkclipboard.h" #include "gtkimagemenuitem.h" #include "gtkintl.h" #include "gtkseparatormenuitem.h" #include "gtktextutil.h" #include "gtkmenuitem.h" +#include "gtkmenushellprivate.h" #include "gtknotebook.h" #include "gtkstock.h" #include "gtkbindings.h" @@ -50,6 +50,7 @@ #include "gtkshow.h" #include "gtktooltip.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" /*rint() is only available in GCC and/or C99*/ #if (__STDC_VERSION__ < 199901L && !defined __GNUC__) @@ -2273,11 +2274,13 @@ gtk_label_get_link_colors (GtkWidget *widget, GdkColor **link_color, GdkColor **visited_link_color) { - gtk_widget_ensure_style (widget); - gtk_widget_style_get (widget, - "link-color", link_color, - "visited-link-color", visited_link_color, - NULL); + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_style (context, + "link-color", link_color, + "visited-link-color", visited_link_color, + NULL); if (!*link_color) *link_color = gdk_color_copy (&default_link_color); if (!*visited_link_color) @@ -3007,13 +3010,31 @@ gtk_label_clear_layout (GtkLabel *label) } } +static PangoFontMetrics * +get_font_metrics (PangoContext *context, GtkWidget *widget) +{ + GtkStyleContext *style_context; + PangoFontDescription *font; + PangoFontMetrics *retval; + + style_context = gtk_widget_get_style_context (widget); + gtk_style_context_get (style_context, 0, "font", &font, NULL); + + retval = pango_context_get_metrics (context, + font, + pango_context_get_language (context)); + + if (font != NULL) + pango_font_description_free (font); + + return retval; +} static void get_label_width (GtkLabel *label, gint *minimum, gint *natural) { - GtkWidgetAuxInfo *aux_info; GtkLabelPrivate *priv; PangoLayout *layout; PangoContext *context; @@ -3022,14 +3043,10 @@ get_label_width (GtkLabel *label, gint char_width, digit_width, char_pixels, text_width, ellipsize_chars, guess_width; priv = label->priv; - aux_info = _gtk_widget_get_aux_info (GTK_WIDGET (label), FALSE); layout = pango_layout_copy (priv->layout); context = pango_layout_get_context (layout); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (GTK_WIDGET (label))->font_desc, - pango_context_get_language (context)); - + metrics = get_font_metrics (context, GTK_WIDGET (label)); char_width = pango_font_metrics_get_approximate_char_width (metrics); digit_width = pango_font_metrics_get_approximate_digit_width (metrics); char_pixels = MAX (char_width, digit_width); @@ -3108,11 +3125,16 @@ get_label_width (GtkLabel *label, } /* if a width-request is set, use that as the requested label width */ - if ((priv->wrap || priv->ellipsize || priv->width_chars > 0 || priv->max_width_chars > 0) && - aux_info && aux_info->width > 0) + if (priv->wrap || priv->ellipsize || priv->width_chars > 0 || priv->max_width_chars > 0) { - *minimum = aux_info->width * PANGO_SCALE; - *natural = MAX (*natural, *minimum); + GtkWidgetAuxInfo *aux_info; + + aux_info = _gtk_widget_get_aux_info (GTK_WIDGET (label), FALSE); + if (aux_info && aux_info->width > 0) + { + *minimum = aux_info->width * PANGO_SCALE; + *natural = MAX (*natural, *minimum); + } } g_object_unref (layout); @@ -3143,10 +3165,7 @@ get_label_wrap_width (GtkLabel *label) layout = pango_layout_copy (priv->layout); context = pango_layout_get_context (layout); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (GTK_WIDGET (label))->font_desc, - pango_context_get_language (context)); - + metrics = get_font_metrics (context, GTK_WIDGET (label)); char_width = pango_font_metrics_get_approximate_char_width (metrics); digit_width = pango_font_metrics_get_approximate_digit_width (metrics); char_pixels = MAX (char_width, digit_width); @@ -3353,9 +3372,7 @@ get_single_line_height (GtkWidget *widget, gint ascent, descent; context = pango_layout_get_context (layout); - metrics = pango_context_get_metrics (context, gtk_widget_get_style (widget)->font_desc, - pango_context_get_language (context)); - + metrics = get_font_metrics (context, widget); ascent = pango_font_metrics_get_ascent (metrics); descent = pango_font_metrics_get_descent (metrics); pango_font_metrics_unref (metrics); @@ -3783,7 +3800,7 @@ gtk_label_update_cursor (GtkLabel *label) gdk_window_set_cursor (priv->select_info->window, cursor); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } } @@ -5097,7 +5114,7 @@ gtk_label_create_window (GtkLabel *label) gdk_window_set_user_data (priv->select_info->window, widget); if (attributes_mask & GDK_WA_CURSOR) - gdk_cursor_unref (attributes.cursor); + g_object_unref (attributes.cursor); } static void diff --git a/gtk/gtklayout.c b/gtk/gtklayout.c index 2815b642b2..3cb0a8295d 100644 --- a/gtk/gtklayout.c +++ b/gtk/gtklayout.c @@ -32,7 +32,7 @@ #include "gtklayout.h" -#include "gdkconfig.h" +#include "gdk/gdk.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -156,8 +156,7 @@ static void gtk_layout_allocate_child (GtkLayout *layout, GtkLayoutChild *child); static void gtk_layout_adjustment_changed (GtkAdjustment *adjustment, GtkLayout *layout); -static void gtk_layout_style_set (GtkWidget *widget, - GtkStyle *old_style); +static void gtk_layout_style_updated (GtkWidget *widget); static void gtk_layout_set_hadjustment_values (GtkLayout *layout); static void gtk_layout_set_vadjustment_values (GtkLayout *layout); @@ -678,7 +677,7 @@ gtk_layout_class_init (GtkLayoutClass *class) widget_class->get_preferred_height = gtk_layout_get_preferred_height; widget_class->size_allocate = gtk_layout_size_allocate; widget_class->draw = gtk_layout_draw; - widget_class->style_set = gtk_layout_style_set; + widget_class->style_updated = gtk_layout_style_updated; container_class->add = gtk_layout_add; container_class->remove = gtk_layout_remove; @@ -878,8 +877,8 @@ gtk_layout_realize (GtkWidget *widget) gtk_widget_get_allocation (widget, &allocation); - attributes.x = - priv->hadjustment->value, - attributes.y = - priv->vadjustment->value; + attributes.x = - gtk_adjustment_get_value (priv->hadjustment), + attributes.y = - gtk_adjustment_get_value (priv->vadjustment); attributes.width = MAX (priv->width, allocation.width); attributes.height = MAX (priv->height, allocation.height); attributes.event_mask = GDK_EXPOSURE_MASK | GDK_SCROLL_MASK | @@ -888,9 +887,7 @@ gtk_layout_realize (GtkWidget *widget) priv->bin_window = gdk_window_new (window, &attributes, attributes_mask); gdk_window_set_user_data (priv->bin_window, widget); - - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), priv->bin_window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window); tmp_list = priv->children; while (tmp_list) @@ -903,17 +900,16 @@ gtk_layout_realize (GtkWidget *widget) } static void -gtk_layout_style_set (GtkWidget *widget, - GtkStyle *old_style) +gtk_layout_style_updated (GtkWidget *widget) { GtkLayoutPrivate *priv; - GTK_WIDGET_CLASS (gtk_layout_parent_class)->style_set (widget, old_style); + GTK_WIDGET_CLASS (gtk_layout_parent_class)->style_updated (widget); if (gtk_widget_get_realized (widget)) { priv = GTK_LAYOUT (widget)->priv; - gtk_style_set_background (gtk_widget_get_style (widget), priv->bin_window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), priv->bin_window); } } @@ -1112,8 +1108,8 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment, if (gtk_widget_get_realized (GTK_WIDGET (layout))) { gdk_window_move (priv->bin_window, - - priv->hadjustment->value, - - priv->vadjustment->value); + - gtk_adjustment_get_value (priv->hadjustment), + - gtk_adjustment_get_value (priv->vadjustment)); gdk_window_process_updates (priv->bin_window, TRUE); } diff --git a/gtk/gtklinkbutton.c b/gtk/gtklinkbutton.c index 6b159d3c8f..fde6d273e9 100644 --- a/gtk/gtklinkbutton.c +++ b/gtk/gtklinkbutton.c @@ -1,12 +1,12 @@ /* GTK - The GIMP Toolkit * gtklinkbutton.c - an hyperlink-enabled button - * + * * Copyright (C) 2006 Emmanuele Bassi * All rights reserved. * * Based on gnome-href code by: - * James Henstridge - * + * James Henstridge + * * 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 @@ -55,7 +55,7 @@ #include "gtkdnd.h" #include "gtkimagemenuitem.h" #include "gtklabel.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkmenu.h" #include "gtkmenuitem.h" @@ -105,8 +105,7 @@ static gboolean gtk_link_button_button_press (GtkWidget *widget, GdkEventButton *event); static void gtk_link_button_clicked (GtkButton *button); static gboolean gtk_link_button_popup_menu (GtkWidget *widget); -static void gtk_link_button_style_set (GtkWidget *widget, - GtkStyle *old_style); +static void gtk_link_button_style_updated (GtkWidget *widget); static gboolean gtk_link_button_enter_cb (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data); @@ -153,7 +152,7 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass) widget_class->button_press_event = gtk_link_button_button_press; widget_class->popup_menu = gtk_link_button_popup_menu; - widget_class->style_set = gtk_link_button_style_set; + widget_class->style_updated = gtk_link_button_style_updated; container_class->add = gtk_link_button_add; @@ -365,8 +364,7 @@ gtk_link_button_add (GtkContainer *container, } static void -gtk_link_button_style_set (GtkWidget *widget, - GtkStyle *old_style) +gtk_link_button_style_updated (GtkWidget *widget) { GtkLinkButton *link_button = GTK_LINK_BUTTON (widget); @@ -390,7 +388,7 @@ set_hand_cursor (GtkWidget *widget, gdk_display_flush (display); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -601,7 +599,7 @@ gtk_link_button_drag_data_get_cb (GtkWidget *widget, uri = g_strdup_printf ("%s\r\n", link_button->priv->uri); gtk_selection_data_set (selection, - selection->target, + gtk_selection_data_get_target (selection), 8, (guchar *) uri, strlen (uri)); diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index fc43eba05c..d8ab6be31f 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -75,6 +75,8 @@ static void gtk_list_store_get_value (GtkTreeModel *tree_mode GValue *value); static gboolean gtk_list_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter); +static gboolean gtk_list_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter); static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -187,6 +189,7 @@ gtk_list_store_tree_model_init (GtkTreeModelIface *iface) iface->get_path = gtk_list_store_get_path; iface->get_value = gtk_list_store_get_value; iface->iter_next = gtk_list_store_iter_next; + iface->iter_previous = gtk_list_store_iter_previous; iface->iter_children = gtk_list_store_iter_children; iface->iter_has_child = gtk_list_store_iter_has_child; iface->iter_n_children = gtk_list_store_iter_n_children; @@ -549,6 +552,26 @@ gtk_list_store_iter_next (GtkTreeModel *tree_model, return !retval; } +static gboolean +gtk_list_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + GtkListStore *list_store = GTK_LIST_STORE (tree_model); + GtkListStorePrivate *priv = list_store->priv; + + g_return_val_if_fail (priv->stamp == iter->stamp, FALSE); + + if (g_sequence_iter_is_begin (iter->user_data)) + { + iter->stamp = 0; + return FALSE; + } + + iter->user_data = g_sequence_iter_prev (iter->user_data); + + return TRUE; +} + static gboolean gtk_list_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, @@ -1510,7 +1533,7 @@ gtk_list_store_reorder_func (GSequenceIter *a, /** * gtk_list_store_reorder: * @store: A #GtkListStore. - * @new_order: an array of integers mapping the new position of each child + * @new_order: (array): an array of integers mapping the new position of each child * to its old position before the re-ordering, * i.e. @new_order[newpos] = oldpos. * @@ -2077,8 +2100,8 @@ gtk_list_store_insert_with_values (GtkListStore *list_store, * @list_store: A #GtkListStore * @iter: (out) (allow-none): An unset #GtkTreeIter to set to the new row, or %NULL. * @position: position to insert the new row - * @columns: an array of column numbers - * @values: an array of GValues + * @columns: (array length=n_values): an array of column numbers + * @values: (array length=n_values): an array of GValues * @n_values: the length of the @columns and @values arrays * * A variant of gtk_list_store_insert_with_values() which diff --git a/gtk/gtkliststore.h b/gtk/gtkliststore.h index 594fc329c8..d05305b23b 100644 --- a/gtk/gtkliststore.h +++ b/gtk/gtkliststore.h @@ -24,7 +24,6 @@ #ifndef __GTK_LIST_STORE_H__ #define __GTK_LIST_STORE_H__ -#include #include #include diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index ac2bbd05ad..799db27935 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -24,12 +24,77 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkmain + * @Short_description: Library initialization, main event loop, and events + * @Title: Main loop and Events + * @See_also:See the GLib manual, especially #GMainLoop and signal-related + * functions such as g_signal_connect() + * + * Before using GTK+, you need to initialize it; initialization connects to the + * window system display, and parses some standard command line arguments. The + * gtk_init() macro initializes GTK+. gtk_init() exits the application if errors + * occur; to avoid this, use gtk_init_check(). gtk_init_check() allows you to + * recover from a failed GTK+ initialization - you might start up your + * application in text mode instead. + * + * Like all GUI toolkits, GTK+ uses an event-driven programming model. When the + * user is doing nothing, GTK+ sits in the main loop and + * waits for input. If the user performs some action - say, a mouse click - then + * the main loop "wakes up" and delivers an event to GTK+. GTK+ forwards the + * event to one or more widgets. + * + * When widgets receive an event, they frequently emit one or more + * signals. Signals notify your program that "something + * interesting happened" by invoking functions you've connected to the signal + * with g_signal_connect(). Functions connected to a signal are often termed + * callbacks. + * + * When your callbacks are invoked, you would typically take some action - for + * example, when an Open button is clicked you might display a + * #GtkFileChooserDialog. After a callback finishes, GTK+ will return to the + * main loop and await more user input. + * + * + * Typical <function>main()</function> function for a GTK+ application + * + * int + * main (int argc, char **argv) + * { + * /* Initialize i18n support */ + * gtk_set_locale (); + * + * /* Initialize the widget set */ + * gtk_init (&argc, &argv); + * + * /* Create the main window */ + * mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL); + * + * /* Set up our GUI elements */ + * ... + * + * /* Show the application window */ + * gtk_widget_show_all (mainwin); + * + * /* Enter the main event loop, and wait for user interaction */ + * gtk_main (); + * + * /* The user lost interest */ + * return 0; + * } + * + * + * + * It's OK to use the GLib main loop directly instead of gtk_main(), though it + * involves slightly more typing. See #GMainLoop in the GLib documentation. + */ + #include "config.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include -#include "gdkconfig.h" +#include "gdk/gdk.h" #include @@ -39,7 +104,7 @@ #ifdef HAVE_UNISTD_H #include #endif -#include /* For uid_t, gid_t */ +#include /* For uid_t, gid_t */ #ifdef G_OS_WIN32 #define STRICT @@ -57,14 +122,13 @@ #include "gtkmodules.h" #include "gtkrc.h" #include "gtkrecentmanager.h" -#include "gtkselection.h" -#include "gtksettings.h" +#include "gtkselectionprivate.h" +#include "gtksettingsprivate.h" #include "gtkwidgetprivate.h" -#include "gtkwindow.h" +#include "gtkwindowprivate.h" #include "gtktooltip.h" #include "gtkdebug.h" #include "gtkmenu.h" -#include "gdk/gdkkeysyms.h" #ifdef G_OS_WIN32 @@ -72,8 +136,8 @@ static HMODULE gtk_dll; BOOL WINAPI DllMain (HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved) + DWORD fdwReason, + LPVOID lpvReserved) { switch (fdwReason) { @@ -98,9 +162,9 @@ _gtk_get_libdir (void) gchar *root = g_win32_get_package_installation_directory_of_module (gtk_dll); gchar *slash = strrchr (root, '\\'); if (g_ascii_strcasecmp (slash + 1, ".libs") == 0) - gtk_libdir = GTK_LIBDIR; + gtk_libdir = GTK_LIBDIR; else - gtk_libdir = g_build_filename (root, "lib", NULL); + gtk_libdir = g_build_filename (root, "lib", NULL); g_free (root); } @@ -121,9 +185,9 @@ _gtk_get_localedir (void) */ p = GTK_LOCALEDIR + strlen (GTK_LOCALEDIR); while (*--p != '/') - ; + ; while (*--p != '/') - ; + ; root = g_win32_get_package_installation_directory_of_module (gtk_dll); temp = g_build_filename (root, p, NULL); @@ -144,18 +208,7 @@ _gtk_get_localedir (void) /* Private type definitions */ -typedef struct _GtkQuitFunction GtkQuitFunction; -typedef struct _GtkKeySnooperData GtkKeySnooperData; - -struct _GtkQuitFunction -{ - guint id; - guint main_level; - GtkCallbackMarshal marshal; - GtkFunction function; - gpointer data; - GDestroyNotify destroy; -}; +typedef struct _GtkKeySnooperData GtkKeySnooperData; struct _GtkKeySnooperData { @@ -164,10 +217,8 @@ struct _GtkKeySnooperData guint id; }; -static gint gtk_quit_invoke_function (GtkQuitFunction *quitf); -static void gtk_quit_destroy (GtkQuitFunction *quitf); -static gint gtk_invoke_key_snoopers (GtkWidget *grab_widget, - GdkEvent *event); +static gint gtk_invoke_key_snoopers (GtkWidget *grab_widget, + GdkEvent *event); static GtkWindowGroup *gtk_main_get_window_group (GtkWidget *widget); @@ -178,11 +229,9 @@ static GList *current_events = NULL; static GSList *main_loops = NULL; /* stack of currently executing main loops */ -static GList *quit_functions = NULL; /* A list of quit functions. - */ static GSList *key_snoopers = NULL; -static guint debug_flags = 0; /* Global GTK debug flag */ +static guint debug_flags = 0; /* Global GTK debug flag */ #ifdef G_ENABLE_DEBUG static const GDebugKey gtk_debug_keys[] = { @@ -205,15 +254,15 @@ static const GDebugKey gtk_debug_keys[] = { /** * gtk_get_major_version: * - * Returns the major version number of the GTK+ library. (e.g. in GTK+ version - * 3.1.5 this is 3.) + * Returns the major version number of the GTK+ library. + * (e.g. in GTK+ version 3.1.5 this is 3.) * * This function is in the library, so it represents the GTK+ library * your code is running against. Contrast with the #GTK_MAJOR_VERSION * macro, which represents the major version of the GTK+ headers you * have included when compiling your code. * - * Returns: the major version number of the GTK+ library. + * Returns: the major version number of the GTK+ library * * Since: 3.0 */ @@ -226,15 +275,15 @@ gtk_get_major_version (void) /** * gtk_get_minor_version: * - * Returns the minor version number of the GTK+ library. (e.g. in GTK+ version - * 3.1.5 this is 1.) + * Returns the minor version number of the GTK+ library. + * (e.g. in GTK+ version 3.1.5 this is 1.) * * This function is in the library, so it represents the GTK+ library * your code is are running against. Contrast with the * #GTK_MINOR_VERSION macro, which represents the minor version of the * GTK+ headers you have included when compiling your code. * - * Returns: the minor version number of the GTK+ library. + * Returns: the minor version number of the GTK+ library * * Since: 3.0 */ @@ -247,15 +296,15 @@ gtk_get_minor_version (void) /** * gtk_get_micro_version: * - * Returns the micro version number of the GTK+ library. (e.g. in GTK+ version - * 3.1.5 this is 5.) + * Returns the micro version number of the GTK+ library. + * (e.g. in GTK+ version 3.1.5 this is 5.) * * This function is in the library, so it represents the GTK+ library * your code is are running against. Contrast with the * #GTK_MICRO_VERSION macro, which represents the micro version of the * GTK+ headers you have included when compiling your code. * - * Returns: the micro version number of the GTK+ library. + * Returns: the micro version number of the GTK+ library * * Since: 3.0 */ @@ -268,13 +317,12 @@ gtk_get_micro_version (void) /** * gtk_get_binary_age: * - * Returns the binary age as passed to - * libtool when building the GTK+ library - * the process is running against. If - * libtool means nothing to you, don't + * Returns the binary age as passed to libtool + * when building the GTK+ library the process is running against. + * If libtool means nothing to you, don't * worry about it. * - * Returns: the binary age of the GTK+ library. + * Returns: the binary age of the GTK+ library * * Since: 3.0 */ @@ -287,13 +335,12 @@ gtk_get_binary_age (void) /** * gtk_get_interface_age: * - * Returns the interface age as passed to - * libtool when building the GTK+ library - * the process is running against. If - * libtool means nothing to you, don't + * Returns the interface age as passed to libtool + * when building the GTK+ library the process is running against. + * If libtool means nothing to you, don't * worry about it. * - * Returns: the interface age of the GTK+ library. + * Returns: the interface age of the GTK+ library * * Since: 3.0 */ @@ -305,10 +352,10 @@ gtk_get_interface_age (void) /** * gtk_check_version: - * @required_major: the required major version. - * @required_minor: the required minor version. - * @required_micro: the required micro version. - * + * @required_major: the required major version + * @required_minor: the required minor version + * @required_micro: the required micro version + * * Checks that the GTK+ library in use is compatible with the * given version. Generally you would pass in the constants * #GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION @@ -336,23 +383,23 @@ gtk_get_interface_age (void) * given version, or a string describing the version mismatch. * The returned string is owned by GTK+ and should not be modified * or freed. - **/ + */ const gchar* gtk_check_version (guint required_major, - guint required_minor, - guint required_micro) + guint required_minor, + guint required_micro) { gint gtk_effective_micro = 100 * GTK_MINOR_VERSION + GTK_MICRO_VERSION; gint required_effective_micro = 100 * required_minor + required_micro; if (required_major > GTK_MAJOR_VERSION) - return "Gtk+ version too old (major mismatch)"; + return "GTK+ version too old (major mismatch)"; if (required_major < GTK_MAJOR_VERSION) - return "Gtk+ version too new (major mismatch)"; + return "GTK+ version too new (major mismatch)"; if (required_effective_micro < gtk_effective_micro - GTK_BINARY_AGE) - return "Gtk+ version too new (micro mismatch)"; + return "GTK+ version too new (micro mismatch)"; if (required_effective_micro > gtk_effective_micro) - return "Gtk+ version too old (micro mismatch)"; + return "GTK+ version too old (micro mismatch)"; return NULL; } @@ -391,10 +438,10 @@ check_setugid (void) rgid != egid || rgid != sgid) { g_warning ("This process is currently running setuid or setgid.\n" - "This is not a supported use of GTK+. You must create a helper\n" - "program instead. For further details, see:\n\n" - " http://www.gtk.org/setuid.html\n\n" - "Refusing to initialize GTK+."); + "This is not a supported use of GTK+. You must create a helper\n" + "program instead. For further details, see:\n\n" + " http://www.gtk.org/setuid.html\n\n" + "Refusing to initialize GTK+."); exit (1); } #endif @@ -450,9 +497,9 @@ static gboolean do_setlocale = TRUE; * * Prevents gtk_init(), gtk_init_check(), gtk_init_with_args() and * gtk_parse_args() from automatically - * calling setlocale (LC_ALL, ""). You would - * want to use this function if you wanted to set the locale for - * your program to something other than the user's locale, or if + * calling setlocale (LC_ALL, ""). You would + * want to use this function if you wanted to set the locale for + * your program to something other than the user's locale, or if * you wanted to set different values for different locale categories. * * Most programs should not need to call this function. @@ -478,8 +525,8 @@ static gboolean gtk_arg_debug_cb (const char *key, const char *value, gpointer user_data) { debug_flags |= g_parse_debug_string (value, - gtk_debug_keys, - G_N_ELEMENTS (gtk_debug_keys)); + gtk_debug_keys, + G_N_ELEMENTS (gtk_debug_keys)); return TRUE; } @@ -488,8 +535,8 @@ static gboolean gtk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data) { debug_flags &= ~g_parse_debug_string (value, - gtk_debug_keys, - G_N_ELEMENTS (gtk_debug_keys)); + gtk_debug_keys, + G_N_ELEMENTS (gtk_debug_keys)); return TRUE; } @@ -501,9 +548,9 @@ gtk_arg_module_cb (const char *key, const char *value, gpointer user_data) if (value && *value) { if (gtk_modules_string) - g_string_append_c (gtk_modules_string, G_SEARCHPATH_SEPARATOR); + g_string_append_c (gtk_modules_string, G_SEARCHPATH_SEPARATOR); else - gtk_modules_string = g_string_new (NULL); + gtk_modules_string = g_string_new (NULL); g_string_append (gtk_modules_string, value); } @@ -550,66 +597,66 @@ enum_locale_proc (LPTSTR locale) GetLocaleInfo (lcid, LOCALE_SISO3166CTRYNAME, iso3166, sizeof (iso3166))) { if (strcmp (iso639, iso639_to_check) == 0 && - ((iso3166_to_check != NULL && - strcmp (iso3166, iso3166_to_check) == 0) || - (iso3166_to_check == NULL && - SUBLANGID (LANGIDFROMLCID (lcid)) == SUBLANG_DEFAULT))) - { - char language[100], country[100]; - char locale[300]; + ((iso3166_to_check != NULL && + strcmp (iso3166, iso3166_to_check) == 0) || + (iso3166_to_check == NULL && + SUBLANGID (LANGIDFROMLCID (lcid)) == SUBLANG_DEFAULT))) + { + char language[100], country[100]; + char locale[300]; - if (script_to_check != NULL) - { - /* If lcid is the "other" script for this language, - * return TRUE, i.e. continue looking. - */ - if (strcmp (script_to_check, "Latn") == 0) - { - switch (LANGIDFROMLCID (lcid)) - { - case MAKELANGID (LANG_AZERI, SUBLANG_AZERI_CYRILLIC): - return TRUE; - case MAKELANGID (LANG_UZBEK, SUBLANG_UZBEK_CYRILLIC): - return TRUE; - case MAKELANGID (LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC): - return TRUE; - case MAKELANGID (LANG_SERBIAN, 0x07): - /* Serbian in Bosnia and Herzegovina, Cyrillic */ - return TRUE; - } - } - else if (strcmp (script_to_check, "Cyrl") == 0) - { - switch (LANGIDFROMLCID (lcid)) - { - case MAKELANGID (LANG_AZERI, SUBLANG_AZERI_LATIN): - return TRUE; - case MAKELANGID (LANG_UZBEK, SUBLANG_UZBEK_LATIN): - return TRUE; - case MAKELANGID (LANG_SERBIAN, SUBLANG_SERBIAN_LATIN): - return TRUE; - case MAKELANGID (LANG_SERBIAN, 0x06): - /* Serbian in Bosnia and Herzegovina, Latin */ - return TRUE; - } - } - } + if (script_to_check != NULL) + { + /* If lcid is the "other" script for this language, + * return TRUE, i.e. continue looking. + */ + if (strcmp (script_to_check, "Latn") == 0) + { + switch (LANGIDFROMLCID (lcid)) + { + case MAKELANGID (LANG_AZERI, SUBLANG_AZERI_CYRILLIC): + return TRUE; + case MAKELANGID (LANG_UZBEK, SUBLANG_UZBEK_CYRILLIC): + return TRUE; + case MAKELANGID (LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC): + return TRUE; + case MAKELANGID (LANG_SERBIAN, 0x07): + /* Serbian in Bosnia and Herzegovina, Cyrillic */ + return TRUE; + } + } + else if (strcmp (script_to_check, "Cyrl") == 0) + { + switch (LANGIDFROMLCID (lcid)) + { + case MAKELANGID (LANG_AZERI, SUBLANG_AZERI_LATIN): + return TRUE; + case MAKELANGID (LANG_UZBEK, SUBLANG_UZBEK_LATIN): + return TRUE; + case MAKELANGID (LANG_SERBIAN, SUBLANG_SERBIAN_LATIN): + return TRUE; + case MAKELANGID (LANG_SERBIAN, 0x06): + /* Serbian in Bosnia and Herzegovina, Latin */ + return TRUE; + } + } + } - SetThreadLocale (lcid); + SetThreadLocale (lcid); - if (GetLocaleInfo (lcid, LOCALE_SENGLANGUAGE, language, sizeof (language)) && - GetLocaleInfo (lcid, LOCALE_SENGCOUNTRY, country, sizeof (country))) - { - strcpy (locale, language); - strcat (locale, "_"); - strcat (locale, country); + if (GetLocaleInfo (lcid, LOCALE_SENGLANGUAGE, language, sizeof (language)) && + GetLocaleInfo (lcid, LOCALE_SENGCOUNTRY, country, sizeof (country))) + { + strcpy (locale, language); + strcat (locale, "_"); + strcat (locale, country); - if (setlocale (LC_ALL, locale) != NULL) - setlocale_called = TRUE; - } + if (setlocale (LC_ALL, locale) != NULL) + setlocale_called = TRUE; + } - return FALSE; - } + return FALSE; + } } return TRUE; @@ -634,59 +681,59 @@ setlocale_initialization (void) */ char *p = getenv ("LC_ALL"); if (p == NULL) - p = getenv ("LANG"); + p = getenv ("LANG"); if (p != NULL) - { - p = g_strdup (p); - if (strcmp (p, "C") == 0) - SetThreadLocale (LOCALE_SYSTEM_DEFAULT); - else - { - /* Check if one of the supported locales match the - * environment variable. If so, use that locale. - */ - iso639_to_check = p; - iso3166_to_check = strchr (iso639_to_check, '_'); - if (iso3166_to_check != NULL) - { - *iso3166_to_check++ = '\0'; + { + p = g_strdup (p); + if (strcmp (p, "C") == 0) + SetThreadLocale (LOCALE_SYSTEM_DEFAULT); + else + { + /* Check if one of the supported locales match the + * environment variable. If so, use that locale. + */ + iso639_to_check = p; + iso3166_to_check = strchr (iso639_to_check, '_'); + if (iso3166_to_check != NULL) + { + *iso3166_to_check++ = '\0'; - script_to_check = strchr (iso3166_to_check, '@'); - if (script_to_check != NULL) - *script_to_check++ = '\0'; + script_to_check = strchr (iso3166_to_check, '@'); + if (script_to_check != NULL) + *script_to_check++ = '\0'; - /* Handle special cases. */ - - /* The standard code for Serbia and Montenegro was - * "CS", but MSFT uses for some reason "SP". By now - * (October 2006), SP has split into two, "RS" and - * "ME", but don't bother trying to handle those - * yet. Do handle the even older "YU", though. - */ - if (strcmp (iso3166_to_check, "CS") == 0 || - strcmp (iso3166_to_check, "YU") == 0) - iso3166_to_check = "SP"; - } - else - { - script_to_check = strchr (iso639_to_check, '@'); - if (script_to_check != NULL) - *script_to_check++ = '\0'; - /* LANG_SERBIAN == LANG_CROATIAN, recognize just "sr" */ - if (strcmp (iso639_to_check, "sr") == 0) - iso3166_to_check = "SP"; - } + /* Handle special cases. */ - EnumSystemLocales (enum_locale_proc, LCID_SUPPORTED); - } - g_free (p); - } + /* The standard code for Serbia and Montenegro was + * "CS", but MSFT uses for some reason "SP". By now + * (October 2006), SP has split into two, "RS" and + * "ME", but don't bother trying to handle those + * yet. Do handle the even older "YU", though. + */ + if (strcmp (iso3166_to_check, "CS") == 0 || + strcmp (iso3166_to_check, "YU") == 0) + iso3166_to_check = "SP"; + } + else + { + script_to_check = strchr (iso639_to_check, '@'); + if (script_to_check != NULL) + *script_to_check++ = '\0'; + /* LANG_SERBIAN == LANG_CROATIAN, recognize just "sr" */ + if (strcmp (iso639_to_check, "sr") == 0) + iso3166_to_check = "SP"; + } + + EnumSystemLocales (enum_locale_proc, LCID_SUPPORTED); + } + g_free (p); + } if (!setlocale_called) - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); #else if (!setlocale (LC_ALL, "")) - g_warning ("Locale not supported by C library.\n\tUsing the fallback 'C' locale."); + g_warning ("Locale not supported by C library.\n\tUsing the fallback 'C' locale."); #endif } } @@ -709,7 +756,7 @@ check_mixed_deps (void) static void do_pre_parse_initialization (int *argc, - char ***argv) + char ***argv) { const gchar *env_string; @@ -728,11 +775,11 @@ do_pre_parse_initialization (int *argc, if (env_string != NULL) { debug_flags = g_parse_debug_string (env_string, - gtk_debug_keys, - G_N_ELEMENTS (gtk_debug_keys)); + gtk_debug_keys, + G_N_ELEMENTS (gtk_debug_keys)); env_string = NULL; } -#endif /* G_ENABLE_DEBUG */ +#endif /* G_ENABLE_DEBUG */ env_string = g_getenv ("GTK_MODULES"); if (env_string) @@ -756,7 +803,7 @@ gettext_initialization (void) static void do_post_parse_initialization (int *argc, - char ***argv) + char ***argv) { if (gtk_initialized) return; @@ -821,9 +868,9 @@ typedef struct static gboolean pre_parse_hook (GOptionContext *context, - GOptionGroup *group, - gpointer data, - GError **error) + GOptionGroup *group, + gpointer data, + GError **error) { do_pre_parse_initialization (NULL, NULL); @@ -832,9 +879,9 @@ pre_parse_hook (GOptionContext *context, static gboolean post_parse_hook (GOptionContext *context, - GOptionGroup *group, - gpointer data, - GError **error) + GOptionGroup *group, + gpointer data, + GError **error) { OptionGroupInfo *info = data; @@ -844,16 +891,16 @@ post_parse_hook (GOptionContext *context, if (info->open_default_display) { if (gdk_display_open_default_libgtk_only () == NULL) - { - const char *display_name = gdk_get_display_arg_name (); - g_set_error (error, - G_OPTION_ERROR, - G_OPTION_ERROR_FAILED, - _("Cannot open display: %s"), - display_name ? display_name : "" ); - - return FALSE; - } + { + const char *display_name = gdk_get_display_arg_name (); + g_set_error (error, + G_OPTION_ERROR, + G_OPTION_ERROR_FAILED, + _("Cannot open display: %s"), + display_name ? display_name : "" ); + + return FALSE; + } } return TRUE; @@ -863,7 +910,12 @@ post_parse_hook (GOptionContext *context, /** * gtk_get_debug_flags: * - * Returns the GTK+ debug flags setting. + * Returns the GTK+ debug flags. + * + * This function is intended for GTK+ modules that want + * to adjust their debug output based on GTK+ debug flags. + * + * Returns: the GTK+ debug flags. */ guint gtk_get_debug_flags (void) @@ -884,16 +936,18 @@ gtk_set_debug_flags (guint flags) /** * gtk_get_option_group: - * @open_default_display: whether to open the default display - * when parsing the commandline arguments - * + * @open_default_display: whether to open the default display + * when parsing the commandline arguments + * * Returns a #GOptionGroup for the commandline arguments recognized - * by GTK+ and GDK. You should add this group to your #GOptionContext - * with g_option_context_add_group(), if you are using + * by GTK+ and GDK. + * + * You should add this group to your #GOptionContext + * with g_option_context_add_group(), if you are using * g_option_context_parse() to parse your commandline arguments. * * Returns: a #GOptionGroup for the commandline arguments recognized - * by GTK+ + * by GTK+ * * Since: 2.6 */ @@ -920,12 +974,12 @@ gtk_get_option_group (gboolean open_default_display) /** * gtk_init_with_args: - * @argc: a pointer to the number of command line arguments. - * @argv: a pointer to the array of command line arguments. + * @argc: a pointer to the number of command line arguments + * @argv: a pointer to the array of command line arguments * @parameter_string: a string which is displayed in * the first line of output, after * programname [OPTION...] - * @entries: a %NULL-terminated array of #GOptionEntrys + * @entries: a %NULL-terminated array of #GOptionEntrys * describing the options of your program * @translation_domain: a translation domain to use for translating * the output for the options in @entries @@ -938,8 +992,8 @@ gtk_get_option_group (gboolean open_default_display) * output. Note that your program will * be terminated after writing out the help output. * - * Returns: %TRUE if the GUI has been successfully initialized, - * %FALSE otherwise. + * Returns: %TRUE if the windowing system has been successfully + * initialized, %FALSE otherwise * * Since: 2.6 */ @@ -981,8 +1035,8 @@ gtk_init_with_args (gint *argc, /** * gtk_parse_args: - * @argc: (inout): a pointer to the number of command line arguments. - * @argv: (array) (inout): a pointer to the array of command line arguments. + * @argc: (inout): a pointer to the number of command line arguments + * @argv: (array) (inout): a pointer to the array of command line arguments * * Parses command line arguments, and initializes global * attributes of GTK+, but does not actually open a connection @@ -991,14 +1045,14 @@ gtk_init_with_args (gint *argc, * Any arguments used by GTK+ or GDK are removed from the array and * @argc and @argv are updated accordingly. * - * You shouldn't call this function explicitely if you are using + * There is no need to call this function explicitely if you are using * gtk_init(), or gtk_init_check(). * - * Return value: %TRUE if initialization succeeded, otherwise %FALSE. - **/ + * Return value: %TRUE if initialization succeeded, otherwise %FALSE + */ gboolean gtk_parse_args (int *argc, - char ***argv) + char ***argv) { GOptionContext *option_context; GOptionGroup *gtk_group; @@ -1034,24 +1088,26 @@ gtk_parse_args (int *argc, /** * gtk_init_check: - * @argc: (inout): Address of the argc parameter of your - * main() function. Changed if any arguments were handled. - * @argv: (array length=argc) (inout) (allow-none): Address of the argv parameter of main(). - * Any parameters understood by gtk_init() are stripped before return. + * @argc: (inout): Address of the argc parameter of + * your main() function. Changed if any arguments were handled + * @argv: (array length=argc) (inout) (allow-none): Address of the + * argv parameter of main() + * Any parameters understood by gtk_init() are stripped before return * - * This function does the same work as gtk_init() with only - * a single change: It does not terminate the program if the GUI can't be - * initialized. Instead it returns %FALSE on failure. + * This function does the same work as gtk_init() with only a single + * change: It does not terminate the program if the windowing system + * can't be initialized. Instead it returns %FALSE on failure. * - * This way the application can fall back to some other means of communication - * with the user - for example a curses or command line interface. - * - * Return value: %TRUE if the GUI has been successfully initialized, - * %FALSE otherwise. - **/ + * This way the application can fall back to some other means of + * communication with the user - for example a curses or command line + * interface. + * + * Return value: %TRUE if the windowing system has been successfully + * initialized, %FALSE otherwise + */ gboolean -gtk_init_check (int *argc, - char ***argv) +gtk_init_check (int *argc, + char ***argv) { if (!gtk_parse_args (argc, argv)) return FALSE; @@ -1065,27 +1121,30 @@ gtk_init_check (int *argc, /** * gtk_init: - * @argc: (inout): Address of the argc parameter of your - * main() function. Changed if any arguments were handled. - * @argv: (array length=argc) (inout) (allow-none): Address of the argv parameter of main(). - * Any parameters understood by gtk_init() are stripped before return. + * @argc: (inout): Address of the argc parameter of + * your main() function. Changed if any arguments were handled + * @argv: (array length=argc) (inout) (allow-none): Address of the + * argv parameter of main(). Any options + * understood by GTK+ are stripped before return. * * Call this function before using any other GTK+ functions in your GUI * applications. It will initialize everything needed to operate the - * toolkit and parses some standard command line options. @argc and - * @argv are adjusted accordingly so your own code will - * never see those standard arguments. + * toolkit and parses some standard command line options. * - * Note that there are some alternative ways to initialize GTK+: - * if you are calling gtk_parse_args(), gtk_init_check(), - * gtk_init_with_args() or g_option_context_parse() with - * the option group returned by gtk_get_option_group(), you - * don't have to call gtk_init(). + * @argc and @argv are adjusted accordingly so your own code will + * never see those standard arguments. + * + * Note that there are some alternative ways to initialize GTK+: + * if you are calling gtk_parse_args(), gtk_init_check(), + * gtk_init_with_args() or g_option_context_parse() with + * the option group returned by gtk_get_option_group(), + * you don't have to call gtk_init(). * * - * This function will terminate your program if it was unable to initialize - * the GUI for some reason. If you want your program to fall back to a - * textual interface you want to call gtk_init_check() instead. + * This function will terminate your program if it was unable to + * initialize the windowing system for some reason. If you want + * your program to fall back to a textual interface you want to + * call gtk_init_check() instead. * * * @@ -1096,7 +1155,7 @@ gtk_init_check (int *argc, * but notice that other libraries (e.g. libdbus or gvfs) might do * similar things. * - **/ + */ void gtk_init (int *argc, char ***argv) { @@ -1110,18 +1169,25 @@ gtk_init (int *argc, char ***argv) } } -#ifdef G_PLATFORM_WIN32 +#ifdef G_OS_WIN32 + +/* This is relevant when building with gcc for Windows (MinGW), + * where we want to be struct packing compatible with MSVC, + * i.e. use the -mms-bitfields switch. + * For Cygwin there should be no need to be compatible with MSVC, + * so no need to use G_PLATFORM_WIN32. + */ static void check_sizeof_GtkWindow (size_t sizeof_GtkWindow) { if (sizeof_GtkWindow != sizeof (GtkWindow)) g_error ("Incompatible build!\n" - "The code using GTK+ thinks GtkWindow is of different\n" + "The code using GTK+ thinks GtkWindow is of different\n" "size than it actually is in this build of GTK+.\n" - "On Windows, this probably means that you have compiled\n" - "your code with gcc without the -mms-bitfields switch,\n" - "or that you are using an unsupported compiler."); + "On Windows, this probably means that you have compiled\n" + "your code with gcc without the -mms-bitfields switch,\n" + "or that you are using an unsupported compiler."); } /* In GTK+ 2.0 the GtkWindow struct actually is the same size in @@ -1135,11 +1201,11 @@ check_sizeof_GtkBox (size_t sizeof_GtkBox) { if (sizeof_GtkBox != sizeof (GtkBox)) g_error ("Incompatible build!\n" - "The code using GTK+ thinks GtkBox is of different\n" + "The code using GTK+ thinks GtkBox is of different\n" "size than it actually is in this build of GTK+.\n" - "On Windows, this probably means that you have compiled\n" - "your code with gcc without the -mms-bitfields switch,\n" - "or that you are using an unsupported compiler."); + "On Windows, this probably means that you have compiled\n" + "your code with gcc without the -mms-bitfields switch,\n" + "or that you are using an unsupported compiler."); } /* These two functions might get more checks added later, thus pass @@ -1165,38 +1231,7 @@ gtk_init_check_abi_check (int *argc, char ***argv, int num_checks, size_t sizeof #endif -/** - * gtk_set_locale: - * - * Initializes internationalization support for GTK+. gtk_init() - * automatically does this, so there is typically no point - * in calling this function. - * - * If you are calling this function because you changed the locale - * after GTK+ is was initialized, then calling this function - * may help a bit. (Note, however, that changing the locale - * after GTK+ is initialized may produce inconsistent results and - * is not really supported.) - * - * In detail - sets the current locale according to the - * program environment. This is the same as calling the C library function - * setlocale (LC_ALL, "") but also takes care of the - * locale specific setup of the windowing system used by GDK. - * - * Returns: a string corresponding to the locale set, typically in the - * form lang_COUNTRY, where lang is an ISO-639 language code, and - * COUNTRY is an ISO-3166 country code. On Unix, this form matches the - * result of the setlocale(); it is also used on other machines, such as - * Windows, where the C library returns a different result. The string is - * owned by GTK+ and should not be modified or freed. - **/ -gchar * -gtk_set_locale (void) -{ - return gdk_set_locale (); -} - -/** +/* * _gtk_get_lc_ctype: * * Return the Unix-style locale string for the language currently in @@ -1208,13 +1243,13 @@ gtk_set_locale (void) * COUNTRY is an ISO-3166 country code. For instance, sv_FI for * Swedish as written in Finland or pt_BR for Portuguese as written in * Brazil. - * + * * On Windows, the C library doesn't use any such environment * variables, and setting them won't affect the behaviour of functions - * like ctime(). The user sets the locale through the Regional Options - * in the Control Panel. The C library (in the setlocale() function) - * does not use country and language codes, but country and language - * names spelled out in English. + * like ctime(). The user sets the locale through the Regional Options + * in the Control Panel. The C library (in the setlocale() function) + * does not use country and language codes, but country and language + * names spelled out in English. * However, this function does check the above environment * variables, and does return a Unix-style locale string based on * either said environment variables or the thread's current locale. @@ -1261,30 +1296,37 @@ _gtk_get_lc_ctype (void) * * Returns the #PangoLanguage for the default language currently in * effect. (Note that this can change over the life of an - * application.) The default language is derived from the current + * application.) The default language is derived from the current * locale. It determines, for example, whether GTK+ uses the * right-to-left or left-to-right text direction. * - * This function is equivalent to pango_language_get_default(). See - * that function for details. - * - * Return value: the default language as a #PangoLanguage, must not be - * freed - **/ + * This function is equivalent to pango_language_get_default(). + * See that function for details. + * + * Return value: the default language as a #PangoLanguage, + * must not be freed + */ PangoLanguage * gtk_get_default_language (void) { return pango_language_get_default (); } +/** + * gtk_main: + * + * Runs the main loop until gtk_main_quit() is called. + * + * You can nest calls to gtk_main(). In that case gtk_main_quit() + * will make the innermost invocation of the main loop return. + */ void gtk_main (void) { - GList *tmp_list; GMainLoop *loop; gtk_main_loop_level++; - + loop = g_main_loop_new (NULL, TRUE); main_loops = g_slist_prepend (main_loops, loop); @@ -1296,43 +1338,6 @@ gtk_main (void) gdk_flush (); } - if (quit_functions) - { - GList *reinvoke_list = NULL; - GtkQuitFunction *quitf; - - while (quit_functions) - { - quitf = quit_functions->data; - - tmp_list = quit_functions; - quit_functions = g_list_remove_link (quit_functions, quit_functions); - g_list_free_1 (tmp_list); - - if ((quitf->main_level && quitf->main_level != gtk_main_loop_level) || - gtk_quit_invoke_function (quitf)) - { - reinvoke_list = g_list_prepend (reinvoke_list, quitf); - } - else - { - gtk_quit_destroy (quitf); - } - } - if (reinvoke_list) - { - GList *work; - - work = g_list_last (reinvoke_list); - if (quit_functions) - quit_functions->prev = work; - work->next = quit_functions; - quit_functions = work; - } - - gdk_flush (); - } - main_loops = g_slist_remove (main_loops, loop); g_main_loop_unref (loop); @@ -1349,12 +1354,26 @@ gtk_main (void) } } +/** + * gtk_main_level: + * + * Asks for the current nesting level of the main loop. + * + * Returns: the nesting level of the current invocation + * of the main loop + */ guint gtk_main_level (void) { return gtk_main_loop_level; } +/** + * gtk_main_quit: + * + * Makes the innermost invocation of the main loop return + * when it regains control. + */ void gtk_main_quit (void) { @@ -1363,18 +1382,53 @@ gtk_main_quit (void) g_main_loop_quit (main_loops->data); } +/** + * gtk_events_pending: + * + * Checks if any events are pending. + * + * This can be used to update the UI and invoke timeouts etc. + * while doing some time intensive computation. + * + * + * Updating the UI during a long computation + * + * /* computation going on... */ + * + * while (gtk_events_pending ()) + * gtk_main_iteration (); + * + * /* ...computation continued */ + * + * + * + * Returns: %TRUE if any events are pending, %FALSE otherwise + */ gboolean gtk_events_pending (void) { gboolean result; - - GDK_THREADS_LEAVE (); + + GDK_THREADS_LEAVE (); result = g_main_context_pending (NULL); GDK_THREADS_ENTER (); return result; } +/** + * gtk_main_iteration: + * + * Runs a single iteration of the mainloop. + * + * If no events are waiting to be processed GTK+ will block + * until the next event is noticed. If you don't want to block + * look at gtk_main_iteration_do() or check if any events are + * pending with gtk_events_pending() first. + * + * Returns: %TRUE if gtk_main_quit() has been called for the + * innermost mainloop + */ gboolean gtk_main_iteration (void) { @@ -1388,6 +1442,17 @@ gtk_main_iteration (void) return TRUE; } +/** + * gtk_main_iteration_do: + * @blocking: %TRUE if you want GTK+ to block if no events are pending + * + * Runs a single iteration of the mainloop. + * If no events are available either return or block depending on + * the value of @blocking. + * + * Returns: %TRUE if gtk_main_quit() has been called for the + * innermost mainloop + */ gboolean gtk_main_iteration_do (gboolean blocking) { @@ -1401,8 +1466,7 @@ gtk_main_iteration_do (gboolean blocking) return TRUE; } -/* private libgtk to libgdk interfaces - */ +/* private libgtk to libgdk interfaces */ gboolean gdk_device_grab_info_libgtk_only (GdkDisplay *display, GdkDevice *device, GdkWindow **grab_window, @@ -1410,15 +1474,15 @@ gboolean gdk_device_grab_info_libgtk_only (GdkDisplay *display, static void rewrite_events_translate (GdkWindow *old_window, - GdkWindow *new_window, - gdouble *x, - gdouble *y) + GdkWindow *new_window, + gdouble *x, + gdouble *y) { gint old_origin_x, old_origin_y; gint new_origin_x, new_origin_y; - gdk_window_get_origin (old_window, &old_origin_x, &old_origin_y); - gdk_window_get_origin (new_window, &new_origin_x, &new_origin_y); + gdk_window_get_origin (old_window, &old_origin_x, &old_origin_y); + gdk_window_get_origin (new_window, &new_origin_x, &new_origin_y); *x += old_origin_x - new_origin_x; *y += old_origin_y - new_origin_y; @@ -1426,7 +1490,7 @@ rewrite_events_translate (GdkWindow *old_window, static GdkEvent * rewrite_event_for_window (GdkEvent *event, - GdkWindow *new_window) + GdkWindow *new_window) { event = gdk_event_copy (event); @@ -1434,21 +1498,21 @@ rewrite_event_for_window (GdkEvent *event, { case GDK_SCROLL: rewrite_events_translate (event->any.window, - new_window, - &event->scroll.x, &event->scroll.y); + new_window, + &event->scroll.x, &event->scroll.y); break; case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: case GDK_BUTTON_RELEASE: rewrite_events_translate (event->any.window, - new_window, - &event->button.x, &event->button.y); + new_window, + &event->button.x, &event->button.y); break; case GDK_MOTION_NOTIFY: rewrite_events_translate (event->any.window, - new_window, - &event->motion.x, &event->motion.y); + new_window, + &event->motion.x, &event->motion.y); break; case GDK_KEY_PRESS: case GDK_KEY_RELEASE: @@ -1499,7 +1563,7 @@ rewrite_event_for_grabs (GdkEvent *event) device = gdk_event_get_device (event); if (!gdk_device_grab_info_libgtk_only (display, device, &grab_window, &owner_events) || - !owner_events) + !owner_events) return NULL; break; default: @@ -1517,7 +1581,67 @@ rewrite_event_for_grabs (GdkEvent *event) return NULL; } -void +/** + * gtk_main_do_event: + * @event: An event to process (normally passed by GDK) + * + * Processes a single GDK event. + * + * This is public only to allow filtering of events between GDK and GTK+. + * You will not usually need to call this function directly. + * + * While you should not call this function directly, you might want to + * know how exactly events are handled. So here is what this function + * does with the event: + * + * + * + * Compress enter/leave notify events. If the event passed build an + * enter/leave pair together with the next event (peeked from GDK), both + * events are thrown away. This is to avoid a backlog of (de-)highlighting + * widgets crossed by the pointer. + * + * + * Find the widget which got the event. If the widget can't be determined + * the event is thrown away unless it belongs to a INCR transaction. In that + * case it is passed to gtk_selection_incr_event(). + * + * + * Then the event is pushed onto a stack so you can query the currently + * handled event with gtk_get_current_event(). + * + * + * The event is sent to a widget. If a grab is active all events for widgets + * that are not in the contained in the grab widget are sent to the latter + * with a few exceptions: + * + * + * Deletion and destruction events are still sent to the event widget for + * obvious reasons. + * + * + * Events which directly relate to the visual representation of the event + * widget. + * + * + * Leave events are delivered to the event widget if there was an enter + * event delivered to it before without the paired leave event. + * + * + * Drag events are not redirected because it is unclear what the semantics + * of that would be. + * + * + * Another point of interest might be that all key events are first passed + * through the key snooper functions if there are any. Read the description + * of gtk_key_snooper_install() if you need this feature. + * + * + * After finishing the delivery the event is popped from the event stack. + * + * + */ +void gtk_main_do_event (GdkEvent *event) { GtkWidget *event_widget; @@ -1540,24 +1664,23 @@ gtk_main_do_event (GdkEvent *event) } /* Find the widget which got the event. We store the widget - * in the user_data field of GdkWindow's. - * Ignore the event if we don't have a widget for it, except - * for GDK_PROPERTY_NOTIFY events which are handled specialy. - * Though this happens rarely, bogus events can occour - * for e.g. destroyed GdkWindows. + * in the user_data field of GdkWindow's. Ignore the event + * if we don't have a widget for it, except for GDK_PROPERTY_NOTIFY + * events which are handled specially. Though this happens rarely, + * bogus events can occur for e.g. destroyed GdkWindows. */ event_widget = gtk_get_event_widget (event); if (!event_widget) { /* To handle selection INCR transactions, we select * PropertyNotify events on the requestor window and create - * a corresponding (fake) GdkWindow so that events get - * here. There won't be a widget though, so we have to handle - * them specially - */ + * a corresponding (fake) GdkWindow so that events get here. + * There won't be a widget though, so we have to handle + * them specially + */ if (event->type == GDK_PROPERTY_NOTIFY) - _gtk_selection_incr_event (event->any.window, - &event->property); + _gtk_selection_incr_event (event->any.window, + &event->property); return; } @@ -1575,24 +1698,25 @@ gtk_main_do_event (GdkEvent *event) window_group = gtk_main_get_window_group (event_widget); device = gdk_event_get_device (event); - /* check whether there is a (device) grab in effect... - */ + /* check whether there is a (device) grab in effect... */ if (device) grab_widget = gtk_window_group_get_current_device_grab (window_group, device); - if (!grab_widget && window_group->grabs) - grab_widget = window_group->grabs->data; + if (!grab_widget) + grab_widget = gtk_window_group_get_current_grab (window_group); /* If the grab widget is an ancestor of the event widget - * then we send the event to the original event widget. - * This is the key to implementing modality. + * then we send the event to the original event widget. + * This is the key to implementing modality. */ if (!grab_widget || (gtk_widget_is_sensitive (event_widget) && gtk_widget_is_ancestor (event_widget, grab_widget))) grab_widget = event_widget; - /* If the widget receiving events is actually blocked by another device GTK+ grab */ + /* If the widget receiving events is actually blocked by another + * device GTK+ grab + */ if (device && _gtk_window_group_widget_is_blocked_for_device (window_group, grab_widget, device)) { @@ -1609,58 +1733,59 @@ gtk_main_do_event (GdkEvent *event) /* Not all events get sent to the grabbing widget. * The delete, destroy, expose, focus change and resize - * events still get sent to the event widget because - * 1) these events have no meaning for the grabbing widget - * and 2) redirecting these events to the grabbing widget - * could cause the display to be messed up. - * + * events still get sent to the event widget because + * 1) these events have no meaning for the grabbing widget + * and 2) redirecting these events to the grabbing widget + * could cause the display to be messed up. + * * Drag events are also not redirected, since it isn't - * clear what the semantics of that would be. + * clear what the semantics of that would be. */ switch (event->type) { case GDK_NOTHING: break; - + case GDK_DELETE: g_object_ref (event_widget); - if ((!window_group->grabs || gtk_widget_get_toplevel (window_group->grabs->data) == event_widget) && - !gtk_widget_event (event_widget, event)) - gtk_widget_destroy (event_widget); + if ((!gtk_window_group_get_current_grab (window_group) || gtk_widget_get_toplevel (gtk_window_group_get_current_grab (window_group)) == event_widget) && + !gtk_widget_event (event_widget, event)) + gtk_widget_destroy (event_widget); g_object_unref (event_widget); break; - + case GDK_DESTROY: /* Unexpected GDK_DESTROY from the outside, ignore for * child windows, handle like a GDK_DELETE for toplevels */ if (!gtk_widget_get_parent (event_widget)) - { - g_object_ref (event_widget); - if (!gtk_widget_event (event_widget, event) && - gtk_widget_get_realized (event_widget)) - gtk_widget_destroy (event_widget); - g_object_unref (event_widget); - } + { + g_object_ref (event_widget); + if (!gtk_widget_event (event_widget, event) && + gtk_widget_get_realized (event_widget)) + gtk_widget_destroy (event_widget); + g_object_unref (event_widget); + } break; - + case GDK_EXPOSE: if (event->any.window && gtk_widget_get_double_buffered (event_widget)) - { - gdk_window_begin_paint_region (event->any.window, event->expose.region); - gtk_widget_send_expose (event_widget, event); - gdk_window_end_paint (event->any.window); - } + { + gdk_window_begin_paint_region (event->any.window, event->expose.region); + gtk_widget_send_expose (event_widget, event); + gdk_window_end_paint (event->any.window); + } else - { - /* The app may paint with a previously allocated cairo_t, - which will draw directly to the window. We can't catch cairo - draw operations to automatically flush the window, thus we - need to explicitly flush any outstanding moves or double - buffering */ - gdk_window_flush (event->any.window); - gtk_widget_send_expose (event_widget, event); - } + { + /* The app may paint with a previously allocated cairo_t, + * which will draw directly to the window. We can't catch cairo + * draw operations to automatically flush the window, thus we + * need to explicitly flush any outstanding moves or double + * buffering + */ + gdk_window_flush (event->any.window); + gtk_widget_send_expose (event_widget, event); + } break; case GDK_PROPERTY_NOTIFY: @@ -1689,10 +1814,10 @@ gtk_main_do_event (GdkEvent *event) case GDK_KEY_PRESS: case GDK_KEY_RELEASE: if (key_snoopers) - { - if (gtk_invoke_key_snoopers (grab_widget, event)) - break; - } + { + if (gtk_invoke_key_snoopers (grab_widget, event)) + break; + } /* Catch alt press to enable auto-mnemonics; * menus are handled elsewhere */ @@ -1724,23 +1849,23 @@ gtk_main_do_event (GdkEvent *event) case GDK_PROXIMITY_OUT: gtk_propagate_event (grab_widget, event); break; - + case GDK_ENTER_NOTIFY: _gtk_widget_set_device_window (event_widget, gdk_event_get_device (event), event->any.window); if (gtk_widget_is_sensitive (grab_widget)) - gtk_widget_event (grab_widget, event); + gtk_widget_event (grab_widget, event); break; - + case GDK_LEAVE_NOTIFY: _gtk_widget_set_device_window (event_widget, gdk_event_get_device (event), NULL); if (gtk_widget_is_sensitive (grab_widget)) - gtk_widget_event (grab_widget, event); + gtk_widget_event (grab_widget, event); break; - + case GDK_DRAG_STATUS: case GDK_DROP_FINISHED: _gtk_drag_source_handle_event (event_widget, event); @@ -1769,7 +1894,7 @@ gtk_main_do_event (GdkEvent *event) { _gtk_tooltip_handle_event (event); } - + tmp_list = current_events; current_events = g_list_remove_link (current_events, tmp_list); g_list_free_1 (tmp_list); @@ -1778,12 +1903,63 @@ gtk_main_do_event (GdkEvent *event) gdk_event_free (rewritten_event); } +/** + * gtk_true: + * + * All this function does it to return %TRUE. + * + * This can be useful for example if you want to inhibit the deletion + * of a window. Of course you should not do this as the user expects + * a reaction from clicking the close icon of the window... + * + * + * A persistent window + * + * #include <gtk/gtk.h>< + * + * int + * main (int argc, char **argv) + * { + * GtkWidget *win, *but; + * + * gtk_init (&argc, &argv); + * + * win = gtk_window_new (GTK_WINDOW_TOPLEVEL); + * g_signal_connect (win, "delete-event", + * G_CALLBACK (gtk_true), NULL); + * g_signal_connect (win, "destroy", + * G_CALLBACK (gtk_main_quit), NULL); + * + * but = gtk_button_new_with_label ("Close yourself. I mean it!"); + * g_signal_connect_swapped (but, "clicked", + * G_CALLBACK (gtk_object_destroy), win); + * gtk_container_add (GTK_CONTAINER (win), but); + * + * gtk_widget_show_all (win); + * + * gtk_main (); + * + * return 0; + * } + * + * + * + * Returns: %TRUE + */ gboolean gtk_true (void) { return TRUE; } +/** + * gtk_false: + * + * Analogical to gtk_true(), this function does nothing + * but always returns %FALSE. + * + * Returns: %FALSE + */ gboolean gtk_false (void) { @@ -1791,7 +1967,7 @@ gtk_false (void) } static GtkWindowGroup * -gtk_main_get_window_group (GtkWidget *widget) +gtk_main_get_window_group (GtkWidget *widget) { GtkWidget *toplevel = NULL; @@ -1873,7 +2049,7 @@ synth_crossing_for_grab_notify (GtkWidget *from, static void gtk_grab_notify_foreach (GtkWidget *child, - gpointer data) + gpointer data) { GrabNotifyInfo *info = data; gboolean was_grabbed, is_grabbed, was_shadowed, is_shadowed; @@ -1906,7 +2082,7 @@ gtk_grab_notify_foreach (GtkWidget *child, { _gtk_widget_set_shadowed (child, TRUE); if (!was_shadowed && devices && - gtk_widget_is_sensitive (child)) + gtk_widget_is_sensitive (child)) synth_crossing_for_grab_notify (child, info->new_grab_widget, info, devices, GDK_CROSSING_GTK_GRAB); @@ -1935,9 +2111,9 @@ gtk_grab_notify_foreach (GtkWidget *child, static void gtk_grab_notify (GtkWindowGroup *group, GdkDevice *device, - GtkWidget *old_grab_widget, - GtkWidget *new_grab_widget, - gboolean from_grab) + GtkWidget *old_grab_widget, + GtkWidget *new_grab_widget, + gboolean from_grab) { GList *toplevels; GrabNotifyInfo info = { 0 }; @@ -1964,7 +2140,7 @@ gtk_grab_notify (GtkWindowGroup *group, info.is_grabbed = FALSE; if (group == gtk_window_get_group (toplevel)) - gtk_grab_notify_foreach (GTK_WIDGET (toplevel), &info); + gtk_grab_notify_foreach (GTK_WIDGET (toplevel), &info); g_object_unref (toplevel); } @@ -1972,27 +2148,37 @@ gtk_grab_notify (GtkWindowGroup *group, g_object_unref (group); } +/** + * gtk_grab_add: + * @widget: The widget that grabs keyboard and pointer events + * + * Makes @widget the current grabbed widget. + * + * This means that interaction with other widgets in the same + * application is blocked and mouse as well as keyboard events + * are delivered to this widget. + * + * If @widget is not sensitive, it is not set as the current + * grabbed widget and this function does nothing. + */ void gtk_grab_add (GtkWidget *widget) { GtkWindowGroup *group; GtkWidget *old_grab_widget; - + g_return_if_fail (widget != NULL); - + if (!gtk_widget_has_grab (widget) && gtk_widget_is_sensitive (widget)) { _gtk_widget_set_has_grab (widget, TRUE); - + group = gtk_main_get_window_group (widget); - if (group->grabs) - old_grab_widget = (GtkWidget *)group->grabs->data; - else - old_grab_widget = NULL; + old_grab_widget = gtk_window_group_get_current_grab (group); g_object_ref (widget); - group->grabs = g_slist_prepend (group->grabs, widget); + _gtk_window_group_add_grab (group, widget); gtk_grab_notify (group, NULL, old_grab_widget, widget, TRUE); } @@ -2013,33 +2199,37 @@ gtk_grab_get_current (void) group = gtk_main_get_window_group (NULL); - if (group->grabs) - return GTK_WIDGET (group->grabs->data); - return NULL; + return gtk_window_group_get_current_grab (group); } +/** + * gtk_grab_remove: + * @widget: The widget which gives up the grab + * + * Removes the grab from the given widget. + * + * You have to pair calls to gtk_grab_add() and gtk_grab_remove(). + * + * If @widget does not have the grab, this function does nothing. + */ void gtk_grab_remove (GtkWidget *widget) { GtkWindowGroup *group; GtkWidget *new_grab_widget; - + g_return_if_fail (widget != NULL); - + if (gtk_widget_has_grab (widget)) { _gtk_widget_set_has_grab (widget, FALSE); group = gtk_main_get_window_group (widget); - group->grabs = g_slist_remove (group->grabs, widget); - - if (group->grabs) - new_grab_widget = (GtkWidget *)group->grabs->data; - else - new_grab_widget = NULL; + _gtk_window_group_remove_grab (group, widget); + new_grab_widget = gtk_window_group_get_current_grab (group); gtk_grab_notify (group, NULL, widget, new_grab_widget, FALSE); - + g_object_unref (widget); } } @@ -2056,11 +2246,11 @@ gtk_grab_remove (GtkWidget *widget) * unable to interact with @widget during the grab. * * Since: 3.0 - **/ + */ void -gtk_device_grab_add (GtkWidget *widget, - GdkDevice *device, - gboolean block_others) +gtk_device_grab_add (GtkWidget *widget, + GdkDevice *device, + gboolean block_others) { GtkWindowGroup *group; GtkWidget *old_grab_widget; @@ -2082,11 +2272,13 @@ gtk_device_grab_add (GtkWidget *widget, * @widget: a #GtkWidget * @device: a #GdkDevice * - * Removes a device grab from the given widget. You have to pair calls - * to gtk_device_grab_add() and gtk_device_grab_remove(). + * Removes a device grab from the given widget. + * + * You have to pair calls to gtk_device_grab_add() and + * gtk_device_grab_remove(). * * Since: 3.0 - **/ + */ void gtk_device_grab_remove (GtkWidget *widget, GdkDevice *device) @@ -2104,9 +2296,20 @@ gtk_device_grab_remove (GtkWidget *widget, gtk_grab_notify (group, device, widget, new_grab_widget, FALSE); } +/** + * gtk_key_snooper_install: + * @snooper: a #GtkKeySnoopFunc + * @func_data: data to pass to @snooper + * + * Installs a key snooper function, which will get called on all + * key events before delivering them normally. + * + * Returns: a unique id for this key snooper for use with + * gtk_key_snooper_remove(). + */ guint gtk_key_snooper_install (GtkKeySnoopFunc snooper, - gpointer func_data) + gpointer func_data) { GtkKeySnooperData *data; static guint snooper_id = 1; @@ -2122,6 +2325,12 @@ gtk_key_snooper_install (GtkKeySnoopFunc snooper, return data->id; } +/** + * gtk_key_snooper_remove: + * @snooper_handler_id: Identifies the key snooper to remove + * + * Removes the key snooper function with the given id. + */ void gtk_key_snooper_remove (guint snooper_id) { @@ -2133,7 +2342,7 @@ gtk_key_snooper_remove (guint snooper_id) { data = slist->data; if (data->id == snooper_id) - break; + break; slist = slist->next; data = NULL; @@ -2147,7 +2356,7 @@ gtk_key_snooper_remove (guint snooper_id) static gint gtk_invoke_key_snoopers (GtkWidget *grab_widget, - GdkEvent *event) + GdkEvent *event) { GSList *slist; gint return_val = FALSE; @@ -2165,135 +2374,19 @@ gtk_invoke_key_snoopers (GtkWidget *grab_widget, return return_val; } -guint -gtk_quit_add_full (guint main_level, - GtkFunction function, - GtkCallbackMarshal marshal, - gpointer data, - GDestroyNotify destroy) -{ - static guint quit_id = 1; - GtkQuitFunction *quitf; - - g_return_val_if_fail ((function != NULL) || (marshal != NULL), 0); - - quitf = g_slice_new (GtkQuitFunction); - - quitf->id = quit_id++; - quitf->main_level = main_level; - quitf->function = function; - quitf->marshal = marshal; - quitf->data = data; - quitf->destroy = destroy; - - quit_functions = g_list_prepend (quit_functions, quitf); - - return quitf->id; -} - -static void -gtk_quit_destroy (GtkQuitFunction *quitf) -{ - if (quitf->destroy) - quitf->destroy (quitf->data); - g_slice_free (GtkQuitFunction, quitf); -} - -static gint -gtk_quit_destructor (GtkWidget **object_p) -{ - if (*object_p) - gtk_widget_destroy (*object_p); - g_free (object_p); - - return FALSE; -} - -void -gtk_quit_add_destroy (guint main_level, - GtkWidget *object) -{ - GtkWidget **object_p; - - g_return_if_fail (main_level > 0); - g_return_if_fail (GTK_IS_WIDGET (object)); - - object_p = g_new (GtkWidget*, 1); - *object_p = object; - g_signal_connect (object, - "destroy", - G_CALLBACK (gtk_widget_destroyed), - object_p); - gtk_quit_add (main_level, (GtkFunction) gtk_quit_destructor, object_p); -} - -guint -gtk_quit_add (guint main_level, - GtkFunction function, - gpointer data) -{ - return gtk_quit_add_full (main_level, function, NULL, data, NULL); -} - -void -gtk_quit_remove (guint id) -{ - GtkQuitFunction *quitf; - GList *tmp_list; - - tmp_list = quit_functions; - while (tmp_list) - { - quitf = tmp_list->data; - - if (quitf->id == id) - { - quit_functions = g_list_remove_link (quit_functions, tmp_list); - g_list_free (tmp_list); - gtk_quit_destroy (quitf); - - return; - } - - tmp_list = tmp_list->next; - } -} - -void -gtk_quit_remove_by_data (gpointer data) -{ - GtkQuitFunction *quitf; - GList *tmp_list; - - tmp_list = quit_functions; - while (tmp_list) - { - quitf = tmp_list->data; - - if (quitf->data == data) - { - quit_functions = g_list_remove_link (quit_functions, tmp_list); - g_list_free (tmp_list); - gtk_quit_destroy (quitf); - - return; - } - - tmp_list = tmp_list->next; - } -} - /** * gtk_get_current_event: - * - * Obtains a copy of the event currently being processed by GTK+. For - * example, if you get a "clicked" signal from #GtkButton, the current - * event will be the #GdkEventButton that triggered the "clicked" - * signal. The returned event must be freed with gdk_event_free(). - * If there is no current event, the function returns %NULL. - * - * Return value: a copy of the current event, or %NULL if no current event. - **/ + * + * Obtains a copy of the event currently being processed by GTK+. + * + * For example, if you are handling a #GtkButton::clicked signal, + * the current event will be the #GdkEventButton that triggered + * the ::clicked signal. + * + * Return value: a copy of the current event, or %NULL if there is + * no current event. The returned event must be freed with + * gdk_event_free(). + */ GdkEvent* gtk_get_current_event (void) { @@ -2305,12 +2398,13 @@ gtk_get_current_event (void) /** * gtk_get_current_event_time: - * - * If there is a current event and it has a timestamp, return that - * timestamp, otherwise return %GDK_CURRENT_TIME. - * - * Return value: the timestamp from the current event, or %GDK_CURRENT_TIME. - **/ + * + * If there is a current event and it has a timestamp, + * return that timestamp, otherwise return %GDK_CURRENT_TIME. + * + * Return value: the timestamp from the current event, + * or %GDK_CURRENT_TIME. + */ guint32 gtk_get_current_event_time (void) { @@ -2323,18 +2417,19 @@ gtk_get_current_event_time (void) /** * gtk_get_current_event_state: * @state: a location to store the state of the current event - * + * * If there is a current event and it has a state field, place * that state field in @state and return %TRUE, otherwise return * %FALSE. - * - * Return value: %TRUE if there was a current event and it had a state field - **/ + * + * Return value: %TRUE if there was a current event and it + * had a state field + */ gboolean gtk_get_current_event_state (GdkModifierType *state) { g_return_val_if_fail (state != NULL, FALSE); - + if (current_events) return gdk_event_get_state (current_events->data, state); else @@ -2351,7 +2446,7 @@ gtk_get_current_event_state (GdkModifierType *state) * device, otherwise return %NULL. * * Returns: (transfer none): a #GdkDevice, or %NULL - **/ + */ GdkDevice * gtk_get_current_event_device (void) { @@ -2368,10 +2463,10 @@ gtk_get_current_event_device (void) * If @event is %NULL or the event was not associated with any widget, * returns %NULL, otherwise returns the widget that received the event * originally. - * + * * Return value: (transfer none): the widget that originally * received @event, or %NULL - **/ + */ GtkWidget* gtk_get_event_widget (GdkEvent *event) { @@ -2379,135 +2474,116 @@ gtk_get_event_widget (GdkEvent *event) gpointer widget_ptr; widget = NULL; - if (event && event->any.window && + if (event && event->any.window && (event->type == GDK_DESTROY || !gdk_window_is_destroyed (event->any.window))) { gdk_window_get_user_data (event->any.window, &widget_ptr); widget = widget_ptr; } - + return widget; } -static gint -gtk_quit_invoke_function (GtkQuitFunction *quitf) -{ - if (!quitf->marshal) - return quitf->function (quitf->data); - else - { - GtkArg args[1]; - gint ret_val = FALSE; - - args[0].name = NULL; - args[0].type = G_TYPE_BOOLEAN; - args[0].d.pointer_data = &ret_val; - ((GtkCallbackMarshal) quitf->marshal) (NULL, - quitf->data, - 0, args); - return ret_val; - } -} - /** * gtk_propagate_event: * @widget: a #GtkWidget * @event: an event * * Sends an event to a widget, propagating the event to parent widgets - * if the event remains unhandled. Events received by GTK+ from GDK - * normally begin in gtk_main_do_event(). Depending on the type of - * event, existence of modal dialogs, grabs, etc., the event may be - * propagated; if so, this function is used. gtk_propagate_event() - * calls gtk_widget_event() on each widget it decides to send the - * event to. So gtk_widget_event() is the lowest-level function; it - * simply emits the "event" and possibly an event-specific signal on a - * widget. gtk_propagate_event() is a bit higher-level, and - * gtk_main_do_event() is the highest level. + * if the event remains unhandled. + * + * Events received by GTK+ from GDK normally begin in gtk_main_do_event(). + * Depending on the type of event, existence of modal dialogs, grabs, etc., + * the event may be propagated; if so, this function is used. + * + * gtk_propagate_event() calls gtk_widget_event() on each widget it + * decides to send the event to. So gtk_widget_event() is the lowest-level + * function; it simply emits the #GtkWidget::event and possibly an + * event-specific signal on a widget. gtk_propagate_event() is a bit + * higher-level, and gtk_main_do_event() is the highest level. * * All that said, you most likely don't want to use any of these - * functions; synthesizing events is rarely needed. Consider asking on - * the mailing list for better ways to achieve your goals. For - * example, use gdk_window_invalidate_rect() or - * gtk_widget_queue_draw() instead of making up expose events. - * - **/ + * functions; synthesizing events is rarely needed. There are almost + * certainly better ways to achieve your goals. For example, use + * gdk_window_invalidate_rect() or gtk_widget_queue_draw() instead + * of making up expose events. + */ void gtk_propagate_event (GtkWidget *widget, - GdkEvent *event) + GdkEvent *event) { gint handled_event; - + g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (event != NULL); - + handled_event = FALSE; g_object_ref (widget); - + if ((event->type == GDK_KEY_PRESS) || (event->type == GDK_KEY_RELEASE)) { /* Only send key events within Window widgets to the Window - * The Window widget will in turn pass the - * key event on to the currently focused widget - * for that window. + * The Window widget will in turn pass the + * key event on to the currently focused widget + * for that window. */ GtkWidget *window; window = gtk_widget_get_toplevel (widget); if (GTK_IS_WINDOW (window)) - { - /* If there is a grab within the window, give the grab widget - * a first crack at the key event - */ - if (widget != window && gtk_widget_has_grab (widget)) - handled_event = gtk_widget_event (widget, event); - - if (!handled_event) - { - window = gtk_widget_get_toplevel (widget); - if (GTK_IS_WINDOW (window)) - { - if (gtk_widget_is_sensitive (window)) - gtk_widget_event (window, event); - } - } - - handled_event = TRUE; /* don't send to widget */ - } + { + /* If there is a grab within the window, give the grab widget + * a first crack at the key event + */ + if (widget != window && gtk_widget_has_grab (widget)) + handled_event = gtk_widget_event (widget, event); + + if (!handled_event) + { + window = gtk_widget_get_toplevel (widget); + if (GTK_IS_WINDOW (window)) + { + if (gtk_widget_is_sensitive (window)) + gtk_widget_event (window, event); + } + } + + handled_event = TRUE; /* don't send to widget */ + } } - + /* Other events get propagated up the widget tree - * so that parents can see the button and motion - * events of the children. + * so that parents can see the button and motion + * events of the children. */ if (!handled_event) { while (TRUE) - { - GtkWidget *tmp; + { + GtkWidget *tmp; - /* Scroll events are special cased here because it - * feels wrong when scrolling a GtkViewport, say, - * to have children of the viewport eat the scroll - * event - */ - if (!gtk_widget_is_sensitive (widget)) - handled_event = event->type != GDK_SCROLL; - else - handled_event = gtk_widget_event (widget, event); + /* Scroll events are special cased here because it + * feels wrong when scrolling a GtkViewport, say, + * to have children of the viewport eat the scroll + * event + */ + if (!gtk_widget_is_sensitive (widget)) + handled_event = event->type != GDK_SCROLL; + else + handled_event = gtk_widget_event (widget, event); tmp = gtk_widget_get_parent (widget); - g_object_unref (widget); + g_object_unref (widget); - widget = tmp; - - if (!handled_event && widget) - g_object_ref (widget); - else - break; - } + widget = tmp; + + if (!handled_event && widget) + g_object_ref (widget); + else + break; + } } else g_object_unref (widget); @@ -2515,16 +2591,16 @@ gtk_propagate_event (GtkWidget *widget, gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint, - GValue *return_accu, - const GValue *handler_return, - gpointer dummy) + GValue *return_accu, + const GValue *handler_return, + gpointer dummy) { gboolean continue_emission; gboolean signal_handled; - + signal_handled = g_value_get_boolean (handler_return); g_value_set_boolean (return_accu, signal_handled); continue_emission = !signal_handled; - + return continue_emission; } diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h index 1549d9586f..99ce6d45ab 100644 --- a/gtk/gtkmain.h +++ b/gtk/gtkmain.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -33,7 +33,6 @@ #include -#include #include #ifdef G_PLATFORM_WIN32 #include @@ -42,15 +41,33 @@ G_BEGIN_DECLS -/* Priorities for redrawing and resizing +/** + * GTK_PRIORITY_RESIZE: + * + * Use this priority for functionality related to size allocation. + * + * It is used internally by GTK+ to compute the sizes of widgets. + * This priority is higher than %GDK_PRIORITY_REDRAW to avoid + * resizing a widget which was just redrawn. */ -#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10) +#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10) -typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget, - GdkEventKey *event, - gpointer func_data); +/** + * GtkKeySnoopFunc: + * @grab_widget: the widget to which the event will be delivered + * @event: the key event + * @func_data: data supplied to gtk_key_snooper_install() + * + * Key snooper functions are called before normal event delivery. + * They can be used to implement custom key event handling. + * + * Returns: %TRUE to stop further processing of @event, %FALSE to continue. + */ +typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget, + GdkEventKey *event, + gpointer func_data); -/* Gtk version. +/* GTK+ version */ guint gtk_get_major_version (void) G_GNUC_CONST; guint gtk_get_minor_version (void) G_GNUC_CONST; @@ -64,16 +81,16 @@ guint gtk_get_interface_age (void) G_GNUC_CONST; #define gtk_binary_age gtk_get_binary_age () #define gtk_interface_age gtk_get_interface_age () -const gchar* gtk_check_version (guint required_major, - guint required_minor, - guint required_micro); +const gchar* gtk_check_version (guint required_major, + guint required_minor, + guint required_micro); /* Initialization, exit, mainloop and miscellaneous routines */ gboolean gtk_parse_args (int *argc, - char ***argv); + char ***argv); void gtk_init (int *argc, char ***argv); @@ -89,22 +106,22 @@ gboolean gtk_init_with_args (gint *argc, GError **error); GOptionGroup *gtk_get_option_group (gboolean open_default_display); - -#ifdef G_PLATFORM_WIN32 + +#ifdef G_OS_WIN32 /* Variants that are used to check for correct struct packing * when building GTK+-using code. */ -void gtk_init_abi_check (int *argc, - char ***argv, - int num_checks, - size_t sizeof_GtkWindow, - size_t sizeof_GtkBox); -gboolean gtk_init_check_abi_check (int *argc, - char ***argv, - int num_checks, - size_t sizeof_GtkWindow, - size_t sizeof_GtkBox); +void gtk_init_abi_check (int *argc, + char ***argv, + int num_checks, + size_t sizeof_GtkWindow, + size_t sizeof_GtkBox); +gboolean gtk_init_check_abi_check (int *argc, + char ***argv, + int num_checks, + size_t sizeof_GtkWindow, + size_t sizeof_GtkBox); #define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox)) #define gtk_init_check(argc, argv) gtk_init_check_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox)) @@ -112,29 +129,22 @@ gboolean gtk_init_check_abi_check (int *argc, #endif void gtk_disable_setlocale (void); -gchar * gtk_set_locale (void); PangoLanguage *gtk_get_default_language (void); gboolean gtk_events_pending (void); -/* The following is the event func GTK+ registers with GDK - * we expose it mainly to allow filtering of events between - * GDK and GTK+. - */ -void gtk_main_do_event (GdkEvent *event); +void gtk_main_do_event (GdkEvent *event); +void gtk_main (void); +guint gtk_main_level (void); +void gtk_main_quit (void); +gboolean gtk_main_iteration (void); +gboolean gtk_main_iteration_do (gboolean blocking); -void gtk_main (void); -guint gtk_main_level (void); -void gtk_main_quit (void); -gboolean gtk_main_iteration (void); -/* gtk_main_iteration() calls gtk_main_iteration_do(TRUE) */ -gboolean gtk_main_iteration_do (gboolean blocking); +gboolean gtk_true (void) G_GNUC_CONST; +gboolean gtk_false (void) G_GNUC_CONST; -gboolean gtk_true (void) G_GNUC_CONST; -gboolean gtk_false (void) G_GNUC_CONST; - -void gtk_grab_add (GtkWidget *widget); -GtkWidget* gtk_grab_get_current (void); -void gtk_grab_remove (GtkWidget *widget); +void gtk_grab_add (GtkWidget *widget); +GtkWidget* gtk_grab_get_current (void); +void gtk_grab_remove (GtkWidget *widget); void gtk_device_grab_add (GtkWidget *widget, GdkDevice *device, @@ -142,45 +152,21 @@ void gtk_device_grab_add (GtkWidget *widget, void gtk_device_grab_remove (GtkWidget *widget, GdkDevice *device); -#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) -void gtk_quit_add_destroy (guint main_level, - GtkWidget *object); -guint gtk_quit_add (guint main_level, - GtkFunction function, - gpointer data); -guint gtk_quit_add_full (guint main_level, - GtkFunction function, - GtkCallbackMarshal marshal, - gpointer data, - GDestroyNotify destroy); -void gtk_quit_remove (guint quit_handler_id); -void gtk_quit_remove_by_data (gpointer data); -#endif +guint gtk_key_snooper_install (GtkKeySnoopFunc snooper, + gpointer func_data); +void gtk_key_snooper_remove (guint snooper_handler_id); -guint gtk_key_snooper_install (GtkKeySnoopFunc snooper, - gpointer func_data); -void gtk_key_snooper_remove (guint snooper_handler_id); +GdkEvent * gtk_get_current_event (void); +guint32 gtk_get_current_event_time (void); +gboolean gtk_get_current_event_state (GdkModifierType *state); +GdkDevice *gtk_get_current_event_device (void); -GdkEvent* gtk_get_current_event (void); -guint32 gtk_get_current_event_time (void); -gboolean gtk_get_current_event_state (GdkModifierType *state); -GdkDevice * gtk_get_current_event_device (void); +GtkWidget *gtk_get_event_widget (GdkEvent *event); -GtkWidget* gtk_get_event_widget (GdkEvent *event); +void gtk_propagate_event (GtkWidget *widget, + GdkEvent *event); -/* Private routines internal to GTK+ - */ -void gtk_propagate_event (GtkWidget *widget, - GdkEvent *event); - -gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint, - GValue *return_accu, - const GValue *handler_return, - gpointer dummy); - -gchar *_gtk_get_lc_ctype (void); - G_END_DECLS #endif /* __GTK_MAIN_H__ */ diff --git a/gtk/gtkmainprivate.h b/gtk/gtkmainprivate.h new file mode 100644 index 0000000000..f4605d7ccb --- /dev/null +++ b/gtk/gtkmainprivate.h @@ -0,0 +1,35 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2011 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 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, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __GTK_MAIN_PRIVATE_H__ +#define __GTK_MAIN_PRIVATE_H__ + +#include "gtkmain.h" + +G_BEGIN_DECLS + +gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint, + GValue *return_accu, + const GValue *handler_return, + gpointer dummy); + +gchar *_gtk_get_lc_ctype (void); + +G_END_DECLS + +#endif /* __GTK_MAIN_PRIVATE_H__ */ diff --git a/gtk/gtkmarshalers.list b/gtk/gtkmarshalers.list index 10f0dfd689..fa60a7c91d 100644 --- a/gtk/gtkmarshalers.list +++ b/gtk/gtkmarshalers.list @@ -69,6 +69,7 @@ VOID:ENUM,FLOAT,BOOLEAN VOID:ENUM,INT VOID:ENUM,INT,BOOLEAN VOID:ENUM,BOXED +VOID:ENUM,STRING VOID:FLAGS VOID:INT VOID:INT,BOOLEAN @@ -79,6 +80,7 @@ VOID:OBJECT VOID:OBJECT,BOOLEAN VOID:OBJECT,BOXED,BOXED VOID:OBJECT,BOXED,UINT,UINT +VOID:OBJECT,BOXED,BOOLEAN,BOOLEAN VOID:OBJECT,INT VOID:OBJECT,INT,OBJECT VOID:OBJECT,INT,INT @@ -90,7 +92,9 @@ VOID:OBJECT,STRING,STRING VOID:OBJECT,UINT VOID:OBJECT,UINT,FLAGS VOID:OBJECT,STRING +VOID:OBJECT,OBJECT,STRING VOID:OBJECT,OBJECT,OBJECT +VOID:OBJECT,OBJECT,BOXED,STRING VOID:POINTER VOID:POINTER,INT VOID:POINTER,BOOLEAN diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c index e678198a39..0a125adacc 100644 --- a/gtk/gtkmenu.c +++ b/gtk/gtkmenu.c @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -24,18 +24,86 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkmenu + * @Short_description: A menu widget + * @Title: GtkMenu + * + * A #GtkMenu is a #GtkMenuShell that implements a drop down menu + * consisting of a list of #GtkMenuItem objects which can be navigated + * and activated by the user to perform application functions. + * + * A #GtkMenu is most commonly dropped down by activating a + * #GtkMenuItem in a #GtkMenuBar or popped up by activating a + * #GtkMenuItem in another #GtkMenu. + * + * A #GtkMenu can also be popped up by activating a #GtkOptionMenu. + * Other composite widgets such as the #GtkNotebook can pop up a + * #GtkMenu as well. + * + * Applications can display a #GtkMenu as a popup menu by calling the + * gtk_menu_popup() function. The example below shows how an application + * can pop up a menu when the 3rd mouse button is pressed. + * + * + * Connecting the popup signal handler. + * + * /* connect our handler which will popup the menu */ + * g_signal_connect_swapped (window, "button_press_event", + * G_CALLBACK (my_popup_handler), menu); + * + * + * + * + * Signal handler which displays a popup menu. + * + * static gint + * my_popup_handler (GtkWidget *widget, GdkEvent *event) + * { + * GtkMenu *menu; + * GdkEventButton *event_button; + * + * g_return_val_if_fail (widget != NULL, FALSE); + * g_return_val_if_fail (GTK_IS_MENU (widget), FALSE); + * g_return_val_if_fail (event != NULL, FALSE); + * + * /* The "widget" is the menu that was supplied when + * * g_signal_connect_swapped() was called. + * */ + * menu = GTK_MENU (widget); + * + * if (event->type == GDK_BUTTON_PRESS) + * { + * event_button = (GdkEventButton *) event; + * if (event_button->button == 3) + * { + * gtk_menu_popup (menu, NULL, NULL, NULL, NULL, + * event_button->button, event_button->time); + * return TRUE; + * } + * } + * + * return FALSE; + * } + * + * + */ + #include "config.h" + #include -#include "gdk/gdkkeysyms.h" + +#include + #include "gtkaccellabel.h" #include "gtkaccelmap.h" #include "gtkbindings.h" #include "gtkcheckmenuitem.h" -#include #include "gtkmain.h" #include "gtkmarshalers.h" -#include "gtkmenu.h" #include "gtkmenuprivate.h" +#include "gtkmenuitemprivate.h" +#include "gtkmenushellprivate.h" #include "gtktearoffmenuitem.h" #include "gtkwindow.h" #include "gtkhbox.h" @@ -43,10 +111,11 @@ #include "gtksettings.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" #define NAVIGATION_REGION_OVERSHOOT 50 /* How much the navigation region - * extends below the submenu - */ + * extends below the submenu + */ #define MENU_SCROLL_STEP1 8 #define MENU_SCROLL_STEP2 15 @@ -57,9 +126,8 @@ #define ATTACH_INFO_KEY "gtk-menu-child-attach-info-key" #define ATTACHED_MENUS "gtk-attached-menus" -typedef struct _GtkMenuAttachData GtkMenuAttachData; -typedef struct _GtkMenuPrivate GtkMenuPrivate; -typedef struct _GtkMenuPopdownData GtkMenuPopdownData; +typedef struct _GtkMenuAttachData GtkMenuAttachData; +typedef struct _GtkMenuPopdownData GtkMenuPopdownData; struct _GtkMenuAttachData { @@ -67,7 +135,7 @@ struct _GtkMenuAttachData GtkMenuDetachFunc detacher; }; -struct _GtkMenuPrivate +struct _OldGtkMenuPrivate { gint x; gint y; @@ -151,13 +219,13 @@ enum { }; static void gtk_menu_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_menu_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_menu_set_child_property(GtkContainer *container, GtkWidget *child, guint property_id, @@ -172,28 +240,28 @@ static void gtk_menu_destroy (GtkWidget *widget); static void gtk_menu_realize (GtkWidget *widget); static void gtk_menu_unrealize (GtkWidget *widget); static void gtk_menu_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static void gtk_menu_show (GtkWidget *widget); static gboolean gtk_menu_draw (GtkWidget *widget, cairo_t *cr); static gboolean gtk_menu_key_press (GtkWidget *widget, - GdkEventKey *event); + GdkEventKey *event); static gboolean gtk_menu_scroll (GtkWidget *widget, - GdkEventScroll *event); + GdkEventScroll *event); static gboolean gtk_menu_button_press (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gboolean gtk_menu_button_release (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gboolean gtk_menu_motion_notify (GtkWidget *widget, - GdkEventMotion *event); + GdkEventMotion *event); static gboolean gtk_menu_enter_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gboolean gtk_menu_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static void gtk_menu_scroll_to (GtkMenu *menu, - gint offset); + gint offset); static void gtk_menu_grab_notify (GtkWidget *widget, - gboolean was_grabbed); + gboolean was_grabbed); static void gtk_menu_stop_scrolling (GtkMenu *menu); static void gtk_menu_remove_scroll_timeout (GtkMenu *menu); @@ -202,48 +270,48 @@ static gboolean gtk_menu_scroll_timeout_initial (gpointer data); static void gtk_menu_start_scrolling (GtkMenu *menu); static void gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell, - GtkWidget *menu_item); + GtkWidget *menu_item); static void gtk_menu_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item); + GtkWidget *menu_item); static void gtk_menu_real_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position); + GtkWidget *child, + gint position); static void gtk_menu_scrollbar_changed (GtkAdjustment *adjustment, - GtkMenu *menu); + GtkMenu *menu); static void gtk_menu_handle_scrolling (GtkMenu *menu, - gint event_x, - gint event_y, - gboolean enter, + gint event_x, + gint event_y, + gboolean enter, gboolean motion); static void gtk_menu_set_tearoff_hints (GtkMenu *menu, - gint width); + gint width); static void gtk_menu_style_updated (GtkWidget *widget); static gboolean gtk_menu_focus (GtkWidget *widget, - GtkDirectionType direction); + GtkDirectionType direction); static gint gtk_menu_get_popup_delay (GtkMenuShell *menu_shell); static void gtk_menu_move_current (GtkMenuShell *menu_shell, GtkMenuDirectionType direction); static void gtk_menu_real_move_scroll (GtkMenu *menu, - GtkScrollType type); + GtkScrollType type); static void gtk_menu_stop_navigating_submenu (GtkMenu *menu); static gboolean gtk_menu_stop_navigating_submenu_cb (gpointer user_data); static gboolean gtk_menu_navigating_submenu (GtkMenu *menu, - gint event_x, - gint event_y); + gint event_x, + gint event_y); static void gtk_menu_set_submenu_navigation_region (GtkMenu *menu, - GtkMenuItem *menu_item, - GdkEventCrossing *event); + GtkMenuItem *menu_item, + GdkEventCrossing *event); -static void gtk_menu_deactivate (GtkMenuShell *menu_shell); +static void gtk_menu_deactivate (GtkMenuShell *menu_shell); static void gtk_menu_show_all (GtkWidget *widget); static void gtk_menu_position (GtkMenu *menu, gboolean set_scroll_offset); -static void gtk_menu_reparent (GtkMenu *menu, - GtkWidget *new_parent, - gboolean unrealize); +static void gtk_menu_reparent (GtkMenu *menu, + GtkWidget *new_parent, + gboolean unrealize); static void gtk_menu_remove (GtkContainer *menu, - GtkWidget *widget); + GtkWidget *widget); static void gtk_menu_update_title (GtkMenu *menu); @@ -253,7 +321,7 @@ static GdkWindow *menu_grab_transfer_window_get (GtkMenu *menu); static gboolean gtk_menu_real_can_activate_accel (GtkWidget *widget, guint signal_id); static void _gtk_menu_refresh_accel_paths (GtkMenu *menu, - gboolean group_changed); + gboolean group_changed); static void gtk_menu_get_preferred_width (GtkWidget *widget, gint *minimum_size, @@ -271,18 +339,12 @@ static const gchar attach_data_key[] = "gtk-menu-attach-data"; static guint menu_signals[LAST_SIGNAL] = { 0 }; -static GtkMenuPrivate * -gtk_menu_get_private (GtkMenu *menu) -{ - return G_TYPE_INSTANCE_GET_PRIVATE (menu, GTK_TYPE_MENU, GtkMenuPrivate); -} - G_DEFINE_TYPE (GtkMenu, gtk_menu, GTK_TYPE_MENU_SHELL) static void menu_queue_resize (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; priv->have_layout = FALSE; gtk_widget_queue_resize (GTK_WIDGET (menu)); @@ -314,15 +376,15 @@ static gboolean is_grid_attached (AttachInfo *ai) { return (ai->left_attach >= 0 && - ai->right_attach >= 0 && - ai->top_attach >= 0 && - ai->bottom_attach >= 0); + ai->right_attach >= 0 && + ai->top_attach >= 0 && + ai->bottom_attach >= 0); } static void menu_ensure_layout (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; if (!priv->have_layout) { @@ -330,7 +392,7 @@ menu_ensure_layout (GtkMenu *menu) GList *l; gchar *row_occupied; gint current_row; - gint max_right_attach; + gint max_right_attach; gint max_bottom_attach; /* Find extents of gridded portion @@ -338,64 +400,63 @@ menu_ensure_layout (GtkMenu *menu) max_right_attach = 1; max_bottom_attach = 0; - for (l = menu_shell->children; l; l = l->next) - { - GtkWidget *child = l->data; - AttachInfo *ai = get_attach_info (child); + for (l = menu_shell->priv->children; l; l = l->next) + { + GtkWidget *child = l->data; + AttachInfo *ai = get_attach_info (child); - if (is_grid_attached (ai)) - { - max_bottom_attach = MAX (max_bottom_attach, ai->bottom_attach); - max_right_attach = MAX (max_right_attach, ai->right_attach); - } - } - - /* Find empty rows - */ + if (is_grid_attached (ai)) + { + max_bottom_attach = MAX (max_bottom_attach, ai->bottom_attach); + max_right_attach = MAX (max_right_attach, ai->right_attach); + } + } + + /* Find empty rows */ row_occupied = g_malloc0 (max_bottom_attach); - for (l = menu_shell->children; l; l = l->next) - { - GtkWidget *child = l->data; - AttachInfo *ai = get_attach_info (child); + for (l = menu_shell->priv->children; l; l = l->next) + { + GtkWidget *child = l->data; + AttachInfo *ai = get_attach_info (child); - if (is_grid_attached (ai)) - { - gint i; + if (is_grid_attached (ai)) + { + gint i; - for (i = ai->top_attach; i < ai->bottom_attach; i++) - row_occupied[i] = TRUE; - } - } + for (i = ai->top_attach; i < ai->bottom_attach; i++) + row_occupied[i] = TRUE; + } + } /* Lay non-grid-items out in those rows */ current_row = 0; - for (l = menu_shell->children; l; l = l->next) - { - GtkWidget *child = l->data; - AttachInfo *ai = get_attach_info (child); + for (l = menu_shell->priv->children; l; l = l->next) + { + GtkWidget *child = l->data; + AttachInfo *ai = get_attach_info (child); - if (!is_grid_attached (ai)) - { - while (current_row < max_bottom_attach && row_occupied[current_row]) - current_row++; - - ai->effective_left_attach = 0; - ai->effective_right_attach = max_right_attach; - ai->effective_top_attach = current_row; - ai->effective_bottom_attach = current_row + 1; + if (!is_grid_attached (ai)) + { + while (current_row < max_bottom_attach && row_occupied[current_row]) + current_row++; - current_row++; - } - else - { - ai->effective_left_attach = ai->left_attach; - ai->effective_right_attach = ai->right_attach; - ai->effective_top_attach = ai->top_attach; - ai->effective_bottom_attach = ai->bottom_attach; - } - } + ai->effective_left_attach = 0; + ai->effective_right_attach = max_right_attach; + ai->effective_top_attach = current_row; + ai->effective_bottom_attach = current_row + 1; + + current_row++; + } + else + { + ai->effective_left_attach = ai->left_attach; + ai->effective_right_attach = ai->right_attach; + ai->effective_top_attach = ai->top_attach; + ai->effective_bottom_attach = ai->bottom_attach; + } + } g_free (row_occupied); @@ -409,7 +470,7 @@ menu_ensure_layout (GtkMenu *menu) static gint gtk_menu_get_n_columns (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; menu_ensure_layout (menu); @@ -419,7 +480,7 @@ gtk_menu_get_n_columns (GtkMenu *menu) static gint gtk_menu_get_n_rows (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; menu_ensure_layout (menu); @@ -428,10 +489,10 @@ gtk_menu_get_n_rows (GtkMenu *menu) static void get_effective_child_attach (GtkWidget *child, - int *l, - int *r, - int *t, - int *b) + int *l, + int *r, + int *t, + int *b) { GtkMenu *menu = GTK_MENU (gtk_widget_get_parent (child)); AttachInfo *ai; @@ -496,6 +557,11 @@ gtk_menu_class_init (GtkMenuClass *class) menu_shell_class->get_popup_delay = gtk_menu_get_popup_delay; menu_shell_class->move_current = gtk_menu_move_current; + /** + * GtkMenu::move-scroll: + * @menu: a #GtkMenu + * @scroll_type: a #GtkScrollType + */ menu_signals[MOVE_SCROLL] = g_signal_new_class_handler (I_("move-scroll"), G_OBJECT_CLASS_TYPE (gobject_class), @@ -517,10 +583,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_ACTIVE, g_param_spec_int ("active", - P_("Active"), - P_("The currently selected menu item"), - -1, G_MAXINT, -1, - GTK_PARAM_READWRITE)); + P_("Active"), + P_("The currently selected menu item"), + -1, G_MAXINT, -1, + GTK_PARAM_READWRITE)); /** * GtkMenu:accel-group: @@ -532,10 +598,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_ACCEL_GROUP, g_param_spec_object ("accel-group", - P_("Accel Group"), - P_("The accel group holding accelerators for the menu"), - GTK_TYPE_ACCEL_GROUP, - GTK_PARAM_READWRITE)); + P_("Accel Group"), + P_("The accel group holding accelerators for the menu"), + GTK_TYPE_ACCEL_GROUP, + GTK_PARAM_READWRITE)); /** * GtkMenu:accel-path: @@ -547,10 +613,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_ACCEL_PATH, g_param_spec_string ("accel-path", - P_("Accel Path"), - P_("An accel path used to conveniently construct accel paths of child items"), - NULL, - GTK_PARAM_READWRITE)); + P_("Accel Path"), + P_("An accel path used to conveniently construct accel paths of child items"), + NULL, + GTK_PARAM_READWRITE)); /** * GtkMenu:attach-widget: @@ -564,10 +630,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_ATTACH_WIDGET, g_param_spec_object ("attach-widget", - P_("Attach Widget"), - P_("The widget the menu is attached to"), - GTK_TYPE_WIDGET, - GTK_PARAM_READWRITE)); + P_("Attach Widget"), + P_("The widget the menu is attached to"), + GTK_TYPE_WIDGET, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_TEAROFF_TITLE, @@ -587,10 +653,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_TEAROFF_STATE, g_param_spec_boolean ("tearoff-state", - P_("Tearoff State"), - P_("A boolean that indicates whether the menu is torn-off"), - FALSE, - GTK_PARAM_READWRITE)); + P_("Tearoff State"), + P_("A boolean that indicates whether the menu is torn-off"), + FALSE, + GTK_PARAM_READWRITE)); /** * GtkMenu:monitor: @@ -602,19 +668,19 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_MONITOR, g_param_spec_int ("monitor", - P_("Monitor"), - P_("The monitor the menu will be popped up on"), - -1, G_MAXINT, -1, - GTK_PARAM_READWRITE)); + P_("Monitor"), + P_("The monitor the menu will be popped up on"), + -1, G_MAXINT, -1, + GTK_PARAM_READWRITE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("vertical-padding", - P_("Vertical Padding"), - P_("Extra space at the top and bottom of the menu"), - 0, - G_MAXINT, - 1, - GTK_PARAM_READABLE)); + g_param_spec_int ("vertical-padding", + P_("Vertical Padding"), + P_("Extra space at the top and bottom of the menu"), + 0, + G_MAXINT, + 1, + GTK_PARAM_READABLE)); /** * GtkMenu:reserve-toggle-size: @@ -632,10 +698,10 @@ gtk_menu_class_init (GtkMenuClass *class) g_object_class_install_property (gobject_class, PROP_RESERVE_TOGGLE_SIZE, g_param_spec_boolean ("reserve-toggle-size", - P_("Reserve Toggle Size"), - P_("A boolean that indicates whether the menu reserves space for toggles and icons"), - TRUE, - GTK_PARAM_READWRITE)); + P_("Reserve Toggle Size"), + P_("A boolean that indicates whether the menu reserves space for toggles and icons"), + TRUE, + GTK_PARAM_READWRITE)); gtk_widget_class_install_style_property (widget_class, g_param_spec_int ("horizontal-padding", @@ -647,22 +713,22 @@ gtk_menu_class_init (GtkMenuClass *class) GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("vertical-offset", - P_("Vertical Offset"), - P_("When the menu is a submenu, position it this number of pixels offset vertically"), - G_MININT, - G_MAXINT, - 0, - GTK_PARAM_READABLE)); + g_param_spec_int ("vertical-offset", + P_("Vertical Offset"), + P_("When the menu is a submenu, position it this number of pixels offset vertically"), + G_MININT, + G_MAXINT, + 0, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("horizontal-offset", - P_("Horizontal Offset"), - P_("When the menu is a submenu, position it this number of pixels offset horizontally"), - G_MININT, - G_MAXINT, - -2, - GTK_PARAM_READABLE)); + g_param_spec_int ("horizontal-offset", + P_("Horizontal Offset"), + P_("When the menu is a submenu, position it this number of pixels offset horizontally"), + G_MININT, + G_MAXINT, + -2, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, g_param_spec_boolean ("double-arrows", @@ -688,38 +754,38 @@ gtk_menu_class_init (GtkMenuClass *class) gtk_container_class_install_child_property (container_class, CHILD_PROP_LEFT_ATTACH, - g_param_spec_int ("left-attach", + g_param_spec_int ("left-attach", P_("Left Attach"), P_("The column number to attach the left side of the child to"), - -1, INT_MAX, -1, + -1, INT_MAX, -1, GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, CHILD_PROP_RIGHT_ATTACH, - g_param_spec_int ("right-attach", + g_param_spec_int ("right-attach", P_("Right Attach"), P_("The column number to attach the right side of the child to"), - -1, INT_MAX, -1, + -1, INT_MAX, -1, GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, CHILD_PROP_TOP_ATTACH, - g_param_spec_int ("top-attach", + g_param_spec_int ("top-attach", P_("Top Attach"), P_("The row number to attach the top of the child to"), - -1, INT_MAX, -1, + -1, INT_MAX, -1, GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, CHILD_PROP_BOTTOM_ATTACH, - g_param_spec_int ("bottom-attach", + g_param_spec_int ("bottom-attach", P_("Bottom Attach"), P_("The row number to attach the bottom of the child to"), - -1, INT_MAX, -1, + -1, INT_MAX, -1, GTK_PARAM_READWRITE)); /** - * GtkMenu::arrow-scaling + * GtkMenu:arrow-scaling * * Arbitrary constant to scale down the size of the scroll arrow. * @@ -734,85 +800,85 @@ gtk_menu_class_init (GtkMenuClass *class) binding_set = gtk_binding_set_by_class (class); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Up, 0, - I_("move-current"), 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_PREV); + GDK_KEY_Up, 0, + I_("move-current"), 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_PREV); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Up, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_PREV); + GDK_KEY_KP_Up, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_PREV); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Down, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_NEXT); + GDK_KEY_Down, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_NEXT); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Down, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_NEXT); + GDK_KEY_KP_Down, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_NEXT); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Left, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_PARENT); + GDK_KEY_Left, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_PARENT); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Left, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_PARENT); + GDK_KEY_KP_Left, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_PARENT); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Right, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_CHILD); + GDK_KEY_Right, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_CHILD); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Right, 0, - "move-current", 1, - GTK_TYPE_MENU_DIRECTION_TYPE, - GTK_MENU_DIR_CHILD); + GDK_KEY_KP_Right, 0, + "move-current", 1, + GTK_TYPE_MENU_DIRECTION_TYPE, + GTK_MENU_DIR_CHILD); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Home, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_START); + GDK_KEY_Home, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_START); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Home, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_START); + GDK_KEY_KP_Home, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_START); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_End, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_END); + GDK_KEY_End, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_END); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_End, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_END); + GDK_KEY_KP_End, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_END); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Page_Up, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_PAGE_UP); + GDK_KEY_Page_Up, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_PAGE_UP); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Page_Up, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_PAGE_UP); + GDK_KEY_KP_Page_Up, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_PAGE_UP); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Page_Down, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_PAGE_DOWN); + GDK_KEY_Page_Down, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_PAGE_DOWN); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Page_Down, 0, - "move-scroll", 1, - GTK_TYPE_SCROLL_TYPE, - GTK_SCROLL_PAGE_DOWN); + GDK_KEY_KP_Page_Down, 0, + "move-scroll", 1, + GTK_TYPE_SCROLL_TYPE, + GTK_SCROLL_PAGE_DOWN); g_type_class_add_private (gobject_class, sizeof (GtkMenuPrivate)); } @@ -820,9 +886,9 @@ gtk_menu_class_init (GtkMenuClass *class) static void gtk_menu_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkMenu *menu = GTK_MENU (object); @@ -870,16 +936,16 @@ gtk_menu_set_property (GObject *object, static void gtk_menu_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkMenu *menu = GTK_MENU (object); switch (prop_id) { case PROP_ACTIVE: - g_value_set_int (value, g_list_index (GTK_MENU_SHELL (menu)->children, gtk_menu_get_active (menu))); + g_value_set_int (value, g_list_index (GTK_MENU_SHELL (menu)->priv->children, gtk_menu_get_active (menu))); break; case PROP_ACCEL_GROUP: g_value_set_object (value, gtk_menu_get_accel_group (menu)); @@ -927,7 +993,7 @@ gtk_menu_set_child_property (GtkContainer *container, ai->right_attach = g_value_get_int (value); break; case CHILD_PROP_TOP_ATTACH: - ai->top_attach = g_value_get_int (value); + ai->top_attach = g_value_get_int (value); break; case CHILD_PROP_BOTTOM_ATTACH: ai->bottom_attach = g_value_get_int (value); @@ -973,8 +1039,8 @@ gtk_menu_get_child_property (GtkContainer *container, static gboolean gtk_menu_window_event (GtkWidget *window, - GdkEvent *event, - GtkWidget *menu) + GdkEvent *event, + GtkWidget *menu) { gboolean handled = FALSE; @@ -1000,53 +1066,29 @@ gtk_menu_window_event (GtkWidget *window, static void gtk_menu_init (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv; GtkStyleContext *context; - menu->parent_menu_item = NULL; - menu->old_active_menu_item = NULL; - menu->accel_group = NULL; - menu->position_func = NULL; - menu->position_func_data = NULL; - menu->toggle_size = 0; + priv = G_TYPE_INSTANCE_GET_PRIVATE (menu, GTK_TYPE_MENU, GtkMenuPrivate); - menu->toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW, - "type", GTK_WINDOW_POPUP, - "child", menu, - NULL), - "signal::event", gtk_menu_window_event, menu, - "signal::destroy", gtk_widget_destroyed, &menu->toplevel, - NULL); - gtk_window_set_resizable (GTK_WINDOW (menu->toplevel), FALSE); - gtk_window_set_mnemonic_modifier (GTK_WINDOW (menu->toplevel), 0); + menu->priv = priv; + + priv->toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW, + "type", GTK_WINDOW_POPUP, + "child", menu, + NULL), + "signal::event", gtk_menu_window_event, menu, + "signal::destroy", gtk_widget_destroyed, &priv->toplevel, + NULL); + gtk_window_set_resizable (GTK_WINDOW (priv->toplevel), FALSE); + gtk_window_set_mnemonic_modifier (GTK_WINDOW (priv->toplevel), 0); /* Refloat the menu, so that reference counting for the menu isn't * affected by it being a child of the toplevel */ g_object_force_floating (G_OBJECT (menu)); - menu->needs_destruction_ref_count = TRUE; + priv->needs_destruction_ref = TRUE; - menu->view_window = NULL; - menu->bin_window = NULL; - - menu->scroll_offset = 0; - menu->scroll_step = 0; - menu->timeout_id = 0; - menu->scroll_fast = FALSE; - - menu->tearoff_window = NULL; - menu->tearoff_hbox = NULL; - menu->torn_off = FALSE; - menu->tearoff_active = FALSE; - menu->tearoff_adjustment = NULL; - menu->tearoff_scrollbar = NULL; - - menu->upper_arrow_visible = FALSE; - menu->lower_arrow_visible = FALSE; - menu->upper_arrow_prelight = FALSE; - menu->lower_arrow_prelight = FALSE; - - priv->have_layout = FALSE; priv->monitor_num = -1; context = gtk_widget_get_style_context (GTK_WIDGET (menu)); @@ -1057,43 +1099,35 @@ static void gtk_menu_destroy (GtkWidget *widget) { GtkMenu *menu = GTK_MENU (widget); + GtkMenuPrivate *priv = menu->priv; GtkMenuAttachData *data; - GtkMenuPrivate *priv; gtk_menu_remove_scroll_timeout (menu); - + data = g_object_get_data (G_OBJECT (widget), attach_data_key); if (data) gtk_menu_detach (menu); - + gtk_menu_stop_navigating_submenu (menu); - if (menu->old_active_menu_item) - { - g_object_unref (menu->old_active_menu_item); - menu->old_active_menu_item = NULL; - } + if (priv->old_active_menu_item) + g_clear_object (&priv->old_active_menu_item); /* Add back the reference count for being a child */ - if (menu->needs_destruction_ref_count) + if (priv->needs_destruction_ref) { - menu->needs_destruction_ref_count = FALSE; + priv->needs_destruction_ref = FALSE; g_object_ref (widget); } - - if (menu->accel_group) - { - g_object_unref (menu->accel_group); - menu->accel_group = NULL; - } - if (menu->toplevel) - gtk_widget_destroy (menu->toplevel); + if (priv->accel_group) + g_clear_object (&priv->accel_group); - if (menu->tearoff_window) - gtk_widget_destroy (menu->tearoff_window); + if (priv->toplevel) + gtk_widget_destroy (priv->toplevel); - priv = gtk_menu_get_private (menu); + if (priv->tearoff_window) + gtk_widget_destroy (priv->tearoff_window); if (priv->heights) { @@ -1109,8 +1143,8 @@ gtk_menu_destroy (GtkWidget *widget) if (priv->position_func_data_destroy) { - priv->position_func_data_destroy (menu->position_func_data); - menu->position_func_data = NULL; + priv->position_func_data_destroy (priv->position_func_data); + priv->position_func_data = NULL; priv->position_func_data_destroy = NULL; } @@ -1119,76 +1153,82 @@ gtk_menu_destroy (GtkWidget *widget) static void menu_change_screen (GtkMenu *menu, - GdkScreen *new_screen) + GdkScreen *new_screen) { - GtkMenuPrivate *private = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; if (gtk_widget_has_screen (GTK_WIDGET (menu))) { if (new_screen == gtk_widget_get_screen (GTK_WIDGET (menu))) - return; + return; } - if (menu->torn_off) + if (priv->torn_off) { - gtk_window_set_screen (GTK_WINDOW (menu->tearoff_window), new_screen); + gtk_window_set_screen (GTK_WINDOW (priv->tearoff_window), new_screen); gtk_menu_position (menu, TRUE); } - gtk_window_set_screen (GTK_WINDOW (menu->toplevel), new_screen); - private->monitor_num = -1; + gtk_window_set_screen (GTK_WINDOW (priv->toplevel), new_screen); + priv->monitor_num = -1; } static void attach_widget_screen_changed (GtkWidget *attach_widget, - GdkScreen *previous_screen, - GtkMenu *menu) + GdkScreen *previous_screen, + GtkMenu *menu) { if (gtk_widget_has_screen (attach_widget) && !g_object_get_data (G_OBJECT (menu), "gtk-menu-explicit-screen")) - { - menu_change_screen (menu, gtk_widget_get_screen (attach_widget)); - } + menu_change_screen (menu, gtk_widget_get_screen (attach_widget)); } +/** + * gtk_menu_attach_to_widget: + * @menu: a #GtkMenu + * @attach_widget: the #GtkWidget that the menu will be attached to + * @detacher: the user supplied callback functions that will be called + * when the menu calls gtk_menu_detach() + * + * Attaches the menu to the widget and provides a callback function + * that will be invoked when the menu calls gtk_menu_detach() during + * its destruction. + */ void -gtk_menu_attach_to_widget (GtkMenu *menu, - GtkWidget *attach_widget, - GtkMenuDetachFunc detacher) +gtk_menu_attach_to_widget (GtkMenu *menu, + GtkWidget *attach_widget, + GtkMenuDetachFunc detacher) { GtkMenuAttachData *data; GList *list; - + g_return_if_fail (GTK_IS_MENU (menu)); g_return_if_fail (GTK_IS_WIDGET (attach_widget)); - - /* keep this function in sync with gtk_widget_set_parent() - */ - + + /* keep this function in sync with gtk_widget_set_parent() */ data = g_object_get_data (G_OBJECT (menu), attach_data_key); if (data) { g_warning ("gtk_menu_attach_to_widget(): menu already attached to %s", - g_type_name (G_TYPE_FROM_INSTANCE (data->attach_widget))); + g_type_name (G_TYPE_FROM_INSTANCE (data->attach_widget))); return; } - + g_object_ref_sink (menu); - + data = g_slice_new (GtkMenuAttachData); data->attach_widget = attach_widget; - + g_signal_connect (attach_widget, "screen-changed", - G_CALLBACK (attach_widget_screen_changed), menu); + G_CALLBACK (attach_widget_screen_changed), menu); attach_widget_screen_changed (attach_widget, NULL, menu); - + data->detacher = detacher; g_object_set_data (G_OBJECT (menu), I_(attach_data_key), data); list = g_object_steal_data (G_OBJECT (attach_widget), ATTACHED_MENUS); if (!g_list_find (list, menu)) - { - list = g_list_prepend (list, menu); - } + list = g_list_prepend (list, menu); + g_object_set_data_full (G_OBJECT (attach_widget), I_(ATTACHED_MENUS), list, (GDestroyNotify) g_list_free); @@ -1205,29 +1245,44 @@ gtk_menu_attach_to_widget (GtkMenu *menu, g_object_notify (G_OBJECT (menu), "attach-widget"); } +/** + * gtk_menu_get_attach_widget: + * @menu: a #GtkMenu + * + * Returns the #GtkWidget that the menu is attached to. + * + * Returns: the #GtkWidget that the menu is attached to + */ GtkWidget* gtk_menu_get_attach_widget (GtkMenu *menu) { GtkMenuAttachData *data; - + g_return_val_if_fail (GTK_IS_MENU (menu), NULL); - + data = g_object_get_data (G_OBJECT (menu), attach_data_key); if (data) return data->attach_widget; return NULL; } +/** + * gtk_menu_detach: + * @menu: a #GtkMenu + * + * Detaches the menu from the widget to which it had been attached. + * This function will call the callback function, @detacher, provided + * when the gtk_menu_attach_to_widget() function was called. + */ void gtk_menu_detach (GtkMenu *menu) { GtkMenuAttachData *data; GList *list; - + g_return_if_fail (GTK_IS_MENU (menu)); - - /* keep this function in sync with gtk_widget_unparent() - */ + + /* keep this function in sync with gtk_widget_unparent() */ data = g_object_get_data (G_OBJECT (menu), attach_data_key); if (!data) { @@ -1235,10 +1290,10 @@ gtk_menu_detach (GtkMenu *menu) return; } g_object_set_data (G_OBJECT (menu), I_(attach_data_key), NULL); - + g_signal_handlers_disconnect_by_func (data->attach_widget, - (gpointer) attach_widget_screen_changed, - menu); + (gpointer) attach_widget_screen_changed, + menu); if (data->detacher) data->detacher (data->attach_widget, menu); @@ -1249,12 +1304,12 @@ gtk_menu_detach (GtkMenu *menu) (GDestroyNotify) g_list_free); else g_object_set_data (G_OBJECT (data->attach_widget), I_(ATTACHED_MENUS), NULL); - + if (gtk_widget_get_realized (GTK_WIDGET (menu))) gtk_widget_unrealize (GTK_WIDGET (menu)); - + g_slice_free (GtkMenuAttachData, data); - + /* Fallback title for menu comes from attach widget */ gtk_menu_update_title (menu); @@ -1263,26 +1318,29 @@ gtk_menu_detach (GtkMenu *menu) static void gtk_menu_remove (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GtkMenu *menu = GTK_MENU (container); + GtkMenuPrivate *priv = menu->priv; - g_return_if_fail (GTK_IS_MENU_ITEM (widget)); - - /* Clear out old_active_menu_item if it matches the item we are removing - */ - if (menu->old_active_menu_item == widget) - { - g_object_unref (menu->old_active_menu_item); - menu->old_active_menu_item = NULL; - } + /* Clear out old_active_menu_item if it matches the item we are removing */ + if (priv->old_active_menu_item == widget) + g_clear_object (&priv->old_active_menu_item); GTK_CONTAINER_CLASS (gtk_menu_parent_class)->remove (container, widget); + g_object_set_data (G_OBJECT (widget), I_(ATTACH_INFO_KEY), NULL); menu_queue_resize (menu); } +/** + * gtk_menu_new: + * + * Creates a new #GtkMenu + * + * Returns: a new #GtkMenu + */ GtkWidget* gtk_menu_new (void) { @@ -1291,10 +1349,11 @@ gtk_menu_new (void) static void gtk_menu_real_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position) + GtkWidget *child, + gint position) { GtkMenu *menu = GTK_MENU (menu_shell); + GtkMenuPrivate *priv = menu->priv; AttachInfo *ai = get_attach_info (child); ai->left_attach = -1; @@ -1303,7 +1362,7 @@ gtk_menu_real_insert (GtkMenuShell *menu_shell, ai->bottom_attach = -1; if (gtk_widget_get_realized (GTK_WIDGET (menu_shell))) - gtk_widget_set_parent_window (child, menu->bin_window); + gtk_widget_set_parent_window (child, priv->bin_window); GTK_MENU_SHELL_CLASS (gtk_menu_parent_class)->insert (menu_shell, child, position); @@ -1313,22 +1372,23 @@ gtk_menu_real_insert (GtkMenuShell *menu_shell, static void gtk_menu_tearoff_bg_copy (GtkMenu *menu) { + GtkMenuPrivate *priv = menu->priv; GtkWidget *widget; gint width, height; widget = GTK_WIDGET (menu); - if (menu->torn_off) + if (priv->torn_off) { GdkWindow *window; cairo_surface_t *surface; cairo_pattern_t *pattern; cairo_t *cr; - menu->tearoff_active = FALSE; - menu->saved_scroll_offset = menu->scroll_offset; + priv->tearoff_active = FALSE; + priv->saved_scroll_offset = priv->scroll_offset; - window = gtk_widget_get_window (menu->tearoff_window); + window = gtk_widget_get_window (priv->tearoff_window); width = gdk_window_get_width (window); height = gdk_window_get_height (window); @@ -1338,15 +1398,11 @@ gtk_menu_tearoff_bg_copy (GtkMenu *menu) height); cr = cairo_create (surface); - gdk_cairo_set_source_window (cr, - window, - 0, 0); + gdk_cairo_set_source_window (cr, window, 0, 0); cairo_paint (cr); cairo_destroy (cr); - gtk_widget_set_size_request (menu->tearoff_window, - width, - height); + gtk_widget_set_size_request (priv->tearoff_window, width, height); pattern = cairo_pattern_create_for_surface (surface); gdk_window_set_background_pattern (window, pattern); @@ -1360,7 +1416,7 @@ static gboolean popup_grab_on_window (GdkWindow *window, GdkDevice *keyboard, GdkDevice *pointer, - guint32 activate_time) + guint32 activate_time) { if (keyboard && gdk_device_grab (keyboard, window, @@ -1388,7 +1444,7 @@ popup_grab_on_window (GdkWindow *window, /** * gtk_menu_popup_for_device: - * @menu: a #GtkMenu. + * @menu: a #GtkMenu * @device: (allow-none): a #GdkDevice * @parent_menu_shell: (allow-none): the menu shell containing the triggering * menu item, or %NULL @@ -1434,13 +1490,13 @@ gtk_menu_popup_for_device (GtkMenu *menu, guint button, guint32 activate_time) { + GtkMenuPrivate *priv = menu->priv; GtkWidget *widget; GtkWidget *xgrab_shell; GtkWidget *parent; GdkEvent *current_event; GtkMenuShell *menu_shell; gboolean grab_keyboard; - GtkMenuPrivate *priv; GtkWidget *parent_toplevel; GdkDevice *keyboard, *pointer; @@ -1467,7 +1523,6 @@ gtk_menu_popup_for_device (GtkMenu *menu, widget = GTK_WIDGET (menu); menu_shell = GTK_MENU_SHELL (menu); - priv = gtk_menu_get_private (menu); if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) { @@ -1480,10 +1535,10 @@ gtk_menu_popup_for_device (GtkMenu *menu, keyboard = gdk_device_get_associated_device (device); } - menu_shell->parent_menu_shell = parent_menu_shell; + menu_shell->priv->parent_menu_shell = parent_menu_shell; priv->seen_item_enter = FALSE; - + /* Find the last viewable ancestor, and make an X grab on it */ parent = GTK_WIDGET (menu); @@ -1492,40 +1547,42 @@ gtk_menu_popup_for_device (GtkMenu *menu, { gboolean viewable = TRUE; GtkWidget *tmp = parent; - + while (tmp) - { - if (!gtk_widget_get_mapped (tmp)) - { - viewable = FALSE; - break; - } - tmp = gtk_widget_get_parent (tmp); - } - + { + if (!gtk_widget_get_mapped (tmp)) + { + viewable = FALSE; + break; + } + tmp = gtk_widget_get_parent (tmp); + } + if (viewable) - xgrab_shell = parent; - - parent = GTK_MENU_SHELL (parent)->parent_menu_shell; + xgrab_shell = parent; + + parent = GTK_MENU_SHELL (parent)->priv->parent_menu_shell; } - /* We want to receive events generated when we map the menu; unfortunately, - * since there is probably already an implicit grab in place from the - * button that the user used to pop up the menu, we won't receive then -- - * in particular, the EnterNotify when the menu pops up under the pointer. + /* We want to receive events generated when we map the menu; + * unfortunately, since there is probably already an implicit + * grab in place from the button that the user used to pop up + * the menu, we won't receive then -- in particular, the EnterNotify + * when the menu pops up under the pointer. * - * If we are grabbing on a parent menu shell, no problem; just grab on - * that menu shell first before popping up the window with owner_events = TRUE. + * If we are grabbing on a parent menu shell, no problem; just grab + * on that menu shell first before popping up the window with + * owner_events = TRUE. * - * When grabbing on the menu itself, things get more convuluted - we + * When grabbing on the menu itself, things get more convoluted -- * we do an explicit grab on a specially created window with - * owner_events = TRUE, which we override further down with a grab - * on the menu. (We can't grab on the menu until it is mapped; we - * probably could just leave the grab on the other window, with a - * little reorganization of the code in gtkmenu*). + * owner_events = TRUE, which we override further down with a + * grab on the menu. (We can't grab on the menu until it is mapped; + * we probably could just leave the grab on the other window, + * with a little reorganization of the code in gtkmenu*). */ grab_keyboard = gtk_menu_shell_get_take_focus (menu_shell); - gtk_window_set_accept_focus (GTK_WINDOW (menu->toplevel), grab_keyboard); + gtk_window_set_accept_focus (GTK_WINDOW (priv->toplevel), grab_keyboard); if (!grab_keyboard) keyboard = NULL; @@ -1535,7 +1592,7 @@ gtk_menu_popup_for_device (GtkMenu *menu, if (popup_grab_on_window (gtk_widget_get_window (xgrab_shell), keyboard, pointer, activate_time)) { _gtk_menu_shell_set_grab_device (GTK_MENU_SHELL (xgrab_shell), pointer); - GTK_MENU_SHELL (xgrab_shell)->have_xgrab = TRUE; + GTK_MENU_SHELL (xgrab_shell)->priv->have_xgrab = TRUE; } } else @@ -1547,73 +1604,73 @@ gtk_menu_popup_for_device (GtkMenu *menu, if (popup_grab_on_window (transfer_window, keyboard, pointer, activate_time)) { _gtk_menu_shell_set_grab_device (GTK_MENU_SHELL (xgrab_shell), pointer); - GTK_MENU_SHELL (xgrab_shell)->have_xgrab = TRUE; + GTK_MENU_SHELL (xgrab_shell)->priv->have_xgrab = TRUE; } } - if (!GTK_MENU_SHELL (xgrab_shell)->have_xgrab) + if (!GTK_MENU_SHELL (xgrab_shell)->priv->have_xgrab) { - /* We failed to make our pointer/keyboard grab. Rather than leaving the user - * with a stuck up window, we just abort here. Presumably the user will - * try again. + /* We failed to make our pointer/keyboard grab. + * Rather than leaving the user with a stuck up window, + * we just abort here. Presumably the user will try again. */ - menu_shell->parent_menu_shell = NULL; + menu_shell->priv->parent_menu_shell = NULL; menu_grab_transfer_window_destroy (menu); return; } _gtk_menu_shell_set_grab_device (GTK_MENU_SHELL (menu), pointer); - menu_shell->active = TRUE; - menu_shell->button = button; + menu_shell->priv->active = TRUE; + menu_shell->priv->button = button; /* If we are popping up the menu from something other than, a button * press then, as a heuristic, we ignore enter events for the menu - * until we get a MOTION_NOTIFY. + * until we get a MOTION_NOTIFY. */ current_event = gtk_get_current_event (); if (current_event) { if ((current_event->type != GDK_BUTTON_PRESS) && - (current_event->type != GDK_ENTER_NOTIFY)) - menu_shell->ignore_enter = TRUE; + (current_event->type != GDK_ENTER_NOTIFY)) + menu_shell->priv->ignore_enter = TRUE; gdk_event_free (current_event); } else - menu_shell->ignore_enter = TRUE; + menu_shell->priv->ignore_enter = TRUE; - if (menu->torn_off) + if (priv->torn_off) { gtk_menu_tearoff_bg_copy (menu); - gtk_menu_reparent (menu, menu->toplevel, FALSE); + gtk_menu_reparent (menu, priv->toplevel, FALSE); } parent_toplevel = NULL; - if (parent_menu_shell) + if (parent_menu_shell) parent_toplevel = gtk_widget_get_toplevel (parent_menu_shell); else if (!g_object_get_data (G_OBJECT (menu), "gtk-menu-explicit-screen")) { GtkWidget *attach_widget = gtk_menu_get_attach_widget (menu); if (attach_widget) - parent_toplevel = gtk_widget_get_toplevel (attach_widget); + parent_toplevel = gtk_widget_get_toplevel (attach_widget); } - /* Set transient for to get the right window group and parent relationship */ + /* Set transient for to get the right window group and parent */ if (GTK_IS_WINDOW (parent_toplevel)) - gtk_window_set_transient_for (GTK_WINDOW (menu->toplevel), - GTK_WINDOW (parent_toplevel)); - - menu->parent_menu_item = parent_menu_item; - menu->position_func = func; - menu->position_func_data = data; - priv->position_func_data_destroy = destroy; - menu_shell->activate_time = activate_time; + gtk_window_set_transient_for (GTK_WINDOW (priv->toplevel), + GTK_WINDOW (parent_toplevel)); - /* We need to show the menu here rather in the init function because - * code expects to be able to tell if the menu is onscreen by - * looking at the gtk_widget_get_visible (menu) + priv->parent_menu_item = parent_menu_item; + priv->position_func = func; + priv->position_func_data = data; + priv->position_func_data_destroy = destroy; + menu_shell->priv->activate_time = activate_time; + + /* We need to show the menu here rather in the init function + * because code expects to be able to tell if the menu is onscreen + * by looking at gtk_widget_get_visible (menu) */ gtk_widget_show (GTK_WIDGET (menu)); @@ -1628,23 +1685,25 @@ gtk_menu_popup_for_device (GtkMenu *menu, GtkRequisition tmp_request; GtkAllocation tmp_allocation = { 0, }; - /* Instead of trusting the menu position function to queue a resize when the - * menu goes out of bounds, invalidate the cached size here. */ + /* Instead of trusting the menu position function to queue a + * resize when the menu goes out of bounds, invalidate the cached + * size here. + */ gtk_widget_queue_resize (GTK_WIDGET (menu)); - gtk_widget_get_preferred_size (menu->toplevel, &tmp_request, NULL); - + gtk_widget_get_preferred_size (priv->toplevel, &tmp_request, NULL); + tmp_allocation.width = tmp_request.width; tmp_allocation.height = tmp_request.height; - gtk_widget_size_allocate (menu->toplevel, &tmp_allocation); - + gtk_widget_size_allocate (priv->toplevel, &tmp_allocation); + gtk_widget_realize (GTK_WIDGET (menu)); } - gtk_menu_scroll_to (menu, menu->scroll_offset); + gtk_menu_scroll_to (menu, priv->scroll_offset); /* if no item is selected, select the first one */ - if (!menu_shell->active_menu_item) + if (!menu_shell->priv->active_menu_item) { gboolean touchscreen_mode; @@ -1656,10 +1715,8 @@ gtk_menu_popup_for_device (GtkMenu *menu, gtk_menu_shell_select_first (menu_shell, TRUE); } - /* Once everything is set up correctly, map the toplevel window on - the screen. - */ - gtk_widget_show (menu->toplevel); + /* Once everything is set up correctly, map the toplevel */ + gtk_widget_show (priv->toplevel); if (xgrab_shell == widget) popup_grab_on_window (gtk_widget_get_window (widget), keyboard, pointer, activate_time); /* Should always succeed */ @@ -1673,7 +1730,7 @@ gtk_menu_popup_for_device (GtkMenu *menu, keyboard_mode = _gtk_menu_shell_get_keyboard_mode (GTK_MENU_SHELL (parent_menu_shell)); _gtk_menu_shell_set_keyboard_mode (menu_shell, keyboard_mode); } - else if (menu_shell->button == 0) /* a keynav-activated context menu */ + else if (menu_shell->priv->button == 0) /* a keynav-activated context menu */ _gtk_menu_shell_set_keyboard_mode (menu_shell, TRUE); _gtk_menu_shell_update_mnemonics (menu_shell); @@ -1682,39 +1739,44 @@ gtk_menu_popup_for_device (GtkMenu *menu, /** * gtk_menu_popup: * @menu: a #GtkMenu. - * @parent_menu_shell: (allow-none): the menu shell containing the triggering menu item, or %NULL - * @parent_menu_item: (allow-none): the menu item whose activation triggered the popup, or %NULL - * @func: (allow-none): a user supplied function used to position the menu, or %NULL + * @parent_menu_shell: (allow-none): the menu shell containing the + * triggering menu item, or %NULL + * @parent_menu_item: (allow-none): the menu item whose activation + * triggered the popup, or %NULL + * @func: (allow-none): a user supplied function used to position + * the menu, or %NULL * @data: (allow-none): user supplied data to be passed to @func. * @button: the mouse button which was pressed to initiate the event. * @activate_time: the time at which the activation event occurred. * - * Displays a menu and makes it available for selection. Applications can use - * this function to display context-sensitive menus, and will typically supply - * %NULL for the @parent_menu_shell, @parent_menu_item, @func and @data - * parameters. The default menu positioning function will position the menu - * at the current mouse cursor position. + * Displays a menu and makes it available for selection. + * + * Applications can use this function to display context-sensitive + * menus, and will typically supply %NULL for the @parent_menu_shell, + * @parent_menu_item, @func and @data parameters. The default menu + * positioning function will position the menu at the current mouse + * cursor position. * * The @button parameter should be the mouse button pressed to initiate - * the menu popup. If the menu popup was initiated by something other than - * a mouse button press, such as a mouse button release or a keypress, + * the menu popup. If the menu popup was initiated by something other + * than a mouse button press, such as a mouse button release or a keypress, * @button should be 0. * - * The @activate_time parameter is used to conflict-resolve initiation of - * concurrent requests for mouse/keyboard grab requests. To function - * properly, this needs to be the time stamp of the user event (such as + * The @activate_time parameter is used to conflict-resolve initiation + * of concurrent requests for mouse/keyboard grab requests. To function + * properly, this needs to be the timestamp of the user event (such as * a mouse click or key press) that caused the initiation of the popup. * Only if no such event is available, gtk_get_current_event_time() can * be used instead. */ void -gtk_menu_popup (GtkMenu *menu, - GtkWidget *parent_menu_shell, - GtkWidget *parent_menu_item, - GtkMenuPositionFunc func, - gpointer data, - guint button, - guint32 activate_time) +gtk_menu_popup (GtkMenu *menu, + GtkWidget *parent_menu_shell, + GtkWidget *parent_menu_item, + GtkMenuPositionFunc func, + gpointer data, + guint button, + guint32 activate_time) { g_return_if_fail (GTK_IS_MENU (menu)); @@ -1726,62 +1788,68 @@ gtk_menu_popup (GtkMenu *menu, button, activate_time); } +/** + * gtk_menu_popdown: + * @menu: a #GtkMenu + * + * Removes the menu from the screen. + */ void gtk_menu_popdown (GtkMenu *menu) { - GtkMenuPrivate *private; + GtkMenuPrivate *priv; GtkMenuShell *menu_shell; GdkDevice *pointer; g_return_if_fail (GTK_IS_MENU (menu)); - + menu_shell = GTK_MENU_SHELL (menu); - private = gtk_menu_get_private (menu); + priv = menu->priv; - menu_shell->parent_menu_shell = NULL; - menu_shell->active = FALSE; - menu_shell->ignore_enter = FALSE; + menu_shell->priv->parent_menu_shell = NULL; + menu_shell->priv->active = FALSE; + menu_shell->priv->ignore_enter = FALSE; - private->have_position = FALSE; + priv->have_position = FALSE; gtk_menu_stop_scrolling (menu); - gtk_menu_stop_navigating_submenu (menu); - - if (menu_shell->active_menu_item) + + if (menu_shell->priv->active_menu_item) { - if (menu->old_active_menu_item) - g_object_unref (menu->old_active_menu_item); - menu->old_active_menu_item = menu_shell->active_menu_item; - g_object_ref (menu->old_active_menu_item); + if (priv->old_active_menu_item) + g_object_unref (priv->old_active_menu_item); + priv->old_active_menu_item = menu_shell->priv->active_menu_item; + g_object_ref (priv->old_active_menu_item); } gtk_menu_shell_deselect (menu_shell); - - /* The X Grab, if present, will automatically be removed when we hide - * the window */ - if (menu->toplevel) + + /* The X Grab, if present, will automatically be removed + * when we hide the window + */ + if (priv->toplevel) { - gtk_widget_hide (menu->toplevel); - gtk_window_set_transient_for (GTK_WINDOW (menu->toplevel), NULL); + gtk_widget_hide (priv->toplevel); + gtk_window_set_transient_for (GTK_WINDOW (priv->toplevel), NULL); } pointer = _gtk_menu_shell_get_grab_device (menu_shell); - if (menu->torn_off) + if (priv->torn_off) { - gtk_widget_set_size_request (menu->tearoff_window, -1, -1); - - if (gtk_bin_get_child (GTK_BIN (menu->toplevel))) - { - gtk_menu_reparent (menu, menu->tearoff_hbox, TRUE); - } + gtk_widget_set_size_request (priv->tearoff_window, -1, -1); + + if (gtk_bin_get_child (GTK_BIN (priv->toplevel))) + { + gtk_menu_reparent (menu, priv->tearoff_hbox, TRUE); + } else - { + { /* We popped up the menu from the tearoff, so we need to - * release the grab - we aren't actually hiding the menu. - */ - if (menu_shell->have_xgrab && pointer) + * release the grab - we aren't actually hiding the menu. + */ + if (menu_shell->priv->have_xgrab && pointer) { GdkDevice *keyboard; @@ -1791,20 +1859,20 @@ gtk_menu_popdown (GtkMenu *menu) if (keyboard) gdk_device_ungrab (keyboard, GDK_CURRENT_TIME); } - } + } /* gtk_menu_popdown is called each time a menu item is selected from * a torn off menu. Only scroll back to the saved position if the * non-tearoff menu was popped down. */ - if (!menu->tearoff_active) - gtk_menu_scroll_to (menu, menu->saved_scroll_offset); - menu->tearoff_active = TRUE; + if (!priv->tearoff_active) + gtk_menu_scroll_to (menu, priv->saved_scroll_offset); + priv->tearoff_active = TRUE; } else gtk_widget_hide (GTK_WIDGET (menu)); - menu_shell->have_xgrab = FALSE; + menu_shell->priv->have_xgrab = FALSE; if (pointer) gtk_device_grab_remove (GTK_WIDGET (menu), pointer); @@ -1814,88 +1882,127 @@ gtk_menu_popdown (GtkMenu *menu) menu_grab_transfer_window_destroy (menu); } +/** + * gtk_menu_get_active: + * @menu: a #GtkMenu + * + * Returns the selected menu item from the menu. This is used by the + * #GtkOptionMenu. + * + * Returns: the #GtkMenuItem that was last selected in the menu. If a + * selection has not yet been made, the first menu item is + * selected. + */ GtkWidget* gtk_menu_get_active (GtkMenu *menu) { + GtkMenuPrivate *priv = menu->priv; GtkWidget *child; GList *children; - + g_return_val_if_fail (GTK_IS_MENU (menu), NULL); - - if (!menu->old_active_menu_item) + + if (!priv->old_active_menu_item) { child = NULL; - children = GTK_MENU_SHELL (menu)->children; - + children = GTK_MENU_SHELL (menu)->priv->children; + while (children) - { - child = children->data; - children = children->next; - - if (gtk_bin_get_child (GTK_BIN (child))) - break; - child = NULL; - } - - menu->old_active_menu_item = child; - if (menu->old_active_menu_item) - g_object_ref (menu->old_active_menu_item); + { + child = children->data; + children = children->next; + + if (gtk_bin_get_child (GTK_BIN (child))) + break; + child = NULL; + } + + priv->old_active_menu_item = child; + if (priv->old_active_menu_item) + g_object_ref (priv->old_active_menu_item); } - - return menu->old_active_menu_item; + + return priv->old_active_menu_item; } +/** + * gtk_menu_set_active: + * @menu: a #GtkMenu + * @index: the index of the menu item to select. Iindex values are + * from 0 to n-1 + * + * Selects the specified menu item within the menu. This is used by + * the #GtkOptionMenu and should not be used by anyone else. + */ void gtk_menu_set_active (GtkMenu *menu, - guint index) + guint index) { + GtkMenuPrivate *priv = menu->priv; GtkWidget *child; GList *tmp_list; - + g_return_if_fail (GTK_IS_MENU (menu)); - - tmp_list = g_list_nth (GTK_MENU_SHELL (menu)->children, index); + + tmp_list = g_list_nth (GTK_MENU_SHELL (menu)->priv->children, index); if (tmp_list) { child = tmp_list->data; if (gtk_bin_get_child (GTK_BIN (child))) - { - if (menu->old_active_menu_item) - g_object_unref (menu->old_active_menu_item); - menu->old_active_menu_item = child; - g_object_ref (menu->old_active_menu_item); - } + { + if (priv->old_active_menu_item) + g_object_unref (priv->old_active_menu_item); + priv->old_active_menu_item = child; + g_object_ref (priv->old_active_menu_item); + } } } - /** * gtk_menu_set_accel_group: - * @accel_group: (allow-none): + * @menu: a #GtkMenu + * @accel_group: (allow-none): the #GtkAccelGroup to be associated + * with the menu. + * + * Set the #GtkAccelGroup which holds global accelerators for the + * menu. This accelerator group needs to also be added to all windows + * that this menu is being used in with gtk_window_add_accel_group(), + * in order for those windows to support all the accelerators + * contained in this group. */ void -gtk_menu_set_accel_group (GtkMenu *menu, - GtkAccelGroup *accel_group) +gtk_menu_set_accel_group (GtkMenu *menu, + GtkAccelGroup *accel_group) { + GtkMenuPrivate *priv = menu->priv; g_return_if_fail (GTK_IS_MENU (menu)); - - if (menu->accel_group != accel_group) + + if (priv->accel_group != accel_group) { - if (menu->accel_group) - g_object_unref (menu->accel_group); - menu->accel_group = accel_group; - if (menu->accel_group) - g_object_ref (menu->accel_group); + if (priv->accel_group) + g_object_unref (priv->accel_group); + priv->accel_group = accel_group; + if (priv->accel_group) + g_object_ref (priv->accel_group); _gtk_menu_refresh_accel_paths (menu, TRUE); } } +/** + * gtk_menu_get_accel_group: + * @menu a #GtkMenu + * + * Gets the #GtkAccelGroup which holds global accelerators for the + * menu. See gtk_menu_set_accel_group(). + * + * Returns: the #GtkAccelGroup associated with the menu. + */ GtkAccelGroup* gtk_menu_get_accel_group (GtkMenu *menu) { g_return_val_if_fail (GTK_IS_MENU (menu), NULL); - return menu->accel_group; + return menu->priv->accel_group; } static gboolean @@ -1927,31 +2034,35 @@ gtk_menu_real_can_activate_accel (GtkWidget *widget, * inconvenience of having to call gtk_menu_item_set_accel_path() on * each menu item that should support runtime user changable accelerators. * Instead, by just calling gtk_menu_set_accel_path() on their parent, - * each menu item of this menu, that contains a label describing its purpose, - * automatically gets an accel path assigned. For example, a menu containing - * menu items "New" and "Exit", will, after + * each menu item of this menu, that contains a label describing its + * purpose, automatically gets an accel path assigned. + * + * For example, a menu containing menu items "New" and "Exit", will, after * gtk_menu_set_accel_path (menu, "<Gnumeric-Sheet>/File"); * has been called, assign its items the accel paths: * "<Gnumeric-Sheet>/File/New" and "<Gnumeric-Sheet>/File/Exit". + * * Assigning accel paths to menu items then enables the user to change * their accelerators at runtime. More details about accelerator paths * and their default setups can be found at gtk_accel_map_add_entry(). - * - * Note that @accel_path string will be stored in a #GQuark. Therefore, if you - * pass a static string, you can save some memory by interning it first with - * g_intern_static_string(). + * + * Note that @accel_path string will be stored in a #GQuark. Therefore, + * if you pass a static string, you can save some memory by interning + * it first with g_intern_static_string(). */ void gtk_menu_set_accel_path (GtkMenu *menu, - const gchar *accel_path) + const gchar *accel_path) { + GtkMenuPrivate *priv = menu->priv; g_return_if_fail (GTK_IS_MENU (menu)); + if (accel_path) g_return_if_fail (accel_path[0] == '<' && strchr (accel_path, '/')); /* simplistic check */ /* FIXME: accel_path should be defined as const gchar* */ - menu->accel_path = (gchar*)g_intern_string (accel_path); - if (menu->accel_path) + priv->accel_path = (gchar*)g_intern_string (accel_path); + if (priv->accel_path) _gtk_menu_refresh_accel_paths (menu, FALSE); } @@ -1970,7 +2081,7 @@ gtk_menu_get_accel_path (GtkMenu *menu) { g_return_val_if_fail (GTK_IS_MENU (menu), NULL); - return menu->accel_path; + return menu->priv->accel_path; } typedef struct { @@ -1980,109 +2091,121 @@ typedef struct { static void refresh_accel_paths_foreach (GtkWidget *widget, - gpointer data) + gpointer data) { + GtkMenuPrivate *priv; AccelPropagation *prop = data; - if (GTK_IS_MENU_ITEM (widget)) /* should always be true */ - _gtk_menu_item_refresh_accel_path (GTK_MENU_ITEM (widget), - prop->menu->accel_path, - prop->menu->accel_group, - prop->group_changed); + if (GTK_IS_MENU_ITEM (widget)) /* should always be true */ + { + priv = prop->menu->priv; + _gtk_menu_item_refresh_accel_path (GTK_MENU_ITEM (widget), + priv->accel_path, + priv->accel_group, + prop->group_changed); + } } static void _gtk_menu_refresh_accel_paths (GtkMenu *menu, - gboolean group_changed) + gboolean group_changed) { + GtkMenuPrivate *priv = menu->priv; g_return_if_fail (GTK_IS_MENU (menu)); - if (menu->accel_path && menu->accel_group) + if (priv->accel_path && priv->accel_group) { AccelPropagation prop; prop.menu = menu; prop.group_changed = group_changed; gtk_container_foreach (GTK_CONTAINER (menu), - refresh_accel_paths_foreach, - &prop); + refresh_accel_paths_foreach, + &prop); } } +/** + * gtk_menu_reposition: + * @menu: a #GtkMenu + * + * Repositions the menu according to its position function. + */ void gtk_menu_reposition (GtkMenu *menu) { g_return_if_fail (GTK_IS_MENU (menu)); - if (!menu->torn_off && gtk_widget_is_drawable (GTK_WIDGET (menu))) + if (!menu->priv->torn_off && gtk_widget_is_drawable (GTK_WIDGET (menu))) gtk_menu_position (menu, FALSE); } static void gtk_menu_scrollbar_changed (GtkAdjustment *adjustment, - GtkMenu *menu) + GtkMenu *menu) { - g_return_if_fail (GTK_IS_MENU (menu)); + double value; - if (adjustment->value != menu->scroll_offset) - gtk_menu_scroll_to (menu, adjustment->value); + value = gtk_adjustment_get_value (adjustment); + if (menu->priv->scroll_offset != value) + gtk_menu_scroll_to (menu, value); } static void gtk_menu_set_tearoff_hints (GtkMenu *menu, - gint width) + gint width) { + GtkMenuPrivate *priv = menu->priv; GdkGeometry geometry_hints; - GtkMenuPrivate *priv; - if (!menu->tearoff_window) + if (!priv->tearoff_window) return; - priv = gtk_menu_get_private (menu); - - if (gtk_widget_get_visible (menu->tearoff_scrollbar)) + if (gtk_widget_get_visible (priv->tearoff_scrollbar)) { GtkRequisition requisition; - gtk_widget_get_preferred_size (menu->tearoff_scrollbar, + gtk_widget_get_preferred_size (priv->tearoff_scrollbar, &requisition, NULL); width += requisition.width; } geometry_hints.min_width = width; geometry_hints.max_width = width; - + geometry_hints.min_height = 0; geometry_hints.max_height = priv->requested_height; - gtk_window_set_geometry_hints (GTK_WINDOW (menu->tearoff_window), - NULL, - &geometry_hints, - GDK_HINT_MAX_SIZE|GDK_HINT_MIN_SIZE); + gtk_window_set_geometry_hints (GTK_WINDOW (priv->tearoff_window), + NULL, + &geometry_hints, + GDK_HINT_MAX_SIZE|GDK_HINT_MIN_SIZE); } static void gtk_menu_update_title (GtkMenu *menu) { - if (menu->tearoff_window) + GtkMenuPrivate *priv = menu->priv; + + if (priv->tearoff_window) { const gchar *title; GtkWidget *attach_widget; title = gtk_menu_get_title (menu); if (!title) - { - attach_widget = gtk_menu_get_attach_widget (menu); - if (GTK_IS_MENU_ITEM (attach_widget)) - { - GtkWidget *child = gtk_bin_get_child (GTK_BIN (attach_widget)); - if (GTK_IS_LABEL (child)) - title = gtk_label_get_text (GTK_LABEL (child)); - } - } - + { + attach_widget = gtk_menu_get_attach_widget (menu); + if (GTK_IS_MENU_ITEM (attach_widget)) + { + GtkWidget *child = gtk_bin_get_child (GTK_BIN (attach_widget)); + if (GTK_IS_LABEL (child)) + title = gtk_label_get_text (GTK_LABEL (child)); + } + } + if (title) - gtk_window_set_title (GTK_WINDOW (menu->tearoff_window), title); + gtk_window_set_title (GTK_WINDOW (priv->tearoff_window), title); } } @@ -2101,8 +2224,8 @@ gtk_menu_get_toplevel (GtkWidget *menu) else if (GTK_IS_WIDGET (attach)) { toplevel = gtk_widget_get_toplevel (attach); - if (gtk_widget_is_toplevel (toplevel)) - return toplevel; + if (gtk_widget_is_toplevel (toplevel)) + return toplevel; } return NULL; @@ -2110,114 +2233,121 @@ gtk_menu_get_toplevel (GtkWidget *menu) static void tearoff_window_destroyed (GtkWidget *widget, - GtkMenu *menu) + GtkMenu *menu) { gtk_menu_set_tearoff_state (menu, FALSE); } -void +/** + * gtk_menu_set_tearoff_state: + * @menu: a #GtkMenu + * @torn_off: If %TRUE, menu is displayed as a tearoff menu. + * + * Changes the tearoff state of the menu. A menu is normally + * displayed as drop down menu which persists as long as the menu is + * active. It can also be displayed as a tearoff menu which persists + * until it is closed or reattached. + */ +void gtk_menu_set_tearoff_state (GtkMenu *menu, - gboolean torn_off) + gboolean torn_off) { + GtkMenuPrivate *priv = menu->priv; gint height; - GtkMenuPrivate *priv; - + g_return_if_fail (GTK_IS_MENU (menu)); - priv = gtk_menu_get_private (menu); - - if (menu->torn_off != torn_off) + if (priv->torn_off != torn_off) { - menu->torn_off = torn_off; - menu->tearoff_active = torn_off; - - if (menu->torn_off) - { - if (gtk_widget_get_visible (GTK_WIDGET (menu))) - gtk_menu_popdown (menu); + priv->torn_off = torn_off; + priv->tearoff_active = torn_off; - if (!menu->tearoff_window) - { - GtkWidget *toplevel; + if (priv->torn_off) + { + if (gtk_widget_get_visible (GTK_WIDGET (menu))) + gtk_menu_popdown (menu); - menu->tearoff_window = g_object_new (GTK_TYPE_WINDOW, - "type", GTK_WINDOW_TOPLEVEL, - "screen", gtk_widget_get_screen (menu->toplevel), - "app-paintable", TRUE, - NULL); + if (!priv->tearoff_window) + { + GtkWidget *toplevel; - gtk_window_set_type_hint (GTK_WINDOW (menu->tearoff_window), - GDK_WINDOW_TYPE_HINT_MENU); - gtk_window_set_mnemonic_modifier (GTK_WINDOW (menu->tearoff_window), 0); - g_signal_connect (menu->tearoff_window, "destroy", - G_CALLBACK (tearoff_window_destroyed), menu); - g_signal_connect (menu->tearoff_window, "event", - G_CALLBACK (gtk_menu_window_event), menu); + priv->tearoff_window = g_object_new (GTK_TYPE_WINDOW, + "type", GTK_WINDOW_TOPLEVEL, + "screen", gtk_widget_get_screen (priv->toplevel), + "app-paintable", TRUE, + NULL); - gtk_menu_update_title (menu); + gtk_window_set_type_hint (GTK_WINDOW (priv->tearoff_window), + GDK_WINDOW_TYPE_HINT_MENU); + gtk_window_set_mnemonic_modifier (GTK_WINDOW (priv->tearoff_window), 0); + g_signal_connect (priv->tearoff_window, "destroy", + G_CALLBACK (tearoff_window_destroyed), menu); + g_signal_connect (priv->tearoff_window, "event", + G_CALLBACK (gtk_menu_window_event), menu); - gtk_widget_realize (menu->tearoff_window); + gtk_menu_update_title (menu); - toplevel = gtk_menu_get_toplevel (GTK_WIDGET (menu)); - if (toplevel != NULL) - gtk_window_set_transient_for (GTK_WINDOW (menu->tearoff_window), - GTK_WINDOW (toplevel)); + gtk_widget_realize (priv->tearoff_window); - menu->tearoff_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_container_add (GTK_CONTAINER (menu->tearoff_window), menu->tearoff_hbox); + toplevel = gtk_menu_get_toplevel (GTK_WIDGET (menu)); + if (toplevel != NULL) + gtk_window_set_transient_for (GTK_WINDOW (priv->tearoff_window), + GTK_WINDOW (toplevel)); + + priv->tearoff_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_container_add (GTK_CONTAINER (priv->tearoff_window), + priv->tearoff_hbox); height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (menu))); - menu->tearoff_adjustment = gtk_adjustment_new (0, + priv->tearoff_adjustment = gtk_adjustment_new (0, 0, priv->requested_height, MENU_SCROLL_STEP2, height/2, height); - g_object_connect (menu->tearoff_adjustment, - "signal::value-changed", gtk_menu_scrollbar_changed, menu, - NULL); - menu->tearoff_scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, menu->tearoff_adjustment); + g_object_connect (priv->tearoff_adjustment, + "signal::value-changed", gtk_menu_scrollbar_changed, menu, + NULL); + priv->tearoff_scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, priv->tearoff_adjustment); - gtk_box_pack_end (GTK_BOX (menu->tearoff_hbox), - menu->tearoff_scrollbar, - FALSE, FALSE, 0); - - if (menu->tearoff_adjustment->upper > height) - gtk_widget_show (menu->tearoff_scrollbar); - - gtk_widget_show (menu->tearoff_hbox); - } - - gtk_menu_reparent (menu, menu->tearoff_hbox, FALSE); + gtk_box_pack_end (GTK_BOX (priv->tearoff_hbox), + priv->tearoff_scrollbar, + FALSE, FALSE, 0); - /* Update menu->requisition - */ - gtk_widget_get_preferred_size (GTK_WIDGET (menu), - NULL, NULL); + if (gtk_adjustment_get_upper (priv->tearoff_adjustment) > height) + gtk_widget_show (priv->tearoff_scrollbar); - gtk_menu_set_tearoff_hints (menu, gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (menu)))); - - gtk_widget_realize (menu->tearoff_window); - gtk_menu_position (menu, TRUE); - - gtk_widget_show (GTK_WIDGET (menu)); - gtk_widget_show (menu->tearoff_window); + gtk_widget_show (priv->tearoff_hbox); + } - gtk_menu_scroll_to (menu, 0); + gtk_menu_reparent (menu, priv->tearoff_hbox, FALSE); - } + /* Update menu->requisition */ + gtk_widget_get_preferred_size (GTK_WIDGET (menu), NULL, NULL); + + gtk_menu_set_tearoff_hints (menu, gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (menu)))); + + gtk_widget_realize (priv->tearoff_window); + gtk_menu_position (menu, TRUE); + + gtk_widget_show (GTK_WIDGET (menu)); + gtk_widget_show (priv->tearoff_window); + + gtk_menu_scroll_to (menu, 0); + + } else - { - gtk_widget_hide (GTK_WIDGET (menu)); - gtk_widget_hide (menu->tearoff_window); - if (GTK_IS_CONTAINER (menu->toplevel)) - gtk_menu_reparent (menu, menu->toplevel, FALSE); - gtk_widget_destroy (menu->tearoff_window); - - menu->tearoff_window = NULL; - menu->tearoff_hbox = NULL; - menu->tearoff_scrollbar = NULL; - menu->tearoff_adjustment = NULL; - } + { + gtk_widget_hide (GTK_WIDGET (menu)); + gtk_widget_hide (priv->tearoff_window); + if (GTK_IS_CONTAINER (priv->toplevel)) + gtk_menu_reparent (menu, priv->toplevel, FALSE); + gtk_widget_destroy (priv->tearoff_window); + + priv->tearoff_window = NULL; + priv->tearoff_hbox = NULL; + priv->tearoff_scrollbar = NULL; + priv->tearoff_adjustment = NULL; + } g_object_notify (G_OBJECT (menu), "tearoff-state"); } @@ -2227,44 +2357,44 @@ gtk_menu_set_tearoff_state (GtkMenu *menu, * gtk_menu_get_tearoff_state: * @menu: a #GtkMenu * - * Returns whether the menu is torn off. See - * gtk_menu_set_tearoff_state (). + * Returns whether the menu is torn off. + * See gtk_menu_set_tearoff_state(). * * Return value: %TRUE if the menu is currently torn off. - **/ + */ gboolean gtk_menu_get_tearoff_state (GtkMenu *menu) { g_return_val_if_fail (GTK_IS_MENU (menu), FALSE); - return menu->torn_off; + return menu->priv->torn_off; } /** * gtk_menu_set_title: * @menu: a #GtkMenu - * @title: a string containing the title for the menu. - * - * Sets the title string for the menu. The title is displayed when the menu - * is shown as a tearoff menu. If @title is %NULL, the menu will see if it is - * attached to a parent menu item, and if so it will try to use the same text as - * that menu item's label. - **/ + * @title: a string containing the title for the menu + * + * Sets the title string for the menu. + * + * The title is displayed when the menu is shown as a tearoff + * menu. If @title is %NULL, the menu will see if it is attached + * to a parent menu item, and if so it will try to use the same + * text as that menu item's label. + */ void gtk_menu_set_title (GtkMenu *menu, - const gchar *title) + const gchar *title) { - GtkMenuPrivate *priv; + GtkMenuPrivate *priv = menu->priv; char *old_title; g_return_if_fail (GTK_IS_MENU (menu)); - priv = gtk_menu_get_private (menu); - old_title = priv->title; priv->title = g_strdup (title); g_free (old_title); - + gtk_menu_update_title (menu); g_object_notify (G_OBJECT (menu), "tearoff-title"); } @@ -2275,22 +2405,25 @@ gtk_menu_set_title (GtkMenu *menu, * * Returns the title of the menu. See gtk_menu_set_title(). * - * Return value: the title of the menu, or %NULL if the menu has no - * title set on it. This string is owned by the widget and should - * not be modified or freed. + * Return value: the title of the menu, or %NULL if the menu + * has no title set on it. This string is owned by GTK+ + * and should not be modified or freed. **/ G_CONST_RETURN gchar * gtk_menu_get_title (GtkMenu *menu) { - GtkMenuPrivate *priv; - g_return_val_if_fail (GTK_IS_MENU (menu), NULL); - priv = gtk_menu_get_private (menu); - - return priv->title; + return menu->priv->title; } +/** + * gtk_menu_reorder_child: + * @menu: a #GtkMenu + * @child: the #GtkMenuItem to move + * @position: the new position to place @child. Positions are + * numbered from 0 to n-1. + */ void gtk_menu_reorder_child (GtkMenu *menu, GtkWidget *child, @@ -2303,13 +2436,13 @@ gtk_menu_reorder_child (GtkMenu *menu, menu_shell = GTK_MENU_SHELL (menu); - if (g_list_find (menu_shell->children, child)) - { - menu_shell->children = g_list_remove (menu_shell->children, child); - menu_shell->children = g_list_insert (menu_shell->children, child, position); + if (g_list_find (menu_shell->priv->children, child)) + { + menu_shell->priv->children = g_list_remove (menu_shell->priv->children, child); + menu_shell->priv->children = g_list_insert (menu_shell->priv->children, child, position); menu_queue_resize (menu); - } + } } static void @@ -2318,12 +2451,13 @@ gtk_menu_style_updated (GtkWidget *widget) if (gtk_widget_get_realized (widget)) { GtkMenu *menu = GTK_MENU (widget); + GtkMenuPrivate *priv = menu->priv; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); - gtk_style_context_set_background (context, menu->bin_window); - gtk_style_context_set_background (context, menu->view_window); + gtk_style_context_set_background (context, priv->bin_window); + gtk_style_context_set_background (context, priv->view_window); gtk_style_context_set_background (context, gtk_widget_get_window (widget)); } } @@ -2332,6 +2466,7 @@ static void get_arrows_border (GtkMenu *menu, GtkBorder *border) { + GtkMenuPrivate *priv = menu->priv; guint scroll_arrow_height; GtkArrowPlacement arrow_placement; @@ -2343,20 +2478,20 @@ get_arrows_border (GtkMenu *menu, switch (arrow_placement) { case GTK_ARROWS_BOTH: - border->top = menu->upper_arrow_visible ? scroll_arrow_height : 0; - border->bottom = menu->lower_arrow_visible ? scroll_arrow_height : 0; + border->top = priv->upper_arrow_visible ? scroll_arrow_height : 0; + border->bottom = priv->lower_arrow_visible ? scroll_arrow_height : 0; break; case GTK_ARROWS_START: - border->top = (menu->upper_arrow_visible || - menu->lower_arrow_visible) ? scroll_arrow_height : 0; + border->top = (priv->upper_arrow_visible || + priv->lower_arrow_visible) ? scroll_arrow_height : 0; border->bottom = 0; break; case GTK_ARROWS_END: border->top = 0; - border->bottom = (menu->upper_arrow_visible || - menu->lower_arrow_visible) ? scroll_arrow_height : 0; + border->bottom = (priv->upper_arrow_visible || + priv->lower_arrow_visible) ? scroll_arrow_height : 0; break; } @@ -2369,30 +2504,31 @@ get_menu_border (GtkWidget *widget, { GtkStyleContext *context; GtkStateFlags state; - GtkBorder *border_width; + GtkBorder padding, border_width; context = gtk_widget_get_style_context (widget); state = gtk_widget_get_state_flags (widget); - gtk_style_context_get (context, state, - "border-width", &border_width, - NULL); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border_width); - *border = *border_width; - gtk_border_free (border_width); + border->left = border_width.left + padding.left; + border->right = border_width.right + padding.right; + border->top = border_width.top + padding.top; + border->bottom = border_width.bottom + padding.bottom; } static void gtk_menu_realize (GtkWidget *widget) { + GtkMenu *menu = GTK_MENU (widget); + GtkMenuPrivate *priv = menu->priv; GtkAllocation allocation; GtkStyleContext *context; GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; gint border_width; - GtkMenu *menu; - GtkMenuPrivate *priv; GtkWidget *child; GList *children; guint vertical_padding; @@ -2401,9 +2537,6 @@ gtk_menu_realize (GtkWidget *widget) g_return_if_fail (GTK_IS_MENU (widget)); - menu = GTK_MENU (widget); - priv = gtk_menu_get_private (menu); - gtk_widget_set_realized (widget, TRUE); gtk_widget_get_allocation (widget, &allocation); @@ -2417,7 +2550,7 @@ gtk_menu_realize (GtkWidget *widget) attributes.visual = gtk_widget_get_visual (widget); attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= (GDK_EXPOSURE_MASK | GDK_KEY_PRESS_MASK | - GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK ); + GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK ); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; @@ -2431,9 +2564,9 @@ gtk_menu_realize (GtkWidget *widget) context = gtk_widget_get_style_context (widget); gtk_widget_style_get (GTK_WIDGET (menu), - "vertical-padding", &vertical_padding, + "vertical-padding", &vertical_padding, "horizontal-padding", &horizontal_padding, - NULL); + NULL); gtk_widget_get_allocation (widget, &allocation); @@ -2452,9 +2585,9 @@ gtk_menu_realize (GtkWidget *widget) attributes.width = MAX (1, attributes.width); attributes.height = MAX (1, attributes.height); - menu->view_window = gdk_window_new (window, + priv->view_window = gdk_window_new (window, &attributes, attributes_mask); - gdk_window_set_user_data (menu->view_window, menu); + gdk_window_set_user_data (priv->view_window, menu); gtk_widget_get_allocation (widget, &allocation); @@ -2468,42 +2601,41 @@ gtk_menu_realize (GtkWidget *widget) attributes.width = MAX (1, attributes.width); attributes.height = MAX (1, attributes.height); - menu->bin_window = gdk_window_new (menu->view_window, + priv->bin_window = gdk_window_new (priv->view_window, &attributes, attributes_mask); - gdk_window_set_user_data (menu->bin_window, menu); + gdk_window_set_user_data (priv->bin_window, menu); - children = GTK_MENU_SHELL (menu)->children; + children = GTK_MENU_SHELL (menu)->priv->children; while (children) { child = children->data; children = children->next; - - gtk_widget_set_parent_window (child, menu->bin_window); + + gtk_widget_set_parent_window (child, priv->bin_window); } - gtk_style_context_set_background (context, menu->bin_window); - gtk_style_context_set_background (context, menu->view_window); + gtk_style_context_set_background (context, priv->bin_window); + gtk_style_context_set_background (context, priv->view_window); gtk_style_context_set_background (context, window); - if (GTK_MENU_SHELL (widget)->active_menu_item) + if (GTK_MENU_SHELL (widget)->priv->active_menu_item) gtk_menu_scroll_item_visible (GTK_MENU_SHELL (widget), - GTK_MENU_SHELL (widget)->active_menu_item); + GTK_MENU_SHELL (widget)->priv->active_menu_item); - gdk_window_show (menu->bin_window); - gdk_window_show (menu->view_window); + gdk_window_show (priv->bin_window); + gdk_window_show (priv->view_window); } -static gboolean +static gboolean gtk_menu_focus (GtkWidget *widget, GtkDirectionType direction) { - /* - * A menu or its menu items cannot have focus - */ + /* A menu or its menu items cannot have focus */ return FALSE; } -/* See notes in gtk_menu_popup() for information about the "grab transfer window" +/* See notes in gtk_menu_popup() for information + * about the "grab transfer window" */ static GdkWindow * menu_grab_transfer_window_get (GtkMenu *menu) @@ -2513,7 +2645,7 @@ menu_grab_transfer_window_get (GtkMenu *menu) { GdkWindowAttr attributes; gint attributes_mask; - + attributes.x = -100; attributes.y = -100; attributes.width = 10; @@ -2524,9 +2656,9 @@ menu_grab_transfer_window_get (GtkMenu *menu) attributes.event_mask = 0; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR; - + window = gdk_window_new (gtk_widget_get_root_window (GTK_WIDGET (menu)), - &attributes, attributes_mask); + &attributes, attributes_mask); gdk_window_set_user_data (window, menu); gdk_window_show (window); @@ -2553,29 +2685,32 @@ static void gtk_menu_unrealize (GtkWidget *widget) { GtkMenu *menu = GTK_MENU (widget); + GtkMenuPrivate *priv = menu->priv; menu_grab_transfer_window_destroy (menu); - gdk_window_set_user_data (menu->view_window, NULL); - gdk_window_destroy (menu->view_window); - menu->view_window = NULL; + gdk_window_set_user_data (priv->view_window, NULL); + gdk_window_destroy (priv->view_window); + priv->view_window = NULL; - gdk_window_set_user_data (menu->bin_window, NULL); - gdk_window_destroy (menu->bin_window); - menu->bin_window = NULL; + gdk_window_set_user_data (priv->bin_window, NULL); + gdk_window_destroy (priv->bin_window); + priv->bin_window = NULL; GTK_WIDGET_CLASS (gtk_menu_parent_class)->unrealize (widget); } - static gint calculate_line_heights (GtkMenu *menu, - gint for_width, - guint **ret_min_heights, - guint **ret_nat_heights) + gint for_width, + guint **ret_min_heights, + guint **ret_nat_heights) { - GtkMenuShell *menu_shell; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkMenuPrivate *priv; + GtkMenuShell *menu_shell; GtkWidget *child, *widget; GList *children; guint horizontal_padding; @@ -2585,25 +2720,29 @@ calculate_line_heights (GtkMenu *menu, guint *min_heights; guint *nat_heights; gint avail_width; - + + priv = menu->priv; widget = GTK_WIDGET (menu); menu_shell = GTK_MENU_SHELL (widget); - priv = gtk_menu_get_private (menu); - + min_heights = g_new0 (guint, gtk_menu_get_n_rows (menu)); nat_heights = g_new0 (guint, gtk_menu_get_n_rows (menu)); n_heights = gtk_menu_get_n_rows (menu); n_columns = gtk_menu_get_n_columns (menu); - avail_width = for_width - (2 * menu->toggle_size + priv->accel_size) * n_columns; + avail_width = for_width - (2 * priv->toggle_size + priv->accel_size) * n_columns; gtk_widget_style_get (GTK_WIDGET (menu), "horizontal-padding", &horizontal_padding, - NULL); + NULL); + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); border_width = gtk_container_get_border_width (GTK_CONTAINER (menu)); - avail_width -= (border_width + horizontal_padding + gtk_widget_get_style (widget)->xthickness) * 2; + avail_width -= (border_width + horizontal_padding) * 2 + padding.left + padding.right; - for (children = menu_shell->children; children; children = children->next) + for (children = menu_shell->priv->children; children; children = children->next) { gint part; gint toggle_size; @@ -2611,8 +2750,8 @@ calculate_line_heights (GtkMenu *menu, gint child_min, child_nat; child = children->data; - - if (! gtk_widget_get_visible (child)) + + if (!gtk_widget_get_visible (child)) continue; get_effective_child_attach (child, &l, &r, &t, &b); @@ -2623,7 +2762,7 @@ calculate_line_heights (GtkMenu *menu, &child_min, &child_nat); gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child), &toggle_size); - + part = MAX (child_min, toggle_size) / (b - t); min_heights[t] = MAX (min_heights[t], part); @@ -2640,19 +2779,19 @@ calculate_line_heights (GtkMenu *menu, *ret_nat_heights = nat_heights; else g_free (nat_heights); - + return n_heights; } static void gtk_menu_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkMenu *menu; + GtkMenuPrivate *priv; GtkMenuShell *menu_shell; GtkWidget *child; GtkAllocation child_allocation; - GtkMenuPrivate *priv; GList *children; gint x, y, i; gint width, height; @@ -2663,27 +2802,26 @@ gtk_menu_size_allocate (GtkWidget *widget, g_return_if_fail (GTK_IS_MENU (widget)); g_return_if_fail (allocation != NULL); - + menu = GTK_MENU (widget); menu_shell = GTK_MENU_SHELL (widget); - priv = gtk_menu_get_private (menu); + priv = menu->priv; gtk_widget_set_allocation (widget, allocation); gtk_widget_style_get (GTK_WIDGET (menu), - "vertical-padding", &vertical_padding, + "vertical-padding", &vertical_padding, "horizontal-padding", &horizontal_padding, - NULL); + NULL); get_menu_border (widget, &border); border_width = gtk_container_get_border_width (GTK_CONTAINER (menu)); g_free (priv->heights); - priv->heights_length = - calculate_line_heights (menu, - allocation->width, - &priv->heights, - NULL); + priv->heights_length = calculate_line_heights (menu, + allocation->width, + &priv->heights, + NULL); /* refresh our cached height request */ priv->requested_height = (2 * (border_width + vertical_padding)) + @@ -2698,10 +2836,10 @@ gtk_menu_size_allocate (GtkWidget *widget, height = allocation->height - (2 * (border_width + vertical_padding)) - border.top - border.bottom; - if (menu_shell->active) - gtk_menu_scroll_to (menu, menu->scroll_offset); + if (menu_shell->priv->active) + gtk_menu_scroll_to (menu, priv->scroll_offset); - if (!menu->tearoff_active) + if (!priv->tearoff_active) { GtkBorder arrow_border; @@ -2717,38 +2855,34 @@ gtk_menu_size_allocate (GtkWidget *widget, if (gtk_widget_get_realized (widget)) { gdk_window_move_resize (gtk_widget_get_window (widget), - allocation->x, allocation->y, - allocation->width, allocation->height); + allocation->x, allocation->y, + allocation->width, allocation->height); - gdk_window_move_resize (menu->view_window, - x, - y, - width, - height); + gdk_window_move_resize (priv->view_window, x, y, width, height); } - if (menu_shell->children) + if (menu_shell->priv->children) { gint base_width = width / gtk_menu_get_n_columns (menu); - children = menu_shell->children; + children = menu_shell->priv->children; while (children) - { - child = children->data; - children = children->next; + { + child = children->data; + children = children->next; - if (gtk_widget_get_visible (child)) - { + if (gtk_widget_get_visible (child)) + { gint i; - gint l, r, t, b; + gint l, r, t, b; - get_effective_child_attach (child, &l, &r, &t, &b); + get_effective_child_attach (child, &l, &r, &t, &b); if (gtk_widget_get_direction (GTK_WIDGET (menu)) == GTK_TEXT_DIR_RTL) { guint tmp; - tmp = gtk_menu_get_n_columns (menu) - l; - l = gtk_menu_get_n_columns (menu) - r; + tmp = gtk_menu_get_n_columns (menu) - l; + l = gtk_menu_get_n_columns (menu) - r; r = tmp; } @@ -2765,64 +2899,57 @@ gtk_menu_size_allocate (GtkWidget *widget, child_allocation.height += priv->heights[i]; } - gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (child), - menu->toggle_size); + gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (child), + priv->toggle_size); + + gtk_widget_size_allocate (child, &child_allocation); + gtk_widget_queue_draw (child); + } + } - gtk_widget_size_allocate (child, &child_allocation); - gtk_widget_queue_draw (child); - } - } - /* Resize the item window */ if (gtk_widget_get_realized (widget)) - { + { gint i; gint width, height; height = 0; - for (i = 0; i < gtk_menu_get_n_rows (menu); i++) + for (i = 0; i < gtk_menu_get_n_rows (menu); i++) height += priv->heights[i]; - width = gtk_menu_get_n_columns (menu) * base_width; - gdk_window_resize (menu->bin_window, width, height); - } + width = gtk_menu_get_n_columns (menu) * base_width; + gdk_window_resize (priv->bin_window, width, height); + } - if (menu->tearoff_active) - { - if (height >= priv->requested_height) - { - if (gtk_widget_get_visible (menu->tearoff_scrollbar)) - { - gtk_widget_hide (menu->tearoff_scrollbar); - gtk_menu_set_tearoff_hints (menu, allocation->width); + if (priv->tearoff_active) + { + if (height >= priv->requested_height) + { + if (gtk_widget_get_visible (priv->tearoff_scrollbar)) + { + gtk_widget_hide (priv->tearoff_scrollbar); + gtk_menu_set_tearoff_hints (menu, allocation->width); - gtk_menu_scroll_to (menu, 0); - } - } - else - { - menu->tearoff_adjustment->upper = priv->requested_height; - menu->tearoff_adjustment->page_size = allocation->height; - - if (menu->tearoff_adjustment->value + menu->tearoff_adjustment->page_size > - menu->tearoff_adjustment->upper) - { - gint value; - value = menu->tearoff_adjustment->upper - menu->tearoff_adjustment->page_size; - if (value < 0) - value = 0; - gtk_menu_scroll_to (menu, value); - } - - gtk_adjustment_changed (menu->tearoff_adjustment); - - if (!gtk_widget_get_visible (menu->tearoff_scrollbar)) - { - gtk_widget_show (menu->tearoff_scrollbar); - gtk_menu_set_tearoff_hints (menu, allocation->width); - } - } - } + gtk_menu_scroll_to (menu, 0); + } + } + else + { + gtk_adjustment_configure (priv->tearoff_adjustment, + gtk_adjustment_get_value (priv->tearoff_adjustment), + 0, + priv->requested_height, + gtk_adjustment_get_step_increment (priv->tearoff_adjustment), + gtk_adjustment_get_page_increment (priv->tearoff_adjustment), + allocation->height); + + if (!gtk_widget_get_visible (priv->tearoff_scrollbar)) + { + gtk_widget_show (priv->tearoff_scrollbar); + gtk_menu_set_tearoff_hints (menu, allocation->width); + } + } + } } } @@ -2904,7 +3031,7 @@ get_arrows_visible_area (GtkMenu *menu, static gboolean gtk_menu_draw (GtkWidget *widget, - cairo_t *cr) + cairo_t *cr) { GtkMenu *menu; GtkMenuPrivate *priv; @@ -2918,7 +3045,7 @@ gtk_menu_draw (GtkWidget *widget, GtkBorder menu_border; menu = GTK_MENU (widget); - priv = gtk_menu_get_private (menu); + priv = menu->priv; context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); state = gtk_widget_get_state_flags (widget); @@ -2944,8 +3071,8 @@ gtk_menu_draw (GtkWidget *widget, gtk_style_context_save (context); gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); - if (menu->upper_arrow_visible && !menu->tearoff_active) - { + if (priv->upper_arrow_visible && !priv->tearoff_active) + { gtk_style_context_save (context); gtk_style_context_set_state (context, priv->upper_arrow_state); @@ -2959,13 +3086,13 @@ gtk_menu_draw (GtkWidget *widget, gtk_render_arrow (context, cr, 0, upper.x + (upper.width - arrow_size) / 2, upper.y + menu_border.top + (arrow_space - arrow_size) / 2, - arrow_size); + arrow_size); gtk_style_context_restore (context); - } + } - if (menu->lower_arrow_visible && !menu->tearoff_active) - { + if (priv->lower_arrow_visible && !priv->tearoff_active) + { gtk_style_context_save (context); gtk_style_context_set_state (context, priv->lower_arrow_state); @@ -2982,19 +3109,19 @@ gtk_menu_draw (GtkWidget *widget, arrow_size); gtk_style_context_restore (context); - } + } gtk_style_context_restore (context); } - - if (gtk_cairo_should_draw_window (cr, menu->bin_window)) - { - gint y = -border.y + menu->scroll_offset; - - cairo_save (cr); - gtk_cairo_transform_to_window (cr, widget, menu->bin_window); - if (!menu->tearoff_active) + if (gtk_cairo_should_draw_window (cr, priv->bin_window)) + { + gint y = -border.y + priv->scroll_offset; + + cairo_save (cr); + gtk_cairo_transform_to_window (cr, widget, priv->bin_window); + + if (!priv->tearoff_active) { GtkBorder arrow_border; @@ -3048,14 +3175,14 @@ gtk_menu_get_preferred_width (GtkWidget *widget, menu = GTK_MENU (widget); menu_shell = GTK_MENU_SHELL (widget); - priv = gtk_menu_get_private (menu); + priv = menu->priv; min_width = nat_width = 0; - + max_toggle_size = 0; max_accel_width = 0; - - children = menu_shell->children; + + children = menu_shell->priv->children; while (children) { gint part; @@ -3064,7 +3191,7 @@ gtk_menu_get_preferred_width (GtkWidget *widget, child = children->data; children = children->next; - + if (! gtk_widget_get_visible (child)) continue; @@ -3075,14 +3202,12 @@ gtk_menu_get_preferred_width (GtkWidget *widget, * case the toggle size request depends on the size * request of a child of the child (e.g. for ImageMenuItem) */ - - GTK_MENU_ITEM (child)->show_submenu_indicator = TRUE; gtk_widget_get_preferred_width (child, &child_min, &child_nat); gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child), &toggle_size); max_toggle_size = MAX (max_toggle_size, toggle_size); max_accel_width = MAX (max_accel_width, - GTK_MENU_ITEM (child)->accelerator_width); + GTK_MENU_ITEM (child)->priv->accelerator_width); part = child_min / (r - l); min_width = MAX (min_width, part); @@ -3096,7 +3221,7 @@ gtk_menu_get_preferred_width (GtkWidget *widget, * We only do this for 'ordinary' menus, not for combobox * menus or multi-column menus */ - if (max_toggle_size == 0 && + if (max_toggle_size == 0 && gtk_menu_get_n_columns (menu) == 1 && !priv->no_toggle_size) { @@ -3135,7 +3260,7 @@ gtk_menu_get_preferred_width (GtkWidget *widget, gtk_widget_style_get (GTK_WIDGET (menu), "horizontal-padding", &horizontal_padding, - NULL); + NULL); get_menu_border (widget, &border); border_width = gtk_container_get_border_width (GTK_CONTAINER (menu)); @@ -3144,7 +3269,7 @@ gtk_menu_get_preferred_width (GtkWidget *widget, nat_width += (2 * (border_width + horizontal_padding)) + border.top + border.bottom; - menu->toggle_size = max_toggle_size; + priv->toggle_size = max_toggle_size; priv->accel_size = max_accel_width; if (minimum_size) @@ -3153,20 +3278,23 @@ gtk_menu_get_preferred_width (GtkWidget *widget, if (natural_size) *natural_size = nat_width; - /* Don't resize the tearoff if it is not active, because it won't redraw (it is only a background pixmap). + /* Don't resize the tearoff if it is not active, + * because it won't redraw (it is only a background pixmap). */ - if (menu->tearoff_active) + if (priv->tearoff_active) gtk_menu_set_tearoff_hints (menu, min_width); } -static void +static void gtk_menu_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) { gint min_width; - /* Menus are height-for-width only, just return the height for the minimum width */ + /* Menus are height-for-width only, just return the height + * for the minimum width + */ GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, &min_width, NULL); GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, min_width, minimum_size, natural_size); } @@ -3177,19 +3305,28 @@ gtk_menu_get_preferred_height_for_width (GtkWidget *widget, gint *minimum_size, gint *natural_size) { + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; GtkMenu *menu = GTK_MENU (widget); - GtkMenuPrivate *private = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; guint *min_heights, *nat_heights; guint vertical_padding, border_width; gint n_heights, i; gint min_height, nat_height; - gtk_widget_style_get (GTK_WIDGET (menu), "vertical-padding", &vertical_padding, NULL); + gtk_widget_style_get (widget, "vertical-padding", &vertical_padding, NULL); border_width = gtk_container_get_border_width (GTK_CONTAINER (menu)); - min_height = nat_height = (border_width + vertical_padding + gtk_widget_get_style (GTK_WIDGET (widget))->ythickness) * 2; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); - n_heights = + min_height = nat_height = (border_width + vertical_padding) * 2 + + padding.left + padding.right + border.left + border.right; + + n_heights = calculate_line_heights (menu, for_size, &min_heights, &nat_heights); for (i = 0; i < n_heights; i++) @@ -3198,24 +3335,24 @@ gtk_menu_get_preferred_height_for_width (GtkWidget *widget, nat_height += nat_heights[i]; } - if (private->have_position) + if (priv->have_position) { - GdkScreen *screen = gtk_widget_get_screen (menu->toplevel); + GdkScreen *screen = gtk_widget_get_screen (priv->toplevel); GdkRectangle monitor; - - gdk_screen_get_monitor_geometry (screen, private->monitor_num, &monitor); - if (private->y + min_height > monitor.y + monitor.height) - min_height = monitor.y + monitor.height - private->y; + gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor); - if (private->y + nat_height > monitor.y + monitor.height) - nat_height = monitor.y + monitor.height - private->y; + if (priv->position_y + min_height > monitor.y + monitor.height) + min_height = monitor.y + monitor.height - priv->position_y; - if (private->y < monitor.y) - { - min_height -= monitor.y - private->y; - nat_height -= monitor.y - private->y; - } + if (priv->position_y + nat_height > monitor.y + monitor.height) + nat_height = monitor.y + monitor.height - priv->position_y; + + if (priv->position_y < monitor.y) + { + min_height -= monitor.y - priv->position_y; + nat_height -= monitor.y - priv->position_y; + } } if (minimum_size) @@ -3234,7 +3371,9 @@ static gboolean gtk_menu_button_scroll (GtkMenu *menu, GdkEventButton *event) { - if (menu->upper_arrow_prelight || menu->lower_arrow_prelight) + GtkMenuPrivate *priv = menu->priv; + + if (priv->upper_arrow_prelight || priv->lower_arrow_prelight) { gboolean touchscreen_mode; @@ -3259,15 +3398,16 @@ pointer_in_menu_window (GtkWidget *widget, gdouble x_root, gdouble y_root) { - GtkAllocation allocation; GtkMenu *menu = GTK_MENU (widget); + GtkMenuPrivate *priv = menu->priv; + GtkAllocation allocation; - if (gtk_widget_get_mapped (menu->toplevel)) + if (gtk_widget_get_mapped (priv->toplevel)) { GtkMenuShell *menu_shell; gint window_x, window_y; - gdk_window_get_position (gtk_widget_get_window (menu->toplevel), + gdk_window_get_position (gtk_widget_get_window (priv->toplevel), &window_x, &window_y); gtk_widget_get_allocation (widget, &allocation); @@ -3277,8 +3417,8 @@ pointer_in_menu_window (GtkWidget *widget, menu_shell = GTK_MENU_SHELL (widget); - if (GTK_IS_MENU (menu_shell->parent_menu_shell)) - return pointer_in_menu_window (menu_shell->parent_menu_shell, + if (GTK_IS_MENU (menu_shell->priv->parent_menu_shell)) + return pointer_in_menu_window (menu_shell->priv->parent_menu_shell, x_root, y_root); } @@ -3313,9 +3453,9 @@ gtk_menu_button_press (GtkWidget *widget, static gboolean gtk_menu_button_release (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { - GtkMenuPrivate *priv = gtk_menu_get_private (GTK_MENU (widget)); + GtkMenuPrivate *priv = GTK_MENU (widget)->priv; if (priv->ignore_button_release) { @@ -3342,8 +3482,8 @@ gtk_menu_button_release (GtkWidget *widget, * next button_press/button_release in GtkMenuShell. * See bug #449371. */ - if (GTK_MENU_SHELL (widget)->active) - GTK_MENU_SHELL (widget)->button = 0; + if (GTK_MENU_SHELL (widget)->priv->active) + GTK_MENU_SHELL (widget)->priv->button = 0; return TRUE; } @@ -3353,45 +3493,45 @@ gtk_menu_button_release (GtkWidget *widget, static const gchar * get_accel_path (GtkWidget *menu_item, - gboolean *locked) + gboolean *locked) { const gchar *path; GtkWidget *label; GClosure *accel_closure; - GtkAccelGroup *accel_group; + GtkAccelGroup *accel_group; path = _gtk_widget_get_accel_path (menu_item, locked); if (!path) { - path = GTK_MENU_ITEM (menu_item)->accel_path; - - if (locked) - { - *locked = TRUE; + path = GTK_MENU_ITEM (menu_item)->priv->accel_path; - label = gtk_bin_get_child (GTK_BIN (menu_item)); - - if (GTK_IS_ACCEL_LABEL (label)) - { - g_object_get (label, - "accel-closure", &accel_closure, - NULL); - if (accel_closure) - { - accel_group = gtk_accel_group_from_accel_closure (accel_closure); - - *locked = gtk_accel_group_get_is_locked (accel_group); - } - } - } + if (locked) + { + *locked = TRUE; + + label = gtk_bin_get_child (GTK_BIN (menu_item)); + + if (GTK_IS_ACCEL_LABEL (label)) + { + g_object_get (label, + "accel-closure", &accel_closure, + NULL); + if (accel_closure) + { + accel_group = gtk_accel_group_from_accel_closure (accel_closure); + + *locked = gtk_accel_group_get_is_locked (accel_group); + } + } + } } return path; } static gboolean -gtk_menu_key_press (GtkWidget *widget, - GdkEventKey *event) +gtk_menu_key_press (GtkWidget *widget, + GdkEventKey *event) { GtkMenuShell *menu_shell; GtkMenu *menu; @@ -3401,30 +3541,30 @@ gtk_menu_key_press (GtkWidget *widget, guint accel_key, accel_mods; GdkModifierType consumed_modifiers; GdkDisplay *display; - + g_return_val_if_fail (GTK_IS_MENU (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); - + menu_shell = GTK_MENU_SHELL (widget); menu = GTK_MENU (widget); - + gtk_menu_stop_navigating_submenu (menu); if (GTK_WIDGET_CLASS (gtk_menu_parent_class)->key_press_event (widget, event)) return TRUE; display = gtk_widget_get_display (widget); - + g_object_get (gtk_widget_get_settings (widget), "gtk-menu-bar-accel", &accel, - "gtk-can-change-accels", &can_change_accels, + "gtk-can-change-accels", &can_change_accels, NULL); if (accel && *accel) { guint keyval = 0; GdkModifierType mods = 0; - + gtk_accelerator_parse (accel, &keyval, &mods); if (keyval == 0) @@ -3436,14 +3576,14 @@ gtk_menu_key_press (GtkWidget *widget, */ if (event->keyval == keyval && (mods & event->state) == mods) { - gtk_menu_shell_cancel (menu_shell); + gtk_menu_shell_cancel (menu_shell); g_free (accel); return TRUE; } } g_free (accel); - + switch (event->keyval) { case GDK_KEY_Delete: @@ -3457,70 +3597,70 @@ gtk_menu_key_press (GtkWidget *widget, /* Figure out what modifiers went into determining the key symbol */ gdk_keymap_translate_keyboard_state (gdk_keymap_get_for_display (display), - event->hardware_keycode, event->state, event->group, - NULL, NULL, NULL, &consumed_modifiers); + event->hardware_keycode, + event->state, event->group, + NULL, NULL, NULL, &consumed_modifiers); accel_key = gdk_keyval_to_lower (event->keyval); accel_mods = event->state & gtk_accelerator_get_default_mod_mask () & ~consumed_modifiers; - /* If lowercasing affects the keysym, then we need to include SHIFT in the modifiers, - * We re-upper case when we match against the keyval, but display and save in caseless form. + /* If lowercasing affects the keysym, then we need to include SHIFT + * in the modifiers, we re-uppercase when we match against the keyval, + * but display and save in caseless form. */ if (accel_key != event->keyval) accel_mods |= GDK_SHIFT_MASK; - + /* Modify the accelerators */ if (can_change_accels && - menu_shell->active_menu_item && - gtk_bin_get_child (GTK_BIN (menu_shell->active_menu_item)) && /* no separators */ - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL && /* no submenus */ + menu_shell->priv->active_menu_item && + gtk_bin_get_child (GTK_BIN (menu_shell->priv->active_menu_item)) && /* no separators */ + GTK_MENU_ITEM (menu_shell->priv->active_menu_item)->priv->submenu == NULL && /* no submenus */ (delete || gtk_accelerator_valid (accel_key, accel_mods))) { - GtkWidget *menu_item = menu_shell->active_menu_item; + GtkWidget *menu_item = menu_shell->priv->active_menu_item; gboolean locked, replace_accels = TRUE; const gchar *path; path = get_accel_path (menu_item, &locked); if (!path || locked) - { - /* can't change accelerators on menu_items without paths - * (basically, those items are accelerator-locked). - */ - /* g_print("item has no path or is locked, menu prefix: %s\n", menu->accel_path); */ - gtk_widget_error_bell (widget); - } + { + /* Can't change accelerators on menu_items without paths + * (basically, those items are accelerator-locked). + */ + gtk_widget_error_bell (widget); + } else - { - gboolean changed; + { + gboolean changed; - /* For the keys that act to delete the current setting, we delete - * the current setting if there is one, otherwise, we set the - * key as the accelerator. - */ - if (delete) - { - GtkAccelKey key; - - if (gtk_accel_map_lookup_entry (path, &key) && - (key.accel_key || key.accel_mods)) - { - accel_key = 0; - accel_mods = 0; - } - } - changed = gtk_accel_map_change_entry (path, accel_key, accel_mods, replace_accels); + /* For the keys that act to delete the current setting, + * we delete the current setting if there is one, otherwise, + * we set the key as the accelerator. + */ + if (delete) + { + GtkAccelKey key; - if (!changed) - { - /* we failed, probably because this key is in use and - * locked already - */ - /* g_print("failed to change\n"); */ - gtk_widget_error_bell (widget); - } - } + if (gtk_accel_map_lookup_entry (path, &key) && + (key.accel_key || key.accel_mods)) + { + accel_key = 0; + accel_mods = 0; + } + } + changed = gtk_accel_map_change_entry (path, accel_key, accel_mods, replace_accels); + + if (!changed) + { + /* We failed, probably because this key is in use + * and locked already. + */ + gtk_widget_error_bell (widget); + } + } } - + return TRUE; } @@ -3532,9 +3672,9 @@ check_threshold (GtkWidget *widget, gint y) { #define THRESHOLD 8 - + return - ABS (start_x - x) > THRESHOLD || + ABS (start_x - x) > THRESHOLD || ABS (start_y - y) > THRESHOLD; } @@ -3543,12 +3683,12 @@ definitely_within_item (GtkWidget *widget, gint x, gint y) { - GdkWindow *window = GTK_MENU_ITEM (widget)->event_window; + GdkWindow *window = GTK_MENU_ITEM (widget)->priv->event_window; int w, h; w = gdk_window_get_width (window); h = gdk_window_get_height (window); - + return check_threshold (widget, 0, 0, x, y) && check_threshold (widget, w - 1, 0, x, y) && @@ -3559,9 +3699,7 @@ definitely_within_item (GtkWidget *widget, static gboolean gtk_menu_has_navigation_triangle (GtkMenu *menu) { - GtkMenuPrivate *priv; - - priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; return priv->navigation_height && priv->navigation_width; } @@ -3579,7 +3717,7 @@ gtk_menu_motion_notify (GtkWidget *widget, if (GTK_IS_MENU (widget)) { - GtkMenuPrivate *priv = gtk_menu_get_private (GTK_MENU (widget)); + GtkMenuPrivate *priv = GTK_MENU(widget)->priv; if (priv->ignore_button_release) priv->ignore_button_release = FALSE; @@ -3607,14 +3745,14 @@ gtk_menu_motion_notify (GtkWidget *widget, menu = GTK_MENU (menu_shell); if (definitely_within_item (menu_item, event->x, event->y)) - menu_shell->activate_time = 0; + menu_shell->priv->activate_time = 0; - need_enter = (gtk_menu_has_navigation_triangle (menu) || menu_shell->ignore_enter); + need_enter = (gtk_menu_has_navigation_triangle (menu) || menu_shell->priv->ignore_enter); /* Check to see if we are within an active submenu's navigation region */ if (gtk_menu_navigating_submenu (menu, event->x_root, event->y_root)) - return TRUE; + return TRUE; /* Make sure we pop down if we enter a non-selectable menu item, so we * don't show a submenu when the cursor is outside the stay-up triangle. @@ -3633,35 +3771,35 @@ gtk_menu_motion_notify (GtkWidget *widget, /* The menu is now sensitive to enter events on its items, but * was previously sensitive. So we fake an enter event. */ - menu_shell->ignore_enter = FALSE; - - if (event->x >= 0 && event->x < gdk_window_get_width (event->window) && - event->y >= 0 && event->y < gdk_window_get_height (event->window)) - { - GdkEvent *send_event = gdk_event_new (GDK_ENTER_NOTIFY); - gboolean result; + menu_shell->priv->ignore_enter = FALSE; - send_event->crossing.window = g_object_ref (event->window); - send_event->crossing.time = event->time; - send_event->crossing.send_event = TRUE; - send_event->crossing.x_root = event->x_root; - send_event->crossing.y_root = event->y_root; - send_event->crossing.x = event->x; - send_event->crossing.y = event->y; + if (event->x >= 0 && event->x < gdk_window_get_width (event->window) && + event->y >= 0 && event->y < gdk_window_get_height (event->window)) + { + GdkEvent *send_event = gdk_event_new (GDK_ENTER_NOTIFY); + gboolean result; + + send_event->crossing.window = g_object_ref (event->window); + send_event->crossing.time = event->time; + send_event->crossing.send_event = TRUE; + send_event->crossing.x_root = event->x_root; + send_event->crossing.y_root = event->y_root; + send_event->crossing.x = event->x; + send_event->crossing.y = event->y; send_event->crossing.state = event->state; gdk_event_set_device (send_event, gdk_event_get_device ((GdkEvent *) event)); - /* We send the event to 'widget', the currently active menu, - * instead of 'menu', the menu that the pointer is in. This - * will ensure that the event will be ignored unless the - * menuitem is a child of the active menu or some parent - * menu of the active menu. - */ - result = gtk_widget_event (widget, send_event); - gdk_event_free (send_event); + /* We send the event to 'widget', the currently active menu, + * instead of 'menu', the menu that the pointer is in. This + * will ensure that the event will be ignored unless the + * menuitem is a child of the active menu or some parent + * menu of the active menu. + */ + result = gtk_widget_event (widget, send_event); + gdk_event_free (send_event); - return result; - } + return result; + } } return FALSE; @@ -3670,7 +3808,7 @@ gtk_menu_motion_notify (GtkWidget *widget, static gboolean get_double_arrows (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; gboolean double_arrows; GtkArrowPlacement arrow_placement; @@ -3683,14 +3821,14 @@ get_double_arrows (GtkMenu *menu) return TRUE; return double_arrows || (priv->initially_pushed_in && - menu->scroll_offset != 0); + priv->scroll_offset != 0); } static void -gtk_menu_scroll_by (GtkMenu *menu, - gint step) +gtk_menu_scroll_by (GtkMenu *menu, + gint step) { - GtkMenuPrivate *priv; + GtkMenuPrivate *priv = menu->priv; GtkBorder arrow_border; GtkWidget *widget; gint offset; @@ -3698,8 +3836,7 @@ gtk_menu_scroll_by (GtkMenu *menu, gboolean double_arrows; widget = GTK_WIDGET (menu); - offset = menu->scroll_offset + step; - priv = gtk_menu_get_private (menu); + offset = priv->scroll_offset + step; get_arrows_border (menu, &arrow_border); @@ -3715,30 +3852,30 @@ gtk_menu_scroll_by (GtkMenu *menu, offset = 0; /* Don't scroll over the top if we weren't before: */ - if ((menu->scroll_offset >= 0) && (offset < 0)) + if ((priv->scroll_offset >= 0) && (offset < 0)) offset = 0; view_height = gdk_window_get_height (gtk_widget_get_window (widget)); - if (menu->scroll_offset == 0 && + if (priv->scroll_offset == 0 && view_height >= priv->requested_height) return; /* Don't scroll past the bottom if we weren't before: */ - if (menu->scroll_offset > 0) + if (priv->scroll_offset > 0) view_height -= arrow_border.top; - /* When both arrows are always shown, reduce - * view height even more. + /* When both arrows are always shown, + * reduce view height even more. */ if (double_arrows) view_height -= arrow_border.bottom; - if ((menu->scroll_offset + view_height <= priv->requested_height) && + if ((priv->scroll_offset + view_height <= priv->requested_height) && (offset + view_height > priv->requested_height)) offset = priv->requested_height - view_height; - if (offset != menu->scroll_offset) + if (offset != priv->scroll_offset) gtk_menu_scroll_to (menu, offset); } @@ -3746,24 +3883,25 @@ static void gtk_menu_do_timeout_scroll (GtkMenu *menu, gboolean touchscreen_mode) { + GtkMenuPrivate *priv = menu->priv; gboolean upper_visible; gboolean lower_visible; - upper_visible = menu->upper_arrow_visible; - lower_visible = menu->lower_arrow_visible; + upper_visible = priv->upper_arrow_visible; + lower_visible = priv->lower_arrow_visible; - gtk_menu_scroll_by (menu, menu->scroll_step); + gtk_menu_scroll_by (menu, priv->scroll_step); if (touchscreen_mode && - (upper_visible != menu->upper_arrow_visible || - lower_visible != menu->lower_arrow_visible)) + (upper_visible != priv->upper_arrow_visible || + lower_visible != priv->lower_arrow_visible)) { /* We are about to hide a scroll arrow while the mouse is pressed, * this would cause the uncovered menu item to be activated on button * release. Therefore we need to ignore button release here */ - GTK_MENU_SHELL (menu)->ignore_enter = TRUE; - gtk_menu_get_private (menu)->ignore_button_release = TRUE; + GTK_MENU_SHELL (menu)->priv->ignore_enter = TRUE; + priv->ignore_button_release = TRUE; } } @@ -3802,9 +3940,8 @@ gtk_menu_scroll_timeout_initial (gpointer data) gtk_menu_remove_scroll_timeout (menu); - menu->timeout_id = gdk_threads_add_timeout (timeout, - gtk_menu_scroll_timeout, - menu); + menu->priv->scroll_timeout = + gdk_threads_add_timeout (timeout, gtk_menu_scroll_timeout, menu); return FALSE; } @@ -3822,14 +3959,13 @@ gtk_menu_start_scrolling (GtkMenu *menu) gtk_menu_do_timeout_scroll (menu, touchscreen_mode); - menu->timeout_id = gdk_threads_add_timeout (timeout, - gtk_menu_scroll_timeout_initial, - menu); + menu->priv->scroll_timeout = + gdk_threads_add_timeout (timeout, gtk_menu_scroll_timeout_initial, menu); } static gboolean -gtk_menu_scroll (GtkWidget *widget, - GdkEventScroll *event) +gtk_menu_scroll (GtkWidget *widget, + GdkEventScroll *event) { GtkMenu *menu = GTK_MENU (widget); @@ -3861,6 +3997,9 @@ get_arrows_sensitive_area (GtkMenu *menu, guint vertical_padding; gint win_x, win_y; gint scroll_arrow_height; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; window = gtk_widget_get_window (widget); width = gdk_window_get_width (window); @@ -3872,8 +4011,11 @@ get_arrows_sensitive_area (GtkMenu *menu, "arrow-placement", &arrow_placement, NULL); - border = gtk_container_get_border_width (GTK_CONTAINER (menu)) + - gtk_widget_get_style (widget)->ythickness + vertical_padding; + border = gtk_container_get_border_width (GTK_CONTAINER (menu)) + vertical_padding; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); gdk_window_get_position (window, &win_x, &win_y); @@ -3885,15 +4027,15 @@ get_arrows_sensitive_area (GtkMenu *menu, upper->x = win_x; upper->y = win_y; upper->width = width; - upper->height = scroll_arrow_height + border; + upper->height = scroll_arrow_height + border + padding.top; } if (lower) { lower->x = win_x; - lower->y = win_y + height - border - scroll_arrow_height; + lower->y = win_y + height - border - padding.bottom - scroll_arrow_height; lower->width = width; - lower->height = scroll_arrow_height + border; + lower->height = scroll_arrow_height + border + padding.bottom; } break; @@ -3903,7 +4045,7 @@ get_arrows_sensitive_area (GtkMenu *menu, upper->x = win_x; upper->y = win_y; upper->width = width / 2; - upper->height = scroll_arrow_height + border; + upper->height = scroll_arrow_height + border + padding.top; } if (lower) @@ -3911,7 +4053,7 @@ get_arrows_sensitive_area (GtkMenu *menu, lower->x = win_x + width / 2; lower->y = win_y; lower->width = width / 2; - lower->height = scroll_arrow_height + border; + lower->height = scroll_arrow_height + border + padding.bottom; } break; @@ -3921,7 +4063,7 @@ get_arrows_sensitive_area (GtkMenu *menu, upper->x = win_x; upper->y = win_y + height - border - scroll_arrow_height; upper->width = width / 2; - upper->height = scroll_arrow_height + border; + upper->height = scroll_arrow_height + border + padding.top; } if (lower) @@ -3929,7 +4071,7 @@ get_arrows_sensitive_area (GtkMenu *menu, lower->x = win_x + width / 2; lower->y = win_y + height - border - scroll_arrow_height; lower->width = width / 2; - lower->height = scroll_arrow_height + border; + lower->height = scroll_arrow_height + border + padding.bottom; } break; } @@ -3938,28 +4080,26 @@ get_arrows_sensitive_area (GtkMenu *menu, static void gtk_menu_handle_scrolling (GtkMenu *menu, - gint x, - gint y, - gboolean enter, + gint x, + gint y, + gboolean enter, gboolean motion) { + GtkMenuPrivate *priv = menu->priv; GtkMenuShell *menu_shell; - GtkMenuPrivate *priv; GdkRectangle rect; gboolean in_arrow; gboolean scroll_fast = FALSE; gint top_x, top_y; gboolean touchscreen_mode; - priv = gtk_menu_get_private (menu); - menu_shell = GTK_MENU_SHELL (menu); g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu)), "gtk-touchscreen-mode", &touchscreen_mode, NULL); - gdk_window_get_position (gtk_widget_get_window (menu->toplevel), + gdk_window_get_position (gtk_widget_get_window (priv->toplevel), &top_x, &top_y); x -= top_x; y -= top_y; @@ -3969,7 +4109,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, get_arrows_sensitive_area (menu, &rect, NULL); in_arrow = FALSE; - if (menu->upper_arrow_visible && !menu->tearoff_active && + if (priv->upper_arrow_visible && !priv->tearoff_active && (x >= rect.x) && (x < rect.x + rect.width) && (y >= rect.y) && (y < rect.y + rect.height)) { @@ -3977,19 +4117,19 @@ gtk_menu_handle_scrolling (GtkMenu *menu, } if (touchscreen_mode) - menu->upper_arrow_prelight = in_arrow; + priv->upper_arrow_prelight = in_arrow; if ((priv->upper_arrow_state & GTK_STATE_FLAG_INSENSITIVE) == 0) { gboolean arrow_pressed = FALSE; - if (menu->upper_arrow_visible && !menu->tearoff_active) + if (priv->upper_arrow_visible && !priv->tearoff_active) { if (touchscreen_mode) { - if (enter && menu->upper_arrow_prelight) + if (enter && priv->upper_arrow_prelight) { - if (menu->timeout_id == 0) + if (priv->scroll_timeout == 0) { /* Deselect the active item so that * any submenus are popped down @@ -3997,7 +4137,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, gtk_menu_shell_deselect (menu_shell); gtk_menu_remove_scroll_timeout (menu); - menu->scroll_step = -MENU_SCROLL_STEP2; /* always fast */ + priv->scroll_step = -MENU_SCROLL_STEP2; /* always fast */ if (!motion) { @@ -4021,11 +4161,11 @@ gtk_menu_handle_scrolling (GtkMenu *menu, scroll_fast = (y < rect.y + MENU_SCROLL_FAST_ZONE); if (enter && in_arrow && - (!menu->upper_arrow_prelight || - menu->scroll_fast != scroll_fast)) + (!priv->upper_arrow_prelight || + priv->scroll_fast != scroll_fast)) { - menu->upper_arrow_prelight = TRUE; - menu->scroll_fast = scroll_fast; + priv->upper_arrow_prelight = TRUE; + priv->scroll_fast = scroll_fast; /* Deselect the active item so that * any submenus are popped down @@ -4033,16 +4173,17 @@ gtk_menu_handle_scrolling (GtkMenu *menu, gtk_menu_shell_deselect (menu_shell); gtk_menu_remove_scroll_timeout (menu); - menu->scroll_step = scroll_fast ? - -MENU_SCROLL_STEP2 : -MENU_SCROLL_STEP1; + priv->scroll_step = scroll_fast + ? -MENU_SCROLL_STEP2 + : -MENU_SCROLL_STEP1; - menu->timeout_id = - gdk_threads_add_timeout (scroll_fast ? - MENU_SCROLL_TIMEOUT2 : - MENU_SCROLL_TIMEOUT1, + priv->scroll_timeout = + gdk_threads_add_timeout (scroll_fast + ? MENU_SCROLL_TIMEOUT2 + : MENU_SCROLL_TIMEOUT1, gtk_menu_scroll_timeout, menu); } - else if (!enter && !in_arrow && menu->upper_arrow_prelight) + else if (!enter && !in_arrow && priv->upper_arrow_prelight) { gtk_menu_stop_scrolling (menu); } @@ -4060,7 +4201,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, if (arrow_pressed) arrow_state |= GTK_STATE_FLAG_ACTIVE; - if (menu->upper_arrow_prelight) + if (priv->upper_arrow_prelight) arrow_state |= GTK_STATE_FLAG_PRELIGHT; if (arrow_state != priv->upper_arrow_state) @@ -4078,7 +4219,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, get_arrows_sensitive_area (menu, NULL, &rect); in_arrow = FALSE; - if (menu->lower_arrow_visible && !menu->tearoff_active && + if (priv->lower_arrow_visible && !priv->tearoff_active && (x >= rect.x) && (x < rect.x + rect.width) && (y >= rect.y) && (y < rect.y + rect.height)) { @@ -4086,19 +4227,19 @@ gtk_menu_handle_scrolling (GtkMenu *menu, } if (touchscreen_mode) - menu->lower_arrow_prelight = in_arrow; + priv->lower_arrow_prelight = in_arrow; if ((priv->lower_arrow_state & GTK_STATE_FLAG_INSENSITIVE) == 0) { gboolean arrow_pressed = FALSE; - if (menu->lower_arrow_visible && !menu->tearoff_active) + if (priv->lower_arrow_visible && !priv->tearoff_active) { if (touchscreen_mode) { - if (enter && menu->lower_arrow_prelight) + if (enter && priv->lower_arrow_prelight) { - if (menu->timeout_id == 0) + if (priv->scroll_timeout == 0) { /* Deselect the active item so that * any submenus are popped down @@ -4106,7 +4247,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, gtk_menu_shell_deselect (menu_shell); gtk_menu_remove_scroll_timeout (menu); - menu->scroll_step = MENU_SCROLL_STEP2; /* always fast */ + priv->scroll_step = MENU_SCROLL_STEP2; /* always fast */ if (!motion) { @@ -4130,11 +4271,11 @@ gtk_menu_handle_scrolling (GtkMenu *menu, scroll_fast = (y > rect.y + rect.height - MENU_SCROLL_FAST_ZONE); if (enter && in_arrow && - (!menu->lower_arrow_prelight || - menu->scroll_fast != scroll_fast)) + (!priv->lower_arrow_prelight || + priv->scroll_fast != scroll_fast)) { - menu->lower_arrow_prelight = TRUE; - menu->scroll_fast = scroll_fast; + priv->lower_arrow_prelight = TRUE; + priv->scroll_fast = scroll_fast; /* Deselect the active item so that * any submenus are popped down @@ -4142,16 +4283,17 @@ gtk_menu_handle_scrolling (GtkMenu *menu, gtk_menu_shell_deselect (menu_shell); gtk_menu_remove_scroll_timeout (menu); - menu->scroll_step = scroll_fast ? - MENU_SCROLL_STEP2 : MENU_SCROLL_STEP1; + priv->scroll_step = scroll_fast + ? MENU_SCROLL_STEP2 + : MENU_SCROLL_STEP1; - menu->timeout_id = - gdk_threads_add_timeout (scroll_fast ? - MENU_SCROLL_TIMEOUT2 : - MENU_SCROLL_TIMEOUT1, + priv->scroll_timeout = + gdk_threads_add_timeout (scroll_fast + ? MENU_SCROLL_TIMEOUT2 + : MENU_SCROLL_TIMEOUT1, gtk_menu_scroll_timeout, menu); } - else if (!enter && !in_arrow && menu->lower_arrow_prelight) + else if (!enter && !in_arrow && priv->lower_arrow_prelight) { gtk_menu_stop_scrolling (menu); } @@ -4169,7 +4311,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, if (arrow_pressed) arrow_state |= GTK_STATE_FLAG_ACTIVE; - if (menu->lower_arrow_prelight) + if (priv->lower_arrow_prelight) arrow_state |= GTK_STATE_FLAG_PRELIGHT; if (arrow_state != priv->lower_arrow_state) @@ -4185,7 +4327,7 @@ gtk_menu_handle_scrolling (GtkMenu *menu, static gboolean gtk_menu_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkWidget *menu_item; GtkWidget *parent; @@ -4205,47 +4347,47 @@ gtk_menu_enter_notify (GtkWidget *widget, { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); - if (!menu_shell->ignore_enter) - gtk_menu_handle_scrolling (GTK_MENU (widget), + if (!menu_shell->priv->ignore_enter) + gtk_menu_handle_scrolling (GTK_MENU (widget), event->x_root, event->y_root, TRUE, TRUE); } if (!touchscreen_mode && GTK_IS_MENU_ITEM (menu_item)) { GtkWidget *menu = gtk_widget_get_parent (menu_item); - - if (GTK_IS_MENU (menu)) - { - GtkMenuPrivate *priv = gtk_menu_get_private (GTK_MENU (menu)); - GtkMenuShell *menu_shell = GTK_MENU_SHELL (menu); - if (priv->seen_item_enter) - { - /* This is the second enter we see for an item - * on this menu. This means a release should always - * mean activate. - */ - menu_shell->activate_time = 0; - } - else if ((event->detail != GDK_NOTIFY_NONLINEAR && - event->detail != GDK_NOTIFY_NONLINEAR_VIRTUAL)) - { - if (definitely_within_item (menu_item, event->x, event->y)) - { - /* This is an actual user-enter (ie. not a pop-under) - * In this case, the user must either have entered - * sufficiently far enough into the item, or he must move - * far enough away from the enter point. (see - * gtk_menu_motion_notify()) - */ - menu_shell->activate_time = 0; - } - } - - priv->seen_item_enter = TRUE; - } + if (GTK_IS_MENU (menu)) + { + GtkMenuPrivate *priv = (GTK_MENU (menu))->priv; + GtkMenuShell *menu_shell = GTK_MENU_SHELL (menu); + + if (priv->seen_item_enter) + { + /* This is the second enter we see for an item + * on this menu. This means a release should always + * mean activate. + */ + menu_shell->priv->activate_time = 0; + } + else if ((event->detail != GDK_NOTIFY_NONLINEAR && + event->detail != GDK_NOTIFY_NONLINEAR_VIRTUAL)) + { + if (definitely_within_item (menu_item, event->x, event->y)) + { + /* This is an actual user-enter (ie. not a pop-under) + * In this case, the user must either have entered + * sufficiently far enough into the item, or he must move + * far enough away from the enter point. (see + * gtk_menu_motion_notify()) + */ + menu_shell->priv->activate_time = 0; + } + } + + priv->seen_item_enter = TRUE; + } } - + /* If this is a faked enter (see gtk_menu_motion_notify), 'widget' * will not correspond to the event widget's parent. Check to see * if we are in the parent's navigation region. @@ -4256,12 +4398,12 @@ gtk_menu_enter_notify (GtkWidget *widget, event->x_root, event->y_root)) return TRUE; - return GTK_WIDGET_CLASS (gtk_menu_parent_class)->enter_notify_event (widget, event); + return GTK_WIDGET_CLASS (gtk_menu_parent_class)->enter_notify_event (widget, event); } static gboolean gtk_menu_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkMenuShell *menu_shell; GtkMenu *menu; @@ -4274,60 +4416,60 @@ gtk_menu_leave_notify (GtkWidget *widget, return TRUE; menu = GTK_MENU (widget); - menu_shell = GTK_MENU_SHELL (widget); - + menu_shell = GTK_MENU_SHELL (widget); + if (gtk_menu_navigating_submenu (menu, event->x_root, event->y_root)) - return TRUE; + return TRUE; gtk_menu_handle_scrolling (menu, event->x_root, event->y_root, FALSE, TRUE); event_widget = gtk_get_event_widget ((GdkEvent*) event); - + if (!GTK_IS_MENU_ITEM (event_widget)) return TRUE; - - menu_item = GTK_MENU_ITEM (event_widget); - /* Here we check to see if we're leaving an active menu item with a submenu, - * in which case we enter submenu navigation mode. + menu_item = GTK_MENU_ITEM (event_widget); + + /* Here we check to see if we're leaving an active menu item + * with a submenu, in which case we enter submenu navigation mode. */ - if (menu_shell->active_menu_item != NULL - && menu_item->submenu != NULL - && menu_item->submenu_placement == GTK_LEFT_RIGHT) + if (menu_shell->priv->active_menu_item != NULL + && menu_item->priv->submenu != NULL + && menu_item->priv->submenu_placement == GTK_LEFT_RIGHT) { - if (GTK_MENU_SHELL (menu_item->submenu)->active) - { - gtk_menu_set_submenu_navigation_region (menu, menu_item, event); - return TRUE; - } - else if (menu_item == GTK_MENU_ITEM (menu_shell->active_menu_item)) - { - /* We are leaving an active menu item with nonactive submenu. - * Deselect it so we don't surprise the user with by popping - * up a submenu _after_ he left the item. - */ - gtk_menu_shell_deselect (menu_shell); - return TRUE; - } + if (GTK_MENU_SHELL (menu_item->priv->submenu)->priv->active) + { + gtk_menu_set_submenu_navigation_region (menu, menu_item, event); + return TRUE; + } + else if (menu_item == GTK_MENU_ITEM (menu_shell->priv->active_menu_item)) + { + /* We are leaving an active menu item with nonactive submenu. + * Deselect it so we don't surprise the user with by popping + * up a submenu _after_ he left the item. + */ + gtk_menu_shell_deselect (menu_shell); + return TRUE; + } } - - return GTK_WIDGET_CLASS (gtk_menu_parent_class)->leave_notify_event (widget, event); + + return GTK_WIDGET_CLASS (gtk_menu_parent_class)->leave_notify_event (widget, event); } -static void +static void gtk_menu_stop_navigating_submenu (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; priv->navigation_x = 0; priv->navigation_y = 0; priv->navigation_width = 0; priv->navigation_height = 0; - if (menu->navigation_timeout) + if (priv->navigation_timeout) { - g_source_remove (menu->navigation_timeout); - menu->navigation_timeout = 0; + g_source_remove (priv->navigation_timeout); + priv->navigation_timeout = 0; } } @@ -4339,50 +4481,50 @@ gtk_menu_stop_navigating_submenu_cb (gpointer user_data) { GtkMenuPopdownData *popdown_data = user_data; GtkMenu *menu = popdown_data->menu; + GtkMenuPrivate *priv = menu->priv; GdkWindow *child_window; gtk_menu_stop_navigating_submenu (menu); - + if (gtk_widget_get_realized (GTK_WIDGET (menu))) { - child_window = gdk_window_get_device_position (menu->bin_window, + child_window = gdk_window_get_device_position (priv->bin_window, popdown_data->device, NULL, NULL, NULL); if (child_window) - { - GdkEvent *send_event = gdk_event_new (GDK_ENTER_NOTIFY); + { + GdkEvent *send_event = gdk_event_new (GDK_ENTER_NOTIFY); - send_event->crossing.window = g_object_ref (child_window); - send_event->crossing.time = GDK_CURRENT_TIME; /* Bogus */ - send_event->crossing.send_event = TRUE; + send_event->crossing.window = g_object_ref (child_window); + send_event->crossing.time = GDK_CURRENT_TIME; /* Bogus */ + send_event->crossing.send_event = TRUE; gdk_event_set_device (send_event, popdown_data->device); - GTK_WIDGET_CLASS (gtk_menu_parent_class)->enter_notify_event (GTK_WIDGET (menu), (GdkEventCrossing *)send_event); + GTK_WIDGET_CLASS (gtk_menu_parent_class)->enter_notify_event (GTK_WIDGET (menu), (GdkEventCrossing *)send_event); - gdk_event_free (send_event); - } + gdk_event_free (send_event); + } } - return FALSE; + return FALSE; } static gboolean gtk_menu_navigating_submenu (GtkMenu *menu, - gint event_x, - gint event_y) + gint event_x, + gint event_y) { - GtkMenuPrivate *priv; - int width, height; + GtkMenuPrivate *priv = menu->priv; + gint width, height; if (!gtk_menu_has_navigation_triangle (menu)) return FALSE; - priv = gtk_menu_get_private (menu); width = priv->navigation_width; height = priv->navigation_height; - /* check if x/y are in the triangle spanned by the navigation parameters */ + /* Check if x/y are in the triangle spanned by the navigation parameters */ /* 1) Move the coordinates so the triangle starts at 0,0 */ event_x -= priv->navigation_x; @@ -4417,9 +4559,10 @@ gtk_menu_navigating_submenu (GtkMenu *menu, static void gtk_menu_set_submenu_navigation_region (GtkMenu *menu, - GtkMenuItem *menu_item, - GdkEventCrossing *event) + GtkMenuItem *menu_item, + GdkEventCrossing *event) { + GtkMenuPrivate *priv = menu->priv; gint submenu_left = 0; gint submenu_right = 0; gint submenu_top = 0; @@ -4428,17 +4571,14 @@ gtk_menu_set_submenu_navigation_region (GtkMenu *menu, gint height = 0; GtkWidget *event_widget; GtkMenuPopdownData *popdown_data; - GtkMenuPrivate *priv; GdkWindow *window; - g_return_if_fail (menu_item->submenu != NULL); + g_return_if_fail (menu_item->priv->submenu != NULL); g_return_if_fail (event != NULL); - - priv = gtk_menu_get_private (menu); event_widget = gtk_get_event_widget ((GdkEvent*) event); - window = gtk_widget_get_window (menu_item->submenu); + window = gtk_widget_get_window (menu_item->priv->submenu); gdk_window_get_origin (window, &submenu_left, &submenu_top); submenu_right = submenu_left + gdk_window_get_width (window); @@ -4450,55 +4590,54 @@ gtk_menu_set_submenu_navigation_region (GtkMenu *menu, if (event->x >= 0 && event->x < width) { gint popdown_delay; - + gtk_menu_stop_navigating_submenu (menu); /* The navigation region is the triangle closest to the x/y * location of the rectangle. This is why the width or height * can be negative. */ - - if (menu_item->submenu_direction == GTK_DIRECTION_RIGHT) - { - /* right */ + if (menu_item->priv->submenu_direction == GTK_DIRECTION_RIGHT) + { + /* right */ priv->navigation_x = submenu_left; priv->navigation_width = event->x_root - submenu_left; - } + } else - { - /* left */ + { + /* left */ priv->navigation_x = submenu_right; priv->navigation_width = event->x_root - submenu_right; - } + } if (event->y < 0) - { - /* top */ + { + /* top */ priv->navigation_y = event->y_root; priv->navigation_height = submenu_top - event->y_root - NAVIGATION_REGION_OVERSHOOT; - if (priv->navigation_height >= 0) - return; - } + if (priv->navigation_height >= 0) + return; + } else - { - /* bottom */ + { + /* bottom */ priv->navigation_y = event->y_root; priv->navigation_height = submenu_bottom - event->y_root + NAVIGATION_REGION_OVERSHOOT; - if (priv->navigation_height <= 0) - return; - } + if (priv->navigation_height <= 0) + return; + } g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu)), - "gtk-menu-popdown-delay", &popdown_delay, - NULL); + "gtk-menu-popdown-delay", &popdown_delay, + NULL); popdown_data = g_new (GtkMenuPopdownData, 1); popdown_data->menu = menu; popdown_data->device = gdk_event_get_device ((GdkEvent *) event); - menu->navigation_timeout = gdk_threads_add_timeout_full (G_PRIORITY_DEFAULT, + priv->navigation_timeout = gdk_threads_add_timeout_full (G_PRIORITY_DEFAULT, popdown_delay, gtk_menu_stop_navigating_submenu_cb, popdown_data, @@ -4510,14 +4649,14 @@ static void gtk_menu_deactivate (GtkMenuShell *menu_shell) { GtkWidget *parent; - + g_return_if_fail (GTK_IS_MENU (menu_shell)); - - parent = menu_shell->parent_menu_shell; - - menu_shell->activate_time = 0; + + parent = menu_shell->priv->parent_menu_shell; + + menu_shell->priv->activate_time = 0; gtk_menu_popdown (GTK_MENU (menu_shell)); - + if (parent) gtk_menu_shell_deactivate (GTK_MENU_SHELL (parent)); } @@ -4526,9 +4665,9 @@ static void gtk_menu_position (GtkMenu *menu, gboolean set_scroll_offset) { + GtkMenuPrivate *priv = menu->priv; GtkWidget *widget; GtkRequisition requisition; - GtkMenuPrivate *private; gint x, y; gint scroll_offset; gint menu_height; @@ -4537,17 +4676,14 @@ gtk_menu_position (GtkMenu *menu, GdkRectangle monitor; GdkDevice *pointer; - g_return_if_fail (GTK_IS_MENU (menu)); - widget = GTK_WIDGET (menu); screen = gtk_widget_get_screen (widget); pointer = _gtk_menu_shell_get_grab_device (GTK_MENU_SHELL (menu)); - gdk_display_get_device_state (gdk_screen_get_display (screen), - pointer, &pointer_screen, &x, &y, NULL); + gdk_device_get_position (pointer, &pointer_screen, &x, &y); - /* Get the minimum height for minimum width to figure out - * the right place to popup the menu. + /* Get the minimum height for minimum width to figure out + * the right place to popup the menu. */ gtk_widget_get_preferred_size (widget, &requisition, NULL); @@ -4562,24 +4698,24 @@ gtk_menu_position (GtkMenu *menu, y = MAX (0, (gdk_screen_get_height (screen) - requisition.height) / 2); } - private = gtk_menu_get_private (menu); - private->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y); + priv->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y); + priv->initially_pushed_in = FALSE; - private->initially_pushed_in = FALSE; + /* Set the type hint here to allow custom position functions + * to set a different hint + */ + if (!gtk_widget_get_visible (priv->toplevel)) + gtk_window_set_type_hint (GTK_WINDOW (priv->toplevel), GDK_WINDOW_TYPE_HINT_POPUP_MENU); - /* Set the type hint here to allow custom position functions to set a different hint */ - if (!gtk_widget_get_visible (menu->toplevel)) - gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel), GDK_WINDOW_TYPE_HINT_POPUP_MENU); - - if (menu->position_func) + if (priv->position_func) { - (* menu->position_func) (menu, &x, &y, &private->initially_pushed_in, - menu->position_func_data); + (* priv->position_func) (menu, &x, &y, &priv->initially_pushed_in, + priv->position_func_data); - if (private->monitor_num < 0) - private->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y); + if (priv->monitor_num < 0) + priv->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y); - gdk_screen_get_monitor_geometry (screen, private->monitor_num, &monitor); + gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor); } else { @@ -4596,10 +4732,10 @@ gtk_menu_position (GtkMenu *menu, * * - If there is enough room to the right (left) of the mouse cursor, * position the menu there. - * - * - Otherwise, if if there is enough room to the left (right) of the + * + * - Otherwise, if if there is enough room to the left (right) of the * mouse cursor, position the menu there. - * + * * - Otherwise if the menu is smaller than the monitor, position it * on the side of the mouse cursor that has the most space available * @@ -4609,129 +4745,130 @@ gtk_menu_position (GtkMenu *menu, * Positioning in the vertical direction is similar: first try below * mouse cursor, then above. */ - gdk_screen_get_monitor_geometry (screen, private->monitor_num, &monitor); + gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor); space_left = x - monitor.x; space_right = monitor.x + monitor.width - x - 1; space_above = y - monitor.y; space_below = monitor.y + monitor.height - y - 1; - /* position horizontally */ + /* Position horizontally. */ - /* the amount of space we need to position the menu. Note the - * menu is offset "thickness" pixels + /* the amount of space we need to position the menu. + * Note the menu is offset "thickness" pixels */ needed_width = requisition.width - border.left; if (needed_width <= space_left || - needed_width <= space_right) - { - if ((rtl && needed_width <= space_left) || - (!rtl && needed_width > space_right)) - { - /* position left */ - x = x + border.left - requisition.width + 1; - } - else - { - /* position right */ - x = x - border.right; - } + needed_width <= space_right) + { + if ((rtl && needed_width <= space_left) || + (!rtl && needed_width > space_right)) + { + /* position left */ + x = x + border.left - requisition.width + 1; + } + else + { + /* position right */ + x = x - border.right; + } - /* x is clamped on-screen further down */ - } + /* x is clamped on-screen further down */ + } else if (requisition.width <= monitor.width) - { - /* the menu is too big to fit on either side of the mouse - * cursor, but smaller than the monitor. Position it on - * the side that has the most space - */ - if (space_left > space_right) - { - /* left justify */ - x = monitor.x; - } - else - { - /* right justify */ - x = monitor.x + monitor.width - requisition.width; - } - } + { + /* the menu is too big to fit on either side of the mouse + * cursor, but smaller than the monitor. Position it on + * the side that has the most space + */ + if (space_left > space_right) + { + /* left justify */ + x = monitor.x; + } + else + { + /* right justify */ + x = monitor.x + monitor.width - requisition.width; + } + } else /* menu is simply too big for the monitor */ - { - if (rtl) - { - /* right justify */ - x = monitor.x + monitor.width - requisition.width; - } - else - { - /* left justify */ - x = monitor.x; - } - } + { + if (rtl) + { + /* right justify */ + x = monitor.x + monitor.width - requisition.width; + } + else + { + /* left justify */ + x = monitor.x; + } + } - /* Position vertically. The algorithm is the same as above, but - * simpler because we don't have to take RTL into account. + /* Position vertically. + * The algorithm is the same as above, but simpler + * because we don't have to take RTL into account. */ needed_height = requisition.height - border.top; if (needed_height <= space_above || - needed_height <= space_below) - { - if (needed_height <= space_below) - y = y - border.top; - else - y = y + border.bottom - requisition.height + 1; - - y = CLAMP (y, monitor.y, - monitor.y + monitor.height - requisition.height); - } + needed_height <= space_below) + { + if (needed_height <= space_below) + y = y - border.top; + else + y = y + border.bottom - requisition.height + 1; + + y = CLAMP (y, monitor.y, + monitor.y + monitor.height - requisition.height); + } else if (needed_height > space_below && needed_height > space_above) - { - if (space_below >= space_above) - y = monitor.y + monitor.height - requisition.height; - else - y = monitor.y; - } + { + if (space_below >= space_above) + y = monitor.y + monitor.height - requisition.height; + else + y = monitor.y; + } else - { - y = monitor.y; - } + { + y = monitor.y; + } } scroll_offset = 0; - if (private->initially_pushed_in) + if (priv->initially_pushed_in) { menu_height = requisition.height; if (y + menu_height > monitor.y + monitor.height) - { - scroll_offset -= y + menu_height - (monitor.y + monitor.height); - y = (monitor.y + monitor.height) - menu_height; - } - + { + scroll_offset -= y + menu_height - (monitor.y + monitor.height); + y = (monitor.y + monitor.height) - menu_height; + } + if (y < monitor.y) - { - scroll_offset += monitor.y - y; - y = monitor.y; - } + { + scroll_offset += monitor.y - y; + y = monitor.y; + } } /* FIXME: should this be done in the various position_funcs ? */ x = CLAMP (x, monitor.x, MAX (monitor.x, monitor.x + monitor.width - requisition.width)); - - if (GTK_MENU_SHELL (menu)->active) + + if (GTK_MENU_SHELL (menu)->priv->active) { - private->have_position = TRUE; - private->x = x; - private->y = y; + priv->have_position = TRUE; + priv->position_x = x; + priv->position_y = y; } - + if (y + requisition.height > monitor.y + monitor.height) requisition.height = (monitor.y + monitor.height) - y; - + if (y < monitor.y) { scroll_offset += monitor.y - y; @@ -4746,53 +4883,56 @@ gtk_menu_position (GtkMenu *menu, get_arrows_border (menu, &arrow_border); scroll_offset += arrow_border.top; } - - gtk_window_move (GTK_WINDOW (GTK_MENU_SHELL (menu)->active ? menu->toplevel : menu->tearoff_window), - x, y); - if (!GTK_MENU_SHELL (menu)->active) + gtk_window_move (GTK_WINDOW (GTK_MENU_SHELL (menu)->priv->active ? priv->toplevel : priv->tearoff_window), + x, y); + + if (!GTK_MENU_SHELL (menu)->priv->active) { - gtk_window_resize (GTK_WINDOW (menu->tearoff_window), - requisition.width, requisition.height); + gtk_window_resize (GTK_WINDOW (priv->tearoff_window), + requisition.width, requisition.height); } if (set_scroll_offset) - menu->scroll_offset = scroll_offset; + priv->scroll_offset = scroll_offset; } static void gtk_menu_remove_scroll_timeout (GtkMenu *menu) { - if (menu->timeout_id) + GtkMenuPrivate *priv = menu->priv; + + if (priv->scroll_timeout) { - g_source_remove (menu->timeout_id); - menu->timeout_id = 0; + g_source_remove (priv->scroll_timeout); + priv->scroll_timeout = 0; } } static void gtk_menu_stop_scrolling (GtkMenu *menu) { + GtkMenuPrivate *priv = menu->priv; gboolean touchscreen_mode; gtk_menu_remove_scroll_timeout (menu); g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu)), - "gtk-touchscreen-mode", &touchscreen_mode, - NULL); + "gtk-touchscreen-mode", &touchscreen_mode, + NULL); if (!touchscreen_mode) { - menu->upper_arrow_prelight = FALSE; - menu->lower_arrow_prelight = FALSE; + priv->upper_arrow_prelight = FALSE; + priv->lower_arrow_prelight = FALSE; } } static void gtk_menu_scroll_to (GtkMenu *menu, - gint offset) + gint offset) { - GtkMenuPrivate *priv; + GtkMenuPrivate *priv = menu->priv; GtkAllocation allocation; GtkBorder arrow_border, border; GtkWidget *widget; @@ -4805,18 +4945,10 @@ gtk_menu_scroll_to (GtkMenu *menu, gboolean double_arrows; widget = GTK_WIDGET (menu); - priv = gtk_menu_get_private (menu); - if (menu->tearoff_active && - menu->tearoff_adjustment && - (menu->tearoff_adjustment->value != offset)) - { - menu->tearoff_adjustment->value = - CLAMP (offset, - 0, menu->tearoff_adjustment->upper - menu->tearoff_adjustment->page_size); - gtk_adjustment_value_changed (menu->tearoff_adjustment); - } - + if (priv->tearoff_active && priv->tearoff_adjustment) + gtk_adjustment_set_value (priv->tearoff_adjustment, offset); + /* Move/resize the viewport according to arrows: */ gtk_widget_get_allocation (widget, &allocation); view_width = allocation.width; @@ -4840,25 +4972,24 @@ gtk_menu_scroll_to (GtkMenu *menu, x = border_width + border.left + horizontal_padding; y = border_width + border.top + vertical_padding; - if (double_arrows && !menu->tearoff_active) + if (double_arrows && !priv->tearoff_active) { if (view_height < menu_height || - (offset > 0 && menu->scroll_offset > 0) || - (offset < 0 && menu->scroll_offset < 0)) + (offset > 0 && priv->scroll_offset > 0) || + (offset < 0 && priv->scroll_offset < 0)) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); - GtkStateFlags upper_arrow_previous_state = priv->upper_arrow_state; - GtkStateFlags lower_arrow_previous_state = priv->lower_arrow_state; + GtkStateFlags upper_arrow_previous_state = priv->upper_arrow_state; + GtkStateFlags lower_arrow_previous_state = priv->lower_arrow_state; - if (!menu->upper_arrow_visible || !menu->lower_arrow_visible) + if (!priv->upper_arrow_visible || !priv->lower_arrow_visible) gtk_widget_queue_draw (GTK_WIDGET (menu)); - menu->upper_arrow_visible = menu->lower_arrow_visible = TRUE; + priv->upper_arrow_visible = priv->lower_arrow_visible = TRUE; - get_arrows_border (menu, &arrow_border); - y += arrow_border.top; - view_height -= arrow_border.top; - view_height -= arrow_border.bottom; + get_arrows_border (menu, &arrow_border); + y += arrow_border.top; + view_height -= arrow_border.top; + view_height -= arrow_border.bottom; if (offset <= 0) priv->upper_arrow_state |= GTK_STATE_FLAG_INSENSITIVE; @@ -4866,7 +4997,7 @@ gtk_menu_scroll_to (GtkMenu *menu, { priv->upper_arrow_state &= ~(GTK_STATE_FLAG_INSENSITIVE); - if (menu->upper_arrow_prelight) + if (priv->upper_arrow_prelight) priv->upper_arrow_state |= GTK_STATE_FLAG_PRELIGHT; else priv->upper_arrow_state &= ~(GTK_STATE_FLAG_PRELIGHT); @@ -4878,7 +5009,7 @@ gtk_menu_scroll_to (GtkMenu *menu, { priv->lower_arrow_state &= ~(GTK_STATE_FLAG_INSENSITIVE); - if (menu->lower_arrow_prelight) + if (priv->lower_arrow_prelight) priv->lower_arrow_state |= GTK_STATE_FLAG_PRELIGHT; else priv->lower_arrow_state &= ~(GTK_STATE_FLAG_PRELIGHT); @@ -4892,7 +5023,7 @@ gtk_menu_scroll_to (GtkMenu *menu, (priv->upper_arrow_state & GTK_STATE_FLAG_INSENSITIVE) != 0) { /* At the upper border, possibly remove timeout */ - if (menu->scroll_step < 0) + if (priv->scroll_step < 0) { gtk_menu_stop_scrolling (menu); gtk_widget_queue_draw (GTK_WIDGET (menu)); @@ -4903,103 +5034,99 @@ gtk_menu_scroll_to (GtkMenu *menu, (priv->lower_arrow_state & GTK_STATE_FLAG_INSENSITIVE) != 0) { /* At the lower border, possibly remove timeout */ - if (menu->scroll_step > 0) + if (priv->scroll_step > 0) { gtk_menu_stop_scrolling (menu); gtk_widget_queue_draw (GTK_WIDGET (menu)); } } } - else if (menu->upper_arrow_visible || menu->lower_arrow_visible) + else if (priv->upper_arrow_visible || priv->lower_arrow_visible) { offset = 0; - menu->upper_arrow_visible = menu->lower_arrow_visible = FALSE; - menu->upper_arrow_prelight = menu->lower_arrow_prelight = FALSE; + priv->upper_arrow_visible = priv->lower_arrow_visible = FALSE; + priv->upper_arrow_prelight = priv->lower_arrow_prelight = FALSE; gtk_menu_stop_scrolling (menu); gtk_widget_queue_draw (GTK_WIDGET (menu)); } } - else if (!menu->tearoff_active) + else if (!priv->tearoff_active) { gboolean last_visible; - last_visible = menu->upper_arrow_visible; - menu->upper_arrow_visible = offset > 0; - + last_visible = priv->upper_arrow_visible; + priv->upper_arrow_visible = offset > 0; + /* upper_arrow_visible may have changed, so requery the border */ get_arrows_border (menu, &arrow_border); view_height -= arrow_border.top; - - if ((last_visible != menu->upper_arrow_visible) && - !menu->upper_arrow_visible) - { - menu->upper_arrow_prelight = FALSE; - /* If we hid the upper arrow, possibly remove timeout */ - if (menu->scroll_step < 0) - { - gtk_menu_stop_scrolling (menu); - gtk_widget_queue_draw (GTK_WIDGET (menu)); - } - } + if ((last_visible != priv->upper_arrow_visible) && + !priv->upper_arrow_visible) + { + priv->upper_arrow_prelight = FALSE; + + /* If we hide the upper arrow, possibly remove timeout */ + if (priv->scroll_step < 0) + { + gtk_menu_stop_scrolling (menu); + gtk_widget_queue_draw (GTK_WIDGET (menu)); + } + } + + last_visible = priv->lower_arrow_visible; + priv->lower_arrow_visible = offset < menu_height - view_height; - last_visible = menu->lower_arrow_visible; - menu->lower_arrow_visible = offset < menu_height - view_height; - /* lower_arrow_visible may have changed, so requery the border */ get_arrows_border (menu, &arrow_border); view_height -= arrow_border.bottom; - - if ((last_visible != menu->lower_arrow_visible) && - !menu->lower_arrow_visible) - { - menu->lower_arrow_prelight = FALSE; - /* If we hid the lower arrow, possibly remove timeout */ - if (menu->scroll_step > 0) - { - gtk_menu_stop_scrolling (menu); - gtk_widget_queue_draw (GTK_WIDGET (menu)); - } - } - + if ((last_visible != priv->lower_arrow_visible) && + !priv->lower_arrow_visible) + { + priv->lower_arrow_prelight = FALSE; + + /* If we hide the lower arrow, possibly remove timeout */ + if (priv->scroll_step > 0) + { + gtk_menu_stop_scrolling (menu); + gtk_widget_queue_draw (GTK_WIDGET (menu)); + } + } + y += arrow_border.top; } /* Scroll the menu: */ if (gtk_widget_get_realized (widget)) - gdk_window_move (menu->bin_window, 0, -offset); + gdk_window_move (priv->bin_window, 0, -offset); if (gtk_widget_get_realized (widget)) - gdk_window_move_resize (menu->view_window, - x, - y, - view_width, - view_height); + gdk_window_move_resize (priv->view_window, x, y, view_width, view_height); - menu->scroll_offset = offset; + priv->scroll_offset = offset; } static gboolean compute_child_offset (GtkMenu *menu, - GtkWidget *menu_item, - gint *offset, - gint *height, - gboolean *is_last_child) + GtkWidget *menu_item, + gint *offset, + gint *height, + gboolean *is_last_child) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; gint item_top_attach; gint item_bottom_attach; gint child_offset = 0; gint i; get_effective_child_attach (menu_item, NULL, NULL, - &item_top_attach, &item_bottom_attach); + &item_top_attach, &item_bottom_attach); - /* there is a possibility that we get called before _size_request, so - * check the height table for safety. + /* there is a possibility that we get called before _size_request, + * so check the height table for safety. */ if (!priv->heights || priv->heights_length < gtk_menu_get_n_rows (menu)) return FALSE; @@ -5022,9 +5149,10 @@ compute_child_offset (GtkMenu *menu, static void gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell, - GtkWidget *menu_item) + GtkWidget *menu_item) { GtkMenu *menu = GTK_MENU (menu_shell); + GtkMenuPrivate *priv = menu->priv; GtkWidget *widget = GTK_WIDGET (menu_shell); gint child_offset, child_height; gint width, height; @@ -5038,67 +5166,75 @@ gtk_menu_scroll_item_visible (GtkMenuShell *menu_shell, */ if (compute_child_offset (menu, menu_item, - &child_offset, &child_height, &last_child)) + &child_offset, &child_height, &last_child)) { guint vertical_padding; gboolean double_arrows; - - y = menu->scroll_offset; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; + + y = priv->scroll_offset; width = gdk_window_get_width (gtk_widget_get_window (widget)); height = gdk_window_get_height (gtk_widget_get_window (widget)); gtk_widget_style_get (widget, - "vertical-padding", &vertical_padding, + "vertical-padding", &vertical_padding, NULL); double_arrows = get_double_arrows (menu); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + height -= 2 * gtk_container_get_border_width (GTK_CONTAINER (menu)) + - 2 * gtk_widget_get_style (widget)->ythickness + + padding.top + padding.bottom + 2 * vertical_padding; if (child_offset < y) - { - /* Ignore the enter event we might get if the pointer is on the menu - */ - menu_shell->ignore_enter = TRUE; - gtk_menu_scroll_to (menu, child_offset); - } + { + /* Ignore the enter event we might get if the pointer + * is on the menu + */ + menu_shell->priv->ignore_enter = TRUE; + gtk_menu_scroll_to (menu, child_offset); + } else - { + { GtkBorder arrow_border; arrow_height = 0; get_arrows_border (menu, &arrow_border); - if (!menu->tearoff_active) + if (!priv->tearoff_active) arrow_height = arrow_border.top + arrow_border.bottom; - - if (child_offset + child_height > y + height - arrow_height) - { - arrow_height = 0; - if ((!last_child && !menu->tearoff_active) || double_arrows) - arrow_height += arrow_border.bottom; - y = child_offset + child_height - height + arrow_height; - if (((y > 0) && !menu->tearoff_active) || double_arrows) - { - /* Need upper arrow */ - arrow_height += arrow_border.top; - y = child_offset + child_height - height + arrow_height; - } - /* Ignore the enter event we might get if the pointer is on the menu - */ - menu_shell->ignore_enter = TRUE; - gtk_menu_scroll_to (menu, y); - } - } - + if (child_offset + child_height > y + height - arrow_height) + { + arrow_height = 0; + if ((!last_child && !priv->tearoff_active) || double_arrows) + arrow_height += arrow_border.bottom; + + y = child_offset + child_height - height + arrow_height; + if (((y > 0) && !priv->tearoff_active) || double_arrows) + { + /* Need upper arrow */ + arrow_height += arrow_border.top; + y = child_offset + child_height - height + arrow_height; + } + /* Ignore the enter event we might get if the pointer + * is on the menu + */ + menu_shell->priv->ignore_enter = TRUE; + gtk_menu_scroll_to (menu, y); + } + } } } static void gtk_menu_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item) + GtkWidget *menu_item) { GtkMenu *menu = GTK_MENU (menu_shell); @@ -5117,19 +5253,19 @@ gtk_menu_select_item (GtkMenuShell *menu_shell, * What happens is that when the menu is unrealized and then re-realized, * the allocations are as follows: * - * parent - 1x1 at (0,0) + * parent - 1x1 at (0,0) * child1 - 100x20 at (0,0) * child2 - 100x20 at (0,20) * child3 - 100x20 at (0,40) * * That is, the parent is small but the children are full sized. Then, * when the queued_resize gets processed, the parent gets resized to - * full size. + * full size. * * But in order to eliminate flicker when scrolling, gdkgeometry-x11.c * contains the following logic: - * - * - if a move or resize operation on a window would change the clip + * + * - if a move or resize operation on a window would change the clip * region on the children, then before the window is resized * the background for children is temporarily set to None, the * move/resize done, and the background for the children restored. @@ -5139,7 +5275,7 @@ gtk_menu_select_item (GtkMenuShell *menu_shell, * are not cleared to the background color and the previous background * (the image of the menu) is left in place. */ -static void +static void gtk_menu_reparent (GtkMenu *menu, GtkWidget *new_parent, gboolean unrealize) @@ -5175,20 +5311,20 @@ gtk_menu_show_all (GtkWidget *widget) /** * gtk_menu_set_screen: - * @menu: a #GtkMenu. + * @menu: a #GtkMenu * @screen: (allow-none): a #GdkScreen, or %NULL if the screen should be - * determined by the widget the menu is attached to. + * determined by the widget the menu is attached to * * Sets the #GdkScreen on which the menu will be displayed. * * Since: 2.2 - **/ + */ void -gtk_menu_set_screen (GtkMenu *menu, - GdkScreen *screen) +gtk_menu_set_screen (GtkMenu *menu, + GdkScreen *screen) { g_return_if_fail (GTK_IS_MENU (menu)); - g_return_if_fail (!screen || GDK_IS_SCREEN (screen)); + g_return_if_fail (screen == NULL || GDK_IS_SCREEN (screen)); g_object_set_data (G_OBJECT (menu), I_("gtk-menu-explicit-screen"), screen); @@ -5200,18 +5336,18 @@ gtk_menu_set_screen (GtkMenu *menu, { GtkWidget *attach_widget = gtk_menu_get_attach_widget (menu); if (attach_widget) - attach_widget_screen_changed (attach_widget, NULL, menu); + attach_widget_screen_changed (attach_widget, NULL, menu); } } /** * gtk_menu_attach: - * @menu: a #GtkMenu. - * @child: a #GtkMenuItem. - * @left_attach: The column number to attach the left side of the item to. - * @right_attach: The column number to attach the right side of the item to. - * @top_attach: The row number to attach the top of the item to. - * @bottom_attach: The row number to attach the bottom of the item to. + * @menu: a #GtkMenu + * @child: a #GtkMenuItem + * @left_attach: The column number to attach the left side of the item to + * @right_attach: The column number to attach the right side of the item to + * @top_attach: The row number to attach the top of the item to + * @bottom_attach: The row number to attach the bottom of the item to * * Adds a new #GtkMenuItem to a (table) menu. The number of 'cells' that * an item will occupy is specified by @left_attach, @right_attach, @@ -5222,7 +5358,7 @@ gtk_menu_set_screen (GtkMenu *menu, * Note that this function is not related to gtk_menu_detach(). * * Since: 2.4 - **/ + */ void gtk_menu_attach (GtkMenu *menu, GtkWidget *child, @@ -5246,13 +5382,13 @@ gtk_menu_attach (GtkMenu *menu, if (!parent) { AttachInfo *ai = get_attach_info (child); - + ai->left_attach = left_attach; ai->right_attach = right_attach; ai->top_attach = top_attach; ai->bottom_attach = bottom_attach; - - menu_shell->children = g_list_append (menu_shell->children, child); + + menu_shell->priv->children = g_list_append (menu_shell->priv->children, child); gtk_widget_set_parent (child, GTK_WIDGET (menu)); @@ -5261,11 +5397,11 @@ gtk_menu_attach (GtkMenu *menu, else { gtk_container_child_set (GTK_CONTAINER (parent), child, - "left-attach", left_attach, - "right-attach", right_attach, - "top-attach", top_attach, - "bottom-attach", bottom_attach, - NULL); + "left-attach", left_attach, + "right-attach", right_attach, + "top-attach", top_attach, + "bottom-attach", bottom_attach, + NULL); } } @@ -5275,8 +5411,8 @@ gtk_menu_get_popup_delay (GtkMenuShell *menu_shell) gint popup_delay; g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)), - "gtk-menu-popup-delay", &popup_delay, - NULL); + "gtk-menu-popup-delay", &popup_delay, + NULL); return popup_delay; } @@ -5293,8 +5429,7 @@ find_child_containing (GtkMenuShell *menu_shell, /* find a child which includes the area given by * left, right, top, bottom. */ - - for (list = menu_shell->children; list; list = list->next) + for (list = menu_shell->priv->children; list; list = list->next) { gint l, r, t, b; @@ -5303,8 +5438,7 @@ find_child_containing (GtkMenuShell *menu_shell, get_effective_child_attach (list->data, &l, &r, &t, &b); - if (l <= left && right <= r - && t <= top && bottom <= b) + if (l <= left && right <= r && t <= top && bottom <= b) return GTK_WIDGET (list->data); } @@ -5323,99 +5457,101 @@ gtk_menu_move_current (GtkMenuShell *menu_shell, if (gtk_widget_get_direction (GTK_WIDGET (menu_shell)) == GTK_TEXT_DIR_RTL) { switch (direction) - { - case GTK_MENU_DIR_CHILD: - direction = GTK_MENU_DIR_PARENT; - break; - case GTK_MENU_DIR_PARENT: - direction = GTK_MENU_DIR_CHILD; - break; - default: ; - } + { + case GTK_MENU_DIR_CHILD: + direction = GTK_MENU_DIR_PARENT; + break; + case GTK_MENU_DIR_PARENT: + direction = GTK_MENU_DIR_CHILD; + break; + default: ; + } } /* use special table menu key bindings */ - if (menu_shell->active_menu_item && gtk_menu_get_n_columns (menu) > 1) + if (menu_shell->priv->active_menu_item && gtk_menu_get_n_columns (menu) > 1) { - get_effective_child_attach (menu_shell->active_menu_item, &l, &r, &t, &b); + get_effective_child_attach (menu_shell->priv->active_menu_item, &l, &r, &t, &b); if (direction == GTK_MENU_DIR_NEXT) { - for (i = b; i < gtk_menu_get_n_rows (menu); i++) + for (i = b; i < gtk_menu_get_n_rows (menu); i++) { match = find_child_containing (menu_shell, l, l + 1, i, i + 1); if (match) break; } - if (!match) - { - /* wrap around */ - for (i = 0; i < t; i++) - { + if (!match) + { + /* wrap around */ + for (i = 0; i < t; i++) + { match = find_child_containing (menu_shell, l, l + 1, i, i + 1); if (match) break; - } - } - } + } + } + } else if (direction == GTK_MENU_DIR_PREV) { for (i = t; i > 0; i--) { - match = find_child_containing (menu_shell, l, l + 1, i - 1, i); + match = find_child_containing (menu_shell, + l, l + 1, i - 1, i); if (match) break; } - if (!match) - { - /* wrap around */ - for (i = gtk_menu_get_n_rows (menu); i > b; i--) - { + if (!match) + { + /* wrap around */ + for (i = gtk_menu_get_n_rows (menu); i > b; i--) + { match = find_child_containing (menu_shell, l, l + 1, i - 1, i); if (match) - break; - } - } - } + break; + } + } + } else if (direction == GTK_MENU_DIR_PARENT) { /* we go one left if possible */ if (l > 0) - match = find_child_containing (menu_shell, l - 1, l, t, t + 1); + match = find_child_containing (menu_shell, + l - 1, l, t, t + 1); if (!match) { - GtkWidget *parent = menu_shell->parent_menu_shell; + GtkWidget *parent = menu_shell->priv->parent_menu_shell; if (!parent - || g_list_length (GTK_MENU_SHELL (parent)->children) <= 1) - match = menu_shell->active_menu_item; + || g_list_length (GTK_MENU_SHELL (parent)->priv->children) <= 1) + match = menu_shell->priv->active_menu_item; } } else if (direction == GTK_MENU_DIR_CHILD) { /* we go one right if possible */ - if (r < gtk_menu_get_n_columns (menu)) + if (r < gtk_menu_get_n_columns (menu)) match = find_child_containing (menu_shell, r, r + 1, t, t + 1); if (!match) { - GtkWidget *parent = menu_shell->parent_menu_shell; + GtkWidget *parent = menu_shell->priv->parent_menu_shell; - if (! GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu && + if (! GTK_MENU_ITEM (menu_shell->priv->active_menu_item)->priv->submenu && (!parent || - g_list_length (GTK_MENU_SHELL (parent)->children) <= 1)) - match = menu_shell->active_menu_item; + g_list_length (GTK_MENU_SHELL (parent)->priv->children) <= 1)) + match = menu_shell->priv->active_menu_item; } } if (match) { - gtk_menu_shell_select_item (menu_shell, match); + gtk_menu_shell_select_item (menu_shell, match); return; } } @@ -5426,17 +5562,26 @@ gtk_menu_move_current (GtkMenuShell *menu_shell, static gint get_visible_size (GtkMenu *menu) { + GtkMenuPrivate *priv = menu->priv; GtkAllocation allocation; GtkWidget *widget = GTK_WIDGET (menu); GtkContainer *container = GTK_CONTAINER (menu); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint menu_height; gtk_widget_get_allocation (widget, &allocation); - menu_height = (allocation.height - - 2 * (gtk_container_get_border_width (container) - + gtk_widget_get_style (widget)->ythickness)); - if (!menu->tearoff_active) + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + + menu_height = (allocation.height - + (2 * gtk_container_get_border_width (container)) - + padding.top - padding.bottom); + + if (!priv->tearoff_active) { GtkBorder arrow_border; @@ -5444,7 +5589,7 @@ get_visible_size (GtkMenu *menu) menu_height -= arrow_border.top; menu_height -= arrow_border.bottom; } - + return menu_height; } @@ -5453,41 +5598,42 @@ get_visible_size (GtkMenu *menu) */ static GtkWidget * child_at (GtkMenu *menu, - gint y) + gint y) { + GtkMenuPrivate *priv = menu->priv; GtkMenuShell *menu_shell = GTK_MENU_SHELL (menu); GtkWidget *child = NULL; gint child_offset = 0; GList *children; gint menu_height; - gint lower, upper; /* Onscreen bounds */ + gint lower, upper; /* Onscreen bounds */ menu_height = get_visible_size (menu); - lower = menu->scroll_offset; - upper = menu->scroll_offset + menu_height; - - for (children = menu_shell->children; children; children = children->next) + lower = priv->scroll_offset; + upper = priv->scroll_offset + menu_height; + + for (children = menu_shell->priv->children; children; children = children->next) { if (gtk_widget_get_visible (children->data)) - { - GtkRequisition child_requisition; + { + GtkRequisition child_requisition; gtk_widget_get_preferred_size (children->data, &child_requisition, NULL); - if (_gtk_menu_item_is_selectable (children->data) && - child_offset >= lower && - child_offset + child_requisition.height <= upper) - { - child = children->data; - - if (child_offset + child_requisition.height > y && - !GTK_IS_TEAROFF_MENU_ITEM (child)) - return child; - } - - child_offset += child_requisition.height; - } + if (_gtk_menu_item_is_selectable (children->data) && + child_offset >= lower && + child_offset + child_requisition.height <= upper) + { + child = children->data; + + if (child_offset + child_requisition.height > y && + !GTK_IS_TEAROFF_MENU_ITEM (child)) + return child; + } + + child_offset += child_requisition.height; + } } return child; @@ -5496,16 +5642,26 @@ child_at (GtkMenu *menu, static gint get_menu_height (GtkMenu *menu) { + GtkMenuPrivate *priv = menu->priv; GtkAllocation allocation; GtkWidget *widget = GTK_WIDGET (menu); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; gint height; gtk_widget_get_allocation (widget, &allocation); - height = allocation.height; - height -= (gtk_container_get_border_width (GTK_CONTAINER (widget)) + gtk_widget_get_style (widget)->ythickness) * 2; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); - if (!menu->tearoff_active) + height = allocation.height; + height -= (gtk_container_get_border_width (GTK_CONTAINER (widget)) * 2) + + padding.top + padding.bottom + border.top + border.bottom; + + if (!priv->tearoff_active) { GtkBorder arrow_border; @@ -5519,76 +5675,74 @@ get_menu_height (GtkMenu *menu) static void gtk_menu_real_move_scroll (GtkMenu *menu, - GtkScrollType type) + GtkScrollType type) { + GtkMenuPrivate *priv = menu->priv; gint page_size = get_visible_size (menu); gint end_position = get_menu_height (menu); GtkMenuShell *menu_shell = GTK_MENU_SHELL (menu); - + switch (type) { case GTK_SCROLL_PAGE_UP: case GTK_SCROLL_PAGE_DOWN: { - gint old_offset; + gint old_offset; gint new_offset; - gint child_offset = 0; - gboolean old_upper_arrow_visible; - gint step; + gint child_offset = 0; + gboolean old_upper_arrow_visible; + gint step; - if (type == GTK_SCROLL_PAGE_UP) - step = - page_size; - else - step = page_size; + if (type == GTK_SCROLL_PAGE_UP) + step = - page_size; + else + step = page_size; - if (menu_shell->active_menu_item) - { - gint child_height; - - compute_child_offset (menu, menu_shell->active_menu_item, - &child_offset, &child_height, NULL); - child_offset += child_height / 2; - } + if (menu_shell->priv->active_menu_item) + { + gint child_height; - menu_shell->ignore_enter = TRUE; - old_upper_arrow_visible = menu->upper_arrow_visible && !menu->tearoff_active; - old_offset = menu->scroll_offset; + compute_child_offset (menu, menu_shell->priv->active_menu_item, + &child_offset, &child_height, NULL); + child_offset += child_height / 2; + } - new_offset = menu->scroll_offset + step; + menu_shell->priv->ignore_enter = TRUE; + old_upper_arrow_visible = priv->upper_arrow_visible && !priv->tearoff_active; + old_offset = priv->scroll_offset; + + new_offset = priv->scroll_offset + step; new_offset = CLAMP (new_offset, 0, end_position - page_size); gtk_menu_scroll_to (menu, new_offset); - - if (menu_shell->active_menu_item) - { - GtkWidget *new_child; - gboolean new_upper_arrow_visible = menu->upper_arrow_visible && !menu->tearoff_active; + + if (menu_shell->priv->active_menu_item) + { + GtkWidget *new_child; + gboolean new_upper_arrow_visible = priv->upper_arrow_visible && !priv->tearoff_active; GtkBorder arrow_border; + get_arrows_border (menu, &arrow_border); - get_arrows_border (menu, &arrow_border); + if (priv->scroll_offset != old_offset) + step = priv->scroll_offset - old_offset; - if (menu->scroll_offset != old_offset) - step = menu->scroll_offset - old_offset; + step -= (new_upper_arrow_visible - old_upper_arrow_visible) * arrow_border.top; - step -= (new_upper_arrow_visible - old_upper_arrow_visible) * arrow_border.top; - - new_child = child_at (menu, child_offset + step); - if (new_child) - gtk_menu_shell_select_item (menu_shell, new_child); - } + new_child = child_at (menu, child_offset + step); + if (new_child) + gtk_menu_shell_select_item (menu_shell, new_child); + } } break; case GTK_SCROLL_START: - /* Ignore the enter event we might get if the pointer is on the menu - */ - menu_shell->ignore_enter = TRUE; + /* Ignore the enter event we might get if the pointer is on the menu */ + menu_shell->priv->ignore_enter = TRUE; gtk_menu_scroll_to (menu, 0); gtk_menu_shell_select_first (menu_shell, TRUE); break; case GTK_SCROLL_END: - /* Ignore the enter event we might get if the pointer is on the menu - */ - menu_shell->ignore_enter = TRUE; + /* Ignore the enter event we might get if the pointer is on the menu */ + menu_shell->priv->ignore_enter = TRUE; gtk_menu_scroll_to (menu, end_position - page_size); _gtk_menu_shell_select_last (menu_shell, TRUE); break; @@ -5603,27 +5757,27 @@ gtk_menu_real_move_scroll (GtkMenu *menu, * @menu: a #GtkMenu * @monitor_num: the number of the monitor on which the menu should * be popped up - * - * Informs GTK+ on which monitor a menu should be popped up. + * + * Informs GTK+ on which monitor a menu should be popped up. * See gdk_screen_get_monitor_geometry(). * - * This function should be called from a #GtkMenuPositionFunc if the - * menu should not appear on the same monitor as the pointer. This - * information can't be reliably inferred from the coordinates returned - * by a #GtkMenuPositionFunc, since, for very long menus, these coordinates - * may extend beyond the monitor boundaries or even the screen boundaries. + * This function should be called from a #GtkMenuPositionFunc + * if the menu should not appear on the same monitor as the pointer. + * This information can't be reliably inferred from the coordinates + * returned by a #GtkMenuPositionFunc, since, for very long menus, + * these coordinates may extend beyond the monitor boundaries or even + * the screen boundaries. * * Since: 2.4 - **/ + */ void gtk_menu_set_monitor (GtkMenu *menu, - gint monitor_num) + gint monitor_num) { - GtkMenuPrivate *priv; + GtkMenuPrivate *priv = menu->priv; + g_return_if_fail (GTK_IS_MENU (menu)); - priv = gtk_menu_get_private (menu); - priv->monitor_num = monitor_num; } @@ -5637,16 +5791,13 @@ gtk_menu_set_monitor (GtkMenu *menu, * be popped up or -1, if no monitor has been set * * Since: 2.14 - **/ + */ gint gtk_menu_get_monitor (GtkMenu *menu) { - GtkMenuPrivate *priv; g_return_val_if_fail (GTK_IS_MENU (menu), -1); - priv = gtk_menu_get_private (menu); - - return priv->monitor_num; + return menu->priv->monitor_num; } /** @@ -5656,24 +5807,26 @@ gtk_menu_get_monitor (GtkMenu *menu) * Returns a list of the menus which are attached to this widget. * This list is owned by GTK+ and must not be modified. * - * Return value: (element-type GtkWidget) (transfer none): the list of menus attached to his widget. + * Return value: (element-type GtkWidget) (transfer none): the list + * of menus attached to his widget. * * Since: 2.6 - **/ + */ GList* gtk_menu_get_for_attach_widget (GtkWidget *widget) { GList *list; - + g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - + list = g_object_get_data (G_OBJECT (widget), ATTACHED_MENUS); + return list; } static void gtk_menu_grab_notify (GtkWidget *widget, - gboolean was_grabbed) + gboolean was_grabbed) { GtkWidget *toplevel; GtkWindowGroup *group; @@ -5694,7 +5847,7 @@ gtk_menu_grab_notify (GtkWidget *widget, group = gtk_window_get_group (GTK_WINDOW (toplevel)); grab = gtk_window_group_get_current_device_grab (group, pointer); - if (GTK_MENU_SHELL (widget)->active && !GTK_IS_MENU_SHELL (grab)) + if (GTK_MENU_SHELL (widget)->priv->active && !GTK_IS_MENU_SHELL (grab)) gtk_menu_shell_cancel (GTK_MENU_SHELL (widget)); } @@ -5703,7 +5856,7 @@ gtk_menu_grab_notify (GtkWidget *widget, * @menu: a #GtkMenu * @reserve_toggle_size: whether to reserve size for toggles * - * Sets whether the menu should reserve space for drawing toggles + * Sets whether the menu should reserve space for drawing toggles * or icons, regardless of their actual presence. * * Since: 2.18 @@ -5712,9 +5865,11 @@ void gtk_menu_set_reserve_toggle_size (GtkMenu *menu, gboolean reserve_toggle_size) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + GtkMenuPrivate *priv = menu->priv; gboolean no_toggle_size; - + + g_return_if_fail (GTK_IS_MENU (menu)); + no_toggle_size = !reserve_toggle_size; if (priv->no_toggle_size != no_toggle_size) @@ -5739,7 +5894,7 @@ gtk_menu_set_reserve_toggle_size (GtkMenu *menu, gboolean gtk_menu_get_reserve_toggle_size (GtkMenu *menu) { - GtkMenuPrivate *priv = gtk_menu_get_private (menu); + g_return_val_if_fail (GTK_IS_MENU (menu), FALSE); - return !priv->no_toggle_size; + return !menu->priv->no_toggle_size; } diff --git a/gtk/gtkmenu.h b/gtk/gtkmenu.h index fbb887b953..5f49dfbb47 100644 --- a/gtk/gtkmenu.h +++ b/gtk/gtkmenu.h @@ -46,68 +46,61 @@ G_BEGIN_DECLS #define GTK_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU, GtkMenuClass)) -typedef struct _GtkMenu GtkMenu; -typedef struct _GtkMenuClass GtkMenuClass; +typedef struct _GtkMenu GtkMenu; +typedef struct _GtkMenuClass GtkMenuClass; +typedef struct _GtkMenuPrivate GtkMenuPrivate; +/** + * GtkMenuPositionFunc: + * @menu: a #GtkMenu. + * @x: (out): address of the #gint representing the horizontal + * position where the menu shall be drawn. + * @y: (out): address of the #gint representing the vertical position + * where the menu shall be drawn. This is an output parameter. + * @push_in: (inout): This parameter controls how menus placed outside + * the monitor are handled. If this is set to %TRUE and part of + * the menu is outside the monitor then GTK+ pushes the window + * into the visible area, effectively modifying the popup + * position. Note that moving and possibly resizing the menu + * around will alter the scroll position to keep the menu items + * "in place", i.e. at the same monitor position they would have + * been without resizing. In practice, this behavior is only + * useful for combobox popups or option menus and cannot be used + * to simply confine a menu to monitor boundaries. In that case, + * changing the scroll offset is not desirable. + * @user_data: the data supplied by the user in the gtk_menu_popup() + * @data parameter. + * + * A user function supplied when calling gtk_menu_popup() which + * controls the positioning of the menu when it is displayed. The + * function sets the @x and @y parameters to the coordinates where the + * menu is to be drawn. To make the menu appear on a different + * monitor than the mouse pointer, gtk_menu_set_monitor() must be + * called. + */ typedef void (*GtkMenuPositionFunc) (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data); + +/** + * GtkMenuDetachFunc: + * @attach_widget: the #GtkWidget that the menu is being detached from. + * @menu: the #GtkMenu being detached. + * + * A user function supplied when calling gtk_menu_attach_to_widget() which + * will be called when the menu is later detached from the widget. + */ typedef void (*GtkMenuDetachFunc) (GtkWidget *attach_widget, GtkMenu *menu); struct _GtkMenu { - GtkMenuShell GSEAL (menu_shell); - - GtkWidget *GSEAL (parent_menu_item); - GtkWidget *GSEAL (old_active_menu_item); + GtkMenuShell menu_shell; - GtkAccelGroup *GSEAL (accel_group); - gchar *GSEAL (accel_path); - GtkMenuPositionFunc GSEAL (position_func); - gpointer GSEAL (position_func_data); - - guint GSEAL (toggle_size); - /* Do _not_ touch these widgets directly. We hide the reference - * count from the toplevel to the menu, so it must be restored - * before operating on these widgets - */ - GtkWidget *GSEAL (toplevel); - - GtkWidget *GSEAL (tearoff_window); - GtkWidget *GSEAL (tearoff_hbox); - GtkWidget *GSEAL (tearoff_scrollbar); - GtkAdjustment *GSEAL (tearoff_adjustment); - - GdkWindow *GSEAL (view_window); - GdkWindow *GSEAL (bin_window); - - gint GSEAL (scroll_offset); - gint GSEAL (saved_scroll_offset); - gint GSEAL (scroll_step); - guint GSEAL (timeout_id); - - /* When a submenu of this menu is popped up, motion in this - * region is ignored - */ - cairo_region_t *GSEAL (navigation_region); /* unused */ - guint GSEAL (navigation_timeout); - - guint GSEAL (needs_destruction_ref_count) : 1; - guint GSEAL (torn_off) : 1; - /* The tearoff is active when it is torn off and the not-torn-off - * menu is not popped up. - */ - guint GSEAL (tearoff_active) : 1; - - guint GSEAL (scroll_fast) : 1; - - guint GSEAL (upper_arrow_visible) : 1; - guint GSEAL (lower_arrow_visible) : 1; - guint GSEAL (upper_arrow_prelight) : 1; - guint GSEAL (lower_arrow_prelight) : 1; + /*< private >*/ + GtkMenuPrivate *priv; }; struct _GtkMenuClass @@ -155,7 +148,7 @@ void gtk_menu_popdown (GtkMenu *menu); */ GtkWidget* gtk_menu_get_active (GtkMenu *menu); void gtk_menu_set_active (GtkMenu *menu, - guint index_); + guint index); /* set/get the accelerator group that holds global accelerators (should * be added to the corresponding toplevel with gtk_window_add_accel_group(). diff --git a/gtk/gtkmenubar.c b/gtk/gtkmenubar.c index bb482844d7..b35ec0ca89 100644 --- a/gtk/gtkmenubar.c +++ b/gtk/gtkmenubar.c @@ -24,22 +24,33 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkmenubar + * @Title: GtkMenuBar + * @Short_description: A subclass of GtkMenuShell which holds GtkMenuItem widgets + * @See_also: #GtkMenuShell, #GtkMenu, #GtkMenuItem + * + * The #GtkMenuBar is a subclass of #GtkMenuShell which contains one or + * more #GtkMenuItems. The result is a standard menu bar which can hold + * many menu items. + */ + #include "config.h" #include "gtkmenubar.h" -#include "gdk/gdkkeysyms.h" #include "gtkbindings.h" #include "gtkmain.h" #include "gtkmarshalers.h" -#include "gtkmenuitem.h" +#include "gtkmenuitemprivate.h" #include "gtkmenuprivate.h" +#include "gtkmenushellprivate.h" #include "gtksettings.h" #include "gtksizerequest.h" #include "gtkwindow.h" - #include "gtkintl.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" #define BORDER_SPACING 0 #define DEFAULT_IPADDING 1 @@ -224,6 +235,13 @@ gtk_menu_bar_init (GtkMenuBar *menu_bar) gtk_style_context_add_class (context, GTK_STYLE_CLASS_MENUBAR); } +/** + * gtk_menu_bar_new: + * + * Creates a new #GtkMenuBar + * + * Returns: the new menu bar, as a #GtkWidget + */ GtkWidget* gtk_menu_bar_new (void) { @@ -301,7 +319,7 @@ gtk_menu_bar_size_request (GtkWidget *widget, priv = menu_bar->priv; nchildren = 0; - children = menu_shell->children; + children = menu_shell->priv->children; while (children) { @@ -312,7 +330,6 @@ gtk_menu_bar_size_request (GtkWidget *widget, { gint toggle_size; - GTK_MENU_ITEM (child)->show_submenu_indicator = FALSE; gtk_widget_get_preferred_size (child, &child_requisition, NULL); gtk_menu_item_toggle_size_request (GTK_MENU_ITEM (child), &toggle_size); @@ -425,7 +442,7 @@ gtk_menu_bar_size_allocate (GtkWidget *widget, gtk_widget_style_get (widget, "internal-padding", &ipadding, NULL); - if (menu_shell->children) + if (menu_shell->priv->children) { border_width = gtk_container_get_border_width (GTK_CONTAINER (menu_bar)); child_allocation.x = (border_width + @@ -454,15 +471,15 @@ gtk_menu_bar_size_allocate (GtkWidget *widget, priv->pack_direction == GTK_PACK_DIRECTION_RTL) { child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2); - - offset = child_allocation.x; /* Window edge to menubar start */ - ltr_x = child_allocation.x; - - children = menu_shell->children; - while (children) - { - gint toggle_size; - + + offset = child_allocation.x; /* Window edge to menubar start */ + ltr_x = child_allocation.x; + + children = menu_shell->priv->children; + while (children) + { + gint toggle_size; + child = children->data; children = children->next; @@ -475,10 +492,11 @@ gtk_menu_bar_size_allocate (GtkWidget *widget, child_requisition.width += toggle_size; else child_requisition.height += toggle_size; - + /* Support for the right justified help menu */ - if ((children == NULL) && (GTK_IS_MENU_ITEM(child)) - && (GTK_MENU_ITEM(child)->right_justify)) + if (children == NULL && + GTK_IS_MENU_ITEM (child) && + GTK_MENU_ITEM (child)->priv->right_justify) { ltr_x = allocation->width - child_requisition.width - offset; @@ -504,15 +522,15 @@ gtk_menu_bar_size_allocate (GtkWidget *widget, else { child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2); - - offset = child_allocation.y; /* Window edge to menubar start */ - ltr_y = child_allocation.y; - - children = menu_shell->children; - while (children) - { - gint toggle_size; - + + offset = child_allocation.y; /* Window edge to menubar start */ + ltr_y = child_allocation.y; + + children = menu_shell->priv->children; + while (children) + { + gint toggle_size; + child = children->data; children = children->next; @@ -525,11 +543,12 @@ gtk_menu_bar_size_allocate (GtkWidget *widget, child_requisition.width += toggle_size; else child_requisition.height += toggle_size; - - /* Support for the right justified help menu */ - if ((children == NULL) && (GTK_IS_MENU_ITEM(child)) - && (GTK_MENU_ITEM(child)->right_justify)) - { + + /* Support for the right justified help menu */ + if (children == NULL && + GTK_IS_MENU_ITEM (child) && + GTK_MENU_ITEM (child)->priv->right_justify) + { ltr_y = allocation->height - child_requisition.height - offset; } @@ -766,8 +785,8 @@ _gtk_menu_bar_cycle_focus (GtkMenuBar *menubar, if (current && current->next) { GtkMenuShell *new_menushell = GTK_MENU_SHELL (current->next->data); - if (new_menushell->children) - to_activate = new_menushell->children->data; + if (new_menushell->priv->children) + to_activate = new_menushell->priv->children->data; } } @@ -912,7 +931,7 @@ gtk_menu_bar_set_pack_direction (GtkMenuBar *menubar, gtk_widget_queue_resize (GTK_WIDGET (menubar)); - for (l = GTK_MENU_SHELL (menubar)->children; l; l = l->next) + for (l = GTK_MENU_SHELL (menubar)->priv->children; l; l = l->next) gtk_widget_queue_resize (GTK_WIDGET (l->data)); g_object_notify (G_OBJECT (menubar), "pack-direction"); @@ -965,7 +984,7 @@ gtk_menu_bar_set_child_pack_direction (GtkMenuBar *menubar, gtk_widget_queue_resize (GTK_WIDGET (menubar)); - for (l = GTK_MENU_SHELL (menubar)->children; l; l = l->next) + for (l = GTK_MENU_SHELL (menubar)->priv->children; l; l = l->next) gtk_widget_queue_resize (GTK_WIDGET (l->data)); g_object_notify (G_OBJECT (menubar), "child-pack-direction"); diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 7a94bed278..a111db502b 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -25,12 +25,15 @@ */ #include "config.h" + #include #include "gtkaccellabel.h" #include "gtkmain.h" #include "gtkmarshalers.h" -#include "gtkmenu.h" +#include "gtkmenuprivate.h" +#include "gtkmenushellprivate.h" +#include "gtkmenuitemprivate.h" #include "gtkmenubar.h" #include "gtkmenuprivate.h" #include "gtkseparatormenuitem.h" @@ -38,13 +41,9 @@ #include "gtkbuildable.h" #include "gtkactivatable.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" -typedef struct { - GtkAction *action; - gboolean use_action_appearance; -} GtkMenuItemPrivate; - enum { ACTIVATE, ACTIVATE_ITEM, @@ -71,16 +70,16 @@ enum { static void gtk_menu_item_dispose (GObject *object); static void gtk_menu_item_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_menu_item_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_menu_item_destroy (GtkWidget *widget); static void gtk_menu_item_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static void gtk_menu_item_realize (GtkWidget *widget); static void gtk_menu_item_unrealize (GtkWidget *widget); static void gtk_menu_item_map (GtkWidget *widget); @@ -92,7 +91,7 @@ static gboolean gtk_menu_item_leave (GtkWidget *widget, static gboolean gtk_menu_item_draw (GtkWidget *widget, cairo_t *cr); static void gtk_menu_item_parent_set (GtkWidget *widget, - GtkWidget *previous_parent); + GtkWidget *previous_parent); static void gtk_real_menu_item_select (GtkMenuItem *item); @@ -100,29 +99,29 @@ static void gtk_real_menu_item_deselect (GtkMenuItem *item); static void gtk_real_menu_item_activate (GtkMenuItem *item); static void gtk_real_menu_item_activate_item (GtkMenuItem *item); static void gtk_real_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition); + gint *requisition); static void gtk_real_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, - gint allocation); + gint allocation); static gboolean gtk_menu_item_mnemonic_activate (GtkWidget *widget, - gboolean group_cycling); + gboolean group_cycling); static void gtk_menu_item_ensure_label (GtkMenuItem *menu_item); static gint gtk_menu_item_popup_timeout (gpointer data); static void gtk_menu_item_position_menu (GtkMenu *menu, - gint *x, - gint *y, - gboolean *push_in, - gpointer user_data); + gint *x, + gint *y, + gboolean *push_in, + gpointer user_data); static void gtk_menu_item_show_all (GtkWidget *widget); static void gtk_menu_item_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); static gboolean gtk_menu_item_can_activate_accel (GtkWidget *widget, - guint signal_id); + guint signal_id); static void gtk_real_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label); + const gchar *label); static G_CONST_RETURN gchar * gtk_real_menu_item_get_label (GtkMenuItem *menu_item); static void gtk_menu_item_get_preferred_width (GtkWidget *widget, @@ -138,25 +137,25 @@ static void gtk_menu_item_get_preferred_height_for_width (GtkWidget *w static void gtk_menu_item_buildable_interface_init (GtkBuildableIface *iface); static void gtk_menu_item_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type); + GtkBuilder *builder, + GObject *child, + const gchar *type); static void gtk_menu_item_buildable_custom_finished(GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - gpointer user_data); + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer user_data); static void gtk_menu_item_activatable_interface_init (GtkActivatableIface *iface); static void gtk_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name); + GtkAction *action, + const gchar *property_name); static void gtk_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action); + GtkAction *action); static void gtk_menu_item_set_related_action (GtkMenuItem *menu_item, - GtkAction *action); + GtkAction *action); static void gtk_menu_item_set_use_action_appearance (GtkMenuItem *menu_item, - gboolean use_appearance); + gboolean use_appearance); static guint menu_item_signals[LAST_SIGNAL] = { 0 }; @@ -164,13 +163,11 @@ static guint menu_item_signals[LAST_SIGNAL] = { 0 }; static GtkBuildableIface *parent_buildable_iface; G_DEFINE_TYPE_WITH_CODE (GtkMenuItem, gtk_menu_item, GTK_TYPE_BIN, - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_menu_item_buildable_interface_init) - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, - gtk_menu_item_activatable_interface_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_menu_item_buildable_interface_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, + gtk_menu_item_activatable_interface_init)) -#define GET_PRIVATE(object) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((object), GTK_TYPE_MENU_ITEM, GtkMenuItemPrivate)) static void gtk_menu_item_class_init (GtkMenuItemClass *klass) @@ -179,7 +176,7 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); - gobject_class->dispose = gtk_menu_item_dispose; + gobject_class->dispose = gtk_menu_item_dispose; gobject_class->set_property = gtk_menu_item_set_property; gobject_class->get_property = gtk_menu_item_get_property; @@ -199,58 +196,58 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) widget_class->get_preferred_width = gtk_menu_item_get_preferred_width; widget_class->get_preferred_height = gtk_menu_item_get_preferred_height; widget_class->get_preferred_height_for_width = gtk_menu_item_get_preferred_height_for_width; - + container_class->forall = gtk_menu_item_forall; - klass->activate = gtk_real_menu_item_activate; - klass->activate_item = gtk_real_menu_item_activate_item; - klass->toggle_size_request = gtk_real_menu_item_toggle_size_request; + klass->activate = gtk_real_menu_item_activate; + klass->activate_item = gtk_real_menu_item_activate_item; + klass->toggle_size_request = gtk_real_menu_item_toggle_size_request; klass->toggle_size_allocate = gtk_real_menu_item_toggle_size_allocate; - klass->set_label = gtk_real_menu_item_set_label; - klass->get_label = gtk_real_menu_item_get_label; - klass->select = gtk_real_menu_item_select; - klass->deselect = gtk_real_menu_item_deselect; + klass->set_label = gtk_real_menu_item_set_label; + klass->get_label = gtk_real_menu_item_get_label; + klass->select = gtk_real_menu_item_select; + klass->deselect = gtk_real_menu_item_deselect; klass->hide_on_activate = TRUE; menu_item_signals[ACTIVATE] = g_signal_new (I_("activate"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (GtkMenuItemClass, activate), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkMenuItemClass, activate), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); widget_class->activate_signal = menu_item_signals[ACTIVATE]; menu_item_signals[ACTIVATE_ITEM] = g_signal_new (I_("activate-item"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuItemClass, activate_item), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuItemClass, activate_item), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); menu_item_signals[TOGGLE_SIZE_REQUEST] = g_signal_new (I_("toggle-size-request"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_request), - NULL, NULL, - _gtk_marshal_VOID__POINTER, - G_TYPE_NONE, 1, - G_TYPE_POINTER); + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_request), + NULL, NULL, + _gtk_marshal_VOID__POINTER, + G_TYPE_NONE, 1, + G_TYPE_POINTER); menu_item_signals[TOGGLE_SIZE_ALLOCATE] = g_signal_new (I_("toggle-size-allocate"), - G_OBJECT_CLASS_TYPE (gobject_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_allocate), - NULL, NULL, - _gtk_marshal_VOID__INT, - G_TYPE_NONE, 1, - G_TYPE_INT); + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_allocate), + NULL, NULL, + _gtk_marshal_VOID__INT, + G_TYPE_NONE, 1, + G_TYPE_INT); menu_item_signals[SELECT] = g_signal_new (I_("select"), @@ -273,10 +270,11 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) /** * GtkMenuItem:right-justified: * - * Sets whether the menu item appears justified at the right side of a menu bar. + * Sets whether the menu item appears justified + * at the right side of a menu bar. * * Since: 2.14 - **/ + */ g_object_class_install_property (gobject_class, PROP_RIGHT_JUSTIFIED, g_param_spec_boolean ("right-justified", @@ -288,10 +286,10 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) /** * GtkMenuItem:submenu: * - * The submenu attached to the menu item, or NULL if it has none. + * The submenu attached to the menu item, or %NULL if it has none. * * Since: 2.12 - **/ + */ g_object_class_install_property (gobject_class, PROP_SUBMENU, g_param_spec_object ("submenu", @@ -299,7 +297,6 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) P_("The submenu attached to the menu item, or NULL if it has none"), GTK_TYPE_MENU, GTK_PARAM_READWRITE)); - /** * GtkMenuItem:accel-path: @@ -309,7 +306,7 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) * identified and saved to persistant storage. * * Since: 2.14 - **/ + */ g_object_class_install_property (gobject_class, PROP_ACCEL_PATH, g_param_spec_string ("accel-path", @@ -324,70 +321,70 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) * The text for the child label. * * Since: 2.16 - **/ + */ g_object_class_install_property (gobject_class, PROP_LABEL, g_param_spec_string ("label", - P_("Label"), - P_("The text for the child label"), - "", - GTK_PARAM_READWRITE)); + P_("Label"), + P_("The text for the child label"), + "", + GTK_PARAM_READWRITE)); /** * GtkMenuItem:use-underline: * - * %TRUE if underlines in the text indicate mnemonics + * %TRUE if underlines in the text indicate mnemonics. * * Since: 2.16 - **/ + */ g_object_class_install_property (gobject_class, PROP_USE_UNDERLINE, g_param_spec_boolean ("use-underline", - P_("Use underline"), - P_("If set, an underline in the text indicates " - "the next character should be used for the " - "mnemonic accelerator key"), - FALSE, - GTK_PARAM_READWRITE)); + P_("Use underline"), + P_("If set, an underline in the text indicates " + "the next character should be used for the " + "mnemonic accelerator key"), + FALSE, + GTK_PARAM_READWRITE)); g_object_class_override_property (gobject_class, PROP_ACTIVATABLE_RELATED_ACTION, "related-action"); g_object_class_override_property (gobject_class, PROP_ACTIVATABLE_USE_ACTION_APPEARANCE, "use-action-appearance"); gtk_widget_class_install_style_property_parser (widget_class, - g_param_spec_enum ("selected-shadow-type", - "Selected Shadow Type", - "Shadow type when item is selected", - GTK_TYPE_SHADOW_TYPE, - GTK_SHADOW_NONE, - GTK_PARAM_READABLE), - gtk_rc_property_parse_enum); + g_param_spec_enum ("selected-shadow-type", + "Selected Shadow Type", + "Shadow type when item is selected", + GTK_TYPE_SHADOW_TYPE, + GTK_SHADOW_NONE, + GTK_PARAM_READABLE), + gtk_rc_property_parse_enum); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("horizontal-padding", - "Horizontal Padding", - "Padding to left and right of the menu item", - 0, - G_MAXINT, - 3, - GTK_PARAM_READABLE)); + g_param_spec_int ("horizontal-padding", + "Horizontal Padding", + "Padding to left and right of the menu item", + 0, + G_MAXINT, + 3, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("toggle-spacing", - "Icon Spacing", - "Space between icon and label", - 0, - G_MAXINT, - 5, - GTK_PARAM_READABLE)); + g_param_spec_int ("toggle-spacing", + "Icon Spacing", + "Space between icon and label", + 0, + G_MAXINT, + 5, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("arrow-spacing", - "Arrow Spacing", - "Space between label and arrow", - 0, - G_MAXINT, - 10, - GTK_PARAM_READABLE)); + g_param_spec_int ("arrow-spacing", + "Arrow Spacing", + "Space between label and arrow", + 0, + G_MAXINT, + 10, + GTK_PARAM_READABLE)); gtk_widget_class_install_style_property (widget_class, g_param_spec_float ("arrow-scaling", @@ -402,7 +399,7 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) * The minimum desired width of the menu item in characters. * * Since: 2.14 - **/ + */ gtk_widget_class_install_style_property (widget_class, g_param_spec_int ("width-chars", P_("Width in Characters"), @@ -416,25 +413,30 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) static void gtk_menu_item_init (GtkMenuItem *menu_item) { - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE (menu_item, + GTK_TYPE_MENU_ITEM, + GtkMenuItemPrivate); + menu_item->priv = priv; gtk_widget_set_has_window (GTK_WIDGET (menu_item), FALSE); priv->action = NULL; priv->use_action_appearance = TRUE; - menu_item->submenu = NULL; - menu_item->toggle_size = 0; - menu_item->accelerator_width = 0; - menu_item->show_submenu_indicator = FALSE; + menu_item->priv->submenu = NULL; + menu_item->priv->toggle_size = 0; + menu_item->priv->accelerator_width = 0; if (gtk_widget_get_direction (GTK_WIDGET (menu_item)) == GTK_TEXT_DIR_RTL) - menu_item->submenu_direction = GTK_DIRECTION_LEFT; + priv->submenu_direction = GTK_DIRECTION_LEFT; else - menu_item->submenu_direction = GTK_DIRECTION_RIGHT; - menu_item->submenu_placement = GTK_TOP_BOTTOM; - menu_item->right_justify = FALSE; - - menu_item->timer = 0; + priv->submenu_direction = GTK_DIRECTION_RIGHT; + priv->submenu_placement = GTK_TOP_BOTTOM; + priv->right_justify = FALSE; + priv->use_action_appearance = TRUE; + priv->timer = 0; + priv->action = NULL; } GtkWidget* @@ -446,55 +448,56 @@ gtk_menu_item_new (void) GtkWidget* gtk_menu_item_new_with_label (const gchar *label) { - return g_object_new (GTK_TYPE_MENU_ITEM, - "label", label, - NULL); + return g_object_new (GTK_TYPE_MENU_ITEM, + "label", label, + NULL); } /** * gtk_menu_item_new_with_mnemonic: * @label: The text of the button, with an underscore in front of the - * mnemonic character - * @returns: a new #GtkMenuItem + * mnemonic character * - * Creates a new #GtkMenuItem containing a label. The label - * will be created using gtk_label_new_with_mnemonic(), so underscores - * in @label indicate the mnemonic for the menu item. - **/ + * Creates a new #GtkMenuItem containing a label. + * + * The label will be created using gtk_label_new_with_mnemonic(), + * so underscores in @label indicate the mnemonic for the menu item. + * + * Returns: a new #GtkMenuItem + */ GtkWidget* gtk_menu_item_new_with_mnemonic (const gchar *label) { - return g_object_new (GTK_TYPE_MENU_ITEM, - "use-underline", TRUE, - "label", label, - NULL); + return g_object_new (GTK_TYPE_MENU_ITEM, + "use-underline", TRUE, + "label", label, + NULL); } static void gtk_menu_item_dispose (GObject *object) { GtkMenuItem *menu_item = GTK_MENU_ITEM (object); - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; if (priv->action) { gtk_action_disconnect_accelerator (priv->action); gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (menu_item), NULL); - priv->action = NULL; } G_OBJECT_CLASS (gtk_menu_item_parent_class)->dispose (object); } -static void +static void gtk_menu_item_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkMenuItem *menu_item = GTK_MENU_ITEM (object); - + switch (prop_id) { case PROP_RIGHT_JUSTIFIED: @@ -524,15 +527,15 @@ gtk_menu_item_set_property (GObject *object, } } -static void +static void gtk_menu_item_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkMenuItem *menu_item = GTK_MENU_ITEM (object); - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); - + GtkMenuItemPrivate *priv = menu_item->priv; + switch (prop_id) { case PROP_RIGHT_JUSTIFIED: @@ -566,56 +569,63 @@ static void gtk_menu_item_destroy (GtkWidget *widget) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; - if (menu_item->submenu) - gtk_widget_destroy (menu_item->submenu); + if (priv->submenu) + gtk_widget_destroy (priv->submenu); GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->destroy (widget); } static void gtk_menu_item_detacher (GtkWidget *widget, - GtkMenu *menu) + GtkMenu *menu) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; - g_return_if_fail (menu_item->submenu == (GtkWidget*) menu); + g_return_if_fail (priv->submenu == (GtkWidget*) menu); - menu_item->submenu = NULL; + priv->submenu = NULL; } static void get_arrow_size (GtkWidget *widget, - GtkWidget *child, - gint *size) + GtkWidget *child, + gint *size) { + GtkStyleContext *style_context; + GtkStateFlags state; PangoContext *context; PangoFontMetrics *metrics; gfloat arrow_scaling; - + g_assert (size); gtk_widget_style_get (widget, - "arrow-scaling", &arrow_scaling, - NULL); - + "arrow-scaling", &arrow_scaling, + NULL); + context = gtk_widget_get_pango_context (child); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (child)->font_desc, - pango_context_get_language (context)); - + style_context = gtk_widget_get_style_context (child); + state = gtk_widget_get_state_flags (child); + + metrics = pango_context_get_metrics (context, + gtk_style_context_get_font (style_context, state), + pango_context_get_language (context)); + *size = (PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) + - pango_font_metrics_get_descent (metrics))); - + pango_font_metrics_get_descent (metrics))); + pango_font_metrics_unref (metrics); - + *size = *size * arrow_scaling; } static void gtk_menu_item_accel_width_foreach (GtkWidget *widget, - gpointer data) + gpointer data) { guint *width = data; @@ -628,22 +638,27 @@ gtk_menu_item_accel_width_foreach (GtkWidget *widget, } else if (GTK_IS_CONTAINER (widget)) gtk_container_foreach (GTK_CONTAINER (widget), - gtk_menu_item_accel_width_foreach, - data); + gtk_menu_item_accel_width_foreach, + data); } static gint get_minimum_width (GtkWidget *widget) { + GtkStyleContext *style_context; + GtkStateFlags state; PangoContext *context; PangoFontMetrics *metrics; gint width; gint width_chars; context = gtk_widget_get_pango_context (widget); + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, - pango_context_get_language (context)); + gtk_style_context_get_font (style_context, state), + pango_context_get_language (context)); width = pango_font_metrics_get_approximate_char_width (metrics); @@ -654,14 +669,15 @@ get_minimum_width (GtkWidget *widget) return PANGO_PIXELS (width_chars * width); } -static void -gtk_menu_item_get_preferred_width (GtkWidget *request, +static void +gtk_menu_item_get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; GtkBin *bin; - GtkWidget *child, *widget = GTK_WIDGET (request); + GtkWidget *child; GtkWidget *parent; guint accel_width; guint horizontal_padding; @@ -669,15 +685,17 @@ gtk_menu_item_get_preferred_width (GtkWidget *request, GtkPackDirection pack_dir; GtkPackDirection child_pack_dir; gint min_width, nat_width; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; min_width = nat_width = 0; gtk_widget_style_get (widget, - "horizontal-padding", &horizontal_padding, - NULL); - + "horizontal-padding", &horizontal_padding, + NULL); + bin = GTK_BIN (widget); - menu_item = GTK_MENU_ITEM (widget); parent = gtk_widget_get_parent (widget); if (GTK_IS_MENU_BAR (parent)) @@ -693,23 +711,30 @@ gtk_menu_item_get_preferred_width (GtkWidget *request, border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - min_width = (border_width + gtk_widget_get_style (widget)->xthickness) * 2; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + + min_width = (border_width * 2) + padding.left + padding.right + + border.left + border.right; if ((pack_dir == GTK_PACK_DIRECTION_LTR || pack_dir == GTK_PACK_DIRECTION_RTL) && (child_pack_dir == GTK_PACK_DIRECTION_LTR || child_pack_dir == GTK_PACK_DIRECTION_RTL)) min_width += 2 * horizontal_padding; nat_width = min_width; - + child = gtk_bin_get_child (bin); if (child != NULL && gtk_widget_get_visible (child)) { + GtkMenuItemPrivate *priv = menu_item->priv; gint child_min, child_nat; gtk_widget_get_preferred_width (child, &child_min, &child_nat); - if (menu_item->submenu && menu_item->show_submenu_indicator) + if ((menu_item->priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { guint arrow_spacing; gint arrow_size; @@ -720,26 +745,28 @@ gtk_menu_item_get_preferred_width (GtkWidget *request, get_arrow_size (widget, child, &arrow_size); - min_width += arrow_size; - min_width += arrow_spacing; + gtk_widget_style_get (widget, + "arrow-spacing", &arrow_spacing, + NULL); - min_width = MAX (min_width, get_minimum_width (widget)); + get_arrow_size (widget, child, &arrow_size); - nat_width = min_width; - } + min_width += arrow_size; + min_width += arrow_spacing; + min_width = MAX (min_width, get_minimum_width (widget)); + nat_width = min_width; + } min_width += child_min; nat_width += child_nat; - - } accel_width = 0; gtk_container_foreach (GTK_CONTAINER (menu_item), - gtk_menu_item_accel_width_foreach, - &accel_width); - menu_item->accelerator_width = accel_width; + gtk_menu_item_accel_width_foreach, + &accel_width); + priv->accelerator_width = accel_width; if (minimum_size) *minimum_size = min_width; @@ -748,15 +775,18 @@ gtk_menu_item_get_preferred_width (GtkWidget *request, *natural_size = nat_width; } -static void -gtk_menu_item_get_preferred_height (GtkWidget *request, +static void +gtk_menu_item_get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; GtkBin *bin; - GtkStyle *style; - GtkWidget *child, *widget = GTK_WIDGET (request); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; + GtkWidget *child; GtkWidget *parent; guint accel_width; guint horizontal_padding; @@ -767,14 +797,16 @@ gtk_menu_item_get_preferred_height (GtkWidget *request, min_height = nat_height = 0; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); gtk_widget_style_get (widget, - "horizontal-padding", &horizontal_padding, - NULL); - + "horizontal-padding", &horizontal_padding, + NULL); + bin = GTK_BIN (widget); - menu_item = GTK_MENU_ITEM (widget); parent = gtk_widget_get_parent (widget); if (GTK_IS_MENU_BAR (parent)) @@ -789,7 +821,7 @@ gtk_menu_item_get_preferred_height (GtkWidget *request, } border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - min_height = (border_width + style->ythickness) * 2; + min_height = (border_width * 2) + padding.top + padding.bottom + border.top + border.bottom; if ((pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT) && (child_pack_dir == GTK_PACK_DIRECTION_TTB || child_pack_dir == GTK_PACK_DIRECTION_BTT)) @@ -801,22 +833,23 @@ gtk_menu_item_get_preferred_height (GtkWidget *request, if (child != NULL && gtk_widget_get_visible (child)) { + GtkMenuItemPrivate *priv = menu_item->priv; gint child_min, child_nat; - + gtk_widget_get_preferred_height (child, &child_min, &child_nat); min_height += child_min; nat_height += child_nat; - if (menu_item->submenu && menu_item->show_submenu_indicator) + if ((menu_item->priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { gint arrow_size; - get_arrow_size (widget, child, &arrow_size); + get_arrow_size (widget, child, &arrow_size); - min_height = MAX (min_height, arrow_size); - nat_height = MAX (nat_height, arrow_size); - } + min_height = MAX (min_height, arrow_size); + nat_height = MAX (nat_height, arrow_size); + } } else /* separator item */ { @@ -829,18 +862,18 @@ gtk_menu_item_get_preferred_height (GtkWidget *request, NULL); if (wide_separators) - min_height += separator_height + style->ythickness; + min_height += separator_height + padding.top + border.top; else - min_height += style->ythickness * 2; + min_height += padding.top + padding.bottom + border.top + border.bottom; nat_height = min_height; } accel_width = 0; gtk_container_foreach (GTK_CONTAINER (menu_item), - gtk_menu_item_accel_width_foreach, - &accel_width); - menu_item->accelerator_width = accel_width; + gtk_menu_item_accel_width_foreach, + &accel_width); + priv->accelerator_width = accel_width; if (minimum_size) *minimum_size = min_height; @@ -850,15 +883,18 @@ gtk_menu_item_get_preferred_height (GtkWidget *request, } static void -gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, +gtk_menu_item_get_preferred_height_for_width (GtkWidget *widget, gint for_size, gint *minimum_size, gint *natural_size) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; GtkBin *bin; - GtkStyle *style; - GtkWidget *child, *widget = GTK_WIDGET (request); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; + GtkWidget *child; GtkWidget *parent; guint horizontal_padding; guint border_width; @@ -869,14 +905,16 @@ gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, min_height = nat_height = 0; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); gtk_widget_style_get (widget, - "horizontal-padding", &horizontal_padding, - NULL); - + "horizontal-padding", &horizontal_padding, + NULL); + bin = GTK_BIN (widget); - menu_item = GTK_MENU_ITEM (widget); parent = gtk_widget_get_parent (widget); if (GTK_IS_MENU_BAR (parent)) @@ -891,10 +929,10 @@ gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, } border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - min_height = (border_width + style->ythickness) * 2; + min_height = (border_width * 2) + padding.top + padding.bottom + border.top + border.bottom; avail_size = for_size; - avail_size -= (border_width + style->xthickness) * 2; + avail_size -= (border_width * 2) + padding.left + padding.right + border.left + border.right; if ((pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT) && (child_pack_dir == GTK_PACK_DIRECTION_TTB || child_pack_dir == GTK_PACK_DIRECTION_BTT)) @@ -913,20 +951,19 @@ gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, gint child_min, child_nat; gint arrow_size = 0; - if (menu_item->submenu && menu_item->show_submenu_indicator) + if ((priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { + guint arrow_spacing; - guint arrow_spacing; - - gtk_widget_style_get (widget, - "arrow-spacing", &arrow_spacing, - NULL); + gtk_widget_style_get (widget, + "arrow-spacing", &arrow_spacing, + NULL); - get_arrow_size (widget, child, &arrow_size); + get_arrow_size (widget, child, &arrow_size); - avail_size -= arrow_size; - avail_size -= arrow_spacing; - } + avail_size -= arrow_size; + avail_size -= arrow_spacing; + } gtk_widget_get_preferred_height_for_width (child, avail_size, @@ -936,7 +973,7 @@ gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, min_height += child_min; nat_height += child_nat; - if (menu_item->submenu && menu_item->show_submenu_indicator) + if ((priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { min_height = MAX (min_height, arrow_size); nat_height = MAX (nat_height, arrow_size); @@ -953,9 +990,9 @@ gtk_menu_item_get_preferred_height_for_width (GtkWidget *request, NULL); if (wide_separators) - min_height += separator_height + style->ythickness; + min_height += separator_height + padding.top + border.top; else - min_height += style->ythickness * 2; + min_height += padding.top + padding.bottom + border.top + border.bottom; nat_height = min_height; } @@ -977,24 +1014,24 @@ gtk_menu_item_buildable_interface_init (GtkBuildableIface *iface) static void gtk_menu_item_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type) + GtkBuilder *builder, + GObject *child, + const gchar *type) { if (type && strcmp (type, "submenu") == 0) - gtk_menu_item_set_submenu (GTK_MENU_ITEM (buildable), - GTK_WIDGET (child)); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (buildable), + GTK_WIDGET (child)); else parent_buildable_iface->add_child (buildable, builder, child, type); } -static void -gtk_menu_item_buildable_custom_finished (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *tagname, - gpointer user_data) +static void +gtk_menu_item_buildable_custom_finished (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer user_data) { GtkWidget *toplevel; @@ -1005,21 +1042,21 @@ gtk_menu_item_buildable_custom_finished (GtkBuildable *buildable, menu_shell = GTK_MENU_SHELL (gtk_widget_get_parent (GTK_WIDGET (buildable))); if (menu_shell) - { - while (GTK_IS_MENU (menu_shell) && - (attach = gtk_menu_get_attach_widget (GTK_MENU (menu_shell))) != NULL) - menu_shell = GTK_MENU_SHELL (gtk_widget_get_parent (attach)); - - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (menu_shell)); - } - else - { - /* Fall back to something ... */ - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (buildable)); + { + while (GTK_IS_MENU (menu_shell) && + (attach = gtk_menu_get_attach_widget (GTK_MENU (menu_shell))) != NULL) + menu_shell = GTK_MENU_SHELL (gtk_widget_get_parent (attach)); - g_warning ("found a GtkMenuItem '%s' without a parent GtkMenuShell, assigned accelerators wont work.", - gtk_buildable_get_name (buildable)); - } + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (menu_shell)); + } + else + { + /* Fall back to something ... */ + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (buildable)); + + g_warning ("found a GtkMenuItem '%s' without a parent GtkMenuShell, assigned accelerators wont work.", + gtk_buildable_get_name (buildable)); + } /* Feed the correct toplevel to the GtkWidget accelerator parsing code */ _gtk_widget_buildable_finish_accelerator (GTK_WIDGET (buildable), toplevel, user_data); @@ -1056,30 +1093,30 @@ gboolean _gtk_menu_is_empty (GtkWidget *menu); static void gtk_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name) + GtkAction *action, + const gchar *property_name) { GtkMenuItem *menu_item = GTK_MENU_ITEM (activatable); - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; if (strcmp (property_name, "visible") == 0) - _gtk_action_sync_menu_visible (action, GTK_WIDGET (menu_item), - _gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); + _gtk_action_sync_menu_visible (action, GTK_WIDGET (menu_item), + _gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); else if (strcmp (property_name, "sensitive") == 0) gtk_widget_set_sensitive (GTK_WIDGET (menu_item), gtk_action_is_sensitive (action)); else if (priv->use_action_appearance) { if (strcmp (property_name, "label") == 0) - activatable_update_label (menu_item, action); + activatable_update_label (menu_item, action); } } static void gtk_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action) + GtkAction *action) { GtkMenuItem *menu_item = GTK_MENU_ITEM (activatable); - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; GtkWidget *label; if (!priv->use_action_appearance || !action) @@ -1094,7 +1131,7 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable, return; _gtk_action_sync_menu_visible (action, GTK_WIDGET (menu_item), - _gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); + _gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); gtk_widget_set_sensitive (GTK_WIDGET (menu_item), gtk_action_is_sensitive (action)); @@ -1104,10 +1141,10 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable, /* make sure label is a label, deleting it otherwise */ if (label && !GTK_IS_LABEL (label)) - { - gtk_container_remove (GTK_CONTAINER (menu_item), label); - label = NULL; - } + { + gtk_container_remove (GTK_CONTAINER (menu_item), label); + label = NULL; + } /* Make sure that menu_item has a label and that any * accelerators are set */ gtk_menu_item_ensure_label (menu_item); @@ -1128,28 +1165,28 @@ gtk_menu_item_sync_action_properties (GtkActivatable *activatable, static void gtk_menu_item_set_related_action (GtkMenuItem *menu_item, - GtkAction *action) + GtkAction *action) { - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; if (priv->action == action) return; if (priv->action) { - gtk_action_disconnect_accelerator (priv->action); + gtk_action_disconnect_accelerator (priv->action); } if (action) { - const gchar *accel_path; - - accel_path = gtk_action_get_accel_path (action); - if (accel_path) - { - gtk_action_connect_accelerator (action); - gtk_menu_item_set_accel_path (menu_item, accel_path); - } + const gchar *accel_path; + + accel_path = gtk_action_get_accel_path (action); + if (accel_path) + { + gtk_action_connect_accelerator (action); + gtk_menu_item_set_accel_path (menu_item, accel_path); + } } gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (menu_item), action); @@ -1159,15 +1196,15 @@ gtk_menu_item_set_related_action (GtkMenuItem *menu_item, static void gtk_menu_item_set_use_action_appearance (GtkMenuItem *menu_item, - gboolean use_appearance) + gboolean use_appearance) { - GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; if (priv->use_action_appearance != use_appearance) { - priv->use_action_appearance = use_appearance; + priv->use_action_appearance = use_appearance; - gtk_activatable_sync_action_properties (GTK_ACTIVATABLE (menu_item), priv->action); + gtk_activatable_sync_action_properties (GTK_ACTIVATABLE (menu_item), priv->action); } } @@ -1179,29 +1216,31 @@ gtk_menu_item_set_use_action_appearance (GtkMenuItem *menu_item, * * Sets or replaces the menu item's submenu, or removes it when a %NULL * submenu is passed. - **/ + */ void gtk_menu_item_set_submenu (GtkMenuItem *menu_item, - GtkWidget *submenu) + GtkWidget *submenu) { + GtkMenuItemPrivate *priv = menu_item->priv; + g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); g_return_if_fail (submenu == NULL || GTK_IS_MENU (submenu)); - - if (menu_item->submenu != submenu) + + if (priv->submenu != submenu) { - if (menu_item->submenu) - gtk_menu_detach (GTK_MENU (menu_item->submenu)); + if (priv->submenu) + gtk_menu_detach (GTK_MENU (priv->submenu)); if (submenu) - { - menu_item->submenu = submenu; - gtk_menu_attach_to_widget (GTK_MENU (submenu), - GTK_WIDGET (menu_item), - gtk_menu_item_detacher); - } + { + priv->submenu = submenu; + gtk_menu_attach_to_widget (GTK_MENU (submenu), + GTK_WIDGET (menu_item), + gtk_menu_item_detacher); + } if (gtk_widget_get_parent (GTK_WIDGET (menu_item))) - gtk_widget_queue_resize (GTK_WIDGET (menu_item)); + gtk_widget_queue_resize (GTK_WIDGET (menu_item)); g_object_notify (G_OBJECT (menu_item), "submenu"); } @@ -1214,26 +1253,26 @@ gtk_menu_item_set_submenu (GtkMenuItem *menu_item, * Gets the submenu underneath this menu item, if any. * See gtk_menu_item_set_submenu(). * - * Return value: (transfer none): submenu for this menu item, or %NULL if none. - **/ + * Return value: (transfer none): submenu for this menu item, or %NULL if none + */ GtkWidget * gtk_menu_item_get_submenu (GtkMenuItem *menu_item) { g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), NULL); - return menu_item->submenu; + return menu_item->priv->submenu; } void _gtk_menu_item_set_placement (GtkMenuItem *menu_item, - GtkSubmenuPlacement placement); + GtkSubmenuPlacement placement); void _gtk_menu_item_set_placement (GtkMenuItem *menu_item, - GtkSubmenuPlacement placement) + GtkSubmenuPlacement placement) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); - menu_item->submenu_placement = placement; + menu_item->priv->submenu_placement = placement; } void @@ -1253,8 +1292,8 @@ gtk_menu_item_select (GtkMenuItem *menu_item) { GtkMenu *menu = GTK_MENU (parent); - if (menu->parent_menu_item) - gtk_widget_queue_draw (GTK_WIDGET (menu->parent_menu_item)); + if (menu->priv->parent_menu_item) + gtk_widget_queue_draw (GTK_WIDGET (menu->priv->parent_menu_item)); } } @@ -1275,8 +1314,8 @@ gtk_menu_item_deselect (GtkMenuItem *menu_item) { GtkMenu *menu = GTK_MENU (parent); - if (menu->parent_menu_item) - gtk_widget_queue_draw (GTK_WIDGET (menu->parent_menu_item)); + if (menu->priv->parent_menu_item) + gtk_widget_queue_draw (GTK_WIDGET (menu->priv->parent_menu_item)); } } @@ -1290,7 +1329,7 @@ gtk_menu_item_activate (GtkMenuItem *menu_item) void gtk_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition) + gint *requisition) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); @@ -1299,7 +1338,7 @@ gtk_menu_item_toggle_size_request (GtkMenuItem *menu_item, void gtk_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, - gint allocation) + gint allocation) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); @@ -1308,9 +1347,10 @@ gtk_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, static void gtk_menu_item_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; GtkBin *bin; GtkAllocation child_allocation; GtkTextDirection direction; @@ -1322,9 +1362,8 @@ gtk_menu_item_size_allocate (GtkWidget *widget, g_return_if_fail (GTK_IS_MENU_ITEM (widget)); g_return_if_fail (allocation != NULL); - menu_item = GTK_MENU_ITEM (widget); bin = GTK_BIN (widget); - + direction = gtk_widget_get_direction (widget); parent = gtk_widget_get_parent (widget); @@ -1344,75 +1383,97 @@ gtk_menu_item_size_allocate (GtkWidget *widget, child = gtk_bin_get_child (bin); if (child) { - GtkRequisition child_requisition; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; guint horizontal_padding; guint border_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + gtk_widget_style_get (widget, - "horizontal-padding", &horizontal_padding, - NULL); + "horizontal-padding", &horizontal_padding, + NULL); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - child_allocation.x = border_width + style->xthickness; - child_allocation.y = border_width + style->ythickness; + child_allocation.x = border_width + padding.left + border.left; + child_allocation.y = border_width + padding.top + border.top; + + child_allocation.width = allocation->width - (border_width * 2) - + padding.left - padding.right - border.left - border.right; + child_allocation.height = allocation->height - (border_width * 2) - + padding.top - padding.bottom - border.top - border.bottom; if ((pack_dir == GTK_PACK_DIRECTION_LTR || pack_dir == GTK_PACK_DIRECTION_RTL) && - (child_pack_dir == GTK_PACK_DIRECTION_LTR || child_pack_dir == GTK_PACK_DIRECTION_RTL)) - child_allocation.x += horizontal_padding; + (child_pack_dir == GTK_PACK_DIRECTION_LTR || child_pack_dir == GTK_PACK_DIRECTION_RTL)) + { + child_allocation.x += horizontal_padding; + child_allocation.width -= 2 * horizontal_padding; + } else if ((pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT) && - (child_pack_dir == GTK_PACK_DIRECTION_TTB || child_pack_dir == GTK_PACK_DIRECTION_BTT)) - child_allocation.y += horizontal_padding; - - child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2); - child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2); + (child_pack_dir == GTK_PACK_DIRECTION_TTB || child_pack_dir == GTK_PACK_DIRECTION_BTT)) + { + child_allocation.y += horizontal_padding; + child_allocation.height -= 2 * horizontal_padding; + } if (child_pack_dir == GTK_PACK_DIRECTION_LTR || - child_pack_dir == GTK_PACK_DIRECTION_RTL) - { - if ((direction == GTK_TEXT_DIR_LTR) == (child_pack_dir != GTK_PACK_DIRECTION_RTL)) - child_allocation.x += GTK_MENU_ITEM (widget)->toggle_size; - child_allocation.width -= GTK_MENU_ITEM (widget)->toggle_size; - } + child_pack_dir == GTK_PACK_DIRECTION_RTL) + { + if ((direction == GTK_TEXT_DIR_LTR) == (child_pack_dir != GTK_PACK_DIRECTION_RTL)) + child_allocation.x += priv->toggle_size; + child_allocation.width -= priv->toggle_size; + } else - { - if ((direction == GTK_TEXT_DIR_LTR) == (child_pack_dir != GTK_PACK_DIRECTION_BTT)) - child_allocation.y += GTK_MENU_ITEM (widget)->toggle_size; - child_allocation.height -= GTK_MENU_ITEM (widget)->toggle_size; - } + { + if ((direction == GTK_TEXT_DIR_LTR) == (child_pack_dir != GTK_PACK_DIRECTION_BTT)) + child_allocation.y += priv->toggle_size; + child_allocation.height -= priv->toggle_size; + } child_allocation.x += allocation->x; child_allocation.y += allocation->y; - gtk_widget_get_preferred_size (child, &child_requisition, NULL); - if (menu_item->submenu && menu_item->show_submenu_indicator) + if ((priv->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator) { + guint arrow_spacing; + gint arrow_size; + + gtk_widget_style_get (widget, + "arrow-spacing", &arrow_spacing, + NULL); + + get_arrow_size (widget, child, &arrow_size); + if (direction == GTK_TEXT_DIR_RTL) - child_allocation.x += child_requisition.height; - child_allocation.width -= child_requisition.height; + child_allocation.x += arrow_size + arrow_spacing; + child_allocation.width -= arrow_size + arrow_spacing; } if (child_allocation.width < 1) - child_allocation.width = 1; + child_allocation.width = 1; gtk_widget_size_allocate (child, &child_allocation); } if (gtk_widget_get_realized (widget)) - gdk_window_move_resize (menu_item->event_window, + gdk_window_move_resize (priv->event_window, allocation->x, allocation->y, allocation->width, allocation->height); - if (menu_item->submenu) - gtk_menu_reposition (GTK_MENU (menu_item->submenu)); + if (priv->submenu) + gtk_menu_reposition (GTK_MENU (priv->submenu)); } static void gtk_menu_item_realize (GtkWidget *widget) { - GtkAllocation allocation; GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; + GtkAllocation allocation; GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; @@ -1432,29 +1493,28 @@ gtk_menu_item_realize (GtkWidget *widget) attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_ONLY; attributes.event_mask = (gtk_widget_get_events (widget) | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK | - GDK_POINTER_MOTION_MASK); + GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_ENTER_NOTIFY_MASK | + GDK_LEAVE_NOTIFY_MASK | + GDK_POINTER_MOTION_MASK); attributes_mask = GDK_WA_X | GDK_WA_Y; - menu_item->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), - &attributes, attributes_mask); - gdk_window_set_user_data (menu_item->event_window, widget); - - gtk_widget_style_attach (widget); + priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), + &attributes, attributes_mask); + gdk_window_set_user_data (priv->event_window, widget); } static void gtk_menu_item_unrealize (GtkWidget *widget) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; - gdk_window_set_user_data (menu_item->event_window, NULL); - gdk_window_destroy (menu_item->event_window); - menu_item->event_window = NULL; + gdk_window_set_user_data (priv->event_window, NULL); + gdk_window_destroy (priv->event_window); + priv->event_window = NULL; GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->unrealize (widget); } @@ -1463,18 +1523,20 @@ static void gtk_menu_item_map (GtkWidget *widget) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); - + GtkMenuItemPrivate *priv = menu_item->priv; + GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->map (widget); - gdk_window_show (menu_item->event_window); + gdk_window_show (priv->event_window); } static void gtk_menu_item_unmap (GtkWidget *widget) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); - - gdk_window_hide (menu_item->event_window); + GtkMenuItemPrivate *priv = menu_item->priv; + + gdk_window_hide (priv->event_window); GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->unmap (widget); } @@ -1502,16 +1564,17 @@ gtk_menu_item_draw (GtkWidget *widget, cairo_t *cr) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); - GtkStateType state_type; - GtkShadowType shadow_type, selected_shadow_type; - GtkStyle *style; - GtkWidget *child; + GtkMenuItemPrivate *priv = menu_item->priv; + GtkStateFlags state; + GtkStyleContext *context; + GtkBorder padding; + GtkWidget *child, *parent; GdkWindow *window; gint x, y, w, h, width, height; guint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - state_type = gtk_widget_get_state (widget); - style = gtk_widget_get_style (widget); + state = gtk_widget_get_state_flags (widget); + context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); @@ -1522,59 +1585,49 @@ gtk_menu_item_draw (GtkWidget *widget, h = height - border_width * 2; child = gtk_bin_get_child (GTK_BIN (menu_item)); - - if (child && state_type == GTK_STATE_PRELIGHT) + parent = gtk_widget_get_parent (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_style_context_get_padding (context, state, &padding); + + if (child && (state & GTK_STATE_FLAG_PRELIGHT)) { - gtk_widget_style_get (widget, - "selected-shadow-type", &selected_shadow_type, - NULL); - gtk_paint_box (style, - cr, - GTK_STATE_PRELIGHT, - selected_shadow_type, - widget, "menuitem", - x, y, w, h); + gtk_render_background (context, cr, x, y, w, h); + gtk_render_frame (context, cr, x, y, w, h); } - if (menu_item->submenu && menu_item->show_submenu_indicator) + if (priv->submenu && !GTK_IS_MENU_BAR (parent)) { gint arrow_x, arrow_y; gint arrow_size; guint horizontal_padding; GtkTextDirection direction; - GtkArrowType arrow_type; + gdouble angle; direction = gtk_widget_get_direction (widget); - + gtk_widget_style_get (widget, "horizontal-padding", &horizontal_padding, NULL); get_arrow_size (widget, child, &arrow_size); - shadow_type = GTK_SHADOW_OUT; - if (state_type == GTK_STATE_PRELIGHT) - shadow_type = GTK_SHADOW_IN; - if (direction == GTK_TEXT_DIR_LTR) { arrow_x = x + w - horizontal_padding - arrow_size; - arrow_type = GTK_ARROW_RIGHT; + angle = G_PI / 2; } else { arrow_x = x + horizontal_padding; - arrow_type = GTK_ARROW_LEFT; + angle = (3 * G_PI) / 2; } arrow_y = y + (h - arrow_size) / 2; - gtk_paint_arrow (style, cr, - state_type, shadow_type, - widget, "menuitem", - arrow_type, TRUE, - arrow_x, arrow_y, - arrow_size, arrow_size); + gtk_render_arrow (context, cr, angle, arrow_x, arrow_y, arrow_size); } else if (!child) { @@ -1587,41 +1640,40 @@ gtk_menu_item_draw (GtkWidget *widget, "separator-height", &separator_height, "horizontal-padding", &horizontal_padding, NULL); - if (wide_separators) - gtk_paint_box (style, cr, - GTK_STATE_NORMAL, GTK_SHADOW_ETCHED_OUT, - widget, "hseparator", - horizontal_padding + style->xthickness, - (height - separator_height - style->ythickness) / 2, - width - 2 * (horizontal_padding + style->xthickness), - separator_height); + gtk_render_frame (context, cr, + horizontal_padding + padding.left, + (height - separator_height - padding.top) / 2, + width - (2 * horizontal_padding) - padding.left - padding.right, + separator_height); else - gtk_paint_hline (style, cr, - GTK_STATE_NORMAL, widget, "menuitem", - horizontal_padding + style->xthickness, - width - horizontal_padding - style->xthickness - 1, - (height - style->ythickness) / 2); + gtk_render_line (context, cr, + horizontal_padding + padding.left, + (height - padding.top) / 2, + width - horizontal_padding - padding.right - 1, + (height - padding.top) / 2); } GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->draw (widget, cr); + gtk_style_context_restore (context); + return FALSE; } static void gtk_real_menu_item_select (GtkMenuItem *menu_item) { + GtkMenuItemPrivate *priv = menu_item->priv; gboolean touchscreen_mode; g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_item)), "gtk-touchscreen-mode", &touchscreen_mode, NULL); - if (!touchscreen_mode && - menu_item->submenu && - (!gtk_widget_get_mapped (menu_item->submenu) || - GTK_MENU (menu_item->submenu)->tearoff_active)) + if (!touchscreen_mode && priv->submenu && + (!gtk_widget_get_mapped (priv->submenu) || + GTK_MENU (priv->submenu)->priv->tearoff_active)) { _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item), TRUE); } @@ -1634,7 +1686,9 @@ gtk_real_menu_item_select (GtkMenuItem *menu_item) static void gtk_real_menu_item_deselect (GtkMenuItem *menu_item) { - if (menu_item->submenu) + GtkMenuItemPrivate *priv = menu_item->priv; + + if (priv->submenu) _gtk_menu_item_popdown_submenu (GTK_WIDGET (menu_item)); gtk_widget_unset_state_flags (GTK_WIDGET (menu_item), @@ -1644,7 +1698,7 @@ gtk_real_menu_item_deselect (GtkMenuItem *menu_item) static gboolean gtk_menu_item_mnemonic_activate (GtkWidget *widget, - gboolean group_cycling) + gboolean group_cycling) { GtkWidget *parent; @@ -1656,23 +1710,20 @@ gtk_menu_item_mnemonic_activate (GtkWidget *widget, if (group_cycling && parent && GTK_IS_MENU_SHELL (parent) && - GTK_MENU_SHELL (parent)->active) + GTK_MENU_SHELL (parent)->priv->active) { - gtk_menu_shell_select_item (GTK_MENU_SHELL (parent), - widget); + gtk_menu_shell_select_item (GTK_MENU_SHELL (parent), widget); } else g_signal_emit (widget, menu_item_signals[ACTIVATE_ITEM], 0); - + return TRUE; } -static void +static void gtk_real_menu_item_activate (GtkMenuItem *menu_item) { - GtkMenuItemPrivate *priv; - - priv = GET_PRIVATE (menu_item); + GtkMenuItemPrivate *priv = menu_item->priv; if (priv->action) gtk_action_activate (priv->action); @@ -1682,13 +1733,10 @@ gtk_real_menu_item_activate (GtkMenuItem *menu_item) static void gtk_real_menu_item_activate_item (GtkMenuItem *menu_item) { - GtkMenuItemPrivate *priv; + GtkMenuItemPrivate *priv = menu_item->priv; GtkWidget *parent; GtkWidget *widget; - g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); - - priv = GET_PRIVATE (menu_item); widget = GTK_WIDGET (menu_item); parent = gtk_widget_get_parent (widget); @@ -1696,24 +1744,23 @@ gtk_real_menu_item_activate_item (GtkMenuItem *menu_item) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (parent); - if (menu_item->submenu == NULL) - gtk_menu_shell_activate_item (menu_shell, - widget, TRUE); + if (priv->submenu == NULL) + gtk_menu_shell_activate_item (menu_shell, widget, TRUE); else - { - _gtk_menu_shell_activate (menu_shell); + { + _gtk_menu_shell_activate (menu_shell); - gtk_menu_shell_select_item (menu_shell, widget); - _gtk_menu_item_popup_submenu (widget, FALSE); + gtk_menu_shell_select_item (menu_shell, widget); + _gtk_menu_item_popup_submenu (widget, FALSE); - gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); - } + gtk_menu_shell_select_first (GTK_MENU_SHELL (priv->submenu), TRUE); + } } } static void gtk_real_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition) + gint *requisition) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); @@ -1722,16 +1769,16 @@ gtk_real_menu_item_toggle_size_request (GtkMenuItem *menu_item, static void gtk_real_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, - gint allocation) + gint allocation) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); - menu_item->toggle_size = allocation; + menu_item->priv->toggle_size = allocation; } static void gtk_real_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label) + const gchar *label) { GtkWidget *child; @@ -1741,7 +1788,7 @@ gtk_real_menu_item_set_label (GtkMenuItem *menu_item, if (GTK_IS_LABEL (child)) { gtk_label_set_label (GTK_LABEL (child), label ? label : ""); - + g_object_notify (G_OBJECT (menu_item), "label"); } } @@ -1771,18 +1818,18 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget, gboolean remember_exact_time) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; GtkWidget *parent; parent = gtk_widget_get_parent (widget); - if (gtk_widget_is_sensitive (menu_item->submenu) && parent) + if (gtk_widget_is_sensitive (priv->submenu) && parent) { gboolean take_focus; GtkMenuPositionFunc menu_position_func; take_focus = gtk_menu_shell_get_take_focus (GTK_MENU_SHELL (parent)); - gtk_menu_shell_set_take_focus (GTK_MENU_SHELL (menu_item->submenu), - take_focus); + gtk_menu_shell_set_take_focus (GTK_MENU_SHELL (priv->submenu), take_focus); if (remember_exact_time) { @@ -1790,13 +1837,13 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget, g_get_current_time (popup_time); - g_object_set_data_full (G_OBJECT (menu_item->submenu), + g_object_set_data_full (G_OBJECT (priv->submenu), "gtk-menu-exact-popup-time", popup_time, (GDestroyNotify) free_timeval); } else { - g_object_set_data (G_OBJECT (menu_item->submenu), + g_object_set_data (G_OBJECT (priv->submenu), "gtk-menu-exact-popup-time", NULL); } @@ -1811,12 +1858,12 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget, else menu_position_func = NULL; - gtk_menu_popup (GTK_MENU (menu_item->submenu), + gtk_menu_popup (GTK_MENU (priv->submenu), parent, widget, menu_position_func, menu_item, - GTK_MENU_SHELL (parent)->button, + GTK_MENU_SHELL (parent)->priv->button, 0); } @@ -1829,24 +1876,23 @@ gtk_menu_item_real_popup_submenu (GtkWidget *widget, static gint gtk_menu_item_popup_timeout (gpointer data) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (data); + GtkMenuItemPrivate *priv = menu_item->priv; GtkWidget *parent; - - menu_item = GTK_MENU_ITEM (data); parent = gtk_widget_get_parent (GTK_WIDGET (menu_item)); - if ((GTK_IS_MENU_SHELL (parent) && GTK_MENU_SHELL (parent)->active) || - (GTK_IS_MENU (parent) && GTK_MENU (parent)->torn_off)) + if ((GTK_IS_MENU_SHELL (parent) && GTK_MENU_SHELL (parent)->priv->active) || + (GTK_IS_MENU (parent) && GTK_MENU (parent)->priv->torn_off)) { gtk_menu_item_real_popup_submenu (GTK_WIDGET (menu_item), TRUE); - if (menu_item->timer_from_keypress && menu_item->submenu) - GTK_MENU_SHELL (menu_item->submenu)->ignore_enter = TRUE; + if (priv->timer_from_keypress && priv->submenu) + GTK_MENU_SHELL (priv->submenu)->priv->ignore_enter = TRUE; } - menu_item->timer = 0; + priv->timer = 0; - return FALSE; + return FALSE; } static gint @@ -1864,8 +1910,8 @@ get_popup_delay (GtkWidget *widget) gint popup_delay; g_object_get (gtk_widget_get_settings (widget), - "gtk-menu-popup-delay", &popup_delay, - NULL); + "gtk-menu-popup-delay", &popup_delay, + NULL); return popup_delay; } @@ -1876,11 +1922,12 @@ _gtk_menu_item_popup_submenu (GtkWidget *widget, gboolean with_delay) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; - if (menu_item->timer) + if (priv->timer) { - g_source_remove (menu_item->timer); - menu_item->timer = 0; + g_source_remove (priv->timer); + priv->timer = 0; with_delay = FALSE; } @@ -1889,22 +1936,22 @@ _gtk_menu_item_popup_submenu (GtkWidget *widget, gint popup_delay = get_popup_delay (widget); if (popup_delay > 0) - { - GdkEvent *event = gtk_get_current_event (); + { + GdkEvent *event = gtk_get_current_event (); - menu_item->timer = gdk_threads_add_timeout (popup_delay, - gtk_menu_item_popup_timeout, - menu_item); + priv->timer = gdk_threads_add_timeout (popup_delay, + gtk_menu_item_popup_timeout, + menu_item); - if (event && - event->type != GDK_BUTTON_PRESS && - event->type != GDK_ENTER_NOTIFY) - menu_item->timer_from_keypress = TRUE; - else - menu_item->timer_from_keypress = FALSE; + if (event && + event->type != GDK_BUTTON_PRESS && + event->type != GDK_ENTER_NOTIFY) + priv->timer_from_keypress = TRUE; + else + priv->timer_from_keypress = FALSE; - if (event) - gdk_event_free (event); + if (event) + gdk_event_free (event); return; } @@ -1916,22 +1963,21 @@ _gtk_menu_item_popup_submenu (GtkWidget *widget, void _gtk_menu_item_popdown_submenu (GtkWidget *widget) { - GtkMenuItem *menu_item; + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; - menu_item = GTK_MENU_ITEM (widget); - - if (menu_item->submenu) + if (priv->submenu) { - g_object_set_data (G_OBJECT (menu_item->submenu), + g_object_set_data (G_OBJECT (priv->submenu), "gtk-menu-exact-popup-time", NULL); - if (menu_item->timer) + if (priv->timer) { - g_source_remove (menu_item->timer); - menu_item->timer = 0; + g_source_remove (priv->timer); + priv->timer = 0; } else - gtk_menu_popdown (GTK_MENU (menu_item->submenu)); + gtk_menu_popdown (GTK_MENU (priv->submenu)); gtk_widget_queue_draw (widget); } @@ -1939,33 +1985,41 @@ _gtk_menu_item_popdown_submenu (GtkWidget *widget) static void get_offsets (GtkMenu *menu, - gint *horizontal_offset, - gint *vertical_offset) + gint *horizontal_offset, + gint *vertical_offset) { gint vertical_padding; gint horizontal_padding; - - gtk_widget_style_get (GTK_WIDGET (menu), - "horizontal-offset", horizontal_offset, - "vertical-offset", vertical_offset, - "horizontal-padding", &horizontal_padding, - "vertical-padding", &vertical_padding, - NULL); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; - *vertical_offset -= gtk_widget_get_style (GTK_WIDGET (menu))->ythickness; + gtk_widget_style_get (GTK_WIDGET (menu), + "horizontal-offset", horizontal_offset, + "vertical-offset", vertical_offset, + "horizontal-padding", &horizontal_padding, + "vertical-padding", &vertical_padding, + NULL); + + context = gtk_widget_get_style_context (GTK_WIDGET (menu)); + state = gtk_widget_get_state_flags (GTK_WIDGET (menu)); + gtk_style_context_get_padding (context, state, &padding); + + *vertical_offset -= padding.top; *vertical_offset -= vertical_padding; *horizontal_offset += horizontal_padding; } static void gtk_menu_item_position_menu (GtkMenu *menu, - gint *x, - gint *y, - gboolean *push_in, - gpointer user_data) + gint *x, + gint *y, + gboolean *push_in, + gpointer user_data) { + GtkMenuItem *menu_item = GTK_MENU_ITEM (user_data); + GtkMenuItemPrivate *priv = menu_item->priv; GtkAllocation allocation; - GtkMenuItem *menu_item; GtkWidget *widget; GtkMenuItem *parent_menu_item; GtkRequisition requisition; @@ -1978,14 +2032,15 @@ gtk_menu_item_position_menu (GtkMenu *menu, gint monitor_num; gint horizontal_offset; gint vertical_offset; - gint parent_xthickness; gint available_left, available_right; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder parent_padding; g_return_if_fail (menu != NULL); g_return_if_fail (x != NULL); g_return_if_fail (y != NULL); - menu_item = GTK_MENU_ITEM (user_data); widget = GTK_WIDGET (user_data); if (push_in) @@ -1998,13 +2053,12 @@ gtk_menu_item_position_menu (GtkMenu *menu, theight = requisition.height; screen = gtk_widget_get_screen (GTK_WIDGET (menu)); - monitor_num = gdk_screen_get_monitor_at_window (screen, menu_item->event_window); + monitor_num = gdk_screen_get_monitor_at_window (screen, priv->event_window); if (monitor_num < 0) monitor_num = 0; gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); - if (!gdk_window_get_origin (gtk_widget_get_window (widget), - &tx, &ty)) + if (!gdk_window_get_origin (gtk_widget_get_window (widget), &tx, &ty)) { g_warning ("Menu not on screen"); return; @@ -2023,87 +2077,89 @@ gtk_menu_item_position_menu (GtkMenu *menu, parent = gtk_widget_get_parent (widget); if (GTK_IS_MENU_BAR (parent)) { - menu_item->from_menubar = TRUE; + priv->from_menubar = TRUE; } else if (GTK_IS_MENU (parent)) { - if (GTK_MENU (parent)->parent_menu_item) - menu_item->from_menubar = GTK_MENU_ITEM (GTK_MENU (parent)->parent_menu_item)->from_menubar; + if (GTK_MENU (parent)->priv->parent_menu_item) + priv->from_menubar = GTK_MENU_ITEM (GTK_MENU (parent)->priv->parent_menu_item)->priv->from_menubar; else - menu_item->from_menubar = FALSE; + priv->from_menubar = FALSE; } else { - menu_item->from_menubar = FALSE; + priv->from_menubar = FALSE; } - - switch (menu_item->submenu_placement) + + switch (priv->submenu_placement) { case GTK_TOP_BOTTOM: if (direction == GTK_TEXT_DIR_LTR) - menu_item->submenu_direction = GTK_DIRECTION_RIGHT; - else - { - menu_item->submenu_direction = GTK_DIRECTION_LEFT; - tx += allocation.width - twidth; - } - if ((ty + allocation.height + theight) <= monitor.y + monitor.height) - ty += allocation.height; - else if ((ty - theight) >= monitor.y) - ty -= theight; - else if (monitor.y + monitor.height - (ty + allocation.height) > ty) - ty += allocation.height; + priv->submenu_direction = GTK_DIRECTION_RIGHT; else - ty -= theight; + { + priv->submenu_direction = GTK_DIRECTION_LEFT; + tx += allocation.width - twidth; + } + if ((ty + allocation.height + theight) <= monitor.y + monitor.height) + ty += allocation.height; + else if ((ty - theight) >= monitor.y) + ty -= theight; + else if (monitor.y + monitor.height - (ty + allocation.height) > ty) + ty += allocation.height; + else + ty -= theight; break; case GTK_LEFT_RIGHT: if (GTK_IS_MENU (parent)) - parent_menu_item = GTK_MENU_ITEM (GTK_MENU (parent)->parent_menu_item); + parent_menu_item = GTK_MENU_ITEM (GTK_MENU (parent)->priv->parent_menu_item); else - parent_menu_item = NULL; + parent_menu_item = NULL; - parent_xthickness = gtk_widget_get_style (parent)->xthickness; + context = gtk_widget_get_style_context (parent); + state = gtk_widget_get_state_flags (parent); + gtk_style_context_get_padding (context, state, &parent_padding); - if (parent_menu_item && !GTK_MENU (parent)->torn_off) - { - menu_item->submenu_direction = parent_menu_item->submenu_direction; - } + if (parent_menu_item && !GTK_MENU (parent)->priv->torn_off) + { + priv->submenu_direction = parent_menu_item->priv->submenu_direction; + } else - { - if (direction == GTK_TEXT_DIR_LTR) - menu_item->submenu_direction = GTK_DIRECTION_RIGHT; - else - menu_item->submenu_direction = GTK_DIRECTION_LEFT; - } + { + if (direction == GTK_TEXT_DIR_LTR) + priv->submenu_direction = GTK_DIRECTION_RIGHT; + else + priv->submenu_direction = GTK_DIRECTION_LEFT; + } - switch (menu_item->submenu_direction) - { - case GTK_DIRECTION_LEFT: - if (tx - twidth - parent_xthickness - horizontal_offset >= monitor.x || - available_left >= available_right) - tx -= twidth + parent_xthickness + horizontal_offset; - else - { - menu_item->submenu_direction = GTK_DIRECTION_RIGHT; - tx += allocation.width + parent_xthickness + horizontal_offset; - } - break; + switch (priv->submenu_direction) + { + case GTK_DIRECTION_LEFT: + if (tx - twidth - parent_padding.left - horizontal_offset >= monitor.x || + available_left >= available_right) + tx -= twidth + parent_padding.left + horizontal_offset; + else + { + priv->submenu_direction = GTK_DIRECTION_RIGHT; + tx += allocation.width + parent_padding.right + horizontal_offset; + } + break; - case GTK_DIRECTION_RIGHT: - if (tx + allocation.width + parent_xthickness + horizontal_offset + twidth <= monitor.x + monitor.width || - available_right >= available_left) - tx += allocation.width + parent_xthickness + horizontal_offset; - else - { - menu_item->submenu_direction = GTK_DIRECTION_LEFT; - tx -= twidth + parent_xthickness + horizontal_offset; - } - break; - } + case GTK_DIRECTION_RIGHT: + if (tx + allocation.width + parent_padding.right + horizontal_offset + twidth <= monitor.x + monitor.width || + available_right >= available_left) + tx += allocation.width + parent_padding.right + horizontal_offset; + else + { + priv->submenu_direction = GTK_DIRECTION_LEFT; + tx -= twidth + parent_padding.left + horizontal_offset; + } + break; + } ty += vertical_offset; - + /* If the height of the menu doesn't fit we move it upward. */ ty = CLAMP (ty, monitor.y, MAX (monitor.y, monitor.y + monitor.height - theight)); break; @@ -2117,36 +2173,38 @@ gtk_menu_item_position_menu (GtkMenu *menu, gtk_menu_set_monitor (menu, monitor_num); - if (!gtk_widget_get_visible (menu->toplevel)) + if (!gtk_widget_get_visible (menu->priv->toplevel)) { - gtk_window_set_type_hint (GTK_WINDOW (menu->toplevel), menu_item->from_menubar? - GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU : GDK_WINDOW_TYPE_HINT_POPUP_MENU); + gtk_window_set_type_hint (GTK_WINDOW (menu->priv->toplevel), priv->from_menubar? + GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU : GDK_WINDOW_TYPE_HINT_POPUP_MENU); } } /** * gtk_menu_item_set_right_justified: * @menu_item: a #GtkMenuItem. - * @right_justified: if %TRUE the menu item will appear at the - * far right if added to a menu bar. - * + * @right_justified: if %TRUE the menu item will appear at the + * far right if added to a menu bar + * * Sets whether the menu item appears justified at the right - * side of a menu bar. This was traditionally done for "Help" menu - * items, but is now considered a bad idea. (If the widget + * side of a menu bar. This was traditionally done for "Help" + * menu items, but is now considered a bad idea. (If the widget * layout is reversed for a right-to-left language like Hebrew * or Arabic, right-justified-menu-items appear at the left.) **/ void gtk_menu_item_set_right_justified (GtkMenuItem *menu_item, - gboolean right_justified) + gboolean right_justified) { + GtkMenuItemPrivate *priv = menu_item->priv; + g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); right_justified = right_justified != FALSE; - if (right_justified != menu_item->right_justify) + if (priv->right_justify != right_justified) { - menu_item->right_justify = right_justified; + priv->right_justify = right_justified; gtk_widget_queue_resize (GTK_WIDGET (menu_item)); } } @@ -2154,10 +2212,10 @@ gtk_menu_item_set_right_justified (GtkMenuItem *menu_item, /** * gtk_menu_item_get_right_justified: * @menu_item: a #GtkMenuItem - * + * * Gets whether the menu item appears justified at the right * side of the menu bar. - * + * * Return value: %TRUE if the menu item will appear at the * far right if added to a menu bar. **/ @@ -2165,23 +2223,20 @@ gboolean gtk_menu_item_get_right_justified (GtkMenuItem *menu_item) { g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), FALSE); - - return menu_item->right_justify; + + return menu_item->priv->right_justify; } static void gtk_menu_item_show_all (GtkWidget *widget) { - GtkMenuItem *menu_item; - - g_return_if_fail (GTK_IS_MENU_ITEM (widget)); - - menu_item = GTK_MENU_ITEM (widget); + GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); + GtkMenuItemPrivate *priv = menu_item->priv; /* show children including submenu */ - if (menu_item->submenu) - gtk_widget_show_all (menu_item->submenu); + if (priv->submenu) + gtk_widget_show_all (priv->submenu); gtk_container_foreach (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_show_all, NULL); gtk_widget_show (widget); @@ -2189,11 +2244,12 @@ gtk_menu_item_show_all (GtkWidget *widget) static gboolean gtk_menu_item_can_activate_accel (GtkWidget *widget, - guint signal_id) + guint signal_id) { GtkWidget *parent; parent = gtk_widget_get_parent (widget); + /* Chain to the parent GtkMenu for further checks */ return (gtk_widget_is_sensitive (widget) && gtk_widget_get_visible (widget) && parent && gtk_widget_can_activate_accel (parent, signal_id)); @@ -2201,28 +2257,28 @@ gtk_menu_item_can_activate_accel (GtkWidget *widget, static void gtk_menu_item_accel_name_foreach (GtkWidget *widget, - gpointer data) + gpointer data) { const gchar **path_p = data; if (!*path_p) { if (GTK_IS_LABEL (widget)) - { - *path_p = gtk_label_get_text (GTK_LABEL (widget)); - if (*path_p && (*path_p)[0] == 0) - *path_p = NULL; - } + { + *path_p = gtk_label_get_text (GTK_LABEL (widget)); + if (*path_p && (*path_p)[0] == 0) + *path_p = NULL; + } else if (GTK_IS_CONTAINER (widget)) - gtk_container_foreach (GTK_CONTAINER (widget), - gtk_menu_item_accel_name_foreach, - data); + gtk_container_foreach (GTK_CONTAINER (widget), + gtk_menu_item_accel_name_foreach, + data); } } static void gtk_menu_item_parent_set (GtkWidget *widget, - GtkWidget *previous_parent) + GtkWidget *previous_parent) { GtkMenuItem *menu_item = GTK_MENU_ITEM (widget); GtkMenu *menu; @@ -2233,9 +2289,9 @@ gtk_menu_item_parent_set (GtkWidget *widget, if (menu) _gtk_menu_item_refresh_accel_path (menu_item, - menu->accel_path, - menu->accel_group, - TRUE); + menu->priv->accel_path, + menu->priv->accel_group, + TRUE); if (GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->parent_set) GTK_WIDGET_CLASS (gtk_menu_item_parent_class)->parent_set (widget, previous_parent); @@ -2243,10 +2299,11 @@ gtk_menu_item_parent_set (GtkWidget *widget, void _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, - const gchar *prefix, - GtkAccelGroup *accel_group, - gboolean group_changed) + const gchar *prefix, + GtkAccelGroup *accel_group, + gboolean group_changed) { + GtkMenuItemPrivate *priv = menu_item->priv; const gchar *path; GtkWidget *widget; @@ -2262,72 +2319,74 @@ _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, } path = _gtk_widget_get_accel_path (widget, NULL); - if (!path) /* no active accel_path yet */ + if (!path) /* no active accel_path yet */ { - path = menu_item->accel_path; + path = priv->accel_path; if (!path && prefix) - { - const gchar *postfix = NULL; + { + const gchar *postfix = NULL; gchar *new_path; - /* try to construct one from label text */ - gtk_container_foreach (GTK_CONTAINER (menu_item), - gtk_menu_item_accel_name_foreach, - &postfix); + /* try to construct one from label text */ + gtk_container_foreach (GTK_CONTAINER (menu_item), + gtk_menu_item_accel_name_foreach, + &postfix); if (postfix) { new_path = g_strconcat (prefix, "/", postfix, NULL); - path = menu_item->accel_path = (char*)g_intern_string (new_path); + path = priv->accel_path = (char*)g_intern_string (new_path); g_free (new_path); } - } + } if (path) - gtk_widget_set_accel_path (widget, path, accel_group); + gtk_widget_set_accel_path (widget, path, accel_group); } - else if (group_changed) /* reinstall accelerators */ + else if (group_changed) /* reinstall accelerators */ gtk_widget_set_accel_path (widget, path, accel_group); } /** * gtk_menu_item_set_accel_path * @menu_item: a valid #GtkMenuItem - * @accel_path: (allow-none): accelerator path, corresponding to this menu item's - * functionality, or %NULL to unset the current path. + * @accel_path: (allow-none): accelerator path, corresponding to this menu + * item's functionality, or %NULL to unset the current path. * - * Set the accelerator path on @menu_item, through which runtime changes of the - * menu item's accelerator caused by the user can be identified and saved to - * persistant storage (see gtk_accel_map_save() on this). - * To setup a default accelerator for this menu item, call - * gtk_accel_map_add_entry() with the same @accel_path. - * See also gtk_accel_map_add_entry() on the specifics of accelerator paths, - * and gtk_menu_set_accel_path() for a more convenient variant of this function. + * Set the accelerator path on @menu_item, through which runtime + * changes of the menu item's accelerator caused by the user can be + * identified and saved to persistent storage (see gtk_accel_map_save() + * on this). To set up a default accelerator for this menu item, call + * gtk_accel_map_add_entry() with the same @accel_path. See also + * gtk_accel_map_add_entry() on the specifics of accelerator paths, + * and gtk_menu_set_accel_path() for a more convenient variant of + * this function. * - * This function is basically a convenience wrapper that handles calling - * gtk_widget_set_accel_path() with the appropriate accelerator group for - * the menu item. + * This function is basically a convenience wrapper that handles + * calling gtk_widget_set_accel_path() with the appropriate accelerator + * group for the menu item. * * Note that you do need to set an accelerator on the parent menu with * gtk_menu_set_accel_group() for this to work. * - * Note that @accel_path string will be stored in a #GQuark. Therefore, if you - * pass a static string, you can save some memory by interning it first with - * g_intern_static_string(). + * Note that @accel_path string will be stored in a #GQuark. + * Therefore, if you pass a static string, you can save some memory + * by interning it first with g_intern_static_string(). */ void gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, - const gchar *accel_path) + const gchar *accel_path) { + GtkMenuItemPrivate *priv = menu_item->priv; GtkWidget *parent; GtkWidget *widget; g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); g_return_if_fail (accel_path == NULL || - (accel_path[0] == '<' && strchr (accel_path, '/'))); + (accel_path[0] == '<' && strchr (accel_path, '/'))); widget = GTK_WIDGET (menu_item); /* store new path */ - menu_item->accel_path = (char*)g_intern_string (accel_path); + priv->accel_path = (char*)g_intern_string (accel_path); /* forget accelerators associated with old path */ gtk_widget_set_accel_path (widget, NULL, NULL); @@ -2338,11 +2397,11 @@ gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, { GtkMenu *menu = GTK_MENU (parent); - if (menu->accel_group) - _gtk_menu_item_refresh_accel_path (GTK_MENU_ITEM (widget), - NULL, - menu->accel_group, - FALSE); + if (menu->priv->accel_group) + _gtk_menu_item_refresh_accel_path (GTK_MENU_ITEM (widget), + NULL, + menu->priv->accel_group, + FALSE); } } @@ -2354,8 +2413,8 @@ gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, * * See gtk_menu_item_set_accel_path() for details. * - * Returns: the accelerator path corresponding to this menu item's - * functionality, or %NULL if not set + * Returns: the accelerator path corresponding to this menu + * item's functionality, or %NULL if not set * * Since: 2.14 */ @@ -2364,14 +2423,14 @@ gtk_menu_item_get_accel_path (GtkMenuItem *menu_item) { g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), NULL); - return menu_item->accel_path; + return menu_item->priv->accel_path; } static void gtk_menu_item_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) { GtkWidget *child; @@ -2407,8 +2466,8 @@ gtk_menu_item_ensure_label (GtkMenuItem *menu_item) gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (menu_item), accel_label); - gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), - GTK_WIDGET (menu_item)); + gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (accel_label), + GTK_WIDGET (menu_item)); gtk_widget_show (accel_label); } } @@ -2421,10 +2480,10 @@ gtk_menu_item_ensure_label (GtkMenuItem *menu_item) * Sets @text on the @menu_item label * * Since: 2.16 - **/ + */ void gtk_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label) + const gchar *label) { g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); @@ -2441,7 +2500,7 @@ gtk_menu_item_set_label (GtkMenuItem *menu_item, * string used by the label, and must not be modified. * * Since: 2.16 - **/ + */ G_CONST_RETURN gchar * gtk_menu_item_get_label (GtkMenuItem *menu_item) { @@ -2453,16 +2512,16 @@ gtk_menu_item_get_label (GtkMenuItem *menu_item) /** * gtk_menu_item_set_use_underline: * @menu_item: a #GtkMenuItem - * @setting: %TRUE if underlines in the text indicate mnemonics + * @setting: %TRUE if underlines in the text indicate mnemonics * - * If true, an underline in the text indicates the next character should be - * used for the mnemonic accelerator key. + * If true, an underline in the text indicates the next character + * should be used for the mnemonic accelerator key. * * Since: 2.16 - **/ + */ void gtk_menu_item_set_use_underline (GtkMenuItem *menu_item, - gboolean setting) + gboolean setting) { GtkWidget *child; @@ -2483,14 +2542,14 @@ gtk_menu_item_set_use_underline (GtkMenuItem *menu_item, * gtk_menu_item_get_use_underline: * @menu_item: a #GtkMenuItem * - * Checks if an underline in the text indicates the next character should be - * used for the mnemonic accelerator key. + * Checks if an underline in the text indicates the next character + * should be used for the mnemonic accelerator key. * - * Return value: %TRUE if an embedded underline in the label indicates - * the mnemonic accelerator key. + * Return value: %TRUE if an embedded underline in the label + * indicates the mnemonic accelerator key. * * Since: 2.16 - **/ + */ gboolean gtk_menu_item_get_use_underline (GtkMenuItem *menu_item) { @@ -2506,3 +2565,28 @@ gtk_menu_item_get_use_underline (GtkMenuItem *menu_item) return FALSE; } + +void +gtk_menu_item_set_reserve_indicator (GtkMenuItem *menu_item, + gboolean reserve) +{ + GtkMenuItemPrivate *priv; + + g_return_if_fail (GTK_IS_MENU_ITEM (menu_item)); + + priv = menu_item->priv; + + if (priv->reserve_indicator != reserve) + { + priv->reserve_indicator = reserve; + gtk_widget_queue_resize (GTK_WIDGET (menu_item)); + } +} + +gboolean +gtk_menu_item_get_reserve_indicator (GtkMenuItem *menu_item) +{ + g_return_val_if_fail (GTK_IS_MENU_ITEM (menu_item), FALSE); + + return menu_item->priv->reserve_indicator; +} diff --git a/gtk/gtkmenuitem.h b/gtk/gtkmenuitem.h index cadccc02e5..4132e42286 100644 --- a/gtk/gtkmenuitem.h +++ b/gtk/gtkmenuitem.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -36,57 +36,46 @@ G_BEGIN_DECLS -#define GTK_TYPE_MENU_ITEM (gtk_menu_item_get_type ()) -#define GTK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItem)) -#define GTK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) -#define GTK_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_ITEM)) -#define GTK_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_ITEM)) -#define GTK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) +#define GTK_TYPE_MENU_ITEM (gtk_menu_item_get_type ()) +#define GTK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItem)) +#define GTK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) +#define GTK_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_ITEM)) +#define GTK_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_ITEM)) +#define GTK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) -typedef struct _GtkMenuItem GtkMenuItem; -typedef struct _GtkMenuItemClass GtkMenuItemClass; +typedef struct _GtkMenuItem GtkMenuItem; +typedef struct _GtkMenuItemClass GtkMenuItemClass; +typedef struct _GtkMenuItemPrivate GtkMenuItemPrivate; struct _GtkMenuItem { GtkBin bin; - GtkWidget *GSEAL (submenu); - GdkWindow *GSEAL (event_window); - - guint16 GSEAL (toggle_size); - guint16 GSEAL (accelerator_width); - gchar *GSEAL (accel_path); - - guint GSEAL (show_submenu_indicator) : 1; - guint GSEAL (submenu_placement) : 1; - guint GSEAL (submenu_direction) : 1; - guint GSEAL (right_justify): 1; - guint GSEAL (timer_from_keypress) : 1; - guint GSEAL (from_menubar) : 1; - guint GSEAL (timer); + /*< private >*/ + GtkMenuItemPrivate *priv; }; struct _GtkMenuItemClass { GtkBinClass parent_class; - - /* If the following flag is true, then we should always hide - * the menu when the MenuItem is activated. Otherwise, the + + /* If the following flag is true, then we should always + * hide the menu when the MenuItem is activated. Otherwise, * it is up to the caller. For instance, when navigating * a menu with the keyboard, doesn't hide, but * does. */ guint hide_on_activate : 1; - + void (* activate) (GtkMenuItem *menu_item); void (* activate_item) (GtkMenuItem *menu_item); void (* toggle_size_request) (GtkMenuItem *menu_item, - gint *requisition); + gint *requisition); void (* toggle_size_allocate) (GtkMenuItem *menu_item, - gint allocation); + gint allocation); void (* set_label) (GtkMenuItem *menu_item, - const gchar *label); + const gchar *label); G_CONST_RETURN gchar *(* get_label) (GtkMenuItem *menu_item); void (* select) (GtkMenuItem *menu_item); @@ -100,44 +89,39 @@ struct _GtkMenuItemClass }; -GType gtk_menu_item_get_type (void) G_GNUC_CONST; +GType gtk_menu_item_get_type (void) G_GNUC_CONST; + GtkWidget* gtk_menu_item_new (void); GtkWidget* gtk_menu_item_new_with_label (const gchar *label); GtkWidget* gtk_menu_item_new_with_mnemonic (const gchar *label); void gtk_menu_item_set_submenu (GtkMenuItem *menu_item, - GtkWidget *submenu); + GtkWidget *submenu); GtkWidget* gtk_menu_item_get_submenu (GtkMenuItem *menu_item); void gtk_menu_item_select (GtkMenuItem *menu_item); void gtk_menu_item_deselect (GtkMenuItem *menu_item); void gtk_menu_item_activate (GtkMenuItem *menu_item); void gtk_menu_item_toggle_size_request (GtkMenuItem *menu_item, - gint *requisition); + gint *requisition); void gtk_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, - gint allocation); + gint allocation); void gtk_menu_item_set_right_justified (GtkMenuItem *menu_item, - gboolean right_justified); + gboolean right_justified); gboolean gtk_menu_item_get_right_justified (GtkMenuItem *menu_item); -void gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, - const gchar *accel_path); +void gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, + const gchar *accel_path); G_CONST_RETURN gchar* gtk_menu_item_get_accel_path (GtkMenuItem *menu_item); void gtk_menu_item_set_label (GtkMenuItem *menu_item, - const gchar *label); + const gchar *label); G_CONST_RETURN gchar *gtk_menu_item_get_label (GtkMenuItem *menu_item); void gtk_menu_item_set_use_underline (GtkMenuItem *menu_item, - gboolean setting); + gboolean setting); gboolean gtk_menu_item_get_use_underline (GtkMenuItem *menu_item); -/* private */ -void _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, - const gchar *prefix, - GtkAccelGroup *accel_group, - gboolean group_changed); -gboolean _gtk_menu_item_is_selectable (GtkWidget *menu_item); -void _gtk_menu_item_popup_submenu (GtkWidget *menu_item, - gboolean with_delay); -void _gtk_menu_item_popdown_submenu (GtkWidget *menu_item); +void gtk_menu_item_set_reserve_indicator(GtkMenuItem *menu_item, + gboolean reserve); +gboolean gtk_menu_item_get_reserve_indicator(GtkMenuItem *menu_item); G_END_DECLS diff --git a/gtk/gtkmenuitemprivate.h b/gtk/gtkmenuitemprivate.h new file mode 100644 index 0000000000..df7632fa3c --- /dev/null +++ b/gtk/gtkmenuitemprivate.h @@ -0,0 +1,71 @@ +/* GTK - The GIMP Toolkit + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GTK_MENU_ITEM_PRIVATE_H__ +#define __GTK_MENU_ITEM_PRIVATE_H__ + +#include +#include + + +G_BEGIN_DECLS + +struct _GtkMenuItemPrivate +{ + GtkWidget *submenu; + GdkWindow *event_window; + + guint16 toggle_size; + guint16 accelerator_width; + gchar *accel_path; + + guint show_submenu_indicator : 1; + guint submenu_placement : 1; + guint submenu_direction : 1; + guint right_justify : 1; + guint timer_from_keypress : 1; + guint from_menubar : 1; + guint use_action_appearance : 1; + guint reserve_indicator : 1; + + guint timer; + + GtkAction *action; +}; + +void _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, + const gchar *prefix, + GtkAccelGroup *accel_group, + gboolean group_changed); +gboolean _gtk_menu_item_is_selectable (GtkWidget *menu_item); +void _gtk_menu_item_popup_submenu (GtkWidget *menu_item, + gboolean with_delay); +void _gtk_menu_item_popdown_submenu (GtkWidget *menu_item); +void _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, + const gchar *prefix, + GtkAccelGroup *accel_group, + gboolean group_changed); +gboolean _gtk_menu_item_is_selectable (GtkWidget *menu_item); +void _gtk_menu_item_popup_submenu (GtkWidget *menu_item, + gboolean with_delay); +void _gtk_menu_item_popdown_submenu (GtkWidget *menu_item); + +G_END_DECLS + +#endif /* __GTK_MENU_ITEM_PRIVATE_H__ */ diff --git a/gtk/gtkmenuprivate.h b/gtk/gtkmenuprivate.h index 9c1e0b39d2..cbac9fdea1 100644 --- a/gtk/gtkmenuprivate.h +++ b/gtk/gtkmenuprivate.h @@ -26,6 +26,10 @@ #ifndef __GTK_MENU_PRIVATE_H__ #define __GTK_MENU_PRIVATE_H__ +#include + +G_BEGIN_DECLS + /* Directions for submenus */ typedef enum { @@ -41,4 +45,89 @@ typedef enum } GtkSubmenuPlacement; +struct _GtkMenuPrivate +{ + GtkWidget *parent_menu_item; + GtkWidget *old_active_menu_item; + + GtkAccelGroup *accel_group; + gchar *accel_path; + + GtkMenuPositionFunc position_func; + gpointer position_func_data; + GDestroyNotify position_func_data_destroy; + gint position_x; + gint position_y; + + guint toggle_size; + guint accel_size; + + /* Do _not_ touch these widgets directly. We hide the reference + * count from the toplevel to the menu, so it must be restored + * before operating on these widgets + */ + GtkWidget *toplevel; + + GtkWidget *tearoff_window; + GtkWidget *tearoff_hbox; + GtkWidget *tearoff_scrollbar; + GtkAdjustment *tearoff_adjustment; + + GdkWindow *view_window; + GdkWindow *bin_window; + + gint scroll_offset; + gint saved_scroll_offset; + gint scroll_step; + + guint scroll_timeout; + + guint needs_destruction_ref : 1; + guint torn_off : 1; + /* The tearoff is active when it is torn off and the not-torn-off + * menu is not popped up. + */ + guint tearoff_active : 1; + guint scroll_fast : 1; + + guint upper_arrow_visible : 1; + guint lower_arrow_visible : 1; + guint upper_arrow_prelight : 1; + guint lower_arrow_prelight : 1; + + guint have_position : 1; + guint have_layout : 1; + guint seen_item_enter : 1; + guint ignore_button_release : 1; + guint no_toggle_size : 1; + + /* info used for the table */ + guint *heights; + gint heights_length; + gint requested_height; + + gboolean initially_pushed_in; + gint monitor_num; + + /* Cached layout information */ + gint n_rows; + gint n_columns; + + gchar *title; + + /* Arrow states */ + GtkStateFlags lower_arrow_state; + GtkStateFlags upper_arrow_state; + + /* navigation region */ + gint navigation_x; + gint navigation_y; + gint navigation_width; + gint navigation_height; + + guint navigation_timeout; +}; + +G_END_DECLS + #endif /* __GTK_MENU_PRIVATE_H__ */ diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index 7b94ce9b25..172b5766c0 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -24,23 +24,36 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkmenushell + * @Title: GtkMenuShell + * @Short_description: A base class for menu objects + * + * A #GtkMenuShell is the abstract base class used to derive the + * #GtkMenu and #GtkMenuBar subclasses. + * + * A #GtkMenuShell is a container of #GtkMenuItem objects arranged + * in a list which can be navigated, selected, and activated by the + * user to perform application functions. A #GtkMenuItem can have a + * submenu associated with it, allowing for nested hierarchical menus. + */ #include "config.h" -#include "gdk/gdkkeysyms.h" + #include "gtkbindings.h" #include "gtkkeyhash.h" #include "gtklabel.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" -#include "gtkmenu.h" #include "gtkmenubar.h" -#include "gtkmenuitem.h" -#include "gtkmenushell.h" +#include "gtkmenuitemprivate.h" +#include "gtkmenushellprivate.h" #include "gtkmenuprivate.h" #include "gtkmnemonichash.h" #include "gtktearoffmenuitem.h" #include "gtkwindow.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" #define MENU_SHELL_TIMEOUT 500 @@ -124,24 +137,6 @@ enum { * Cancels the current selection */ -#define GTK_MENU_SHELL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShellPrivate)) - -typedef struct _GtkMenuShellPrivate GtkMenuShellPrivate; - -struct _GtkMenuShellPrivate -{ - GtkMnemonicHash *mnemonic_hash; - GtkKeyHash *key_hash; - - GdkDevice *grab_pointer; - - guint take_focus : 1; - guint activated_submenu : 1; - /* This flag is a crutch to keep mnemonics in the same menu - * if the user moves the mouse over an unselectable menuitem. - */ - guint in_unselectable_item : 1; -}; static void gtk_menu_shell_set_property (GObject *object, guint prop_id, @@ -155,53 +150,53 @@ static void gtk_menu_shell_realize (GtkWidget *widget); static void gtk_menu_shell_finalize (GObject *object); static void gtk_menu_shell_dispose (GObject *object); static gint gtk_menu_shell_button_press (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gint gtk_menu_shell_button_release (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_menu_shell_key_press (GtkWidget *widget, - GdkEventKey *event); + GdkEventButton *event); +static gint gtk_menu_shell_key_press (GtkWidget *widget, + GdkEventKey *event); static gint gtk_menu_shell_enter_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gint gtk_menu_shell_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static void gtk_menu_shell_screen_changed (GtkWidget *widget, - GdkScreen *previous_screen); + GdkScreen *previous_screen); static gboolean gtk_menu_shell_grab_broken (GtkWidget *widget, - GdkEventGrabBroken *event); + GdkEventGrabBroken *event); static void gtk_menu_shell_add (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_menu_shell_remove (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_menu_shell_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); static void gtk_menu_shell_real_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position); + GtkWidget *child, + gint position); static void gtk_real_menu_shell_deactivate (GtkMenuShell *menu_shell); static gint gtk_menu_shell_is_item (GtkMenuShell *menu_shell, - GtkWidget *child); + GtkWidget *child); static GtkWidget *gtk_menu_shell_get_item (GtkMenuShell *menu_shell, - GdkEvent *event); + GdkEvent *event); static GType gtk_menu_shell_child_type (GtkContainer *container); static void gtk_menu_shell_real_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item); + GtkWidget *menu_item); static gboolean gtk_menu_shell_select_submenu_first (GtkMenuShell *menu_shell); static void gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell, - GtkMenuDirectionType direction); + GtkMenuDirectionType direction); static void gtk_real_menu_shell_activate_current (GtkMenuShell *menu_shell, - gboolean force_hide); + gboolean force_hide); static void gtk_real_menu_shell_cancel (GtkMenuShell *menu_shell); static void gtk_real_menu_shell_cycle_focus (GtkMenuShell *menu_shell, - GtkDirectionType dir); + GtkDirectionType dir); static void gtk_menu_shell_reset_key_hash (GtkMenuShell *menu_shell); static gboolean gtk_menu_shell_activate_mnemonic (GtkMenuShell *menu_shell, - GdkEventKey *event); + GdkEventKey *event); static gboolean gtk_menu_shell_real_move_selected (GtkMenuShell *menu_shell, - gint distance); + gint distance); static guint menu_shell_signals[LAST_SIGNAL] = { 0 }; @@ -249,53 +244,97 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass) klass->insert = gtk_menu_shell_real_insert; klass->move_selected = gtk_menu_shell_real_move_selected; + /** + * GtkMenuShell::deactivate: + * @menushell: the object which received the signal + * + * This signal is emitted when a menu shell is deactivated. + */ menu_shell_signals[DEACTIVATE] = g_signal_new (I_("deactivate"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuShellClass, deactivate), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuShellClass, deactivate), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); + /** + * GtkMenuShell::selection-done: + * @menushell: the object which received the signal + * + * This signal is emitted when a selection has been + * completed within a menu shell. + */ menu_shell_signals[SELECTION_DONE] = g_signal_new (I_("selection-done"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuShellClass, selection_done), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GtkMenuShellClass, selection_done), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); + /** + * GtkMenuShell::move-current: + * @menushell: the object which received the signal + * @direction: the direction to move + * + * An keybinding signal which moves the current menu item + * in the direction specified by @direction. + */ menu_shell_signals[MOVE_CURRENT] = g_signal_new (I_("move-current"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (GtkMenuShellClass, move_current), - NULL, NULL, - _gtk_marshal_VOID__ENUM, - G_TYPE_NONE, 1, - GTK_TYPE_MENU_DIRECTION_TYPE); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkMenuShellClass, move_current), + NULL, NULL, + _gtk_marshal_VOID__ENUM, + G_TYPE_NONE, 1, + GTK_TYPE_MENU_DIRECTION_TYPE); + /** + * GtkMenuShell::activate-current: + * @menushell: the object which received the signal + * @force_hide: if %TRUE, hide the menu after activating the menu item + * + * An action signal that activates the current menu item within + * the menu shell. + */ menu_shell_signals[ACTIVATE_CURRENT] = g_signal_new (I_("activate-current"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (GtkMenuShellClass, activate_current), - NULL, NULL, - _gtk_marshal_VOID__BOOLEAN, - G_TYPE_NONE, 1, - G_TYPE_BOOLEAN); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkMenuShellClass, activate_current), + NULL, NULL, + _gtk_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, + G_TYPE_BOOLEAN); + /** + * GtkMenuShell::cancel: + * @menushell: the object which received the signal + * + * An action signal which cancels the selection within the menu shell. + * Causes the #GtkMenuShell::selection-done signal to be emitted. + */ menu_shell_signals[CANCEL] = g_signal_new (I_("cancel"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (GtkMenuShellClass, cancel), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (GtkMenuShellClass, cancel), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); + /** + * GtkMenuShell::cycle-focus: + * @menushell: the object which received the signal + * @direction: the direction to cycle in + * + * A keybinding signal which moves the focus in the + * given @direction. + */ menu_shell_signals[CYCLE_FOCUS] = g_signal_new_class_handler (I_("cycle-focus"), G_OBJECT_CLASS_TYPE (object_class), @@ -320,50 +359,50 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass) */ menu_shell_signals[MOVE_SELECTED] = g_signal_new (I_("move-selected"), - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkMenuShellClass, move_selected), - _gtk_boolean_handled_accumulator, NULL, - _gtk_marshal_BOOLEAN__INT, - G_TYPE_BOOLEAN, 1, - G_TYPE_INT); + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkMenuShellClass, move_selected), + _gtk_boolean_handled_accumulator, NULL, + _gtk_marshal_BOOLEAN__INT, + G_TYPE_BOOLEAN, 1, + G_TYPE_INT); binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Escape, 0, - "cancel", 0); + GDK_KEY_Escape, 0, + "cancel", 0); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Return, 0, - "activate-current", 1, - G_TYPE_BOOLEAN, - TRUE); + GDK_KEY_Return, 0, + "activate-current", 1, + G_TYPE_BOOLEAN, + TRUE); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_ISO_Enter, 0, - "activate-current", 1, - G_TYPE_BOOLEAN, - TRUE); + GDK_KEY_ISO_Enter, 0, + "activate-current", 1, + G_TYPE_BOOLEAN, + TRUE); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Enter, 0, - "activate-current", 1, - G_TYPE_BOOLEAN, - TRUE); + GDK_KEY_KP_Enter, 0, + "activate-current", 1, + G_TYPE_BOOLEAN, + TRUE); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_space, 0, - "activate-current", 1, - G_TYPE_BOOLEAN, - FALSE); + GDK_KEY_space, 0, + "activate-current", 1, + G_TYPE_BOOLEAN, + FALSE); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_KP_Space, 0, - "activate-current", 1, - G_TYPE_BOOLEAN, - FALSE); + GDK_KEY_KP_Space, 0, + "activate-current", 1, + G_TYPE_BOOLEAN, + FALSE); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_F10, 0, - "cycle-focus", 1, + GDK_KEY_F10, 0, + "cycle-focus", 1, GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_FORWARD); gtk_binding_entry_add_signal (binding_set, - GDK_KEY_F10, GDK_SHIFT_MASK, - "cycle-focus", 1, + GDK_KEY_F10, GDK_SHIFT_MASK, + "cycle-focus", 1, GTK_TYPE_DIRECTION_TYPE, GTK_DIR_TAB_BACKWARD); /** @@ -378,16 +417,16 @@ gtk_menu_shell_class_init (GtkMenuShellClass *klass) g_object_class_install_property (object_class, PROP_TAKE_FOCUS, g_param_spec_boolean ("take-focus", - P_("Take Focus"), - P_("A boolean that determines whether the menu grabs the keyboard focus"), - TRUE, - GTK_PARAM_READWRITE)); + P_("Take Focus"), + P_("A boolean that determines whether the menu grabs the keyboard focus"), + TRUE, + GTK_PARAM_READWRITE)); g_type_class_add_private (object_class, sizeof (GtkMenuShellPrivate)); } static GType -gtk_menu_shell_child_type (GtkContainer *container) +gtk_menu_shell_child_type (GtkContainer *container) { return GTK_TYPE_MENU_ITEM; } @@ -395,21 +434,13 @@ gtk_menu_shell_child_type (GtkContainer *container) static void gtk_menu_shell_init (GtkMenuShell *menu_shell) { - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv; - menu_shell->children = NULL; - menu_shell->active_menu_item = NULL; - menu_shell->parent_menu_shell = NULL; - menu_shell->active = FALSE; - menu_shell->have_grab = FALSE; - menu_shell->have_xgrab = FALSE; - menu_shell->button = 0; - menu_shell->activate_time = 0; - - priv->mnemonic_hash = NULL; - priv->key_hash = NULL; + priv = G_TYPE_INSTANCE_GET_PRIVATE (menu_shell, + GTK_TYPE_MENU_SHELL, + GtkMenuShellPrivate); + menu_shell->priv = priv; priv->take_focus = TRUE; - priv->activated_submenu = FALSE; } static void @@ -432,10 +463,10 @@ gtk_menu_shell_set_property (GObject *object, } static void -gtk_menu_shell_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +gtk_menu_shell_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); @@ -454,7 +485,7 @@ static void gtk_menu_shell_finalize (GObject *object) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; if (priv->mnemonic_hash) _gtk_mnemonic_hash_free (priv->mnemonic_hash); @@ -465,34 +496,58 @@ gtk_menu_shell_finalize (GObject *object) } -static void -gtk_menu_shell_dispose (GObject *object) +static void +gtk_menu_shell_dispose (GObject *object) { - GtkMenuShell *menu_shell = GTK_MENU_SHELL (object); - - gtk_menu_shell_deactivate (menu_shell); + gtk_menu_shell_deactivate (GTK_MENU_SHELL (object)); G_OBJECT_CLASS (gtk_menu_shell_parent_class)->dispose (object); } +/** + * gtk_menu_shell_append: + * @menu_shell: a #GtkMenuShell + * @child: The #GtkMenuItem to add + * + * Adds a new #GtkMenuItem to the end of the menu shell's + * item list. + */ void gtk_menu_shell_append (GtkMenuShell *menu_shell, - GtkWidget *child) + GtkWidget *child) { gtk_menu_shell_insert (menu_shell, child, -1); } +/** + * gtk_menu_shell_prepend: + * @menu_shell: a #GtkMenuShell + * @child: The #GtkMenuItem to add + * + * Adds a new #GtkMenuItem to the beginning of the menu shell's + * item list. + */ void gtk_menu_shell_prepend (GtkMenuShell *menu_shell, - GtkWidget *child) + GtkWidget *child) { gtk_menu_shell_insert (menu_shell, child, 0); } +/** + * gtk_menu_shell_insert: + * @menu_shell: a #GtkMenuShell + * @child: The #GtkMenuItem to add + * @position: The position in the item list where @child + * is added. Positions are numbered from 0 to n-1 + * + * Adds a new #GtkMenuItem to the menu shell's item list + * at the position indicated by @position. + */ void gtk_menu_shell_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position) + GtkWidget *child, + gint position) { GtkMenuShellClass *class; @@ -507,14 +562,25 @@ gtk_menu_shell_insert (GtkMenuShell *menu_shell, static void gtk_menu_shell_real_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position) + GtkWidget *child, + gint position) { - menu_shell->children = g_list_insert (menu_shell->children, child, position); + GtkMenuShellPrivate *priv = menu_shell->priv; + + priv->children = g_list_insert (priv->children, child, position); gtk_widget_set_parent (child, GTK_WIDGET (menu_shell)); } +/** + * gtk_menu_shell_deactivate: + * @menu_shell: a #GtkMenuShell + * + * Deactivates the menu shell. + * + * Typically this results in the menu shell being erased + * from the screen. + */ void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell) { @@ -530,6 +596,7 @@ gtk_menu_shell_realize (GtkWidget *widget) GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; + GtkStyleContext *context; gtk_widget_set_realized (widget, TRUE); @@ -544,11 +611,11 @@ gtk_menu_shell_realize (GtkWidget *widget) attributes.visual = gtk_widget_get_visual (widget); attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= (GDK_EXPOSURE_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_KEY_PRESS_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK); + GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_KEY_PRESS_MASK | + GDK_ENTER_NOTIFY_MASK | + GDK_LEAVE_NOTIFY_MASK); attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; @@ -557,14 +624,16 @@ gtk_menu_shell_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_NORMAL); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_background (context, window); } void _gtk_menu_shell_activate (GtkMenuShell *menu_shell) { - if (!menu_shell->active) + GtkMenuShellPrivate *priv = menu_shell->priv; + + if (!priv->active) { GdkDevice *device; @@ -573,16 +642,17 @@ _gtk_menu_shell_activate (GtkMenuShell *menu_shell) _gtk_menu_shell_set_grab_device (menu_shell, device); gtk_device_grab_add (GTK_WIDGET (menu_shell), device, TRUE); - menu_shell->have_grab = TRUE; - menu_shell->active = TRUE; + priv->have_grab = TRUE; + priv->active = TRUE; } } static gint gtk_menu_shell_button_press (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkMenuShell *menu_shell; + GtkMenuShellPrivate *priv; GtkWidget *menu_item; GtkWidget *parent; @@ -590,9 +660,10 @@ gtk_menu_shell_button_press (GtkWidget *widget, return FALSE; menu_shell = GTK_MENU_SHELL (widget); + priv = menu_shell->priv; - if (menu_shell->parent_menu_shell) - return gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent*) event); + if (priv->parent_menu_shell) + return gtk_widget_event (priv->parent_menu_shell, (GdkEvent*) event); menu_item = gtk_menu_shell_get_item (menu_shell, (GdkEvent *)event); @@ -600,7 +671,7 @@ gtk_menu_shell_button_press (GtkWidget *widget, { parent = gtk_widget_get_parent (menu_item); - if (menu_item != GTK_MENU_SHELL (parent)->active_menu_item) + if (menu_item != GTK_MENU_SHELL (parent)->priv->active_menu_item) { /* select the menu item *before* activating the shell, so submenus * which might be open are closed the friendly way. If we activate @@ -614,24 +685,24 @@ gtk_menu_shell_button_press (GtkWidget *widget, } } - if (!menu_shell->active || !menu_shell->button) + if (!priv->active || !priv->button) { - gboolean initially_active = menu_shell->active; + gboolean initially_active = priv->active; - menu_shell->button = event->button; + priv->button = event->button; if (menu_item) { if (_gtk_menu_item_is_selectable (menu_item) && gtk_widget_get_parent (menu_item) == widget && - menu_item != menu_shell->active_menu_item) + menu_item != priv->active_menu_item) { _gtk_menu_shell_activate (menu_shell); - menu_shell->button = event->button; + priv->button = event->button; if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement == GTK_TOP_BOTTOM) { - menu_shell->activate_time = event->time; + priv->activate_time = event->time; gtk_menu_shell_select_item (menu_shell, menu_item); } } @@ -662,21 +733,18 @@ gtk_menu_shell_button_press (GtkWidget *widget, { widget = gtk_get_event_widget ((GdkEvent*) event); if (widget == GTK_WIDGET (menu_shell)) - { - gtk_menu_shell_deactivate (menu_shell); - g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); - } + { + gtk_menu_shell_deactivate (menu_shell); + g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); + } } - if (menu_item && _gtk_menu_item_is_selectable (menu_item) && - GTK_MENU_ITEM (menu_item)->submenu != NULL && - !gtk_widget_get_visible (GTK_MENU_ITEM (menu_item)->submenu)) + if (menu_item && + _gtk_menu_item_is_selectable (menu_item) && + GTK_MENU_ITEM (menu_item)->priv->submenu != NULL && + !gtk_widget_get_visible (GTK_MENU_ITEM (menu_item)->priv->submenu)) { - GtkMenuShellPrivate *priv; - _gtk_menu_item_popup_submenu (menu_item, FALSE); - - priv = GTK_MENU_SHELL_GET_PRIVATE (gtk_widget_get_parent (menu_item)); priv->activated_submenu = TRUE; } @@ -685,17 +753,15 @@ gtk_menu_shell_button_press (GtkWidget *widget, static gboolean gtk_menu_shell_grab_broken (GtkWidget *widget, - GdkEventGrabBroken *event) + GdkEventGrabBroken *event) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); + GtkMenuShellPrivate *priv = menu_shell->priv; - if (menu_shell->have_xgrab && event->grab_window == NULL) + if (priv->have_xgrab && event->grab_window == NULL) { - /* Unset the active menu item so gtk_menu_popdown() doesn't see it. - */ - + /* Unset the active menu item so gtk_menu_popdown() doesn't see it. */ gtk_menu_shell_deselect (menu_shell); - gtk_menu_shell_deactivate (menu_shell); g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); } @@ -705,37 +771,36 @@ gtk_menu_shell_grab_broken (GtkWidget *widget, static gint gtk_menu_shell_button_release (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (widget); + GtkMenuShellPrivate *priv = menu_shell->priv; - if (menu_shell->active) + if (priv->active) { GtkWidget *menu_item; gboolean deactivate = TRUE; - if (menu_shell->button && (event->button != menu_shell->button)) - { - menu_shell->button = 0; - if (menu_shell->parent_menu_shell) - return gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent*) event); - } + if (priv->button && (event->button != priv->button)) + { + priv->button = 0; + if (priv->parent_menu_shell) + return gtk_widget_event (priv->parent_menu_shell, (GdkEvent*) event); + } - menu_shell->button = 0; + priv->button = 0; menu_item = gtk_menu_shell_get_item (menu_shell, (GdkEvent*) event); - if ((event->time - menu_shell->activate_time) > MENU_SHELL_TIMEOUT) + if ((event->time - priv->activate_time) > MENU_SHELL_TIMEOUT) { - if (menu_item && (menu_shell->active_menu_item == menu_item) && + if (menu_item && (priv->active_menu_item == menu_item) && _gtk_menu_item_is_selectable (menu_item)) { - GtkWidget *submenu = GTK_MENU_ITEM (menu_item)->submenu; + GtkWidget *submenu = GTK_MENU_ITEM (menu_item)->priv->submenu; if (submenu == NULL) { gtk_menu_shell_activate_item (menu_shell, menu_item, TRUE); - deactivate = FALSE; } else if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != GTK_TOP_BOTTOM || @@ -767,10 +832,10 @@ gtk_menu_shell_button_release (GtkWidget *widget, "gtk-menu-exact-popup-time", NULL); } - /* only close the submenu on click if we opened the - * menu explicitely (usec_since_popup == 0) or - * enough time has passed since it was opened by - * GtkMenuItem's timeout (usec_since_popup > delay). + /* Only close the submenu on click if we opened the + * menu explicitely (usec_since_popup == 0) or + * enough time has passed since it was opened by + * GtkMenuItem's timeout (usec_since_popup > delay). */ if (!priv->activated_submenu && (usec_since_popup == 0 || @@ -792,16 +857,16 @@ gtk_menu_shell_button_release (GtkWidget *widget, { deactivate = FALSE; } - else if (menu_shell->parent_menu_shell) + else if (priv->parent_menu_shell) { - menu_shell->active = TRUE; - gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent*) event); + priv->active = TRUE; + gtk_widget_event (priv->parent_menu_shell, (GdkEvent*) event); deactivate = FALSE; } - /* If we ended up on an item with a submenu, leave the menu up. - */ - if (menu_item && (menu_shell->active_menu_item == menu_item) && + /* If we ended up on an item with a submenu, leave the menu up. */ + if (menu_item && + (priv->active_menu_item == menu_item) && GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != GTK_TOP_BOTTOM) { deactivate = FALSE; @@ -816,7 +881,7 @@ gtk_menu_shell_button_release (GtkWidget *widget, * the chances of that happening are ~1/10^6, without * serious harm if we lose. */ - menu_shell->activate_time = 0; + priv->activate_time = 0; deactivate = FALSE; } @@ -836,13 +901,13 @@ void _gtk_menu_shell_set_keyboard_mode (GtkMenuShell *menu_shell, gboolean keyboard_mode) { - menu_shell->keyboard_mode = keyboard_mode; + menu_shell->priv->keyboard_mode = keyboard_mode; } gboolean _gtk_menu_shell_get_keyboard_mode (GtkMenuShell *menu_shell) { - return menu_shell->keyboard_mode; + return menu_shell->priv->keyboard_mode; } void @@ -854,7 +919,8 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) gboolean mnemonics_visible; g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)), - "gtk-auto-mnemonics", &auto_mnemonics, NULL); + "gtk-auto-mnemonics", &auto_mnemonics, + NULL); if (!auto_mnemonics) return; @@ -863,7 +929,7 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) found = FALSE; while (target) { - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (target); + GtkMenuShellPrivate *priv = target->priv; GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (target)); /* The idea with keyboard mode is that once you start using @@ -872,8 +938,8 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) * the keyboard mode upwards in the menu hierarchy here. * Also see gtk_menu_popup, where we inherit it downwards. */ - if (menu_shell->keyboard_mode) - target->keyboard_mode = TRUE; + if (menu_shell->priv->keyboard_mode) + target->priv->keyboard_mode = TRUE; /* While navigating menus, the first parent menu with an active * item is the one where mnemonics are effective, as can be seen @@ -882,10 +948,10 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) * necessary to ensure we remove underlines from menu bars when * dismissing menus. */ - mnemonics_visible = target->keyboard_mode && - (((target->active_menu_item || priv->in_unselectable_item) && !found) || + mnemonics_visible = target->priv->keyboard_mode && + (((target->priv->active_menu_item || priv->in_unselectable_item) && !found) || (target == menu_shell && - !target->parent_menu_shell && + !target->priv->parent_menu_shell && gtk_widget_has_grab (GTK_WIDGET (target)))); /* While menus are up, only show underlines inside the menubar, @@ -900,32 +966,33 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) else gtk_window_set_mnemonics_visible (GTK_WINDOW (toplevel), mnemonics_visible); - if (target->active_menu_item || priv->in_unselectable_item) + if (target->priv->active_menu_item || priv->in_unselectable_item) found = TRUE; - target = GTK_MENU_SHELL (target->parent_menu_shell); + target = GTK_MENU_SHELL (target->priv->parent_menu_shell); } } static gint gtk_menu_shell_key_press (GtkWidget *widget, - GdkEventKey *event) + GdkEventKey *event) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; gboolean enable_mnemonics; - menu_shell->keyboard_mode = TRUE; + priv->keyboard_mode = TRUE; - if (!(menu_shell->active_menu_item || priv->in_unselectable_item) && menu_shell->parent_menu_shell) - return gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent *)event); + if (!(priv->active_menu_item || priv->in_unselectable_item) && + priv->parent_menu_shell) + return gtk_widget_event (priv->parent_menu_shell, (GdkEvent *)event); if (gtk_bindings_activate_event (G_OBJECT (widget), event)) return TRUE; g_object_get (gtk_widget_get_settings (widget), - "gtk-enable-mnemonics", &enable_mnemonics, - NULL); + "gtk-enable-mnemonics", &enable_mnemonics, + NULL); if (enable_mnemonics) return gtk_menu_shell_activate_mnemonic (menu_shell, event); @@ -935,16 +1002,17 @@ gtk_menu_shell_key_press (GtkWidget *widget, static gint gtk_menu_shell_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); + GtkMenuShellPrivate *priv = menu_shell->priv; if (event->mode == GDK_CROSSING_GTK_GRAB || event->mode == GDK_CROSSING_GTK_UNGRAB || event->mode == GDK_CROSSING_STATE_CHANGED) return TRUE; - if (menu_shell->active) + if (priv->active) { GtkWidget *menu_item; GtkWidget *parent; @@ -957,24 +1025,20 @@ gtk_menu_shell_enter_notify (GtkWidget *widget, if (GTK_IS_MENU_ITEM (menu_item) && !_gtk_menu_item_is_selectable (menu_item)) { - GtkMenuShellPrivate *priv; - - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); priv->in_unselectable_item = TRUE; - return TRUE; } parent = gtk_widget_get_parent (menu_item); if (parent == widget && - GTK_IS_MENU_ITEM (menu_item)) - { - if (menu_shell->ignore_enter) - return TRUE; + GTK_IS_MENU_ITEM (menu_item)) + { + if (priv->ignore_enter) + return TRUE; - if (event->detail != GDK_NOTIFY_INFERIOR) + if (event->detail != GDK_NOTIFY_INFERIOR) { - if (gtk_widget_get_state (menu_item) != GTK_STATE_PRELIGHT) + if ((gtk_widget_get_state_flags (menu_item) & GTK_STATE_FLAG_PRELIGHT) == 0) gtk_menu_shell_select_item (menu_shell, menu_item); /* If any mouse button is down, and there is a submenu @@ -985,15 +1049,12 @@ gtk_menu_shell_enter_notify (GtkWidget *widget, * entering a menu item where we wouldn't want to show * its submenu. */ - if ((event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) && - GTK_MENU_ITEM (menu_item)->submenu != NULL) + if ((event->state & (GDK_BUTTON1_MASK|GDK_BUTTON2_MASK|GDK_BUTTON3_MASK)) && + GTK_MENU_ITEM (menu_item)->priv->submenu != NULL) { - GtkMenuShellPrivate *priv; + GTK_MENU_SHELL (parent)->priv->activated_submenu = TRUE; - priv = GTK_MENU_SHELL_GET_PRIVATE (parent); - priv->activated_submenu = TRUE; - - if (!gtk_widget_get_visible (GTK_MENU_ITEM (menu_item)->submenu)) + if (!gtk_widget_get_visible (GTK_MENU_ITEM (menu_item)->priv->submenu)) { gboolean touchscreen_mode; @@ -1005,12 +1066,12 @@ gtk_menu_shell_enter_notify (GtkWidget *widget, _gtk_menu_item_popup_submenu (menu_item, TRUE); } } - } - } - else if (menu_shell->parent_menu_shell) - { - gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent*) event); - } + } + } + else if (priv->parent_menu_shell) + { + gtk_widget_event (priv->parent_menu_shell, (GdkEvent*) event); + } } return TRUE; @@ -1018,7 +1079,7 @@ gtk_menu_shell_enter_notify (GtkWidget *widget, static gint gtk_menu_shell_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { if (event->mode == GDK_CROSSING_GTK_GRAB || event->mode == GDK_CROSSING_GTK_GRAB || @@ -1028,37 +1089,34 @@ gtk_menu_shell_leave_notify (GtkWidget *widget, if (gtk_widget_get_visible (widget)) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (widget); + GtkMenuShellPrivate *priv = menu_shell->priv; GtkWidget *event_widget = gtk_get_event_widget ((GdkEvent*) event); GtkMenuItem *menu_item; if (!event_widget || !GTK_IS_MENU_ITEM (event_widget)) - return TRUE; + return TRUE; menu_item = GTK_MENU_ITEM (event_widget); if (!_gtk_menu_item_is_selectable (event_widget)) { - GtkMenuShellPrivate *priv; - - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); priv->in_unselectable_item = TRUE; - return TRUE; } - if ((menu_shell->active_menu_item == event_widget) && - (menu_item->submenu == NULL)) - { - if ((event->detail != GDK_NOTIFY_INFERIOR) && - (gtk_widget_get_state (GTK_WIDGET (menu_item)) != GTK_STATE_NORMAL)) - { - gtk_menu_shell_deselect (menu_shell); - } - } - else if (menu_shell->parent_menu_shell) - { - gtk_widget_event (menu_shell->parent_menu_shell, (GdkEvent*) event); - } + if ((priv->active_menu_item == event_widget) && + (menu_item->priv->submenu == NULL)) + { + if ((event->detail != GDK_NOTIFY_INFERIOR) && + (gtk_widget_get_state_flags (GTK_WIDGET (menu_item)) & GTK_STATE_FLAG_PRELIGHT) != 0) + { + gtk_menu_shell_deselect (menu_shell); + } + } + else if (priv->parent_menu_shell) + { + gtk_widget_event (priv->parent_menu_shell, (GdkEvent*) event); + } } return TRUE; @@ -1066,37 +1124,38 @@ gtk_menu_shell_leave_notify (GtkWidget *widget, static void gtk_menu_shell_screen_changed (GtkWidget *widget, - GdkScreen *previous_screen) + GdkScreen *previous_screen) { gtk_menu_shell_reset_key_hash (GTK_MENU_SHELL (widget)); } static void gtk_menu_shell_add (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { gtk_menu_shell_append (GTK_MENU_SHELL (container), widget); } static void gtk_menu_shell_remove (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (container); + GtkMenuShellPrivate *priv = menu_shell->priv; gint was_visible; was_visible = gtk_widget_get_visible (widget); - menu_shell->children = g_list_remove (menu_shell->children, widget); - - if (widget == menu_shell->active_menu_item) + priv->children = g_list_remove (priv->children, widget); + + if (widget == priv->active_menu_item) { - g_signal_emit_by_name (menu_shell->active_menu_item, "deselect"); - menu_shell->active_menu_item = NULL; + g_signal_emit_by_name (priv->active_menu_item, "deselect"); + priv->active_menu_item = NULL; } gtk_widget_unparent (widget); - - /* queue resize regardless of gtk_widget_get_visible (container), + + /* Queue resize regardless of gtk_widget_get_visible (container), * since that's what is needed by toplevels. */ if (was_visible) @@ -1105,15 +1164,15 @@ gtk_menu_shell_remove (GtkContainer *container, static void gtk_menu_shell_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) { GtkMenuShell *menu_shell = GTK_MENU_SHELL (container); GtkWidget *child; GList *children; - children = menu_shell->children; + children = menu_shell->priv->children; while (children) { child = children->data; @@ -1127,27 +1186,28 @@ gtk_menu_shell_forall (GtkContainer *container, static void gtk_real_menu_shell_deactivate (GtkMenuShell *menu_shell) { - if (menu_shell->active) + GtkMenuShellPrivate *priv = menu_shell->priv; + + if (priv->active) { - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); - menu_shell->button = 0; - menu_shell->active = FALSE; - menu_shell->activate_time = 0; + priv->button = 0; + priv->active = FALSE; + priv->activate_time = 0; - if (menu_shell->active_menu_item) - { - gtk_menu_item_deselect (GTK_MENU_ITEM (menu_shell->active_menu_item)); - menu_shell->active_menu_item = NULL; - } + if (priv->active_menu_item) + { + gtk_menu_item_deselect (GTK_MENU_ITEM (priv->active_menu_item)); + priv->active_menu_item = NULL; + } - if (menu_shell->have_grab) - { - menu_shell->have_grab = FALSE; + if (priv->have_grab) + { + priv->have_grab = FALSE; gtk_device_grab_remove (GTK_WIDGET (menu_shell), priv->grab_pointer); - } - if (menu_shell->have_xgrab) - { + } + if (priv->have_xgrab) + { GdkDevice *keyboard; gdk_device_ungrab (priv->grab_pointer, GDK_CURRENT_TIME); @@ -1156,10 +1216,10 @@ gtk_real_menu_shell_deactivate (GtkMenuShell *menu_shell) if (keyboard) gdk_device_ungrab (keyboard, GDK_CURRENT_TIME); - menu_shell->have_xgrab = FALSE; - } + priv->have_xgrab = FALSE; + } - menu_shell->keyboard_mode = FALSE; + priv->keyboard_mode = FALSE; _gtk_menu_shell_set_grab_device (menu_shell, NULL); _gtk_menu_shell_update_mnemonics (menu_shell); @@ -1168,7 +1228,7 @@ gtk_real_menu_shell_deactivate (GtkMenuShell *menu_shell) static gint gtk_menu_shell_is_item (GtkMenuShell *menu_shell, - GtkWidget *child) + GtkWidget *child) { GtkWidget *parent; @@ -1179,8 +1239,8 @@ gtk_menu_shell_is_item (GtkMenuShell *menu_shell, while (GTK_IS_MENU_SHELL (parent)) { if (parent == (GtkWidget*) menu_shell) - return TRUE; - parent = GTK_MENU_SHELL (parent)->parent_menu_shell; + return TRUE; + parent = GTK_MENU_SHELL (parent)->priv->parent_menu_shell; } return FALSE; @@ -1188,12 +1248,12 @@ gtk_menu_shell_is_item (GtkMenuShell *menu_shell, static GtkWidget* gtk_menu_shell_get_item (GtkMenuShell *menu_shell, - GdkEvent *event) + GdkEvent *event) { GtkWidget *menu_item; menu_item = gtk_get_event_widget ((GdkEvent*) event); - + while (menu_item && !GTK_IS_MENU_ITEM (menu_item)) menu_item = gtk_widget_get_parent (menu_item); @@ -1205,10 +1265,18 @@ gtk_menu_shell_get_item (GtkMenuShell *menu_shell, /* Handlers for action signals */ +/** + * gtk_menu_shell_select_item: + * @menu_shell: a #GtkMenuShell + * @menu_item: The #GtkMenuItem to select + * + * Selects the menu item from the menu shell. + */ void gtk_menu_shell_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item) + GtkWidget *menu_item) { + GtkMenuShellPrivate *priv = menu_shell->priv; GtkMenuShellClass *class; g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); @@ -1217,71 +1285,87 @@ gtk_menu_shell_select_item (GtkMenuShell *menu_shell, class = GTK_MENU_SHELL_GET_CLASS (menu_shell); if (class->select_item && - !(menu_shell->active && - menu_shell->active_menu_item == menu_item)) + !(priv->active && + priv->active_menu_item == menu_item)) class->select_item (menu_shell, menu_item); } void _gtk_menu_item_set_placement (GtkMenuItem *menu_item, - GtkSubmenuPlacement placement); + GtkSubmenuPlacement placement); static void gtk_menu_shell_real_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item) + GtkWidget *menu_item) { + GtkMenuShellPrivate *priv = menu_shell->priv; GtkPackDirection pack_dir = PACK_DIRECTION (menu_shell); - if (menu_shell->active_menu_item) + if (priv->active_menu_item) { - gtk_menu_item_deselect (GTK_MENU_ITEM (menu_shell->active_menu_item)); - menu_shell->active_menu_item = NULL; + gtk_menu_item_deselect (GTK_MENU_ITEM (priv->active_menu_item)); + priv->active_menu_item = NULL; } if (!_gtk_menu_item_is_selectable (menu_item)) { - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); - priv->in_unselectable_item = TRUE; _gtk_menu_shell_update_mnemonics (menu_shell); - return; } - menu_shell->active_menu_item = menu_item; + priv->active_menu_item = menu_item; if (pack_dir == GTK_PACK_DIRECTION_TTB || pack_dir == GTK_PACK_DIRECTION_BTT) - _gtk_menu_item_set_placement (GTK_MENU_ITEM (menu_shell->active_menu_item), - GTK_LEFT_RIGHT); + _gtk_menu_item_set_placement (GTK_MENU_ITEM (priv->active_menu_item), + GTK_LEFT_RIGHT); else - _gtk_menu_item_set_placement (GTK_MENU_ITEM (menu_shell->active_menu_item), - GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement); - gtk_menu_item_select (GTK_MENU_ITEM (menu_shell->active_menu_item)); + _gtk_menu_item_set_placement (GTK_MENU_ITEM (priv->active_menu_item), + GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement); + gtk_menu_item_select (GTK_MENU_ITEM (priv->active_menu_item)); _gtk_menu_shell_update_mnemonics (menu_shell); /* This allows the bizarre radio buttons-with-submenus-display-history * behavior */ - if (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) - gtk_widget_activate (menu_shell->active_menu_item); + if (GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu) + gtk_widget_activate (priv->active_menu_item); } +/** + * gtk_menu_shell_deselect: + * @menu_shell: a #GtkMenuShell + * + * Deselects the currently selected item from the menu shell, + * if any. + */ void gtk_menu_shell_deselect (GtkMenuShell *menu_shell) { + GtkMenuShellPrivate *priv = menu_shell->priv; + g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); - if (menu_shell->active_menu_item) + if (priv->active_menu_item) { - gtk_menu_item_deselect (GTK_MENU_ITEM (menu_shell->active_menu_item)); - menu_shell->active_menu_item = NULL; + gtk_menu_item_deselect (GTK_MENU_ITEM (priv->active_menu_item)); + priv->active_menu_item = NULL; _gtk_menu_shell_update_mnemonics (menu_shell); } } +/** + * gtk_menu_shell_activate_item: + * @menu_shell: a #GtkMenuShell + * @menu_item: the #GtkMenuItem to activate + * @force_deactivate: if %TRUE, force the deactivation of the + * menu shell after the menu item is activated + * + * Activates the menu item within the menu shell. + */ void -gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item, - gboolean force_deactivate) +gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, + GtkWidget *menu_item, + gboolean force_deactivate) { GSList *slist, *shells = NULL; gboolean deactivate = force_deactivate; @@ -1300,17 +1384,17 @@ gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, GtkMenuShell *parent_menu_shell = menu_shell; do - { - g_object_ref (parent_menu_shell); - shells = g_slist_prepend (shells, parent_menu_shell); - parent_menu_shell = (GtkMenuShell*) parent_menu_shell->parent_menu_shell; - } + { + g_object_ref (parent_menu_shell); + shells = g_slist_prepend (shells, parent_menu_shell); + parent_menu_shell = (GtkMenuShell*) parent_menu_shell->priv->parent_menu_shell; + } while (parent_menu_shell); shells = g_slist_reverse (shells); gtk_menu_shell_deactivate (menu_shell); - - /* flush the x-queue, so any grabs are removed and + + /* Flush the x-queue, so any grabs are removed and * the menu is actually taken down */ gdk_display_sync (gtk_widget_get_display (menu_item)); @@ -1331,13 +1415,14 @@ gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, /* Distance should be +/- 1 */ static gboolean -gtk_menu_shell_real_move_selected (GtkMenuShell *menu_shell, - gint distance) +gtk_menu_shell_real_move_selected (GtkMenuShell *menu_shell, + gint distance) { - if (menu_shell->active_menu_item) + GtkMenuShellPrivate *priv = menu_shell->priv; + + if (priv->active_menu_item) { - GList *node = g_list_find (menu_shell->children, - menu_shell->active_menu_item); + GList *node = g_list_find (priv->children, priv->active_menu_item); GList *start_node = node; gboolean wrap_around; @@ -1346,42 +1431,42 @@ gtk_menu_shell_real_move_selected (GtkMenuShell *menu_shell, NULL); if (distance > 0) - { - node = node->next; - while (node != start_node && - (!node || !_gtk_menu_item_is_selectable (node->data))) - { - if (node) - node = node->next; + { + node = node->next; + while (node != start_node && + (!node || !_gtk_menu_item_is_selectable (node->data))) + { + if (node) + node = node->next; else if (wrap_around) - node = menu_shell->children; + node = priv->children; else { gtk_widget_error_bell (GTK_WIDGET (menu_shell)); break; } - } - } + } + } else - { - node = node->prev; - while (node != start_node && - (!node || !_gtk_menu_item_is_selectable (node->data))) - { - if (node) - node = node->prev; + { + node = node->prev; + while (node != start_node && + (!node || !_gtk_menu_item_is_selectable (node->data))) + { + if (node) + node = node->prev; else if (wrap_around) - node = g_list_last (menu_shell->children); + node = g_list_last (priv->children); else { gtk_widget_error_bell (GTK_WIDGET (menu_shell)); break; } - } - } + } + } if (node) - gtk_menu_shell_select_item (menu_shell, node->data); + gtk_menu_shell_select_item (menu_shell, node->data); } return TRUE; @@ -1389,13 +1474,13 @@ gtk_menu_shell_real_move_selected (GtkMenuShell *menu_shell, /* Distance should be +/- 1 */ static void -gtk_menu_shell_move_selected (GtkMenuShell *menu_shell, - gint distance) +gtk_menu_shell_move_selected (GtkMenuShell *menu_shell, + gint distance) { gboolean handled = FALSE; g_signal_emit (menu_shell, menu_shell_signals[MOVE_SELECTED], 0, - distance, &handled); + distance, &handled); } /** @@ -1406,33 +1491,34 @@ gtk_menu_shell_move_selected (GtkMenuShell *menu_shell, * the first item isn't sensitive. This * should be %FALSE if the menu is being * popped up initially. - * + * * Select the first visible or selectable child of the menu shell; * don't select tearoff items unless the only item is a tearoff * item. * * Since: 2.2 - **/ + */ void gtk_menu_shell_select_first (GtkMenuShell *menu_shell, - gboolean search_sensitive) + gboolean search_sensitive) { + GtkMenuShellPrivate *priv = menu_shell->priv; GtkWidget *to_select = NULL; GList *tmp_list; - tmp_list = menu_shell->children; + tmp_list = priv->children; while (tmp_list) { GtkWidget *child = tmp_list->data; - + if ((!search_sensitive && gtk_widget_get_visible (child)) || - _gtk_menu_item_is_selectable (child)) - { - to_select = child; - if (!GTK_IS_TEAROFF_MENU_ITEM (child)) - break; - } - + _gtk_menu_item_is_selectable (child)) + { + to_select = child; + if (!GTK_IS_TEAROFF_MENU_ITEM (child)) + break; + } + tmp_list = tmp_list->next; } @@ -1442,24 +1528,25 @@ gtk_menu_shell_select_first (GtkMenuShell *menu_shell, void _gtk_menu_shell_select_last (GtkMenuShell *menu_shell, - gboolean search_sensitive) + gboolean search_sensitive) { + GtkMenuShellPrivate *priv = menu_shell->priv; GtkWidget *to_select = NULL; GList *tmp_list; - tmp_list = g_list_last (menu_shell->children); + tmp_list = g_list_last (priv->children); while (tmp_list) { GtkWidget *child = tmp_list->data; - + if ((!search_sensitive && gtk_widget_get_visible (child)) || - _gtk_menu_item_is_selectable (child)) - { - to_select = child; - if (!GTK_IS_TEAROFF_MENU_ITEM (child)) - break; - } - + _gtk_menu_item_is_selectable (child)) + { + to_select = child; + if (!GTK_IS_TEAROFF_MENU_ITEM (child)) + break; + } + tmp_list = tmp_list->prev; } @@ -1468,21 +1555,22 @@ _gtk_menu_shell_select_last (GtkMenuShell *menu_shell, } static gboolean -gtk_menu_shell_select_submenu_first (GtkMenuShell *menu_shell) +gtk_menu_shell_select_submenu_first (GtkMenuShell *menu_shell) { + GtkMenuShellPrivate *priv = menu_shell->priv; GtkMenuItem *menu_item; - if (menu_shell->active_menu_item == NULL) + if (priv->active_menu_item == NULL) return FALSE; - menu_item = GTK_MENU_ITEM (menu_shell->active_menu_item); - - if (menu_item->submenu) + menu_item = GTK_MENU_ITEM (priv->active_menu_item); + + if (menu_item->priv->submenu) { _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item), FALSE); - gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); - if (GTK_MENU_SHELL (menu_item->submenu)->active_menu_item) - return TRUE; + gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->priv->submenu), TRUE); + if (GTK_MENU_SHELL (menu_item->priv->submenu)->priv->active_menu_item) + return TRUE; } return FALSE; @@ -1490,162 +1578,159 @@ gtk_menu_shell_select_submenu_first (GtkMenuShell *menu_shell) static void gtk_real_menu_shell_move_current (GtkMenuShell *menu_shell, - GtkMenuDirectionType direction) + GtkMenuDirectionType direction) { - GtkMenuShellPrivate *priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; GtkMenuShell *parent_menu_shell = NULL; gboolean had_selection; gboolean touchscreen_mode; priv->in_unselectable_item = FALSE; - had_selection = menu_shell->active_menu_item != NULL; + had_selection = priv->active_menu_item != NULL; g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)), "gtk-touchscreen-mode", &touchscreen_mode, NULL); - if (menu_shell->parent_menu_shell) - parent_menu_shell = GTK_MENU_SHELL (menu_shell->parent_menu_shell); + if (priv->parent_menu_shell) + parent_menu_shell = GTK_MENU_SHELL (priv->parent_menu_shell); switch (direction) { case GTK_MENU_DIR_PARENT: if (touchscreen_mode && - menu_shell->active_menu_item && - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu && - gtk_widget_get_visible (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu)) + priv->active_menu_item && + GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu && + gtk_widget_get_visible (GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu)) { /* if we are on a menu item that has an open submenu but the * focus is not in that submenu (e.g. because it's empty or - * has only insensitive items), close that submenu instead - * of running into the code below which would close *this* - * menu. + * has only insensitive items), close that submenu instead of + * running into the code below which would close *this* menu. */ - _gtk_menu_item_popdown_submenu (menu_shell->active_menu_item); + _gtk_menu_item_popdown_submenu (priv->active_menu_item); _gtk_menu_shell_update_mnemonics (menu_shell); } else if (parent_menu_shell) - { + { if (touchscreen_mode) { /* close menu when returning from submenu. */ - _gtk_menu_item_popdown_submenu (GTK_MENU (menu_shell)->parent_menu_item); + _gtk_menu_item_popdown_submenu (GTK_MENU (menu_shell)->priv->parent_menu_item); _gtk_menu_shell_update_mnemonics (parent_menu_shell); break; } - if (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == + if (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement) - gtk_menu_shell_deselect (menu_shell); - else - { - if (PACK_DIRECTION (parent_menu_shell) == GTK_PACK_DIRECTION_LTR) - gtk_menu_shell_move_selected (parent_menu_shell, -1); - else - gtk_menu_shell_move_selected (parent_menu_shell, 1); - gtk_menu_shell_select_submenu_first (parent_menu_shell); - } - } + gtk_menu_shell_deselect (menu_shell); + else + { + if (PACK_DIRECTION (parent_menu_shell) == GTK_PACK_DIRECTION_LTR) + gtk_menu_shell_move_selected (parent_menu_shell, -1); + else + gtk_menu_shell_move_selected (parent_menu_shell, 1); + gtk_menu_shell_select_submenu_first (parent_menu_shell); + } + } /* If there is no parent and the submenu is in the opposite direction * to the menu, then make the PARENT direction wrap around to * the bottom of the submenu. */ - else if (menu_shell->active_menu_item && - _gtk_menu_item_is_selectable (menu_shell->active_menu_item) && - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) - { - GtkMenuShell *submenu = GTK_MENU_SHELL (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu); + else if (priv->active_menu_item && + _gtk_menu_item_is_selectable (priv->active_menu_item) && + GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu) + { + GtkMenuShell *submenu = GTK_MENU_SHELL (GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu); - if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != - GTK_MENU_SHELL_GET_CLASS (submenu)->submenu_placement) - _gtk_menu_shell_select_last (submenu, TRUE); - } + if (GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement != + GTK_MENU_SHELL_GET_CLASS (submenu)->submenu_placement) + _gtk_menu_shell_select_last (submenu, TRUE); + } break; case GTK_MENU_DIR_CHILD: - if (menu_shell->active_menu_item && - _gtk_menu_item_is_selectable (menu_shell->active_menu_item) && - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu) - { - if (gtk_menu_shell_select_submenu_first (menu_shell)) - break; - } + if (priv->active_menu_item && + _gtk_menu_item_is_selectable (priv->active_menu_item) && + GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu) + { + if (gtk_menu_shell_select_submenu_first (menu_shell)) + break; + } /* Try to find a menu running the opposite direction */ while (parent_menu_shell && - (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == - GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement)) - { - parent_menu_shell = GTK_MENU_SHELL (parent_menu_shell->parent_menu_shell); - } + (GTK_MENU_SHELL_GET_CLASS (parent_menu_shell)->submenu_placement == + GTK_MENU_SHELL_GET_CLASS (menu_shell)->submenu_placement)) + { + parent_menu_shell = GTK_MENU_SHELL (parent_menu_shell->priv->parent_menu_shell); + } if (parent_menu_shell) - { - if (PACK_DIRECTION (parent_menu_shell) == GTK_PACK_DIRECTION_LTR) - gtk_menu_shell_move_selected (parent_menu_shell, 1); - else - gtk_menu_shell_move_selected (parent_menu_shell, -1); + { + if (PACK_DIRECTION (parent_menu_shell) == GTK_PACK_DIRECTION_LTR) + gtk_menu_shell_move_selected (parent_menu_shell, 1); + else + gtk_menu_shell_move_selected (parent_menu_shell, -1); - gtk_menu_shell_select_submenu_first (parent_menu_shell); - } + gtk_menu_shell_select_submenu_first (parent_menu_shell); + } break; case GTK_MENU_DIR_PREV: gtk_menu_shell_move_selected (menu_shell, -1); - if (!had_selection && - !menu_shell->active_menu_item && - menu_shell->children) - _gtk_menu_shell_select_last (menu_shell, TRUE); + if (!had_selection && !priv->active_menu_item && priv->children) + _gtk_menu_shell_select_last (menu_shell, TRUE); break; case GTK_MENU_DIR_NEXT: gtk_menu_shell_move_selected (menu_shell, 1); - if (!had_selection && - !menu_shell->active_menu_item && - menu_shell->children) - gtk_menu_shell_select_first (menu_shell, TRUE); + if (!had_selection && !priv->active_menu_item && priv->children) + gtk_menu_shell_select_first (menu_shell, TRUE); break; } } static void -gtk_real_menu_shell_activate_current (GtkMenuShell *menu_shell, - gboolean force_hide) +gtk_real_menu_shell_activate_current (GtkMenuShell *menu_shell, + gboolean force_hide) { - if (menu_shell->active_menu_item && - _gtk_menu_item_is_selectable (menu_shell->active_menu_item)) + GtkMenuShellPrivate *priv = menu_shell->priv; + + if (priv->active_menu_item && + _gtk_menu_item_is_selectable (priv->active_menu_item)) { - if (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL) + if (GTK_MENU_ITEM (priv->active_menu_item)->priv->submenu == NULL) gtk_menu_shell_activate_item (menu_shell, - menu_shell->active_menu_item, - force_hide); + priv->active_menu_item, + force_hide); else - _gtk_menu_item_popup_submenu (menu_shell->active_menu_item, FALSE); + _gtk_menu_item_popup_submenu (priv->active_menu_item, FALSE); } } static void -gtk_real_menu_shell_cancel (GtkMenuShell *menu_shell) +gtk_real_menu_shell_cancel (GtkMenuShell *menu_shell) { - /* Unset the active menu item so gtk_menu_popdown() doesn't see it. - */ + /* Unset the active menu item so gtk_menu_popdown() doesn't see it. */ gtk_menu_shell_deselect (menu_shell); - gtk_menu_shell_deactivate (menu_shell); g_signal_emit (menu_shell, menu_shell_signals[SELECTION_DONE], 0); } static void -gtk_real_menu_shell_cycle_focus (GtkMenuShell *menu_shell, - GtkDirectionType dir) +gtk_real_menu_shell_cycle_focus (GtkMenuShell *menu_shell, + GtkDirectionType dir) { + GtkMenuShellPrivate *priv = menu_shell->priv; + while (menu_shell && !GTK_IS_MENU_BAR (menu_shell)) { - if (menu_shell->parent_menu_shell) - menu_shell = GTK_MENU_SHELL (menu_shell->parent_menu_shell); + if (priv->parent_menu_shell) + menu_shell = GTK_MENU_SHELL (priv->parent_menu_shell); else - menu_shell = NULL; + menu_shell = NULL; } if (menu_shell) @@ -1665,11 +1750,11 @@ _gtk_menu_shell_get_popup_delay (GtkMenuShell *menu_shell) { gint popup_delay; GtkWidget *widget = GTK_WIDGET (menu_shell); - + g_object_get (gtk_widget_get_settings (widget), - "gtk-menu-popup-delay", &popup_delay, - NULL); - + "gtk-menu-popup-delay", &popup_delay, + NULL); + return popup_delay; } } @@ -1677,9 +1762,9 @@ _gtk_menu_shell_get_popup_delay (GtkMenuShell *menu_shell) /** * gtk_menu_shell_cancel: * @menu_shell: a #GtkMenuShell - * - * Cancels the selection within the menu shell. - * + * + * Cancels the selection within the menu shell. + * * Since: 2.4 */ void @@ -1692,20 +1777,20 @@ gtk_menu_shell_cancel (GtkMenuShell *menu_shell) static GtkMnemonicHash * gtk_menu_shell_get_mnemonic_hash (GtkMenuShell *menu_shell, - gboolean create) + gboolean create) { - GtkMenuShellPrivate *private = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; - if (!private->mnemonic_hash && create) - private->mnemonic_hash = _gtk_mnemonic_hash_new (); + if (!priv->mnemonic_hash && create) + priv->mnemonic_hash = _gtk_mnemonic_hash_new (); - return private->mnemonic_hash; + return priv->mnemonic_hash; } static void -menu_shell_add_mnemonic_foreach (guint keyval, - GSList *targets, - gpointer data) +menu_shell_add_mnemonic_foreach (guint keyval, + GSList *targets, + gpointer data) { GtkKeyHash *key_hash = data; @@ -1714,45 +1799,45 @@ menu_shell_add_mnemonic_foreach (guint keyval, static GtkKeyHash * gtk_menu_shell_get_key_hash (GtkMenuShell *menu_shell, - gboolean create) + gboolean create) { - GtkMenuShellPrivate *private = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; GtkWidget *widget = GTK_WIDGET (menu_shell); - if (!private->key_hash && create && gtk_widget_has_screen (widget)) + if (!priv->key_hash && create && gtk_widget_has_screen (widget)) { GtkMnemonicHash *mnemonic_hash = gtk_menu_shell_get_mnemonic_hash (menu_shell, FALSE); GdkScreen *screen = gtk_widget_get_screen (widget); GdkKeymap *keymap = gdk_keymap_get_for_display (gdk_screen_get_display (screen)); if (!mnemonic_hash) - return NULL; - - private->key_hash = _gtk_key_hash_new (keymap, NULL); + return NULL; + + priv->key_hash = _gtk_key_hash_new (keymap, NULL); _gtk_mnemonic_hash_foreach (mnemonic_hash, - menu_shell_add_mnemonic_foreach, - private->key_hash); + menu_shell_add_mnemonic_foreach, + priv->key_hash); } - - return private->key_hash; + + return priv->key_hash; } static void gtk_menu_shell_reset_key_hash (GtkMenuShell *menu_shell) { - GtkMenuShellPrivate *private = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + GtkMenuShellPrivate *priv = menu_shell->priv; - if (private->key_hash) + if (priv->key_hash) { - _gtk_key_hash_free (private->key_hash); - private->key_hash = NULL; + _gtk_key_hash_free (priv->key_hash); + priv->key_hash = NULL; } } static gboolean gtk_menu_shell_activate_mnemonic (GtkMenuShell *menu_shell, - GdkEventKey *event) + GdkEventKey *event) { GtkMnemonicHash *mnemonic_hash; GtkKeyHash *key_hash; @@ -1766,43 +1851,43 @@ gtk_menu_shell_activate_mnemonic (GtkMenuShell *menu_shell, key_hash = gtk_menu_shell_get_key_hash (menu_shell, TRUE); if (!key_hash) return FALSE; - + entries = _gtk_key_hash_lookup (key_hash, - event->hardware_keycode, - event->state, - gtk_accelerator_get_default_mod_mask (), - event->group); + event->hardware_keycode, + event->state, + gtk_accelerator_get_default_mod_mask (), + event->group); if (entries) result = _gtk_mnemonic_hash_activate (mnemonic_hash, - GPOINTER_TO_UINT (entries->data)); + GPOINTER_TO_UINT (entries->data)); return result; } void _gtk_menu_shell_add_mnemonic (GtkMenuShell *menu_shell, - guint keyval, - GtkWidget *target) + guint keyval, + GtkWidget *target) { g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); g_return_if_fail (GTK_IS_WIDGET (target)); _gtk_mnemonic_hash_add (gtk_menu_shell_get_mnemonic_hash (menu_shell, TRUE), - keyval, target); + keyval, target); gtk_menu_shell_reset_key_hash (menu_shell); } void _gtk_menu_shell_remove_mnemonic (GtkMenuShell *menu_shell, - guint keyval, - GtkWidget *target) + guint keyval, + GtkWidget *target) { g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); g_return_if_fail (GTK_IS_WIDGET (target)); - + _gtk_mnemonic_hash_remove (gtk_menu_shell_get_mnemonic_hash (menu_shell, TRUE), - keyval, target); + keyval, target); gtk_menu_shell_reset_key_hash (menu_shell); } @@ -1810,12 +1895,10 @@ void _gtk_menu_shell_set_grab_device (GtkMenuShell *menu_shell, GdkDevice *device) { - GtkMenuShellPrivate *priv; + GtkMenuShellPrivate *priv = menu_shell->priv; g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); - g_return_if_fail (!device || GDK_IS_DEVICE (device)); - - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); + g_return_if_fail (device == NULL || GDK_IS_DEVICE (device)); if (!device) priv->grab_pointer = NULL; @@ -1826,15 +1909,11 @@ _gtk_menu_shell_set_grab_device (GtkMenuShell *menu_shell, } GdkDevice * -_gtk_menu_shell_get_grab_device (GtkMenuShell *menu_shell) +_gtk_menu_shell_get_grab_device (GtkMenuShell *menu_shell) { - GtkMenuShellPrivate *priv; - g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), NULL); - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); - - return priv->grab_pointer; + return menu_shell->priv->grab_pointer; } /** @@ -1846,37 +1925,35 @@ _gtk_menu_shell_get_grab_device (GtkMenuShell *menu_shell) * Returns: %TRUE if the menu shell will take the keyboard focus on popup. * * Since: 2.8 - **/ + */ gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell) { - GtkMenuShellPrivate *priv; - g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), FALSE); - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); - - return priv->take_focus; + return menu_shell->priv->take_focus; } /** * gtk_menu_shell_set_take_focus: * @menu_shell: a #GtkMenuShell - * @take_focus: %TRUE if the menu shell should take the keyboard focus on popup. + * @take_focus: %TRUE if the menu shell should take the keyboard + * focus on popup * - * If @take_focus is %TRUE (the default) the menu shell will take the keyboard - * focus so that it will receive all keyboard events which is needed to enable - * keyboard navigation in menus. + * If @take_focus is %TRUE (the default) the menu shell will take + * the keyboard focus so that it will receive all keyboard events + * which is needed to enable keyboard navigation in menus. * * Setting @take_focus to %FALSE is useful only for special applications * like virtual keyboard implementations which should not take keyboard * focus. * - * The @take_focus state of a menu or menu bar is automatically propagated - * to submenus whenever a submenu is popped up, so you don't have to worry - * about recursively setting it for your entire menu hierarchy. Only when - * programmatically picking a submenu and popping it up manually, the - * @take_focus property of the submenu needs to be set explicitely. + * The @take_focus state of a menu or menu bar is automatically + * propagated to submenus whenever a submenu is popped up, so you + * don't have to worry about recursively setting it for your entire + * menu hierarchy. Only when programmatically picking a submenu and + * popping it up manually, the @take_focus property of the submenu + * needs to be set explicitely. * * Note that setting it to %FALSE has side-effects: * @@ -1891,20 +1968,57 @@ gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell) * See also gdk_keyboard_grab() * * Since: 2.8 - **/ + */ void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell, gboolean take_focus) { - GtkMenuShellPrivate *priv; + GtkMenuShellPrivate *priv = menu_shell->priv; g_return_if_fail (GTK_IS_MENU_SHELL (menu_shell)); - priv = GTK_MENU_SHELL_GET_PRIVATE (menu_shell); - if (priv->take_focus != take_focus) { priv->take_focus = take_focus; g_object_notify (G_OBJECT (menu_shell), "take-focus"); } } + +/** + * gtk_menu_shell_get_selected_item: + * @menu_shell: a #GtkMenuShell + * + * Gets the currently selected item. + * + * Returns: the currently selected item + * + * Since: 3.0 + */ +GtkWidget * +gtk_menu_shell_get_selected_item (GtkMenuShell *menu_shell) +{ + g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), NULL); + + return menu_shell->priv->active_menu_item; +} + +/** + * gtk_menu_shell_get_parent_shell: + * @menu_shell: a #GtkMenuShell + * + * Gets the parent menu shell. + * + * The parent menu shell of a submenu is the #GtkMenu or #GtkMenuBar + * from which it was opened up. + * + * Returns: the parent #GtkMenuShell + * + * Since: 3.0 + */ +GtkWidget * +gtk_menu_shell_get_parent_shell (GtkMenuShell *menu_shell) +{ + g_return_val_if_fail (GTK_IS_MENU_SHELL (menu_shell), NULL); + + return menu_shell->priv->parent_menu_shell; +} diff --git a/gtk/gtkmenushell.h b/gtk/gtkmenushell.h index ee09a84d53..0b6d5710cf 100644 --- a/gtk/gtkmenushell.h +++ b/gtk/gtkmenushell.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -37,59 +37,48 @@ G_BEGIN_DECLS -#define GTK_TYPE_MENU_SHELL (gtk_menu_shell_get_type ()) -#define GTK_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShell)) -#define GTK_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_SHELL, GtkMenuShellClass)) -#define GTK_IS_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_SHELL)) -#define GTK_IS_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_SHELL)) +#define GTK_TYPE_MENU_SHELL (gtk_menu_shell_get_type ()) +#define GTK_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShell)) +#define GTK_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_SHELL, GtkMenuShellClass)) +#define GTK_IS_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_SHELL)) +#define GTK_IS_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_SHELL)) #define GTK_MENU_SHELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShellClass)) -typedef struct _GtkMenuShell GtkMenuShell; -typedef struct _GtkMenuShellClass GtkMenuShellClass; +typedef struct _GtkMenuShell GtkMenuShell; +typedef struct _GtkMenuShellClass GtkMenuShellClass; +typedef struct _GtkMenuShellPrivate GtkMenuShellPrivate; struct _GtkMenuShell { GtkContainer container; - GList *GSEAL (children); - GtkWidget *GSEAL (active_menu_item); - GtkWidget *GSEAL (parent_menu_shell); - - guint GSEAL (button); - guint32 GSEAL (activate_time); - - guint GSEAL (active) : 1; - guint GSEAL (have_grab) : 1; - guint GSEAL (have_xgrab) : 1; - guint GSEAL (ignore_leave) : 1; /* unused */ - guint GSEAL (menu_flag) : 1; /* unused */ - guint GSEAL (ignore_enter) : 1; - guint GSEAL (keyboard_mode) : 1; + /*< private >*/ + GtkMenuShellPrivate *priv; }; struct _GtkMenuShellClass { GtkContainerClass parent_class; - - guint submenu_placement : 1; - - void (*deactivate) (GtkMenuShell *menu_shell); - void (*selection_done) (GtkMenuShell *menu_shell); - void (*move_current) (GtkMenuShell *menu_shell, - GtkMenuDirectionType direction); - void (*activate_current) (GtkMenuShell *menu_shell, - gboolean force_hide); - void (*cancel) (GtkMenuShell *menu_shell); - void (*select_item) (GtkMenuShell *menu_shell, - GtkWidget *menu_item); - void (*insert) (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position); - gint (*get_popup_delay) (GtkMenuShell *menu_shell); - gboolean (*move_selected) (GtkMenuShell *menu_shell, - gint distance); + guint submenu_placement : 1; + + void (*deactivate) (GtkMenuShell *menu_shell); + void (*selection_done) (GtkMenuShell *menu_shell); + + void (*move_current) (GtkMenuShell *menu_shell, + GtkMenuDirectionType direction); + void (*activate_current) (GtkMenuShell *menu_shell, + gboolean force_hide); + void (*cancel) (GtkMenuShell *menu_shell); + void (*select_item) (GtkMenuShell *menu_shell, + GtkWidget *menu_item); + void (*insert) (GtkMenuShell *menu_shell, + GtkWidget *child, + gint position); + gint (*get_popup_delay) (GtkMenuShell *menu_shell); + gboolean (*move_selected) (GtkMenuShell *menu_shell, + gint distance); /* Padding for future expansion */ void (*_gtk_reserved1) (void); @@ -99,49 +88,31 @@ struct _GtkMenuShellClass }; -GType gtk_menu_shell_get_type (void) G_GNUC_CONST; -void gtk_menu_shell_append (GtkMenuShell *menu_shell, - GtkWidget *child); -void gtk_menu_shell_prepend (GtkMenuShell *menu_shell, - GtkWidget *child); -void gtk_menu_shell_insert (GtkMenuShell *menu_shell, - GtkWidget *child, - gint position); -void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell); -void gtk_menu_shell_select_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item); -void gtk_menu_shell_deselect (GtkMenuShell *menu_shell); -void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, - GtkWidget *menu_item, - gboolean force_deactivate); -void gtk_menu_shell_select_first (GtkMenuShell *menu_shell, - gboolean search_sensitive); -void _gtk_menu_shell_select_last (GtkMenuShell *menu_shell, - gboolean search_sensitive); -void _gtk_menu_shell_activate (GtkMenuShell *menu_shell); -gint _gtk_menu_shell_get_popup_delay (GtkMenuShell *menu_shell); - -void _gtk_menu_shell_set_grab_device (GtkMenuShell *menu_shell, - GdkDevice *device); -GdkDevice * _gtk_menu_shell_get_grab_device (GtkMenuShell *menu_shell); - -void gtk_menu_shell_cancel (GtkMenuShell *menu_shell); - -void _gtk_menu_shell_add_mnemonic (GtkMenuShell *menu_shell, - guint keyval, - GtkWidget *target); -void _gtk_menu_shell_remove_mnemonic (GtkMenuShell *menu_shell, - guint keyval, - GtkWidget *target); +GType gtk_menu_shell_get_type (void) G_GNUC_CONST; +void gtk_menu_shell_append (GtkMenuShell *menu_shell, + GtkWidget *child); +void gtk_menu_shell_prepend (GtkMenuShell *menu_shell, + GtkWidget *child); +void gtk_menu_shell_insert (GtkMenuShell *menu_shell, + GtkWidget *child, + gint position); +void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell); +void gtk_menu_shell_select_item (GtkMenuShell *menu_shell, + GtkWidget *menu_item); +void gtk_menu_shell_deselect (GtkMenuShell *menu_shell); +void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, + GtkWidget *menu_item, + gboolean force_deactivate); +void gtk_menu_shell_select_first (GtkMenuShell *menu_shell, + gboolean search_sensitive); +void gtk_menu_shell_cancel (GtkMenuShell *menu_shell); gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell); void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell, gboolean take_focus); -void _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell); -void _gtk_menu_shell_set_keyboard_mode (GtkMenuShell *menu_shell, - gboolean keyboard_mode); -gboolean _gtk_menu_shell_get_keyboard_mode (GtkMenuShell *menu_shell); +GtkWidget *gtk_menu_shell_get_selected_item (GtkMenuShell *menu_shell); +GtkWidget *gtk_menu_shell_get_parent_shell (GtkMenuShell *menu_shell); G_END_DECLS diff --git a/gtk/gtkmenushellprivate.h b/gtk/gtkmenushellprivate.h new file mode 100644 index 0000000000..6015f0c6e2 --- /dev/null +++ b/gtk/gtkmenushellprivate.h @@ -0,0 +1,82 @@ +/* GTK - The GIMP Toolkit + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GTK_MENU_SHELL_PRIVATE_H__ +#define __GTK_MENU_SHELL_PRIVATE_H__ + + +#include +#include +#include + + +G_BEGIN_DECLS + +struct _GtkMenuShellPrivate +{ + GList *children; + GtkWidget *active_menu_item; + GtkWidget *parent_menu_shell; + + guint button; + guint32 activate_time; + + guint active : 1; + guint have_grab : 1; + guint have_xgrab : 1; + guint ignore_enter : 1; + guint keyboard_mode : 1; + + guint take_focus : 1; + guint activated_submenu : 1; + guint in_unselectable_item : 1; /* This flag is a crutch to keep + * mnemonics in the same menu if + * the user moves the mouse over + * an unselectable menuitem. + */ + GtkMnemonicHash *mnemonic_hash; + GtkKeyHash *key_hash; + + GdkDevice *grab_pointer; +}; + +void _gtk_menu_shell_select_last (GtkMenuShell *menu_shell, + gboolean search_sensitive); +void _gtk_menu_shell_activate (GtkMenuShell *menu_shell); +gint _gtk_menu_shell_get_popup_delay (GtkMenuShell *menu_shell); +void _gtk_menu_shell_set_grab_device (GtkMenuShell *menu_shell, + GdkDevice *device); +GdkDevice *_gtk_menu_shell_get_grab_device (GtkMenuShell *menu_shell); + +void _gtk_menu_shell_add_mnemonic (GtkMenuShell *menu_shell, + guint keyval, + GtkWidget *target); +void _gtk_menu_shell_remove_mnemonic (GtkMenuShell *menu_shell, + guint keyval, + GtkWidget *target); + +void _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell); +void _gtk_menu_shell_set_keyboard_mode (GtkMenuShell *menu_shell, + gboolean keyboard_mode); +gboolean _gtk_menu_shell_get_keyboard_mode (GtkMenuShell *menu_shell); + + +G_END_DECLS + +#endif /* __GTK_MENU_SHELL_PRIVATE_H__ */ diff --git a/gtk/gtkmenutoolbutton.c b/gtk/gtkmenutoolbutton.c index f657805d70..e63d795317 100644 --- a/gtk/gtkmenutoolbutton.c +++ b/gtk/gtkmenutoolbutton.c @@ -30,6 +30,7 @@ #include "gtkmenu.h" #include "gtkmain.h" #include "gtksizerequest.h" +#include "gtkbuildable.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -49,6 +50,12 @@ static void gtk_menu_tool_button_destroy (GtkWidget *widget); static int menu_deactivate_cb (GtkMenuShell *menu_shell, GtkMenuToolButton *button); +static void gtk_menu_tool_button_buildable_interface_init (GtkBuildableIface *iface); +static void gtk_menu_tool_button_buildable_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *type); + enum { SHOW_MENU, @@ -63,7 +70,11 @@ enum static gint signals[LAST_SIGNAL]; -G_DEFINE_TYPE (GtkMenuToolButton, gtk_menu_tool_button, GTK_TYPE_TOOL_BUTTON) +static GtkBuildableIface *parent_buildable_iface; + +G_DEFINE_TYPE_WITH_CODE (GtkMenuToolButton, gtk_menu_tool_button, GTK_TYPE_TOOL_BUTTON, + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_menu_tool_button_buildable_interface_init)) static void gtk_menu_tool_button_construct_contents (GtkMenuToolButton *button) @@ -453,6 +464,26 @@ gtk_menu_tool_button_destroy (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_menu_tool_button_parent_class)->destroy (widget); } +static void +gtk_menu_tool_button_buildable_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *type) +{ + if (type && strcmp (type, "menu") == 0) + gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (buildable), + GTK_WIDGET (child)); + else + parent_buildable_iface->add_child (buildable, builder, child, type); +} + +static void +gtk_menu_tool_button_buildable_interface_init (GtkBuildableIface *iface) +{ + parent_buildable_iface = g_type_interface_peek_parent (iface); + iface->add_child = gtk_menu_tool_button_buildable_add_child; +} + /** * gtk_menu_tool_button_new: * @icon_widget: (allow-none): a widget that will be used as icon widget, or %NULL diff --git a/gtk/gtkmessagedialog.c b/gtk/gtkmessagedialog.c index f721f94c88..dfa3131496 100644 --- a/gtk/gtkmessagedialog.c +++ b/gtk/gtkmessagedialog.c @@ -26,6 +26,7 @@ */ #include "config.h" + #include #include "gtkmessagedialog.h" @@ -39,6 +40,7 @@ #include "gtkiconfactory.h" #include "gtkintl.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" /** * SECTION:gtkmessagedialog @@ -107,8 +109,7 @@ struct _GtkMessageDialogPrivate guint message_type : 3; }; -static void gtk_message_dialog_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_message_dialog_style_updated (GtkWidget *widget); static void gtk_message_dialog_set_property (GObject *object, guint prop_id, @@ -174,7 +175,7 @@ gtk_message_dialog_class_init (GtkMessageDialogClass *class) widget_class = GTK_WIDGET_CLASS (class); gobject_class = G_OBJECT_CLASS (class); - widget_class->style_set = gtk_message_dialog_style_set; + widget_class->style_updated = gtk_message_dialog_style_updated; gobject_class->set_property = gtk_message_dialog_set_property; gobject_class->get_property = gtk_message_dialog_get_property; @@ -381,13 +382,18 @@ setup_primary_label_font (GtkMessageDialog *dialog) GtkMessageDialogPrivate *priv = dialog->priv; gint size; PangoFontDescription *font_desc; + GtkStyleContext *context; + GtkStateFlags state; /* unset the font settings */ gtk_widget_modify_font (priv->label, NULL); if (priv->has_secondary_text && !priv->has_primary_markup) { - size = pango_font_description_get_size (gtk_widget_get_style (priv->label)->font_desc); + context = gtk_widget_get_style_context (priv->label); + state = gtk_widget_get_state_flags (priv->label); + + size = pango_font_description_get_size (gtk_style_context_get_font (context, state)); font_desc = pango_font_description_new (); pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); pango_font_description_set_size (font_desc, size * PANGO_SCALE_LARGE); @@ -979,8 +985,7 @@ gtk_message_dialog_add_buttons (GtkMessageDialog* message_dialog, } static void -gtk_message_dialog_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_message_dialog_style_updated (GtkWidget *widget) { GtkMessageDialog *dialog = GTK_MESSAGE_DIALOG (widget); GtkWidget *parent; @@ -999,5 +1004,5 @@ gtk_message_dialog_style_set (GtkWidget *widget, setup_primary_label_font (dialog); - GTK_WIDGET_CLASS (gtk_message_dialog_parent_class)->style_set (widget, prev_style); + GTK_WIDGET_CLASS (gtk_message_dialog_parent_class)->style_updated (widget); } diff --git a/gtk/gtkmisc.c b/gtk/gtkmisc.c index edc9514231..bc24ae68a2 100644 --- a/gtk/gtkmisc.c +++ b/gtk/gtkmisc.c @@ -338,8 +338,6 @@ gtk_misc_realize (GtkWidget *widget) window = gtk_widget_get_parent_window (widget); gtk_widget_set_window (widget, window); g_object_ref (window); - - gtk_widget_style_attach (widget); } else { @@ -359,7 +357,5 @@ gtk_misc_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); gdk_window_set_background_pattern (window, NULL); - - gtk_widget_style_attach (widget); } } diff --git a/gtk/gtkmodifierstyle.c b/gtk/gtkmodifierstyle.c index 48a4f21f6e..6b2b9a7eb7 100644 --- a/gtk/gtkmodifierstyle.c +++ b/gtk/gtkmodifierstyle.c @@ -221,7 +221,12 @@ gtk_modifier_style_set_font (GtkModifierStyle *style, if ((!old_font && !font_desc) || (old_font && font_desc && pango_font_description_equal (old_font, font_desc))) - return; + { + if (old_font) + pango_font_description_free (old_font); + + return; + } if (font_desc) gtk_style_properties_set (priv->style, 0, @@ -230,6 +235,9 @@ gtk_modifier_style_set_font (GtkModifierStyle *style, else gtk_style_properties_unset_property (priv->style, "font", 0); + if (old_font) + pango_font_description_free (old_font); + g_signal_emit (style, signals[CHANGED], 0); } @@ -282,11 +290,15 @@ gtk_modifier_style_set_color_property (GtkModifierStyle *style, } if (color) - g_hash_table_insert (priv->color_properties, str, - gdk_rgba_copy (color)); + { + g_hash_table_insert (priv->color_properties, str, + gdk_rgba_copy (color)); + } else - g_hash_table_remove (priv->color_properties, str); + { + g_hash_table_remove (priv->color_properties, str); + g_free (str); + } g_signal_emit (style, signals[CHANGED], 0); - g_free (str); } diff --git a/gtk/gtkmodules.c b/gtk/gtkmodules.c index b1c958cb4b..bd9ba5710f 100644 --- a/gtk/gtkmodules.c +++ b/gtk/gtkmodules.c @@ -312,7 +312,7 @@ load_module (GSList *module_list, gtk_modules = g_slist_append (gtk_modules, info); /* display_init == NULL indicates a non-multihead aware module. - * For these, we delay the call to init_func until first display is + * For these, we delay the call to init_func until first display is * opened, see default_display_notify_cb(). * For multihead aware modules, we call init_func immediately, * and also call display_init_func on all opened displays. diff --git a/gtk/gtkmodules.h b/gtk/gtkmodules.h index ca1c52e431..a2adfce78a 100644 --- a/gtk/gtkmodules.h +++ b/gtk/gtkmodules.h @@ -30,22 +30,29 @@ G_BEGIN_DECLS - -/* Functions for use within GTK+ +/** + * GtkModuleInitFunc: + * @argc: GTK+ always passes %NULL for this argument + * @argv: GTK+ always passes %NULL for this argument + * + * Each GTK+ module must have a function gtk_module_init() + * with this prototype. This function is called after loading + * the module. */ -gchar * _gtk_find_module (const gchar *name, - const gchar *type); -gchar **_gtk_get_module_path (const gchar *type); +typedef void (*GtkModuleInitFunc) (gint *argc, + gchar ***argv); -void _gtk_modules_init (gint *argc, - gchar ***argv, - const gchar *gtk_modules_args); -void _gtk_modules_settings_changed (GtkSettings *settings, - const gchar *modules); - -typedef void (*GtkModuleInitFunc) (gint *argc, - gchar ***argv); -typedef void (*GtkModuleDisplayInitFunc) (GdkDisplay *display); +/** + * GtkModuleDisplayInitFunc: + * @display: an open #GdkDisplay + * + * A multihead-aware GTK+ module may have a gtk_module_display_init() + * function with this prototype. GTK+ calls this function for each + * opened display. + * + * Since: 2.2 + */ +typedef void (*GtkModuleDisplayInitFunc) (GdkDisplay *display); G_END_DECLS diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c index f5a4db5cc9..e94518d29c 100644 --- a/gtk/gtknotebook.c +++ b/gtk/gtknotebook.c @@ -22,17 +22,15 @@ * 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/. + * GTK+ at ftp:ftp.gtk.org/pub/gtk/. */ #include "config.h" -#include "gtknotebook.h" - #include #include -#include +#include "gtknotebook.h" #include "gtkmain.h" #include "gtkmenu.h" @@ -44,6 +42,7 @@ #include "gtkprivate.h" #include "gtkdnd.h" #include "gtkbuildable.h" +#include "gtktypebuiltins.h" /** @@ -235,7 +234,6 @@ enum { CHILD_PROP_POSITION, CHILD_PROP_TAB_EXPAND, CHILD_PROP_TAB_FILL, - CHILD_PROP_TAB_PACK, CHILD_PROP_REORDERABLE, CHILD_PROP_DETACHABLE }; @@ -256,13 +254,12 @@ struct _GtkNotebookPage GtkWidget *child; GtkWidget *tab_label; GtkWidget *menu_label; - GtkWidget *last_focus_child; /* Last descendant of the page that had focus */ + GtkWidget *last_focus_child; /* Last descendant of the page that had focus */ - guint default_menu : 1; /* If true, we create the menu label ourself */ - guint default_tab : 1; /* If true, we create the tab label ourself */ + guint default_menu : 1; /* If true, we create the menu label ourself */ + guint default_tab : 1; /* If true, we create the tab label ourself */ guint expand : 1; guint fill : 1; - guint pack : 1; guint reorderable : 1; guint detachable : 1; @@ -289,41 +286,39 @@ static const GtkTargetEntry notebook_targets [] = { #define CHECK_FIND_CHILD(notebook, child) \ gtk_notebook_find_child (notebook, child, NULL) #endif - + /*** GtkNotebook Methods ***/ static gboolean gtk_notebook_select_page (GtkNotebook *notebook, - gboolean move_focus); + gboolean move_focus); static gboolean gtk_notebook_focus_tab (GtkNotebook *notebook, - GtkNotebookTab type); + GtkNotebookTab type); static gboolean gtk_notebook_change_current_page (GtkNotebook *notebook, - gint offset); + gint offset); static void gtk_notebook_move_focus_out (GtkNotebook *notebook, - GtkDirectionType direction_type); + GtkDirectionType direction_type); static gboolean gtk_notebook_reorder_tab (GtkNotebook *notebook, - GtkDirectionType direction_type, - gboolean move_to_last); + GtkDirectionType direction_type, + gboolean move_to_last); static void gtk_notebook_remove_tab_label (GtkNotebook *notebook, - GtkNotebookPage *page); + GtkNotebookPage *page); static void gtk_notebook_set_tab_label_packing (GtkNotebook *notebook, GtkWidget *child, gboolean expand, - gboolean fill, - GtkPackType pack_type); + gboolean fill); static void gtk_notebook_query_tab_label_packing (GtkNotebook *notebook, GtkWidget *child, gboolean *expand, - gboolean *fill, - GtkPackType *pack_type); + gboolean *fill); /*** GObject Methods ***/ -static void gtk_notebook_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_notebook_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); +static void gtk_notebook_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_notebook_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); /*** GtkWidget Methods ***/ static void gtk_notebook_destroy (GtkWidget *widget); @@ -332,103 +327,103 @@ static void gtk_notebook_unmap (GtkWidget *widget); static void gtk_notebook_realize (GtkWidget *widget); static void gtk_notebook_unrealize (GtkWidget *widget); static void gtk_notebook_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition); static void gtk_notebook_get_preferred_width (GtkWidget *widget, - gint *minimum, - gint *natural); + gint *minimum, + gint *natural); static void gtk_notebook_get_preferred_height(GtkWidget *widget, - gint *minimum, - gint *natural); + gint *minimum, + gint *natural); static void gtk_notebook_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static gint gtk_notebook_draw (GtkWidget *widget, cairo_t *cr); static gint gtk_notebook_button_press (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gint gtk_notebook_button_release (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gboolean gtk_notebook_popup_menu (GtkWidget *widget); static gint gtk_notebook_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gint gtk_notebook_motion_notify (GtkWidget *widget, - GdkEventMotion *event); + GdkEventMotion *event); static gint gtk_notebook_focus_in (GtkWidget *widget, - GdkEventFocus *event); + GdkEventFocus *event); static gint gtk_notebook_focus_out (GtkWidget *widget, - GdkEventFocus *event); + GdkEventFocus *event); static void gtk_notebook_grab_notify (GtkWidget *widget, - gboolean was_grabbed); -static void gtk_notebook_state_changed (GtkWidget *widget, - GtkStateType previous_state); + gboolean was_grabbed); +static void gtk_notebook_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gint gtk_notebook_focus (GtkWidget *widget, - GtkDirectionType direction); -static void gtk_notebook_style_set (GtkWidget *widget, - GtkStyle *previous); + GtkDirectionType direction); +static void gtk_notebook_style_updated (GtkWidget *widget); /*** Drag and drop Methods ***/ static void gtk_notebook_drag_begin (GtkWidget *widget, - GdkDragContext *context); + GdkDragContext *context); static void gtk_notebook_drag_end (GtkWidget *widget, - GdkDragContext *context); + GdkDragContext *context); static gboolean gtk_notebook_drag_failed (GtkWidget *widget, - GdkDragContext *context, - GtkDragResult result, - gpointer data); + GdkDragContext *context, + GtkDragResult result); static gboolean gtk_notebook_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time); + GdkDragContext *context, + gint x, + gint y, + guint time); static void gtk_notebook_drag_leave (GtkWidget *widget, - GdkDragContext *context, - guint time); + GdkDragContext *context, + guint time); static gboolean gtk_notebook_drag_drop (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time); + GdkDragContext *context, + gint x, + gint y, + guint time); static void gtk_notebook_drag_data_get (GtkWidget *widget, - GdkDragContext *context, - GtkSelectionData *data, - guint info, - guint time); + GdkDragContext *context, + GtkSelectionData *data, + guint info, + guint time); static void gtk_notebook_drag_data_received (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *data, - guint info, - guint time); + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *data, + guint info, + guint time); /*** GtkContainer Methods ***/ static void gtk_notebook_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec); + GtkWidget *child, + guint property_id, + const GValue *value, + GParamSpec *pspec); static void gtk_notebook_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec); + GtkWidget *child, + guint property_id, + GValue *value, + GParamSpec *pspec); static void gtk_notebook_add (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_notebook_remove (GtkContainer *container, - GtkWidget *widget); + GtkWidget *widget); static void gtk_notebook_set_focus_child (GtkContainer *container, - GtkWidget *child); + GtkWidget *child); static GType gtk_notebook_child_type (GtkContainer *container); static void gtk_notebook_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); +static GtkWidgetPath * gtk_notebook_get_path_for_child (GtkContainer *container, + GtkWidget *widget); /*** GtkNotebook Methods ***/ static gint gtk_notebook_real_insert_page (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - GtkWidget *menu_label, - gint position); + GtkWidget *child, + GtkWidget *tab_label, + GtkWidget *menu_label, + gint position); static GtkNotebook *gtk_notebook_create_window (GtkNotebook *notebook, GtkWidget *page, @@ -439,103 +434,100 @@ static GtkNotebook *gtk_notebook_create_window (GtkNotebook *notebook, static void gtk_notebook_redraw_tabs (GtkNotebook *notebook); static void gtk_notebook_redraw_arrows (GtkNotebook *notebook); static void gtk_notebook_real_remove (GtkNotebook *notebook, - GList *list); + GList *list); static void gtk_notebook_update_labels (GtkNotebook *notebook); static gint gtk_notebook_timer (GtkNotebook *notebook); static void gtk_notebook_set_scroll_timer (GtkNotebook *notebook); static gint gtk_notebook_page_compare (gconstpointer a, - gconstpointer b); + gconstpointer b); static GList* gtk_notebook_find_child (GtkNotebook *notebook, - GtkWidget *child, - const gchar *function); -static gint gtk_notebook_real_page_position (GtkNotebook *notebook, - GList *list); + GtkWidget *child, + const gchar *function); static GList * gtk_notebook_search_page (GtkNotebook *notebook, - GList *list, - gint direction, - gboolean find_visible); + GList *list, + gint direction, + gboolean find_visible); static void gtk_notebook_child_reordered (GtkNotebook *notebook, - GtkNotebookPage *page); + GtkNotebookPage *page); /*** GtkNotebook Drawing Functions ***/ static void gtk_notebook_paint (GtkWidget *widget, - cairo_t *cr); + cairo_t *cr); static void gtk_notebook_draw_tab (GtkNotebook *notebook, - GtkNotebookPage *page, - cairo_t *cr, - guint position, - gboolean is_last); + GtkNotebookPage *page, + cairo_t *cr, + GtkRegionFlags flags); static void gtk_notebook_draw_arrow (GtkNotebook *notebook, cairo_t *cr, - GtkNotebookArrow arrow); + GtkNotebookArrow arrow); /*** GtkNotebook Size Allocate Functions ***/ static void gtk_notebook_pages_allocate (GtkNotebook *notebook); static gboolean gtk_notebook_page_allocate (GtkNotebook *notebook, - GtkNotebookPage *page); + GtkNotebookPage *page); static void gtk_notebook_calc_tabs (GtkNotebook *notebook, - GList *start, - GList **end, - gint *tab_space, - guint direction); + GList *start, + GList **end, + gint *tab_space, + guint direction); /*** GtkNotebook Page Switch Methods ***/ static void gtk_notebook_real_switch_page (GtkNotebook *notebook, - GtkWidget *child, - guint page_num); + GtkWidget *child, + guint page_num); /*** GtkNotebook Page Switch Functions ***/ static void gtk_notebook_switch_page (GtkNotebook *notebook, - GtkNotebookPage *page); + GtkNotebookPage *page); static gint gtk_notebook_page_select (GtkNotebook *notebook, - gboolean move_focus); + gboolean move_focus); static void gtk_notebook_switch_focus_tab (GtkNotebook *notebook, GList *new_child); static void gtk_notebook_menu_switch_page (GtkWidget *widget, - GtkNotebookPage *page); + GtkNotebookPage *page); /*** GtkNotebook Menu Functions ***/ static void gtk_notebook_menu_item_create (GtkNotebook *notebook, - GList *list); + GList *list); static void gtk_notebook_menu_label_unparent (GtkWidget *widget, - gpointer data); + gpointer data); static void gtk_notebook_menu_detacher (GtkWidget *widget, - GtkMenu *menu); + GtkMenu *menu); /*** GtkNotebook Private Setters ***/ static void gtk_notebook_update_tab_states (GtkNotebook *notebook); static gboolean gtk_notebook_mnemonic_activate_switch_page (GtkWidget *child, - gboolean overload, - gpointer data); + gboolean overload, + gpointer data); static gboolean focus_tabs_in (GtkNotebook *notebook); static gboolean focus_child_in (GtkNotebook *notebook, - GtkDirectionType direction); + GtkDirectionType direction); static void stop_scrolling (GtkNotebook *notebook); static void do_detach_tab (GtkNotebook *from, - GtkNotebook *to, - GtkWidget *child, - gint x, - gint y); + GtkNotebook *to, + GtkWidget *child, + gint x, + gint y); /* GtkBuildable */ static void gtk_notebook_buildable_init (GtkBuildableIface *iface); static void gtk_notebook_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type); + GtkBuilder *builder, + GObject *child, + const gchar *type); static guint notebook_signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_CODE (GtkNotebook, gtk_notebook, GTK_TYPE_CONTAINER, - G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, - gtk_notebook_buildable_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_notebook_buildable_init)) static void add_tab_bindings (GtkBindingSet *binding_set, - GdkModifierType modifiers, - GtkDirectionType direction) + GdkModifierType modifiers, + GtkDirectionType direction) { gtk_binding_entry_add_signal (binding_set, GDK_KEY_Tab, modifiers, "move_focus_out", 1, @@ -547,11 +539,11 @@ add_tab_bindings (GtkBindingSet *binding_set, static void add_arrow_bindings (GtkBindingSet *binding_set, - guint keysym, - GtkDirectionType direction) + guint keysym, + GtkDirectionType direction) { guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left; - + gtk_binding_entry_add_signal (binding_set, keysym, GDK_CONTROL_MASK, "move_focus_out", 1, GTK_TYPE_DIRECTION_TYPE, direction); @@ -562,20 +554,20 @@ add_arrow_bindings (GtkBindingSet *binding_set, static void add_reorder_bindings (GtkBindingSet *binding_set, - guint keysym, - GtkDirectionType direction, - gboolean move_to_last) + guint keysym, + GtkDirectionType direction, + gboolean move_to_last) { guint keypad_keysym = keysym - GDK_KEY_Left + GDK_KEY_KP_Left; gtk_binding_entry_add_signal (binding_set, keysym, GDK_MOD1_MASK, - "reorder_tab", 2, - GTK_TYPE_DIRECTION_TYPE, direction, - G_TYPE_BOOLEAN, move_to_last); + "reorder_tab", 2, + GTK_TYPE_DIRECTION_TYPE, direction, + G_TYPE_BOOLEAN, move_to_last); gtk_binding_entry_add_signal (binding_set, keypad_keysym, GDK_MOD1_MASK, - "reorder_tab", 2, - GTK_TYPE_DIRECTION_TYPE, direction, - G_TYPE_BOOLEAN, move_to_last); + "reorder_tab", 2, + GTK_TYPE_DIRECTION_TYPE, direction, + G_TYPE_BOOLEAN, move_to_last); } static gboolean @@ -634,7 +626,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class); GtkBindingSet *binding_set; - + gobject_class->set_property = gtk_notebook_set_property; gobject_class->get_property = gtk_notebook_get_property; @@ -653,11 +645,11 @@ gtk_notebook_class_init (GtkNotebookClass *class) widget_class->leave_notify_event = gtk_notebook_leave_notify; widget_class->motion_notify_event = gtk_notebook_motion_notify; widget_class->grab_notify = gtk_notebook_grab_notify; - widget_class->state_changed = gtk_notebook_state_changed; + widget_class->state_flags_changed = gtk_notebook_state_flags_changed; widget_class->focus_in_event = gtk_notebook_focus_in; widget_class->focus_out_event = gtk_notebook_focus_out; widget_class->focus = gtk_notebook_focus; - widget_class->style_set = gtk_notebook_style_set; + widget_class->style_updated = gtk_notebook_style_updated; widget_class->drag_begin = gtk_notebook_drag_begin; widget_class->drag_end = gtk_notebook_drag_end; widget_class->drag_motion = gtk_notebook_drag_motion; @@ -665,6 +657,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) widget_class->drag_drop = gtk_notebook_drag_drop; widget_class->drag_data_get = gtk_notebook_drag_data_get; widget_class->drag_data_received = gtk_notebook_drag_data_received; + widget_class->drag_failed = gtk_notebook_drag_failed; widget_class->compute_expand = gtk_notebook_compute_expand; container_class->add = gtk_notebook_add; @@ -674,6 +667,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) container_class->get_child_property = gtk_notebook_get_child_property; container_class->set_child_property = gtk_notebook_set_child_property; container_class->child_type = gtk_notebook_child_type; + container_class->get_path_for_child = gtk_notebook_get_path_for_child; class->switch_page = gtk_notebook_real_switch_page; class->insert_page = gtk_notebook_real_insert_page; @@ -684,52 +678,52 @@ gtk_notebook_class_init (GtkNotebookClass *class) class->move_focus_out = gtk_notebook_move_focus_out; class->reorder_tab = gtk_notebook_reorder_tab; class->create_window = gtk_notebook_create_window; - + g_object_class_install_property (gobject_class, - PROP_PAGE, - g_param_spec_int ("page", - P_("Page"), - P_("The index of the current page"), - -1, - G_MAXINT, - -1, - GTK_PARAM_READWRITE)); + PROP_PAGE, + g_param_spec_int ("page", + P_("Page"), + P_("The index of the current page"), + -1, + G_MAXINT, + -1, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_TAB_POS, - g_param_spec_enum ("tab-pos", - P_("Tab Position"), - P_("Which side of the notebook holds the tabs"), - GTK_TYPE_POSITION_TYPE, - GTK_POS_TOP, - GTK_PARAM_READWRITE)); + PROP_TAB_POS, + g_param_spec_enum ("tab-pos", + P_("Tab Position"), + P_("Which side of the notebook holds the tabs"), + GTK_TYPE_POSITION_TYPE, + GTK_POS_TOP, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_SHOW_TABS, - g_param_spec_boolean ("show-tabs", - P_("Show Tabs"), - P_("Whether tabs should be shown"), - TRUE, - GTK_PARAM_READWRITE)); + PROP_SHOW_TABS, + g_param_spec_boolean ("show-tabs", + P_("Show Tabs"), + P_("Whether tabs should be shown"), + TRUE, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_SHOW_BORDER, - g_param_spec_boolean ("show-border", - P_("Show Border"), - P_("Whether the border should be shown"), - TRUE, - GTK_PARAM_READWRITE)); + PROP_SHOW_BORDER, + g_param_spec_boolean ("show-border", + P_("Show Border"), + P_("Whether the border should be shown"), + TRUE, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_SCROLLABLE, - g_param_spec_boolean ("scrollable", - P_("Scrollable"), - P_("If TRUE, scroll arrows are added if there are too many tabs to fit"), - FALSE, - GTK_PARAM_READWRITE)); + PROP_SCROLLABLE, + g_param_spec_boolean ("scrollable", + P_("Scrollable"), + P_("If TRUE, scroll arrows are added if there are too many tabs to fit"), + FALSE, + GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, - PROP_ENABLE_POPUP, - g_param_spec_boolean ("enable-popup", - P_("Enable Popup"), - P_("If TRUE, pressing the right mouse button on the notebook pops up a menu that you can use to go to a page"), - FALSE, - GTK_PARAM_READWRITE)); + PROP_ENABLE_POPUP, + g_param_spec_boolean ("enable-popup", + P_("Enable Popup"), + P_("If TRUE, pressing the right mouse button on the notebook pops up a menu that you can use to go to a page"), + FALSE, + GTK_PARAM_READWRITE)); /** * GtkNotebook:group-name: @@ -739,139 +733,126 @@ gtk_notebook_class_init (GtkNotebookClass *class) * Since: 2.24 */ g_object_class_install_property (gobject_class, - PROP_GROUP_NAME, - g_param_spec_string ("group-name", - P_("Group Name"), - P_("Group name for tab drag and drop"), + PROP_GROUP_NAME, + g_param_spec_string ("group-name", + P_("Group Name"), + P_("Group name for tab drag and drop"), NULL, - GTK_PARAM_READWRITE)); + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_TAB_LABEL, - g_param_spec_string ("tab-label", - P_("Tab label"), - P_("The string displayed on the child's tab label"), - NULL, - GTK_PARAM_READWRITE)); + CHILD_PROP_TAB_LABEL, + g_param_spec_string ("tab-label", + P_("Tab label"), + P_("The string displayed on the child's tab label"), + NULL, + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_MENU_LABEL, - g_param_spec_string ("menu-label", - P_("Menu label"), - P_("The string displayed in the child's menu entry"), - NULL, - GTK_PARAM_READWRITE)); + CHILD_PROP_MENU_LABEL, + g_param_spec_string ("menu-label", + P_("Menu label"), + P_("The string displayed in the child's menu entry"), + NULL, + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_POSITION, - g_param_spec_int ("position", - P_("Position"), - P_("The index of the child in the parent"), - -1, G_MAXINT, 0, - GTK_PARAM_READWRITE)); + CHILD_PROP_POSITION, + g_param_spec_int ("position", + P_("Position"), + P_("The index of the child in the parent"), + -1, G_MAXINT, 0, + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_TAB_EXPAND, - g_param_spec_boolean ("tab-expand", - P_("Tab expand"), - P_("Whether to expand the child's tab"), - FALSE, - GTK_PARAM_READWRITE)); + CHILD_PROP_TAB_EXPAND, + g_param_spec_boolean ("tab-expand", + P_("Tab expand"), + P_("Whether to expand the child's tab"), + FALSE, + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_TAB_FILL, - g_param_spec_boolean ("tab-fill", - P_("Tab fill"), - P_("Whether the child's tab should fill the allocated area"), - TRUE, - GTK_PARAM_READWRITE)); + CHILD_PROP_TAB_FILL, + g_param_spec_boolean ("tab-fill", + P_("Tab fill"), + P_("Whether the child's tab should fill the allocated area"), + TRUE, + GTK_PARAM_READWRITE)); - /** - * GtkNotebook:tab-pack: - * - * Deprecated: 2.20: The tab packing functionality of children should not - * be used anymore and support will be removed in the future. - */ gtk_container_class_install_child_property (container_class, - CHILD_PROP_TAB_PACK, - g_param_spec_enum ("tab-pack", - P_("Tab pack type"), - P_("A GtkPackType indicating whether the child is packed with reference to the start or end of the parent"), - GTK_TYPE_PACK_TYPE, GTK_PACK_START, - GTK_PARAM_READWRITE)); + CHILD_PROP_REORDERABLE, + g_param_spec_boolean ("reorderable", + P_("Tab reorderable"), + P_("Whether the tab is reorderable by user action"), + FALSE, + GTK_PARAM_READWRITE)); gtk_container_class_install_child_property (container_class, - CHILD_PROP_REORDERABLE, - g_param_spec_boolean ("reorderable", - P_("Tab reorderable"), - P_("Whether the tab is reorderable by user action"), - FALSE, - GTK_PARAM_READWRITE)); - gtk_container_class_install_child_property (container_class, - CHILD_PROP_DETACHABLE, - g_param_spec_boolean ("detachable", - P_("Tab detachable"), - P_("Whether the tab is detachable"), - FALSE, - GTK_PARAM_READWRITE)); + CHILD_PROP_DETACHABLE, + g_param_spec_boolean ("detachable", + P_("Tab detachable"), + P_("Whether the tab is detachable"), + FALSE, + GTK_PARAM_READWRITE)); /** * GtkNotebook:has-secondary-backward-stepper: * - * The "has-secondary-backward-stepper" property determines whether - * a second backward arrow button is displayed on the opposite end + * The "has-secondary-backward-stepper" property determines whether + * a second backward arrow button is displayed on the opposite end * of the tab area. * * Since: 2.4 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_boolean ("has-secondary-backward-stepper", - P_("Secondary backward stepper"), - P_("Display a second backward arrow button on the opposite end of the tab area"), - FALSE, - GTK_PARAM_READABLE)); + g_param_spec_boolean ("has-secondary-backward-stepper", + P_("Secondary backward stepper"), + P_("Display a second backward arrow button on the opposite end of the tab area"), + FALSE, + GTK_PARAM_READABLE)); /** * GtkNotebook:has-secondary-forward-stepper: * - * The "has-secondary-forward-stepper" property determines whether - * a second forward arrow button is displayed on the opposite end + * The "has-secondary-forward-stepper" property determines whether + * a second forward arrow button is displayed on the opposite end * of the tab area. * * Since: 2.4 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_boolean ("has-secondary-forward-stepper", - P_("Secondary forward stepper"), - P_("Display a second forward arrow button on the opposite end of the tab area"), - FALSE, - GTK_PARAM_READABLE)); + g_param_spec_boolean ("has-secondary-forward-stepper", + P_("Secondary forward stepper"), + P_("Display a second forward arrow button on the opposite end of the tab area"), + FALSE, + GTK_PARAM_READABLE)); /** * GtkNotebook:has-backward-stepper: * - * The "has-backward-stepper" property determines whether + * The "has-backward-stepper" property determines whether * the standard backward arrow button is displayed. * * Since: 2.4 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_boolean ("has-backward-stepper", - P_("Backward stepper"), - P_("Display the standard backward arrow button"), - TRUE, - GTK_PARAM_READABLE)); + g_param_spec_boolean ("has-backward-stepper", + P_("Backward stepper"), + P_("Display the standard backward arrow button"), + TRUE, + GTK_PARAM_READABLE)); /** * GtkNotebook:has-forward-stepper: * - * The "has-forward-stepper" property determines whether + * The "has-forward-stepper" property determines whether * the standard forward arrow button is displayed. * * Since: 2.4 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_boolean ("has-forward-stepper", - P_("Forward stepper"), - P_("Display the standard forward arrow button"), - TRUE, - GTK_PARAM_READABLE)); - + g_param_spec_boolean ("has-forward-stepper", + P_("Forward stepper"), + P_("Display the standard forward arrow button"), + TRUE, + GTK_PARAM_READABLE)); + /** * GtkNotebook:tab-overlap: * @@ -879,15 +860,15 @@ gtk_notebook_class_init (GtkNotebookClass *class) * area. * * Since: 2.10 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("tab-overlap", - P_("Tab overlap"), - P_("Size of tab overlap area"), - G_MININT, - G_MAXINT, - 2, - GTK_PARAM_READABLE)); + g_param_spec_int ("tab-overlap", + P_("Tab overlap"), + P_("Size of tab overlap area"), + G_MININT, + G_MAXINT, + 2, + GTK_PARAM_READABLE)); /** * GtkNotebook:tab-curvature: @@ -895,15 +876,15 @@ gtk_notebook_class_init (GtkNotebookClass *class) * The "tab-curvature" property defines size of tab curvature. * * Since: 2.10 - */ + */ gtk_widget_class_install_style_property (widget_class, - g_param_spec_int ("tab-curvature", - P_("Tab curvature"), - P_("Size of tab curvature"), - 0, - G_MAXINT, - 1, - GTK_PARAM_READABLE)); + g_param_spec_int ("tab-curvature", + P_("Tab curvature"), + P_("Size of tab curvature"), + 0, + G_MAXINT, + 1, + GTK_PARAM_READABLE)); /** * GtkNotebook:arrow-spacing: @@ -932,15 +913,15 @@ gtk_notebook_class_init (GtkNotebookClass *class) */ notebook_signals[SWITCH_PAGE] = g_signal_new (I_("switch-page"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkNotebookClass, switch_page), - NULL, NULL, - _gtk_marshal_VOID__OBJECT_UINT, - G_TYPE_NONE, 2, - GTK_TYPE_WIDGET, - G_TYPE_UINT); - notebook_signals[FOCUS_TAB] = + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkNotebookClass, switch_page), + NULL, NULL, + _gtk_marshal_VOID__OBJECT_UINT, + G_TYPE_NONE, 2, + GTK_TYPE_WIDGET, + G_TYPE_UINT); + notebook_signals[FOCUS_TAB] = g_signal_new (I_("focus-tab"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, @@ -949,7 +930,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) _gtk_marshal_BOOLEAN__ENUM, G_TYPE_BOOLEAN, 1, GTK_TYPE_NOTEBOOK_TAB); - notebook_signals[SELECT_PAGE] = + notebook_signals[SELECT_PAGE] = g_signal_new (I_("select-page"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, @@ -958,7 +939,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) _gtk_marshal_BOOLEAN__BOOLEAN, G_TYPE_BOOLEAN, 1, G_TYPE_BOOLEAN); - notebook_signals[CHANGE_CURRENT_PAGE] = + notebook_signals[CHANGE_CURRENT_PAGE] = g_signal_new (I_("change-current-page"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, @@ -985,7 +966,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) _gtk_marshal_BOOLEAN__ENUM_BOOLEAN, G_TYPE_BOOLEAN, 2, GTK_TYPE_DIRECTION_TYPE, - G_TYPE_BOOLEAN); + G_TYPE_BOOLEAN); /** * GtkNotebook::page-reordered: * @notebook: the #GtkNotebook @@ -996,7 +977,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) * right after a page has been reordered. * * Since: 2.10 - **/ + */ notebook_signals[PAGE_REORDERED] = g_signal_new (I_("page-reordered"), G_TYPE_FROM_CLASS (gobject_class), @@ -1017,7 +998,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) * right after a page is removed from the notebook. * * Since: 2.10 - **/ + */ notebook_signals[PAGE_REMOVED] = g_signal_new (I_("page-removed"), G_TYPE_FROM_CLASS (gobject_class), @@ -1038,7 +1019,7 @@ gtk_notebook_class_init (GtkNotebookClass *class) * right after a page is added to the notebook. * * Since: 2.10 - **/ + */ notebook_signals[PAGE_ADDED] = g_signal_new (I_("page-added"), G_TYPE_FROM_CLASS (gobject_class), @@ -1058,19 +1039,19 @@ gtk_notebook_class_init (GtkNotebookClass *class) * @y: the Y coordinate where the drop happens * * The ::create-window signal is emitted when a detachable - * tab is dropped on the root window. + * tab is dropped on the root window. * - * A handler for this signal can create a window containing - * a notebook where the tab will be attached. It is also - * responsible for moving/resizing the window and adding the - * necessary properties to the notebook (e.g. the + * A handler for this signal can create a window containing + * a notebook where the tab will be attached. It is also + * responsible for moving/resizing the window and adding the + * necessary properties to the notebook (e.g. the * #GtkNotebook:group ). * * Returns: a #GtkNotebook that @page should be added to, or %NULL. * * Since: 2.12 */ - notebook_signals[CREATE_WINDOW] = + notebook_signals[CREATE_WINDOW] = g_signal_new (I_("create-window"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, @@ -1079,32 +1060,32 @@ gtk_notebook_class_init (GtkNotebookClass *class) _gtk_marshal_OBJECT__OBJECT_INT_INT, GTK_TYPE_NOTEBOOK, 3, GTK_TYPE_WIDGET, G_TYPE_INT, G_TYPE_INT); - + binding_set = gtk_binding_set_by_class (class); gtk_binding_entry_add_signal (binding_set, GDK_KEY_space, 0, - "select-page", 1, + "select-page", 1, G_TYPE_BOOLEAN, FALSE); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Space, 0, - "select-page", 1, + "select-page", 1, G_TYPE_BOOLEAN, FALSE); - + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Home, 0, - "focus-tab", 1, + "focus-tab", 1, GTK_TYPE_NOTEBOOK_TAB, GTK_NOTEBOOK_TAB_FIRST); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Home, 0, - "focus-tab", 1, + "focus-tab", 1, GTK_TYPE_NOTEBOOK_TAB, GTK_NOTEBOOK_TAB_FIRST); gtk_binding_entry_add_signal (binding_set, GDK_KEY_End, 0, - "focus-tab", 1, + "focus-tab", 1, GTK_TYPE_NOTEBOOK_TAB, GTK_NOTEBOOK_TAB_LAST); gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_End, 0, - "focus-tab", 1, + "focus-tab", 1, GTK_TYPE_NOTEBOOK_TAB, GTK_NOTEBOOK_TAB_LAST); gtk_binding_entry_add_signal (binding_set, @@ -1149,6 +1130,7 @@ static void gtk_notebook_init (GtkNotebook *notebook) { GtkNotebookPrivate *priv; + GtkStyleContext *context; gtk_widget_set_can_focus (GTK_WIDGET (notebook), TRUE); gtk_widget_set_has_window (GTK_WIDGET (notebook), FALSE); @@ -1190,20 +1172,20 @@ gtk_notebook_init (GtkNotebook *notebook) priv->dnd_timer = 0; priv->switch_tab_timer = 0; priv->source_targets = gtk_target_list_new (notebook_targets, - G_N_ELEMENTS (notebook_targets)); + G_N_ELEMENTS (notebook_targets)); priv->operation = DRAG_OPERATION_NONE; priv->detached_tab = NULL; priv->during_detach = FALSE; priv->has_scrolled = FALSE; gtk_drag_dest_set (GTK_WIDGET (notebook), 0, - notebook_targets, G_N_ELEMENTS (notebook_targets), + notebook_targets, G_N_ELEMENTS (notebook_targets), GDK_ACTION_MOVE); - g_signal_connect (G_OBJECT (notebook), "drag-failed", - G_CALLBACK (gtk_notebook_drag_failed), NULL); - gtk_drag_dest_set_track_motion (GTK_WIDGET (notebook), TRUE); + + context = gtk_widget_get_style_context (GTK_WIDGET (notebook)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_NOTEBOOK); } static void @@ -1214,9 +1196,9 @@ gtk_notebook_buildable_init (GtkBuildableIface *iface) static void gtk_notebook_buildable_add_child (GtkBuildable *buildable, - GtkBuilder *builder, - GObject *child, - const gchar *type) + GtkBuilder *builder, + GObject *child, + const gchar *type) { GtkNotebook *notebook = GTK_NOTEBOOK (buildable); @@ -1269,18 +1251,18 @@ gtk_notebook_focus_tab (GtkNotebook *notebook, if (gtk_widget_is_focus (GTK_WIDGET (notebook)) && priv->show_tabs) { switch (type) - { - case GTK_NOTEBOOK_TAB_FIRST: - list = gtk_notebook_search_page (notebook, NULL, STEP_NEXT, TRUE); - if (list) - gtk_notebook_switch_focus_tab (notebook, list); - break; - case GTK_NOTEBOOK_TAB_LAST: - list = gtk_notebook_search_page (notebook, NULL, STEP_PREV, TRUE); - if (list) - gtk_notebook_switch_focus_tab (notebook, list); - break; - } + { + case GTK_NOTEBOOK_TAB_FIRST: + list = gtk_notebook_search_page (notebook, NULL, STEP_NEXT, TRUE); + if (list) + gtk_notebook_switch_focus_tab (notebook, list); + break; + case GTK_NOTEBOOK_TAB_LAST: + list = gtk_notebook_search_page (notebook, NULL, STEP_PREV, TRUE); + if (list) + gtk_notebook_switch_focus_tab (notebook, list); + break; + } return TRUE; } @@ -1290,7 +1272,7 @@ gtk_notebook_focus_tab (GtkNotebook *notebook, static gboolean gtk_notebook_change_current_page (GtkNotebook *notebook, - gint offset) + gint offset) { GtkNotebookPrivate *priv = notebook->priv; GList *current = NULL; @@ -1336,7 +1318,7 @@ gtk_notebook_change_current_page (GtkNotebook *notebook, static GtkDirectionType get_effective_direction (GtkNotebook *notebook, - GtkDirectionType direction) + GtkDirectionType direction) { GtkNotebookPrivate *priv = notebook->priv; @@ -1372,13 +1354,13 @@ get_effective_tab_pos (GtkNotebook *notebook) if (gtk_widget_get_direction (GTK_WIDGET (notebook)) == GTK_TEXT_DIR_RTL) { switch (priv->tab_pos) - { - case GTK_POS_LEFT: - return GTK_POS_RIGHT; - case GTK_POS_RIGHT: - return GTK_POS_LEFT; - default: ; - } + { + case GTK_POS_LEFT: + return GTK_POS_RIGHT; + case GTK_POS_RIGHT: + return GTK_POS_LEFT; + default: ; + } } return priv->tab_pos; @@ -1389,7 +1371,7 @@ get_tab_gap_pos (GtkNotebook *notebook) { gint tab_pos = get_effective_tab_pos (notebook); gint gap_side = GTK_POS_BOTTOM; - + switch (tab_pos) { case GTK_POS_TOP: @@ -1411,12 +1393,12 @@ get_tab_gap_pos (GtkNotebook *notebook) static void gtk_notebook_move_focus_out (GtkNotebook *notebook, - GtkDirectionType direction_type) + GtkDirectionType direction_type) { GtkNotebookPrivate *priv = notebook->priv; GtkDirectionType effective_direction = get_effective_direction (notebook, direction_type); GtkWidget *toplevel; - + if (gtk_container_get_focus_child (GTK_CONTAINER (notebook)) && effective_direction == GTK_DIR_UP) if (focus_tabs_in (notebook)) return; @@ -1453,16 +1435,13 @@ reorder_tab (GtkNotebook *notebook, GList *position, GList *tab) * same relative position, taking packing into account */ elem = (position) ? position->prev : g_list_last (priv->children); - while (elem && elem != tab && GTK_NOTEBOOK_PAGE (elem)->pack != GTK_NOTEBOOK_PAGE (tab)->pack) - elem = elem->prev; - if (elem == tab) return g_list_position (priv->children, tab); /* now actually reorder the tab */ if (priv->first_tab == tab) priv->first_tab = gtk_notebook_search_page (notebook, priv->first_tab, - STEP_NEXT, TRUE); + STEP_NEXT, TRUE); priv->children = g_list_remove_link (priv->children, tab); @@ -1487,8 +1466,8 @@ reorder_tab (GtkNotebook *notebook, GList *position, GList *tab) static gboolean gtk_notebook_reorder_tab (GtkNotebook *notebook, - GtkDirectionType direction_type, - gboolean move_to_last) + GtkDirectionType direction_type, + gboolean move_to_last) { GtkNotebookPrivate *priv = notebook->priv; GtkDirectionType effective_direction = get_effective_direction (notebook, direction_type); @@ -1512,54 +1491,49 @@ gtk_notebook_reorder_tab (GtkNotebook *notebook, child = priv->focus_tab; do - { - last = child; - child = gtk_notebook_search_page (notebook, last, - (effective_direction == GTK_DIR_RIGHT) ? STEP_NEXT : STEP_PREV, - TRUE); - } - while (child && GTK_NOTEBOOK_PAGE (last)->pack == GTK_NOTEBOOK_PAGE (child)->pack); + { + last = child; + child = gtk_notebook_search_page (notebook, last, + (effective_direction == GTK_DIR_RIGHT) ? STEP_NEXT : STEP_PREV, + TRUE); + } + while (child); child = last; } else child = gtk_notebook_search_page (notebook, priv->focus_tab, - (effective_direction == GTK_DIR_RIGHT) ? STEP_NEXT : STEP_PREV, - TRUE); + (effective_direction == GTK_DIR_RIGHT) ? STEP_NEXT : STEP_PREV, + TRUE); if (!child || child->data == priv->cur_page) return FALSE; page = child->data; - if (page->pack == priv->cur_page->pack) - { - if (effective_direction == GTK_DIR_RIGHT) - page_num = reorder_tab (notebook, (page->pack == GTK_PACK_START) ? child->next : child, priv->focus_tab); - else - page_num = reorder_tab (notebook, (page->pack == GTK_PACK_START) ? child : child->next, priv->focus_tab); + if (effective_direction == GTK_DIR_RIGHT) + page_num = reorder_tab (notebook, child->next, priv->focus_tab); + else + page_num = reorder_tab (notebook, child, priv->focus_tab); - gtk_notebook_pages_allocate (notebook); + gtk_notebook_pages_allocate (notebook); - g_signal_emit (notebook, - notebook_signals[PAGE_REORDERED], - 0, - ((GtkNotebookPage *) priv->focus_tab->data)->child, - page_num); + g_signal_emit (notebook, + notebook_signals[PAGE_REORDERED], + 0, + ((GtkNotebookPage *) priv->focus_tab->data)->child, + page_num); - return TRUE; - } - - return FALSE; + return TRUE; } /** * gtk_notebook_new: - * + * * Creates a new #GtkNotebook widget with no pages. * Return value: the newly created #GtkNotebook - **/ + */ GtkWidget* gtk_notebook_new (void) { @@ -1573,9 +1547,9 @@ gtk_notebook_new (void) */ static void gtk_notebook_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkNotebook *notebook; @@ -1594,9 +1568,9 @@ gtk_notebook_set_property (GObject *object, break; case PROP_ENABLE_POPUP: if (g_value_get_boolean (value)) - gtk_notebook_popup_enable (notebook); + gtk_notebook_popup_enable (notebook); else - gtk_notebook_popup_disable (notebook); + gtk_notebook_popup_disable (notebook); break; case PROP_PAGE: gtk_notebook_set_current_page (notebook, g_value_get_int (value)); @@ -1615,9 +1589,9 @@ gtk_notebook_set_property (GObject *object, static void gtk_notebook_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkNotebook *notebook = GTK_NOTEBOOK (object); GtkNotebookPrivate *priv = notebook->priv; @@ -1668,7 +1642,7 @@ gtk_notebook_get_property (GObject *object, * gtk_notebook_motion_notify * gtk_notebook_focus_in * gtk_notebook_focus_out - * gtk_notebook_style_set + * gtk_notebook_style_updated * gtk_notebook_drag_begin * gtk_notebook_drag_end * gtk_notebook_drag_failed @@ -1703,7 +1677,7 @@ gtk_notebook_destroy (GtkWidget *widget) static gboolean gtk_notebook_get_event_window_position (GtkNotebook *notebook, - GdkRectangle *rectangle) + GdkRectangle *rectangle) { GtkNotebookPrivate *priv = notebook->priv; GtkAllocation allocation, action_allocation; @@ -1719,30 +1693,30 @@ gtk_notebook_get_event_window_position (GtkNotebook *notebook, { GtkNotebookPage *page = tmp_list->data; if (gtk_widget_get_visible (page->child)) - { - visible_page = page; - break; - } + { + visible_page = page; + break; + } } if (priv->show_tabs && visible_page) { if (rectangle) - { + { gtk_widget_get_allocation (widget, &allocation); - is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - rectangle->x = allocation.x + border_width; - rectangle->y = allocation.y + border_width; + is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; + rectangle->x = allocation.x + border_width; + rectangle->y = allocation.y + border_width; - switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - rectangle->width = allocation.width - 2 * border_width; - rectangle->height = visible_page->requisition.height; - if (tab_pos == GTK_POS_BOTTOM) - rectangle->y += allocation.height - 2 * border_width - rectangle->height; + switch (tab_pos) + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + rectangle->width = allocation.width - 2 * border_width; + rectangle->height = visible_page->requisition.height; + if (tab_pos == GTK_POS_BOTTOM) + rectangle->y += allocation.height - 2 * border_width - rectangle->height; for (i = 0; i < N_ACTION_WIDGETS; i++) { @@ -1757,13 +1731,13 @@ gtk_notebook_get_event_window_position (GtkNotebook *notebook, rectangle->x += action_allocation.width; } } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - rectangle->width = visible_page->requisition.width; - rectangle->height = allocation.height - 2 * border_width; - if (tab_pos == GTK_POS_RIGHT) - rectangle->x += allocation.width - 2 * border_width - rectangle->width; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + rectangle->width = visible_page->requisition.width; + rectangle->height = allocation.height - 2 * border_width; + if (tab_pos == GTK_POS_RIGHT) + rectangle->x += allocation.width - 2 * border_width - rectangle->width; for (i = 0; i < N_ACTION_WIDGETS; i++) { @@ -1779,18 +1753,18 @@ gtk_notebook_get_event_window_position (GtkNotebook *notebook, } } break; - } - } + } + } return TRUE; } else { if (rectangle) - { - rectangle->x = rectangle->y = 0; - rectangle->width = rectangle->height = 10; - } + { + rectangle->x = rectangle->y = 0; + rectangle->width = rectangle->height = 10; + } } return FALSE; @@ -1828,15 +1802,15 @@ gtk_notebook_map (GtkWidget *widget) children = priv->children; while (children) - { - page = children->data; - children = children->next; + { + page = children->data; + children = children->next; - if (page->tab_label && - gtk_widget_get_visible (page->tab_label) && - !gtk_widget_get_mapped (page->tab_label)) - gtk_widget_map (page->tab_label); - } + if (page->tab_label && + gtk_widget_get_visible (page->tab_label) && + !gtk_widget_get_mapped (page->tab_label)) + gtk_widget_map (page->tab_label); + } } if (gtk_notebook_get_event_window_position (notebook, NULL)) @@ -1884,15 +1858,13 @@ gtk_notebook_realize (GtkWidget *widget) attributes.wclass = GDK_INPUT_ONLY; attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | - GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); + GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | + GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); attributes_mask = GDK_WA_X | GDK_WA_Y; priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), - &attributes, attributes_mask); + &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, notebook); - - gtk_widget_style_attach (widget); } static void @@ -1915,9 +1887,54 @@ gtk_notebook_unrealize (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_notebook_parent_class)->unrealize (widget); } +static GtkRegionFlags +_gtk_notebook_get_tab_flags (GtkNotebook *notebook, + GtkNotebookPage *page) +{ + GtkNotebookPrivate *priv = notebook->priv; + gint i = 0, page_num = -1; + GtkRegionFlags flags = 0; + gboolean is_last = FALSE; + GList *pages; + + for (pages = priv->children; pages; pages = pages->next) + { + GtkNotebookPage *p = pages->data; + + if (!p->tab_label || !gtk_widget_get_visible (p->tab_label)) + continue; + + i++; + + /* No need to keep counting tabs after it */ + if (page == p) + { + page_num = i; + is_last = pages->next == NULL; + break; + } + } + + if (page_num < 0) + return 0; + + if ((page_num) % 2 == 0) + flags |= GTK_REGION_EVEN; + else + flags |= GTK_REGION_ODD; + + if (page_num == 1) + flags |= GTK_REGION_FIRST; + + if (is_last) + flags |= GTK_REGION_LAST; + + return flags; +} + static void gtk_notebook_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -1937,12 +1954,12 @@ gtk_notebook_size_request (GtkWidget *widget, gtk_widget_style_get (widget, "focus-line-width", &focus_width, - "tab-overlap", &tab_overlap, - "tab-curvature", &tab_curvature, + "tab-overlap", &tab_overlap, + "tab-curvature", &tab_curvature, "arrow-spacing", &arrow_spacing, "scroll-arrow-hlength", &scroll_arrow_hlength, "scroll-arrow-vlength", &scroll_arrow_vlength, - NULL); + NULL); requisition->width = 0; requisition->height = 0; @@ -1954,149 +1971,163 @@ gtk_notebook_size_request (GtkWidget *widget, page = children->data; if (gtk_widget_get_visible (page->child)) - { - vis_pages++; + { + vis_pages++; gtk_widget_get_preferred_size (page->child, &child_requisition, NULL); - requisition->width = MAX (requisition->width, - child_requisition.width); - requisition->height = MAX (requisition->height, - child_requisition.height); + requisition->width = MAX (requisition->width, + child_requisition.width); + requisition->height = MAX (requisition->height, + child_requisition.height); - if (priv->menu && page->menu_label) + if (priv->menu && page->menu_label) { parent = gtk_widget_get_parent (page->menu_label); if (parent && !gtk_widget_get_visible (parent)) gtk_widget_show (parent); } - } + } else - { - if (page == priv->cur_page) - switch_page = TRUE; + { + if (page == priv->cur_page) + switch_page = TRUE; - if (priv->menu && page->menu_label) + if (priv->menu && page->menu_label) { parent = gtk_widget_get_parent (page->menu_label); if (parent && gtk_widget_get_visible (parent)) gtk_widget_hide (parent); } - } + } } if (priv->show_border || priv->show_tabs) { - GtkStyle *style; + GtkStyleContext *context; + GtkBorder notebook_padding; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, 0, ¬ebook_padding); - requisition->width += style->xthickness * 2; - requisition->height += style->ythickness * 2; + requisition->width += notebook_padding.left + notebook_padding.right; + requisition->height += notebook_padding.top + notebook_padding.bottom; if (priv->show_tabs) - { - gint tab_width = 0; - gint tab_height = 0; - gint tab_max = 0; - gint padding; + { + gint tab_width = 0; + gint tab_height = 0; + gint tab_max = 0; + gint padding; gint i; gint action_width = 0; gint action_height = 0; - - for (children = priv->children; children; - children = children->next) - { - page = children->data; - - if (gtk_widget_get_visible (page->child)) - { - if (!gtk_widget_get_visible (page->tab_label)) - gtk_widget_show (page->tab_label); + + for (children = priv->children; children; + children = children->next) + { + page = children->data; + + if (gtk_widget_get_visible (page->child)) + { + GtkBorder tab_padding; + + if (!gtk_widget_get_visible (page->tab_label)) + gtk_widget_show (page->tab_label); gtk_widget_get_preferred_size (page->tab_label, &child_requisition, NULL); - page->requisition.width = child_requisition.width + 2 * style->xthickness; - page->requisition.height = child_requisition.height + 2 * style->ythickness; + /* Get border/padding for tab */ + gtk_style_context_save (context); + gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, + _gtk_notebook_get_tab_flags (notebook, page)); + gtk_style_context_get_padding (context, 0, &tab_padding); + gtk_style_context_restore (context); - switch (priv->tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - page->requisition.height += 2 * (priv->tab_vborder + - focus_width); - tab_height = MAX (tab_height, page->requisition.height); - tab_max = MAX (tab_max, page->requisition.width); - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - page->requisition.width += 2 * (priv->tab_hborder + - focus_width); - tab_width = MAX (tab_width, page->requisition.width); - tab_max = MAX (tab_max, page->requisition.height); - break; - } - } - else if (gtk_widget_get_visible (page->tab_label)) - gtk_widget_hide (page->tab_label); - } + page->requisition.width = child_requisition.width + + tab_padding.left + tab_padding.right; - children = priv->children; + page->requisition.height = child_requisition.height + + tab_padding.top + tab_padding.bottom; - if (vis_pages) - { + switch (priv->tab_pos) + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + page->requisition.height += 2 * (priv->tab_vborder + + focus_width); + tab_height = MAX (tab_height, page->requisition.height); + tab_max = MAX (tab_max, page->requisition.width); + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + page->requisition.width += 2 * (priv->tab_hborder + + focus_width); + tab_width = MAX (tab_width, page->requisition.width); + tab_max = MAX (tab_max, page->requisition.height); + break; + } + } + else if (gtk_widget_get_visible (page->tab_label)) + gtk_widget_hide (page->tab_label); + } + + children = priv->children; + + if (vis_pages) + { for (i = 0; i < N_ACTION_WIDGETS; i++) { if (priv->action_widget[i]) { gtk_widget_get_preferred_size (priv->action_widget[i], &action_widget_requisition[i], NULL); - action_widget_requisition[i].width += style->xthickness; - action_widget_requisition[i].height += style->ythickness; + action_widget_requisition[i].width += notebook_padding.left; + action_widget_requisition[i].height += notebook_padding.top; } } - switch (priv->tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (tab_height == 0) - break; + switch (priv->tab_pos) + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (tab_height == 0) + break; - if (priv->scrollable && vis_pages > 1 && - requisition->width < tab_width) - tab_height = MAX (tab_height, scroll_arrow_hlength); + if (priv->scrollable && vis_pages > 1 && + requisition->width < tab_width) + tab_height = MAX (tab_height, scroll_arrow_hlength); tab_height = MAX (tab_height, action_widget_requisition[ACTION_WIDGET_START].height); tab_height = MAX (tab_height, action_widget_requisition[ACTION_WIDGET_END].height); - padding = 2 * (tab_curvature + focus_width + - priv->tab_hborder) - tab_overlap; - tab_max += padding; - while (children) - { - page = children->data; - children = children->next; - - if (!gtk_widget_get_visible (page->child)) - continue; + padding = 2 * (tab_curvature + focus_width + + priv->tab_hborder) - tab_overlap; + tab_max += padding; + while (children) + { + page = children->data; + children = children->next; - if (priv->homogeneous) - page->requisition.width = tab_max; - else - page->requisition.width += padding; + if (!gtk_widget_get_visible (page->child)) + continue; - tab_width += page->requisition.width; - page->requisition.height = tab_height; - } + if (priv->homogeneous) + page->requisition.width = tab_max; + else + page->requisition.width += padding; - if (priv->scrollable && vis_pages > 1 && - requisition->width < tab_width) - tab_width = tab_max + 2 * (scroll_arrow_hlength + arrow_spacing); + tab_width += page->requisition.width; + page->requisition.height = tab_height; + } - action_width += action_widget_requisition[ACTION_WIDGET_START].width; - action_width += action_widget_requisition[ACTION_WIDGET_END].width; + if (priv->scrollable && vis_pages > 1 && + requisition->width < tab_width) + tab_width = tab_max + 2 * (scroll_arrow_hlength + arrow_spacing); + + action_width += action_widget_requisition[ACTION_WIDGET_START].width; + action_width += action_widget_requisition[ACTION_WIDGET_END].width; if (priv->homogeneous && !priv->scrollable) requisition->width = MAX (requisition->width, vis_pages * tab_max + @@ -2105,80 +2136,80 @@ gtk_notebook_size_request (GtkWidget *widget, requisition->width = MAX (requisition->width, tab_width + tab_overlap + action_width); - requisition->height += tab_height; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if (tab_width == 0) - break; + requisition->height += tab_height; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (tab_width == 0) + break; - if (priv->scrollable && vis_pages > 1 && - requisition->height < tab_height) - tab_width = MAX (tab_width, + if (priv->scrollable && vis_pages > 1 && + requisition->height < tab_height) + tab_width = MAX (tab_width, arrow_spacing + 2 * scroll_arrow_vlength); - tab_width = MAX (tab_width, action_widget_requisition[ACTION_WIDGET_START].width); - tab_width = MAX (tab_width, action_widget_requisition[ACTION_WIDGET_END].width); + tab_width = MAX (tab_width, action_widget_requisition[ACTION_WIDGET_START].width); + tab_width = MAX (tab_width, action_widget_requisition[ACTION_WIDGET_END].width); - padding = 2 * (tab_curvature + focus_width + - priv->tab_vborder) - tab_overlap; - tab_max += padding; + padding = 2 * (tab_curvature + focus_width + + priv->tab_vborder) - tab_overlap; + tab_max += padding; - while (children) - { - page = children->data; - children = children->next; + while (children) + { + page = children->data; + children = children->next; - if (!gtk_widget_get_visible (page->child)) - continue; + if (!gtk_widget_get_visible (page->child)) + continue; - page->requisition.width = tab_width; + page->requisition.width = tab_width; - if (priv->homogeneous) - page->requisition.height = tab_max; - else - page->requisition.height += padding; + if (priv->homogeneous) + page->requisition.height = tab_max; + else + page->requisition.height += padding; - tab_height += page->requisition.height; - } + tab_height += page->requisition.height; + } - if (priv->scrollable && vis_pages > 1 && - requisition->height < tab_height) - tab_height = tab_max + (2 * scroll_arrow_vlength + arrow_spacing); - action_height += action_widget_requisition[ACTION_WIDGET_START].height; - action_height += action_widget_requisition[ACTION_WIDGET_END].height; + if (priv->scrollable && vis_pages > 1 && + requisition->height < tab_height) + tab_height = tab_max + (2 * scroll_arrow_vlength + arrow_spacing); + action_height += action_widget_requisition[ACTION_WIDGET_START].height; + action_height += action_widget_requisition[ACTION_WIDGET_END].height; if (priv->homogeneous && !priv->scrollable) requisition->height = - MAX (requisition->height, - vis_pages * tab_max + tab_overlap + action_height); + MAX (requisition->height, + vis_pages * tab_max + tab_overlap + action_height); else requisition->height = - MAX (requisition->height, - tab_height + tab_overlap + action_height); + MAX (requisition->height, + tab_height + tab_overlap + action_height); - if (!priv->homogeneous || priv->scrollable) - vis_pages = 1; - requisition->height = MAX (requisition->height, - vis_pages * tab_max + - tab_overlap); + if (!priv->homogeneous || priv->scrollable) + vis_pages = 1; + requisition->height = MAX (requisition->height, + vis_pages * tab_max + + tab_overlap); - requisition->width += tab_width; - break; - } - } - } + requisition->width += tab_width; + break; + } + } + } else - { - for (children = priv->children; children; - children = children->next) - { - page = children->data; - - if (page->tab_label && gtk_widget_get_visible (page->tab_label)) - gtk_widget_hide (page->tab_label); - } - } + { + for (children = priv->children; children; + children = children->next) + { + page = children->data; + + if (page->tab_label && gtk_widget_get_visible (page->tab_label)) + gtk_widget_hide (page->tab_label); + } + } } border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); @@ -2189,40 +2220,40 @@ gtk_notebook_size_request (GtkWidget *widget, if (switch_page) { if (vis_pages) - { - for (children = priv->children; children; - children = children->next) - { - page = children->data; - if (gtk_widget_get_visible (page->child)) - { - gtk_notebook_switch_page (notebook, page); - break; - } - } - } + { + for (children = priv->children; children; + children = children->next) + { + page = children->data; + if (gtk_widget_get_visible (page->child)) + { + gtk_notebook_switch_page (notebook, page); + break; + } + } + } else if (gtk_widget_get_visible (widget)) - { - requisition->width = border_width * 2; - requisition->height = border_width * 2; - } + { + requisition->width = border_width * 2; + requisition->height = border_width * 2; + } } if (vis_pages && !priv->cur_page) { children = gtk_notebook_search_page (notebook, NULL, STEP_NEXT, TRUE); if (children) - { - priv->first_tab = children; - gtk_notebook_switch_page (notebook, GTK_NOTEBOOK_PAGE (children)); - } + { + priv->first_tab = children; + gtk_notebook_switch_page (notebook, GTK_NOTEBOOK_PAGE (children)); + } } } static void gtk_notebook_get_preferred_width (GtkWidget *widget, - gint *minimum, - gint *natural) + gint *minimum, + gint *natural) { GtkRequisition requisition; @@ -2233,8 +2264,8 @@ gtk_notebook_get_preferred_width (GtkWidget *widget, static void gtk_notebook_get_preferred_height (GtkWidget *widget, - gint *minimum, - gint *natural) + gint *minimum, + gint *natural) { GtkRequisition requisition; @@ -2245,16 +2276,16 @@ gtk_notebook_get_preferred_height (GtkWidget *widget, static void gtk_notebook_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; - GtkStyle *style; + GtkStyleContext *context; gint tab_pos = get_effective_tab_pos (notebook); gboolean is_rtl; gint focus_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL); @@ -2265,15 +2296,15 @@ gtk_notebook_size_allocate (GtkWidget *widget, GdkRectangle position; if (gtk_notebook_get_event_window_position (notebook, &position)) - { - gdk_window_move_resize (priv->event_window, - position.x, position.y, - position.width, position.height); - if (gtk_widget_get_mapped (GTK_WIDGET (notebook))) - gdk_window_show_unraised (priv->event_window); - } + { + gdk_window_move_resize (priv->event_window, + position.x, position.y, + position.width, position.height); + if (gtk_widget_get_mapped (GTK_WIDGET (notebook))) + gdk_window_show_unraised (priv->event_window); + } else - gdk_window_hide (priv->event_window); + gdk_window_hide (priv->event_window); } if (priv->children) @@ -2290,90 +2321,96 @@ gtk_notebook_size_allocate (GtkWidget *widget, child_allocation.height = MAX (1, allocation->height - border_width * 2); if (priv->show_tabs || priv->show_border) - { - child_allocation.x += style->xthickness; - child_allocation.y += style->ythickness; - child_allocation.width = MAX (1, child_allocation.width - style->xthickness * 2); - child_allocation.height = MAX (1, child_allocation.height - style->ythickness * 2); + { + GtkStyleContext *context; + GtkBorder padding; - if (priv->show_tabs && priv->children && priv->cur_page) - { - switch (tab_pos) - { - case GTK_POS_TOP: - child_allocation.y += priv->cur_page->requisition.height; - case GTK_POS_BOTTOM: - child_allocation.height = - MAX (1, child_allocation.height - - priv->cur_page->requisition.height); - break; - case GTK_POS_LEFT: - child_allocation.x += priv->cur_page->requisition.width; - case GTK_POS_RIGHT: - child_allocation.width = - MAX (1, child_allocation.width - - priv->cur_page->requisition.width); - break; - } + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, 0, &padding); + + child_allocation.x += padding.left; + child_allocation.y += padding.top; + child_allocation.width = MAX (1, child_allocation.width - padding.left - padding.right); + child_allocation.height = MAX (1, child_allocation.height - padding.top - padding.bottom); + + if (priv->show_tabs && priv->children && priv->cur_page) + { + switch (tab_pos) + { + case GTK_POS_TOP: + child_allocation.y += priv->cur_page->requisition.height; + case GTK_POS_BOTTOM: + child_allocation.height = + MAX (1, child_allocation.height - + priv->cur_page->requisition.height); + break; + case GTK_POS_LEFT: + child_allocation.x += priv->cur_page->requisition.width; + case GTK_POS_RIGHT: + child_allocation.width = + MAX (1, child_allocation.width - + priv->cur_page->requisition.width); + break; + } for (i = 0; i < N_ACTION_WIDGETS; i++) { GtkAllocation widget_allocation; - GtkRequisition requisition; - + GtkRequisition requisition; + if (!priv->action_widget[i]) continue; - widget_allocation.x = allocation->x + border_width; - widget_allocation.y = allocation->y + border_width; - is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; + widget_allocation.x = allocation->x + border_width; + widget_allocation.y = allocation->y + border_width; + is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; gtk_widget_get_preferred_size (priv->action_widget[i], &requisition, NULL); - switch (tab_pos) - { - case GTK_POS_BOTTOM: - widget_allocation.y += allocation->height - 2 * border_width - priv->cur_page->requisition.height; - /* fall through */ - case GTK_POS_TOP: - widget_allocation.width = requisition.width; - widget_allocation.height = priv->cur_page->requisition.height - style->ythickness; + switch (tab_pos) + { + case GTK_POS_BOTTOM: + widget_allocation.y += allocation->height - 2 * border_width - priv->cur_page->requisition.height; + /* fall through */ + case GTK_POS_TOP: + widget_allocation.width = requisition.width; + widget_allocation.height = priv->cur_page->requisition.height - padding.top; - if ((i == ACTION_WIDGET_START && is_rtl) || + if ((i == ACTION_WIDGET_START && is_rtl) || (i == ACTION_WIDGET_END && !is_rtl)) - widget_allocation.x += allocation->width - 2 * border_width - requisition.width; + widget_allocation.x += allocation->width - 2 * border_width - requisition.width; if (tab_pos == GTK_POS_TOP) /* no fall through */ widget_allocation.y += 2 * focus_width; - break; - case GTK_POS_RIGHT: - widget_allocation.x += allocation->width - 2 * border_width - priv->cur_page->requisition.width; - /* fall through */ - case GTK_POS_LEFT: - widget_allocation.height = requisition.height; - widget_allocation.width = priv->cur_page->requisition.width - style->xthickness; + break; + case GTK_POS_RIGHT: + widget_allocation.x += allocation->width - 2 * border_width - priv->cur_page->requisition.width; + /* fall through */ + case GTK_POS_LEFT: + widget_allocation.height = requisition.height; + widget_allocation.width = priv->cur_page->requisition.width - padding.left; if (i == ACTION_WIDGET_END) widget_allocation.y += allocation->height - 2 * border_width - requisition.height; - if (tab_pos == GTK_POS_LEFT) /* no fall through */ + if (tab_pos == GTK_POS_LEFT) /* no fall through */ widget_allocation.x += 2 * focus_width; - break; - } + break; + } - gtk_widget_size_allocate (priv->action_widget[i], &widget_allocation); - } - } - } + gtk_widget_size_allocate (priv->action_widget[i], &widget_allocation); + } + } + } children = priv->children; while (children) - { - page = children->data; - children = children->next; - - if (gtk_widget_get_visible (page->child)) - gtk_widget_size_allocate (page->child, &child_allocation); - } + { + page = children->data; + children = children->next; + + if (gtk_widget_get_visible (page->child)) + gtk_widget_size_allocate (page->child, &child_allocation); + } gtk_notebook_pages_allocate (notebook); } @@ -2402,22 +2439,22 @@ gtk_notebook_draw (GtkWidget *widget, cairo_restore (cr); if (priv->show_tabs) - { - GtkNotebookPage *page; - GList *pages; + { + GtkNotebookPage *page; + GList *pages; - for (pages = priv->children; pages; pages = pages->next) + for (pages = priv->children; pages; pages = pages->next) { - page = GTK_NOTEBOOK_PAGE (pages); + page = GTK_NOTEBOOK_PAGE (pages); if (gtk_widget_get_parent (page->tab_label) == widget) gtk_container_propagate_draw (GTK_CONTAINER (notebook), page->tab_label, cr); - } - } + } + } if (priv->cur_page && priv->operation != DRAG_OPERATION_REORDER) - gtk_container_propagate_draw (GTK_CONTAINER (notebook), + gtk_container_propagate_draw (GTK_CONTAINER (notebook), priv->cur_page->child, cr); if (priv->show_tabs) @@ -2434,8 +2471,12 @@ gtk_notebook_draw (GtkWidget *widget, if (priv->operation == DRAG_OPERATION_REORDER && gtk_cairo_should_draw_window (cr, priv->drag_window)) { + GtkStyleContext *context; + GdkRGBA bg_color; + cairo_save (cr); gtk_cairo_transform_to_window (cr, widget, priv->drag_window); + context = gtk_widget_get_style_context (widget); /* FIXME: This is a workaround to make tabs reordering work better * with engines with rounded tabs. If the drag window background @@ -2444,19 +2485,20 @@ gtk_notebook_draw (GtkWidget *widget, * Ideally, these corners should be made transparent, Either by using * ARGB visuals or shape windows. */ - gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->bg [GTK_STATE_NORMAL]); + gtk_style_context_get_background_color (context, 0, &bg_color); + gdk_cairo_set_source_rgba (cr, &bg_color); cairo_paint (cr); gtk_notebook_draw_tab (notebook, - priv->cur_page, - cr, 0, FALSE); + priv->cur_page, + cr, 0); cairo_restore (cr); gtk_container_propagate_draw (GTK_CONTAINER (notebook), - priv->cur_page->tab_label, cr); + priv->cur_page->tab_label, cr); } - + return FALSE; } @@ -2476,7 +2518,7 @@ gtk_notebook_show_arrows (GtkNotebook *notebook) GtkNotebookPage *page = children->data; if (page->tab_label && !gtk_widget_get_child_visible (page->tab_label)) - show_arrow = TRUE; + show_arrow = TRUE; children = children->next; } @@ -2486,8 +2528,8 @@ gtk_notebook_show_arrows (GtkNotebook *notebook) static void gtk_notebook_get_arrow_rect (GtkNotebook *notebook, - GdkRectangle *rectangle, - GtkNotebookArrow arrow) + GdkRectangle *rectangle, + GtkNotebookArrow arrow) { GtkNotebookPrivate *priv = notebook->priv; GdkRectangle event_window_pos; @@ -2505,53 +2547,53 @@ gtk_notebook_get_arrow_rect (GtkNotebook *notebook, NULL); switch (priv->tab_pos) - { - case GTK_POS_LEFT: - case GTK_POS_RIGHT: + { + case GTK_POS_LEFT: + case GTK_POS_RIGHT: rectangle->width = scroll_arrow_vlength; rectangle->height = scroll_arrow_vlength; - if ((before && (priv->has_before_previous != priv->has_before_next)) || - (!before && (priv->has_after_previous != priv->has_after_next))) - rectangle->x = event_window_pos.x + (event_window_pos.width - rectangle->width) / 2; - else if (left) - rectangle->x = event_window_pos.x + event_window_pos.width / 2 - rectangle->width; - else - rectangle->x = event_window_pos.x + event_window_pos.width / 2; - rectangle->y = event_window_pos.y; - if (!before) - rectangle->y += event_window_pos.height - rectangle->height; - break; + if ((before && (priv->has_before_previous != priv->has_before_next)) || + (!before && (priv->has_after_previous != priv->has_after_next))) + rectangle->x = event_window_pos.x + (event_window_pos.width - rectangle->width) / 2; + else if (left) + rectangle->x = event_window_pos.x + event_window_pos.width / 2 - rectangle->width; + else + rectangle->x = event_window_pos.x + event_window_pos.width / 2; + rectangle->y = event_window_pos.y; + if (!before) + rectangle->y += event_window_pos.height - rectangle->height; + break; - case GTK_POS_TOP: - case GTK_POS_BOTTOM: + case GTK_POS_TOP: + case GTK_POS_BOTTOM: rectangle->width = scroll_arrow_hlength; rectangle->height = scroll_arrow_hlength; - if (before) - { - if (left || !priv->has_before_previous) - rectangle->x = event_window_pos.x; - else - rectangle->x = event_window_pos.x + rectangle->width; - } - else - { - if (!left || !priv->has_after_next) - rectangle->x = event_window_pos.x + event_window_pos.width - rectangle->width; - else - rectangle->x = event_window_pos.x + event_window_pos.width - 2 * rectangle->width; - } - rectangle->y = event_window_pos.y + (event_window_pos.height - rectangle->height) / 2; - break; - } + if (before) + { + if (left || !priv->has_before_previous) + rectangle->x = event_window_pos.x; + else + rectangle->x = event_window_pos.x + rectangle->width; + } + else + { + if (!left || !priv->has_after_next) + rectangle->x = event_window_pos.x + event_window_pos.width - rectangle->width; + else + rectangle->x = event_window_pos.x + event_window_pos.width - 2 * rectangle->width; + } + rectangle->y = event_window_pos.y + (event_window_pos.height - rectangle->height) / 2; + break; + } } } static GtkNotebookArrow gtk_notebook_get_arrow (GtkNotebook *notebook, - gint x, - gint y) + gint x, + gint y) { GtkNotebookPrivate *priv = notebook->priv; GdkRectangle arrow_rect; @@ -2568,20 +2610,20 @@ gtk_notebook_get_arrow (GtkNotebook *notebook, if (gtk_notebook_show_arrows (notebook)) { gtk_notebook_get_event_window_position (notebook, &event_window_pos); - for (i = 0; i < 4; i++) - { - if (arrow[i] == ARROW_NONE) - continue; - - gtk_notebook_get_arrow_rect (notebook, &arrow_rect, arrow[i]); - - x0 = x - arrow_rect.x; - y0 = y - arrow_rect.y; + for (i = 0; i < 4; i++) + { + if (arrow[i] == ARROW_NONE) + continue; - if (y0 >= 0 && y0 < arrow_rect.height && - x0 >= 0 && x0 < arrow_rect.width) - return arrow[i]; - } + gtk_notebook_get_arrow_rect (notebook, &arrow_rect, arrow[i]); + + x0 = x - arrow_rect.x; + y0 = y - arrow_rect.y; + + if (y0 >= 0 && y0 < arrow_rect.height && + x0 >= 0 && x0 < arrow_rect.width) + return arrow[i]; + } } return ARROW_NONE; @@ -2589,20 +2631,20 @@ gtk_notebook_get_arrow (GtkNotebook *notebook, static void gtk_notebook_do_arrow (GtkNotebook *notebook, - GtkNotebookArrow arrow) + GtkNotebookArrow arrow) { GtkNotebookPrivate *priv = notebook->priv; GtkWidget *widget = GTK_WIDGET (notebook); gboolean is_rtl, left; is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - left = (ARROW_IS_LEFT (arrow) && !is_rtl) || + left = (ARROW_IS_LEFT (arrow) && !is_rtl) || (!ARROW_IS_LEFT (arrow) && is_rtl); if (!priv->focus_tab || gtk_notebook_search_page (notebook, priv->focus_tab, - left ? STEP_PREV : STEP_NEXT, - TRUE)) + left ? STEP_PREV : STEP_NEXT, + TRUE)) { gtk_notebook_change_current_page (notebook, left ? -1 : 1); gtk_widget_grab_focus (widget); @@ -2611,13 +2653,13 @@ gtk_notebook_do_arrow (GtkNotebook *notebook, static gboolean gtk_notebook_arrow_button_press (GtkNotebook *notebook, - GtkNotebookArrow arrow, - gint button) + GtkNotebookArrow arrow, + gint button) { GtkNotebookPrivate *priv = notebook->priv; GtkWidget *widget = GTK_WIDGET (notebook); gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - gboolean left = (ARROW_IS_LEFT (arrow) && !is_rtl) || + gboolean left = (ARROW_IS_LEFT (arrow) && !is_rtl) || (!ARROW_IS_LEFT (arrow) && is_rtl); if (!gtk_widget_has_focus (widget)) @@ -2635,10 +2677,10 @@ gtk_notebook_arrow_button_press (GtkNotebook *notebook, gtk_notebook_page_select (notebook, TRUE); else if (button == 3) gtk_notebook_switch_focus_tab (notebook, - gtk_notebook_search_page (notebook, - NULL, - left ? STEP_NEXT : STEP_PREV, - TRUE)); + gtk_notebook_search_page (notebook, + NULL, + left ? STEP_NEXT : STEP_PREV, + TRUE)); gtk_notebook_redraw_arrows (notebook); return TRUE; @@ -2646,9 +2688,9 @@ gtk_notebook_arrow_button_press (GtkNotebook *notebook, static gboolean get_widget_coordinates (GtkWidget *widget, - GdkEvent *event, - gint *x, - gint *y) + GdkEvent *event, + gint *x, + gint *y) { GdkWindow *window = ((GdkEventAny *)event)->window; gdouble tx, ty; @@ -2689,14 +2731,14 @@ get_tab_at_pos (GtkNotebook *notebook, gint x, gint y) while (children) { page = children->data; - + if (gtk_widget_get_visible (page->child) && - page->tab_label && gtk_widget_get_mapped (page->tab_label) && - (x >= page->allocation.x) && - (y >= page->allocation.y) && - (x <= (page->allocation.x + page->allocation.width)) && - (y <= (page->allocation.y + page->allocation.height))) - return children; + page->tab_label && gtk_widget_get_mapped (page->tab_label) && + (x >= page->allocation.x) && + (y >= page->allocation.y) && + (x <= (page->allocation.x + page->allocation.width)) && + (y <= (page->allocation.y + page->allocation.height))) + return children; children = children->next; } @@ -2706,7 +2748,7 @@ get_tab_at_pos (GtkNotebook *notebook, gint x, gint y) static gboolean gtk_notebook_button_press (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -2729,7 +2771,7 @@ gtk_notebook_button_press (GtkWidget *widget, if (event->button == 3 && priv->menu) { gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, - NULL, NULL, 3, event->time); + NULL, NULL, 3, event->time); return TRUE; } @@ -2750,23 +2792,23 @@ gtk_notebook_button_press (GtkWidget *widget, gtk_widget_grab_focus (widget); if (page_changed && !was_focus) - gtk_widget_child_focus (page->child, GTK_DIR_TAB_FORWARD); + gtk_widget_child_focus (page->child, GTK_DIR_TAB_FORWARD); /* save press to possibly begin a drag */ if (page->reorderable || page->detachable) - { - priv->during_detach = FALSE; - priv->during_reorder = FALSE; - priv->pressed_button = event->button; + { + priv->during_detach = FALSE; + priv->during_reorder = FALSE; + priv->pressed_button = event->button; - priv->mouse_x = x; - priv->mouse_y = y; + priv->mouse_x = x; + priv->mouse_y = y; - priv->drag_begin_x = priv->mouse_x; - priv->drag_begin_y = priv->mouse_y; - priv->drag_offset_x = priv->drag_begin_x - page->allocation.x; - priv->drag_offset_y = priv->drag_begin_y - page->allocation.y; - } + priv->drag_begin_x = priv->mouse_x; + priv->drag_begin_y = priv->mouse_y; + priv->drag_offset_x = priv->drag_begin_x - page->allocation.x; + priv->drag_offset_y = priv->drag_begin_y - page->allocation.y; + } } return TRUE; @@ -2822,8 +2864,8 @@ gtk_notebook_popup_menu (GtkWidget *widget) if (priv->menu) { gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, - popup_position_func, notebook, - 0, gtk_get_current_event_time ()); + popup_position_func, notebook, + 0, gtk_get_current_event_time ()); gtk_menu_shell_select_first (GTK_MENU_SHELL (priv->menu), FALSE); return TRUE; } @@ -2831,7 +2873,7 @@ gtk_notebook_popup_menu (GtkWidget *widget) return FALSE; } -static void +static void stop_scrolling (GtkNotebook *notebook) { GtkNotebookPrivate *priv = notebook->priv; @@ -2848,8 +2890,7 @@ stop_scrolling (GtkNotebook *notebook) } static GList* -get_drop_position (GtkNotebook *notebook, - guint pack) +get_drop_position (GtkNotebook *notebook) { GtkNotebookPrivate *priv = notebook->priv; GList *children, *last_child; @@ -2869,40 +2910,36 @@ get_drop_position (GtkNotebook *notebook, page = children->data; if ((priv->operation != DRAG_OPERATION_REORDER || page != priv->cur_page) && - gtk_widget_get_visible (page->child) && - page->tab_label && - gtk_widget_get_mapped (page->tab_label) && - page->pack == pack) - { - switch (priv->tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (!is_rtl) - { - if ((page->pack == GTK_PACK_START && PAGE_MIDDLE_X (page) > x) || - (page->pack == GTK_PACK_END && PAGE_MIDDLE_X (page) < x)) - return children; - } - else - { - if ((page->pack == GTK_PACK_START && PAGE_MIDDLE_X (page) < x) || - (page->pack == GTK_PACK_END && PAGE_MIDDLE_X (page) > x)) - return children; - } + gtk_widget_get_visible (page->child) && + page->tab_label && + gtk_widget_get_mapped (page->tab_label)) + { + switch (priv->tab_pos) + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (!is_rtl) + { + if (PAGE_MIDDLE_X (page) > x) + return children; + } + else + { + if (PAGE_MIDDLE_X (page) < x) + return children; + } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if ((page->pack == GTK_PACK_START && PAGE_MIDDLE_Y (page) > y) || - (page->pack == GTK_PACK_END && PAGE_MIDDLE_Y (page) < y)) - return children; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (PAGE_MIDDLE_Y (page) > y) + return children; - break; - } + break; + } - last_child = children->next; - } + last_child = children->next; + } children = children->next; } @@ -2912,8 +2949,8 @@ get_drop_position (GtkNotebook *notebook, static void show_drag_window (GtkNotebook *notebook, - GtkNotebookPrivate *priv, - GtkNotebookPage *page, + GtkNotebookPrivate *priv, + GtkNotebookPage *page, GdkDevice *device) { GtkWidget *widget = GTK_WIDGET (notebook); @@ -2934,8 +2971,8 @@ show_drag_window (GtkNotebook *notebook, attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; priv->drag_window = gdk_window_new (gtk_widget_get_parent_window (widget), - &attributes, - attributes_mask); + &attributes, + attributes_mask); gdk_window_set_user_data (priv->drag_window, widget); } @@ -2959,8 +2996,8 @@ show_drag_window (GtkNotebook *notebook, */ static void hide_drag_window (GtkNotebook *notebook, - GtkNotebookPrivate *priv, - GtkNotebookPage *page) + GtkNotebookPrivate *priv, + GtkNotebookPage *page) { GtkWidget *widget = GTK_WIDGET (notebook); GtkWidget *parent = gtk_widget_get_parent (page->tab_label); @@ -2971,12 +3008,12 @@ hide_drag_window (GtkNotebook *notebook, g_object_ref (page->tab_label); if (GTK_IS_WINDOW (parent)) - { - /* parent widget is the drag window */ - gtk_container_remove (GTK_CONTAINER (parent), page->tab_label); - } + { + /* parent widget is the drag window */ + gtk_container_remove (GTK_CONTAINER (parent), page->tab_label); + } else - gtk_widget_unparent (page->tab_label); + gtk_widget_unparent (page->tab_label); gtk_widget_set_parent (page->tab_label, widget); g_object_unref (page->tab_label); @@ -3006,23 +3043,23 @@ gtk_notebook_stop_reorder (GtkNotebook *notebook) if (page->reorderable || page->detachable) { if (priv->during_reorder) - { - gint old_page_num, page_num; - GList *element; + { + gint old_page_num, page_num; + GList *element; - element = get_drop_position (notebook, page->pack); - old_page_num = g_list_position (priv->children, priv->focus_tab); - page_num = reorder_tab (notebook, element, priv->focus_tab); + element = get_drop_position (notebook); + old_page_num = g_list_position (priv->children, priv->focus_tab); + page_num = reorder_tab (notebook, element, priv->focus_tab); gtk_notebook_child_reordered (notebook, page); - - if (priv->has_scrolled || old_page_num != page_num) - g_signal_emit (notebook, - notebook_signals[PAGE_REORDERED], 0, - page->child, page_num); - priv->has_scrolled = FALSE; - priv->during_reorder = FALSE; - } + if (priv->has_scrolled || old_page_num != page_num) + g_signal_emit (notebook, + notebook_signals[PAGE_REORDERED], 0, + page->child, page_num); + + priv->has_scrolled = FALSE; + priv->during_reorder = FALSE; + } hide_drag_window (notebook, priv, page); @@ -3030,16 +3067,16 @@ gtk_notebook_stop_reorder (GtkNotebook *notebook) gtk_notebook_pages_allocate (notebook); if (priv->dnd_timer) - { - g_source_remove (priv->dnd_timer); - priv->dnd_timer = 0; - } + { + g_source_remove (priv->dnd_timer); + priv->dnd_timer = 0; + } } } static gint gtk_notebook_button_release (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkNotebook *notebook; GtkNotebookPrivate *priv; @@ -3069,7 +3106,7 @@ gtk_notebook_button_release (GtkWidget *widget, static gint gtk_notebook_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3111,11 +3148,11 @@ get_pointer_position (GtkNotebook *notebook) x = priv->mouse_x - wx; if (x > width - SCROLL_THRESHOLD) - return (is_rtl) ? POINTER_BEFORE : POINTER_AFTER; + return (is_rtl) ? POINTER_BEFORE : POINTER_AFTER; else if (x < SCROLL_THRESHOLD) - return (is_rtl) ? POINTER_AFTER : POINTER_BEFORE; + return (is_rtl) ? POINTER_AFTER : POINTER_BEFORE; else - return POINTER_BETWEEN; + return POINTER_BETWEEN; } else { @@ -3123,11 +3160,11 @@ get_pointer_position (GtkNotebook *notebook) y = priv->mouse_y - wy; if (y > height - SCROLL_THRESHOLD) - return POINTER_AFTER; + return POINTER_AFTER; else if (y < SCROLL_THRESHOLD) - return POINTER_BEFORE; + return POINTER_BEFORE; else - return POINTER_BETWEEN; + return POINTER_BETWEEN; } } @@ -3141,21 +3178,21 @@ scroll_notebook_timer (gpointer data) pointer_position = get_pointer_position (notebook); - element = get_drop_position (notebook, priv->cur_page->pack); + element = get_drop_position (notebook); reorder_tab (notebook, element, priv->focus_tab); first_tab = gtk_notebook_search_page (notebook, priv->first_tab, - (pointer_position == POINTER_BEFORE) ? STEP_PREV : STEP_NEXT, - TRUE); + (pointer_position == POINTER_BEFORE) ? STEP_PREV : STEP_NEXT, + TRUE); if (first_tab) { priv->first_tab = first_tab; gtk_notebook_pages_allocate (notebook); gdk_window_move_resize (priv->drag_window, - priv->drag_window_x, - priv->drag_window_y, - priv->cur_page->allocation.width, - priv->cur_page->allocation.height); + priv->drag_window_x, + priv->drag_window_y, + priv->cur_page->allocation.width, + priv->cur_page->allocation.height); gdk_window_raise (priv->drag_window); } @@ -3164,15 +3201,15 @@ scroll_notebook_timer (gpointer data) static gboolean check_threshold (GtkNotebook *notebook, - gint current_x, - gint current_y) + gint current_x, + gint current_y) { GtkNotebookPrivate *priv = notebook->priv; GtkWidget *widget; gint dnd_threshold; GdkRectangle rectangle = { 0, }; /* shut up gcc */ GtkSettings *settings; - + widget = GTK_WIDGET (notebook); settings = gtk_widget_get_settings (GTK_WIDGET (notebook)); g_object_get (G_OBJECT (settings), "gtk-dnd-drag-threshold", &dnd_threshold, NULL); @@ -3190,14 +3227,14 @@ check_threshold (GtkNotebook *notebook, rectangle.height += 2 * dnd_threshold; return (current_x < rectangle.x || - current_x > rectangle.x + rectangle.width || - current_y < rectangle.y || - current_y > rectangle.y + rectangle.height); + current_x > rectangle.x + rectangle.width || + current_y < rectangle.y || + current_y > rectangle.y + rectangle.height); } static gint gtk_notebook_motion_notify (GtkWidget *widget, - GdkEventMotion *event) + GdkEventMotion *event) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3250,7 +3287,7 @@ gtk_notebook_motion_notify (GtkWidget *widget, priv->during_detach = TRUE; gtk_drag_begin (widget, priv->source_targets, GDK_ACTION_MOVE, - priv->pressed_button, (GdkEvent*) event); + priv->pressed_button, (GdkEvent*) event); return TRUE; } @@ -3262,47 +3299,47 @@ gtk_notebook_motion_notify (GtkWidget *widget, pointer_position = get_pointer_position (notebook); if (event->window == priv->drag_window && - pointer_position != POINTER_BETWEEN && - gtk_notebook_show_arrows (notebook)) - { - /* scroll tabs */ - if (!priv->dnd_timer) - { - priv->has_scrolled = TRUE; - settings = gtk_widget_get_settings (GTK_WIDGET (notebook)); - g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); + pointer_position != POINTER_BETWEEN && + gtk_notebook_show_arrows (notebook)) + { + /* scroll tabs */ + if (!priv->dnd_timer) + { + priv->has_scrolled = TRUE; + settings = gtk_widget_get_settings (GTK_WIDGET (notebook)); + g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); - priv->dnd_timer = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR, - scroll_notebook_timer, - (gpointer) notebook); - } - } + priv->dnd_timer = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR, + scroll_notebook_timer, + (gpointer) notebook); + } + } else - { - if (priv->dnd_timer) - { - g_source_remove (priv->dnd_timer); - priv->dnd_timer = 0; - } - } + { + if (priv->dnd_timer) + { + g_source_remove (priv->dnd_timer); + priv->dnd_timer = 0; + } + } if (event->window == priv->drag_window || - priv->operation != DRAG_OPERATION_REORDER) - { - /* the drag operation is beginning, create the window */ - if (priv->operation != DRAG_OPERATION_REORDER) - { - priv->operation = DRAG_OPERATION_REORDER; - show_drag_window (notebook, priv, page, event->device); - } + priv->operation != DRAG_OPERATION_REORDER) + { + /* the drag operation is beginning, create the window */ + if (priv->operation != DRAG_OPERATION_REORDER) + { + priv->operation = DRAG_OPERATION_REORDER; + show_drag_window (notebook, priv, page, event->device); + } - gtk_notebook_pages_allocate (notebook); - gdk_window_move_resize (priv->drag_window, - priv->drag_window_x, - priv->drag_window_y, - page->allocation.width, - page->allocation.height); - } + gtk_notebook_pages_allocate (notebook); + gdk_window_move_resize (priv->drag_window, + priv->drag_window_x, + priv->drag_window_y, + page->allocation.width, + page->allocation.height); + } } return TRUE; @@ -3310,7 +3347,7 @@ gtk_notebook_motion_notify (GtkWidget *widget, static void gtk_notebook_grab_notify (GtkWidget *widget, - gboolean was_grabbed) + gboolean was_grabbed) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); @@ -3322,8 +3359,8 @@ gtk_notebook_grab_notify (GtkWidget *widget, } static void -gtk_notebook_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_notebook_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { if (!gtk_widget_is_sensitive (widget)) stop_scrolling (GTK_NOTEBOOK (widget)); @@ -3331,16 +3368,16 @@ gtk_notebook_state_changed (GtkWidget *widget, static gint gtk_notebook_focus_in (GtkWidget *widget, - GdkEventFocus *event) + GdkEventFocus *event) { gtk_notebook_redraw_tabs (GTK_NOTEBOOK (widget)); - + return FALSE; } static gint gtk_notebook_focus_out (GtkWidget *widget, - GdkEventFocus *event) + GdkEventFocus *event) { gtk_notebook_redraw_tabs (GTK_NOTEBOOK (widget)); @@ -3348,8 +3385,7 @@ gtk_notebook_focus_out (GtkWidget *widget, } static void -gtk_notebook_style_set (GtkWidget *widget, - GtkStyle *previous) +gtk_notebook_style_updated (GtkWidget *widget) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3371,41 +3407,45 @@ gtk_notebook_style_set (GtkWidget *widget, priv->has_after_previous = has_after_previous; priv->has_after_next = has_after_next; - GTK_WIDGET_CLASS (gtk_notebook_parent_class)->style_set (widget, previous); + GTK_WIDGET_CLASS (gtk_notebook_parent_class)->style_updated (widget); } static gboolean on_drag_icon_draw (GtkWidget *widget, - cairo_t *cr, - gpointer data) + cairo_t *cr, + gpointer data) { GtkWidget *notebook, *child; GtkRequisition requisition; + GtkStyleContext *context; gint gap_pos; notebook = GTK_WIDGET (data); child = gtk_bin_get_child (GTK_BIN (widget)); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, 0); gtk_widget_get_preferred_size (widget, &requisition, NULL); gap_pos = get_tab_gap_pos (GTK_NOTEBOOK (notebook)); - gtk_paint_extension (gtk_widget_get_style (notebook), - cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "tab", - 0, 0, - requisition.width, requisition.height, - gap_pos); + gtk_render_extension (context, cr, 0, 0, + requisition.width, requisition.height, + gap_pos); + if (child) gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr); + gtk_style_context_restore (context); + return TRUE; } static void gtk_notebook_drag_begin (GtkWidget *widget, - GdkDragContext *context) + GdkDragContext *context) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3431,19 +3471,19 @@ gtk_notebook_drag_begin (GtkWidget *widget, gtk_widget_get_screen (widget)); gtk_container_add (GTK_CONTAINER (priv->dnd_window), tab_label); gtk_widget_set_size_request (priv->dnd_window, - priv->detached_tab->allocation.width, - priv->detached_tab->allocation.height); + priv->detached_tab->allocation.width, + priv->detached_tab->allocation.height); g_object_unref (tab_label); g_signal_connect (G_OBJECT (priv->dnd_window), "draw", - G_CALLBACK (on_drag_icon_draw), notebook); + G_CALLBACK (on_drag_icon_draw), notebook); gtk_drag_set_icon_widget (context, priv->dnd_window, -2, -2); } static void gtk_notebook_drag_end (GtkWidget *widget, - GdkDragContext *context) + GdkDragContext *context) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3471,9 +3511,8 @@ gtk_notebook_create_window (GtkNotebook *notebook, static gboolean gtk_notebook_drag_failed (GtkWidget *widget, - GdkDragContext *context, - GtkDragResult result, - gpointer data) + GdkDragContext *context, + GtkDragResult result) { if (result == GTK_DRAG_RESULT_NO_TARGET) { @@ -3484,13 +3523,14 @@ gtk_notebook_drag_failed (GtkWidget *widget, gint x, y; display = gtk_widget_get_display (widget); - gdk_display_get_pointer (display, NULL, &x, &y, NULL); + gdk_device_get_position (gdk_drag_context_get_device (context), + NULL, &x, &y); g_signal_emit (notebook, notebook_signals[CREATE_WINDOW], 0, priv->detached_tab->child, x, y, &dest_notebook); if (dest_notebook) - do_detach_tab (notebook, dest_notebook, priv->detached_tab->child, 0, 0); + do_detach_tab (notebook, dest_notebook, priv->detached_tab->child, 0, 0); return TRUE; } @@ -3524,10 +3564,10 @@ gtk_notebook_switch_tab_timeout (gpointer data) static gboolean gtk_notebook_drag_motion (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time) + GdkDragContext *context, + gint x, + gint y, + guint time) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3568,18 +3608,18 @@ gtk_notebook_drag_motion (GtkWidget *widget, source_group = source->priv->group; if (group != 0 && group == source_group && - !(widget == source_child || + !(widget == source_child || gtk_widget_is_ancestor (widget, source_child))) - { - gdk_drag_status (context, GDK_ACTION_MOVE, time); - return TRUE; - } + { + gdk_drag_status (context, GDK_ACTION_MOVE, time); + return TRUE; + } else - { - /* it's a tab, but doesn't share - * ID with this notebook */ - gdk_drag_status (context, 0, time); - } + { + /* it's a tab, but doesn't share + * ID with this notebook */ + gdk_drag_status (context, 0, time); + } } x += allocation.x; @@ -3593,22 +3633,22 @@ gtk_notebook_drag_motion (GtkWidget *widget, priv->mouse_y = y; if (!priv->switch_tab_timer) - { + { settings = gtk_widget_get_settings (widget); g_object_get (settings, "gtk-timeout-expand", &timeout, NULL); - priv->switch_tab_timer = gdk_threads_add_timeout (timeout, - gtk_notebook_switch_tab_timeout, - widget); - } + priv->switch_tab_timer = gdk_threads_add_timeout (timeout, + gtk_notebook_switch_tab_timeout, + widget); + } } else { if (priv->switch_tab_timer) - { - g_source_remove (priv->switch_tab_timer); - priv->switch_tab_timer = 0; - } + { + g_source_remove (priv->switch_tab_timer); + priv->switch_tab_timer = 0; + } } return (target == tab_target) ? TRUE : FALSE; @@ -3616,8 +3656,8 @@ gtk_notebook_drag_motion (GtkWidget *widget, static void gtk_notebook_drag_leave (GtkWidget *widget, - GdkDragContext *context, - guint time) + GdkDragContext *context, + guint time) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -3633,10 +3673,10 @@ gtk_notebook_drag_leave (GtkWidget *widget, static gboolean gtk_notebook_drag_drop (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time) + GdkDragContext *context, + gint x, + gint y, + guint time) { GdkAtom target, tab_target; @@ -3654,17 +3694,16 @@ gtk_notebook_drag_drop (GtkWidget *widget, static void do_detach_tab (GtkNotebook *from, - GtkNotebook *to, - GtkWidget *child, - gint x, - gint y) + GtkNotebook *to, + GtkWidget *child, + gint x, + gint y) { GtkNotebookPrivate *to_priv = to->priv; GtkAllocation to_allocation; GtkWidget *tab_label, *menu_label; gboolean tab_expand, tab_fill, reorderable, detachable; GList *element; - guint tab_pack; gint page_num; menu_label = gtk_notebook_get_menu_label (from, child); @@ -3673,20 +3712,19 @@ do_detach_tab (GtkNotebook *from, g_object_ref (menu_label); tab_label = gtk_notebook_get_tab_label (from, child); - + if (tab_label) g_object_ref (tab_label); g_object_ref (child); gtk_container_child_get (GTK_CONTAINER (from), - child, - "tab-expand", &tab_expand, - "tab-fill", &tab_fill, - "tab-pack", &tab_pack, - "reorderable", &reorderable, - "detachable", &detachable, - NULL); + child, + "tab-expand", &tab_expand, + "tab-fill", &tab_fill, + "reorderable", &reorderable, + "detachable", &detachable, + NULL); gtk_container_remove (GTK_CONTAINER (from), child); @@ -3694,17 +3732,16 @@ do_detach_tab (GtkNotebook *from, to_priv->mouse_x = x + to_allocation.x; to_priv->mouse_y = y + to_allocation.y; - element = get_drop_position (to, tab_pack); + element = get_drop_position (to); page_num = g_list_position (to_priv->children, element); gtk_notebook_insert_page_menu (to, child, tab_label, menu_label, page_num); gtk_container_child_set (GTK_CONTAINER (to), child, - "tab-pack", tab_pack, - "tab-expand", tab_expand, - "tab-fill", tab_fill, - "reorderable", reorderable, - "detachable", detachable, - NULL); + "tab-expand", tab_expand, + "tab-fill", tab_fill, + "reorderable", reorderable, + "detachable", detachable, + NULL); if (child) g_object_unref (child); @@ -3719,32 +3756,35 @@ do_detach_tab (GtkNotebook *from, static void gtk_notebook_drag_data_get (GtkWidget *widget, - GdkDragContext *context, - GtkSelectionData *data, - guint info, - guint time) + GdkDragContext *context, + GtkSelectionData *data, + guint info, + guint time) { - if (data->target == gdk_atom_intern_static_string ("GTK_NOTEBOOK_TAB")) + GdkAtom target; + + target = gtk_selection_data_get_target (data); + if (target == gdk_atom_intern_static_string ("GTK_NOTEBOOK_TAB")) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; gtk_selection_data_set (data, - data->target, - 8, - (void*) &priv->detached_tab->child, - sizeof (gpointer)); + target, + 8, + (void*) &priv->detached_tab->child, + sizeof (gpointer)); } } static void gtk_notebook_drag_data_received (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *data, - guint info, - guint time) + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *data, + guint info, + guint time) { GtkNotebook *notebook; GtkWidget *source_widget; @@ -3754,9 +3794,9 @@ gtk_notebook_drag_data_received (GtkWidget *widget, source_widget = gtk_drag_get_source_widget (context); if (source_widget && - data->target == gdk_atom_intern_static_string ("GTK_NOTEBOOK_TAB")) + gtk_selection_data_get_target (data) == gdk_atom_intern_static_string ("GTK_NOTEBOOK_TAB")) { - child = (void*) data->data; + child = (void*) gtk_selection_data_get_data (data); do_detach_tab (GTK_NOTEBOOK (source_widget), notebook, *child, x, y); gtk_drag_finish (context, TRUE, FALSE, time); @@ -3766,7 +3806,7 @@ gtk_notebook_drag_data_received (GtkWidget *widget, } /* Private GtkContainer Methods : - * + * * gtk_notebook_set_child_arg * gtk_notebook_get_child_arg * gtk_notebook_add @@ -3778,14 +3818,13 @@ gtk_notebook_drag_data_received (GtkWidget *widget, */ static void gtk_notebook_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec) + GtkWidget *child, + guint property_id, + const GValue *value, + GParamSpec *pspec) { gboolean expand; gboolean fill; - GtkPackType pack_type; /* not finding child's page is valid for menus or labels */ if (!gtk_notebook_find_child (GTK_NOTEBOOK (container), child, NULL)) @@ -3798,45 +3837,37 @@ gtk_notebook_set_child_property (GtkContainer *container, * we need to set the associated label */ gtk_notebook_set_tab_label_text (GTK_NOTEBOOK (container), child, - g_value_get_string (value)); + g_value_get_string (value)); break; case CHILD_PROP_MENU_LABEL: gtk_notebook_set_menu_label_text (GTK_NOTEBOOK (container), child, - g_value_get_string (value)); + g_value_get_string (value)); break; case CHILD_PROP_POSITION: gtk_notebook_reorder_child (GTK_NOTEBOOK (container), child, - g_value_get_int (value)); + g_value_get_int (value)); break; case CHILD_PROP_TAB_EXPAND: gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - &expand, &fill, &pack_type); + &expand, &fill); gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (container), child, - g_value_get_boolean (value), - fill, pack_type); + g_value_get_boolean (value), + fill); break; case CHILD_PROP_TAB_FILL: gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - &expand, &fill, &pack_type); + &expand, &fill); gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (container), child, - expand, - g_value_get_boolean (value), - pack_type); - break; - case CHILD_PROP_TAB_PACK: - gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - &expand, &fill, &pack_type); - gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (container), child, - expand, fill, - g_value_get_enum (value)); + expand, + g_value_get_boolean (value)); break; case CHILD_PROP_REORDERABLE: gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (container), child, - g_value_get_boolean (value)); + g_value_get_boolean (value)); break; case CHILD_PROP_DETACHABLE: gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (container), child, - g_value_get_boolean (value)); + g_value_get_boolean (value)); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); @@ -3846,10 +3877,10 @@ gtk_notebook_set_child_property (GtkContainer *container, static void gtk_notebook_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec) + GtkWidget *child, + guint property_id, + GValue *value, + GParamSpec *pspec) { GtkNotebook *notebook = GTK_NOTEBOOK (container); GtkNotebookPrivate *priv = notebook->priv; @@ -3857,7 +3888,6 @@ gtk_notebook_get_child_property (GtkContainer *container, GtkWidget *label; gboolean expand; gboolean fill; - GtkPackType pack_type; /* not finding child's page is valid for menus or labels */ list = gtk_notebook_find_child (notebook, child, NULL); @@ -3874,43 +3904,38 @@ gtk_notebook_get_child_property (GtkContainer *container, label = gtk_notebook_get_tab_label (notebook, child); if (GTK_IS_LABEL (label)) - g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label))); + g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label))); else - g_value_set_string (value, NULL); + g_value_set_string (value, NULL); break; case CHILD_PROP_MENU_LABEL: label = gtk_notebook_get_menu_label (notebook, child); if (GTK_IS_LABEL (label)) - g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label))); + g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label))); else - g_value_set_string (value, NULL); + g_value_set_string (value, NULL); break; case CHILD_PROP_POSITION: g_value_set_int (value, g_list_position (priv->children, list)); break; case CHILD_PROP_TAB_EXPAND: - gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - &expand, NULL, NULL); - g_value_set_boolean (value, expand); + gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, + &expand, NULL); + g_value_set_boolean (value, expand); break; case CHILD_PROP_TAB_FILL: - gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - NULL, &fill, NULL); - g_value_set_boolean (value, fill); - break; - case CHILD_PROP_TAB_PACK: - gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, - NULL, NULL, &pack_type); - g_value_set_enum (value, pack_type); + gtk_notebook_query_tab_label_packing (GTK_NOTEBOOK (container), child, + NULL, &fill); + g_value_set_boolean (value, fill); break; case CHILD_PROP_REORDERABLE: g_value_set_boolean (value, - gtk_notebook_get_tab_reorderable (GTK_NOTEBOOK (container), child)); + gtk_notebook_get_tab_reorderable (GTK_NOTEBOOK (container), child)); break; case CHILD_PROP_DETACHABLE: g_value_set_boolean (value, - gtk_notebook_get_tab_detachable (GTK_NOTEBOOK (container), child)); + gtk_notebook_get_tab_detachable (GTK_NOTEBOOK (container), child)); break; default: GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); @@ -3920,15 +3945,15 @@ gtk_notebook_get_child_property (GtkContainer *container, static void gtk_notebook_add (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { - gtk_notebook_insert_page_menu (GTK_NOTEBOOK (container), widget, - NULL, NULL, -1); + gtk_notebook_insert_page_menu (GTK_NOTEBOOK (container), widget, + NULL, NULL, -1); } static void gtk_notebook_remove (GtkContainer *container, - GtkWidget *widget) + GtkWidget *widget) { GtkNotebook *notebook = GTK_NOTEBOOK (container); GtkNotebookPrivate *priv = notebook->priv; @@ -3942,25 +3967,25 @@ gtk_notebook_remove (GtkContainer *container, page = children->data; if (page->child == widget) - break; + break; page_num++; children = children->next; } - + if (children == NULL) return; - + g_object_ref (widget); gtk_notebook_real_remove (notebook, children); g_signal_emit (notebook, - notebook_signals[PAGE_REMOVED], - 0, - widget, - page_num); - + notebook_signals[PAGE_REMOVED], + 0, + widget, + page_num); + g_object_unref (widget); } @@ -3974,8 +3999,8 @@ focus_tabs_in (GtkNotebook *notebook) gtk_widget_grab_focus (GTK_WIDGET (notebook)); gtk_notebook_switch_focus_tab (notebook, - g_list_find (priv->children, - priv->cur_page)); + g_list_find (priv->children, + priv->cur_page)); return TRUE; } @@ -3985,14 +4010,14 @@ focus_tabs_in (GtkNotebook *notebook) static gboolean focus_tabs_move (GtkNotebook *notebook, - GtkDirectionType direction, - gint search_direction) + GtkDirectionType direction, + gint search_direction) { GtkNotebookPrivate *priv = notebook->priv; GList *new_page; new_page = gtk_notebook_search_page (notebook, priv->focus_tab, - search_direction, TRUE); + search_direction, TRUE); if (!new_page) { gboolean wrap_around; @@ -4016,7 +4041,7 @@ focus_tabs_move (GtkNotebook *notebook, static gboolean focus_child_in (GtkNotebook *notebook, - GtkDirectionType direction) + GtkDirectionType direction) { GtkNotebookPrivate *priv = notebook->priv; @@ -4045,7 +4070,7 @@ focus_action_in (GtkNotebook *notebook, */ static gint gtk_notebook_focus (GtkWidget *widget, - GtkDirectionType direction) + GtkDirectionType direction) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -4082,135 +4107,135 @@ gtk_notebook_focus (GtkWidget *widget, effective_direction = get_effective_direction (notebook, direction); - if (old_focus_child) /* Focus on page child or action widget */ + if (old_focus_child) /* Focus on page child or action widget */ { if (gtk_widget_child_focus (old_focus_child, direction)) return TRUE; if (old_focus_child == priv->action_widget[ACTION_WIDGET_START]) - { - switch (effective_direction) - { - case GTK_DIR_DOWN: + { + switch (effective_direction) + { + case GTK_DIR_DOWN: return focus_child_in (notebook, GTK_DIR_TAB_FORWARD); - case GTK_DIR_RIGHT: - return focus_tabs_in (notebook); - case GTK_DIR_LEFT: + case GTK_DIR_RIGHT: + return focus_tabs_in (notebook); + case GTK_DIR_LEFT: + return FALSE; + case GTK_DIR_UP: return FALSE; - case GTK_DIR_UP: - return FALSE; default: switch (direction) { - case GTK_DIR_TAB_FORWARD: + case GTK_DIR_TAB_FORWARD: if ((priv->tab_pos == GTK_POS_RIGHT || priv->tab_pos == GTK_POS_BOTTOM) && focus_child_in (notebook, direction)) return TRUE; - return focus_tabs_in (notebook); + return focus_tabs_in (notebook); case GTK_DIR_TAB_BACKWARD: return FALSE; default: g_assert_not_reached (); } - } - } + } + } else if (old_focus_child == priv->action_widget[ACTION_WIDGET_END]) - { - switch (effective_direction) - { - case GTK_DIR_DOWN: + { + switch (effective_direction) + { + case GTK_DIR_DOWN: return focus_child_in (notebook, GTK_DIR_TAB_FORWARD); - case GTK_DIR_RIGHT: + case GTK_DIR_RIGHT: + return FALSE; + case GTK_DIR_LEFT: + return focus_tabs_in (notebook); + case GTK_DIR_UP: return FALSE; - case GTK_DIR_LEFT: - return focus_tabs_in (notebook); - case GTK_DIR_UP: - return FALSE; default: switch (direction) { - case GTK_DIR_TAB_FORWARD: + case GTK_DIR_TAB_FORWARD: return FALSE; case GTK_DIR_TAB_BACKWARD: if ((priv->tab_pos == GTK_POS_TOP || priv->tab_pos == GTK_POS_LEFT) && focus_child_in (notebook, direction)) return TRUE; - return focus_tabs_in (notebook); + return focus_tabs_in (notebook); default: g_assert_not_reached (); } - } - } + } + } else - { - switch (effective_direction) - { - case GTK_DIR_TAB_BACKWARD: - case GTK_DIR_UP: - /* Focus onto the tabs */ - return focus_tabs_in (notebook); - case GTK_DIR_DOWN: - case GTK_DIR_LEFT: - case GTK_DIR_RIGHT: - return FALSE; - case GTK_DIR_TAB_FORWARD: + { + switch (effective_direction) + { + case GTK_DIR_TAB_BACKWARD: + case GTK_DIR_UP: + /* Focus onto the tabs */ + return focus_tabs_in (notebook); + case GTK_DIR_DOWN: + case GTK_DIR_LEFT: + case GTK_DIR_RIGHT: + return FALSE; + case GTK_DIR_TAB_FORWARD: return focus_action_in (notebook, last_action, direction); - } - } + } + } } - else if (widget_is_focus) /* Focus was on tabs */ + else if (widget_is_focus) /* Focus was on tabs */ { switch (effective_direction) - { + { case GTK_DIR_TAB_BACKWARD: return focus_action_in (notebook, first_action, direction); case GTK_DIR_UP: - return FALSE; + return FALSE; case GTK_DIR_TAB_FORWARD: if (focus_child_in (notebook, GTK_DIR_TAB_FORWARD)) return TRUE; return focus_action_in (notebook, last_action, direction); - case GTK_DIR_DOWN: - /* We use TAB_FORWARD rather than direction so that we focus a more - * predictable widget for the user; users may be using arrow focusing - * in this situation even if they don't usually use arrow focusing. - */ + case GTK_DIR_DOWN: + /* We use TAB_FORWARD rather than direction so that we focus a more + * predictable widget for the user; users may be using arrow focusing + * in this situation even if they don't usually use arrow focusing. + */ return focus_child_in (notebook, GTK_DIR_TAB_FORWARD); - case GTK_DIR_LEFT: - return focus_tabs_move (notebook, direction, STEP_PREV); - case GTK_DIR_RIGHT: - return focus_tabs_move (notebook, direction, STEP_NEXT); - } + case GTK_DIR_LEFT: + return focus_tabs_move (notebook, direction, STEP_PREV); + case GTK_DIR_RIGHT: + return focus_tabs_move (notebook, direction, STEP_NEXT); + } } else /* Focus was not on widget */ { switch (effective_direction) - { - case GTK_DIR_TAB_FORWARD: - case GTK_DIR_DOWN: + { + case GTK_DIR_TAB_FORWARD: + case GTK_DIR_DOWN: if (focus_action_in (notebook, first_action, direction)) return TRUE; - if (focus_tabs_in (notebook)) - return TRUE; + if (focus_tabs_in (notebook)) + return TRUE; if (focus_action_in (notebook, last_action, direction)) return TRUE; - if (focus_child_in (notebook, direction)) - return TRUE; - return FALSE; - case GTK_DIR_TAB_BACKWARD: + if (focus_child_in (notebook, direction)) + return TRUE; + return FALSE; + case GTK_DIR_TAB_BACKWARD: if (focus_action_in (notebook, last_action, direction)) return TRUE; - if (focus_child_in (notebook, direction)) - return TRUE; - if (focus_tabs_in (notebook)) - return TRUE; + if (focus_child_in (notebook, direction)) + return TRUE; + if (focus_tabs_in (notebook)) + return TRUE; if (focus_action_in (notebook, first_action, direction)) return TRUE; - case GTK_DIR_UP: - case GTK_DIR_LEFT: - case GTK_DIR_RIGHT: - return focus_child_in (notebook, direction); - } + case GTK_DIR_UP: + case GTK_DIR_LEFT: + case GTK_DIR_RIGHT: + return focus_child_in (notebook, direction); + } } g_assert_not_reached (); @@ -4219,7 +4244,7 @@ gtk_notebook_focus (GtkWidget *widget, static void gtk_notebook_set_focus_child (GtkContainer *container, - GtkWidget *child) + GtkWidget *child) { GtkNotebook *notebook = GTK_NOTEBOOK (container); GtkNotebookPrivate *priv = notebook->priv; @@ -4236,47 +4261,47 @@ gtk_notebook_set_focus_child (GtkContainer *container, { page_child = gtk_window_get_focus (GTK_WINDOW (toplevel)); while (page_child) - { + { if (gtk_widget_get_parent (page_child) == GTK_WIDGET (container)) - { - GList *list = gtk_notebook_find_child (notebook, page_child, NULL); - if (list != NULL) - { - GtkNotebookPage *page = list->data; - - if (page->last_focus_child) - g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); + { + GList *list = gtk_notebook_find_child (notebook, page_child, NULL); + if (list != NULL) + { + GtkNotebookPage *page = list->data; - page->last_focus_child = gtk_window_get_focus (GTK_WINDOW (toplevel)); - g_object_add_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); - - break; - } - } + if (page->last_focus_child) + g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); + + page->last_focus_child = gtk_window_get_focus (GTK_WINDOW (toplevel)); + g_object_add_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); + + break; + } + } page_child = gtk_widget_get_parent (page_child); - } + } } - + if (child) { g_return_if_fail (GTK_IS_WIDGET (child)); priv->child_has_focus = TRUE; if (!priv->focus_tab) - { - GList *children; - GtkNotebookPage *page; + { + GList *children; + GtkNotebookPage *page; - children = priv->children; - while (children) - { - page = children->data; - if (page->child == child || page->tab_label == child) - gtk_notebook_switch_focus_tab (notebook, children); - children = children->next; - } - } + children = priv->children; + while (children) + { + page = children->data; + if (page->child == child || page->tab_label == child) + gtk_notebook_switch_focus_tab (notebook, children); + children = children->next; + } + } } else priv->child_has_focus = FALSE; @@ -4286,9 +4311,9 @@ gtk_notebook_set_focus_child (GtkContainer *container, static void gtk_notebook_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) { GtkNotebook *notebook = GTK_NOTEBOOK (container); GtkNotebookPrivate *priv = notebook->priv; @@ -4299,16 +4324,16 @@ gtk_notebook_forall (GtkContainer *container, while (children) { GtkNotebookPage *page; - + page = children->data; children = children->next; (* callback) (page->child, callback_data); if (include_internals) - { - if (page->tab_label) - (* callback) (page->tab_label, callback_data); - } + { + if (page->tab_label) + (* callback) (page->tab_label, callback_data); + } } if (include_internals) { @@ -4320,6 +4345,40 @@ gtk_notebook_forall (GtkContainer *container, } } +static GtkWidgetPath * +gtk_notebook_get_path_for_child (GtkContainer *container, + GtkWidget *widget) +{ + GtkNotebookPrivate *priv; + GtkNotebook *notebook; + GtkNotebookPage *page; + GtkWidgetPath *path; + GtkRegionFlags flags; + GList *c; + + path = GTK_CONTAINER_CLASS (gtk_notebook_parent_class)->get_path_for_child (container, widget); + + notebook = GTK_NOTEBOOK (container); + priv = notebook->priv; + + for (c = priv->children; c; c = c->next) + { + page = c->data; + + if (page->tab_label == widget) + break; + } + + /* Widget is not a tab label */ + if (!c) + return path; + + flags = _gtk_notebook_get_tab_flags (notebook, page); + gtk_widget_path_iter_add_region (path, -1, GTK_STYLE_REGION_TAB, flags); + + return path; +} + static GType gtk_notebook_child_type (GtkContainer *container) { @@ -4359,10 +4418,10 @@ page_visible_cb (GtkWidget *page, static gint gtk_notebook_real_insert_page (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - GtkWidget *menu_label, - gint position) + GtkWidget *child, + GtkWidget *tab_label, + GtkWidget *menu_label, + gint position) { GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page; @@ -4383,22 +4442,21 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook, { page->default_tab = TRUE; if (priv->show_tabs) - tab_label = gtk_label_new (NULL); + tab_label = gtk_label_new (NULL); } page->tab_label = tab_label; page->menu_label = menu_label; page->expand = FALSE; page->fill = TRUE; - page->pack = GTK_PACK_START; if (!menu_label) page->default_menu = TRUE; - else + else g_object_ref_sink (page->menu_label); if (priv->menu) gtk_notebook_menu_item_create (notebook, - g_list_find (priv->children, page)); + g_list_find (priv->children, page)); gtk_widget_set_parent (child, GTK_WIDGET (notebook)); if (tab_label) @@ -4416,25 +4474,25 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook, if (tab_label) { if (priv->show_tabs && gtk_widget_get_visible (child)) - gtk_widget_show (tab_label); + gtk_widget_show (tab_label); else - gtk_widget_hide (tab_label); + gtk_widget_hide (tab_label); page->mnemonic_activate_signal = g_signal_connect (tab_label, - "mnemonic-activate", - G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page), - notebook); + "mnemonic-activate", + G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page), + notebook); } page->notify_visible_handler = g_signal_connect (child, "notify::visible", - G_CALLBACK (page_visible_cb), notebook); + G_CALLBACK (page_visible_cb), notebook); g_signal_emit (notebook, - notebook_signals[PAGE_ADDED], - 0, - child, - position); + notebook_signals[PAGE_ADDED], + 0, + child, + position); if (!priv->cur_page) { @@ -4450,7 +4508,6 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook, gtk_widget_child_notify (child, "tab-expand"); gtk_widget_child_notify (child, "tab-fill"); - gtk_widget_child_notify (child, "tab-pack"); gtk_widget_child_notify (child, "tab-label"); gtk_widget_child_notify (child, "menu-label"); gtk_widget_child_notify (child, "position"); @@ -4468,7 +4525,6 @@ gtk_notebook_real_insert_page (GtkNotebook *notebook, * gtk_notebook_timer * gtk_notebook_set_scroll_timer * gtk_notebook_page_compare - * gtk_notebook_real_page_position * gtk_notebook_search_page */ static void @@ -4478,10 +4534,11 @@ gtk_notebook_redraw_tabs (GtkNotebook *notebook) GtkAllocation allocation; GtkWidget *widget; GtkNotebookPage *page; - GtkStyle *style; + GtkStyleContext *context; GdkRectangle redraw_rect; gint border; gint tab_pos = get_effective_tab_pos (notebook); + GtkBorder padding; widget = GTK_WIDGET (notebook); border = gtk_container_get_border_width (GTK_CONTAINER (notebook)); @@ -4494,38 +4551,40 @@ gtk_notebook_redraw_tabs (GtkNotebook *notebook) redraw_rect.x = border; redraw_rect.y = border; - style = gtk_widget_get_style (widget); gtk_widget_get_allocation (widget, &allocation); + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, 0, &padding); + switch (tab_pos) { case GTK_POS_BOTTOM: redraw_rect.y = allocation.height - border - - page->allocation.height - style->ythickness; + page->allocation.height - padding.bottom; if (page != priv->cur_page) - redraw_rect.y -= style->ythickness; + redraw_rect.y -= padding.bottom; /* fall through */ case GTK_POS_TOP: redraw_rect.width = allocation.width - 2 * border; - redraw_rect.height = page->allocation.height + style->ythickness; + redraw_rect.height = page->allocation.height + padding.top; if (page != priv->cur_page) - redraw_rect.height += style->ythickness; + redraw_rect.height += padding.top; break; case GTK_POS_RIGHT: redraw_rect.x = allocation.width - border - - page->allocation.width - style->xthickness; + page->allocation.width - padding.right; if (page != priv->cur_page) - redraw_rect.x -= style->xthickness; + redraw_rect.x -= padding.right; /* fall through */ case GTK_POS_LEFT: - redraw_rect.width = page->allocation.width + style->xthickness; + redraw_rect.width = page->allocation.width + padding.left; redraw_rect.height = allocation.height - 2 * border; if (page != priv->cur_page) - redraw_rect.width += style->xthickness; + redraw_rect.width += padding.left; break; } @@ -4553,15 +4612,15 @@ gtk_notebook_redraw_arrows (GtkNotebook *notebook) arrow[2] = priv->has_after_previous ? ARROW_LEFT_AFTER : ARROW_NONE; arrow[3] = priv->has_after_next ? ARROW_RIGHT_AFTER : ARROW_NONE; - for (i = 0; i < 4; i++) - { - if (arrow[i] == ARROW_NONE) - continue; + for (i = 0; i < 4; i++) + { + if (arrow[i] == ARROW_NONE) + continue; - gtk_notebook_get_arrow_rect (notebook, &rect, arrow[i]); + gtk_notebook_get_arrow_rect (notebook, &rect, arrow[i]); gdk_window_invalidate_rect (gtk_widget_get_window (GTK_WIDGET (notebook)), - &rect, FALSE); - } + &rect, FALSE); + } } } @@ -4576,20 +4635,20 @@ gtk_notebook_timer (GtkNotebook *notebook) gtk_notebook_do_arrow (notebook, priv->click_child); if (priv->need_timer) - { + { GtkSettings *settings; guint timeout; settings = gtk_widget_get_settings (GTK_WIDGET (notebook)); g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); - priv->need_timer = FALSE; - priv->timer = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR, - (GSourceFunc) gtk_notebook_timer, - (gpointer) notebook); - } + priv->need_timer = FALSE; + priv->timer = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR, + (GSourceFunc) gtk_notebook_timer, + (gpointer) notebook); + } else - retval = TRUE; + retval = TRUE; } return retval; @@ -4609,32 +4668,32 @@ gtk_notebook_set_scroll_timer (GtkNotebook *notebook) g_object_get (settings, "gtk-timeout-initial", &timeout, NULL); priv->timer = gdk_threads_add_timeout (timeout, - (GSourceFunc) gtk_notebook_timer, - (gpointer) notebook); + (GSourceFunc) gtk_notebook_timer, + (gpointer) notebook); priv->need_timer = TRUE; } } static gint gtk_notebook_page_compare (gconstpointer a, - gconstpointer b) + gconstpointer b) { return (((GtkNotebookPage *) a)->child != b); } static GList* gtk_notebook_find_child (GtkNotebook *notebook, - GtkWidget *child, - const gchar *function) + GtkWidget *child, + const gchar *function) { GtkNotebookPrivate *priv = notebook->priv; GList *list = g_list_find_custom (priv->children, child, - gtk_notebook_page_compare); + gtk_notebook_page_compare); #ifndef G_DISABLE_CHECKS if (!list && function) g_warning ("%s: unable to find child %p in notebook %p", - function, child, notebook); + function, child, notebook); #endif return list; @@ -4642,13 +4701,13 @@ gtk_notebook_find_child (GtkNotebook *notebook, static void gtk_notebook_remove_tab_label (GtkNotebook *notebook, - GtkNotebookPage *page) + GtkNotebookPage *page) { if (page->tab_label) { if (page->mnemonic_activate_signal) - g_signal_handler_disconnect (page->tab_label, - page->mnemonic_activate_signal); + g_signal_handler_disconnect (page->tab_label, + page->mnemonic_activate_signal); page->mnemonic_activate_signal = 0; gtk_widget_set_state_flags (page->tab_label, 0, TRUE); @@ -4659,7 +4718,7 @@ gtk_notebook_remove_tab_label (GtkNotebook *notebook, static void gtk_notebook_real_remove (GtkNotebook *notebook, - GList *list) + GList *list) { GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page; @@ -4677,10 +4736,10 @@ gtk_notebook_real_remove (GtkNotebook *notebook, priv->children = g_list_remove_link (priv->children, list); if (priv->cur_page == list->data) - { + { priv->cur_page = NULL; if (next_list && !destroying) - gtk_notebook_switch_page (notebook, GTK_NOTEBOOK_PAGE (next_list)); + gtk_notebook_switch_page (notebook, GTK_NOTEBOOK_PAGE (next_list)); } if (priv->detached_tab == list->data) @@ -4692,8 +4751,8 @@ gtk_notebook_real_remove (GtkNotebook *notebook, gtk_notebook_switch_focus_tab (notebook, next_list); page = list->data; - - g_signal_handler_disconnect (page->child, page->notify_visible_handler); + + g_signal_handler_disconnect (page->child, page->notify_visible_handler); if (gtk_widget_get_visible (page->child) && gtk_widget_get_visible (GTK_WIDGET (notebook))) @@ -4730,7 +4789,7 @@ gtk_notebook_real_remove (GtkNotebook *notebook, g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child); page->last_focus_child = NULL; } - + g_slice_free (GtkNotebookPage, page); gtk_notebook_update_labels (notebook); @@ -4757,105 +4816,71 @@ gtk_notebook_update_labels (GtkNotebook *notebook) page = list->data; g_snprintf (string, sizeof(string), _("Page %u"), page_num++); if (priv->show_tabs) - { - if (page->default_tab) - { - if (!page->tab_label) - { - page->tab_label = gtk_label_new (string); - gtk_widget_set_parent (page->tab_label, - GTK_WIDGET (notebook)); - } - else - gtk_label_set_text (GTK_LABEL (page->tab_label), string); - } + { + if (page->default_tab) + { + if (!page->tab_label) + { + page->tab_label = gtk_label_new (string); + gtk_widget_set_parent (page->tab_label, + GTK_WIDGET (notebook)); + } + else + gtk_label_set_text (GTK_LABEL (page->tab_label), string); + } - if (gtk_widget_get_visible (page->child) && - !gtk_widget_get_visible (page->tab_label)) - gtk_widget_show (page->tab_label); - else if (!gtk_widget_get_visible (page->child) && - gtk_widget_get_visible (page->tab_label)) - gtk_widget_hide (page->tab_label); - } + if (gtk_widget_get_visible (page->child) && + !gtk_widget_get_visible (page->tab_label)) + gtk_widget_show (page->tab_label); + else if (!gtk_widget_get_visible (page->child) && + gtk_widget_get_visible (page->tab_label)) + gtk_widget_hide (page->tab_label); + } if (priv->menu && page->default_menu) - { - if (GTK_IS_LABEL (page->tab_label)) - gtk_label_set_text (GTK_LABEL (page->menu_label), + { + if (GTK_IS_LABEL (page->tab_label)) + gtk_label_set_text (GTK_LABEL (page->menu_label), gtk_label_get_label (GTK_LABEL (page->tab_label))); - else - gtk_label_set_text (GTK_LABEL (page->menu_label), string); - } - } -} - -static gint -gtk_notebook_real_page_position (GtkNotebook *notebook, - GList *list) -{ - GtkNotebookPrivate *priv = notebook->priv; - GList *work; - gint count_start; - - for (work = priv->children, count_start = 0; - work && work != list; work = work->next) - if (GTK_NOTEBOOK_PAGE (work)->pack == GTK_PACK_START) - count_start++; - - if (!work) - return -1; - - if (GTK_NOTEBOOK_PAGE (list)->pack == GTK_PACK_START) - return count_start; - - return (count_start + g_list_length (list) - 1); + else + gtk_label_set_text (GTK_LABEL (page->menu_label), string); + } + } } static GList * gtk_notebook_search_page (GtkNotebook *notebook, - GList *list, - gint direction, - gboolean find_visible) + GList *list, + gint direction, + gboolean find_visible) { GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page = NULL; GList *old_list = NULL; - gint flag = 0; - - switch (direction) - { - case STEP_PREV: - flag = GTK_PACK_END; - break; - - case STEP_NEXT: - flag = GTK_PACK_START; - break; - } if (list) page = list->data; - if (!page || page->pack == flag) + if (!page || direction == STEP_NEXT) { if (list) - { - old_list = list; - list = list->next; - } + { + old_list = list; + list = list->next; + } else - list = priv->children; + list = priv->children; while (list) - { - page = list->data; - if (page->pack == flag && - (!find_visible || - (gtk_widget_get_visible (page->child) && - (!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page))))) - return list; - old_list = list; - list = list->next; - } + { + page = list->data; + if (direction == STEP_NEXT && + (!find_visible || + (gtk_widget_get_visible (page->child) && + (!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page))))) + return list; + old_list = list; + list = list->next; + } list = old_list; } else @@ -4866,11 +4891,11 @@ gtk_notebook_search_page (GtkNotebook *notebook, while (list) { page = list->data; - if (page->pack != flag && - (!find_visible || - (gtk_widget_get_visible (page->child) && - (!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page))))) - return list; + if (direction == STEP_PREV && + (!find_visible || + (gtk_widget_get_visible (page->child) && + (!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page))))) + return list; old_list = list; list = list->prev; } @@ -4885,7 +4910,7 @@ gtk_notebook_search_page (GtkNotebook *notebook, */ static void gtk_notebook_paint (GtkWidget *widget, - cairo_t *cr) + cairo_t *cr) { GtkNotebook *notebook; GtkNotebookPrivate *priv; @@ -4897,13 +4922,17 @@ gtk_notebook_paint (GtkWidget *widget, gint x, y; guint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); gint gap_x = 0, gap_width = 0, step = STEP_PREV; - gboolean is_rtl, cur_page_end; - gint tab_pos, i, cur_page_pos; - + gboolean is_rtl; + gint tab_pos; + GtkStyleContext *context; + GtkRegionFlags tab_flags; + notebook = GTK_NOTEBOOK (widget); priv = notebook->priv; is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; tab_pos = get_effective_tab_pos (notebook); + context = gtk_widget_get_style_context (widget); + showarrow = FALSE; if ((!priv->show_tabs && !priv->show_border) || !priv->cur_page || !gtk_widget_get_visible (priv->cur_page->child)) @@ -4918,10 +4947,10 @@ gtk_notebook_paint (GtkWidget *widget, if (priv->show_border && (!priv->show_tabs || !priv->children)) { - gtk_paint_box (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "notebook", - x, y, width, height); + gtk_render_background (context, cr, + x, y, width, height); + gtk_render_frame (context, cr, + x, y, width, height); return; } @@ -4958,90 +4987,129 @@ gtk_notebook_paint (GtkWidget *widget, else { switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (priv->operation == DRAG_OPERATION_REORDER) - gap_x = priv->drag_window_x - allocation.x - border_width; - else - gap_x = priv->cur_page->allocation.x - allocation.x - border_width; + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (priv->operation == DRAG_OPERATION_REORDER) + gap_x = priv->drag_window_x - allocation.x - border_width; + else + gap_x = priv->cur_page->allocation.x - allocation.x - border_width; - gap_width = priv->cur_page->allocation.width; - step = is_rtl ? STEP_PREV : STEP_NEXT; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if (priv->operation == DRAG_OPERATION_REORDER) - gap_x = priv->drag_window_y - border_width - allocation.y; - else - gap_x = priv->cur_page->allocation.y - allocation.y - border_width; + gap_width = priv->cur_page->allocation.width; + step = is_rtl ? STEP_PREV : STEP_NEXT; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (priv->operation == DRAG_OPERATION_REORDER) + gap_x = priv->drag_window_y - border_width - allocation.y; + else + gap_x = priv->cur_page->allocation.y - allocation.y - border_width; - gap_width = priv->cur_page->allocation.height; - step = STEP_PREV; - break; - } + gap_width = priv->cur_page->allocation.height; + step = STEP_PREV; + break; + } } - gtk_paint_box_gap (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_OUT, - widget, "notebook", - x, y, width, height, - tab_pos, gap_x, gap_width); - showarrow = FALSE; + for (children = priv->children; children; children = children->next) + { + page = children->data; + + if (!gtk_widget_get_visible (page->child)) + continue; + + if (!gtk_widget_get_mapped (page->tab_label)) + showarrow = TRUE; + + /* No point in keeping searching */ + if (showarrow) + break; + } + + gtk_style_context_save (context); + + if (!showarrow || !priv->scrollable) + { + GtkJunctionSides junction = 0; + + /* Apply junction sides, if no arrows are shown, + * then make corners with connecting tabs square. + */ + switch (tab_pos) + { + case GTK_POS_TOP: + junction |= (is_rtl) ? GTK_JUNCTION_CORNER_TOPRIGHT : GTK_JUNCTION_CORNER_TOPLEFT; + + break; + case GTK_POS_BOTTOM: + junction |= (is_rtl) ? GTK_JUNCTION_CORNER_BOTTOMRIGHT : GTK_JUNCTION_CORNER_BOTTOMLEFT; + + break; + case GTK_POS_LEFT: + junction |= GTK_JUNCTION_CORNER_TOPLEFT; + + break; + case GTK_POS_RIGHT: + junction |= GTK_JUNCTION_CORNER_TOPRIGHT; + + break; + } + + gtk_style_context_set_junction_sides (context, junction); + } + + gtk_render_background (context, cr, + x, y, width, height); + gtk_render_frame_gap (context, cr, + x, y, width, height, + tab_pos, gap_x, gap_x + gap_width); + + gtk_style_context_restore (context); + children = gtk_notebook_search_page (notebook, NULL, step, TRUE); - i = 0; while (children) { page = children->data; children = gtk_notebook_search_page (notebook, children, - step, TRUE); - if (!gtk_widget_get_visible (page->child)) - continue; - if (!gtk_widget_get_mapped (page->tab_label)) - showarrow = TRUE; - else - { - if (page != priv->cur_page) - gtk_notebook_draw_tab (notebook, page, cr, i, children != NULL); - else - { - cur_page_pos = i; - cur_page_end = (children != NULL); - } + step, TRUE); + if (!gtk_widget_get_visible (page->child) || + !gtk_widget_get_mapped (page->tab_label)) + continue; - i++; - } + tab_flags = _gtk_notebook_get_tab_flags (notebook, page); + gtk_notebook_draw_tab (notebook, page, cr, tab_flags); } if (showarrow && priv->scrollable) { if (priv->has_before_previous) - gtk_notebook_draw_arrow (notebook, cr, ARROW_LEFT_BEFORE); + gtk_notebook_draw_arrow (notebook, cr, ARROW_LEFT_BEFORE); if (priv->has_before_next) - gtk_notebook_draw_arrow (notebook, cr, ARROW_RIGHT_BEFORE); + gtk_notebook_draw_arrow (notebook, cr, ARROW_RIGHT_BEFORE); if (priv->has_after_previous) - gtk_notebook_draw_arrow (notebook, cr, ARROW_LEFT_AFTER); + gtk_notebook_draw_arrow (notebook, cr, ARROW_LEFT_AFTER); if (priv->has_after_next) - gtk_notebook_draw_arrow (notebook, cr, ARROW_RIGHT_AFTER); + gtk_notebook_draw_arrow (notebook, cr, ARROW_RIGHT_AFTER); } if (priv->operation != DRAG_OPERATION_REORDER) - gtk_notebook_draw_tab (notebook, priv->cur_page, cr, cur_page_pos, cur_page_end); + { + tab_flags = _gtk_notebook_get_tab_flags (notebook, priv->cur_page); + gtk_notebook_draw_tab (notebook, priv->cur_page, cr, tab_flags); + } } static void gtk_notebook_draw_tab (GtkNotebook *notebook, - GtkNotebookPage *page, - cairo_t *cr, - guint position, - gboolean is_last) + GtkNotebookPage *page, + cairo_t *cr, + GtkRegionFlags flags) { GtkNotebookPrivate *priv; - GtkStateType state_type; + GtkStateFlags state = 0; GtkWidget *widget; GtkStyleContext *context; - GtkRegionFlags flags = 0; if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) || !gtk_widget_get_mapped (page->tab_label) || @@ -5052,27 +5120,14 @@ gtk_notebook_draw_tab (GtkNotebook *notebook, priv = notebook->priv; if (priv->cur_page == page) - state_type = GTK_STATE_NORMAL; - else - state_type = GTK_STATE_ACTIVE; - - if ((position + 1) % 2 == 0) - flags |= GTK_REGION_EVEN; - else - flags |= GTK_REGION_ODD; - - if (position == 0) - flags |= GTK_REGION_FIRST; - - if (is_last) - flags |= GTK_REGION_LAST; + state = GTK_STATE_FLAG_ACTIVE; context = gtk_widget_get_style_context (widget); - gtk_style_context_add_region (context, "tab", flags); + gtk_style_context_save (context); + gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, flags); + gtk_style_context_set_state (context, state); - gtk_paint_extension (gtk_widget_get_style (widget), cr, - state_type, GTK_SHADOW_OUT, - widget, "tab", + gtk_render_extension (context, cr, page->allocation.x, page->allocation.y, page->allocation.width, @@ -5088,40 +5143,40 @@ gtk_notebook_draw_tab (GtkNotebook *notebook, gtk_widget_get_allocation (page->tab_label, &allocation); gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL); - gtk_paint_focus (gtk_widget_get_style (widget), cr, - gtk_widget_get_state (widget), widget, "tab", - allocation.x - focus_width, - allocation.y - focus_width, - allocation.width + 2 * focus_width, - allocation.height + 2 * focus_width); + gtk_render_focus (context, cr, + allocation.x - focus_width, + allocation.y - focus_width, + allocation.width + 2 * focus_width, + allocation.height + 2 * focus_width); } - gtk_style_context_remove_region (context, "tab"); + gtk_style_context_restore (context); } static void gtk_notebook_draw_arrow (GtkNotebook *notebook, cairo_t *cr, - GtkNotebookArrow nbarrow) + GtkNotebookArrow nbarrow) { GtkNotebookPrivate *priv = notebook->priv; - GtkStateType state_type; - GtkShadowType shadow_type; + GtkStyleContext *context; + GtkStateFlags state = 0; GtkWidget *widget; GdkRectangle arrow_rect; - GtkArrowType arrow; gboolean is_rtl, left; gint scroll_arrow_hlength; gint scroll_arrow_vlength; gint arrow_size; + gdouble angle; widget = GTK_WIDGET (notebook); + context = gtk_widget_get_style_context (widget); gtk_notebook_get_arrow_rect (notebook, &arrow_rect, nbarrow); is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; left = (ARROW_IS_LEFT (nbarrow) && !is_rtl) || - (!ARROW_IS_LEFT (nbarrow) && is_rtl); + (!ARROW_IS_LEFT (nbarrow) && is_rtl); gtk_widget_style_get (widget, "scroll-arrow-hlength", &scroll_arrow_hlength, @@ -5130,44 +5185,39 @@ gtk_notebook_draw_arrow (GtkNotebook *notebook, if (priv->in_child == nbarrow) { + state |= GTK_STATE_FLAG_PRELIGHT; + if (priv->click_child == nbarrow) - state_type = GTK_STATE_ACTIVE; - else - state_type = GTK_STATE_PRELIGHT; + state |= GTK_STATE_FLAG_ACTIVE; } else - state_type = gtk_widget_get_state (widget); - - if (priv->click_child == nbarrow) - shadow_type = GTK_SHADOW_IN; - else - shadow_type = GTK_SHADOW_OUT; + state = gtk_widget_get_state_flags (widget); if (priv->focus_tab && !gtk_notebook_search_page (notebook, priv->focus_tab, left ? STEP_PREV : STEP_NEXT, TRUE)) - { - shadow_type = GTK_SHADOW_ETCHED_IN; - state_type = GTK_STATE_INSENSITIVE; - } - + state = GTK_STATE_FLAG_INSENSITIVE; + if (priv->tab_pos == GTK_POS_LEFT || priv->tab_pos == GTK_POS_RIGHT) { - arrow = (ARROW_IS_LEFT (nbarrow) ? GTK_ARROW_UP : GTK_ARROW_DOWN); + angle = (ARROW_IS_LEFT (nbarrow)) ? 0 : G_PI; arrow_size = scroll_arrow_vlength; } else { - arrow = (ARROW_IS_LEFT (nbarrow) ? GTK_ARROW_LEFT : GTK_ARROW_RIGHT); + angle = (ARROW_IS_LEFT (nbarrow)) ? 3 * (G_PI / 2) : G_PI / 2; arrow_size = scroll_arrow_hlength; } - - gtk_paint_arrow (gtk_widget_get_style (widget), - cr, state_type, - shadow_type, widget, "notebook", - arrow, TRUE, arrow_rect.x, arrow_rect.y, - arrow_size, arrow_size); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_arrow (context, cr, angle, + arrow_rect.x, arrow_rect.y, + arrow_size); + + gtk_style_context_restore (context); } /* Private GtkNotebook Size Allocate Functions: @@ -5181,15 +5231,15 @@ gtk_notebook_draw_arrow (GtkNotebook *notebook, */ static void gtk_notebook_tab_space (GtkNotebook *notebook, - gboolean *show_arrows, - gint *min, - gint *max, - gint *tab_space) + gboolean *show_arrows, + gint *min, + gint *max, + gint *tab_space) { GtkNotebookPrivate *priv = notebook->priv; GtkAllocation allocation, action_allocation; GtkWidget *widget; - GtkStyle *style; + GtkStyleContext *context; GList *children; gint tab_pos = get_effective_tab_pos (notebook); gint tab_overlap; @@ -5199,12 +5249,13 @@ gtk_notebook_tab_space (GtkNotebook *notebook, gboolean is_rtl; gint i; guint border_width; + GtkBorder padding; widget = GTK_WIDGET (notebook); children = priv->children; is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (GTK_WIDGET (notebook), "arrow-spacing", &arrow_spacing, @@ -5213,6 +5264,7 @@ gtk_notebook_tab_space (GtkNotebook *notebook, NULL); border_width = gtk_container_get_border_width (GTK_CONTAINER (notebook)); + gtk_style_context_get_padding (context, 0, &padding); gtk_widget_get_allocation (widget, &allocation); @@ -5231,23 +5283,23 @@ gtk_notebook_tab_space (GtkNotebook *notebook, if ((i == ACTION_WIDGET_START && !is_rtl) || (i == ACTION_WIDGET_END && is_rtl)) - *min += action_allocation.width + style->xthickness; + *min += action_allocation.width + padding.left; else - *max -= action_allocation.width + style->xthickness; + *max -= action_allocation.width + padding.right; } } while (children) - { + { GtkNotebookPage *page; - page = children->data; - children = children->next; + page = children->data; + children = children->next; - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && - gtk_widget_get_visible (page->child)) - *tab_space += page->requisition.width; - } + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && + gtk_widget_get_visible (page->child)) + *tab_space += page->requisition.width; + } break; case GTK_POS_RIGHT: case GTK_POS_LEFT: @@ -5261,23 +5313,23 @@ gtk_notebook_tab_space (GtkNotebook *notebook, gtk_widget_get_allocation (priv->action_widget[i], &action_allocation); if (i == ACTION_WIDGET_START) - *min += action_allocation.height + style->ythickness; + *min += action_allocation.height + padding.top; else - *max -= action_allocation.height + style->ythickness; + *max -= action_allocation.height + padding.bottom; } } while (children) - { + { GtkNotebookPage *page; - page = children->data; - children = children->next; + page = children->data; + children = children->next; - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && - gtk_widget_get_visible (page->child)) - *tab_space += page->requisition.height; - } + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && + gtk_widget_get_visible (page->child)) + *tab_space += page->requisition.height; + } break; } @@ -5288,76 +5340,76 @@ gtk_notebook_tab_space (GtkNotebook *notebook, gtk_widget_style_get (widget, "tab-overlap", &tab_overlap, NULL); switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (*tab_space > *max - *min - tab_overlap) - { - *show_arrows = TRUE; + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (*tab_space > *max - *min - tab_overlap) + { + *show_arrows = TRUE; - /* take arrows into account */ - *tab_space = *max - *min - tab_overlap; + /* take arrows into account */ + *tab_space = *max - *min - tab_overlap; - if (priv->has_after_previous) - { - *tab_space -= arrow_spacing + scroll_arrow_hlength; - *max -= arrow_spacing + scroll_arrow_hlength; - } + if (priv->has_after_previous) + { + *tab_space -= arrow_spacing + scroll_arrow_hlength; + *max -= arrow_spacing + scroll_arrow_hlength; + } - if (priv->has_after_next) - { - *tab_space -= arrow_spacing + scroll_arrow_hlength; - *max -= arrow_spacing + scroll_arrow_hlength; - } + if (priv->has_after_next) + { + *tab_space -= arrow_spacing + scroll_arrow_hlength; + *max -= arrow_spacing + scroll_arrow_hlength; + } - if (priv->has_before_previous) - { - *tab_space -= arrow_spacing + scroll_arrow_hlength; - *min += arrow_spacing + scroll_arrow_hlength; - } + if (priv->has_before_previous) + { + *tab_space -= arrow_spacing + scroll_arrow_hlength; + *min += arrow_spacing + scroll_arrow_hlength; + } - if (priv->has_before_next) - { - *tab_space -= arrow_spacing + scroll_arrow_hlength; - *min += arrow_spacing + scroll_arrow_hlength; - } - } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if (*tab_space > *max - *min - tab_overlap) - { - *show_arrows = TRUE; + if (priv->has_before_next) + { + *tab_space -= arrow_spacing + scroll_arrow_hlength; + *min += arrow_spacing + scroll_arrow_hlength; + } + } + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (*tab_space > *max - *min - tab_overlap) + { + *show_arrows = TRUE; - /* take arrows into account */ - *tab_space = *max - *min - tab_overlap; + /* take arrows into account */ + *tab_space = *max - *min - tab_overlap; - if (priv->has_after_previous || priv->has_after_next) - { - *tab_space -= arrow_spacing + scroll_arrow_vlength; - *max -= arrow_spacing + scroll_arrow_vlength; - } + if (priv->has_after_previous || priv->has_after_next) + { + *tab_space -= arrow_spacing + scroll_arrow_vlength; + *max -= arrow_spacing + scroll_arrow_vlength; + } - if (priv->has_before_previous || priv->has_before_next) - { - *tab_space -= arrow_spacing + scroll_arrow_vlength; - *min += arrow_spacing + scroll_arrow_vlength; - } - } - break; - } + if (priv->has_before_previous || priv->has_before_next) + { + *tab_space -= arrow_spacing + scroll_arrow_vlength; + *min += arrow_spacing + scroll_arrow_vlength; + } + } + break; + } } } static void gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, - gboolean show_arrows, - gint min, - gint max, - gint tab_space, - GList **last_child, - gint *n, - gint *remaining_space) + gboolean show_arrows, + gint min, + gint max, + gint tab_space, + GList **last_child, + gint *n, + gint *remaining_space) { GtkNotebookPrivate *priv = notebook->priv; GtkWidget *widget; @@ -5365,7 +5417,7 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, GList *children; GtkNotebookPage *page; gint tab_pos, tab_overlap; - + widget = GTK_WIDGET (notebook); container = GTK_CONTAINER (notebook); gtk_widget_style_get (widget, "tab-overlap", &tab_overlap, NULL); @@ -5376,109 +5428,109 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, *remaining_space = tab_space; if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, priv->cur_page) && - gtk_widget_get_visible (priv->cur_page->child)) - { - gtk_notebook_calc_tabs (notebook, - priv->focus_tab, - &(priv->focus_tab), - remaining_space, STEP_NEXT); - } + gtk_widget_get_visible (priv->cur_page->child)) + { + gtk_notebook_calc_tabs (notebook, + priv->focus_tab, + &(priv->focus_tab), + remaining_space, STEP_NEXT); + } if (tab_space <= 0 || *remaining_space <= 0) - { - /* show 1 tab */ - priv->first_tab = priv->focus_tab; - *last_child = gtk_notebook_search_page (notebook, priv->focus_tab, - STEP_NEXT, TRUE); + { + /* show 1 tab */ + priv->first_tab = priv->focus_tab; + *last_child = gtk_notebook_search_page (notebook, priv->focus_tab, + STEP_NEXT, TRUE); page = priv->first_tab->data; *remaining_space = tab_space - page->requisition.width; *n = 1; - } + } else - { - children = NULL; + { + children = NULL; - if (priv->first_tab && priv->first_tab != priv->focus_tab) - { - /* Is first_tab really predecessor of focus_tab? */ - page = priv->first_tab->data; - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && - gtk_widget_get_visible (page->child)) - for (children = priv->focus_tab; - children && children != priv->first_tab; - children = gtk_notebook_search_page (notebook, - children, - STEP_PREV, - TRUE)); - } + if (priv->first_tab && priv->first_tab != priv->focus_tab) + { + /* Is first_tab really predecessor of focus_tab? */ + page = priv->first_tab->data; + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && + gtk_widget_get_visible (page->child)) + for (children = priv->focus_tab; + children && children != priv->first_tab; + children = gtk_notebook_search_page (notebook, + children, + STEP_PREV, + TRUE)); + } - if (!children) - { - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, priv->cur_page)) - priv->first_tab = priv->focus_tab; - else - priv->first_tab = gtk_notebook_search_page (notebook, priv->focus_tab, - STEP_NEXT, TRUE); - } - else - /* calculate shown tabs counting backwards from the focus tab */ - gtk_notebook_calc_tabs (notebook, - gtk_notebook_search_page (notebook, - priv->focus_tab, - STEP_PREV, - TRUE), - &(priv->first_tab), remaining_space, - STEP_PREV); + if (!children) + { + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, priv->cur_page)) + priv->first_tab = priv->focus_tab; + else + priv->first_tab = gtk_notebook_search_page (notebook, priv->focus_tab, + STEP_NEXT, TRUE); + } + else + /* calculate shown tabs counting backwards from the focus tab */ + gtk_notebook_calc_tabs (notebook, + gtk_notebook_search_page (notebook, + priv->focus_tab, + STEP_PREV, + TRUE), + &(priv->first_tab), remaining_space, + STEP_PREV); - if (*remaining_space < 0) - { - priv->first_tab = - gtk_notebook_search_page (notebook, priv->first_tab, - STEP_NEXT, TRUE); - if (!priv->first_tab) - priv->first_tab = priv->focus_tab; + if (*remaining_space < 0) + { + priv->first_tab = + gtk_notebook_search_page (notebook, priv->first_tab, + STEP_NEXT, TRUE); + if (!priv->first_tab) + priv->first_tab = priv->focus_tab; - *last_child = gtk_notebook_search_page (notebook, priv->focus_tab, - STEP_NEXT, TRUE); - } - else /* focus_tab -> end */ - { - if (!priv->first_tab) - priv->first_tab = gtk_notebook_search_page (notebook, - NULL, - STEP_NEXT, - TRUE); - children = NULL; - gtk_notebook_calc_tabs (notebook, - gtk_notebook_search_page (notebook, - priv->focus_tab, - STEP_NEXT, - TRUE), - &children, remaining_space, STEP_NEXT); + *last_child = gtk_notebook_search_page (notebook, priv->focus_tab, + STEP_NEXT, TRUE); + } + else /* focus_tab -> end */ + { + if (!priv->first_tab) + priv->first_tab = gtk_notebook_search_page (notebook, + NULL, + STEP_NEXT, + TRUE); + children = NULL; + gtk_notebook_calc_tabs (notebook, + gtk_notebook_search_page (notebook, + priv->focus_tab, + STEP_NEXT, + TRUE), + &children, remaining_space, STEP_NEXT); - if (*remaining_space <= 0) - *last_child = children; - else /* start <- first_tab */ - { - *last_child = NULL; - children = NULL; + if (*remaining_space <= 0) + *last_child = children; + else /* start <- first_tab */ + { + *last_child = NULL; + children = NULL; - gtk_notebook_calc_tabs (notebook, - gtk_notebook_search_page (notebook, - priv->first_tab, - STEP_PREV, - TRUE), - &children, remaining_space, STEP_PREV); + gtk_notebook_calc_tabs (notebook, + gtk_notebook_search_page (notebook, + priv->first_tab, + STEP_PREV, + TRUE), + &children, remaining_space, STEP_PREV); - if (*remaining_space == 0) - priv->first_tab = children; - else - priv->first_tab = gtk_notebook_search_page(notebook, - children, - STEP_NEXT, - TRUE); - } - } + if (*remaining_space == 0) + priv->first_tab = children; + else + priv->first_tab = gtk_notebook_search_page(notebook, + children, + STEP_NEXT, + TRUE); + } + } if (*remaining_space < 0) { @@ -5491,35 +5543,35 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, children = gtk_notebook_search_page (notebook, children, STEP_NEXT, TRUE)) (*n)++; - } + } else - *remaining_space = 0; + *remaining_space = 0; } /* unmap all non-visible tabs */ for (children = gtk_notebook_search_page (notebook, NULL, - STEP_NEXT, TRUE); - children && children != priv->first_tab; - children = gtk_notebook_search_page (notebook, children, - STEP_NEXT, TRUE)) - { - page = children->data; + STEP_NEXT, TRUE); + children && children != priv->first_tab; + children = gtk_notebook_search_page (notebook, children, + STEP_NEXT, TRUE)) + { + page = children->data; - if (page->tab_label && - NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) - gtk_widget_set_child_visible (page->tab_label, FALSE); - } + if (page->tab_label && + NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) + gtk_widget_set_child_visible (page->tab_label, FALSE); + } for (children = *last_child; children; - children = gtk_notebook_search_page (notebook, children, - STEP_NEXT, TRUE)) - { - page = children->data; + children = gtk_notebook_search_page (notebook, children, + STEP_NEXT, TRUE)) + { + page = children->data; - if (page->tab_label && - NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) - gtk_widget_set_child_visible (page->tab_label, FALSE); - } + if (page->tab_label && + NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) + gtk_widget_set_child_visible (page->tab_label, FALSE); + } } else /* !show_arrows */ { @@ -5534,32 +5586,32 @@ gtk_notebook_calculate_shown_tabs (GtkNotebook *notebook, *remaining_space = max - min - tab_overlap - tab_space; children = priv->children; priv->first_tab = gtk_notebook_search_page (notebook, NULL, - STEP_NEXT, TRUE); + STEP_NEXT, TRUE); while (children) - { - page = children->data; - children = children->next; + { + page = children->data; + children = children->next; - if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) || - !gtk_widget_get_visible (page->child)) - continue; + if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) || + !gtk_widget_get_visible (page->child)) + continue; - c++; + c++; - if (page->expand || + if (page->expand || (gtk_widget_compute_expand (page->tab_label, tab_expand_orientation))) - (*n)++; - } + (*n)++; + } /* if notebook is homogeneous, all tabs are expanded */ if (priv->homogeneous && *n) - *n = c; + *n = c; } } static gboolean get_allocate_at_bottom (GtkWidget *widget, - gint search_direction) + gint search_direction) { gboolean is_rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); gboolean tab_pos = get_effective_tab_pos (GTK_NOTEBOOK (widget)); @@ -5569,9 +5621,9 @@ get_allocate_at_bottom (GtkWidget *widget, case GTK_POS_TOP: case GTK_POS_BOTTOM: if (!is_rtl) - return (search_direction == STEP_PREV); + return (search_direction == STEP_PREV); else - return (search_direction == STEP_NEXT); + return (search_direction == STEP_NEXT); break; case GTK_POS_RIGHT: @@ -5585,29 +5637,29 @@ get_allocate_at_bottom (GtkWidget *widget, static void gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, - GList **children, - GList *last_child, - gboolean showarrow, - gint direction, - gint *remaining_space, - gint *expanded_tabs, - gint min, - gint max) + GList **children, + GList *last_child, + gboolean showarrow, + gint direction, + gint *remaining_space, + gint *expanded_tabs, + gint min, + gint max) { GtkNotebookPrivate *priv = notebook->priv; GtkAllocation allocation; GtkWidget *widget; GtkContainer *container; GtkNotebookPage *page; - GtkStyle *style; + GtkStyleContext *context; gboolean allocate_at_bottom; gint tab_overlap, tab_pos, tab_extra_space; gint left_x, right_x, top_y, bottom_y, anchor; - gint xthickness, ythickness; guint border_width; gboolean gap_left, packing_changed; GtkAllocation child_allocation = { 0, }; GtkOrientation tab_expand_orientation; + GtkBorder padding; widget = GTK_WIDGET (notebook); container = GTK_CONTAINER (notebook); @@ -5622,25 +5674,23 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, child_allocation.x = allocation.x + border_width; child_allocation.y = allocation.y + border_width; - style = gtk_widget_get_style (widget); - xthickness = style->xthickness; - ythickness = style->ythickness; + context = gtk_widget_get_style_context (widget); switch (tab_pos) { case GTK_POS_BOTTOM: child_allocation.y = allocation.y + allocation.height - - priv->cur_page->requisition.height - border_width; + priv->cur_page->requisition.height - border_width; /* fall through */ case GTK_POS_TOP: child_allocation.x = (allocate_at_bottom) ? max : min; child_allocation.height = priv->cur_page->requisition.height; anchor = child_allocation.x; break; - + case GTK_POS_RIGHT: child_allocation.x = allocation.x + allocation.width - - priv->cur_page->requisition.width - border_width; + priv->cur_page->requisition.width - border_width; /* fall through */ case GTK_POS_LEFT: child_allocation.y = (allocate_at_bottom) ? max : min; @@ -5650,9 +5700,9 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, } left_x = CLAMP (priv->mouse_x - priv->drag_offset_x, - min, max - priv->cur_page->allocation.width); + min, max - priv->cur_page->allocation.width); top_y = CLAMP (priv->mouse_y - priv->drag_offset_y, - min, max - priv->cur_page->allocation.height); + min, max - priv->cur_page->allocation.height); right_x = left_x + priv->cur_page->allocation.width; bottom_y = top_y + priv->cur_page->allocation.height; gap_left = packing_changed = FALSE; @@ -5662,264 +5712,255 @@ gtk_notebook_calculate_tabs_allocation (GtkNotebook *notebook, else tab_expand_orientation = GTK_ORIENTATION_VERTICAL; + gtk_style_context_save (context); + while (*children && *children != last_child) { page = (*children)->data; - if (direction == STEP_NEXT && page->pack != GTK_PACK_START) - { - if (!showarrow) - break; - else if (priv->operation == DRAG_OPERATION_REORDER) - packing_changed = TRUE; - } + gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, + _gtk_notebook_get_tab_flags (notebook, page)); + gtk_style_context_get_padding (context, 0, &padding); if (direction == STEP_NEXT) - *children = gtk_notebook_search_page (notebook, *children, direction, TRUE); + *children = gtk_notebook_search_page (notebook, *children, direction, TRUE); else - { - *children = (*children)->next; + { + *children = (*children)->next; - if (page->pack != GTK_PACK_END || !gtk_widget_get_visible (page->child)) - continue; - } + if (!gtk_widget_get_visible (page->child)) + continue; + } if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)) - continue; + continue; tab_extra_space = 0; if (*expanded_tabs && (showarrow || page->expand || gtk_widget_compute_expand (page->tab_label, tab_expand_orientation) || priv->homogeneous)) - { - tab_extra_space = *remaining_space / *expanded_tabs; - *remaining_space -= tab_extra_space; - (*expanded_tabs)--; - } + { + tab_extra_space = *remaining_space / *expanded_tabs; + *remaining_space -= tab_extra_space; + (*expanded_tabs)--; + } switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - child_allocation.width = page->requisition.width + tab_overlap + tab_extra_space; + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + child_allocation.width = page->requisition.width + tab_overlap + tab_extra_space; - /* make sure that the reordered tab doesn't go past the last position */ - if (priv->operation == DRAG_OPERATION_REORDER && - !gap_left && packing_changed) - { - if (!allocate_at_bottom) - { - if ((priv->cur_page->pack == GTK_PACK_START && left_x >= anchor) || - (priv->cur_page->pack == GTK_PACK_END && left_x < anchor)) - { - left_x = priv->drag_window_x = anchor; - anchor += priv->cur_page->allocation.width - tab_overlap; - } - } - else - { - if ((priv->cur_page->pack == GTK_PACK_START && right_x <= anchor) || - (priv->cur_page->pack == GTK_PACK_END && right_x > anchor)) - { - anchor -= priv->cur_page->allocation.width; - left_x = priv->drag_window_x = anchor; - anchor += tab_overlap; - } - } + /* make sure that the reordered tab doesn't go past the last position */ + if (priv->operation == DRAG_OPERATION_REORDER && + !gap_left && packing_changed) + { + if (!allocate_at_bottom) + { + if (left_x >= anchor) + { + left_x = priv->drag_window_x = anchor; + anchor += priv->cur_page->allocation.width - tab_overlap; + } + } + else + { + if (right_x <= anchor) + { + anchor -= priv->cur_page->allocation.width; + left_x = priv->drag_window_x = anchor; + anchor += tab_overlap; + } + } - gap_left = TRUE; - } + gap_left = TRUE; + } - if (priv->operation == DRAG_OPERATION_REORDER && page == priv->cur_page) - { - priv->drag_window_x = left_x; - priv->drag_window_y = child_allocation.y; - } - else - { - if (allocate_at_bottom) - anchor -= child_allocation.width; + if (priv->operation == DRAG_OPERATION_REORDER && page == priv->cur_page) + { + priv->drag_window_x = left_x; + priv->drag_window_y = child_allocation.y; + } + else + { + if (allocate_at_bottom) + anchor -= child_allocation.width; - if (priv->operation == DRAG_OPERATION_REORDER && page->pack == priv->cur_page->pack) - { - if (!allocate_at_bottom && - left_x >= anchor && - left_x <= anchor + child_allocation.width / 2) + if (priv->operation == DRAG_OPERATION_REORDER) + { + if (!allocate_at_bottom && + left_x >= anchor && + left_x <= anchor + child_allocation.width / 2) anchor += priv->cur_page->allocation.width - tab_overlap; - else if (allocate_at_bottom && - right_x >= anchor + child_allocation.width / 2 && - right_x <= anchor + child_allocation.width) + else if (allocate_at_bottom && + right_x >= anchor + child_allocation.width / 2 && + right_x <= anchor + child_allocation.width) anchor -= priv->cur_page->allocation.width - tab_overlap; - } + } - child_allocation.x = anchor; - } + child_allocation.x = anchor; + } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - child_allocation.height = page->requisition.height + tab_overlap + tab_extra_space; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + child_allocation.height = page->requisition.height + tab_overlap + tab_extra_space; - /* make sure that the reordered tab doesn't go past the last position */ - if (priv->operation == DRAG_OPERATION_REORDER && - !gap_left && packing_changed) - { - if (!allocate_at_bottom && - ((priv->cur_page->pack == GTK_PACK_START && top_y >= anchor) || - (priv->cur_page->pack == GTK_PACK_END && top_y < anchor))) - { - top_y = priv->drag_window_y = anchor; - anchor += priv->cur_page->allocation.height - tab_overlap; - } - - gap_left = TRUE; - } + /* make sure that the reordered tab doesn't go past the last position */ + if (priv->operation == DRAG_OPERATION_REORDER && + !gap_left && packing_changed) + { + if (!allocate_at_bottom && top_y >= anchor) + { + top_y = priv->drag_window_y = anchor; + anchor += priv->cur_page->allocation.height - tab_overlap; + } - if (priv->operation == DRAG_OPERATION_REORDER && page == priv->cur_page) - { - priv->drag_window_x = child_allocation.x; - priv->drag_window_y = top_y; - } - else - { - if (allocate_at_bottom) - anchor -= child_allocation.height; + gap_left = TRUE; + } - if (priv->operation == DRAG_OPERATION_REORDER && page->pack == priv->cur_page->pack) - { - if (!allocate_at_bottom && - top_y >= anchor && - top_y <= anchor + child_allocation.height / 2) - anchor += priv->cur_page->allocation.height - tab_overlap; - else if (allocate_at_bottom && - bottom_y >= anchor + child_allocation.height / 2 && - bottom_y <= anchor + child_allocation.height) - anchor -= priv->cur_page->allocation.height - tab_overlap; - } + if (priv->operation == DRAG_OPERATION_REORDER && page == priv->cur_page) + { + priv->drag_window_x = child_allocation.x; + priv->drag_window_y = top_y; + } + else + { + if (allocate_at_bottom) + anchor -= child_allocation.height; - child_allocation.y = anchor; - } + if (priv->operation == DRAG_OPERATION_REORDER) + { + if (!allocate_at_bottom && + top_y >= anchor && + top_y <= anchor + child_allocation.height / 2) + anchor += priv->cur_page->allocation.height - tab_overlap; + else if (allocate_at_bottom && + bottom_y >= anchor + child_allocation.height / 2 && + bottom_y <= anchor + child_allocation.height) + anchor -= priv->cur_page->allocation.height - tab_overlap; + } - break; - } + child_allocation.y = anchor; + } + + break; + } page->allocation = child_allocation; if ((page == priv->detached_tab && priv->operation == DRAG_OPERATION_DETACH) || - (page == priv->cur_page && priv->operation == DRAG_OPERATION_REORDER)) - { - /* needs to be allocated at 0,0 - * to be shown in the drag window */ - page->allocation.x = 0; - page->allocation.y = 0; - } - + (page == priv->cur_page && priv->operation == DRAG_OPERATION_REORDER)) + { + /* needs to be allocated at 0,0 + * to be shown in the drag window */ + page->allocation.x = 0; + page->allocation.y = 0; + } + if (page != priv->cur_page) - { - switch (tab_pos) - { - case GTK_POS_TOP: - page->allocation.y += ythickness; - /* fall through */ - case GTK_POS_BOTTOM: - page->allocation.height = MAX (1, page->allocation.height - ythickness); - break; - case GTK_POS_LEFT: - page->allocation.x += xthickness; - /* fall through */ - case GTK_POS_RIGHT: - page->allocation.width = MAX (1, page->allocation.width - xthickness); - break; - } - } + { + switch (tab_pos) + { + case GTK_POS_TOP: + page->allocation.y += padding.top; + /* fall through */ + case GTK_POS_BOTTOM: + page->allocation.height = MAX (1, page->allocation.height - padding.top); + break; + case GTK_POS_LEFT: + page->allocation.x += padding.left; + /* fall through */ + case GTK_POS_RIGHT: + page->allocation.width = MAX (1, page->allocation.width - padding.left); + break; + } + } /* calculate whether to leave a gap based on reorder operation or not */ switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (priv->operation != DRAG_OPERATION_REORDER || - (priv->operation == DRAG_OPERATION_REORDER && page != priv->cur_page)) - { - if (priv->operation == DRAG_OPERATION_REORDER) - { - if (page->pack == priv->cur_page->pack && - !allocate_at_bottom && - left_x > anchor + child_allocation.width / 2 && - left_x <= anchor + child_allocation.width) + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (priv->operation != DRAG_OPERATION_REORDER || + (priv->operation == DRAG_OPERATION_REORDER && page != priv->cur_page)) + { + if (priv->operation == DRAG_OPERATION_REORDER) + { + if (!allocate_at_bottom && + left_x > anchor + child_allocation.width / 2 && + left_x <= anchor + child_allocation.width) anchor += priv->cur_page->allocation.width - tab_overlap; - else if (page->pack == priv->cur_page->pack && - allocate_at_bottom && - right_x >= anchor && - right_x <= anchor + child_allocation.width / 2) + else if (allocate_at_bottom && + right_x >= anchor && + right_x <= anchor + child_allocation.width / 2) anchor -= priv->cur_page->allocation.width - tab_overlap; - } - - if (!allocate_at_bottom) - anchor += child_allocation.width - tab_overlap; - else - anchor += tab_overlap; - } + } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if (priv->operation != DRAG_OPERATION_REORDER || - (priv->operation == DRAG_OPERATION_REORDER && page != priv->cur_page)) - { - if (priv->operation == DRAG_OPERATION_REORDER) - { - if (page->pack == priv->cur_page->pack && - !allocate_at_bottom && - top_y >= anchor + child_allocation.height / 2 && - top_y <= anchor + child_allocation.height) - anchor += priv->cur_page->allocation.height - tab_overlap; - else if (page->pack == priv->cur_page->pack && - allocate_at_bottom && - bottom_y >= anchor && - bottom_y <= anchor + child_allocation.height / 2) - anchor -= priv->cur_page->allocation.height - tab_overlap; - } + if (!allocate_at_bottom) + anchor += child_allocation.width - tab_overlap; + else + anchor += tab_overlap; + } - if (!allocate_at_bottom) - anchor += child_allocation.height - tab_overlap; - else - anchor += tab_overlap; - } + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (priv->operation != DRAG_OPERATION_REORDER || + (priv->operation == DRAG_OPERATION_REORDER && page != priv->cur_page)) + { + if (priv->operation == DRAG_OPERATION_REORDER) + { + if (!allocate_at_bottom && + top_y >= anchor + child_allocation.height / 2 && + top_y <= anchor + child_allocation.height) + anchor += priv->cur_page->allocation.height - tab_overlap; + else if (allocate_at_bottom && + bottom_y >= anchor && + bottom_y <= anchor + child_allocation.height / 2) + anchor -= priv->cur_page->allocation.height - tab_overlap; + } - break; - } + if (!allocate_at_bottom) + anchor += child_allocation.height - tab_overlap; + else + anchor += tab_overlap; + } + + break; + } /* set child visible */ if (page->tab_label) - gtk_widget_set_child_visible (page->tab_label, TRUE); + gtk_widget_set_child_visible (page->tab_label, TRUE); } + gtk_style_context_restore (context); + /* Don't move the current tab past the last position during tabs reordering */ if (children && priv->operation == DRAG_OPERATION_REORDER && - ((direction == STEP_NEXT && priv->cur_page->pack == GTK_PACK_START) || - ((direction == STEP_PREV || packing_changed) && priv->cur_page->pack == GTK_PACK_END))) + direction == STEP_NEXT) { switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - if (allocate_at_bottom) - anchor -= priv->cur_page->allocation.width; + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + if (allocate_at_bottom) + anchor -= priv->cur_page->allocation.width; - if ((!allocate_at_bottom && priv->drag_window_x > anchor) || - (allocate_at_bottom && priv->drag_window_x < anchor)) - priv->drag_window_x = anchor; - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - if (allocate_at_bottom) - anchor -= priv->cur_page->allocation.height; + if ((!allocate_at_bottom && priv->drag_window_x > anchor) || + (allocate_at_bottom && priv->drag_window_x < anchor)) + priv->drag_window_x = anchor; + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + if (allocate_at_bottom) + anchor -= priv->cur_page->allocation.height; - if ((!allocate_at_bottom && priv->drag_window_y > anchor) || - (allocate_at_bottom && priv->drag_window_y < anchor)) - priv->drag_window_y = anchor; - break; - } + if ((!allocate_at_bottom && priv->drag_window_y > anchor) || + (allocate_at_bottom && priv->drag_window_y < anchor)) + priv->drag_window_y = anchor; + break; + } } } @@ -5941,22 +5982,22 @@ gtk_notebook_pages_allocate (GtkNotebook *notebook) expanded_tabs = 1; gtk_notebook_tab_space (notebook, &showarrow, - &min, &max, &tab_space); + &min, &max, &tab_space); gtk_notebook_calculate_shown_tabs (notebook, showarrow, - min, max, tab_space, &last_child, - &expanded_tabs, &remaining_space); + min, max, tab_space, &last_child, + &expanded_tabs, &remaining_space); children = priv->first_tab; gtk_notebook_calculate_tabs_allocation (notebook, &children, last_child, - showarrow, STEP_NEXT, - &remaining_space, &expanded_tabs, min, max); + showarrow, STEP_NEXT, + &remaining_space, &expanded_tabs, min, max); if (children && children != last_child) { children = priv->children; gtk_notebook_calculate_tabs_allocation (notebook, &children, last_child, - showarrow, STEP_PREV, - &remaining_space, &expanded_tabs, min, max); + showarrow, STEP_PREV, + &remaining_space, &expanded_tabs, min, max); } children = priv->children; @@ -5964,7 +6005,7 @@ gtk_notebook_pages_allocate (GtkNotebook *notebook) while (children) { if (gtk_notebook_page_allocate (notebook, GTK_NOTEBOOK_PAGE (children))) - tab_allocations_changed = TRUE; + tab_allocations_changed = TRUE; children = children->next; } @@ -5977,21 +6018,20 @@ gtk_notebook_pages_allocate (GtkNotebook *notebook) static gboolean gtk_notebook_page_allocate (GtkNotebook *notebook, - GtkNotebookPage *page) + GtkNotebookPage *page) { GtkWidget *widget = GTK_WIDGET (notebook); GtkNotebookPrivate *priv = notebook->priv; GtkAllocation child_allocation, label_allocation; GtkRequisition tab_requisition; - GtkStyle *style; - gint xthickness; - gint ythickness; + GtkStyleContext *context; gint padding; gint focus_width; gint tab_curvature; gint tab_pos = get_effective_tab_pos (notebook); gboolean tab_allocation_changed; gboolean was_visible = page->tab_allocated_visible; + GtkBorder tab_padding; if (!page->tab_label || !gtk_widget_get_visible (page->tab_label) || @@ -6001,75 +6041,83 @@ gtk_notebook_page_allocate (GtkNotebook *notebook, return was_visible; } - style = gtk_widget_get_style (widget); - xthickness = style->xthickness; - ythickness = style->ythickness; + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_region (context, GTK_STYLE_REGION_TAB, + _gtk_notebook_get_tab_flags (notebook, page)); + + gtk_style_context_get_padding (context, 0, &tab_padding); gtk_widget_get_preferred_size (page->tab_label, &tab_requisition, NULL); gtk_widget_style_get (widget, - "focus-line-width", &focus_width, - "tab-curvature", &tab_curvature, - NULL); + "focus-line-width", &focus_width, + "tab-curvature", &tab_curvature, + NULL); switch (tab_pos) { case GTK_POS_TOP: case GTK_POS_BOTTOM: padding = tab_curvature + focus_width + priv->tab_hborder; if (page->fill) - { - child_allocation.x = xthickness + focus_width + priv->tab_hborder; - child_allocation.width = MAX (1, page->allocation.width - 2 * child_allocation.x); - child_allocation.x += page->allocation.x; - } + { + child_allocation.x = tab_padding.left + focus_width + priv->tab_hborder; + child_allocation.width = MAX (1, (page->allocation.width - + tab_padding.left - tab_padding.right - + 2 * (focus_width + priv->tab_hborder))); + child_allocation.x += page->allocation.x; + } else - { - child_allocation.x = page->allocation.x + - (page->allocation.width - tab_requisition.width) / 2; + { + child_allocation.x = page->allocation.x + + (page->allocation.width - tab_requisition.width) / 2; - child_allocation.width = tab_requisition.width; - } + child_allocation.width = tab_requisition.width; + } child_allocation.y = priv->tab_vborder + focus_width + page->allocation.y; if (tab_pos == GTK_POS_TOP) - child_allocation.y += ythickness; + child_allocation.y += tab_padding.top; - child_allocation.height = MAX (1, (page->allocation.height - ythickness - - 2 * (priv->tab_vborder + focus_width))); + child_allocation.height = MAX (1, (page->allocation.height - + tab_padding.top - tab_padding.bottom - + 2 * (priv->tab_vborder + focus_width))); break; case GTK_POS_LEFT: case GTK_POS_RIGHT: padding = tab_curvature + focus_width + priv->tab_vborder; if (page->fill) - { - child_allocation.y = ythickness + padding; - child_allocation.height = MAX (1, (page->allocation.height - - 2 * child_allocation.y)); - child_allocation.y += page->allocation.y; - } + { + child_allocation.y = tab_padding.top + padding; + child_allocation.height = MAX (1, (page->allocation.height - + tab_padding.bottom - tab_padding.top - + 2 * padding)); + child_allocation.y += page->allocation.y; + } else - { - child_allocation.y = page->allocation.y + - (page->allocation.height - tab_requisition.height) / 2; + { + child_allocation.y = page->allocation.y + + (page->allocation.height - tab_requisition.height) / 2; - child_allocation.height = tab_requisition.height; - } + child_allocation.height = tab_requisition.height; + } child_allocation.x = priv->tab_hborder + focus_width + page->allocation.x; if (tab_pos == GTK_POS_LEFT) - child_allocation.x += xthickness; + child_allocation.x += tab_padding.left; - child_allocation.width = MAX (1, (page->allocation.width - xthickness - - 2 * (priv->tab_hborder + focus_width))); + child_allocation.width = MAX (1, (page->allocation.width - tab_padding.right - + 2 * (priv->tab_hborder + focus_width))); break; } gtk_widget_get_allocation (page->tab_label, &label_allocation); tab_allocation_changed = (child_allocation.x != label_allocation.x || - child_allocation.y != label_allocation.y || - child_allocation.width != label_allocation.width || - child_allocation.height != label_allocation.height); + child_allocation.y != label_allocation.y || + child_allocation.width != label_allocation.width || + child_allocation.height != label_allocation.height); gtk_widget_size_allocate (page->tab_label, &child_allocation); @@ -6079,115 +6127,103 @@ gtk_notebook_page_allocate (GtkNotebook *notebook, tab_allocation_changed = TRUE; } + gtk_style_context_restore (context); + return tab_allocation_changed; } -static void +static void gtk_notebook_calc_tabs (GtkNotebook *notebook, - GList *start, + GList *start, GList **end, - gint *tab_space, + gint *tab_space, guint direction) { GtkNotebookPage *page = NULL; GList *children; GList *last_list = NULL; GList *last_calculated_child = NULL; - gboolean pack; gint tab_pos = get_effective_tab_pos (notebook); - guint real_direction; if (!start) return; children = start; - pack = GTK_NOTEBOOK_PAGE (start)->pack; - if (pack == GTK_PACK_END) - real_direction = (direction == STEP_PREV) ? STEP_NEXT : STEP_PREV; - else - real_direction = direction; while (1) { switch (tab_pos) - { - case GTK_POS_TOP: - case GTK_POS_BOTTOM: - while (children) - { - page = children->data; - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && - gtk_widget_get_visible (page->child)) - { - if (page->pack == pack) - { - *tab_space -= page->requisition.width; - if (*tab_space < 0 || children == *end) - { - if (*tab_space < 0) - { - *tab_space = - (*tab_space + - page->requisition.width); + { + case GTK_POS_TOP: + case GTK_POS_BOTTOM: + while (children) + { + page = children->data; + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && + gtk_widget_get_visible (page->child)) + { + *tab_space -= page->requisition.width; + if (*tab_space < 0 || children == *end) + { + if (*tab_space < 0) + { + *tab_space = - (*tab_space + + page->requisition.width); - if (*tab_space == 0 && direction == STEP_PREV) - children = last_calculated_child; + if (*tab_space == 0 && direction == STEP_PREV) + children = last_calculated_child; - *end = children; - } - return; - } + *end = children; + } + return; + } - last_calculated_child = children; - } - last_list = children; - } - if (real_direction == STEP_NEXT) - children = children->next; - else - children = children->prev; - } - break; - case GTK_POS_LEFT: - case GTK_POS_RIGHT: - while (children) - { - page = children->data; - if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && - gtk_widget_get_visible (page->child)) - { - if (page->pack == pack) - { - *tab_space -= page->requisition.height; - if (*tab_space < 0 || children == *end) - { - if (*tab_space < 0) - { - *tab_space = - (*tab_space + - page->requisition.height); + last_calculated_child = children; + last_list = children; + } + if (direction == STEP_NEXT) + children = children->next; + else + children = children->prev; + } + break; + case GTK_POS_LEFT: + case GTK_POS_RIGHT: + while (children) + { + page = children->data; + if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) && + gtk_widget_get_visible (page->child)) + { + *tab_space -= page->requisition.height; + if (*tab_space < 0 || children == *end) + { + if (*tab_space < 0) + { + *tab_space = - (*tab_space + + page->requisition.height); - if (*tab_space == 0 && direction == STEP_PREV) - children = last_calculated_child; + if (*tab_space == 0 && direction == STEP_PREV) + children = last_calculated_child; - *end = children; - } - return; - } + *end = children; + } + return; + } - last_calculated_child = children; - } - last_list = children; - } - if (real_direction == STEP_NEXT) - children = children->next; - else - children = children->prev; - } - break; - } - if (real_direction == STEP_PREV) - return; - pack = (pack == GTK_PACK_END) ? GTK_PACK_START : GTK_PACK_END; - real_direction = STEP_PREV; + last_calculated_child = children; + last_list = children; + } + if (direction == STEP_NEXT) + children = children->next; + else + children = children->prev; + } + break; + } + if (direction == STEP_PREV) + return; + direction = STEP_PREV; children = last_list; } } @@ -6201,14 +6237,16 @@ gtk_notebook_update_tab_states (GtkNotebook *notebook) for (list = priv->children; list != NULL; list = list->next) { GtkNotebookPage *page = list->data; - + if (page->tab_label) - { - if (page == priv->cur_page) + { + if (page == priv->cur_page) gtk_widget_set_state_flags (page->tab_label, GTK_STATE_FLAG_ACTIVE, TRUE); else gtk_widget_set_state_flags (page->tab_label, 0, TRUE); - } + + gtk_widget_reset_style (page->tab_label); + } } } @@ -6218,8 +6256,8 @@ gtk_notebook_update_tab_states (GtkNotebook *notebook) */ static void gtk_notebook_real_switch_page (GtkNotebook *notebook, - GtkWidget* child, - guint page_num) + GtkWidget* child, + guint page_num) { GtkNotebookPrivate *priv = notebook->priv; GList *list = gtk_notebook_find_child (notebook, GTK_WIDGET (child), NULL); @@ -6251,13 +6289,13 @@ gtk_notebook_real_switch_page (GtkNotebook *notebook, if (child_has_focus) { if (priv->cur_page->last_focus_child && - gtk_widget_is_ancestor (priv->cur_page->last_focus_child, priv->cur_page->child)) - gtk_widget_grab_focus (priv->cur_page->last_focus_child); + gtk_widget_is_ancestor (priv->cur_page->last_focus_child, priv->cur_page->child)) + gtk_widget_grab_focus (priv->cur_page->last_focus_child); else - if (!gtk_widget_child_focus (priv->cur_page->child, GTK_DIR_TAB_FORWARD)) - gtk_widget_grab_focus (GTK_WIDGET (notebook)); + if (!gtk_widget_child_focus (priv->cur_page->child, GTK_DIR_TAB_FORWARD)) + gtk_widget_grab_focus (GTK_WIDGET (notebook)); } - + gtk_notebook_update_tab_states (notebook); gtk_widget_queue_resize (GTK_WIDGET (notebook)); g_object_notify (G_OBJECT (notebook), "page"); @@ -6272,7 +6310,7 @@ gtk_notebook_real_switch_page (GtkNotebook *notebook, */ static void gtk_notebook_switch_page (GtkNotebook *notebook, - GtkNotebookPage *page) + GtkNotebookPage *page) { GtkNotebookPrivate *priv = notebook->priv; guint page_num; @@ -6283,15 +6321,15 @@ gtk_notebook_switch_page (GtkNotebook *notebook, page_num = g_list_index (priv->children, page); g_signal_emit (notebook, - notebook_signals[SWITCH_PAGE], - 0, - page->child, - page_num); + notebook_signals[SWITCH_PAGE], + 0, + page->child, + page_num); } static gint gtk_notebook_page_select (GtkNotebook *notebook, - gboolean move_focus) + gboolean move_focus) { GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page; @@ -6307,20 +6345,20 @@ gtk_notebook_page_select (GtkNotebook *notebook, if (move_focus) { switch (tab_pos) - { - case GTK_POS_TOP: - dir = GTK_DIR_DOWN; - break; - case GTK_POS_BOTTOM: - dir = GTK_DIR_UP; - break; - case GTK_POS_LEFT: - dir = GTK_DIR_RIGHT; - break; - case GTK_POS_RIGHT: - dir = GTK_DIR_LEFT; - break; - } + { + case GTK_POS_TOP: + dir = GTK_DIR_DOWN; + break; + case GTK_POS_BOTTOM: + dir = GTK_DIR_UP; + break; + case GTK_POS_LEFT: + dir = GTK_DIR_RIGHT; + break; + case GTK_POS_RIGHT: + dir = GTK_DIR_LEFT; + break; + } if (gtk_widget_child_focus (page->child, dir)) return TRUE; @@ -6329,8 +6367,8 @@ gtk_notebook_page_select (GtkNotebook *notebook, } static void -gtk_notebook_switch_focus_tab (GtkNotebook *notebook, - GList *new_child) +gtk_notebook_switch_focus_tab (GtkNotebook *notebook, + GList *new_child) { GtkNotebookPrivate *priv = notebook->priv; GList *old_child; @@ -6359,7 +6397,7 @@ gtk_notebook_switch_focus_tab (GtkNotebook *notebook, static void gtk_notebook_menu_switch_page (GtkWidget *widget, - GtkNotebookPage *page) + GtkNotebookPage *page) { GtkNotebookPrivate *priv; GtkNotebook *notebook; @@ -6383,10 +6421,10 @@ gtk_notebook_menu_switch_page (GtkWidget *widget, } g_signal_emit (notebook, - notebook_signals[SWITCH_PAGE], - 0, - page->child, - page_num); + notebook_signals[SWITCH_PAGE], + 0, + page->child, + page_num); } /* Private GtkNotebook Menu Functions: @@ -6396,8 +6434,8 @@ gtk_notebook_menu_switch_page (GtkWidget *widget, * gtk_notebook_menu_detacher */ static void -gtk_notebook_menu_item_create (GtkNotebook *notebook, - GList *list) +gtk_notebook_menu_item_create (GtkNotebook *notebook, + GList *list) { GtkNotebookPrivate *priv = notebook->priv; GtkNotebookPage *page; @@ -6407,9 +6445,9 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook, if (page->default_menu) { if (GTK_IS_LABEL (page->tab_label)) - page->menu_label = gtk_label_new (gtk_label_get_label (GTK_LABEL (page->tab_label))); + page->menu_label = gtk_label_new (gtk_label_get_label (GTK_LABEL (page->tab_label))); else - page->menu_label = gtk_label_new (""); + page->menu_label = gtk_label_new (""); gtk_misc_set_alignment (GTK_MISC (page->menu_label), 0.0, 0.5); } @@ -6417,16 +6455,16 @@ gtk_notebook_menu_item_create (GtkNotebook *notebook, menu_item = gtk_menu_item_new (); gtk_container_add (GTK_CONTAINER (menu_item), page->menu_label); gtk_menu_shell_insert (GTK_MENU_SHELL (priv->menu), menu_item, - gtk_notebook_real_page_position (notebook, list)); + g_list_position (priv->children, list)); g_signal_connect (menu_item, "activate", - G_CALLBACK (gtk_notebook_menu_switch_page), page); + G_CALLBACK (gtk_notebook_menu_switch_page), page); if (gtk_widget_get_visible (page->child)) gtk_widget_show (menu_item); } static void -gtk_notebook_menu_label_unparent (GtkWidget *widget, - gpointer data) +gtk_notebook_menu_label_unparent (GtkWidget *widget, + gpointer data) { gtk_widget_unparent (gtk_bin_get_child (GTK_BIN (widget))); _gtk_bin_set_child (GTK_BIN (widget), NULL); @@ -6434,7 +6472,7 @@ gtk_notebook_menu_label_unparent (GtkWidget *widget, static void gtk_notebook_menu_detacher (GtkWidget *widget, - GtkMenu *menu) + GtkMenu *menu) { GtkNotebook *notebook = GTK_NOTEBOOK (widget); GtkNotebookPrivate *priv = notebook->priv; @@ -6457,168 +6495,168 @@ gtk_notebook_menu_detacher (GtkWidget *widget, /** * gtk_notebook_append_page: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' * * Appends a page to @notebook. * * Return value: the index (starting from 0) of the appended - * page in the notebook, or -1 if function fails - **/ + * page in the notebook, or -1 if function fails + */ gint gtk_notebook_append_page (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label) + GtkWidget *child, + GtkWidget *tab_label) { g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1); g_return_val_if_fail (GTK_IS_WIDGET (child), -1); g_return_val_if_fail (tab_label == NULL || GTK_IS_WIDGET (tab_label), -1); - + return gtk_notebook_insert_page_menu (notebook, child, tab_label, NULL, -1); } /** * gtk_notebook_append_page_menu: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. - * @menu_label: (allow-none): the widget to use as a label for the page-switch - * menu, if that is enabled. If %NULL, and @tab_label - * is a #GtkLabel or %NULL, then the menu label will be - * a newly created label with the same text as @tab_label; - * If @tab_label is not a #GtkLabel, @menu_label must be - * specified if the page-switch menu is to be used. - * + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' + * @menu_label: (allow-none): the widget to use as a label for the + * page-switch menu, if that is enabled. If %NULL, and @tab_label + * is a #GtkLabel or %NULL, then the menu label will be a newly + * created label with the same text as @tab_label; if @tab_label + * is not a #GtkLabel, @menu_label must be specified if the + * page-switch menu is to be used. + * * Appends a page to @notebook, specifying the widget to use as the * label in the popup menu. * * Return value: the index (starting from 0) of the appended - * page in the notebook, or -1 if function fails - **/ + * page in the notebook, or -1 if function fails + */ gint gtk_notebook_append_page_menu (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - GtkWidget *menu_label) + GtkWidget *child, + GtkWidget *tab_label, + GtkWidget *menu_label) { g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1); g_return_val_if_fail (GTK_IS_WIDGET (child), -1); g_return_val_if_fail (tab_label == NULL || GTK_IS_WIDGET (tab_label), -1); g_return_val_if_fail (menu_label == NULL || GTK_IS_WIDGET (menu_label), -1); - + return gtk_notebook_insert_page_menu (notebook, child, tab_label, menu_label, -1); } /** * gtk_notebook_prepend_page: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' * * Prepends a page to @notebook. * * Return value: the index (starting from 0) of the prepended - * page in the notebook, or -1 if function fails - **/ + * page in the notebook, or -1 if function fails + */ gint gtk_notebook_prepend_page (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label) + GtkWidget *child, + GtkWidget *tab_label) { g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1); g_return_val_if_fail (GTK_IS_WIDGET (child), -1); g_return_val_if_fail (tab_label == NULL || GTK_IS_WIDGET (tab_label), -1); - + return gtk_notebook_insert_page_menu (notebook, child, tab_label, NULL, 0); } /** * gtk_notebook_prepend_page_menu: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. - * @menu_label: (allow-none): the widget to use as a label for the page-switch - * menu, if that is enabled. If %NULL, and @tab_label - * is a #GtkLabel or %NULL, then the menu label will be - * a newly created label with the same text as @tab_label; - * If @tab_label is not a #GtkLabel, @menu_label must be - * specified if the page-switch menu is to be used. - * + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' + * @menu_label: (allow-none): the widget to use as a label for the + * page-switch menu, if that is enabled. If %NULL, and @tab_label + * is a #GtkLabel or %NULL, then the menu label will be a newly + * created label with the same text as @tab_label; if @tab_label + * is not a #GtkLabel, @menu_label must be specified if the + * page-switch menu is to be used. + * * Prepends a page to @notebook, specifying the widget to use as the * label in the popup menu. * * Return value: the index (starting from 0) of the prepended - * page in the notebook, or -1 if function fails - **/ + * page in the notebook, or -1 if function fails + */ gint gtk_notebook_prepend_page_menu (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - GtkWidget *menu_label) + GtkWidget *child, + GtkWidget *tab_label, + GtkWidget *menu_label) { g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1); g_return_val_if_fail (GTK_IS_WIDGET (child), -1); g_return_val_if_fail (tab_label == NULL || GTK_IS_WIDGET (tab_label), -1); g_return_val_if_fail (menu_label == NULL || GTK_IS_WIDGET (menu_label), -1); - + return gtk_notebook_insert_page_menu (notebook, child, tab_label, menu_label, 0); } /** * gtk_notebook_insert_page: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' * @position: the index (starting at 0) at which to insert the page, - * or -1 to append the page after all other pages. + * or -1 to append the page after all other pages * * Insert a page into @notebook at the given position. * * Return value: the index (starting from 0) of the inserted - * page in the notebook, or -1 if function fails - **/ + * page in the notebook, or -1 if function fails + */ gint gtk_notebook_insert_page (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - gint position) + GtkWidget *child, + GtkWidget *tab_label, + gint position) { g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1); g_return_val_if_fail (GTK_IS_WIDGET (child), -1); g_return_val_if_fail (tab_label == NULL || GTK_IS_WIDGET (tab_label), -1); - + return gtk_notebook_insert_page_menu (notebook, child, tab_label, NULL, position); } static gint gtk_notebook_page_compare_tab (gconstpointer a, - gconstpointer b) + gconstpointer b) { return (((GtkNotebookPage *) a)->tab_label != b); } static gboolean gtk_notebook_mnemonic_activate_switch_page (GtkWidget *child, - gboolean overload, - gpointer data) + gboolean overload, + gpointer data) { GtkNotebook *notebook = GTK_NOTEBOOK (data); GtkNotebookPrivate *priv = notebook->priv; GList *list; list = g_list_find_custom (priv->children, child, - gtk_notebook_page_compare_tab); + gtk_notebook_page_compare_tab); if (list) { GtkNotebookPage *page = list->data; - gtk_widget_grab_focus (GTK_WIDGET (notebook)); /* Do this first to avoid focusing new page */ + gtk_widget_grab_focus (GTK_WIDGET (notebook)); /* Do this first to avoid focusing new page */ gtk_notebook_switch_page (notebook, page); focus_tabs_in (notebook); } @@ -6629,30 +6667,30 @@ gtk_notebook_mnemonic_activate_switch_page (GtkWidget *child, /** * gtk_notebook_insert_page_menu: * @notebook: a #GtkNotebook - * @child: the #GtkWidget to use as the contents of the page. - * @tab_label: (allow-none): the #GtkWidget to be used as the label for the page, - * or %NULL to use the default label, 'page N'. - * @menu_label: (allow-none): the widget to use as a label for the page-switch - * menu, if that is enabled. If %NULL, and @tab_label - * is a #GtkLabel or %NULL, then the menu label will be - * a newly created label with the same text as @tab_label; - * If @tab_label is not a #GtkLabel, @menu_label must be - * specified if the page-switch menu is to be used. + * @child: the #GtkWidget to use as the contents of the page + * @tab_label: (allow-none): the #GtkWidget to be used as the label + * for the page, or %NULL to use the default label, 'page N' + * @menu_label: (allow-none): the widget to use as a label for the + * page-switch menu, if that is enabled. If %NULL, and @tab_label + * is a #GtkLabel or %NULL, then the menu label will be a newly + * created label with the same text as @tab_label; if @tab_label + * is not a #GtkLabel, @menu_label must be specified if the + * page-switch menu is to be used. * @position: the index (starting at 0) at which to insert the page, - * or -1 to append the page after all other pages. - * + * or -1 to append the page after all other pages. + * * Insert a page into @notebook at the given position, specifying * the widget to use as the label in the popup menu. * * Return value: the index (starting from 0) of the inserted - * page in the notebook - **/ + * page in the notebook + */ gint gtk_notebook_insert_page_menu (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label, - GtkWidget *menu_label, - gint position) + GtkWidget *child, + GtkWidget *tab_label, + GtkWidget *menu_label, + gint position) { GtkNotebookClass *class; @@ -6668,17 +6706,16 @@ gtk_notebook_insert_page_menu (GtkNotebook *notebook, /** * gtk_notebook_remove_page: - * @notebook: a #GtkNotebook. + * @notebook: a #GtkNotebook * @page_num: the index of a notebook page, starting - * from 0. If -1, the last page will - * be removed. - * + * from 0. If -1, the last page will be removed. + * * Removes a page from the notebook given its index * in the notebook. - **/ + */ void gtk_notebook_remove_page (GtkNotebook *notebook, - gint page_num) + gint page_num) { GtkNotebookPrivate *priv; GList *list = NULL; @@ -6694,7 +6731,7 @@ gtk_notebook_remove_page (GtkNotebook *notebook, if (list) gtk_container_remove (GTK_CONTAINER (notebook), - ((GtkNotebookPage *) list->data)->child); + ((GtkNotebookPage *) list->data)->child); } /* Public GtkNotebook Page Switch Methods : @@ -6707,13 +6744,13 @@ gtk_notebook_remove_page (GtkNotebook *notebook, /** * gtk_notebook_get_current_page: * @notebook: a #GtkNotebook - * + * * Returns the page number of the current page. - * + * * Return value: the index (starting from 0) of the current - * page in the notebook. If the notebook has no pages, then - * -1 will be returned. - **/ + * page in the notebook. If the notebook has no pages, + * then -1 will be returned. + */ gint gtk_notebook_get_current_page (GtkNotebook *notebook) { @@ -6733,16 +6770,16 @@ gtk_notebook_get_current_page (GtkNotebook *notebook) * gtk_notebook_get_nth_page: * @notebook: a #GtkNotebook * @page_num: the index of a page in the notebook, or -1 - * to get the last page. - * + * to get the last page + * * Returns the child widget contained in page number @page_num. * - * Return value: (transfer none): the child widget, or %NULL if @page_num is - * out of bounds. - **/ + * Return value: (transfer none): the child widget, or %NULL + * if @page_num is out of bounds + */ GtkWidget* gtk_notebook_get_nth_page (GtkNotebook *notebook, - gint page_num) + gint page_num) { GtkNotebookPrivate *priv; GtkNotebookPage *page; @@ -6769,13 +6806,13 @@ gtk_notebook_get_nth_page (GtkNotebook *notebook, /** * gtk_notebook_get_n_pages: * @notebook: a #GtkNotebook - * + * * Gets the number of pages in a notebook. - * - * Return value: the number of pages in the notebook. + * + * Return value: the number of pages in the notebook * * Since: 2.2 - **/ + */ gint gtk_notebook_get_n_pages (GtkNotebook *notebook) { @@ -6792,16 +6829,16 @@ gtk_notebook_get_n_pages (GtkNotebook *notebook) * gtk_notebook_page_num: * @notebook: a #GtkNotebook * @child: a #GtkWidget - * + * * Finds the index of the page which contains the given child * widget. - * + * * Return value: the index of the page containing @child, or - * -1 if @child is not in the notebook. - **/ + * -1 if @child is not in the notebook + */ gint gtk_notebook_page_num (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GtkNotebookPrivate *priv; GList *children; @@ -6816,9 +6853,9 @@ gtk_notebook_page_num (GtkNotebook *notebook, while (children) { GtkNotebookPage *page = children->data; - + if (page->child == child) - return num; + return num; children = children->next; num++; @@ -6831,20 +6868,20 @@ gtk_notebook_page_num (GtkNotebook *notebook, * gtk_notebook_set_current_page: * @notebook: a #GtkNotebook * @page_num: index of the page to switch to, starting from 0. - * If negative, the last page will be used. If greater - * than the number of pages in the notebook, nothing - * will be done. - * - * Switches to the page number @page_num. + * If negative, the last page will be used. If greater + * than the number of pages in the notebook, nothing + * will be done. + * + * Switches to the page number @page_num. * * Note that due to historical reasons, GtkNotebook refuses - * to switch to a page unless the child widget is visible. + * to switch to a page unless the child widget is visible. * Therefore, it is recommended to show child widgets before - * adding them to a notebook. + * adding them to a notebook. */ void gtk_notebook_set_current_page (GtkNotebook *notebook, - gint page_num) + gint page_num) { GtkNotebookPrivate *priv; GList *list; @@ -6864,10 +6901,10 @@ gtk_notebook_set_current_page (GtkNotebook *notebook, /** * gtk_notebook_next_page: * @notebook: a #GtkNotebook - * + * * Switches to the next page. Nothing happens if the current page is * the last page. - **/ + */ void gtk_notebook_next_page (GtkNotebook *notebook) { @@ -6892,10 +6929,10 @@ gtk_notebook_next_page (GtkNotebook *notebook) /** * gtk_notebook_prev_page: * @notebook: a #GtkNotebook - * + * * Switches to the previous page. Nothing happens if the current page * is the first page. - **/ + */ void gtk_notebook_prev_page (GtkNotebook *notebook) { @@ -6933,15 +6970,15 @@ gtk_notebook_prev_page (GtkNotebook *notebook) /** * gtk_notebook_set_show_border: * @notebook: a #GtkNotebook - * @show_border: %TRUE if a bevel should be drawn around the notebook. - * + * @show_border: %TRUE if a bevel should be drawn around the notebook + * * Sets whether a bevel will be drawn around the notebook pages. * This only has a visual effect when the tabs are not shown. * See gtk_notebook_set_show_tabs(). - **/ + */ void gtk_notebook_set_show_border (GtkNotebook *notebook, - gboolean show_border) + gboolean show_border) { GtkNotebookPrivate *priv; @@ -6954,8 +6991,8 @@ gtk_notebook_set_show_border (GtkNotebook *notebook, priv->show_border = show_border; if (gtk_widget_get_visible (GTK_WIDGET (notebook))) - gtk_widget_queue_resize (GTK_WIDGET (notebook)); - + gtk_widget_queue_resize (GTK_WIDGET (notebook)); + g_object_notify (G_OBJECT (notebook), "show-border"); } } @@ -6964,11 +7001,11 @@ gtk_notebook_set_show_border (GtkNotebook *notebook, * gtk_notebook_get_show_border: * @notebook: a #GtkNotebook * - * Returns whether a bevel will be drawn around the notebook pages. See - * gtk_notebook_set_show_border(). + * Returns whether a bevel will be drawn around the notebook pages. + * See gtk_notebook_set_show_border(). * * Return value: %TRUE if the bevel is drawn - **/ + */ gboolean gtk_notebook_get_show_border (GtkNotebook *notebook) { @@ -6980,13 +7017,13 @@ gtk_notebook_get_show_border (GtkNotebook *notebook) /** * gtk_notebook_set_show_tabs: * @notebook: a #GtkNotebook - * @show_tabs: %TRUE if the tabs should be shown. - * + * @show_tabs: %TRUE if the tabs should be shown + * * Sets whether to show the tabs for the notebook or not. - **/ + */ void gtk_notebook_set_show_tabs (GtkNotebook *notebook, - gboolean show_tabs) + gboolean show_tabs) { GtkNotebookPrivate *priv; GtkNotebookPage *page; @@ -7010,17 +7047,17 @@ gtk_notebook_set_show_tabs (GtkNotebook *notebook, gtk_widget_set_can_focus (GTK_WIDGET (notebook), FALSE); while (children) - { - page = children->data; - children = children->next; - if (page->default_tab) - { - gtk_widget_destroy (page->tab_label); - page->tab_label = NULL; - } - else - gtk_widget_hide (page->tab_label); - } + { + page = children->data; + children = children->next; + if (page->default_tab) + { + gtk_widget_destroy (page->tab_label); + page->tab_label = NULL; + } + else + gtk_widget_hide (page->tab_label); + } } else { @@ -7043,11 +7080,11 @@ gtk_notebook_set_show_tabs (GtkNotebook *notebook, * gtk_notebook_get_show_tabs: * @notebook: a #GtkNotebook * - * Returns whether the tabs of the notebook are shown. See - * gtk_notebook_set_show_tabs(). + * Returns whether the tabs of the notebook are shown. + * See gtk_notebook_set_show_tabs(). * * Return value: %TRUE if the tabs are shown - **/ + */ gboolean gtk_notebook_get_show_tabs (GtkNotebook *notebook) { @@ -7059,14 +7096,14 @@ gtk_notebook_get_show_tabs (GtkNotebook *notebook) /** * gtk_notebook_set_tab_pos: * @notebook: a #GtkNotebook. - * @pos: the edge to draw the tabs at. - * + * @pos: the edge to draw the tabs at + * * Sets the edge at which the tabs for switching pages in the * notebook are drawn. - **/ + */ void gtk_notebook_set_tab_pos (GtkNotebook *notebook, - GtkPositionType pos) + GtkPositionType pos) { GtkNotebookPrivate *priv; @@ -7078,7 +7115,7 @@ gtk_notebook_set_tab_pos (GtkNotebook *notebook, { priv->tab_pos = pos; if (gtk_widget_get_visible (GTK_WIDGET (notebook))) - gtk_widget_queue_resize (GTK_WIDGET (notebook)); + gtk_widget_queue_resize (GTK_WIDGET (notebook)); } g_object_notify (G_OBJECT (notebook), "tab-pos"); @@ -7092,7 +7129,7 @@ gtk_notebook_set_tab_pos (GtkNotebook *notebook, * notebook are drawn. * * Return value: the edge at which the tabs are drawn - **/ + */ GtkPositionType gtk_notebook_get_tab_pos (GtkNotebook *notebook) { @@ -7105,13 +7142,13 @@ gtk_notebook_get_tab_pos (GtkNotebook *notebook) * gtk_notebook_set_scrollable: * @notebook: a #GtkNotebook * @scrollable: %TRUE if scroll arrows should be added - * - * Sets whether the tab label area will have arrows for scrolling if - * there are too many tabs to fit in the area. - **/ + * + * Sets whether the tab label area will have arrows for + * scrolling if there are too many tabs to fit in the area. + */ void gtk_notebook_set_scrollable (GtkNotebook *notebook, - gboolean scrollable) + gboolean scrollable) { GtkNotebookPrivate *priv; @@ -7126,7 +7163,7 @@ gtk_notebook_set_scrollable (GtkNotebook *notebook, priv->scrollable = scrollable; if (gtk_widget_get_visible (GTK_WIDGET (notebook))) - gtk_widget_queue_resize (GTK_WIDGET (notebook)); + gtk_widget_queue_resize (GTK_WIDGET (notebook)); g_object_notify (G_OBJECT (notebook), "scrollable"); } @@ -7136,11 +7173,11 @@ gtk_notebook_set_scrollable (GtkNotebook *notebook, * gtk_notebook_get_scrollable: * @notebook: a #GtkNotebook * - * Returns whether the tab label area has arrows for scrolling. See - * gtk_notebook_set_scrollable(). + * Returns whether the tab label area has arrows for scrolling. + * See gtk_notebook_set_scrollable(). * * Return value: %TRUE if arrows for scrolling are present - **/ + */ gboolean gtk_notebook_get_scrollable (GtkNotebook *notebook) { @@ -7196,10 +7233,11 @@ gtk_notebook_get_tab_vborder (GtkNotebook *notebook) /** * gtk_notebook_popup_enable: * @notebook: a #GtkNotebook - * - * Enables the popup menu: if the user clicks with the right mouse button on - * the tab labels, a menu with all the pages will be popped up. - **/ + * + * Enables the popup menu: if the user clicks with the right + * mouse button on the tab labels, a menu with all the pages + * will be popped up. + */ void gtk_notebook_popup_enable (GtkNotebook *notebook) { @@ -7221,8 +7259,8 @@ gtk_notebook_popup_enable (GtkNotebook *notebook) gtk_notebook_update_labels (notebook); gtk_menu_attach_to_widget (GTK_MENU (priv->menu), - GTK_WIDGET (notebook), - gtk_notebook_menu_detacher); + GTK_WIDGET (notebook), + gtk_notebook_menu_detacher); g_object_notify (G_OBJECT (notebook), "enable-popup"); } @@ -7230,10 +7268,10 @@ gtk_notebook_popup_enable (GtkNotebook *notebook) /** * gtk_notebook_popup_disable: * @notebook: a #GtkNotebook - * + * * Disables the popup menu. - **/ -void + */ +void gtk_notebook_popup_disable (GtkNotebook *notebook) { GtkNotebookPrivate *priv; @@ -7246,7 +7284,7 @@ gtk_notebook_popup_disable (GtkNotebook *notebook) return; gtk_container_foreach (GTK_CONTAINER (priv->menu), - (GtkCallback) gtk_notebook_menu_label_unparent, NULL); + (GtkCallback) gtk_notebook_menu_label_unparent, NULL); gtk_widget_destroy (priv->menu); g_object_notify (G_OBJECT (notebook), "enable-popup"); @@ -7270,16 +7308,16 @@ gtk_notebook_popup_disable (GtkNotebook *notebook) * gtk_notebook_get_tab_label: * @notebook: a #GtkNotebook * @child: the page - * - * Returns the tab label widget for the page @child. %NULL is returned - * if @child is not in @notebook or if no tab label has specifically - * been set for @child. + * + * Returns the tab label widget for the page @child. + * %NULL is returned if @child is not in @notebook or + * if no tab label has specifically been set for @child. * * Return value: (transfer none): the tab label - **/ + */ GtkWidget * gtk_notebook_get_tab_label (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GList *list; @@ -7287,29 +7325,30 @@ gtk_notebook_get_tab_label (GtkNotebook *notebook, g_return_val_if_fail (GTK_IS_WIDGET (child), NULL); list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return NULL; if (GTK_NOTEBOOK_PAGE (list)->default_tab) return NULL; return GTK_NOTEBOOK_PAGE (list)->tab_label; -} +} /** * gtk_notebook_set_tab_label: * @notebook: a #GtkNotebook * @child: the page - * @tab_label: (allow-none): the tab label widget to use, or %NULL for default tab - * label. + * @tab_label: (allow-none): the tab label widget to use, or %NULL + * for default tab label * - * Changes the tab label for @child. If %NULL is specified - * for @tab_label, then the page will have the label 'page N'. - **/ + * Changes the tab label for @child. + * If %NULL is specified for @tab_label, then the page will + * have the label 'page N'. + */ void gtk_notebook_set_tab_label (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *tab_label) + GtkWidget *child, + GtkWidget *tab_label) { GtkNotebookPrivate *priv; GtkNotebookPage *page; @@ -7321,20 +7360,20 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, priv = notebook->priv; list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return; /* a NULL pointer indicates a default_tab setting, otherwise * we need to set the associated label */ page = list->data; - + if (page->tab_label == tab_label) return; - + gtk_notebook_remove_tab_label (notebook, page); - + if (tab_label) { page->default_tab = FALSE; @@ -7347,22 +7386,22 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, page->tab_label = NULL; if (priv->show_tabs) - { - gchar string[32]; + { + gchar string[32]; - g_snprintf (string, sizeof(string), _("Page %u"), - gtk_notebook_real_page_position (notebook, list)); - page->tab_label = gtk_label_new (string); - gtk_widget_set_parent (page->tab_label, GTK_WIDGET (notebook)); - } + g_snprintf (string, sizeof(string), _("Page %u"), + g_list_position (priv->children, list)); + page->tab_label = gtk_label_new (string); + gtk_widget_set_parent (page->tab_label, GTK_WIDGET (notebook)); + } } if (page->tab_label) page->mnemonic_activate_signal = g_signal_connect (page->tab_label, - "mnemonic-activate", - G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page), - notebook); + "mnemonic-activate", + G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page), + notebook); if (priv->show_tabs && gtk_widget_get_visible (child)) { @@ -7379,14 +7418,14 @@ gtk_notebook_set_tab_label (GtkNotebook *notebook, * @notebook: a #GtkNotebook * @child: the page * @tab_text: the label text - * + * * Creates a new label and sets it as the tab label for the page * containing @child. - **/ + */ void gtk_notebook_set_tab_label_text (GtkNotebook *notebook, - GtkWidget *child, - const gchar *tab_text) + GtkWidget *child, + const gchar *tab_text) { GtkWidget *tab_label = NULL; @@ -7404,16 +7443,15 @@ gtk_notebook_set_tab_label_text (GtkNotebook *notebook, * @child: a widget contained in a page of @notebook * * Retrieves the text of the tab label for the page containing - * @child. + * @child. * * Return value: the text of the tab label, or %NULL if the - * tab label widget is not a #GtkLabel. The - * string is owned by the widget and must not - * be freed. - **/ + * tab label widget is not a #GtkLabel. The string is owned + * by the widget and must not be freed. + */ G_CONST_RETURN gchar * gtk_notebook_get_tab_label_text (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GtkWidget *tab_label; @@ -7438,10 +7476,10 @@ gtk_notebook_get_tab_label_text (GtkNotebook *notebook, * Return value: (transfer none): the menu label, or %NULL if the * notebook page does not have a menu label other than the * default (the tab label). - **/ + */ GtkWidget* gtk_notebook_get_menu_label (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GList *list; @@ -7462,14 +7500,14 @@ gtk_notebook_get_menu_label (GtkNotebook *notebook, * gtk_notebook_set_menu_label: * @notebook: a #GtkNotebook * @child: the child widget - * @menu_label: (allow-none): the menu label, or NULL for default + * @menu_label: (allow-none): the menu label, or %NULL for default * * Changes the menu label for the page containing @child. - **/ + */ void gtk_notebook_set_menu_label (GtkNotebook *notebook, - GtkWidget *child, - GtkWidget *menu_label) + GtkWidget *child, + GtkWidget *menu_label) { GtkNotebookPrivate *priv; GtkNotebookPage *page; @@ -7481,18 +7519,18 @@ gtk_notebook_set_menu_label (GtkNotebook *notebook, priv = notebook->priv; list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return; page = list->data; if (page->menu_label) { if (priv->menu) - gtk_container_remove (GTK_CONTAINER (priv->menu), + gtk_container_remove (GTK_CONTAINER (priv->menu), gtk_widget_get_parent (page->menu_label)); if (!page->default_menu) - g_object_unref (page->menu_label); + g_object_unref (page->menu_label); } if (menu_label) @@ -7514,13 +7552,13 @@ gtk_notebook_set_menu_label (GtkNotebook *notebook, * @notebook: a #GtkNotebook * @child: the child widget * @menu_text: the label text - * + * * Creates a new label and sets it as the menu label of @child. - **/ + */ void gtk_notebook_set_menu_label_text (GtkNotebook *notebook, - GtkWidget *child, - const gchar *menu_text) + GtkWidget *child, + const gchar *menu_text) { GtkWidget *menu_label = NULL; @@ -7541,23 +7579,22 @@ gtk_notebook_set_menu_label_text (GtkNotebook *notebook, * @child: the child widget of a page of the notebook. * * Retrieves the text of the menu label for the page containing - * @child. + * @child. * * Return value: the text of the tab label, or %NULL if the - * widget does not have a menu label other than - * the default menu label, or the menu label widget - * is not a #GtkLabel. The string is owned by - * the widget and must not be freed. - **/ + * widget does not have a menu label other than the default + * menu label, or the menu label widget is not a #GtkLabel. + * The string is owned by the widget and must not be freed. + */ G_CONST_RETURN gchar * gtk_notebook_get_menu_label_text (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GtkWidget *menu_label; g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), NULL); g_return_val_if_fail (GTK_IS_WIDGET (child), NULL); - + menu_label = gtk_notebook_get_menu_label (notebook, child); if (GTK_IS_LABEL (menu_label)) @@ -7565,12 +7602,12 @@ gtk_notebook_get_menu_label_text (GtkNotebook *notebook, else return NULL; } - + /* Helper function called when pages are reordered */ static void gtk_notebook_child_reordered (GtkNotebook *notebook, - GtkNotebookPage *page) + GtkNotebookPage *page) { GtkNotebookPrivate *priv = notebook->priv; @@ -7592,8 +7629,7 @@ static void gtk_notebook_set_tab_label_packing (GtkNotebook *notebook, GtkWidget *child, gboolean expand, - gboolean fill, - GtkPackType pack_type) + gboolean fill) { GtkNotebookPrivate *priv; GtkNotebookPage *page; @@ -7605,13 +7641,13 @@ gtk_notebook_set_tab_label_packing (GtkNotebook *notebook, priv = notebook->priv; list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return; page = list->data; expand = expand != FALSE; fill = fill != FALSE; - if (page->pack == pack_type && page->expand == expand && page->fill == fill) + if (page->expand == expand && page->fill == fill) return; gtk_widget_freeze_child_notify (child); @@ -7619,24 +7655,17 @@ gtk_notebook_set_tab_label_packing (GtkNotebook *notebook, gtk_widget_child_notify (child, "tab-expand"); page->fill = fill; gtk_widget_child_notify (child, "tab-fill"); - if (page->pack != pack_type) - { - page->pack = pack_type; - gtk_notebook_child_reordered (notebook, page); - } - gtk_widget_child_notify (child, "tab-pack"); gtk_widget_child_notify (child, "position"); if (priv->show_tabs) gtk_notebook_pages_allocate (notebook); gtk_widget_thaw_child_notify (child); -} +} static void gtk_notebook_query_tab_label_packing (GtkNotebook *notebook, GtkWidget *child, gboolean *expand, - gboolean *fill, - GtkPackType *pack_type) + gboolean *fill) { GList *list; @@ -7651,8 +7680,6 @@ gtk_notebook_query_tab_label_packing (GtkNotebook *notebook, *expand = GTK_NOTEBOOK_PAGE (list)->expand; if (fill) *fill = GTK_NOTEBOOK_PAGE (list)->fill; - if (pack_type) - *pack_type = GTK_NOTEBOOK_PAGE (list)->pack; } /** @@ -7660,16 +7687,16 @@ gtk_notebook_query_tab_label_packing (GtkNotebook *notebook, * @notebook: a #GtkNotebook * @child: the child to move * @position: the new position, or -1 to move to the end - * + * * Reorders the page containing @child, so that it appears in position * @position. If @position is greater than or equal to the number of * children in the list or negative, @child will be moved to the end * of the list. - **/ + */ void gtk_notebook_reorder_child (GtkNotebook *notebook, - GtkWidget *child, - gint position) + GtkWidget *child, + gint position) { GtkNotebookPrivate *priv; GList *list, *new_list; @@ -7711,7 +7738,6 @@ gtk_notebook_reorder_child (GtkNotebook *notebook, /* Move around the menu items if necessary */ gtk_notebook_child_reordered (notebook, page); - gtk_widget_child_notify (child, "tab-pack"); gtk_widget_child_notify (child, "position"); if (priv->show_tabs) @@ -7720,10 +7746,10 @@ gtk_notebook_reorder_child (GtkNotebook *notebook, gtk_widget_thaw_child_notify (child); g_signal_emit (notebook, - notebook_signals[PAGE_REORDERED], - 0, - child, - position); + notebook_signals[PAGE_REORDERED], + 0, + child, + position); } /** @@ -7770,7 +7796,7 @@ gtk_notebook_set_group_name (GtkNotebook *notebook, * or %NULL if none is set. * * Since: 2.24 - **/ + */ const gchar * gtk_notebook_get_group_name (GtkNotebook *notebook) { @@ -7783,16 +7809,16 @@ gtk_notebook_get_group_name (GtkNotebook *notebook) * gtk_notebook_get_tab_reorderable: * @notebook: a #GtkNotebook * @child: a child #GtkWidget - * + * * Gets whether the tab can be reordered via drag and drop or not. - * + * * Return Value: %TRUE if the tab is reorderable. - * + * * Since: 2.10 - **/ + */ gboolean gtk_notebook_get_tab_reorderable (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GList *list; @@ -7800,7 +7826,7 @@ gtk_notebook_get_tab_reorderable (GtkNotebook *notebook, g_return_val_if_fail (GTK_IS_WIDGET (child), FALSE); list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return FALSE; return GTK_NOTEBOOK_PAGE (list)->reorderable; @@ -7810,17 +7836,17 @@ gtk_notebook_get_tab_reorderable (GtkNotebook *notebook, * gtk_notebook_set_tab_reorderable: * @notebook: a #GtkNotebook * @child: a child #GtkWidget - * @reorderable: whether the tab is reorderable or not. + * @reorderable: whether the tab is reorderable or not * * Sets whether the notebook tab can be reordered * via drag and drop or not. - * + * * Since: 2.10 - **/ + */ void gtk_notebook_set_tab_reorderable (GtkNotebook *notebook, - GtkWidget *child, - gboolean reorderable) + GtkWidget *child, + gboolean reorderable) { GList *list; @@ -7828,7 +7854,7 @@ gtk_notebook_set_tab_reorderable (GtkNotebook *notebook, g_return_if_fail (GTK_IS_WIDGET (child)); list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return; if (GTK_NOTEBOOK_PAGE (list)->reorderable != reorderable) @@ -7842,16 +7868,16 @@ gtk_notebook_set_tab_reorderable (GtkNotebook *notebook, * gtk_notebook_get_tab_detachable: * @notebook: a #GtkNotebook * @child: a child #GtkWidget - * + * * Returns whether the tab contents can be detached from @notebook. - * - * Return Value: TRUE if the tab is detachable. + * + * Return Value: %TRUE if the tab is detachable. * * Since: 2.10 - **/ + */ gboolean gtk_notebook_get_tab_detachable (GtkNotebook *notebook, - GtkWidget *child) + GtkWidget *child) { GList *list; @@ -7859,7 +7885,7 @@ gtk_notebook_get_tab_detachable (GtkNotebook *notebook, g_return_val_if_fail (GTK_IS_WIDGET (child), FALSE); list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return FALSE; return GTK_NOTEBOOK_PAGE (list)->detachable; @@ -7875,7 +7901,7 @@ gtk_notebook_get_tab_detachable (GtkNotebook *notebook, * notebook or widget. * * Note that 2 notebooks must share a common group identificator - * (see gtk_notebook_set_group()) to allow automatic tabs + * (see gtk_notebook_set_group_name()) to allow automatic tabs * interchange between them. * * If you want a widget to interact with a notebook through DnD @@ -7896,10 +7922,10 @@ gtk_notebook_get_tab_detachable (GtkNotebook *notebook, * { * GtkWidget *notebook; * GtkWidget **child; - * + * * notebook = gtk_drag_get_source_widget (context); - * child = (void*) selection_data->data; - * + * child = (void*) gtk_selection_data_get_data (selection_data); + * * process_widget (*child); * gtk_container_remove (GTK_CONTAINER (notebook), *child); * } @@ -7909,11 +7935,11 @@ gtk_notebook_get_tab_detachable (GtkNotebook *notebook, * you will have to set your own DnD code to do it. * * Since: 2.10 - **/ + */ void gtk_notebook_set_tab_detachable (GtkNotebook *notebook, - GtkWidget *child, - gboolean detachable) + GtkWidget *child, + gboolean detachable) { GList *list; @@ -7921,7 +7947,7 @@ gtk_notebook_set_tab_detachable (GtkNotebook *notebook, g_return_if_fail (GTK_IS_WIDGET (child)); list = CHECK_FIND_CHILD (notebook, child); - if (!list) + if (!list) return; if (GTK_NOTEBOOK_PAGE (list)->detachable != detachable) @@ -7969,7 +7995,7 @@ gtk_notebook_get_action_widget (GtkNotebook *notebook, */ void gtk_notebook_set_action_widget (GtkNotebook *notebook, - GtkWidget *widget, + GtkWidget *widget, GtkPackType pack_type) { GtkNotebookPrivate *priv; diff --git a/gtk/gtknumerableicon.c b/gtk/gtknumerableicon.c new file mode 100644 index 0000000000..2522102b10 --- /dev/null +++ b/gtk/gtknumerableicon.c @@ -0,0 +1,1048 @@ +/* + * gtknumerableicon.c: an emblemed icon with number emblems + * + * Copyright (C) 2010 Red Hat, Inc. + * + * 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 the Gnome Library; see the file COPYING.LIB. If not, + * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: Cosimo Cecchi + */ + +/** + * SECTION:gtknumerableicon + * @Title: GtkNumerableIcon + * @Short_description: A GIcon that allows numbered emblems + * + * GtkNumerableIcon is a subclass of #GEmblemedIcon that can + * show a number or short string as an emblem. The number can + * be overlayed on top of another emblem, if desired. + * + * It supports theming by taking font and color information + * from a provided #GtkStyleContext; see + * gtk_numerable_icon_set_style_context(). + * + * + * Typical numerable icons + * + * + * + */ +#include + +#include "gtknumerableicon.h" + +#include "gtkicontheme.h" +#include "gtkintl.h" +#include "gtkwidget.h" +#include "gtkwindow.h" + +#include +#include +#include + +struct _GtkNumerableIconPrivate { + gint count; + gchar *label; + + GIcon *background_icon; + gchar *background_icon_name; + gint icon_size; + + GdkRGBA *background; + GdkRGBA *foreground; + + PangoFontDescription *font; + cairo_pattern_t *background_image; + gint border_size; + + GtkStyleContext *style; + gulong style_changed_id; + + gchar *rendered_string; +}; + +enum { + PROP_COUNT = 1, + PROP_LABEL, + PROP_STYLE, + PROP_BACKGROUND_ICON, + PROP_BACKGROUND_ICON_NAME, + NUM_PROPERTIES +}; + +#define DEFAULT_SURFACE_SIZE 256 +#define DEFAULT_BORDER_SIZE DEFAULT_SURFACE_SIZE * 0.06 +#define DEFAULT_RADIUS DEFAULT_SURFACE_SIZE / 2 + +#define DEFAULT_BACKGROUND "#000000" +#define DEFAULT_FOREGROUND "#ffffff" + +static GParamSpec *properties[NUM_PROPERTIES] = { NULL, }; + +G_DEFINE_TYPE (GtkNumerableIcon, gtk_numerable_icon, G_TYPE_EMBLEMED_ICON); + +static gint +get_surface_size (cairo_surface_t *surface) +{ + return MAX (cairo_image_surface_get_width (surface), cairo_image_surface_get_height (surface)); +} + +static gdouble +get_border_size (GtkNumerableIcon *self) +{ + return self->priv->border_size; +} + +static cairo_surface_t * +draw_default_surface (GtkNumerableIcon *self) +{ + cairo_surface_t *surface; + cairo_t *cr; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + DEFAULT_SURFACE_SIZE, DEFAULT_SURFACE_SIZE); + + cr = cairo_create (surface); + + cairo_arc (cr, DEFAULT_SURFACE_SIZE / 2., DEFAULT_SURFACE_SIZE / 2., + DEFAULT_RADIUS, 0., 2 * G_PI); + + gdk_cairo_set_source_rgba (cr, self->priv->background); + cairo_fill (cr); + + cairo_arc (cr, DEFAULT_SURFACE_SIZE / 2., DEFAULT_SURFACE_SIZE / 2., + DEFAULT_RADIUS - DEFAULT_BORDER_SIZE, 0., 2 * G_PI); + gdk_cairo_set_source_rgba (cr, self->priv->foreground); + cairo_fill (cr); + + cairo_arc (cr, DEFAULT_SURFACE_SIZE / 2., DEFAULT_SURFACE_SIZE / 2., + DEFAULT_RADIUS - 2 * DEFAULT_BORDER_SIZE, 0., 2 * G_PI); + gdk_cairo_set_source_rgba (cr, self->priv->background); + cairo_fill (cr); + + cairo_destroy (cr); + + return surface; +} + +static cairo_surface_t * +draw_from_gradient (cairo_pattern_t *pattern) +{ + cairo_surface_t *surface; + cairo_matrix_t matrix; + cairo_t *cr; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + DEFAULT_SURFACE_SIZE, DEFAULT_SURFACE_SIZE); + + cr = cairo_create (surface); + + /* scale the gradient points to the user space coordinates */ + cairo_matrix_init_scale (&matrix, + 1. / (double) DEFAULT_SURFACE_SIZE, + 1. / (double) DEFAULT_SURFACE_SIZE); + cairo_pattern_set_matrix (pattern, &matrix); + + cairo_arc (cr, DEFAULT_SURFACE_SIZE / 2., DEFAULT_SURFACE_SIZE / 2., + DEFAULT_RADIUS, 0., 2 * G_PI); + + cairo_set_source (cr, pattern); + cairo_fill (cr); + + cairo_destroy (cr); + + return surface; +} + +/* copy the surface */ +static cairo_surface_t * +draw_from_image (cairo_surface_t *image) +{ + cairo_surface_t *surface; + cairo_t *cr; + + surface = cairo_surface_create_similar (image, CAIRO_CONTENT_COLOR_ALPHA, + cairo_image_surface_get_width (image), + cairo_image_surface_get_height (image)); + cr = cairo_create (surface); + + cairo_set_source_surface (cr, image, 0, 0); + cairo_paint (cr); + + cairo_destroy (cr); + + return surface; +} + +static cairo_surface_t * +draw_from_gicon (GtkNumerableIcon *self) +{ + GtkIconTheme *theme; + GdkScreen *screen; + GtkIconInfo *info; + GdkPixbuf *pixbuf; + cairo_surface_t *surface; + cairo_t *cr; + + if (self->priv->style != NULL) + { + screen = gtk_style_context_get_screen (self->priv->style); + theme = gtk_icon_theme_get_for_screen (screen); + } + else + { + theme = gtk_icon_theme_get_default (); + } + + info = gtk_icon_theme_lookup_by_gicon (theme, self->priv->background_icon, + self->priv->icon_size, + GTK_ICON_LOOKUP_GENERIC_FALLBACK); + if (info == NULL) + return NULL; + + pixbuf = gtk_icon_info_load_icon (info, NULL); + gtk_icon_info_free (info); + + if (pixbuf == NULL) + return NULL; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf)); + + cr = cairo_create (surface); + + gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); + cairo_paint (cr); + + cairo_destroy (cr); + g_object_unref (pixbuf); + + return surface; +} + +static cairo_surface_t * +get_image_surface (GtkNumerableIcon *self) +{ + cairo_surface_t *retval = NULL, *image; + + if (self->priv->background_icon != NULL) + { + retval = draw_from_gicon (self); + self->priv->border_size = 0; + } + else if (self->priv->background_image != NULL) + { + if (cairo_pattern_get_surface (self->priv->background_image, &image) == CAIRO_STATUS_SUCCESS) + retval = draw_from_image (image); + else + retval = draw_from_gradient (self->priv->background_image); + + self->priv->border_size = 0; + } + + if (retval == NULL) + { + retval = draw_default_surface (self); + self->priv->border_size = DEFAULT_BORDER_SIZE; + } + + return retval; +} + +static PangoLayout * +get_pango_layout (GtkNumerableIcon *self) +{ + PangoContext *context; + GdkScreen *screen; + PangoLayout *layout; + + if (self->priv->style != NULL) + { + screen = gtk_style_context_get_screen (self->priv->style); + context = gdk_pango_context_get_for_screen (screen); + layout = pango_layout_new (context); + + if (self->priv->font != NULL) + pango_layout_set_font_description (layout, self->priv->font); + + pango_layout_set_text (layout, self->priv->rendered_string, -1); + + g_object_unref (context); + } + else + { + GtkWidget *fake; + + /* steal gtk text settings from the window */ + fake = gtk_window_new (GTK_WINDOW_TOPLEVEL); + layout = gtk_widget_create_pango_layout (fake, self->priv->rendered_string); + gtk_widget_destroy (fake); + } + + return layout; +} + +static void +gtk_numerable_icon_ensure_emblem (GtkNumerableIcon *self) +{ + cairo_t *cr; + cairo_surface_t *surface; + PangoLayout *layout; + GEmblem *emblem; + gint width, height; + gdouble scale; + PangoAttrList *attr_list; + PangoAttribute *attr; + GdkPixbuf *pixbuf; + + /* don't draw anything if the count is zero */ + if (self->priv->rendered_string == NULL) + { + g_emblemed_icon_clear_emblems (G_EMBLEMED_ICON (self)); + return; + } + + surface = get_image_surface (self); + cr = cairo_create (surface); + + layout = get_pango_layout (self); + pango_layout_get_pixel_size (layout, &width, &height); + + /* scale the layout to be 0.75 of the size still available for drawing */ + scale = ((get_surface_size (surface) - 2 * get_border_size (self)) * 0.75) / (MAX (height, width)); + attr_list = pango_attr_list_new (); + + attr = pango_attr_scale_new (scale); + pango_attr_list_insert (attr_list, attr); + + attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); + pango_attr_list_insert (attr_list, attr); + + pango_layout_set_attributes (layout, attr_list); + + /* update these values */ + pango_layout_get_pixel_size (layout, &width, &height); + + /* move to the center */ + cairo_move_to (cr, + get_surface_size (surface) / 2. - (gdouble) width / 2., + get_surface_size (surface) / 2. - (gdouble) height / 2.); + + gdk_cairo_set_source_rgba (cr, self->priv->foreground); + pango_cairo_show_layout (cr, layout); + + cairo_destroy (cr); + + pixbuf = + gdk_pixbuf_get_from_surface (surface, 0, 0, + get_surface_size (surface), get_surface_size (surface)); + + emblem = g_emblem_new (G_ICON (pixbuf)); + g_emblemed_icon_clear_emblems (G_EMBLEMED_ICON (self)); + g_emblemed_icon_add_emblem (G_EMBLEMED_ICON (self), emblem); + + g_object_unref (layout); + g_object_unref (emblem); + g_object_unref (pixbuf); + + cairo_surface_destroy (surface); + pango_attr_list_unref (attr_list); +} + +static void +gtk_numerable_icon_update_properties_from_style (GtkNumerableIcon *self) +{ + GtkStyleContext *style = self->priv->style; + GtkWidgetPath *path, *saved; + cairo_pattern_t *pattern = NULL; + GdkRGBA background, foreground; + PangoFontDescription *font = NULL; + + /* save an unmodified copy of the original widget path, in order + * to restore it later */ + path = gtk_widget_path_copy (gtk_style_context_get_path (style)); + saved = gtk_widget_path_copy (path); + + if (!gtk_widget_path_is_type (path, GTK_TYPE_NUMERABLE_ICON)) + { + /* append our GType to the style context to fetch appropriate colors */ + gtk_widget_path_append_type (path, GTK_TYPE_NUMERABLE_ICON); + gtk_style_context_set_path (style, path); + } + + gtk_style_context_get_background_color (style, gtk_style_context_get_state (style), + &background); + gtk_style_context_get_color (style, gtk_style_context_get_state (style), + &foreground); + + if (self->priv->background != NULL) + gdk_rgba_free (self->priv->background); + + self->priv->background = gdk_rgba_copy (&background); + + if (self->priv->foreground != NULL) + gdk_rgba_free (self->priv->foreground); + + self->priv->foreground = gdk_rgba_copy (&foreground); + + gtk_style_context_get (style, gtk_style_context_get_state (style), + GTK_STYLE_PROPERTY_BACKGROUND_IMAGE, &pattern, + NULL); + + if (pattern != NULL) + { + if (self->priv->background_image != NULL) + cairo_pattern_destroy (self->priv->background_image); + + self->priv->background_image = pattern; + } + + gtk_style_context_get (style, gtk_style_context_get_state (style), + GTK_STYLE_PROPERTY_FONT, &font, + NULL); + + if (font != NULL) + { + if (self->priv->font != NULL) + pango_font_description_free (self->priv->font); + + self->priv->font = font; + } + + gtk_numerable_icon_ensure_emblem (self); + + /* restore original widget path */ + gtk_style_context_set_path (style, saved); + + gtk_widget_path_free (path); + gtk_widget_path_free (saved); +} + +static void +gtk_numerable_icon_init_style (GtkNumerableIcon *self) +{ + GtkStyleContext *style = self->priv->style; + + if (style == NULL) + return; + + gtk_numerable_icon_update_properties_from_style (self); + + self->priv->style_changed_id = + g_signal_connect_swapped (style, "changed", + G_CALLBACK (gtk_numerable_icon_update_properties_from_style), self); +} + +static void +gtk_numerable_icon_ensure_and_replace_label (GtkNumerableIcon *self, + gint count, + const gchar *label) +{ + g_assert (!(label != NULL && count != 0)); + + g_free (self->priv->rendered_string); + self->priv->rendered_string = NULL; + + if (count != 0) + { + if (self->priv->label != NULL) + { + g_free (self->priv->label); + self->priv->label = NULL; + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LABEL]); + } + + if (count > 99) + count = 99; + + if (count < -99) + count = -99; + + self->priv->count = count; + + /* Translators: the format here is used to build the string that will be rendered + * in the number emblem. + */ + self->priv->rendered_string = g_strdup_printf (C_("Number format", "%d"), count); + + return; + } + + if (label != NULL) + { + if (self->priv->count != 0) + { + self->priv->count = 0; + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COUNT]); + } + + g_free (self->priv->label); + + if (g_strcmp0 (label, "") == 0) + { + self->priv->label = NULL; + return; + } + + self->priv->label = g_strdup (label); + self->priv->rendered_string = g_strdup (label); + } +} + +static gboolean +real_set_background_icon (GtkNumerableIcon *self, + GIcon *icon) +{ + if (!g_icon_equal (self->priv->background_icon, icon)) + { + g_clear_object (&self->priv->background_icon); + + if (icon != NULL) + self->priv->background_icon = g_object_ref (icon); + + gtk_numerable_icon_ensure_emblem (self); + + return TRUE; + } + + return FALSE; +} + +static void +gtk_numerable_icon_constructed (GObject *object) +{ + GtkNumerableIcon *self = GTK_NUMERABLE_ICON (object); + + if (G_OBJECT_CLASS (gtk_numerable_icon_parent_class)->constructed != NULL) + G_OBJECT_CLASS (gtk_numerable_icon_parent_class)->constructed (object); + + gtk_numerable_icon_ensure_emblem (self); +} + +static void +gtk_numerable_icon_finalize (GObject *object) +{ + GtkNumerableIcon *self = GTK_NUMERABLE_ICON (object); + + g_free (self->priv->label); + g_free (self->priv->rendered_string); + + gdk_rgba_free (self->priv->background); + gdk_rgba_free (self->priv->foreground); + + pango_font_description_free (self->priv->font); + + cairo_pattern_destroy (self->priv->background_image); + + G_OBJECT_CLASS (gtk_numerable_icon_parent_class)->finalize (object); +} + +static void +gtk_numerable_icon_dispose (GObject *object) +{ + GtkNumerableIcon *self = GTK_NUMERABLE_ICON (object); + + if (self->priv->style_changed_id != 0) + { + g_signal_handler_disconnect (self->priv->style, + self->priv->style_changed_id); + self->priv->style_changed_id = 0; + } + + g_clear_object (&self->priv->style); + g_clear_object (&self->priv->background_icon); + + G_OBJECT_CLASS (gtk_numerable_icon_parent_class)->dispose (object); +} + +static void +gtk_numerable_icon_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkNumerableIcon *self = GTK_NUMERABLE_ICON (object); + + switch (property_id) + { + case PROP_COUNT: + gtk_numerable_icon_set_count (self, g_value_get_int (value)); + break; + case PROP_LABEL: + gtk_numerable_icon_set_label (self, g_value_get_string (value)); + break; + case PROP_STYLE: + gtk_numerable_icon_set_style_context (self, g_value_get_object (value)); + break; + case PROP_BACKGROUND_ICON: + gtk_numerable_icon_set_background_gicon (self, g_value_get_object (value)); + break; + case PROP_BACKGROUND_ICON_NAME: + gtk_numerable_icon_set_background_icon_name (self, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gtk_numerable_icon_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + GtkNumerableIcon *self = GTK_NUMERABLE_ICON (object); + + switch (property_id) + { + case PROP_COUNT: + g_value_set_int (value, self->priv->count); + break; + case PROP_LABEL: + g_value_set_string (value, self->priv->label); + break; + case PROP_STYLE: + g_value_set_object (value, self->priv->style); + break; + case PROP_BACKGROUND_ICON: + if (self->priv->background_icon != NULL) + g_value_set_object (value, self->priv->background_icon); + break; + case PROP_BACKGROUND_ICON_NAME: + g_value_set_string (value, self->priv->background_icon_name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +gtk_numerable_icon_class_init (GtkNumerableIconClass *klass) +{ + GObjectClass *oclass = G_OBJECT_CLASS (klass); + + oclass->get_property = gtk_numerable_icon_get_property; + oclass->set_property = gtk_numerable_icon_set_property; + oclass->constructed = gtk_numerable_icon_constructed; + oclass->dispose = gtk_numerable_icon_dispose; + oclass->finalize = gtk_numerable_icon_finalize; + + g_type_class_add_private (klass, sizeof (GtkNumerableIconPrivate)); + + properties[PROP_COUNT] = + g_param_spec_int ("count", + P_("Icon's count"), + P_("The count of the emblem currently displayed"), + -99, 99, 0, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + properties[PROP_LABEL] = + g_param_spec_string ("label", + P_("Icon's label"), + P_("The label to be displayed over the icon"), + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + properties[PROP_STYLE] = + g_param_spec_object ("style-context", + P_("Icon's style context"), + P_("The style context to theme the icon appearance"), + GTK_TYPE_STYLE_CONTEXT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + properties[PROP_BACKGROUND_ICON] = + g_param_spec_object ("background-icon", + P_("Background icon"), + P_("The icon for the number emblem background"), + G_TYPE_ICON, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + properties[PROP_BACKGROUND_ICON_NAME] = + g_param_spec_string ("background-icon-name", + P_("Background icon name"), + P_("The icon name for the number emblem background"), + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); +} + +static void +gtk_numerable_icon_init (GtkNumerableIcon *self) +{ + GdkRGBA bg; + GdkRGBA fg; + + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + GTK_TYPE_NUMERABLE_ICON, + GtkNumerableIconPrivate); + + gdk_rgba_parse (&bg, DEFAULT_BACKGROUND); + gdk_rgba_parse (&fg, DEFAULT_FOREGROUND); + + self->priv->background = gdk_rgba_copy (&bg); + self->priv->foreground = gdk_rgba_copy (&fg); + + self->priv->icon_size = 48; +} + +/* private */ +void +_gtk_numerable_icon_set_background_icon_size (GtkNumerableIcon *self, + gint icon_size) +{ + if (self->priv->background_icon == NULL) + return; + + if (self->priv->icon_size != icon_size) + { + self->priv->icon_size = icon_size; + gtk_numerable_icon_ensure_emblem (self); + } +} + +/** + * gtk_numerable_icon_get_label: + * @self: a #GtkNumerableIcon + * + * Returns the currently displayed label of the icon, or %NULL. + * + * Returns: the currently displayed label + * + * Since: 3.0 + */ +const gchar * +gtk_numerable_icon_get_label (GtkNumerableIcon *self) +{ + g_return_val_if_fail (GTK_IS_NUMERABLE_ICON (self), NULL); + + return self->priv->label; +} + +/** + * gtk_numerable_icon_set_label: + * @self: a #GtkNumerableIcon + * @label: (allow-none): a short label, or %NULL + * + * Sets the currently displayed value of @self to the string + * in @label. Setting an empty label removes the emblem. + * + * Note that this is meant for displaying short labels, such as + * roman numbers, or single letters. For roman numbers, consider + * using the Unicode characters U+2160 - U+217F. Strings longer + * than two characters will likely not be rendered very well. + * + * If this method is called, and a number was already set on the + * icon, it will automatically be reset to zero before rendering + * the label, i.e. the last method called between + * gtk_numerable_icon_set_label() and gtk_numerable_icon_set_count() + * has always priority. + * + * Since: 3.0 + */ +void +gtk_numerable_icon_set_label (GtkNumerableIcon *self, + const gchar *label) +{ + g_return_if_fail (GTK_IS_NUMERABLE_ICON (self)); + + if (g_strcmp0 (label, self->priv->label) != 0) + { + gtk_numerable_icon_ensure_and_replace_label (self, 0, label); + gtk_numerable_icon_ensure_emblem (self); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LABEL]); + } +} + +/** + * gtk_numerable_icon_get_count: + * @self: a #GtkNumerableIcon + * + * Returns the value currently displayed by @self. + * + * Returns: the currently displayed value + * + * Since: 3.0 + */ +gint +gtk_numerable_icon_get_count (GtkNumerableIcon *self) +{ + g_return_val_if_fail (GTK_IS_NUMERABLE_ICON (self), 0); + + return self->priv->count; +} + +/** + * gtk_numerable_icon_set_count: + * @self: a #GtkNumerableIcon + * @count: a number between -99 and 99 + * + * Sets the currently displayed value of @self to @count. + * + * The numeric value is always clamped to make it two digits, i.e. + * between -99 and 99. Setting a count of zero removes the emblem. + * If this method is called, and a label was already set on the icon, + * it will automatically be reset to %NULL before rendering the number, + * i.e. the last method called between gtk_numerable_icon_set_count() + * and gtk_numerable_icon_set_label() has always priority. + * + * Since: 3.0 + */ +void +gtk_numerable_icon_set_count (GtkNumerableIcon *self, + gint count) +{ + g_return_if_fail (GTK_IS_NUMERABLE_ICON (self)); + + if (count != self->priv->count) + { + gtk_numerable_icon_ensure_and_replace_label (self, count, NULL); + gtk_numerable_icon_ensure_emblem (self); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COUNT]); + } +} + +/** + * gtk_numerable_icon_get_style_context: + * @self: a #GtkNumerableIcon + * + * Returns the #GtkStyleContext used by the icon for theming, + * or %NULL if there's none. + * + * Returns: (transfer none): a #GtkStyleContext, or %NULL. + * This object is internal to GTK+ and should not be unreffed. + * Use g_object_ref() if you want to keep it around + * + * Since: 3.0 + */ +GtkStyleContext * +gtk_numerable_icon_get_style_context (GtkNumerableIcon *self) +{ + g_return_val_if_fail (GTK_IS_NUMERABLE_ICON (self), NULL); + + return self->priv->style; +} + +/** + * gtk_numerable_icon_set_style_context: + * @self: a #GtkNumerableIcon + * @style: a #GtkStyleContext + * + * Updates the icon to fetch theme information from the + * given #GtkStyleContext. + * + * Since: 3.0 + */ +void +gtk_numerable_icon_set_style_context (GtkNumerableIcon *self, + GtkStyleContext *style) +{ + g_return_if_fail (GTK_IS_NUMERABLE_ICON (self)); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (style)); + + if (style != self->priv->style) + { + if (self->priv->style_changed_id != 0) + g_signal_handler_disconnect (self->priv->style, + self->priv->style_changed_id); + + if (self->priv->style != NULL) + g_object_unref (self->priv->style); + + self->priv->style = g_object_ref (style); + + gtk_numerable_icon_init_style (self); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_STYLE]); + } +} + +/** + * gtk_numerable_icon_set_background_gicon: + * @self: a #GtkNumerableIcon + * @icon: (allow-none): a #GIcon, or %NULL + * + * Updates the icon to use @icon as the base background image. + * If @icon is %NULL, @self will go back using style information + * or default theming for its background image. + * + * If this method is called and an icon name was already set as + * background for the icon, @icon will be used, i.e. the last method + * called between gtk_numerable_icon_set_background_gicon() and + * gtk_numerable_icon_set_background_icon_name() has always priority. + * + * Since: 3.0 + */ +void +gtk_numerable_icon_set_background_gicon (GtkNumerableIcon *self, + GIcon *icon) +{ + gboolean res; + + g_return_if_fail (GTK_IS_NUMERABLE_ICON (self)); + + if (self->priv->background_icon_name != NULL) + { + g_free (self->priv->background_icon_name); + self->priv->background_icon_name = NULL; + } + + res = real_set_background_icon (self, icon); + + if (res) + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_BACKGROUND_ICON]); +} + +/** + * gtk_numerable_icon_get_background_gicon: + * @self: a #GtkNumerableIcon + * + * Returns the #GIcon that was set as the base background image, or + * %NULL if there's none. The caller of this function does not own + * a reference to the returned #GIcon. + * + * Returns: (transfer none): a #GIcon, or %NULL + * + * Since: 3.0 + */ +GIcon * +gtk_numerable_icon_get_background_gicon (GtkNumerableIcon *self) +{ + GIcon *retval = NULL; + + g_return_val_if_fail (GTK_IS_NUMERABLE_ICON (self), NULL); + + /* return the GIcon only if it wasn't created from an icon name */ + if (self->priv->background_icon_name == NULL) + retval = self->priv->background_icon; + + return retval; +} + +/** + * gtk_numerable_icon_set_background_icon_name: + * @self: a #GtkNumerableIcon + * @icon_name: (allow-none): an icon name, or %NULL + * + * Updates the icon to use the icon named @icon_name from the + * current icon theme as the base background image. If @icon_name + * is %NULL, @self will go back using style information or default + * theming for its background image. + * + * If this method is called and a #GIcon was already set as + * background for the icon, @icon_name will be used, i.e. the + * last method called between gtk_numerable_icon_set_background_icon_name() + * and gtk_numerable_icon_set_background_gicon() has always priority. + * + * Since: 3.0 + */ +void +gtk_numerable_icon_set_background_icon_name (GtkNumerableIcon *self, + const gchar *icon_name) +{ + GIcon *icon = NULL; + gboolean res; + + g_return_if_fail (GTK_IS_NUMERABLE_ICON (self)); + + if (g_strcmp0 (icon_name, self->priv->background_icon_name) != 0) + { + g_free (self->priv->background_icon_name); + self->priv->background_icon_name = g_strdup (icon_name); + } + + if (icon_name != NULL) + icon = g_themed_icon_new_with_default_fallbacks (icon_name); + + res = real_set_background_icon (self, icon); + + if (res) + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_BACKGROUND_ICON_NAME]); + + if (icon != NULL) + g_object_unref (icon); +} + +/** + * gtk_numerable_icon_get_background_icon_name: + * @self: a #GtkNumerableIcon + * + * Returns the icon name used as the base background image, + * or %NULL if there's none. + * + * Returns: an icon name, or %NULL + * + * Since: 3.0 + */ +const gchar * +gtk_numerable_icon_get_background_icon_name (GtkNumerableIcon *self) +{ + g_return_val_if_fail (GTK_IS_NUMERABLE_ICON (self), NULL); + + return self->priv->background_icon_name; +} + +/** + * gtk_numerable_icon_new: + * @base_icon: a #GIcon to overlay on + * + * Creates a new unthemed #GtkNumerableIcon. + * + * Returns: a new #GIcon + * + * Since: 3.0 + */ +GIcon * +gtk_numerable_icon_new (GIcon *base_icon) +{ + g_return_val_if_fail (G_IS_ICON (base_icon), NULL); + + return g_object_new (GTK_TYPE_NUMERABLE_ICON, + "gicon", base_icon, + NULL); +} + +/** + * gtk_numerable_icon_new_with_style_context: + * @base_icon: a #GIcon to overlay on + * @context: a #GtkStyleContext + * + * Creates a new #GtkNumerableIcon which will themed according + * to the passed #GtkStyleContext. This is a convenience constructor + * that calls gtk_numerable_icon_set_style_context() internally. + * + * Returns: a new #GIcon + * + * Since: 3.0 + */ +GIcon * +gtk_numerable_icon_new_with_style_context (GIcon *base_icon, + GtkStyleContext *context) +{ + g_return_val_if_fail (G_IS_ICON (base_icon), NULL); + + return g_object_new (GTK_TYPE_NUMERABLE_ICON, + "gicon", base_icon, + "style-context", context, + NULL); +} diff --git a/gtk/gtknumerableicon.h b/gtk/gtknumerableicon.h new file mode 100644 index 0000000000..277d2dd465 --- /dev/null +++ b/gtk/gtknumerableicon.h @@ -0,0 +1,89 @@ +/* + * gtknumerableicon.h: an emblemed icon with number emblems + * + * Copyright (C) 2010 Red Hat, Inc. + * + * 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 the Gnome Library; see the file COPYING.LIB. If not, + * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: Cosimo Cecchi + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_NUMERABLE_ICON_H__ +#define __GTK_NUMERABLE_ICON_H__ + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_NUMERABLE_ICON (gtk_numerable_icon_get_type ()) +#define GTK_NUMERABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_NUMERABLE_ICON, GtkNumerableIcon)) +#define GTK_NUMERABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_NUMERABLE_ICON, GtkNumerableIconClass)) +#define GTK_IS_NUMERABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_NUMERABLE_ICON)) +#define GTK_IS_NUMERABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_NUMERABLE_ICON)) +#define GTK_NUMERABLE_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_NUMERABLE_ICON, GtkNumerableIconClass)) + +typedef struct _GtkNumerableIcon GtkNumerableIcon; +typedef struct _GtkNumerableIconClass GtkNumerableIconClass; +typedef struct _GtkNumerableIconPrivate GtkNumerableIconPrivate; + +struct _GtkNumerableIcon { + GEmblemedIcon parent; + + /*< private >*/ + GtkNumerableIconPrivate *priv; +}; + +struct _GtkNumerableIconClass { + GEmblemedIconClass parent_class; + + /* padding for future class expansion */ + gpointer padding[8]; +}; + +GType gtk_numerable_icon_get_type (void) G_GNUC_CONST; + +GIcon * gtk_numerable_icon_new (GIcon *base_icon); +GIcon * gtk_numerable_icon_new_with_style_context (GIcon *base_icon, + GtkStyleContext *context); + +GtkStyleContext * gtk_numerable_icon_get_style_context (GtkNumerableIcon *self); +void gtk_numerable_icon_set_style_context (GtkNumerableIcon *self, + GtkStyleContext *style); + +gint gtk_numerable_icon_get_count (GtkNumerableIcon *self); +void gtk_numerable_icon_set_count (GtkNumerableIcon *self, + gint count); + +const gchar * gtk_numerable_icon_get_label (GtkNumerableIcon *self); +void gtk_numerable_icon_set_label (GtkNumerableIcon *self, + const gchar *label); + +void gtk_numerable_icon_set_background_gicon (GtkNumerableIcon *self, + GIcon *icon); +GIcon * gtk_numerable_icon_get_background_gicon (GtkNumerableIcon *self); + +void gtk_numerable_icon_set_background_icon_name (GtkNumerableIcon *self, + const gchar *icon_name); +const gchar * gtk_numerable_icon_get_background_icon_name (GtkNumerableIcon *self); + +G_END_DECLS + +#endif /* __GTK_NUMERABLE_ICON_H__ */ diff --git a/gtk/gtknumerableiconprivate.h b/gtk/gtknumerableiconprivate.h new file mode 100644 index 0000000000..18323fb28a --- /dev/null +++ b/gtk/gtknumerableiconprivate.h @@ -0,0 +1,32 @@ +/* + * gtknumerableiconprivate.h: private methods for GtkNumerableIcon + * + * Copyright (C) 2010 Red Hat, Inc. + * + * 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 the Gnome Library; see the file COPYING.LIB. If not, + * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: Cosimo Cecchi + */ + +#ifndef __GTK_NUMERABLE_ICON_PRIVATE_H__ +#define __GTK_NUMERABLE_ICON_PRIVATE_H__ + +#include "gtknumerableicon.h" + +void _gtk_numerable_icon_set_background_icon_size (GtkNumerableIcon *self, + gint icon_size); + +#endif /* __GTK_NUMERABLE_ICON_PRIVATE_H__ */ diff --git a/gtk/gtkoffscreenwindow.c b/gtk/gtkoffscreenwindow.c index ffa0e513e6..306c3184a9 100644 --- a/gtk/gtkoffscreenwindow.c +++ b/gtk/gtkoffscreenwindow.c @@ -193,9 +193,8 @@ gtk_offscreen_window_realize (GtkWidget *widget) if (child) gtk_widget_set_parent_window (child, window); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), - window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + window); } static void diff --git a/gtk/gtkorientable.c b/gtk/gtkorientable.c index 2a3c761355..81fcf6c384 100644 --- a/gtk/gtkorientable.c +++ b/gtk/gtkorientable.c @@ -25,7 +25,7 @@ #include "gtkorientable.h" #include "gtkprivate.h" -#include "gtktypeutils.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" @@ -85,6 +85,9 @@ gtk_orientable_set_orientation (GtkOrientable *orientable, g_object_set (orientable, "orientation", orientation, NULL); + + if (GTK_IS_WIDGET (orientable)) + _gtk_orientable_set_style_classes (orientable); } /** @@ -111,3 +114,27 @@ gtk_orientable_get_orientation (GtkOrientable *orientable) return orientation; } + +void +_gtk_orientable_set_style_classes (GtkOrientable *orientable) +{ + GtkStyleContext *context; + GtkOrientation orientation; + + g_return_if_fail (GTK_IS_ORIENTABLE (orientable)); + g_return_if_fail (GTK_IS_WIDGET (orientable)); + + context = gtk_widget_get_style_context (GTK_WIDGET (orientable)); + orientation = gtk_orientable_get_orientation (orientable); + + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL); + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL); + } + else + { + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL); + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL); + } +} diff --git a/gtk/gtkorientable.h b/gtk/gtkorientable.h index fa2c85bf08..63ca6e5cd5 100644 --- a/gtk/gtkorientable.h +++ b/gtk/gtkorientable.h @@ -55,6 +55,9 @@ void gtk_orientable_set_orientation (GtkOrientable *orientable, GtkOrientation orientation); GtkOrientation gtk_orientable_get_orientation (GtkOrientable *orientable); +/* Private */ +void _gtk_orientable_set_style_classes (GtkOrientable *orientable); + G_END_DECLS #endif /* __GTK_ORIENTABLE_H__ */ diff --git a/gtk/gtkpagesetup.c b/gtk/gtkpagesetup.c index a00177efd6..0ba69d33fa 100644 --- a/gtk/gtkpagesetup.c +++ b/gtk/gtkpagesetup.c @@ -526,7 +526,7 @@ gtk_page_setup_get_page_height (GtkPageSetup *setup, /** * gtk_page_setup_load_file: * @setup: a #GtkPageSetup - * @file_name: the filename to read the page setup from + * @file_name: (type filename): the filename to read the page setup from * @error: (allow-none): return location for an error, or %NULL * * Reads the page setup from the file @file_name. @@ -560,7 +560,7 @@ gtk_page_setup_load_file (GtkPageSetup *setup, /** * gtk_page_setup_new_from_file: - * @file_name: the filename to read the page setup from + * @file_name: (type filename): the filename to read the page setup from * @error: (allow-none): return location for an error, or %NULL * * Reads the page setup from the file @file_name. Returns a @@ -730,7 +730,7 @@ gtk_page_setup_new_from_key_file (GKeyFile *key_file, /** * gtk_page_setup_to_file: * @setup: a #GtkPageSetup - * @file_name: the file to save to + * @file_name: (type filename): the file to save to * @error: (allow-none): return location for errors, or %NULL * * This function saves the information from @setup to @file_name. diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c index 7c0958f5d8..6962059dd7 100644 --- a/gtk/gtkpaned.c +++ b/gtk/gtkpaned.c @@ -28,13 +28,12 @@ #include "gtkpaned.h" -#include "gdk/gdkkeysyms.h" #include "gtkbindings.h" #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkorientable.h" #include "gtkwindow.h" - +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -182,8 +181,8 @@ static void gtk_paned_realize (GtkWidget *widget); static void gtk_paned_unrealize (GtkWidget *widget); static void gtk_paned_map (GtkWidget *widget); static void gtk_paned_unmap (GtkWidget *widget); -static void gtk_paned_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_paned_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gboolean gtk_paned_draw (GtkWidget *widget, cairo_t *cr); static gboolean gtk_paned_enter (GtkWidget *widget, @@ -299,7 +298,7 @@ gtk_paned_class_init (GtkPanedClass *class) widget_class->motion_notify_event = gtk_paned_motion; widget_class->grab_broken_event = gtk_paned_grab_broken; widget_class->grab_notify = gtk_paned_grab_notify; - widget_class->state_changed = gtk_paned_state_changed; + widget_class->state_flags_changed = gtk_paned_state_flags_changed; container_class->add = gtk_paned_add; container_class->remove = gtk_paned_remove; @@ -649,6 +648,7 @@ static void gtk_paned_init (GtkPaned *paned) { GtkPanedPrivate *priv; + GtkStyleContext *context; gtk_widget_set_has_window (GTK_WIDGET (paned), FALSE); gtk_widget_set_can_focus (GTK_WIDGET (paned), TRUE); @@ -685,6 +685,9 @@ gtk_paned_init (GtkPaned *paned) priv->handle_pos.y = -1; priv->drag_pos = -1; + + context = gtk_widget_get_style_context (GTK_WIDGET (paned)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PANE_SEPARATOR); } static void @@ -706,8 +709,8 @@ gtk_paned_set_property (GObject *object, else priv->cursor_type = GDK_SB_V_DOUBLE_ARROW; - /* state_changed updates the cursor */ - gtk_paned_state_changed (GTK_WIDGET (paned), gtk_widget_get_state (GTK_WIDGET (paned))); + /* state_flags_changed updates the cursor */ + gtk_paned_state_flags_changed (GTK_WIDGET (paned), 0); gtk_widget_queue_resize (GTK_WIDGET (paned)); break; case PROP_POSITION: @@ -1134,9 +1137,7 @@ gtk_paned_realize (GtkWidget *widget) &attributes, attributes_mask); gdk_window_set_user_data (priv->handle, paned); if (attributes_mask & GDK_WA_CURSOR) - gdk_cursor_unref (attributes.cursor); - - gtk_widget_style_attach (widget); + g_object_unref (attributes.cursor); if (priv->child1 && gtk_widget_get_visible (priv->child1) && priv->child2 && gtk_widget_get_visible (priv->child2)) @@ -1197,27 +1198,28 @@ gtk_paned_draw (GtkWidget *widget, priv->child1 && gtk_widget_get_visible (priv->child1) && priv->child2 && gtk_widget_get_visible (priv->child2)) { - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state; GtkAllocation allocation; gtk_widget_get_allocation (widget, &allocation); - - if (gtk_widget_is_focus (widget)) - state = GTK_STATE_SELECTED; - else if (priv->handle_prelit) - state = GTK_STATE_PRELIGHT; - else - state = gtk_widget_get_state (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - gtk_paint_handle (gtk_widget_get_style (widget), - cr, - state, GTK_SHADOW_NONE, - widget, "paned", - priv->handle_pos.x - allocation.x, - priv->handle_pos.y - allocation.y, - priv->handle_pos.width, - priv->handle_pos.height, - !priv->orientation); + if (gtk_widget_is_focus (widget)) + state |= GTK_STATE_FLAG_SELECTED; + if (priv->handle_prelit) + state |= GTK_STATE_FLAG_PRELIGHT; + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_render_handle (context, cr, + priv->handle_pos.x - allocation.x, + priv->handle_pos.y - allocation.y, + priv->handle_pos.width, + priv->handle_pos.height); + + gtk_style_context_restore (context); } /* Chain up to draw children */ @@ -1421,8 +1423,8 @@ gtk_paned_grab_notify (GtkWidget *widget, } static void -gtk_paned_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_paned_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { GtkPaned *paned = GTK_PANED (widget); GtkPanedPrivate *priv = paned->priv; @@ -1439,7 +1441,7 @@ gtk_paned_state_changed (GtkWidget *widget, gdk_window_set_cursor (priv->handle, cursor); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } } diff --git a/gtk/gtkpapersize.c b/gtk/gtkpapersize.c index 7601aba552..8fbcddb373 100644 --- a/gtk/gtkpapersize.c +++ b/gtk/gtkpapersize.c @@ -63,7 +63,7 @@ struct _GtkPaperSize gchar *name; gchar *display_name; gchar *ppd_name; - + gdouble width, height; /* Stored in mm */ gboolean is_custom; }; @@ -80,7 +80,7 @@ lookup_paper_info (const gchar *name) int mid; int cmp; - do + do { mid = (lower + upper) / 2; cmp = strcmp (name, paper_names + standard_names_offsets[mid].name); @@ -89,7 +89,7 @@ lookup_paper_info (const gchar *name) else if (cmp > 0) lower = mid + 1; else - return &standard_names_offsets[mid]; + return &standard_names_offsets[mid]; } while (lower <= upper); @@ -98,15 +98,15 @@ lookup_paper_info (const gchar *name) static gboolean parse_media_size (const gchar *size, - gdouble *width_mm, - gdouble *height_mm) + gdouble *width_mm, + gdouble *height_mm) { const char *p; char *e; double short_dim, long_dim; p = size; - + short_dim = g_ascii_strtod (p, &e); if (p == e || *e != 'x') @@ -133,19 +133,19 @@ parse_media_size (const gchar *size, *width_mm = short_dim; if (height_mm) *height_mm = long_dim; - - return TRUE; + + return TRUE; } static gboolean parse_full_media_size_name (const gchar *full_name, - gchar **name, - gdouble *width_mm, - gdouble *height_mm) + gchar **name, + gdouble *width_mm, + gdouble *height_mm) { const char *p; const char *end_of_name; - + /* From the spec: media-size-self-describing-name = ( class-in "_" size-name "_" short-dim "x" long-dim "in" ) | @@ -170,7 +170,7 @@ parse_full_media_size_name (const gchar *full_name, return FALSE; p++; /* Skip _ */ - + p = strchr (p, '_'); if (p == NULL) return FALSE; @@ -184,20 +184,20 @@ parse_full_media_size_name (const gchar *full_name, if (name) *name = g_strndup (full_name, end_of_name - full_name); - - return TRUE; + + return TRUE; } static GtkPaperSize * gtk_paper_size_new_from_info (const PaperInfo *info) { GtkPaperSize *size; - + size = g_slice_new0 (GtkPaperSize); size->info = info; size->width = info->width; size->height = info->height; - + return size; } @@ -211,7 +211,7 @@ gtk_paper_size_new_from_info (const PaperInfo *info) * * If @name is %NULL, the default paper size is returned, * see gtk_paper_size_get_default(). - * + * * Return value: a new #GtkPaperSize, use gtk_paper_size_free() * to free it * @@ -227,35 +227,44 @@ gtk_paper_size_new (const gchar *name) if (name == NULL) name = gtk_paper_size_get_default (); - + if (parse_full_media_size_name (name, &short_name, &width, &height)) { - size = g_slice_new0 (GtkPaperSize); + info = lookup_paper_info (short_name); + if (info != NULL && info->width == width && info->height == height) + { + size = gtk_paper_size_new_from_info (info); + g_free (short_name); + } + else + { + size = g_slice_new0 (GtkPaperSize); - size->width = width; - size->height = height; - size->name = short_name; - size->display_name = g_strdup (short_name); - if (strncmp (short_name, "custom", 6) == 0) - size->is_custom = TRUE; + size->width = width; + size->height = height; + size->name = short_name; + size->display_name = g_strdup (short_name); + if (strncmp (short_name, "custom", 6) == 0) + size->is_custom = TRUE; + } } else { info = lookup_paper_info (name); if (info != NULL) - size = gtk_paper_size_new_from_info (info); + size = gtk_paper_size_new_from_info (info); else - { - g_warning ("Unknown paper size %s\n", name); - size = g_slice_new0 (GtkPaperSize); - size->name = g_strdup (name); - size->display_name = g_strdup (name); - /* Default to A4 size */ - size->width = 210; - size->height = 297; - } + { + g_warning ("Unknown paper size %s\n", name); + size = g_slice_new0 (GtkPaperSize); + size->name = g_strdup (name); + size->display_name = g_strdup (name); + /* Default to A4 size */ + size->width = 210; + size->height = 297; + } } - + return size; } @@ -265,12 +274,12 @@ gtk_paper_size_new (const gchar *name) * @ppd_display_name: the corresponding human-readable name * @width: the paper width, in points * @height: the paper height in points - * - * Creates a new #GtkPaperSize object by using - * PPD information. - * - * If @ppd_name is not a recognized PPD paper name, - * @ppd_display_name, @width and @height are used to + * + * Creates a new #GtkPaperSize object by using + * PPD information. + * + * If @ppd_name is not a recognized PPD paper name, + * @ppd_display_name, @width and @height are used to * construct a custom #GtkPaperSize object. * * Return value: a new #GtkPaperSize, use gtk_paper_size_free() @@ -280,9 +289,9 @@ gtk_paper_size_new (const gchar *name) */ GtkPaperSize * gtk_paper_size_new_from_ppd (const gchar *ppd_name, - const gchar *ppd_display_name, - gdouble width, - gdouble height) + const gchar *ppd_display_name, + gdouble width, + gdouble height) { char *name; const char *lookup_ppd_name; @@ -291,32 +300,32 @@ gtk_paper_size_new_from_ppd (const gchar *ppd_name, int i; lookup_ppd_name = ppd_name; - + freeme = NULL; /* Strip out Traverse suffix in matching. */ if (g_str_has_suffix (ppd_name, ".Transverse")) { lookup_ppd_name = freeme = - g_strndup (ppd_name, strlen (ppd_name) - strlen (".Transverse")); + g_strndup (ppd_name, strlen (ppd_name) - strlen (".Transverse")); } - + for (i = 0; i < G_N_ELEMENTS(standard_names_offsets); i++) { if (standard_names_offsets[i].ppd_name != -1 && - strcmp (paper_names + standard_names_offsets[i].ppd_name, lookup_ppd_name) == 0) - { - size = gtk_paper_size_new_from_info (&standard_names_offsets[i]); - goto out; - } + strcmp (paper_names + standard_names_offsets[i].ppd_name, lookup_ppd_name) == 0) + { + size = gtk_paper_size_new_from_info (&standard_names_offsets[i]); + goto out; + } } - + for (i = 0; i < G_N_ELEMENTS(extra_ppd_names_offsets); i++) { if (strcmp (paper_names + extra_ppd_names_offsets[i].ppd_name, lookup_ppd_name) == 0) - { - size = gtk_paper_size_new (paper_names + extra_ppd_names_offsets[i].standard_name); - goto out; - } + { + size = gtk_paper_size_new (paper_names + extra_ppd_names_offsets[i].standard_name); + goto out; + } } name = g_strconcat ("ppd_", ppd_name, NULL); @@ -329,57 +338,57 @@ gtk_paper_size_new_from_ppd (const gchar *ppd_name, size->info->ppd_name == -1 || strcmp (paper_names + size->info->ppd_name, ppd_name) != 0) size->ppd_name = g_strdup (ppd_name); - + g_free (freeme); - + return size; } /** * gtk_paper_size_new_custom: - * @name: the paper name + * @name: the paper name * @display_name: the human-readable name * @width: the paper width, in units of @unit * @height: the paper height, in units of @unit * @unit: the unit for @width and @height - * + * * Creates a new #GtkPaperSize object with the * given parameters. - * + * * Return value: a new #GtkPaperSize object, use gtk_paper_size_free() * to free it * * Since: 2.10 */ GtkPaperSize * -gtk_paper_size_new_custom (const gchar *name, - const gchar *display_name, - gdouble width, - gdouble height, - GtkUnit unit) +gtk_paper_size_new_custom (const gchar *name, + const gchar *display_name, + gdouble width, + gdouble height, + GtkUnit unit) { GtkPaperSize *size; g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (unit != GTK_UNIT_PIXEL, NULL); size = g_slice_new0 (GtkPaperSize); - + size->name = g_strdup (name); size->display_name = g_strdup (display_name); size->is_custom = TRUE; - + size->width = _gtk_print_convert_to_mm (width, unit); size->height = _gtk_print_convert_to_mm (height, unit); - + return size; } /** * gtk_paper_size_copy: * @other: a #GtkPaperSize - * + * * Copies an existing #GtkPaperSize. - * + * * Return value: a copy of @other * * Since: 2.10 @@ -398,7 +407,7 @@ gtk_paper_size_copy (GtkPaperSize *other) size->display_name = g_strdup (other->display_name); if (other->ppd_name) size->ppd_name = g_strdup (other->ppd_name); - + size->width = other->width; size->height = other->height; size->is_custom = other->is_custom; @@ -409,7 +418,7 @@ gtk_paper_size_copy (GtkPaperSize *other) /** * gtk_paper_size_free: * @size: a #GtkPaperSize - * + * * Free the given #GtkPaperSize object. * * Since: 2.10 @@ -428,23 +437,23 @@ gtk_paper_size_free (GtkPaperSize *size) * gtk_paper_size_is_equal: * @size1: a #GtkPaperSize object * @size2: another #GtkPaperSize object - * + * * Compares two #GtkPaperSize objects. - * - * Return value: %TRUE, if @size1 and @size2 + * + * Return value: %TRUE, if @size1 and @size2 * represent the same paper size * * Since: 2.10 */ gboolean gtk_paper_size_is_equal (GtkPaperSize *size1, - GtkPaperSize *size2) + GtkPaperSize *size2) { if (size1->info != NULL && size2->info != NULL) return size1->info == size2->info; - + return strcmp (gtk_paper_size_get_name (size1), - gtk_paper_size_get_name (size2)) == 0; + gtk_paper_size_get_name (size2)) == 0; } GList * _gtk_load_custom_papers (void); @@ -466,7 +475,7 @@ gtk_paper_size_get_paper_sizes (gboolean include_custom) { GList *list = NULL; guint i; -#ifdef G_OS_UNIX /* _gtk_load_custom_papers() only on Unix so far */ +#ifdef G_OS_UNIX /* _gtk_load_custom_papers() only on Unix so far */ if (include_custom) { GList *page_setups, *l; @@ -500,9 +509,9 @@ gtk_paper_size_get_paper_sizes (gboolean include_custom) /** * gtk_paper_size_get_name: * @size: a #GtkPaperSize object - * + * * Gets the name of the #GtkPaperSize. - * + * * Return value: the name of @size * * Since: 2.10 @@ -519,9 +528,9 @@ gtk_paper_size_get_name (GtkPaperSize *size) /** * gtk_paper_size_get_display_name: * @size: a #GtkPaperSize object - * + * * Gets the human-readable name of the #GtkPaperSize. - * + * * Return value: the human-readable name of @size * * Since: 2.10 @@ -543,10 +552,10 @@ gtk_paper_size_get_display_name (GtkPaperSize *size) /** * gtk_paper_size_get_ppd_name: * @size: a #GtkPaperSize object - * + * * Gets the PPD name of the #GtkPaperSize, which * may be %NULL. - * + * * Return value: the PPD name of @size * * Since: 2.10 @@ -565,17 +574,17 @@ gtk_paper_size_get_ppd_name (GtkPaperSize *size) * gtk_paper_size_get_width: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * - * Gets the paper width of the #GtkPaperSize, in + * + * Gets the paper width of the #GtkPaperSize, in * units of @unit. - * - * Return value: the paper width + * + * Return value: the paper width * * Since: 2.10 */ gdouble -gtk_paper_size_get_width (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_width (GtkPaperSize *size, + GtkUnit unit) { return _gtk_print_convert_from_mm (size->width, unit); } @@ -584,17 +593,17 @@ gtk_paper_size_get_width (GtkPaperSize *size, * gtk_paper_size_get_height: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * - * Gets the paper height of the #GtkPaperSize, in + * + * Gets the paper height of the #GtkPaperSize, in * units of @unit. - * - * Return value: the paper height + * + * Return value: the paper height * * Since: 2.10 */ gdouble -gtk_paper_size_get_height (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_height (GtkPaperSize *size, + GtkUnit unit) { return _gtk_print_convert_from_mm (size->height, unit); } @@ -602,9 +611,9 @@ gtk_paper_size_get_height (GtkPaperSize *size, /** * gtk_paper_size_is_custom: * @size: a #GtkPaperSize object - * + * * Returns %TRUE if @size is not a standard paper size. - * + * * Return value: whether @size is a custom paper size. **/ gboolean @@ -619,16 +628,16 @@ gtk_paper_size_is_custom (GtkPaperSize *size) * @width: the new width in units of @unit * @height: the new height in units of @unit * @unit: the unit for @width and @height - * + * * Changes the dimensions of a @size to @width x @height. * * Since: 2.10 */ void -gtk_paper_size_set_size (GtkPaperSize *size, - gdouble width, - gdouble height, - GtkUnit unit) +gtk_paper_size_set_size (GtkPaperSize *size, + gdouble width, + gdouble height, + GtkUnit unit) { g_return_if_fail (size != NULL); g_return_if_fail (size->is_custom); @@ -643,12 +652,12 @@ gtk_paper_size_set_size (GtkPaperSize *size, /** * gtk_paper_size_get_default: * - * Returns the name of the default paper size, which - * depends on the current locale. - * + * Returns the name of the default paper size, which + * depends on the current locale. + * * Return value: the name of the default paper size. The string * is owned by GTK+ and should not be modified. - * + * * Since: 2.10 */ G_CONST_RETURN gchar * @@ -661,10 +670,10 @@ gtk_paper_size_get_default (void) { int width = NL_PAPER_GET (_NL_PAPER_WIDTH); int height = NL_PAPER_GET (_NL_PAPER_HEIGHT); - + if (width == 210 && height == 297) return GTK_PAPER_NAME_A4; - + if (width == 216 && height == 279) return GTK_PAPER_NAME_LETTER; } @@ -701,7 +710,7 @@ gtk_paper_size_get_default (void) * I've taken the actual values used from the OSX page setup dialog. * I'm not sure exactly where they got these values for, but might * correspond to this (from ghostscript docs): - * + * * All DeskJets have 0.5 inches (1.27cm) of unprintable bottom margin, * due to the mechanical arrangement used to grab the paper. Side margins * are approximately 0.25 inches (0.64cm) for U.S. letter paper, and 0.15 @@ -712,16 +721,16 @@ gtk_paper_size_get_default (void) * gtk_paper_size_get_default_top_margin: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * + * * Gets the default top margin for the #GtkPaperSize. - * + * * Return value: the default top margin * * Since: 2.10 */ gdouble -gtk_paper_size_get_default_top_margin (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_default_top_margin (GtkPaperSize *size, + GtkUnit unit) { gdouble margin; @@ -733,16 +742,16 @@ gtk_paper_size_get_default_top_margin (GtkPaperSize *size, * gtk_paper_size_get_default_bottom_margin: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * + * * Gets the default bottom margin for the #GtkPaperSize. - * + * * Return value: the default bottom margin * * Since: 2.10 */ gdouble -gtk_paper_size_get_default_bottom_margin (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_default_bottom_margin (GtkPaperSize *size, + GtkUnit unit) { gdouble margin; const gchar *name; @@ -754,7 +763,7 @@ gtk_paper_size_get_default_bottom_margin (GtkPaperSize *size, strcmp (name, "na_legal") == 0 || strcmp (name, "iso_a4") == 0) margin = _gtk_print_convert_to_mm (0.56, GTK_UNIT_INCH); - + return _gtk_print_convert_from_mm (margin, unit); } @@ -762,16 +771,16 @@ gtk_paper_size_get_default_bottom_margin (GtkPaperSize *size, * gtk_paper_size_get_default_left_margin: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * + * * Gets the default left margin for the #GtkPaperSize. - * + * * Return value: the default left margin * * Since: 2.10 */ gdouble -gtk_paper_size_get_default_left_margin (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_default_left_margin (GtkPaperSize *size, + GtkUnit unit) { gdouble margin; @@ -783,16 +792,16 @@ gtk_paper_size_get_default_left_margin (GtkPaperSize *size, * gtk_paper_size_get_default_right_margin: * @size: a #GtkPaperSize object * @unit: the unit for the return value - * + * * Gets the default right margin for the #GtkPaperSize. - * + * * Return value: the default right margin * * Since: 2.10 */ gdouble -gtk_paper_size_get_default_right_margin (GtkPaperSize *size, - GtkUnit unit) +gtk_paper_size_get_default_right_margin (GtkPaperSize *size, + GtkUnit unit) { gdouble margin; @@ -808,7 +817,7 @@ gtk_paper_size_get_default_right_margin (GtkPaperSize *size, * @error: (allow-none): return location for an error, or %NULL * * Reads a paper size from the group @group_name in the key file - * @key_file. + * @key_file. * * Returns: a new #GtkPaperSize object with the restored * paper size, or %NULL if an error occurred. @@ -817,8 +826,8 @@ gtk_paper_size_get_default_right_margin (GtkPaperSize *size, */ GtkPaperSize * gtk_paper_size_new_from_key_file (GKeyFile *key_file, - const gchar *group_name, - GError **error) + const gchar *group_name, + GError **error) { GtkPaperSize *paper_size = NULL; char *name = NULL, *ppd_name = NULL, *display_name = NULL, *freeme = NULL; @@ -855,11 +864,11 @@ gtk_paper_size_new_from_key_file (GKeyFile *key_file, #undef GET_DOUBLE name = g_key_file_get_string (key_file, group_name, - "Name", NULL); + "Name", NULL); ppd_name = g_key_file_get_string (key_file, group_name, - "PPDName", NULL); + "PPDName", NULL); display_name = g_key_file_get_string (key_file, group_name, - "DisplayName", NULL); + "DisplayName", NULL); /* Fallback for old ~/.gtk-custom-paper entries */ if (!display_name) display_name = g_strdup (name); @@ -871,7 +880,7 @@ gtk_paper_size_new_from_key_file (GKeyFile *key_file, _gtk_print_convert_from_mm (height, GTK_UNIT_POINTS)); else if (name != NULL) paper_size = gtk_paper_size_new_custom (name, display_name, - width, height, GTK_UNIT_MM); + width, height, GTK_UNIT_MM); else { g_set_error_literal (error, @@ -904,8 +913,8 @@ out: */ void gtk_paper_size_to_key_file (GtkPaperSize *size, - GKeyFile *key_file, - const gchar *group_name) + GKeyFile *key_file, + const gchar *group_name) { const char *name, *ppd_name, *display_name; @@ -916,19 +925,19 @@ gtk_paper_size_to_key_file (GtkPaperSize *size, display_name = gtk_paper_size_get_display_name (size); ppd_name = gtk_paper_size_get_ppd_name (size); - if (ppd_name != NULL) + if (ppd_name != NULL) g_key_file_set_string (key_file, group_name, - "PPDName", ppd_name); + "PPDName", ppd_name); else g_key_file_set_string (key_file, group_name, - "Name", name); + "Name", name); - if (display_name) + if (display_name) g_key_file_set_string (key_file, group_name, - "DisplayName", display_name); + "DisplayName", display_name); g_key_file_set_double (key_file, group_name, - "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); + "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); g_key_file_set_double (key_file, group_name, - "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); + "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); } diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c index 102d9e3ac6..88b89cb2c9 100644 --- a/gtk/gtkpathbar.c +++ b/gtk/gtkpathbar.c @@ -124,8 +124,7 @@ static void gtk_path_bar_grab_notify (GtkWidget *widget, gboolean was_grabbed); static void gtk_path_bar_state_changed (GtkWidget *widget, GtkStateType previous_state); -static void gtk_path_bar_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_path_bar_style_updated (GtkWidget *widget); static void gtk_path_bar_screen_changed (GtkWidget *widget, GdkScreen *previous_screen); static void gtk_path_bar_check_icon_theme (GtkPathBar *path_bar); @@ -227,7 +226,7 @@ gtk_path_bar_class_init (GtkPathBarClass *path_bar_class) widget_class->map = gtk_path_bar_map; widget_class->unmap = gtk_path_bar_unmap; widget_class->size_allocate = gtk_path_bar_size_allocate; - widget_class->style_set = gtk_path_bar_style_set; + widget_class->style_updated = gtk_path_bar_style_updated; widget_class->screen_changed = gtk_path_bar_screen_changed; widget_class->grab_notify = gtk_path_bar_grab_notify; widget_class->state_changed = gtk_path_bar_state_changed; @@ -465,8 +464,6 @@ gtk_path_bar_realize (GtkWidget *widget) path_bar->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (path_bar->event_window, widget); - - gtk_widget_style_attach (widget); } static void @@ -713,10 +710,9 @@ gtk_path_bar_size_allocate (GtkWidget *widget, } static void -gtk_path_bar_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_path_bar_style_updated (GtkWidget *widget) { - GTK_WIDGET_CLASS (gtk_path_bar_parent_class)->style_set (widget, previous_style); + GTK_WIDGET_CLASS (gtk_path_bar_parent_class)->style_updated (widget); gtk_path_bar_check_icon_theme (GTK_PATH_BAR (widget)); } diff --git a/gtk/gtkplug-win32.c b/gtk/gtkplug-win32.c index 8b80bf30d3..7116b31628 100644 --- a/gtk/gtkplug-win32.c +++ b/gtk/gtkplug-win32.c @@ -29,6 +29,7 @@ #include "gtkmarshalers.h" #include "gtkplug.h" #include "gtkplugprivate.h" +#include "gtkwindowprivate.h" #include "gtkdebug.h" #include "win32/gdkwin32.h" @@ -211,7 +212,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent, /* Start of embedding protocol */ GTK_NOTE (PLUGSOCKET, g_printerr ("start of embedding\n")); - priv->socket_window = gdk_window_lookup_for_display (display, (GdkNativeWindow) parent); + priv->socket_window = gdk_win32_window_lookup_for_display (display, (GdkNativeWindow) parent); if (priv->socket_window) { gpointer user_data = NULL; @@ -230,7 +231,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent, } else { - priv->socket_window = gdk_window_foreign_new_for_display (display, (GdkNativeWindow) parent); + priv->socket_window = gdk_win32_window_foreign_new_for_display (display, (GdkNativeWindow) parent); if (!priv->socket_window) /* Already gone */ break; } diff --git a/gtk/gtkplug-x11.c b/gtk/gtkplug-x11.c index df98e93e29..4e1a7b1429 100644 --- a/gtk/gtkplug-x11.c +++ b/gtk/gtkplug-x11.c @@ -27,24 +27,12 @@ #include "config.h" -#ifdef XINPUT_2 - -/* Hack to have keyboard events interpreted - * regardless of the default device manager - */ -#define GDK_COMPILATION -#include "x11/gdkdevicemanager-core.h" -#include "x11/gdkdevicemanager-xi2.h" -#include "x11/gdkeventtranslator.h" -#undef GDK_COMPILATION - -#endif /* XINPUT_2 */ - #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkplug.h" #include "gtkprivate.h" #include "gtkplugprivate.h" +#include "gtkwindowprivate.h" #include "gtkdebug.h" #include "x11/gdkx.h" @@ -315,7 +303,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent, GTK_NOTE (PLUGSOCKET, g_message ("GtkPlug: start of embedding")); - priv->socket_window = gdk_window_lookup_for_display (display, xre->parent); + priv->socket_window = gdk_x11_window_lookup_for_display (display, xre->parent); if (priv->socket_window) { gpointer user_data = NULL; @@ -332,7 +320,7 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent, } else { - priv->socket_window = gdk_window_foreign_new_for_display (display, xre->parent); + priv->socket_window = gdk_x11_window_foreign_new_for_display (display, xre->parent); if (!priv->socket_window) /* Already gone */ break; /* FIXME: shouldn't this unref the plug? i.e. "goto done;" instead */ } @@ -350,61 +338,52 @@ _gtk_plug_windowing_filter_func (GdkXEvent *gdk_xevent, break; } - -#ifdef XINPUT_2 case KeyPress: case KeyRelease: { - static GdkDeviceManager *core_device_manager = NULL; + GdkModifierType state, consumed; GdkDeviceManager *device_manager; - GdkEvent *translated_event; - GList *devices, *d; - GdkDevice *keyboard = NULL; + GdkDevice *pointer, *keyboard; + GdkKeymap *keymap; + + if (xevent->type == KeyPress) + event->key.type = GDK_KEY_PRESS; + else + event->key.type = GDK_KEY_RELEASE; + + event->key.window = gdk_x11_window_lookup_for_display (display, xevent->xany.window); + event->key.send_event = TRUE; + event->key.time = xevent->xkey.time; + event->key.state = (GdkModifierType) xevent->xkey.state; + event->key.hardware_keycode = xevent->xkey.keycode; + event->key.keyval = GDK_KEY_VoidSymbol; device_manager = gdk_display_get_device_manager (display); + pointer = gdk_device_manager_get_client_pointer (device_manager); + keyboard = gdk_device_get_associated_device (pointer); + gdk_event_set_device (event, keyboard); - /* bail out if the device manager already - * interprets core keyboard events. - */ - if (!GDK_IS_DEVICE_MANAGER_XI2 (device_manager)) - return GDK_FILTER_CONTINUE; + keymap = gdk_keymap_get_for_display (display); + gdk_keymap_translate_keyboard_state (keymap, + event->key.hardware_keycode, + event->key.state, + event->key.group, + &event->key.keyval, + NULL, NULL, &consumed); - /* Find out the first keyboard device, the - * generated event will be assigned to it. - */ - devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_MASTER); + state = event->key.state & ~consumed; + gdk_keymap_add_virtual_modifiers (keymap, &state); + event->key.state |= state; - for (d = devices; d; d = d->next) - { - GdkDevice *device = d->data; + event->key.length = 0; + event->key.string = g_strdup (""); - if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) - keyboard = device; - } + /* FIXME: These should be filled in properly */ + event->key.group = 0; + event->key.is_modifier = FALSE; - g_list_free (devices); - - if (!keyboard) - return GDK_FILTER_CONTINUE; - - /* This is a crude hack so key events - * are interpreted as if there was a - * GdkDeviceManagerCore available. - */ - if (G_UNLIKELY (!core_device_manager)) - core_device_manager = g_object_new (GDK_TYPE_DEVICE_MANAGER_CORE, - "display", display, - NULL); - - translated_event = gdk_event_translator_translate (GDK_EVENT_TRANSLATOR (core_device_manager), display, xevent); - gdk_event_set_device (translated_event, keyboard); - - gtk_main_do_event (translated_event); - gdk_event_free (translated_event); - - return_val = GDK_FILTER_REMOVE; + return_val = GDK_FILTER_TRANSLATE; } -#endif } return return_val; diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c index d3aacabcec..8fbcfbd820 100644 --- a/gtk/gtkplug.c +++ b/gtk/gtkplug.c @@ -33,8 +33,16 @@ #include "gtkintl.h" #include "gtkprivate.h" #include "gtkplugprivate.h" +#include "gtksocketprivate.h" #include "gtkwidgetprivate.h" -#include "gtkwindow.h" +#include "gtkwindowprivate.h" + +#ifdef GDK_WINDOWING_X11 +#include "x11/gdkx.h" +#endif +#ifdef GDK_WINDOWING_WIN32 +#include "win32/gdkwin32.h" +#endif /** * SECTION:gtkplug @@ -346,8 +354,8 @@ _gtk_plug_add_to_socket (GtkPlug *plug, gtk_plug_set_is_child (plug, TRUE); priv->same_app = TRUE; - socket_->same_app = TRUE; - socket_->plug_widget = widget; + socket_->priv->same_app = TRUE; + socket_->priv->plug_widget = widget; priv->socket_window = gtk_widget_get_window (GTK_WIDGET (socket_)); g_object_ref (priv->socket_window); @@ -436,14 +444,14 @@ _gtk_plug_remove_from_socket (GtkPlug *plug, gtk_widget_unparent (GTK_WIDGET (plug)); _gtk_widget_set_in_reparent (widget, FALSE); - socket_->plug_widget = NULL; - if (socket_->plug_window != NULL) + socket_->priv->plug_widget = NULL; + if (socket_->priv->plug_window != NULL) { - g_object_unref (socket_->plug_window); - socket_->plug_window = NULL; + g_object_unref (socket_->priv->plug_window); + socket_->priv->plug_window = NULL; } - socket_->same_app = FALSE; + socket_->priv->same_app = FALSE; priv->same_app = FALSE; if (priv->socket_window != NULL) @@ -512,7 +520,13 @@ gtk_plug_construct_for_display (GtkPlug *plug, { gpointer user_data = NULL; - priv->socket_window = gdk_window_lookup_for_display (display, socket_id); +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + priv->socket_window = gdk_x11_window_lookup_for_display (display, socket_id); + else +#endif + priv->socket_window = NULL; + if (priv->socket_window) { gdk_window_get_user_data (priv->socket_window, &user_data); @@ -531,7 +545,14 @@ gtk_plug_construct_for_display (GtkPlug *plug, g_object_ref (priv->socket_window); } else - priv->socket_window = gdk_window_foreign_new_for_display (display, socket_id); +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + priv->socket_window = gdk_x11_window_foreign_new_for_display (display, socket_id); +#endif +#ifdef GDK_WINDOWING_WIN32 + if (GDK_IS_WIN32_DISPLAY (display)) + priv->socket_window = gdk_win32_window_foreign_new_for_display (display, socket_id); +#endif if (priv->socket_window) { g_signal_emit (plug, plug_signals[EMBEDDED], 0); @@ -707,9 +728,8 @@ gtk_plug_realize (GtkWidget *widget) gdk_window_set_user_data (gdk_window, window); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), - gdk_window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + gdk_window); gdk_window_enable_synchronized_configure (gdk_window); } diff --git a/gtk/gtkprintbackend.h b/gtk/gtkprintbackend.h index e19193ffdd..bdf5b69973 100644 --- a/gtk/gtkprintbackend.h +++ b/gtk/gtkprintbackend.h @@ -167,11 +167,11 @@ void gtk_print_backend_set_list_done (GtkPrintBackend *bac /* Backend-only functions for GtkPrinter */ - -GtkPrinter *gtk_printer_new (const char *name, - GtkPrintBackend *backend, - gboolean is_virtual); gboolean gtk_printer_is_new (GtkPrinter *printer); +void gtk_printer_set_accepts_pdf (GtkPrinter *printer, + gboolean val); +void gtk_printer_set_accepts_ps (GtkPrinter *printer, + gboolean val); void gtk_printer_set_is_new (GtkPrinter *printer, gboolean val); void gtk_printer_set_is_active (GtkPrinter *printer, diff --git a/gtk/gtkprinter.c b/gtk/gtkprinter.c index 7e8c4d0a8a..4d5112b038 100644 --- a/gtk/gtkprinter.c +++ b/gtk/gtkprinter.c @@ -145,7 +145,7 @@ gtk_printer_class_init (GtkPrinterClass *class) g_param_spec_boolean ("accepts-pdf", P_("Accepts PDF"), P_("TRUE if this printer can accept PDF"), - TRUE, + FALSE, GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (class), PROP_ACCEPTS_PS, @@ -256,7 +256,7 @@ gtk_printer_init (GtkPrinter *printer) priv->is_accepting_jobs = TRUE; priv->is_new = TRUE; priv->has_details = FALSE; - priv->accepts_pdf = TRUE; + priv->accepts_pdf = FALSE; priv->accepts_ps = TRUE; priv->state_message = NULL; @@ -795,6 +795,15 @@ gtk_printer_accepts_pdf (GtkPrinter *printer) return printer->priv->accepts_pdf; } +void +gtk_printer_set_accepts_pdf (GtkPrinter *printer, + gboolean val) +{ + g_return_if_fail (GTK_IS_PRINTER (printer)); + + printer->priv->accepts_pdf = val; +} + /** * gtk_printer_accepts_ps: * @printer: a #GtkPrinter @@ -814,6 +823,15 @@ gtk_printer_accepts_ps (GtkPrinter *printer) return printer->priv->accepts_ps; } +void +gtk_printer_set_accepts_ps (GtkPrinter *printer, + gboolean val) +{ + g_return_if_fail (GTK_IS_PRINTER (printer)); + + printer->priv->accepts_ps = val; +} + gboolean gtk_printer_is_new (GtkPrinter *printer) { diff --git a/gtk/gtkprinter.h b/gtk/gtkprinter.h index ba7506ad32..f2c18c10c2 100644 --- a/gtk/gtkprinter.h +++ b/gtk/gtkprinter.h @@ -124,7 +124,7 @@ gboolean gtk_printer_get_hard_margins (GtkPrinter *pr /** * GtkPrinterFunc: * @printer: a #GtkPrinter - * @data: user data passed to gtk_enumerate_printers() + * @data: (closure): user data passed to gtk_enumerate_printers() * * The type of function passed to gtk_enumerate_printers(). * Note that you need to ref @printer, if you want to keep diff --git a/gtk/gtkprintjob.c b/gtk/gtkprintjob.c index 7dc890b0b4..010669303c 100644 --- a/gtk/gtkprintjob.c +++ b/gtk/gtkprintjob.c @@ -17,6 +17,21 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:gtkprintjob + * @Title: GtkPrintJob + * @Short_description: Represents a print job + * + * A #GtkPrintJob object represents a job that is sent to a + * printer. You only need to deal directly with print jobs if + * you use the non-portable #GtkPrintUnixDialog API. + * + * Use gtk_print_job_get_surface() to obtain the cairo surface + * onto which the pages must be drawn. Use gtk_print_job_send() + * to send the finished job to the printer. If you don't use cairo + * #GtkPrintJob also supports printing of manually generated postscript, + * via gtk_print_job_set_source_file(). + */ #include "config.h" #include #include @@ -50,17 +65,28 @@ struct _GtkPrintJobPrivate cairo_surface_t *surface; GtkPrintStatus status; - GtkPrintBackend *backend; + GtkPrintBackend *backend; GtkPrinter *printer; GtkPrintSettings *settings; GtkPageSetup *page_setup; - guint printer_set : 1; - guint page_setup_set : 1; - guint settings_set : 1; - guint track_print_status : 1; -}; + GtkPrintPages print_pages; + GtkPageRange *page_ranges; + gint num_page_ranges; + GtkPageSet page_set; + gint num_copies; + gdouble scale; + guint number_up; + GtkNumberUpLayout number_up_layout; + guint printer_set : 1; + guint page_setup_set : 1; + guint settings_set : 1; + guint track_print_status : 1; + guint rotate_to_orientation : 1; + guint collate : 1; + guint reverse : 1; +}; #define GTK_PRINT_JOB_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_PRINT_JOB, GtkPrintJobPrivate)) @@ -180,7 +206,7 @@ gtk_print_job_init (GtkPrintJob *job) { GtkPrintJobPrivate *priv; - priv = job->priv = GTK_PRINT_JOB_GET_PRIVATE (job); + priv = job->priv = GTK_PRINT_JOB_GET_PRIVATE (job); priv->spool_io = NULL; @@ -194,18 +220,18 @@ gtk_print_job_init (GtkPrintJob *job) priv->page_setup_set = FALSE; priv->status = GTK_PRINT_STATUS_INITIAL; priv->track_print_status = FALSE; - - job->print_pages = GTK_PRINT_PAGES_ALL; - job->page_ranges = NULL; - job->num_page_ranges = 0; - job->collate = FALSE; - job->reverse = FALSE; - job->num_copies = 1; - job->scale = 1.0; - job->page_set = GTK_PAGE_SET_ALL; - job->rotate_to_orientation = FALSE; - job->number_up = 1; - job->number_up_layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM; + + priv->print_pages = GTK_PRINT_PAGES_ALL; + priv->page_ranges = NULL; + priv->num_page_ranges = 0; + priv->collate = FALSE; + priv->reverse = FALSE; + priv->num_copies = 1; + priv->scale = 1.0; + priv->page_set = GTK_PAGE_SET_ALL; + priv->rotate_to_orientation = FALSE; + priv->number_up = 1; + priv->number_up_layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM; } @@ -250,7 +276,7 @@ gtk_print_job_finalize (GObject *object) g_io_channel_unref (priv->spool_io); priv->spool_io = NULL; } - + if (priv->backend) g_object_unref (priv->backend); @@ -262,13 +288,13 @@ gtk_print_job_finalize (GObject *object) if (priv->settings) g_object_unref (priv->settings); - + if (priv->page_setup) g_object_unref (priv->page_setup); - g_free (job->page_ranges); - job->page_ranges = NULL; - + g_free (priv->page_ranges); + priv->page_ranges = NULL; + g_free (priv->title); priv->title = NULL; @@ -396,7 +422,7 @@ gtk_print_job_set_status (GtkPrintJob *job, /** * gtk_print_job_set_source_file: * @job: a #GtkPrintJob - * @filename: the file to be printed + * @filename: (type filename): the file to be printed * @error: return location for errors * * Make the #GtkPrintJob send an existing document to the @@ -683,3 +709,330 @@ gtk_print_job_send (GtkPrintJob *job, priv->spool_io, callback, user_data, dnotify); } + +/** + * gtk_print_job_get_pages: + * @job: a #GtkPrintJob + * + * Gets the #GtkPrintPages setting for this job. + * + * Returns: the #GtkPrintPages setting + * + * Since: 3.0 + */ +GtkPrintPages +gtk_print_job_get_pages (GtkPrintJob *job) +{ + return job->priv->print_pages; +} + +/** + * gtk_print_job_set_pages: + * @job: a #GtkPrintJob + * @pages: the #GtkPrintPages setting + * + * Sets the #GtkPrintPages setting for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_pages (GtkPrintJob *job, + GtkPrintPages pages) +{ + job->priv->print_pages = pages; +} + +/** + * gtk_print_job_get_page_ranges: + * @job: a #GtkPrintJob + * @n_ranges: (out): return location for the number of ranges + * + * Gets the page ranges for this job. + * + * Returns: a pointer to an array of #GtkPageRange structs + * + * Since: 3.0 + */ +GtkPageRange * +gtk_print_job_get_page_ranges (GtkPrintJob *job, + gint *n_ranges) +{ + *n_ranges = job->priv->num_page_ranges; + return job->priv->page_ranges; +} + +/** + * gtk_print_job_set_page_ranges: + * @job: a #GtkPrintJob + * @ranges: pointer to an array of #GtkPageRange structs + * @n_ranges: the length of the @ranges array + * + * Sets the page ranges for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_page_ranges (GtkPrintJob *job, + GtkPageRange *ranges, + gint n_ranges) +{ + job->priv->page_ranges = ranges; + job->priv->num_page_ranges = n_ranges; +} + +/** + * gtk_print_job_get_page_set: + * @job: a #GtkPrintJob + * + * Gets the #GtkPageSet setting for this job. + * + * Returns: the #GtkPageSet setting + * + * Since: 3.0 + */ +GtkPageSet +gtk_print_job_get_page_set (GtkPrintJob *job) +{ + return job->priv->page_set; +} + +/** + * gtk_print_job_set_page_set: + * @job: a #GtkPrintJob + * @page_set: a #GtkPageSet setting + * + * Sets the #GtkPageSet setting for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_page_set (GtkPrintJob *job, + GtkPageSet page_set) +{ + job->priv->page_set = page_set; +} + +/** + * gtk_print_job_get_num_copies: + * @job: a #GtkPrintJob + * + * Gets the number of copies of this job. + * + * Returns: the number of copies + * + * Since: 3.0 + */ +gint +gtk_print_job_get_num_copies (GtkPrintJob *job) +{ + return job->priv->num_copies; +} + +/** + * gtk_print_job_set_num_copies: + * @job: a #GtkPrintJob + * @num_copies: the number of copies + * + * Sets the number of copies for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_num_copies (GtkPrintJob *job, + gint num_copies) +{ + job->priv->num_copies = num_copies; +} + +/** + * gtk_print_job_get_scale: + * @job: a #GtkPrintJob + * + * Gets the scale for this job (where 1.0 means unscaled). + * + * Returns: the scale + * + * Since: 3.0 + */ +gdouble +gtk_print_job_get_scale (GtkPrintJob *job) + +{ + return job->priv->scale; +} + +/** + * gtk_print_job_set_scale: + * @job: a #GtkPrintJob + * @scale: the scale + * + * Sets the scale for this job (where 1.0 means unscaled). + * + * Since: 3.0 + */ +void +gtk_print_job_set_scale (GtkPrintJob *job, + gdouble scale) +{ + job->priv->scale = scale; +} + +/** + * gtk_print_job_get_n_up: + * @job: a #GtkPrintJob + * + * Gets the n-up setting for this job. + * + * Returns: the n-up setting + * + * Since: 3.0 + */ +guint +gtk_print_job_get_n_up (GtkPrintJob *job) +{ + return job->priv->number_up; +} + +/** + * gtk_print_job_set_n_up: + * @job: a #GtkPrintJob + * @n_up: the n-up value + * + * Sets the n-up setting for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_n_up (GtkPrintJob *job, + guint n_up) +{ + job->priv->number_up = n_up; +} + +/** + * gtk_print_job_get_n_up_layout: + * @job: a #GtkPrintJob + * + * Gets the n-up layout setting for this job. + * + * Returns: the n-up layout + * + * Since: 3.0 + */ +GtkNumberUpLayout +gtk_print_job_get_n_up_layout (GtkPrintJob *job) +{ + return job->priv->number_up_layout; +} + +/** + * gtk_print_job_set_n_up_layout: + * @job: a #GtkPrintJob + * @layout: the n-up layout setting + * + * Sets the n-up layout setting for this job. + * + * Since: 3.0 + */ +void +gtk_print_job_set_n_up_layout (GtkPrintJob *job, + GtkNumberUpLayout layout) +{ + job->priv->number_up_layout = layout; +} + +/** + * gtk_print_job_get_rotate: + * @job: a #GtkPrintJob + * + * Gets whether the job is printed rotated. + * + * Returns: whether the job is printed rotated + * + * Since: 3.0 + */ +gboolean +gtk_print_job_get_rotate (GtkPrintJob *job) +{ + return job->priv->rotate_to_orientation; +} + +/** + * gtk_print_job_set_rotate: + * @job: a #GtkPrintJob + * @rotate: whether to print rotated + * + * Sets whether this job is printed rotated. + * + * Since: 3.0 + */ +void +gtk_print_job_set_rotate (GtkPrintJob *job, + gboolean rotate) +{ + job->priv->rotate_to_orientation = rotate; +} + +/** + * gtk_print_job_get_collate: + * @job: a #GtkPrintJob + * + * Gets whether this job is printed collated. + * + * Returns: whether the job is printed collated + * + * Since: 3.0 + */ +gboolean +gtk_print_job_get_collate (GtkPrintJob *job) +{ + return job->priv->collate; +} + +/** + * gtk_print_job_set_collated: + * @job: a #GtkPrintJob + * @collate: whether the job is printed collated + * + * Sets whether this job is printed collated. + * + * Since: 3.0 + */ +void +gtk_print_job_set_collate (GtkPrintJob *job, + gboolean collate) +{ + job->priv->collate = collate; +} + +/** + * gtk_print_job_get_reverse: + * @job: a #GtkPrintJob + * + * Gets whether this job is printed reversed. + * + * Returns: whether the job is printed reversed. + * + * Since: 3.0 + */ +gboolean +gtk_print_job_get_reverse (GtkPrintJob *job) +{ + return job->priv->reverse; +} + +/** + * gtk_print_job_set_reverse: + * @job: a #GtkPrintJob + * @reverse: whether the job is printed reversed + * + * Sets whether this job is printed reversed. + * + * Since: 3.0 + */ +void +gtk_print_job_set_reverse (GtkPrintJob *job, + gboolean reverse) +{ + job->priv->reverse = reverse; +} diff --git a/gtk/gtkprintjob.h b/gtk/gtkprintjob.h index 4f3c76181c..d09004a63f 100644 --- a/gtk/gtkprintjob.h +++ b/gtk/gtkprintjob.h @@ -42,6 +42,16 @@ typedef struct _GtkPrintJob GtkPrintJob; typedef struct _GtkPrintJobClass GtkPrintJobClass; typedef struct _GtkPrintJobPrivate GtkPrintJobPrivate; +/** + * GtkPrintJobCompleteFunc: + * @print_job: the #GtkPrintJob + * @user_data: user data that has been passed to gtk_print_job_send() + * @error: a #GError that contains error information if the sending + * of the print job failed, otherwise %NULL + * + * The type of callback that is passed to gtk_print_job_send(). + * It is called when the print job has been completely sent. + */ typedef void (*GtkPrintJobCompleteFunc) (GtkPrintJob *print_job, gpointer user_data, const GError *error); @@ -52,22 +62,7 @@ struct _GtkPrintJob { GObject parent_instance; - GtkPrintJobPrivate *GSEAL (priv); - - /* Settings the client has to implement: - * (These are read-only, set at initialization) - */ - GtkPrintPages GSEAL (print_pages); - GtkPageRange *GSEAL (page_ranges); - gint GSEAL (num_page_ranges); - GtkPageSet GSEAL (page_set); - gint GSEAL (num_copies); - gdouble GSEAL (scale); - guint GSEAL (rotate_to_orientation) : 1; - guint GSEAL (collate) : 1; - guint GSEAL (reverse) : 1; - guint GSEAL (number_up); - GtkNumberUpLayout GSEAL (number_up_layout); + GtkPrintJobPrivate *priv; }; struct _GtkPrintJobClass @@ -105,6 +100,39 @@ void gtk_print_job_send (GtkPrintJob gpointer user_data, GDestroyNotify dnotify); +GtkPrintPages gtk_print_job_get_pages (GtkPrintJob *job); +void gtk_print_job_set_pages (GtkPrintJob *job, + GtkPrintPages pages); +GtkPageRange * gtk_print_job_get_page_ranges (GtkPrintJob *job, + gint *n_ranges); +void gtk_print_job_set_page_ranges (GtkPrintJob *job, + GtkPageRange *ranges, + gint n_ranges); +GtkPageSet gtk_print_job_get_page_set (GtkPrintJob *job); +void gtk_print_job_set_page_set (GtkPrintJob *job, + GtkPageSet page_set); +gint gtk_print_job_get_num_copies (GtkPrintJob *job); +void gtk_print_job_set_num_copies (GtkPrintJob *job, + gint num_copies); +gdouble gtk_print_job_get_scale (GtkPrintJob *job); +void gtk_print_job_set_scale (GtkPrintJob *job, + gdouble scale); +guint gtk_print_job_get_n_up (GtkPrintJob *job); +void gtk_print_job_set_n_up (GtkPrintJob *job, + guint n_up); +GtkNumberUpLayout gtk_print_job_get_n_up_layout (GtkPrintJob *job); +void gtk_print_job_set_n_up_layout (GtkPrintJob *job, + GtkNumberUpLayout layout); +gboolean gtk_print_job_get_rotate (GtkPrintJob *job); +void gtk_print_job_set_rotate (GtkPrintJob *job, + gboolean rotate); +gboolean gtk_print_job_get_collate (GtkPrintJob *job); +void gtk_print_job_set_collate (GtkPrintJob *job, + gboolean collate); +gboolean gtk_print_job_get_reverse (GtkPrintJob *job); +void gtk_print_job_set_reverse (GtkPrintJob *job, + gboolean reverse); + G_END_DECLS #endif /* __GTK_PRINT_JOB_H__ */ diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c index d43db01e51..2431371f0c 100644 --- a/gtk/gtkprintoperation-unix.c +++ b/gtk/gtkprintoperation-unix.c @@ -201,8 +201,8 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, GtkWindow *parent, const gchar *filename) { - gint argc; - gchar **argv; + GAppInfo *appinfo; + GdkAppLaunchContext *context; gchar *cmd; gchar *preview_cmd; GtkSettings *settings; @@ -276,7 +276,11 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, quoted_filename = g_shell_quote (filename); quoted_settings_filename = g_shell_quote (settings_filename); cmd = shell_command_substitute_file (preview_cmd, quoted_filename, quoted_settings_filename, &filename_used, &settings_used); - g_shell_parse_argv (cmd, &argc, &argv, &error); + + appinfo = g_app_info_create_from_commandline (cmd, + "Print Preview", + G_APP_INFO_CREATE_NONE, + &error); g_free (preview_cmd); g_free (quoted_filename); @@ -286,9 +290,12 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, if (error != NULL) goto out; - gdk_spawn_on_screen (screen, NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error); + context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen)); + gdk_app_launch_context_set_screen (context, screen); + g_app_info_launch (appinfo, NULL, G_APP_LAUNCH_CONTEXT (context), &error); - g_strfreev (argv); + g_object_unref (context); + g_object_unref (appinfo); if (error != NULL) { @@ -311,9 +318,9 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, else g_error_free (error); - filename_used = FALSE; + filename_used = FALSE; settings_used = FALSE; - } + } if (!filename_used) g_unlink (filename); @@ -323,7 +330,7 @@ _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, if (fd > 0) close (fd); - + if (key_file) g_key_file_free (key_file); g_free (data); @@ -577,18 +584,16 @@ finish_print (PrintResponseData *rdata, g_signal_connect (job, "status-changed", G_CALLBACK (job_status_changed_cb), op); - priv->print_pages = job->print_pages; - priv->page_ranges = job->page_ranges; - priv->num_page_ranges = job->num_page_ranges; - - priv->manual_num_copies = job->num_copies; - priv->manual_collation = job->collate; - priv->manual_reverse = job->reverse; - priv->manual_page_set = job->page_set; - priv->manual_scale = job->scale; - priv->manual_orientation = job->rotate_to_orientation; - priv->manual_number_up = job->number_up; - priv->manual_number_up_layout = job->number_up_layout; + priv->print_pages = gtk_print_job_get_pages (job); + priv->page_ranges = gtk_print_job_get_page_ranges (job, &priv->num_page_ranges); + priv->manual_num_copies = gtk_print_job_get_num_copies (job); + priv->manual_collation = gtk_print_job_get_collate (job); + priv->manual_reverse = gtk_print_job_get_reverse (job); + priv->manual_page_set = gtk_print_job_get_page_set (job); + priv->manual_scale = gtk_print_job_get_scale (job); + priv->manual_orientation = gtk_print_job_get_rotate (job); + priv->manual_number_up = gtk_print_job_get_n_up (job); + priv->manual_number_up_layout = gtk_print_job_get_n_up_layout (job); } } out: @@ -635,7 +640,11 @@ handle_print_response (GtkWidget *dialog, settings = gtk_print_unix_dialog_get_settings (GTK_PRINT_UNIX_DIALOG (pd)); page_setup = gtk_print_unix_dialog_get_page_setup (GTK_PRINT_UNIX_DIALOG (pd)); page_setup_set = gtk_print_unix_dialog_get_page_setup_set (GTK_PRINT_UNIX_DIALOG (pd)); - + + /* Set new print settings now so that custom-widget options + * can be added to the settings in the callback + */ + gtk_print_operation_set_print_settings (rdata->op, settings); g_signal_emit_by_name (rdata->op, "custom-widget-apply", rdata->op->priv->custom_widget); } diff --git a/gtk/gtkprintoperation-win32.c b/gtk/gtkprintoperation-win32.c index aee3b500ee..29550b7a8e 100644 --- a/gtk/gtkprintoperation-win32.c +++ b/gtk/gtkprintoperation-win32.c @@ -655,7 +655,7 @@ static HWND get_parent_hwnd (GtkWidget *widget) { gtk_widget_realize (widget); - return gdk_win32_drawable_get_handle (gtk_widget_get_window (widget)); + return gdk_win32_window_get_handle (gtk_widget_get_window (widget)); } static void diff --git a/gtk/gtkprintoperation.c b/gtk/gtkprintoperation.c index a8101746d1..456a6ab7e0 100644 --- a/gtk/gtkprintoperation.c +++ b/gtk/gtkprintoperation.c @@ -21,16 +21,19 @@ #include "config.h" #include -#include +#include #include - #include + +#include + #include "gtkprintoperation-private.h" #include "gtkmarshalers.h" -#include #include "gtkintl.h" #include "gtkprivate.h" +#include "gtkmainprivate.h" #include "gtkmessagedialog.h" +#include "gtktypebuiltins.h" #define SHOW_PROGRESS_TIME 1200 @@ -1888,7 +1891,7 @@ gtk_print_operation_set_custom_tab_label (GtkPrintOperation *op, /** * gtk_print_operation_set_export_filename: * @op: a #GtkPrintOperation - * @filename: the filename for the exported file + * @filename: (type filename): the filename for the exported file * * Sets up the #GtkPrintOperation to generate a file instead * of showing the print dialog. The indended use of this function diff --git a/gtk/gtkprintoperation.h b/gtk/gtkprintoperation.h index bba15cc632..5c2b2167e8 100644 --- a/gtk/gtkprintoperation.h +++ b/gtk/gtkprintoperation.h @@ -196,6 +196,17 @@ GtkPageSetup *gtk_print_run_page_setup_dialog (GtkWindow GtkPageSetup *page_setup, GtkPrintSettings *settings); +/** + * GtkPageSetupDoneFunc: + * @page_setup: the #GtkPageSetup that has been + * @data: (closure): user data that has been passed to + * gtk_print_run_page_setup_dialog_async(). + * + * The type of function that is passed to + * gtk_print_run_page_setup_dialog_async(). This function will be + * called when the page setup dialog is dismissed, and also serves as + * destroy notify for @data. + */ typedef void (* GtkPageSetupDoneFunc) (GtkPageSetup *page_setup, gpointer data); diff --git a/gtk/gtkprintsettings.c b/gtk/gtkprintsettings.c index 2235864869..655c971514 100644 --- a/gtk/gtkprintsettings.c +++ b/gtk/gtkprintsettings.c @@ -19,12 +19,16 @@ */ #include "config.h" + #include #include + #include -#include + #include "gtkprintsettings.h" #include "gtkprintutils.h" +#include "gtktypebuiltins.h" +#include "gtkwidget.h" typedef struct _GtkPrintSettingsClass GtkPrintSettingsClass; @@ -1672,7 +1676,7 @@ gtk_print_settings_set_output_bin (GtkPrintSettings *settings, /** * gtk_print_settings_load_file: * @settings: a #GtkPrintSettings - * @file_name: the filename to read the settings from + * @file_name: (type filename): the filename to read the settings from * @error: (allow-none): return location for errors, or %NULL * * Reads the print settings from @file_name. If the file could not be loaded @@ -1707,7 +1711,7 @@ gtk_print_settings_load_file (GtkPrintSettings *settings, /** * gtk_print_settings_new_from_file: - * @file_name: the filename to read the settings from + * @file_name: (type filename): the filename to read the settings from * @error: (allow-none): return location for errors, or %NULL * * Reads the print settings from @file_name. Returns a new #GtkPrintSettings @@ -1832,7 +1836,7 @@ gtk_print_settings_new_from_key_file (GKeyFile *key_file, /** * gtk_print_settings_to_file: * @settings: a #GtkPrintSettings - * @file_name: the file to save to + * @file_name: (type filename): the file to save to * @error: (allow-none): return location for errors, or %NULL * * This function saves the print settings from @settings to @file_name. If the diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index b90f7a37f7..d4d1211759 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -20,14 +20,20 @@ */ #include "config.h" + #include #include #include #include #include -#include "gtkintl.h" -#include "gtkprivate.h" +#include "gtkprintunixdialog.h" + +#include "gtkcustompaperunixdialog.h" +#include "gtkprintbackend.h" +#include "gtkprinter-private.h" +#include "gtkprinteroptionwidget.h" +#include "gtkprintutils.h" #include "gtkspinbutton.h" #include "gtkcellrendererpixbuf.h" @@ -49,18 +55,13 @@ #include "gtklabel.h" #include "gtkeventbox.h" #include "gtkbuildable.h" - -#include "gtkcustompaperunixdialog.h" -#include "gtkprintbackend.h" -#include "gtkprinter-private.h" -#include "gtkprintunixdialog.h" -#include "gtkprinteroptionwidget.h" -#include "gtkprintutils.h" - #include "gtkmessagedialog.h" #include "gtkbutton.h" +#include "gtkintl.h" +#include "gtkprivate.h" +#include "gtktypebuiltins.h" -#define EXAMPLE_PAGE_AREA_SIZE 140 +#define EXAMPLE_PAGE_AREA_SIZE 110 #define RULER_DISTANCE 7.5 #define RULER_RADIUS 2 @@ -75,8 +76,7 @@ static void gtk_print_unix_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gtk_print_unix_dialog_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_print_unix_dialog_style_updated (GtkWidget *widget); static void populate_dialog (GtkPrintUnixDialog *dialog); static void unschedule_idle_mark_conflicts (GtkPrintUnixDialog *dialog); static void selected_printer_changed (GtkTreeSelection *selection, @@ -290,7 +290,7 @@ gtk_print_unix_dialog_class_init (GtkPrintUnixDialogClass *class) object_class->set_property = gtk_print_unix_dialog_set_property; object_class->get_property = gtk_print_unix_dialog_get_property; - widget_class->style_set = gtk_print_unix_dialog_style_set; + widget_class->style_updated = gtk_print_unix_dialog_style_updated; g_object_class_install_property (object_class, PROP_PAGE_SETUP, @@ -402,7 +402,7 @@ set_busy_cursor (GtkPrintUnixDialog *dialog, gdk_display_flush (display); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -1928,6 +1928,7 @@ selected_printer_changed (GtkTreeSelection *selection, priv->options_changed_handler = g_signal_connect_swapped (priv->options, "changed", G_CALLBACK (options_changed_cb), dialog); + schedule_idle_mark_conflicts (dialog); } update_dialog_from_settings (dialog); @@ -1958,9 +1959,10 @@ paint_page (GtkWidget *widget, gchar *text, gint text_x) { - GtkStyle *style; + GtkStyleContext *context; gint x, y, width, height; gint text_y, linewidth; + GdkRGBA color; x = x_offset * scale; y = y_offset * scale; @@ -1970,13 +1972,18 @@ paint_page (GtkWidget *widget, linewidth = 2; text_y = 21; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); - gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + + gtk_style_context_get_background_color (context, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_rectangle (cr, x, y, width, height); cairo_fill (cr); - gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); + gtk_style_context_get_color (context, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_set_line_width (cr, linewidth); cairo_rectangle (cr, x + linewidth/2.0, y + linewidth/2.0, width - linewidth, height - linewidth); cairo_stroke (cr); @@ -1987,6 +1994,8 @@ paint_page (GtkWidget *widget, cairo_set_font_size (cr, (gint)(9 * scale)); cairo_move_to (cr, x + (gint)(text_x * scale), y + (gint)(text_y * scale)); cairo_show_text (cr, text); + + gtk_style_context_restore (context); } static gboolean @@ -2033,10 +2042,9 @@ draw_collate_cb (GtkWidget *widget, } static void -gtk_print_unix_dialog_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_print_unix_dialog_style_updated (GtkWidget *widget) { - GTK_WIDGET_CLASS (gtk_print_unix_dialog_parent_class)->style_set (widget, previous_style); + GTK_WIDGET_CLASS (gtk_print_unix_dialog_parent_class)->style_updated (widget); if (gtk_widget_has_screen (widget)) { @@ -2587,7 +2595,7 @@ draw_page_cb (GtkWidget *widget, GtkPrintUnixDialog *dialog) { GtkPrintUnixDialogPrivate *priv = dialog->priv; - GtkStyle *style; + GtkStyleContext *context; gdouble ratio; gint w, h, tmp, shadow_offset; gint pages_x, pages_y, i, x, y, layout_w, layout_h; @@ -2597,7 +2605,7 @@ draw_page_cb (GtkWidget *widget, PangoLayout *layout; PangoFontDescription *font; gchar *text; - GdkColor *color; + GdkRGBA color; GtkNumberUpLayout number_up_layout; gint start_x, end_x, start_y, end_y; gint dx, dy; @@ -2696,7 +2704,10 @@ draw_page_cb (GtkWidget *widget, pages_y = tmp; } - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); pos_x = (width - w) / 2; pos_y = (height - h) / 2 - 10; @@ -2704,18 +2715,20 @@ draw_page_cb (GtkWidget *widget, shadow_offset = 3; - color = &style->text[GTK_STATE_NORMAL]; - cairo_set_source_rgba (cr, color->red / 65535., color->green / 65535., color->blue / 65535, 0.5); + gtk_style_context_get_color (context, 0, &color); + cairo_set_source_rgba (cr, color.red, color.green, color.blue, 0.5); cairo_rectangle (cr, shadow_offset + 1, shadow_offset + 1, w, h); cairo_fill (cr); - gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]); + gtk_style_context_get_background_color (context, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_rectangle (cr, 1, 1, w, h); cairo_fill (cr); cairo_set_line_width (cr, 1.0); cairo_rectangle (cr, 0.5, 0.5, w + 1, h + 1); - gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); + gtk_style_context_get_color (context, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_stroke (cr); i = 1; @@ -2983,6 +2996,8 @@ draw_page_cb (GtkWidget *widget, cairo_stroke (cr); } + gtk_style_context_restore (context); + return TRUE; } @@ -3516,7 +3531,7 @@ create_page_setup_page (GtkPrintUnixDialog *dialog) draw = gtk_drawing_area_new (); gtk_widget_set_has_window (draw, FALSE); priv->page_layout_preview = draw; - gtk_widget_set_size_request (draw, 350, 200); + gtk_widget_set_size_request (draw, 280, 160); g_signal_connect (draw, "draw", G_CALLBACK (draw_page_cb), dialog); gtk_widget_show (draw); diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h index d5d7c3ed1f..458a4b95ae 100644 --- a/gtk/gtkprivate.h +++ b/gtk/gtkprivate.h @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -29,6 +29,8 @@ #include +#include "gtksettings.h" + G_BEGIN_DECLS #ifdef G_OS_WIN32 @@ -65,9 +67,21 @@ const gchar *_gtk_get_data_prefix (); #define GTK_DEFAULT_ACCEL_MOD_MASK GDK_META_MASK #endif -gboolean _gtk_fnmatch (const char *pattern, - const char *string, - gboolean no_leading_period); +gboolean _gtk_fnmatch (const char *pattern, + const char *string, + gboolean no_leading_period); + +gchar *_gtk_get_lc_ctype (void); + +gchar * _gtk_find_module (const gchar *name, + const gchar *type); +gchar **_gtk_get_module_path (const gchar *type); + +void _gtk_modules_init (gint *argc, + gchar ***argv, + const gchar *gtk_modules_args); +void _gtk_modules_settings_changed (GtkSettings *settings, + const gchar *modules); G_END_DECLS diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c index 9cca76b328..821cd8c648 100644 --- a/gtk/gtkprogressbar.c +++ b/gtk/gtkprogressbar.c @@ -179,6 +179,16 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class) NULL, GTK_PARAM_READWRITE)); + /** + * GtkProgressBar:show_text: + * + * Sets whether the progressbar will show text superimposed + * over the bar. The shown text is either the value of + * the #GtkProgressBar::text property or, if that is %NULL, + * the #GtkProgressBar::fraction value, as a percentage. + * + * Since: 3.0 + */ g_object_class_install_property (gobject_class, PROP_SHOW_TEXT, g_param_spec_boolean ("show-text", @@ -415,11 +425,15 @@ gtk_progress_bar_real_update (GtkProgressBar *pbar) if (priv->activity_mode) { GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; guint size; gtk_widget_get_allocation (widget, &allocation); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); /* advance the block */ if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) @@ -432,18 +446,18 @@ gtk_progress_bar_real_update (GtkProgressBar *pbar) if (priv->activity_dir == 0) { priv->activity_pos += priv->activity_step; - if (priv->activity_pos + size >= allocation.width - style->xthickness) + if (priv->activity_pos + size >= allocation.width - padding.left) { - priv->activity_pos = allocation.width - style->xthickness - size; + priv->activity_pos = allocation.width - padding.left - size; priv->activity_dir = 1; } } else { priv->activity_pos -= priv->activity_step; - if (priv->activity_pos <= style->xthickness) + if (priv->activity_pos <= padding.left) { - priv->activity_pos = style->xthickness; + priv->activity_pos = padding.left; priv->activity_dir = 0; } } @@ -458,18 +472,18 @@ gtk_progress_bar_real_update (GtkProgressBar *pbar) if (priv->activity_dir == 0) { priv->activity_pos += priv->activity_step; - if (priv->activity_pos + size >= allocation.height - style->ythickness) + if (priv->activity_pos + size >= allocation.height - padding.top) { - priv->activity_pos = allocation.height - style->ythickness - size; + priv->activity_pos = allocation.height - padding.top - size; priv->activity_dir = 1; } } else { priv->activity_pos -= priv->activity_step; - if (priv->activity_pos <= style->ythickness) + if (priv->activity_pos <= padding.top) { - priv->activity_pos = style->ythickness; + priv->activity_pos = padding.top; priv->activity_dir = 0; } } @@ -507,7 +521,9 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget, { GtkProgressBar *pbar; GtkProgressBarPrivate *priv; - GtkStyle *style; + GtkStyleContext *style_context; + GtkStateFlags state; + GtkBorder padding; gchar *buf; PangoRectangle logical_rect; PangoLayout *layout; @@ -517,7 +533,10 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget, g_return_if_fail (GTK_IS_PROGRESS_BAR (widget)); - style = gtk_widget_get_style (widget); + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (style_context, state, &padding); + gtk_widget_style_get (widget, "xspacing", &xspacing, NULL); @@ -525,7 +544,7 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget, pbar = GTK_PROGRESS_BAR (widget); priv = pbar->priv; - width = 2 * style->xthickness + xspacing; + width = padding.left + padding.right + xspacing; if (priv->show_text) { @@ -536,13 +555,15 @@ gtk_progress_bar_get_preferred_width (GtkWidget *widget, if (priv->ellipsize) { + const PangoFontDescription *font_desc; PangoContext *context; PangoFontMetrics *metrics; gint char_width; /* The minimum size for ellipsized text is ~ 3 chars */ context = pango_layout_get_context (layout); - metrics = pango_context_get_metrics (context, style->font_desc, pango_context_get_language (context)); + font_desc = gtk_style_context_get_font (style_context, state); + metrics = pango_context_get_metrics (context, font_desc, pango_context_get_language (context)); char_width = pango_font_metrics_get_approximate_char_width (metrics); pango_font_metrics_unref (metrics); @@ -575,7 +596,9 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget, { GtkProgressBar *pbar; GtkProgressBarPrivate *priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gchar *buf; PangoRectangle logical_rect; PangoLayout *layout; @@ -585,7 +608,10 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget, g_return_if_fail (GTK_IS_PROGRESS_BAR (widget)); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_widget_style_get (widget, "yspacing", &yspacing, NULL); @@ -593,7 +619,7 @@ gtk_progress_bar_get_preferred_height (GtkWidget *widget, pbar = GTK_PROGRESS_BAR (widget); priv = pbar->priv; - height = 2 * style->ythickness + yspacing; + height = padding.top + padding.bottom + yspacing; if (priv->show_text) { @@ -625,12 +651,16 @@ gtk_progress_bar_act_mode_enter (GtkProgressBar *pbar) { GtkProgressBarPrivate *priv = pbar->priv; GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkWidget *widget = GTK_WIDGET (pbar); GtkOrientation orientation; gboolean inverted; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); orientation = priv->orientation; inverted = priv->inverted; @@ -646,14 +676,14 @@ gtk_progress_bar_act_mode_enter (GtkProgressBar *pbar) { if (!inverted) { - priv->activity_pos = style->xthickness; + priv->activity_pos = padding.left; priv->activity_dir = 0; } else { gtk_widget_get_allocation (widget, &allocation); - priv->activity_pos = allocation.width - style->xthickness - - (allocation.height - style->ythickness * 2); + priv->activity_pos = allocation.width - padding.left - + (allocation.height - padding.top - padding.bottom); priv->activity_dir = 1; } } @@ -661,14 +691,14 @@ gtk_progress_bar_act_mode_enter (GtkProgressBar *pbar) { if (!inverted) { - priv->activity_pos = style->ythickness; + priv->activity_pos = padding.top; priv->activity_dir = 0; } else { gtk_widget_get_allocation (widget, &allocation); - priv->activity_pos = allocation.height - style->ythickness - - (allocation.width - style->xthickness * 2); + priv->activity_pos = allocation.height - padding.top - + (allocation.width - padding.left - padding.right); priv->activity_dir = 1; } } @@ -702,30 +732,35 @@ gtk_progress_bar_paint_activity (GtkProgressBar *pbar, int width, int height) { - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkWidget *widget = GTK_WIDGET (pbar); GdkRectangle area; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); if (orientation == GTK_ORIENTATION_HORIZONTAL) { gtk_progress_bar_get_activity (pbar, orientation, &area.x, &area.width); - area.y = style->ythickness; - area.height = height - 2 * style->ythickness; + area.y = padding.top; + area.height = height - padding.top - padding.bottom; } else { gtk_progress_bar_get_activity (pbar, orientation, &area.y, &area.height); - area.x = style->xthickness; - area.width = width - 2 * style->xthickness; + area.x = padding.left; + area.width = width - padding.left - padding.right; } - gtk_paint_box (style, - cr, - GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, - widget, "bar", - area.x, area.y, area.width, area.height); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); + + gtk_render_activity (context, cr, area.x, area.y, area.width, area.height); + + gtk_style_context_restore (context); } static void @@ -737,41 +772,48 @@ gtk_progress_bar_paint_continuous (GtkProgressBar *pbar, int width, int height) { - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkWidget *widget = GTK_WIDGET (pbar); GdkRectangle area; if (amount <= 0) return; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); if (orientation == GTK_ORIENTATION_HORIZONTAL) { area.width = amount; - area.height = height - style->ythickness * 2; - area.y = style->ythickness; + area.height = height - padding.top - padding.bottom; + area.y = padding.top; - area.x = style->xthickness; - if (inverted) - area.x = width - amount - area.x; + if (!inverted) + area.x = padding.left; + else + area.x = width - amount - padding.right; } else { - area.width = width - style->xthickness * 2; + area.width = width - padding.left - padding.right; area.height = amount; - area.x = style->xthickness; + area.x = padding.left; - area.y = style->ythickness; - if (inverted) - area.y = height - amount - area.y; + if (!inverted) + area.y = padding.top; + else + area.y = height - amount - padding.bottom; } - gtk_paint_box (style, - cr, - GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, - widget, "bar", - area.x, area.y, area.width, area.height); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); + + gtk_render_activity (context, cr, area.x, area.y, area.width, area.height); + + gtk_style_context_restore (context); } static void @@ -785,7 +827,9 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar, int height) { GtkProgressBarPrivate *priv = pbar->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GtkWidget *widget = GTK_WIDGET (pbar); gint x; gint y; @@ -797,7 +841,9 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar, gfloat text_xalign = 0.5; gfloat text_yalign = 0.5; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); if (gtk_widget_get_direction (widget) != GTK_TEXT_DIR_LTR) text_xalign = 1.0 - text_xalign; @@ -811,14 +857,13 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar, pango_layout_get_pixel_extents (layout, NULL, &logical_rect); - x = style->xthickness + 1 + text_xalign * (width - 2 * style->xthickness - 2 - logical_rect.width); + x = padding.left + 1 + text_xalign * (width - padding.left - padding.right - 2 - logical_rect.width); + y = padding.top + 1 + text_yalign * (height - padding.top - padding.bottom - 2 - logical_rect.height); - y = style->ythickness + 1 + text_yalign * (height - 2 * style->ythickness - 2 - logical_rect.height); - - rect.x = style->xthickness; - rect.y = style->ythickness; - rect.width = width - 2 * style->xthickness; - rect.height = height - 2 * style->ythickness; + rect.x = padding.left; + rect.y = padding.top; + rect.width = width - padding.left - padding.right; + rect.height = height - padding.top - padding.bottom; prelight_clip = start_clip = end_clip = rect; @@ -869,19 +914,16 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar, } } + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH); + if (start_clip.width > 0 && start_clip.height > 0) { cairo_save (cr); gdk_cairo_rectangle (cr, &start_clip); cairo_clip (cr); - gtk_paint_layout (style, - cr, - GTK_STATE_NORMAL, - FALSE, - widget, - "progressbar", - x, y, - layout); + + gtk_render_layout (context, cr, x, y, layout); cairo_restore (cr); } @@ -890,28 +932,23 @@ gtk_progress_bar_paint_text (GtkProgressBar *pbar, cairo_save (cr); gdk_cairo_rectangle (cr, &end_clip); cairo_clip (cr); - gtk_paint_layout (style, - cr, - GTK_STATE_NORMAL, - FALSE, - widget, - "progressbar", - x, y, - layout); + + gtk_render_layout (context, cr, x, y, layout); cairo_restore (cr); } + gtk_style_context_restore (context); + cairo_save (cr); gdk_cairo_rectangle (cr, &prelight_clip); cairo_clip (cr); - gtk_paint_layout (style, - cr, - GTK_STATE_PRELIGHT, - FALSE, - widget, - "progressbar", - x, y, - layout); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); + + gtk_render_layout (context, cr, x, y, layout); + + gtk_style_context_restore (context); cairo_restore (cr); g_object_unref (layout); @@ -926,10 +963,13 @@ gtk_progress_bar_draw (GtkWidget *widget, GtkProgressBarPrivate *priv = pbar->priv; GtkOrientation orientation; gboolean inverted; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; int width, height; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); orientation = priv->orientation; inverted = priv->inverted; @@ -941,12 +981,15 @@ gtk_progress_bar_draw (GtkWidget *widget, width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); - gtk_paint_box (style, - cr, - GTK_STATE_NORMAL, GTK_SHADOW_IN, - widget, "trough", - 0, 0, - width, height); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH); + + gtk_render_background (context, cr, 0, 0, width, height); + gtk_render_frame (context, cr, 0, 0, width, height); + + gtk_style_context_get_padding (context, state, &padding); + + gtk_style_context_restore (context); if (priv->activity_mode) { @@ -972,9 +1015,9 @@ gtk_progress_bar_draw (GtkWidget *widget, gint space; if (orientation == GTK_ORIENTATION_HORIZONTAL) - space = width - 2 * style->xthickness; + space = width - padding.left - padding.right; else - space = height - 2 * style->ythickness; + space = height - padding.top - padding.bottom; amount = space * gtk_progress_bar_get_fraction (pbar); @@ -1165,6 +1208,7 @@ gtk_progress_bar_set_orientation (GtkProgressBar *pbar, if (priv->orientation != orientation) { priv->orientation = orientation; + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (pbar)); if (gtk_widget_is_drawable (GTK_WIDGET (pbar))) gtk_widget_queue_resize (GTK_WIDGET (pbar)); diff --git a/gtk/gtkquartz.c b/gtk/gtkquartz.c index e8945591a4..d691f7f254 100644 --- a/gtk/gtkquartz.c +++ b/gtk/gtkquartz.c @@ -21,6 +21,7 @@ #include "config.h" #include "gtkquartz.h" +#include "gtkselectionprivate.h" #include NSImage * @@ -290,30 +291,17 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard, } else if ([type isEqualTo:NSURLPboardType]) { - gchar **list = NULL; - int count; + gchar **uris; - count = gdk_text_property_to_utf8_list_for_display (display, - gdk_atom_intern_static_string ("UTF8_STRING"), - format, - data, - length, - &list); - - if (count > 0) + uris = gtk_selection_data_get_uris (selection_data); + if (uris != NULL) { - gchar **result; NSURL *url; - result = g_uri_list_extract_uris (list[0]); - - url = [NSURL URLWithString:[NSString stringWithUTF8String:result[0]]]; + url = [NSURL URLWithString:[NSString stringWithUTF8String:uris[0]]]; [url writeToPasteboard:pasteboard]; - - g_strfreev (result); } - - g_strfreev (list); + g_strfreev (uris); } else [pasteboard setData:[NSData dataWithBytesNoCopy:(void *)data diff --git a/gtk/gtkradioaction.c b/gtk/gtkradioaction.c index 47cb3f4c5c..e225825537 100644 --- a/gtk/gtkradioaction.c +++ b/gtk/gtkradioaction.c @@ -193,10 +193,11 @@ gtk_radio_action_init (GtkRadioAction *action) /** * gtk_radio_action_new: * @name: A unique name for the action - * @label: (allow-none): The label displayed in menu items and on buttons, or %NULL + * @label: (allow-none): The label displayed in menu items and on buttons, + * or %NULL * @tooltip: (allow-none): A tooltip for this action, or %NULL - * @stock_id: The stock icon to display in widgets representing this - * action, or %NULL + * @stock_id: (allow-none): The stock icon to display in widgets representing + * this action, or %NULL * @value: The value which gtk_radio_action_get_current_value() should * return if this action is selected. * diff --git a/gtk/gtkradiobutton.c b/gtk/gtkradiobutton.c index 424d8505f4..0eff06f197 100644 --- a/gtk/gtkradiobutton.c +++ b/gtk/gtkradiobutton.c @@ -175,7 +175,7 @@ gtk_radio_button_class_init (GtkRadioButtonClass *class) /** * GtkRadioButton::group-changed: - * @style: the object which received the signal + * @button: the object which received the signal * * Emitted when the group of radio buttons that a radio button belongs * to changes. This is emitted when a radio button switches from @@ -952,7 +952,7 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button, allocation.width - (2 * border_width), allocation.height - (2 * border_width)); - gtk_style_context_add_class (context, GTK_STYLE_CLASS_CHECK); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_RADIO); gtk_render_option (context, cr, x, y, indicator_size, indicator_size); diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 3345e88a32..dc4b60a7b2 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -30,8 +30,7 @@ #include #include -#include -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkorientable.h" #include "gtkrange.h" @@ -40,6 +39,7 @@ #include "gtkwindow.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" /** * SECTION:gtkrange @@ -87,7 +87,6 @@ struct _GtkRangePrivate GtkOrientation orientation; GtkSensitivityType lower_sensitivity; GtkSensitivityType upper_sensitivity; - GtkUpdateType update_policy; GdkDevice *grab_device; GdkRectangle range_rect; /* Area of entire stepper + trough assembly in widget->window coords */ @@ -118,7 +117,6 @@ struct _GtkRangePrivate gint slider_end; guint repaint_id; - guint update_timeout_id; /* Steppers are: < > ---- < > * a b c d @@ -133,7 +131,6 @@ struct _GtkRangePrivate guint need_recalc : 1; guint slider_size_fixed : 1; guint trough_click_forward : 1; /* trough click was on the forward side of slider */ - guint update_pending : 1; /* need to emit value_changed */ /* Stepper sensitivity */ guint lower_sensitive : 1; @@ -148,14 +145,14 @@ struct _GtkRangePrivate enum { PROP_0, PROP_ORIENTATION, - PROP_UPDATE_POLICY, PROP_ADJUSTMENT, PROP_INVERTED, PROP_LOWER_STEPPER_SENSITIVITY, PROP_UPPER_STEPPER_SENSITIVITY, PROP_SHOW_FILL_LEVEL, PROP_RESTRICT_TO_FILL_LEVEL, - PROP_FILL_LEVEL + PROP_FILL_LEVEL, + PROP_ROUND_DIGITS }; enum { @@ -214,12 +211,11 @@ static gboolean gtk_range_grab_broken (GtkWidget *widget, GdkEventGrabBroken *event); static void gtk_range_grab_notify (GtkWidget *widget, gboolean was_grabbed); -static void gtk_range_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_range_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gboolean gtk_range_scroll_event (GtkWidget *widget, GdkEventScroll *event); -static void gtk_range_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_range_style_updated (GtkWidget *widget); static void update_slider_position (GtkRange *range, gint mouse_x, gint mouse_y); @@ -267,14 +263,11 @@ static void gtk_range_adjustment_changed (GtkAdjustment *adjustme static void gtk_range_add_step_timer (GtkRange *range, GtkScrollType step); static void gtk_range_remove_step_timer (GtkRange *range); -static void gtk_range_reset_update_timer (GtkRange *range); -static void gtk_range_remove_update_timer (GtkRange *range); static GdkRectangle* get_area (GtkRange *range, MouseLocation location); static gboolean gtk_range_real_change_value (GtkRange *range, GtkScrollType scroll, gdouble value); -static void gtk_range_update_value (GtkRange *range); static gboolean gtk_range_key_press (GtkWidget *range, GdkEventKey *event); @@ -316,8 +309,8 @@ gtk_range_class_init (GtkRangeClass *class) widget_class->leave_notify_event = gtk_range_leave_notify; widget_class->grab_broken_event = gtk_range_grab_broken; widget_class->grab_notify = gtk_range_grab_notify; - widget_class->state_changed = gtk_range_state_changed; - widget_class->style_set = gtk_range_style_set; + widget_class->state_flags_changed = gtk_range_state_flags_changed; + widget_class->style_updated = gtk_range_style_updated; widget_class->key_press_event = gtk_range_key_press; class->move_slider = gtk_range_move_slider; @@ -384,7 +377,7 @@ gtk_range_class_init (GtkRangeClass *class) * @returns: %TRUE to prevent other handlers from being invoked for the * signal, %FALSE to propagate the signal further * - * The ::change-value signal is emitted when a scroll action is + * The #GtkRange::change-value signal is emitted when a scroll action is * performed on a range. It allows an application to determine the * type of scroll event that occurred and the resultant new value. * The application can handle the event itself and return %TRUE to @@ -393,12 +386,12 @@ gtk_range_class_init (GtkRangeClass *class) * reached. * * The value parameter is unrounded. An application that overrides - * the ::change-value signal is responsible for clamping the value to - * the desired number of decimal digits; the default GTK+ handler - * clamps the value based on @range->round_digits. + * the GtkRange::change-value signal is responsible for clamping the + * value to the desired number of decimal digits; the default GTK+ + * handler clamps the value based on #GtkRange:round-digits. * * It is not possible to use delayed update policies in an overridden - * ::change-value handler. + * #GtkRange::change-value handler. * * Since: 2.6 */ @@ -417,15 +410,6 @@ gtk_range_class_init (GtkRangeClass *class) PROP_ORIENTATION, "orientation"); - g_object_class_install_property (gobject_class, - PROP_UPDATE_POLICY, - g_param_spec_enum ("update-policy", - P_("Update policy"), - P_("How the range should be updated on the screen"), - GTK_TYPE_UPDATE_TYPE, - GTK_UPDATE_CONTINUOUS, - GTK_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, PROP_ADJUSTMENT, g_param_spec_object ("adjustment", @@ -512,6 +496,24 @@ gtk_range_class_init (GtkRangeClass *class) G_MAXDOUBLE, GTK_PARAM_READWRITE)); + /** + * GtkRange:round-digits: + * + * The number of digits to round the value to when + * it changes, or -1. See #GtkRange::change-value. + * + * Since: 2.24 + */ + g_object_class_install_property (gobject_class, + PROP_ROUND_DIGITS, + g_param_spec_int ("round-digits", + P_("Round Digits"), + P_("The number of digits to round the value to."), + -1, + G_MAXINT, + -1, + GTK_PARAM_READWRITE)); + gtk_widget_class_install_style_property (widget_class, g_param_spec_int ("slider-width", P_("Slider Width"), @@ -623,11 +625,9 @@ gtk_range_set_property (GObject *object, priv->stepper_detail_quark[2] = 0; priv->stepper_detail_quark[3] = 0; + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (range)); gtk_widget_queue_resize (GTK_WIDGET (range)); break; - case PROP_UPDATE_POLICY: - gtk_range_set_update_policy (range, g_value_get_enum (value)); - break; case PROP_ADJUSTMENT: gtk_range_set_adjustment (range, g_value_get_object (value)); break; @@ -649,6 +649,9 @@ gtk_range_set_property (GObject *object, case PROP_FILL_LEVEL: gtk_range_set_fill_level (range, g_value_get_double (value)); break; + case PROP_ROUND_DIGITS: + gtk_range_set_round_digits (range, g_value_get_int (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -669,9 +672,6 @@ gtk_range_get_property (GObject *object, case PROP_ORIENTATION: g_value_set_enum (value, priv->orientation); break; - case PROP_UPDATE_POLICY: - g_value_set_enum (value, priv->update_policy); - break; case PROP_ADJUSTMENT: g_value_set_object (value, priv->adjustment); break; @@ -693,6 +693,9 @@ gtk_range_get_property (GObject *object, case PROP_FILL_LEVEL: g_value_set_double (value, gtk_range_get_fill_level (range)); break; + case PROP_ROUND_DIGITS: + g_value_set_int (value, gtk_range_get_round_digits (range)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -713,7 +716,6 @@ gtk_range_init (GtkRange *range) priv->orientation = GTK_ORIENTATION_HORIZONTAL; priv->adjustment = NULL; - priv->update_policy = GTK_UPDATE_CONTINUOUS; priv->inverted = FALSE; priv->flippable = FALSE; priv->min_slider_size = 1; @@ -764,53 +766,6 @@ gtk_range_get_adjustment (GtkRange *range) return priv->adjustment; } -/** - * gtk_range_set_update_policy: - * @range: a #GtkRange - * @policy: update policy - * - * Sets the update policy for the range. #GTK_UPDATE_CONTINUOUS means that - * anytime the range slider is moved, the range value will change and the - * value_changed signal will be emitted. #GTK_UPDATE_DELAYED means that - * the value will be updated after a brief timeout where no slider motion - * occurs, so updates are spaced by a short time rather than - * continuous. #GTK_UPDATE_DISCONTINUOUS means that the value will only - * be updated when the user releases the button and ends the slider - * drag operation. - **/ -void -gtk_range_set_update_policy (GtkRange *range, - GtkUpdateType policy) -{ - GtkRangePrivate *priv; - - g_return_if_fail (GTK_IS_RANGE (range)); - - priv = range->priv; - - if (priv->update_policy != policy) - { - priv->update_policy = policy; - g_object_notify (G_OBJECT (range), "update-policy"); - } -} - -/** - * gtk_range_get_update_policy: - * @range: a #GtkRange - * - * Gets the update policy of @range. See gtk_range_set_update_policy(). - * - * Return value: the current update policy - **/ -GtkUpdateType -gtk_range_get_update_policy (GtkRange *range) -{ - g_return_val_if_fail (GTK_IS_RANGE (range), GTK_UPDATE_CONTINUOUS); - - return range->priv->update_policy; -} - /** * gtk_range_set_adjustment: * @range: a #GtkRange @@ -1044,9 +999,12 @@ gtk_range_set_min_slider_size (GtkRange *range, { priv->min_slider_size = min_size; - priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); - gtk_widget_queue_draw (GTK_WIDGET (range)); + if (gtk_widget_is_drawable (GTK_WIDGET (range))) + { + priv->need_recalc = TRUE; + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); + gtk_widget_queue_draw (GTK_WIDGET (range)); + } } } @@ -1093,7 +1051,7 @@ gtk_range_get_range_rect (GtkRange *range, priv = range->priv; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); *range_rect = priv->range_rect; } @@ -1122,7 +1080,7 @@ gtk_range_get_slider_range (GtkRange *range, priv = range->priv; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); if (slider_start) *slider_start = priv->slider_start; @@ -1156,7 +1114,7 @@ gtk_range_set_lower_stepper_sensitivity (GtkRange *range, priv->lower_sensitivity = sensitivity; priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); gtk_widget_queue_draw (GTK_WIDGET (range)); g_object_notify (G_OBJECT (range), "lower-stepper-sensitivity"); @@ -1207,7 +1165,7 @@ gtk_range_set_upper_stepper_sensitivity (GtkRange *range, priv->upper_sensitivity = sensitivity; priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); gtk_widget_queue_draw (GTK_WIDGET (range)); g_object_notify (G_OBJECT (range), "upper-stepper-sensitivity"); @@ -1249,16 +1207,19 @@ gtk_range_set_increments (GtkRange *range, gdouble step, gdouble page) { - GtkRangePrivate *priv; + GtkAdjustment *adjustment; g_return_if_fail (GTK_IS_RANGE (range)); - priv = range->priv; + adjustment = range->priv->adjustment; - priv->adjustment->step_increment = step; - priv->adjustment->page_increment = page; - - gtk_adjustment_changed (priv->adjustment); + gtk_adjustment_configure (adjustment, + gtk_adjustment_get_value (adjustment), + gtk_adjustment_get_lower (adjustment), + gtk_adjustment_get_upper (adjustment), + step, + page, + gtk_adjustment_get_page_size (adjustment)); } /** @@ -1277,24 +1238,27 @@ gtk_range_set_range (GtkRange *range, gdouble max) { GtkRangePrivate *priv; + GtkAdjustment *adjustment; gdouble value; g_return_if_fail (GTK_IS_RANGE (range)); g_return_if_fail (min <= max); priv = range->priv; + adjustment = priv->adjustment; - priv->adjustment->lower = min; - priv->adjustment->upper = max; - - value = priv->adjustment->value; - + value = gtk_adjustment_get_value (adjustment); if (priv->restrict_to_fill_level) - value = MIN (value, MAX (priv->adjustment->lower, + value = MIN (value, MAX (gtk_adjustment_get_lower (adjustment), priv->fill_level)); - gtk_adjustment_set_value (priv->adjustment, value); - gtk_adjustment_changed (priv->adjustment); + gtk_adjustment_configure (adjustment, + value, + min, + max, + gtk_adjustment_get_step_increment (adjustment), + gtk_adjustment_get_page_increment (adjustment), + gtk_adjustment_get_page_size (adjustment)); } /** @@ -1318,7 +1282,7 @@ gtk_range_set_value (GtkRange *range, priv = range->priv; if (priv->restrict_to_fill_level) - value = MIN (value, MAX (priv->adjustment->lower, + value = MIN (value, MAX (gtk_adjustment_get_lower (priv->adjustment), priv->fill_level)); gtk_adjustment_set_value (priv->adjustment, value); @@ -1337,7 +1301,7 @@ gtk_range_get_value (GtkRange *range) { g_return_val_if_fail (GTK_IS_RANGE (range), 0.0); - return range->priv->adjustment->value; + return gtk_adjustment_get_value (range->priv->adjustment); } /** @@ -1526,7 +1490,6 @@ gtk_range_destroy (GtkWidget *widget) GtkRangePrivate *priv = range->priv; gtk_range_remove_step_timer (range); - gtk_range_remove_update_timer (range); if (priv->repaint_id) g_source_remove (priv->repaint_id); @@ -1696,7 +1659,7 @@ gtk_range_size_allocate (GtkWidget *widget, priv->recalc_marks = TRUE; priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); if (gtk_widget_get_realized (widget)) gdk_window_move_resize (priv->event_window, @@ -1723,7 +1686,7 @@ gtk_range_hierarchy_changed (GtkWidget *widget, G_CALLBACK (resize_grip_visible_changed), widget); window = gtk_widget_get_toplevel (widget); - if (GTK_IS_WINDOW (window)) + if (gtk_widget_is_toplevel (window)) g_signal_connect (window, "notify::resize-grip-visible", G_CALLBACK (resize_grip_visible_changed), widget); } @@ -1738,7 +1701,7 @@ gtk_range_realize (GtkWidget *widget) GdkWindowAttr attributes; gint attributes_mask; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); gtk_widget_set_realized (widget, TRUE); @@ -1769,8 +1732,6 @@ gtk_range_realize (GtkWidget *widget) priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, range); - - gtk_widget_style_attach (widget); } static void @@ -1780,7 +1741,6 @@ gtk_range_unrealize (GtkWidget *widget) GtkRangePrivate *priv = range->priv; gtk_range_remove_step_timer (range); - gtk_range_remove_update_timer (range); gdk_window_set_user_data (priv->event_window, NULL); gdk_window_destroy (priv->event_window); @@ -1813,81 +1773,74 @@ gtk_range_unmap (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_range_parent_class)->unmap (widget); } -static const gchar * -gtk_range_get_slider_detail (GtkRange *range) +static void +_gtk_range_update_context_for_stepper (GtkRange *range, + GtkStyleContext *context, + Stepper stepper) { GtkRangePrivate *priv = range->priv; - const gchar *slider_detail; + GtkJunctionSides sides = 0; + gboolean vertical, is_rtl; - if (priv->slider_detail_quark) - return g_quark_to_string (priv->slider_detail_quark); + vertical = (priv->orientation == GTK_ORIENTATION_VERTICAL); + is_rtl = (gtk_widget_get_direction (GTK_WIDGET (range)) == GTK_TEXT_DIR_RTL); - slider_detail = GTK_RANGE_GET_CLASS (range)->slider_detail; + /* Take junction sides from what's been + * previously set to the widget itself + */ + sides = gtk_style_context_get_junction_sides (context); - if (slider_detail && slider_detail[0] == 'X') - { - gchar *detail = g_strdup (slider_detail); - - detail[0] = priv->orientation == GTK_ORIENTATION_HORIZONTAL ? 'h' : 'v'; - - priv->slider_detail_quark = g_quark_from_string (detail); - - g_free (detail); - - return g_quark_to_string (priv->slider_detail_quark); - } - - return slider_detail; -} - -static const gchar * -gtk_range_get_stepper_detail (GtkRange *range, - Stepper stepper) -{ - GtkRangePrivate *priv = range->priv; - const gchar *stepper_detail; - gchar *detail; - const gchar *position = NULL; - - if (priv->stepper_detail_quark[stepper]) - return g_quark_to_string (priv->stepper_detail_quark[stepper]); - - stepper_detail = GTK_RANGE_GET_CLASS (range)->stepper_detail; + if (vertical) + sides &= ~(GTK_JUNCTION_TOP | GTK_JUNCTION_BOTTOM); + else + sides &= ~(GTK_JUNCTION_LEFT | GTK_JUNCTION_RIGHT); switch (stepper) { case STEPPER_A: - position = "_start"; + if (vertical) + sides |= GTK_JUNCTION_BOTTOM; + else + sides |= (is_rtl) ? GTK_JUNCTION_LEFT : GTK_JUNCTION_RIGHT; break; case STEPPER_B: if (priv->has_stepper_a) - position = "_start_inner"; + { + if (vertical) + sides |= GTK_JUNCTION_TOP; + else + sides |= (is_rtl) ? GTK_JUNCTION_RIGHT : GTK_JUNCTION_LEFT; + } + + if (vertical) + sides |= GTK_JUNCTION_BOTTOM; else - position = "_start"; + sides |= (is_rtl) ? GTK_JUNCTION_LEFT : GTK_JUNCTION_RIGHT; break; case STEPPER_C: if (priv->has_stepper_d) - position = "_end_inner"; + { + if (vertical) + sides |= GTK_JUNCTION_BOTTOM; + else + sides |= (is_rtl) ? GTK_JUNCTION_LEFT : GTK_JUNCTION_RIGHT; + } + + if (vertical) + sides |= GTK_JUNCTION_TOP; else - position = "_end"; + sides |= (is_rtl) ? GTK_JUNCTION_RIGHT : GTK_JUNCTION_LEFT; break; case STEPPER_D: - position = "_end"; + if (vertical) + sides |= GTK_JUNCTION_TOP; + else + sides |= (is_rtl) ? GTK_JUNCTION_RIGHT : GTK_JUNCTION_LEFT; break; - default: - g_assert_not_reached (); } - detail = g_strconcat (stepper_detail, position, NULL); - - if (detail[0] == 'X') - detail[0] = priv->orientation == GTK_ORIENTATION_HORIZONTAL ? 'h' : 'v'; - - priv->stepper_detail_quark[stepper] = g_quark_from_string (detail); - - g_free (detail); - - return g_quark_to_string (priv->stepper_detail_quark[stepper]); + gtk_style_context_set_junction_sides (context, sides); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); } static void @@ -1900,17 +1853,15 @@ draw_stepper (GtkRange *range, { GtkRangePrivate *priv = range->priv; GtkAllocation allocation; - GtkStateType state_type; - GtkShadowType shadow_type; - GtkStyle *style; + GtkStateFlags state = 0; + GtkStyleContext *context; GtkWidget *widget = GTK_WIDGET (range); GdkWindow *window; gfloat arrow_scaling; GdkRectangle *rect; gint arrow_x; gint arrow_y; - gint arrow_width; - gint arrow_height; + gdouble arrow_size, angle; gboolean arrow_sensitive; switch (stepper) @@ -1948,37 +1899,34 @@ draw_stepper (GtkRange *range, } if (!gtk_widget_is_sensitive (GTK_WIDGET (range)) || !arrow_sensitive) - state_type = GTK_STATE_INSENSITIVE; - else if (clicked) - state_type = GTK_STATE_ACTIVE; - else if (prelighted) - state_type = GTK_STATE_PRELIGHT; - else - state_type = GTK_STATE_NORMAL; - - if (clicked && arrow_sensitive) - shadow_type = GTK_SHADOW_IN; + state = GTK_STATE_FLAG_INSENSITIVE; else - shadow_type = GTK_SHADOW_OUT; + { + if (clicked) + state |= GTK_STATE_FLAG_ACTIVE; + if (prelighted) + state |= GTK_STATE_FLAG_PRELIGHT; + } - style = gtk_widget_get_style (widget); window = gtk_widget_get_window (widget); + context = gtk_widget_get_style_context (widget); - gtk_paint_box (style, cr, - state_type, shadow_type, - widget, - gtk_range_get_stepper_detail (range, stepper), - rect->x, - rect->y, - rect->width, - rect->height); + gtk_style_context_save (context); + _gtk_range_update_context_for_stepper (range, context, stepper); + gtk_style_context_set_state (context, state); + + gtk_render_background (context, cr, + rect->x, rect->y, + rect->width, rect->height); + gtk_render_frame (context, cr, + rect->x, rect->y, + rect->width, rect->height); gtk_widget_style_get (widget, "arrow-scaling", &arrow_scaling, NULL); - arrow_width = rect->width * arrow_scaling; - arrow_height = rect->height * arrow_scaling; - arrow_x = rect->x + (rect->width - arrow_width) / 2; - arrow_y = rect->y + (rect->height - arrow_height) / 2; + arrow_size = MIN (rect->width, rect->height) * arrow_scaling; + arrow_x = rect->x + (rect->width - arrow_size) / 2; + arrow_y = rect->y + (rect->height - arrow_size) / 2; if (clicked && arrow_sensitive) { @@ -1993,13 +1941,29 @@ draw_stepper (GtkRange *range, arrow_y += arrow_displacement_y; } - gtk_paint_arrow (style, cr, - state_type, shadow_type, - widget, - gtk_range_get_stepper_detail (range, stepper), - arrow_type, - TRUE, - arrow_x, arrow_y, arrow_width, arrow_height); + switch (arrow_type) + { + case GTK_ARROW_RIGHT: + angle = G_PI / 2; + break; + case GTK_ARROW_DOWN: + angle = G_PI; + break; + case GTK_ARROW_LEFT: + angle = 3 * (G_PI / 2); + break; + case GTK_ARROW_UP: + default: + angle = 0; + break; + } + + gtk_render_arrow (context, cr, + angle, + arrow_x, arrow_y, + arrow_size); + + gtk_style_context_restore (context); } static gboolean @@ -2009,24 +1973,23 @@ gtk_range_draw (GtkWidget *widget, GtkRange *range = GTK_RANGE (widget); GtkRangePrivate *priv = range->priv; gboolean sensitive; - GtkStateType state; - GtkShadowType shadow_type; - GtkStyle *style; + GtkStateFlags state = 0; GdkWindow *window; gint focus_line_width = 0; gint focus_padding = 0; gboolean touchscreen; gboolean draw_trough = TRUE; + GtkStyleContext *context; + context = gtk_widget_get_style_context (widget); g_object_get (gtk_widget_get_settings (widget), "gtk-touchscreen-mode", &touchscreen, NULL); if (GTK_IS_SCALE (widget) && - priv->adjustment->upper == priv->adjustment->lower) + gtk_adjustment_get_upper (priv->adjustment) == gtk_adjustment_get_lower (priv->adjustment)) draw_trough = FALSE; - style = gtk_widget_get_style (widget); if (gtk_widget_get_can_focus (GTK_WIDGET (range))) gtk_widget_style_get (GTK_WIDGET (range), "focus-line-width", &focus_line_width, @@ -2041,7 +2004,7 @@ gtk_range_draw (GtkWidget *widget, priv->repaint_id = 0; gtk_range_calc_marks (range); - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); sensitive = gtk_widget_is_sensitive (widget); @@ -2072,6 +2035,11 @@ gtk_range_draw (GtkWidget *widget, "stepper-spacing", &stepper_spacing, NULL); + gtk_style_context_save (context); + + if (!sensitive) + gtk_style_context_set_state (context, GTK_STATE_FLAG_INSENSITIVE); + if (stepper_spacing > 0) trough_under_steppers = FALSE; @@ -2117,6 +2085,9 @@ gtk_range_draw (GtkWidget *widget, } } + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH); + if (draw_trough) { gint trough_change_pos_x = width; @@ -2131,43 +2102,39 @@ gtk_range_draw (GtkWidget *widget, priv->slider.height / 2 - y); - gtk_paint_box (style, cr, - sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, - GTK_SHADOW_IN, - GTK_WIDGET (range), - should_invert (range) ? "trough-upper" : "trough-lower", - x, y, - trough_change_pos_x, trough_change_pos_y); + /* FIXME: was trough-upper and trough-lower really used, + * in that case, it should still be exposed somehow. + */ + gtk_render_background (context, cr, x, y, + trough_change_pos_x, + trough_change_pos_y); if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) trough_change_pos_y = 0; else trough_change_pos_x = 0; - gtk_paint_box (style, cr, - sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, - GTK_SHADOW_IN, - GTK_WIDGET (range), - should_invert (range) ? "trough-lower" : "trough-upper", - x + trough_change_pos_x, y + trough_change_pos_y, - width - trough_change_pos_x, - height - trough_change_pos_y); + gtk_render_background (context, cr, + x + trough_change_pos_x, y + trough_change_pos_y, + width - trough_change_pos_x, + height - trough_change_pos_y); + + gtk_render_frame (context, cr, + x, y, width, height); } else { - gtk_paint_box (style, cr, - sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, - GTK_SHADOW_IN, - GTK_WIDGET (range), - "trough-upper", - x, y, - width, - height); + gtk_render_background (context, cr, + x, y, width, height); + gtk_render_frame (context, cr, + x, y, width, height); } + gtk_style_context_restore (context); + if (priv->show_fill_level && - priv->adjustment->upper - priv->adjustment->page_size - - priv->adjustment->lower != 0) + gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment) - + gtk_adjustment_get_lower (priv->adjustment) != 0) { gdouble fill_level = priv->fill_level; gint fill_x = x; @@ -2176,18 +2143,21 @@ gtk_range_draw (GtkWidget *widget, gint fill_height = height; gchar *fill_detail; - fill_level = CLAMP (fill_level, priv->adjustment->lower, - priv->adjustment->upper - - priv->adjustment->page_size); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_PROGRESSBAR); + + fill_level = CLAMP (fill_level, gtk_adjustment_get_lower (priv->adjustment), + gtk_adjustment_get_upper (priv->adjustment) - + gtk_adjustment_get_page_size (priv->adjustment)); if (priv->orientation == GTK_ORIENTATION_HORIZONTAL) { fill_x = priv->trough.x; fill_width = (priv->slider.width + - (fill_level - priv->adjustment->lower) / - (priv->adjustment->upper - - priv->adjustment->lower - - priv->adjustment->page_size) * + (fill_level - gtk_adjustment_get_lower (priv->adjustment)) / + (gtk_adjustment_get_upper (priv->adjustment) - + gtk_adjustment_get_lower (priv->adjustment) - + gtk_adjustment_get_page_size (priv->adjustment)) * (priv->trough.width - priv->slider.width)); @@ -2198,10 +2168,10 @@ gtk_range_draw (GtkWidget *widget, { fill_y = priv->trough.y; fill_height = (priv->slider.height + - (fill_level - priv->adjustment->lower) / - (priv->adjustment->upper - - priv->adjustment->lower - - priv->adjustment->page_size) * + (fill_level - gtk_adjustment_get_lower (priv->adjustment)) / + (gtk_adjustment_get_upper (priv->adjustment) - + gtk_adjustment_get_lower (priv->adjustment) - + gtk_adjustment_get_page_size (priv->adjustment)) * (priv->trough.height - priv->slider.height)); @@ -2209,45 +2179,45 @@ gtk_range_draw (GtkWidget *widget, fill_y += priv->trough.height - fill_height; } - if (fill_level < priv->adjustment->upper - priv->adjustment->page_size) + if (fill_level < gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment)) fill_detail = "trough-fill-level-full"; else fill_detail = "trough-fill-level"; - gtk_paint_box (style, cr, - sensitive ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, - GTK_SHADOW_OUT, - GTK_WIDGET (range), fill_detail, - fill_x, fill_y, - fill_width, fill_height); + gtk_render_activity (context, cr, + fill_x, fill_y, + fill_width, fill_height); + + gtk_style_context_restore (context); } + gtk_style_context_restore (context); + if (sensitive && gtk_widget_has_focus (widget)) - gtk_paint_focus (style, cr, - gtk_widget_get_state (widget), - widget, "trough", - priv->range_rect.x, - priv->range_rect.y, - priv->range_rect.width, - priv->range_rect.height); + { + gtk_style_context_save (context); + gtk_style_context_set_state (context, + gtk_widget_get_state_flags (widget)); + + gtk_render_focus (context, cr, + priv->range_rect.x, + priv->range_rect.y, + priv->range_rect.width, + priv->range_rect.height); + + gtk_style_context_restore (context); + } } cairo_restore (cr); - shadow_type = GTK_SHADOW_OUT; - if (!sensitive) - state = GTK_STATE_INSENSITIVE; + state = GTK_STATE_FLAG_INSENSITIVE; else if (!touchscreen && priv->mouse_location == MOUSE_SLIDER) - state = GTK_STATE_PRELIGHT; - else - state = GTK_STATE_NORMAL; + state = GTK_STATE_FLAG_PRELIGHT; if (priv->grab_location == MOUSE_SLIDER) - { - state = GTK_STATE_ACTIVE; - shadow_type = GTK_SHADOW_IN; - } + state |= GTK_STATE_FLAG_ACTIVE; cairo_save (cr); gdk_cairo_rectangle (cr, &priv->slider); @@ -2255,17 +2225,18 @@ gtk_range_draw (GtkWidget *widget, if (draw_trough) { - gtk_paint_slider (style, - cr, - state, - shadow_type, - widget, - gtk_range_get_slider_detail (range), - priv->slider.x, - priv->slider.y, - priv->slider.width, - priv->slider.height, - priv->orientation); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER); + gtk_style_context_set_state (context, state); + + gtk_render_slider (context, cr, + priv->slider.x, + priv->slider.y, + priv->slider.width, + priv->slider.height, + priv->orientation); + + gtk_style_context_restore (context); } cairo_restore (cr); @@ -2453,9 +2424,9 @@ coord_to_value (GtkRange *range, if (should_invert (range)) frac = 1.0 - frac; - value = priv->adjustment->lower + frac * (priv->adjustment->upper - - priv->adjustment->lower - - priv->adjustment->page_size); + value = gtk_adjustment_get_lower (priv->adjustment) + frac * (gtk_adjustment_get_upper (priv->adjustment) - + gtk_adjustment_get_lower (priv->adjustment) - + gtk_adjustment_get_page_size (priv->adjustment)); return value; } @@ -2521,7 +2492,7 @@ gtk_range_button_press (GtkWidget *widget, priv->orientation == GTK_ORIENTATION_VERTICAL ? event->y : event->x); - priv->trough_click_forward = click_value > priv->adjustment->value; + priv->trough_click_forward = click_value > gtk_adjustment_get_value (priv->adjustment); range_grab_add (range, device, MOUSE_TROUGH, event->button); scroll = range_get_scroll_for_grab (range); @@ -2652,7 +2623,7 @@ update_slider_position (GtkRange *range, { mark_value = priv->marks[i]; - if (fabs (priv->adjustment->value - mark_value) < 3 * mark_delta) + if (fabs (gtk_adjustment_get_value (priv->adjustment) - mark_value) < 3 * mark_delta) { if (fabs (new_value - mark_value) < (priv->slider_end - priv->slider_start) * 0.5 * mark_delta) { @@ -2671,8 +2642,6 @@ stop_scrolling (GtkRange *range) { range_grab_remove (range); gtk_range_remove_step_timer (range); - /* Flush any pending discontinuous/delayed updates */ - gtk_range_update_value (range); } static gboolean @@ -2753,13 +2722,13 @@ _gtk_range_get_wheel_delta (GtkRange *range, GdkScrollDirection direction) { GtkRangePrivate *priv = range->priv; - GtkAdjustment *adj = priv->adjustment; + GtkAdjustment *adjustment = priv->adjustment; gdouble delta; if (GTK_IS_SCROLLBAR (range)) - delta = pow (adj->page_size, 2.0 / 3.0); + delta = pow (gtk_adjustment_get_page_size (adjustment), 2.0 / 3.0); else - delta = adj->step_increment * 2; + delta = gtk_adjustment_get_step_increment (adjustment) * 2; if (direction == GDK_SCROLL_UP || direction == GDK_SCROLL_LEFT) @@ -2780,22 +2749,14 @@ gtk_range_scroll_event (GtkWidget *widget, if (gtk_widget_get_realized (widget)) { - GtkAdjustment *adj = priv->adjustment; gdouble delta; gboolean handled; delta = _gtk_range_get_wheel_delta (range, event->direction); g_signal_emit (range, signals[CHANGE_VALUE], 0, - GTK_SCROLL_JUMP, adj->value + delta, + GTK_SCROLL_JUMP, gtk_adjustment_get_value (priv->adjustment) + delta, &handled); - - /* Policy DELAYED makes sense with scroll events, - * but DISCONTINUOUS doesn't, so we update immediately - * for DISCONTINUOUS - */ - if (priv->update_policy == GTK_UPDATE_DISCONTINUOUS) - gtk_range_update_value (range); } return TRUE; @@ -2867,8 +2828,8 @@ gtk_range_grab_notify (GtkWidget *widget, } static void -gtk_range_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_range_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { if (!gtk_widget_is_sensitive (widget)) stop_scrolling (GTK_RANGE (widget)); @@ -2909,7 +2870,7 @@ gtk_range_adjustment_changed (GtkAdjustment *adjustment, priv->recalc_marks = TRUE; priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); /* now check whether the layout changed */ if (layout_changed (priv, &priv_aux)) @@ -2947,7 +2908,7 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, GtkRangePrivate priv_aux = *priv; priv->need_recalc = TRUE; - gtk_range_calc_layout (range, priv->adjustment->value); + gtk_range_calc_layout (range, gtk_adjustment_get_value (priv->adjustment)); /* now check whether the layout changed */ if (layout_changed (priv, &priv_aux) || @@ -2960,7 +2921,7 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, 181, force_repaint, range, NULL); } - + /* Note that we don't round off to priv->round_digits here. * that's because it's really broken to change a value * in response to a change signal on that value; round_digits @@ -2973,15 +2934,14 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment, } static void -gtk_range_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_range_style_updated (GtkWidget *widget) { GtkRange *range = GTK_RANGE (widget); GtkRangePrivate *priv = range->priv; priv->need_recalc = TRUE; - GTK_WIDGET_CLASS (gtk_range_parent_class)->style_set (widget, previous_style); + GTK_WIDGET_CLASS (gtk_range_parent_class)->style_updated (widget); } static void @@ -3012,8 +2972,8 @@ step_back (GtkRange *range) gdouble newval; gboolean handled; - newval = priv->adjustment->value - priv->adjustment->step_increment; - apply_marks (range, priv->adjustment->value, &newval); + newval = gtk_adjustment_get_value (priv->adjustment) - gtk_adjustment_get_step_increment (priv->adjustment); + apply_marks (range, gtk_adjustment_get_value (priv->adjustment), &newval); g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_STEP_BACKWARD, newval, &handled); } @@ -3025,8 +2985,8 @@ step_forward (GtkRange *range) gdouble newval; gboolean handled; - newval = priv->adjustment->value + priv->adjustment->step_increment; - apply_marks (range, priv->adjustment->value, &newval); + newval = gtk_adjustment_get_value (priv->adjustment) + gtk_adjustment_get_step_increment (priv->adjustment); + apply_marks (range, gtk_adjustment_get_value (priv->adjustment), &newval); g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_STEP_FORWARD, newval, &handled); } @@ -3039,8 +2999,8 @@ page_back (GtkRange *range) gdouble newval; gboolean handled; - newval = priv->adjustment->value - priv->adjustment->page_increment; - apply_marks (range, priv->adjustment->value, &newval); + newval = gtk_adjustment_get_value (priv->adjustment) - gtk_adjustment_get_page_increment (priv->adjustment); + apply_marks (range, gtk_adjustment_get_value (priv->adjustment), &newval); g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_PAGE_BACKWARD, newval, &handled); } @@ -3052,8 +3012,8 @@ page_forward (GtkRange *range) gdouble newval; gboolean handled; - newval = priv->adjustment->value + priv->adjustment->page_increment; - apply_marks (range, priv->adjustment->value, &newval); + newval = gtk_adjustment_get_value (priv->adjustment) + gtk_adjustment_get_page_increment (priv->adjustment); + apply_marks (range, gtk_adjustment_get_value (priv->adjustment), &newval); g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_PAGE_FORWARD, newval, &handled); } @@ -3065,7 +3025,7 @@ scroll_begin (GtkRange *range) gboolean handled; g_signal_emit (range, signals[CHANGE_VALUE], 0, - GTK_SCROLL_START, priv->adjustment->lower, + GTK_SCROLL_START, gtk_adjustment_get_lower (priv->adjustment), &handled); } @@ -3076,7 +3036,7 @@ scroll_end (GtkRange *range) gdouble newval; gboolean handled; - newval = priv->adjustment->upper - priv->adjustment->page_size; + newval = gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment); g_signal_emit (range, signals[CHANGE_VALUE], 0, GTK_SCROLL_END, newval, &handled); } @@ -3086,7 +3046,7 @@ gtk_range_scroll (GtkRange *range, GtkScrollType scroll) { GtkRangePrivate *priv = range->priv; - gdouble old_value = priv->adjustment->value; + gdouble old_value = gtk_adjustment_get_value (priv->adjustment); switch (scroll) { @@ -3178,7 +3138,7 @@ gtk_range_scroll (GtkRange *range, break; } - return priv->adjustment->value != old_value; + return gtk_adjustment_get_value (priv->adjustment) != old_value; } static void @@ -3224,13 +3184,6 @@ gtk_range_move_slider (GtkRange *range, if (! gtk_range_scroll (range, scroll)) gtk_widget_error_bell (GTK_WIDGET (range)); - - /* Policy DELAYED makes sense with key events, - * but DISCONTINUOUS doesn't, so we update immediately - * for DISCONTINUOUS - */ - if (priv->update_policy == GTK_UPDATE_DISCONTINUOUS) - gtk_range_update_value (range); } static void @@ -3706,9 +3659,9 @@ gtk_range_calc_layout (GtkRange *range, * total_adjustment_range) times the trough height in pixels */ - if (priv->adjustment->upper - priv->adjustment->lower != 0) - height = ((bottom - top) * (priv->adjustment->page_size / - (priv->adjustment->upper - priv->adjustment->lower))); + if (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) != 0) + height = ((bottom - top) * (gtk_adjustment_get_page_size (priv->adjustment) / + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment)))); else height = priv->min_slider_size; @@ -3720,9 +3673,9 @@ gtk_range_calc_layout (GtkRange *range, y = top; - if (priv->adjustment->upper - priv->adjustment->lower - priv->adjustment->page_size != 0) - y += (bottom - top - height) * ((adjustment_value - priv->adjustment->lower) / - (priv->adjustment->upper - priv->adjustment->lower - priv->adjustment->page_size)); + if (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment) != 0) + y += (bottom - top - height) * ((adjustment_value - gtk_adjustment_get_lower (priv->adjustment)) / + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment))); y = CLAMP (y, top, bottom); @@ -3855,9 +3808,9 @@ gtk_range_calc_layout (GtkRange *range, * total_adjustment_range) times the trough width in pixels */ - if (priv->adjustment->upper - priv->adjustment->lower != 0) - width = ((right - left) * (priv->adjustment->page_size / - (priv->adjustment->upper - priv->adjustment->lower))); + if (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) != 0) + width = ((right - left) * (gtk_adjustment_get_page_size (priv->adjustment) / + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment)))); else width = priv->min_slider_size; @@ -3869,9 +3822,9 @@ gtk_range_calc_layout (GtkRange *range, x = left; - if (priv->adjustment->upper - priv->adjustment->lower - priv->adjustment->page_size != 0) - x += (right - left - width) * ((adjustment_value - priv->adjustment->lower) / - (priv->adjustment->upper - priv->adjustment->lower - priv->adjustment->page_size)); + if (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment) != 0) + x += (right - left - width) * ((adjustment_value - gtk_adjustment_get_lower (priv->adjustment)) / + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment))); x = CLAMP (x, left, right); @@ -3893,8 +3846,8 @@ gtk_range_calc_layout (GtkRange *range, { case GTK_SENSITIVITY_AUTO: priv->upper_sensitive = - (priv->adjustment->value < - (priv->adjustment->upper - priv->adjustment->page_size)); + (gtk_adjustment_get_value (priv->adjustment) < + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment))); break; case GTK_SENSITIVITY_ON: @@ -3910,7 +3863,7 @@ gtk_range_calc_layout (GtkRange *range, { case GTK_SENSITIVITY_AUTO: priv->lower_sensitive = - (priv->adjustment->value > priv->adjustment->lower); + (gtk_adjustment_get_value (priv->adjustment) > gtk_adjustment_get_lower (priv->adjustment)); break; case GTK_SENSITIVITY_ON: @@ -3987,11 +3940,11 @@ gtk_range_real_change_value (GtkRange *range, g_signal_emit (range, signals[ADJUST_BOUNDS], 0, value); if (priv->restrict_to_fill_level) - value = MIN (value, MAX (priv->adjustment->lower, + value = MIN (value, MAX (gtk_adjustment_get_lower (priv->adjustment), priv->fill_level)); - value = CLAMP (value, priv->adjustment->lower, - (priv->adjustment->upper - priv->adjustment->page_size)); + value = CLAMP (value, gtk_adjustment_get_lower (priv->adjustment), + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment))); if (priv->round_digits >= 0) { @@ -4006,49 +3959,17 @@ gtk_range_real_change_value (GtkRange *range, value = floor ((value * power) + 0.5) / power; } - if (priv->adjustment->value != value) + if (gtk_adjustment_get_value (priv->adjustment) != value) { priv->need_recalc = TRUE; gtk_widget_queue_draw (GTK_WIDGET (range)); - switch (priv->update_policy) - { - case GTK_UPDATE_CONTINUOUS: - gtk_adjustment_set_value (priv->adjustment, value); - break; - - /* Delayed means we update after a period of inactivity */ - case GTK_UPDATE_DELAYED: - gtk_range_reset_update_timer (range); - /* FALL THRU */ - - /* Discontinuous means we update on button release */ - case GTK_UPDATE_DISCONTINUOUS: - /* don't emit value_changed signal */ - priv->adjustment->value = value; - priv->update_pending = TRUE; - break; - } + gtk_adjustment_set_value (priv->adjustment, value); } return FALSE; } -static void -gtk_range_update_value (GtkRange *range) -{ - GtkRangePrivate *priv = range->priv; - - gtk_range_remove_update_timer (range); - - if (priv->update_pending) - { - gtk_adjustment_value_changed (priv->adjustment); - - priv->update_pending = FALSE; - } -} - struct _GtkRangeStepTimer { guint timeout_id; @@ -4124,43 +4045,6 @@ gtk_range_remove_step_timer (GtkRange *range) } } -static gboolean -update_timeout (gpointer data) -{ - GtkRange *range = GTK_RANGE (data); - GtkRangePrivate *priv = range->priv; - - gtk_range_update_value (range); - priv->update_timeout_id = 0; - - /* self-remove */ - return FALSE; -} - -static void -gtk_range_reset_update_timer (GtkRange *range) -{ - GtkRangePrivate *priv = range->priv; - - gtk_range_remove_update_timer (range); - - priv->update_timeout_id = gdk_threads_add_timeout (UPDATE_DELAY, - update_timeout, - range); -} - -static void -gtk_range_remove_update_timer (GtkRange *range) -{ - GtkRangePrivate *priv = range->priv; - - if (priv->update_timeout_id != 0) - { - g_source_remove (priv->update_timeout_id); - priv->update_timeout_id = 0; - } -} - void _gtk_range_set_stop_values (GtkRange *range, gdouble *values, @@ -4197,11 +4081,45 @@ _gtk_range_get_stop_positions (GtkRange *range, return priv->n_marks; } +/** + * gtk_range_set_round_digits: + * @range: a #GtkRange + * @round_digits: the precision in digits, or -1 + * + * Sets the number of digits to round the value to when + * it changes. See #GtkRange::change-value. + * + * Since: 2.24 + */ void -_gtk_range_set_round_digits (GtkRange *range, - gint round_digits) +gtk_range_set_round_digits (GtkRange *range, + gint round_digits) { + g_return_if_fail (GTK_IS_RANGE (range)); + g_return_if_fail (round_digits >= -1); + range->priv->round_digits = round_digits; + + g_object_notify (G_OBJECT (range), "round-digits"); +} + +/** + * gtk_range_get_round_digits: + * @range: a #GtkRange + * + * Gets the number of digits to round the value to when + * it changes. See #GtkRange::change-value. + * + * Return value: the number of digits to round to + * + * Since: 2.24 + */ +gint +gtk_range_get_round_digits (GtkRange *range) +{ + g_return_val_if_fail (GTK_IS_RANGE (range), -1); + + return range->priv->round_digits; } void diff --git a/gtk/gtkrange.h b/gtk/gtkrange.h index 55f23283e5..7c01ab21d7 100644 --- a/gtk/gtkrange.h +++ b/gtk/gtkrange.h @@ -91,10 +91,6 @@ struct _GtkRangeClass GType gtk_range_get_type (void) G_GNUC_CONST; -void gtk_range_set_update_policy (GtkRange *range, - GtkUpdateType policy); -GtkUpdateType gtk_range_get_update_policy (GtkRange *range); - void gtk_range_set_adjustment (GtkRange *range, GtkAdjustment *adjustment); GtkAdjustment* gtk_range_get_adjustment (GtkRange *range); @@ -147,6 +143,9 @@ gboolean gtk_range_get_restrict_to_fill_level (GtkRange *range void gtk_range_set_fill_level (GtkRange *range, gdouble fill_level); gdouble gtk_range_get_fill_level (GtkRange *range); +void gtk_range_set_round_digits (GtkRange *range, + gint round_digits); +gint gtk_range_get_round_digits (GtkRange *range); /* internal API */ gdouble _gtk_range_get_wheel_delta (GtkRange *range, @@ -156,9 +155,7 @@ void _gtk_range_set_stop_values (GtkRange *range gdouble *values, gint n_values); gint _gtk_range_get_stop_positions (GtkRange *range, - gint **values); -void _gtk_range_set_round_digits (GtkRange *range, - gint round_digits); + gint **values); void _gtk_range_set_steppers (GtkRange *range, gboolean has_a, gboolean has_b, diff --git a/gtk/gtkrc.c b/gtk/gtkrc.c index 54cf2fcd76..2dc8a50d02 100644 --- a/gtk/gtkrc.c +++ b/gtk/gtkrc.c @@ -42,28 +42,23 @@ #include #include -#include "gdkconfig.h" +#include "gdk/gdk.h" #include "gtkversion.h" #include "gtkrc.h" #include "gtkbindings.h" -#include "gtkthemes.h" #include "gtkintl.h" #include "gtkiconfactory.h" #include "gtkmain.h" #include "gtkmodules.h" #include "gtkprivate.h" -#include "gtksettings.h" +#include "gtksettingsprivate.h" #include "gtkwindow.h" #ifdef G_OS_WIN32 #include #endif -typedef struct _GtkRcSet GtkRcSet; -typedef struct _GtkRcNode GtkRcNode; -typedef struct _GtkRcFile GtkRcFile; - enum { PATH_ELT_PSPEC, @@ -82,54 +77,6 @@ typedef struct } elt; } PathElt; -struct _GtkRcSet -{ - GtkPathType type; - - GPatternSpec *pspec; - GSList *path; - - GtkRcStyle *rc_style; - gint priority; -}; - -struct _GtkRcFile -{ - time_t mtime; - gchar *name; - gchar *canonical_name; - gchar *directory; - guint reload : 1; - guint is_string : 1; /* If TRUE, name is a string to parse with gtk_rc_parse_string() */ -}; - - -struct _GtkRcContext -{ - GHashTable *rc_style_ht; - GtkSettings *settings; - GSList *rc_sets_widget; - GSList *rc_sets_widget_class; - GSList *rc_sets_class; - - /* The files we have parsed, to reread later if necessary */ - GSList *rc_files; - - gchar *theme_name; - gboolean prefer_dark_theme; - gchar *key_theme_name; - gchar *font_name; - - gchar **pixmap_path; - - gint default_priority; - GtkStyle *default_style; - - GHashTable *color_hash; - - guint reloading : 1; -}; - #define GTK_RC_STYLE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_RC_STYLE, GtkRcStylePrivate)) typedef struct _GtkRcStylePrivate GtkRcStylePrivate; @@ -139,103 +86,13 @@ struct _GtkRcStylePrivate GSList *color_hashes; }; -static GtkRcContext *gtk_rc_context_get (GtkSettings *settings); - -static guint gtk_rc_style_hash (const gchar *name); -static gboolean gtk_rc_style_equal (const gchar *a, - const gchar *b); -static guint gtk_rc_styles_hash (const GSList *rc_styles); -static gboolean gtk_rc_styles_equal (const GSList *a, - const GSList *b); -static GtkRcStyle* gtk_rc_style_find (GtkRcContext *context, - const gchar *name); -static GSList * gtk_rc_styles_match (GSList *rc_styles, - GSList *sets, - guint path_length, - gchar *path, - gchar *path_reversed); -static GtkStyle * gtk_rc_style_to_style (GtkRcContext *context, - GtkRcStyle *rc_style); -static GtkStyle* gtk_rc_init_style (GtkRcContext *context, - GSList *rc_styles); -static void gtk_rc_parse_default_files (GtkRcContext *context); -static gboolean gtk_rc_parse_named (GtkRcContext *context, - const gchar *name, - const gchar *type, - const gchar *variant); -static void gtk_rc_context_parse_file (GtkRcContext *context, - const gchar *filename, - gint priority, - gboolean reload); -static void gtk_rc_parse_any (GtkRcContext *context, - const gchar *input_name, - gint input_fd, - const gchar *input_string); -static guint gtk_rc_parse_statement (GtkRcContext *context, - GScanner *scanner); -static guint gtk_rc_parse_style (GtkRcContext *context, - GScanner *scanner); -static guint gtk_rc_parse_assignment (GScanner *scanner, - GtkRcStyle *style, - GtkRcProperty *prop); -static guint gtk_rc_parse_bg (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_fg (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_text (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_base (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_xthickness (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_ythickness (GScanner *scanner, - GtkRcStyle *style); -static guint gtk_rc_parse_bg_pixmap (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle *rc_style); -static guint gtk_rc_parse_font (GScanner *scanner, - GtkRcStyle *rc_style); -static guint gtk_rc_parse_fontset (GScanner *scanner, - GtkRcStyle *rc_style); -static guint gtk_rc_parse_font_name (GScanner *scanner, - GtkRcStyle *rc_style); -static guint gtk_rc_parse_engine (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle **rc_style); -static guint gtk_rc_parse_pixmap_path (GtkRcContext *context, - GScanner *scanner); -static void gtk_rc_parse_pixmap_path_string (GtkRcContext *context, - GScanner *scanner, - const gchar *pix_path); -static guint gtk_rc_parse_module_path (GScanner *scanner); -static guint gtk_rc_parse_im_module_file (GScanner *scanner); -static guint gtk_rc_parse_path_pattern (GtkRcContext *context, - GScanner *scanner); -static guint gtk_rc_parse_stock (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle *rc_style, - GtkIconFactory *factory); -static guint gtk_rc_parse_logical_color (GScanner *scanner, - GtkRcStyle *rc_style, - GHashTable *hash); - -static void gtk_rc_clear_hash_node (gpointer key, - gpointer data, - gpointer user_data); -static void gtk_rc_clear_styles (GtkRcContext *context); -static void gtk_rc_add_initial_default_files (void); - static void gtk_rc_style_finalize (GObject *object); static void gtk_rc_style_real_merge (GtkRcStyle *dest, GtkRcStyle *src); static GtkRcStyle* gtk_rc_style_real_create_rc_style (GtkRcStyle *rc_style); static GtkStyle* gtk_rc_style_real_create_style (GtkRcStyle *rc_style); -static void gtk_rc_style_copy_icons_and_colors(GtkRcStyle *rc_style, - GtkRcStyle *src_style, - GtkRcContext *context); static gint gtk_rc_properties_cmp (gconstpointer bsearch_node1, gconstpointer bsearch_node2); -static void gtk_rc_set_free (GtkRcSet *rc_set); static void insert_rc_property (GtkRcStyle *style, GtkRcProperty *property, @@ -371,23 +228,8 @@ static GHashTable *realized_style_ht = NULL; static gchar *im_module_file = NULL; -static gint max_default_files = 0; static gchar **gtk_rc_default_files = NULL; -/* A stack of information of RC files we are parsing currently. - * The directories for these files are implicitely added to the end of - * PIXMAP_PATHS. - */ -static GSList *current_files_stack = NULL; - -/* RC files and strings that are parsed for every context - */ -static GSList *global_rc_files = NULL; - -/* Keep list of all current RC contexts for convenience - */ -static GSList *rc_contexts; - /* RC file handling */ static gchar * @@ -408,8 +250,8 @@ gtk_rc_make_default_dir (const gchar *type) /** * gtk_rc_get_im_module_path: - * @returns: a newly-allocated string containing the path in which to - * look for IM modules. + * @returns: (type filename): a newly-allocated string containing the + * path in which to look for IM modules. * * Obtains the path in which to look for IM modules. See the documentation * of the GTK_PATH @@ -429,8 +271,8 @@ gtk_rc_get_im_module_path (void) /** * gtk_rc_get_im_module_file: - * @returns: a newly-allocated string containing the name of the file - * listing the IM modules available for loading + * @returns: (type filename): a newly-allocated string containing the + * name of the file listing the IM modules available for loading * * Obtains the path to the IM modules file. See the documentation * of the GTK_IM_MODULE_FILE @@ -480,7 +322,7 @@ gtk_rc_get_theme_dir (void) * see the docs for GTK_PATH in * . * - * return value: the directory. (Must be freed with g_free()) + * return value: (type filename): the directory. (Must be freed with g_free()) **/ gchar * gtk_rc_get_module_dir (void) @@ -488,59 +330,10 @@ gtk_rc_get_module_dir (void) return gtk_rc_make_default_dir ("engines"); } -static void -gtk_rc_add_initial_default_files (void) -{ - static gint init = FALSE; - const gchar *var; - gchar *str; - gchar **files; - gint i; - - if (init) - return; - - gtk_rc_default_files = g_new (gchar*, 10); - max_default_files = 10; - - gtk_rc_default_files[0] = NULL; - init = TRUE; - - var = g_getenv ("GTK2_RC_FILES"); - - if (var) - { - files = g_strsplit (var, G_SEARCHPATH_SEPARATOR_S, -1); - i=0; - while (files[i]) - { - gtk_rc_add_default_file (files[i]); - i++; - } - g_strfreev (files); - } - else - { - const gchar *home; - str = g_build_filename (GTK_SYSCONFDIR, "gtk-3.0", "gtkrc", NULL); - - gtk_rc_add_default_file (str); - g_free (str); - - home = g_get_home_dir (); - if (home) - { - str = g_build_filename (home, ".gtkrc-3.0", NULL); - gtk_rc_add_default_file (str); - g_free (str); - } - } -} - /** * gtk_rc_add_default_file: - * @filename: the pathname to the file. If @filename is not absolute, it - * is searched in the current directory. + * @filename: (type filename): the pathname to the file. If @filename + * is not absolute, it is searched in the current directory. * * Adds a file to the list of files to be parsed at the * end of gtk_init(). @@ -550,29 +343,12 @@ gtk_rc_add_initial_default_files (void) void gtk_rc_add_default_file (const gchar *filename) { - guint n; - - gtk_rc_add_initial_default_files (); - - for (n = 0; n < max_default_files; n++) - { - if (gtk_rc_default_files[n] == NULL) - break; - } - - if (n == max_default_files) - { - max_default_files += 10; - gtk_rc_default_files = g_renew (gchar*, gtk_rc_default_files, max_default_files); - } - - gtk_rc_default_files[n++] = g_strdup (filename); - gtk_rc_default_files[n] = NULL; } /** * gtk_rc_set_default_files: - * @filenames: A %NULL-terminated list of filenames. + * @filenames: (array zero-terminated=1) (element-type filename): A + * %NULL-terminated list of filenames. * * Sets the list of files that GTK+ will read at the * end of gtk_init(). @@ -582,25 +358,6 @@ gtk_rc_add_default_file (const gchar *filename) void gtk_rc_set_default_files (gchar **filenames) { - gint i; - - gtk_rc_add_initial_default_files (); - - i = 0; - while (gtk_rc_default_files[i]) - { - g_free (gtk_rc_default_files[i]); - i++; - } - - gtk_rc_default_files[0] = NULL; - - i = 0; - while (filenames[i] != NULL) - { - gtk_rc_add_default_file (filenames[i]); - i++; - } } /** @@ -618,519 +375,19 @@ gtk_rc_set_default_files (gchar **filenames) gchar ** gtk_rc_get_default_files (void) { - gtk_rc_add_initial_default_files (); - return gtk_rc_default_files; } -static void -gtk_rc_settings_changed (GtkSettings *settings, - GParamSpec *pspec, - GtkRcContext *context) -{ - gchar *new_theme_name; - gchar *new_key_theme_name; - gboolean new_prefer_dark_theme; - - if (context->reloading) - return; - - g_object_get (settings, - "gtk-theme-name", &new_theme_name, - "gtk-key-theme-name", &new_key_theme_name, - "gtk-application-prefer-dark-theme", &new_prefer_dark_theme, - NULL); - - if ((new_theme_name != context->theme_name && - !(new_theme_name && context->theme_name && strcmp (new_theme_name, context->theme_name) == 0)) || - (new_key_theme_name != context->key_theme_name && - !(new_key_theme_name && context->key_theme_name && strcmp (new_key_theme_name, context->key_theme_name) == 0)) || - new_prefer_dark_theme != context->prefer_dark_theme) - { - gtk_rc_reparse_all_for_settings (settings, TRUE); - } - - g_free (new_theme_name); - g_free (new_key_theme_name); -} - -static void -gtk_rc_font_name_changed (GtkSettings *settings, - GParamSpec *pspec, - GtkRcContext *context) -{ - if (!context->reloading) - _gtk_rc_context_get_default_font_name (settings); -} - -static void -gtk_rc_color_hash_changed (GtkSettings *settings, - GParamSpec *pspec, - GtkRcContext *context) -{ - GHashTable *old_hash; - - old_hash = context->color_hash; - - g_object_get (settings, "color-hash", &context->color_hash, NULL); - - if (old_hash) - g_hash_table_unref (old_hash); - - gtk_rc_reparse_all_for_settings (settings, TRUE); -} - -static GtkRcContext * -gtk_rc_context_get (GtkSettings *settings) -{ - if (!settings->rc_context) - { - GtkRcContext *context = settings->rc_context = g_new (GtkRcContext, 1); - - context->settings = settings; - context->rc_style_ht = NULL; - context->rc_sets_widget = NULL; - context->rc_sets_widget_class = NULL; - context->rc_sets_class = NULL; - context->rc_files = NULL; - context->default_style = NULL; - context->reloading = FALSE; - - g_object_get (settings, - "gtk-theme-name", &context->theme_name, - "gtk-key-theme-name", &context->key_theme_name, - "gtk-font-name", &context->font_name, - "color-hash", &context->color_hash, - "gtk-application-prefer-dark-theme", &context->prefer_dark_theme, - NULL); - - g_signal_connect (settings, - "notify::gtk-theme-name", - G_CALLBACK (gtk_rc_settings_changed), - context); - g_signal_connect (settings, - "notify::gtk-key-theme-name", - G_CALLBACK (gtk_rc_settings_changed), - context); - g_signal_connect (settings, - "notify::gtk-font-name", - G_CALLBACK (gtk_rc_font_name_changed), - context); - g_signal_connect (settings, - "notify::color-hash", - G_CALLBACK (gtk_rc_color_hash_changed), - context); - g_signal_connect (settings, - "notify::gtk-application-prefer-dark-theme", - G_CALLBACK (gtk_rc_settings_changed), - context); - - context->pixmap_path = NULL; - - context->default_priority = GTK_PATH_PRIO_RC; - - rc_contexts = g_slist_prepend (rc_contexts, settings->rc_context); - } - - return settings->rc_context; -} - -static void -gtk_rc_clear_rc_files (GtkRcContext *context) -{ - GSList *list; - - list = context->rc_files; - while (list) - { - GtkRcFile *rc_file = list->data; - - if (rc_file->canonical_name != rc_file->name) - g_free (rc_file->canonical_name); - g_free (rc_file->directory); - g_free (rc_file->name); - g_free (rc_file); - - list = list->next; - } - - g_slist_free (context->rc_files); - context->rc_files = NULL; -} - -void -_gtk_rc_context_destroy (GtkSettings *settings) -{ - GtkRcContext *context; - - g_return_if_fail (GTK_IS_SETTINGS (settings)); - - context = settings->rc_context; - if (!context) - return; - - _gtk_settings_reset_rc_values (context->settings); - gtk_rc_clear_styles (context); - gtk_rc_clear_rc_files (context); - - if (context->default_style) - g_object_unref (context->default_style); - - g_strfreev (context->pixmap_path); - - g_free (context->theme_name); - g_free (context->key_theme_name); - g_free (context->font_name); - - if (context->color_hash) - g_hash_table_unref (context->color_hash); - - g_signal_handlers_disconnect_by_func (settings, - gtk_rc_settings_changed, context); - g_signal_handlers_disconnect_by_func (settings, - gtk_rc_font_name_changed, context); - g_signal_handlers_disconnect_by_func (settings, - gtk_rc_color_hash_changed, context); - - rc_contexts = g_slist_remove (rc_contexts, context); - - g_free (context); - - settings->rc_context = NULL; -} - -static gboolean -gtk_rc_parse_named (GtkRcContext *context, - const gchar *name, - const gchar *type, - const gchar *variant) -{ - gchar *path = NULL; - const gchar *home_dir; - gchar *subpath; - gboolean retval; - - retval = FALSE; - - if (type) - subpath = g_strconcat ("gtk-3.0-", type, - G_DIR_SEPARATOR_S "gtkrc", - NULL); - else - subpath = g_strconcat ("gtk-3.0" G_DIR_SEPARATOR_S "gtkrc", - variant, NULL); - - /* First look in the users home directory - */ - home_dir = g_get_home_dir (); - if (home_dir) - { - path = g_build_filename (home_dir, ".themes", name, subpath, NULL); - if (!g_file_test (path, G_FILE_TEST_EXISTS)) - { - g_free (path); - path = NULL; - } - } - - if (!path) - { - gchar *theme_dir = gtk_rc_get_theme_dir (); - path = g_build_filename (theme_dir, name, subpath, NULL); - g_free (theme_dir); - - if (!g_file_test (path, G_FILE_TEST_EXISTS)) - { - g_free (path); - path = NULL; - } - } - - if (path) - { - gtk_rc_context_parse_file (context, path, GTK_PATH_PRIO_THEME, FALSE); - g_free (path); - retval = TRUE; - } - - g_free (subpath); - - return retval; -} - -static void -gtk_rc_parse_default_files (GtkRcContext *context) -{ - gint i; - - gtk_rc_add_initial_default_files (); - - for (i = 0; gtk_rc_default_files[i] != NULL; i++) - gtk_rc_context_parse_file (context, gtk_rc_default_files[i], GTK_PATH_PRIO_RC, FALSE); -} - -void -_gtk_rc_init (void) -{ - static gboolean initialized = FALSE; - - if (!initialized) - { - initialized = TRUE; - - gtk_rc_add_initial_default_files (); - } - - /* Default RC string */ - gtk_rc_parse_string ("style \"gtk-default-tooltips-style\" {\n" - " bg[NORMAL] = \"#eee1b3\"\n" - " fg[NORMAL] = \"#000000\"\n" - "}\n" - "\n" - "style \"gtk-default-progress-bar-style\" {\n" - " bg[PRELIGHT] = \"#4b6983\"\n" - " fg[PRELIGHT] = \"#ffffff\"\n" - " bg[NORMAL] = \"#c4c2bd\"\n" - "}\n" - "\n" - "style \"gtk-default-entry-style\" {\n" - " bg[SELECTED] = \"#b7c3cd\"\n" - " fg[SELECTED] = \"#000000\"\n" - "}\n" - "\n" - "style \"gtk-default-menu-bar-item-style\" {\n" - " GtkMenuItem::horizontal_padding = 5\n" - "}\n" - "\n" - "style \"gtk-default-menu-item-style\" {\n" - " bg[PRELIGHT] = \"#4b6983\"\n" - " fg[PRELIGHT] = \"#ffffff\"\n" - " base[PRELIGHT] = \"#4b6983\"\n" - " text[PRELIGHT] = \"#ffffff\"\n" - "}\n" - "\n" - "class \"GtkProgressBar\" style : gtk \"gtk-default-progress-bar-style\"\n" - "class \"GtkEntry\" style : gtk \"gtk-default-entry-style\"\n" - "widget \"gtk-tooltip*\" style : gtk \"gtk-default-tooltips-style\"\n" - "widget_class \"**\" style : gtk \"gtk-default-menu-item-style\"\n" - "widget_class \"**\" style : gtk \"gtk-default-menu-bar-item-style\"\n" - ); -} - -static void -gtk_rc_context_parse_string (GtkRcContext *context, - const gchar *rc_string) -{ - gtk_rc_parse_any (context, "-", -1, rc_string); -} - void gtk_rc_parse_string (const gchar *rc_string) { - GtkRcFile *rc_file; - GSList *tmp_list; - g_return_if_fail (rc_string != NULL); - -#if 0 - rc_file = g_new (GtkRcFile, 1); - rc_file->is_string = TRUE; - rc_file->name = g_strdup (rc_string); - rc_file->canonical_name = NULL; - rc_file->directory = NULL; - rc_file->mtime = 0; - rc_file->reload = TRUE; - - global_rc_files = g_slist_append (global_rc_files, rc_file); - - for (tmp_list = rc_contexts; tmp_list; tmp_list = tmp_list->next) - gtk_rc_context_parse_string (tmp_list->data, rc_string); -#endif -} - -static GtkRcFile * -add_to_rc_file_list (GSList **rc_file_list, - const char *filename, - gboolean reload) -{ - GSList *tmp_list; - GtkRcFile *rc_file; - - tmp_list = *rc_file_list; - while (tmp_list) - { - rc_file = tmp_list->data; - if (!strcmp (rc_file->name, filename)) - return rc_file; - - tmp_list = tmp_list->next; - } - - rc_file = g_new (GtkRcFile, 1); - rc_file->is_string = FALSE; - rc_file->name = g_strdup (filename); - rc_file->canonical_name = NULL; - rc_file->directory = NULL; - rc_file->mtime = 0; - rc_file->reload = reload; - - *rc_file_list = g_slist_append (*rc_file_list, rc_file); - - return rc_file; -} - -static void -gtk_rc_context_parse_one_file (GtkRcContext *context, - const gchar *filename, - gint priority, - gboolean reload) -{ - GtkRcFile *rc_file; - struct stat statbuf; - gint saved_priority; - - g_return_if_fail (filename != NULL); - - saved_priority = context->default_priority; - context->default_priority = priority; - - rc_file = add_to_rc_file_list (&context->rc_files, filename, reload); - - if (!rc_file->canonical_name) - { - /* Get the absolute pathname */ - - if (g_path_is_absolute (rc_file->name)) - rc_file->canonical_name = rc_file->name; - else - { - gchar *cwd; - - cwd = g_get_current_dir (); - rc_file->canonical_name = g_build_filename (cwd, rc_file->name, NULL); - g_free (cwd); - } - - rc_file->directory = g_path_get_dirname (rc_file->canonical_name); - } - - /* If the file is already being parsed (recursion), do nothing - */ - if (g_slist_find (current_files_stack, rc_file)) - return; - - if (!g_lstat (rc_file->canonical_name, &statbuf)) - { - gint fd; - - rc_file->mtime = statbuf.st_mtime; - - fd = g_open (rc_file->canonical_name, O_RDONLY, 0); - if (fd < 0) - goto out; - - /* Temporarily push information for this file on - * a stack of current files while parsing it. - */ - current_files_stack = g_slist_prepend (current_files_stack, rc_file); - gtk_rc_parse_any (context, filename, fd, NULL); - current_files_stack = g_slist_delete_link (current_files_stack, - current_files_stack); - - close (fd); - } - - out: - context->default_priority = saved_priority; -} - -static gchar * -strchr_len (const gchar *str, gint len, char c) -{ - while (len--) - { - if (*str == c) - return (gchar *)str; - - str++; - } - - return NULL; -} - -static void -gtk_rc_context_parse_file (GtkRcContext *context, - const gchar *filename, - gint priority, - gboolean reload) -{ - gchar *locale_suffixes[2]; - gint n_locale_suffixes = 0; - gchar *p; - gchar *locale; - gint length, j; - gboolean found = FALSE; - - locale = _gtk_get_lc_ctype (); - - if (strcmp (locale, "C") && strcmp (locale, "POSIX")) - { - /* Determine locale-specific suffixes for RC files. - */ - length = strlen (locale); - - p = strchr (locale, '@'); - if (p) - length = p - locale; - - p = strchr_len (locale, length, '.'); - if (p) - length = p - locale; - - locale_suffixes[n_locale_suffixes++] = g_strndup (locale, length); - - p = strchr_len (locale, length, '_'); - if (p) - { - length = p - locale; - locale_suffixes[n_locale_suffixes++] = g_strndup (locale, length); - } - } - - g_free (locale); - - gtk_rc_context_parse_one_file (context, filename, priority, reload); - for (j = 0; j < n_locale_suffixes; j++) - { - if (!found) - { - gchar *name = g_strconcat (filename, ".", locale_suffixes[j], NULL); - if (g_file_test (name, G_FILE_TEST_EXISTS)) - { - gtk_rc_context_parse_one_file (context, name, priority, FALSE); - found = TRUE; - } - - g_free (name); - } - - g_free (locale_suffixes[j]); - } } void gtk_rc_parse (const gchar *filename) { - GSList *tmp_list; - g_return_if_fail (filename != NULL); - -#if 0 - add_to_rc_file_list (&global_rc_files, filename, TRUE); - - for (tmp_list = rc_contexts; tmp_list; tmp_list = tmp_list->next) - gtk_rc_context_parse_file (tmp_list->data, filename, GTK_PATH_PRIO_RC, TRUE); -#endif } /* Handling of RC styles */ @@ -1287,85 +544,15 @@ gtk_rc_style_copy (GtkRcStyle *orig) style = GTK_RC_STYLE_GET_CLASS (orig)->create_rc_style (orig); GTK_RC_STYLE_GET_CLASS (style)->merge (style, orig); - gtk_rc_style_copy_icons_and_colors (style, orig, NULL); - return style; } -void -_gtk_rc_style_set_rc_property (GtkRcStyle *rc_style, - GtkRcProperty *property) -{ - g_return_if_fail (GTK_IS_RC_STYLE (rc_style)); - g_return_if_fail (property != NULL); - - insert_rc_property (rc_style, property, TRUE); -} - -void -_gtk_rc_style_unset_rc_property (GtkRcStyle *rc_style, - GQuark type_name, - GQuark property_name) -{ - GtkRcProperty *node; - - g_return_if_fail (GTK_IS_RC_STYLE (rc_style)); - - node = (GtkRcProperty *) _gtk_rc_style_lookup_rc_property (rc_style, - type_name, - property_name); - - if (node != NULL) - { - guint index = node - (GtkRcProperty *) rc_style->rc_properties->data; - g_value_unset (&node->value); - g_free (node->origin); - g_array_remove_index (rc_style->rc_properties, index); - } -} - static GtkRcStyle * gtk_rc_style_real_create_rc_style (GtkRcStyle *style) { return g_object_new (G_OBJECT_TYPE (style), NULL); } -GSList * -_gtk_rc_style_get_color_hashes (GtkRcStyle *rc_style) -{ - GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - - return priv->color_hashes; -} - -static void gtk_rc_style_prepend_empty_color_hash (GtkRcStyle *rc_style); - -void -_gtk_rc_style_set_symbolic_color (GtkRcStyle *rc_style, - const gchar *name, - const GdkColor *color) -{ - GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - GHashTable *our_hash = NULL; - - if (priv->color_hashes) - our_hash = priv->color_hashes->data; - - if (our_hash == NULL) - { - if (color == NULL) - return; - - gtk_rc_style_prepend_empty_color_hash (rc_style); - our_hash = priv->color_hashes->data; - } - - if (color) - g_hash_table_insert (our_hash, g_strdup (name), gdk_color_copy (color)); - else - g_hash_table_remove (our_hash, name); -} - static gint gtk_rc_properties_cmp (gconstpointer bsearch_node1, gconstpointer bsearch_node2) @@ -1498,195 +685,6 @@ gtk_rc_style_real_create_style (GtkRcStyle *rc_style) return gtk_style_new (); } -static void -gtk_rc_style_prepend_empty_icon_factory (GtkRcStyle *rc_style) -{ - GtkIconFactory *factory = gtk_icon_factory_new (); - - rc_style->icon_factories = g_slist_prepend (rc_style->icon_factories, factory); -} - -static void -gtk_rc_style_prepend_empty_color_hash (GtkRcStyle *rc_style) -{ - GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - GHashTable *hash = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, - (GDestroyNotify) gdk_color_free); - - priv->color_hashes = g_slist_prepend (priv->color_hashes, hash); -} - -static void -gtk_rc_style_append_icon_factories (GtkRcStyle *rc_style, - GtkRcStyle *src_style) -{ - GSList *concat = g_slist_copy (src_style->icon_factories); - - g_slist_foreach (concat, (GFunc) g_object_ref, NULL); - - rc_style->icon_factories = g_slist_concat (rc_style->icon_factories, concat); -} - -static void -gtk_rc_style_append_color_hashes (GtkRcStyle *rc_style, - GtkRcStyle *src_style) -{ - GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - GtkRcStylePrivate *src_priv = GTK_RC_STYLE_GET_PRIVATE (src_style); - GSList *concat = g_slist_copy (src_priv->color_hashes); - - g_slist_foreach (concat, (GFunc) g_hash_table_ref, NULL); - - priv->color_hashes = g_slist_concat (priv->color_hashes, concat); -} - -static void -gtk_rc_style_copy_icons_and_colors (GtkRcStyle *rc_style, - GtkRcStyle *src_style, - GtkRcContext *context) -{ - GtkRcStylePrivate *priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - - if (src_style) - { - GtkRcStylePrivate *src_priv = GTK_RC_STYLE_GET_PRIVATE (src_style); - - /* Append src_style's factories, adding a ref to them */ - if (src_style->icon_factories != NULL) - { - /* Add a factory for ourselves if we have none, - * in case we end up defining more stock icons. - * I see no real way around this; we need to maintain - * the invariant that the first factory in the list - * is always our_factory, the one belonging to us, - * and if we put src_style factories in the list we can't - * do that if the style is reopened. - */ - if (rc_style->icon_factories == NULL) - gtk_rc_style_prepend_empty_icon_factory (rc_style); - - gtk_rc_style_append_icon_factories (rc_style, src_style); - } - - /* Also append src_style's color hashes, adding a ref to them */ - if (src_priv->color_hashes != NULL) - { - /* See comment above .. */ - if (priv->color_hashes == NULL) - gtk_rc_style_prepend_empty_color_hash (rc_style); - - gtk_rc_style_append_color_hashes (rc_style, src_style); - } - } - - /* if we didn't get color hashes from the src_style, initialize - * the list with the settings' color scheme (if it exists) - */ - if (priv->color_hashes == NULL && context && context->color_hash != NULL) - { - gtk_rc_style_prepend_empty_color_hash (rc_style); - - priv->color_hashes = g_slist_append (priv->color_hashes, - g_hash_table_ref (context->color_hash)); - } -} - -static void -gtk_rc_clear_hash_node (gpointer key, - gpointer data, - gpointer user_data) -{ - g_object_unref (data); -} - -static void -gtk_rc_free_rc_sets (GSList *slist) -{ - while (slist) - { - GtkRcSet *rc_set; - - rc_set = slist->data; - gtk_rc_set_free (rc_set); - - slist = slist->next; - } -} - -static void -gtk_rc_clear_styles (GtkRcContext *context) -{ - /* Clear out all old rc_styles */ - - if (context->rc_style_ht) - { - g_hash_table_foreach (context->rc_style_ht, gtk_rc_clear_hash_node, NULL); - g_hash_table_destroy (context->rc_style_ht); - context->rc_style_ht = NULL; - } - - gtk_rc_free_rc_sets (context->rc_sets_widget); - g_slist_free (context->rc_sets_widget); - context->rc_sets_widget = NULL; - - gtk_rc_free_rc_sets (context->rc_sets_widget_class); - g_slist_free (context->rc_sets_widget_class); - context->rc_sets_widget_class = NULL; - - gtk_rc_free_rc_sets (context->rc_sets_class); - g_slist_free (context->rc_sets_class); - context->rc_sets_class = NULL; -} - -/* Reset all our widgets. Also, we have to invalidate cached icons in - * icon sets so they get re-rendered. - */ -static void -gtk_rc_reset_widgets (GtkSettings *settings) -{ - GList *list, *toplevels; - - _gtk_icon_set_invalidate_caches (); - - toplevels = gtk_window_list_toplevels (); - g_list_foreach (toplevels, (GFunc)g_object_ref, NULL); - - for (list = toplevels; list; list = list->next) - { - if (gtk_widget_get_screen (list->data) == settings->screen) - { - gtk_widget_reset_rc_styles (list->data); - } - - g_object_unref (list->data); - } - g_list_free (toplevels); -} - -static void -gtk_rc_clear_realized_style (gpointer key, - gpointer value, - gpointer data) -{ - GSList *rc_styles = key; - GtkStyle *style = value; - GSList *tmp_list = rc_styles; - - g_object_unref (style); - - while (tmp_list) - { - GtkRcStyle *rc_style = tmp_list->data; - - rc_style->rc_style_lists = g_slist_remove_all (rc_style->rc_style_lists, - rc_styles); - tmp_list = tmp_list->next; - } - - g_slist_free (rc_styles); -} - /** * gtk_rc_reset_styles: * @settings: a #GtkSettings @@ -1707,59 +705,7 @@ gtk_rc_clear_realized_style (gpointer key, void gtk_rc_reset_styles (GtkSettings *settings) { - GtkRcContext *context; - gboolean reset = FALSE; - - g_return_if_fail (GTK_IS_SETTINGS (settings)); - - context = gtk_rc_context_get (settings); - - if (context->default_style) - { - g_object_unref (context->default_style); - context->default_style = NULL; - reset = TRUE; - } - - /* Clear out styles that have been looked up already - */ - if (realized_style_ht) - { - g_hash_table_foreach (realized_style_ht, gtk_rc_clear_realized_style, NULL); - g_hash_table_destroy (realized_style_ht); - realized_style_ht = NULL; - reset = TRUE; - } - - if (reset) - gtk_rc_reset_widgets (settings); -} - -const gchar* -_gtk_rc_context_get_default_font_name (GtkSettings *settings) -{ - GtkRcContext *context; - gchar *new_font_name; - - g_return_val_if_fail (GTK_IS_SETTINGS (settings), NULL); - - context = gtk_rc_context_get (settings); - - g_object_get (context->settings, - "gtk-font-name", &new_font_name, - NULL); - - if (new_font_name != context->font_name && !(new_font_name && strcmp (context->font_name, new_font_name) == 0)) - { - g_free (context->font_name); - context->font_name = g_strdup (new_font_name); - - gtk_rc_reset_styles (settings); - } - - g_free (new_font_name); - - return context->font_name; + gtk_style_context_reset_widgets (_gtk_settings_get_screen (settings)); } /** @@ -1777,97 +723,7 @@ gboolean gtk_rc_reparse_all_for_settings (GtkSettings *settings, gboolean force_load) { - gboolean mtime_modified = FALSE; - GtkRcFile *rc_file; - GSList *tmp_list; - GtkRcContext *context; - struct stat statbuf; - - g_return_val_if_fail (GTK_IS_SETTINGS (settings), FALSE); - - context = gtk_rc_context_get (settings); - - if (context->reloading) - return FALSE; - - if (!force_load) - { - /* Check through and see if any of the RC's have had their - * mtime modified. If so, reparse everything. - */ - tmp_list = context->rc_files; - while (tmp_list) - { - rc_file = tmp_list->data; - - if (!rc_file->is_string) - { - if (!g_lstat (rc_file->name, &statbuf) && - (statbuf.st_mtime != rc_file->mtime)) - { - mtime_modified = TRUE; - break; - } - } - - tmp_list = tmp_list->next; - } - } - - if (force_load || mtime_modified) - { - _gtk_binding_reset_parsed (); - gtk_rc_clear_styles (context); - context->reloading = TRUE; - - _gtk_settings_reset_rc_values (context->settings); - gtk_rc_clear_rc_files (context); - - gtk_rc_parse_default_files (context); - - tmp_list = global_rc_files; - while (tmp_list) - { - rc_file = tmp_list->data; - - if (rc_file->is_string) - gtk_rc_context_parse_string (context, rc_file->name); - else - gtk_rc_context_parse_file (context, rc_file->name, GTK_PATH_PRIO_RC, FALSE); - - tmp_list = tmp_list->next; - } - - g_free (context->theme_name); - g_free (context->key_theme_name); - - g_object_get (context->settings, - "gtk-theme-name", &context->theme_name, - "gtk-key-theme-name", &context->key_theme_name, - "gtk-application-prefer-dark-theme", &context->prefer_dark_theme, - NULL); - - if (context->theme_name && context->theme_name[0]) - { - if (context->prefer_dark_theme) - { - if (!gtk_rc_parse_named (context, context->theme_name, NULL, "-dark")) - gtk_rc_parse_named (context, context->theme_name, NULL, NULL); - } - else - { - gtk_rc_parse_named (context, context->theme_name, NULL, NULL); - } - } - if (context->key_theme_name && context->key_theme_name[0]) - gtk_rc_parse_named (context, context->key_theme_name, "key", NULL); - - context->reloading = FALSE; - - gtk_rc_reset_widgets (context->settings); - } - - return force_load || mtime_modified; + return FALSE; } /** @@ -1882,89 +738,7 @@ gtk_rc_reparse_all_for_settings (GtkSettings *settings, gboolean gtk_rc_reparse_all (void) { - GSList *tmp_list; - gboolean result = FALSE; - - for (tmp_list = rc_contexts; tmp_list; tmp_list = tmp_list->next) - { - GtkRcContext *context = tmp_list->data; - if (gtk_rc_reparse_all_for_settings (context->settings, FALSE)) - result = TRUE; - } - - return result; -} - -static GSList * -gtk_rc_styles_match (GSList *rc_styles, - GSList *sets, - guint path_length, - gchar *path, - gchar *path_reversed) - -{ - GtkRcSet *rc_set; - - while (sets) - { - rc_set = sets->data; - sets = sets->next; - - if (rc_set->type == GTK_PATH_WIDGET_CLASS) - { - if (_gtk_rc_match_widget_class (rc_set->path, path_length, path, path_reversed)) - rc_styles = g_slist_append (rc_styles, rc_set); - } - else - { - if (g_pattern_match (rc_set->pspec, path_length, path, path_reversed)) - rc_styles = g_slist_append (rc_styles, rc_set); - } - } - - return rc_styles; -} - -static gint -rc_set_compare (gconstpointer a, gconstpointer b) -{ - const GtkRcSet *set_a = a; - const GtkRcSet *set_b = b; - - return (set_a->priority < set_b->priority) ? 1 : (set_a->priority == set_b->priority ? 0 : -1); -} - -static GSList * -sort_and_dereference_sets (GSList *styles) -{ - GSList *tmp_list; - - /* At this point, the list of sets is ordered by: - * - * a) 'widget' patterns are earlier than 'widget_class' patterns - * which are ealier than 'class' patterns. - * a) For two matches for class patterns, a match to a child type - * is before a match to a parent type - * c) a match later in the RC file (or in a later RC file) is before a - * match earlier in the RC file. - * - * With a) taking precedence over b) which takes precendence over c). - * - * Now sort by priority, which has the highest precendence for sort order - */ - styles = g_slist_sort (styles, rc_set_compare); - - /* Make styles->data = styles->data->rc_style - */ - tmp_list = styles; - while (tmp_list) - { - GtkRcSet *set = tmp_list->data; - tmp_list->data = set->rc_style; - tmp_list = tmp_list->next; - } - - return styles; + return FALSE; } /** @@ -1987,87 +761,11 @@ sort_and_dereference_sets (GSList *styles) GtkStyle * gtk_rc_get_style (GtkWidget *widget) { - GtkRcStyle *widget_rc_style; - GSList *rc_styles = NULL; - GtkRcContext *context; - - static guint rc_style_key_id = 0; - g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - context = gtk_rc_context_get (gtk_widget_get_settings (widget)); + gtk_widget_ensure_style (widget); - /* We allow the specification of a single rc style to be bound - * tightly to a widget, for application modifications - */ - if (!rc_style_key_id) - rc_style_key_id = g_quark_from_static_string ("gtk-rc-style"); - - if (context->rc_sets_widget) - { - gchar *path, *path_reversed; - guint path_length; - - gtk_widget_path (widget, &path_length, &path, &path_reversed); - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_widget, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); - } - - if (context->rc_sets_widget_class) - { - gchar *path, *path_reversed; - guint path_length; - - gtk_widget_class_path (widget, &path_length, &path, &path_reversed); - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_widget_class, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); - } - - if (context->rc_sets_class) - { - GType type; - - type = G_TYPE_FROM_INSTANCE (widget); - while (type) - { - gchar *path; - gchar *path_reversed; - guint path_length; - - path = g_strdup (g_type_name (type)); - path_length = strlen (path); - path_reversed = g_strdup (path); - g_strreverse (path_reversed); - - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_class, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); - - type = g_type_parent (type); - } - } - - rc_styles = sort_and_dereference_sets (rc_styles); - - widget_rc_style = g_object_get_qdata (G_OBJECT (widget), rc_style_key_id); - - if (widget_rc_style) - rc_styles = g_slist_prepend (rc_styles, widget_rc_style); - - if (rc_styles) - return gtk_rc_init_style (context, rc_styles); - else - { - if (!context->default_style) - { - context->default_style = gtk_style_new (); - _gtk_style_init_for_settings (context->default_style, context->settings); - } - - return context->default_style; - } + return gtk_widget_get_style (widget); } /** @@ -2109,76 +807,83 @@ gtk_rc_get_style_by_paths (GtkSettings *settings, const char *class_path, GType type) { - /* We duplicate the code from above to avoid slowing down the above - * by generating paths when we don't need them. I don't know if - * this is really worth it. + GtkWidgetPath *path; + GtkStyle *style; + + path = gtk_widget_path_new (); + + /* For compatibility, we return a GtkStyle based on a GtkStyleContext + * with a GtkWidgetPath appropriate for the supplied information. + * + * GtkWidgetPath is composed of a list of GTypes with optional names; + * In GTK+-2.0, widget_path consisted of the widget names, or + * the class names for unnamed widgets, while class_path had the + * class names always. So, use class_path to determine the GTypes + * and extract widget names from widget_path as applicable. */ - GSList *rc_styles = NULL; - GtkRcContext *context; - - g_return_val_if_fail (GTK_IS_SETTINGS (settings), NULL); - - context = gtk_rc_context_get (settings); - - if (widget_path && context->rc_sets_widget) + if (class_path == NULL) { - gchar *path; - gchar *path_reversed; - guint path_length; - - path_length = strlen (widget_path); - path = g_strdup (widget_path); - path_reversed = g_strdup (widget_path); - g_strreverse (path_reversed); - - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_widget, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); + gtk_widget_path_append_type (path, type == G_TYPE_NONE ? GTK_TYPE_WIDGET : type); } - - if (class_path && context->rc_sets_widget_class) + else { - gchar *path; - gchar *path_reversed; - guint path_length; + const gchar *widget_p, *widget_next; + const gchar *class_p, *class_next; - path = g_strdup (class_path); - path_length = strlen (class_path); - path_reversed = g_strdup (class_path); - g_strreverse (path_reversed); + widget_next = widget_path; + class_next = class_path; - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_widget_class, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); - } - - if (type != G_TYPE_NONE && context->rc_sets_class) - { - while (type) + while (*class_next) { - gchar *path; - gchar *path_reversed; - guint path_length; + GType component_type; + gchar *component_class; + gchar *component_name; + gint pos; - path = g_strdup (g_type_name (type)); - path_length = strlen (path); - path_reversed = g_strdup (path); - g_strreverse (path_reversed); - - rc_styles = gtk_rc_styles_match (rc_styles, context->rc_sets_class, path_length, path, path_reversed); - g_free (path); - g_free (path_reversed); - - type = g_type_parent (type); + class_p = class_next; + if (*class_p == '.') + class_p++; + + widget_p = widget_next; /* Might be NULL */ + if (widget_p && *widget_p == '.') + widget_p++; + + class_next = strchr (class_p, '.'); + if (class_next == NULL) + class_next = class_p + strlen (class_p); + + if (widget_p) + { + widget_next = strchr (widget_p, '.'); + if (widget_next == NULL) + widget_next = widget_p + strlen (widget_p); + } + + component_class = g_strndup (class_p, class_next - class_p); + if (widget_p && *widget_p) + component_name = g_strndup (widget_p, widget_next - widget_p); + else + component_name = NULL; + + component_type = g_type_from_name (component_class); + if (component_type == G_TYPE_INVALID) + component_type = GTK_TYPE_WIDGET; + + pos = gtk_widget_path_append_type (path, component_type); + if (component_name != NULL && strcmp (component_name, component_name) != 0) + gtk_widget_path_iter_set_name (path, pos, component_name); + + g_free (component_class); + g_free (component_name); } } - - rc_styles = sort_and_dereference_sets (rc_styles); - - if (rc_styles) - return gtk_rc_init_style (context, rc_styles); - return NULL; + style = _gtk_style_new_for_path (_gtk_settings_get_screen (settings), + path); + + gtk_widget_path_free (path); + + return style; } /** @@ -2192,260 +897,6 @@ gtk_rc_scanner_new (void) return g_scanner_new (>k_rc_scanner_config); } -static void -gtk_rc_parse_any (GtkRcContext *context, - const gchar *input_name, - gint input_fd, - const gchar *input_string) -{ - GScanner *scanner; - guint i; - gboolean done; - -#if 0 - scanner = gtk_rc_scanner_new (); - - if (input_fd >= 0) - { - g_assert (input_string == NULL); - - g_scanner_input_file (scanner, input_fd); - } - else - { - g_assert (input_string != NULL); - - g_scanner_input_text (scanner, input_string, strlen (input_string)); - } - scanner->input_name = input_name; - - for (i = 0; i < G_N_ELEMENTS (symbols); i++) - g_scanner_scope_add_symbol (scanner, 0, symbol_names + symbols[i].name_offset, GINT_TO_POINTER (symbols[i].token)); - done = FALSE; - while (!done) - { - if (g_scanner_peek_next_token (scanner) == G_TOKEN_EOF) - done = TRUE; - else - { - guint expected_token; - - expected_token = gtk_rc_parse_statement (context, scanner); - - if (expected_token != G_TOKEN_NONE) - { - const gchar *symbol_name = NULL; - gchar *msg = NULL; - - if (scanner->scope_id == 0) - { - guint token; - - /* if we are in scope 0, we know the symbol names - * that are associated with certain token values. - * so we look them up to make the error messages - * more readable. - */ - if (expected_token > GTK_RC_TOKEN_INVALID && - expected_token < GTK_RC_TOKEN_LAST) - { - const gchar *sym = NULL; - - for (i = 0; i < G_N_ELEMENTS (symbols); i++) - if (symbols[i].token == expected_token) - sym = symbol_names + symbols[i].name_offset; - - if (sym) - msg = g_strconcat ("e.g. `", sym, "'", NULL); - } - - token = scanner->token; - if (token > GTK_RC_TOKEN_INVALID && - token < GTK_RC_TOKEN_LAST) - { - symbol_name = "???"; - for (i = 0; i < G_N_ELEMENTS (symbols); i++) - if (symbols[i].token == scanner->token) - symbol_name = symbol_names + symbols[i].name_offset; - } - } - - g_scanner_unexp_token (scanner, - expected_token, - NULL, - "keyword", - symbol_name, - msg, - TRUE); - g_free (msg); - done = TRUE; - } - } - } - - g_scanner_destroy (scanner); -#endif -} - -static guint -gtk_rc_styles_hash (const GSList *rc_styles) -{ - guint result; - - result = 0; - while (rc_styles) - { - result += (result << 9) + GPOINTER_TO_UINT (rc_styles->data); - rc_styles = rc_styles->next; - } - - return result; -} - -static gboolean -gtk_rc_styles_equal (const GSList *a, - const GSList *b) -{ - while (a && b) - { - if (a->data != b->data) - return FALSE; - a = a->next; - b = b->next; - } - - return (a == b); -} - -static guint -gtk_rc_style_hash (const gchar *name) -{ - guint result; - - result = 0; - while (*name) - result += (result << 3) + *name++; - - return result; -} - -static gboolean -gtk_rc_style_equal (const gchar *a, - const gchar *b) -{ - return (strcmp (a, b) == 0); -} - -static GtkRcStyle* -gtk_rc_style_find (GtkRcContext *context, - const gchar *name) -{ - if (context->rc_style_ht) - return g_hash_table_lookup (context->rc_style_ht, (gpointer) name); - else - return NULL; -} - -static GtkStyle * -gtk_rc_style_to_style (GtkRcContext *context, - GtkRcStyle *rc_style) -{ - GtkStyle *style; - - style = GTK_RC_STYLE_GET_CLASS (rc_style)->create_style (rc_style); - _gtk_style_init_for_settings (style, context->settings); - - style->rc_style = g_object_ref (rc_style); - - GTK_STYLE_GET_CLASS (style)->init_from_rc (style, rc_style); - - return style; -} - -/* Reuses or frees rc_styles */ -static GtkStyle * -gtk_rc_init_style (GtkRcContext *context, - GSList *rc_styles) -{ - GtkStyle *style = NULL; - gint i; - - g_return_val_if_fail (rc_styles != NULL, NULL); - - if (!realized_style_ht) - realized_style_ht = g_hash_table_new ((GHashFunc) gtk_rc_styles_hash, - (GEqualFunc) gtk_rc_styles_equal); - - style = g_hash_table_lookup (realized_style_ht, rc_styles); - - if (!style) - { - GtkRcStyle *base_style = NULL; - GtkRcStyle *proto_style; - GtkRcStyleClass *proto_style_class; - GSList *tmp_styles; - GType rc_style_type = GTK_TYPE_RC_STYLE; - - /* Find the first style where the RC file specified engine "" {} - * or the first derived style and use that to create the - * merged style. If we only have raw GtkRcStyles, use the first - * style to create the merged style. - */ - base_style = rc_styles->data; - tmp_styles = rc_styles; - while (tmp_styles) - { - GtkRcStyle *rc_style = tmp_styles->data; - - if (rc_style->engine_specified || - G_OBJECT_TYPE (rc_style) != rc_style_type) - { - base_style = rc_style; - break; - } - - tmp_styles = tmp_styles->next; - } - - proto_style_class = GTK_RC_STYLE_GET_CLASS (base_style); - proto_style = proto_style_class->create_rc_style (base_style); - - tmp_styles = rc_styles; - while (tmp_styles) - { - GtkRcStyle *rc_style = tmp_styles->data; - - proto_style_class->merge (proto_style, rc_style); - - /* Point from each rc_style to the list of styles */ - if (!g_slist_find (rc_style->rc_style_lists, rc_styles)) - rc_style->rc_style_lists = g_slist_prepend (rc_style->rc_style_lists, rc_styles); - - gtk_rc_style_append_icon_factories (proto_style, rc_style); - gtk_rc_style_append_color_hashes (proto_style, rc_style); - - tmp_styles = tmp_styles->next; - } - - for (i = 0; i < 5; i++) - if (proto_style->bg_pixmap_name[i] && - (strcmp (proto_style->bg_pixmap_name[i], "") == 0)) - { - g_free (proto_style->bg_pixmap_name[i]); - proto_style->bg_pixmap_name[i] = NULL; - } - - style = gtk_rc_style_to_style (context, proto_style); - g_object_unref (proto_style); - - g_hash_table_insert (realized_style_ht, rc_styles, style); - } - else - g_slist_free (rc_styles); - - return style; -} - /********************* * Parsing functions * *********************/ @@ -2475,974 +926,6 @@ lookup_color (GtkRcStyle *style, return FALSE; } -static guint -rc_parse_token_or_compound (GScanner *scanner, - GtkRcStyle *style, - GString *gstring, - GTokenType delimiter) -{ - guint token = g_scanner_get_next_token (scanner); - - /* we either scan a single token (skipping comments) - * or a compund statement. - * compunds are enclosed in (), [] or {} braces, we read - * them in via deep recursion. - */ - - switch (token) - { - gchar *string; - case G_TOKEN_INT: - g_string_append_printf (gstring, " 0x%lx", scanner->value.v_int); - break; - case G_TOKEN_FLOAT: - g_string_append_printf (gstring, " %f", scanner->value.v_float); - break; - case G_TOKEN_STRING: - string = g_strescape (scanner->value.v_string, NULL); - g_string_append (gstring, " \""); - g_string_append (gstring, string); - g_string_append_c (gstring, '"'); - g_free (string); - break; - case G_TOKEN_IDENTIFIER: - g_string_append_c (gstring, ' '); - g_string_append (gstring, scanner->value.v_identifier); - break; - case G_TOKEN_COMMENT_SINGLE: - case G_TOKEN_COMMENT_MULTI: - return rc_parse_token_or_compound (scanner, style, gstring, delimiter); - case G_TOKEN_LEFT_PAREN: - g_string_append_c (gstring, ' '); - g_string_append_c (gstring, token); - token = rc_parse_token_or_compound (scanner, style, gstring, G_TOKEN_RIGHT_PAREN); - if (token != G_TOKEN_NONE) - return token; - break; - case G_TOKEN_LEFT_CURLY: - g_string_append_c (gstring, ' '); - g_string_append_c (gstring, token); - token = rc_parse_token_or_compound (scanner, style, gstring, G_TOKEN_RIGHT_CURLY); - if (token != G_TOKEN_NONE) - return token; - break; - case G_TOKEN_LEFT_BRACE: - g_string_append_c (gstring, ' '); - g_string_append_c (gstring, token); - token = rc_parse_token_or_compound (scanner, style, gstring, G_TOKEN_RIGHT_BRACE); - if (token != G_TOKEN_NONE) - return token; - break; - case '@': - if (g_scanner_peek_next_token (scanner) == G_TOKEN_IDENTIFIER) - { - GdkColor color; - gchar rbuf[G_ASCII_DTOSTR_BUF_SIZE]; - gchar gbuf[G_ASCII_DTOSTR_BUF_SIZE]; - gchar bbuf[G_ASCII_DTOSTR_BUF_SIZE]; - - g_scanner_get_next_token (scanner); - - if (!style || !lookup_color (style, scanner->value.v_identifier, - &color)) - { - g_scanner_warn (scanner, "Invalid symbolic color '%s'", - scanner->value.v_identifier); - return G_TOKEN_IDENTIFIER; - } - - - g_string_append_printf (gstring, " { %s, %s, %s }", - g_ascii_formatd (rbuf, sizeof (rbuf), - "%0.4f", - color.red / 65535.0), - g_ascii_formatd (gbuf, sizeof (gbuf), - "%0.4f", - color.green / 65535.0), - g_ascii_formatd (bbuf, sizeof (bbuf), - "%0.4f", - color.blue / 65535.0)); - break; - } - else - return G_TOKEN_IDENTIFIER; - default: - if (token >= 256 || token < 1) - return delimiter ? delimiter : G_TOKEN_STRING; - g_string_append_c (gstring, ' '); - g_string_append_c (gstring, token); - if (token == delimiter) - return G_TOKEN_NONE; - break; - } - if (!delimiter) - return G_TOKEN_NONE; - else - return rc_parse_token_or_compound (scanner, style, gstring, delimiter); -} - -static guint -gtk_rc_parse_assignment (GScanner *scanner, - GtkRcStyle *style, - GtkRcProperty *prop) -{ -#define MY_SCAN_IDENTIFIER TRUE -#define MY_SCAN_SYMBOLS FALSE -#define MY_IDENTIFIER_2_STRING FALSE -#define MY_CHAR_2_TOKEN TRUE -#define MY_SCAN_IDENTIFIER_NULL FALSE -#define MY_NUMBERS_2_INT TRUE - - gboolean scan_identifier = scanner->config->scan_identifier; - gboolean scan_symbols = scanner->config->scan_symbols; - gboolean identifier_2_string = scanner->config->identifier_2_string; - gboolean char_2_token = scanner->config->char_2_token; - gboolean scan_identifier_NULL = scanner->config->scan_identifier_NULL; - gboolean numbers_2_int = scanner->config->numbers_2_int; - gboolean negate = FALSE; - gboolean is_color = FALSE; - guint token; - - /* check that this is an assignment */ - if (g_scanner_get_next_token (scanner) != '=') - return '='; - - /* adjust scanner mode */ - scanner->config->scan_identifier = MY_SCAN_IDENTIFIER; - scanner->config->scan_symbols = MY_SCAN_SYMBOLS; - scanner->config->identifier_2_string = MY_IDENTIFIER_2_STRING; - scanner->config->char_2_token = MY_CHAR_2_TOKEN; - scanner->config->scan_identifier_NULL = MY_SCAN_IDENTIFIER_NULL; - scanner->config->numbers_2_int = MY_NUMBERS_2_INT; - - /* record location */ - if (g_getenv ("GTK_DEBUG")) - prop->origin = g_strdup_printf ("%s:%u", scanner->input_name, scanner->line); - else - prop->origin = NULL; - - /* parse optional symbolic color prefix */ - if (g_scanner_peek_next_token (scanner) == '@') - { - g_scanner_get_next_token (scanner); /* eat color prefix */ - is_color = TRUE; - } - - /* parse optional sign */ - if (!is_color && g_scanner_peek_next_token (scanner) == '-') - { - g_scanner_get_next_token (scanner); /* eat sign */ - negate = TRUE; - } - - /* parse one of LONG, DOUBLE and STRING or, if that fails, create an - * unparsed compund - */ - token = g_scanner_peek_next_token (scanner); - - if (is_color && token != G_TOKEN_IDENTIFIER) - { - token = G_TOKEN_IDENTIFIER; - goto out; - } - - switch (token) - { - case G_TOKEN_INT: - g_scanner_get_next_token (scanner); - g_value_init (&prop->value, G_TYPE_LONG); - g_value_set_long (&prop->value, negate ? -scanner->value.v_int : scanner->value.v_int); - token = G_TOKEN_NONE; - break; - case G_TOKEN_FLOAT: - g_scanner_get_next_token (scanner); - g_value_init (&prop->value, G_TYPE_DOUBLE); - g_value_set_double (&prop->value, negate ? -scanner->value.v_float : scanner->value.v_float); - token = G_TOKEN_NONE; - break; - case G_TOKEN_STRING: - g_scanner_get_next_token (scanner); - if (negate) - token = G_TOKEN_INT; - else - { - g_value_init (&prop->value, G_TYPE_STRING); - g_value_set_string (&prop->value, scanner->value.v_string); - token = G_TOKEN_NONE; - } - break; - case G_TOKEN_IDENTIFIER: - if (is_color) - { - GdkColor color; - gchar rbuf[G_ASCII_DTOSTR_BUF_SIZE]; - gchar gbuf[G_ASCII_DTOSTR_BUF_SIZE]; - gchar bbuf[G_ASCII_DTOSTR_BUF_SIZE]; - GString *gstring; - - g_scanner_get_next_token (scanner); - - if (!style || !lookup_color (style, scanner->value.v_identifier, - &color)) - { - g_scanner_warn (scanner, "Invalid symbolic color '%s'", - scanner->value.v_identifier); - token = G_TOKEN_IDENTIFIER; - break; - } - - gstring = g_string_new (NULL); - - g_string_append_printf (gstring, " { %s, %s, %s }", - g_ascii_formatd (rbuf, sizeof (rbuf), - "%0.4f", - color.red / 65535.0), - g_ascii_formatd (gbuf, sizeof (gbuf), - "%0.4f", - color.green / 65535.0), - g_ascii_formatd (bbuf, sizeof (bbuf), - "%0.4f", - color.blue / 65535.0)); - - g_value_init (&prop->value, G_TYPE_GSTRING); - g_value_take_boxed (&prop->value, gstring); - token = G_TOKEN_NONE; - break; - } - /* fall through */ - case G_TOKEN_LEFT_PAREN: - case G_TOKEN_LEFT_CURLY: - case G_TOKEN_LEFT_BRACE: - if (!negate) - { - GString *gstring = g_string_new (NULL); - gboolean parse_on = TRUE; - - /* allow identifier(foobar) to support color expressions */ - if (token == G_TOKEN_IDENTIFIER) - { - g_scanner_get_next_token (scanner); - - g_string_append_c (gstring, ' '); - g_string_append (gstring, scanner->value.v_identifier); - - /* temporarily reset scanner mode to default, so we - * don't peek the next token in a mode that only makes - * sense in this function; because if anything but - * G_TOKEN_LEFT_PAREN follows, the next token will be - * parsed by our caller. - * - * FIXME: right fix would be to call g_scanner_unget() - * but that doesn't exist - */ - scanner->config->scan_identifier = scan_identifier; - scanner->config->scan_symbols = scan_symbols; - scanner->config->identifier_2_string = identifier_2_string; - scanner->config->char_2_token = char_2_token; - scanner->config->scan_identifier_NULL = scan_identifier_NULL; - scanner->config->numbers_2_int = numbers_2_int; - - token = g_scanner_peek_next_token (scanner); - - /* restore adjusted scanner mode */ - scanner->config->scan_identifier = MY_SCAN_IDENTIFIER; - scanner->config->scan_symbols = MY_SCAN_SYMBOLS; - scanner->config->identifier_2_string = MY_IDENTIFIER_2_STRING; - scanner->config->char_2_token = MY_CHAR_2_TOKEN; - scanner->config->scan_identifier_NULL = MY_SCAN_IDENTIFIER_NULL; - scanner->config->numbers_2_int = MY_NUMBERS_2_INT; - - if (token != G_TOKEN_LEFT_PAREN) - { - token = G_TOKEN_NONE; - parse_on = FALSE; - } - } - - if (parse_on) - token = rc_parse_token_or_compound (scanner, style, gstring, 0); - - if (token == G_TOKEN_NONE) - { - g_string_append_c (gstring, ' '); - g_value_init (&prop->value, G_TYPE_GSTRING); - g_value_take_boxed (&prop->value, gstring); - } - else - g_string_free (gstring, TRUE); - break; - } - /* fall through */ - default: - g_scanner_get_next_token (scanner); - token = G_TOKEN_INT; - break; - } - - out: - - /* restore scanner mode */ - scanner->config->scan_identifier = scan_identifier; - scanner->config->scan_symbols = scan_symbols; - scanner->config->identifier_2_string = identifier_2_string; - scanner->config->char_2_token = char_2_token; - scanner->config->scan_identifier_NULL = scan_identifier_NULL; - scanner->config->numbers_2_int = numbers_2_int; - - return token; -} - -static gboolean -is_c_identifier (const gchar *string) -{ - const gchar *p; - gboolean is_varname; - - is_varname = strchr ("_" G_CSET_a_2_z G_CSET_A_2_Z, string[0]) != NULL; - for (p = string + 1; *p && is_varname; p++) - is_varname &= strchr (G_CSET_DIGITS "-_" G_CSET_a_2_z G_CSET_A_2_Z, *p) != NULL; - - return is_varname; -} - -static void -parse_include_file (GtkRcContext *context, - GScanner *scanner, - const gchar *filename) -{ - char *to_parse = NULL; - - if (g_path_is_absolute (filename)) - { - /* For abolute paths, we call gtk_rc_context_parse_file unconditionally. We - * don't print an error in this case. - */ - to_parse = g_strdup (filename); - } - else - { - /* if a relative path, we look relative to all the RC files in the - * include stack. We require the file to be found in this case - * so we can give meaningful error messages, and because on reparsing - * non-absolute paths don't make sense. - */ - GSList *tmp_list = current_files_stack; - while (tmp_list) - { - GtkRcFile *curfile = tmp_list->data; - gchar *tmpname = g_build_filename (curfile->directory, filename, NULL); - - if (g_file_test (tmpname, G_FILE_TEST_EXISTS)) - { - to_parse = tmpname; - break; - } - - g_free (tmpname); - - tmp_list = tmp_list->next; - } - } - - if (to_parse) - { - gtk_rc_context_parse_file (context, to_parse, context->default_priority, FALSE); - g_free (to_parse); - } - else - { - g_scanner_warn (scanner, - _("Unable to find include file: \"%s\""), - filename); - } - -} - -static guint -gtk_rc_parse_statement (GtkRcContext *context, - GScanner *scanner) -{ - guint token; - - token = g_scanner_peek_next_token (scanner); - switch (token) - { - case GTK_RC_TOKEN_INCLUDE: - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_INCLUDE) - return GTK_RC_TOKEN_INCLUDE; - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - parse_include_file (context, scanner, scanner->value.v_string); - return G_TOKEN_NONE; - - case GTK_RC_TOKEN_STYLE: - return gtk_rc_parse_style (context, scanner); - - case GTK_RC_TOKEN_BINDING: - return _gtk_binding_parse_binding (scanner); - - case GTK_RC_TOKEN_PIXMAP_PATH: - return gtk_rc_parse_pixmap_path (context, scanner); - - case GTK_RC_TOKEN_WIDGET: - return gtk_rc_parse_path_pattern (context, scanner); - - case GTK_RC_TOKEN_WIDGET_CLASS: - return gtk_rc_parse_path_pattern (context, scanner); - - case GTK_RC_TOKEN_CLASS: - return gtk_rc_parse_path_pattern (context, scanner); - - case GTK_RC_TOKEN_MODULE_PATH: - return gtk_rc_parse_module_path (scanner); - - case GTK_RC_TOKEN_IM_MODULE_FILE: - return gtk_rc_parse_im_module_file (scanner); - - case G_TOKEN_IDENTIFIER: - if (is_c_identifier (scanner->next_value.v_identifier)) - { - GtkRcProperty prop = { 0, 0, NULL, { 0, }, }; - gchar *name; - - g_scanner_get_next_token (scanner); /* eat identifier */ - name = g_strdup (scanner->value.v_identifier); - - token = gtk_rc_parse_assignment (scanner, NULL, &prop); - if (token == G_TOKEN_NONE) - { - GtkSettingsValue svalue; - - svalue.origin = prop.origin; - memcpy (&svalue.value, &prop.value, sizeof (prop.value)); - g_strcanon (name, G_CSET_DIGITS "-" G_CSET_a_2_z G_CSET_A_2_Z, '-'); - _gtk_settings_set_property_value_from_rc (context->settings, - name, - &svalue); - } - g_free (prop.origin); - if (G_VALUE_TYPE (&prop.value)) - g_value_unset (&prop.value); - g_free (name); - - return token; - } - else - { - g_scanner_get_next_token (scanner); - return G_TOKEN_IDENTIFIER; - } - default: - g_scanner_get_next_token (scanner); - return /* G_TOKEN_SYMBOL */ GTK_RC_TOKEN_STYLE; - } -} - -static void -fixup_rc_set (GSList *list, - GtkRcStyle *orig, - GtkRcStyle *new) -{ - while (list) - { - GtkRcSet *set = list->data; - if (set->rc_style == orig) - set->rc_style = new; - list = list->next; - } -} - -static void -fixup_rc_sets (GtkRcContext *context, - GtkRcStyle *orig, - GtkRcStyle *new) -{ - fixup_rc_set (context->rc_sets_widget, orig, new); - fixup_rc_set (context->rc_sets_widget_class, orig, new); - fixup_rc_set (context->rc_sets_class, orig, new); -} - -static guint -gtk_rc_parse_style (GtkRcContext *context, - GScanner *scanner) -{ - GtkRcStyle *rc_style; - GtkRcStyle *orig_style; - GtkRcStyle *parent_style = NULL; - GtkRcStylePrivate *rc_priv = NULL; - guint token; - gint i; - GtkIconFactory *our_factory = NULL; - GHashTable *our_hash = NULL; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_STYLE) - return GTK_RC_TOKEN_STYLE; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - rc_style = gtk_rc_style_find (context, scanner->value.v_string); - if (rc_style) - orig_style = g_object_ref (rc_style); - else - orig_style = NULL; - - if (!rc_style) - { - rc_style = gtk_rc_style_new (); - rc_style->name = g_strdup (scanner->value.v_string); - - for (i = 0; i < 5; i++) - rc_style->bg_pixmap_name[i] = NULL; - - for (i = 0; i < 5; i++) - rc_style->color_flags[i] = 0; - } - - rc_priv = GTK_RC_STYLE_GET_PRIVATE (rc_style); - - /* If there's a list, its first member is always the factory belonging - * to this RcStyle - */ - if (rc_style->icon_factories) - our_factory = rc_style->icon_factories->data; - if (rc_priv->color_hashes) - our_hash = rc_priv->color_hashes->data; - - token = g_scanner_peek_next_token (scanner); - if (token == G_TOKEN_EQUAL_SIGN) - { - token = g_scanner_get_next_token (scanner); - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - { - token = G_TOKEN_STRING; - goto err; - } - - parent_style = gtk_rc_style_find (context, scanner->value.v_string); - if (parent_style) - { - for (i = 0; i < 5; i++) - { - rc_style->color_flags[i] = parent_style->color_flags[i]; - rc_style->fg[i] = parent_style->fg[i]; - rc_style->bg[i] = parent_style->bg[i]; - rc_style->text[i] = parent_style->text[i]; - rc_style->base[i] = parent_style->base[i]; - } - - rc_style->xthickness = parent_style->xthickness; - rc_style->ythickness = parent_style->ythickness; - - if (parent_style->font_desc) - { - if (rc_style->font_desc) - pango_font_description_free (rc_style->font_desc); - rc_style->font_desc = pango_font_description_copy (parent_style->font_desc); - } - - if (parent_style->rc_properties) - { - guint i; - - for (i = 0; i < parent_style->rc_properties->len; i++) - insert_rc_property (rc_style, - &g_array_index (parent_style->rc_properties, GtkRcProperty, i), - TRUE); - } - - for (i = 0; i < 5; i++) - { - g_free (rc_style->bg_pixmap_name[i]); - rc_style->bg_pixmap_name[i] = g_strdup (parent_style->bg_pixmap_name[i]); - } - } - } - - /* get icon_factories and color_hashes from the parent style; - * if the parent_style doesn't have color_hashes, initializes - * the color_hashes with the settings' color scheme (if it exists) - */ - gtk_rc_style_copy_icons_and_colors (rc_style, parent_style, context); - - if (rc_style->icon_factories) - our_factory = rc_style->icon_factories->data; - if (rc_priv->color_hashes) - our_hash = rc_priv->color_hashes->data; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_CURLY) - { - token = G_TOKEN_LEFT_CURLY; - goto err; - } - - token = g_scanner_peek_next_token (scanner); - while (token != G_TOKEN_RIGHT_CURLY) - { - switch (token) - { - case GTK_RC_TOKEN_BG: - token = gtk_rc_parse_bg (scanner, rc_style); - break; - case GTK_RC_TOKEN_FG: - token = gtk_rc_parse_fg (scanner, rc_style); - break; - case GTK_RC_TOKEN_TEXT: - token = gtk_rc_parse_text (scanner, rc_style); - break; - case GTK_RC_TOKEN_BASE: - token = gtk_rc_parse_base (scanner, rc_style); - break; - case GTK_RC_TOKEN_XTHICKNESS: - token = gtk_rc_parse_xthickness (scanner, rc_style); - break; - case GTK_RC_TOKEN_YTHICKNESS: - token = gtk_rc_parse_ythickness (scanner, rc_style); - break; - case GTK_RC_TOKEN_BG_PIXMAP: - token = gtk_rc_parse_bg_pixmap (context, scanner, rc_style); - break; - case GTK_RC_TOKEN_FONT: - token = gtk_rc_parse_font (scanner, rc_style); - break; - case GTK_RC_TOKEN_FONTSET: - token = gtk_rc_parse_fontset (scanner, rc_style); - break; - case GTK_RC_TOKEN_FONT_NAME: - token = gtk_rc_parse_font_name (scanner, rc_style); - break; - case GTK_RC_TOKEN_ENGINE: - token = gtk_rc_parse_engine (context, scanner, &rc_style); - break; - case GTK_RC_TOKEN_STOCK: - if (our_factory == NULL) - gtk_rc_style_prepend_empty_icon_factory (rc_style); - our_factory = rc_style->icon_factories->data; - token = gtk_rc_parse_stock (context, scanner, rc_style, our_factory); - break; - case GTK_RC_TOKEN_COLOR: - if (our_hash == NULL) - { - gtk_rc_style_prepend_empty_color_hash (rc_style); - our_hash = rc_priv->color_hashes->data; - } - token = gtk_rc_parse_logical_color (scanner, rc_style, our_hash); - break; - case G_TOKEN_IDENTIFIER: - if (is_c_identifier (scanner->next_value.v_identifier)) - { - GtkRcProperty prop = { 0, 0, NULL, { 0, }, }; - gchar *name; - - g_scanner_get_next_token (scanner); /* eat type name */ - prop.type_name = g_quark_from_string (scanner->value.v_identifier); - if (g_scanner_get_next_token (scanner) != ':' || - g_scanner_get_next_token (scanner) != ':') - { - token = ':'; - break; - } - if (g_scanner_get_next_token (scanner) != G_TOKEN_IDENTIFIER || - !is_c_identifier (scanner->value.v_identifier)) - { - token = G_TOKEN_IDENTIFIER; - break; - } - - /* it's important that we do the same canonification as GParamSpecPool here */ - name = g_strdup (scanner->value.v_identifier); - g_strcanon (name, G_CSET_DIGITS "-" G_CSET_a_2_z G_CSET_A_2_Z, '-'); - prop.property_name = g_quark_from_string (name); - g_free (name); - - token = gtk_rc_parse_assignment (scanner, rc_style, &prop); - if (token == G_TOKEN_NONE) - { - g_return_val_if_fail (G_VALUE_TYPE (&prop.value) != 0, G_TOKEN_ERROR); - insert_rc_property (rc_style, &prop, TRUE); - } - - g_free (prop.origin); - if (G_VALUE_TYPE (&prop.value)) - g_value_unset (&prop.value); - } - else - { - g_scanner_get_next_token (scanner); - token = G_TOKEN_IDENTIFIER; - } - break; - default: - g_scanner_get_next_token (scanner); - token = G_TOKEN_RIGHT_CURLY; - break; - } - - if (token != G_TOKEN_NONE) - goto err; - - token = g_scanner_peek_next_token (scanner); - } /* while (token != G_TOKEN_RIGHT_CURLY) */ - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_RIGHT_CURLY) - { - token = G_TOKEN_RIGHT_CURLY; - goto err; - } - - if (rc_style != orig_style) - { - if (!context->rc_style_ht) - context->rc_style_ht = g_hash_table_new ((GHashFunc) gtk_rc_style_hash, - (GEqualFunc) gtk_rc_style_equal); - - g_hash_table_replace (context->rc_style_ht, rc_style->name, rc_style); - - /* If we copied the data into a new rc style, fix up references to the old rc style - * in bindings that we have. - */ - if (orig_style) - fixup_rc_sets (context, orig_style, rc_style); - } - - if (orig_style) - g_object_unref (orig_style); - - return G_TOKEN_NONE; - - err: - if (rc_style != orig_style) - g_object_unref (rc_style); - - if (orig_style) - g_object_unref (orig_style); - - return token; -} - -const GtkRcProperty* -_gtk_rc_style_lookup_rc_property (GtkRcStyle *rc_style, - GQuark type_name, - GQuark property_name) -{ - GtkRcProperty *node = NULL; - - g_return_val_if_fail (GTK_IS_RC_STYLE (rc_style), NULL); - - if (rc_style->rc_properties) - { - GtkRcProperty key; - - key.type_name = type_name; - key.property_name = property_name; - - node = bsearch (&key, - rc_style->rc_properties->data, rc_style->rc_properties->len, - sizeof (GtkRcProperty), gtk_rc_properties_cmp); - } - - return node; -} - -static guint -gtk_rc_parse_bg (GScanner *scanner, - GtkRcStyle *style) -{ - GtkStateType state; - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_BG) - return GTK_RC_TOKEN_BG; - - token = gtk_rc_parse_state (scanner, &state); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_BG; - return gtk_rc_parse_color_full (scanner, style, &style->bg[state]); -} - -static guint -gtk_rc_parse_fg (GScanner *scanner, - GtkRcStyle *style) -{ - GtkStateType state; - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_FG) - return GTK_RC_TOKEN_FG; - - token = gtk_rc_parse_state (scanner, &state); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_FG; - return gtk_rc_parse_color_full (scanner, style, &style->fg[state]); -} - -static guint -gtk_rc_parse_text (GScanner *scanner, - GtkRcStyle *style) -{ - GtkStateType state; - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_TEXT) - return GTK_RC_TOKEN_TEXT; - - token = gtk_rc_parse_state (scanner, &state); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_TEXT; - return gtk_rc_parse_color_full (scanner, style, &style->text[state]); -} - -static guint -gtk_rc_parse_base (GScanner *scanner, - GtkRcStyle *style) -{ - GtkStateType state; - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_BASE) - return GTK_RC_TOKEN_BASE; - - token = gtk_rc_parse_state (scanner, &state); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - style->color_flags[state] |= GTK_RC_BASE; - return gtk_rc_parse_color_full (scanner, style, &style->base[state]); -} - -static guint -gtk_rc_parse_xthickness (GScanner *scanner, - GtkRcStyle *style) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_XTHICKNESS) - return GTK_RC_TOKEN_XTHICKNESS; - - if (g_scanner_get_next_token (scanner) != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - if (g_scanner_get_next_token (scanner) != G_TOKEN_INT) - return G_TOKEN_INT; - - style->xthickness = scanner->value.v_int; - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_ythickness (GScanner *scanner, - GtkRcStyle *style) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_YTHICKNESS) - return GTK_RC_TOKEN_YTHICKNESS; - - if (g_scanner_get_next_token (scanner) != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - if (g_scanner_get_next_token (scanner) != G_TOKEN_INT) - return G_TOKEN_INT; - - style->ythickness = scanner->value.v_int; - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_bg_pixmap (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle *rc_style) -{ - GtkStateType state; - guint token; - gchar *pixmap_file; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_BG_PIXMAP) - return GTK_RC_TOKEN_BG_PIXMAP; - - token = gtk_rc_parse_state (scanner, &state); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - if ((strcmp (scanner->value.v_string, "") == 0) || - (strcmp (scanner->value.v_string, "") == 0)) - pixmap_file = g_strdup (scanner->value.v_string); - else - pixmap_file = gtk_rc_find_pixmap_in_path (context->settings, - scanner, scanner->value.v_string); - - if (pixmap_file) - { - g_free (rc_style->bg_pixmap_name[state]); - rc_style->bg_pixmap_name[state] = pixmap_file; - } - - return G_TOKEN_NONE; -} - -static gchar* -gtk_rc_check_pixmap_dir (const gchar *dir, - const gchar *pixmap_file) -{ - gchar *buf; - - buf = g_build_filename (dir, pixmap_file, NULL); - - if (g_file_test (buf, G_FILE_TEST_EXISTS)) - return buf; - - g_free (buf); - - return NULL; - } - /** * gtk_rc_find_pixmap_in_path: * @settings: a #GtkSettings @@ -3454,46 +937,15 @@ gtk_rc_check_pixmap_dir (const gchar *dir, * If the file is not found, it outputs a warning message using * g_warning() and returns %NULL. * - * Return value: the filename. + * Return value: (type filename): the filename. **/ gchar* gtk_rc_find_pixmap_in_path (GtkSettings *settings, GScanner *scanner, const gchar *pixmap_file) { - gint i; - gchar *filename; - GSList *tmp_list; - - GtkRcContext *context = gtk_rc_context_get (settings); - - if (context->pixmap_path) - for (i = 0; context->pixmap_path[i] != NULL; i++) - { - filename = gtk_rc_check_pixmap_dir (context->pixmap_path[i], pixmap_file); - if (filename) - return filename; - } - - tmp_list = current_files_stack; - while (tmp_list) - { - GtkRcFile *curfile = tmp_list->data; - filename = gtk_rc_check_pixmap_dir (curfile->directory, pixmap_file); - if (filename) - return filename; - - tmp_list = tmp_list->next; - } - - if (scanner) - g_scanner_warn (scanner, - _("Unable to locate image file in pixmap_path: \"%s\""), - pixmap_file); - else - g_warning (_("Unable to locate image file in pixmap_path: \"%s\""), - pixmap_file); - + g_warning (_("Unable to locate image file in pixmap_path: \"%s\""), + pixmap_file); return NULL; } @@ -3504,8 +956,8 @@ gtk_rc_find_pixmap_in_path (GtkSettings *settings, * Searches for a theme engine in the GTK+ search path. This function * is not useful for applications and should not be used. * - * Return value: The filename, if found (must be freed with g_free()), - * otherwise %NULL. + * Return value: (type filename): The filename, if found (must be + * freed with g_free()), otherwise %NULL. **/ gchar* gtk_rc_find_module_in_path (const gchar *module_file) @@ -3513,219 +965,6 @@ gtk_rc_find_module_in_path (const gchar *module_file) return _gtk_find_module (module_file, "engines"); } -static guint -gtk_rc_parse_font (GScanner *scanner, - GtkRcStyle *rc_style) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_FONT) - return GTK_RC_TOKEN_FONT; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - /* Ignore, do nothing */ - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_fontset (GScanner *scanner, - GtkRcStyle *rc_style) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_FONTSET) - return GTK_RC_TOKEN_FONTSET; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - /* Do nothing - silently ignore */ - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_font_name (GScanner *scanner, - GtkRcStyle *rc_style) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_FONT_NAME) - return GTK_RC_TOKEN_FONT; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - return G_TOKEN_EQUAL_SIGN; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - if (rc_style->font_desc) - pango_font_description_free (rc_style->font_desc); - - rc_style->font_desc = - pango_font_description_from_string (scanner->value.v_string); - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_engine (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle **rc_style) -{ - guint token; - GtkThemeEngine *engine; - guint result = G_TOKEN_NONE; - GtkRcStyle *new_style = NULL; - gboolean parsed_curlies = FALSE; - GtkRcStylePrivate *rc_priv, *new_priv; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_ENGINE) - return GTK_RC_TOKEN_ENGINE; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - if (!scanner->value.v_string[0]) - { - /* Support engine "" {} to mean override to the default engine - */ - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_CURLY) - return G_TOKEN_LEFT_CURLY; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_RIGHT_CURLY) - return G_TOKEN_RIGHT_CURLY; - - parsed_curlies = TRUE; - - rc_priv = GTK_RC_STYLE_GET_PRIVATE (*rc_style); - - if (G_OBJECT_TYPE (*rc_style) != GTK_TYPE_RC_STYLE) - { - new_style = gtk_rc_style_new (); - gtk_rc_style_real_merge (new_style, *rc_style); - - new_style->name = g_strdup ((*rc_style)->name); - - /* take over icon factories and color hashes - * from the to-be-deleted style - */ - new_style->icon_factories = (*rc_style)->icon_factories; - (*rc_style)->icon_factories = NULL; - new_priv = GTK_RC_STYLE_GET_PRIVATE (new_style); - new_priv->color_hashes = rc_priv->color_hashes; - rc_priv->color_hashes = NULL; - } - else - (*rc_style)->engine_specified = TRUE; - } - else - { - engine = gtk_theme_engine_get (scanner->value.v_string); - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_CURLY) - return G_TOKEN_LEFT_CURLY; - - if (engine) - { - GtkRcStyleClass *new_class; - - rc_priv = GTK_RC_STYLE_GET_PRIVATE (*rc_style); - new_style = gtk_theme_engine_create_rc_style (engine); - g_type_module_unuse (G_TYPE_MODULE (engine)); - - new_class = GTK_RC_STYLE_GET_CLASS (new_style); - - new_class->merge (new_style, *rc_style); - - new_style->name = g_strdup ((*rc_style)->name); - - /* take over icon factories and color hashes - * from the to-be-deleted style - */ - new_style->icon_factories = (*rc_style)->icon_factories; - (*rc_style)->icon_factories = NULL; - new_priv = GTK_RC_STYLE_GET_PRIVATE (new_style); - new_priv->color_hashes = rc_priv->color_hashes; - rc_priv->color_hashes = NULL; - - if (new_class->parse) - { - parsed_curlies = TRUE; - result = new_class->parse (new_style, context->settings, scanner); - - if (result != G_TOKEN_NONE) - { - /* copy icon factories and color hashes back - */ - (*rc_style)->icon_factories = new_style->icon_factories; - new_style->icon_factories = NULL; - rc_priv->color_hashes = new_priv->color_hashes; - new_priv->color_hashes = NULL; - - g_object_unref (new_style); - new_style = NULL; - } - } - } - } - - if (!parsed_curlies) - { - /* Skip over remainder, looking for nested {}'s - */ - guint count = 1; - - result = G_TOKEN_RIGHT_CURLY; - while ((token = g_scanner_get_next_token (scanner)) != G_TOKEN_EOF) - { - if (token == G_TOKEN_LEFT_CURLY) - count++; - else if (token == G_TOKEN_RIGHT_CURLY) - count--; - - if (count == 0) - { - result = G_TOKEN_NONE; - break; - } - } - } - - if (new_style) - { - new_style->engine_specified = TRUE; - - g_object_unref (*rc_style); - *rc_style = new_style; - } - - return result; -} - /** * gtk_rc_parse_state: * @scanner: @@ -4078,792 +1317,3 @@ gtk_rc_parse_color_full (GScanner *scanner, return G_TOKEN_STRING; } } - -static guint -gtk_rc_parse_pixmap_path (GtkRcContext *context, - GScanner *scanner) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_PIXMAP_PATH) - return GTK_RC_TOKEN_PIXMAP_PATH; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - gtk_rc_parse_pixmap_path_string (context, scanner, scanner->value.v_string); - - return G_TOKEN_NONE; -} - -static void -gtk_rc_parse_pixmap_path_string (GtkRcContext *context, - GScanner *scanner, - const gchar *pix_path) -{ - g_strfreev (context->pixmap_path); - context->pixmap_path = g_strsplit (pix_path, G_SEARCHPATH_SEPARATOR_S, -1); -} - -static guint -gtk_rc_parse_module_path (GScanner *scanner) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_MODULE_PATH) - return GTK_RC_TOKEN_MODULE_PATH; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - g_warning ("module_path directive is now ignored\n"); - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_im_module_file (GScanner *scanner) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_IM_MODULE_FILE) - return GTK_RC_TOKEN_IM_MODULE_FILE; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - g_free (im_module_file); - - im_module_file = g_strdup (scanner->value.v_string); - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_path_pattern (GtkRcContext *context, - GScanner *scanner) -{ - guint token; - GtkPathType path_type; - gchar *pattern; - gboolean is_binding; - GtkPathPriorityType priority = context->default_priority; - - token = g_scanner_get_next_token (scanner); - switch (token) - { - case GTK_RC_TOKEN_WIDGET: - path_type = GTK_PATH_WIDGET; - break; - case GTK_RC_TOKEN_WIDGET_CLASS: - path_type = GTK_PATH_WIDGET_CLASS; - break; - case GTK_RC_TOKEN_CLASS: - path_type = GTK_PATH_CLASS; - break; - default: - return GTK_RC_TOKEN_WIDGET_CLASS; - } - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - pattern = g_strdup (scanner->value.v_string); - - token = g_scanner_get_next_token (scanner); - if (token == GTK_RC_TOKEN_STYLE) - is_binding = FALSE; - else if (token == GTK_RC_TOKEN_BINDING) - is_binding = TRUE; - else - { - g_free (pattern); - return GTK_RC_TOKEN_STYLE; - } - - if (g_scanner_peek_next_token (scanner) == ':') - { - token = gtk_rc_parse_priority (scanner, &priority); - if (token != G_TOKEN_NONE) - { - g_free (pattern); - return token; - } - } - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_STRING) - { - g_free (pattern); - return G_TOKEN_STRING; - } - - if (is_binding) - { - GtkBindingSet *binding; - - binding = gtk_binding_set_find (scanner->value.v_string); - if (!binding) - { - g_free (pattern); - return G_TOKEN_STRING; - } - gtk_binding_set_add_path (binding, path_type, pattern, priority); - } - else - { - GtkRcStyle *rc_style; - GtkRcSet *rc_set; - - rc_style = gtk_rc_style_find (context, scanner->value.v_string); - - if (!rc_style) - { - g_free (pattern); - return G_TOKEN_STRING; - } - - rc_set = g_new (GtkRcSet, 1); - rc_set->type = path_type; - - if (path_type == GTK_PATH_WIDGET_CLASS) - { - rc_set->pspec = NULL; - rc_set->path = _gtk_rc_parse_widget_class_path (pattern); - } - else - { - rc_set->pspec = g_pattern_spec_new (pattern); - rc_set->path = NULL; - } - - rc_set->rc_style = rc_style; - rc_set->priority = priority; - - if (path_type == GTK_PATH_WIDGET) - context->rc_sets_widget = g_slist_prepend (context->rc_sets_widget, rc_set); - else if (path_type == GTK_PATH_WIDGET_CLASS) - context->rc_sets_widget_class = g_slist_prepend (context->rc_sets_widget_class, rc_set); - else - context->rc_sets_class = g_slist_prepend (context->rc_sets_class, rc_set); - } - - g_free (pattern); - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_hash_key (GScanner *scanner, - gchar **hash_key) -{ - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_BRACE) - return G_TOKEN_LEFT_BRACE; - - token = g_scanner_get_next_token (scanner); - - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - *hash_key = g_strdup (scanner->value.v_string); - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_RIGHT_BRACE) - { - g_free (*hash_key); - return G_TOKEN_RIGHT_BRACE; - } - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_icon_source (GtkRcContext *context, - GScanner *scanner, - GtkIconSet *icon_set, - gboolean *icon_set_valid) -{ - guint token; - gchar *full_filename; - GtkIconSource *source = NULL; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_CURLY) - return G_TOKEN_LEFT_CURLY; - - token = g_scanner_get_next_token (scanner); - - if (token != G_TOKEN_STRING && token != '@') - return G_TOKEN_STRING; - - if (token == G_TOKEN_STRING) - { - /* Filename */ - - source = gtk_icon_source_new (); - full_filename = gtk_rc_find_pixmap_in_path (context->settings, scanner, scanner->value.v_string); - if (full_filename) - { - gtk_icon_source_set_filename (source, full_filename); - g_free (full_filename); - } - } - else - { - /* Icon name */ - - token = g_scanner_get_next_token (scanner); - - if (token != G_TOKEN_STRING) - return G_TOKEN_STRING; - - source = gtk_icon_source_new (); - gtk_icon_source_set_icon_name (source, scanner->value.v_string); - } - - /* We continue parsing even if we didn't find the pixmap so that rest of the - * file is read, even if the syntax is bad. However we don't validate the - * icon_set so the caller can choose not to install it. - */ - token = g_scanner_get_next_token (scanner); - - if (token == G_TOKEN_RIGHT_CURLY) - goto done; - else if (token != G_TOKEN_COMMA) - { - gtk_icon_source_free (source); - return G_TOKEN_COMMA; - } - - /* Get the direction */ - - token = g_scanner_get_next_token (scanner); - - switch (token) - { - case GTK_RC_TOKEN_RTL: - gtk_icon_source_set_direction_wildcarded (source, FALSE); - gtk_icon_source_set_direction (source, GTK_TEXT_DIR_RTL); - break; - - case GTK_RC_TOKEN_LTR: - gtk_icon_source_set_direction_wildcarded (source, FALSE); - gtk_icon_source_set_direction (source, GTK_TEXT_DIR_LTR); - break; - - case '*': - break; - - default: - gtk_icon_source_free (source); - return GTK_RC_TOKEN_RTL; - break; - } - - token = g_scanner_get_next_token (scanner); - - if (token == G_TOKEN_RIGHT_CURLY) - goto done; - else if (token != G_TOKEN_COMMA) - { - gtk_icon_source_free (source); - return G_TOKEN_COMMA; - } - - /* Get the state */ - - token = g_scanner_get_next_token (scanner); - - switch (token) - { - case GTK_RC_TOKEN_NORMAL: - gtk_icon_source_set_state_wildcarded (source, FALSE); - gtk_icon_source_set_state (source, GTK_STATE_NORMAL); - break; - - case GTK_RC_TOKEN_PRELIGHT: - gtk_icon_source_set_state_wildcarded (source, FALSE); - gtk_icon_source_set_state (source, GTK_STATE_PRELIGHT); - break; - - - case GTK_RC_TOKEN_INSENSITIVE: - gtk_icon_source_set_state_wildcarded (source, FALSE); - gtk_icon_source_set_state (source, GTK_STATE_INSENSITIVE); - break; - - case GTK_RC_TOKEN_ACTIVE: - gtk_icon_source_set_state_wildcarded (source, FALSE); - gtk_icon_source_set_state (source, GTK_STATE_ACTIVE); - break; - - case GTK_RC_TOKEN_SELECTED: - gtk_icon_source_set_state_wildcarded (source, FALSE); - gtk_icon_source_set_state (source, GTK_STATE_SELECTED); - break; - - case '*': - break; - - default: - gtk_icon_source_free (source); - return GTK_RC_TOKEN_PRELIGHT; - break; - } - - token = g_scanner_get_next_token (scanner); - - if (token == G_TOKEN_RIGHT_CURLY) - goto done; - else if (token != G_TOKEN_COMMA) - { - gtk_icon_source_free (source); - return G_TOKEN_COMMA; - } - - /* Get the size */ - - token = g_scanner_get_next_token (scanner); - - if (token != '*') - { - GtkIconSize size; - - if (token != G_TOKEN_STRING) - { - gtk_icon_source_free (source); - return G_TOKEN_STRING; - } - - size = gtk_icon_size_from_name (scanner->value.v_string); - - if (size != GTK_ICON_SIZE_INVALID) - { - gtk_icon_source_set_size_wildcarded (source, FALSE); - gtk_icon_source_set_size (source, size); - } - } - - /* Check the close brace */ - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_RIGHT_CURLY) - { - gtk_icon_source_free (source); - return G_TOKEN_RIGHT_CURLY; - } - - done: - if (gtk_icon_source_get_filename (source) || - gtk_icon_source_get_icon_name (source)) - { - gtk_icon_set_add_source (icon_set, source); - *icon_set_valid = TRUE; - } - gtk_icon_source_free (source); - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_stock (GtkRcContext *context, - GScanner *scanner, - GtkRcStyle *rc_style, - GtkIconFactory *factory) -{ - GtkIconSet *icon_set = NULL; - gboolean icon_set_valid = FALSE; - gchar *stock_id = NULL; - guint token; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_STOCK) - return GTK_RC_TOKEN_STOCK; - - token = gtk_rc_parse_hash_key (scanner, &stock_id); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - { - g_free (stock_id); - return G_TOKEN_EQUAL_SIGN; - } - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_LEFT_CURLY) - { - g_free (stock_id); - return G_TOKEN_LEFT_CURLY; - } - - token = g_scanner_peek_next_token (scanner); - while (token != G_TOKEN_RIGHT_CURLY) - { - if (icon_set == NULL) - icon_set = gtk_icon_set_new (); - - token = gtk_rc_parse_icon_source (context, - scanner, icon_set, &icon_set_valid); - if (token != G_TOKEN_NONE) - { - g_free (stock_id); - gtk_icon_set_unref (icon_set); - return token; - } - - token = g_scanner_get_next_token (scanner); - - if (token != G_TOKEN_COMMA && - token != G_TOKEN_RIGHT_CURLY) - { - g_free (stock_id); - gtk_icon_set_unref (icon_set); - return G_TOKEN_RIGHT_CURLY; - } - } - - if (icon_set) - { - if (icon_set_valid) - gtk_icon_factory_add (factory, - stock_id, - icon_set); - - gtk_icon_set_unref (icon_set); - } - - g_free (stock_id); - - return G_TOKEN_NONE; -} - -static guint -gtk_rc_parse_logical_color (GScanner *scanner, - GtkRcStyle *rc_style, - GHashTable *hash) -{ - gchar *color_id = NULL; - guint token; - GdkColor color; - - token = g_scanner_get_next_token (scanner); - if (token != GTK_RC_TOKEN_COLOR) - return GTK_RC_TOKEN_COLOR; - - token = gtk_rc_parse_hash_key (scanner, &color_id); - if (token != G_TOKEN_NONE) - return token; - - token = g_scanner_get_next_token (scanner); - if (token != G_TOKEN_EQUAL_SIGN) - { - g_free (color_id); - return G_TOKEN_EQUAL_SIGN; - } - - token = gtk_rc_parse_color_full (scanner, rc_style, &color); - if (token != G_TOKEN_NONE) - { - g_free (color_id); - return token; - } - - /* Because the hash is created with destroy functions, - * g_hash_table_insert will free any old values for us, - * if a mapping with the specified key already exists. - */ - g_hash_table_insert (hash, color_id, gdk_color_copy (&color)); - - return G_TOKEN_NONE; -} - - -GSList * -_gtk_rc_parse_widget_class_path (const gchar *pattern) -{ - GSList *result; - PathElt *path_elt; - const gchar *current; - const gchar *class_start; - const gchar *class_end; - const gchar *pattern_end; - const gchar *pattern_start; - gchar *sub_pattern; - - result = NULL; - current = pattern; - while ((class_start = strchr (current, '<')) && - (class_end = strchr (class_start, '>'))) - { - /* Add patterns, but ignore single dots */ - if (!(class_start == current || - (class_start == current + 1 && current[0] == '.'))) - { - pattern_end = class_start - 1; - pattern_start = current; - - path_elt = g_new (PathElt, 1); - - sub_pattern = g_strndup (pattern_start, pattern_end - pattern_start + 1); - path_elt->type = PATH_ELT_PSPEC; - path_elt->elt.pspec = g_pattern_spec_new (sub_pattern); - g_free (sub_pattern); - - result = g_slist_prepend (result, path_elt); - } - - path_elt = g_new (PathElt, 1); - - /* The < > need to be removed from the string. */ - sub_pattern = g_strndup (class_start + 1, class_end - class_start - 1); - - path_elt->type = PATH_ELT_UNRESOLVED; - path_elt->elt.class_name = sub_pattern; - - result = g_slist_prepend (result, path_elt); - - current = class_end + 1; - } - - /* Add the rest, if anything is left */ - if (strlen (current) > 0) - { - path_elt = g_new (PathElt, 1); - path_elt->type = PATH_ELT_PSPEC; - path_elt->elt.pspec = g_pattern_spec_new (current); - - result = g_slist_prepend (result, path_elt); - } - - return g_slist_reverse (result); -} - -static void -free_path_elt (gpointer data, - gpointer user_data) -{ - PathElt *path_elt = data; - - switch (path_elt->type) - { - case PATH_ELT_PSPEC: - g_pattern_spec_free (path_elt->elt.pspec); - break; - case PATH_ELT_UNRESOLVED: - g_free (path_elt->elt.class_name); - break; - case PATH_ELT_TYPE: - break; - default: - g_assert_not_reached (); - } - - g_free (path_elt); -} - -void -_gtk_rc_free_widget_class_path (GSList *list) -{ - g_slist_foreach (list, free_path_elt, NULL); - g_slist_free (list); -} - -static void -gtk_rc_set_free (GtkRcSet *rc_set) -{ - if (rc_set->pspec) - g_pattern_spec_free (rc_set->pspec); - - _gtk_rc_free_widget_class_path (rc_set->path); - - g_free (rc_set); -} - -static gboolean -match_class (PathElt *path_elt, - gchar *type_name) -{ - GType type; - - if (path_elt->type == PATH_ELT_UNRESOLVED) - { - type = g_type_from_name (path_elt->elt.class_name); - if (type != G_TYPE_INVALID) - { - g_free (path_elt->elt.class_name); - path_elt->elt.class_type = type; - path_elt->type = PATH_ELT_TYPE; - } - else - return g_str_equal (type_name, path_elt->elt.class_name); - } - - return g_type_is_a (g_type_from_name (type_name), path_elt->elt.class_type); -} - -static gboolean -match_widget_class_recursive (GSList *list, - guint length, - gchar *path, - gchar *path_reversed) -{ - PathElt *path_elt; - - /* break out if we cannot match anymore. */ - if (list == NULL) - { - if (length > 0) - return FALSE; - else - return TRUE; - } - - /* there are two possibilities: - * 1. The next pattern should match the class. - * 2. First normal matching, and then maybe a class */ - - path_elt = list->data; - - if (path_elt->type != PATH_ELT_PSPEC) - { - gchar *class_start = path; - gchar *class_end; - - /* ignore leading dot */ - if (class_start[0] == '.') - class_start++; - class_end = strchr (class_start, '.'); - - if (class_end == NULL) - { - if (!match_class (path_elt, class_start)) - return FALSE; - else - return match_widget_class_recursive (list->next, 0, "", ""); - } - else - { - class_end[0] = '\0'; - if (!match_class (path_elt, class_start)) - { - class_end[0] = '.'; - return FALSE; - } - else - { - gboolean result; - gint new_length = length - (class_end - path); - gchar old_char = path_reversed[new_length]; - - class_end[0] = '.'; - - path_reversed[new_length] = '\0'; - result = match_widget_class_recursive (list->next, new_length, class_end, path_reversed); - path_reversed[new_length] = old_char; - - return result; - } - } - } - else - { - PathElt *class_elt; - gchar *class_start; - gchar *class_end; - gboolean result = FALSE; - - /* If there is nothing after this (ie. no class match), - * just compare the pspec. - */ - if (list->next == NULL) - return g_pattern_match (path_elt->elt.pspec, length, path, path_reversed); - - class_elt = (PathElt *)list->next->data; - g_assert (class_elt->type != PATH_ELT_PSPEC); - - class_start = path; - if (class_start[0] == '.') - class_start++; - - while (TRUE) - { - class_end = strchr (class_start, '.'); - - /* It should be cheaper to match the class first. (either the pattern - * is simple, and will match most of the times, or it may be complex - * and matching is slow) - */ - if (class_end == NULL) - { - result = match_class (class_elt, class_start); - } - else - { - class_end[0] = '\0'; - result = match_class (class_elt, class_start); - class_end[0] = '.'; - } - - if (result) - { - gchar old_char; - result = FALSE; - - /* terminate the string in front of the class. It does not matter - * that the class becomes unusable, because it is not needed - * inside the recursion - */ - old_char = class_start[0]; - class_start[0] = '\0'; - - if (g_pattern_match (path_elt->elt.pspec, class_start - path, path, path_reversed + length - (class_start - path))) - { - if (class_end != NULL) - { - gint new_length = length - (class_end - path); - gchar path_reversed_char = path_reversed[new_length]; - - path_reversed[new_length] = '\0'; - - result = match_widget_class_recursive (list->next->next, new_length, class_end, path_reversed); - - path_reversed[new_length] = path_reversed_char; - } - else - result = match_widget_class_recursive (list->next->next, 0, "", ""); - } - - class_start[0] = old_char; - } - - if (result) - return TRUE; - - /* get next class in path, or break out */ - if (class_end != NULL) - class_start = class_end + 1; - else - return FALSE; - } - } -} - -gboolean -_gtk_rc_match_widget_class (GSList *list, - gint length, - gchar *path, - gchar *path_reversed) -{ - return match_widget_class_recursive (list, length, path, path_reversed); -} diff --git a/gtk/gtkrc.h b/gtk/gtkrc.h index 65635eebb9..dc3abe7635 100644 --- a/gtk/gtkrc.h +++ b/gtk/gtkrc.h @@ -123,7 +123,6 @@ struct _GtkRcStyleClass void (*_gtk_reserved4) (void); }; -void _gtk_rc_init (void); GSList* _gtk_rc_parse_widget_class_path (const gchar *pattern); void _gtk_rc_free_widget_class_path (GSList *list); gboolean _gtk_rc_match_widget_class (GSList *list, @@ -234,23 +233,6 @@ struct _GtkRcProperty gchar *origin; GValue value; }; -const GtkRcProperty* _gtk_rc_style_lookup_rc_property (GtkRcStyle *rc_style, - GQuark type_name, - GQuark property_name); -void _gtk_rc_style_set_rc_property (GtkRcStyle *rc_style, - GtkRcProperty *property); -void _gtk_rc_style_unset_rc_property (GtkRcStyle *rc_style, - GQuark type_name, - GQuark property_name); - -GSList * _gtk_rc_style_get_color_hashes (GtkRcStyle *rc_style); - -void _gtk_rc_style_set_symbolic_color (GtkRcStyle *rc_style, - const gchar *name, - const GdkColor *color); - -const gchar* _gtk_rc_context_get_default_font_name (GtkSettings *settings); -void _gtk_rc_context_destroy (GtkSettings *settings); G_END_DECLS diff --git a/gtk/gtkrecentaction.c b/gtk/gtkrecentaction.c index 5d73594899..8d21ae4830 100644 --- a/gtk/gtkrecentaction.c +++ b/gtk/gtkrecentaction.c @@ -670,10 +670,11 @@ gtk_recent_action_init (GtkRecentAction *action) /** * gtk_recent_action_new: * @name: a unique name for the action - * @label: (allow-none): the label displayed in menu items and on buttons, or %NULL + * @label: (allow-none): the label displayed in menu items and on buttons, + * or %NULL * @tooltip: (allow-none): a tooltip for the action, or %NULL - * @stock_id: the stock icon to display in widgets representing the - * action, or %NULL + * @stock_id: (allow-none): the stock icon to display in widgets representing + * the action, or %NULL * * Creates a new #GtkRecentAction object. To add the action to * a #GtkActionGroup and set the accelerator for the action, @@ -702,10 +703,11 @@ gtk_recent_action_new (const gchar *name, /** * gtk_recent_action_new_for_manager: * @name: a unique name for the action - * @label: (allow-none): the label displayed in menu items and on buttons, or %NULL + * @label: (allow-none): the label displayed in menu items and on buttons, + * or %NULL * @tooltip: (allow-none): a tooltip for the action, or %NULL - * @stock_id: the stock icon to display in widgets representing the - * action, or %NULL + * @stock_id: (allow-none): the stock icon to display in widgets representing + * the action, or %NULL * @manager: (allow-none): a #GtkRecentManager, or %NULL for using the default * #GtkRecentManager * diff --git a/gtk/gtkrecentchooserdefault.c b/gtk/gtkrecentchooserdefault.c index f1caf17e26..84fe199283 100644 --- a/gtk/gtkrecentchooserdefault.c +++ b/gtk/gtkrecentchooserdefault.c @@ -765,7 +765,7 @@ set_busy_cursor (GtkRecentChooserDefault *impl, gdk_display_flush (display); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -936,11 +936,15 @@ set_default_size (GtkRecentChooserDefault *impl) gint monitor_num; GtkRequisition req; GdkRectangle monitor; + GtkStyleContext *context; + GtkStateFlags state; widget = GTK_WIDGET (impl); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); /* Size based on characters and the icon size */ - font_size = pango_font_description_get_size (gtk_widget_get_style (widget)->font_desc); + font_size = pango_font_description_get_size (gtk_style_context_get_font (context, state)); font_size = PANGO_PIXELS (font_size); width = impl->icon_size + font_size * NUM_CHARS; diff --git a/gtk/gtkscale.c b/gtk/gtkscale.c index cd00b2ea2e..a44dd9e1da 100644 --- a/gtk/gtkscale.c +++ b/gtk/gtkscale.c @@ -30,13 +30,13 @@ #include #include -#include "gdk/gdkkeysyms.h" #include "gtkscale.h" #include "gtkiconfactory.h" #include "gtkicontheme.h" #include "gtkmarshalers.h" #include "gtkbindings.h" #include "gtkorientable.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" #include "gtkbuildable.h" @@ -127,8 +127,7 @@ static void gtk_scale_get_preferred_width (GtkWidget *widget, static void gtk_scale_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural); -static void gtk_scale_style_set (GtkWidget *widget, - GtkStyle *previous); +static void gtk_scale_style_updated (GtkWidget *widget); static void gtk_scale_get_range_border (GtkRange *range, GtkBorder *border); static void gtk_scale_get_mark_label_size (GtkScale *scale, @@ -204,7 +203,7 @@ gtk_scale_class_init (GtkScaleClass *class) gobject_class->get_property = gtk_scale_get_property; gobject_class->finalize = gtk_scale_finalize; - widget_class->style_set = gtk_scale_style_set; + widget_class->style_updated = gtk_scale_style_updated; widget_class->screen_changed = gtk_scale_screen_changed; widget_class->draw = gtk_scale_draw; widget_class->get_preferred_width = gtk_scale_get_preferred_width; @@ -430,6 +429,7 @@ gtk_scale_init (GtkScale *scale) { GtkScalePrivate *priv; GtkRange *range = GTK_RANGE (scale); + GtkStyleContext *context; scale->priv = G_TYPE_INSTANCE_GET_PRIVATE (scale, GTK_TYPE_SCALE, @@ -443,12 +443,15 @@ gtk_scale_init (GtkScale *scale) priv->draw_value = TRUE; priv->value_pos = GTK_POS_TOP; priv->digits = 1; - _gtk_range_set_round_digits (range, priv->digits); + gtk_range_set_round_digits (range, priv->digits); gtk_scale_orientation_notify (range, NULL); g_signal_connect (scale, "notify::orientation", G_CALLBACK (gtk_scale_orientation_notify), NULL); + + context = gtk_widget_get_style_context (GTK_WIDGET (scale)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_SCALE); } static void @@ -507,8 +510,8 @@ gtk_scale_get_property (GObject *object, /** * gtk_scale_new: * @orientation: the scale's orientation. - * @adjustment: the #GtkAdjustment which sets the range of the scale, or - * %NULL to create a new adjustment. + * @adjustment: (allow-none): the #GtkAdjustment which sets the range + * of the scale, or %NULL to create a new adjustment. * * Creates a new #GtkScale. * @@ -610,7 +613,7 @@ gtk_scale_set_digits (GtkScale *scale, { priv->digits = digits; if (priv->draw_value) - _gtk_range_set_round_digits (range, digits); + gtk_range_set_round_digits (range, digits); _gtk_scale_clear_layout (scale); gtk_widget_queue_resize (GTK_WIDGET (scale)); @@ -659,9 +662,9 @@ gtk_scale_set_draw_value (GtkScale *scale, { priv->draw_value = draw_value; if (draw_value) - _gtk_range_set_round_digits (GTK_RANGE (scale), priv->digits); + gtk_range_set_round_digits (GTK_RANGE (scale), priv->digits); else - _gtk_range_set_round_digits (GTK_RANGE (scale), -1); + gtk_range_set_round_digits (GTK_RANGE (scale), -1); _gtk_scale_clear_layout (scale); @@ -921,8 +924,7 @@ gtk_scale_get_mark_label_size (GtkScale *scale, } static void -gtk_scale_style_set (GtkWidget *widget, - GtkStyle *previous) +gtk_scale_style_updated (GtkWidget *widget) { gint slider_length; GtkRange *range; @@ -937,7 +939,7 @@ gtk_scale_style_set (GtkWidget *widget, _gtk_scale_clear_layout (GTK_SCALE (widget)); - GTK_WIDGET_CLASS (gtk_scale_parent_class)->style_set (widget, previous); + GTK_WIDGET_CLASS (gtk_scale_parent_class)->style_updated (widget); } static void @@ -1032,8 +1034,8 @@ gtk_scale_draw (GtkWidget *widget, GtkScale *scale = GTK_SCALE (widget); GtkScalePrivate *priv = scale->priv; GtkRange *range = GTK_RANGE (scale); - GtkStateType state_type; - GtkStyle *style; + GtkStateFlags state = 0; + GtkStyleContext *context; gint n_marks; gint *marks; gint focus_padding; @@ -1041,7 +1043,7 @@ gtk_scale_draw (GtkWidget *widget, gint value_spacing; gint min_sep = 4; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, "focus-padding", &focus_padding, "slider-width", &slider_width, @@ -1053,9 +1055,8 @@ gtk_scale_draw (GtkWidget *widget, */ GTK_WIDGET_CLASS (gtk_scale_parent_class)->draw (widget, cr); - state_type = GTK_STATE_NORMAL; if (!gtk_widget_is_sensitive (widget)) - state_type = GTK_STATE_INSENSITIVE; + state |= GTK_STATE_FLAG_INSENSITIVE; if (priv->marks) { @@ -1098,8 +1099,12 @@ gtk_scale_draw (GtkWidget *widget, max_pos = find_next_pos (widget, m, marks + i, GTK_POS_TOP, 0) - min_sep; } - gtk_paint_vline (style, cr, state_type, - widget, "scale-mark", y1, y2, x1); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_MARK); + gtk_style_context_set_state (context, state); + + gtk_render_line (context, cr, + x1, y1, x1, y2); if (mark->markup) { @@ -1124,10 +1129,11 @@ gtk_scale_draw (GtkWidget *widget, min_pos_after = x3 + logical_rect.width + min_sep; } - gtk_paint_layout (style, cr, state_type, - FALSE, widget, "scale-mark", - x3, y3, layout); + gtk_render_layout (context, cr, + x3, y3, layout); } + + gtk_style_context_restore (context); } else { @@ -1147,8 +1153,12 @@ gtk_scale_draw (GtkWidget *widget, } y1 = marks[i]; - gtk_paint_hline (style, cr, state_type, - widget, "range-mark", x1, x2, y1); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_MARK); + gtk_style_context_set_state (context, state); + + gtk_render_line (context, cr, + x1, y1, x2, y1); if (mark->markup) { @@ -1173,10 +1183,11 @@ gtk_scale_draw (GtkWidget *widget, min_pos_after = y3 + logical_rect.height + min_sep; } - gtk_paint_layout (style, cr, state_type, - FALSE, widget, "scale-mark", - x3, y3, layout); + gtk_render_layout (context, cr, + x3, y3, layout); } + + gtk_style_context_restore (context); } } @@ -1197,17 +1208,10 @@ gtk_scale_draw (GtkWidget *widget, gtk_scale_get_layout_offsets (scale, &x, &y); gtk_widget_get_allocation (widget, &allocation); - gtk_paint_layout (style, - cr, - state_type, - FALSE, - widget, - orientation == GTK_ORIENTATION_HORIZONTAL ? - "hscale" : "vscale", - x - allocation.x, - y - allocation.y, - layout); - + gtk_render_layout (context, cr, + x - allocation.x, + y - allocation.y, + layout); } return FALSE; diff --git a/gtk/gtkscalebutton.c b/gtk/gtkscalebutton.c index f3894ff84b..7be5660ead 100644 --- a/gtk/gtkscalebutton.c +++ b/gtk/gtkscalebutton.c @@ -42,9 +42,6 @@ #include #include -#include -#include - #include "gtkbindings.h" #include "gtkframe.h" #include "gtkmain.h" @@ -56,7 +53,7 @@ #include "gtkstock.h" #include "gtkvbox.h" #include "gtkwindow.h" - +#include "gtktypebuiltins.h" #include "gtkintl.h" /** @@ -580,12 +577,12 @@ gtk_scale_button_new (GtkIconSize size, const gchar **icons) { GtkScaleButton *button; - GtkAdjustment *adj; + GtkAdjustment *adjustment; - adj = gtk_adjustment_new (min, min, max, step, 10 * step, 0); + adjustment = gtk_adjustment_new (min, min, max, step, 10 * step, 0); button = g_object_new (GTK_TYPE_SCALE_BUTTON, - "adjustment", adj, + "adjustment", adjustment, "icons", icons, "size", size, NULL); @@ -837,12 +834,12 @@ gtk_scale_button_scroll (GtkWidget *widget, { GtkScaleButton *button; GtkScaleButtonPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble d; button = GTK_SCALE_BUTTON (widget); priv = button->priv; - adj = priv->adjustment; + adjustment = priv->adjustment; if (event->type != GDK_SCROLL) return FALSE; @@ -850,15 +847,15 @@ gtk_scale_button_scroll (GtkWidget *widget, d = gtk_scale_button_get_value (button); if (event->direction == GDK_SCROLL_UP) { - d += adj->step_increment; - if (d > adj->upper) - d = adj->upper; + d += gtk_adjustment_get_step_increment (adjustment); + if (d > gtk_adjustment_get_upper (adjustment)) + d = gtk_adjustment_get_upper (adjustment); } else { - d -= adj->step_increment; - if (d < adj->lower) - d = adj->lower; + d -= gtk_adjustment_get_step_increment (adjustment); + if (d < gtk_adjustment_get_lower (adjustment)) + d = gtk_adjustment_get_lower (adjustment); } gtk_scale_button_set_value (button, d); @@ -900,7 +897,7 @@ gtk_scale_popup (GtkWidget *widget, GtkAllocation allocation, dock_allocation, scale_allocation; GtkScaleButton *button; GtkScaleButtonPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gint x, y, m, dx, dy, sx, sy, startoff; gint min_slider_size; gdouble v; @@ -912,7 +909,7 @@ gtk_scale_popup (GtkWidget *widget, is_moved = FALSE; button = GTK_SCALE_BUTTON (widget); priv = button->priv; - adj = priv->adjustment; + adjustment = priv->adjustment; display = gtk_widget_get_display (widget); screen = gtk_widget_get_screen (widget); @@ -949,7 +946,7 @@ gtk_scale_popup (GtkWidget *widget, priv->timeout = TRUE; /* position (needs widget to be shown already) */ - v = gtk_scale_button_get_value (button) / (adj->upper - adj->lower); + v = gtk_scale_button_get_value (button) / (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)); min_slider_size = gtk_range_get_min_slider_size (GTK_RANGE (priv->scale)); if (priv->orientation == GTK_ORIENTATION_VERTICAL) @@ -1195,7 +1192,7 @@ cb_button_timeout (gpointer user_data) { GtkScaleButton *button; GtkScaleButtonPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble val; gboolean res = TRUE; @@ -1205,19 +1202,19 @@ cb_button_timeout (gpointer user_data) if (priv->click_id == 0) return FALSE; - adj = priv->adjustment; + adjustment = priv->adjustment; val = gtk_scale_button_get_value (button); val += priv->direction; - if (val <= adj->lower) + if (val <= gtk_adjustment_get_lower (adjustment)) { res = FALSE; - val = adj->lower; + val = gtk_adjustment_get_lower (adjustment); } - else if (val > adj->upper) + else if (val > gtk_adjustment_get_upper (adjustment)) { res = FALSE; - val = adj->upper; + val = gtk_adjustment_get_upper (adjustment); } gtk_scale_button_set_value (button, val); @@ -1237,19 +1234,19 @@ cb_button_press (GtkWidget *widget, { GtkScaleButton *button; GtkScaleButtonPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; button = GTK_SCALE_BUTTON (user_data); priv = button->priv; - adj = priv->adjustment; + adjustment = priv->adjustment; if (priv->click_id != 0) g_source_remove (priv->click_id); if (widget == priv->plus_button) - priv->direction = fabs (adj->page_increment); + priv->direction = fabs (gtk_adjustment_get_page_increment (adjustment)); else - priv->direction = - fabs (adj->page_increment); + priv->direction = - fabs (gtk_adjustment_get_page_increment (adjustment)); priv->click_id = gdk_threads_add_timeout (priv->click_timeout, cb_button_timeout, @@ -1533,7 +1530,7 @@ gtk_scale_button_update_icon (GtkScaleButton *button) { GtkScaleButtonPrivate *priv; GtkRange *range; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble value; const gchar *name; guint num_icons; @@ -1560,14 +1557,14 @@ gtk_scale_button_update_icon (GtkScaleButton *button) } range = GTK_RANGE (priv->scale); - adj = priv->adjustment; + adjustment = priv->adjustment; value = gtk_scale_button_get_value (button); /* The 2-icons special case */ if (num_icons == 2) { gdouble limit; - limit = (adj->upper - adj->lower) / 2 + adj->lower; + limit = (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)) / 2 + gtk_adjustment_get_lower (adjustment); if (value < limit) name = priv->icon_list[0]; else @@ -1580,11 +1577,11 @@ gtk_scale_button_update_icon (GtkScaleButton *button) } /* With 3 or more icons */ - if (value == adj->lower) + if (value == gtk_adjustment_get_lower (adjustment)) { name = priv->icon_list[0]; } - else if (value == adj->upper) + else if (value == gtk_adjustment_get_upper (adjustment)) { name = priv->icon_list[1]; } @@ -1593,8 +1590,8 @@ gtk_scale_button_update_icon (GtkScaleButton *button) gdouble step; guint i; - step = (adj->upper - adj->lower) / (num_icons - 2); - i = (guint) ((value - adj->lower) / step) + 2; + step = (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)) / (num_icons - 2); + i = (guint) ((value - gtk_adjustment_get_lower (adjustment)) / step) + 2; g_assert (i < num_icons); name = priv->icon_list[i]; } diff --git a/gtk/gtkscrollable.c b/gtk/gtkscrollable.c index eb6e046f50..0ff0d9612c 100644 --- a/gtk/gtkscrollable.c +++ b/gtk/gtkscrollable.c @@ -63,8 +63,8 @@ #include "config.h" #include "gtkscrollable.h" -#include "gtktypeutils.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" G_DEFINE_INTERFACE (GtkScrollable, gtk_scrollable, G_TYPE_OBJECT) diff --git a/gtk/gtkscrollbar.c b/gtk/gtkscrollbar.c index df4ad75b9c..4a852f2bed 100644 --- a/gtk/gtkscrollbar.c +++ b/gtk/gtkscrollbar.c @@ -56,8 +56,7 @@ */ -static void gtk_scrollbar_style_set (GtkWidget *widget, - GtkStyle *previous); +static void gtk_scrollbar_style_updated (GtkWidget *widget); G_DEFINE_TYPE (GtkScrollbar, gtk_scrollbar, GTK_TYPE_RANGE) @@ -66,9 +65,7 @@ gtk_scrollbar_class_init (GtkScrollbarClass *class) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); - widget_class->style_set = gtk_scrollbar_style_set; - - GTK_RANGE_CLASS (class)->stepper_detail = "Xscrollbar"; + widget_class->style_updated = gtk_scrollbar_style_updated; gtk_widget_class_install_style_property (widget_class, g_param_spec_int ("min-slider-length", @@ -125,8 +122,7 @@ gtk_scrollbar_init (GtkScrollbar *scrollbar) } static void -gtk_scrollbar_style_set (GtkWidget *widget, - GtkStyle *previous) +gtk_scrollbar_style_updated (GtkWidget *widget) { GtkRange *range = GTK_RANGE (widget); gint slider_length; @@ -147,7 +143,7 @@ gtk_scrollbar_style_set (GtkWidget *widget, _gtk_range_set_steppers (range, has_a, has_b, has_c, has_d); - GTK_WIDGET_CLASS (gtk_scrollbar_parent_class)->style_set (widget, previous); + GTK_WIDGET_CLASS (gtk_scrollbar_parent_class)->style_updated (widget); } /** diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 5df752fcc4..f4a02994af 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -25,15 +25,16 @@ */ #include "config.h" + #include -#include + #include "gtkbindings.h" #include "gtkmarshalers.h" #include "gtkscrollable.h" #include "gtkscrolledwindow.h" #include "gtkwindow.h" -#include "gtktypeutils.h" #include "gtkprivate.h" +#include "gtktypebuiltins.h" #include "gtkintl.h" @@ -377,6 +378,13 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) DEFAULT_SCROLLBAR_SPACING, GTK_PARAM_READABLE)); + /** + * GtkScrolledWindow:min-content-width: + * + * The minimum content width of @scrolled_window, or -1 if not set. + * + * Since: 3.0 + */ g_object_class_install_property (gobject_class, PROP_MIN_CONTENT_WIDTH, g_param_spec_int ("min-content-width", @@ -384,6 +392,14 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) P_("The minimum width that the scrolled window will allocate to its content"), -1, G_MAXINT, -1, GTK_PARAM_READWRITE)); + + /** + * GtkScrolledWindow:min-content-height: + * + * The minimum content height of @scrolled_window, or -1 if not set. + * + * Since: 3.0 + */ g_object_class_install_property (gobject_class, PROP_MIN_CONTENT_HEIGHT, g_param_spec_int ("min-content-height", @@ -1184,20 +1200,31 @@ gtk_scrolled_window_draw (GtkWidget *widget, if (priv->shadow_type != GTK_SHADOW_NONE) { GtkAllocation relative_allocation; - GtkStyle *style; + GtkStyleContext *context; gboolean scrollbars_within_bevel; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + gtk_widget_style_get (widget, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL); if (!scrollbars_within_bevel) { + GtkStateFlags state; + GtkBorder padding, border; + + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + gtk_scrolled_window_relative_allocation (widget, &relative_allocation); - relative_allocation.x -= style->xthickness; - relative_allocation.y -= style->ythickness; - relative_allocation.width += 2 * style->xthickness; - relative_allocation.height += 2 * style->ythickness; + relative_allocation.x -= padding.left + border.left; + relative_allocation.y -= padding.top + border.top; + relative_allocation.width += padding.left + padding.right + border.left + border.right; + relative_allocation.height += padding.top + padding.bottom + border.top + border.bottom; } else { @@ -1207,14 +1234,13 @@ gtk_scrolled_window_draw (GtkWidget *widget, relative_allocation.height = gtk_widget_get_allocated_height (widget); } - gtk_paint_shadow (style, - cr, - GTK_STATE_NORMAL, priv->shadow_type, - widget, "scrolled_window", + gtk_render_frame (context, cr, relative_allocation.x, relative_allocation.y, relative_allocation.width, relative_allocation.height); + + gtk_style_context_restore (context); } GTK_WIDGET_CLASS (gtk_scrolled_window_parent_class)->draw (widget, cr); @@ -1321,27 +1347,27 @@ gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, if (adjustment) { - gdouble value = adjustment->value; + gdouble value = gtk_adjustment_get_value (adjustment); switch (scroll) { case GTK_SCROLL_STEP_FORWARD: - value += adjustment->step_increment; + value += gtk_adjustment_get_step_increment (adjustment); break; case GTK_SCROLL_STEP_BACKWARD: - value -= adjustment->step_increment; + value -= gtk_adjustment_get_step_increment (adjustment); break; case GTK_SCROLL_PAGE_FORWARD: - value += adjustment->page_increment; + value += gtk_adjustment_get_page_increment (adjustment); break; case GTK_SCROLL_PAGE_BACKWARD: - value -= adjustment->page_increment; + value -= gtk_adjustment_get_page_increment (adjustment); break; case GTK_SCROLL_START: - value = adjustment->lower; + value = gtk_adjustment_get_lower (adjustment); break; case GTK_SCROLL_END: - value = adjustment->upper; + value = gtk_adjustment_get_upper (adjustment); break; default: g_assert_not_reached (); @@ -1386,7 +1412,6 @@ gtk_scrolled_window_relative_allocation (GtkWidget *widget, GtkAllocation widget_allocation; GtkScrolledWindow *scrolled_window; GtkScrolledWindowPrivate *priv; - GtkStyle *style; gint sb_spacing; gint sb_width; gint sb_height; @@ -1408,9 +1433,23 @@ gtk_scrolled_window_relative_allocation (GtkWidget *widget, if (priv->shadow_type != GTK_SHADOW_NONE) { - style = gtk_widget_get_style (widget); - allocation->x += style->xthickness; - allocation->y += style->ythickness; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; + + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_style_context_get_border (context, state, &border); + gtk_style_context_get_padding (context, state, &padding); + + allocation->x += padding.left + border.left; + allocation->y += padding.top + border.top; + + gtk_style_context_restore (context); } gtk_widget_get_allocation (widget, &widget_allocation); @@ -1471,7 +1510,9 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, { GtkScrolledWindow *scrolled_window; GtkScrolledWindowPrivate *priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; GtkBin *bin; GtkAllocation relative_allocation; GtkAllocation child_allocation; @@ -1493,11 +1534,21 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, gtk_widget_get_preferred_height (priv->hscrollbar, &sb_height, NULL); gtk_widget_get_preferred_width (priv->vscrollbar, &sb_width, NULL); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + gtk_widget_style_get (widget, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL); gtk_widget_set_allocation (widget, allocation); + gtk_style_context_restore (context); + if (priv->hscrollbar_policy == GTK_POLICY_ALWAYS) priv->hscrollbar_visible = TRUE; else if (priv->hscrollbar_policy == GTK_POLICY_NEVER) @@ -1704,7 +1755,7 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, relative_allocation.height + sb_spacing + (priv->shadow_type == GTK_SHADOW_NONE ? - 0 : style->ythickness)); + 0 : padding.top + border.top)); else child_allocation.y = 0; @@ -1717,17 +1768,17 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, { if (!scrollbars_within_bevel) { - child_allocation.x -= style->xthickness; - child_allocation.width += 2 * style->xthickness; + child_allocation.x -= padding.left + border.left; + child_allocation.width += padding.left + padding.right + border.left + border.right; } else if (GTK_CORNER_TOP_RIGHT == priv->real_window_placement || GTK_CORNER_TOP_LEFT == priv->real_window_placement) { - child_allocation.y -= style->ythickness; + child_allocation.y -= padding.top + border.top; } else { - child_allocation.y += style->ythickness; + child_allocation.y += padding.top + border.top; } } @@ -1751,7 +1802,7 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, relative_allocation.width + sb_spacing + (priv->shadow_type == GTK_SHADOW_NONE ? - 0 : style->xthickness)); + 0 : padding.left + border.left)); else child_allocation.x = 0; @@ -1765,17 +1816,17 @@ gtk_scrolled_window_size_allocate (GtkWidget *widget, { if (!scrollbars_within_bevel) { - child_allocation.y -= style->ythickness; - child_allocation.height += 2 * style->ythickness; + child_allocation.y -= padding.top + border.top; + child_allocation.height += padding.top + padding.bottom + border.top + border.bottom; } else if (GTK_CORNER_BOTTOM_LEFT == priv->real_window_placement || GTK_CORNER_TOP_LEFT == priv->real_window_placement) { - child_allocation.x -= style->xthickness; + child_allocation.x -= padding.left + border.left; } else { - child_allocation.x += style->xthickness; + child_allocation.x += padding.left + border.left; } } @@ -1806,12 +1857,12 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget, if (range && gtk_widget_get_visible (range)) { - GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (range)); + GtkAdjustment *adjustment = gtk_range_get_adjustment (GTK_RANGE (range)); gdouble delta; delta = _gtk_range_get_wheel_delta (GTK_RANGE (range), event->direction); - gtk_adjustment_set_value (adj, adj->value + delta); + gtk_adjustment_set_value (adjustment, gtk_adjustment_get_value (adjustment) + delta); return TRUE; } @@ -1879,8 +1930,8 @@ gtk_scrolled_window_adjustment_changed (GtkAdjustment *adjustment, gboolean visible; visible = priv->hscrollbar_visible; - priv->hscrollbar_visible = (adjustment->upper - adjustment->lower > - adjustment->page_size); + priv->hscrollbar_visible = (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment) > + gtk_adjustment_get_page_size (adjustment)); if (priv->hscrollbar_visible != visible) gtk_widget_queue_resize (GTK_WIDGET (scrolled_window)); @@ -1894,8 +1945,8 @@ gtk_scrolled_window_adjustment_changed (GtkAdjustment *adjustment, gboolean visible; visible = priv->vscrollbar_visible; - priv->vscrollbar_visible = (adjustment->upper - adjustment->lower > - adjustment->page_size); + priv->vscrollbar_visible = (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment) > + gtk_adjustment_get_page_size (adjustment)); if (priv->vscrollbar_visible != visible) gtk_widget_queue_resize (GTK_WIDGET (scrolled_window)); @@ -2051,7 +2102,6 @@ gtk_scrolled_window_get_preferred_size (GtkWidget *widget, GtkRequisition hscrollbar_requisition; GtkRequisition vscrollbar_requisition; GtkRequisition minimum_req, natural_req; - GtkStyle *style; GtkWidget *child; gint min_child_size, nat_child_size; @@ -2155,11 +2205,25 @@ gtk_scrolled_window_get_preferred_size (GtkWidget *widget, if (priv->shadow_type != GTK_SHADOW_NONE) { - style = gtk_widget_get_style (GTK_WIDGET (widget)); - minimum_req.width += 2 * style->xthickness; - minimum_req.height += 2 * style->ythickness; - natural_req.width += 2 * style->xthickness; - natural_req.height += 2 * style->ythickness; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; + + context = gtk_widget_get_style_context (GTK_WIDGET (widget)); + state = gtk_widget_get_state_flags (GTK_WIDGET (widget)); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + + minimum_req.width += padding.left + padding.right + border.left + border.right; + minimum_req.height += padding.top + padding.bottom + border.top + border.bottom; + natural_req.width += padding.left + padding.right + border.left + border.right; + natural_req.height += padding.top + padding.bottom + border.top + border.bottom; + + gtk_style_context_restore (context); } if (orientation == GTK_ORIENTATION_HORIZONTAL) diff --git a/gtk/gtksearchengine.c b/gtk/gtksearchengine.c index 2b2274e655..eac7eb628c 100644 --- a/gtk/gtksearchengine.c +++ b/gtk/gtksearchengine.c @@ -27,13 +27,13 @@ #include "gtksearchenginetracker.h" #include "gtksearchenginequartz.h" -#include /* for GDK_WINDOWING_QUARTZ */ +#include /* for GDK_WINDOWING_QUARTZ */ #ifndef G_OS_WIN32 /* Beagle and tracker are not ported * to Windows, as far as I know. */ -#define HAVE_BEAGLE 1 +#define HAVE_BEAGLE 1 #define HAVE_TRACKER 1 #endif diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c index e46691a944..ad9ff7fe2f 100644 --- a/gtk/gtksearchenginetracker.c +++ b/gtk/gtksearchenginetracker.c @@ -1,5 +1,4 @@ /* - * Copyright (C) 2005 Jamie McCracken * Copyright (C) 2009-2010 Nokia * * This library is free software; you can redistribute it and/or @@ -16,163 +15,143 @@ * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * - * Authors: Jamie McCracken - * Jürg Billeter + * Authors: Jürg Billeter * Martyn Russell * * Based on nautilus-search-engine-tracker.c */ #include "config.h" + +#include #include + #include "gtksearchenginetracker.h" -/* we dlopen() libtracker at runtime */ +/* If defined, we use fts:match, this has to be enabled in Tracker to + * work which it usually is. The alternative is to undefine it and + * use filename matching instead. This doesn't use the content of the + * file however. + */ +#undef FTS_MATCHING -typedef struct _TrackerClient TrackerClient; +#define MODULE_FILENAME "libtracker-sparql-0.10.so.0" -typedef enum +#define MODULE_MAP(a) { #a, (gpointer *)&a } + +/* Connection object */ +typedef struct _TrackerSparqlConnection TrackerSparqlConnection; + +#define TRACKER_SPARQL_TYPE_CONNECTION (tracker_sparql_connection_get_type ()) +#define TRACKER_SPARQL_CONNECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_CONNECTION, TrackerSparqlConnection)) + +/* Cursor object */ +typedef struct _TrackerSparqlCursor TrackerSparqlCursor; + +#define TRACKER_SPARQL_TYPE_CURSOR (tracker_sparql_cursor_get_type ()) +#define TRACKER_SPARQL_CURSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_SPARQL_TYPE_CURSOR, TrackerSparqlCursor)) + +/* API */ +static GType (*tracker_sparql_connection_get_type) (void) = NULL; +static TrackerSparqlConnection * (*tracker_sparql_connection_get) (GCancellable *cancellable, + GError **error) = NULL; +static void (*tracker_sparql_connection_query_async) (TrackerSparqlConnection *self, + const gchar *sparql, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) = NULL; +static TrackerSparqlCursor * (*tracker_sparql_connection_query_finish) (TrackerSparqlConnection *self, + GAsyncResult *_res_, + GError **error) = NULL; +static GType (*tracker_sparql_cursor_get_type) (void) = NULL; +static void (*tracker_sparql_cursor_next_async) (TrackerSparqlCursor *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) = NULL; +static gboolean (*tracker_sparql_cursor_next_finish) (TrackerSparqlCursor *self, + GAsyncResult *_res_, + GError **error) = NULL; +static const gchar * (*tracker_sparql_cursor_get_string) (TrackerSparqlCursor *self, + gint *column, + glong *length) = NULL; +static gchar * (*tracker_sparql_escape_string) (const gchar *literal) = NULL; + +static struct TrackerFunctions { - TRACKER_UNAVAILABLE = 0, - TRACKER_0_6 = 1 << 0, - TRACKER_0_7 = 1 << 1, - TRACKER_0_8 = 1 << 2, - TRACKER_0_9 = 1 << 3 -} TrackerVersion; - - -/* Tracker 0.6 API */ -typedef void (*TrackerArrayReply) (char **result, - GError *error, - gpointer user_data); - -static TrackerClient * - (*tracker_connect) (gboolean enable_warnings, - gint timeout) = NULL; -static void (*tracker_disconnect) (TrackerClient *client) = NULL; -static int (*tracker_get_version) (TrackerClient *client, - GError **error) = NULL; -static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL; - -static void (*tracker_search_metadata_by_text_async) (TrackerClient *client, - const char *query, - TrackerArrayReply callback, - gpointer user_data) = NULL; -static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client, - const char *query, - const char *location, - TrackerArrayReply callback, - gpointer user_data) = NULL; - - -/* Tracker 0.7->0.9 API */ -typedef enum { - TRACKER_CLIENT_ENABLE_WARNINGS = 1 << 0 -} TrackerClientFlags; - -typedef void (*TrackerReplyGPtrArray) (GPtrArray *result, - GError *error, - gpointer user_data); - -static TrackerClient * (*tracker_client_new) (TrackerClientFlags flags, - gint timeout) = NULL; -static gchar * (*tracker_sparql_escape) (const gchar *str) = NULL; -static guint (*tracker_resources_sparql_query_async) (TrackerClient *client, - const gchar *query, - TrackerReplyGPtrArray callback, - gpointer user_data) = NULL; - - -static struct TrackerDlMapping -{ - const char *fn_name; - gpointer *fn_ptr_ref; - TrackerVersion versions; -} tracker_dl_mapping[] = -{ -#define MAP(a,v) { #a, (gpointer *)&a, v } - MAP (tracker_connect, TRACKER_0_6 | TRACKER_0_7), - MAP (tracker_disconnect, TRACKER_0_6 | TRACKER_0_7), - MAP (tracker_get_version, TRACKER_0_6), - MAP (tracker_cancel_last_call, TRACKER_0_6 | TRACKER_0_7 | TRACKER_0_8 | TRACKER_0_9), - MAP (tracker_search_metadata_by_text_async, TRACKER_0_6 | TRACKER_0_7), - MAP (tracker_search_metadata_by_text_and_location_async, TRACKER_0_6 | TRACKER_0_7), - MAP (tracker_client_new, TRACKER_0_8 | TRACKER_0_9), - MAP (tracker_sparql_escape, TRACKER_0_8 | TRACKER_0_9), - MAP (tracker_resources_sparql_query_async, TRACKER_0_8 | TRACKER_0_9) -#undef MAP + const char *name; + gpointer *pointer; +} funcs[] = { + MODULE_MAP (tracker_sparql_connection_get_type), + MODULE_MAP (tracker_sparql_connection_get), + MODULE_MAP (tracker_sparql_connection_query_async), + MODULE_MAP (tracker_sparql_connection_query_finish), + MODULE_MAP (tracker_sparql_cursor_get_type), + MODULE_MAP (tracker_sparql_cursor_next_async), + MODULE_MAP (tracker_sparql_cursor_next_finish), + MODULE_MAP (tracker_sparql_cursor_get_string), + MODULE_MAP (tracker_sparql_escape_string) }; -static TrackerVersion -open_libtracker (void) +static gboolean +init (void) { - static gboolean done = FALSE; - static TrackerVersion version = TRACKER_UNAVAILABLE; + static gboolean inited = FALSE; + gint i; + GModule *m; + GModuleFlags flags; - if (!done) - { - gint i; - GModule *tracker; - GModuleFlags flags; + if (inited) + return TRUE; - done = TRUE; - flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL; + flags = G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL; - /* So this is the order: - * - * - 0.9 (latest unstable) - * - 0.8 (stable) - * - 0.7 (unstable, 0.6 sucks so badly) - * - 0.6 (stable) - */ - if ((tracker = g_module_open ("libtracker-client-0.9.so.0", flags)) != NULL) - version = TRACKER_0_9; - else if ((tracker = g_module_open ("libtracker-client-0.8.so.0", flags)) != NULL) - version = TRACKER_0_8; - else if ((tracker = g_module_open ("libtracker-client-0.7.so.0", flags)) != NULL) - version = TRACKER_0_7; - else if ((tracker = g_module_open ("libtrackerclient.so.0", flags)) != NULL) - version = TRACKER_0_6; - else - { - g_debug ("No tracker backend available"); - return TRACKER_UNAVAILABLE; - } + /* Only support 0.10 onwards */ + if ((m = g_module_open (MODULE_FILENAME, flags)) == NULL) + { + g_debug ("No tracker backend available or it is not new enough"); + g_debug ("Only available using '%s'", MODULE_FILENAME); + return FALSE; + } - for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++) - { - if ((tracker_dl_mapping[i].versions & version) == 0) - continue; + inited = TRUE; - if (!g_module_symbol (tracker, - tracker_dl_mapping[i].fn_name, - tracker_dl_mapping[i].fn_ptr_ref)) - { - g_warning ("Missing symbol '%s' in libtracker\n", - tracker_dl_mapping[i].fn_name); - g_module_close (tracker); + /* Check for the symbols we need */ + for (i = 0; i < G_N_ELEMENTS (funcs); i++) + { + if (!g_module_symbol (m, funcs[i].name, funcs[i].pointer)) + { + g_warning ("Missing symbol '%s' in libtracker-sparql\n", + funcs[i].name); + g_module_close (m); - for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++) - tracker_dl_mapping[i].fn_ptr_ref = NULL; + for (i = 0; i < G_N_ELEMENTS (funcs); i++) + funcs[i].pointer = NULL; - return TRACKER_UNAVAILABLE; + return FALSE; + } } - } - } - return version; + g_debug ("Loaded Tracker library and all required symbols"); + + return TRUE; } +/* + * GtkSearchEngineTracker object + */ struct _GtkSearchEngineTrackerPrivate { - GtkQuery *query; - TrackerClient *client; - gboolean query_pending; - TrackerVersion version; + TrackerSparqlConnection *connection; + GCancellable *cancellable; + GtkQuery *query; + gboolean query_pending; }; G_DEFINE_TYPE (GtkSearchEngineTracker, _gtk_search_engine_tracker, GTK_TYPE_SEARCH_ENGINE); +static void cursor_callback (GObject *object, + GAsyncResult *result, + gpointer user_data); static void finalize (GObject *object) @@ -181,56 +160,106 @@ finalize (GObject *object) tracker = GTK_SEARCH_ENGINE_TRACKER (object); + if (tracker->priv->cancellable) + { + g_cancellable_cancel (tracker->priv->cancellable); + g_object_unref (tracker->priv->cancellable); + tracker->priv->cancellable = NULL; + } + if (tracker->priv->query) { g_object_unref (tracker->priv->query); tracker->priv->query = NULL; } - if (tracker->priv->version == TRACKER_0_8 || - tracker->priv->version == TRACKER_0_9) - g_object_unref (tracker->priv->client); - else - tracker_disconnect (tracker->priv->client); + if (tracker->priv->connection) + { + g_object_unref (tracker->priv->connection); + tracker->priv->connection = NULL; + } G_OBJECT_CLASS (_gtk_search_engine_tracker_parent_class)->finalize (object); } - -/* stolen from tracker sources, tracker.c */ static void -sparql_append_string_literal (GString *sparql, - const gchar *str) +cursor_next (GtkSearchEngineTracker *tracker, + TrackerSparqlCursor *cursor) { - gchar *s; - - s = tracker_sparql_escape (str); - - g_string_append_c (sparql, '"'); - g_string_append (sparql, s); - g_string_append_c (sparql, '"'); - - g_free (s); + tracker_sparql_cursor_next_async (cursor, + tracker->priv->cancellable, + cursor_callback, + tracker); } - static void -search_callback (gpointer results, - GError *error, - gpointer user_data) +cursor_callback (GObject *object, + GAsyncResult *result, + gpointer user_data) { GtkSearchEngineTracker *tracker; - gchar **results_p; - GList *hit_uris; - GPtrArray *OUT_result; - gchar *uri; - gint i; + GError *error = NULL; + TrackerSparqlCursor *cursor; + GList *hits; + gboolean success; + + tracker = GTK_SEARCH_ENGINE_TRACKER (user_data); + + cursor = TRACKER_SPARQL_CURSOR (object); + success = tracker_sparql_cursor_next_finish (cursor, result, &error); + + if (error) + { + _gtk_search_engine_error (GTK_SEARCH_ENGINE (tracker), error->message); + + g_error_free (error); + + if (cursor) + g_object_unref (cursor); + + return; + } + + if (!success) + { + _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker)); + + if (cursor) + g_object_unref (cursor); + + return; + } + + /* We iterate result by result, not n at a time. */ + hits = g_list_append (NULL, (gchar*) tracker_sparql_cursor_get_string (cursor, 0, NULL)); + _gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (tracker), hits); + g_list_free (hits); + + /* Get next */ + cursor_next (tracker, cursor); +} + +static void +query_callback (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + GtkSearchEngineTracker *tracker; + TrackerSparqlConnection *connection; + TrackerSparqlCursor *cursor; + GError *error = NULL; tracker = GTK_SEARCH_ENGINE_TRACKER (user_data); - hit_uris = NULL; tracker->priv->query_pending = FALSE; + connection = TRACKER_SPARQL_CONNECTION (object); + cursor = tracker_sparql_connection_query_finish (connection, + result, + &error); + + g_debug ("Query returned cursor:%p", cursor); + if (error) { _gtk_search_engine_error (GTK_SEARCH_ENGINE (tracker), error->message); @@ -238,118 +267,96 @@ search_callback (gpointer results, return; } - if (!results) - return; + if (!cursor) + { + _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker)); + return; + } - if (tracker->priv->version == TRACKER_0_8 || - tracker->priv->version == TRACKER_0_9) - { - OUT_result = (GPtrArray*) results; - - for (i = 0; i < OUT_result->len; i++) - { - uri = g_strdup (((gchar **) OUT_result->pdata[i])[0]); - if (uri) - hit_uris = g_list_prepend (hit_uris, uri); - } - - g_ptr_array_foreach (OUT_result, (GFunc) g_free, NULL); - g_ptr_array_free (OUT_result, TRUE); - } - else - { - for (results_p = results; *results_p; results_p++) - { - if (tracker->priv->version == TRACKER_0_6) - uri = g_filename_to_uri (*results_p, NULL, NULL); - else - uri = g_strdup (*results_p); - - if (uri) - hit_uris = g_list_prepend (hit_uris, uri); - } - g_strfreev ((gchar **) results); - } - - _gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (tracker), hit_uris); - _gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker)); - - g_list_foreach (hit_uris, (GFunc) g_free, NULL); - g_list_free (hit_uris); + cursor_next (tracker, cursor); } +static void +sparql_append_string_literal (GString *sparql, + const gchar *str) +{ + gchar *s; + + s = tracker_sparql_escape_string (str); + + g_string_append_c (sparql, '"'); + g_string_append (sparql, s); + g_string_append_c (sparql, '"'); + + g_free (s); +} static void gtk_search_engine_tracker_start (GtkSearchEngine *engine) { GtkSearchEngineTracker *tracker; - gchar *search_text, *location, *location_uri; + gchar *search_text, *location_uri; GString *sparql; tracker = GTK_SEARCH_ENGINE_TRACKER (engine); if (tracker->priv->query_pending) - return; + { + g_debug ("Attempt to start a new search while one is pending, doing nothing"); + return; + } if (tracker->priv->query == NULL) - return; + { + g_debug ("Attempt to start a new search with no GtkQuery, doing nothing"); + return; + } search_text = _gtk_query_get_text (tracker->priv->query); location_uri = _gtk_query_get_location (tracker->priv->query); - location = NULL; + g_debug ("Query starting, search criteria:'%s', location:'%s'", search_text, location_uri); + + /* Using FTS: */ + sparql = g_string_new ("SELECT nie:url(?urn) " + "WHERE {" + " ?urn a nfo:FileDataObject ;" + " tracker:available true ; " + " fts:match "); + sparql_append_string_literal (sparql, search_text); + +#ifdef FTS_MATCHING if (location_uri) - { - if (tracker->priv->version == TRACKER_0_6) - { - location = g_filename_from_uri (location_uri, NULL, NULL); - g_free (location_uri); - } - else - location = location_uri; - } + { + g_string_append (sparql, " . FILTER (fn:starts-with(nie:url(?urn),"); + sparql_append_string_literal (sparql, location_uri); + g_string_append (sparql, "))"); + } - if (tracker->priv->version == TRACKER_0_8 || - tracker->priv->version == TRACKER_0_9) - { - sparql = g_string_new ("SELECT nie:url(?urn) WHERE { ?urn a nfo:FileDataObject; fts:match "); - sparql_append_string_literal (sparql, search_text); - if (location) - { - g_string_append (sparql, " . FILTER (fn:starts-with(nie:url(?urn),"); - sparql_append_string_literal (sparql, location); - g_string_append (sparql, "))"); - } - g_string_append (sparql, " } ORDER BY DESC(fts:rank(?urn)) ASC(nie:url(?urn))"); + g_string_append (sparql, " } ORDER BY DESC(fts:rank(?urn)) ASC(nie:url(?urn))"); +#else /* FTS_MATCHING */ + /* Using filename matching: */ + sparql = g_string_new ("SELECT nie:url(?urn) " + "WHERE {" + " ?urn a nfo:FileDataObject ;" + " tracker:available true ." + " FILTER (fn:contains(nfo:fileName(?urn),"); + sparql_append_string_literal (sparql, search_text); - tracker_resources_sparql_query_async (tracker->priv->client, - sparql->str, - (TrackerReplyGPtrArray) search_callback, - tracker); - g_string_free (sparql, TRUE); - } - else - { - if (location) - { - tracker_search_metadata_by_text_and_location_async (tracker->priv->client, - search_text, - location, - (TrackerArrayReply) search_callback, - tracker); - } - else - { - tracker_search_metadata_by_text_async (tracker->priv->client, - search_text, - (TrackerArrayReply) search_callback, - tracker); - } - } + g_string_append (sparql, + "))" + "} ORDER BY DESC(nie:url(?urn)) DESC(nfo:fileName(?urn))"); +#endif /* FTS_MATCHING */ + + tracker_sparql_connection_query_async (tracker->priv->connection, + sparql->str, + tracker->priv->cancellable, + query_callback, + tracker); + g_string_free (sparql, TRUE); tracker->priv->query_pending = TRUE; g_free (search_text); - g_free (location); } static void @@ -359,9 +366,11 @@ gtk_search_engine_tracker_stop (GtkSearchEngine *engine) tracker = GTK_SEARCH_ENGINE_TRACKER (engine); + g_debug ("Query stopping"); + if (tracker->priv->query && tracker->priv->query_pending) { - tracker_cancel_last_call (tracker->priv->client); + g_cancellable_cancel (tracker->priv->cancellable); tracker->priv->query_pending = FALSE; } } @@ -374,7 +383,7 @@ gtk_search_engine_tracker_is_indexed (GtkSearchEngine *engine) static void gtk_search_engine_tracker_set_query (GtkSearchEngine *engine, - GtkQuery *query) + GtkQuery *query) { GtkSearchEngineTracker *tracker; @@ -410,7 +419,9 @@ _gtk_search_engine_tracker_class_init (GtkSearchEngineTrackerClass *class) static void _gtk_search_engine_tracker_init (GtkSearchEngineTracker *engine) { - engine->priv = G_TYPE_INSTANCE_GET_PRIVATE (engine, GTK_TYPE_SEARCH_ENGINE_TRACKER, GtkSearchEngineTrackerPrivate); + engine->priv = G_TYPE_INSTANCE_GET_PRIVATE (engine, + GTK_TYPE_SEARCH_ENGINE_TRACKER, + GtkSearchEngineTrackerPrivate); } @@ -418,49 +429,35 @@ GtkSearchEngine * _gtk_search_engine_tracker_new (void) { GtkSearchEngineTracker *engine; - TrackerClient *tracker_client; - TrackerVersion version; - GError *err = NULL; + TrackerSparqlConnection *connection; + GCancellable *cancellable; + GError *error = NULL; - version = open_libtracker (); + if (!init ()) + return NULL; - if (version == TRACKER_0_8 || - version == TRACKER_0_9) - { - tracker_client = tracker_client_new (TRACKER_CLIENT_ENABLE_WARNINGS, G_MAXINT); - } - else - { - if (!tracker_connect) - return NULL; + g_debug ("Creating GtkSearchEngineTracker..."); - tracker_client = tracker_connect (FALSE, -1); - } + cancellable = g_cancellable_new (); + connection = tracker_sparql_connection_get (cancellable, &error); - if (!tracker_client) - return NULL; - - - if (version == TRACKER_0_6) - { - if (!tracker_get_version) - return NULL; - - tracker_get_version (tracker_client, &err); - - if (err != NULL) - { - g_error_free (err); - tracker_disconnect (tracker_client); - return NULL; - } - } + if (error) + { + g_warning ("Could not establish a connection to Tracker: %s", error->message); + g_error_free (error); + return NULL; + } + else if (!connection) + { + g_warning ("Could not establish a connection to Tracker, no TrackerSparqlConnection was returned"); + return NULL; + } engine = g_object_new (GTK_TYPE_SEARCH_ENGINE_TRACKER, NULL); - engine->priv->client = tracker_client; + engine->priv->connection = connection; + engine->priv->cancellable = cancellable; engine->priv->query_pending = FALSE; - engine->priv->version = version; return GTK_SEARCH_ENGINE (engine); } diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c index 4148f37b23..4063bb2d05 100644 --- a/gtk/gtkselection.c +++ b/gtk/gtkselection.c @@ -51,14 +51,43 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkselection + * @Title: Selections + * @Short_description: Functions for handling inter-process communication + * via selections + * @See_also: #GtkWidget - Much of the operation of selections happens via + * signals for #GtkWidget. In particular, if you are using the functions + * in this section, you may need to pay attention to + * #GtkWidget::selection-get, #GtkWidget::selection-received and + * #GtkWidget::selection-clear-event signals + * + * The selection mechanism provides the basis for different types + * of communication between processes. In particular, drag and drop and + * #GtkClipboard work via selections. You will very seldom or + * never need to use most of the functions in this section directly; + * #GtkClipboard provides a nicer interface to the same functionality. + * + * Some of the datatypes defined this section are used in + * the #GtkClipboard and drag-and-drop API's as well. The + * #GtkTargetEntry structure and #GtkTargetList objects represent + * lists of data types that are supported when sending or + * receiving data. The #GtkSelectionData object is used to + * store a chunk of data along with the data type and other + * associated information. + */ + #include "config.h" + +#include "gtkselection.h" +#include "gtkselectionprivate.h" + #include #include #include "gdk.h" #include "gtkmain.h" #include "gtkdebug.h" -#include "gtkselection.h" #include "gtktextbufferrichtext.h" #include "gtkintl.h" #include "gdk-pixbuf/gdk-pixbuf.h" @@ -1122,7 +1151,7 @@ gtk_selection_convert (GtkWidget *widget, * Since: 2.16 **/ GdkAtom -gtk_selection_data_get_selection (GtkSelectionData *selection_data) +gtk_selection_data_get_selection (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, 0); @@ -1140,7 +1169,7 @@ gtk_selection_data_get_selection (GtkSelectionData *selection_data) * Since: 2.14 **/ GdkAtom -gtk_selection_data_get_target (GtkSelectionData *selection_data) +gtk_selection_data_get_target (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, 0); @@ -1158,7 +1187,7 @@ gtk_selection_data_get_target (GtkSelectionData *selection_data) * Since: 2.14 **/ GdkAtom -gtk_selection_data_get_data_type (GtkSelectionData *selection_data) +gtk_selection_data_get_data_type (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, 0); @@ -1176,7 +1205,7 @@ gtk_selection_data_get_data_type (GtkSelectionData *selection_data) * Since: 2.14 **/ gint -gtk_selection_data_get_format (GtkSelectionData *selection_data) +gtk_selection_data_get_format (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, 0); @@ -1194,7 +1223,7 @@ gtk_selection_data_get_format (GtkSelectionData *selection_data) * Since: 2.14 **/ const guchar* -gtk_selection_data_get_data (GtkSelectionData *selection_data) +gtk_selection_data_get_data (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, NULL); @@ -1212,13 +1241,36 @@ gtk_selection_data_get_data (GtkSelectionData *selection_data) * Since: 2.14 */ gint -gtk_selection_data_get_length (GtkSelectionData *selection_data) +gtk_selection_data_get_length (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, -1); return selection_data->length; } +/** + * gtk_selection_data_get_data_with_length: + * @selection_data: a pointer to a #GtkSelectionData structure + * @length: return location for length of the data segment + * + * Retrieves the raw data of the selection along with its length. + * + * Returns: (array length=length): the raw data of the selection + * + * Rename to: gtk_selection_data_get_data + * Since: 3.0 + */ +const guchar* +gtk_selection_data_get_data_with_length (const GtkSelectionData *selection_data, + gint *length) +{ + g_return_val_if_fail (selection_data != NULL, NULL); + + *length = selection_data->length; + + return selection_data->data; +} + /** * gtk_selection_data_get_display: * @selection_data: a pointer to a #GtkSelectionData structure. @@ -1230,7 +1282,7 @@ gtk_selection_data_get_length (GtkSelectionData *selection_data) * Since: 2.14 **/ GdkDisplay * -gtk_selection_data_get_display (GtkSelectionData *selection_data) +gtk_selection_data_get_display (const GtkSelectionData *selection_data) { g_return_val_if_fail (selection_data != NULL, NULL); @@ -1315,18 +1367,22 @@ selection_set_compound_text (GtkSelectionData *selection_data, gint format; gint new_length; gboolean result = FALSE; - - tmp = g_strndup (str, len); - if (gdk_utf8_to_compound_text_for_display (selection_data->display, tmp, - &encoding, &format, &text, &new_length)) - { - gtk_selection_data_set (selection_data, encoding, format, text, new_length); - gdk_free_compound_text (text); - - result = TRUE; - } - g_free (tmp); +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (selection_data->display)) + { + tmp = g_strndup (str, len); + if (gdk_x11_display_utf8_to_compound_text (selection_data->display, tmp, + &encoding, &format, &text, &new_length)) + { + gtk_selection_data_set (selection_data, encoding, format, text, new_length); + gdk_x11_free_compound_text (text); + + result = TRUE; + } + g_free (tmp); + } +#endif return result; } @@ -1433,7 +1489,7 @@ selection_set_text_plain (GtkSelectionData *selection_data, } static guchar * -selection_get_text_plain (GtkSelectionData *selection_data) +selection_get_text_plain (const GtkSelectionData *selection_data) { const gchar *charset = NULL; gchar *str, *result; @@ -1546,7 +1602,7 @@ gtk_selection_data_set_text (GtkSelectionData *selection_data, * If the result is non-%NULL it must be freed with g_free(). **/ guchar * -gtk_selection_data_get_text (GtkSelectionData *selection_data) +gtk_selection_data_get_text (const GtkSelectionData *selection_data) { guchar *result = NULL; @@ -1666,7 +1722,7 @@ gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data, * Since: 2.6 **/ GdkPixbuf * -gtk_selection_data_get_pixbuf (GtkSelectionData *selection_data) +gtk_selection_data_get_pixbuf (const GtkSelectionData *selection_data) { GdkPixbufLoader *loader; GdkPixbuf *result = NULL; @@ -1765,7 +1821,7 @@ gtk_selection_data_set_uris (GtkSelectionData *selection_data, * Since: 2.6 **/ gchar ** -gtk_selection_data_get_uris (GtkSelectionData *selection_data) +gtk_selection_data_get_uris (const GtkSelectionData *selection_data) { gchar **result = NULL; @@ -1809,9 +1865,9 @@ gtk_selection_data_get_uris (GtkSelectionData *selection_data) * array of targets, otherwise %FALSE. **/ gboolean -gtk_selection_data_get_targets (GtkSelectionData *selection_data, - GdkAtom **targets, - gint *n_atoms) +gtk_selection_data_get_targets (const GtkSelectionData *selection_data, + GdkAtom **targets, + gint *n_atoms) { g_return_val_if_fail (selection_data != NULL, FALSE); @@ -1944,7 +2000,7 @@ gtk_targets_include_rich_text (GdkAtom *targets, * and a suitable target for text is included, otherwise %FALSE. **/ gboolean -gtk_selection_data_targets_include_text (GtkSelectionData *selection_data) +gtk_selection_data_targets_include_text (const GtkSelectionData *selection_data) { GdkAtom *targets; gint n_targets; @@ -1979,8 +2035,8 @@ gtk_selection_data_targets_include_text (GtkSelectionData *selection_data) * Since: 2.10 **/ gboolean -gtk_selection_data_targets_include_rich_text (GtkSelectionData *selection_data, - GtkTextBuffer *buffer) +gtk_selection_data_targets_include_rich_text (const GtkSelectionData *selection_data, + GtkTextBuffer *buffer) { GdkAtom *targets; gint n_targets; @@ -2062,8 +2118,8 @@ gtk_targets_include_image (GdkAtom *targets, * Since: 2.6 **/ gboolean -gtk_selection_data_targets_include_image (GtkSelectionData *selection_data, - gboolean writable) +gtk_selection_data_targets_include_image (const GtkSelectionData *selection_data, + gboolean writable) { GdkAtom *targets; gint n_targets; @@ -2135,7 +2191,7 @@ gtk_targets_include_uri (GdkAtom *targets, * Since: 2.10 **/ gboolean -gtk_selection_data_targets_include_uri (GtkSelectionData *selection_data) +gtk_selection_data_targets_include_uri (const GtkSelectionData *selection_data) { GdkAtom *targets; gint n_targets; @@ -2263,20 +2319,20 @@ _gtk_selection_request (GtkWidget *widget, info = g_slice_new (GtkIncrInfo); g_object_ref (widget); - + info->selection = event->selection; info->num_incrs = 0; - + /* Create GdkWindow structure for the requestor */ - - info->requestor = gdk_window_lookup_for_display (display, - event->requestor); - if (!info->requestor) - info->requestor = gdk_window_foreign_new_for_display (display, - event->requestor); - + +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + info->requestor = gdk_x11_window_foreign_new_for_display (display, event->requestor); + else +#endif + info->requestor = NULL; + /* Determine conversions we need to perform */ - if (event->target == gtk_selection_atoms[MULTIPLE]) { GdkAtom type; @@ -3081,7 +3137,7 @@ gtk_selection_default_handler (GtkWidget *widget, * Return value: a pointer to a copy of @data. **/ GtkSelectionData* -gtk_selection_data_copy (GtkSelectionData *data) +gtk_selection_data_copy (const GtkSelectionData *data) { GtkSelectionData *new_data; diff --git a/gtk/gtkselection.h b/gtk/gtkselection.h index eddab0f4ad..bb3337da35 100644 --- a/gtk/gtkselection.h +++ b/gtk/gtkselection.h @@ -31,41 +31,39 @@ #ifndef __GTK_SELECTION_H__ #define __GTK_SELECTION_H__ - #include #include - G_BEGIN_DECLS -typedef struct _GtkTargetList GtkTargetList; -typedef struct _GtkTargetEntry GtkTargetEntry; +/** + * GtkTargetList: + * + * A #GtkTargetList structure is a reference counted list + * of #GtkTargetPair. It is used to represent the same + * information as a table of #GtkTargetEntry, but in + * an efficient form. This structure should be treated as + * opaque. + */ +typedef struct _GtkTargetList GtkTargetList; +typedef struct _GtkTargetEntry GtkTargetEntry; #define GTK_TYPE_SELECTION_DATA (gtk_selection_data_get_type ()) #define GTK_TYPE_TARGET_LIST (gtk_target_list_get_type ()) -/* The contents of a selection are returned in a GtkSelectionData - * structure. selection/target identify the request. type specifies - * the type of the return; if length < 0, and the data should be - * ignored. This structure has object semantics - no fields should be - * modified directly, they should not be created directly, and - * pointers to them should not be stored beyond the duration of a - * callback. (If the last is changed, we'll need to add reference - * counting.) The time field gives the timestamp at which the data was - * sent. +/** + * GtkTargetEntry: + * @target: a string representation of the target type + * @flags: #GtkTargetFlags for DND + * @info: an application-assigned integer ID which will + * get passed as a parater to e.g the #GtkWiget::selection-get + * signal. It allows the application to identify the target + * type without extensive string compares. + * + * A #GtkTargetEntry structure represents a single type of + * data than can be supplied for by a widget for a selection + * or for supplied or received during drag-and-drop. */ - -struct _GtkSelectionData -{ - GdkAtom GSEAL (selection); - GdkAtom GSEAL (target); - GdkAtom GSEAL (type); - gint GSEAL (format); - guchar *GSEAL (data); - gint GSEAL (length); - GdkDisplay *GSEAL (display); -}; - struct _GtkTargetEntry { gchar *target; @@ -73,32 +71,15 @@ struct _GtkTargetEntry guint info; }; -/* These structures not public, and are here only for the convenience of - * gtkdnd.c - */ - -typedef struct _GtkTargetPair GtkTargetPair; - -/* This structure is a list of destinations, and associated guint id's */ -struct _GtkTargetList { - GList *list; - guint ref_count; -}; - -struct _GtkTargetPair { - GdkAtom target; - guint flags; - guint info; -}; - +GType gtk_target_list_get_type (void) G_GNUC_CONST; GtkTargetList *gtk_target_list_new (const GtkTargetEntry *targets, - guint ntargets); + guint ntargets); GtkTargetList *gtk_target_list_ref (GtkTargetList *list); void gtk_target_list_unref (GtkTargetList *list); void gtk_target_list_add (GtkTargetList *list, - GdkAtom target, - guint flags, - guint info); + GdkAtom target, + guint flags, + guint info); void gtk_target_list_add_text_targets (GtkTargetList *list, guint info); void gtk_target_list_add_rich_text_targets (GtkTargetList *list, @@ -111,115 +92,102 @@ void gtk_target_list_add_image_targets (GtkTargetList *list, void gtk_target_list_add_uri_targets (GtkTargetList *list, guint info); void gtk_target_list_add_table (GtkTargetList *list, - const GtkTargetEntry *targets, - guint ntargets); + const GtkTargetEntry *targets, + guint ntargets); void gtk_target_list_remove (GtkTargetList *list, - GdkAtom target); + GdkAtom target); gboolean gtk_target_list_find (GtkTargetList *list, - GdkAtom target, - guint *info); + GdkAtom target, + guint *info); GtkTargetEntry * gtk_target_table_new_from_list (GtkTargetList *list, gint *n_targets); void gtk_target_table_free (GtkTargetEntry *targets, gint n_targets); -/* Public interface */ - gboolean gtk_selection_owner_set (GtkWidget *widget, - GdkAtom selection, - guint32 time_); + GdkAtom selection, + guint32 time_); gboolean gtk_selection_owner_set_for_display (GdkDisplay *display, - GtkWidget *widget, - GdkAtom selection, - guint32 time_); + GtkWidget *widget, + GdkAtom selection, + guint32 time_); void gtk_selection_add_target (GtkWidget *widget, - GdkAtom selection, - GdkAtom target, - guint info); + GdkAtom selection, + GdkAtom target, + guint info); void gtk_selection_add_targets (GtkWidget *widget, - GdkAtom selection, - const GtkTargetEntry *targets, - guint ntargets); + GdkAtom selection, + const GtkTargetEntry *targets, + guint ntargets); void gtk_selection_clear_targets (GtkWidget *widget, - GdkAtom selection); + GdkAtom selection); gboolean gtk_selection_convert (GtkWidget *widget, - GdkAtom selection, - GdkAtom target, - guint32 time_); + GdkAtom selection, + GdkAtom target, + guint32 time_); +void gtk_selection_remove_all (GtkWidget *widget); -GdkAtom gtk_selection_data_get_selection (GtkSelectionData *selection_data); -GdkAtom gtk_selection_data_get_target (GtkSelectionData *selection_data); -GdkAtom gtk_selection_data_get_data_type (GtkSelectionData *selection_data); -gint gtk_selection_data_get_format (GtkSelectionData *selection_data); -const guchar *gtk_selection_data_get_data (GtkSelectionData *selection_data); -gint gtk_selection_data_get_length (GtkSelectionData *selection_data); -GdkDisplay *gtk_selection_data_get_display (GtkSelectionData *selection_data); +GdkAtom gtk_selection_data_get_selection (const GtkSelectionData *selection_data); +GdkAtom gtk_selection_data_get_target (const GtkSelectionData *selection_data); +GdkAtom gtk_selection_data_get_data_type (const GtkSelectionData *selection_data); +gint gtk_selection_data_get_format (const GtkSelectionData *selection_data); +const guchar *gtk_selection_data_get_data (const GtkSelectionData *selection_data); +gint gtk_selection_data_get_length (const GtkSelectionData *selection_data); +const guchar *gtk_selection_data_get_data_with_length + (const GtkSelectionData *selection_data, + gint *length); + +GdkDisplay *gtk_selection_data_get_display (const GtkSelectionData *selection_data); void gtk_selection_data_set (GtkSelectionData *selection_data, - GdkAtom type, - gint format, - const guchar *data, - gint length); + GdkAtom type, + gint format, + const guchar *data, + gint length); gboolean gtk_selection_data_set_text (GtkSelectionData *selection_data, - const gchar *str, - gint len); -guchar * gtk_selection_data_get_text (GtkSelectionData *selection_data); + const gchar *str, + gint len); +guchar * gtk_selection_data_get_text (const GtkSelectionData *selection_data); gboolean gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data, - GdkPixbuf *pixbuf); -GdkPixbuf *gtk_selection_data_get_pixbuf (GtkSelectionData *selection_data); + GdkPixbuf *pixbuf); +GdkPixbuf *gtk_selection_data_get_pixbuf (const GtkSelectionData *selection_data); gboolean gtk_selection_data_set_uris (GtkSelectionData *selection_data, - gchar **uris); -gchar **gtk_selection_data_get_uris (GtkSelectionData *selection_data); + gchar **uris); +gchar **gtk_selection_data_get_uris (const GtkSelectionData *selection_data); -gboolean gtk_selection_data_get_targets (GtkSelectionData *selection_data, - GdkAtom **targets, - gint *n_atoms); -gboolean gtk_selection_data_targets_include_text (GtkSelectionData *selection_data); -gboolean gtk_selection_data_targets_include_rich_text (GtkSelectionData *selection_data, +gboolean gtk_selection_data_get_targets (const GtkSelectionData *selection_data, + GdkAtom **targets, + gint *n_atoms); +gboolean gtk_selection_data_targets_include_text (const GtkSelectionData *selection_data); +gboolean gtk_selection_data_targets_include_rich_text (const GtkSelectionData *selection_data, GtkTextBuffer *buffer); -gboolean gtk_selection_data_targets_include_image (GtkSelectionData *selection_data, - gboolean writable); -gboolean gtk_selection_data_targets_include_uri (GtkSelectionData *selection_data); +gboolean gtk_selection_data_targets_include_image (const GtkSelectionData *selection_data, + gboolean writable); +gboolean gtk_selection_data_targets_include_uri (const GtkSelectionData *selection_data); gboolean gtk_targets_include_text (GdkAtom *targets, - gint n_targets); + gint n_targets); gboolean gtk_targets_include_rich_text (GdkAtom *targets, - gint n_targets, + gint n_targets, GtkTextBuffer *buffer); gboolean gtk_targets_include_image (GdkAtom *targets, - gint n_targets, - gboolean writable); + gint n_targets, + gboolean writable); gboolean gtk_targets_include_uri (GdkAtom *targets, - gint n_targets); + gint n_targets); -/* Called when a widget is destroyed */ - -void gtk_selection_remove_all (GtkWidget *widget); - -/* Event handlers */ -gboolean _gtk_selection_clear (GtkWidget *widget, - GdkEventSelection *event); -gboolean _gtk_selection_request (GtkWidget *widget, - GdkEventSelection *event); -gboolean _gtk_selection_incr_event (GdkWindow *window, - GdkEventProperty *event); -gboolean _gtk_selection_notify (GtkWidget *widget, - GdkEventSelection *event); -gboolean _gtk_selection_property_notify (GtkWidget *widget, - GdkEventProperty *event); GType gtk_selection_data_get_type (void) G_GNUC_CONST; -GtkSelectionData *gtk_selection_data_copy (GtkSelectionData *data); -void gtk_selection_data_free (GtkSelectionData *data); +GtkSelectionData *gtk_selection_data_copy (const GtkSelectionData *data); +void gtk_selection_data_free (GtkSelectionData *data); GType gtk_target_entry_get_type (void) G_GNUC_CONST; - -GtkTargetEntry *gtk_target_entry_new (const char *target, guint flags, guint info); +GtkTargetEntry *gtk_target_entry_new (const gchar *target, + guint flags, + guint info); GtkTargetEntry *gtk_target_entry_copy (GtkTargetEntry *data); -void gtk_target_entry_free (GtkTargetEntry *data); - -GType gtk_target_list_get_type (void) G_GNUC_CONST; +void gtk_target_entry_free (GtkTargetEntry *data); G_END_DECLS diff --git a/gtk/gtkselectionprivate.h b/gtk/gtkselectionprivate.h new file mode 100644 index 0000000000..0b965f508e --- /dev/null +++ b/gtk/gtkselectionprivate.h @@ -0,0 +1,77 @@ +/* GTK - The GIMP Toolkit + * + * Copyright (C) 2010 Javier Jardón + * + * 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 . + */ + + +/* The contents of a selection are returned in a GtkSelectionData + * structure. selection/target identify the request. type specifies + * the type of the return; if length < 0, and the data should be + * ignored. This structure has object semantics - no fields should be + * modified directly, they should not be created directly, and + * pointers to them should not be stored beyond the duration of a + * callback. (If the last is changed, we'll need to add reference + * counting.) The time field gives the timestamp at which the data was + * sent. + */ + +#ifndef __GTK_SELECTIONPRIVATE_H__ +#define __GTK_SELECTIONPRIVATE_H__ + +#include "gtkselection.h" + +G_BEGIN_DECLS + +struct _GtkSelectionData +{ + GdkAtom selection; + GdkAtom target; + GdkAtom type; + gint format; + guchar *data; + gint length; + GdkDisplay *display; +}; + +struct _GtkTargetList +{ + GList *list; + guint ref_count; + }; + +typedef struct _GtkTargetPair GtkTargetPair; +struct _GtkTargetPair +{ + GdkAtom target; + guint flags; + guint info; +}; + + +gboolean _gtk_selection_clear (GtkWidget *widget, + GdkEventSelection *event); +gboolean _gtk_selection_request (GtkWidget *widget, + GdkEventSelection *event); +gboolean _gtk_selection_incr_event (GdkWindow *window, + GdkEventProperty *event); +gboolean _gtk_selection_notify (GtkWidget *widget, + GdkEventSelection *event); +gboolean _gtk_selection_property_notify (GtkWidget *widget, + GdkEventProperty *event); + +G_END_DECLS + +#endif /* __GTK_SELECTIONPRIVATE_H__ */ diff --git a/gtk/gtkseparator.c b/gtk/gtkseparator.c index 025b80f9bc..b48535f7ac 100644 --- a/gtk/gtkseparator.c +++ b/gtk/gtkseparator.c @@ -125,6 +125,7 @@ gtk_separator_set_property (GObject *object, { case PROP_ORIENTATION: private->orientation = g_value_get_enum (value); + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (object)); gtk_widget_queue_resize (GTK_WIDGET (object)); break; default: @@ -161,12 +162,17 @@ gtk_separator_get_preferred_size (GtkWidget *widget, { GtkSeparator *separator = GTK_SEPARATOR (widget); GtkSeparatorPrivate *private = separator->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder border; gboolean wide_sep; gint sep_width; gint sep_height; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_border (context, state, &border); + gtk_widget_style_get (widget, "wide-separators", &wide_sep, "separator-width", &sep_width, @@ -179,11 +185,11 @@ gtk_separator_get_preferred_size (GtkWidget *widget, } else if (orientation == GTK_ORIENTATION_VERTICAL) { - *minimum = *natural = wide_sep ? sep_height : style->ythickness; + *minimum = *natural = wide_sep ? sep_height : border.top; } else { - *minimum = *natural = wide_sep ? sep_width : style->xthickness; + *minimum = *natural = wide_sep ? sep_width : border.left; } } @@ -209,15 +215,16 @@ gtk_separator_draw (GtkWidget *widget, { GtkSeparator *separator = GTK_SEPARATOR (widget); GtkSeparatorPrivate *private = separator->priv; - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; + GtkBorder padding; GdkWindow *window; gboolean wide_separators; gint separator_width; gint separator_height; int width, height; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); gtk_widget_style_get (widget, "wide-separators", &wide_separators, "separator-width", &separator_width, @@ -225,39 +232,36 @@ gtk_separator_draw (GtkWidget *widget, NULL); window = gtk_widget_get_window (widget); - state = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); + gtk_style_context_get_padding (context, state, &padding); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + if (private->orientation == GTK_ORIENTATION_HORIZONTAL) { if (wide_separators) - gtk_paint_box (style, cr, - gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT, - widget, "hseparator", - 0, (height - separator_height) / 2, - width, separator_height); + gtk_render_frame (context, cr, + 0, (height - separator_height) / 2, + width, separator_height); else - gtk_paint_hline (style, cr, - gtk_widget_get_state (widget), - widget, "hseparator", - 0, width - 1, - (height - style->ythickness) / 2); + gtk_render_line (context, cr, + 0, (height - padding.top) / 2, + width - 1, (height - padding.top) / 2); } else { if (wide_separators) - gtk_paint_box (style, cr, - gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT, - widget, "vseparator", - (width - separator_width) / 2, 0, - separator_width, height); + gtk_render_frame (context, cr, + (width - separator_width) / 2, 0, + separator_width, height); else - gtk_paint_vline (style, cr, - gtk_widget_get_state (widget), - widget, "vseparator", - 0, height - 1, - (width - style->xthickness) / 2); + gtk_render_line (context, cr, + (width - padding.left) / 2, 0, + (width - padding.left) / 2, height - 1); } return FALSE; diff --git a/gtk/gtkseparatortoolitem.c b/gtk/gtkseparatortoolitem.c index 1d81d3b7ae..be45120cca 100644 --- a/gtk/gtkseparatortoolitem.c +++ b/gtk/gtkseparatortoolitem.c @@ -302,8 +302,6 @@ gtk_separator_tool_item_realize (GtkWidget *widget) priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, widget); - - gtk_widget_style_attach (widget); } static void diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index f84bc9b283..5d17d5fccf 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -24,14 +24,14 @@ #include #include "gtkmodules.h" -#include "gtksettings.h" +#include "gtksettingsprivate.h" #include "gtkrc.h" #include "gtkintl.h" #include "gtkwidget.h" -#include "gtktypeutils.h" #include "gtkprivate.h" #include "gtkcssprovider.h" #include "gtksymboliccolor.h" +#include "gtktypebuiltins.h" #include "gtkversion.h" #ifdef GDK_WINDOWING_X11 @@ -84,8 +84,16 @@ #define DEFAULT_TIMEOUT_REPEAT 20 #define DEFAULT_TIMEOUT_EXPAND 500 +typedef struct _GtkSettingsPropertyValue GtkSettingsPropertyValue; typedef struct _GtkSettingsValuePrivate GtkSettingsValuePrivate; +struct _GtkSettingsPrivate +{ + GData *queued_settings; /* of type GtkSettingsValue* */ + GtkSettingsPropertyValue *property_values; + GdkScreen *screen; +}; + typedef enum { GTK_SETTINGS_SOURCE_DEFAULT, @@ -184,20 +192,20 @@ enum { /* --- prototypes --- */ static void gtk_settings_provider_iface_init (GtkStyleProviderIface *iface); -static void gtk_settings_finalize (GObject *object); -static void gtk_settings_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec); -static void gtk_settings_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_settings_notify (GObject *object, - GParamSpec *pspec); -static guint settings_install_property_parser (GtkSettingsClass *class, - GParamSpec *pspec, - GtkRcPropertyParser parser); +static void gtk_settings_finalize (GObject *object); +static void gtk_settings_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); +static void gtk_settings_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_settings_notify (GObject *object, + GParamSpec *pspec); +static guint settings_install_property_parser (GtkSettingsClass *class, + GParamSpec *pspec, + GtkRcPropertyParser parser); static void settings_update_double_click (GtkSettings *settings); static void settings_update_modules (GtkSettings *settings); @@ -210,9 +218,9 @@ static gboolean settings_update_fontconfig (GtkSettings *setting static void settings_update_color_scheme (GtkSettings *settings); static void settings_update_theme (GtkSettings *settings); -static void merge_color_scheme (GtkSettings *settings, - const GValue *value, - GtkSettingsSource source); +static void merge_color_scheme (GtkSettings *settings, + const GValue *value, + GtkSettingsSource source); static gchar *get_color_scheme (GtkSettings *settings); static GHashTable *get_color_hash (GtkSettings *settings); @@ -222,9 +230,9 @@ static const gchar default_color_palette[] = "lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90"; /* --- variables --- */ -static GQuark quark_property_parser = 0; +static GQuark quark_property_parser = 0; static GSList *object_list = NULL; -static guint class_n_properties = 0; +static guint class_n_properties = 0; G_DEFINE_TYPE_EXTENDED (GtkSettings, gtk_settings, G_TYPE_OBJECT, 0, @@ -235,10 +243,16 @@ G_DEFINE_TYPE_EXTENDED (GtkSettings, gtk_settings, G_TYPE_OBJECT, 0, static void gtk_settings_init (GtkSettings *settings) { + GtkSettingsPrivate *priv; GParamSpec **pspecs, **p; guint i = 0; - - g_datalist_init (&settings->queued_settings); + + priv = G_TYPE_INSTANCE_GET_PRIVATE (settings, + GTK_TYPE_SETTINGS, + GtkSettingsPrivate); + + settings->priv = priv; + g_datalist_init (&priv->queued_settings); object_list = g_slist_prepend (object_list, settings); /* build up property array for all yet existing properties and queue @@ -249,7 +263,7 @@ gtk_settings_init (GtkSettings *settings) for (p = pspecs; *p; p++) if ((*p)->owner_type == G_OBJECT_TYPE (settings)) i++; - settings->property_values = g_new0 (GtkSettingsPropertyValue, i); + priv->property_values = g_new0 (GtkSettingsPropertyValue, i); i = 0; g_object_freeze_notify (G_OBJECT (settings)); for (p = pspecs; *p; p++) @@ -257,11 +271,11 @@ gtk_settings_init (GtkSettings *settings) GParamSpec *pspec = *p; if (pspec->owner_type != G_OBJECT_TYPE (settings)) - continue; - g_value_init (&settings->property_values[i].value, G_PARAM_SPEC_VALUE_TYPE (pspec)); - g_param_value_set_default (pspec, &settings->property_values[i].value); + continue; + g_value_init (&priv->property_values[i].value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + g_param_value_set_default (pspec, &priv->property_values[i].value); g_object_notify (G_OBJECT (settings), pspec->name); - settings->property_values[i].source = GTK_SETTINGS_SOURCE_DEFAULT; + priv->property_values[i].source = GTK_SETTINGS_SOURCE_DEFAULT; i++; } g_object_thaw_notify (G_OBJECT (settings)); @@ -273,7 +287,7 @@ gtk_settings_class_init (GtkSettingsClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); guint result; - + gobject_class->finalize = gtk_settings_finalize; gobject_class->get_property = gtk_settings_get_property; gobject_class->set_property = gtk_settings_set_property; @@ -300,18 +314,18 @@ gtk_settings_class_init (GtkSettingsClass *class) /** * GtkSettings:gtk-cursor-blink: * - * Whether the cursor should blink. + * Whether the cursor should blink. * - * Also see the #GtkSettings:gtk-cursor-blink-timeout setting, + * Also see the #GtkSettings:gtk-cursor-blink-timeout setting, * which allows more flexible control over cursor blinking. */ result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-cursor-blink", - P_("Cursor Blink"), - P_("Whether the cursor should blink"), - TRUE, - GTK_PARAM_READWRITE), - NULL); + P_("Cursor Blink"), + P_("Whether the cursor should blink"), + TRUE, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_CURSOR_BLINK); result = settings_install_property_parser (class, g_param_spec_int ("gtk-cursor-blink-time", @@ -321,7 +335,7 @@ gtk_settings_class_init (GtkSettingsClass *class) GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_CURSOR_BLINK_TIME); - + /** * GtkSettings:gtk-cursor-blink-timeout: * @@ -329,7 +343,7 @@ gtk_settings_class_init (GtkSettingsClass *class) * The timer is reset after each user interaction. * * Setting this to zero has the same effect as setting - * #GtkSettings:gtk-cursor-blink to %FALSE. + * #GtkSettings:gtk-cursor-blink to %FALSE. * * Since: 2.12 */ @@ -343,47 +357,47 @@ gtk_settings_class_init (GtkSettingsClass *class) g_assert (result == PROP_CURSOR_BLINK_TIMEOUT); result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-split-cursor", - P_("Split Cursor"), - P_("Whether two cursors should be displayed for mixed left-to-right and right-to-left text"), - TRUE, - GTK_PARAM_READWRITE), + P_("Split Cursor"), + P_("Whether two cursors should be displayed for mixed left-to-right and right-to-left text"), + TRUE, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_SPLIT_CURSOR); result = settings_install_property_parser (class, g_param_spec_string ("gtk-theme-name", - P_("Theme Name"), - P_("Name of theme RC file to load"), - "Raleigh", - GTK_PARAM_READWRITE), + P_("Theme Name"), + P_("Name of theme RC file to load"), + "Raleigh", + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_THEME_NAME); result = settings_install_property_parser (class, g_param_spec_string ("gtk-icon-theme-name", - P_("Icon Theme Name"), - P_("Name of icon theme to use"), - "hicolor", - GTK_PARAM_READWRITE), + P_("Icon Theme Name"), + P_("Name of icon theme to use"), + "hicolor", + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ICON_THEME_NAME); result = settings_install_property_parser (class, g_param_spec_string ("gtk-fallback-icon-theme", - P_("Fallback Icon Theme Name"), - P_("Name of a icon theme to fall back to"), - NULL, - GTK_PARAM_READWRITE), + P_("Fallback Icon Theme Name"), + P_("Name of a icon theme to fall back to"), + NULL, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_FALLBACK_ICON_THEME); - + result = settings_install_property_parser (class, g_param_spec_string ("gtk-key-theme-name", - P_("Key Theme Name"), - P_("Name of key theme RC file to load"), - DEFAULT_KEY_THEME, - GTK_PARAM_READWRITE), + P_("Key Theme Name"), + P_("Name of key theme RC file to load"), + DEFAULT_KEY_THEME, + GTK_PARAM_READWRITE), NULL); - g_assert (result == PROP_KEY_THEME_NAME); + g_assert (result == PROP_KEY_THEME_NAME); result = settings_install_property_parser (class, g_param_spec_string ("gtk-menu-bar-accel", @@ -395,20 +409,20 @@ gtk_settings_class_init (GtkSettingsClass *class) g_assert (result == PROP_MENU_BAR_ACCEL); result = settings_install_property_parser (class, - g_param_spec_int ("gtk-dnd-drag-threshold", - P_("Drag threshold"), - P_("Number of pixels the cursor can move before dragging"), - 1, G_MAXINT, 8, + g_param_spec_int ("gtk-dnd-drag-threshold", + P_("Drag threshold"), + P_("Number of pixels the cursor can move before dragging"), + 1, G_MAXINT, 8, GTK_PARAM_READWRITE), - NULL); + NULL); g_assert (result == PROP_DND_DRAG_THRESHOLD); result = settings_install_property_parser (class, g_param_spec_string ("gtk-font-name", - P_("Font Name"), - P_("Name of default font to use"), - "Sans 10", - GTK_PARAM_READWRITE), + P_("Font Name"), + P_("Name of default font to use"), + "Sans 10", + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_FONT_NAME); @@ -420,107 +434,107 @@ gtk_settings_class_init (GtkSettingsClass *class) * * size-name = width , height * - * E.g. "gtk-menu=16,16:gtk-button=20,20:gtk-dialog=48,48". - * GTK+ itself use the following named icon sizes: gtk-menu, - * gtk-button, gtk-small-toolbar, gtk-large-toolbar, gtk-dnd, - * gtk-dialog. Applications can register their own named icon + * E.g. "gtk-menu=16,16:gtk-button=20,20:gtk-dialog=48,48". + * GTK+ itself use the following named icon sizes: gtk-menu, + * gtk-button, gtk-small-toolbar, gtk-large-toolbar, gtk-dnd, + * gtk-dialog. Applications can register their own named icon * sizes with gtk_icon_size_register(). */ result = settings_install_property_parser (class, g_param_spec_string ("gtk-icon-sizes", - P_("Icon Sizes"), - P_("List of icon sizes (gtk-menu=16,16:gtk-button=20,20..."), - NULL, - GTK_PARAM_READWRITE), + P_("Icon Sizes"), + P_("List of icon sizes (gtk-menu=16,16:gtk-button=20,20..."), + NULL, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ICON_SIZES); result = settings_install_property_parser (class, g_param_spec_string ("gtk-modules", - P_("GTK Modules"), - P_("List of currently active GTK modules"), - NULL, - GTK_PARAM_READWRITE), + P_("GTK Modules"), + P_("List of currently active GTK modules"), + NULL, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_MODULES); #ifdef GDK_WINDOWING_X11 result = settings_install_property_parser (class, - g_param_spec_int ("gtk-xft-antialias", - P_("Xft Antialias"), - P_("Whether to antialias Xft fonts; 0=no, 1=yes, -1=default"), - -1, 1, -1, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_int ("gtk-xft-antialias", + P_("Xft Antialias"), + P_("Whether to antialias Xft fonts; 0=no, 1=yes, -1=default"), + -1, 1, -1, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_XFT_ANTIALIAS); - + result = settings_install_property_parser (class, - g_param_spec_int ("gtk-xft-hinting", - P_("Xft Hinting"), - P_("Whether to hint Xft fonts; 0=no, 1=yes, -1=default"), - -1, 1, -1, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_int ("gtk-xft-hinting", + P_("Xft Hinting"), + P_("Whether to hint Xft fonts; 0=no, 1=yes, -1=default"), + -1, 1, -1, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_XFT_HINTING); - + result = settings_install_property_parser (class, - g_param_spec_string ("gtk-xft-hintstyle", - P_("Xft Hint Style"), - P_("What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull"), - NULL, - GTK_PARAM_READWRITE), + g_param_spec_string ("gtk-xft-hintstyle", + P_("Xft Hint Style"), + P_("What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull"), + NULL, + GTK_PARAM_READWRITE), NULL); - + g_assert (result == PROP_XFT_HINTSTYLE); - + result = settings_install_property_parser (class, - g_param_spec_string ("gtk-xft-rgba", - P_("Xft RGBA"), - P_("Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr"), - NULL, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_string ("gtk-xft-rgba", + P_("Xft RGBA"), + P_("Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr"), + NULL, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_XFT_RGBA); - + result = settings_install_property_parser (class, - g_param_spec_int ("gtk-xft-dpi", - P_("Xft DPI"), - P_("Resolution for Xft, in 1024 * dots/inch. -1 to use default value"), - -1, 1024*1024, -1, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_int ("gtk-xft-dpi", + P_("Xft DPI"), + P_("Resolution for Xft, in 1024 * dots/inch. -1 to use default value"), + -1, 1024*1024, -1, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_XFT_DPI); result = settings_install_property_parser (class, g_param_spec_string ("gtk-cursor-theme-name", - P_("Cursor theme name"), - P_("Name of the cursor theme to use, or NULL to use the default theme"), - NULL, - GTK_PARAM_READWRITE), + P_("Cursor theme name"), + P_("Name of the cursor theme to use, or NULL to use the default theme"), + NULL, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_CURSOR_THEME_NAME); result = settings_install_property_parser (class, - g_param_spec_int ("gtk-cursor-theme-size", - P_("Cursor theme size"), - P_("Size to use for cursors, or 0 to use the default size"), - 0, 128, 0, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_int ("gtk-cursor-theme-size", + P_("Cursor theme size"), + P_("Size to use for cursors, or 0 to use the default size"), + 0, 128, 0, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_CURSOR_THEME_SIZE); #endif /* GDK_WINDOWING_X11 */ result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-alternative-button-order", - P_("Alternative button order"), - P_("Whether buttons in dialogs should use the alternative button order"), - FALSE, - GTK_PARAM_READWRITE), + P_("Alternative button order"), + P_("Whether buttons in dialogs should use the alternative button order"), + FALSE, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ALTERNATIVE_BUTTON_ORDER); @@ -535,58 +549,58 @@ gtk_settings_class_init (GtkSettingsClass *class) */ result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-alternative-sort-arrows", - P_("Alternative sort indicator direction"), - P_("Whether the direction of the sort indicators in list and tree views is inverted compared to the default (where down means ascending)"), - FALSE, - GTK_PARAM_READWRITE), + P_("Alternative sort indicator direction"), + P_("Whether the direction of the sort indicators in list and tree views is inverted compared to the default (where down means ascending)"), + FALSE, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ALTERNATIVE_SORT_ARROWS); result = settings_install_property_parser (class, - g_param_spec_boolean ("gtk-show-input-method-menu", - P_("Show the 'Input Methods' menu"), - P_("Whether the context menus of entries and text views should offer to change the input method"), - TRUE, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_boolean ("gtk-show-input-method-menu", + P_("Show the 'Input Methods' menu"), + P_("Whether the context menus of entries and text views should offer to change the input method"), + TRUE, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_SHOW_INPUT_METHOD_MENU); result = settings_install_property_parser (class, - g_param_spec_boolean ("gtk-show-unicode-menu", - P_("Show the 'Insert Unicode Control Character' menu"), - P_("Whether the context menus of entries and text views should offer to insert control characters"), - TRUE, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_boolean ("gtk-show-unicode-menu", + P_("Show the 'Insert Unicode Control Character' menu"), + P_("Whether the context menus of entries and text views should offer to insert control characters"), + TRUE, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_SHOW_UNICODE_MENU); result = settings_install_property_parser (class, - g_param_spec_int ("gtk-timeout-initial", - P_("Start timeout"), - P_("Starting value for timeouts, when button is pressed"), - 0, G_MAXINT, DEFAULT_TIMEOUT_INITIAL, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-timeout-initial", + P_("Start timeout"), + P_("Starting value for timeouts, when button is pressed"), + 0, G_MAXINT, DEFAULT_TIMEOUT_INITIAL, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TIMEOUT_INITIAL); result = settings_install_property_parser (class, - g_param_spec_int ("gtk-timeout-repeat", - P_("Repeat timeout"), - P_("Repeat value for timeouts, when button is pressed"), - 0, G_MAXINT, DEFAULT_TIMEOUT_REPEAT, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-timeout-repeat", + P_("Repeat timeout"), + P_("Repeat value for timeouts, when button is pressed"), + 0, G_MAXINT, DEFAULT_TIMEOUT_REPEAT, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TIMEOUT_REPEAT); result = settings_install_property_parser (class, - g_param_spec_int ("gtk-timeout-expand", - P_("Expand timeout"), - P_("Expand value for timeouts, when a widget is expanding a new region"), - 0, G_MAXINT, DEFAULT_TIMEOUT_EXPAND, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-timeout-expand", + P_("Expand timeout"), + P_("Expand value for timeouts, when a widget is expanding a new region"), + 0, G_MAXINT, DEFAULT_TIMEOUT_EXPAND, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TIMEOUT_EXPAND); @@ -599,11 +613,11 @@ gtk_settings_class_init (GtkSettingsClass *class) * name2: color2 * ... * - * Color names must be acceptable as identifiers in the + * Color names must be acceptable as identifiers in the * gtkrc syntax, and * color specifications must be in the format accepted by * gdk_color_parse(). - * + * * Note that due to the way the color tables from different sources are * merged, color specifications will be converted to hexadecimal form * when getting this property. @@ -617,12 +631,12 @@ gtk_settings_class_init (GtkSettingsClass *class) * Since: 2.10 */ result = settings_install_property_parser (class, - g_param_spec_string ("gtk-color-scheme", - P_("Color scheme"), - P_("A palette of named colors for use in themes"), - "", - GTK_PARAM_READWRITE), - NULL); + g_param_spec_string ("gtk-color-scheme", + P_("Color scheme"), + P_("A palette of named colors for use in themes"), + "", + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_COLOR_SCHEME); @@ -664,13 +678,13 @@ gtk_settings_class_init (GtkSettingsClass *class) * Since: 2.12 */ result = settings_install_property_parser (class, - g_param_spec_int ("gtk-tooltip-timeout", - P_("Tooltip timeout"), - P_("Timeout before tooltip is shown"), - 0, G_MAXINT, - 500, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-tooltip-timeout", + P_("Tooltip timeout"), + P_("Timeout before tooltip is shown"), + 0, G_MAXINT, + 500, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TOOLTIP_TIMEOUT); @@ -683,20 +697,20 @@ gtk_settings_class_init (GtkSettingsClass *class) * Browse mode is enabled when the mouse pointer moves off an object * where a tooltip was currently being displayed. If the mouse pointer * hits another object before the browse mode timeout expires (see - * #GtkSettings:gtk-tooltip-browse-mode-timeout), it will take the + * #GtkSettings:gtk-tooltip-browse-mode-timeout), it will take the * amount of milliseconds specified by this setting to popup the tooltip * for the new object. * * Since: 2.12 */ result = settings_install_property_parser (class, - g_param_spec_int ("gtk-tooltip-browse-timeout", - P_("Tooltip browse timeout"), - P_("Timeout before tooltip is shown when browse mode is enabled"), - 0, G_MAXINT, - 60, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-tooltip-browse-timeout", + P_("Tooltip browse timeout"), + P_("Timeout before tooltip is shown when browse mode is enabled"), + 0, G_MAXINT, + 60, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TOOLTIP_BROWSE_TIMEOUT); @@ -712,13 +726,13 @@ gtk_settings_class_init (GtkSettingsClass *class) * Since: 2.12 */ result = settings_install_property_parser (class, - g_param_spec_int ("gtk-tooltip-browse-mode-timeout", - P_("Tooltip browse mode timeout"), - P_("Timeout after which browse mode is disabled"), - 0, G_MAXINT, - 500, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-tooltip-browse-mode-timeout", + P_("Tooltip browse mode timeout"), + P_("Timeout after which browse mode is disabled"), + 0, G_MAXINT, + 500, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_TOOLTIP_BROWSE_MODE_TIMEOUT); @@ -783,12 +797,12 @@ gtk_settings_class_init (GtkSettingsClass *class) /** * GtkSettings:color-hash: * - * Holds a hash table representation of the #GtkSettings:gtk-color-scheme - * setting, mapping color names to #GdkColors. + * Holds a hash table representation of the #GtkSettings:gtk-color-scheme + * setting, mapping color names to #GdkColors. * * Since: 2.10 */ - result = settings_install_property_parser (class, + result = settings_install_property_parser (class, g_param_spec_boxed ("color-hash", P_("Color Hash"), P_("A hash table representation of the color scheme."), @@ -797,7 +811,7 @@ gtk_settings_class_init (GtkSettingsClass *class) NULL); g_assert (result == PROP_COLOR_HASH); - result = settings_install_property_parser (class, + result = settings_install_property_parser (class, g_param_spec_string ("gtk-file-chooser-backend", P_("Default file chooser backend"), P_("Name of the GtkFileChooser backend to use by default"), @@ -831,7 +845,7 @@ gtk_settings_class_init (GtkSettingsClass *class) * should contain a %f placeholder, which will get replaced by * the path to the pdf file. The command may also contain a %s * placeholder, which will get replaced by the path to a file - * containing the print settings in the format produced by + * containing the print settings in the format produced by * gtk_print_settings_to_file(). * * The preview application is responsible for removing the pdf file @@ -845,7 +859,7 @@ gtk_settings_class_init (GtkSettingsClass *class) P_("Command to run when displaying a print preview"), GTK_PRINT_PREVIEW_COMMAND, GTK_PARAM_READWRITE), - NULL); + NULL); g_assert (result == PROP_PRINT_PREVIEW_COMMAND); /** @@ -892,31 +906,31 @@ gtk_settings_class_init (GtkSettingsClass *class) * Since: 2.12 */ result = settings_install_property_parser (class, - g_param_spec_int ("gtk-recent-files-limit", - P_("Recent Files Limit"), - P_("Number of recently used files"), - -1, G_MAXINT, - 50, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-recent-files-limit", + P_("Recent Files Limit"), + P_("Number of recently used files"), + -1, G_MAXINT, + 50, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_RECENT_FILES_LIMIT); /** * GtkSettings:gtk-im-module: * - * Which IM (input method) module should be used by default. This is the - * input method that will be used if the user has not explicitly chosen - * another input method from the IM context menu. + * Which IM (input method) module should be used by default. This is the + * input method that will be used if the user has not explicitly chosen + * another input method from the IM context menu. * * See #GtkIMContext and see the #GtkSettings:gtk-show-input-method-menu property. */ result = settings_install_property_parser (class, - g_param_spec_string ("gtk-im-module", - P_("Default IM module"), - P_("Which IM module should be used by default"), - NULL, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_string ("gtk-im-module", + P_("Default IM module"), + P_("Which IM module should be used by default"), + NULL, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_IM_MODULE); /** @@ -930,23 +944,23 @@ gtk_settings_class_init (GtkSettingsClass *class) * Since: 2.14 */ result = settings_install_property_parser (class, - g_param_spec_int ("gtk-recent-files-max-age", - P_("Recent Files Max Age"), - P_("Maximum age of recently used files, in days"), - -1, G_MAXINT, - 30, - GTK_PARAM_READWRITE), - NULL); + g_param_spec_int ("gtk-recent-files-max-age", + P_("Recent Files Max Age"), + P_("Maximum age of recently used files, in days"), + -1, G_MAXINT, + 30, + GTK_PARAM_READWRITE), + NULL); g_assert (result == PROP_RECENT_FILES_MAX_AGE); result = settings_install_property_parser (class, - g_param_spec_uint ("gtk-fontconfig-timestamp", - P_("Fontconfig configuration timestamp"), - P_("Timestamp of current fontconfig configuration"), - 0, G_MAXUINT, 0, - GTK_PARAM_READWRITE), - NULL); - + g_param_spec_uint ("gtk-fontconfig-timestamp", + P_("Fontconfig configuration timestamp"), + P_("Timestamp of current fontconfig configuration"), + 0, G_MAXUINT, 0, + GTK_PARAM_READWRITE), + NULL); + g_assert (result == PROP_FONTCONFIG_TIMESTAMP); /** @@ -954,10 +968,10 @@ gtk_settings_class_init (GtkSettingsClass *class) * * The XDG sound theme to use for event sounds. * - * See the Sound Theme spec + * See the Sound Theme spec * for more information on event sounds and sound themes. * - * GTK+ itself does not support event sounds, you have to use a loadable + * GTK+ itself does not support event sounds, you have to use a loadable * module like the one that comes with libcanberra. * * Since: 2.14 @@ -976,10 +990,10 @@ gtk_settings_class_init (GtkSettingsClass *class) * * Whether to play event sounds as feedback to user input. * - * See the Sound Theme spec + * See the Sound Theme spec * for more information on event sounds and sound themes. * - * GTK+ itself does not support event sounds, you have to use a loadable + * GTK+ itself does not support event sounds, you have to use a loadable * module like the one that comes with libcanberra. * * Since: 2.14 @@ -987,10 +1001,10 @@ gtk_settings_class_init (GtkSettingsClass *class) result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-enable-input-feedback-sounds", /* Translators: this means sounds that are played as feedback to user input */ - P_("Audible Input Feedback"), - P_("Whether to play event sounds as feedback to user input"), - TRUE, - GTK_PARAM_READWRITE), + P_("Audible Input Feedback"), + P_("Whether to play event sounds as feedback to user input"), + TRUE, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ENABLE_INPUT_FEEDBACK_SOUNDS); @@ -999,20 +1013,20 @@ gtk_settings_class_init (GtkSettingsClass *class) * * Whether to play any event sounds at all. * - * See the Sound Theme spec + * See the Sound Theme spec * for more information on event sounds and sound themes. * - * GTK+ itself does not support event sounds, you have to use a loadable + * GTK+ itself does not support event sounds, you have to use a loadable * module like the one that comes with libcanberra. * * Since: 2.14 */ result = settings_install_property_parser (class, g_param_spec_boolean ("gtk-enable-event-sounds", - P_("Enable Event Sounds"), - P_("Whether to play any event sounds at all"), - TRUE, - GTK_PARAM_READWRITE), + P_("Enable Event Sounds"), + P_("Whether to play any event sounds at all"), + TRUE, + GTK_PARAM_READWRITE), NULL); g_assert (result == PROP_ENABLE_EVENT_SOUNDS); @@ -1033,7 +1047,7 @@ gtk_settings_class_init (GtkSettingsClass *class) g_assert (result == PROP_ENABLE_TOOLTIPS); /** - * GtkSettings:toolbar-style: + * GtkSettings:gtk-toolbar-style: * * The size of icons in default toolbars. */ @@ -1048,7 +1062,7 @@ gtk_settings_class_init (GtkSettingsClass *class) g_assert (result == PROP_TOOLBAR_STYLE); /** - * GtkSettings:toolbar-icon-size: + * GtkSettings:gtk-toolbar-icon-size: * * The size of icons in default toolbars. */ @@ -1171,7 +1185,7 @@ gtk_settings_class_init (GtkSettingsClass *class) /** * GtkSettings:gtk-scrolled-window-placement: * - * Where the contents of scrolled windows are located with respect to the + * Where the contents of scrolled windows are located with respect to the * scrollbars, if not overridden by the scrolled window's own placement. * * Since: 2.10 @@ -1252,6 +1266,8 @@ gtk_settings_class_init (GtkSettingsClass *class) GTK_PARAM_READWRITE), gtk_rc_property_parse_enum); g_assert (result == PROP_IM_STATUS_STYLE); + + g_type_class_add_private (class, sizeof (GtkSettingsPrivate)); } static GtkStyleProperties * @@ -1330,17 +1346,16 @@ static void gtk_settings_finalize (GObject *object) { GtkSettings *settings = GTK_SETTINGS (object); + GtkSettingsPrivate *priv = settings->priv; guint i; object_list = g_slist_remove (object_list, settings); - _gtk_rc_context_destroy (settings); - for (i = 0; i < class_n_properties; i++) - g_value_unset (&settings->property_values[i].value); - g_free (settings->property_values); - - g_datalist_clear (&settings->queued_settings); + g_value_unset (&priv->property_values[i].value); + g_free (priv->property_values); + + g_datalist_clear (&priv->queued_settings); G_OBJECT_CLASS (gtk_settings_parent_class)->finalize (object); } @@ -1349,6 +1364,8 @@ static void settings_init_style (GtkSettings *settings) { static GtkCssProvider *css_provider = NULL; + + GdkScreen *screen = settings->priv->screen; GtkCssProvider *default_provider; /* Add provider for user file */ @@ -1369,16 +1386,16 @@ settings_init_style (GtkSettings *settings) g_free (css_path); } - gtk_style_context_add_provider_for_screen (settings->screen, + gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER); default_provider = gtk_css_provider_get_default (); - gtk_style_context_add_provider_for_screen (settings->screen, + gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (default_provider), GTK_STYLE_PROVIDER_PRIORITY_FALLBACK); - gtk_style_context_add_provider_for_screen (settings->screen, + gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (settings), GTK_STYLE_PROVIDER_PRIORITY_SETTINGS); @@ -1406,9 +1423,9 @@ gtk_settings_get_for_screen (GdkScreen *screen) if (!settings) { settings = g_object_new (GTK_TYPE_SETTINGS, NULL); - settings->screen = screen; - g_object_set_data_full (G_OBJECT (screen), I_("gtk-settings"), - settings, g_object_unref); + settings->priv->screen = screen; + g_object_set_data_full (G_OBJECT (screen), I_("gtk-settings"), + settings, g_object_unref); settings_init_style (settings); settings_update_double_click (settings); @@ -1419,13 +1436,13 @@ gtk_settings_get_for_screen (GdkScreen *screen) #endif settings_update_color_scheme (settings); } - + return settings; } /** * gtk_settings_get_default: - * + * * Gets the #GtkSettings object for the default GDK screen, creating * it if necessary. See gtk_settings_get_for_screen(). * @@ -1445,26 +1462,28 @@ gtk_settings_get_default (void) static void gtk_settings_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) + guint property_id, + const GValue *value, + GParamSpec *pspec) { GtkSettings *settings = GTK_SETTINGS (object); + GtkSettingsPrivate *priv = settings->priv; + + g_value_copy (value, &priv->property_values[property_id - 1].value); + priv->property_values[property_id - 1].source = GTK_SETTINGS_SOURCE_APPLICATION; - g_value_copy (value, &settings->property_values[property_id - 1].value); - settings->property_values[property_id - 1].source = GTK_SETTINGS_SOURCE_APPLICATION; - if (pspec->param_id == PROP_COLOR_SCHEME) merge_color_scheme (settings, value, GTK_SETTINGS_SOURCE_APPLICATION); } static void gtk_settings_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) + guint property_id, + GValue *value, + GParamSpec *pspec) { GtkSettings *settings = GTK_SETTINGS (object); + GtkSettingsPrivate *priv = settings->priv; GType value_type = G_VALUE_TYPE (value); GType fundamental_type = G_TYPE_FUNDAMENTAL (value_type); @@ -1489,10 +1508,10 @@ gtk_settings_get_property (GObject *object, g_value_type_transformable (G_TYPE_STRING, G_VALUE_TYPE (value)) || g_value_type_transformable (GDK_TYPE_COLOR, G_VALUE_TYPE (value))) { - if (settings->property_values[property_id - 1].source == GTK_SETTINGS_SOURCE_APPLICATION || - !gdk_screen_get_setting (settings->screen, pspec->name, value)) - g_value_copy (&settings->property_values[property_id - 1].value, value); - else + if (priv->property_values[property_id - 1].source == GTK_SETTINGS_SOURCE_APPLICATION || + !gdk_screen_get_setting (priv->screen, pspec->name, value)) + g_value_copy (&priv->property_values[property_id - 1].value, value); + else g_param_value_validate (pspec, value); } else @@ -1500,20 +1519,20 @@ gtk_settings_get_property (GObject *object, GValue val = { 0, }; /* Try to get xsetting as a string and parse it. */ - + g_value_init (&val, G_TYPE_STRING); - if (settings->property_values[property_id - 1].source == GTK_SETTINGS_SOURCE_APPLICATION || - !gdk_screen_get_setting (settings->screen, pspec->name, &val)) + if (priv->property_values[property_id - 1].source == GTK_SETTINGS_SOURCE_APPLICATION || + !gdk_screen_get_setting (priv->screen, pspec->name, &val)) { - g_value_copy (&settings->property_values[property_id - 1].value, value); + g_value_copy (&priv->property_values[property_id - 1].value, value); } else { GValue tmp_value = { 0, }; GValue gstring_value = { 0, }; GtkRcPropertyParser parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser); - + g_value_init (&gstring_value, G_TYPE_GSTRING); g_value_take_boxed (&gstring_value, g_string_new (g_value_get_string (&val))); @@ -1528,7 +1547,7 @@ gtk_settings_get_property (GObject *object, } else { - g_value_copy (&settings->property_values[property_id - 1].value, value); + g_value_copy (&priv->property_values[property_id - 1].value, value); } g_value_unset (&gstring_value); @@ -1541,12 +1560,13 @@ gtk_settings_get_property (GObject *object, static void gtk_settings_notify (GObject *object, - GParamSpec *pspec) + GParamSpec *pspec) { GtkSettings *settings = GTK_SETTINGS (object); + GtkSettingsPrivate *priv = settings->priv; guint property_id = pspec->param_id; - if (settings->screen == NULL) /* initialization */ + if (priv->screen == NULL) /* initialization */ return; switch (property_id) @@ -1560,7 +1580,7 @@ gtk_settings_notify (GObject *object, break; case PROP_COLOR_SCHEME: settings_update_color_scheme (settings); - gtk_style_context_reset_widgets (settings->screen); + gtk_style_context_reset_widgets (priv->screen); break; case PROP_THEME_NAME: settings_update_theme (settings); @@ -1572,18 +1592,18 @@ gtk_settings_notify (GObject *object, * widgets with gtk_widget_style_set(), and also causes more * recomputation than necessary. */ - gtk_style_context_reset_widgets (settings->screen); + gtk_style_context_reset_widgets (priv->screen); break; case PROP_XFT_ANTIALIAS: case PROP_XFT_HINTING: case PROP_XFT_HINTSTYLE: case PROP_XFT_RGBA: settings_update_font_options (settings); - gtk_style_context_reset_widgets (settings->screen); + gtk_style_context_reset_widgets (priv->screen); break; case PROP_FONTCONFIG_TIMESTAMP: if (settings_update_fontconfig (settings)) - gtk_style_context_reset_widgets (settings->screen); + gtk_style_context_reset_widgets (priv->screen); break; case PROP_CURSOR_THEME_NAME: case PROP_CURSOR_THEME_SIZE: @@ -1595,9 +1615,9 @@ gtk_settings_notify (GObject *object, gboolean _gtk_settings_parse_convert (GtkRcPropertyParser parser, - const GValue *src_value, - GParamSpec *pspec, - GValue *dest_value) + const GValue *src_value, + GParamSpec *pspec, + GValue *dest_value) { gboolean success = FALSE; @@ -1607,52 +1627,52 @@ _gtk_settings_parse_convert (GtkRcPropertyParser parser, { GString *gstring; gboolean free_gstring = TRUE; - + if (G_VALUE_HOLDS (src_value, G_TYPE_GSTRING)) - { - gstring = g_value_get_boxed (src_value); - free_gstring = FALSE; - } + { + gstring = g_value_get_boxed (src_value); + free_gstring = FALSE; + } else if (G_VALUE_HOLDS_LONG (src_value)) - { - gstring = g_string_new (NULL); - g_string_append_printf (gstring, "%ld", g_value_get_long (src_value)); - } + { + gstring = g_string_new (NULL); + g_string_append_printf (gstring, "%ld", g_value_get_long (src_value)); + } else if (G_VALUE_HOLDS_DOUBLE (src_value)) - { - gstring = g_string_new (NULL); - g_string_append_printf (gstring, "%f", g_value_get_double (src_value)); - } + { + gstring = g_string_new (NULL); + g_string_append_printf (gstring, "%f", g_value_get_double (src_value)); + } else if (G_VALUE_HOLDS_STRING (src_value)) - { - gchar *tstr = g_strescape (g_value_get_string (src_value), NULL); - - gstring = g_string_new ("\""); - g_string_append (gstring, tstr); - g_string_append_c (gstring, '\"'); - g_free (tstr); - } + { + gchar *tstr = g_strescape (g_value_get_string (src_value), NULL); + + gstring = g_string_new ("\""); + g_string_append (gstring, tstr); + g_string_append_c (gstring, '\"'); + g_free (tstr); + } else - { - g_return_val_if_fail (G_VALUE_HOLDS (src_value, G_TYPE_GSTRING), FALSE); - gstring = NULL; /* silence compiler */ - } + { + g_return_val_if_fail (G_VALUE_HOLDS (src_value, G_TYPE_GSTRING), FALSE); + gstring = NULL; /* silence compiler */ + } success = (parser (pspec, gstring, dest_value) && - !g_param_value_validate (pspec, dest_value)); + !g_param_value_validate (pspec, dest_value)); if (free_gstring) - g_string_free (gstring, TRUE); + g_string_free (gstring, TRUE); } else if (G_VALUE_HOLDS (src_value, G_TYPE_GSTRING)) { if (G_VALUE_HOLDS (dest_value, G_TYPE_STRING)) - { - GString *gstring = g_value_get_boxed (src_value); + { + GString *gstring = g_value_get_boxed (src_value); - g_value_set_string (dest_value, gstring ? gstring->str : NULL); - success = !g_param_value_validate (pspec, dest_value); - } + g_value_set_string (dest_value, gstring ? gstring->str : NULL); + success = !g_param_value_validate (pspec, dest_value); + } } else if (g_value_type_transformable (G_VALUE_TYPE (src_value), G_VALUE_TYPE (dest_value))) success = g_param_value_convert (pspec, src_value, dest_value, TRUE); @@ -1661,38 +1681,39 @@ _gtk_settings_parse_convert (GtkRcPropertyParser parser, } static void -apply_queued_setting (GtkSettings *data, - GParamSpec *pspec, - GtkSettingsValuePrivate *qvalue) +apply_queued_setting (GtkSettings *settings, + GParamSpec *pspec, + GtkSettingsValuePrivate *qvalue) { + GtkSettingsPrivate *priv = settings->priv; GValue tmp_value = { 0, }; GtkRcPropertyParser parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser); g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec)); if (_gtk_settings_parse_convert (parser, &qvalue->public.value, - pspec, &tmp_value)) + pspec, &tmp_value)) { - if (pspec->param_id == PROP_COLOR_SCHEME) - merge_color_scheme (data, &tmp_value, qvalue->source); + if (pspec->param_id == PROP_COLOR_SCHEME) + merge_color_scheme (settings, &tmp_value, qvalue->source); - if (data->property_values[pspec->param_id - 1].source <= qvalue->source) - { - g_value_copy (&tmp_value, &data->property_values[pspec->param_id - 1].value); - data->property_values[pspec->param_id - 1].source = qvalue->source; - g_object_notify (G_OBJECT (data), g_param_spec_get_name (pspec)); - } + if (priv->property_values[pspec->param_id - 1].source <= qvalue->source) + { + g_value_copy (&tmp_value, &priv->property_values[pspec->param_id - 1].value); + priv->property_values[pspec->param_id - 1].source = qvalue->source; + g_object_notify (G_OBJECT (settings), g_param_spec_get_name (pspec)); + } } else { gchar *debug = g_strdup_value_contents (&qvalue->public.value); - + g_message ("%s: failed to retrieve property `%s' of type `%s' from rc file value \"%s\" of type `%s'", - qvalue->public.origin ? qvalue->public.origin : "(for origin information, set GTK_DEBUG)", - pspec->name, - g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), - debug, - G_VALUE_TYPE_NAME (&tmp_value)); + qvalue->public.origin ? qvalue->public.origin : "(for origin information, set GTK_DEBUG)", + pspec->name, + g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), + debug, + G_VALUE_TYPE_NAME (&tmp_value)); g_free (debug); } g_value_unset (&tmp_value); @@ -1700,8 +1721,8 @@ apply_queued_setting (GtkSettings *data, static guint settings_install_property_parser (GtkSettingsClass *class, - GParamSpec *pspec, - GtkRcPropertyParser parser) + GParamSpec *pspec, + GtkRcPropertyParser parser) { GSList *node, *next; @@ -1736,10 +1757,10 @@ settings_install_property_parser (GtkSettingsClass *class, if (g_object_class_find_property (G_OBJECT_CLASS (class), pspec->name)) { g_warning (G_STRLOC ": an rc-data property \"%s\" already exists", - pspec->name); + pspec->name); return 0; } - + for (node = object_list; node; node = node->next) g_object_freeze_notify (node->data); @@ -1749,18 +1770,19 @@ settings_install_property_parser (GtkSettingsClass *class, for (node = object_list; node; node = node->next) { GtkSettings *settings = node->data; + GtkSettingsPrivate *priv = settings->priv; GtkSettingsValuePrivate *qvalue; - - settings->property_values = g_renew (GtkSettingsPropertyValue, settings->property_values, class_n_properties); - settings->property_values[class_n_properties - 1].value.g_type = 0; - g_value_init (&settings->property_values[class_n_properties - 1].value, G_PARAM_SPEC_VALUE_TYPE (pspec)); - g_param_value_set_default (pspec, &settings->property_values[class_n_properties - 1].value); - settings->property_values[class_n_properties - 1].source = GTK_SETTINGS_SOURCE_DEFAULT; + + priv->property_values = g_renew (GtkSettingsPropertyValue, priv->property_values, class_n_properties); + priv->property_values[class_n_properties - 1].value.g_type = 0; + g_value_init (&priv->property_values[class_n_properties - 1].value, G_PARAM_SPEC_VALUE_TYPE (pspec)); + g_param_value_set_default (pspec, &priv->property_values[class_n_properties - 1].value); + priv->property_values[class_n_properties - 1].source = GTK_SETTINGS_SOURCE_DEFAULT; g_object_notify (G_OBJECT (settings), pspec->name); - - qvalue = g_datalist_get_data (&settings->queued_settings, pspec->name); + + qvalue = g_datalist_get_data (&priv->queued_settings, pspec->name); if (qvalue) - apply_queued_setting (settings, pspec, qvalue); + apply_queued_setting (settings, pspec, qvalue); } for (node = object_list; node; node = next) @@ -1808,7 +1830,7 @@ gtk_settings_install_property (GParamSpec *pspec) void gtk_settings_install_property_parser (GParamSpec *pspec, - GtkRcPropertyParser parser) + GtkRcPropertyParser parser) { static GtkSettingsClass *klass = NULL; @@ -1825,7 +1847,7 @@ static void free_value (gpointer data) { GtkSettingsValuePrivate *qvalue = data; - + g_value_unset (&qvalue->public.value); g_free (qvalue->public.origin); g_slice_free (GtkSettingsValuePrivate, qvalue); @@ -1833,10 +1855,11 @@ free_value (gpointer data) static void gtk_settings_set_property_value_internal (GtkSettings *settings, - const gchar *prop_name, - const GtkSettingsValue *new_value, - GtkSettingsSource source) + const gchar *prop_name, + const GtkSettingsValue *new_value, + GtkSettingsSource source) { + GtkSettingsPrivate *priv = settings->priv; GtkSettingsValuePrivate *qvalue; GParamSpec *pspec; gchar *name; @@ -1850,17 +1873,17 @@ gtk_settings_set_property_value_internal (GtkSettings *settings, g_warning (G_STRLOC ": value type invalid"); return; } - + name = g_strdup (prop_name); g_strcanon (name, G_CSET_DIGITS "-" G_CSET_a_2_z G_CSET_A_2_Z, '-'); name_quark = g_quark_from_string (name); g_free (name); - qvalue = g_datalist_id_get_data (&settings->queued_settings, name_quark); + qvalue = g_datalist_id_get_data (&priv->queued_settings, name_quark); if (!qvalue) { qvalue = g_slice_new0 (GtkSettingsValuePrivate); - g_datalist_id_set_data_full (&settings->queued_settings, name_quark, qvalue, free_value); + g_datalist_id_set_data_full (&priv->queued_settings, name_quark, qvalue, free_value); } else { @@ -1878,35 +1901,35 @@ gtk_settings_set_property_value_internal (GtkSettings *settings, void gtk_settings_set_property_value (GtkSettings *settings, - const gchar *prop_name, - const GtkSettingsValue *new_value) + const gchar *prop_name, + const GtkSettingsValue *new_value) { g_return_if_fail (GTK_SETTINGS (settings)); g_return_if_fail (prop_name != NULL); g_return_if_fail (new_value != NULL); gtk_settings_set_property_value_internal (settings, prop_name, new_value, - GTK_SETTINGS_SOURCE_APPLICATION); + GTK_SETTINGS_SOURCE_APPLICATION); } void _gtk_settings_set_property_value_from_rc (GtkSettings *settings, - const gchar *prop_name, - const GtkSettingsValue *new_value) + const gchar *prop_name, + const GtkSettingsValue *new_value) { g_return_if_fail (GTK_SETTINGS (settings)); g_return_if_fail (prop_name != NULL); g_return_if_fail (new_value != NULL); gtk_settings_set_property_value_internal (settings, prop_name, new_value, - GTK_SETTINGS_SOURCE_RC_FILE); + GTK_SETTINGS_SOURCE_RC_FILE); } void gtk_settings_set_string_property (GtkSettings *settings, - const gchar *name, - const gchar *v_string, - const gchar *origin) + const gchar *name, + const gchar *v_string, + const gchar *origin) { GtkSettingsValue svalue = { NULL, { 0, }, }; @@ -1923,12 +1946,12 @@ gtk_settings_set_string_property (GtkSettings *settings, void gtk_settings_set_long_property (GtkSettings *settings, - const gchar *name, - glong v_long, - const gchar *origin) + const gchar *name, + glong v_long, + const gchar *origin) { GtkSettingsValue svalue = { NULL, { 0, }, }; - + g_return_if_fail (GTK_SETTINGS (settings)); g_return_if_fail (name != NULL); @@ -1941,9 +1964,9 @@ gtk_settings_set_long_property (GtkSettings *settings, void gtk_settings_set_double_property (GtkSettings *settings, - const gchar *name, - gdouble v_double, - const gchar *origin) + const gchar *name, + gdouble v_double, + const gchar *origin) { GtkSettingsValue svalue = { NULL, { 0, }, }; @@ -1962,21 +1985,21 @@ gtk_settings_set_double_property (GtkSettings *settings, * @pspec: a #GParamSpec * @gstring: the #GString to be parsed * @property_value: a #GValue which must hold #GdkColor values. - * + * * A #GtkRcPropertyParser for use with gtk_settings_install_property_parser() * or gtk_widget_class_install_style_property_parser() which parses a - * color given either by its name or in the form + * color given either by its name or in the form * { red, green, blue } where %red, %green and * %blue are integers between 0 and 65535 or floating-point numbers * between 0 and 1. - * + * * Return value: %TRUE if @gstring could be parsed and @property_value * has been set to the resulting #GdkColor. **/ gboolean gtk_rc_property_parse_color (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value) + const GString *gstring, + GValue *property_value) { GdkColor color = { 0, 0, 0, 0, }; GScanner *scanner; @@ -2005,7 +2028,7 @@ gtk_rc_property_parse_color (const GParamSpec *pspec, * @pspec: a #GParamSpec * @gstring: the #GString to be parsed * @property_value: a #GValue which must hold enum values. - * + * * A #GtkRcPropertyParser for use with gtk_settings_install_property_parser() * or gtk_widget_class_install_style_property_parser() which parses a single * enumeration value. @@ -2013,14 +2036,14 @@ gtk_rc_property_parse_color (const GParamSpec *pspec, * The enumeration value can be specified by its name, its nickname or * its numeric value. For consistency with flags parsing, the value * may be surrounded by parentheses. - * + * * Return value: %TRUE if @gstring could be parsed and @property_value * has been set to the resulting #GEnumValue. **/ gboolean gtk_rc_property_parse_enum (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value) + const GString *gstring, + GValue *property_value) { gboolean need_closing_brace = FALSE, success = FALSE; GScanner *scanner; @@ -2044,15 +2067,15 @@ gtk_rc_property_parse_enum (const GParamSpec *pspec, if (scanner->token == G_TOKEN_IDENTIFIER) { GEnumClass *class = G_PARAM_SPEC_ENUM (pspec)->enum_class; - + enum_value = g_enum_get_value_by_name (class, scanner->value.v_identifier); if (!enum_value) - enum_value = g_enum_get_value_by_nick (class, scanner->value.v_identifier); + enum_value = g_enum_get_value_by_nick (class, scanner->value.v_identifier); if (enum_value) - { - g_value_set_enum (property_value, enum_value->value); - success = TRUE; - } + { + g_value_set_enum (property_value, enum_value->value); + success = TRUE; + } } else if (scanner->token == G_TOKEN_INT) { @@ -2071,8 +2094,8 @@ gtk_rc_property_parse_enum (const GParamSpec *pspec, static guint parse_flags_value (GScanner *scanner, - GFlagsClass *class, - guint *number) + GFlagsClass *class, + guint *number) { g_scanner_get_next_token (scanner); if (scanner->token == G_TOKEN_IDENTIFIER) @@ -2081,12 +2104,12 @@ parse_flags_value (GScanner *scanner, flags_value = g_flags_get_value_by_name (class, scanner->value.v_identifier); if (!flags_value) - flags_value = g_flags_get_value_by_nick (class, scanner->value.v_identifier); + flags_value = g_flags_get_value_by_nick (class, scanner->value.v_identifier); if (flags_value) - { - *number |= flags_value->value; - return G_TOKEN_NONE; - } + { + *number |= flags_value->value; + return G_TOKEN_NONE; + } } else if (scanner->token == G_TOKEN_INT) { @@ -2101,21 +2124,21 @@ parse_flags_value (GScanner *scanner, * @pspec: a #GParamSpec * @gstring: the #GString to be parsed * @property_value: a #GValue which must hold flags values. - * + * * A #GtkRcPropertyParser for use with gtk_settings_install_property_parser() - * or gtk_widget_class_install_style_property_parser() which parses flags. - * + * or gtk_widget_class_install_style_property_parser() which parses flags. + * * Flags can be specified by their name, their nickname or - * numerically. Multiple flags can be specified in the form + * numerically. Multiple flags can be specified in the form * "( flag1 | flag2 | ... )". - * + * * Return value: %TRUE if @gstring could be parsed and @property_value * has been set to the resulting flags value. **/ gboolean gtk_rc_property_parse_flags (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value) + const GString *gstring, + GValue *property_value) { GFlagsClass *class; gboolean success = FALSE; @@ -2133,15 +2156,15 @@ gtk_rc_property_parse_flags (const GParamSpec *pspec, scanner->next_token == G_TOKEN_INT) { guint token, flags_value = 0; - + token = parse_flags_value (scanner, class, &flags_value); if (token == G_TOKEN_NONE && g_scanner_peek_next_token (scanner) == G_TOKEN_EOF) - { - success = TRUE; - g_value_set_flags (property_value, flags_value); - } - + { + success = TRUE; + g_value_set_flags (property_value, flags_value); + } + } else if (g_scanner_get_next_token (scanner) == '(') { @@ -2152,15 +2175,15 @@ gtk_rc_property_parse_flags (const GParamSpec *pspec, /* parse nth values, preceeded by '|' */ while (token == G_TOKEN_NONE && g_scanner_get_next_token (scanner) == '|') - token = parse_flags_value (scanner, class, &flags_value); + token = parse_flags_value (scanner, class, &flags_value); /* done, last token must have closed expression */ if (token == G_TOKEN_NONE && scanner->token == ')' && - g_scanner_peek_next_token (scanner) == G_TOKEN_EOF) - { - g_value_set_flags (property_value, flags_value); - success = TRUE; - } + g_scanner_peek_next_token (scanner) == G_TOKEN_EOF) + { + g_value_set_flags (property_value, flags_value); + success = TRUE; + } } g_scanner_destroy (scanner); @@ -2169,15 +2192,15 @@ gtk_rc_property_parse_flags (const GParamSpec *pspec, static gboolean get_braced_int (GScanner *scanner, - gboolean first, - gboolean last, - gint *value) + gboolean first, + gboolean last, + gint *value) { if (first) { g_scanner_get_next_token (scanner); if (scanner->token != '{') - return FALSE; + return FALSE; } g_scanner_get_next_token (scanner); @@ -2190,13 +2213,13 @@ get_braced_int (GScanner *scanner, { g_scanner_get_next_token (scanner); if (scanner->token != '}') - return FALSE; + return FALSE; } else { g_scanner_get_next_token (scanner); if (scanner->token != ',') - return FALSE; + return FALSE; } return TRUE; @@ -2207,19 +2230,19 @@ get_braced_int (GScanner *scanner, * @pspec: a #GParamSpec * @gstring: the #GString to be parsed * @property_value: a #GValue which must hold boxed values. - * + * * A #GtkRcPropertyParser for use with gtk_settings_install_property_parser() * or gtk_widget_class_install_style_property_parser() which parses a - * requisition in the form + * requisition in the form * "{ width, height }" for integers %width and %height. - * + * * Return value: %TRUE if @gstring could be parsed and @property_value * has been set to the resulting #GtkRequisition. **/ gboolean gtk_rc_property_parse_requisition (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value) + const GString *gstring, + GValue *property_value) { GtkRequisition requisition; GScanner *scanner; @@ -2248,20 +2271,20 @@ gtk_rc_property_parse_requisition (const GParamSpec *pspec, * @pspec: a #GParamSpec * @gstring: the #GString to be parsed * @property_value: a #GValue which must hold boxed values. - * + * * A #GtkRcPropertyParser for use with gtk_settings_install_property_parser() * or gtk_widget_class_install_style_property_parser() which parses - * borders in the form - * "{ left, right, top, bottom }" for integers + * borders in the form + * "{ left, right, top, bottom }" for integers * %left, %right, %top and %bottom. - * + * * Return value: %TRUE if @gstring could be parsed and @property_value * has been set to the resulting #GtkBorder. **/ gboolean gtk_rc_property_parse_border (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value) + const GString *gstring, + GValue *property_value) { GtkBorder border; GScanner *scanner; @@ -2295,23 +2318,25 @@ gtk_rc_property_parse_border (const GParamSpec *pspec, void _gtk_settings_handle_event (GdkEventSetting *event) { + GdkScreen *screen; GtkSettings *settings; GParamSpec *pspec; guint property_id; - settings = gtk_settings_get_for_screen (gdk_window_get_screen (event->window)); + screen = gdk_window_get_screen (event->window); + settings = gtk_settings_get_for_screen (screen); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (settings), event->name); - - if (pspec) + + if (pspec) { property_id = pspec->param_id; if (property_id == PROP_COLOR_SCHEME) { GValue value = { 0, }; - + g_value_init (&value, G_TYPE_STRING); - if (!gdk_screen_get_setting (settings->screen, pspec->name, &value)) + if (!gdk_screen_get_setting (screen, pspec->name, &value)) g_value_set_static_string (&value, ""); merge_color_scheme (settings, &value, GTK_SETTINGS_SOURCE_XSETTING); g_value_unset (&value); @@ -2321,9 +2346,9 @@ _gtk_settings_handle_event (GdkEventSetting *event) } static void -reset_rc_values_foreach (GQuark key_id, - gpointer data, - gpointer user_data) +reset_rc_values_foreach (GQuark key_id, + gpointer data, + gpointer user_data) { GtkSettingsValuePrivate *qvalue = data; GSList **to_reset = user_data; @@ -2335,21 +2360,21 @@ reset_rc_values_foreach (GQuark key_id, void _gtk_settings_reset_rc_values (GtkSettings *settings) { + GtkSettingsPrivate *priv = settings->priv; GSList *to_reset = NULL; GSList *tmp_list; GParamSpec **pspecs, **p; gint i; - /* Remove any queued settings - */ - g_datalist_foreach (&settings->queued_settings, - reset_rc_values_foreach, - &to_reset); + /* Remove any queued settings */ + g_datalist_foreach (&priv->queued_settings, + reset_rc_values_foreach, + &to_reset); for (tmp_list = to_reset; tmp_list; tmp_list = tmp_list->next) { GQuark key_id = GPOINTER_TO_UINT (tmp_list->data); - g_datalist_id_remove_data (&settings->queued_settings, key_id); + g_datalist_id_remove_data (&priv->queued_settings, key_id); } g_slist_free (to_reset); @@ -2362,13 +2387,13 @@ _gtk_settings_reset_rc_values (GtkSettings *settings) g_object_freeze_notify (G_OBJECT (settings)); for (p = pspecs; *p; p++) { - if (settings->property_values[i].source == GTK_SETTINGS_SOURCE_RC_FILE) - { - GParamSpec *pspec = *p; + if (priv->property_values[i].source == GTK_SETTINGS_SOURCE_RC_FILE) + { + GParamSpec *pspec = *p; - g_param_value_set_default (pspec, &settings->property_values[i].value); - g_object_notify (G_OBJECT (settings), pspec->name); - } + g_param_value_set_default (pspec, &priv->property_values[i].value); + g_object_notify (G_OBJECT (settings), pspec->name); + } i++; } g_object_thaw_notify (G_OBJECT (settings)); @@ -2378,17 +2403,19 @@ _gtk_settings_reset_rc_values (GtkSettings *settings) static void settings_update_double_click (GtkSettings *settings) { - if (gdk_screen_get_number (settings->screen) == 0) + GtkSettingsPrivate *priv = settings->priv; + + if (gdk_screen_get_number (priv->screen) == 0) { - GdkDisplay *display = gdk_screen_get_display (settings->screen); + GdkDisplay *display = gdk_screen_get_display (priv->screen); gint double_click_time; gint double_click_distance; - - g_object_get (settings, - "gtk-double-click-time", &double_click_time, - "gtk-double-click-distance", &double_click_distance, - NULL); - + + g_object_get (settings, + "gtk-double-click-time", &double_click_time, + "gtk-double-click-distance", &double_click_distance, + NULL); + gdk_display_set_double_click_time (display, double_click_time); gdk_display_set_double_click_distance (display, double_click_distance); } @@ -2398,13 +2425,13 @@ static void settings_update_modules (GtkSettings *settings) { gchar *modules; - - g_object_get (settings, - "gtk-modules", &modules, - NULL); - + + g_object_get (settings, + "gtk-modules", &modules, + NULL); + _gtk_modules_settings_changed (settings, modules); - + g_free (modules); } @@ -2412,15 +2439,15 @@ settings_update_modules (GtkSettings *settings) static void settings_update_cursor_theme (GtkSettings *settings) { - GdkDisplay *display = gdk_screen_get_display (settings->screen); + GdkDisplay *display = gdk_screen_get_display (settings->priv->screen); gchar *theme = NULL; gint size = 0; - - g_object_get (settings, - "gtk-cursor-theme-name", &theme, - "gtk-cursor-theme-size", &size, - NULL); - + + g_object_get (settings, + "gtk-cursor-theme-name", &theme, + "gtk-cursor-theme-size", &size, + NULL); + gdk_x11_display_set_cursor_theme (display, theme, size); g_free (theme); @@ -2429,6 +2456,7 @@ settings_update_cursor_theme (GtkSettings *settings) static void settings_update_font_options (GtkSettings *settings) { + GtkSettingsPrivate *priv = settings->priv; gint hinting; gchar *hint_style_str; cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_NONE; @@ -2437,18 +2465,18 @@ settings_update_font_options (GtkSettings *settings) gchar *rgba_str; cairo_subpixel_order_t subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; cairo_font_options_t *options; - + g_object_get (settings, - "gtk-xft-antialias", &antialias, - "gtk-xft-hinting", &hinting, - "gtk-xft-hintstyle", &hint_style_str, - "gtk-xft-rgba", &rgba_str, - NULL); + "gtk-xft-antialias", &antialias, + "gtk-xft-hinting", &hinting, + "gtk-xft-hintstyle", &hint_style_str, + "gtk-xft-rgba", &rgba_str, + NULL); options = cairo_font_options_create (); cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); - + if (hinting >= 0 && !hinting) { hint_style = CAIRO_HINT_STYLE_NONE; @@ -2456,13 +2484,13 @@ settings_update_font_options (GtkSettings *settings) else if (hint_style_str) { if (strcmp (hint_style_str, "hintnone") == 0) - hint_style = CAIRO_HINT_STYLE_NONE; + hint_style = CAIRO_HINT_STYLE_NONE; else if (strcmp (hint_style_str, "hintslight") == 0) - hint_style = CAIRO_HINT_STYLE_SLIGHT; + hint_style = CAIRO_HINT_STYLE_SLIGHT; else if (strcmp (hint_style_str, "hintmedium") == 0) - hint_style = CAIRO_HINT_STYLE_MEDIUM; + hint_style = CAIRO_HINT_STYLE_MEDIUM; else if (strcmp (hint_style_str, "hintfull") == 0) - hint_style = CAIRO_HINT_STYLE_FULL; + hint_style = CAIRO_HINT_STYLE_FULL; } g_free (hint_style_str); @@ -2472,30 +2500,30 @@ settings_update_font_options (GtkSettings *settings) if (rgba_str) { if (strcmp (rgba_str, "rgb") == 0) - subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB; + subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB; else if (strcmp (rgba_str, "bgr") == 0) - subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR; + subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR; else if (strcmp (rgba_str, "vrgb") == 0) - subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB; + subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB; else if (strcmp (rgba_str, "vbgr") == 0) - subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR; + subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR; g_free (rgba_str); } cairo_font_options_set_subpixel_order (options, subpixel_order); - + if (antialias >= 0 && !antialias) antialias_mode = CAIRO_ANTIALIAS_NONE; else if (subpixel_order != CAIRO_SUBPIXEL_ORDER_DEFAULT) antialias_mode = CAIRO_ANTIALIAS_SUBPIXEL; else if (antialias >= 0) antialias_mode = CAIRO_ANTIALIAS_GRAY; - + cairo_font_options_set_antialias (options, antialias_mode); - gdk_screen_set_font_options (settings->screen, options); - + gdk_screen_set_font_options (priv->screen, options); + cairo_font_options_destroy (options); } @@ -2509,8 +2537,8 @@ settings_update_fontconfig (GtkSettings *settings) guint timestamp; g_object_get (settings, - "gtk-fontconfig-timestamp", ×tamp, - NULL); + "gtk-fontconfig-timestamp", ×tamp, + NULL); /* if timestamp is the same as last_update_timestamp, we already have * updated fontconig on this timestamp (another screen requested it perhaps?), @@ -2523,11 +2551,11 @@ settings_update_fontconfig (GtkSettings *settings) /* bug 547680 */ if (PANGO_IS_FC_FONT_MAP (fontmap) && !FcConfigUptoDate (NULL)) - { - pango_fc_font_map_cache_clear (PANGO_FC_FONT_MAP (fontmap)); - if (FcInitReinitialize ()) - update_needed = TRUE; - } + { + pango_fc_font_map_cache_clear (PANGO_FC_FONT_MAP (fontmap)); + if (FcInitReinitialize ()) + update_needed = TRUE; + } last_update_timestamp = timestamp; last_update_needed = update_needed; @@ -2540,23 +2568,25 @@ settings_update_fontconfig (GtkSettings *settings) static void settings_update_resolution (GtkSettings *settings) { + GtkSettingsPrivate *priv = settings->priv; gint dpi_int; - double dpi; - + gdouble dpi; + g_object_get (settings, - "gtk-xft-dpi", &dpi_int, - NULL); + "gtk-xft-dpi", &dpi_int, + NULL); if (dpi_int > 0) dpi = dpi_int / 1024.; else dpi = -1.; - gdk_screen_set_resolution (settings->screen, dpi); + gdk_screen_set_resolution (priv->screen, dpi); } #endif -typedef struct { +typedef struct +{ GHashTable *color_hash; GHashTable *tables[GTK_SETTINGS_SOURCE_APPLICATION + 1]; gchar *lastentry[GTK_SETTINGS_SOURCE_APPLICATION + 1]; @@ -2572,7 +2602,7 @@ color_scheme_data_free (ColorSchemeData *data) for (i = 0; i <= GTK_SETTINGS_SOURCE_APPLICATION; i++) { if (data->tables[i]) - g_hash_table_unref (data->tables[i]); + g_hash_table_unref (data->tables[i]); g_free (data->lastentry[i]); } @@ -2584,17 +2614,18 @@ settings_update_color_scheme (GtkSettings *settings) { if (!g_object_get_data (G_OBJECT (settings), "gtk-color-scheme")) { + GtkSettingsPrivate *priv = settings->priv; ColorSchemeData *data; GValue value = { 0, }; data = g_slice_new0 (ColorSchemeData); data->color_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, - (GDestroyNotify) gdk_color_free); + (GDestroyNotify) gdk_color_free); g_object_set_data_full (G_OBJECT (settings), "gtk-color-scheme", - data, (GDestroyNotify) color_scheme_data_free); + data, (GDestroyNotify) color_scheme_data_free); g_value_init (&value, G_TYPE_STRING); - if (gdk_screen_get_setting (settings->screen, "gtk-color-scheme", &value)) + if (gdk_screen_get_setting (priv->screen, "gtk-color-scheme", &value)) { merge_color_scheme (settings, &value, GTK_SETTINGS_SOURCE_XSETTING); g_value_unset (&value); @@ -2606,6 +2637,8 @@ static void settings_update_theme (GtkSettings *settings) { static GQuark quark_theme_name = 0; + + GtkSettingsPrivate *priv = settings->priv; GtkCssProvider *provider, *new_provider = NULL; gboolean prefer_dark_theme; gchar *theme_name; @@ -2634,12 +2667,12 @@ settings_update_theme (GtkSettings *settings) if (new_provider != provider) { if (provider) - gtk_style_context_remove_provider_for_screen (settings->screen, + gtk_style_context_remove_provider_for_screen (priv->screen, GTK_STYLE_PROVIDER (provider)); if (new_provider) { - gtk_style_context_add_provider_for_screen (settings->screen, + gtk_style_context_add_provider_for_screen (priv->screen, GTK_STYLE_PROVIDER (new_provider), GTK_STYLE_PROVIDER_PRIORITY_THEME); g_object_ref (new_provider); @@ -2652,8 +2685,8 @@ settings_update_theme (GtkSettings *settings) static gboolean add_color_to_hash (gchar *name, - GdkColor *color, - GHashTable *target) + GdkColor *color, + GHashTable *target) { GdkColor *old; @@ -2670,7 +2703,7 @@ add_color_to_hash (gchar *name, static gboolean add_colors_to_hash_from_string (GHashTable *hash, - const gchar *colors) + const gchar *colors) { gchar *s, *p, *name; GdkColor color; @@ -2689,25 +2722,25 @@ add_colors_to_hash_from_string (GHashTable *hash, p++; } else - break; + break; while (*p == ' ') p++; s = p; - while (*s) - { - if (*s == '\n' || *s == ';') - { - *s = '\0'; - s++; - break; - } - s++; - } + while (*s) + { + if (*s == '\n' || *s == ';') + { + *s = '\0'; + s++; + break; + } + s++; + } if (gdk_color_parse (p, &color)) - changed |= add_color_to_hash (name, &color, hash); + changed |= add_color_to_hash (name, &color, hash); } g_free (copy); @@ -2717,8 +2750,8 @@ add_colors_to_hash_from_string (GHashTable *hash, static gboolean update_color_hash (ColorSchemeData *data, - const gchar *str, - GtkSettingsSource source) + const gchar *str, + GtkSettingsSource source) { gboolean changed = FALSE; gint i; @@ -2747,8 +2780,8 @@ update_color_hash (ColorSchemeData *data, if (data->tables[source] == NULL) data->tables[source] = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, - (GDestroyNotify) gdk_color_free); + g_free, + (GDestroyNotify) gdk_color_free); g_free (data->lastentry[source]); data->lastentry[source] = g_strdup (str); @@ -2779,8 +2812,8 @@ update_color_hash (ColorSchemeData *data, for (i = 0; i <= GTK_SETTINGS_SOURCE_APPLICATION; i++) { if (data->tables[i]) - g_hash_table_foreach (data->tables[i], (GHFunc) add_color_to_hash, - data->color_hash); + g_hash_table_foreach (data->tables[i], (GHFunc) add_color_to_hash, + data->color_hash); } if (old_hash) @@ -2815,9 +2848,9 @@ update_color_hash (ColorSchemeData *data, } static void -merge_color_scheme (GtkSettings *settings, - const GValue *value, - GtkSettingsSource source) +merge_color_scheme (GtkSettings *settings, + const GValue *value, + GtkSettingsSource source) { ColorSchemeData *data; const gchar *colors; @@ -2829,8 +2862,8 @@ merge_color_scheme (GtkSettings *settings, settings_update_color_scheme (settings); data = (ColorSchemeData *) g_object_get_data (G_OBJECT (settings), - "gtk-color-scheme"); - + "gtk-color-scheme"); + if (update_color_hash (data, colors, source)) g_object_notify (G_OBJECT (settings), "color-hash"); @@ -2843,24 +2876,24 @@ get_color_hash (GtkSettings *settings) ColorSchemeData *data; settings_update_color_scheme (settings); - - data = (ColorSchemeData *)g_object_get_data (G_OBJECT (settings), - "gtk-color-scheme"); + + data = (ColorSchemeData *)g_object_get_data (G_OBJECT (settings), + "gtk-color-scheme"); return data->color_hash; } -static void +static void append_color_scheme (gpointer key, - gpointer value, - gpointer data) + gpointer value, + gpointer data) { gchar *name = (gchar *)key; GdkColor *color = (GdkColor *)value; GString *string = (GString *)data; g_string_append_printf (string, "%s: #%04x%04x%04x\n", - name, color->red, color->green, color->blue); + name, color->red, color->green, color->blue); } static gchar * @@ -2868,11 +2901,11 @@ get_color_scheme (GtkSettings *settings) { ColorSchemeData *data; GString *string; - + settings_update_color_scheme (settings); data = (ColorSchemeData *) g_object_get_data (G_OBJECT (settings), - "gtk-color-scheme"); + "gtk-color-scheme"); string = g_string_new (""); @@ -2884,5 +2917,5 @@ get_color_scheme (GtkSettings *settings) GdkScreen * _gtk_settings_get_screen (GtkSettings *settings) { - return settings->screen; + return settings->priv->screen; } diff --git a/gtk/gtksettings.h b/gtk/gtksettings.h index 6958db0f56..afa1ff089e 100644 --- a/gtk/gtksettings.h +++ b/gtk/gtksettings.h @@ -38,9 +38,9 @@ G_BEGIN_DECLS /* --- typedefs --- */ -typedef struct _GtkSettingsClass GtkSettingsClass; -typedef struct _GtkSettingsValue GtkSettingsValue; -typedef struct _GtkSettingsPropertyValue GtkSettingsPropertyValue; /* Internal */ +typedef struct _GtkSettingsPrivate GtkSettingsPrivate; +typedef struct _GtkSettingsClass GtkSettingsClass; +typedef struct _GtkSettingsValue GtkSettingsValue; /* --- structures --- */ @@ -48,16 +48,19 @@ struct _GtkSettings { GObject parent_instance; - GData *GSEAL (queued_settings); /* of type GtkSettingsValue* */ - GtkSettingsPropertyValue *GSEAL (property_values); - - GtkRcContext *GSEAL (rc_context); - GdkScreen *GSEAL (screen); + /*< private >*/ + GtkSettingsPrivate *priv; }; struct _GtkSettingsClass { GObjectClass parent_class; + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); }; struct _GtkSettingsValue @@ -75,65 +78,48 @@ struct _GtkSettingsValue /* --- functions --- */ -GType gtk_settings_get_type (void) G_GNUC_CONST; +GType gtk_settings_get_type (void) G_GNUC_CONST; #ifndef GDK_MULTIHEAD_SAFE -GtkSettings* gtk_settings_get_default (void); +GtkSettings* gtk_settings_get_default (void); #endif -GtkSettings* gtk_settings_get_for_screen (GdkScreen *screen); +GtkSettings* gtk_settings_get_for_screen (GdkScreen *screen); -void gtk_settings_install_property (GParamSpec *pspec); -void gtk_settings_install_property_parser (GParamSpec *pspec, - GtkRcPropertyParser parser); +void gtk_settings_install_property (GParamSpec *pspec); +void gtk_settings_install_property_parser (GParamSpec *pspec, + GtkRcPropertyParser parser); /* --- precoded parsing functions --- */ gboolean gtk_rc_property_parse_color (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value); + const GString *gstring, + GValue *property_value); gboolean gtk_rc_property_parse_enum (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value); + const GString *gstring, + GValue *property_value); gboolean gtk_rc_property_parse_flags (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value); + const GString *gstring, + GValue *property_value); gboolean gtk_rc_property_parse_requisition (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value); + const GString *gstring, + GValue *property_value); gboolean gtk_rc_property_parse_border (const GParamSpec *pspec, - const GString *gstring, - GValue *property_value); + const GString *gstring, + GValue *property_value); -/*< private >*/ -void gtk_settings_set_property_value (GtkSettings *settings, - const gchar *name, - const GtkSettingsValue *svalue); -void gtk_settings_set_string_property (GtkSettings *settings, - const gchar *name, - const gchar *v_string, - const gchar *origin); -void gtk_settings_set_long_property (GtkSettings *settings, - const gchar *name, - glong v_long, - const gchar *origin); -void gtk_settings_set_double_property (GtkSettings *settings, - const gchar *name, - gdouble v_double, - const gchar *origin); - - -/* implementation details */ -void _gtk_settings_set_property_value_from_rc (GtkSettings *settings, - const gchar *name, - const GtkSettingsValue *svalue); -void _gtk_settings_reset_rc_values (GtkSettings *settings); - -void _gtk_settings_handle_event (GdkEventSetting *event); -GtkRcPropertyParser _gtk_rc_property_parser_from_type (GType type); -gboolean _gtk_settings_parse_convert (GtkRcPropertyParser parser, - const GValue *src_value, - GParamSpec *pspec, - GValue *dest_value); - -GdkScreen *_gtk_settings_get_screen (GtkSettings *settings); +void gtk_settings_set_property_value (GtkSettings *settings, + const gchar *name, + const GtkSettingsValue *svalue); +void gtk_settings_set_string_property (GtkSettings *settings, + const gchar *name, + const gchar *v_string, + const gchar *origin); +void gtk_settings_set_long_property (GtkSettings *settings, + const gchar *name, + glong v_long, + const gchar *origin); +void gtk_settings_set_double_property (GtkSettings *settings, + const gchar *name, + gdouble v_double, + const gchar *origin); G_END_DECLS diff --git a/gtk/gtksettingsprivate.h b/gtk/gtksettingsprivate.h new file mode 100644 index 0000000000..0b68bf3b19 --- /dev/null +++ b/gtk/gtksettingsprivate.h @@ -0,0 +1,43 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2000 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 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, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __GTK_SETTINGS_PRIVATE_H__ +#define __GTK_SETTINGS_PRIVATE_H__ + +#include + +G_BEGIN_DECLS + + +void _gtk_settings_set_property_value_from_rc (GtkSettings *settings, + const gchar *name, + const GtkSettingsValue *svalue); +void _gtk_settings_reset_rc_values (GtkSettings *settings); + +void _gtk_settings_handle_event (GdkEventSetting *event); +GtkRcPropertyParser _gtk_rc_property_parser_from_type (GType type); +gboolean _gtk_settings_parse_convert (GtkRcPropertyParser parser, + const GValue *src_value, + GParamSpec *pspec, + GValue *dest_value); +GdkScreen *_gtk_settings_get_screen (GtkSettings *settings); + + +G_END_DECLS + +#endif /* __GTK_SETTINGS_PRIVATE_H__ */ diff --git a/gtk/gtkshow.c b/gtk/gtkshow.c index e4e5d50d4e..ad396a27f9 100644 --- a/gtk/gtkshow.c +++ b/gtk/gtkshow.c @@ -28,14 +28,17 @@ /** * gtk_show_uri: - * @screen: (allow-none): screen to show the uri on or %NULL for the default screen + * @screen: (allow-none): screen to show the uri on + * or %NULL for the default screen * @uri: the uri to show - * @timestamp: a timestamp to prevent focus stealing. + * @timestamp: a timestamp to prevent focus stealing * @error: a #GError that is returned in case of errors * * This is a convenience function for launching the default application - * to show the uri. The uri must be of a form understood by GIO. Typical - * examples are + * to show the uri. The uri must be of a form understood by GIO (i.e. you + * need to install gvfs to get support for uri schemes such as http:// + * or ftp://, as only local files are handled by GIO itself). + * Typical examples are * * file:///home/gnome/pict.jpg * http://www.gnome.org @@ -48,7 +51,7 @@ * This function can be used as a replacement for gnome_vfs_url_show() * and gnome_url_show(). * - * Returns: %TRUE on success, %FALSE on error. + * Returns: %TRUE on success, %FALSE on error * * Since: 2.14 */ @@ -60,10 +63,16 @@ gtk_show_uri (GdkScreen *screen, { GdkAppLaunchContext *context; gboolean ret; + GdkDisplay *display; g_return_val_if_fail (uri != NULL, FALSE); - context = gdk_app_launch_context_new (); + if (screen != NULL) + display = gdk_screen_get_display (screen); + else + display = gdk_display_get_default (); + + context = gdk_display_get_app_launch_context (display); gdk_app_launch_context_set_screen (context, screen); gdk_app_launch_context_set_timestamp (context, timestamp); diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c index be24f64869..54042a0ed7 100644 --- a/gtk/gtksizegroup.c +++ b/gtk/gtksizegroup.c @@ -24,6 +24,7 @@ #include "gtkbuildable.h" #include "gtkcontainer.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtksizegroup-private.h" #include "gtkwidgetprivate.h" @@ -474,10 +475,10 @@ gtk_size_group_new (GtkSizeGroupMode mode) * * Sets the #GtkSizeGroupMode of the size group. The mode of the size * group determines whether the widgets in the size group should - * all have the same horizontal requisition (%GTK_SIZE_GROUP_MODE_HORIZONTAL) - * all have the same vertical requisition (%GTK_SIZE_GROUP_MODE_VERTICAL), + * all have the same horizontal requisition (%GTK_SIZE_GROUP_HORIZONTAL) + * all have the same vertical requisition (%GTK_SIZE_GROUP_VERTICAL), * or should all have the same requisition in both directions - * (%GTK_SIZE_GROUP_MODE_BOTH). + * (%GTK_SIZE_GROUP_BOTH). **/ void gtk_size_group_set_mode (GtkSizeGroup *size_group, diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c index ab249484ea..272f2ebfbe 100644 --- a/gtk/gtksizerequest.c +++ b/gtk/gtksizerequest.c @@ -205,8 +205,6 @@ compute_size_for_orientation (GtkWidget *widget, gint min_size = 0; gint nat_size = 0; - gtk_widget_ensure_style (widget); - if (orientation == GTK_SIZE_GROUP_HORIZONTAL) { if (for_size < 0) @@ -217,23 +215,26 @@ compute_size_for_orientation (GtkWidget *widget, } else { - int ignored_position = 0; - int natural_height; + gint ignored_position = 0; + gint minimum_height; + gint natural_height; /* Pull the base natural height from the cache as it's needed to adjust * the proposed 'for_size' */ - gtk_widget_get_preferred_height (widget, NULL, &natural_height); + gtk_widget_get_preferred_height (widget, &minimum_height, &natural_height); /* convert for_size to unadjusted height (for_size is a proposed allocation) */ GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, GTK_ORIENTATION_VERTICAL, - &natural_height, + &minimum_height, + &natural_height, &ignored_position, &for_size); push_recursion_check (widget, orientation, for_size); - GTK_WIDGET_GET_CLASS (widget)->get_preferred_width_for_height (widget, for_size, - &min_size, &nat_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_width_for_height (widget, + MAX (for_size, minimum_height), + &min_size, &nat_size); pop_recursion_check (widget, orientation); } } @@ -248,22 +249,25 @@ compute_size_for_orientation (GtkWidget *widget, else { int ignored_position = 0; + int minimum_width; int natural_width; /* Pull the base natural width from the cache as it's needed to adjust * the proposed 'for_size' */ - gtk_widget_get_preferred_width (widget, NULL, &natural_width); + gtk_widget_get_preferred_width (widget, &minimum_width, &natural_width); /* convert for_size to unadjusted width (for_size is a proposed allocation) */ GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, GTK_ORIENTATION_HORIZONTAL, + &minimum_width, &natural_width, &ignored_position, &for_size); push_recursion_check (widget, orientation, for_size); - GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, for_size, - &min_size, &nat_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, + MAX (for_size, minimum_width), + &min_size, &nat_size); pop_recursion_check (widget, orientation); } } diff --git a/gtk/gtksocket-win32.c b/gtk/gtksocket-win32.c index cf57458af3..1e745f55ff 100644 --- a/gtk/gtksocket-win32.c +++ b/gtk/gtksocket-win32.c @@ -34,6 +34,8 @@ #include "gtkprivate.h" #include "gtksocket.h" #include "gtksocketprivate.h" +#include "gtkplugprivate.h" +#include "gtkwindowprivate.h" #include "gtkdebug.h" #include "win32/gdkwin32.h" @@ -62,30 +64,32 @@ _gtk_socket_windowing_realize_window (GtkSocket *socket) void _gtk_socket_windowing_end_embedding_toplevel (GtkSocket *socket) { + GtkSocketPrivate *priv = socket->priv; gtk_window_remove_embedded_xid (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (socket))), - GDK_WINDOW_HWND (socket->plug_window)); + GDK_WINDOW_HWND (priv->plug_window)); } void _gtk_socket_windowing_size_request (GtkSocket *socket) { + GtkSocketPrivate *priv = socket->priv; MINMAXINFO mmi; - socket->request_width = 1; - socket->request_height = 1; + priv->request_width = 1; + priv->request_height = 1; mmi.ptMaxSize.x = mmi.ptMaxSize.y = 16000; /* ??? */ mmi.ptMinTrackSize.x = mmi.ptMinTrackSize.y = 1; mmi.ptMaxTrackSize.x = mmi.ptMaxTrackSize.y = 16000; /* ??? */ mmi.ptMaxPosition.x = mmi.ptMaxPosition.y = 0; - if (SendMessage (GDK_WINDOW_HWND (socket->plug_window), WM_GETMINMAXINFO, + if (SendMessage (GDK_WINDOW_HWND (priv->plug_window), WM_GETMINMAXINFO, 0, (LPARAM) &mmi) == 0) { - socket->request_width = mmi.ptMinTrackSize.x; - socket->request_height = mmi.ptMinTrackSize.y; + priv->request_width = mmi.ptMinTrackSize.x; + priv->request_height = mmi.ptMinTrackSize.y; } - socket->have_size = TRUE; + priv->have_size = TRUE; } void @@ -93,7 +97,8 @@ _gtk_socket_windowing_send_key_event (GtkSocket *socket, GdkEvent *gdk_event, gboolean mask_key_presses) { - PostMessage (GDK_WINDOW_HWND (socket->plug_window), + GtkSocketPrivate *priv = socket->priv; + PostMessage (GDK_WINDOW_HWND (priv->plug_window), (gdk_event->type == GDK_KEY_PRESS ? WM_KEYDOWN : WM_KEYUP), gdk_event->key.hardware_keycode, 0); } @@ -102,12 +107,14 @@ void _gtk_socket_windowing_focus_change (GtkSocket *socket, gboolean focus_in) { + GtkSocketPrivate *priv = socket->priv; + if (focus_in) - _gtk_win32_embed_send_focus_message (socket->plug_window, + _gtk_win32_embed_send_focus_message (priv->plug_window, GTK_WIN32_EMBED_FOCUS_IN, GTK_WIN32_EMBED_FOCUS_CURRENT); else - _gtk_win32_embed_send (socket->plug_window, + _gtk_win32_embed_send (priv->plug_window, GTK_WIN32_EMBED_FOCUS_OUT, 0, 0); } @@ -116,7 +123,9 @@ void _gtk_socket_windowing_update_active (GtkSocket *socket, gboolean active) { - _gtk_win32_embed_send (socket->plug_window, + GtkSocketPrivate *priv = socket->priv; + + _gtk_win32_embed_send (priv->plug_window, (active ? GTK_WIN32_EMBED_WINDOW_ACTIVATE : GTK_WIN32_EMBED_WINDOW_DEACTIVATE), 0, 0); } @@ -125,7 +134,8 @@ void _gtk_socket_windowing_update_modality (GtkSocket *socket, gboolean modality) { - _gtk_win32_embed_send (socket->plug_window, + GtkSocketPrivate *priv = socket->priv; + _gtk_win32_embed_send (priv->plug_window, (modality ? GTK_WIN32_EMBED_MODALITY_ON : GTK_WIN32_EMBED_MODALITY_OFF), 0, 0); } @@ -135,6 +145,7 @@ _gtk_socket_windowing_focus (GtkSocket *socket, GtkDirectionType direction) { int detail = -1; + GtkSocketPrivate *priv = socket->priv; switch (direction) { @@ -150,7 +161,7 @@ _gtk_socket_windowing_focus (GtkSocket *socket, break; } - _gtk_win32_embed_send_focus_message (socket->plug_window, + _gtk_win32_embed_send_focus_message (priv->plug_window, GTK_WIN32_EMBED_FOCUS_IN, detail); } @@ -170,7 +181,9 @@ _gtk_socket_windowing_select_plug_window_input (GtkSocket *socket) void _gtk_socket_windowing_embed_get_info (GtkSocket *socket) { - socket->is_mapped = TRUE; /* XXX ? */ + GtkSocketPrivate *priv = socket->priv; + + priv->is_mapped = TRUE; /* XXX ? */ } void @@ -200,12 +213,13 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, GtkWidget *widget; MSG *msg; GdkFilterReturn return_val; + GtkSocketPrivate *priv = socket->priv; socket = GTK_SOCKET (data); return_val = GDK_FILTER_CONTINUE; - if (socket->plug_widget) + if (priv->plug_widget) return return_val; widget = GTK_WIDGET (socket); @@ -225,11 +239,11 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, g_warning ("GTK Win32 embedding protocol version mismatch, " "client uses version %d, we understand version %d", (int) msg->lParam, GTK_WIN32_EMBED_PROTOCOL_VERSION); - if (!socket->plug_window) + if (!priv->plug_window) { _gtk_socket_add_window (socket, (GdkNativeWindow) msg->wParam, FALSE); - if (socket->plug_window) + if (priv->plug_window) GTK_NOTE (PLUGSOCKET, g_printerr ("GtkSocket: window created")); return_val = GDK_FILTER_REMOVE; @@ -237,7 +251,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, } else if (msg->message == _gtk_win32_embed_message_type (GTK_WIN32_EMBED_EVENT_PLUG_MAPPED)) { - gboolean was_mapped = socket->is_mapped; + gboolean was_mapped = priv->is_mapped; gboolean is_mapped = msg->wParam != 0; GTK_NOTE (PLUGSOCKET, g_printerr ("GtkSocket: PLUG_MAPPED received is_mapped:%d\n", is_mapped)); @@ -247,7 +261,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, _gtk_socket_handle_map_request (socket); else { - gdk_window_show (socket->plug_window); + gdk_window_show (priv->plug_window); _gtk_socket_unmap_notify (socket); } } @@ -256,7 +270,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, else if (msg->message == _gtk_win32_embed_message_type (GTK_WIN32_EMBED_PLUG_RESIZED)) { GTK_NOTE (PLUGSOCKET, g_printerr ("GtkSocket: PLUG_RESIZED received\n")); - socket->have_size = FALSE; + priv->have_size = FALSE; gtk_widget_queue_resize (widget); return_val = GDK_FILTER_REMOVE; } diff --git a/gtk/gtksocket-x11.c b/gtk/gtksocket-x11.c index 963d832b85..d48bcb2c30 100644 --- a/gtk/gtksocket-x11.c +++ b/gtk/gtksocket-x11.c @@ -26,12 +26,12 @@ */ #include "config.h" + #include -#include "gdk/gdkkeysyms.h" #include "gtkmain.h" #include "gtkmarshalers.h" -#include "gtkwindow.h" +#include "gtkwindowprivate.h" #include "gtkplug.h" #include "gtkprivate.h" #include "gtksocket.h" @@ -91,36 +91,37 @@ void _gtk_socket_windowing_end_embedding_toplevel (GtkSocket *socket) { gtk_window_remove_embedded_xid (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (socket))), - GDK_WINDOW_XID (socket->plug_window)); + GDK_WINDOW_XID (socket->priv->plug_window)); } void _gtk_socket_windowing_size_request (GtkSocket *socket) { + GtkSocketPrivate *private = socket->priv; XSizeHints hints; long supplied; gdk_error_trap_push (); - socket->request_width = 1; - socket->request_height = 1; + private->request_width = 1; + private->request_height = 1; - if (XGetWMNormalHints (GDK_WINDOW_XDISPLAY (socket->plug_window), - GDK_WINDOW_XID (socket->plug_window), + if (XGetWMNormalHints (GDK_WINDOW_XDISPLAY (private->plug_window), + GDK_WINDOW_XID (private->plug_window), &hints, &supplied)) { if (hints.flags & PMinSize) { - socket->request_width = MAX (hints.min_width, 1); - socket->request_height = MAX (hints.min_height, 1); + private->request_width = MAX (hints.min_width, 1); + private->request_height = MAX (hints.min_height, 1); } else if (hints.flags & PBaseSize) { - socket->request_width = MAX (hints.base_width, 1); - socket->request_height = MAX (hints.base_height, 1); + private->request_width = MAX (hints.base_width, 1); + private->request_height = MAX (hints.base_height, 1); } } - socket->have_size = TRUE; + private->have_size = TRUE; gdk_error_trap_pop_ignored (); } @@ -131,11 +132,11 @@ _gtk_socket_windowing_send_key_event (GtkSocket *socket, gboolean mask_key_presses) { XKeyEvent xkey; - GdkScreen *screen = gdk_window_get_screen (socket->plug_window); + GdkScreen *screen = gdk_window_get_screen (socket->priv->plug_window); memset (&xkey, 0, sizeof (xkey)); xkey.type = (gdk_event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease; - xkey.window = GDK_WINDOW_XID (socket->plug_window); + xkey.window = GDK_WINDOW_XID (socket->priv->plug_window); xkey.root = GDK_WINDOW_XID (gdk_screen_get_root_window (screen)); xkey.subwindow = None; xkey.time = gdk_event->key.time; @@ -148,8 +149,8 @@ _gtk_socket_windowing_send_key_event (GtkSocket *socket, xkey.same_screen = True;/* FIXME ? */ gdk_error_trap_push (); - XSendEvent (GDK_WINDOW_XDISPLAY (socket->plug_window), - GDK_WINDOW_XID (socket->plug_window), + XSendEvent (GDK_WINDOW_XDISPLAY (socket->priv->plug_window), + GDK_WINDOW_XID (socket->priv->plug_window), False, (mask_key_presses ? KeyPressMask : NoEventMask), (XEvent *)&xkey); @@ -161,10 +162,10 @@ _gtk_socket_windowing_focus_change (GtkSocket *socket, gboolean focus_in) { if (focus_in) - _gtk_xembed_send_focus_message (socket->plug_window, + _gtk_xembed_send_focus_message (socket->priv->plug_window, XEMBED_FOCUS_IN, XEMBED_FOCUS_CURRENT); else - _gtk_xembed_send_message (socket->plug_window, + _gtk_xembed_send_message (socket->priv->plug_window, XEMBED_FOCUS_OUT, 0, 0, 0); } @@ -172,7 +173,7 @@ void _gtk_socket_windowing_update_active (GtkSocket *socket, gboolean active) { - _gtk_xembed_send_message (socket->plug_window, + _gtk_xembed_send_message (socket->priv->plug_window, active ? XEMBED_WINDOW_ACTIVATE : XEMBED_WINDOW_DEACTIVATE, 0, 0, 0); } @@ -181,7 +182,7 @@ void _gtk_socket_windowing_update_modality (GtkSocket *socket, gboolean modality) { - _gtk_xembed_send_message (socket->plug_window, + _gtk_xembed_send_message (socket->priv->plug_window, modality ? XEMBED_MODALITY_ON : XEMBED_MODALITY_OFF, 0, 0, 0); } @@ -206,7 +207,7 @@ _gtk_socket_windowing_focus (GtkSocket *socket, break; } - _gtk_xembed_send_focus_message (socket->plug_window, XEMBED_FOCUS_IN, detail); + _gtk_xembed_send_focus_message (socket->priv->plug_window, XEMBED_FOCUS_IN, detail); } void @@ -216,20 +217,20 @@ _gtk_socket_windowing_send_configure_event (GtkSocket *socket) XConfigureEvent xconfigure; gint x, y; - g_return_if_fail (socket->plug_window != NULL); + g_return_if_fail (socket->priv->plug_window != NULL); memset (&xconfigure, 0, sizeof (xconfigure)); xconfigure.type = ConfigureNotify; - xconfigure.event = GDK_WINDOW_XID (socket->plug_window); - xconfigure.window = GDK_WINDOW_XID (socket->plug_window); + xconfigure.event = GDK_WINDOW_XID (socket->priv->plug_window); + xconfigure.window = GDK_WINDOW_XID (socket->priv->plug_window); /* The ICCCM says that synthetic events should have root relative * coordinates. We still aren't really ICCCM compliant, since * we don't send events when the real toplevel is moved. */ gdk_error_trap_push (); - gdk_window_get_origin (socket->plug_window, &x, &y); + gdk_window_get_origin (socket->priv->plug_window, &x, &y); gdk_error_trap_pop_ignored (); gtk_widget_get_allocation (GTK_WIDGET(socket), &allocation); @@ -243,8 +244,8 @@ _gtk_socket_windowing_send_configure_event (GtkSocket *socket) xconfigure.override_redirect = False; gdk_error_trap_push (); - XSendEvent (GDK_WINDOW_XDISPLAY (socket->plug_window), - GDK_WINDOW_XID (socket->plug_window), + XSendEvent (GDK_WINDOW_XDISPLAY (socket->priv->plug_window), + GDK_WINDOW_XID (socket->priv->plug_window), False, NoEventMask, (XEvent *)&xconfigure); gdk_error_trap_pop_ignored (); } @@ -253,7 +254,7 @@ void _gtk_socket_windowing_select_plug_window_input (GtkSocket *socket) { XSelectInput (GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (socket))), - GDK_WINDOW_XID (socket->plug_window), + GDK_WINDOW_XID (socket->priv->plug_window), StructureNotifyMask | PropertyChangeMask); } @@ -262,36 +263,38 @@ _gtk_socket_windowing_embed_get_info (GtkSocket *socket) { unsigned long version; unsigned long flags; + GtkSocketPrivate *private = socket->priv; - socket->xembed_version = -1; - if (xembed_get_info (socket->plug_window, &version, &flags)) + private->xembed_version = -1; + if (xembed_get_info (private->plug_window, &version, &flags)) { - socket->xembed_version = MIN (GTK_XEMBED_PROTOCOL_VERSION, version); - socket->is_mapped = (flags & XEMBED_MAPPED) != 0; + private->xembed_version = MIN (GTK_XEMBED_PROTOCOL_VERSION, version); + private->is_mapped = (flags & XEMBED_MAPPED) != 0; } else { /* FIXME, we should probably actually check the state before we started */ - socket->is_mapped = TRUE; + private->is_mapped = TRUE; } } void _gtk_socket_windowing_embed_notify (GtkSocket *socket) { + GtkSocketPrivate *private = socket->priv; #ifdef HAVE_XFIXES GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (socket)); gdk_error_trap_push (); XFixesChangeSaveSet (GDK_DISPLAY_XDISPLAY (display), - GDK_WINDOW_XID (socket->plug_window), + GDK_WINDOW_XID (private->plug_window), SetModeInsert, SaveSetRoot, SaveSetUnmap); gdk_error_trap_pop_ignored (); #endif - _gtk_xembed_send_message (socket->plug_window, + _gtk_xembed_send_message (private->plug_window, XEMBED_EMBEDDED_NOTIFY, 0, GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (socket))), - socket->xembed_version); + private->xembed_version); } static gboolean @@ -419,14 +422,16 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, GtkWidget *widget; GdkDisplay *display; XEvent *xevent; + GtkSocketPrivate *private; GdkFilterReturn return_val; - + socket = GTK_SOCKET (data); + private = socket->priv; return_val = GDK_FILTER_CONTINUE; - if (socket->plug_widget) + if (private->plug_widget) return return_val; widget = GTK_WIDGET (socket); @@ -455,11 +460,11 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, { XCreateWindowEvent *xcwe = &xevent->xcreatewindow; - if (!socket->plug_window) + if (!private->plug_window) { _gtk_socket_add_window (socket, xcwe->window, FALSE); - if (socket->plug_window) + if (private->plug_window) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - window created")); } @@ -474,19 +479,17 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, { XConfigureRequestEvent *xcre = &xevent->xconfigurerequest; - if (!socket->plug_window) + if (!private->plug_window) _gtk_socket_add_window (socket, xcre->window, FALSE); - if (socket->plug_window) + if (private->plug_window) { - GtkSocketPrivate *private = _gtk_socket_get_private (socket); - if (xcre->value_mask & (CWWidth | CWHeight)) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - configure request: %d %d", - socket->request_width, - socket->request_height)); + private->request_width, + private->request_height)); private->resize_count++; gtk_widget_queue_resize (widget); @@ -509,13 +512,13 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, /* Note that we get destroy notifies both from SubstructureNotify on * our window and StructureNotify on socket->plug_window */ - if (socket->plug_window && (xdwe->window == GDK_WINDOW_XID (socket->plug_window))) + if (private->plug_window && (xdwe->window == GDK_WINDOW_XID (private->plug_window))) { gboolean result; GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - destroy notify")); - gdk_window_destroy_notify (socket->plug_window); + gdk_window_destroy_notify (private->plug_window); _gtk_socket_end_embedding (socket); g_object_ref (widget); @@ -540,12 +543,12 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, return_val = GDK_FILTER_REMOVE; break; case MapRequest: - if (!socket->plug_window) + if (!private->plug_window) { _gtk_socket_add_window (socket, xevent->xmaprequest.window, FALSE); } - if (socket->plug_window) + if (private->plug_window) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - Map Request")); @@ -554,15 +557,15 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, } break; case PropertyNotify: - if (socket->plug_window && - xevent->xproperty.window == GDK_WINDOW_XID (socket->plug_window)) + if (private->plug_window && + xevent->xproperty.window == GDK_WINDOW_XID (private->plug_window)) { GdkDragProtocol protocol; if (xevent->xproperty.atom == gdk_x11_get_xatom_by_name_for_display (display, "WM_NORMAL_HINTS")) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - received PropertyNotify for plug's WM_NORMAL_HINTS")); - socket->have_size = FALSE; + private->have_size = FALSE; gtk_widget_queue_resize (widget); return_val = GDK_FILTER_REMOVE; } @@ -574,7 +577,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, xevent->xproperty.window, &protocol)) gtk_drag_dest_set_proxy (GTK_WIDGET (socket), - socket->plug_window, + private->plug_window, protocol, TRUE); gdk_error_trap_pop_ignored (); @@ -584,9 +587,9 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, { unsigned long flags; - if (xembed_get_info (socket->plug_window, NULL, &flags)) + if (xembed_get_info (private->plug_window, NULL, &flags)) { - gboolean was_mapped = socket->is_mapped; + gboolean was_mapped = private->is_mapped; gboolean is_mapped = (flags & XEMBED_MAPPED) != 0; if (was_mapped != is_mapped) @@ -596,7 +599,7 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, else { gdk_error_trap_push (); - gdk_window_show (socket->plug_window); + gdk_window_show (private->plug_window); gdk_error_trap_pop_ignored (); _gtk_socket_unmap_notify (socket); @@ -615,12 +618,12 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, window = gtk_widget_get_window (widget); GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - ReparentNotify received")); - if (!socket->plug_window && + if (!private->plug_window && xre->parent == GDK_WINDOW_XID (window)) { _gtk_socket_add_window (socket, xre->window, FALSE); - if (socket->plug_window) + if (private->plug_window) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - window reparented")); } @@ -629,8 +632,8 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, } else { - if (socket->plug_window && - xre->window == GDK_WINDOW_XID (socket->plug_window) && + if (private->plug_window && + xre->window == GDK_WINDOW_XID (private->plug_window) && xre->parent != GDK_WINDOW_XID (window)) { gboolean result; @@ -650,8 +653,8 @@ _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, break; } case UnmapNotify: - if (socket->plug_window && - xevent->xunmap.window == GDK_WINDOW_XID (socket->plug_window)) + if (private->plug_window && + xevent->xunmap.window == GDK_WINDOW_XID (private->plug_window)) { GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - Unmap notify")); diff --git a/gtk/gtksocket.c b/gtk/gtksocket.c index b50d1c8384..016c6073b4 100644 --- a/gtk/gtksocket.c +++ b/gtk/gtksocket.c @@ -31,11 +31,10 @@ #include -#include "gdk/gdkkeysyms.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtksizerequest.h" -#include "gtkwindow.h" +#include "gtkwindowprivate.h" #include "gtkplug.h" #include "gtkprivate.h" #include "gtksocketprivate.h" @@ -44,6 +43,10 @@ #include "gtkintl.h" #include "gtkwidgetprivate.h" +#ifdef GDK_WINDOWING_X11 +#include "x11/gdkx.h" +#endif + /** * SECTION:gtksocket @@ -158,29 +161,15 @@ enum { static guint socket_signals[LAST_SIGNAL] = { 0 }; -/* - * _gtk_socket_get_private: - * - * @socket: a #GtkSocket - * - * Returns the private data associated with a GtkSocket, creating it - * first if necessary. - */ -GtkSocketPrivate * -_gtk_socket_get_private (GtkSocket *socket) -{ - return G_TYPE_INSTANCE_GET_PRIVATE (socket, GTK_TYPE_SOCKET, GtkSocketPrivate); -} - G_DEFINE_TYPE (GtkSocket, gtk_socket, GTK_TYPE_CONTAINER) static void gtk_socket_finalize (GObject *object) { GtkSocket *socket = GTK_SOCKET (object); - - g_object_unref (socket->accel_group); - socket->accel_group = NULL; + GtkSocketPrivate *priv = socket->priv; + + g_object_unref (priv->accel_group); G_OBJECT_CLASS (gtk_socket_parent_class)->finalize (object); } @@ -213,7 +202,7 @@ gtk_socket_class_init (GtkSocketClass *class) /* We don't want to show_all the in-process plug, if any. */ widget_class->show_all = gtk_widget_show; - + container_class->remove = gtk_socket_remove; container_class->forall = gtk_socket_forall; @@ -258,20 +247,26 @@ gtk_socket_class_init (GtkSocketClass *class) static void gtk_socket_init (GtkSocket *socket) { - socket->request_width = 0; - socket->request_height = 0; - socket->current_width = 0; - socket->current_height = 0; - - socket->plug_window = NULL; - socket->plug_widget = NULL; - socket->focus_in = FALSE; - socket->have_size = FALSE; - socket->need_map = FALSE; - socket->active = FALSE; + GtkSocketPrivate *priv; - socket->accel_group = gtk_accel_group_new (); - g_object_set_data (G_OBJECT (socket->accel_group), I_("gtk-socket"), socket); + priv = G_TYPE_INSTANCE_GET_PRIVATE (socket, + GTK_TYPE_SOCKET, + GtkSocketPrivate); + socket->priv = priv; + priv->request_width = 0; + priv->request_height = 0; + priv->current_width = 0; + priv->current_height = 0; + + priv->plug_window = NULL; + priv->plug_widget = NULL; + priv->focus_in = FALSE; + priv->have_size = FALSE; + priv->need_map = FALSE; + priv->active = FALSE; + + priv->accel_group = gtk_accel_group_new (); + g_object_set_data (G_OBJECT (priv->accel_group), I_("gtk-socket"), socket); } /** @@ -363,7 +358,7 @@ gtk_socket_get_plug_window (GtkSocket *socket) { g_return_val_if_fail (GTK_IS_SOCKET (socket), NULL); - return socket->plug_window; + return socket->priv->plug_window; } static void @@ -395,9 +390,8 @@ gtk_socket_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, socket); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), - window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + window); _gtk_socket_windowing_realize_window (socket); @@ -422,33 +416,34 @@ gtk_socket_realize (GtkWidget *widget) void _gtk_socket_end_embedding (GtkSocket *socket) { - GtkSocketPrivate *private = _gtk_socket_get_private (socket); + GtkSocketPrivate *private = socket->priv; GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket)); - + if (GTK_IS_WINDOW (toplevel)) _gtk_socket_windowing_end_embedding_toplevel (socket); - g_object_unref (socket->plug_window); - socket->plug_window = NULL; - socket->current_width = 0; - socket->current_height = 0; + g_object_unref (private->plug_window); + private->plug_window = NULL; + private->current_width = 0; + private->current_height = 0; private->resize_count = 0; - gtk_accel_group_disconnect (socket->accel_group, NULL); + gtk_accel_group_disconnect (private->accel_group, NULL); } static void gtk_socket_unrealize (GtkWidget *widget) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; gtk_widget_set_realized (widget, FALSE); - if (socket->plug_widget) + if (private->plug_widget) { - _gtk_plug_remove_from_socket (GTK_PLUG (socket->plug_widget), socket); + _gtk_plug_remove_from_socket (GTK_PLUG (private->plug_widget), socket); } - else if (socket->plug_window) + else if (private->plug_window) { _gtk_socket_end_embedding (socket); } @@ -462,18 +457,19 @@ gtk_socket_get_preferred_width (GtkWidget *widget, gint *natural) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; - if (socket->plug_widget) + if (private->plug_widget) { - gtk_widget_get_preferred_width (socket->plug_widget, minimum, natural); + gtk_widget_get_preferred_width (private->plug_widget, minimum, natural); } else { - if (socket->is_mapped && !socket->have_size && socket->plug_window) + if (private->is_mapped && !private->have_size && private->plug_window) _gtk_socket_windowing_size_request (socket); - if (socket->is_mapped && socket->have_size) - *minimum = *natural = MAX (socket->request_width, 1); + if (private->is_mapped && private->have_size) + *minimum = *natural = MAX (private->request_width, 1); else *minimum = *natural = 1; } @@ -485,18 +481,19 @@ gtk_socket_get_preferred_height (GtkWidget *widget, gint *natural) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; - if (socket->plug_widget) + if (private->plug_widget) { - gtk_widget_get_preferred_height (socket->plug_widget, minimum, natural); + gtk_widget_get_preferred_height (private->plug_widget, minimum, natural); } else { - if (socket->is_mapped && !socket->have_size && socket->plug_window) + if (private->is_mapped && !private->have_size && private->plug_window) _gtk_socket_windowing_size_request (socket); - if (socket->is_mapped && socket->have_size) - *minimum = *natural = MAX (socket->request_height, 1); + if (private->is_mapped && private->have_size) + *minimum = *natural = MAX (private->request_height, 1); else *minimum = *natural = 1; } @@ -507,6 +504,7 @@ gtk_socket_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; gtk_widget_set_allocation (widget, allocation); if (gtk_widget_get_realized (widget)) @@ -515,7 +513,7 @@ gtk_socket_size_allocate (GtkWidget *widget, allocation->x, allocation->y, allocation->width, allocation->height); - if (socket->plug_widget) + if (private->plug_widget) { GtkAllocation child_allocation; @@ -524,18 +522,16 @@ gtk_socket_size_allocate (GtkWidget *widget, child_allocation.width = allocation->width; child_allocation.height = allocation->height; - gtk_widget_size_allocate (socket->plug_widget, &child_allocation); + gtk_widget_size_allocate (private->plug_widget, &child_allocation); } - else if (socket->plug_window) + else if (private->plug_window) { - GtkSocketPrivate *private = _gtk_socket_get_private (socket); - gdk_error_trap_push (); - - if (allocation->width != socket->current_width || - allocation->height != socket->current_height) + + if (allocation->width != private->current_width || + allocation->height != private->current_height) { - gdk_window_move_resize (socket->plug_window, + gdk_window_move_resize (private->plug_window, 0, 0, allocation->width, allocation->height); if (private->resize_count) @@ -544,14 +540,14 @@ gtk_socket_size_allocate (GtkWidget *widget, GTK_NOTE (PLUGSOCKET, g_message ("GtkSocket - allocated: %d %d", allocation->width, allocation->height)); - socket->current_width = allocation->width; - socket->current_height = allocation->height; + private->current_width = allocation->width; + private->current_height = allocation->height; } - if (socket->need_map) + if (private->need_map) { - gdk_window_show (socket->plug_window); - socket->need_map = FALSE; + gdk_window_show (private->plug_window); + private->need_map = FALSE; } while (private->resize_count) @@ -580,7 +576,7 @@ activate_key (GtkAccelGroup *accel_group, GtkSocket *socket = g_object_get_data (G_OBJECT (accel_group), "gtk-socket"); gboolean retval = FALSE; - if (gdk_event && gdk_event->type == GDK_KEY_PRESS && socket->plug_window) + if (gdk_event && gdk_event->type == GDK_KEY_PRESS && socket->priv->plug_window) { _gtk_socket_windowing_send_key_event (socket, gdk_event, FALSE); retval = TRUE; @@ -626,7 +622,7 @@ _gtk_socket_add_grabbed_key (GtkSocket *socket, grabbed_key->accel_key = keyval; grabbed_key->accel_mods = modifiers; - if (gtk_accel_group_find (socket->accel_group, + if (gtk_accel_group_find (socket->priv->accel_group, find_accel_key, &grabbed_key)) { @@ -638,7 +634,7 @@ _gtk_socket_add_grabbed_key (GtkSocket *socket, closure = g_cclosure_new (G_CALLBACK (activate_key), grabbed_key, (GClosureNotify)g_free); - gtk_accel_group_connect (socket->accel_group, keyval, modifiers, GTK_ACCEL_LOCKED, + gtk_accel_group_connect (socket->priv->accel_group, keyval, modifiers, GTK_ACCEL_LOCKED, closure); } @@ -657,7 +653,7 @@ _gtk_socket_remove_grabbed_key (GtkSocket *socket, guint keyval, GdkModifierType modifiers) { - if (!gtk_accel_group_disconnect_key (socket->accel_group, keyval, modifiers)) + if (!gtk_accel_group_disconnect_key (socket->priv->accel_group, keyval, modifiers)) g_warning ("GtkSocket: request to remove non-present grabbed key %u,%#x\n", keyval, modifiers); } @@ -665,9 +661,10 @@ _gtk_socket_remove_grabbed_key (GtkSocket *socket, static void socket_update_focus_in (GtkSocket *socket) { + GtkSocketPrivate *private = socket->priv; gboolean focus_in = FALSE; - if (socket->plug_window) + if (private->plug_window) { GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket)); @@ -677,9 +674,9 @@ socket_update_focus_in (GtkSocket *socket) focus_in = TRUE; } - if (focus_in != socket->focus_in) + if (focus_in != private->focus_in) { - socket->focus_in = focus_in; + private->focus_in = focus_in; _gtk_socket_windowing_focus_change (socket, focus_in); } @@ -688,9 +685,10 @@ socket_update_focus_in (GtkSocket *socket) static void socket_update_active (GtkSocket *socket) { + GtkSocketPrivate *private = socket->priv; gboolean active = FALSE; - if (socket->plug_window) + if (private->plug_window) { GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (socket)); @@ -699,9 +697,9 @@ socket_update_active (GtkSocket *socket) active = TRUE; } - if (active != socket->active) + if (active != private->active) { - socket->active = active; + private->active = active; _gtk_socket_windowing_update_active (socket, active); } @@ -712,32 +710,33 @@ gtk_socket_hierarchy_changed (GtkWidget *widget, GtkWidget *old_toplevel) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; GtkWidget *toplevel = gtk_widget_get_toplevel (widget); if (toplevel && !GTK_IS_WINDOW (toplevel)) toplevel = NULL; - if (toplevel != socket->toplevel) + if (toplevel != private->toplevel) { - if (socket->toplevel) + if (private->toplevel) { - gtk_window_remove_accel_group (GTK_WINDOW (socket->toplevel), socket->accel_group); - g_signal_handlers_disconnect_by_func (socket->toplevel, + gtk_window_remove_accel_group (GTK_WINDOW (private->toplevel), private->accel_group); + g_signal_handlers_disconnect_by_func (private->toplevel, socket_update_focus_in, socket); - g_signal_handlers_disconnect_by_func (socket->toplevel, + g_signal_handlers_disconnect_by_func (private->toplevel, socket_update_active, socket); } - socket->toplevel = toplevel; + private->toplevel = toplevel; if (toplevel) { - gtk_window_add_accel_group (GTK_WINDOW (socket->toplevel), socket->accel_group); - g_signal_connect_swapped (socket->toplevel, "notify::has-toplevel-focus", + gtk_window_add_accel_group (GTK_WINDOW (private->toplevel), private->accel_group); + g_signal_connect_swapped (private->toplevel, "notify::has-toplevel-focus", G_CALLBACK (socket_update_focus_in), socket); - g_signal_connect_swapped (socket->toplevel, "notify::is-active", + g_signal_connect_swapped (private->toplevel, "notify::is-active", G_CALLBACK (socket_update_active), socket); } @@ -752,7 +751,7 @@ gtk_socket_grab_notify (GtkWidget *widget, { GtkSocket *socket = GTK_SOCKET (widget); - if (!socket->same_app) + if (!socket->priv->same_app) _gtk_socket_windowing_update_modality (socket, !was_grabbed); } @@ -761,8 +760,9 @@ gtk_socket_key_event (GtkWidget *widget, GdkEventKey *event) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; - if (gtk_widget_has_focus (widget) && socket->plug_window && !socket->plug_widget) + if (gtk_widget_has_focus (widget) && private->plug_window && !private->plug_widget) { _gtk_socket_windowing_send_key_event (socket, (GdkEvent *) event, FALSE); @@ -794,9 +794,10 @@ _gtk_socket_claim_focus (GtkSocket *socket, gboolean send_event) { GtkWidget *widget = GTK_WIDGET (socket); + GtkSocketPrivate *private = socket->priv; if (!send_event) - socket->focus_in = TRUE; /* Otherwise, our notify handler will send FOCUS_IN */ + private->focus_in = TRUE; /* Otherwise, our notify handler will send FOCUS_IN */ /* Oh, the trickery... */ @@ -810,9 +811,10 @@ gtk_socket_focus (GtkWidget *widget, GtkDirectionType direction) { GtkSocket *socket = GTK_SOCKET (widget); + GtkSocketPrivate *private = socket->priv; - if (socket->plug_widget) - return gtk_widget_child_focus (socket->plug_widget, direction); + if (private->plug_widget) + return gtk_widget_child_focus (private->plug_widget, direction); if (!gtk_widget_is_focus (widget)) { @@ -830,10 +832,11 @@ gtk_socket_remove (GtkContainer *container, GtkWidget *child) { GtkSocket *socket = GTK_SOCKET (container); + GtkSocketPrivate *private = socket->priv; - g_return_if_fail (child == socket->plug_widget); + g_return_if_fail (child == private->plug_widget); - _gtk_plug_remove_from_socket (GTK_PLUG (socket->plug_widget), socket); + _gtk_plug_remove_from_socket (GTK_PLUG (private->plug_widget), socket); } static void @@ -843,9 +846,10 @@ gtk_socket_forall (GtkContainer *container, gpointer callback_data) { GtkSocket *socket = GTK_SOCKET (container); + GtkSocketPrivate *private = socket->priv; - if (socket->plug_widget) - (* callback) (socket->plug_widget, callback_data); + if (private->plug_widget) + (* callback) (private->plug_widget, callback_data); } /** @@ -866,53 +870,62 @@ _gtk_socket_add_window (GtkSocket *socket, GtkWidget *widget = GTK_WIDGET (socket); GdkDisplay *display = gtk_widget_get_display (widget); gpointer user_data = NULL; - - socket->plug_window = gdk_window_lookup_for_display (display, xid); + GtkSocketPrivate *private = socket->priv; - if (socket->plug_window) +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + private->plug_window = gdk_x11_window_lookup_for_display (display, xid); + else +#endif + private->plug_window = NULL; + + if (private->plug_window) { - g_object_ref (socket->plug_window); - gdk_window_get_user_data (socket->plug_window, &user_data); + g_object_ref (private->plug_window); + gdk_window_get_user_data (private->plug_window, &user_data); } - if (user_data) /* A widget's window in this process */ + if (user_data) /* A widget's window in this process */ { GtkWidget *child_widget = user_data; if (!GTK_IS_PLUG (child_widget)) - { - g_warning (G_STRLOC ": Can't add non-GtkPlug to GtkSocket"); - socket->plug_window = NULL; - gdk_error_trap_pop_ignored (); - - return; - } + { + g_warning (G_STRLOC ": Can't add non-GtkPlug to GtkSocket"); + private->plug_window = NULL; + gdk_error_trap_pop_ignored (); + + return; + } _gtk_plug_add_to_socket (GTK_PLUG (child_widget), socket); } - else /* A foreign window */ + else /* A foreign window */ { GtkWidget *toplevel; GdkDragProtocol protocol; gdk_error_trap_push (); - if (!socket->plug_window) - { - socket->plug_window = gdk_window_foreign_new_for_display (display, xid); - if (!socket->plug_window) /* was deleted before we could get it */ - { - gdk_error_trap_pop_ignored (); - return; - } - } - + if (!private->plug_window) + { +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (display)) + private->plug_window = gdk_x11_window_foreign_new_for_display (display, xid); +#endif + if (!private->plug_window) /* was deleted before we could get it */ + { + gdk_error_trap_pop_ignored (); + return; + } + } + _gtk_socket_windowing_select_plug_window_input (socket); if (gdk_error_trap_pop ()) { - g_object_unref (socket->plug_window); - socket->plug_window = NULL; + g_object_unref (private->plug_window); + private->plug_window = NULL; return; } @@ -922,25 +935,25 @@ _gtk_socket_add_window (GtkSocket *socket, if (need_reparent) { - gdk_window_hide (socket->plug_window); /* Shouldn't actually be necessary for XEMBED, but just in case */ - gdk_window_reparent (socket->plug_window, + gdk_window_hide (private->plug_window); /* Shouldn't actually be necessary for XEMBED, but just in case */ + gdk_window_reparent (private->plug_window, gtk_widget_get_window (widget), 0, 0); } - socket->have_size = FALSE; + private->have_size = FALSE; _gtk_socket_windowing_embed_get_info (socket); - socket->need_map = socket->is_mapped; + private->need_map = private->is_mapped; if (gdk_drag_get_protocol_for_display (display, xid, &protocol)) - gtk_drag_dest_set_proxy (GTK_WIDGET (socket), socket->plug_window, + gtk_drag_dest_set_proxy (GTK_WIDGET (socket), private->plug_window, protocol, TRUE); gdk_error_trap_pop_ignored (); - gdk_window_add_filter (socket->plug_window, + gdk_window_add_filter (private->plug_window, _gtk_socket_windowing_filter_func, socket); @@ -958,7 +971,7 @@ _gtk_socket_add_window (GtkSocket *socket, gtk_widget_queue_resize (GTK_WIDGET (socket)); } - if (socket->plug_window) + if (private->plug_window) g_signal_emit (socket, socket_signals[PLUG_ADDED], 0); } @@ -972,10 +985,11 @@ _gtk_socket_add_window (GtkSocket *socket, void _gtk_socket_handle_map_request (GtkSocket *socket) { - if (!socket->is_mapped) + GtkSocketPrivate *private = socket->priv; + if (!private->is_mapped) { - socket->is_mapped = TRUE; - socket->need_map = TRUE; + private->is_mapped = TRUE; + private->need_map = TRUE; gtk_widget_queue_resize (GTK_WIDGET (socket)); } @@ -991,9 +1005,10 @@ _gtk_socket_handle_map_request (GtkSocket *socket) void _gtk_socket_unmap_notify (GtkSocket *socket) { - if (socket->is_mapped) + GtkSocketPrivate *private = socket->priv; + if (private->is_mapped) { - socket->is_mapped = FALSE; + private->is_mapped = FALSE; gtk_widget_queue_resize (GTK_WIDGET (socket)); } } diff --git a/gtk/gtksocket.h b/gtk/gtksocket.h index e3cd3a36ce..139d6a247f 100644 --- a/gtk/gtksocket.h +++ b/gtk/gtksocket.h @@ -44,29 +44,13 @@ G_BEGIN_DECLS typedef struct _GtkSocket GtkSocket; typedef struct _GtkSocketClass GtkSocketClass; +typedef struct _GtkSocketPrivate GtkSocketPrivate; struct _GtkSocket { GtkContainer container; - guint16 GSEAL (request_width); - guint16 GSEAL (request_height); - guint16 GSEAL (current_width); - guint16 GSEAL (current_height); - - GdkWindow *GSEAL (plug_window); - GtkWidget *GSEAL (plug_widget); - - gshort GSEAL (xembed_version); /* -1 == not xembed */ - guint GSEAL (same_app) : 1; - guint GSEAL (focus_in) : 1; - guint GSEAL (have_size) : 1; - guint GSEAL (need_map) : 1; - guint GSEAL (is_mapped) : 1; - guint GSEAL (active) : 1; - - GtkAccelGroup *GSEAL (accel_group); - GtkWidget *GSEAL (toplevel); + GtkSocketPrivate *priv; }; struct _GtkSocketClass diff --git a/gtk/gtksocketprivate.h b/gtk/gtksocketprivate.h index 44a6c6b36e..5fb7525f8f 100644 --- a/gtk/gtksocketprivate.h +++ b/gtk/gtksocketprivate.h @@ -26,33 +26,50 @@ #ifndef __GTK_SOCKET_PRIVATE_H__ #define __GTK_SOCKET_PRIVATE_H__ -typedef struct _GtkSocketPrivate GtkSocketPrivate; +#include "gtksocket.h" struct _GtkSocketPrivate { gint resize_count; + + guint16 request_width; + guint16 request_height; + guint16 current_width; + guint16 current_height; + + GdkWindow *plug_window; + GtkWidget *plug_widget; + + gshort xembed_version; /* -1 == not xembed */ + guint same_app : 1; + guint focus_in : 1; + guint have_size : 1; + guint need_map : 1; + guint is_mapped : 1; + guint active : 1; + + GtkAccelGroup *accel_group; + GtkWidget *toplevel; }; /* In gtksocket.c: */ -GtkSocketPrivate *_gtk_socket_get_private (GtkSocket *socket); - void _gtk_socket_add_grabbed_key (GtkSocket *socket, - guint keyval, - GdkModifierType modifiers); + guint keyval, + GdkModifierType modifiers); void _gtk_socket_remove_grabbed_key (GtkSocket *socket, - guint keyval, - GdkModifierType modifiers); -void _gtk_socket_claim_focus (GtkSocket *socket, - gboolean send_event); -void _gtk_socket_add_window (GtkSocket *socket, - GdkNativeWindow xid, - gboolean need_reparent); + guint keyval, + GdkModifierType modifiers); +void _gtk_socket_claim_focus (GtkSocket *socket, + gboolean send_event); +void _gtk_socket_add_window (GtkSocket *socket, + GdkNativeWindow xid, + gboolean need_reparent); void _gtk_socket_end_embedding (GtkSocket *socket); void _gtk_socket_handle_map_request (GtkSocket *socket); void _gtk_socket_unmap_notify (GtkSocket *socket); void _gtk_socket_advance_toplevel_focus (GtkSocket *socket, - GtkDirectionType direction); + GtkDirectionType direction); /* In backend-specific file: */ @@ -88,36 +105,36 @@ void _gtk_socket_windowing_size_request (GtkSocket *socket); * */ void _gtk_socket_windowing_send_key_event (GtkSocket *socket, - GdkEvent *gdk_event, - gboolean mask_key_presses); + GdkEvent *gdk_event, + gboolean mask_key_presses); /* * _gtk_socket_windowing_focus_change: * */ void _gtk_socket_windowing_focus_change (GtkSocket *socket, - gboolean focus_in); + gboolean focus_in); /* * _gtk_socket_windowing_update_active: * */ void _gtk_socket_windowing_update_active (GtkSocket *socket, - gboolean active); + gboolean active); /* * _gtk_socket_windowing_update_modality: * */ void _gtk_socket_windowing_update_modality (GtkSocket *socket, - gboolean modality); + gboolean modality); /* * _gtk_socket_windowing_focus: * */ void _gtk_socket_windowing_focus (GtkSocket *socket, - GtkDirectionType direction); + GtkDirectionType direction); /* * _gtk_socket_windowing_send_configure_event: @@ -165,7 +182,7 @@ void _gtk_socket_windowing_embed_set_focus_wrapped (void); * */ GdkFilterReturn _gtk_socket_windowing_filter_func (GdkXEvent *gdk_xevent, - GdkEvent *event, - gpointer data); + GdkEvent *event, + gpointer data); #endif /* __GTK_SOCKET_PRIVATE_H__ */ diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index a8e0f0833c..5ba8036d47 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -24,32 +24,123 @@ * 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "config.h" + #include #include #include #include #include -#include "gdk/gdkkeysyms.h" + #include "gtkbindings.h" #include "gtkspinbutton.h" #include "gtkentryprivate.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtksettings.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" #define MIN_SPIN_BUTTON_WIDTH 30 #define MAX_TIMER_CALLS 5 #define EPSILON 1e-10 -#define MAX_DIGITS 20 +#define MAX_DIGITS 20 #define MIN_ARROW_WIDTH 6 +/** + * SECTION:gtkspinbutton + * @Title: GtkSpinButton + * @Short_description: Retrieve an integer or floating-point number from + * the user + * @See_also: #GtkEntry + * + * A #GtkSpinButton is an ideal way to allow the user to set the value of + * some attribute. Rather than having to directly type a number into a + * #GtkEntry, GtkSpinButton allows the user to click on one of two arrows + * to increment or decrement the displayed value. A value can still be + * typed in, with the bonus that it can be checked to ensure it is in a + * given range. + * + * The main properties of a GtkSpinButton are through an adjustment. + * See the #GtkAdjustment section for more details about an adjustment's + * properties. + * + * + * Using a GtkSpinButton to get an integer + * + * /* Provides a function to retrieve an integer value from a + * * GtkSpinButton and creates a spin button to model percentage + * * values. + * */ + * + * gint + * grab_int_value (GtkSpinButton *button, + * gpointer user_data) + * { + * return gtk_spin_button_get_value_as_int (button); + * } + * + * void + * create_integer_spin_button (void) + * { + * + * GtkWidget *window, *button; + * GtkAdjustment *adjustment; + * + * adjustment = gtk_adjustment_new (50.0, 0.0, 100.0, 1.0, 5.0, 0.0); + * + * window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + * gtk_container_set_border_width (GTK_CONTAINER (window), 5); + * + * /* creates the spinbutton, with no decimal places */ + * button = gtk_spin_button_new (adjustment, 1.0, 0); + * gtk_container_add (GTK_CONTAINER (window), button); + * + * gtk_widget_show_all (window); + * } + * + * + * + * + * Using a GtkSpinButton to get a floating point value + * + * /* Provides a function to retrieve a floating point value from a + * * GtkSpinButton, and creates a high precision spin button. + * */ + * + * gfloat + * grab_float_value (GtkSpinButton *button, + * gpointer user_data) + * { + * return gtk_spin_button_get_value (button); + * } + * + * void + * create_floating_spin_button (void) + * { + * GtkWidget *window, *button; + * GtkAdjustment *adjustment; + * + * adjustment = gtk_adjustment_new (2.500, 0.0, 5.0, 0.001, 0.1, 0.0); + * + * window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + * gtk_container_set_border_width (GTK_CONTAINER (window), 5); + * + * /* creates the spinbutton, with three decimal places */ + * button = gtk_spin_button_new (adjustment, 0.001, 3); + * gtk_container_add (GTK_CONTAINER (window), button); + * + * gtk_widget_show_all (window); + * } + * + * + */ + struct _GtkSpinButtonPrivate { GtkSpinButtonUpdatePolicy update_policy; @@ -99,13 +190,13 @@ enum static void gtk_spin_button_editable_init (GtkEditableInterface *iface); static void gtk_spin_button_finalize (GObject *object); static void gtk_spin_button_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); + guint prop_id, + const GValue *value, + GParamSpec *pspec); static void gtk_spin_button_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); + guint prop_id, + GValue *value, + GParamSpec *pspec); static void gtk_spin_button_destroy (GtkWidget *widget); static void gtk_spin_button_map (GtkWidget *widget); static void gtk_spin_button_unmap (GtkWidget *widget); @@ -116,69 +207,68 @@ static void gtk_spin_button_get_preferred_width (GtkWidget *widget, gint *natural); static void gtk_spin_button_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); + GtkAllocation *allocation); static gint gtk_spin_button_draw (GtkWidget *widget, cairo_t *cr); static gint gtk_spin_button_button_press (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gint gtk_spin_button_button_release (GtkWidget *widget, - GdkEventButton *event); + GdkEventButton *event); static gint gtk_spin_button_motion_notify (GtkWidget *widget, - GdkEventMotion *event); + GdkEventMotion *event); static gint gtk_spin_button_enter_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gint gtk_spin_button_leave_notify (GtkWidget *widget, - GdkEventCrossing *event); + GdkEventCrossing *event); static gint gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event); + GdkEventFocus *event); static void gtk_spin_button_grab_notify (GtkWidget *widget, - gboolean was_grabbed); -static void gtk_spin_button_state_changed (GtkWidget *widget, - GtkStateType previous_state); -static void gtk_spin_button_style_set (GtkWidget *widget, - GtkStyle *previous_style); + gboolean was_grabbed); +static void gtk_spin_button_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); +static void gtk_spin_button_style_updated (GtkWidget *widget); static void gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, - cairo_t *cr, - GtkArrowType arrow_type); + GtkStyleContext *context, + cairo_t *cr, + GtkArrowType arrow_type); static gboolean gtk_spin_button_timer (GtkSpinButton *spin_button); static void gtk_spin_button_stop_spinning (GtkSpinButton *spin); static void gtk_spin_button_value_changed (GtkAdjustment *adjustment, - GtkSpinButton *spin_button); + GtkSpinButton *spin_button); static gint gtk_spin_button_key_release (GtkWidget *widget, - GdkEventKey *event); + GdkEventKey *event); static gint gtk_spin_button_scroll (GtkWidget *widget, - GdkEventScroll *event); + GdkEventScroll *event); static void gtk_spin_button_activate (GtkEntry *entry); static void gtk_spin_button_get_text_area_size (GtkEntry *entry, - gint *x, - gint *y, - gint *width, - gint *height); + gint *x, + gint *y, + gint *width, + gint *height); static void gtk_spin_button_snap (GtkSpinButton *spin_button, - gdouble val); + gdouble val); static void gtk_spin_button_insert_text (GtkEditable *editable, - const gchar *new_text, - gint new_text_length, - gint *position); + const gchar *new_text, + gint new_text_length, + gint *position); static void gtk_spin_button_real_spin (GtkSpinButton *spin_button, - gdouble step); + gdouble step); static void gtk_spin_button_real_change_value (GtkSpinButton *spin, - GtkScrollType scroll); + GtkScrollType scroll); static gint gtk_spin_button_default_input (GtkSpinButton *spin_button, - gdouble *new_val); + gdouble *new_val); static gint gtk_spin_button_default_output (GtkSpinButton *spin_button); static gint spin_button_get_arrow_size (GtkSpinButton *spin_button); -static gint spin_button_get_shadow_type (GtkSpinButton *spin_button); static guint spinbutton_signals[LAST_SIGNAL] = {0}; #define NO_ARROW 2 G_DEFINE_TYPE_WITH_CODE (GtkSpinButton, gtk_spin_button, GTK_TYPE_ENTRY, - G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, - gtk_spin_button_editable_init)) + G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, + gtk_spin_button_editable_init)) #define add_spin_binding(binding_set, keyval, mask, scroll) \ gtk_binding_entry_add_signal (binding_set, keyval, mask, \ @@ -214,8 +304,8 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) widget_class->leave_notify_event = gtk_spin_button_leave_notify; widget_class->focus_out_event = gtk_spin_button_focus_out; widget_class->grab_notify = gtk_spin_button_grab_notify; - widget_class->state_changed = gtk_spin_button_state_changed; - widget_class->style_set = gtk_spin_button_style_set; + widget_class->state_flags_changed = gtk_spin_button_state_flags_changed; + widget_class->style_updated = gtk_spin_button_style_updated; entry_class->activate = gtk_spin_button_activate; entry_class->get_text_area_size = gtk_spin_button_get_text_area_size; @@ -231,92 +321,108 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) P_("The adjustment that holds the value of the spin button"), GTK_TYPE_ADJUSTMENT, GTK_PARAM_READWRITE)); - + g_object_class_install_property (gobject_class, PROP_CLIMB_RATE, g_param_spec_double ("climb-rate", - P_("Climb Rate"), - P_("The acceleration rate when you hold down a button"), - 0.0, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - + P_("Climb Rate"), + P_("The acceleration rate when you hold down a button"), + 0.0, + G_MAXDOUBLE, + 0.0, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_DIGITS, g_param_spec_uint ("digits", - P_("Digits"), - P_("The number of decimal places to display"), - 0, - MAX_DIGITS, - 0, - GTK_PARAM_READWRITE)); - + P_("Digits"), + P_("The number of decimal places to display"), + 0, + MAX_DIGITS, + 0, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_SNAP_TO_TICKS, g_param_spec_boolean ("snap-to-ticks", - P_("Snap to Ticks"), - P_("Whether erroneous values are automatically changed to a spin button's nearest step increment"), - FALSE, - GTK_PARAM_READWRITE)); - + P_("Snap to Ticks"), + P_("Whether erroneous values are automatically changed to a spin button's nearest step increment"), + FALSE, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_NUMERIC, g_param_spec_boolean ("numeric", - P_("Numeric"), - P_("Whether non-numeric characters should be ignored"), - FALSE, - GTK_PARAM_READWRITE)); - + P_("Numeric"), + P_("Whether non-numeric characters should be ignored"), + FALSE, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_WRAP, g_param_spec_boolean ("wrap", - P_("Wrap"), - P_("Whether a spin button should wrap upon reaching its limits"), - FALSE, - GTK_PARAM_READWRITE)); - + P_("Wrap"), + P_("Whether a spin button should wrap upon reaching its limits"), + FALSE, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_UPDATE_POLICY, g_param_spec_enum ("update-policy", - P_("Update Policy"), - P_("Whether the spin button should update always, or only when the value is legal"), - GTK_TYPE_SPIN_BUTTON_UPDATE_POLICY, - GTK_UPDATE_ALWAYS, - GTK_PARAM_READWRITE)); - + P_("Update Policy"), + P_("Whether the spin button should update always, or only when the value is legal"), + GTK_TYPE_SPIN_BUTTON_UPDATE_POLICY, + GTK_UPDATE_ALWAYS, + GTK_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, PROP_VALUE, g_param_spec_double ("value", - P_("Value"), - P_("Reads the current value, or sets a new value"), - -G_MAXDOUBLE, - G_MAXDOUBLE, - 0.0, - GTK_PARAM_READWRITE)); - + P_("Value"), + P_("Reads the current value, or sets a new value"), + -G_MAXDOUBLE, + G_MAXDOUBLE, + 0.0, + GTK_PARAM_READWRITE)); + gtk_widget_class_install_style_property_parser (widget_class, - g_param_spec_enum ("shadow-type", - "Shadow Type", - P_("Style of bevel around the spin button"), - GTK_TYPE_SHADOW_TYPE, - GTK_SHADOW_IN, - GTK_PARAM_READABLE), - gtk_rc_property_parse_enum); + g_param_spec_enum ("shadow-type", + "Shadow Type", + P_("Style of bevel around the spin button"), + GTK_TYPE_SHADOW_TYPE, + GTK_SHADOW_IN, + GTK_PARAM_READABLE), + gtk_rc_property_parse_enum); + + /** + * GtkSpinButton::input: + * @spin_button: the object on which the signal was emitted + * @new_value: return location for the new value + * + * The ::input signal can be used to influence the conversion of + * the users input into a double value. The signal handler is + * expected to use gtk_entry_get_text() to retrieve the text of + * the entry and set @new_value to the new value. + * + * The default conversion uses g_strtod(). + * + * Returns: %TRUE for a successful conversion, %FALSE if the input + * was not handled, and %GTK_INPUT_ERROR if the conversion failed. + */ spinbutton_signals[INPUT] = g_signal_new (I_("input"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkSpinButtonClass, input), - NULL, NULL, - _gtk_marshal_INT__POINTER, - G_TYPE_INT, 1, - G_TYPE_POINTER); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkSpinButtonClass, input), + NULL, NULL, + _gtk_marshal_INT__POINTER, + G_TYPE_INT, 1, + G_TYPE_POINTER); /** * GtkSpinButton::output: * @spin_button: the object which received the signal - * + * * The ::output signal can be used to change to formatting * of the value that is displayed in the spin buttons entry. * |[ @@ -325,39 +431,39 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) * on_output (GtkSpinButton *spin, * gpointer data) * { - * GtkAdjustment *adj; + * GtkAdjustment *adjustment; * gchar *text; * int value; - * - * adj = gtk_spin_button_get_adjustment (spin); - * value = (int)gtk_adjustment_get_value (adj); + * + * adjustment = gtk_spin_button_get_adjustment (spin); + * value = (int)gtk_adjustment_get_value (adjustment); * text = g_strdup_printf ("%02d", value); * gtk_entry_set_text (GTK_ENTRY (spin), text); * g_free (text); - * + * * return TRUE; * } * ]| * - * Returns: %TRUE if the value has been displayed. + * Returns: %TRUE if the value has been displayed */ spinbutton_signals[OUTPUT] = g_signal_new (I_("output"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkSpinButtonClass, output), - _gtk_boolean_handled_accumulator, NULL, - _gtk_marshal_BOOLEAN__VOID, - G_TYPE_BOOLEAN, 0); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkSpinButtonClass, output), + _gtk_boolean_handled_accumulator, NULL, + _gtk_marshal_BOOLEAN__VOID, + G_TYPE_BOOLEAN, 0); spinbutton_signals[VALUE_CHANGED] = g_signal_new (I_("value-changed"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkSpinButtonClass, value_changed), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkSpinButtonClass, value_changed), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); /** * GtkSpinButton::wrapped: @@ -370,12 +476,12 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) */ spinbutton_signals[WRAPPED] = g_signal_new (I_("wrapped"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkSpinButtonClass, wrapped), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkSpinButtonClass, wrapped), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); /* Action signals */ spinbutton_signals[CHANGE_VALUE] = @@ -387,9 +493,9 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) _gtk_marshal_VOID__ENUM, G_TYPE_NONE, 1, GTK_TYPE_SCROLL_TYPE); - + binding_set = gtk_binding_set_by_class (class); - + add_spin_binding (binding_set, GDK_KEY_Up, 0, GTK_SCROLL_STEP_UP); add_spin_binding (binding_set, GDK_KEY_KP_Up, 0, GTK_SCROLL_STEP_UP); add_spin_binding (binding_set, GDK_KEY_Down, 0, GTK_SCROLL_STEP_DOWN); @@ -410,9 +516,9 @@ gtk_spin_button_editable_init (GtkEditableInterface *iface) static void gtk_spin_button_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { GtkSpinButton *spin_button = GTK_SPIN_BUTTON (object); GtkSpinButtonPrivate *priv = spin_button->priv; @@ -424,20 +530,20 @@ gtk_spin_button_set_property (GObject *object, case PROP_ADJUSTMENT: adjustment = GTK_ADJUSTMENT (g_value_get_object (value)); if (!adjustment) - adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); gtk_spin_button_set_adjustment (spin_button, adjustment); break; case PROP_CLIMB_RATE: gtk_spin_button_configure (spin_button, - priv->adjustment, - g_value_get_double (value), - priv->digits); + priv->adjustment, + g_value_get_double (value), + priv->digits); break; case PROP_DIGITS: gtk_spin_button_configure (spin_button, - priv->adjustment, - priv->climb_rate, - g_value_get_uint (value)); + priv->adjustment, + priv->climb_rate, + g_value_get_uint (value)); break; case PROP_SNAP_TO_TICKS: gtk_spin_button_set_snap_to_ticks (spin_button, g_value_get_boolean (value)); @@ -462,9 +568,9 @@ gtk_spin_button_set_property (GObject *object, static void gtk_spin_button_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { GtkSpinButton *spin_button = GTK_SPIN_BUTTON (object); GtkSpinButtonPrivate *priv = spin_button->priv; @@ -493,7 +599,7 @@ gtk_spin_button_get_property (GObject *object, g_value_set_enum (value, priv->update_policy); break; case PROP_VALUE: - g_value_set_double (value, priv->adjustment->value); + g_value_set_double (value, gtk_adjustment_get_value (priv->adjustment)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -505,6 +611,7 @@ static void gtk_spin_button_init (GtkSpinButton *spin_button) { GtkSpinButtonPrivate *priv; + GtkStyleContext *context; spin_button->priv = G_TYPE_INSTANCE_GET_PRIVATE (spin_button, GTK_TYPE_SPIN_BUTTON, @@ -529,13 +636,16 @@ gtk_spin_button_init (GtkSpinButton *spin_button) gtk_spin_button_set_adjustment (spin_button, gtk_adjustment_new (0, 0, 0, 0, 0, 0)); + + context = gtk_widget_get_style_context (GTK_WIDGET (spin_button)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_SPINBUTTON); } static void gtk_spin_button_finalize (GObject *object) { gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (object), NULL); - + G_OBJECT_CLASS (gtk_spin_button_parent_class)->finalize (object); } @@ -580,15 +690,15 @@ gtk_spin_button_realize (GtkWidget *widget) { GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin_button->priv; + GtkStyleContext *context; + GtkStateFlags state; GtkAllocation allocation; GtkRequisition requisition; - GtkStyle *style; GdkWindowAttr attributes; gint attributes_mask; gboolean return_val; gint arrow_size; - - style = gtk_widget_get_style (widget); + GtkBorder padding; arrow_size = spin_button_get_arrow_size (spin_button); @@ -596,22 +706,26 @@ gtk_spin_button_realize (GtkWidget *widget) gtk_widget_get_allocation (widget, &allocation); gtk_widget_set_events (widget, gtk_widget_get_events (widget) | - GDK_KEY_RELEASE_MASK); + GDK_KEY_RELEASE_MASK); GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->realize (widget); attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_ONLY; attributes.visual = gtk_widget_get_visual (widget); attributes.event_mask = gtk_widget_get_events (widget); - attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK - | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK + attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; - attributes.x = allocation.x + allocation.width - arrow_size - 2 * style->xthickness; + state = gtk_widget_get_state_flags (widget); + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, state, &padding); + + attributes.x = allocation.x + allocation.width - arrow_size - (padding.left + padding.right); attributes.y = allocation.y + (allocation.height - requisition.height) / 2; - attributes.width = arrow_size + 2 * style->xthickness; + attributes.width = arrow_size + padding.left + padding.right; attributes.height = requisition.height; priv->panel = gdk_window_new (gtk_widget_get_window (widget), @@ -650,10 +764,10 @@ compute_double_length (double val, int digits) a = 1; if (fabs (val) > 1.0) - a = floor (log10 (fabs (val))) + 1; + a = floor (log10 (fabs (val))) + 1; extra = 0; - + /* The dot: */ if (digits > 0) extra++; @@ -673,10 +787,11 @@ gtk_spin_button_get_preferred_width (GtkWidget *widget, GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin_button->priv; GtkEntry *entry = GTK_ENTRY (widget); - GtkStyle *style; + GtkStyleContext *style_context; + GtkBorder padding; gint arrow_size; - style = gtk_widget_get_style (widget); + style_context = gtk_widget_get_style_context (widget); arrow_size = spin_button_get_arrow_size (spin_button); @@ -685,6 +800,7 @@ gtk_spin_button_get_preferred_width (GtkWidget *widget, if (gtk_entry_get_width_chars (entry) < 0) { PangoContext *context; + const PangoFontDescription *font_desc; PangoFontMetrics *metrics; gint width; gint w; @@ -701,9 +817,10 @@ gtk_spin_button_get_preferred_width (GtkWidget *widget, "focus-line-width", &focus_width, NULL); + font_desc = gtk_style_context_get_font (style_context, 0); + context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, - style->font_desc, + metrics = pango_context_get_metrics (context, font_desc, pango_context_get_language (context)); digit_width = pango_font_metrics_get_approximate_digit_width (metrics); @@ -714,14 +831,14 @@ gtk_spin_button_get_preferred_width (GtkWidget *widget, /* Get max of MIN_SPIN_BUTTON_WIDTH, size of upper, size of lower */ width = MIN_SPIN_BUTTON_WIDTH; - max_string_len = MAX (10, compute_double_length (1e9 * priv->adjustment->step_increment, + max_string_len = MAX (10, compute_double_length (1e9 * gtk_adjustment_get_step_increment (priv->adjustment), priv->digits)); - string_len = compute_double_length (priv->adjustment->upper, + string_len = compute_double_length (gtk_adjustment_get_upper (priv->adjustment), priv->digits); w = PANGO_PIXELS (MIN (string_len, max_string_len) * digit_width); width = MAX (width, w); - string_len = compute_double_length (priv->adjustment->lower, priv->digits); + string_len = compute_double_length (gtk_adjustment_get_lower (priv->adjustment), priv->digits); w = PANGO_PIXELS (MIN (string_len, max_string_len) * digit_width); width = MAX (width, w); @@ -734,23 +851,34 @@ gtk_spin_button_get_preferred_width (GtkWidget *widget, *natural = width; } - *minimum += arrow_size + 2 * style->xthickness; - *natural += arrow_size + 2 * style->xthickness; + gtk_style_context_get_padding (style_context, + gtk_widget_get_state_flags (widget), + &padding); + + *minimum += arrow_size + padding.left + padding.right; + *natural += arrow_size + padding.left + padding.right; } static void gtk_spin_button_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) + GtkAllocation *allocation) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; GtkAllocation panel_allocation; GtkRequisition requisition; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint arrow_size; gint panel_width; arrow_size = spin_button_get_arrow_size (spin); - panel_width = arrow_size + 2 * gtk_widget_get_style (widget)->xthickness; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_get_padding (context, state, &padding); + panel_width = arrow_size + padding.left + padding.right; gtk_widget_get_preferred_size (widget, &requisition, NULL); @@ -772,10 +900,10 @@ gtk_spin_button_size_allocate (GtkWidget *widget, if (gtk_widget_get_realized (widget)) { gdk_window_move_resize (priv->panel, - panel_allocation.x, - panel_allocation.y, - panel_allocation.width, - panel_allocation.height); + panel_allocation.x, + panel_allocation.y, + panel_allocation.width, + panel_allocation.height); } gtk_widget_queue_draw (GTK_WIDGET (spin)); @@ -787,31 +915,44 @@ gtk_spin_button_draw (GtkWidget *widget, { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; - GtkShadowType shadow_type; - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state = 0; + gboolean is_rtl; + + is_rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); + context = gtk_widget_get_style_context (widget); + gtk_style_context_save (context); GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->draw (widget, cr); + gtk_style_context_restore (context); cairo_save (cr); - shadow_type = spin_button_get_shadow_type (spin); + state = gtk_widget_get_state_flags (widget); - state = gtk_widget_has_focus (widget) ? - GTK_STATE_ACTIVE : gtk_widget_get_state (widget); + if (gtk_widget_has_focus (widget)) + state |= GTK_STATE_FLAG_FOCUSED; + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ENTRY); + + if (is_rtl) + gtk_style_context_set_junction_sides (context, GTK_JUNCTION_RIGHT); + else + gtk_style_context_set_junction_sides (context, GTK_JUNCTION_LEFT); gtk_cairo_transform_to_window (cr, widget, priv->panel); if (gtk_entry_get_has_frame (GTK_ENTRY (widget))) - gtk_paint_box (gtk_widget_get_style (widget), cr, - state, shadow_type, - widget, "spinbutton", - 0, 0, - gdk_window_get_width (priv->panel), - gdk_window_get_height (priv->panel)); + gtk_render_background (context, cr, 0, 0, + gdk_window_get_width (priv->panel), + gdk_window_get_height (priv->panel)); - gtk_spin_button_draw_arrow (spin, cr, GTK_ARROW_UP); - gtk_spin_button_draw_arrow (spin, cr, GTK_ARROW_DOWN); + gtk_spin_button_draw_arrow (spin, context, cr, GTK_ARROW_UP); + gtk_spin_button_draw_arrow (spin, context, cr, GTK_ARROW_DOWN); + gtk_style_context_restore (context); cairo_restore (cr); return FALSE; @@ -827,32 +968,34 @@ spin_button_at_limit (GtkSpinButton *spin_button, if (priv->wrap) return FALSE; - if (priv->adjustment->step_increment > 0) + if (gtk_adjustment_get_step_increment (priv->adjustment) > 0) effective_arrow = arrow; else - effective_arrow = arrow == GTK_ARROW_UP ? GTK_ARROW_DOWN : GTK_ARROW_UP; - + effective_arrow = arrow == GTK_ARROW_UP ? GTK_ARROW_DOWN : GTK_ARROW_UP; + if (effective_arrow == GTK_ARROW_UP && - (priv->adjustment->upper - priv->adjustment->value <= EPSILON)) + (gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_value (priv->adjustment) <= EPSILON)) return TRUE; - + if (effective_arrow == GTK_ARROW_DOWN && - (priv->adjustment->value - priv->adjustment->lower <= EPSILON)) + (gtk_adjustment_get_value (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment) <= EPSILON)) return TRUE; - + return FALSE; } static void -gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, - cairo_t *cr, - GtkArrowType arrow_type) +gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, + GtkStyleContext *context, + cairo_t *cr, + GtkArrowType arrow_type) { GtkSpinButtonPrivate *priv; - GtkStateType state_type; - GtkShadowType shadow_type; - GtkStyle *style; + GtkJunctionSides junction; + GtkStateFlags state; GtkWidget *widget; + GtkBorder padding; + gdouble angle; gint x; gint y; gint panel_height; @@ -862,12 +1005,13 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, g_return_if_fail (arrow_type == GTK_ARROW_UP || arrow_type == GTK_ARROW_DOWN); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_BUTTON); + priv = spin_button->priv; widget = GTK_WIDGET (spin_button); + junction = gtk_style_context_get_junction_sides (context); - style = gtk_widget_get_style (widget); - - width = spin_button_get_arrow_size (spin_button) + 2 * style->xthickness; panel_height = gdk_window_get_height (priv->panel); if (arrow_type == GTK_ARROW_UP) @@ -876,6 +1020,8 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, y = 0; height = panel_height / 2; + angle = 0; + junction |= GTK_JUNCTION_BOTTOM; } else { @@ -883,41 +1029,34 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, y = panel_height / 2; height = (panel_height + 1) / 2; + angle = G_PI; + junction |= GTK_JUNCTION_TOP; } if (spin_button_at_limit (spin_button, arrow_type)) - { - shadow_type = GTK_SHADOW_OUT; - state_type = GTK_STATE_INSENSITIVE; - } + state = GTK_STATE_FLAG_INSENSITIVE; else { if (priv->click_child == arrow_type) - { - state_type = GTK_STATE_ACTIVE; - shadow_type = GTK_SHADOW_IN; - } + state = GTK_STATE_ACTIVE; else { if (priv->in_child == arrow_type && priv->click_child == NO_ARROW) - { - state_type = GTK_STATE_PRELIGHT; - } + state = GTK_STATE_FLAG_PRELIGHT; else - { - state_type = gtk_widget_get_state (widget); - } - - shadow_type = GTK_SHADOW_OUT; + state = gtk_widget_get_state_flags (widget); } } - - gtk_paint_box (style, cr, - state_type, shadow_type, - widget, - (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down", - x, y, width, height); + + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_set_junction_sides (context, junction); + gtk_style_context_set_state (context, state); + + width = spin_button_get_arrow_size (spin_button) + padding.left + padding.right; + + gtk_render_background (context, cr, x, y, width, height); + gtk_render_frame (context, cr, x, y, width, height); height = panel_height; @@ -942,23 +1081,22 @@ gtk_spin_button_draw_arrow (GtkSpinButton *spin_button, w = width / 2; w -= w % 2 - 1; /* force odd */ h = (w + 1) / 2; - + x += (width - w) / 2; y += (height - h) / 2; - + height = h; width = w; - gtk_paint_arrow (style, cr, - state_type, shadow_type, - widget, "spinbutton", - arrow_type, TRUE, - x, y, width, height); + gtk_render_arrow (context, cr, + angle, x, y, width); + + gtk_style_context_restore (context); } static gint gtk_spin_button_enter_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; @@ -976,9 +1114,9 @@ gtk_spin_button_enter_notify (GtkWidget *widget, gtk_widget_get_preferred_size (widget, &requisition, NULL); if (y <= requisition.height / 2) - priv->in_child = GTK_ARROW_UP; + priv->in_child = GTK_ARROW_UP; else - priv->in_child = GTK_ARROW_DOWN; + priv->in_child = GTK_ARROW_DOWN; gtk_widget_queue_draw (GTK_WIDGET (spin)); } @@ -991,14 +1129,14 @@ gtk_spin_button_enter_notify (GtkWidget *widget, static gint gtk_spin_button_leave_notify (GtkWidget *widget, - GdkEventCrossing *event) + GdkEventCrossing *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; priv->in_child = NO_ARROW; gtk_widget_queue_draw (GTK_WIDGET (spin)); - + if (GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->leave_notify_event) return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->leave_notify_event (widget, event); @@ -1007,7 +1145,7 @@ gtk_spin_button_leave_notify (GtkWidget *widget, static gint gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event) + GdkEventFocus *event) { if (gtk_editable_get_editable (GTK_EDITABLE (widget))) gtk_spin_button_update (GTK_SPIN_BUTTON (widget)); @@ -1017,7 +1155,7 @@ gtk_spin_button_focus_out (GtkWidget *widget, static void gtk_spin_button_grab_notify (GtkWidget *widget, - gboolean was_grabbed) + gboolean was_grabbed) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); @@ -1029,36 +1167,39 @@ gtk_spin_button_grab_notify (GtkWidget *widget, } static void -gtk_spin_button_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_spin_button_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); if (!gtk_widget_is_sensitive (widget)) { - gtk_spin_button_stop_spinning (spin); + gtk_spin_button_stop_spinning (spin); gtk_widget_queue_draw (GTK_WIDGET (spin)); } } static void -gtk_spin_button_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_spin_button_style_updated (GtkWidget *widget) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; - if (previous_style && gtk_widget_get_realized (widget)) - gtk_style_set_background (gtk_widget_get_style (widget), - priv->panel, GTK_STATE_NORMAL); + if (gtk_widget_get_realized (widget)) + { + GtkStyleContext *context; - GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->style_set (widget, previous_style); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_background (context, priv->panel); + } + + GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->style_updated (widget); } static gint gtk_spin_button_scroll (GtkWidget *widget, - GdkEventScroll *event) + GdkEventScroll *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; @@ -1066,14 +1207,14 @@ gtk_spin_button_scroll (GtkWidget *widget, if (event->direction == GDK_SCROLL_UP) { if (!gtk_widget_has_focus (widget)) - gtk_widget_grab_focus (widget); - gtk_spin_button_real_spin (spin, priv->adjustment->step_increment); + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, gtk_adjustment_get_step_increment (priv->adjustment)); } else if (event->direction == GDK_SCROLL_DOWN) { if (!gtk_widget_has_focus (widget)) - gtk_widget_grab_focus (widget); - gtk_spin_button_real_spin (spin, -priv->adjustment->step_increment); + gtk_widget_grab_focus (widget); + gtk_spin_button_real_spin (spin, -gtk_adjustment_get_step_increment (priv->adjustment)); } else return FALSE; @@ -1096,7 +1237,7 @@ gtk_spin_button_stop_spinning (GtkSpinButton *spin) priv->button = 0; priv->timer = 0; - priv->timer_step = priv->adjustment->step_increment; + priv->timer_step = gtk_adjustment_get_step_increment (priv->adjustment); priv->timer_calls = 0; priv->click_child = NO_ARROW; @@ -1105,8 +1246,8 @@ gtk_spin_button_stop_spinning (GtkSpinButton *spin) static void start_spinning (GtkSpinButton *spin, - GtkArrowType click_child, - gdouble step) + GtkArrowType click_child, + gdouble step) { GtkSpinButtonPrivate *priv; @@ -1126,8 +1267,8 @@ start_spinning (GtkSpinButton *spin, priv->timer_step = step; priv->need_timer = TRUE; priv->timer = gdk_threads_add_timeout (timeout, - (GSourceFunc) gtk_spin_button_timer, - (gpointer) spin); + (GSourceFunc) gtk_spin_button_timer, + (gpointer) spin); } gtk_spin_button_real_spin (spin, click_child == GTK_ARROW_UP ? step : -step); @@ -1136,7 +1277,7 @@ start_spinning (GtkSpinButton *spin, static gint gtk_spin_button_button_press (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; @@ -1144,47 +1285,47 @@ gtk_spin_button_button_press (GtkWidget *widget, if (!priv->button) { if (event->window == priv->panel) - { - GtkRequisition requisition; + { + GtkRequisition requisition; - if (!gtk_widget_has_focus (widget)) - gtk_widget_grab_focus (widget); - priv->button = event->button; + if (!gtk_widget_has_focus (widget)) + gtk_widget_grab_focus (widget); + priv->button = event->button; if (gtk_editable_get_editable (GTK_EDITABLE (widget))) - gtk_spin_button_update (spin); - - gtk_widget_get_preferred_size (widget, &requisition, NULL); + gtk_spin_button_update (spin); - if (event->y <= requisition.height / 2) - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_UP, priv->adjustment->step_increment); - else if (event->button == 2) - start_spinning (spin, GTK_ARROW_UP, priv->adjustment->page_increment); - else - priv->click_child = GTK_ARROW_UP; - } - else - { - if (event->button == 1) - start_spinning (spin, GTK_ARROW_DOWN, priv->adjustment->step_increment); - else if (event->button == 2) - start_spinning (spin, GTK_ARROW_DOWN, priv->adjustment->page_increment); - else - priv->click_child = GTK_ARROW_DOWN; - } - return TRUE; - } + gtk_widget_get_preferred_size (widget, &requisition, NULL); + + if (event->y <= requisition.height / 2) + { + if (event->button == 1) + start_spinning (spin, GTK_ARROW_UP, gtk_adjustment_get_step_increment (priv->adjustment)); + else if (event->button == 2) + start_spinning (spin, GTK_ARROW_UP, gtk_adjustment_get_page_increment (priv->adjustment)); + else + priv->click_child = GTK_ARROW_UP; + } + else + { + if (event->button == 1) + start_spinning (spin, GTK_ARROW_DOWN, gtk_adjustment_get_step_increment (priv->adjustment)); + else if (event->button == 2) + start_spinning (spin, GTK_ARROW_DOWN, gtk_adjustment_get_page_increment (priv->adjustment)); + else + priv->click_child = GTK_ARROW_DOWN; + } + return TRUE; + } else - return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->button_press_event (widget, event); + return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->button_press_event (widget, event); } return FALSE; } static gint gtk_spin_button_button_release (GtkWidget *widget, - GdkEventButton *event) + GdkEventButton *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; @@ -1199,35 +1340,42 @@ gtk_spin_button_button_release (GtkWidget *widget, gtk_spin_button_stop_spinning (spin); if (event->button == 3) - { - GtkRequisition requisition; + { + GtkRequisition requisition; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; - gtk_widget_get_preferred_size (widget, &requisition, NULL); + gtk_widget_get_preferred_size (widget, &requisition, NULL); - if (event->y >= 0 && event->x >= 0 && - event->y <= requisition.height && - event->x <= arrow_size + 2 * gtk_widget_get_style (widget)->xthickness) - { - if (click_child == GTK_ARROW_UP && - event->y <= requisition.height / 2) - { - gdouble diff; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); - diff = priv->adjustment->upper - priv->adjustment->value; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, diff); - } - else if (click_child == GTK_ARROW_DOWN && - event->y > requisition.height / 2) - { - gdouble diff; + if (event->y >= 0 && event->x >= 0 && + event->y <= requisition.height && + event->x <= arrow_size + padding.left + padding.right) + { + if (click_child == GTK_ARROW_UP && + event->y <= requisition.height / 2) + { + gdouble diff; - diff = priv->adjustment->value - priv->adjustment->lower; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, -diff); - } - } - } + diff = gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_value (priv->adjustment); + if (diff > EPSILON) + gtk_spin_button_real_spin (spin, diff); + } + else if (click_child == GTK_ARROW_DOWN && + event->y > requisition.height / 2) + { + gdouble diff; + + diff = gtk_adjustment_get_value (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment); + if (diff > EPSILON) + gtk_spin_button_real_spin (spin, -diff); + } + } + } gtk_widget_queue_draw (GTK_WIDGET (spin)); return TRUE; @@ -1238,7 +1386,7 @@ gtk_spin_button_button_release (GtkWidget *widget, static gint gtk_spin_button_motion_notify (GtkWidget *widget, - GdkEventMotion *event) + GdkEventMotion *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; @@ -1256,21 +1404,21 @@ gtk_spin_button_motion_notify (GtkWidget *widget, gtk_widget_get_preferred_size (widget, &requisition, NULL); if (y <= requisition.height / 2 && - priv->in_child == GTK_ARROW_DOWN) - { - priv->in_child = GTK_ARROW_UP; - gtk_widget_queue_draw (GTK_WIDGET (spin)); - } + priv->in_child == GTK_ARROW_DOWN) + { + priv->in_child = GTK_ARROW_UP; + gtk_widget_queue_draw (GTK_WIDGET (spin)); + } else if (y > requisition.height / 2 && - priv->in_child == GTK_ARROW_UP) - { - priv->in_child = GTK_ARROW_DOWN; - gtk_widget_queue_draw (GTK_WIDGET (spin)); - } - + priv->in_child == GTK_ARROW_UP) + { + priv->in_child = GTK_ARROW_DOWN; + gtk_widget_queue_draw (GTK_WIDGET (spin)); + } + return FALSE; } - + return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->motion_notify_event (widget, event); } @@ -1283,37 +1431,37 @@ gtk_spin_button_timer (GtkSpinButton *spin_button) if (priv->timer) { if (priv->click_child == GTK_ARROW_UP) - gtk_spin_button_real_spin (spin_button, priv->timer_step); + gtk_spin_button_real_spin (spin_button, priv->timer_step); else - gtk_spin_button_real_spin (spin_button, -priv->timer_step); + gtk_spin_button_real_spin (spin_button, -priv->timer_step); if (priv->need_timer) - { + { GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (spin_button)); guint timeout; g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL); - priv->need_timer = FALSE; - priv->timer = gdk_threads_add_timeout (timeout, - (GSourceFunc) gtk_spin_button_timer, - (gpointer) spin_button); - } - else - { - if (priv->climb_rate > 0.0 && priv->timer_step - < priv->adjustment->page_increment) - { - if (priv->timer_calls < MAX_TIMER_CALLS) - priv->timer_calls++; - else - { - priv->timer_calls = 0; - priv->timer_step += priv->climb_rate; - } - } - retval = TRUE; - } + priv->need_timer = FALSE; + priv->timer = gdk_threads_add_timeout (timeout, + (GSourceFunc) gtk_spin_button_timer, + (gpointer) spin_button); + } + else + { + if (priv->climb_rate > 0.0 && priv->timer_step + < gtk_adjustment_get_page_increment (priv->adjustment)) + { + if (priv->timer_calls < MAX_TIMER_CALLS) + priv->timer_calls++; + else + { + priv->timer_calls = 0; + priv->timer_step += priv->climb_rate; + } + } + retval = TRUE; + } } return retval; @@ -1321,7 +1469,7 @@ gtk_spin_button_timer (GtkSpinButton *spin_button) static void gtk_spin_button_value_changed (GtkAdjustment *adjustment, - GtkSpinButton *spin_button) + GtkSpinButton *spin_button) { gboolean return_val; @@ -1335,13 +1483,13 @@ gtk_spin_button_value_changed (GtkAdjustment *adjustment, g_signal_emit (spin_button, spinbutton_signals[VALUE_CHANGED], 0); gtk_widget_queue_draw (GTK_WIDGET (spin_button)); - + g_object_notify (G_OBJECT (spin_button), "value"); } static void gtk_spin_button_real_change_value (GtkSpinButton *spin, - GtkScrollType scroll) + GtkScrollType scroll) { GtkSpinButtonPrivate *priv = spin->priv; gdouble old_value; @@ -1352,7 +1500,7 @@ gtk_spin_button_real_change_value (GtkSpinButton *spin, */ gtk_spin_button_update (spin); - old_value = priv->adjustment->value; + old_value = gtk_adjustment_get_value (priv->adjustment); /* We don't test whether the entry is editable, since * this key binding conceptually corresponds to changing @@ -1367,84 +1515,84 @@ gtk_spin_button_real_change_value (GtkSpinButton *spin, gtk_spin_button_real_spin (spin, -priv->timer_step); if (priv->climb_rate > 0.0 && priv->timer_step - < priv->adjustment->page_increment) - { - if (priv->timer_calls < MAX_TIMER_CALLS) - priv->timer_calls++; - else - { - priv->timer_calls = 0; - priv->timer_step += priv->climb_rate; - } - } + < gtk_adjustment_get_page_increment (priv->adjustment)) + { + if (priv->timer_calls < MAX_TIMER_CALLS) + priv->timer_calls++; + else + { + priv->timer_calls = 0; + priv->timer_step += priv->climb_rate; + } + } break; - + case GTK_SCROLL_STEP_FORWARD: case GTK_SCROLL_STEP_UP: case GTK_SCROLL_STEP_RIGHT: gtk_spin_button_real_spin (spin, priv->timer_step); if (priv->climb_rate > 0.0 && priv->timer_step - < priv->adjustment->page_increment) - { - if (priv->timer_calls < MAX_TIMER_CALLS) - priv->timer_calls++; - else - { - priv->timer_calls = 0; - priv->timer_step += priv->climb_rate; - } - } + < gtk_adjustment_get_page_increment (priv->adjustment)) + { + if (priv->timer_calls < MAX_TIMER_CALLS) + priv->timer_calls++; + else + { + priv->timer_calls = 0; + priv->timer_step += priv->climb_rate; + } + } break; - + case GTK_SCROLL_PAGE_BACKWARD: case GTK_SCROLL_PAGE_DOWN: case GTK_SCROLL_PAGE_LEFT: - gtk_spin_button_real_spin (spin, -priv->adjustment->page_increment); + gtk_spin_button_real_spin (spin, -gtk_adjustment_get_page_increment (priv->adjustment)); break; - + case GTK_SCROLL_PAGE_FORWARD: case GTK_SCROLL_PAGE_UP: case GTK_SCROLL_PAGE_RIGHT: - gtk_spin_button_real_spin (spin, priv->adjustment->page_increment); + gtk_spin_button_real_spin (spin, gtk_adjustment_get_page_increment (priv->adjustment)); break; - + case GTK_SCROLL_START: { - gdouble diff = priv->adjustment->value - priv->adjustment->lower; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, -diff); - break; + gdouble diff = gtk_adjustment_get_value (priv->adjustment) - gtk_adjustment_get_lower (priv->adjustment); + if (diff > EPSILON) + gtk_spin_button_real_spin (spin, -diff); + break; } - + case GTK_SCROLL_END: { - gdouble diff = priv->adjustment->upper - priv->adjustment->value; - if (diff > EPSILON) - gtk_spin_button_real_spin (spin, diff); - break; + gdouble diff = gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_value (priv->adjustment); + if (diff > EPSILON) + gtk_spin_button_real_spin (spin, diff); + break; } - + default: g_warning ("Invalid scroll type %d for GtkSpinButton::change-value", scroll); break; } - + gtk_spin_button_update (spin); - if (priv->adjustment->value == old_value) + if (gtk_adjustment_get_value (priv->adjustment) == old_value) gtk_widget_error_bell (GTK_WIDGET (spin)); } static gint gtk_spin_button_key_release (GtkWidget *widget, - GdkEventKey *event) + GdkEventKey *event) { GtkSpinButton *spin = GTK_SPIN_BUTTON (widget); GtkSpinButtonPrivate *priv = spin->priv; /* We only get a release at the end of a key repeat run, so reset the timer_step */ - priv->timer_step = priv->adjustment->step_increment; + priv->timer_step = gtk_adjustment_get_step_increment (priv->adjustment); priv->timer_calls = 0; return TRUE; @@ -1452,21 +1600,21 @@ gtk_spin_button_key_release (GtkWidget *widget, static void gtk_spin_button_snap (GtkSpinButton *spin_button, - gdouble val) + gdouble val) { GtkSpinButtonPrivate *priv = spin_button->priv; gdouble inc; gdouble tmp; - inc = priv->adjustment->step_increment; + inc = gtk_adjustment_get_step_increment (priv->adjustment); if (inc == 0) return; - tmp = (val - priv->adjustment->lower) / inc; + tmp = (val - gtk_adjustment_get_lower (priv->adjustment)) / inc; if (tmp - floor (tmp) < ceil (tmp) - tmp) - val = priv->adjustment->lower + floor (tmp) * inc; + val = gtk_adjustment_get_lower (priv->adjustment) + floor (tmp) * inc; else - val = priv->adjustment->lower + ceil (tmp) * inc; + val = gtk_adjustment_get_lower (priv->adjustment) + ceil (tmp) * inc; gtk_spin_button_set_value (spin_button, val); } @@ -1483,18 +1631,27 @@ gtk_spin_button_activate (GtkEntry *entry) static void gtk_spin_button_get_text_area_size (GtkEntry *entry, - gint *x, - gint *y, - gint *width, - gint *height) + gint *x, + gint *y, + gint *width, + gint *height) { + GtkStyleContext *context; + GtkStateFlags state; + GtkWidget *widget; + GtkBorder padding; gint arrow_size; gint panel_width; GTK_ENTRY_CLASS (gtk_spin_button_parent_class)->get_text_area_size (entry, x, y, width, height); + widget = GTK_WIDGET (entry); + state = gtk_widget_get_state_flags (widget); + context = gtk_widget_get_style_context (widget); + gtk_style_context_get_padding (context, state, &padding); + arrow_size = spin_button_get_arrow_size (GTK_SPIN_BUTTON (entry)); - panel_width = arrow_size + 2 * gtk_widget_get_style (GTK_WIDGET (entry))->xthickness; + panel_width = arrow_size + padding.left + padding.right; if (width) *width -= panel_width; @@ -1505,9 +1662,9 @@ gtk_spin_button_get_text_area_size (GtkEntry *entry, static void gtk_spin_button_insert_text (GtkEditable *editable, - const gchar *new_text, - gint new_text_length, - gint *position) + const gchar *new_text, + gint new_text_length, + gint *position) { GtkEntry *entry = GTK_ENTRY (editable); GtkSpinButton *spin = GTK_SPIN_BUTTON (editable); @@ -1534,14 +1691,14 @@ gtk_spin_button_insert_text (GtkEditable *editable, lc = localeconv (); if (*(lc->negative_sign)) - neg_sign = *(lc->negative_sign); - else - neg_sign = '-'; + neg_sign = *(lc->negative_sign); + else + neg_sign = '-'; if (*(lc->positive_sign)) - pos_sign = *(lc->positive_sign); - else - pos_sign = '+'; + pos_sign = *(lc->positive_sign); + else + pos_sign = '+'; #ifdef G_OS_WIN32 /* Workaround for bug caused by some Windows application messing @@ -1560,103 +1717,103 @@ gtk_spin_button_insert_text (GtkEditable *editable, * digits... */ if (pos_sign >= '0' && pos_sign <= '9') - pos_sign = '+'; + pos_sign = '+'; #endif for (sign=0, i=0; idecimal_point)) - { - dotpos = i; - break; - } + if (entry_text[i] == *(lc->decimal_point)) + { + dotpos = i; + break; + } if (dotpos > -1 && *position > dotpos && - (gint)priv->digits - entry_length - + dotpos - new_text_length + 1 < 0) - return; + (gint)priv->digits - entry_length + + dotpos - new_text_length + 1 < 0) + return; for (i = 0; i < new_text_length; i++) - { - if (new_text[i] == neg_sign || new_text[i] == pos_sign) - { - if (sign || (*position) || i) - return; - sign = TRUE; - } - else if (new_text[i] == *(lc->decimal_point)) - { - if (!priv->digits || dotpos > -1 || - (new_text_length - 1 - i + entry_length - - *position > (gint)priv->digits)) - return; - dotpos = *position + i; - } - else if (new_text[i] < 0x30 || new_text[i] > 0x39) - return; - } + { + if (new_text[i] == neg_sign || new_text[i] == pos_sign) + { + if (sign || (*position) || i) + return; + sign = TRUE; + } + else if (new_text[i] == *(lc->decimal_point)) + { + if (!priv->digits || dotpos > -1 || + (new_text_length - 1 - i + entry_length + - *position > (gint)priv->digits)) + return; + dotpos = *position + i; + } + else if (new_text[i] < 0x30 || new_text[i] > 0x39) + return; + } } parent_editable_iface->insert_text (editable, new_text, - new_text_length, position); + new_text_length, position); } static void gtk_spin_button_real_spin (GtkSpinButton *spin_button, - gdouble increment) + gdouble increment) { GtkSpinButtonPrivate *priv = spin_button->priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble new_value = 0.0; gboolean wrapped = FALSE; - adj = priv->adjustment; + adjustment = priv->adjustment; - new_value = adj->value + increment; + new_value = gtk_adjustment_get_value (adjustment) + increment; if (increment > 0) { if (priv->wrap) - { - if (fabs (adj->value - adj->upper) < EPSILON) - { - new_value = adj->lower; - wrapped = TRUE; - } - else if (new_value > adj->upper) - new_value = adj->upper; - } + { + if (fabs (gtk_adjustment_get_value (adjustment) - gtk_adjustment_get_upper (adjustment)) < EPSILON) + { + new_value = gtk_adjustment_get_lower (adjustment); + wrapped = TRUE; + } + else if (new_value > gtk_adjustment_get_upper (adjustment)) + new_value = gtk_adjustment_get_upper (adjustment); + } else - new_value = MIN (new_value, adj->upper); + new_value = MIN (new_value, gtk_adjustment_get_upper (adjustment)); } - else if (increment < 0) + else if (increment < 0) { if (priv->wrap) - { - if (fabs (adj->value - adj->lower) < EPSILON) - { - new_value = adj->upper; - wrapped = TRUE; - } - else if (new_value < adj->lower) - new_value = adj->lower; - } + { + if (fabs (gtk_adjustment_get_value (adjustment) - gtk_adjustment_get_lower (adjustment)) < EPSILON) + { + new_value = gtk_adjustment_get_upper (adjustment); + wrapped = TRUE; + } + else if (new_value < gtk_adjustment_get_lower (adjustment)) + new_value = gtk_adjustment_get_lower (adjustment); + } else - new_value = MAX (new_value, adj->lower); + new_value = MAX (new_value, gtk_adjustment_get_lower (adjustment)); } - if (fabs (new_value - adj->value) > EPSILON) - gtk_adjustment_set_value (adj, new_value); + if (fabs (new_value - gtk_adjustment_get_value (adjustment)) > EPSILON) + gtk_adjustment_set_value (adjustment, new_value); if (wrapped) g_signal_emit (spin_button, spinbutton_signals[WRAPPED], 0); @@ -1666,7 +1823,7 @@ gtk_spin_button_real_spin (GtkSpinButton *spin_button, static gint gtk_spin_button_default_input (GtkSpinButton *spin_button, - gdouble *new_val) + gdouble *new_val) { gchar *err = NULL; @@ -1682,7 +1839,7 @@ gtk_spin_button_default_output (GtkSpinButton *spin_button) { GtkSpinButtonPrivate *priv = spin_button->priv; - gchar *buf = g_strdup_printf ("%0.*f", priv->digits, priv->adjustment->value); + gchar *buf = g_strdup_printf ("%0.*f", priv->digits, gtk_adjustment_get_value (priv->adjustment)); if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (spin_button)))) gtk_entry_set_text (GTK_ENTRY (spin_button), buf); @@ -1701,18 +1858,19 @@ gtk_spin_button_default_output (GtkSpinButton *spin_button) /** * gtk_spin_button_configure: * @spin_button: a #GtkSpinButton - * @adjustment: (allow-none): a #GtkAdjustment. - * @climb_rate: the new climb rate. - * @digits: the number of decimal places to display in the spin button. + * @adjustment: (allow-none): a #GtkAdjustment + * @climb_rate: the new climb rate + * @digits: the number of decimal places to display in the spin button * - * Changes the properties of an existing spin button. The adjustment, climb rate, - * and number of decimal places are all changed accordingly, after this function call. + * Changes the properties of an existing spin button. The adjustment, + * climb rate, and number of decimal places are all changed accordingly, + * after this function call. */ void -gtk_spin_button_configure (GtkSpinButton *spin_button, - GtkAdjustment *adjustment, - gdouble climb_rate, - guint digits) +gtk_spin_button_configure (GtkSpinButton *spin_button, + GtkAdjustment *adjustment, + gdouble climb_rate, + guint digits) { GtkSpinButtonPrivate *priv; @@ -1726,7 +1884,7 @@ gtk_spin_button_configure (GtkSpinButton *spin_button, adjustment = priv->adjustment; g_object_freeze_notify (G_OBJECT (spin_button)); - if (priv->digits != digits) + if (priv->digits != digits) { priv->digits = digits; g_object_notify (G_OBJECT (spin_button), "digits"); @@ -1742,10 +1900,22 @@ gtk_spin_button_configure (GtkSpinButton *spin_button, gtk_adjustment_value_changed (adjustment); } +/** + * gtk_spin_button_new: + * @adjustment: (allow-none): the #GtkAdjustment object that this spin + * button should use, or %NULL + * @climb_rate: specifies how much the spin button changes when an arrow + * is clicked on + * @digits: the number of decimal places to display + * + * Creates a new #GtkSpinButton. + * + * Returns: The new spin button as a #GtkWidget + */ GtkWidget * gtk_spin_button_new (GtkAdjustment *adjustment, - gdouble climb_rate, - guint digits) + gdouble climb_rate, + guint digits) { GtkSpinButton *spin; @@ -1764,25 +1934,25 @@ gtk_spin_button_new (GtkAdjustment *adjustment, * @min: Minimum allowable value * @max: Maximum allowable value * @step: Increment added or subtracted by spinning the widget - * - * This is a convenience constructor that allows creation of a numeric - * #GtkSpinButton without manually creating an adjustment. The value is + * + * This is a convenience constructor that allows creation of a numeric + * #GtkSpinButton without manually creating an adjustment. The value is * initially set to the minimum value and a page increment of 10 * @step - * is the default. The precision of the spin button is equivalent to the - * precision of @step. - * - * Note that the way in which the precision is derived works best if @step - * is a power of ten. If the resulting precision is not suitable for your + * is the default. The precision of the spin button is equivalent to the + * precision of @step. + * + * Note that the way in which the precision is derived works best if @step + * is a power of ten. If the resulting precision is not suitable for your * needs, use gtk_spin_button_set_digits() to correct it. - * - * Return value: The new spin button as a #GtkWidget. - **/ + * + * Return value: The new spin button as a #GtkWidget + */ GtkWidget * gtk_spin_button_new_with_range (gdouble min, - gdouble max, - gdouble step) + gdouble max, + gdouble step) { - GtkAdjustment *adj; + GtkAdjustment *adjustment; GtkSpinButton *spin; gint digits; @@ -1791,7 +1961,7 @@ gtk_spin_button_new_with_range (gdouble min, spin = g_object_new (GTK_TYPE_SPIN_BUTTON, NULL); - adj = gtk_adjustment_new (min, min, max, step, 10 * step, 0); + adjustment = gtk_adjustment_new (min, min, max, step, 10 * step, 0); if (fabs (step) >= 1.0 || step == 0.0) digits = 0; @@ -1801,15 +1971,16 @@ gtk_spin_button_new_with_range (gdouble min, digits = MAX_DIGITS; } - gtk_spin_button_configure (spin, adj, step, digits); + gtk_spin_button_configure (spin, adjustment, step, digits); gtk_spin_button_set_numeric (spin, TRUE); return GTK_WIDGET (spin); } -/* Callback used when the spin button's adjustment changes. We need to redraw - * the arrows when the adjustment's range changes, and reevaluate our size request. +/* Callback used when the spin button's adjustment changes. + * We need to redraw the arrows when the adjustment's range + * changes, and reevaluate our size request. */ static void adjustment_changed_cb (GtkAdjustment *adjustment, gpointer data) @@ -1817,7 +1988,7 @@ adjustment_changed_cb (GtkAdjustment *adjustment, gpointer data) GtkSpinButton *spin_button = GTK_SPIN_BUTTON (data); GtkSpinButtonPrivate *priv = spin_button->priv; - priv->timer_step = priv->adjustment->step_increment; + priv->timer_step = gtk_adjustment_get_step_increment (priv->adjustment); gtk_widget_queue_resize (GTK_WIDGET (spin_button)); } @@ -1825,12 +1996,12 @@ adjustment_changed_cb (GtkAdjustment *adjustment, gpointer data) * gtk_spin_button_set_adjustment: * @spin_button: a #GtkSpinButton * @adjustment: a #GtkAdjustment to replace the existing adjustment - * + * * Replaces the #GtkAdjustment associated with @spin_button. - **/ + */ void gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, - GtkAdjustment *adjustment) + GtkAdjustment *adjustment) { GtkSpinButtonPrivate *priv; @@ -1842,25 +2013,25 @@ gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, { if (priv->adjustment) { - g_signal_handlers_disconnect_by_func (priv->adjustment, - gtk_spin_button_value_changed, - spin_button); - g_signal_handlers_disconnect_by_func (priv->adjustment, - adjustment_changed_cb, - spin_button); - g_object_unref (priv->adjustment); + g_signal_handlers_disconnect_by_func (priv->adjustment, + gtk_spin_button_value_changed, + spin_button); + g_signal_handlers_disconnect_by_func (priv->adjustment, + adjustment_changed_cb, + spin_button); + g_object_unref (priv->adjustment); } priv->adjustment = adjustment; if (adjustment) { - g_object_ref_sink (adjustment); - g_signal_connect (adjustment, "value-changed", - G_CALLBACK (gtk_spin_button_value_changed), - spin_button); - g_signal_connect (adjustment, "changed", - G_CALLBACK (adjustment_changed_cb), - spin_button); - priv->timer_step = priv->adjustment->step_increment; + g_object_ref_sink (adjustment); + g_signal_connect (adjustment, "value-changed", + G_CALLBACK (gtk_spin_button_value_changed), + spin_button); + g_signal_connect (adjustment, "changed", + G_CALLBACK (adjustment_changed_cb), + spin_button); + priv->timer_step = gtk_adjustment_get_step_increment (priv->adjustment); } gtk_widget_queue_resize (GTK_WIDGET (spin_button)); @@ -1872,9 +2043,9 @@ gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, /** * gtk_spin_button_get_adjustment: * @spin_button: a #GtkSpinButton - * + * * Get the adjustment associated with a #GtkSpinButton - * + * * Return value: (transfer none): the #GtkAdjustment of @spin_button **/ GtkAdjustment * @@ -1889,13 +2060,13 @@ gtk_spin_button_get_adjustment (GtkSpinButton *spin_button) * gtk_spin_button_set_digits: * @spin_button: a #GtkSpinButton * @digits: the number of digits after the decimal point to be displayed for the spin button's value - * + * * Set the precision to be displayed by @spin_button. Up to 20 digit precision * is allowed. **/ void gtk_spin_button_set_digits (GtkSpinButton *spin_button, - guint digits) + guint digits) { GtkSpinButtonPrivate *priv; @@ -1908,7 +2079,7 @@ gtk_spin_button_set_digits (GtkSpinButton *spin_button, priv->digits = digits; gtk_spin_button_value_changed (priv->adjustment, spin_button); g_object_notify (G_OBJECT (spin_button), "digits"); - + /* since lower/upper may have changed */ gtk_widget_queue_resize (GTK_WIDGET (spin_button)); } @@ -1935,14 +2106,14 @@ gtk_spin_button_get_digits (GtkSpinButton *spin_button) * @spin_button: a #GtkSpinButton * @step: increment applied for a button 1 press. * @page: increment applied for a button 2 press. - * - * Sets the step and page increments for spin_button. This affects how + * + * Sets the step and page increments for spin_button. This affects how * quickly the value changes when the spin button's arrows are activated. **/ void gtk_spin_button_set_increments (GtkSpinButton *spin_button, - gdouble step, - gdouble page) + gdouble step, + gdouble page) { GtkSpinButtonPrivate *priv; @@ -1950,8 +2121,13 @@ gtk_spin_button_set_increments (GtkSpinButton *spin_button, priv = spin_button->priv; - priv->adjustment->step_increment = step; - priv->adjustment->page_increment = page; + gtk_adjustment_configure (priv->adjustment, + gtk_adjustment_get_value (priv->adjustment), + gtk_adjustment_get_lower (priv->adjustment), + gtk_adjustment_get_upper (priv->adjustment), + step, + page, + gtk_adjustment_get_page_size (priv->adjustment)); } /** @@ -1965,8 +2141,8 @@ gtk_spin_button_set_increments (GtkSpinButton *spin_button, **/ void gtk_spin_button_get_increments (GtkSpinButton *spin_button, - gdouble *step, - gdouble *page) + gdouble *step, + gdouble *page) { GtkSpinButtonPrivate *priv; @@ -1975,9 +2151,9 @@ gtk_spin_button_get_increments (GtkSpinButton *spin_button, priv = spin_button->priv; if (step) - *step = priv->adjustment->step_increment; + *step = gtk_adjustment_get_step_increment (priv->adjustment); if (page) - *page = priv->adjustment->page_increment; + *page = gtk_adjustment_get_page_increment (priv->adjustment); } /** @@ -1985,32 +2161,27 @@ gtk_spin_button_get_increments (GtkSpinButton *spin_button, * @spin_button: a #GtkSpinButton * @min: minimum allowable value * @max: maximum allowable value - * - * Sets the minimum and maximum allowable values for @spin_button - **/ + * + * Sets the minimum and maximum allowable values for @spin_button. + */ void gtk_spin_button_set_range (GtkSpinButton *spin_button, - gdouble min, - gdouble max) + gdouble min, + gdouble max) { - GtkSpinButtonPrivate *priv; - gdouble value; + GtkAdjustment *adjustment; g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button)); - priv = spin_button->priv; + adjustment = spin_button->priv->adjustment; - priv->adjustment->lower = min; - priv->adjustment->upper = max; - - value = CLAMP (priv->adjustment->value, - priv->adjustment->lower, - (priv->adjustment->upper - priv->adjustment->page_size)); - - if (value != priv->adjustment->value) - gtk_spin_button_set_value (spin_button, value); - - gtk_adjustment_changed (priv->adjustment); + gtk_adjustment_configure (adjustment, + CLAMP (gtk_adjustment_get_value (adjustment), min, max), + min, + max, + gtk_adjustment_get_step_increment (adjustment), + gtk_adjustment_get_page_increment (adjustment), + gtk_adjustment_get_page_size (adjustment)); } /** @@ -2019,13 +2190,13 @@ gtk_spin_button_set_range (GtkSpinButton *spin_button, * @min: (allow-none): location to store minimum allowed value, or %NULL * @max: (allow-none): location to store maximum allowed value, or %NULL * - * Gets the range allowed for @spin_button. See - * gtk_spin_button_set_range(). - **/ + * Gets the range allowed for @spin_button. + * See gtk_spin_button_set_range(). + */ void gtk_spin_button_get_range (GtkSpinButton *spin_button, - gdouble *min, - gdouble *max) + gdouble *min, + gdouble *max) { GtkSpinButtonPrivate *priv; @@ -2034,35 +2205,35 @@ gtk_spin_button_get_range (GtkSpinButton *spin_button, priv = spin_button->priv; if (min) - *min = priv->adjustment->lower; + *min = gtk_adjustment_get_lower (priv->adjustment); if (max) - *max = priv->adjustment->upper; + *max = gtk_adjustment_get_upper (priv->adjustment); } /** * gtk_spin_button_get_value: * @spin_button: a #GtkSpinButton - * + * * Get the value in the @spin_button. - * + * * Return value: the value of @spin_button - **/ + */ gdouble gtk_spin_button_get_value (GtkSpinButton *spin_button) { g_return_val_if_fail (GTK_IS_SPIN_BUTTON (spin_button), 0.0); - return spin_button->priv->adjustment->value; + return gtk_adjustment_get_value (spin_button->priv->adjustment); } /** * gtk_spin_button_get_value_as_int: * @spin_button: a #GtkSpinButton - * + * * Get the value @spin_button represented as an integer. - * + * * Return value: the value of @spin_button - **/ + */ gint gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button) { @@ -2073,7 +2244,7 @@ gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button) priv = spin_button->priv; - val = priv->adjustment->value; + val = gtk_adjustment_get_value (priv->adjustment); if (val - floor (val) < ceil (val) - val) return floor (val); else @@ -2084,12 +2255,12 @@ gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button) * gtk_spin_button_set_value: * @spin_button: a #GtkSpinButton * @value: the new value - * - * Set the value of @spin_button. - **/ -void -gtk_spin_button_set_value (GtkSpinButton *spin_button, - gdouble value) + * + * Sets the value of @spin_button. + */ +void +gtk_spin_button_set_value (GtkSpinButton *spin_button, + gdouble value) { GtkSpinButtonPrivate *priv; @@ -2097,28 +2268,29 @@ gtk_spin_button_set_value (GtkSpinButton *spin_button, priv = spin_button->priv; - if (fabs (value - priv->adjustment->value) > EPSILON) + if (fabs (value - gtk_adjustment_get_value (priv->adjustment)) > EPSILON) gtk_adjustment_set_value (priv->adjustment, value); else { gint return_val = FALSE; g_signal_emit (spin_button, spinbutton_signals[OUTPUT], 0, &return_val); if (return_val == FALSE) - gtk_spin_button_default_output (spin_button); + gtk_spin_button_default_output (spin_button); } } /** * gtk_spin_button_set_update_policy: - * @spin_button: a #GtkSpinButton + * @spin_button: a #GtkSpinButton * @policy: a #GtkSpinButtonUpdatePolicy value - * - * Sets the update behavior of a spin button. This determines whether the - * spin button is always updated or only when a valid value is set. - **/ + * + * Sets the update behavior of a spin button. + * This determines wether the spin button is always updated + * or only when a valid value is set. + */ void gtk_spin_button_set_update_policy (GtkSpinButton *spin_button, - GtkSpinButtonUpdatePolicy policy) + GtkSpinButtonUpdatePolicy policy) { GtkSpinButtonPrivate *priv; @@ -2137,11 +2309,11 @@ gtk_spin_button_set_update_policy (GtkSpinButton *spin_button, * gtk_spin_button_get_update_policy: * @spin_button: a #GtkSpinButton * - * Gets the update behavior of a spin button. See - * gtk_spin_button_set_update_policy(). + * Gets the update behavior of a spin button. + * See gtk_spin_button_set_update_policy(). * * Return value: the current update policy - **/ + */ GtkSpinButtonUpdatePolicy gtk_spin_button_get_update_policy (GtkSpinButton *spin_button) { @@ -2152,15 +2324,15 @@ gtk_spin_button_get_update_policy (GtkSpinButton *spin_button) /** * gtk_spin_button_set_numeric: - * @spin_button: a #GtkSpinButton - * @numeric: flag indicating if only numeric entry is allowed. - * - * Sets the flag that determines if non-numeric text can be typed into - * the spin button. - **/ + * @spin_button: a #GtkSpinButton + * @numeric: flag indicating if only numeric entry is allowed + * + * Sets the flag that determines if non-numeric text can be typed + * into the spin button. + */ void -gtk_spin_button_set_numeric (GtkSpinButton *spin_button, - gboolean numeric) +gtk_spin_button_set_numeric (GtkSpinButton *spin_button, + gboolean numeric) { GtkSpinButtonPrivate *priv; @@ -2185,7 +2357,7 @@ gtk_spin_button_set_numeric (GtkSpinButton *spin_button, * See gtk_spin_button_set_numeric(). * * Return value: %TRUE if only numeric text can be entered - **/ + */ gboolean gtk_spin_button_get_numeric (GtkSpinButton *spin_button) { @@ -2196,15 +2368,16 @@ gtk_spin_button_get_numeric (GtkSpinButton *spin_button) /** * gtk_spin_button_set_wrap: - * @spin_button: a #GtkSpinButton - * @wrap: a flag indicating if wrapping behavior is performed. - * - * Sets the flag that determines if a spin button value wraps around to the - * opposite limit when the upper or lower limit of the range is exceeded. - **/ + * @spin_button: a #GtkSpinButton + * @wrap: a flag indicating if wrapping behavior is performed + * + * Sets the flag that determines if a spin button value wraps + * around to the opposite limit when the upper or lower limit + * of the range is exceeded. + */ void gtk_spin_button_set_wrap (GtkSpinButton *spin_button, - gboolean wrap) + gboolean wrap) { GtkSpinButtonPrivate *priv; @@ -2212,12 +2385,12 @@ gtk_spin_button_set_wrap (GtkSpinButton *spin_button, priv = spin_button->priv; - wrap = wrap != FALSE; + wrap = wrap != FALSE; if (priv->wrap != wrap) { - priv->wrap = (wrap != 0); - + priv->wrap = wrap; + g_object_notify (G_OBJECT (spin_button), "wrap"); } } @@ -2231,7 +2404,7 @@ gtk_spin_button_set_wrap (GtkSpinButton *spin_button, * exceeded. See gtk_spin_button_set_wrap(). * * Return value: %TRUE if the spin button wraps around - **/ + */ gboolean gtk_spin_button_get_wrap (GtkSpinButton *spin_button) { @@ -2243,47 +2416,33 @@ gtk_spin_button_get_wrap (GtkSpinButton *spin_button) static gint spin_button_get_arrow_size (GtkSpinButton *spin_button) { - GtkStyle *style; + const PangoFontDescription *font_desc; + GtkStyleContext *context; gint size; gint arrow_size; - style = gtk_widget_get_style (GTK_WIDGET (spin_button)); - size = pango_font_description_get_size (style->font_desc); + /* FIXME: use getter */ + context = gtk_widget_get_style_context (GTK_WIDGET (spin_button)); + font_desc = gtk_style_context_get_font (context, 0); + + size = pango_font_description_get_size (font_desc); arrow_size = MAX (PANGO_PIXELS (size), MIN_ARROW_WIDTH); return arrow_size - arrow_size % 2; /* force even */ } -/** - * spin_button_get_shadow_type: - * @spin_button: a #GtkSpinButton - * - * Convenience function to Get the shadow type from the underlying widget's - * style. - * - * Return value: the #GtkShadowType - **/ -static gint -spin_button_get_shadow_type (GtkSpinButton *spin_button) -{ - GtkShadowType rc_shadow_type; - - gtk_widget_style_get (GTK_WIDGET (spin_button), "shadow-type", &rc_shadow_type, NULL); - - return rc_shadow_type; -} - /** * gtk_spin_button_set_snap_to_ticks: - * @spin_button: a #GtkSpinButton - * @snap_to_ticks: a flag indicating if invalid values should be corrected. - * - * Sets the policy as to whether values are corrected to the nearest step - * increment when a spin button is activated after providing an invalid value. - **/ + * @spin_button: a #GtkSpinButton + * @snap_to_ticks: a flag indicating if invalid values should be corrected + * + * Sets the policy as to whether values are corrected to the + * nearest step increment when a spin button is activated after + * providing an invalid value. + */ void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, - gboolean snap_to_ticks) + gboolean snap_to_ticks) { GtkSpinButtonPrivate *priv; guint new_val; @@ -2298,8 +2457,8 @@ gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, { priv->snap_to_ticks = new_val; if (new_val && gtk_editable_get_editable (GTK_EDITABLE (spin_button))) - gtk_spin_button_update (spin_button); - + gtk_spin_button_update (spin_button); + g_object_notify (G_OBJECT (spin_button), "snap-to-ticks"); } } @@ -2308,11 +2467,11 @@ gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button, * gtk_spin_button_get_snap_to_ticks: * @spin_button: a #GtkSpinButton * - * Returns whether the values are corrected to the nearest step. See - * gtk_spin_button_set_snap_to_ticks(). + * Returns whether the values are corrected to the nearest step. + * See gtk_spin_button_set_snap_to_ticks(). * - * Return value: %TRUE if values are snapped to the nearest step. - **/ + * Return value: %TRUE if values are snapped to the nearest step + */ gboolean gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button) { @@ -2323,35 +2482,35 @@ gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button) /** * gtk_spin_button_spin: - * @spin_button: a #GtkSpinButton - * @direction: a #GtkSpinType indicating the direction to spin. - * @increment: step increment to apply in the specified direction. - * - * Increment or decrement a spin button's value in a specified direction - * by a specified amount. - **/ + * @spin_button: a #GtkSpinButton + * @direction: a #GtkSpinType indicating the direction to spin + * @increment: step increment to apply in the specified direction + * + * Increment or decrement a spin button's value in a specified + * direction by a specified amount. + */ void gtk_spin_button_spin (GtkSpinButton *spin_button, - GtkSpinType direction, - gdouble increment) + GtkSpinType direction, + gdouble increment) { GtkSpinButtonPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble diff; g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button)); priv = spin_button->priv; - adj = priv->adjustment; + adjustment = priv->adjustment; /* for compatibility with the 1.0.x version of this function */ - if (increment != 0 && increment != adj->step_increment && + if (increment != 0 && increment != gtk_adjustment_get_step_increment (adjustment) && (direction == GTK_SPIN_STEP_FORWARD || direction == GTK_SPIN_STEP_BACKWARD)) { if (direction == GTK_SPIN_STEP_BACKWARD && increment > 0) - increment = -increment; + increment = -increment; direction = GTK_SPIN_USER_DEFINED; } @@ -2359,42 +2518,42 @@ gtk_spin_button_spin (GtkSpinButton *spin_button, { case GTK_SPIN_STEP_FORWARD: - gtk_spin_button_real_spin (spin_button, adj->step_increment); + gtk_spin_button_real_spin (spin_button, gtk_adjustment_get_step_increment (adjustment)); break; case GTK_SPIN_STEP_BACKWARD: - gtk_spin_button_real_spin (spin_button, -adj->step_increment); + gtk_spin_button_real_spin (spin_button, -gtk_adjustment_get_step_increment (adjustment)); break; case GTK_SPIN_PAGE_FORWARD: - gtk_spin_button_real_spin (spin_button, adj->page_increment); + gtk_spin_button_real_spin (spin_button, gtk_adjustment_get_page_increment (adjustment)); break; case GTK_SPIN_PAGE_BACKWARD: - gtk_spin_button_real_spin (spin_button, -adj->page_increment); + gtk_spin_button_real_spin (spin_button, -gtk_adjustment_get_page_increment (adjustment)); break; case GTK_SPIN_HOME: - diff = adj->value - adj->lower; + diff = gtk_adjustment_get_value (adjustment) - gtk_adjustment_get_lower (adjustment); if (diff > EPSILON) - gtk_spin_button_real_spin (spin_button, -diff); + gtk_spin_button_real_spin (spin_button, -diff); break; case GTK_SPIN_END: - diff = adj->upper - adj->value; + diff = gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_value (adjustment); if (diff > EPSILON) - gtk_spin_button_real_spin (spin_button, diff); + gtk_spin_button_real_spin (spin_button, diff); break; case GTK_SPIN_USER_DEFINED: if (increment != 0) - gtk_spin_button_real_spin (spin_button, increment); + gtk_spin_button_real_spin (spin_button, increment); break; default: @@ -2404,11 +2563,11 @@ gtk_spin_button_spin (GtkSpinButton *spin_button, /** * gtk_spin_button_update: - * @spin_button: a #GtkSpinButton - * + * @spin_button: a #GtkSpinButton + * * Manually force an update of the spin button. - **/ -void + */ +void gtk_spin_button_update (GtkSpinButton *spin_button) { GtkSpinButtonPrivate *priv; @@ -2434,15 +2593,15 @@ gtk_spin_button_update (GtkSpinButton *spin_button) if (priv->update_policy == GTK_UPDATE_ALWAYS) { - if (val < priv->adjustment->lower) - val = priv->adjustment->lower; - else if (val > priv->adjustment->upper) - val = priv->adjustment->upper; + if (val < gtk_adjustment_get_lower (priv->adjustment)) + val = gtk_adjustment_get_lower (priv->adjustment); + else if (val > gtk_adjustment_get_upper (priv->adjustment)) + val = gtk_adjustment_get_upper (priv->adjustment); } - else if ((priv->update_policy == GTK_UPDATE_IF_VALID) && - (error || - val < priv->adjustment->lower || - val > priv->adjustment->upper)) + else if ((priv->update_policy == GTK_UPDATE_IF_VALID) && + (error || + val < gtk_adjustment_get_lower (priv->adjustment) || + val > gtk_adjustment_get_upper (priv->adjustment))) { gtk_spin_button_value_changed (priv->adjustment, spin_button); return; diff --git a/gtk/gtkspinbutton.h b/gtk/gtkspinbutton.h index f061f29028..40a861503d 100644 --- a/gtk/gtkspinbutton.h +++ b/gtk/gtkspinbutton.h @@ -48,14 +48,45 @@ G_BEGIN_DECLS #define GTK_IS_SPIN_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SPIN_BUTTON)) #define GTK_SPIN_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SPIN_BUTTON, GtkSpinButtonClass)) +/** + * GTK_INPUT_ERROR: + * + * Constant to return from a signal handler for the #GtkSpinButton::input + * signal in case of conversion failure. + */ #define GTK_INPUT_ERROR -1 +/** + * GtkSpinButtonUpdatePolicy: + * @GTK_UPDATE_ALWAYS: When refreshing your #GtkSpinButton, the value is + * always displayed + * @GTK_UPDATE_IF_VALID: When refreshing your #GtkSpinButton, the value is + * only displayed if it is valid within the bounds of the spin button's + * adjustment + * + * The spin button update policy determines whether the spin button displays + * values even if they are outside the bounds of its adjustment. + * See gtk_spin_button_set_update_policy(). + */ typedef enum { GTK_UPDATE_ALWAYS, GTK_UPDATE_IF_VALID } GtkSpinButtonUpdatePolicy; +/** + * GtkSpinType: + * @GTK_SPIN_STEP_FORWARD: Increment by the adjustments step increment. + * @GTK_SPIN_STEP_BACKWARD: Decrement by the adjustments step increment. + * @GTK_SPIN_PAGE_FORWARD: Increment by the adjustments page increment. + * @GTK_SPIN_PAGE_BACKWARD: Decrement by the adjustments page increment. + * @GTK_SPIN_HOME: Go to the adjustments lower bound. + * @GTK_SPIN_END: Go to the adjustments upper bound. + * @GTK_SPIN_USER_DEFINED: Change by a specified amount. + * + * The values of the GtkSpinType enumeration are used to specify the + * change to make in gtk_spin_button_spin(). + */ typedef enum { GTK_SPIN_STEP_FORWARD, @@ -72,7 +103,12 @@ typedef struct _GtkSpinButton GtkSpinButton; typedef struct _GtkSpinButtonPrivate GtkSpinButtonPrivate; typedef struct _GtkSpinButtonClass GtkSpinButtonClass; - +/** + * GtkSpinButton: + * + * The #GtkSpinButton struct contains only private data and should + * not be directly modified. + */ struct _GtkSpinButton { GtkEntry entry; diff --git a/gtk/gtkspinner.c b/gtk/gtkspinner.c index 65bf7e2353..779eee0ff2 100644 --- a/gtk/gtkspinner.c +++ b/gtk/gtkspinner.c @@ -119,43 +119,6 @@ gtk_spinner_class_init (GtkSpinnerClass *klass) P_("Whether the spinner is active"), FALSE, G_PARAM_READWRITE)); - /** - * GtkSpinner:num-steps: - * - * The number of steps for the spinner to complete a full loop. - * The animation will complete a full cycle in one second by default - * (see the #GtkSpinner:cycle-duration style property). - * - * Since: 2.20 - * - * Deprecated: 3.0 - */ - gtk_widget_class_install_style_property (widget_class, - g_param_spec_uint ("num-steps", - P_("Number of steps"), - P_("The number of steps for the spinner to complete a full loop. The animation will complete a full cycle in one second by default (see #GtkSpinner:cycle-duration)."), - 1, - G_MAXUINT, - 12, - G_PARAM_READABLE)); - - /** - * GtkSpinner:cycle-duration: - * - * The duration in milliseconds for the spinner to complete a full cycle. - * - * Since: 2.20 - * - * Deprecated: 3.0 - */ - gtk_widget_class_install_style_property (widget_class, - g_param_spec_uint ("cycle-duration", - P_("Animation duration"), - P_("The length of time in milliseconds for the spinner to complete a full loop"), - 500, - G_MAXUINT, - 1000, - G_PARAM_READABLE)); } static void @@ -345,7 +308,7 @@ typedef AtkObjectFactory GtkSpinnerAccessibleFactory; typedef AtkObjectFactoryClass GtkSpinnerAccessibleFactoryClass; G_DEFINE_TYPE (GtkSpinnerAccessibleFactory, - gtk_spinner_accessible_factory, + _gtk_spinner_accessible_factory, ATK_TYPE_OBJECT_FACTORY); static GType @@ -366,14 +329,14 @@ gtk_spinner_accessible_factory_create_accessible (GObject *obj) } static void -gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass) +_gtk_spinner_accessible_factory_class_init (AtkObjectFactoryClass *klass) { klass->create_accessible = gtk_spinner_accessible_factory_create_accessible; klass->get_accessible_type = gtk_spinner_accessible_factory_get_accessible_type; } static void -gtk_spinner_accessible_factory_init (AtkObjectFactory *factory) +_gtk_spinner_accessible_factory_init (AtkObjectFactory *factory) { } @@ -402,7 +365,7 @@ gtk_spinner_get_accessible (GtkWidget *widget) if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) atk_registry_set_factory_type (registry, GTK_TYPE_SPINNER, - gtk_spinner_accessible_factory_get_type ()); + _gtk_spinner_accessible_factory_get_type ()); first_time = FALSE; } diff --git a/gtk/gtkstatusbar.c b/gtk/gtkstatusbar.c index e38b448e25..334c9a4873 100644 --- a/gtk/gtkstatusbar.c +++ b/gtk/gtkstatusbar.c @@ -26,6 +26,7 @@ */ #include "config.h" + #include "gtkframe.h" #include "gtklabel.h" #include "gtkmarshalers.h" @@ -34,6 +35,7 @@ #include "gtkprivate.h" #include "gtkintl.h" #include "gtkbuildable.h" +#include "gtktypebuiltins.h" /** * SECTION:gtkstatusbar diff --git a/gtk/gtkstatusicon.c b/gtk/gtkstatusicon.c index f3bf6383b4..c22b0a87b4 100644 --- a/gtk/gtkstatusicon.c +++ b/gtk/gtkstatusicon.c @@ -29,40 +29,32 @@ #include "config.h" -#include "gtkstatusicon.h" - #include +#include "gtkstatusicon.h" + #include "gtkintl.h" #include "gtkiconfactory.h" #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtksizerequest.h" #include "gtktrayicon.h" - #include "gtkprivate.h" #include "gtkwidget.h" #include "gtktooltip.h" +#include "gtkicontheme.h" +#include "gtklabel.h" +#include "gtktypebuiltins.h" #ifdef GDK_WINDOWING_X11 #include "gdk/x11/gdkx.h" #endif #ifdef GDK_WINDOWING_WIN32 -#include "gtkicontheme.h" -#include "gtklabel.h" - -#include "win32/gdkwin32.h" +#include "gdk/win32/gdkwin32.h" #define WM_GTK_TRAY_NOTIFICATION (WM_USER+1) #endif -#ifdef GDK_WINDOWING_QUARTZ -#include "gtkicontheme.h" -#include "gtklabel.h" -#endif - -#include "gdkkeysyms.h" - #define BLINK_TIMEOUT 500 enum @@ -643,7 +635,7 @@ build_button_event (GtkStatusIconPrivate *priv, e->axes = NULL; e->state = 0; e->button = button; - e->device = gdk_display_get_default ()->core_pointer; + //FIXME: e->device = gdk_display_get_default ()->core_pointer; e->x_root = e->x; e->y_root = e->y; } @@ -1193,7 +1185,7 @@ gtk_status_icon_new_from_pixbuf (GdkPixbuf *pixbuf) /** * gtk_status_icon_new_from_file: - * @filename: a filename + * @filename: (type filename): a filename * * Creates a status icon displaying the file @filename. * @@ -1434,10 +1426,9 @@ gtk_status_icon_update_image (GtkStatusIcon *status_icon) #ifdef GDK_WINDOWING_WIN32 { GdkPixbuf *pixbuf = - gtk_widget_render_icon (priv->dummy_widget, - priv->image_data.stock_id, - GTK_ICON_SIZE_SMALL_TOOLBAR, - NULL); + gtk_widget_render_icon_pixbuf (priv->dummy_widget, + priv->image_data.stock_id, + GTK_ICON_SIZE_SMALL_TOOLBAR); prev_hicon = priv->nid.hIcon; priv->nid.hIcon = gdk_win32_pixbuf_to_hicon_libgtk_only (pixbuf); @@ -1454,10 +1445,9 @@ gtk_status_icon_update_image (GtkStatusIcon *status_icon) { GdkPixbuf *pixbuf; - pixbuf = gtk_widget_render_icon (priv->dummy_widget, - priv->image_data.stock_id, - GTK_ICON_SIZE_SMALL_TOOLBAR, - NULL); + pixbuf = gtk_widget_render_icon_pixbuf (priv->dummy_widget, + priv->image_data.stock_id, + GTK_ICON_SIZE_SMALL_TOOLBAR); QUARTZ_POOL_ALLOC; [priv->status_item setImage:pixbuf]; QUARTZ_POOL_RELEASE; @@ -1923,7 +1913,7 @@ gtk_status_icon_set_from_pixbuf (GtkStatusIcon *status_icon, /** * gtk_status_icon_set_from_file: * @status_icon: a #GtkStatusIcon - * @filename: a filename + * @filename: (type filename): a filename * * Makes @status_icon display the file @filename. * See gtk_status_icon_new_from_file() for details. @@ -2474,14 +2464,14 @@ gtk_status_icon_position_menu (GtkMenu *menu, /** * gtk_status_icon_get_geometry: * @status_icon: a #GtkStatusIcon - * @screen: (out) (transfer none) (allow-none): return location for the screen, or %NULL if the - * information is not needed - * @area: (out) (allow-none): return location for the area occupied by the status - * icon, or %NULL - * @orientation: (out) (allow-none): return location for the orientation of the panel - * in which the status icon is embedded, or %NULL. A panel - * at the top or bottom of the screen is horizontal, a panel - * at the left or right is vertical. + * @screen: (out) (transfer none) (allow-none): return location for + * the screen, or %NULL if the information is not needed + * @area: (out) (allow-none): return location for the area occupied by + * the status icon, or %NULL + * @orientation: (out) (allow-none): return location for the + * orientation of the panel in which the status icon is embedded, + * or %NULL. A panel at the top or bottom of the screen is + * horizontal, a panel at the left or right is vertical. * * Obtains information about the location of the status icon * on screen. This information can be used to e.g. position diff --git a/gtk/gtkstock.c b/gtk/gtkstock.c index ff73fc40cd..d6977194b5 100644 --- a/gtk/gtkstock.c +++ b/gtk/gtkstock.c @@ -25,13 +25,13 @@ */ #include "config.h" + #include #include "gtkprivate.h" #include "gtkstock.h" #include "gtkiconfactory.h" #include "gtkintl.h" -#include /** * SECTION:gtkstock diff --git a/gtk/gtkstock.h b/gtk/gtkstock.h index 57e4b8f227..b32d4b162f 100644 --- a/gtk/gtkstock.h +++ b/gtk/gtkstock.h @@ -33,10 +33,23 @@ #include -#include /* for GtkTranslateFunc */ G_BEGIN_DECLS +/* + * GtkTranslateFunc: + * @path: The id of the message. In #GtkActionGroup this will be a label + * or tooltip from a #GtkActionEntry. + * @func_data: user data passed in when registering the function + * + * The function used to translate messages in e.g. #GtkIconFactory + * and #GtkActionGroup. + * + * Returns: the translated message + */ +typedef gchar * (*GtkTranslateFunc) (const gchar *path, + gpointer func_data); + typedef struct _GtkStockItem GtkStockItem; struct _GtkStockItem diff --git a/gtk/gtkstyle.c b/gtk/gtkstyle.c index ff7686a6ab..9fd3bfbe6f 100644 --- a/gtk/gtkstyle.c +++ b/gtk/gtkstyle.c @@ -35,9 +35,7 @@ #include "gtkspinbutton.h" #include "gtkstyle.h" #include "gtkwidget.h" -#include "gtkthemes.h" #include "gtkiconfactory.h" -#include "gtksettings.h" /* _gtk_settings_parse_convert() */ #include "gtkintl.h" #include "gtkdebug.h" #include "gtkspinner.h" @@ -82,7 +80,6 @@ typedef struct { typedef struct _GtkStylePrivate GtkStylePrivate; struct _GtkStylePrivate { - GSList *color_hashes; GtkStyleContext *context; gulong context_changed_id; }; @@ -104,8 +101,6 @@ static void gtk_style_get_property (GObject *object, GValue *value, GParamSpec *pspec); -static void gtk_style_realize (GtkStyle *style, - GdkVisual *visual); static void gtk_style_real_realize (GtkStyle *style); static void gtk_style_real_unrealize (GtkStyle *style); static void gtk_style_real_copy (GtkStyle *style, @@ -334,8 +329,6 @@ static void hls_to_rgb (gdouble *h, gdouble *l, gdouble *s); -static void style_unrealize_cursors (GtkStyle *style); - static void transform_detail_string (const gchar *detail, GtkStyleContext *context); @@ -378,54 +371,13 @@ G_DEFINE_TYPE (GtkStyle, gtk_style, G_TYPE_OBJECT) /* --- functions --- */ -/** - * _gtk_style_init_for_settings: - * @style: a #GtkStyle - * @settings: a #GtkSettings - * - * Initializes the font description in @style according to the default - * font name of @settings. This is called for gtk_style_new() with - * the settings for the default screen (if any); if we are creating - * a style for a particular screen, we then call it again in a - * location where we know the correct settings. - * The reason for this is that gtk_rc_style_create_style() doesn't - * take the screen for an argument. - **/ -void -_gtk_style_init_for_settings (GtkStyle *style, - GtkSettings *settings) -{ - const gchar *font_name = _gtk_rc_context_get_default_font_name (settings); - - if (style->font_desc) - pango_font_description_free (style->font_desc); - - style->font_desc = pango_font_description_from_string (font_name); - - if (!pango_font_description_get_family (style->font_desc)) - { - g_warning ("Default font does not have a family set"); - pango_font_description_set_family (style->font_desc, "Sans"); - } - if (pango_font_description_get_size (style->font_desc) <= 0) - { - g_warning ("Default font does not have a positive size"); - pango_font_description_set_size (style->font_desc, 10 * PANGO_SCALE); - } -} - static void gtk_style_init (GtkStyle *style) { gint i; - - GtkSettings *settings = gtk_settings_get_default (); - - if (settings) - _gtk_style_init_for_settings (style, settings); - else - style->font_desc = pango_font_description_from_string ("Sans 10"); - + + style->font_desc = pango_font_description_from_string ("Sans 10"); + style->attach_count = 0; style->black.red = 0; @@ -556,35 +508,15 @@ gtk_style_class_init (GtkStyleClass *klass) G_TYPE_NONE, 0); } -static void -clear_property_cache (GtkStyle *style) -{ - if (style->property_cache) - { - guint i; - - for (i = 0; i < style->property_cache->len; i++) - { - PropertyValue *node = &g_array_index (style->property_cache, PropertyValue, i); - - g_param_spec_unref (node->pspec); - g_value_unset (&node->value); - } - g_array_free (style->property_cache, TRUE); - style->property_cache = NULL; - } -} - static void gtk_style_finalize (GObject *object) { GtkStyle *style = GTK_STYLE (object); GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); + gint i; g_return_if_fail (style->attach_count == 0); - clear_property_cache (style); - /* All the styles in the list have the same * style->styles pointer. If we delete the * *first* style from the list, we need to update @@ -612,9 +544,6 @@ gtk_style_finalize (GObject *object) g_slist_foreach (style->icon_factories, (GFunc) g_object_unref, NULL); g_slist_free (style->icon_factories); - g_slist_foreach (priv->color_hashes, (GFunc) g_hash_table_unref, NULL); - g_slist_free (priv->color_hashes); - pango_font_description_free (style->font_desc); if (style->private_font_desc) @@ -631,6 +560,12 @@ gtk_style_finalize (GObject *object) g_object_unref (priv->context); } + for (i = 0; i < 5; i++) + { + if (style->background[i]) + cairo_pattern_destroy (style->background[i]); + } + G_OBJECT_CLASS (gtk_style_parent_class)->finalize (object); } @@ -748,6 +683,7 @@ gtk_style_update_from_context (GtkStyle *style) GtkStylePrivate *priv; GtkStateType state; GtkBorder *padding; + gint i; priv = GTK_STYLE_GET_PRIVATE (style); @@ -792,6 +728,38 @@ gtk_style_update_from_context (GtkStyle *style) gtk_border_free (padding); } + + for (i = 0; i < 5; i++) + { + _gtk_style_shade (&style->bg[i], &style->light[i], LIGHTNESS_MULT); + _gtk_style_shade (&style->bg[i], &style->dark[i], DARKNESS_MULT); + + style->mid[i].red = (style->light[i].red + style->dark[i].red) / 2; + style->mid[i].green = (style->light[i].green + style->dark[i].green) / 2; + style->mid[i].blue = (style->light[i].blue + style->dark[i].blue) / 2; + + style->text_aa[i].red = (style->text[i].red + style->base[i].red) / 2; + style->text_aa[i].green = (style->text[i].green + style->base[i].green) / 2; + style->text_aa[i].blue = (style->text[i].blue + style->base[i].blue) / 2; + } + + style->black.red = 0x0000; + style->black.green = 0x0000; + style->black.blue = 0x0000; + + style->white.red = 0xffff; + style->white.green = 0xffff; + style->white.blue = 0xffff; + + for (i = 0; i < 5; i++) + { + if (style->background[i]) + cairo_pattern_destroy (style->background[i]); + + style->background[i] = cairo_pattern_create_rgb (style->bg[i].red / 65535.0, + style->bg[i].green / 65535.0, + style->bg[i].blue / 65535.0); + } } static void @@ -840,24 +808,24 @@ gtk_style_copy (GtkStyle *style) return new_style; } -static GtkStyle* -gtk_style_duplicate (GtkStyle *style) +GtkStyle* +_gtk_style_new_for_path (GdkScreen *screen, + GtkWidgetPath *path) { - GtkStyle *new_style; - - g_return_val_if_fail (GTK_IS_STYLE (style), NULL); - - new_style = gtk_style_copy (style); - - /* All the styles in the list have the same - * style->styles pointer. When we insert a new - * style, we append it to the list to avoid having - * to update the existing ones. - */ - style->styles = g_slist_append (style->styles, new_style); - new_style->styles = style->styles; - - return new_style; + GtkStyleContext *context; + GtkStyle *style; + + context = gtk_style_context_new (); + gtk_style_context_set_screen (context, screen); + gtk_style_context_set_path (context, path); + + style = g_object_new (GTK_TYPE_STYLE, + "context", context, + NULL); + + g_object_unref (context); + + return style; } /** @@ -871,10 +839,17 @@ gtk_style_duplicate (GtkStyle *style) GtkStyle* gtk_style_new (void) { + GtkWidgetPath *path; GtkStyle *style; - - style = g_object_new (GTK_TYPE_STYLE, NULL); - + + path = gtk_widget_path_new (); + gtk_widget_path_append_type (path, GTK_TYPE_WIDGET); + + style = _gtk_style_new_for_path (gdk_screen_get_default (), + path); + + gtk_widget_path_free (path); + return style; } @@ -914,69 +889,10 @@ GtkStyle* gtk_style_attach (GtkStyle *style, GdkWindow *window) { - GSList *styles; - GtkStyle *new_style = NULL; - GdkVisual *visual; - g_return_val_if_fail (GTK_IS_STYLE (style), NULL); g_return_val_if_fail (window != NULL, NULL); - - visual = gdk_window_get_visual (window); - - if (!style->styles) - style->styles = g_slist_append (NULL, style); - - styles = style->styles; - while (styles) - { - new_style = styles->data; - - if (new_style->visual == visual) - break; - new_style = NULL; - styles = styles->next; - } - - if (!new_style) - { - styles = style->styles; - - while (styles) - { - new_style = styles->data; - - if (new_style->attach_count == 0) - { - gtk_style_realize (new_style, visual); - break; - } - - new_style = NULL; - styles = styles->next; - } - } - - if (!new_style) - { - new_style = gtk_style_duplicate (style); - gtk_style_realize (new_style, visual); - } - - /* A style gets a refcount from being attached */ - if (new_style->attach_count == 0) - g_object_ref (new_style); - - /* Another refcount belongs to the parent */ - if (style != new_style) - { - g_object_unref (style); - g_object_ref (new_style); - } - - new_style->attach_count++; - - return new_style; + return style; } /** @@ -992,35 +908,6 @@ void gtk_style_detach (GtkStyle *style) { g_return_if_fail (GTK_IS_STYLE (style)); - - if (style->attach_count == 0) - return; - - style->attach_count -= 1; - if (style->attach_count == 0) - { - g_signal_emit (style, unrealize_signal, 0); - - g_object_unref (style->visual); - style->visual = NULL; - - if (style->private_font_desc) - { - pango_font_description_free (style->private_font_desc); - style->private_font_desc = NULL; - } - - g_object_unref (style); - } -} - -static void -gtk_style_realize (GtkStyle *style, - GdkVisual *visual) -{ - style->visual = g_object_ref (visual); - - g_signal_emit (style, realize_signal, 0); } /** @@ -1141,8 +1028,6 @@ static void gtk_style_real_copy (GtkStyle *style, GtkStyle *src) { - GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); - GtkStylePrivate *src_priv = GTK_STYLE_GET_PRIVATE (src); gint i; for (i = 0; i < 5; i++) @@ -1179,64 +1064,12 @@ gtk_style_real_copy (GtkStyle *style, g_slist_free (style->icon_factories); style->icon_factories = g_slist_copy (src->icon_factories); g_slist_foreach (style->icon_factories, (GFunc) g_object_ref, NULL); - - g_slist_foreach (priv->color_hashes, (GFunc) g_hash_table_unref, NULL); - g_slist_free (priv->color_hashes); - priv->color_hashes = g_slist_copy (src_priv->color_hashes); - g_slist_foreach (priv->color_hashes, (GFunc) g_hash_table_ref, NULL); - - /* don't copy, just clear cache */ - clear_property_cache (style); } static void gtk_style_real_init_from_rc (GtkStyle *style, GtkRcStyle *rc_style) { - GtkStylePrivate *priv = GTK_STYLE_GET_PRIVATE (style); - gint i; - - /* cache _should_ be still empty */ - clear_property_cache (style); - - if (rc_style->font_desc) - pango_font_description_merge (style->font_desc, rc_style->font_desc, TRUE); - - for (i = 0; i < 5; i++) - { - if (rc_style->color_flags[i] & GTK_RC_FG) - style->fg[i] = rc_style->fg[i]; - if (rc_style->color_flags[i] & GTK_RC_BG) - style->bg[i] = rc_style->bg[i]; - if (rc_style->color_flags[i] & GTK_RC_TEXT) - style->text[i] = rc_style->text[i]; - if (rc_style->color_flags[i] & GTK_RC_BASE) - style->base[i] = rc_style->base[i]; - } - - if (rc_style->xthickness >= 0) - style->xthickness = rc_style->xthickness; - if (rc_style->ythickness >= 0) - style->ythickness = rc_style->ythickness; - - style->icon_factories = g_slist_copy (rc_style->icon_factories); - g_slist_foreach (style->icon_factories, (GFunc) g_object_ref, NULL); - - priv->color_hashes = g_slist_copy (_gtk_rc_style_get_color_hashes (rc_style)); - g_slist_foreach (priv->color_hashes, (GFunc) g_hash_table_ref, NULL); -} - -static gint -style_property_values_cmp (gconstpointer bsearch_node1, - gconstpointer bsearch_node2) -{ - const PropertyValue *val1 = bsearch_node1; - const PropertyValue *val2 = bsearch_node2; - - if (val1->widget_type == val2->widget_type) - return val1->pspec < val2->pspec ? -1 : val1->pspec == val2->pspec ? 0 : 1; - else - return val1->widget_type < val2->widget_type ? -1 : 1; } /** @@ -1258,9 +1091,9 @@ gtk_style_get_style_property (GtkStyle *style, const gchar *property_name, GValue *value) { + GtkStylePrivate *priv; GtkWidgetClass *klass; GParamSpec *pspec; - GtkRcPropertyParser parser; const GValue *peek_value; klass = g_type_class_ref (widget_type); @@ -1276,10 +1109,10 @@ gtk_style_get_style_property (GtkStyle *style, return; } - parser = g_param_spec_get_qdata (pspec, - g_quark_from_static_string ("gtk-rc-property-parser")); - - peek_value = _gtk_style_peek_property_value (style, widget_type, pspec, parser); + priv = GTK_STYLE_GET_PRIVATE (style); + peek_value = _gtk_style_context_peek_style_property (priv->context, + widget_type, + 0, pspec); if (G_VALUE_TYPE (value) == G_PARAM_SPEC_VALUE_TYPE (pspec)) g_value_copy (peek_value, value); @@ -1312,6 +1145,7 @@ gtk_style_get_valist (GtkStyle *style, const gchar *first_property_name, va_list var_args) { + GtkStylePrivate *priv; const char *property_name; GtkWidgetClass *klass; @@ -1319,11 +1153,11 @@ gtk_style_get_valist (GtkStyle *style, klass = g_type_class_ref (widget_type); + priv = GTK_STYLE_GET_PRIVATE (style); property_name = first_property_name; while (property_name) { GParamSpec *pspec; - GtkRcPropertyParser parser; const GValue *peek_value; gchar *error; @@ -1338,10 +1172,8 @@ gtk_style_get_valist (GtkStyle *style, break; } - parser = g_param_spec_get_qdata (pspec, - g_quark_from_static_string ("gtk-rc-property-parser")); - - peek_value = _gtk_style_peek_property_value (style, widget_type, pspec, parser); + peek_value = _gtk_style_context_peek_style_property (priv->context, widget_type, + 0, pspec); G_VALUE_LCOPY (peek_value, var_args, 0, &error); if (error) { @@ -1383,195 +1215,14 @@ gtk_style_get (GtkStyle *style, va_end (var_args); } -const GValue* -_gtk_style_peek_property_value (GtkStyle *style, - GType widget_type, - GParamSpec *pspec, - GtkRcPropertyParser parser) -{ - PropertyValue *pcache, key = { 0, NULL, { 0, } }; - const GtkRcProperty *rcprop = NULL; - guint i; - - g_return_val_if_fail (GTK_IS_STYLE (style), NULL); - g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL); - g_return_val_if_fail (g_type_is_a (pspec->owner_type, GTK_TYPE_WIDGET), NULL); - g_return_val_if_fail (g_type_is_a (widget_type, pspec->owner_type), NULL); - - key.widget_type = widget_type; - key.pspec = pspec; - - /* need value cache array */ - if (!style->property_cache) - style->property_cache = g_array_new (FALSE, FALSE, sizeof (PropertyValue)); - else - { - pcache = bsearch (&key, - style->property_cache->data, style->property_cache->len, - sizeof (PropertyValue), style_property_values_cmp); - if (pcache) - return &pcache->value; - } - - i = 0; - while (i < style->property_cache->len && - style_property_values_cmp (&key, &g_array_index (style->property_cache, PropertyValue, i)) >= 0) - i++; - - g_array_insert_val (style->property_cache, i, key); - pcache = &g_array_index (style->property_cache, PropertyValue, i); - - /* cache miss, initialize value type, then set contents */ - g_param_spec_ref (pcache->pspec); - g_value_init (&pcache->value, G_PARAM_SPEC_VALUE_TYPE (pspec)); - - /* value provided by rc style? */ - if (style->rc_style) - { - GQuark prop_quark = g_quark_from_string (pspec->name); - - do - { - rcprop = _gtk_rc_style_lookup_rc_property (style->rc_style, - g_type_qname (widget_type), - prop_quark); - if (rcprop) - break; - widget_type = g_type_parent (widget_type); - } - while (g_type_is_a (widget_type, pspec->owner_type)); - } - - /* when supplied by rc style, we need to convert */ - if (rcprop && !_gtk_settings_parse_convert (parser, &rcprop->value, - pspec, &pcache->value)) - { - gchar *contents = g_strdup_value_contents (&rcprop->value); - - g_message ("%s: failed to retrieve property `%s::%s' of type `%s' from rc file value \"%s\" of type `%s'", - rcprop->origin ? rcprop->origin : "(for origin information, set GTK_DEBUG)", - g_type_name (pspec->owner_type), pspec->name, - g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), - contents, - G_VALUE_TYPE_NAME (&rcprop->value)); - g_free (contents); - rcprop = NULL; /* needs default */ - } - - /* not supplied by rc style (or conversion failed), revert to default */ - if (!rcprop) - g_param_value_set_default (pspec, &pcache->value); - - return &pcache->value; -} - -static cairo_pattern_t * -load_background (GdkVisual *visual, - GdkColor *bg_color, - const gchar *filename) -{ - if (filename == NULL) - { - return cairo_pattern_create_rgb (bg_color->red / 65535.0, - bg_color->green / 65535.0, - bg_color->blue / 65535.0); - } - if (strcmp (filename, "") == 0) - return NULL; - else - { - GdkPixbuf *pixbuf; - cairo_surface_t *surface; - cairo_pattern_t *pattern; - cairo_t *cr; - GdkScreen *screen = gdk_visual_get_screen (visual); - - pixbuf = gdk_pixbuf_new_from_file (filename, NULL); - if (!pixbuf) - return NULL; - - surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen), - CAIRO_CONTENT_COLOR, - gdk_pixbuf_get_width (pixbuf), - gdk_pixbuf_get_height (pixbuf)); - - cr = cairo_create (surface); - - gdk_cairo_set_source_color (cr, bg_color); - cairo_paint (cr); - - gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); - cairo_paint (cr); - - cairo_destroy (cr); - g_object_unref (pixbuf); - - pattern = cairo_pattern_create_for_surface (surface); - - cairo_surface_destroy (surface); - - return pattern; - } -} - static void gtk_style_real_realize (GtkStyle *style) { - gint i; - - for (i = 0; i < 5; i++) - { - _gtk_style_shade (&style->bg[i], &style->light[i], LIGHTNESS_MULT); - _gtk_style_shade (&style->bg[i], &style->dark[i], DARKNESS_MULT); - - style->mid[i].red = (style->light[i].red + style->dark[i].red) / 2; - style->mid[i].green = (style->light[i].green + style->dark[i].green) / 2; - style->mid[i].blue = (style->light[i].blue + style->dark[i].blue) / 2; - - style->text_aa[i].red = (style->text[i].red + style->base[i].red) / 2; - style->text_aa[i].green = (style->text[i].green + style->base[i].green) / 2; - style->text_aa[i].blue = (style->text[i].blue + style->base[i].blue) / 2; - } - - style->black.red = 0x0000; - style->black.green = 0x0000; - style->black.blue = 0x0000; - - style->white.red = 0xffff; - style->white.green = 0xffff; - style->white.blue = 0xffff; - - for (i = 0; i < 5; i++) - { - const char *image_name; - - if (style->rc_style) - image_name = style->rc_style->bg_pixmap_name[i]; - else - image_name = NULL; - - style->background[i] = load_background (style->visual, - &style->bg[i], - image_name); - } } static void gtk_style_real_unrealize (GtkStyle *style) { - int i; - - for (i = 0; i < 5; i++) - { - if (style->background[i]) - { - cairo_pattern_destroy (style->background[i]); - style->background[i] = NULL; - } - - } - - style_unrealize_cursors (style); } static void @@ -1634,7 +1285,6 @@ gtk_style_render_icon (GtkStyle *style, * @window: * @set_bg: * @state_type: - * @area: (allow-none): * @x: * @y: * @width: @@ -1753,40 +1403,6 @@ _cairo_draw_line (cairo_t *cr, cairo_restore (cr); } -static void -_cairo_draw_rectangle (cairo_t *cr, - GdkColor *color, - gboolean filled, - gint x, - gint y, - gint width, - gint height) -{ - gdk_cairo_set_source_color (cr, color); - - if (filled) - { - cairo_rectangle (cr, x, y, width, height); - cairo_fill (cr); - } - else - { - cairo_rectangle (cr, x + 0.5, y + 0.5, width, height); - cairo_stroke (cr); - } -} - -static void -_cairo_draw_point (cairo_t *cr, - GdkColor *color, - gint x, - gint y) -{ - gdk_cairo_set_source_color (cr, color); - cairo_rectangle (cr, x, y, 1, 1); - cairo_fill (cr); -} - static void transform_detail_string (const gchar *detail, GtkStyleContext *context) @@ -2020,153 +1636,6 @@ gtk_default_draw_vline (GtkStyle *style, gtk_style_context_restore (context); } -static void -draw_thin_shadow (GtkStyle *style, - cairo_t *cr, - GtkStateType state, - gint x, - gint y, - gint width, - gint height) -{ - GdkColor *gc1, *gc2; - - gc1 = &style->light[state]; - gc2 = &style->dark[state]; - - _cairo_draw_line (cr, gc1, - x, y + height - 1, x + width - 1, y + height - 1); - _cairo_draw_line (cr, gc1, - x + width - 1, y, x + width - 1, y + height - 1); - - _cairo_draw_line (cr, gc2, - x, y, x + width - 2, y); - _cairo_draw_line (cr, gc2, - x, y, x, y + height - 2); -} - -static void -draw_spinbutton_shadow (GtkStyle *style, - cairo_t *cr, - GtkStateType state, - GtkTextDirection direction, - gint x, - gint y, - gint width, - gint height) -{ - - if (direction == GTK_TEXT_DIR_LTR) - { - _cairo_draw_line (cr, &style->dark[state], - x, y, x + width - 1, y); - _cairo_draw_line (cr, &style->black, - x, y + 1, x + width - 2, y + 1); - _cairo_draw_line (cr, &style->black, - x + width - 2, y + 2, x + width - 2, y + height - 3); - _cairo_draw_line (cr, &style->light[state], - x + width - 1, y + 1, x + width - 1, y + height - 2); - _cairo_draw_line (cr, &style->light[state], - x, y + height - 1, x + width - 1, y + height - 1); - _cairo_draw_line (cr, &style->bg[state], - x, y + height - 2, x + width - 2, y + height - 2); - _cairo_draw_line (cr, &style->black, - x, y + 2, x, y + height - 3); - } - else - { - _cairo_draw_line (cr, &style->dark[state], - x, y, x + width - 1, y); - _cairo_draw_line (cr, &style->dark[state], - x, y + 1, x, y + height - 1); - _cairo_draw_line (cr, &style->black, - x + 1, y + 1, x + width - 1, y + 1); - _cairo_draw_line (cr, &style->black, - x + 1, y + 2, x + 1, y + height - 2); - _cairo_draw_line (cr, &style->black, - x + width - 1, y + 2, x + width - 1, y + height - 3); - _cairo_draw_line (cr, &style->light[state], - x + 1, y + height - 1, x + width - 1, y + height - 1); - _cairo_draw_line (cr, &style->bg[state], - x + 2, y + height - 2, x + width - 1, y + height - 2); - } -} - -static void -draw_menu_shadow (GtkStyle *style, - cairo_t *cr, - GtkStateType state, - gint x, - gint y, - gint width, - gint height) -{ - if (style->ythickness > 0) - { - if (style->ythickness > 1) - { - _cairo_draw_line (cr, &style->dark[state], - x + 1, y + height - 2, - x + width - 2, y + height - 2); - _cairo_draw_line (cr, &style->black, - x, y + height - 1, x + width - 1, y + height - 1); - } - else - { - _cairo_draw_line (cr, &style->dark[state], - x + 1, y + height - 1, x + width - 1, y + height - 1); - } - } - - if (style->xthickness > 0) - { - if (style->xthickness > 1) - { - _cairo_draw_line (cr, &style->dark[state], - x + width - 2, y + 1, - x + width - 2, y + height - 2); - - _cairo_draw_line (cr, &style->black, - x + width - 1, y, x + width - 1, y + height - 1); - } - else - { - _cairo_draw_line (cr, &style->dark[state], - x + width - 1, y + 1, x + width - 1, y + height - 1); - } - } - - /* Light around top and left */ - - if (style->ythickness > 0) - _cairo_draw_line (cr, &style->black, - x, y, x + width - 2, y); - if (style->xthickness > 0) - _cairo_draw_line (cr, &style->black, - x, y, x, y + height - 2); - - if (style->ythickness > 1) - _cairo_draw_line (cr, &style->light[state], - x + 1, y + 1, x + width - 3, y + 1); - if (style->xthickness > 1) - _cairo_draw_line (cr, &style->light[state], - x + 1, y + 1, x + 1, y + height - 3); -} - -static GtkTextDirection -get_direction (GtkWidget *widget) -{ - GtkTextDirection dir; - - if (widget) - dir = gtk_widget_get_direction (widget); - else - dir = GTK_TEXT_DIR_LTR; - - return dir; -} - - static void gtk_default_draw_shadow (GtkStyle *style, cairo_t *cr, @@ -2182,6 +1651,9 @@ gtk_default_draw_shadow (GtkStyle *style, GtkStyleContext *context; GtkStylePrivate *priv; + if (shadow_type == GTK_SHADOW_NONE) + return; + if (widget) context = gtk_widget_get_style_context (widget); else @@ -2250,75 +1722,6 @@ draw_arrow (cairo_t *cr, cairo_restore (cr); } -static void -calculate_arrow_geometry (GtkArrowType arrow_type, - gint *x, - gint *y, - gint *width, - gint *height) -{ - gint w = *width; - gint h = *height; - - switch (arrow_type) - { - case GTK_ARROW_UP: - case GTK_ARROW_DOWN: - w += (w % 2) - 1; - h = (w / 2 + 1); - - if (h > *height) - { - h = *height; - w = 2 * h - 1; - } - - if (arrow_type == GTK_ARROW_DOWN) - { - if (*height % 2 == 1 || h % 2 == 0) - *height += 1; - } - else - { - if (*height % 2 == 0 || h % 2 == 0) - *height -= 1; - } - break; - - case GTK_ARROW_RIGHT: - case GTK_ARROW_LEFT: - h += (h % 2) - 1; - w = (h / 2 + 1); - - if (w > *width) - { - w = *width; - h = 2 * w - 1; - } - - if (arrow_type == GTK_ARROW_RIGHT) - { - if (*width % 2 == 1 || w % 2 == 0) - *width += 1; - } - else - { - if (*width % 2 == 0 || w % 2 == 0) - *width -= 1; - } - break; - - default: - /* should not be reached */ - break; - } - - *x += (*width - w) / 2; - *y += (*height - h) / 2; - *height = h; - *width = w; -} - static void gtk_default_draw_arrow (GtkStyle *style, cairo_t *cr, @@ -2548,16 +1951,6 @@ option_menu_get_props (GtkWidget *widget, *indicator_spacing = default_option_indicator_spacing; } -static gboolean -background_is_solid (GtkStyle *style, - GtkStateType type) -{ - if (style->background[type] == NULL) - return FALSE; - - return cairo_pattern_get_type (style->background[type]) == CAIRO_PATTERN_TYPE_SOLID; -} - static void gtk_default_draw_box (GtkStyle *style, cairo_t *cr, @@ -2617,30 +2010,15 @@ gtk_default_draw_box (GtkStyle *style, else { gtk_render_background (context, cr, x, y, width, height); - gtk_render_frame (context, cr, x, y, width, height); + + if (shadow_type != GTK_SHADOW_NONE) + gtk_render_frame (context, cr, x, y, width, height); } cairo_restore (cr); gtk_style_context_restore (context); } -static GdkColor * -get_darkened (const GdkColor *color, - gint darken_count) -{ - GdkColor src = *color; - GdkColor shaded = *color; - - while (darken_count) - { - _gtk_style_shade (&src, &shaded, 0.93); - src = shaded; - --darken_count; - } - - return gdk_color_copy (&shaded); -} - static void gtk_default_draw_flat_box (GtkStyle *style, cairo_t *cr, @@ -2894,6 +2272,9 @@ gtk_default_draw_shadow_gap (GtkStyle *style, GtkStylePrivate *priv; GtkStateFlags flags = 0; + if (shadow_type == GTK_SHADOW_NONE) + return; + if (widget) context = gtk_widget_get_style_context (widget); else @@ -3000,15 +2381,17 @@ gtk_default_draw_box_gap (GtkStyle *style, (gdouble) width, (gdouble) height); - gtk_render_frame_gap (context, cr, - (gdouble) x, - (gdouble) y, - (gdouble) width, - (gdouble) height, - gap_side, - (gdouble) gap_x, - (gdouble) gap_x + gap_width); + if (shadow_type != GTK_SHADOW_NONE) + gtk_render_frame_gap (context, cr, + (gdouble) x, + (gdouble) y, + (gdouble) width, + (gdouble) height, + gap_side, + (gdouble) gap_x, + (gdouble) gap_x + gap_width); + cairo_restore (cr); gtk_style_context_restore (context); } @@ -3170,32 +2553,6 @@ gtk_default_draw_slider (GtkStyle *style, gtk_style_context_restore (context); } -static void -draw_dot (cairo_t *cr, - GdkColor *light, - GdkColor *dark, - gint x, - gint y, - gushort size) -{ - size = CLAMP (size, 2, 3); - - if (size == 2) - { - _cairo_draw_point (cr, light, x, y); - _cairo_draw_point (cr, light, x+1, y+1); - } - else if (size == 3) - { - _cairo_draw_point (cr, light, x, y); - _cairo_draw_point (cr, light, x+1, y); - _cairo_draw_point (cr, light, x, y+1); - _cairo_draw_point (cr, dark, x+1, y+2); - _cairo_draw_point (cr, dark, x+2, y+1); - _cairo_draw_point (cr, dark, x+2, y+2); - } -} - static void gtk_default_draw_handle (GtkStyle *style, cairo_t *cr, @@ -3491,9 +2848,7 @@ gtk_default_draw_spinner (GtkStyle *style, gint i; guint real_step; - gtk_style_get (style, GTK_TYPE_SPINNER, - "num-steps", &num_steps, - NULL); + num_steps = 12; real_step = step % num_steps; /* set a clip region for the expose event */ @@ -3990,8 +3345,6 @@ gtk_paint_box (GtkStyle *style, * @cr: a #cairo_t * @state_type: a state * @shadow_type: the type of shadow to draw - * @area: (allow-none): clip rectangle, or %NULL if the - * output should not be clipped * @widget: (allow-none): the widget * @detail: (allow-none): a style detail * @x: x origin of the box @@ -4626,19 +3979,6 @@ struct _CursorInfo GdkColor secondary; }; -static void -style_unrealize_cursors (GtkStyle *style) -{ - CursorInfo * - - cursor_info = g_object_get_data (G_OBJECT (style), "gtk-style-cursor-info"); - if (cursor_info) - { - g_free (cursor_info); - g_object_set_data (G_OBJECT (style), I_("gtk-style-cursor-info"), NULL); - } -} - static const GdkColor * get_insertion_cursor_color (GtkWidget *widget, gboolean is_primary) diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h index 3d44b1ffa7..7aec22d88e 100644 --- a/gtk/gtkstyle.h +++ b/gtk/gtkstyle.h @@ -34,6 +34,7 @@ #include #include +#include G_BEGIN_DECLS @@ -634,18 +635,13 @@ void gtk_style_get (GtkStyle *style, #endif /* --- private API --- */ -const GValue* _gtk_style_peek_property_value (GtkStyle *style, - GType widget_type, - GParamSpec *pspec, - GtkRcPropertyParser parser); - -void _gtk_style_init_for_settings (GtkStyle *style, - GtkSettings *settings); - +GtkStyle* _gtk_style_new_for_path (GdkScreen *screen, + GtkWidgetPath *path); void _gtk_style_shade (const GdkColor *a, GdkColor *b, gdouble k); + void gtk_draw_insertion_cursor (GtkWidget *widget, cairo_t *cr, const GdkRectangle *location, @@ -655,7 +651,7 @@ void gtk_draw_insertion_cursor (GtkWidget *widget, void _gtk_widget_get_cursor_color (GtkWidget *widget, GdkColor *color); -gboolean gtk_style_has_context (GtkStyle *style); +gboolean gtk_style_has_context (GtkStyle *style); diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index b8d8c992e7..0f30fcd3a1 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -34,6 +34,7 @@ #include "gtkanimationdescription.h" #include "gtktimeline.h" #include "gtkiconfactory.h" +#include "gtkwidgetprivate.h" /** * SECTION:gtkstylecontext @@ -453,6 +454,12 @@ struct AnimationInfo GtkTimeline *timeline; gpointer region_id; + + /* Region stack (until region_id) at the time of + * rendering, this is used for nested cancellation. + */ + GSList *parent_regions; + GdkWindow *window; GtkStateType state; gboolean target_value; @@ -495,9 +502,11 @@ enum { LAST_SIGNAL }; -guint signals[LAST_SIGNAL] = { 0 }; +static guint signals[LAST_SIGNAL] = { 0 }; static GQuark provider_list_quark = 0; +static GdkRGBA fallback_color = { 1.0, 0.75, 0.75, 1.0 }; +static GtkBorder fallback_border = { 0 }; static void gtk_style_context_finalize (GObject *object); @@ -746,6 +755,7 @@ animation_info_free (AnimationInfo *info) cairo_region_destroy (info->invalidation_region); g_array_free (info->rectangles, TRUE); + g_slist_free (info->parent_regions); g_slice_free (AnimationInfo, info); } @@ -842,19 +852,19 @@ animation_info_new (GtkStyleContext *context, info = g_slice_new0 (AnimationInfo); info->rectangles = g_array_new (FALSE, FALSE, sizeof (cairo_rectangle_int_t)); - info->timeline = gtk_timeline_new (duration); + info->timeline = _gtk_timeline_new (duration); info->window = g_object_ref (window); info->state = state; info->target_value = target_value; info->region_id = region_id; - gtk_timeline_set_progress_type (info->timeline, progress_type); - gtk_timeline_set_loop (info->timeline, loop); + _gtk_timeline_set_progress_type (info->timeline, progress_type); + _gtk_timeline_set_loop (info->timeline, loop); if (!loop && !target_value) { - gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_BACKWARD); - gtk_timeline_rewind (info->timeline); + _gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_BACKWARD); + _gtk_timeline_rewind (info->timeline); } g_signal_connect (info->timeline, "frame", @@ -862,7 +872,7 @@ animation_info_new (GtkStyleContext *context, g_signal_connect (info->timeline, "finished", G_CALLBACK (timeline_finished_cb), context); - gtk_timeline_start (info->timeline); + _gtk_timeline_start (info->timeline); return info; } @@ -1076,7 +1086,7 @@ build_icon_factories (GtkStyleContext *context, } } -GtkWidgetPath * +static GtkWidgetPath * create_query_path (GtkStyleContext *context) { GtkStyleContextPrivate *priv; @@ -1155,6 +1165,10 @@ style_data_lookup (GtkStyleContext *context) gtk_style_properties_get (data->store, 0, "engine", &priv->theming_engine, NULL); + + if (!priv->theming_engine) + priv->theming_engine = g_object_ref (gtk_theming_engine_load (NULL)); + return data; } @@ -1569,7 +1583,6 @@ context_has_animatable_region (GtkStyleContext *context, gpointer region_id) { GtkStyleContextPrivate *priv; - GSList *r; /* NULL region_id means everything * rendered through the style context @@ -1578,14 +1591,7 @@ context_has_animatable_region (GtkStyleContext *context, return TRUE; priv = context->priv; - - for (r = priv->animation_regions; r; r = r->next) - { - if (r->data == region_id) - return TRUE; - } - - return FALSE; + return g_slist_find (priv->animation_regions, region_id) != NULL; } /** @@ -1628,7 +1634,7 @@ gtk_style_context_state_is_running (GtkStyleContext *context, context_has_animatable_region (context, info->region_id)) { if (progress) - *progress = gtk_timeline_get_progress (info->timeline); + *progress = _gtk_timeline_get_progress (info->timeline); return TRUE; } @@ -2063,6 +2069,26 @@ gtk_style_context_list_regions (GtkStyleContext *context) return classes; } +gboolean +_gtk_style_context_check_region_name (const gchar *str) +{ + g_return_val_if_fail (str != NULL, FALSE); + + if (!g_ascii_islower (str[0])) + return FALSE; + + while (*str) + { + if (*str != '-' && + !g_ascii_islower (*str)) + return FALSE; + + str++; + } + + return TRUE; +} + /** * gtk_style_context_add_region: * @context: a #GtkStyleContext @@ -2089,6 +2115,9 @@ gtk_style_context_list_regions (GtkStyleContext *context) * * would apply to even and odd rows, respectively. * + * Region names must only contain lowercase letters + * and '-', starting always with a lowercase letter. + * * Since: 3.0 **/ void @@ -2103,6 +2132,7 @@ gtk_style_context_add_region (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (region_name != NULL); + g_return_if_fail (_gtk_style_context_check_region_name (region_name)); priv = context->priv; region_quark = g_quark_from_string (region_name); @@ -2385,7 +2415,15 @@ gtk_style_context_get_style_property (GtkStyleContext *context, if (!priv->widget_path) return; - widget_type = gtk_widget_path_get_widget_type (priv->widget_path); + widget_type = gtk_widget_path_get_object_type (priv->widget_path); + + if (!g_type_is_a (widget_type, GTK_TYPE_WIDGET)) + { + g_warning ("%s: can't get style properties for non-widget class `%s'", + G_STRLOC, + g_type_name (widget_type)); + return; + } widget_class = g_type_class_ref (widget_type); pspec = gtk_widget_class_find_style_property (widget_class, property_name); @@ -2432,6 +2470,7 @@ gtk_style_context_get_style_valist (GtkStyleContext *context, GtkStyleContextPrivate *priv; const gchar *prop_name; GtkStateFlags state; + GType widget_type; g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); @@ -2441,6 +2480,16 @@ gtk_style_context_get_style_valist (GtkStyleContext *context, if (!priv->widget_path) return; + widget_type = gtk_widget_path_get_object_type (priv->widget_path); + + if (!g_type_is_a (widget_type, GTK_TYPE_WIDGET)) + { + g_warning ("%s: can't get style properties for non-widget class `%s'", + G_STRLOC, + g_type_name (widget_type)); + return; + } + state = gtk_style_context_get_state (context); while (prop_name) @@ -2448,11 +2497,8 @@ gtk_style_context_get_style_valist (GtkStyleContext *context, GtkWidgetClass *widget_class; GParamSpec *pspec; const GValue *peek_value; - GType widget_type; gchar *error; - widget_type = gtk_widget_path_get_widget_type (priv->widget_path); - widget_class = g_type_class_ref (widget_type); pspec = gtk_widget_class_find_style_property (widget_class, prop_name); g_type_class_unref (widget_class); @@ -2855,9 +2901,9 @@ gtk_style_context_notify_state_change (GtkStyleContext *context, if (!desc) return; - if (gtk_animation_description_get_duration (desc) == 0) + if (_gtk_animation_description_get_duration (desc) == 0) { - gtk_animation_description_unref (desc); + _gtk_animation_description_unref (desc); return; } @@ -2867,37 +2913,154 @@ gtk_style_context_notify_state_change (GtkStyleContext *context, info->target_value != state_value) { /* Target values are the opposite */ - if (!gtk_timeline_get_loop (info->timeline)) + if (!_gtk_timeline_get_loop (info->timeline)) { /* Reverse the animation */ - if (gtk_timeline_get_direction (info->timeline) == GTK_TIMELINE_DIRECTION_FORWARD) - gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_BACKWARD); + if (_gtk_timeline_get_direction (info->timeline) == GTK_TIMELINE_DIRECTION_FORWARD) + _gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_BACKWARD); else - gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_FORWARD); + _gtk_timeline_set_direction (info->timeline, GTK_TIMELINE_DIRECTION_FORWARD); info->target_value = state_value; } else { /* Take it out of its looping state */ - gtk_timeline_set_loop (info->timeline, FALSE); + _gtk_timeline_set_loop (info->timeline, FALSE); } } else if (!info && - (!gtk_animation_description_get_loop (desc) || + (!_gtk_animation_description_get_loop (desc) || state_value)) { info = animation_info_new (context, region_id, - gtk_animation_description_get_duration (desc), - gtk_animation_description_get_progress_type (desc), - gtk_animation_description_get_loop (desc), + _gtk_animation_description_get_duration (desc), + _gtk_animation_description_get_progress_type (desc), + _gtk_animation_description_get_loop (desc), state, state_value, window); priv->animations = g_slist_prepend (priv->animations, info); priv->animations_invalidated = TRUE; } - gtk_animation_description_unref (desc); + _gtk_animation_description_unref (desc); +} + +/** + * gtk_style_context_cancel_animations: + * @context: a #GtkStyleContext + * @region_id: (allow-none): animatable region to stop, or %NULL. + * See gtk_style_context_push_animatable_region() + * + * Stops all running animations for @region_id and all animatable + * regions underneath. + * + * A %NULL @region_id will stop all ongoing animations in @context, + * when dealing with a #GtkStyleContext obtained through + * gtk_widget_get_style_context(), this is normally done for you + * in all circumstances you would expect all widget to be stopped, + * so this should be only used in complex widgets with different + * animatable regions. + * + * Since: 3.0 + **/ +void +gtk_style_context_cancel_animations (GtkStyleContext *context, + gpointer region_id) +{ + GtkStyleContextPrivate *priv; + AnimationInfo *info; + GSList *l, *node; + + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + priv = context->priv; + l = priv->animations; + + while (l) + { + info = l->data; + node = l; + l = l->next; + + if (!region_id || + info->region_id == region_id || + g_slist_find (info->parent_regions, region_id)) + { + priv->animations = g_slist_remove (priv->animations, info); + animation_info_free (info); + } + } +} + +static gboolean +is_parent_of (GdkWindow *parent, + GdkWindow *child) +{ + GtkWidget *child_widget, *parent_widget; + GdkWindow *window; + + gdk_window_get_user_data (child, (gpointer *) &child_widget); + gdk_window_get_user_data (parent, (gpointer *) &parent_widget); + + if (child_widget != parent_widget && + !gtk_widget_is_ancestor (child_widget, parent_widget)) + return FALSE; + + window = child; + + while (window) + { + if (window == parent) + return TRUE; + + window = gdk_window_get_parent (window); + } + + return FALSE; +} + +/** + * gtk_style_context_scroll_animations: + * @context: a #GtkStyleContext + * @window: a #GdkWindow used previously in + * gtk_style_context_notify_state_change() + * @dx: Amount to scroll in the X axis + * @dy: Amount to scroll in the Y axis + * + * This function is analogous to gdk_window_scroll(), and + * should be called together with it so the invalidation + * areas for any ongoing animation are scrolled together + * with it. + * + * Since: 3.0 + **/ +void +gtk_style_context_scroll_animations (GtkStyleContext *context, + GdkWindow *window, + gint dx, + gint dy) +{ + GtkStyleContextPrivate *priv; + AnimationInfo *info; + GSList *l; + + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (GDK_IS_WINDOW (window)); + + priv = context->priv; + l = priv->animations; + + while (l) + { + info = l->data; + l = l->next; + + if (info->invalidation_region && + (window == info->window || + is_parent_of (window, info->window))) + cairo_region_translate (info->invalidation_region, dx, dy); + } } /** @@ -2982,8 +3145,7 @@ _gtk_style_context_invalidate_animation_areas (GtkStyleContext *context) void _gtk_style_context_coalesce_animation_areas (GtkStyleContext *context, - gint rel_x, - gint rel_y) + GtkWidget *widget) { GtkStyleContextPrivate *priv; GSList *l; @@ -2998,6 +3160,7 @@ _gtk_style_context_coalesce_animation_areas (GtkStyleContext *context, while (l) { AnimationInfo *info; + gint rel_x, rel_y; GSList *cur; guint i; @@ -3008,23 +3171,23 @@ _gtk_style_context_coalesce_animation_areas (GtkStyleContext *context, if (info->invalidation_region) continue; - /* There's not much point in keeping the animation running */ if (info->rectangles->len == 0) - { - priv->animations = g_slist_remove (priv->animations, info); - animation_info_free (info); - continue; - } + continue; info->invalidation_region = cairo_region_create (); + _gtk_widget_get_translation_to_window (widget, info->window, &rel_x, &rel_y); for (i = 0; i < info->rectangles->len; i++) { cairo_rectangle_int_t *rect; rect = &g_array_index (info->rectangles, cairo_rectangle_int_t, i); - rect->x += rel_x; - rect->y += rel_y; + + /* These are widget relative coordinates, + * so have them inverted to be window relative + */ + rect->x -= rel_x; + rect->y -= rel_y; cairo_region_union_rectangle (info->invalidation_region, rect); } @@ -3072,6 +3235,14 @@ store_animation_region (GtkStyleContext *context, rect.height = (gint) height; g_array_append_val (info->rectangles, rect); + + if (!info->parent_regions) + { + GSList *parent_regions; + + parent_regions = g_slist_find (priv->animation_regions, info->region_id); + info->parent_regions = g_slist_copy (parent_regions); + } } } } @@ -3174,6 +3345,9 @@ gtk_style_context_get_color (GtkStyleContext *context, const GValue *value; GdkRGBA *c; + g_return_if_fail (color != NULL); + *color = fallback_color; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3182,8 +3356,12 @@ gtk_style_context_get_color (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "color", state); - c = g_value_get_boxed (value); - *color = *c; + + if (value) + { + c = g_value_get_boxed (value); + *color = *c; + } } /** @@ -3206,6 +3384,9 @@ gtk_style_context_get_background_color (GtkStyleContext *context, const GValue *value; GdkRGBA *c; + g_return_if_fail (color != NULL); + *color = fallback_color; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3214,8 +3395,12 @@ gtk_style_context_get_background_color (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "background-color", state); - c = g_value_get_boxed (value); - *color = *c; + + if (value) + { + c = g_value_get_boxed (value); + *color = *c; + } } /** @@ -3238,6 +3423,9 @@ gtk_style_context_get_border_color (GtkStyleContext *context, const GValue *value; GdkRGBA *c; + g_return_if_fail (color != NULL); + *color = fallback_color; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3246,17 +3434,22 @@ gtk_style_context_get_border_color (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "border-color", state); - c = g_value_get_boxed (value); - *color = *c; + + if (value) + { + c = g_value_get_boxed (value); + *color = *c; + } } /** * gtk_style_context_get_border: * @context: a #GtkStyleContext * @state: state to retrieve the border for - * @color: (out): return value for the border settings + * @border: (out): return value for the border settings * * Gets the border for a given state as a #GtkBorder. + * See %GTK_STYLE_PROPERTY_BORDER_WIDTH. * * Since: 3.0 **/ @@ -3270,6 +3463,9 @@ gtk_style_context_get_border (GtkStyleContext *context, const GValue *value; GtkBorder *b; + g_return_if_fail (border != NULL); + *border = fallback_border; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3278,17 +3474,22 @@ gtk_style_context_get_border (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "border-width", state); - b = g_value_get_boxed (value); - *border = *b; + + if (value) + { + b = g_value_get_boxed (value); + *border = *b; + } } /** * gtk_style_context_get_padding: * @context: a #GtkStyleContext * @state: state to retrieve the padding for - * @color: (out): return value for the padding settings + * @padding: (out): return value for the padding settings * * Gets the padding for a given state as a #GtkBorder. + * See %GTK_STYLE_PROPERTY_PADDING. * * Since: 3.0 **/ @@ -3302,6 +3503,9 @@ gtk_style_context_get_padding (GtkStyleContext *context, const GValue *value; GtkBorder *b; + g_return_if_fail (padding != NULL); + *padding = fallback_border; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3310,17 +3514,22 @@ gtk_style_context_get_padding (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "padding", state); - b = g_value_get_boxed (value); - *padding = *b; + + if (value) + { + b = g_value_get_boxed (value); + *padding = *b; + } } /** * gtk_style_context_get_margin: * @context: a #GtkStyleContext * @state: state to retrieve the border for - * @color: (out): return value for the margin settings + * @margin: (out): return value for the margin settings * * Gets the margin for a given state as a #GtkBorder. + * See %GTK_STYLE_PROPERTY_MARGIN. * * Since: 3.0 **/ @@ -3334,6 +3543,9 @@ gtk_style_context_get_margin (GtkStyleContext *context, const GValue *value; GtkBorder *b; + g_return_if_fail (margin != NULL); + *margin = fallback_border; + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); priv = context->priv; @@ -3342,8 +3554,48 @@ gtk_style_context_get_margin (GtkStyleContext *context, data = style_data_lookup (context); value = _gtk_style_properties_peek_property (data->store, "margin", state); - b = g_value_get_boxed (value); - *margin = *b; + + if (value) + { + b = g_value_get_boxed (value); + *margin = *b; + } +} + +/** + * gtk_style_context_get_font: + * @context: a #GtkStyleContext + * @state: state to retrieve the font for + * + * Returns the font description for a given state. The returned + * object is const and will remain valid until the + * #GtkStyleContext::changed signal happens. + * + * Returns: the #PangoFontDescription for the given state. This + * object is owned by GTK+ and should not be freed. + * + * Since: 3.0 + **/ +const PangoFontDescription * +gtk_style_context_get_font (GtkStyleContext *context, + GtkStateFlags state) +{ + GtkStyleContextPrivate *priv; + StyleData *data; + const GValue *value; + + g_return_val_if_fail (GTK_IS_STYLE_CONTEXT (context), NULL); + + priv = context->priv; + g_return_val_if_fail (priv->widget_path != NULL, NULL); + + data = style_data_lookup (context); + value = _gtk_style_properties_peek_property (data->store, "font", state); + + if (value) + return g_value_get_boxed (value); + + return NULL; } /* Paint methods */ @@ -3383,15 +3635,21 @@ gtk_render_check (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_check (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3427,15 +3685,21 @@ gtk_render_option (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_option (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3469,15 +3733,20 @@ gtk_render_arrow (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (size > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, size, size); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_arrow (priv->theming_engine, cr, angle, x, y, size); + + cairo_restore (cr); } /** @@ -3514,14 +3783,20 @@ gtk_render_background (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_background (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3560,14 +3835,20 @@ gtk_render_frame (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_frame (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3603,14 +3884,20 @@ gtk_render_expander (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_expander (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3643,14 +3930,20 @@ gtk_render_focus (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_focus (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3677,11 +3970,14 @@ gtk_render_layout (GtkStyleContext *context, PangoRectangle extents; g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (PANGO_IS_LAYOUT (layout)); g_return_if_fail (cr != NULL); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + pango_layout_get_extents (layout, &extents, NULL); store_animation_region (context, @@ -3692,6 +3988,8 @@ gtk_render_layout (GtkStyleContext *context, _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_layout (priv->theming_engine, cr, x, y, layout); + + cairo_restore (cr); } /** @@ -3724,8 +4022,12 @@ gtk_render_line (GtkStyleContext *context, priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_line (priv->theming_engine, cr, x0, y0, x1, y1); + + cairo_restore (cr); } /** @@ -3763,14 +4065,20 @@ gtk_render_slider (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_slider (priv->theming_engine, cr, x, y, width, height, orientation); + + cairo_restore (cr); } /** @@ -3813,16 +4121,30 @@ gtk_render_frame_gap (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); + g_return_if_fail (xy0_gap <= xy1_gap); + g_return_if_fail (xy0_gap >= 0); + + if (gap_side == GTK_POS_LEFT || + gap_side == GTK_POS_RIGHT) + g_return_if_fail (xy1_gap <= height); + else + g_return_if_fail (xy1_gap <= width); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_frame_gap (priv->theming_engine, cr, x, y, width, height, gap_side, xy0_gap, xy1_gap); + + cairo_restore (cr); } /** @@ -3860,14 +4182,20 @@ gtk_render_extension (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_extension (priv->theming_engine, cr, x, y, width, height, gap_side); + + cairo_restore (cr); } /** @@ -3903,14 +4231,20 @@ gtk_render_handle (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_handle (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** @@ -3941,14 +4275,20 @@ gtk_render_activity (GtkStyleContext *context, g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); g_return_if_fail (cr != NULL); + g_return_if_fail (width > 0); + g_return_if_fail (height > 0); priv = context->priv; engine_class = GTK_THEMING_ENGINE_GET_CLASS (priv->theming_engine); + cairo_save (cr); + store_animation_region (context, x, y, width, height); _gtk_theming_engine_set_context (priv->theming_engine, context); engine_class->render_activity (priv->theming_engine, cr, x, y, width, height); + + cairo_restore (cr); } /** diff --git a/gtk/gtkstylecontext.h b/gtk/gtkstylecontext.h index a67e523a83..42eed4beee 100644 --- a/gtk/gtkstylecontext.h +++ b/gtk/gtkstylecontext.h @@ -78,31 +78,40 @@ struct _GtkStyleContextClass */ #define GTK_STYLE_PROPERTY_FONT "font" -/** - * GTK_STYLE_PROPERTY_MARGIN: - * - * A property holding the rendered element's margin as a #GtkBorder. The - * margin is defined as the spacing between the border of the element - * and its surrounding elements. - */ -#define GTK_STYLE_PROPERTY_MARGIN "margin" - /** * GTK_STYLE_PROPERTY_PADDING: * * A property holding the rendered element's padding as a #GtkBorder. The * padding is defined as the spacing between the inner part of the element border - * and its child. + * and its child. It's the innermost spacing property of the padding/border/margin + * series. */ #define GTK_STYLE_PROPERTY_PADDING "padding" /** * GTK_STYLE_PROPERTY_BORDER_WIDTH: * - * A property holding the rendered element's border width in pixels as a #gint. + * A property holding the rendered element's border width in pixels as + * a #GtkBorder. The border is the intermediary spacing property of the + * padding/border/margin series. + * + * gtk_render_frame() uses this property to find out the frame line width, + * so #GtkWidgets rendering frames may need to add up this padding when + * requesting size */ #define GTK_STYLE_PROPERTY_BORDER_WIDTH "border-width" +/** + * GTK_STYLE_PROPERTY_MARGIN: + * + * A property holding the rendered element's margin as a #GtkBorder. The + * margin is defined as the spacing between the border of the element + * and its surrounding elements. It is external to #GtkWidgets's + * size allocations, and the most external spacing property of the + * padding/border/margin series. + */ +#define GTK_STYLE_PROPERTY_MARGIN "margin" + /** * GTK_STYLE_PROPERTY_BORDER_RADIUS: * @@ -253,6 +262,13 @@ struct _GtkStyleContextClass */ #define GTK_STYLE_CLASS_SCROLLBAR "scrollbar" +/** + * GTK_STYLE_CLASS_SCALE: + * + * A CSS class to match scale widgets. + */ +#define GTK_STYLE_CLASS_SCALE "scale" + /** * GTK_STYLE_CLASS_HEADER: * @@ -295,6 +311,118 @@ struct _GtkStyleContextClass */ #define GTK_STYLE_CLASS_SPINNER "spinner" +/** + * GTK_STYLE_CLASS_MARK: + * + * A widget class defining marks in a widget, such as in scales + */ +#define GTK_STYLE_CLASS_MARK "mark" + +/** + * GTK_STYLE_CLASS_EXPANDER: + * + * A widget class defining an expander, such as those in treeviews + */ +#define GTK_STYLE_CLASS_EXPANDER "expander" + +/** + * GTK_STYLE_CLASS_SPINBUTTON: + * + * A widget class defining an spinbutton + */ +#define GTK_STYLE_CLASS_SPINBUTTON "spinbutton" + +/** + * GTK_STYLE_CLASS_NOTEBOOK: + * + * A widget class defining a notebook + */ +#define GTK_STYLE_CLASS_NOTEBOOK "notebook" + +/** + * GTK_STYLE_CLASS_VIEW: + * + * A widget class defining a view, such as iconviews or treeviews + */ +#define GTK_STYLE_CLASS_VIEW "view" + +/** + * GTK_STYLE_CLASS_HIGHLIGHT: + * + * A CSS class defining a highlighted area, such as headings in + * assistants. + */ +#define GTK_STYLE_CLASS_HIGHLIGHT "highlight" + +/** + * GTK_STYLE_CLASS_FRAME: + * + * A CSS class defining a frame delimiting content, such as GtkFrame + * or the scrolled window frame around the scrollable area. + */ +#define GTK_STYLE_CLASS_FRAME "frame" + +/** + * GTK_STYLE_CLASS_DND: + * + * A CSS class for a drag-and-drop indicator + */ +#define GTK_STYLE_CLASS_DND "dnd" + +/** + * GTK_STYLE_CLASS_PANE_SEPARATOR: + * + * A CSS class for a pane separator, such as those in #GtkPaned. + */ +#define GTK_STYLE_CLASS_PANE_SEPARATOR "pane-separator" + +/** + * GTK_STYLE_CLASS_INFO: + * + * A widget class for an area displaying an informational message, + * such as those in infobars + */ +#define GTK_STYLE_CLASS_INFO "info" + +/** + * GTK_STYLE_CLASS_WARNING: + * + * A widget class for an area displaying a warning message, + * such as those in infobars + */ +#define GTK_STYLE_CLASS_WARNING "warning" + +/** + * GTK_STYLE_CLASS_QUESTION: + * + * A widget class for an area displaying a question to the user, + * such as those in infobars + */ +#define GTK_STYLE_CLASS_QUESTION "question" + +/** + * GTK_STYLE_CLASS_ERROR: + * + * A widget class for an area displaying an error message, + * such as those in infobars + */ +#define GTK_STYLE_CLASS_ERROR "error" + +/** + * GTK_STYLE_CLASS_HORIZONTAL: + * + * A widget class for horizontally layered widgets. + */ +#define GTK_STYLE_CLASS_HORIZONTAL "horizontal" + +/** + * GTK_STYLE_CLASS_VERTICAL: + * + * A widget class for vertically layered widgets. + */ +#define GTK_STYLE_CLASS_VERTICAL "vertical" + + /* Predefined set of widget regions */ /** @@ -424,6 +552,13 @@ void gtk_style_context_notify_state_change (GtkStyleContext *context, gpointer region_id, GtkStateType state, gboolean state_value); +void gtk_style_context_cancel_animations (GtkStyleContext *context, + gpointer region_id); +void gtk_style_context_scroll_animations (GtkStyleContext *context, + GdkWindow *window, + gint dx, + gint dy); + void gtk_style_context_push_animatable_region (GtkStyleContext *context, gpointer region_id); void gtk_style_context_pop_animatable_region (GtkStyleContext *context); @@ -439,6 +574,9 @@ void gtk_style_context_get_border_color (GtkStyleContext *context, GtkStateFlags state, GdkRGBA *color); +const PangoFontDescription * gtk_style_context_get_font (GtkStyleContext *context, + GtkStateFlags state); + void gtk_style_context_get_border (GtkStyleContext *context, GtkStateFlags state, GtkBorder *border); @@ -456,8 +594,9 @@ const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *context, GParamSpec *pspec); void _gtk_style_context_invalidate_animation_areas (GtkStyleContext *context); void _gtk_style_context_coalesce_animation_areas (GtkStyleContext *context, - gint rel_x, - gint rel_y); + GtkWidget *widget); +gboolean _gtk_style_context_check_region_name (const gchar *str); + void gtk_style_context_invalidate (GtkStyleContext *context); void gtk_style_context_reset_widgets (GdkScreen *screen); diff --git a/gtk/gtkstyleproperties.c b/gtk/gtkstyleproperties.c index c6592740fc..0052257cbe 100644 --- a/gtk/gtkstyleproperties.c +++ b/gtk/gtkstyleproperties.c @@ -186,7 +186,7 @@ property_data_new (void) } static void -property_data_free (PropertyData *data) +property_data_remove_values (PropertyData *data) { guint i; @@ -200,6 +200,14 @@ property_data_free (PropertyData *data) g_value_unset (&value_data->value); } + if (data->values->len > 0) + g_array_remove_range (data->values, 0, data->values->len); +} + +static void +property_data_free (PropertyData *data) +{ + property_data_remove_values (data); g_array_free (data->values, TRUE); g_slice_free (PropertyData, data); } @@ -853,6 +861,14 @@ lookup_default_value (PropertyNode *node, { if (node->pspec->value_type == GTK_TYPE_THEMING_ENGINE) g_value_set_object (value, gtk_theming_engine_load (NULL)); + else if (node->pspec->value_type == PANGO_TYPE_FONT_DESCRIPTION) + g_value_take_boxed (value, pango_font_description_from_string ("Sans 10")); + else if (node->pspec->value_type == GDK_TYPE_RGBA) + { + GdkRGBA color; + gdk_rgba_parse (&color, "pink"); + g_value_set_boxed (value, &color); + } else g_param_value_set_default (node->pspec, value); } @@ -1195,6 +1211,16 @@ gtk_style_properties_merge (GtkStyleProperties *props, GValue *value; data = &g_array_index (prop_to_merge->values, ValueData, i); + + if (replace && data->state == GTK_STATE_FLAG_NORMAL && + G_VALUE_TYPE (&data->value) != PANGO_TYPE_FONT_DESCRIPTION) + { + /* Let normal state override all states + * previously set in the original set + */ + property_data_remove_values (prop); + } + value = property_data_get_value (prop, data->state); if (G_VALUE_TYPE (&data->value) == PANGO_TYPE_FONT_DESCRIPTION && diff --git a/gtk/gtkstyleprovider.c b/gtk/gtkstyleprovider.c index 8ed0d975ca..5cd63e4f06 100644 --- a/gtk/gtkstyleprovider.c +++ b/gtk/gtkstyleprovider.c @@ -107,7 +107,7 @@ gtk_style_provider_get_style_property (GtkStyleProvider *provider, g_return_val_if_fail (GTK_IS_STYLE_PROVIDER (provider), FALSE); g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE); g_return_val_if_fail (path != NULL, FALSE); - g_return_val_if_fail (g_type_is_a (gtk_widget_path_get_widget_type (path), pspec->owner_type), FALSE); + g_return_val_if_fail (g_type_is_a (gtk_widget_path_get_object_type (path), pspec->owner_type), FALSE); g_return_val_if_fail (value != NULL, FALSE); iface = GTK_STYLE_PROVIDER_GET_IFACE (provider); diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c index 93549ef17e..6b9866e167 100644 --- a/gtk/gtkswitch.c +++ b/gtk/gtkswitch.c @@ -40,8 +40,6 @@ #include "gtkswitch.h" -#include - #include "gtkaccessible.h" #include "gtkactivatable.h" #include "gtkintl.h" @@ -151,16 +149,20 @@ gtk_switch_motion (GtkWidget *widget, { gint position = event->x - priv->offset; GtkAllocation allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); gtk_widget_get_allocation (widget, &allocation); /* constrain the handle within the trough width */ - if (position > (allocation.width / 2 - style->xthickness)) - priv->handle_x = allocation.width / 2 - style->xthickness; - else if (position < style->xthickness) - priv->handle_x = style->xthickness; + if (position > (allocation.width / 2 - padding.right)) + priv->handle_x = allocation.width / 2 - padding.right; + else if (position < padding.left) + priv->handle_x = padding.left; else priv->handle_x = position; @@ -200,6 +202,15 @@ gtk_switch_button_release (GtkWidget *widget, return TRUE; } + /* toggle the switch if the handle was clicked but a drag had not been + * initiated */ + if (!priv->is_dragging && !priv->in_press) + { + gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active); + + return TRUE; + } + /* dragged toggle */ if (priv->is_dragging) { @@ -274,12 +285,18 @@ gtk_switch_get_preferred_width (GtkWidget *widget, gint *minimum, gint *natural) { - GtkStyle *style = gtk_widget_get_style (widget); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint width, slider_width, focus_width, focus_pad; PangoLayout *layout; PangoRectangle logical_rect; - width = style->xthickness * 2; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + + width = padding.left + padding.right; gtk_widget_style_get (widget, "slider-width", &slider_width, @@ -320,13 +337,19 @@ gtk_switch_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural) { - GtkStyle *style = gtk_widget_get_style (widget); + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint height, focus_width, focus_pad; PangoLayout *layout; PangoRectangle logical_rect; gchar *str; - height = style->ythickness * 2; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + + height = padding.top + padding.bottom; gtk_widget_style_get (widget, "focus-line-width", &focus_width, @@ -406,8 +429,6 @@ gtk_switch_realize (GtkWidget *widget) &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, widget); - - gtk_widget_style_attach (widget); } static void @@ -452,17 +473,21 @@ gtk_switch_paint_handle (GtkWidget *widget, cairo_t *cr, GdkRectangle *box) { - GtkStyle *style = gtk_widget_get_style (widget); + GtkStyleContext *context = gtk_widget_get_style_context (widget); + GtkStateFlags state; - gtk_paint_slider (style, cr, - gtk_widget_get_state (widget), - GTK_SHADOW_OUT, - GTK_WIDGET (widget), "switch-slider", - box->x, - box->y, - box->width, - box->height, - GTK_ORIENTATION_HORIZONTAL); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_SLIDER); + + gtk_render_slider (context, cr, + box->x, box->y, + box->width, box->height, + GTK_ORIENTATION_HORIZONTAL); + + gtk_style_context_restore (context); } static gboolean @@ -470,12 +495,13 @@ gtk_switch_draw (GtkWidget *widget, cairo_t *cr) { GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv; - GtkStyle *style; + GtkStyleContext *context; GdkRectangle handle; PangoLayout *layout; PangoRectangle rect; gint label_x, label_y; - GtkStateType state; + GtkStateFlags state; + GtkBorder padding; gint focus_width, focus_pad; gint x, y, width, height; @@ -484,7 +510,13 @@ gtk_switch_draw (GtkWidget *widget, "focus-padding", &focus_pad, NULL); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + if (priv->is_active) + state |= GTK_STATE_FLAG_ACTIVE; + + gtk_style_context_get_padding (context, state, &padding); x = 0; y = 0; @@ -492,37 +524,27 @@ gtk_switch_draw (GtkWidget *widget, height = gtk_widget_get_allocated_height (widget); if (gtk_widget_has_focus (widget)) - gtk_paint_focus (style, cr, - gtk_widget_get_state (widget), - widget, "button", - x, y, width, height); + gtk_render_focus (context, cr, x, y, width, height); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); x += focus_width + focus_pad; y += focus_width + focus_pad; width -= 2 * (focus_width + focus_pad); height -= 2 * (focus_width + focus_pad); - state = priv->is_active ? GTK_STATE_SELECTED : gtk_widget_get_state (widget); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TROUGH); - /* background - XXX should this be a flat box instead? we're missing - * the border given by the shadow with that, which would require - * fixing all theme engines to add a subtle border for this widget - */ - gtk_paint_box (style, cr, - state, - GTK_SHADOW_IN, - widget, "switch-background", - x, y, width, height); - - if (!gtk_widget_is_sensitive (widget)) - state = GTK_STATE_INSENSITIVE; + gtk_render_background (context, cr, x, y, width, height); + gtk_render_frame (context, cr, x, y, width, height); /* XXX the +1/-1 it's pixel wriggling after checking with the default * theme and xmag */ - handle.y = y + style->ythickness + 1; - handle.width = (width - style->xthickness * 2) / 2; - handle.height = (height - style->ythickness * 2) - 1; + handle.y = y + padding.top + 1; + handle.width = (width - padding.left - padding.right) / 2; + handle.height = (height - padding.top - padding.bottom) - 1; /* Translators: if the "on" state label requires more than three * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for @@ -532,17 +554,12 @@ gtk_switch_draw (GtkWidget *widget, pango_layout_get_extents (layout, NULL, &rect); pango_extents_to_pixels (&rect, NULL); - label_x = x + style->xthickness - + ((width / 2) - rect.width - (style->xthickness * 2)) / 2; - label_y = y + style->ythickness - + (height - rect.height - (style->ythickness * 2)) / 2; + label_x = x + padding.left + + ((width / 2) - rect.width - padding.left - padding.right) / 2; + label_y = y + padding.top + + (height - rect.height - padding.top - padding.bottom) / 2; - gtk_paint_layout (style, cr, - state, - FALSE, - widget, "switch-on-label", - label_x, label_y, - layout); + gtk_render_layout (context, cr, label_x, label_y, layout); g_object_unref (layout); @@ -553,27 +570,24 @@ gtk_switch_draw (GtkWidget *widget, pango_layout_get_extents (layout, NULL, &rect); pango_extents_to_pixels (&rect, NULL); - label_x = x + style->xthickness + label_x = x + padding.left + (width / 2) - + ((width / 2) - rect.width - (style->xthickness * 2)) / 2; - label_y = y + style->ythickness - + (height - rect.height - (style->ythickness * 2)) / 2; + + ((width / 2) - rect.width - padding.left - padding.right) / 2; + label_y = y + padding.top + + (height - rect.height - padding.top - padding.bottom) / 2; - gtk_paint_layout (style, cr, - state, - FALSE, - widget, "switch-off-label", - label_x, label_y, - layout); + gtk_render_layout (context, cr, label_x, label_y, layout); g_object_unref (layout); if (priv->is_dragging) handle.x = x + priv->handle_x; else if (priv->is_active) - handle.x = x + width - handle.width - style->xthickness; + handle.x = x + width - handle.width - padding.right; else - handle.x = x + style->xthickness; + handle.x = x + padding.left; + + gtk_style_context_restore (context); gtk_switch_paint_handle (widget, cr, &handle); @@ -824,7 +838,10 @@ gtk_switch_set_active (GtkSwitch *sw, if (priv->is_active != is_active) { AtkObject *accessible; + GtkWidget *widget; + GtkStyleContext *context; + widget = GTK_WIDGET (sw); priv->is_active = is_active; g_object_notify_by_pspec (G_OBJECT (sw), switch_props[PROP_ACTIVE]); @@ -835,6 +852,14 @@ gtk_switch_set_active (GtkSwitch *sw, accessible = gtk_widget_get_accessible (GTK_WIDGET (sw)); atk_object_notify_state_change (accessible, ATK_STATE_CHECKED, priv->is_active); + if (gtk_widget_get_realized (widget)) + { + context = gtk_widget_get_style_context (widget); + gtk_style_context_notify_state_change (context, + gtk_widget_get_window (widget), + NULL, GTK_STATE_ACTIVE, is_active); + } + gtk_widget_queue_draw (GTK_WIDGET (sw)); } } diff --git a/gtk/gtksymboliccolor.c b/gtk/gtksymboliccolor.c index 2345cfa396..ee7b714550 100644 --- a/gtk/gtksymboliccolor.c +++ b/gtk/gtksymboliccolor.c @@ -465,7 +465,8 @@ _shade_color (GdkRGBA *color, /** * gtk_symbolic_color_resolve: * @color: a #GtkSymbolicColor - * @props: #GtkStyleProperties to use when resolving named colors + * @props: (allow-none): #GtkStyleProperties to use when resolving + * named colors, or %NULL * @resolved_color: (out): return location for the resolved color * * If @color is resolvable, @resolved_color will be filled in @@ -473,6 +474,9 @@ _shade_color (GdkRGBA *color, * if @color can't be resolved, it is due to it being defined on * top of a named color that doesn't exist in @props. * + * @props must be non-%NULL if @color was created using + * gtk_symbolic_color_named_new(), but can be omitted in other cases. + * * Returns: %TRUE if the color has been resolved * * Since: 3.0 diff --git a/gtk/gtktearoffmenuitem.c b/gtk/gtktearoffmenuitem.c index 680b0851b3..23e2cfbc83 100644 --- a/gtk/gtktearoffmenuitem.c +++ b/gtk/gtktearoffmenuitem.c @@ -26,7 +26,8 @@ #include "config.h" -#include "gtkmenu.h" +#include "gtkmenuprivate.h" +#include "gtkmenuitemprivate.h" #include "gtktearoffmenuitem.h" #include "gtkintl.h" @@ -96,13 +97,18 @@ gtk_tearoff_menu_item_get_preferred_width (GtkWidget *widget, gint *minimum, gint *natural) { - GtkStyle *style; + GtkStyleContext *context; guint border_width; + GtkBorder padding; + GtkStateFlags state; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - *minimum = *natural = (border_width + style->xthickness + BORDER_SPACING) * 2; + + *minimum = *natural = (border_width + BORDER_SPACING) * 2 + padding.left + padding.right; } static void @@ -110,25 +116,30 @@ gtk_tearoff_menu_item_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural) { - GtkStyle *style; + GtkStyleContext *context; + GtkBorder padding; + GtkStateFlags state; GtkWidget *parent; guint border_width; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); - *minimum = *natural = (border_width + style->ythickness) * 2; + + *minimum = *natural = (border_width * 2) + padding.top + padding.bottom; parent = gtk_widget_get_parent (widget); - if (GTK_IS_MENU (parent) && GTK_MENU (parent)->torn_off) + if (GTK_IS_MENU (parent) && GTK_MENU (parent)->priv->torn_off) { *minimum += ARROW_SIZE; *natural += ARROW_SIZE; } else { - *minimum += style->ythickness + 4; - *natural += style->ythickness + 4; + *minimum += padding.top + 4; + *natural += padding.top + 4; } } @@ -137,22 +148,22 @@ gtk_tearoff_menu_item_draw (GtkWidget *widget, cairo_t *cr) { GtkMenuItem *menu_item; - GtkShadowType shadow_type; - GtkStateType state; - GtkStyle *style; + GtkStateFlags state; + GtkStyleContext *context; + GtkBorder padding; gint x, y, width, height; gint right_max; guint border_width; - GtkArrowType arrow_type; GtkTextDirection direction; GtkWidget *parent; GdkWindow *window; + gdouble angle; menu_item = GTK_MENU_ITEM (widget); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); direction = gtk_widget_get_direction (widget); - state = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); border_width = gtk_container_get_border_width (GTK_CONTAINER (menu_item)); x = border_width; @@ -161,63 +172,51 @@ gtk_tearoff_menu_item_draw (GtkWidget *widget, height = gtk_widget_get_allocated_height (widget) - border_width * 2; right_max = x + width; - if (state == GTK_STATE_PRELIGHT) + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_style_context_get_padding (context, state, &padding); + + if (state & GTK_STATE_FLAG_PRELIGHT) { - gint selected_shadow_type; - - gtk_widget_style_get (widget, - "selected-shadow-type", &selected_shadow_type, - NULL); - gtk_paint_box (style, - cr, - GTK_STATE_PRELIGHT, - selected_shadow_type, - widget, "menuitem", - x, y, width, height); + gtk_render_background (context, cr, x, y, width, height); + gtk_render_frame (context, cr, x, y, width, height); } parent = gtk_widget_get_parent (widget); - if (GTK_IS_MENU (parent) && GTK_MENU (parent)->torn_off) + if (GTK_IS_MENU (parent) && GTK_MENU (parent)->priv->torn_off) { gint arrow_x; - if (state == GTK_STATE_PRELIGHT) - shadow_type = GTK_SHADOW_IN; - else - shadow_type = GTK_SHADOW_OUT; - - if (menu_item->toggle_size > ARROW_SIZE) + if (menu_item->priv->toggle_size > ARROW_SIZE) { if (direction == GTK_TEXT_DIR_LTR) { - arrow_x = x + (menu_item->toggle_size - ARROW_SIZE)/2; - arrow_type = GTK_ARROW_LEFT; + arrow_x = x + (menu_item->priv->toggle_size - ARROW_SIZE)/2; + angle = (3 * G_PI) / 2; } else { - arrow_x = x + width - menu_item->toggle_size + (menu_item->toggle_size - ARROW_SIZE)/2; - arrow_type = GTK_ARROW_RIGHT; + arrow_x = x + width - menu_item->priv->toggle_size + (menu_item->priv->toggle_size - ARROW_SIZE)/2; + angle = G_PI / 2; } - x += menu_item->toggle_size + BORDER_SPACING; + x += menu_item->priv->toggle_size + BORDER_SPACING; } else { - if (direction == GTK_TEXT_DIR_LTR) { - arrow_x = ARROW_SIZE / 2; - arrow_type = GTK_ARROW_LEFT; - } - else { - arrow_x = x + width - 2 * ARROW_SIZE + ARROW_SIZE / 2; - arrow_type = GTK_ARROW_RIGHT; - } + if (direction == GTK_TEXT_DIR_LTR) + { + arrow_x = ARROW_SIZE / 2; + angle = (3 * G_PI) / 2; + } + else + { + arrow_x = x + width - 2 * ARROW_SIZE + ARROW_SIZE / 2; + angle = G_PI / 2; + } x += 2 * ARROW_SIZE; } - - gtk_paint_arrow (style, cr, - state, shadow_type, - widget, "tearoffmenuitem", - arrow_type, FALSE, - arrow_x, y + height / 2 - 5, - ARROW_SIZE, ARROW_SIZE); + gtk_render_arrow (context, cr, angle, + arrow_x, height / 2 - 5, + ARROW_SIZE); } while (x < right_max) @@ -233,12 +232,14 @@ gtk_tearoff_menu_item_draw (GtkWidget *widget, x2 = MAX (right_max - x - TEAR_LENGTH, 0); } - gtk_paint_hline (style, cr, GTK_STATE_NORMAL, - widget, "tearoffmenuitem", - x1, x2, y + (height - style->ythickness) / 2); + gtk_render_line (context, cr, + x1, y + (height - padding.bottom) / 2, + x2, y + (height - padding.bottom) / 2); x += 2 * TEAR_LENGTH; } + gtk_style_context_restore (context); + return FALSE; } @@ -254,7 +255,7 @@ gtk_tearoff_menu_item_activate (GtkMenuItem *menu_item) gtk_widget_queue_resize (GTK_WIDGET (menu_item)); gtk_menu_set_tearoff_state (GTK_MENU (parent), - !menu->torn_off); + !menu->priv->torn_off); } } diff --git a/gtk/gtktestutils.c b/gtk/gtktestutils.c index 704674b3c1..76fcc772e1 100644 --- a/gtk/gtktestutils.c +++ b/gtk/gtktestutils.c @@ -73,10 +73,17 @@ gtk_test_init (int *argcp, * - this function could install a mock object around GtkSettings */ g_setenv ("GTK_MODULES", "", TRUE); - g_setenv ("GTK2_RC_FILES", "/dev/null", TRUE); gtk_disable_setlocale(); setlocale (LC_ALL, "C"); g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=%s"); + + /* XSendEvent() doesn't work yet on XI2 events. + * So at the moment gdk_test_simulate_* can only + * send events that GTK+ understands if XI2 is + * disabled, bummer. + */ + gdk_disable_multidevice (); + gtk_init (argcp, argvp); } @@ -408,7 +415,12 @@ gtk_test_slider_set_perc (GtkWidget *widget, else if (GTK_IS_SPIN_BUTTON (widget)) adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)); if (adjustment) - gtk_adjustment_set_value (adjustment, adjustment->lower + (adjustment->upper - adjustment->lower - adjustment->page_size) * percentage * 0.01); + gtk_adjustment_set_value (adjustment, + gtk_adjustment_get_lower (adjustment) + + (gtk_adjustment_get_upper (adjustment) + - gtk_adjustment_get_lower (adjustment) + - gtk_adjustment_get_page_size (adjustment)) + * percentage * 0.01); } /** @@ -421,7 +433,7 @@ gtk_test_slider_set_perc (GtkWidget *widget, * of the adjustment belonging to @widget, and is not a percentage * as passed in to gtk_test_slider_set_perc(). * - * Returns: adjustment->value for an adjustment belonging to @widget. + * Returns: gtk_adjustment_get_value (adjustment) for an adjustment belonging to @widget. * * Since: 2.14 **/ @@ -433,7 +445,7 @@ gtk_test_slider_get_value (GtkWidget *widget) adjustment = gtk_range_get_adjustment (GTK_RANGE (widget)); else if (GTK_IS_SPIN_BUTTON (widget)) adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget)); - return adjustment ? adjustment->value : 0; + return adjustment ? gtk_adjustment_get_value (adjustment) : 0; } /** diff --git a/gtk/gtktextattributes.c b/gtk/gtktextattributes.c new file mode 100644 index 0000000000..d2a9c6c3d5 --- /dev/null +++ b/gtk/gtktextattributes.c @@ -0,0 +1,348 @@ +/* gtktextattributes.c - text attributes + * + * Copyright (c) 1992-1994 The Regents of the University of California. + * Copyright (c) 1994-1997 Sun Microsystems, Inc. + * Copyright (c) 2000 Red Hat, Inc. + * Tk -> Gtk port by Havoc Pennington + * + * This software is copyrighted by the Regents of the University of + * California, Sun Microsystems, Inc., and other parties. The + * following terms apply to all files associated with the software + * unless explicitly disclaimed in individual files. + * + * The authors hereby grant permission to use, copy, modify, + * distribute, and license this software and its documentation for any + * purpose, provided that existing copyright notices are retained in + * all copies and that this notice is included verbatim in any + * distributions. No written agreement, license, or royalty fee is + * required for any of the authorized uses. Modifications to this + * software may be copyrighted by their authors and need not follow + * the licensing terms described here, provided that the new terms are + * clearly indicated on the first page of each file where they apply. + * + * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY + * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL + * DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, + * OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND + * NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, + * AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE + * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * GOVERNMENT USE: If you are acquiring this software on behalf of the + * U.S. government, the Government shall have only "Restricted Rights" + * in the software and related documentation as defined in the Federal + * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you + * are acquiring the software on behalf of the Department of Defense, + * the software shall be classified as "Commercial Computer Software" + * and the Government shall have only "Restricted Rights" as defined + * in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the + * foregoing, the authors grant the U.S. Government and others acting + * in its behalf permission to use and distribute the software in + * accordance with the terms specified in this license. + * + */ + +#include "config.h" + +#include "gtktextattributes.h" + +#include "gtkmainprivate.h" +#include "gtktexttag.h" +#include "gtktexttypes.h" + +/** + * gtk_text_attributes_new: + * + * Creates a #GtkTextAttributes, which describes + * a set of properties on some text. + * + * Return value: a new #GtkTextAttributes + **/ +GtkTextAttributes* +gtk_text_attributes_new (void) +{ + GtkTextAttributes *values; + + values = g_new0 (GtkTextAttributes, 1); + + /* 0 is a valid value for most of the struct */ + + values->refcount = 1; + + values->language = gtk_get_default_language (); + + values->font_scale = 1.0; + + values->editable = TRUE; + + return values; +} + +/** + * gtk_text_attributes_copy: + * @src: a #GtkTextAttributes to be copied + * + * Copies @src and returns a new #GtkTextAttributes. + * + * Return value: a copy of @src + **/ +GtkTextAttributes* +gtk_text_attributes_copy (GtkTextAttributes *src) +{ + GtkTextAttributes *dest; + + dest = gtk_text_attributes_new (); + gtk_text_attributes_copy_values (src, dest); + + return dest; +} + +G_DEFINE_BOXED_TYPE (GtkTextAttributes, gtk_text_attributes, + gtk_text_attributes_ref, + gtk_text_attributes_unref) + +/** + * gtk_text_attributes_copy_values: + * @src: a #GtkTextAttributes + * @dest: another #GtkTextAttributes + * + * Copies the values from @src to @dest so that @dest has the same values + * as @src. Frees existing values in @dest. + **/ +void +gtk_text_attributes_copy_values (GtkTextAttributes *src, + GtkTextAttributes *dest) +{ + guint orig_refcount; + + if (src == dest) + return; + + /* Remove refs */ + + if (dest->font) + pango_font_description_free (dest->font); + + /* Copy */ + orig_refcount = dest->refcount; + + *dest = *src; + + if (src->tabs) + dest->tabs = pango_tab_array_copy (src->tabs); + + dest->language = src->language; + + if (dest->font) + dest->font = pango_font_description_copy (src->font); + + if (src->pg_bg_color) + dest->pg_bg_color = gdk_color_copy (src->pg_bg_color); + + dest->refcount = orig_refcount; +} + +/** + * gtk_text_attributes_ref: + * @values: a #GtkTextAttributes + * + * Increments the reference count on @values. + * + * Returns: the #GtkTextAttributes that were passed in + **/ +GtkTextAttributes * +gtk_text_attributes_ref (GtkTextAttributes *values) +{ + g_return_val_if_fail (values != NULL, NULL); + + values->refcount += 1; + + return values; +} + +/** + * gtk_text_attributes_unref: + * @values: a #GtkTextAttributes + * + * Decrements the reference count on @values, freeing the structure + * if the reference count reaches 0. + **/ +void +gtk_text_attributes_unref (GtkTextAttributes *values) +{ + g_return_if_fail (values != NULL); + g_return_if_fail (values->refcount > 0); + + values->refcount -= 1; + + if (values->refcount == 0) + { + if (values->tabs) + pango_tab_array_free (values->tabs); + + if (values->font) + pango_font_description_free (values->font); + + if (values->pg_bg_color) + gdk_color_free (values->pg_bg_color); + + g_free (values); + } +} + +void +_gtk_text_attributes_fill_from_tags (GtkTextAttributes *dest, + GtkTextTag** tags, + guint n_tags) +{ + guint n = 0; + + guint left_margin_accumulative = 0; + guint right_margin_accumulative = 0; + + while (n < n_tags) + { + GtkTextTag *tag = tags[n]; + GtkTextAttributes *vals = tag->priv->values; + + g_assert (tag->priv->table != NULL); + if (n > 0) + g_assert (tags[n]->priv->priority > tags[n-1]->priv->priority); + + if (tag->priv->bg_color_set) + { + dest->appearance.bg_color = vals->appearance.bg_color; + + dest->appearance.draw_bg = TRUE; + } + if (tag->priv->fg_color_set) + dest->appearance.fg_color = vals->appearance.fg_color; + + if (tag->priv->pg_bg_color_set) + { + dest->pg_bg_color = gdk_color_copy (vals->pg_bg_color); + } + + if (vals->font) + { + if (dest->font) + pango_font_description_merge (dest->font, vals->font, TRUE); + else + dest->font = pango_font_description_copy (vals->font); + } + + /* multiply all the scales together to get a composite */ + if (tag->priv->scale_set) + dest->font_scale *= vals->font_scale; + + if (tag->priv->justification_set) + dest->justification = vals->justification; + + if (vals->direction != GTK_TEXT_DIR_NONE) + dest->direction = vals->direction; + + if (tag->priv->left_margin_set) + { + if (tag->priv->accumulative_margin) + left_margin_accumulative += vals->left_margin; + else + dest->left_margin = vals->left_margin; + } + + if (tag->priv->indent_set) + dest->indent = vals->indent; + + if (tag->priv->rise_set) + dest->appearance.rise = vals->appearance.rise; + + if (tag->priv->right_margin_set) + { + if (tag->priv->accumulative_margin) + right_margin_accumulative += vals->right_margin; + else + dest->right_margin = vals->right_margin; + } + + if (tag->priv->pixels_above_lines_set) + dest->pixels_above_lines = vals->pixels_above_lines; + + if (tag->priv->pixels_below_lines_set) + dest->pixels_below_lines = vals->pixels_below_lines; + + if (tag->priv->pixels_inside_wrap_set) + dest->pixels_inside_wrap = vals->pixels_inside_wrap; + + if (tag->priv->tabs_set) + { + if (dest->tabs) + pango_tab_array_free (dest->tabs); + dest->tabs = pango_tab_array_copy (vals->tabs); + } + + if (tag->priv->wrap_mode_set) + dest->wrap_mode = vals->wrap_mode; + + if (tag->priv->underline_set) + dest->appearance.underline = vals->appearance.underline; + + if (tag->priv->strikethrough_set) + dest->appearance.strikethrough = vals->appearance.strikethrough; + + if (tag->priv->invisible_set) + dest->invisible = vals->invisible; + + if (tag->priv->editable_set) + dest->editable = vals->editable; + + if (tag->priv->bg_full_height_set) + dest->bg_full_height = vals->bg_full_height; + + if (tag->priv->language_set) + dest->language = vals->language; + + ++n; + } + + dest->left_margin += left_margin_accumulative; + dest->right_margin += right_margin_accumulative; +} + +gboolean +_gtk_text_tag_affects_size (GtkTextTag *tag) +{ + GtkTextTagPrivate *priv = tag->priv; + + return + (priv->values->font && pango_font_description_get_set_fields (priv->values->font) != 0) || + priv->scale_set || + priv->justification_set || + priv->left_margin_set || + priv->indent_set || + priv->rise_set || + priv->right_margin_set || + priv->pixels_above_lines_set || + priv->pixels_below_lines_set || + priv->pixels_inside_wrap_set || + priv->tabs_set || + priv->underline_set || + priv->wrap_mode_set || + priv->invisible_set; +} + +gboolean +_gtk_text_tag_affects_nonsize_appearance (GtkTextTag *tag) +{ + GtkTextTagPrivate *priv = tag->priv; + + return + priv->bg_color_set || + priv->fg_color_set || + priv->strikethrough_set || + priv->bg_full_height_set || + priv->pg_bg_color_set; +} diff --git a/gtk/gtktextattributes.h b/gtk/gtktextattributes.h new file mode 100644 index 0000000000..aa7d6f8aa8 --- /dev/null +++ b/gtk/gtktextattributes.h @@ -0,0 +1,174 @@ +/* gtktexttag.c - text tag object + * + * Copyright (c) 1992-1994 The Regents of the University of California. + * Copyright (c) 1994-1997 Sun Microsystems, Inc. + * Copyright (c) 2000 Red Hat, Inc. + * Tk -> Gtk port by Havoc Pennington + * + * This software is copyrighted by the Regents of the University of + * California, Sun Microsystems, Inc., and other parties. The + * following terms apply to all files associated with the software + * unless explicitly disclaimed in individual files. + * + * The authors hereby grant permission to use, copy, modify, + * distribute, and license this software and its documentation for any + * purpose, provided that existing copyright notices are retained in + * all copies and that this notice is included verbatim in any + * distributions. No written agreement, license, or royalty fee is + * required for any of the authorized uses. Modifications to this + * software may be copyrighted by their authors and need not follow + * the licensing terms described here, provided that the new terms are + * clearly indicated on the first page of each file where they apply. + * + * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY + * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL + * DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, + * OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND + * NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, + * AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE + * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * GOVERNMENT USE: If you are acquiring this software on behalf of the + * U.S. government, the Government shall have only "Restricted Rights" + * in the software and related documentation as defined in the Federal + * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you + * are acquiring the software on behalf of the Department of Defense, + * the software shall be classified as "Commercial Computer Software" + * and the Government shall have only "Restricted Rights" as defined + * in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the + * foregoing, the authors grant the U.S. Government and others acting + * in its behalf permission to use and distribute the software in + * accordance with the terms specified in this license. + * + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_TEXT_ATTRIBUTES_H__ +#define __GTK_TEXT_ATTRIBUTES_H__ + + +#include +#include + + +G_BEGIN_DECLS + +typedef struct _GtkTextAttributes GtkTextAttributes; + +#define GTK_TYPE_TEXT_ATTRIBUTES (gtk_text_attributes_get_type ()) + +typedef struct _GtkTextAppearance GtkTextAppearance; + +/** + * GtkTextAttributes: + * + * Using #GtkTextAttributes directly should rarely be necessary. + * It's primarily useful with gtk_text_iter_get_attributes(). + * As with most GTK+ structs, the fields in this struct should only + * be read, never modified directly. + */ +struct _GtkTextAppearance +{ + /*< public >*/ + GdkColor bg_color; + GdkColor fg_color; + + /* super/subscript rise, can be negative */ + gint rise; + + /*< public >*/ + guint underline : 4; /* PangoUnderline */ + guint strikethrough : 1; + + /* Whether to use background-related values; this is irrelevant for + * the values struct when in a tag, but is used for the composite + * values struct; it's true if any of the tags being composited + * had background stuff set. + */ + guint draw_bg : 1; + + /* These are only used when we are actually laying out and rendering + * a paragraph; not when a GtkTextAppearance is part of a + * GtkTextAttributes. + */ + guint inside_selection : 1; + guint is_text : 1; + + /*< private >*/ + guint padding[4]; +}; + +struct _GtkTextAttributes +{ + /*< private >*/ + guint refcount; + + /*< public >*/ + GtkTextAppearance appearance; + + GtkJustification justification; + GtkTextDirection direction; + + /* Individual chunks of this can be set/unset as a group */ + PangoFontDescription *font; + + gdouble font_scale; + + gint left_margin; + gint right_margin; + gint indent; + + gint pixels_above_lines; + gint pixels_below_lines; + gint pixels_inside_wrap; + + PangoTabArray *tabs; + + GtkWrapMode wrap_mode; /* How to handle wrap-around for this tag. + * Must be GTK_WRAPMODE_CHAR, + * GTK_WRAPMODE_NONE, GTK_WRAPMODE_WORD + */ + + PangoLanguage *language; + + /*< private >*/ + GdkColor *pg_bg_color; + + /*< public >*/ + /* hide the text */ + guint invisible : 1; + + /* Background is fit to full line height rather than + * baseline +/- ascent/descent (font height) + */ + guint bg_full_height : 1; + + /* can edit this text */ + guint editable : 1; + + /*< private >*/ + guint padding[4]; +}; + +GtkTextAttributes* gtk_text_attributes_new (void); +GtkTextAttributes* gtk_text_attributes_copy (GtkTextAttributes *src); +void gtk_text_attributes_copy_values (GtkTextAttributes *src, + GtkTextAttributes *dest); +void gtk_text_attributes_unref (GtkTextAttributes *values); +GtkTextAttributes *gtk_text_attributes_ref (GtkTextAttributes *values); + +GType gtk_text_attributes_get_type (void) G_GNUC_CONST; + + +G_END_DECLS + +#endif + diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c index b07a04ec1f..c5124e7bd8 100644 --- a/gtk/gtktextbtree.c +++ b/gtk/gtktextbtree.c @@ -59,6 +59,7 @@ #include #include #include "gtktexttag.h" +#include "gtktexttagprivate.h" #include "gtktexttagtable.h" #include "gtktextlayout.h" #include "gtktextiterprivate.h" @@ -1778,7 +1779,7 @@ _gtk_text_btree_tag (const GtkTextIter *start_orig, g_return_if_fail (GTK_IS_TEXT_TAG (tag)); g_return_if_fail (_gtk_text_iter_get_btree (start_orig) == _gtk_text_iter_get_btree (end_orig)); - g_return_if_fail (tag->table == _gtk_text_iter_get_btree (start_orig)->table); + g_return_if_fail (tag->priv->table == _gtk_text_iter_get_btree (start_orig)->table); #if 0 printf ("%s tag %s from %d to %d\n", @@ -2505,10 +2506,10 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter) || (seg->type == >k_text_toggle_off_type)) { tag = seg->body.toggle.info->tag; - if (tag->invisible_set) + if (tag->priv->invisible_set) { - tags[tag->priority] = tag; - tagCnts[tag->priority]++; + tags[tag->priv->priority] = tag; + tagCnts[tag->priv->priority]++; } } } @@ -2529,10 +2530,10 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter) || (seg->type == >k_text_toggle_off_type)) { tag = seg->body.toggle.info->tag; - if (tag->invisible_set) + if (tag->priv->invisible_set) { - tags[tag->priority] = tag; - tagCnts[tag->priority]++; + tags[tag->priv->priority] = tag; + tagCnts[tag->priv->priority]++; } } } @@ -2558,10 +2559,10 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter) if (summary->toggle_count & 1) { tag = summary->info->tag; - if (tag->invisible_set) + if (tag->priv->invisible_set) { - tags[tag->priority] = tag; - tagCnts[tag->priority] += summary->toggle_count; + tags[tag->priv->priority] = tag; + tagCnts[tag->priv->priority] += summary->toggle_count; } } } @@ -2588,7 +2589,7 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter) } #endif #endif - invisible = tags[i]->values->invisible; + invisible = tags[i]->priv->values->invisible; break; } } @@ -6798,7 +6799,7 @@ gtk_text_btree_node_check_consistency (GtkTextBTree *tree, break; } g_error ("gtk_text_btree_node_check_consistency: GtkTextBTreeNode tag \"%s\" not %s", - summary->info->tag->name, + summary->info->tag->priv->name, "present in parent summaries"); } if (summary->info == summary2->info) @@ -6834,7 +6835,7 @@ gtk_text_btree_node_check_consistency (GtkTextBTree *tree, if (summary->info->toggle_count == summary->toggle_count) { g_error ("gtk_text_btree_node_check_consistency: found unpruned root for \"%s\"", - summary->info->tag->name); + summary->info->tag->priv->name); } toggle_count = 0; if (node->level == 0) @@ -6888,7 +6889,7 @@ gtk_text_btree_node_check_consistency (GtkTextBTree *tree, if (summary2->info == summary->info) { g_error ("gtk_text_btree_node_check_consistency: duplicated GtkTextBTreeNode tag: %s", - summary->info->tag->name); + summary->info->tag->priv->name); } } } @@ -6940,19 +6941,19 @@ _gtk_text_btree_check (GtkTextBTree *tree) if (info->toggle_count != 0) { g_error ("_gtk_text_btree_check found \"%s\" with toggles (%d) but no root", - tag->name, info->toggle_count); + tag->priv->name, info->toggle_count); } continue; /* no ranges for the tag */ } else if (info->toggle_count == 0) { g_error ("_gtk_text_btree_check found root for \"%s\" with no toggles", - tag->name); + tag->priv->name); } else if (info->toggle_count & 1) { g_error ("_gtk_text_btree_check found odd toggle count for \"%s\" (%d)", - tag->name, info->toggle_count); + tag->priv->name, info->toggle_count); } for (summary = node->summary; summary != NULL; summary = summary->next) @@ -7007,7 +7008,7 @@ _gtk_text_btree_check (GtkTextBTree *tree) if (count != info->toggle_count) { g_error ("_gtk_text_btree_check toggle_count (%d) wrong for \"%s\" should be (%d)", - info->toggle_count, tag->name, count); + info->toggle_count, tag->priv->name, count); } } } @@ -7116,7 +7117,7 @@ _gtk_text_btree_spew (GtkTextBTree *tree) info = list->data; printf (" tag `%s': root at %p, toggle count %d\n", - info->tag->name, info->tag_root, info->toggle_count); + info->tag->priv->name, info->tag_root, info->toggle_count); list = g_slist_next (list); } @@ -7182,7 +7183,7 @@ _gtk_text_btree_spew_line_short (GtkTextLine *line, int indent) seg->type == >k_text_toggle_off_type) { printf ("%s tag `%s' %s\n", - spaces, seg->body.toggle.info->tag->name, + spaces, seg->body.toggle.info->tag->priv->name, seg->type == >k_text_toggle_off_type ? "off" : "on"); } @@ -7209,7 +7210,7 @@ _gtk_text_btree_spew_node (GtkTextBTreeNode *node, int indent) while (s) { printf ("%s %d toggles of `%s' below this node\n", - spaces, s->toggle_count, s->info->tag->name); + spaces, s->toggle_count, s->info->tag->priv->name); s = s->next; } @@ -7284,7 +7285,7 @@ _gtk_text_btree_spew_segment (GtkTextBTree* tree, GtkTextLineSegment * seg) seg->type == >k_text_toggle_off_type) { printf (" tag `%s' priority %d\n", - seg->body.toggle.info->tag->name, - seg->body.toggle.info->tag->priority); + seg->body.toggle.info->tag->priv->name, + seg->body.toggle.info->tag->priv->priority); } } diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index f1cd6f5098..050ac9bcff 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -38,6 +38,7 @@ #include "gtktextbufferrichtext.h" #include "gtktextbtree.h" #include "gtktextiterprivate.h" +#include "gtktexttagprivate.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -2504,7 +2505,7 @@ gtk_text_buffer_real_apply_tag (GtkTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end) { - if (tag->table != buffer->priv->tag_table) + if (tag->priv->table != buffer->priv->tag_table) { g_warning ("Can only apply tags that are in the tag table for the buffer"); return; @@ -2519,7 +2520,7 @@ gtk_text_buffer_real_remove_tag (GtkTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end) { - if (tag->table != buffer->priv->tag_table) + if (tag->priv->table != buffer->priv->tag_table) { g_warning ("Can only remove tags that are in the tag table for the buffer"); return; @@ -2611,7 +2612,7 @@ gtk_text_buffer_apply_tag (GtkTextBuffer *buffer, g_return_if_fail (end != NULL); g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer); g_return_if_fail (gtk_text_iter_get_buffer (end) == buffer); - g_return_if_fail (tag->table == buffer->priv->tag_table); + g_return_if_fail (tag->priv->table == buffer->priv->tag_table); gtk_text_buffer_emit_tag (buffer, tag, TRUE, start, end); } @@ -2640,7 +2641,7 @@ gtk_text_buffer_remove_tag (GtkTextBuffer *buffer, g_return_if_fail (end != NULL); g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer); g_return_if_fail (gtk_text_iter_get_buffer (end) == buffer); - g_return_if_fail (tag->table == buffer->priv->tag_table); + g_return_if_fail (tag->priv->table == buffer->priv->tag_table); gtk_text_buffer_emit_tag (buffer, tag, FALSE, start, end); } @@ -3156,7 +3157,7 @@ clipboard_get_selection_cb (GtkClipboard *clipboard, * used within-process */ gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, /* bytes */ (void*)&buffer, sizeof (buffer)); @@ -3167,11 +3168,11 @@ clipboard_get_selection_cb (GtkClipboard *clipboard, gsize len; str = gtk_text_buffer_serialize (buffer, buffer, - selection_data->target, + gtk_selection_data_get_target (selection_data), &start, &end, &len); gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, /* bytes */ str, len); g_free (str); @@ -3226,7 +3227,7 @@ clipboard_get_contents_cb (GtkClipboard *clipboard, * be used within-process. OK to supply a NULL value for contents. */ gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, /* bytes */ (void*)&contents, sizeof (contents)); @@ -3244,11 +3245,11 @@ clipboard_get_contents_cb (GtkClipboard *clipboard, gtk_text_buffer_get_bounds (contents, &start, &end); str = gtk_text_buffer_serialize (clipboard_source_buffer, contents, - selection_data->target, + gtk_selection_data_get_target (selection_data), &start, &end, &len); gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, /* bytes */ str, len); g_free (str); @@ -3404,23 +3405,22 @@ selection_data_get_buffer (GtkSelectionData *selection_data, GtkTextBuffer *src_buffer = NULL; /* If we can get the owner, the selection is in-process */ - owner = gdk_selection_owner_get_for_display (selection_data->display, - selection_data->selection); + owner = gdk_selection_owner_get_for_display (gtk_selection_data_get_display (selection_data), + gtk_selection_data_get_selection (selection_data)); if (owner == NULL) return NULL; if (gdk_window_get_window_type (owner) == GDK_WINDOW_FOREIGN) return NULL; - - if (selection_data->type != - gdk_atom_intern_static_string ("GTK_TEXT_BUFFER_CONTENTS")) + + if (gtk_selection_data_get_data_type (selection_data) != gdk_atom_intern_static_string ("GTK_TEXT_BUFFER_CONTENTS")) return NULL; - if (selection_data->length != sizeof (src_buffer)) + if (gtk_selection_data_get_length (selection_data) != sizeof (src_buffer)) return NULL; - - memcpy (&src_buffer, selection_data->data, sizeof (src_buffer)); + + memcpy (&src_buffer, gtk_selection_data_get_data (selection_data), sizeof (src_buffer)); if (src_buffer == NULL) return NULL; diff --git a/gtk/gtktextbuffer.h b/gtk/gtktextbuffer.h index 5e7d9447b0..565d597056 100644 --- a/gtk/gtktextbuffer.h +++ b/gtk/gtktextbuffer.h @@ -83,15 +83,15 @@ struct _GtkTextBufferClass void (* insert_text) (GtkTextBuffer *buffer, GtkTextIter *pos, - const gchar *text, - gint length); + const gchar *new_text, + gint new_text_length); void (* insert_pixbuf) (GtkTextBuffer *buffer, - GtkTextIter *pos, + GtkTextIter *iter, GdkPixbuf *pixbuf); void (* insert_child_anchor) (GtkTextBuffer *buffer, - GtkTextIter *pos, + GtkTextIter *iter, GtkTextChildAnchor *anchor); void (* delete_range) (GtkTextBuffer *buffer, @@ -117,13 +117,13 @@ struct _GtkTextBufferClass void (* apply_tag) (GtkTextBuffer *buffer, GtkTextTag *tag, - const GtkTextIter *start_char, - const GtkTextIter *end_char); + const GtkTextIter *start, + const GtkTextIter *end); void (* remove_tag) (GtkTextBuffer *buffer, GtkTextTag *tag, - const GtkTextIter *start_char, - const GtkTextIter *end_char); + const GtkTextIter *start, + const GtkTextIter *end); /* Called at the start and end of an atomic user action */ void (* begin_user_action) (GtkTextBuffer *buffer); diff --git a/gtk/gtktextbufferserialize.c b/gtk/gtktextbufferserialize.c index 526e9518aa..e4b4f73006 100644 --- a/gtk/gtktextbufferserialize.c +++ b/gtk/gtktextbufferserialize.c @@ -32,6 +32,7 @@ #include "gdk-pixbuf/gdk-pixdata.h" #include "gtktextbufferserialize.h" +#include "gtktexttagprivate.h" #include "gtkintl.h" @@ -292,9 +293,9 @@ serialize_tag (gpointer key, g_string_append (context->tag_table_str, " name) + if (tag->priv->name) { - tag_name = g_markup_escape_text (tag->name, -1); + tag_name = g_markup_escape_text (tag->priv->name, -1); g_string_append_printf (context->tag_table_str, "name=\"%s\"", tag_name); g_free (tag_name); } @@ -305,7 +306,7 @@ serialize_tag (gpointer key, g_string_append_printf (context->tag_table_str, "id=\"%d\"", tag_id); } - g_string_append_printf (context->tag_table_str, " priority=\"%d\">\n", tag->priority); + g_string_append_printf (context->tag_table_str, " priority=\"%d\">\n", tag->priv->priority); /* Serialize properties */ pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (tag), &n_pspecs); @@ -489,9 +490,9 @@ serialize_text (GtkTextBuffer *buffer, /* Add it to the tag hash table */ g_hash_table_insert (context->tags, tag, tag); - if (tag->name) + if (tag->priv->name) { - tag_name = g_markup_escape_text (tag->name, -1); + tag_name = g_markup_escape_text (tag->priv->name, -1); g_string_append_printf (context->text_str, "", tag_name); g_free (tag_name); @@ -1481,10 +1482,10 @@ end_element_handler (GMarkupParseContext *context, pop_state (info); g_assert (peek_state (info) == STATE_TAGS); - if (info->current_tag->name) + if (info->current_tag->priv->name) { /* Add tag to defined tags hash */ - tmp = g_strdup (info->current_tag->name); + tmp = g_strdup (info->current_tag->priv->name); g_hash_table_insert (info->defined_tags, tmp, tmp); } diff --git a/gtk/gtktextchild.h b/gtk/gtktextchild.h index dd132f4278..e20fb442c3 100644 --- a/gtk/gtktextchild.h +++ b/gtk/gtktextchild.h @@ -31,7 +31,7 @@ #ifndef __GTK_TEXT_CHILD_H__ #define __GTK_TEXT_CHILD_H__ -#include +#include #include G_BEGIN_DECLS @@ -58,7 +58,8 @@ struct _GtkTextChildAnchor { GObject parent_instance; - gpointer GSEAL (segment); + /*< private >*/ + gpointer segment; }; struct _GtkTextChildAnchorClass @@ -72,12 +73,12 @@ struct _GtkTextChildAnchorClass void (*_gtk_reserved4) (void); }; -GType gtk_text_child_anchor_get_type (void) G_GNUC_CONST; +GType gtk_text_child_anchor_get_type (void) G_GNUC_CONST; -GtkTextChildAnchor* gtk_text_child_anchor_new (void); +GtkTextChildAnchor* gtk_text_child_anchor_new (void); -GList* gtk_text_child_anchor_get_widgets (GtkTextChildAnchor *anchor); -gboolean gtk_text_child_anchor_get_deleted (GtkTextChildAnchor *anchor); +GList* gtk_text_child_anchor_get_widgets (GtkTextChildAnchor *anchor); +gboolean gtk_text_child_anchor_get_deleted (GtkTextChildAnchor *anchor); G_END_DECLS diff --git a/gtk/gtktextdisplay.c b/gtk/gtktextdisplay.c index 782ee14bb1..a145c0346a 100644 --- a/gtk/gtktextdisplay.c +++ b/gtk/gtktextdisplay.c @@ -118,22 +118,6 @@ struct _GtkTextRendererClass G_DEFINE_TYPE (GtkTextRenderer, _gtk_text_renderer, PANGO_TYPE_RENDERER) -static GdkColor * -text_renderer_get_error_color (GtkTextRenderer *text_renderer) -{ - static const GdkColor red = { 0, 0xffff, 0, 0 }; - - if (!text_renderer->error_color) - gtk_widget_style_get (text_renderer->widget, - "error-underline-color", &text_renderer->error_color, - NULL); - - if (!text_renderer->error_color) - text_renderer->error_color = gdk_color_copy (&red); - - return text_renderer->error_color; -} - static void text_renderer_set_gdk_color (GtkTextRenderer *text_renderer, PangoRenderPart part, @@ -153,7 +137,27 @@ text_renderer_set_gdk_color (GtkTextRenderer *text_renderer, } else pango_renderer_set_color (renderer, part, NULL); - +} + +static void +text_renderer_set_rgba (GtkTextRenderer *text_renderer, + PangoRenderPart part, + GdkRGBA *rgba) +{ + PangoRenderer *renderer = PANGO_RENDERER (text_renderer); + + if (rgba) + { + PangoColor color; + + color.red = CLAMP (rgba->red * 65535. + 0.5, 0, 65535); + color.green = CLAMP (rgba->green * 65535. + 0.5, 0, 65535); + color.blue = CLAMP (rgba->blue * 65535. + 0.5, 0, 65535); + + pango_renderer_set_color (renderer, part, &color); + } + else + pango_renderer_set_color (renderer, part, NULL); } static GtkTextAppearance * @@ -178,9 +182,12 @@ static void gtk_text_renderer_prepare_run (PangoRenderer *renderer, PangoLayoutRun *run) { + GtkStyleContext *context; + GtkStateFlags state; GtkTextRenderer *text_renderer = GTK_TEXT_RENDERER (renderer); - GtkStyle *style; - GdkColor *bg_color, *fg_color, *underline_color; + GdkColor *bg_color = NULL; + GdkRGBA *fg_rgba = NULL; + GdkColor *fg_color = NULL; GtkTextAppearance *appearance; PANGO_RENDERER_CLASS (_gtk_text_renderer_parent_class)->prepare_run (renderer, run); @@ -188,6 +195,10 @@ gtk_text_renderer_prepare_run (PangoRenderer *renderer, appearance = get_item_appearance (run->item); g_assert (appearance != NULL); + context = gtk_widget_get_style_context (text_renderer->widget); + + state = gtk_widget_get_state_flags (text_renderer->widget); + if (appearance->draw_bg && text_renderer->state == NORMAL) bg_color = &appearance->bg_color; else @@ -195,28 +206,58 @@ gtk_text_renderer_prepare_run (PangoRenderer *renderer, text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_BACKGROUND, bg_color); - style = gtk_widget_get_style (text_renderer->widget); if (text_renderer->state == SELECTED) { + state |= GTK_STATE_FLAG_SELECTED; + if (gtk_widget_has_focus (text_renderer->widget)) - fg_color = &style->text[GTK_STATE_SELECTED]; - else - fg_color = &style->text[GTK_STATE_ACTIVE]; + state |= GTK_STATE_FLAG_FOCUSED; + + gtk_style_context_get (context, state, + "color", &fg_rgba, + NULL); } else if (text_renderer->state == CURSOR && gtk_widget_has_focus (text_renderer->widget)) - fg_color = &style->base[GTK_STATE_NORMAL]; + { + gtk_style_context_get (context, state, + "background-color", &fg_rgba, + NULL); + } else fg_color = &appearance->fg_color; - text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_FOREGROUND, fg_color); - text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_STRIKETHROUGH, fg_color); + if (fg_rgba) + { + text_renderer_set_rgba (text_renderer, PANGO_RENDER_PART_FOREGROUND, fg_rgba); + text_renderer_set_rgba (text_renderer, PANGO_RENDER_PART_STRIKETHROUGH,fg_rgba); + } + else + { + text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_FOREGROUND, fg_color); + text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_STRIKETHROUGH, fg_color); + } if (appearance->underline == PANGO_UNDERLINE_ERROR) - underline_color = text_renderer_get_error_color (text_renderer); - else - underline_color = fg_color; + { + if (!text_renderer->error_color) + { + gtk_style_context_get_style (context, + "error-underline-color", &text_renderer->error_color, + NULL); - text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_UNDERLINE, underline_color); + if (!text_renderer->error_color) + { + static const GdkColor red = { 0, 0xffff, 0, 0 }; + text_renderer->error_color = gdk_color_copy (&red); + } + } + + text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_UNDERLINE, text_renderer->error_color); + } + else if (fg_rgba) + text_renderer_set_rgba (text_renderer, PANGO_RENDER_PART_UNDERLINE, fg_rgba); + else + text_renderer_set_gdk_color (text_renderer, PANGO_RENDER_PART_UNDERLINE, fg_color); } static void @@ -354,21 +395,6 @@ gtk_text_renderer_draw_shape (PangoRenderer *renderer, int y) { GtkTextRenderer *text_renderer = GTK_TEXT_RENDERER (renderer); - GtkStyle *style; - GdkColor *fg; - - style = gtk_widget_get_style (text_renderer->widget); - if (text_renderer->state == SELECTED) - { - if (gtk_widget_has_focus (text_renderer->widget)) - fg = &style->text[GTK_STATE_SELECTED]; - else - fg = &style->text[GTK_STATE_SELECTED]; - } - else if (text_renderer->state == CURSOR && gtk_widget_has_focus (text_renderer->widget)) - fg = &style->base[GTK_STATE_NORMAL]; - else - fg = &style->text[GTK_STATE_NORMAL]; if (attr->data == NULL) { @@ -377,18 +403,17 @@ gtk_text_renderer_draw_shape (PangoRenderer *renderer, */ GdkRectangle shape_rect; cairo_t *cr; - + shape_rect.x = PANGO_PIXELS (x); shape_rect.y = PANGO_PIXELS (y + attr->logical_rect.y); shape_rect.width = PANGO_PIXELS (x + attr->logical_rect.width) - shape_rect.x; shape_rect.height = PANGO_PIXELS (y + attr->logical_rect.y + attr->logical_rect.height) - shape_rect.y; - + + set_color (text_renderer, PANGO_RENDER_PART_FOREGROUND); + cr = text_renderer->cr; - cairo_save (cr); - cairo_set_line_width (cr, 1.0); - gdk_cairo_set_source_color (cr, fg); cairo_rectangle (cr, shape_rect.x + 0.5, shape_rect.y + 0.5, @@ -403,8 +428,8 @@ gtk_text_renderer_draw_shape (PangoRenderer *renderer, shape_rect.y + 0.5); cairo_stroke (cr); - - cairo_restore (cr); + + unset_color (text_renderer); } else if (GDK_IS_PIXBUF (attr->data)) { @@ -474,8 +499,24 @@ text_renderer_begin (GtkTextRenderer *text_renderer, GtkWidget *widget, cairo_t *cr) { + GtkStyleContext *context; + GtkStateFlags state; + GdkRGBA color; + text_renderer->widget = widget; text_renderer->cr = cr; + + context = gtk_widget_get_style_context (widget); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_color (context, state, &color); + + cairo_save (cr); + + gdk_cairo_set_source_rgba (cr, &color); } /* Returns a GSList of (referenced) widgets encountered while drawing. @@ -483,8 +524,15 @@ text_renderer_begin (GtkTextRenderer *text_renderer, static GList * text_renderer_end (GtkTextRenderer *text_renderer) { + GtkStyleContext *context; GList *widgets = text_renderer->widgets; + cairo_restore (text_renderer->cr); + + context = gtk_widget_get_style_context (text_renderer->widget); + + gtk_style_context_restore (context); + text_renderer->widget = NULL; text_renderer->cr = NULL; @@ -499,7 +547,6 @@ text_renderer_end (GtkTextRenderer *text_renderer) return widgets; } - static cairo_region_t * get_selected_clip (GtkTextRenderer *text_renderer, PangoLayout *layout, @@ -541,18 +588,16 @@ render_para (GtkTextRenderer *text_renderer, int selection_start_index, int selection_end_index) { - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; PangoLayout *layout = line_display->layout; int byte_offset = 0; PangoLayoutIter *iter; PangoRectangle layout_logical; int screen_width; - GdkColor *selection; - gint state; + GdkRGBA selection; gboolean first = TRUE; - style = gtk_widget_get_style (text_renderer->widget); - iter = pango_layout_get_iter (layout); pango_layout_iter_get_layout_extents (iter, NULL, &layout_logical); @@ -563,13 +608,14 @@ render_para (GtkTextRenderer *text_renderer, layout_logical.y += line_display->top_margin * PANGO_SCALE; screen_width = line_display->total_width; - - if (gtk_widget_has_focus (text_renderer->widget)) - state = GTK_STATE_SELECTED; - else - state = GTK_STATE_ACTIVE; - selection = &style->base [state]; + context = gtk_widget_get_style_context (text_renderer->widget); + + state = GTK_STATE_FLAG_SELECTED; + if (gtk_widget_has_focus (text_renderer->widget)) + state |= GTK_STATE_FLAG_FOCUSED; + + gtk_style_context_get_background_color (context, state, &selection); do { @@ -614,7 +660,7 @@ render_para (GtkTextRenderer *text_renderer, cairo_t *cr = text_renderer->cr; cairo_save (cr); - gdk_cairo_set_source_color (cr, selection); + gdk_cairo_set_source_rgba (cr, &selection); cairo_rectangle (cr, x + line_display->left_margin, selection_y, screen_width, selection_height); @@ -670,7 +716,7 @@ render_para (GtkTextRenderer *text_renderer, cairo_clip (cr); cairo_region_destroy (clip_region); - gdk_cairo_set_source_color (cr, selection); + gdk_cairo_set_source_rgba (cr, &selection); cairo_rectangle (cr, x + PANGO_PIXELS (line_rect.x), selection_y, @@ -693,7 +739,7 @@ render_para (GtkTextRenderer *text_renderer, { cairo_save (cr); - gdk_cairo_set_source_color (cr, selection); + gdk_cairo_set_source_rgba (cr, &selection); cairo_rectangle (cr, x + line_display->left_margin, selection_y, @@ -717,7 +763,7 @@ render_para (GtkTextRenderer *text_renderer, cairo_save (cr); - gdk_cairo_set_source_color (cr, selection); + gdk_cairo_set_source_rgba (cr, &selection); cairo_rectangle (cr, x + PANGO_PIXELS (line_rect.x) + PANGO_PIXELS (line_rect.width), selection_y, @@ -755,15 +801,15 @@ render_para (GtkTextRenderer *text_renderer, gdk_cairo_set_source_color (cr, &cursor_color); cairo_paint (cr); - /* draw text under the cursor if any */ - if (!line_display->cursor_at_line_end) - { - GtkStateType state; - GtkStyle *style; + /* draw text under the cursor if any */ + if (!line_display->cursor_at_line_end) + { + GdkRGBA color; - style = gtk_widget_get_style (text_renderer->widget); - state = gtk_widget_get_state (text_renderer->widget); - gdk_cairo_set_source_color (cr, &style->base[state]); + state = gtk_widget_get_state_flags (text_renderer->widget); + gtk_style_context_get_background_color (context, state, &color); + + gdk_cairo_set_source_rgba (cr, &color); text_renderer_set_state (text_renderer, CURSOR); @@ -771,8 +817,7 @@ render_para (GtkTextRenderer *text_renderer, line, PANGO_SCALE * x + line_rect.x, PANGO_SCALE * y + baseline); - - } + } cairo_restore (cr); } @@ -811,7 +856,7 @@ gtk_text_layout_draw (GtkTextLayout *layout, GSList *tmp_list; GList *tmp_widgets; GdkRectangle clip; - + g_return_if_fail (GTK_IS_TEXT_LAYOUT (layout)); g_return_if_fail (layout->default_style != NULL); g_return_if_fail (layout->buffer != NULL); @@ -825,10 +870,6 @@ gtk_text_layout_draw (GtkTextLayout *layout, if (line_list == NULL) return; /* nothing on the screen */ - cairo_save (cr); - - gdk_cairo_set_source_color (cr, >k_widget_get_style (widget)->text[gtk_widget_get_state (widget)]); - text_renderer = get_text_renderer (); text_renderer_begin (text_renderer, widget, cr); @@ -950,7 +991,5 @@ gtk_text_layout_draw (GtkTextLayout *layout, g_list_free (tmp_widgets); } - cairo_restore (cr); - g_slist_free (line_list); } diff --git a/gtk/gtktextiter.h b/gtk/gtktextiter.h index a4187eb8e9..9d636bfd19 100644 --- a/gtk/gtktextiter.h +++ b/gtk/gtktextiter.h @@ -31,8 +31,9 @@ #ifndef __GTK_TEXT_ITER_H__ #define __GTK_TEXT_ITER_H__ -#include +#include #include +#include G_BEGIN_DECLS diff --git a/gtk/gtktextlayout.c b/gtk/gtktextlayout.c index 8344a1b642..35809873d5 100644 --- a/gtk/gtktextlayout.c +++ b/gtk/gtktextlayout.c @@ -1283,8 +1283,8 @@ totally_invisible_line (GtkTextLayout *layout, invalidate_cached_style (layout); /* Bail out if an elision-unsetting tag begins */ - if (seg->body.toggle.info->tag->invisible_set && - !seg->body.toggle.info->tag->values->invisible) + if (seg->body.toggle.info->tag->priv->invisible_set && + !seg->body.toggle.info->tag->priv->values->invisible) break; } else if (seg->type == >k_text_toggle_off_type) @@ -1292,8 +1292,8 @@ totally_invisible_line (GtkTextLayout *layout, invalidate_cached_style (layout); /* Bail out if an elision-setting tag ends */ - if (seg->body.toggle.info->tag->invisible_set && - seg->body.toggle.info->tag->values->invisible) + if (seg->body.toggle.info->tag->priv->invisible_set && + seg->body.toggle.info->tag->priv->values->invisible) break; } @@ -2103,7 +2103,7 @@ tags_array_toggle_tag (GPtrArray *array, tags = (GtkTextTag**) array->pdata; - for (pos = 0; pos < array->len && tags[pos]->priority < tag->priority; pos++) ; + for (pos = 0; pos < array->len && tags[pos]->priv->priority < tag->priv->priority; pos++) ; if (pos < array->len && tags[pos] == tag) g_ptr_array_remove_index (array, pos); diff --git a/gtk/gtktextmark.h b/gtk/gtktextmark.h index 5bddf92739..8b714bc25e 100644 --- a/gtk/gtktextmark.h +++ b/gtk/gtktextmark.h @@ -56,8 +56,6 @@ G_BEGIN_DECLS -/* The GtkTextMark data type */ - typedef struct _GtkTextMark GtkTextMark; typedef struct _GtkTextMarkClass GtkTextMarkClass; @@ -72,7 +70,8 @@ struct _GtkTextMark { GObject parent_instance; - gpointer GSEAL (segment); + /*< private >*/ + gpointer segment; }; struct _GtkTextMarkClass @@ -86,14 +85,14 @@ struct _GtkTextMarkClass void (*_gtk_reserved4) (void); }; -GType gtk_text_mark_get_type (void) G_GNUC_CONST; - -void gtk_text_mark_set_visible (GtkTextMark *mark, - gboolean setting); -gboolean gtk_text_mark_get_visible (GtkTextMark *mark); +GType gtk_text_mark_get_type (void) G_GNUC_CONST; GtkTextMark *gtk_text_mark_new (const gchar *name, - gboolean left_gravity); + gboolean left_gravity); +void gtk_text_mark_set_visible (GtkTextMark *mark, + gboolean setting); +gboolean gtk_text_mark_get_visible (GtkTextMark *mark); + G_CONST_RETURN gchar* gtk_text_mark_get_name (GtkTextMark *mark); gboolean gtk_text_mark_get_deleted (GtkTextMark *mark); GtkTextBuffer* gtk_text_mark_get_buffer (GtkTextMark *mark); @@ -101,6 +100,4 @@ gboolean gtk_text_mark_get_left_gravity (GtkTextMark *mark); G_END_DECLS -#endif - - +#endif /* __GTK_TEXT_MARK_H__ */ diff --git a/gtk/gtktexttag.c b/gtk/gtktexttag.c index a77047c4be..1a653b3b53 100644 --- a/gtk/gtktexttag.c +++ b/gtk/gtktexttag.c @@ -47,17 +47,35 @@ * */ +/** + * SECTION:gtktexttag + * @Title: GtkTextTag + * @Short_description: A tag that can be applied to text in a GtkTextBuffer + * + * You may wish to begin by reading the text widget + * conceptual overview which gives an overview of all the objects and + * data types related to the text widget and how they work together. + * + * Tags should be in the #GtkTextTagTable for a given #GtkTextBuffer + * before using them with that buffer. + * + * gtk_text_buffer_create_tag() is the best way to create tags. + * See gtk3-demo for numerous examples. + */ + #include "config.h" -#include "gtkmain.h" + +#include +#include + +#include "gtkmainprivate.h" #include "gtktexttag.h" #include "gtktexttypes.h" #include "gtktexttagtable.h" #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkprivate.h" - -#include -#include +#include "gtktypebuiltins.h" enum { EVENT, @@ -665,12 +683,21 @@ gtk_text_tag_class_init (GtkTextTagClass *klass) G_TYPE_OBJECT, GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE, GTK_TYPE_TEXT_ITER); + + g_type_class_add_private (klass, sizeof (GtkTextTagPrivate)); } static void gtk_text_tag_init (GtkTextTag *text_tag) { - text_tag->values = gtk_text_attributes_new (); + GtkTextTagPrivate *priv; + + text_tag->priv = G_TYPE_INSTANCE_GET_PRIVATE (text_tag, + GTK_TYPE_TEXT_TAG, + GtkTextTagPrivate); + priv = text_tag->priv; + + priv->values = gtk_text_attributes_new (); } /** @@ -695,20 +722,19 @@ gtk_text_tag_new (const gchar *name) static void gtk_text_tag_finalize (GObject *object) { - GtkTextTag *text_tag; + GtkTextTag *text_tag = GTK_TEXT_TAG (object); + GtkTextTagPrivate *priv = text_tag->priv; - text_tag = GTK_TEXT_TAG (object); + if (priv->table) + gtk_text_tag_table_remove (priv->table, text_tag); - if (text_tag->table) - gtk_text_tag_table_remove (text_tag->table, text_tag); + g_assert (priv->table == NULL); - g_assert (text_tag->table == NULL); + gtk_text_attributes_unref (priv->values); + priv->values = NULL; - gtk_text_attributes_unref (text_tag->values); - text_tag->values = NULL; - - g_free (text_tag->name); - text_tag->name = NULL; + g_free (priv->name); + priv->name = NULL; G_OBJECT_CLASS (gtk_text_tag_parent_class)->finalize (object); } @@ -716,21 +742,23 @@ gtk_text_tag_finalize (GObject *object) static void set_bg_color (GtkTextTag *tag, GdkColor *color) { + GtkTextTagPrivate *priv = tag->priv; + if (color) { - if (!tag->bg_color_set) + if (!priv->bg_color_set) { - tag->bg_color_set = TRUE; + priv->bg_color_set = TRUE; g_object_notify (G_OBJECT (tag), "background-set"); } - - tag->values->appearance.bg_color = *color; + + priv->values->appearance.bg_color = *color; } else { - if (tag->bg_color_set) + if (priv->bg_color_set) { - tag->bg_color_set = FALSE; + priv->bg_color_set = FALSE; g_object_notify (G_OBJECT (tag), "background-set"); } } @@ -739,20 +767,22 @@ set_bg_color (GtkTextTag *tag, GdkColor *color) static void set_fg_color (GtkTextTag *tag, GdkColor *color) { + GtkTextTagPrivate *priv = tag->priv; + if (color) { - if (!tag->fg_color_set) + if (!priv->fg_color_set) { - tag->fg_color_set = TRUE; + priv->fg_color_set = TRUE; g_object_notify (G_OBJECT (tag), "foreground-set"); } - tag->values->appearance.fg_color = *color; + priv->values->appearance.fg_color = *color; } else { - if (tag->fg_color_set) + if (priv->fg_color_set) { - tag->fg_color_set = FALSE; + priv->fg_color_set = FALSE; g_object_notify (G_OBJECT (tag), "foreground-set"); } } @@ -761,28 +791,30 @@ set_fg_color (GtkTextTag *tag, GdkColor *color) static void set_pg_bg_color (GtkTextTag *tag, GdkColor *color) { + GtkTextTagPrivate *priv = tag->priv; + if (color) { - if (!tag->pg_bg_color_set) + if (!priv->pg_bg_color_set) { - tag->pg_bg_color_set = TRUE; + priv->pg_bg_color_set = TRUE; g_object_notify (G_OBJECT (tag), "paragraph-background-set"); } else - gdk_color_free (tag->values->pg_bg_color); + gdk_color_free (priv->values->pg_bg_color); - tag->values->pg_bg_color = gdk_color_copy (color); + priv->values->pg_bg_color = gdk_color_copy (color); } else { - if (tag->pg_bg_color_set) + if (priv->pg_bg_color_set) { - tag->pg_bg_color_set = FALSE; + priv->pg_bg_color_set = FALSE; g_object_notify (G_OBJECT (tag), "paragraph-background-set"); - gdk_color_free (tag->values->pg_bg_color); + gdk_color_free (priv->values->pg_bg_color); } - tag->values->pg_bg_color = NULL; + priv->values->pg_bg_color = NULL; } } @@ -888,6 +920,7 @@ static void set_font_description (GtkTextTag *text_tag, PangoFontDescription *font_desc) { + GtkTextTagPrivate *priv = text_tag->priv; GObject *object = G_OBJECT (text_tag); PangoFontDescription *new_font_desc; PangoFontMask old_mask, new_mask, changed_mask, set_changed_mask; @@ -897,8 +930,8 @@ set_font_description (GtkTextTag *text_tag, else new_font_desc = pango_font_description_new (); - if (text_tag->values->font) - old_mask = pango_font_description_get_set_fields (text_tag->values->font); + if (priv->values->font) + old_mask = pango_font_description_get_set_fields (priv->values->font); else old_mask = 0; @@ -907,10 +940,10 @@ set_font_description (GtkTextTag *text_tag, changed_mask = old_mask | new_mask; set_changed_mask = old_mask ^ new_mask; - if (text_tag->values->font) - pango_font_description_free (text_tag->values->font); - text_tag->values->font = new_font_desc; - + if (priv->values->font) + pango_font_description_free (priv->values->font); + priv->values->font = new_font_desc; + g_object_freeze_notify (object); g_object_notify (object, "font-desc"); @@ -940,8 +973,10 @@ set_font_description (GtkTextTag *text_tag, static void gtk_text_tag_ensure_font (GtkTextTag *text_tag) { - if (!text_tag->values->font) - text_tag->values->font = pango_font_description_new (); + GtkTextTagPrivate *priv = text_tag->priv; + + if (!priv->values->font) + priv->values->font = pango_font_description_new (); } static void @@ -950,16 +985,15 @@ gtk_text_tag_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GtkTextTag *text_tag; + GtkTextTag *text_tag = GTK_TEXT_TAG (object); + GtkTextTagPrivate *priv = text_tag->priv; gboolean size_changed = FALSE; - text_tag = GTK_TEXT_TAG (object); - switch (prop_id) { case PROP_NAME: - g_return_if_fail (text_tag->name == NULL); - text_tag->name = g_value_dup_string (value); + g_return_if_fail (priv->name == NULL); + priv->name = g_value_dup_string (value); break; case PROP_BACKGROUND: @@ -1049,44 +1083,44 @@ gtk_text_tag_set_property (GObject *object, PangoFontMask old_set_mask; gtk_text_tag_ensure_font (text_tag); - old_set_mask = pango_font_description_get_set_fields (text_tag->values->font); + old_set_mask = pango_font_description_get_set_fields (priv->values->font); switch (prop_id) { case PROP_FAMILY: - pango_font_description_set_family (text_tag->values->font, + pango_font_description_set_family (priv->values->font, g_value_get_string (value)); break; case PROP_STYLE: - pango_font_description_set_style (text_tag->values->font, + pango_font_description_set_style (priv->values->font, g_value_get_enum (value)); break; case PROP_VARIANT: - pango_font_description_set_variant (text_tag->values->font, + pango_font_description_set_variant (priv->values->font, g_value_get_enum (value)); break; case PROP_WEIGHT: - pango_font_description_set_weight (text_tag->values->font, + pango_font_description_set_weight (priv->values->font, g_value_get_int (value)); break; case PROP_STRETCH: - pango_font_description_set_stretch (text_tag->values->font, + pango_font_description_set_stretch (priv->values->font, g_value_get_enum (value)); break; case PROP_SIZE: - pango_font_description_set_size (text_tag->values->font, + pango_font_description_set_size (priv->values->font, g_value_get_int (value)); g_object_notify (object, "size-points"); break; case PROP_SIZE_POINTS: - pango_font_description_set_size (text_tag->values->font, + pango_font_description_set_size (priv->values->font, g_value_get_double (value) * PANGO_SCALE); g_object_notify (object, "size"); break; } size_changed = TRUE; - notify_set_changed (object, old_set_mask & pango_font_description_get_set_fields (text_tag->values->font)); + notify_set_changed (object, old_set_mask & pango_font_description_get_set_fields (priv->values->font)); g_object_notify (object, "font-desc"); g_object_notify (object, "font"); @@ -1094,117 +1128,117 @@ gtk_text_tag_set_property (GObject *object, } case PROP_SCALE: - text_tag->values->font_scale = g_value_get_double (value); - text_tag->scale_set = TRUE; + priv->values->font_scale = g_value_get_double (value); + priv->scale_set = TRUE; g_object_notify (object, "scale-set"); size_changed = TRUE; break; case PROP_PIXELS_ABOVE_LINES: - text_tag->pixels_above_lines_set = TRUE; - text_tag->values->pixels_above_lines = g_value_get_int (value); + priv->pixels_above_lines_set = TRUE; + priv->values->pixels_above_lines = g_value_get_int (value); g_object_notify (object, "pixels-above-lines-set"); size_changed = TRUE; break; case PROP_PIXELS_BELOW_LINES: - text_tag->pixels_below_lines_set = TRUE; - text_tag->values->pixels_below_lines = g_value_get_int (value); + priv->pixels_below_lines_set = TRUE; + priv->values->pixels_below_lines = g_value_get_int (value); g_object_notify (object, "pixels-below-lines-set"); size_changed = TRUE; break; case PROP_PIXELS_INSIDE_WRAP: - text_tag->pixels_inside_wrap_set = TRUE; - text_tag->values->pixels_inside_wrap = g_value_get_int (value); + priv->pixels_inside_wrap_set = TRUE; + priv->values->pixels_inside_wrap = g_value_get_int (value); g_object_notify (object, "pixels-inside-wrap-set"); size_changed = TRUE; break; case PROP_EDITABLE: - text_tag->editable_set = TRUE; - text_tag->values->editable = g_value_get_boolean (value); + priv->editable_set = TRUE; + priv->values->editable = g_value_get_boolean (value); g_object_notify (object, "editable-set"); break; case PROP_WRAP_MODE: - text_tag->wrap_mode_set = TRUE; - text_tag->values->wrap_mode = g_value_get_enum (value); + priv->wrap_mode_set = TRUE; + priv->values->wrap_mode = g_value_get_enum (value); g_object_notify (object, "wrap-mode-set"); size_changed = TRUE; break; case PROP_JUSTIFICATION: - text_tag->justification_set = TRUE; - text_tag->values->justification = g_value_get_enum (value); + priv->justification_set = TRUE; + priv->values->justification = g_value_get_enum (value); g_object_notify (object, "justification-set"); size_changed = TRUE; break; case PROP_DIRECTION: - text_tag->values->direction = g_value_get_enum (value); + priv->values->direction = g_value_get_enum (value); break; case PROP_LEFT_MARGIN: - text_tag->left_margin_set = TRUE; - text_tag->values->left_margin = g_value_get_int (value); + priv->left_margin_set = TRUE; + priv->values->left_margin = g_value_get_int (value); g_object_notify (object, "left-margin-set"); size_changed = TRUE; break; case PROP_INDENT: - text_tag->indent_set = TRUE; - text_tag->values->indent = g_value_get_int (value); + priv->indent_set = TRUE; + priv->values->indent = g_value_get_int (value); g_object_notify (object, "indent-set"); size_changed = TRUE; break; case PROP_STRIKETHROUGH: - text_tag->strikethrough_set = TRUE; - text_tag->values->appearance.strikethrough = g_value_get_boolean (value); + priv->strikethrough_set = TRUE; + priv->values->appearance.strikethrough = g_value_get_boolean (value); g_object_notify (object, "strikethrough-set"); break; case PROP_RIGHT_MARGIN: - text_tag->right_margin_set = TRUE; - text_tag->values->right_margin = g_value_get_int (value); + priv->right_margin_set = TRUE; + priv->values->right_margin = g_value_get_int (value); g_object_notify (object, "right-margin-set"); size_changed = TRUE; break; case PROP_UNDERLINE: - text_tag->underline_set = TRUE; - text_tag->values->appearance.underline = g_value_get_enum (value); + priv->underline_set = TRUE; + priv->values->appearance.underline = g_value_get_enum (value); g_object_notify (object, "underline-set"); break; case PROP_RISE: - text_tag->rise_set = TRUE; - text_tag->values->appearance.rise = g_value_get_int (value); + priv->rise_set = TRUE; + priv->values->appearance.rise = g_value_get_int (value); g_object_notify (object, "rise-set"); size_changed = TRUE; break; case PROP_BACKGROUND_FULL_HEIGHT: - text_tag->bg_full_height_set = TRUE; - text_tag->values->bg_full_height = g_value_get_boolean (value); + priv->bg_full_height_set = TRUE; + priv->values->bg_full_height = g_value_get_boolean (value); g_object_notify (object, "background-full-height-set"); break; case PROP_LANGUAGE: - text_tag->language_set = TRUE; - text_tag->values->language = pango_language_from_string (g_value_get_string (value)); + priv->language_set = TRUE; + priv->values->language = pango_language_from_string (g_value_get_string (value)); g_object_notify (object, "language-set"); break; case PROP_TABS: - text_tag->tabs_set = TRUE; + priv->tabs_set = TRUE; - if (text_tag->values->tabs) - pango_tab_array_free (text_tag->values->tabs); + if (priv->values->tabs) + pango_tab_array_free (priv->values->tabs); /* FIXME I'm not sure if this is a memleak or not */ - text_tag->values->tabs = + priv->values->tabs = pango_tab_array_copy (g_value_get_boxed (value)); g_object_notify (object, "tabs-set"); @@ -1213,8 +1247,8 @@ gtk_text_tag_set_property (GObject *object, break; case PROP_INVISIBLE: - text_tag->invisible_set = TRUE; - text_tag->values->invisible = g_value_get_boolean (value); + priv->invisible_set = TRUE; + priv->values->invisible = g_value_get_boolean (value); g_object_notify (object, "invisible-set"); size_changed = TRUE; break; @@ -1243,7 +1277,7 @@ gtk_text_tag_set_property (GObject *object, break; case PROP_ACCUMULATIVE_MARGIN: - text_tag->accumulative_margin = g_value_get_boolean (value); + priv->accumulative_margin = g_value_get_boolean (value); g_object_notify (object, "accumulative-margin"); size_changed = TRUE; break; @@ -1251,11 +1285,11 @@ gtk_text_tag_set_property (GObject *object, /* Whether the value should be used... */ case PROP_BACKGROUND_SET: - text_tag->bg_color_set = g_value_get_boolean (value); + priv->bg_color_set = g_value_get_boolean (value); break; case PROP_FOREGROUND_SET: - text_tag->fg_color_set = g_value_get_boolean (value); + priv->fg_color_set = g_value_get_boolean (value); break; case PROP_FAMILY_SET: @@ -1266,8 +1300,8 @@ gtk_text_tag_set_property (GObject *object, case PROP_SIZE_SET: if (!g_value_get_boolean (value)) { - if (text_tag->values->font) - pango_font_description_unset_fields (text_tag->values->font, + if (priv->values->font) + pango_font_description_unset_fields (priv->values->font, get_property_font_set_mask (prop_id)); } else @@ -1275,95 +1309,95 @@ gtk_text_tag_set_property (GObject *object, PangoFontMask changed_mask; gtk_text_tag_ensure_font (text_tag); - changed_mask = set_font_desc_fields (text_tag->values->font, + changed_mask = set_font_desc_fields (priv->values->font, get_property_font_set_mask (prop_id)); notify_fields_changed (G_OBJECT (text_tag), changed_mask); } break; case PROP_SCALE_SET: - text_tag->scale_set = g_value_get_boolean (value); + priv->scale_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_PIXELS_ABOVE_LINES_SET: - text_tag->pixels_above_lines_set = g_value_get_boolean (value); + priv->pixels_above_lines_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_PIXELS_BELOW_LINES_SET: - text_tag->pixels_below_lines_set = g_value_get_boolean (value); + priv->pixels_below_lines_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_PIXELS_INSIDE_WRAP_SET: - text_tag->pixels_inside_wrap_set = g_value_get_boolean (value); + priv->pixels_inside_wrap_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_EDITABLE_SET: - text_tag->editable_set = g_value_get_boolean (value); + priv->editable_set = g_value_get_boolean (value); break; case PROP_WRAP_MODE_SET: - text_tag->wrap_mode_set = g_value_get_boolean (value); + priv->wrap_mode_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_JUSTIFICATION_SET: - text_tag->justification_set = g_value_get_boolean (value); + priv->justification_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_LEFT_MARGIN_SET: - text_tag->left_margin_set = g_value_get_boolean (value); + priv->left_margin_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_INDENT_SET: - text_tag->indent_set = g_value_get_boolean (value); + priv->indent_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_STRIKETHROUGH_SET: - text_tag->strikethrough_set = g_value_get_boolean (value); + priv->strikethrough_set = g_value_get_boolean (value); break; case PROP_RIGHT_MARGIN_SET: - text_tag->right_margin_set = g_value_get_boolean (value); + priv->right_margin_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_UNDERLINE_SET: - text_tag->underline_set = g_value_get_boolean (value); + priv->underline_set = g_value_get_boolean (value); break; case PROP_RISE_SET: - text_tag->rise_set = g_value_get_boolean (value); + priv->rise_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_BACKGROUND_FULL_HEIGHT_SET: - text_tag->bg_full_height_set = g_value_get_boolean (value); + priv->bg_full_height_set = g_value_get_boolean (value); break; case PROP_LANGUAGE_SET: - text_tag->language_set = g_value_get_boolean (value); + priv->language_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_TABS_SET: - text_tag->tabs_set = g_value_get_boolean (value); + priv->tabs_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_INVISIBLE_SET: - text_tag->invisible_set = g_value_get_boolean (value); + priv->invisible_set = g_value_get_boolean (value); size_changed = TRUE; break; case PROP_PARAGRAPH_BACKGROUND_SET: - text_tag->pg_bg_color_set = g_value_get_boolean (value); + priv->pg_bg_color_set = g_value_get_boolean (value); break; default: @@ -1381,8 +1415,8 @@ gtk_text_tag_set_property (GObject *object, * signal here, but the two objects are already tightly bound. */ - if (text_tag->table) - g_signal_emit_by_name (text_tag->table, + if (priv->table) + g_signal_emit_by_name (priv->table, "tag_changed", text_tag, size_changed); } @@ -1393,22 +1427,21 @@ gtk_text_tag_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GtkTextTag *tag; - - tag = GTK_TEXT_TAG (object); + GtkTextTag *tag = GTK_TEXT_TAG (object); + GtkTextTagPrivate *priv = tag->priv; switch (prop_id) { case PROP_NAME: - g_value_set_string (value, tag->name); + g_value_set_string (value, priv->name); break; case PROP_BACKGROUND_GDK: - g_value_set_boxed (value, &tag->values->appearance.bg_color); + g_value_set_boxed (value, &priv->values->appearance.bg_color); break; case PROP_FOREGROUND_GDK: - g_value_set_boxed (value, &tag->values->appearance.fg_color); + g_value_set_boxed (value, &priv->values->appearance.fg_color); break; case PROP_FONT: @@ -1416,15 +1449,15 @@ gtk_text_tag_get_property (GObject *object, gchar *str; gtk_text_tag_ensure_font (tag); - - str = pango_font_description_to_string (tag->values->font); + + str = pango_font_description_to_string (priv->values->font); g_value_take_string (value, str); } break; case PROP_FONT_DESC: gtk_text_tag_ensure_font (tag); - g_value_set_boxed (value, tag->values->font); + g_value_set_boxed (value, priv->values->font); break; case PROP_FAMILY: @@ -1438,122 +1471,122 @@ gtk_text_tag_get_property (GObject *object, switch (prop_id) { case PROP_FAMILY: - g_value_set_string (value, pango_font_description_get_family (tag->values->font)); + g_value_set_string (value, pango_font_description_get_family (priv->values->font)); break; case PROP_STYLE: - g_value_set_enum (value, pango_font_description_get_style (tag->values->font)); + g_value_set_enum (value, pango_font_description_get_style (priv->values->font)); break; case PROP_VARIANT: - g_value_set_enum (value, pango_font_description_get_variant (tag->values->font)); + g_value_set_enum (value, pango_font_description_get_variant (priv->values->font)); break; case PROP_WEIGHT: - g_value_set_int (value, pango_font_description_get_weight (tag->values->font)); + g_value_set_int (value, pango_font_description_get_weight (priv->values->font)); break; case PROP_STRETCH: - g_value_set_enum (value, pango_font_description_get_stretch (tag->values->font)); + g_value_set_enum (value, pango_font_description_get_stretch (priv->values->font)); break; case PROP_SIZE: - g_value_set_int (value, pango_font_description_get_size (tag->values->font)); + g_value_set_int (value, pango_font_description_get_size (priv->values->font)); break; case PROP_SIZE_POINTS: - g_value_set_double (value, ((double)pango_font_description_get_size (tag->values->font)) / (double)PANGO_SCALE); + g_value_set_double (value, ((double)pango_font_description_get_size (priv->values->font)) / (double)PANGO_SCALE); break; } break; case PROP_SCALE: - g_value_set_double (value, tag->values->font_scale); + g_value_set_double (value, priv->values->font_scale); break; case PROP_PIXELS_ABOVE_LINES: - g_value_set_int (value, tag->values->pixels_above_lines); + g_value_set_int (value, priv->values->pixels_above_lines); break; case PROP_PIXELS_BELOW_LINES: - g_value_set_int (value, tag->values->pixels_below_lines); + g_value_set_int (value, priv->values->pixels_below_lines); break; case PROP_PIXELS_INSIDE_WRAP: - g_value_set_int (value, tag->values->pixels_inside_wrap); + g_value_set_int (value, priv->values->pixels_inside_wrap); break; case PROP_EDITABLE: - g_value_set_boolean (value, tag->values->editable); + g_value_set_boolean (value, priv->values->editable); break; case PROP_WRAP_MODE: - g_value_set_enum (value, tag->values->wrap_mode); + g_value_set_enum (value, priv->values->wrap_mode); break; case PROP_JUSTIFICATION: - g_value_set_enum (value, tag->values->justification); + g_value_set_enum (value, priv->values->justification); break; case PROP_DIRECTION: - g_value_set_enum (value, tag->values->direction); + g_value_set_enum (value, priv->values->direction); break; case PROP_LEFT_MARGIN: - g_value_set_int (value, tag->values->left_margin); + g_value_set_int (value, priv->values->left_margin); break; case PROP_INDENT: - g_value_set_int (value, tag->values->indent); + g_value_set_int (value, priv->values->indent); break; case PROP_STRIKETHROUGH: - g_value_set_boolean (value, tag->values->appearance.strikethrough); + g_value_set_boolean (value, priv->values->appearance.strikethrough); break; case PROP_RIGHT_MARGIN: - g_value_set_int (value, tag->values->right_margin); + g_value_set_int (value, priv->values->right_margin); break; case PROP_UNDERLINE: - g_value_set_enum (value, tag->values->appearance.underline); + g_value_set_enum (value, priv->values->appearance.underline); break; case PROP_RISE: - g_value_set_int (value, tag->values->appearance.rise); + g_value_set_int (value, priv->values->appearance.rise); break; case PROP_BACKGROUND_FULL_HEIGHT: - g_value_set_boolean (value, tag->values->bg_full_height); + g_value_set_boolean (value, priv->values->bg_full_height); break; case PROP_LANGUAGE: - g_value_set_string (value, pango_language_to_string (tag->values->language)); + g_value_set_string (value, pango_language_to_string (priv->values->language)); break; case PROP_TABS: - if (tag->values->tabs) - g_value_set_boxed (value, tag->values->tabs); + if (priv->values->tabs) + g_value_set_boxed (value, priv->values->tabs); break; case PROP_INVISIBLE: - g_value_set_boolean (value, tag->values->invisible); + g_value_set_boolean (value, priv->values->invisible); break; case PROP_PARAGRAPH_BACKGROUND_GDK: - g_value_set_boxed (value, tag->values->pg_bg_color); + g_value_set_boxed (value, priv->values->pg_bg_color); break; case PROP_ACCUMULATIVE_MARGIN: - g_value_set_boolean (value, tag->accumulative_margin); + g_value_set_boolean (value, priv->accumulative_margin); break; case PROP_BACKGROUND_SET: - g_value_set_boolean (value, tag->bg_color_set); + g_value_set_boolean (value, priv->bg_color_set); break; case PROP_FOREGROUND_SET: - g_value_set_boolean (value, tag->fg_color_set); + g_value_set_boolean (value, priv->fg_color_set); break; case PROP_FAMILY_SET: @@ -1563,7 +1596,7 @@ gtk_text_tag_get_property (GObject *object, case PROP_STRETCH_SET: case PROP_SIZE_SET: { - PangoFontMask set_mask = tag->values->font ? pango_font_description_get_set_fields (tag->values->font) : 0; + PangoFontMask set_mask = priv->values->font ? pango_font_description_get_set_fields (priv->values->font) : 0; PangoFontMask test_mask = get_property_font_set_mask (prop_id); g_value_set_boolean (value, (set_mask & test_mask) != 0); @@ -1571,75 +1604,75 @@ gtk_text_tag_get_property (GObject *object, } case PROP_SCALE_SET: - g_value_set_boolean (value, tag->scale_set); + g_value_set_boolean (value, priv->scale_set); break; case PROP_PIXELS_ABOVE_LINES_SET: - g_value_set_boolean (value, tag->pixels_above_lines_set); + g_value_set_boolean (value, priv->pixels_above_lines_set); break; case PROP_PIXELS_BELOW_LINES_SET: - g_value_set_boolean (value, tag->pixels_below_lines_set); + g_value_set_boolean (value, priv->pixels_below_lines_set); break; case PROP_PIXELS_INSIDE_WRAP_SET: - g_value_set_boolean (value, tag->pixels_inside_wrap_set); + g_value_set_boolean (value, priv->pixels_inside_wrap_set); break; case PROP_EDITABLE_SET: - g_value_set_boolean (value, tag->editable_set); + g_value_set_boolean (value, priv->editable_set); break; case PROP_WRAP_MODE_SET: - g_value_set_boolean (value, tag->wrap_mode_set); + g_value_set_boolean (value, priv->wrap_mode_set); break; case PROP_JUSTIFICATION_SET: - g_value_set_boolean (value, tag->justification_set); + g_value_set_boolean (value, priv->justification_set); break; case PROP_LEFT_MARGIN_SET: - g_value_set_boolean (value, tag->left_margin_set); + g_value_set_boolean (value, priv->left_margin_set); break; case PROP_INDENT_SET: - g_value_set_boolean (value, tag->indent_set); + g_value_set_boolean (value, priv->indent_set); break; case PROP_STRIKETHROUGH_SET: - g_value_set_boolean (value, tag->strikethrough_set); + g_value_set_boolean (value, priv->strikethrough_set); break; case PROP_RIGHT_MARGIN_SET: - g_value_set_boolean (value, tag->right_margin_set); + g_value_set_boolean (value, priv->right_margin_set); break; case PROP_UNDERLINE_SET: - g_value_set_boolean (value, tag->underline_set); + g_value_set_boolean (value, priv->underline_set); break; case PROP_RISE_SET: - g_value_set_boolean (value, tag->rise_set); + g_value_set_boolean (value, priv->rise_set); break; case PROP_BACKGROUND_FULL_HEIGHT_SET: - g_value_set_boolean (value, tag->bg_full_height_set); + g_value_set_boolean (value, priv->bg_full_height_set); break; case PROP_LANGUAGE_SET: - g_value_set_boolean (value, tag->language_set); + g_value_set_boolean (value, priv->language_set); break; case PROP_TABS_SET: - g_value_set_boolean (value, tag->tabs_set); + g_value_set_boolean (value, priv->tabs_set); break; case PROP_INVISIBLE_SET: - g_value_set_boolean (value, tag->invisible_set); + g_value_set_boolean (value, priv->invisible_set); break; case PROP_PARAGRAPH_BACKGROUND_SET: - g_value_set_boolean (value, tag->pg_bg_color_set); + g_value_set_boolean (value, priv->pg_bg_color_set); break; case PROP_BACKGROUND: @@ -1665,10 +1698,11 @@ typedef struct { static void delta_priority_foreach (GtkTextTag *tag, gpointer user_data) { + GtkTextTagPrivate *priv = tag->priv; DeltaData *dd = user_data; - if (tag->priority >= dd->low && tag->priority <= dd->high) - tag->priority += dd->delta; + if (priv->priority >= dd->low && priv->priority <= dd->high) + priv->priority += dd->delta; } /** @@ -1684,7 +1718,7 @@ gtk_text_tag_get_priority (GtkTextTag *tag) { g_return_val_if_fail (GTK_IS_TEXT_TAG (tag), 0); - return tag->priority; + return tag->priv->priority; } /** @@ -1708,34 +1742,38 @@ void gtk_text_tag_set_priority (GtkTextTag *tag, gint priority) { + GtkTextTagPrivate *priv; DeltaData dd; g_return_if_fail (GTK_IS_TEXT_TAG (tag)); - g_return_if_fail (tag->table != NULL); - g_return_if_fail (priority >= 0); - g_return_if_fail (priority < gtk_text_tag_table_get_size (tag->table)); - if (priority == tag->priority) + priv = tag->priv; + + g_return_if_fail (priv->table != NULL); + g_return_if_fail (priority >= 0); + g_return_if_fail (priority < gtk_text_tag_table_get_size (priv->table)); + + if (priority == priv->priority) return; - if (priority < tag->priority) + if (priority < priv->priority) { dd.low = priority; - dd.high = tag->priority - 1; + dd.high = priv->priority - 1; dd.delta = 1; } else { - dd.low = tag->priority + 1; + dd.low = priv->priority + 1; dd.high = priority; dd.delta = -1; } - gtk_text_tag_table_foreach (tag->table, + gtk_text_tag_table_foreach (priv->table, delta_priority_foreach, &dd); - tag->priority = priority; + priv->priority = priority; } /** @@ -1779,7 +1817,7 @@ tag_sort_func (gconstpointer first, gconstpointer second) tag1 = * (GtkTextTag **) first; tag2 = * (GtkTextTag **) second; - return tag1->priority - tag2->priority; + return tag1->priv->priority - tag2->priv->priority; } void @@ -1801,10 +1839,10 @@ _gtk_text_tag_array_sort (GtkTextTag** tag_array_p, for (i = len-1; i > 0; i--, iter++) { maxPtrPtr = tag = iter; - prio = tag[0]->priority; + prio = tag[0]->priv->priority; for (j = i, tag++; j > 0; j--, tag++) { - if (tag[0]->priority < prio) { - prio = tag[0]->priority; + if (tag[0]->priv->priority < prio) { + prio = tag[0]->priv->priority; maxPtrPtr = tag; } } @@ -1832,298 +1870,3 @@ _gtk_text_tag_array_sort (GtkTextTag** tag_array_p, #endif } -/* - * Attributes - */ - -/** - * gtk_text_attributes_new: - * - * Creates a #GtkTextAttributes, which describes - * a set of properties on some text. - * - * Return value: a new #GtkTextAttributes - **/ -GtkTextAttributes* -gtk_text_attributes_new (void) -{ - GtkTextAttributes *values; - - values = g_new0 (GtkTextAttributes, 1); - - /* 0 is a valid value for most of the struct */ - - values->refcount = 1; - - values->language = gtk_get_default_language (); - - values->font_scale = 1.0; - - values->editable = TRUE; - - return values; -} - -/** - * gtk_text_attributes_copy: - * @src: a #GtkTextAttributes to be copied - * - * Copies @src and returns a new #GtkTextAttributes. - * - * Return value: a copy of @src - **/ -GtkTextAttributes* -gtk_text_attributes_copy (GtkTextAttributes *src) -{ - GtkTextAttributes *dest; - - dest = gtk_text_attributes_new (); - gtk_text_attributes_copy_values (src, dest); - - return dest; -} - -G_DEFINE_BOXED_TYPE (GtkTextAttributes, gtk_text_attributes, - gtk_text_attributes_ref, - gtk_text_attributes_unref) - -/** - * gtk_text_attributes_copy_values: - * @src: a #GtkTextAttributes - * @dest: another #GtkTextAttributes - * - * Copies the values from @src to @dest so that @dest has the same values - * as @src. Frees existing values in @dest. - **/ -void -gtk_text_attributes_copy_values (GtkTextAttributes *src, - GtkTextAttributes *dest) -{ - guint orig_refcount; - - if (src == dest) - return; - - /* Remove refs */ - - if (dest->font) - pango_font_description_free (dest->font); - - /* Copy */ - orig_refcount = dest->refcount; - - *dest = *src; - - if (src->tabs) - dest->tabs = pango_tab_array_copy (src->tabs); - - dest->language = src->language; - - if (dest->font) - dest->font = pango_font_description_copy (src->font); - - if (src->pg_bg_color) - dest->pg_bg_color = gdk_color_copy (src->pg_bg_color); - - dest->refcount = orig_refcount; -} - -/** - * gtk_text_attributes_ref: - * @values: a #GtkTextAttributes - * - * Increments the reference count on @values. - * - * Returns: the #GtkTextAttributes that were passed in - **/ -GtkTextAttributes * -gtk_text_attributes_ref (GtkTextAttributes *values) -{ - g_return_val_if_fail (values != NULL, NULL); - - values->refcount += 1; - - return values; -} - -/** - * gtk_text_attributes_unref: - * @values: a #GtkTextAttributes - * - * Decrements the reference count on @values, freeing the structure - * if the reference count reaches 0. - **/ -void -gtk_text_attributes_unref (GtkTextAttributes *values) -{ - g_return_if_fail (values != NULL); - g_return_if_fail (values->refcount > 0); - - values->refcount -= 1; - - if (values->refcount == 0) - { - if (values->tabs) - pango_tab_array_free (values->tabs); - - if (values->font) - pango_font_description_free (values->font); - - if (values->pg_bg_color) - gdk_color_free (values->pg_bg_color); - - g_free (values); - } -} - -void -_gtk_text_attributes_fill_from_tags (GtkTextAttributes *dest, - GtkTextTag** tags, - guint n_tags) -{ - guint n = 0; - - guint left_margin_accumulative = 0; - guint right_margin_accumulative = 0; - - while (n < n_tags) - { - GtkTextTag *tag = tags[n]; - GtkTextAttributes *vals = tag->values; - - g_assert (tag->table != NULL); - if (n > 0) - g_assert (tags[n]->priority > tags[n-1]->priority); - - if (tag->bg_color_set) - { - dest->appearance.bg_color = vals->appearance.bg_color; - - dest->appearance.draw_bg = TRUE; - } - if (tag->fg_color_set) - dest->appearance.fg_color = vals->appearance.fg_color; - - if (tag->pg_bg_color_set) - { - dest->pg_bg_color = gdk_color_copy (vals->pg_bg_color); - } - - if (vals->font) - { - if (dest->font) - pango_font_description_merge (dest->font, vals->font, TRUE); - else - dest->font = pango_font_description_copy (vals->font); - } - - /* multiply all the scales together to get a composite */ - if (tag->scale_set) - dest->font_scale *= vals->font_scale; - - if (tag->justification_set) - dest->justification = vals->justification; - - if (vals->direction != GTK_TEXT_DIR_NONE) - dest->direction = vals->direction; - - if (tag->left_margin_set) - { - if (tag->accumulative_margin) - left_margin_accumulative += vals->left_margin; - else - dest->left_margin = vals->left_margin; - } - - if (tag->indent_set) - dest->indent = vals->indent; - - if (tag->rise_set) - dest->appearance.rise = vals->appearance.rise; - - if (tag->right_margin_set) - { - if (tag->accumulative_margin) - right_margin_accumulative += vals->right_margin; - else - dest->right_margin = vals->right_margin; - } - - if (tag->pixels_above_lines_set) - dest->pixels_above_lines = vals->pixels_above_lines; - - if (tag->pixels_below_lines_set) - dest->pixels_below_lines = vals->pixels_below_lines; - - if (tag->pixels_inside_wrap_set) - dest->pixels_inside_wrap = vals->pixels_inside_wrap; - - if (tag->tabs_set) - { - if (dest->tabs) - pango_tab_array_free (dest->tabs); - dest->tabs = pango_tab_array_copy (vals->tabs); - } - - if (tag->wrap_mode_set) - dest->wrap_mode = vals->wrap_mode; - - if (tag->underline_set) - dest->appearance.underline = vals->appearance.underline; - - if (tag->strikethrough_set) - dest->appearance.strikethrough = vals->appearance.strikethrough; - - if (tag->invisible_set) - dest->invisible = vals->invisible; - - if (tag->editable_set) - dest->editable = vals->editable; - - if (tag->bg_full_height_set) - dest->bg_full_height = vals->bg_full_height; - - if (tag->language_set) - dest->language = vals->language; - - ++n; - } - - dest->left_margin += left_margin_accumulative; - dest->right_margin += right_margin_accumulative; -} - -gboolean -_gtk_text_tag_affects_size (GtkTextTag *tag) -{ - g_return_val_if_fail (GTK_IS_TEXT_TAG (tag), FALSE); - - return - (tag->values->font && pango_font_description_get_set_fields (tag->values->font) != 0) || - tag->scale_set || - tag->justification_set || - tag->left_margin_set || - tag->indent_set || - tag->rise_set || - tag->right_margin_set || - tag->pixels_above_lines_set || - tag->pixels_below_lines_set || - tag->pixels_inside_wrap_set || - tag->tabs_set || - tag->underline_set || - tag->wrap_mode_set || - tag->invisible_set; -} - -gboolean -_gtk_text_tag_affects_nonsize_appearance (GtkTextTag *tag) -{ - g_return_val_if_fail (GTK_IS_TEXT_TAG (tag), FALSE); - - return - tag->bg_color_set || - tag->fg_color_set || - tag->strikethrough_set || - tag->bg_full_height_set || - tag->pg_bg_color_set; -} diff --git a/gtk/gtktexttag.h b/gtk/gtktexttag.h index 20d631af9e..1286b37dd9 100644 --- a/gtk/gtktexttag.h +++ b/gtk/gtktexttag.h @@ -64,8 +64,6 @@ G_BEGIN_DECLS typedef struct _GtkTextIter GtkTextIter; typedef struct _GtkTextTagTable GtkTextTagTable; -typedef struct _GtkTextAttributes GtkTextAttributes; - #define GTK_TYPE_TEXT_TAG (gtk_text_tag_get_type ()) #define GTK_TEXT_TAG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_TAG, GtkTextTag)) #define GTK_TEXT_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_TAG, GtkTextTagClass)) @@ -73,63 +71,15 @@ typedef struct _GtkTextAttributes GtkTextAttributes; #define GTK_IS_TEXT_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_TAG)) #define GTK_TEXT_TAG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_TAG, GtkTextTagClass)) -#define GTK_TYPE_TEXT_ATTRIBUTES (gtk_text_attributes_get_type ()) - -typedef struct _GtkTextTag GtkTextTag; -typedef struct _GtkTextTagClass GtkTextTagClass; +typedef struct _GtkTextTag GtkTextTag; +typedef struct _GtkTextTagPrivate GtkTextTagPrivate; +typedef struct _GtkTextTagClass GtkTextTagClass; struct _GtkTextTag { GObject parent_instance; - GtkTextTagTable *GSEAL (table); - - char *GSEAL (name); /* Name of this tag. This field is actually - * a pointer to the key from the entry in - * tkxt->tagTable, so it needn't be freed - * explicitly. */ - int GSEAL (priority); /* Priority of this tag within widget. 0 - * means lowest priority. Exactly one tag - * has each integer value between 0 and - * numTags-1. */ - /* - * Information for displaying text with this tag. The information - * belows acts as an override on information specified by lower-priority - * tags. If no value is specified, then the next-lower-priority tag - * on the text determins the value. The text widget itself provides - * defaults if no tag specifies an override. - */ - - GtkTextAttributes *GSEAL (values); - - /* Flags for whether a given value is set; if a value is unset, then - * this tag does not affect it. - */ - guint GSEAL (bg_color_set) : 1; - guint GSEAL (fg_color_set) : 1; - guint GSEAL (scale_set) : 1; - guint GSEAL (justification_set) : 1; - guint GSEAL (left_margin_set) : 1; - guint GSEAL (indent_set) : 1; - guint GSEAL (rise_set) : 1; - guint GSEAL (strikethrough_set) : 1; - guint GSEAL (right_margin_set) : 1; - guint GSEAL (pixels_above_lines_set) : 1; - guint GSEAL (pixels_below_lines_set) : 1; - guint GSEAL (pixels_inside_wrap_set) : 1; - guint GSEAL (tabs_set) : 1; - guint GSEAL (underline_set) : 1; - guint GSEAL (wrap_mode_set) : 1; - guint GSEAL (bg_full_height_set) : 1; - guint GSEAL (invisible_set) : 1; - guint GSEAL (editable_set) : 1; - guint GSEAL (language_set) : 1; - guint GSEAL (pg_bg_color_set) : 1; - - /* Whether these margins accumulate or override */ - guint GSEAL (accumulative_margin) : 1; - - guint GSEAL (pad1) : 1; + GtkTextTagPrivate *priv; }; struct _GtkTextTagClass @@ -158,120 +108,6 @@ gboolean gtk_text_tag_event (GtkTextTag *tag, GdkEvent *event, const GtkTextIter *iter); -/* - * Style object created by folding a set of tags together - */ - -typedef struct _GtkTextAppearance GtkTextAppearance; - -struct _GtkTextAppearance -{ - /*< public >*/ - GdkColor bg_color; - GdkColor fg_color; - - /* super/subscript rise, can be negative */ - gint rise; - - /*< private >*/ - /* I'm not sure this can really be used without breaking some things - * an app might do :-/ - */ - gpointer padding1; - - /*< public >*/ - guint underline : 4; /* PangoUnderline */ - guint strikethrough : 1; - - /* Whether to use background-related values; this is irrelevant for - * the values struct when in a tag, but is used for the composite - * values struct; it's true if any of the tags being composited - * had background stuff set. - */ - guint draw_bg : 1; - - /* These are only used when we are actually laying out and rendering - * a paragraph; not when a GtkTextAppearance is part of a - * GtkTextAttributes. - */ - guint inside_selection : 1; - guint is_text : 1; - - /*< private >*/ - guint pad1 : 1; - guint pad2 : 1; - guint pad3 : 1; - guint pad4 : 1; -}; - -struct _GtkTextAttributes -{ - /*< private >*/ - guint refcount; - - /*< public >*/ - GtkTextAppearance appearance; - - GtkJustification justification; - GtkTextDirection direction; - - /* Individual chunks of this can be set/unset as a group */ - PangoFontDescription *font; - - gdouble font_scale; - - gint left_margin; - - gint indent; - - gint right_margin; - - gint pixels_above_lines; - - gint pixels_below_lines; - - gint pixels_inside_wrap; - - PangoTabArray *tabs; - - GtkWrapMode wrap_mode; /* How to handle wrap-around for this tag. - * Must be GTK_WRAPMODE_CHAR, - * GTK_WRAPMODE_NONE, GTK_WRAPMODE_WORD - */ - - PangoLanguage *language; - - /*< private >*/ - GdkColor *pg_bg_color; - - /*< public >*/ - /* hide the text */ - guint invisible : 1; - - /* Background is fit to full line height rather than - * baseline +/- ascent/descent (font height) - */ - guint bg_full_height : 1; - - /* can edit this text */ - guint editable : 1; - - /*< private >*/ - guint pad1 : 1; - guint pad2 : 1; - guint pad3 : 1; - guint pad4 : 1; -}; - -GtkTextAttributes* gtk_text_attributes_new (void); -GtkTextAttributes* gtk_text_attributes_copy (GtkTextAttributes *src); -void gtk_text_attributes_copy_values (GtkTextAttributes *src, - GtkTextAttributes *dest); -void gtk_text_attributes_unref (GtkTextAttributes *values); -GtkTextAttributes *gtk_text_attributes_ref (GtkTextAttributes *values); - -GType gtk_text_attributes_get_type (void) G_GNUC_CONST; - G_END_DECLS diff --git a/gtk/gtktexttagprivate.h b/gtk/gtktexttagprivate.h index afc3a9b345..2eb1f6bc31 100644 --- a/gtk/gtktexttagprivate.h +++ b/gtk/gtktexttagprivate.h @@ -31,6 +31,60 @@ typedef struct _GtkTextBTreeNode GtkTextBTreeNode; + +struct _GtkTextTagPrivate +{ + GtkTextTagTable *table; + + char *name; /* Name of this tag. This field is actually + * a pointer to the key from the entry in + * tkxt->tagTable, so it needn't be freed + * explicitly. */ + int priority; /* Priority of this tag within widget. 0 + * means lowest priority. Exactly one tag + * has each integer value between 0 and + * numTags-1. */ + /* + * Information for displaying text with this tag. The information + * belows acts as an override on information specified by lower-priority + * tags. If no value is specified, then the next-lower-priority tag + * on the text determins the value. The text widget itself provides + * defaults if no tag specifies an override. + */ + + GtkTextAttributes *values; + + /* Flags for whether a given value is set; if a value is unset, then + * this tag does not affect it. + */ + guint bg_color_set : 1; + guint fg_color_set : 1; + guint scale_set : 1; + guint justification_set : 1; + guint left_margin_set : 1; + guint indent_set : 1; + guint rise_set : 1; + guint strikethrough_set : 1; + guint right_margin_set : 1; + guint pixels_above_lines_set : 1; + guint pixels_below_lines_set : 1; + guint pixels_inside_wrap_set : 1; + guint tabs_set : 1; + guint underline_set : 1; + guint wrap_mode_set : 1; + guint bg_full_height_set : 1; + guint invisible_set : 1; + guint editable_set : 1; + guint language_set : 1; + guint pg_bg_color_set : 1; + + /* Whether these margins accumulate or override */ + guint accumulative_margin : 1; + + guint pad1 : 1; +}; + + /* values should already have desired defaults; this function will override * the defaults with settings in the given tags, which should be sorted in * ascending order of priority diff --git a/gtk/gtktexttagtable.c b/gtk/gtktexttagtable.c index 0bded236a1..3420f4dd1c 100644 --- a/gtk/gtktexttagtable.c +++ b/gtk/gtktexttagtable.c @@ -25,7 +25,11 @@ */ #include "config.h" + #include "gtktexttagtable.h" + +#include "gtkbuildable.h" +#include "gtktexttagprivate.h" #include "gtkmarshalers.h" #include "gtktextbuffer.h" /* just for the lame notify_will_remove_tag hack */ #include "gtkintl.h" @@ -39,11 +43,30 @@ * @Title: GtkTextTagTable * * You may wish to begin by reading the text widget - * conceptual overview which gives an overview of all the objects and data - * types related to the text widget and how they work together. + * conceptual overview which gives an overview of all the objects and + * data types related to the text widget and how they work together. + * + * + * GtkTextTagTables as GtkBuildable + * + * The GtkTextTagTable implementation of the GtkBuildable interface + * supports adding tags by specifying "tag" as the "type" + * attribute of a <child> element. + * + * + * A UI definition fragment specifying tags + * + * + * + * + * + * ]]> + * + * + * */ - struct _GtkTextTagTablePrivate { GHashTable *hash; @@ -75,9 +98,17 @@ static void gtk_text_tag_table_get_property (GObject *object, GValue *value, GParamSpec *pspec); +static void gtk_text_tag_table_buildable_interface_init (GtkBuildableIface *iface); +static void gtk_text_tag_table_buildable_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *type); + static guint signals[LAST_SIGNAL] = { 0 }; -G_DEFINE_TYPE (GtkTextTagTable, gtk_text_tag_table, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_CODE (GtkTextTagTable, gtk_text_tag_table, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, + gtk_text_tag_table_buildable_interface_init)) static void gtk_text_tag_table_class_init (GtkTextTagTableClass *klass) @@ -176,7 +207,7 @@ gtk_text_tag_table_new (void) static void foreach_unref (GtkTextTag *tag, gpointer data) { - GtkTextTagTable *table = GTK_TEXT_TAG_TABLE (tag->table); + GtkTextTagTable *table = GTK_TEXT_TAG_TABLE (tag->priv->table); GtkTextTagTablePrivate *priv = table->priv; GSList *tmp; @@ -193,7 +224,7 @@ foreach_unref (GtkTextTag *tag, gpointer data) tmp = tmp->next; } - tag->table = NULL; + tag->priv->table = NULL; g_object_unref (tag); } @@ -243,6 +274,23 @@ gtk_text_tag_table_get_property (GObject *object, } } +static void +gtk_text_tag_table_buildable_interface_init (GtkBuildableIface *iface) +{ + iface->add_child = gtk_text_tag_table_buildable_add_child; +} + +static void +gtk_text_tag_table_buildable_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *type) +{ + if (type && strcmp (type, "tag") == 0) + gtk_text_tag_table_add (GTK_TEXT_TAG_TABLE (buildable), + GTK_TEXT_TAG (child)); +} + /** * gtk_text_tag_table_add: * @table: a #GtkTextTagTable @@ -263,35 +311,35 @@ gtk_text_tag_table_add (GtkTextTagTable *table, g_return_if_fail (GTK_IS_TEXT_TAG_TABLE (table)); g_return_if_fail (GTK_IS_TEXT_TAG (tag)); - g_return_if_fail (tag->table == NULL); + g_return_if_fail (tag->priv->table == NULL); priv = table->priv; - if (tag->name && g_hash_table_lookup (priv->hash, tag->name)) + if (tag->priv->name && g_hash_table_lookup (priv->hash, tag->priv->name)) { g_warning ("A tag named '%s' is already in the tag table.", - tag->name); + tag->priv->name); return; } g_object_ref (tag); - if (tag->name) - g_hash_table_insert (priv->hash, tag->name, tag); + if (tag->priv->name) + g_hash_table_insert (priv->hash, tag->priv->name, tag); else { priv->anonymous = g_slist_prepend (priv->anonymous, tag); priv->anon_count += 1; } - tag->table = table; + tag->priv->table = table; /* We get the highest tag priority, as the most-recently-added tag. Note that we do NOT use gtk_text_tag_set_priority, as it assumes the tag is already in the table. */ size = gtk_text_tag_table_get_size (table); g_assert (size > 0); - tag->priority = size - 1; + tag->priv->priority = size - 1; g_signal_emit (table, signals[TAG_ADDED], 0, tag); } @@ -337,7 +385,7 @@ gtk_text_tag_table_remove (GtkTextTagTable *table, g_return_if_fail (GTK_IS_TEXT_TAG_TABLE (table)); g_return_if_fail (GTK_IS_TEXT_TAG (tag)); - g_return_if_fail (tag->table == table); + g_return_if_fail (tag->priv->table == table); priv = table->priv; @@ -358,10 +406,10 @@ gtk_text_tag_table_remove (GtkTextTagTable *table, priorities of the tags in the table. */ gtk_text_tag_set_priority (tag, gtk_text_tag_table_get_size (table) - 1); - tag->table = NULL; + tag->priv->table = NULL; - if (tag->name) - g_hash_table_remove (priv->hash, tag->name); + if (tag->priv->name) + g_hash_table_remove (priv->hash, tag->priv->name); else { priv->anonymous = g_slist_remove (priv->anonymous, tag); diff --git a/gtk/gtktextutil.c b/gtk/gtktextutil.c index 0ef71cf22c..1299810ffd 100644 --- a/gtk/gtktextutil.c +++ b/gtk/gtktextutil.c @@ -208,14 +208,15 @@ _gtk_text_util_create_drag_icon (GtkWidget *widget, gchar *text, gsize len) { - GtkStyle *style; - GtkStateType state; + GtkStyleContext *style_context; + GtkStateFlags state; cairo_surface_t *surface; PangoContext *context; PangoLayout *layout; cairo_t *cr; gint pixmap_height, pixmap_width; gint layout_width, layout_height; + GdkRGBA color; g_return_val_if_fail (widget != NULL, NULL); g_return_val_if_fail (text != NULL, NULL); @@ -238,18 +239,24 @@ _gtk_text_util_create_drag_icon (GtkWidget *widget, pixmap_width = layout_width / PANGO_SCALE + DRAG_ICON_LAYOUT_BORDER * 2; pixmap_height = layout_height / PANGO_SCALE + DRAG_ICON_LAYOUT_BORDER * 2; - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + surface = gdk_window_create_similar_surface (gtk_widget_get_window (widget), CAIRO_CONTENT_COLOR, pixmap_width + 2, pixmap_height + 2); cr = cairo_create (surface); - gdk_cairo_set_source_color (cr, &style->base [state]); + gtk_style_context_save (style_context); + gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_VIEW); + + gtk_style_context_get_background_color (style_context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_paint (cr); - gdk_cairo_set_source_color (cr, &style->text [state]); + gtk_style_context_get_color (style_context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_move_to (cr, 1 + DRAG_ICON_LAYOUT_BORDER, 1 + DRAG_ICON_LAYOUT_BORDER); pango_cairo_show_layout (cr, layout); @@ -263,21 +270,37 @@ _gtk_text_util_create_drag_icon (GtkWidget *widget, cairo_surface_set_device_offset (surface, 2, 2); + gtk_style_context_restore (style_context); + return surface; } static void gtk_text_view_set_attributes_from_style (GtkTextView *text_view, - GtkTextAttributes *values, - GtkStyle *style) + GtkTextAttributes *values) { - values->appearance.bg_color = style->base[GTK_STATE_NORMAL]; - values->appearance.fg_color = style->text[GTK_STATE_NORMAL]; + GtkStyleContext *context; + GdkRGBA bg_color, fg_color; + GtkStateFlags state; + + context = gtk_widget_get_style_context (GTK_WIDGET (text_view)); + state = gtk_widget_get_state_flags (GTK_WIDGET (text_view)); + + gtk_style_context_get_background_color (context, state, &bg_color); + gtk_style_context_get_color (context, state, &fg_color); + + values->appearance.bg_color.red = CLAMP (bg_color.red * 65535. + 0.5, 0, 65535); + values->appearance.bg_color.green = CLAMP (bg_color.green * 65535. + 0.5, 0, 65535); + values->appearance.bg_color.blue = CLAMP (bg_color.blue * 65535. + 0.5, 0, 65535); + + values->appearance.fg_color.red = CLAMP (fg_color.red * 65535. + 0.5, 0, 65535); + values->appearance.fg_color.green = CLAMP (fg_color.green * 65535. + 0.5, 0, 65535); + values->appearance.fg_color.blue = CLAMP (fg_color.blue * 65535. + 0.5, 0, 65535); if (values->font) pango_font_description_free (values->font); - values->font = pango_font_description_copy (style->font_desc); + values->font = pango_font_description_copy (gtk_style_context_get_font (context, state)); } cairo_surface_t * @@ -290,7 +313,9 @@ _gtk_text_util_create_rich_drag_icon (GtkWidget *widget, cairo_surface_t *surface; gint pixmap_height, pixmap_width; gint layout_width, layout_height; - GtkStyle *widget_style; + GtkStyleContext *context; + GtkStateFlags state; + GdkRGBA color; GtkTextBuffer *new_buffer; GtkTextLayout *layout; GtkTextAttributes *style; @@ -303,7 +328,8 @@ _gtk_text_util_create_rich_drag_icon (GtkWidget *widget, g_return_val_if_fail (start != NULL, NULL); g_return_val_if_fail (end != NULL, NULL); - widget_style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); new_buffer = gtk_text_buffer_new (gtk_text_buffer_get_tag_table (buffer)); gtk_text_buffer_get_start_iter (new_buffer, &iter); @@ -331,9 +357,7 @@ _gtk_text_util_create_rich_drag_icon (GtkWidget *widget, if (GTK_IS_TEXT_VIEW (widget)) { - gtk_widget_ensure_style (widget); - gtk_text_view_set_attributes_from_style (GTK_TEXT_VIEW (widget), - style, widget_style); + gtk_text_view_set_attributes_from_style (GTK_TEXT_VIEW (widget), style); layout_width = layout_width - gtk_text_view_get_border_window_size (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_LEFT) @@ -366,7 +390,11 @@ _gtk_text_util_create_rich_drag_icon (GtkWidget *widget, cr = cairo_create (surface); - gdk_cairo_set_source_color (cr, &widget_style->base [gtk_widget_get_state (widget)]); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + + gtk_style_context_get_background_color (context, state, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_paint (cr); cairo_save (cr); @@ -387,6 +415,8 @@ _gtk_text_util_create_rich_drag_icon (GtkWidget *widget, cairo_surface_set_device_offset (surface, 2, 2); + gtk_style_context_restore (context); + return surface; } diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index de6619d86e..f06250c406 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -26,6 +26,7 @@ */ #include "config.h" + #include #define GTK_TEXT_USE_INTERNAL_UNSUPPORTED_API @@ -39,17 +40,18 @@ #include "gtkmenuitem.h" #include "gtkseparatormenuitem.h" #include "gtksettings.h" +#include "gtkselectionprivate.h" #include "gtkstock.h" #include "gtktextbufferrichtext.h" #include "gtktextdisplay.h" #include "gtktextview.h" #include "gtkimmulticontext.h" -#include "gdk/gdkkeysyms.h" #include "gtkprivate.h" #include "gtktextutil.h" #include "gtkwidgetprivate.h" #include "gtkwindow.h" #include "gtkscrollable.h" +#include "gtktypebuiltins.h" /** @@ -304,14 +306,13 @@ static void gtk_text_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gtk_text_view_realize (GtkWidget *widget); static void gtk_text_view_unrealize (GtkWidget *widget); -static void gtk_text_view_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_text_view_style_updated (GtkWidget *widget); static void gtk_text_view_direction_changed (GtkWidget *widget, GtkTextDirection previous_direction); static void gtk_text_view_grab_notify (GtkWidget *widget, gboolean was_grabbed); -static void gtk_text_view_state_changed (GtkWidget *widget, - GtkStateType previous_state); +static void gtk_text_view_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state); static gint gtk_text_view_event (GtkWidget *widget, GdkEvent *event); @@ -380,7 +381,7 @@ static void gtk_text_view_move_cursor (GtkTextView *text_view, GtkMovementStep step, gint count, gboolean extend_selection); -static gboolean gtk_text_view_move_viewport (GtkTextView *text_view, +static void gtk_text_view_move_viewport (GtkTextView *text_view, GtkScrollStep step, gint count); static void gtk_text_view_set_anchor (GtkTextView *text_view); @@ -409,8 +410,7 @@ static void gtk_text_view_get_first_para_iter (GtkTextView *text_vi GtkTextIter *iter); static void gtk_text_view_update_layout_width (GtkTextView *text_view); static void gtk_text_view_set_attributes_from_style (GtkTextView *text_view, - GtkTextAttributes *values, - GtkStyle *style); + GtkTextAttributes *values); static void gtk_text_view_ensure_layout (GtkTextView *text_view); static void gtk_text_view_destroy_layout (GtkTextView *text_view); static void gtk_text_view_check_keymap_direction (GtkTextView *text_view); @@ -426,7 +426,7 @@ static void gtk_text_view_pend_cursor_blink (GtkTextView *text_v static void gtk_text_view_stop_cursor_blink (GtkTextView *text_view); static void gtk_text_view_reset_blink_time (GtkTextView *text_view); -static void gtk_text_view_value_changed (GtkAdjustment *adj, +static void gtk_text_view_value_changed (GtkAdjustment *adjustment, GtkTextView *view); static void gtk_text_view_commit_handler (GtkIMContext *context, const gchar *str, @@ -603,10 +603,10 @@ gtk_text_view_class_init (GtkTextViewClass *klass) widget_class->destroy = gtk_text_view_destroy; widget_class->realize = gtk_text_view_realize; widget_class->unrealize = gtk_text_view_unrealize; - widget_class->style_set = gtk_text_view_style_set; + widget_class->style_updated = gtk_text_view_style_updated; widget_class->direction_changed = gtk_text_view_direction_changed; widget_class->grab_notify = gtk_text_view_grab_notify; - widget_class->state_changed = gtk_text_view_state_changed; + widget_class->state_flags_changed = gtk_text_view_state_flags_changed; widget_class->get_preferred_width = gtk_text_view_get_preferred_width; widget_class->get_preferred_height = gtk_text_view_get_preferred_height; widget_class->size_allocate = gtk_text_view_size_allocate; @@ -1769,30 +1769,6 @@ gtk_text_view_get_line_at_y (GtkTextView *text_view, line_top); } -static gboolean -set_adjustment_clamped (GtkAdjustment *adj, gdouble val) -{ - DV (g_print (" Setting adj to raw value %g\n", val)); - - /* We don't really want to clamp to upper; we want to clamp to - upper - page_size which is the highest value the scrollbar - will let us reach. */ - if (val > (adj->upper - adj->page_size)) - val = adj->upper - adj->page_size; - - if (val < adj->lower) - val = adj->lower; - - if (val != adj->value) - { - DV (g_print (" Setting adj to clamped value %g\n", val)); - gtk_adjustment_set_value (adj, val); - return TRUE; - } - else - return FALSE; -} - /** * gtk_text_view_scroll_to_iter: * @text_view: a #GtkTextView @@ -1927,8 +1903,8 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, if (scroll_inc != 0) { - retval = set_adjustment_clamped (text_view->priv->vadjustment, - current_y_scroll + scroll_inc); + gtk_adjustment_set_value (text_view->priv->vadjustment, + current_y_scroll + scroll_inc); DV (g_print (" vert increment %d\n", scroll_inc)); } @@ -1964,12 +1940,15 @@ gtk_text_view_scroll_to_iter (GtkTextView *text_view, if (scroll_inc != 0) { - retval = set_adjustment_clamped (text_view->priv->hadjustment, - current_x_scroll + scroll_inc); + gtk_adjustment_set_value (text_view->priv->hadjustment, + current_x_scroll + scroll_inc); DV (g_print (" horiz increment %d\n", scroll_inc)); } + retval = (current_y_scroll != gtk_adjustment_get_value (text_view->priv->vadjustment)) + || (current_x_scroll != gtk_adjustment_get_value (text_view->priv->hadjustment)); + if (retval) { DV(g_print (">Actually scrolled ("G_STRLOC")\n")); @@ -2366,7 +2345,7 @@ gtk_text_view_set_wrap_mode (GtkTextView *text_view, { priv->wrap_mode = wrap_mode; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->wrap_mode = wrap_mode; gtk_text_layout_default_style_changed (priv->layout); @@ -2426,7 +2405,7 @@ gtk_text_view_set_editable (GtkTextView *text_view, if (setting && gtk_widget_has_focus (GTK_WIDGET (text_view))) gtk_im_context_focus_in (priv->im_context); - if (priv->layout) + if (priv->layout && priv->layout->default_style) { gtk_text_layout_set_overwrite_mode (priv->layout, priv->overwrite_mode && priv->editable); @@ -2477,7 +2456,7 @@ gtk_text_view_set_pixels_above_lines (GtkTextView *text_view, { priv->pixels_above_lines = pixels_above_lines; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->pixels_above_lines = pixels_above_lines; gtk_text_layout_default_style_changed (priv->layout); @@ -2526,7 +2505,7 @@ gtk_text_view_set_pixels_below_lines (GtkTextView *text_view, { priv->pixels_below_lines = pixels_below_lines; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->pixels_below_lines = pixels_below_lines; gtk_text_layout_default_style_changed (priv->layout); @@ -2575,7 +2554,7 @@ gtk_text_view_set_pixels_inside_wrap (GtkTextView *text_view, { priv->pixels_inside_wrap = pixels_inside_wrap; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->pixels_inside_wrap = pixels_inside_wrap; gtk_text_layout_default_style_changed (priv->layout); @@ -2624,7 +2603,7 @@ gtk_text_view_set_justification (GtkTextView *text_view, { priv->justify = justification; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->justification = justification; gtk_text_layout_default_style_changed (priv->layout); @@ -2673,7 +2652,7 @@ gtk_text_view_set_left_margin (GtkTextView *text_view, { priv->left_margin = left_margin; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->left_margin = left_margin; gtk_text_layout_default_style_changed (priv->layout); @@ -2720,7 +2699,7 @@ gtk_text_view_set_right_margin (GtkTextView *text_view, { priv->right_margin = right_margin; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->right_margin = right_margin; gtk_text_layout_default_style_changed (priv->layout); @@ -2769,7 +2748,7 @@ gtk_text_view_set_indent (GtkTextView *text_view, { priv->indent = indent; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->indent = indent; gtk_text_layout_default_style_changed (priv->layout); @@ -2820,7 +2799,7 @@ gtk_text_view_set_tabs (GtkTextView *text_view, priv->tabs = tabs ? pango_tab_array_copy (tabs) : NULL; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { /* some unkosher futzing in internal struct details... */ if (priv->layout->default_style->tabs) @@ -3875,7 +3854,6 @@ changed_handler (GtkTextLayout *layout, if (old_height != new_height) { - gboolean yoffset_changed = FALSE; GSList *tmp_list; int new_first_para_top; int old_first_para_top; @@ -3901,14 +3879,7 @@ changed_handler (GtkTextLayout *layout, { priv->yoffset += new_first_para_top - old_first_para_top; - text_view->priv->vadjustment->value = priv->yoffset; - yoffset_changed = TRUE; - } - - if (yoffset_changed) - { - DV(g_print ("Changing scroll position (%s)\n", G_STRLOC)); - gtk_adjustment_value_changed (text_view->priv->vadjustment); + gtk_adjustment_set_value (text_view->priv->vadjustment, priv->yoffset); } /* FIXME be smarter about which anchored widgets we update */ @@ -3949,11 +3920,14 @@ gtk_text_view_realize (GtkWidget *widget) GtkAllocation allocation; GtkTextView *text_view; GtkTextViewPrivate *priv; + GtkStyleContext *context; + GtkStateFlags state; GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; GSList *tmp_list; - + GdkRGBA color; + text_view = GTK_TEXT_VIEW (widget); priv = text_view->priv; @@ -3977,11 +3951,11 @@ gtk_text_view_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); - /* must come before text_window_realize calls */ - gtk_widget_style_attach (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - gdk_window_set_background (window, - >k_widget_get_style (widget)->bg[gtk_widget_get_state (widget)]); + gtk_style_context_get_background_color (context, state, &color); + gdk_window_set_background_rgba (window, &color); text_window_realize (priv->text_window, widget); @@ -4066,42 +4040,47 @@ gtk_text_view_unrealize (GtkWidget *widget) static void gtk_text_view_set_background (GtkTextView *text_view) { - GtkStyle *style; - GtkStateType state; + GtkStyleContext *context; + GtkStateFlags state; GtkWidget *widget; GtkTextViewPrivate *priv; + GdkRGBA color; widget = GTK_WIDGET (text_view); priv = text_view->priv; - style = gtk_widget_get_style (widget); - state = gtk_widget_get_state (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); - gdk_window_set_background (gtk_widget_get_window (widget), - &style->bg[state]); + /* Set bin window background */ + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); - gdk_window_set_background (priv->text_window->bin_window, - &style->base[state]); + gtk_style_context_get_background_color (context, state, &color); + gdk_window_set_background_rgba (priv->text_window->bin_window, &color); + + gtk_style_context_restore (context); + + /* Set lateral panes background */ + gtk_style_context_get_background_color (context, state, &color); + + gdk_window_set_background_rgba (gtk_widget_get_window (widget), &color); if (priv->left_window) - gdk_window_set_background (priv->left_window->bin_window, - &style->bg[state]); + gdk_window_set_background_rgba (priv->left_window->bin_window, &color); + if (priv->right_window) - gdk_window_set_background (priv->right_window->bin_window, - &style->bg[state]); + gdk_window_set_background_rgba (priv->right_window->bin_window, &color); if (priv->top_window) - gdk_window_set_background (priv->top_window->bin_window, - &style->bg[state]); + gdk_window_set_background_rgba (priv->top_window->bin_window, &color); if (priv->bottom_window) - gdk_window_set_background (priv->bottom_window->bin_window, - &style->bg[state]); + gdk_window_set_background_rgba (priv->bottom_window->bin_window, &color); } static void -gtk_text_view_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_text_view_style_updated (GtkWidget *widget) { GtkTextView *text_view; GtkTextViewPrivate *priv; @@ -4115,11 +4094,10 @@ gtk_text_view_style_set (GtkWidget *widget, gtk_text_view_set_background (text_view); } - if (priv->layout && previous_style) + if (priv->layout && priv->layout->default_style) { gtk_text_view_set_attributes_from_style (text_view, - priv->layout->default_style, - gtk_widget_get_style (widget)); + priv->layout->default_style); ltr_context = gtk_widget_create_pango_context (widget); pango_context_set_base_dir (ltr_context, PANGO_DIRECTION_LTR); @@ -4139,7 +4117,7 @@ gtk_text_view_direction_changed (GtkWidget *widget, { GtkTextViewPrivate *priv = GTK_TEXT_VIEW (widget)->priv; - if (priv->layout) + if (priv->layout && priv->layout->default_style) { priv->layout->default_style->direction = gtk_widget_get_direction (widget); @@ -4148,8 +4126,8 @@ gtk_text_view_direction_changed (GtkWidget *widget, } static void -gtk_text_view_state_changed (GtkWidget *widget, - GtkStateType previous_state) +gtk_text_view_state_flags_changed (GtkWidget *widget, + GtkStateFlags previous_state) { GtkTextView *text_view = GTK_TEXT_VIEW (widget); GdkCursor *cursor; @@ -4166,7 +4144,7 @@ gtk_text_view_state_changed (GtkWidget *widget, gdk_window_set_cursor (text_view->priv->text_window->bin_window, cursor); if (cursor) - gdk_cursor_unref (cursor); + g_object_unref (cursor); text_view->priv->mouse_cursor_obscured = FALSE; } @@ -4191,7 +4169,7 @@ set_invisible_cursor (GdkWindow *window) gdk_window_set_cursor (window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static void @@ -4215,7 +4193,7 @@ gtk_text_view_unobscure_mouse_cursor (GtkTextView *text_view) cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (text_view)), GDK_XTERM); gdk_window_set_cursor (text_view->priv->text_window->bin_window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); text_view->priv->mouse_cursor_obscured = FALSE; } } @@ -4870,13 +4848,14 @@ gtk_text_view_draw_focus (GtkWidget *widget, NULL); if (gtk_widget_has_focus (widget) && !interior_focus) - { - gtk_paint_focus (gtk_widget_get_style (widget), cr, - gtk_widget_get_state (widget), - widget, "textview", - 0, 0, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + { + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + + gtk_render_focus (context, cr, 0, 0, + gtk_widget_get_allocated_width (widget), + gtk_widget_get_allocated_height (widget)); } } @@ -5248,6 +5227,7 @@ gtk_text_view_move_cursor_internal (GtkTextView *text_view, if (!priv->cursor_visible) { GtkScrollStep scroll_step; + gdouble old_xpos, old_ypos; switch (step) { @@ -5282,14 +5262,15 @@ gtk_text_view_move_cursor_internal (GtkTextView *text_view, break; } - if (!gtk_text_view_move_viewport (text_view, scroll_step, count)) + old_xpos = priv->xoffset; + old_ypos = priv->yoffset; + gtk_text_view_move_viewport (text_view, scroll_step, count); + if ((old_xpos != priv->xoffset || old_ypos != priv->yoffset) && + leave_direction != -1 && + !gtk_widget_keynav_failed (GTK_WIDGET (text_view), + leave_direction)) { - if (leave_direction != -1 && - !gtk_widget_keynav_failed (GTK_WIDGET (text_view), - leave_direction)) - { - g_signal_emit_by_name (text_view, "move-focus", leave_direction); - } + g_signal_emit_by_name (text_view, "move-focus", leave_direction); } return; @@ -5484,7 +5465,7 @@ gtk_text_view_move_cursor (GtkTextView *text_view, gtk_text_view_move_cursor_internal (text_view, step, count, extend_selection); } -static gboolean +static void gtk_text_view_move_viewport (GtkTextView *text_view, GtkScrollStep step, gint count) @@ -5513,22 +5494,22 @@ gtk_text_view_move_viewport (GtkTextView *text_view, { case GTK_SCROLL_STEPS: case GTK_SCROLL_HORIZONTAL_STEPS: - increment = adjustment->step_increment; + increment = gtk_adjustment_get_step_increment (adjustment); break; case GTK_SCROLL_PAGES: case GTK_SCROLL_HORIZONTAL_PAGES: - increment = adjustment->page_increment; + increment = gtk_adjustment_get_page_increment (adjustment); break; case GTK_SCROLL_ENDS: case GTK_SCROLL_HORIZONTAL_ENDS: - increment = adjustment->upper - adjustment->lower; + increment = gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment); break; default: increment = 0.0; break; } - return set_adjustment_clamped (adjustment, adjustment->value + count * increment); + gtk_adjustment_set_value (adjustment, gtk_adjustment_get_value (adjustment) + count * increment); } static void @@ -5548,7 +5529,7 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, gboolean extend_selection) { GtkTextViewPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gint cursor_x_pos, cursor_y_pos; GtkTextMark *insert_mark; GtkTextIter old_insert; @@ -5562,7 +5543,7 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, g_return_val_if_fail (priv->vadjustment != NULL, FALSE); - adj = priv->vadjustment; + adjustment = priv->vadjustment; insert_mark = gtk_text_buffer_get_insert (get_buffer (text_view)); @@ -5583,13 +5564,13 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, if (count < 0) { gtk_text_view_get_first_para_iter (text_view, &anchor); - y0 = adj->page_size; - y1 = adj->page_size + count * adj->page_increment; + y0 = gtk_adjustment_get_page_size (adjustment); + y1 = gtk_adjustment_get_page_size (adjustment) + count * gtk_adjustment_get_page_increment (adjustment); } else { gtk_text_view_get_first_para_iter (text_view, &anchor); - y0 = count * adj->page_increment + adj->page_size; + y0 = count * gtk_adjustment_get_page_increment (adjustment) + gtk_adjustment_get_page_size (adjustment); y1 = 0; } @@ -5598,13 +5579,13 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, new_insert = old_insert; - if (count < 0 && adj->value <= (adj->lower + 1e-12)) + if (count < 0 && gtk_adjustment_get_value (adjustment) <= (gtk_adjustment_get_lower (adjustment) + 1e-12)) { /* already at top, just be sure we are at offset 0 */ gtk_text_buffer_get_start_iter (get_buffer (text_view), &new_insert); move_cursor (text_view, &new_insert, extend_selection); } - else if (count > 0 && adj->value >= (adj->upper - adj->page_size - 1e-12)) + else if (count > 0 && gtk_adjustment_get_value (adjustment) >= (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment) - 1e-12)) { /* already at bottom, just be sure we are at the end */ gtk_text_buffer_get_end_iter (get_buffer (text_view), &new_insert); @@ -5614,13 +5595,13 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, { gtk_text_view_get_virtual_cursor_pos (text_view, NULL, &cursor_x_pos, &cursor_y_pos); - oldval = adj->value; - newval = adj->value; + oldval = gtk_adjustment_get_value (adjustment); + newval = gtk_adjustment_get_value (adjustment); - newval += count * adj->page_increment; + newval += count * gtk_adjustment_get_page_increment (adjustment); - set_adjustment_clamped (adj, newval); - cursor_y_pos += adj->value - oldval; + gtk_adjustment_set_value (adjustment, newval); + cursor_y_pos += gtk_adjustment_get_value (adjustment) - oldval; gtk_text_layout_get_iter_at_pixel (priv->layout, &new_insert, cursor_x_pos, cursor_y_pos); clamp_iter_onscreen (text_view, &new_insert); @@ -5644,7 +5625,7 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view, gboolean extend_selection) { GtkTextViewPrivate *priv; - GtkAdjustment *adj; + GtkAdjustment *adjustment; gint cursor_x_pos, cursor_y_pos; GtkTextMark *insert_mark; GtkTextIter old_insert; @@ -5657,7 +5638,7 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view, g_return_val_if_fail (priv->hadjustment != NULL, FALSE); - adj = priv->hadjustment; + adjustment = priv->hadjustment; insert_mark = gtk_text_buffer_get_insert (get_buffer (text_view)); @@ -5681,13 +5662,13 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view, new_insert = old_insert; - if (count < 0 && adj->value <= (adj->lower + 1e-12)) + if (count < 0 && gtk_adjustment_get_value (adjustment) <= (gtk_adjustment_get_lower (adjustment) + 1e-12)) { /* already at far left, just be sure we are at offset 0 */ gtk_text_iter_set_line_offset (&new_insert, 0); move_cursor (text_view, &new_insert, extend_selection); } - else if (count > 0 && adj->value >= (adj->upper - adj->page_size - 1e-12)) + else if (count > 0 && gtk_adjustment_get_value (adjustment) >= (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment) - 1e-12)) { /* already at far right, just be sure we are at the end */ if (!gtk_text_iter_ends_line (&new_insert)) @@ -5698,13 +5679,13 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view, { gtk_text_view_get_virtual_cursor_pos (text_view, NULL, &cursor_x_pos, &cursor_y_pos); - oldval = adj->value; - newval = adj->value; + oldval = gtk_adjustment_get_value (adjustment); + newval = gtk_adjustment_get_value (adjustment); - newval += count * adj->page_increment; + newval += count * gtk_adjustment_get_page_increment (adjustment); - set_adjustment_clamped (adj, newval); - cursor_x_pos += adj->value - oldval; + gtk_adjustment_set_value (adjustment, newval); + cursor_x_pos += gtk_adjustment_get_value (adjustment) - oldval; gtk_text_layout_get_iter_at_pixel (priv->layout, &new_insert, cursor_x_pos, cursor_y_pos); clamp_iter_onscreen (text_view, &new_insert); @@ -6202,12 +6183,12 @@ selection_scan_timeout (gpointer data) #define LOWER_OFFSET_ANCHOR 0.2 static gboolean -check_scroll (gdouble offset, GtkAdjustment *adj) +check_scroll (gdouble offset, GtkAdjustment *adjustment) { if ((offset > UPPER_OFFSET_ANCHOR && - adj->value + adj->page_size < adj->upper) || + gtk_adjustment_get_value (adjustment) + gtk_adjustment_get_page_size (adjustment) < gtk_adjustment_get_upper (adjustment)) || (offset < LOWER_OFFSET_ANCHOR && - adj->value > adj->lower)) + gtk_adjustment_get_value (adjustment) > gtk_adjustment_get_lower (adjustment))) return TRUE; return FALSE; @@ -6535,16 +6516,35 @@ gtk_text_view_end_selection_drag (GtkTextView *text_view) static void gtk_text_view_set_attributes_from_style (GtkTextView *text_view, - GtkTextAttributes *values, - GtkStyle *style) + GtkTextAttributes *values) { - values->appearance.bg_color = style->base[GTK_STATE_NORMAL]; - values->appearance.fg_color = style->text[GTK_STATE_NORMAL]; + GtkStyleContext *context; + GdkRGBA bg_color, fg_color; + GtkStateFlags state; + + context = gtk_widget_get_style_context (GTK_WIDGET (text_view)); + state = gtk_widget_get_state_flags (GTK_WIDGET (text_view)); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); + + gtk_style_context_get_background_color (context, state, &bg_color); + gtk_style_context_get_color (context, state, &fg_color); + + values->appearance.bg_color.red = CLAMP (bg_color.red * 65535. + 0.5, 0, 65535); + values->appearance.bg_color.green = CLAMP (bg_color.green * 65535. + 0.5, 0, 65535); + values->appearance.bg_color.blue = CLAMP (bg_color.blue * 65535. + 0.5, 0, 65535); + + values->appearance.fg_color.red = CLAMP (fg_color.red * 65535. + 0.5, 0, 65535); + values->appearance.fg_color.green = CLAMP (fg_color.green * 65535. + 0.5, 0, 65535); + values->appearance.fg_color.blue = CLAMP (fg_color.blue * 65535. + 0.5, 0, 65535); if (values->font) pango_font_description_free (values->font); - values->font = pango_font_description_copy (style->font_desc); + values->font = pango_font_description_copy (gtk_style_context_get_font (context, state)); + + gtk_style_context_restore (context); } static void @@ -6638,10 +6638,7 @@ gtk_text_view_ensure_layout (GtkTextView *text_view) style = gtk_text_attributes_new (); - gtk_widget_ensure_style (widget); - gtk_text_view_set_attributes_from_style (text_view, - style, - gtk_widget_get_style (widget)); + gtk_text_view_set_attributes_from_style (text_view, style); style->pixels_above_lines = priv->pixels_above_lines; style->pixels_below_lines = priv->pixels_below_lines; @@ -6789,7 +6786,7 @@ gtk_text_view_reset_im_context (GtkTextView *text_view) * gtk_foo_bar_key_press_event (GtkWidget *widget, * GdkEventKey *event) * { - * if ((key->keyval == GDK_Return || key->keyval == GDK_KP_Enter)) + * if ((key->keyval == GDK_KEY_Return || key->keyval == GDK_KEY_KP_Enter)) * { * if (gtk_text_view_im_context_filter_keypress (GTK_TEXT_VIEW (view), event)) * return TRUE; @@ -6907,7 +6904,7 @@ gtk_text_view_drag_data_get (GtkWidget *widget, { /* Extract the selected text */ str = gtk_text_buffer_serialize (buffer, buffer, - selection_data->target, + gtk_selection_data_get_target (selection_data), &start, &end, &len); } @@ -6915,7 +6912,7 @@ gtk_text_view_drag_data_get (GtkWidget *widget, if (str) { gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, /* bytes */ (guchar *) str, len); g_free (str); @@ -7028,7 +7025,7 @@ gtk_text_view_drag_motion (GtkWidget *widget, { GtkWidget *source_widget; - suggested_action = context->suggested_action; + suggested_action = gdk_drag_context_get_suggested_action (context); source_widget = gtk_drag_get_source_widget (context); @@ -7037,7 +7034,7 @@ gtk_text_view_drag_motion (GtkWidget *widget, /* Default to MOVE, unless the user has * pressed ctrl or alt to affect available actions */ - if ((context->actions & GDK_ACTION_MOVE) != 0) + if ((gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0) suggested_action = GDK_ACTION_MOVE; } } @@ -7171,10 +7168,10 @@ gtk_text_view_drag_data_received (GtkWidget *widget, GtkTextIter start, end; gboolean copy_tags = TRUE; - if (selection_data->length != sizeof (src_buffer)) + if (gtk_selection_data_get_length (selection_data) != sizeof (src_buffer)) return; - memcpy (&src_buffer, selection_data->data, sizeof (src_buffer)); + memcpy (&src_buffer, gtk_selection_data_get_data (selection_data), sizeof (src_buffer)); if (src_buffer == NULL) return; @@ -7194,7 +7191,7 @@ gtk_text_view_drag_data_received (GtkWidget *widget, atoms = gtk_text_buffer_get_deserialize_formats (buffer, &n_atoms); - for (list = context->targets; list; list = g_list_next (list)) + for (list = gdk_drag_context_list_targets (context); list; list = g_list_next (list)) { gint i; @@ -7238,17 +7235,17 @@ gtk_text_view_drag_data_received (GtkWidget *widget, } } } - else if (selection_data->length > 0 && + else if (gtk_selection_data_get_length (selection_data) > 0 && info == GTK_TEXT_BUFFER_TARGET_INFO_RICH_TEXT) { gboolean retval; GError *error = NULL; retval = gtk_text_buffer_deserialize (buffer, buffer, - selection_data->target, + gtk_selection_data_get_target (selection_data), &drop_point, - (guint8 *) selection_data->data, - selection_data->length, + (guint8 *) gtk_selection_data_get_data (selection_data), + gtk_selection_data_get_length (selection_data), &error); if (!retval) @@ -7262,7 +7259,7 @@ gtk_text_view_drag_data_received (GtkWidget *widget, done: gtk_drag_finish (context, success, - success && context->action == GDK_ACTION_MOVE, + success && gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE, time); if (success) @@ -7333,6 +7330,8 @@ gtk_text_view_set_hadjustment (GtkTextView *text_view, * Returns: (transfer none): pointer to the vertical #GtkAdjustment * * Since: 2.22 + * + * Deprecated: 3.0: Use gtk_scrollable_get_vadjustment() **/ GtkAdjustment* gtk_text_view_get_vadjustment (GtkTextView *text_view) @@ -7513,7 +7512,7 @@ adjust_allocation (GtkWidget *widget, } static void -gtk_text_view_value_changed (GtkAdjustment *adj, +gtk_text_view_value_changed (GtkAdjustment *adjustment, GtkTextView *text_view) { GtkTextViewPrivate *priv; @@ -7524,20 +7523,20 @@ gtk_text_view_value_changed (GtkAdjustment *adj, priv = text_view->priv; - /* Note that we oddly call this function with adj == NULL + /* Note that we oddly call this function with adjustment == NULL * sometimes */ priv->onscreen_validated = FALSE; DV(g_print(">Scroll offset changed %s/%g, onscreen_validated = FALSE ("G_STRLOC")\n", - adj == priv->hadjustment ? "hadj" : adj == priv->vadjustment ? "vadj" : "none", - adj ? adj->value : 0.0)); + adjustment == priv->hadjustment ? "hadjustment" : adjustment == priv->vadjustment ? "vadjustment" : "none", + adjustment ? gtk_adjustment_get_value (adjustment) : 0.0)); - if (adj == priv->hadjustment) + if (adjustment == priv->hadjustment) { - dx = priv->xoffset - (gint)adj->value; - priv->xoffset = adj->value; + dx = priv->xoffset - (gint)gtk_adjustment_get_value (adjustment); + priv->xoffset = gtk_adjustment_get_value (adjustment); /* If the change is due to a size change we need * to invalidate the entire text window because there might be @@ -7551,18 +7550,18 @@ gtk_text_view_value_changed (GtkAdjustment *adj, priv->width_changed = FALSE; } } - else if (adj == priv->vadjustment) + else if (adjustment == priv->vadjustment) { - dy = priv->yoffset - (gint)adj->value; - priv->yoffset = adj->value; + dy = priv->yoffset - (gint)gtk_adjustment_get_value (adjustment); + priv->yoffset = gtk_adjustment_get_value (adjustment); if (priv->layout) { - gtk_text_layout_get_line_at_y (priv->layout, &iter, adj->value, &line_top); + gtk_text_layout_get_line_at_y (priv->layout, &iter, gtk_adjustment_get_value (adjustment), &line_top); gtk_text_buffer_move_mark (get_buffer (text_view), priv->first_para_mark, &iter); - priv->first_para_pixels = adj->value - line_top; + priv->first_para_pixels = gtk_adjustment_get_value (adjustment) - line_top; } } @@ -8352,10 +8351,13 @@ static void text_window_realize (GtkTextWindow *win, GtkWidget *widget) { + GtkStyleContext *context; + GtkStateFlags state; GdkWindow *window; GdkWindowAttr attributes; gint attributes_mask; GdkCursor *cursor; + GdkRGBA color; attributes.window_type = GDK_WINDOW_CHILD; attributes.x = win->allocation.x; @@ -8397,6 +8399,9 @@ text_window_realize (GtkTextWindow *win, gdk_window_show (win->bin_window); gdk_window_set_user_data (win->bin_window, win->widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + if (win->type == GTK_TEXT_WINDOW_TEXT) { if (gtk_widget_is_sensitive (widget)) @@ -8405,20 +8410,24 @@ text_window_realize (GtkTextWindow *win, cursor = gdk_cursor_new_for_display (gdk_window_get_display (window), GDK_XTERM); gdk_window_set_cursor (win->bin_window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } gtk_im_context_set_client_window (GTK_TEXT_VIEW (widget)->priv->im_context, win->window); + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); - gdk_window_set_background (win->bin_window, - >k_widget_get_style (widget)->base[gtk_widget_get_state (widget)]); + gtk_style_context_get_background_color (context, state, &color); + gdk_window_set_background_rgba (win->bin_window, &color); + + gtk_style_context_restore (context); } else { - gdk_window_set_background (win->bin_window, - >k_widget_get_style (widget)->bg[gtk_widget_get_state (widget)]); + gtk_style_context_get_background_color (context, state, &color); + gdk_window_set_background_rgba (win->bin_window, &color); } g_object_set_qdata (G_OBJECT (win->window), @@ -9340,7 +9349,9 @@ gtk_text_view_add_child_at_anchor (GtkTextView *text_view, * @ypos: Y position of child in window coordinates * * Adds a child at fixed coordinates in one of the text widget's - * windows. The window must have nonzero size (see + * windows. + * + * The window must have nonzero size (see * gtk_text_view_set_border_window_size()). Note that the child * coordinates are given relative to the #GdkWindow in question, and * that these coordinates have no sane relationship to scrolling. When @@ -9350,12 +9361,8 @@ gtk_text_view_add_child_at_anchor (GtkTextView *text_view, * text window), you'll need to compute the child's correct position * in buffer coordinates any time scrolling occurs or buffer changes * occur, and then call gtk_text_view_move_child() to update the - * child's position. Unfortunately there's no good way to detect that - * scrolling has occurred, using the current API; a possible hack - * would be to update all child positions when the scroll adjustments - * change or the text buffer changes. See bug 64518 on - * bugzilla.gnome.org for status of fixing this issue. - **/ + * child's position. + */ void gtk_text_view_add_child_in_window (GtkTextView *text_view, GtkWidget *child, diff --git a/gtk/gtkthemes.c b/gtk/gtkthemes.c deleted file mode 100644 index 1533fa48c9..0000000000 --- a/gtk/gtkthemes.c +++ /dev/null @@ -1,194 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * Themes added by The Rasterman - * - * 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, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/* - * 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 -#include -#include -#include "gtkthemes.h" -#include "gtkrc.h" -#include "gtkintl.h" -#include "gtkdebug.h" - - -typedef struct _GtkThemeEngineClass GtkThemeEngineClass; - -struct _GtkThemeEngine -{ - GTypeModule parent_instance; - - GModule *library; - - void (*init) (GTypeModule *); - void (*exit) (void); - GtkRcStyle *(*create_rc_style) (); - - gchar *name; -}; - -struct _GtkThemeEngineClass -{ - GTypeModuleClass parent_class; -}; - -static GHashTable *engine_hash = NULL; - -static gboolean -gtk_theme_engine_load (GTypeModule *module) -{ - GtkThemeEngine *engine = GTK_THEME_ENGINE (module); - - gchar *engine_path; - - engine_path = gtk_rc_find_module_in_path (engine->name); - - if (!engine_path) - { - g_warning (_("Unable to locate theme engine in module_path: \"%s\","), - engine->name); - return FALSE; - } - - /* load the lib */ - - GTK_NOTE (MISC, g_message ("Loading Theme %s\n", engine_path)); - - engine->library = g_module_open (engine_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); - g_free(engine_path); - if (!engine->library) - { - g_warning ("%s", g_module_error()); - return FALSE; - } - - /* extract symbols from the lib */ - if (!g_module_symbol (engine->library, "theme_init", - (gpointer *)&engine->init) || - !g_module_symbol (engine->library, "theme_exit", - (gpointer *)&engine->exit) || - !g_module_symbol (engine->library, "theme_create_rc_style", - (gpointer *)&engine->create_rc_style)) - { - g_warning ("%s", g_module_error()); - g_module_close (engine->library); - - return FALSE; - } - - /* call the theme's init (theme_init) function to let it */ - /* setup anything it needs to set up. */ - engine->init (module); - - return TRUE; -} - -static void -gtk_theme_engine_unload (GTypeModule *module) -{ - GtkThemeEngine *engine = GTK_THEME_ENGINE (module); - - engine->exit(); - - g_module_close (engine->library); - engine->library = NULL; - - engine->init = NULL; - engine->exit = NULL; - engine->create_rc_style = NULL; -} - -static void -gtk_theme_engine_class_init (GtkThemeEngineClass *class) -{ - GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (class); - - module_class->load = gtk_theme_engine_load; - module_class->unload = gtk_theme_engine_unload; -} - -GType -gtk_theme_engine_get_type (void) -{ - static GType theme_engine_type = 0; - - if (!theme_engine_type) - { - const GTypeInfo theme_engine_info = { - sizeof (GtkThemeEngineClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gtk_theme_engine_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GtkThemeEngine), - 0, /* n_preallocs */ - NULL, /* instance_init */ - }; - - theme_engine_type = - g_type_register_static (G_TYPE_TYPE_MODULE, I_("GtkThemeEngine"), - &theme_engine_info, 0); - } - - return theme_engine_type; -} - -GtkThemeEngine* -gtk_theme_engine_get (const gchar *name) -{ - GtkThemeEngine *result; - - if (!engine_hash) - engine_hash = g_hash_table_new (g_str_hash, g_str_equal); - - /* get the library name for the theme - */ - result = g_hash_table_lookup (engine_hash, name); - - if (!result) - { - result = g_object_new (GTK_TYPE_THEME_ENGINE, NULL); - g_type_module_set_name (G_TYPE_MODULE (result), name); - result->name = g_strdup (name); - - g_hash_table_insert (engine_hash, result->name, result); - } - - if (!g_type_module_use (G_TYPE_MODULE (result))) - return NULL; - - return result; -} - -GtkRcStyle * -gtk_theme_engine_create_rc_style (GtkThemeEngine *engine) -{ - g_return_val_if_fail (engine != NULL, NULL); - - return engine->create_rc_style (); -} diff --git a/gtk/gtkthemes.h b/gtk/gtkthemes.h deleted file mode 100644 index 91edccc109..0000000000 --- a/gtk/gtkthemes.h +++ /dev/null @@ -1,52 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * Themes added by The Rasterman - * - * 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, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/* - * 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/. - */ - -#ifndef __GTK_THEMES_H__ -#define __GTK_THEMES_H__ - - -#include -#include - - -G_BEGIN_DECLS - -#define GTK_TYPE_THEME_ENGINE (gtk_theme_engine_get_type ()) -#define GTK_THEME_ENGINE(theme_engine) (G_TYPE_CHECK_INSTANCE_CAST ((theme_engine), GTK_TYPE_THEME_ENGINE, GtkThemeEngine)) -#define GTK_IS_THEME_ENGINE(theme_engine) (G_TYPE_CHECK_INSTANCE_TYPE ((theme_engine), GTK_TYPE_THEME_ENGINE)) - -#if !defined(GTK_DISABLE_DEPRECATED) || defined(GTK_COMPILATION) - -GType gtk_theme_engine_get_type (void) G_GNUC_CONST; -GtkThemeEngine *gtk_theme_engine_get (const gchar *name); -GtkRcStyle *gtk_theme_engine_create_rc_style (GtkThemeEngine *engine); - -#endif - -G_END_DECLS - -#endif /* __GTK_THEMES_H__ */ diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c index e254161141..80b02b0e6b 100644 --- a/gtk/gtkthemingengine.c +++ b/gtk/gtkthemingengine.c @@ -809,7 +809,7 @@ gtk_theming_engine_get_border_color (GtkThemingEngine *engine, * gtk_theming_engine_get_border: * @engine: a #GtkthemingEngine * @state: state to retrieve the border for - * @color: (out): return value for the border settings + * @border: (out): return value for the border settings * * Gets the border for a given state as a #GtkBorder. * @@ -832,7 +832,7 @@ gtk_theming_engine_get_border (GtkThemingEngine *engine, * gtk_theming_engine_get_padding: * @engine: a #GtkthemingEngine * @state: state to retrieve the padding for - * @color: (out): return value for the padding settings + * @padding: (out): return value for the padding settings * * Gets the padding for a given state as a #GtkBorder. * @@ -853,9 +853,9 @@ gtk_theming_engine_get_padding (GtkThemingEngine *engine, /** * gtk_theming_engine_get_margin: - * @engien: a #GtkThemingEngine + * @engine: a #GtkThemingEngine * @state: state to retrieve the border for - * @color: (out): return value for the margin settings + * @margin: (out): return value for the margin settings * * Gets the margin for a given state as a #GtkBorder. * @@ -874,6 +874,29 @@ gtk_theming_engine_get_margin (GtkThemingEngine *engine, gtk_style_context_get_margin (priv->context, state, margin); } +/** + * gtk_theming_engine_get_font: + * @engine: a #GtkThemingEngine + * @state: state to retrieve the font for + * + * Returns the font description for a given state. + * + * Returns: the #PangoFontDescription for the given state. This + * object is owned by GTK+ and should not be freed. + * + * Since: 3.0 + **/ +const PangoFontDescription * +gtk_theming_engine_get_font (GtkThemingEngine *engine, + GtkStateFlags state) +{ + GtkThemingEnginePrivate *priv; + + g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), NULL); + + priv = engine->priv; + return gtk_style_context_get_font (priv->context, state); +} /* GtkThemingModule */ @@ -889,19 +912,13 @@ gtk_theming_module_load (GTypeModule *type_module) module_path = _gtk_find_module (name, "theming-engines"); if (!module_path) - { - g_warning (_("Unable to locate theme engine in module path: \"%s\","), name); - return FALSE; - } + return FALSE; module = g_module_open (module_path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); g_free (module_path); if (!module) - { - g_warning ("%s", g_module_error ()); - return FALSE; - } + return FALSE; if (!g_module_symbol (module, "theme_init", (gpointer *) &theming_module->init) || @@ -910,7 +927,6 @@ gtk_theming_module_load (GTypeModule *type_module) !g_module_symbol (module, "create_engine", (gpointer *) &theming_module->create_engine)) { - g_warning ("%s", g_module_error ()); g_module_close (module); return FALSE; @@ -1195,6 +1211,8 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine, if (border_style == GTK_BORDER_STYLE_SOLID) { cairo_set_line_width (cr, border_width); + + cairo_new_sub_path (cr); cairo_arc (cr, x + exterior_size / 2., y + exterior_size / 2., @@ -1250,6 +1268,7 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine, pad = MAX (0, (exterior_size - interior_size) / 2); } + cairo_new_sub_path (cr); cairo_arc (cr, x + pad + interior_size / 2., y + pad + interior_size / 2., @@ -1468,8 +1487,7 @@ render_background_internal (GtkThemingEngine *engine, GtkStateFlags flags; gboolean running; gdouble progress, alpha = 1; - gint radius, border_width; - GtkBorder *border; + gint radius; flags = gtk_theming_engine_get_state (engine); cairo_save (cr); @@ -1477,14 +1495,10 @@ render_background_internal (GtkThemingEngine *engine, gtk_theming_engine_get (engine, flags, "background-image", &pattern, "background-color", &bg_color, - "border-width", &border, "border-radius", &radius, NULL); running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress); - border_width = MIN (MIN (border->top, border->bottom), - MIN (border->left, border->right)); - _cairo_round_rectangle_sides (cr, (gdouble) radius, x, y, width, height, SIDE_ALL, junction); @@ -1701,7 +1715,6 @@ render_background_internal (GtkThemingEngine *engine, cairo_restore (cr); gdk_rgba_free (bg_color); - gtk_border_free (border); } static void @@ -1718,15 +1731,6 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine, junction = gtk_theming_engine_get_junction_sides (engine); - if (gtk_theming_engine_has_class (engine, "spinbutton") && - gtk_theming_engine_has_class (engine, "button")) - { - x += 2; - y += 2; - width -= 4; - height -= 4; - } - flags = gtk_theming_engine_get_state (engine); gtk_theming_engine_get (engine, flags, "border-width", &border, @@ -1971,8 +1975,8 @@ gtk_theming_engine_render_frame (GtkThemingEngine *engine, if (slice) { - gtk_9slice_render (slice, cr, x, y, width, height); - gtk_9slice_unref (slice); + _gtk_9slice_render (slice, cr, x, y, width, height); + _gtk_9slice_unref (slice); } else if (border_style != GTK_BORDER_STYLE_NONE) render_frame_internal (engine, cr, @@ -1999,6 +2003,8 @@ gtk_theming_engine_render_expander (GtkThemingEngine *engine, double x_double, y_double; gdouble angle; gint line_width; + gboolean running, is_rtl; + gdouble progress; cairo_save (cr); flags = gtk_theming_engine_get_state (engine); @@ -2006,24 +2012,34 @@ gtk_theming_engine_render_expander (GtkThemingEngine *engine, gtk_theming_engine_get (engine, flags, "color", &fg_color, NULL); - gtk_theming_engine_get (engine, 0, - "color", &outline_color, + gtk_theming_engine_get (engine, flags, + "border-color", &outline_color, NULL); + running = gtk_theming_engine_state_is_running (engine, GTK_STATE_ACTIVE, &progress); + is_rtl = (gtk_theming_engine_get_direction (engine) == GTK_TEXT_DIR_RTL); line_width = 1; - /* FIXME: LTR/RTL */ - if (flags & GTK_STATE_FLAG_ACTIVE) + if (!running) + progress = (flags & GTK_STATE_FLAG_ACTIVE) ? 1 : 0; + + if (!gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_HORIZONTAL)) { - angle = G_PI / 2; - interp = 1.0; + if (is_rtl) + angle = (G_PI) - ((G_PI / 2) * progress); + else + angle = (G_PI / 2) * progress; } else { - angle = 0; - interp = 0; + if (is_rtl) + angle = (G_PI / 2) + ((G_PI / 2) * progress); + else + angle = (G_PI / 2) - ((G_PI / 2) * progress); } + interp = progress; + /* Compute distance that the stroke extends beyonds the end * of the triangle we draw. */ @@ -2311,13 +2327,13 @@ gtk_theming_engine_render_layout (GtkThemingEngine *engine, cairo_set_matrix (cr, &cairo_matrix); } else - cairo_translate (cr, x, y); + cairo_move_to (cr, x, y); if (flags & GTK_STATE_FLAG_INSENSITIVE) { cairo_save (cr); cairo_set_source_rgb (cr, 1, 1, 1); - cairo_move_to (cr, 1, 1); + cairo_move_to (cr, x + 1, y + 1); _gtk_pango_fill_layout (cr, layout); cairo_restore (cr); } @@ -2517,12 +2533,11 @@ gtk_theming_engine_render_extension (GtkThemingEngine *engine, gap_side == GTK_POS_BOTTOM) render_background_internal (engine, cr, 0, 0, width, height, - junction); + GTK_JUNCTION_BOTTOM); else render_background_internal (engine, cr, 0, 0, height, width, - junction); - + GTK_JUNCTION_BOTTOM); cairo_restore (cr); cairo_save (cr); @@ -2593,7 +2608,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine, cairo_rectangle (cr, x, y, width, height); cairo_fill (cr); - if (gtk_theming_engine_has_class (engine, "grip")) + if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_GRIP)) { GtkJunctionSides sides; gint skip = -1; @@ -2858,7 +2873,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine, cairo_restore (cr); } - else if (gtk_theming_engine_has_class (engine, "paned")) + else if (gtk_theming_engine_has_class (engine, GTK_STYLE_CLASS_PANE_SEPARATOR)) { if (width > height) for (xx = x + width / 2 - 15; xx <= x + width / 2 + 15; xx += 5) @@ -2901,18 +2916,12 @@ gtk_theming_engine_render_activity (GtkThemingEngine *engine, gdouble half; gint i; - num_steps = 0; - - gtk_theming_engine_get_style (engine, - "num-steps", &num_steps, - NULL); + num_steps = 12; state = gtk_theming_engine_get_state (engine); gtk_theming_engine_get (engine, state, "color", &color, NULL); - if (num_steps == 0) - num_steps = 12; if (gtk_theming_engine_state_is_running (engine, GTK_STATE_ACTIVE, &progress)) step = (guint) (progress * num_steps); @@ -2999,6 +3008,55 @@ lookup_icon_size (GtkThemingEngine *engine, return gtk_icon_size_lookup_for_settings (settings, size, width, height); } +/* Kudos to the gnome-panel guys. */ +static void +colorshift_pixbuf (GdkPixbuf *src, + GdkPixbuf *dest, + gint shift) +{ + gint i, j; + gint width, height, has_alpha, src_rowstride, dest_rowstride; + guchar *target_pixels; + guchar *original_pixels; + guchar *pix_src; + guchar *pix_dest; + int val; + guchar r, g, b; + + has_alpha = gdk_pixbuf_get_has_alpha (src); + width = gdk_pixbuf_get_width (src); + height = gdk_pixbuf_get_height (src); + src_rowstride = gdk_pixbuf_get_rowstride (src); + dest_rowstride = gdk_pixbuf_get_rowstride (dest); + original_pixels = gdk_pixbuf_get_pixels (src); + target_pixels = gdk_pixbuf_get_pixels (dest); + + for (i = 0; i < height; i++) + { + pix_dest = target_pixels + i * dest_rowstride; + pix_src = original_pixels + i * src_rowstride; + + for (j = 0; j < width; j++) + { + r = *(pix_src++); + g = *(pix_src++); + b = *(pix_src++); + + val = r + shift; + *(pix_dest++) = CLAMP (val, 0, 255); + + val = g + shift; + *(pix_dest++) = CLAMP (val, 0, 255); + + val = b + shift; + *(pix_dest++) = CLAMP (val, 0, 255); + + if (has_alpha) + *(pix_dest++) = *(pix_src++); + } + } +} + static GdkPixbuf * gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine *engine, const GtkIconSource *source, @@ -3045,8 +3103,7 @@ gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine *engine, else if (state & GTK_STATE_FLAG_PRELIGHT) { stated = gdk_pixbuf_copy (scaled); - gdk_pixbuf_saturate_and_pixelate (scaled, stated, - 1.2, FALSE); + colorshift_pixbuf (scaled, stated, 30); g_object_unref (scaled); } else diff --git a/gtk/gtkthemingengine.h b/gtk/gtkthemingengine.h index 64b39216e2..ab90bf5a7b 100644 --- a/gtk/gtkthemingengine.h +++ b/gtk/gtkthemingengine.h @@ -240,6 +240,8 @@ void gtk_theming_engine_get_margin (GtkThemingEngine *engine, GtkStateFlags state, GtkBorder *margin); +const PangoFontDescription * gtk_theming_engine_get_font (GtkThemingEngine *engine, + GtkStateFlags state); GtkThemingEngine * gtk_theming_engine_load (const gchar *name); diff --git a/gtk/gtktimeline.c b/gtk/gtktimeline.c index 348011c768..4053da94f8 100644 --- a/gtk/gtktimeline.c +++ b/gtk/gtktimeline.c @@ -76,94 +76,94 @@ static void gtk_timeline_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void gtk_timeline_finalize (GObject *object); +static void _gtk_timeline_finalize (GObject *object); -G_DEFINE_TYPE (GtkTimeline, gtk_timeline, G_TYPE_OBJECT) +G_DEFINE_TYPE (GtkTimeline, _gtk_timeline, G_TYPE_OBJECT) static void -gtk_timeline_class_init (GtkTimelineClass *klass) +_gtk_timeline_class_init (GtkTimelineClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = gtk_timeline_set_property; object_class->get_property = gtk_timeline_get_property; - object_class->finalize = gtk_timeline_finalize; + object_class->finalize = _gtk_timeline_finalize; g_object_class_install_property (object_class, - PROP_FPS, - g_param_spec_uint ("fps", - "FPS", - "Frames per second for the timeline", - 1, G_MAXUINT, - DEFAULT_FPS, - G_PARAM_READWRITE)); + PROP_FPS, + g_param_spec_uint ("fps", + "FPS", + "Frames per second for the timeline", + 1, G_MAXUINT, + DEFAULT_FPS, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, - PROP_DURATION, - g_param_spec_uint ("duration", - "Animation Duration", - "Animation Duration", - 0, G_MAXUINT, - 0, - G_PARAM_READWRITE)); + PROP_DURATION, + g_param_spec_uint ("duration", + "Animation Duration", + "Animation Duration", + 0, G_MAXUINT, + 0, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, - PROP_LOOP, - g_param_spec_boolean ("loop", - "Loop", - "Whether the timeline loops or not", - FALSE, - G_PARAM_READWRITE)); + PROP_LOOP, + g_param_spec_boolean ("loop", + "Loop", + "Whether the timeline loops or not", + FALSE, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, - PROP_SCREEN, - g_param_spec_object ("screen", - "Screen", - "Screen to get the settings from", - GDK_TYPE_SCREEN, - G_PARAM_READWRITE)); + PROP_SCREEN, + g_param_spec_object ("screen", + "Screen", + "Screen to get the settings from", + GDK_TYPE_SCREEN, + G_PARAM_READWRITE)); signals[STARTED] = g_signal_new ("started", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkTimelineClass, started), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkTimelineClass, started), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); signals[PAUSED] = g_signal_new ("paused", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkTimelineClass, paused), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkTimelineClass, paused), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); signals[FINISHED] = g_signal_new ("finished", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkTimelineClass, finished), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkTimelineClass, finished), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); signals[FRAME] = g_signal_new ("frame", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkTimelineClass, frame), - NULL, NULL, - g_cclosure_marshal_VOID__DOUBLE, - G_TYPE_NONE, 1, - G_TYPE_DOUBLE); + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkTimelineClass, frame), + NULL, NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, 1, + G_TYPE_DOUBLE); g_type_class_add_private (klass, sizeof (GtkTimelinePriv)); } static void -gtk_timeline_init (GtkTimeline *timeline) +_gtk_timeline_init (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -194,20 +194,20 @@ gtk_timeline_set_property (GObject *object, switch (prop_id) { case PROP_FPS: - gtk_timeline_set_fps (timeline, g_value_get_uint (value)); + _gtk_timeline_set_fps (timeline, g_value_get_uint (value)); break; case PROP_DURATION: - gtk_timeline_set_duration (timeline, g_value_get_uint (value)); + _gtk_timeline_set_duration (timeline, g_value_get_uint (value)); break; case PROP_LOOP: - gtk_timeline_set_loop (timeline, g_value_get_boolean (value)); + _gtk_timeline_set_loop (timeline, g_value_get_boolean (value)); break; case PROP_DIRECTION: - gtk_timeline_set_direction (timeline, g_value_get_enum (value)); + _gtk_timeline_set_direction (timeline, g_value_get_enum (value)); break; case PROP_SCREEN: - gtk_timeline_set_screen (timeline, - GDK_SCREEN (g_value_get_object (value))); + _gtk_timeline_set_screen (timeline, + GDK_SCREEN (g_value_get_object (value))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -249,7 +249,7 @@ gtk_timeline_get_property (GObject *object, } static void -gtk_timeline_finalize (GObject *object) +_gtk_timeline_finalize (GObject *object) { GtkTimelinePriv *priv; GtkTimeline *timeline; @@ -266,10 +266,10 @@ gtk_timeline_finalize (GObject *object) if (priv->timer) g_timer_destroy (priv->timer); - G_OBJECT_CLASS (gtk_timeline_parent_class)->finalize (object); + G_OBJECT_CLASS (_gtk_timeline_parent_class)->finalize (object); } -gdouble +static gdouble calculate_progress (gdouble linear_progress, GtkTimelineProgressType progress_type) { @@ -291,7 +291,7 @@ calculate_progress (gdouble linear_progress, break; case GTK_TIMELINE_PROGRESS_EASE: - progress = (sinf ((progress - 0.5) * G_PI) + 1) / 2; + progress = (sin ((progress - 0.5) * G_PI) + 1) / 2; break; case GTK_TIMELINE_PROGRESS_EASE_IN: progress = pow (progress, 3); @@ -324,9 +324,9 @@ gtk_timeline_run_frame (GtkTimeline *timeline) progress = priv->last_progress; if (priv->direction == GTK_TIMELINE_DIRECTION_BACKWARD) - progress -= delta_progress; + progress -= delta_progress; else - progress += delta_progress; + progress += delta_progress; priv->last_progress = progress; @@ -343,18 +343,18 @@ gtk_timeline_run_frame (GtkTimeline *timeline) (priv->direction == GTK_TIMELINE_DIRECTION_BACKWARD && progress == 0.0)) { if (!priv->loop) - { - if (priv->source_id) - { - g_source_remove (priv->source_id); - priv->source_id = 0; - } + { + if (priv->source_id) + { + g_source_remove (priv->source_id); + priv->source_id = 0; + } g_timer_stop (priv->timer); - g_signal_emit (timeline, signals [FINISHED], 0); - return FALSE; - } + g_signal_emit (timeline, signals [FINISHED], 0); + return FALSE; + } else - gtk_timeline_rewind (timeline); + _gtk_timeline_rewind (timeline); } return TRUE; @@ -369,21 +369,21 @@ gtk_timeline_run_frame (GtkTimeline *timeline) * Return Value: the newly created #GtkTimeline **/ GtkTimeline * -gtk_timeline_new (guint duration) +_gtk_timeline_new (guint duration) { return g_object_new (GTK_TYPE_TIMELINE, - "duration", duration, - NULL); + "duration", duration, + NULL); } GtkTimeline * -gtk_timeline_new_for_screen (guint duration, - GdkScreen *screen) +_gtk_timeline_new_for_screen (guint duration, + GdkScreen *screen) { return g_object_new (GTK_TYPE_TIMELINE, - "duration", duration, - "screen", screen, - NULL); + "duration", duration, + "screen", screen, + NULL); } /** @@ -393,7 +393,7 @@ gtk_timeline_new_for_screen (guint duration, * Runs the timeline from the current frame. **/ void -gtk_timeline_start (GtkTimeline *timeline) +_gtk_timeline_start (GtkTimeline *timeline) { GtkTimelinePriv *priv; GtkSettings *settings; @@ -440,7 +440,7 @@ gtk_timeline_start (GtkTimeline *timeline) * Pauses the timeline. **/ void -gtk_timeline_pause (GtkTimeline *timeline) +_gtk_timeline_pause (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -464,7 +464,7 @@ gtk_timeline_pause (GtkTimeline *timeline) * Rewinds the timeline. **/ void -gtk_timeline_rewind (GtkTimeline *timeline) +_gtk_timeline_rewind (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -472,7 +472,7 @@ gtk_timeline_rewind (GtkTimeline *timeline) priv = timeline->priv; - if (gtk_timeline_get_direction(timeline) != GTK_TIMELINE_DIRECTION_FORWARD) + if (_gtk_timeline_get_direction (timeline) != GTK_TIMELINE_DIRECTION_FORWARD) priv->progress = priv->last_progress = 1.; else priv->progress = priv->last_progress = 0.; @@ -496,7 +496,7 @@ gtk_timeline_rewind (GtkTimeline *timeline) * Return Value: %TRUE if the timeline is running **/ gboolean -gtk_timeline_is_running (GtkTimeline *timeline) +_gtk_timeline_is_running (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -516,7 +516,7 @@ gtk_timeline_is_running (GtkTimeline *timeline) * Return Value: frames per second **/ guint -gtk_timeline_get_fps (GtkTimeline *timeline) +_gtk_timeline_get_fps (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -535,7 +535,7 @@ gtk_timeline_get_fps (GtkTimeline *timeline) * the timeline will play. **/ void -gtk_timeline_set_fps (GtkTimeline *timeline, +_gtk_timeline_set_fps (GtkTimeline *timeline, guint fps) { GtkTimelinePriv *priv; @@ -547,12 +547,12 @@ gtk_timeline_set_fps (GtkTimeline *timeline, priv->fps = fps; - if (gtk_timeline_is_running (timeline)) + if (_gtk_timeline_is_running (timeline)) { g_source_remove (priv->source_id); priv->source_id = gdk_threads_add_timeout (FRAME_INTERVAL (priv->fps), - (GSourceFunc) gtk_timeline_run_frame, - timeline); + (GSourceFunc) gtk_timeline_run_frame, + timeline); } g_object_notify (G_OBJECT (timeline), "fps"); @@ -568,7 +568,7 @@ gtk_timeline_set_fps (GtkTimeline *timeline, * Return Value: %TRUE if the timeline loops **/ gboolean -gtk_timeline_get_loop (GtkTimeline *timeline) +_gtk_timeline_get_loop (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -587,8 +587,8 @@ gtk_timeline_get_loop (GtkTimeline *timeline) * when it has reached the end. **/ void -gtk_timeline_set_loop (GtkTimeline *timeline, - gboolean loop) +_gtk_timeline_set_loop (GtkTimeline *timeline, + gboolean loop) { GtkTimelinePriv *priv; @@ -604,8 +604,8 @@ gtk_timeline_set_loop (GtkTimeline *timeline, } void -gtk_timeline_set_duration (GtkTimeline *timeline, - guint duration) +_gtk_timeline_set_duration (GtkTimeline *timeline, + guint duration) { GtkTimelinePriv *priv; @@ -621,7 +621,7 @@ gtk_timeline_set_duration (GtkTimeline *timeline, } guint -gtk_timeline_get_duration (GtkTimeline *timeline) +_gtk_timeline_get_duration (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -640,8 +640,8 @@ gtk_timeline_get_duration (GtkTimeline *timeline) * Sets the direction of the timeline. **/ void -gtk_timeline_set_direction (GtkTimeline *timeline, - GtkTimelineDirection direction) +_gtk_timeline_set_direction (GtkTimeline *timeline, + GtkTimelineDirection direction) { GtkTimelinePriv *priv; @@ -660,7 +660,7 @@ gtk_timeline_set_direction (GtkTimeline *timeline, * Return Value: direction **/ GtkTimelineDirection -gtk_timeline_get_direction (GtkTimeline *timeline) +_gtk_timeline_get_direction (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -671,8 +671,8 @@ gtk_timeline_get_direction (GtkTimeline *timeline) } void -gtk_timeline_set_screen (GtkTimeline *timeline, - GdkScreen *screen) +_gtk_timeline_set_screen (GtkTimeline *timeline, + GdkScreen *screen) { GtkTimelinePriv *priv; @@ -690,7 +690,7 @@ gtk_timeline_set_screen (GtkTimeline *timeline, } GdkScreen * -gtk_timeline_get_screen (GtkTimeline *timeline) +_gtk_timeline_get_screen (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -701,7 +701,7 @@ gtk_timeline_get_screen (GtkTimeline *timeline) } gdouble -gtk_timeline_get_progress (GtkTimeline *timeline) +_gtk_timeline_get_progress (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -712,7 +712,7 @@ gtk_timeline_get_progress (GtkTimeline *timeline) } GtkTimelineProgressType -gtk_timeline_get_progress_type (GtkTimeline *timeline) +_gtk_timeline_get_progress_type (GtkTimeline *timeline) { GtkTimelinePriv *priv; @@ -723,8 +723,8 @@ gtk_timeline_get_progress_type (GtkTimeline *timeline) } void -gtk_timeline_set_progress_type (GtkTimeline *timeline, - GtkTimelineProgressType progress_type) +_gtk_timeline_set_progress_type (GtkTimeline *timeline, + GtkTimelineProgressType progress_type) { GtkTimelinePriv *priv; diff --git a/gtk/gtktimeline.h b/gtk/gtktimeline.h index d9a6ae5d2c..0b0aee16d0 100644 --- a/gtk/gtktimeline.h +++ b/gtk/gtktimeline.h @@ -26,7 +26,7 @@ G_BEGIN_DECLS -#define GTK_TYPE_TIMELINE (gtk_timeline_get_type ()) +#define GTK_TYPE_TIMELINE (_gtk_timeline_get_type ()) #define GTK_TIMELINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TIMELINE, GtkTimeline)) #define GTK_TIMELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TIMELINE, GtkTimelineClass)) #define GTK_IS_TIMELINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TIMELINE)) @@ -73,43 +73,43 @@ struct GtkTimelineClass }; -GType gtk_timeline_get_type (void) G_GNUC_CONST; +GType _gtk_timeline_get_type (void) G_GNUC_CONST; -GtkTimeline *gtk_timeline_new (guint duration); -GtkTimeline *gtk_timeline_new_for_screen (guint duration, - GdkScreen *screen); +GtkTimeline * _gtk_timeline_new (guint duration); +GtkTimeline * _gtk_timeline_new_for_screen (guint duration, + GdkScreen *screen); -void gtk_timeline_start (GtkTimeline *timeline); -void gtk_timeline_pause (GtkTimeline *timeline); -void gtk_timeline_rewind (GtkTimeline *timeline); +void _gtk_timeline_start (GtkTimeline *timeline); +void _gtk_timeline_pause (GtkTimeline *timeline); +void _gtk_timeline_rewind (GtkTimeline *timeline); -gboolean gtk_timeline_is_running (GtkTimeline *timeline); +gboolean _gtk_timeline_is_running (GtkTimeline *timeline); -guint gtk_timeline_get_fps (GtkTimeline *timeline); -void gtk_timeline_set_fps (GtkTimeline *timeline, - guint fps); +guint _gtk_timeline_get_fps (GtkTimeline *timeline); +void _gtk_timeline_set_fps (GtkTimeline *timeline, + guint fps); -gboolean gtk_timeline_get_loop (GtkTimeline *timeline); -void gtk_timeline_set_loop (GtkTimeline *timeline, - gboolean loop); +gboolean _gtk_timeline_get_loop (GtkTimeline *timeline); +void _gtk_timeline_set_loop (GtkTimeline *timeline, + gboolean loop); -guint gtk_timeline_get_duration (GtkTimeline *timeline); -void gtk_timeline_set_duration (GtkTimeline *timeline, - guint duration); +guint _gtk_timeline_get_duration (GtkTimeline *timeline); +void _gtk_timeline_set_duration (GtkTimeline *timeline, + guint duration); -GdkScreen *gtk_timeline_get_screen (GtkTimeline *timeline); -void gtk_timeline_set_screen (GtkTimeline *timeline, - GdkScreen *screen); +GdkScreen * _gtk_timeline_get_screen (GtkTimeline *timeline); +void _gtk_timeline_set_screen (GtkTimeline *timeline, + GdkScreen *screen); -GtkTimelineDirection gtk_timeline_get_direction (GtkTimeline *timeline); -void gtk_timeline_set_direction (GtkTimeline *timeline, - GtkTimelineDirection direction); +GtkTimelineDirection _gtk_timeline_get_direction (GtkTimeline *timeline); +void _gtk_timeline_set_direction (GtkTimeline *timeline, + GtkTimelineDirection direction); -gdouble gtk_timeline_get_progress (GtkTimeline *timeline); +gdouble _gtk_timeline_get_progress (GtkTimeline *timeline); -GtkTimelineProgressType gtk_timeline_get_progress_type (GtkTimeline *timeline); -void gtk_timeline_set_progress_type (GtkTimeline *timeline, - GtkTimelineProgressType progress_type); +GtkTimelineProgressType _gtk_timeline_get_progress_type (GtkTimeline *timeline); +void _gtk_timeline_set_progress_type (GtkTimeline *timeline, + GtkTimelineProgressType progress_type); G_END_DECLS diff --git a/gtk/gtktoggleaction.c b/gtk/gtktoggleaction.c index 525d462af0..c36a924cfe 100644 --- a/gtk/gtktoggleaction.c +++ b/gtk/gtktoggleaction.c @@ -166,10 +166,11 @@ gtk_toggle_action_init (GtkToggleAction *action) /** * gtk_toggle_action_new: * @name: A unique name for the action - * @label: (allow-none): The label displayed in menu items and on buttons, or %NULL + * @label: (allow-none): The label displayed in menu items and on buttons, + * or %NULL * @tooltip: (allow-none): A tooltip for the action, or %NULL - * @stock_id: The stock icon to display in widgets representing the - * action, or %NULL + * @stock_id: (allow-none): The stock icon to display in widgets representing + * the action, or %NULL * * Creates a new #GtkToggleAction object. To add the action to * a #GtkActionGroup and set the accelerator for the action, diff --git a/gtk/gtktogglebutton.c b/gtk/gtktogglebutton.c index 7b8ae49f62..43dbd49a9e 100644 --- a/gtk/gtktogglebutton.c +++ b/gtk/gtktogglebutton.c @@ -471,25 +471,19 @@ gtk_toggle_button_draw (GtkWidget *widget, GtkToggleButtonPrivate *priv = toggle_button->priv; GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget)); GtkButton *button = GTK_BUTTON (widget); - GtkStateType state_type; - GtkShadowType shadow_type; + GtkStateType state; - state_type = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); if (priv->inconsistent) - { - if (state_type == GTK_STATE_ACTIVE) - state_type = GTK_STATE_NORMAL; - shadow_type = GTK_SHADOW_ETCHED_IN; - } - else - shadow_type = button->priv->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT; + state |= GTK_STATE_FLAG_INCONSISTENT; + else if (button->priv->depressed) + state |= GTK_STATE_FLAG_ACTIVE; _gtk_button_paint (button, cr, gtk_widget_get_allocated_width (widget), gtk_widget_get_allocated_height (widget), - state_type, shadow_type, - "togglebutton", "togglebuttondefault"); + state); if (child) gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr); diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c index 5d914fada4..e222e08f9d 100644 --- a/gtk/gtktoolbar.c +++ b/gtk/gtktoolbar.c @@ -32,19 +32,17 @@ #include "config.h" -#include "gtktoolbar.h" - #include #include -#include +#include "gtktoolbar.h" #include "gtkarrow.h" #include "gtkbindings.h" #include "gtkhbox.h" #include "gtkimage.h" #include "gtklabel.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkmenu.h" #include "gtkorientable.h" @@ -57,6 +55,7 @@ #include "gtkvbox.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" /** @@ -195,8 +194,7 @@ static void gtk_toolbar_get_preferred_height (GtkWidget *widget, static void gtk_toolbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static void gtk_toolbar_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_toolbar_style_updated (GtkWidget *widget); static gboolean gtk_toolbar_focus (GtkWidget *widget, GtkDirectionType dir); static void gtk_toolbar_move_focus (GtkWidget *widget, @@ -371,7 +369,7 @@ gtk_toolbar_class_init (GtkToolbarClass *klass) widget_class->get_preferred_width = gtk_toolbar_get_preferred_width; widget_class->get_preferred_height = gtk_toolbar_get_preferred_height; widget_class->size_allocate = gtk_toolbar_size_allocate; - widget_class->style_set = gtk_toolbar_style_set; + widget_class->style_updated = gtk_toolbar_style_updated; widget_class->focus = gtk_toolbar_focus; /* need to override the base class function via override_class_handler, @@ -646,6 +644,7 @@ static void gtk_toolbar_init (GtkToolbar *toolbar) { GtkToolbarPrivate *priv; + GtkStyleContext *context; toolbar->priv = G_TYPE_INSTANCE_GET_PRIVATE (toolbar, GTK_TYPE_TOOLBAR, @@ -685,6 +684,9 @@ gtk_toolbar_init (GtkToolbar *toolbar) priv->max_homogeneous_pixels = -1; priv->timer = g_timer_new (); + + context = gtk_widget_get_style_context (GTK_WIDGET (toolbar)); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOOLBAR); } static void @@ -813,8 +815,6 @@ gtk_toolbar_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); g_object_ref (window); - gtk_widget_style_attach (widget); - priv->event_window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); gdk_window_set_user_data (priv->event_window, toolbar); @@ -842,21 +842,25 @@ gtk_toolbar_draw (GtkWidget *widget, { GtkToolbar *toolbar = GTK_TOOLBAR (widget); GtkToolbarPrivate *priv = toolbar->priv; + GtkStyleContext *context; + GtkStateFlags state; GList *list; guint border_width; border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_background (context, cr, border_width, border_width, + gtk_widget_get_allocated_width (widget) - 2 * border_width, + gtk_widget_get_allocated_height (widget) - 2 * border_width); + gtk_render_frame (context, cr, border_width, border_width, + gtk_widget_get_allocated_width (widget) - 2 * border_width, + gtk_widget_get_allocated_height (widget) - 2 * border_width); - gtk_paint_box (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - get_shadow_type (toolbar), - widget, "toolbar", - border_width, - border_width, - gtk_widget_get_allocated_width (widget) - 2 * border_width, - gtk_widget_get_allocated_height (widget) - 2 * border_width); - for (list = priv->content; list != NULL; list = list->next) { ToolbarContent *content = list->data; @@ -867,7 +871,9 @@ gtk_toolbar_draw (GtkWidget *widget, gtk_container_propagate_draw (GTK_CONTAINER (widget), priv->arrow_button, cr); - + + gtk_style_context_restore (context); + return FALSE; } @@ -989,11 +995,16 @@ gtk_toolbar_size_request (GtkWidget *widget, if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) { - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; - style = gtk_widget_get_style (widget); - requisition->width += 2 * style->xthickness; - requisition->height += 2 * style->ythickness; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + + requisition->width += padding.left + padding.right; + requisition->height += padding.top + padding.bottom; } priv->button_maxw = max_homogeneous_child_width; @@ -1222,7 +1233,9 @@ gtk_toolbar_begin_sliding (GtkToolbar *toolbar) GtkAllocation allocation; GtkWidget *widget = GTK_WIDGET (toolbar); GtkToolbarPrivate *priv = toolbar->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; GList *list; gint cur_x; gint cur_y; @@ -1244,7 +1257,9 @@ gtk_toolbar_begin_sliding (GtkToolbar *toolbar) priv->idle_id = gdk_threads_add_idle (slide_idle_handler, toolbar); gtk_widget_get_allocation (widget, &allocation); - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); vertical = (priv->orientation == GTK_ORIENTATION_VERTICAL); @@ -1252,13 +1267,13 @@ gtk_toolbar_begin_sliding (GtkToolbar *toolbar) if (rtl) { - cur_x = allocation.width - border_width - style->xthickness; - cur_y = allocation.height - border_width - style->ythickness; + cur_x = allocation.width - border_width - padding.right; + cur_y = allocation.height - border_width - padding.top; } else { - cur_x = border_width + style->xthickness; - cur_y = border_width + style->ythickness; + cur_x = border_width + padding.left; + cur_y = border_width + padding.top; } cur_x += allocation.x; @@ -1288,14 +1303,16 @@ gtk_toolbar_begin_sliding (GtkToolbar *toolbar) if (vertical) { new_start_allocation.width = allocation.width - - 2 * border_width - 2 * style->xthickness; + 2 * border_width - + padding.left - padding.right; new_start_allocation.height = 0; } else { new_start_allocation.width = 0; new_start_allocation.height = allocation.height - - 2 * border_width - 2 * style->ythickness; + 2 * border_width - + padding.top - padding.bottom; } } @@ -1454,7 +1471,9 @@ gtk_toolbar_size_allocate (GtkWidget *widget, GtkAllocation *allocations; ItemState *new_states; GtkAllocation arrow_allocation; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding; gint arrow_size; gint size, pos, short_size; GList *list; @@ -1472,7 +1491,9 @@ gtk_toolbar_size_allocate (GtkWidget *widget, GtkAllocation item_area; GtkShadowType shadow_type; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); gtk_widget_get_allocation (widget, &widget_allocation); size_changed = FALSE; @@ -1515,8 +1536,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, if (shadow_type != GTK_SHADOW_NONE) { - available_size -= 2 * style->xthickness; - short_size -= 2 * style->ythickness; + available_size -= padding.left + padding.right; + short_size -= padding.top + padding.bottom; } } else @@ -1527,8 +1548,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, if (shadow_type != GTK_SHADOW_NONE) { - available_size -= 2 * style->ythickness; - short_size -= 2 * style->xthickness; + available_size -= padding.top + padding.bottom; + short_size -= padding.left + padding.right; } } @@ -1704,8 +1725,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, if (shadow_type != GTK_SHADOW_NONE) { - allocations[i].x += style->xthickness; - allocations[i].y += style->ythickness; + allocations[i].x += padding.left; + allocations[i].y += padding.top; } } @@ -1716,8 +1737,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, if (shadow_type != GTK_SHADOW_NONE) { - arrow_allocation.x += style->xthickness; - arrow_allocation.y += style->ythickness; + arrow_allocation.x += padding.left; + arrow_allocation.y += padding.top; } } @@ -1725,8 +1746,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, item_area.y += allocation->y; if (shadow_type != GTK_SHADOW_NONE) { - item_area.x += style->xthickness; - item_area.y += style->ythickness; + item_area.x += padding.left; + item_area.y += padding.top; } /* did anything change? */ @@ -1847,8 +1868,7 @@ gtk_toolbar_update_button_relief (GtkToolbar *toolbar) } static void -gtk_toolbar_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_toolbar_style_updated (GtkWidget *widget) { GtkToolbar *toolbar = GTK_TOOLBAR (widget); GtkToolbarPrivate *priv = toolbar->priv; @@ -1856,12 +1876,10 @@ gtk_toolbar_style_set (GtkWidget *widget, priv->max_homogeneous_pixels = -1; if (gtk_widget_get_realized (widget)) - gtk_style_set_background (gtk_widget_get_style (widget), - gtk_widget_get_window (widget), - gtk_widget_get_state (widget)); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + gtk_widget_get_window (widget)); - if (prev_style) - gtk_toolbar_update_button_relief (GTK_TOOLBAR (widget)); + gtk_toolbar_update_button_relief (GTK_TOOLBAR (widget)); } static GList * @@ -3302,11 +3320,18 @@ calculate_max_homogeneous_pixels (GtkWidget *widget) { PangoContext *context; PangoFontMetrics *metrics; + const PangoFontDescription *font_desc; + GtkStyleContext *style_context; + GtkStateFlags state; gint char_width; context = gtk_widget_get_pango_context (widget); - metrics = pango_context_get_metrics (context, - gtk_widget_get_style (widget)->font_desc, + style_context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + font_desc = gtk_style_context_get_font (style_context, state); + + metrics = pango_context_get_metrics (context, font_desc, pango_context_get_language (context)); char_width = pango_font_metrics_get_approximate_char_width (metrics); pango_font_metrics_unref (metrics); @@ -3588,9 +3613,7 @@ static GtkReliefStyle get_button_relief (GtkToolbar *toolbar) { GtkReliefStyle button_relief = GTK_RELIEF_NORMAL; - - gtk_widget_ensure_style (GTK_WIDGET (toolbar)); - + gtk_widget_style_get (GTK_WIDGET (toolbar), "button-relief", &button_relief, NULL); @@ -3648,9 +3671,10 @@ _gtk_toolbar_paint_space_line (GtkWidget *widget, { GtkToolbarPrivate *priv = toolbar->priv; GtkOrientation orientation; - GtkStateType state; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; GdkWindow *window; + GtkBorder padding; int width, height; const double start_fraction = (SPACE_LINE_START / SPACE_LINE_DIVISION); const double end_fraction = (SPACE_LINE_END / SPACE_LINE_DIVISION); @@ -3659,11 +3683,12 @@ _gtk_toolbar_paint_space_line (GtkWidget *widget, orientation = toolbar? priv->orientation : GTK_ORIENTATION_HORIZONTAL; - style = gtk_widget_get_style (widget); + context = gtk_widget_get_style_context (widget); window = gtk_widget_get_window (widget); - state = gtk_widget_get_state (widget); + state = gtk_widget_get_state_flags (widget); width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); + gtk_style_context_get_padding (context, state, &padding); if (orientation == GTK_ORIENTATION_HORIZONTAL) { @@ -3676,20 +3701,17 @@ _gtk_toolbar_paint_space_line (GtkWidget *widget, NULL); if (wide_separators) - gtk_paint_box (style, cr, - state, GTK_SHADOW_ETCHED_OUT, - widget, "vseparator", - (width - separator_width) / 2, - height * start_fraction, - separator_width, - height * (end_fraction - start_fraction)); + gtk_render_frame (context, cr, + (width - separator_width) / 2, + height * start_fraction, + separator_width, + height * (end_fraction - start_fraction)); else - gtk_paint_vline (style, cr, - state, widget, - "toolbar", + gtk_render_line (context, cr, + (width - padding.left) / 2, height * start_fraction, - height * end_fraction, - (width - style->xthickness) / 2); + (width - padding.left) / 2, + height * end_fraction); } else { @@ -3702,20 +3724,17 @@ _gtk_toolbar_paint_space_line (GtkWidget *widget, NULL); if (wide_separators) - gtk_paint_box (style, cr, - state, GTK_SHADOW_ETCHED_OUT, - widget, "hseparator", - width * start_fraction, - (height - separator_height) / 2, - width * (end_fraction - start_fraction), - separator_height); + gtk_render_frame (context, cr, + width * start_fraction, + (height - separator_height) / 2, + width * (end_fraction - start_fraction), + separator_height); else - gtk_paint_hline (style, cr, - state, widget, - "toolbar", + gtk_render_line (context, cr, width * start_fraction, + (height - padding.top) / 2, width * end_fraction, - (height - style->ythickness) / 2); + (height - padding.top) / 2); } } diff --git a/gtk/gtktoolbutton.c b/gtk/gtktoolbutton.c index fd9e70d692..9d22e530c7 100644 --- a/gtk/gtktoolbutton.c +++ b/gtk/gtktoolbutton.c @@ -73,8 +73,7 @@ static void gtk_tool_button_toolbar_reconfigured (GtkToolItem *tool_item); static gboolean gtk_tool_button_create_menu_proxy (GtkToolItem *item); static void button_clicked (GtkWidget *widget, GtkToolButton *button); -static void gtk_tool_button_style_set (GtkWidget *widget, - GtkStyle *prev_style); +static void gtk_tool_button_style_updated (GtkWidget *widget); static void gtk_tool_button_construct_contents (GtkToolItem *tool_item); @@ -153,7 +152,7 @@ gtk_tool_button_class_init (GtkToolButtonClass *klass) object_class->notify = gtk_tool_button_property_notify; object_class->finalize = gtk_tool_button_finalize; - widget_class->style_set = gtk_tool_button_style_set; + widget_class->style_updated = gtk_tool_button_style_updated; tool_item_class->create_menu_proxy = gtk_tool_button_create_menu_proxy; tool_item_class->toolbar_reconfigured = gtk_tool_button_toolbar_reconfigured; @@ -807,8 +806,7 @@ gtk_tool_button_update_icon_spacing (GtkToolButton *button) } static void -gtk_tool_button_style_set (GtkWidget *widget, - GtkStyle *prev_style) +gtk_tool_button_style_updated (GtkWidget *widget) { gtk_tool_button_update_icon_spacing (GTK_TOOL_BUTTON (widget)); } diff --git a/gtk/gtktoolitem.c b/gtk/gtktoolitem.c index 6a7a45a131..b296e3b9a9 100644 --- a/gtk/gtktoolitem.c +++ b/gtk/gtktoolitem.c @@ -32,7 +32,7 @@ #include "gtksizerequest.h" #include "gtkactivatable.h" #include "gtkintl.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkprivate.h" @@ -451,8 +451,6 @@ gtk_tool_item_realize (GtkWidget *widget) if (toolitem->priv->use_drag_window) create_drag_window(toolitem); - - gtk_widget_style_attach (widget); } static void diff --git a/gtk/gtktoolitemgroup.c b/gtk/gtktoolitemgroup.c index abcc64014b..e10e351526 100644 --- a/gtk/gtktoolitemgroup.c +++ b/gtk/gtktoolitemgroup.c @@ -22,11 +22,11 @@ #include "config.h" -#include "gtktoolpaletteprivate.h" - -#include #include #include + +#include "gtktoolpaletteprivate.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkintl.h" @@ -84,7 +84,6 @@ struct _GtkToolItemGroupPrivate gboolean animation; gint64 animation_start; GSource *animation_timeout; - GtkExpanderStyle expander_style; gint expander_size; gint header_spacing; PangoEllipsizeMode ellipsize; @@ -266,43 +265,52 @@ gtk_tool_item_group_header_draw_cb (GtkWidget *widget, { GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (data); GtkToolItemGroupPrivate* priv = group->priv; - GtkExpanderStyle expander_style; GtkOrientation orientation; gint x, y, width, height; GtkTextDirection direction; + GtkStyleContext *context; + GtkStateFlags state = 0; orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group)); - expander_style = priv->expander_style; direction = gtk_widget_get_direction (widget); width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); + context = gtk_widget_get_style_context (widget); + + if (!priv->collapsed) + state |= GTK_STATE_FLAG_ACTIVE; + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER); if (GTK_ORIENTATION_VERTICAL == orientation) { - if (GTK_TEXT_DIR_RTL == direction) - x = width - priv->expander_size / 2; - else - x = priv->expander_size / 2; + gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL); - y = height / 2; + if (GTK_TEXT_DIR_RTL == direction) + x = width; + else + x = 0; + + y = height / 2 - priv->expander_size / 2; } else { - x = width / 2; - y = priv->expander_size / 2; - - /* Unfortunatly gtk_paint_expander() doesn't support rotated drawing - * modes. Luckily the following shady arithmetics produce the desired - * result. */ - expander_style = GTK_EXPANDER_EXPANDED - expander_style; + gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL); + x = width / 2 - priv->expander_size / 2; + y = 0; } - gtk_paint_expander (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (priv->header), - GTK_WIDGET (group), - "tool-palette-header", x, y, - expander_style); + /* The expander is the only animatable region */ + gtk_style_context_push_animatable_region (context, GUINT_TO_POINTER (1)); + + gtk_render_expander (context, cr, x, y, + priv->expander_size, + priv->expander_size); + + gtk_style_context_pop_animatable_region (context); + gtk_style_context_restore (context); return FALSE; } @@ -382,7 +390,6 @@ gtk_tool_item_group_init (GtkToolItemGroup *group) priv->children = NULL; priv->header_spacing = DEFAULT_HEADER_SPACING; priv->expander_size = DEFAULT_EXPANDER_SIZE; - priv->expander_style = GTK_EXPANDER_EXPANDED; priv->label_widget = gtk_label_new (NULL); gtk_misc_set_alignment (GTK_MISC (priv->label_widget), 0.0, 0.5); @@ -1112,13 +1119,13 @@ gtk_tool_item_group_set_focus_cb (GtkWidget *window, if (gtk_widget_translate_coordinates (widget, p, 0, 0, NULL, &y) && y < 0) { - y += adjustment->value; + y += gtk_adjustment_get_value (adjustment); gtk_adjustment_clamp_page (adjustment, y, y + allocation.height); } else if (gtk_widget_translate_coordinates (widget, p, 0, allocation.height, NULL, &y) && y > p_allocation.height) { - y += adjustment->value; + y += gtk_adjustment_get_value (adjustment); gtk_adjustment_clamp_page (adjustment, y - allocation.height, y); } } @@ -1136,13 +1143,13 @@ gtk_tool_item_group_set_focus_cb (GtkWidget *window, if (gtk_widget_translate_coordinates (widget, p, 0, 0, &x, NULL) && x < 0) { - x += adjustment->value; + x += gtk_adjustment_get_value (adjustment); gtk_adjustment_clamp_page (adjustment, x, x + allocation.width); } else if (gtk_widget_translate_coordinates (widget, p, allocation.width, 0, &x, NULL) && x > p_allocation.width) { - x += adjustment->value; + x += gtk_adjustment_get_value (adjustment); gtk_adjustment_clamp_page (adjustment, x - allocation.width, x); } @@ -1200,10 +1207,12 @@ gtk_tool_item_group_realize (GtkWidget *widget) GdkDisplay *display; gint attributes_mask; guint border_width; + GtkStyleContext *context; gtk_widget_set_realized (widget, TRUE); border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); + context = gtk_widget_get_style_context (widget); gtk_widget_get_allocation (widget, &allocation); @@ -1231,9 +1240,7 @@ gtk_tool_item_group_realize (GtkWidget *widget) gdk_window_set_user_data (window, widget); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), - window, GTK_STATE_NORMAL); + gtk_style_context_set_background (context, window); gtk_container_forall (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_set_parent_window, @@ -1254,11 +1261,10 @@ gtk_tool_item_group_unrealize (GtkWidget *widget) } static void -gtk_tool_item_group_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_tool_item_group_style_updated (GtkWidget *widget) { gtk_tool_item_group_header_adjust_style (GTK_TOOL_ITEM_GROUP (widget)); - GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->style_set (widget, previous_style); + GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->style_updated (widget); } static void @@ -1573,7 +1579,7 @@ gtk_tool_item_group_class_init (GtkToolItemGroupClass *cls) wclass->size_allocate = gtk_tool_item_group_size_allocate; wclass->realize = gtk_tool_item_group_realize; wclass->unrealize = gtk_tool_item_group_unrealize; - wclass->style_set = gtk_tool_item_group_style_set; + wclass->style_updated = gtk_tool_item_group_style_updated; wclass->screen_changed = gtk_tool_item_group_screen_changed; cclass->add = gtk_tool_item_group_add; @@ -1866,22 +1872,6 @@ gtk_tool_item_group_animation_cb (gpointer data) /* Enque this early to reduce number of expose events. */ gtk_widget_queue_resize_no_redraw (GTK_WIDGET (group)); - /* Figure out current style of the expander arrow. */ - if (priv->collapsed) - { - if (priv->expander_style == GTK_EXPANDER_EXPANDED) - priv->expander_style = GTK_EXPANDER_SEMI_COLLAPSED; - else - priv->expander_style = GTK_EXPANDER_COLLAPSED; - } - else - { - if (priv->expander_style == GTK_EXPANDER_COLLAPSED) - priv->expander_style = GTK_EXPANDER_SEMI_EXPANDED; - else - priv->expander_style = GTK_EXPANDER_EXPANDED; - } - gtk_tool_item_group_force_expose (group); /* Finish animation when done. */ @@ -1921,6 +1911,8 @@ gtk_tool_item_group_set_collapsed (GtkToolItemGroup *group, GTK_WIDGET (group)); if (collapsed != priv->collapsed) { + GtkStyleContext *context; + if (priv->animation) { if (priv->animation_timeout) @@ -1932,14 +1924,23 @@ gtk_tool_item_group_set_collapsed (GtkToolItemGroup *group, g_source_set_callback (priv->animation_timeout, gtk_tool_item_group_animation_cb, group, NULL); - g_source_attach (priv->animation_timeout, NULL); + + context = gtk_widget_get_style_context (gtk_bin_get_child (GTK_BIN (priv->header))); + + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_EXPANDER); + + gtk_style_context_notify_state_change (context, + gtk_widget_get_window (priv->header), + GUINT_TO_POINTER (1), + GTK_STATE_FLAG_ACTIVE, + !collapsed); + + gtk_style_context_restore (context); } - else - { - priv->expander_style = GTK_EXPANDER_COLLAPSED; - gtk_tool_item_group_force_expose (group); - } + else + gtk_tool_item_group_force_expose (group); priv->collapsed = collapsed; g_object_notify (G_OBJECT (group), "collapsed"); diff --git a/gtk/gtktoolpalette.c b/gtk/gtktoolpalette.c index 383d6b5555..ed3aed282d 100644 --- a/gtk/gtktoolpalette.c +++ b/gtk/gtktoolpalette.c @@ -26,7 +26,7 @@ #include "gtktoolpaletteprivate.h" #include "gtkmarshalers.h" - +#include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtkscrollable.h" #include "gtkintl.h" @@ -263,6 +263,7 @@ gtk_tool_palette_set_property (GObject *object, if ((guint) g_value_get_enum (value) != palette->priv->orientation) { palette->priv->orientation = g_value_get_enum (value); + _gtk_orientable_set_style_classes (GTK_ORIENTABLE (palette)); gtk_tool_palette_reconfigured (palette); } break; @@ -662,33 +663,35 @@ gtk_tool_palette_size_allocate (GtkWidget *widget, /* update the scrollbar to match the displayed adjustment */ if (adjustment) { - gdouble value; - - adjustment->page_increment = page_size * 0.9; - adjustment->step_increment = page_size * 0.1; - adjustment->page_size = page_size; + gdouble value, lower, upper; if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation || GTK_TEXT_DIR_LTR == direction) { - adjustment->lower = 0; - adjustment->upper = MAX (0, page_start); + lower = 0; + upper = MAX (0, page_start); - value = MIN (offset, adjustment->upper - adjustment->page_size); + value = MIN (offset, upper - page_size); gtk_adjustment_clamp_page (adjustment, value, offset + page_size); } else { - adjustment->lower = page_size - MAX (0, page_start); - adjustment->upper = page_size; + lower = page_size - MAX (0, page_start); + upper = page_size; offset = -offset; - value = MAX (offset, adjustment->lower); + value = MAX (offset, lower); gtk_adjustment_clamp_page (adjustment, offset, value + page_size); } - gtk_adjustment_changed (adjustment); + gtk_adjustment_configure (adjustment, + value, + lower, + upper, + page_size * 0.1, + page_size * 0.9, + page_size); } } @@ -757,9 +760,8 @@ gtk_tool_palette_realize (GtkWidget *widget) gtk_widget_set_window (widget, window); gdk_window_set_user_data (window, widget); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), - window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + window); gtk_container_forall (GTK_CONTAINER (widget), (GtkCallback) gtk_widget_set_parent_window, @@ -1672,23 +1674,25 @@ gtk_tool_palette_get_drag_item (GtkToolPalette *palette, const GtkSelectionData *selection) { GtkToolPaletteDragData *data; + GdkAtom target; g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), NULL); g_return_val_if_fail (NULL != selection, NULL); - g_return_val_if_fail (selection->format == 8, NULL); - g_return_val_if_fail (selection->length == sizeof (GtkToolPaletteDragData), NULL); - g_return_val_if_fail (selection->target == dnd_target_atom_item || - selection->target == dnd_target_atom_group, + g_return_val_if_fail (gtk_selection_data_get_format (selection) == 8, NULL); + g_return_val_if_fail (gtk_selection_data_get_length (selection) == sizeof (GtkToolPaletteDragData), NULL); + target = gtk_selection_data_get_target (selection); + g_return_val_if_fail (target == dnd_target_atom_item || + target == dnd_target_atom_group, NULL); - data = (GtkToolPaletteDragData*) selection->data; + data = (GtkToolPaletteDragData*) gtk_selection_data_get_data (selection); g_return_val_if_fail (data->palette == palette, NULL); - if (dnd_target_atom_item == selection->target) + if (dnd_target_atom_item == target) g_return_val_if_fail (GTK_IS_TOOL_ITEM (data->item), NULL); - else if (dnd_target_atom_group == selection->target) + else if (dnd_target_atom_group == target) g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (data->item), NULL); return data->item; @@ -1818,12 +1822,15 @@ gtk_tool_palette_item_drag_data_get (GtkWidget *widget, gpointer data) { GtkToolPaletteDragData drag_data = { GTK_TOOL_PALETTE (data), NULL }; + GdkAtom target; - if (selection->target == dnd_target_atom_item) + target = gtk_selection_data_get_target (selection); + + if (target == dnd_target_atom_item) drag_data.item = gtk_widget_get_ancestor (widget, GTK_TYPE_TOOL_ITEM); if (drag_data.item) - gtk_selection_data_set (selection, selection->target, 8, + gtk_selection_data_set (selection, target, 8, (guchar*) &drag_data, sizeof (drag_data)); } @@ -1836,12 +1843,15 @@ gtk_tool_palette_child_drag_data_get (GtkWidget *widget, gpointer data) { GtkToolPaletteDragData drag_data = { GTK_TOOL_PALETTE (data), NULL }; + GdkAtom target; - if (selection->target == dnd_target_atom_group) + target = gtk_selection_data_get_target (selection); + + if (target == dnd_target_atom_group) drag_data.item = gtk_widget_get_ancestor (widget, GTK_TYPE_TOOL_ITEM_GROUP); if (drag_data.item) - gtk_selection_data_set (selection, selection->target, 8, + gtk_selection_data_set (selection, target, 8, (guchar*) &drag_data, sizeof (drag_data)); } diff --git a/gtk/gtktoolshell.c b/gtk/gtktoolshell.c index 12d019f088..7dc4bf5ac2 100644 --- a/gtk/gtktoolshell.c +++ b/gtk/gtktoolshell.c @@ -94,7 +94,7 @@ gtk_tool_shell_get_orientation (GtkToolShell *shell) * @shell: a #GtkToolShell * * Retrieves whether the tool shell has text, icons, or both. Tool items must - * not call this function directly, but rely on gtk_tool_item_get_style() + * not call this function directly, but rely on gtk_tool_item_get_toolbar_style() * instead. * * Return value: the current style of @shell diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c index 16018b609d..f44fb2dccd 100644 --- a/gtk/gtktooltip.c +++ b/gtk/gtktooltip.c @@ -155,7 +155,7 @@ static void gtk_tooltip_class_init (GtkTooltipClass *klass); static void gtk_tooltip_init (GtkTooltip *tooltip); static void gtk_tooltip_dispose (GObject *object); -static void gtk_tooltip_window_style_set (GtkTooltip *tooltip); +static void gtk_tooltip_window_style_updated (GtkTooltip *tooltip); static gboolean gtk_tooltip_paint_window (GtkTooltip *tooltip, cairo_t *cr); static void gtk_tooltip_window_hide (GtkWidget *widget, @@ -182,7 +182,8 @@ gtk_tooltip_class_init (GtkTooltipClass *klass) static void gtk_tooltip_init (GtkTooltip *tooltip) { - GtkStyle *style; + GtkStyleContext *context; + GtkBorder padding, border; tooltip->timeout_id = 0; tooltip->browse_mode_timeout_id = 0; @@ -207,21 +208,27 @@ gtk_tooltip_init (GtkTooltip *tooltip) g_signal_connect (tooltip->window, "hide", G_CALLBACK (gtk_tooltip_window_hide), tooltip); - style = gtk_widget_get_style (tooltip->window); + context = gtk_widget_get_style_context (tooltip->window); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOOLTIP); + + gtk_style_context_get_padding (context, 0, &padding); + gtk_style_context_get_border (context, 0, &border); tooltip->alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); gtk_alignment_set_padding (GTK_ALIGNMENT (tooltip->alignment), - style->ythickness, style->ythickness, - style->xthickness, style->xthickness); + border.top + padding.top, + border.bottom + padding.bottom, + border.left + padding.left, + border.right + padding.right); gtk_container_add (GTK_CONTAINER (tooltip->window), tooltip->alignment); gtk_widget_show (tooltip->alignment); - g_signal_connect_swapped (tooltip->window, "style-set", - G_CALLBACK (gtk_tooltip_window_style_set), tooltip); + g_signal_connect_swapped (tooltip->window, "style-updated", + G_CALLBACK (gtk_tooltip_window_style_updated), tooltip); g_signal_connect_swapped (tooltip->window, "draw", G_CALLBACK (gtk_tooltip_paint_window), tooltip); - tooltip->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, style->xthickness); + tooltip->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, padding.left); gtk_container_add (GTK_CONTAINER (tooltip->alignment), tooltip->box); gtk_widget_show (tooltip->box); @@ -532,9 +539,11 @@ gtk_tooltip_trigger_tooltip_query (GdkDisplay *display) gint x, y; GdkWindow *window; GdkEvent event; + GdkDevice *device; /* Trigger logic as if the mouse moved */ - window = gdk_display_get_window_at_pointer (display, &x, &y); + device = gdk_device_manager_get_client_pointer (gdk_display_get_device_manager (display)); + window = gdk_device_get_window_at_position (device, &x, &y); if (!window) return; @@ -567,18 +576,22 @@ gtk_tooltip_reset (GtkTooltip *tooltip) } static void -gtk_tooltip_window_style_set (GtkTooltip *tooltip) +gtk_tooltip_window_style_updated (GtkTooltip *tooltip) { - GtkStyle *style; + GtkStyleContext *context; + GtkBorder padding, border; - style = gtk_widget_get_style (tooltip->window); + context = gtk_widget_get_style_context (tooltip->window); + gtk_style_context_get_padding (context, 0, &padding); + gtk_style_context_get_border (context, 0, &border); gtk_alignment_set_padding (GTK_ALIGNMENT (tooltip->alignment), - style->ythickness, style->ythickness, - style->xthickness, style->xthickness); + border.top + padding.top, + border.bottom + padding.bottom, + border.left + padding.left, + border.right + padding.right); - gtk_box_set_spacing (GTK_BOX (tooltip->box), - style->xthickness); + gtk_box_set_spacing (GTK_BOX (tooltip->box), padding.left); gtk_widget_queue_draw (tooltip->window); } @@ -587,15 +600,16 @@ static gboolean gtk_tooltip_paint_window (GtkTooltip *tooltip, cairo_t *cr) { - gtk_paint_flat_box (gtk_widget_get_style (tooltip->window), - cr, - GTK_STATE_NORMAL, - GTK_SHADOW_OUT, - tooltip->window, - "tooltip", - 0, 0, - gtk_widget_get_allocated_width (tooltip->window), - gtk_widget_get_allocated_height (tooltip->window)); + GtkStyleContext *context; + + context = gtk_widget_get_style_context (tooltip->window); + + gtk_render_background (context, cr, 0, 0, + gtk_widget_get_allocated_width (tooltip->window), + gtk_widget_get_allocated_height (tooltip->window)); + gtk_render_frame (context, cr, 0, 0, + gtk_widget_get_allocated_width (tooltip->window), + gtk_widget_get_allocated_height (tooltip->window)); return FALSE; } @@ -1284,7 +1298,7 @@ tooltip_popup_timeout (gpointer data) GdkDisplay *display; GtkTooltip *tooltip; - display = GDK_DISPLAY_OBJECT (data); + display = GDK_DISPLAY (data); tooltip = g_object_get_data (G_OBJECT (display), "gdk-display-current-tooltip"); diff --git a/gtk/gtktrayicon-x11.c b/gtk/gtktrayicon-x11.c index 150b634823..a8f6a11913 100644 --- a/gtk/gtktrayicon-x11.c +++ b/gtk/gtktrayicon-x11.c @@ -23,18 +23,20 @@ */ #include "config.h" + #include #include +#include "x11/gdkx.h" +#include +#include + #include "gtkintl.h" #include "gtkprivate.h" #include "gtktrayicon.h" #include "gtktestutils.h" #include "gtkdebug.h" - -#include "x11/gdkx.h" -#include -#include +#include "gtktypebuiltins.h" #define SYSTEM_TRAY_REQUEST_DOCK 0 #define SYSTEM_TRAY_BEGIN_MESSAGE 1 @@ -85,8 +87,7 @@ static void gtk_tray_icon_get_property (GObject *object, GParamSpec *pspec); static void gtk_tray_icon_realize (GtkWidget *widget); -static void gtk_tray_icon_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_tray_icon_style_updated (GtkWidget *widget); static gboolean gtk_tray_icon_delete (GtkWidget *widget, GdkEventAny *event); static gboolean gtk_tray_icon_draw (GtkWidget *widget, @@ -114,7 +115,7 @@ gtk_tray_icon_class_init (GtkTrayIconClass *class) gobject_class->dispose = gtk_tray_icon_dispose; widget_class->realize = gtk_tray_icon_realize; - widget_class->style_set = gtk_tray_icon_style_set; + widget_class->style_updated = gtk_tray_icon_style_updated; widget_class->delete_event = gtk_tray_icon_delete; widget_class->draw = gtk_tray_icon_draw; @@ -254,8 +255,8 @@ gtk_tray_icon_clear_manager_window (GtkTrayIcon *icon) { GdkWindow *gdkwin; - gdkwin = gdk_window_lookup_for_display (display, - icon->priv->manager_window); + gdkwin = gdk_x11_window_lookup_for_display (display, + icon->priv->manager_window); gdk_window_remove_filter (gdkwin, gtk_tray_icon_manager_filter, icon); @@ -361,15 +362,21 @@ gtk_tray_icon_draw (GtkWidget *widget, focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget)); if (focus_child && gtk_widget_has_focus (focus_child)) { - border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); + GtkStyleContext *context; + GtkStateFlags state; - gtk_paint_focus (gtk_widget_get_style (widget), - cr, - gtk_widget_get_state (widget), - widget, "tray_icon", - border_width, border_width, - gtk_widget_get_allocated_width (widget) - 2 * border_width, - gtk_widget_get_allocated_height (widget) - 2 * border_width); + border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)); + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + + gtk_style_context_save (context); + gtk_style_context_set_state (context, state); + + gtk_render_focus (context, cr, border_width, border_width, + gtk_widget_get_allocated_width (widget) - 2 * border_width, + gtk_widget_get_allocated_height (widget) - 2 * border_width); + + gtk_style_context_restore (context); } return retval; @@ -445,6 +452,9 @@ gtk_tray_icon_get_visual_property (GtkTrayIcon *icon) gulong bytes_after; int error, result; GdkVisual *visual; + gint red_prec; + gint green_prec; + gint blue_prec; g_assert (icon->priv->manager_window != None); @@ -468,9 +478,13 @@ gtk_tray_icon_get_visual_property (GtkTrayIcon *icon) visual = gdk_x11_screen_lookup_visual (screen, visual_id); } + gdk_visual_get_red_pixel_details (visual, NULL, NULL, &red_prec); + gdk_visual_get_green_pixel_details (visual, NULL, NULL, &green_prec); + gdk_visual_get_blue_pixel_details (visual, NULL, NULL, &blue_prec); + icon->priv->manager_visual = visual; icon->priv->manager_visual_rgba = visual != NULL && - (visual->red_prec + visual->blue_prec + visual->green_prec < visual->depth); + (red_prec + blue_prec + green_prec < gdk_visual_get_depth (visual)); /* For the background-relative hack we use when we aren't using a real RGBA * visual, we can't be double-buffered */ @@ -760,12 +774,12 @@ gtk_tray_icon_update_manager_window (GtkTrayIcon *icon) GdkWindow *gdkwin; GTK_NOTE (PLUGSOCKET, - g_print ("GtkStatusIcon %p: is being managed by window %lx\n", - icon, (gulong) icon->priv->manager_window)); + g_print ("GtkStatusIcon %p: is being managed by window %lx\n", + icon, (gulong) icon->priv->manager_window)); + + gdkwin = gdk_x11_window_lookup_for_display (display, + icon->priv->manager_window); - gdkwin = gdk_window_lookup_for_display (display, - icon->priv->manager_window); - gdk_window_add_filter (gdkwin, gtk_tray_icon_manager_filter, icon); gtk_tray_icon_get_orientation_property (icon); @@ -844,7 +858,7 @@ gtk_tray_icon_set_visual (GtkTrayIcon *icon) * to be either the screen default visual or a TrueColor visual; ignore it * if it is something else */ - if (visual && visual->type != GDK_VISUAL_TRUE_COLOR) + if (visual && gdk_visual_get_visual_type (visual) != GDK_VISUAL_TRUE_COLOR) visual = NULL; if (visual == NULL) @@ -888,8 +902,7 @@ gtk_tray_icon_realize (GtkWidget *widget) } static void -gtk_tray_icon_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_tray_icon_style_updated (GtkWidget *widget) { /* The default handler resets the background according to the style. We either * use a transparent background or a parent-relative background and ignore the diff --git a/gtk/gtktreednd.c b/gtk/gtktreednd.c index f5f436bf02..68cc171177 100644 --- a/gtk/gtktreednd.c +++ b/gtk/gtktreednd.c @@ -273,7 +273,7 @@ gtk_tree_set_row_drag_data (GtkSelectionData *selection_data, g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); g_return_val_if_fail (path != NULL, FALSE); - if (selection_data->target != gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) + if (gtk_selection_data_get_target (selection_data) != gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) return FALSE; path_str = gtk_tree_path_to_string (path); @@ -336,14 +336,14 @@ gtk_tree_get_row_drag_data (GtkSelectionData *selection_data, if (path) *path = NULL; - - if (selection_data->target != gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) + + if (gtk_selection_data_get_target (selection_data) != gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) return FALSE; - if (selection_data->length < 0) + if (gtk_selection_data_get_length (selection_data) < 0) return FALSE; - trd = (void*) selection_data->data; + trd = (void*) gtk_selection_data_get_data (selection_data); if (tree_model) *tree_model = trd->model; diff --git a/gtk/gtktreemenu.c b/gtk/gtktreemenu.c new file mode 100644 index 0000000000..25a0141120 --- /dev/null +++ b/gtk/gtktreemenu.c @@ -0,0 +1,2028 @@ +/* gtktreemenu.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * Based on some GtkComboBox menu code by Kristian Rietveld + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * SECTION:gtktreemenu + * @Short_Description: A GtkMenu automatically created from a #GtkTreeModel + * @Title: GtkTreeMenu + * + * The #GtkTreeMenu is used to display a drop-down menu allowing selection + * of every row in the model and is used by the #GtkComboBox for its drop-down + * menu. + */ + +#include "config.h" +#include "gtkintl.h" +#include "gtktreemenu.h" +#include "gtkmarshalers.h" +#include "gtkmenuitem.h" +#include "gtktearoffmenuitem.h" +#include "gtkseparatormenuitem.h" +#include "gtkcellareabox.h" +#include "gtkcellareacontext.h" +#include "gtkcelllayout.h" +#include "gtkcellview.h" +#include "gtkmenushellprivate.h" +#include "gtkprivate.h" + + +/* GObjectClass */ +static GObject *gtk_tree_menu_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); +static void gtk_tree_menu_dispose (GObject *object); +static void gtk_tree_menu_finalize (GObject *object); +static void gtk_tree_menu_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_tree_menu_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +/* GtkWidgetClass */ +static void gtk_tree_menu_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); +static void gtk_tree_menu_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); + +/* GtkCellLayoutIface */ +static void gtk_tree_menu_cell_layout_init (GtkCellLayoutIface *iface); +static GtkCellArea *gtk_tree_menu_cell_layout_get_area (GtkCellLayout *layout); + + +/* TreeModel/DrawingArea callbacks and building menus/submenus */ +static inline void rebuild_menu (GtkTreeMenu *menu); +static gboolean menu_occupied (GtkTreeMenu *menu, + guint left_attach, + guint right_attach, + guint top_attach, + guint bottom_attach); +static void relayout_item (GtkTreeMenu *menu, + GtkWidget *item, + GtkTreeIter *iter, + GtkWidget *prev); +static void gtk_tree_menu_populate (GtkTreeMenu *menu); +static GtkWidget *gtk_tree_menu_create_item (GtkTreeMenu *menu, + GtkTreeIter *iter, + gboolean header_item); +static void gtk_tree_menu_create_submenu (GtkTreeMenu *menu, + GtkWidget *item, + GtkTreePath *path); +static void gtk_tree_menu_set_area (GtkTreeMenu *menu, + GtkCellArea *area); +static GtkWidget *gtk_tree_menu_get_path_item (GtkTreeMenu *menu, + GtkTreePath *path); +static gboolean gtk_tree_menu_path_in_menu (GtkTreeMenu *menu, + GtkTreePath *path, + gboolean *header_item); +static void row_inserted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkTreeMenu *menu); +static void row_deleted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeMenu *menu); +static void row_reordered_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order, + GtkTreeMenu *menu); +static void row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkTreeMenu *menu); +static void context_size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkWidget *menu); +static void area_apply_attributes_cb (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded, + GtkTreeMenu *menu); +static void item_activated_cb (GtkMenuItem *item, + GtkTreeMenu *menu); +static void submenu_activated_cb (GtkTreeMenu *submenu, + const gchar *path, + GtkTreeMenu *menu); +static void gtk_tree_menu_set_model_internal (GtkTreeMenu *menu, + GtkTreeModel *model); + + + +struct _GtkTreeMenuPrivate +{ + /* TreeModel and parent for this menu */ + GtkTreeModel *model; + GtkTreeRowReference *root; + + /* CellArea and context for this menu */ + GtkCellArea *area; + GtkCellAreaContext *context; + + /* Signals */ + gulong size_changed_id; + gulong apply_attributes_id; + gulong row_inserted_id; + gulong row_deleted_id; + gulong row_reordered_id; + gulong row_changed_id; + + /* Grid menu mode */ + gint wrap_width; + gint row_span_col; + gint col_span_col; + + /* Flags */ + guint32 menu_with_header : 1; + guint32 tearoff : 1; + + /* Row separators */ + GtkTreeViewRowSeparatorFunc row_separator_func; + gpointer row_separator_data; + GDestroyNotify row_separator_destroy; + + /* Submenu headers */ + GtkTreeMenuHeaderFunc header_func; + gpointer header_data; + GDestroyNotify header_destroy; +}; + +enum { + PROP_0, + PROP_MODEL, + PROP_ROOT, + PROP_CELL_AREA, + PROP_TEAROFF, + PROP_WRAP_WIDTH, + PROP_ROW_SPAN_COL, + PROP_COL_SPAN_COL +}; + +enum { + SIGNAL_MENU_ACTIVATE, + N_SIGNALS +}; + +static guint tree_menu_signals[N_SIGNALS] = { 0 }; +static GQuark tree_menu_path_quark = 0; + +G_DEFINE_TYPE_WITH_CODE (GtkTreeMenu, _gtk_tree_menu, GTK_TYPE_MENU, + G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_LAYOUT, + gtk_tree_menu_cell_layout_init)); + +static void +_gtk_tree_menu_init (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + menu->priv = G_TYPE_INSTANCE_GET_PRIVATE (menu, + GTK_TYPE_TREE_MENU, + GtkTreeMenuPrivate); + priv = menu->priv; + + priv->model = NULL; + priv->root = NULL; + priv->area = NULL; + priv->context = NULL; + + priv->size_changed_id = 0; + priv->row_inserted_id = 0; + priv->row_deleted_id = 0; + priv->row_reordered_id = 0; + priv->row_changed_id = 0; + + priv->wrap_width = 0; + priv->row_span_col = -1; + priv->col_span_col = -1; + + priv->menu_with_header = FALSE; + priv->tearoff = FALSE; + + priv->row_separator_func = NULL; + priv->row_separator_data = NULL; + priv->row_separator_destroy = NULL; + + priv->header_func = NULL; + priv->header_data = NULL; + priv->header_destroy = NULL; + + gtk_menu_set_reserve_toggle_size (GTK_MENU (menu), FALSE); +} + +static void +_gtk_tree_menu_class_init (GtkTreeMenuClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + + tree_menu_path_quark = g_quark_from_static_string ("gtk-tree-menu-path"); + + object_class->constructor = gtk_tree_menu_constructor; + object_class->dispose = gtk_tree_menu_dispose; + object_class->finalize = gtk_tree_menu_finalize; + object_class->set_property = gtk_tree_menu_set_property; + object_class->get_property = gtk_tree_menu_get_property; + + widget_class->get_preferred_width = gtk_tree_menu_get_preferred_width; + widget_class->get_preferred_height = gtk_tree_menu_get_preferred_height; + + /* + * GtkTreeMenu::menu-activate: + * @menu: a #GtkTreeMenu + * @path: the #GtkTreePath string for the item which was activated + * @user_data: the user data + * + * This signal is emitted to notify that a menu item in the #GtkTreeMenu + * was activated and provides the path string from the #GtkTreeModel + * to specify which row was selected. + * + * Since: 3.0 + */ + tree_menu_signals[SIGNAL_MENU_ACTIVATE] = + g_signal_new (I_("menu-activate"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, /* No class closure here */ + NULL, NULL, + _gtk_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + + /* + * GtkTreeMenu:model: + * + * The #GtkTreeModel from which the menu is constructed. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_MODEL, + g_param_spec_object ("model", + P_("TreeMenu model"), + P_("The model for the tree menu"), + GTK_TYPE_TREE_MODEL, + GTK_PARAM_READWRITE)); + + /* + * GtkTreeMenu:root: + * + * The #GtkTreePath that is the root for this menu, or %NULL. + * + * The #GtkTreeMenu recursively creates submenus for #GtkTreeModel + * rows that have children and the "root" for each menu is provided + * by the parent menu. + * + * If you dont provide a root for the #GtkTreeMenu then the whole + * model will be added to the menu. Specifying a root allows you + * to build a menu for a given #GtkTreePath and it's children. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_ROOT, + g_param_spec_boxed ("root", + P_("TreeMenu root row"), + P_("The TreeMenu will display children of the " + "specified root"), + GTK_TYPE_TREE_PATH, + GTK_PARAM_READWRITE)); + + /* + * GtkTreeMenu:cell-area: + * + * The #GtkCellArea used to render cells in the menu items. + * + * You can provide a different cell area at object construction + * time, otherwise the #GtkTreeMenu will use a #GtkCellAreaBox. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /* + * GtkTreeMenu:tearoff: + * + * Specifies whether this menu comes with a leading tearoff menu item + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_TEAROFF, + g_param_spec_boolean ("tearoff", + P_("Tearoff"), + P_("Whether the menu has a tearoff item"), + FALSE, + GTK_PARAM_READWRITE)); + + /* + * GtkTreeMenu:wrap-width: + * + * If wrap-width is set to a positive value, the list will be + * displayed in multiple columns, the number of columns is + * determined by wrap-width. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_WRAP_WIDTH, + g_param_spec_int ("wrap-width", + P_("Wrap Width"), + P_("Wrap width for laying out items in a grid"), + 0, + G_MAXINT, + 0, + GTK_PARAM_READWRITE)); + + /* + * GtkTreeMenu:row-span-column: + * + * If this is set to a non-negative value, it must be the index of a column + * of type %G_TYPE_INT in the model. + * + * The values of that column are used to determine how many rows a value in + * the list will span. Therefore, the values in the model column pointed to + * by this property must be greater than zero and not larger than wrap-width. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_ROW_SPAN_COL, + g_param_spec_int ("row-span-column", + P_("Row span column"), + P_("TreeModel column containing the row span values"), + -1, + G_MAXINT, + -1, + GTK_PARAM_READWRITE)); + + /* + * GtkTreeMenu:column-span-column: + * + * If this is set to a non-negative value, it must be the index of a column + * of type %G_TYPE_INT in the model. + * + * The values of that column are used to determine how many columns a value + * in the list will span. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_COL_SPAN_COL, + g_param_spec_int ("column-span-column", + P_("Column span column"), + P_("TreeModel column containing the column span values"), + -1, + G_MAXINT, + -1, + GTK_PARAM_READWRITE)); + + g_type_class_add_private (object_class, sizeof (GtkTreeMenuPrivate)); +} + +/**************************************************************** + * GObjectClass * + ****************************************************************/ +static GObject * +gtk_tree_menu_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) +{ + GObject *object; + GtkTreeMenu *menu; + GtkTreeMenuPrivate *priv; + + object = G_OBJECT_CLASS (_gtk_tree_menu_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + menu = GTK_TREE_MENU (object); + priv = menu->priv; + + if (!priv->area) + { + GtkCellArea *area = gtk_cell_area_box_new (); + + gtk_tree_menu_set_area (menu, area); + } + + priv->context = gtk_cell_area_create_context (priv->area); + + priv->size_changed_id = + g_signal_connect (priv->context, "notify", + G_CALLBACK (context_size_changed_cb), menu); + + return object; +} + +static void +gtk_tree_menu_dispose (GObject *object) +{ + GtkTreeMenu *menu; + GtkTreeMenuPrivate *priv; + + menu = GTK_TREE_MENU (object); + priv = menu->priv; + + _gtk_tree_menu_set_model (menu, NULL); + gtk_tree_menu_set_area (menu, NULL); + + if (priv->context) + { + /* Disconnect signals */ + g_signal_handler_disconnect (priv->context, priv->size_changed_id); + + g_object_unref (priv->context); + priv->context = NULL; + priv->size_changed_id = 0; + } + + G_OBJECT_CLASS (_gtk_tree_menu_parent_class)->dispose (object); +} + +static void +gtk_tree_menu_finalize (GObject *object) +{ + GtkTreeMenu *menu; + GtkTreeMenuPrivate *priv; + + menu = GTK_TREE_MENU (object); + priv = menu->priv; + + _gtk_tree_menu_set_row_separator_func (menu, NULL, NULL, NULL); + _gtk_tree_menu_set_header_func (menu, NULL, NULL, NULL); + + if (priv->root) + gtk_tree_row_reference_free (priv->root); + + G_OBJECT_CLASS (_gtk_tree_menu_parent_class)->finalize (object); +} + +static void +gtk_tree_menu_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkTreeMenu *menu = GTK_TREE_MENU (object); + + switch (prop_id) + { + case PROP_MODEL: + _gtk_tree_menu_set_model (menu, g_value_get_object (value)); + break; + + case PROP_ROOT: + _gtk_tree_menu_set_root (menu, g_value_get_boxed (value)); + break; + + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + gtk_tree_menu_set_area (menu, (GtkCellArea *)g_value_get_object (value)); + break; + + case PROP_TEAROFF: + _gtk_tree_menu_set_tearoff (menu, g_value_get_boolean (value)); + break; + + case PROP_WRAP_WIDTH: + _gtk_tree_menu_set_wrap_width (menu, g_value_get_int (value)); + break; + + case PROP_ROW_SPAN_COL: + _gtk_tree_menu_set_row_span_column (menu, g_value_get_int (value)); + break; + + case PROP_COL_SPAN_COL: + _gtk_tree_menu_set_column_span_column (menu, g_value_get_int (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_tree_menu_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkTreeMenu *menu = GTK_TREE_MENU (object); + GtkTreeMenuPrivate *priv = menu->priv; + + switch (prop_id) + { + case PROP_MODEL: + g_value_set_object (value, priv->model); + break; + + case PROP_ROOT: + g_value_set_boxed (value, priv->root); + break; + + case PROP_CELL_AREA: + g_value_set_object (value, priv->area); + break; + + case PROP_TEAROFF: + g_value_set_boolean (value, priv->tearoff); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/**************************************************************** + * GtkWidgetClass * + ****************************************************************/ + +/* We tell all the menu items to reserve space for the submenu + * indicator if there is at least one submenu, this way we ensure + * that every internal cell area gets allocated the + * same width (and requested height for the same appropriate width). + */ +static void +sync_reserve_submenu_size (GtkTreeMenu *menu) +{ + GList *children, *l; + gboolean has_submenu = FALSE; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + for (l = children; l; l = l->next) + { + GtkMenuItem *item = l->data; + + if (gtk_menu_item_get_submenu (item) != NULL) + { + has_submenu = TRUE; + break; + } + } + + for (l = children; l; l = l->next) + { + GtkMenuItem *item = l->data; + + gtk_menu_item_set_reserve_indicator (item, has_submenu); + } + + g_list_free (children); +} + +static void +gtk_tree_menu_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + GtkTreeMenu *menu = GTK_TREE_MENU (widget); + GtkTreeMenuPrivate *priv = menu->priv; + + /* We leave the requesting work up to the cellviews which operate in the same + * context, reserving space for the submenu indicator if any of the items have + * submenus ensures that every cellview will receive the same allocated width. + * + * Since GtkMenu does hieght-for-width correctly, we know that the width of + * every cell will be requested before the height-for-widths are requested. + */ + g_signal_handler_block (priv->context, priv->size_changed_id); + + sync_reserve_submenu_size (menu); + + GTK_WIDGET_CLASS (_gtk_tree_menu_parent_class)->get_preferred_width (widget, minimum_size, natural_size); + + g_signal_handler_unblock (priv->context, priv->size_changed_id); +} + +static void +gtk_tree_menu_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + GtkTreeMenu *menu = GTK_TREE_MENU (widget); + GtkTreeMenuPrivate *priv = menu->priv; + + g_signal_handler_block (priv->context, priv->size_changed_id); + + sync_reserve_submenu_size (menu); + + GTK_WIDGET_CLASS (_gtk_tree_menu_parent_class)->get_preferred_height (widget, minimum_size, natural_size); + + g_signal_handler_unblock (priv->context, priv->size_changed_id); +} + +/**************************************************************** + * GtkCellLayoutIface * + ****************************************************************/ +static void +gtk_tree_menu_cell_layout_init (GtkCellLayoutIface *iface) +{ + iface->get_area = gtk_tree_menu_cell_layout_get_area; +} + +static GtkCellArea * +gtk_tree_menu_cell_layout_get_area (GtkCellLayout *layout) +{ + GtkTreeMenu *menu = GTK_TREE_MENU (layout); + GtkTreeMenuPrivate *priv = menu->priv; + + return priv->area; +} + + +/**************************************************************** + * TreeModel callbacks/populating menus * + ****************************************************************/ +static GtkWidget * +gtk_tree_menu_get_path_item (GtkTreeMenu *menu, + GtkTreePath *search) +{ + GtkWidget *item = NULL; + GList *children, *l; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + + for (l = children; item == NULL && l != NULL; l = l->next) + { + GtkWidget *child = l->data; + GtkTreePath *path = NULL; + + if (GTK_IS_SEPARATOR_MENU_ITEM (child)) + { + GtkTreeRowReference *row = + g_object_get_qdata (G_OBJECT (child), tree_menu_path_quark); + + if (row) + { + path = gtk_tree_row_reference_get_path (row); + + if (!path) + /* Return any first child where it's row-reference became invalid, + * this is because row-references get null paths before we recieve + * the "row-deleted" signal. + */ + item = child; + } + } + else if (!GTK_IS_TEAROFF_MENU_ITEM (child)) + { + GtkWidget *view = gtk_bin_get_child (GTK_BIN (child)); + + /* It's always a cellview */ + if (GTK_IS_CELL_VIEW (view)) + path = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (view)); + + if (!path) + /* Return any first child where it's row-reference became invalid, + * this is because row-references get null paths before we recieve + * the "row-deleted" signal. + */ + item = child; + } + + if (path) + { + if (gtk_tree_path_compare (search, path) == 0) + item = child; + + gtk_tree_path_free (path); + } + } + + g_list_free (children); + + return item; +} + +static gboolean +gtk_tree_menu_path_in_menu (GtkTreeMenu *menu, + GtkTreePath *path, + gboolean *header_item) +{ + GtkTreeMenuPrivate *priv = menu->priv; + gboolean in_menu = FALSE; + gboolean is_header = FALSE; + + /* Check if the is in root of the model */ + if (gtk_tree_path_get_depth (path) == 1 && !priv->root) + in_menu = TRUE; + /* If we are a submenu, compare the parent path */ + else if (priv->root) + { + GtkTreePath *root_path = gtk_tree_row_reference_get_path (priv->root); + GtkTreePath *search_path = gtk_tree_path_copy (path); + + if (root_path) + { + if (priv->menu_with_header && + gtk_tree_path_compare (root_path, search_path) == 0) + { + in_menu = TRUE; + is_header = TRUE; + } + else if (gtk_tree_path_get_depth (search_path) > 1) + { + gtk_tree_path_up (search_path); + + if (gtk_tree_path_compare (root_path, search_path) == 0) + in_menu = TRUE; + } + } + gtk_tree_path_free (root_path); + gtk_tree_path_free (search_path); + } + + if (header_item) + *header_item = is_header; + + return in_menu; +} + +static GtkWidget * +gtk_tree_menu_path_needs_submenu (GtkTreeMenu *menu, + GtkTreePath *search) +{ + GtkWidget *item = NULL; + GList *children, *l; + GtkTreePath *parent_path; + + if (gtk_tree_path_get_depth (search) <= 1) + return NULL; + + parent_path = gtk_tree_path_copy (search); + gtk_tree_path_up (parent_path); + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + + for (l = children; item == NULL && l != NULL; l = l->next) + { + GtkWidget *child = l->data; + GtkTreePath *path = NULL; + + /* Separators dont get submenus, if it already has a submenu then let + * the submenu handle inserted rows */ + if (!GTK_IS_SEPARATOR_MENU_ITEM (child) && + !gtk_menu_item_get_submenu (GTK_MENU_ITEM (child))) + { + GtkWidget *view = gtk_bin_get_child (GTK_BIN (child)); + + /* It's always a cellview */ + if (GTK_IS_CELL_VIEW (view)) + path = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (view)); + } + + if (path) + { + if (gtk_tree_path_compare (parent_path, path) == 0) + item = child; + + gtk_tree_path_free (path); + } + } + + g_list_free (children); + gtk_tree_path_free (parent_path); + + return item; +} + +static GtkWidget * +find_empty_submenu (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + GList *children, *l; + GtkWidget *submenu = NULL; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + + for (l = children; submenu == NULL && l != NULL; l = l->next) + { + GtkWidget *child = l->data; + GtkTreePath *path = NULL; + GtkTreeIter iter; + + /* Separators dont get submenus, if it already has a submenu then let + * the submenu handle inserted rows */ + if (!GTK_IS_SEPARATOR_MENU_ITEM (child) && !GTK_IS_TEAROFF_MENU_ITEM (child)) + { + GtkWidget *view = gtk_bin_get_child (GTK_BIN (child)); + + /* It's always a cellview */ + if (GTK_IS_CELL_VIEW (view)) + path = gtk_cell_view_get_displayed_row (GTK_CELL_VIEW (view)); + } + + if (path) + { + if (gtk_tree_model_get_iter (priv->model, &iter, path) && + !gtk_tree_model_iter_has_child (priv->model, &iter)) + submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (child)); + + gtk_tree_path_free (path); + } + } + + g_list_free (children); + + return submenu; +} + +static void +row_inserted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + gint *indices, index, depth; + GtkWidget *item; + + /* If the iter should be in this menu then go ahead and insert it */ + if (gtk_tree_menu_path_in_menu (menu, path, NULL)) + { + if (priv->wrap_width > 0) + rebuild_menu (menu); + else + { + /* Get the index of the path for this depth */ + indices = gtk_tree_path_get_indices (path); + depth = gtk_tree_path_get_depth (path); + index = indices[depth -1]; + + /* Menus with a header include a menuitem for it's root node + * and a separator menu item */ + if (priv->menu_with_header) + index += 2; + + /* Index after the tearoff item for the root menu if + * there is a tearoff item + */ + if (priv->root == NULL && priv->tearoff) + index += 1; + + item = gtk_tree_menu_create_item (menu, iter, FALSE); + gtk_menu_shell_insert (GTK_MENU_SHELL (menu), item, index); + + /* Resize everything */ + gtk_cell_area_context_reset (menu->priv->context); + } + } + else + { + /* Create submenus for iters if we need to */ + item = gtk_tree_menu_path_needs_submenu (menu, path); + if (item) + { + GtkTreePath *item_path = gtk_tree_path_copy (path); + + gtk_tree_path_up (item_path); + gtk_tree_menu_create_submenu (menu, item, item_path); + gtk_tree_path_free (item_path); + } + } +} + +static void +row_deleted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + GtkWidget *item; + + /* If it's the header item we leave it to the parent menu + * to remove us from its menu + */ + item = gtk_tree_menu_get_path_item (menu, path); + + if (item) + { + if (priv->wrap_width > 0) + rebuild_menu (menu); + else + { + /* Get rid of the deleted item */ + gtk_widget_destroy (item); + + /* Resize everything */ + gtk_cell_area_context_reset (menu->priv->context); + } + } + else + { + /* It's up to the parent menu to destroy a child menu that becomes empty + * since the topmost menu belongs to the user and is allowed to have no contents */ + GtkWidget *submenu = find_empty_submenu (menu); + if (submenu) + gtk_widget_destroy (submenu); + } +} + +static void +row_reordered_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order, + GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + gboolean this_menu = FALSE; + + if (gtk_tree_path_get_depth (path) == 0 && !priv->root) + this_menu = TRUE; + else if (priv->root) + { + GtkTreePath *root_path = + gtk_tree_row_reference_get_path (priv->root); + + if (gtk_tree_path_compare (root_path, path) == 0) + this_menu = TRUE; + + gtk_tree_path_free (root_path); + } + + if (this_menu) + rebuild_menu (menu); +} + +static gint +menu_item_position (GtkTreeMenu *menu, + GtkWidget *item) +{ + GList *children, *l; + gint position; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + for (position = 0, l = children; l; position++, l = l->next) + { + GtkWidget *iitem = l->data; + + if (item == iitem) + break; + } + + g_list_free (children); + + return position; +} + +static void +row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + gboolean is_separator = FALSE; + gboolean has_header = FALSE; + GtkWidget *item; + + item = gtk_tree_menu_get_path_item (menu, path); + + if (priv->root) + { + GtkTreePath *root_path = + gtk_tree_row_reference_get_path (priv->root); + + if (root_path && gtk_tree_path_compare (root_path, path) == 0) + { + if (priv->header_func) + has_header = + priv->header_func (priv->model, iter, priv->header_data); + + if (has_header && !item) + { + item = gtk_separator_menu_item_new (); + gtk_widget_show (item); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item); + + item = gtk_tree_menu_create_item (menu, iter, TRUE); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item); + + priv->menu_with_header = TRUE; + } + else if (!has_header && item) + { + /* Destroy the header item and then the following separator */ + gtk_widget_destroy (item); + gtk_widget_destroy (GTK_MENU_SHELL (menu)->priv->children->data); + + priv->menu_with_header = FALSE; + } + + gtk_tree_path_free (root_path); + } + } + + if (item) + { + if (priv->wrap_width > 0) + /* Ugly, we need to rebuild the menu here if + * the row-span/row-column values change + */ + rebuild_menu (menu); + else + { + if (priv->row_separator_func) + is_separator = + priv->row_separator_func (model, iter, + priv->row_separator_data); + + + if (is_separator != GTK_IS_SEPARATOR_MENU_ITEM (item)) + { + gint position = menu_item_position (menu, item); + + gtk_widget_destroy (item); + item = gtk_tree_menu_create_item (menu, iter, FALSE); + gtk_menu_shell_insert (GTK_MENU_SHELL (menu), item, position); + } + } + } +} + +static void +context_size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkWidget *menu) +{ + if (!strcmp (pspec->name, "minimum-width") || + !strcmp (pspec->name, "natural-width") || + !strcmp (pspec->name, "minimum-height") || + !strcmp (pspec->name, "natural-height")) + gtk_widget_queue_resize (menu); +} + +static gboolean +area_is_sensitive (GtkCellArea *area) +{ + GList *cells, *list; + gboolean sensitive = FALSE; + + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (area)); + + for (list = cells; list; list = list->next) + { + g_object_get (list->data, "sensitive", &sensitive, NULL); + + if (sensitive) + break; + } + g_list_free (cells); + + return sensitive; +} + +static void +area_apply_attributes_cb (GtkCellArea *area, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded, + GtkTreeMenu *menu) +{ + /* If the menu for this iter has a submenu */ + GtkTreeMenuPrivate *priv = menu->priv; + GtkTreePath *path; + GtkWidget *item; + gboolean is_header; + gboolean sensitive; + + path = gtk_tree_model_get_path (tree_model, iter); + + if (gtk_tree_menu_path_in_menu (menu, path, &is_header)) + { + item = gtk_tree_menu_get_path_item (menu, path); + + /* If there is no submenu, go ahead and update item sensitivity, + * items with submenus are always sensitive */ + if (item && !gtk_menu_item_get_submenu (GTK_MENU_ITEM (item))) + { + sensitive = area_is_sensitive (priv->area); + + gtk_widget_set_sensitive (item, sensitive); + + if (is_header) + { + /* For header items we need to set the sensitivity + * of the following separator item + */ + if (GTK_MENU_SHELL (menu)->priv->children && + GTK_MENU_SHELL (menu)->priv->children->next) + { + GtkWidget *separator = + GTK_MENU_SHELL (menu)->priv->children->next->data; + + gtk_widget_set_sensitive (separator, sensitive); + } + } + } + } + + gtk_tree_path_free (path); +} + +static void +gtk_tree_menu_set_area (GtkTreeMenu *menu, + GtkCellArea *area) +{ + GtkTreeMenuPrivate *priv = menu->priv; + + if (priv->area) + { + g_signal_handler_disconnect (priv->area, + priv->apply_attributes_id); + priv->apply_attributes_id = 0; + + g_object_unref (priv->area); + } + + priv->area = area; + + if (priv->area) + { + g_object_ref_sink (priv->area); + + priv->apply_attributes_id = + g_signal_connect (priv->area, "apply-attributes", + G_CALLBACK (area_apply_attributes_cb), menu); + } +} + +static gboolean +menu_occupied (GtkTreeMenu *menu, + guint left_attach, + guint right_attach, + guint top_attach, + guint bottom_attach) +{ + GList *i; + + for (i = GTK_MENU_SHELL (menu)->priv->children; i; i = i->next) + { + guint l, r, b, t; + + gtk_container_child_get (GTK_CONTAINER (menu), + i->data, + "left-attach", &l, + "right-attach", &r, + "bottom-attach", &b, + "top-attach", &t, + NULL); + + /* look if this item intersects with the given coordinates */ + if (right_attach > l && left_attach < r && bottom_attach > t && top_attach < b) + return TRUE; + } + + return FALSE; +} + +static void +relayout_item (GtkTreeMenu *menu, + GtkWidget *item, + GtkTreeIter *iter, + GtkWidget *prev) +{ + GtkTreeMenuPrivate *priv = menu->priv; + gint current_col = 0, current_row = 0; + gint rows = 1, cols = 1; + + if (priv->col_span_col == -1 && + priv->row_span_col == -1 && + prev) + { + gtk_container_child_get (GTK_CONTAINER (menu), prev, + "right-attach", ¤t_col, + "top-attach", ¤t_row, + NULL); + if (current_col + cols > priv->wrap_width) + { + current_col = 0; + current_row++; + } + } + else + { + if (priv->col_span_col != -1) + gtk_tree_model_get (priv->model, iter, + priv->col_span_col, &cols, + -1); + if (priv->row_span_col != -1) + gtk_tree_model_get (priv->model, iter, + priv->row_span_col, &rows, + -1); + + while (1) + { + if (current_col + cols > priv->wrap_width) + { + current_col = 0; + current_row++; + } + + if (!menu_occupied (menu, + current_col, current_col + cols, + current_row, current_row + rows)) + break; + + current_col++; + } + } + + /* set attach props */ + gtk_menu_attach (GTK_MENU (menu), item, + current_col, current_col + cols, + current_row, current_row + rows); +} + +static void +gtk_tree_menu_create_submenu (GtkTreeMenu *menu, + GtkWidget *item, + GtkTreePath *path) +{ + GtkTreeMenuPrivate *priv = menu->priv; + GtkWidget *view; + GtkWidget *submenu; + + view = gtk_bin_get_child (GTK_BIN (item)); + gtk_cell_view_set_draw_sensitive (GTK_CELL_VIEW (view), TRUE); + + submenu = _gtk_tree_menu_new_with_area (priv->area); + + _gtk_tree_menu_set_row_separator_func (GTK_TREE_MENU (submenu), + priv->row_separator_func, + priv->row_separator_data, + priv->row_separator_destroy); + _gtk_tree_menu_set_header_func (GTK_TREE_MENU (submenu), + priv->header_func, + priv->header_data, + priv->header_destroy); + + _gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (submenu), priv->wrap_width); + _gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (submenu), priv->row_span_col); + _gtk_tree_menu_set_column_span_column (GTK_TREE_MENU (submenu), priv->col_span_col); + + gtk_tree_menu_set_model_internal (GTK_TREE_MENU (submenu), priv->model); + _gtk_tree_menu_set_root (GTK_TREE_MENU (submenu), path); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); + + g_signal_connect (submenu, "menu-activate", + G_CALLBACK (submenu_activated_cb), menu); +} + +static GtkWidget * +gtk_tree_menu_create_item (GtkTreeMenu *menu, + GtkTreeIter *iter, + gboolean header_item) +{ + GtkTreeMenuPrivate *priv = menu->priv; + GtkWidget *item, *view; + GtkTreePath *path; + gboolean is_separator = FALSE; + + path = gtk_tree_model_get_path (priv->model, iter); + + if (priv->row_separator_func) + is_separator = + priv->row_separator_func (priv->model, iter, + priv->row_separator_data); + + if (is_separator) + { + item = gtk_separator_menu_item_new (); + gtk_widget_show (item); + + g_object_set_qdata_full (G_OBJECT (item), + tree_menu_path_quark, + gtk_tree_row_reference_new (priv->model, path), + (GDestroyNotify)gtk_tree_row_reference_free); + } + else + { + view = gtk_cell_view_new_with_context (priv->area, priv->context); + item = gtk_menu_item_new (); + gtk_widget_show (view); + gtk_widget_show (item); + + gtk_cell_view_set_model (GTK_CELL_VIEW (view), priv->model); + gtk_cell_view_set_displayed_row (GTK_CELL_VIEW (view), path); + + gtk_widget_show (view); + gtk_container_add (GTK_CONTAINER (item), view); + + g_signal_connect (item, "activate", G_CALLBACK (item_activated_cb), menu); + + /* Add a GtkTreeMenu submenu to render the children of this row */ + if (header_item == FALSE && + gtk_tree_model_iter_has_child (priv->model, iter)) + gtk_tree_menu_create_submenu (menu, item, path); + } + + gtk_tree_path_free (path); + + return item; +} + +static inline void +rebuild_menu (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + + /* Destroy all the menu items */ + gtk_container_foreach (GTK_CONTAINER (menu), + (GtkCallback) gtk_widget_destroy, NULL); + + /* Populate */ + if (priv->model) + gtk_tree_menu_populate (menu); +} + + +static void +gtk_tree_menu_populate (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv = menu->priv; + GtkTreePath *path = NULL; + GtkTreeIter parent; + GtkTreeIter iter; + gboolean valid = FALSE; + GtkWidget *menu_item, *prev = NULL; + + if (!priv->model) + return; + + if (priv->root) + path = gtk_tree_row_reference_get_path (priv->root); + + if (path) + { + if (gtk_tree_model_get_iter (priv->model, &parent, path)) + { + valid = gtk_tree_model_iter_children (priv->model, &iter, &parent); + + if (priv->header_func && + priv->header_func (priv->model, &parent, priv->header_data)) + { + /* Add a submenu header for rows which desire one, used for + * combo boxes to allow all rows to be activatable/selectable + */ + menu_item = gtk_tree_menu_create_item (menu, &parent, TRUE); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + menu_item = gtk_separator_menu_item_new (); + gtk_widget_show (menu_item); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + prev = menu_item; + priv->menu_with_header = TRUE; + } + } + gtk_tree_path_free (path); + } + else + { + /* Tearoff menu items only go in the root menu */ + if (priv->tearoff) + { + menu_item = gtk_tearoff_menu_item_new (); + gtk_widget_show (menu_item); + + if (priv->wrap_width > 0) + gtk_menu_attach (GTK_MENU (menu), menu_item, 0, priv->wrap_width, 0, 1); + else + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + prev = menu_item; + } + + valid = gtk_tree_model_iter_children (priv->model, &iter, NULL); + } + + /* Create a menu item for every row at the current depth, add a GtkTreeMenu + * submenu for iters/items that have children */ + while (valid) + { + menu_item = gtk_tree_menu_create_item (menu, &iter, FALSE); + + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + + if (priv->wrap_width > 0) + relayout_item (menu, menu_item, &iter, prev); + + prev = menu_item; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } +} + +static void +item_activated_cb (GtkMenuItem *item, + GtkTreeMenu *menu) +{ + GtkCellView *view; + GtkTreePath *path; + gchar *path_str; + + /* Only activate leafs, not parents */ + if (!gtk_menu_item_get_submenu (item)) + { + view = GTK_CELL_VIEW (gtk_bin_get_child (GTK_BIN (item))); + path = gtk_cell_view_get_displayed_row (view); + path_str = gtk_tree_path_to_string (path); + + g_signal_emit (menu, tree_menu_signals[SIGNAL_MENU_ACTIVATE], 0, path_str); + + g_free (path_str); + gtk_tree_path_free (path); + } +} + +static void +submenu_activated_cb (GtkTreeMenu *submenu, + const gchar *path, + GtkTreeMenu *menu) +{ + g_signal_emit (menu, tree_menu_signals[SIGNAL_MENU_ACTIVATE], 0, path); +} + +/* Sets the model without rebuilding the menu, prevents + * infinite recursion while building submenus (we wait + * until the root is set and then build the menu) */ +static void +gtk_tree_menu_set_model_internal (GtkTreeMenu *menu, + GtkTreeModel *model) +{ + GtkTreeMenuPrivate *priv; + + priv = menu->priv; + + if (priv->model != model) + { + if (priv->model) + { + /* Disconnect signals */ + g_signal_handler_disconnect (priv->model, + priv->row_inserted_id); + g_signal_handler_disconnect (priv->model, + priv->row_deleted_id); + g_signal_handler_disconnect (priv->model, + priv->row_reordered_id); + g_signal_handler_disconnect (priv->model, + priv->row_changed_id); + priv->row_inserted_id = 0; + priv->row_deleted_id = 0; + priv->row_reordered_id = 0; + priv->row_changed_id = 0; + + g_object_unref (priv->model); + } + + priv->model = model; + + if (priv->model) + { + g_object_ref (priv->model); + + /* Connect signals */ + priv->row_inserted_id = g_signal_connect (priv->model, "row-inserted", + G_CALLBACK (row_inserted_cb), menu); + priv->row_deleted_id = g_signal_connect (priv->model, "row-deleted", + G_CALLBACK (row_deleted_cb), menu); + priv->row_reordered_id = g_signal_connect (priv->model, "rows-reordered", + G_CALLBACK (row_reordered_cb), menu); + priv->row_changed_id = g_signal_connect (priv->model, "row-changed", + G_CALLBACK (row_changed_cb), menu); + } + } +} + +/**************************************************************** + * API * + ****************************************************************/ + +/** + * _gtk_tree_menu_new: + * + * Creates a new #GtkTreeMenu. + * + * Return value: A newly created #GtkTreeMenu with no model or root. + * + * Since: 3.0 + */ +GtkWidget * +_gtk_tree_menu_new (void) +{ + return (GtkWidget *)g_object_new (GTK_TYPE_TREE_MENU, NULL); +} + +/* + * _gtk_tree_menu_new_with_area: + * @area: the #GtkCellArea to use to render cells in the menu + * + * Creates a new #GtkTreeMenu using @area to render it's cells. + * + * Return value: A newly created #GtkTreeMenu with no model or root. + * + * Since: 3.0 + */ +GtkWidget * +_gtk_tree_menu_new_with_area (GtkCellArea *area) +{ + return (GtkWidget *)g_object_new (GTK_TYPE_TREE_MENU, + "cell-area", area, + NULL); +} + +/* + * _gtk_tree_menu_new_full: + * @area: (allow-none): the #GtkCellArea to use to render cells in the menu, or %NULL. + * @model: (allow-none): the #GtkTreeModel to build the menu heirarchy from, or %NULL. + * @root: (allow-none): the #GtkTreePath indicating the root row for this menu, or %NULL. + * + * Creates a new #GtkTreeMenu hierarchy from the provided @model and @root using @area to render it's cells. + * + * Return value: A newly created #GtkTreeMenu. + * + * Since: 3.0 + */ +GtkWidget * +_gtk_tree_menu_new_full (GtkCellArea *area, + GtkTreeModel *model, + GtkTreePath *root) +{ + return (GtkWidget *)g_object_new (GTK_TYPE_TREE_MENU, + "cell-area", area, + "model", model, + "root", root, + NULL); +} + +/* + * _gtk_tree_menu_set_model: + * @menu: a #GtkTreeMenu + * @model: (allow-none): the #GtkTreeModel to build the menu hierarchy from, or %NULL. + * + * Sets @model to be used to build the menu heirarhcy. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_model (GtkTreeMenu *menu, + GtkTreeModel *model) +{ + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + g_return_if_fail (model == NULL || GTK_IS_TREE_MODEL (model)); + + gtk_tree_menu_set_model_internal (menu, model); + + rebuild_menu (menu); +} + +/* + * _gtk_tree_menu_get_model: + * @menu: a #GtkTreeMenu + * + * Gets the @model currently used for the menu heirarhcy. + * + * Return value: (transfer none): the #GtkTreeModel which is used + * for @menu's hierarchy. + * + * Since: 3.0 + */ +GtkTreeModel * +_gtk_tree_menu_get_model (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), NULL); + + priv = menu->priv; + + return priv->model; +} + +/* + * _gtk_tree_menu_set_root: + * @menu: a #GtkTreeMenu + * @path: (allow-none): the #GtkTreePath which is the root of @menu, or %NULL. + * + * Sets the root of a @menu's hierarchy to be @path. @menu must already + * have a model set and @path must point to a valid path inside the model. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_root (GtkTreeMenu *menu, + GtkTreePath *path) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + g_return_if_fail (menu->priv->model != NULL || path == NULL); + + priv = menu->priv; + + if (priv->root) + gtk_tree_row_reference_free (priv->root); + + if (path) + priv->root = gtk_tree_row_reference_new (priv->model, path); + else + priv->root = NULL; + + rebuild_menu (menu); +} + +/* + * _gtk_tree_menu_get_root: + * @menu: a #GtkTreeMenu + * + * Gets the @root path for @menu's hierarchy, or returns %NULL if @menu + * has no model or is building a heirarchy for the entire model. * + * + * Return value: (transfer full) (allow-none): A newly created #GtkTreePath + * pointing to the root of @menu which must be freed with gtk_tree_path_free(). + * + * Since: 3.0 + */ +GtkTreePath * +_gtk_tree_menu_get_root (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), NULL); + + priv = menu->priv; + + if (priv->root) + return gtk_tree_row_reference_get_path (priv->root); + + return NULL; +} + +/* + * _gtk_tree_menu_get_tearoff: + * @menu: a #GtkTreeMenu + * + * Gets whether this menu is build with a leading tearoff menu item. + * + * Return value: %TRUE if the menu has a tearoff item. + * + * Since: 3.0 + */ +gboolean +_gtk_tree_menu_get_tearoff (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), FALSE); + + priv = menu->priv; + + return priv->tearoff; +} + +/* + * _gtk_tree_menu_set_tearoff: + * @menu: a #GtkTreeMenu + * @tearoff: whether the menu should have a leading tearoff menu item. + * + * Sets whether this menu has a leading tearoff menu item. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_tearoff (GtkTreeMenu *menu, + gboolean tearoff) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + + priv = menu->priv; + + if (priv->tearoff != tearoff) + { + priv->tearoff = tearoff; + + rebuild_menu (menu); + + g_object_notify (G_OBJECT (menu), "tearoff"); + } +} + +/* + * _gtk_tree_menu_get_wrap_width: + * @menu: a #GtkTreeMenu + * + * Gets the wrap width which is used to determine the number of columns + * for @menu. If the wrap width is larger than 1, @menu is in table mode. + * + * Return value: the wrap width. + * + * Since: 3.0 + */ +gint +_gtk_tree_menu_get_wrap_width (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), FALSE); + + priv = menu->priv; + + return priv->wrap_width; +} + +/* + * _gtk_tree_menu_set_wrap_width: + * @menu: a #GtkTreeMenu + * @width: the wrap width + * + * Sets the wrap width which is used to determine the number of columns + * for @menu. If the wrap width is larger than 1, @menu is in table mode. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_wrap_width (GtkTreeMenu *menu, + gint width) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + g_return_if_fail (width >= 0); + + priv = menu->priv; + + if (priv->wrap_width != width) + { + priv->wrap_width = width; + + rebuild_menu (menu); + + g_object_notify (G_OBJECT (menu), "wrap-width"); + } +} + +/* + * _gtk_tree_menu_get_row_span_column: + * @menu: a #GtkTreeMenu + * + * Gets the column with row span information for @menu. + * The row span column contains integers which indicate how many rows + * a menu item should span. + * + * Return value: the column in @menu's model containing row span information, or -1. + * + * Since: 3.0 + */ +gint +_gtk_tree_menu_get_row_span_column (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), FALSE); + + priv = menu->priv; + + return priv->row_span_col; +} + +/* + * _gtk_tree_menu_set_row_span_column: + * @menu: a #GtkTreeMenu + * @row_span: the column in the model to fetch the row span for a given menu item. + * + * Sets the column with row span information for @menu to be @row_span. + * The row span column contains integers which indicate how many rows + * a menu item should span. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_row_span_column (GtkTreeMenu *menu, + gint row_span) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + + priv = menu->priv; + + if (priv->row_span_col != row_span) + { + priv->row_span_col = row_span; + + if (priv->wrap_width > 0) + rebuild_menu (menu); + + g_object_notify (G_OBJECT (menu), "row-span-column"); + } +} + +/* + * _gtk_tree_menu_get_column_span_column: + * @menu: a #GtkTreeMenu + * + * Gets the column with column span information for @menu. + * The column span column contains integers which indicate how many columns + * a menu item should span. + * + * Return value: the column in @menu's model containing column span information, or -1. + * + * Since: 3.0 + */ +gint +_gtk_tree_menu_get_column_span_column (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), FALSE); + + priv = menu->priv; + + return priv->col_span_col; +} + +/* + * _gtk_tree_menu_set_column_span_column: + * @menu: a #GtkTreeMenu + * @column_span: the column in the model to fetch the column span for a given menu item. + * + * Sets the column with column span information for @menu to be @column_span. + * The column span column contains integers which indicate how many columns + * a menu item should span. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_column_span_column (GtkTreeMenu *menu, + gint column_span) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + + priv = menu->priv; + + if (priv->col_span_col != column_span) + { + priv->col_span_col = column_span; + + if (priv->wrap_width > 0) + rebuild_menu (menu); + + g_object_notify (G_OBJECT (menu), "column-span-column"); + } +} + +/* + * _gtk_tree_menu_get_row_separator_func: + * @menu: a #GtkTreeMenu + * + * Gets the current #GtkTreeViewRowSeparatorFunc separator function. + * + * Return value: the current row separator function. + * + * Since: 3.0 + */ +GtkTreeViewRowSeparatorFunc +_gtk_tree_menu_get_row_separator_func (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), NULL); + + priv = menu->priv; + + return priv->row_separator_func; +} + +/* + * _gtk_tree_menu_set_row_separator_func: + * @menu: a #GtkTreeMenu + * @func: (allow-none): a #GtkTreeViewRowSeparatorFunc, or %NULL to unset the separator function. + * @data: (allow-none): user data to pass to @func, or %NULL + * @destroy: (allow-none): destroy notifier for @data, or %NULL + * + * Sets the row separator function, which is used to determine + * whether a row should be drawn as a separator. If the row separator + * function is %NULL, no separators are drawn. This is the default value. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_row_separator_func (GtkTreeMenu *menu, + GtkTreeViewRowSeparatorFunc func, + gpointer data, + GDestroyNotify destroy) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + + priv = menu->priv; + + if (priv->row_separator_destroy) + priv->row_separator_destroy (priv->row_separator_data); + + priv->row_separator_func = func; + priv->row_separator_data = data; + priv->row_separator_destroy = destroy; + + rebuild_menu (menu); +} + +/* + * _gtk_tree_menu_get_header_func: + * @menu: a #GtkTreeMenu + * + * Gets the current #GtkTreeMenuHeaderFunc header function. + * + * Return value: the current header function. + * + * Since: 3.0 + */ +GtkTreeMenuHeaderFunc +_gtk_tree_menu_get_header_func (GtkTreeMenu *menu) +{ + GtkTreeMenuPrivate *priv; + + g_return_val_if_fail (GTK_IS_TREE_MENU (menu), NULL); + + priv = menu->priv; + + return priv->header_func; +} + +/* + * _gtk_tree_menu_set_header_func: + * @menu: a #GtkTreeMenu + * @func: (allow-none): a #GtkTreeMenuHeaderFunc, or %NULL to unset the header function. + * @data: (allow-none): user data to pass to @func, or %NULL + * @destroy: (allow-none): destroy notifier for @data, or %NULL + * + * Sets the header function, which is used to determine + * whether a row width children should contain a leading header + * menu item to allow that row to be selectable as an independant + * menu item. If the header function is %NULL, no rows with children + * have menu items which can be activated as leafs. + * This is the default value. + * + * Since: 3.0 + */ +void +_gtk_tree_menu_set_header_func (GtkTreeMenu *menu, + GtkTreeMenuHeaderFunc func, + gpointer data, + GDestroyNotify destroy) +{ + GtkTreeMenuPrivate *priv; + + g_return_if_fail (GTK_IS_TREE_MENU (menu)); + + priv = menu->priv; + + if (priv->header_destroy) + priv->header_destroy (priv->header_data); + + priv->header_func = func; + priv->header_data = data; + priv->header_destroy = destroy; + + rebuild_menu (menu); +} diff --git a/gtk/gtktreemenu.h b/gtk/gtktreemenu.h new file mode 100644 index 0000000000..bb6d6b786a --- /dev/null +++ b/gtk/gtktreemenu.h @@ -0,0 +1,128 @@ +/* gtktreemenu.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __GTK_TREE_MENU_H__ +#define __GTK_TREE_MENU_H__ + +#include +#include +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_TREE_MENU (_gtk_tree_menu_get_type ()) +#define GTK_TREE_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_MENU, GtkTreeMenu)) +#define GTK_TREE_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_MENU, GtkTreeMenuClass)) +#define GTK_IS_TREE_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_MENU)) +#define GTK_IS_TREE_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_MENU)) +#define GTK_TREE_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_MENU, GtkTreeMenuClass)) + +typedef struct _GtkTreeMenu GtkTreeMenu; +typedef struct _GtkTreeMenuClass GtkTreeMenuClass; +typedef struct _GtkTreeMenuPrivate GtkTreeMenuPrivate; + +/** + * GtkTreeMenuHeaderFunc: + * @model: a #GtkTreeModel + * @iter: the #GtkTreeIter pointing at a row in @model + * @data: user data + * + * Function type for determining whether the row pointed to by @iter + * which has children should be replicated as a header item in the + * child menu. + * + * Return value: %TRUE if @iter should have an activatable header menu + * item created for it in a submenu. + */ +typedef gboolean (*GtkTreeMenuHeaderFunc) (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data); + +struct _GtkTreeMenu +{ + GtkMenu parent_instance; + + /*< private >*/ + GtkTreeMenuPrivate *priv; +}; + +struct _GtkTreeMenuClass +{ + GtkMenuClass parent_class; + + /*< private >*/ + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); +}; + +GType _gtk_tree_menu_get_type (void) G_GNUC_CONST; + +GtkWidget *_gtk_tree_menu_new (void); +GtkWidget *_gtk_tree_menu_new_with_area (GtkCellArea *area); +GtkWidget *_gtk_tree_menu_new_full (GtkCellArea *area, + GtkTreeModel *model, + GtkTreePath *root); +void _gtk_tree_menu_set_model (GtkTreeMenu *menu, + GtkTreeModel *model); +GtkTreeModel *_gtk_tree_menu_get_model (GtkTreeMenu *menu); +void _gtk_tree_menu_set_root (GtkTreeMenu *menu, + GtkTreePath *path); +GtkTreePath *_gtk_tree_menu_get_root (GtkTreeMenu *menu); +gboolean _gtk_tree_menu_get_tearoff (GtkTreeMenu *menu); +void _gtk_tree_menu_set_tearoff (GtkTreeMenu *menu, + gboolean tearoff); +gint _gtk_tree_menu_get_wrap_width (GtkTreeMenu *menu); +void _gtk_tree_menu_set_wrap_width (GtkTreeMenu *menu, + gint width); +gint _gtk_tree_menu_get_row_span_column (GtkTreeMenu *menu); +void _gtk_tree_menu_set_row_span_column (GtkTreeMenu *menu, + gint row_span); +gint _gtk_tree_menu_get_column_span_column (GtkTreeMenu *menu); +void _gtk_tree_menu_set_column_span_column (GtkTreeMenu *menu, + gint column_span); + +GtkTreeViewRowSeparatorFunc _gtk_tree_menu_get_row_separator_func (GtkTreeMenu *menu); +void _gtk_tree_menu_set_row_separator_func (GtkTreeMenu *menu, + GtkTreeViewRowSeparatorFunc func, + gpointer data, + GDestroyNotify destroy); + +GtkTreeMenuHeaderFunc _gtk_tree_menu_get_header_func (GtkTreeMenu *menu); +void _gtk_tree_menu_set_header_func (GtkTreeMenu *menu, + GtkTreeMenuHeaderFunc func, + gpointer data, + GDestroyNotify destroy); + +G_END_DECLS + +#endif /* __GTK_TREE_MENU_H__ */ diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index c65287c99e..d99067623b 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -29,6 +29,175 @@ #include "gtkmarshalers.h" #include "gtkintl.h" +/** + * SECTION:gtktreemodel + * @Title: GtkTreeModel + * @Short_description: The tree interface used by GtkTreeView + * @See_also: #GtkTreeView, #GtkTreeStore, #GtkListStore, + * GtkTreeDnd, + * #GtkTreeSortable + * + * The #GtkTreeModel interface defines a generic tree interface for + * use by the #GtkTreeView widget. It is an abstract interface, and + * is designed to be usable with any appropriate data structure. The + * programmer just has to implement this interface on their own data + * type for it to be viewable by a #GtkTreeView widget. + * + * The model is represented as a hierarchical tree of strongly-typed, + * columned data. In other words, the model can be seen as a tree where + * every node has different values depending on which column is being + * queried. The type of data found in a column is determined by using + * the GType system (ie. #G_TYPE_INT, #GTK_TYPE_BUTTON, #G_TYPE_POINTER, + * etc). The types are homogeneous per column across all nodes. It is + * important to note that this interface only provides a way of examining + * a model and observing changes. The implementation of each individual + * model decides how and if changes are made. + * + * In order to make life simpler for programmers who do not need to + * write their own specialized model, two generic models are provided + * — the #GtkTreeStore and the #GtkListStore. To use these, the + * developer simply pushes data into these models as necessary. These + * models provide the data structure as well as all appropriate tree + * interfaces. As a result, implementing drag and drop, sorting, and + * storing data is trivial. For the vast majority of trees and lists, + * these two models are sufficient. + * + * Models are accessed on a node/column level of granularity. One can + * query for the value of a model at a certain node and a certain + * column on that node. There are two structures used to reference + * a particular node in a model. They are the #GtkTreePath and the + * #GtkTreeIterHere, iter is short + * for iterator. Most of the interface + * consists of operations on a #GtkTreeIter. + * + * A path is essentially a potential node. It is a location on a model + * that may or may not actually correspond to a node on a specific + * model. The #GtkTreePath struct can be converted into either an + * array of unsigned integers or a string. The string form is a list + * of numbers separated by a colon. Each number refers to the offset + * at that level. Thus, the path 0 refers to the root + * node and the path 2:4 refers to the fifth child of + * the third node. + * + * By contrast, a #GtkTreeIter is a reference to a specific node on + * a specific model. It is a generic struct with an integer and three + * generic pointers. These are filled in by the model in a model-specific + * way. One can convert a path to an iterator by calling + * gtk_tree_model_get_iter(). These iterators are the primary way + * of accessing a model and are similar to the iterators used by + * #GtkTextBuffer. They are generally statically allocated on the + * stack and only used for a short time. The model interface defines + * a set of operations using them for navigating the model. + * + * It is expected that models fill in the iterator with private data. + * For example, the #GtkListStore model, which is internally a simple + * linked list, stores a list node in one of the pointers. The + * #GtkTreeModelSort stores an array and an offset in two of the + * pointers. Additionally, there is an integer field. This field is + * generally filled with a unique stamp per model. This stamp is for + * catching errors resulting from using invalid iterators with a model. + * + * The lifecycle of an iterator can be a little confusing at first. + * Iterators are expected to always be valid for as long as the model + * is unchanged (and doesn't emit a signal). The model is considered + * to own all outstanding iterators and nothing needs to be done to + * free them from the user's point of view. Additionally, some models + * guarantee that an iterator is valid for as long as the node it refers + * to is valid (most notably the #GtkTreeStore and #GtkListStore). + * Although generally uninteresting, as one always has to allow for + * the case where iterators do not persist beyond a signal, some very + * important performance enhancements were made in the sort model. + * As a result, the #GTK_TREE_MODEL_ITERS_PERSIST flag was added to + * indicate this behavior. + * + * To help show some common operation of a model, some examples are + * provided. The first example shows three ways of getting the iter at + * the location 3:2:5. While the first method shown is + * easier, the second is much more common, as you often get paths from + * callbacks. + * + * + * Acquiring a <structname>GtkTreeIter</structname> + * + * /* Three ways of getting the iter pointing to the location */ + * GtkTreePath *path; + * GtkTreeIter iter; + * GtkTreeIter parent_iter; + * + * /* get the iterator from a string */ + * gtk_tree_model_get_iter_from_string (model, &iter, "3:2:5"); + * + * /* get the iterator from a path */ + * path = gtk_tree_path_new_from_string ("3:2:5"); + * gtk_tree_model_get_iter (model, &iter, path); + * gtk_tree_path_free (path); + * + * /* walk the tree to find the iterator */ + * gtk_tree_model_iter_nth_child (model, &iter, NULL, 3); + * parent_iter = iter; + * gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 2); + * parent_iter = iter; + * gtk_tree_model_iter_nth_child (model, &iter, &parent_iter, 5); + * + * + * + * This second example shows a quick way of iterating through a list + * and getting a string and an integer from each row. The + * populate_model function used below is not + * shown, as it is specific to the #GtkListStore. For information on + * how to write such a function, see the #GtkListStore documentation. + * + * + * Reading data from a <structname>GtkTreeModel</structname> + * + * enum + * { + * STRING_COLUMN, + * INT_COLUMN, + * N_COLUMNS + * }; + * + * ... + * + * GtkTreeModel *list_store; + * GtkTreeIter iter; + * gboolean valid; + * gint row_count = 0; + * + * /* make a new list_store */ + * list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_INT); + * + * /* Fill the list store with data */ + * populate_model (list_store); + * + * /* Get the first iter in the list */ + * valid = gtk_tree_model_get_iter_first (list_store, &iter); + * + * while (valid) + * { + * /* Walk through the list, reading each row */ + * gchar *str_data; + * gint int_data; + * + * /* Make sure you terminate calls to gtk_tree_model_get() + * * with a '-1' value + * */ + * gtk_tree_model_get (list_store, &iter, + * STRING_COLUMN, &str_data, + * INT_COLUMN, &int_data, + * -1); + * + * /* Do something with the data */ + * g_print ("Row %d: (%s,%d)\n", row_count, str_data, int_data); + * g_free (str_data); + * + * row_count++; + * valid = gtk_tree_model_iter_next (list_store, &iter); + * } + * + * + * + */ #define INITIALIZE_TREE_ITER(Iter) \ G_STMT_START{ \ @@ -104,19 +273,19 @@ gtk_tree_model_get_type (void) const GTypeInfo tree_model_info = { sizeof (GtkTreeModelIface), /* class_size */ - gtk_tree_model_base_init, /* base_init */ - NULL, /* base_finalize */ - NULL, - NULL, /* class_finalize */ - NULL, /* class_data */ - 0, - 0, /* n_preallocs */ - NULL + gtk_tree_model_base_init, /* base_init */ + NULL, /* base_finalize */ + NULL, + NULL, /* class_finalize */ + NULL, /* class_data */ + 0, + 0, /* n_preallocs */ + NULL }; tree_model_type = - g_type_register_static (G_TYPE_INTERFACE, I_("GtkTreeModel"), - &tree_model_info, 0); + g_type_register_static (G_TYPE_INTERFACE, I_("GtkTreeModel"), + &tree_model_info, 0); g_type_interface_add_prerequisite (tree_model_type, G_TYPE_OBJECT); } @@ -183,10 +352,11 @@ gtk_tree_model_base_init (gpointer g_class) * @path: a #GtkTreePath identifying the new row * @iter: a valid #GtkTreeIter pointing to the new row * - * This signal is emitted when a new row has been inserted in the model. + * This signal is emitted when a new row has been inserted in + * the model. * * Note that the row may still be empty at this point, since - * it is a common pattern to first insert an empty row, and + * it is a common pattern to first insert an empty row, and * then fill it with the desired values. */ closure = g_closure_new_simple (sizeof (GClosure), NULL); @@ -207,8 +377,8 @@ gtk_tree_model_base_init (gpointer g_class) * @path: a #GtkTreePath identifying the row * @iter: a valid #GtkTreeIter pointing to the row * - * This signal is emitted when a row has gotten the first child row or lost - * its last child row. + * This signal is emitted when a row has gotten the first child + * row or lost its last child row. */ tree_model_signals[ROW_HAS_CHILD_TOGGLED] = g_signal_new (I_("row-has-child-toggled"), @@ -231,9 +401,9 @@ gtk_tree_model_base_init (gpointer g_class) * Note that no iterator is passed to the signal handler, * since the row is already deleted. * - * Implementations of GtkTreeModel must emit row-deleted + * Implementations of GtkTreeModel must emit ::row-deleted * before removing the node from its - * internal data structures. This is because models and + * internal data structures. This is because models and * views which access and monitor this model might have * references on the node which need to be released in the * row-deleted handler. @@ -254,14 +424,14 @@ gtk_tree_model_base_init (gpointer g_class) * GtkTreeModel::rows-reordered: * @tree_model: the #GtkTreeModel on which the signal is emitted * @path: a #GtkTreePath identifying the tree node whose children - * have been reordered - * @iter: a valid #GtkTreeIter pointing to the node whose - * @new_order: an array of integers mapping the current position of - * each child to its old position before the re-ordering, - * i.e. @new_order[newpos] = oldpos. + * have been reordered + * @iter: a valid #GtkTreeIter pointing to the node whose + * @new_order: an array of integers mapping the current position + * of each child to its old position before the re-ordering, + * i.e. @new_order[newpos] = oldpos * - * This signal is emitted when the children of a node in the #GtkTreeModel - * have been reordered. + * This signal is emitted when the children of a node in the + * #GtkTreeModel have been reordered. * * Note that this signal is not emitted * when rows are reordered by DND, since this is implemented @@ -295,7 +465,7 @@ row_inserted_marshal (GClosure *closure, void (* row_inserted_callback) (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter) = NULL; - + GObject *model = g_value_get_object (param_values + 0); GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); GtkTreeIter *iter = (GtkTreeIter *)g_value_get_boxed (param_values + 2); @@ -303,14 +473,14 @@ row_inserted_marshal (GClosure *closure, /* first, we need to update internal row references */ gtk_tree_row_ref_inserted ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), path, iter); - + /* fetch the interface ->row_inserted implementation */ iface = GTK_TREE_MODEL_GET_IFACE (model); row_inserted_callback = G_STRUCT_MEMBER (gpointer, iface, G_STRUCT_OFFSET (GtkTreeModelIface, row_inserted)); - /* Call that default signal handler, it if has been set */ + /* Call that default signal handler, it if has been set */ if (row_inserted_callback) row_inserted_callback (GTK_TREE_MODEL (model), path, iter); } @@ -325,10 +495,9 @@ row_deleted_marshal (GClosure *closure, { GtkTreeModelIface *iface; void (* row_deleted_callback) (GtkTreeModel *tree_model, - GtkTreePath *path) = NULL; + GtkTreePath *path) = NULL; GObject *model = g_value_get_object (param_values + 0); GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); - /* first, we need to update internal row references */ gtk_tree_row_ref_deleted ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), @@ -339,7 +508,7 @@ row_deleted_marshal (GClosure *closure, row_deleted_callback = G_STRUCT_MEMBER (gpointer, iface, G_STRUCT_OFFSET (GtkTreeModelIface, row_deleted)); - + /* Call that default signal handler, it if has been set */ if (row_deleted_callback) row_deleted_callback (GTK_TREE_MODEL (model), path); @@ -358,12 +527,12 @@ rows_reordered_marshal (GClosure *closure, GtkTreePath *path, GtkTreeIter *iter, gint *new_order); - + GObject *model = g_value_get_object (param_values + 0); GtkTreePath *path = (GtkTreePath *)g_value_get_boxed (param_values + 1); GtkTreeIter *iter = (GtkTreeIter *)g_value_get_boxed (param_values + 2); gint *new_order = (gint *)g_value_get_pointer (param_values + 3); - + /* first, we need to update internal row references */ gtk_tree_row_ref_reordered ((RowRefList *)g_object_get_data (model, ROW_REF_DATA_STRING), path, iter, new_order); @@ -382,11 +551,11 @@ rows_reordered_marshal (GClosure *closure, /** * gtk_tree_path_new: * - * Creates a new #GtkTreePath. This structure refers to a row. + * Creates a new #GtkTreePath. + * This structure refers to a row. * * Return value: A newly created #GtkTreePath. - **/ -/* GtkTreePath Operations */ + */ GtkTreePath * gtk_tree_path_new (void) { @@ -400,16 +569,18 @@ gtk_tree_path_new (void) /** * gtk_tree_path_new_from_string: - * @path: The string representation of a path. + * @path: The string representation of a path * - * Creates a new #GtkTreePath initialized to @path. @path is expected to be a - * colon separated list of numbers. For example, the string "10:4:0" would - * create a path of depth 3 pointing to the 11th child of the root node, the 5th - * child of that 11th child, and the 1st child of that 5th child. If an invalid - * path string is passed in, %NULL is returned. + * Creates a new #GtkTreePath initialized to @path. + * + * @path is expected to be a colon separated list of numbers. + * For example, the string "10:4:0" would create a path of depth + * 3 pointing to the 11th child of the root node, the 5th + * child of that 11th child, and the 1st child of that 5th child. + * If an invalid path string is passed in, %NULL is returned. * * Return value: A newly-created #GtkTreePath, or %NULL - **/ + */ GtkTreePath * gtk_tree_path_new_from_string (const gchar *path) { @@ -427,22 +598,22 @@ gtk_tree_path_new_from_string (const gchar *path) { i = strtol (path, &ptr, 10); if (i < 0) - { - g_warning (G_STRLOC ": Negative numbers in path %s passed to gtk_tree_path_new_from_string", orig_path); - gtk_tree_path_free (retval); - return NULL; - } + { + g_warning (G_STRLOC ": Negative numbers in path %s passed to gtk_tree_path_new_from_string", orig_path); + gtk_tree_path_free (retval); + return NULL; + } gtk_tree_path_append_index (retval, i); if (*ptr == '\000') - break; + break; if (ptr == path || *ptr != ':') - { - g_warning (G_STRLOC ": Invalid path %s passed to gtk_tree_path_new_from_string", orig_path); - gtk_tree_path_free (retval); - return NULL; - } + { + g_warning (G_STRLOC ": Invalid path %s passed to gtk_tree_path_new_from_string", orig_path); + gtk_tree_path_free (retval); + return NULL; + } path = ptr + 1; } @@ -456,13 +627,13 @@ gtk_tree_path_new_from_string (const gchar *path) * * Creates a new path with @first_index and @varargs as indices. * - * Return value: A newly created #GtkTreePath. + * Return value: A newly created #GtkTreePath * * Since: 2.2 - **/ + */ GtkTreePath * gtk_tree_path_new_from_indices (gint first_index, - ...) + ...) { int arg; va_list args; @@ -488,11 +659,15 @@ gtk_tree_path_new_from_indices (gint first_index, * gtk_tree_path_to_string: * @path: A #GtkTreePath * - * Generates a string representation of the path. This string is a ':' - * separated list of numbers. For example, "4:10:0:3" would be an acceptable return value for this string. + * Generates a string representation of the path. * - * Return value: A newly-allocated string. Must be freed with g_free(). - **/ + * This string is a ':' separated list of numbers. + * For example, "4:10:0:3" would be an acceptable + * return value for this string. + * + * Return value: A newly-allocated string. + * Must be freed with g_free(). + */ gchar * gtk_tree_path_to_string (GtkTreePath *path) { @@ -508,14 +683,14 @@ gtk_tree_path_to_string (GtkTreePath *path) ptr = retval = g_new0 (gchar, n); end = ptr + n; g_snprintf (retval, end - ptr, "%d", path->indices[0]); - while (*ptr != '\000') + while (*ptr != '\000') ptr++; for (i = 1; i < path->depth; i++) { g_snprintf (ptr, end - ptr, ":%d", path->indices[i]); while (*ptr != '\000') - ptr++; + ptr++; } return retval; @@ -524,10 +699,12 @@ gtk_tree_path_to_string (GtkTreePath *path) /** * gtk_tree_path_new_first: * - * Creates a new #GtkTreePath. The string representation of this path is "0" + * Creates a new #GtkTreePath. * - * Return value: A new #GtkTreePath. - **/ + * The string representation of this path is "0". + * + * Return value: A new #GtkTreePath + */ GtkTreePath * gtk_tree_path_new_first (void) { @@ -541,15 +718,16 @@ gtk_tree_path_new_first (void) /** * gtk_tree_path_append_index: - * @path: A #GtkTreePath. - * @index_: The index. + * @path: a #GtkTreePath + * @index_: the index * - * Appends a new index to a path. As a result, the depth of the path is - * increased. - **/ + * Appends a new index to a path. + * + * As a result, the depth of the path is increased. + */ void gtk_tree_path_append_index (GtkTreePath *path, - gint index) + gint index) { g_return_if_fail (path != NULL); g_return_if_fail (index >= 0); @@ -561,15 +739,16 @@ gtk_tree_path_append_index (GtkTreePath *path, /** * gtk_tree_path_prepend_index: - * @path: A #GtkTreePath. - * @index_: The index. + * @path: a #GtkTreePath + * @index_: the index * - * Prepends a new index to a path. As a result, the depth of the path is - * increased. - **/ + * Prepends a new index to a path. + * + * As a result, the depth of the path is increased. + */ void gtk_tree_path_prepend_index (GtkTreePath *path, - gint index) + gint index) { gint *new_indices; @@ -590,12 +769,12 @@ gtk_tree_path_prepend_index (GtkTreePath *path, /** * gtk_tree_path_get_depth: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Returns the current depth of @path. * * Return value: The depth of @path - **/ + */ gint gtk_tree_path_get_depth (GtkTreePath *path) { @@ -606,13 +785,15 @@ gtk_tree_path_get_depth (GtkTreePath *path) /** * gtk_tree_path_get_indices: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * - * Returns the current indices of @path. This is an array of integers, each - * representing a node in a tree. This value should not be freed. + * Returns the current indices of @path. * - * Return value: The current indices, or %NULL. - **/ + * This is an array of integers, each representing a node in a tree. + * This value should not be freed. + * + * Return value: The current indices, or %NULL + */ gint * gtk_tree_path_get_indices (GtkTreePath *path) { @@ -623,22 +804,26 @@ gtk_tree_path_get_indices (GtkTreePath *path) /** * gtk_tree_path_get_indices_with_depth: - * @path: A #GtkTreePath. - * @depth: Number of elements returned in the integer array + * @path: a #GtkTreePath + * @depth: (allow-none): return location for number of elements + * returned in the integer array, or %NULL * * Returns the current indices of @path. + * * This is an array of integers, each representing a node in a tree. * It also returns the number of elements in the array. * The array should not be freed. * - * Return value: (array length=depth) (transfer none): The current indices, or %NULL. + * Return value: (array length=depth) (transfer none): The current + * indices, or %NULL * * Since: 3.0 * * Rename to: gtk_tree_path_get_indices - **/ + */ gint * -gtk_tree_path_get_indices_with_depth (GtkTreePath *path, gint *depth) +gtk_tree_path_get_indices_with_depth (GtkTreePath *path, + gint *depth) { g_return_val_if_fail (path != NULL, NULL); @@ -650,10 +835,10 @@ gtk_tree_path_get_indices_with_depth (GtkTreePath *path, gint *depth) /** * gtk_tree_path_free: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Frees @path. - **/ + */ void gtk_tree_path_free (GtkTreePath *path) { @@ -666,12 +851,12 @@ gtk_tree_path_free (GtkTreePath *path) /** * gtk_tree_path_copy: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Creates a new #GtkTreePath as a copy of @path. * - * Return value: A new #GtkTreePath. - **/ + * Return value: a new #GtkTreePath + */ GtkTreePath * gtk_tree_path_copy (const GtkTreePath *path) { @@ -692,18 +877,20 @@ G_DEFINE_BOXED_TYPE (GtkTreePath, gtk_tree_path, /** * gtk_tree_path_compare: - * @a: A #GtkTreePath. - * @b: A #GtkTreePath to compare with. + * @a: a #GtkTreePath + * @b: a #GtkTreePath to compare with * - * Compares two paths. If @a appears before @b in a tree, then -1 is returned. - * If @b appears before @a, then 1 is returned. If the two nodes are equal, - * then 0 is returned. + * Compares two paths. * - * Return value: The relative positions of @a and @b - **/ + * If @a appears before @b in a tree, then -1 is returned. + * If @b appears before @a, then 1 is returned. + * If the two nodes are equal, then 0 is returned. + * + * Return value: the relative positions of @a and @b + */ gint gtk_tree_path_compare (const GtkTreePath *a, - const GtkTreePath *b) + const GtkTreePath *b) { gint p = 0, q = 0; @@ -715,7 +902,7 @@ gtk_tree_path_compare (const GtkTreePath *a, do { if (a->indices[p] == b->indices[q]) - continue; + continue; return (a->indices[p] < b->indices[q]?-1:1); } while (++p < a->depth && ++q < b->depth); @@ -732,7 +919,7 @@ gtk_tree_path_compare (const GtkTreePath *a, * Returns %TRUE if @descendant is a descendant of @path. * * Return value: %TRUE if @descendant is contained inside @path - **/ + */ gboolean gtk_tree_path_is_ancestor (GtkTreePath *path, GtkTreePath *descendant) @@ -765,7 +952,7 @@ gtk_tree_path_is_ancestor (GtkTreePath *path, * Returns %TRUE if @path is a descendant of @ancestor. * * Return value: %TRUE if @ancestor contains @path somewhere below it - **/ + */ gboolean gtk_tree_path_is_descendant (GtkTreePath *path, GtkTreePath *ancestor) @@ -793,10 +980,10 @@ gtk_tree_path_is_descendant (GtkTreePath *path, /** * gtk_tree_path_next: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Moves the @path to point to the next node at the current depth. - **/ + */ void gtk_tree_path_next (GtkTreePath *path) { @@ -808,13 +995,14 @@ gtk_tree_path_next (GtkTreePath *path) /** * gtk_tree_path_prev: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * - * Moves the @path to point to the previous node at the current depth, - * if it exists. + * Moves the @path to point to the previous node at the + * current depth, if it exists. * - * Return value: %TRUE if @path has a previous node, and the move was made. - **/ + * Return value: %TRUE if @path has a previous node, and + * the move was made + */ gboolean gtk_tree_path_prev (GtkTreePath *path) { @@ -833,12 +1021,12 @@ gtk_tree_path_prev (GtkTreePath *path) /** * gtk_tree_path_up: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Moves the @path to point to its parent node, if it has a parent. * - * Return value: %TRUE if @path has a parent, and the move was made. - **/ + * Return value: %TRUE if @path has a parent, and the move was made + */ gboolean gtk_tree_path_up (GtkTreePath *path) { @@ -854,10 +1042,10 @@ gtk_tree_path_up (GtkTreePath *path) /** * gtk_tree_path_down: - * @path: A #GtkTreePath. + * @path: a #GtkTreePath * * Moves @path to point to the first child of the current path. - **/ + */ void gtk_tree_path_down (GtkTreePath *path) { @@ -868,16 +1056,17 @@ gtk_tree_path_down (GtkTreePath *path) /** * gtk_tree_iter_copy: - * @iter: A #GtkTreeIter. + * @iter: a #GtkTreeIter * - * Creates a dynamically allocated tree iterator as a copy of @iter. - * This function is not intended for use in applications, because you - * can just copy the structs by value + * Creates a dynamically allocated tree iterator as a copy of @iter. + * + * This function is not intended for use in applications, + * because you can just copy the structs by value * (GtkTreeIter new_iter = iter;). * You must free this iter with gtk_tree_iter_free(). * - * Return value: a newly-allocated copy of @iter. - **/ + * Return value: a newly-allocated copy of @iter + */ GtkTreeIter * gtk_tree_iter_copy (GtkTreeIter *iter) { @@ -893,11 +1082,12 @@ gtk_tree_iter_copy (GtkTreeIter *iter) /** * gtk_tree_iter_free: - * @iter: A dynamically allocated tree iterator. + * @iter: a dynamically allocated tree iterator * * Frees an iterator that has been allocated by gtk_tree_iter_copy(). + * * This function is mainly used for language bindings. - **/ + */ void gtk_tree_iter_free (GtkTreeIter *iter) { @@ -912,14 +1102,16 @@ G_DEFINE_BOXED_TYPE (GtkTreeIter, gtk_tree_iter, /** * gtk_tree_model_get_flags: - * @tree_model: A #GtkTreeModel. + * @tree_model: a #GtkTreeModel * - * Returns a set of flags supported by this interface. The flags are a bitwise - * combination of #GtkTreeModelFlags. The flags supported should not change - * during the lifecycle of the @tree_model. + * Returns a set of flags supported by this interface. * - * Return value: The flags supported by this interface. - **/ + * The flags are a bitwise combination of #GtkTreeModelFlags. + * The flags supported should not change during the lifetime + * of the @tree_model. + * + * Return value: the flags supported by this interface + */ GtkTreeModelFlags gtk_tree_model_get_flags (GtkTreeModel *tree_model) { @@ -936,12 +1128,12 @@ gtk_tree_model_get_flags (GtkTreeModel *tree_model) /** * gtk_tree_model_get_n_columns: - * @tree_model: A #GtkTreeModel. + * @tree_model: a #GtkTreeModel * * Returns the number of columns supported by @tree_model. * - * Return value: The number of columns. - **/ + * Return value: the number of columns + */ gint gtk_tree_model_get_n_columns (GtkTreeModel *tree_model) { @@ -956,16 +1148,16 @@ gtk_tree_model_get_n_columns (GtkTreeModel *tree_model) /** * gtk_tree_model_get_column_type: - * @tree_model: A #GtkTreeModel. - * @index_: The column index. + * @tree_model: a #GtkTreeModel + * @index_: the column index * * Returns the type of the column. * - * Return value: (transfer none): The type of the column. - **/ + * Return value: (transfer none): the type of the column + */ GType gtk_tree_model_get_column_type (GtkTreeModel *tree_model, - gint index) + gint index) { GtkTreeModelIface *iface; @@ -980,18 +1172,18 @@ gtk_tree_model_get_column_type (GtkTreeModel *tree_model, /** * gtk_tree_model_get_iter: - * @tree_model: A #GtkTreeModel. - * @iter: (out): The uninitialized #GtkTreeIter. - * @path: The #GtkTreePath. + * @tree_model: a #GtkTreeModel + * @iter: (out): the uninitialized #GtkTreeIter + * @path: the #GtkTreePath * * Sets @iter to a valid iterator pointing to @path. * - * Return value: %TRUE, if @iter was set. - **/ + * Return value: %TRUE, if @iter was set + */ gboolean gtk_tree_model_get_iter (GtkTreeModel *tree_model, - GtkTreeIter *iter, - GtkTreePath *path) + GtkTreeIter *iter, + GtkTreePath *path) { GtkTreeModelIface *iface; @@ -1010,19 +1202,19 @@ gtk_tree_model_get_iter (GtkTreeModel *tree_model, /** * gtk_tree_model_get_iter_from_string: - * @tree_model: A #GtkTreeModel. - * @iter: (out): An uninitialized #GtkTreeIter. - * @path_string: A string representation of a #GtkTreePath. + * @tree_model: a #GtkTreeModel + * @iter: (out): an uninitialized #GtkTreeIter + * @path_string: a string representation of a #GtkTreePath * * Sets @iter to a valid iterator pointing to @path_string, if it * exists. Otherwise, @iter is left invalid and %FALSE is returned. * - * Return value: %TRUE, if @iter was set. - **/ + * Return value: %TRUE, if @iter was set + */ gboolean gtk_tree_model_get_iter_from_string (GtkTreeModel *tree_model, - GtkTreeIter *iter, - const gchar *path_string) + GtkTreeIter *iter, + const gchar *path_string) { gboolean retval; GtkTreePath *path; @@ -1030,30 +1222,33 @@ gtk_tree_model_get_iter_from_string (GtkTreeModel *tree_model, g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (path_string != NULL, FALSE); - + path = gtk_tree_path_new_from_string (path_string); - + g_return_val_if_fail (path != NULL, FALSE); retval = gtk_tree_model_get_iter (tree_model, iter, path); gtk_tree_path_free (path); - + return retval; } /** * gtk_tree_model_get_string_from_iter: - * @tree_model: A #GtkTreeModel. - * @iter: An #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: a #GtkTreeIter * - * Generates a string representation of the iter. This string is a ':' - * separated list of numbers. For example, "4:10:0:3" would be an - * acceptable return value for this string. + * Generates a string representation of the iter. * - * Return value: A newly-allocated string. Must be freed with g_free(). + * This string is a ':' separated list of numbers. + * For example, "4:10:0:3" would be an acceptable + * return value for this string. + * + * Return value: a newly-allocated string. + * Must be freed with g_free(). * * Since: 2.2 - **/ + */ gchar * gtk_tree_model_get_string_from_iter (GtkTreeModel *tree_model, GtkTreeIter *iter) @@ -1076,17 +1271,18 @@ gtk_tree_model_get_string_from_iter (GtkTreeModel *tree_model, /** * gtk_tree_model_get_iter_first: - * @tree_model: A #GtkTreeModel. - * @iter: (out): The uninitialized #GtkTreeIter. - * - * Initializes @iter with the first iterator in the tree (the one at the path - * "0") and returns %TRUE. Returns %FALSE if the tree is empty. - * - * Return value: %TRUE, if @iter was set. - **/ + * @tree_model: a #GtkTreeModel + * @iter: (out): the uninitialized #GtkTreeIter + * + * Initializes @iter with the first iterator in the tree + * (the one at the path "0") and returns %TRUE. Returns + * %FALSE if the tree is empty. + * + * Return value: %TRUE, if @iter was set + */ gboolean gtk_tree_model_get_iter_first (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreePath *path; gboolean retval; @@ -1103,17 +1299,18 @@ gtk_tree_model_get_iter_first (GtkTreeModel *tree_model, /** * gtk_tree_model_get_path: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: the #GtkTreeIter * - * Returns a newly-created #GtkTreePath referenced by @iter. This path should - * be freed with gtk_tree_path_free(). + * Returns a newly-created #GtkTreePath referenced by @iter. * - * Return value: a newly-created #GtkTreePath. - **/ + * This path should be freed with gtk_tree_path_free(). + * + * Return value: a newly-created #GtkTreePath + */ GtkTreePath * gtk_tree_model_get_path (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1128,20 +1325,21 @@ gtk_tree_model_get_path (GtkTreeModel *tree_model, /** * gtk_tree_model_get_value: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. - * @column: The column to lookup the value at. - * @value: (out) (transfer none): An empty #GValue to set. + * @tree_model: a #GtkTreeModel + * @iter: the #GtkTreeIter + * @column: the column to lookup the value at + * @value: (out) (transfer none): an empty #GValue to set * * Initializes and sets @value to that at @column. - * When done with @value, g_value_unset() needs to be called + * + * When done with @value, g_value_unset() needs to be called * to free any allocated memory. */ void gtk_tree_model_get_value (GtkTreeModel *tree_model, - GtkTreeIter *iter, - gint column, - GValue *value) + GtkTreeIter *iter, + gint column, + GValue *value) { GtkTreeModelIface *iface; @@ -1157,17 +1355,19 @@ gtk_tree_model_get_value (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_next: - * @tree_model: A #GtkTreeModel. - * @iter: (in): The #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: (in): the #GtkTreeIter * - * Sets @iter to point to the node following it at the current level. If there - * is no next @iter, %FALSE is returned and @iter is set to be invalid. + * Sets @iter to point to the node following it at the current level. * - * Return value: %TRUE if @iter has been changed to the next node. - **/ + * If there is no next @iter, %FALSE is returned and @iter is set + * to be invalid. + * + * Return value: %TRUE if @iter has been changed to the next node + */ gboolean gtk_tree_model_iter_next (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1180,25 +1380,82 @@ gtk_tree_model_iter_next (GtkTreeModel *tree_model, return (* iface->iter_next) (tree_model, iter); } +static gboolean +gtk_tree_model_iter_previous_default (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + gboolean retval; + GtkTreePath *path; + + path = gtk_tree_model_get_path (tree_model, iter); + if (path == NULL) + return FALSE; + + retval = gtk_tree_path_prev (path) && + gtk_tree_model_get_iter (tree_model, iter, path); + if (retval == FALSE) + iter->stamp = 0; + + gtk_tree_path_free (path); + + return retval; +} + +/** + * gtk_tree_model_iter_previous: + * @tree_model: a #GtkTreeModel + * @iter: (inout): the #GtkTreeIter + * + * Sets @iter to point to the previous node at the current level. + * + * If there is no previous @iter, %FALSE is returned and @iter is + * set to be invalid. + * + * Return value: %TRUE if @iter has been changed to the previous node + * + * Since: 3.0 + */ +gboolean +gtk_tree_model_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + gboolean retval; + GtkTreeModelIface *iface; + + g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); + g_return_val_if_fail (iter != NULL, FALSE); + + iface = GTK_TREE_MODEL_GET_IFACE (tree_model); + + if (iface->iter_previous) + retval = (* iface->iter_previous) (tree_model, iter); + else + retval = gtk_tree_model_iter_previous_default (tree_model, iter); + + return retval; +} + /** * gtk_tree_model_iter_children: - * @tree_model: A #GtkTreeModel. - * @iter: (out): The new #GtkTreeIter to be set to the child. - * @parent: (allow-none): The #GtkTreeIter, or %NULL + * @tree_model: a #GtkTreeModel + * @iter: (out): the new #GtkTreeIter to be set to the child + * @parent: (allow-none): the #GtkTreeIter, or %NULL * - * Sets @iter to point to the first child of @parent. If @parent has no - * children, %FALSE is returned and @iter is set to be invalid. @parent - * will remain a valid node after this function has been called. + * Sets @iter to point to the first child of @parent. + * + * If @parent has no children, %FALSE is returned and @iter is + * set to be invalid. @parent will remain a valid node after this + * function has been called. * * If @parent is %NULL returns the first node, equivalent to * gtk_tree_model_get_iter_first (tree_model, iter); * - * Return value: %TRUE, if @child has been set to the first child. - **/ + * Return value: %TRUE, if @child has been set to the first child + */ gboolean gtk_tree_model_iter_children (GtkTreeModel *tree_model, - GtkTreeIter *iter, - GtkTreeIter *parent) + GtkTreeIter *iter, + GtkTreeIter *parent) { GtkTreeModelIface *iface; @@ -1215,16 +1472,16 @@ gtk_tree_model_iter_children (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_has_child: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter to test for children. + * @tree_model: a #GtkTreeModel + * @iter: the #GtkTreeIter to test for children * * Returns %TRUE if @iter has children, %FALSE otherwise. * - * Return value: %TRUE if @iter has children. - **/ + * Return value: %TRUE if @iter has children + */ gboolean gtk_tree_model_iter_has_child (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1239,17 +1496,19 @@ gtk_tree_model_iter_has_child (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_n_children: - * @tree_model: A #GtkTreeModel. - * @iter: (allow-none): The #GtkTreeIter, or %NULL. + * @tree_model: a #GtkTreeModel + * @iter: (allow-none): the #GtkTreeIter, or %NULL * - * Returns the number of children that @iter has. As a special case, if @iter - * is %NULL, then the number of toplevel nodes is returned. + * Returns the number of children that @iter has. * - * Return value: The number of children of @iter. - **/ + * As a special case, if @iter is %NULL, then the number + * of toplevel nodes is returned. + * + * Return value: the number of children of @iter + */ gint gtk_tree_model_iter_n_children (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1263,24 +1522,26 @@ gtk_tree_model_iter_n_children (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_nth_child: - * @tree_model: A #GtkTreeModel. - * @iter: (out): The #GtkTreeIter to set to the nth child. - * @parent: (allow-none): The #GtkTreeIter to get the child from, or %NULL. - * @n: Then index of the desired child. + * @tree_model: a #GtkTreeModel + * @iter: (out): the #GtkTreeIter to set to the nth child + * @parent: (allow-none): the #GtkTreeIter to get the child from, or %NULL. + * @n: the index of the desired child * - * Sets @iter to be the child of @parent, using the given index. The first - * index is 0. If @n is too big, or @parent has no children, @iter is set - * to an invalid iterator and %FALSE is returned. @parent will remain a valid - * node after this function has been called. As a special case, if @parent is - * %NULL, then the @nth root node is set. + * Sets @iter to be the child of @parent, using the given index. * - * Return value: %TRUE, if @parent has an @nth child. - **/ + * The first index is 0. If @n is too big, or @parent has no children, + * @iter is set to an invalid iterator and %FALSE is returned. @parent + * will remain a valid node after this function has been called. As a + * special case, if @parent is %NULL, then the @nth root node + * is set. + * + * Return value: %TRUE, if @parent has an @nth child + */ gboolean gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model, - GtkTreeIter *iter, - GtkTreeIter *parent, - gint n) + GtkTreeIter *iter, + GtkTreeIter *parent, + gint n) { GtkTreeModelIface *iface; @@ -1298,28 +1559,30 @@ gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_parent: - * @tree_model: A #GtkTreeModel - * @iter: (out): The new #GtkTreeIter to set to the parent. - * @child: The #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: (out): the new #GtkTreeIter to set to the parent + * @child: the #GtkTreeIter * - * Sets @iter to be the parent of @child. If @child is at the toplevel, and - * doesn't have a parent, then @iter is set to an invalid iterator and %FALSE - * is returned. @child will remain a valid node after this function has been + * Sets @iter to be the parent of @child. + * + * If @child is at the toplevel, and doesn't have a parent, then + * @iter is set to an invalid iterator and %FALSE is returned. + * @child will remain a valid node after this function has been * called. * - * Return value: %TRUE, if @iter is set to the parent of @child. - **/ + * Return value: %TRUE, if @iter is set to the parent of @child + */ gboolean gtk_tree_model_iter_parent (GtkTreeModel *tree_model, - GtkTreeIter *iter, - GtkTreeIter *child) + GtkTreeIter *iter, + GtkTreeIter *child) { GtkTreeModelIface *iface; g_return_val_if_fail (GTK_IS_TREE_MODEL (tree_model), FALSE); g_return_val_if_fail (iter != NULL, FALSE); g_return_val_if_fail (child != NULL, FALSE); - + iface = GTK_TREE_MODEL_GET_IFACE (tree_model); g_return_val_if_fail (iface->iter_parent != NULL, FALSE); @@ -1330,25 +1593,28 @@ gtk_tree_model_iter_parent (GtkTreeModel *tree_model, /** * gtk_tree_model_ref_node: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: the #GtkTreeIter * - * Lets the tree ref the node. This is an optional method for models to - * implement. To be more specific, models may ignore this call as it exists + * Lets the tree ref the node. + * + * This is an optional method for models to implement. + * To be more specific, models may ignore this call as it exists * primarily for performance reasons. - * - * This function is primarily meant as a way for views to let caching model - * know when nodes are being displayed (and hence, whether or not to cache that - * node.) For example, a file-system based model would not want to keep the - * entire file-hierarchy in memory, just the sections that are currently being - * displayed by every current view. * - * A model should be expected to be able to get an iter independent of its - * reffed state. - **/ + * This function is primarily meant as a way for views to let + * caching models know when nodes are being displayed (and hence, + * whether or not to cache that node). For example, a file-system + * based model would not want to keep the entire file-hierarchy in + * memory, just the sections that are currently being displayed by + * every current view. + * + * A model should be expected to be able to get an iter independent + * of its reffed state. + */ void gtk_tree_model_ref_node (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1361,19 +1627,21 @@ gtk_tree_model_ref_node (GtkTreeModel *tree_model, /** * gtk_tree_model_unref_node: - * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. + * @tree_model: a #GtkTreeModel + * @iter: the #GtkTreeIter * - * Lets the tree unref the node. This is an optional method for models to - * implement. To be more specific, models may ignore this call as it exists - * primarily for performance reasons. + * Lets the tree unref the node. + * + * This is an optional method for models to implement. + * To be more specific, models may ignore this call as it exists + * primarily for performance reasons. For more information on what + * this means, see gtk_tree_model_ref_node(). * - * For more information on what this means, see gtk_tree_model_ref_node(). * Please note that nodes that are deleted are not unreffed. - **/ + */ void gtk_tree_model_unref_node (GtkTreeModel *tree_model, - GtkTreeIter *iter) + GtkTreeIter *iter) { GtkTreeModelIface *iface; @@ -1389,7 +1657,8 @@ gtk_tree_model_unref_node (GtkTreeModel *tree_model, * gtk_tree_model_get: * @tree_model: a #GtkTreeModel * @iter: a row in @tree_model - * @Varargs: pairs of column number and value return locations, terminated by -1 + * @Varargs: pairs of column number and value return locations, + * terminated by -1 * * Gets the value of one or more cells in the row referenced by @iter. * The variable argument list should contain integer column numbers, @@ -1397,17 +1666,17 @@ gtk_tree_model_unref_node (GtkTreeModel *tree_model, * retrieved. The list is terminated by a -1. For example, to get a * value from column 0 with type %G_TYPE_STRING, you would * write: gtk_tree_model_get (model, iter, 0, &place_string_here, -1), - * where place_string_here is a gchar* to be - * filled with the string. + * where place_string_here is a gchar* + * to be filled with the string. * - * Returned values with type %G_TYPE_OBJECT have to be unreferenced, values - * with type %G_TYPE_STRING or %G_TYPE_BOXED have to be freed. Other values are - * passed by value. - **/ + * Returned values with type %G_TYPE_OBJECT have to be unreferenced, + * values with type %G_TYPE_STRING or %G_TYPE_BOXED have to be freed. + * Other values are passed by value. + */ void gtk_tree_model_get (GtkTreeModel *tree_model, - GtkTreeIter *iter, - ...) + GtkTreeIter *iter, + ...) { va_list var_args; @@ -1425,13 +1694,13 @@ gtk_tree_model_get (GtkTreeModel *tree_model, * @iter: a row in @tree_model * @var_args: va_list of column/return location pairs * - * See gtk_tree_model_get(), this version takes a va_list + * See gtk_tree_model_get(), this version takes a va_list * for language bindings to use. - **/ + */ void gtk_tree_model_get_valist (GtkTreeModel *tree_model, GtkTreeIter *iter, - va_list var_args) + va_list var_args) { gint column; @@ -1446,24 +1715,24 @@ gtk_tree_model_get_valist (GtkTreeModel *tree_model, gchar *error = NULL; if (column >= gtk_tree_model_get_n_columns (tree_model)) - { - g_warning ("%s: Invalid column number %d accessed (remember to end your list of columns with a -1)", G_STRLOC, column); - break; - } + { + g_warning ("%s: Invalid column number %d accessed (remember to end your list of columns with a -1)", G_STRLOC, column); + break; + } gtk_tree_model_get_value (GTK_TREE_MODEL (tree_model), iter, column, &value); G_VALUE_LCOPY (&value, var_args, 0, &error); if (error) - { - g_warning ("%s: %s", G_STRLOC, error); - g_free (error); + { + g_warning ("%s: %s", G_STRLOC, error); + g_free (error); - /* we purposely leak the value here, it might not be - * in a sane state if an error condition occoured - */ - break; - } + /* we purposely leak the value here, it might not be + * in a sane state if an error condition occurred + */ + break; + } g_value_unset (&value); @@ -1473,16 +1742,16 @@ gtk_tree_model_get_valist (GtkTreeModel *tree_model, /** * gtk_tree_model_row_changed: - * @tree_model: A #GtkTreeModel - * @path: A #GtkTreePath pointing to the changed row - * @iter: A valid #GtkTreeIter pointing to the changed row - * - * Emits the "row-changed" signal on @tree_model. - **/ + * @tree_model: a #GtkTreeModel + * @path: a #GtkTreePath pointing to the changed row + * @iter: a valid #GtkTreeIter pointing to the changed row + * + * Emits the #GtkTreeModel::row-changed signal on @tree_model. + */ void gtk_tree_model_row_changed (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter) + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); g_return_if_fail (path != NULL); @@ -1493,16 +1762,16 @@ gtk_tree_model_row_changed (GtkTreeModel *tree_model, /** * gtk_tree_model_row_inserted: - * @tree_model: A #GtkTreeModel - * @path: A #GtkTreePath pointing to the inserted row - * @iter: A valid #GtkTreeIter pointing to the inserted row - * - * Emits the "row-inserted" signal on @tree_model - **/ + * @tree_model: a #GtkTreeModel + * @path: a #GtkTreePath pointing to the inserted row + * @iter: a valid #GtkTreeIter pointing to the inserted row + * + * Emits the #GtkTreeModel::row-inserted signal on @tree_model. + */ void gtk_tree_model_row_inserted (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter) + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); g_return_if_fail (path != NULL); @@ -1513,17 +1782,18 @@ gtk_tree_model_row_inserted (GtkTreeModel *tree_model, /** * gtk_tree_model_row_has_child_toggled: - * @tree_model: A #GtkTreeModel - * @path: A #GtkTreePath pointing to the changed row - * @iter: A valid #GtkTreeIter pointing to the changed row - * - * Emits the "row-has-child-toggled" signal on @tree_model. This should be - * called by models after the child state of a node changes. - **/ + * @tree_model: a #GtkTreeModel + * @path: a #GtkTreePath pointing to the changed row + * @iter: a valid #GtkTreeIter pointing to the changed row + * + * Emits the #GtkTreeModel::row-has-child-toggled signal on + * @tree_model. This should be called by models after the child + * state of a node changes. + */ void gtk_tree_model_row_has_child_toggled (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter) + GtkTreePath *path, + GtkTreeIter *iter) { g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); g_return_if_fail (path != NULL); @@ -1534,17 +1804,19 @@ gtk_tree_model_row_has_child_toggled (GtkTreeModel *tree_model, /** * gtk_tree_model_row_deleted: - * @tree_model: A #GtkTreeModel - * @path: A #GtkTreePath pointing to the previous location of the deleted row. - * - * Emits the "row-deleted" signal on @tree_model. This should be called by - * models after a row has been removed. The location pointed to by @path - * should be the location that the row previously was at. It may not be a - * valid location anymore. - **/ + * @tree_model: a #GtkTreeModel + * @path: a #GtkTreePath pointing to the previous location of + * the deleted row + * + * Emits the #GtkTreeModel::row-deleted signal on @tree_model. + * + * This should be called by models after a row has been removed. + * The location pointed to by @path should be the location that + * the row previously was at. It may not be a valid location anymore. + */ void gtk_tree_model_row_deleted (GtkTreeModel *tree_model, - GtkTreePath *path) + GtkTreePath *path) { g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); g_return_if_fail (path != NULL); @@ -1554,23 +1826,25 @@ gtk_tree_model_row_deleted (GtkTreeModel *tree_model, /** * gtk_tree_model_rows_reordered: - * @tree_model: A #GtkTreeModel - * @path: A #GtkTreePath pointing to the tree node whose children have been - * reordered - * @iter: A valid #GtkTreeIter pointing to the node whose children have been - * reordered, or %NULL if the depth of @path is 0. - * @new_order: an array of integers mapping the current position of each child - * to its old position before the re-ordering, - * i.e. @new_order[newpos] = oldpos. - * - * Emits the "rows-reordered" signal on @tree_model. This should be called by - * models when their rows have been reordered. - **/ + * @tree_model: a #GtkTreeModel + * @path: a #GtkTreePath pointing to the tree node whose children + * have been reordered + * @iter: a valid #GtkTreeIter pointing to the node whose children + * have been reordered, or %NULL if the depth of @path is 0 + * @new_order: an array of integers mapping the current position of + * each child to its old position before the re-ordering, + * i.e. @new_order[newpos] = oldpos + * + * Emits the #GtkTreeModel::rows-reordered signal on @tree_model. + * + * This should be called by models when their rows have been + * reordered. + */ void gtk_tree_model_rows_reordered (GtkTreeModel *tree_model, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order) + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order) { g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); g_return_if_fail (new_order != NULL); @@ -1581,25 +1855,25 @@ gtk_tree_model_rows_reordered (GtkTreeModel *tree_model, static gboolean gtk_tree_model_foreach_helper (GtkTreeModel *model, - GtkTreeIter *iter, - GtkTreePath *path, - GtkTreeModelForeachFunc func, - gpointer user_data) + GtkTreeIter *iter, + GtkTreePath *path, + GtkTreeModelForeachFunc func, + gpointer user_data) { do { GtkTreeIter child; if ((* func) (model, path, iter, user_data)) - return TRUE; + return TRUE; if (gtk_tree_model_iter_children (model, &child, iter)) - { - gtk_tree_path_down (path); - if (gtk_tree_model_foreach_helper (model, &child, path, func, user_data)) - return TRUE; - gtk_tree_path_up (path); - } + { + gtk_tree_path_down (path); + if (gtk_tree_model_foreach_helper (model, &child, path, func, user_data)) + return TRUE; + gtk_tree_path_up (path); + } gtk_tree_path_next (path); } @@ -1610,18 +1884,19 @@ gtk_tree_model_foreach_helper (GtkTreeModel *model, /** * gtk_tree_model_foreach: - * @model: A #GtkTreeModel - * @func: (scope call): A function to be called on each row - * @user_data: User data to passed to func. + * @model: a #GtkTreeModel + * @func: (scope call): a function to be called on each row + * @user_data: user data to passed to @func * * Calls func on each node in model in a depth-first fashion. - * If @func returns %TRUE, then the tree ceases to be walked, and - * gtk_tree_model_foreach() returns. - **/ + * + * If @func returns %TRUE, then the tree ceases to be walked, + * and gtk_tree_model_foreach() returns. + */ void gtk_tree_model_foreach (GtkTreeModel *model, - GtkTreeModelForeachFunc func, - gpointer user_data) + GtkTreeModelForeachFunc func, + gpointer user_data) { GtkTreePath *path; GtkTreeIter iter; @@ -1646,8 +1921,8 @@ gtk_tree_model_foreach (GtkTreeModel *model, */ static void gtk_tree_row_reference_unref_path (GtkTreePath *path, - GtkTreeModel *model, - gint depth); + GtkTreeModel *model, + gint depth); G_DEFINE_BOXED_TYPE (GtkTreeRowReference, gtk_tree_row_reference, @@ -1674,7 +1949,7 @@ release_row_references (gpointer data) GtkTreeRowReference *reference = tmp_list->data; if (reference->proxy == (GObject *)reference->model) - reference->model = NULL; + reference->model = NULL; reference->proxy = NULL; /* we don't free the reference, users are responsible for that. */ @@ -1688,8 +1963,8 @@ release_row_references (gpointer data) static void gtk_tree_row_ref_inserted (RowRefList *refs, - GtkTreePath *path, - GtkTreeIter *iter) + GtkTreePath *path, + GtkTreeIter *iter) { GSList *tmp_list; @@ -1697,12 +1972,12 @@ gtk_tree_row_ref_inserted (RowRefList *refs, return; /* This function corrects the path stored in the reference to - * account for an insertion. Note that it's called _after_ the insertion - * with the path to the newly-inserted row. Which means that - * the inserted path is in a different "coordinate system" than - * the old path (e.g. if the inserted path was just before the old path, - * then inserted path and old path will be the same, and old path must be - * moved down one). + * account for an insertion. Note that it's called _after_ the + * insertion with the path to the newly-inserted row. Which means + * that the inserted path is in a different "coordinate system" than + * the old path (e.g. if the inserted path was just before the old + * path, then inserted path and old path will be the same, and old + * path must be moved down one). */ tmp_list = refs->list; @@ -1712,27 +1987,27 @@ gtk_tree_row_ref_inserted (RowRefList *refs, GtkTreeRowReference *reference = tmp_list->data; if (reference->path == NULL) - goto done; + goto done; if (reference->path->depth >= path->depth) - { - gint i; - gboolean ancestor = TRUE; + { + gint i; + gboolean ancestor = TRUE; - for (i = 0; i < path->depth - 1; i ++) - { - if (path->indices[i] != reference->path->indices[i]) - { - ancestor = FALSE; - break; - } - } - if (ancestor == FALSE) - goto done; + for (i = 0; i < path->depth - 1; i ++) + { + if (path->indices[i] != reference->path->indices[i]) + { + ancestor = FALSE; + break; + } + } + if (ancestor == FALSE) + goto done; - if (path->indices[path->depth-1] <= reference->path->indices[path->depth-1]) - reference->path->indices[path->depth-1] += 1; - } + if (path->indices[path->depth-1] <= reference->path->indices[path->depth-1]) + reference->path->indices[path->depth-1] += 1; + } done: tmp_list = g_slist_next (tmp_list); } @@ -1740,7 +2015,7 @@ gtk_tree_row_ref_inserted (RowRefList *refs, static void gtk_tree_row_ref_deleted (RowRefList *refs, - GtkTreePath *path) + GtkTreePath *path) { GSList *tmp_list; @@ -1761,36 +2036,36 @@ gtk_tree_row_ref_deleted (RowRefList *refs, GtkTreeRowReference *reference = tmp_list->data; if (reference->path) - { - gint i; + { + gint i; - if (path->depth > reference->path->depth) - goto next; - for (i = 0; i < path->depth - 1; i++) - { - if (path->indices[i] != reference->path->indices[i]) - goto next; - } + if (path->depth > reference->path->depth) + goto next; + for (i = 0; i < path->depth - 1; i++) + { + if (path->indices[i] != reference->path->indices[i]) + goto next; + } - /* We know it affects us. */ - if (path->indices[i] == reference->path->indices[i]) - { - if (reference->path->depth > path->depth) - /* some parent was deleted, trying to unref any node - * between the deleted parent and the node the reference - * is pointing to is bad, as those nodes are already gone. - */ - gtk_tree_row_reference_unref_path (reference->path, reference->model, path->depth - 1); - else - gtk_tree_row_reference_unref_path (reference->path, reference->model, reference->path->depth - 1); - gtk_tree_path_free (reference->path); - reference->path = NULL; - } - else if (path->indices[i] < reference->path->indices[i]) - { - reference->path->indices[path->depth-1]-=1; - } - } + /* We know it affects us. */ + if (path->indices[i] == reference->path->indices[i]) + { + if (reference->path->depth > path->depth) + /* some parent was deleted, trying to unref any node + * between the deleted parent and the node the reference + * is pointing to is bad, as those nodes are already gone. + */ + gtk_tree_row_reference_unref_path (reference->path, reference->model, path->depth - 1); + else + gtk_tree_row_reference_unref_path (reference->path, reference->model, reference->path->depth - 1); + gtk_tree_path_free (reference->path); + reference->path = NULL; + } + else if (path->indices[i] < reference->path->indices[i]) + { + reference->path->indices[path->depth-1]-=1; + } + } next: tmp_list = g_slist_next (tmp_list); @@ -1799,9 +2074,9 @@ next: static void gtk_tree_row_ref_reordered (RowRefList *refs, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order) + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order) { GSList *tmp_list; gint length; @@ -1818,41 +2093,43 @@ gtk_tree_row_ref_reordered (RowRefList *refs, length = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (reference->model), iter); if (length < 2) - return; + return; if ((reference->path) && - (gtk_tree_path_is_ancestor (path, reference->path))) - { - gint ref_depth = gtk_tree_path_get_depth (reference->path); - gint depth = gtk_tree_path_get_depth (path); + (gtk_tree_path_is_ancestor (path, reference->path))) + { + gint ref_depth = gtk_tree_path_get_depth (reference->path); + gint depth = gtk_tree_path_get_depth (path); - if (ref_depth > depth) - { - gint i; - gint *indices = gtk_tree_path_get_indices (reference->path); + if (ref_depth > depth) + { + gint i; + gint *indices = gtk_tree_path_get_indices (reference->path); - for (i = 0; i < length; i++) - { - if (new_order[i] == indices[depth]) - { - indices[depth] = i; - break; - } - } - } - } + for (i = 0; i < length; i++) + { + if (new_order[i] == indices[depth]) + { + indices[depth] = i; + break; + } + } + } + } tmp_list = g_slist_next (tmp_list); } } -/* We do this recursively so that we can unref children nodes before their parent */ +/* We do this recursively so that we can unref children nodes + * before their parent + */ static void gtk_tree_row_reference_unref_path_helper (GtkTreePath *path, - GtkTreeModel *model, - GtkTreeIter *parent_iter, - gint depth, - gint current_depth) + GtkTreeModel *model, + GtkTreeIter *parent_iter, + gint depth, + gint current_depth) { GtkTreeIter iter; @@ -1866,14 +2143,14 @@ gtk_tree_row_reference_unref_path_helper (GtkTreePath *path, static void gtk_tree_row_reference_unref_path (GtkTreePath *path, - GtkTreeModel *model, - gint depth) + GtkTreeModel *model, + gint depth) { GtkTreeIter iter; if (depth <= 0) return; - + gtk_tree_model_iter_nth_child (model, &iter, NULL, path->indices[0]); gtk_tree_row_reference_unref_path_helper (path, model, &iter, depth, 1); gtk_tree_model_unref_node (model, &iter); @@ -1881,16 +2158,18 @@ gtk_tree_row_reference_unref_path (GtkTreePath *path, /** * gtk_tree_row_reference_new: - * @model: A #GtkTreeModel - * @path: A valid #GtkTreePath to monitor - * - * Creates a row reference based on @path. This reference will keep pointing - * to the node pointed to by @path, so long as it exists. It listens to all - * signals emitted by @model, and updates its path appropriately. If @path - * isn't a valid path in @model, then %NULL is returned. - * - * Return value: A newly allocated #GtkTreeRowReference, or %NULL - **/ + * @model: a #GtkTreeModel + * @path: a valid #GtkTreePath to monitor + * + * Creates a row reference based on @path. + * + * This reference will keep pointing to the node pointed to + * by @path, so long as it exists. It listens to all signals + * emitted by @model, and updates its path appropriately. If + * @path isn't a valid path in @model, then %NULL is returned. + * + * Return value: a newly allocated #GtkTreeRowReference, or %NULL + */ GtkTreeRowReference * gtk_tree_row_reference_new (GtkTreeModel *model, GtkTreePath *path) @@ -1901,25 +2180,29 @@ gtk_tree_row_reference_new (GtkTreeModel *model, /* We use the model itself as the proxy object; and call * gtk_tree_row_reference_inserted(), etc, in the * class closure (default handler) marshalers for the signal. - */ + */ return gtk_tree_row_reference_new_proxy (G_OBJECT (model), model, path); } /** * gtk_tree_row_reference_new_proxy: - * @proxy: A proxy #GObject - * @model: A #GtkTreeModel - * @path: A valid #GtkTreePath to monitor - * - * You do not need to use this function. Creates a row reference based on - * @path. This reference will keep pointing to the node pointed to by @path, - * so long as it exists. If @path isn't a valid path in @model, then %NULL is - * returned. However, unlike references created with - * gtk_tree_row_reference_new(), it does not listen to the model for changes. - * The creator of the row reference must do this explicitly using + * @proxy: a proxy #GObject + * @model: a #GtkTreeModel + * @path: a valid #GtkTreePath to monitor + * + * You do not need to use this function. + * + * Creates a row reference based on @path. + * + * This reference will keep pointing to the node pointed to + * by @path, so long as it exists. If @path isn't a valid + * path in @model, then %NULL is returned. However, unlike + * references created with gtk_tree_row_reference_new(), it + * does not listen to the model for changes. The creator of + * the row reference must do this explicitly using * gtk_tree_row_reference_inserted(), gtk_tree_row_reference_deleted(), * gtk_tree_row_reference_reordered(). - * + * * These functions must be called exactly once per proxy when the * corresponding signal on the model is emitted. This single call * updates all row references for that proxy. Since built-in GTK+ @@ -1928,16 +2211,16 @@ gtk_tree_row_reference_new (GtkTreeModel *model, * Further more, passing the same object as @model and @proxy * doesn't work for reasons of internal implementation. * - * This type of row reference is primarily meant by structures that need to - * carefully monitor exactly when a row reference updates itself, and is not - * generally needed by most applications. + * This type of row reference is primarily meant by structures that + * need to carefully monitor exactly when a row reference updates + * itself, and is not generally needed by most applications. * - * Return value: A newly allocated #GtkTreeRowReference, or %NULL - **/ + * Return value: a newly allocated #GtkTreeRowReference, or %NULL + */ GtkTreeRowReference * gtk_tree_row_reference_new_proxy (GObject *proxy, - GtkTreeModel *model, - GtkTreePath *path) + GtkTreeModel *model, + GtkTreePath *path) { GtkTreeRowReference *reference; RowRefList *refs; @@ -1982,7 +2265,7 @@ gtk_tree_row_reference_new_proxy (GObject *proxy, refs->list = NULL; g_object_set_data_full (G_OBJECT (proxy), - I_(ROW_REF_DATA_STRING), + I_(ROW_REF_DATA_STRING), refs, release_row_references); } @@ -1993,13 +2276,13 @@ gtk_tree_row_reference_new_proxy (GObject *proxy, /** * gtk_tree_row_reference_get_path: - * @reference: A #GtkTreeRowReference - * - * Returns a path that the row reference currently points to, or %NULL if the - * path pointed to is no longer valid. - * - * Return value: A current path, or %NULL. - **/ + * @reference: a #GtkTreeRowReference + * + * Returns a path that the row reference currently points to, + * or %NULL if the path pointed to is no longer valid. + * + * Return value: a current path, or %NULL + */ GtkTreePath * gtk_tree_row_reference_get_path (GtkTreeRowReference *reference) { @@ -2016,7 +2299,7 @@ gtk_tree_row_reference_get_path (GtkTreeRowReference *reference) /** * gtk_tree_row_reference_get_model: - * @reference: A #GtkTreeRowReference + * @reference: a #GtkTreeRowReference * * Returns the model that the row reference is monitoring. * @@ -2034,13 +2317,13 @@ gtk_tree_row_reference_get_model (GtkTreeRowReference *reference) /** * gtk_tree_row_reference_valid: - * @reference: (allow-none): A #GtkTreeRowReference, or %NULL - * - * Returns %TRUE if the @reference is non-%NULL and refers to a current valid - * path. - * - * Return value: %TRUE if @reference points to a valid path. - **/ + * @reference: (allow-none): a #GtkTreeRowReference, or %NULL + * + * Returns %TRUE if the @reference is non-%NULL and refers to + * a current valid path. + * + * Return value: %TRUE if @reference points to a valid path + */ gboolean gtk_tree_row_reference_valid (GtkTreeRowReference *reference) { @@ -2054,27 +2337,27 @@ gtk_tree_row_reference_valid (GtkTreeRowReference *reference) /** * gtk_tree_row_reference_copy: * @reference: a #GtkTreeRowReference - * + * * Copies a #GtkTreeRowReference. - * - * Return value: a copy of @reference. + * + * Return value: a copy of @reference * * Since: 2.2 - **/ + */ GtkTreeRowReference * gtk_tree_row_reference_copy (GtkTreeRowReference *reference) { return gtk_tree_row_reference_new_proxy (reference->proxy, - reference->model, - reference->path); + reference->model, + reference->path); } /** * gtk_tree_row_reference_free: - * @reference: (allow-none): A #GtkTreeRowReference, or %NULL - * - * Free's @reference. @reference may be %NULL. - **/ + * @reference: (allow-none): a #GtkTreeRowReference, or %NULL + * + * Free's @reference. @reference may be %NULL + */ void gtk_tree_row_reference_free (GtkTreeRowReference *reference) { @@ -2096,8 +2379,8 @@ gtk_tree_row_reference_free (GtkTreeRowReference *reference) if (refs->list == NULL) { g_object_set_data (G_OBJECT (reference->proxy), - I_(ROW_REF_DATA_STRING), - NULL); + I_(ROW_REF_DATA_STRING), + NULL); } if (reference->path) @@ -2113,15 +2396,16 @@ gtk_tree_row_reference_free (GtkTreeRowReference *reference) /** * gtk_tree_row_reference_inserted: - * @proxy: A #GObject - * @path: The row position that was inserted - * - * Lets a set of row reference created by gtk_tree_row_reference_new_proxy() - * know that the model emitted the "row_inserted" signal. - **/ + * @proxy: a #GObject + * @path: the row position that was inserted + * + * Lets a set of row reference created by + * gtk_tree_row_reference_new_proxy() know that the + * model emitted the #GtkTreeModel::row-inserted signal. + */ void gtk_tree_row_reference_inserted (GObject *proxy, - GtkTreePath *path) + GtkTreePath *path) { g_return_if_fail (G_IS_OBJECT (proxy)); @@ -2130,15 +2414,16 @@ gtk_tree_row_reference_inserted (GObject *proxy, /** * gtk_tree_row_reference_deleted: - * @proxy: A #GObject - * @path: The path position that was deleted - * - * Lets a set of row reference created by gtk_tree_row_reference_new_proxy() - * know that the model emitted the "row_deleted" signal. - **/ + * @proxy: a #GObject + * @path: the path position that was deleted + * + * Lets a set of row reference created by + * gtk_tree_row_reference_new_proxy() know that the + * model emitted the #GtkTreeModel::row-deleted signal. + */ void gtk_tree_row_reference_deleted (GObject *proxy, - GtkTreePath *path) + GtkTreePath *path) { g_return_if_fail (G_IS_OBJECT (proxy)); @@ -2147,19 +2432,20 @@ gtk_tree_row_reference_deleted (GObject *proxy, /** * gtk_tree_row_reference_reordered: - * @proxy: A #GObject - * @path: The parent path of the reordered signal - * @iter: The iter pointing to the parent of the reordered - * @new_order: The new order of rows - * - * Lets a set of row reference created by gtk_tree_row_reference_new_proxy() - * know that the model emitted the "rows_reordered" signal. - **/ + * @proxy: a #GObject + * @path: the parent path of the reordered signal + * @iter: the iter pointing to the parent of the reordered + * @new_order: the new order of rows + * + * Lets a set of row reference created by + * gtk_tree_row_reference_new_proxy() know that the + * model emitted the #GtkTreeModel::rows-reordered signal. + */ void gtk_tree_row_reference_reordered (GObject *proxy, - GtkTreePath *path, - GtkTreeIter *iter, - gint *new_order) + GtkTreePath *path, + GtkTreeIter *iter, + gint *new_order) { g_return_if_fail (G_IS_OBJECT (proxy)); diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h index b706a00f97..45bc7cebf4 100644 --- a/gtk/gtktreemodel.h +++ b/gtk/gtktreemodel.h @@ -42,15 +42,55 @@ typedef struct _GtkTreePath GtkTreePath; typedef struct _GtkTreeRowReference GtkTreeRowReference; typedef struct _GtkTreeModel GtkTreeModel; /* Dummy typedef */ typedef struct _GtkTreeModelIface GtkTreeModelIface; + +/** + * GtkTreeModelForeachFunc: + * @model: the #GtkTreeModel being iterated + * @path: the current #GtkTreePath + * @iter: the current #GtkTreeIter + * @data: The user data passed to gtk_tree_model_foreach() + * + * Type of the callback passed to gtk_tree_model_foreach() to + * iterate over the rows in a tree model. + * + * Return value: %TRUE to stop iterating, %FALSE to continue + * + */ typedef gboolean (* GtkTreeModelForeachFunc) (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data); - +/** + * GtkTreeModelFlags: + * @GTK_TREE_MODEL_ITERS_PERSIST: iterators survive all signals + * emitted by the tree + * @GTK_TREE_MODEL_LIST_ONLY: the model is a list only, and never + * has children + * + * These flags indicate various properties of a #GtkTreeModel. + * + * They are returned by gtk_tree_model_get_flags(), and must be + * static for the lifetime of the object. A more complete description + * of #GTK_TREE_MODEL_ITERS_PERSIST can be found in the overview of + * this section. + */ typedef enum { GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0, GTK_TREE_MODEL_LIST_ONLY = 1 << 1 } GtkTreeModelFlags; +/** + * GtkTreeIter: + * @stamp: a unique stamp to catch invalid iterators + * @user_data: model-specific data + * @user_data2: model-specific data + * @user_data3: model-specific data + * + * The GtkTreeIter is the primary structure + * for accessing a #GtkTreeModel. Models are expected to put a unique + * integer in the stamp member, and put + * model-specific data in the three user_data + * members. + */ struct _GtkTreeIter { gint stamp; @@ -97,6 +137,8 @@ struct _GtkTreeModelIface GValue *value); gboolean (* iter_next) (GtkTreeModel *tree_model, GtkTreeIter *iter); + gboolean (* iter_previous) (GtkTreeModel *tree_model, + GtkTreeIter *iter); gboolean (* iter_children) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -206,6 +248,8 @@ void gtk_tree_model_get_value (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); +gboolean gtk_tree_model_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter); gboolean gtk_tree_model_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter); gboolean gtk_tree_model_iter_children (GtkTreeModel *tree_model, diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c index d7a155ac9a..18e0d594d5 100644 --- a/gtk/gtktreemodelfilter.c +++ b/gtk/gtktreemodelfilter.c @@ -215,6 +215,8 @@ static void gtk_tree_model_filter_get_value (GtkTr GValue *value); static gboolean gtk_tree_model_filter_iter_next (GtkTreeModel *model, GtkTreeIter *iter); +static gboolean gtk_tree_model_filter_iter_previous (GtkTreeModel *model, + GtkTreeIter *iter); static gboolean gtk_tree_model_filter_iter_children (GtkTreeModel *model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -385,6 +387,7 @@ gtk_tree_model_filter_tree_model_init (GtkTreeModelIface *iface) iface->get_path = gtk_tree_model_filter_get_path; iface->get_value = gtk_tree_model_filter_get_value; iface->iter_next = gtk_tree_model_filter_iter_next; + iface->iter_previous = gtk_tree_model_filter_iter_previous; iface->iter_children = gtk_tree_model_filter_iter_children; iface->iter_has_child = gtk_tree_model_filter_iter_has_child; iface->iter_n_children = gtk_tree_model_filter_iter_n_children; @@ -2514,6 +2517,41 @@ gtk_tree_model_filter_iter_next (GtkTreeModel *model, return FALSE; } +static gboolean +gtk_tree_model_filter_iter_previous (GtkTreeModel *model, + GtkTreeIter *iter) +{ + int i; + FilterLevel *level; + FilterElt *elt; + + g_return_val_if_fail (GTK_IS_TREE_MODEL_FILTER (model), FALSE); + g_return_val_if_fail (GTK_TREE_MODEL_FILTER (model)->priv->child_model != NULL, FALSE); + g_return_val_if_fail (GTK_TREE_MODEL_FILTER (model)->priv->stamp == iter->stamp, FALSE); + + level = iter->user_data; + elt = iter->user_data2; + + i = elt - FILTER_ELT (level->array->data); + + while (i > 0) + { + i--; + elt--; + + if (elt->visible) + { + iter->user_data2 = elt; + return TRUE; + } + } + + /* no previous visible iter */ + iter->stamp = 0; + + return FALSE; +} + static gboolean gtk_tree_model_filter_iter_children (GtkTreeModel *model, GtkTreeIter *iter, diff --git a/gtk/gtktreemodelfilter.h b/gtk/gtktreemodelfilter.h index 1dc097a5d8..b887a0ac69 100644 --- a/gtk/gtktreemodelfilter.h +++ b/gtk/gtktreemodelfilter.h @@ -25,7 +25,6 @@ #ifndef __GTK_TREE_MODEL_FILTER_H__ #define __GTK_TREE_MODEL_FILTER_H__ -#include #include G_BEGIN_DECLS @@ -42,7 +41,7 @@ G_BEGIN_DECLS * @model: the child model of the #GtkTreeModelFilter * @iter: a #GtkTreeIter pointing to the row in @model whose visibility * is determined - * @data: user data given to gtk_tree_model_filter_set_visible_func() + * @data: (closure): user data given to gtk_tree_model_filter_set_visible_func() * * A function which decides whether the row indicated by @iter is visible. * @@ -59,7 +58,7 @@ typedef gboolean (* GtkTreeModelFilterVisibleFunc) (GtkTreeModel *model, * @value: A #GValue which is already initialized for with the correct type for * the column @column. * @column: the column whose display value is determined - * @data: user data given to gtk_tree_model_filter_set_modify_func() + * @data: (closure): user data given to gtk_tree_model_filter_set_modify_func() * * A function which calculates display values from raw values in the model. * It must fill @value with the display value for the column @column in the diff --git a/gtk/gtktreemodelsort.c b/gtk/gtktreemodelsort.c index b83b59f347..1fc52266ed 100644 --- a/gtk/gtktreemodelsort.c +++ b/gtk/gtktreemodelsort.c @@ -95,9 +95,35 @@ enum { }; +struct _GtkTreeModelSortPrivate +{ + gpointer root; + gint stamp; + guint child_flags; + GtkTreeModel *child_model; + gint zero_ref_count; + + /* sort information */ + GList *sort_list; + gint sort_column_id; + GtkSortType order; + + /* default sort */ + GtkTreeIterCompareFunc default_sort_func; + gpointer default_sort_data; + GDestroyNotify default_sort_destroy; + + /* signal ids */ + gulong changed_id; + gulong inserted_id; + gulong has_child_toggled_id; + gulong deleted_id; + gulong reordered_id; +}; + #define GTK_TREE_MODEL_SORT_CACHE_CHILD_ITERS(tree_model_sort) \ - (((GtkTreeModelSort *)tree_model_sort)->child_flags>K_TREE_MODEL_ITERS_PERSIST) + (((GtkTreeModelSort *)tree_model_sort)->priv->child_flags>K_TREE_MODEL_ITERS_PERSIST) #define SORT_ELT(sort_elt) ((SortElt *)sort_elt) #define SORT_LEVEL(sort_level) ((SortLevel *)sort_level) @@ -109,7 +135,7 @@ enum { #define NO_SORT_FUNC ((GtkTreeIterCompareFunc) 0x1) -#define VALID_ITER(iter, tree_model_sort) ((iter) != NULL && (iter)->user_data != NULL && (iter)->user_data2 != NULL && (tree_model_sort)->stamp == (iter)->stamp) +#define VALID_ITER(iter, tree_model_sort) ((iter) != NULL && (iter)->user_data != NULL && (iter)->user_data2 != NULL && (tree_model_sort)->priv->stamp == (iter)->stamp) /* general (object/interface init, etc) */ static void gtk_tree_model_sort_tree_model_init (GtkTreeModelIface *iface); @@ -163,6 +189,8 @@ static void gtk_tree_model_sort_get_value (GtkTreeModel GValue *value); static gboolean gtk_tree_model_sort_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter); +static gboolean gtk_tree_model_sort_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter); static gboolean gtk_tree_model_sort_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -252,11 +280,17 @@ G_DEFINE_TYPE_WITH_CODE (GtkTreeModelSort, gtk_tree_model_sort, G_TYPE_OBJECT, static void gtk_tree_model_sort_init (GtkTreeModelSort *tree_model_sort) { - tree_model_sort->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; - tree_model_sort->stamp = 0; - tree_model_sort->zero_ref_count = 0; - tree_model_sort->root = NULL; - tree_model_sort->sort_list = NULL; + GtkTreeModelSortPrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE (tree_model_sort, + GTK_TYPE_TREE_MODEL_SORT, + GtkTreeModelSortPrivate); + tree_model_sort->priv = priv; + priv->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; + priv->stamp = 0; + priv->zero_ref_count = 0; + priv->root = NULL; + priv->sort_list = NULL; } static void @@ -279,6 +313,8 @@ gtk_tree_model_sort_class_init (GtkTreeModelSortClass *class) P_("The model for the TreeModelSort to sort"), GTK_TYPE_TREE_MODEL, GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_type_class_add_private (class, sizeof (GtkTreeModelSortPrivate)); } static void @@ -291,6 +327,7 @@ gtk_tree_model_sort_tree_model_init (GtkTreeModelIface *iface) iface->get_path = gtk_tree_model_sort_get_path; iface->get_value = gtk_tree_model_sort_get_value; iface->iter_next = gtk_tree_model_sort_iter_next; + iface->iter_previous = gtk_tree_model_sort_iter_previous; iface->iter_children = gtk_tree_model_sort_iter_children; iface->iter_has_child = gtk_tree_model_sort_iter_has_child; iface->iter_n_children = gtk_tree_model_sort_iter_n_children; @@ -345,23 +382,24 @@ static void gtk_tree_model_sort_finalize (GObject *object) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) object; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gtk_tree_model_sort_set_model (tree_model_sort, NULL); - if (tree_model_sort->root) - gtk_tree_model_sort_free_level (tree_model_sort, tree_model_sort->root); + if (priv->root) + gtk_tree_model_sort_free_level (tree_model_sort, priv->root); - if (tree_model_sort->sort_list) + if (priv->sort_list) { - _gtk_tree_data_list_header_free (tree_model_sort->sort_list); - tree_model_sort->sort_list = NULL; + _gtk_tree_data_list_header_free (priv->sort_list); + priv->sort_list = NULL; } - if (tree_model_sort->default_sort_destroy) + if (priv->default_sort_destroy) { - tree_model_sort->default_sort_destroy (tree_model_sort->default_sort_data); - tree_model_sort->default_sort_destroy = NULL; - tree_model_sort->default_sort_data = NULL; + priv->default_sort_destroy (priv->default_sort_data); + priv->default_sort_destroy = NULL; + priv->default_sort_data = NULL; } @@ -399,7 +437,7 @@ gtk_tree_model_sort_get_property (GObject *object, switch (prop_id) { case PROP_MODEL: - g_value_set_object (value, gtk_tree_model_sort_get_model(tree_model_sort)); + g_value_set_object (value, gtk_tree_model_sort_get_model (tree_model_sort)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -414,6 +452,7 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model, gpointer data) { GtkTreeModelSort *tree_model_sort = GTK_TREE_MODEL_SORT (data); + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreePath *path = NULL; GtkTreeIter iter; GtkTreeIter tmpiter; @@ -451,8 +490,8 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model, elt = iter.user_data2; if (level->array->len < 2 || - (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && - tree_model_sort->default_sort_func == NO_SORT_FUNC)) + (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + priv->default_sort_func == NO_SORT_FUNC)) { if (free_s_path) gtk_tree_path_free (start_s_path); @@ -467,7 +506,7 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model, if (!GTK_TREE_MODEL_SORT_CACHE_CHILD_ITERS (tree_model_sort)) { - gtk_tree_model_get_iter (tree_model_sort->child_model, + gtk_tree_model_get_iter (priv->child_model, &tmpiter, start_s_path); } @@ -545,7 +584,7 @@ gtk_tree_model_sort_row_changed (GtkTreeModel *s_model, if (level->parent_elt_index >= 0) { - iter.stamp = tree_model_sort->stamp; + iter.stamp = priv->stamp; iter.user_data = level->parent_level; iter.user_data2 = SORT_LEVEL_PARENT_ELT (level); @@ -584,6 +623,7 @@ gtk_tree_model_sort_row_inserted (GtkTreeModel *s_model, gpointer data) { GtkTreeModelSort *tree_model_sort = GTK_TREE_MODEL_SORT (data); + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreePath *path; GtkTreeIter iter; GtkTreeIter real_s_iter; @@ -596,7 +636,7 @@ gtk_tree_model_sort_row_inserted (GtkTreeModel *s_model, SortLevel *level; SortLevel *parent_level = NULL; - parent_level = level = SORT_LEVEL (tree_model_sort->root); + parent_level = level = SORT_LEVEL (priv->root); g_return_if_fail (s_path != NULL || s_iter != NULL); @@ -611,7 +651,7 @@ gtk_tree_model_sort_row_inserted (GtkTreeModel *s_model, else real_s_iter = *s_iter; - if (!tree_model_sort->root) + if (!priv->root) { gtk_tree_model_sort_build_level (tree_model_sort, NULL, -1); @@ -665,7 +705,7 @@ gtk_tree_model_sort_row_inserted (GtkTreeModel *s_model, if (!parent_level) goto done; - if (level->ref_count == 0 && level != tree_model_sort->root) + if (level->ref_count == 0 && level != priv->root) { gtk_tree_model_sort_free_level (tree_model_sort, level); goto done; @@ -764,11 +804,11 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, */ gtk_tree_model_sort_increment_stamp (tree_model_sort); gtk_tree_path_free (path); - if (level == tree_model_sort->root) + if (level == tree_model_sort->priv->root) { gtk_tree_model_sort_free_level (tree_model_sort, - tree_model_sort->root); - tree_model_sort->root = NULL; + tree_model_sort->priv->root); + tree_model_sort->priv->root = NULL; } return; } @@ -809,15 +849,16 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, int i, j; GtkTreePath *path; GtkTreeModelSort *tree_model_sort = GTK_TREE_MODEL_SORT (data); + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; g_return_if_fail (new_order != NULL); if (s_path == NULL || gtk_tree_path_get_depth (s_path) == 0) { - if (tree_model_sort->root == NULL) + if (priv->root == NULL) return; path = gtk_tree_path_new (); - level = SORT_LEVEL (tree_model_sort->root); + level = SORT_LEVEL (priv->root); } else { @@ -858,8 +899,8 @@ gtk_tree_model_sort_rows_reordered (GtkTreeModel *s_model, g_array_index (level->array, SortElt, i).offset = tmp_array[i]; g_free (tmp_array); - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && - tree_model_sort->default_sort_func == NO_SORT_FUNC) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + priv->default_sort_func == NO_SORT_FUNC) { gtk_tree_model_sort_sort_level (tree_model_sort, level, @@ -891,9 +932,9 @@ gtk_tree_model_sort_get_flags (GtkTreeModel *tree_model) GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; GtkTreeModelFlags flags; - g_return_val_if_fail (tree_model_sort->child_model != NULL, 0); + g_return_val_if_fail (tree_model_sort->priv->child_model != NULL, 0); - flags = gtk_tree_model_get_flags (tree_model_sort->child_model); + flags = gtk_tree_model_get_flags (tree_model_sort->priv->child_model); if ((flags & GTK_TREE_MODEL_LIST_ONLY) == GTK_TREE_MODEL_LIST_ONLY) return GTK_TREE_MODEL_LIST_ONLY; @@ -906,10 +947,10 @@ gtk_tree_model_sort_get_n_columns (GtkTreeModel *tree_model) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; - if (tree_model_sort->child_model == 0) + if (tree_model_sort->priv->child_model == 0) return 0; - return gtk_tree_model_get_n_columns (tree_model_sort->child_model); + return gtk_tree_model_get_n_columns (tree_model_sort->priv->child_model); } static GType @@ -918,9 +959,9 @@ gtk_tree_model_sort_get_column_type (GtkTreeModel *tree_model, { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; - g_return_val_if_fail (tree_model_sort->child_model != NULL, G_TYPE_INVALID); + g_return_val_if_fail (tree_model_sort->priv->child_model != NULL, G_TYPE_INVALID); - return gtk_tree_model_get_column_type (tree_model_sort->child_model, index); + return gtk_tree_model_get_column_type (tree_model_sort->priv->child_model, index); } static gboolean @@ -929,17 +970,18 @@ gtk_tree_model_sort_get_iter (GtkTreeModel *tree_model, GtkTreePath *path) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint *indices; SortLevel *level; gint depth, i; - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); indices = gtk_tree_path_get_indices (path); - if (tree_model_sort->root == NULL) + if (priv->root == NULL) gtk_tree_model_sort_build_level (tree_model_sort, NULL, -1); - level = SORT_LEVEL (tree_model_sort->root); + level = SORT_LEVEL (priv->root); depth = gtk_tree_path_get_depth (path); if (depth == 0) @@ -962,7 +1004,7 @@ gtk_tree_model_sort_get_iter (GtkTreeModel *tree_model, return FALSE; } - iter->stamp = tree_model_sort->stamp; + iter->stamp = priv->stamp; iter->user_data = level; iter->user_data2 = &g_array_index (level->array, SortElt, indices[depth - 1]); @@ -974,12 +1016,13 @@ gtk_tree_model_sort_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreePath *retval; SortLevel *level; gint elt_index; - g_return_val_if_fail (tree_model_sort->child_model != NULL, NULL); - g_return_val_if_fail (tree_model_sort->stamp == iter->stamp, NULL); + g_return_val_if_fail (priv->child_model != NULL, NULL); + g_return_val_if_fail (priv->stamp == iter->stamp, NULL); retval = gtk_tree_path_new (); @@ -1004,13 +1047,14 @@ gtk_tree_model_sort_get_value (GtkTreeModel *tree_model, GValue *value) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreeIter child_iter; - g_return_if_fail (tree_model_sort->child_model != NULL); + g_return_if_fail (priv->child_model != NULL); g_return_if_fail (VALID_ITER (iter, tree_model_sort)); GET_CHILD_ITER (tree_model_sort, &child_iter, iter); - gtk_tree_model_get_value (tree_model_sort->child_model, + gtk_tree_model_get_value (priv->child_model, &child_iter, column, value); } @@ -1019,11 +1063,12 @@ gtk_tree_model_sort_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; SortLevel *level; SortElt *elt; - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); - g_return_val_if_fail (tree_model_sort->stamp == iter->stamp, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); + g_return_val_if_fail (priv->stamp == iter->stamp, FALSE); level = iter->user_data; elt = iter->user_data2; @@ -1038,28 +1083,54 @@ gtk_tree_model_sort_iter_next (GtkTreeModel *tree_model, return TRUE; } +static gboolean +gtk_tree_model_sort_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; + SortLevel *level; + SortElt *elt; + + g_return_val_if_fail (priv->child_model != NULL, FALSE); + g_return_val_if_fail (priv->stamp == iter->stamp, FALSE); + + level = iter->user_data; + elt = iter->user_data2; + + if (elt == (SortElt *)level->array->data) + { + iter->stamp = 0; + return FALSE; + } + iter->user_data2 = elt - 1; + + return TRUE; +} + static gboolean gtk_tree_model_sort_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; SortLevel *level; iter->stamp = 0; - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); if (parent) g_return_val_if_fail (VALID_ITER (parent, tree_model_sort), FALSE); if (parent == NULL) { - if (tree_model_sort->root == NULL) + if (priv->root == NULL) gtk_tree_model_sort_build_level (tree_model_sort, NULL, -1); - if (tree_model_sort->root == NULL) + if (priv->root == NULL) return FALSE; - level = tree_model_sort->root; - iter->stamp = tree_model_sort->stamp; + level = priv->root; + iter->stamp = priv->stamp; iter->user_data = level; iter->user_data2 = level->array->data; } @@ -1077,7 +1148,7 @@ gtk_tree_model_sort_iter_children (GtkTreeModel *tree_model, if (elt->children == NULL) return FALSE; - iter->stamp = tree_model_sort->stamp; + iter->stamp = priv->stamp; iter->user_data = elt->children; iter->user_data2 = elt->children->array->data; } @@ -1090,14 +1161,15 @@ gtk_tree_model_sort_iter_has_child (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreeIter child_iter; - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); g_return_val_if_fail (VALID_ITER (iter, tree_model_sort), FALSE); GET_CHILD_ITER (tree_model_sort, &child_iter, iter); - return gtk_tree_model_iter_has_child (tree_model_sort->child_model, &child_iter); + return gtk_tree_model_iter_has_child (priv->child_model, &child_iter); } static gint @@ -1105,18 +1177,19 @@ gtk_tree_model_sort_iter_n_children (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreeIter child_iter; - g_return_val_if_fail (tree_model_sort->child_model != NULL, 0); + g_return_val_if_fail (priv->child_model != NULL, 0); if (iter) g_return_val_if_fail (VALID_ITER (iter, tree_model_sort), 0); if (iter == NULL) - return gtk_tree_model_iter_n_children (tree_model_sort->child_model, NULL); + return gtk_tree_model_iter_n_children (priv->child_model, NULL); GET_CHILD_ITER (tree_model_sort, &child_iter, iter); - return gtk_tree_model_iter_n_children (tree_model_sort->child_model, &child_iter); + return gtk_tree_model_iter_n_children (priv->child_model, &child_iter); } static gboolean @@ -1147,7 +1220,7 @@ gtk_tree_model_sort_iter_nth_child (GtkTreeModel *tree_model, return FALSE; } - iter->stamp = tree_model_sort->stamp; + iter->stamp = tree_model_sort->priv->stamp; iter->user_data = level; iter->user_data2 = &g_array_index (level->array, SortElt, n); @@ -1160,17 +1233,18 @@ gtk_tree_model_sort_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *child) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; SortLevel *level; iter->stamp = 0; - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); g_return_val_if_fail (VALID_ITER (child, tree_model_sort), FALSE); level = child->user_data; if (level->parent_level) { - iter->stamp = tree_model_sort->stamp; + iter->stamp = priv->stamp; iter->user_data = level->parent_level; iter->user_data2 = SORT_LEVEL_PARENT_ELT (level); @@ -1184,18 +1258,19 @@ gtk_tree_model_sort_ref_node (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreeIter child_iter; SortLevel *level, *parent_level; SortElt *elt; gint parent_elt_index; - g_return_if_fail (tree_model_sort->child_model != NULL); + g_return_if_fail (priv->child_model != NULL); g_return_if_fail (VALID_ITER (iter, tree_model_sort)); GET_CHILD_ITER (tree_model_sort, &child_iter, iter); /* Reference the node in the child model */ - gtk_tree_model_ref_node (tree_model_sort->child_model, &child_iter); + gtk_tree_model_ref_node (priv->child_model, &child_iter); /* Increase the reference count of this element and its level */ level = iter->user_data; @@ -1212,7 +1287,7 @@ gtk_tree_model_sort_ref_node (GtkTreeModel *tree_model, { GtkTreeIter tmp_iter; - tmp_iter.stamp = tree_model_sort->stamp; + tmp_iter.stamp = priv->stamp; tmp_iter.user_data = parent_level; tmp_iter.user_data2 = &g_array_index (parent_level->array, SortElt, parent_elt_index); @@ -1236,8 +1311,8 @@ gtk_tree_model_sort_ref_node (GtkTreeModel *tree_model, parent_level = parent_level->parent_level; } - if (tree_model_sort->root != level) - tree_model_sort->zero_ref_count--; + if (priv->root != level) + priv->zero_ref_count--; } } @@ -1247,11 +1322,12 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model, gboolean propagate_unref) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; SortLevel *level, *parent_level; SortElt *elt; gint parent_elt_index; - g_return_if_fail (tree_model_sort->child_model != NULL); + g_return_if_fail (priv->child_model != NULL); g_return_if_fail (VALID_ITER (iter, tree_model_sort)); if (propagate_unref) @@ -1259,7 +1335,7 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model, GtkTreeIter child_iter; GET_CHILD_ITER (tree_model_sort, &child_iter, iter); - gtk_tree_model_unref_node (tree_model_sort->child_model, &child_iter); + gtk_tree_model_unref_node (priv->child_model, &child_iter); } level = iter->user_data; @@ -1278,7 +1354,7 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model, { GtkTreeIter tmp_iter; - tmp_iter.stamp = tree_model_sort->stamp; + tmp_iter.stamp = priv->stamp; tmp_iter.user_data = parent_level; tmp_iter.user_data2 = &g_array_index (parent_level->array, SortElt, parent_elt_index); @@ -1302,8 +1378,8 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model, parent_level = parent_level->parent_level; } - if (tree_model_sort->root != level) - tree_model_sort->zero_ref_count++; + if (priv->root != level) + priv->zero_ref_count++; } } @@ -1321,14 +1397,15 @@ gtk_tree_model_sort_get_sort_column_id (GtkTreeSortable *sortable, GtkSortType *order) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *)sortable; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; if (sort_column_id) - *sort_column_id = tree_model_sort->sort_column_id; + *sort_column_id = priv->sort_column_id; if (order) - *order = tree_model_sort->order; + *order = priv->order; - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID || - tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID || + priv->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) return FALSE; return TRUE; @@ -1340,6 +1417,7 @@ gtk_tree_model_sort_set_sort_column_id (GtkTreeSortable *sortable, GtkSortType order) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *)sortable; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; if (sort_column_id != GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) { @@ -1347,7 +1425,7 @@ gtk_tree_model_sort_set_sort_column_id (GtkTreeSortable *sortable, { GtkTreeDataSortHeader *header = NULL; - header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, + header = _gtk_tree_data_list_get_header (priv->sort_list, sort_column_id); /* we want to make sure that we have a function */ @@ -1355,13 +1433,13 @@ gtk_tree_model_sort_set_sort_column_id (GtkTreeSortable *sortable, g_return_if_fail (header->func != NULL); } else - g_return_if_fail (tree_model_sort->default_sort_func != NULL); + g_return_if_fail (priv->default_sort_func != NULL); - if (tree_model_sort->sort_column_id == sort_column_id) + if (priv->sort_column_id == sort_column_id) { if (sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) { - if (tree_model_sort->order == order) + if (priv->order == order) return; } else @@ -1369,8 +1447,8 @@ gtk_tree_model_sort_set_sort_column_id (GtkTreeSortable *sortable, } } - tree_model_sort->sort_column_id = sort_column_id; - tree_model_sort->order = order; + priv->sort_column_id = sort_column_id; + priv->order = order; gtk_tree_sortable_sort_column_changed (sortable); @@ -1385,12 +1463,13 @@ gtk_tree_model_sort_set_sort_func (GtkTreeSortable *sortable, GDestroyNotify destroy) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) sortable; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; - tree_model_sort->sort_list = _gtk_tree_data_list_set_header (tree_model_sort->sort_list, - sort_column_id, - func, data, destroy); + priv->sort_list = _gtk_tree_data_list_set_header (priv->sort_list, + sort_column_id, + func, data, destroy); - if (tree_model_sort->sort_column_id == sort_column_id) + if (priv->sort_column_id == sort_column_id) gtk_tree_model_sort_sort (tree_model_sort); } @@ -1401,20 +1480,21 @@ gtk_tree_model_sort_set_default_sort_func (GtkTreeSortable *sortable, GDestroyNotify destroy) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *)sortable; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; - if (tree_model_sort->default_sort_destroy) + if (priv->default_sort_destroy) { - GDestroyNotify d = tree_model_sort->default_sort_destroy; + GDestroyNotify d = priv->default_sort_destroy; - tree_model_sort->default_sort_destroy = NULL; - d (tree_model_sort->default_sort_data); + priv->default_sort_destroy = NULL; + d (priv->default_sort_data); } - tree_model_sort->default_sort_func = func; - tree_model_sort->default_sort_data = data; - tree_model_sort->default_sort_destroy = destroy; + priv->default_sort_func = func; + priv->default_sort_data = data; + priv->default_sort_destroy = destroy; - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) gtk_tree_model_sort_sort (tree_model_sort); } @@ -1423,7 +1503,7 @@ gtk_tree_model_sort_has_default_sort_func (GtkTreeSortable *sortable) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *)sortable; - return (tree_model_sort->default_sort_func != NULL); + return (tree_model_sort->priv->default_sort_func != NULL); } /* DragSource interface */ @@ -1437,7 +1517,7 @@ gtk_tree_model_sort_row_draggable (GtkTreeDragSource *drag_source, child_path = gtk_tree_model_sort_convert_path_to_child_path (tree_model_sort, path); - draggable = gtk_tree_drag_source_row_draggable (GTK_TREE_DRAG_SOURCE (tree_model_sort->child_model), child_path); + draggable = gtk_tree_drag_source_row_draggable (GTK_TREE_DRAG_SOURCE (tree_model_sort->priv->child_model), child_path); gtk_tree_path_free (child_path); return draggable; @@ -1453,7 +1533,7 @@ gtk_tree_model_sort_drag_data_get (GtkTreeDragSource *drag_source, gboolean gotten; child_path = gtk_tree_model_sort_convert_path_to_child_path (tree_model_sort, path); - gotten = gtk_tree_drag_source_drag_data_get (GTK_TREE_DRAG_SOURCE (tree_model_sort->child_model), child_path, selection_data); + gotten = gtk_tree_drag_source_drag_data_get (GTK_TREE_DRAG_SOURCE (tree_model_sort->priv->child_model), child_path, selection_data); gtk_tree_path_free (child_path); return gotten; @@ -1468,7 +1548,7 @@ gtk_tree_model_sort_drag_data_delete (GtkTreeDragSource *drag_source, gboolean deleted; child_path = gtk_tree_model_sort_convert_path_to_child_path (tree_model_sort, path); - deleted = gtk_tree_drag_source_drag_data_delete (GTK_TREE_DRAG_SOURCE (tree_model_sort->child_model), child_path); + deleted = gtk_tree_drag_source_drag_data_delete (GTK_TREE_DRAG_SOURCE (tree_model_sort->priv->child_model), child_path); gtk_tree_path_free (child_path); return deleted; @@ -1482,6 +1562,7 @@ gtk_tree_model_sort_compare_func (gconstpointer a, { SortData *data = (SortData *)user_data; GtkTreeModelSort *tree_model_sort = data->tree_model_sort; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; SortTuple *sa = (SortTuple *)a; SortTuple *sb = (SortTuple *)b; @@ -1500,16 +1581,16 @@ gtk_tree_model_sort_compare_func (gconstpointer a, else { data->parent_path_indices [data->parent_path_depth-1] = sa->elt->offset; - gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_model_sort->child_model), &iter_a, data->parent_path); + gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->child_model), &iter_a, data->parent_path); data->parent_path_indices [data->parent_path_depth-1] = sb->elt->offset; - gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_model_sort->child_model), &iter_b, data->parent_path); + gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->child_model), &iter_b, data->parent_path); } - retval = (* data->sort_func) (GTK_TREE_MODEL (tree_model_sort->child_model), + retval = (* data->sort_func) (GTK_TREE_MODEL (priv->child_model), &iter_a, &iter_b, data->sort_data); - if (tree_model_sort->order == GTK_SORT_DESCENDING) + if (priv->order == GTK_SORT_DESCENDING) { if (retval > 0) retval = -1; @@ -1539,7 +1620,7 @@ gtk_tree_model_sort_offset_compare_func (gconstpointer a, else retval = 0; - if (data->tree_model_sort->order == GTK_SORT_DESCENDING) + if (data->tree_model_sort->priv->order == GTK_SORT_DESCENDING) { if (retval > 0) retval = -1; @@ -1556,6 +1637,7 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, gboolean recurse, gboolean emit_reordered) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint i; gint ref_offset; GArray *sort_array; @@ -1572,7 +1654,7 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, if (level->array->len < 1 && !((SortElt *)level->array->data)->children) return; - iter.stamp = tree_model_sort->stamp; + iter.stamp = priv->stamp; iter.user_data = level; iter.user_data2 = &g_array_index (level->array, SortElt, 0); @@ -1606,12 +1688,12 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, g_array_append_val (sort_array, tuple); } - if (tree_model_sort->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) { GtkTreeDataSortHeader *header = NULL; - header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, - tree_model_sort->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); g_return_if_fail (header != NULL); g_return_if_fail (header->func != NULL); @@ -1622,10 +1704,10 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, else { /* absolutely SHOULD NOT happen: */ - g_return_if_fail (tree_model_sort->default_sort_func != NULL); + g_return_if_fail (priv->default_sort_func != NULL); - data.sort_func = tree_model_sort->default_sort_func; - data.sort_data = tree_model_sort->default_sort_data; + data.sort_func = priv->default_sort_func; + data.sort_data = priv->default_sort_data; } if (data.sort_func == NO_SORT_FUNC) @@ -1663,7 +1745,7 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, gtk_tree_model_sort_increment_stamp (tree_model_sort); if (level->parent_elt_index >= 0) { - iter.stamp = tree_model_sort->stamp; + iter.stamp = priv->stamp; iter.user_data = level->parent_level; iter.user_data2 = SORT_LEVEL_PARENT_ELT (level); @@ -1703,7 +1785,7 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, /* get the iter we referenced at the beginning of this function and * unref it again */ - iter.stamp = tree_model_sort->stamp; + iter.stamp = priv->stamp; iter.user_data = level; for (i = 0; i < level->array->len; i++) @@ -1721,27 +1803,29 @@ gtk_tree_model_sort_sort_level (GtkTreeModelSort *tree_model_sort, static void gtk_tree_model_sort_sort (GtkTreeModelSort *tree_model_sort) { - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; + + if (priv->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) return; - if (!tree_model_sort->root) + if (!priv->root) return; - if (tree_model_sort->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) { GtkTreeDataSortHeader *header = NULL; - header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, - tree_model_sort->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); /* we want to make sure that we have a function */ g_return_if_fail (header != NULL); g_return_if_fail (header->func != NULL); } else - g_return_if_fail (tree_model_sort->default_sort_func != NULL); + g_return_if_fail (priv->default_sort_func != NULL); - gtk_tree_model_sort_sort_level (tree_model_sort, tree_model_sort->root, + gtk_tree_model_sort_sort_level (tree_model_sort, priv->root, TRUE, TRUE); } @@ -1752,6 +1836,7 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, GtkTreeIter *iter, gint skip_index) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint start, middle, end; gint cmp; SortElt *tmp_elt; @@ -1760,12 +1845,12 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, GtkTreeIterCompareFunc func; gpointer data; - if (tree_model_sort->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id != GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) { GtkTreeDataSortHeader *header; - header = _gtk_tree_data_list_get_header (tree_model_sort->sort_list, - tree_model_sort->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); g_return_val_if_fail (header != NULL, 0); @@ -1774,8 +1859,8 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, } else { - func = tree_model_sort->default_sort_func; - data = tree_model_sort->default_sort_data; + func = priv->default_sort_func; + data = priv->default_sort_data; g_return_val_if_fail (func != NO_SORT_FUNC, 0); } @@ -1804,18 +1889,18 @@ gtk_tree_model_sort_level_find_insert (GtkTreeModelSort *tree_model_sort, if (!GTK_TREE_MODEL_SORT_CACHE_CHILD_ITERS (tree_model_sort)) { GtkTreePath *path = gtk_tree_model_sort_elt_get_path (level, tmp_elt); - gtk_tree_model_get_iter (tree_model_sort->child_model, + gtk_tree_model_get_iter (priv->child_model, &tmp_iter, path); gtk_tree_path_free (path); } else tmp_iter = tmp_elt->iter; - if (tree_model_sort->order == GTK_SORT_ASCENDING) - cmp = (* func) (GTK_TREE_MODEL (tree_model_sort->child_model), + if (priv->order == GTK_SORT_ASCENDING) + cmp = (* func) (GTK_TREE_MODEL (priv->child_model), &tmp_iter, iter, data); else - cmp = (* func) (GTK_TREE_MODEL (tree_model_sort->child_model), + cmp = (* func) (GTK_TREE_MODEL (priv->child_model), iter, &tmp_iter, data); if (cmp <= 0) @@ -1836,6 +1921,7 @@ gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort, GtkTreePath *s_path, GtkTreeIter *s_iter) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint offset, index, i; SortElt elt; @@ -1856,8 +1942,8 @@ gtk_tree_model_sort_insert_value (GtkTreeModelSort *tree_model_sort, if (tmp_elt->offset >= offset) tmp_elt->offset++; - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && - tree_model_sort->default_sort_func == NO_SORT_FUNC) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID && + priv->default_sort_func == NO_SORT_FUNC) index = offset; else index = gtk_tree_model_sort_level_find_insert (tree_model_sort, @@ -1915,71 +2001,73 @@ static void gtk_tree_model_sort_set_model (GtkTreeModelSort *tree_model_sort, GtkTreeModel *child_model) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; + if (child_model) g_object_ref (child_model); - if (tree_model_sort->child_model) + if (priv->child_model) { - g_signal_handler_disconnect (tree_model_sort->child_model, - tree_model_sort->changed_id); - g_signal_handler_disconnect (tree_model_sort->child_model, - tree_model_sort->inserted_id); - g_signal_handler_disconnect (tree_model_sort->child_model, - tree_model_sort->has_child_toggled_id); - g_signal_handler_disconnect (tree_model_sort->child_model, - tree_model_sort->deleted_id); - g_signal_handler_disconnect (tree_model_sort->child_model, - tree_model_sort->reordered_id); + g_signal_handler_disconnect (priv->child_model, + priv->changed_id); + g_signal_handler_disconnect (priv->child_model, + priv->inserted_id); + g_signal_handler_disconnect (priv->child_model, + priv->has_child_toggled_id); + g_signal_handler_disconnect (priv->child_model, + priv->deleted_id); + g_signal_handler_disconnect (priv->child_model, + priv->reordered_id); /* reset our state */ - if (tree_model_sort->root) - gtk_tree_model_sort_free_level (tree_model_sort, tree_model_sort->root); - tree_model_sort->root = NULL; - _gtk_tree_data_list_header_free (tree_model_sort->sort_list); - tree_model_sort->sort_list = NULL; - g_object_unref (tree_model_sort->child_model); + if (priv->root) + gtk_tree_model_sort_free_level (tree_model_sort, priv->root); + priv->root = NULL; + _gtk_tree_data_list_header_free (priv->sort_list); + priv->sort_list = NULL; + g_object_unref (priv->child_model); } - tree_model_sort->child_model = child_model; + priv->child_model = child_model; if (child_model) { GType *types; gint i, n_columns; - tree_model_sort->changed_id = + priv->changed_id = g_signal_connect (child_model, "row-changed", G_CALLBACK (gtk_tree_model_sort_row_changed), tree_model_sort); - tree_model_sort->inserted_id = + priv->inserted_id = g_signal_connect (child_model, "row-inserted", G_CALLBACK (gtk_tree_model_sort_row_inserted), tree_model_sort); - tree_model_sort->has_child_toggled_id = + priv->has_child_toggled_id = g_signal_connect (child_model, "row-has-child-toggled", G_CALLBACK (gtk_tree_model_sort_row_has_child_toggled), tree_model_sort); - tree_model_sort->deleted_id = + priv->deleted_id = g_signal_connect (child_model, "row-deleted", G_CALLBACK (gtk_tree_model_sort_row_deleted), tree_model_sort); - tree_model_sort->reordered_id = + priv->reordered_id = g_signal_connect (child_model, "rows-reordered", G_CALLBACK (gtk_tree_model_sort_rows_reordered), tree_model_sort); - tree_model_sort->child_flags = gtk_tree_model_get_flags (child_model); + priv->child_flags = gtk_tree_model_get_flags (child_model); n_columns = gtk_tree_model_get_n_columns (child_model); types = g_new (GType, n_columns); for (i = 0; i < n_columns; i++) types[i] = gtk_tree_model_get_column_type (child_model, i); - tree_model_sort->sort_list = _gtk_tree_data_list_header_new (n_columns, types); + priv->sort_list = _gtk_tree_data_list_header_new (n_columns, types); g_free (types); - tree_model_sort->default_sort_func = NO_SORT_FUNC; - tree_model_sort->stamp = g_random_int (); + priv->default_sort_func = NO_SORT_FUNC; + priv->stamp = g_random_int (); } } @@ -1996,7 +2084,7 @@ gtk_tree_model_sort_get_model (GtkTreeModelSort *tree_model) { g_return_val_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model), NULL); - return tree_model->child_model; + return tree_model->priv->child_model; } @@ -2005,20 +2093,21 @@ gtk_real_tree_model_sort_convert_child_path_to_path (GtkTreeModelSort *tree_mode GtkTreePath *child_path, gboolean build_levels) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint *child_indices; GtkTreePath *retval; SortLevel *level; gint i; - g_return_val_if_fail (tree_model_sort->child_model != NULL, NULL); + g_return_val_if_fail (priv->child_model != NULL, NULL); g_return_val_if_fail (child_path != NULL, NULL); retval = gtk_tree_path_new (); child_indices = gtk_tree_path_get_indices (child_path); - if (tree_model_sort->root == NULL && build_levels) + if (priv->root == NULL && build_levels) gtk_tree_model_sort_build_level (tree_model_sort, NULL, -1); - level = SORT_LEVEL (tree_model_sort->root); + level = SORT_LEVEL (priv->root); for (i = 0; i < gtk_tree_path_get_depth (child_path); i++) { @@ -2078,7 +2167,7 @@ gtk_tree_model_sort_convert_child_path_to_path (GtkTreeModelSort *tree_model_sor GtkTreePath *child_path) { g_return_val_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort), NULL); - g_return_val_if_fail (tree_model_sort->child_model != NULL, NULL); + g_return_val_if_fail (tree_model_sort->priv->child_model != NULL, NULL); g_return_val_if_fail (child_path != NULL, NULL); return gtk_real_tree_model_sort_convert_child_path_to_path (tree_model_sort, child_path, TRUE); @@ -2104,16 +2193,17 @@ gtk_tree_model_sort_convert_child_iter_to_iter (GtkTreeModelSort *tree_model_sor { gboolean ret; GtkTreePath *child_path, *path; + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; g_return_val_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort), FALSE); - g_return_val_if_fail (tree_model_sort->child_model != NULL, FALSE); + g_return_val_if_fail (priv->child_model != NULL, FALSE); g_return_val_if_fail (sort_iter != NULL, FALSE); g_return_val_if_fail (child_iter != NULL, FALSE); g_return_val_if_fail (sort_iter != child_iter, FALSE); sort_iter->stamp = 0; - child_path = gtk_tree_model_get_path (tree_model_sort->child_model, child_iter); + child_path = gtk_tree_model_get_path (priv->child_model, child_iter); g_return_val_if_fail (child_path != NULL, FALSE); path = gtk_tree_model_sort_convert_child_path_to_path (tree_model_sort, child_path); @@ -2149,20 +2239,21 @@ GtkTreePath * gtk_tree_model_sort_convert_path_to_child_path (GtkTreeModelSort *tree_model_sort, GtkTreePath *sorted_path) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint *sorted_indices; GtkTreePath *retval; SortLevel *level; gint i; g_return_val_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort), NULL); - g_return_val_if_fail (tree_model_sort->child_model != NULL, NULL); + g_return_val_if_fail (priv->child_model != NULL, NULL); g_return_val_if_fail (sorted_path != NULL, NULL); retval = gtk_tree_path_new (); sorted_indices = gtk_tree_path_get_indices (sorted_path); - if (tree_model_sort->root == NULL) + if (priv->root == NULL) gtk_tree_model_sort_build_level (tree_model_sort, NULL, -1); - level = SORT_LEVEL (tree_model_sort->root); + level = SORT_LEVEL (priv->root); for (i = 0; i < gtk_tree_path_get_depth (sorted_path); i++) { @@ -2204,8 +2295,9 @@ gtk_tree_model_sort_convert_iter_to_child_iter (GtkTreeModelSort *tree_model_sor GtkTreeIter *child_iter, GtkTreeIter *sorted_iter) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; g_return_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort)); - g_return_if_fail (tree_model_sort->child_model != NULL); + g_return_if_fail (priv->child_model != NULL); g_return_if_fail (child_iter != NULL); g_return_if_fail (VALID_ITER (sorted_iter, tree_model_sort)); g_return_if_fail (sorted_iter != child_iter); @@ -2220,7 +2312,7 @@ gtk_tree_model_sort_convert_iter_to_child_iter (GtkTreeModelSort *tree_model_sor path = gtk_tree_model_sort_elt_get_path (sorted_iter->user_data, sorted_iter->user_data2); - gtk_tree_model_get_iter (tree_model_sort->child_model, child_iter, path); + gtk_tree_model_get_iter (priv->child_model, child_iter, path); gtk_tree_path_free (path); } } @@ -2230,19 +2322,20 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, SortLevel *parent_level, gint parent_elt_index) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; GtkTreeIter iter; SortElt *parent_elt = NULL; SortLevel *new_level; gint length = 0; gint i; - g_assert (tree_model_sort->child_model != NULL); + g_assert (priv->child_model != NULL); if (parent_level == NULL) { - if (gtk_tree_model_get_iter_first (tree_model_sort->child_model, &iter) == FALSE) + if (gtk_tree_model_get_iter_first (priv->child_model, &iter) == FALSE) return; - length = gtk_tree_model_iter_n_children (tree_model_sort->child_model, NULL); + length = gtk_tree_model_iter_n_children (priv->child_model, NULL); } else { @@ -2251,14 +2344,14 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, parent_elt = &g_array_index (parent_level->array, SortElt, parent_elt_index); - parent_iter.stamp = tree_model_sort->stamp; + parent_iter.stamp = priv->stamp; parent_iter.user_data = parent_level; parent_iter.user_data2 = parent_elt; gtk_tree_model_sort_convert_iter_to_child_iter (tree_model_sort, &child_parent_iter, &parent_iter); - if (gtk_tree_model_iter_children (tree_model_sort->child_model, + if (gtk_tree_model_iter_children (priv->child_model, &iter, &child_parent_iter) == FALSE) return; @@ -2268,7 +2361,7 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, &child_parent_iter, &parent_iter); - length = gtk_tree_model_iter_n_children (tree_model_sort->child_model, &child_parent_iter); + length = gtk_tree_model_iter_n_children (priv->child_model, &child_parent_iter); } g_return_if_fail (length > 0); @@ -2282,7 +2375,7 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, if (parent_elt_index >= 0) parent_elt->children = new_level; else - tree_model_sort->root = new_level; + priv->root = new_level; /* increase the count of zero ref_counts.*/ while (parent_level) @@ -2293,8 +2386,8 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, parent_level = parent_level->parent_level; } - if (new_level != tree_model_sort->root) - tree_model_sort->zero_ref_count++; + if (new_level != priv->root) + priv->zero_ref_count++; for (i = 0; i < length; i++) { @@ -2307,7 +2400,7 @@ gtk_tree_model_sort_build_level (GtkTreeModelSort *tree_model_sort, if (GTK_TREE_MODEL_SORT_CACHE_CHILD_ITERS (tree_model_sort)) { sort_elt.iter = iter; - if (gtk_tree_model_iter_next (tree_model_sort->child_model, &iter) == FALSE && + if (gtk_tree_model_iter_next (priv->child_model, &iter) == FALSE && i < length - 1) { if (parent_level) @@ -2349,6 +2442,7 @@ static void gtk_tree_model_sort_free_level (GtkTreeModelSort *tree_model_sort, SortLevel *sort_level) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; gint i; g_assert (sort_level); @@ -2373,14 +2467,14 @@ gtk_tree_model_sort_free_level (GtkTreeModelSort *tree_model_sort, parent_level = parent_level->parent_level; } - if (sort_level != tree_model_sort->root) - tree_model_sort->zero_ref_count--; + if (sort_level != priv->root) + priv->zero_ref_count--; } if (sort_level->parent_elt_index >= 0) SORT_LEVEL_PARENT_ELT (sort_level)->children = NULL; else - tree_model_sort->root = NULL; + priv->root = NULL; g_array_free (sort_level->array, TRUE); sort_level->array = NULL; @@ -2392,11 +2486,13 @@ gtk_tree_model_sort_free_level (GtkTreeModelSort *tree_model_sort, static void gtk_tree_model_sort_increment_stamp (GtkTreeModelSort *tree_model_sort) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; + do { - tree_model_sort->stamp++; + priv->stamp++; } - while (tree_model_sort->stamp == 0); + while (priv->stamp == 0); gtk_tree_model_sort_clear_cache (tree_model_sort); } @@ -2415,7 +2511,7 @@ gtk_tree_model_sort_clear_cache_helper (GtkTreeModelSort *tree_model_sort, gtk_tree_model_sort_clear_cache_helper (tree_model_sort, g_array_index (level->array, SortElt, i).children); } - if (level->ref_count == 0 && level != tree_model_sort->root) + if (level->ref_count == 0 && level != tree_model_sort->priv->root) gtk_tree_model_sort_free_level (tree_model_sort, level); } @@ -2431,23 +2527,25 @@ gtk_tree_model_sort_clear_cache_helper (GtkTreeModelSort *tree_model_sort, void gtk_tree_model_sort_reset_default_sort_func (GtkTreeModelSort *tree_model_sort) { + GtkTreeModelSortPrivate *priv = tree_model_sort->priv; + g_return_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort)); - if (tree_model_sort->default_sort_destroy) + if (priv->default_sort_destroy) { - GDestroyNotify d = tree_model_sort->default_sort_destroy; + GDestroyNotify d = priv->default_sort_destroy; - tree_model_sort->default_sort_destroy = NULL; - d (tree_model_sort->default_sort_data); + priv->default_sort_destroy = NULL; + d (priv->default_sort_data); } - tree_model_sort->default_sort_func = NO_SORT_FUNC; - tree_model_sort->default_sort_data = NULL; - tree_model_sort->default_sort_destroy = NULL; + priv->default_sort_func = NO_SORT_FUNC; + priv->default_sort_data = NULL; + priv->default_sort_destroy = NULL; - if (tree_model_sort->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) gtk_tree_model_sort_sort (tree_model_sort); - tree_model_sort->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; + priv->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; } /** @@ -2466,8 +2564,8 @@ gtk_tree_model_sort_clear_cache (GtkTreeModelSort *tree_model_sort) { g_return_if_fail (GTK_IS_TREE_MODEL_SORT (tree_model_sort)); - if (tree_model_sort->zero_ref_count > 0) - gtk_tree_model_sort_clear_cache_helper (tree_model_sort, (SortLevel *)tree_model_sort->root); + if (tree_model_sort->priv->zero_ref_count > 0) + gtk_tree_model_sort_clear_cache_helper (tree_model_sort, (SortLevel *)tree_model_sort->priv->root); } static gboolean @@ -2517,5 +2615,5 @@ gtk_tree_model_sort_iter_is_valid (GtkTreeModelSort *tree_model_sort, return FALSE; return gtk_tree_model_sort_iter_is_valid_helper (iter, - tree_model_sort->root); + tree_model_sort->priv->root); } diff --git a/gtk/gtktreemodelsort.h b/gtk/gtktreemodelsort.h index bb5910c5e9..90cc3c31a1 100644 --- a/gtk/gtktreemodelsort.h +++ b/gtk/gtktreemodelsort.h @@ -24,7 +24,7 @@ #ifndef __GTK_TREE_MODEL_SORT_H__ #define __GTK_TREE_MODEL_SORT_H__ -#include +#include #include #include @@ -37,36 +37,16 @@ G_BEGIN_DECLS #define GTK_IS_TREE_MODEL_SORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_MODEL_SORT)) #define GTK_TREE_MODEL_SORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_MODEL_SORT, GtkTreeModelSortClass)) -typedef struct _GtkTreeModelSort GtkTreeModelSort; -typedef struct _GtkTreeModelSortClass GtkTreeModelSortClass; +typedef struct _GtkTreeModelSort GtkTreeModelSort; +typedef struct _GtkTreeModelSortClass GtkTreeModelSortClass; +typedef struct _GtkTreeModelSortPrivate GtkTreeModelSortPrivate; struct _GtkTreeModelSort { GObject parent; /* < private > */ - gpointer GSEAL (root); - gint GSEAL (stamp); - guint GSEAL (child_flags); - GtkTreeModel *GSEAL (child_model); - gint GSEAL (zero_ref_count); - - /* sort information */ - GList *GSEAL (sort_list); - gint GSEAL (sort_column_id); - GtkSortType GSEAL (order); - - /* default sort */ - GtkTreeIterCompareFunc GSEAL (default_sort_func); - gpointer GSEAL (default_sort_data); - GDestroyNotify GSEAL (default_sort_destroy); - - /* signal ids */ - gulong GSEAL (changed_id); - gulong GSEAL (inserted_id); - gulong GSEAL (has_child_toggled_id); - gulong GSEAL (deleted_id); - gulong GSEAL (reordered_id); + GtkTreeModelSortPrivate *priv; }; struct _GtkTreeModelSortClass diff --git a/gtk/gtktreeprivate.h b/gtk/gtktreeprivate.h index 2304f69ab7..a47a17b5b0 100644 --- a/gtk/gtktreeprivate.h +++ b/gtk/gtktreeprivate.h @@ -30,18 +30,6 @@ G_BEGIN_DECLS #define TREE_VIEW_DRAG_WIDTH 6 -typedef enum -{ - GTK_TREE_VIEW_IS_LIST = 1 << 0, - GTK_TREE_VIEW_SHOW_EXPANDERS = 1 << 1, - GTK_TREE_VIEW_IN_COLUMN_RESIZE = 1 << 2, - GTK_TREE_VIEW_ARROW_PRELIT = 1 << 3, - GTK_TREE_VIEW_HEADERS_VISIBLE = 1 << 4, - GTK_TREE_VIEW_DRAW_KEYFOCUS = 1 << 5, - GTK_TREE_VIEW_MODEL_SETUP = 1 << 6, - GTK_TREE_VIEW_IN_COLUMN_DRAG = 1 << 7 -} GtkTreeViewFlags; - typedef enum { GTK_TREE_SELECT_MODE_TOGGLE = 1 << 0, @@ -49,336 +37,6 @@ typedef enum } GtkTreeSelectMode; -enum -{ - DRAG_COLUMN_WINDOW_STATE_UNSET = 0, - DRAG_COLUMN_WINDOW_STATE_ORIGINAL = 1, - DRAG_COLUMN_WINDOW_STATE_ARROW = 2, - DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT = 3, - DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT = 4 -}; - -enum -{ - RUBBER_BAND_OFF = 0, - RUBBER_BAND_MAYBE_START = 1, - RUBBER_BAND_ACTIVE = 2 -}; - -#define GTK_TREE_VIEW_SET_FLAG(tree_view, flag) G_STMT_START{ (tree_view->priv->flags|=flag); }G_STMT_END -#define GTK_TREE_VIEW_UNSET_FLAG(tree_view, flag) G_STMT_START{ (tree_view->priv->flags&=~(flag)); }G_STMT_END -#define GTK_TREE_VIEW_FLAG_SET(tree_view, flag) ((tree_view->priv->flags&flag)==flag) -#define TREE_VIEW_HEADER_HEIGHT(tree_view) (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)?tree_view->priv->header_height:0) -#define TREE_VIEW_COLUMN_REQUESTED_WIDTH(column) (CLAMP (column->requested_width, (column->min_width!=-1)?column->min_width:column->requested_width, (column->max_width!=-1)?column->max_width:column->requested_width)) -#define TREE_VIEW_DRAW_EXPANDERS(tree_view) (!GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IS_LIST)&>K_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS)) - - /* This lovely little value is used to determine how far away from the title bar - * you can move the mouse and still have a column drag work. - */ -#define TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER(tree_view) (10*TREE_VIEW_HEADER_HEIGHT(tree_view)) - -typedef struct _GtkTreeViewColumnReorder GtkTreeViewColumnReorder; -struct _GtkTreeViewColumnReorder -{ - gint left_align; - gint right_align; - GtkTreeViewColumn *left_column; - GtkTreeViewColumn *right_column; -}; - -struct _GtkTreeViewPrivate -{ - GtkTreeModel *model; - - guint flags; - /* tree information */ - GtkRBTree *tree; - - /* Container info */ - GList *children; - gint width; - gint height; - - /* Adjustments */ - GtkAdjustment *hadjustment; - GtkAdjustment *vadjustment; - gint min_display_width; - gint min_display_height; - - /* Sub windows */ - GdkWindow *bin_window; - GdkWindow *header_window; - - /* Scroll position state keeping */ - GtkTreeRowReference *top_row; - gint top_row_dy; - /* dy == y pos of top_row + top_row_dy */ - /* we cache it for simplicity of the code */ - gint dy; - - guint presize_handler_timer; - guint validate_rows_timer; - guint scroll_sync_timer; - - /* Indentation and expander layout */ - gint expander_size; - GtkTreeViewColumn *expander_column; - - gint level_indentation; - - /* Key navigation (focus), selection */ - gint cursor_offset; - - GtkTreeRowReference *anchor; - GtkTreeRowReference *cursor; - - GtkTreeViewColumn *focus_column; - - /* Current pressed node, previously pressed, prelight */ - GtkRBNode *button_pressed_node; - GtkRBTree *button_pressed_tree; - - gint pressed_button; - gint press_start_x; - gint press_start_y; - - gint event_last_x; - gint event_last_y; - - guint last_button_time; - gint last_button_x; - gint last_button_y; - - GtkRBNode *prelight_node; - GtkRBTree *prelight_tree; - - /* Cell Editing */ - GtkTreeViewColumn *edited_column; - - /* The node that's currently being collapsed or expanded */ - GtkRBNode *expanded_collapsed_node; - GtkRBTree *expanded_collapsed_tree; - guint expand_collapse_timeout; - - /* Auto expand/collapse timeout in hover mode */ - guint auto_expand_timeout; - - /* Selection information */ - GtkTreeSelection *selection; - - /* Header information */ - gint n_columns; - GList *columns; - gint header_height; - - GtkTreeViewColumnDropFunc column_drop_func; - gpointer column_drop_func_data; - GDestroyNotify column_drop_func_data_destroy; - GList *column_drag_info; - GtkTreeViewColumnReorder *cur_reorder; - - gint prev_width_before_expander; - - /* Interactive Header reordering */ - GdkWindow *drag_window; - GdkWindow *drag_highlight_window; - GtkTreeViewColumn *drag_column; - gint drag_column_x; - - /* Interactive Header Resizing */ - gint drag_pos; - gint x_drag; - - /* Non-interactive Header Resizing, expand flag support */ - gint prev_width; - - gint last_extra_space; - gint last_extra_space_per_column; - gint last_number_of_expand_columns; - - /* ATK Hack */ - GtkTreeDestroyCountFunc destroy_count_func; - gpointer destroy_count_data; - GDestroyNotify destroy_count_destroy; - - /* Scroll timeout (e.g. during dnd, rubber banding) */ - guint scroll_timeout; - - /* Row drag-and-drop */ - GtkTreeRowReference *drag_dest_row; - GtkTreeViewDropPosition drag_dest_pos; - guint open_dest_timeout; - - /* Rubber banding */ - gint rubber_band_status; - gint rubber_band_x; - gint rubber_band_y; - gint rubber_band_shift; - gint rubber_band_ctrl; - - GtkRBNode *rubber_band_start_node; - GtkRBTree *rubber_band_start_tree; - - GtkRBNode *rubber_band_end_node; - GtkRBTree *rubber_band_end_tree; - - /* fixed height */ - gint fixed_height; - - /* Scroll-to functionality when unrealized */ - GtkTreeRowReference *scroll_to_path; - GtkTreeViewColumn *scroll_to_column; - gfloat scroll_to_row_align; - gfloat scroll_to_col_align; - - /* Interactive search */ - gint selected_iter; - gint search_column; - GtkTreeViewSearchPositionFunc search_position_func; - GtkTreeViewSearchEqualFunc search_equal_func; - gpointer search_user_data; - GDestroyNotify search_destroy; - gpointer search_position_user_data; - GDestroyNotify search_position_destroy; - GtkWidget *search_window; - GtkWidget *search_entry; - gulong search_entry_changed_id; - guint typeselect_flush_timeout; - - /* Grid and tree lines */ - GtkTreeViewGridLines grid_lines; - double grid_line_dashes[2]; - int grid_line_width; - - gboolean tree_lines_enabled; - double tree_line_dashes[2]; - int tree_line_width; - - /* Row separators */ - GtkTreeViewRowSeparatorFunc row_separator_func; - gpointer row_separator_data; - GDestroyNotify row_separator_destroy; - - /* Tooltip support */ - gint tooltip_column; - - /* Here comes the bitfield */ - guint scroll_to_use_align : 1; - - guint fixed_height_mode : 1; - guint fixed_height_check : 1; - - guint reorderable : 1; - guint header_has_focus : 1; - guint drag_column_window_state : 3; - /* hint to display rows in alternating colors */ - guint has_rules : 1; - guint mark_rows_col_dirty : 1; - - /* for DnD */ - guint empty_view_drop : 1; - - guint ctrl_pressed : 1; - guint shift_pressed : 1; - - guint init_hadjust_value : 1; - - guint in_top_row_to_dy : 1; - - /* interactive search */ - guint enable_search : 1; - guint disable_popdown : 1; - guint search_custom_entry_set : 1; - - guint hover_selection : 1; - guint hover_expand : 1; - guint imcontext_changed : 1; - - guint rubber_banding_enable : 1; - - guint in_grab : 1; - - guint post_validation_flag : 1; - - /* Whether our key press handler is to avoid sending an unhandled binding to the search entry */ - guint search_entry_avoid_unhandled_binding : 1; - - /* GtkScrollablePolicy needs to be checked when - * driving the scrollable adjustment values */ - guint hscroll_policy : 1; - guint vscroll_policy : 1; -}; - -#ifdef __GNUC__ - -#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \ - if (!(expr)) \ - { \ - g_log (G_LOG_DOMAIN, \ - G_LOG_LEVEL_CRITICAL, \ - "%s (%s): assertion `%s' failed.\n" \ - "There is a disparity between the internal view of the GtkTreeView,\n" \ - "and the GtkTreeModel. This generally means that the model has changed\n"\ - "without letting the view know. Any display from now on is likely to\n" \ - "be incorrect.\n", \ - G_STRLOC, \ - G_STRFUNC, \ - #expr); \ - return ret; \ - }; }G_STMT_END - -#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \ - if (!(expr)) \ - { \ - g_log (G_LOG_DOMAIN, \ - G_LOG_LEVEL_CRITICAL, \ - "%s (%s): assertion `%s' failed.\n" \ - "There is a disparity between the internal view of the GtkTreeView,\n" \ - "and the GtkTreeModel. This generally means that the model has changed\n"\ - "without letting the view know. Any display from now on is likely to\n" \ - "be incorrect.\n", \ - G_STRLOC, \ - G_STRFUNC, \ - #expr); \ - return; \ - }; }G_STMT_END - -#else - -#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \ - if (!(expr)) \ - { \ - g_log (G_LOG_DOMAIN, \ - G_LOG_LEVEL_CRITICAL, \ - "file %s: line %d: assertion `%s' failed.\n" \ - "There is a disparity between the internal view of the GtkTreeView,\n" \ - "and the GtkTreeModel. This generally means that the model has changed\n"\ - "without letting the view know. Any display from now on is likely to\n" \ - "be incorrect.\n", \ - __FILE__, \ - __LINE__, \ - #expr); \ - return ret; \ - }; }G_STMT_END - -#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \ - if (!(expr)) \ - { \ - g_log (G_LOG_DOMAIN, \ - G_LOG_LEVEL_CRITICAL, \ - "file %s: line %d: assertion '%s' failed.\n" \ - "There is a disparity between the internal view of the GtkTreeView,\n" \ - "and the GtkTreeModel. This generally means that the model has changed\n"\ - "without letting the view know. Any display from now on is likely to\n" \ - "be incorrect.\n", \ - __FILE__, \ - __LINE__, \ - #expr); \ - return; \ - }; }G_STMT_END -#endif - - /* functions that shouldn't be exported */ void _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, GtkRBNode *node, @@ -405,37 +63,33 @@ void _gtk_tree_view_queue_draw_node (GtkTreeView *tree_v GtkRBNode *node, const GdkRectangle *clip_rect); -void _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column); -void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column); -void _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column, - GtkTreeView *tree_view); -void _gtk_tree_view_column_unset_model (GtkTreeViewColumn *column, - GtkTreeModel *old_model); -void _gtk_tree_view_column_unset_tree_view (GtkTreeViewColumn *column); -void _gtk_tree_view_column_set_width (GtkTreeViewColumn *column, - gint width); -void _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, - GtkTreeViewColumn *column, - GdkDevice *device); -gboolean _gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column, - GtkCellEditable **editable_widget, - GdkEvent *event, - gchar *path_string, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - guint flags); -void _gtk_tree_view_column_start_editing (GtkTreeViewColumn *tree_column, - GtkCellEditable *editable_widget); -void _gtk_tree_view_column_stop_editing (GtkTreeViewColumn *tree_column); -void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view); -void _gtk_tree_view_column_autosize (GtkTreeView *tree_view, - GtkTreeViewColumn *column); +void _gtk_tree_view_add_editable (GtkTreeView *tree_view, + GtkTreeViewColumn *column, + GtkTreePath *path, + GtkCellEditable *cell_editable, + GdkRectangle *cell_area); +void _gtk_tree_view_remove_editable (GtkTreeView *tree_view, + GtkTreeViewColumn *column, + GtkCellEditable *cell_editable); + +void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view, + gboolean install_handler); +void _gtk_tree_view_column_autosize (GtkTreeView *tree_view, + GtkTreeViewColumn *column); +gint _gtk_tree_view_get_header_height (GtkTreeView *tree_view); + +void _gtk_tree_view_get_row_separator_func (GtkTreeView *tree_view, + GtkTreeViewRowSeparatorFunc *func, + gpointer *data); +GtkTreePath *_gtk_tree_view_get_anchor_path (GtkTreeView *tree_view); +void _gtk_tree_view_set_anchor_path (GtkTreeView *tree_view, + GtkTreePath *anchor_path); +GtkRBTree * _gtk_tree_view_get_rbtree (GtkTreeView *tree_view); + +void _gtk_tree_view_set_focus_column (GtkTreeView *tree_view, + GtkTreeViewColumn *column); +GdkWindow *_gtk_tree_view_get_header_window (GtkTreeView *tree_view); -gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column); -GtkCellRenderer *_gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column); -gint _gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column); -GtkCellRenderer *_gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column, - gint x); GtkTreeSelection* _gtk_tree_selection_new (void); GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view); @@ -445,31 +99,61 @@ gboolean _gtk_tree_selection_row_is_selectable (GtkTreeSelection *sele GtkRBNode *node, GtkTreePath *path); + +void _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column); +void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column); + +void _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column, + GtkTreeView *tree_view); +gint _gtk_tree_view_column_request_width (GtkTreeViewColumn *tree_column); +void _gtk_tree_view_column_allocate (GtkTreeViewColumn *tree_column, + int x_offset, + int width); +void _gtk_tree_view_column_unset_model (GtkTreeViewColumn *column, + GtkTreeModel *old_model); +void _gtk_tree_view_column_unset_tree_view (GtkTreeViewColumn *column); +void _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, + GtkTreeViewColumn *column, + GdkDevice *device); +gboolean _gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column, + GdkEvent *event, + const GdkRectangle *cell_area, + guint flags); +gboolean _gtk_tree_view_column_has_editable_cell(GtkTreeViewColumn *column); +GtkCellRenderer *_gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column); +GtkCellRenderer *_gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column, + GdkRectangle *cell_area, + GdkRectangle *background_area, + gint x, + gint y); +gboolean _gtk_tree_view_column_is_blank_at_pos (GtkTreeViewColumn *column, + GdkRectangle *cell_area, + GdkRectangle *background_area, + gint x, + gint y); + void _gtk_tree_view_column_cell_render (GtkTreeViewColumn *tree_column, cairo_t *cr, const GdkRectangle *background_area, const GdkRectangle *cell_area, - guint flags); -void _gtk_tree_view_column_get_focus_area (GtkTreeViewColumn *tree_column, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - GdkRectangle *focus_area); -gboolean _gtk_tree_view_column_cell_focus (GtkTreeViewColumn *tree_column, - gint direction, - gboolean left, - gboolean right); -void _gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn *tree_column, - cairo_t *cr, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - guint flags); + guint flags, + gboolean draw_focus); void _gtk_tree_view_column_cell_set_dirty (GtkTreeViewColumn *tree_column, gboolean install_handler); -void _gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column, - GtkCellRenderer *cell, - gint *left, - gint *right); +gboolean _gtk_tree_view_column_cell_get_dirty (GtkTreeViewColumn *tree_column); +GdkWindow *_gtk_tree_view_column_get_window (GtkTreeViewColumn *column); +void _gtk_tree_view_column_push_padding (GtkTreeViewColumn *column, + gint padding); +gint _gtk_tree_view_column_get_requested_width (GtkTreeViewColumn *column); +void _gtk_tree_view_column_set_resized_width (GtkTreeViewColumn *column, + gint width); +gint _gtk_tree_view_column_get_resized_width (GtkTreeViewColumn *column); +void _gtk_tree_view_column_set_use_resized_width (GtkTreeViewColumn *column, + gboolean use_resized_width); +gboolean _gtk_tree_view_column_get_use_resized_width (GtkTreeViewColumn *column); +gint _gtk_tree_view_column_get_drag_x (GtkTreeViewColumn *column); +GtkCellAreaContext *_gtk_tree_view_column_get_context (GtkTreeViewColumn *column); G_END_DECLS diff --git a/gtk/gtktreeselection.c b/gtk/gtktreeselection.c index 5ae0866146..1ec2000a17 100644 --- a/gtk/gtktreeselection.c +++ b/gtk/gtktreeselection.c @@ -60,6 +60,14 @@ * select_row on an already selected row). */ +struct _GtkTreeSelectionPrivate +{ + GtkTreeView *tree_view; + GtkSelectionMode type; + GtkTreeSelectionFunc user_func; + gpointer user_data; + GDestroyNotify destroy; +}; static void gtk_tree_selection_finalize (GObject *object); static gint gtk_tree_selection_real_select_all (GtkTreeSelection *selection); @@ -106,21 +114,31 @@ gtk_tree_selection_class_init (GtkTreeSelectionClass *class) NULL, NULL, _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); + + g_type_class_add_private (class, sizeof (GtkTreeSelectionPrivate)); } static void gtk_tree_selection_init (GtkTreeSelection *selection) { - selection->type = GTK_SELECTION_SINGLE; + GtkTreeSelectionPrivate *priv; + + selection->priv = G_TYPE_INSTANCE_GET_PRIVATE (selection, + GTK_TYPE_TREE_SELECTION, + GtkTreeSelectionPrivate); + priv = selection->priv; + + priv->type = GTK_SELECTION_SINGLE; } static void gtk_tree_selection_finalize (GObject *object) { GtkTreeSelection *selection = GTK_TREE_SELECTION (object); + GtkTreeSelectionPrivate *priv = selection->priv; - if (selection->destroy) - selection->destroy (selection->user_data); + if (priv->destroy) + priv->destroy (priv->user_data); /* chain parent_class' handler */ G_OBJECT_CLASS (gtk_tree_selection_parent_class)->finalize (object); @@ -178,11 +196,15 @@ void _gtk_tree_selection_set_tree_view (GtkTreeSelection *selection, GtkTreeView *tree_view) { + GtkTreeSelectionPrivate *priv; + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); if (tree_view != NULL) g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); - selection->tree_view = tree_view; + priv = selection->priv; + + priv->tree_view = tree_view; } /** @@ -198,24 +220,26 @@ void gtk_tree_selection_set_mode (GtkTreeSelection *selection, GtkSelectionMode type) { + GtkTreeSelectionPrivate *priv; GtkTreeSelectionFunc tmp_func; + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - if (selection->type == type) + priv = selection->priv; + + if (priv->type == type) return; - if (type == GTK_SELECTION_NONE) { /* We do this so that we unconditionally unset all rows */ - tmp_func = selection->user_func; - selection->user_func = NULL; + tmp_func = priv->user_func; + priv->user_func = NULL; gtk_tree_selection_unselect_all (selection); - selection->user_func = tmp_func; + priv->user_func = tmp_func; - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - selection->tree_view->priv->anchor = NULL; + _gtk_tree_view_set_anchor_path (priv->tree_view, NULL); } else if (type == GTK_SELECTION_SINGLE || type == GTK_SELECTION_BROWSE) @@ -225,28 +249,25 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection, gint selected = FALSE; GtkTreePath *anchor_path = NULL; - if (selection->tree_view->priv->anchor) + anchor_path = _gtk_tree_view_get_anchor_path (priv->tree_view); + + if (anchor_path) { - anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); - - if (anchor_path) - { - _gtk_tree_view_find_node (selection->tree_view, - anchor_path, - &tree, - &node); - - if (node && GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) - selected = TRUE; - } + _gtk_tree_view_find_node (priv->tree_view, + anchor_path, + &tree, + &node); + + if (node && GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) + selected = TRUE; } /* We do this so that we unconditionally unset all rows */ - tmp_func = selection->user_func; - selection->user_func = NULL; + tmp_func = priv->user_func; + priv->user_func = NULL; gtk_tree_selection_unselect_all (selection); - selection->user_func = tmp_func; + priv->user_func = tmp_func; if (node && selected) _gtk_tree_selection_internal_select_node (selection, @@ -259,7 +280,7 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection, gtk_tree_path_free (anchor_path); } - selection->type = type; + priv->type = type; } /** @@ -276,7 +297,7 @@ gtk_tree_selection_get_mode (GtkTreeSelection *selection) { g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), GTK_SELECTION_SINGLE); - return selection->type; + return selection->priv->type; } /** @@ -299,14 +320,18 @@ gtk_tree_selection_set_select_function (GtkTreeSelection *selection, gpointer data, GDestroyNotify destroy) { + GtkTreeSelectionPrivate *priv; + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - if (selection->destroy) - selection->destroy (selection->user_data); + priv = selection->priv; - selection->user_func = func; - selection->user_data = data; - selection->destroy = destroy; + if (priv->destroy) + priv->destroy (priv->user_data); + + priv->user_func = func; + priv->user_data = data; + priv->destroy = destroy; } /** @@ -324,7 +349,7 @@ gtk_tree_selection_get_select_function (GtkTreeSelection *selection) { g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), NULL); - return selection->user_func; + return selection->priv->user_func; } /** @@ -340,7 +365,7 @@ gtk_tree_selection_get_user_data (GtkTreeSelection *selection) { g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), NULL); - return selection->user_data; + return selection->priv->user_data; } /** @@ -356,7 +381,7 @@ gtk_tree_selection_get_tree_view (GtkTreeSelection *selection) { g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), NULL); - return selection->tree_view; + return selection->priv->tree_view; } /** @@ -378,6 +403,7 @@ gtk_tree_selection_get_selected (GtkTreeSelection *selection, GtkTreeModel **model, GtkTreeIter *iter) { + GtkTreeSelectionPrivate *priv; GtkRBTree *tree; GtkRBNode *node; GtkTreePath *anchor_path; @@ -385,27 +411,27 @@ gtk_tree_selection_get_selected (GtkTreeSelection *selection, gboolean found_node; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), FALSE); - g_return_val_if_fail (selection->type != GTK_SELECTION_MULTIPLE, FALSE); - g_return_val_if_fail (selection->tree_view != NULL, FALSE); + + priv = selection->priv; + + g_return_val_if_fail (priv->type != GTK_SELECTION_MULTIPLE, FALSE); + g_return_val_if_fail (priv->tree_view != NULL, FALSE); /* Clear the iter */ if (iter) memset (iter, 0, sizeof (GtkTreeIter)); if (model) - *model = selection->tree_view->priv->model; + *model = gtk_tree_view_get_model (priv->tree_view); - if (selection->tree_view->priv->anchor == NULL) - return FALSE; - - anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); + anchor_path = _gtk_tree_view_get_anchor_path (priv->tree_view); if (anchor_path == NULL) return FALSE; retval = FALSE; - found_node = !_gtk_tree_view_find_node (selection->tree_view, + found_node = !_gtk_tree_view_find_node (priv->tree_view, anchor_path, &tree, &node); @@ -418,7 +444,7 @@ gtk_tree_selection_get_selected (GtkTreeSelection *selection, if (iter == NULL) retval = TRUE; else - retval = gtk_tree_model_get_iter (selection->tree_view->priv->model, + retval = gtk_tree_model_get_iter (gtk_tree_view_get_model (priv->tree_view), iter, anchor_path); } @@ -458,24 +484,29 @@ GList * gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection, GtkTreeModel **model) { + GtkTreeSelectionPrivate *priv; GList *list = NULL; GtkRBTree *tree = NULL; GtkRBNode *node = NULL; GtkTreePath *path; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), NULL); - g_return_val_if_fail (selection->tree_view != NULL, NULL); + + priv = selection->priv; + + g_return_val_if_fail (priv->tree_view != NULL, NULL); if (model) - *model = selection->tree_view->priv->model; + *model = gtk_tree_view_get_model (priv->tree_view); - if (selection->tree_view->priv->tree == NULL || - selection->tree_view->priv->tree->root == NULL) + tree = _gtk_tree_view_get_rbtree (priv->tree_view); + + if (tree == NULL || tree->root == NULL) return NULL; - if (selection->type == GTK_SELECTION_NONE) + if (priv->type == GTK_SELECTION_NONE) return NULL; - else if (selection->type != GTK_SELECTION_MULTIPLE) + else if (priv->type != GTK_SELECTION_MULTIPLE) { GtkTreeIter iter; @@ -483,7 +514,7 @@ gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection, { GtkTreePath *path; - path = gtk_tree_model_get_path (selection->tree_view->priv->model, &iter); + path = gtk_tree_model_get_path (gtk_tree_view_get_model (priv->tree_view), &iter); list = g_list_append (list, path); return list; @@ -492,8 +523,7 @@ gtk_tree_selection_get_selected_rows (GtkTreeSelection *selection, return NULL; } - tree = selection->tree_view->priv->tree; - node = selection->tree_view->priv->tree->root; + node = tree->root; while (node->left != tree->nil) node = node->left; @@ -581,17 +611,23 @@ gtk_tree_selection_count_selected_rows_helper (GtkRBTree *tree, gint gtk_tree_selection_count_selected_rows (GtkTreeSelection *selection) { + GtkTreeSelectionPrivate *priv; gint count = 0; + GtkRBTree *tree; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), 0); - g_return_val_if_fail (selection->tree_view != NULL, 0); - if (selection->tree_view->priv->tree == NULL || - selection->tree_view->priv->tree->root == NULL) + priv = selection->priv; + + g_return_val_if_fail (priv->tree_view != NULL, 0); + + tree = _gtk_tree_view_get_rbtree (priv->tree_view); + + if (tree == NULL || tree->root == NULL) return 0; - if (selection->type == GTK_SELECTION_SINGLE || - selection->type == GTK_SELECTION_BROWSE) + if (priv->type == GTK_SELECTION_SINGLE || + priv->type == GTK_SELECTION_BROWSE) { if (gtk_tree_selection_get_selected (selection, NULL, NULL)) return 1; @@ -599,8 +635,7 @@ gtk_tree_selection_count_selected_rows (GtkTreeSelection *selection) return 0; } - _gtk_rbtree_traverse (selection->tree_view->priv->tree, - selection->tree_view->priv->tree->root, + _gtk_rbtree_traverse (tree, tree->root, G_PRE_ORDER, gtk_tree_selection_count_selected_rows_helper, &count); @@ -632,6 +667,7 @@ gtk_tree_selection_selected_foreach (GtkTreeSelection *selection, GtkTreeSelectionForeachFunc func, gpointer data) { + GtkTreeSelectionPrivate *priv; GtkTreePath *path; GtkRBTree *tree; GtkRBNode *node; @@ -642,33 +678,37 @@ gtk_tree_selection_selected_foreach (GtkTreeSelection *selection, gboolean stop = FALSE; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); - if (func == NULL || - selection->tree_view->priv->tree == NULL || - selection->tree_view->priv->tree->root == NULL) + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + + tree = _gtk_tree_view_get_rbtree (priv->tree_view); + + if (func == NULL || tree == NULL || tree->root == NULL) return; - if (selection->type == GTK_SELECTION_SINGLE || - selection->type == GTK_SELECTION_BROWSE) + model = gtk_tree_view_get_model (priv->tree_view); + + if (priv->type == GTK_SELECTION_SINGLE || + priv->type == GTK_SELECTION_BROWSE) { - if (gtk_tree_row_reference_valid (selection->tree_view->priv->anchor)) + path = _gtk_tree_view_get_anchor_path (priv->tree_view); + + if (path) { - path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); - gtk_tree_model_get_iter (selection->tree_view->priv->model, &iter, path); - (* func) (selection->tree_view->priv->model, path, &iter, data); + gtk_tree_model_get_iter (model, &iter, path); + (* func) (model, path, &iter, data); gtk_tree_path_free (path); } return; } - tree = selection->tree_view->priv->tree; - node = selection->tree_view->priv->tree->root; + node = tree->root; while (node->left != tree->nil) node = node->left; - model = selection->tree_view->priv->model; g_object_ref (model); /* connect to signals to monitor changes in treemodel */ @@ -681,7 +721,7 @@ gtk_tree_selection_selected_foreach (GtkTreeSelection *selection, reordered_id = g_signal_connect_swapped (model, "rows-reordered", G_CALLBACK (model_changed), &stop); - changed_id = g_signal_connect_swapped (selection->tree_view, "notify::model", + changed_id = g_signal_connect_swapped (priv->tree_view, "notify::model", G_CALLBACK (model_changed), &stop); @@ -749,7 +789,7 @@ out: g_signal_handler_disconnect (model, inserted_id); g_signal_handler_disconnect (model, deleted_id); g_signal_handler_disconnect (model, reordered_id); - g_signal_handler_disconnect (selection->tree_view, changed_id); + g_signal_handler_disconnect (priv->tree_view, changed_id); g_object_unref (model); /* check if we have to spew a scary message */ @@ -771,16 +811,20 @@ void gtk_tree_selection_select_path (GtkTreeSelection *selection, GtkTreePath *path) { + GtkTreeSelectionPrivate *priv; GtkRBNode *node; GtkRBTree *tree; gboolean ret; GtkTreeSelectMode mode = 0; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); g_return_if_fail (path != NULL); - ret = _gtk_tree_view_find_node (selection->tree_view, + ret = _gtk_tree_view_find_node (priv->tree_view, path, &tree, &node); @@ -789,7 +833,7 @@ gtk_tree_selection_select_path (GtkTreeSelection *selection, ret == TRUE) return; - if (selection->type == GTK_SELECTION_MULTIPLE) + if (priv->type == GTK_SELECTION_MULTIPLE) mode = GTK_TREE_SELECT_MODE_TOGGLE; _gtk_tree_selection_internal_select_node (selection, @@ -811,15 +855,19 @@ void gtk_tree_selection_unselect_path (GtkTreeSelection *selection, GtkTreePath *path) { + GtkTreeSelectionPrivate *priv; GtkRBNode *node; GtkRBTree *tree; gboolean ret; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); g_return_if_fail (path != NULL); - ret = _gtk_tree_view_find_node (selection->tree_view, + ret = _gtk_tree_view_find_node (priv->tree_view, path, &tree, &node); @@ -847,15 +895,21 @@ void gtk_tree_selection_select_iter (GtkTreeSelection *selection, GtkTreeIter *iter) { + GtkTreeSelectionPrivate *priv; GtkTreePath *path; + GtkTreeModel *model; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); - g_return_if_fail (selection->tree_view->priv->model != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + + model = gtk_tree_view_get_model (priv->tree_view); + g_return_if_fail (model != NULL); g_return_if_fail (iter != NULL); - path = gtk_tree_model_get_path (selection->tree_view->priv->model, - iter); + path = gtk_tree_model_get_path (model, iter); if (path == NULL) return; @@ -876,15 +930,21 @@ void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection, GtkTreeIter *iter) { + GtkTreeSelectionPrivate *priv; GtkTreePath *path; + GtkTreeModel *model; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); - g_return_if_fail (selection->tree_view->priv->model != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + + model = gtk_tree_view_get_model (priv->tree_view); + g_return_if_fail (model != NULL); g_return_if_fail (iter != NULL); - path = gtk_tree_model_get_path (selection->tree_view->priv->model, - iter); + path = gtk_tree_model_get_path (model, iter); if (path == NULL) return; @@ -907,18 +967,22 @@ gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection, GtkTreePath *path) { + GtkTreeSelectionPrivate *priv; GtkRBNode *node; GtkRBTree *tree; gboolean ret; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), FALSE); - g_return_val_if_fail (path != NULL, FALSE); - g_return_val_if_fail (selection->tree_view != NULL, FALSE); - if (selection->tree_view->priv->model == NULL) + priv = selection->priv; + + g_return_val_if_fail (path != NULL, FALSE); + g_return_val_if_fail (priv->tree_view != NULL, FALSE); + + if (gtk_tree_view_get_model (priv->tree_view) == NULL) return FALSE; - ret = _gtk_tree_view_find_node (selection->tree_view, + ret = _gtk_tree_view_find_node (priv->tree_view, path, &tree, &node); @@ -943,15 +1007,22 @@ gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection, GtkTreeIter *iter) { + GtkTreeSelectionPrivate *priv; GtkTreePath *path; + GtkTreeModel *model; gboolean retval; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), FALSE); - g_return_val_if_fail (iter != NULL, FALSE); - g_return_val_if_fail (selection->tree_view != NULL, FALSE); - g_return_val_if_fail (selection->tree_view->priv->model != NULL, FALSE); - path = gtk_tree_model_get_path (selection->tree_view->priv->model, iter); + priv = selection->priv; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (priv->tree_view != NULL, FALSE); + + model = gtk_tree_view_get_model (priv->tree_view); + g_return_val_if_fail (model != NULL, FALSE); + + path = gtk_tree_model_get_path (model, iter); if (path == NULL) return FALSE; @@ -994,9 +1065,13 @@ select_all_helper (GtkRBTree *tree, static gint gtk_tree_selection_real_select_all (GtkTreeSelection *selection) { + GtkTreeSelectionPrivate *priv = selection->priv; struct _TempTuple *tuple; + GtkRBTree *tree; - if (selection->tree_view->priv->tree == NULL) + tree = _gtk_tree_view_get_rbtree (priv->tree_view); + + if (tree == NULL) return FALSE; /* Mark all nodes selected */ @@ -1004,8 +1079,7 @@ gtk_tree_selection_real_select_all (GtkTreeSelection *selection) tuple->selection = selection; tuple->dirty = FALSE; - _gtk_rbtree_traverse (selection->tree_view->priv->tree, - selection->tree_view->priv->tree->root, + _gtk_rbtree_traverse (tree, tree->root, G_PRE_ORDER, select_all_helper, tuple); @@ -1028,13 +1102,19 @@ gtk_tree_selection_real_select_all (GtkTreeSelection *selection) void gtk_tree_selection_select_all (GtkTreeSelection *selection) { - g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); + GtkTreeSelectionPrivate *priv; - if (selection->tree_view->priv->tree == NULL || selection->tree_view->priv->model == NULL) + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + + if (_gtk_tree_view_get_rbtree (priv->tree_view) == NULL || + gtk_tree_view_get_model (priv->tree_view) == NULL) return; - g_return_if_fail (selection->type == GTK_SELECTION_MULTIPLE); + g_return_if_fail (priv->type == GTK_SELECTION_MULTIPLE); if (gtk_tree_selection_real_select_all (selection)) g_signal_emit (selection, tree_selection_signals[CHANGED], 0); @@ -1062,24 +1142,22 @@ unselect_all_helper (GtkRBTree *tree, static gboolean gtk_tree_selection_real_unselect_all (GtkTreeSelection *selection) { + GtkTreeSelectionPrivate *priv = selection->priv; struct _TempTuple *tuple; - if (selection->type == GTK_SELECTION_SINGLE || - selection->type == GTK_SELECTION_BROWSE) + if (priv->type == GTK_SELECTION_SINGLE || + priv->type == GTK_SELECTION_BROWSE) { GtkRBTree *tree = NULL; GtkRBNode *node = NULL; GtkTreePath *anchor_path; - if (selection->tree_view->priv->anchor == NULL) - return FALSE; - - anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); + anchor_path = _gtk_tree_view_get_anchor_path (priv->tree_view); if (anchor_path == NULL) return FALSE; - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, anchor_path, &tree, &node); @@ -1093,8 +1171,7 @@ gtk_tree_selection_real_unselect_all (GtkTreeSelection *selection) { if (gtk_tree_selection_real_select_node (selection, tree, node, FALSE)) { - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - selection->tree_view->priv->anchor = NULL; + _gtk_tree_view_set_anchor_path (priv->tree_view, NULL); return TRUE; } } @@ -1102,12 +1179,14 @@ gtk_tree_selection_real_unselect_all (GtkTreeSelection *selection) } else { + GtkRBTree *tree; + tuple = g_new (struct _TempTuple, 1); tuple->selection = selection; tuple->dirty = FALSE; - _gtk_rbtree_traverse (selection->tree_view->priv->tree, - selection->tree_view->priv->tree->root, + tree = _gtk_tree_view_get_rbtree (priv->tree_view); + _gtk_rbtree_traverse (tree, tree->root, G_PRE_ORDER, unselect_all_helper, tuple); @@ -1131,10 +1210,16 @@ gtk_tree_selection_real_unselect_all (GtkTreeSelection *selection) void gtk_tree_selection_unselect_all (GtkTreeSelection *selection) { - g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); + GtkTreeSelectionPrivate *priv; - if (selection->tree_view->priv->tree == NULL || selection->tree_view->priv->model == NULL) + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + + if (_gtk_tree_view_get_rbtree (priv->tree_view) == NULL || + gtk_tree_view_get_model (priv->tree_view) == NULL) return; if (gtk_tree_selection_real_unselect_all (selection)) @@ -1153,6 +1238,7 @@ gtk_tree_selection_real_modify_range (GtkTreeSelection *selection, GtkTreePath *start_path, GtkTreePath *end_path) { + GtkTreeSelectionPrivate *priv = selection->priv; GtkRBNode *start_node, *end_node; GtkRBTree *start_tree, *end_tree; GtkTreePath *anchor_path = NULL; @@ -1161,18 +1247,18 @@ gtk_tree_selection_real_modify_range (GtkTreeSelection *selection, switch (gtk_tree_path_compare (start_path, end_path)) { case 1: - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, end_path, &start_tree, &start_node); - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, start_path, &end_tree, &end_node); anchor_path = start_path; break; case 0: - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, start_path, &start_tree, &start_node); @@ -1181,11 +1267,11 @@ gtk_tree_selection_real_modify_range (GtkTreeSelection *selection, anchor_path = start_path; break; case -1: - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, start_path, &start_tree, &start_node); - _gtk_tree_view_find_node (selection->tree_view, + _gtk_tree_view_find_node (priv->tree_view, end_path, &end_tree, &end_node); @@ -1197,15 +1283,7 @@ gtk_tree_selection_real_modify_range (GtkTreeSelection *selection, g_return_val_if_fail (end_node != NULL, FALSE); if (anchor_path) - { - if (selection->tree_view->priv->anchor) - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), - selection->tree_view->priv->model, - anchor_path); - } + _gtk_tree_view_set_anchor_path (priv->tree_view, anchor_path); do { @@ -1251,10 +1329,15 @@ gtk_tree_selection_select_range (GtkTreeSelection *selection, GtkTreePath *start_path, GtkTreePath *end_path) { + GtkTreeSelectionPrivate *priv; + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); - g_return_if_fail (selection->type == GTK_SELECTION_MULTIPLE); - g_return_if_fail (selection->tree_view->priv->model != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + g_return_if_fail (priv->type == GTK_SELECTION_MULTIPLE); + g_return_if_fail (gtk_tree_view_get_model (priv->tree_view) != NULL); if (gtk_tree_selection_real_modify_range (selection, RANGE_SELECT, start_path, end_path)) g_signal_emit (selection, tree_selection_signals[CHANGED], 0); @@ -1276,9 +1359,14 @@ gtk_tree_selection_unselect_range (GtkTreeSelection *selection, GtkTreePath *start_path, GtkTreePath *end_path) { + GtkTreeSelectionPrivate *priv; + g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); - g_return_if_fail (selection->tree_view != NULL); - g_return_if_fail (selection->tree_view->priv->model != NULL); + + priv = selection->priv; + + g_return_if_fail (priv->tree_view != NULL); + g_return_if_fail (gtk_tree_view_get_model (priv->tree_view) != NULL); if (gtk_tree_selection_real_modify_range (selection, RANGE_UNSELECT, start_path, end_path)) g_signal_emit (selection, tree_selection_signals[CHANGED], 0); @@ -1289,25 +1377,32 @@ _gtk_tree_selection_row_is_selectable (GtkTreeSelection *selection, GtkRBNode *node, GtkTreePath *path) { + GtkTreeSelectionPrivate *priv = selection->priv; GtkTreeIter iter; + GtkTreeModel *model; + GtkTreeViewRowSeparatorFunc separator_func; + gpointer separator_data; gboolean sensitive = FALSE; - if (!gtk_tree_model_get_iter (selection->tree_view->priv->model, &iter, path)) + model = gtk_tree_view_get_model (priv->tree_view); + + _gtk_tree_view_get_row_separator_func (priv->tree_view, + &separator_func, &separator_data); + + if (!gtk_tree_model_get_iter (model, &iter, path)) sensitive = TRUE; - if (!sensitive && selection->tree_view->priv->row_separator_func) + if (!sensitive && separator_func) { /* never allow separators to be selected */ - if ((* selection->tree_view->priv->row_separator_func) (selection->tree_view->priv->model, - &iter, - selection->tree_view->priv->row_separator_data)) + if ((* separator_func) (model, &iter, separator_data)) return FALSE; } - if (selection->user_func) - return (*selection->user_func) (selection, selection->tree_view->priv->model, path, + if (priv->user_func) + return (*priv->user_func) (selection, model, path, GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED), - selection->user_data); + priv->user_data); else return TRUE; } @@ -1329,26 +1424,26 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, GtkTreeSelectMode mode, gboolean override_browse_mode) { + GtkTreeSelectionPrivate *priv = selection->priv; gint flags; gint dirty = FALSE; GtkTreePath *anchor_path = NULL; - if (selection->type == GTK_SELECTION_NONE) + if (priv->type == GTK_SELECTION_NONE) return; - if (selection->tree_view->priv->anchor) - anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); + anchor_path = _gtk_tree_view_get_anchor_path (priv->tree_view); - if (selection->type == GTK_SELECTION_SINGLE || - selection->type == GTK_SELECTION_BROWSE) + if (priv->type == GTK_SELECTION_SINGLE || + priv->type == GTK_SELECTION_BROWSE) { /* just unselect */ - if (selection->type == GTK_SELECTION_BROWSE && override_browse_mode) + if (priv->type == GTK_SELECTION_BROWSE && override_browse_mode) { dirty = gtk_tree_selection_real_unselect_all (selection); } /* Did we try to select the same node again? */ - else if (selection->type == GTK_SELECTION_SINGLE && + else if (priv->type == GTK_SELECTION_SINGLE && anchor_path && gtk_tree_path_compare (path, anchor_path) == 0) { if ((mode & GTK_TREE_SELECT_MODE_TOGGLE) == GTK_TREE_SELECT_MODE_TOGGLE) @@ -1374,17 +1469,11 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, * old one, and can then select the new one */ if (dirty) { - if (selection->tree_view->priv->anchor) - { - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - selection->tree_view->priv->anchor = NULL; - } + + _gtk_tree_view_set_anchor_path (priv->tree_view, NULL); if (gtk_tree_selection_real_select_node (selection, tree, node, TRUE)) - { - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), selection->tree_view->priv->model, path); - } + _gtk_tree_view_set_anchor_path (priv->tree_view, path); } } else @@ -1392,25 +1481,19 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, if (gtk_tree_selection_real_select_node (selection, tree, node, TRUE)) { dirty = TRUE; - if (selection->tree_view->priv->anchor) - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), selection->tree_view->priv->model, path); + _gtk_tree_view_set_anchor_path (priv->tree_view, path); } } } } - else if (selection->type == GTK_SELECTION_MULTIPLE) + else if (priv->type == GTK_SELECTION_MULTIPLE) { if ((mode & GTK_TREE_SELECT_MODE_EXTEND) == GTK_TREE_SELECT_MODE_EXTEND && (anchor_path == NULL)) { - if (selection->tree_view->priv->anchor) - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); + _gtk_tree_view_set_anchor_path (priv->tree_view, path); - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), selection->tree_view->priv->model, path); dirty = gtk_tree_selection_real_select_node (selection, tree, node, TRUE); } else if ((mode & (GTK_TREE_SELECT_MODE_EXTEND | GTK_TREE_SELECT_MODE_TOGGLE)) == (GTK_TREE_SELECT_MODE_EXTEND | GTK_TREE_SELECT_MODE_TOGGLE)) @@ -1422,11 +1505,8 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, else if ((mode & GTK_TREE_SELECT_MODE_TOGGLE) == GTK_TREE_SELECT_MODE_TOGGLE) { flags = node->flags; - if (selection->tree_view->priv->anchor) - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), selection->tree_view->priv->model, path); + _gtk_tree_view_set_anchor_path (priv->tree_view, path); if ((flags & GTK_RBNODE_IS_SELECTED) == GTK_RBNODE_IS_SELECTED) dirty |= gtk_tree_selection_real_select_node (selection, tree, node, FALSE); @@ -1445,11 +1525,7 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, { dirty = gtk_tree_selection_real_unselect_all (selection); - if (selection->tree_view->priv->anchor) - gtk_tree_row_reference_free (selection->tree_view->priv->anchor); - - selection->tree_view->priv->anchor = - gtk_tree_row_reference_new_proxy (G_OBJECT (selection->tree_view), selection->tree_view->priv->model, path); + _gtk_tree_view_set_anchor_path (priv->tree_view, path); dirty |= gtk_tree_selection_real_select_node (selection, tree, node, TRUE); } @@ -1478,6 +1554,7 @@ gtk_tree_selection_real_select_node (GtkTreeSelection *selection, GtkRBNode *node, gboolean select) { + GtkTreeSelectionPrivate *priv = selection->priv; gboolean toggle = FALSE; GtkTreePath *path = NULL; @@ -1485,7 +1562,7 @@ gtk_tree_selection_real_select_node (GtkTreeSelection *selection, if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) != select) { - path = _gtk_tree_view_find_path (selection->tree_view, tree, node); + path = _gtk_tree_view_find_path (priv->tree_view, tree, node); toggle = _gtk_tree_selection_row_is_selectable (selection, node, path); gtk_tree_path_free (path); } @@ -1494,8 +1571,8 @@ gtk_tree_selection_real_select_node (GtkTreeSelection *selection, { node->flags ^= GTK_RBNODE_IS_SELECTED; - _gtk_tree_view_queue_draw_node (selection->tree_view, tree, node, NULL); - + _gtk_tree_view_queue_draw_node (priv->tree_view, tree, node, NULL); + return TRUE; } diff --git a/gtk/gtktreeselection.h b/gtk/gtktreeselection.h index 38a1f702e3..9dfdb9f5d2 100644 --- a/gtk/gtktreeselection.h +++ b/gtk/gtktreeselection.h @@ -36,13 +36,15 @@ G_BEGIN_DECLS #define GTK_IS_TREE_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_SELECTION)) #define GTK_TREE_SELECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_SELECTION, GtkTreeSelectionClass)) +typedef struct _GtkTreeSelectionPrivate GtkTreeSelectionPrivate; + /** * GtkTreeSelectionFunc: * @selection: A #GtkTreeSelection * @model: A #GtkTreeModel being viewed * @path: The #GtkTreePath of the row in question * @path_currently_selected: %TRUE, if the path is currently selected - * @data: user data + * @data: (closure): user data * * A function used by gtk_tree_selection_set_select_function() to filter * whether or not a row may be selected. It is called whenever a row's @@ -62,7 +64,7 @@ typedef gboolean (* GtkTreeSelectionFunc) (GtkTreeSelection *selection, * @model: The #GtkTreeModel being viewed * @path: The #GtkTreePath of a selected row * @iter: A #GtkTreeIter pointing to a selected row - * @data: user data + * @data: (closure): user data * * A function used by gtk_tree_selection_selected_foreach() to map all * selected rows. It will be called on every selected row in the view. @@ -74,15 +76,10 @@ typedef void (* GtkTreeSelectionForeachFunc) (GtkTreeModel *model, struct _GtkTreeSelection { + /*< private >*/ GObject parent; - /*< private >*/ - - GtkTreeView *GSEAL (tree_view); - GtkSelectionMode GSEAL (type); - GtkTreeSelectionFunc GSEAL (user_func); - gpointer GSEAL (user_data); - GDestroyNotify GSEAL (destroy); + GtkTreeSelectionPrivate *priv; }; struct _GtkTreeSelectionClass diff --git a/gtk/gtktreesortable.h b/gtk/gtktreesortable.h index c9ce6e787a..ccd8bc2bc9 100644 --- a/gtk/gtktreesortable.h +++ b/gtk/gtktreesortable.h @@ -27,7 +27,6 @@ #include #include -#include G_BEGIN_DECLS diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index 05567396a0..4a4fd81050 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -62,10 +62,26 @@ * */ +struct _GtkTreeStorePrivate +{ + gint stamp; + gpointer root; + gpointer last; + gint n_columns; + gint sort_column_id; + GList *sort_list; + GtkSortType order; + GType *column_headers; + GtkTreeIterCompareFunc default_sort_func; + gpointer default_sort_data; + GDestroyNotify default_sort_destroy; + guint columns_dirty : 1; +}; + #define G_NODE(node) ((GNode *)node) -#define GTK_TREE_STORE_IS_SORTED(tree) (((GtkTreeStore*)(tree))->sort_column_id != GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) -#define VALID_ITER(iter, tree_store) ((iter)!= NULL && (iter)->user_data != NULL && ((GtkTreeStore*)(tree_store))->stamp == (iter)->stamp) +#define GTK_TREE_STORE_IS_SORTED(tree) (((GtkTreeStore*)(tree))->priv->sort_column_id != GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) +#define VALID_ITER(iter, tree_store) ((iter)!= NULL && (iter)->user_data != NULL && ((GtkTreeStore*)(tree_store))->priv->stamp == (iter)->stamp) static void gtk_tree_store_tree_model_init (GtkTreeModelIface *iface); static void gtk_tree_store_drag_source_init(GtkTreeDragSourceIface *iface); @@ -88,6 +104,8 @@ static void gtk_tree_store_get_value (GtkTreeModel *tree_mode GValue *value); static gboolean gtk_tree_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter); +static gboolean gtk_tree_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter); static gboolean gtk_tree_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); @@ -180,9 +198,9 @@ validate_tree (GtkTreeStore *tree_store) { if (gtk_get_debug_flags () & GTK_DEBUG_TREE) { - g_assert (G_NODE (tree_store->root)->parent == NULL); + g_assert (G_NODE (tree_store->priv->root)->parent == NULL); - validate_gnode (G_NODE (tree_store->root)); + validate_gnode (G_NODE (tree_store->priv->root)); } } @@ -206,6 +224,8 @@ gtk_tree_store_class_init (GtkTreeStoreClass *class) object_class = (GObjectClass *) class; object_class->finalize = gtk_tree_store_finalize; + + g_type_class_add_private (class, sizeof (GtkTreeStorePrivate)); } static void @@ -218,6 +238,7 @@ gtk_tree_store_tree_model_init (GtkTreeModelIface *iface) iface->get_path = gtk_tree_store_get_path; iface->get_value = gtk_tree_store_get_value; iface->iter_next = gtk_tree_store_iter_next; + iface->iter_previous = gtk_tree_store_iter_previous; iface->iter_children = gtk_tree_store_iter_children; iface->iter_has_child = gtk_tree_store_iter_has_child; iface->iter_n_children = gtk_tree_store_iter_n_children; @@ -260,18 +281,23 @@ gtk_tree_store_buildable_init (GtkBuildableIface *iface) static void gtk_tree_store_init (GtkTreeStore *tree_store) { - tree_store->root = g_node_new (NULL); - /* While the odds are against us getting 0... - */ + GtkTreeStorePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE (tree_store, + GTK_TYPE_TREE_STORE, + GtkTreeStorePrivate); + tree_store->priv = priv; + priv->root = g_node_new (NULL); + /* While the odds are against us getting 0... */ do { - tree_store->stamp = g_random_int (); + priv->stamp = g_random_int (); } - while (tree_store->stamp == 0); + while (priv->stamp == 0); - tree_store->sort_list = NULL; - tree_store->sort_column_id = GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID; - tree_store->columns_dirty = FALSE; + priv->sort_list = NULL; + priv->sort_column_id = GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID; + priv->columns_dirty = FALSE; } /** @@ -375,7 +401,7 @@ gtk_tree_store_set_column_types (GtkTreeStore *tree_store, gint i; g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); - g_return_if_fail (tree_store->columns_dirty == 0); + g_return_if_fail (tree_store->priv->columns_dirty == 0); gtk_tree_store_set_n_columns (tree_store, n_columns); for (i = 0; i < n_columns; i++) @@ -393,20 +419,21 @@ static void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store, gint n_columns) { + GtkTreeStorePrivate *priv = tree_store->priv; int i; - if (tree_store->n_columns == n_columns) + if (priv->n_columns == n_columns) return; - tree_store->column_headers = g_renew (GType, tree_store->column_headers, n_columns); - for (i = tree_store->n_columns; i < n_columns; i++) - tree_store->column_headers[i] = G_TYPE_INVALID; - tree_store->n_columns = n_columns; + priv->column_headers = g_renew (GType, priv->column_headers, n_columns); + for (i = priv->n_columns; i < n_columns; i++) + priv->column_headers[i] = G_TYPE_INVALID; + priv->n_columns = n_columns; - if (tree_store->sort_list) - _gtk_tree_data_list_header_free (tree_store->sort_list); + if (priv->sort_list) + _gtk_tree_data_list_header_free (priv->sort_list); - tree_store->sort_list = _gtk_tree_data_list_header_new (n_columns, tree_store->column_headers); + priv->sort_list = _gtk_tree_data_list_header_new (n_columns, priv->column_headers); } /** @@ -426,12 +453,14 @@ gtk_tree_store_set_column_type (GtkTreeStore *tree_store, gint column, GType type) { + GtkTreeStorePrivate *priv = tree_store->priv; + if (!_gtk_tree_data_list_check_type (type)) { g_warning ("%s: Invalid type %s\n", G_STRLOC, g_type_name (type)); return; } - tree_store->column_headers[column] = type; + priv->column_headers[column] = type; } static gboolean @@ -448,20 +477,21 @@ static void gtk_tree_store_finalize (GObject *object) { GtkTreeStore *tree_store = GTK_TREE_STORE (object); + GtkTreeStorePrivate *priv = tree_store->priv; - g_node_traverse (tree_store->root, G_POST_ORDER, G_TRAVERSE_ALL, -1, - node_free, tree_store->column_headers); - g_node_destroy (tree_store->root); - _gtk_tree_data_list_header_free (tree_store->sort_list); - g_free (tree_store->column_headers); + g_node_traverse (priv->root, G_POST_ORDER, G_TRAVERSE_ALL, -1, + node_free, priv->column_headers); + g_node_destroy (priv->root); + _gtk_tree_data_list_header_free (priv->sort_list); + g_free (priv->column_headers); - if (tree_store->default_sort_destroy) + if (priv->default_sort_destroy) { - GDestroyNotify d = tree_store->default_sort_destroy; + GDestroyNotify d = priv->default_sort_destroy; - tree_store->default_sort_destroy = NULL; - d (tree_store->default_sort_data); - tree_store->default_sort_data = NULL; + priv->default_sort_destroy = NULL; + d (priv->default_sort_data); + priv->default_sort_data = NULL; } /* must chain up */ @@ -485,10 +515,11 @@ static gint gtk_tree_store_get_n_columns (GtkTreeModel *tree_model) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; - return tree_store->n_columns; + return priv->n_columns; } static GType @@ -496,12 +527,13 @@ gtk_tree_store_get_column_type (GtkTreeModel *tree_model, gint index) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; - g_return_val_if_fail (index < tree_store->n_columns, G_TYPE_INVALID); + g_return_val_if_fail (index < priv->n_columns, G_TYPE_INVALID); - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; - return tree_store->column_headers[index]; + return priv->column_headers[index]; } static gboolean @@ -510,19 +542,20 @@ gtk_tree_store_get_iter (GtkTreeModel *tree_model, GtkTreePath *path) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreeIter parent; gint *indices; gint depth, i; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; indices = gtk_tree_path_get_indices (path); depth = gtk_tree_path_get_depth (path); g_return_val_if_fail (depth > 0, FALSE); - parent.stamp = tree_store->stamp; - parent.user_data = tree_store->root; + parent.stamp = priv->stamp; + parent.user_data = priv->root; if (!gtk_tree_store_iter_nth_child (tree_model, iter, &parent, indices[0])) return FALSE; @@ -542,24 +575,25 @@ gtk_tree_store_get_path (GtkTreeModel *tree_model, GtkTreeIter *iter) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *retval; GNode *tmp_node; gint i = 0; g_return_val_if_fail (iter->user_data != NULL, NULL); - g_return_val_if_fail (iter->stamp == tree_store->stamp, NULL); + g_return_val_if_fail (iter->stamp == priv->stamp, NULL); validate_tree (tree_store); if (G_NODE (iter->user_data)->parent == NULL && - G_NODE (iter->user_data) == tree_store->root) + G_NODE (iter->user_data) == priv->root) return gtk_tree_path_new (); g_assert (G_NODE (iter->user_data)->parent != NULL); - if (G_NODE (iter->user_data)->parent == G_NODE (tree_store->root)) + if (G_NODE (iter->user_data)->parent == G_NODE (priv->root)) { retval = gtk_tree_path_new (); - tmp_node = G_NODE (tree_store->root)->children; + tmp_node = G_NODE (priv->root)->children; } else { @@ -608,10 +642,11 @@ gtk_tree_store_get_value (GtkTreeModel *tree_model, GValue *value) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreeDataList *list; gint tmp_column = column; - g_return_if_fail (column < tree_store->n_columns); + g_return_if_fail (column < priv->n_columns); g_return_if_fail (VALID_ITER (iter, tree_store)); list = G_NODE (iter->user_data)->data; @@ -622,13 +657,13 @@ gtk_tree_store_get_value (GtkTreeModel *tree_model, if (list) { _gtk_tree_data_list_node_to_value (list, - tree_store->column_headers[column], + priv->column_headers[column], value); } else { /* We want to return an initialized but empty (default) value */ - g_value_init (value, tree_store->column_headers[column]); + g_value_init (value, priv->column_headers[column]); } } @@ -637,18 +672,35 @@ gtk_tree_store_iter_next (GtkTreeModel *tree_model, GtkTreeIter *iter) { g_return_val_if_fail (iter->user_data != NULL, FALSE); - g_return_val_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->stamp, FALSE); + g_return_val_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->priv->stamp, FALSE); - if (G_NODE (iter->user_data)->next) - { - iter->user_data = G_NODE (iter->user_data)->next; - return TRUE; - } - else + if (G_NODE (iter->user_data)->next == NULL) { iter->stamp = 0; return FALSE; } + + iter->user_data = G_NODE (iter->user_data)->next; + + return TRUE; +} + +static gboolean +gtk_tree_store_iter_previous (GtkTreeModel *tree_model, + GtkTreeIter *iter) +{ + g_return_val_if_fail (iter->user_data != NULL, FALSE); + g_return_val_if_fail (iter->stamp == GTK_TREE_STORE (tree_model)->priv->stamp, FALSE); + + if (G_NODE (iter->user_data)->prev == NULL) + { + iter->stamp = 0; + return FALSE; + } + + iter->user_data = G_NODE (iter->user_data)->prev; + + return TRUE; } static gboolean @@ -657,6 +709,7 @@ gtk_tree_store_iter_children (GtkTreeModel *tree_model, GtkTreeIter *parent) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GNode *children; if (parent) @@ -665,11 +718,11 @@ gtk_tree_store_iter_children (GtkTreeModel *tree_model, if (parent) children = G_NODE (parent->user_data)->children; else - children = G_NODE (tree_store->root)->children; + children = G_NODE (priv->root)->children; if (children) { - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = children; return TRUE; } @@ -700,7 +753,7 @@ gtk_tree_store_iter_n_children (GtkTreeModel *tree_model, g_return_val_if_fail (iter == NULL || iter->user_data != NULL, 0); if (iter == NULL) - node = G_NODE (GTK_TREE_STORE (tree_model)->root)->children; + node = G_NODE (GTK_TREE_STORE (tree_model)->priv->root)->children; else node = G_NODE (iter->user_data)->children; @@ -720,13 +773,14 @@ gtk_tree_store_iter_nth_child (GtkTreeModel *tree_model, gint n) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GNode *parent_node; GNode *child; g_return_val_if_fail (parent == NULL || parent->user_data != NULL, FALSE); if (parent == NULL) - parent_node = tree_store->root; + parent_node = priv->root; else parent_node = parent->user_data; @@ -735,7 +789,7 @@ gtk_tree_store_iter_nth_child (GtkTreeModel *tree_model, if (child) { iter->user_data = child; - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; return TRUE; } else @@ -751,6 +805,7 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model, GtkTreeIter *child) { GtkTreeStore *tree_store = (GtkTreeStore *) tree_model; + GtkTreeStorePrivate *priv = tree_store->priv; GNode *parent; g_return_val_if_fail (iter != NULL, FALSE); @@ -760,10 +815,10 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model, g_assert (parent != NULL); - if (parent != tree_store->root) + if (parent != priv->root) { iter->user_data = parent; - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; return TRUE; } else @@ -782,22 +837,23 @@ gtk_tree_store_real_set_value (GtkTreeStore *tree_store, GValue *value, gboolean sort) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreeDataList *list; GtkTreeDataList *prev; gint old_column = column; - GValue real_value = {0, }; + GValue real_value = { 0, }; gboolean converted = FALSE; gboolean retval = FALSE; - if (! g_type_is_a (G_VALUE_TYPE (value), tree_store->column_headers[column])) + if (! g_type_is_a (G_VALUE_TYPE (value), priv->column_headers[column])) { - if (! (g_value_type_compatible (G_VALUE_TYPE (value), tree_store->column_headers[column]) && - g_value_type_compatible (tree_store->column_headers[column], G_VALUE_TYPE (value)))) + if (! (g_value_type_compatible (G_VALUE_TYPE (value), priv->column_headers[column]) && + g_value_type_compatible (priv->column_headers[column], G_VALUE_TYPE (value)))) { g_warning ("%s: Unable to convert from %s to %s\n", G_STRLOC, g_type_name (G_VALUE_TYPE (value)), - g_type_name (tree_store->column_headers[column])); + g_type_name (priv->column_headers[column])); return retval; } if (!g_value_transform (value, &real_value)) @@ -805,7 +861,7 @@ gtk_tree_store_real_set_value (GtkTreeStore *tree_store, g_warning ("%s: Unable to make conversion from %s to %s\n", G_STRLOC, g_type_name (G_VALUE_TYPE (value)), - g_type_name (tree_store->column_headers[column])); + g_type_name (priv->column_headers[column])); g_value_unset (&real_value); return retval; } @@ -889,7 +945,7 @@ gtk_tree_store_set_value (GtkTreeStore *tree_store, { g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); g_return_if_fail (VALID_ITER (iter, tree_store)); - g_return_if_fail (column >= 0 && column < tree_store->n_columns); + g_return_if_fail (column >= 0 && column < tree_store->priv->n_columns); g_return_if_fail (G_IS_VALUE (value)); if (gtk_tree_store_real_set_value (tree_store, iter, column, value, TRUE)) @@ -905,22 +961,23 @@ gtk_tree_store_set_value (GtkTreeStore *tree_store, static GtkTreeIterCompareFunc gtk_tree_store_get_compare_func (GtkTreeStore *tree_store) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreeIterCompareFunc func = NULL; if (GTK_TREE_STORE_IS_SORTED (tree_store)) { - if (tree_store->sort_column_id != -1) + if (priv->sort_column_id != -1) { GtkTreeDataSortHeader *header; - header = _gtk_tree_data_list_get_header (tree_store->sort_list, - tree_store->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); g_return_val_if_fail (header != NULL, NULL); g_return_val_if_fail (header->func != NULL, NULL); func = header->func; } else { - func = tree_store->default_sort_func; + func = priv->default_sort_func; } } @@ -936,6 +993,7 @@ gtk_tree_store_set_vector_internal (GtkTreeStore *tree_store, GValue *values, gint n_values) { + GtkTreeStorePrivate *priv = tree_store->priv; gint i; GtkTreeIterCompareFunc func = NULL; @@ -950,7 +1008,7 @@ gtk_tree_store_set_vector_internal (GtkTreeStore *tree_store, FALSE) || *emit_signal; if (func == _gtk_tree_data_list_compare_func && - columns[i] == tree_store->sort_column_id) + columns[i] == priv->sort_column_id) *maybe_need_sort = TRUE; } } @@ -962,6 +1020,7 @@ gtk_tree_store_set_valist_internal (GtkTreeStore *tree_store, gboolean *maybe_need_sort, va_list var_args) { + GtkTreeStorePrivate *priv = tree_store->priv; gint column; GtkTreeIterCompareFunc func = NULL; @@ -976,12 +1035,12 @@ gtk_tree_store_set_valist_internal (GtkTreeStore *tree_store, GValue value = { 0, }; gchar *error = NULL; - if (column < 0 || column >= tree_store->n_columns) + if (column < 0 || column >= priv->n_columns) { g_warning ("%s: Invalid column number %d added to iter (remember to end your list of columns with a -1)", G_STRLOC, column); break; } - g_value_init (&value, tree_store->column_headers[column]); + g_value_init (&value, priv->column_headers[column]); G_VALUE_COLLECT (&value, var_args, 0, &error); if (error) @@ -1002,7 +1061,7 @@ gtk_tree_store_set_valist_internal (GtkTreeStore *tree_store, FALSE) || *emit_signal; if (func == _gtk_tree_data_list_compare_func && - column == tree_store->sort_column_id) + column == priv->sort_column_id) *maybe_need_sort = TRUE; g_value_unset (&value); @@ -1033,6 +1092,7 @@ gtk_tree_store_set_valuesv (GtkTreeStore *tree_store, GValue *values, gint n_values) { + GtkTreeStorePrivate *priv = tree_store->priv; gboolean emit_signal = FALSE; gboolean maybe_need_sort = FALSE; @@ -1045,7 +1105,7 @@ gtk_tree_store_set_valuesv (GtkTreeStore *tree_store, columns, values, n_values); if (maybe_need_sort && GTK_TREE_STORE_IS_SORTED (tree_store)) - gtk_tree_store_sort_iter_changed (tree_store, iter, tree_store->sort_column_id, TRUE); + gtk_tree_store_sort_iter_changed (tree_store, iter, priv->sort_column_id, TRUE); if (emit_signal) { @@ -1072,6 +1132,7 @@ gtk_tree_store_set_valist (GtkTreeStore *tree_store, GtkTreeIter *iter, va_list var_args) { + GtkTreeStorePrivate *priv = tree_store->priv; gboolean emit_signal = FALSE; gboolean maybe_need_sort = FALSE; @@ -1084,7 +1145,7 @@ gtk_tree_store_set_valist (GtkTreeStore *tree_store, var_args); if (maybe_need_sort && GTK_TREE_STORE_IS_SORTED (tree_store)) - gtk_tree_store_sort_iter_changed (tree_store, iter, tree_store->sort_column_id, TRUE); + gtk_tree_store_sort_iter_changed (tree_store, iter, priv->sort_column_id, TRUE); if (emit_signal) { @@ -1139,6 +1200,7 @@ gboolean gtk_tree_store_remove (GtkTreeStore *tree_store, GtkTreeIter *iter) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GtkTreeIter new_iter = {0,}; GNode *parent; @@ -1154,21 +1216,21 @@ gtk_tree_store_remove (GtkTreeStore *tree_store, if (G_NODE (iter->user_data)->data) g_node_traverse (G_NODE (iter->user_data), G_POST_ORDER, G_TRAVERSE_ALL, - -1, node_free, tree_store->column_headers); + -1, node_free, priv->column_headers); path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); g_node_destroy (G_NODE (iter->user_data)); gtk_tree_model_row_deleted (GTK_TREE_MODEL (tree_store), path); - if (parent != G_NODE (tree_store->root)) + if (parent != G_NODE (priv->root)) { /* child_toggled */ if (parent->children == NULL) { gtk_tree_path_up (path); - new_iter.stamp = tree_store->stamp; + new_iter.stamp = priv->stamp; new_iter.user_data = parent; gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (tree_store), path, &new_iter); } @@ -1178,7 +1240,7 @@ gtk_tree_store_remove (GtkTreeStore *tree_store, /* revalidate iter */ if (next_node != NULL) { - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = next_node; return TRUE; } @@ -1213,6 +1275,7 @@ gtk_tree_store_insert (GtkTreeStore *tree_store, GtkTreeIter *parent, gint position) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GNode *parent_node; GNode *new_node; @@ -1225,20 +1288,20 @@ gtk_tree_store_insert (GtkTreeStore *tree_store, if (parent) parent_node = parent->user_data; else - parent_node = tree_store->root; + parent_node = priv->root; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; new_node = g_node_new (NULL); - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = new_node; g_node_insert (parent_node, position, new_node); path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { if (new_node->prev == NULL && new_node->next == NULL) { @@ -1276,6 +1339,7 @@ gtk_tree_store_insert_before (GtkTreeStore *tree_store, GtkTreeIter *parent, GtkTreeIter *sibling) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GNode *parent_node = NULL; GNode *new_node; @@ -1288,7 +1352,7 @@ gtk_tree_store_insert_before (GtkTreeStore *tree_store, g_return_if_fail (VALID_ITER (sibling, tree_store)); if (parent == NULL && sibling == NULL) - parent_node = tree_store->root; + parent_node = priv->root; else if (parent == NULL) parent_node = G_NODE (sibling->user_data)->parent; else if (sibling == NULL) @@ -1299,7 +1363,7 @@ gtk_tree_store_insert_before (GtkTreeStore *tree_store, parent_node = G_NODE (parent->user_data); } - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; new_node = g_node_new (NULL); @@ -1307,19 +1371,19 @@ gtk_tree_store_insert_before (GtkTreeStore *tree_store, sibling ? G_NODE (sibling->user_data) : NULL, new_node); - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = new_node; path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { if (new_node->prev == NULL && new_node->next == NULL) { GtkTreeIter parent_iter; - parent_iter.stamp = tree_store->stamp; + parent_iter.stamp = priv->stamp; parent_iter.user_data = parent_node; gtk_tree_path_up (path); @@ -1356,6 +1420,7 @@ gtk_tree_store_insert_after (GtkTreeStore *tree_store, GtkTreeIter *parent, GtkTreeIter *sibling) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GNode *parent_node; GNode *new_node; @@ -1368,7 +1433,7 @@ gtk_tree_store_insert_after (GtkTreeStore *tree_store, g_return_if_fail (VALID_ITER (sibling, tree_store)); if (parent == NULL && sibling == NULL) - parent_node = tree_store->root; + parent_node = priv->root; else if (parent == NULL) parent_node = G_NODE (sibling->user_data)->parent; else if (sibling == NULL) @@ -1380,7 +1445,7 @@ gtk_tree_store_insert_after (GtkTreeStore *tree_store, parent_node = G_NODE (parent->user_data); } - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; new_node = g_node_new (NULL); @@ -1388,19 +1453,19 @@ gtk_tree_store_insert_after (GtkTreeStore *tree_store, sibling ? G_NODE (sibling->user_data) : NULL, new_node); - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = new_node; path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { if (new_node->prev == NULL && new_node->next == NULL) { GtkTreeIter parent_iter; - parent_iter.stamp = tree_store->stamp; + parent_iter.stamp = priv->stamp; parent_iter.user_data = parent_node; gtk_tree_path_up (path); @@ -1449,6 +1514,7 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, gint position, ...) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GNode *parent_node; GNode *new_node; @@ -1468,13 +1534,13 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, if (parent) parent_node = parent->user_data; else - parent_node = tree_store->root; + parent_node = priv->root; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; new_node = g_node_new (NULL); - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = new_node; g_node_insert (parent_node, position, new_node); @@ -1485,12 +1551,12 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, va_end (var_args); if (maybe_need_sort && GTK_TREE_STORE_IS_SORTED (tree_store)) - gtk_tree_store_sort_iter_changed (tree_store, iter, tree_store->sort_column_id, FALSE); + gtk_tree_store_sort_iter_changed (tree_store, iter, priv->sort_column_id, FALSE); path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { if (new_node->prev == NULL && new_node->next == NULL) { @@ -1510,8 +1576,8 @@ gtk_tree_store_insert_with_values (GtkTreeStore *tree_store, * @iter: (out) (allow-none): An unset #GtkTreeIter to set the new row, or %NULL. * @parent: (allow-none): A valid #GtkTreeIter, or %NULL * @position: position to insert the new row - * @columns: an array of column numbers - * @values: an array of GValues + * @columns: (array length=n_values): an array of column numbers + * @values: (array length=n_values): an array of GValues * @n_values: the length of the @columns and @values arrays * * A variant of gtk_tree_store_insert_with_values() which takes @@ -1529,6 +1595,7 @@ gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store, GValue *values, gint n_values) { + GtkTreeStorePrivate *priv = tree_store->priv; GtkTreePath *path; GNode *parent_node; GNode *new_node; @@ -1547,13 +1614,13 @@ gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store, if (parent) parent_node = parent->user_data; else - parent_node = tree_store->root; + parent_node = priv->root; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; new_node = g_node_new (NULL); - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = new_node; g_node_insert (parent_node, position, new_node); @@ -1562,12 +1629,12 @@ gtk_tree_store_insert_with_valuesv (GtkTreeStore *tree_store, columns, values, n_values); if (maybe_need_sort && GTK_TREE_STORE_IS_SORTED (tree_store)) - gtk_tree_store_sort_iter_changed (tree_store, iter, tree_store->sort_column_id, FALSE); + gtk_tree_store_sort_iter_changed (tree_store, iter, priv->sort_column_id, FALSE); path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { if (new_node->prev == NULL && new_node->next == NULL) { @@ -1598,6 +1665,7 @@ gtk_tree_store_prepend (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent) { + GtkTreeStorePrivate *priv = tree_store->priv; GNode *parent_node; g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); @@ -1605,10 +1673,10 @@ gtk_tree_store_prepend (GtkTreeStore *tree_store, if (parent != NULL) g_return_if_fail (VALID_ITER (parent, tree_store)); - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; if (parent == NULL) - parent_node = tree_store->root; + parent_node = priv->root; else parent_node = parent->user_data; @@ -1616,7 +1684,7 @@ gtk_tree_store_prepend (GtkTreeStore *tree_store, { GtkTreePath *path; - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = g_node_new (NULL); g_node_prepend (parent_node, G_NODE (iter->user_data)); @@ -1624,7 +1692,7 @@ gtk_tree_store_prepend (GtkTreeStore *tree_store, path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { gtk_tree_path_up (path); gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (tree_store), path, parent); @@ -1656,6 +1724,7 @@ gtk_tree_store_append (GtkTreeStore *tree_store, GtkTreeIter *iter, GtkTreeIter *parent) { + GtkTreeStorePrivate *priv = tree_store->priv; GNode *parent_node; g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); @@ -1664,17 +1733,17 @@ gtk_tree_store_append (GtkTreeStore *tree_store, g_return_if_fail (VALID_ITER (parent, tree_store)); if (parent == NULL) - parent_node = tree_store->root; + parent_node = priv->root; else parent_node = parent->user_data; - tree_store->columns_dirty = TRUE; + priv->columns_dirty = TRUE; if (parent_node->children == NULL) { GtkTreePath *path; - iter->stamp = tree_store->stamp; + iter->stamp = priv->stamp; iter->user_data = g_node_new (NULL); g_node_append (parent_node, G_NODE (iter->user_data)); @@ -1682,7 +1751,7 @@ gtk_tree_store_append (GtkTreeStore *tree_store, path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter); gtk_tree_model_row_inserted (GTK_TREE_MODEL (tree_store), path, iter); - if (parent_node != tree_store->root) + if (parent_node != priv->root) { gtk_tree_path_up (path); gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (tree_store), path, parent); @@ -1766,7 +1835,7 @@ gtk_tree_store_clear_traverse (GNode *node, if (node->parent) { - iter.stamp = store->stamp; + iter.stamp = store->priv->stamp; iter.user_data = node; gtk_tree_store_remove (store, &iter); @@ -1774,7 +1843,7 @@ gtk_tree_store_clear_traverse (GNode *node, } else if (node->parent) { - iter.stamp = store->stamp; + iter.stamp = store->priv->stamp; iter.user_data = node; gtk_tree_store_remove (store, &iter); @@ -1786,11 +1855,12 @@ gtk_tree_store_clear_traverse (GNode *node, static void gtk_tree_store_increment_stamp (GtkTreeStore *tree_store) { + GtkTreeStorePrivate *priv = tree_store->priv; do { - tree_store->stamp++; + priv->stamp++; } - while (tree_store->stamp == 0); + while (priv->stamp == 0); } /** @@ -1804,7 +1874,7 @@ gtk_tree_store_clear (GtkTreeStore *tree_store) { g_return_if_fail (GTK_IS_TREE_STORE (tree_store)); - gtk_tree_store_clear_traverse (tree_store->root, tree_store); + gtk_tree_store_clear_traverse (tree_store->priv->root, tree_store); gtk_tree_store_increment_stamp (tree_store); } @@ -1856,7 +1926,7 @@ gtk_tree_store_iter_is_valid (GtkTreeStore *tree_store, if (!VALID_ITER (iter, tree_store)) return FALSE; - return gtk_tree_store_iter_is_valid_helper (iter, tree_store->root); + return gtk_tree_store_iter_is_valid_helper (iter, tree_store->priv->root); } /* DND */ @@ -1928,7 +1998,7 @@ copy_node_data (GtkTreeStore *tree_store, col = 0; while (dl) { - copy_iter = _gtk_tree_data_list_node_copy (dl, tree_store->column_headers[col]); + copy_iter = _gtk_tree_data_list_node_copy (dl, tree_store->priv->column_headers[col]); if (copy_head == NULL) copy_head = copy_iter; @@ -2178,7 +2248,7 @@ gtk_tree_store_reorder_func (gconstpointer a, * gtk_tree_store_reorder: * @tree_store: A #GtkTreeStore. * @parent: A #GtkTreeIter. - * @new_order: an array of integers mapping the new position of each child + * @new_order: (array): an array of integers mapping the new position of each child * to its old position before the re-ordering, * i.e. @new_order[newpos] = oldpos. * @@ -2204,7 +2274,7 @@ gtk_tree_store_reorder (GtkTreeStore *tree_store, g_return_if_fail (new_order != NULL); if (!parent) - level = G_NODE (tree_store->root)->children; + level = G_NODE (tree_store->priv->root)->children; else level = G_NODE (parent->user_data)->children; @@ -2246,7 +2316,7 @@ gtk_tree_store_reorder (GtkTreeStore *tree_store, if (parent) G_NODE (parent->user_data)->children = sort_array[0].node; else - G_NODE (tree_store->root)->children = sort_array[0].node; + G_NODE (tree_store->priv->root)->children = sort_array[0].node; /* emit signal */ if (parent) @@ -2307,11 +2377,11 @@ gtk_tree_store_swap (GtkTreeStore *tree_store, { gtk_tree_path_free (path_a); gtk_tree_path_free (path_b); - + g_warning ("Given children are not in the same level\n"); return; } - parent_node = G_NODE (tree_store->root); + parent_node = G_NODE (tree_store->priv->root); } else { @@ -2319,7 +2389,7 @@ gtk_tree_store_swap (GtkTreeStore *tree_store, { gtk_tree_path_free (path_a); gtk_tree_path_free (path_b); - + g_warning ("Given children don't have a common parent\n"); return; } @@ -2396,7 +2466,7 @@ gtk_tree_store_swap (GtkTreeStore *tree_store, order[i] = i; gtk_tree_model_rows_reordered (GTK_TREE_MODEL (tree_store), path_a, - parent_node == tree_store->root + parent_node == tree_store->priv->root ? NULL : &parent, order); gtk_tree_path_free (path_a); g_free (order); @@ -2494,7 +2564,7 @@ gtk_tree_store_move (GtkTreeStore *tree_store, parent = G_NODE (parent_iter.user_data); } else - parent = G_NODE (tree_store->root); + parent = G_NODE (tree_store->priv->root); /* yes, I know that this can be done shorter, but I'm doing it this way * so the code is also maintainable @@ -2772,6 +2842,7 @@ gtk_tree_store_compare_func (gconstpointer a, gpointer user_data) { GtkTreeStore *tree_store = user_data; + GtkTreeStorePrivate *priv = tree_store->priv; GNode *node_a; GNode *node_b; GtkTreeIterCompareFunc func; @@ -2781,12 +2852,12 @@ gtk_tree_store_compare_func (gconstpointer a, GtkTreeIter iter_b; gint retval; - if (tree_store->sort_column_id != -1) + if (priv->sort_column_id != -1) { GtkTreeDataSortHeader *header; - header = _gtk_tree_data_list_get_header (tree_store->sort_list, - tree_store->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); g_return_val_if_fail (header != NULL, 0); g_return_val_if_fail (header->func != NULL, 0); @@ -2795,22 +2866,22 @@ gtk_tree_store_compare_func (gconstpointer a, } else { - g_return_val_if_fail (tree_store->default_sort_func != NULL, 0); - func = tree_store->default_sort_func; - data = tree_store->default_sort_data; + g_return_val_if_fail (priv->default_sort_func != NULL, 0); + func = priv->default_sort_func; + data = priv->default_sort_data; } node_a = ((SortTuple *) a)->node; node_b = ((SortTuple *) b)->node; - iter_a.stamp = tree_store->stamp; + iter_a.stamp = priv->stamp; iter_a.user_data = node_a; - iter_b.stamp = tree_store->stamp; + iter_b.stamp = priv->stamp; iter_b.user_data = node_b; retval = (* func) (GTK_TREE_MODEL (user_data), &iter_a, &iter_b, data); - if (tree_store->order == GTK_SORT_DESCENDING) + if (priv->order == GTK_SORT_DESCENDING) { if (retval > 0) retval = -1; @@ -2879,7 +2950,7 @@ gtk_tree_store_sort_helper (GtkTreeStore *tree_store, for (i = 0; i < list_length; i++) new_order[i] = g_array_index (sort_array, SortTuple, i).offset; - iter.stamp = tree_store->stamp; + iter.stamp = tree_store->priv->stamp; iter.user_data = parent; path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), &iter); gtk_tree_model_rows_reordered (GTK_TREE_MODEL (tree_store), @@ -2901,15 +2972,17 @@ gtk_tree_store_sort_helper (GtkTreeStore *tree_store, static void gtk_tree_store_sort (GtkTreeStore *tree_store) { + GtkTreeStorePrivate *priv = tree_store->priv; + if (!GTK_TREE_STORE_IS_SORTED (tree_store)) return; - if (tree_store->sort_column_id != -1) + if (priv->sort_column_id != -1) { GtkTreeDataSortHeader *header = NULL; - header = _gtk_tree_data_list_get_header (tree_store->sort_list, - tree_store->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); /* We want to make sure that we have a function */ g_return_if_fail (header != NULL); @@ -2917,10 +2990,10 @@ gtk_tree_store_sort (GtkTreeStore *tree_store) } else { - g_return_if_fail (tree_store->default_sort_func != NULL); + g_return_if_fail (priv->default_sort_func != NULL); } - gtk_tree_store_sort_helper (tree_store, G_NODE (tree_store->root), TRUE); + gtk_tree_store_sort_helper (tree_store, G_NODE (priv->root), TRUE); } static void @@ -2929,6 +3002,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, gint column, gboolean emit_signal) { + GtkTreeStorePrivate *priv = tree_store->priv; GNode *prev = NULL; GNode *next = NULL; GNode *node; @@ -2946,12 +3020,12 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, g_return_if_fail (G_NODE (iter->user_data)->parent != NULL); - tmp_iter.stamp = tree_store->stamp; - if (tree_store->sort_column_id != -1) + tmp_iter.stamp = priv->stamp; + if (priv->sort_column_id != -1) { GtkTreeDataSortHeader *header; - header = _gtk_tree_data_list_get_header (tree_store->sort_list, - tree_store->sort_column_id); + header = _gtk_tree_data_list_get_header (priv->sort_list, + priv->sort_column_id); g_return_if_fail (header != NULL); g_return_if_fail (header->func != NULL); func = header->func; @@ -2959,14 +3033,14 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, } else { - g_return_if_fail (tree_store->default_sort_func != NULL); - func = tree_store->default_sort_func; - data = tree_store->default_sort_data; + g_return_if_fail (priv->default_sort_func != NULL); + func = priv->default_sort_func; + data = priv->default_sort_data; } /* If it's the built in function, we don't sort. */ if (func == _gtk_tree_data_list_compare_func && - tree_store->sort_column_id != column) + priv->sort_column_id != column) return; old_location = 0; @@ -2997,7 +3071,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, cmp_b = (* func) (GTK_TREE_MODEL (tree_store), iter, &tmp_iter, data); } - if (tree_store->order == GTK_SORT_DESCENDING) + if (priv->order == GTK_SORT_DESCENDING) { if (cmp_a < 0) cmp_a = 1; @@ -3037,7 +3111,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, node = node->parent->children; new_location = 0; tmp_iter.user_data = node; - if (tree_store->order == GTK_SORT_DESCENDING) + if (priv->order == GTK_SORT_DESCENDING) cmp_a = (* func) (GTK_TREE_MODEL (tree_store), &tmp_iter, iter, data); else cmp_a = (* func) (GTK_TREE_MODEL (tree_store), iter, &tmp_iter, data); @@ -3048,7 +3122,7 @@ gtk_tree_store_sort_iter_changed (GtkTreeStore *tree_store, node = node->next; new_location++; tmp_iter.user_data = node; - if (tree_store->order == GTK_SORT_DESCENDING) + if (priv->order == GTK_SORT_DESCENDING) cmp_a = (* func) (GTK_TREE_MODEL (tree_store), &tmp_iter, iter, data); else cmp_a = (* func) (GTK_TREE_MODEL (tree_store), iter, &tmp_iter, data); @@ -3123,14 +3197,15 @@ gtk_tree_store_get_sort_column_id (GtkTreeSortable *sortable, GtkSortType *order) { GtkTreeStore *tree_store = (GtkTreeStore *) sortable; + GtkTreeStorePrivate *priv = tree_store->priv; if (sort_column_id) - * sort_column_id = tree_store->sort_column_id; + * sort_column_id = priv->sort_column_id; if (order) - * order = tree_store->order; + * order = priv->order; - if (tree_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID || - tree_store->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID || + priv->sort_column_id == GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) return FALSE; return TRUE; @@ -3142,10 +3217,10 @@ gtk_tree_store_set_sort_column_id (GtkTreeSortable *sortable, GtkSortType order) { GtkTreeStore *tree_store = (GtkTreeStore *) sortable; + GtkTreeStorePrivate *priv = tree_store->priv; - - if ((tree_store->sort_column_id == sort_column_id) && - (tree_store->order == order)) + if ((priv->sort_column_id == sort_column_id) && + (priv->order == order)) return; if (sort_column_id != GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID) @@ -3154,7 +3229,7 @@ gtk_tree_store_set_sort_column_id (GtkTreeSortable *sortable, { GtkTreeDataSortHeader *header = NULL; - header = _gtk_tree_data_list_get_header (tree_store->sort_list, + header = _gtk_tree_data_list_get_header (priv->sort_list, sort_column_id); /* We want to make sure that we have a function */ @@ -3163,12 +3238,12 @@ gtk_tree_store_set_sort_column_id (GtkTreeSortable *sortable, } else { - g_return_if_fail (tree_store->default_sort_func != NULL); + g_return_if_fail (priv->default_sort_func != NULL); } } - tree_store->sort_column_id = sort_column_id; - tree_store->order = order; + priv->sort_column_id = sort_column_id; + priv->order = order; gtk_tree_sortable_sort_column_changed (sortable); @@ -3183,12 +3258,13 @@ gtk_tree_store_set_sort_func (GtkTreeSortable *sortable, GDestroyNotify destroy) { GtkTreeStore *tree_store = (GtkTreeStore *) sortable; + GtkTreeStorePrivate *priv = tree_store->priv; - tree_store->sort_list = _gtk_tree_data_list_set_header (tree_store->sort_list, - sort_column_id, - func, data, destroy); + priv->sort_list = _gtk_tree_data_list_set_header (priv->sort_list, + sort_column_id, + func, data, destroy); - if (tree_store->sort_column_id == sort_column_id) + if (priv->sort_column_id == sort_column_id) gtk_tree_store_sort (tree_store); } @@ -3199,20 +3275,21 @@ gtk_tree_store_set_default_sort_func (GtkTreeSortable *sortable, GDestroyNotify destroy) { GtkTreeStore *tree_store = (GtkTreeStore *) sortable; + GtkTreeStorePrivate *priv = tree_store->priv; - if (tree_store->default_sort_destroy) + if (priv->default_sort_destroy) { - GDestroyNotify d = tree_store->default_sort_destroy; + GDestroyNotify d = priv->default_sort_destroy; - tree_store->default_sort_destroy = NULL; - d (tree_store->default_sort_data); + priv->default_sort_destroy = NULL; + d (priv->default_sort_data); } - tree_store->default_sort_func = func; - tree_store->default_sort_data = data; - tree_store->default_sort_destroy = destroy; + priv->default_sort_func = func; + priv->default_sort_data = data; + priv->default_sort_destroy = destroy; - if (tree_store->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) + if (priv->sort_column_id == GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID) gtk_tree_store_sort (tree_store); } @@ -3221,7 +3298,7 @@ gtk_tree_store_has_default_sort_func (GtkTreeSortable *sortable) { GtkTreeStore *tree_store = (GtkTreeStore *) sortable; - return (tree_store->default_sort_func != NULL); + return (tree_store->priv->default_sort_func != NULL); } static void diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h index aee9baca97..0f151d4702 100644 --- a/gtk/gtktreestore.h +++ b/gtk/gtktreestore.h @@ -24,7 +24,7 @@ #ifndef __GTK_TREE_STORE_H__ #define __GTK_TREE_STORE_H__ -#include +#include #include #include #include @@ -40,25 +40,15 @@ G_BEGIN_DECLS #define GTK_IS_TREE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_STORE)) #define GTK_TREE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_STORE, GtkTreeStoreClass)) -typedef struct _GtkTreeStore GtkTreeStore; -typedef struct _GtkTreeStoreClass GtkTreeStoreClass; +typedef struct _GtkTreeStore GtkTreeStore; +typedef struct _GtkTreeStoreClass GtkTreeStoreClass; +typedef struct _GtkTreeStorePrivate GtkTreeStorePrivate; struct _GtkTreeStore { GObject parent; - gint GSEAL (stamp); - gpointer GSEAL (root); - gpointer GSEAL (last); - gint GSEAL (n_columns); - gint GSEAL (sort_column_id); - GList *GSEAL (sort_list); - GtkSortType GSEAL (order); - GType *GSEAL (column_headers); - GtkTreeIterCompareFunc GSEAL (default_sort_func); - gpointer GSEAL (default_sort_data); - GDestroyNotify GSEAL (default_sort_destroy); - guint GSEAL (columns_dirty) : 1; + GtkTreeStorePrivate *priv; }; struct _GtkTreeStoreClass diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 85280038a8..d0311b4aa1 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -19,16 +19,16 @@ #include "config.h" + #include #include -#include #include "gtktreeview.h" #include "gtkrbtree.h" #include "gtktreednd.h" #include "gtktreeprivate.h" #include "gtkcellrenderer.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkbuildable.h" #include "gtkbutton.h" @@ -45,9 +45,11 @@ #include "gtktreemodelsort.h" #include "gtktooltip.h" #include "gtkscrollable.h" +#include "gtkcelllayout.h" #include "gtkprivate.h" #include "gtkwidgetprivate.h" #include "gtkentryprivate.h" +#include "gtktypebuiltins.h" /** @@ -133,6 +135,95 @@ * */ +enum +{ + DRAG_COLUMN_WINDOW_STATE_UNSET = 0, + DRAG_COLUMN_WINDOW_STATE_ORIGINAL = 1, + DRAG_COLUMN_WINDOW_STATE_ARROW = 2, + DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT = 3, + DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT = 4 +}; + +enum +{ + RUBBER_BAND_OFF = 0, + RUBBER_BAND_MAYBE_START = 1, + RUBBER_BAND_ACTIVE = 2 +}; + + /* This lovely little value is used to determine how far away from the title bar + * you can move the mouse and still have a column drag work. + */ +#define TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER(tree_view) (10*gtk_tree_view_get_effective_header_height(tree_view)) + +#ifdef __GNUC__ + +#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \ + if (!(expr)) \ + { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "%s (%s): assertion `%s' failed.\n" \ + "There is a disparity between the internal view of the GtkTreeView,\n" \ + "and the GtkTreeModel. This generally means that the model has changed\n"\ + "without letting the view know. Any display from now on is likely to\n" \ + "be incorrect.\n", \ + G_STRLOC, \ + G_STRFUNC, \ + #expr); \ + return ret; \ + }; }G_STMT_END + +#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \ + if (!(expr)) \ + { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "%s (%s): assertion `%s' failed.\n" \ + "There is a disparity between the internal view of the GtkTreeView,\n" \ + "and the GtkTreeModel. This generally means that the model has changed\n"\ + "without letting the view know. Any display from now on is likely to\n" \ + "be incorrect.\n", \ + G_STRLOC, \ + G_STRFUNC, \ + #expr); \ + return; \ + }; }G_STMT_END + +#else + +#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \ + if (!(expr)) \ + { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "file %s: line %d: assertion `%s' failed.\n" \ + "There is a disparity between the internal view of the GtkTreeView,\n" \ + "and the GtkTreeModel. This generally means that the model has changed\n"\ + "without letting the view know. Any display from now on is likely to\n" \ + "be incorrect.\n", \ + __FILE__, \ + __LINE__, \ + #expr); \ + return ret; \ + }; }G_STMT_END + +#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \ + if (!(expr)) \ + { \ + g_log (G_LOG_DOMAIN, \ + G_LOG_LEVEL_CRITICAL, \ + "file %s: line %d: assertion '%s' failed.\n" \ + "There is a disparity between the internal view of the GtkTreeView,\n" \ + "and the GtkTreeModel. This generally means that the model has changed\n"\ + "without letting the view know. Any display from now on is likely to\n" \ + "be incorrect.\n", \ + __FILE__, \ + __LINE__, \ + #expr); \ + return; \ + }; }G_STMT_END +#endif #define GTK_TREE_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5) #define GTK_TREE_VIEW_PRIORITY_SCROLL_SYNC (GTK_TREE_VIEW_PRIORITY_VALIDATE + 2) @@ -142,28 +233,20 @@ #define GTK_TREE_VIEW_SEARCH_DIALOG_TIMEOUT 5000 #define AUTO_EXPAND_TIMEOUT 500 -/* The "background" areas of all rows/cells add up to cover the entire tree. - * The background includes all inter-row and inter-cell spacing. - * The "cell" areas are the cell_area passed in to gtk_cell_renderer_render(), - * i.e. just the cells, no spacing. - */ - -#define BACKGROUND_HEIGHT(node) (GTK_RBNODE_GET_HEIGHT (node)) -#define CELL_HEIGHT(node, separator) ((BACKGROUND_HEIGHT (node)) - (separator)) - /* Translate from bin_window coordinates to rbtree (tree coordinates) and * vice versa. */ #define TREE_WINDOW_Y_TO_RBTREE_Y(tree_view,y) ((y) + tree_view->priv->dy) #define RBTREE_Y_TO_TREE_WINDOW_Y(tree_view,y) ((y) - tree_view->priv->dy) -/* This is in bin_window coordinates */ -#define BACKGROUND_FIRST_PIXEL(tree_view,tree,node) (RBTREE_Y_TO_TREE_WINDOW_Y (tree_view, _gtk_rbtree_node_find_offset ((tree), (node)))) -#define CELL_FIRST_PIXEL(tree_view,tree,node,separator) (BACKGROUND_FIRST_PIXEL (tree_view,tree,node) + separator/2) - -#define ROW_HEIGHT(tree_view,height) \ - ((height > 0) ? (height) : (tree_view)->priv->expander_size) - +typedef struct _GtkTreeViewColumnReorder GtkTreeViewColumnReorder; +struct _GtkTreeViewColumnReorder +{ + gint left_align; + gint right_align; + GtkTreeViewColumn *left_column; + GtkTreeViewColumn *right_column; +}; typedef struct _GtkTreeViewChild GtkTreeViewChild; struct _GtkTreeViewChild @@ -190,6 +273,239 @@ struct _TreeViewDragInfo }; +struct _GtkTreeViewPrivate +{ + GtkTreeModel *model; + + /* tree information */ + GtkRBTree *tree; + + /* Container info */ + GList *children; + gint width; + gint height; + + /* Adjustments */ + GtkAdjustment *hadjustment; + GtkAdjustment *vadjustment; + gint min_display_width; + gint min_display_height; + + /* Sub windows */ + GdkWindow *bin_window; + GdkWindow *header_window; + + /* Scroll position state keeping */ + GtkTreeRowReference *top_row; + gint top_row_dy; + /* dy == y pos of top_row + top_row_dy */ + /* we cache it for simplicity of the code */ + gint dy; + + guint presize_handler_timer; + guint validate_rows_timer; + guint scroll_sync_timer; + + /* Indentation and expander layout */ + gint expander_size; + GtkTreeViewColumn *expander_column; + + gint level_indentation; + + /* Key navigation (focus), selection */ + gint cursor_offset; + + GtkTreeRowReference *anchor; + GtkTreeRowReference *cursor; + + GtkTreeViewColumn *focus_column; + + /* Current pressed node, previously pressed, prelight */ + GtkRBNode *button_pressed_node; + GtkRBTree *button_pressed_tree; + + gint pressed_button; + gint press_start_x; + gint press_start_y; + + gint event_last_x; + gint event_last_y; + + guint last_button_time; + gint last_button_x; + gint last_button_y; + + GtkRBNode *prelight_node; + GtkRBTree *prelight_tree; + + /* Cell Editing */ + GtkTreeViewColumn *edited_column; + + /* The node that's currently being collapsed or expanded */ + GtkRBNode *expanded_collapsed_node; + GtkRBTree *expanded_collapsed_tree; + guint expand_collapse_timeout; + + /* Auto expand/collapse timeout in hover mode */ + guint auto_expand_timeout; + + /* Selection information */ + GtkTreeSelection *selection; + + /* Header information */ + gint n_columns; + GList *columns; + gint header_height; + + GtkTreeViewColumnDropFunc column_drop_func; + gpointer column_drop_func_data; + GDestroyNotify column_drop_func_data_destroy; + GList *column_drag_info; + GtkTreeViewColumnReorder *cur_reorder; + + gint prev_width_before_expander; + + /* Interactive Header reordering */ + GdkWindow *drag_window; + GdkWindow *drag_highlight_window; + GtkTreeViewColumn *drag_column; + gint drag_column_x; + + /* Interactive Header Resizing */ + gint drag_pos; + gint x_drag; + + /* Non-interactive Header Resizing, expand flag support */ + gint prev_width; + + gint last_extra_space; + gint last_extra_space_per_column; + gint last_number_of_expand_columns; + + /* ATK Hack */ + GtkTreeDestroyCountFunc destroy_count_func; + gpointer destroy_count_data; + GDestroyNotify destroy_count_destroy; + + /* Scroll timeout (e.g. during dnd, rubber banding) */ + guint scroll_timeout; + + /* Row drag-and-drop */ + GtkTreeRowReference *drag_dest_row; + GtkTreeViewDropPosition drag_dest_pos; + guint open_dest_timeout; + + /* Rubber banding */ + gint rubber_band_status; + gint rubber_band_x; + gint rubber_band_y; + gint rubber_band_shift; + gint rubber_band_ctrl; + + GtkRBNode *rubber_band_start_node; + GtkRBTree *rubber_band_start_tree; + + GtkRBNode *rubber_band_end_node; + GtkRBTree *rubber_band_end_tree; + + /* fixed height */ + gint fixed_height; + + /* Scroll-to functionality when unrealized */ + GtkTreeRowReference *scroll_to_path; + GtkTreeViewColumn *scroll_to_column; + gfloat scroll_to_row_align; + gfloat scroll_to_col_align; + + /* Interactive search */ + gint selected_iter; + gint search_column; + GtkTreeViewSearchPositionFunc search_position_func; + GtkTreeViewSearchEqualFunc search_equal_func; + gpointer search_user_data; + GDestroyNotify search_destroy; + gpointer search_position_user_data; + GDestroyNotify search_position_destroy; + GtkWidget *search_window; + GtkWidget *search_entry; + gulong search_entry_changed_id; + guint typeselect_flush_timeout; + + /* Grid and tree lines */ + GtkTreeViewGridLines grid_lines; + double grid_line_dashes[2]; + int grid_line_width; + + gboolean tree_lines_enabled; + double tree_line_dashes[2]; + int tree_line_width; + + /* Row separators */ + GtkTreeViewRowSeparatorFunc row_separator_func; + gpointer row_separator_data; + GDestroyNotify row_separator_destroy; + + /* Tooltip support */ + gint tooltip_column; + + /* Here comes the bitfield */ + guint scroll_to_use_align : 1; + + guint fixed_height_mode : 1; + guint fixed_height_check : 1; + + guint reorderable : 1; + guint header_has_focus : 1; + guint drag_column_window_state : 3; + /* hint to display rows in alternating colors */ + guint has_rules : 1; + guint mark_rows_col_dirty : 1; + + /* for DnD */ + guint empty_view_drop : 1; + + guint ctrl_pressed : 1; + guint shift_pressed : 1; + + guint init_hadjust_value : 1; + + guint in_top_row_to_dy : 1; + + /* interactive search */ + guint enable_search : 1; + guint disable_popdown : 1; + guint search_custom_entry_set : 1; + + guint hover_selection : 1; + guint hover_expand : 1; + guint imcontext_changed : 1; + + guint rubber_banding_enable : 1; + + guint in_grab : 1; + + guint post_validation_flag : 1; + + /* Whether our key press handler is to avoid sending an unhandled binding to the search entry */ + guint search_entry_avoid_unhandled_binding : 1; + + /* GtkScrollablePolicy needs to be checked when + * driving the scrollable adjustment values */ + guint hscroll_policy : 1; + guint vscroll_policy : 1; + + /* GtkTreeView flags */ + guint is_list : 1; + guint show_expanders : 1; + guint in_column_resize : 1; + guint arrow_prelit : 1; + guint headers_visible : 1; + guint draw_keyfocus : 1; + guint model_setup : 1; + guint in_column_drag : 1; +}; + + /* Signals */ enum { @@ -260,7 +576,8 @@ static void gtk_tree_view_get_preferred_height (GtkWidget *widget, gint *minimum, gint *natural); static void gtk_tree_view_size_request (GtkWidget *widget, - GtkRequisition *requisition); + GtkRequisition *requisition, + gboolean may_validate); static void gtk_tree_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static gboolean gtk_tree_view_draw (GtkWidget *widget, @@ -406,6 +723,7 @@ static void invalidate_empty_focus (GtkTreeView *tree_view); /* Internal functions */ static gboolean gtk_tree_view_is_expander_column (GtkTreeView *tree_view, GtkTreeViewColumn *column); +static inline gboolean gtk_tree_view_draw_expanders (GtkTreeView *tree_view); static void gtk_tree_view_add_move_binding (GtkBindingSet *binding_set, guint keyval, guint modmask, @@ -472,7 +790,7 @@ static void gtk_tree_view_real_set_cursor (GtkTreeView GtkTreePath *path, gboolean clear_and_select, gboolean clamp_node); -static gboolean gtk_tree_view_has_special_cell (GtkTreeView *tree_view); +static gboolean gtk_tree_view_has_can_focus_cell (GtkTreeView *tree_view); static void column_sizing_notify (GObject *object, GParamSpec *pspec, gpointer data); @@ -489,6 +807,22 @@ static void update_prelight (GtkTreeView int x, int y); +static inline gint gtk_tree_view_get_effective_header_height (GtkTreeView *tree_view); + +static inline gint gtk_tree_view_get_cell_area_y_offset (GtkTreeView *tree_view, + GtkRBTree *tree, + GtkRBNode *node, + gint vertical_separator); +static inline gint gtk_tree_view_get_cell_area_height (GtkTreeView *tree_view, + GtkRBNode *node, + gint vertical_separator); + +static inline gint gtk_tree_view_get_row_y_offset (GtkTreeView *tree_view, + GtkRBTree *tree, + GtkRBNode *node); +static inline gint gtk_tree_view_get_row_height (GtkTreeView *tree_view, + GtkRBNode *node); + /* interactive search */ static void gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view); static void gtk_tree_view_search_dialog_hide (GtkWidget *search_dialog, @@ -542,14 +876,8 @@ static void gtk_tree_view_put (GtkTreeView *tree_ gint width, gint height); static gboolean gtk_tree_view_start_editing (GtkTreeView *tree_view, - GtkTreePath *cursor_path); -static void gtk_tree_view_real_start_editing (GtkTreeView *tree_view, - GtkTreeViewColumn *column, - GtkTreePath *path, - GtkCellEditable *cell_editable, - GdkRectangle *cell_area, - GdkEvent *event, - guint flags); + GtkTreePath *cursor_path, + gboolean edit_only); static void gtk_tree_view_stop_editing (GtkTreeView *tree_view, gboolean cancel_editing); static gboolean gtk_tree_view_real_start_interactive_search (GtkTreeView *tree_view, @@ -1382,9 +1710,9 @@ gtk_tree_view_init (GtkTreeView *tree_view) gtk_widget_set_can_focus (GTK_WIDGET (tree_view), TRUE); gtk_widget_set_redraw_on_allocate (GTK_WIDGET (tree_view), FALSE); - tree_view->priv->flags = GTK_TREE_VIEW_SHOW_EXPANDERS - | GTK_TREE_VIEW_DRAW_KEYFOCUS - | GTK_TREE_VIEW_HEADERS_VISIBLE; + tree_view->priv->show_expanders = TRUE; + tree_view->priv->draw_keyfocus = TRUE; + tree_view->priv->headers_visible = TRUE; /* We need some padding */ tree_view->priv->dy = 0; @@ -1583,7 +1911,7 @@ gtk_tree_view_get_property (GObject *object, g_value_set_boolean (value, tree_view->priv->hover_expand); break; case PROP_SHOW_EXPANDERS: - g_value_set_boolean (value, GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS)); + g_value_set_boolean (value, tree_view->priv->show_expanders); break; case PROP_LEVEL_INDENTATION: g_value_set_int (value, tree_view->priv->level_indentation); @@ -1790,29 +2118,38 @@ gtk_tree_view_map_buttons (GtkTreeView *tree_view) g_return_if_fail (gtk_widget_get_mapped (GTK_WIDGET (tree_view))); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)) + if (tree_view->priv->headers_visible) { GtkTreeViewColumn *column; + GtkWidget *button; + GdkWindow *window; for (list = tree_view->priv->columns; list; list = list->next) { column = list->data; - if (gtk_widget_get_visible (column->button) && - !gtk_widget_get_mapped (column->button)) - gtk_widget_map (column->button); + button = gtk_tree_view_column_get_button (column); + + if (gtk_tree_view_column_get_visible (column) && button) + gtk_widget_show_now (button); + + if (gtk_widget_get_visible (button) && + !gtk_widget_get_mapped (button)) + gtk_widget_map (button); } for (list = tree_view->priv->columns; list; list = list->next) { column = list->data; if (gtk_tree_view_column_get_visible (column) == FALSE) continue; + + window = _gtk_tree_view_column_get_window (column); if (gtk_tree_view_column_get_resizable (column)) { - gdk_window_raise (column->window); - gdk_window_show (column->window); + gdk_window_raise (window); + gdk_window_show (window); } else - gdk_window_hide (column->window); + gdk_window_hide (window); } gdk_window_show (tree_view->priv->header_window); } @@ -1881,7 +2218,7 @@ gtk_tree_view_realize (GtkWidget *widget) /* Make the window for the tree */ attributes.x = 0; - attributes.y = TREE_VIEW_HEADER_HEIGHT (tree_view); + attributes.y = gtk_tree_view_get_effective_header_height (tree_view); attributes.width = MAX (tree_view->priv->width, allocation.width); attributes.height = allocation.height; attributes.event_mask = (GDK_EXPOSURE_MASK | @@ -2035,16 +2372,16 @@ gtk_tree_view_size_request_columns (GtkTreeView *tree_view) { for (list = tree_view->priv->columns; list; list = list->next) { - GtkRequisition requisition; + GtkRequisition requisition; GtkTreeViewColumn *column = list->data; + GtkWidget *button = gtk_tree_view_column_get_button (column); - if (column->button == NULL) + if (button == NULL) continue; column = list->data; - gtk_widget_get_preferred_size (column->button, &requisition, NULL); - column->button_request = requisition.width; + gtk_widget_get_preferred_size (button, &requisition, NULL); tree_view->priv->header_height = MAX (tree_view->priv->header_height, requisition.height); } } @@ -2073,39 +2410,11 @@ gtk_tree_view_update_size (GtkTreeView *tree_view) /* keep this in sync with size_allocate below */ for (list = tree_view->priv->columns, i = 0; list; list = list->next, i++) { - gint max_width, min_width; - gint real_requested_width = 0; - column = list->data; if (!gtk_tree_view_column_get_visible (column)) continue; - if (column->use_resized_width) - { - real_requested_width = column->resized_width; - } - else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED) - { - real_requested_width = gtk_tree_view_column_get_fixed_width (column); - } - else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)) - { - real_requested_width = MAX (column->requested_width, column->button_request); - } - else - { - real_requested_width = column->requested_width; - } - - min_width = gtk_tree_view_column_get_min_width (column); - if (min_width != -1) - real_requested_width = MAX (real_requested_width, min_width); - - max_width = gtk_tree_view_column_get_max_width (column); - if (max_width != -1) - real_requested_width = MIN (real_requested_width, max_width); - - tree_view->priv->width += real_requested_width; + tree_view->priv->width += _gtk_tree_view_column_request_width (column); } if (tree_view->priv->tree == NULL) @@ -2116,20 +2425,25 @@ gtk_tree_view_update_size (GtkTreeView *tree_view) static void gtk_tree_view_size_request (GtkWidget *widget, - GtkRequisition *requisition) + GtkRequisition *requisition, + gboolean may_validate) { GtkTreeView *tree_view = GTK_TREE_VIEW (widget); GList *tmp_list; - /* we validate some rows initially just to make sure we have some size. - * In practice, with a lot of static lists, this should get a good width. - */ - do_validate_rows (tree_view, FALSE); + if (may_validate) + { + /* we validate some rows initially just to make sure we have some size. + * In practice, with a lot of static lists, this should get a good width. + */ + do_validate_rows (tree_view, FALSE); + } + gtk_tree_view_size_request_columns (tree_view); gtk_tree_view_update_size (GTK_TREE_VIEW (widget)); requisition->width = tree_view->priv->width; - requisition->height = tree_view->priv->height + TREE_VIEW_HEADER_HEIGHT (tree_view); + requisition->height = tree_view->priv->height + gtk_tree_view_get_effective_header_height (tree_view); tmp_list = tree_view->priv->children; } @@ -2141,7 +2455,7 @@ gtk_tree_view_get_preferred_width (GtkWidget *widget, { GtkRequisition requisition; - gtk_tree_view_size_request (widget, &requisition); + gtk_tree_view_size_request (widget, &requisition, TRUE); *minimum = *natural = requisition.width; } @@ -2153,7 +2467,7 @@ gtk_tree_view_get_preferred_height (GtkWidget *widget, { GtkRequisition requisition; - gtk_tree_view_size_request (widget, &requisition); + gtk_tree_view_size_request (widget, &requisition, TRUE); *minimum = *natural = requisition.height; } @@ -2235,43 +2549,6 @@ invalidate_last_column (GtkTreeView *tree_view) } } -static gint -gtk_tree_view_get_real_requested_width_from_column (GtkTreeView *tree_view, - GtkTreeViewColumn *column) -{ - gint max_width, min_width; - gint real_requested_width; - - if (column->use_resized_width) - { - real_requested_width = column->resized_width; - } - else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED) - { - real_requested_width = gtk_tree_view_column_get_fixed_width (column); - } - else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)) - { - real_requested_width = MAX (column->requested_width, column->button_request); - } - else - { - real_requested_width = column->requested_width; - if (real_requested_width < 0) - real_requested_width = 0; - } - - min_width = gtk_tree_view_column_get_min_width (column); - if (min_width != -1) - real_requested_width = MAX (real_requested_width, min_width); - - max_width = gtk_tree_view_column_get_max_width (column); - if (max_width != -1) - real_requested_width = MIN (real_requested_width, max_width); - - return real_requested_width; -} - /* GtkWidget::size_allocate helper */ static void gtk_tree_view_size_allocate_columns (GtkWidget *widget, @@ -2280,7 +2557,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, GtkTreeView *tree_view; GList *list, *first_column, *last_column; GtkTreeViewColumn *column; - GtkAllocation allocation; GtkAllocation widget_allocation; gint width = 0; gint extra, extra_per_column, extra_for_last; @@ -2306,9 +2582,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, first_column = first_column->next) ; - allocation.y = 0; - allocation.height = tree_view->priv->header_height; - rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); /* find out how many extra space and expandable columns we have */ @@ -2319,7 +2592,7 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, if (!gtk_tree_view_column_get_visible (column)) continue; - full_requested_width += gtk_tree_view_get_real_requested_width_from_column (tree_view, column); + full_requested_width += _gtk_tree_view_column_request_width (column); if (gtk_tree_view_column_get_expand (column)) number_of_expand_columns++; @@ -2366,7 +2639,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, list != (rtl ? first_column->prev : last_column->next); list = (rtl ? list->prev : list->next)) { - gint real_requested_width = 0; gint old_width, column_width; column = list->data; @@ -2380,21 +2652,20 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, if (column == tree_view->priv->drag_column) { GtkAllocation drag_allocation; + GtkWidget *button; + + button = gtk_tree_view_column_get_button (tree_view->priv->drag_column); drag_allocation.x = 0; drag_allocation.y = 0; drag_allocation.width = gdk_window_get_width (tree_view->priv->drag_window); drag_allocation.height = gdk_window_get_height (tree_view->priv->drag_window); - gtk_widget_size_allocate (tree_view->priv->drag_column->button, - &drag_allocation); + gtk_widget_size_allocate (button, &drag_allocation); width += drag_allocation.width; continue; } - real_requested_width = gtk_tree_view_get_real_requested_width_from_column (tree_view, column); - - allocation.x = width; - column->width = real_requested_width; + column_width = _gtk_tree_view_column_request_width (column); if (gtk_tree_view_column_get_expand (column)) { @@ -2402,11 +2673,11 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, { /* We add the remander to the last column as * */ - column->width += extra; + column_width += extra; } else { - column->width += extra_per_column; + column_width += extra_per_column; extra -= extra_per_column; number_of_expand_columns --; } @@ -2414,31 +2685,21 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget, else if (number_of_expand_columns == 0 && list == last_column) { - column->width += extra; + column_width += extra; } /* In addition to expand, the last column can get even more * extra space so all available space is filled up. */ if (extra_for_last > 0 && list == last_column) - column->width += extra_for_last; + column_width += extra_for_last; - g_object_notify (G_OBJECT (column), "width"); + _gtk_tree_view_column_allocate (column, width, column_width); - column_width = gtk_tree_view_column_get_width (column); - allocation.width = column_width; width += column_width; if (column_width > old_width) column_changed = TRUE; - - gtk_widget_size_allocate (column->button, &allocation); - - if (column->window) - gdk_window_move_resize (column->window, - allocation.x + (rtl ? 0 : allocation.width) - TREE_VIEW_DRAG_WIDTH/2, - allocation.y, - TREE_VIEW_DRAG_WIDTH, allocation.height); } /* We change the width here. The user might have been resizing columns, @@ -2501,7 +2762,7 @@ gtk_tree_view_size_allocate (GtkWidget *widget, allocation->width * 0.1); gtk_adjustment_set_lower (tree_view->priv->hadjustment, 0); gtk_adjustment_set_upper (tree_view->priv->hadjustment, - MAX (tree_view->priv->hadjustment->page_size, + MAX (gtk_adjustment_get_page_size (tree_view->priv->hadjustment), tree_view->priv->width)); g_object_thaw_notify (G_OBJECT (tree_view->priv->hadjustment)); @@ -2519,13 +2780,13 @@ gtk_tree_view_size_allocate (GtkWidget *widget, else if (allocation->width != old_width) { gtk_adjustment_set_value (tree_view->priv->hadjustment, - CLAMP (tree_view->priv->hadjustment->value - allocation->width + old_width, + CLAMP (gtk_adjustment_get_value (tree_view->priv->hadjustment) - allocation->width + old_width, 0, tree_view->priv->width - allocation->width)); } else gtk_adjustment_set_value (tree_view->priv->hadjustment, - CLAMP (tree_view->priv->width - (tree_view->priv->prev_width - tree_view->priv->hadjustment->value), + CLAMP (tree_view->priv->width - (tree_view->priv->prev_width - gtk_adjustment_get_value (tree_view->priv->hadjustment)), 0, tree_view->priv->width - allocation->width)); } @@ -2536,7 +2797,7 @@ gtk_tree_view_size_allocate (GtkWidget *widget, } } else - if (tree_view->priv->hadjustment->value + allocation->width > tree_view->priv->width) + if (gtk_adjustment_get_value (tree_view->priv->hadjustment) + allocation->width > tree_view->priv->width) gtk_adjustment_set_value (tree_view->priv->hadjustment, MAX (tree_view->priv->width - allocation->width, 0)); @@ -2544,23 +2805,23 @@ gtk_tree_view_size_allocate (GtkWidget *widget, g_object_freeze_notify (G_OBJECT (tree_view->priv->vadjustment)); gtk_adjustment_set_page_size (tree_view->priv->vadjustment, allocation->height - - TREE_VIEW_HEADER_HEIGHT (tree_view)); + gtk_tree_view_get_effective_header_height (tree_view)); gtk_adjustment_set_step_increment (tree_view->priv->vadjustment, - tree_view->priv->vadjustment->page_size * 0.1); + gtk_adjustment_get_page_size (tree_view->priv->vadjustment) * 0.1); gtk_adjustment_set_page_increment (tree_view->priv->vadjustment, - tree_view->priv->vadjustment->page_size * 0.9); + gtk_adjustment_get_page_size (tree_view->priv->vadjustment) * 0.9); gtk_adjustment_set_lower (tree_view->priv->vadjustment, 0); gtk_adjustment_set_upper (tree_view->priv->vadjustment, - MAX (tree_view->priv->vadjustment->page_size, + MAX (gtk_adjustment_get_page_size (tree_view->priv->vadjustment), tree_view->priv->height)); g_object_thaw_notify (G_OBJECT (tree_view->priv->vadjustment)); /* now the adjustments and window sizes are in sync, we can sync toprow/dy again */ - if (tree_view->priv->height <= tree_view->priv->vadjustment->page_size) + if (tree_view->priv->height <= gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0); - else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height) + else if (gtk_adjustment_get_value (tree_view->priv->vadjustment) + gtk_adjustment_get_page_size (tree_view->priv->vadjustment) > tree_view->priv->height) gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), - tree_view->priv->height - tree_view->priv->vadjustment->page_size); + tree_view->priv->height - gtk_adjustment_get_page_size (tree_view->priv->vadjustment)); else if (gtk_tree_row_reference_valid (tree_view->priv->top_row)) gtk_tree_view_top_row_to_dy (tree_view); else @@ -2572,15 +2833,15 @@ gtk_tree_view_size_allocate (GtkWidget *widget, allocation->x, allocation->y, allocation->width, allocation->height); gdk_window_move_resize (tree_view->priv->header_window, - - (gint) tree_view->priv->hadjustment->value, + - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment), 0, MAX (tree_view->priv->width, allocation->width), tree_view->priv->header_height); gdk_window_move_resize (tree_view->priv->bin_window, - - (gint) tree_view->priv->hadjustment->value, - TREE_VIEW_HEADER_HEIGHT (tree_view), + - (gint) gtk_adjustment_get_value (tree_view->priv->hadjustment), + gtk_tree_view_get_effective_header_height (tree_view), MAX (tree_view->priv->width, allocation->width), - allocation->height - TREE_VIEW_HEADER_HEIGHT (tree_view)); + allocation->height - gtk_tree_view_get_effective_header_height (tree_view)); } if (tree_view->priv->tree == NULL) @@ -2639,7 +2900,7 @@ grab_focus_and_unset_draw_keyfocus (GtkTreeView *tree_view) if (gtk_widget_get_can_focus (widget) && !gtk_widget_has_focus (widget)) gtk_widget_grab_focus (widget); - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); + tree_view->priv->draw_keyfocus = 0; } static inline gboolean @@ -2698,14 +2959,12 @@ gtk_tree_view_button_press (GtkWidget *widget, GtkRBNode *node; GtkRBTree *tree; GtkTreePath *path; - gchar *path_string; gint depth; gint new_y; gint y_offset; gint dval; gint pre_val, aft_val; GtkTreeViewColumn *column = NULL; - GtkCellRenderer *focus_cell = NULL; gint column_handled_click = FALSE; gboolean row_double_click = FALSE; gboolean rtl; @@ -2720,8 +2979,8 @@ gtk_tree_view_button_press (GtkWidget *widget, /* are we in an arrow? */ if (tree_view->priv->prelight_node && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT) && - TREE_VIEW_DRAW_EXPANDERS (tree_view)) + tree_view->priv->arrow_prelit && + gtk_tree_view_draw_expanders (tree_view)) { if (event->button == 1) { @@ -2763,7 +3022,7 @@ gtk_tree_view_button_press (GtkWidget *widget, depth = gtk_tree_path_get_depth (path); background_area.y = y_offset + event->y; - background_area.height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + background_area.height = gtk_tree_view_get_row_height (tree_view, node); background_area.x = 0; @@ -2777,7 +3036,7 @@ gtk_tree_view_button_press (GtkWidget *widget, if (!gtk_tree_view_column_get_visible (candidate)) continue; - background_area.width = candidate->width; + background_area.width = gtk_tree_view_column_get_width (candidate); if ((background_area.x > (gint) event->x) || (background_area.x + background_area.width <= (gint) event->x)) { @@ -2798,7 +3057,7 @@ gtk_tree_view_button_press (GtkWidget *widget, cell_area.x += (depth - 1) * tree_view->priv->level_indentation; cell_area.width -= (depth - 1) * tree_view->priv->level_indentation; - if (TREE_VIEW_DRAW_EXPANDERS (tree_view)) + if (gtk_tree_view_draw_expanders (tree_view)) { if (!rtl) cell_area.x += depth * tree_view->priv->expander_size; @@ -2844,41 +3103,21 @@ gtk_tree_view_button_press (GtkWidget *widget, /* FIXME: get the right flags */ guint flags = 0; - path_string = gtk_tree_path_to_string (path); - if (_gtk_tree_view_column_cell_event (column, - &cell_editable, (GdkEvent *)event, - path_string, - &background_area, &cell_area, flags)) { + GtkCellArea *area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)); + cell_editable = gtk_cell_area_get_edit_widget (area); + if (cell_editable != NULL) { - gint left, right; - GdkRectangle area; - - area = cell_area; - _gtk_tree_view_column_get_neighbor_sizes (column, _gtk_tree_view_column_get_edited_cell (column), &left, &right); - - area.x += left; - area.width -= right + left; - - gtk_tree_view_real_start_editing (tree_view, - column, - path, - cell_editable, - &area, - (GdkEvent *)event, - flags); - g_free (path_string); gtk_tree_path_free (path); gtk_tree_path_free (anchor); return TRUE; } column_handled_click = TRUE; } - g_free (path_string); } if (anchor) gtk_tree_path_free (anchor); @@ -2886,18 +3125,30 @@ gtk_tree_view_button_press (GtkWidget *widget, /* select */ node_selected = GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED); - pre_val = tree_view->priv->vadjustment->value; + pre_val = gtk_adjustment_get_value (tree_view->priv->vadjustment); /* we only handle selection modifications on the first button press */ if (event->type == GDK_BUTTON_PRESS) { + GtkCellRenderer *focus_cell; + if ((event->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK) tree_view->priv->ctrl_pressed = TRUE; if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK) tree_view->priv->shift_pressed = TRUE; - focus_cell = _gtk_tree_view_column_get_cell_at_pos (column, event->x - background_area.x); + /* We update the focus cell here, this is also needed if the + * column does not contain an editable cell. In this case, + * GtkCellArea did not receive the event for processing (and + * could not update the focus cell). + */ + focus_cell = _gtk_tree_view_column_get_cell_at_pos (column, + &cell_area, + &background_area, + event->x, + event->y); + if (focus_cell) gtk_tree_view_column_focus_cell (column, focus_cell); @@ -2924,7 +3175,7 @@ gtk_tree_view_button_press (GtkWidget *widget, * correct here */ - aft_val = tree_view->priv->vadjustment->value; + aft_val = gtk_adjustment_get_value (tree_view->priv->vadjustment); dval = pre_val - aft_val; cell_area.y += dval; @@ -2942,7 +3193,7 @@ gtk_tree_view_button_press (GtkWidget *widget, if (tree_view->priv->rubber_banding_enable && !node_selected - && tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE) + && gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE) { tree_view->priv->press_start_y += tree_view->priv->dy; tree_view->priv->rubber_band_x = event->x; @@ -3016,32 +3267,38 @@ gtk_tree_view_button_press (GtkWidget *widget, for (i = 0, list = tree_view->priv->columns; list; list = list->next, i++) { column = list->data; - if (event->window == column->window && + if (event->window == _gtk_tree_view_column_get_window (column) && gtk_tree_view_column_get_resizable (column) && - column->window) + _gtk_tree_view_column_get_window (column)) { + GtkWidget *button; GtkAllocation button_allocation; gpointer drag_data; if (event->type == GDK_2BUTTON_PRESS && gtk_tree_view_column_get_sizing (column) != GTK_TREE_VIEW_COLUMN_AUTOSIZE) { - column->use_resized_width = FALSE; + _gtk_tree_view_column_set_use_resized_width (column, FALSE); _gtk_tree_view_column_autosize (tree_view, column); return TRUE; } - if (gdk_pointer_grab (column->window, FALSE, - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK, - NULL, NULL, event->time)) - return FALSE; + if (gdk_device_grab (gdk_event_get_device ((GdkEvent*)event), + _gtk_tree_view_column_get_window (column), + GDK_OWNERSHIP_NONE, + FALSE, + GDK_POINTER_MOTION_HINT_MASK + | GDK_BUTTON1_MOTION_MASK + | GDK_BUTTON_RELEASE_MASK, + NULL, + event->time) != GDK_GRAB_SUCCESS) + return FALSE; - gtk_grab_add (widget); - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE); - column->resized_width = gtk_tree_view_column_get_width (column) - - tree_view->priv->last_extra_space_per_column; + gtk_grab_add (widget); + tree_view->priv->in_column_resize = TRUE; + + _gtk_tree_view_column_set_resized_width (column, gtk_tree_view_column_get_width (column) - + tree_view->priv->last_extra_space_per_column); /* block attached dnd signal handler */ drag_data = g_object_get_data (G_OBJECT (widget), "gtk-site-data"); @@ -3051,7 +3308,8 @@ gtk_tree_view_button_press (GtkWidget *widget, 0, 0, NULL, NULL, drag_data); - gtk_widget_get_allocation (column->button, &button_allocation); + button = gtk_tree_view_column_get_button (column); + gtk_widget_get_allocation (button, &button_allocation); tree_view->priv->drag_pos = i; tree_view->priv->x_drag = button_allocation.x + (rtl ? 0 : button_allocation.width); @@ -3070,31 +3328,36 @@ gtk_tree_view_button_release_drag_column (GtkWidget *widget, GdkEventButton *event) { GtkTreeView *tree_view; + GtkWidget *button; GList *l; gboolean rtl; + GdkDevice *device, *other; tree_view = GTK_TREE_VIEW (widget); rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL); - gdk_display_pointer_ungrab (gtk_widget_get_display (widget), GDK_CURRENT_TIME); - gdk_display_keyboard_ungrab (gtk_widget_get_display (widget), GDK_CURRENT_TIME); + device = gdk_event_get_device ((GdkEvent*)event); + other = gdk_device_get_associated_device (device); + gdk_device_ungrab (device, event->time); + gdk_device_ungrab (other, event->time); /* Move the button back */ - g_object_ref (tree_view->priv->drag_column->button); - gtk_container_remove (GTK_CONTAINER (tree_view), tree_view->priv->drag_column->button); - gtk_widget_set_parent_window (tree_view->priv->drag_column->button, tree_view->priv->header_window); - gtk_widget_set_parent (tree_view->priv->drag_column->button, GTK_WIDGET (tree_view)); - g_object_unref (tree_view->priv->drag_column->button); + button = gtk_tree_view_column_get_button (tree_view->priv->drag_column); + g_object_ref (button); + gtk_container_remove (GTK_CONTAINER (tree_view), button); + gtk_widget_set_parent_window (button, tree_view->priv->header_window); + gtk_widget_set_parent (button, GTK_WIDGET (tree_view)); + g_object_unref (button); gtk_widget_queue_resize (widget); if (gtk_tree_view_column_get_resizable (tree_view->priv->drag_column)) { - gdk_window_raise (tree_view->priv->drag_column->window); - gdk_window_show (tree_view->priv->drag_column->window); + gdk_window_raise (_gtk_tree_view_column_get_window (tree_view->priv->drag_column)); + gdk_window_show (_gtk_tree_view_column_get_window (tree_view->priv->drag_column)); } else - gdk_window_hide (tree_view->priv->drag_column->window); + gdk_window_hide (_gtk_tree_view_column_get_window (tree_view->priv->drag_column)); - gtk_widget_grab_focus (tree_view->priv->drag_column->button); + gtk_widget_grab_focus (button); if (rtl) { @@ -3124,7 +3387,7 @@ gtk_tree_view_button_release_drag_column (GtkWidget *widget, /* Reset our flags */ tree_view->priv->drag_column_window_state = DRAG_COLUMN_WINDOW_STATE_UNSET; - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG); + tree_view->priv->in_column_drag = FALSE; return TRUE; } @@ -3149,10 +3412,9 @@ gtk_tree_view_button_release_column_resize (GtkWidget *widget, 0, 0, NULL, NULL, drag_data); - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE); + tree_view->priv->in_column_resize = FALSE; gtk_grab_remove (widget); - gdk_display_pointer_ungrab (gdk_window_get_display (event->window), - event->time); + gdk_device_ungrab (gdk_event_get_device ((GdkEvent*)event), event->time); return TRUE; } @@ -3162,7 +3424,7 @@ gtk_tree_view_button_release (GtkWidget *widget, { GtkTreeView *tree_view = GTK_TREE_VIEW (widget); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) + if (tree_view->priv->in_column_drag) return gtk_tree_view_button_release_drag_column (widget, event); if (tree_view->priv->rubber_band_status) @@ -3171,7 +3433,7 @@ gtk_tree_view_button_release (GtkWidget *widget, if (tree_view->priv->pressed_button == event->button) tree_view->priv->pressed_button = -1; - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE)) + if (tree_view->priv->in_column_resize) return gtk_tree_view_button_release_column_resize (widget, event); if (tree_view->priv->button_pressed_node == NULL) @@ -3181,7 +3443,7 @@ gtk_tree_view_button_release (GtkWidget *widget, { gtk_grab_remove (widget); if (tree_view->priv->button_pressed_node == tree_view->priv->prelight_node && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT)) + tree_view->priv->arrow_prelit) { GtkTreePath *path = NULL; @@ -3214,10 +3476,10 @@ gtk_tree_view_grab_broken (GtkWidget *widget, { GtkTreeView *tree_view = GTK_TREE_VIEW (widget); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) + if (tree_view->priv->in_column_drag) gtk_tree_view_button_release_drag_column (widget, (GdkEventButton *)event); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE)) + if (tree_view->priv->in_column_resize) gtk_tree_view_button_release_column_resize (widget, (GdkEventButton *)event); return TRUE; @@ -3257,9 +3519,8 @@ coords_are_over_arrow (GtkTreeView *tree_view, if ((node->flags & GTK_RBNODE_IS_PARENT) == 0) return FALSE; - arrow.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node); - - arrow.height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + arrow.y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + arrow.height = gtk_tree_view_get_row_height (tree_view, node); gtk_tree_view_get_arrow_xrange (tree_view, tree, &arrow.x, &x2); @@ -3320,23 +3581,18 @@ do_prelight (GtkTreeView *tree_view, /* We are still on the same node, but we might need to take care of the arrow */ - if (tree && node && TREE_VIEW_DRAW_EXPANDERS (tree_view)) + if (tree && node && gtk_tree_view_draw_expanders (tree_view)) { gboolean over_arrow; - gboolean flag_set; over_arrow = coords_are_over_arrow (tree_view, tree, node, x, y); - flag_set = GTK_TREE_VIEW_FLAG_SET (tree_view, - GTK_TREE_VIEW_ARROW_PRELIT); - if (over_arrow != flag_set) + if (over_arrow != tree_view->priv->arrow_prelit) { if (over_arrow) - GTK_TREE_VIEW_SET_FLAG (tree_view, - GTK_TREE_VIEW_ARROW_PRELIT); + tree_view->priv->arrow_prelit = TRUE; else - GTK_TREE_VIEW_UNSET_FLAG (tree_view, - GTK_TREE_VIEW_ARROW_PRELIT); + tree_view->priv->arrow_prelit = FALSE; gtk_tree_view_queue_draw_arrow (tree_view, tree, node); } @@ -3352,10 +3608,10 @@ do_prelight (GtkTreeView *tree_view, GTK_RBNODE_UNSET_FLAG (tree_view->priv->prelight_node, GTK_RBNODE_IS_PRELIT); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT) - && TREE_VIEW_DRAW_EXPANDERS (tree_view)) + if (tree_view->priv->arrow_prelit + && gtk_tree_view_draw_expanders (tree_view)) { - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_ARROW_PRELIT); + tree_view->priv->arrow_prelit = FALSE; gtk_tree_view_queue_draw_arrow (tree_view, tree_view->priv->prelight_tree, @@ -3381,10 +3637,10 @@ do_prelight (GtkTreeView *tree_view, /* Prelight the new node and arrow */ - if (TREE_VIEW_DRAW_EXPANDERS (tree_view) + if (gtk_tree_view_draw_expanders (tree_view) && coords_are_over_arrow (tree_view, tree, node, x, y)) { - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_ARROW_PRELIT); + tree_view->priv->arrow_prelit = TRUE; gtk_tree_view_queue_draw_arrow (tree_view, tree, node); } @@ -3413,7 +3669,8 @@ prelight_or_select (GtkTreeView *tree_view, if (tree_view->priv->hover_selection && (mode == GTK_SELECTION_SINGLE || mode == GTK_SELECTION_BROWSE) && !(tree_view->priv->edited_column && - tree_view->priv->edited_column->editable_widget)) + gtk_cell_area_get_edit_widget + (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column))))) { if (node) { @@ -3425,7 +3682,7 @@ prelight_or_select (GtkTreeView *tree_view, gtk_tree_selection_select_path (tree_view->priv->selection, path); if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) { - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); + tree_view->priv->draw_keyfocus = FALSE; gtk_tree_view_real_set_cursor (tree_view, path, FALSE, FALSE); } gtk_tree_path_free (path); @@ -3528,16 +3785,19 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) { GtkAllocation left_allocation, right_allocation; GdkRectangle visible_rect; + GtkWidget *button; gtk_tree_view_get_visible_rect (tree_view, &visible_rect); if (reorder->left_column) { - gtk_widget_get_allocation (reorder->left_column->button, &left_allocation); + button = gtk_tree_view_column_get_button (reorder->left_column); + gtk_widget_get_allocation (button, &left_allocation); x = left_allocation.x + left_allocation.width; } else { - gtk_widget_get_allocation (reorder->right_column->button, &right_allocation); + button = gtk_tree_view_column_get_button (reorder->right_column); + gtk_widget_get_allocation (button, &right_allocation); x = right_allocation.x; } @@ -3555,6 +3815,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) if (tree_view->priv->drag_column_window_state != DRAG_COLUMN_WINDOW_STATE_ORIGINAL) { GtkAllocation drag_allocation; + GtkWidget *button; if (tree_view->priv->drag_highlight_window) { @@ -3563,11 +3824,12 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) gdk_window_destroy (tree_view->priv->drag_highlight_window); } + button = gtk_tree_view_column_get_button (tree_view->priv->drag_column); attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; attributes.x = tree_view->priv->drag_column_x; attributes.y = 0; - gtk_widget_get_allocation (tree_view->priv->drag_column->button, &drag_allocation); + gtk_widget_get_allocation (button, &drag_allocation); width = attributes.width = drag_allocation.width; height = attributes.height = drag_allocation.height; attributes.visual = gtk_widget_get_visual (GTK_WIDGET (tree_view)); @@ -3596,6 +3858,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) else if (arrow_type == DRAG_COLUMN_WINDOW_STATE_ARROW) { GtkAllocation button_allocation; + GtkWidget *button; width = tree_view->priv->expander_size; @@ -3603,13 +3866,15 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) gdk_window_get_origin (tree_view->priv->header_window, &x, &y); if (reorder->left_column) { - gtk_widget_get_allocation (reorder->left_column->button, &button_allocation); + button = gtk_tree_view_column_get_button (reorder->left_column); + gtk_widget_get_allocation (button, &button_allocation); x += button_allocation.x + button_allocation.width - width/2; height = button_allocation.height; } else { - gtk_widget_get_allocation (reorder->right_column->button, &button_allocation); + button = gtk_tree_view_column_get_button (reorder->right_column); + gtk_widget_get_allocation (button, &button_allocation); x += button_allocation.x - width/2; height = button_allocation.height; } @@ -3666,6 +3931,7 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) arrow_type == DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT) { GtkAllocation allocation; + GtkWidget *button; width = tree_view->priv->expander_size; @@ -3681,12 +3947,14 @@ gtk_tree_view_motion_draw_column_motion_arrow (GtkTreeView *tree_view) if (reorder->left_column) { - gtk_widget_get_allocation (reorder->left_column->button, &allocation); + button = gtk_tree_view_column_get_button (reorder->left_column); + gtk_widget_get_allocation (button, &allocation); height = allocation.height; } else { - gtk_widget_get_allocation (reorder->right_column->button, &allocation); + button = gtk_tree_view_column_get_button (reorder->right_column); + gtk_widget_get_allocation (button, &allocation); height = allocation.height; } @@ -3773,17 +4041,21 @@ gtk_tree_view_motion_resize_column (GtkWidget *widget, x = event->x; if (tree_view->priv->hadjustment) - x += tree_view->priv->hadjustment->value; + x += gtk_adjustment_get_value (tree_view->priv->hadjustment); new_width = gtk_tree_view_new_column_width (tree_view, tree_view->priv->drag_pos, &x); if (x != tree_view->priv->x_drag && (new_width != gtk_tree_view_column_get_fixed_width (column))) { - column->use_resized_width = TRUE; - column->resized_width = new_width; + _gtk_tree_view_column_set_use_resized_width (column, TRUE); + if (gtk_tree_view_column_get_expand (column)) - column->resized_width -= tree_view->priv->last_extra_space_per_column; + new_width -= tree_view->priv->last_extra_space_per_column; + + _gtk_tree_view_column_set_resized_width (column, new_width); + + gtk_widget_queue_resize (widget); } @@ -3836,7 +4108,7 @@ gtk_tree_view_vertical_autoscroll (GtkTreeView *tree_view) } gtk_adjustment_set_value (tree_view->priv->vadjustment, - MAX (tree_view->priv->vadjustment->value + offset, 0.0)); + MAX (gtk_adjustment_get_value (tree_view->priv->vadjustment) + offset, 0.0)); } static gboolean @@ -3861,7 +4133,7 @@ gtk_tree_view_horizontal_autoscroll (GtkTreeView *tree_view) offset = offset/3; gtk_adjustment_set_value (tree_view->priv->hadjustment, - MAX (tree_view->priv->hadjustment->value + offset, 0.0)); + MAX (gtk_adjustment_get_value (tree_view->priv->hadjustment) + offset, 0.0)); return TRUE; @@ -3874,6 +4146,7 @@ gtk_tree_view_motion_drag_column (GtkWidget *widget, GtkAllocation allocation, button_allocation; GtkTreeView *tree_view = (GtkTreeView *) widget; GtkTreeViewColumn *column = tree_view->priv->drag_column; + GtkWidget *button; gint x, y; /* Sanity Check */ @@ -3881,11 +4154,13 @@ gtk_tree_view_motion_drag_column (GtkWidget *widget, (event->window != tree_view->priv->drag_window)) return FALSE; + button = gtk_tree_view_column_get_button (column); + /* Handle moving the header */ gdk_window_get_position (tree_view->priv->drag_window, &x, &y); gtk_widget_get_allocation (widget, &allocation); - gtk_widget_get_allocation (column->button, &button_allocation); - x = CLAMP (x + (gint)event->x - column->drag_x, 0, + gtk_widget_get_allocation (button, &button_allocation); + x = CLAMP (x + (gint)event->x - _gtk_tree_view_column_get_drag_x (column), 0, MAX (tree_view->priv->width, allocation.width) - button_allocation.width); gdk_window_move (tree_view->priv->drag_window, x, y); @@ -4294,11 +4569,11 @@ gtk_tree_view_motion (GtkWidget *widget, tree_view = (GtkTreeView *) widget; /* Resizing a column */ - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_RESIZE)) + if (tree_view->priv->in_column_resize) return gtk_tree_view_motion_resize_column (widget, event); /* Drag column */ - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) + if (tree_view->priv->in_column_drag) return gtk_tree_view_motion_drag_column (widget, event); /* Sanity check it */ @@ -4476,7 +4751,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, gint horizontal_separator; gint focus_line_width; gboolean allow_rules; - gboolean has_special_cell; + gboolean has_can_focus_cell; gboolean rtl; gint n_visible_columns; gint pointer_x, pointer_y; @@ -4603,7 +4878,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, is_separator = row_is_separator (tree_view, &iter, NULL); - max_height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + max_height = gtk_tree_view_get_row_height (tree_view, node); cell_offset = 0; highlight_x = 0; /* should match x coord of first cell */ @@ -4623,7 +4898,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, parity = _gtk_rbtree_node_find_parity (tree, node); /* we *need* to set cell data on all cells before the call - * to _has_special_cell, else _has_special_cell() does not + * to _has_can_focus_cell, else _has_can_focus_cell() does not * return a correct value. */ for (list = (rtl ? g_list_last (tree_view->priv->columns) : g_list_first (tree_view->priv->columns)); @@ -4638,7 +4913,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, node->children?TRUE:FALSE); } - has_special_cell = gtk_tree_view_has_special_cell (tree_view); + has_can_focus_cell = gtk_tree_view_has_can_focus_cell (tree_view); for (list = (rtl ? g_list_last (tree_view->priv->columns) : g_list_first (tree_view->priv->columns)); list; @@ -4649,6 +4924,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, gchar new_detail[128]; gint width; GtkStateType state; + gboolean draw_focus; if (!gtk_tree_view_column_get_visible (column)) continue; @@ -4767,6 +5043,15 @@ gtk_tree_view_bin_draw (GtkWidget *widget, else state = GTK_STATE_NORMAL; + if (node == cursor && has_can_focus_cell + && ((column == tree_view->priv->focus_column + && tree_view->priv->draw_keyfocus && + gtk_widget_has_focus (widget)) + || (column == tree_view->priv->edited_column))) + draw_focus = TRUE; + else + draw_focus = FALSE; + /* Draw background */ is_first = (rtl ? !list->next : !list->prev); is_last = (rtl ? !list->prev : !list->next); @@ -4800,7 +5085,7 @@ gtk_tree_view_bin_draw (GtkWidget *widget, cell_area.x += (depth - 1) * tree_view->priv->level_indentation; cell_area.width -= (depth - 1) * tree_view->priv->level_indentation; - if (TREE_VIEW_DRAW_EXPANDERS(tree_view)) + if (gtk_tree_view_draw_expanders (tree_view)) { if (!rtl) cell_area.x += depth * tree_view->priv->expander_size; @@ -4828,8 +5113,9 @@ gtk_tree_view_bin_draw (GtkWidget *widget, cr, &background_area, &cell_area, - flags); - if (TREE_VIEW_DRAW_EXPANDERS(tree_view) + flags, + draw_focus); + if (gtk_tree_view_draw_expanders (tree_view) && (node->flags & GTK_RBNODE_IS_PARENT) == GTK_RBNODE_IS_PARENT) { if (!got_pointer) @@ -4862,7 +5148,8 @@ gtk_tree_view_bin_draw (GtkWidget *widget, cr, &background_area, &cell_area, - flags); + flags, + draw_focus); } if (draw_hgrid_lines) @@ -4954,19 +5241,6 @@ gtk_tree_view_bin_draw (GtkWidget *widget, } } - if (node == cursor && has_special_cell && - ((column == tree_view->priv->focus_column && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS) && - gtk_widget_has_focus (widget)) || - (column == tree_view->priv->edited_column))) - { - _gtk_tree_view_column_cell_draw_focus (column, - cr, - &background_area, - &cell_area, - flags); - } - cell_offset += gtk_tree_view_column_get_width (column); } @@ -5004,10 +5278,10 @@ gtk_tree_view_bin_draw (GtkWidget *widget, (is_first ? (is_last ? "treeview-drop-indicator" : "treeview-drop-indicator-left" ) : (is_last ? "treeview-drop-indicator-right" : "tree-view-drop-indicator-middle" )), - 0, BACKGROUND_FIRST_PIXEL (tree_view, tree, node) + 0, gtk_tree_view_get_row_y_offset (tree_view, tree, node) - focus_line_width / 2, gdk_window_get_width (tree_view->priv->bin_window), - ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)) + gtk_tree_view_get_row_height (tree_view, node) - focus_line_width + 1); break; } @@ -5024,8 +5298,8 @@ gtk_tree_view_bin_draw (GtkWidget *widget, } /* draw the big row-spanning focus rectangle, if needed */ - if (!has_special_cell && node == cursor && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS) && + if (!has_can_focus_cell && node == cursor && + tree_view->priv->draw_keyfocus && gtk_widget_has_focus (widget)) { gint tmp_y, tmp_height; @@ -5039,13 +5313,13 @@ gtk_tree_view_bin_draw (GtkWidget *widget, if (draw_hgrid_lines) { - tmp_y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node) + grid_line_width / 2; - tmp_height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)) - grid_line_width; + tmp_y = gtk_tree_view_get_row_y_offset (tree_view, tree, node) + grid_line_width / 2; + tmp_height = gtk_tree_view_get_row_height (tree_view, node) - grid_line_width; } else { - tmp_y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node); - tmp_height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + tmp_y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + tmp_height = gtk_tree_view_get_row_height (tree_view, node); } gtk_paint_focus (style, @@ -5140,6 +5414,7 @@ gtk_tree_view_draw (GtkWidget *widget, cairo_t *cr) { GtkTreeView *tree_view = GTK_TREE_VIEW (widget); + GtkWidget *button; if (gtk_cairo_should_draw_window (cr, tree_view->priv->bin_window)) { @@ -5179,18 +5454,20 @@ gtk_tree_view_draw (GtkWidget *widget, continue; if (gtk_tree_view_column_get_visible (column)) - gtk_container_propagate_draw (GTK_CONTAINER (tree_view), - column->button, - cr); + { + button = gtk_tree_view_column_get_button (column); + gtk_container_propagate_draw (GTK_CONTAINER (tree_view), + button, cr); + } } } if (tree_view->priv->drag_window && gtk_cairo_should_draw_window (cr, tree_view->priv->drag_window)) { + button = gtk_tree_view_column_get_button (tree_view->priv->drag_column); gtk_container_propagate_draw (GTK_CONTAINER (tree_view), - tree_view->priv->drag_column->button, - cr); + button, cr); } return TRUE; @@ -5415,6 +5692,7 @@ gtk_tree_view_key_press (GtkWidget *widget, GdkEventKey *event) { GtkTreeView *tree_view = (GtkTreeView *) widget; + GtkWidget *button; if (tree_view->priv->rubber_band_status) { @@ -5424,7 +5702,7 @@ gtk_tree_view_key_press (GtkWidget *widget, return TRUE; } - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG)) + if (tree_view->priv->in_column_drag) { if (event->keyval == GDK_KEY_Escape) { @@ -5434,7 +5712,7 @@ gtk_tree_view_key_press (GtkWidget *widget, return TRUE; } - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)) + if (tree_view->priv->headers_visible) { GList *focus_column; gboolean rtl; @@ -5446,8 +5724,9 @@ gtk_tree_view_key_press (GtkWidget *widget, focus_column = focus_column->next) { GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (focus_column->data); - - if (gtk_widget_has_focus (column->button)) + + button = gtk_tree_view_column_get_button (column); + if (gtk_widget_has_focus (button)) break; } @@ -5469,54 +5748,62 @@ gtk_tree_view_key_press (GtkWidget *widget, || event->keyval == (rtl ? GDK_KEY_KP_Right : GDK_KEY_KP_Left)) { GtkRequisition button_req; - gint old_width = column->resized_width; + gint old_width = _gtk_tree_view_column_get_resized_width (column); + gint new_width; - gtk_widget_get_preferred_size (column->button, &button_req, NULL); + button = gtk_tree_view_column_get_button (column); - column->resized_width = MAX (column->resized_width, - gtk_tree_view_column_get_width (column)); - column->resized_width -= 2; - if (column->resized_width < 0) - column->resized_width = 0; + gtk_widget_get_preferred_size (button, &button_req, NULL); + + new_width = MAX (old_width, gtk_tree_view_column_get_width (column)); + new_width -= 2; + if (new_width < 0) + new_width = 0; + + _gtk_tree_view_column_set_resized_width (column, new_width); min_width = gtk_tree_view_column_get_min_width (column); if (min_width == -1) - column->resized_width = MAX (button_req.width, - column->resized_width); + new_width = MAX (button_req.width, new_width); else { - column->resized_width = MAX (min_width, - column->resized_width); + new_width = MAX (min_width, new_width); } max_width = gtk_tree_view_column_get_max_width (column); if (max_width != -1) - column->resized_width = MIN (column->resized_width, max_width); + new_width = MIN (new_width, max_width); - column->use_resized_width = TRUE; + _gtk_tree_view_column_set_use_resized_width (column, TRUE); - if (column->resized_width != old_width) - gtk_widget_queue_resize (widget); + if (new_width != old_width) + { + _gtk_tree_view_column_set_resized_width (column, new_width); + gtk_widget_queue_resize (widget); + } else gtk_widget_error_bell (widget); } else if (event->keyval == (rtl ? GDK_KEY_Left : GDK_KEY_Right) || event->keyval == (rtl ? GDK_KEY_KP_Left : GDK_KEY_KP_Right)) { - gint old_width = column->resized_width; + gint old_width = _gtk_tree_view_column_get_resized_width (column); + gint new_width; - column->resized_width = MAX (column->resized_width, - gtk_tree_view_column_get_width (column)); - column->resized_width += 2; + new_width = MAX (old_width, gtk_tree_view_column_get_width (column)); + new_width += 2; max_width = gtk_tree_view_column_get_max_width (column); if (max_width != -1) - column->resized_width = MIN (column->resized_width, max_width); + new_width = MIN (new_width, max_width); - column->use_resized_width = TRUE; + _gtk_tree_view_column_set_use_resized_width (column, TRUE); - if (column->resized_width != old_width) - gtk_widget_queue_resize (widget); + if (new_width != old_width) + { + _gtk_tree_view_column_set_resized_width (column, new_width); + gtk_widget_queue_resize (widget); + } else gtk_widget_error_bell (widget); } @@ -5769,8 +6056,8 @@ gtk_tree_view_node_queue_redraw (GtkTreeView *tree_view, gint y; y = _gtk_rbtree_node_find_offset (tree, node) - - tree_view->priv->vadjustment->value - + TREE_VIEW_HEADER_HEIGHT (tree_view); + - gtk_adjustment_get_value (tree_view->priv->vadjustment) + + gtk_tree_view_get_effective_header_height (tree_view); gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); gtk_widget_queue_draw_area (GTK_WIDGET (tree_view), @@ -5788,11 +6075,11 @@ node_is_visible (GtkTreeView *tree_view, int height; y = _gtk_rbtree_node_find_offset (tree, node); - height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + height = gtk_tree_view_get_row_height (tree_view, node); - if (y >= tree_view->priv->vadjustment->value && - y + height <= (tree_view->priv->vadjustment->value - + tree_view->priv->vadjustment->page_size)) + if (y >= gtk_adjustment_get_value (tree_view->priv->vadjustment) && + y + height <= (gtk_adjustment_get_value (tree_view->priv->vadjustment) + + gtk_adjustment_get_page_size (tree_view->priv->vadjustment))) return TRUE; return FALSE; @@ -5812,7 +6099,6 @@ validate_row (GtkTreeView *tree_view, gint height = 0; gint horizontal_separator; gint vertical_separator; - gint focus_line_width; gint depth = gtk_tree_path_get_depth (path); gboolean retval = FALSE; gboolean is_separator = FALSE; @@ -5831,7 +6117,6 @@ validate_row (GtkTreeView *tree_view, gtk_widget_style_get (GTK_WIDGET (tree_view), "focus-padding", &focus_pad, - "focus-line-width", &focus_line_width, "horizontal-separator", &horizontal_separator, "vertical-separator", &vertical_separator, "grid-line-width", &grid_line_width, @@ -5860,28 +6145,33 @@ validate_row (GtkTreeView *tree_view, for (list = tree_view->priv->columns; list; list = list->next) { - gint tmp_width; - gint tmp_height; + gint padding = 0; + gint original_width; + gint new_width; + gint row_height; column = list->data; if (!gtk_tree_view_column_get_visible (column)) continue; - if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID) && !column->dirty) + if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID) && + !_gtk_tree_view_column_cell_get_dirty (column)) continue; + original_width = _gtk_tree_view_column_get_requested_width (column); + gtk_tree_view_column_cell_set_cell_data (column, tree_view->priv->model, iter, GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT), node->children?TRUE:FALSE); gtk_tree_view_column_cell_get_size (column, NULL, NULL, NULL, - &tmp_width, &tmp_height); + NULL, &row_height); if (!is_separator) { - tmp_height += vertical_separator; - height = MAX (height, tmp_height); + row_height += vertical_separator; + height = MAX (height, row_height); height = MAX (height, tree_view->priv->expander_size); } else @@ -5894,27 +6184,28 @@ validate_row (GtkTreeView *tree_view, if (gtk_tree_view_is_expander_column (tree_view, column)) { - tmp_width = tmp_width + horizontal_separator + (depth - 1) * tree_view->priv->level_indentation; + padding += horizontal_separator + (depth - 1) * tree_view->priv->level_indentation; - if (TREE_VIEW_DRAW_EXPANDERS (tree_view)) - tmp_width += depth * tree_view->priv->expander_size; + if (gtk_tree_view_draw_expanders (tree_view)) + padding += depth * tree_view->priv->expander_size; } else - tmp_width = tmp_width + horizontal_separator; + padding += horizontal_separator; if (draw_vgrid_lines) { if (list->data == first_column || list->data == last_column) - tmp_width += grid_line_width / 2.0; + padding += grid_line_width / 2.0; else - tmp_width += grid_line_width; + padding += grid_line_width; } - if (tmp_width > column->requested_width) - { - retval = TRUE; - column->requested_width = tmp_width; - } + /* Update the padding for the column */ + _gtk_tree_view_column_push_padding (column, padding); + new_width = _gtk_tree_view_column_get_requested_width (column); + + if (new_width > original_width) + retval = TRUE; } if (draw_hgrid_lines) @@ -5955,7 +6246,7 @@ validate_visible_area (GtkTreeView *tree_view) return; gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); - total_height = allocation.height - TREE_VIEW_HEADER_HEIGHT (tree_view); + total_height = allocation.height - gtk_tree_view_get_effective_header_height (tree_view); if (total_height == 0) return; @@ -5979,7 +6270,7 @@ validate_visible_area (GtkTreeView *tree_view) if (tree_view->priv->scroll_to_use_align) { - gint height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + gint height = gtk_tree_view_get_row_height (tree_view, node); area_above = (total_height - height) * tree_view->priv->scroll_to_row_align; area_below = total_height - area_above - height; @@ -5993,43 +6284,43 @@ validate_visible_area (GtkTreeView *tree_view) * 2) row visible */ gint dy; - gint height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + gint height = gtk_tree_view_get_row_height (tree_view, node); dy = _gtk_rbtree_node_find_offset (tree, node); - if (dy >= tree_view->priv->vadjustment->value && - dy + height <= (tree_view->priv->vadjustment->value - + tree_view->priv->vadjustment->page_size)) + if (dy >= gtk_adjustment_get_value (tree_view->priv->vadjustment) && + dy + height <= (gtk_adjustment_get_value (tree_view->priv->vadjustment) + + gtk_adjustment_get_page_size (tree_view->priv->vadjustment))) { /* row visible: keep the row at the same position */ - area_above = dy - tree_view->priv->vadjustment->value; - area_below = (tree_view->priv->vadjustment->value + - tree_view->priv->vadjustment->page_size) + area_above = dy - gtk_adjustment_get_value (tree_view->priv->vadjustment); + area_below = (gtk_adjustment_get_value (tree_view->priv->vadjustment) + + gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) - dy - height; } else { /* row not visible */ if (dy >= 0 - && dy + height <= tree_view->priv->vadjustment->page_size) + && dy + height <= gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) { /* row at the beginning -- fixed */ area_above = dy; - area_below = tree_view->priv->vadjustment->page_size + area_below = gtk_adjustment_get_page_size (tree_view->priv->vadjustment) - area_above - height; } - else if (dy >= (tree_view->priv->vadjustment->upper - - tree_view->priv->vadjustment->page_size)) + else if (dy >= (gtk_adjustment_get_upper (tree_view->priv->vadjustment) - + gtk_adjustment_get_page_size (tree_view->priv->vadjustment))) { /* row at the end -- fixed */ - area_above = dy - (tree_view->priv->vadjustment->upper - - tree_view->priv->vadjustment->page_size); - area_below = tree_view->priv->vadjustment->page_size - + area_above = dy - (gtk_adjustment_get_upper (tree_view->priv->vadjustment) - + gtk_adjustment_get_page_size (tree_view->priv->vadjustment)); + area_below = gtk_adjustment_get_page_size (tree_view->priv->vadjustment) - area_above - height; if (area_below < 0) { - area_above = tree_view->priv->vadjustment->page_size - height; + area_above = gtk_adjustment_get_page_size (tree_view->priv->vadjustment) - height; area_below = 0; } } @@ -6090,7 +6381,7 @@ validate_visible_area (GtkTreeView *tree_view) size_changed = TRUE; } area_above = 0; - area_below = total_height - ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + area_below = total_height - gtk_tree_view_get_row_height (tree_view, node); } above_path = gtk_tree_path_copy (path); @@ -6201,7 +6492,7 @@ validate_visible_area (GtkTreeView *tree_view) size_changed = TRUE; } - area_below -= ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + area_below -= gtk_tree_view_get_row_height (tree_view, node); } gtk_tree_path_free (path); @@ -6241,7 +6532,7 @@ validate_visible_area (GtkTreeView *tree_view) if (validate_row (tree_view, tree, node, &iter, above_path)) size_changed = TRUE; } - area_above -= ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + area_above -= gtk_tree_view_get_row_height (tree_view, node); } /* if we scrolled to a path, we need to set the dy here, @@ -6254,7 +6545,7 @@ validate_visible_area (GtkTreeView *tree_view) need_redraw = TRUE; } - else if (tree_view->priv->height <= tree_view->priv->vadjustment->page_size) + else if (tree_view->priv->height <= gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) { /* when we are not scrolling, we should never set dy to something * else than zero. we update top_row to be in sync with dy = 0. @@ -6262,9 +6553,9 @@ validate_visible_area (GtkTreeView *tree_view) gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0); gtk_tree_view_dy_to_top_row (tree_view); } - else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height) + else if (gtk_adjustment_get_value (tree_view->priv->vadjustment) + gtk_adjustment_get_page_size (tree_view->priv->vadjustment) > tree_view->priv->height) { - gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), tree_view->priv->height - tree_view->priv->vadjustment->page_size); + gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), tree_view->priv->height - gtk_adjustment_get_page_size (tree_view->priv->vadjustment)); gtk_tree_view_dy_to_top_row (tree_view); } else @@ -6281,10 +6572,10 @@ validate_visible_area (GtkTreeView *tree_view) gtk_widget_get_preferred_size (GTK_WIDGET (tree_view), &requisition, NULL); - tree_view->priv->hadjustment->upper = MAX (tree_view->priv->hadjustment->upper, (gfloat)requisition.width); - tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->upper, (gfloat)requisition.height); - gtk_adjustment_changed (tree_view->priv->hadjustment); - gtk_adjustment_changed (tree_view->priv->vadjustment); + gtk_adjustment_set_upper (tree_view->priv->hadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->hadjustment), requisition.width)); + gtk_adjustment_set_upper (tree_view->priv->vadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->vadjustment), requisition.height)); gtk_widget_queue_resize (GTK_WIDGET (tree_view)); } @@ -6329,7 +6620,7 @@ initialize_fixed_height_mode (GtkTreeView *tree_view) gtk_tree_path_free (path); - tree_view->priv->fixed_height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + tree_view->priv->fixed_height = gtk_tree_view_get_row_height (tree_view, node); } _gtk_rbtree_set_fixed_height (tree_view->priv->tree, @@ -6441,7 +6732,7 @@ do_validate_rows (GtkTreeView *tree_view, gboolean queue_resize) { gint height; - height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + height = gtk_tree_view_get_row_height (tree_view, node); if (prev_height < 0) prev_height = height; else if (prev_height != height) @@ -6479,12 +6770,12 @@ do_validate_rows (GtkTreeView *tree_view, gboolean queue_resize) * Currently bypassing this but the real solution is to not update the scroll adjustments * untill we've recieved an allocation (never update scroll adjustments from size-requests). */ - gtk_tree_view_size_request (GTK_WIDGET (tree_view), &requisition); + gtk_tree_view_size_request (GTK_WIDGET (tree_view), &requisition, FALSE); - tree_view->priv->hadjustment->upper = MAX (tree_view->priv->hadjustment->upper, (gfloat)requisition.width); - tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->upper, (gfloat)requisition.height); - gtk_adjustment_changed (tree_view->priv->hadjustment); - gtk_adjustment_changed (tree_view->priv->vadjustment); + gtk_adjustment_set_upper (tree_view->priv->hadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->hadjustment), requisition.width)); + gtk_adjustment_set_upper (tree_view->priv->vadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->vadjustment), requisition.height)); if (queue_resize) gtk_widget_queue_resize (GTK_WIDGET (tree_view)); @@ -6546,10 +6837,10 @@ do_presize_handler (GtkTreeView *tree_view) gtk_widget_get_preferred_size (GTK_WIDGET (tree_view), &requisition, NULL); - tree_view->priv->hadjustment->upper = MAX (tree_view->priv->hadjustment->upper, (gfloat)requisition.width); - tree_view->priv->vadjustment->upper = MAX (tree_view->priv->vadjustment->upper, (gfloat)requisition.height); - gtk_adjustment_changed (tree_view->priv->hadjustment); - gtk_adjustment_changed (tree_view->priv->vadjustment); + gtk_adjustment_set_upper (tree_view->priv->hadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->hadjustment), requisition.width)); + gtk_adjustment_set_upper (tree_view->priv->vadjustment, + MAX (gtk_adjustment_get_upper (tree_view->priv->vadjustment), requisition.height)); gtk_widget_queue_resize (GTK_WIDGET (tree_view)); } @@ -6600,7 +6891,7 @@ gtk_tree_view_bin_process_updates (GtkTreeView *tree_view) static gboolean scroll_sync_handler (GtkTreeView *tree_view) { - if (tree_view->priv->height <= tree_view->priv->vadjustment->page_size) + if (tree_view->priv->height <= gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0); else if (gtk_tree_row_reference_valid (tree_view->priv->top_row)) gtk_tree_view_top_row_to_dy (tree_view); @@ -6714,7 +7005,7 @@ gtk_tree_view_top_row_to_dy (GtkTreeView *tree_view) return; } - if (ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)) + if (gtk_tree_view_get_row_height (tree_view, node) < tree_view->priv->top_row_dy) { /* new top row -- do NOT install the idle handler */ @@ -6725,8 +7016,8 @@ gtk_tree_view_top_row_to_dy (GtkTreeView *tree_view) new_dy = _gtk_rbtree_node_find_offset (tree, node); new_dy += tree_view->priv->top_row_dy; - if (new_dy + tree_view->priv->vadjustment->page_size > tree_view->priv->height) - new_dy = tree_view->priv->height - tree_view->priv->vadjustment->page_size; + if (new_dy + gtk_adjustment_get_page_size (tree_view->priv->vadjustment) > tree_view->priv->height) + new_dy = tree_view->priv->height - gtk_adjustment_get_page_size (tree_view->priv->vadjustment); new_dy = MAX (0, new_dy); @@ -6737,11 +7028,13 @@ gtk_tree_view_top_row_to_dy (GtkTreeView *tree_view) void -_gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view) +_gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view, + gboolean install_handler) { tree_view->priv->mark_rows_col_dirty = TRUE; - install_presize_handler (tree_view); + if (install_handler) + install_presize_handler (tree_view); } /* @@ -7102,7 +7395,7 @@ set_destination_row (GtkTreeView *tree_view, di = get_info (tree_view); - if (di == NULL || y - TREE_VIEW_HEADER_HEIGHT (tree_view) < 0) + if (di == NULL || y - gtk_tree_view_get_effective_header_height (tree_view) < 0) { /* someone unset us as a drag dest, note that if * we return FALSE drag_leave isn't called @@ -7188,7 +7481,7 @@ out: { GtkWidget *source_widget; - *suggested_action = context->suggested_action; + *suggested_action = gdk_drag_context_get_suggested_action (context); source_widget = gtk_drag_get_source_widget (context); if (source_widget == widget) @@ -7196,7 +7489,7 @@ out: /* Default to MOVE, unless the user has * pressed ctrl or shift to affect available actions */ - if ((context->actions & GDK_ACTION_MOVE) != 0) + if ((gdk_drag_context_get_actions (context) & GDK_ACTION_MOVE) != 0) *suggested_action = GDK_ACTION_MOVE; } @@ -7428,7 +7721,7 @@ gtk_tree_view_drag_data_get (GtkWidget *widget, goto done; /* If drag_data_get does nothing, try providing row data. */ - if (selection_data->target == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) + if (gtk_selection_data_get_target (selection_data) == gdk_atom_intern_static_string ("GTK_TREE_MODEL_ROW")) { gtk_tree_set_row_drag_data (selection_data, model, @@ -7708,7 +8001,7 @@ gtk_tree_view_drag_data_received (GtkWidget *widget, if (dest_row == NULL) return; - if (selection_data->length >= 0) + if (gtk_selection_data_get_length (selection_data) >= 0) { if (path_down_mode) { @@ -7719,7 +8012,7 @@ gtk_tree_view_drag_data_received (GtkWidget *widget, } } - if (selection_data->length >= 0) + if (gtk_selection_data_get_length (selection_data) >= 0) { if (gtk_tree_drag_dest_drag_data_received (GTK_TREE_DRAG_DEST (model), dest_row, @@ -7729,7 +8022,7 @@ gtk_tree_view_drag_data_received (GtkWidget *widget, gtk_drag_finish (context, accepted, - (context->action == GDK_ACTION_MOVE), + (gdk_drag_context_get_selected_action (context) == GDK_ACTION_MOVE), time); if (gtk_tree_path_get_depth (dest_row) == 1 @@ -7782,8 +8075,12 @@ gtk_tree_view_remove (GtkContainer *container, while (tmp_list) { GtkTreeViewColumn *column; + GtkWidget *button; + column = tmp_list->data; - if (column->button == widget) + button = gtk_tree_view_column_get_button (column); + + if (button == widget) { gtk_widget_unparent (widget); return; @@ -7801,6 +8098,7 @@ gtk_tree_view_forall (GtkContainer *container, GtkTreeView *tree_view = GTK_TREE_VIEW (container); GtkTreeViewChild *child = NULL; GtkTreeViewColumn *column; + GtkWidget *button; GList *tmp_list; tmp_list = tree_view->priv->children; @@ -7817,25 +8115,29 @@ gtk_tree_view_forall (GtkContainer *container, for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next) { column = tmp_list->data; + button = gtk_tree_view_column_get_button (column); - if (column->button) - (* callback) (column->button, callback_data); + if (button) + (* callback) (button, callback_data); } } -/* Returns TRUE if the treeview contains no "special" (editable or activatable) - * cells. If so we draw one big row-spanning focus rectangle. +/* Returns TRUE is any of the columns contains a cell that can-focus. + * If this is not the case, a column-spanning focus rectangle will be + * drawn. */ static gboolean -gtk_tree_view_has_special_cell (GtkTreeView *tree_view) +gtk_tree_view_has_can_focus_cell (GtkTreeView *tree_view) { GList *list; for (list = tree_view->priv->columns; list; list = list->next) { - if (!gtk_tree_view_column_get_visible (GTK_TREE_VIEW_COLUMN (list->data))) + GtkTreeViewColumn *column = list->data; + + if (!gtk_tree_view_column_get_visible (column)) continue; - if (_gtk_tree_view_column_count_special_cells (list->data)) + if (gtk_cell_area_is_activatable (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)))) return TRUE; } @@ -7937,12 +8239,12 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, { GtkTreeViewColumn *column; GtkWidget *focus_child; - + GtkWidget *button; GList *last_column, *first_column; GList *tmp_list; gboolean rtl; - if (! GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE)) + if (! tree_view->priv->headers_visible) return FALSE; focus_child = gtk_container_get_focus_child (GTK_CONTAINER (tree_view)); @@ -7951,8 +8253,9 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, while (first_column) { column = GTK_TREE_VIEW_COLUMN (first_column->data); + button = gtk_tree_view_column_get_button (column); - if (gtk_widget_get_can_focus (column->button) && + if (gtk_widget_get_can_focus (button) && gtk_tree_view_column_get_visible (column) && (gtk_tree_view_column_get_clickable (column) || gtk_tree_view_column_get_reorderable (column))) @@ -7969,8 +8272,9 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, while (last_column) { column = GTK_TREE_VIEW_COLUMN (last_column->data); + button = gtk_tree_view_column_get_button (column); - if (gtk_widget_get_can_focus (column->button) && + if (gtk_widget_get_can_focus (button) && gtk_tree_view_column_get_visible (column) && (gtk_tree_view_column_get_clickable (column) || gtk_tree_view_column_get_reorderable (column))) @@ -7989,11 +8293,16 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, case GTK_DIR_DOWN: if (focus_child == NULL) { - if (tree_view->priv->focus_column != NULL && - gtk_widget_get_can_focus (tree_view->priv->focus_column->button)) - focus_child = tree_view->priv->focus_column->button; + if (tree_view->priv->focus_column != NULL) + button = gtk_tree_view_column_get_button (tree_view->priv->focus_column); + else + button = NULL; + + if (button && gtk_widget_get_can_focus (button)) + focus_child = button; else - focus_child = GTK_TREE_VIEW_COLUMN (first_column->data)->button; + focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (first_column->data)); + gtk_widget_grab_focus (focus_child); break; } @@ -8004,11 +8313,12 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, if (focus_child == NULL) { if (tree_view->priv->focus_column != NULL) - focus_child = tree_view->priv->focus_column->button; + focus_child = gtk_tree_view_column_get_button (tree_view->priv->focus_column); else if (dir == GTK_DIR_LEFT) - focus_child = GTK_TREE_VIEW_COLUMN (last_column->data)->button; + focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (last_column->data)); else - focus_child = GTK_TREE_VIEW_COLUMN (first_column->data)->button; + focus_child = gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (first_column->data)); + gtk_widget_grab_focus (focus_child); break; } @@ -8022,7 +8332,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, /* We need to move the focus among the row of buttons. */ for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next) - if (GTK_TREE_VIEW_COLUMN (tmp_list->data)->button == focus_child) + if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (tmp_list->data)) == focus_child) break; if ((tmp_list == first_column && dir == (rtl ? GTK_DIR_RIGHT : GTK_DIR_LEFT)) @@ -8035,6 +8345,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, while (tmp_list) { GtkTreeViewColumn *column; + GtkWidget *button; if (dir == (rtl ? GTK_DIR_LEFT : GTK_DIR_RIGHT)) tmp_list = tmp_list->next; @@ -8047,12 +8358,13 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, break; } column = tmp_list->data; - if (column->button && + button = gtk_tree_view_column_get_button (column); + if (button && gtk_tree_view_column_get_visible (column) && - gtk_widget_get_can_focus (column->button)) + gtk_widget_get_can_focus (button)) { - focus_child = column->button; - gtk_widget_grab_focus (column->button); + focus_child = button; + gtk_widget_grab_focus (button); break; } } @@ -8067,7 +8379,7 @@ gtk_tree_view_header_focus (GtkTreeView *tree_view, if (focus_child) { for (tmp_list = tree_view->priv->columns; tmp_list; tmp_list = tmp_list->next) - if (GTK_TREE_VIEW_COLUMN (tmp_list->data)->button == focus_child) + if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (tmp_list->data)) == focus_child) { tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (tmp_list->data); break; @@ -8239,7 +8551,7 @@ gtk_tree_view_set_focus_child (GtkContainer *container, for (list = tree_view->priv->columns; list; list = list->next) { - if (GTK_TREE_VIEW_COLUMN (list->data)->button == child) + if (gtk_tree_view_column_get_button (GTK_TREE_VIEW_COLUMN (list->data)) == child) { tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (list->data); break; @@ -8269,7 +8581,7 @@ gtk_tree_view_real_move_cursor (GtkTreeView *tree_view, return FALSE; gtk_tree_view_stop_editing (tree_view, FALSE); - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); + tree_view->priv->draw_keyfocus = TRUE; gtk_widget_grab_focus (GTK_WIDGET (tree_view)); if (gtk_get_current_event_state (&state)) @@ -8617,17 +8929,16 @@ gtk_tree_view_row_has_child_toggled (GtkTreeModel *model, else GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_PARENT); - if (has_child && GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IS_LIST)) + if (has_child && tree_view->priv->is_list) { - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_IS_LIST); - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS)) + tree_view->priv->is_list = FALSE; + if (tree_view->priv->show_expanders) { GList *list; for (list = tree_view->priv->columns; list; list = list->next) if (gtk_tree_view_column_get_visible (GTK_TREE_VIEW_COLUMN (list->data))) { - GTK_TREE_VIEW_COLUMN (list->data)->dirty = TRUE; _gtk_tree_view_column_cell_set_dirty (GTK_TREE_VIEW_COLUMN (list->data), TRUE); break; } @@ -8849,6 +9160,7 @@ gtk_tree_view_get_background_xrange (GtkTreeView *tree_view, *x2 = total_width; /* width of 0 */ } } + static void gtk_tree_view_get_arrow_xrange (GtkTreeView *tree_view, GtkRBTree *tree, @@ -8915,7 +9227,6 @@ gtk_tree_view_build_tree (GtkTreeView *tree_view, { GtkRBNode *temp = NULL; GtkTreePath *path = NULL; - gboolean is_list = GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IS_LIST); do { @@ -8931,7 +9242,7 @@ gtk_tree_view_build_tree (GtkTreeView *tree_view, } } - if (is_list) + if (tree_view->priv->is_list) continue; if (recurse) @@ -8986,11 +9297,11 @@ gtk_tree_view_clamp_node_visible (GtkTreeView *tree_view, /* just return if the node is visible, avoiding a costly expose */ node_dy = _gtk_rbtree_node_find_offset (tree, node); - height = ROW_HEIGHT (tree_view, GTK_RBNODE_GET_HEIGHT (node)); + height = gtk_tree_view_get_row_height (tree_view, node); if (! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) - && node_dy >= tree_view->priv->vadjustment->value - && node_dy + height <= (tree_view->priv->vadjustment->value - + tree_view->priv->vadjustment->page_size)) + && node_dy >= gtk_adjustment_get_value (tree_view->priv->vadjustment) + && node_dy + height <= (gtk_adjustment_get_value (tree_view->priv->vadjustment) + + gtk_adjustment_get_page_size (tree_view->priv->vadjustment))) return; path = _gtk_tree_view_find_path (tree_view, tree, node); @@ -9016,11 +9327,11 @@ gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view, if (column == NULL) return; - gtk_widget_get_allocation (column->button, &allocation); + gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation); x = allocation.x; width = allocation.width; - if (width > tree_view->priv->hadjustment->page_size) + if (width > gtk_adjustment_get_page_size (tree_view->priv->hadjustment)) { /* The column is larger than the horizontal page size. If the * column has cells which can be focussed individually, then we make @@ -9028,51 +9339,40 @@ gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view, * focus cell is bigger than the page size, we make sure the * left-hand side of the cell is visible). * - * If the column does not have those so-called special cells, we + * If the column does not have an activatable cell, we * make sure the left-hand side of the column is visible. */ - if (focus_to_cell && gtk_tree_view_has_special_cell (tree_view)) + if (focus_to_cell && gtk_tree_view_has_can_focus_cell (tree_view)) { - GtkTreePath *cursor_path; - GdkRectangle background_area, cell_area, focus_area; + GtkCellArea *cell_area; + GtkCellRenderer *focus_cell; - cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor); + cell_area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)); + focus_cell = gtk_cell_area_get_focus_cell (cell_area); - gtk_tree_view_get_cell_area (tree_view, - cursor_path, column, &cell_area); - gtk_tree_view_get_background_area (tree_view, - cursor_path, column, - &background_area); - - gtk_tree_path_free (cursor_path); - - _gtk_tree_view_column_get_focus_area (column, - &background_area, - &cell_area, - &focus_area); - - x = focus_area.x; - width = focus_area.width; - - if (width < tree_view->priv->hadjustment->page_size) - { - if ((tree_view->priv->hadjustment->value + tree_view->priv->hadjustment->page_size) < (x + width)) - gtk_adjustment_set_value (tree_view->priv->hadjustment, - x + width - tree_view->priv->hadjustment->page_size); - else if (tree_view->priv->hadjustment->value > x) - gtk_adjustment_set_value (tree_view->priv->hadjustment, x); - } - } + if (gtk_tree_view_column_cell_get_position (column, focus_cell, + &x, &width)) + { + if (width < gtk_adjustment_get_page_size (tree_view->priv->hadjustment)) + { + if (gtk_adjustment_get_value (tree_view->priv->hadjustment) + gtk_adjustment_get_page_size (tree_view->priv->hadjustment) < x + width) + gtk_adjustment_set_value (tree_view->priv->hadjustment, + x + width - gtk_adjustment_get_page_size (tree_view->priv->hadjustment)); + else if (gtk_adjustment_get_value (tree_view->priv->hadjustment) > x) + gtk_adjustment_set_value (tree_view->priv->hadjustment, x); + } + } + } gtk_adjustment_set_value (tree_view->priv->hadjustment, x); } else { - if ((tree_view->priv->hadjustment->value + tree_view->priv->hadjustment->page_size) < (x + width)) + if ((gtk_adjustment_get_value (tree_view->priv->hadjustment) + gtk_adjustment_get_page_size (tree_view->priv->hadjustment)) < (x + width)) gtk_adjustment_set_value (tree_view->priv->hadjustment, - x + width - tree_view->priv->hadjustment->page_size); - else if (tree_view->priv->hadjustment->value > x) + x + width - gtk_adjustment_get_page_size (tree_view->priv->hadjustment)); + else if (gtk_adjustment_get_value (tree_view->priv->hadjustment) > x) gtk_adjustment_set_value (tree_view->priv->hadjustment, x); } } @@ -9172,7 +9472,7 @@ gtk_tree_view_is_expander_column (GtkTreeView *tree_view, { GList *list; - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IS_LIST)) + if (tree_view->priv->is_list) return FALSE; if (tree_view->priv->expander_column != NULL) @@ -9194,6 +9494,15 @@ gtk_tree_view_is_expander_column (GtkTreeView *tree_view, return FALSE; } +static inline gboolean +gtk_tree_view_draw_expanders (GtkTreeView *tree_view) +{ + if (!tree_view->priv->is_list && tree_view->priv->show_expanders) + return TRUE; + /* else */ + return FALSE; +} + static void gtk_tree_view_add_move_binding (GtkBindingSet *binding_set, guint keyval, @@ -9380,11 +9689,16 @@ gtk_tree_view_set_column_drag_info (GtkTreeView *tree_view, if (tmp_list->next != NULL) { GtkAllocation right_allocation, left_allocation; + GtkWidget *left_button, *right_button; g_assert (tmp_list->next->data); - gtk_widget_get_allocation (reorder->right_column->button, &right_allocation); - gtk_widget_get_allocation (((GtkTreeViewColumnReorder *)tmp_list->next->data)->left_column->button, &left_allocation); + right_button = gtk_tree_view_column_get_button (reorder->right_column); + left_button = gtk_tree_view_column_get_button + (((GtkTreeViewColumnReorder *)tmp_list->next->data)->left_column); + + gtk_widget_get_allocation (right_button, &right_allocation); + gtk_widget_get_allocation (left_button, &left_allocation); left = reorder->right_align = (right_allocation.x + right_allocation.width + left_allocation.x) / 2; } else @@ -9404,7 +9718,8 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, GtkAllocation allocation; GtkAllocation button_allocation; GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (tree_view)); - GdkDisplay *display = gdk_screen_get_display (screen); + GtkWidget *button; + GdkDevice *pointer, *keyboard; g_return_if_fail (tree_view->priv->column_drag_info == NULL); g_return_if_fail (tree_view->priv->cur_reorder == NULL); @@ -9414,12 +9729,14 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, if (tree_view->priv->column_drag_info == NULL) return; + button = gtk_tree_view_column_get_button (column); + if (tree_view->priv->drag_window == NULL) { GdkWindowAttr attributes; guint attributes_mask; - gtk_widget_get_allocation (column->button, &button_allocation); + gtk_widget_get_allocation (button, &button_allocation); attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; @@ -9432,25 +9749,36 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; tree_view->priv->drag_window = gdk_window_new (tree_view->priv->bin_window, - &attributes, - attributes_mask); + &attributes, + attributes_mask); gdk_window_set_user_data (tree_view->priv->drag_window, GTK_WIDGET (tree_view)); } - gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME); - gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME); + if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) + { + keyboard = device; + pointer = gdk_device_get_associated_device (device); + } + else + { + pointer = device; + keyboard = gdk_device_get_associated_device (device); + } - gtk_grab_remove (column->button); + gdk_device_ungrab (pointer, GDK_CURRENT_TIME); + gdk_device_ungrab (keyboard, GDK_CURRENT_TIME); + + gtk_grab_remove (button); send_event = gdk_event_new (GDK_LEAVE_NOTIFY); send_event->crossing.send_event = TRUE; - send_event->crossing.window = g_object_ref (gtk_button_get_event_window (GTK_BUTTON (column->button))); + send_event->crossing.window = g_object_ref (gtk_button_get_event_window (GTK_BUTTON (button))); send_event->crossing.subwindow = NULL; send_event->crossing.detail = GDK_NOTIFY_ANCESTOR; send_event->crossing.time = GDK_CURRENT_TIME; gdk_event_set_device (send_event, device); - gtk_propagate_event (column->button, send_event); + gtk_propagate_event (button, send_event); gdk_event_free (send_event); send_event = gdk_event_new (GDK_BUTTON_RELEASE); @@ -9466,22 +9794,22 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, send_event->button.y_root = 0; gdk_event_set_device (send_event, device); - gtk_propagate_event (column->button, send_event); + gtk_propagate_event (button, send_event); gdk_event_free (send_event); /* Kids, don't try this at home */ - g_object_ref (column->button); - gtk_container_remove (GTK_CONTAINER (tree_view), column->button); - gtk_widget_set_parent_window (column->button, tree_view->priv->drag_window); - gtk_widget_set_parent (column->button, GTK_WIDGET (tree_view)); - g_object_unref (column->button); + g_object_ref (button); + gtk_container_remove (GTK_CONTAINER (tree_view), button); + gtk_widget_set_parent_window (button, tree_view->priv->drag_window); + gtk_widget_set_parent (button, GTK_WIDGET (tree_view)); + g_object_unref (button); - gtk_widget_get_allocation (column->button, &button_allocation); + gtk_widget_get_allocation (button, &button_allocation); tree_view->priv->drag_column_x = button_allocation.x; allocation = button_allocation; allocation.x = 0; - gtk_widget_size_allocate (column->button, &allocation); - gtk_widget_set_parent_window (column->button, tree_view->priv->drag_window); + gtk_widget_size_allocate (button, &allocation); + gtk_widget_set_parent_window (button, tree_view->priv->drag_window); tree_view->priv->drag_column = column; gdk_window_show (tree_view->priv->drag_window); @@ -9490,14 +9818,22 @@ _gtk_tree_view_column_start_drag (GtkTreeView *tree_view, while (gtk_events_pending ()) gtk_main_iteration (); - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_IN_COLUMN_DRAG); - gdk_pointer_grab (tree_view->priv->drag_window, - FALSE, - GDK_POINTER_MOTION_MASK|GDK_BUTTON_RELEASE_MASK, - NULL, NULL, GDK_CURRENT_TIME); - gdk_keyboard_grab (tree_view->priv->drag_window, - FALSE, - GDK_CURRENT_TIME); + tree_view->priv->in_column_drag = TRUE; + + gdk_device_grab (pointer, + tree_view->priv->drag_window, + GDK_OWNERSHIP_NONE, + FALSE, + GDK_POINTER_MOTION_MASK|GDK_BUTTON_RELEASE_MASK, + NULL, + GDK_CURRENT_TIME); + gdk_device_grab (keyboard, + tree_view->priv->drag_window, + GDK_OWNERSHIP_NONE, + FALSE, + GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK, + NULL, + GDK_CURRENT_TIME); } static void @@ -9515,8 +9851,8 @@ gtk_tree_view_queue_draw_arrow (GtkTreeView *tree_view, rect.x = 0; rect.width = MAX (tree_view->priv->expander_size, MAX (tree_view->priv->width, allocation.width)); - rect.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node); - rect.height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + rect.y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + rect.height = gtk_tree_view_get_row_height (tree_view, node); gdk_window_invalidate_rect (tree_view->priv->bin_window, &rect, TRUE); } @@ -9537,8 +9873,8 @@ _gtk_tree_view_queue_draw_node (GtkTreeView *tree_view, rect.x = 0; rect.width = MAX (tree_view->priv->width, allocation.width); - rect.y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node); - rect.height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + rect.y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + rect.height = gtk_tree_view_get_row_height (tree_view, node); if (clip_rect) { @@ -9554,6 +9890,75 @@ _gtk_tree_view_queue_draw_node (GtkTreeView *tree_view, } } +static inline gint +gtk_tree_view_get_effective_header_height (GtkTreeView *tree_view) +{ + if (tree_view->priv->headers_visible) + return tree_view->priv->header_height; + /* else */ + return 0; +} + +gint +_gtk_tree_view_get_header_height (GtkTreeView *tree_view) +{ + return tree_view->priv->header_height; +} + +void +_gtk_tree_view_get_row_separator_func (GtkTreeView *tree_view, + GtkTreeViewRowSeparatorFunc *func, + gpointer *data) +{ + *func = tree_view->priv->row_separator_func; + *data = tree_view->priv->row_separator_data; +} + +GtkTreePath * +_gtk_tree_view_get_anchor_path (GtkTreeView *tree_view) +{ + if (tree_view->priv->anchor) + return gtk_tree_row_reference_get_path (tree_view->priv->anchor); + + return NULL; +} + +void +_gtk_tree_view_set_anchor_path (GtkTreeView *tree_view, + GtkTreePath *anchor_path) +{ + if (tree_view->priv->anchor) + { + gtk_tree_row_reference_free (tree_view->priv->anchor); + tree_view->priv->anchor = NULL; + } + + if (anchor_path && tree_view->priv->model) + tree_view->priv->anchor = + gtk_tree_row_reference_new_proxy (G_OBJECT (tree_view), + tree_view->priv->model, anchor_path); +} + +GtkRBTree * +_gtk_tree_view_get_rbtree (GtkTreeView *tree_view) +{ + return tree_view->priv->tree; +} + +GdkWindow * +_gtk_tree_view_get_header_window (GtkTreeView *tree_view) +{ + return tree_view->priv->header_window; +} + +void +_gtk_tree_view_set_focus_column (GtkTreeView *tree_view, + GtkTreeViewColumn *column) +{ + tree_view->priv->focus_column = column; +} + + static void gtk_tree_view_queue_draw_path (GtkTreeView *tree_view, GtkTreePath *path, @@ -9601,9 +10006,11 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, gtk_tree_view_get_arrow_xrange (tree_view, tree, &x_offset, &x2); area.x = x_offset; - area.y = CELL_FIRST_PIXEL (tree_view, tree, node, vertical_separator); + area.y = gtk_tree_view_get_cell_area_y_offset (tree_view, tree, node, + vertical_separator); area.width = expander_size + 2; - area.height = MAX (CELL_HEIGHT (node, vertical_separator), (expander_size - vertical_separator)); + area.height = gtk_tree_view_get_cell_area_height (tree_view, node, + vertical_separator); if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE) { @@ -9620,7 +10027,7 @@ gtk_tree_view_draw_arrow (GtkTreeView *tree_view, else { if (node == tree_view->priv->prelight_node && - GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT)) + tree_view->priv->arrow_prelit) state = GTK_STATE_PRELIGHT; else state = GTK_STATE_NORMAL; @@ -9689,7 +10096,7 @@ gtk_tree_view_focus_to_cursor (GtkTreeView *tree_view) if (cursor_path) { - if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE) + if (gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE) gtk_tree_view_real_set_cursor (tree_view, cursor_path, FALSE, FALSE); else gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, FALSE); @@ -9698,7 +10105,7 @@ gtk_tree_view_focus_to_cursor (GtkTreeView *tree_view) if (cursor_path) { - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); + tree_view->priv->draw_keyfocus = TRUE; gtk_tree_view_queue_draw_path (tree_view, cursor_path, NULL); gtk_tree_path_free (cursor_path); @@ -9710,7 +10117,22 @@ gtk_tree_view_focus_to_cursor (GtkTreeView *tree_view) { if (gtk_tree_view_column_get_visible (GTK_TREE_VIEW_COLUMN (list->data))) { + GtkCellArea *cell_area; + tree_view->priv->focus_column = GTK_TREE_VIEW_COLUMN (list->data); + + /* This happens when the treeview initially grabs focus and there + * is no column in focus, here we explicitly focus into the first cell */ + cell_area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->focus_column)); + if (!gtk_cell_area_get_focus_cell (cell_area)) + { + gboolean rtl; + + rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); + gtk_cell_area_focus (cell_area, + rtl ? GTK_DIR_LEFT : GTK_DIR_RIGHT); + } + break; } } @@ -9730,6 +10152,10 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, GtkTreePath *cursor_path = NULL; gboolean grab_focus = TRUE; gboolean selectable; + GtkDirectionType direction; + GtkCellArea *cell_area = NULL; + GtkCellRenderer *last_focus_cell = NULL; + GtkTreeIter iter; if (! gtk_widget_has_focus (GTK_WIDGET (tree_view))) return; @@ -9747,13 +10173,37 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, /* FIXME: we lost the cursor; should we get the first? */ return; + direction = count < 0 ? GTK_DIR_UP : GTK_DIR_DOWN; + + if (tree_view->priv->focus_column) + cell_area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->focus_column)); + + /* If focus stays in the area for this row, then just return for this round */ + if (cell_area && (count == -1 || count == 1) && + gtk_tree_model_get_iter (tree_view->priv->model, &iter, cursor_path)) + { + gtk_tree_view_column_cell_set_cell_data (tree_view->priv->focus_column, + tree_view->priv->model, + &iter, + GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT), + cursor_node->children?TRUE:FALSE); + + /* Save the last cell that had focus, if we hit the end of the view we'll give + * focus back to it. */ + last_focus_cell = gtk_cell_area_get_focus_cell (cell_area); + + /* If focus stays in the area, no need to change the cursor row */ + if (gtk_cell_area_focus (cell_area, direction)) + return; + } + selection_count = gtk_tree_selection_count_selected_rows (tree_view->priv->selection); selectable = _gtk_tree_selection_row_is_selectable (tree_view->priv->selection, cursor_node, cursor_path); if (selection_count == 0 - && tree_view->priv->selection->type != GTK_SELECTION_NONE + && gtk_tree_selection_get_mode (tree_view->priv->selection) != GTK_SELECTION_NONE && !tree_view->priv->ctrl_pressed && selectable) { @@ -9791,7 +10241,7 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, * If the list has only one item and multi-selection is set then select * the row (if not yet selected). */ - if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE && + if (gtk_tree_selection_get_mode (tree_view->priv->selection) == GTK_SELECTION_MULTIPLE && new_cursor_node == NULL) { if (count == -1) @@ -9818,6 +10268,10 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node); gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE); gtk_tree_path_free (cursor_path); + + /* Give focus to the area in the new row */ + if (cell_area) + gtk_cell_area_focus (cell_area, direction); } else { @@ -9844,6 +10298,9 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view, { gtk_widget_error_bell (GTK_WIDGET (tree_view)); } + + if (cell_area) + gtk_cell_area_set_focus_cell (cell_area, last_focus_cell); } if (grab_focus) @@ -9888,8 +10345,8 @@ gtk_tree_view_move_cursor_page_up_down (GtkTreeView *tree_view, y = _gtk_rbtree_node_find_offset (cursor_tree, cursor_node); window_y = RBTREE_Y_TO_TREE_WINDOW_Y (tree_view, y); y += tree_view->priv->cursor_offset; - y += count * (int)tree_view->priv->vadjustment->page_increment; - y = CLAMP (y, (gint)tree_view->priv->vadjustment->lower, (gint)tree_view->priv->vadjustment->upper - vertical_separator); + y += count * (int)gtk_adjustment_get_page_increment (tree_view->priv->vadjustment); + y = CLAMP (y, (gint)gtk_adjustment_get_lower (tree_view->priv->vadjustment), (gint)gtk_adjustment_get_upper (tree_view->priv->vadjustment) - vertical_separator); if (y >= tree_view->priv->height) y = tree_view->priv->height - 1; @@ -9905,11 +10362,12 @@ gtk_tree_view_move_cursor_page_up_down (GtkTreeView *tree_view, return; } - if (tree_view->priv->cursor_offset > BACKGROUND_HEIGHT (cursor_node)) + if (tree_view->priv->cursor_offset + > gtk_tree_view_get_row_height (tree_view, cursor_node)) { _gtk_rbtree_next_full (cursor_tree, cursor_node, &cursor_tree, &cursor_node); - tree_view->priv->cursor_offset -= BACKGROUND_HEIGHT (cursor_node); + tree_view->priv->cursor_offset -= gtk_tree_view_get_row_height (tree_view, cursor_node); } y -= tree_view->priv->cursor_offset; @@ -9970,6 +10428,10 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, GList *list; gboolean found_column = FALSE; gboolean rtl; + GtkDirectionType direction; + GtkCellArea *cell_area; + GtkCellRenderer *last_focus_cell = NULL; + GtkCellArea *last_focus_area = NULL; rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); @@ -9994,6 +10456,11 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, list = rtl ? g_list_last (tree_view->priv->columns) : g_list_first (tree_view->priv->columns); if (tree_view->priv->focus_column) { + /* Save the cell/area we are moving focus from, if moving the cursor + * by one step hits the end we'll set focus back here */ + last_focus_area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->focus_column)); + last_focus_cell = gtk_cell_area_get_focus_cell (last_focus_area); + for (; list; list = (rtl ? list->prev : list->next)) { if (list->data == tree_view->priv->focus_column) @@ -10001,10 +10468,10 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, } } + direction = count > 0 ? GTK_DIR_RIGHT : GTK_DIR_LEFT; + while (list) { - gboolean left, right; - column = list->data; if (gtk_tree_view_column_get_visible (column) == FALSE) goto loop_end; @@ -10015,23 +10482,14 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT), cursor_node->children?TRUE:FALSE); - if (rtl) - { - right = list->prev ? TRUE : FALSE; - left = list->next ? TRUE : FALSE; - } - else - { - left = list->prev ? TRUE : FALSE; - right = list->next ? TRUE : FALSE; - } - - if (_gtk_tree_view_column_cell_focus (column, count, left, right)) + cell_area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)); + if (gtk_cell_area_focus (cell_area, direction)) { tree_view->priv->focus_column = column; found_column = TRUE; break; } + loop_end: if (count == 1) list = rtl ? list->prev : list->next; @@ -10041,7 +10499,7 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, if (found_column) { - if (!gtk_tree_view_has_special_cell (tree_view)) + if (!gtk_tree_view_has_can_focus_cell (tree_view)) _gtk_tree_view_queue_draw_node (tree_view, cursor_tree, cursor_node, @@ -10052,6 +10510,9 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view, else { gtk_widget_error_bell (GTK_WIDGET (tree_view)); + + if (last_focus_area) + gtk_cell_area_set_focus_cell (last_focus_area, last_focus_cell); } gtk_tree_view_clamp_column_visible (tree_view, @@ -10131,7 +10592,7 @@ gtk_tree_view_real_select_all (GtkTreeView *tree_view) if (!gtk_widget_has_focus (GTK_WIDGET (tree_view))) return FALSE; - if (tree_view->priv->selection->type != GTK_SELECTION_MULTIPLE) + if (gtk_tree_selection_get_mode (tree_view->priv->selection) != GTK_SELECTION_MULTIPLE) return FALSE; gtk_tree_selection_select_all (tree_view->priv->selection); @@ -10145,7 +10606,7 @@ gtk_tree_view_real_unselect_all (GtkTreeView *tree_view) if (!gtk_widget_has_focus (GTK_WIDGET (tree_view))) return FALSE; - if (tree_view->priv->selection->type != GTK_SELECTION_MULTIPLE) + if (gtk_tree_selection_get_mode (tree_view->priv->selection) != GTK_SELECTION_MULTIPLE) return FALSE; gtk_tree_selection_unselect_all (tree_view->priv->selection); @@ -10185,7 +10646,7 @@ gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view, if (!tree_view->priv->shift_pressed && start_editing && tree_view->priv->focus_column) { - if (gtk_tree_view_start_editing (tree_view, cursor_path)) + if (gtk_tree_view_start_editing (tree_view, cursor_path, FALSE)) { gtk_tree_path_free (cursor_path); return TRUE; @@ -10541,12 +11002,14 @@ gtk_tree_view_real_start_interactive_search (GtkTreeView *tree_view, for (list = tree_view->priv->columns; list; list = list->next) { GtkTreeViewColumn *column; + GtkWidget *button; column = list->data; if (!gtk_tree_view_column_get_visible (column)) continue; - if (gtk_widget_has_focus (column->button)) + button = gtk_tree_view_column_get_button (column); + if (gtk_widget_has_focus (button)) { found_focus = TRUE; break; @@ -10627,14 +11090,14 @@ gtk_tree_view_new_column_width (GtkTreeView *tree_view, */ rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); column = g_list_nth (tree_view->priv->columns, i)->data; - gtk_widget_get_allocation (column->button, &allocation); + gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation); width = rtl ? (allocation.x + allocation.width - *x) : (*x - allocation.x); /* Clamp down the value */ min_width = gtk_tree_view_column_get_min_width (column); if (min_width == -1) { - gtk_widget_get_preferred_size (column->button, &button_req, NULL); + gtk_widget_get_preferred_size (gtk_tree_view_column_get_button (column), &button_req, NULL); width = MAX (button_req.width, width); } else @@ -10734,45 +11197,49 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment, gint dy; gdk_window_move (tree_view->priv->bin_window, - - tree_view->priv->hadjustment->value, - TREE_VIEW_HEADER_HEIGHT (tree_view)); + - gtk_adjustment_get_value (tree_view->priv->hadjustment), + gtk_tree_view_get_effective_header_height (tree_view)); gdk_window_move (tree_view->priv->header_window, - - tree_view->priv->hadjustment->value, + - gtk_adjustment_get_value (tree_view->priv->hadjustment), 0); - dy = tree_view->priv->dy - (int) tree_view->priv->vadjustment->value; + dy = tree_view->priv->dy - (int) gtk_adjustment_get_value (tree_view->priv->vadjustment); if (dy) { update_prelight (tree_view, tree_view->priv->event_last_x, tree_view->priv->event_last_y - dy); - if (tree_view->priv->edited_column && - GTK_IS_WIDGET (tree_view->priv->edited_column->editable_widget)) + if (tree_view->priv->edited_column) { GList *list; - GtkWidget *widget; GtkTreeViewChild *child = NULL; + GtkCellEditable *edit_widget; + GtkCellArea *area; - widget = GTK_WIDGET (tree_view->priv->edited_column->editable_widget); - adjust_allocation (widget, 0, dy); - - for (list = tree_view->priv->children; list; list = list->next) - { - child = (GtkTreeViewChild *)list->data; - if (child->widget == widget) - { - child->y += dy; - break; - } - } + area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column)); + edit_widget = gtk_cell_area_get_edit_widget (area); + if (GTK_IS_WIDGET (edit_widget)) + { + adjust_allocation (GTK_WIDGET (edit_widget), 0, dy); + + for (list = tree_view->priv->children; list; list = list->next) + { + child = (GtkTreeViewChild *)list->data; + if (child->widget == GTK_WIDGET (edit_widget)) + { + child->y += dy; + break; + } + } + } } } gdk_window_scroll (tree_view->priv->bin_window, 0, dy); - if (tree_view->priv->dy != (int) tree_view->priv->vadjustment->value) + if (tree_view->priv->dy != (int) gtk_adjustment_get_value (tree_view->priv->vadjustment)) { /* update our dy and top_row */ - tree_view->priv->dy = (int) tree_view->priv->vadjustment->value; + tree_view->priv->dy = (int) gtk_adjustment_get_value (tree_view->priv->vadjustment); if (!tree_view->priv->in_top_row_to_dy) gtk_tree_view_dy_to_top_row (tree_view); @@ -10962,9 +11429,9 @@ gtk_tree_view_set_model (GtkTreeView *tree_view, flags = gtk_tree_model_get_flags (tree_view->priv->model); if ((flags & GTK_TREE_MODEL_LIST_ONLY) == GTK_TREE_MODEL_LIST_ONLY) - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_IS_LIST); + tree_view->priv->is_list = TRUE; else - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_IS_LIST); + tree_view->priv->is_list = FALSE; path = gtk_tree_path_new_first (); if (gtk_tree_model_get_iter (tree_view->priv->model, &iter, path)) @@ -11143,7 +11610,7 @@ gtk_tree_view_get_headers_visible (GtkTreeView *tree_view) { g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); - return GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE); + return tree_view->priv->headers_visible; } /** @@ -11161,18 +11628,16 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, GList *list; GtkTreeViewColumn *column; GtkAllocation allocation; + GtkWidget *button; g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); headers_visible = !! headers_visible; - if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE) == headers_visible) + if (tree_view->priv->headers_visible == headers_visible) return; - if (headers_visible) - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE); - else - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE); + tree_view->priv->headers_visible = headers_visible == TRUE; if (gtk_widget_get_realized (GTK_WIDGET (tree_view))) { @@ -11181,8 +11646,8 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, { gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); gdk_window_move_resize (tree_view->priv->bin_window, - x, y + TREE_VIEW_HEADER_HEIGHT (tree_view), - tree_view->priv->width, allocation.height - + TREE_VIEW_HEADER_HEIGHT (tree_view)); + x, y + gtk_tree_view_get_effective_header_height (tree_view), + tree_view->priv->width, allocation.height - + gtk_tree_view_get_effective_header_height (tree_view)); if (gtk_widget_get_mapped (GTK_WIDGET (tree_view))) gtk_tree_view_map_buttons (tree_view); @@ -11194,18 +11659,23 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, for (list = tree_view->priv->columns; list; list = list->next) { column = list->data; - gtk_widget_unmap (column->button); + button = gtk_tree_view_column_get_button (column); + + gtk_widget_hide (button); + gtk_widget_unmap (button); } gdk_window_hide (tree_view->priv->header_window); } } gtk_widget_get_allocation (GTK_WIDGET (tree_view), &allocation); - tree_view->priv->vadjustment->page_size = allocation.height - TREE_VIEW_HEADER_HEIGHT (tree_view); - tree_view->priv->vadjustment->page_increment = (allocation.height - TREE_VIEW_HEADER_HEIGHT (tree_view)) / 2; - tree_view->priv->vadjustment->lower = 0; - tree_view->priv->vadjustment->upper = tree_view->priv->height; - gtk_adjustment_changed (tree_view->priv->vadjustment); + gtk_adjustment_configure (tree_view->priv->vadjustment, + gtk_adjustment_get_value (tree_view->priv->vadjustment), + 0, + tree_view->priv->height, + gtk_adjustment_get_step_increment (tree_view->priv->vadjustment), + (allocation.height - gtk_tree_view_get_effective_header_height (tree_view)) / 2, + allocation.height - gtk_tree_view_get_effective_header_height (tree_view)); gtk_widget_queue_resize (GTK_WIDGET (tree_view)); @@ -11359,7 +11829,7 @@ gtk_tree_view_append_column (GtkTreeView *tree_view, { g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1); g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1); - g_return_val_if_fail (column->tree_view == NULL, -1); + g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == NULL, -1); return gtk_tree_view_insert_column (tree_view, column, -1); } @@ -11380,7 +11850,7 @@ gtk_tree_view_remove_column (GtkTreeView *tree_view, { g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1); g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1); - g_return_val_if_fail (column->tree_view == GTK_WIDGET (tree_view), -1); + g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == GTK_WIDGET (tree_view), -1); if (tree_view->priv->focus_column == column) tree_view->priv->focus_column = NULL; @@ -11452,7 +11922,7 @@ gtk_tree_view_insert_column (GtkTreeView *tree_view, { g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), -1); g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), -1); - g_return_val_if_fail (column->tree_view == NULL, -1); + g_return_val_if_fail (gtk_tree_view_column_get_tree_view (column) == NULL, -1); if (tree_view->priv->fixed_height_mode) g_return_val_if_fail (gtk_tree_view_column_get_sizing (column) @@ -12481,7 +12951,7 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view, } g_signal_emit (tree_view, tree_view_signals[ROW_COLLAPSED], 0, &iter, path); - + if (gtk_widget_get_mapped (GTK_WIDGET (tree_view))) { /* now that we've collapsed all rows, we want to try to set the prelight @@ -12890,7 +13360,8 @@ gtk_tree_view_set_cursor_on_cell (GtkTreeView *tree_view, /* cancel the current editing, if it exists */ if (tree_view->priv->edited_column && - tree_view->priv->edited_column->editable_widget) + gtk_cell_area_get_edit_widget + (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (tree_view->priv->edited_column)))) gtk_tree_view_stop_editing (tree_view, TRUE); gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE); @@ -12912,7 +13383,7 @@ gtk_tree_view_set_cursor_on_cell (GtkTreeView *tree_view, if (focus_cell) gtk_tree_view_column_focus_cell (focus_column, focus_cell); if (start_editing) - gtk_tree_view_start_editing (tree_view, path); + gtk_tree_view_start_editing (tree_view, path, TRUE); } } @@ -12941,7 +13412,7 @@ gtk_tree_view_get_bin_window (GtkTreeView *tree_view) * @x: The x position to be identified (relative to bin_window). * @y: The y position to be identified (relative to bin_window). * @path: (out) (allow-none): A pointer to a #GtkTreePath pointer to be filled in, or %NULL - * @column: (out) (allow-none): A pointer to a #GtkTreeViewColumn pointer to be filled in, or %NULL + * @column: (out) (transfer none) (allow-none): A pointer to a #GtkTreeViewColumn pointer to be filled in, or %NULL * @cell_x: (out) (allow-none): A pointer where the X coordinate relative to the cell can be placed, or %NULL * @cell_y: (out) (allow-none): A pointer where the Y coordinate relative to the cell can be placed, or %NULL * @@ -12991,7 +13462,7 @@ gtk_tree_view_get_path_at_pos (GtkTreeView *tree_view, if (tree_view->priv->tree == NULL) return FALSE; - if (x > tree_view->priv->hadjustment->upper) + if (x > gtk_adjustment_get_upper (tree_view->priv->hadjustment)) return FALSE; if (x < 0 || y < 0) @@ -13071,6 +13542,42 @@ gtk_tree_view_get_path_at_pos (GtkTreeView *tree_view, } +static inline gint +gtk_tree_view_get_cell_area_height (GtkTreeView *tree_view, + GtkRBNode *node, + gint vertical_separator) +{ + int height; + + /* The "cell" areas are the cell_area passed in to gtk_cell_renderer_render(), + * i.e. just the cells, no spacing. + * + * The cell area height is at least expander_size - vertical_separator. + * For regular nodes, the height is then at least expander_size. We should + * be able to enforce the expander_size minimum here, because this + * function will not be called for irregular (e.g. separator) rows. + */ + height = gtk_tree_view_get_row_height (tree_view, node); + if (height < tree_view->priv->expander_size) + height = tree_view->priv->expander_size; + + return height - vertical_separator; +} + +static inline gint +gtk_tree_view_get_cell_area_y_offset (GtkTreeView *tree_view, + GtkRBTree *tree, + GtkRBNode *node, + gint vertical_separator) +{ + int offset; + + offset = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + offset += vertical_separator / 2; + + return offset; +} + /** * gtk_tree_view_get_cell_area: * @tree_view: a #GtkTreeView @@ -13103,7 +13610,7 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view, g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); g_return_if_fail (column == NULL || GTK_IS_TREE_VIEW_COLUMN (column)); g_return_if_fail (rect != NULL); - g_return_if_fail (!column || column->tree_view == (GtkWidget *) tree_view); + g_return_if_fail (!column || gtk_tree_view_column_get_tree_view (column) == (GtkWidget *) tree_view); g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (tree_view))); gtk_widget_style_get (GTK_WIDGET (tree_view), @@ -13118,7 +13625,7 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view, if (column) { - gtk_widget_get_allocation (column->button, &allocation); + gtk_widget_get_allocation (gtk_tree_view_column_get_button (column), &allocation); rect->x = allocation.x + horizontal_separator/2; rect->width = allocation.width - horizontal_separator; } @@ -13131,8 +13638,21 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view, if ((!ret && tree == NULL) || ret) return; - rect->y = CELL_FIRST_PIXEL (tree_view, tree, node, vertical_separator); - rect->height = MAX (CELL_HEIGHT (node, vertical_separator), tree_view->priv->expander_size - vertical_separator); + if (row_is_separator (tree_view, NULL, path)) + { + /* There isn't really a "cell area" for separator, so we + * return the y, height values for background area instead. + */ + rect->y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + rect->height = gtk_tree_view_get_row_height (tree_view, node); + } + else + { + rect->y = gtk_tree_view_get_cell_area_y_offset (tree_view, tree, node, + vertical_separator); + rect->height = gtk_tree_view_get_cell_area_height (tree_view, node, + vertical_separator); + } if (column && gtk_tree_view_is_expander_column (tree_view, column)) @@ -13146,7 +13666,7 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view, rect->x += (depth - 1) * tree_view->priv->level_indentation; rect->width -= (depth - 1) * tree_view->priv->level_indentation; - if (TREE_VIEW_DRAW_EXPANDERS (tree_view)) + if (gtk_tree_view_draw_expanders (tree_view)) { if (!rtl) rect->x += depth * tree_view->priv->expander_size; @@ -13158,6 +13678,39 @@ gtk_tree_view_get_cell_area (GtkTreeView *tree_view, } } +static inline gint +gtk_tree_view_get_row_height (GtkTreeView *tree_view, + GtkRBNode *node) +{ + int height; + + /* The "background" areas of all rows/cells add up to cover the entire tree. + * The background includes all inter-row and inter-cell spacing. + * + * If the row pointed at by node does not have a height set, we default + * to expander_size, which is the minimum height for regular nodes. + * Non-regular nodes (e.g. separators) can have a height set smaller + * than expander_size and should not be overruled here. + */ + height = GTK_RBNODE_GET_HEIGHT (node); + if (height <= 0) + height = tree_view->priv->expander_size; + + return height; +} + +static inline gint +gtk_tree_view_get_row_y_offset (GtkTreeView *tree_view, + GtkRBTree *tree, + GtkRBNode *node) +{ + int offset; + + offset = _gtk_rbtree_node_find_offset (tree, node); + + return RBTREE_Y_TO_TREE_WINDOW_Y (tree_view, offset); +} + /** * gtk_tree_view_get_background_area: * @tree_view: a #GtkTreeView @@ -13202,9 +13755,8 @@ gtk_tree_view_get_background_area (GtkTreeView *tree_view, tree == NULL) return; - rect->y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node); - - rect->height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + rect->y = gtk_tree_view_get_row_y_offset (tree_view, tree, node); + rect->height = gtk_tree_view_get_row_height (tree_view, node); } if (column) @@ -13241,10 +13793,10 @@ gtk_tree_view_get_visible_rect (GtkTreeView *tree_view, if (visible_rect) { gtk_widget_get_allocation (widget, &allocation); - visible_rect->x = tree_view->priv->hadjustment->value; - visible_rect->y = tree_view->priv->vadjustment->value; + visible_rect->x = gtk_adjustment_get_value (tree_view->priv->hadjustment); + visible_rect->y = gtk_adjustment_get_value (tree_view->priv->vadjustment); visible_rect->width = allocation.width; - visible_rect->height = allocation.height - TREE_VIEW_HEADER_HEIGHT (tree_view); + visible_rect->height = allocation.height - gtk_tree_view_get_effective_header_height (tree_view); } } @@ -13335,9 +13887,9 @@ gtk_tree_view_convert_widget_to_bin_window_coords (GtkTreeView *tree_view, g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); if (bx) - *bx = wx + tree_view->priv->hadjustment->value; + *bx = wx + gtk_adjustment_get_value (tree_view->priv->hadjustment); if (by) - *by = wy - TREE_VIEW_HEADER_HEIGHT (tree_view); + *by = wy - gtk_tree_view_get_effective_header_height (tree_view); } /** @@ -13363,9 +13915,9 @@ gtk_tree_view_convert_bin_window_to_widget_coords (GtkTreeView *tree_view, g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); if (wx) - *wx = bx - tree_view->priv->hadjustment->value; + *wx = bx - gtk_adjustment_get_value (tree_view->priv->hadjustment); if (wy) - *wy = by + TREE_VIEW_HEADER_HEIGHT (tree_view); + *wy = by + gtk_tree_view_get_effective_header_height (tree_view); } /** @@ -13472,10 +14024,10 @@ gtk_tree_view_get_visible_range (GtkTreeView *tree_view, { gint y; - if (tree_view->priv->height < tree_view->priv->vadjustment->page_size) + if (tree_view->priv->height < gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) y = tree_view->priv->height - 1; else - y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, tree_view->priv->vadjustment->page_size) - 1; + y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, gtk_adjustment_get_page_size (tree_view->priv->vadjustment)) - 1; _gtk_rbtree_find_offset (tree_view->priv->tree, y, &tree, &node); if (node) @@ -13487,6 +14039,109 @@ gtk_tree_view_get_visible_range (GtkTreeView *tree_view, return retval; } +/** + * gtk_tree_view_is_blank_at_pos: + * @tree_view: A #GtkTreeView + * @x: The x position to be identified (relative to bin_window) + * @y: The y position to be identified (relative to bin_window) + * @path: (out) (allow-none): A pointer to a #GtkTreePath pointer to be filled in, or %NULL + * @column: (out) (allow-none): A pointer to a #GtkTreeViewColumn pointer to be filled in, or %NULL + * @cell_x: (out) (allow-none): A pointer where the X coordinate relative to the cell can be placed, or %NULL + * @cell_y: (out) (allow-none): A pointer where the Y coordinate relative to the cell can be placed, or %NULL + * + * Determine whether the point (@x, @y) in @tree_view is blank, that is no + * cell content nor an expander arrow is drawn at the location. If so, the + * location can be considered as the background. You might wish to take + * special action on clicks on the background, such as clearing a current + * selection, having a custom context menu or starting rubber banding. + * + * The @x and @y coordinate that are provided must be relative to bin_window + * coordinates. That is, @x and @y must come from an event on @tree_view + * where event->window == gtk_tree_view_get_bin_window (). + * + * For converting widget coordinates (eg. the ones you get from + * GtkWidget::query-tooltip), please see + * gtk_tree_view_convert_widget_to_bin_window_coords(). + * + * The @path, @column, @cell_x and @cell_y arguments will be filled in + * likewise as for gtk_tree_view_get_path_at_pos(). Please see + * gtk_tree_view_get_path_at_pos() for more information. + * + * Return value: %TRUE if the area at the given coordinates is blank, + * %FALSE otherwise. + * + * Since: 3.0 + */ +gboolean +gtk_tree_view_is_blank_at_pos (GtkTreeView *tree_view, + gint x, + gint y, + GtkTreePath **path, + GtkTreeViewColumn **column, + gint *cell_x, + gint *cell_y) +{ + GtkRBTree *tree; + GtkRBNode *node; + GtkTreeIter iter; + GtkTreePath *real_path; + GtkTreeViewColumn *real_column; + GdkRectangle cell_area, background_area; + + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); + + if (!gtk_tree_view_get_path_at_pos (tree_view, x, y, + &real_path, &real_column, + cell_x, cell_y)) + /* If there's no path here, it is blank */ + return TRUE; + + if (path) + *path = real_path; + + if (column) + *column = real_column; + + gtk_tree_model_get_iter (tree_view->priv->model, &iter, real_path); + _gtk_tree_view_find_node (tree_view, real_path, &tree, &node); + + /* Check if there's an expander arrow at (x, y) */ + if (real_column == tree_view->priv->expander_column + && gtk_tree_view_draw_expanders (tree_view)) + { + gboolean over_arrow; + + over_arrow = coords_are_over_arrow (tree_view, tree, node, x, y); + + if (over_arrow) + { + if (!path) + gtk_tree_path_free (real_path); + return FALSE; + } + } + + /* Otherwise, have the column see if there's a cell at (x, y) */ + gtk_tree_view_column_cell_set_cell_data (real_column, + tree_view->priv->model, + &iter, + GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT), + node->children ? TRUE : FALSE); + + gtk_tree_view_get_background_area (tree_view, real_path, real_column, + &background_area); + gtk_tree_view_get_cell_area (tree_view, real_path, real_column, + &cell_area); + + if (!path) + gtk_tree_path_free (real_path); + + return _gtk_tree_view_column_is_blank_at_pos (real_column, + &cell_area, + &background_area, + x, y); +} + static void unset_reorderable (GtkTreeView *tree_view) { @@ -13907,7 +14562,7 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, cell_offset = x; background_area.y = y; - background_area.height = ROW_HEIGHT (tree_view, BACKGROUND_HEIGHT (node)); + background_area.height = gtk_tree_view_get_row_height (tree_view, node); bin_window_width = gdk_window_get_width (tree_view->priv->bin_window); @@ -13955,7 +14610,7 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, cell_area.x += (depth - 1) * tree_view->priv->level_indentation; cell_area.width -= (depth - 1) * tree_view->priv->level_indentation; - if (TREE_VIEW_DRAW_EXPANDERS(tree_view)) + if (gtk_tree_view_draw_expanders (tree_view)) { if (!rtl) cell_area.x += depth * tree_view->priv->expander_size; @@ -13979,7 +14634,7 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, cr, &background_area, &cell_area, - 0); + 0, FALSE); } cell_offset += gtk_tree_view_column_get_width (column); } @@ -14855,25 +15510,23 @@ gtk_tree_view_search_init (GtkWidget *entry, tree_view->priv->selected_iter = 1; } -static void -gtk_tree_view_remove_widget (GtkCellEditable *cell_editable, - GtkTreeView *tree_view) +void +_gtk_tree_view_remove_editable (GtkTreeView *tree_view, + GtkTreeViewColumn *column, + GtkCellEditable *cell_editable) { if (tree_view->priv->edited_column == NULL) return; - _gtk_tree_view_column_stop_editing (tree_view->priv->edited_column); + g_return_if_fail (column == tree_view->priv->edited_column); + tree_view->priv->edited_column = NULL; if (gtk_widget_has_focus (GTK_WIDGET (cell_editable))) gtk_widget_grab_focus (GTK_WIDGET (tree_view)); - g_signal_handlers_disconnect_by_func (cell_editable, - gtk_tree_view_remove_widget, - tree_view); - gtk_container_remove (GTK_CONTAINER (tree_view), - GTK_WIDGET (cell_editable)); + GTK_WIDGET (cell_editable)); /* FIXME should only redraw a single node */ gtk_widget_queue_draw (GTK_WIDGET (tree_view)); @@ -14881,12 +15534,12 @@ gtk_tree_view_remove_widget (GtkCellEditable *cell_editable, static gboolean gtk_tree_view_start_editing (GtkTreeView *tree_view, - GtkTreePath *cursor_path) + GtkTreePath *cursor_path, + gboolean edit_only) { GtkTreeIter iter; - GdkRectangle background_area; GdkRectangle cell_area; - GtkCellEditable *editable_widget = NULL; + GtkTreeViewColumn *focus_column; gchar *path_string; guint flags = 0; /* can be 0, as the flags are primarily for rendering */ gint retval = FALSE; @@ -14894,6 +15547,7 @@ gtk_tree_view_start_editing (GtkTreeView *tree_view, GtkRBNode *cursor_node; g_assert (tree_view->priv->focus_column); + focus_column = tree_view->priv->focus_column; if (!gtk_widget_get_realized (GTK_WIDGET (tree_view))) return FALSE; @@ -14907,79 +15561,45 @@ gtk_tree_view_start_editing (GtkTreeView *tree_view, validate_row (tree_view, cursor_tree, cursor_node, &iter, cursor_path); - gtk_tree_view_column_cell_set_cell_data (tree_view->priv->focus_column, + gtk_tree_view_column_cell_set_cell_data (focus_column, tree_view->priv->model, &iter, GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT), cursor_node->children?TRUE:FALSE); - gtk_tree_view_get_background_area (tree_view, - cursor_path, - tree_view->priv->focus_column, - &background_area); gtk_tree_view_get_cell_area (tree_view, cursor_path, - tree_view->priv->focus_column, + focus_column, &cell_area); - if (_gtk_tree_view_column_cell_event (tree_view->priv->focus_column, - &editable_widget, - NULL, - path_string, - &background_area, - &cell_area, - flags)) - { - retval = TRUE; - if (editable_widget != NULL) - { - gint left, right; - GdkRectangle area; - GtkCellRenderer *cell; + if (gtk_cell_area_activate (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (focus_column)), + _gtk_tree_view_column_get_context (focus_column), + GTK_WIDGET (tree_view), + &cell_area, + flags, edit_only)) + retval = TRUE; - area = cell_area; - cell = _gtk_tree_view_column_get_edited_cell (tree_view->priv->focus_column); - - _gtk_tree_view_column_get_neighbor_sizes (tree_view->priv->focus_column, cell, &left, &right); - - area.x += left; - area.width -= right + left; - - gtk_tree_view_real_start_editing (tree_view, - tree_view->priv->focus_column, - cursor_path, - editable_widget, - &area, - NULL, - flags); - } - - } - g_free (path_string); return retval; } -static void -gtk_tree_view_real_start_editing (GtkTreeView *tree_view, - GtkTreeViewColumn *column, - GtkTreePath *path, - GtkCellEditable *cell_editable, - GdkRectangle *cell_area, - GdkEvent *event, - guint flags) +void +_gtk_tree_view_add_editable (GtkTreeView *tree_view, + GtkTreeViewColumn *column, + GtkTreePath *path, + GtkCellEditable *cell_editable, + GdkRectangle *cell_area) { - gint pre_val = tree_view->priv->vadjustment->value; + gint pre_val = gtk_adjustment_get_value (tree_view->priv->vadjustment); GtkRequisition requisition; tree_view->priv->edited_column = column; - _gtk_tree_view_column_start_editing (column, GTK_CELL_EDITABLE (cell_editable)); gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE); - cell_area->y += pre_val - (int)tree_view->priv->vadjustment->value; + cell_area->y += pre_val - (int)gtk_adjustment_get_value (tree_view->priv->vadjustment); gtk_widget_get_preferred_size (GTK_WIDGET (cell_editable), &requisition, NULL); - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS); + tree_view->priv->draw_keyfocus = TRUE; if (requisition.height < cell_area->height) { @@ -14996,13 +15616,6 @@ gtk_tree_view_real_start_editing (GtkTreeView *tree_view, cell_area->x, cell_area->y, cell_area->width, cell_area->height); } - - gtk_cell_editable_start_editing (GTK_CELL_EDITABLE (cell_editable), - (GdkEvent *)event); - - gtk_widget_grab_focus (GTK_WIDGET (cell_editable)); - g_signal_connect (cell_editable, "remove-widget", - G_CALLBACK (gtk_tree_view_remove_widget), tree_view); } static void @@ -15010,7 +15623,6 @@ gtk_tree_view_stop_editing (GtkTreeView *tree_view, gboolean cancel_editing) { GtkTreeViewColumn *column; - GtkCellRenderer *cell; if (tree_view->priv->edited_column == NULL) return; @@ -15026,17 +15638,8 @@ gtk_tree_view_stop_editing (GtkTreeView *tree_view, */ column = tree_view->priv->edited_column; + gtk_cell_area_stop_editing (gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)), cancel_editing); tree_view->priv->edited_column = NULL; - - cell = _gtk_tree_view_column_get_edited_cell (column); - gtk_cell_renderer_stop_editing (cell, cancel_editing); - - if (!cancel_editing) - gtk_cell_editable_editing_done (column->editable_widget); - - tree_view->priv->edited_column = column; - - gtk_cell_editable_remove_widget (column->editable_widget); } @@ -15473,12 +16076,9 @@ gtk_tree_view_set_show_expanders (GtkTreeView *tree_view, g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); enabled = enabled != FALSE; - was_enabled = GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS); + was_enabled = tree_view->priv->show_expanders; - if (enabled) - GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS); - else - GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS); + tree_view->priv->show_expanders = enabled == TRUE; if (enabled != was_enabled) gtk_widget_queue_draw (GTK_WIDGET (tree_view)); @@ -15500,7 +16100,7 @@ gtk_tree_view_get_show_expanders (GtkTreeView *tree_view) { g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); - return GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS); + return tree_view->priv->show_expanders; } /** @@ -15657,7 +16257,7 @@ gtk_tree_view_set_tooltip_cell (GtkTreeView *tree_view, else { rect.y = 0; - rect.height = tree_view->priv->vadjustment->page_size; + rect.height = gtk_adjustment_get_page_size (tree_view->priv->vadjustment); } gtk_tooltip_set_tip_area (tooltip, &rect); diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h index a828a40c1c..80aa134af6 100644 --- a/gtk/gtktreeview.h +++ b/gtk/gtktreeview.h @@ -129,7 +129,7 @@ struct _GtkTreeViewClass * @column: The #GtkTreeViewColumn being dragged * @prev_column: A #GtkTreeViewColumn on one side of @column * @next_column: A #GtkTreeViewColumn on the other side of @column - * @data: user data + * @data: (closure): user data * * Function type for determining whether @column can be dropped in a * particular spot (as determined by @prev_column and @next_column). In @@ -167,7 +167,7 @@ typedef void (* GtkTreeViewMappingFunc) (GtkTreeView *tree_vi * @key: the key string to compare with * @iter: a #GtkTreeIter pointing the row of @model that should be compared * with @key. - * @search_data: user data from gtk_tree_view_set_search_equal_func() + * @search_data: (closure): user data from gtk_tree_view_set_search_equal_func() * * A function used for checking whether a row in @model matches * a search key string entered by the user. Note the return value @@ -186,7 +186,7 @@ typedef gboolean (*GtkTreeViewSearchEqualFunc) (GtkTreeModel *model, * GtkTreeViewRowSeparatorFunc: * @model: the #GtkTreeModel * @iter: a #GtkTreeIter pointing at a row in @model - * @data: user data + * @data: (closure): user data * * Function type for determining whether the row pointed to by @iter should * be rendered as a separator. A common way to implement this is to have a @@ -336,6 +336,13 @@ void gtk_tree_view_get_visible_rect (GtkTreeView gboolean gtk_tree_view_get_visible_range (GtkTreeView *tree_view, GtkTreePath **start_path, GtkTreePath **end_path); +gboolean gtk_tree_view_is_blank_at_pos (GtkTreeView *tree_view, + gint x, + gint y, + GtkTreePath **path, + GtkTreeViewColumn **column, + gint *cell_x, + gint *cell_y); /* Drag-and-Drop support */ void gtk_tree_view_enable_model_drag_source (GtkTreeView *tree_view, diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index 19d17c8901..370eb8ab95 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -32,8 +32,11 @@ #include "gtkhbox.h" #include "gtkmarshalers.h" #include "gtkarrow.h" +#include "gtkcellareacontext.h" +#include "gtkcellareabox.h" #include "gtkprivate.h" #include "gtkintl.h" +#include "gtktypebuiltins.h" /** @@ -54,50 +57,6 @@ */ -enum -{ - PROP_0, - PROP_VISIBLE, - PROP_RESIZABLE, - PROP_WIDTH, - PROP_SPACING, - PROP_SIZING, - PROP_FIXED_WIDTH, - PROP_MIN_WIDTH, - PROP_MAX_WIDTH, - PROP_TITLE, - PROP_EXPAND, - PROP_CLICKABLE, - PROP_WIDGET, - PROP_ALIGNMENT, - PROP_REORDERABLE, - PROP_SORT_INDICATOR, - PROP_SORT_ORDER, - PROP_SORT_COLUMN_ID -}; - -enum -{ - CLICKED, - LAST_SIGNAL -}; - -typedef struct _GtkTreeViewColumnCellInfo GtkTreeViewColumnCellInfo; -struct _GtkTreeViewColumnCellInfo -{ - GtkCellRenderer *cell; - GSList *attributes; - GtkTreeCellDataFunc func; - gpointer func_data; - GDestroyNotify destroy; - gint requested_width; - gint real_width; - guint expand : 1; - guint pack : 1; - guint has_focus : 1; - guint in_editing_mode : 1; -}; - /* Type methods */ static void gtk_tree_view_column_cell_layout_init (GtkCellLayoutIface *iface); @@ -111,30 +70,13 @@ static void gtk_tree_view_column_get_property (GObject GValue *value, GParamSpec *pspec); static void gtk_tree_view_column_finalize (GObject *object); +static void gtk_tree_view_column_dispose (GObject *object); +static GObject *gtk_tree_view_column_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); /* GtkCellLayout implementation */ -static void gtk_tree_view_column_cell_layout_pack_start (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand); -static void gtk_tree_view_column_cell_layout_pack_end (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand); -static void gtk_tree_view_column_cell_layout_clear (GtkCellLayout *cell_layout); -static void gtk_tree_view_column_cell_layout_add_attribute (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - const gchar *attribute, - gint column); -static void gtk_tree_view_column_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy); -static void gtk_tree_view_column_cell_layout_clear_attributes (GtkCellLayout *cell_layout, - GtkCellRenderer *cell); -static void gtk_tree_view_column_cell_layout_reorder (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gint position); -static GList *gtk_tree_view_column_cell_layout_get_cells (GtkCellLayout *cell_layout); +static GtkCellArea *gtk_tree_view_column_cell_layout_get_area (GtkCellLayout *cell_layout); /* Button handling code */ static void gtk_tree_view_column_create_button (GtkTreeViewColumn *tree_column); @@ -154,6 +96,21 @@ static gboolean gtk_tree_view_column_mnemonic_activate (GtkWidget *widge static void gtk_tree_view_model_sort_column_changed (GtkTreeSortable *sortable, GtkTreeViewColumn *tree_column); +/* GtkCellArea/GtkCellAreaContext callbacks */ +static void gtk_tree_view_column_context_changed (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkTreeViewColumn *tree_column); +static void gtk_tree_view_column_add_editable_callback (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + GdkRectangle *cell_area, + const gchar *path_string, + gpointer user_data); +static void gtk_tree_view_column_remove_editable_callback (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + gpointer user_data); + /* Internal functions */ static void gtk_tree_view_column_sort (GtkTreeViewColumn *tree_column, gpointer data); @@ -161,21 +118,92 @@ static void gtk_tree_view_column_setup_sort_column_id_callback (GtkTreeViewColum static void gtk_tree_view_column_set_attributesv (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, va_list args); -static GtkTreeViewColumnCellInfo *gtk_tree_view_column_get_cell_info (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell_renderer); -/* cell list manipulation */ -static GList *gtk_tree_view_column_cell_first (GtkTreeViewColumn *tree_column); -static GList *gtk_tree_view_column_cell_last (GtkTreeViewColumn *tree_column); -static GList *gtk_tree_view_column_cell_next (GtkTreeViewColumn *tree_column, - GList *current); -static GList *gtk_tree_view_column_cell_prev (GtkTreeViewColumn *tree_column, - GList *current); -static void gtk_tree_view_column_clear_attributes_by_info (GtkTreeViewColumn *tree_column, - GtkTreeViewColumnCellInfo *info); /* GtkBuildable implementation */ static void gtk_tree_view_column_buildable_init (GtkBuildableIface *iface); + +struct _GtkTreeViewColumnPrivate +{ + GtkWidget *tree_view; + GtkWidget *button; + GtkWidget *child; + GtkWidget *arrow; + GtkWidget *alignment; + GdkWindow *window; + gfloat xalign; + gulong property_changed_signal; + + /* Sizing fields */ + /* see gtk+/doc/tree-column-sizing.txt for more information on them */ + GtkTreeViewColumnSizing column_type; + gint padding; + gint resized_width; + gint width; + gint fixed_width; + gint min_width; + gint max_width; + + /* dragging columns */ + gint drag_x; + gint drag_y; + + gchar *title; + + /* Sorting */ + gulong sort_clicked_signal; + gulong sort_column_changed_signal; + gint sort_column_id; + GtkSortType sort_order; + + /* Cell area */ + GtkCellArea *cell_area; + GtkCellAreaContext *cell_area_context; + gulong add_editable_signal; + gulong remove_editable_signal; + gulong context_changed_signal; + + /* Flags */ + guint visible : 1; + guint resizable : 1; + guint clickable : 1; + guint dirty : 1; + guint show_sort_indicator : 1; + guint maybe_reordered : 1; + guint reorderable : 1; + guint use_resized_width : 1; + guint expand : 1; +}; + +enum +{ + PROP_0, + PROP_VISIBLE, + PROP_RESIZABLE, + PROP_WIDTH, + PROP_SPACING, + PROP_SIZING, + PROP_FIXED_WIDTH, + PROP_MIN_WIDTH, + PROP_MAX_WIDTH, + PROP_TITLE, + PROP_EXPAND, + PROP_CLICKABLE, + PROP_WIDGET, + PROP_ALIGNMENT, + PROP_REORDERABLE, + PROP_SORT_INDICATOR, + PROP_SORT_ORDER, + PROP_SORT_COLUMN_ID, + PROP_CELL_AREA +}; + +enum +{ + CLICKED, + LAST_SIGNAL +}; + static guint tree_column_signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_CODE (GtkTreeViewColumn, gtk_tree_view_column, G_TYPE_INITIALLY_UNOWNED, @@ -194,7 +222,9 @@ gtk_tree_view_column_class_init (GtkTreeViewColumnClass *class) class->clicked = NULL; + object_class->constructor = gtk_tree_view_column_constructor; object_class->finalize = gtk_tree_view_column_finalize; + object_class->dispose = gtk_tree_view_column_dispose; object_class->set_property = gtk_tree_view_column_set_property; object_class->get_property = gtk_tree_view_column_get_property; @@ -365,6 +395,34 @@ gtk_tree_view_column_class_init (GtkTreeViewColumnClass *class) G_MAXINT, -1, GTK_PARAM_READWRITE)); + + /** + * GtkTreeViewColumn:cell-area: + * + * The #GtkCellArea used to layout cell renderers for this column. + * + * Since: 3.0 + */ + g_object_class_install_property (object_class, + PROP_CELL_AREA, + g_param_spec_object ("cell-area", + P_("Cell Area"), + P_("The GtkCellArea used to layout cells"), + GTK_TYPE_CELL_AREA, + GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_type_class_add_private (class, sizeof (GtkTreeViewColumnPrivate)); +} + +static void +gtk_tree_view_column_custom_tag_end (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *tagname, + gpointer *data) +{ + /* Just ignore the boolean return from here */ + _gtk_cell_layout_buildable_custom_tag_end (buildable, builder, child, tagname, data); } static void @@ -372,79 +430,138 @@ gtk_tree_view_column_buildable_init (GtkBuildableIface *iface) { iface->add_child = _gtk_cell_layout_buildable_add_child; iface->custom_tag_start = _gtk_cell_layout_buildable_custom_tag_start; - iface->custom_tag_end = _gtk_cell_layout_buildable_custom_tag_end; + iface->custom_tag_end = gtk_tree_view_column_custom_tag_end; } static void gtk_tree_view_column_cell_layout_init (GtkCellLayoutIface *iface) { - iface->pack_start = gtk_tree_view_column_cell_layout_pack_start; - iface->pack_end = gtk_tree_view_column_cell_layout_pack_end; - iface->clear = gtk_tree_view_column_cell_layout_clear; - iface->add_attribute = gtk_tree_view_column_cell_layout_add_attribute; - iface->set_cell_data_func = gtk_tree_view_column_cell_layout_set_cell_data_func; - iface->clear_attributes = gtk_tree_view_column_cell_layout_clear_attributes; - iface->reorder = gtk_tree_view_column_cell_layout_reorder; - iface->get_cells = gtk_tree_view_column_cell_layout_get_cells; + iface->get_area = gtk_tree_view_column_cell_layout_get_area; } static void gtk_tree_view_column_init (GtkTreeViewColumn *tree_column) { - tree_column->button = NULL; - tree_column->xalign = 0.0; - tree_column->width = 0; - tree_column->spacing = 0; - tree_column->requested_width = -1; - tree_column->min_width = -1; - tree_column->max_width = -1; - tree_column->resized_width = 0; - tree_column->column_type = GTK_TREE_VIEW_COLUMN_GROW_ONLY; - tree_column->visible = TRUE; - tree_column->resizable = FALSE; - tree_column->expand = FALSE; - tree_column->clickable = FALSE; - tree_column->dirty = TRUE; - tree_column->sort_order = GTK_SORT_ASCENDING; - tree_column->show_sort_indicator = FALSE; - tree_column->property_changed_signal = 0; - tree_column->sort_clicked_signal = 0; - tree_column->sort_column_changed_signal = 0; - tree_column->sort_column_id = -1; - tree_column->reorderable = FALSE; - tree_column->maybe_reordered = FALSE; - tree_column->fixed_width = 1; - tree_column->use_resized_width = FALSE; - tree_column->title = g_strdup (""); + GtkTreeViewColumnPrivate *priv; + + tree_column->priv = G_TYPE_INSTANCE_GET_PRIVATE (tree_column, + GTK_TYPE_TREE_VIEW_COLUMN, + GtkTreeViewColumnPrivate); + priv = tree_column->priv; + + priv->button = NULL; + priv->xalign = 0.0; + priv->width = 0; + priv->padding = -1; + priv->min_width = -1; + priv->max_width = -1; + priv->resized_width = 0; + priv->column_type = GTK_TREE_VIEW_COLUMN_GROW_ONLY; + priv->visible = TRUE; + priv->resizable = FALSE; + priv->expand = FALSE; + priv->clickable = FALSE; + priv->dirty = TRUE; + priv->sort_order = GTK_SORT_ASCENDING; + priv->show_sort_indicator = FALSE; + priv->property_changed_signal = 0; + priv->sort_clicked_signal = 0; + priv->sort_column_changed_signal = 0; + priv->sort_column_id = -1; + priv->reorderable = FALSE; + priv->maybe_reordered = FALSE; + priv->fixed_width = 1; + priv->use_resized_width = FALSE; + priv->title = g_strdup (""); +} + +static GObject * +gtk_tree_view_column_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) +{ + GtkTreeViewColumn *tree_column; + GtkTreeViewColumnPrivate *priv; + GObject *object; + + object = G_OBJECT_CLASS (gtk_tree_view_column_parent_class)->constructor + (type, n_construct_properties, construct_properties); + + tree_column = (GtkTreeViewColumn *) object; + priv = tree_column->priv; + + if (!priv->cell_area) + { + priv->cell_area = gtk_cell_area_box_new (); + g_object_ref_sink (priv->cell_area); + } + + gtk_cell_area_set_style_detail (priv->cell_area, "treeview"); + + priv->add_editable_signal = + g_signal_connect (priv->cell_area, "add-editable", + G_CALLBACK (gtk_tree_view_column_add_editable_callback), + tree_column); + priv->remove_editable_signal = + g_signal_connect (priv->cell_area, "remove-editable", + G_CALLBACK (gtk_tree_view_column_remove_editable_callback), + tree_column); + + priv->cell_area_context = gtk_cell_area_create_context (priv->cell_area); + + priv->context_changed_signal = + g_signal_connect (priv->cell_area_context, "notify", + G_CALLBACK (gtk_tree_view_column_context_changed), tree_column); + + return object; +} + +static void +gtk_tree_view_column_dispose (GObject *object) +{ + GtkTreeViewColumn *tree_column = (GtkTreeViewColumn *) object; + GtkTreeViewColumnPrivate *priv = tree_column->priv; + + if (priv->cell_area_context) + { + g_signal_handler_disconnect (priv->cell_area_context, + priv->context_changed_signal); + + g_object_unref (priv->cell_area_context); + + priv->cell_area_context = NULL; + priv->context_changed_signal = 0; + } + + if (priv->cell_area) + { + g_signal_handler_disconnect (priv->cell_area, + priv->add_editable_signal); + g_signal_handler_disconnect (priv->cell_area, + priv->remove_editable_signal); + + g_object_unref (priv->cell_area); + priv->cell_area = NULL; + priv->add_editable_signal = 0; + priv->remove_editable_signal = 0; + } + + if (priv->child) + { + g_object_unref (priv->child); + priv->child = NULL; + } + + G_OBJECT_CLASS (gtk_tree_view_column_parent_class)->dispose (object); } static void gtk_tree_view_column_finalize (GObject *object) { - GtkTreeViewColumn *tree_column = (GtkTreeViewColumn *) object; - GList *list; + GtkTreeViewColumn *tree_column = (GtkTreeViewColumn *) object; + GtkTreeViewColumnPrivate *priv = tree_column->priv; - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; - - if (info->destroy) - { - GDestroyNotify d = info->destroy; - - info->destroy = NULL; - d (info->func_data); - } - gtk_tree_view_column_clear_attributes_by_info (tree_column, info); - g_object_unref (info->cell); - g_free (info); - } - - g_free (tree_column->title); - g_list_free (tree_column->cell_list); - - if (tree_column->child) - g_object_unref (tree_column->child); + g_free (priv->title); G_OBJECT_CLASS (gtk_tree_view_column_parent_class)->finalize (object); } @@ -456,6 +573,7 @@ gtk_tree_view_column_set_property (GObject *object, GParamSpec *pspec) { GtkTreeViewColumn *tree_column; + GtkCellArea *area; tree_column = GTK_TREE_VIEW_COLUMN (object); @@ -540,6 +658,14 @@ gtk_tree_view_column_set_property (GObject *object, gtk_tree_view_column_set_sort_column_id (tree_column, g_value_get_int (value)); break; + + case PROP_CELL_AREA: + /* Construct-only, can only be assigned once */ + area = g_value_get_object (value); + + if (area) + tree_column->priv->cell_area = g_object_ref_sink (area); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -643,6 +769,10 @@ gtk_tree_view_column_get_property (GObject *object, g_value_set_int (value, gtk_tree_view_column_get_sort_column_id (tree_column)); break; + + case PROP_CELL_AREA: + g_value_set_object (value, tree_column->priv->cell_area); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -652,236 +782,58 @@ gtk_tree_view_column_get_property (GObject *object, /* Implementation of GtkCellLayout interface */ - -static void -gtk_tree_view_column_cell_layout_pack_start (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand) +static GtkCellArea * +gtk_tree_view_column_cell_layout_get_area (GtkCellLayout *cell_layout) { - GtkTreeViewColumn *column; - GtkTreeViewColumnCellInfo *cell_info; + GtkTreeViewColumn *column = GTK_TREE_VIEW_COLUMN (cell_layout); + GtkTreeViewColumnPrivate *priv = column->priv; - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - g_return_if_fail (! gtk_tree_view_column_get_cell_info (column, cell)); - - g_object_ref_sink (cell); - - cell_info = g_new0 (GtkTreeViewColumnCellInfo, 1); - cell_info->cell = cell; - cell_info->expand = expand ? TRUE : FALSE; - cell_info->pack = GTK_PACK_START; - cell_info->has_focus = 0; - cell_info->attributes = NULL; - - column->cell_list = g_list_append (column->cell_list, cell_info); + return priv->cell_area; } -static void -gtk_tree_view_column_cell_layout_pack_end (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gboolean expand) -{ - GtkTreeViewColumn *column; - GtkTreeViewColumnCellInfo *cell_info; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - g_return_if_fail (! gtk_tree_view_column_get_cell_info (column, cell)); - - g_object_ref_sink (cell); - - cell_info = g_new0 (GtkTreeViewColumnCellInfo, 1); - cell_info->cell = cell; - cell_info->expand = expand ? TRUE : FALSE; - cell_info->pack = GTK_PACK_END; - cell_info->has_focus = 0; - cell_info->attributes = NULL; - - column->cell_list = g_list_append (column->cell_list, cell_info); -} - -static void -gtk_tree_view_column_cell_layout_clear (GtkCellLayout *cell_layout) -{ - GtkTreeViewColumn *column; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - - while (column->cell_list) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *)column->cell_list->data; - - gtk_tree_view_column_cell_layout_clear_attributes (cell_layout, info->cell); - g_object_unref (info->cell); - g_free (info); - column->cell_list = g_list_delete_link (column->cell_list, - column->cell_list); - } -} - -static void -gtk_tree_view_column_cell_layout_add_attribute (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - const gchar *attribute, - gint column) -{ - GtkTreeViewColumn *tree_column; - GtkTreeViewColumnCellInfo *info; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - tree_column = GTK_TREE_VIEW_COLUMN (cell_layout); - - info = gtk_tree_view_column_get_cell_info (tree_column, cell); - g_return_if_fail (info != NULL); - - info->attributes = g_slist_prepend (info->attributes, GINT_TO_POINTER (column)); - info->attributes = g_slist_prepend (info->attributes, g_strdup (attribute)); - - if (tree_column->tree_view) - _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); -} - -static void -gtk_tree_view_column_cell_layout_set_cell_data_func (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - GtkCellLayoutDataFunc func, - gpointer func_data, - GDestroyNotify destroy) -{ - GtkTreeViewColumn *column; - GtkTreeViewColumnCellInfo *info; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - - info = gtk_tree_view_column_get_cell_info (column, cell); - g_return_if_fail (info != NULL); - - if (info->destroy) - { - GDestroyNotify d = info->destroy; - - info->destroy = NULL; - d (info->func_data); - } - - info->func = (GtkTreeCellDataFunc)func; - info->func_data = func_data; - info->destroy = destroy; - - if (column->tree_view) - _gtk_tree_view_column_cell_set_dirty (column, TRUE); -} - -static void -gtk_tree_view_column_cell_layout_clear_attributes (GtkCellLayout *cell_layout, - GtkCellRenderer *cell_renderer) -{ - GtkTreeViewColumn *column; - GtkTreeViewColumnCellInfo *info; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - - info = gtk_tree_view_column_get_cell_info (column, cell_renderer); - if (info) - gtk_tree_view_column_clear_attributes_by_info (column, info); -} - -static void -gtk_tree_view_column_cell_layout_reorder (GtkCellLayout *cell_layout, - GtkCellRenderer *cell, - gint position) -{ - GList *link; - GtkTreeViewColumn *column; - GtkTreeViewColumnCellInfo *info; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (cell_layout)); - column = GTK_TREE_VIEW_COLUMN (cell_layout); - - info = gtk_tree_view_column_get_cell_info (column, cell); - - g_return_if_fail (info != NULL); - g_return_if_fail (position >= 0); - - link = g_list_find (column->cell_list, info); - - g_return_if_fail (link != NULL); - - column->cell_list = g_list_delete_link (column->cell_list, link); - column->cell_list = g_list_insert (column->cell_list, info, position); - - if (column->tree_view) - gtk_widget_queue_draw (column->tree_view); -} - -static void -gtk_tree_view_column_clear_attributes_by_info (GtkTreeViewColumn *tree_column, - GtkTreeViewColumnCellInfo *info) -{ - GSList *list; - - list = info->attributes; - - while (list && list->next) - { - g_free (list->data); - list = list->next->next; - } - g_slist_free (info->attributes); - info->attributes = NULL; - - if (tree_column->tree_view) - _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); -} - -/* Helper functions - */ - /* Button handling code */ static void gtk_tree_view_column_create_button (GtkTreeViewColumn *tree_column) { + GtkTreeViewColumnPrivate *priv = tree_column->priv; GtkTreeView *tree_view; GtkWidget *child; GtkWidget *hbox; - tree_view = (GtkTreeView *) tree_column->tree_view; + tree_view = (GtkTreeView *) priv->tree_view; g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); - g_return_if_fail (tree_column->button == NULL); + g_return_if_fail (priv->button == NULL); gtk_widget_push_composite_child (); - tree_column->button = gtk_button_new (); - gtk_widget_add_events (tree_column->button, GDK_POINTER_MOTION_MASK); + priv->button = gtk_button_new (); + gtk_widget_add_events (priv->button, GDK_POINTER_MOTION_MASK); gtk_widget_pop_composite_child (); /* make sure we own a reference to it as well. */ - if (tree_view->priv->header_window) - gtk_widget_set_parent_window (tree_column->button, tree_view->priv->header_window); - gtk_widget_set_parent (tree_column->button, GTK_WIDGET (tree_view)); + if (_gtk_tree_view_get_header_window (tree_view)) + gtk_widget_set_parent_window (priv->button, _gtk_tree_view_get_header_window (tree_view)); - g_signal_connect (tree_column->button, "event", + gtk_widget_set_parent (priv->button, GTK_WIDGET (tree_view)); + + g_signal_connect (priv->button, "event", G_CALLBACK (gtk_tree_view_column_button_event), tree_column); - g_signal_connect (tree_column->button, "clicked", + g_signal_connect (priv->button, "clicked", G_CALLBACK (gtk_tree_view_column_button_clicked), tree_column); - tree_column->alignment = gtk_alignment_new (tree_column->xalign, 0.5, 0.0, 0.0); + priv->alignment = gtk_alignment_new (priv->xalign, 0.5, 0.0, 0.0); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - tree_column->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_IN); + priv->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_IN); - if (tree_column->child) - child = tree_column->child; + if (priv->child) + child = priv->child; else { - child = gtk_label_new (tree_column->title); + child = gtk_label_new (priv->title); gtk_widget_show (child); } @@ -889,24 +841,25 @@ gtk_tree_view_column_create_button (GtkTreeViewColumn *tree_column) G_CALLBACK (gtk_tree_view_column_mnemonic_activate), tree_column); - if (tree_column->xalign <= 0.5) - gtk_box_pack_end (GTK_BOX (hbox), tree_column->arrow, FALSE, FALSE, 0); + if (priv->xalign <= 0.5) + gtk_box_pack_end (GTK_BOX (hbox), priv->arrow, FALSE, FALSE, 0); else - gtk_box_pack_start (GTK_BOX (hbox), tree_column->arrow, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), priv->arrow, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), tree_column->alignment, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), priv->alignment, TRUE, TRUE, 0); - gtk_container_add (GTK_CONTAINER (tree_column->alignment), child); - gtk_container_add (GTK_CONTAINER (tree_column->button), hbox); + gtk_container_add (GTK_CONTAINER (priv->alignment), child); + gtk_container_add (GTK_CONTAINER (priv->button), hbox); gtk_widget_show (hbox); - gtk_widget_show (tree_column->alignment); + gtk_widget_show (priv->alignment); gtk_tree_view_column_update_button (tree_column); } static void gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) { + GtkTreeViewColumnPrivate *priv = tree_column->priv; gint sort_column_id = -1; GtkWidget *hbox; GtkWidget *alignment; @@ -915,38 +868,38 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) GtkArrowType arrow_type = GTK_ARROW_NONE; GtkTreeModel *model; - if (tree_column->tree_view) - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_column->tree_view)); + if (priv->tree_view) + model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)); else model = NULL; /* Create a button if necessary */ - if (tree_column->visible && - tree_column->button == NULL && - tree_column->tree_view && - gtk_widget_get_realized (tree_column->tree_view)) + if (priv->visible && + priv->button == NULL && + priv->tree_view && + gtk_widget_get_realized (priv->tree_view)) gtk_tree_view_column_create_button (tree_column); - if (! tree_column->button) + if (! priv->button) return; - hbox = gtk_bin_get_child (GTK_BIN (tree_column->button)); - alignment = tree_column->alignment; - arrow = tree_column->arrow; + hbox = gtk_bin_get_child (GTK_BIN (priv->button)); + alignment = priv->alignment; + arrow = priv->arrow; current_child = gtk_bin_get_child (GTK_BIN (alignment)); /* Set up the actual button */ - gtk_alignment_set (GTK_ALIGNMENT (alignment), tree_column->xalign, + gtk_alignment_set (GTK_ALIGNMENT (alignment), priv->xalign, 0.5, 0.0, 0.0); - if (tree_column->child) + if (priv->child) { - if (current_child != tree_column->child) + if (current_child != priv->child) { gtk_container_remove (GTK_CONTAINER (alignment), current_child); gtk_container_add (GTK_CONTAINER (alignment), - tree_column->child); + priv->child); } } else @@ -961,9 +914,9 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) g_return_if_fail (GTK_IS_LABEL (current_child)); - if (tree_column->title) + if (priv->title) gtk_label_set_text_with_mnemonic (GTK_LABEL (current_child), - tree_column->title); + priv->title); else gtk_label_set_text_with_mnemonic (GTK_LABEL (current_child), ""); @@ -974,15 +927,15 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) &sort_column_id, NULL); - if (tree_column->show_sort_indicator) + if (priv->show_sort_indicator) { gboolean alternative; - g_object_get (gtk_widget_get_settings (tree_column->tree_view), + g_object_get (gtk_widget_get_settings (priv->tree_view), "gtk-alternative-sort-arrows", &alternative, NULL); - switch (tree_column->sort_order) + switch (priv->sort_order) { case GTK_SORT_ASCENDING: arrow_type = alternative ? GTK_ARROW_UP : GTK_ARROW_DOWN; @@ -1009,7 +962,7 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) g_object_ref (arrow); gtk_container_remove (GTK_CONTAINER (hbox), arrow); - if (tree_column->xalign <= 0.5) + if (priv->xalign <= 0.5) { gtk_box_pack_end (GTK_BOX (hbox), arrow, FALSE, FALSE, 0); } @@ -1021,52 +974,54 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) } g_object_unref (arrow); - if (tree_column->show_sort_indicator - || (GTK_IS_TREE_SORTABLE (model) && tree_column->sort_column_id >= 0)) + if (priv->show_sort_indicator + || (GTK_IS_TREE_SORTABLE (model) && priv->sort_column_id >= 0)) gtk_widget_show (arrow); else gtk_widget_hide (arrow); /* It's always safe to hide the button. It isn't always safe to show it, as * if you show it before it's realized, it'll get the wrong window. */ - if (tree_column->button && - tree_column->tree_view != NULL && - gtk_widget_get_realized (tree_column->tree_view)) + if (priv->button && + priv->tree_view != NULL && + gtk_widget_get_realized (priv->tree_view)) { - if (tree_column->visible) + if (priv->visible) { - gtk_widget_show_now (tree_column->button); - if (tree_column->window) + if (gdk_window_is_visible (_gtk_tree_view_get_header_window (GTK_TREE_VIEW (priv->tree_view)))) + gtk_widget_show_now (priv->button); + + if (priv->window) { - if (tree_column->resizable) + if (priv->resizable) { - gdk_window_show (tree_column->window); - gdk_window_raise (tree_column->window); + gdk_window_show (priv->window); + gdk_window_raise (priv->window); } else { - gdk_window_hide (tree_column->window); + gdk_window_hide (priv->window); } } } else { - gtk_widget_hide (tree_column->button); - if (tree_column->window) - gdk_window_hide (tree_column->window); + gtk_widget_hide (priv->button); + if (priv->window) + gdk_window_hide (priv->window); } } - if (tree_column->reorderable || tree_column->clickable) + if (priv->reorderable || priv->clickable) { - gtk_widget_set_can_focus (tree_column->button, TRUE); + gtk_widget_set_can_focus (priv->button, TRUE); } else { - gtk_widget_set_can_focus (tree_column->button, FALSE); - if (gtk_widget_has_focus (tree_column->button)) + gtk_widget_set_can_focus (priv->button, FALSE); + if (gtk_widget_has_focus (priv->button)) { - GtkWidget *toplevel = gtk_widget_get_toplevel (tree_column->tree_view); + GtkWidget *toplevel = gtk_widget_get_toplevel (priv->tree_view); if (gtk_widget_is_toplevel (toplevel)) { gtk_window_set_focus (GTK_WINDOW (toplevel), NULL); @@ -1076,8 +1031,8 @@ gtk_tree_view_column_update_button (GtkTreeViewColumn *tree_column) /* Queue a resize on the assumption that we always want to catch all changes * and columns don't change all that often. */ - if (gtk_widget_get_realized (tree_column->tree_view)) - gtk_widget_queue_resize (tree_column->tree_view); + if (gtk_widget_get_realized (priv->tree_view)) + gtk_widget_queue_resize (priv->tree_view); } @@ -1089,40 +1044,42 @@ gtk_tree_view_column_button_event (GtkWidget *widget, GdkEvent *event, gpointer data) { - GtkTreeViewColumn *column = (GtkTreeViewColumn *) data; + GtkTreeViewColumn *column = (GtkTreeViewColumn *) data; + GtkTreeViewColumnPrivate *priv = column->priv; g_return_val_if_fail (event != NULL, FALSE); if (event->type == GDK_BUTTON_PRESS && - column->reorderable && + priv->reorderable && ((GdkEventButton *)event)->button == 1) { - column->maybe_reordered = TRUE; + priv->maybe_reordered = TRUE; gdk_window_get_pointer (gtk_button_get_event_window (GTK_BUTTON (widget)), - &column->drag_x, - &column->drag_y, + &priv->drag_x, + &priv->drag_y, NULL); gtk_widget_grab_focus (widget); } if (event->type == GDK_BUTTON_RELEASE || event->type == GDK_LEAVE_NOTIFY) - column->maybe_reordered = FALSE; + priv->maybe_reordered = FALSE; if (event->type == GDK_MOTION_NOTIFY && - column->maybe_reordered && + priv->maybe_reordered && (gtk_drag_check_threshold (widget, - column->drag_x, - column->drag_y, + priv->drag_x, + priv->drag_y, (gint) ((GdkEventMotion *)event)->x, (gint) ((GdkEventMotion *)event)->y))) { - column->maybe_reordered = FALSE; - _gtk_tree_view_column_start_drag (GTK_TREE_VIEW (column->tree_view), column, + priv->maybe_reordered = FALSE; + _gtk_tree_view_column_start_drag (GTK_TREE_VIEW (priv->tree_view), column, event->motion.device); return TRUE; } - if (column->clickable == FALSE) + + if (priv->clickable == FALSE) { switch (event->type) { @@ -1153,17 +1110,19 @@ gtk_tree_view_column_mnemonic_activate (GtkWidget *widget, gboolean group_cycling, gpointer data) { - GtkTreeViewColumn *column = (GtkTreeViewColumn *)data; + GtkTreeViewColumn *column = (GtkTreeViewColumn *)data; + GtkTreeViewColumnPrivate *priv = column->priv; g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), FALSE); - GTK_TREE_VIEW (column->tree_view)->priv->focus_column = column; - if (column->clickable) - gtk_button_clicked (GTK_BUTTON (column->button)); - else if (gtk_widget_get_can_focus (column->button)) - gtk_widget_grab_focus (column->button); + _gtk_tree_view_set_focus_column (GTK_TREE_VIEW (priv->tree_view), column); + + if (priv->clickable) + gtk_button_clicked (GTK_BUTTON (priv->button)); + else if (gtk_widget_get_can_focus (priv->button)) + gtk_widget_grab_focus (priv->button); else - gtk_widget_grab_focus (column->tree_view); + gtk_widget_grab_focus (priv->tree_view); return TRUE; } @@ -1172,6 +1131,7 @@ static void gtk_tree_view_model_sort_column_changed (GtkTreeSortable *sortable, GtkTreeViewColumn *column) { + GtkTreeViewColumnPrivate *priv = column->priv; gint sort_column_id; GtkSortType order; @@ -1179,7 +1139,7 @@ gtk_tree_view_model_sort_column_changed (GtkTreeSortable *sortable, &sort_column_id, &order)) { - if (sort_column_id == column->sort_column_id) + if (sort_column_id == priv->sort_column_id) { gtk_tree_view_column_set_sort_indicator (column, TRUE); gtk_tree_view_column_set_sort_order (column, order); @@ -1199,74 +1159,80 @@ static void gtk_tree_view_column_sort (GtkTreeViewColumn *tree_column, gpointer data) { + GtkTreeViewColumnPrivate *priv = tree_column->priv; + GtkTreeModel *model; + GtkTreeSortable *sortable; gint sort_column_id; GtkSortType order; gboolean has_sort_column; gboolean has_default_sort_func; - g_return_if_fail (tree_column->tree_view != NULL); + g_return_if_fail (priv->tree_view != NULL); + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)); + sortable = GTK_TREE_SORTABLE (model); has_sort_column = - gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model), + gtk_tree_sortable_get_sort_column_id (sortable, &sort_column_id, &order); has_default_sort_func = - gtk_tree_sortable_has_default_sort_func (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model)); + gtk_tree_sortable_has_default_sort_func (sortable); if (has_sort_column && - sort_column_id == tree_column->sort_column_id) + sort_column_id == priv->sort_column_id) { if (order == GTK_SORT_ASCENDING) - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model), - tree_column->sort_column_id, + gtk_tree_sortable_set_sort_column_id (sortable, + priv->sort_column_id, GTK_SORT_DESCENDING); else if (order == GTK_SORT_DESCENDING && has_default_sort_func) - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model), + gtk_tree_sortable_set_sort_column_id (sortable, GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); else - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model), - tree_column->sort_column_id, + gtk_tree_sortable_set_sort_column_id (sortable, + priv->sort_column_id, GTK_SORT_ASCENDING); } else { - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GTK_TREE_VIEW (tree_column->tree_view)->priv->model), - tree_column->sort_column_id, + gtk_tree_sortable_set_sort_column_id (sortable, + priv->sort_column_id, GTK_SORT_ASCENDING); } } - static void gtk_tree_view_column_setup_sort_column_id_callback (GtkTreeViewColumn *tree_column) { + GtkTreeViewColumnPrivate *priv = tree_column->priv; GtkTreeModel *model; - if (tree_column->tree_view == NULL) + if (priv->tree_view == NULL) return; - model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_column->tree_view)); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)); if (model == NULL) return; if (GTK_IS_TREE_SORTABLE (model) && - tree_column->sort_column_id != -1) + priv->sort_column_id != -1) { gint real_sort_column_id; GtkSortType real_order; - if (tree_column->sort_column_changed_signal == 0) - tree_column->sort_column_changed_signal = + if (priv->sort_column_changed_signal == 0) + priv->sort_column_changed_signal = g_signal_connect (model, "sort-column-changed", G_CALLBACK (gtk_tree_view_model_sort_column_changed), tree_column); - + if (gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (model), &real_sort_column_id, &real_order) && - (real_sort_column_id == tree_column->sort_column_id)) + (real_sort_column_id == priv->sort_column_id)) { gtk_tree_view_column_set_sort_indicator (tree_column, TRUE); gtk_tree_view_column_set_sort_order (tree_column, real_order); @@ -1278,32 +1244,91 @@ gtk_tree_view_column_setup_sort_column_id_callback (GtkTreeViewColumn *tree_colu } } +static void +gtk_tree_view_column_context_changed (GtkCellAreaContext *context, + GParamSpec *pspec, + GtkTreeViewColumn *tree_column) +{ + /* Here we want the column re-requested if the underlying context was + * actually reset for any reason, this can happen if the underlying + * area/cell configuration changes (i.e. cell packing properties + * or cell spacing and the like) + * + * Note that we block this handler while requesting for sizes + * so there is no need to check for the new context size being -1, + * we also block the handler when explicitly resetting the context + * so as to avoid some infinite stack recursion. + */ + if (!strcmp (pspec->name, "minimum-width") || + !strcmp (pspec->name, "natural-width") || + !strcmp (pspec->name, "minimum-height") || + !strcmp (pspec->name, "natural-height")) + _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); +} + +static void +gtk_tree_view_column_add_editable_callback (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + GdkRectangle *cell_area, + const gchar *path_string, + gpointer user_data) +{ + GtkTreeViewColumn *column = user_data; + GtkTreeViewColumnPrivate *priv = column->priv; + GtkTreePath *path; + + if (priv->tree_view) + { + path = gtk_tree_path_new_from_string (path_string); + + _gtk_tree_view_add_editable (GTK_TREE_VIEW (priv->tree_view), + column, + path, + edit_widget, + cell_area); + + gtk_tree_path_free (path); + } +} + +static void +gtk_tree_view_column_remove_editable_callback (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + gpointer user_data) +{ + GtkTreeViewColumn *column = user_data; + GtkTreeViewColumnPrivate *priv = column->priv; + + if (priv->tree_view) + _gtk_tree_view_remove_editable (GTK_TREE_VIEW (priv->tree_view), + column, + edit_widget); +} /* Exported Private Functions. * These should only be called by gtktreeview.c or gtktreeviewcolumn.c */ - void _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column) { + GtkTreeViewColumnPrivate *priv = column->priv; GtkAllocation allocation; GtkTreeView *tree_view; GdkWindowAttr attr; guint attributes_mask; gboolean rtl; - tree_view = (GtkTreeView *)column->tree_view; - rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_view)) == GTK_TEXT_DIR_RTL); + tree_view = (GtkTreeView *)priv->tree_view; + rtl = (gtk_widget_get_direction (priv->tree_view) == GTK_TEXT_DIR_RTL); g_return_if_fail (GTK_IS_TREE_VIEW (tree_view)); - g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (tree_view))); - g_return_if_fail (tree_view->priv->header_window != NULL); - g_return_if_fail (column->button != NULL); + g_return_if_fail (gtk_widget_get_realized (priv->tree_view)); + g_return_if_fail (priv->button != NULL); - gtk_widget_set_parent_window (column->button, tree_view->priv->header_window); - - if (column->visible) - gtk_widget_show (column->button); + g_return_if_fail (_gtk_tree_view_get_header_window (tree_view) != NULL); + gtk_widget_set_parent_window (priv->button, _gtk_tree_view_get_header_window (tree_view)); attr.window_type = GDK_WINDOW_CHILD; attr.wclass = GDK_INPUT_ONLY; @@ -1315,43 +1340,49 @@ _gtk_tree_view_column_realize_button (GtkTreeViewColumn *column) GDK_POINTER_MOTION_HINT_MASK | GDK_KEY_PRESS_MASK); attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y; - attr.cursor = gdk_cursor_new_for_display (gdk_window_get_display (tree_view->priv->header_window), - GDK_SB_H_DOUBLE_ARROW); + attr.cursor = gdk_cursor_new_for_display + (gdk_window_get_display (_gtk_tree_view_get_header_window (tree_view)), GDK_SB_H_DOUBLE_ARROW); attr.y = 0; attr.width = TREE_VIEW_DRAG_WIDTH; - attr.height = tree_view->priv->header_height; + attr.height = _gtk_tree_view_get_header_height (tree_view); - gtk_widget_get_allocation (column->button, &allocation); - attr.x = (allocation.x + (rtl ? 0 : allocation.width)) - TREE_VIEW_DRAG_WIDTH / 2; - column->window = gdk_window_new (tree_view->priv->header_window, - &attr, attributes_mask); - gdk_window_set_user_data (column->window, tree_view); + gtk_widget_get_allocation (priv->button, &allocation); + attr.x = (allocation.x + (rtl ? 0 : allocation.width)) - TREE_VIEW_DRAG_WIDTH / 2; + priv->window = gdk_window_new (_gtk_tree_view_get_header_window (tree_view), + &attr, attributes_mask); + gdk_window_set_user_data (priv->window, tree_view); gtk_tree_view_column_update_button (column); - gdk_cursor_unref (attr.cursor); + g_object_unref (attr.cursor); } void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column) { - g_return_if_fail (column != NULL); - g_return_if_fail (column->window != NULL); + GtkTreeViewColumnPrivate *priv; - gdk_window_set_user_data (column->window, NULL); - gdk_window_destroy (column->window); - column->window = NULL; + g_return_if_fail (column != NULL); + + priv = column->priv; + g_return_if_fail (priv->window != NULL); + + gdk_window_set_user_data (priv->window, NULL); + gdk_window_destroy (priv->window); + priv->window = NULL; } void _gtk_tree_view_column_unset_model (GtkTreeViewColumn *column, GtkTreeModel *old_model) { - if (column->sort_column_changed_signal) + GtkTreeViewColumnPrivate *priv = column->priv; + + if (priv->sort_column_changed_signal) { g_signal_handler_disconnect (old_model, - column->sort_column_changed_signal); - column->sort_column_changed_signal = 0; + priv->sort_column_changed_signal); + priv->sort_column_changed_signal = 0; } gtk_tree_view_column_set_sort_indicator (column, FALSE); } @@ -1360,16 +1391,18 @@ void _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column, GtkTreeView *tree_view) { - g_assert (column->tree_view == NULL); + GtkTreeViewColumnPrivate *priv = column->priv; - column->tree_view = GTK_WIDGET (tree_view); + g_assert (priv->tree_view == NULL); + + priv->tree_view = GTK_WIDGET (tree_view); gtk_tree_view_column_create_button (column); - column->property_changed_signal = - g_signal_connect_swapped (tree_view, - "notify::model", - G_CALLBACK (gtk_tree_view_column_setup_sort_column_id_callback), - column); + priv->property_changed_signal = + g_signal_connect_swapped (tree_view, + "notify::model", + G_CALLBACK (gtk_tree_view_column_setup_sort_column_id_callback), + column); gtk_tree_view_column_setup_sort_column_id_callback (column); } @@ -1377,96 +1410,148 @@ _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column, void _gtk_tree_view_column_unset_tree_view (GtkTreeViewColumn *column) { - if (column->tree_view && column->button) + GtkTreeViewColumnPrivate *priv = column->priv; + + if (priv->tree_view && priv->button) { - gtk_container_remove (GTK_CONTAINER (column->tree_view), column->button); + gtk_container_remove (GTK_CONTAINER (priv->tree_view), priv->button); } - if (column->property_changed_signal) + if (priv->property_changed_signal) { - g_signal_handler_disconnect (column->tree_view, column->property_changed_signal); - column->property_changed_signal = 0; + g_signal_handler_disconnect (priv->tree_view, priv->property_changed_signal); + priv->property_changed_signal = 0; } - if (column->sort_column_changed_signal) + if (priv->sort_column_changed_signal) { - g_signal_handler_disconnect (gtk_tree_view_get_model (GTK_TREE_VIEW (column->tree_view)), - column->sort_column_changed_signal); - column->sort_column_changed_signal = 0; + g_signal_handler_disconnect (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)), + priv->sort_column_changed_signal); + priv->sort_column_changed_signal = 0; } - column->tree_view = NULL; - column->button = NULL; + priv->tree_view = NULL; + priv->button = NULL; } gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column) { - GtkCellRenderer *cell; - GtkCellRendererMode mode; - GList *list; + GtkTreeViewColumnPrivate *priv = column->priv; + gboolean ret = FALSE; + GList *list, *cells; - for (list = column->cell_list; list; list = list->next) + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (priv->cell_area)); + + for (list = cells; list; list = list->next) { - cell = ((GtkTreeViewColumnCellInfo *)list->data)->cell; + GtkCellRenderer *cell = list->data; + GtkCellRendererMode mode; + g_object_get (cell, "mode", &mode, NULL); + if (mode == GTK_CELL_RENDERER_MODE_EDITABLE) - return TRUE; + { + ret = TRUE; + break; + } } - return FALSE; + g_list_free (cells); + + return ret; } /* gets cell being edited */ GtkCellRenderer * _gtk_tree_view_column_get_edited_cell (GtkTreeViewColumn *column) { - GList *list; + GtkTreeViewColumnPrivate *priv = column->priv; - for (list = column->cell_list; list; list = list->next) - if (((GtkTreeViewColumnCellInfo *)list->data)->in_editing_mode) - return ((GtkTreeViewColumnCellInfo *)list->data)->cell; - - return NULL; -} - -gint -_gtk_tree_view_column_count_special_cells (GtkTreeViewColumn *column) -{ - gint i = 0; - GList *list; - - for (list = column->cell_list; list; list = list->next) - { - GtkCellRendererMode mode; - GtkTreeViewColumnCellInfo *cellinfo = list->data; - - g_object_get (cellinfo->cell, "mode", &mode, NULL); - if ((mode == GTK_CELL_RENDERER_MODE_EDITABLE || - mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) && - gtk_cell_renderer_get_visible (cellinfo->cell)) - i++; - } - - return i; + return gtk_cell_area_get_edited_cell (priv->cell_area); } GtkCellRenderer * _gtk_tree_view_column_get_cell_at_pos (GtkTreeViewColumn *column, - gint x) + GdkRectangle *cell_area, + GdkRectangle *background_area, + gint x, + gint y) { - GList *list; - gint current_x = 0; + GtkCellRenderer *match = NULL; + GtkTreeViewColumnPrivate *priv = column->priv; - list = gtk_tree_view_column_cell_first (column); - for (; list; list = gtk_tree_view_column_cell_next (column, list)) - { - GtkTreeViewColumnCellInfo *cellinfo = list->data; - if (current_x <= x && x <= current_x + cellinfo->real_width) - return cellinfo->cell; - current_x += cellinfo->real_width; - } + /* If (x, y) is outside of the background area, immediately return */ + if (x < background_area->x || + x > background_area->x + background_area->width || + y < background_area->y || + y > background_area->y + background_area->height) + return NULL; - return NULL; + /* If (x, y) is inside the background area, clamp it to the cell_area + * so that a cell is still returned. The main reason for doing this + * (on the x axis) is for handling clicks in the indentation area + * (either at the left or right depending on RTL setting). Another + * reason is for handling clicks on the area where the focus rectangle + * is drawn (this is outside of cell area), this manifests itself + * mainly when a large setting is used for focus-line-width. + */ + if (x < cell_area->x) + x = cell_area->x; + else if (x > cell_area->x + cell_area->width) + x = cell_area->x + cell_area->width; + + if (y < cell_area->y) + y = cell_area->y; + else if (y > cell_area->y + cell_area->height) + y = cell_area->y + cell_area->height; + + match = gtk_cell_area_get_cell_at_position (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + cell_area, + x, y, + NULL); + + return match; +} + +gboolean +_gtk_tree_view_column_is_blank_at_pos (GtkTreeViewColumn *column, + GdkRectangle *cell_area, + GdkRectangle *background_area, + gint x, + gint y) +{ + GtkCellRenderer *match; + GdkRectangle cell_alloc, aligned_area, inner_area; + GtkTreeViewColumnPrivate *priv = column->priv; + + match = _gtk_tree_view_column_get_cell_at_pos (column, + cell_area, + background_area, + x, y); + if (!match) + return FALSE; + + gtk_cell_area_get_cell_allocation (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + match, + cell_area, + &cell_alloc); + + gtk_cell_area_inner_cell_area (priv->cell_area, priv->tree_view, + &cell_alloc, &inner_area); + gtk_cell_renderer_get_aligned_area (match, priv->tree_view, 0, + &inner_area, &aligned_area); + + if (x < aligned_area.x || + x > aligned_area.x + aligned_area.width || + y < aligned_area.y || + y > aligned_area.y + aligned_area.height) + return TRUE; + + return FALSE; } /* Public Functions */ @@ -1489,6 +1574,27 @@ gtk_tree_view_column_new (void) return tree_column; } +/** + * gtk_tree_view_column_new_with_area: + * @area: the #GtkCellArea that the newly created column should use to layout cells. + * + * Creates a new #GtkTreeViewColumn using @area to render it's cells. + * + * Return value: A newly created #GtkTreeViewColumn. + * + * Since: 3.0 + */ +GtkTreeViewColumn * +gtk_tree_view_column_new_with_area (GtkCellArea *area) +{ + GtkTreeViewColumn *tree_column; + + tree_column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN, "cell-area", area, NULL); + + return tree_column; +} + + /** * gtk_tree_view_column_new_with_attributes: * @title: The title to set the header to. @@ -1538,18 +1644,6 @@ gtk_tree_view_column_new_with_attributes (const gchar *title, return retval; } -static GtkTreeViewColumnCellInfo * -gtk_tree_view_column_get_cell_info (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell_renderer) -{ - GList *list; - for (list = tree_column->cell_list; list; list = list->next) - if (((GtkTreeViewColumnCellInfo *)list->data)->cell == cell_renderer) - return (GtkTreeViewColumnCellInfo *) list->data; - return NULL; -} - - /** * gtk_tree_view_column_pack_start: * @tree_column: A #GtkTreeViewColumn. @@ -1598,24 +1692,6 @@ gtk_tree_view_column_clear (GtkTreeViewColumn *tree_column) gtk_cell_layout_clear (GTK_CELL_LAYOUT (tree_column)); } -static GList * -gtk_tree_view_column_cell_layout_get_cells (GtkCellLayout *layout) -{ - GtkTreeViewColumn *tree_column = GTK_TREE_VIEW_COLUMN (layout); - GList *retval = NULL, *list; - - g_return_val_if_fail (tree_column != NULL, NULL); - - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *)list->data; - - retval = g_list_append (retval, info->cell); - } - - return retval; -} - /** * gtk_tree_view_column_add_attribute: * @tree_column: A #GtkTreeViewColumn. @@ -1645,17 +1721,20 @@ gtk_tree_view_column_set_attributesv (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, va_list args) { + GtkTreeViewColumnPrivate *priv = tree_column->priv; gchar *attribute; gint column; attribute = va_arg (args, gchar *); - gtk_tree_view_column_clear_attributes (tree_column, cell_renderer); + gtk_cell_layout_clear_attributes (GTK_CELL_LAYOUT (priv->cell_area), + cell_renderer); while (attribute != NULL) { column = va_arg (args, gint); - gtk_tree_view_column_add_attribute (tree_column, cell_renderer, attribute, column); + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (priv->cell_area), + cell_renderer, attribute, column); attribute = va_arg (args, gchar *); } } @@ -1680,7 +1759,6 @@ gtk_tree_view_column_set_attributes (GtkTreeViewColumn *tree_column, g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell_renderer)); - g_return_if_fail (gtk_tree_view_column_get_cell_info (tree_column, cell_renderer)); va_start (args, cell_renderer); gtk_tree_view_column_set_attributesv (tree_column, cell_renderer, args); @@ -1692,7 +1770,7 @@ gtk_tree_view_column_set_attributes (GtkTreeViewColumn *tree_column, * gtk_tree_view_column_set_cell_data_func: * @tree_column: A #GtkTreeViewColumn * @cell_renderer: A #GtkCellRenderer - * @func: The #GtkTreeViewColumnFunc to use. + * @func: (allow-none): The #GtkTreeViewColumnFunc to use. * @func_data: The user data for @func. * @destroy: The destroy notification for @func_data * @@ -1744,14 +1822,16 @@ void gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, gint spacing) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (spacing >= 0); - if (tree_column->spacing == spacing) - return; + priv = tree_column->priv; - tree_column->spacing = spacing; - if (tree_column->tree_view) + gtk_cell_area_box_set_spacing (GTK_CELL_AREA_BOX (priv->cell_area), + spacing); + if (priv->tree_view) _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); } @@ -1766,9 +1846,13 @@ gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, gint gtk_tree_view_column_get_spacing (GtkTreeViewColumn *tree_column) { + GtkTreeViewColumnPrivate *priv; + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->spacing; + priv = tree_column->priv; + + return gtk_cell_area_box_get_spacing (GTK_CELL_AREA_BOX (priv->cell_area)); } /* Options for manipulating the columns */ @@ -1784,16 +1868,19 @@ void gtk_tree_view_column_set_visible (GtkTreeViewColumn *tree_column, gboolean visible) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; visible = !! visible; - if (tree_column->visible == visible) + if (priv->visible == visible) return; - tree_column->visible = visible; + priv->visible = visible; - if (tree_column->visible) + if (priv->visible) _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); gtk_tree_view_column_update_button (tree_column); @@ -1814,7 +1901,7 @@ gtk_tree_view_column_get_visible (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->visible; + return tree_column->priv->visible; } /** @@ -1831,16 +1918,19 @@ void gtk_tree_view_column_set_resizable (GtkTreeViewColumn *tree_column, gboolean resizable) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; resizable = !! resizable; - if (tree_column->resizable == resizable) + if (priv->resizable == resizable) return; - tree_column->resizable = resizable; + priv->resizable = resizable; - if (resizable && tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) + if (resizable && priv->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) gtk_tree_view_column_set_sizing (tree_column, GTK_TREE_VIEW_COLUMN_GROW_ONLY); gtk_tree_view_column_update_button (tree_column); @@ -1861,7 +1951,7 @@ gtk_tree_view_column_get_resizable (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->resizable; + return tree_column->priv->resizable; } @@ -1876,25 +1966,19 @@ void gtk_tree_view_column_set_sizing (GtkTreeViewColumn *tree_column, GtkTreeViewColumnSizing type) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - if (type == tree_column->column_type) + priv = tree_column->priv; + + if (type == priv->column_type) return; if (type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) gtk_tree_view_column_set_resizable (tree_column, FALSE); -#if 0 - /* I was clearly on crack when I wrote this. I'm not sure what's supposed to - * be below so I'll leave it until I figure it out. - */ - if (tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE && - tree_column->requested_width != -1) - { - gtk_tree_view_column_set_sizing (tree_column, tree_column->requested_width); - } -#endif - tree_column->column_type = type; + priv->column_type = type; gtk_tree_view_column_update_button (tree_column); @@ -1914,7 +1998,7 @@ gtk_tree_view_column_get_sizing (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->column_type; + return tree_column->priv->column_type; } /** @@ -1930,7 +2014,91 @@ gtk_tree_view_column_get_width (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->width; + return tree_column->priv->width; +} + +gint +_gtk_tree_view_column_request_width (GtkTreeViewColumn *tree_column) +{ + GtkTreeViewColumnPrivate *priv; + gint real_requested_width; + + priv = tree_column->priv; + + if (priv->use_resized_width) + { + real_requested_width = priv->resized_width; + } + else if (priv->column_type == GTK_TREE_VIEW_COLUMN_FIXED) + { + real_requested_width = priv->fixed_width; + } + else if (gtk_tree_view_get_headers_visible (GTK_TREE_VIEW (priv->tree_view))) + { + gint button_request; + gint requested_width; + + gtk_cell_area_context_get_preferred_width (priv->cell_area_context, &requested_width, NULL); + requested_width += priv->padding; + + gtk_widget_get_preferred_width (priv->button, &button_request, NULL); + real_requested_width = MAX (requested_width, button_request); + } + else + { + gint requested_width; + + gtk_cell_area_context_get_preferred_width (priv->cell_area_context, &requested_width, NULL); + requested_width += priv->padding; + + real_requested_width = requested_width; + if (real_requested_width < 0) + real_requested_width = 0; + } + + if (priv->min_width != -1) + real_requested_width = MAX (real_requested_width, priv->min_width); + + if (priv->max_width != -1) + real_requested_width = MIN (real_requested_width, priv->max_width); + + return real_requested_width; +} + +void +_gtk_tree_view_column_allocate (GtkTreeViewColumn *tree_column, + int x_offset, + int width) +{ + GtkTreeViewColumnPrivate *priv; + GtkAllocation allocation; + gboolean rtl; + + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + + priv = tree_column->priv; + + priv->width = width; + + gtk_cell_area_context_allocate (priv->cell_area_context, priv->width - priv->padding, -1); + + allocation.x = x_offset; + allocation.y = 0; + allocation.width = width; + allocation.height = _gtk_tree_view_get_header_height (GTK_TREE_VIEW (priv->tree_view)); + + gtk_widget_size_allocate (priv->button, &allocation); + + if (priv->window) + { + rtl = (gtk_widget_get_direction (priv->tree_view) == GTK_TEXT_DIR_RTL); + gdk_window_move_resize (priv->window, + allocation.x + (rtl ? 0 : allocation.width) - TREE_VIEW_DRAG_WIDTH/2, + allocation.y, + TREE_VIEW_DRAG_WIDTH, allocation.height); + } + + g_object_notify (G_OBJECT (tree_column), "width"); } /** @@ -1948,17 +2116,21 @@ void gtk_tree_view_column_set_fixed_width (GtkTreeViewColumn *tree_column, gint fixed_width) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (fixed_width > 0); - tree_column->fixed_width = fixed_width; - tree_column->use_resized_width = FALSE; + priv = tree_column->priv; - if (tree_column->tree_view && - gtk_widget_get_realized (tree_column->tree_view) && - tree_column->column_type == GTK_TREE_VIEW_COLUMN_FIXED) + priv->fixed_width = fixed_width; + priv->use_resized_width = FALSE; + + if (priv->tree_view && + gtk_widget_get_realized (priv->tree_view) && + priv->column_type == GTK_TREE_VIEW_COLUMN_FIXED) { - gtk_widget_queue_resize (tree_column->tree_view); + gtk_widget_queue_resize (priv->tree_view); } g_object_notify (G_OBJECT (tree_column), "fixed-width"); @@ -1978,7 +2150,7 @@ gtk_tree_view_column_get_fixed_width (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->fixed_width; + return tree_column->priv->fixed_width; } /** @@ -1993,32 +2165,36 @@ void gtk_tree_view_column_set_min_width (GtkTreeViewColumn *tree_column, gint min_width) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (min_width >= -1); - if (min_width == tree_column->min_width) + priv = tree_column->priv; + + if (min_width == priv->min_width) return; - if (tree_column->visible && - tree_column->tree_view != NULL && - gtk_widget_get_realized (tree_column->tree_view)) + if (priv->visible && + priv->tree_view != NULL && + gtk_widget_get_realized (priv->tree_view)) { - if (min_width > tree_column->width) - gtk_widget_queue_resize (tree_column->tree_view); + if (min_width > priv->width) + gtk_widget_queue_resize (priv->tree_view); } - tree_column->min_width = min_width; + priv->min_width = min_width; g_object_freeze_notify (G_OBJECT (tree_column)); - if (tree_column->max_width != -1 && tree_column->max_width < min_width) + if (priv->max_width != -1 && priv->max_width < min_width) { - tree_column->max_width = min_width; + priv->max_width = min_width; g_object_notify (G_OBJECT (tree_column), "max-width"); } g_object_notify (G_OBJECT (tree_column), "min-width"); g_object_thaw_notify (G_OBJECT (tree_column)); - if (tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) - _gtk_tree_view_column_autosize (GTK_TREE_VIEW (tree_column->tree_view), + if (priv->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) + _gtk_tree_view_column_autosize (GTK_TREE_VIEW (priv->tree_view), tree_column); } @@ -2036,7 +2212,7 @@ gtk_tree_view_column_get_min_width (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), -1); - return tree_column->min_width; + return tree_column->priv->min_width; } /** @@ -2053,32 +2229,36 @@ void gtk_tree_view_column_set_max_width (GtkTreeViewColumn *tree_column, gint max_width) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (max_width >= -1); - if (max_width == tree_column->max_width) + priv = tree_column->priv; + + if (max_width == priv->max_width) return; - if (tree_column->visible && - tree_column->tree_view != NULL && - gtk_widget_get_realized (tree_column->tree_view)) + if (priv->visible && + priv->tree_view != NULL && + gtk_widget_get_realized (priv->tree_view)) { - if (max_width != -1 && max_width < tree_column->width) - gtk_widget_queue_resize (tree_column->tree_view); + if (max_width != -1 && max_width < priv->width) + gtk_widget_queue_resize (priv->tree_view); } - tree_column->max_width = max_width; + priv->max_width = max_width; g_object_freeze_notify (G_OBJECT (tree_column)); - if (max_width != -1 && max_width < tree_column->min_width) + if (max_width != -1 && max_width < priv->min_width) { - tree_column->min_width = max_width; + priv->min_width = max_width; g_object_notify (G_OBJECT (tree_column), "min-width"); } g_object_notify (G_OBJECT (tree_column), "max-width"); g_object_thaw_notify (G_OBJECT (tree_column)); - if (tree_column->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) - _gtk_tree_view_column_autosize (GTK_TREE_VIEW (tree_column->tree_view), + if (priv->column_type == GTK_TREE_VIEW_COLUMN_AUTOSIZE) + _gtk_tree_view_column_autosize (GTK_TREE_VIEW (priv->tree_view), tree_column); } @@ -2096,7 +2276,7 @@ gtk_tree_view_column_get_max_width (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), -1); - return tree_column->max_width; + return tree_column->priv->max_width; } /** @@ -2109,12 +2289,16 @@ gtk_tree_view_column_get_max_width (GtkTreeViewColumn *tree_column) void gtk_tree_view_column_clicked (GtkTreeViewColumn *tree_column) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - if (tree_column->visible && - tree_column->button && - tree_column->clickable) - gtk_button_clicked (GTK_BUTTON (tree_column->button)); + priv = tree_column->priv; + + if (priv->visible && + priv->button && + priv->clickable) + gtk_button_clicked (GTK_BUTTON (priv->button)); } /** @@ -2129,13 +2313,16 @@ void gtk_tree_view_column_set_title (GtkTreeViewColumn *tree_column, const gchar *title) { - gchar *new_title; - + GtkTreeViewColumnPrivate *priv; + gchar *new_title; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; + new_title = g_strdup (title); - g_free (tree_column->title); - tree_column->title = new_title; + g_free (priv->title); + priv->title = new_title; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "title"); @@ -2155,7 +2342,7 @@ gtk_tree_view_column_get_title (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), NULL); - return tree_column->title; + return tree_column->priv->title; } /** @@ -2174,25 +2361,29 @@ void gtk_tree_view_column_set_expand (GtkTreeViewColumn *tree_column, gboolean expand) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - expand = expand?TRUE:FALSE; - if (tree_column->expand == expand) - return; - tree_column->expand = expand; + priv = tree_column->priv; - if (tree_column->visible && - tree_column->tree_view != NULL && - gtk_widget_get_realized (tree_column->tree_view)) + expand = expand?TRUE:FALSE; + if (priv->expand == expand) + return; + priv->expand = expand; + + if (priv->visible && + priv->tree_view != NULL && + gtk_widget_get_realized (priv->tree_view)) { /* We want to continue using the original width of the * column that includes additional space added by the user * resizing the columns and possibly extra (expanded) space, which * are not included in the resized width. */ - tree_column->use_resized_width = FALSE; + priv->use_resized_width = FALSE; - gtk_widget_queue_resize (tree_column->tree_view); + gtk_widget_queue_resize (priv->tree_view); } g_object_notify (G_OBJECT (tree_column), "expand"); @@ -2213,7 +2404,7 @@ gtk_tree_view_column_get_expand (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->expand; + return tree_column->priv->expand; } /** @@ -2228,13 +2419,17 @@ void gtk_tree_view_column_set_clickable (GtkTreeViewColumn *tree_column, gboolean clickable) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; + clickable = !! clickable; - if (tree_column->clickable == clickable) + if (priv->clickable == clickable) return; - tree_column->clickable = clickable; + priv->clickable = clickable; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "clickable"); } @@ -2252,7 +2447,7 @@ gtk_tree_view_column_get_clickable (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->clickable; + return tree_column->priv->clickable; } /** @@ -2267,16 +2462,20 @@ void gtk_tree_view_column_set_widget (GtkTreeViewColumn *tree_column, GtkWidget *widget) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget)); + priv = tree_column->priv; + if (widget) g_object_ref_sink (widget); - if (tree_column->child) - g_object_unref (tree_column->child); + if (priv->child) + g_object_unref (priv->child); - tree_column->child = widget; + priv->child = widget; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "widget"); } @@ -2296,7 +2495,7 @@ gtk_tree_view_column_get_widget (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), NULL); - return tree_column->child; + return tree_column->priv->child; } /** @@ -2312,14 +2511,18 @@ void gtk_tree_view_column_set_alignment (GtkTreeViewColumn *tree_column, gfloat xalign) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; + xalign = CLAMP (xalign, 0.0, 1.0); - if (tree_column->xalign == xalign) + if (priv->xalign == xalign) return; - tree_column->xalign = xalign; + priv->xalign = xalign; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "alignment"); } @@ -2338,7 +2541,7 @@ gtk_tree_view_column_get_alignment (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0.5); - return tree_column->xalign; + return tree_column->priv->xalign; } /** @@ -2353,15 +2556,19 @@ void gtk_tree_view_column_set_reorderable (GtkTreeViewColumn *tree_column, gboolean reorderable) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; + /* if (reorderable) gtk_tree_view_column_set_clickable (tree_column, TRUE);*/ - if (tree_column->reorderable == (reorderable?TRUE:FALSE)) + if (priv->reorderable == (reorderable?TRUE:FALSE)) return; - tree_column->reorderable = (reorderable?TRUE:FALSE); + priv->reorderable = (reorderable?TRUE:FALSE); gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "reorderable"); } @@ -2379,7 +2586,7 @@ gtk_tree_view_column_get_reorderable (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->reorderable; + return tree_column->priv->reorderable; } @@ -2395,29 +2602,33 @@ void gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column, gint sort_column_id) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (sort_column_id >= -1); - if (tree_column->sort_column_id == sort_column_id) + priv = tree_column->priv; + + if (priv->sort_column_id == sort_column_id) return; - tree_column->sort_column_id = sort_column_id; + priv->sort_column_id = sort_column_id; /* Handle unsetting the id */ if (sort_column_id == -1) { - GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_column->tree_view)); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree_view)); - if (tree_column->sort_clicked_signal) + if (priv->sort_clicked_signal) { - g_signal_handler_disconnect (tree_column, tree_column->sort_clicked_signal); - tree_column->sort_clicked_signal = 0; + g_signal_handler_disconnect (tree_column, priv->sort_clicked_signal); + priv->sort_clicked_signal = 0; } - if (tree_column->sort_column_changed_signal) + if (priv->sort_column_changed_signal) { - g_signal_handler_disconnect (model, tree_column->sort_column_changed_signal); - tree_column->sort_column_changed_signal = 0; + g_signal_handler_disconnect (model, priv->sort_column_changed_signal); + priv->sort_column_changed_signal = 0; } gtk_tree_view_column_set_sort_order (tree_column, GTK_SORT_ASCENDING); @@ -2429,11 +2640,11 @@ gtk_tree_view_column_set_sort_column_id (GtkTreeViewColumn *tree_column, gtk_tree_view_column_set_clickable (tree_column, TRUE); - if (! tree_column->sort_clicked_signal) - tree_column->sort_clicked_signal = g_signal_connect (tree_column, - "clicked", - G_CALLBACK (gtk_tree_view_column_sort), - NULL); + if (! priv->sort_clicked_signal) + priv->sort_clicked_signal = g_signal_connect (tree_column, + "clicked", + G_CALLBACK (gtk_tree_view_column_sort), + NULL); gtk_tree_view_column_setup_sort_column_id_callback (tree_column); g_object_notify (G_OBJECT (tree_column), "sort-column-id"); @@ -2455,7 +2666,7 @@ gtk_tree_view_column_get_sort_column_id (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->sort_column_id; + return tree_column->priv->sort_column_id; } /** @@ -2477,10 +2688,10 @@ gtk_tree_view_column_set_sort_indicator (GtkTreeViewColumn *tree_column, setting = setting != FALSE; - if (setting == tree_column->show_sort_indicator) + if (setting == tree_column->priv->show_sort_indicator) return; - tree_column->show_sort_indicator = setting; + tree_column->priv->show_sort_indicator = setting; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "sort-indicator"); } @@ -2498,7 +2709,7 @@ gtk_tree_view_column_get_sort_indicator (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return tree_column->show_sort_indicator; + return tree_column->priv->show_sort_indicator; } /** @@ -2524,10 +2735,10 @@ gtk_tree_view_column_set_sort_order (GtkTreeViewColumn *tree_column, { g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - if (order == tree_column->sort_order) + if (order == tree_column->priv->sort_order) return; - tree_column->sort_order = order; + tree_column->priv->sort_order = order; gtk_tree_view_column_update_button (tree_column); g_object_notify (G_OBJECT (tree_column), "sort-order"); } @@ -2545,7 +2756,7 @@ gtk_tree_view_column_get_sort_order (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); - return tree_column->sort_order; + return tree_column->priv->sort_order; } /** @@ -2568,48 +2779,13 @@ gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column, gboolean is_expander, gboolean is_expanded) { - GSList *list; - GValue value = { 0, }; - GList *cell_list; - gboolean cell_is_expander, cell_is_expanded; - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); if (tree_model == NULL) return; - for (cell_list = tree_column->cell_list; cell_list; cell_list = cell_list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) cell_list->data; - GObject *cell = (GObject *) info->cell; - - list = info->attributes; - - g_object_freeze_notify (cell); - - g_object_get (cell, "is-expander", &cell_is_expander, NULL); - if (cell_is_expander != is_expander) - g_object_set (cell, "is-expander", is_expander, NULL); - - g_object_get (cell, "is-expanded", &cell_is_expanded, NULL); - if (cell_is_expanded != is_expanded) - g_object_set (cell, "is-expanded", is_expanded, NULL); - - while (list && list->next) - { - gtk_tree_model_get_value (tree_model, iter, - GPOINTER_TO_INT (list->next->data), - &value); - g_object_set_property (cell, (gchar *) list->data, &value); - g_value_unset (&value); - list = list->next->next; - } - - if (info->func) - (* info->func) (tree_column, info->cell, tree_model, iter, info->func_data); - g_object_thaw_notify (G_OBJECT (info->cell)); - } - + gtk_cell_area_apply_attributes (tree_column->priv->cell_area, tree_model, iter, + is_expander, is_expanded); } /** @@ -2632,528 +2808,39 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column, gint *width, gint *height) { - GtkRequisition min_size; - GList *list; - gboolean first_cell = TRUE; - gint focus_line_width; + GtkTreeViewColumnPrivate *priv; + gint min_width = 0, min_height = 0; g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + priv = tree_column->priv; + + g_signal_handler_block (priv->cell_area_context, + priv->context_changed_signal); + + gtk_cell_area_get_preferred_width (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + NULL, NULL); + + gtk_cell_area_context_get_preferred_width (priv->cell_area_context, &min_width, NULL); + + gtk_cell_area_get_preferred_height_for_width (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + min_width, + &min_height, + NULL); + + g_signal_handler_unblock (priv->cell_area_context, + priv->context_changed_signal); + + if (height) - * height = 0; + * height = min_height; if (width) - * width = 0; + * width = min_width; - gtk_widget_style_get (tree_column->tree_view, "focus-line-width", &focus_line_width, NULL); - - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; - gboolean visible; - g_object_get (info->cell, "visible", &visible, NULL); - - if (visible == FALSE) - continue; - - if (first_cell == FALSE && width) - *width += tree_column->spacing; - - gtk_cell_renderer_get_preferred_size (info->cell, - GTK_WIDGET (tree_column->tree_view), - &min_size, NULL); - - if (height) - * height = MAX (*height, min_size.height + focus_line_width * 2); - info->requested_width = MAX (info->requested_width, min_size.width + focus_line_width * 2); - if (width) - * width += info->requested_width; - first_cell = FALSE; - } -} - -/* rendering, event handling and rendering focus are somewhat complicated, and - * quite a bit of code. Rather than duplicate them, we put them together to - * keep the code in one place. - * - * To better understand what's going on, check out - * docs/tree-column-sizing.png - */ -enum { - CELL_ACTION_RENDER, - CELL_ACTION_FOCUS, - CELL_ACTION_EVENT -}; - -static gboolean -gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column, - cairo_t *cr, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - guint flags, - gint action, - GdkRectangle *focus_rectangle, /* FOCUS */ - GtkCellEditable **editable_widget, /* EVENT */ - GdkEvent *event, /* EVENT */ - gchar *path_string) /* EVENT */ -{ - GList *list; - GdkRectangle real_cell_area; - GdkRectangle real_background_area; - gint depth = 0; - gint expand_cell_count = 0; - gint full_requested_width = 0; - gint extra_space; - gint min_x, min_y, max_x, max_y; - gint focus_line_width; - gint special_cells; - gint horizontal_separator; - gboolean cursor_row = FALSE; - gboolean first_cell = TRUE; - gboolean rtl; - /* If we have rtl text, we need to transform our areas */ - GdkRectangle rtl_cell_area; - GdkRectangle rtl_background_area; - - min_x = G_MAXINT; - min_y = G_MAXINT; - max_x = 0; - max_y = 0; - - rtl = (gtk_widget_get_direction (GTK_WIDGET (tree_column->tree_view)) == GTK_TEXT_DIR_RTL); - special_cells = _gtk_tree_view_column_count_special_cells (tree_column); - - if (special_cells > 1 && action == CELL_ACTION_FOCUS) - { - GtkTreeViewColumnCellInfo *info = NULL; - gboolean found_has_focus = FALSE; - - /* one should have focus */ - for (list = tree_column->cell_list; list; list = list->next) - { - info = list->data; - if (info && info->has_focus) - { - found_has_focus = TRUE; - break; - } - } - - if (!found_has_focus) - { - /* give the first one focus */ - info = gtk_tree_view_column_cell_first (tree_column)->data; - info->has_focus = TRUE; - } - } - - cursor_row = flags & GTK_CELL_RENDERER_FOCUSED; - - gtk_widget_style_get (GTK_WIDGET (tree_column->tree_view), - "focus-line-width", &focus_line_width, - "horizontal-separator", &horizontal_separator, - NULL); - - real_cell_area = *cell_area; - real_background_area = *background_area; - - - real_cell_area.x += focus_line_width; - real_cell_area.y += focus_line_width; - real_cell_area.height -= 2 * focus_line_width; - - if (rtl) - depth = real_background_area.width - real_cell_area.width; - else - depth = real_cell_area.x - real_background_area.x; - - /* Find out how much extra space we have to allocate */ - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *)list->data; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - if (info->expand == TRUE) - expand_cell_count ++; - full_requested_width += info->requested_width; - - if (!first_cell) - full_requested_width += tree_column->spacing; - - first_cell = FALSE; - } - - extra_space = cell_area->width - full_requested_width; - if (extra_space < 0) - extra_space = 0; - else if (extra_space > 0 && expand_cell_count > 0) - extra_space /= expand_cell_count; - - /* iterate list for GTK_PACK_START cells */ - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; - - if (info->pack == GTK_PACK_END) - continue; - - if (!gtk_cell_renderer_get_visible (info->cell)) - continue; - - if ((info->has_focus || special_cells == 1) && cursor_row) - flags |= GTK_CELL_RENDERER_FOCUSED; - else - flags &= ~GTK_CELL_RENDERER_FOCUSED; - - info->real_width = info->requested_width + (info->expand?extra_space:0); - - /* We constrain ourselves to only the width available */ - if (real_cell_area.x - focus_line_width + info->real_width > cell_area->x + cell_area->width) - { - info->real_width = cell_area->x + cell_area->width - real_cell_area.x; - } - - if (real_cell_area.x > cell_area->x + cell_area->width) - break; - - real_cell_area.width = info->real_width; - real_cell_area.width -= 2 * focus_line_width; - - if (list->next) - { - real_background_area.width = info->real_width + depth; - } - else - { - /* fill the rest of background for the last cell */ - real_background_area.width = background_area->x + background_area->width - real_background_area.x; - } - - rtl_cell_area = real_cell_area; - rtl_background_area = real_background_area; - - if (rtl) - { - rtl_cell_area.x = cell_area->x + cell_area->width - (real_cell_area.x - cell_area->x) - real_cell_area.width; - rtl_background_area.x = background_area->x + background_area->width - (real_background_area.x - background_area->x) - real_background_area.width; - } - - /* RENDER */ - if (action == CELL_ACTION_RENDER) - { - gtk_cell_renderer_render (info->cell, - cr, - tree_column->tree_view, - &rtl_background_area, - &rtl_cell_area, - flags); - } - /* FOCUS */ - else if (action == CELL_ACTION_FOCUS) - { - gint x_offset, y_offset; - GtkRequisition min_size; - - gtk_cell_renderer_get_preferred_size (info->cell, - tree_column->tree_view, - &min_size, NULL); - - _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area, - gtk_widget_get_direction (tree_column->tree_view), - min_size.width, min_size.height, - &x_offset, &y_offset); - - if (special_cells > 1) - { - if (info->has_focus) - { - min_x = rtl_cell_area.x + x_offset; - max_x = min_x + min_size.width; - min_y = rtl_cell_area.y + y_offset; - max_y = min_y + min_size.height; - } - } - else - { - if (min_x > (rtl_cell_area.x + x_offset)) - min_x = rtl_cell_area.x + x_offset; - if (max_x < rtl_cell_area.x + x_offset + min_size.width) - max_x = rtl_cell_area.x + x_offset + min_size.width; - if (min_y > (rtl_cell_area.y + y_offset)) - min_y = rtl_cell_area.y + y_offset; - if (max_y < rtl_cell_area.y + y_offset + min_size.height) - max_y = rtl_cell_area.y + y_offset + min_size.height; - } - } - /* EVENT */ - else if (action == CELL_ACTION_EVENT) - { - gboolean try_event = FALSE; - - if (event) - { - if (special_cells == 1) - { - /* only 1 activatable cell -> whole column can activate */ - if (cell_area->x <= ((GdkEventButton *)event)->x && - cell_area->x + cell_area->width > ((GdkEventButton *)event)->x) - try_event = TRUE; - } - else if (rtl_cell_area.x <= ((GdkEventButton *)event)->x && - rtl_cell_area.x + rtl_cell_area.width > ((GdkEventButton *)event)->x) - /* only activate cell if the user clicked on an individual - * cell - */ - try_event = TRUE; - } - else if (special_cells > 1 && info->has_focus) - try_event = TRUE; - else if (special_cells == 1) - try_event = TRUE; - - if (try_event) - { - gboolean visible, mode; - - g_object_get (info->cell, - "visible", &visible, - "mode", &mode, - NULL); - if (visible && mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) - { - if (gtk_cell_renderer_activate (info->cell, - event, - tree_column->tree_view, - path_string, - &rtl_background_area, - &rtl_cell_area, - flags)) - { - flags &= ~GTK_CELL_RENDERER_FOCUSED; - return TRUE; - } - } - else if (visible && mode == GTK_CELL_RENDERER_MODE_EDITABLE) - { - *editable_widget = - gtk_cell_renderer_start_editing (info->cell, - event, - tree_column->tree_view, - path_string, - &rtl_background_area, - &rtl_cell_area, - flags); - - if (*editable_widget != NULL) - { - g_return_val_if_fail (GTK_IS_CELL_EDITABLE (*editable_widget), FALSE); - info->in_editing_mode = TRUE; - gtk_tree_view_column_focus_cell (tree_column, info->cell); - - flags &= ~GTK_CELL_RENDERER_FOCUSED; - - return TRUE; - } - } - } - } - - flags &= ~GTK_CELL_RENDERER_FOCUSED; - - real_cell_area.x += (real_cell_area.width + 2 * focus_line_width + tree_column->spacing); - real_background_area.x += real_background_area.width + tree_column->spacing; - - /* Only needed for first cell */ - depth = 0; - } - - /* iterate list for PACK_END cells */ - for (list = g_list_last (tree_column->cell_list); list; list = list->prev) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; - - if (info->pack == GTK_PACK_START) - continue; - - if (!gtk_cell_renderer_get_visible(info->cell)) - continue; - - if ((info->has_focus || special_cells == 1) && cursor_row) - flags |= GTK_CELL_RENDERER_FOCUSED; - else - flags &= ~GTK_CELL_RENDERER_FOCUSED; - - info->real_width = info->requested_width + (info->expand?extra_space:0); - - /* We constrain ourselves to only the width available */ - if (real_cell_area.x - focus_line_width + info->real_width > cell_area->x + cell_area->width) - { - info->real_width = cell_area->x + cell_area->width - real_cell_area.x; - } - - if (real_cell_area.x > cell_area->x + cell_area->width) - break; - - real_cell_area.width = info->real_width; - real_cell_area.width -= 2 * focus_line_width; - real_background_area.width = info->real_width + depth; - - rtl_cell_area = real_cell_area; - rtl_background_area = real_background_area; - if (rtl) - { - rtl_cell_area.x = cell_area->x + cell_area->width - (real_cell_area.x - cell_area->x) - real_cell_area.width; - rtl_background_area.x = background_area->x + background_area->width - (real_background_area.x - background_area->x) - real_background_area.width; - } - - /* RENDER */ - if (action == CELL_ACTION_RENDER) - { - gtk_cell_renderer_render (info->cell, - cr, - tree_column->tree_view, - &rtl_background_area, - &rtl_cell_area, - flags); - } - /* FOCUS */ - else if (action == CELL_ACTION_FOCUS) - { - gint x_offset, y_offset; - GtkRequisition min_size; - - gtk_cell_renderer_get_preferred_size (info->cell, - tree_column->tree_view, - &min_size, NULL); - - _gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area, - gtk_widget_get_direction (tree_column->tree_view), - min_size.width, min_size.height, - &x_offset, &y_offset); - - if (special_cells > 1) - { - if (info->has_focus) - { - min_x = rtl_cell_area.x + x_offset; - max_x = min_x + min_size.width; - min_y = rtl_cell_area.y + y_offset; - max_y = min_y + min_size.height; - } - } - else - { - if (min_x > (rtl_cell_area.x + x_offset)) - min_x = rtl_cell_area.x + x_offset; - if (max_x < rtl_cell_area.x + x_offset + min_size.width) - max_x = rtl_cell_area.x + x_offset + min_size.width; - if (min_y > (rtl_cell_area.y + y_offset)) - min_y = rtl_cell_area.y + y_offset; - if (max_y < rtl_cell_area.y + y_offset + min_size.height) - max_y = rtl_cell_area.y + y_offset + min_size.height; - } - } - /* EVENT */ - else if (action == CELL_ACTION_EVENT) - { - gboolean try_event = FALSE; - - if (event) - { - if (special_cells == 1) - { - /* only 1 activatable cell -> whole column can activate */ - if (cell_area->x <= ((GdkEventButton *)event)->x && - cell_area->x + cell_area->width > ((GdkEventButton *)event)->x) - try_event = TRUE; - } - else if (rtl_cell_area.x <= ((GdkEventButton *)event)->x && - rtl_cell_area.x + rtl_cell_area.width > ((GdkEventButton *)event)->x) - /* only activate cell if the user clicked on an individual - * cell - */ - try_event = TRUE; - } - else if (special_cells > 1 && info->has_focus) - try_event = TRUE; - else if (special_cells == 1) - try_event = TRUE; - - if (try_event) - { - gboolean visible, mode; - - g_object_get (info->cell, - "visible", &visible, - "mode", &mode, - NULL); - if (visible && mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE) - { - if (gtk_cell_renderer_activate (info->cell, - event, - tree_column->tree_view, - path_string, - &rtl_background_area, - &rtl_cell_area, - flags)) - { - flags &= ~GTK_CELL_RENDERER_FOCUSED; - return TRUE; - } - } - else if (visible && mode == GTK_CELL_RENDERER_MODE_EDITABLE) - { - *editable_widget = - gtk_cell_renderer_start_editing (info->cell, - event, - tree_column->tree_view, - path_string, - &rtl_background_area, - &rtl_cell_area, - flags); - - if (*editable_widget != NULL) - { - g_return_val_if_fail (GTK_IS_CELL_EDITABLE (*editable_widget), FALSE); - info->in_editing_mode = TRUE; - gtk_tree_view_column_focus_cell (tree_column, info->cell); - - flags &= ~GTK_CELL_RENDERER_FOCUSED; - return TRUE; - } - } - } - } - - flags &= ~GTK_CELL_RENDERER_FOCUSED; - - real_cell_area.x += (real_cell_area.width + 2 * focus_line_width + tree_column->spacing); - real_background_area.x += (real_background_area.width + tree_column->spacing); - - /* Only needed for first cell */ - depth = 0; - } - - /* fill focus_rectangle when required */ - if (action == CELL_ACTION_FOCUS) - { - if (min_x >= max_x || min_y >= max_y) - { - *focus_rectangle = *cell_area; - /* don't change the focus_rectangle, just draw it nicely inside - * the cell area */ - } - else - { - focus_rectangle->x = min_x - focus_line_width; - focus_rectangle->y = min_y - focus_line_width; - focus_rectangle->width = (max_x - min_x) + 2 * focus_line_width; - focus_rectangle->height = (max_y - min_y) + 2 * focus_line_width; - } - } - - return FALSE; } /** @@ -3172,371 +2859,46 @@ _gtk_tree_view_column_cell_render (GtkTreeViewColumn *tree_column, cairo_t *cr, const GdkRectangle *background_area, const GdkRectangle *cell_area, - guint flags) + guint flags, + gboolean draw_focus) { + GtkTreeViewColumnPrivate *priv; + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (cr != NULL); g_return_if_fail (background_area != NULL); g_return_if_fail (cell_area != NULL); + priv = tree_column->priv; + cairo_save (cr); - gtk_tree_view_column_cell_process_action (tree_column, - cr, - background_area, - cell_area, - flags, - CELL_ACTION_RENDER, - NULL, NULL, NULL, NULL); + gtk_cell_area_render (priv->cell_area, priv->cell_area_context, + priv->tree_view, cr, + background_area, cell_area, flags, + draw_focus); cairo_restore (cr); } gboolean _gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column, - GtkCellEditable **editable_widget, GdkEvent *event, - gchar *path_string, - const GdkRectangle *background_area, const GdkRectangle *cell_area, guint flags) { + GtkTreeViewColumnPrivate *priv; + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - return gtk_tree_view_column_cell_process_action (tree_column, - NULL, - background_area, - cell_area, - flags, - CELL_ACTION_EVENT, - NULL, - editable_widget, - event, - path_string); -} + priv = tree_column->priv; -void -_gtk_tree_view_column_get_focus_area (GtkTreeViewColumn *tree_column, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - GdkRectangle *focus_area) -{ - gtk_tree_view_column_cell_process_action (tree_column, - NULL, - background_area, - cell_area, - 0, - CELL_ACTION_FOCUS, - focus_area, - NULL, NULL, NULL); -} - - -/* cell list manipulation */ -static GList * -gtk_tree_view_column_cell_first (GtkTreeViewColumn *tree_column) -{ - GList *list = tree_column->cell_list; - - /* first GTK_PACK_START cell we find */ - for ( ; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = list->data; - if (info->pack == GTK_PACK_START) - return list; - } - - /* hmm, else the *last* GTK_PACK_END cell */ - list = g_list_last (tree_column->cell_list); - - for ( ; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *info = list->data; - if (info->pack == GTK_PACK_END) - return list; - } - - return NULL; -} - -static GList * -gtk_tree_view_column_cell_last (GtkTreeViewColumn *tree_column) -{ - GList *list = tree_column->cell_list; - - /* *first* GTK_PACK_END cell we find */ - for ( ; list ; list = list->next) - { - GtkTreeViewColumnCellInfo *info = list->data; - if (info->pack == GTK_PACK_END) - return list; - } - - /* hmm, else the last GTK_PACK_START cell */ - list = g_list_last (tree_column->cell_list); - - for ( ; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *info = list->data; - if (info->pack == GTK_PACK_START) - return list; - } - - return NULL; -} - -static GList * -gtk_tree_view_column_cell_next (GtkTreeViewColumn *tree_column, - GList *current) -{ - GList *list; - GtkTreeViewColumnCellInfo *info = current->data; - - if (info->pack == GTK_PACK_START) - { - for (list = current->next; list; list = list->next) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_START) - return list; - } - - /* out of GTK_PACK_START cells, get *last* GTK_PACK_END one */ - list = g_list_last (tree_column->cell_list); - for (; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_END) - return list; - } - } - - for (list = current->prev; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_END) - return list; - } - - return NULL; -} - -static GList * -gtk_tree_view_column_cell_prev (GtkTreeViewColumn *tree_column, - GList *current) -{ - GList *list; - GtkTreeViewColumnCellInfo *info = current->data; - - if (info->pack == GTK_PACK_END) - { - for (list = current->next; list; list = list->next) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_END) - return list; - } - - /* out of GTK_PACK_END, get last GTK_PACK_START one */ - list = g_list_last (tree_column->cell_list); - for ( ; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_START) - return list; - } - } - - for (list = current->prev; list; list = list->prev) - { - GtkTreeViewColumnCellInfo *inf = list->data; - if (inf->pack == GTK_PACK_START) - return list; - } - - return NULL; -} - -gboolean -_gtk_tree_view_column_cell_focus (GtkTreeViewColumn *tree_column, - gint direction, - gboolean left, - gboolean right) -{ - gint count; - gboolean rtl; - - count = _gtk_tree_view_column_count_special_cells (tree_column); - rtl = gtk_widget_get_direction (GTK_WIDGET (tree_column->tree_view)) == GTK_TEXT_DIR_RTL; - - /* if we are the current focus column and have multiple editable cells, - * try to select the next one, else move the focus to the next column - */ - if (GTK_TREE_VIEW (tree_column->tree_view)->priv->focus_column == tree_column) - { - if (count > 1) - { - GList *next, *prev; - GList *list = tree_column->cell_list; - GtkTreeViewColumnCellInfo *info = NULL; - - /* find current focussed cell */ - for ( ; list; list = list->next) - { - info = list->data; - if (info->has_focus) - break; - } - - /* not a focussed cell in the focus column? */ - if (!list || !info || !info->has_focus) - return FALSE; - - if (rtl) - { - prev = gtk_tree_view_column_cell_next (tree_column, list); - next = gtk_tree_view_column_cell_prev (tree_column, list); - } - else - { - next = gtk_tree_view_column_cell_next (tree_column, list); - prev = gtk_tree_view_column_cell_prev (tree_column, list); - } - - info->has_focus = FALSE; - if (direction > 0 && next) - { - info = next->data; - info->has_focus = TRUE; - return TRUE; - } - else if (direction > 0 && !next && !right) - { - /* keep focus on last cell */ - if (rtl) - info = gtk_tree_view_column_cell_first (tree_column)->data; - else - info = gtk_tree_view_column_cell_last (tree_column)->data; - - info->has_focus = TRUE; - return TRUE; - } - else if (direction < 0 && prev) - { - info = prev->data; - info->has_focus = TRUE; - return TRUE; - } - else if (direction < 0 && !prev && !left) - { - /* keep focus on first cell */ - if (rtl) - info = gtk_tree_view_column_cell_last (tree_column)->data; - else - info = gtk_tree_view_column_cell_first (tree_column)->data; - - info->has_focus = TRUE; - return TRUE; - } - } - return FALSE; - } - - /* we get focus, if we have multiple editable cells, give the correct one - * focus - */ - if (count > 1) - { - GList *list = tree_column->cell_list; - - /* clear focus first */ - for ( ; list ; list = list->next) - { - GtkTreeViewColumnCellInfo *info = list->data; - if (info->has_focus) - info->has_focus = FALSE; - } - - list = NULL; - if (rtl) - { - if (direction > 0) - list = gtk_tree_view_column_cell_last (tree_column); - else if (direction < 0) - list = gtk_tree_view_column_cell_first (tree_column); - } - else - { - if (direction > 0) - list = gtk_tree_view_column_cell_first (tree_column); - else if (direction < 0) - list = gtk_tree_view_column_cell_last (tree_column); - } - - if (list) - ((GtkTreeViewColumnCellInfo *) list->data)->has_focus = TRUE; - } - - return TRUE; -} - -void -_gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn *tree_column, - cairo_t *cr, - const GdkRectangle *background_area, - const GdkRectangle *cell_area, - guint flags) -{ - gint focus_line_width; - GtkStateType cell_state; - - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - g_return_if_fail (cr != NULL); - - gtk_widget_style_get (GTK_WIDGET (tree_column->tree_view), - "focus-line-width", &focus_line_width, NULL); - if (tree_column->editable_widget) - { - /* This function is only called on the editable row when editing. - */ -#if 0 - gtk_paint_focus (tree_column->tree_view->style, - window, - gtk_widget_get_state (tree_column->tree_view), - NULL, - tree_column->tree_view, - "treeview", - cell_area->x - focus_line_width, - cell_area->y - focus_line_width, - cell_area->width + 2 * focus_line_width, - cell_area->height + 2 * focus_line_width); -#endif - } - else - { - GdkRectangle focus_rectangle; - gtk_tree_view_column_cell_process_action (tree_column, - cr, - background_area, - cell_area, - flags, - CELL_ACTION_FOCUS, - &focus_rectangle, - NULL, NULL, NULL); - - cell_state = flags & GTK_CELL_RENDERER_SELECTED ? GTK_STATE_SELECTED : - (flags & GTK_CELL_RENDERER_PRELIT ? GTK_STATE_PRELIGHT : - (flags & GTK_CELL_RENDERER_INSENSITIVE ? GTK_STATE_INSENSITIVE : GTK_STATE_NORMAL)); - gtk_paint_focus (gtk_widget_get_style (tree_column->tree_view), - cr, - cell_state, - tree_column->tree_view, - "treeview", - focus_rectangle.x, - focus_rectangle.y, - focus_rectangle.width, - focus_rectangle.height); - } + return gtk_cell_area_event (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + event, + cell_area, + flags); } /** @@ -3553,17 +2915,25 @@ gboolean gtk_tree_view_column_cell_is_visible (GtkTreeViewColumn *tree_column) { GList *list; + GList *cells; + GtkTreeViewColumnPrivate *priv; g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; + priv = tree_column->priv; - if (gtk_cell_renderer_get_visible (info->cell)) - return TRUE; + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (priv->cell_area)); + for (list = cells; list; list = list->next) + { + if (gtk_cell_renderer_get_visible (list->data)) + { + g_list_free (cells); + return TRUE; + } } + g_list_free (cells); + return FALSE; } @@ -3581,140 +2951,50 @@ void gtk_tree_view_column_focus_cell (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell) { - GList *list; - gboolean found_cell = FALSE; - g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); - if (_gtk_tree_view_column_count_special_cells (tree_column) < 2) - return; - - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = list->data; - - if (info->cell == cell) - { - info->has_focus = TRUE; - found_cell = TRUE; - break; - } - } - - if (found_cell) - { - for (list = tree_column->cell_list; list; list = list->next) - { - GtkTreeViewColumnCellInfo *info = list->data; - - if (info->cell != cell) - info->has_focus = FALSE; - } - - /* FIXME: redraw? */ - } + gtk_cell_area_set_focus_cell (tree_column->priv->cell_area, cell); } void _gtk_tree_view_column_cell_set_dirty (GtkTreeViewColumn *tree_column, gboolean install_handler) { - GList *list; + GtkTreeViewColumnPrivate *priv = tree_column->priv; - for (list = tree_column->cell_list; list; list = list->next) + priv->dirty = TRUE; + priv->padding = 0; + priv->width = 0; + + /* Issue a manual reset on the context to have all + * sizes re-requested for the context. + */ + g_signal_handler_block (priv->cell_area_context, + priv->context_changed_signal); + gtk_cell_area_context_reset (priv->cell_area_context); + g_signal_handler_unblock (priv->cell_area_context, + priv->context_changed_signal); + + if (priv->tree_view && + gtk_widget_get_realized (priv->tree_view)) { - GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data; - - info->requested_width = 0; - } - tree_column->dirty = TRUE; - tree_column->requested_width = -1; - tree_column->width = 0; - - if (tree_column->tree_view && - gtk_widget_get_realized (tree_column->tree_view)) - { - if (install_handler) - _gtk_tree_view_install_mark_rows_col_dirty (GTK_TREE_VIEW (tree_column->tree_view)); - else - GTK_TREE_VIEW (tree_column->tree_view)->priv->mark_rows_col_dirty = TRUE; - gtk_widget_queue_resize (tree_column->tree_view); + _gtk_tree_view_install_mark_rows_col_dirty (GTK_TREE_VIEW (priv->tree_view), install_handler); + gtk_widget_queue_resize (priv->tree_view); } } -void -_gtk_tree_view_column_start_editing (GtkTreeViewColumn *tree_column, - GtkCellEditable *cell_editable) +gboolean +_gtk_tree_view_column_cell_get_dirty (GtkTreeViewColumn *tree_column) { - g_return_if_fail (tree_column->editable_widget == NULL); - - tree_column->editable_widget = cell_editable; -} - -void -_gtk_tree_view_column_stop_editing (GtkTreeViewColumn *tree_column) -{ - GList *list; - - g_return_if_fail (tree_column->editable_widget != NULL); - - tree_column->editable_widget = NULL; - for (list = tree_column->cell_list; list; list = list->next) - ((GtkTreeViewColumnCellInfo *)list->data)->in_editing_mode = FALSE; -} - -void -_gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column, - GtkCellRenderer *cell, - gint *left, - gint *right) -{ - GList *list; - GtkTreeViewColumnCellInfo *info; - gint l, r; - gboolean rtl; - - l = r = 0; - - list = gtk_tree_view_column_cell_first (column); - - while (list) - { - info = (GtkTreeViewColumnCellInfo *)list->data; - - list = gtk_tree_view_column_cell_next (column, list); - - if (info->cell == cell) - break; - - if (gtk_cell_renderer_get_visible (info->cell)) - l += info->real_width + column->spacing; - } - - while (list) - { - info = (GtkTreeViewColumnCellInfo *)list->data; - - list = gtk_tree_view_column_cell_next (column, list); - - if (gtk_cell_renderer_get_visible (info->cell)) - r += info->real_width + column->spacing; - } - - rtl = (gtk_widget_get_direction (GTK_WIDGET (column->tree_view)) == GTK_TEXT_DIR_RTL); - if (left) - *left = rtl ? r : l; - - if (right) - *right = rtl ? l : r; + return tree_column->priv->dirty; } /** * gtk_tree_view_column_cell_get_position: * @tree_column: a #GtkTreeViewColumn * @cell_renderer: a #GtkCellRenderer - * @start_pos: return location for the horizontal position of @cell within + * @x_offset: return location for the horizontal position of @cell within * @tree_column, may be %NULL * @width: return location for the width of @cell, may be %NULL * @@ -3727,37 +3007,40 @@ _gtk_tree_view_column_get_neighbor_sizes (GtkTreeViewColumn *column, gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, - gint *start_pos, + gint *x_offset, gint *width) { - GList *list; - gint current_x = 0; - gboolean found_cell = FALSE; - GtkTreeViewColumnCellInfo *cellinfo = NULL; + GtkTreeViewColumnPrivate *priv; + GdkRectangle cell_area; + GdkRectangle allocation; - list = gtk_tree_view_column_cell_first (tree_column); - for (; list; list = gtk_tree_view_column_cell_next (tree_column, list)) + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), FALSE); + g_return_val_if_fail (GTK_IS_CELL_RENDERER (cell_renderer), FALSE); + + priv = tree_column->priv; + + gtk_tree_view_get_background_area (GTK_TREE_VIEW (priv->tree_view), + NULL, tree_column, &cell_area); + + gtk_cell_area_get_cell_allocation (priv->cell_area, + priv->cell_area_context, + priv->tree_view, + cell_renderer, + &cell_area, + &allocation); + + if (x_offset) { - cellinfo = list->data; - if (cellinfo->cell == cell_renderer) - { - found_cell = TRUE; - break; - } + GdkRectangle button_allocation; - if (gtk_cell_renderer_get_visible (cellinfo->cell)) - current_x += cellinfo->real_width; + /* Retrieve column offset */ + gtk_widget_get_allocation (priv->button, &button_allocation); + *x_offset = allocation.x - button_allocation.x; } + if (width) + *width = allocation.width; - if (found_cell) - { - if (start_pos) - *start_pos = current_x; - if (width) - *width = cellinfo->real_width; - } - - return found_cell; + return TRUE; } /** @@ -3774,7 +3057,7 @@ gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column) { g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); - if (tree_column->tree_view) + if (tree_column->priv->tree_view) _gtk_tree_view_column_cell_set_dirty (tree_column, TRUE); } @@ -3796,5 +3079,85 @@ gtk_tree_view_column_get_tree_view (GtkTreeViewColumn *tree_column) { g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), NULL); - return tree_column->tree_view; + return tree_column->priv->tree_view; +} + +/** + * gtk_tree_view_column_get_button: + * @tree_column: A #GtkTreeViewColumn + * + * Returns the button used in the treeview column header + * + * Return value: (transfer none): The button for the column header. + * + * Since: 3.0 + */ +GtkWidget * +gtk_tree_view_column_get_button (GtkTreeViewColumn *tree_column) +{ + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), NULL); + + return tree_column->priv->button; +} + +GdkWindow * +_gtk_tree_view_column_get_window (GtkTreeViewColumn *column) +{ + return column->priv->window; +} + +void +_gtk_tree_view_column_push_padding (GtkTreeViewColumn *column, + gint padding) +{ + column->priv->padding = MAX (column->priv->padding, padding); +} + +gint +_gtk_tree_view_column_get_requested_width (GtkTreeViewColumn *column) +{ + gint requested_width; + + gtk_cell_area_context_get_preferred_width (column->priv->cell_area_context, &requested_width, NULL); + + return requested_width + column->priv->padding; +} + + +void +_gtk_tree_view_column_set_resized_width (GtkTreeViewColumn *column, + gint width) +{ + column->priv->resized_width = width; +} + +gint +_gtk_tree_view_column_get_resized_width (GtkTreeViewColumn *column) +{ + return column->priv->resized_width; +} + +void +_gtk_tree_view_column_set_use_resized_width (GtkTreeViewColumn *column, + gboolean use_resized_width) +{ + column->priv->use_resized_width = use_resized_width; +} + +gboolean +_gtk_tree_view_column_get_use_resized_width (GtkTreeViewColumn *column) +{ + return column->priv->use_resized_width; +} + +gint +_gtk_tree_view_column_get_drag_x (GtkTreeViewColumn *column) +{ + return column->priv->drag_x; +} + +GtkCellAreaContext * +_gtk_tree_view_column_get_context (GtkTreeViewColumn *column) +{ + return column->priv->cell_area_context; } diff --git a/gtk/gtktreeviewcolumn.h b/gtk/gtktreeviewcolumn.h index 6c0b3a1e88..f964177283 100644 --- a/gtk/gtktreeviewcolumn.h +++ b/gtk/gtktreeviewcolumn.h @@ -27,6 +27,7 @@ #include #include #include +#include G_BEGIN_DECLS @@ -39,8 +40,9 @@ G_BEGIN_DECLS #define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_VIEW_COLUMN)) #define GTK_TREE_VIEW_COLUMN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass)) -typedef struct _GtkTreeViewColumn GtkTreeViewColumn; -typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass; +typedef struct _GtkTreeViewColumn GtkTreeViewColumn; +typedef struct _GtkTreeViewColumnClass GtkTreeViewColumnClass; +typedef struct _GtkTreeViewColumnPrivate GtkTreeViewColumnPrivate; /** * GtkTreeViewColumnSizing: @@ -85,51 +87,7 @@ struct _GtkTreeViewColumn { GInitiallyUnowned parent_instance; - GtkWidget *GSEAL (tree_view); - GtkWidget *GSEAL (button); - GtkWidget *GSEAL (child); - GtkWidget *GSEAL (arrow); - GtkWidget *GSEAL (alignment); - GdkWindow *GSEAL (window); - GtkCellEditable *GSEAL (editable_widget); - gfloat GSEAL (xalign); - gulong GSEAL (property_changed_signal); - gint GSEAL (spacing); - - /* Sizing fields */ - /* see gtk+/doc/tree-column-sizing.txt for more information on them */ - GtkTreeViewColumnSizing GSEAL (column_type); - gint GSEAL (requested_width); - gint GSEAL (button_request); - gint GSEAL (resized_width); - gint GSEAL (width); - gint GSEAL (fixed_width); - gint GSEAL (min_width); - gint GSEAL (max_width); - - /* dragging columns */ - gint GSEAL (drag_x); - gint GSEAL (drag_y); - - gchar *GSEAL (title); - GList *GSEAL (cell_list); - - /* Sorting */ - gulong GSEAL (sort_clicked_signal); - gulong GSEAL (sort_column_changed_signal); - gint GSEAL (sort_column_id); - GtkSortType GSEAL (sort_order); - - /* Flags */ - guint GSEAL (visible) : 1; - guint GSEAL (resizable) : 1; - guint GSEAL (clickable) : 1; - guint GSEAL (dirty) : 1; - guint GSEAL (show_sort_indicator) : 1; - guint GSEAL (maybe_reordered) : 1; - guint GSEAL (reorderable) : 1; - guint GSEAL (use_resized_width) : 1; - guint GSEAL (expand) : 1; + GtkTreeViewColumnPrivate *priv; }; struct _GtkTreeViewColumnClass @@ -147,6 +105,7 @@ struct _GtkTreeViewColumnClass GType gtk_tree_view_column_get_type (void) G_GNUC_CONST; GtkTreeViewColumn *gtk_tree_view_column_new (void); +GtkTreeViewColumn *gtk_tree_view_column_new_with_area (GtkCellArea *area); GtkTreeViewColumn *gtk_tree_view_column_new_with_attributes (const gchar *title, GtkCellRenderer *cell, ...) G_GNUC_NULL_TERMINATED; @@ -252,10 +211,11 @@ void gtk_tree_view_column_focus_cell (GtkTreeViewCol GtkCellRenderer *cell); gboolean gtk_tree_view_column_cell_get_position (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer, - gint *start_pos, + gint *x_offset, gint *width); void gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column); GtkWidget *gtk_tree_view_column_get_tree_view (GtkTreeViewColumn *tree_column); +GtkWidget *gtk_tree_view_column_get_button (GtkTreeViewColumn *tree_column); G_END_DECLS diff --git a/gtk/gtktypeutils.c b/gtk/gtktypeutils.c deleted file mode 100644 index d1e74d91af..0000000000 --- a/gtk/gtktypeutils.c +++ /dev/null @@ -1,47 +0,0 @@ -/* GTK - The GIMP Toolkit - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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 /* strcmp */ - -#include "gtktypeutils.h" -#include "gtkintl.h" - - - -GType -gtk_identifier_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - { - GTypeInfo tinfo = { 0, }; - our_type = g_type_register_static (G_TYPE_STRING, I_("GtkIdentifier"), &tinfo, 0); - } - - return our_type; -} diff --git a/gtk/gtktypeutils.h b/gtk/gtktypeutils.h deleted file mode 100644 index 15c749d512..0000000000 --- a/gtk/gtktypeutils.h +++ /dev/null @@ -1,130 +0,0 @@ -/* GTK - The GIMP Toolkit - * 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * 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/. - */ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#ifndef __GTK_TYPE_UTILS_H__ -#define __GTK_TYPE_UTILS_H__ - -/* enum types generated by glib-mkenums - */ -#include - -G_BEGIN_DECLS - -/* urg */ -#define GTK_TYPE_IDENTIFIER (gtk_identifier_get_type ()) -GType gtk_identifier_get_type (void) G_GNUC_CONST; - -#if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) -/* --- typedefs --- */ -/* here we come with some necessary forward declarations for structures and - * provide some fundamental function signatures - */ -typedef struct _GtkArg GtkArg; - -/** - * GtkFunction: - * @data: #gpointer - * - * Defines a function pointer. - * - * Returns: #gint - * - * Deprecated: 2.24: Use GSourceFunc() instead. - */ -typedef gboolean (*GtkFunction) (gpointer data); - -/** - * GtkCallbackMarshal: - * @object: #GObject* - * @data: #gpointer - * @n_args: #guint - * @args: #GtkArg* - * - * Defines a function pointer. - * - * Deprecated: 2.24: - */ -typedef void (*GtkCallbackMarshal) (GObject *object, - gpointer data, - guint n_args, - GtkArg *args); - -/** - * GtkArg: - * - * This is a structure that we use to pass in typed values (and names). - * - * Deprecated: 2.2: - */ -struct _GtkArg -{ - GType type; - gchar *name; - - /* this union only defines the required storage types for - * the possibile values, thus there is no gint enum_data field, - * because that would just be a mere alias for gint int_data. - * use the GTK_VALUE_*() and GTK_RETLOC_*() macros to access - * the discrete memebers. - */ - union { - /* flat values */ - gchar char_data; - guchar uchar_data; - gboolean bool_data; - gint int_data; - guint uint_data; - glong long_data; - gulong ulong_data; - gfloat float_data; - gdouble double_data; - gchar *string_data; - GObject *object_data; - gpointer pointer_data; - - /* structured values */ - struct { - GCallback f; - gpointer d; - } signal_data; - } d; -}; -#endif /* GTK_DISABLE_DEPRECATED */ - -/* This used to be defined in gtkitemfactory.h, but moved over here after - * the complete deprecation of that header - */ -typedef gchar * (*GtkTranslateFunc) (const gchar *path, - gpointer func_data); - - -G_END_DECLS - -#endif /* __GTK_TYPE_UTILS_H__ */ diff --git a/gtk/gtkuimanager.c b/gtk/gtkuimanager.c index 4b0b0dbac1..e5e536a401 100644 --- a/gtk/gtkuimanager.c +++ b/gtk/gtkuimanager.c @@ -38,6 +38,7 @@ #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkmenu.h" +#include "gtkmenushellprivate.h" #include "gtkmenubar.h" #include "gtkmenutoolbutton.h" #include "gtkseparatormenuitem.h" @@ -1699,7 +1700,7 @@ gtk_ui_manager_add_ui_from_string (GtkUIManager *manager, /** * gtk_ui_manager_add_ui_from_file: * @manager: a #GtkUIManager object - * @filename: the name of the file to parse + * @filename: (type filename): the name of the file to parse * @error: return location for an error * * Parses a file containing a UI definition and @@ -1955,9 +1956,9 @@ get_action_by_name (GtkUIManager *merge, } static gboolean -find_menu_position (GNode *node, - GtkWidget **menushell_p, - gint *pos_p) +find_menu_position (GNode *node, + GtkWidget **menushell_p, + gint *pos_p) { GtkWidget *menushell; gint pos = 0; @@ -1998,7 +1999,7 @@ find_menu_position (GNode *node, case NODE_TYPE_MENU_PLACEHOLDER: menushell = gtk_widget_get_parent (NODE_INFO (parent)->proxy); g_return_val_if_fail (GTK_IS_MENU_SHELL (menushell), FALSE); - pos = g_list_index (GTK_MENU_SHELL (menushell)->children, + pos = g_list_index (GTK_MENU_SHELL (menushell)->priv->children, NODE_INFO (parent)->proxy) + 1; break; default: @@ -2025,7 +2026,7 @@ find_menu_position (GNode *node, if (!GTK_IS_MENU_SHELL (menushell)) return FALSE; - pos = g_list_index (GTK_MENU_SHELL (menushell)->children, prev_child) + 1; + pos = g_list_index (GTK_MENU_SHELL (menushell)->priv->children, prev_child) + 1; } if (menushell_p) diff --git a/gtk/gtkversion.h.in b/gtk/gtkversion.h.in index e82f9c7886..8734135eb1 100644 --- a/gtk/gtkversion.h.in +++ b/gtk/gtkversion.h.in @@ -8,7 +8,7 @@ * * 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 + * 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 @@ -24,6 +24,16 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ +/** + * SECTION:gtkfeatures + * @Short_description: Variables and functions to check the GTK+ version + * @Title: Version Information + * + * GTK+ provides version information, primarily useful in configure checks + * for builds that have a configure script. Applications will not typically + * use the features described here. + */ + #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) #error "Only can be included directly." #endif @@ -31,19 +41,62 @@ #ifndef __GTK_VERSION_H__ #define __GTK_VERSION_H__ -/* compile time version +/** + * GTK_MAJOR_VERSION: + * + * Like gtk_get_major_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. */ -#define GTK_MAJOR_VERSION (@GTK_MAJOR_VERSION@) -#define GTK_MINOR_VERSION (@GTK_MINOR_VERSION@) -#define GTK_MICRO_VERSION (@GTK_MICRO_VERSION@) -#define GTK_BINARY_AGE (@GTK_BINARY_AGE@) -#define GTK_INTERFACE_AGE (@GTK_INTERFACE_AGE@) +#define GTK_MAJOR_VERSION (@GTK_MAJOR_VERSION@) -/* check whether a Gtk+ version equal to or greater than - * major.minor.micro is present. +/** + * GTK_MINOR_VERSION: + * + * Like gtk_get_minor_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. */ -#define GTK_CHECK_VERSION(major,minor,micro) \ - (GTK_MAJOR_VERSION > (major) || \ +#define GTK_MINOR_VERSION (@GTK_MINOR_VERSION@) + +/** + * GTK_MICRO_VERSION: + * + * Like gtk_get_micro_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + */ +#define GTK_MICRO_VERSION (@GTK_MICRO_VERSION@) + +/** + * GTK_BINARY_AGE: + * + * Like gtk_get_binary_age(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + */ +#define GTK_BINARY_AGE (@GTK_BINARY_AGE@) + +/** + * GTK_INTERFACE_AGE: + * + * Like gtk_get_interface_age(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + */ +#define GTK_INTERFACE_AGE (@GTK_INTERFACE_AGE@) + +/** + * GTK_CHECK_VERSION: + * @major: major version (e.g. 1 for version 1.2.5) + * @minor: minor version (e.g. 2 for version 1.2.5) + * @micro: micro version (e.g. 5 for version 1.2.5) + * + * Returns %TRUE if the version of the GTK+ header files + * is the same as or newer than the passed-in version. + */ +#define GTK_CHECK_VERSION(major,minor,micro) \ + (GTK_MAJOR_VERSION > (major) || \ (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION > (minor)) || \ (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION == (minor) && \ GTK_MICRO_VERSION >= (micro))) diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 7f7445f4d2..09e9fd2538 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -30,8 +30,8 @@ #include "gtkintl.h" #include "gtkmarshalers.h" -#include "gtktypeutils.h" #include "gtkscrollable.h" +#include "gtktypebuiltins.h" #include "gtkprivate.h" @@ -102,8 +102,7 @@ static void gtk_viewport_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, gpointer data); -static void gtk_viewport_style_set (GtkWidget *widget, - GtkStyle *previous_style); +static void gtk_viewport_style_updated (GtkWidget *widget); static void gtk_viewport_get_preferred_width (GtkWidget *widget, gint *minimum_size, @@ -136,7 +135,7 @@ gtk_viewport_class_init (GtkViewportClass *class) widget_class->unrealize = gtk_viewport_unrealize; widget_class->draw = gtk_viewport_draw; widget_class->size_allocate = gtk_viewport_size_allocate; - widget_class->style_set = gtk_viewport_style_set; + widget_class->style_updated = gtk_viewport_style_updated; widget_class->get_preferred_width = gtk_viewport_get_preferred_width; widget_class->get_preferred_height = gtk_viewport_get_preferred_height; @@ -319,9 +318,11 @@ viewport_get_view_allocation (GtkViewport *viewport, GtkAllocation *view_allocation) { GtkViewportPrivate *priv = viewport->priv; - GtkStyle *style; GtkWidget *widget = GTK_WIDGET (viewport); GtkAllocation allocation; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; guint border_width; gtk_widget_get_allocation (widget, &allocation); @@ -330,32 +331,27 @@ viewport_get_view_allocation (GtkViewport *viewport, view_allocation->x = 0; view_allocation->y = 0; + context = gtk_widget_get_style_context (widget); + state = gtk_widget_get_state_flags (widget); + gtk_style_context_get_padding (context, state, &padding); + gtk_style_context_get_border (context, state, &border); + if (priv->shadow_type != GTK_SHADOW_NONE) { - style = gtk_widget_get_style (widget); - view_allocation->x = style->xthickness; - view_allocation->y = style->ythickness; + view_allocation->x = border.left; + view_allocation->y = border.top; } - view_allocation->width = MAX (1, allocation.width - view_allocation->x * 2 - border_width * 2); - view_allocation->height = MAX (1, allocation.height - view_allocation->y * 2 - border_width * 2); -} + view_allocation->x += padding.left; + view_allocation->y += padding.right; + view_allocation->width = MAX (1, allocation.width - padding.left - padding.right - border_width * 2); + view_allocation->height = MAX (1, allocation.height - padding.top - padding.bottom - border_width * 2); -static void -viewport_reclamp_adjustment (GtkAdjustment *adjustment, - gboolean *value_changed) -{ - gdouble value = adjustment->value; - - value = CLAMP (value, 0, adjustment->upper - adjustment->page_size); - if (value != adjustment->value) + if (priv->shadow_type != GTK_SHADOW_NONE) { - adjustment->value = value; - if (value_changed) - *value_changed = TRUE; + view_allocation->width = MAX (1, view_allocation->width - border.left - border.right); + view_allocation->height = MAX (1, view_allocation->height - border.top - border.bottom); } - else if (value_changed) - *value_changed = FALSE; } /** @@ -409,28 +405,16 @@ gtk_viewport_get_vadjustment (GtkViewport *viewport) } static void -viewport_set_hadjustment_values (GtkViewport *viewport, - gboolean *value_changed) +viewport_set_hadjustment_values (GtkViewport *viewport) { GtkBin *bin = GTK_BIN (viewport); GtkAllocation view_allocation; GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport); GtkWidget *child; - gdouble old_page_size; - gdouble old_upper; - gdouble old_value; + gdouble upper, value; viewport_get_view_allocation (viewport, &view_allocation); - old_page_size = hadjustment->page_size; - old_upper = hadjustment->upper; - old_value = hadjustment->value; - hadjustment->page_size = view_allocation.width; - hadjustment->step_increment = view_allocation.width * 0.1; - hadjustment->page_increment = view_allocation.width * 0.9; - - hadjustment->lower = 0; - child = gtk_bin_get_child (bin); if (child && gtk_widget_get_visible (child)) { @@ -448,41 +432,43 @@ viewport_set_hadjustment_values (GtkViewport *viewport, &natural_width); if (viewport->priv->hscroll_policy == GTK_SCROLL_MINIMUM) - hadjustment->upper = MAX (minimum_width, view_allocation.width); + upper = MAX (minimum_width, view_allocation.width); else - hadjustment->upper = MAX (natural_width, view_allocation.width); + upper = MAX (natural_width, view_allocation.width); } else - hadjustment->upper = view_allocation.width; + upper = view_allocation.width; - if (gtk_widget_get_direction (GTK_WIDGET (viewport)) == GTK_TEXT_DIR_RTL) + value = gtk_adjustment_get_value (hadjustment); + /* We clamp to the left in RTL mode */ + if (gtk_widget_get_direction (GTK_WIDGET (viewport)) == GTK_TEXT_DIR_RTL) { - gdouble dist = old_upper - (old_value + old_page_size); - hadjustment->value = hadjustment->upper - dist - hadjustment->page_size; - viewport_reclamp_adjustment (hadjustment, value_changed); - *value_changed = (old_value != hadjustment->value); + gdouble dist = gtk_adjustment_get_upper (hadjustment) + - value + - gtk_adjustment_get_page_size (hadjustment); + value = upper - dist - view_allocation.width; } - else - viewport_reclamp_adjustment (hadjustment, value_changed); + + gtk_adjustment_configure (hadjustment, + value, + 0, + upper, + view_allocation.width * 0.1, + view_allocation.width * 0.9, + view_allocation.width); } static void -viewport_set_vadjustment_values (GtkViewport *viewport, - gboolean *value_changed) +viewport_set_vadjustment_values (GtkViewport *viewport) { GtkBin *bin = GTK_BIN (viewport); GtkAllocation view_allocation; GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport); GtkWidget *child; + gdouble upper; viewport_get_view_allocation (viewport, &view_allocation); - vadjustment->page_size = view_allocation.height; - vadjustment->step_increment = view_allocation.height * 0.1; - vadjustment->page_increment = view_allocation.height * 0.9; - - vadjustment->lower = 0; - child = gtk_bin_get_child (bin); if (child && gtk_widget_get_visible (child)) { @@ -500,14 +486,20 @@ viewport_set_vadjustment_values (GtkViewport *viewport, &natural_height); if (viewport->priv->vscroll_policy == GTK_SCROLL_MINIMUM) - vadjustment->upper = MAX (minimum_height, view_allocation.height); + upper = MAX (minimum_height, view_allocation.height); else - vadjustment->upper = MAX (natural_height, view_allocation.height); + upper = MAX (natural_height, view_allocation.height); } else - vadjustment->upper = view_allocation.height; + upper = view_allocation.height; - viewport_reclamp_adjustment (vadjustment, value_changed); + gtk_adjustment_configure (vadjustment, + gtk_adjustment_get_value (vadjustment), + 0, + upper, + view_allocation.height * 0.1, + view_allocation.height * 0.9, + view_allocation.height); } static void @@ -516,7 +508,6 @@ viewport_set_adjustment (GtkViewport *viewport, GtkAdjustment *adjustment) { GtkAdjustment **adjustmentp = ADJUSTMENT_POINTER (viewport, orientation); - gboolean value_changed; if (adjustment && adjustment == *adjustmentp) return; @@ -528,20 +519,15 @@ viewport_set_adjustment (GtkViewport *viewport, g_object_ref_sink (adjustment); if (orientation == GTK_ORIENTATION_HORIZONTAL) - viewport_set_hadjustment_values (viewport, &value_changed); + viewport_set_hadjustment_values (viewport); else - viewport_set_vadjustment_values (viewport, &value_changed); + viewport_set_vadjustment_values (viewport); g_signal_connect (adjustment, "value-changed", G_CALLBACK (gtk_viewport_adjustment_value_changed), viewport); - gtk_adjustment_changed (adjustment); - - if (value_changed) - gtk_adjustment_value_changed (adjustment); - else - gtk_viewport_adjustment_value_changed (adjustment, viewport); + gtk_viewport_adjustment_value_changed (adjustment, viewport); } /** @@ -687,7 +673,7 @@ gtk_viewport_realize (GtkWidget *widget) GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport); GtkAllocation allocation; GtkAllocation view_allocation; - GtkStyle *style; + GtkStyleContext *context; GtkWidget *child; GdkWindow *window; GdkWindowAttr attributes; @@ -733,10 +719,10 @@ gtk_viewport_realize (GtkWidget *widget) &attributes, attributes_mask); gdk_window_set_user_data (priv->view_window, viewport); - attributes.x = - hadjustment->value; - attributes.y = - vadjustment->value; - attributes.width = hadjustment->upper; - attributes.height = vadjustment->upper; + attributes.x = - gtk_adjustment_get_value (hadjustment); + attributes.y = - gtk_adjustment_get_value (vadjustment); + attributes.width = gtk_adjustment_get_upper (hadjustment); + attributes.height = gtk_adjustment_get_upper (vadjustment); attributes.event_mask = event_mask; @@ -747,10 +733,9 @@ gtk_viewport_realize (GtkWidget *widget) if (child) gtk_widget_set_parent_window (child, priv->bin_window); - gtk_widget_style_attach (widget); - style = gtk_widget_get_style (widget); - gtk_style_set_background (style, window, GTK_STATE_NORMAL); - gtk_style_set_background (style, priv->bin_window, GTK_STATE_NORMAL); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_background (context, window); + gtk_style_context_set_background (context, priv->bin_window); gdk_window_show (priv->bin_window); gdk_window_show (priv->view_window); @@ -779,17 +764,21 @@ gtk_viewport_draw (GtkWidget *widget, { GtkViewport *viewport = GTK_VIEWPORT (widget); GtkViewportPrivate *priv = viewport->priv; + GtkStyleContext *context; int x, y; + context = gtk_widget_get_style_context (widget); + if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget))) { - gtk_paint_shadow (gtk_widget_get_style (widget), - cr, - GTK_STATE_NORMAL, priv->shadow_type, - widget, "viewport", - 0, 0, + gtk_style_context_save (context); + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + + gtk_render_frame (context, cr, 0, 0, gdk_window_get_width (gtk_widget_get_window (widget)), gdk_window_get_height (gtk_widget_get_window (widget))); + + gtk_style_context_restore (context); } if (gtk_cairo_should_draw_window (cr, priv->view_window)) @@ -810,12 +799,9 @@ gtk_viewport_draw (GtkWidget *widget, if (gtk_cairo_should_draw_window (cr, priv->bin_window)) { gdk_window_get_position (priv->bin_window, &x, &y); - gtk_paint_flat_box (gtk_widget_get_style (widget), cr, - GTK_STATE_NORMAL, GTK_SHADOW_NONE, - widget, "viewportbin", - x, y, - gdk_window_get_width (priv->bin_window), - gdk_window_get_height (priv->bin_window)); + gtk_render_background (context, cr, x, y, + gdk_window_get_width (priv->bin_window), + gdk_window_get_height (priv->bin_window)); GTK_WIDGET_CLASS (gtk_viewport_parent_class)->draw (widget, cr); } @@ -847,7 +833,6 @@ gtk_viewport_size_allocate (GtkWidget *widget, GtkViewportPrivate *priv = viewport->priv; GtkBin *bin = GTK_BIN (widget); guint border_width; - gboolean hadjustment_value_changed, vadjustment_value_changed; GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport); GtkAdjustment *vadjustment = gtk_viewport_get_vadjustment (viewport); GtkAllocation child_allocation; @@ -867,13 +852,16 @@ gtk_viewport_size_allocate (GtkWidget *widget, gtk_widget_set_allocation (widget, allocation); - viewport_set_hadjustment_values (viewport, &hadjustment_value_changed); - viewport_set_vadjustment_values (viewport, &vadjustment_value_changed); + g_object_freeze_notify (G_OBJECT (hadjustment)); + g_object_freeze_notify (G_OBJECT (vadjustment)); + + viewport_set_hadjustment_values (viewport); + viewport_set_vadjustment_values (viewport); child_allocation.x = 0; child_allocation.y = 0; - child_allocation.width = hadjustment->upper; - child_allocation.height = vadjustment->upper; + child_allocation.width = gtk_adjustment_get_upper (hadjustment); + child_allocation.height = gtk_adjustment_get_upper (vadjustment); if (gtk_widget_get_realized (widget)) { GtkAllocation view_allocation; @@ -891,8 +879,8 @@ gtk_viewport_size_allocate (GtkWidget *widget, view_allocation.width, view_allocation.height); gdk_window_move_resize (priv->bin_window, - - hadjustment->value, - - vadjustment->value, + - gtk_adjustment_get_value (hadjustment), + - gtk_adjustment_get_value (vadjustment), child_allocation.width, child_allocation.height); } @@ -901,12 +889,8 @@ gtk_viewport_size_allocate (GtkWidget *widget, if (child && gtk_widget_get_visible (child)) gtk_widget_size_allocate (child, &child_allocation); - gtk_adjustment_changed (hadjustment); - gtk_adjustment_changed (vadjustment); - if (hadjustment_value_changed) - gtk_adjustment_value_changed (hadjustment); - if (vadjustment_value_changed) - gtk_adjustment_value_changed (vadjustment); + g_object_thaw_notify (G_OBJECT (hadjustment)); + g_object_thaw_notify (G_OBJECT (vadjustment)); } static void @@ -928,8 +912,8 @@ gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, gint new_x, new_y; gdk_window_get_position (priv->bin_window, &old_x, &old_y); - new_x = - hadjustment->value; - new_y = - vadjustment->value; + new_x = - gtk_adjustment_get_value (hadjustment); + new_y = - gtk_adjustment_get_value (vadjustment); if (new_x != old_x || new_y != old_y) { @@ -940,21 +924,18 @@ gtk_viewport_adjustment_value_changed (GtkAdjustment *adjustment, } static void -gtk_viewport_style_set (GtkWidget *widget, - GtkStyle *previous_style) +gtk_viewport_style_updated (GtkWidget *widget) { if (gtk_widget_get_realized (widget) && gtk_widget_get_has_window (widget)) { - GtkStyle *style; + GtkStyleContext *context; GtkViewport *viewport = GTK_VIEWPORT (widget); GtkViewportPrivate *priv = viewport->priv; - style = gtk_widget_get_style (widget); - gtk_style_set_background (style, priv->bin_window, GTK_STATE_NORMAL); - gtk_style_set_background (style, - gtk_widget_get_window (widget), - gtk_widget_get_state (widget)); + context = gtk_widget_get_style_context (widget); + gtk_style_context_set_background (context, priv->bin_window); + gtk_style_context_set_background (context, gtk_widget_get_window (widget)); } } @@ -967,7 +948,9 @@ gtk_viewport_get_preferred_size (GtkWidget *widget, { GtkViewport *viewport = GTK_VIEWPORT (widget); GtkViewportPrivate *priv = viewport->priv; - GtkStyle *style; + GtkStyleContext *context; + GtkStateFlags state; + GtkBorder padding, border; GtkWidget *child; gint child_min, child_nat; gint minimum, natural; @@ -979,15 +962,25 @@ gtk_viewport_get_preferred_size (GtkWidget *widget, */ minimum = gtk_container_get_border_width (GTK_CONTAINER (widget)); + context = gtk_widget_get_style_context (GTK_WIDGET (widget)); + state = gtk_widget_get_state_flags (GTK_WIDGET (widget)); + gtk_style_context_get_padding (context, state, &padding); + if (priv->shadow_type != GTK_SHADOW_NONE) { - style = gtk_widget_get_style (GTK_WIDGET (widget)); + gtk_style_context_get_border (context, state, &border); + if (orientation == GTK_ORIENTATION_HORIZONTAL) - minimum += 2 * style->xthickness; + minimum += border.left + border.right; else - minimum += 2 * style->ythickness; + minimum += border.top + border.bottom; } + if (orientation == GTK_ORIENTATION_HORIZONTAL) + minimum += padding.left + padding.right; + else + minimum += padding.top + padding.bottom; + natural = minimum; if (child && gtk_widget_get_visible (child)) diff --git a/gtk/gtkvolumebutton.c b/gtk/gtkvolumebutton.c index a9c8703b89..0415206523 100644 --- a/gtk/gtkvolumebutton.c +++ b/gtk/gtkvolumebutton.c @@ -47,6 +47,29 @@ #define EPSILON (1e-10) +static const gchar * const icons[] = +{ + "audio-volume-muted", + "audio-volume-high", + "audio-volume-low", + "audio-volume-medium", + NULL +}; + +static const gchar * const icons_symbolic[] = +{ + "audio-volume-muted-symbolic", + "audio-volume-high-symbolic", + "audio-volume-low-symbolic", + "audio-volume-medium-symbolic", + NULL +}; + +enum +{ + PROP_0, + PROP_SYMBOLIC +}; static gboolean cb_query_tooltip (GtkWidget *button, gint x, @@ -60,9 +83,80 @@ static void cb_value_changed (GtkVolumeButton *button, G_DEFINE_TYPE (GtkVolumeButton, gtk_volume_button, GTK_TYPE_SCALE_BUTTON) +static void +gtk_volume_button_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkScaleButton *button = GTK_SCALE_BUTTON (object); + + switch (prop_id) + { + case PROP_SYMBOLIC: + if (g_value_get_boolean (value)) + gtk_scale_button_set_icons (button, (const char **) icons_symbolic); + else + gtk_scale_button_set_icons (button, (const char **) icons); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gtk_volume_button_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) + { + case PROP_SYMBOLIC: { + char **icon_list; + + g_object_get (object, "icons", &icon_list, NULL); + if (icon_list != NULL && + icon_list[0] != NULL && + g_str_equal (icon_list[0], icons_symbolic[0])) + g_value_set_boolean (value, TRUE); + else + g_value_set_boolean (value, FALSE); + g_strfreev (icon_list); + break; + } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void gtk_volume_button_class_init (GtkVolumeButtonClass *klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->set_property = gtk_volume_button_set_property; + gobject_class->get_property = gtk_volume_button_get_property; + + /** + * GtkVolumeButton:use-symbolic: + * + * Whether to use symbolic icons as the icons. Note that + * if the symbolic icons are not available in your installed + * theme, then the normal (potentially colorful) icons will + * be used. + * + * Since: 3.0 + */ + g_object_class_install_property (gobject_class, + PROP_SYMBOLIC, + g_param_spec_boolean ("use-symbolic", + P_("Use symbolic icons"), + P_("Whether to use symbolic icons"), + FALSE, + G_PARAM_READWRITE)); } static void @@ -71,13 +165,6 @@ gtk_volume_button_init (GtkVolumeButton *button) GtkScaleButton *sbutton = GTK_SCALE_BUTTON (button); GtkAdjustment *adj; GtkWidget *minus_button, *plus_button; - const char *icons[] = { - "audio-volume-muted", - "audio-volume-high", - "audio-volume-low", - "audio-volume-medium", - NULL - }; atk_object_set_name (gtk_widget_get_accessible (GTK_WIDGET (button)), _("Volume")); @@ -102,14 +189,14 @@ gtk_volume_button_init (GtkVolumeButton *button) _("Increases the volume")); gtk_widget_set_tooltip_text (plus_button, _("Volume Up")); - gtk_scale_button_set_icons (sbutton, icons); + gtk_scale_button_set_icons (sbutton, (const char **) icons); adj = gtk_adjustment_new (0., 0., 1., 0.02, 0.2, 0.); g_object_set (G_OBJECT (button), "adjustment", adj, "size", GTK_ICON_SIZE_SMALL_TOOLBAR, "has-tooltip", TRUE, - NULL); + NULL); g_signal_connect (G_OBJECT (button), "query-tooltip", G_CALLBACK (cb_query_tooltip), NULL); @@ -145,21 +232,21 @@ cb_query_tooltip (GtkWidget *button, gpointer user_data) { GtkScaleButton *scale_button = GTK_SCALE_BUTTON (button); - GtkAdjustment *adj; + GtkAdjustment *adjustment; gdouble val; char *str; AtkImage *image; image = ATK_IMAGE (gtk_widget_get_accessible (button)); - adj = gtk_scale_button_get_adjustment (scale_button); + adjustment = gtk_scale_button_get_adjustment (scale_button); val = gtk_scale_button_get_value (scale_button); - if (val < (adj->lower + EPSILON)) + if (val < (gtk_adjustment_get_lower (adjustment) + EPSILON)) { str = g_strdup (_("Muted")); } - else if (val >= (adj->upper - EPSILON)) + else if (val >= (gtk_adjustment_get_upper (adjustment) - EPSILON)) { str = g_strdup (_("Full Volume")); } @@ -167,7 +254,7 @@ cb_query_tooltip (GtkWidget *button, { int percent; - percent = (int) (100. * val / (adj->upper - adj->lower) + .5); + percent = (int) (100. * val / (gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_lower (adjustment)) + .5); /* Translators: this is the percentage of the current volume, * as used in the tooltip, eg. "49 %". diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 196a2c59dd..40ec6040a8 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -24,34 +24,32 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#undef GDK_DISABLE_DEPRECATED /* gdk_input_set_extension_events() */ - #include "config.h" + #include #include #include + +#include +#include +#include + #include "gtkcontainer.h" #include "gtkaccelmap.h" #include "gtkclipboard.h" #include "gtkiconfactory.h" #include "gtkintl.h" -#include "gtkmain.h" +#include "gtkmainprivate.h" #include "gtkmarshalers.h" #include "gtkrc.h" -#include "gtkselection.h" -#include "gtksettings.h" +#include "gtkselectionprivate.h" +#include "gtksettingsprivate.h" #include "gtksizegroup-private.h" #include "gtkwidget.h" #include "gtkwidgetprivate.h" -#include "gtkwindow.h" +#include "gtkwindowprivate.h" #include "gtkbindings.h" #include "gtkprivate.h" -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" /* Used in gtk_reset_shapes_recurse to avoid copy */ -#include -#include -#include -#include "gdk/gdkkeysyms.h" #include "gtkaccessible.h" #include "gtktooltip.h" #include "gtkinvisible.h" @@ -65,6 +63,7 @@ #include "gtkmodifierstyle.h" #include "gtkversion.h" #include "gtkdebug.h" +#include "gtktypebuiltins.h" /** @@ -106,7 +105,7 @@ * For example, when queried in the normal * %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH mode: * First, the default minimum and natural width for each widget - * in the interface will be computed using gtk_width_get_preferred_width(). + * in the interface will be computed using gtk_widget_get_preferred_width(). * Because the preferred widths for each container depend on the preferred * widths of their children, this information propagates up the hierarchy, * and finally a minimum and natural width is determined for the entire @@ -315,7 +314,7 @@ struct _GtkWidgetPrivate guint has_grab : 1; guint shadowed : 1; guint rc_style : 1; - guint user_style : 1; + guint style_update_pending : 1; guint app_paintable : 1; guint double_buffered : 1; guint redraw_on_alloc : 1; @@ -371,6 +370,11 @@ struct _GtkWidgetPrivate */ GtkWidget *parent; +#ifdef G_ENABLE_DEBUG + /* Number of gtk_widget_push_verify_invariants () */ + guint verifying_invariants_count; +#endif /* G_ENABLE_DEBUG */ + /* Widget's path for styling */ GtkWidgetPath *path; }; @@ -467,7 +471,6 @@ enum { PROP_COMPOSITE_CHILD, PROP_STYLE, PROP_EVENTS, - PROP_EXTENSION_EVENTS, PROP_NO_SHOW_ALL, PROP_HAS_TOOLTIP, PROP_TOOLTIP_MARKUP, @@ -559,14 +562,20 @@ static void gtk_widget_real_move_focus (GtkWidget GtkDirectionType direction); static gboolean gtk_widget_real_keynav_failed (GtkWidget *widget, GtkDirectionType direction); +#ifdef G_ENABLE_DEBUG +static void gtk_widget_verify_invariants (GtkWidget *widget); +static void gtk_widget_push_verify_invariants (GtkWidget *widget); +static void gtk_widget_pop_verify_invariants (GtkWidget *widget); +#else +#define gtk_widget_verify_invariants(widget) +#define gtk_widget_push_verify_invariants(widget) +#define gtk_widget_pop_verify_invariants(widget) +#endif static PangoContext* gtk_widget_peek_pango_context (GtkWidget *widget); static void gtk_widget_update_pango_context (GtkWidget *widget); static void gtk_widget_propagate_state (GtkWidget *widget, GtkStateData *data); -static void gtk_widget_reset_rc_style (GtkWidget *widget); -static void gtk_widget_set_style_internal (GtkWidget *widget, - GtkStyle *style, - gboolean initial_emission); +; static gint gtk_widget_event_internal (GtkWidget *widget, GdkEvent *event); static gboolean gtk_widget_real_mnemonic_activate (GtkWidget *widget, @@ -641,6 +650,7 @@ static void gtk_widget_real_adjust_size_request (GtkWidget gint *natural_size); static void gtk_widget_real_adjust_size_allocation (GtkWidget *widget, GtkOrientation orientation, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size); @@ -653,6 +663,10 @@ static void gtk_widget_set_usize_internal (GtkWidget *widget, static void gtk_widget_add_events_internal (GtkWidget *widget, GdkDevice *device, gint events); +static void gtk_widget_set_device_enabled_internal (GtkWidget *widget, + GdkDevice *device, + gboolean recurse, + gboolean enabled); /* --- variables --- */ static gpointer gtk_widget_parent_class = NULL; @@ -668,7 +682,6 @@ static GQuark quark_accel_path = 0; static GQuark quark_accel_closures = 0; static GQuark quark_event_mask = 0; static GQuark quark_device_event_mask = 0; -static GQuark quark_extension_event_mode = 0; static GQuark quark_parent_window = 0; static GQuark quark_pointer_window = 0; static GQuark quark_shape_info = 0; @@ -682,6 +695,7 @@ static GQuark quark_has_tooltip = 0; static GQuark quark_tooltip_window = 0; static GQuark quark_visual = 0; static GQuark quark_modifier_style = 0; +static GQuark quark_enabled_devices = 0; GParamSpecPool *_gtk_widget_child_property_pool = NULL; GObjectNotifyContext *_gtk_widget_child_property_notify_context = NULL; @@ -782,7 +796,6 @@ gtk_widget_class_init (GtkWidgetClass *klass) quark_accel_closures = g_quark_from_static_string ("gtk-accel-closures"); quark_event_mask = g_quark_from_static_string ("gtk-event-mask"); quark_device_event_mask = g_quark_from_static_string ("gtk-device-event-mask"); - quark_extension_event_mode = g_quark_from_static_string ("gtk-extension-event-mode"); quark_parent_window = g_quark_from_static_string ("gtk-parent-window"); quark_pointer_window = g_quark_from_static_string ("gtk-pointer-window"); quark_shape_info = g_quark_from_static_string ("gtk-shape-info"); @@ -796,6 +809,7 @@ gtk_widget_class_init (GtkWidgetClass *klass) quark_tooltip_window = g_quark_from_static_string ("gtk-tooltip-window"); quark_visual = g_quark_from_static_string ("gtk-widget-visual"); quark_modifier_style = g_quark_from_static_string ("gtk-widget-modifier-style"); + quark_enabled_devices = g_quark_from_static_string ("gtk-widget-enabled-devices"); style_property_spec_pool = g_param_spec_pool_new (FALSE); _gtk_widget_child_property_pool = g_param_spec_pool_new (TRUE); @@ -999,14 +1013,6 @@ gtk_widget_class_init (GtkWidgetClass *klass) GDK_TYPE_EVENT_MASK, GDK_STRUCTURE_MASK, GTK_PARAM_READWRITE)); - g_object_class_install_property (gobject_class, - PROP_EXTENSION_EVENTS, - g_param_spec_enum ("extension-events", - P_("Extension events"), - P_("The mask that decides what kind of extension events this widget gets"), - GDK_TYPE_EXTENSION_MODE, - GDK_EXTENSION_EVENTS_NONE, - GTK_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_NO_SHOW_ALL, g_param_spec_boolean ("no-show-all", @@ -1519,6 +1525,12 @@ gtk_widget_class_init (GtkWidgetClass *klass) * The ::style-set signal is emitted when a new style has been set * on a widget. Note that style-modifying functions like * gtk_widget_modify_base() also cause this signal to be emitted. + * + * Note that this signal is emitted for changes to the deprecated + * #GtkStyle. To track changes to the #GtkStyleContext associated + * with a widget, use the #GtkWidget::style-updated signal. + * + * Deprecated:3.0: Use the #GtkWidget::style-updated signal */ widget_signals[STYLE_SET] = g_signal_new (I_("style-set"), @@ -1530,6 +1542,16 @@ gtk_widget_class_init (GtkWidgetClass *klass) G_TYPE_NONE, 1, GTK_TYPE_STYLE); + /** + * GtkWidget::style-updated: + * @widget: the object on which the signal is emitted + * + * The ::style-updated signal is emitted when the #GtkStyleContext + * of a widget is changed. Note that style-modifying functions like + * gtk_widget_override_color() also cause this signal to be emitted. + * + * Since: 3.0 + */ widget_signals[STYLE_UPDATED] = g_signal_new (I_("style-updated"), G_TYPE_FROM_CLASS (gobject_class), @@ -2146,13 +2168,9 @@ gtk_widget_class_init (GtkWidgetClass *klass) * @widget: the object which received the signal * @event: (type Gdk.EventAny): the #GdkEventAny which triggered this signal * - * The ::unmap-event signal may be emitted when the @widget's window is + * The ::unmap-event signal will be emitted when the @widget's window is * unmapped. A window is unmapped when it becomes invisible on the screen. * - * For performance reasons GTK+ may not emit ::unmap-event, so one - * should always also implement ::unrealize in order to release - * resources and disconnect signal handlers. - * * To receive this signal, the #GdkWindow associated to the widget needs * to enable the #GDK_STRUCTURE_MASK mask. GDK will enable this mask * automatically for all new windows. @@ -2445,7 +2463,8 @@ gtk_widget_class_init (GtkWidgetClass *klass) g_signal_new (I_("drag-failed"), G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - 0, _gtk_boolean_handled_accumulator, NULL, + G_STRUCT_OFFSET (GtkWidgetClass, drag_failed), + _gtk_boolean_handled_accumulator, NULL, _gtk_marshal_BOOLEAN__OBJECT_ENUM, G_TYPE_BOOLEAN, 2, GDK_TYPE_DRAG_CONTEXT, @@ -3214,9 +3233,6 @@ gtk_widget_set_property (GObject *object, if (!gtk_widget_get_realized (widget) && gtk_widget_get_has_window (widget)) gtk_widget_set_events (widget, g_value_get_flags (value)); break; - case PROP_EXTENSION_EVENTS: - gtk_widget_set_extension_events (widget, g_value_get_enum (value)); - break; case PROP_NO_SHOW_ALL: gtk_widget_set_no_show_all (widget, g_value_get_boolean (value)); break; @@ -3331,7 +3347,6 @@ gtk_widget_get_property (GObject *object, switch (prop_id) { gpointer *eventp; - gpointer *modep; case PROP_NAME: if (priv->name) @@ -3393,10 +3408,6 @@ gtk_widget_get_property (GObject *object, eventp = g_object_get_qdata (G_OBJECT (widget), quark_event_mask); g_value_set_flags (value, GPOINTER_TO_INT (eventp)); break; - case PROP_EXTENSION_EVENTS: - modep = g_object_get_qdata (G_OBJECT (widget), quark_extension_event_mode); - g_value_set_enum (value, GPOINTER_TO_INT (modep)); - break; case PROP_NO_SHOW_ALL: g_value_set_boolean (value, gtk_widget_get_no_show_all (widget)); break; @@ -3702,8 +3713,9 @@ gtk_widget_unparent (GtkWidget *widget) if (priv->parent == NULL) return; - /* keep this function in sync with gtk_menu_detach() - */ + /* keep this function in sync with gtk_menu_detach() */ + + gtk_widget_push_verify_invariants (widget); g_object_freeze_notify (G_OBJECT (widget)); nqueue = g_object_notify_queue_freeze (G_OBJECT (widget), _gtk_widget_child_property_notify_context); @@ -3715,14 +3727,6 @@ gtk_widget_unparent (GtkWidget *widget) if (gtk_container_get_focus_child (GTK_CONTAINER (priv->parent)) == widget) gtk_container_set_focus_child (GTK_CONTAINER (priv->parent), NULL); - /* If we are unanchoring the child, we save around the toplevel - * to emit hierarchy changed - */ - if (priv->parent->priv->anchored) - g_object_ref (toplevel); - else - toplevel = NULL; - gtk_widget_queue_draw_child (widget); /* Reset the width and height here, to force reallocation if we @@ -3741,6 +3745,14 @@ gtk_widget_unparent (GtkWidget *widget) gtk_widget_unrealize (widget); } + /* If we are unanchoring the child, we save around the toplevel + * to emit hierarchy changed + */ + if (priv->parent->priv->anchored) + g_object_ref (toplevel); + else + toplevel = NULL; + /* Removing a widget from a container restores the child visible * flag to the default state, so it doesn't affect the child * in the next parent. @@ -3749,7 +3761,6 @@ gtk_widget_unparent (GtkWidget *widget) old_parent = priv->parent; priv->parent = NULL; - gtk_widget_set_parent_window (widget, NULL); /* parent may no longer expand if the removed * child was expand=TRUE and could therefore @@ -3770,11 +3781,20 @@ gtk_widget_unparent (GtkWidget *widget) g_object_unref (toplevel); } + /* Now that the parent pointer is nullified and the hierarchy-changed + * already passed, go ahead and unset the parent window, if we are unparenting + * an embeded GtkWindow the window will become toplevel again and hierarchy-changed + * will fire again for the new subhierarchy. + */ + gtk_widget_set_parent_window (widget, NULL); + g_object_notify (G_OBJECT (widget), "parent"); g_object_thaw_notify (G_OBJECT (widget)); if (!priv->parent) g_object_notify_queue_clear (G_OBJECT (widget), nqueue); g_object_notify_queue_thaw (G_OBJECT (widget), nqueue); + + gtk_widget_pop_verify_invariants (widget); g_object_unref (widget); } @@ -3856,8 +3876,10 @@ gtk_widget_show (GtkWidget *widget) if (!gtk_widget_get_visible (widget)) { g_object_ref (widget); + gtk_widget_push_verify_invariants (widget); + if (!gtk_widget_is_toplevel (widget)) - gtk_widget_queue_resize (widget); + gtk_widget_queue_resize (widget); /* see comment in set_parent() for why this should and can be * conditional @@ -3872,6 +3894,8 @@ gtk_widget_show (GtkWidget *widget) g_signal_emit (widget, widget_signals[SHOW], 0); g_object_notify (G_OBJECT (widget), "visible"); + + gtk_widget_pop_verify_invariants (widget); g_object_unref (widget); } } @@ -3953,8 +3977,10 @@ gtk_widget_hide (GtkWidget *widget) GtkWidget *toplevel = gtk_widget_get_toplevel (widget); g_object_ref (widget); + gtk_widget_push_verify_invariants (widget); + if (toplevel != widget && gtk_widget_is_toplevel (toplevel)) - _gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget); + _gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget); /* a parent may now be expand=FALSE since we're hidden. */ if (widget->priv->need_compute_expand || @@ -3968,6 +3994,8 @@ gtk_widget_hide (GtkWidget *widget) if (!gtk_widget_is_toplevel (widget)) gtk_widget_queue_resize (widget); g_object_notify (G_OBJECT (widget), "visible"); + + gtk_widget_pop_verify_invariants (widget); g_object_unref (widget); } } @@ -4097,10 +4125,10 @@ _gtk_widget_start_state_transitions (GtkWidget *widget) if (animation_desc) { - if (gtk_animation_description_get_loop (animation_desc)) + if (_gtk_animation_description_get_loop (animation_desc)) _gtk_widget_notify_state_change (widget, flag, TRUE); - gtk_animation_description_unref (animation_desc); + _gtk_animation_description_unref (animation_desc); } flag >>= 1; @@ -4127,13 +4155,17 @@ gtk_widget_map (GtkWidget *widget) if (!gtk_widget_get_mapped (widget)) { + gtk_widget_push_verify_invariants (widget); + if (!gtk_widget_get_realized (widget)) - gtk_widget_realize (widget); + gtk_widget_realize (widget); g_signal_emit (widget, widget_signals[MAP], 0); if (!gtk_widget_get_has_window (widget)) - gdk_window_invalidate_rect (priv->window, &priv->allocation, FALSE); + gdk_window_invalidate_rect (priv->window, &priv->allocation, FALSE); + + gtk_widget_pop_verify_invariants (widget); _gtk_widget_start_state_transitions (widget); } @@ -4157,59 +4189,20 @@ gtk_widget_unmap (GtkWidget *widget) if (gtk_widget_get_mapped (widget)) { + gtk_widget_push_verify_invariants (widget); + if (!gtk_widget_get_has_window (widget)) gdk_window_invalidate_rect (priv->window, &priv->allocation, FALSE); _gtk_tooltip_hide (widget); g_signal_emit (widget, widget_signals[UNMAP], 0); + + gtk_widget_pop_verify_invariants (widget); + + if (priv->context) + gtk_style_context_cancel_animations (priv->context, NULL); } } -static void -gtk_widget_set_extension_events_internal (GtkWidget *widget, - GdkExtensionMode mode, - GList *window_list) -{ - GtkWidgetPrivate *priv = widget->priv; - GList *free_list = NULL; - GList *l; - - if (window_list == NULL) - { - if (gtk_widget_get_has_window (widget)) - window_list = g_list_prepend (NULL, priv->window); - else - window_list = gdk_window_get_children (priv->window); - - free_list = window_list; - } - - for (l = window_list; l != NULL; l = l->next) - { - GdkWindow *window = l->data; - gpointer user_data; - - gdk_window_get_user_data (window, &user_data); - if (user_data == widget) - { - GList *children; - - gdk_input_set_extension_events (window, - gdk_window_get_events (window), - mode); - - children = gdk_window_get_children (window); - if (children) - { - gtk_widget_set_extension_events_internal (widget, mode, children); - g_list_free (children); - } - } - } - - if (free_list) - g_list_free (free_list); -} - static void _gtk_widget_enable_device_events (GtkWidget *widget) { @@ -4235,6 +4228,105 @@ _gtk_widget_enable_device_events (GtkWidget *widget) } } +static GList * +get_widget_windows (GtkWidget *widget) +{ + GList *window_list, *last, *l, *children, *ret; + + if (gtk_widget_get_has_window (widget)) + window_list = g_list_prepend (NULL, gtk_widget_get_window (widget)); + else + window_list = gdk_window_peek_children (gtk_widget_get_window (widget)); + + last = g_list_last (window_list); + ret = NULL; + + for (l = window_list; l; l = l->next) + { + GtkWidget *window_widget = NULL; + + gdk_window_get_user_data (l->data, (gpointer *) &window_widget); + + if (widget != window_widget) + continue; + + ret = g_list_prepend (ret, l->data); + children = gdk_window_peek_children (GDK_WINDOW (l->data)); + + if (children) + { + last = g_list_concat (last, children); + last = g_list_last (last); + } + } + + g_list_free (window_list); + + return ret; +} + +static void +device_enable_foreach (GtkWidget *widget, + gpointer user_data) +{ + GdkDevice *device = user_data; + gtk_widget_set_device_enabled_internal (widget, device, TRUE, TRUE); +} + +static void +device_disable_foreach (GtkWidget *widget, + gpointer user_data) +{ + GdkDevice *device = user_data; + gtk_widget_set_device_enabled_internal (widget, device, TRUE, FALSE); +} + +static void +gtk_widget_set_device_enabled_internal (GtkWidget *widget, + GdkDevice *device, + gboolean recurse, + gboolean enabled) +{ + GList *window_list, *l; + + window_list = get_widget_windows (widget); + + for (l = window_list; l; l = l->next) + { + GdkEventMask events = 0; + GdkWindow *window; + + window = l->data; + + if (enabled) + events = gdk_window_get_events (window); + + gdk_window_set_device_events (window, device, events); + } + + if (recurse && GTK_IS_CONTAINER (widget)) + { + if (enabled) + gtk_container_forall (GTK_CONTAINER (widget), device_enable_foreach, device); + else + gtk_container_forall (GTK_CONTAINER (widget), device_disable_foreach, device); + } + + g_list_free (window_list); +} + +static void +gtk_widget_update_devices_mask (GtkWidget *widget, + gboolean recurse) +{ + GList *enabled_devices, *l; + + enabled_devices = g_object_get_qdata (G_OBJECT (widget), quark_enabled_devices); + + for (l = enabled_devices; l; l = l->next) + gtk_widget_set_device_enabled_internal (widget, GDK_DEVICE (l->data), recurse, TRUE); +} + /** * gtk_widget_realize: * @widget: a #GtkWidget @@ -4262,7 +4354,6 @@ void gtk_widget_realize (GtkWidget *widget) { GtkWidgetPrivate *priv; - GdkExtensionMode mode; cairo_region_t *region; g_return_if_fail (GTK_IS_WIDGET (widget)); @@ -4273,6 +4364,8 @@ gtk_widget_realize (GtkWidget *widget) if (!gtk_widget_get_realized (widget)) { + gtk_widget_push_verify_invariants (widget); + /* if (GTK_IS_CONTAINER (widget) && gtk_widget_get_has_window (widget)) g_message ("gtk_widget_realize(%s)", G_OBJECT_TYPE_NAME (widget)); @@ -4289,6 +4382,9 @@ gtk_widget_realize (GtkWidget *widget) gtk_widget_ensure_style (widget); + if (priv->style_update_pending) + g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0); + g_signal_emit (widget, widget_signals[REALIZE], 0); gtk_widget_real_set_has_tooltip (widget, @@ -4305,14 +4401,13 @@ gtk_widget_realize (GtkWidget *widget) if (region) gdk_window_input_shape_combine_region (priv->window, region, 0, 0); - mode = gtk_widget_get_extension_events (widget); - if (mode != GDK_EXTENSION_EVENTS_NONE) - gtk_widget_set_extension_events_internal (widget, mode, NULL); - if (priv->multidevice) gdk_window_set_support_multidevice (priv->window, TRUE); _gtk_widget_enable_device_events (widget); + gtk_widget_update_devices_mask (widget, TRUE); + + gtk_widget_pop_verify_invariants (widget); } } @@ -4329,6 +4424,8 @@ gtk_widget_unrealize (GtkWidget *widget) { g_return_if_fail (GTK_IS_WIDGET (widget)); + gtk_widget_push_verify_invariants (widget); + if (widget->priv->has_shape_mask) gtk_widget_shape_combine_region (widget, NULL); @@ -4338,12 +4435,18 @@ gtk_widget_unrealize (GtkWidget *widget) if (gtk_widget_get_realized (widget)) { g_object_ref (widget); - _gtk_tooltip_hide (widget); + + if (widget->priv->mapped) + gtk_widget_unmap (widget); + g_signal_emit (widget, widget_signals[UNREALIZE], 0); + g_assert (!widget->priv->mapped); gtk_widget_set_realized (widget, FALSE); - gtk_widget_set_mapped (widget, FALSE); + g_object_unref (widget); } + + gtk_widget_pop_verify_invariants (widget); } /***************************************** @@ -4365,6 +4468,8 @@ gtk_widget_unrealize (GtkWidget *widget) * Normally you would only use this function in widget * implementations. You might also use it to schedule a redraw of a * #GtkDrawingArea or some portion thereof. + * + * Since: 3.0 **/ void gtk_widget_queue_draw_region (GtkWidget *widget, @@ -4636,13 +4741,15 @@ gtk_widget_size_allocate (GtkWidget *widget, gboolean alloc_needed; gboolean size_changed; gboolean position_changed; - gint natural_width, natural_height; + gint natural_width, natural_height, dummy; gint min_width, min_height; priv = widget->priv; g_return_if_fail (GTK_IS_WIDGET (widget)); + gtk_widget_push_verify_invariants (widget); + #ifdef G_ENABLE_DEBUG if (gtk_get_debug_flags () & GTK_DEBUG_GEOMETRY) { @@ -4681,7 +4788,7 @@ gtk_widget_size_allocate (GtkWidget *widget, * when aligning implicitly. */ gtk_widget_get_preferred_width (widget, &min_width, &natural_width); - gtk_widget_get_preferred_height_for_width (widget, real_allocation.width, NULL, &natural_height); + gtk_widget_get_preferred_height_for_width (widget, real_allocation.width, &dummy, &natural_height); } else { @@ -4690,18 +4797,20 @@ gtk_widget_size_allocate (GtkWidget *widget, * when aligning implicitly. */ gtk_widget_get_preferred_height (widget, &min_height, &natural_height); - gtk_widget_get_preferred_width_for_height (widget, real_allocation.height, NULL, &natural_width); + gtk_widget_get_preferred_width_for_height (widget, real_allocation.height, &dummy, &natural_width); } /* Now that we have the right natural height and width, go ahead and remove any margins from the * allocated sizes and possibly limit them to the natural sizes */ GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, GTK_ORIENTATION_HORIZONTAL, + &dummy, &natural_width, &adjusted_allocation.x, &adjusted_allocation.width); GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget, GTK_ORIENTATION_VERTICAL, + &dummy, &natural_height, &adjusted_allocation.y, &adjusted_allocation.height); @@ -4740,7 +4849,7 @@ gtk_widget_size_allocate (GtkWidget *widget, old_allocation.y != real_allocation.y); if (!alloc_needed && !size_changed && !position_changed) - return; + goto out; g_signal_emit (widget, widget_signals[SIZE_ALLOCATE], 0, &real_allocation); @@ -4792,6 +4901,9 @@ gtk_widget_size_allocate (GtkWidget *widget, gtk_widget_invalidate_widget_windows (priv->parent, invalidate); cairo_region_destroy (invalidate); } + +out: + gtk_widget_pop_verify_invariants (widget); } /** @@ -5026,10 +5138,12 @@ adjust_for_align(GtkAlign align, static void adjust_for_margin(gint start_margin, gint end_margin, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size) { + *minimum_size -= (start_margin + end_margin); *natural_size -= (start_margin + end_margin); *allocated_pos += start_margin; *allocated_size -= (start_margin + end_margin); @@ -5038,6 +5152,7 @@ adjust_for_margin(gint start_margin, static void gtk_widget_real_adjust_size_allocation (GtkWidget *widget, GtkOrientation orientation, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size) @@ -5050,7 +5165,8 @@ gtk_widget_real_adjust_size_allocation (GtkWidget *widget, { adjust_for_margin (aux_info->margin.left, aux_info->margin.right, - natural_size, allocated_pos, allocated_size); + minimum_size, natural_size, + allocated_pos, allocated_size); adjust_for_align (aux_info->halign, natural_size, allocated_pos, allocated_size); } @@ -5058,7 +5174,8 @@ gtk_widget_real_adjust_size_allocation (GtkWidget *widget, { adjust_for_margin (aux_info->margin.top, aux_info->margin.bottom, - natural_size, allocated_pos, allocated_size); + minimum_size, natural_size, + allocated_pos, allocated_size); adjust_for_align (aux_info->valign, natural_size, allocated_pos, allocated_size); } @@ -5492,6 +5609,8 @@ gtk_cairo_set_event (cairo_t *cr, * use "else if" statements to check which window should be drawn. * * Returns: %TRUE if @window should be drawn + * + * Since: 3.0 **/ gboolean gtk_cairo_should_draw_window (cairo_t *cr, @@ -5540,9 +5659,7 @@ _gtk_widget_draw_internal (GtkWidget *widget, } context = gtk_widget_get_style_context (widget); - _gtk_style_context_coalesce_animation_areas (context, - widget->priv->allocation.x, - widget->priv->allocation.y); + _gtk_style_context_coalesce_animation_areas (context, widget); } /** @@ -5568,6 +5685,8 @@ _gtk_widget_draw_internal (GtkWidget *widget, * Special purpose widgets may contain special code for * rendering to the screen and might appear differently on screen * and when rendered using gtk_widget_draw(). + * + * Since: 3.0 **/ void gtk_widget_draw (GtkWidget *widget, @@ -5664,11 +5783,11 @@ gtk_widget_event (GtkWidget *widget, } /* Returns TRUE if a translation should be done */ -static gboolean -gtk_widget_get_translation_to_window (GtkWidget *widget, - GdkWindow *window, - int *x, - int *y) +gboolean +_gtk_widget_get_translation_to_window (GtkWidget *widget, + GdkWindow *window, + int *x, + int *y) { GdkWindow *w, *widget_window; @@ -5719,6 +5838,8 @@ gtk_widget_get_translation_to_window (GtkWidget *widget, * preparing an expose event to be emitted with the #GtkWidget::draw * signal. It is intended to help porting multiwindow widgets from * GTK+ 2 to the rendering architecture of GTK+ 3. + * + * Since: 3.0 **/ void gtk_cairo_transform_to_window (cairo_t *cr, @@ -5731,7 +5852,7 @@ gtk_cairo_transform_to_window (cairo_t *cr, g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GDK_IS_WINDOW (window)); - if (gtk_widget_get_translation_to_window (widget, window, &x, &y)) + if (_gtk_widget_get_translation_to_window (widget, window, &x, &y)) cairo_translate (cr, x, y); } @@ -5774,9 +5895,9 @@ gtk_widget_send_expose (GtkWidget *widget, gdk_cairo_region (cr, event->expose.region); cairo_clip (cr); - do_clip = gtk_widget_get_translation_to_window (widget, - event->expose.window, - &x, &y); + do_clip = _gtk_widget_get_translation_to_window (widget, + event->expose.window, + &x, &y); cairo_translate (cr, -x, -y); _gtk_widget_draw_internal (widget, cr, do_clip); @@ -6340,9 +6461,29 @@ gtk_widget_real_query_tooltip (GtkWidget *widget, static void gtk_widget_real_style_updated (GtkWidget *widget) { + if (gtk_widget_get_realized (widget)) + { + /* Trigger ::style-set for old + * widgets not listening to this + */ + g_signal_emit (widget, + widget_signals[STYLE_SET], + 0, + widget->priv->style); + } + if (widget->priv->context) - gtk_style_context_invalidate (widget->priv->context); - gtk_widget_queue_resize (widget); + { + gtk_style_context_invalidate (widget->priv->context); + + if (gtk_widget_get_realized (widget) && + gtk_widget_get_has_window (widget)) + gtk_style_context_set_background (widget->priv->context, + widget->priv->window); + } + + if (widget->priv->anchored) + gtk_widget_queue_resize (widget); } static gboolean @@ -6747,12 +6888,15 @@ gtk_widget_device_is_shadowed (GtkWidget *widget, * @name: name for the widget * * Widgets can be named, which allows you to refer to them from a - * gtkrc file. You can apply a style to widgets with a particular name - * in the gtkrc file. See the documentation for gtkrc files (on the - * same page as the docs for #GtkRcStyle). + * CSS file. You can apply a style to widgets with a particular name + * in the CSS file. See the documentation for the CSS syntax (on the + * same page as the docs for #GtkStyleContext). * - * Note that widget names are separated by periods in paths (see - * gtk_widget_path()), so names with embedded periods may cause confusion. + * Note that the CSS syntax has certain special characters to delimit + * and represent elements in a selector (period, #, >, *...), + * so using these will make your widget impossible to match by name. + * Any combination of alphanumeric symbols, dashes and underscores will + * suffice. **/ void gtk_widget_set_name (GtkWidget *widget, @@ -6781,9 +6925,6 @@ gtk_widget_set_name (GtkWidget *widget, if (priv->context) gtk_style_context_set_path (priv->context, priv->path); - if (priv->rc_style) - gtk_widget_reset_rc_style (widget); - g_object_notify (G_OBJECT (widget), "name"); } @@ -7132,9 +7273,11 @@ gtk_widget_get_has_window (GtkWidget *widget) * gtk_widget_is_toplevel: * @widget: a #GtkWidget * - * Determines whether @widget is a toplevel widget. Currently only - * #GtkWindow and #GtkInvisible are toplevel widgets. Toplevel - * widgets have no parent widget. + * Determines whether @widget is a toplevel widget. + * + * Currently only #GtkWindow and #GtkInvisible (and out-of-process + * #GtkPlugs) are toplevel widgets. Toplevel widgets have no parent + * widget. * * Return value: %TRUE if @widget is a toplevel, %FALSE otherwise * @@ -7549,6 +7692,9 @@ gtk_widget_set_parent (GtkWidget *widget, */ g_object_ref_sink (widget); + + gtk_widget_push_verify_invariants (widget); + priv->parent = parent; parent_flags = gtk_widget_get_state_flags (parent); @@ -7612,6 +7758,8 @@ gtk_widget_set_parent (GtkWidget *widget, gtk_style_context_set_screen (widget->priv->context, gtk_widget_get_screen (widget)); } + + gtk_widget_pop_verify_invariants (widget); } /** @@ -7652,6 +7800,8 @@ gtk_widget_get_parent (GtkWidget *widget) * (finally #GtkWidget) would attach the style itself. * * Since: 2.20 + * + * Deprecated: 3.0. This step is unnecessary with #GtkStyleContext. **/ void gtk_widget_style_attach (GtkWidget *widget) @@ -7705,23 +7855,6 @@ gtk_widget_set_style (GtkWidget *widget, GtkStyle *style) { g_return_if_fail (GTK_IS_WIDGET (widget)); - - if (style) - { - gboolean initial_emission; - - initial_emission = !widget->priv->rc_style && !widget->priv->user_style; - - widget->priv->rc_style = FALSE; - widget->priv->user_style = TRUE; - - gtk_widget_set_style_internal (widget, style, initial_emission); - } - else - { - if (widget->priv->user_style) - gtk_widget_reset_rc_style (widget); - } } /** @@ -7741,46 +7874,25 @@ gtk_widget_ensure_style (GtkWidget *widget) g_return_if_fail (GTK_IS_WIDGET (widget)); if (!widget->priv->style || - !gtk_style_has_context (widget->priv->style)) + widget->priv->style == gtk_widget_get_default_style ()) { GtkStyle *style; + if (widget->priv->style) + g_object_unref (widget->priv->style); + style = g_object_new (GTK_TYPE_STYLE, "context", gtk_widget_get_style_context (widget), NULL); - gtk_widget_set_style_internal (widget, style, TRUE); + widget->priv->style = g_object_ref (style); + + g_signal_emit (widget, + widget_signals[STYLE_SET], + 0, NULL); + g_object_unref (style); } - -#if 0 - if (!widget->priv->rc_style && !widget->priv->user_style) - gtk_widget_reset_rc_style (widget); -#endif -} - -/* Look up the RC style for this widget, unsetting any user style that - * may be in effect currently - **/ -static void -gtk_widget_reset_rc_style (GtkWidget *widget) -{ - GtkWidgetPrivate *priv = widget->priv; - GtkStyle *new_style = NULL; - gboolean initial_emission; - - initial_emission = !priv->rc_style && !priv->user_style; - - priv->user_style = FALSE; - priv->rc_style = TRUE; - - if (gtk_widget_has_screen (widget)) - new_style = gtk_rc_get_style (widget); - if (!new_style) - new_style = gtk_widget_get_default_style (); - - if (initial_emission || new_style != priv->style) - gtk_widget_set_style_internal (widget, new_style, initial_emission); } /** @@ -7837,13 +7949,6 @@ gtk_widget_modify_style (GtkWidget *widget, quark_rc_style, gtk_rc_style_copy (style), (GDestroyNotify) g_object_unref); - - /* note that "style" may be invalid here if it was the old - * modifier style and the only reference was our own. - */ - - if (widget->priv->rc_style) - gtk_widget_reset_rc_style (widget); } /** @@ -8097,12 +8202,12 @@ gtk_widget_override_symbolic_color (GtkWidget *widget, /** * gtk_widget_override_cursor: * @widget: a #GtkWidget - * @primary: the color to use for primary cursor (does not need to be - * allocated), or %NULL to undo the effect of previous calls to - * of gtk_widget_override_cursor(). - * @secondary: the color to use for secondary cursor (does not need to be - * allocated), or %NULL to undo the effect of previous calls to - * of gtk_widget_override_cursor(). + * @cursor: the color to use for primary cursor (does not need to be + * allocated), or %NULL to undo the effect of previous calls to + * of gtk_widget_override_cursor(). + * @secondary_cursor: the color to use for secondary cursor (does not + * need to be allocated), or %NULL to undo the effect of previous + * calls to of gtk_widget_override_cursor(). * * Sets the cursor color to use in a widget, overriding the * #GtkWidget:cursor-color and #GtkWidget:secondary-cursor-color @@ -8113,7 +8218,7 @@ gtk_widget_override_symbolic_color (GtkWidget *widget, * so the alpha value in @primary and @secondary will be ignored. * * Since: 3.0 - **/ + */ void gtk_widget_override_cursor (GtkWidget *widget, const GdkRGBA *cursor, @@ -8188,11 +8293,6 @@ gtk_widget_modify_fg (GtkWidget *widget, } else gtk_widget_override_color (widget, state, NULL); - - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - widget->priv->style); } /** @@ -8258,11 +8358,6 @@ gtk_widget_modify_bg (GtkWidget *widget, } else gtk_widget_override_background_color (widget, state, NULL); - - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - widget->priv->style); } /** @@ -8327,36 +8422,6 @@ gtk_widget_modify_base (GtkWidget *widget, gtk_widget_modify_color_component (widget, GTK_RC_BASE, state, color); } -static void -modify_color_property (GtkWidget *widget, - GtkRcStyle *rc_style, - const char *name, - const GdkColor *color) -{ - GQuark type_name = g_type_qname (G_OBJECT_TYPE (widget)); - GQuark property_name = g_quark_from_string (name); - - if (color) - { - GtkRcProperty rc_property = {0}; - char *color_name; - - rc_property.type_name = type_name; - rc_property.property_name = property_name; - rc_property.origin = NULL; - - color_name = gdk_color_to_string (color); - g_value_init (&rc_property.value, G_TYPE_STRING); - g_value_take_string (&rc_property.value, color_name); - - _gtk_rc_style_set_rc_property (rc_style, &rc_property); - - g_value_unset (&rc_property.value); - } - else - _gtk_rc_style_unset_rc_property (rc_style, type_name, property_name); -} - /** * gtk_widget_modify_cursor: * @widget: a #GtkWidget @@ -8396,11 +8461,6 @@ gtk_widget_modify_cursor (GtkWidget *widget, secondary_rgba.alpha = 1; gtk_widget_override_cursor (widget, &primary_rgba, &secondary_rgba); - - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - widget->priv->style); } /** @@ -8421,11 +8481,6 @@ gtk_widget_modify_font (GtkWidget *widget, g_return_if_fail (GTK_IS_WIDGET (widget)); gtk_widget_override_font (widget, font_desc); - - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - widget->priv->style); } static void @@ -8439,62 +8494,6 @@ static void gtk_widget_real_style_set (GtkWidget *widget, GtkStyle *previous_style) { - GtkWidgetPrivate *priv = widget->priv; - - if (gtk_widget_get_realized (widget) && - gtk_widget_get_has_window (widget)) - gtk_style_set_background (priv->style, priv->window, - gtk_widget_get_state (widget)); -} - -static void -gtk_widget_set_style_internal (GtkWidget *widget, - GtkStyle *style, - gboolean initial_emission) -{ - GtkWidgetPrivate *priv = widget->priv; - - g_object_ref (widget); - g_object_freeze_notify (G_OBJECT (widget)); - - if (priv->style != style) - { - GtkStyle *previous_style; - - if (gtk_widget_get_realized (widget)) - { - gtk_widget_reset_shapes (widget); - gtk_style_detach (priv->style); - } - - previous_style = priv->style; - priv->style = style; - g_object_ref (priv->style); - - if (gtk_widget_get_realized (widget)) - priv->style = gtk_style_attach (priv->style, priv->window); - - gtk_widget_update_pango_context (widget); - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - initial_emission ? NULL : previous_style); - g_object_unref (previous_style); - - if (priv->anchored && !initial_emission) - gtk_widget_queue_resize (widget); - } - else if (initial_emission) - { - gtk_widget_update_pango_context (widget); - g_signal_emit (widget, - widget_signals[STYLE_SET], - 0, - NULL); - } - g_object_notify (G_OBJECT (widget), "style"); - g_object_thaw_notify (G_OBJECT (widget)); - g_object_unref (widget); } typedef struct { @@ -8689,11 +8688,6 @@ _gtk_widget_propagate_screen_changed (GtkWidget *widget, static void reset_style_recurse (GtkWidget *widget, gpointer data) { -#if 0 - if (widget->priv->rc_style) - gtk_widget_reset_rc_style (widget); -#endif - if (widget->priv->context) { _gtk_widget_update_path (widget); @@ -8707,6 +8701,17 @@ reset_style_recurse (GtkWidget *widget, gpointer data) NULL); } +/** + * gtk_widget_reset_style: + * @widget: a #GtkWidget + * + * Updates the style context of @widget and all descendents + * by updating its widget path. #GtkContainers may want + * to use this on a child when reordering it in a way that a different + * style might apply to it. See also gtk_container_get_path_for_child(). + * + * Since: 3.0 + */ void gtk_widget_reset_style (GtkWidget *widget) { @@ -8757,6 +8762,192 @@ gtk_widget_get_default_style (void) return gtk_default_style; } +#ifdef G_ENABLE_DEBUG + +/* Verify invariants, see docs/widget_system.txt for notes on much of + * this. Invariants may be temporarily broken while we're in the + * process of updating state, of course, so you can only + * verify_invariants() after a given operation is complete. + * Use push/pop_verify_invariants to help with that. + */ +static void +gtk_widget_verify_invariants (GtkWidget *widget) +{ + GtkWidget *parent; + + if (widget->priv->verifying_invariants_count > 0) + return; + + parent = widget->priv->parent; + + if (widget->priv->mapped) + { + /* Mapped implies ... */ + + if (!widget->priv->realized) + g_warning ("%s %p is mapped but not realized", + G_OBJECT_TYPE_NAME (widget), widget); + + if (!widget->priv->visible) + g_warning ("%s %p is mapped but not visible", + G_OBJECT_TYPE_NAME (widget), widget); + + if (!widget->priv->toplevel) + { + if (!widget->priv->child_visible) + g_warning ("%s %p is mapped but not child_visible", + G_OBJECT_TYPE_NAME (widget), widget); + } + } + else + { + /* Not mapped implies... */ + +#if 0 + /* This check makes sense for normal toplevels, but for + * something like a toplevel that is embedded within a clutter + * state, mapping may depend on external factors. + */ + if (widget->priv->toplevel) + { + if (widget->priv->visible) + g_warning ("%s %p toplevel is visible but not mapped", + G_OBJECT_TYPE_NAME (widget), widget); + } +#endif + } + + /* Parent related checks aren't possible if parent has + * verifying_invariants_count > 0 because parent needs to recurse + * children first before the invariants will hold. + */ + if (parent == NULL || parent->priv->verifying_invariants_count == 0) + { + if (parent && + parent->priv->realized) + { + /* Parent realized implies... */ + +#if 0 + /* This is in widget_system.txt but appears to fail + * because there's no gtk_container_realize() that + * realizes all children... instead we just lazily + * wait for map to fix things up. + */ + if (!widget->priv->realized) + g_warning ("%s %p is realized but child %s %p is not realized", + G_OBJECT_TYPE_NAME (parent), parent, + G_OBJECT_TYPE_NAME (widget), widget); +#endif + } + else if (!widget->priv->toplevel) + { + /* No parent or parent not realized on non-toplevel implies... */ + + if (widget->priv->realized && !widget->priv->in_reparent) + g_warning ("%s %p is not realized but child %s %p is realized", + parent ? G_OBJECT_TYPE_NAME (parent) : "no parent", parent, + G_OBJECT_TYPE_NAME (widget), widget); + } + + if (parent && + parent->priv->mapped && + widget->priv->visible && + widget->priv->child_visible) + { + /* Parent mapped and we are visible implies... */ + + if (!widget->priv->mapped) + g_warning ("%s %p is mapped but visible child %s %p is not mapped", + G_OBJECT_TYPE_NAME (parent), parent, + G_OBJECT_TYPE_NAME (widget), widget); + } + else if (!widget->priv->toplevel) + { + /* No parent or parent not mapped on non-toplevel implies... */ + + if (widget->priv->mapped && !widget->priv->in_reparent) + g_warning ("%s %p is mapped but visible=%d child_visible=%d parent %s %p mapped=%d", + G_OBJECT_TYPE_NAME (widget), widget, + widget->priv->visible, + widget->priv->child_visible, + parent ? G_OBJECT_TYPE_NAME (parent) : "no parent", parent, + parent ? parent->priv->mapped : FALSE); + } + } + + if (!widget->priv->realized) + { + /* Not realized implies... */ + +#if 0 + /* widget_system.txt says these hold, but they don't. */ + if (widget->priv->resize_pending) + g_warning ("%s %p resize pending but not realized", + G_OBJECT_TYPE_NAME (widget), widget); + + if (widget->priv->alloc_needed) + g_warning ("%s %p alloc needed but not realized", + G_OBJECT_TYPE_NAME (widget), widget); + + if (widget->priv->width_request_needed) + g_warning ("%s %p width request needed but not realized", + G_OBJECT_TYPE_NAME (widget), widget); + + if (widget->priv->height_request_needed) + g_warning ("%s %p height request needed but not realized", + G_OBJECT_TYPE_NAME (widget), widget); +#endif + } +} + +/* The point of this push/pop is that invariants may not hold while + * we're busy making changes. So we only check at the outermost call + * on the call stack, after we finish updating everything. + */ +static void +gtk_widget_push_verify_invariants (GtkWidget *widget) +{ + widget->priv->verifying_invariants_count += 1; +} + +static void +gtk_widget_verify_child_invariants (GtkWidget *widget, + gpointer client_data) +{ + /* We don't recurse further; this is a one-level check. */ + gtk_widget_verify_invariants (widget); +} + +static void +gtk_widget_pop_verify_invariants (GtkWidget *widget) +{ + g_assert (widget->priv->verifying_invariants_count > 0); + + widget->priv->verifying_invariants_count -= 1; + + if (widget->priv->verifying_invariants_count == 0) + { + gtk_widget_verify_invariants (widget); + + if (GTK_IS_CONTAINER (widget)) + { + /* Check one level of children, because our + * push_verify_invariants() will have prevented some of the + * checks. This does not recurse because if recursion is + * needed, it will happen naturally as each child has a + * push/pop on that child. For example if we're recursively + * mapping children, we'll push/pop on each child as we map + * it. + */ + gtk_container_forall (GTK_CONTAINER (widget), + gtk_widget_verify_child_invariants, + NULL); + } + } +} +#endif /* G_ENABLE_DEBUG */ + static PangoContext * gtk_widget_peek_pango_context (GtkWidget *widget) { @@ -8776,7 +8967,7 @@ gtk_widget_peek_pango_context (GtkWidget *widget) * * If you create and keep a #PangoLayout using this context, you must * deal with changes to the context by calling pango_layout_context_changed() - * on the layout in response to the #GtkWidget::style-set and + * on the layout in response to the #GtkWidget::style-updated and * #GtkWidget::direction-changed signals for the widget. * * Return value: (transfer none): the #PangoContext for the widget. @@ -8892,7 +9083,7 @@ gtk_widget_create_pango_context (GtkWidget *widget) * If you keep a #PangoLayout created in this way around, in order to * notify the layout of changes to the base direction or font of this * widget, you must call pango_layout_context_changed() in response to - * the #GtkWidget::style-set and #GtkWidget::direction-changed signals + * the #GtkWidget::style-updated and #GtkWidget::direction-changed signals * for the widget. * * Return value: (transfer full): the new #PangoLayout @@ -8943,23 +9134,20 @@ gtk_widget_render_icon_pixbuf (GtkWidget *widget, const gchar *stock_id, GtkIconSize size) { - GtkWidgetPrivate *priv; + GtkStyleContext *context; GtkIconSet *icon_set; g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); g_return_val_if_fail (stock_id != NULL, NULL); g_return_val_if_fail (size > GTK_ICON_SIZE_INVALID || size == -1, NULL); - priv = widget->priv; - - gtk_widget_ensure_style (widget); - - icon_set = gtk_style_context_lookup_icon_set (priv->context, stock_id); + context = gtk_widget_get_style_context (widget); + icon_set = gtk_style_context_lookup_icon_set (context, stock_id); if (icon_set == NULL) return NULL; - return gtk_icon_set_render_icon_pixbuf (icon_set, priv->context, size); + return gtk_icon_set_render_icon_pixbuf (icon_set, context, size); } /** @@ -9003,6 +9191,16 @@ gtk_widget_render_icon (GtkWidget *widget, * @parent_window: the new parent window. * * Sets a non default parent window for @widget. + * + * For GtkWindow classes, setting a @parent_window effects whether + * the window is a toplevel window or can be embedded into other + * widgets. + * + * + * For GtkWindow classes, this needs to be called before the + * window is realized. + * + * **/ void gtk_widget_set_parent_window (GtkWidget *widget, @@ -9023,6 +9221,13 @@ gtk_widget_set_parent_window (GtkWidget *widget, g_object_unref (old_parent_window); if (parent_window) g_object_ref (parent_window); + + /* Unset toplevel flag when adding a parent window to a widget, + * this is the primary entry point to allow toplevels to be + * embeddable. + */ + if (GTK_IS_WINDOW (widget) && !GTK_IS_PLUG (widget)) + _gtk_window_set_is_toplevel (GTK_WINDOW (widget), parent_window == NULL); } } @@ -9086,6 +9291,7 @@ gtk_widget_set_child_visible (GtkWidget *widget, priv = widget->priv; g_object_ref (widget); + gtk_widget_verify_invariants (widget); if (is_visible) priv->child_visible = TRUE; @@ -9110,6 +9316,7 @@ gtk_widget_set_child_visible (GtkWidget *widget, gtk_widget_unmap (widget); } + gtk_widget_verify_invariants (widget); g_object_unref (widget); } @@ -9658,6 +9865,53 @@ gtk_widget_set_device_events (GtkWidget *widget, g_hash_table_insert (device_events, device, GUINT_TO_POINTER (events)); } +/** + * gtk_widget_enable_device: + * @widget: a #GtkWidget + * @device: a #GdkDevice + * + * Enables a #GdkDevice to interact with @widget and + * all its children, it does so by descending through + * the #GdkWindow hierarchy and enabling the same mask + * that is has for core events (i.e. the one that + * gdk_window_get_events() returns). + * + * Since: 3.0 + **/ +void +gtk_widget_set_device_enabled (GtkWidget *widget, + GdkDevice *device, + gboolean enabled) +{ + GList *enabled_devices; + + g_return_if_fail (GTK_IS_WIDGET (widget)); + g_return_if_fail (GDK_IS_DEVICE (device)); + + enabled_devices = g_object_get_qdata (G_OBJECT (widget), quark_enabled_devices); + enabled_devices = g_list_append (enabled_devices, device); + + g_object_set_qdata_full (G_OBJECT (widget), quark_enabled_devices, + enabled_devices, (GDestroyNotify) g_list_free);; + + if (gtk_widget_get_realized (widget)) + gtk_widget_set_device_enabled_internal (widget, device, TRUE, enabled); +} + +gboolean +gtk_widget_get_device_enabled (GtkWidget *widget, + GdkDevice *device) +{ + GList *enabled_devices; + + g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); + g_return_val_if_fail (GDK_IS_DEVICE (device), FALSE); + + enabled_devices = g_object_get_qdata (G_OBJECT (widget), quark_enabled_devices); + + return g_list_find (enabled_devices, device) != NULL; +} + static void gtk_widget_add_events_internal_list (GtkWidget *widget, GdkDevice *device, @@ -9727,7 +9981,10 @@ gtk_widget_add_events (GtkWidget *widget, GINT_TO_POINTER (old_events | events)); if (gtk_widget_get_realized (widget)) - gtk_widget_add_events_internal (widget, NULL, events); + { + gtk_widget_add_events_internal (widget, NULL, events); + gtk_widget_update_devices_mask (widget, FALSE); + } g_object_notify (G_OBJECT (widget), "events"); } @@ -9774,28 +10031,6 @@ gtk_widget_add_device_events (GtkWidget *widget, g_object_notify (G_OBJECT (widget), "events"); } -/** - * gtk_widget_set_extension_events: - * @widget: a #GtkWidget - * @mode: bitfield of extension events to receive - * - * Sets the extension events mask to @mode. See #GdkExtensionMode - * and gdk_input_set_extension_events(). - **/ -void -gtk_widget_set_extension_events (GtkWidget *widget, - GdkExtensionMode mode) -{ - g_return_if_fail (GTK_IS_WIDGET (widget)); - - if (gtk_widget_get_realized (widget)) - gtk_widget_set_extension_events_internal (widget, mode, NULL); - - g_object_set_qdata (G_OBJECT (widget), quark_extension_event_mode, - GINT_TO_POINTER (mode)); - g_object_notify (G_OBJECT (widget), "extension-events"); -} - /** * gtk_widget_get_toplevel: * @widget: a #GtkWidget @@ -10008,23 +10243,6 @@ gtk_widget_get_device_events (GtkWidget *widget, return GPOINTER_TO_UINT (g_hash_table_lookup (device_events, device)); } -/** - * gtk_widget_get_extension_events: - * @widget: a #GtkWidget - * - * Retrieves the extension events the widget will receive; see - * gdk_input_set_extension_events(). - * - * Return value: extension events for @widget - **/ -GdkExtensionMode -gtk_widget_get_extension_events (GtkWidget *widget) -{ - g_return_val_if_fail (GTK_IS_WIDGET (widget), 0); - - return GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT (widget), quark_extension_event_mode)); -} - /** * gtk_widget_get_pointer: * @widget: a #GtkWidget @@ -10493,10 +10711,7 @@ gtk_widget_real_unrealize (GtkWidget *widget) { GtkWidgetPrivate *priv = widget->priv; - if (gtk_widget_get_mapped (widget)) - gtk_widget_real_unmap (widget); - - gtk_widget_set_mapped (widget, FALSE); + g_assert (!widget->priv->mapped); /* printf ("unrealizing %s\n", g_type_name (G_TYPE_FROM_INSTANCE (widget))); */ @@ -11240,42 +11455,6 @@ gtk_widget_input_shape_combine_region (GtkWidget *widget, } -static void -gtk_reset_shapes_recurse (GtkWidget *widget, - GdkWindow *window) -{ - gpointer data; - GList *list; - - gdk_window_get_user_data (window, &data); - if (data != widget) - return; - - gdk_window_shape_combine_region (window, NULL, 0, 0); - for (list = gdk_window_peek_children (window); list; list = list->next) - gtk_reset_shapes_recurse (widget, list->data); -} - -/** - * gtk_widget_reset_shapes: - * @widget: a #GtkWidget - * - * Recursively resets the shape on this widget and its descendants. - **/ -void -gtk_widget_reset_shapes (GtkWidget *widget) -{ - GtkWidgetPrivate *priv; - - g_return_if_fail (GTK_IS_WIDGET (widget)); - g_return_if_fail (gtk_widget_get_realized (widget)); - - priv = widget->priv; - - if (!priv->has_shape_mask) - gtk_reset_shapes_recurse (widget, priv->window); -} - /* style properties */ @@ -12137,8 +12316,6 @@ gtk_widget_get_hexpand_set (GtkWidget *widget) * * There are few reasons to use this function, but it's here * for completeness and consistency. - * - * Return value: whether hexpand has been explicitly set */ void gtk_widget_set_hexpand_set (GtkWidget *widget, @@ -12216,8 +12393,6 @@ gtk_widget_get_vexpand_set (GtkWidget *widget) * be used. * * See gtk_widget_set_hexpand_set() for more detail. - * - * Return value: whether vexpand has been explicitly set */ void gtk_widget_set_vexpand_set (GtkWidget *widget, @@ -13688,7 +13863,7 @@ gtk_widget_get_window (GtkWidget *widget) * Returns %TRUE if @widget is multiple pointer aware. See * gtk_widget_set_support_multidevice() for more information. * - * Returns: %TRUE is @widget is multidevice aware. + * Returns: %TRUE if @widget is multidevice aware. **/ gboolean gtk_widget_get_support_multidevice (GtkWidget *widget) @@ -13719,17 +13894,7 @@ gtk_widget_set_support_multidevice (GtkWidget *widget, g_return_if_fail (GTK_IS_WIDGET (widget)); priv = widget->priv; - - if (support_multidevice) - { - priv->multidevice = TRUE; - gtk_widget_set_extension_events (widget, GDK_EXTENSION_EVENTS_ALL); - } - else - { - priv->multidevice = FALSE; - gtk_widget_set_extension_events (widget, GDK_EXTENSION_EVENTS_NONE); - } + priv->multidevice = (support_multidevice == TRUE); if (gtk_widget_get_realized (widget)) gdk_window_set_support_multidevice (priv->window, support_multidevice); @@ -13926,7 +14091,7 @@ gtk_widget_get_path (GtkWidget *widget) * implementation with a wrong widget type in the widget path */ if (widget->priv->path && - G_OBJECT_TYPE (widget) != gtk_widget_path_get_widget_type (widget->priv->path)) + G_OBJECT_TYPE (widget) != gtk_widget_path_get_object_type (widget->priv->path)) { gtk_widget_path_free (widget->priv->path); widget->priv->path = NULL; @@ -13957,8 +14122,22 @@ gtk_widget_get_path (GtkWidget *widget) gtk_widget_path_iter_set_name (widget->priv->path, pos, widget->priv->name); if (widget->priv->context) - gtk_style_context_set_path (widget->priv->context, - widget->priv->path); + { + GList *classes, *l; + + /* Also add any persistent classes in + * the style context the widget path + */ + classes = gtk_style_context_list_classes (widget->priv->context); + + for (l = classes; l; l = l->next) + gtk_widget_path_iter_add_class (widget->priv->path, pos, l->data); + + gtk_style_context_set_path (widget->priv->context, + widget->priv->path); + + g_list_free (classes); + } } return widget->priv->path; @@ -13970,7 +14149,20 @@ style_context_changed (GtkStyleContext *context, { GtkWidget *widget = user_data; - g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0); + gtk_widget_update_pango_context (widget); + + if (gtk_widget_get_realized (widget)) + g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0); + else + { + /* Compress all style updates so it + * is only emitted once pre-realize. + */ + widget->priv->style_update_pending = TRUE; + } + + if (widget->priv->anchored) + gtk_widget_queue_resize (widget); } /** diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 04f7772daf..269807fea6 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -375,6 +375,9 @@ struct _GtkWidgetClass GtkSelectionData *selection_data, guint info, guint time_); + gboolean (* drag_failed) (GtkWidget *widget, + GdkDragContext *context, + GtkDragResult result); /* Signals used only for keybindings */ gboolean (* popup_menu) (GtkWidget *widget); @@ -415,6 +418,7 @@ struct _GtkWidgetClass gint *natural_size); void (* adjust_size_allocation) (GtkWidget *widget, GtkOrientation orientation, + gint *minimum_size, gint *natural_size, gint *allocated_pos, gint *allocated_size); @@ -670,10 +674,13 @@ void gtk_widget_set_device_events (GtkWidget *widget, void gtk_widget_add_device_events (GtkWidget *widget, GdkDevice *device, GdkEventMask events); -void gtk_widget_set_extension_events (GtkWidget *widget, - GdkExtensionMode mode); -GdkExtensionMode gtk_widget_get_extension_events (GtkWidget *widget); +void gtk_widget_set_device_enabled (GtkWidget *widget, + GdkDevice *device, + gboolean enabled); +gboolean gtk_widget_get_device_enabled (GtkWidget *widget, + GdkDevice *device); + GtkWidget* gtk_widget_get_toplevel (GtkWidget *widget); GtkWidget* gtk_widget_get_ancestor (GtkWidget *widget, GType widget_type); @@ -777,11 +784,10 @@ void gtk_widget_override_cursor (GtkWidget *widget, const GdkRGBA *cursor, const GdkRGBA *secondary_cursor); +#if !defined(GTK_DISABLE_DEPRECATED) || defined(GTK_COMPILATION) void gtk_widget_style_attach (GtkWidget *widget); -#if !defined(GTK_DISABLE_DEPRECATED) || defined(GTK_COMPILATION) - /* Widget styles. */ gboolean gtk_widget_has_rc_style (GtkWidget *widget); @@ -830,6 +836,10 @@ void gtk_widget_class_path (GtkWidget *widget, gchar **path, gchar **path_reversed); +GdkPixbuf *gtk_widget_render_icon (GtkWidget *widget, + const gchar *stock_id, + GtkIconSize size, + const gchar *detail); #endif /* GTK_DISABLE_DEPRECATED */ PangoContext *gtk_widget_create_pango_context (GtkWidget *widget); @@ -837,10 +847,9 @@ PangoContext *gtk_widget_get_pango_context (GtkWidget *widget); PangoLayout *gtk_widget_create_pango_layout (GtkWidget *widget, const gchar *text); -GdkPixbuf *gtk_widget_render_icon (GtkWidget *widget, +GdkPixbuf *gtk_widget_render_icon_pixbuf (GtkWidget *widget, const gchar *stock_id, - GtkIconSize size, - const gchar *detail); + GtkIconSize size); /* handle composite names for GTK_COMPOSITE_CHILD widgets, * the returned name is newly allocated. @@ -896,9 +905,6 @@ void gtk_widget_shape_combine_region (GtkWidget *widget, void gtk_widget_input_shape_combine_region (GtkWidget *widget, cairo_region_t *region); -/* internal function */ -void gtk_widget_reset_shapes (GtkWidget *widget); - GList* gtk_widget_list_mnemonic_labels (GtkWidget *widget); void gtk_widget_add_mnemonic_label (GtkWidget *widget, GtkWidget *label); diff --git a/gtk/gtkwidgetpath.c b/gtk/gtkwidgetpath.c index d25f550975..f0ae30ea14 100644 --- a/gtk/gtkwidgetpath.c +++ b/gtk/gtkwidgetpath.c @@ -239,7 +239,6 @@ gtk_widget_path_prepend_type (GtkWidgetPath *path, GtkPathElement new = { 0 }; g_return_if_fail (path != NULL); - g_return_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET)); new.type = type; g_array_prepend_val (path->elems, new); @@ -263,7 +262,6 @@ gtk_widget_path_append_type (GtkWidgetPath *path, GtkPathElement new = { 0 }; g_return_val_if_fail (path != NULL, 0); - g_return_val_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET), 0); new.type = type; g_array_append_val (path->elems, new); @@ -272,11 +270,11 @@ gtk_widget_path_append_type (GtkWidgetPath *path, } /** - * gtk_widget_path_iter_get_widget_type: + * gtk_widget_path_iter_get_object_type: * @path: a #GtkWidgetPath - * @pos: position to get the widget type for, -1 for the path head + * @pos: position to get the object type for, -1 for the path head * - * Returns the widget #GType that is at position @pos in the widget + * Returns the object #GType that is at position @pos in the widget * hierarchy defined in @path. * * Returns: a widget type @@ -284,7 +282,7 @@ gtk_widget_path_append_type (GtkWidgetPath *path, * Since: 3.0 **/ GType -gtk_widget_path_iter_get_widget_type (const GtkWidgetPath *path, +gtk_widget_path_iter_get_object_type (const GtkWidgetPath *path, gint pos) { GtkPathElement *elem; @@ -300,18 +298,18 @@ gtk_widget_path_iter_get_widget_type (const GtkWidgetPath *path, } /** - * gtk_widget_path_iter_set_widget_type: + * gtk_widget_path_iter_set_object_type: * @path: a #GtkWidgetPath * @pos: position to modify, -1 for the path head - * @type: widget type to set + * @type: object type to set * - * Sets the widget type for a given position in the widget hierarchy - * defined by @path. @type must be a #GtkWidget derived #GType. + * Sets the object type for a given position in the widget hierarchy + * defined by @path. * * Since: 3.0 **/ void -gtk_widget_path_iter_set_widget_type (GtkWidgetPath *path, +gtk_widget_path_iter_set_object_type (GtkWidgetPath *path, gint pos, GType type) { @@ -319,7 +317,6 @@ gtk_widget_path_iter_set_widget_type (GtkWidgetPath *path, g_return_if_fail (path != NULL); g_return_if_fail (path->elems->len != 0); - g_return_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET)); if (pos < 0 || pos > path->elems->len) pos = path->elems->len - 1; @@ -733,6 +730,9 @@ gtk_widget_path_iter_has_class (const GtkWidgetPath *path, * the hierarchy defined in @path. See * gtk_style_context_add_region(). * + * Region names must only contain lowercase letters + * and '-', starting always with a lowercase letter. + * * Since: 3.0 **/ void @@ -747,6 +747,7 @@ gtk_widget_path_iter_add_region (GtkWidgetPath *path, g_return_if_fail (path != NULL); g_return_if_fail (path->elems->len != 0); g_return_if_fail (name != NULL); + g_return_if_fail (_gtk_style_context_check_region_name (name)); if (pos < 0 || pos > path->elems->len) pos = path->elems->len - 1; @@ -959,18 +960,18 @@ gtk_widget_path_iter_has_region (const GtkWidgetPath *path, } /** - * gtk_widget_path_get_widget_type: + * gtk_widget_path_get_object_type: * @path: a #GtkWidget * - * Returns the topmost widget type, that is, the widget type this path + * Returns the topmost object type, that is, the object type this path * is representing. * - * Returns: The widget type + * Returns: The object type * * Since: 3.0 **/ GType -gtk_widget_path_get_widget_type (const GtkWidgetPath *path) +gtk_widget_path_get_object_type (const GtkWidgetPath *path) { GtkPathElement *elem; @@ -1000,7 +1001,6 @@ gtk_widget_path_is_type (const GtkWidgetPath *path, GtkPathElement *elem; g_return_val_if_fail (path != NULL, FALSE); - g_return_val_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET), FALSE); elem = &g_array_index (path->elems, GtkPathElement, path->elems->len - 1); @@ -1031,7 +1031,6 @@ gtk_widget_path_has_parent (const GtkWidgetPath *path, guint i; g_return_val_if_fail (path != NULL, FALSE); - g_return_val_if_fail (g_type_is_a (type, GTK_TYPE_WIDGET), FALSE); for (i = 0; i < path->elems->len - 1; i++) { diff --git a/gtk/gtkwidgetpath.h b/gtk/gtkwidgetpath.h index 801906c68f..2c9c981e41 100644 --- a/gtk/gtkwidgetpath.h +++ b/gtk/gtkwidgetpath.h @@ -31,8 +31,10 @@ G_BEGIN_DECLS typedef struct _GtkWidgetPath GtkWidgetPath; +#define GTK_TYPE_WIDGET_PATH (gtk_widget_path_get_type ()) -GtkWidgetPath * gtk_widget_path_new (void); +GType gtk_widget_path_get_type (void) G_GNUC_CONST; +GtkWidgetPath * gtk_widget_path_new (void); GtkWidgetPath * gtk_widget_path_copy (const GtkWidgetPath *path); void gtk_widget_path_free (GtkWidgetPath *path); @@ -44,9 +46,9 @@ gint gtk_widget_path_append_type (GtkWidgetPath *path, void gtk_widget_path_prepend_type (GtkWidgetPath *path, GType type); -GType gtk_widget_path_iter_get_widget_type (const GtkWidgetPath *path, +GType gtk_widget_path_iter_get_object_type (const GtkWidgetPath *path, gint pos); -void gtk_widget_path_iter_set_widget_type (GtkWidgetPath *path, +void gtk_widget_path_iter_set_object_type (GtkWidgetPath *path, gint pos, GType type); @@ -101,7 +103,7 @@ gboolean gtk_widget_path_iter_has_qregion (const GtkWidgetPath *path, GQuark qname, GtkRegionFlags *flags); -GType gtk_widget_path_get_widget_type (const GtkWidgetPath *path); +GType gtk_widget_path_get_object_type (const GtkWidgetPath *path); gboolean gtk_widget_path_is_type (const GtkWidgetPath *path, GType type); diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index b31efd9b5b..c5666468f3 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -88,6 +88,11 @@ void _gtk_widget_restore_size_request (GtkWidget *widget, int old_width, int old_height); +gboolean _gtk_widget_get_translation_to_window (GtkWidget *widget, + GdkWindow *window, + int *x, + int *y); + G_END_DECLS #endif /* __GTK_WIDGET_PRIVATE_H__ */ diff --git a/gtk/gtkwin32embedwidget.c b/gtk/gtkwin32embedwidget.c index 7ab456d266..623e8d9b38 100644 --- a/gtk/gtkwin32embedwidget.c +++ b/gtk/gtkwin32embedwidget.c @@ -31,6 +31,7 @@ #include "gtkwin32embedwidget.h" #include "gtkintl.h" #include "gtkprivate.h" +#include "gtkwindowprivate.h" static void gtk_win32_embed_widget_realize (GtkWidget *widget); @@ -95,12 +96,12 @@ _gtk_win32_embed_widget_new (GdkNativeWindow parent_id) embed_widget = g_object_new (GTK_TYPE_WIN32_EMBED_WIDGET, NULL); embed_widget->parent_window = - gdk_window_lookup_for_display (gdk_display_get_default (), - parent_id); + gdk_win32_window_lookup_for_display (gdk_display_get_default (), + parent_id); if (!embed_widget->parent_window) embed_widget->parent_window = - gdk_window_foreign_new_for_display (gdk_display_get_default (), + gdk_win32_window_foreign_new_for_display (gdk_display_get_default (), parent_id); return GTK_WIDGET (embed_widget); @@ -149,7 +150,8 @@ gtk_win32_embed_widget_window_process (HWND hwnd, UINT msg, WPARAM wparam, LPARA GtkWin32EmbedWidget *embed_widget; gpointer user_data; - window = gdk_window_lookup ((GdkNativeWindow)hwnd); + window = gdk_win32_window_lookup_for_display (gdk_display_get_default (), + (GdkNativeWindow)hwnd); if (window == NULL) { g_warning ("No such window!"); return 0; @@ -243,8 +245,8 @@ gtk_win32_embed_widget_realize (GtkWidget *widget) styles = GetWindowLongPtr(GDK_WINDOW_HWND (gdk_window), GWL_STYLE); SetWindowLongPtrW(GDK_WINDOW_HWND (gdk_window), GWL_STYLE, styles | WS_TABSTOP); - gtk_widget_style_attach (widget); - gtk_style_set_background (gtk_widget_get_style (widget), gdk_window, GTK_STATE_NORMAL); + gtk_style_context_set_background (gtk_widget_get_style_context (widget), + gdk_window); } static void diff --git a/gtk/gtkwindow-decorate.c b/gtk/gtkwindow-decorate.c deleted file mode 100644 index 1a276f85b4..0000000000 --- a/gtk/gtkwindow-decorate.c +++ /dev/null @@ -1,808 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 2001 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 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, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Authors: Alexander Larsson - */ - -#include "config.h" -#include "gtkprivate.h" -#include "gtkwindow.h" -#include "gtkmain.h" -#include "gtkwindow-decorate.h" -#include "gtkintl.h" - - -#ifdef DECORATE_WINDOWS - -typedef enum -{ - GTK_WINDOW_REGION_TITLE, - GTK_WINDOW_REGION_MAXIMIZE, - GTK_WINDOW_REGION_CLOSE, - GTK_WINDOW_REGION_BR_RESIZE -} GtkWindowRegionType; - -typedef struct _GtkWindowRegion GtkWindowRegion; -typedef struct _GtkWindowDecoration GtkWindowDecoration; - -struct _GtkWindowRegion -{ - GdkRectangle rect; - GtkWindowRegionType type; -}; - -typedef enum -{ - RESIZE_TOP_LEFT, - RESIZE_TOP, - RESIZE_TOP_RIGHT, - RESIZE_RIGHT, - RESIZE_BOTTOM_RIGHT, - RESIZE_BOTTOM, - RESIZE_BOTTOM_LEFT, - RESIZE_LEFT, - RESIZE_NONE, -} GtkWindowResizeType; - -struct _GtkWindowDecoration -{ - gint n_regions; - GtkWindowRegion *regions; - - gint last_x, last_y; - gint last_w, last_h; - - PangoLayout *title_layout; - - GtkWindowResizeType resize; - - guint moving : 1; - guint closing : 1; - guint maximizing : 1; - guint maximized : 1; - guint maximizable : 1; - guint decorated : 1; - guint real_inner_move : 1; - guint focused : 1; -}; - -#define DECORATION_BORDER_TOP 15 -#define DECORATION_BORDER_LEFT 3 -#define DECORATION_BORDER_RIGHT 3 -#define DECORATION_BORDER_BOTTOM 3 -#define DECORATION_BORDER_TOT_X (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) -#define DECORATION_BORDER_TOT_Y (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) -#define DECORATION_BUTTON_SIZE 9 -#define DECORATION_BUTTON_Y_OFFSET 2 -#define DECORATION_TITLE_FONT "Sans 9" - -static void gtk_decorated_window_recalculate_regions (GtkWindow *window); -static GtkWindowRegionType gtk_decorated_window_region_type (GtkWindow *window, - gint x, - gint y); -static gint gtk_decorated_window_frame_event (GtkWindow *window, - GdkEvent *event); -static gint gtk_decorated_window_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_decorated_window_button_release (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_decorated_window_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gint gtk_decorated_window_window_state (GtkWidget *widget, - GdkEventWindowState *event); -static void gtk_decorated_window_paint (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_decorated_window_focus_change (GtkWidget *widget, - GdkEventFocus *event); -static void gtk_decorated_window_realize (GtkWindow *window); -static void gtk_decorated_window_unrealize (GtkWindow *window); - -static void -gtk_decoration_free (GtkWindowDecoration *deco) -{ - g_free (deco->regions); - deco->regions = NULL; - deco->n_regions = 0; - - g_free (deco); -} - -void -gtk_decorated_window_init (GtkWindow *window) -{ - GtkWindowDecoration *deco; - - deco = g_new (GtkWindowDecoration, 1); - - deco->n_regions = 0; - deco->regions = NULL; - deco->title_layout = NULL; - deco->resize = RESIZE_NONE; - deco->moving = FALSE; - deco->decorated = TRUE; - deco->closing = FALSE; - deco->maximizing = FALSE; - deco->maximized = FALSE; - deco->maximizable = FALSE; - deco->real_inner_move = FALSE; - - g_object_set_data_full (G_OBJECT (window), I_("gtk-window-decoration"), deco, - (GDestroyNotify) gtk_decoration_free); - - gtk_window_set_has_frame (window, TRUE); - - g_signal_connect (window, - "frame-event", - G_CALLBACK (gtk_decorated_window_frame_event), - window); - g_signal_connect (window, - "focus-in-event", - G_CALLBACK (gtk_decorated_window_focus_change), - window); - g_signal_connect (window, - "focus-out-event", - G_CALLBACK (gtk_decorated_window_focus_change), - window); - g_signal_connect (window, - "realize", - G_CALLBACK (gtk_decorated_window_realize), - window); - g_signal_connect (window, - "unrealize", - G_CALLBACK (gtk_decorated_window_unrealize), - window); -} - -static inline GtkWindowDecoration * -get_decoration (GtkWindow *window) -{ - return (GtkWindowDecoration *)g_object_get_data (G_OBJECT (window), "gtk-window-decoration"); -} - -void -gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title) -{ - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->title_layout) - pango_layout_set_text (deco->title_layout, title, -1); -} - -void -gtk_decorated_window_calculate_frame_size (GtkWindow *window) -{ - GdkWMDecoration decorations; - GtkWindowDecoration *deco = get_decoration (window); - - if (gdk_window_get_decorations (GTK_WIDGET (window)->window, - &decorations)) - { - if ((decorations & GDK_DECOR_BORDER) && - (decorations & GDK_DECOR_TITLE)) - { - deco->decorated = TRUE; - if ((decorations & GDK_DECOR_MAXIMIZE) && - (gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL)) - deco->maximizable = TRUE; - } - else - deco->decorated = FALSE; - } - else - { - deco->decorated = (window->type != GTK_WINDOW_POPUP); - deco->maximizable = (gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL); - } - - if (deco->decorated) - gtk_window_set_frame_dimensions (window, - DECORATION_BORDER_LEFT, - DECORATION_BORDER_TOP, - DECORATION_BORDER_RIGHT, - DECORATION_BORDER_BOTTOM); - else - gtk_window_set_frame_dimensions (window, 0, 0, 0, 0); - - gtk_decorated_window_recalculate_regions (window); -} - -static gboolean -gtk_decorated_window_inner_change (GdkWindow *win, - gint x, gint y, - gint width, gint height, - gpointer user_data) -{ - GtkWindow *window = (GtkWindow *)user_data; - GtkWidget *widget = GTK_WIDGET (window); - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->real_inner_move) - { - deco->real_inner_move = FALSE; - return FALSE; - } - - deco->real_inner_move = TRUE; - gdk_window_move_resize (widget->window, - window->frame_left, window->frame_top, - width, height); - - gdk_window_move_resize (window->frame, - x - window->frame_left, y - window->frame_top, - width + window->frame_left + window->frame_right, - height + window->frame_top + window->frame_bottom); - return TRUE; -} - -static void -gtk_decorated_window_inner_get_pos (GdkWindow *win, - gint *x, gint *y, - gpointer user_data) -{ - GtkWindow *window = (GtkWindow *)user_data; - - gdk_window_get_position (window->frame, x, y); - - *x += window->frame_left; - *y += window->frame_top; -} - -static void -gtk_decorated_window_realize (GtkWindow *window) -{ - GtkWindowDecoration *deco = get_decoration (window); - GtkWidget *widget = GTK_WIDGET (window); - PangoFontDescription *font_desc; - - deco->title_layout = gtk_widget_create_pango_layout (widget, - (window->title)?window->title:""); - - font_desc = pango_font_description_from_string(DECORATION_TITLE_FONT); - pango_layout_set_font_description (deco->title_layout, font_desc); - pango_font_description_free (font_desc); -} - - -static void -gtk_decorated_window_unrealize (GtkWindow *window) -{ - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->title_layout) - { - g_object_unref (deco->title_layout); - deco->title_layout = NULL; - } -} - -static gint -gtk_decorated_window_frame_event (GtkWindow *window, GdkEvent *event) -{ - GtkWindowDecoration *deco = get_decoration (window); - GtkWidget *widget = GTK_WIDGET (window); - GdkEventExpose *expose_event; - - switch (event->type) - { - case GDK_EXPOSE: - expose_event = (GdkEventExpose *)event; - if (deco->decorated) - gtk_decorated_window_paint (widget, &expose_event->area); - return TRUE; - break; - case GDK_CONFIGURE: - gtk_decorated_window_recalculate_regions (window); - break; - case GDK_MOTION_NOTIFY: - return gtk_decorated_window_motion_notify (widget, (GdkEventMotion *)event); - break; - case GDK_BUTTON_PRESS: - return gtk_decorated_window_button_press (widget, (GdkEventButton *)event); - break; - case GDK_BUTTON_RELEASE: - return gtk_decorated_window_button_release (widget, (GdkEventButton *)event); - case GDK_WINDOW_STATE: - return gtk_decorated_window_window_state (widget, (GdkEventWindowState *)event); - default: - break; - } - return FALSE; -} - -static gint -gtk_decorated_window_focus_change (GtkWidget *widget, - GdkEventFocus *event) -{ - GtkWindow *window = GTK_WINDOW(widget); - GtkWindowDecoration *deco = get_decoration (window); - deco->focused = event->in; - gdk_window_invalidate_rect (window->frame, NULL, FALSE); - return FALSE; -} - -static gint -gtk_decorated_window_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - GtkWindow *window; - GtkWindowDecoration *deco; - GdkModifierType mask; - GdkWindow *win; - gint x, y; - gint win_x, win_y, win_w, win_h; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (!deco->decorated) - return TRUE; - - win = widget->window; - gdk_window_get_pointer (window->frame, &x, &y, &mask); - - gdk_window_get_position (window->frame, &win_x, &win_y); - win_x += DECORATION_BORDER_LEFT; - win_y += DECORATION_BORDER_TOP; - - gdk_window_get_geometry (win, NULL, NULL, &win_w, &win_h, NULL); - - if (deco->moving) - { - int dx, dy; - dx = x - deco->last_x; - dy = y - deco->last_y; - - gtk_window_move (window, win_x + dx, win_y + dy); - } - - if (deco->resize != RESIZE_NONE) - { - int w, h; - - w = win_w; - h = win_h; - - switch(deco->resize) { - case RESIZE_BOTTOM_RIGHT: - w = x - DECORATION_BORDER_TOT_X; - h = y - DECORATION_BORDER_TOT_Y; - break; - case RESIZE_RIGHT: - w = x - DECORATION_BORDER_TOT_X; - break; - case RESIZE_BOTTOM: - h = y - DECORATION_BORDER_TOT_Y; - break; - case RESIZE_TOP_LEFT: - case RESIZE_TOP: - case RESIZE_TOP_RIGHT: - case RESIZE_BOTTOM_LEFT: - case RESIZE_LEFT: - default: - g_warning ("Resize mode %d not handled yet.\n", deco->resize); - break; - } - - if ((w > 0) && (h > 0)) - { - _gtk_window_constrain_size (window, w,h, &w, &h); - - if ((w != win_w) || (h != win_h)) - gdk_window_resize (widget->window, w, h); - } - } - - return TRUE; -} - -static GtkWindowRegionType -gtk_decorated_window_region_type (GtkWindow *window, gint x, gint y) -{ - GtkWindowDecoration *deco = get_decoration (window); - int i; - - for (i=0;in_regions;i++) - { - if ((x > deco->regions[i].rect.x) && - (x - deco->regions[i].rect.x < deco->regions[i].rect.width) && - (y > deco->regions[i].rect.y) && - (y - deco->regions[i].rect.y < deco->regions[i].rect.height)) - return deco->regions[i].type; - } - return -1; -} - -static gint -gtk_decorated_window_button_press (GtkWidget *widget, - GdkEventButton *event) -{ - GtkWindow *window; - GtkWindowRegionType type; - GtkWindowDecoration *deco; - gint x, y; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (!deco->decorated) - return TRUE; - - x = event->x; - y = event->y; - - type = gtk_decorated_window_region_type (window, x, y); - - switch (type) - { - case GTK_WINDOW_REGION_TITLE: - if (!deco->maximized && event->state & GDK_BUTTON1_MASK) - { - deco->last_x = x; - deco->last_y = y; - deco->moving = TRUE; - } - break; - case GTK_WINDOW_REGION_MAXIMIZE: - if (event->state & GDK_BUTTON1_MASK) - deco->maximizing = TRUE; - break; - case GTK_WINDOW_REGION_CLOSE: - if (event->state & GDK_BUTTON1_MASK) - deco->closing = TRUE; - break; - case GTK_WINDOW_REGION_BR_RESIZE: - if (!deco->maximized) - { - if (event->state & GDK_BUTTON1_MASK) - deco->resize = RESIZE_BOTTOM_RIGHT; - deco->last_x = x; - deco->last_y = y; - } - break; - default: - break; - } - - return TRUE; -} - -static gint -gtk_decorated_window_button_release (GtkWidget *widget, - GdkEventButton *event) -{ - GtkWindow *window; - GtkWindowRegionType type; - GtkWindowDecoration *deco; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (deco->closing) - { - type = gtk_decorated_window_region_type (window, event->x, event->y); - if (type == GTK_WINDOW_REGION_CLOSE) - { - GdkEvent *event = gdk_event_new (GDK_DELETE); - - event->any.type = GDK_DELETE; - event->any.window = g_object_ref (widget->window); - event->any.send_event = TRUE; - - gtk_main_do_event (event); - gdk_event_free (event); - } - } - else if (deco->maximizing) - { - type = gtk_decorated_window_region_type (window, event->x, event->y); - if (type == GTK_WINDOW_REGION_MAXIMIZE) - { - if (deco->maximized) - gtk_window_unmaximize (window); - else - gtk_window_maximize (window); - } - } - - deco->closing = FALSE; - deco->maximizing = FALSE; - deco->moving = FALSE; - deco->resize = RESIZE_NONE; - return TRUE; -} - -static gint -gtk_decorated_window_window_state (GtkWidget *widget, - GdkEventWindowState *event) -{ - GtkWindow *window; - GtkWindowDecoration *deco; - GdkWindowObject *priv; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - priv = GDK_WINDOW_OBJECT (window->frame); - - if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) - { - if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) - { - int w, h; - gdk_window_get_geometry (widget->window, NULL, NULL, - &deco->last_w, &deco->last_h, NULL); - gdk_window_get_origin (widget->window, &deco->last_x, &deco->last_y); - w = gdk_screen_get_width(gdk_screen_get_default()) - DECORATION_BORDER_TOT_X; - h = gdk_screen_get_height(gdk_screen_get_default()) - DECORATION_BORDER_TOT_Y; - _gtk_window_constrain_size (window, w, h, &w, &h); - if (w != deco->last_w || h != deco->last_h) - { - gtk_window_move (window, DECORATION_BORDER_LEFT, DECORATION_BORDER_TOP); - gdk_window_resize (widget->window, w, h); - deco->maximized = TRUE; - } - } - else - { - gtk_window_move (window, deco->last_x, deco->last_y); - _gtk_window_constrain_size (window, deco->last_w, deco->last_h, - &deco->last_w, &deco->last_h); - gdk_window_resize (widget->window, deco->last_w, deco->last_h); - deco->maximized = FALSE; - } - } - return TRUE; -} - -static void -gtk_decorated_window_paint (GtkWidget *widget, - GdkRectangle *area) -{ - GtkWindow *window = GTK_WINDOW (widget); - GtkWindowDecoration *deco = get_decoration (window); - gint x1, y1, x2, y2; - GtkStateType border_state; - cairo_t *cr; - - if (deco->decorated) - { - GdkWindow *frame; - gint width, height; - - frame = window->frame; - gdk_drawable_get_size (frame, &width, &height); - - /* Top */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, 0, - width, DECORATION_BORDER_TOP); - /* Bottom */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, height - DECORATION_BORDER_BOTTOM, - width, DECORATION_BORDER_BOTTOM); - /* Left */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, DECORATION_BORDER_TOP, - DECORATION_BORDER_LEFT, height - DECORATION_BORDER_TOT_Y); - /* Right */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - width - DECORATION_BORDER_RIGHT, DECORATION_BORDER_TOP, - DECORATION_BORDER_RIGHT, height - DECORATION_BORDER_TOT_Y); - - /* Border: */ - if (deco->focused) - border_state = GTK_STATE_SELECTED; - else - border_state = GTK_STATE_PRELIGHT; - - gtk_paint_box (widget->style, frame, border_state, - GTK_SHADOW_OUT, area, widget, "base", - 0, 0, width, height); - - gtk_paint_box (widget->style, frame, border_state, - GTK_SHADOW_IN, area, widget, "base", - DECORATION_BORDER_LEFT - 2, DECORATION_BORDER_TOP - 2, - width - (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) + 3, - height - (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) + 3); - - cr = gdk_cairo_create (frame); - cairo_set_line_width (cr, 1.0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - - if (area) - { - gdk_cairo_rectangle (cr, &area); - cairo_clip (cr); - } - - if (deco->maximizable) - { - /* Maximize button: */ - - x1 = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2); - y1 = DECORATION_BUTTON_Y_OFFSET; - x2 = x1 + DECORATION_BUTTON_SIZE; - y2 = y1 + DECORATION_BUTTON_SIZE; - - gdk_cairo_set_source_color (cr, &widget->style->bg[widget->state]); - cairo_rectangle (cr, x1, y1, x2 - x1, y2 - y1); - cairo_fill (cr); - - gdk_cairo_set_source_rgb (cr, 0, 0, 0); - cairo_rectangle (cr, x1 + 1, y1 + 1, x2 - x1 - 3, 1); - cairo_move_to (cr, x1 + 1.5, y1 + 1.5); - cairo_line_to (cr, x2 - 1.5, y1 + 1.5); - cairo_rectangle (cr, x1 + 1.5, y1 + 2.5, DECORATION_BUTTON_SIZE - 3, DECORATION_BUTTON_SIZE - 4); - cairo_stroke (cr); - } - - /* Close button: */ - - x1 = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE; - y1 = DECORATION_BUTTON_Y_OFFSET; - x2 = width - DECORATION_BORDER_LEFT; - y2 = DECORATION_BUTTON_Y_OFFSET + DECORATION_BUTTON_SIZE; - - gdk_cairo_set_source_color (cr, &widget->style->bg[widget->state]); - cairo_rectangle (cr, x1, y1, x2 - x1, y2 - y1); - cairo_fill (cr); - - /* draw an X */ - cairo_move_to (cr, x1 + 0.5, y1 + 0.5); - cairo_line_to (cr, x2 - 0.5, y2 - 0.5); - cairo_move_to (cr, x1 + 0.5, y2 - 0.5); - cairo_line_to (cr, x2 - 0.5, y1 + 0.5); - cairo_stroke (cr); - - /* Title */ - if (deco->title_layout) - { - gdk_cairo_set_source_color (cr, widget->style->fg [border_state]); - pango_cairo_show_layout (cr, deco->title_layout); - } - - cairo_destroy (cr); - } -} - - -static void -gtk_decorated_window_recalculate_regions (GtkWindow *window) -{ - gint n_regions; - gint width, height; - GtkWindowRegion *region; - GtkWindowDecoration *deco = get_decoration (window); - - n_regions = 0; - - if (!deco->decorated) - return; - - n_regions += 2; /* close, Title */ - if (deco->maximizable) - n_regions += 1; - if (gtk_window_get_resizable (window)) - n_regions += 2; - - if (deco->n_regions != n_regions) - { - g_free (deco->regions); - deco->regions = g_new (GtkWindowRegion, n_regions); - deco->n_regions = n_regions; - } - - width = GTK_WIDGET (window)->allocation.width + DECORATION_BORDER_TOT_X; - height = GTK_WIDGET (window)->allocation.height + DECORATION_BORDER_TOT_Y; - - region = deco->regions; - - /* Maximize button */ - if (deco->maximizable) - { - region->rect.x = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2); - region->rect.y = DECORATION_BUTTON_Y_OFFSET; - region->rect.width = DECORATION_BUTTON_SIZE; - region->rect.height = DECORATION_BUTTON_SIZE; - region->type = GTK_WINDOW_REGION_MAXIMIZE; - region++; - } - - /* Close button */ - region->rect.x = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE; - region->rect.y = DECORATION_BUTTON_Y_OFFSET; - region->rect.width = DECORATION_BUTTON_SIZE; - region->rect.height = DECORATION_BUTTON_SIZE; - region->type = GTK_WINDOW_REGION_CLOSE; - region++; - - /* title bar */ - region->rect.x = 0; - region->rect.y = 0; - region->rect.width = width; - region->rect.height = DECORATION_BORDER_TOP; - region->type = GTK_WINDOW_REGION_TITLE; - region++; - - if (gtk_window_get_resizable (window)) - { - region->rect.x = width - (DECORATION_BORDER_RIGHT + 10); - region->rect.y = height - DECORATION_BORDER_BOTTOM; - region->rect.width = DECORATION_BORDER_RIGHT + 10; - region->rect.height = DECORATION_BORDER_BOTTOM; - region->type = GTK_WINDOW_REGION_BR_RESIZE; - region++; - - region->rect.x = width - DECORATION_BORDER_RIGHT; - region->rect.y = height - (DECORATION_BORDER_BOTTOM + 10); - region->rect.width = DECORATION_BORDER_RIGHT; - region->rect.height = DECORATION_BORDER_BOTTOM + 10; - region->type = GTK_WINDOW_REGION_BR_RESIZE; - region++; - } -} - -void -gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height) -{ - GtkWidget *widget = GTK_WIDGET (window); - GtkWindowDecoration *deco = get_decoration (window); - - deco->real_inner_move = TRUE; - gdk_window_move_resize (widget->window, - x, y, width, height); -} -#else - -void -gtk_decorated_window_init (GtkWindow *window) -{ -} - -void -gtk_decorated_window_calculate_frame_size (GtkWindow *window) -{ -} - -void -gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title) -{ -} - -void -gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height) -{ - gdk_window_move_resize (gtk_widget_get_window (GTK_WIDGET (window)), - x, y, width, height); -} -#endif diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 31f46a56cd..45a11fb177 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -25,19 +25,18 @@ */ #include "config.h" + +#include "gtkwindow.h" + #include #include #include #include -#include "gdk/gdk.h" -#include "gdk/gdkkeysyms.h" - -#include "gtkintl.h" #include "gtkprivate.h" #include "gtkrc.h" -#include "gtkwindow.h" -#include "gtkwindow-decorate.h" +#include "gtkwindowprivate.h" +#include "gtkaccelgroupprivate.h" #include "gtkbindings.h" #include "gtkkeyhash.h" #include "gtkmain.h" @@ -49,6 +48,8 @@ #include "gtkplug.h" #include "gtkbuildable.h" #include "gtkwidgetprivate.h" +#include "gtkintl.h" +#include "gtktypebuiltins.h" #ifdef GDK_WINDOWING_X11 #include "x11/gdkx.h" @@ -96,7 +97,6 @@ */ typedef struct _GtkDeviceGrabInfo GtkDeviceGrabInfo; -typedef struct _GtkWindowGroupPrivate GtkWindowGroupPrivate; struct _GtkWindowPrivate { @@ -110,7 +110,6 @@ struct _GtkWindowPrivate GdkModifierType mnemonic_modifier; GdkScreen *screen; - GdkWindow *frame; GdkWindowTypeHint gdk_type_hint; GtkApplication *application; @@ -125,10 +124,6 @@ struct _GtkWindowPrivate gchar *wmclass_name; gchar *wm_role; - guint frame_bottom; - guint frame_left; - guint frame_right; - guint frame_top; guint keys_changed_handler; guint16 configure_request_count; @@ -155,7 +150,6 @@ struct _GtkWindowPrivate guint gravity : 5; /* GdkGravity */ guint has_focus : 1; guint has_user_ref_count : 1; - guint has_frame : 1; guint has_toplevel_focus : 1; guint iconify_initially : 1; /* gtk_window_iconify() called before realization */ guint is_active : 1; @@ -298,7 +292,6 @@ struct _GtkWindowGeometryInfo GtkWindowLastGeometryInfo last; }; -#define GTK_WINDOW_GROUP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_WINDOW_GROUP, GtkWindowGroupPrivate)) struct _GtkDeviceGrabInfo { @@ -309,6 +302,7 @@ struct _GtkDeviceGrabInfo struct _GtkWindowGroupPrivate { + GSList *grabs; GSList *device_grabs; }; @@ -323,12 +317,8 @@ static void gtk_window_realize (GtkWidget *widget); static void gtk_window_unrealize (GtkWidget *widget); static void gtk_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gint gtk_window_event (GtkWidget *widget, - GdkEvent *event); static gboolean gtk_window_map_event (GtkWidget *widget, GdkEventAny *event); -static gboolean gtk_window_frame_event (GtkWindow *window, - GdkEvent *event); static gint gtk_window_configure_event (GtkWidget *widget, GdkEventConfigure *event); static gint gtk_window_key_press_event (GtkWidget *widget, @@ -599,7 +589,6 @@ gtk_window_class_init (GtkWindowClass *klass) container_class->check_resize = gtk_window_check_resize; klass->set_focus = gtk_window_real_set_focus; - klass->frame_event = gtk_window_frame_event; klass->activate_default = gtk_window_real_activate_default; klass->activate_focus = gtk_window_real_activate_focus; @@ -872,7 +861,7 @@ gtk_window_class_init (GtkWindowClass *klass) GTK_PARAM_READWRITE)); /** - * GtkWindow: resize-grip-visible: + * GtkWindow:resize-grip-visible: * * Whether a corner resize grip is currently shown. * @@ -983,16 +972,6 @@ gtk_window_class_init (GtkWindowClass *klass) _gtk_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GTK_TYPE_WIDGET); - - window_signals[FRAME_EVENT] = - g_signal_new (I_("frame-event"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(GtkWindowClass, frame_event), - _gtk_boolean_handled_accumulator, NULL, - _gtk_marshal_BOOLEAN__BOXED, - G_TYPE_BOOLEAN, 1, - GDK_TYPE_EVENT); /** * GtkWindow::activate-focus: @@ -1110,12 +1089,6 @@ gtk_window_init (GtkWindow *window) priv->need_default_size = TRUE; priv->need_default_position = TRUE; priv->modal = FALSE; - priv->frame = NULL; - priv->has_frame = FALSE; - priv->frame_left = 0; - priv->frame_right = 0; - priv->frame_top = 0; - priv->frame_bottom = 0; priv->gdk_type_hint = GDK_WINDOW_TYPE_HINT_NORMAL; priv->gravity = GDK_GRAVITY_NORTH_WEST; priv->decorated = TRUE; @@ -1135,8 +1108,6 @@ gtk_window_init (GtkWindow *window) priv->has_user_ref_count = TRUE; toplevel_list = g_slist_prepend (toplevel_list, window); - gtk_decorated_window_init (window); - g_signal_connect (priv->screen, "composited-changed", G_CALLBACK (gtk_window_on_composited_changed), window); } @@ -1584,8 +1555,6 @@ gtk_window_set_title (GtkWindow *window, { gdk_window_set_title (gtk_widget_get_window (widget), priv->title); - - gtk_decorated_window_set_title (window, title); } g_object_notify (G_OBJECT (window), "title"); @@ -2660,7 +2629,7 @@ gtk_window_release_application (GtkWindow *window) /** * gtk_window_set_application: * @window: a #GtkWindow - * @application: a #GtkApplication, or %NULL + * @application: (allow-none): a #GtkApplication, or %NULL * * Sets or unsets the #GtkApplication associated with the window. * @@ -3151,7 +3120,7 @@ gtk_window_set_geometry_hints (GtkWindow *window, * using this function, GTK+ will do its best to convince the window * manager not to decorate the window. Depending on the system, this * function may not have any effect when called on a window that is - * already visible, so you should call it before calling gtk_window_show(). + * already visible, so you should call it before calling gtk_widget_show(). * * On Windows, this function always works, since there's no window manager * policy involved. @@ -3717,7 +3686,7 @@ load_pixbuf_verbosely (const char *filename, /** * gtk_window_set_icon_from_file: * @window: a #GtkWindow - * @filename: location of icon file + * @filename: (type filename): location of icon file * @err: (allow-none): location to store error, or %NULL. * * Sets the icon for @window. @@ -3895,7 +3864,7 @@ gtk_window_get_default_icon_name (void) /** * gtk_window_set_default_icon_from_file: - * @filename: location of icon file + * @filename: (type filename): location of icon file * @err: (allow-none): location to store error, or %NULL. * * Sets an icon to be used as fallback for windows that haven't @@ -4339,15 +4308,7 @@ gtk_window_move (GtkWindow *window, * the same as the position being changed by the window * manager. */ - - /* FIXME are we handling gravity properly for framed windows? */ - if (priv->frame) - gdk_window_move (priv->frame, - x - priv->frame_left, - y - priv->frame_top); - else - gdk_window_move (gtk_widget_get_window (GTK_WIDGET (window)), - x, y); + gdk_window_move (gtk_widget_get_window (GTK_WIDGET (window)), x, y); } else { @@ -4452,10 +4413,7 @@ gtk_window_get_position (GtkWindow *window, if (gtk_widget_get_mapped (widget)) { - if (priv->frame) - gdk_window_get_frame_extents (priv->frame, &frame_extents); - else - gdk_window_get_frame_extents (gdk_window, &frame_extents); + gdk_window_get_frame_extents (gdk_window, &frame_extents); x = frame_extents.x; y = frame_extents.y; gtk_window_get_size (window, &w, &h); @@ -4464,7 +4422,7 @@ gtk_window_get_position (GtkWindow *window, { /* We just say the frame has 0 size on all sides. * Not sure what else to do. - */ + */ gtk_window_compute_configure_request (window, &frame_extents, NULL, NULL); @@ -4554,6 +4512,8 @@ gtk_window_destroy (GtkWidget *widget) GtkWindow *window = GTK_WINDOW (widget); GtkWindowPrivate *priv = window->priv; + gtk_window_release_application (window); + toplevel_list = g_slist_remove (toplevel_list, window); if (priv->transient_parent) @@ -4561,7 +4521,7 @@ gtk_window_destroy (GtkWidget *widget) /* frees the icons */ gtk_window_set_icon_list (window, NULL); - + if (priv->has_user_ref_count) { priv->has_user_ref_count = FALSE; @@ -4625,6 +4585,12 @@ gtk_window_show (GtkWidget *widget) GtkContainer *container = GTK_CONTAINER (window); gboolean need_resize; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + GTK_WIDGET_CLASS (gtk_window_parent_class)->show (widget); + return; + } + _gtk_widget_set_visible_flag (widget, TRUE); need_resize = _gtk_container_get_need_resize (container) || !gtk_widget_get_realized (widget); @@ -4671,11 +4637,6 @@ gtk_window_show (GtkWidget *widget) was_realized = TRUE; } - /* Must be done after the windows are realized, - * so that the decorations can be read - */ - gtk_decorated_window_calculate_frame_size (window); - /* We only send configure request if we didn't just finish * creating the window; if we just created the window * then we created it with widget->allocation anyhow. @@ -4707,6 +4668,12 @@ gtk_window_hide (GtkWidget *widget) GtkWindow *window = GTK_WINDOW (widget); GtkWindowPrivate *priv = window->priv; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + GTK_WIDGET_CLASS (gtk_window_parent_class)->hide (widget); + return; + } + _gtk_widget_set_visible_flag (widget, FALSE); gtk_widget_unmap (widget); @@ -4726,6 +4693,12 @@ gtk_window_map (GtkWidget *widget) gdk_window = gtk_widget_get_window (widget); + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + GTK_WIDGET_CLASS (gtk_window_parent_class)->map (widget); + return; + } + gtk_widget_set_mapped (widget, TRUE); child = gtk_bin_get_child (&(window->bin)); @@ -4734,10 +4707,7 @@ gtk_window_map (GtkWidget *widget) !gtk_widget_get_mapped (child)) gtk_widget_map (child); - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gdk_window; + toplevel = gdk_window; if (priv->maximize_initially) gdk_window_maximize (toplevel); @@ -4780,9 +4750,6 @@ gtk_window_map (GtkWidget *widget) gdk_window_show (gdk_window); - if (priv->frame) - gdk_window_show (priv->frame); - if (priv->grip_window) gdk_window_show (priv->grip_window); @@ -4837,17 +4804,21 @@ gtk_window_unmap (GtkWidget *widget) { GtkWindow *window = GTK_WINDOW (widget); GtkWindowPrivate *priv = window->priv; + GtkWidget *child; GtkWindowGeometryInfo *info; GdkWindow *gdk_window; GdkWindowState state; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + GTK_WIDGET_CLASS (gtk_window_parent_class)->unmap (widget); + return; + } + gdk_window = gtk_widget_get_window (widget); gtk_widget_set_mapped (widget, FALSE); - if (priv->frame) - gdk_window_withdraw (priv->frame); - else - gdk_window_withdraw (gdk_window); + gdk_window_withdraw (gdk_window); priv->configure_request_count = 0; priv->configure_notify_received = FALSE; @@ -4871,6 +4842,10 @@ gtk_window_unmap (GtkWidget *widget) priv->stick_initially = (state & GDK_WINDOW_STATE_STICKY) != 0; priv->above_initially = (state & GDK_WINDOW_STATE_ABOVE) != 0; priv->below_initially = (state & GDK_WINDOW_STATE_BELOW) != 0; + + child = gtk_bin_get_child (&(window->bin)); + if (child) + gtk_widget_unmap (child); } static void @@ -4890,6 +4865,38 @@ gtk_window_realize (GtkWidget *widget) gtk_widget_get_allocation (widget, &allocation); + if (gtk_widget_get_parent_window (widget)) + { + gtk_container_set_resize_mode (GTK_CONTAINER (widget), GTK_RESIZE_PARENT); + + gtk_widget_set_realized (widget, TRUE); + + attributes.x = allocation.x; + attributes.y = allocation.y; + attributes.width = allocation.width; + attributes.height = allocation.height; + attributes.window_type = GDK_WINDOW_CHILD; + + attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_STRUCTURE_MASK; + + attributes.visual = gtk_widget_get_visual (widget); + attributes.wclass = GDK_INPUT_OUTPUT; + + attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL; + + gdk_window = gdk_window_new (gtk_widget_get_parent_window (widget), + &attributes, attributes_mask); + gtk_widget_set_window (widget, gdk_window); + gdk_window_set_user_data (gdk_window, widget); + + gtk_style_context_set_background (gtk_widget_get_style_context (widget), gdk_window); + + gdk_window_enable_synchronized_configure (gdk_window); + return; + } + + gtk_container_set_resize_mode (GTK_CONTAINER (window), GTK_RESIZE_QUEUE); + /* ensure widget tree is properly size allocated */ if (allocation.x == -1 && allocation.y == -1 && @@ -4931,57 +4938,15 @@ gtk_window_realize (GtkWidget *widget) g_warning (G_STRLOC": Unknown window type %d!", priv->type); break; } - + attributes.title = priv->title; attributes.wmclass_name = priv->wmclass_name; attributes.wmclass_class = priv->wmclass_class; attributes.wclass = GDK_INPUT_OUTPUT; attributes.visual = gtk_widget_get_visual (widget); - if (priv->has_frame) - { - gtk_widget_get_allocation (widget, &allocation); - attributes.width = allocation.width + priv->frame_left + priv->frame_right; - attributes.height = allocation.height + priv->frame_top + priv->frame_bottom; - attributes.event_mask = (GDK_EXPOSURE_MASK | - GDK_KEY_PRESS_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK | - GDK_FOCUS_CHANGE_MASK | - GDK_STRUCTURE_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK); - - attributes_mask = GDK_WA_VISUAL; - - priv->frame = gdk_window_new (gtk_widget_get_root_window (widget), - &attributes, attributes_mask); - - if (priv->opacity_set) - gdk_window_set_opacity (priv->frame, priv->opacity); - - gdk_window_set_user_data (priv->frame, widget); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = priv->frame_left; - attributes.y = priv->frame_top; - - attributes_mask = GDK_WA_X | GDK_WA_Y; - - parent_window = priv->frame; - - g_signal_connect (window, - "event", - G_CALLBACK (gtk_window_event), - NULL); - } - else - { - attributes_mask = 0; - parent_window = gtk_widget_get_root_window (widget); - } + attributes_mask = 0; + parent_window = gtk_widget_get_root_window (widget); gtk_widget_get_allocation (widget, &allocation); attributes.width = allocation.width; @@ -5003,19 +4968,16 @@ gtk_window_realize (GtkWidget *widget) gdk_window = gdk_window_new (parent_window, &attributes, attributes_mask); gtk_widget_set_window (widget, gdk_window); - if (!priv->has_frame && priv->opacity_set) + if (priv->opacity_set) gdk_window_set_opacity (gdk_window, priv->opacity); gdk_window_enable_synchronized_configure (gdk_window); gdk_window_set_user_data (gdk_window, window); - gtk_widget_style_attach (widget); context = gtk_widget_get_style_context (widget); - gtk_style_context_set_background (context, gdk_window); - if (priv->frame) - gtk_style_context_set_background (context, priv->frame); + if (priv->transient_parent && gtk_widget_get_realized (GTK_WIDGET (priv->transient_parent))) @@ -5024,48 +4986,48 @@ gtk_window_realize (GtkWidget *widget) if (priv->wm_role) gdk_window_set_role (gdk_window, priv->wm_role); - + if (!priv->decorated) gdk_window_set_decorations (gdk_window, 0); - + if (!priv->deletable) gdk_window_set_functions (gdk_window, GDK_FUNC_ALL | GDK_FUNC_CLOSE); - + if (gtk_window_get_skip_pager_hint (window)) gdk_window_set_skip_pager_hint (gdk_window, TRUE); - + if (gtk_window_get_skip_taskbar_hint (window)) gdk_window_set_skip_taskbar_hint (gdk_window, TRUE); - + if (gtk_window_get_accept_focus (window)) gdk_window_set_accept_focus (gdk_window, TRUE); else gdk_window_set_accept_focus (gdk_window, FALSE); - + if (gtk_window_get_focus_on_map (window)) gdk_window_set_focus_on_map (gdk_window, TRUE); else gdk_window_set_focus_on_map (gdk_window, FALSE); - + if (priv->modal) gdk_window_set_modal_hint (gdk_window, TRUE); else gdk_window_set_modal_hint (gdk_window, FALSE); - + if (priv->startup_id) { #ifdef GDK_WINDOWING_X11 guint32 timestamp = extract_time_from_startup_id (priv->startup_id); if (timestamp != GDK_CURRENT_TIME) - gdk_x11_window_set_user_time (gdk_window, timestamp); + gdk_x11_window_set_user_time (gdk_window, timestamp); #endif if (!startup_id_is_fake (priv->startup_id)) - gdk_window_set_startup_id (gdk_window, priv->startup_id); + gdk_window_set_startup_id (gdk_window, priv->startup_id); } - + /* Icons */ gtk_window_realize_icon (window); - + if (priv->has_resize_grip) resize_grip_create_window (window); } @@ -5097,13 +5059,6 @@ gtk_window_unrealize (GtkWidget *widget) info->last.flags = 0; } - if (priv->frame) - { - gdk_window_set_user_data (priv->frame, NULL); - gdk_window_destroy (priv->frame); - priv->frame = NULL; - } - /* Icons */ gtk_window_unrealize_icon (window); @@ -5206,7 +5161,7 @@ set_grip_cursor (GtkWindow *window) display = gtk_widget_get_display (widget); cursor = gdk_cursor_new_for_display (display, cursor_type); gdk_window_set_cursor (priv->grip_window, cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } else gdk_window_set_cursor (priv->grip_window, NULL); @@ -5275,13 +5230,30 @@ gtk_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkWindow *window = GTK_WINDOW (widget); - GtkWindowPrivate *priv = window->priv; GtkAllocation child_allocation; GtkWidget *child; guint border_width; gtk_widget_set_allocation (widget, allocation); + if (gtk_widget_get_realized (widget)) + { + /* If it's not a toplevel we're embedded, we need to resize the window's + * window and skip the grip. + */ + if (!gtk_widget_is_toplevel (widget)) + { + gdk_window_move_resize (gtk_widget_get_window (widget), + allocation->x, allocation->y, + allocation->width, allocation->height); + } + else + { + update_grip_visibility (window); + set_grip_position (window); + } + } + child = gtk_bin_get_child (&(window->bin)); if (child && gtk_widget_get_visible (child)) { @@ -5295,75 +5267,6 @@ gtk_window_size_allocate (GtkWidget *widget, gtk_widget_size_allocate (child, &child_allocation); } - - if (gtk_widget_get_realized (widget)) - { - if (priv->frame) - gdk_window_resize (priv->frame, - allocation->width + priv->frame_left + priv->frame_right, - allocation->height + priv->frame_top + priv->frame_bottom); - update_grip_visibility (window); - set_grip_position (window); - } -} - -static gint -gtk_window_event (GtkWidget *widget, GdkEvent *event) -{ - GtkWindow *window = GTK_WINDOW (widget); - GtkWindowPrivate *priv = window->priv; - gboolean return_val; - - if (priv->frame && (event->any.window == priv->frame)) - { - if ((event->type != GDK_KEY_PRESS) && - (event->type != GDK_KEY_RELEASE) && - (event->type != GDK_FOCUS_CHANGE)) - { - g_signal_stop_emission_by_name (widget, "event"); - return_val = FALSE; - g_signal_emit (widget, window_signals[FRAME_EVENT], 0, event, &return_val); - return TRUE; - } - else - { - g_object_unref (event->any.window); - event->any.window = g_object_ref (gtk_widget_get_window (widget)); - } - } - - return FALSE; -} - -static gboolean -gtk_window_frame_event (GtkWindow *window, GdkEvent *event) -{ - GtkWindowPrivate *priv = window->priv; - GdkEventConfigure *configure_event; - GdkRectangle rect; - - switch (event->type) - { - case GDK_CONFIGURE: - configure_event = (GdkEventConfigure *)event; - - /* Invalidate the decorations */ - rect.x = 0; - rect.y = 0; - rect.width = configure_event->width; - rect.height = configure_event->height; - - gdk_window_invalidate_rect (priv->frame, &rect, FALSE); - - /* Pass on the (modified) configure event */ - configure_event->width -= priv->frame_left + priv->frame_right; - configure_event->height -= priv->frame_top + priv->frame_bottom; - return gtk_window_configure_event (GTK_WIDGET (window), configure_event); - break; - default: - break; - } - return FALSE; } static gint @@ -5375,6 +5278,15 @@ gtk_window_configure_event (GtkWidget *widget, GtkWindowPrivate *priv = window->priv; gboolean expected_reply = priv->configure_request_count > 0; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + if (GTK_WIDGET_CLASS (gtk_window_parent_class)->configure_event) + return GTK_WIDGET_CLASS (gtk_window_parent_class)->configure_event (widget, event); + + gdk_window_configure_finished (gtk_widget_get_window (widget)); + return FALSE; + } + /* priv->configure_request_count incremented for each * configure request, and decremented to a min of 0 for * each configure notify. @@ -5559,7 +5471,8 @@ gtk_window_set_has_resize_grip (GtkWindow *window, priv->has_resize_grip = value; gtk_widget_queue_draw (widget); - if (gtk_widget_get_realized (widget)) + if (gtk_widget_get_realized (widget) && + gtk_widget_is_toplevel (GTK_WIDGET (widget))) { if (priv->has_resize_grip && priv->grip_window == NULL) resize_grip_create_window (window); @@ -5606,7 +5519,7 @@ update_grip_visibility (GtkWindow *window) * * Determines whether a resize grip is visible for the specified window. * - * Returns %TRUE if a resize grip exists and is visible. + * Returns: %TRUE if a resize grip exists and is visible * * Since: 3.0 */ @@ -5628,6 +5541,9 @@ gtk_window_resize_grip_is_visible (GtkWindow *window) if (!priv->resizable) return FALSE; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + return FALSE; + if (gtk_widget_get_realized (widget)) { GdkWindowState state; @@ -5650,7 +5566,7 @@ gtk_window_resize_grip_is_visible (GtkWindow *window) * * Determines whether the window may have a resize grip. * - * Returns: %TRUE if the window has a resize grip. + * Returns: %TRUE if the window has a resize grip * * Since: 3.0 */ @@ -5666,12 +5582,12 @@ gtk_window_get_has_resize_grip (GtkWindow *window) * gtk_window_get_resize_grip_area: * @window: a #GtkWindow * @rect: a pointer to a #GdkRectangle which we should store the - * resize grip area. + * resize grip area * * If a window has a resize grip, this will retrieve the grip * position, width and height into the specified #GdkRectangle. * - * Returns: %TRUE if the resize grip's area was retrieved. + * Returns: %TRUE if the resize grip's area was retrieved * * Since: 3.0 */ @@ -6033,7 +5949,7 @@ gtk_window_client_event (GtkWidget *widget, if (event->message_type == atom_rcfiles) { send_client_message_to_embedded_windows (widget, atom_rcfiles); - gtk_rc_reparse_all_for_settings (gtk_widget_get_settings (widget), FALSE); + gtk_style_context_reset_widgets (gtk_widget_get_screen (widget)); } if (event->message_type == atom_iconthemes) @@ -6048,7 +5964,11 @@ gtk_window_client_event (GtkWidget *widget, static void gtk_window_check_resize (GtkContainer *container) { - if (gtk_widget_get_visible (GTK_WIDGET (container))) + /* If the window is not toplevel anymore than it's embedded somewhere, + * so handle it like a normal window */ + if (!gtk_widget_is_toplevel (GTK_WIDGET (container))) + GTK_CONTAINER_CLASS (gtk_window_parent_class)->check_resize (container); + else if (gtk_widget_get_visible (GTK_WIDGET (container))) gtk_window_move_resize (GTK_WINDOW (container)); } @@ -6064,6 +5984,9 @@ gtk_window_focus (GtkWidget *widget, GtkWidget *old_focus_child; GtkWidget *parent; + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + return GTK_WIDGET_CLASS (gtk_window_parent_class)->focus (widget, direction); + container = GTK_CONTAINER (widget); window = GTK_WINDOW (widget); priv = window->priv; @@ -6117,6 +6040,12 @@ static void gtk_window_move_focus (GtkWidget *widget, GtkDirectionType dir) { + if (!gtk_widget_is_toplevel (GTK_WIDGET (widget))) + { + GTK_WIDGET_CLASS (gtk_window_parent_class)->move_focus (widget, dir); + return; + } + gtk_widget_child_focus (widget, dir); if (! gtk_container_get_focus_child (GTK_CONTAINER (widget))) @@ -6481,9 +6410,9 @@ get_monitor_containing_pointer (GtkWindow *window) device_manager = gdk_display_get_device_manager (display); pointer = gdk_device_manager_get_client_pointer (device_manager); - gdk_display_get_device_state (display, pointer, - &pointer_screen, - &px, &py, NULL); + gdk_device_get_position (pointer, + &pointer_screen, + &px, &py); if (pointer_screen == window_screen) monitor_num = gdk_screen_get_monitor_at_point (pointer_screen, px, py); @@ -6683,9 +6612,9 @@ gtk_window_compute_configure_request (GtkWindow *window, device_manager = gdk_display_get_device_manager (display); pointer = gdk_device_manager_get_client_pointer (device_manager); - gdk_display_get_device_state (display, pointer, - &pointer_screen, - &px, &py, NULL); + gdk_device_get_position (pointer, + &pointer_screen, + &px, &py); if (pointer_screen == screen) monitor_num = gdk_screen_get_monitor_at_point (screen, px, py); @@ -6806,6 +6735,7 @@ gtk_window_move_resize (GtkWindow *window) GtkWindowLastGeometryInfo saved_last_info; widget = GTK_WIDGET (window); + gdk_window = gtk_widget_get_window (widget); container = GTK_CONTAINER (widget); info = gtk_window_get_geometry_info (window, TRUE); @@ -7073,31 +7003,16 @@ gtk_window_move_resize (GtkWindow *window) /* Now send the configure request */ if (configure_request_pos_changed) - { - if (priv->frame) - { - gdk_window_move_resize (priv->frame, - new_request.x - priv->frame_left, - new_request.y - priv->frame_top, - new_request.width + priv->frame_left + priv->frame_right, - new_request.height + priv->frame_top + priv->frame_bottom); - gdk_window_resize (gdk_window, - new_request.width, new_request.height); - } - else - gdk_window_move_resize (gdk_window, - new_request.x, new_request.y, - new_request.width, new_request.height); - } + { + gdk_window_move_resize (gdk_window, + new_request.x, new_request.y, + new_request.width, new_request.height); + } else /* only size changed */ - { - if (priv->frame) - gdk_window_resize (priv->frame, - new_request.width + priv->frame_left + priv->frame_right, - new_request.height + priv->frame_top + priv->frame_bottom); - gdk_window_resize (gdk_window, - new_request.width, new_request.height); - } + { + gdk_window_resize (gdk_window, + new_request.width, new_request.height); + } if (priv->type == GTK_WINDOW_POPUP) { @@ -7149,17 +7064,10 @@ gtk_window_move_resize (GtkWindow *window) /* Handle any position changes. */ if (configure_request_pos_changed) - { - if (priv->frame) - { - gdk_window_move (priv->frame, - new_request.x - priv->frame_left, - new_request.y - priv->frame_top); - } - else - gdk_window_move (gdk_window, - new_request.x, new_request.y); - } + { + gdk_window_move (gdk_window, + new_request.x, new_request.y); + } /* And run the resize queue. */ @@ -7480,116 +7388,6 @@ gtk_window_draw (GtkWidget *widget, return ret; } -/** - * gtk_window_set_has_frame: - * @window: a #GtkWindow - * @setting: a boolean - * - * (Note: this is a special-purpose function for the framebuffer port, - * that causes GTK+ to draw its own window border. For most applications, - * you want gtk_window_set_decorated() instead, which tells the window - * manager whether to draw the window border.) - * - * If this function is called on a window with setting of %TRUE, before - * it is realized or showed, it will have a "frame" window around - * @window->window, accessible in @window->frame. Using the signal - * frame_event you can receive all events targeted at the frame. - * - * This function is used by the linux-fb port to implement managed - * windows, but it could conceivably be used by X-programs that - * want to do their own window decorations. - * - **/ -void -gtk_window_set_has_frame (GtkWindow *window, - gboolean setting) -{ - GtkWindowPrivate *priv; - - g_return_if_fail (GTK_IS_WINDOW (window)); - g_return_if_fail (!gtk_widget_get_realized (GTK_WIDGET (window))); - - priv = window->priv; - - priv->has_frame = setting != FALSE; -} - -/** - * gtk_window_get_has_frame: - * @window: a #GtkWindow - * - * Accessor for whether the window has a frame window exterior to - * @window->window. Gets the value set by gtk_window_set_has_frame (). - * - * Return value: %TRUE if a frame has been added to the window - * via gtk_window_set_has_frame(). - **/ -gboolean -gtk_window_get_has_frame (GtkWindow *window) -{ - g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); - - return window->priv->has_frame; -} - -/** - * gtk_window_set_frame_dimensions: - * @window: a #GtkWindow that has a frame - * @left: The width of the left border - * @top: The height of the top border - * @right: The width of the right border - * @bottom: The height of the bottom border - * - * (Note: this is a special-purpose function intended for the framebuffer - * port; see gtk_window_set_has_frame(). It will have no effect on the - * window border drawn by the window manager, which is the normal - * case when using the X Window system.) - * - * For windows with frames (see gtk_window_set_has_frame()) this function - * can be used to change the size of the frame border. - **/ -void -gtk_window_set_frame_dimensions (GtkWindow *window, - gint left, - gint top, - gint right, - gint bottom) -{ - GtkWindowPrivate *priv; - GtkAllocation allocation; - GtkWidget *widget; - - g_return_if_fail (GTK_IS_WINDOW (window)); - - priv = window->priv; - widget = GTK_WIDGET (window); - - if (priv->frame_left == left && - priv->frame_top == top && - priv->frame_right == right && - priv->frame_bottom == bottom) - return; - - priv->frame_left = left; - priv->frame_top = top; - priv->frame_right = right; - priv->frame_bottom = bottom; - - if (gtk_widget_get_realized (widget) && priv->frame) - { - gint width, height; - gtk_widget_get_allocation (widget, &allocation); - - width = allocation.width + left + right; - height = allocation.height + top + bottom; - gdk_window_resize (priv->frame, width, height); - gtk_decorated_window_move_resize_window (window, - left, top, - allocation.width, - allocation.height); - } -} - /** * gtk_window_present: * @window: a #GtkWindow @@ -7704,10 +7502,7 @@ gtk_window_iconify (GtkWindow *window) priv->iconify_initially = TRUE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_iconify (toplevel); @@ -7740,10 +7535,7 @@ gtk_window_deiconify (GtkWindow *window) priv->iconify_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_deiconify (toplevel); @@ -7781,10 +7573,7 @@ gtk_window_stick (GtkWindow *window) priv->stick_initially = TRUE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_stick (toplevel); @@ -7819,10 +7608,7 @@ gtk_window_unstick (GtkWindow *window) priv->stick_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_unstick (toplevel); @@ -7862,10 +7648,7 @@ gtk_window_maximize (GtkWindow *window) priv->maximize_initially = TRUE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_maximize (toplevel); @@ -7900,10 +7683,7 @@ gtk_window_unmaximize (GtkWindow *window) priv->maximize_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_unmaximize (toplevel); @@ -7940,10 +7720,7 @@ gtk_window_fullscreen (GtkWindow *window) priv->fullscreen_initially = TRUE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_fullscreen (toplevel); @@ -7980,10 +7757,7 @@ gtk_window_unfullscreen (GtkWindow *window) priv->fullscreen_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_unfullscreen (toplevel); @@ -8034,10 +7808,7 @@ gtk_window_set_keep_above (GtkWindow *window, if (setting) priv->below_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_set_keep_above (toplevel, setting); @@ -8088,10 +7859,7 @@ gtk_window_set_keep_below (GtkWindow *window, if (setting) priv->above_initially = FALSE; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); if (toplevel != NULL) gdk_window_set_keep_below (toplevel, setting); @@ -8231,10 +7999,7 @@ gtk_window_begin_resize_drag (GtkWindow *window, priv = window->priv; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); gdk_window_begin_resize_drag (toplevel, edge, button, @@ -8242,48 +8007,6 @@ gtk_window_begin_resize_drag (GtkWindow *window, timestamp); } -/** - * gtk_window_get_frame_dimensions: - * @window: a #GtkWindow - * @left: (out) (allow-none): location to store the width of the frame at the left, or %NULL - * @top: (out) (allow-none): location to store the height of the frame at the top, or %NULL - * @right: (out) (allow-none): location to store the width of the frame at the returns, or %NULL - * @bottom: (out) (allow-none): location to store the height of the frame at the bottom, or %NULL - * - * (Note: this is a special-purpose function intended for the - * framebuffer port; see gtk_window_set_has_frame(). It will not - * return the size of the window border drawn by the window manager, which is the normal - * case when using a windowing system. See - * gdk_window_get_frame_extents() to get the standard window border - * extents.) - * - * Retrieves the dimensions of the frame window for this toplevel. - * See gtk_window_set_has_frame(), gtk_window_set_frame_dimensions(). - **/ -void -gtk_window_get_frame_dimensions (GtkWindow *window, - gint *left, - gint *top, - gint *right, - gint *bottom) -{ - GtkWindowPrivate *priv; - - g_return_if_fail (GTK_IS_WINDOW (window)); - - priv = window->priv; - - if (left) - *left = priv->frame_left; - if (top) - *top = priv->frame_top; - if (right) - *right = priv->frame_right; - if (bottom) - *bottom = priv->frame_bottom; -} - /** * gtk_window_begin_move_drag: * @window: a #GtkWindow @@ -8317,10 +8040,7 @@ gtk_window_begin_move_drag (GtkWindow *window, priv = window->priv; - if (priv->frame) - toplevel = priv->frame; - else - toplevel = gtk_widget_get_window (widget); + toplevel = gtk_widget_get_window (widget); gdk_window_begin_move_drag (toplevel, button, @@ -8328,7 +8048,7 @@ gtk_window_begin_move_drag (GtkWindow *window, timestamp); } -/** +/** * gtk_window_set_screen: * @window: a #GtkWindow. * @screen: a #GdkScreen. @@ -8471,39 +8191,22 @@ gtk_window_has_toplevel_focus (GtkWindow *window) return window->priv->has_toplevel_focus; } +G_DEFINE_TYPE (GtkWindowGroup, gtk_window_group, G_TYPE_OBJECT) + +static void +gtk_window_group_init (GtkWindowGroup *group) +{ + group->priv = G_TYPE_INSTANCE_GET_PRIVATE (group, + GTK_TYPE_WINDOW_GROUP, + GtkWindowGroupPrivate); +} + static void gtk_window_group_class_init (GtkWindowGroupClass *klass) { g_type_class_add_private (klass, sizeof (GtkWindowGroupPrivate)); } -GType -gtk_window_group_get_type (void) -{ - static GType window_group_type = 0; - - if (!window_group_type) - { - const GTypeInfo window_group_info = - { - sizeof (GtkWindowGroupClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gtk_window_group_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (GtkWindowGroup), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, - }; - - window_group_type = g_type_register_static (G_TYPE_OBJECT, I_("GtkWindowGroup"), - &window_group_info, 0); - } - - return window_group_type; -} - /** * gtk_window_group_new: * @@ -8520,14 +8223,16 @@ gtk_window_group_new (void) static void window_group_cleanup_grabs (GtkWindowGroup *group, - GtkWindow *window) + GtkWindow *window) { GtkWindowGroupPrivate *priv; GtkDeviceGrabInfo *info; GSList *tmp_list; GSList *to_remove = NULL; - tmp_list = group->grabs; + priv = group->priv; + + tmp_list = priv->grabs; while (tmp_list) { if (gtk_widget_get_toplevel (tmp_list->data) == (GtkWidget*) window) @@ -8542,7 +8247,6 @@ window_group_cleanup_grabs (GtkWindowGroup *group, to_remove = g_slist_delete_link (to_remove, to_remove); } - priv = GTK_WINDOW_GROUP_GET_PRIVATE (group); tmp_list = priv->device_grabs; while (tmp_list) @@ -8631,8 +8335,8 @@ gtk_window_group_remove_window (GtkWindowGroup *window_group, * * Returns a list of the #GtkWindows that belong to @window_group. * - * Returns: (element-type GtkWidget) (transfer container): A newly-allocated list of - * windows inside the group. + * Returns: (element-type GtkWindow) (transfer container): A + * newly-allocated list of windows inside the group. * * Since: 2.14 **/ @@ -8654,6 +8358,8 @@ gtk_window_group_list_windows (GtkWindowGroup *window_group) group_windows = g_list_prepend (group_windows, window); } + g_list_free (toplevels); + return g_list_reverse (group_windows); } @@ -8719,11 +8425,32 @@ gtk_window_group_get_current_grab (GtkWindowGroup *window_group) { g_return_val_if_fail (GTK_IS_WINDOW_GROUP (window_group), NULL); - if (window_group->grabs) - return GTK_WIDGET (window_group->grabs->data); + if (window_group->priv->grabs) + return GTK_WIDGET (window_group->priv->grabs->data); return NULL; } +void +_gtk_window_group_add_grab (GtkWindowGroup *window_group, + GtkWidget *widget) +{ + GtkWindowGroupPrivate *priv; + + priv = window_group->priv; + priv->grabs = g_slist_prepend (priv->grabs, widget); +} + +void +_gtk_window_group_remove_grab (GtkWindowGroup *window_group, + GtkWidget *widget) +{ + GtkWindowGroupPrivate *priv; + + priv = window_group->priv; + priv->grabs = g_slist_remove (priv->grabs, widget); +} + + void _gtk_window_group_add_device_grab (GtkWindowGroup *window_group, GtkWidget *widget, @@ -8733,7 +8460,7 @@ _gtk_window_group_add_device_grab (GtkWindowGroup *window_group, GtkWindowGroupPrivate *priv; GtkDeviceGrabInfo *info; - priv = GTK_WINDOW_GROUP_GET_PRIVATE (window_group); + priv = window_group->priv; info = g_slice_new0 (GtkDeviceGrabInfo); info->widget = widget; @@ -8753,7 +8480,7 @@ _gtk_window_group_remove_device_grab (GtkWindowGroup *window_group, GSList *list, *node = NULL; GdkDevice *other_device; - priv = GTK_WINDOW_GROUP_GET_PRIVATE (window_group); + priv = window_group->priv; other_device = gdk_device_get_associated_device (device); list = priv->device_grabs; @@ -8804,7 +8531,7 @@ gtk_window_group_get_current_device_grab (GtkWindowGroup *window_group, g_return_val_if_fail (GTK_IS_WINDOW_GROUP (window_group), NULL); g_return_val_if_fail (GDK_IS_DEVICE (device), NULL); - priv = GTK_WINDOW_GROUP_GET_PRIVATE (window_group); + priv = window_group->priv; list = priv->device_grabs; other_device = gdk_device_get_associated_device (device); @@ -8831,7 +8558,7 @@ _gtk_window_group_widget_is_blocked_for_device (GtkWindowGroup *window_group, GdkDevice *other_device; GSList *list; - priv = GTK_WINDOW_GROUP_GET_PRIVATE (window_group); + priv = window_group->priv; other_device = gdk_device_get_associated_device (device); list = priv->device_grabs; @@ -9481,7 +9208,7 @@ _gtk_window_set_is_active (GtkWindow *window, * _gtk_window_set_is_toplevel: * @window: a #GtkWindow * @is_toplevel: %TRUE if the window is still a real toplevel (nominally a - * parent of the root window); %FALSE if it is not (for example, for an + * child of the root window); %FALSE if it is not (for example, for an * in-process, parented GtkPlug) * * Internal function used by #GtkPlug when it gets parented/unparented by a @@ -9493,6 +9220,8 @@ _gtk_window_set_is_toplevel (GtkWindow *window, gboolean is_toplevel) { GtkWidget *widget; + GtkWidget *toplevel; + gboolean was_anchored; widget = GTK_WIDGET (window); @@ -9504,15 +9233,49 @@ _gtk_window_set_is_toplevel (GtkWindow *window, if (is_toplevel == gtk_widget_is_toplevel (widget)) return; + was_anchored = _gtk_widget_get_anchored (widget); + if (is_toplevel) { + /* Pass through regular pathways of an embedded toplevel + * to go through unmapping and hiding the widget before + * becomming a toplevel again. + * + * We remain hidden after becomming toplevel in order to + * avoid problems during an embedded toplevel's dispose cycle + * (When a toplevel window is shown it tries to grab focus again, + * this causes problems while disposing). + */ + gtk_widget_hide (widget); + + /* Save the toplevel this widget was previously anchored into before + * propagating a hierarchy-changed. + * + * Usually this happens by way of gtk_widget_unparent() and we are + * already unanchored at this point, just adding this clause incase + * things happen differently. + */ + toplevel = gtk_widget_get_toplevel (widget); + if (!gtk_widget_is_toplevel (toplevel)) + toplevel = NULL; + _gtk_widget_set_is_toplevel (widget, TRUE); + + /* When a window becomes toplevel after being embedded and anchored + * into another window we need to unset it's anchored flag so that + * the hierarchy changed signal kicks in properly. + */ + _gtk_widget_set_anchored (widget, FALSE); + _gtk_widget_propagate_hierarchy_changed (widget, toplevel); + toplevel_list = g_slist_prepend (toplevel_list, window); } else { _gtk_widget_set_is_toplevel (widget, FALSE); toplevel_list = g_slist_remove (toplevel_list, window); + + _gtk_widget_propagate_hierarchy_changed (widget, widget); } } @@ -9644,3 +9407,27 @@ _gtk_window_get_wmclass (GtkWindow *window, *wmclass_name = priv->wmclass_name; *wmclass_class = priv->wmclass_class; } + +/** + * gtk_window_set_has_user_ref_count: + * @window: a #GtkWindow + * @setting: the new value + * + * Tells GTK+ whether to drop its extra reference to the window + * when gtk_window_destroy() is called. + * + * This function is only exported for the benefit of language + * bindings which may need to keep the window alive until their + * wrapper object is garbage collected. There is no justification + * for ever calling this function in an application. + * + * Since: 3.0 + */ +void +gtk_window_set_has_user_ref_count (GtkWindow *window, + gboolean setting) +{ + g_return_if_fail (GTK_IS_WINDOW (window)); + + window->priv->has_user_ref_count = setting; +} diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h index 57d1f81476..3820070287 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -36,9 +36,6 @@ #include #include -#include "gtk/gtkaccelgroupprivate.h" - - G_BEGIN_DECLS #define GTK_TYPE_WINDOW (gtk_window_get_type ()) @@ -53,6 +50,7 @@ typedef struct _GtkWindowClass GtkWindowClass; typedef struct _GtkWindowGeometryInfo GtkWindowGeometryInfo; typedef struct _GtkWindowGroup GtkWindowGroup; typedef struct _GtkWindowGroupClass GtkWindowGroupClass; +typedef struct _GtkWindowGroupPrivate GtkWindowGroupPrivate; struct _GtkWindow { @@ -66,16 +64,13 @@ struct _GtkWindowClass GtkBinClass parent_class; void (* set_focus) (GtkWindow *window, - GtkWidget *focus); - gboolean (* frame_event) (GtkWindow *window, - GdkEvent *event); + GtkWidget *focus); /* G_SIGNAL_ACTION signals for keybindings */ - void (* activate_focus) (GtkWindow *window); - void (* activate_default) (GtkWindow *window); - - void (* keys_changed) (GtkWindow *window); + void (* activate_focus) (GtkWindow *window); + void (* activate_default) (GtkWindow *window); + void (* keys_changed) (GtkWindow *window); /* Padding for future expansion */ void (*_gtk_reserved1) (void); @@ -95,7 +90,7 @@ struct _GtkWindowGroup { GObject parent_instance; - GSList *GSEAL (grabs); + GtkWindowGroupPrivate *priv; }; struct _GtkWindowGroupClass @@ -189,22 +184,6 @@ GdkScreen* gtk_window_get_screen (GtkWindow *window); gboolean gtk_window_is_active (GtkWindow *window); gboolean gtk_window_has_toplevel_focus (GtkWindow *window); - - -/* gtk_window_set_has_frame () must be called before realizing the window_*/ -void gtk_window_set_has_frame (GtkWindow *window, - gboolean setting); -gboolean gtk_window_get_has_frame (GtkWindow *window); -void gtk_window_set_frame_dimensions (GtkWindow *window, - gint left, - gint top, - gint right, - gint bottom); -void gtk_window_get_frame_dimensions (GtkWindow *window, - gint *left, - gint *top, - gint *right, - gint *bottom); void gtk_window_set_decorated (GtkWindow *window, gboolean setting); gboolean gtk_window_get_decorated (GtkWindow *window); @@ -241,6 +220,8 @@ void gtk_window_set_modal (GtkWindow *window, gboolean modal); gboolean gtk_window_get_modal (GtkWindow *window); GList* gtk_window_list_toplevels (void); +void gtk_window_set_has_user_ref_count (GtkWindow *window, + gboolean setting); void gtk_window_add_mnemonic (GtkWindow *window, guint keyval, @@ -336,6 +317,7 @@ void gtk_window_group_remove_window (GtkWindowGroup *window_grou GtkWindow *window); GList * gtk_window_group_list_windows (GtkWindowGroup *window_group); +GtkWidget * gtk_window_group_get_current_grab (GtkWindowGroup *window_group); GtkWidget * gtk_window_group_get_current_device_grab (GtkWindowGroup *window_group, GdkDevice *device); @@ -353,65 +335,6 @@ gboolean gtk_window_resize_grip_is_visible (GtkWindow *window); gboolean gtk_window_get_resize_grip_area (GtkWindow *window, GdkRectangle *rect); - -/* --- internal functions --- */ -void _gtk_window_internal_set_focus (GtkWindow *window, - GtkWidget *focus); -void gtk_window_remove_embedded_xid (GtkWindow *window, - GdkNativeWindow xid); -void gtk_window_add_embedded_xid (GtkWindow *window, - GdkNativeWindow xid); -void _gtk_window_reposition (GtkWindow *window, - gint x, - gint y); -void _gtk_window_constrain_size (GtkWindow *window, - gint width, - gint height, - gint *new_width, - gint *new_height); -GtkWidget *gtk_window_group_get_current_grab (GtkWindowGroup *window_group); -void _gtk_window_group_add_device_grab (GtkWindowGroup *window_group, - GtkWidget *widget, - GdkDevice *device, - gboolean block_others); -void _gtk_window_group_remove_device_grab (GtkWindowGroup *window_group, - GtkWidget *widget, - GdkDevice *device); - -gboolean _gtk_window_group_widget_is_blocked_for_device (GtkWindowGroup *window_group, - GtkWidget *widget, - GdkDevice *device); - -void _gtk_window_set_has_toplevel_focus (GtkWindow *window, - gboolean has_toplevel_focus); -void _gtk_window_unset_focus_and_default (GtkWindow *window, - GtkWidget *widget); - -void _gtk_window_set_is_active (GtkWindow *window, - gboolean is_active); - -void _gtk_window_set_is_toplevel (GtkWindow *window, - gboolean is_toplevel); - -void _gtk_window_get_wmclass (GtkWindow *window, - gchar **wmclass_name, - gchar **wmclass_class); - -typedef void (*GtkWindowKeysForeachFunc) (GtkWindow *window, - guint keyval, - GdkModifierType modifiers, - gboolean is_mnemonic, - gpointer data); - -void _gtk_window_keys_foreach (GtkWindow *window, - GtkWindowKeysForeachFunc func, - gpointer func_data); - -/* --- internal (GtkAcceleratable) --- */ -gboolean _gtk_window_query_nonaccels (GtkWindow *window, - guint accel_key, - GdkModifierType accel_mods); - G_END_DECLS #endif /* __GTK_WINDOW_H__ */ diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h new file mode 100644 index 0000000000..18562e9a38 --- /dev/null +++ b/gtk/gtkwindowprivate.h @@ -0,0 +1,90 @@ + +/* GTK - The GIMP Toolkit + * Copyright (C) 2010 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __GTK_WINDOW_PRIVATE_H__ +#define __GTK_WINDOW_PRIVATE_H__ + +#include "gtkwindow.h" + +G_BEGIN_DECLS + +void _gtk_window_internal_set_focus (GtkWindow *window, + GtkWidget *focus); +void gtk_window_remove_embedded_xid (GtkWindow *window, + GdkNativeWindow xid); +void gtk_window_add_embedded_xid (GtkWindow *window, + GdkNativeWindow xid); +void _gtk_window_reposition (GtkWindow *window, + gint x, + gint y); +void _gtk_window_constrain_size (GtkWindow *window, + gint width, + gint height, + gint *new_width, + gint *new_height); +void _gtk_window_group_add_grab (GtkWindowGroup *window_group, + GtkWidget *widget); +void _gtk_window_group_remove_grab (GtkWindowGroup *window_group, + GtkWidget *widget); +void _gtk_window_group_add_device_grab (GtkWindowGroup *window_group, + GtkWidget *widget, + GdkDevice *device, + gboolean block_others); +void _gtk_window_group_remove_device_grab (GtkWindowGroup *window_group, + GtkWidget *widget, + GdkDevice *device); + +gboolean _gtk_window_group_widget_is_blocked_for_device (GtkWindowGroup *window_group, + GtkWidget *widget, + GdkDevice *device); + +void _gtk_window_set_has_toplevel_focus (GtkWindow *window, + gboolean has_toplevel_focus); +void _gtk_window_unset_focus_and_default (GtkWindow *window, + GtkWidget *widget); + +void _gtk_window_set_is_active (GtkWindow *window, + gboolean is_active); + +void _gtk_window_set_is_toplevel (GtkWindow *window, + gboolean is_toplevel); + +void _gtk_window_get_wmclass (GtkWindow *window, + gchar **wmclass_name, + gchar **wmclass_class); + +typedef void (*GtkWindowKeysForeachFunc) (GtkWindow *window, + guint keyval, + GdkModifierType modifiers, + gboolean is_mnemonic, + gpointer data); + +void _gtk_window_keys_foreach (GtkWindow *window, + GtkWindowKeysForeachFunc func, + gpointer func_data); + +/* --- internal (GtkAcceleratable) --- */ +gboolean _gtk_window_query_nonaccels (GtkWindow *window, + guint accel_key, + GdkModifierType accel_mods); + +G_END_DECLS + +#endif /* __GTK_WINDOW_PRIVATE_H__ */ diff --git a/gtk/makefile.msc.in b/gtk/makefile.msc.in index bdb138ac47..c2af468707 100644 --- a/gtk/makefile.msc.in +++ b/gtk/makefile.msc.in @@ -10,13 +10,11 @@ TOP = ..\.. ################################################################ # Not the real version but the one used in the DLL names -GTK_VER = 2.0 -GDK_PIXBUF_VER = 2.0 +GTK_VER = 3.0 GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib GTK_LIBS = gtk-win32-$(GTK_VER).lib -GDK_PIXBUF_LIBS = ../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib GTK_BINARY_VERSION = @GTK_BINARY_VERSION@ # Perl and awk are needed to generate some source files. @@ -25,7 +23,7 @@ GTK_BINARY_VERSION = @GTK_BINARY_VERSION@ PERL = perl AWK = gawk -INCLUDES = -FImsvc_recommended_pragmas.h -I . -I .. -I ../gdk -I ../gdk-pixbuf +INCLUDES = -FImsvc_recommended_pragmas.h -I . -I .. -I ../gdk $(GDK_PIXBUF_CFLAGS) DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) \ $(INTL_CFLAGS) $(ATK_CFLAGS) $(CAIRO_CFLAGS) LDFLAGS = $(ATK_LIBS) /link /machine:ix86 $(LINKDEBUG) @@ -38,54 +36,29 @@ DEFINES = \ -DGTK_VERSION=\"$(GTK_VER)\" -DGTK_BINARY_VERSION=\"$(GTK_BINARY_VERSION)\" \ -DGTK_HOST=\"win32\" \ -DGTK_FILE_SYSTEM_ENABLE_UNSUPPORTED \ - -DGTK_PRINT_BACKENDS=\"file,lpr\" \ + -DGTK_PRINT_BACKENDS=\"file,lpr\" \ + -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED \ -DGTK_PRINT_PREVIEW_COMMAND="\"evince --unlink-tempfile --preview %f\"" \ -DGTK_LIBDIR=\"/magic/path/replaced/at/runtime\" +EXTRALIBS = \ + $(GDK_LIBS) \ + $(GDK_PIXBUF_LIBS) \ + $(PANGO_LIBS) $(INTL_LIBS) \ + $(GLIB_LIBS) $(GMODULE_LIBS) $(GIO_LIBS) \ + $(CAIRO_LIBS) $(PANGOCAIRO_LIBS) $(CAIRO_GOBJECT_LIBS) \ + TOUCH = copy makefile.msc+nul gtkbuiltincache.h: gtk-update-icon-cache.exe - cd stock-icons\16 - copy gtk-go-forward-ltr.png gtk-go-back-rtl.png - copy gtk-go-back-ltr.png gtk-go-forward-rtl.png - copy gtk-goto-last-ltr.png gtk-goto-first-rtl.png - copy gtk-goto-first-ltr.png gtk-goto-last-rtl.png - copy gtk-media-rewind-ltr.png gtk-media-forward-rtl.png - copy gtk-media-previous-ltr.png gtk-media-next-rtl.png - copy gtk-media-next-ltr.png gtk-media-previous-rtl.png - copy gtk-media-forward-ltr.png gtk-media-rewind-rtl.png - copy gtk-floppy.png gtk-save.png - copy gtk-harddisk.png drive-harddisk.png - copy gtk-directory.png folder.png - copy gtk-directory.png folder-remote.png - copy gtk-home.png user-home.png - copy gtk-directory.png user-desktop.png - copy gtk-file.png text-x-generic.png - cd ..\24 - copy gtk-go-forward-ltr.png gtk-go-back-rtl.png - copy gtk-go-back-ltr.png gtk-go-forward-rtl.png - copy gtk-goto-last-ltr.png gtk-goto-first-rtl.png - copy gtk-goto-first-ltr.png gtk-goto-last-rtl.png - copy gtk-media-rewind-ltr.png gtk-media-forward-rtl.png - copy gtk-media-previous-ltr.png gtk-media-next-rtl.png - copy gtk-media-next-ltr.png gtk-media-previous-rtl.png - copy gtk-media-forward-ltr.png gtk-media-rewind-rtl.png - copy gtk-floppy.png gtk-save.png - copy gtk-harddisk.png drive-harddisk.png - copy gtk-directory.png folder.png - copy gtk-directory.png folder-remote.png - copy gtk-home.png user-home.png - copy gtk-directory.png user-desktop.png - copy gtk-file.png text-x-generic.png - cd ..\.. del gtkicontheme.obj gtk-update-icon-cache --force --ignore-theme-index \ --source builtin_icons stock-icons > gtkbuiltincache.h GENERATED = \ gtktypebuiltins.h gtktypebuiltins.c \ - gtkmarshal.h gtkmarshal.c gtkmarshalers.h gtkmarshalers.c \ - gtk.def gtktypefuncs.c + gtkmarshalers.h gtkmarshalers.c \ + gtk.def gtkalias.h gtkaliasdef.c gtktypefuncs.c all : \ ..\config.h \ @@ -97,28 +70,6 @@ all : \ # gtk-win32-$(GTK_VER)s.lib \ # gtk-x11-$(GTK_VER).dll -gtk_OBJECTS_deprecated = \ - gtkcombo.obj \ - gtkclist.obj \ - gtkctree.obj \ - gtkfilesel.obj \ - gtktext.obj \ - gtktoolbar.obj \ - gtklist.obj \ - gtkitemfactory.obj \ - gtkoptionmenu.obj \ - gtktree.obj \ - gtktreeitem.obj \ - gtkoldeditable.obj \ - gtklistitem.obj \ - gtkprogress.obj \ - gtktipsquery.obj \ - gtkshow.obj \ - gtkpreview.obj \ - gtkseparatortoolitem.obj \ - gtktypeutils.obj \ - gtktooltips.obj \ - gtk_OBJECTS_cell = \ gtkcelleditable.obj \ gtkcelllayout.obj \ @@ -131,6 +82,7 @@ gtk_OBJECTS_cell = \ gtkcellrendererprogress.obj \ gtkcellrendererspin.obj \ gtkcellrendererspinner.obj \ +# gtkcellsizerequest.obj \ gtkcellview.obj \ gtkliststore.obj \ gtktreednd.obj \ @@ -150,7 +102,7 @@ gtk_OBJECTS_file = \ gtkfilechooserdialog.obj \ gtkfilechooserembed.obj \ gtkfilechooserentry.obj \ - gtkfilechoosersettings.obj \ +# gtkfilechoosersettings.obj \ gtkfilechooserutils.obj \ gtkfilechooserwidget.obj \ gtkfilefilter.obj \ @@ -160,9 +112,9 @@ gtk_OBJECTS_file = \ gtk_OBJECTS_print = \ gtkprint-win32.obj \ gtkprintcontext.obj \ + gtkprintoperation-win32.obj \ gtkprintoperation.obj \ gtkprintoperationpreview.obj \ - gtkprintoperation-win32.obj \ gtkprintsettings.obj \ gtkprintutils.obj \ @@ -197,6 +149,7 @@ gtk_OBJECTS_recent = \ gtk_OBJECTS = \ fnmatch.obj \ + gtk9slice.obj \ gtkaboutdialog.obj \ gtkaccelgroup.obj \ gtkaccellabel.obj \ @@ -207,6 +160,15 @@ gtk_OBJECTS = \ gtkactivatable.obj \ gtkadjustment.obj \ gtkalignment.obj \ + gtkanimationdescription.obj \ + gtkappchooser.obj \ + gtkappchooserbutton.obj \ + gtkappchooserdialog.obj \ + gtkappchoosermodule.obj \ + gtkappchooseronline.obj \ + gtkappchooseronlinepk.obj \ + gtkappchooserwidget.obj \ + gtkapplication.obj \ gtkarrow.obj \ gtkaspectframe.obj \ gtkassistant.obj \ @@ -214,11 +176,16 @@ gtk_OBJECTS = \ gtkbindings.obj \ gtkbbox.obj \ gtkbox.obj \ + gtkborder.obj \ gtkbuildable.obj \ gtkbuilder.obj \ gtkbuilderparser.obj \ gtkbutton.obj \ gtkcalendar.obj \ + gtkcellarea.obj \ + gtkcellareabox.obj \ + gtkcellareaboxcontext.obj \ + gtkcellareacontext.obj \ gtkcheckbutton.obj \ gtkcheckmenuitem.obj \ gtkclipboard.obj \ @@ -226,9 +193,9 @@ gtk_OBJECTS = \ gtkcolorsel.obj \ gtkcolorseldialog.obj \ gtkcombobox.obj \ - gtkcomboboxentry.obj \ + gtkcomboboxtext.obj \ gtkcontainer.obj \ - gtkcurve.obj \ + gtkcssprovider.obj \ gtkdialog.obj \ gtkdnd.obj \ gtkdrawingarea.obj \ @@ -242,8 +209,8 @@ gtk_OBJECTS = \ gtkfontsel.obj \ gtkfontbutton.obj \ gtkframe.obj \ - gtkgamma.obj \ - gtkgc.obj \ + gtkgradient.obj \ + gtkgrid.obj \ gtkhandlebox.obj \ gtkhbbox.obj \ gtkhbox.obj \ @@ -264,16 +231,13 @@ gtk_OBJECTS = \ gtkimmodule.obj \ gtkimmulticontext.obj \ gtkinfobar.obj \ - gtkinputdialog.obj \ gtkinvisible.obj \ - gtkitem.obj \ gtkkeyhash.obj \ gtklabel.obj \ gtklayout.obj \ gtklinkbutton.obj \ gtkmain.obj \ gtkmarshalers.obj \ - gtkmarshal.obj \ gtkmenu.obj \ gtkmenubar.obj \ gtkmenuitem.obj \ @@ -282,15 +246,16 @@ gtk_OBJECTS = \ gtkmessagedialog.obj \ gtkmisc.obj \ gtkmnemonichash.obj \ + gtkmodifierstyle.obj \ gtkmodules.obj \ gtkmountoperation.obj \ gtkmountoperation-stub.obj \ gtknotebook.obj \ - gtkobject.obj \ gtkoffscreenwindow.obj \ gtkorientable.obj \ gtkpagesetup.obj \ gtkpaned.obj \ + gtkpango.obj \ gtkpapersize.obj \ gtkpathbar.obj \ gtkplug.obj \ @@ -306,6 +271,7 @@ gtk_OBJECTS = \ gtkrc.obj \ gtkscale.obj \ gtkscalebutton.obj \ + gtkscrollable.obj \ gtkscrollbar.obj \ gtkscrolledwindow.obj \ gtksearchengine.obj \ @@ -315,22 +281,32 @@ gtk_OBJECTS = \ gtkselection.obj \ gtkseparator.obj \ gtkseparatormenuitem.obj \ + gtkseparatortoolitem.obj \ gtksettings.obj \ + gtkshow.obj \ gtksizegroup.obj \ + gtksizerequest.obj \ gtksocket.obj \ gtksocket-win32.obj \ gtkspinbutton.obj \ gtkspinner.obj \ gtkstatusicon.obj \ gtkstyle.obj \ + gtkstylecontext.obj \ + gtkstyleproperties.obj \ + gtkstyleprovider.obj \ gtkstatusbar.obj \ gtkstock.obj \ + gtkswitch.obj \ + gtksymboliccolor.obj \ gtktable.obj \ gtktearoffmenuitem.obj \ - gtkthemes.obj \ + gtkthemingengine.obj \ + gtktimeline.obj \ gtktoggleaction.obj \ gtktogglebutton.obj \ gtktoggletoolbutton.obj \ + gtktoolbar.obj \ gtktoolbutton.obj \ gtktoolitem.obj \ gtktoolitemgroup.obj \ @@ -339,6 +315,7 @@ gtk_OBJECTS = \ gtktooltip.obj \ gtktreedatalist.obj \ gtktypebuiltins.obj \ + gtktypeutils.obj \ gtkuimanager.obj \ gtkvbbox.obj \ gtkvbox.obj \ @@ -349,13 +326,14 @@ gtk_OBJECTS = \ gtkvscrollbar.obj \ gtkvseparator.obj \ gtkwidget.obj \ + gtkwidgetpath.obj \ gtkwin32embed.obj \ gtkwin32embedwidget.obj \ gtkwindow.obj \ - gtkwindow-decorate.obj +# gtkwrapbox.obj \ # Source headers which are non-autogenerated headers -gtk_public_h_sources = \ +gtk_public_h_sources = \ gtk.h \ gtkaboutdialog.h \ gtkaccelgroup.h \ @@ -367,17 +345,27 @@ gtk_public_h_sources = \ gtkactivatable.h \ gtkadjustment.h \ gtkalignment.h \ + gtkappchooser.h \ + gtkappchooserbutton.h \ + gtkappchooserdialog.h \ + gtkappchooserwidget.h \ + gtkapplication.h \ gtkarrow.h \ gtkaspectframe.h \ gtkassistant.h \ gtkbbox.h \ gtkbin.h \ gtkbindings.h \ + gtkborder.h \ gtkbox.h \ gtkbuilder.h \ gtkbuildable.h \ gtkbutton.h \ gtkcalendar.h \ + gtkcellarea.h \ + gtkcellareacontext.h \ + gtkcellareabox.h \ + gtkcellareaboxcontext.h \ gtkcelleditable.h \ gtkcelllayout.h \ gtkcellrenderer.h \ @@ -385,47 +373,43 @@ gtk_public_h_sources = \ gtkcellrenderercombo.h \ gtkcellrendererpixbuf.h \ gtkcellrendererprogress.h \ - gtkcellrendererspin.h \ - gtkcellrendererspinner.h \ + gtkcellrendererspin.h \ + gtkcellrendererspinner.h\ gtkcellrenderertext.h \ gtkcellrenderertoggle.h \ gtkcellview.h \ gtkcheckbutton.h \ gtkcheckmenuitem.h \ gtkclipboard.h \ - gtkclist.h \ gtkcolorbutton.h \ gtkcolorsel.h \ gtkcolorseldialog.h \ - gtkcombo.h \ gtkcombobox.h \ - gtkcomboboxentry.h \ + gtkcomboboxtext.h \ gtkcontainer.h \ - gtkctree.h \ - gtkcurve.h \ - gtkdebug.h \ + gtkcssprovider.h \ + gtkdebug.h \ gtkdialog.h \ gtkdnd.h \ gtkdrawingarea.h \ - gtkeditable.h \ + gtkeditable.h \ gtkentry.h \ gtkentrybuffer.h \ gtkentrycompletion.h \ gtkenums.h \ gtkeventbox.h \ gtkexpander.h \ - gtkfilechooser.h \ - gtkfilechooserbutton.h \ - gtkfilechooserdialog.h \ - gtkfilechooserwidget.h \ + gtkfilechooser.h \ + gtkfilechooserbutton.h \ + gtkfilechooserdialog.h \ + gtkfilechooserwidget.h \ gtkfilefilter.h \ - gtkfilesel.h \ gtkfixed.h \ gtkfontbutton.h \ gtkfontsel.h \ gtkframe.h \ - gtkgamma.h \ - gtkgc.h \ + gtkgradient.h \ + gtkgrid.h \ gtkhandlebox.h \ gtkhbbox.h \ gtkhbox.h \ @@ -433,6 +417,7 @@ gtk_public_h_sources = \ gtkhscale.h \ gtkhscrollbar.h \ gtkhseparator.h \ + gtkhsv.h \ gtkiconfactory.h \ gtkicontheme.h \ gtkiconview.h \ @@ -442,15 +427,11 @@ gtk_public_h_sources = \ gtkimcontextsimple.h \ gtkimmodule.h \ gtkimmulticontext.h \ - gtkinputdialog.h \ + gtkinfobar.h \ gtkinvisible.h \ - gtkitem.h \ - gtkitemfactory.h \ gtklabel.h \ - gtklayout.h \ + gtklayout.h \ gtklinkbutton.h \ - gtklist.h \ - gtklistitem.h \ gtkliststore.h \ gtkmain.h \ gtkmenu.h \ @@ -463,21 +444,16 @@ gtk_public_h_sources = \ gtkmodules.h \ gtkmountoperation.h \ gtknotebook.h \ - gtkobject.h \ gtkoffscreenwindow.h \ - gtkoldeditable.h \ - gtkoptionmenu.h \ + gtkorientable.h \ gtkpagesetup.h \ gtkpaned.h \ gtkpapersize.h \ gtkplug.h \ - gtkpreview.h \ gtkprintcontext.h \ gtkprintoperation.h \ - gtkprintoperationpreview.h \ + gtkprintoperationpreview.h \ gtkprintsettings.h \ - gtkprivate.h \ - gtkprogress.h \ gtkprogressbar.h \ gtkradioaction.h \ gtkradiobutton.h \ @@ -486,14 +462,15 @@ gtk_public_h_sources = \ gtkrange.h \ gtkrc.h \ gtkrecentaction.h \ - gtkrecentchooser.h \ + gtkrecentchooser.h \ gtkrecentchooserdialog.h \ - gtkrecentchoosermenu.h \ + gtkrecentchoosermenu.h \ gtkrecentchooserwidget.h \ - gtkrecentfilter.h \ - gtkrecentmanager.h \ + gtkrecentfilter.h \ + gtkrecentmanager.h \ gtkscale.h \ gtkscalebutton.h \ + gtkscrollable.h \ gtkscrollbar.h \ gtkscrolledwindow.h \ gtkselection.h \ @@ -501,17 +478,24 @@ gtk_public_h_sources = \ gtkseparatormenuitem.h \ gtkseparatortoolitem.h \ gtksettings.h \ + gtkshow.h \ gtksizegroup.h \ + gtksizerequest.h \ gtksocket.h \ gtkspinbutton.h \ gtkspinner.h \ gtkstatusbar.h \ gtkstatusicon.h \ gtkstock.h \ + gtkstylecontext.h \ + gtkstyleproperties.h \ + gtkstyleprovider.h \ gtkstyle.h \ + gtkswitch.h \ + gtksymboliccolor.h \ gtktable.h \ - gtktearoffmenuitem.h \ - gtktext.h \ + gtktearoffmenuitem.h \ + gtktestutils.h \ gtktextbuffer.h \ gtktextbufferrichtext.h \ gtktextchild.h \ @@ -521,20 +505,18 @@ gtk_public_h_sources = \ gtktexttag.h \ gtktexttagtable.h \ gtktextview.h \ - gtktipsquery.h \ + gtkthemingengine.h \ gtktoggleaction.h \ gtktogglebutton.h \ gtktoggletoolbutton.h \ gtktoolbar.h \ gtktoolbutton.h \ gtktoolitem.h \ - gtktoolitemgroup.h \ + gtktoolitemgroup.h \ gtktoolpalette.h \ + gtktoolshell.h \ gtktooltip.h \ - gtktooltips.h \ - gtktree.h \ gtktreednd.h \ - gtktreeitem.h \ gtktreemodel.h \ gtktreemodelfilter.h \ gtktreemodelsort.h \ @@ -554,6 +536,7 @@ gtk_public_h_sources = \ gtkvscrollbar.h \ gtkvseparator.h \ gtkwidget.h \ + gtkwidgetpath.h \ gtkwindow.h # these aren't use here, but listed for reference @@ -567,7 +550,7 @@ gtk_extra_sources = \ gtk.def: gtk.symbols makefile.msc echo EXPORTS > gtk.def - cl /EP -DG_OS_WIN32 \ + cl /EP -DG_OS_WIN32 -DGDK_WINDOWING_WIN32 \ -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \ -DG_GNUC_PRINTF=;G_GNUC_PRINTF gtk.symbols >> gtk.def @@ -601,15 +584,6 @@ gtkmarshalers.h : gtkmarshalers.list makefile.msc gtkmarshalers.c : gtkmarshalers.list makefile.msc $(GLIB)\gobject\glib-genmarshal --prefix=_gtk_marshal gtkmarshalers.list --body >gtkmarshalers.c -# public, deprecated marshalers -gtkmarshal.h : gtkmarshal.list - echo #ifndef GTK_DISABLE_DEPRECATED >gtkmarshal.h - $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --header >>gtkmarshal.h - echo #endif /* GTK_DISABLE_DEPRECATED */ >>gtkmarshal.h - -gtkmarshal.c : gtkmarshal.list - $(GLIB)\gobject\glib-genmarshal --prefix=gtk_marshal gtkmarshal.list --body >gtkmarshal.c - gtktypefuncs.c : makefile.msc echo /*none*/ > gtktypefuncs.c @@ -618,8 +592,6 @@ gtk-win32.res : gtk-win32.rc # build some static limits to covercome command line too long # may also speed up the build -gtk-deprecated.lib : $(gtk_OBJECTS_deprecated) - lib /out:gtk-deprecated.lib $(gtk_OBJECTS_deprecated) gtk-cell.lib : $(gtk_OBJECTS_cell) lib /out:gtk-cell.lib $(gtk_OBJECTS_cell) @@ -640,7 +612,6 @@ gtk-core.lib : $(gtk_OBJECTS) lib /out:gtk-core.lib $(gtk_OBJECTS) gtk_SUBLIBS = \ - gtk-deprecated.lib \ gtk-cell.lib \ gtk-file.lib \ gtk-print.lib \ @@ -652,10 +623,9 @@ gtk_SUBLIBS = \ # Linking: # libgtk-win32-$(GTK_VER)-0.dll : $(gtk_SUBLIBS) gtk.def gtk-win32.res - $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_SUBLIBS) gtk-win32.res \ - $(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) \ - $(CAIRO_LIBS) $(PANGOCAIRO_LIBS) \ - gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib ole32.lib comdlg32.lib winspool.lib comctl32.lib \ + $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_SUBLIBS) gtk-win32.res $(EXTRALIBS) \ + gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib ole32.lib \ + comdlg32.lib winspool.lib comctl32.lib \ $(LDFLAGS) /implib:gtk-win32-$(GTK_VER).lib /def:gtk.def gtk-win32-$(GTK_VER)s.lib : $(gtk_OBJECTS) diff --git a/gtk/tests/Makefile.am b/gtk/tests/Makefile.am index dda9727d49..f27796fe82 100644 --- a/gtk/tests/Makefile.am +++ b/gtk/tests/Makefile.am @@ -6,19 +6,19 @@ INCLUDES = \ -I$(top_srcdir)/gdk \ -DGDK_DISABLE_DEPRECATED \ -DGTK_DISABLE_DEPRECATED \ + -DSRCDIR=\""$(abs_srcdir)"\" \ $(GTK_DEBUG_FLAGS) \ $(GTK_DEP_CFLAGS) DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la progs_ldadd = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) -noinst_PROGRAMS = $(TEST_PROGS) $(SAMPLE_PROGS) +noinst_PROGRAMS = $(TEST_PROGS) TEST_PROGS += testing @@ -57,8 +57,8 @@ floating_LDADD = $(progs_ldadd) # on a naked X server creates slightly different event # sequences than running on a normal desktop # TEST_PROGS += crossingevents -crossingevents_SOURCES = crossingevents.c -crossingevents_LDADD = $(progs_ldadd) +#crossingevents_SOURCES = crossingevents.c +#crossingevents_LDADD = $(progs_ldadd) # Should be ported to new API's #TEST_PROGS += filechooser @@ -72,9 +72,9 @@ builder_LDFLAGS = -export-dynamic if OS_UNIX #TEST_PROGS += defaultvalue +#defaultvalue_SOURCES = defaultvalue.c pixbuf-init.c +#defaultvalue_LDADD = $(progs_ldadd) endif -defaultvalue_SOURCES = defaultvalue.c pixbuf-init.c -defaultvalue_LDADD = $(progs_ldadd) TEST_PROGS += textbuffer textbuffer_SOURCES = textbuffer.c pixbuf-init.c @@ -90,21 +90,20 @@ filtermodel_LDADD = $(progs_ldadd) TEST_PROGS += expander expander_SOURCES = expander.c -expander_LDADD = $(progs_ldadd) +expander_LDADD = $(progs_ldadd) TEST_PROGS += action action_SOURCES = action.c action_LDADD = $(progs_ldadd) -SAMPLE_PROGS = gtk-example-application -gtk_example_application_SOURCES = gtk-example-application.c -gtk_example_application_LDADD = $(progs_ldadd) - TEST_PROGS += stylecontext stylecontext_SOURCES = stylecontext.c stylecontext_LDADD = $(progs_ldadd) -EXTRA_DIST += test.css test.png +EXTRA_DIST += test.css test.png +TEST_PROGS += papersize +papersize_SOURCES = papersize.c +papersize_LDADD = $(progs_ldadd) EXTRA_DIST += \ file-chooser-test-dir/empty \ diff --git a/gtk/tests/builder.c b/gtk/tests/builder.c index 00420af57b..1c0acaa8a6 100644 --- a/gtk/tests/builder.c +++ b/gtk/tests/builder.c @@ -1312,6 +1312,7 @@ test_combo_box (void) g_object_unref (builder); } +#if 0 static void test_combo_box_entry (void) { @@ -1382,6 +1383,7 @@ test_combo_box_entry (void) g_object_unref (builder); } +#endif static void test_cell_view (void) @@ -2601,7 +2603,9 @@ main (int argc, char **argv) g_test_add_func ("/Builder/TreeView Column", test_treeview_column); g_test_add_func ("/Builder/IconView", test_icon_view); g_test_add_func ("/Builder/ComboBox", test_combo_box); +#if 0 g_test_add_func ("/Builder/ComboBox Entry", test_combo_box_entry); +#endif g_test_add_func ("/Builder/CellView", test_cell_view); g_test_add_func ("/Builder/Dialog", test_dialog); g_test_add_func ("/Builder/Accelerators", test_accelerators); diff --git a/gtk/tests/liststore.c b/gtk/tests/liststore.c index 6452fc2903..e710d9bad2 100644 --- a/gtk/tests/liststore.c +++ b/gtk/tests/liststore.c @@ -168,6 +168,13 @@ list_store_test_insert_high_values (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -205,6 +212,13 @@ list_store_test_append (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -242,6 +256,13 @@ list_store_test_prepend (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -280,6 +301,20 @@ list_store_test_insert_after (void) g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 2)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 2)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (iter_position (store, &iter3, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -313,6 +348,16 @@ list_store_test_insert_after_NULL (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 0)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -353,6 +398,20 @@ list_store_test_insert_before (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 2)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 2)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (iter_position (store, &iter3, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -385,6 +444,13 @@ list_store_test_insert_before_NULL (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -853,6 +919,20 @@ list_store_test_move_before_single (void) /* iter invalidation */ +static void +list_store_test_iter_previous_invalid (ListStore *fixture, + gconstpointer user_data) +{ + GtkTreeIter iter; + + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (fixture->store), &iter); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (fixture->store), + &iter) == FALSE); + g_assert (gtk_list_store_iter_is_valid (fixture->store, &iter) == FALSE); + g_assert (iter.stamp == 0); +} + static void list_store_test_iter_next_invalid (ListStore *fixture, gconstpointer user_data) @@ -1025,6 +1105,9 @@ main (int argc, list_store_test_move_before_single); /* iter invalidation */ + g_test_add ("/list-store/iter-prev-invalid", ListStore, NULL, + list_store_setup, list_store_test_iter_previous_invalid, + list_store_teardown); g_test_add ("/list-store/iter-next-invalid", ListStore, NULL, list_store_setup, list_store_test_iter_next_invalid, list_store_teardown); diff --git a/gtk/tests/papersize.c b/gtk/tests/papersize.c new file mode 100644 index 0000000000..62e7a90e87 --- /dev/null +++ b/gtk/tests/papersize.c @@ -0,0 +1,128 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2011 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 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +static void +test_parse (void) +{ + GtkPaperSize *p; + + p = gtk_paper_size_new (GTK_PAPER_NAME_A4); + g_assert (p != NULL); + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_MM), ==, 210); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_MM), ==, 297); + g_assert_cmpstr (gtk_paper_size_get_name (p), ==, "iso_a4"); + g_assert_cmpstr (gtk_paper_size_get_display_name (p), ==, "A4"); + g_assert_cmpstr (gtk_paper_size_get_ppd_name (p), ==, "A4"); + g_assert (!gtk_paper_size_is_custom (p)); + gtk_paper_size_free (p); + + p = gtk_paper_size_new (GTK_PAPER_NAME_B5); + g_assert (p != NULL); + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_MM), ==, 176); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_MM), ==, 250); + g_assert_cmpstr (gtk_paper_size_get_name (p), ==, "iso_b5"); + g_assert_cmpstr (gtk_paper_size_get_display_name (p), ==, "B5"); + g_assert_cmpstr (gtk_paper_size_get_ppd_name (p), ==, "ISOB5"); + g_assert (!gtk_paper_size_is_custom (p)); + gtk_paper_size_free (p); + + p = gtk_paper_size_new (GTK_PAPER_NAME_EXECUTIVE); + g_assert (p != NULL); + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_MM), ==, 184); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_MM), ==, 266); + g_assert_cmpstr (gtk_paper_size_get_name (p), ==, "na_executive"); + g_assert_cmpstr (gtk_paper_size_get_display_name (p), ==, "Executive"); + g_assert_cmpstr (gtk_paper_size_get_ppd_name (p), ==, "Executive"); + g_assert (!gtk_paper_size_is_custom (p)); + gtk_paper_size_free (p); + + p = gtk_paper_size_new ("iso_a4_210x297mm"); + g_assert (p != NULL); + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_MM), ==, 210); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_MM), ==, 297); + g_assert_cmpstr (gtk_paper_size_get_name (p), ==, "iso_a4"); + g_assert_cmpstr (gtk_paper_size_get_display_name (p), ==, "A4"); + g_assert_cmpstr (gtk_paper_size_get_ppd_name (p), ==, "A4"); + g_assert (!gtk_paper_size_is_custom (p)); + gtk_paper_size_free (p); + + p = gtk_paper_size_new ("custom_w1_20x30in"); + g_assert (p != NULL); + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_INCH), ==, 20); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_INCH), ==, 30); + g_assert_cmpstr (gtk_paper_size_get_name (p), ==, "custom_w1"); + g_assert_cmpstr (gtk_paper_size_get_display_name (p), ==, "custom_w1"); + g_assert (gtk_paper_size_is_custom (p)); + gtk_paper_size_free (p); +} + +static void +test_compare (void) +{ + GtkPaperSize *a1, *a2, *b, *c; + + a1 = gtk_paper_size_new (GTK_PAPER_NAME_A4); + a2 = gtk_paper_size_new ("iso_a4_210x297mm"); + b = gtk_paper_size_new (GTK_PAPER_NAME_B5); + c = gtk_paper_size_new ("custom_w1_20x30in"); + + g_assert (gtk_paper_size_is_equal (a1, a2)); + g_assert (!gtk_paper_size_is_equal (a1, b)); + g_assert (!gtk_paper_size_is_equal (a1, c)); + g_assert (!gtk_paper_size_is_equal (b, c)); + + gtk_paper_size_free (a1); + gtk_paper_size_free (a2); + gtk_paper_size_free (b); + gtk_paper_size_free (c); +} + +static void +test_units (void) +{ + GtkPaperSize *p; + + p = gtk_paper_size_new (GTK_PAPER_NAME_A4); + + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_MM), ==, 210); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_MM), ==, 297); + + /* compare up to 2 decimals */ + g_assert_cmpint (100 * gtk_paper_size_get_width (p, GTK_UNIT_INCH), ==, 100 * 8.26); + g_assert_cmpint (100 * gtk_paper_size_get_height (p, GTK_UNIT_INCH), ==, 100 * 11.69); + + g_assert_cmpint (gtk_paper_size_get_width (p, GTK_UNIT_POINTS), ==, 595); + g_assert_cmpint (gtk_paper_size_get_height (p, GTK_UNIT_POINTS), ==, 841); + + gtk_paper_size_free (p); +} + +int +main (int argc, char *argv[]) +{ + gtk_test_init (&argc, &argv); + + g_test_add_func ("/paper-size/parse", test_parse); + g_test_add_func ("/paper-size/compare", test_compare); + g_test_add_func ("/paper-size/units", test_units); + + return g_test_run(); +} diff --git a/gtk/tests/stylecontext.c b/gtk/tests/stylecontext.c index 20b7dadfc9..5250919819 100644 --- a/gtk/tests/stylecontext.c +++ b/gtk/tests/stylecontext.c @@ -26,11 +26,11 @@ test_parse_at (void) gboolean res; gint i; const gchar *valid[] = { - "@import \"test.css\";", - "@import 'test.css';", - "@import url(\"test.css\");", - "@import url('test.css');", - "@import\nurl (\t\"test.css\" ) ;", + "@import \"" SRCDIR "/test.css\";", + "@import '" SRCDIR "/test.css';", + "@import url(\"" SRCDIR "/test.css\");", + "@import url('" SRCDIR "/test.css');", + "@import\nurl (\t\"" SRCDIR "/test.css\" ) ;", "@define-color bg_color #f9a039;", "@define-color color @bg_color;", "@define-color color rgb(100, 99, 88);", @@ -48,8 +48,8 @@ test_parse_at (void) }; const gchar *invalid[] = { - "@import test.css ;", - "@import url ( \"test.css\" xyz );", + "@import " SRCDIR "/test.css ;", + "@import url ( \"" SRCDIR "/test.css\" xyz );", "@import url(\");", "@import url(');", "@import url(\"abc');", @@ -77,6 +77,8 @@ test_parse_at (void) { provider = gtk_css_provider_new (); res = gtk_css_provider_load_from_data (provider, valid[i], -1, &error); + if (error) + g_print ("parsing '%s': got unexpected error: %s\n", valid[i], error->message); g_assert_no_error (error); g_assert (res); @@ -217,8 +219,8 @@ test_parse_declarations (void) " center center, 0.8, \n" " color-stop (0.0,#fff),\n" " color-stop (1.0,#000))}\n", - "* { border-image: url (\"test.png\") 3 4 3 4 stretch }", - "* { border-image: url (\"test.png\") 3 4 3 4 repeat stretch}", + "* { border-image: url (\"" SRCDIR "/test.png\") 3 4 3 4 stretch }", + "* { border-image: url (\"" SRCDIR "/test.png\") 3 4 3 4 repeat stretch}", "* { transition: 150ms ease-in-out }", "* { transition: 1s linear loop }", NULL @@ -272,14 +274,14 @@ test_path (void) pos = gtk_widget_path_append_type (path, GTK_TYPE_WINDOW); g_assert_cmpint (pos, ==, 0); g_assert_cmpint (gtk_widget_path_length (path), ==, 1); - g_assert (gtk_widget_path_iter_get_widget_type (path, 0) == GTK_TYPE_WINDOW); + g_assert (gtk_widget_path_iter_get_object_type (path, 0) == GTK_TYPE_WINDOW); g_assert (gtk_widget_path_is_type (path, GTK_TYPE_WIDGET)); g_assert (gtk_widget_path_iter_get_name (path, 0) == NULL); pos = gtk_widget_path_append_type (path, GTK_TYPE_WIDGET); g_assert_cmpint (pos, ==, 1); g_assert_cmpint (gtk_widget_path_length (path), ==, 2); - gtk_widget_path_iter_set_widget_type (path, pos, GTK_TYPE_BUTTON); + gtk_widget_path_iter_set_object_type (path, pos, GTK_TYPE_BUTTON); g_assert (gtk_widget_path_is_type (path, GTK_TYPE_BUTTON)); g_assert (gtk_widget_path_has_parent (path, GTK_TYPE_WIDGET)); g_assert (gtk_widget_path_has_parent (path, GTK_TYPE_WINDOW)); @@ -516,6 +518,36 @@ test_style_property (void) g_object_unref (context); } +void +test_basic_properties (void) +{ + GtkStyleContext *context; + GtkWidgetPath *path; + GdkRGBA *color; + GdkRGBA *bg_color; + PangoFontDescription *font; + + context = gtk_style_context_new (); + path = gtk_widget_path_new (); + gtk_style_context_set_path (context, path); + gtk_widget_path_free (path); + + gtk_style_context_get (context, 0, + "color", &color, + "background-color", &bg_color, + "font", &font, + NULL); + g_assert (color != NULL); + g_assert (bg_color != NULL); + g_assert (font != NULL); + + gdk_rgba_free (color); + gdk_rgba_free (bg_color); + pango_font_description_free (font); + + g_object_unref (context); +} + int main (int argc, char *argv[]) { @@ -529,6 +561,7 @@ main (int argc, char *argv[]) g_test_add_func ("/style/path", test_path); g_test_add_func ("/style/match", test_match); g_test_add_func ("/style/style-property", test_style_property); + g_test_add_func ("/style/basic", test_basic_properties); return g_test_run (); } diff --git a/gtk/tests/treestore.c b/gtk/tests/treestore.c index c9dbcffba8..663eaaf580 100644 --- a/gtk/tests/treestore.c +++ b/gtk/tests/treestore.c @@ -171,6 +171,13 @@ tree_store_test_insert_high_values (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -208,6 +215,13 @@ tree_store_test_append (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -245,6 +259,13 @@ tree_store_test_prepend (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -283,6 +304,20 @@ tree_store_test_insert_after (void) g_assert (!gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 2)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 2)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (iter_position (store, &iter3, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -316,6 +351,16 @@ tree_store_test_insert_after_NULL (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 0)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -356,6 +401,20 @@ tree_store_test_insert_before (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 2)); + g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 2)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter3, &iter_copy)); + g_assert (iter_position (store, &iter3, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_object_unref (store); } @@ -388,6 +447,13 @@ tree_store_test_insert_before_NULL (void) g_assert (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (store), &iter_copy, NULL, 1)); g_assert (iters_equal (&iter2, &iter_copy)); + g_assert (iter_position (store, &iter2, 1)); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); + g_assert (iters_equal (&iter, &iter_copy)); + g_assert (iter_position (store, &iter, 0)); + + g_assert (!gtk_tree_model_iter_previous (GTK_TREE_MODEL (store), &iter_copy)); g_object_unref (store); } @@ -856,6 +922,20 @@ tree_store_test_move_before_single (void) /* iter invalidation */ +static void +tree_store_test_iter_previous_invalid (TreeStore *fixture, + gconstpointer user_data) +{ + GtkTreeIter iter; + + gtk_tree_model_get_iter_first (GTK_TREE_MODEL (fixture->store), &iter); + + g_assert (gtk_tree_model_iter_previous (GTK_TREE_MODEL (fixture->store), + &iter) == FALSE); + g_assert (gtk_tree_store_iter_is_valid (fixture->store, &iter) == FALSE); + g_assert (iter.stamp == 0); +} + static void tree_store_test_iter_next_invalid (TreeStore *fixture, gconstpointer user_data) @@ -1028,6 +1108,9 @@ main (int argc, tree_store_test_move_before_single); /* iter invalidation */ + g_test_add ("/tree-store/iter-prev-invalid", TreeStore, NULL, + tree_store_setup, tree_store_test_iter_previous_invalid, + tree_store_teardown); g_test_add ("/tree-store/iter-next-invalid", TreeStore, NULL, tree_store_setup, tree_store_test_iter_next_invalid, tree_store_teardown); diff --git a/gtk/tests/treeview-scrolling.c b/gtk/tests/treeview-scrolling.c index 40d5b81c75..91ed786cb3 100644 --- a/gtk/tests/treeview-scrolling.c +++ b/gtk/tests/treeview-scrolling.c @@ -299,17 +299,17 @@ static enum Pos get_pos_from_path (GtkTreeView *tree_view, GtkTreePath *path, gdouble row_height, - GtkAdjustment *vadj) + GtkAdjustment *vadjustment) { int row_start; row_start = get_row_start_for_index (tree_view, gtk_tree_path_get_indices (path)[0]); - if (row_start + row_height < vadj->page_size) + if (row_start + row_height < gtk_adjustment_get_page_size (vadjustment)) return POS_TOP; - if (row_start >= vadj->upper - vadj->page_size) + if (row_start >= gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)) return POS_BOTTOM; return POS_CENTER; @@ -324,7 +324,7 @@ test_position_with_align (GtkTreeView *tree_view, gdouble row_align) { gboolean passed = TRUE; - GtkAdjustment *vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); + GtkAdjustment *vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); /* Switch on row-align: 0.0, 0.5, 1.0 */ switch ((int)(row_align * 2.)) { @@ -338,7 +338,7 @@ test_position_with_align (GtkTreeView *tree_view, */ if (row_y != 0) passed = FALSE; - if (vadj->value != row_start) + if (gtk_adjustment_get_value (vadjustment) != row_start) passed = FALSE; } else { /* The row can be anywhere at the last @@ -346,7 +346,7 @@ test_position_with_align (GtkTreeView *tree_view, * - dy is set to the start of the * last page. */ - if (vadj->value != vadj->upper - vadj->page_size) + if (gtk_adjustment_get_value (vadjustment) != gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)) passed = FALSE; } break; @@ -354,23 +354,23 @@ test_position_with_align (GtkTreeView *tree_view, case 1: /* 0.5 */ if (pos == POS_TOP - && row_start < vadj->page_size / 2) { + && row_start < gtk_adjustment_get_page_size (vadjustment) / 2) { /* For the first half of the top view we can't * center the row in the view, instead we * show the first page. * - dy should be zero */ - if (vadj->value != 0) + if (gtk_adjustment_get_value (vadjustment) != 0) passed = FALSE; } else if (pos == POS_BOTTOM - && row_start >= vadj->upper - vadj->page_size / 2) { + && row_start >= gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment) / 2) { /* For the last half of the bottom view we * can't center the row in the view, instead * we show the last page. * - dy should be the start of the * last page. */ - if (vadj->value != vadj->upper - vadj->page_size) + if (gtk_adjustment_get_value (vadjustment) != gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)) passed = FALSE; } else { /* The row is located in the middle of @@ -381,7 +381,7 @@ test_position_with_align (GtkTreeView *tree_view, * (ie. the row's center is at the * center of the view). */ - gdouble middle = vadj->page_size / 2 - row_height / 2; + gdouble middle = gtk_adjustment_get_page_size (vadjustment) / 2 - row_height / 2; if (row_y != ceil (middle) && row_y != floor (middle)) passed = FALSE; } @@ -394,7 +394,7 @@ test_position_with_align (GtkTreeView *tree_view, * first page of the tree view. * - dy is zero. */ - if (vadj->value != 0) + if (gtk_adjustment_get_value (vadjustment) != 0) passed = FALSE; } else if (pos == POS_CENTER || pos == POS_BOTTOM) { /* The row is the last row visible in the @@ -405,12 +405,12 @@ test_position_with_align (GtkTreeView *tree_view, * (ie we are not on the first page). * - dy is greater than zero */ - if (row_start < vadj->page_size - && row_start + row_height < vadj->page_size) + if (row_start < gtk_adjustment_get_page_size (vadjustment) + && row_start + row_height < gtk_adjustment_get_page_size (vadjustment)) passed = FALSE; - if (vadj->value <= 0) + if (gtk_adjustment_get_value (vadjustment) <= 0) passed = FALSE; - if (row_y != vadj->page_size - row_height) + if (row_y != gtk_adjustment_get_page_size (vadjustment) - row_height) passed = FALSE; } break; @@ -424,14 +424,14 @@ test_position_without_align (GtkTreeView *tree_view, gdouble row_start, gdouble row_height) { - GtkAdjustment *vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); + GtkAdjustment *vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); /* Without align the tree view does as less work as possible, * so basically we only have to check whether the row * is visible on the screen. */ - if (vadj->value <= row_start - && vadj->value + vadj->page_size >= row_start + row_height) + if (gtk_adjustment_get_value (vadjustment) <= row_start + && gtk_adjustment_get_value (vadjustment) + gtk_adjustment_get_page_size (vadjustment) >= row_start + row_height) return TRUE; return FALSE; @@ -778,12 +778,12 @@ test_editable_position (GtkWidget *tree_view, { GtkAllocation allocation; GdkRectangle rect; - GtkAdjustment *vadj; + GtkAdjustment *vadjustment; gtk_tree_view_get_background_area (GTK_TREE_VIEW (tree_view), cursor_path, NULL, &rect); - vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); + vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (tree_view)); /* There are all in bin_window coordinates */ gtk_widget_get_allocation (editable, &allocation); @@ -892,7 +892,7 @@ scroll_new_row_tree (ScrollFixture *fixture, gtk_main_iteration (); /* Test position, the scroll bar must be at the end */ - g_assert (vadjustment->value == vadjustment->upper - vadjustment->page_size); + g_assert (gtk_adjustment_get_value (vadjustment) == gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)); } } @@ -905,7 +905,7 @@ test_bug316689 (ScrollFixture *fixture, { GtkTreeIter iter; GtkTreePath *path; - GtkAdjustment *vadj; + GtkAdjustment *vadjustment; GtkTreeModel *model; /* The aim of this test is to scroll to the bottom of a TreeView, @@ -935,10 +935,10 @@ test_bug316689 (ScrollFixture *fixture, while (gtk_events_pending ()) gtk_main_iteration (); - vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (fixture->tree_view)); + vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (fixture->tree_view)); - g_assert (vadj->value + vadj->page_size <= vadj->upper); - g_assert (vadj->value == vadj->upper - vadj->page_size); + g_assert (gtk_adjustment_get_value (vadjustment) + gtk_adjustment_get_page_size (vadjustment) <= gtk_adjustment_get_upper (vadjustment)); + g_assert (gtk_adjustment_get_value (vadjustment) == gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment)); } diff --git a/gtk/tests/treeview.c b/gtk/tests/treeview.c index 1b3ce9952c..fe42095530 100644 --- a/gtk/tests/treeview.c +++ b/gtk/tests/treeview.c @@ -150,6 +150,84 @@ test_select_collapsed_row (void) gtk_tree_path_free (path); } +static gboolean +test_row_separator_height_func (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + gboolean ret = FALSE; + GtkTreePath *path; + + path = gtk_tree_model_get_path (model, iter); + if (gtk_tree_path_get_indices (path)[0] == 2) + ret = TRUE; + gtk_tree_path_free (path); + + return ret; +} + +static void +test_row_separator_height (void) +{ + int focus_pad, separator_height, height; + gboolean wide_separators; + GtkTreeIter iter; + GtkTreePath *path; + GtkListStore *store; + GtkWidget *window; + GtkWidget *tree_view; + GdkRectangle rect, cell_rect; + + store = gtk_list_store_new (1, G_TYPE_STRING); + gtk_list_store_insert_with_values (store, &iter, 0, 0, "Row content", -1); + gtk_list_store_insert_with_values (store, &iter, 1, 0, "Row content", -1); + gtk_list_store_insert_with_values (store, &iter, 2, 0, "Row content", -1); + gtk_list_store_insert_with_values (store, &iter, 3, 0, "Row content", -1); + gtk_list_store_insert_with_values (store, &iter, 4, 0, "Row content", -1); + + window = gtk_offscreen_window_new (); + + tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store)); + gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (tree_view), + test_row_separator_height_func, + NULL, + NULL); + + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), + 0, + "Test", + gtk_cell_renderer_text_new (), + "text", 0, + NULL); + + gtk_container_add (GTK_CONTAINER (window), tree_view); + gtk_widget_show_all (window); + + + path = gtk_tree_path_new_from_indices (2, -1); + gtk_tree_view_get_background_area (GTK_TREE_VIEW (tree_view), + path, NULL, &rect); + gtk_tree_view_get_cell_area (GTK_TREE_VIEW (tree_view), + path, NULL, &cell_rect); + gtk_tree_path_free (path); + + gtk_widget_style_get (tree_view, + "focus-padding", &focus_pad, + "wide-separators", &wide_separators, + "separator-height", &separator_height, + NULL); + + if (wide_separators) + height = separator_height + 2 * focus_pad; + else + height = 2 + 2 * focus_pad; + + g_assert_cmpint (rect.height, ==, height); + g_assert_cmpint (cell_rect.height, ==, height); + + gtk_widget_destroy (tree_view); +} + int main (int argc, char **argv) @@ -160,6 +238,8 @@ main (int argc, g_test_add_func ("/TreeView/cursor/bug-539377", test_bug_539377); g_test_add_func ("/TreeView/cursor/select-collapsed_row", test_select_collapsed_row); + g_test_add_func ("/TreeView/sizing/row-separator-height", + test_row_separator_height); return g_test_run (); } diff --git a/m4macros/gtk-3.0.m4 b/m4macros/gtk-3.0.m4 index b24258654f..7d00bc1f6c 100644 --- a/m4macros/gtk-3.0.m4 +++ b/m4macros/gtk-3.0.m4 @@ -27,7 +27,7 @@ AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test x$PKG_CONFIG != xno ; then - if pkg-config --atleast-pkgconfig-version 0.7 ; then + if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then : else echo "*** pkg-config too old; version 0.7 or better required." diff --git a/makefile.msc b/makefile.msc index f95e5d33e4..3af6b7c911 100644 --- a/makefile.msc +++ b/makefile.msc @@ -1,7 +1,7 @@ ## Makefile for building the Gtk+ dlls with Microsoft C ## Use: nmake -f makefile.msc -PARTS = gdk-pixbuf gdk gtk tests +PARTS = gdk gtk tests all : \ config.h \ diff --git a/modules/engines/Makefile.am b/modules/engines/Makefile.am index 7f65239551..5dce19124a 100644 --- a/modules/engines/Makefile.am +++ b/modules/engines/Makefile.am @@ -4,6 +4,10 @@ if USE_WIN32 wimp = ms-windows endif +# the theme engines need to be ported to GtkThemingEngine SUBDIRS = $(wimp) pixbuf +DIST_SUBDIRS = ms-windows pixbuf + + -include $(top_srcdir)/git.mk diff --git a/modules/engines/ms-windows/Makefile.am b/modules/engines/ms-windows/Makefile.am index da7612c93d..161d075af0 100644 --- a/modules/engines/ms-windows/Makefile.am +++ b/modules/engines/ms-windows/Makefile.am @@ -13,8 +13,8 @@ INCLUDES = \ LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gdk/libgdk-3.0.la \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) enginedir = $(libdir)/gtk-3.0/$(GTK_BINARY_VERSION)/engines diff --git a/modules/engines/ms-windows/msw_style.c b/modules/engines/ms-windows/msw_style.c index aabcb0d0d9..ca7d38ff68 100755 --- a/modules/engines/ms-windows/msw_style.c +++ b/modules/engines/ms-windows/msw_style.c @@ -43,6 +43,10 @@ #include "gtk/gtk.h" #include "gtk/gtk.h" +#ifndef GTK_COMPILATION +#define GTK_COMPILATION +#endif +#include "gtk/gtkmenushellprivate.h" #ifdef BUILDING_STANDALONE #include "gdk/gdkwin32.h" @@ -1337,9 +1341,9 @@ draw_arrow (GtkStyle *style, reverse_engineer_stepper_box (widget, arrow_type, &box_x, &box_y, &box_width, &box_height); - if (gtk_range_get_adjustment(&scrollbar->range)->page_size >= - (gtk_range_get_adjustment(&scrollbar->range)->upper - - gtk_range_get_adjustment(&scrollbar->range)->lower)) + if (gtk_adjustment_get_page_size(gtk_range_get_adjustment(&scrollbar->range)) >= + (gtk_adjustment_get_upper(gtk_range_get_adjustment(&scrollbar->range)) - + gtk_adjustment_get_lower(gtk_range_get_adjustment(&scrollbar->range)))) { is_disabled = TRUE; } @@ -1577,7 +1581,7 @@ draw_menu_item (cairo_t *cr, GtkWidget *widget, GtkStyle *style, if (state_type == GTK_STATE_PRELIGHT) { - draw_3d_border (dc, &rect, bar->active); + draw_3d_border (dc, &rect, bar->priv->active); } release_window_dc (&dc_info); @@ -1881,9 +1885,9 @@ draw_box (GtkStyle *style, } else { - if (gtk_range_get_adjustment(&scrollbar->range)->page_size >= - (gtk_range_get_adjustment(&scrollbar->range)->upper - - gtk_range_get_adjustment(&scrollbar->range)->lower)) + if (gtk_adjustment_get_page_size(gtk_range_get_adjustment(&scrollbar->range)) >= + (gtk_adjustment_get_page_size(gtk_range_get_adjustment(&scrollbar->range)) - + gtk_adjustment_get_page_size(gtk_range_get_adjustment(&scrollbar->range)))) { return; } diff --git a/modules/engines/pixbuf/Makefile.am b/modules/engines/pixbuf/Makefile.am index a3e8eef4cd..051d2acde3 100644 --- a/modules/engines/pixbuf/Makefile.am +++ b/modules/engines/pixbuf/Makefile.am @@ -13,8 +13,8 @@ INCLUDES = \ LDADDS = \ $(GTK_DEP_LIBS) \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gdk/libgdk-3.0.la \ + $(top_builddir)/gtk/libgtk-3.0.la enginedir = $(libdir)/gtk-3.0/$(GTK_BINARY_VERSION)/engines diff --git a/modules/input/Makefile.am b/modules/input/Makefile.am index 019b52b182..eb078f98f4 100644 --- a/modules/input/Makefile.am +++ b/modules/input/Makefile.am @@ -17,12 +17,10 @@ INCLUDES = \ $(INCLUDED_IMMODULE_DEFINE) DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) moduledir = $(libdir)/gtk-3.0/$(GTK_BINARY_VERSION)/immodules @@ -186,7 +184,7 @@ endif # install-data-am, and not install-exec-am. We need to ensure this gets run # after the libraries are installed in their final locations. install-data-hook: - @if $(RUN_QUERY_IMMODULES_TEST) ; then \ + $(AM_V_GEN) if $(RUN_QUERY_IMMODULES_TEST) ; then \ echo $(mkinstalldirs) $(DESTDIR)$(libdir)/gtk-3.0/3.0.0 ; \ $(mkinstalldirs) $(DESTDIR)$(libdir)/gtk-3.0/3.0.0 ; \ echo "$(top_builddir)/gtk/gtk-query-immodules-3.0 > $(DESTDIR)$(libdir)/gtk-3.0/3.0.0/immodules.cache" ; \ @@ -238,7 +236,7 @@ noinst_LTLIBRARIES = \ included-modules: $(noinst_LTLIBRARIES) immodules.cache: Makefile.am $(module_LTLIBRARIES) - $(top_builddir)/gtk/gtk-query-immodules-3.0 $(module_LTLIBRARIES) > immodules.cache + $(AM_V_GEN) $(top_builddir)/gtk/gtk-query-immodules-3.0 $(module_LTLIBRARIES) > immodules.cache EXTRA_DIST += README.multipress diff --git a/modules/input/gtkimcontextime.c b/modules/input/gtkimcontextime.c index d6cdd9b32f..786fb9d40e 100644 --- a/modules/input/gtkimcontextime.c +++ b/modules/input/gtkimcontextime.c @@ -25,6 +25,10 @@ * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/appendix/hh/appendix/imeimes2_35ph.asp */ +#ifdef GTK_DISABLE_DEPRECATED +#undef GTK_DISABLE_DEPRECATED +#endif + #include "gtkimcontextime.h" #include "imm-extra.h" diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c index 035edc3a00..a6adf9f280 100644 --- a/modules/input/gtkimcontextxim.c +++ b/modules/input/gtkimcontextxim.c @@ -1755,14 +1755,19 @@ static gboolean on_status_window_draw (GtkWidget *widget, cairo_t *cr) { - GtkStyle *style; + GtkStyleContext *style; + GdkRGBA color; - style = gtk_widget_get_style (widget); + style = gtk_widget_get_style_context (widget); - gdk_cairo_set_source_color (cr, &style->base[GTK_STATE_NORMAL]); + gtk_style_context_get_background_color (style, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); + cairo_paint (cr); + + gtk_style_context_get_color (style, 0, &color); + gdk_cairo_set_source_rgba (cr, &color); cairo_paint (cr); - gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); cairo_rectangle (cr, 0, 0, gtk_widget_get_allocated_width (widget) - 1, @@ -1772,26 +1777,6 @@ on_status_window_draw (GtkWidget *widget, return FALSE; } -/* We watch the ::style-set signal for our label widget - * and use that to change it's foreground color to match - * the 'text' color of the toplevel window. The text/base - * pair of colors might be reversed from the fg/bg pair - * that are normally used for labels. - */ -static void -on_status_window_style_set (GtkWidget *toplevel, - GtkStyle *previous_style, - GtkWidget *label) -{ - GtkStyle *style; - gint i; - - style = gtk_widget_get_style (toplevel); - - for (i = 0; i < 5; i++) - gtk_widget_modify_fg (label, i, &style->text[i]); -} - /* Creates the widgets for the status window; called when we * first need to show text for the status window. */ @@ -1811,8 +1796,6 @@ status_window_make_window (StatusWindow *status_window) gtk_misc_set_padding (GTK_MISC (status_label), 1, 1); gtk_widget_show (status_label); - g_signal_connect (window, "style-set", - G_CALLBACK (on_status_window_style_set), status_label); gtk_container_add (GTK_CONTAINER (window), status_label); g_signal_connect (window, "draw", diff --git a/modules/other/gail/Makefile.am b/modules/other/gail/Makefile.am index 6be2ca13c8..687d8f619f 100644 --- a/modules/other/gail/Makefile.am +++ b/modules/other/gail/Makefile.am @@ -141,8 +141,7 @@ libgail_la_CFLAGS = \ $(AM_CFLAGS) libgail_la_LIBADD = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(top_builddir)/modules/other/gail/libgail-util/libgailutil-3.0.la \ $(GTK_DEP_LIBS) \ $(INTLLIBS) diff --git a/modules/other/gail/gail.c b/modules/other/gail/gail.c index 07a619d2ce..cb121638a9 100644 --- a/modules/other/gail/gail.c +++ b/modules/other/gail/gail.c @@ -250,7 +250,7 @@ gail_focus_watcher (GSignalInvocationHint *ihint, { if (GTK_IS_MENU_SHELL (child)) { - if (GTK_MENU_SHELL (child)->active_menu_item) + if (gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (child))) { /* * We have a menu which has a menu item selected @@ -308,7 +308,7 @@ gail_focus_watcher (GSignalInvocationHint *ihint, * plug will report a focus notification. */ if (GTK_IS_SOCKET (widget) && - GTK_SOCKET (widget)->plug_widget == NULL) + gtk_socket_get_plug_window (GTK_SOCKET (widget)) != NULL) return TRUE; /* * The widget may not yet be visible on the screen so we wait until it is. @@ -349,10 +349,12 @@ gail_finish_select (GtkWidget *widget) if (GTK_IS_MENU_ITEM (widget)) { GtkMenuItem* menu_item; + GtkWidget *submenu; menu_item = GTK_MENU_ITEM (widget); - if (menu_item->submenu && - !gtk_widget_get_mapped (menu_item->submenu)) + submenu = gtk_menu_item_get_submenu (menu_item); + if (submenu && + !gtk_widget_get_mapped (submenu)) { /* * If the submenu is not visble, wait until it is before @@ -360,7 +362,7 @@ gail_finish_select (GtkWidget *widget) */ gulong handler_id; - handler_id = g_signal_handler_find (menu_item->submenu, + handler_id = g_signal_handler_find (submenu, G_SIGNAL_MATCH_FUNC, g_signal_lookup ("map", GTK_TYPE_WINDOW), @@ -369,11 +371,10 @@ gail_finish_select (GtkWidget *widget) (gpointer) gail_map_submenu_cb, NULL); if (!handler_id) - g_signal_connect (menu_item->submenu, "map", + g_signal_connect (submenu, "map", G_CALLBACK (gail_map_submenu_cb), NULL); return; - } /* * If we are waiting to report focus on a menubar or a menu item @@ -422,8 +423,11 @@ gail_map_submenu_cb (GtkWidget *widget) { if (GTK_IS_MENU (widget)) { - if (GTK_MENU (widget)->parent_menu_item) - gail_finish_select (GTK_MENU (widget)->parent_menu_item); + GtkWidget *parent_menu_item; + + parent_menu_item = gtk_menu_get_attach_widget (GTK_MENU (widget)); + if (parent_menu_item) + gail_finish_select (parent_menu_item); } } @@ -454,12 +458,12 @@ gail_deselect_watcher (GSignalInvocationHint *ihint, { GtkWidget *parent_menu_shell; - parent_menu_shell = GTK_MENU_SHELL (menu_shell)->parent_menu_shell; + parent_menu_shell = gtk_menu_shell_get_parent_shell (GTK_MENU_SHELL (menu_shell)); if (parent_menu_shell) { GtkWidget *active_menu_item; - active_menu_item = GTK_MENU_SHELL (parent_menu_shell)->active_menu_item; + active_menu_item = gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (parent_menu_shell)); if (active_menu_item) { gail_focus_notify_when_idle (active_menu_item); @@ -661,7 +665,7 @@ gail_deactivate_watcher (GSignalInvocationHint *ihint, g_return_val_if_fail (GTK_IS_MENU_SHELL(widget), TRUE); shell = GTK_MENU_SHELL(widget); - if (!shell->parent_menu_shell) + if (! gtk_menu_shell_get_parent_shell (shell)) focus = focus_before_menu; /* diff --git a/modules/other/gail/gailadjustment.c b/modules/other/gail/gailadjustment.c index 0a5a9c0c80..58e19eac34 100644 --- a/modules/other/gail/gailadjustment.c +++ b/modules/other/gail/gailadjustment.c @@ -118,7 +118,7 @@ gail_adjustment_get_current_value (AtkValue *obj, return; } - current_value = adjustment->value; + current_value = gtk_adjustment_get_value (adjustment); memset (value, 0, sizeof (GValue)); g_value_init (value, G_TYPE_DOUBLE); g_value_set_double (value,current_value); @@ -138,7 +138,7 @@ gail_adjustment_get_maximum_value (AtkValue *obj, return; } - maximum_value = adjustment->upper; + maximum_value = gtk_adjustment_get_upper (adjustment); memset (value, 0, sizeof (GValue)); g_value_init (value, G_TYPE_DOUBLE); g_value_set_double (value, maximum_value); @@ -158,7 +158,7 @@ gail_adjustment_get_minimum_value (AtkValue *obj, return; } - minimum_value = adjustment->lower; + minimum_value = gtk_adjustment_get_lower (adjustment); memset (value, 0, sizeof (GValue)); g_value_init (value, G_TYPE_DOUBLE); g_value_set_double (value, minimum_value); @@ -178,26 +178,26 @@ gail_adjustment_get_minimum_increment (AtkValue *obj, return; } - if (adjustment->step_increment != 0 && - adjustment->page_increment != 0) + if (gtk_adjustment_get_step_increment (adjustment) != 0 && + gtk_adjustment_get_page_increment (adjustment) != 0) { - if (ABS (adjustment->step_increment) < ABS (adjustment->page_increment)) - minimum_increment = adjustment->step_increment; + if (ABS (gtk_adjustment_get_step_increment (adjustment)) < ABS (gtk_adjustment_get_page_increment (adjustment))) + minimum_increment = gtk_adjustment_get_step_increment (adjustment); else - minimum_increment = adjustment->page_increment; + minimum_increment = gtk_adjustment_get_page_increment (adjustment); } - else if (adjustment->step_increment == 0 && - adjustment->page_increment == 0) + else if (gtk_adjustment_get_step_increment (adjustment) == 0 && + gtk_adjustment_get_page_increment (adjustment) == 0) { minimum_increment = 0; } - else if (adjustment->step_increment == 0) + else if (gtk_adjustment_get_step_increment (adjustment) == 0) { - minimum_increment = adjustment->page_increment; + minimum_increment = gtk_adjustment_get_page_increment (adjustment); } else { - minimum_increment = adjustment->step_increment; + minimum_increment = gtk_adjustment_get_step_increment (adjustment); } memset (value, 0, sizeof (GValue)); diff --git a/modules/other/gail/gailbox.c b/modules/other/gail/gailbox.c index c4a045bc2b..f9d05b18df 100644 --- a/modules/other/gail/gailbox.c +++ b/modules/other/gail/gailbox.c @@ -26,7 +26,6 @@ static void gail_box_class_init (GailBoxClass *klass); static void gail_box_init (GailBox *box); static void gail_box_initialize (AtkObject *accessible, gpointer data); -static AtkStateSet* gail_box_ref_state_set (AtkObject *accessible); G_DEFINE_TYPE (GailBox, gail_box, GAIL_TYPE_CONTAINER) @@ -36,7 +35,6 @@ gail_box_class_init (GailBoxClass *klass) AtkObjectClass *class = ATK_OBJECT_CLASS (klass); class->initialize = gail_box_initialize; - class->ref_state_set = gail_box_ref_state_set; } static void @@ -52,23 +50,3 @@ gail_box_initialize (AtkObject *accessible, accessible->role = ATK_ROLE_FILLER; } - -static AtkStateSet* -gail_box_ref_state_set (AtkObject *accessible) -{ - AtkStateSet *state_set; - GtkWidget *widget; - - state_set = ATK_OBJECT_CLASS (gail_box_parent_class)->ref_state_set (accessible); - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); - - if (widget == NULL) - return state_set; - - if (GTK_IS_VBOX (widget) || GTK_IS_VBUTTON_BOX (widget)) - atk_state_set_add_state (state_set, ATK_STATE_VERTICAL); - else if (GTK_IS_HBOX (widget) || GTK_IS_HBUTTON_BOX (widget)) - atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL); - - return state_set; -} diff --git a/modules/other/gail/gailmenushell.c b/modules/other/gail/gailmenushell.c index b31fe5b5c9..7d87df5cb2 100644 --- a/modules/other/gail/gailmenushell.c +++ b/modules/other/gail/gailmenushell.c @@ -88,8 +88,8 @@ static gboolean gail_menu_shell_add_selection (AtkSelection *selection, gint i) { - GtkMenuShell *shell; - GList *item; + GList *kids; + GtkWidget *item; guint length; GtkWidget *widget; @@ -100,16 +100,18 @@ gail_menu_shell_add_selection (AtkSelection *selection, return FALSE; } - shell = GTK_MENU_SHELL (widget); - length = g_list_length (shell->children); + kids = gtk_container_get_children (GTK_CONTAINER (widget)); + length = g_list_length (kids); if (i < 0 || i > length) - return FALSE; + { + g_list_free (kids); + return FALSE; + } - item = g_list_nth (shell->children, i); - g_return_val_if_fail (item != NULL, FALSE); - g_return_val_if_fail (GTK_IS_MENU_ITEM(item->data), FALSE); - - gtk_menu_shell_select_item (shell, GTK_WIDGET (item->data)); + item = g_list_nth_data (kids, i); + g_list_free (kids); + g_return_val_if_fail (GTK_IS_MENU_ITEM(item), FALSE); + gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), item); return TRUE; } @@ -139,6 +141,7 @@ gail_menu_shell_ref_selection (AtkSelection *selection, GtkMenuShell *shell; AtkObject *obj; GtkWidget *widget; + GtkWidget *item; if (i != 0) return NULL; @@ -151,10 +154,11 @@ gail_menu_shell_ref_selection (AtkSelection *selection, } shell = GTK_MENU_SHELL (widget); - - if (shell->active_menu_item != NULL) + + item = gtk_menu_shell_get_selected_item (shell); + if (item != NULL) { - obj = gtk_widget_get_accessible (shell->active_menu_item); + obj = gtk_widget_get_accessible (item); g_object_ref (obj); return obj; } @@ -182,7 +186,7 @@ gail_menu_shell_get_selection_count (AtkSelection *selection) /* * Identifies the currently selected menu item */ - if (shell->active_menu_item == NULL) + if (gtk_menu_shell_get_selected_item (shell) == NULL) { return 0; } @@ -197,8 +201,10 @@ gail_menu_shell_is_child_selected (AtkSelection *selection, gint i) { GtkMenuShell *shell; + GList *kids; gint j; GtkWidget *widget; + GtkWidget *item; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) @@ -208,12 +214,15 @@ gail_menu_shell_is_child_selected (AtkSelection *selection, } shell = GTK_MENU_SHELL (widget); - if (shell->active_menu_item == NULL) + item = gtk_menu_shell_get_selected_item (shell); + if (item == NULL) return FALSE; - - j = g_list_index (shell->children, shell->active_menu_item); - return (j==i); + kids = gtk_container_get_children (GTK_CONTAINER (shell)); + j = g_list_index (kids, item); + g_list_free (kids); + + return (j==i); } static gboolean @@ -222,6 +231,7 @@ gail_menu_shell_remove_selection (AtkSelection *selection, { GtkMenuShell *shell; GtkWidget *widget; + GtkWidget *item; if (i != 0) return FALSE; @@ -235,8 +245,8 @@ gail_menu_shell_remove_selection (AtkSelection *selection, shell = GTK_MENU_SHELL (widget); - if (shell->active_menu_item && - GTK_MENU_ITEM (shell->active_menu_item)->submenu) + item = gtk_menu_shell_get_selected_item (shell); + if (item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (item))) { /* * Menu item contains a menu and it is the selected menu item diff --git a/modules/other/gail/gailpaned.c b/modules/other/gail/gailpaned.c index 1e1404bf14..7f91f13b05 100644 --- a/modules/other/gail/gailpaned.c +++ b/modules/other/gail/gailpaned.c @@ -31,9 +31,6 @@ static void gail_paned_real_initialize (AtkObject *obj, gpointer data); static void gail_paned_size_allocate_gtk (GtkWidget *widget, GtkAllocation *allocation); - -static AtkStateSet* gail_paned_ref_state_set (AtkObject *accessible); - static void atk_value_interface_init (AtkValueIface *iface); static void gail_paned_get_current_value (AtkValue *obj, GValue *value); @@ -52,7 +49,6 @@ gail_paned_class_init (GailPanedClass *klass) { AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - class->ref_state_set = gail_paned_ref_state_set; class->initialize = gail_paned_real_initialize; } @@ -61,26 +57,6 @@ gail_paned_init (GailPaned *paned) { } -static AtkStateSet* -gail_paned_ref_state_set (AtkObject *accessible) -{ - AtkStateSet *state_set; - GtkWidget *widget; - - state_set = ATK_OBJECT_CLASS (gail_paned_parent_class)->ref_state_set (accessible); - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); - - if (widget == NULL) - return state_set; - - if (GTK_IS_VPANED (widget)) - atk_state_set_add_state (state_set, ATK_STATE_VERTICAL); - else if (GTK_IS_HPANED (widget)) - atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL); - - return state_set; -} - static void gail_paned_real_initialize (AtkObject *obj, gpointer data) diff --git a/modules/other/gail/gailrange.c b/modules/other/gail/gailrange.c index 07b6d75f7f..d708567c7f 100644 --- a/modules/other/gail/gailrange.c +++ b/modules/other/gail/gailrange.c @@ -35,9 +35,6 @@ static void gail_range_real_initialize (AtkObject *obj, static void gail_range_finalize (GObject *object); -static AtkStateSet* gail_range_ref_state_set (AtkObject *obj); - - static void gail_range_real_notify_gtk (GObject *obj, GParamSpec *pspec); @@ -85,7 +82,6 @@ gail_range_class_init (GailRangeClass *klass) widget_class->notify_gtk = gail_range_real_notify_gtk; - class->ref_state_set = gail_range_ref_state_set; class->initialize = gail_range_real_initialize; gobject_class->finalize = gail_range_finalize; @@ -130,34 +126,7 @@ gail_range_real_initialize (AtkObject *obj, obj->role = ATK_ROLE_SLIDER; } -static AtkStateSet* -gail_range_ref_state_set (AtkObject *obj) -{ - AtkStateSet *state_set; - GtkWidget *widget; - GtkRange *range; - - state_set = ATK_OBJECT_CLASS (gail_range_parent_class)->ref_state_set (obj); - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); - - if (widget == NULL) - return state_set; - - range = GTK_RANGE (widget); - - /* - * We do not generate property change for orientation change as there - * is no interface to change the orientation which emits a notification - */ - if (gtk_orientable_get_orientation (GTK_ORIENTABLE (range)) == GTK_ORIENTATION_HORIZONTAL) - atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL); - else - atk_state_set_add_state (state_set, ATK_STATE_VERTICAL); - - return state_set; -} - -static void +static void atk_value_interface_init (AtkValueIface *iface) { iface->get_current_value = gail_range_get_current_value; @@ -167,7 +136,7 @@ atk_value_interface_init (AtkValueIface *iface) iface->set_current_value = gail_range_set_current_value; } -static void +static void gail_range_get_current_value (AtkValue *obj, GValue *value) { diff --git a/modules/other/gail/gailseparator.c b/modules/other/gail/gailseparator.c index 6aaa01017e..22e9146899 100644 --- a/modules/other/gail/gailseparator.c +++ b/modules/other/gail/gailseparator.c @@ -26,7 +26,6 @@ static void gail_separator_class_init (GailSeparatorClass *k static void gail_separator_init (GailSeparator *accessible); static void gail_separator_initialize (AtkObject *accessible, gpointer data); -static AtkStateSet* gail_separator_ref_state_set (AtkObject *accessible); G_DEFINE_TYPE (GailSeparator, gail_separator, GAIL_TYPE_WIDGET) @@ -36,7 +35,6 @@ gail_separator_class_init (GailSeparatorClass *klass) AtkObjectClass *class = ATK_OBJECT_CLASS (klass); class->initialize = gail_separator_initialize; - class->ref_state_set = gail_separator_ref_state_set; } static void @@ -52,23 +50,3 @@ gail_separator_initialize (AtkObject *accessible, accessible->role = ATK_ROLE_SEPARATOR; } - -static AtkStateSet* -gail_separator_ref_state_set (AtkObject *accessible) -{ - AtkStateSet *state_set; - GtkWidget *widget; - - state_set = ATK_OBJECT_CLASS (gail_separator_parent_class)->ref_state_set (accessible); - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); - - if (widget == NULL) - return state_set; - - if (GTK_IS_VSEPARATOR (widget)) - atk_state_set_add_state (state_set, ATK_STATE_VERTICAL); - else if (GTK_IS_HSEPARATOR (widget)) - atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL); - - return state_set; -} diff --git a/modules/other/gail/gailsubmenuitem.c b/modules/other/gail/gailsubmenuitem.c index a2fb23903b..a571f9801d 100644 --- a/modules/other/gail/gailsubmenuitem.c +++ b/modules/other/gail/gailsubmenuitem.c @@ -120,10 +120,11 @@ gail_sub_menu_item_add_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; - GList *item; + GList *kids; guint length; GtkWidget *widget; GtkWidget *submenu; + GtkWidget *child; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) @@ -133,15 +134,18 @@ gail_sub_menu_item_add_selection (AtkSelection *selection, submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE); shell = GTK_MENU_SHELL (submenu); - length = g_list_length (shell->children); + kids = gtk_container_get_children (GTK_CONTAINER (shell)); + length = g_list_length (kids); if (i < 0 || i > length) - return FALSE; + { + g_list_free (kids); + return FALSE; + } - item = g_list_nth (shell->children, i); - g_return_val_if_fail (item != NULL, FALSE); - g_return_val_if_fail (GTK_IS_MENU_ITEM(item->data), FALSE); - - gtk_menu_shell_select_item (shell, GTK_WIDGET (item->data)); + child = g_list_nth_data (kids, i); + g_list_free (kids); + g_return_val_if_fail (GTK_IS_MENU_ITEM(child), FALSE); + gtk_menu_shell_select_item (shell, GTK_WIDGET (child)); return TRUE; } @@ -173,6 +177,7 @@ gail_sub_menu_item_ref_selection (AtkSelection *selection, AtkObject *obj; GtkWidget *widget; GtkWidget *submenu; + GtkWidget *item; if (i != 0) return NULL; @@ -185,10 +190,11 @@ gail_sub_menu_item_ref_selection (AtkSelection *selection, submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), NULL); shell = GTK_MENU_SHELL (submenu); - - if (shell->active_menu_item != NULL) + + item = gtk_menu_shell_get_selected_item (shell); + if (item != NULL) { - obj = gtk_widget_get_accessible (shell->active_menu_item); + obj = gtk_widget_get_accessible (item); g_object_ref (obj); return obj; } @@ -217,7 +223,7 @@ gail_sub_menu_item_get_selection_count (AtkSelection *selection) /* * Identifies the currently selected menu item */ - if (shell->active_menu_item == NULL) + if (gtk_menu_shell_get_selected_item (shell) == NULL) return 0; else return 1; @@ -231,6 +237,8 @@ gail_sub_menu_item_is_child_selected (AtkSelection *selection, gint j; GtkWidget *widget; GtkWidget *submenu; + GtkWidget *item; + GList *kids; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) @@ -241,12 +249,15 @@ gail_sub_menu_item_is_child_selected (AtkSelection *selection, g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE); shell = GTK_MENU_SHELL (submenu); - if (shell->active_menu_item == NULL) + item = gtk_menu_shell_get_selected_item (shell); + if (item == NULL) return FALSE; - - j = g_list_index (shell->children, shell->active_menu_item); - return (j==i); + kids = gtk_container_get_children (GTK_CONTAINER (shell)); + j = g_list_index (kids, item); + g_list_free (kids); + + return (j==i); } static gboolean @@ -256,6 +267,7 @@ gail_sub_menu_item_remove_selection (AtkSelection *selection, GtkMenuShell *shell; GtkWidget *widget; GtkWidget *submenu; + GtkWidget *item; if (i != 0) return FALSE; @@ -269,8 +281,8 @@ gail_sub_menu_item_remove_selection (AtkSelection *selection, g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE); shell = GTK_MENU_SHELL (submenu); - if (shell->active_menu_item && - GTK_MENU_ITEM (shell->active_menu_item)->submenu) + item = gtk_menu_shell_get_selected_item (shell); + if (item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (item))) { /* * Menu item contains a menu and it is the selected menu item diff --git a/modules/other/gail/gailtextview.c b/modules/other/gail/gailtextview.c index 873509cb5d..00b45b0aa2 100644 --- a/modules/other/gail/gailtextview.c +++ b/modules/other/gail/gailtextview.c @@ -640,6 +640,16 @@ gail_text_view_get_run_attributes (AtkText *text, start_offset, end_offset); } +static AtkAttributeSet* +add_text_attribute (AtkAttributeSet *attrib_set, AtkTextAttribute attr, gint i) +{ + const gchar *value; + + value = atk_text_attribute_get_value (attr, i); + + return gail_misc_add_attribute (attrib_set, i, g_strdup (value)); +} + static AtkAttributeSet* gail_text_view_get_default_attributes (AtkText *text) { @@ -648,6 +658,7 @@ gail_text_view_get_default_attributes (AtkText *text) GtkTextAttributes *text_attrs; AtkAttributeSet *attrib_set = NULL; PangoFontDescription *font; + gchar *value; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) @@ -661,96 +672,75 @@ gail_text_view_get_default_attributes (AtkText *text) if (font) { - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_STYLE); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_STYLE, + pango_font_description_get_style (font)); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_VARIANT); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_VARIANT, + pango_font_description_get_variant (font)); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_STRETCH); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_STRETCH, + pango_font_description_get_stretch (font)); + + value = g_strdup (pango_font_description_get_family (font)); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FAMILY_NAME, value); + + value = g_strdup_printf ("%d", pango_font_description_get_weight (font)); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_WEIGHT, value); + + value = g_strdup_printf ("%i", pango_font_description_get_size (font) / PANGO_SCALE); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_SIZE, value); } - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_JUSTIFICATION); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_JUSTIFICATION, text_attrs->justification); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_DIRECTION, text_attrs->direction); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_WRAP_MODE, text_attrs->wrap_mode); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_EDITABLE, text_attrs->editable); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_INVISIBLE, text_attrs->invisible); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_BG_FULL_HEIGHT, text_attrs->bg_full_height); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_DIRECTION); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_STRIKETHROUGH, + text_attrs->appearance.strikethrough); + attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_UNDERLINE, + text_attrs->appearance.underline); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_WRAP_MODE); + value = g_strdup_printf ("%u,%u,%u", + text_attrs->appearance.bg_color.red, + text_attrs->appearance.bg_color.green, + text_attrs->appearance.bg_color.blue); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_BG_COLOR, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_FG_STIPPLE); + value = g_strdup_printf ("%u,%u,%u", + text_attrs->appearance.fg_color.red, + text_attrs->appearance.fg_color.green, + text_attrs->appearance.fg_color.blue); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FG_COLOR, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_BG_STIPPLE); + value = g_strdup_printf ("%g", text_attrs->font_scale); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_SCALE, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_FG_COLOR); + value = g_strdup ((gchar *)(text_attrs->language)); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LANGUAGE, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_BG_COLOR); + value = g_strdup_printf ("%i", text_attrs->appearance.rise); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RISE, value); - if (font) - { - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_FAMILY_NAME); - } + value = g_strdup_printf ("%i", text_attrs->pixels_inside_wrap); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_LANGUAGE); + value = g_strdup_printf ("%i", text_attrs->pixels_below_lines); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value); - if (font) - { - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_WEIGHT); - } + value = g_strdup_printf ("%i", text_attrs->pixels_above_lines); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_SCALE); + value = g_strdup_printf ("%i", text_attrs->indent); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_INDENT, value); - if (font) - { - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_SIZE); - } + value = g_strdup_printf ("%i", text_attrs->left_margin); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LEFT_MARGIN, value); - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_STRIKETHROUGH); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_UNDERLINE); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_RISE); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_BG_FULL_HEIGHT); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_PIXELS_BELOW_LINES); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_PIXELS_ABOVE_LINES); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_EDITABLE); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_INVISIBLE); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_INDENT); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_RIGHT_MARGIN); - - attrib_set = gail_misc_add_to_attr_set (attrib_set, text_attrs, - ATK_TEXT_ATTR_LEFT_MARGIN); + value = g_strdup_printf ("%i", text_attrs->right_margin); + attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RIGHT_MARGIN, value); gtk_text_attributes_unref (text_attrs); return attrib_set; diff --git a/modules/other/gail/gailtoplevel.c b/modules/other/gail/gailtoplevel.c index 6205a42ea3..83a8583a42 100644 --- a/modules/other/gail/gailtoplevel.c +++ b/modules/other/gail/gailtoplevel.c @@ -220,13 +220,7 @@ gail_toplevel_show_event_watcher (GSignalInvocationHint *ihint, return TRUE; child = gtk_widget_get_accessible (widget); - if (!strcmp (atk_role_get_name (atk_object_get_role (child)), "redundant object")) - { - return TRUE; - } - - child = gtk_widget_get_accessible (widget); - if (!strcmp (atk_role_get_name (atk_object_get_role (child)), "redundant object")) + if (atk_object_get_role (child) == ATK_ROLE_REDUNDANT_OBJECT) { return TRUE; } @@ -235,21 +229,23 @@ gail_toplevel_show_event_watcher (GSignalInvocationHint *ihint, * Add the window to the list & emit the signal. * Don't do this for tooltips (Bug #150649). */ - if (atk_object_get_role (child) != ATK_ROLE_TOOL_TIP) - { - toplevel->window_list = g_list_append (toplevel->window_list, widget); + if (atk_object_get_role (child) == ATK_ROLE_TOOL_TIP) + { + return TRUE; + } - n_children = g_list_length (toplevel->window_list); + toplevel->window_list = g_list_append (toplevel->window_list, widget); - /* - * Must subtract 1 from the n_children since the index is 0-based - * but g_list_length is 1-based. - */ - atk_object_set_parent (child, atk_obj); - g_signal_emit_by_name (atk_obj, "children-changed::add", - n_children - 1, - child, NULL); - } + n_children = g_list_length (toplevel->window_list); + + /* + * Must subtract 1 from the n_children since the index is 0-based + * but g_list_length is 1-based. + */ + atk_object_set_parent (child, atk_obj); + g_signal_emit_by_name (atk_obj, "children-changed::add", + n_children - 1, + child, NULL); /* Connect destroy signal callback */ g_signal_connect (G_OBJECT(object), diff --git a/modules/other/gail/gailtreeview.c b/modules/other/gail/gailtreeview.c index 60de100e3a..29c5fac86b 100644 --- a/modules/other/gail/gailtreeview.c +++ b/modules/other/gail/gailtreeview.c @@ -1391,7 +1391,7 @@ gail_tree_view_get_selected_rows (AtkTable *table, selection = gtk_tree_view_get_selection (tree_view); - switch (selection->type) + switch (gtk_tree_selection_get_mode (selection)) { case GTK_SELECTION_SINGLE: case GTK_SELECTION_BROWSE: @@ -4651,7 +4651,7 @@ get_header_from_column (GtkTreeViewColumn *tv_col) /* If the user has not set a header object, grab the column */ /* header object defined by the GtkTreeView */ - header_widget = tv_col->button; + header_widget = gtk_tree_view_column_get_button (tv_col); if (header_widget) { diff --git a/modules/other/gail/gailwidget.c b/modules/other/gail/gailwidget.c index 89a27db97c..08ce42955f 100644 --- a/modules/other/gail/gailwidget.c +++ b/modules/other/gail/gailwidget.c @@ -102,6 +102,7 @@ static void gail_widget_focus_event (AtkObject *obj, static void gail_widget_real_initialize (AtkObject *obj, gpointer data); +static char *gail_widget_get_attributes(AtkObject *obj); static GtkWidget* gail_widget_find_viewport (GtkWidget *widget); static gboolean gail_widget_on_screen (GtkWidget *widget); static gboolean gail_widget_all_parents_visible(GtkWidget *widget); @@ -126,6 +127,7 @@ gail_widget_class_init (GailWidgetClass *klass) class->ref_state_set = gail_widget_ref_state_set; class->get_index_in_parent = gail_widget_get_index_in_parent; class->initialize = gail_widget_real_initialize; + class->get_attributes = gail_widget_get_attributes; } static void @@ -511,6 +513,18 @@ gail_widget_ref_state_set (AtkObject *accessible) { atk_state_set_add_state (state_set, ATK_STATE_DEFAULT); } + + if (GTK_IS_ORIENTABLE(widget)) + switch (gtk_orientable_get_orientation (GTK_ORIENTABLE (widget))) + { + case GTK_ORIENTATION_HORIZONTAL: + atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL); + break; + + case GTK_ORIENTATION_VERTICAL: + atk_state_set_add_state (state_set, ATK_STATE_VERTICAL); + break; + } } return state_set; } @@ -976,6 +990,15 @@ gail_widget_real_notify_gtk (GObject *obj, state = ATK_STATE_SENSITIVE; value = gtk_widget_get_sensitive (widget); } + else if (strcmp (pspec->name, "orientation") == 0) + { + GtkOrientable *orientable; + + orientable = GTK_ORIENTABLE (widget); + + state = ATK_STATE_HORIZONTAL; + value = (gtk_orientable_get_orientation (orientable) == GTK_ORIENTATION_HORIZONTAL); + } else return; @@ -983,6 +1006,8 @@ gail_widget_real_notify_gtk (GObject *obj, if (state == ATK_STATE_SENSITIVE) atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, value); + if (state == ATK_STATE_HORIZONTAL) + atk_object_notify_state_change (atk_obj, ATK_STATE_VERTICAL, !value); } static void @@ -1038,9 +1063,9 @@ static gboolean gail_widget_on_screen (GtkWidget *widget) gtk_widget_get_allocation (viewport, &viewport_allocation); adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (viewport)); - visible_rect.y = adjustment->value; + visible_rect.y = gtk_adjustment_get_value (adjustment); adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (viewport)); - visible_rect.x = adjustment->value; + visible_rect.x = gtk_adjustment_get_value (adjustment); visible_rect.width = viewport_allocation.width; visible_rect.height = viewport_allocation.height; @@ -1094,3 +1119,16 @@ static gboolean gail_widget_all_parents_visible (GtkWidget *widget) return result; } + +static char *gail_widget_get_attributes(AtkObject *obj) +{ + AtkAttributeSet *attributes; + AtkAttribute *toolkit = g_malloc(sizeof(AtkAttribute)); + + toolkit->name = g_strdup("toolkit"); + toolkit->value = g_strdup("gail"); + +attributes = g_slist_append(NULL, toolkit); + +return attributes; +} diff --git a/modules/other/gail/libgail-util/Makefile.am b/modules/other/gail/libgail-util/Makefile.am index 37e3b2de96..43765d417f 100644 --- a/modules/other/gail/libgail-util/Makefile.am +++ b/modules/other/gail/libgail-util/Makefile.am @@ -64,8 +64,8 @@ libgailutil_3_0_la_CFLAGS = \ $(AM_CFLAGS) libgailutil_3_0_la_LIBADD = \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) libgailutil_3_0_la_LDFLAGS = \ diff --git a/modules/other/gail/libgail-util/gailmisc.c b/modules/other/gail/libgail-util/gailmisc.c index a70a4f0109..7b9cfb5de2 100644 --- a/modules/other/gail/libgail-util/gailmisc.c +++ b/modules/other/gail/libgail-util/gailmisc.c @@ -19,6 +19,7 @@ #include "config.h" +#include #include #include #include "gailmisc.h" @@ -373,9 +374,11 @@ gail_misc_get_default_attributes (AtkAttributeSet *attrib_set, GtkWidget *widget) { PangoContext *context; - GtkStyle *style_value; + GtkStyleContext *style_context; gint int_value; PangoWrapMode mode; + GdkRGBA color; + gchar *value; attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_DIRECTION, @@ -453,25 +456,26 @@ gail_misc_get_default_attributes (AtkAttributeSet *attrib_set, g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_WRAP_MODE, int_value))); - style_value = gtk_widget_get_style (widget); - if (style_value) - { - GdkColor color; - gchar *value; + style_context = gtk_widget_get_style_context (widget); + + gtk_style_context_get_background_color (style_context, 0, &color); + value = g_strdup_printf ("%u,%u,%u", + (guint) ceil (color.red * 65536 - color.red), + (guint) ceil (color.green * 65536 - color.green), + (guint) ceil (color.blue * 65536 - color.blue)); + attrib_set = gail_misc_add_attribute (attrib_set, + ATK_TEXT_ATTR_BG_COLOR, + value); + + gtk_style_context_get_color (style_context, 0, &color); + value = g_strdup_printf ("%u,%u,%u", + (guint) ceil (color.red * 65536 - color.red), + (guint) ceil (color.green * 65536 - color.green), + (guint) ceil (color.blue * 65536 - color.blue)); + attrib_set = gail_misc_add_attribute (attrib_set, + ATK_TEXT_ATTR_FG_COLOR, + value); - color = style_value->base[GTK_STATE_NORMAL]; - value = g_strdup_printf ("%u,%u,%u", - color.red, color.green, color.blue); - attrib_set = gail_misc_add_attribute (attrib_set, - ATK_TEXT_ATTR_BG_COLOR, - value); - color = style_value->text[GTK_STATE_NORMAL]; - value = g_strdup_printf ("%u,%u,%u", - color.red, color.green, color.blue); - attrib_set = gail_misc_add_attribute (attrib_set, - ATK_TEXT_ATTR_FG_COLOR, - value); - } attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FG_STIPPLE, g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_FG_STIPPLE, @@ -556,119 +560,6 @@ gail_misc_get_origins (GtkWidget *widget, gdk_window_get_origin (window, x_toplevel, y_toplevel); } -/** - * gail_misc_add_to_attr_set: - * @attrib_set: An #AtkAttributeSet - * @attrs: The #GtkTextAttributes containing the attribute value - * @attr: The #AtkTextAttribute to be added - * - * Gets the value for the AtkTextAttribute from the GtkTextAttributes - * and adds it to the AttributeSet. - * - * Returns: A pointer to the updated #AtkAttributeSet. - **/ -AtkAttributeSet* -gail_misc_add_to_attr_set (AtkAttributeSet *attrib_set, - GtkTextAttributes *attrs, - AtkTextAttribute attr) -{ - gchar *value; - - switch (attr) - { - case ATK_TEXT_ATTR_LEFT_MARGIN: - value = g_strdup_printf ("%i", attrs->left_margin); - break; - case ATK_TEXT_ATTR_RIGHT_MARGIN: - value = g_strdup_printf ("%i", attrs->right_margin); - break; - case ATK_TEXT_ATTR_INDENT: - value = g_strdup_printf ("%i", attrs->indent); - break; - case ATK_TEXT_ATTR_INVISIBLE: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->invisible)); - break; - case ATK_TEXT_ATTR_EDITABLE: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->editable)); - break; - case ATK_TEXT_ATTR_PIXELS_ABOVE_LINES: - value = g_strdup_printf ("%i", attrs->pixels_above_lines); - break; - case ATK_TEXT_ATTR_PIXELS_BELOW_LINES: - value = g_strdup_printf ("%i", attrs->pixels_below_lines); - break; - case ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP: - value = g_strdup_printf ("%i", attrs->pixels_inside_wrap); - break; - case ATK_TEXT_ATTR_BG_FULL_HEIGHT: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->bg_full_height)); - break; - case ATK_TEXT_ATTR_RISE: - value = g_strdup_printf ("%i", attrs->appearance.rise); - break; - case ATK_TEXT_ATTR_UNDERLINE: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->appearance.underline)); - break; - case ATK_TEXT_ATTR_STRIKETHROUGH: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->appearance.strikethrough)); - break; - case ATK_TEXT_ATTR_SIZE: - value = g_strdup_printf ("%i", - pango_font_description_get_size (attrs->font) / PANGO_SCALE); - break; - case ATK_TEXT_ATTR_SCALE: - value = g_strdup_printf ("%g", attrs->font_scale); - break; - case ATK_TEXT_ATTR_WEIGHT: - value = g_strdup_printf ("%d", - pango_font_description_get_weight (attrs->font)); - break; - case ATK_TEXT_ATTR_LANGUAGE: - value = g_strdup ((gchar *)(attrs->language)); - break; - case ATK_TEXT_ATTR_FAMILY_NAME: - value = g_strdup (pango_font_description_get_family (attrs->font)); - break; - case ATK_TEXT_ATTR_BG_COLOR: - value = g_strdup_printf ("%u,%u,%u", - attrs->appearance.bg_color.red, - attrs->appearance.bg_color.green, - attrs->appearance.bg_color.blue); - break; - case ATK_TEXT_ATTR_FG_COLOR: - value = g_strdup_printf ("%u,%u,%u", - attrs->appearance.fg_color.red, - attrs->appearance.fg_color.green, - attrs->appearance.fg_color.blue); - break; - case ATK_TEXT_ATTR_WRAP_MODE: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->wrap_mode)); - break; - case ATK_TEXT_ATTR_DIRECTION: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->direction)); - break; - case ATK_TEXT_ATTR_JUSTIFICATION: - value = g_strdup (atk_text_attribute_get_value (attr, attrs->justification)); - break; - case ATK_TEXT_ATTR_STRETCH: - value = g_strdup (atk_text_attribute_get_value (attr, - pango_font_description_get_stretch (attrs->font))); - break; - case ATK_TEXT_ATTR_VARIANT: - value = g_strdup (atk_text_attribute_get_value (attr, - pango_font_description_get_variant (attrs->font))); - break; - case ATK_TEXT_ATTR_STYLE: - value = g_strdup (atk_text_attribute_get_value (attr, - pango_font_description_get_style (attrs->font))); - break; - default: - value = NULL; - break; - } - return gail_misc_add_attribute (attrib_set, attr, value); -} - /** * gail_misc_buffer_get_run_attributes: * @buffer: The #GtkTextBuffer for which the attributes will be obtained @@ -693,7 +584,6 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, GSList *tags, *temp_tags; gdouble scale = 1; gboolean val_set = FALSE; - PangoFontMask mask; gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset); @@ -712,71 +602,17 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, while (temp_tags && !val_set) { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - font = tag->values->font; - - if (font) - { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_STYLE; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_STYLE); - } - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - - font = tag->values->font; - - if (font) - { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_VARIANT; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_VARIANT); - } - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - - font = tag->values->font; - - if (font) - { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_STRETCH; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_STRETCH); - } - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - - val_set = tag->justification_set; + g_object_get (tag, "style-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_JUSTIFICATION); + { + PangoStyle style; + gchar *value; + + g_object_get (tag, "style", &style, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STYLE, style)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STYLE, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -786,11 +622,72 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - if (tag->values->direction != GTK_TEXT_DIR_NONE) + g_object_get (tag, "variant-set", &val_set, NULL); + if (val_set) { + PangoVariant variant; + gchar *value; + + g_object_get (tag, "variant", &variant, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_VARIANT, variant)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_VARIANT, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + + g_object_get (tag, "stretch-set", &val_set, NULL); + if (val_set) + { + PangoStretch stretch; + gchar *value; + + g_object_get (tag, "stretch", &stretch, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STRETCH, stretch)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STRETCH, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + + g_object_get (tag, "justification-set", &val_set, NULL); + if (val_set) + { + GtkJustification justification; + gchar *value; + + g_object_get (tag, "justification", &justification, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, justification)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_JUSTIFICATION, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + GtkTextDirection direction; + + g_object_get (tag, "direction", &direction, NULL); + + if (direction != GTK_TEXT_DIR_NONE) + { + gchar *value; val_set = TRUE; - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_DIRECTION); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, direction)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_DIRECTION, value); } temp_tags = temp_tags->next; } @@ -801,55 +698,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->wrap_mode_set; + g_object_get (tag, "wrap-mode-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_WRAP_MODE); - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - - val_set = tag->fg_color_set; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_FG_COLOR); - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - - val_set = tag->bg_color_set; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_BG_COLOR); - temp_tags = temp_tags->next; - } - val_set = FALSE; - - temp_tags = tags; - while (temp_tags && !val_set) - { - GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - - font = tag->values->font; - - if (font) { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_FAMILY; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_FAMILY_NAME); + GtkWrapMode wrap_mode; + gchar *value; + + g_object_get (tag, "wrap-mode", &wrap_mode, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_WRAP_MODE, wrap_mode)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_WRAP_MODE, value); } temp_tags = temp_tags->next; } @@ -860,10 +717,16 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->language_set; + g_object_get (tag, "foreground-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_LANGUAGE); + { + GdkColor c; + gchar *value; + + g_object_get (tag, "foreground-gdk", &c, NULL); + value = g_strdup_printf ("%u,%u,%u", c.red, c.green, c.blue); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FG_COLOR, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -872,17 +735,70 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, while (temp_tags && !val_set) { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - font = tag->values->font; - - if (font) + g_object_get (tag, "background-set", &val_set, NULL); + if (val_set) { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_WEIGHT; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_WEIGHT); + GdkColor c; + gchar *value; + + g_object_get (tag, "background-gdk", &c, NULL); + value = g_strdup_printf ("%u,%u,%u", c.red, c.green, c.blue); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_BG_COLOR, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + + g_object_get (tag, "family-set", &val_set, NULL); + + if (val_set) + { + gchar *value; + g_object_get (tag, "family", &value, NULL); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FAMILY_NAME, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + + g_object_get (tag, "language-set", &val_set, NULL); + + if (val_set) + { + gchar *value; + g_object_get (tag, "language", &value, NULL); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LANGUAGE, value); + } + temp_tags = temp_tags->next; + } + val_set = FALSE; + + temp_tags = tags; + while (temp_tags && !val_set) + { + GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + + g_object_get (tag, "weight-set", &val_set, NULL); + + if (val_set) + { + gint weight; + gchar *value; + + g_object_get (tag, "weight", &weight, NULL); + value = g_strdup_printf ("%d", weight); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_WEIGHT, value); } temp_tags = temp_tags->next; } @@ -897,11 +813,16 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, while (temp_tags) { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); + gboolean scale_set; - if (tag->scale_set) + g_object_get (tag, "scale-set", &scale_set, NULL); + if (scale_set) { + gdouble font_scale; + + g_object_get (tag, "scale", &font_scale, NULL); val_set = TRUE; - scale *= tag->values->font_scale; + scale *= font_scale; } temp_tags = temp_tags->next; } @@ -918,17 +839,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, while (temp_tags && !val_set) { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - PangoFontDescription *font; - font = tag->values->font; - - if (font) + g_object_get (tag, "size-set", &val_set, NULL); + if (val_set) { - mask = pango_font_description_get_set_fields (font); - val_set = mask & PANGO_FONT_MASK_SIZE; - if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_SIZE); + gint size; + gchar *value; + g_object_get (tag, "size", &size, NULL); + value = g_strdup_printf ("%i", size); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_SIZE, value); } temp_tags = temp_tags->next; } @@ -939,10 +858,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->strikethrough_set; + g_object_get (tag, "strikethrough-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_STRIKETHROUGH); + { + gboolean strikethrough; + gchar *value; + g_object_get (tag, "strikethrough", &strikethrough, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STRIKETHROUGH, strikethrough)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STRIKETHROUGH, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -952,10 +876,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->underline_set; + g_object_get (tag, "underline-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_UNDERLINE); + { + PangoUnderline underline; + gchar *value; + g_object_get (tag, "underline", &underline, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_UNDERLINE, underline)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_UNDERLINE, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -965,10 +894,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->rise_set; + g_object_get (tag, "rise-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_RISE); + { + gint rise; + gchar *value; + g_object_get (tag, "rise", &rise, NULL); + value = g_strdup_printf ("%i", rise); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RISE, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -978,10 +912,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->bg_full_height_set; + g_object_get (tag, "background-full-height-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_BG_FULL_HEIGHT); + { + gboolean bg_full_height; + gchar *value; + g_object_get (tag, "background-full-height", &bg_full_height, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_BG_FULL_HEIGHT, bg_full_height)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_BG_FULL_HEIGHT, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -991,10 +930,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->pixels_inside_wrap_set; + g_object_get (tag, "pixels-inside-wrap-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP); + { + gint pixels; + gchar *value; + g_object_get (tag, "pixels-inside-wrap", &pixels, NULL); + value = g_strdup_printf ("%i", pixels); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1004,10 +948,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->pixels_below_lines_set; + g_object_get (tag, "pixels-below-lines-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_PIXELS_BELOW_LINES); + { + gint pixels; + gchar *value; + g_object_get (tag, "pixels-below-lines", &pixels, NULL); + value = g_strdup_printf ("%i", pixels); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1017,10 +966,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->pixels_above_lines_set; + g_object_get (tag, "pixels-above-lines-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_PIXELS_ABOVE_LINES); + { + gint pixels; + gchar *value; + g_object_get (tag, "pixels-above-lines", &pixels, NULL); + value = g_strdup_printf ("%i", pixels); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1030,10 +984,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->editable_set; + g_object_get (tag, "editable-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_EDITABLE); + { + gboolean editable; + gchar *value; + g_object_get (tag, "editable", &editable, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_EDITABLE, editable)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_EDITABLE, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1043,10 +1002,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->invisible_set; + g_object_get (tag, "invisible-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_INVISIBLE); + { + gboolean invisible; + gchar *value; + g_object_get (tag, "invisible", &invisible, NULL); + value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_INVISIBLE, invisible)); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_INVISIBLE, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1056,10 +1020,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->indent_set; + g_object_get (tag, "indent-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_INDENT); + { + gint indent; + gchar *value; + g_object_get (tag, "indent", &indent, NULL); + value = g_strdup_printf ("%i", indent); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_INDENT, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1069,10 +1038,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->right_margin_set; + g_object_get (tag, "right-margin-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_RIGHT_MARGIN); + { + gint margin; + gchar *value; + g_object_get (tag, "right-margin", &margin, NULL); + value = g_strdup_printf ("%i", margin); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RIGHT_MARGIN, value); + } temp_tags = temp_tags->next; } val_set = FALSE; @@ -1082,10 +1056,15 @@ gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, { GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data); - val_set = tag->left_margin_set; + g_object_get (tag, "left-margin-set", &val_set, NULL); if (val_set) - attrib_set = gail_misc_add_to_attr_set (attrib_set, tag->values, - ATK_TEXT_ATTR_LEFT_MARGIN); + { + gint margin; + gchar *value; + g_object_get (tag, "left-margin", &margin, NULL); + value = g_strdup_printf ("%i", margin); + gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LEFT_MARGIN, value); + } temp_tags = temp_tags->next; } val_set = FALSE; diff --git a/modules/other/gail/libgail-util/gailmisc.h b/modules/other/gail/libgail-util/gailmisc.h index f430b3c334..9483755c7b 100644 --- a/modules/other/gail/libgail-util/gailmisc.h +++ b/modules/other/gail/libgail-util/gailmisc.h @@ -67,10 +67,6 @@ void gail_misc_get_origins (GtkWidget *widget, gint *x_toplevel, gint *y_toplevel); -AtkAttributeSet* gail_misc_add_to_attr_set (AtkAttributeSet *attrib_set, - GtkTextAttributes *attrs, - AtkTextAttribute attr); - AtkAttributeSet* gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer, gint offset, diff --git a/modules/other/gail/libgail-util/gailutil.def b/modules/other/gail/libgail-util/gailutil.def index 2077be15f4..5c74915cb1 100644 --- a/modules/other/gail/libgail-util/gailutil.def +++ b/modules/other/gail/libgail-util/gailutil.def @@ -1,6 +1,5 @@ EXPORTS gail_misc_add_attribute - gail_misc_add_to_attr_set gail_misc_buffer_get_run_attributes gail_misc_get_default_attributes gail_misc_get_extents_from_pango_rectangle diff --git a/modules/other/gail/tests/Makefile.am b/modules/other/gail/tests/Makefile.am index fdafe787b0..9f94b2ba2e 100644 --- a/modules/other/gail/tests/Makefile.am +++ b/modules/other/gail/tests/Makefile.am @@ -56,7 +56,7 @@ libferret_la_LDFLAGS = \ $(LDFLAGS) libferret_la_LIBADD = \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) \ $(GAIL_INET_LIBS) endif @@ -66,8 +66,8 @@ libtestaction_la_SOURCES = \ libtestaction_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -78,8 +78,8 @@ libtestbutton_la_SOURCES = \ libtestbutton_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -90,8 +90,8 @@ libtestcombo_la_SOURCES = \ libtestcombo_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -100,8 +100,8 @@ libtestcomponent_la_SOURCES = \ libtestcomponent_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -110,8 +110,8 @@ libtestimage_la_SOURCES = \ libtestimage_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -122,8 +122,8 @@ libtestmenuitem_la_SOURCES = \ libtestmenuitem_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -134,8 +134,8 @@ libtestnotebook_la_SOURCES = \ libtestnotebook_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -146,8 +146,8 @@ libtestobject_la_SOURCES = \ libtestobject_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -158,8 +158,8 @@ libtestpaned_la_SOURCES = \ libtestpaned_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -170,8 +170,8 @@ libtestprops_la_SOURCES = \ libtestprops_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -180,8 +180,8 @@ libtestselection_la_SOURCES = \ libtestselection_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -190,8 +190,8 @@ libteststatusbar_la_SOURCES = \ libteststatusbar_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -204,8 +204,8 @@ libtesttable_la_SOURCES = \ libtesttable_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -218,8 +218,8 @@ libtesttext_la_SOURCES = \ libtesttext_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -230,8 +230,8 @@ libtesttoplevel_la_SOURCES = \ libtesttoplevel_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -242,8 +242,8 @@ libtesttreetable_la_SOURCES = \ libtesttreetable_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) @@ -252,8 +252,8 @@ libtestvalues_la_SOURCES = \ libtestvalues_la_LDFLAGS = \ -rpath $(moduledir) -module -avoid-version $(no_undefined) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) \ $(LDFLAGS) diff --git a/modules/printbackends/cups/Makefile.am b/modules/printbackends/cups/Makefile.am index de4d77477d..54feaac16a 100644 --- a/modules/printbackends/cups/Makefile.am +++ b/modules/printbackends/cups/Makefile.am @@ -16,8 +16,7 @@ INCLUDES = \ $(GTK_DEBUG_FLAGS) LDADDS = \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) backenddir = $(libdir)/gtk-3.0/$(GTK_BINARY_VERSION)/printbackends diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c index 1b83e32e61..5bb14eb9f4 100644 --- a/modules/printbackends/cups/gtkprintbackendcups.c +++ b/modules/printbackends/cups/gtkprintbackendcups.c @@ -333,18 +333,19 @@ cups_printer_create_cairo_surface (GtkPrinter *printer, gdouble height, GIOChannel *cache_io) { - cairo_surface_t *surface; + cairo_surface_t *surface; ppd_file_t *ppd_file = NULL; ppd_attr_t *ppd_attr = NULL; ppd_attr_t *ppd_attr_res = NULL; ppd_attr_t *ppd_attr_screen_freq = NULL; ppd_attr_t *ppd_attr_res_screen_freq = NULL; gchar *res_string = NULL; - int level = 2; - - /* TODO: check if it is a ps or pdf printer */ - - surface = cairo_ps_surface_create_for_stream (_cairo_write_to_cups, cache_io, width, height); + gint level = 2; + + if (gtk_printer_accepts_pdf (printer)) + surface = cairo_pdf_surface_create_for_stream (_cairo_write_to_cups, cache_io, width, height); + else + surface = cairo_ps_surface_create_for_stream (_cairo_write_to_cups, cache_io, width, height); ppd_file = gtk_printer_cups_get_ppd (GTK_PRINTER_CUPS (printer)); @@ -376,14 +377,14 @@ cups_printer_create_cairo_surface (GtkPrinter *printer, } } - res_string = g_strdup_printf ("%ddpi", + res_string = g_strdup_printf ("%ddpi", gtk_print_settings_get_resolution (settings)); ppd_attr_res_screen_freq = ppdFindAttr (ppd_file, "ResScreenFreq", res_string); g_free (res_string); if (ppd_attr_res_screen_freq == NULL) { - res_string = g_strdup_printf ("%dx%ddpi", + res_string = g_strdup_printf ("%dx%ddpi", gtk_print_settings_get_resolution_x (settings), gtk_print_settings_get_resolution_y (settings)); ppd_attr_res_screen_freq = ppdFindAttr (ppd_file, "ResScreenFreq", res_string); @@ -398,11 +399,14 @@ cups_printer_create_cairo_surface (GtkPrinter *printer, gtk_print_settings_set_printer_lpi (settings, atof (ppd_attr_screen_freq->value)); } - if (level == 2) - cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2); + if (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_PS) + { + if (level == 2) + cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2); - if (level == 3) - cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_3); + if (level == 3) + cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_3); + } cairo_surface_set_fallback_resolution (surface, 2.0 * gtk_print_settings_get_printer_lpi (settings), @@ -4366,44 +4370,49 @@ cups_printer_prepare_for_print (GtkPrinter *printer, GtkPrintSettings *settings, GtkPageSetup *page_setup) { + GtkPrintPages pages; + GtkPageRange *ranges; + gint n_ranges; GtkPageSet page_set; GtkPaperSize *paper_size; const char *ppd_paper_name; double scale; - print_job->print_pages = gtk_print_settings_get_print_pages (settings); - print_job->page_ranges = NULL; - print_job->num_page_ranges = 0; - - if (print_job->print_pages == GTK_PRINT_PAGES_RANGES) - print_job->page_ranges = - gtk_print_settings_get_page_ranges (settings, - &print_job->num_page_ranges); - + pages = gtk_print_settings_get_print_pages (settings); + gtk_print_job_set_pages (print_job, pages); + + if (pages == GTK_PRINT_PAGES_RANGES) + ranges = gtk_print_settings_get_page_ranges (settings, &n_ranges); + else + { + ranges = NULL; + n_ranges = 0; + } + + gtk_print_job_set_page_ranges (print_job, ranges, n_ranges); if (gtk_print_settings_get_collate (settings)) gtk_print_settings_set (settings, "cups-Collate", "True"); - print_job->collate = FALSE; + gtk_print_job_set_collate (print_job, FALSE); if (gtk_print_settings_get_reverse (settings)) gtk_print_settings_set (settings, "cups-OutputOrder", "Reverse"); - print_job->reverse = FALSE; + gtk_print_job_set_reverse (print_job, FALSE); if (gtk_print_settings_get_n_copies (settings) > 1) gtk_print_settings_set_int (settings, "cups-copies", - gtk_print_settings_get_n_copies (settings)); - print_job->num_copies = 1; + gtk_print_settings_get_n_copies (settings)); + gtk_print_job_set_num_copies (print_job, 1); scale = gtk_print_settings_get_scale (settings); - print_job->scale = 1.0; if (scale != 100.0) - print_job->scale = scale/100.0; + gtk_print_job_set_scale (print_job, scale / 100.0); page_set = gtk_print_settings_get_page_set (settings); if (page_set == GTK_PAGE_SET_EVEN) gtk_print_settings_set (settings, "cups-page-set", "even"); else if (page_set == GTK_PAGE_SET_ODD) gtk_print_settings_set (settings, "cups-page-set", "odd"); - print_job->page_set = GTK_PAGE_SET_ALL; + gtk_print_job_set_page_set (print_job, GTK_PAGE_SET_ALL); paper_size = gtk_page_setup_get_paper_size (page_setup); ppd_paper_name = gtk_paper_size_get_ppd_name (paper_size); @@ -4455,7 +4464,7 @@ cups_printer_prepare_for_print (GtkPrinter *printer, g_type_class_unref (enum_class); } - print_job->rotate_to_orientation = TRUE; + gtk_print_job_set_rotate (print_job, TRUE); } static GtkPageSetup * diff --git a/modules/printbackends/cups/gtkprintercups.c b/modules/printbackends/cups/gtkprintercups.c index 09818c3505..8b3f85c06a 100644 --- a/modules/printbackends/cups/gtkprintercups.c +++ b/modules/printbackends/cups/gtkprintercups.c @@ -127,11 +127,19 @@ gtk_printer_cups_new (const char *name, GtkPrintBackend *backend) { GObject *result; - + gboolean accepts_pdf; + +#if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 2) || CUPS_VERSION_MAJOR > 1 + accepts_pdf = TRUE; +#else + accepts_pdf = FALSE; +#endif + result = g_object_new (GTK_TYPE_PRINTER_CUPS, "name", name, "backend", backend, "is-virtual", FALSE, + "accepts-pdf", accepts_pdf, NULL); return (GtkPrinterCups *) result; diff --git a/modules/printbackends/file/Makefile.am b/modules/printbackends/file/Makefile.am index 30469e981b..402ae34379 100644 --- a/modules/printbackends/file/Makefile.am +++ b/modules/printbackends/file/Makefile.am @@ -28,8 +28,7 @@ libprintbackend_file_la_LDFLAGS = \ -avoid-version -module $(no_undefined) libprintbackend_file_la_LIBADD = \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(top_builddir)/gdk/$(gdktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) noinst_HEADERS = \ diff --git a/modules/printbackends/file/gtkprintbackendfile.c b/modules/printbackends/file/gtkprintbackendfile.c index 79023c9682..3322db1a46 100644 --- a/modules/printbackends/file/gtkprintbackendfile.c +++ b/modules/printbackends/file/gtkprintbackendfile.c @@ -501,6 +501,7 @@ gtk_print_backend_file_init (GtkPrintBackendFile *backend) "name", _("Print to File"), "backend", backend, "is-virtual", TRUE, + "accepts-pdf", TRUE, NULL); gtk_printer_set_has_details (printer, TRUE); @@ -513,17 +514,63 @@ gtk_print_backend_file_init (GtkPrintBackendFile *backend) gtk_print_backend_set_list_done (GTK_PRINT_BACKEND (backend)); } +typedef struct { + GtkPrinter *printer; + GtkPrinterOptionSet *set; +} _OutputFormatChangedData; + +static void +set_printer_format_from_option_set (GtkPrinter *printer, + GtkPrinterOptionSet *set) +{ + GtkPrinterOption *format_option; + const gchar *value; + gint i; + + format_option = gtk_printer_option_set_lookup (set, "output-file-format"); + if (format_option && format_option->value) + { + value = format_option->value; + if (value) + { + for (i = 0; i < N_FORMATS; ++i) + if (strcmp (value, formats[i]) == 0) + break; + + g_assert (i < N_FORMATS); + + switch (i) + { + case FORMAT_PDF: + gtk_printer_set_accepts_pdf (printer, TRUE); + gtk_printer_set_accepts_ps (printer, FALSE); + break; + case FORMAT_PS: + gtk_printer_set_accepts_pdf (printer, FALSE); + gtk_printer_set_accepts_ps (printer, TRUE); + break; + case FORMAT_SVG: + default: + gtk_printer_set_accepts_pdf (printer, FALSE); + gtk_printer_set_accepts_ps (printer, FALSE); + break; + } + } + } +} + static void file_printer_output_file_format_changed (GtkPrinterOption *format_option, - GtkPrinterOptionSet *set) + gpointer user_data) { GtkPrinterOption *uri_option; gchar *base = NULL; + _OutputFormatChangedData *data = (_OutputFormatChangedData *) user_data; if (! format_option->value) return; - uri_option = gtk_printer_option_set_lookup (set, + uri_option = gtk_printer_option_set_lookup (data->set, "gtk-main-page-custom-input"); if (uri_option && uri_option->value) @@ -563,6 +610,8 @@ file_printer_output_file_format_changed (GtkPrinterOption *format_option, g_free (tmp); g_free (base); } + + set_printer_format_from_option_set (data->printer, data->set); } static GtkPrinterOptionSet * @@ -582,6 +631,7 @@ file_printer_get_options (GtkPrinter *printer, OutputFormat format; gchar *uri; gint current_format = 0; + _OutputFormatChangedData *format_changed_data; format = format_from_settings (settings); @@ -666,9 +716,13 @@ file_printer_get_options (GtkPrinter *printer, gtk_printer_option_set (option, supported_formats[current_format]); gtk_printer_option_set_add (set, option); - g_signal_connect (option, "changed", - G_CALLBACK (file_printer_output_file_format_changed), - set); + set_printer_format_from_option_set (printer, set); + format_changed_data = g_new (_OutputFormatChangedData, 1); + format_changed_data->printer = printer; + format_changed_data->set = set; + g_signal_connect_data (option, "changed", + G_CALLBACK (file_printer_output_file_format_changed), + format_changed_data, (GClosureNotify)g_free, 0); g_object_unref (option); } @@ -706,28 +760,34 @@ file_printer_prepare_for_print (GtkPrinter *printer, GtkPageSetup *page_setup) { gdouble scale; + GtkPrintPages pages; + GtkPageRange *ranges; + gint n_ranges; - print_job->print_pages = gtk_print_settings_get_print_pages (settings); - print_job->page_ranges = NULL; - print_job->num_page_ranges = 0; - - if (print_job->print_pages == GTK_PRINT_PAGES_RANGES) - print_job->page_ranges = - gtk_print_settings_get_page_ranges (settings, - &print_job->num_page_ranges); - - print_job->collate = gtk_print_settings_get_collate (settings); - print_job->reverse = gtk_print_settings_get_reverse (settings); - print_job->num_copies = gtk_print_settings_get_n_copies (settings); - print_job->number_up = gtk_print_settings_get_number_up (settings); - print_job->number_up_layout = gtk_print_settings_get_number_up_layout (settings); + pages = gtk_print_settings_get_print_pages (settings); + gtk_print_job_set_pages (print_job, pages); + + if (pages == GTK_PRINT_PAGES_RANGES) + ranges = gtk_print_settings_get_page_ranges (settings, &n_ranges); + else + { + ranges = NULL; + n_ranges = 0; + } + + gtk_print_job_set_page_ranges (print_job, ranges, n_ranges); + gtk_print_job_set_collate (print_job, gtk_print_settings_get_collate (settings)); + gtk_print_job_set_reverse (print_job, gtk_print_settings_get_reverse (settings)); + gtk_print_job_set_num_copies (print_job, gtk_print_settings_get_n_copies (settings)); + gtk_print_job_set_n_up (print_job, gtk_print_settings_get_number_up (settings)); + gtk_print_job_set_n_up_layout (print_job, gtk_print_settings_get_number_up_layout (settings)); scale = gtk_print_settings_get_scale (settings); if (scale != 100.0) - print_job->scale = scale/100.0; + gtk_print_job_set_scale (print_job, scale / 100.0); - print_job->page_set = gtk_print_settings_get_page_set (settings); - print_job->rotate_to_orientation = TRUE; + gtk_print_job_set_page_set (print_job, gtk_print_settings_get_page_set (settings)); + gtk_print_job_set_rotate (print_job, TRUE); } static GList * diff --git a/modules/printbackends/lpr/Makefile.am b/modules/printbackends/lpr/Makefile.am index 379fa4964a..8142b6827b 100644 --- a/modules/printbackends/lpr/Makefile.am +++ b/modules/printbackends/lpr/Makefile.am @@ -15,8 +15,8 @@ INCLUDES = \ $(GTK_DEBUG_FLAGS) LDADDS = \ - $(GTK_DEP_LIBS) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la \ + $(GTK_DEP_LIBS) backenddir = $(libdir)/gtk-3.0/$(GTK_BINARY_VERSION)/printbackends diff --git a/modules/printbackends/lpr/gtkprintbackendlpr.c b/modules/printbackends/lpr/gtkprintbackendlpr.c index d84ab9a7e1..b273e386d2 100644 --- a/modules/printbackends/lpr/gtkprintbackendlpr.c +++ b/modules/printbackends/lpr/gtkprintbackendlpr.c @@ -465,26 +465,32 @@ lpr_printer_prepare_for_print (GtkPrinter *printer, GtkPageSetup *page_setup) { double scale; + GtkPrintPages pages; + GtkPageRange *ranges; + gint n_ranges; - print_job->print_pages = gtk_print_settings_get_print_pages (settings); - print_job->page_ranges = NULL; - print_job->num_page_ranges = 0; - - if (print_job->print_pages == GTK_PRINT_PAGES_RANGES) - print_job->page_ranges = - gtk_print_settings_get_page_ranges (settings, - &print_job->num_page_ranges); - - print_job->collate = gtk_print_settings_get_collate (settings); - print_job->reverse = gtk_print_settings_get_reverse (settings); - print_job->num_copies = gtk_print_settings_get_n_copies (settings); - print_job->number_up = gtk_print_settings_get_number_up (settings); - print_job->number_up_layout = gtk_print_settings_get_number_up_layout (settings); + pages = gtk_print_settings_get_print_pages (settings); + gtk_print_job_set_pages (print_job, pages); + + if (pages == GTK_PRINT_PAGES_RANGES) + ranges = gtk_print_settings_get_page_ranges (settings, &n_ranges); + else + { + ranges = NULL; + n_ranges = 0; + } + + gtk_print_job_set_page_ranges (print_job, ranges, n_ranges); + gtk_print_job_set_collate (print_job, gtk_print_settings_get_collate (settings)); + gtk_print_job_set_reverse (print_job, gtk_print_settings_get_reverse (settings)); + gtk_print_job_set_num_copies (print_job, gtk_print_settings_get_n_copies (settings)); + gtk_print_job_set_n_up (print_job, gtk_print_settings_get_number_up (settings)); + gtk_print_job_set_n_up_layout (print_job, gtk_print_settings_get_number_up_layout (settings)); scale = gtk_print_settings_get_scale (settings); if (scale != 100.0) - print_job->scale = scale/100.0; + gtk_print_job_set_scale (print_job, scale / 100.0); - print_job->page_set = gtk_print_settings_get_page_set (settings); - print_job->rotate_to_orientation = TRUE; + gtk_print_job_set_page_set (print_job, gtk_print_settings_get_page_set (settings)); + gtk_print_job_set_rotate (print_job, TRUE); } diff --git a/modules/printbackends/papi/Makefile.am b/modules/printbackends/papi/Makefile.am index 671055be59..c67d8b251e 100644 --- a/modules/printbackends/papi/Makefile.am +++ b/modules/printbackends/papi/Makefile.am @@ -13,8 +13,8 @@ INCLUDES = \ $(GTK_DEBUG_FLAGS) LDADDS = \ - $(GTK_DEP_LIBS) \ - $(top_builddir)/gtk/$(gtktargetlib) + $(top_builddir)/gtk/libgtk-3.0.la \ + $(GTK_DEP_LIBS) backenddir = $(libdir)/gtk-2.0/$(GTK_BINARY_VERSION)/printbackends diff --git a/modules/printbackends/test/Makefile.am b/modules/printbackends/test/Makefile.am index 2f61165e0e..822514fe46 100644 --- a/modules/printbackends/test/Makefile.am +++ b/modules/printbackends/test/Makefile.am @@ -28,7 +28,7 @@ libprintbackend_test_la_LDFLAGS = \ -avoid-version -module $(no_undefined) libprintbackend_test_la_LIBADD = \ - $(top_builddir)/gtk/$(gtktargetlib) \ + $(top_builddir)/gtk/libgtk-3.0.la \ $(GTK_DEP_LIBS) noinst_HEADERS = \ diff --git a/modules/printbackends/test/gtkprintbackendtest.c b/modules/printbackends/test/gtkprintbackendtest.c index f40c03cbdb..14c8e52db4 100644 --- a/modules/printbackends/test/gtkprintbackendtest.c +++ b/modules/printbackends/test/gtkprintbackendtest.c @@ -525,25 +525,27 @@ test_printer_prepare_for_print (GtkPrinter *printer, { gdouble scale; - print_job->print_pages = gtk_print_settings_get_print_pages (settings); - print_job->page_ranges = NULL; - print_job->num_page_ranges = 0; + gtk_print_job_set_pages (print_job, gtk_print_settings_get_print_pages (settings)); + gtk_print_job_set_page_ranges (print_job, NULL, 0); - if (print_job->print_pages == GTK_PRINT_PAGES_RANGES) - print_job->page_ranges = - gtk_print_settings_get_page_ranges (settings, - &print_job->num_page_ranges); - - print_job->collate = gtk_print_settings_get_collate (settings); - print_job->reverse = gtk_print_settings_get_reverse (settings); - print_job->num_copies = gtk_print_settings_get_n_copies (settings); + if (gtk_print_job_get_pages (print_job) == GTK_PRINT_PAGES_RANGES) + { + GtkPageRange *page_ranges; + gint num_page_ranges; + page_ranges = gtk_print_settings_get_page_ranges (settings, &num_page_ranges); + gtk_print_job_set_page_ranges (print_job, page_ranges, num_page_ranges); + } + + gtk_print_job_set_collate (print_job, gtk_print_settings_get_collate (settings)); + gtk_print_job_set_reverse (print_job, gtk_print_settings_get_reverse (settings)); + gtk_print_job_set_num_copies (print_job, gtk_print_settings_get_n_copies (settings)); scale = gtk_print_settings_get_scale (settings); if (scale != 100.0) - print_job->scale = scale/100.0; + gtk_print_job_set_scale (print_job, scale/100.0); - print_job->page_set = gtk_print_settings_get_page_set (settings); - print_job->rotate_to_orientation = TRUE; + gtk_print_job_set_page_set (print_job, gtk_print_settings_get_page_set (settings)); + gtk_print_job_set_rotate (print_job, TRUE); } static gboolean diff --git a/perf/Makefile.am b/perf/Makefile.am index 6b95b16b48..18e45f40d0 100644 --- a/perf/Makefile.am +++ b/perf/Makefile.am @@ -10,13 +10,12 @@ INCLUDES = \ $(GTK_DEBUG_FLAGS) \ $(GTK_DEP_CFLAGS) -DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) +DEPS = \ + $(top_builddir)/gtk/libgtk-3.0.la -LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ +LDADDS = \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ $(GTK_DEP_LIBS) noinst_PROGRAMS = \ diff --git a/po-properties/POTFILES.in b/po-properties/POTFILES.in index 4ea635ed5e..6c5e36154d 100644 --- a/po-properties/POTFILES.in +++ b/po-properties/POTFILES.in @@ -1,6 +1,8 @@ # Files from the Gtk distribution which have already been # marked to allow runtime translation of messages gdk/gdk.c +gdk/gdkapplaunchcontext.c +gdk/gdkcursor.c gdk/gdkdevice.c gdk/gdkdevicemanager.c gdk/gdkdisplaymanager.c @@ -12,6 +14,7 @@ gdk/win32/gdkmain-win32.c gdk/x11/gdkapplaunchcontext-x11.c gdk/x11/gdkdevice-xi.c gdk/x11/gdkdevice-xi2.c +gdk/x11/gdkdevicemanager-xi2.c gdk/x11/gdkdevicemanager-xi.c gdk/x11/gdkmain-x11.c gtk/gtkaboutdialog.c @@ -24,6 +27,10 @@ gtk/gtkactiongroup.c gtk/gtkactivatable.c gtk/gtkadjustment.c gtk/gtkalignment.c +gtk/gtkappchooserbutton.c +gtk/gtkappchooser.c +gtk/gtkappchooserdialog.c +gtk/gtkappchooserwidget.c gtk/gtkarrow.c gtk/gtkaspectframe.c gtk/gtkassistant.c @@ -35,6 +42,9 @@ gtk/gtkbuilder.c gtk/gtkbuilderparser.c gtk/gtkbutton.c gtk/gtkcalendar.c +gtk/gtkcellareabox.c +gtk/gtkcellarea.c +gtk/gtkcellareacontext.c gtk/gtkcelleditable.c gtk/gtkcelllayout.c gtk/gtkcellrendereraccel.c @@ -82,6 +92,7 @@ gtk/gtkfixed.c gtk/gtkfontbutton.c gtk/gtkfontsel.c gtk/gtkframe.c +gtk/gtkgrid.c gtk/gtkhandlebox.c gtk/gtkhbbox.c gtk/gtkhbox.c @@ -118,6 +129,7 @@ gtk/gtkmountoperation.c gtk/gtkmountoperation-stub.c gtk/gtkmountoperation-x11.c gtk/gtknotebook.c +gtk/gtknumerableicon.c gtk/gtkorientable.c gtk/gtkpagesetup.c gtk/gtkpagesetupunixdialog.c @@ -148,6 +160,7 @@ gtk/gtkrecentchoosermenu.c gtk/gtkrecentmanager.c gtk/gtkscalebutton.c gtk/gtkscale.c +gtk/gtkscrollable.c gtk/gtkscrollbar.c gtk/gtkscrolledwindow.c gtk/gtkselection.c @@ -162,6 +175,7 @@ gtk/gtkstatusbar.c gtk/gtkstatusicon.c gtk/gtkstock.c gtk/gtkstyle.c +gtk/gtkstylecontext.c gtk/gtkswitch.c gtk/gtktable.c gtk/gtktearoffmenuitem.c @@ -177,7 +191,7 @@ gtk/gtktexttag.c gtk/gtktexttagtable.c gtk/gtktextutil.c gtk/gtktextview.c -gtk/gtkthemes.c +gtk/gtkthemingengine.c gtk/gtktoggleaction.c gtk/gtktogglebutton.c gtk/gtktoggletoolbutton.c @@ -189,6 +203,7 @@ gtk/gtktoolpalette.c gtk/gtktoolshell.c gtk/gtktrayicon-x11.c gtk/gtktreednd.c +gtk/gtktreemenu.c gtk/gtktreemodel.c gtk/gtktreemodelfilter.c gtk/gtktreemodelsort.c @@ -197,7 +212,6 @@ gtk/gtktreesortable.c gtk/gtktreestore.c gtk/gtktreeview.c gtk/gtktreeviewcolumn.c -gtk/gtktypeutils.c gtk/gtkuimanager.c gtk/gtkvbbox.c gtk/gtkvbox.c @@ -209,7 +223,6 @@ gtk/gtkvscrollbar.c gtk/gtkvseparator.c gtk/gtkwidget.c gtk/gtkwindow.c -gtk/gtkwindow-decorate.c gtk/paper_names.c gtk/paper_names_offsets.c gtk/updateiconcache.c diff --git a/po-properties/en_GB.po b/po-properties/en_GB.po index ab4af75423..6db25b2fc2 100644 --- a/po-properties/en_GB.po +++ b/po-properties/en_GB.po @@ -2,145 +2,162 @@ # Copyright (C) 2004 GTK+'s COPYRIGHT HOLDER # This file is distributed under the same licence as the gtk+ package # Abigail Brady , Gareth Owen 2004 -# Bruce Cowan , 2009, 2010. +# Bruce Cowan , 2009, 2010, 2011. # Philip Withnall , 2010. msgid "" msgstr "" "Project-Id-Version: gtk+\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:54-0400\n" -"PO-Revision-Date: 2010-02-24 16:40+0100\n" -"Last-Translator: Philip Withnall \n" +"POT-Creation-Date: 2011-01-07 23:14+0000\n" +"PO-Revision-Date: 2011-01-07 23:20+0100\n" +"Last-Translator: Bruce Cowan \n" "Language-Team: British English \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.5.2\n" +"X-Generator: Virtaal 0.6.1\n" -#: gdk/gdkdevice.c:97 -msgid "Device Display" -msgstr "Device Display" - -#: gdk/gdkdevice.c:98 -#, fuzzy -msgid "Display which the device belongs to" -msgstr "Display which the device belongs to" - -#: gdk/gdkdevice.c:112 -msgid "Device manager" -msgstr "Device manager" - -#: gdk/gdkdevice.c:113 -#, fuzzy -msgid "Device manager which the device belongs to" -msgstr "Device manager which the device belongs to" - -#: gdk/gdkdevice.c:127 gdk/gdkdevice.c:128 -msgid "Device name" -msgstr "Device name" - -#: gdk/gdkdevice.c:142 -msgid "Device type" -msgstr "Device type" - -#: gdk/gdkdevice.c:143 -msgid "Device role in the device manager" -msgstr "Device role in the device manager" - -#: gdk/gdkdevice.c:159 -msgid "Associated device" -msgstr "Associated device" - -#: gdk/gdkdevice.c:160 -#, fuzzy -msgid "Associated pointer or keyboard with this device" -msgstr "Associated pointer or keyboard with this device" - -#: gdk/gdkdevice.c:173 -msgid "Input source" -msgstr "Input source" - -#: gdk/gdkdevice.c:174 -msgid "Source type for the device" -msgstr "Source type for the device" - -#: gdk/gdkdevice.c:189 gdk/gdkdevice.c:190 -msgid "Input mode for the device" -msgstr "Input mode for the device" - -#: gdk/gdkdevice.c:205 -#, fuzzy -msgid "Whether the device has a cursor" -msgstr "Whether the device has a cursor" - -#: gdk/gdkdevice.c:206 -msgid "Whether there is a visible cursor following device motion" -msgstr "Whether there is a visible cursor following device motion" - -#: gdk/gdkdevice.c:220 gdk/gdkdevice.c:221 -msgid "Number of axes in the device" -msgstr "Number of axes in the device" - -#: gdk/gdkdevicemanager.c:134 +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" msgstr "Display" -#: gdk/gdkdevicemanager.c:135 +#: ../gdk/gdkcursor.c:128 +msgid "Cursor type" +msgstr "Cursor type" + +#: ../gdk/gdkcursor.c:129 +msgid "Standard cursor type" +msgstr "Standard cursor type" + +#: ../gdk/gdkcursor.c:137 +msgid "Display of this cursor" +msgstr "Display of this cursor" + +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "Device Display" + +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "Display which the device belongs to" + +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "Device manager" + +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "Device manager which the device belongs to" + +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "Device name" + +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "Device type" + +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "Device role in the device manager" + +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "Associated device" + +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "Associated pointer or keyboard with this device" + +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "Input source" + +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "Source type for the device" + +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "Input mode for the device" + +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "Whether the device has a cursor" + +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "Whether there is a visible cursor following device motion" + +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "Number of axes in the device" + +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" msgstr "Display for the device manager" -#: gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "Default Display" -#: gdk/gdkdisplaymanager.c:103 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "The default display for GDK" -#: gdk/gdkscreen.c:72 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Font options" -#: gdk/gdkscreen.c:73 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "The default font options for the screen" -#: gdk/gdkscreen.c:80 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Font resolution" -#: gdk/gdkscreen.c:81 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "The resolution for fonts on the screen" -#: gdk/gdkwindow.c:392 gdk/gdkwindow.c:393 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Cursor" -#: gdk/x11/gdkdevice-xi.c:132 gdk/x11/gdkdevice-xi.c:133 -#: gdk/x11/gdkdevice-xi2.c:111 +#: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "Device ID" -#: gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "Device identifier" -#: gdk/x11/gdkdevicemanager-xi.c:84 +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +msgid "Opcode" +msgstr "Opcode" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +msgid "Opcode for XInput2 requests" +msgstr "Opcode for XInput2 requests" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" msgstr "Event base" -#: gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "Event base for XInput events" -#: gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "Program name" -#: gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -148,97 +165,93 @@ msgstr "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" -#: gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "Program version" -#: gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "The version of the program" -#: gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "Copyright string" -#: gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "Copyright information for the program" -#: gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "Comments string" -#: gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "Comments about the program" -#: gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" msgstr "Licence Type" -#: gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" msgstr "The licence type of the program" -#: gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "Website URL" -#: gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "The URL for the link to the website of the program" -#: gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "Website label" -#: gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "The label for the link to the website of the program" -#: gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "Authors" -#: gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "List of authors of the program" -#: gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "Documenters" -#: gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "List of people documenting the program" -#: gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "Artists" -#: gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "List of people who have contributed artwork to the program" -#: gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "Translator credits" -#: gtk/gtkaboutdialog.c:471 +#: ../gtk/gtkaboutdialog.c:477 msgid "" "Credits to the translators. This string should be marked as translatable" msgstr "" "Credits to the translators. This string should be marked as translatable" -#: gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "Logo" -#: gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -246,105 +259,106 @@ msgstr "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" -#: gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "Logo Icon Name" -#: gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "A named icon to use as the logo for the about box." -#: gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "Wrap licence" -#: gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "Whether to wrap the licence text." -#: gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "Accelerator Closure" -#: gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "The closure to be monitored for accelerator changes" -#: gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "Accelerator Widget" -#: gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "The widget to be monitored for accelerator changes" -#: gtk/gtkaction.c:222 gtk/gtkactiongroup.c:228 gtk/gtkprinter.c:125 -#: gtk/gtktextmark.c:89 +#: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "Name" -#: gtk/gtkaction.c:223 +#: ../gtk/gtkaction.c:223 msgid "A unique name for the action." msgstr "A unique name for the action." -#: gtk/gtkaction.c:241 gtk/gtkbutton.c:238 gtk/gtkexpander.c:209 -#: gtk/gtkframe.c:130 gtk/gtklabel.c:549 gtk/gtkmenuitem.c:333 -#: gtk/gtktoolbutton.c:202 gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:131 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1588 msgid "Label" msgstr "Label" -#: gtk/gtkaction.c:242 +#: ../gtk/gtkaction.c:242 msgid "The label used for menu items and buttons that activate this action." msgstr "The label used for menu items and buttons that activate this action." -#: gtk/gtkaction.c:258 +#: ../gtk/gtkaction.c:258 msgid "Short label" msgstr "Short label" -#: gtk/gtkaction.c:259 +#: ../gtk/gtkaction.c:259 msgid "A shorter label that may be used on toolbar buttons." msgstr "A shorter label that may be used on toolbar buttons." -#: gtk/gtkaction.c:267 +#: ../gtk/gtkaction.c:267 msgid "Tooltip" msgstr "Tooltip" -#: gtk/gtkaction.c:268 +#: ../gtk/gtkaction.c:268 msgid "A tooltip for this action." msgstr "A tooltip for this action." -#: gtk/gtkaction.c:283 +#: ../gtk/gtkaction.c:283 msgid "Stock Icon" msgstr "Stock Icon" -#: gtk/gtkaction.c:284 +#: ../gtk/gtkaction.c:284 msgid "The stock icon displayed in widgets representing this action." msgstr "The stock icon displayed in widgets representing this action." -#: gtk/gtkaction.c:304 gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "GIcon" -#: gtk/gtkaction.c:305 gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:320 -#: gtk/gtkstatusicon.c:253 +#: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 +#: ../gtk/gtkimage.c:328 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "The GIcon being displayed" -#: gtk/gtkaction.c:325 gtk/gtkcellrendererpixbuf.c:180 gtk/gtkimage.c:302 -#: gtk/gtkprinter.c:174 gtk/gtkstatusicon.c:236 gtk/gtkwindow.c:685 +#: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 +#: ../gtk/gtkimage.c:310 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "Icon Name" -#: gtk/gtkaction.c:326 gtk/gtkcellrendererpixbuf.c:181 gtk/gtkimage.c:303 -#: gtk/gtkstatusicon.c:237 +#: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 +#: ../gtk/gtkimage.c:311 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "The name of the icon from the icon theme" -#: gtk/gtkaction.c:333 gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "Visible when horizontal" -#: gtk/gtkaction.c:334 gtk/gtktoolitem.c:187 +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 msgid "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." @@ -352,11 +366,11 @@ msgstr "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." -#: gtk/gtkaction.c:349 +#: ../gtk/gtkaction.c:349 msgid "Visible when overflown" msgstr "Visible when overflown" -#: gtk/gtkaction.c:350 +#: ../gtk/gtkaction.c:350 msgid "" "When TRUE, toolitem proxies for this action are represented in the toolbar " "overflow menu." @@ -364,11 +378,11 @@ msgstr "" "When TRUE, toolitem proxies for this action are represented in the toolbar " "overflow menu." -#: gtk/gtkaction.c:357 gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "Visible when vertical" -#: gtk/gtkaction.c:358 gtk/gtktoolitem.c:194 +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 msgid "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." @@ -376,11 +390,11 @@ msgstr "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." -#: gtk/gtkaction.c:365 gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "Is important" -#: gtk/gtkaction.c:366 +#: ../gtk/gtkaction.c:366 msgid "" "Whether the action is considered important. When TRUE, toolitem proxies for " "this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." @@ -388,37 +402,38 @@ msgstr "" "Whether the action is considered important. When TRUE, toolitem proxies for " "this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." -#: gtk/gtkaction.c:374 +#: ../gtk/gtkaction.c:374 msgid "Hide if empty" msgstr "Hide if empty" -#: gtk/gtkaction.c:375 +#: ../gtk/gtkaction.c:375 msgid "When TRUE, empty menu proxies for this action are hidden." msgstr "When TRUE, empty menu proxies for this action are hidden." -#: gtk/gtkaction.c:381 gtk/gtkactiongroup.c:235 gtk/gtkcellrenderer.c:242 -#: gtk/gtkwidget.c:754 +#: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:935 msgid "Sensitive" msgstr "Sensitive" -#: gtk/gtkaction.c:382 +#: ../gtk/gtkaction.c:382 msgid "Whether the action is enabled." msgstr "Whether the action is enabled." -#: gtk/gtkaction.c:388 gtk/gtkactiongroup.c:242 gtk/gtkstatusicon.c:287 -#: gtk/gtktreeviewcolumn.c:195 gtk/gtkwidget.c:747 +#: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:928 msgid "Visible" msgstr "Visible" -#: gtk/gtkaction.c:389 +#: ../gtk/gtkaction.c:389 msgid "Whether the action is visible." msgstr "Whether the action is visible." -#: gtk/gtkaction.c:395 +#: ../gtk/gtkaction.c:395 msgid "Action Group" msgstr "Action Group" -#: gtk/gtkaction.c:396 +#: ../gtk/gtkaction.c:396 msgid "" "The GtkActionGroup this GtkAction is associated with, or NULL (for internal " "use)." @@ -426,96 +441,96 @@ msgstr "" "The GtkActionGroup this GtkAction is associated with, or NULL (for internal " "use)." -#: gtk/gtkaction.c:414 gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Always show image" -#: gtk/gtkaction.c:415 gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Whether the image will always be shown" -#: gtk/gtkactiongroup.c:229 +#: ../gtk/gtkactiongroup.c:229 msgid "A name for the action group." msgstr "A name for the action group." -#: gtk/gtkactiongroup.c:236 +#: ../gtk/gtkactiongroup.c:236 msgid "Whether the action group is enabled." msgstr "Whether the action group is enabled." -#: gtk/gtkactiongroup.c:243 +#: ../gtk/gtkactiongroup.c:243 msgid "Whether the action group is visible." msgstr "Whether the action group is visible." -#: gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "Related Action" -#: gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "The action this activatable will activate and receive updates from" -#: gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "Use Action Appearance" -#: gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "Whether to use the related actions appearance properties" -#: gtk/gtkadjustment.c:93 gtk/gtkcellrendererprogress.c:126 -#: gtk/gtkscalebutton.c:220 gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "Value" -#: gtk/gtkadjustment.c:94 +#: ../gtk/gtkadjustment.c:124 msgid "The value of the adjustment" msgstr "The value of the adjustment" -#: gtk/gtkadjustment.c:110 +#: ../gtk/gtkadjustment.c:140 msgid "Minimum Value" msgstr "Minimum Value" -#: gtk/gtkadjustment.c:111 +#: ../gtk/gtkadjustment.c:141 msgid "The minimum value of the adjustment" msgstr "The minimum value of the adjustment" -#: gtk/gtkadjustment.c:130 +#: ../gtk/gtkadjustment.c:160 msgid "Maximum Value" msgstr "Maximum Value" -#: gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:161 msgid "The maximum value of the adjustment" msgstr "The maximum value of the adjustment" -#: gtk/gtkadjustment.c:147 +#: ../gtk/gtkadjustment.c:177 msgid "Step Increment" msgstr "Step Increment" -#: gtk/gtkadjustment.c:148 +#: ../gtk/gtkadjustment.c:178 msgid "The step increment of the adjustment" msgstr "The step increment of the adjustment" -#: gtk/gtkadjustment.c:164 +#: ../gtk/gtkadjustment.c:194 msgid "Page Increment" msgstr "Page Increment" -#: gtk/gtkadjustment.c:165 +#: ../gtk/gtkadjustment.c:195 msgid "The page increment of the adjustment" msgstr "The page increment of the adjustment" -#: gtk/gtkadjustment.c:184 +#: ../gtk/gtkadjustment.c:214 msgid "Page Size" msgstr "Page Size" -#: gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:215 msgid "The page size of the adjustment" msgstr "The page size of the adjustment" -#: gtk/gtkalignment.c:123 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Horizontal alignment" -#: gtk/gtkalignment.c:124 gtk/gtkbutton.c:289 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -523,11 +538,11 @@ msgstr "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" -#: gtk/gtkalignment.c:133 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Vertical alignment" -#: gtk/gtkalignment.c:134 gtk/gtkbutton.c:308 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -535,11 +550,11 @@ msgstr "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" -#: gtk/gtkalignment.c:142 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Horizontal scale" -#: gtk/gtkalignment.c:143 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -547,11 +562,11 @@ msgstr "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" -#: gtk/gtkalignment.c:151 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Vertical scale" -#: gtk/gtkalignment.c:152 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -559,188 +574,263 @@ msgstr "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" -#: gtk/gtkalignment.c:169 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Top Padding" -#: gtk/gtkalignment.c:170 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "The padding to insert at the top of the widget." -#: gtk/gtkalignment.c:186 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Bottom Padding" -#: gtk/gtkalignment.c:187 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "The padding to insert at the bottom of the widget." -#: gtk/gtkalignment.c:203 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Left Padding" -#: gtk/gtkalignment.c:204 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "The padding to insert at the left of the widget." -#: gtk/gtkalignment.c:220 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Right Padding" -#: gtk/gtkalignment.c:221 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "The padding to insert at the right of the widget." -#: gtk/gtkarrow.c:110 +#: ../gtk/gtkappchooserbutton.c:536 +msgid "Include an 'Other...' item" +msgstr "Include an 'Other...' item" + +#: ../gtk/gtkappchooserbutton.c:537 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" + +#: ../gtk/gtkappchooser.c:58 +msgid "Content type" +msgstr "Content type" + +#: ../gtk/gtkappchooser.c:59 +msgid "The content type used by the open with object" +msgstr "The content type used by the open with object" + +#: ../gtk/gtkappchooserdialog.c:683 +msgid "GFile" +msgstr "GFile" + +#: ../gtk/gtkappchooserdialog.c:684 +msgid "The GFile used by the app chooser dialog" +msgstr "The GFile used by the app chooser dialogue" + +#: ../gtk/gtkappchooserwidget.c:1015 +msgid "Show default app" +msgstr "Show default app" + +#: ../gtk/gtkappchooserwidget.c:1016 +msgid "Whether the widget should show the default application" +msgstr "Whether the widget should show the default application" + +#: ../gtk/gtkappchooserwidget.c:1029 +msgid "Show recommended apps" +msgstr "Show recommended apps" + +#: ../gtk/gtkappchooserwidget.c:1030 +msgid "Whether the widget should show recommended applications" +msgstr "Whether the widget should show recommended applications" + +#: ../gtk/gtkappchooserwidget.c:1043 +msgid "Show fallback apps" +msgstr "Show fallback apps" + +#: ../gtk/gtkappchooserwidget.c:1044 +msgid "Whether the widget should show fallback applications" +msgstr "Whether the widget should show fallback applications" + +#: ../gtk/gtkappchooserwidget.c:1056 +msgid "Show other apps" +msgstr "Show other apps" + +#: ../gtk/gtkappchooserwidget.c:1057 +msgid "Whether the widget should show other applications" +msgstr "Whether the widget should show other applications" + +#: ../gtk/gtkappchooserwidget.c:1070 +msgid "Show all apps" +msgstr "Show all apps" + +#: ../gtk/gtkappchooserwidget.c:1071 +msgid "Whether the widget should show all applications" +msgstr "Whether the widget should show all applications" + +#: ../gtk/gtkappchooserwidget.c:1084 +msgid "Widget's default text" +msgstr "Widget's default text" + +#: ../gtk/gtkappchooserwidget.c:1085 +msgid "The default text appearing when there are no applications" +msgstr "The default text appearing when there are no applications" + +#: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Arrow direction" -#: gtk/gtkarrow.c:111 +#: ../gtk/gtkarrow.c:111 msgid "The direction the arrow should point" msgstr "The direction the arrow should point" -#: gtk/gtkarrow.c:119 +#: ../gtk/gtkarrow.c:119 msgid "Arrow shadow" msgstr "Arrow shadow" -#: gtk/gtkarrow.c:120 +#: ../gtk/gtkarrow.c:120 msgid "Appearance of the shadow surrounding the arrow" msgstr "Appearance of the shadow surrounding the arrow" -#: gtk/gtkarrow.c:127 gtk/gtkmenu.c:735 gtk/gtkmenuitem.c:396 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:726 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Arrow Scaling" -#: gtk/gtkarrow.c:128 +#: ../gtk/gtkarrow.c:128 msgid "Amount of space used up by arrow" msgstr "Amount of space used up by arrow" -#: gtk/gtkaspectframe.c:109 gtk/gtkwidget.c:950 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1123 msgid "Horizontal Alignment" msgstr "Horizontal Alignment" -#: gtk/gtkaspectframe.c:110 +#: ../gtk/gtkaspectframe.c:110 msgid "X alignment of the child" msgstr "X alignment of the child" -#: gtk/gtkaspectframe.c:116 gtk/gtkwidget.c:966 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1139 msgid "Vertical Alignment" msgstr "Vertical Alignment" -#: gtk/gtkaspectframe.c:117 +#: ../gtk/gtkaspectframe.c:117 msgid "Y alignment of the child" msgstr "Y alignment of the child" -#: gtk/gtkaspectframe.c:123 +#: ../gtk/gtkaspectframe.c:123 msgid "Ratio" msgstr "Ratio" -#: gtk/gtkaspectframe.c:124 +#: ../gtk/gtkaspectframe.c:124 msgid "Aspect ratio if obey_child is FALSE" msgstr "Aspect ratio if obey_child is FALSE" -#: gtk/gtkaspectframe.c:130 +#: ../gtk/gtkaspectframe.c:130 msgid "Obey child" msgstr "Obey child" -#: gtk/gtkaspectframe.c:131 +#: ../gtk/gtkaspectframe.c:131 msgid "Force aspect ratio to match that of the frame's child" msgstr "Force aspect ratio to match that of the frame's child" -#: gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "Header Padding" -#: gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "Number of pixels around the header." -#: gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "Content Padding" -#: gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "Number of pixels around the content pages." -#: gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "Page type" -#: gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "The type of the assistant page" -#: gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "Page title" -#: gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "The title of the assistant page" -#: gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "Header image" -#: gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "Header image for the assistant page" -#: gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "Sidebar image" -#: gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "Sidebar image for the assistant page" -#: gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "Page complete" -#: gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "Whether all required fields on the page have been filled out" -#: gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "Minimum child width" -#: gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "Minimum width of buttons inside the box" -#: gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "Minimum child height" -#: gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "Minimum height of buttons inside the box" -#: gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "Child internal width padding" -#: gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "Amount to increase child's size on either side" -#: gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "Child internal height padding" -#: gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "Amount to increase child's size on the top and bottom" -#: gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "Layout style" -#: gtk/gtkbbox.c:172 -#, fuzzy +#: ../gtk/gtkbbox.c:189 msgid "" "How to lay out the buttons in the box. Possible values are: spread, edge, " "start and end" @@ -748,11 +838,11 @@ msgstr "" "How to lay out the buttons in the box. Possible values are: spread, edge, " "start and end" -#: gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "Secondary" -#: gtk/gtkbbox.c:181 +#: ../gtk/gtkbbox.c:198 msgid "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" @@ -760,38 +850,39 @@ msgstr "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" -#: gtk/gtkbox.c:227 gtk/gtkexpander.c:233 gtk/gtkiconview.c:666 -#: gtk/gtktreeviewcolumn.c:220 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "Spacing" -#: gtk/gtkbox.c:228 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "The amount of space between children" -#: gtk/gtkbox.c:237 gtk/gtktable.c:184 gtk/gtktoolbar.c:527 -#: gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1641 msgid "Homogeneous" msgstr "Homogeneous" -#: gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "Whether the children should all be the same size" -#: gtk/gtkbox.c:254 gtk/gtktoolbar.c:519 gtk/gtktoolitemgroup.c:1631 -#: gtk/gtktoolpalette.c:1065 gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1648 ../gtk/gtktoolpalette.c:1093 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "Expand" -#: gtk/gtkbox.c:255 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "Whether the child should receive extra space when the parent grows" -#: gtk/gtkbox.c:271 gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1655 msgid "Fill" msgstr "Fill" -#: gtk/gtkbox.c:272 +#: ../gtk/gtkbox.c:282 msgid "" "Whether extra space given to the child should be allocated to the child or " "used as padding" @@ -799,19 +890,19 @@ msgstr "" "Whether extra space given to the child should be allocated to the child or " "used as padding" -#: gtk/gtkbox.c:279 gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "Padding" -#: gtk/gtkbox.c:280 +#: ../gtk/gtkbox.c:290 msgid "Extra space to put between the child and its neighbors, in pixels" msgstr "Extra space to put between the child and its neighbours, in pixels" -#: gtk/gtkbox.c:286 +#: ../gtk/gtkbox.c:296 msgid "Pack type" msgstr "Pack type" -#: gtk/gtkbox.c:287 gtk/gtknotebook.c:692 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -819,24 +910,24 @@ msgstr "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" -#: gtk/gtkbox.c:293 gtk/gtknotebook.c:670 gtk/gtkpaned.c:270 -#: gtk/gtkruler.c:158 gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Position" msgstr "Position" -#: gtk/gtkbox.c:294 gtk/gtknotebook.c:671 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "The index of the child in the parent" -#: gtk/gtkbuilder.c:315 +#: ../gtk/gtkbuilder.c:314 msgid "Translation Domain" msgstr "Translation Domain" -#: gtk/gtkbuilder.c:316 +#: ../gtk/gtkbuilder.c:315 msgid "The translation domain used by gettext" msgstr "The translation domain used by gettext" -#: gtk/gtkbutton.c:239 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" @@ -844,13 +935,13 @@ msgstr "" "Text of the label widget inside the button, if the button contains a label " "widget" -#: gtk/gtkbutton.c:246 gtk/gtkexpander.c:217 gtk/gtklabel.c:570 -#: gtk/gtkmenuitem.c:348 gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "Use underline" -#: gtk/gtkbutton.c:247 gtk/gtkexpander.c:218 gtk/gtklabel.c:571 -#: gtk/gtkmenuitem.c:349 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -858,69 +949,70 @@ msgstr "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" -#: gtk/gtkbutton.c:254 gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Use stock" -#: gtk/gtkbutton.c:255 +#: ../gtk/gtkbutton.c:244 msgid "" "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "If set, the label is used to pick a stock item instead of being displayed" -#: gtk/gtkbutton.c:262 gtk/gtkcombobox.c:811 gtk/gtkfilechooserbutton.c:385 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 +#: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Focus on click" -#: gtk/gtkbutton.c:263 gtk/gtkfilechooserbutton.c:386 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Whether the button grabs focus when it is clicked with the mouse" -#: gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "Border relief" -#: gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "The border relief style" -#: gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "Horizontal alignment for child" -#: gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "Vertical alignment for child" -#: gtk/gtkbutton.c:324 gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Image widget" -#: gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "Child widget to appear next to the button text" -#: gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "Image position" -#: gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "The position of the image relative to the text" -#: gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "Default Spacing" -#: gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Extra space to add for GTK_CAN_DEFAULT buttons" -#: gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "Default Outside Spacing" -#: gtk/gtkbutton.c:476 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -928,31 +1020,31 @@ msgstr "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" -#: gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "Child X Displacement" -#: gtk/gtkbutton.c:482 +#: ../gtk/gtkbutton.c:471 msgid "" "How far in the x direction to move the child when the button is depressed" msgstr "" "How far in the x direction to move the child when the button is depressed" -#: gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "Child Y Displacement" -#: gtk/gtkbutton.c:490 +#: ../gtk/gtkbutton.c:479 msgid "" "How far in the y direction to move the child when the button is depressed" msgstr "" "How far in the y direction to move the child when the button is depressed" -#: gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "Displace focus" -#: gtk/gtkbutton.c:507 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" @@ -960,51 +1052,43 @@ msgstr "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" -#: gtk/gtkbutton.c:520 gtk/gtkentry.c:696 gtk/gtkentry.c:1741 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Inner Border" -#: gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "Border between button edges and child." -#: gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "Image spacing" -#: gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "Spacing in pixels between the image and label" -#: gtk/gtkbutton.c:549 -msgid "Show button images" -msgstr "Show button images" - -#: gtk/gtkbutton.c:550 -msgid "Whether images should be shown on buttons" -msgstr "Whether images should be shown on buttons" - -#: gtk/gtkcalendar.c:478 +#: ../gtk/gtkcalendar.c:482 msgid "Year" msgstr "Year" -#: gtk/gtkcalendar.c:479 +#: ../gtk/gtkcalendar.c:483 msgid "The selected year" msgstr "The selected year" -#: gtk/gtkcalendar.c:492 +#: ../gtk/gtkcalendar.c:496 msgid "Month" msgstr "Month" -#: gtk/gtkcalendar.c:493 +#: ../gtk/gtkcalendar.c:497 msgid "The selected month (as a number between 0 and 11)" msgstr "The selected month (as a number between 0 and 11)" -#: gtk/gtkcalendar.c:507 +#: ../gtk/gtkcalendar.c:511 msgid "Day" msgstr "Day" -#: gtk/gtkcalendar.c:508 +#: ../gtk/gtkcalendar.c:512 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" @@ -1012,346 +1096,442 @@ msgstr "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" -#: gtk/gtkcalendar.c:522 +#: ../gtk/gtkcalendar.c:526 msgid "Show Heading" msgstr "Show Heading" -#: gtk/gtkcalendar.c:523 +#: ../gtk/gtkcalendar.c:527 msgid "If TRUE, a heading is displayed" msgstr "If TRUE, a heading is displayed" -#: gtk/gtkcalendar.c:537 +#: ../gtk/gtkcalendar.c:541 msgid "Show Day Names" msgstr "Show Day Names" -#: gtk/gtkcalendar.c:538 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, day names are displayed" msgstr "If TRUE, day names are displayed" -#: gtk/gtkcalendar.c:551 +#: ../gtk/gtkcalendar.c:555 msgid "No Month Change" msgstr "No Month Change" -#: gtk/gtkcalendar.c:552 +#: ../gtk/gtkcalendar.c:556 msgid "If TRUE, the selected month cannot be changed" msgstr "If TRUE, the selected month cannot be changed" -#: gtk/gtkcalendar.c:566 +#: ../gtk/gtkcalendar.c:570 msgid "Show Week Numbers" msgstr "Show Week Numbers" -#: gtk/gtkcalendar.c:567 +#: ../gtk/gtkcalendar.c:571 msgid "If TRUE, week numbers are displayed" msgstr "If TRUE, week numbers are displayed" -#: gtk/gtkcalendar.c:582 +#: ../gtk/gtkcalendar.c:586 msgid "Details Width" msgstr "Details Width" -#: gtk/gtkcalendar.c:583 +#: ../gtk/gtkcalendar.c:587 msgid "Details width in characters" msgstr "Details width in characters" -#: gtk/gtkcalendar.c:598 +#: ../gtk/gtkcalendar.c:602 msgid "Details Height" msgstr "Details Height" -#: gtk/gtkcalendar.c:599 +#: ../gtk/gtkcalendar.c:603 msgid "Details height in rows" msgstr "Details height in rows" -#: gtk/gtkcalendar.c:615 +#: ../gtk/gtkcalendar.c:619 msgid "Show Details" msgstr "Show Details" -#: gtk/gtkcalendar.c:616 +#: ../gtk/gtkcalendar.c:620 msgid "If TRUE, details are shown" msgstr "If TRUE, details are shown" -#: gtk/gtkcalendar.c:628 +#: ../gtk/gtkcalendar.c:632 msgid "Inner border" msgstr "Inner border" -#: gtk/gtkcalendar.c:629 +#: ../gtk/gtkcalendar.c:633 msgid "Inner border space" msgstr "Inner border space" -#: gtk/gtkcalendar.c:640 +#: ../gtk/gtkcalendar.c:644 msgid "Vertical separation" msgstr "Vertical separation" -#: gtk/gtkcalendar.c:641 +#: ../gtk/gtkcalendar.c:645 msgid "Space between day headers and main area" msgstr "Space between day headers and main area" -#: gtk/gtkcalendar.c:652 +#: ../gtk/gtkcalendar.c:656 msgid "Horizontal separation" msgstr "Horizontal separation" -#: gtk/gtkcalendar.c:653 +#: ../gtk/gtkcalendar.c:657 msgid "Space between week headers and main area" msgstr "Space between week headers and main area" -#: gtk/gtkcelleditable.c:53 +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "Space which is inserted between cells" + +#: ../gtk/gtkcellareabox.c:339 +msgid "Whether the cell expands" +msgstr "Whether the cell expands" + +#: ../gtk/gtkcellareabox.c:354 +msgid "Align" +msgstr "Align" + +#: ../gtk/gtkcellareabox.c:355 +msgid "Whether cell should align with adjacent rows" +msgstr "Whether cell should align with adjacent rows" + +#: ../gtk/gtkcellareabox.c:371 +msgid "Fixed Size" +msgstr "Fixed Size" + +#: ../gtk/gtkcellareabox.c:372 +msgid "Whether cells should be the same size in all rows" +msgstr "Whether cells should be the same size in all rows" + +#: ../gtk/gtkcellareabox.c:388 +msgid "Pack Type" +msgstr "Pack Type" + +#: ../gtk/gtkcellareabox.c:389 +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "Focus Cell" + +#: ../gtk/gtkcellarea.c:774 +msgid "The cell which currently has focus" +msgstr "The cell which currently has focus" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "Edited Cell" + +#: ../gtk/gtkcellarea.c:793 +msgid "The cell which is currently being edited" +msgstr "The cell which is currently being edited" + +#: ../gtk/gtkcellarea.c:811 +msgid "Edit Widget" +msgstr "Edit Widget" + +#: ../gtk/gtkcellarea.c:812 +msgid "The widget currently editing the edited cell" +msgstr "The widget currently editing the edited cell" + +#: ../gtk/gtkcellareacontext.c:127 +msgid "Area" +msgstr "Area" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "The Cell Area this context was created for" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "Minimum Width" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +msgid "Minimum cached width" +msgstr "Minimum cached width" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +msgid "Minimum Height" +msgstr "Minimum Height" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +msgid "Minimum cached height" +msgstr "Minimum cached height" + +#: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Editing Cancelled" -#: gtk/gtkcelleditable.c:54 +#: ../gtk/gtkcelleditable.c:54 msgid "Indicates that editing has been canceled" msgstr "Indicates that editing has been cancelled" -#: gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "Accelerator key" -#: gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "The keyval of the accelerator" -#: gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "Accelerator modifiers" -#: gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "The modifier mask of the accelerator" -#: gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "Accelerator keycode" -#: gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "The hardware keycode of the accelerator" -#: gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "Accelerator Mode" -#: gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "The type of accelerators" -#: gtk/gtkcellrenderer.c:226 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "mode" -#: gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "Editable mode of the CellRenderer" -#: gtk/gtkcellrenderer.c:235 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "visible" -#: gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "Display the cell" -#: gtk/gtkcellrenderer.c:243 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "Display the cell sensitive" -#: gtk/gtkcellrenderer.c:250 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "xalign" -#: gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "The x-align" -#: gtk/gtkcellrenderer.c:260 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "yalign" -#: gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "The y-align" -#: gtk/gtkcellrenderer.c:270 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "The xpad" -#: gtk/gtkcellrenderer.c:280 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "The ypad" -#: gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "width" -#: gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "The fixed width" -#: gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "height" -#: gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "The fixed height" -#: gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "Is Expander" -#: gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "Row has children" -#: gtk/gtkcellrenderer.c:319 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "Is Expanded" -#: gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "Row is an expander row, and is expanded" -#: gtk/gtkcellrenderer.c:327 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "Cell background colour name" -#: gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "Cell background colour as a string" -#: gtk/gtkcellrenderer.c:335 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "Cell background colour" -#: gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "Cell background colour as a GdkColor" -#: gtk/gtkcellrenderer.c:343 +#: ../gtk/gtkcellrenderer.c:395 +msgid "Cell background RGBA color" +msgstr "Cell background RGBA colour" + +#: ../gtk/gtkcellrenderer.c:396 +msgid "Cell background color as a GdkRGBA" +msgstr "Cell background colour as a GdkRGBA" + +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "Editing" -#: gtk/gtkcellrenderer.c:344 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "Whether the cell renderer is currently in editing mode" -#: gtk/gtkcellrenderer.c:352 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "Cell background set" -#: gtk/gtkcellrenderer.c:353 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "Whether this tag affects the cell background colour" -#: gtk/gtkcellrenderercombo.c:110 +#: ../gtk/gtkcellrenderercombo.c:109 msgid "Model" msgstr "Model" -#: gtk/gtkcellrenderercombo.c:111 +#: ../gtk/gtkcellrenderercombo.c:110 msgid "The model containing the possible values for the combo box" msgstr "The model containing the possible values for the combo box" -#: gtk/gtkcellrenderercombo.c:133 gtk/gtkcomboboxentry.c:104 +#: ../gtk/gtkcellrenderercombo.c:132 msgid "Text Column" msgstr "Text Column" -#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcomboboxentry.c:105 +#: ../gtk/gtkcellrenderercombo.c:133 msgid "A column in the data source model to get the strings from" msgstr "A column in the data source model to get the strings from" -#: gtk/gtkcellrenderercombo.c:151 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "Has Entry" -#: gtk/gtkcellrenderercombo.c:152 +#: ../gtk/gtkcellrenderercombo.c:151 msgid "If FALSE, don't allow to enter strings other than the chosen ones" msgstr "If FALSE, don't allow to enter strings other than the chosen ones" -#: gtk/gtkcellrendererpixbuf.c:120 +#: ../gtk/gtkcellrendererpixbuf.c:120 msgid "Pixbuf Object" msgstr "Pixbuf Object" -#: gtk/gtkcellrendererpixbuf.c:121 +#: ../gtk/gtkcellrendererpixbuf.c:121 msgid "The pixbuf to render" msgstr "The pixbuf to render" -#: gtk/gtkcellrendererpixbuf.c:128 +#: ../gtk/gtkcellrendererpixbuf.c:128 msgid "Pixbuf Expander Open" msgstr "Pixbuf Expander Open" -#: gtk/gtkcellrendererpixbuf.c:129 +#: ../gtk/gtkcellrendererpixbuf.c:129 msgid "Pixbuf for open expander" msgstr "Pixbuf for open expander" -#: gtk/gtkcellrendererpixbuf.c:136 +#: ../gtk/gtkcellrendererpixbuf.c:136 msgid "Pixbuf Expander Closed" msgstr "Pixbuf Expander Closed" -#: gtk/gtkcellrendererpixbuf.c:137 +#: ../gtk/gtkcellrendererpixbuf.c:137 msgid "Pixbuf for closed expander" msgstr "Pixbuf for closed expander" -#: gtk/gtkcellrendererpixbuf.c:144 gtk/gtkimage.c:244 gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:252 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "Stock ID" -#: gtk/gtkcellrendererpixbuf.c:145 +#: ../gtk/gtkcellrendererpixbuf.c:145 msgid "The stock ID of the stock icon to render" msgstr "The stock ID of the stock icon to render" -#: gtk/gtkcellrendererpixbuf.c:152 gtk/gtkcellrendererspinner.c:153 -#: gtk/gtkrecentmanager.c:305 gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "Size" -#: gtk/gtkcellrendererpixbuf.c:153 +#: ../gtk/gtkcellrendererpixbuf.c:153 msgid "The GtkIconSize value that specifies the size of the rendered icon" msgstr "The GtkIconSize value that specifies the size of the rendered icon" -#: gtk/gtkcellrendererpixbuf.c:162 +#: ../gtk/gtkcellrendererpixbuf.c:162 msgid "Detail" msgstr "Detail" -#: gtk/gtkcellrendererpixbuf.c:163 +#: ../gtk/gtkcellrendererpixbuf.c:163 msgid "Render detail to pass to the theme engine" msgstr "Render detail to pass to the theme engine" -#: gtk/gtkcellrendererpixbuf.c:196 +#: ../gtk/gtkcellrendererpixbuf.c:196 msgid "Follow State" msgstr "Follow State" -#: gtk/gtkcellrendererpixbuf.c:197 +#: ../gtk/gtkcellrendererpixbuf.c:197 msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Whether the rendered pixbuf should be coloured according to the state" -#: gtk/gtkcellrendererpixbuf.c:214 gtk/gtkimage.c:319 gtk/gtkwindow.c:662 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:327 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "Icon" -#: gtk/gtkcellrendererprogress.c:127 +#: ../gtk/gtkcellrendererprogress.c:127 msgid "Value of the progress bar" msgstr "Value of the progress bar" -#: gtk/gtkcellrendererprogress.c:144 gtk/gtkcellrenderertext.c:231 -#: gtk/gtkentry.c:739 gtk/gtkentrybuffer.c:352 gtk/gtkmessagedialog.c:226 -#: gtk/gtkprogressbar.c:150 gtk/gtktextbuffer.c:210 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "Text" -#: gtk/gtkcellrendererprogress.c:145 +#: ../gtk/gtkcellrendererprogress.c:145 msgid "Text on the progress bar" msgstr "Text on the progress bar" -#: gtk/gtkcellrendererprogress.c:168 gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 msgid "Pulse" msgstr "Pulse" -#: gtk/gtkcellrendererprogress.c:169 +#: ../gtk/gtkcellrendererprogress.c:169 msgid "" "Set this to positive values to indicate that some progress is made, but you " "don't know how much." @@ -1359,11 +1539,11 @@ msgstr "" "Set this to positive values to indicate that some progress is made, but you " "don't know how much." -#: gtk/gtkcellrendererprogress.c:185 +#: ../gtk/gtkcellrendererprogress.c:185 msgid "Text x alignment" msgstr "Text x alignment" -#: gtk/gtkcellrendererprogress.c:186 +#: ../gtk/gtkcellrendererprogress.c:186 msgid "" "The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -1371,230 +1551,251 @@ msgstr "" "The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." -#: gtk/gtkcellrendererprogress.c:202 +#: ../gtk/gtkcellrendererprogress.c:202 msgid "Text y alignment" msgstr "Text y alignment" -#: gtk/gtkcellrendererprogress.c:203 +#: ../gtk/gtkcellrendererprogress.c:203 msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "The vertical text alignment, from 0 (top) to 1 (bottom)." -#: gtk/gtkcellrendererprogress.c:214 gtk/gtkprogressbar.c:126 -#: gtk/gtkrange.c:427 +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:423 msgid "Inverted" msgstr "Inverted" -#: gtk/gtkcellrendererprogress.c:215 gtk/gtkprogressbar.c:127 -#, fuzzy +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 msgid "Invert the direction in which the progress bar grows" -msgstr "Orientation and growth direction of the progress bar" +msgstr "Invert the direction in which the progress bar grows" -#: gtk/gtkcellrendererspin.c:91 gtk/gtkrange.c:419 gtk/gtkscalebutton.c:239 -#: gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:415 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "Adjustment" -#: gtk/gtkcellrendererspin.c:92 gtk/gtkspinbutton.c:229 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "The adjustment that holds the value of the spin button" -#: gtk/gtkcellrendererspin.c:107 +#: ../gtk/gtkcellrendererspin.c:107 msgid "Climb rate" msgstr "Climb rate" -#: gtk/gtkcellrendererspin.c:108 gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "The acceleration rate when you hold down a button" -#: gtk/gtkcellrendererspin.c:121 gtk/gtkscale.c:244 gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "Digits" -#: gtk/gtkcellrendererspin.c:122 gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "The number of decimal places to display" -#: gtk/gtkcellrendererspinner.c:119 gtk/gtkcheckmenuitem.c:105 -#: gtk/gtkmenu.c:525 gtk/gtkspinner.c:131 gtk/gtktoggleaction.c:133 -#: gtk/gtktogglebutton.c:115 gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:516 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:743 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "Active" -#: gtk/gtkcellrendererspinner.c:120 +#: ../gtk/gtkcellrendererspinner.c:120 msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Whether the spinner is active (ie. shown) in the cell" -#: gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:138 msgid "Pulse of the spinner" msgstr "Pulse of the spinner" -#: gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:152 msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "The GtkIconSize value that specifies the size of the rendered spinner" -#: gtk/gtkcellrenderertext.c:232 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Text to render" -#: gtk/gtkcellrenderertext.c:239 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Markup" -#: gtk/gtkcellrenderertext.c:240 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Marked up text to render" -#: gtk/gtkcellrenderertext.c:247 gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Attributes" -#: gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "A list of style attributes to apply to the text of the renderer" -#: gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Single Paragraph Mode" -#: gtk/gtkcellrenderertext.c:256 +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "Whether to keep all text in a single paragraph" -#: gtk/gtkcellrenderertext.c:264 gtk/gtkcellview.c:178 gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:180 msgid "Background color name" msgstr "Background colour name" -#: gtk/gtkcellrenderertext.c:265 gtk/gtkcellview.c:179 gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:181 msgid "Background color as a string" msgstr "Background colour as a string" -#: gtk/gtkcellrenderertext.c:272 gtk/gtkcellview.c:185 gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:188 msgid "Background color" msgstr "Background colour" -#: gtk/gtkcellrenderertext.c:273 gtk/gtkcellview.c:186 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "Background colour as a GdkColor" -#: gtk/gtkcellrenderertext.c:280 gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:311 +msgid "Background color as RGBA" +msgstr "Background colour as RGBA" + +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 +msgid "Background color as a GdkRGBA" +msgstr "Background colour as a GdkRGBA" + +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:204 msgid "Foreground color name" msgstr "Foreground colour name" -#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:205 msgid "Foreground color as a string" msgstr "Foreground colour as a string" -#: gtk/gtkcellrenderertext.c:288 gtk/gtktexttag.c:210 -#: gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:212 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "Foreground colour" -#: gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Foreground colour as a GdkColor" -#: gtk/gtkcellrenderertext.c:297 gtk/gtkentry.c:663 gtk/gtktexttag.c:227 -#: gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:341 +msgid "Foreground color as RGBA" +msgstr "Foreground colour as RGBA" + +#: ../gtk/gtkcellrenderertext.c:342 +msgid "Foreground color as a GdkRGBA" +msgstr "Foreground colour as a GdkRGBA" + +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:229 ../gtk/gtktextview.c:685 msgid "Editable" msgstr "Editable" -#: gtk/gtkcellrenderertext.c:298 gtk/gtktexttag.c:228 gtk/gtktextview.c:669 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:230 +#: ../gtk/gtktextview.c:686 msgid "Whether the text can be modified by the user" msgstr "Whether the text can be modified by the user" -#: gtk/gtkcellrenderertext.c:305 gtk/gtkcellrenderertext.c:313 -#: gtk/gtktexttag.c:243 gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktexttag.c:253 msgid "Font" msgstr "Font" -#: gtk/gtkcellrenderertext.c:306 gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:246 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "Font description as a string, e.g. \"Sans Italic 12\"" -#: gtk/gtkcellrenderertext.c:314 gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:254 msgid "Font description as a PangoFontDescription struct" msgstr "Font description as a PangoFontDescription struct" -#: gtk/gtkcellrenderertext.c:322 gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:261 msgid "Font family" msgstr "Font family" -#: gtk/gtkcellrenderertext.c:323 gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:262 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" -#: gtk/gtkcellrenderertext.c:330 gtk/gtkcellrenderertext.c:331 -#: gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:269 msgid "Font style" msgstr "Font style" -#: gtk/gtkcellrenderertext.c:339 gtk/gtkcellrenderertext.c:340 -#: gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:278 msgid "Font variant" msgstr "Font variant" -#: gtk/gtkcellrenderertext.c:348 gtk/gtkcellrenderertext.c:349 -#: gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:287 msgid "Font weight" msgstr "Font weight" -#: gtk/gtkcellrenderertext.c:358 gtk/gtkcellrenderertext.c:359 -#: gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:298 msgid "Font stretch" msgstr "Font stretch" -#: gtk/gtkcellrenderertext.c:367 gtk/gtkcellrenderertext.c:368 -#: gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:307 msgid "Font size" msgstr "Font size" -#: gtk/gtkcellrenderertext.c:377 gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:327 msgid "Font points" msgstr "Font points" -#: gtk/gtkcellrenderertext.c:378 gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:328 msgid "Font size in points" msgstr "Font size in points" -#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:317 msgid "Font scale" msgstr "Font scale" -#: gtk/gtkcellrenderertext.c:388 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Font scaling factor" -#: gtk/gtkcellrenderertext.c:397 gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:396 msgid "Rise" msgstr "Rise" -#: gtk/gtkcellrenderertext.c:398 +#: ../gtk/gtkcellrenderertext.c:451 msgid "" "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Offset of text above the baseline (below the baseline if rise is negative)" -#: gtk/gtkcellrenderertext.c:409 gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:436 msgid "Strikethrough" msgstr "Strikethrough" -#: gtk/gtkcellrenderertext.c:410 gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:437 msgid "Whether to strike through the text" msgstr "Whether to strike through the text" -#: gtk/gtkcellrenderertext.c:417 gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:444 msgid "Underline" msgstr "Underline" -#: gtk/gtkcellrenderertext.c:418 gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:445 msgid "Style of underline for this text" msgstr "Style of underline for this text" -#: gtk/gtkcellrenderertext.c:426 gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:356 msgid "Language" msgstr "Language" -#: gtk/gtkcellrenderertext.c:427 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1604,11 +1805,12 @@ msgstr "" "when rendering the text. If you don't understand this parameter, you " "probably don't need it" -#: gtk/gtkcellrenderertext.c:447 gtk/gtklabel.c:681 gtk/gtkprogressbar.c:180 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:207 msgid "Ellipsize" msgstr "Ellipsis location" -#: gtk/gtkcellrenderertext.c:448 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1616,28 +1818,28 @@ msgstr "" "The preferred place to place an ellipsis in the string, if the cell renderer " "does not have enough room to display the entire string" -#: gtk/gtkcellrenderertext.c:467 gtk/gtkfilechooserbutton.c:413 -#: gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Width In Characters" -#: gtk/gtkcellrenderertext.c:468 gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "The desired width of the label, in characters" -#: gtk/gtkcellrenderertext.c:492 gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Maximum Width In Characters" -#: gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" msgstr "The maximum width of the cell, in characters" -#: gtk/gtkcellrenderertext.c:511 gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:453 msgid "Wrap mode" msgstr "Wrap mode" -#: gtk/gtkcellrenderertext.c:512 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1645,390 +1847,440 @@ msgstr "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" -#: gtk/gtkcellrenderertext.c:531 gtk/gtkcombobox.c:700 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "Wrap width" -#: gtk/gtkcellrenderertext.c:532 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "The width at which the text is wrapped" -#: gtk/gtkcellrenderertext.c:552 gtk/gtktreeviewcolumn.c:301 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "Alignment" -#: gtk/gtkcellrenderertext.c:553 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "How to align the lines" -#: gtk/gtkcellrenderertext.c:565 gtk/gtkcellview.c:208 gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:542 msgid "Background set" msgstr "Background set" -#: gtk/gtkcellrenderertext.c:566 gtk/gtkcellview.c:209 gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:543 msgid "Whether this tag affects the background color" msgstr "Whether this tag affects the background colour" -#: gtk/gtkcellrenderertext.c:569 gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:550 msgid "Foreground set" msgstr "Foreground set" -#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:551 msgid "Whether this tag affects the foreground color" msgstr "Whether this tag affects the foreground colour" -#: gtk/gtkcellrenderertext.c:573 gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:554 msgid "Editability set" msgstr "Editability set" -#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:555 msgid "Whether this tag affects text editability" msgstr "Whether this tag affects text editability" -#: gtk/gtkcellrenderertext.c:577 gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:558 msgid "Font family set" msgstr "Font family set" -#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the font family" msgstr "Whether this tag affects the font family" -#: gtk/gtkcellrenderertext.c:581 gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:562 msgid "Font style set" msgstr "Font style set" -#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:563 msgid "Whether this tag affects the font style" msgstr "Whether this tag affects the font style" -#: gtk/gtkcellrenderertext.c:585 gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:566 msgid "Font variant set" msgstr "Font variant set" -#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the font variant" msgstr "Whether this tag affects the font variant" -#: gtk/gtkcellrenderertext.c:589 gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:570 msgid "Font weight set" msgstr "Font weight set" -#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects the font weight" msgstr "Whether this tag affects the font weight" -#: gtk/gtkcellrenderertext.c:593 gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:574 msgid "Font stretch set" msgstr "Font stretch set" -#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font stretch" msgstr "Whether this tag affects the font stretch" -#: gtk/gtkcellrenderertext.c:597 gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:578 msgid "Font size set" msgstr "Font size set" -#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font size" msgstr "Whether this tag affects the font size" -#: gtk/gtkcellrenderertext.c:601 gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:582 msgid "Font scale set" msgstr "Font scale set" -#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:583 msgid "Whether this tag scales the font size by a factor" msgstr "Whether this tag scales the font size by a factor" -#: gtk/gtkcellrenderertext.c:605 gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:602 msgid "Rise set" msgstr "Rise set" -#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:603 msgid "Whether this tag affects the rise" msgstr "Whether this tag affects the rise" -#: gtk/gtkcellrenderertext.c:609 gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:618 msgid "Strikethrough set" msgstr "Strikethrough set" -#: gtk/gtkcellrenderertext.c:610 gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects strikethrough" msgstr "Whether this tag affects strikethrough" -#: gtk/gtkcellrenderertext.c:613 gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:626 msgid "Underline set" msgstr "Underline set" -#: gtk/gtkcellrenderertext.c:614 gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects underlining" msgstr "Whether this tag affects underlining" -#: gtk/gtkcellrenderertext.c:617 gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:590 msgid "Language set" msgstr "Language set" -#: gtk/gtkcellrenderertext.c:618 gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the language the text is rendered as" msgstr "Whether this tag affects the language the text is rendered as" -#: gtk/gtkcellrenderertext.c:621 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Ellipsis placement set" -#: gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Whether this tag affects the placement of the ellipsis" -#: gtk/gtkcellrenderertext.c:625 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Align set" -#: gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Whether this tag affects the alignment mode" -#: gtk/gtkcellrenderertoggle.c:128 +#: ../gtk/gtkcellrenderertoggle.c:128 msgid "Toggle state" msgstr "Toggle state" -#: gtk/gtkcellrenderertoggle.c:129 +#: ../gtk/gtkcellrenderertoggle.c:129 msgid "The toggle state of the button" msgstr "The toggle state of the button" -#: gtk/gtkcellrenderertoggle.c:136 +#: ../gtk/gtkcellrenderertoggle.c:136 msgid "Inconsistent state" msgstr "Inconsistent state" -#: gtk/gtkcellrenderertoggle.c:137 +#: ../gtk/gtkcellrenderertoggle.c:137 msgid "The inconsistent state of the button" msgstr "The inconsistent state of the button" -#: gtk/gtkcellrenderertoggle.c:144 +#: ../gtk/gtkcellrenderertoggle.c:144 msgid "Activatable" msgstr "Activatable" -#: gtk/gtkcellrenderertoggle.c:145 +#: ../gtk/gtkcellrenderertoggle.c:145 msgid "The toggle button can be activated" msgstr "The toggle button can be activated" -#: gtk/gtkcellrenderertoggle.c:152 +#: ../gtk/gtkcellrenderertoggle.c:152 msgid "Radio state" msgstr "Radio state" -#: gtk/gtkcellrenderertoggle.c:153 +#: ../gtk/gtkcellrenderertoggle.c:153 msgid "Draw the toggle button as a radio button" msgstr "Draw the toggle button as a radio button" -#: gtk/gtkcellrenderertoggle.c:160 +#: ../gtk/gtkcellrenderertoggle.c:160 msgid "Indicator size" msgstr "Indicator size" -#: gtk/gtkcellrenderertoggle.c:161 gtk/gtkcheckbutton.c:72 -#: gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Size of check or radio indicator" -#: gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:210 +msgid "Background RGBA color" +msgstr "Background RGBA colour" + +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "CellView model" -#: gtk/gtkcellview.c:201 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "The model for cell view" -#: gtk/gtkcheckbutton.c:71 gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "Cell Area" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "The GtkCellArea used to layout cells" + +#: ../gtk/gtkcellview.c:265 +msgid "Cell Area Context" +msgstr "Cell Area Context" + +#: ../gtk/gtkcellview.c:266 +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "The GtkCellAreaContext used to compute the geometry of the cell view" + +#: ../gtk/gtkcellview.c:283 +msgid "Draw Sensitive" +msgstr "Draw Sensitive" + +#: ../gtk/gtkcellview.c:284 +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Whether to force cells to be drawn in a sensitive state" + +#: ../gtk/gtkcellview.c:302 +msgid "Fit Model" +msgstr "Fit Model" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "Whether to request enough space for every row in the model" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Indicator Size" -#: gtk/gtkcheckbutton.c:79 gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "Indicator Spacing" -#: gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "Spacing around check or radio indicator" -#: gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Whether the menu item is checked" -#: gtk/gtkcheckmenuitem.c:113 gtk/gtktogglebutton.c:123 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inconsistent" -#: gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "Whether to display an \"inconsistent\" state" -#: gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Draw as radio menu item" -#: gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "Whether the menu item looks like a radio menu item" -#: gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "Use alpha" -#: gtk/gtkcolorbutton.c:160 +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" msgstr "Whether to give the colour an alpha value" -#: gtk/gtkcolorbutton.c:174 gtk/gtkfilechooserbutton.c:399 -#: gtk/gtkfontbutton.c:140 gtk/gtkprintjob.c:115 gtk/gtkstatusicon.c:415 -#: gtk/gtktreeviewcolumn.c:268 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:126 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "Title" -#: gtk/gtkcolorbutton.c:175 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "The title of the colour selection dialogue" -#: gtk/gtkcolorbutton.c:189 gtk/gtkcolorsel.c:323 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Current Colour" -#: gtk/gtkcolorbutton.c:190 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "The selected colour" -#: gtk/gtkcolorbutton.c:204 gtk/gtkcolorsel.c:330 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Current Alpha" -#: gtk/gtkcolorbutton.c:205 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "The selected opacity value (0 fully transparent, 65535 fully opaque)" -#: gtk/gtkcolorsel.c:309 +#: ../gtk/gtkcolorbutton.c:230 +msgid "Current RGBA Color" +msgstr "Current RGBA Colour" + +#: ../gtk/gtkcolorbutton.c:231 +msgid "The selected RGBA color" +msgstr "The selected RGBA colour" + +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Has Opacity Control" -#: gtk/gtkcolorsel.c:310 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "Whether the colour selector should allow setting opacity" -#: gtk/gtkcolorsel.c:316 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Has palette" -#: gtk/gtkcolorsel.c:317 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Whether a palette should be used" -#: gtk/gtkcolorsel.c:324 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "The current colour" -#: gtk/gtkcolorsel.c:331 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "The current opacity value (0 fully transparent, 65535 fully opaque)" -#: gtk/gtkcolorsel.c:345 -msgid "Custom palette" -msgstr "Custom palette" +#: ../gtk/gtkcolorsel.c:360 +msgid "Current RGBA" +msgstr "Current RGBA" -#: gtk/gtkcolorsel.c:346 -msgid "Palette to use in the color selector" -msgstr "Palette to use in the colour selector" +#: ../gtk/gtkcolorsel.c:361 +msgid "The current RGBA color" +msgstr "The current RGBA colour" -#: gtk/gtkcolorseldialog.c:110 +#: ../gtk/gtkcolorseldialog.c:110 msgid "Color Selection" msgstr "Colour Selection" -#: gtk/gtkcolorseldialog.c:111 +#: ../gtk/gtkcolorseldialog.c:111 msgid "The color selection embedded in the dialog." msgstr "The colour selection embedded in the dialogue." -#: gtk/gtkcolorseldialog.c:117 +#: ../gtk/gtkcolorseldialog.c:117 msgid "OK Button" msgstr "OK Button" -#: gtk/gtkcolorseldialog.c:118 +#: ../gtk/gtkcolorseldialog.c:118 msgid "The OK button of the dialog." msgstr "The OK button of the dialogue." -#: gtk/gtkcolorseldialog.c:124 +#: ../gtk/gtkcolorseldialog.c:124 msgid "Cancel Button" msgstr "Cancel Button" -#: gtk/gtkcolorseldialog.c:125 +#: ../gtk/gtkcolorseldialog.c:125 msgid "The cancel button of the dialog." msgstr "The cancel button of the dialogue." -#: gtk/gtkcolorseldialog.c:131 +#: ../gtk/gtkcolorseldialog.c:131 msgid "Help Button" msgstr "Help Button" -#: gtk/gtkcolorseldialog.c:132 +#: ../gtk/gtkcolorseldialog.c:132 msgid "The help button of the dialog." msgstr "The help button of the dialogue." -#: gtk/gtkcombobox.c:683 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "ComboBox model" -#: gtk/gtkcombobox.c:684 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "The model for the combo box" -#: gtk/gtkcombobox.c:701 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "Wrap width for laying out the items in a grid" -#: gtk/gtkcombobox.c:723 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "Row span column" -#: gtk/gtkcombobox.c:724 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "TreeModel column containing the row span values" -#: gtk/gtkcombobox.c:745 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "Column span column" -#: gtk/gtkcombobox.c:746 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "TreeModel column containing the column span values" -#: gtk/gtkcombobox.c:767 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "Active item" -#: gtk/gtkcombobox.c:768 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "The item which is currently active" -#: gtk/gtkcombobox.c:787 gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Add tearoffs to menus" -#: gtk/gtkcombobox.c:788 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "Whether dropdowns should have a tearoff menu item" -#: gtk/gtkcombobox.c:803 gtk/gtkentry.c:688 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Has Frame" -#: gtk/gtkcombobox.c:804 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "Whether the combo box draws a frame around the child" -#: gtk/gtkcombobox.c:812 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Whether the combo box grabs focus when it is clicked with the mouse" -#: gtk/gtkcombobox.c:827 gtk/gtkmenu.c:580 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:571 msgid "Tearoff Title" msgstr "Tearoff Title" -#: gtk/gtkcombobox.c:828 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" @@ -2036,147 +2288,195 @@ msgstr "" "A title that may be displayed by the window manager when the popup is torn-" "off" -#: gtk/gtkcombobox.c:845 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "Popup shown" -#: gtk/gtkcombobox.c:846 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "Whether the combo's dropdown is shown" -#: gtk/gtkcombobox.c:862 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "Button Sensitivity" -#: gtk/gtkcombobox.c:863 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Whether the dropdown button is sensitive when the model is empty" -#: gtk/gtkcombobox.c:870 +#: ../gtk/gtkcombobox.c:859 +msgid "Whether combo box has an entry" +msgstr "Whether combo box has an entry" + +#: ../gtk/gtkcombobox.c:874 +msgid "Entry Text Column" +msgstr "Entry Text Column" + +#: ../gtk/gtkcombobox.c:875 +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" +msgstr "" +"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" + +#: ../gtk/gtkcombobox.c:892 +msgid "ID Column" +msgstr "ID Column" + +#: ../gtk/gtkcombobox.c:893 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" + +#: ../gtk/gtkcombobox.c:908 +msgid "Active id" +msgstr "Active id" + +#: ../gtk/gtkcombobox.c:909 +msgid "The value of the id column for the active row" +msgstr "The value of the id column for the active row" + +#: ../gtk/gtkcombobox.c:924 +msgid "Popup Fixed Width" +msgstr "Popup Fixed Width" + +#: ../gtk/gtkcombobox.c:925 +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" + +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "Appears as list" -#: gtk/gtkcombobox.c:871 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Whether dropdowns should look like lists rather than menus" -#: gtk/gtkcombobox.c:887 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "Arrow Size" -#: gtk/gtkcombobox.c:888 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "The minimum size of the arrow in the combo box" -#: gtk/gtkcombobox.c:903 gtk/gtkentry.c:788 gtk/gtkhandlebox.c:182 -#: gtk/gtkmenubar.c:189 gtk/gtkstatusbar.c:244 gtk/gtktoolbar.c:577 -#: gtk/gtkviewport.c:158 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:196 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:154 msgid "Shadow type" msgstr "Shadow type" -#: gtk/gtkcombobox.c:904 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "Which kind of shadow to draw around the combo box" -#: gtk/gtkcontainer.c:259 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "Resize mode" -#: gtk/gtkcontainer.c:260 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "Specify how resize events are handled" -#: gtk/gtkcontainer.c:267 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "Border width" -#: gtk/gtkcontainer.c:268 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "The width of the empty border outside the containers children" -#: gtk/gtkcontainer.c:276 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "Child" -#: gtk/gtkcontainer.c:277 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "Can be used to add a new child to the container" -#: gtk/gtkdialog.c:165 gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Content area border" -#: gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "Width of border around the main dialogue area" -#: gtk/gtkdialog.c:183 gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Content area spacing" -#: gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "Spacing between elements of the main dialogue area" -#: gtk/gtkdialog.c:191 gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Button spacing" -#: gtk/gtkdialog.c:192 gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Spacing between buttons" -#: gtk/gtkdialog.c:200 gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Action area border" -#: gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" msgstr "Width of border around the button area at the bottom of the dialogue" -#: gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Text Buffer" -#: gtk/gtkentry.c:636 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Text buffer object which actually stores entry text" -#: gtk/gtkentry.c:643 gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Cursor Position" -#: gtk/gtkentry.c:644 gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "The current position of the insertion cursor in chars" -#: gtk/gtkentry.c:653 gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Selection Bound" -#: gtk/gtkentry.c:654 gtk/gtklabel.c:655 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "" "The position of the opposite end of the selection from the cursor in chars" msgstr "" "The position of the opposite end of the selection from the cursor in chars" -#: gtk/gtkentry.c:664 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Whether the entry contents can be edited" -#: gtk/gtkentry.c:671 gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Maximum length" -#: gtk/gtkentry.c:672 gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "Maximum number of characters for this entry. Zero if no maximum" -#: gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Visibility" -#: gtk/gtkentry.c:681 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" @@ -2184,30 +2484,30 @@ msgstr "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" -#: gtk/gtkentry.c:689 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALSE removes outside bevel from entry" -#: gtk/gtkentry.c:697 +#: ../gtk/gtkentry.c:788 msgid "" "Border between text and frame. Overrides the inner-border style property" msgstr "" "Border between text and frame. Overrides the inner-border style property" -#: gtk/gtkentry.c:704 gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Invisible character" -#: gtk/gtkentry.c:705 gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "The character to use when masking entry contents (in \"password mode\")" -#: gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Activates default" -#: gtk/gtkentry.c:713 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2215,31 +2515,31 @@ msgstr "" "Whether to activate the default widget (such as the default button in a " "dialogue) when Enter is pressed" -#: gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Width in chars" -#: gtk/gtkentry.c:720 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Number of characters to leave space for in the entry" -#: gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Scroll offset" -#: gtk/gtkentry.c:730 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "Number of pixels of the entry scrolled off the screen to the left" -#: gtk/gtkentry.c:740 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "The contents of the entry" -#: gtk/gtkentry.c:755 gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X align" -#: gtk/gtkentry.c:756 gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2247,63 +2547,63 @@ msgstr "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." -#: gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Truncate multiline" -#: gtk/gtkentry.c:773 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Whether to truncate multiline pastes to one line." -#: gtk/gtkentry.c:789 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "Which kind of shadow to draw around the entry when has-frame is set" -#: gtk/gtkentry.c:804 gtk/gtktextview.c:748 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:765 msgid "Overwrite mode" msgstr "Overwrite mode" -#: gtk/gtkentry.c:805 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Whether new text overwrites existing text" -#: gtk/gtkentry.c:819 gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Text length" -#: gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Length of the text currently in the entry" -#: gtk/gtkentry.c:835 +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" msgstr "Invisible character set" -#: gtk/gtkentry.c:836 +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "Whether the invisible character has been set" -#: gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Caps Lock warning" -#: gtk/gtkentry.c:855 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "Whether password entries will show a warning when Caps Lock is on" -#: gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Progress Fraction" -#: gtk/gtkentry.c:870 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "The current fraction of the task that's been completed" -#: gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Progress Pulse Step" -#: gtk/gtkentry.c:888 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2311,263 +2611,247 @@ msgstr "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" -#: gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Primary pixbuf" -#: gtk/gtkentry.c:905 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "Primary pixbuf for the entry" -#: gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Secondary pixbuf" -#: gtk/gtkentry.c:920 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "Secondary pixbuf for the entry" -#: gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "Primary stock ID" -#: gtk/gtkentry.c:935 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "Stock ID for primary icon" -#: gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "Secondary stock ID" -#: gtk/gtkentry.c:950 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "Stock ID for secondary icon" -#: gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Primary icon name" -#: gtk/gtkentry.c:965 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Icon name for primary icon" -#: gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Secondary icon name" -#: gtk/gtkentry.c:980 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "Icon name for secondary icon" -#: gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "Primary GIcon" -#: gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "GIcon for primary icon" -#: gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "Secondary GIcon" -#: gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "GIcon for secondary icon" -#: gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Primary storage type" -#: gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "The representation being used for primary icon" -#: gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Secondary storage type" -#: gtk/gtkentry.c:1041 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "The representation being used for secondary icon" -#: gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Primary icon activatable" -#: gtk/gtkentry.c:1063 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Whether the primary icon is activatable" -#: gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Secondary icon activatable" -#: gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Whether the secondary icon is activatable" -#: gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Primary icon sensitive" -#: gtk/gtkentry.c:1107 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Whether the primary icon is sensitive" -#: gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Secondary icon sensitive" -#: gtk/gtkentry.c:1129 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Whether the secondary icon is sensitive" -#: gtk/gtkentry.c:1145 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Primary icon tooltip text" -#: gtk/gtkentry.c:1146 gtk/gtkentry.c:1182 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "The contents of the tooltip on the primary icon" -#: gtk/gtkentry.c:1162 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Secondary icon tooltip text" -#: gtk/gtkentry.c:1163 gtk/gtkentry.c:1201 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "The contents of the tooltip on the secondary icon" -#: gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Primary icon tooltip markup" -#: gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Secondary icon tooltip markup" -#: gtk/gtkentry.c:1220 gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:793 msgid "IM module" msgstr "IM module" -#: gtk/gtkentry.c:1221 gtk/gtktextview.c:777 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:794 msgid "Which IM module should be used" msgstr "Which IM module should be used" -#: gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Icon Prelight" -#: gtk/gtkentry.c:1236 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "Whether activatable icons should prelight when hovered" -#: gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Progress Border" -#: gtk/gtkentry.c:1250 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "Border around the progress bar" -#: gtk/gtkentry.c:1742 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Border between text and frame." -#: gtk/gtkentry.c:1747 gtk/gtklabel.c:903 -msgid "Select on focus" -msgstr "Select on focus" - -#: gtk/gtkentry.c:1748 -msgid "Whether to select the contents of an entry when it is focused" -msgstr "Whether to select the contents of an entry when it is focused" - -#: gtk/gtkentry.c:1762 -msgid "Password Hint Timeout" -msgstr "Password Hint Timeout" - -#: gtk/gtkentry.c:1763 -msgid "How long to show the last input character in hidden entries" -msgstr "How long to show the last input character in hidden entries" - -#: gtk/gtkentrybuffer.c:353 +#: ../gtk/gtkentrybuffer.c:353 msgid "The contents of the buffer" msgstr "The contents of the buffer" -#: gtk/gtkentrybuffer.c:368 +#: ../gtk/gtkentrybuffer.c:368 msgid "Length of the text currently in the buffer" msgstr "Length of the text currently in the buffer" -#: gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "Completion Model" -#: gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "The model to find matches in" -#: gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "Minimum Key Length" -#: gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "Minimum length of the search key in order to look up matches" -#: gtk/gtkentrycompletion.c:304 gtk/gtkiconview.c:587 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 msgid "Text column" msgstr "Text column" -#: gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "The column of the model containing the strings." -#: gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "Inline completion" -#: gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "Whether the common prefix should be inserted automatically" -#: gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "Popup completion" -#: gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "Whether the completions should be shown in a popup window" -#: gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "Popup set width" -#: gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "If TRUE, the popup window will have the same size as the entry" -#: gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "Popup single match" -#: gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." msgstr "If TRUE, the popup window will appear for a single match." -#: gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "Inline selection" -#: gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "Your description here" -#: gtk/gtkeventbox.c:93 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "Visible Window" -#: gtk/gtkeventbox.c:94 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2575,11 +2859,11 @@ msgstr "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." -#: gtk/gtkeventbox.c:100 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "Above child" -#: gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2587,154 +2871,156 @@ msgstr "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." -#: gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "Expanded" -#: gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Whether the expander has been opened to reveal the child widget" -#: gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "Text of the expander's label" -#: gtk/gtkexpander.c:225 gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Use markup" -#: gtk/gtkexpander.c:226 gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "The text of the label includes XML markup. See pango_parse_markup()" -#: gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "Space to put between the label and the child" -#: gtk/gtkexpander.c:243 gtk/gtkframe.c:165 gtk/gtktoolbutton.c:216 -#: gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:166 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "Label widget" msgstr "Label widget" -#: gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "A widget to display in place of the usual expander label" -#: gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:329 msgid "Label fill" msgstr "Label fill" -#: gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" msgstr "Whether the label widget should fill all available horizontal space" -#: gtk/gtkexpander.c:258 gtk/gtktoolitemgroup.c:1606 gtk/gtktreeview.c:776 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1623 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "Expander Size" -#: gtk/gtkexpander.c:259 gtk/gtktoolitemgroup.c:1607 gtk/gtktreeview.c:777 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "Size of the expander arrow" -#: gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "Spacing around expander arrow" -#: gtk/gtkfilechooserbutton.c:368 +#: ../gtk/gtkfilechooserbutton.c:366 msgid "Dialog" msgstr "Dialogue" -#: gtk/gtkfilechooserbutton.c:369 +#: ../gtk/gtkfilechooserbutton.c:367 msgid "The file chooser dialog to use." msgstr "The file chooser dialogue to use." -#: gtk/gtkfilechooserbutton.c:400 +#: ../gtk/gtkfilechooserbutton.c:398 msgid "The title of the file chooser dialog." msgstr "The title of the file chooser dialogue." -#: gtk/gtkfilechooserbutton.c:414 +#: ../gtk/gtkfilechooserbutton.c:412 msgid "The desired width of the button widget, in characters." msgstr "The desired width of the button widget, in characters." -#: gtk/gtkfilechooser.c:740 +#: ../gtk/gtkfilechooser.c:740 msgid "Action" msgstr "Action" -#: gtk/gtkfilechooser.c:741 +#: ../gtk/gtkfilechooser.c:741 msgid "The type of operation that the file selector is performing" msgstr "The type of operation that the file selector is performing" -#: gtk/gtkfilechooser.c:747 gtk/gtkrecentchooser.c:264 +#: ../gtk/gtkfilechooser.c:747 ../gtk/gtkrecentchooser.c:264 msgid "Filter" msgstr "Filter" -#: gtk/gtkfilechooser.c:748 +#: ../gtk/gtkfilechooser.c:748 msgid "The current filter for selecting which files are displayed" msgstr "The current filter for selecting which files are displayed" -#: gtk/gtkfilechooser.c:753 +#: ../gtk/gtkfilechooser.c:753 msgid "Local Only" msgstr "Local Only" -#: gtk/gtkfilechooser.c:754 +#: ../gtk/gtkfilechooser.c:754 msgid "Whether the selected file(s) should be limited to local file: URLs" msgstr "Whether the selected file(s) should be limited to local file: URLs" -#: gtk/gtkfilechooser.c:759 +#: ../gtk/gtkfilechooser.c:759 msgid "Preview widget" msgstr "Preview widget" -#: gtk/gtkfilechooser.c:760 +#: ../gtk/gtkfilechooser.c:760 msgid "Application supplied widget for custom previews." msgstr "Application supplied widget for custom previews." -#: gtk/gtkfilechooser.c:765 +#: ../gtk/gtkfilechooser.c:765 msgid "Preview Widget Active" msgstr "Preview Widget Active" -#: gtk/gtkfilechooser.c:766 +#: ../gtk/gtkfilechooser.c:766 msgid "" "Whether the application supplied widget for custom previews should be shown." msgstr "" "Whether the application supplied widget for custom previews should be shown." -#: gtk/gtkfilechooser.c:771 +#: ../gtk/gtkfilechooser.c:771 msgid "Use Preview Label" msgstr "Use Preview Label" -#: gtk/gtkfilechooser.c:772 +#: ../gtk/gtkfilechooser.c:772 msgid "Whether to display a stock label with the name of the previewed file." msgstr "Whether to display a stock label with the name of the previewed file." -#: gtk/gtkfilechooser.c:777 +#: ../gtk/gtkfilechooser.c:777 msgid "Extra widget" msgstr "Extra widget" -#: gtk/gtkfilechooser.c:778 +#: ../gtk/gtkfilechooser.c:778 msgid "Application supplied widget for extra options." msgstr "Application supplied widget for extra options." -#: gtk/gtkfilechooser.c:783 gtk/gtkrecentchooser.c:203 +#: ../gtk/gtkfilechooser.c:783 ../gtk/gtkrecentchooser.c:203 msgid "Select Multiple" msgstr "Select Multiple" -#: gtk/gtkfilechooser.c:784 +#: ../gtk/gtkfilechooser.c:784 msgid "Whether to allow multiple files to be selected" msgstr "Whether to allow multiple files to be selected" -#: gtk/gtkfilechooser.c:790 +#: ../gtk/gtkfilechooser.c:790 msgid "Show Hidden" msgstr "Show Hidden" -#: gtk/gtkfilechooser.c:791 +#: ../gtk/gtkfilechooser.c:791 msgid "Whether the hidden files and folders should be displayed" msgstr "Whether the hidden files and folders should be displayed" -#: gtk/gtkfilechooser.c:806 +#: ../gtk/gtkfilechooser.c:806 msgid "Do overwrite confirmation" msgstr "Do overwrite confirmation" -#: gtk/gtkfilechooser.c:807 +#: ../gtk/gtkfilechooser.c:807 msgid "" "Whether a file chooser in save mode will present an overwrite confirmation " "dialog if necessary." @@ -2742,11 +3028,11 @@ msgstr "" "Whether a file chooser in save mode will present an overwrite confirmation " "dialogue if necessary." -#: gtk/gtkfilechooser.c:823 +#: ../gtk/gtkfilechooser.c:823 msgid "Allow folder creation" msgstr "Allow folder creation" -#: gtk/gtkfilechooser.c:824 +#: ../gtk/gtkfilechooser.c:824 msgid "" "Whether a file chooser not in open mode will offer the user to create new " "folders." @@ -2754,131 +3040,195 @@ msgstr "" "Whether a file chooser not in open mode will offer the user to create new " "folders." -#: gtk/gtkfixed.c:98 gtk/gtklayout.c:605 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:633 msgid "X position" msgstr "X position" -#: gtk/gtkfixed.c:99 gtk/gtklayout.c:606 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:634 msgid "X position of child widget" msgstr "X position of child widget" -#: gtk/gtkfixed.c:108 gtk/gtklayout.c:615 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:643 msgid "Y position" msgstr "Y position" -#: gtk/gtkfixed.c:109 gtk/gtklayout.c:616 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:644 msgid "Y position of child widget" msgstr "Y position of child widget" -#: gtk/gtkfontbutton.c:141 +#: ../gtk/gtkfontbutton.c:141 msgid "The title of the font selection dialog" msgstr "The title of the font selection dialogue" -#: gtk/gtkfontbutton.c:156 gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:220 msgid "Font name" msgstr "Font name" -#: gtk/gtkfontbutton.c:157 +#: ../gtk/gtkfontbutton.c:157 msgid "The name of the selected font" msgstr "The name of the selected font" -#: gtk/gtkfontbutton.c:158 +#: ../gtk/gtkfontbutton.c:158 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:173 +#: ../gtk/gtkfontbutton.c:173 msgid "Use font in label" msgstr "Use font in label" -#: gtk/gtkfontbutton.c:174 +#: ../gtk/gtkfontbutton.c:174 msgid "Whether the label is drawn in the selected font" msgstr "Whether the label is drawn in the selected font" -#: gtk/gtkfontbutton.c:189 +#: ../gtk/gtkfontbutton.c:189 msgid "Use size in label" msgstr "Use size in label" -#: gtk/gtkfontbutton.c:190 +#: ../gtk/gtkfontbutton.c:190 msgid "Whether the label is drawn with the selected font size" msgstr "Whether the label is drawn with the selected font size" -#: gtk/gtkfontbutton.c:206 +#: ../gtk/gtkfontbutton.c:206 msgid "Show style" msgstr "Show style" -#: gtk/gtkfontbutton.c:207 +#: ../gtk/gtkfontbutton.c:207 msgid "Whether the selected font style is shown in the label" msgstr "Whether the selected font style is shown in the label" -#: gtk/gtkfontbutton.c:222 +#: ../gtk/gtkfontbutton.c:222 msgid "Show size" msgstr "Show size" -#: gtk/gtkfontbutton.c:223 +#: ../gtk/gtkfontbutton.c:223 msgid "Whether selected font size is shown in the label" msgstr "Whether selected font size is shown in the label" -#: gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:221 msgid "The string that represents this font" msgstr "The string that represents this font" -#: gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:227 msgid "Preview text" msgstr "Preview text" -#: gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:228 msgid "The text to display in order to demonstrate the selected font" msgstr "The text to display in order to demonstrate the selected font" -#: gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:132 msgid "Text of the frame's label" msgstr "Text of the frame's label" -#: gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:139 msgid "Label xalign" msgstr "Label xalign" -#: gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:140 msgid "The horizontal alignment of the label" msgstr "The horizontal alignment of the label" -#: gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:148 msgid "Label yalign" msgstr "Label yalign" -#: gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:149 msgid "The vertical alignment of the label" msgstr "The vertical alignment of the label" -#: gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:157 msgid "Frame shadow" msgstr "Frame shadow" -#: gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:158 msgid "Appearance of the frame border" msgstr "Appearance of the frame border" -#: gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:167 msgid "A widget to display in place of the usual frame label" msgstr "A widget to display in place of the usual frame label" -#: gtk/gtkhandlebox.c:183 +#: ../gtk/gtkgrid.c:1268 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "Row spacing" + +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "The amount of space between two consecutive rows" + +#: ../gtk/gtkgrid.c:1275 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "Column spacing" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "The amount of space between two consecutive columns" + +#: ../gtk/gtkgrid.c:1282 +msgid "Row Homogeneous" +msgstr "Row Homogeneous" + +#: ../gtk/gtkgrid.c:1283 +msgid "If TRUE, the rows are all the same height" +msgstr "If TRUE, the rows are all the same height" + +#: ../gtk/gtkgrid.c:1289 +msgid "Column Homogeneous" +msgstr "Column Homogeneous" + +#: ../gtk/gtkgrid.c:1290 +msgid "If TRUE, the columns are all the same width" +msgstr "If TRUE, the columns are all the same width" + +#: ../gtk/gtkgrid.c:1296 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "Left attachment" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtkmenu.c:689 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "The column number to attach the left side of the child to" + +#: ../gtk/gtkgrid.c:1303 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "Top attachment" + +#: ../gtk/gtkgrid.c:1304 +msgid "The row number to attach the top side of a child widget to" +msgstr "The row number to attach the top side of a child widget to" + +#: ../gtk/gtkgrid.c:1310 ../gtk/gtklayout.c:659 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "Width" + +#: ../gtk/gtkgrid.c:1311 +msgid "The number of columns that a child spans" +msgstr "The number of columns that a child spans" + +#: ../gtk/gtkgrid.c:1317 ../gtk/gtklayout.c:668 +msgid "Height" +msgstr "Height" + +#: ../gtk/gtkgrid.c:1318 +msgid "The number of rows that a child spans" +msgstr "The number of rows that a child spans" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "Appearance of the shadow that surrounds the container" -#: gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "Handle position" -#: gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "Position of the handle relative to the child widget" -#: gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "Snap edge" -#: gtk/gtkhandlebox.c:201 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" @@ -2886,11 +3236,11 @@ msgstr "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" -#: gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "Snap edge set" -#: gtk/gtkhandlebox.c:210 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -2898,11 +3248,11 @@ msgstr "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" -#: gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "Child Detached" -#: gtk/gtkhandlebox.c:218 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." @@ -2910,264 +3260,258 @@ msgstr "" "A boolean value indicating whether the handlebox's child is attached or " "detached." -#: gtk/gtkiconview.c:550 +#: ../gtk/gtkiconview.c:524 msgid "Selection mode" msgstr "Selection mode" -#: gtk/gtkiconview.c:551 +#: ../gtk/gtkiconview.c:525 msgid "The selection mode" msgstr "The selection mode" -#: gtk/gtkiconview.c:569 +#: ../gtk/gtkiconview.c:543 msgid "Pixbuf column" msgstr "Pixbuf column" -#: gtk/gtkiconview.c:570 +#: ../gtk/gtkiconview.c:544 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Model column used to retrieve the icon pixbuf from" -#: gtk/gtkiconview.c:588 +#: ../gtk/gtkiconview.c:562 msgid "Model column used to retrieve the text from" msgstr "Model column used to retrieve the text from" -#: gtk/gtkiconview.c:607 +#: ../gtk/gtkiconview.c:581 msgid "Markup column" msgstr "Markup column" -#: gtk/gtkiconview.c:608 +#: ../gtk/gtkiconview.c:582 msgid "Model column used to retrieve the text if using Pango markup" msgstr "Model column used to retrieve the text if using Pango markup" -#: gtk/gtkiconview.c:615 +#: ../gtk/gtkiconview.c:589 msgid "Icon View Model" msgstr "Icon View Model" -#: gtk/gtkiconview.c:616 +#: ../gtk/gtkiconview.c:590 msgid "The model for the icon view" msgstr "The model for the icon view" -#: gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:606 msgid "Number of columns" msgstr "Number of columns" -#: gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:607 msgid "Number of columns to display" msgstr "Number of columns to display" -#: gtk/gtkiconview.c:650 +#: ../gtk/gtkiconview.c:624 msgid "Width for each item" msgstr "Width for each item" -#: gtk/gtkiconview.c:651 +#: ../gtk/gtkiconview.c:625 msgid "The width used for each item" msgstr "The width used for each item" -#: gtk/gtkiconview.c:667 +#: ../gtk/gtkiconview.c:641 msgid "Space which is inserted between cells of an item" msgstr "Space which is inserted between cells of an item" -#: gtk/gtkiconview.c:682 +#: ../gtk/gtkiconview.c:656 msgid "Row Spacing" msgstr "Row Spacing" -#: gtk/gtkiconview.c:683 +#: ../gtk/gtkiconview.c:657 msgid "Space which is inserted between grid rows" msgstr "Space which is inserted between grid rows" -#: gtk/gtkiconview.c:698 +#: ../gtk/gtkiconview.c:672 msgid "Column Spacing" msgstr "Column Spacing" -#: gtk/gtkiconview.c:699 +#: ../gtk/gtkiconview.c:673 msgid "Space which is inserted between grid columns" msgstr "Space which is inserted between grid columns" -#: gtk/gtkiconview.c:714 +#: ../gtk/gtkiconview.c:688 msgid "Margin" msgstr "Margin" -#: gtk/gtkiconview.c:715 +#: ../gtk/gtkiconview.c:689 msgid "Space which is inserted at the edges of the icon view" msgstr "Space which is inserted at the edges of the icon view" -#: gtk/gtkiconview.c:730 -#, fuzzy +#: ../gtk/gtkiconview.c:704 msgid "Item Orientation" -msgstr "Orientation" +msgstr "Item Orientation" -#: gtk/gtkiconview.c:731 +#: ../gtk/gtkiconview.c:705 msgid "" "How the text and icon of each item are positioned relative to each other" msgstr "" "How the text and icon of each item are positioned relative to each other" -#: gtk/gtkiconview.c:747 gtk/gtktreeview.c:611 gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "Reorderable" -#: gtk/gtkiconview.c:748 gtk/gtktreeview.c:612 +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "View is reorderable" -#: gtk/gtkiconview.c:755 gtk/gtktreeview.c:762 +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "Tooltip Column" -#: gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:730 msgid "The column in the model containing the tooltip texts for the items" msgstr "The column in the model containing the tooltip texts for the items" -#: gtk/gtkiconview.c:773 +#: ../gtk/gtkiconview.c:747 msgid "Item Padding" msgstr "Item Padding" -#: gtk/gtkiconview.c:774 +#: ../gtk/gtkiconview.c:748 msgid "Padding around icon view items" msgstr "Padding around icon view items" -#: gtk/gtkiconview.c:783 +#: ../gtk/gtkiconview.c:776 msgid "Selection Box Color" msgstr "Selection Box Colour" -#: gtk/gtkiconview.c:784 +#: ../gtk/gtkiconview.c:777 msgid "Color of the selection box" msgstr "Colour of the selection box" -#: gtk/gtkiconview.c:790 +#: ../gtk/gtkiconview.c:783 msgid "Selection Box Alpha" msgstr "Selection Box Alpha" -#: gtk/gtkiconview.c:791 +#: ../gtk/gtkiconview.c:784 msgid "Opacity of the selection box" msgstr "Opacity of the selection box" -#: gtk/gtkimage.c:227 gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:235 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "Pixbuf" -#: gtk/gtkimage.c:228 gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "A GdkPixbuf to display" -#: gtk/gtkimage.c:235 gtk/gtkrecentmanager.c:290 gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:243 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "Filename" -#: gtk/gtkimage.c:236 gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:244 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "Filename to load and display" -#: gtk/gtkimage.c:245 gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:253 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "Stock ID for a stock image to display" -#: gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:260 msgid "Icon set" msgstr "Icon set" -#: gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:261 msgid "Icon set to display" msgstr "Icon set to display" -#: gtk/gtkimage.c:260 gtk/gtkscalebutton.c:230 gtk/gtktoolbar.c:494 -#: gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:268 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1031 msgid "Icon size" msgstr "Icon size" -#: gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:269 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "Symbolic size to use for stock icon, icon set or named icon" -#: gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:285 msgid "Pixel size" msgstr "Pixel size" -#: gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:286 msgid "Pixel size to use for named icon" msgstr "Pixel size to use for named icon" -#: gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:294 msgid "Animation" msgstr "Animation" -#: gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:295 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation to display" -#: gtk/gtkimage.c:327 gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:335 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "Storage type" -#: gtk/gtkimage.c:328 gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:336 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "The representation being used for image data" -#: gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Child widget to appear next to the menu text" -#: gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "Whether to use the label text to create a stock menu item" -#: gtk/gtkimagemenuitem.c:187 gtk/gtkmenu.c:540 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:531 msgid "Accel Group" msgstr "Accel Group" -#: gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "The Accel Group to use for stock accelerator keys" -#: gtk/gtkimagemenuitem.c:193 -msgid "Show menu images" -msgstr "Show menu images" - -#: gtk/gtkimagemenuitem.c:194 -msgid "Whether images should be shown in menus" -msgstr "Whether images should be shown in menus" - -#: gtk/gtkinfobar.c:375 gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "Message Type" -#: gtk/gtkinfobar.c:376 gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "The type of message" -#: gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Width of border around the content area" -#: gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Spacing between elements of the area" -#: gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Width of border around the action area" -#: gtk/gtkinvisible.c:89 gtk/gtkmountoperation.c:175 gtk/gtkstatusicon.c:279 -#: gtk/gtkwindow.c:693 +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:540 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "Screen" -#: gtk/gtkinvisible.c:90 gtk/gtkwindow.c:694 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "The screen where this window will be displayed" -#: gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "The text of the label" -#: gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "A list of style attributes to apply to the text of the label" -#: gtk/gtklabel.c:578 gtk/gtktexttag.c:335 gtk/gtktextview.c:685 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:337 ../gtk/gtktextview.c:702 msgid "Justification" msgstr "Justification" -#: gtk/gtklabel.c:579 +#: ../gtk/gtklabel.c:597 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 " @@ -3177,11 +3521,11 @@ msgstr "" "This does NOT affect the alignment of the label within its allocation. See " "GtkMisc::xalign for that" -#: gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "Pattern" -#: gtk/gtklabel.c:588 +#: ../gtk/gtklabel.c:606 msgid "" "A string with _ characters in positions correspond to characters in the text " "to underline" @@ -3189,47 +3533,47 @@ msgstr "" "A string with _ characters in positions correspond to characters in the text " "to underline" -#: gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "Line wrap" -#: gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "If set, wrap lines if the text becomes too wide" -#: gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "Line wrap mode" -#: gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" msgstr "If wrap is set, controls how linewrapping is done" -#: gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "Selectable" -#: gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "Whether the label text can be selected with the mouse" -#: gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "Mnemonic key" -#: gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "The mnemonic accelerator key for this label" -#: gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "Mnemonic widget" -#: gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" msgstr "The widget to be activated when the label's mnemonic key is pressed" -#: gtk/gtklabel.c:682 +#: ../gtk/gtklabel.c:700 msgid "" "The preferred place to ellipsize the string, if the label does not have " "enough room to display the entire string" @@ -3237,149 +3581,112 @@ msgstr "" "The preferred place to place an ellipsis in the string, if the label does " "not have enough room to display the entire string" -#: gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "Single Line Mode" -#: gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "Whether the label is in single line mode" -#: gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "Angle" -#: gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "Angle at which the label is rotated" -#: gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "The desired maximum width of the label, in characters" -#: gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "Track visited links" -#: gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "Whether visited links should be tracked" -#: gtk/gtklabel.c:904 -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "" -"Whether to select the contents of a selectable label when it is focused" - -#: gtk/gtklayout.c:625 gtk/gtkviewport.c:142 -msgid "Horizontal adjustment" -msgstr "Horizontal adjustment" - -#: gtk/gtklayout.c:626 gtk/gtkscrolledwindow.c:244 -msgid "The GtkAdjustment for the horizontal position" -msgstr "The GtkAdjustment for the horizontal position" - -#: gtk/gtklayout.c:633 gtk/gtkviewport.c:150 -msgid "Vertical adjustment" -msgstr "Vertical adjustment" - -#: gtk/gtklayout.c:634 gtk/gtkscrolledwindow.c:251 -msgid "The GtkAdjustment for the vertical position" -msgstr "The GtkAdjustment for the vertical position" - -#: gtk/gtklayout.c:641 gtk/gtktreeviewcolumn.c:211 -msgid "Width" -msgstr "Width" - -#: gtk/gtklayout.c:642 +#: ../gtk/gtklayout.c:660 msgid "The width of the layout" msgstr "The width of the layout" -#: gtk/gtklayout.c:650 -msgid "Height" -msgstr "Height" - -#: gtk/gtklayout.c:651 +#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "The height of the layout" -#: gtk/gtklinkbutton.c:162 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URI" -#: gtk/gtklinkbutton.c:163 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "The URI bound to this button" -#: gtk/gtklinkbutton.c:177 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "Visited" -#: gtk/gtklinkbutton.c:178 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "Whether this link has been visited." -#: gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:170 msgid "Pack direction" msgstr "Pack direction" -#: gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:171 msgid "The pack direction of the menubar" msgstr "The pack direction of the menubar" -#: gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:187 msgid "Child Pack direction" msgstr "Child Pack direction" -#: gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:188 msgid "The child pack direction of the menubar" msgstr "The child pack direction of the menubar" -#: gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:197 msgid "Style of bevel around the menubar" msgstr "Style of bevel around the menubar" -#: gtk/gtkmenubar.c:197 gtk/gtktoolbar.c:544 +#: ../gtk/gtkmenubar.c:204 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "Internal padding" -#: gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:205 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "Amount of border space between the menubar shadow and the menu items" -#: gtk/gtkmenubar.c:205 -msgid "Delay before drop down menus appear" -msgstr "Delay before drop down menus appear" - -#: gtk/gtkmenubar.c:206 -msgid "Delay before the submenus of a menu bar appear" -msgstr "Delay before the submenus of a menu bar appear" - -#: gtk/gtkmenu.c:526 +#: ../gtk/gtkmenu.c:517 msgid "The currently selected menu item" msgstr "The currently selected menu item" -#: gtk/gtkmenu.c:541 +#: ../gtk/gtkmenu.c:532 msgid "The accel group holding accelerators for the menu" msgstr "The accel group holding accelerators for the menu" -#: gtk/gtkmenu.c:555 gtk/gtkmenuitem.c:318 +#: ../gtk/gtkmenu.c:546 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Accel Path" -#: gtk/gtkmenu.c:556 +#: ../gtk/gtkmenu.c:547 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" "An accel path used to conveniently construct accel paths of child items" -#: gtk/gtkmenu.c:572 +#: ../gtk/gtkmenu.c:563 msgid "Attach Widget" msgstr "Attach Widget" -#: gtk/gtkmenu.c:573 +#: ../gtk/gtkmenu.c:564 msgid "The widget the menu is attached to" msgstr "The widget the menu is attached to" -#: gtk/gtkmenu.c:581 +#: ../gtk/gtkmenu.c:572 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" @@ -3387,35 +3694,35 @@ msgstr "" "A title that may be displayed by the window manager when this menu is torn-" "off" -#: gtk/gtkmenu.c:595 +#: ../gtk/gtkmenu.c:586 msgid "Tearoff State" msgstr "Tearoff State" -#: gtk/gtkmenu.c:596 +#: ../gtk/gtkmenu.c:587 msgid "A boolean that indicates whether the menu is torn-off" msgstr "A boolean that indicates whether the menu is torn-off" -#: gtk/gtkmenu.c:610 +#: ../gtk/gtkmenu.c:601 msgid "Monitor" msgstr "Monitor" -#: gtk/gtkmenu.c:611 +#: ../gtk/gtkmenu.c:602 msgid "The monitor the menu will be popped up on" msgstr "The monitor the menu will be popped up on" -#: gtk/gtkmenu.c:617 +#: ../gtk/gtkmenu.c:608 msgid "Vertical Padding" msgstr "Vertical Padding" -#: gtk/gtkmenu.c:618 +#: ../gtk/gtkmenu.c:609 msgid "Extra space at the top and bottom of the menu" msgstr "Extra space at the top and bottom of the menu" -#: gtk/gtkmenu.c:640 +#: ../gtk/gtkmenu.c:631 msgid "Reserve Toggle Size" msgstr "Reserve Toggle Size" -#: gtk/gtkmenu.c:641 +#: ../gtk/gtkmenu.c:632 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" @@ -3423,19 +3730,19 @@ msgstr "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" -#: gtk/gtkmenu.c:647 +#: ../gtk/gtkmenu.c:638 msgid "Horizontal Padding" msgstr "Horizontal Padding" -#: gtk/gtkmenu.c:648 +#: ../gtk/gtkmenu.c:639 msgid "Extra space at the left and right edges of the menu" msgstr "Extra space at the left and right edges of the menu" -#: gtk/gtkmenu.c:656 +#: ../gtk/gtkmenu.c:647 msgid "Vertical Offset" msgstr "Vertical Offset" -#: gtk/gtkmenu.c:657 +#: ../gtk/gtkmenu.c:648 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" @@ -3443,11 +3750,11 @@ msgstr "" "When the menu is a submenu, position it this number of pixels offset " "vertically" -#: gtk/gtkmenu.c:665 +#: ../gtk/gtkmenu.c:656 msgid "Horizontal Offset" msgstr "Horizontal Offset" -#: gtk/gtkmenu.c:666 +#: ../gtk/gtkmenu.c:657 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" @@ -3455,298 +3762,262 @@ msgstr "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" -#: gtk/gtkmenu.c:674 +#: ../gtk/gtkmenu.c:665 msgid "Double Arrows" msgstr "Double Arrows" -#: gtk/gtkmenu.c:675 +#: ../gtk/gtkmenu.c:666 msgid "When scrolling, always show both arrows." msgstr "When scrolling, always show both arrows." -#: gtk/gtkmenu.c:688 +#: ../gtk/gtkmenu.c:679 msgid "Arrow Placement" msgstr "Arrow Placement" -#: gtk/gtkmenu.c:689 +#: ../gtk/gtkmenu.c:680 msgid "Indicates where scroll arrows should be placed" msgstr "Indicates where scroll arrows should be placed" -#: gtk/gtkmenu.c:697 +#: ../gtk/gtkmenu.c:688 msgid "Left Attach" msgstr "Left Attach" -#: gtk/gtkmenu.c:698 gtk/gtktable.c:193 -msgid "The column number to attach the left side of the child to" -msgstr "The column number to attach the left side of the child to" - -#: gtk/gtkmenu.c:705 +#: ../gtk/gtkmenu.c:696 msgid "Right Attach" msgstr "Right Attach" -#: gtk/gtkmenu.c:706 +#: ../gtk/gtkmenu.c:697 msgid "The column number to attach the right side of the child to" msgstr "The column number to attach the right side of the child to" -#: gtk/gtkmenu.c:713 +#: ../gtk/gtkmenu.c:704 msgid "Top Attach" msgstr "Top Attach" -#: gtk/gtkmenu.c:714 +#: ../gtk/gtkmenu.c:705 msgid "The row number to attach the top of the child to" msgstr "The row number to attach the top of the child to" -#: gtk/gtkmenu.c:721 +#: ../gtk/gtkmenu.c:712 msgid "Bottom Attach" msgstr "Bottom Attach" -#: gtk/gtkmenu.c:722 gtk/gtktable.c:214 +#: ../gtk/gtkmenu.c:713 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "The row number to attach the bottom of the child to" -#: gtk/gtkmenu.c:736 +#: ../gtk/gtkmenu.c:727 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "Arbitrary constant to scale down the size of the scroll arrow" -#: gtk/gtkmenu.c:823 -msgid "Can change accelerators" -msgstr "Can change accelerators" - -#: gtk/gtkmenu.c:824 -msgid "" -"Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "" -"Whether menu accelerators can be changed by pressing a key over the menu item" - -#: gtk/gtkmenu.c:829 -msgid "Delay before submenus appear" -msgstr "Delay before submenus appear" - -#: gtk/gtkmenu.c:830 -msgid "" -"Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "" -"Minimum time the pointer must stay over a menu item before the submenu appear" - -#: gtk/gtkmenu.c:837 -msgid "Delay before hiding a submenu" -msgstr "Delay before hiding a submenu" - -#: gtk/gtkmenu.c:838 -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" - -#: gtk/gtkmenuitem.c:285 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Right Justified" -#: gtk/gtkmenuitem.c:286 +#: ../gtk/gtkmenuitem.c:282 msgid "" "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" "Sets whether the menu item appears justified at the right side of a menu bar" -#: gtk/gtkmenuitem.c:300 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Submenu" -#: gtk/gtkmenuitem.c:301 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "The submenu attached to the menu item, or NULL if it has none" -#: gtk/gtkmenuitem.c:319 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Sets the accelerator path of the menu item" -#: gtk/gtkmenuitem.c:334 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "The text for the child label" -#: gtk/gtkmenuitem.c:397 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "" "Amount of space used up by arrow, relative to the menu item's font size" -#: gtk/gtkmenuitem.c:410 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Width in Characters" -#: gtk/gtkmenuitem.c:411 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "The minimum desired width of the menu item in characters" -#: gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:363 msgid "Take Focus" msgstr "Take Focus" -#: gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:364 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "A boolean that determines whether the menu grabs the keyboard focus" -#: gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:246 msgid "Menu" msgstr "Menu" -#: gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:247 msgid "The dropdown menu" msgstr "The dropdown menu" -#: gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "Image/label border" -#: gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" msgstr "Width of border around the label and image in the message dialogue" -#: gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "Message Buttons" -#: gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "The buttons shown in the message dialogue" -#: gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "The primary text of the message dialogue" -#: gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "Use Markup" -#: gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "The primary text of the title includes Pango markup." -#: gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "Secondary Text" -#: gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "The secondary text of the message dialogue" -#: gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "Use Markup in secondary" -#: gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "The secondary text includes Pango markup." -#: gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "Image" -#: gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "The image" -#: gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" msgstr "Message area" -#: gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox that holds the dialogue's primary and secondary labels" -#: gtk/gtkmisc.c:91 +#: ../gtk/gtkmisc.c:91 msgid "Y align" msgstr "Y align" -#: gtk/gtkmisc.c:92 +#: ../gtk/gtkmisc.c:92 msgid "The vertical alignment, from 0 (top) to 1 (bottom)" msgstr "The vertical alignment, from 0 (top) to 1 (bottom)" -#: gtk/gtkmisc.c:101 +#: ../gtk/gtkmisc.c:101 msgid "X pad" msgstr "X pad" -#: gtk/gtkmisc.c:102 +#: ../gtk/gtkmisc.c:102 msgid "" "The amount of space to add on the left and right of the widget, in pixels" msgstr "" "The amount of space to add on the left and right of the widget, in pixels" -#: gtk/gtkmisc.c:111 +#: ../gtk/gtkmisc.c:111 msgid "Y pad" msgstr "Y pad" -#: gtk/gtkmisc.c:112 +#: ../gtk/gtkmisc.c:112 msgid "" "The amount of space to add on the top and bottom of the widget, in pixels" msgstr "" "The amount of space to add on the top and bottom of the widget, in pixels" -#: gtk/gtkmountoperation.c:159 +#: ../gtk/gtkmountoperation.c:159 msgid "Parent" msgstr "Parent" -#: gtk/gtkmountoperation.c:160 +#: ../gtk/gtkmountoperation.c:160 msgid "The parent window" msgstr "The parent window" -#: gtk/gtkmountoperation.c:167 +#: ../gtk/gtkmountoperation.c:167 msgid "Is Showing" msgstr "Is Showing" -#: gtk/gtkmountoperation.c:168 +#: ../gtk/gtkmountoperation.c:168 msgid "Are we showing a dialog" msgstr "Are we showing a dialogue" -#: gtk/gtkmountoperation.c:176 +#: ../gtk/gtkmountoperation.c:176 msgid "The screen where this window will be displayed." msgstr "The screen where this window will be displayed." -#: gtk/gtknotebook.c:595 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "Page" -#: gtk/gtknotebook.c:596 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "The index of the current page" -#: gtk/gtknotebook.c:604 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "Tab Position" -#: gtk/gtknotebook.c:605 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "Which side of the notebook holds the tabs" -#: gtk/gtknotebook.c:612 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "Show Tabs" -#: gtk/gtknotebook.c:613 +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "Whether tabs should be shown" -#: gtk/gtknotebook.c:619 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "Show Border" -#: gtk/gtknotebook.c:620 +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "Whether the border should be shown" -#: gtk/gtknotebook.c:626 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "Scrollable" -#: gtk/gtknotebook.c:627 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "If TRUE, scroll arrows are added if there are too many tabs to fit" -#: gtk/gtknotebook.c:633 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "Enable Popup" -#: gtk/gtknotebook.c:634 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3754,323 +4025,319 @@ msgstr "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" -#: gtk/gtknotebook.c:648 -#, fuzzy +#: ../gtk/gtknotebook.c:738 msgid "Group Name" -msgstr "Group ID" +msgstr "Group Name" -#: gtk/gtknotebook.c:649 -#, fuzzy +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" -msgstr "Group for tabs drag and drop" +msgstr "Group name for tab drag and drop" -#: gtk/gtknotebook.c:656 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "Tab label" -#: gtk/gtknotebook.c:657 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "The string displayed on the child's tab label" -#: gtk/gtknotebook.c:663 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "Menu label" -#: gtk/gtknotebook.c:664 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "The string displayed in the child's menu entry" -#: gtk/gtknotebook.c:677 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "Tab expand" -#: gtk/gtknotebook.c:678 +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "Whether to expand the child's tab" -#: gtk/gtknotebook.c:684 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "Tab fill" -#: gtk/gtknotebook.c:685 +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "Whether the child's tab should fill the allocated area" -#: gtk/gtknotebook.c:691 -msgid "Tab pack type" -msgstr "Tab pack type" - -#: gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "Tab reorderable" -#: gtk/gtknotebook.c:699 +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "Whether the tab is reorderable by user action" -#: gtk/gtknotebook.c:705 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "Tab detachable" -#: gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "Whether the tab is detachable" -#: gtk/gtknotebook.c:721 gtk/gtkscrollbar.c:80 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Secondary backward stepper" -#: gtk/gtknotebook.c:722 +#: ../gtk/gtknotebook.c:806 msgid "" "Display a second backward arrow button on the opposite end of the tab area" msgstr "" "Display a second backward arrow button on the opposite end of the tab area" -#: gtk/gtknotebook.c:737 gtk/gtkscrollbar.c:87 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Secondary forward stepper" -#: gtk/gtknotebook.c:738 +#: ../gtk/gtknotebook.c:822 msgid "" "Display a second forward arrow button on the opposite end of the tab area" msgstr "" "Display a second forward arrow button on the opposite end of the tab area" -#: gtk/gtknotebook.c:752 gtk/gtkscrollbar.c:66 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Backward stepper" -#: gtk/gtknotebook.c:753 gtk/gtkscrollbar.c:67 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Display the standard backward arrow button" -#: gtk/gtknotebook.c:767 gtk/gtkscrollbar.c:73 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Forward stepper" -#: gtk/gtknotebook.c:768 gtk/gtkscrollbar.c:74 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Display the standard forward arrow button" -#: gtk/gtknotebook.c:782 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "Tab overlap" -#: gtk/gtknotebook.c:783 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "Size of tab overlap area" -#: gtk/gtknotebook.c:798 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "Tab curvature" -#: gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "Size of tab curvature" -#: gtk/gtknotebook.c:815 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "Arrow spacing" -#: gtk/gtknotebook.c:816 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "Scroll arrow spacing" -#: gtk/gtkorientable.c:63 gtk/gtkstatusicon.c:319 gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "Orientation" -#: gtk/gtkorientable.c:64 +#: ../gtk/gtkorientable.c:64 msgid "The orientation of the orientable" msgstr "The orientation of the orientable" -#: gtk/gtkpaned.c:271 +#: ../gtk/gtkpaned.c:327 msgid "" "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "" "Position of paned separator in pixels (0 means all the way to the left/top)" -#: gtk/gtkpaned.c:280 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "Position Set" -#: gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "TRUE if the Position property should be used" -#: gtk/gtkpaned.c:287 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "Handle Size" -#: gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "Width of handle" -#: gtk/gtkpaned.c:304 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "Minimal Position" -#: gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "Smallest possible value for the \"position\" property" -#: gtk/gtkpaned.c:322 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "Maximal Position" -#: gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "Largest possible value for the \"position\" property" -#: gtk/gtkpaned.c:340 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "Resize" -#: gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "If TRUE, the child expands and shrinks along with the paned widget" -#: gtk/gtkpaned.c:356 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "Shrink" -#: gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "If TRUE, the child can be made smaller than its requisition" -#: gtk/gtkplug.c:171 gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "Embedded" -#: gtk/gtkplug.c:172 +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "Whether the plug is embedded" -#: gtk/gtkplug.c:186 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "Socket Window" -#: gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "The window of the socket the plug is embedded in" -#: gtk/gtkprinter.c:126 +#: ../gtk/gtkprinter.c:126 msgid "Name of the printer" msgstr "Name of the printer" -#: gtk/gtkprinter.c:132 +#: ../gtk/gtkprinter.c:132 msgid "Backend" msgstr "Backend" -#: gtk/gtkprinter.c:133 +#: ../gtk/gtkprinter.c:133 msgid "Backend for the printer" msgstr "Backend for the printer" -#: gtk/gtkprinter.c:139 +#: ../gtk/gtkprinter.c:139 msgid "Is Virtual" msgstr "Is Virtual" -#: gtk/gtkprinter.c:140 +#: ../gtk/gtkprinter.c:140 msgid "FALSE if this represents a real hardware printer" msgstr "FALSE if this represents a real hardware printer" -#: gtk/gtkprinter.c:146 +#: ../gtk/gtkprinter.c:146 msgid "Accepts PDF" msgstr "Accepts PDF" -#: gtk/gtkprinter.c:147 +#: ../gtk/gtkprinter.c:147 msgid "TRUE if this printer can accept PDF" msgstr "TRUE if this printer can accept PDF" -#: gtk/gtkprinter.c:153 +#: ../gtk/gtkprinter.c:153 msgid "Accepts PostScript" msgstr "Accepts PostScript" -#: gtk/gtkprinter.c:154 +#: ../gtk/gtkprinter.c:154 msgid "TRUE if this printer can accept PostScript" msgstr "TRUE if this printer can accept PostScript" -#: gtk/gtkprinter.c:160 +#: ../gtk/gtkprinter.c:160 msgid "State Message" msgstr "State Message" -#: gtk/gtkprinter.c:161 +#: ../gtk/gtkprinter.c:161 msgid "String giving the current state of the printer" msgstr "String giving the current state of the printer" -#: gtk/gtkprinter.c:167 +#: ../gtk/gtkprinter.c:167 msgid "Location" msgstr "Location" -#: gtk/gtkprinter.c:168 +#: ../gtk/gtkprinter.c:168 msgid "The location of the printer" msgstr "The location of the printer" -#: gtk/gtkprinter.c:175 +#: ../gtk/gtkprinter.c:175 msgid "The icon name to use for the printer" msgstr "The icon name to use for the printer" -#: gtk/gtkprinter.c:181 +#: ../gtk/gtkprinter.c:181 msgid "Job Count" msgstr "Job Count" -#: gtk/gtkprinter.c:182 +#: ../gtk/gtkprinter.c:182 msgid "Number of jobs queued in the printer" msgstr "Number of jobs queued in the printer" -#: gtk/gtkprinter.c:200 +#: ../gtk/gtkprinter.c:200 msgid "Paused Printer" msgstr "Paused Printer" -#: gtk/gtkprinter.c:201 +#: ../gtk/gtkprinter.c:201 msgid "TRUE if this printer is paused" msgstr "TRUE if this printer is paused" -#: gtk/gtkprinter.c:214 +#: ../gtk/gtkprinter.c:214 msgid "Accepting Jobs" msgstr "Accepting Jobs" -#: gtk/gtkprinter.c:215 +#: ../gtk/gtkprinter.c:215 msgid "TRUE if this printer is accepting new jobs" msgstr "TRUE if this printer is accepting new jobs" -#: gtk/gtkprinteroptionwidget.c:122 +#: ../gtk/gtkprinteroptionwidget.c:121 msgid "Source option" msgstr "Source option" -#: gtk/gtkprinteroptionwidget.c:123 +#: ../gtk/gtkprinteroptionwidget.c:122 msgid "The PrinterOption backing this widget" msgstr "The PrinterOption backing this widget" -#: gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:127 msgid "Title of the print job" msgstr "Title of the print job" -#: gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:135 msgid "Printer" msgstr "Printer" -#: gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:136 msgid "Printer to print the job to" msgstr "Printer to print the job to" -#: gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:144 msgid "Settings" msgstr "Settings" -#: gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:145 msgid "Printer settings" msgstr "Printer settings" -#: gtk/gtkprintjob.c:142 gtk/gtkprintjob.c:143 gtk/gtkprintunixdialog.c:298 +#: ../gtk/gtkprintjob.c:153 ../gtk/gtkprintjob.c:154 +#: ../gtk/gtkprintunixdialog.c:299 msgid "Page Setup" msgstr "Page Setup" -#: gtk/gtkprintjob.c:151 gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:162 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "Track Print Status" -#: gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:163 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." @@ -4078,51 +4345,51 @@ msgstr "" "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." -#: gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "Default Page Setup" -#: gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "The GtkPageSetup used by default" -#: gtk/gtkprintoperation.c:1024 gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:317 msgid "Print Settings" msgstr "Print Settings" -#: gtk/gtkprintoperation.c:1025 gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:318 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "The GtkPrintSettings used for initialising the dialogue" -#: gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "Job Name" -#: gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "A string used for identifying the print job." -#: gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "Number of Pages" -#: gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "The number of pages in the document." -#: gtk/gtkprintoperation.c:1090 gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:307 msgid "Current Page" msgstr "Current Page" -#: gtk/gtkprintoperation.c:1091 gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:308 msgid "The current page in the document" msgstr "The current page in the document" -#: gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "Use full page" -#: gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" @@ -4130,7 +4397,7 @@ msgstr "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" -#: gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4138,151 +4405,151 @@ msgstr "" "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." -#: gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "Unit" -#: gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "The unit in which distances can be measured in the context" -#: gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "Show Dialogue" -#: gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "TRUE if a progress dialogue is shown while printing." -#: gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "Allow Async" -#: gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "TRUE if print process may run asynchronous." -#: gtk/gtkprintoperation.c:1216 gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "Export filename" -#: gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "Status" -#: gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "The status of the print operation" -#: gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "Status String" -#: gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "A human-readable description of the status" -#: gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "Custom tab label" -#: gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "Label for the tab containing custom widgets." -#: gtk/gtkprintoperation.c:1287 gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:342 msgid "Support Selection" msgstr "Support Selection" -#: gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." msgstr "TRUE if the print operation will support print of selection." -#: gtk/gtkprintoperation.c:1304 gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:350 msgid "Has Selection" msgstr "Has Selection" -#: gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "TRUE if a selection exists." -#: gtk/gtkprintoperation.c:1320 gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:358 msgid "Embed Page Setup" msgstr "Embed Page Setup" -#: gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "TRUE if page setup combos are embedded in GtkPrintDialog" -#: gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "Number of Pages To Print" -#: gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "The number of pages that will be printed." -#: gtk/gtkprintunixdialog.c:299 +#: ../gtk/gtkprintunixdialog.c:300 msgid "The GtkPageSetup to use" msgstr "The GtkPageSetup to use" -#: gtk/gtkprintunixdialog.c:324 +#: ../gtk/gtkprintunixdialog.c:325 msgid "Selected Printer" msgstr "Selected Printer" -#: gtk/gtkprintunixdialog.c:325 +#: ../gtk/gtkprintunixdialog.c:326 msgid "The GtkPrinter which is selected" msgstr "The GtkPrinter which is selected" -#: gtk/gtkprintunixdialog.c:332 +#: ../gtk/gtkprintunixdialog.c:333 msgid "Manual Capabilities" msgstr "Manual Capabilities" -#: gtk/gtkprintunixdialog.c:333 +#: ../gtk/gtkprintunixdialog.c:334 msgid "Capabilities the application can handle" msgstr "Capabilities the application can handle" -#: gtk/gtkprintunixdialog.c:342 +#: ../gtk/gtkprintunixdialog.c:343 msgid "Whether the dialog supports selection" msgstr "Whether the dialogue supports selection" -#: gtk/gtkprintunixdialog.c:350 +#: ../gtk/gtkprintunixdialog.c:351 msgid "Whether the application has a selection" msgstr "Whether the application has a selection" -#: gtk/gtkprintunixdialog.c:358 +#: ../gtk/gtkprintunixdialog.c:359 msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" msgstr "TRUE if page setup combos are embedded in GtkPrintUnixDialog" -#: gtk/gtkprogressbar.c:134 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "Fraction" -#: gtk/gtkprogressbar.c:135 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "The fraction of total work that has been completed" -#: gtk/gtkprogressbar.c:142 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "Pulse Step" -#: gtk/gtkprogressbar.c:143 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" msgstr "The fraction of total progress to move the bouncing block when pulsed" -#: gtk/gtkprogressbar.c:151 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "Text to be displayed in the progress bar" -#: gtk/gtkprogressbar.c:158 +#: ../gtk/gtkprogressbar.c:185 msgid "Show text" msgstr "Show text" -#: gtk/gtkprogressbar.c:159 +#: ../gtk/gtkprogressbar.c:186 msgid "Whether the progress is shown as text." msgstr "Whether the progress is shown as text." -#: gtk/gtkprogressbar.c:181 +#: ../gtk/gtkprogressbar.c:208 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." @@ -4290,59 +4557,59 @@ msgstr "" "The preferred place to place an ellipsis in the string, if the progress bar " "does not have enough room to display the entire string, if at all." -#: gtk/gtkprogressbar.c:188 +#: ../gtk/gtkprogressbar.c:215 msgid "X spacing" msgstr "X spacing" -#: gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:216 msgid "Extra spacing applied to the width of a progress bar." msgstr "Extra spacing applied to the width of a progress bar." -#: gtk/gtkprogressbar.c:194 +#: ../gtk/gtkprogressbar.c:221 msgid "Y spacing" msgstr "Y spacing" -#: gtk/gtkprogressbar.c:195 +#: ../gtk/gtkprogressbar.c:222 msgid "Extra spacing applied to the height of a progress bar." msgstr "Extra spacing applied to the height of a progress bar." -#: gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:235 msgid "Minimum horizontal bar width" msgstr "Minimum horizontal bar width" -#: gtk/gtkprogressbar.c:209 +#: ../gtk/gtkprogressbar.c:236 msgid "The minimum horizontal width of the progress bar" msgstr "The minimum horizontal width of the progress bar" -#: gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:248 msgid "Minimum horizontal bar height" msgstr "Minimum horizontal bar height" -#: gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:249 msgid "Minimum horizontal height of the progress bar" msgstr "Minimum horizontal height of the progress bar" -#: gtk/gtkprogressbar.c:234 +#: ../gtk/gtkprogressbar.c:261 msgid "Minimum vertical bar width" msgstr "Minimum vertical bar width" -#: gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:262 msgid "The minimum vertical width of the progress bar" msgstr "The minimum vertical width of the progress bar" -#: gtk/gtkprogressbar.c:247 +#: ../gtk/gtkprogressbar.c:274 msgid "Minimum vertical bar height" msgstr "Minimum vertical bar height" -#: gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:275 msgid "The minimum vertical height of the progress bar" msgstr "The minimum vertical height of the progress bar" -#: gtk/gtkradioaction.c:118 +#: ../gtk/gtkradioaction.c:118 msgid "The value" msgstr "The value" -#: gtk/gtkradioaction.c:119 +#: ../gtk/gtkradioaction.c:119 msgid "" "The value returned by gtk_radio_action_get_current_value() when this action " "is the current action of its group." @@ -4350,20 +4617,20 @@ msgstr "" "The value returned by gtk_radio_action_get_current_value() when this action " "is the current action of its group." -#: gtk/gtkradioaction.c:135 gtk/gtkradiobutton.c:160 -#: gtk/gtkradiomenuitem.c:373 gtk/gtkradiotoolbutton.c:65 +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 +#: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "Group" -#: gtk/gtkradioaction.c:136 +#: ../gtk/gtkradioaction.c:136 msgid "The radio action whose group this action belongs to." msgstr "The radio action whose group this action belongs to." -#: gtk/gtkradioaction.c:151 +#: ../gtk/gtkradioaction.c:151 msgid "The current value" msgstr "The current value" -#: gtk/gtkradioaction.c:152 +#: ../gtk/gtkradioaction.c:152 msgid "" "The value property of the currently active member of the group to which this " "action belongs." @@ -4371,39 +4638,31 @@ msgstr "" "The value property of the currently active member of the group to which this " "action belongs." -#: gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "The radio button whose group this widget belongs to." -#: gtk/gtkradiomenuitem.c:374 +#: ../gtk/gtkradiomenuitem.c:374 msgid "The radio menu item whose group this widget belongs to." msgstr "The radio menu item whose group this widget belongs to." -#: gtk/gtkradiotoolbutton.c:66 +#: ../gtk/gtkradiotoolbutton.c:66 msgid "The radio tool button whose group this button belongs to." msgstr "The radio tool button whose group this button belongs to." -#: gtk/gtkrange.c:410 -msgid "Update policy" -msgstr "Update policy" - -#: gtk/gtkrange.c:411 -msgid "How the range should be updated on the screen" -msgstr "How the range should be updated on the screen" - -#: gtk/gtkrange.c:420 +#: ../gtk/gtkrange.c:416 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "The GtkAdjustment that contains the current value of this range object" -#: gtk/gtkrange.c:428 +#: ../gtk/gtkrange.c:424 msgid "Invert direction slider moves to increase range value" msgstr "Invert direction slider moves to increase range value" -#: gtk/gtkrange.c:435 +#: ../gtk/gtkrange.c:431 msgid "Lower stepper sensitivity" msgstr "Lower stepper sensitivity" -#: gtk/gtkrange.c:436 +#: ../gtk/gtkrange.c:432 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" @@ -4411,11 +4670,11 @@ msgstr "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" -#: gtk/gtkrange.c:444 +#: ../gtk/gtkrange.c:440 msgid "Upper stepper sensitivity" msgstr "Upper stepper sensitivity" -#: gtk/gtkrange.c:445 +#: ../gtk/gtkrange.c:441 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" @@ -4423,87 +4682,87 @@ msgstr "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" -#: gtk/gtkrange.c:462 +#: ../gtk/gtkrange.c:458 msgid "Show Fill Level" msgstr "Show Fill Level" -#: gtk/gtkrange.c:463 +#: ../gtk/gtkrange.c:459 msgid "Whether to display a fill level indicator graphics on trough." msgstr "Whether to display a fill level indicator graphics on trough." -#: gtk/gtkrange.c:479 +#: ../gtk/gtkrange.c:475 msgid "Restrict to Fill Level" msgstr "Restrict to Fill Level" -#: gtk/gtkrange.c:480 +#: ../gtk/gtkrange.c:476 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Whether to restrict the upper boundary to the fill level." -#: gtk/gtkrange.c:495 +#: ../gtk/gtkrange.c:491 msgid "Fill Level" msgstr "Fill Level" -#: gtk/gtkrange.c:496 +#: ../gtk/gtkrange.c:492 msgid "The fill level." msgstr "The fill level." -#: gtk/gtkrange.c:504 +#: ../gtk/gtkrange.c:500 ../gtk/gtkswitch.c:777 msgid "Slider Width" msgstr "Slider Width" -#: gtk/gtkrange.c:505 +#: ../gtk/gtkrange.c:501 msgid "Width of scrollbar or scale thumb" msgstr "Width of scrollbar or scale thumb" -#: gtk/gtkrange.c:512 +#: ../gtk/gtkrange.c:508 msgid "Trough Border" msgstr "Trough Border" -#: gtk/gtkrange.c:513 +#: ../gtk/gtkrange.c:509 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "Spacing between thumb/steppers and outer trough bevel" -#: gtk/gtkrange.c:520 +#: ../gtk/gtkrange.c:516 msgid "Stepper Size" msgstr "Stepper Size" -#: gtk/gtkrange.c:521 +#: ../gtk/gtkrange.c:517 msgid "Length of step buttons at ends" msgstr "Length of step buttons at ends" -#: gtk/gtkrange.c:536 +#: ../gtk/gtkrange.c:532 msgid "Stepper Spacing" msgstr "Stepper Spacing" -#: gtk/gtkrange.c:537 +#: ../gtk/gtkrange.c:533 msgid "Spacing between step buttons and thumb" msgstr "Spacing between step buttons and thumb" -#: gtk/gtkrange.c:544 +#: ../gtk/gtkrange.c:540 msgid "Arrow X Displacement" msgstr "Arrow X Displacement" -#: gtk/gtkrange.c:545 +#: ../gtk/gtkrange.c:541 msgid "" "How far in the x direction to move the arrow when the button is depressed" msgstr "" "How far in the x direction to move the arrow when the button is depressed" -#: gtk/gtkrange.c:552 +#: ../gtk/gtkrange.c:548 msgid "Arrow Y Displacement" msgstr "Arrow Y Displacement" -#: gtk/gtkrange.c:553 +#: ../gtk/gtkrange.c:549 msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "" "How far in the y direction to move the arrow when the button is depressed" -#: gtk/gtkrange.c:571 +#: ../gtk/gtkrange.c:567 msgid "Trough Under Steppers" msgstr "Trough Under Steppers" -#: gtk/gtkrange.c:572 +#: ../gtk/gtkrange.c:568 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" @@ -4511,254 +4770,262 @@ msgstr "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" -#: gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:581 msgid "Arrow scaling" msgstr "Arrow scaling" -#: gtk/gtkrange.c:586 +#: ../gtk/gtkrange.c:582 msgid "Arrow scaling with regard to scroll button size" msgstr "Arrow scaling with regard to scroll button size" -#: gtk/gtkrecentaction.c:635 gtk/gtkrecentchoosermenu.c:252 +#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:246 msgid "Show Numbers" msgstr "Show Numbers" -#: gtk/gtkrecentaction.c:636 gtk/gtkrecentchoosermenu.c:253 +#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:247 msgid "Whether the items should be displayed with a number" msgstr "Whether the items should be displayed with a number" -#: gtk/gtkrecentchooser.c:132 +#: ../gtk/gtkrecentchooser.c:132 msgid "Recent Manager" msgstr "Recent Manager" -#: gtk/gtkrecentchooser.c:133 +#: ../gtk/gtkrecentchooser.c:133 msgid "The RecentManager object to use" msgstr "The RecentManager object to use" -#: gtk/gtkrecentchooser.c:147 +#: ../gtk/gtkrecentchooser.c:147 msgid "Show Private" msgstr "Show Private" -#: gtk/gtkrecentchooser.c:148 +#: ../gtk/gtkrecentchooser.c:148 msgid "Whether the private items should be displayed" msgstr "Whether the private items should be displayed" -#: gtk/gtkrecentchooser.c:161 +#: ../gtk/gtkrecentchooser.c:161 msgid "Show Tooltips" msgstr "Show Tooltips" -#: gtk/gtkrecentchooser.c:162 +#: ../gtk/gtkrecentchooser.c:162 msgid "Whether there should be a tooltip on the item" msgstr "Whether there should be a tooltip on the item" -#: gtk/gtkrecentchooser.c:174 +#: ../gtk/gtkrecentchooser.c:174 msgid "Show Icons" msgstr "Show Icons" -#: gtk/gtkrecentchooser.c:175 +#: ../gtk/gtkrecentchooser.c:175 msgid "Whether there should be an icon near the item" msgstr "Whether there should be an icon near the item" -#: gtk/gtkrecentchooser.c:190 +#: ../gtk/gtkrecentchooser.c:190 msgid "Show Not Found" msgstr "Show Not Found" -#: gtk/gtkrecentchooser.c:191 +#: ../gtk/gtkrecentchooser.c:191 msgid "Whether the items pointing to unavailable resources should be displayed" msgstr "" "Whether the items pointing to unavailable resources should be displayed" -#: gtk/gtkrecentchooser.c:204 +#: ../gtk/gtkrecentchooser.c:204 msgid "Whether to allow multiple items to be selected" msgstr "Whether to allow multiple items to be selected" -#: gtk/gtkrecentchooser.c:217 +#: ../gtk/gtkrecentchooser.c:217 msgid "Local only" msgstr "Local only" -#: gtk/gtkrecentchooser.c:218 +#: ../gtk/gtkrecentchooser.c:218 msgid "Whether the selected resource(s) should be limited to local file: URIs" msgstr "Whether the selected resource(s) should be limited to local file: URIs" -#: gtk/gtkrecentchooser.c:234 +#: ../gtk/gtkrecentchooser.c:234 msgid "Limit" msgstr "Limit" -#: gtk/gtkrecentchooser.c:235 +#: ../gtk/gtkrecentchooser.c:235 msgid "The maximum number of items to be displayed" msgstr "The maximum number of items to be displayed" -#: gtk/gtkrecentchooser.c:249 +#: ../gtk/gtkrecentchooser.c:249 msgid "Sort Type" msgstr "Sort Type" -#: gtk/gtkrecentchooser.c:250 +#: ../gtk/gtkrecentchooser.c:250 msgid "The sorting order of the items displayed" msgstr "The sorting order of the items displayed" -#: gtk/gtkrecentchooser.c:265 +#: ../gtk/gtkrecentchooser.c:265 msgid "The current filter for selecting which resources are displayed" msgstr "The current filter for selecting which resources are displayed" -#: gtk/gtkrecentmanager.c:291 +#: ../gtk/gtkrecentmanager.c:295 msgid "The full path to the file to be used to store and read the list" msgstr "The full path to the file to be used to store and read the list" -#: gtk/gtkrecentmanager.c:306 +#: ../gtk/gtkrecentmanager.c:310 msgid "The size of the recently used resources list" msgstr "The size of the recently used resources list" -#: gtk/gtkruler.c:138 -msgid "Lower" -msgstr "Lower" - -#: gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "Lower limit of ruler" - -#: gtk/gtkruler.c:148 -msgid "Upper" -msgstr "Upper" - -#: gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "Upper limit of ruler" - -#: gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "Position of mark on the ruler" - -#: gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "Max Size" - -#: gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "Maximum size of the ruler" - -#: gtk/gtkruler.c:184 -msgid "Metric" -msgstr "Metric" - -#: gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "The metric used for the ruler" - -#: gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "The value of the scale" -#: gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "The icon size" -#: gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:237 msgid "" "The GtkAdjustment that contains the current value of this scale button object" msgstr "" "The GtkAdjustment that contains the current value of this scale button object" -#: gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "Icons" -#: gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "List of icon names" -#: gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "The number of decimal places that are displayed in the value" -#: gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Draw Value" -#: gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "Whether the current value is displayed as a string next to the slider" -#: gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Value Position" -#: gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "The position in which the current value is displayed" -#: gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Slider Length" -#: gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Length of scale's slider" -#: gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Value spacing" -#: gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "Space between value text and the slider/trough area" -#: gtk/gtkscrollbar.c:50 +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "Horizontal adjustment" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "Vertical adjustment" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" + +#: ../gtk/gtkscrollable.c:120 +msgid "Horizontal Scrollable Policy" +msgstr "Horizontal Scrollable Policy" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "How the size of the content should be determined" + +#: ../gtk/gtkscrollable.c:136 +msgid "Vertical Scrollable Policy" +msgstr "Vertical Scrollable Policy" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Minimum Slider Length" -#: gtk/gtkscrollbar.c:51 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Minimum length of scrollbar slider" -#: gtk/gtkscrollbar.c:59 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Fixed slider size" -#: gtk/gtkscrollbar.c:60 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "Don't change slider size, just lock it to the minimum length" -#: gtk/gtkscrollbar.c:81 +#: ../gtk/gtkscrollbar.c:103 msgid "" "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "" "Display a second backward arrow button on the opposite end of the scrollbar" -#: gtk/gtkscrollbar.c:88 +#: ../gtk/gtkscrollbar.c:110 msgid "" "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "" "Display a second forward arrow button on the opposite end of the scrollbar" -#: gtk/gtkscrolledwindow.c:243 gtk/gtktreeview.c:571 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "Horizontal Adjustment" -#: gtk/gtkscrolledwindow.c:250 gtk/gtktreeview.c:579 +#: ../gtk/gtkscrolledwindow.c:297 +msgid "The GtkAdjustment for the horizontal position" +msgstr "The GtkAdjustment for the horizontal position" + +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "Vertical Adjustment" -#: gtk/gtkscrolledwindow.c:257 +#: ../gtk/gtkscrolledwindow.c:304 +msgid "The GtkAdjustment for the vertical position" +msgstr "The GtkAdjustment for the vertical position" + +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "Horizontal Scrollbar Policy" -#: gtk/gtkscrolledwindow.c:258 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "When the horizontal scrollbar is displayed" -#: gtk/gtkscrolledwindow.c:265 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "Vertical Scrollbar Policy" -#: gtk/gtkscrolledwindow.c:266 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "When the vertical scrollbar is displayed" -#: gtk/gtkscrolledwindow.c:274 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "Window Placement" -#: gtk/gtkscrolledwindow.c:275 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -4766,11 +5033,11 @@ msgstr "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." -#: gtk/gtkscrolledwindow.c:292 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "Window Placement Set" -#: gtk/gtkscrolledwindow.c:293 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -4778,55 +5045,61 @@ msgstr "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." -#: gtk/gtkscrolledwindow.c:299 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "Shadow Type" -#: gtk/gtkscrolledwindow.c:300 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "Style of bevel around the contents" -#: gtk/gtkscrolledwindow.c:314 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "Scrollbars within bevel" -#: gtk/gtkscrolledwindow.c:315 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "Place scrollbars within the scrolled window's bevel" -#: gtk/gtkscrolledwindow.c:321 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "Scrollbar spacing" -#: gtk/gtkscrolledwindow.c:322 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Number of pixels between the scrollbars and the scrolled window" -#: gtk/gtkscrolledwindow.c:337 -msgid "Scrolled Window Placement" -msgstr "Scrolled Window Placement" +#: ../gtk/gtkscrolledwindow.c:384 +msgid "Minimum Content Width" +msgstr "Minimum Content Width" -#: gtk/gtkscrolledwindow.c:338 +#: ../gtk/gtkscrolledwindow.c:385 +msgid "The minimum width that the scrolled window will allocate to its content" +msgstr "The minimum width that the scrolled window will allocate to its content" + +#: ../gtk/gtkscrolledwindow.c:391 +msgid "Minimum Content Height" +msgstr "Minimum Content Height" + +#: ../gtk/gtkscrolledwindow.c:392 msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." +"The minimum height that the scrolled window will allocate to its content" msgstr "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." +"The minimum height that the scrolled window will allocate to its content" -#: gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "Draw" -#: gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "Whether the separator is drawn, or just blank" -#: gtk/gtksettings.c:225 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Double Click Time" -#: gtk/gtksettings.c:226 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4834,11 +5107,11 @@ msgstr "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" -#: gtk/gtksettings.c:233 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Double Click Distance" -#: gtk/gtksettings.c:234 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -4846,35 +5119,35 @@ msgstr "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" -#: gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Cursor Blink" -#: gtk/gtksettings.c:251 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Whether the cursor should blink" -#: gtk/gtksettings.c:258 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Cursor Blink Time" -#: gtk/gtksettings.c:259 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Length of the cursor blink cycle, in milliseconds" -#: gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Cursor Blink Timeout" -#: gtk/gtksettings.c:279 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "Time after which the cursor stops blinking, in seconds" -#: gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Split Cursor" -#: gtk/gtksettings.c:287 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -4882,149 +5155,149 @@ msgstr "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" -#: gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Theme Name" -#: gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Name of theme RC file to load" -#: gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Icon Theme Name" -#: gtk/gtksettings.c:304 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Name of icon theme to use" -#: gtk/gtksettings.c:312 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Fallback Icon Theme Name" -#: gtk/gtksettings.c:313 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Name of a icon theme to fall back to" -#: gtk/gtksettings.c:321 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Key Theme Name" -#: gtk/gtksettings.c:322 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Name of key theme RC file to load" -#: gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Menu bar accelerator" -#: gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Keybinding to activate the menu bar" -#: gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Drag threshold" -#: gtk/gtksettings.c:340 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Number of pixels the cursor can move before dragging" -#: gtk/gtksettings.c:348 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Font Name" -#: gtk/gtksettings.c:349 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Name of default font to use" -#: gtk/gtksettings.c:371 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Icon Sizes" -#: gtk/gtksettings.c:372 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." -#: gtk/gtksettings.c:380 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK Modules" -#: gtk/gtksettings.c:381 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "List of currently active GTK modules" -#: gtk/gtksettings.c:390 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft Antialias" -#: gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" -#: gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft Hinting" -#: gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" -#: gtk/gtksettings.c:410 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft Hint Style" -#: gtk/gtksettings.c:411 +#: ../gtk/gtksettings.c:485 msgid "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" -#: gtk/gtksettings.c:420 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: gtk/gtksettings.c:421 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" -#: gtk/gtksettings.c:430 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft DPI" -#: gtk/gtksettings.c:431 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" -#: gtk/gtksettings.c:440 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Cursor theme name" -#: gtk/gtksettings.c:441 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "Name of the cursor theme to use, or NULL to use the default theme" -#: gtk/gtksettings.c:449 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Cursor theme size" -#: gtk/gtksettings.c:450 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "Size to use for cursors, or 0 to use the default size" -#: gtk/gtksettings.c:460 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Alternative button order" -#: gtk/gtksettings.c:461 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "Whether buttons in dialogues should use the alternative button order" -#: gtk/gtksettings.c:478 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Alternative sort indicator direction" -#: gtk/gtksettings.c:479 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -5032,11 +5305,11 @@ msgstr "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" -#: gtk/gtksettings.c:487 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Show the 'Input Methods' menu" -#: gtk/gtksettings.c:488 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" @@ -5044,11 +5317,11 @@ msgstr "" "Whether the context menus of entries and text views should offer to change " "the input method" -#: gtk/gtksettings.c:496 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Show the 'Insert Unicode Control Character' menu" -#: gtk/gtksettings.c:497 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" @@ -5056,238 +5329,238 @@ msgstr "" "Whether the context menus of entries and text views should offer to insert " "control characters" -#: gtk/gtksettings.c:505 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Start timeout" -#: gtk/gtksettings.c:506 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Starting value for timeouts, when button is pressed" -#: gtk/gtksettings.c:515 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Repeat timeout" -#: gtk/gtksettings.c:516 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Repeat value for timeouts, when button is pressed" -#: gtk/gtksettings.c:525 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Expand timeout" -#: gtk/gtksettings.c:526 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "Expand value for timeouts, when a widget is expanding a new region" -#: gtk/gtksettings.c:561 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Colour scheme" -#: gtk/gtksettings.c:562 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "A palette of named colours for use in themes" -#: gtk/gtksettings.c:571 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Enable Animations" -#: gtk/gtksettings.c:572 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Whether to enable toolkit-wide animations." -#: gtk/gtksettings.c:590 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Enable Touchscreen Mode" -#: gtk/gtksettings.c:591 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "When TRUE, there are no motion notify events delivered on this screen" -#: gtk/gtksettings.c:608 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tooltip timeout" -#: gtk/gtksettings.c:609 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Timeout before tooltip is shown" -#: gtk/gtksettings.c:634 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Tooltip browse timeout" -#: gtk/gtksettings.c:635 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "Timeout before tooltip is shown when browse mode is enabled" -#: gtk/gtksettings.c:656 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Tooltip browse mode timeout" -#: gtk/gtksettings.c:657 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "Timeout after which browse mode is disabled" -#: gtk/gtksettings.c:676 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Keynav Cursor Only" -#: gtk/gtksettings.c:677 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "When TRUE, there are only cursor keys available to navigate widgets" -#: gtk/gtksettings.c:694 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Keynav Wrap Around" -#: gtk/gtksettings.c:695 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "Whether to wrap around when keyboard-navigating widgets" -#: gtk/gtksettings.c:715 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Error Bell" -#: gtk/gtksettings.c:716 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "When TRUE, keyboard navigation and other errors will cause a beep" -#: gtk/gtksettings.c:733 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Colour Hash" -#: gtk/gtksettings.c:734 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "A hash table representation of the colour scheme." -#: gtk/gtksettings.c:742 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Default file chooser backend" -#: gtk/gtksettings.c:743 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Name of the GtkFileChooser backend to use by default" -#: gtk/gtksettings.c:760 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Default print backend" -#: gtk/gtksettings.c:761 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "List of the GtkPrintBackend backends to use by default" -#: gtk/gtksettings.c:784 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "Default command to run when displaying a print preview" -#: gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Command to run when displaying a print preview" -#: gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Enable Mnemonics" -#: gtk/gtksettings.c:802 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Whether labels should have mnemonics" -#: gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Enable Accelerators" -#: gtk/gtksettings.c:819 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Whether menu items should have accelerators" -#: gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Recent Files Limit" -#: gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Number of recently used files" -#: gtk/gtksettings.c:855 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Default IM module" -#: gtk/gtksettings.c:856 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "Which IM module should be used by default" -#: gtk/gtksettings.c:874 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Recent Files Max Age" -#: gtk/gtksettings.c:875 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "Maximum age of recently used files, in days" -#: gtk/gtksettings.c:884 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Fontconfig configuration timestamp" -#: gtk/gtksettings.c:885 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "Timestamp of current fontconfig configuration" -#: gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Sound Theme Name" -#: gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "XDG sound theme name" #. Translators: this means sounds that are played as feedback to user input -#: gtk/gtksettings.c:930 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Audible Input Feedback" -#: gtk/gtksettings.c:931 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "Whether to play event sounds as feedback to user input" -#: gtk/gtksettings.c:952 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Enable Event Sounds" -#: gtk/gtksettings.c:953 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Whether to play any event sounds at all" -#: gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Enable Tooltips" -#: gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Whether tooltips should be shown on widgets" -#: gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Toolbar style" -#: gtk/gtksettings.c:983 +#: ../gtk/gtksettings.c:1057 msgid "" "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "" "Whether default toolbars have text only, text and icons, icons only, etc." -#: gtk/gtksettings.c:997 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Toolbar Icon Size" -#: gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "The size of icons in default toolbars." -#: gtk/gtksettings.c:1015 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Auto Mnemonics" -#: gtk/gtksettings.c:1016 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." @@ -5295,19 +5568,132 @@ msgstr "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." -#: gtk/gtksettings.c:1041 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "Application prefers a dark theme" -#: gtk/gtksettings.c:1042 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "Whether the application prefers to have a dark theme." -#: gtk/gtksizegroup.c:341 +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "Show button images" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "Whether images should be shown on buttons" + +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "Select on focus" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "Whether to select the contents of an entry when it is focused" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "Password Hint Timeout" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "How long to show the last input character in hidden entries" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "Show menu images" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "Whether images should be shown in menus" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "Delay before drop down menus appear" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "Delay before the submenus of a menu bar appear" + +#: ../gtk/gtksettings.c:1195 +msgid "Scrolled Window Placement" +msgstr "Scrolled Window Placement" + +#: ../gtk/gtksettings.c:1196 +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "Can change accelerators" + +#: ../gtk/gtksettings.c:1206 +msgid "" +"Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "" +"Whether menu accelerators can be changed by pressing a key over the menu item" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "Delay before submenus appear" + +#: ../gtk/gtksettings.c:1215 +msgid "" +"Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "" +"Minimum time the pointer must stay over a menu item before the submenu appear" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "Delay before hiding a submenu" + +#: ../gtk/gtksettings.c:1225 +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" + +#: ../gtk/gtksettings.c:1235 +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "" +"Whether to select the contents of a selectable label when it is focused" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "Custom palette" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "Palette to use in the colour selector" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "IM Preedit style" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "How to draw the input method preedit string" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM Status style" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "How to draw the input method statusbar" + +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "Mode" -#: gtk/gtksizegroup.c:342 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" @@ -5315,25 +5701,25 @@ msgstr "" "The directions in which the size group affects the requested sizes of its " "component widgets" -#: gtk/gtksizegroup.c:358 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "Ignore hidden" -#: gtk/gtksizegroup.c:359 +#: ../gtk/gtksizegroup.c:369 msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "" "If TRUE, unmapped widgets are ignored when determining the size of the group" -#: gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "Climb Rate" -#: gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "Snap to Ticks" -#: gtk/gtkspinbutton.c:257 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" @@ -5341,209 +5727,181 @@ msgstr "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" -#: gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "Numeric" -#: gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" msgstr "Whether non-numeric characters should be ignored" -#: gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "Wrap" -#: gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "Whether a spin button should wrap upon reaching its limits" -#: gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "Update Policy" -#: gtk/gtkspinbutton.c:281 +#: ../gtk/gtkspinbutton.c:373 msgid "" "Whether the spin button should update always, or only when the value is legal" msgstr "" "Whether the spin button should update always, or only when the value is legal" -#: gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "Reads the current value, or sets a new value" -#: gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "Style of bevel around the spin button" -#: gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Whether the spinner is active" -#: gtk/gtkspinner.c:146 -msgid "Number of steps" -msgstr "Number of steps" - -#: gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." - -#: gtk/gtkspinner.c:162 -msgid "Animation duration" -msgstr "Animation duration" - -#: gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "" -"The length of time in milliseconds for the spinner to complete a full loop" - -#: gtk/gtkstatusbar.c:199 -msgid "Has Resize Grip" -msgstr "Has Resize Grip" - -#: gtk/gtkstatusbar.c:200 -msgid "Whether the statusbar has a grip for resizing the toplevel" -msgstr "Whether the statusbar has a grip for resizing the toplevel" - -#: gtk/gtkstatusbar.c:245 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "Style of bevel around the statusbar text" -#: gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "The size of the icon" -#: gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "The screen where this status icon will be displayed" -#: gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "Whether the status icon is visible" -#: gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "Whether the status icon is embedded" -#: gtk/gtkstatusicon.c:320 gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "The orientation of the tray" -#: gtk/gtkstatusicon.c:347 gtk/gtkwidget.c:863 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1036 msgid "Has tooltip" msgstr "Has tooltip" -#: gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "Whether this tray icon has a tooltip" -#: gtk/gtkstatusicon.c:373 gtk/gtkwidget.c:884 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1057 msgid "Tooltip Text" msgstr "Tooltip Text" -#: gtk/gtkstatusicon.c:374 gtk/gtkwidget.c:885 gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1058 ../gtk/gtkwidget.c:1079 msgid "The contents of the tooltip for this widget" msgstr "The contents of the tooltip for this widget" -#: gtk/gtkstatusicon.c:397 gtk/gtkwidget.c:905 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1078 msgid "Tooltip markup" msgstr "Tooltip markup" -#: gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "The contents of the tooltip for this tray icon" -#: gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "The title of this tray icon" -#: gtk/gtktable.c:148 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "Style context" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "GtkStyleContext to get style from" + +#: ../gtk/gtkstylecontext.c:541 +msgid "The associated GdkScreen" +msgstr "The associated GdkScreen" + +#: ../gtk/gtkstylecontext.c:547 +msgid "Direction" +msgstr "Direction" + +#: ../gtk/gtkstylecontext.c:548 ../gtk/gtktexttag.c:220 +msgid "Text direction" +msgstr "Text direction" + +#: ../gtk/gtkswitch.c:744 +msgid "Whether the switch is on or off" +msgstr "Whether the switch is on or off" + +#: ../gtk/gtkswitch.c:778 +msgid "The minimum width of the handle" +msgstr "The minimum width of the handle" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "Rows" -#: gtk/gtktable.c:149 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "The number of rows in the table" -#: gtk/gtktable.c:157 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "Columns" -#: gtk/gtktable.c:158 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "The number of columns in the table" -#: gtk/gtktable.c:166 -msgid "Row spacing" -msgstr "Row spacing" - -#: gtk/gtktable.c:167 -msgid "The amount of space between two consecutive rows" -msgstr "The amount of space between two consecutive rows" - -#: gtk/gtktable.c:175 -msgid "Column spacing" -msgstr "Column spacing" - -#: gtk/gtktable.c:176 -msgid "The amount of space between two consecutive columns" -msgstr "The amount of space between two consecutive columns" - -#: gtk/gtktable.c:185 +#: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "If TRUE, the table cells are all the same width/height" -#: gtk/gtktable.c:192 -msgid "Left attachment" -msgstr "Left attachment" - -#: gtk/gtktable.c:199 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Right attachment" -#: gtk/gtktable.c:200 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "The column number to attach the right side of a child widget to" -#: gtk/gtktable.c:206 -msgid "Top attachment" -msgstr "Top attachment" - -#: gtk/gtktable.c:207 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "The row number to attach the top of a child widget to" -#: gtk/gtktable.c:213 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "Bottom attachment" -#: gtk/gtktable.c:220 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "Horizontal options" -#: gtk/gtktable.c:221 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "Options specifying the horizontal behaviour of the child" -#: gtk/gtktable.c:227 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "Vertical options" -#: gtk/gtktable.c:228 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "Options specifying the vertical behaviour of the child" -#: gtk/gtktable.c:234 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "Horizontal padding" -#: gtk/gtktable.c:235 +#: ../gtk/gtktable.c:244 msgid "" "Extra space to put between the child and its left and right neighbors, in " "pixels" @@ -5551,11 +5909,11 @@ msgstr "" "Extra space to put between the child and its left and right neighbours, in " "pixels" -#: gtk/gtktable.c:241 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "Vertical padding" -#: gtk/gtktable.c:242 +#: ../gtk/gtktable.c:251 msgid "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" @@ -5563,51 +5921,51 @@ msgstr "" "Extra space to put between the child and its upper and lower neighbours, in " "pixels" -#: gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:192 msgid "Tag Table" msgstr "Tag Table" -#: gtk/gtktextbuffer.c:193 +#: ../gtk/gtktextbuffer.c:193 msgid "Text Tag Table" msgstr "Text Tag Table" -#: gtk/gtktextbuffer.c:211 +#: ../gtk/gtktextbuffer.c:211 msgid "Current text of the buffer" msgstr "Current text of the buffer" -#: gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:225 msgid "Has selection" msgstr "Has selection" -#: gtk/gtktextbuffer.c:226 +#: ../gtk/gtktextbuffer.c:226 msgid "Whether the buffer has some text currently selected" msgstr "Whether the buffer has some text currently selected" -#: gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:242 msgid "Cursor position" msgstr "Cursor position" -#: gtk/gtktextbuffer.c:243 +#: ../gtk/gtktextbuffer.c:243 msgid "" "The position of the insert mark (as offset from the beginning of the buffer)" msgstr "" "The position of the insert mark (as offset from the beginning of the buffer)" -#: gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:258 msgid "Copy target list" msgstr "Copy target list" -#: gtk/gtktextbuffer.c:259 +#: ../gtk/gtktextbuffer.c:259 msgid "" "The list of targets this buffer supports for clipboard copying and DND source" msgstr "" "The list of targets this buffer supports for clipboard copying and DND source" -#: gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:274 msgid "Paste target list" msgstr "Paste target list" -#: gtk/gtktextbuffer.c:275 +#: ../gtk/gtktextbuffer.c:275 msgid "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" @@ -5615,35 +5973,35 @@ msgstr "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" -#: gtk/gtktextmark.c:90 +#: ../gtk/gtktextmark.c:90 msgid "Mark name" msgstr "Mark name" -#: gtk/gtktextmark.c:97 +#: ../gtk/gtktextmark.c:97 msgid "Left gravity" msgstr "Left gravity" -#: gtk/gtktextmark.c:98 +#: ../gtk/gtktextmark.c:98 msgid "Whether the mark has left gravity" msgstr "Whether the mark has left gravity" -#: gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:170 msgid "Tag name" msgstr "Tag name" -#: gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:171 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "Name used to refer to the text tag. NULL for anonymous tags" -#: gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:189 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Background colour as a (possibly unallocated) GdkColor" -#: gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:196 msgid "Background full height" msgstr "Background full height" -#: gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:197 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5651,27 +6009,23 @@ msgstr "" "Whether the background colour fills the entire line height or only the " "height of the tagged characters" -#: gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:213 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Foreground colour as a (possibly unallocated) GdkColor" -#: gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "Text direction" - -#: gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:221 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "Text direction, e.g. right-to-left or left-to-right" -#: gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:270 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" -#: gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:279 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" -#: gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:288 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5679,15 +6033,15 @@ msgstr "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" -#: gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:299 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" -#: gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:308 msgid "Font size in Pango units" msgstr "Font size in Pango units" -#: gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:318 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 " @@ -5697,11 +6051,11 @@ msgstr "" "adapts to theme changes etc. so is recommended. Pango predefines some scales " "such as PANGO_SCALE_X_LARGE" -#: gtk/gtktexttag.c:336 gtk/gtktextview.c:686 +#: ../gtk/gtktexttag.c:338 ../gtk/gtktextview.c:703 msgid "Left, right, or center justification" msgstr "Left, right, or centre justification" -#: gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:357 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." @@ -5709,31 +6063,31 @@ msgstr "" "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." -#: gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:364 msgid "Left margin" msgstr "Left margin" -#: gtk/gtktexttag.c:363 gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:365 ../gtk/gtktextview.c:712 msgid "Width of the left margin in pixels" msgstr "Width of the left margin in pixels" -#: gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:374 msgid "Right margin" msgstr "Right margin" -#: gtk/gtktexttag.c:373 gtk/gtktextview.c:705 +#: ../gtk/gtktexttag.c:375 ../gtk/gtktextview.c:722 msgid "Width of the right margin in pixels" msgstr "Width of the right margin in pixels" -#: gtk/gtktexttag.c:383 gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:385 ../gtk/gtktextview.c:731 msgid "Indent" msgstr "Indent" -#: gtk/gtktexttag.c:384 gtk/gtktextview.c:715 +#: ../gtk/gtktexttag.c:386 ../gtk/gtktextview.c:732 msgid "Amount to indent the paragraph, in pixels" msgstr "Amount to indent the paragraph, in pixels" -#: gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:397 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -5741,337 +6095,341 @@ msgstr "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" -#: gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:406 msgid "Pixels above lines" msgstr "Pixels above lines" -#: gtk/gtktexttag.c:405 gtk/gtktextview.c:639 +#: ../gtk/gtktexttag.c:407 ../gtk/gtktextview.c:656 msgid "Pixels of blank space above paragraphs" msgstr "Pixels of blank space above paragraphs" -#: gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:416 msgid "Pixels below lines" msgstr "Pixels below lines" -#: gtk/gtktexttag.c:415 gtk/gtktextview.c:649 +#: ../gtk/gtktexttag.c:417 ../gtk/gtktextview.c:666 msgid "Pixels of blank space below paragraphs" msgstr "Pixels of blank space below paragraphs" -#: gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:426 msgid "Pixels inside wrap" msgstr "Pixels inside wrap" -#: gtk/gtktexttag.c:425 gtk/gtktextview.c:659 +#: ../gtk/gtktexttag.c:427 ../gtk/gtktextview.c:676 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Pixels of blank space between wrapped lines in a paragraph" -#: gtk/gtktexttag.c:452 gtk/gtktextview.c:677 +#: ../gtk/gtktexttag.c:454 ../gtk/gtktextview.c:694 msgid "" "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "" "Whether to wrap lines never, at word boundaries, or at character boundaries" -#: gtk/gtktexttag.c:461 gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:463 ../gtk/gtktextview.c:741 msgid "Tabs" msgstr "Tabs" -#: gtk/gtktexttag.c:462 gtk/gtktextview.c:725 +#: ../gtk/gtktexttag.c:464 ../gtk/gtktextview.c:742 msgid "Custom tabs for this text" msgstr "Custom tabs for this text" -#: gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:482 msgid "Invisible" msgstr "Invisible" -#: gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:483 msgid "Whether this text is hidden." msgstr "Whether this text is hidden." -#: gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:497 msgid "Paragraph background color name" msgstr "Paragraph background colour name" -#: gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:498 msgid "Paragraph background color as a string" msgstr "Paragraph background colour as a string" -#: gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color" msgstr "Paragraph background colour" -#: gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "Paragraph background colour as a (possibly unallocated) GdkColor" -#: gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:532 msgid "Margin Accumulates" msgstr "Margin Accumulates" -#: gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:533 msgid "Whether left and right margins accumulate." msgstr "Whether left and right margins accumulate." -#: gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:546 msgid "Background full height set" msgstr "Background full height set" -#: gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:547 msgid "Whether this tag affects background height" msgstr "Whether this tag affects background height" -#: gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:586 msgid "Justification set" msgstr "Justification set" -#: gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:587 msgid "Whether this tag affects paragraph justification" msgstr "Whether this tag affects paragraph justification" -#: gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:594 msgid "Left margin set" msgstr "Left margin set" -#: gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the left margin" msgstr "Whether this tag affects the left margin" -#: gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:598 msgid "Indent set" msgstr "Indent set" -#: gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:599 msgid "Whether this tag affects indentation" msgstr "Whether this tag affects indentation" -#: gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:606 msgid "Pixels above lines set" msgstr "Pixels above lines set" -#: gtk/gtktexttag.c:605 gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:607 ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the number of pixels above lines" msgstr "Whether this tag affects the number of pixels above lines" -#: gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:610 msgid "Pixels below lines set" msgstr "Pixels below lines set" -#: gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:614 msgid "Pixels inside wrap set" msgstr "Pixels inside wrap set" -#: gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "Whether this tag affects the number of pixels between wrapped lines" -#: gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:622 msgid "Right margin set" msgstr "Right margin set" -#: gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:623 msgid "Whether this tag affects the right margin" msgstr "Whether this tag affects the right margin" -#: gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:630 msgid "Wrap mode set" msgstr "Wrap mode set" -#: gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects line wrap mode" msgstr "Whether this tag affects line wrap mode" -#: gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:634 msgid "Tabs set" msgstr "Tabs set" -#: gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:635 msgid "Whether this tag affects tabs" msgstr "Whether this tag affects tabs" -#: gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:638 msgid "Invisible set" msgstr "Invisible set" -#: gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects text visibility" msgstr "Whether this tag affects text visibility" -#: gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:642 msgid "Paragraph background set" msgstr "Paragraph background set" -#: gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:643 msgid "Whether this tag affects the paragraph background color" msgstr "Whether this tag affects the paragraph background colour" -#: gtk/gtktextview.c:638 +#: ../gtk/gtktextview.c:655 msgid "Pixels Above Lines" msgstr "Pixels Above Lines" -#: gtk/gtktextview.c:648 +#: ../gtk/gtktextview.c:665 msgid "Pixels Below Lines" msgstr "Pixels Below Lines" -#: gtk/gtktextview.c:658 +#: ../gtk/gtktextview.c:675 msgid "Pixels Inside Wrap" msgstr "Pixels Inside Wrap" -#: gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:693 msgid "Wrap Mode" msgstr "Wrap Mode" -#: gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:711 msgid "Left Margin" msgstr "Left Margin" -#: gtk/gtktextview.c:704 +#: ../gtk/gtktextview.c:721 msgid "Right Margin" msgstr "Right Margin" -#: gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:749 msgid "Cursor Visible" msgstr "Cursor Visible" -#: gtk/gtktextview.c:733 +#: ../gtk/gtktextview.c:750 msgid "If the insertion cursor is shown" msgstr "If the insertion cursor is shown" -#: gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:757 msgid "Buffer" msgstr "Buffer" -#: gtk/gtktextview.c:741 +#: ../gtk/gtktextview.c:758 msgid "The buffer which is displayed" msgstr "The buffer which is displayed" -#: gtk/gtktextview.c:749 +#: ../gtk/gtktextview.c:766 msgid "Whether entered text overwrites existing contents" msgstr "Whether entered text overwrites existing contents" -#: gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:773 msgid "Accepts tab" msgstr "Accepts tab" -#: gtk/gtktextview.c:757 +#: ../gtk/gtktextview.c:774 msgid "Whether Tab will result in a tab character being entered" msgstr "Whether Tab will result in a tab character being entered" -#: gtk/gtktextview.c:786 +#: ../gtk/gtktextview.c:809 msgid "Error underline color" msgstr "Error underline colour" -#: gtk/gtktextview.c:787 +#: ../gtk/gtktextview.c:810 msgid "Color with which to draw error-indication underlines" msgstr "Colour with which to draw error-indication underlines" -#: gtk/gtktoggleaction.c:118 +#: ../gtk/gtkthemingengine.c:249 +msgid "Theming engine name" +msgstr "Theming engine name" + +#: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Create the same proxies as a radio action" -#: gtk/gtktoggleaction.c:119 +#: ../gtk/gtktoggleaction.c:119 msgid "Whether the proxies for this action look like radio action proxies" msgstr "Whether the proxies for this action look like radio action proxies" -#: gtk/gtktoggleaction.c:134 +#: ../gtk/gtktoggleaction.c:134 msgid "Whether the toggle action should be active" msgstr "Whether the toggle action should be active" -#: gtk/gtktogglebutton.c:116 gtk/gtktoggletoolbutton.c:113 +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 msgid "If the toggle button should be pressed in" msgstr "If the toggle button should be pressed in" -#: gtk/gtktogglebutton.c:124 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "If the toggle button is in an \"in between\" state" -#: gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "Draw Indicator" -#: gtk/gtktogglebutton.c:132 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "If the toggle part of the button is displayed" -#: gtk/gtktoolbar.c:465 gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1061 msgid "Toolbar Style" msgstr "Toolbar Style" -#: gtk/gtktoolbar.c:466 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "How to draw the toolbar" -#: gtk/gtktoolbar.c:473 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "Show Arrow" -#: gtk/gtktoolbar.c:474 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "If an arrow should be shown if the toolbar doesn't fit" -#: gtk/gtktoolbar.c:495 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "Size of icons in this toolbar" -#: gtk/gtktoolbar.c:510 gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1047 msgid "Icon size set" msgstr "Icon size set" -#: gtk/gtktoolbar.c:511 gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1048 msgid "Whether the icon-size property has been set" msgstr "Whether the icon-size property has been set" -#: gtk/gtktoolbar.c:520 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "Whether the item should receive extra space when the toolbar grows" -#: gtk/gtktoolbar.c:528 gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1642 msgid "Whether the item should be the same size as other homogeneous items" msgstr "Whether the item should be the same size as other homogeneous items" -#: gtk/gtktoolbar.c:535 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "Spacer size" -#: gtk/gtktoolbar.c:536 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "Size of spacers" -#: gtk/gtktoolbar.c:545 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "Amount of border space between the toolbar shadow and the buttons" -#: gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "Maximum child expand" -#: gtk/gtktoolbar.c:554 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "Maximum amount of space an expandable item will be given" -#: gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "Space style" -#: gtk/gtktoolbar.c:563 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "Whether spacers are vertical lines or just blank" -#: gtk/gtktoolbar.c:570 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "Button relief" -#: gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "Type of bevel around toolbar buttons" -#: gtk/gtktoolbar.c:578 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "Style of bevel around the toolbar" -#: gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "Text to show in the item." -#: gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6079,43 +6437,43 @@ msgstr "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" -#: gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "Widget to use as the item label" -#: gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "Stock Id" -#: gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "The stock icon displayed on the item" -#: gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "Icon name" -#: gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "The name of the themed icon displayed on the item" -#: gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "Icon widget" -#: gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "Icon widget to display in the item" -#: gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "Icon spacing" -#: gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "Spacing in pixels between the icon and label" -#: gtk/gtktoolitem.c:201 +#: ../gtk/gtktoolitem.c:210 msgid "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" @@ -6123,506 +6481,513 @@ msgstr "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" -#: gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1589 msgid "The human-readable title of this item group" msgstr "The human-readable title of this item group" -#: gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1596 msgid "A widget to display in place of the usual label" msgstr "A widget to display in place of the usual label" -#: gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "Collapsed" msgstr "Collapsed" -#: gtk/gtktoolitemgroup.c:1586 -#, fuzzy +#: ../gtk/gtktoolitemgroup.c:1603 msgid "Whether the group has been collapsed and items are hidden" msgstr "Whether the group has been collapsed and items are hidden" -#: gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1609 msgid "ellipsize" msgstr "ellipsise" -#: gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1610 msgid "Ellipsize for item group headers" msgstr "Ellipsise for item group headers" -#: gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Header Relief" msgstr "Header Relief" -#: gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1617 msgid "Relief of the group header button" msgstr "Relief of the group header button" -#: gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1632 msgid "Header Spacing" msgstr "Header Spacing" -#: gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1633 msgid "Spacing between expander arrow and caption" msgstr "Spacing between expander arrow and caption" -#: gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1649 msgid "Whether the item should receive extra space when the group grows" msgstr "Whether the item should receive extra space when the group grows" -#: gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1656 msgid "Whether the item should fill the available space" msgstr "Whether the item should fill the available space" -#: gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "New Row" msgstr "New Row" -#: gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1663 msgid "Whether the item should start a new row" msgstr "Whether the item should start a new row" -#: gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1670 msgid "Position of the item within this group" msgstr "Position of the item within this group" -#: gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1032 msgid "Size of icons in this tool palette" msgstr "Size of icons in this tool palette" -#: gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1062 msgid "Style of items in the tool palette" msgstr "Style of items in the tool palette" -#: gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1078 msgid "Exclusive" msgstr "Exclusive" -#: gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1079 msgid "Whether the item group should be the only expanded at a given time" msgstr "Whether the item group should be the only expanded at a given time" -#: gtk/gtktoolpalette.c:1066 +#: ../gtk/gtktoolpalette.c:1094 msgid "" "Whether the item group should receive extra space when the palette grows" msgstr "" "Whether the item group should receive extra space when the palette grows" -#: gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" msgstr "Foreground colour for symbolic icons" -#: gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" msgstr "Error colour" -#: gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" msgstr "Error colour for symbolic icons" -#: gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" msgstr "Warning colour" -#: gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" msgstr "Warning colour for symbolic icons" -#: gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" msgstr "Success colour" -#: gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" msgstr "Success colour for symbolic icons" -#: gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" msgstr "Padding that should be put around icons in the tray" -#: gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +msgid "TreeMenu model" +msgstr "TreeMenu model" + +#: ../gtk/gtktreemenu.c:288 +msgid "The model for the tree menu" +msgstr "The model for the tree menu" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "TreeMenu root row" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "The TreeMenu will display children of the specified root" + +#: ../gtk/gtktreemenu.c:344 +msgid "Tearoff" +msgstr "Tearoff" + +#: ../gtk/gtktreemenu.c:345 +msgid "Whether the menu has a tearoff item" +msgstr "Whether the menu has a tearoff item" + +#: ../gtk/gtktreemenu.c:361 +msgid "Wrap Width" +msgstr "Wrap Width" + +#: ../gtk/gtktreemenu.c:362 +msgid "Wrap width for laying out items in a grid" +msgstr "Wrap width for laying out items in a grid" + +#: ../gtk/gtktreemodelsort.c:312 msgid "TreeModelSort Model" msgstr "TreeModelSort Model" -#: gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:313 msgid "The model for the TreeModelSort to sort" msgstr "The model for the TreeModelSort to sort" -#: gtk/gtktreeview.c:563 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "TreeView Model" -#: gtk/gtktreeview.c:564 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "The model for the tree view" -#: gtk/gtktreeview.c:572 -msgid "Horizontal Adjustment for the widget" -msgstr "Horizontal Adjustment for the widget" - -#: gtk/gtktreeview.c:580 -msgid "Vertical Adjustment for the widget" -msgstr "Vertical Adjustment for the widget" - -#: gtk/gtktreeview.c:587 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "Headers Visible" -#: gtk/gtktreeview.c:588 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "Show the column header buttons" -#: gtk/gtktreeview.c:595 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "Headers Clickable" -#: gtk/gtktreeview.c:596 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "Column headers respond to click events" -#: gtk/gtktreeview.c:603 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "Expander Column" -#: gtk/gtktreeview.c:604 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "Set the column for the expander column" -#: gtk/gtktreeview.c:619 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "Rules Hint" -#: gtk/gtktreeview.c:620 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "Set a hint to the theme engine to draw rows in alternating colours" -#: gtk/gtktreeview.c:627 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "Enable Search" -#: gtk/gtktreeview.c:628 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "View allows user to search through columns interactively" -#: gtk/gtktreeview.c:635 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "Search Column" -#: gtk/gtktreeview.c:636 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "Model column to search through during interactive search" -#: gtk/gtktreeview.c:656 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "Fixed Height Mode" -#: gtk/gtktreeview.c:657 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "Speeds up GtkTreeView by assuming that all rows have the same height" -#: gtk/gtktreeview.c:677 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "Hover Selection" -#: gtk/gtktreeview.c:678 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "Whether the selection should follow the pointer" -#: gtk/gtktreeview.c:697 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "Hover Expand" -#: gtk/gtktreeview.c:698 +#: ../gtk/gtktreeview.c:1113 msgid "" "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "" "Whether rows should be expanded/collapsed when the pointer moves over them" -#: gtk/gtktreeview.c:712 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "Show Expanders" -#: gtk/gtktreeview.c:713 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "View has expanders" -#: gtk/gtktreeview.c:727 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "Level Indentation" -#: gtk/gtktreeview.c:728 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "Extra indentation for each level" -#: gtk/gtktreeview.c:737 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "Rubber Banding" -#: gtk/gtktreeview.c:738 +#: ../gtk/gtktreeview.c:1153 msgid "" "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "" "Whether to enable selection of multiple items by dragging the mouse pointer" -#: gtk/gtktreeview.c:745 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "Enable Grid Lines" -#: gtk/gtktreeview.c:746 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "Whether grid lines should be drawn in the tree view" -#: gtk/gtktreeview.c:754 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "Enable Tree Lines" -#: gtk/gtktreeview.c:755 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "Whether tree lines should be drawn in the tree view" -#: gtk/gtktreeview.c:763 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "The column in the model containing the tooltip texts for the rows" -#: gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "Vertical Separator Width" -#: gtk/gtktreeview.c:786 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "Vertical space between cells. Must be an even number" -#: gtk/gtktreeview.c:794 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "Horizontal Separator Width" -#: gtk/gtktreeview.c:795 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "Horizontal space between cells. Must be an even number" -#: gtk/gtktreeview.c:803 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "Allow Rules" -#: gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "Allow drawing of alternating colour rows" -#: gtk/gtktreeview.c:810 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "Indent Expanders" -#: gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "Make the expanders indented" -#: gtk/gtktreeview.c:817 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "Even Row Colour" -#: gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "Colour to use for even rows" -#: gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "Odd Row Colour" -#: gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "Colour to use for odd rows" -#: gtk/gtktreeview.c:831 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "Grid line width" -#: gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" msgstr "Width, in pixels, of the tree view grid lines" -#: gtk/gtktreeview.c:838 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "Tree line width" -#: gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "Width, in pixels, of the tree view lines" -#: gtk/gtktreeview.c:845 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "Grid line pattern" -#: gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "Dash pattern used to draw the tree view grid lines" -#: gtk/gtktreeview.c:852 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "Tree line pattern" -#: gtk/gtktreeview.c:853 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "Dash pattern used to draw the tree view lines" -#: gtk/gtktreeviewcolumn.c:196 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "Whether to display the column" -#: gtk/gtktreeviewcolumn.c:203 gtk/gtkwindow.c:609 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "Resizable" -#: gtk/gtktreeviewcolumn.c:204 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "Column is user-resizable" -#: gtk/gtktreeviewcolumn.c:212 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "Current width of the column" -#: gtk/gtktreeviewcolumn.c:221 -msgid "Space which is inserted between cells" -msgstr "Space which is inserted between cells" - -#: gtk/gtktreeviewcolumn.c:229 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "Sizing" -#: gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "Resize mode of the column" -#: gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "Fixed Width" -#: gtk/gtktreeviewcolumn.c:239 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "Current fixed width of the column" -#: gtk/gtktreeviewcolumn.c:248 -msgid "Minimum Width" -msgstr "Minimum Width" - -#: gtk/gtktreeviewcolumn.c:249 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "Minimum allowed width of the column" -#: gtk/gtktreeviewcolumn.c:258 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "Maximum Width" -#: gtk/gtktreeviewcolumn.c:259 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "Maximum allowed width of the column" -#: gtk/gtktreeviewcolumn.c:269 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "Title to appear in column header" -#: gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "Column gets share of extra width allocated to the widget" -#: gtk/gtktreeviewcolumn.c:284 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "Clickable" -#: gtk/gtktreeviewcolumn.c:285 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "Whether the header can be clicked" -#: gtk/gtktreeviewcolumn.c:293 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "Widget" -#: gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "Widget to put in column header button instead of column title" -#: gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "X Alignment of the column header text or widget" -#: gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "Whether the column can be reordered around the headers" -#: gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "Sort indicator" -#: gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "Whether to show a sort indicator" -#: gtk/gtktreeviewcolumn.c:327 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "Sort order" -#: gtk/gtktreeviewcolumn.c:328 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "Sort direction the sort indicator should indicate" -#: gtk/gtktreeviewcolumn.c:344 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "Sort column ID" -#: gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "Logical sort column ID this column sorts on when selected for sorting" -#: gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Whether tearoff menu items should be added to menus" -#: gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Merged UI definition" -#: gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "An XML string describing the merged UI" -#: gtk/gtkviewport.c:143 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" - -#: gtk/gtkviewport.c:151 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" - -#: gtk/gtkviewport.c:159 +#: ../gtk/gtkviewport.c:155 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "Determines how the shadowed box around the viewport is drawn" -#: gtk/gtkwidget.c:714 +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "Use symbolic icons" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "Whether to use symbolic icons" + +#: ../gtk/gtkwidget.c:895 msgid "Widget name" msgstr "Widget name" -#: gtk/gtkwidget.c:715 +#: ../gtk/gtkwidget.c:896 msgid "The name of the widget" msgstr "The name of the widget" -#: gtk/gtkwidget.c:721 +#: ../gtk/gtkwidget.c:902 msgid "Parent widget" msgstr "Parent widget" -#: gtk/gtkwidget.c:722 +#: ../gtk/gtkwidget.c:903 msgid "The parent widget of this widget. Must be a Container widget" msgstr "The parent widget of this widget. Must be a Container widget" -#: gtk/gtkwidget.c:729 +#: ../gtk/gtkwidget.c:910 msgid "Width request" msgstr "Width request" -#: gtk/gtkwidget.c:730 +#: ../gtk/gtkwidget.c:911 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6630,11 +6995,11 @@ msgstr "" "Override for width request of the widget, or -1 if natural request should be " "used" -#: gtk/gtkwidget.c:738 +#: ../gtk/gtkwidget.c:919 msgid "Height request" msgstr "Height request" -#: gtk/gtkwidget.c:739 +#: ../gtk/gtkwidget.c:920 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6642,83 +7007,83 @@ msgstr "" "Override for height request of the widget, or -1 if natural request should " "be used" -#: gtk/gtkwidget.c:748 +#: ../gtk/gtkwidget.c:929 msgid "Whether the widget is visible" msgstr "Whether the widget is visible" -#: gtk/gtkwidget.c:755 +#: ../gtk/gtkwidget.c:936 msgid "Whether the widget responds to input" msgstr "Whether the widget responds to input" -#: gtk/gtkwidget.c:761 +#: ../gtk/gtkwidget.c:942 msgid "Application paintable" msgstr "Application paintable" -#: gtk/gtkwidget.c:762 +#: ../gtk/gtkwidget.c:943 msgid "Whether the application will paint directly on the widget" msgstr "Whether the application will paint directly on the widget" -#: gtk/gtkwidget.c:768 +#: ../gtk/gtkwidget.c:949 msgid "Can focus" msgstr "Can focus" -#: gtk/gtkwidget.c:769 +#: ../gtk/gtkwidget.c:950 msgid "Whether the widget can accept the input focus" msgstr "Whether the widget can accept the input focus" -#: gtk/gtkwidget.c:775 +#: ../gtk/gtkwidget.c:956 msgid "Has focus" msgstr "Has focus" -#: gtk/gtkwidget.c:776 +#: ../gtk/gtkwidget.c:957 msgid "Whether the widget has the input focus" msgstr "Whether the widget has the input focus" -#: gtk/gtkwidget.c:782 +#: ../gtk/gtkwidget.c:963 msgid "Is focus" msgstr "Is focus" -#: gtk/gtkwidget.c:783 +#: ../gtk/gtkwidget.c:964 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Whether the widget is the focus widget within the toplevel" -#: gtk/gtkwidget.c:789 +#: ../gtk/gtkwidget.c:970 msgid "Can default" msgstr "Can default" -#: gtk/gtkwidget.c:790 +#: ../gtk/gtkwidget.c:971 msgid "Whether the widget can be the default widget" msgstr "Whether the widget can be the default widget" -#: gtk/gtkwidget.c:796 +#: ../gtk/gtkwidget.c:977 msgid "Has default" msgstr "Has default" -#: gtk/gtkwidget.c:797 +#: ../gtk/gtkwidget.c:978 msgid "Whether the widget is the default widget" msgstr "Whether the widget is the default widget" -#: gtk/gtkwidget.c:803 +#: ../gtk/gtkwidget.c:984 msgid "Receives default" msgstr "Receives default" -#: gtk/gtkwidget.c:804 +#: ../gtk/gtkwidget.c:985 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "If TRUE, the widget will receive the default action when it is focused" -#: gtk/gtkwidget.c:810 +#: ../gtk/gtkwidget.c:991 msgid "Composite child" msgstr "Composite child" -#: gtk/gtkwidget.c:811 +#: ../gtk/gtkwidget.c:992 msgid "Whether the widget is part of a composite widget" msgstr "Whether the widget is part of a composite widget" -#: gtk/gtkwidget.c:817 +#: ../gtk/gtkwidget.c:998 msgid "Style" msgstr "Style" -#: gtk/gtkwidget.c:818 +#: ../gtk/gtkwidget.c:999 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" @@ -6726,148 +7091,175 @@ msgstr "" "The style of the widget, which contains information about how it will look " "(colours etc)" -#: gtk/gtkwidget.c:824 +#: ../gtk/gtkwidget.c:1005 msgid "Events" msgstr "Events" -#: gtk/gtkwidget.c:825 +#: ../gtk/gtkwidget.c:1006 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "The event mask that decides what kind of GdkEvents this widget gets" -#: gtk/gtkwidget.c:832 -msgid "Extension events" -msgstr "Extension events" - -#: gtk/gtkwidget.c:833 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "The mask that decides what kind of extension events this widget gets" - -#: gtk/gtkwidget.c:840 +#: ../gtk/gtkwidget.c:1013 msgid "No show all" msgstr "No show all" -#: gtk/gtkwidget.c:841 +#: ../gtk/gtkwidget.c:1014 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Whether gtk_widget_show_all() should not affect this widget" -#: gtk/gtkwidget.c:864 +#: ../gtk/gtkwidget.c:1037 msgid "Whether this widget has a tooltip" msgstr "Whether this widget has a tooltip" -#: gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:1093 msgid "Window" msgstr "Window" -#: gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:1094 msgid "The widget's window if it is realized" msgstr "The widget's window if it is realised" -#: gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:1108 msgid "Double Buffered" msgstr "Double Buffered" -#: gtk/gtkwidget.c:936 +#: ../gtk/gtkwidget.c:1109 msgid "Whether the widget is double buffered" msgstr "Whether the widget is double buffered" -#: gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:1124 msgid "How to position in extra horizontal space" -msgstr "" +msgstr "How to position in extra horizontal space" -#: gtk/gtkwidget.c:967 +#: ../gtk/gtkwidget.c:1140 msgid "How to position in extra vertical space" -msgstr "" +msgstr "How to position in extra vertical space" -#: gtk/gtkwidget.c:986 -#, fuzzy +#: ../gtk/gtkwidget.c:1159 msgid "Margin on Left" -msgstr "Margin" +msgstr "Margin on Left" -#: gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1160 msgid "Pixels of extra space on the left side" -msgstr "" +msgstr "Pixels of extra space on the left side" -#: gtk/gtkwidget.c:1007 +#: ../gtk/gtkwidget.c:1180 msgid "Margin on Right" -msgstr "" +msgstr "Margin on Right" -#: gtk/gtkwidget.c:1008 -#, fuzzy +#: ../gtk/gtkwidget.c:1181 msgid "Pixels of extra space on the right side" -msgstr "Pixels of blank space above paragraphs" +msgstr "Pixels of extra space on the right side" -#: gtk/gtkwidget.c:1028 -#, fuzzy +#: ../gtk/gtkwidget.c:1201 msgid "Margin on Top" -msgstr "Margin" +msgstr "Margin on Top" -#: gtk/gtkwidget.c:1029 -#, fuzzy +#: ../gtk/gtkwidget.c:1202 msgid "Pixels of extra space on the top side" -msgstr "Pixels of blank space above paragraphs" +msgstr "Pixels of extra space on the top side" -#: gtk/gtkwidget.c:1049 +#: ../gtk/gtkwidget.c:1222 msgid "Margin on Bottom" -msgstr "" +msgstr "Margin on Bottom" -#: gtk/gtkwidget.c:1050 +#: ../gtk/gtkwidget.c:1223 msgid "Pixels of extra space on the bottom side" -msgstr "" +msgstr "Pixels of extra space on the bottom side" -#: gtk/gtkwidget.c:1067 -#, fuzzy +#: ../gtk/gtkwidget.c:1240 msgid "All Margins" -msgstr "Margin" +msgstr "All Margins" -#: gtk/gtkwidget.c:1068 +#: ../gtk/gtkwidget.c:1241 msgid "Pixels of extra space on all four sides" -msgstr "" +msgstr "Pixels of extra space on all four sides" -#: gtk/gtkwidget.c:2741 +#: ../gtk/gtkwidget.c:1274 +msgid "Horizontal Expand" +msgstr "Horizontal Expand" + +#: ../gtk/gtkwidget.c:1275 +msgid "Whether widget wants more horizontal space" +msgstr "Whether widget wants more horizontal space" + +#: ../gtk/gtkwidget.c:1289 +msgid "Horizontal Expand Set" +msgstr "Horizontal Expand Set" + +#: ../gtk/gtkwidget.c:1290 +msgid "Whether to use the hexpand property" +msgstr "Whether to use the hexpand property" + +#: ../gtk/gtkwidget.c:1304 +msgid "Vertical Expand" +msgstr "Vertical Expand" + +#: ../gtk/gtkwidget.c:1305 +msgid "Whether widget wants more vertical space" +msgstr "Whether widget wants more vertical space" + +#: ../gtk/gtkwidget.c:1319 +msgid "Vertical Expand Set" +msgstr "Vertical Expand Set" + +#: ../gtk/gtkwidget.c:1320 +msgid "Whether to use the vexpand property" +msgstr "Whether to use the vexpand property" + +#: ../gtk/gtkwidget.c:1334 +msgid "Expand Both" +msgstr "Expand Both" + +#: ../gtk/gtkwidget.c:1335 +msgid "Whether widget wants to expand in both directions" +msgstr "Whether widget wants to expand in both directions" + +#: ../gtk/gtkwidget.c:2994 msgid "Interior Focus" msgstr "Interior Focus" -#: gtk/gtkwidget.c:2742 +#: ../gtk/gtkwidget.c:2995 msgid "Whether to draw the focus indicator inside widgets" msgstr "Whether to draw the focus indicator inside widgets" -#: gtk/gtkwidget.c:2748 +#: ../gtk/gtkwidget.c:3001 msgid "Focus linewidth" msgstr "Focus linewidth" -#: gtk/gtkwidget.c:2749 +#: ../gtk/gtkwidget.c:3002 msgid "Width, in pixels, of the focus indicator line" msgstr "Width, in pixels, of the focus indicator line" -#: gtk/gtkwidget.c:2755 +#: ../gtk/gtkwidget.c:3008 msgid "Focus line dash pattern" msgstr "Focus line dash pattern" -#: gtk/gtkwidget.c:2756 +#: ../gtk/gtkwidget.c:3009 msgid "Dash pattern used to draw the focus indicator" msgstr "Dash pattern used to draw the focus indicator" -#: gtk/gtkwidget.c:2761 +#: ../gtk/gtkwidget.c:3014 msgid "Focus padding" msgstr "Focus padding" -#: gtk/gtkwidget.c:2762 +#: ../gtk/gtkwidget.c:3015 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Width, in pixels, between focus indicator and the widget 'box'" -#: gtk/gtkwidget.c:2767 +#: ../gtk/gtkwidget.c:3020 msgid "Cursor color" msgstr "Cursor colour" -#: gtk/gtkwidget.c:2768 +#: ../gtk/gtkwidget.c:3021 msgid "Color with which to draw insertion cursor" msgstr "Colour with which to draw insertion cursor" -#: gtk/gtkwidget.c:2773 +#: ../gtk/gtkwidget.c:3026 msgid "Secondary cursor color" msgstr "Secondary cursor colour" -#: gtk/gtkwidget.c:2774 +#: ../gtk/gtkwidget.c:3027 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -6875,43 +7267,43 @@ msgstr "" "Colour with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" -#: gtk/gtkwidget.c:2779 +#: ../gtk/gtkwidget.c:3032 msgid "Cursor line aspect ratio" msgstr "Cursor line aspect ratio" -#: gtk/gtkwidget.c:2780 +#: ../gtk/gtkwidget.c:3033 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Aspect ratio with which to draw insertion cursor" -#: gtk/gtkwidget.c:2786 +#: ../gtk/gtkwidget.c:3039 msgid "Window dragging" msgstr "Window dragging" -#: gtk/gtkwidget.c:2787 +#: ../gtk/gtkwidget.c:3040 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "Whether windows can be dragged by clicking on empty areas" -#: gtk/gtkwidget.c:2800 +#: ../gtk/gtkwidget.c:3053 msgid "Unvisited Link Color" msgstr "Unvisited Link Colour" -#: gtk/gtkwidget.c:2801 +#: ../gtk/gtkwidget.c:3054 msgid "Color of unvisited links" msgstr "Colour of unvisited links" -#: gtk/gtkwidget.c:2814 +#: ../gtk/gtkwidget.c:3067 msgid "Visited Link Color" msgstr "Visited Link Colour" -#: gtk/gtkwidget.c:2815 +#: ../gtk/gtkwidget.c:3068 msgid "Color of visited links" msgstr "Colour of visited links" -#: gtk/gtkwidget.c:2829 +#: ../gtk/gtkwidget.c:3082 msgid "Wide Separators" msgstr "Wide Separators" -#: gtk/gtkwidget.c:2830 +#: ../gtk/gtkwidget.c:3083 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" @@ -6919,79 +7311,79 @@ msgstr "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" -#: gtk/gtkwidget.c:2844 +#: ../gtk/gtkwidget.c:3097 msgid "Separator Width" msgstr "Separator Width" -#: gtk/gtkwidget.c:2845 +#: ../gtk/gtkwidget.c:3098 msgid "The width of separators if wide-separators is TRUE" msgstr "The width of separators if wide-separators is TRUE" -#: gtk/gtkwidget.c:2859 +#: ../gtk/gtkwidget.c:3112 msgid "Separator Height" msgstr "Separator Height" -#: gtk/gtkwidget.c:2860 +#: ../gtk/gtkwidget.c:3113 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "The height of separators if \"wide-separators\" is TRUE" -#: gtk/gtkwidget.c:2874 +#: ../gtk/gtkwidget.c:3127 msgid "Horizontal Scroll Arrow Length" msgstr "Horizontal Scroll Arrow Length" -#: gtk/gtkwidget.c:2875 +#: ../gtk/gtkwidget.c:3128 msgid "The length of horizontal scroll arrows" msgstr "The length of horizontal scroll arrows" -#: gtk/gtkwidget.c:2889 +#: ../gtk/gtkwidget.c:3142 msgid "Vertical Scroll Arrow Length" msgstr "Vertical Scroll Arrow Length" -#: gtk/gtkwidget.c:2890 +#: ../gtk/gtkwidget.c:3143 msgid "The length of vertical scroll arrows" msgstr "The length of vertical scroll arrows" -#: gtk/gtkwindow.c:567 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "Window Type" -#: gtk/gtkwindow.c:568 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "The type of the window" -#: gtk/gtkwindow.c:576 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "Window Title" -#: gtk/gtkwindow.c:577 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "The title of the window" -#: gtk/gtkwindow.c:584 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "Window Role" -#: gtk/gtkwindow.c:585 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" msgstr "Unique identifier for the window to be used when restoring a session" -#: gtk/gtkwindow.c:601 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "Startup ID" -#: gtk/gtkwindow.c:602 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "Unique startup identifier for the window used by startup-notification" -#: gtk/gtkwindow.c:610 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "If TRUE, users can resize the window" -#: gtk/gtkwindow.c:617 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "Modal" -#: gtk/gtkwindow.c:618 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" @@ -6999,78 +7391,78 @@ msgstr "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" -#: gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "Window Position" -#: gtk/gtkwindow.c:626 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "The initial position of the window" -#: gtk/gtkwindow.c:634 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "Default Width" -#: gtk/gtkwindow.c:635 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" msgstr "" "The default width of the window, used when initially showing the window" -#: gtk/gtkwindow.c:644 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "Default Height" -#: gtk/gtkwindow.c:645 +#: ../gtk/gtkwindow.c:681 msgid "" "The default height of the window, used when initially showing the window" msgstr "" "The default height of the window, used when initially showing the window" -#: gtk/gtkwindow.c:654 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "Destroy with Parent" -#: gtk/gtkwindow.c:655 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "If this window should be destroyed when the parent is destroyed" -#: gtk/gtkwindow.c:663 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "Icon for this window" -#: gtk/gtkwindow.c:669 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "Mnemonics Visible" -#: gtk/gtkwindow.c:670 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "Whether mnemonics are currently visible in this window" -#: gtk/gtkwindow.c:686 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "Name of the themed icon for this window" -#: gtk/gtkwindow.c:701 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "Is Active" -#: gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "Whether the toplevel is the current active window" -#: gtk/gtkwindow.c:709 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "Focus in Toplevel" -#: gtk/gtkwindow.c:710 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "Whether the input focus is within this GtkWindow" -#: gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "Type hint" -#: gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7078,101 +7470,210 @@ msgstr "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." -#: gtk/gtkwindow.c:726 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "Skip taskbar" -#: gtk/gtkwindow.c:727 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "TRUE if the window should not be in the task bar." -#: gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "Skip pager" -#: gtk/gtkwindow.c:735 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "TRUE if the window should not be in the pager." -#: gtk/gtkwindow.c:742 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "Urgent" -#: gtk/gtkwindow.c:743 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "TRUE if the window should be brought to the user's attention." -#: gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "Accept focus" -#: gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "TRUE if the window should receive the input focus." -#: gtk/gtkwindow.c:772 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "Focus on map" -#: gtk/gtkwindow.c:773 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "TRUE if the window should receive the input focus when mapped." -#: gtk/gtkwindow.c:787 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "Decorated" -#: gtk/gtkwindow.c:788 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "Whether the window should be decorated by the window manager" -#: gtk/gtkwindow.c:802 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "Deletable" -#: gtk/gtkwindow.c:803 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "Whether the window frame should have a close button" -#: gtk/gtkwindow.c:819 +#: ../gtk/gtkwindow.c:858 +msgid "Resize grip" +msgstr "Resize grip" + +#: ../gtk/gtkwindow.c:859 +msgid "Specifies whether the window should have a resize grip" +msgstr "Specifies whether the window should have a resize grip" + +#: ../gtk/gtkwindow.c:873 +msgid "Resize grip is visible" +msgstr "Resize grip is visible" + +#: ../gtk/gtkwindow.c:874 +msgid "Specifies whether the window's resize grip is visible." +msgstr "Specifies whether the window's resize grip is visible." + +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "Gravity" -#: gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "The window gravity of the window" -#: gtk/gtkwindow.c:837 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "Transient for Window" -#: gtk/gtkwindow.c:838 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "The transient parent of the dialogue" -#: gtk/gtkwindow.c:853 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "Opacity for Window" -#: gtk/gtkwindow.c:854 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "The opacity of the window, from 0 to 1" -#: modules/input/gtkimcontextxim.c:334 -msgid "IM Preedit style" -msgstr "IM Preedit style" +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 +msgid "Width of resize grip" +msgstr "Width of resize grip" -#: modules/input/gtkimcontextxim.c:335 -msgid "How to draw the input method preedit string" -msgstr "How to draw the input method preedit string" +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 +msgid "Height of resize grip" +msgstr "Height of resize grip" -#: modules/input/gtkimcontextxim.c:343 -msgid "IM Status style" -msgstr "IM Status style" +#: ../gtk/gtkwindow.c:961 +msgid "GtkApplication" +msgstr "GtkApplication" -#: modules/input/gtkimcontextxim.c:344 -msgid "How to draw the input method statusbar" -msgstr "How to draw the input method statusbar" +#: ../gtk/gtkwindow.c:962 +msgid "The GtkApplication for the window" +msgstr "The GtkApplication for the window" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" + +#~ msgid "Tab pack type" +#~ msgstr "Tab pack type" + +#~ msgid "Update policy" +#~ msgstr "Update policy" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "How the range should be updated on the screen" + +#~ msgid "Lower" +#~ msgstr "Lower" + +#~ msgid "Lower limit of ruler" +#~ msgstr "Lower limit of ruler" + +#~ msgid "Upper" +#~ msgstr "Upper" + +#~ msgid "Upper limit of ruler" +#~ msgstr "Upper limit of ruler" + +#~ msgid "Position of mark on the ruler" +#~ msgstr "Position of mark on the ruler" + +#~ msgid "Max Size" +#~ msgstr "Max Size" + +#~ msgid "Maximum size of the ruler" +#~ msgstr "Maximum size of the ruler" + +#~ msgid "Metric" +#~ msgstr "Metric" + +#~ msgid "The metric used for the ruler" +#~ msgstr "The metric used for the ruler" + +#~ msgid "Number of steps" +#~ msgstr "Number of steps" + +#~ msgid "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." +#~ msgstr "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." + +#~ msgid "Animation duration" +#~ msgstr "Animation duration" + +#~ msgid "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" +#~ msgstr "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" + +#~ msgid "Whether the statusbar has a grip for resizing the toplevel" +#~ msgstr "Whether the statusbar has a grip for resizing the toplevel" + +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "Horizontal Adjustment for the widget" + +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "Vertical Adjustment for the widget" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" + +#~ msgid "Extension events" +#~ msgstr "Extension events" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "The mask that decides what kind of extension events this widget gets" #~ msgid "Has separator" #~ msgstr "Has separator" diff --git a/po-properties/es.po b/po-properties/es.po index be287b4698..88723a63aa 100644 --- a/po-properties/es.po +++ b/po-properties/es.po @@ -11,15 +11,16 @@ # Juan Manuel García Molina , 2003. # Francisco Javier F. Serrador , 2003 - 2006. # Jorge González , 2007, 2008, 2009, 2010. +# Daniel Mustieles , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gtk+-properties.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk" "%2b&component=general\n" -"POT-Creation-Date: 2010-11-30 05:33+0000\n" -"PO-Revision-Date: 2010-12-02 19:09+0100\n" -"Last-Translator: Jorge González \n" +"POT-Creation-Date: 2011-01-10 22:03+0000\n" +"PO-Revision-Date: 2011-01-16 21:25+0100\n" +"Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,125 +29,154 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.4\n" -#: ../gdk/gdkdevice.c:113 +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 +msgid "Display" +msgstr "Pantalla" + +#: ../gdk/gdkcursor.c:128 +#| msgid "Cursor" +msgid "Cursor type" +msgstr "Tipo de cursor" + +#: ../gdk/gdkcursor.c:129 +#| msgid "Secondary storage type" +msgid "Standard cursor type" +msgstr "Tipo de cursos estándar" + +#: ../gdk/gdkcursor.c:137 +#, fuzzy +#| msgid "Display the cell" +msgid "Display of this cursor" +msgstr "Mostrar la celda" + +#: ../gdk/gdkdevice.c:111 msgid "Device Display" msgstr "Pantalla del dispositivo" -#: ../gdk/gdkdevice.c:114 +#: ../gdk/gdkdevice.c:112 msgid "Display which the device belongs to" msgstr "Pantalla a la que pertenece el dispositivo" -#: ../gdk/gdkdevice.c:128 +#: ../gdk/gdkdevice.c:126 msgid "Device manager" msgstr "Gestor de dispositivos" -#: ../gdk/gdkdevice.c:129 +#: ../gdk/gdkdevice.c:127 msgid "Device manager which the device belongs to" msgstr "Gestor de dispositivos al que pertenece el dispositivo" -#: ../gdk/gdkdevice.c:143 ../gdk/gdkdevice.c:144 +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 msgid "Device name" msgstr "Nombre del dispositivo" -#: ../gdk/gdkdevice.c:158 +#: ../gdk/gdkdevice.c:156 msgid "Device type" msgstr "Tipo de dispositivo" -#: ../gdk/gdkdevice.c:159 +#: ../gdk/gdkdevice.c:157 msgid "Device role in the device manager" msgstr "Rol del dispositivo en el gestor de dispositivos" -#: ../gdk/gdkdevice.c:175 +#: ../gdk/gdkdevice.c:173 msgid "Associated device" msgstr "Dispositivo asociado" -#: ../gdk/gdkdevice.c:176 +#: ../gdk/gdkdevice.c:174 msgid "Associated pointer or keyboard with this device" msgstr "Dispositivo apuntador o teclado asociado con este dispositivo" -#: ../gdk/gdkdevice.c:189 +#: ../gdk/gdkdevice.c:187 msgid "Input source" msgstr "Fuente de entrada" -#: ../gdk/gdkdevice.c:190 +#: ../gdk/gdkdevice.c:188 msgid "Source type for the device" msgstr "Tipo de la fuente de entrada para el dispositivo" -#: ../gdk/gdkdevice.c:205 ../gdk/gdkdevice.c:206 +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 msgid "Input mode for the device" msgstr "Modo de entrada para el dispositivo" -#: ../gdk/gdkdevice.c:221 +#: ../gdk/gdkdevice.c:219 msgid "Whether the device has a cursor" msgstr "Indica si el dispositivo tiene un cursor" -#: ../gdk/gdkdevice.c:222 +#: ../gdk/gdkdevice.c:220 msgid "Whether there is a visible cursor following device motion" msgstr "" "Indica si existe un cursor disponible siguiendo el movimiento del dispositivo" -#: ../gdk/gdkdevice.c:236 ../gdk/gdkdevice.c:237 +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 msgid "Number of axes in the device" msgstr "Número de ejes en el dispositivo" -#: ../gdk/gdkdevicemanager.c:136 -msgid "Display" -msgstr "Pantalla" - -#: ../gdk/gdkdevicemanager.c:137 +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" msgstr "Pantalla para el gestor de dispositivos" -#: ../gdk/gdkdisplaymanager.c:106 +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "Visor predeterminado" -#: ../gdk/gdkdisplaymanager.c:107 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "El visor predeterminado para GDK" -#: ../gdk/gdkscreen.c:90 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Opciones de la tipografía" -#: ../gdk/gdkscreen.c:91 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "Las opciones predeterminadas de la tipografía para la pantalla" -#: ../gdk/gdkscreen.c:98 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Resolución de la tipografía" -#: ../gdk/gdkscreen.c:99 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "La resolución para las tipografías en la pantalla" -#: ../gdk/gdkwindow.c:410 ../gdk/gdkwindow.c:411 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Cursor" #: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 -#: ../gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "ID del dispositivo" -#: ../gdk/x11/gdkdevice-xi2.c:113 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "Identificador del dispositivo" -#: ../gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +#, fuzzy +#| msgid "mode" +msgid "Opcode" +msgstr "modo" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +#, fuzzy +#| msgid "Event base for XInput events" +msgid "Opcode for XInput2 requests" +msgstr "Base de eventos para los eventos XInput" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" msgstr "Base del dispositivo" -#: ../gdk/x11/gdkdevicemanager-xi.c:86 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "Base de eventos para los eventos XInput" -#: ../gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "Nombre del programa" -#: ../gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -154,97 +184,93 @@ msgstr "" "El nombre del programa. Si no estuviese establecido, se usará por omisión " "g_get_application_name()" -#: ../gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "Versión del programa" -#: ../gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "La versión del programa" -#: ../gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "Cadena del copyright" -#: ../gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "Información de copyright del programa" -#: ../gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "Cadena de comentarios" -#: ../gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "Comentarios acerca del programa" -#: ../gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" msgstr "Tipo de licencia" -#: ../gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" msgstr "El tipo de licencia del programa" -#: ../gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "URL del sitio web" -#: ../gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "La URL para el enlace al sitio web del programa" -#: ../gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "Etiqueta del sitio web" -#: ../gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"La etiqueta para el enlace al sitio web del programa. Si no está " -"establecida, se usará la URL de forma predeterminada" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "La etiqueta para el enlace al sitio web del programa" -#: ../gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "Autores" -#: ../gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "Lista de autores del programa" -#: ../gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "Documentadores" -#: ../gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "Lista de gente documentando el programa" -#: ../gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "Artistas" -#: ../gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "Lista de gente que ha contribuido con trabajo artístico al programa" -#: ../gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "Créditos de traducción" -#: ../gtk/gtkaboutdialog.c:471 +#: ../gtk/gtkaboutdialog.c:477 msgid "" "Credits to the translators. This string should be marked as translatable" msgstr "" "Créditos a los traductores. Esta cadena debe etiquetarse como traducible" -#: ../gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "Logotipo" -#: ../gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -252,41 +278,41 @@ msgstr "" "Un logotipo para la caja «acerca de». Si no se establece, lo predeterminado " "es gtk_window_get_default_icon_list()" -#: ../gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "Nombre del icono del logotipo" -#: ../gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "" "Un icono con nombre para usar como el logotipo para la caja «Acerca de»." -#: ../gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "Ajustar licencia" -#: ../gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "Indica si se debe ajustar el texto de la licencia." -#: ../gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "Cierre del acelerador" -#: ../gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "El cierre que monitorizar para cambios en el acelerador" -#: ../gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "Widget acelerador" -#: ../gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "El widget que monitorizar para cambios en el acelerador" #: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 -#: ../gtk/gtktextmark.c:89 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "Nombre" @@ -294,9 +320,9 @@ msgstr "Nombre" msgid "A unique name for the action." msgstr "Un nombre único para la acción." -#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:226 ../gtk/gtkexpander.c:209 -#: ../gtk/gtkframe.c:130 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:331 -#: ../gtk/gtktoolbutton.c:202 ../gtk/gtktoolitemgroup.c:1588 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:131 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1588 msgid "Label" msgstr "Etiqueta" @@ -333,23 +359,23 @@ msgid "The stock icon displayed in widgets representing this action." msgstr "" "El icono de inventario mostrado en los widgets representando esta acción." -#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "GIcon" #: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 -#: ../gtk/gtkimage.c:326 ../gtk/gtkstatusicon.c:253 +#: ../gtk/gtkimage.c:327 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "El icono mostrado" #: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 -#: ../gtk/gtkimage.c:308 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:236 -#: ../gtk/gtkwindow.c:733 +#: ../gtk/gtkimage.c:309 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "Nombre del icono" #: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 -#: ../gtk/gtkimage.c:309 ../gtk/gtkstatusicon.c:237 +#: ../gtk/gtkimage.c:310 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "El nombre del icono del tema de iconos" @@ -413,7 +439,7 @@ msgstr "" "acción se ocultan." #: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 -#: ../gtk/gtkcellrenderer.c:282 ../gtk/gtkwidget.c:916 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:941 msgid "Sensitive" msgstr "Sensible" @@ -422,8 +448,8 @@ msgid "Whether the action is enabled." msgstr "Indica si la acción está activada." #: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 -#: ../gtk/gtkstatusicon.c:287 ../gtk/gtktreeviewcolumn.c:213 -#: ../gtk/gtkwidget.c:909 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:934 msgid "Visible" msgstr "Visible" @@ -443,11 +469,11 @@ msgstr "" "El GtkActionGroup con el que esta GtkAction está asociada, o NULL (para uso " "interno)." -#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:182 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Siempre mostrar la imagen" -#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:183 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Indica si la imagen se mostrará siempre" @@ -463,79 +489,79 @@ msgstr "Indica si el grupo de acción está activado." msgid "Whether the action group is visible." msgstr "Indica si el grupo de acción es visible." -#: ../gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "Acción relacionada" -#: ../gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "" "La acción que este activable activará y del que recibirá actualizaciones" -#: ../gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "Usar apariencia de activación" -#: ../gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "" "Indica si se deben usar las propiedades de apariencia de acciones " "relacionadas" -#: ../gtk/gtkadjustment.c:114 ../gtk/gtkcellrendererprogress.c:126 -#: ../gtk/gtkscalebutton.c:220 ../gtk/gtkspinbutton.c:291 +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "Valor" -#: ../gtk/gtkadjustment.c:115 +#: ../gtk/gtkadjustment.c:124 msgid "The value of the adjustment" msgstr "El valor del ajuste" -#: ../gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:140 msgid "Minimum Value" msgstr "Valor mínimo" -#: ../gtk/gtkadjustment.c:132 +#: ../gtk/gtkadjustment.c:141 msgid "The minimum value of the adjustment" msgstr "El valor mínimo del ajuste" -#: ../gtk/gtkadjustment.c:151 +#: ../gtk/gtkadjustment.c:160 msgid "Maximum Value" msgstr "Valor máximo" -#: ../gtk/gtkadjustment.c:152 +#: ../gtk/gtkadjustment.c:161 msgid "The maximum value of the adjustment" msgstr "El valor máximo del ajuste" -#: ../gtk/gtkadjustment.c:168 +#: ../gtk/gtkadjustment.c:177 msgid "Step Increment" msgstr "Incremento del paso" -#: ../gtk/gtkadjustment.c:169 +#: ../gtk/gtkadjustment.c:178 msgid "The step increment of the adjustment" msgstr "El incremente del paso del ajuste" -#: ../gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:194 msgid "Page Increment" msgstr "Incremento de página" -#: ../gtk/gtkadjustment.c:186 +#: ../gtk/gtkadjustment.c:195 msgid "The page increment of the adjustment" msgstr "El incremento de página del ajuste" -#: ../gtk/gtkadjustment.c:205 +#: ../gtk/gtkadjustment.c:214 msgid "Page Size" msgstr "Tamaño de página" -#: ../gtk/gtkadjustment.c:206 +#: ../gtk/gtkadjustment.c:215 msgid "The page size of the adjustment" msgstr "El tamaño de página del ajuste" -#: ../gtk/gtkalignment.c:127 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Alineación horizontal" -#: ../gtk/gtkalignment.c:128 ../gtk/gtkbutton.c:277 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -543,11 +569,11 @@ msgstr "" "Posición horizontal del hijo en el espacio disponible. 0.0 es alineado a la " "izquierda, 1.0 es alineado a la derecha" -#: ../gtk/gtkalignment.c:137 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Alineación vertical" -#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:296 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -555,11 +581,11 @@ msgstr "" "Posición vertical del hijo en el espacio disponible. 0.0 es alineado arriba, " "1.0 es alineado abajo" -#: ../gtk/gtkalignment.c:146 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Escala horizontal" -#: ../gtk/gtkalignment.c:147 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -567,11 +593,11 @@ msgstr "" "Si el espacio horizontal disponible es mayor que el necesario para el hijo, " "cuánto se debe utilizar para el hijo. 0.0 significa nada, 1.0 significa todo" -#: ../gtk/gtkalignment.c:155 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Escala vertical" -#: ../gtk/gtkalignment.c:156 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -579,38 +605,133 @@ msgstr "" "Si el espacio vertical disponible es mayor que el necesario para el hijo, " "cuánto se debe utilizar para el hijo. 0.0 significa nada, 1.0 significa todo" -#: ../gtk/gtkalignment.c:173 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Separación superior" -#: ../gtk/gtkalignment.c:174 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "La separación que introducir por encima del widget." -#: ../gtk/gtkalignment.c:190 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Separación inferior" -#: ../gtk/gtkalignment.c:191 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "La separación que introducir por debajo del widget." -#: ../gtk/gtkalignment.c:207 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Separación por la izquierda" -#: ../gtk/gtkalignment.c:208 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "La separación que introducir por el lado izquierdo del widget." -#: ../gtk/gtkalignment.c:224 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Separación por la derecha" -#: ../gtk/gtkalignment.c:225 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "La separación que introducir por el lado derecho del widget." +#: ../gtk/gtkappchooserbutton.c:536 +msgid "Include an 'Other...' item" +msgstr "" + +#: ../gtk/gtkappchooserbutton.c:537 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" + +#: ../gtk/gtkappchooser.c:58 +#| msgid "Font style" +msgid "Content type" +msgstr "Tipo de contenido" + +#: ../gtk/gtkappchooser.c:59 +#, fuzzy +#| msgid "The contents of the entry" +msgid "The content type used by the open with object" +msgstr "El contenido de la entrada" + +#: ../gtk/gtkappchooserdialog.c:683 +#| msgid "Filter" +msgid "GFile" +msgstr "GFile" + +#: ../gtk/gtkappchooserdialog.c:684 +#, fuzzy +#| msgid "The title of the file chooser dialog." +msgid "The GFile used by the app chooser dialog" +msgstr "El título del diálogo de selección de archivos." + +#: ../gtk/gtkappchooserwidget.c:1015 +msgid "Show default app" +msgstr "" + +#: ../gtk/gtkappchooserwidget.c:1016 +#| msgid "Whether the widget is the default widget" +msgid "Whether the widget should show the default application" +msgstr "Indica si el widget debería mostrar la aplicación predeterminada" + +#: ../gtk/gtkappchooserwidget.c:1029 +msgid "Show recommended apps" +msgstr "" + +#: ../gtk/gtkappchooserwidget.c:1030 +#, fuzzy +#| msgid "Whether images should be shown on buttons" +msgid "Whether the widget should show recommended applications" +msgstr "Indica si se deben mostrar las imágenes en los botones" + +#: ../gtk/gtkappchooserwidget.c:1043 +msgid "Show fallback apps" +msgstr "" + +#: ../gtk/gtkappchooserwidget.c:1044 +#, fuzzy +#| msgid "Whether the label widget should fill all available horizontal space" +msgid "Whether the widget should show fallback applications" +msgstr "" +"Indica si el widget de etiqueta debería llenar todo el espacio horizontal " +"disponible" + +#: ../gtk/gtkappchooserwidget.c:1056 +#| msgid "Show Tooltips" +msgid "Show other apps" +msgstr "Mostrar otras aplicaciones" + +#: ../gtk/gtkappchooserwidget.c:1057 +#, fuzzy +#| msgid "Whether the widget has the input focus" +msgid "Whether the widget should show other applications" +msgstr "Indica si el widget tiene el foco de entrada" + +#: ../gtk/gtkappchooserwidget.c:1070 +#| msgid "Show Day Names" +msgid "Show all apps" +msgstr "Mostrar todas las aplicaciones" + +#: ../gtk/gtkappchooserwidget.c:1071 +#, fuzzy +#| msgid "Whether the label widget should fill all available horizontal space" +msgid "Whether the widget should show all applications" +msgstr "" +"Indica si el widget de etiqueta debería llenar todo el espacio horizontal " +"disponible" + +#: ../gtk/gtkappchooserwidget.c:1084 +msgid "Widget's default text" +msgstr "" + +#: ../gtk/gtkappchooserwidget.c:1085 +msgid "The default text appearing when there are no applications" +msgstr "" + #: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Dirección de la flecha" @@ -627,7 +748,7 @@ msgstr "Sombra de la flecha" msgid "Appearance of the shadow surrounding the arrow" msgstr "Apariencia de la sombra que rodea la flecha" -#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:731 ../gtk/gtkmenuitem.c:394 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:726 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Escalado de flechas" @@ -635,7 +756,7 @@ msgstr "Escalado de flechas" msgid "Amount of space used up by arrow" msgstr "Cantidad de espacio ocupado por flecha" -#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1112 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1129 msgid "Horizontal Alignment" msgstr "Alineación horizontal" @@ -643,7 +764,7 @@ msgstr "Alineación horizontal" msgid "X alignment of the child" msgstr "Alineación X del hijo" -#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1128 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1145 msgid "Vertical Alignment" msgstr "Alineación vertical" @@ -667,59 +788,59 @@ msgstr "Obedecer al hijo" msgid "Force aspect ratio to match that of the frame's child" msgstr "Forzar la proporción para que coincida con el hijo del marco" -#: ../gtk/gtkassistant.c:327 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "Separación de la cabecera" -#: ../gtk/gtkassistant.c:328 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "Número de píxeles alrededor de la cabecera." -#: ../gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "Separación del contenido" -#: ../gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "Número de píxeles alrededor de las páginas de contenidos." -#: ../gtk/gtkassistant.c:352 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "Tipo de página" -#: ../gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "El tipo de página del asistente" -#: ../gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "Título de página" -#: ../gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "El título de la página del asistente" -#: ../gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "Imagen de la cabecera" -#: ../gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "Imagen de la cabecera para la página del asistente" -#: ../gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "Imagen de barra lateral" -#: ../gtk/gtkassistant.c:405 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "Imagen de barra lateral para la página del asistente" -#: ../gtk/gtkassistant.c:420 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "Página completa" -#: ../gtk/gtkassistant.c:421 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "Indica si todos los campos requeridos en la página se han rellenado" @@ -780,8 +901,8 @@ msgstr "" "Si es TRUE, el hijo aparece en un grupo secundario de hijos, apropiado para, " "por ejemplo, botones de ayuda" -#: ../gtk/gtkbox.c:241 ../gtk/gtkexpander.c:233 ../gtk/gtkiconview.c:696 -#: ../gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "Espaciado" @@ -789,7 +910,7 @@ msgstr "Espaciado" msgid "The amount of space between children" msgstr "La cantidad de espacio entre hijos" -#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:553 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 #: ../gtk/gtktoolitemgroup.c:1641 msgid "Homogeneous" msgstr "Homogéneo" @@ -798,8 +919,9 @@ msgstr "Homogéneo" msgid "Whether the children should all be the same size" msgstr "Indica si todos los hijos deben ser del mismo tamaño" -#: ../gtk/gtkbox.c:268 ../gtk/gtktoolbar.c:545 ../gtk/gtktoolitemgroup.c:1648 -#: ../gtk/gtktoolpalette.c:1092 ../gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1648 ../gtk/gtktoolpalette.c:1093 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "Expandir" @@ -819,7 +941,7 @@ msgstr "" "Indica si el espacio extra dado al hijo debe ser reservado para el en el " "hijo o usado como separación" -#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "Separación" @@ -831,7 +953,7 @@ msgstr "Espacio extra para colocar entre el hijo y sus vecinos, en píxeles" msgid "Pack type" msgstr "Tipo de empaquetado" -#: ../gtk/gtkbox.c:297 ../gtk/gtknotebook.c:793 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -839,12 +961,12 @@ msgstr "" "Un GtkPackType que indica si el hijo está empaquetado con referencia al " "inicio o el final del padre" -#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:764 ../gtk/gtkpaned.c:327 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 #: ../gtk/gtktoolitemgroup.c:1669 msgid "Position" msgstr "Posición" -#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:765 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "El índice del hijo en el padre" @@ -856,7 +978,7 @@ msgstr "Dominio de traducción" msgid "The translation domain used by gettext" msgstr "El dominio de traducción que usa gettext" -#: ../gtk/gtkbutton.c:227 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" @@ -864,13 +986,13 @@ msgstr "" "Texto del etiqueta del widget dentro del botón, si el botón contiene una " "etiqueta del widget" -#: ../gtk/gtkbutton.c:234 ../gtk/gtkexpander.c:217 ../gtk/gtklabel.c:588 -#: ../gtk/gtkmenuitem.c:346 ../gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "Utilizar subrayado" -#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:218 ../gtk/gtklabel.c:589 -#: ../gtk/gtkmenuitem.c:347 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -878,71 +1000,71 @@ msgstr "" "Si se establece, un subrayado en el texto indica que el siguiente carácter " "se utiliza como el nemotécnico de la teclas aceleradora" -#: ../gtk/gtkbutton.c:242 ../gtk/gtkimagemenuitem.c:163 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Usar inventario" -#: ../gtk/gtkbutton.c:243 +#: ../gtk/gtkbutton.c:244 msgid "" "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "Si se selecciona, la etiqueta se utiliza para tomar un elemento del " "inventario en vez de para mostrarse" -#: ../gtk/gtkbutton.c:250 ../gtk/gtkcombobox.c:865 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 #: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Enfocar al pulsar" -#: ../gtk/gtkbutton.c:251 ../gtk/gtkfilechooserbutton.c:384 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Indica si el botón obtiene el foco al ser pulsado con el ratón" -#: ../gtk/gtkbutton.c:258 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "Relieve del borde" -#: ../gtk/gtkbutton.c:259 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "Estilo del relieve del borde" -#: ../gtk/gtkbutton.c:276 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "Alineación horizontal para el hijo" -#: ../gtk/gtkbutton.c:295 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "Alineación vertical para el hijo" -#: ../gtk/gtkbutton.c:312 ../gtk/gtkimagemenuitem.c:148 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Widget de imagen" -#: ../gtk/gtkbutton.c:313 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "Widget hijo que aparece al lado del texto del botón" -#: ../gtk/gtkbutton.c:327 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "Posición de la imagen" -#: ../gtk/gtkbutton.c:328 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "Posición de la imagen relativa al texto" -#: ../gtk/gtkbutton.c:448 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "Espaciado predeterminado" -#: ../gtk/gtkbutton.c:449 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Espacio adicional que añadir para los botones CAN_DEFAULT" -#: ../gtk/gtkbutton.c:463 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "Espaciado exterior predeterminado" -#: ../gtk/gtkbutton.c:464 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -950,31 +1072,31 @@ msgstr "" "Espacio adicional que añadir para los botones CAN_DEFAULT que se dibuja " "siempre fuera del borde" -#: ../gtk/gtkbutton.c:469 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "Desplazamiento X del hijo" -#: ../gtk/gtkbutton.c:470 +#: ../gtk/gtkbutton.c:471 msgid "" "How far in the x direction to move the child when the button is depressed" msgstr "" "Cuánta distancia en la dirección x se mueve el hijo cuando se suelta el botón" -#: ../gtk/gtkbutton.c:477 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "Desplazamiento Y del hijo" -#: ../gtk/gtkbutton.c:478 +#: ../gtk/gtkbutton.c:479 msgid "" "How far in the y direction to move the child when the button is depressed" msgstr "" "Cuánta distancia en la dirección y se mueve el hijo cuando se suelta el botón" -#: ../gtk/gtkbutton.c:494 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "Desplazar el foco" -#: ../gtk/gtkbutton.c:495 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" @@ -982,43 +1104,43 @@ msgstr "" "Indica si las propiedades child_displacement_x/_y deben afectar también al " "rectángulo del foco" -#: ../gtk/gtkbutton.c:508 ../gtk/gtkentry.c:786 ../gtk/gtkentry.c:1831 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Borde interior" -#: ../gtk/gtkbutton.c:509 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "Borde entre los bordes del botón y el hijo." -#: ../gtk/gtkbutton.c:522 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "Espaciado de imagen" -#: ../gtk/gtkbutton.c:523 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "Espaciado en píxeles entre la imagen y la etiqueta" -#: ../gtk/gtkcalendar.c:475 +#: ../gtk/gtkcalendar.c:468 msgid "Year" msgstr "Año" -#: ../gtk/gtkcalendar.c:476 +#: ../gtk/gtkcalendar.c:469 msgid "The selected year" msgstr "El año seleccionado" -#: ../gtk/gtkcalendar.c:489 +#: ../gtk/gtkcalendar.c:482 msgid "Month" msgstr "Mes" -#: ../gtk/gtkcalendar.c:490 +#: ../gtk/gtkcalendar.c:483 msgid "The selected month (as a number between 0 and 11)" msgstr "El mes seleccionado (como un número entre 0 y 11)" -#: ../gtk/gtkcalendar.c:504 +#: ../gtk/gtkcalendar.c:497 msgid "Day" msgstr "Día" -#: ../gtk/gtkcalendar.c:505 +#: ../gtk/gtkcalendar.c:498 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" @@ -1026,86 +1148,195 @@ msgstr "" "El día seleccionado (como un número entre 1 y 31, o 0 para deseleccionar el " "día actualmente seleccionado)" -#: ../gtk/gtkcalendar.c:519 +#: ../gtk/gtkcalendar.c:512 msgid "Show Heading" msgstr "Mostrar cabecera" -#: ../gtk/gtkcalendar.c:520 +#: ../gtk/gtkcalendar.c:513 msgid "If TRUE, a heading is displayed" msgstr "Si es TRUE, se muestra una cabecera" -#: ../gtk/gtkcalendar.c:534 +#: ../gtk/gtkcalendar.c:527 msgid "Show Day Names" msgstr "Mostrar nombres de los días" -#: ../gtk/gtkcalendar.c:535 +#: ../gtk/gtkcalendar.c:528 msgid "If TRUE, day names are displayed" msgstr "Si es TRUE, se muestran los nombres de los días" -#: ../gtk/gtkcalendar.c:548 +#: ../gtk/gtkcalendar.c:541 msgid "No Month Change" msgstr "Sin cambio de mes" -#: ../gtk/gtkcalendar.c:549 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, the selected month cannot be changed" msgstr "Si es TRUE, el mes seleccionado no puede cambiarse" -#: ../gtk/gtkcalendar.c:563 +#: ../gtk/gtkcalendar.c:556 msgid "Show Week Numbers" msgstr "Mostrar números de las semanas" -#: ../gtk/gtkcalendar.c:564 +#: ../gtk/gtkcalendar.c:557 msgid "If TRUE, week numbers are displayed" msgstr "Si es TRUE, se muestran los números de las semanas" -#: ../gtk/gtkcalendar.c:579 +#: ../gtk/gtkcalendar.c:572 msgid "Details Width" msgstr "Detalles de la anchura" -#: ../gtk/gtkcalendar.c:580 +#: ../gtk/gtkcalendar.c:573 msgid "Details width in characters" msgstr "Detalla la anchura en los caracteres" -#: ../gtk/gtkcalendar.c:595 +#: ../gtk/gtkcalendar.c:588 msgid "Details Height" msgstr "Detalles de la altura" -#: ../gtk/gtkcalendar.c:596 +#: ../gtk/gtkcalendar.c:589 msgid "Details height in rows" msgstr "Detalla la altura en las filas" -#: ../gtk/gtkcalendar.c:612 +#: ../gtk/gtkcalendar.c:605 msgid "Show Details" msgstr "Mostrar detalles" -#: ../gtk/gtkcalendar.c:613 +#: ../gtk/gtkcalendar.c:606 msgid "If TRUE, details are shown" msgstr "Si es TRUE, se muestran los detalles" -#: ../gtk/gtkcalendar.c:625 +#: ../gtk/gtkcalendar.c:618 msgid "Inner border" msgstr "Borde interior" -#: ../gtk/gtkcalendar.c:626 +#: ../gtk/gtkcalendar.c:619 msgid "Inner border space" msgstr "Espacio del borde interior" -#: ../gtk/gtkcalendar.c:637 +#: ../gtk/gtkcalendar.c:630 msgid "Vertical separation" msgstr "Separación vertical" -#: ../gtk/gtkcalendar.c:638 +#: ../gtk/gtkcalendar.c:631 msgid "Space between day headers and main area" msgstr "Espacio entre las cabeceras del día y el área principal" -#: ../gtk/gtkcalendar.c:649 +#: ../gtk/gtkcalendar.c:642 msgid "Horizontal separation" msgstr "Separación horizontal" -#: ../gtk/gtkcalendar.c:650 +#: ../gtk/gtkcalendar.c:643 msgid "Space between week headers and main area" msgstr "Espacio entre las cabeceras de la semana y el área principal" +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "Espacio que se introduce entre las celdas" + +#: ../gtk/gtkcellareabox.c:339 +#, fuzzy +#| msgid "Whether to use the hexpand property" +msgid "Whether the cell expands" +msgstr "Indica si se debe usar la propiedad hexpand" + +#: ../gtk/gtkcellareabox.c:354 +#| msgid "xalign" +msgid "Align" +msgstr "Alineación" + +#: ../gtk/gtkcellareabox.c:355 +#, fuzzy +#| msgid "Whether the item should start a new row" +msgid "Whether cell should align with adjacent rows" +msgstr "Indica si el elemento debería iniciar una fila nueva" + +#: ../gtk/gtkcellareabox.c:371 +#| msgid "Pixel size" +msgid "Fixed Size" +msgstr "Tamaño fijo" + +#: ../gtk/gtkcellareabox.c:372 +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether cells should be the same size in all rows" +msgstr "Indica si todos los hijos deben ser del mismo tamaño" + +#: ../gtk/gtkcellareabox.c:388 +#| msgid "Pack type" +msgid "Pack Type" +msgstr "Tipo de empaquetado" + +#: ../gtk/gtkcellareabox.c:389 +#, fuzzy +#| msgid "" +#| "A GtkPackType indicating whether the child is packed with reference to " +#| "the start or end of the parent" +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"Un GtkPackType que indica si el hijo está empaquetado con referencia al " +"inicio o el final del padre" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "" + +#: ../gtk/gtkcellarea.c:774 +#, fuzzy +#| msgid "The item which is currently active" +msgid "The cell which currently has focus" +msgstr "El elemento que está activo actualmente" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "" + +#: ../gtk/gtkcellarea.c:793 +#, fuzzy +#| msgid "The item which is currently active" +msgid "The cell which is currently being edited" +msgstr "El elemento que está activo actualmente" + +#: ../gtk/gtkcellarea.c:811 +#| msgid "Widget" +msgid "Edit Widget" +msgstr "Editar widget" + +#: ../gtk/gtkcellarea.c:812 +#, fuzzy +#| msgid "The current page in the document" +msgid "The widget currently editing the edited cell" +msgstr "La página actual en el documento" + +#: ../gtk/gtkcellareacontext.c:127 +#| msgid "Cell Area" +msgid "Area" +msgstr "Área" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "Anchura mínimo" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +#| msgid "Minimum child width" +msgid "Minimum cached width" +msgstr "Anchura mínima cacheada" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +#| msgid "Minimum Content Height" +msgid "Minimum Height" +msgstr "Altura mínima" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +#| msgid "Minimum child height" +msgid "Minimum cached height" +msgstr "Altura mínima cacheada" + #: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Edición cancelada" @@ -1114,159 +1345,159 @@ msgstr "Edición cancelada" msgid "Indicates that editing has been canceled" msgstr "Indica que la edición se ha cancelado" -#: ../gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "Tecla aceleradora" -#: ../gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "El valor de la tecla del acelerador" -#: ../gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "Modificadores del acelerador" -#: ../gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "La máscara del modificador del acelerador" -#: ../gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "Código de tecla del acelerador" -#: ../gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "El código de tecla hardware del acelerador" -#: ../gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "Modo del acelerador" -#: ../gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "El tipo de aceleradores" -#: ../gtk/gtkcellrenderer.c:266 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "modo" -#: ../gtk/gtkcellrenderer.c:267 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "Modo editable del CellRenderer" -#: ../gtk/gtkcellrenderer.c:275 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "visible" -#: ../gtk/gtkcellrenderer.c:276 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "Mostrar la celda" -#: ../gtk/gtkcellrenderer.c:283 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "Mostrar la celda sensible" -#: ../gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "xalign" -#: ../gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "La alineación x" -#: ../gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "yalign" -#: ../gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "La alineación y" -#: ../gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: ../gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "La separación x" -#: ../gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: ../gtk/gtkcellrenderer.c:321 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "La separación y" -#: ../gtk/gtkcellrenderer.c:330 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "anchura" -#: ../gtk/gtkcellrenderer.c:331 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "La anchura fija" -#: ../gtk/gtkcellrenderer.c:340 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "altura" -#: ../gtk/gtkcellrenderer.c:341 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "La altura fija" -#: ../gtk/gtkcellrenderer.c:350 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "Es expansor" -#: ../gtk/gtkcellrenderer.c:351 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "La fila tiene hijos" -#: ../gtk/gtkcellrenderer.c:359 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "Está expandido" -#: ../gtk/gtkcellrenderer.c:360 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "La fila es una fila de expansor, y está expandida" -#: ../gtk/gtkcellrenderer.c:367 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "Nombre del color de fondo de la celda" -#: ../gtk/gtkcellrenderer.c:368 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "Color de fondo de la celda como una cadena" -#: ../gtk/gtkcellrenderer.c:375 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "Color de fondo de la celda" -#: ../gtk/gtkcellrenderer.c:376 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "Color de fondo de la celda como GdkColor" -#: ../gtk/gtkcellrenderer.c:389 +#: ../gtk/gtkcellrenderer.c:395 msgid "Cell background RGBA color" msgstr "Color de fondo RGBA de la celda" -#: ../gtk/gtkcellrenderer.c:390 +#: ../gtk/gtkcellrenderer.c:396 msgid "Cell background color as a GdkRGBA" msgstr "Color de fondo de la celda como GdkRGBA" -#: ../gtk/gtkcellrenderer.c:397 +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "Editando" -#: ../gtk/gtkcellrenderer.c:398 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "Indica si la renderización de la celda está en modo de edición" -#: ../gtk/gtkcellrenderer.c:406 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "Establece el fondo de la celda" -#: ../gtk/gtkcellrenderer.c:407 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "Indica si esta etiqueta afecta el color de fondo de la celda" @@ -1287,7 +1518,7 @@ msgid "A column in the data source model to get the strings from" msgstr "" "Una columna en el modelo de origen de datos del que se obtienen las cadenas" -#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:932 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "Tiene entrada" @@ -1320,8 +1551,8 @@ msgstr "Pixbuf del expansor cerrado" msgid "Pixbuf for closed expander" msgstr "El pixbuf para el expansor cerrado" -#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:250 -#: ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:251 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "ID del inventario" @@ -1329,8 +1560,8 @@ msgstr "ID del inventario" msgid "The stock ID of the stock icon to render" msgstr "El ID de inventario del icono de inventario a renderizar" -#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:153 -#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "Tamaño" @@ -1354,8 +1585,8 @@ msgstr "Seguir estado" msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Indica si el pixbuf renderizado debe colorearse de acuerdo al estado" -#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:325 -#: ../gtk/gtkwindow.c:710 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:326 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "Icono" @@ -1363,10 +1594,10 @@ msgstr "Icono" msgid "Value of the progress bar" msgstr "Valor de la barra de progreso" -#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:247 -#: ../gtk/gtkentry.c:829 ../gtk/gtkentrybuffer.c:352 -#: ../gtk/gtkmessagedialog.c:226 ../gtk/gtkprogressbar.c:177 -#: ../gtk/gtktextbuffer.c:209 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "Texto" @@ -1374,7 +1605,7 @@ msgstr "Texto" msgid "Text on the progress bar" msgstr "Texto en la barra de progreso" -#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 msgid "Pulse" msgstr "Pulso" @@ -1407,7 +1638,7 @@ msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "La alineación vertical del texto, desde 0 (superior) a 1 (inferior)." #: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 -#: ../gtk/gtkrange.c:440 +#: ../gtk/gtkrange.c:423 msgid "Inverted" msgstr "Invertido" @@ -1415,12 +1646,12 @@ msgstr "Invertido" msgid "Invert the direction in which the progress bar grows" msgstr "Invertir la dirección en la que aumentan las barras de progreso" -#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:432 -#: ../gtk/gtkscalebutton.c:239 ../gtk/gtkspinbutton.c:230 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:415 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "Ajuste" -#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:231 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "El ajuste que mantiene el valor del botón incrementable" @@ -1428,21 +1659,21 @@ msgstr "El ajuste que mantiene el valor del botón incrementable" msgid "Climb rate" msgstr "Tasa de subida" -#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:239 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "La tasa de aceleración cuando mantiene apretado un botón" -#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:249 -#: ../gtk/gtkspinbutton.c:248 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "Dígitos" -#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:249 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "El número de lugares decimales que mostrar" -#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:105 -#: ../gtk/gtkmenu.c:521 ../gtk/gtkspinner.c:131 ../gtk/gtkswitch.c:739 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:516 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:743 #: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 #: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" @@ -1453,203 +1684,203 @@ msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "" "Indica si el marcador incrementable está activo (ej. mostrado) en la celda" -#: ../gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:138 msgid "Pulse of the spinner" msgstr "Pulso del marcador incrementable" -#: ../gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:152 msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "" "El valor de GTKIconSize que especifica el tamaño del marcador incrementable " "renderizado" -#: ../gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Texto a renderizar" -#: ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Marcado" -#: ../gtk/gtkcellrenderertext.c:256 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Texto resaltado a renderizar" -#: ../gtk/gtkcellrenderertext.c:263 ../gtk/gtklabel.c:574 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Atributos" -#: ../gtk/gtkcellrenderertext.c:264 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "" "Un lista de atributos de estilos para aplicar al texto del renderizador" -#: ../gtk/gtkcellrenderertext.c:271 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Modo de parágrafo simple" -#: ../gtk/gtkcellrenderertext.c:272 +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "Indica si se debe mantener todo el texto en un sólo parágrafo" -#: ../gtk/gtkcellrenderertext.c:280 ../gtk/gtkcellview.c:192 -#: ../gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:180 msgid "Background color name" msgstr "Nombre del color de fondo" -#: ../gtk/gtkcellrenderertext.c:281 ../gtk/gtkcellview.c:193 -#: ../gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:181 msgid "Background color as a string" msgstr "Color de fondo como una cadena" -#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:199 -#: ../gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:188 msgid "Background color" msgstr "Color de fondo" -#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:200 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "Color de fondo como GdkColor" -#: ../gtk/gtkcellrenderertext.c:303 +#: ../gtk/gtkcellrenderertext.c:311 msgid "Background color as RGBA" msgstr "Nombre del color de fondo como RGBA" -#: ../gtk/gtkcellrenderertext.c:304 ../gtk/gtkcellview.c:214 +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 msgid "Background color as a GdkRGBA" msgstr "Color de fondo como GdkRGBA" -#: ../gtk/gtkcellrenderertext.c:310 ../gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:204 msgid "Foreground color name" msgstr "Nombre del color de primer plano" -#: ../gtk/gtkcellrenderertext.c:311 ../gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:205 msgid "Foreground color as a string" msgstr "Color de primer plano como una cadena" -#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:210 -#: ../gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:212 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "Color de primer plano" -#: ../gtk/gtkcellrenderertext.c:319 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Color de primer plano como GdkColor" -#: ../gtk/gtkcellrenderertext.c:333 +#: ../gtk/gtkcellrenderertext.c:341 msgid "Foreground color as RGBA" msgstr "Color de primer plano como RGBA" -#: ../gtk/gtkcellrenderertext.c:334 +#: ../gtk/gtkcellrenderertext.c:342 msgid "Foreground color as a GdkRGBA" msgstr "Color de primer plano como GdkRGBA" -#: ../gtk/gtkcellrenderertext.c:342 ../gtk/gtkentry.c:753 -#: ../gtk/gtktexttag.c:227 ../gtk/gtktextview.c:686 +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:229 ../gtk/gtktextview.c:685 msgid "Editable" msgstr "Editable" -#: ../gtk/gtkcellrenderertext.c:343 ../gtk/gtktexttag.c:228 -#: ../gtk/gtktextview.c:687 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:230 +#: ../gtk/gtktextview.c:686 msgid "Whether the text can be modified by the user" msgstr "Indica si el texto puede modificarse por el usuario" -#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkcellrenderertext.c:358 -#: ../gtk/gtktexttag.c:243 ../gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktexttag.c:253 msgid "Font" msgstr "Tipografía" -#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:246 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "" "Descripción de la tipografía como una cadena, ejemplo: «Sans Italic 12»" -#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:254 msgid "Font description as a PangoFontDescription struct" msgstr "Descripción de la tipografía como una estructura PangoFontDescription" -#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:261 msgid "Font family" msgstr "Familia tipográfica" -#: ../gtk/gtkcellrenderertext.c:368 ../gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:262 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "" "Nombre de la familia tipográfica, ej. Sans, Helvética, Times, Monospace" -#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtkcellrenderertext.c:376 -#: ../gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:269 msgid "Font style" msgstr "Estilo de la tipografía" -#: ../gtk/gtkcellrenderertext.c:384 ../gtk/gtkcellrenderertext.c:385 -#: ../gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:278 msgid "Font variant" msgstr "Variante de la tipografía" -#: ../gtk/gtkcellrenderertext.c:393 ../gtk/gtkcellrenderertext.c:394 -#: ../gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:287 msgid "Font weight" msgstr "Anchura de la tipografía" -#: ../gtk/gtkcellrenderertext.c:403 ../gtk/gtkcellrenderertext.c:404 -#: ../gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:298 msgid "Font stretch" msgstr "Estiramiento de la tipografía" -#: ../gtk/gtkcellrenderertext.c:412 ../gtk/gtkcellrenderertext.c:413 -#: ../gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:307 msgid "Font size" msgstr "Tamaño de la tipografía" -#: ../gtk/gtkcellrenderertext.c:422 ../gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:327 msgid "Font points" msgstr "Puntos de la tipografía" -#: ../gtk/gtkcellrenderertext.c:423 ../gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:328 msgid "Font size in points" msgstr "Tamaño de la tipografía en puntos" -#: ../gtk/gtkcellrenderertext.c:432 ../gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:317 msgid "Font scale" msgstr "Escala de la tipografía" -#: ../gtk/gtkcellrenderertext.c:433 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Factor de escalado de la tipografía" -#: ../gtk/gtkcellrenderertext.c:442 ../gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:396 msgid "Rise" msgstr "Elevar" -#: ../gtk/gtkcellrenderertext.c:443 +#: ../gtk/gtkcellrenderertext.c:451 msgid "" "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Desplazamiento del texto sobre la línea base (por debajo de la línea base la " "elevación es negativa)" -#: ../gtk/gtkcellrenderertext.c:454 ../gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:436 msgid "Strikethrough" msgstr "Tachar" -#: ../gtk/gtkcellrenderertext.c:455 ../gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:437 msgid "Whether to strike through the text" msgstr "Indica si se tacha el texto" -#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:444 msgid "Underline" msgstr "Subrayado" -#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:445 msgid "Style of underline for this text" msgstr "Estilo de subrayado de este texto" -#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:356 msgid "Language" msgstr "Idioma" -#: ../gtk/gtkcellrenderertext.c:472 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1659,12 +1890,12 @@ msgstr "" "como una ayuda cuando está renderizando el texto. Si no comprende este " "parámetro probablemente no lo necesite" -#: ../gtk/gtkcellrenderertext.c:492 ../gtk/gtklabel.c:699 -#: ../gtk/gtkprogressbar.c:207 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:217 msgid "Ellipsize" msgstr "Elipsis" -#: ../gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1672,28 +1903,28 @@ msgstr "" "El lugar preferido para la elipsis de la cadena, si el renderizador de la " "celda no tiene espacio suficiente para mostrar la cadena completa" -#: ../gtk/gtkcellrenderertext.c:512 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 #: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Anchura en caracteres" -#: ../gtk/gtkcellrenderertext.c:513 ../gtk/gtklabel.c:721 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "La anchura deseada de la etiqueta, en caracteres" -#: ../gtk/gtkcellrenderertext.c:537 ../gtk/gtklabel.c:781 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Anchura máxima en caracteres" -#: ../gtk/gtkcellrenderertext.c:538 +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" msgstr "La anchura máxima de la celda, en caracteres" -#: ../gtk/gtkcellrenderertext.c:556 ../gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:453 msgid "Wrap mode" msgstr "Modo de ajuste" -#: ../gtk/gtkcellrenderertext.c:557 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1701,150 +1932,150 @@ msgstr "" "Cómo romper la cadena en líneas múltiples, si el renderizador de la celda no " "tiene suficiente espacio para mostrar la cadena completa" -#: ../gtk/gtkcellrenderertext.c:576 ../gtk/gtkcombobox.c:754 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "Ajustar anchura" -#: ../gtk/gtkcellrenderertext.c:577 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "La anchura a la que el texto se ajusta" -#: ../gtk/gtkcellrenderertext.c:597 ../gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "Alineación" -#: ../gtk/gtkcellrenderertext.c:598 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "Cómo alinear las líneas" -#: ../gtk/gtkcellrenderertext.c:610 ../gtk/gtkcellview.c:236 -#: ../gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:542 msgid "Background set" msgstr "Establece el fondo" -#: ../gtk/gtkcellrenderertext.c:611 ../gtk/gtkcellview.c:237 -#: ../gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:543 msgid "Whether this tag affects the background color" msgstr "Indica si esta etiqueta afecta el color de fondo" -#: ../gtk/gtkcellrenderertext.c:614 ../gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:550 msgid "Foreground set" msgstr "Establece el primer plano" -#: ../gtk/gtkcellrenderertext.c:615 ../gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:551 msgid "Whether this tag affects the foreground color" msgstr "Indica si esta etiqueta afecta al color de frente" -#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:554 msgid "Editability set" msgstr "Establece la editabilidad" -#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:555 msgid "Whether this tag affects text editability" msgstr "Indica si esta etiqueta afecta la editabilidad del texto" -#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:558 msgid "Font family set" msgstr "Establece familia tipográfica" -#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the font family" msgstr "Indica si esta etiqueta afecta a la familia de la tipografía" -#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:562 msgid "Font style set" msgstr "Establece el estilo de la tipografía" -#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:563 msgid "Whether this tag affects the font style" msgstr "Indica si esta etiqueta afecta el estilo de la tipografía" -#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:566 msgid "Font variant set" msgstr "Establece la variante de la tipografía" -#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the font variant" msgstr "Indica si esta etiqueta afecta la variante de la tipografía" -#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:570 msgid "Font weight set" msgstr "Establece el peso de la tipografía" -#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects the font weight" msgstr "Indica si esta etiqueta afecta el peso de la tipografía" -#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:574 msgid "Font stretch set" msgstr "Establece el ancho de la tipografía" -#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font stretch" msgstr "Indica si esta etiqueta afecta el estiramiento de la tipografía" -#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:578 msgid "Font size set" msgstr "Establece el tamaño de tipografía" -#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font size" msgstr "Indica si esta etiqueta afecta el tamaño de la tipografía" -#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:582 msgid "Font scale set" msgstr "Establece la escala de la tipografía" -#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:583 msgid "Whether this tag scales the font size by a factor" msgstr "" "Indica si esta etiqueta escala el tamaño de la tipografía por un factor" -#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:602 msgid "Rise set" msgstr "Establece el elevamiento" -#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:603 msgid "Whether this tag affects the rise" msgstr "Indica si esta etiqueta afecta la elevación" -#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:618 msgid "Strikethrough set" msgstr "Establece el tachado" -#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects strikethrough" msgstr "Indica si esta etiqueta afecta el tachado" -#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:626 msgid "Underline set" msgstr "Establece el subrayado" -#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects underlining" msgstr "Indica si esta etiqueta afecta el subrayado" -#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:590 msgid "Language set" msgstr "Establece el idioma" -#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the language the text is rendered as" msgstr "Indica si esta etiqueta afecta al idioma en que se renderiza el texto" -#: ../gtk/gtkcellrenderertext.c:666 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Establece la elipsis" -#: ../gtk/gtkcellrenderertext.c:667 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Indica si esta etiqueta afecta el modo de elipsis" -#: ../gtk/gtkcellrenderertext.c:670 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Establece alineación" -#: ../gtk/gtkcellrenderertext.c:671 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Indica si esta etiqueta afecta el modo de alineamiento" @@ -1885,27 +2116,72 @@ msgid "Indicator size" msgstr "Tamaño del indicador" #: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 -#: ../gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Tamaño del indicador de radio o de la casilla" -#: ../gtk/gtkcellview.c:213 +#: ../gtk/gtkcellview.c:210 msgid "Background RGBA color" msgstr "Color de fondo RGBA" -#: ../gtk/gtkcellview.c:228 +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "Modelo CellView" -#: ../gtk/gtkcellview.c:229 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "El modelo para la vista de celda" -#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "Área de la celda" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "El GtkCellArea usado para la distribución de las celdas" + +#: ../gtk/gtkcellview.c:265 +#, fuzzy +#| msgid "Cell Area" +msgid "Cell Area Context" +msgstr "Área de la celda" + +#: ../gtk/gtkcellview.c:266 +#, fuzzy +#| msgid "The GtkCellArea used to layout cells" +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "El GtkCellArea usado para la distribución de las celdas" + +#: ../gtk/gtkcellview.c:283 +#, fuzzy +#| msgid "Sensitive" +msgid "Draw Sensitive" +msgstr "Sensible" + +#: ../gtk/gtkcellview.c:284 +#, fuzzy +#| msgid "Whether tree lines should be drawn in the tree view" +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Indica si deben dibujar las líneas en la vista del árbol" + +#: ../gtk/gtkcellview.c:302 +#| msgid "Model" +msgid "Fit Model" +msgstr "Ajustar al modelo" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Tamaño del indicador" -#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "Espacio del indicador" @@ -1913,104 +2189,104 @@ msgstr "Espacio del indicador" msgid "Spacing around check or radio indicator" msgstr "Espacio que rodea el indicador de radio o casilla" -#: ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Indica si el elemento de menú está marcado" -#: ../gtk/gtkcheckmenuitem.c:113 ../gtk/gtktogglebutton.c:133 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inconsistente" -#: ../gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "Indica si se debe mostrar un estado «inconsistente»" -#: ../gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Dibujar como un elemento de menú de radio" -#: ../gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "" "Indica si la apariencia del elemento de menú es como un elemento de menú de " "radio" -#: ../gtk/gtkcolorbutton.c:171 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "Usar alfa" -#: ../gtk/gtkcolorbutton.c:172 +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" msgstr "Indica si se debe dar un valor alfa al color" # components/music/nautilus-music-view.c:198 -#: ../gtk/gtkcolorbutton.c:186 ../gtk/gtkfilechooserbutton.c:397 -#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:115 -#: ../gtk/gtkstatusicon.c:415 ../gtk/gtktreeviewcolumn.c:286 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:126 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "Título" -#: ../gtk/gtkcolorbutton.c:187 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "El título del diálogo de selección del color" -#: ../gtk/gtkcolorbutton.c:201 ../gtk/gtkcolorsel.c:339 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Color actual" -#: ../gtk/gtkcolorbutton.c:202 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "El color seleccionado" -#: ../gtk/gtkcolorbutton.c:216 ../gtk/gtkcolorsel.c:346 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Alfa actual" -#: ../gtk/gtkcolorbutton.c:217 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "El valor de opacidad actual (0 es completamente transparente, 65535 es " "completamente opaco)" -#: ../gtk/gtkcolorbutton.c:231 +#: ../gtk/gtkcolorbutton.c:230 msgid "Current RGBA Color" msgstr "Color RGBA actual" -#: ../gtk/gtkcolorbutton.c:232 +#: ../gtk/gtkcolorbutton.c:231 msgid "The selected RGBA color" msgstr "El color RGBA seleccionado" -#: ../gtk/gtkcolorsel.c:325 +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Tiene control de opacidad" -#: ../gtk/gtkcolorsel.c:326 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "Indica si el selector de color permite seleccionar la opacidad" -#: ../gtk/gtkcolorsel.c:332 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Tiene paleta" -#: ../gtk/gtkcolorsel.c:333 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Indica si se debe usar una paleta" -#: ../gtk/gtkcolorsel.c:340 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "El color actual" -#: ../gtk/gtkcolorsel.c:347 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "El valor de opacidad actual (0 es completamente transparente, 65535 es " "completamente opaco)" -#: ../gtk/gtkcolorsel.c:361 +#: ../gtk/gtkcolorsel.c:360 msgid "Current RGBA" msgstr "RGBA actual" -#: ../gtk/gtkcolorsel.c:362 +#: ../gtk/gtkcolorsel.c:361 msgid "The current RGBA color" msgstr "El color RGBA actual" @@ -2046,98 +2322,98 @@ msgstr "Botón Ayuda" msgid "The help button of the dialog." msgstr "El botón Ayuda del diálogo." -#: ../gtk/gtkcombobox.c:737 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "Modelo de ComboBox" -#: ../gtk/gtkcombobox.c:738 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "El modelo para el ComboBox" -#: ../gtk/gtkcombobox.c:755 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "Ajusta la anchura para distribuir los elementos en una rejilla" -#: ../gtk/gtkcombobox.c:777 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "Fila expande columna" -#: ../gtk/gtkcombobox.c:778 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "Columna TreeModel que contiene los valores de expansión de la fila" -#: ../gtk/gtkcombobox.c:799 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "Columna expande columna" -#: ../gtk/gtkcombobox.c:800 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "Columna TreeModel que contiene los valores de expansión de columna" -#: ../gtk/gtkcombobox.c:821 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "Elemento activo" -#: ../gtk/gtkcombobox.c:822 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "El elemento que está activo actualmente" -#: ../gtk/gtkcombobox.c:841 ../gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Añadir tiradores a los menús" -#: ../gtk/gtkcombobox.c:842 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "Indica si los desplegables deben tener un tirador en el menú" -#: ../gtk/gtkcombobox.c:857 ../gtk/gtkentry.c:778 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Tiene marco" -#: ../gtk/gtkcombobox.c:858 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "Indica si el ComboBox dibuja un marco alrededor del hijo" -#: ../gtk/gtkcombobox.c:866 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Indica si el ComboBox obtiene el foco cuando se pulsa con el ratón" -#: ../gtk/gtkcombobox.c:881 ../gtk/gtkmenu.c:576 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:571 msgid "Tearoff Title" msgstr "Título del tirador" -#: ../gtk/gtkcombobox.c:882 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" msgstr "" "Un título que podría mostrar el gestor de ventanas al desprender el emergente" -#: ../gtk/gtkcombobox.c:899 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "Emergente mostrado" -#: ../gtk/gtkcombobox.c:900 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "Indica si se muestra el desplegable del combo" -#: ../gtk/gtkcombobox.c:916 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "Sensibilidad del botón" -#: ../gtk/gtkcombobox.c:917 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Indica si el botón desplegable es sensible cunado el modelo está vacío" -#: ../gtk/gtkcombobox.c:933 +#: ../gtk/gtkcombobox.c:859 msgid "Whether combo box has an entry" msgstr "Indica si el ComboBox tiene una entrada" -#: ../gtk/gtkcombobox.c:948 +#: ../gtk/gtkcombobox.c:874 msgid "Entry Text Column" msgstr "Columna de entrada de texto" -#: ../gtk/gtkcombobox.c:949 +#: ../gtk/gtkcombobox.c:875 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" @@ -2145,15 +2421,11 @@ msgstr "" "La columna en el modelo ce caja combinada para asociar con cadenas de la " "entrada si la caja combinada se creó con #GtkComboBox:has-entry = %TRUE" -#: ../gtk/gtkcombobox.c:966 -#| msgid "Columns" +#: ../gtk/gtkcombobox.c:892 msgid "ID Column" msgstr "ID de la columna" -#: ../gtk/gtkcombobox.c:967 -#| 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" +#: ../gtk/gtkcombobox.c:893 msgid "" "The column in the combo box's model that provides string IDs for the values " "in the model" @@ -2161,21 +2433,19 @@ msgstr "" "La columna en el modelo ce caja combinada que proporciona los ID de cadenas " "para los valores en el modelo" -#: ../gtk/gtkcombobox.c:982 -#| msgid "Active" +#: ../gtk/gtkcombobox.c:908 msgid "Active id" msgstr "ID activo" -#: ../gtk/gtkcombobox.c:983 -#| msgid "The name of the icon from the icon theme" +#: ../gtk/gtkcombobox.c:909 msgid "The value of the id column for the active row" msgstr "El valor del ID de la columna para la fila activa" -#: ../gtk/gtkcombobox.c:998 +#: ../gtk/gtkcombobox.c:924 msgid "Popup Fixed Width" msgstr "Anchura fija del emergente" -#: ../gtk/gtkcombobox.c:999 +#: ../gtk/gtkcombobox.c:925 msgid "" "Whether the popup's width should be a fixed width matching the allocated " "width of the combo box" @@ -2183,133 +2453,133 @@ msgstr "" "Indica si la anchura del emergente debería ser fija coincidiendo con la " "anchura reservada para la caja combinada" -#: ../gtk/gtkcombobox.c:1007 +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "Aparece como una lista" -#: ../gtk/gtkcombobox.c:1008 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Indica si los desplegables se parecen a listas en lugar de menús" -#: ../gtk/gtkcombobox.c:1024 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "Tamaño de la flecha" -#: ../gtk/gtkcombobox.c:1025 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "El tamaño mínimo de la flecha en la caja combo" -#: ../gtk/gtkcombobox.c:1040 ../gtk/gtkentry.c:878 ../gtk/gtkhandlebox.c:188 -#: ../gtk/gtkmenubar.c:196 ../gtk/gtkstatusbar.c:180 ../gtk/gtktoolbar.c:603 -#: ../gtk/gtkviewport.c:154 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:196 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:153 msgid "Shadow type" msgstr "Tipo de sombra" -#: ../gtk/gtkcombobox.c:1041 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "Qué clase de sombra dibujar alrededor de la caja combo" -#: ../gtk/gtkcontainer.c:472 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "Modo de redimensión" -#: ../gtk/gtkcontainer.c:473 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "Especifica cómo se manipulan los eventos de redimensionado" -#: ../gtk/gtkcontainer.c:480 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "Anchura del borde" -#: ../gtk/gtkcontainer.c:481 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "La anchura del borde vacío fuera de los contenedores hijos" -#: ../gtk/gtkcontainer.c:489 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "Hijo" -#: ../gtk/gtkcontainer.c:490 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "Puede usarse para añadir un hijo nuevo al contenedor" -#: ../gtk/gtkdialog.c:165 ../gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Borde del área de contenidos" -#: ../gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "Anchura del borde alrededor del área principal del diálogo" -#: ../gtk/gtkdialog.c:183 ../gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Separación del área de contenido" -#: ../gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "Espacio entre los elementos del área del diálogo principal" -#: ../gtk/gtkdialog.c:191 ../gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Espaciado de los botones" -#: ../gtk/gtkdialog.c:192 ../gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Espaciado entre los botones" -#: ../gtk/gtkdialog.c:200 ../gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Borde del área de acción" -#: ../gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" msgstr "" "Anchura del borde alrededor del área del botón en la parte inferior del " "diálogo" -#: ../gtk/gtkentry.c:725 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Búfer de texto" -#: ../gtk/gtkentry.c:726 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Objeto de búfer de texto que realmente almacena la entrada de texto" -#: ../gtk/gtkentry.c:733 ../gtk/gtklabel.c:662 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Posición del cursor" -#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:663 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "La posición actual del cursor de inserción en caracteres" -#: ../gtk/gtkentry.c:743 ../gtk/gtklabel.c:672 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Límite de selección" -#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:673 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "" "The position of the opposite end of the selection from the cursor in chars" msgstr "" "La posición en caracteres del extremo opuesto de la selección desde el cursor" -#: ../gtk/gtkentry.c:754 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Indica si los contenidos de la entrada pueden editarse" -#: ../gtk/gtkentry.c:761 ../gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Longitud máxima" -#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "Número máximo de caracteres para esta entrada. Cero si no hay máximo" -#: ../gtk/gtkentry.c:770 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Visibilidad" -#: ../gtk/gtkentry.c:771 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" @@ -2317,32 +2587,32 @@ msgstr "" "FALSE muestra el «carácter invisible» en lugar del texto actual (modo " "contraseña)" -#: ../gtk/gtkentry.c:779 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALSE quita el bisel exterior de la entrada" -#: ../gtk/gtkentry.c:787 +#: ../gtk/gtkentry.c:788 msgid "" "Border between text and frame. Overrides the inner-border style property" msgstr "" "Borde entre el texto y el marco. Toma precedencia sobre la propiedad de " "estilo del borde interno" -#: ../gtk/gtkentry.c:794 ../gtk/gtkentry.c:1360 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Carácter invisible" -#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "El carácter que se usará cuando se enmascaren los contenidos de la entrada " "(en «modo contraseña»)" -#: ../gtk/gtkentry.c:802 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Activar predeterminado" -#: ../gtk/gtkentry.c:803 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2350,33 +2620,33 @@ msgstr "" "Indica si se debe activar el widget predeterminado (como el botón " "predeterminado en un diálogo) cuando se pulse INTRO" -#: ../gtk/gtkentry.c:809 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Anchura en caracteres" -#: ../gtk/gtkentry.c:810 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Número de caracteres para dejar de espacio en la entrada" -#: ../gtk/gtkentry.c:819 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Desplazamiento del scroll" -#: ../gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "" "Número de píxeles de la entrada desplazados en scroll fuera de la pantalla " "hacia la izquierda" -#: ../gtk/gtkentry.c:830 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "El contenido de la entrada" -#: ../gtk/gtkentry.c:845 ../gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X alineación" -#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2384,68 +2654,68 @@ msgstr "" "La alineación horizontal, desde 0 (izquierda) hasta 1 (derecha). Al revés " "para distribuciones D-->I." -#: ../gtk/gtkentry.c:862 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Truncar multilínea" -#: ../gtk/gtkentry.c:863 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Indica si se truncan las pegadas multilíneas a una línea." -#: ../gtk/gtkentry.c:879 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "" "Qué clase de sombra dibujar alrededor de la entrada cuando has-frame está " "activado" -#: ../gtk/gtkentry.c:894 ../gtk/gtktextview.c:766 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:765 msgid "Overwrite mode" msgstr "Modo de sobreescritura" -#: ../gtk/gtkentry.c:895 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Indica si el texto introducido sobreescribe el existente" -#: ../gtk/gtkentry.c:909 ../gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Longitud del texto" -#: ../gtk/gtkentry.c:910 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Longitud del texto actualmente en la entrada" -#: ../gtk/gtkentry.c:925 +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" msgstr "Conjunto de caracteres invisibles" -#: ../gtk/gtkentry.c:926 +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "" "Indica si se ha establecido la invisibilidad del conjunto de caracteres" -#: ../gtk/gtkentry.c:944 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Advertencia de bloqueo de mayúsculas" -#: ../gtk/gtkentry.c:945 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "" "Indica si en las entradas de contraseñas se muestra una advertencia cuando " "el bloqueo de mayúsculas está activo" -#: ../gtk/gtkentry.c:959 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Fracción de progreso" -#: ../gtk/gtkentry.c:960 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "La fracción actual completada de la tarea" -#: ../gtk/gtkentry.c:977 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Progreso del paso del pulso" -#: ../gtk/gtkentry.c:978 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2453,169 +2723,169 @@ msgstr "" "La fracción del ancho total de la entrada para mover el bloque de rebote de " "progreso para cada llamada a gtk_entry_progress_pulse()" -#: ../gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Pixbuf primario" -#: ../gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "El pixbuf primario para la entrada" -#: ../gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Pixbuf secundario" -#: ../gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "El pixbuf secundario para la entrada" -#: ../gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "ID de almacenamiento primario" -#: ../gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "ID de almacenamiento para el icono primario" -#: ../gtk/gtkentry.c:1039 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "ID de almacenamiento secundario" -#: ../gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "ID de almacenamiento para el icono secundario" -#: ../gtk/gtkentry.c:1054 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Nombre del icono primario" -#: ../gtk/gtkentry.c:1055 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Nombre del icono para el icono primario" -#: ../gtk/gtkentry.c:1069 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Nombre del icono secundario" -#: ../gtk/gtkentry.c:1070 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "Nombre del icono para el icono secundario" -#: ../gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "GIcon primario" -#: ../gtk/gtkentry.c:1085 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "GIcon para el icono primario" -#: ../gtk/gtkentry.c:1099 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "GIcon secundario" -#: ../gtk/gtkentry.c:1100 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "GIcon para el icono secundario" -#: ../gtk/gtkentry.c:1114 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Tipo de almacenamiento primario" -#: ../gtk/gtkentry.c:1115 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "La representación empleada para el icono primario" -#: ../gtk/gtkentry.c:1130 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Tipo de almacenamiento secundario" -#: ../gtk/gtkentry.c:1131 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "La representación empleada para el icono secundario" -#: ../gtk/gtkentry.c:1152 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Icono primario activable" -#: ../gtk/gtkentry.c:1153 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Indica si el icono primario es activable" -#: ../gtk/gtkentry.c:1173 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Icono secundario activable" -#: ../gtk/gtkentry.c:1174 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Indica si el icono secundario es activable" -#: ../gtk/gtkentry.c:1196 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Sensibilidad del icono primario" -#: ../gtk/gtkentry.c:1197 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Indica si el icono primario es sensible" -#: ../gtk/gtkentry.c:1218 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Sensibilidad del icono secundario" -#: ../gtk/gtkentry.c:1219 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Indica si el icono secundario es sensible" -#: ../gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Texto del consejo del icono primario" -#: ../gtk/gtkentry.c:1236 ../gtk/gtkentry.c:1272 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "El contenido del consejo para el icono primario" -#: ../gtk/gtkentry.c:1252 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Texto del consejo del icono secundario" -#: ../gtk/gtkentry.c:1253 ../gtk/gtkentry.c:1291 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "El contenido del consejo para el icono secundario" -#: ../gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Marcado del consejo del icono primario" -#: ../gtk/gtkentry.c:1290 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Marcado del consejo del icono secundario" -#: ../gtk/gtkentry.c:1310 ../gtk/gtktextview.c:794 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:793 msgid "IM module" msgstr "Módulo ME" -#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:795 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:794 msgid "Which IM module should be used" msgstr "Qué módulo de ME se debe usar" -#: ../gtk/gtkentry.c:1325 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Iluminación de icono" -#: ../gtk/gtkentry.c:1326 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "" "Indica si los iconos activables deben iluminarse al pasar el ratón sobre " "ellos" -#: ../gtk/gtkentry.c:1339 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Borde del progreso" -#: ../gtk/gtkentry.c:1340 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "Borde alrededor de la barra de progreso" -#: ../gtk/gtkentry.c:1832 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Borde entre el texto y el marco." @@ -2627,76 +2897,76 @@ msgstr "El contenido del búfer" msgid "Length of the text currently in the buffer" msgstr "Longitud del texto actualmente en el búfer" -#: ../gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "Modelo de completado" -#: ../gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "El modelo para encontrar coincidencias" -#: ../gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "Longitud mínima de clave" -#: ../gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "Longitud mínima de la clave de búsqueda para buscar coincidencias" -#: ../gtk/gtkentrycompletion.c:304 ../gtk/gtkiconview.c:617 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 msgid "Text column" msgstr "Columna de texto" -#: ../gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "La columna del modelo que contiene las cadenas." -#: ../gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "Completado en línea" -#: ../gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "Indica si el prefijo común debe insertarse automáticamente" -#: ../gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "Emerger el completado" -#: ../gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "Indica si los completados deben mostrarse en una ventana emergente" -#: ../gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "El emergente establece la anchura" -#: ../gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "Si es TRUE, la ventana emergente tendrá el mismo tamaño que la entrada" -#: ../gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "Coincidencia simple del emergente" -#: ../gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." msgstr "" "Si es TRUE, la ventana emergente aparecerá para una coincidencia simple." -#: ../gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "Selección en línea" -#: ../gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "Aquí su descripción" -#: ../gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "Ventana visible" -#: ../gtk/gtkeventbox.c:102 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2704,11 +2974,11 @@ msgstr "" "Indica si la caja de eventos es visible, como contraposición a invisible y " "sólo usada para atrapar eventos." -#: ../gtk/gtkeventbox.c:108 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "Sobre el hijo" -#: ../gtk/gtkeventbox.c:109 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2716,60 +2986,60 @@ msgstr "" "Indica si la ventana atrapadora de eventos de la caja de eventos está por " "encima del widget hijo como oposición debajo de ésta." -#: ../gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "Expandido" -#: ../gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Indica si el expansor ha sido abierto para revelar el widget hijo" -#: ../gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "Texto de la etiqueta del expansor" -#: ../gtk/gtkexpander.c:225 ../gtk/gtklabel.c:581 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Usar marcado" -#: ../gtk/gtkexpander.c:226 ../gtk/gtklabel.c:582 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "El texto de la etiqueta incluye marcado XML. Vea pango_parse_markup()" -#: ../gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "Espacio para colocar entre la etiqueta y el hijo" -#: ../gtk/gtkexpander.c:243 ../gtk/gtkframe.c:165 ../gtk/gtktoolbutton.c:216 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:166 ../gtk/gtktoolbutton.c:215 #: ../gtk/gtktoolitemgroup.c:1595 msgid "Label widget" msgstr "Widget etiqueta" -#: ../gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "Un widget para mostrar en lugar de la etiqueta usual del expansor" -#: ../gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:329 msgid "Label fill" msgstr "Relleno de etiqueta" -#: ../gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" msgstr "" "Indica si el widget de etiqueta debería llenar todo el espacio horizontal " "disponible" -#: ../gtk/gtkexpander.c:258 ../gtk/gtktoolitemgroup.c:1623 -#: ../gtk/gtktreeview.c:863 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1623 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "Tamaño del expansor" -#: ../gtk/gtkexpander.c:259 ../gtk/gtktoolitemgroup.c:1624 -#: ../gtk/gtktreeview.c:864 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "Tamaño de la flecha del expansor" -#: ../gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "Espaciado alrededor de la flecha del expansor" @@ -2892,19 +3162,19 @@ msgstr "" "Indica si un selector de archivos en modo distinto a abrir ofrece al usuario " "la posibilidad de crear carpetas nuevas." -#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:633 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:632 msgid "X position" msgstr "Posición X" -#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:634 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:633 msgid "X position of child widget" msgstr "Posición X del widget hijo" -#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:643 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:642 msgid "Y position" msgstr "Posición Y" -#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:644 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:643 msgid "Y position of child widget" msgstr "Posición Y del widget hijo" @@ -2912,7 +3182,7 @@ msgstr "Posición Y del widget hijo" msgid "The title of the font selection dialog" msgstr "El título del diálogo de selección de tipografía" -#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:219 msgid "Font name" msgstr "Nombre de la tipografía" @@ -2958,67 +3228,145 @@ msgid "Whether selected font size is shown in the label" msgstr "" "Indica si el tamaño de tipografía seleccionado se muestra en la etiqueta" -#: ../gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:220 msgid "The string that represents this font" msgstr "La cadena que representa esta tipografía" -#: ../gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:226 msgid "Preview text" msgstr "Vista previa del texto" -#: ../gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:227 msgid "The text to display in order to demonstrate the selected font" msgstr "El texto que mostrar como demostración de la tipografía seleccionada" -#: ../gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:132 msgid "Text of the frame's label" msgstr "Texto de la etiqueta del marco" -#: ../gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:139 msgid "Label xalign" msgstr "xalign de la etiqueta" -#: ../gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:140 msgid "The horizontal alignment of the label" msgstr "La alineación horizontal de la etiqueta" -#: ../gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:148 msgid "Label yalign" msgstr "yalign de la etiqueta" -#: ../gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:149 msgid "The vertical alignment of the label" msgstr "La alineación vertical de la etiqueta" -#: ../gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:157 msgid "Frame shadow" msgstr "Sombra del marco" -#: ../gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:158 msgid "Appearance of the frame border" msgstr "Apariencia del borde del marco" -#: ../gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:167 msgid "A widget to display in place of the usual frame label" msgstr "Un widget a mostrar en lugar de la usual etiqueta del marco" -#: ../gtk/gtkhandlebox.c:189 +#: ../gtk/gtkgrid.c:1268 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "Espaciado entre filas" + +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "La cantidad de espacio entre dos filas consecutivas" + +#: ../gtk/gtkgrid.c:1275 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "Espaciado de la columna" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "La cantidad de espacio entre dos columnas consecutivas" + +#: ../gtk/gtkgrid.c:1282 +#| msgid "Homogeneous" +msgid "Row Homogeneous" +msgstr "Fila homogénea" + +#: ../gtk/gtkgrid.c:1283 +#, fuzzy +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the rows are all the same height" +msgstr "" +"Si es TRUE, las celdas de la tabla tienen todas de la misma anchura/altura" + +#: ../gtk/gtkgrid.c:1289 +#| msgid "Homogeneous" +msgid "Column Homogeneous" +msgstr "Columna homogénea" + +#: ../gtk/gtkgrid.c:1290 +#, fuzzy +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the columns are all the same width" +msgstr "" +"Si es TRUE, las celdas de la tabla tienen todas de la misma anchura/altura" + +#: ../gtk/gtkgrid.c:1296 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "Acoplado izquierdo" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtkmenu.c:689 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "El número de columnas que acoplar al lado izquierdo del hijo" + +#: ../gtk/gtkgrid.c:1303 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "Acoplado superior" + +#: ../gtk/gtkgrid.c:1304 +#, fuzzy +#| msgid "The row number to attach the top of a child widget to" +msgid "The row number to attach the top side of a child widget to" +msgstr "El número de fila que acoplar a la parte superior de un widget hijo" + +#: ../gtk/gtkgrid.c:1310 ../gtk/gtklayout.c:658 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "Anchura" + +#: ../gtk/gtkgrid.c:1311 +#, fuzzy +#| msgid "The number of columns in the table" +msgid "The number of columns that a child spans" +msgstr "El número de columnas en la tabla" + +#: ../gtk/gtkgrid.c:1317 ../gtk/gtklayout.c:667 +msgid "Height" +msgstr "Altura" + +#: ../gtk/gtkgrid.c:1318 +#, fuzzy +#| msgid "The number of rows in the table" +msgid "The number of rows that a child spans" +msgstr "El número de filas en la tabla" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "Apariencia de la sombra que rodea al contenedor" -#: ../gtk/gtkhandlebox.c:197 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "Posición del tirador" -#: ../gtk/gtkhandlebox.c:198 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "Posición del tirador relativa al widget hijo" -#: ../gtk/gtkhandlebox.c:206 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "Ajustar al borde" -#: ../gtk/gtkhandlebox.c:207 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" @@ -3026,11 +3374,11 @@ msgstr "" "Lado de la caja manipuladora que está alineada con el punto de anclaje para " "anclar la caja manejadora" -#: ../gtk/gtkhandlebox.c:215 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "Ajuste al borde establecido" -#: ../gtk/gtkhandlebox.c:216 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -3038,11 +3386,11 @@ msgstr "" "Indica si se debe usar el valor desde la propiedad snap_edge o un valor " "derivado de handle_position" -#: ../gtk/gtkhandlebox.c:223 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "Hijo desacoplado" -#: ../gtk/gtkhandlebox.c:224 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." @@ -3050,247 +3398,248 @@ msgstr "" "Una variable booleana indicando si el hijo del manejador de la caja está " "acoplado o desacoplado." -#: ../gtk/gtkiconview.c:580 +#: ../gtk/gtkiconview.c:524 msgid "Selection mode" msgstr "Modo de selección" -#: ../gtk/gtkiconview.c:581 +#: ../gtk/gtkiconview.c:525 msgid "The selection mode" msgstr "El modo de selección" -#: ../gtk/gtkiconview.c:599 +#: ../gtk/gtkiconview.c:543 msgid "Pixbuf column" msgstr "Columna de pixbuf" -#: ../gtk/gtkiconview.c:600 +#: ../gtk/gtkiconview.c:544 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Columna modelo usada para obtener el pixbuf del icono" -#: ../gtk/gtkiconview.c:618 +#: ../gtk/gtkiconview.c:562 msgid "Model column used to retrieve the text from" msgstr "Columna modelo usada para obtener el texto" -#: ../gtk/gtkiconview.c:637 +#: ../gtk/gtkiconview.c:581 msgid "Markup column" msgstr "Columna de marcado" -#: ../gtk/gtkiconview.c:638 +#: ../gtk/gtkiconview.c:582 msgid "Model column used to retrieve the text if using Pango markup" msgstr "Columna modelo usada para obtener el texto si se usa marcado Pango" -#: ../gtk/gtkiconview.c:645 +#: ../gtk/gtkiconview.c:589 msgid "Icon View Model" msgstr "Modelo de vista de icono" -#: ../gtk/gtkiconview.c:646 +#: ../gtk/gtkiconview.c:590 msgid "The model for the icon view" msgstr "El modelo para la vista de icono" -#: ../gtk/gtkiconview.c:662 +#: ../gtk/gtkiconview.c:606 msgid "Number of columns" msgstr "Número de columnas" -#: ../gtk/gtkiconview.c:663 +#: ../gtk/gtkiconview.c:607 msgid "Number of columns to display" msgstr "El número de columnas que se mostrarán" -#: ../gtk/gtkiconview.c:680 +#: ../gtk/gtkiconview.c:624 msgid "Width for each item" msgstr "Anchura de cada elemento" -#: ../gtk/gtkiconview.c:681 +#: ../gtk/gtkiconview.c:625 msgid "The width used for each item" msgstr "La anchura usada por cada elemento" -#: ../gtk/gtkiconview.c:697 +#: ../gtk/gtkiconview.c:641 msgid "Space which is inserted between cells of an item" msgstr "Espacio que se introduce entre las celdas de un elemento" -#: ../gtk/gtkiconview.c:712 +#: ../gtk/gtkiconview.c:656 msgid "Row Spacing" msgstr "Espaciado entre filas" -#: ../gtk/gtkiconview.c:713 +#: ../gtk/gtkiconview.c:657 msgid "Space which is inserted between grid rows" msgstr "Espacio que se introduce entre las filas de la rejilla" -#: ../gtk/gtkiconview.c:728 +#: ../gtk/gtkiconview.c:672 msgid "Column Spacing" msgstr "Espaciado entre columnas" -#: ../gtk/gtkiconview.c:729 +#: ../gtk/gtkiconview.c:673 msgid "Space which is inserted between grid columns" msgstr "Espacio que se inserta entre las columnas de la rejilla" -#: ../gtk/gtkiconview.c:744 +#: ../gtk/gtkiconview.c:688 msgid "Margin" msgstr "Margen" -#: ../gtk/gtkiconview.c:745 +#: ../gtk/gtkiconview.c:689 msgid "Space which is inserted at the edges of the icon view" msgstr "Espacio que se introduce entre los bordes de la vista de icono" -#: ../gtk/gtkiconview.c:760 +#: ../gtk/gtkiconview.c:704 msgid "Item Orientation" msgstr "Orientación del elemento" -#: ../gtk/gtkiconview.c:761 +#: ../gtk/gtkiconview.c:705 msgid "" "How the text and icon of each item are positioned relative to each other" msgstr "" "Cómo se sitúan el texto y el icono para cada elemento relativo a los demás" -#: ../gtk/gtkiconview.c:777 ../gtk/gtktreeview.c:698 -#: ../gtk/gtktreeviewcolumn.c:329 +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "Reordenable" -#: ../gtk/gtkiconview.c:778 ../gtk/gtktreeview.c:699 +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "La vista es reordenable" -#: ../gtk/gtkiconview.c:785 ../gtk/gtktreeview.c:849 +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "Columna de consejo" -#: ../gtk/gtkiconview.c:786 +#: ../gtk/gtkiconview.c:730 msgid "The column in the model containing the tooltip texts for the items" msgstr "" "La columna del modelo que contiene los textos de consejo para los elementos" -#: ../gtk/gtkiconview.c:803 +#: ../gtk/gtkiconview.c:747 msgid "Item Padding" msgstr "Separación del elemento" -#: ../gtk/gtkiconview.c:804 +#: ../gtk/gtkiconview.c:748 msgid "Padding around icon view items" msgstr "Separación alrededor de la vista de iconos" -#: ../gtk/gtkiconview.c:817 +#: ../gtk/gtkiconview.c:776 msgid "Selection Box Color" msgstr "Color de la caja de selección" -#: ../gtk/gtkiconview.c:818 +#: ../gtk/gtkiconview.c:777 msgid "Color of the selection box" msgstr "Color de la caja de selección" -#: ../gtk/gtkiconview.c:824 +#: ../gtk/gtkiconview.c:783 msgid "Selection Box Alpha" msgstr "Alfa de la caja de selección" -#: ../gtk/gtkiconview.c:825 +#: ../gtk/gtkiconview.c:784 msgid "Opacity of the selection box" msgstr "Opacidad de la caja de selección" -#: ../gtk/gtkimage.c:233 ../gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "Pixbuf" -#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:235 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "Un GdkPixbuf para mostrar" -#: ../gtk/gtkimage.c:241 ../gtk/gtkrecentmanager.c:294 -#: ../gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:242 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "Nombre de archivo" -#: ../gtk/gtkimage.c:242 ../gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:243 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "Nombre del archivo a cargar y mostrar" -#: ../gtk/gtkimage.c:251 ../gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:252 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "ID de inventario para una imagen de inventario que mostrar" -#: ../gtk/gtkimage.c:258 +#: ../gtk/gtkimage.c:259 msgid "Icon set" msgstr "Conjunto de iconos" -#: ../gtk/gtkimage.c:259 +#: ../gtk/gtkimage.c:260 msgid "Icon set to display" msgstr "Conjunto de iconos para mostrar" -#: ../gtk/gtkimage.c:266 ../gtk/gtkscalebutton.c:230 ../gtk/gtktoolbar.c:520 -#: ../gtk/gtktoolpalette.c:1030 +#: ../gtk/gtkimage.c:267 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1031 msgid "Icon size" msgstr "Tamaño del icono" -#: ../gtk/gtkimage.c:267 +#: ../gtk/gtkimage.c:268 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "" "Tamaño simbólico que usar para el icono de inventario, conjunto de iconos o " "icono nombrado" -#: ../gtk/gtkimage.c:283 +#: ../gtk/gtkimage.c:284 msgid "Pixel size" msgstr "Tamaño del píxel" -#: ../gtk/gtkimage.c:284 +#: ../gtk/gtkimage.c:285 msgid "Pixel size to use for named icon" msgstr "Tamaño de píxel que usar para el icono nombrado" -#: ../gtk/gtkimage.c:292 +#: ../gtk/gtkimage.c:293 msgid "Animation" msgstr "Animación" -#: ../gtk/gtkimage.c:293 +#: ../gtk/gtkimage.c:294 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation para mostrar" -#: ../gtk/gtkimage.c:333 ../gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "Tipo de almacenamiento" -#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:335 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "La representación empleada para los datos de la imagen" -#: ../gtk/gtkimagemenuitem.c:149 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Widget hijo que aparecerá al lado del texto del menú" -#: ../gtk/gtkimagemenuitem.c:164 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "" "Indica si se debe usar el texto de la etiqueta para crear un elemento del " "menú de stock" -#: ../gtk/gtkimagemenuitem.c:197 ../gtk/gtkmenu.c:536 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:531 msgid "Accel Group" msgstr "Grupo de aceleración" -#: ../gtk/gtkimagemenuitem.c:198 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "" "El grupo de aceleración que usar para los aceleradores de teclado de stock" -#: ../gtk/gtkinfobar.c:375 ../gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "Tipo de mensaje" -#: ../gtk/gtkinfobar.c:376 ../gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "El tipo de mensaje" -#: ../gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Anchura del borde alrededor del área de contenido" -#: ../gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Espacio entre los elementos del área" -#: ../gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Anchura del borde alrededor del área de acción" -#: ../gtk/gtkinvisible.c:90 ../gtk/gtkmountoperation.c:175 -#: ../gtk/gtkstatusicon.c:279 ../gtk/gtkwindow.c:741 +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:546 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "Pantalla" -#: ../gtk/gtkinvisible.c:91 ../gtk/gtkwindow.c:742 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "La pantalla donde se mostrará esta ventana" @@ -3302,7 +3651,7 @@ msgstr "El texto de la etiqueta" msgid "A list of style attributes to apply to the text of the label" msgstr "Un lista de atributos de estilos para aplicar al texto de la etiqueta" -#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:335 ../gtk/gtktextview.c:703 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:337 ../gtk/gtktextview.c:702 msgid "Justification" msgstr "Justificación" @@ -3407,35 +3756,27 @@ msgstr "Seguir los enlaces visitados" msgid "Whether visited links should be tracked" msgstr "Indica si deben seguir los enlaces visitados" -#: ../gtk/gtklayout.c:659 ../gtk/gtktreeviewcolumn.c:229 -msgid "Width" -msgstr "Anchura" - -#: ../gtk/gtklayout.c:660 +#: ../gtk/gtklayout.c:659 msgid "The width of the layout" msgstr "La anchura de la distribución" #: ../gtk/gtklayout.c:668 -msgid "Height" -msgstr "Altura" - -#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "La altura de la distribución" -#: ../gtk/gtklinkbutton.c:174 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URI" -#: ../gtk/gtklinkbutton.c:175 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "El URI asociado a este botón" -#: ../gtk/gtklinkbutton.c:189 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "Visitado" -#: ../gtk/gtklinkbutton.c:190 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "Indica si este enlace se ha visitado." @@ -3459,7 +3800,7 @@ msgstr "La dirección de empaquetado hijo de la barra de menú" msgid "Style of bevel around the menubar" msgstr "Estilo del bisel alrededor de la barra de menús" -#: ../gtk/gtkmenubar.c:204 ../gtk/gtktoolbar.c:570 +#: ../gtk/gtkmenubar.c:204 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "Relleno interno" @@ -3469,33 +3810,33 @@ msgstr "" "Número de espacios del borde entre la sombra de la barra de menús y los " "elementos del menú" -#: ../gtk/gtkmenu.c:522 +#: ../gtk/gtkmenu.c:517 msgid "The currently selected menu item" msgstr "El elemento del menú actualmente seleccionado" -#: ../gtk/gtkmenu.c:537 +#: ../gtk/gtkmenu.c:532 msgid "The accel group holding accelerators for the menu" msgstr "El grupo de aceleración que contiene los aceleradores para el menú" -#: ../gtk/gtkmenu.c:551 ../gtk/gtkmenuitem.c:316 +#: ../gtk/gtkmenu.c:546 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Ruta del acelerador" -#: ../gtk/gtkmenu.c:552 +#: ../gtk/gtkmenu.c:547 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" "Una ruta de acelerador usada para construir convenientemente rutas de " "aceleración de elementos hijo" -#: ../gtk/gtkmenu.c:568 +#: ../gtk/gtkmenu.c:563 msgid "Attach Widget" msgstr "Acoplar widget" -#: ../gtk/gtkmenu.c:569 +#: ../gtk/gtkmenu.c:564 msgid "The widget the menu is attached to" msgstr "El menú al que está acoplado el widget" -#: ../gtk/gtkmenu.c:577 +#: ../gtk/gtkmenu.c:572 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" @@ -3503,54 +3844,54 @@ msgstr "" "Un título que podría mostrarse por el administrador de ventanas cuando este " "menú se desprenda" -#: ../gtk/gtkmenu.c:591 +#: ../gtk/gtkmenu.c:586 msgid "Tearoff State" msgstr "Estado de desprendimiento" -#: ../gtk/gtkmenu.c:592 +#: ../gtk/gtkmenu.c:587 msgid "A boolean that indicates whether the menu is torn-off" msgstr "Un booleano que indica si el menú ha sido desprendido" -#: ../gtk/gtkmenu.c:606 +#: ../gtk/gtkmenu.c:601 msgid "Monitor" msgstr "Monitor" -#: ../gtk/gtkmenu.c:607 +#: ../gtk/gtkmenu.c:602 msgid "The monitor the menu will be popped up on" msgstr "El monitor en el que se mostrará el menú" -#: ../gtk/gtkmenu.c:613 +#: ../gtk/gtkmenu.c:608 msgid "Vertical Padding" msgstr "Separación vertical" -#: ../gtk/gtkmenu.c:614 +#: ../gtk/gtkmenu.c:609 msgid "Extra space at the top and bottom of the menu" msgstr "El espacio adicional en la parte superior e inferior del menú" -#: ../gtk/gtkmenu.c:636 +#: ../gtk/gtkmenu.c:631 msgid "Reserve Toggle Size" msgstr "Reservar tamaño para conmutar" -#: ../gtk/gtkmenu.c:637 +#: ../gtk/gtkmenu.c:632 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" msgstr "" "Un booleano que indica si el menú reserva espacio para conmutadores e iconos" -#: ../gtk/gtkmenu.c:643 +#: ../gtk/gtkmenu.c:638 msgid "Horizontal Padding" msgstr "Separación horizontal" -#: ../gtk/gtkmenu.c:644 +#: ../gtk/gtkmenu.c:639 msgid "Extra space at the left and right edges of the menu" msgstr "El espacio adicional en los bordes derecho e izquierdo del menú" -#: ../gtk/gtkmenu.c:652 +#: ../gtk/gtkmenu.c:647 msgid "Vertical Offset" msgstr "Desplazamiento vertical" -#: ../gtk/gtkmenu.c:653 +#: ../gtk/gtkmenu.c:648 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" @@ -3558,11 +3899,11 @@ msgstr "" "Cuando el menú es un submenú, colocarlo este número de píxeles de " "desplazamiento vertical" -#: ../gtk/gtkmenu.c:661 +#: ../gtk/gtkmenu.c:656 msgid "Horizontal Offset" msgstr "Desplazamiento horizontal" -#: ../gtk/gtkmenu.c:662 +#: ../gtk/gtkmenu.c:657 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" @@ -3570,176 +3911,172 @@ msgstr "" "Cuando el menú es un submenú, colocarlo este número de píxeles de " "desplazamiento horizontal" -#: ../gtk/gtkmenu.c:670 +#: ../gtk/gtkmenu.c:665 msgid "Double Arrows" msgstr "Dobles flechas" -#: ../gtk/gtkmenu.c:671 +#: ../gtk/gtkmenu.c:666 msgid "When scrolling, always show both arrows." msgstr "Al desplazar, siempre mostrar ambas flechas." -#: ../gtk/gtkmenu.c:684 +#: ../gtk/gtkmenu.c:679 msgid "Arrow Placement" msgstr "Colocación de flecha" -#: ../gtk/gtkmenu.c:685 +#: ../gtk/gtkmenu.c:680 msgid "Indicates where scroll arrows should be placed" msgstr "Indica si las flechas de desplazamiento se deben colocar" -#: ../gtk/gtkmenu.c:693 +#: ../gtk/gtkmenu.c:688 msgid "Left Attach" msgstr "Acoplar a la izquierda" -#: ../gtk/gtkmenu.c:694 ../gtk/gtktable.c:202 -msgid "The column number to attach the left side of the child to" -msgstr "El número de columnas que acoplar al lado izquierdo del hijo" - -#: ../gtk/gtkmenu.c:701 +#: ../gtk/gtkmenu.c:696 msgid "Right Attach" msgstr "Acoplar a la derecha" -#: ../gtk/gtkmenu.c:702 +#: ../gtk/gtkmenu.c:697 msgid "The column number to attach the right side of the child to" msgstr "El número de columnas que acoplar al lado derecho del hijo" -#: ../gtk/gtkmenu.c:709 +#: ../gtk/gtkmenu.c:704 msgid "Top Attach" msgstr "Acoplamiento superior" -#: ../gtk/gtkmenu.c:710 +#: ../gtk/gtkmenu.c:705 msgid "The row number to attach the top of the child to" msgstr "El número de filas que acoplar por encima del hijo" -#: ../gtk/gtkmenu.c:717 +#: ../gtk/gtkmenu.c:712 msgid "Bottom Attach" msgstr "Acoplamiento inferior" -#: ../gtk/gtkmenu.c:718 ../gtk/gtktable.c:223 +#: ../gtk/gtkmenu.c:713 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "El número de filas que acoplar por debajo del hijo" -#: ../gtk/gtkmenu.c:732 +#: ../gtk/gtkmenu.c:727 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "" "Constante arbitraria para reducir el escalado del tamaño de la flecha de " "desplazamiento" -#: ../gtk/gtkmenuitem.c:283 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Justificado a la derecha" -#: ../gtk/gtkmenuitem.c:284 +#: ../gtk/gtkmenuitem.c:282 msgid "" "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" "Establece si el elemento del menú aparece justificado en la parte derecha de " "una barra de menú" -#: ../gtk/gtkmenuitem.c:298 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Submenú" -#: ../gtk/gtkmenuitem.c:299 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "El submenú acoplado al elemento del menú, o NULL si no tiene ninguno" -#: ../gtk/gtkmenuitem.c:317 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Establece la ruta del acelerador del elemento del menú" -#: ../gtk/gtkmenuitem.c:332 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "El texto para la etiqueta hijo" -#: ../gtk/gtkmenuitem.c:395 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "" "Cantidad de espacio ocupado por una flecha, relativa al tamaño de tipografía " "del elemento del menú" -#: ../gtk/gtkmenuitem.c:408 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Anchura en caracteres" -#: ../gtk/gtkmenuitem.c:409 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "La anchura mínima deseada del elemento del menú en caracteres" -#: ../gtk/gtkmenushell.c:381 +#: ../gtk/gtkmenushell.c:363 msgid "Take Focus" msgstr "Toma el foco" -#: ../gtk/gtkmenushell.c:382 +#: ../gtk/gtkmenushell.c:364 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "Un booleano que indica si el menú obtiene el foco del teclado" -#: ../gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:257 msgid "Menu" msgstr "Menú" -#: ../gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:258 msgid "The dropdown menu" msgstr "El menú desplegable" -#: ../gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "Borde de la imagen/etiqueta" -#: ../gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" msgstr "" "Anchura del borde alrededor de la etiqueta y la imagen en el diálogo de " "mensajes" -#: ../gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "Botones del mensaje" -#: ../gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "Los botones mostrados en el diálogo de mensaje" -#: ../gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "El texto primario del diálogo de mensaje" -#: ../gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "Usar marcado" -#: ../gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "El texto primario del título incluye marcado Pango." -#: ../gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "Texto secundario" -#: ../gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "El texto secundario del diálogo de mensaje" -#: ../gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "Usar marcado en el secundario" -#: ../gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "El texto secundario incluye marcado Pango." -#: ../gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "Imagen" -#: ../gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "La imagen" -#: ../gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" msgstr "Área de mensajes" -#: ../gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox que contiene las etiquetas primaria y secundaria del diálogo" @@ -3793,52 +4130,52 @@ msgstr "Estamos mostrando un diálogo" msgid "The screen where this window will be displayed." msgstr "La pantalla donde se mostrará esta ventana." -#: ../gtk/gtknotebook.c:689 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "Página" -#: ../gtk/gtknotebook.c:690 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "El índice de la página actual" -#: ../gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "Posición del tabulador" -#: ../gtk/gtknotebook.c:699 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "Qué lado del cuaderno contiene las solapas" -#: ../gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "Mostrar solapas" -#: ../gtk/gtknotebook.c:707 +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "Indica si se deben mostrar las solapas" -#: ../gtk/gtknotebook.c:713 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "Mostrar borde" -#: ../gtk/gtknotebook.c:714 +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "Indica si se debe mostrar el borde" -#: ../gtk/gtknotebook.c:720 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "Desplazable" -#: ../gtk/gtknotebook.c:721 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "" "Si es TRUE, añadir flechas de desplazamiento si no caben todas las solapas" -#: ../gtk/gtknotebook.c:727 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "Activar emergente" -#: ../gtk/gtknotebook.c:728 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3846,130 +4183,179 @@ msgstr "" "Si es TRUE, presionando el botón derecho del ratón en el cuaderno emerge un " "menú que puede usar para ir a una página" -#: ../gtk/gtknotebook.c:742 +#: ../gtk/gtknotebook.c:738 msgid "Group Name" msgstr "Nombre del grupo" -#: ../gtk/gtknotebook.c:743 +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" msgstr "Nombre del grupo para el arrastre y suelte de solapas" -#: ../gtk/gtknotebook.c:750 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "Etiqueta de la solapa" -#: ../gtk/gtknotebook.c:751 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "La cadena mostrada en la etiqueta de la solapa hija" -#: ../gtk/gtknotebook.c:757 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "Etiqueta de menú" -#: ../gtk/gtknotebook.c:758 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "La cadena mostrada en la entrada de menú hija" -#: ../gtk/gtknotebook.c:771 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "Expansión de la solapa" -#: ../gtk/gtknotebook.c:772 +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "Indica si se deben expandir la solapas del hijo" -#: ../gtk/gtknotebook.c:778 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "Relleno de la solapa" -#: ../gtk/gtknotebook.c:779 +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "Indica si se debe rellenar el área asignada de las solapas hijas " -#: ../gtk/gtknotebook.c:792 -msgid "Tab pack type" -msgstr "Tipo de empaquetado de la solapa" - -#: ../gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "Solapa reordenable" -#: ../gtk/gtknotebook.c:800 +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "Indica si la solapa se puede reordenar por una acción del usuario" -#: ../gtk/gtknotebook.c:806 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "Solapa desprendible" -#: ../gtk/gtknotebook.c:807 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "Indica si la solapa es desprendible" -#: ../gtk/gtknotebook.c:822 ../gtk/gtkscrollbar.c:105 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Flecha de retroceso secundaria" -#: ../gtk/gtknotebook.c:823 +#: ../gtk/gtknotebook.c:806 msgid "" "Display a second backward arrow button on the opposite end of the tab area" msgstr "" "Muestra una segunda flecha de retroceso en el extremo opuesto del área de " "solapas" -#: ../gtk/gtknotebook.c:838 ../gtk/gtkscrollbar.c:112 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Flecha de adelanto secundaria" -#: ../gtk/gtknotebook.c:839 +#: ../gtk/gtknotebook.c:822 msgid "" "Display a second forward arrow button on the opposite end of the tab area" msgstr "" "Mostrar una segunda flecha de avance en el extremo opuesto del área de " "solapas" -#: ../gtk/gtknotebook.c:853 ../gtk/gtkscrollbar.c:91 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Flecha de retroceso" -#: ../gtk/gtknotebook.c:854 ../gtk/gtkscrollbar.c:92 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Mostrar el botón estándar de flecha de retroceso" -#: ../gtk/gtknotebook.c:868 ../gtk/gtkscrollbar.c:98 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Flecha de avance" -#: ../gtk/gtknotebook.c:869 ../gtk/gtkscrollbar.c:99 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Mostrar el botón estándar de flecha de avance" -#: ../gtk/gtknotebook.c:883 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "Solapamiento de la solapa" -#: ../gtk/gtknotebook.c:884 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "Tamaño del área de solapamiento de la solapa" -#: ../gtk/gtknotebook.c:899 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "Curvatura de la solapa" -#: ../gtk/gtknotebook.c:900 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "Tamaño de la curvatura de la solapa" -#: ../gtk/gtknotebook.c:916 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "Espaciado de las flechas" -#: ../gtk/gtknotebook.c:917 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "Espaciado del desplazamiento de las flechas" -#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:319 -#: ../gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtknumerableicon.c:652 +#, fuzzy +#| msgid "Icon set" +msgid "Icon's count" +msgstr "Conjunto de iconos" + +#: ../gtk/gtknumerableicon.c:653 +#, fuzzy +#| msgid "The index of the current page" +msgid "The count of the emblem currently displayed" +msgstr "El índice de la página actual" + +#: ../gtk/gtknumerableicon.c:659 +#| msgid "Icon Name" +msgid "Icon's label" +msgstr "Etiqueta del icono" + +#: ../gtk/gtknumerableicon.c:660 +#, fuzzy +#| msgid "The stock icon displayed on the item" +msgid "The label to be displayed over the icon" +msgstr "El icono de inventario mostrado en el elemento" + +#: ../gtk/gtknumerableicon.c:666 +#, fuzzy +#| msgid "Style context" +msgid "Icon's style context" +msgstr "Estilo del contexto" + +#: ../gtk/gtknumerableicon.c:667 +msgid "The style context to theme the icon appearance" +msgstr "" + +#: ../gtk/gtknumerableicon.c:673 +#| msgid "Background color" +msgid "Background icon" +msgstr "Icono de fondo" + +#: ../gtk/gtknumerableicon.c:674 +msgid "The icon for the number emblem background" +msgstr "" + +#: ../gtk/gtknumerableicon.c:680 +#| msgid "Background color name" +msgid "Background icon name" +msgstr "Nombre del icono de fondo" + +#: ../gtk/gtknumerableicon.c:681 +#, fuzzy +#| msgid "The icon name to use for the printer" +msgid "The icon name for the number emblem background" +msgstr "El nombre del icono a usar para la impresora" + +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "Orientación" @@ -3977,74 +4363,74 @@ msgstr "Orientación" msgid "The orientation of the orientable" msgstr "La orientación del orientable" -#: ../gtk/gtkpaned.c:328 +#: ../gtk/gtkpaned.c:327 msgid "" "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "" "Posición del separador cada hoja de la ventana en píxeles (0 significa todo " "el trayecto hacia la izquierda/arriba) " -#: ../gtk/gtkpaned.c:337 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "Posición establecida" -#: ../gtk/gtkpaned.c:338 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "TRUE si debe usarse la propiedad «Posición»" -#: ../gtk/gtkpaned.c:344 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "Tamaño del tirador" -#: ../gtk/gtkpaned.c:345 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "Anchura del tirador" -#: ../gtk/gtkpaned.c:361 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "Posición mínima" -#: ../gtk/gtkpaned.c:362 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "El valor más pequeño posible para la propiedad \"position\"" -#: ../gtk/gtkpaned.c:379 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "Posición máxima" -#: ../gtk/gtkpaned.c:380 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "El valor más grande posible para la propiedad \"posicion\"" -#: ../gtk/gtkpaned.c:397 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "Redimensionar" -#: ../gtk/gtkpaned.c:398 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "Si es TRUE, el hijo se expande y encoge junto con el widget dividido" -#: ../gtk/gtkpaned.c:413 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "Encoger" -#: ../gtk/gtkpaned.c:414 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "Si es TRUE, el hijo puede hacerse más pequeño que sus requisitos" -#: ../gtk/gtkplug.c:172 ../gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "Empotrado" -#: ../gtk/gtkplug.c:173 +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "Indica si el complemento está empotrado" -#: ../gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "Ventana del socket" -#: ../gtk/gtkplug.c:188 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "La ventana del socket en la que el enchufe está empotrado" @@ -4136,36 +4522,36 @@ msgstr "Opciones de origen" msgid "The PrinterOption backing this widget" msgstr "La PrinterOption que hay por detrás de este widget" -#: ../gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:127 msgid "Title of the print job" msgstr "El título de la tarea de impresión" -#: ../gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:135 msgid "Printer" msgstr "Impresora" -#: ../gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:136 msgid "Printer to print the job to" msgstr "Impresora donde imprimir la tarea" -#: ../gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:144 msgid "Settings" msgstr "Configuración" -#: ../gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:145 msgid "Printer settings" msgstr "Configuración de la impresora" -#: ../gtk/gtkprintjob.c:142 ../gtk/gtkprintjob.c:143 +#: ../gtk/gtkprintjob.c:153 ../gtk/gtkprintjob.c:154 #: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Configuración de la página" -#: ../gtk/gtkprintjob.c:151 ../gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:162 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "Seguimiento del estado de impresión" -#: ../gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:163 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." @@ -4174,51 +4560,51 @@ msgstr "" "estado después de que los datos de impresión se hayan enviado a la impresora " "o servidor de impresoras." -#: ../gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "Configuración de la página predeterminada" -#: ../gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "La GtkPageSetup usada por omisión" -#: ../gtk/gtkprintoperation.c:1024 ../gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Configuración de impresión" -#: ../gtk/gtkprintoperation.c:1025 ../gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "Los GtkPrintSettings usados para inicializar el diálogo" -#: ../gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "Nombre de la tarea" -#: ../gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "Una cadena usada para identificar la tarea de impresión." -#: ../gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "Número de páginas" -#: ../gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "El número de páginas en el documento." -#: ../gtk/gtkprintoperation.c:1090 ../gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Página actual" -#: ../gtk/gtkprintoperation.c:1091 ../gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "La página actual en el documento" -#: ../gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "Usar página completa" -#: ../gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" @@ -4226,7 +4612,7 @@ msgstr "" "TRUE si el origen del contexto debe estar en la esquina de la página y no en " "la esquina del área de donde puede aparecer la imagen" -#: ../gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4235,89 +4621,89 @@ msgstr "" "impresión después de que los datos de impresión se hayan enviado al servidor " "de impresoras o a la impresora." -#: ../gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "Unidad" -#: ../gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "La unidad en la que se pueden medir las distancias en el contexto" -#: ../gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "Mostrar diálogo" -#: ../gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "TRUE si se muestra un diálogo de progreso durante la impresión." -#: ../gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "Permitir asíncrono" -#: ../gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "TRUE si el proceso de impresión puede ejecutarse asíncronamente." -#: ../gtk/gtkprintoperation.c:1216 ../gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "Nombre de archivo para exportar" -#: ../gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "Estado" -#: ../gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "El estado de la operación de impresión" -#: ../gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "Cadena de estado" -#: ../gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "Una descripción leíble por humanos del estado" -#: ../gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "Etiqueta de solapa personalizada" -#: ../gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "Etiqueta para la solapa que contiene widgets personalizados." -#: ../gtk/gtkprintoperation.c:1287 ../gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:341 msgid "Support Selection" msgstr "Soportar selección" -#: ../gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." msgstr "TRUE si la operación de impresión soporta impresión de la selección." -#: ../gtk/gtkprintoperation.c:1304 ../gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Tiene selección" -#: ../gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "TRUE si existe una selección." -#: ../gtk/gtkprintoperation.c:1320 ../gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:357 msgid "Embed Page Setup" msgstr "Configuración de página empotrada" -#: ../gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "" "TRUE si los combos de la configuración de página están empotrados en " "GtkPrintDialog" -#: ../gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "Número de páginas para imprimir" -#: ../gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "El número de páginas que se imprimirán." @@ -4376,15 +4762,15 @@ msgstr "" msgid "Text to be displayed in the progress bar" msgstr "Texto que se mostrará en la barra de progreso" -#: ../gtk/gtkprogressbar.c:185 +#: ../gtk/gtkprogressbar.c:195 msgid "Show text" msgstr "Mostrar texto" -#: ../gtk/gtkprogressbar.c:186 +#: ../gtk/gtkprogressbar.c:196 msgid "Whether the progress is shown as text." msgstr "Indica si el progreso se muestra como texto." -#: ../gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:218 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." @@ -4392,51 +4778,51 @@ msgstr "" "El lugar preferido para la elipsis de la cadena, si la barra de progreso no " "tiene suficiente espacio para mostrar la cadena completa." -#: ../gtk/gtkprogressbar.c:215 +#: ../gtk/gtkprogressbar.c:225 msgid "X spacing" msgstr "Espaciado X" -#: ../gtk/gtkprogressbar.c:216 +#: ../gtk/gtkprogressbar.c:226 msgid "Extra spacing applied to the width of a progress bar." msgstr "Espacio extra aplicado a la anchura de una barra de progreso." -#: ../gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:231 msgid "Y spacing" msgstr "Espaciado Y" -#: ../gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:232 msgid "Extra spacing applied to the height of a progress bar." msgstr "Espacio adicional aplicado a la altura >de una barra de progreso." -#: ../gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:245 msgid "Minimum horizontal bar width" msgstr "Anchura mínima de la barra horizontal" -#: ../gtk/gtkprogressbar.c:236 +#: ../gtk/gtkprogressbar.c:246 msgid "The minimum horizontal width of the progress bar" msgstr "La anchura mínima horizontal de la barra de progreso" -#: ../gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:258 msgid "Minimum horizontal bar height" msgstr "Altura mínima de la barra horizontal" -#: ../gtk/gtkprogressbar.c:249 +#: ../gtk/gtkprogressbar.c:259 msgid "Minimum horizontal height of the progress bar" msgstr "La altura mínima horizontal de la barra de progreso" -#: ../gtk/gtkprogressbar.c:261 +#: ../gtk/gtkprogressbar.c:271 msgid "Minimum vertical bar width" msgstr "Anchura mínima horizontal de la barra" -#: ../gtk/gtkprogressbar.c:262 +#: ../gtk/gtkprogressbar.c:272 msgid "The minimum vertical width of the progress bar" msgstr "La anchura mínima vertical de la barra de progreso" -#: ../gtk/gtkprogressbar.c:274 +#: ../gtk/gtkprogressbar.c:284 msgid "Minimum vertical bar height" msgstr "Altura mínima vertical de la barra" -#: ../gtk/gtkprogressbar.c:275 +#: ../gtk/gtkprogressbar.c:285 msgid "The minimum vertical height of the progress bar" msgstr "La altura mínima vertical de la barra de progreso" @@ -4485,29 +4871,21 @@ msgstr "El elemento del menú de radio a cuyo grupo pertenece este widget." msgid "The radio tool button whose group this button belongs to." msgstr "La herramienta de botón de radio a cuyo grupo pertenece este widget." -#: ../gtk/gtkrange.c:423 -msgid "Update policy" -msgstr "Política de actualización" - -#: ../gtk/gtkrange.c:424 -msgid "How the range should be updated on the screen" -msgstr "Cómo se debe actualizar el rango en la pantalla" - -#: ../gtk/gtkrange.c:433 +#: ../gtk/gtkrange.c:416 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "El GtkAdjustment que contiene el valor actual de este objeto de rango" -#: ../gtk/gtkrange.c:441 +#: ../gtk/gtkrange.c:424 msgid "Invert direction slider moves to increase range value" msgstr "" "Invierte la dirección en que se mueve el deslizador para incrementar el " "valor del rango" -#: ../gtk/gtkrange.c:448 +#: ../gtk/gtkrange.c:431 msgid "Lower stepper sensitivity" msgstr "Sensibilidad de la flecha inferior" -#: ../gtk/gtkrange.c:449 +#: ../gtk/gtkrange.c:432 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" @@ -4515,11 +4893,11 @@ msgstr "" "La directiva de sensibilidad del botón de desplazamiento que apunta al lado " "más bajo del ajuste" -#: ../gtk/gtkrange.c:457 +#: ../gtk/gtkrange.c:440 msgid "Upper stepper sensitivity" msgstr "Sensibilidad de la flecha superior" -#: ../gtk/gtkrange.c:458 +#: ../gtk/gtkrange.c:441 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" @@ -4527,91 +4905,91 @@ msgstr "" "La directiva de sensibilidad del botón de flecha que apunta al lado más alto " "del ajuste" -#: ../gtk/gtkrange.c:475 +#: ../gtk/gtkrange.c:458 msgid "Show Fill Level" msgstr "Mostrar nivel de relleno" -#: ../gtk/gtkrange.c:476 +#: ../gtk/gtkrange.c:459 msgid "Whether to display a fill level indicator graphics on trough." msgstr "" "Indica si se debe mostrar el indicador de nivel de llenado en los gráficos " "mientras se llena." -#: ../gtk/gtkrange.c:492 +#: ../gtk/gtkrange.c:475 msgid "Restrict to Fill Level" msgstr "Restringir al nivel de llenado" -#: ../gtk/gtkrange.c:493 +#: ../gtk/gtkrange.c:476 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Indica si se debe restringir el borde superior al nivel de llenado." -#: ../gtk/gtkrange.c:508 +#: ../gtk/gtkrange.c:491 msgid "Fill Level" msgstr "Nivel de llenado" -#: ../gtk/gtkrange.c:509 +#: ../gtk/gtkrange.c:492 msgid "The fill level." msgstr "El nivel de llenado." -#: ../gtk/gtkrange.c:517 ../gtk/gtkswitch.c:773 +#: ../gtk/gtkrange.c:500 ../gtk/gtkswitch.c:777 msgid "Slider Width" msgstr "Anchura del deslizador" -#: ../gtk/gtkrange.c:518 +#: ../gtk/gtkrange.c:501 msgid "Width of scrollbar or scale thumb" msgstr "Anchura de la barra de desplazamiento o escala de miniatura" -#: ../gtk/gtkrange.c:525 +#: ../gtk/gtkrange.c:508 msgid "Trough Border" msgstr "Borde del carril" -#: ../gtk/gtkrange.c:526 +#: ../gtk/gtkrange.c:509 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "" "Espaciado entre la marcador/flechas de desplazamiento y el bisel exterior " "del carril" -#: ../gtk/gtkrange.c:533 +#: ../gtk/gtkrange.c:516 msgid "Stepper Size" msgstr "Tamaño del botón de flecha de desplazamiento" -#: ../gtk/gtkrange.c:534 +#: ../gtk/gtkrange.c:517 msgid "Length of step buttons at ends" msgstr "Longitud de los botones de flecha en los extremos" -#: ../gtk/gtkrange.c:549 +#: ../gtk/gtkrange.c:532 msgid "Stepper Spacing" msgstr "Espaciado de los botones de flecha de desplazamiento" -#: ../gtk/gtkrange.c:550 +#: ../gtk/gtkrange.c:533 msgid "Spacing between step buttons and thumb" msgstr "Espaciado entre los botones de flecha de desplazamiento y el marcador" -#: ../gtk/gtkrange.c:557 +#: ../gtk/gtkrange.c:540 msgid "Arrow X Displacement" msgstr "Desplazamiento de la flecha X" -#: ../gtk/gtkrange.c:558 +#: ../gtk/gtkrange.c:541 msgid "" "How far in the x direction to move the arrow when the button is depressed" msgstr "" "Distancia en la dirección «X» para mover la flecha cuando se suelta el botón " -#: ../gtk/gtkrange.c:565 +#: ../gtk/gtkrange.c:548 msgid "Arrow Y Displacement" msgstr "Desplazamiento de la flecha Y" -#: ../gtk/gtkrange.c:566 +#: ../gtk/gtkrange.c:549 msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "" "Distancia en la dirección «Y» para mover la flecha cuando se suelta el botón " -#: ../gtk/gtkrange.c:584 +#: ../gtk/gtkrange.c:567 msgid "Trough Under Steppers" msgstr "Carril bajo las flechas de deslizamiento" -#: ../gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:568 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" @@ -4619,11 +4997,11 @@ msgstr "" "Indica si se debe dibujar para la longitud completa del rango o excluir las " "flechas de desplazamiento y el espaciado" -#: ../gtk/gtkrange.c:598 +#: ../gtk/gtkrange.c:581 msgid "Arrow scaling" msgstr "Escalado de flechas" -#: ../gtk/gtkrange.c:599 +#: ../gtk/gtkrange.c:582 msgid "Arrow scaling with regard to scroll button size" msgstr "" "Escalado de flechas en consideración con el tamaño del botón de " @@ -4719,134 +5097,170 @@ msgstr "La ruta completa al archivo a usar para almacenar y leer la lista" msgid "The size of the recently used resources list" msgstr "El tamaño de la lista de recursos usados recientemente" -#: ../gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "El valor de la escala" -#: ../gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "El tamaño del icono" -#: ../gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:237 msgid "" "The GtkAdjustment that contains the current value of this scale button object" msgstr "" "El GtkAdjustment que contiene el valor actual de este objeto de botón de " "escala" -#: ../gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "Iconos" -#: ../gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "Lista de nombres de iconos" -#: ../gtk/gtkscale.c:250 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "El número de lugares decimales que se mostrarán en el valor" -#: ../gtk/gtkscale.c:259 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Dibujar valor" -#: ../gtk/gtkscale.c:260 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "" "Indica si el valor actual se muestra como una cadena contigua al deslizador" -#: ../gtk/gtkscale.c:267 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Posición del valor" -#: ../gtk/gtkscale.c:268 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "La posición en que se muestra el valor actual" -#: ../gtk/gtkscale.c:275 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Longitud del deslizador" -#: ../gtk/gtkscale.c:276 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Longitud de la escala del deslizador" -#: ../gtk/gtkscale.c:284 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Espaciado del valor" -#: ../gtk/gtkscale.c:285 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "Espacio entre el texto del valor y el área del deslizador/carril" -#: ../gtk/gtkscrollbar.c:75 +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "Ajuste horizontal" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "Ajuste vertical" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" + +#: ../gtk/gtkscrollable.c:120 +#, fuzzy +#| msgid "Horizontal Scrollbar Policy" +msgid "Horizontal Scrollable Policy" +msgstr "Directiva de la barra de desplazamiento horizontal" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "" + +#: ../gtk/gtkscrollable.c:136 +#, fuzzy +#| msgid "Vertical Scrollbar Policy" +msgid "Vertical Scrollable Policy" +msgstr "Directiva de la barra de desplazamiento vertical" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Longitud mínima del deslizador" -#: ../gtk/gtkscrollbar.c:76 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Longitud mínima de deslizador de la barras de desplazamiento" -#: ../gtk/gtkscrollbar.c:84 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Tamaño del deslizador fijo" -#: ../gtk/gtkscrollbar.c:85 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "" "No cambiar el tamaño del deslizador, sólo bloquearlo a la longitud mínima" -#: ../gtk/gtkscrollbar.c:106 +#: ../gtk/gtkscrollbar.c:103 msgid "" "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "" "Muestra un segundo botón con una flecha de retroceso en el extremo opuesto " "de la barra de desplazamiento" -#: ../gtk/gtkscrollbar.c:113 +#: ../gtk/gtkscrollbar.c:110 msgid "" "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "" "Muestra un botón secundario con flecha de avance en el extremo opuesto de la " "barra de desplazamiento" -#: ../gtk/gtkscrolledwindow.c:295 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "Ajuste horizontal" -#: ../gtk/gtkscrolledwindow.c:296 +#: ../gtk/gtkscrolledwindow.c:297 msgid "The GtkAdjustment for the horizontal position" msgstr "El ajuste GtkAdjustment para la posición horizontal" -#: ../gtk/gtkscrolledwindow.c:302 +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "Ajuste vertical" -#: ../gtk/gtkscrolledwindow.c:303 +#: ../gtk/gtkscrolledwindow.c:304 msgid "The GtkAdjustment for the vertical position" msgstr "El ajuste GtkAdjustment para la posición vertical" -#: ../gtk/gtkscrolledwindow.c:309 +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "Directiva de la barra de desplazamiento horizontal" -#: ../gtk/gtkscrolledwindow.c:310 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "Cuando mostrar la barra de desplazamiento horizontal" -#: ../gtk/gtkscrolledwindow.c:317 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "Directiva de la barra de desplazamiento vertical" -#: ../gtk/gtkscrolledwindow.c:318 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "Cuando mostrar la barra de desplazamiento vertical" -#: ../gtk/gtkscrolledwindow.c:326 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "Colocación de la ventana" -#: ../gtk/gtkscrolledwindow.c:327 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -4854,11 +5268,11 @@ msgstr "" "Dónde se colocan los contenidos respecto a las barras de desplazamiento. " "Esta propiedad sólo tiene efecto si \"window-placement-set\" es TRUE." -#: ../gtk/gtkscrolledwindow.c:344 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "Establece la colocación de la ventana" -#: ../gtk/gtkscrolledwindow.c:345 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -4866,46 +5280,46 @@ msgstr "" "Indica si debe usarse \"window-placement\" para determinar el lugar del " "contenido respecto a las barras de desplazamiento." -#: ../gtk/gtkscrolledwindow.c:351 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "Tipo de sombra" -#: ../gtk/gtkscrolledwindow.c:352 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "Estilo de bisel alrededor de los contenidos" -#: ../gtk/gtkscrolledwindow.c:366 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "Barras de desplazamiento entre biseles" -#: ../gtk/gtkscrolledwindow.c:367 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "" "Ubicar barras de desplazamiento entre el bisel de la ventana desplazada" -#: ../gtk/gtkscrolledwindow.c:373 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "Espaciado de la barra de desplazamiento" -#: ../gtk/gtkscrolledwindow.c:374 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "" "Número de píxeles entre las barras de desplazamiento y la ventana enrollada" -#: ../gtk/gtkscrolledwindow.c:383 +#: ../gtk/gtkscrolledwindow.c:391 msgid "Minimum Content Width" msgstr "Anchura mínima del contenido" -#: ../gtk/gtkscrolledwindow.c:384 +#: ../gtk/gtkscrolledwindow.c:392 msgid "The minimum width that the scrolled window will allocate to its content" msgstr "" "La anchura mínima que la ventana desplazada reservará para su contenido" -#: ../gtk/gtkscrolledwindow.c:390 +#: ../gtk/gtkscrolledwindow.c:406 msgid "Minimum Content Height" msgstr "Altura mínima del contenido" -#: ../gtk/gtkscrolledwindow.c:391 +#: ../gtk/gtkscrolledwindow.c:407 msgid "" "The minimum height that the scrolled window will allocate to its content" msgstr "La altura mínima que la ventana desplazada reservará para su contenido" @@ -4918,11 +5332,11 @@ msgstr "Dibujar" msgid "Whether the separator is drawn, or just blank" msgstr "Indica si el separador se dibuja, o sólo se deja en blanco" -#: ../gtk/gtksettings.c:277 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Tiempo del doble pulsación" -#: ../gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4930,11 +5344,11 @@ msgstr "" "Tiempo máximo permitido entre dos pulsaciones para ser considerados como una " "pulsación doble (en milisegundos)" -#: ../gtk/gtksettings.c:285 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Distancia de la pulsación doble" -#: ../gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -4942,35 +5356,35 @@ msgstr "" "Distancia máxima permitida entre dos pulsaciones para ser considerados como " "una pulsación doble (en píxeles)" -#: ../gtk/gtksettings.c:302 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Parpadeo del cursor" -#: ../gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Indica si el cursor debe parpadear" -#: ../gtk/gtksettings.c:310 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Tiempo de parpadeo del cursor" -#: ../gtk/gtksettings.c:311 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Longitud del ciclo de parpadeo del cursor, en milisegundos" -#: ../gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Intervalo de parpadeo del cursor" -#: ../gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "Tiempo tras el que el cursor para de parpadear, en segundos" -#: ../gtk/gtksettings.c:338 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Dividir cursor" -#: ../gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -4978,161 +5392,161 @@ msgstr "" "Indica si deben mostrarse dos cursores para el texto mezclado de izquierda-a-" "derecha y derecha-a-izquierda" -#: ../gtk/gtksettings.c:346 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Nombre del tema" -#: ../gtk/gtksettings.c:347 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Nombre del archivo RC de tema que cargar" -#: ../gtk/gtksettings.c:355 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Nombre del tema de iconos" -#: ../gtk/gtksettings.c:356 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Nombre del tema de iconos que utilizar" -#: ../gtk/gtksettings.c:364 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Nombre del tema de iconos de resguardo" -#: ../gtk/gtksettings.c:365 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Nombre del tema de iconos que utilizar como resguardo" -#: ../gtk/gtksettings.c:373 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Nombre del tema de teclas" -#: ../gtk/gtksettings.c:374 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Nombre del archivo RC de tema de teclas que cargar" -#: ../gtk/gtksettings.c:382 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Acelerador de la barra de menús" -#: ../gtk/gtksettings.c:383 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Combinación de teclas para activar la barra de menús" -#: ../gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Umbral del arrastre" -#: ../gtk/gtksettings.c:392 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "" "Número de píxeles que el cursor puede mover antes de iniciar el arrastre" -#: ../gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Nombre de la tipografía" -#: ../gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Nombre de la tipografía predeterminada a utilizar" -#: ../gtk/gtksettings.c:423 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Tamaños de los iconos" -#: ../gtk/gtksettings.c:424 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "Lista de tamaños de los iconos (gtk-menu=16,16:gtk-button=20,20..." -#: ../gtk/gtksettings.c:432 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "Módulos GTK" -#: ../gtk/gtksettings.c:433 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "Lista de módulos GTK activos actualmente" -#: ../gtk/gtksettings.c:442 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Suavizado Xft" -#: ../gtk/gtksettings.c:443 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Indica si se deben suavizar los bordes de las tipografías Xft; 0=no,1=sí, " "-1=predeterminado" -#: ../gtk/gtksettings.c:452 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Sugerencias Xft" -#: ../gtk/gtksettings.c:453 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Indica si se deben usar las sugerencias de las tipografías Xft; 0=no, 1 =sí, " "-1=predeterminado" -#: ../gtk/gtksettings.c:462 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Estilo de sugerencias Xft" -#: ../gtk/gtksettings.c:463 +#: ../gtk/gtksettings.c:485 msgid "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "Qué grado de sugerencias usar: ninguno, ligero, medio o completo" -#: ../gtk/gtksettings.c:472 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: ../gtk/gtksettings.c:473 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Tipo de suavizado de subpíxel: ninguno, rgb, bgr, vrgb, vbgr" -#: ../gtk/gtksettings.c:482 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "PPP Xft (DPI)" -#: ../gtk/gtksettings.c:483 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "" "Resolución para Xft, en 1024 * puntos/pulgada. -1 para usar el valor " "predeterminado" -#: ../gtk/gtksettings.c:492 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Nombre del tema del cursor" -#: ../gtk/gtksettings.c:493 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "" "Nombre del tema de cursor que utilizar, o NULL para usar el tema " "predeterminado" -#: ../gtk/gtksettings.c:501 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Tamaño del tema del cursor" -#: ../gtk/gtksettings.c:502 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "" "Tamaño que se va a usar para los cursores, o 0 para usar el tamaño " "predeterminado" -#: ../gtk/gtksettings.c:512 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Orden de los botones alternativo" -#: ../gtk/gtksettings.c:513 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "" "Indica si los botones en los diálogos deben usar un orden de botones " "alternativo" -#: ../gtk/gtksettings.c:530 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Dirección alternativa del indicador de ordenamiento" -#: ../gtk/gtksettings.c:531 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -5141,11 +5555,11 @@ msgstr "" "vista de árbol está invertida en comparación con la predeterminada (donde " "abajo significa ascendente)" -#: ../gtk/gtksettings.c:539 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Mostrar el menú de métodos de entrada" -#: ../gtk/gtksettings.c:540 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" @@ -5153,11 +5567,11 @@ msgstr "" "Indica si los menús de contexto y las vistas de texto deben ofrecer cambiar " "el método de entrada" -#: ../gtk/gtksettings.c:548 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Mostrar el menú «Insertar carácter de control Unicode»" -#: ../gtk/gtksettings.c:549 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" @@ -5165,254 +5579,254 @@ msgstr "" "Indica si los menús de contexto de las estradas y las vistas de texto deben " "ofrecer insertar caracteres de control" -#: ../gtk/gtksettings.c:557 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Tiempo de expiración de inicio" -#: ../gtk/gtksettings.c:558 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Valor de inicio para las expiraciones, cuando se pulsa el botón" -#: ../gtk/gtksettings.c:567 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Expiración de repetición" -#: ../gtk/gtksettings.c:568 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Valor de repetición para expiraciones, cuando el botón se pulsa" -#: ../gtk/gtksettings.c:577 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Expiración del expansor" -#: ../gtk/gtksettings.c:578 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "" "Valor de expansión para las expiraciones, cuando un widget está expandiendo " "una región nueva" -#: ../gtk/gtksettings.c:613 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Esquema de color" -#: ../gtk/gtksettings.c:614 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "Una paleta de colores con nombre para usar en los temas" -#: ../gtk/gtksettings.c:623 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Activar animaciones" -#: ../gtk/gtksettings.c:624 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Indica si se activan las animaciones para todo el toolkit." -#: ../gtk/gtksettings.c:642 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Activar modo pantalla táctil" -#: ../gtk/gtksettings.c:643 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "" "Cuando esté a TRUE, no hay eventos de notificación de movimiento entregados " "en esta pantalla" -#: ../gtk/gtksettings.c:660 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tiempo de expiración del consejo" -#: ../gtk/gtksettings.c:661 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Tiempo de expiración antes de que se muestre el consejo" -#: ../gtk/gtksettings.c:686 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Tiempo de los consejos de navegación" -#: ../gtk/gtksettings.c:687 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "" "Tiempo de expiración antes de que se muestre el consejo cuando el modo de " "navegación está activado" -#: ../gtk/gtksettings.c:708 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Tiempo de los consejos en modo navegación" -#: ../gtk/gtksettings.c:709 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "" "Tiempo de expiración después del cual se desactiva el modo de navegación" -#: ../gtk/gtksettings.c:728 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Sólo cursor para navegar con teclas" -#: ../gtk/gtksettings.c:729 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "" "Cuando sea TRUE, sólo hay teclas de cursos disponibles para navegar por los " "widgets" -#: ../gtk/gtksettings.c:746 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Saltar al navegar con el teclado" -#: ../gtk/gtksettings.c:747 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "" "Indica si se ha de saltar alrededor cuando se navegue por los widgets con el " "teclado" -#: ../gtk/gtksettings.c:767 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Campana de error" -#: ../gtk/gtksettings.c:768 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "" "Cuando sea TRUE, la navegación con el teclado y otros errores causarán un bip" -#: ../gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Hash del color" -#: ../gtk/gtksettings.c:786 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "Una representación en tabla hash del esquema de color." -#: ../gtk/gtksettings.c:794 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Backend predeterminado del selector de archivos" -#: ../gtk/gtksettings.c:795 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Nombre del backend predeterminado del GtkFileChooser" -#: ../gtk/gtksettings.c:812 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Backend predeterminado de impresión" -#: ../gtk/gtksettings.c:813 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "Lista de backends GtkPrintBackend para usar por omisión" -#: ../gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "" "Comando predeterminado que ejecutar al mostrar una vista previa de impresión" -#: ../gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Comando que ejecutar al mostrar una vista previa de impresión" -#: ../gtk/gtksettings.c:853 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Activar mnemónicos" -#: ../gtk/gtksettings.c:854 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Indica si las etiquetas deben tener mnemónicos" -#: ../gtk/gtksettings.c:870 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Activar aceleradores" -#: ../gtk/gtksettings.c:871 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Indica si los elementos del menú deben tener aceleradores" -#: ../gtk/gtksettings.c:888 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Límite de archivos recientes" -#: ../gtk/gtksettings.c:889 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Número de archivos usados recientemente" -#: ../gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Módulo de método de entrada predeterminado" -#: ../gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "Qué módulo de método de entrada se debe usar de forma predeterminada" -#: ../gtk/gtksettings.c:926 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Antigüedad máxima de los archivos recientes" -#: ../gtk/gtksettings.c:927 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "Máxima antigüedad para los archivos recientemente usados, en días" -#: ../gtk/gtksettings.c:936 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Configuración de la marca de tiempo de fontconfig" -#: ../gtk/gtksettings.c:937 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "Marca de tiempo de la configuración actual de fontconfig" -#: ../gtk/gtksettings.c:959 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Nombre del tema de sonido" -#: ../gtk/gtksettings.c:960 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "Nombre del tema de sonido XDG" #. Translators: this means sounds that are played as feedback to user input -#: ../gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Contexto de entrada audible" -#: ../gtk/gtksettings.c:983 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "" "Indica si se deben reproducir eventos como respuesta a las entradas del " "usuario" -#: ../gtk/gtksettings.c:1004 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Activar eventos de sonido" -#: ../gtk/gtksettings.c:1005 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Indica si se debe reproducir cualquier evento de sonido" -#: ../gtk/gtksettings.c:1020 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Activar consejos" -#: ../gtk/gtksettings.c:1021 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Indica si se deben mostrar los consejos en los widgets" -#: ../gtk/gtksettings.c:1034 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Estilo de la barra de herramientas" -#: ../gtk/gtksettings.c:1035 +#: ../gtk/gtksettings.c:1057 msgid "" "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "" "Indica si las barras de herramientas predeterminadas tienen sólo texto, " "texto e iconos, sólo iconos, etc." -#: ../gtk/gtksettings.c:1049 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Tamaño del icono de la barra de herramientas" -#: ../gtk/gtksettings.c:1050 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "El tamaño de los iconos el las barras de herramientas." -#: ../gtk/gtksettings.c:1067 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Mnemónicos automáticos" -#: ../gtk/gtksettings.c:1068 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." @@ -5420,63 +5834,63 @@ msgstr "" "Indica si se deben mostrar y ocultar automáticamente los mnemónicos cuando " "el usuario pulsa el activador de mnemónicos." -#: ../gtk/gtksettings.c:1093 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "La aplicación prefiere un tema oscuro" -#: ../gtk/gtksettings.c:1094 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "Indica si la aplicación prefiere un tema oscuro." -#: ../gtk/gtksettings.c:1109 +#: ../gtk/gtksettings.c:1131 msgid "Show button images" msgstr "Mostrar imágenes en los botones" -#: ../gtk/gtksettings.c:1110 +#: ../gtk/gtksettings.c:1132 msgid "Whether images should be shown on buttons" msgstr "Indica si se deben mostrar las imágenes en los botones" -#: ../gtk/gtksettings.c:1118 ../gtk/gtksettings.c:1212 +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 msgid "Select on focus" msgstr "Seleccionar al enfocar" -#: ../gtk/gtksettings.c:1119 +#: ../gtk/gtksettings.c:1141 msgid "Whether to select the contents of an entry when it is focused" msgstr "" "Indica si se deben seleccionar los contenidos de una entrada cuando obtiene " "el foco" -#: ../gtk/gtksettings.c:1136 +#: ../gtk/gtksettings.c:1158 msgid "Password Hint Timeout" msgstr "Tiempo de expiración del hint de contraseña" -#: ../gtk/gtksettings.c:1137 +#: ../gtk/gtksettings.c:1159 msgid "How long to show the last input character in hidden entries" msgstr "" "Indica durante cuánto tiempo mostrar el último carácter en las entradas " "ocultas" -#: ../gtk/gtksettings.c:1146 +#: ../gtk/gtksettings.c:1168 msgid "Show menu images" msgstr "Mostrar imágenes del menú" -#: ../gtk/gtksettings.c:1147 +#: ../gtk/gtksettings.c:1169 msgid "Whether images should be shown in menus" msgstr "Indica si deben mostrarse o no las imágenes en los menús" -#: ../gtk/gtksettings.c:1155 +#: ../gtk/gtksettings.c:1177 msgid "Delay before drop down menus appear" msgstr "Retardo antes de que aparezcan los menús desplegables" -#: ../gtk/gtksettings.c:1156 +#: ../gtk/gtksettings.c:1178 msgid "Delay before the submenus of a menu bar appear" msgstr "Retardo antes de que aparezcan los submenús de una barra de menús" -#: ../gtk/gtksettings.c:1173 +#: ../gtk/gtksettings.c:1195 msgid "Scrolled Window Placement" msgstr "Colocación de la ventana donde se ha desplazado" -#: ../gtk/gtksettings.c:1174 +#: ../gtk/gtksettings.c:1196 msgid "" "Where the contents of scrolled windows are located with respect to the " "scrollbars, if not overridden by the scrolled window's own placement." @@ -5485,33 +5899,33 @@ msgstr "" "respecto a las barras de desplazamiento, si no toma precedencia por el " "propio emplazamiento de la ventana donde se hizo scroll." -#: ../gtk/gtksettings.c:1183 +#: ../gtk/gtksettings.c:1205 msgid "Can change accelerators" msgstr "Puede cambiar aceleradores" -#: ../gtk/gtksettings.c:1184 +#: ../gtk/gtksettings.c:1206 msgid "" "Whether menu accelerators can be changed by pressing a key over the menu item" msgstr "" "Indica si los aceleradores del menú pueden cambiarse pulsando una tecla " "sobre el elemento del menú" -#: ../gtk/gtksettings.c:1192 +#: ../gtk/gtksettings.c:1214 msgid "Delay before submenus appear" msgstr "Retraso antes de que aparezcan los submenús" -#: ../gtk/gtksettings.c:1193 +#: ../gtk/gtksettings.c:1215 msgid "" "Minimum time the pointer must stay over a menu item before the submenu appear" msgstr "" "Tiempo mínimo en que el puntero debe permanecer sobre un elemento de menú " "antes de que el submenú aparezca" -#: ../gtk/gtksettings.c:1202 +#: ../gtk/gtksettings.c:1224 msgid "Delay before hiding a submenu" msgstr "Retraso antes de ocultar un submenú" -#: ../gtk/gtksettings.c:1203 +#: ../gtk/gtksettings.c:1225 msgid "" "The time before hiding a submenu when the pointer is moving towards the " "submenu" @@ -5519,41 +5933,41 @@ msgstr "" "El tiempo antes de ocultar un submenú cuando el puntero se este moviendo " "hacia el submenú" -#: ../gtk/gtksettings.c:1213 +#: ../gtk/gtksettings.c:1235 msgid "Whether to select the contents of a selectable label when it is focused" msgstr "" "Indica si se debe seleccionar el contenido de una etiqueta seleccionable " "cuando obtiene el foco" -#: ../gtk/gtksettings.c:1221 +#: ../gtk/gtksettings.c:1243 msgid "Custom palette" msgstr "Paleta personalizada" -#: ../gtk/gtksettings.c:1222 +#: ../gtk/gtksettings.c:1244 msgid "Palette to use in the color selector" msgstr "Paleta que se usará en el selector de colores" -#: ../gtk/gtksettings.c:1230 +#: ../gtk/gtksettings.c:1252 msgid "IM Preedit style" msgstr "Estilo de preedición del ME" -#: ../gtk/gtksettings.c:1231 +#: ../gtk/gtksettings.c:1253 msgid "How to draw the input method preedit string" msgstr "Cómo dibujar la cadena del método de entrada de preedición" -#: ../gtk/gtksettings.c:1240 +#: ../gtk/gtksettings.c:1262 msgid "IM Status style" msgstr "Estilo del estado ME" -#: ../gtk/gtksettings.c:1241 +#: ../gtk/gtksettings.c:1263 msgid "How to draw the input method statusbar" msgstr "Cómo dibujar el método de entrada de la barra de estado" -#: ../gtk/gtksizegroup.c:350 +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "Modo" -#: ../gtk/gtksizegroup.c:351 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" @@ -5561,26 +5975,26 @@ msgstr "" "Las direcciones en las cuales el tamaño del grupo afecta a los tamaños " "solicitados de sus widgets componentes" -#: ../gtk/gtksizegroup.c:367 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "Ignorar ocultas" -#: ../gtk/gtksizegroup.c:368 +#: ../gtk/gtksizegroup.c:369 msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "" "Si es TRUE, los widgets no mapeados se ignoran al determinar el tamaño del " "grupo" -#: ../gtk/gtkspinbutton.c:238 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "Tasa de subida" -#: ../gtk/gtkspinbutton.c:258 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "Ajustarse a los ticks" -#: ../gtk/gtkspinbutton.c:259 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" @@ -5588,130 +6002,126 @@ msgstr "" "Indica si los valores erróneos se cambian por el valor más cercano de un " "botón incrementable" -#: ../gtk/gtkspinbutton.c:266 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "Numérico" -#: ../gtk/gtkspinbutton.c:267 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" msgstr "Indica si se ignoran los caracteres no numéricos" -#: ../gtk/gtkspinbutton.c:274 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "Volver al inicio" -#: ../gtk/gtkspinbutton.c:275 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "" "Indica si un botón giratorio debe volver al inicio al alcanzar sus límites" -#: ../gtk/gtkspinbutton.c:282 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "Norma de actualización" -#: ../gtk/gtkspinbutton.c:283 +#: ../gtk/gtkspinbutton.c:373 msgid "" "Whether the spin button should update always, or only when the value is legal" msgstr "" "Indica si el botón incrementable se actualiza siempre, o sólo cuando el " "valor es legal" -#: ../gtk/gtkspinbutton.c:292 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "Lee el valor actual, o establece un valor nuevo" -#: ../gtk/gtkspinbutton.c:301 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "Estilo de bisel alrededor del botón giratorio" -#: ../gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Indica si el marcador incrementable está activo" -#: ../gtk/gtkspinner.c:146 -msgid "Number of steps" -msgstr "Número de pasos" - -#: ../gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"El número de pasos para que el marcador incrementable complete una vuelta " -"completa. La animación completará de forma predeterminada un ciclo completo " -"en un segundo (consulte #GtkSpinner:cycle-duration)." - -#: ../gtk/gtkspinner.c:162 -msgid "Animation duration" -msgstr "Duración de la animación" - -#: ../gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "" -"El tiempo en milisegundos para que el marcador incrementable complete una " -"vuelta completa" - -#: ../gtk/gtkstatusbar.c:181 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "Estilo del bisel alrededor del texto de la barra de estado" -#: ../gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "El tamaño del icono" -#: ../gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "La pantalla donde se mostrará este icono de estado" -#: ../gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "Indica si el icono de estado es visible" -#: ../gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "Indica si el icono de estado está empotrado" -#: ../gtk/gtkstatusicon.c:320 ../gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "La orientación de la bandeja" -#: ../gtk/gtkstatusicon.c:347 ../gtk/gtkwidget.c:1025 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1042 msgid "Has tooltip" msgstr "Tiene consejo" -#: ../gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "Indica si el icono de la bandeja tiene un consejo" -#: ../gtk/gtkstatusicon.c:373 ../gtk/gtkwidget.c:1046 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1063 msgid "Tooltip Text" msgstr "Texto del consejo" -#: ../gtk/gtkstatusicon.c:374 ../gtk/gtkwidget.c:1047 ../gtk/gtkwidget.c:1068 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1064 ../gtk/gtkwidget.c:1085 msgid "The contents of the tooltip for this widget" msgstr "El contenido de los consejos para este widget" -#: ../gtk/gtkstatusicon.c:397 ../gtk/gtkwidget.c:1067 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1084 msgid "Tooltip markup" msgstr "Marcado de consejos" -#: ../gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "El contenido de los consejos para este icono de la bandeja" -#: ../gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "El título de este icono de la bandeja" -#: ../gtk/gtkswitch.c:740 -#| msgid "Whether the widget is double buffered" +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "Estilo del contexto" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "GtkStyleContext del que obtener el estilo" + +#: ../gtk/gtkstylecontext.c:547 +#, fuzzy +#| msgid "Associated device" +msgid "The associated GdkScreen" +msgstr "Dispositivo asociado" + +#: ../gtk/gtkstylecontext.c:553 +#| msgid "Fraction" +msgid "Direction" +msgstr "Dirección" + +#: ../gtk/gtkstylecontext.c:554 ../gtk/gtktexttag.c:220 +msgid "Text direction" +msgstr "Dirección del texto" + +#: ../gtk/gtkswitch.c:744 msgid "Whether the switch is on or off" msgstr "Indica si el interruptor está encendido o apagado" -#: ../gtk/gtkswitch.c:774 -#| msgid "The minimum value of the adjustment" +#: ../gtk/gtkswitch.c:778 msgid "The minimum width of the handle" msgstr "La anchura mínima del tirador" @@ -5731,31 +6141,11 @@ msgstr "Columnas" msgid "The number of columns in the table" msgstr "El número de columnas en la tabla" -#: ../gtk/gtktable.c:175 -msgid "Row spacing" -msgstr "Espaciado entre filas" - -#: ../gtk/gtktable.c:176 -msgid "The amount of space between two consecutive rows" -msgstr "La cantidad de espacio entre dos filas consecutivas" - -#: ../gtk/gtktable.c:184 -msgid "Column spacing" -msgstr "Espaciado de la columna" - -#: ../gtk/gtktable.c:185 -msgid "The amount of space between two consecutive columns" -msgstr "La cantidad de espacio entre dos columnas consecutivas" - #: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "" "Si es TRUE, las celdas de la tabla tienen todas de la misma anchura/altura" -#: ../gtk/gtktable.c:201 -msgid "Left attachment" -msgstr "Acoplado izquierdo" - #: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Acoplado derecho" @@ -5765,10 +6155,6 @@ msgid "The column number to attach the right side of a child widget to" msgstr "" "El número de columnas que acoplar hacia el lado derecho de un widget hijo" -#: ../gtk/gtktable.c:215 -msgid "Top attachment" -msgstr "Acoplado superior" - #: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "El número de fila que acoplar a la parte superior de un widget hijo" @@ -5817,53 +6203,53 @@ msgstr "" "Espacio extra que poner entre el hijo y sus vecinos superiores e inferiores, " "en píxeles" -#: ../gtk/gtktextbuffer.c:191 +#: ../gtk/gtktextbuffer.c:192 msgid "Tag Table" msgstr "Tabla de etiquetas" -#: ../gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:193 msgid "Text Tag Table" msgstr "Tabla de etiquetas de texto" -#: ../gtk/gtktextbuffer.c:210 +#: ../gtk/gtktextbuffer.c:211 msgid "Current text of the buffer" msgstr "Texto actual del búfer" -#: ../gtk/gtktextbuffer.c:224 +#: ../gtk/gtktextbuffer.c:225 msgid "Has selection" msgstr "Tiene selección" -#: ../gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:226 msgid "Whether the buffer has some text currently selected" msgstr "Indica si el búfer tiene algo de texto actualmente seleccionado" -#: ../gtk/gtktextbuffer.c:241 +#: ../gtk/gtktextbuffer.c:242 msgid "Cursor position" msgstr "Posición del cursor" -#: ../gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:243 msgid "" "The position of the insert mark (as offset from the beginning of the buffer)" msgstr "" "La posición de la marca de inserción (como un desplazamiento desde el " "principio del búfer)" -#: ../gtk/gtktextbuffer.c:257 +#: ../gtk/gtktextbuffer.c:258 msgid "Copy target list" msgstr "Lista de destinos de la copia" -#: ../gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:259 msgid "" "The list of targets this buffer supports for clipboard copying and DND source" msgstr "" "La lista de destinos que soporta este búfer para copiar desde el " "portapapeles y el origen del DND" -#: ../gtk/gtktextbuffer.c:273 +#: ../gtk/gtktextbuffer.c:274 msgid "Paste target list" msgstr "Lista de destinos de pegado" -#: ../gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:275 msgid "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" @@ -5883,25 +6269,25 @@ msgstr "Gravedad izquierda" msgid "Whether the mark has left gravity" msgstr "Indica si la marca tiene gravedad izquierda" -#: ../gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:170 msgid "Tag name" msgstr "Nombre de etiqueta" -#: ../gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:171 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "" "Nombre utilizado para referirse a la etiqueta del texto. NULL para etiquetas " "anónimas" -#: ../gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:189 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Color de fondo como un (posiblemente no asignado) GdkColor" -#: ../gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:196 msgid "Background full height" msgstr "Altura completa del fondo" -#: ../gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:197 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5909,32 +6295,28 @@ msgstr "" "Indica si el color de fondo rellena el ancho completo de la línea o sólo el " "ancho de los caracteres etiquetados" -#: ../gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:213 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Color de frente como un (posiblemente no asignado) GdkColor" -#: ../gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "Dirección del texto" - -#: ../gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:221 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "" "Dirección del texto, por ejemplo: de izquierda-a-derecha o de derecha-a-" "izquierda" -#: ../gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:270 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "" "Estilo de la tipografía como un PangoStyle, por ejemplo: PANGO_STYLE_ITALIC" -#: ../gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:279 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "" "Variante de la tipografía como una PangoVariant, por ejemplo: " "PANGO_VARIANT_SMALL_CAPS" -#: ../gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:288 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5942,17 +6324,17 @@ msgstr "" "Peso de la tipografía como un entero, vea valores predefinidos en " "PangoWeight; por ejemplo: PANGO_WEIGHT_BOLD" -#: ../gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:299 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "" "Ajuste de la tipografía como un PangoStretch, ejemplo: " "PANGO_STRETCH_CONDENSED" -#: ../gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:308 msgid "Font size in Pango units" msgstr "Tamaño de la tipografía en unidades de Pango" -#: ../gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:318 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 " @@ -5963,11 +6345,11 @@ msgstr "" "tema, etc. por lo cual se recomienda. Pango define previamente algunas " "escalas tales como PANGO_SCALE_X_LARGE" -#: ../gtk/gtktexttag.c:336 ../gtk/gtktextview.c:704 +#: ../gtk/gtktexttag.c:338 ../gtk/gtktextview.c:703 msgid "Left, right, or center justification" msgstr "Justificación a la izquierda, derecha o centro" -#: ../gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:357 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." @@ -5976,31 +6358,31 @@ msgstr "" "como una ayuda cuando esta renderizando el texto. Si no se establece este " "parámetro se usará por omisión lo más apropiado." -#: ../gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:364 msgid "Left margin" msgstr "Margen izquierdo" -#: ../gtk/gtktexttag.c:363 ../gtk/gtktextview.c:713 +#: ../gtk/gtktexttag.c:365 ../gtk/gtktextview.c:712 msgid "Width of the left margin in pixels" msgstr "Anchura del margen izquierdo en píxeles" -#: ../gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:374 msgid "Right margin" msgstr "Margen derecho" -#: ../gtk/gtktexttag.c:373 ../gtk/gtktextview.c:723 +#: ../gtk/gtktexttag.c:375 ../gtk/gtktextview.c:722 msgid "Width of the right margin in pixels" msgstr "Anchura del margen derecho en píxeles" -#: ../gtk/gtktexttag.c:383 ../gtk/gtktextview.c:732 +#: ../gtk/gtktexttag.c:385 ../gtk/gtktextview.c:731 msgid "Indent" msgstr "Sangrar" -#: ../gtk/gtktexttag.c:384 ../gtk/gtktextview.c:733 +#: ../gtk/gtktexttag.c:386 ../gtk/gtktextview.c:732 msgid "Amount to indent the paragraph, in pixels" msgstr "Número de píxeles para el sangrado del párrafo" -#: ../gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:397 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -6008,232 +6390,238 @@ msgstr "" "Desplazamiento del texto por encima de la línea base (por debajo de la línea " "base si la elevación es negativa) en unidades Pango" -#: ../gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:406 msgid "Pixels above lines" msgstr "Píxeles encima de las líneas" -#: ../gtk/gtktexttag.c:405 ../gtk/gtktextview.c:657 +#: ../gtk/gtktexttag.c:407 ../gtk/gtktextview.c:656 msgid "Pixels of blank space above paragraphs" msgstr "Píxeles de espacio en blanco encima de los párrafos" -#: ../gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:416 msgid "Pixels below lines" msgstr "Píxeles debajo de las líneas" -#: ../gtk/gtktexttag.c:415 ../gtk/gtktextview.c:667 +#: ../gtk/gtktexttag.c:417 ../gtk/gtktextview.c:666 msgid "Pixels of blank space below paragraphs" msgstr "Píxeles de espacio en blanco debajo de los párrafos" -#: ../gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:426 msgid "Pixels inside wrap" msgstr "Píxeles dentro del ajuste" -#: ../gtk/gtktexttag.c:425 ../gtk/gtktextview.c:677 +#: ../gtk/gtktexttag.c:427 ../gtk/gtktextview.c:676 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Píxeles de espacio en blanco entre las líneas ajustadas en un párrafo" -#: ../gtk/gtktexttag.c:452 ../gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:454 ../gtk/gtktextview.c:694 msgid "" "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "" "Indica si deben ajustarse las líneas, a los límites de las palabras, a los " "límites de los caracteres, o nunca" -#: ../gtk/gtktexttag.c:461 ../gtk/gtktextview.c:742 +#: ../gtk/gtktexttag.c:463 ../gtk/gtktextview.c:741 msgid "Tabs" msgstr "Solapas" -#: ../gtk/gtktexttag.c:462 ../gtk/gtktextview.c:743 +#: ../gtk/gtktexttag.c:464 ../gtk/gtktextview.c:742 msgid "Custom tabs for this text" msgstr "Pestañas personalizadas para este texto" -#: ../gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:482 msgid "Invisible" msgstr "Invisible" -#: ../gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:483 msgid "Whether this text is hidden." msgstr "Indica si este texto está oculto." -#: ../gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:497 msgid "Paragraph background color name" msgstr "Nombre del color de fondo del parágrafo" -#: ../gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:498 msgid "Paragraph background color as a string" msgstr "Nombre del color de fondo del parágrafo como una cadena" -#: ../gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color" msgstr "Color de fondo del parágrafo" -#: ../gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "" "Color de fondo del parágrafo como un (posiblemente no asignado) GdkColor" -#: ../gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:532 msgid "Margin Accumulates" msgstr "Acumulación de márgenes" -#: ../gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:533 msgid "Whether left and right margins accumulate." msgstr "Indica si los márgenes izquierdo y derecho son acumulativos." -#: ../gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:546 msgid "Background full height set" msgstr "Establece la altura completa del fondo" -#: ../gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:547 msgid "Whether this tag affects background height" msgstr "Indica si esta etiqueta afecta a la altura del fondo" -#: ../gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:586 msgid "Justification set" msgstr "Justificación establecida" -#: ../gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:587 msgid "Whether this tag affects paragraph justification" msgstr "Indica si esta etiqueta afecta la justificación del párrafo" -#: ../gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:594 msgid "Left margin set" msgstr "Margen izquierdo establecido" -#: ../gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the left margin" msgstr "Indica si esta etiqueta afecta el margen izquierdo" -#: ../gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:598 msgid "Indent set" msgstr "Sangrado establecido" -#: ../gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:599 msgid "Whether this tag affects indentation" msgstr "Indica si esta etiqueta afecta al sangrado" -#: ../gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:606 msgid "Pixels above lines set" msgstr "Píxeles por encima de las líneas establecido" -#: ../gtk/gtktexttag.c:605 ../gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:607 ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the number of pixels above lines" msgstr "Indica si esta etiqueta afecta la cantidad de píxeles sobre las líneas" -#: ../gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:610 msgid "Pixels below lines set" msgstr "Píxeles por debajo de las líneas establecido" -#: ../gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:614 msgid "Pixels inside wrap set" msgstr "Píxeles dentro del ajuste establecido" -#: ../gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "" "Indica si esta etiqueta afecta la cantidad de píxeles entre las líneas " "ajustadas" -#: ../gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:622 msgid "Right margin set" msgstr "Margen derecho establecido" -#: ../gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:623 msgid "Whether this tag affects the right margin" msgstr "Indica si esta etiqueta afecta el margen derecho" -#: ../gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:630 msgid "Wrap mode set" msgstr "Modo de ajuste establecido" -#: ../gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects line wrap mode" msgstr "Indica si esta etiqueta afecta el modo de ajuste de línea" -#: ../gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:634 msgid "Tabs set" msgstr "Tabuladores establecidos" -#: ../gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:635 msgid "Whether this tag affects tabs" msgstr "Indica si esta etiqueta afecta las tabulaciones" -#: ../gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:638 msgid "Invisible set" msgstr "Invisibilidad establecida" -#: ../gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects text visibility" msgstr "Indica si esta etiqueta afecta la visibilidad del texto" -#: ../gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:642 msgid "Paragraph background set" msgstr "Fondo de parágrafo establecido" -#: ../gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:643 msgid "Whether this tag affects the paragraph background color" msgstr "Indica si esta etiqueta afecta el color de fondo del parágrafo" -#: ../gtk/gtktextview.c:656 +#: ../gtk/gtktextview.c:655 msgid "Pixels Above Lines" msgstr "Píxeles sobre las líneas" -#: ../gtk/gtktextview.c:666 +#: ../gtk/gtktextview.c:665 msgid "Pixels Below Lines" msgstr "Píxeles por debajo de las líneas" -#: ../gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:675 msgid "Pixels Inside Wrap" msgstr "Píxeles dentro del ajuste" -#: ../gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:693 msgid "Wrap Mode" msgstr "Modo de ajuste" -#: ../gtk/gtktextview.c:712 +#: ../gtk/gtktextview.c:711 msgid "Left Margin" msgstr "Margen izquierdo" -#: ../gtk/gtktextview.c:722 +#: ../gtk/gtktextview.c:721 msgid "Right Margin" msgstr "Margen derecho" -#: ../gtk/gtktextview.c:750 +#: ../gtk/gtktextview.c:749 msgid "Cursor Visible" msgstr "Cursor visible" -#: ../gtk/gtktextview.c:751 +#: ../gtk/gtktextview.c:750 msgid "If the insertion cursor is shown" msgstr "Si se muestra el cursor de inserción" -#: ../gtk/gtktextview.c:758 +#: ../gtk/gtktextview.c:757 msgid "Buffer" msgstr "Búfer" -#: ../gtk/gtktextview.c:759 +#: ../gtk/gtktextview.c:758 msgid "The buffer which is displayed" msgstr "El búfer que se está mostrando" -#: ../gtk/gtktextview.c:767 +#: ../gtk/gtktextview.c:766 msgid "Whether entered text overwrites existing contents" msgstr "Indica si el texto introducido sobreescribe el existente" -#: ../gtk/gtktextview.c:774 +#: ../gtk/gtktextview.c:773 msgid "Accepts tab" msgstr "Acepta tabuladores" -#: ../gtk/gtktextview.c:775 +#: ../gtk/gtktextview.c:774 msgid "Whether Tab will result in a tab character being entered" msgstr "Indica si Tab resultará en la introducción de un carácter tabulador" -#: ../gtk/gtktextview.c:810 +#: ../gtk/gtktextview.c:809 msgid "Error underline color" msgstr "Color de subrayado de errores" -#: ../gtk/gtktextview.c:811 +#: ../gtk/gtktextview.c:810 msgid "Color with which to draw error-indication underlines" msgstr "Color con el que dibujar el subrayado de indicación de errores" +#: ../gtk/gtkthemingengine.c:249 +#, fuzzy +#| msgid "Theme Name" +msgid "Theming engine name" +msgstr "Nombre del tema" + #: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Crear los mismos proxies como una acción de radio" @@ -6264,93 +6652,93 @@ msgstr "Indicador de dibujo" msgid "If the toggle part of the button is displayed" msgstr "Si se muestra la parte de conmutación del botón" -#: ../gtk/gtktoolbar.c:491 ../gtk/gtktoolpalette.c:1060 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1061 msgid "Toolbar Style" msgstr "Estilo de la barra de herramientas" -#: ../gtk/gtktoolbar.c:492 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "Cómo dibujar la barra de herramientas" -#: ../gtk/gtktoolbar.c:499 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "Mostrar flecha" -#: ../gtk/gtktoolbar.c:500 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "" "Indica si debe mostrarse una flecha si no cabe la barra de herramientas" -#: ../gtk/gtktoolbar.c:521 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "Tamaño de los iconos en esta barra de herramientas" -#: ../gtk/gtktoolbar.c:536 ../gtk/gtktoolpalette.c:1046 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1047 msgid "Icon size set" msgstr "Tamaño del icono establecido" -#: ../gtk/gtktoolbar.c:537 ../gtk/gtktoolpalette.c:1047 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1048 msgid "Whether the icon-size property has been set" msgstr "Indica si se ha establecido la propiedad de tamaño del icono" -#: ../gtk/gtktoolbar.c:546 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "" "Indica si el elemento debe recibir espacio extra cuando la barra crezca" -#: ../gtk/gtktoolbar.c:554 ../gtk/gtktoolitemgroup.c:1642 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1642 msgid "Whether the item should be the same size as other homogeneous items" msgstr "" "Indica si el elemento debe ser del mismo tamaño que otros elementos " "homogéneos" -#: ../gtk/gtktoolbar.c:561 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "Tamaño del espaciador" -#: ../gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "Tamaño de los espaciadores" -#: ../gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "" "Número de espacio del borde entre la sombra de la barra de herramientas y " "los botones" -#: ../gtk/gtktoolbar.c:579 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "Expansión de hijos máxima" -#: ../gtk/gtktoolbar.c:580 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "Cantidad máxima de espacio que se le dará a un elemento expandible" -#: ../gtk/gtktoolbar.c:588 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "Estilo del espacio" -#: ../gtk/gtktoolbar.c:589 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "Indica si los espaciadores son líneas verticales o sólo blancos" -#: ../gtk/gtktoolbar.c:596 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "Borde del botón" -#: ../gtk/gtktoolbar.c:597 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "Tipo de bisel alrededor de los botones de la barra de herramientas" -#: ../gtk/gtktoolbar.c:604 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "Estilo del bisel alrededor de la barra de herramientas" -#: ../gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "Texto para mostrar en el elemento." -#: ../gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6359,39 +6747,39 @@ msgstr "" "siguiente carácter debe utilizarse como el nemotécnico de la combinación de " "teclas en el menú de sobrecarga" -#: ../gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "Widget a usar como la etiqueta del elemento" -#: ../gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "ID del inventario" -#: ../gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "El icono de inventario mostrado en el elemento" -#: ../gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "Nombre del icono" -#: ../gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "El nombre del icono del tema mostrado en el elemento" -#: ../gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "Icono del widget" -#: ../gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "Icono del widget pata mostrar en el elemento" -#: ../gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "Espaciado entre iconos" -#: ../gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "Espaciado en píxeles entre el icono y la etiqueta" @@ -6464,442 +6852,486 @@ msgstr "Indica si el elemento debería iniciar una fila nueva" msgid "Position of the item within this group" msgstr "Posición del elemento en su grupo" -#: ../gtk/gtktoolpalette.c:1031 +#: ../gtk/gtktoolpalette.c:1032 msgid "Size of icons in this tool palette" msgstr "Tamaño de los iconos en esta paleta de herramientas" -#: ../gtk/gtktoolpalette.c:1061 +#: ../gtk/gtktoolpalette.c:1062 msgid "Style of items in the tool palette" msgstr "Estilo de los elementos en la paleta de herramientas" -#: ../gtk/gtktoolpalette.c:1077 +#: ../gtk/gtktoolpalette.c:1078 msgid "Exclusive" msgstr "Exclusivo" -#: ../gtk/gtktoolpalette.c:1078 +#: ../gtk/gtktoolpalette.c:1079 msgid "Whether the item group should be the only expanded at a given time" msgstr "" "Indica si el elemento del grupo deben ser el único expandido en un " "determinado momento" -#: ../gtk/gtktoolpalette.c:1093 +#: ../gtk/gtktoolpalette.c:1094 msgid "" "Whether the item group should receive extra space when the palette grows" msgstr "" "Indica si el elemento del grupo debe recibir espacio extra cuando la paleta " "crece" -#: ../gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" msgstr "Color de primer plano para iconos simbólicos" -#: ../gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" msgstr "Color del error" -#: ../gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" msgstr "Color del error para iconos simbólicos" -#: ../gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" msgstr "Color de aviso" -#: ../gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" msgstr "Color de aviso para iconos simbólicos" -#: ../gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" msgstr "Color del éxito" -#: ../gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" msgstr "Color del éxito para enlaces simbólicos" -#: ../gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" msgstr "Separación que poner alrededor de los iconos en la bandeja" -#: ../gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +#, fuzzy +#| msgid "TreeView Model" +msgid "TreeMenu model" +msgstr "Modelo TreeView" + +#: ../gtk/gtktreemenu.c:288 +#, fuzzy +#| msgid "The model for the tree view" +msgid "The model for the tree menu" +msgstr "El modelo para la vista de árbol" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "" + +#: ../gtk/gtktreemenu.c:344 +#, fuzzy +#| msgid "Tearoff Title" +msgid "Tearoff" +msgstr "Título del tirador" + +#: ../gtk/gtktreemenu.c:345 +#, fuzzy +#| msgid "Whether the mark has left gravity" +msgid "Whether the menu has a tearoff item" +msgstr "Indica si la marca tiene gravedad izquierda" + +#: ../gtk/gtktreemenu.c:361 +#, fuzzy +#| msgid "Wrap width" +msgid "Wrap Width" +msgstr "Ajustar anchura" + +#: ../gtk/gtktreemenu.c:362 +#, fuzzy +#| msgid "Wrap width for laying out the items in a grid" +msgid "Wrap width for laying out items in a grid" +msgstr "Ajusta la anchura para distribuir los elementos en una rejilla" + +#: ../gtk/gtktreemodelsort.c:312 msgid "TreeModelSort Model" msgstr "Modelo TreeModelSort" -#: ../gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:313 msgid "The model for the TreeModelSort to sort" msgstr "El modelo para el TreeModelSort a ordenar" -#: ../gtk/gtktreeview.c:661 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "Modelo TreeView" -#: ../gtk/gtktreeview.c:662 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "El modelo para la vista de árbol" -#: ../gtk/gtktreeview.c:674 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "Cabeceras visibles" -#: ../gtk/gtktreeview.c:675 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "Mostrar botones en los encabezados de columna" -#: ../gtk/gtktreeview.c:682 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "Cabeceras pulsables" -#: ../gtk/gtktreeview.c:683 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "Las cabeceras de las columnas responden a los eventos de pulsación" -#: ../gtk/gtktreeview.c:690 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "Columna expansora" -#: ../gtk/gtktreeview.c:691 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "Define la columna para la columna expansora" -#: ../gtk/gtktreeview.c:706 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "Consejo de las reglas" -#: ../gtk/gtktreeview.c:707 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "" "Define un consejo para el motor del tema para dibujar las filas con colores " "alternativos" -#: ../gtk/gtktreeview.c:714 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "Habilitar búsqueda" -#: ../gtk/gtktreeview.c:715 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "" "La vista permite a los usuarios buscar en forma interactiva a través de las " "columnas" -#: ../gtk/gtktreeview.c:722 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "Columna de búsqueda" -#: ../gtk/gtktreeview.c:723 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "" "Columna modelo para buscar a través de ella en una búsqueda interactiva" -#: ../gtk/gtktreeview.c:743 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "Modo de altura fija" -#: ../gtk/gtktreeview.c:744 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "" "Acelera GtkTreeView asumiendo que todas las filas tienen la misma altura" -#: ../gtk/gtktreeview.c:764 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "Selección al pasar por encima" -#: ../gtk/gtktreeview.c:765 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "Indica si la selección debe seguir al puntero" -#: ../gtk/gtktreeview.c:784 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "Expandir al poner el cursor encima" -#: ../gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1113 msgid "" "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "" "Indica si las filas deben expandirse/contraerse cuando el puntero se mueve " "sobre ellas" -#: ../gtk/gtktreeview.c:799 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "Mostrar expansores" -#: ../gtk/gtktreeview.c:800 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "La vista tiene expansores" -#: ../gtk/gtktreeview.c:814 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "Nivel de sangrado" -#: ../gtk/gtktreeview.c:815 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "Sangría extra para cada nivel" -#: ../gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "Bandas de goma" -#: ../gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1153 msgid "" "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "" "Indica si se debe activar la selección de múltiples elementos arrastrándo el " "puntero del ratón" -#: ../gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "Activar líneas de la rejilla" -#: ../gtk/gtktreeview.c:833 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "Indica si debe haber un icono cerca del elemento" -#: ../gtk/gtktreeview.c:841 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "Activar líneas del árbol" -#: ../gtk/gtktreeview.c:842 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "Indica si deben dibujar las líneas en la vista del árbol" -#: ../gtk/gtktreeview.c:850 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "" "La columna del modelo que contiene los textos de consejo para las filas" -#: ../gtk/gtktreeview.c:872 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "Anchura del separador vertical" -#: ../gtk/gtktreeview.c:873 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "Espacio vertical entre celdas. Debe ser un número par" -#: ../gtk/gtktreeview.c:881 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "Anchura del separador horizontal" -#: ../gtk/gtktreeview.c:882 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "Espacio horizontal entre celdas. Debe ser un número par" -#: ../gtk/gtktreeview.c:890 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "Permitir reglas" -#: ../gtk/gtktreeview.c:891 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "Permitir el dibujado de filas con colores alternativos" -#: ../gtk/gtktreeview.c:897 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "Sangrar expansores" -#: ../gtk/gtktreeview.c:898 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "Crea los expansores sangrados" -#: ../gtk/gtktreeview.c:904 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "Color de la fila par" -#: ../gtk/gtktreeview.c:905 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "Color a usar para las filas pares" -#: ../gtk/gtktreeview.c:911 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "Color de la fila impar" -#: ../gtk/gtktreeview.c:912 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "Color a usar para las filas impares" -#: ../gtk/gtktreeview.c:918 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "Anchura de la línea de la rejilla" -#: ../gtk/gtktreeview.c:919 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" msgstr "Anchura, en píxeles, de la línea indicadora del foco" -#: ../gtk/gtktreeview.c:925 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "Anchura de la línea del árbol" -#: ../gtk/gtktreeview.c:926 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "Anchura, en píxeles, de la línea indicadora del foco" -#: ../gtk/gtktreeview.c:932 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "Patrón de la línea de la rejilla" -#: ../gtk/gtktreeview.c:933 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "" "Patrón de guiones utilizado para dibujar las líneas de rejilla de la vista " "de árbol" -#: ../gtk/gtktreeview.c:939 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "Patrón de la línea del árbol" -#: ../gtk/gtktreeview.c:940 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "" "Patrón de guiones utilizado para dibujar las líneas de la vista de árbol" -#: ../gtk/gtktreeviewcolumn.c:214 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "Indica si se debe mostrar la columna" -#: ../gtk/gtktreeviewcolumn.c:221 ../gtk/gtkwindow.c:657 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "Redimensionable" -#: ../gtk/gtktreeviewcolumn.c:222 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "La columna es ajustable por el usuario" -#: ../gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "Anchura actual de la columna" -#: ../gtk/gtktreeviewcolumn.c:239 -msgid "Space which is inserted between cells" -msgstr "Espacio que se introduce entre las celdas" - -#: ../gtk/gtktreeviewcolumn.c:247 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "Dimensionar" -#: ../gtk/gtktreeviewcolumn.c:248 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "Modo de redimensionado de la columna" -#: ../gtk/gtktreeviewcolumn.c:256 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "Anchura fijo" -#: ../gtk/gtktreeviewcolumn.c:257 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "Anchura fijo actual de la columna" -#: ../gtk/gtktreeviewcolumn.c:266 -msgid "Minimum Width" -msgstr "Anchura mínimo" - -#: ../gtk/gtktreeviewcolumn.c:267 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "Anchura mínimo permitido de la columna" -#: ../gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "Anchura máximo" -#: ../gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "Anchura máximo permitido de la columna" -#: ../gtk/gtktreeviewcolumn.c:287 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "Título que aparecerá en el encabezado de columna" -#: ../gtk/gtktreeviewcolumn.c:295 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "" "La columna obtiene compartición de anchura extra asignada para el widget" -#: ../gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "Pulsable" -#: ../gtk/gtktreeviewcolumn.c:303 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "Indica si la cabecera puede ser pulsada" -#: ../gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "Widget" -#: ../gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "" "Widget a colocar en el botón de la cabecera de la columna en lugar del " "título de la columna" -#: ../gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "Alineación X del texto o el widget de la cabecera de la columna" -#: ../gtk/gtktreeviewcolumn.c:330 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "Indica si la columna poder ser reordenada alrededor de las cabeceras" -#: ../gtk/gtktreeviewcolumn.c:337 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "Indicador de ordenación" -#: ../gtk/gtktreeviewcolumn.c:338 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "Indica si se debe mostrar un indicador de ordenamiento" -#: ../gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "Orden de la ordenación" -#: ../gtk/gtktreeviewcolumn.c:346 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "Dirección de ordenación que el indicador deberá indicar" -#: ../gtk/gtktreeviewcolumn.c:362 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "ID de columna de ordenación" -#: ../gtk/gtktreeviewcolumn.c:363 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "" "ID de columna de ordenación lógica que ordena esta columna cuando se " "selecciona para ordenar" -#: ../gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Indica si deben añadirse tiradores a los menús" -#: ../gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Definición del IU combinado" -#: ../gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "Una cadena XML describiendo el IU combinado" -#: ../gtk/gtkviewport.c:155 +#: ../gtk/gtkviewport.c:154 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "" "Determina como es dibujado el marco sombreado alrededor del puerto de visión" -#: ../gtk/gtkwidget.c:876 +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "Usar iconos simbólicos" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "Indica si se deben usar enlaces simbólicos" + +#: ../gtk/gtkwidget.c:901 msgid "Widget name" msgstr "Nombre del widget" -#: ../gtk/gtkwidget.c:877 +#: ../gtk/gtkwidget.c:902 msgid "The name of the widget" msgstr "El nombre del widget" -#: ../gtk/gtkwidget.c:883 +#: ../gtk/gtkwidget.c:908 msgid "Parent widget" msgstr "Widget padre" -#: ../gtk/gtkwidget.c:884 +#: ../gtk/gtkwidget.c:909 msgid "The parent widget of this widget. Must be a Container widget" msgstr "El widget padre de este widget. Debe ser un widget contenedor" -#: ../gtk/gtkwidget.c:891 +#: ../gtk/gtkwidget.c:916 msgid "Width request" msgstr "Petición de anchura" -#: ../gtk/gtkwidget.c:892 +#: ../gtk/gtkwidget.c:917 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6907,11 +7339,11 @@ msgstr "" "Sobreescribir el ancho solicitado del widget, o -1 si deber ser utilizado la " "solicitud natural" -#: ../gtk/gtkwidget.c:900 +#: ../gtk/gtkwidget.c:925 msgid "Height request" msgstr "Petición de altura" -#: ../gtk/gtkwidget.c:901 +#: ../gtk/gtkwidget.c:926 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6919,84 +7351,84 @@ msgstr "" "Sobreescribir la altura solicitada del widget, o -1 si deber ser utilizada " "la solicitud natural" -#: ../gtk/gtkwidget.c:910 +#: ../gtk/gtkwidget.c:935 msgid "Whether the widget is visible" msgstr "Indica si el widget es visible" -#: ../gtk/gtkwidget.c:917 +#: ../gtk/gtkwidget.c:942 msgid "Whether the widget responds to input" msgstr "Indica si el widget responde al ingreso" -#: ../gtk/gtkwidget.c:923 +#: ../gtk/gtkwidget.c:948 msgid "Application paintable" msgstr "Pintable por la aplicación" -#: ../gtk/gtkwidget.c:924 +#: ../gtk/gtkwidget.c:949 msgid "Whether the application will paint directly on the widget" msgstr "Indica si la aplicación pintará directamente sobre el widget" -#: ../gtk/gtkwidget.c:930 +#: ../gtk/gtkwidget.c:955 msgid "Can focus" msgstr "Puede enfocar" -#: ../gtk/gtkwidget.c:931 +#: ../gtk/gtkwidget.c:956 msgid "Whether the widget can accept the input focus" msgstr "Indica si el widget puede aceptar el foco de entrada" -#: ../gtk/gtkwidget.c:937 +#: ../gtk/gtkwidget.c:962 msgid "Has focus" msgstr "Tiene foco" -#: ../gtk/gtkwidget.c:938 +#: ../gtk/gtkwidget.c:963 msgid "Whether the widget has the input focus" msgstr "Indica si el widget tiene el foco de entrada" -#: ../gtk/gtkwidget.c:944 +#: ../gtk/gtkwidget.c:969 msgid "Is focus" msgstr "Tiene el foco" -#: ../gtk/gtkwidget.c:945 +#: ../gtk/gtkwidget.c:970 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Indica si el widget es el widget con foco dentro del nivel superior" -#: ../gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:976 msgid "Can default" msgstr "Puede por omisión" -#: ../gtk/gtkwidget.c:952 +#: ../gtk/gtkwidget.c:977 msgid "Whether the widget can be the default widget" msgstr "Indica si el widget puede ser el widget predeterminado" -#: ../gtk/gtkwidget.c:958 +#: ../gtk/gtkwidget.c:983 msgid "Has default" msgstr "Tiene por omisión" -#: ../gtk/gtkwidget.c:959 +#: ../gtk/gtkwidget.c:984 msgid "Whether the widget is the default widget" msgstr "Indica si el widget es el widget predeterminado" -#: ../gtk/gtkwidget.c:965 +#: ../gtk/gtkwidget.c:990 msgid "Receives default" msgstr "Recibe por omisión" -#: ../gtk/gtkwidget.c:966 +#: ../gtk/gtkwidget.c:991 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "" "Si es TRUE el widget recibirá la acción predeterminada cuando obtiene el foco" -#: ../gtk/gtkwidget.c:972 +#: ../gtk/gtkwidget.c:997 msgid "Composite child" msgstr "Hijo compuesto" -#: ../gtk/gtkwidget.c:973 +#: ../gtk/gtkwidget.c:998 msgid "Whether the widget is part of a composite widget" msgstr "Indica si el widget es parte de un widget compuesto" -#: ../gtk/gtkwidget.c:979 +#: ../gtk/gtkwidget.c:1004 msgid "Style" msgstr "Estilo" -#: ../gtk/gtkwidget.c:980 +#: ../gtk/gtkwidget.c:1005 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" @@ -7004,186 +7436,176 @@ msgstr "" "El estilo del widget, que contiene información sobre la apariencia (colores, " "etc)" -#: ../gtk/gtkwidget.c:986 +#: ../gtk/gtkwidget.c:1011 msgid "Events" msgstr "Eventos" -#: ../gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1012 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "" "La máscara de eventos que decide que tipo de GtkEvents recibe este widget" -#: ../gtk/gtkwidget.c:994 -msgid "Extension events" -msgstr "Eventos de extensión" - -#: ../gtk/gtkwidget.c:995 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "" -"La máscara que decide que clase de eventos de extensión conseguirá este " -"widget" - -#: ../gtk/gtkwidget.c:1002 +#: ../gtk/gtkwidget.c:1019 msgid "No show all" msgstr "No mostrar todo" -#: ../gtk/gtkwidget.c:1003 +#: ../gtk/gtkwidget.c:1020 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Indica que gtk_widget_show_all() no debe afectar a este widget" -#: ../gtk/gtkwidget.c:1026 +#: ../gtk/gtkwidget.c:1043 msgid "Whether this widget has a tooltip" msgstr "Indica si el widget tiene un consejo" -#: ../gtk/gtkwidget.c:1082 +#: ../gtk/gtkwidget.c:1099 msgid "Window" msgstr "Ventana" -#: ../gtk/gtkwidget.c:1083 +#: ../gtk/gtkwidget.c:1100 msgid "The widget's window if it is realized" msgstr "La ventana del widget si se realiza" -#: ../gtk/gtkwidget.c:1097 +#: ../gtk/gtkwidget.c:1114 msgid "Double Buffered" msgstr "Búfer doble" -#: ../gtk/gtkwidget.c:1098 +#: ../gtk/gtkwidget.c:1115 msgid "Whether the widget is double buffered" msgstr "Indica si el widget tiene búfer doble" -#: ../gtk/gtkwidget.c:1113 +#: ../gtk/gtkwidget.c:1130 msgid "How to position in extra horizontal space" msgstr "Cómo posicionar en el espacio horizontal adicional" -#: ../gtk/gtkwidget.c:1129 +#: ../gtk/gtkwidget.c:1146 msgid "How to position in extra vertical space" msgstr "Cómo posicionar en el espacio vertical adicional" -#: ../gtk/gtkwidget.c:1148 +#: ../gtk/gtkwidget.c:1165 msgid "Margin on Left" msgstr "Margen a la izquierda" -#: ../gtk/gtkwidget.c:1149 +#: ../gtk/gtkwidget.c:1166 msgid "Pixels of extra space on the left side" msgstr "Píxeles de espacio adicional en la parte izquierda" -#: ../gtk/gtkwidget.c:1169 +#: ../gtk/gtkwidget.c:1186 msgid "Margin on Right" msgstr "Margen a la derecha" -#: ../gtk/gtkwidget.c:1170 +#: ../gtk/gtkwidget.c:1187 msgid "Pixels of extra space on the right side" msgstr "Píxeles de espacio adicional en la parte derecha" -#: ../gtk/gtkwidget.c:1190 +#: ../gtk/gtkwidget.c:1207 msgid "Margin on Top" msgstr "Margen arriba" -#: ../gtk/gtkwidget.c:1191 +#: ../gtk/gtkwidget.c:1208 msgid "Pixels of extra space on the top side" msgstr "Píxeles de espacio adicional en la parte superior" -#: ../gtk/gtkwidget.c:1211 +#: ../gtk/gtkwidget.c:1228 msgid "Margin on Bottom" msgstr "Margen abajo" -#: ../gtk/gtkwidget.c:1212 +#: ../gtk/gtkwidget.c:1229 msgid "Pixels of extra space on the bottom side" msgstr "Píxeles de espacio adicional en la parte inferior" -#: ../gtk/gtkwidget.c:1229 +#: ../gtk/gtkwidget.c:1246 msgid "All Margins" msgstr "Todos los márgenes" -#: ../gtk/gtkwidget.c:1230 +#: ../gtk/gtkwidget.c:1247 msgid "Pixels of extra space on all four sides" msgstr "Píxeles de espacio adicionales en las cuatro partes" -#: ../gtk/gtkwidget.c:1263 +#: ../gtk/gtkwidget.c:1280 msgid "Horizontal Expand" msgstr "Expansión horizontal" -#: ../gtk/gtkwidget.c:1264 +#: ../gtk/gtkwidget.c:1281 msgid "Whether widget wants more horizontal space" msgstr "Indica si el widget quiere usar más espacio horizontal" -#: ../gtk/gtkwidget.c:1278 +#: ../gtk/gtkwidget.c:1295 msgid "Horizontal Expand Set" msgstr "Ajuste de expansión horizontal" -#: ../gtk/gtkwidget.c:1279 +#: ../gtk/gtkwidget.c:1296 msgid "Whether to use the hexpand property" msgstr "Indica si se debe usar la propiedad hexpand" -#: ../gtk/gtkwidget.c:1293 +#: ../gtk/gtkwidget.c:1310 msgid "Vertical Expand" msgstr "Expansión vertial" -#: ../gtk/gtkwidget.c:1294 +#: ../gtk/gtkwidget.c:1311 msgid "Whether widget wants more vertical space" msgstr "Indica si el widget quiere usar más espacio vertical" -#: ../gtk/gtkwidget.c:1308 +#: ../gtk/gtkwidget.c:1325 msgid "Vertical Expand Set" msgstr "Ajuste de expansión vertical" -#: ../gtk/gtkwidget.c:1309 +#: ../gtk/gtkwidget.c:1326 msgid "Whether to use the vexpand property" msgstr "Indica si se debe usar la propiedad vexpand" -#: ../gtk/gtkwidget.c:1323 +#: ../gtk/gtkwidget.c:1340 msgid "Expand Both" msgstr "Expandir en ambas" -#: ../gtk/gtkwidget.c:1324 +#: ../gtk/gtkwidget.c:1341 msgid "Whether widget wants to expand in both directions" msgstr "Indica si el widget quiere expandirse en ambas direcciones" -#: ../gtk/gtkwidget.c:2963 +#: ../gtk/gtkwidget.c:3000 msgid "Interior Focus" msgstr "Foco interior" -#: ../gtk/gtkwidget.c:2964 +#: ../gtk/gtkwidget.c:3001 msgid "Whether to draw the focus indicator inside widgets" msgstr "Indica si se ha de dibujar el indicador del foco dentro de los widgets" -#: ../gtk/gtkwidget.c:2970 +#: ../gtk/gtkwidget.c:3007 msgid "Focus linewidth" msgstr "Dar foco al ancho de línea" -#: ../gtk/gtkwidget.c:2971 +#: ../gtk/gtkwidget.c:3008 msgid "Width, in pixels, of the focus indicator line" msgstr "Anchura, en píxeles, de la línea indicadora del foco" -#: ../gtk/gtkwidget.c:2977 +#: ../gtk/gtkwidget.c:3014 msgid "Focus line dash pattern" msgstr "Dar foco a la línea con patrón punteado" -#: ../gtk/gtkwidget.c:2978 +#: ../gtk/gtkwidget.c:3015 msgid "Dash pattern used to draw the focus indicator" msgstr "Patrón punteado utilizado para dibujar el indicador de foco" -#: ../gtk/gtkwidget.c:2983 +#: ../gtk/gtkwidget.c:3020 msgid "Focus padding" msgstr "Relleno del foco" -#: ../gtk/gtkwidget.c:2984 +#: ../gtk/gtkwidget.c:3021 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Anchura, en píxeles, entre el indicador de foco y la «caja» del widget" -#: ../gtk/gtkwidget.c:2989 +#: ../gtk/gtkwidget.c:3026 msgid "Cursor color" msgstr "Color del cursor" -#: ../gtk/gtkwidget.c:2990 +#: ../gtk/gtkwidget.c:3027 msgid "Color with which to draw insertion cursor" msgstr "Color con el cual dibujar el cursor de inserción" -#: ../gtk/gtkwidget.c:2995 +#: ../gtk/gtkwidget.c:3032 msgid "Secondary cursor color" msgstr "Color secundario del cursor" -#: ../gtk/gtkwidget.c:2996 +#: ../gtk/gtkwidget.c:3033 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -7191,43 +7613,43 @@ msgstr "" "Color con el cual dibujar el cursor de inserción secundario cuando se esta " "editando una mezcla de texto de derecha-a-izquierda y izquierda-a-derecha" -#: ../gtk/gtkwidget.c:3001 +#: ../gtk/gtkwidget.c:3038 msgid "Cursor line aspect ratio" msgstr "Proporción de la línea del cursor" -#: ../gtk/gtkwidget.c:3002 +#: ../gtk/gtkwidget.c:3039 msgid "Aspect ratio with which to draw insertion cursor" msgstr "La proporción con la cual dibujar el cursor de inserción" -#: ../gtk/gtkwidget.c:3008 +#: ../gtk/gtkwidget.c:3045 msgid "Window dragging" msgstr "Arrastre de ventana" -#: ../gtk/gtkwidget.c:3009 +#: ../gtk/gtkwidget.c:3046 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "Indica si las ventanas se pueden arrastrar pulsando en áreas vacías" -#: ../gtk/gtkwidget.c:3022 +#: ../gtk/gtkwidget.c:3059 msgid "Unvisited Link Color" msgstr "Color del enlace no visitado" -#: ../gtk/gtkwidget.c:3023 +#: ../gtk/gtkwidget.c:3060 msgid "Color of unvisited links" msgstr "Color de los enlaces no visitados" -#: ../gtk/gtkwidget.c:3036 +#: ../gtk/gtkwidget.c:3073 msgid "Visited Link Color" msgstr "Color del enlace visitado" -#: ../gtk/gtkwidget.c:3037 +#: ../gtk/gtkwidget.c:3074 msgid "Color of visited links" msgstr "Color de los enlaces visitados" -#: ../gtk/gtkwidget.c:3051 +#: ../gtk/gtkwidget.c:3088 msgid "Wide Separators" msgstr "Separadores anchos" -#: ../gtk/gtkwidget.c:3052 +#: ../gtk/gtkwidget.c:3089 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" @@ -7235,81 +7657,81 @@ msgstr "" "Indica si los separadores tienen anchura configurable y deben dibujarse " "usando una caja en lugar de una línea" -#: ../gtk/gtkwidget.c:3066 +#: ../gtk/gtkwidget.c:3103 msgid "Separator Width" msgstr "Anchura del separador" -#: ../gtk/gtkwidget.c:3067 +#: ../gtk/gtkwidget.c:3104 msgid "The width of separators if wide-separators is TRUE" msgstr "La anchura de los separadores si «wide-separators« es TRUE" -#: ../gtk/gtkwidget.c:3081 +#: ../gtk/gtkwidget.c:3118 msgid "Separator Height" msgstr "Altura del separador" -#: ../gtk/gtkwidget.c:3082 +#: ../gtk/gtkwidget.c:3119 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "La altura de los separadores si «wide-separators» es TRUE" -#: ../gtk/gtkwidget.c:3096 +#: ../gtk/gtkwidget.c:3133 msgid "Horizontal Scroll Arrow Length" msgstr "Longitud de la flecha de desplazamiento horizontal" -#: ../gtk/gtkwidget.c:3097 +#: ../gtk/gtkwidget.c:3134 msgid "The length of horizontal scroll arrows" msgstr "La longitud de las flechas de desplazamiento horizontal" -#: ../gtk/gtkwidget.c:3111 +#: ../gtk/gtkwidget.c:3148 msgid "Vertical Scroll Arrow Length" msgstr "Longitud de las flechas de desplazamiento vertical" -#: ../gtk/gtkwidget.c:3112 +#: ../gtk/gtkwidget.c:3149 msgid "The length of vertical scroll arrows" msgstr "La longitud de las flechas de desplazamiento vertical" -#: ../gtk/gtkwindow.c:615 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "Tipo de ventana" -#: ../gtk/gtkwindow.c:616 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "El tipo de la ventana" -#: ../gtk/gtkwindow.c:624 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "Título de la ventana" -#: ../gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "El título de la ventana" -#: ../gtk/gtkwindow.c:632 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "Rol de la ventana" -#: ../gtk/gtkwindow.c:633 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" msgstr "" "Identificador único para la ventana para usarlo al restaurar una sesión" -#: ../gtk/gtkwindow.c:649 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "ID de inicio" -#: ../gtk/gtkwindow.c:650 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "" "Identificador único de inicio para la ventana usado por startup-notification" -#: ../gtk/gtkwindow.c:658 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "Si es TRUE los usuario pueden redimensionar la ventana" -#: ../gtk/gtkwindow.c:665 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "Modal" -#: ../gtk/gtkwindow.c:666 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" @@ -7317,80 +7739,80 @@ msgstr "" "Si es TRUE, esta ventana es modal (no se pueden utilizar otras ventanas " "mientras ésta este encima)" -#: ../gtk/gtkwindow.c:673 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "Posición de la ventana" -#: ../gtk/gtkwindow.c:674 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "La posición inicial de la ventana" -#: ../gtk/gtkwindow.c:682 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "Anchura predeterminada" -#: ../gtk/gtkwindow.c:683 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" msgstr "" "El ancho predeterminado de la ventana, utilizado cuando se muestra " "inicialmente la ventana" -#: ../gtk/gtkwindow.c:692 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "Altura predeterminada" -#: ../gtk/gtkwindow.c:693 +#: ../gtk/gtkwindow.c:681 msgid "" "The default height of the window, used when initially showing the window" msgstr "" "La altura predeterminada de la ventana, utilizado cuando se muestra " "inicialmente la ventana" -#: ../gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "Destruir con el padre" -#: ../gtk/gtkwindow.c:703 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "Indica si esta ventana debe ser destruida cuando el padre se destruye" -#: ../gtk/gtkwindow.c:711 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "Icono para esta ventana" -#: ../gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "Mnemónicos visibles" -#: ../gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "Indica si los mnemónicos son visibles actualmente en esta ventana" -#: ../gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "Nombre del icono del tema para esta ventana" -#: ../gtk/gtkwindow.c:749 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "Está activo" -#: ../gtk/gtkwindow.c:750 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "Indica si el nivel superior es la ventana activa actual" -#: ../gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "Foco en el nivel superior" -#: ../gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "Indica si el foco de entrada esta dentro de este GtkWindow" -#: ../gtk/gtkwindow.c:765 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "Pista de tipo" -#: ../gtk/gtkwindow.c:766 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7398,118 +7820,163 @@ msgstr "" "Pista para ayudar al entorno de escritorio a entender qué clase de ventana " "es ésta y cómo tratar con ella." -#: ../gtk/gtkwindow.c:774 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "Ignorar barra de tareas" -#: ../gtk/gtkwindow.c:775 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "TRUE si la ventana no debe estar en la barra de tareas." -#: ../gtk/gtkwindow.c:782 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "Ignorar paginador" -#: ../gtk/gtkwindow.c:783 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "TRUE si la ventana no debe estar en el paginador." -#: ../gtk/gtkwindow.c:790 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "Urgente" -#: ../gtk/gtkwindow.c:791 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "TRUE si la ventana debe llamar la atención del usuario." -#: ../gtk/gtkwindow.c:805 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "Aceptar foco" -#: ../gtk/gtkwindow.c:806 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "TRUE si la ventana no debe recibir el foco de entrada." -#: ../gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "Foco en el mapa" -#: ../gtk/gtkwindow.c:821 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "TRUE si la ventana debe recibir el foco de entrada al ser mapeada." -#: ../gtk/gtkwindow.c:835 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "Decorado" -#: ../gtk/gtkwindow.c:836 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "Indica si la ventana debe ser decorada por el gestor de ventanas" -#: ../gtk/gtkwindow.c:850 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "Borrable" -#: ../gtk/gtkwindow.c:851 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "Indica si el marco de la ventana debe tener un botón de cierre" -#: ../gtk/gtkwindow.c:870 +#: ../gtk/gtkwindow.c:858 msgid "Resize grip" msgstr "Redimensionar tirador" -#: ../gtk/gtkwindow.c:871 +#: ../gtk/gtkwindow.c:859 msgid "Specifies whether the window should have a resize grip" msgstr "Especifica si la ventana debe tener un tirador de redimensión" -#: ../gtk/gtkwindow.c:885 +#: ../gtk/gtkwindow.c:873 msgid "Resize grip is visible" msgstr "El tirador de redimensión es visible" -#: ../gtk/gtkwindow.c:886 +#: ../gtk/gtkwindow.c:874 msgid "Specifies whether the window's resize grip is visible." msgstr "Indica si el tirador de redimensión de la ventana es visible." -#: ../gtk/gtkwindow.c:902 +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "Gravedad" -#: ../gtk/gtkwindow.c:903 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "La gravedad de la ventana" -#: ../gtk/gtkwindow.c:920 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "Transitorio para la ventana" -#: ../gtk/gtkwindow.c:921 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "El padre transitorio del diálogo" -#: ../gtk/gtkwindow.c:936 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "Opacidad para la ventana" -#: ../gtk/gtkwindow.c:937 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "La opacidad de la ventana, desde 0 hasta 1" -#: ../gtk/gtkwindow.c:947 ../gtk/gtkwindow.c:948 +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 msgid "Width of resize grip" msgstr "Anchura del tirador de redimensión" -#: ../gtk/gtkwindow.c:953 ../gtk/gtkwindow.c:954 +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 msgid "Height of resize grip" msgstr "Altura del tirador de redimensión" -#: ../gtk/gtkwindow.c:973 +#: ../gtk/gtkwindow.c:961 msgid "GtkApplication" msgstr "GtkApplication" -#: ../gtk/gtkwindow.c:974 +#: ../gtk/gtkwindow.c:962 msgid "The GtkApplication for the window" msgstr "El GtkApplication para la ventana" +#~ msgid "Tab pack type" +#~ msgstr "Tipo de empaquetado de la solapa" + +#~ msgid "Update policy" +#~ msgstr "Política de actualización" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "Cómo se debe actualizar el rango en la pantalla" + +#~ msgid "Number of steps" +#~ msgstr "Número de pasos" + +#~ msgid "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." +#~ msgstr "" +#~ "El número de pasos para que el marcador incrementable complete una vuelta " +#~ "completa. La animación completará de forma predeterminada un ciclo " +#~ "completo en un segundo (consulte #GtkSpinner:cycle-duration)." + +#~ msgid "Animation duration" +#~ msgstr "Duración de la animación" + +#~ msgid "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" +#~ msgstr "" +#~ "El tiempo en milisegundos para que el marcador incrementable complete una " +#~ "vuelta completa" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "La etiqueta para el enlace al sitio web del programa. Si no está " +#~ "establecida, se usará la URL de forma predeterminada" + +#~ msgid "Extension events" +#~ msgstr "Eventos de extensión" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "La máscara que decide que clase de eventos de extensión conseguirá este " +#~ "widget" + #~ msgid "Lower" #~ msgstr "Inferior" @@ -7537,12 +8004,6 @@ msgstr "El GtkApplication para la ventana" #~ msgid "The metric used for the ruler" #~ msgstr "La métrica de la regla" -#~ msgid "Horizontal adjustment" -#~ msgstr "Ajuste horizontal" - -#~ msgid "Vertical adjustment" -#~ msgstr "Ajuste vertical" - #~ msgid "Horizontal Adjustment for the widget" #~ msgstr "Ajuste horizontal para el widget" diff --git a/po-properties/et.po b/po-properties/et.po index 09a9dd196c..db4028e441 100644 --- a/po-properties/et.po +++ b/po-properties/et.po @@ -1,13 +1,13 @@ # GTK+ omaduste eesti keele tõlge. # Estonian translation of GTK+-properties. # -# Copyright (C) 1999, 2002-2006 Free Software Foundation, Inc. -# Copyright (C) 2007,2009,2010 The GNOME Project. +# Copyright (C) 1999, 2002–2006 Free Software Foundation, Inc. +# Copyright (C) 2007, 2009–2011 The GNOME Project. # This file is distributed under the same license as the gtk package. # # Lauris Kaplinski , 1999. -# Tõivo Leedjärv , 2002-2004. -# Ivar Smolin , 2005-2007, 2010. +# Tõivo Leedjärv , 2002–2004. +# Ivar Smolin , 2005–2007, 2010, 2011. # Priit Laes , 2006. # Mattias Põldaru , 2009. # @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: gtk+-properties HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk" -"+&component=general\n" -"POT-Creation-Date: 2009-07-30 14:59+0000\n" -"PO-Revision-Date: 2010-10-30 11:45+0300\n" +"%2b&component=general\n" +"POT-Creation-Date: 2011-01-15 05:40+0000\n" +"PO-Revision-Date: 2011-01-15 16:02+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" @@ -25,60 +25,68 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -msgid "Loop" -msgstr "Korduv" +#, fuzzy +#| msgid "Default Display" +msgid "Display" +msgstr "Kuva" -msgid "Whether the animation should loop when it reaches the end" -msgstr "Kas animatsioonid peavad lõppedes uuesti alustama või mitte" +msgid "Cursor type" +msgstr "Kursori liik" -msgid "Number of Channels" -msgstr "Kanalite arv" +#, fuzzy +msgid "Standard cursor type" +msgstr "Teisene tekst" -msgid "The number of samples per pixel" -msgstr "Näidiste arv piksli kohta" - -msgid "Colorspace" -msgstr "Värviruum" - -msgid "The colorspace in which the samples are interpreted" -msgstr "Värviruum, milles näidiseid tõlgendatakse" - -msgid "Has Alpha" -msgstr "Alfa väärtusega" - -msgid "Whether the pixbuf has an alpha channel" -msgstr "Kas pixbuf'il on alfakanal" - -msgid "Bits per Sample" -msgstr "Bitte näidise kohta" - -msgid "The number of bits per sample" -msgstr "Näidise bittide arv" - -msgid "Width" -msgstr "Laius" - -msgid "The number of columns of the pixbuf" -msgstr "Pixbuf'i tulpade arv" - -msgid "Height" -msgstr "Kõrgus" - -msgid "The number of rows of the pixbuf" -msgstr "Pixbuf'i veergude arv" - -msgid "Rowstride" +msgid "Display of this cursor" msgstr "" -msgid "" -"The number of bytes between the start of a row and the start of the next row" -msgstr "Baitide arv rea ja järgmise rea alguse vahel" +msgid "Device Display" +msgstr "Seadme kuva" -msgid "Pixels" -msgstr "Piksleid" +msgid "Display which the device belongs to" +msgstr "Kuva, mille alla seade kuulub" -msgid "A pointer to the pixel data of the pixbuf" -msgstr "Viit pixbuf'i piksliandmetele" +msgid "Device manager" +msgstr "Seadmehaldur" + +msgid "Device manager which the device belongs to" +msgstr "Seadmehaldur, mille alla seade kuulub" + +msgid "Device name" +msgstr "Seadme nimi" + +msgid "Device type" +msgstr "Seadme liik" + +msgid "Device role in the device manager" +msgstr "Seadme roll seadmehalduris" + +msgid "Associated device" +msgstr "" + +msgid "Associated pointer or keyboard with this device" +msgstr "" + +msgid "Input source" +msgstr "Sisendallikas" + +msgid "Source type for the device" +msgstr "Selle seadme sisendallika liik" + +msgid "Input mode for the device" +msgstr "Seadme sisendrežiim" + +msgid "Whether the device has a cursor" +msgstr "Kas seadmel on kursor või mitte" + +msgid "Whether there is a visible cursor following device motion" +msgstr "Kas seadmel on selle liikumist järgiv nähtav kursor või mitte" + +msgid "Number of axes in the device" +msgstr "Seadme telgede arv" + +msgid "Display for the device manager" +msgstr "" msgid "Default Display" msgstr "Vaikimisi kuva" @@ -86,12 +94,6 @@ msgstr "Vaikimisi kuva" msgid "The default display for GDK" msgstr "GDK vaikimisi kuva" -msgid "Screen" -msgstr "Ekraan" - -msgid "the GdkScreen for the renderer" -msgstr "Renderdaja GdkScreen" - msgid "Font options" msgstr "Kirjatüübi valikud" @@ -104,6 +106,27 @@ msgstr "Fondi eraldusvõime" msgid "The resolution for fonts on the screen" msgstr "Ekraanifontide eraldusvõime" +msgid "Cursor" +msgstr "Kursor" + +msgid "Device ID" +msgstr "Seadme ID" + +msgid "Device identifier" +msgstr "Seadme identifikaator" + +msgid "Opcode" +msgstr "" + +msgid "Opcode for XInput2 requests" +msgstr "" + +msgid "Event base" +msgstr "" + +msgid "Event base for XInput events" +msgstr "" + msgid "Program name" msgstr "Programmi nimi" @@ -132,6 +155,12 @@ msgstr "Kommentaaristring" msgid "Comments about the program" msgstr "Programmi kohta käivad kommentaarid" +msgid "License Type" +msgstr "Litsentsi liik" + +msgid "The license type of the program" +msgstr "Programmi litsentsi liik" + msgid "Website URL" msgstr "Veebisaidi URL" @@ -141,12 +170,10 @@ msgstr "Programmi veebisaidi URL" msgid "Website label" msgstr "Veebisaidi silt" -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"Programmi veebisaidi URL-i silt. Kui seda pole määratud, siis vaikimis on " -"selleks URL ise" +#, fuzzy +#| msgid "The URL for the link to the website of the program" +msgid "The label for the link to the website of the program" +msgstr "Programmi veebisaidi URL" msgid "Authors" msgstr "Autorid" @@ -311,6 +338,13 @@ msgid "" "use)." msgstr "" +msgid "Always show image" +msgstr "" + +#, fuzzy +msgid "Whether the image will always be shown" +msgstr "Kas vidin on nähtav või mitte" + msgid "A name for the action group." msgstr "Tegevuste grupi nimi." @@ -429,6 +463,76 @@ msgstr "Parempoolne polsterdus" msgid "The padding to insert at the right of the widget." msgstr "Vidina paremale poole lisatav polsterdus." +msgid "Include an 'Other...' item" +msgstr "" + +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" + +msgid "Content type" +msgstr "Sisu liik" + +msgid "The content type used by the open with object" +msgstr "" + +msgid "GFile" +msgstr "" + +msgid "The GFile used by the app chooser dialog" +msgstr "" + +msgid "Show default app" +msgstr "" + +#, fuzzy +#| msgid "Whether the widget is the default widget" +msgid "Whether the widget should show the default application" +msgstr "Kas vidin on vaikimisi vidin või mitte" + +msgid "Show recommended apps" +msgstr "" + +#, fuzzy +#| msgid "Whether images should be shown on buttons" +msgid "Whether the widget should show recommended applications" +msgstr "Kas nuppudel näidatakse pilte või mitte" + +msgid "Show fallback apps" +msgstr "" + +#, fuzzy +#| msgid "Whether the widget is the default widget" +msgid "Whether the widget should show fallback applications" +msgstr "Kas vidin on vaikimisi vidin või mitte" + +#, fuzzy +#| msgid "Show Tooltips" +msgid "Show other apps" +msgstr "Vihjete näitamine" + +#, fuzzy +#| msgid "Whether the widget has the input focus" +msgid "Whether the widget should show other applications" +msgstr "Kas vidin on sisestamisfookuses või mitte" + +#, fuzzy +#| msgid "Show Day Names" +msgid "Show all apps" +msgstr "Päevanimede näitamine" + +#, fuzzy +#| msgid "Whether images should be shown on buttons" +msgid "Whether the widget should show all applications" +msgstr "Kas nuppudel näidatakse pilte või mitte" + +msgid "Widget's default text" +msgstr "" + +msgid "The default text appearing when there are no applications" +msgstr "" + msgid "Arrow direction" msgstr "Noole suund" @@ -541,9 +645,13 @@ msgstr "" msgid "Layout style" msgstr "Paigutuse laad" +#, fuzzy +#| msgid "" +#| "How to layout the buttons in the box. Possible values are default, " +#| "spread, edge, start and end" msgid "" -"How to layout the buttons in the box. Possible values are default, spread, " -"edge, start and end" +"How to lay out the buttons in the box. Possible values are: spread, edge, " +"start and end" msgstr "" "Kuidas nupud kastis asetsevad. Võimalikud väärtused on vaikimisi, kõrvuti, " "serval, alguses ja lõpus" @@ -665,16 +773,20 @@ msgstr "Pildi asukoht teksti suhtes" msgid "Default Spacing" msgstr "" -msgid "Extra space to add for CAN_DEFAULT buttons" +#, fuzzy +#| msgid "Extra space to add for CAN_DEFAULT buttons" +msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "CAN_DEFAULT nuppudele lisatav täiendav ruum" msgid "Default Outside Spacing" msgstr "" +#, fuzzy +#| msgid "Extra space to add for CAN_DEFAULT buttons" msgid "" -"Extra space to add for CAN_DEFAULT buttons that is always drawn outside the " -"border" -msgstr "" +"Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " +"the border" +msgstr "CAN_DEFAULT nuppudele lisatav täiendav ruum" msgid "Child X Displacement" msgstr "" @@ -710,12 +822,6 @@ msgstr "Pildi kaugus" msgid "Spacing in pixels between the image and label" msgstr "Pildi ja sildi vahel oleva vahe suurus pikslites" -msgid "Show button images" -msgstr "Nuppude piltide näitamine" - -msgid "Whether images should be shown on buttons" -msgstr "Kas nuppudel näidatakse pilte või mitte" - msgid "Year" msgstr "Aasta" @@ -778,6 +884,146 @@ msgstr "Üksikasjade näitamine" msgid "If TRUE, details are shown" msgstr "Kui märgitud, siis näidatakse üksikasju" +msgid "Inner border" +msgstr "Sisemine ääris" + +#, fuzzy +#| msgid "Inner Border" +msgid "Inner border space" +msgstr "Sisemine ääris" + +msgid "Vertical separation" +msgstr "" + +#, fuzzy +msgid "Space between day headers and main area" +msgstr "Nuppude vahel olev ruum" + +msgid "Horizontal separation" +msgstr "" + +#, fuzzy +msgid "Space between week headers and main area" +msgstr "Nuppude vahel olev ruum" + +msgid "Space which is inserted between cells" +msgstr "" + +#, fuzzy +#| msgid "Whether the widget responds to input" +msgid "Whether the cell expands" +msgstr "Kas vidin reageerib sisendile või mitte" + +#, fuzzy +#| msgid "xalign" +msgid "Align" +msgstr "x-joondus" + +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether cell should align with adjacent rows" +msgstr "Kas lapsed peaksid kõik olema sama suurusega või mitte" + +#, fuzzy +#| msgid "Pixel size" +msgid "Fixed Size" +msgstr "Piksli suurus" + +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether cells should be the same size in all rows" +msgstr "Kas lapsed peaksid kõik olema sama suurusega või mitte" + +#, fuzzy +#| msgid "Page type" +msgid "Pack Type" +msgstr "Lehekülje liik" + +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" + +msgid "Focus Cell" +msgstr "" + +#, fuzzy +#| msgid "The item which is currently active" +msgid "The cell which currently has focus" +msgstr "Hetkel aktiivne element" + +msgid "Edited Cell" +msgstr "" + +#, fuzzy +#| msgid "The item which is currently active" +msgid "The cell which is currently being edited" +msgstr "Hetkel aktiivne element" + +#, fuzzy +#| msgid "Widget" +msgid "Edit Widget" +msgstr "Vidin" + +#, fuzzy +#| msgid "The current page in the document" +msgid "The widget currently editing the edited cell" +msgstr "Dokumendi käesolev lehekülg" + +msgid "Area" +msgstr "" + +msgid "The Cell Area this context was created for" +msgstr "" + +msgid "Minimum Width" +msgstr "Minimaalne laius" + +#, fuzzy +#| msgid "Minimum child width" +msgid "Minimum cached width" +msgstr "Lapse vähim laius" + +#, fuzzy +#| msgid "Minimum child height" +msgid "Minimum Height" +msgstr "Lapse vähim kõrgus" + +#, fuzzy +#| msgid "Minimum child height" +msgid "Minimum cached height" +msgstr "Lapse vähim kõrgus" + +msgid "Editing Canceled" +msgstr "" + +msgid "Indicates that editing has been canceled" +msgstr "" + +msgid "Accelerator key" +msgstr "Kiirklahv" + +msgid "The keyval of the accelerator" +msgstr "Kiirklahvi väärtus" + +msgid "Accelerator modifiers" +msgstr "Kiirklahvide muuteklahvid" + +msgid "The modifier mask of the accelerator" +msgstr "Kiirklahvide muuteklahvi mask" + +msgid "Accelerator keycode" +msgstr "Kiirklahvi kood" + +msgid "The hardware keycode of the accelerator" +msgstr "Kiirklahvi raudvaraline klahvikood" + +msgid "Accelerator Mode" +msgstr "Kiirklahvide režiim" + +msgid "The type of accelerators" +msgstr "Kiirklahvide liik" + msgid "mode" msgstr "" @@ -853,6 +1099,14 @@ msgstr "Lahtri taustavärv" msgid "Cell background color as a GdkColor" msgstr "Lahtri taustavärv GdkColor vormingus" +msgid "Cell background RGBA color" +msgstr "Lahtri RGBA-taustavärv" + +#, fuzzy +#| msgid "Cell background color as a GdkColor" +msgid "Cell background color as a GdkRGBA" +msgstr "Lahtri taustavärv GdkColor vormingus" + msgid "Editing" msgstr "" @@ -865,30 +1119,6 @@ msgstr "" msgid "Whether this tag affects the cell background color" msgstr "" -msgid "Accelerator key" -msgstr "Kiirklahv" - -msgid "The keyval of the accelerator" -msgstr "Kiirklahvi väärtus" - -msgid "Accelerator modifiers" -msgstr "Kiirklahvide muuteklahvid" - -msgid "The modifier mask of the accelerator" -msgstr "Kiirklahvide muuteklahvi mask" - -msgid "Accelerator keycode" -msgstr "Kiirklahvi kood" - -msgid "The hardware keycode of the accelerator" -msgstr "Kiirklahvi raudvaraline klahvikood" - -msgid "Accelerator Mode" -msgstr "Kiirklahvide režiim" - -msgid "The type of accelerators" -msgstr "Kiirklahvide liik" - msgid "Model" msgstr "Mudel" @@ -985,16 +1215,18 @@ msgstr "Teksti Y-joondus" msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "Teksti püstjoondus: 0 - ülevalt, 1 - alt." -msgid "Orientation" -msgstr "Asend" +msgid "Inverted" +msgstr "Pööratud" -msgid "Orientation and growth direction of the progress bar" +#, fuzzy +#| msgid "Orientation and growth direction of the progress bar" +msgid "Invert the direction in which the progress bar grows" msgstr "Edenemisriba ja selle kasvamise suund" msgid "Adjustment" msgstr "Joondus" -msgid "The adjustment that holds the value of the spinbutton." +msgid "The adjustment that holds the value of the spin button" msgstr "" msgid "Climb rate" @@ -1009,6 +1241,22 @@ msgstr "Komakohti" msgid "The number of decimal places to display" msgstr "Kuvatavate komakohtade arv" +msgid "Active" +msgstr "Aktiivne" + +#, fuzzy +#| msgid "Whether the selected font style is shown in the label" +msgid "Whether the spinner is active (ie. shown) in the cell" +msgstr "Kas valitud kirjatüübi laadi näidatakse sildil või mitte" + +#, fuzzy +#| msgid "Name of the printer" +msgid "Pulse of the spinner" +msgstr "Printeri nimi" + +msgid "The GtkIconSize value that specifies the size of the rendered spinner" +msgstr "" + msgid "Text to render" msgstr "" @@ -1027,7 +1275,9 @@ msgstr "" msgid "Single Paragraph Mode" msgstr "Ühe lõigu stiil" -msgid "Whether or not to keep all text in a single paragraph" +#, fuzzy +#| msgid "Whether or not to keep all text in a single paragraph" +msgid "Whether to keep all text in a single paragraph" msgstr "Kas kogu teksti hoitakse ühe lõiguna" msgid "Background color name" @@ -1042,6 +1292,12 @@ msgstr "Taustavärv" msgid "Background color as a GdkColor" msgstr "Taustavärv GdkColor väärtusena" +msgid "Background color as RGBA" +msgstr "Taustavärv RGBA vormingus" + +msgid "Background color as a GdkRGBA" +msgstr "Taustavärv GdkRGBA väärtusena" + msgid "Foreground color name" msgstr "Esiplaanivärvi nimi" @@ -1054,6 +1310,12 @@ msgstr "Esiplaanivärv" msgid "Foreground color as a GdkColor" msgstr "Esiplaanivärv GdkColor väärtusena" +msgid "Foreground color as RGBA" +msgstr "Esiplaanivärv RGBA vormingus" + +msgid "Foreground color as a GdkRGBA" +msgstr "Esiplaanivärv GdkRGBA väärtusena" + msgid "Editable" msgstr "Muudetav" @@ -1144,6 +1406,14 @@ msgstr "Laius märkides" msgid "The desired width of the label, in characters" msgstr "Sildi soovitud laius märkides" +msgid "Maximum Width In Characters" +msgstr "Maksimaalne laius märkides" + +#, fuzzy +#| msgid "The desired maximum width of the label, in characters" +msgid "The maximum width of the cell, in characters" +msgstr "Sildi suurim soovitud laius märkides" + msgid "Wrap mode" msgstr "Murdmisrežiim" @@ -1292,12 +1562,45 @@ msgstr "Näidiku suurus" msgid "Size of check or radio indicator" msgstr "Märkeruudu või raadionäidiku suurus" +msgid "Background RGBA color" +msgstr "RGBA-taustavärv" + msgid "CellView model" msgstr "LahtriVaate (CellView) mudel" msgid "The model for cell view" msgstr "Lahtrivaate mudel" +msgid "Cell Area" +msgstr "" + +msgid "The GtkCellArea used to layout cells" +msgstr "" + +msgid "Cell Area Context" +msgstr "" + +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "" + +#, fuzzy +#| msgid "Sensitive" +msgid "Draw Sensitive" +msgstr "Tundlik" + +#, fuzzy +#| msgid "Whether there should be an icon near the item" +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Kas kirje ligidal peaks olema ikoon või mitte" + +#, fuzzy +#| msgid "Model" +msgid "Fit Model" +msgstr "Mudel" + +msgid "Whether to request enough space for every row in the model" +msgstr "" + msgid "Indicator Size" msgstr "Näidiku suurus" @@ -1307,9 +1610,6 @@ msgstr "Ruum näidiku ümber" msgid "Spacing around check or radio indicator" msgstr "Ruum märkeruudu või raadionäidiku ümber" -msgid "Active" -msgstr "Aktiivne" - msgid "Whether the menu item is checked" msgstr "" @@ -1328,7 +1628,9 @@ msgstr "" msgid "Use alpha" msgstr "Läbipaistvuse kasutamine" -msgid "Whether or not to give the color an alpha value" +#, fuzzy +#| msgid "Whether or not to give the color an alpha value" +msgid "Whether to give the color an alpha value" msgstr "Kas värvus on läbipaistev või mitte" msgid "Title" @@ -1350,6 +1652,12 @@ msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "Läbipaistvuse tase (0 - täiesti läbipaistev, 65535 - täiesti läbipaistmatu)" +msgid "Current RGBA Color" +msgstr "Praegune RGBA-värvus" + +msgid "The selected RGBA color" +msgstr "Valitud RGBA-värvus" + msgid "Has Opacity Control" msgstr "Koos katvuse määramisega" @@ -1370,11 +1678,11 @@ msgstr "" "Praegune katvuse väärtus (0 on täiesti läbipaistev, 65535 on täiesti " "läbipaistmatu)" -msgid "Custom palette" -msgstr "Kohandatud palett" +msgid "Current RGBA" +msgstr "Praegune RGBA" -msgid "Palette to use in the color selector" -msgstr "Värvusevalikus kasutatav palett" +msgid "The current RGBA color" +msgstr "Praegune RGBA-värvus" msgid "Color Selection" msgstr "Värvuse valik" @@ -1400,36 +1708,6 @@ msgstr "Abinupp" msgid "The help button of the dialog." msgstr "Dialoogi abinupp." -msgid "Enable arrow keys" -msgstr "Nooleklahvide lubamine" - -msgid "Whether the arrow keys move through the list of items" -msgstr "Kas nooleklahve saab kasutada kirjete loendis liikumiseks" - -msgid "Always enable arrows" -msgstr "Nooled on alati lubatud" - -msgid "Obsolete property, ignored" -msgstr "Iganenud omadus, mida eiratakse" - -msgid "Case sensitive" -msgstr "Tõstutundlik" - -msgid "Whether list item matching is case sensitive" -msgstr "Kas vastav nimekirja kirje on tõstutundlik või mitte" - -msgid "Allow empty" -msgstr "" - -msgid "Whether an empty value may be entered in this field" -msgstr "" - -msgid "Value in list" -msgstr "" - -msgid "Whether entered values must already be present in the list" -msgstr "" - msgid "ComboBox model" msgstr "" @@ -1494,6 +1772,51 @@ msgstr "Nupu tundlikkus" msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Kas nupp saab selle hiirega klõpsamisel fookuse või mitte" +#, fuzzy +#| msgid "Whether the combo box draws a frame around the child" +msgid "Whether combo box has an entry" +msgstr "Kas valikukast joonistab lapskirje ümber raami või mitte" + +#, fuzzy +#| msgid "Text Column" +msgid "Entry Text Column" +msgstr "Tekstiveerg" + +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" +msgstr "" + +#, fuzzy +#| msgid "Columns" +msgid "ID Column" +msgstr "Veerge" + +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "" + +#, fuzzy +#| msgid "Active" +msgid "Active id" +msgstr "Aktiivne" + +#, fuzzy +#| msgid "The name of the icon from the icon theme" +msgid "The value of the id column for the active row" +msgstr "Ikooniteemast pärinev ikooni nimi" + +#, fuzzy +#| msgid "Fixed Width" +msgid "Popup Fixed Width" +msgstr "Fikseeritud laius" + +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "" + msgid "Appears as list" msgstr "" @@ -1530,42 +1853,6 @@ msgstr "" msgid "Can be used to add a new child to the container" msgstr "" -msgid "Curve type" -msgstr "Kaare liik" - -msgid "Is this curve linear, spline interpolated, or free-form" -msgstr "" - -msgid "Minimum X" -msgstr "Väikseim X" - -msgid "Minimum possible value for X" -msgstr "X-i väikseim võimalik väärtus" - -msgid "Maximum X" -msgstr "Suurim X" - -msgid "Maximum possible X value" -msgstr "X-i suurim võimalik väärtus" - -msgid "Minimum Y" -msgstr "Väikseim Y" - -msgid "Minimum possible value for Y" -msgstr "Y-i väikseim võimalik väärtus" - -msgid "Maximum Y" -msgstr "Suurim Y" - -msgid "Maximum possible value for Y" -msgstr "Y-i suurim võimalik väärtus" - -msgid "Has separator" -msgstr "Omab eraldajat" - -msgid "The dialog has a separator bar above its buttons" -msgstr "Kas dialoogil on nuppude kohal eraldaja" - msgid "Content area border" msgstr "Sisupiirkonna ääris" @@ -1697,11 +1984,13 @@ msgstr "Teksti pikkus" msgid "Length of the text currently in the entry" msgstr "" -msgid "Invisible char set" -msgstr "Nähtamatu märk määratud" +#, fuzzy +#| msgid "Invisible character" +msgid "Invisible character set" +msgstr "Nähtamatu märk" #, fuzzy -msgid "Whether the invisible char has been set" +msgid "Whether the invisible character has been set" msgstr "Kas ikooni suuruse omadus on määratud või mitte" msgid "Caps Lock warning" @@ -1876,24 +2165,6 @@ msgstr "Edenemisriba tekst" msgid "Border between text and frame." msgstr "Teksti ja raami vahel asuv ääris." -msgid "State Hint" -msgstr "Olekusvihje" - -msgid "Whether to pass a proper state when drawing shadow or background" -msgstr "" - -msgid "Select on focus" -msgstr "Valimine fokuseerimisel" - -msgid "Whether to select the contents of an entry when it is focused" -msgstr "Kas kirje fokuseerimisel tuleb kirje sisu valida või mitte" - -msgid "Password Hint Timeout" -msgstr "Paroolivihje ajapiirang" - -msgid "How long to show the last input character in hidden entries" -msgstr "" - #, fuzzy msgid "The contents of the buffer" msgstr "Sildi tekst" @@ -1989,6 +2260,16 @@ msgstr "Sildividin" msgid "A widget to display in place of the usual expander label" msgstr "" +#, fuzzy +#| msgid "Label" +msgid "Label fill" +msgstr "Silt" + +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether the label widget should fill all available horizontal space" +msgstr "Kas lapsed peaksid kõik olema sama suurusega või mitte" + msgid "Expander Size" msgstr "Laiendaja suurus" @@ -1998,18 +2279,24 @@ msgstr "Laiendaja noole suurus" msgid "Spacing around expander arrow" msgstr "Laiendaja noole ümber olev ruum" +msgid "Dialog" +msgstr "Dialoog" + +msgid "The file chooser dialog to use." +msgstr "Failivalimise dialoog." + +msgid "The title of the file chooser dialog." +msgstr "Failivalimise dialoogi pealkiri" + +msgid "The desired width of the button widget, in characters." +msgstr "Nupuvidina soovitud laius märkides" + msgid "Action" msgstr "Tegevus" msgid "The type of operation that the file selector is performing" msgstr "Failivalija poolt teostatava operatsiooni liik." -msgid "File System Backend" -msgstr "Failisüsteemi taustaprogramm" - -msgid "Name of file system backend to use" -msgstr "Kasutatava failisüsteemi taustaprogrammi nimi" - msgid "Filter" msgstr "Filter" @@ -2073,7 +2360,7 @@ msgstr "" #, fuzzy #| msgid "Show file operations" -msgid "Allow folders creation" +msgid "Allow folder creation" msgstr "Näita failitegevusi" #, fuzzy @@ -2087,30 +2374,6 @@ msgstr "" "Kas failivalija peab salvestamisel küsima faili ülekirjutamise kohta " "kinnitust või mitte." -msgid "Dialog" -msgstr "Dialoog" - -msgid "The file chooser dialog to use." -msgstr "Failivalimise dialoog." - -msgid "The title of the file chooser dialog." -msgstr "Failivalimise dialoogi pealkiri" - -msgid "The desired width of the button widget, in characters." -msgstr "Nupuvidina soovitud laius märkides" - -msgid "Filename" -msgstr "Failinimi" - -msgid "The currently selected filename" -msgstr "Hetkel valitud faili nimi" - -msgid "Show file operations" -msgstr "Näita failitegevusi" - -msgid "Whether buttons for creating/manipulating files should be displayed" -msgstr "" - msgid "X position" msgstr "X-asukoht" @@ -2163,9 +2426,6 @@ msgstr "Kas valitud kirjatüübi suurust näidatakse sildil või mitte" msgid "The string that represents this font" msgstr "Seda kirjatüüpi esitav X-string" -msgid "The GdkFont that is currently selected" -msgstr "Hetkel valitud GdkFont" - msgid "Preview text" msgstr "Näidistekst" @@ -2187,9 +2447,6 @@ msgstr "Sildi Y-joondus" msgid "The vertical alignment of the label" msgstr "Sildi püstine joondamine" -msgid "Deprecated property, use shadow_type instead" -msgstr "" - msgid "Frame shadow" msgstr "Raami vari" @@ -2199,6 +2456,66 @@ msgstr "Raami äärise välimus" msgid "A widget to display in place of the usual frame label" msgstr "" +msgid "Row spacing" +msgstr "Ruum ridade vahel" + +msgid "The amount of space between two consecutive rows" +msgstr "Kahe kohakuti oleva rea vahele jäetava ruumi hulk" + +msgid "Column spacing" +msgstr "Ruum veergude vahel" + +msgid "The amount of space between two consecutive columns" +msgstr "Kahe kõrvuti oleva veeru vahele jäetava ruumi hulk" + +#, fuzzy +#| msgid "Homogeneous" +msgid "Row Homogeneous" +msgstr "Homogeenne" + +#, fuzzy +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the rows are all the same height" +msgstr "Kui märgitud, siis on kõik tabeli lahtrid sama kõrguse ja laiusega" + +#, fuzzy +#| msgid "Homogeneous" +msgid "Column Homogeneous" +msgstr "Homogeenne" + +#, fuzzy +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the columns are all the same width" +msgstr "Kui märgitud, siis on kõik tabeli lahtrid sama kõrguse ja laiusega" + +msgid "Left attachment" +msgstr "" + +msgid "The column number to attach the left side of the child to" +msgstr "" + +msgid "Top attachment" +msgstr "" + +msgid "The row number to attach the top side of a child widget to" +msgstr "" + +msgid "Width" +msgstr "Laius" + +#, fuzzy +#| msgid "The number of columns in the table" +msgid "The number of columns that a child spans" +msgstr "Tabelis olevate veergude arv" + +msgid "Height" +msgstr "Kõrgus" + +#, fuzzy +#| msgid "The number of rows in the table" +msgid "The number of rows that a child spans" +msgstr "Tabelis olevate ridade arv" + msgid "Appearance of the shadow that surrounds the container" msgstr "Konteineri ümber oleva varju välimus" @@ -2292,6 +2609,9 @@ msgstr "Ääris" msgid "Space which is inserted at the edges of the icon view" msgstr "Ikoonivaate servadele lisatav ruum" +msgid "Item Orientation" +msgstr "" + msgid "" "How the text and icon of each item are positioned relative to each other" msgstr "" @@ -2308,6 +2628,12 @@ msgstr "Vihjeveerg" msgid "The column in the model containing the tooltip texts for the items" msgstr "Mudelis asuv veerg, mis sisaldab kirjete tekstilisi vihjeid" +msgid "Item Padding" +msgstr "" + +msgid "Padding around icon view items" +msgstr "" + msgid "Selection Box Color" msgstr "Valikukasti värv" @@ -2326,23 +2652,8 @@ msgstr "" msgid "A GdkPixbuf to display" msgstr "" -msgid "Pixmap" -msgstr "" - -msgid "A GdkPixmap to display" -msgstr "" - -msgid "Image" -msgstr "Pilt" - -msgid "A GdkImage to display" -msgstr "" - -msgid "Mask" -msgstr "Mask" - -msgid "Mask bitmap to use with GdkImage or GdkPixmap" -msgstr "" +msgid "Filename" +msgstr "Failinimi" msgid "Filename to load and display" msgstr "" @@ -2387,13 +2698,6 @@ msgstr "" msgid "Whether to use the label text to create a stock menu item" msgstr "Kas sildi teksti saab hiirega märkida või mitte" -msgid "Always show image" -msgstr "" - -#, fuzzy -msgid "Whether the image will always be shown" -msgstr "Kas vidin on nähtav või mitte" - #, fuzzy msgid "Accel Group" msgstr "Tegevuste grupp" @@ -2402,12 +2706,6 @@ msgstr "Tegevuste grupp" msgid "The Accel Group to use for stock accelerator keys" msgstr "Vidin kiirendite muutumiste jälgimiseks" -msgid "Show menu images" -msgstr "" - -msgid "Whether images should be shown in menus" -msgstr "" - msgid "Message Type" msgstr "Teate liik" @@ -2426,6 +2724,9 @@ msgstr "Nuppude vahel olev ruum" msgid "Width of border around the action area" msgstr "Ümber peadialoogi piirkonna oleva äärise laius" +msgid "Screen" +msgstr "Ekraan" + msgid "The screen where this window will be displayed" msgstr "" @@ -2499,9 +2800,6 @@ msgstr "Nurk" msgid "Angle at which the label is rotated" msgstr "Nurk, millega silti pööratakse" -msgid "Maximum Width In Characters" -msgstr "Maksimaalne laius märkides" - msgid "The desired maximum width of the label, in characters" msgstr "Sildi suurim soovitud laius märkides" @@ -2511,21 +2809,6 @@ msgstr "Külastatud viitade jälgimine" msgid "Whether visited links should be tracked" msgstr "Kas külastatud viitasid tuleb jälgida või mitte" -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "" - -msgid "Horizontal adjustment" -msgstr "" - -msgid "The GtkAdjustment for the horizontal position" -msgstr "" - -msgid "Vertical adjustment" -msgstr "" - -msgid "The GtkAdjustment for the vertical position" -msgstr "" - msgid "The width of the layout" msgstr "Paigutuse laius" @@ -2544,6 +2827,27 @@ msgstr "Külastatud" msgid "Whether this link has been visited." msgstr "Kas viidatud kohta on külastatud või mitte." +msgid "Pack direction" +msgstr "" + +msgid "The pack direction of the menubar" +msgstr "" + +msgid "Child Pack direction" +msgstr "" + +msgid "The child pack direction of the menubar" +msgstr "" + +msgid "Style of bevel around the menubar" +msgstr "" + +msgid "Internal padding" +msgstr "Sisepolsterdus" + +msgid "Amount of border space between the menubar shadow and the menu items" +msgstr "Äärise ruum menüüriba varju ja menüükirjete vahel" + msgid "The currently selected menu item" msgstr "Hetkel valitud menüükirje" @@ -2635,9 +2939,6 @@ msgstr "Kerimisnoolte asukohtade määramine" msgid "Left Attach" msgstr "" -msgid "The column number to attach the left side of the child to" -msgstr "" - msgid "Right Attach" msgstr "" @@ -2659,55 +2960,6 @@ msgstr "" msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "" -msgid "Can change accelerators" -msgstr "" - -msgid "" -"Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "" - -msgid "Delay before submenus appear" -msgstr "" - -msgid "" -"Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "" - -msgid "Delay before hiding a submenu" -msgstr "" - -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "" - -msgid "Pack direction" -msgstr "" - -msgid "The pack direction of the menubar" -msgstr "" - -msgid "Child Pack direction" -msgstr "" - -msgid "The child pack direction of the menubar" -msgstr "" - -msgid "Style of bevel around the menubar" -msgstr "" - -msgid "Internal padding" -msgstr "Sisemine polsterdus" - -msgid "Amount of border space between the menubar shadow and the menu items" -msgstr "Äärise ruum menüüriba varju ja menüükirjete vahel" - -msgid "Delay before drop down menus appear" -msgstr "Viivitus enne rippmenüüde ilmumist" - -msgid "Delay before the submenus of a menu bar appear" -msgstr "Viivitus enne menüüriba alammenüüde ilmumist" - msgid "Right Justified" msgstr "" @@ -2758,13 +3010,6 @@ msgstr "Pildi/sildi ääris" msgid "Width of border around the label and image in the message dialog" msgstr "Sõnumidialoogis oleva pildi või sildi äärise laius" -msgid "Use separator" -msgstr "Eraldaja kasutamine" - -msgid "" -"Whether to put a separator between the message dialog's text and the buttons" -msgstr "Kas teatedialoogi teate ja nuppude vahel peab olema eraldaja" - msgid "Message Buttons" msgstr "Teatenupud" @@ -2792,9 +3037,20 @@ msgstr "" msgid "The secondary text includes Pango markup." msgstr "" +msgid "Image" +msgstr "Pilt" + msgid "The image" msgstr "Pilt" +#, fuzzy +#| msgid "Message Type" +msgid "Message area" +msgstr "Teate liik" + +msgid "GtkVBox that holds the dialog's primary and secondary labels" +msgstr "" + msgid "Y align" msgstr "Y-joondus" @@ -2843,34 +3099,20 @@ msgstr "Sakkide asukoht" msgid "Which side of the notebook holds the tabs" msgstr "Millisel märkmiku küljel sakke hoitakse" -msgid "Tab Border" -msgstr "Saki ääris" - -msgid "Width of the border around the tab labels" -msgstr "Saki sildi ümber oleva äärise laius" - -msgid "Horizontal Tab Border" -msgstr "Saki rõhtne ääris" - -msgid "Width of the horizontal border of tab labels" -msgstr "Sakisildi rõhtsa äärise laius" - -msgid "Vertical Tab Border" -msgstr "Saki püstine ääris" - -msgid "Width of the vertical border of tab labels" -msgstr "Sakisildi püstise äärise laius" - msgid "Show Tabs" msgstr "Sakkide näitamine" -msgid "Whether tabs should be shown or not" +#, fuzzy +#| msgid "Whether tabs should be shown or not" +msgid "Whether tabs should be shown" msgstr "Kas sakke näidatakse või mitte" msgid "Show Border" msgstr "Äärise näitamine" -msgid "Whether the border should be shown or not" +#, fuzzy +#| msgid "Whether the border should be shown or not" +msgid "Whether the border should be shown" msgstr "Kas äärist näidatakse või mitte" msgid "Scrollable" @@ -2891,21 +3133,16 @@ msgstr "" "Kui TÕENE, siis märkmikul parema hiirenupuga klõpsamine avab lehekülje " "vahetamise hüpikmenuu" -msgid "Whether tabs should have homogeneous sizes" -msgstr "Kas sakis peavad olema ühesuurused või mitte" - -msgid "Group ID" +#, fuzzy +#| msgid "Group ID" +msgid "Group Name" msgstr "Grupi ID" -msgid "Group ID for tabs drag and drop" +#, fuzzy +#| msgid "Group ID for tabs drag and drop" +msgid "Group name for tab drag and drop" msgstr "Grupi ID sakkide lohistamiseks" -msgid "Group" -msgstr "Grupp" - -msgid "Group for tabs drag and drop" -msgstr "" - msgid "Tab label" msgstr "Saki silt" @@ -2921,23 +3158,26 @@ msgstr "Alammenüü kirjes näidatav silt" msgid "Tab expand" msgstr "" -msgid "Whether to expand the child's tab or not" -msgstr "" +#, fuzzy +#| msgid "Whether to wrap the license text." +msgid "Whether to expand the child's tab" +msgstr "Kas litsentsi tekstu murtakse või mitte." msgid "Tab fill" msgstr "" -msgid "Whether the child's tab should fill the allocated area or not" -msgstr "" - -msgid "Tab pack type" -msgstr "" +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether the child's tab should fill the allocated area" +msgstr "Kas lapsed peaksid kõik olema sama suurusega või mitte" msgid "Tab reorderable" msgstr "" -msgid "Whether the tab is reorderable by user action or not" -msgstr "" +#, fuzzy +#| msgid "Whether the tab is detachable" +msgid "Whether the tab is reorderable by user action" +msgstr "Kas sakk on lahtihaagitav või mitte" msgid "Tab detachable" msgstr "Sakk lahtihaagitav" @@ -2989,20 +3229,50 @@ msgstr "" msgid "Scroll arrow spacing" msgstr "" -msgid "User Data" +msgid "Icon's count" msgstr "" -msgid "Anonymous User Data Pointer" +#, fuzzy +#| msgid "The index of the current page" +msgid "The count of the emblem currently displayed" +msgstr "Käesoleva lehe indeks" + +#, fuzzy +#| msgid "Icon Name" +msgid "Icon's label" +msgstr "Ikooni nimi" + +msgid "The label to be displayed over the icon" msgstr "" -msgid "The menu of options" +#, fuzzy +#| msgid "Icon size set" +msgid "Icon's style context" +msgstr "Ikooni suurus määratud" + +msgid "The style context to theme the icon appearance" msgstr "" -msgid "Size of dropdown indicator" +#, fuzzy +#| msgid "Background color" +msgid "Background icon" +msgstr "Taustavärv" + +msgid "The icon for the number emblem background" msgstr "" -msgid "Spacing around indicator" -msgstr "Näidiku ümber olev ruum" +#, fuzzy +#| msgid "Background color name" +msgid "Background icon name" +msgstr "Taustavärvi nimi" + +#, fuzzy +#| msgid "The icon name to use for the printer" +msgid "The icon name for the number emblem background" +msgstr "Printeri jaoks kasutatava ikooni nimi" + +msgid "Orientation" +msgstr "Asend" #, fuzzy msgid "The orientation of the orientable" @@ -3051,8 +3321,10 @@ msgstr "" msgid "Embedded" msgstr "" -msgid "Whether or not the plug is embedded" -msgstr "" +#, fuzzy +#| msgid "Whether or not the status icon is embedded" +msgid "Whether the plug is embedded" +msgstr "Kas olekuikoon on põimitud või mitte" msgid "Socket Window" msgstr "" @@ -3061,10 +3333,6 @@ msgstr "" msgid "The window of the socket the plug is embedded in" msgstr "Kas olekuikoon on põimitud või mitte" -msgid "" -"Whether the preview widget should take up the entire space it is allocated" -msgstr "" - msgid "Name of the printer" msgstr "Printeri nimi" @@ -3252,7 +3520,7 @@ msgstr "" msgid "Has Selection" msgstr "Värvuse valik" -msgid "TRUE if a selecion exists." +msgid "TRUE if a selection exists." msgstr "" #, fuzzy @@ -3262,6 +3530,16 @@ msgstr "Lehekülje sätted" msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "" +#, fuzzy +#| msgid "Number of Pages" +msgid "Number of Pages To Print" +msgstr "Lehekülgede arv" + +#, fuzzy +#| msgid "The number of pages in the document." +msgid "The number of pages that will be printed." +msgstr "Dokumendis olevate lehekülgede arv." + msgid "The GtkPageSetup to use" msgstr "" @@ -3271,7 +3549,7 @@ msgstr "Valitud printer" msgid "The GtkPrinter which is selected" msgstr "Valitud GtkPrinter" -msgid "Manual Capabilites" +msgid "Manual Capabilities" msgstr "" msgid "Capabilities the application can handle" @@ -3288,52 +3566,6 @@ msgstr "Kas tegevus on lubatud või mitte." msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" msgstr "" -msgid "Activity mode" -msgstr "" - -msgid "" -"If TRUE, the GtkProgress is in activity mode, meaning that it signals " -"something is happening, but not how much of the activity is finished. This " -"is used when you're doing something but don't know how long it will take." -msgstr "" - -msgid "Show text" -msgstr "Näidata tekstina" - -msgid "Whether the progress is shown as text." -msgstr "Kas edenemisriba näidatakse tekstina." - -msgid "The GtkAdjustment connected to the progress bar (Deprecated)" -msgstr "" - -msgid "Bar style" -msgstr "" - -msgid "Specifies the visual style of the bar in percentage mode (Deprecated)" -msgstr "" - -msgid "Activity Step" -msgstr "" - -msgid "The increment used for each iteration in activity mode (Deprecated)" -msgstr "" - -msgid "Activity Blocks" -msgstr "" - -msgid "" -"The number of blocks which can fit in the progress bar area in activity mode " -"(Deprecated)" -msgstr "" - -msgid "Discrete Blocks" -msgstr "" - -msgid "" -"The number of discrete blocks in a progress bar (when shown in the discrete " -"style)" -msgstr "" - msgid "Fraction" msgstr "" @@ -3349,42 +3581,60 @@ msgstr "" msgid "Text to be displayed in the progress bar" msgstr "" +msgid "Show text" +msgstr "Näidata tekstina" + +msgid "Whether the progress is shown as text." +msgstr "Kas edenemisriba näidatakse tekstina." + 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." msgstr "" -msgid "XSpacing" +#, fuzzy +#| msgid "XSpacing" +msgid "X spacing" msgstr "X-ruum" msgid "Extra spacing applied to the width of a progress bar." msgstr "Kerimisriba laiusele lisatav täiendav ruum." -msgid "YSpacing" +#, fuzzy +#| msgid "YSpacing" +msgid "Y spacing" msgstr "Y-ruum" msgid "Extra spacing applied to the height of a progress bar." msgstr "Kerimisriba kõrgusele lisatav täiendav ruum." -msgid "Min horizontal bar width" +#, fuzzy +#| msgid "Min horizontal bar width" +msgid "Minimum horizontal bar width" msgstr "Rõhtriba vähim laius" msgid "The minimum horizontal width of the progress bar" msgstr "Rõhtsa kerimisriba vähim laius" -msgid "Min horizontal bar height" +#, fuzzy +#| msgid "Min horizontal bar height" +msgid "Minimum horizontal bar height" msgstr "Rõhtriba vähim kõrgus" msgid "Minimum horizontal height of the progress bar" msgstr "Rõhtsa kerimisriba vähim kõrgus" -msgid "Min vertical bar width" +#, fuzzy +#| msgid "Min vertical bar width" +msgid "Minimum vertical bar width" msgstr "Püstriba vähim laius" msgid "The minimum vertical width of the progress bar" msgstr "Püstise kerimisriba vähim laius" -msgid "Min vertical bar height" +#, fuzzy +#| msgid "Min vertical bar height" +msgid "Minimum vertical bar height" msgstr "Püstriba vähim kõrgus" msgid "The minimum vertical height of the progress bar" @@ -3398,6 +3648,9 @@ msgid "" "is the current action of its group." msgstr "" +msgid "Group" +msgstr "Grupp" + msgid "The radio action whose group this action belongs to." msgstr "" @@ -3418,18 +3671,9 @@ msgstr "" msgid "The radio tool button whose group this button belongs to." msgstr "" -msgid "Update policy" -msgstr "" - -msgid "How the range should be updated on the screen" -msgstr "" - msgid "The GtkAdjustment that contains the current value of this range object" msgstr "" -msgid "Inverted" -msgstr "Pööratud" - msgid "Invert direction slider moves to increase range value" msgstr "Kas liuguri suund on pööratud või mitte" @@ -3467,6 +3711,16 @@ msgstr "" msgid "The fill level." msgstr "" +#, fuzzy +#| msgid "Digits" +msgid "Round Digits" +msgstr "Komakohti" + +#, fuzzy +#| msgid "The number of pages in the document." +msgid "The number of digits to round the value to." +msgstr "Dokumendis olevate lehekülgede arv." + msgid "Slider Width" msgstr "Liuguri laius" @@ -3505,22 +3759,6 @@ msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "" -msgid "Draw slider ACTIVE during drag" -msgstr "" - -msgid "" -"With this option set to TRUE, sliders will be drawn ACTIVE and with shadow " -"IN while they are dragged" -msgstr "" - -msgid "Trough Side Details" -msgstr "" - -msgid "" -"When TRUE, the parts of the trough on the two sides of the slider are drawn " -"with different details" -msgstr "" - msgid "Trough Under Steppers" msgstr "" @@ -3600,39 +3838,24 @@ msgstr "Hetkel aktiivne filter ressursivaliku kuva filtreerimiseks" msgid "The full path to the file to be used to store and read the list" msgstr "" -msgid "" -"The maximum number of items to be returned by gtk_recent_manager_get_items()" -msgstr "" - msgid "The size of the recently used resources list" msgstr "" -msgid "Lower" +msgid "The value of the scale" msgstr "" -msgid "Lower limit of ruler" +msgid "The icon size" +msgstr "Ikooni suurus" + +msgid "" +"The GtkAdjustment that contains the current value of this scale button object" msgstr "" -msgid "Upper" -msgstr "" +msgid "Icons" +msgstr "Ikoonid" -msgid "Upper limit of ruler" -msgstr "" - -msgid "Position of mark on the ruler" -msgstr "" - -msgid "Max Size" -msgstr "" - -msgid "Maximum size of the ruler" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "The metric used for the ruler" -msgstr "" +msgid "List of icon names" +msgstr "Ikooninimede loetelu" msgid "The number of decimal places that are displayed in the value" msgstr "" @@ -3661,21 +3884,34 @@ msgstr "Väärtuse kaugus" msgid "Space between value text and the slider/trough area" msgstr "" -msgid "The value of the scale" +msgid "Horizontal adjustment" msgstr "" -msgid "The icon size" -msgstr "Ikooni suurus" - msgid "" -"The GtkAdjustment that contains the current value of this scale button object" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" msgstr "" -msgid "Icons" -msgstr "Ikoonid" +msgid "Vertical adjustment" +msgstr "" -msgid "List of icon names" -msgstr "Ikooninimede loetelu" +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" + +#, fuzzy +#| msgid "Horizontal scale" +msgid "Horizontal Scrollable Policy" +msgstr "Rõhtskaala" + +msgid "How the size of the content should be determined" +msgstr "" + +#, fuzzy +#| msgid "Vertical scale" +msgid "Vertical Scrollable Policy" +msgstr "Püstskaala" msgid "Minimum Slider Length" msgstr "Liuguri vähim pikkus" @@ -3700,9 +3936,15 @@ msgstr "" msgid "Horizontal Adjustment" msgstr "" +msgid "The GtkAdjustment for the horizontal position" +msgstr "" + msgid "Vertical Adjustment" msgstr "" +msgid "The GtkAdjustment for the vertical position" +msgstr "" + msgid "Horizontal Scrollbar Policy" msgstr "" @@ -3749,12 +3991,21 @@ msgstr "Kerimisriba kaugus" msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Kerimisriba ja keritava akna vahel olevate pikslite arv" -msgid "Scrolled Window Placement" +#, fuzzy +#| msgid "Minimum Width" +msgid "Minimum Content Width" +msgstr "Minimaalne laius" + +msgid "The minimum width that the scrolled window will allocate to its content" msgstr "" +#, fuzzy +#| msgid "Minimum child height" +msgid "Minimum Content Height" +msgstr "Lapse vähim kõrgus" + msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." +"The minimum height that the scrolled window will allocate to its content" msgstr "" msgid "Draw" @@ -4094,6 +4345,123 @@ msgstr "Vihjete lubamine" msgid "Whether tooltips should be shown on widgets" msgstr "Kas vidinate vihjeid näidatakse või mitte" +msgid "Toolbar style" +msgstr "Tööriistarea laad" + +msgid "" +"Whether default toolbars have text only, text and icons, icons only, etc." +msgstr "" +"Näitab, kas vaikimisi on tööriistaribadel ainult tekst, ainult ikoonid või " +"mõlemad, jne." + +#, fuzzy +#| msgid "Toolbar icon size" +msgid "Toolbar Icon Size" +msgstr "Tööriistarea ikooni suurus" + +#, fuzzy +#| msgid "Size of icons in default toolbars" +msgid "The size of icons in default toolbars." +msgstr "Tööriistareal olevate ikoonide vaikimisi suurus" + +#, fuzzy +#| msgid "Enable Mnemonics" +msgid "Auto Mnemonics" +msgstr "Mnemoonilised kiirklahvid" + +msgid "" +"Whether mnemonics should be automatically shown and hidden when the user " +"presses the mnemonic activator." +msgstr "" + +msgid "Application prefers a dark theme" +msgstr "" + +#, fuzzy +msgid "Whether the application prefers to have a dark theme." +msgstr "Kas tegevus on lubatud või mitte." + +msgid "Show button images" +msgstr "Nuppude piltide näitamine" + +msgid "Whether images should be shown on buttons" +msgstr "Kas nuppudel näidatakse pilte või mitte" + +msgid "Select on focus" +msgstr "Valimine fokuseerimisel" + +msgid "Whether to select the contents of an entry when it is focused" +msgstr "Kas kirje fokuseerimisel tuleb kirje sisu valida või mitte" + +msgid "Password Hint Timeout" +msgstr "Paroolivihje ajapiirang" + +msgid "How long to show the last input character in hidden entries" +msgstr "" + +msgid "Show menu images" +msgstr "" + +msgid "Whether images should be shown in menus" +msgstr "" + +msgid "Delay before drop down menus appear" +msgstr "Viivitus enne rippmenüüde ilmumist" + +msgid "Delay before the submenus of a menu bar appear" +msgstr "Viivitus enne menüüriba alammenüüde ilmumist" + +msgid "Scrolled Window Placement" +msgstr "" + +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "" + +msgid "Can change accelerators" +msgstr "" + +msgid "" +"Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "" + +msgid "Delay before submenus appear" +msgstr "" + +msgid "" +"Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "" + +msgid "Delay before hiding a submenu" +msgstr "" + +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "" + +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "" + +msgid "Custom palette" +msgstr "Kohandatud palett" + +msgid "Palette to use in the color selector" +msgstr "Värvusevalikus kasutatav palett" + +msgid "IM Preedit style" +msgstr "" + +msgid "How to draw the input method preedit string" +msgstr "" + +msgid "IM Status style" +msgstr "" + +msgid "How to draw the input method statusbar" +msgstr "Kuidas peab sisendmeetodi olekuriba joonistama" + msgid "Mode" msgstr "" @@ -4109,9 +4477,6 @@ msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "" -msgid "The adjustment that holds the value of the spinbutton" -msgstr "" - msgid "Climb Rate" msgstr "" @@ -4148,11 +4513,9 @@ msgstr "" msgid "Style of bevel around the spin button" msgstr "" -msgid "Has Resize Grip" -msgstr "" - -msgid "Whether the statusbar has a grip for resizing the toplevel" -msgstr "" +#, fuzzy +msgid "Whether the spinner is active" +msgstr "Kas tegevus on lubatud või mitte." msgid "Style of bevel around the statusbar text" msgstr "" @@ -4163,16 +4526,14 @@ msgstr "Ikooni suurus" msgid "The screen where this status icon will be displayed" msgstr "Ekraan, kus seda olekuikooni kuvatakse" -msgid "Blinking" -msgstr "Vilkumine" - -msgid "Whether or not the status icon is blinking" -msgstr "Kas olekuikoon vilgub või mitte" - -msgid "Whether or not the status icon is visible" +#, fuzzy +#| msgid "Whether or not the status icon is visible" +msgid "Whether the status icon is visible" msgstr "Kas olekuikoon on nähtav või mitte" -msgid "Whether or not the status icon is embedded" +#, fuzzy +#| msgid "Whether or not the status icon is embedded" +msgid "Whether the status icon is embedded" msgstr "Kas olekuikoon on põimitud või mitte" msgid "The orientation of the tray" @@ -4199,6 +4560,33 @@ msgstr "Sellele salveikoonile näidatava vihje sisu" msgid "The title of this tray icon" msgstr "Selle salveikooni pealkiri" +msgid "Style context" +msgstr "" + +msgid "GtkStyleContext to get style from" +msgstr "" + +msgid "The associated GdkScreen" +msgstr "" + +#, fuzzy +#| msgid "Text direction" +msgid "Direction" +msgstr "Teksti suund" + +msgid "Text direction" +msgstr "Teksti suund" + +#, fuzzy +#| msgid "Whether the widget responds to input" +msgid "Whether the switch is on or off" +msgstr "Kas vidin reageerib sisendile või mitte" + +#, fuzzy +#| msgid "The minimum vertical width of the progress bar" +msgid "The minimum width of the handle" +msgstr "Püstise kerimisriba vähim laius" + msgid "Rows" msgstr "Ridu" @@ -4211,33 +4599,15 @@ msgstr "Veerge" msgid "The number of columns in the table" msgstr "Tabelis olevate veergude arv" -msgid "Row spacing" -msgstr "Ruum ridade vahel" - -msgid "The amount of space between two consecutive rows" -msgstr "Kahe kohakuti oleva rea vahele jäetava ruumi hulk" - -msgid "Column spacing" -msgstr "Ruum veergude vahel" - -msgid "The amount of space between two consecutive columns" -msgstr "Kahe kõrvuti oleva veeru vahele jäetava ruumi hulk" - msgid "If TRUE, the table cells are all the same width/height" msgstr "Kui märgitud, siis on kõik tabeli lahtrid sama kõrguse ja laiusega" -msgid "Left attachment" -msgstr "" - msgid "Right attachment" msgstr "" msgid "The column number to attach the right side of a child widget to" msgstr "" -msgid "Top attachment" -msgstr "" - msgid "The row number to attach the top of a child widget to" msgstr "" @@ -4257,7 +4627,7 @@ msgid "Options specifying the vertical behaviour of the child" msgstr "" msgid "Horizontal padding" -msgstr "Rõhtne polsterdus" +msgstr "Rõhtpolsterdus" msgid "" "Extra space to put between the child and its left and right neighbors, in " @@ -4267,7 +4637,7 @@ msgstr "" "hulk pikslites" msgid "Vertical padding" -msgstr "Püstine polsterdus" +msgstr "Püstpolsterdus" msgid "" "Extra space to put between the child and its upper and lower neighbors, in " @@ -4276,24 +4646,6 @@ msgstr "" "Alamkirje ülemise ja alumise naaberkirje vahele jäetava täiendava ruumi hulk " "pikslites" -msgid "Horizontal adjustment for the text widget" -msgstr "Tekstividina rõhtjoondus" - -msgid "Vertical adjustment for the text widget" -msgstr "Tekstividina püstjoondus" - -msgid "Line Wrap" -msgstr "Reamurdmine" - -msgid "Whether lines are wrapped at widget edges" -msgstr "Kas vidinate servas murtakse ridu või mitte" - -msgid "Word Wrap" -msgstr "Sõnade murdmine" - -msgid "Whether words are wrapped at widget edges" -msgstr "Kas sõnad murtakse vidina serval või mite" - msgid "Tag Table" msgstr "" @@ -4357,24 +4709,9 @@ msgid "" "of the tagged characters" msgstr "" -msgid "Background stipple mask" -msgstr "" - -msgid "Bitmap to use as a mask when drawing the text background" -msgstr "" - msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "" -msgid "Foreground stipple mask" -msgstr "" - -msgid "Bitmap to use as a mask when drawing the text foreground" -msgstr "" - -msgid "Text direction" -msgstr "Teksti suund" - msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "Teksti suund, kas vasakult-paremale või paremalt vasakule" @@ -4490,18 +4827,6 @@ msgstr "" msgid "Whether this tag affects background height" msgstr "" -msgid "Background stipple set" -msgstr "" - -msgid "Whether this tag affects the background stipple" -msgstr "" - -msgid "Foreground stipple set" -msgstr "" - -msgid "Whether this tag affects the foreground stipple" -msgstr "" - msgid "Justification set" msgstr "" @@ -4610,17 +4935,24 @@ msgstr "" msgid "Color with which to draw error-indication underlines" msgstr "" +msgid "Theming engine name" +msgstr "" + msgid "Create the same proxies as a radio action" msgstr "" msgid "Whether the proxies for this action look like radio action proxies" msgstr "" -msgid "If the toggle action should be active in or not" -msgstr "" +#, fuzzy +#| msgid "Whether visited links should be tracked" +msgid "Whether the toggle action should be active" +msgstr "Kas külastatud viitasid tuleb jälgida või mitte" -msgid "If the toggle button should be pressed in or not" -msgstr "" +#, fuzzy +#| msgid "If the toggle part of the button is displayed" +msgid "If the toggle button should be pressed in" +msgstr "Kas nupu sisse/väljalülitamise osa kuvatakse või mitte" msgid "If the toggle button is in an \"in between\" state" msgstr "" @@ -4643,12 +4975,6 @@ msgstr "Noole näitamine" msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "Kui tööriistariba ei mahu aknasse, kas siis näidatakse noolt või mitte" -msgid "Tooltips" -msgstr "Vihjed" - -msgid "If the tooltips of the toolbar should be active or not" -msgstr "Kas tööriistariba vihjed peaks olema aktiveeritud või mitte" - msgid "Size of icons in this toolbar" msgstr "Ikoonide suurus sellel tööriistaribal" @@ -4694,21 +5020,6 @@ msgstr "" msgid "Style of bevel around the toolbar" msgstr "" -msgid "Toolbar style" -msgstr "Tööriistarea laad" - -msgid "" -"Whether default toolbars have text only, text and icons, icons only, etc." -msgstr "" -"Näitab, kas vaikimisi on tööriistaribadel ainult tekst, ainult ikoonid või " -"mõlemad, jne." - -msgid "Toolbar icon size" -msgstr "Tööriistarea ikooni suurus" - -msgid "Size of icons in default toolbars" -msgstr "Tööriistareal olevate ikoonide vaikimisi suurus" - msgid "Text to show in the item." msgstr "" @@ -4751,6 +5062,165 @@ msgid "" "show text in GTK_TOOLBAR_BOTH_HORIZ mode" msgstr "" +#, fuzzy +#| msgid "A human-readable description of the status" +msgid "The human-readable title of this item group" +msgstr "Oleku kirjeldus inimloetaval kujul" + +#, fuzzy +#| msgid "Icon widget to display in the item" +msgid "A widget to display in place of the usual label" +msgstr "Ikoonividin kirje kuvamiseks" + +msgid "Collapsed" +msgstr "" + +#, fuzzy +#| msgid "Whether the expander has been opened to reveal the child widget" +msgid "Whether the group has been collapsed and items are hidden" +msgstr "Las laiendaja on lapsvidina näitamiseks avatud või mitte" + +#, fuzzy +#| msgid "Pixel size" +msgid "ellipsize" +msgstr "Piksli suurus" + +msgid "Ellipsize for item group headers" +msgstr "" + +#, fuzzy +#| msgid "Header image" +msgid "Header Relief" +msgstr "Päise pilt" + +#, fuzzy +#| msgid "Show the column header buttons" +msgid "Relief of the group header button" +msgstr "Nuppude kuvamine veerupäises" + +#, fuzzy +#| msgid "Header Padding" +msgid "Header Spacing" +msgstr "Päise polsterdus" + +#, fuzzy +#| msgid "Spacing around expander arrow" +msgid "Spacing between expander arrow and caption" +msgstr "Laiendaja noole ümber olev ruum" + +#, fuzzy +#| msgid "Whether the child should receive extra space when the parent grows" +msgid "Whether the item should receive extra space when the group grows" +msgstr "Kas lapsobjekt saab rohkem ruumi, kui vanemobjekti suurus kasvab" + +#, fuzzy +#| msgid "Whether the children should all be the same size" +msgid "Whether the item should fill the available space" +msgstr "Kas lapsed peaksid kõik olema sama suurusega või mitte" + +msgid "New Row" +msgstr "" + +#, fuzzy +#| msgid "Whether the items should be displayed with a number" +msgid "Whether the item should start a new row" +msgstr "Kas kirjeid näidatakse koos numbritega või mitte" + +msgid "Position of the item within this group" +msgstr "" + +#, fuzzy +#| msgid "Size of icons in this toolbar" +msgid "Size of icons in this tool palette" +msgstr "Ikoonide suurus sellel tööriistaribal" + +#, fuzzy +#| msgid "Size of icons in this toolbar" +msgid "Style of items in the tool palette" +msgstr "Ikoonide suurus sellel tööriistaribal" + +msgid "Exclusive" +msgstr "" + +#, fuzzy +#| msgid "Whether the items should be displayed with a number" +msgid "Whether the item group should be the only expanded at a given time" +msgstr "Kas kirjeid näidatakse koos numbritega või mitte" + +#, fuzzy +#| msgid "Whether the child should receive extra space when the parent grows" +msgid "" +"Whether the item group should receive extra space when the palette grows" +msgstr "Kas lapsobjekt saab rohkem ruumi, kui vanemobjekti suurus kasvab" + +#, fuzzy +#| msgid "Foreground color as a string" +msgid "Foreground color for symbolic icons" +msgstr "Esiplaanivärv stringina" + +#, fuzzy +#| msgid "Cursor color" +msgid "Error color" +msgstr "Kursori värvus" + +msgid "Error color for symbolic icons" +msgstr "" + +#, fuzzy +#| msgid "Background color" +msgid "Warning color" +msgstr "Taustavärv" + +msgid "Warning color for symbolic icons" +msgstr "" + +#, fuzzy +#| msgid "Cursor color" +msgid "Success color" +msgstr "Kursori värvus" + +msgid "Success color for symbolic icons" +msgstr "" + +#, fuzzy +#| msgid "Whether there should be an icon near the item" +msgid "Padding that should be put around icons in the tray" +msgstr "Kas kirje ligidal peaks olema ikoon või mitte" + +#, fuzzy +#| msgid "The selection mode" +msgid "TreeMenu model" +msgstr "Valikurežiim" + +#, fuzzy +#| msgid "The model for the icon view" +msgid "The model for the tree menu" +msgstr "Ikoonivaate mudel" + +msgid "TreeMenu root row" +msgstr "" + +msgid "The TreeMenu will display children of the specified root" +msgstr "" + +#, fuzzy +#| msgid "Tearoff Title" +msgid "Tearoff" +msgstr "Lahtirebimise pealkiri" + +#, fuzzy +#| msgid "Whether this widget has a tooltip" +msgid "Whether the menu has a tearoff item" +msgstr "Kas sellel vidinal on vihje või mitte" + +#, fuzzy +#| msgid "Wrap width" +msgid "Wrap Width" +msgstr "Murdmise laius" + +msgid "Wrap width for laying out items in a grid" +msgstr "" + msgid "TreeModelSort Model" msgstr "" @@ -4763,12 +5233,6 @@ msgstr "" msgid "The model for the tree view" msgstr "" -msgid "Horizontal Adjustment for the widget" -msgstr "Vidina horisontaalne suund" - -msgid "Vertical Adjustment for the widget" -msgstr "Vidina vertikaalne suund" - msgid "Headers Visible" msgstr "Päised nähtaval" @@ -4894,12 +5358,6 @@ msgstr "Paarituarvulise rea värvus" msgid "Color to use for odd rows" msgstr "Paarituarvuliste ridade joonistamiseks kasutatav värvus" -msgid "Row Ending details" -msgstr "" - -msgid "Enable extended row background theming" -msgstr "" - msgid "Grid line width" msgstr "" @@ -4936,9 +5394,6 @@ msgstr "" msgid "Current width of the column" msgstr "" -msgid "Space which is inserted between cells" -msgstr "" - msgid "Sizing" msgstr "" @@ -4951,9 +5406,6 @@ msgstr "Fikseeritud laius" msgid "Current fixed width of the column" msgstr "Veeru fikseeritud laius" -msgid "Minimum Width" -msgstr "Minimaalne laius" - msgid "Minimum allowed width of the column" msgstr "Veeru minimaalne lubatud laius" @@ -5014,19 +5466,17 @@ msgstr "" msgid "An XML string describing the merged UI" msgstr "" -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" - -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" - msgid "Determines how the shadowed box around the viewport is drawn" msgstr "" +msgid "Use symbolic icons" +msgstr "" + +#, fuzzy +#| msgid "Whether to show a sort indicator" +msgid "Whether to use symbolic icons" +msgstr "Kas sortimisnäidikut tuleb näidata või mitte" + msgid "Widget name" msgstr "" @@ -5123,12 +5573,6 @@ msgstr "" msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "" -msgid "Extension events" -msgstr "" - -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "" - msgid "No show all" msgstr "" @@ -5148,9 +5592,97 @@ msgid "Double Buffered" msgstr "" #, fuzzy -msgid "Whether or not the widget is double buffered" +msgid "Whether the widget is double buffered" msgstr "Kas vidin on nähtav või mitte" +msgid "How to position in extra horizontal space" +msgstr "" + +msgid "How to position in extra vertical space" +msgstr "" + +#, fuzzy +#| msgid "Margin" +msgid "Margin on Left" +msgstr "Ääris" + +msgid "Pixels of extra space on the left side" +msgstr "" + +msgid "Margin on Right" +msgstr "" + +msgid "Pixels of extra space on the right side" +msgstr "" + +#, fuzzy +#| msgid "Margin" +msgid "Margin on Top" +msgstr "Ääris" + +msgid "Pixels of extra space on the top side" +msgstr "" + +msgid "Margin on Bottom" +msgstr "" + +msgid "Pixels of extra space on the bottom side" +msgstr "" + +#, fuzzy +#| msgid "Margin" +msgid "All Margins" +msgstr "Ääris" + +msgid "Pixels of extra space on all four sides" +msgstr "" + +msgid "Horizontal Expand" +msgstr "" + +#, fuzzy +#| msgid "Whether the widget has the input focus" +msgid "Whether widget wants more horizontal space" +msgstr "Kas vidin on sisestamisfookuses või mitte" + +#, fuzzy +#| msgid "Horizontal alignment" +msgid "Horizontal Expand Set" +msgstr "Rõhtjoondus" + +#, fuzzy +#| msgid "Whether to strike through the text" +msgid "Whether to use the hexpand property" +msgstr "Kas tekst on läbi kriipsutatud või mitte" + +msgid "Vertical Expand" +msgstr "" + +#, fuzzy +#| msgid "Whether the widget is visible" +msgid "Whether widget wants more vertical space" +msgstr "Kas vidin on nähtav või mitte" + +#, fuzzy +#| msgid "Vertical alignment" +msgid "Vertical Expand Set" +msgstr "Püstjoondus" + +#, fuzzy +#| msgid "Whether to wrap the license text." +msgid "Whether to use the vexpand property" +msgstr "Kas litsentsi tekstu murtakse või mitte." + +#, fuzzy +#| msgid "Expand" +msgid "Expand Both" +msgstr "Laiendamine" + +#, fuzzy +#| msgid "Whether the widget has the input focus" +msgid "Whether widget wants to expand in both directions" +msgstr "Kas vidin on sisestamisfookuses või mitte" + msgid "Interior Focus" msgstr "" @@ -5197,10 +5729,12 @@ msgstr "" msgid "Aspect ratio with which to draw insertion cursor" msgstr "" -msgid "Draw Border" -msgstr "Raami joonistamine" +#, fuzzy +#| msgid "Window Position" +msgid "Window dragging" +msgstr "Akna asukoht" -msgid "Size of areas outside the widget's allocation to draw" +msgid "Whether windows can be dragged by clicking on empty areas" msgstr "" msgid "Unvisited Link Color" @@ -5273,24 +5807,6 @@ msgstr "" "Unikaalne käivitusidentifikaator startup-notification'i poolt kasutatava " "akna jaoks" -msgid "Allow Shrink" -msgstr "" - -#, no-c-format -msgid "" -"If TRUE, the window has no mimimum size. Setting this to TRUE is 99% of the " -"time a bad idea" -msgstr "" -"Kui TÕENE, siis aknal puudub minimaalne suurus. Sättides selle TÕESEKS on " -"99% ulatuses halb idee" - -msgid "Allow Grow" -msgstr "Luba kasvada" - -msgid "If TRUE, users can expand the window beyond its minimum size" -msgstr "" -"Kui TÕENE, siis kasutajad saavad laiendada akent miinimumsuurusest suuremaks" - msgid "If TRUE, users can resize the window" msgstr "Kui TÕENE, siis kasutajad saavad akna suurust muuta" @@ -5332,6 +5848,14 @@ msgstr "Kas see aken hävitatakse, kui tema vanem hävitatakse" msgid "Icon for this window" msgstr "Selle akna ikoon" +#, fuzzy +#| msgid "Mnemonic key" +msgid "Mnemonics Visible" +msgstr "Mnemooniline klahv" + +msgid "Whether mnemonics are currently visible in this window" +msgstr "" + msgid "Name of the themed icon for this window" msgstr "Sellele aknale määratud teemakohane ikoon" @@ -5397,6 +5921,24 @@ msgstr "Kustutatav" msgid "Whether the window frame should have a close button" msgstr "Kas aknaraamil peaks olema sulgemisnupp" +#, fuzzy +#| msgid "Resize mode" +msgid "Resize grip" +msgstr "Suuruse muutmise režiim" + +#, fuzzy +#| msgid "Whether the window frame should have a close button" +msgid "Specifies whether the window should have a resize grip" +msgstr "Kas aknaraamil peaks olema sulgemisnupp" + +msgid "Resize grip is visible" +msgstr "" + +#, fuzzy +#| msgid "Whether the action group is visible." +msgid "Specifies whether the window's resize grip is visible." +msgstr "Kas tegevuste grupp on nähtav või mitte." + msgid "Gravity" msgstr "Külgetõmme" @@ -5415,17 +5957,232 @@ msgstr "Akna läbipaistvus" msgid "The opacity of the window, from 0 to 1" msgstr "Akna läbipaistvus, väärtused vahemikus 0-1" -msgid "IM Preedit style" +msgid "Width of resize grip" msgstr "" -msgid "How to draw the input method preedit string" +msgid "Height of resize grip" msgstr "" -msgid "IM Status style" -msgstr "" +msgid "GtkApplication" +msgstr "GtkApplication" -msgid "How to draw the input method statusbar" -msgstr "Kuidas peab sisendmeetodi olekuriba joonistama" +msgid "The GtkApplication for the window" +msgstr "Akna GtkApplication" + +#~ msgid "Loop" +#~ msgstr "Korduv" + +#~ msgid "Whether the animation should loop when it reaches the end" +#~ msgstr "Kas animatsioonid peavad lõppedes uuesti alustama või mitte" + +#~ msgid "Number of Channels" +#~ msgstr "Kanalite arv" + +#~ msgid "The number of samples per pixel" +#~ msgstr "Näidiste arv piksli kohta" + +#~ msgid "Colorspace" +#~ msgstr "Värviruum" + +#~ msgid "The colorspace in which the samples are interpreted" +#~ msgstr "Värviruum, milles näidiseid tõlgendatakse" + +#~ msgid "Has Alpha" +#~ msgstr "Alfa väärtusega" + +#~ msgid "Whether the pixbuf has an alpha channel" +#~ msgstr "Kas pixbuf'il on alfakanal" + +#~ msgid "Bits per Sample" +#~ msgstr "Bitte näidise kohta" + +#~ msgid "The number of bits per sample" +#~ msgstr "Näidise bittide arv" + +#~ msgid "The number of columns of the pixbuf" +#~ msgstr "Pixbuf'i tulpade arv" + +#~ msgid "The number of rows of the pixbuf" +#~ msgstr "Pixbuf'i veergude arv" + +#~ msgid "" +#~ "The number of bytes between the start of a row and the start of the next " +#~ "row" +#~ msgstr "Baitide arv rea ja järgmise rea alguse vahel" + +#~ msgid "Pixels" +#~ msgstr "Piksleid" + +#~ msgid "A pointer to the pixel data of the pixbuf" +#~ msgstr "Viit pixbuf'i piksliandmetele" + +#~ msgid "the GdkScreen for the renderer" +#~ msgstr "Renderdaja GdkScreen" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "Programmi veebisaidi URL-i silt. Kui seda pole määratud, siis vaikimis on " +#~ "selleks URL ise" + +#~ msgid "Enable arrow keys" +#~ msgstr "Nooleklahvide lubamine" + +#~ msgid "Whether the arrow keys move through the list of items" +#~ msgstr "Kas nooleklahve saab kasutada kirjete loendis liikumiseks" + +#~ msgid "Always enable arrows" +#~ msgstr "Nooled on alati lubatud" + +#~ msgid "Obsolete property, ignored" +#~ msgstr "Iganenud omadus, mida eiratakse" + +#~ msgid "Case sensitive" +#~ msgstr "Tõstutundlik" + +#~ msgid "Whether list item matching is case sensitive" +#~ msgstr "Kas vastav nimekirja kirje on tõstutundlik või mitte" + +#~ msgid "Minimum X" +#~ msgstr "Väikseim X" + +#~ msgid "Minimum possible value for X" +#~ msgstr "X-i väikseim võimalik väärtus" + +#~ msgid "Maximum X" +#~ msgstr "Suurim X" + +#~ msgid "Maximum possible X value" +#~ msgstr "X-i suurim võimalik väärtus" + +#~ msgid "Minimum Y" +#~ msgstr "Väikseim Y" + +#~ msgid "Minimum possible value for Y" +#~ msgstr "Y-i väikseim võimalik väärtus" + +#~ msgid "Maximum Y" +#~ msgstr "Suurim Y" + +#~ msgid "Maximum possible value for Y" +#~ msgstr "Y-i suurim võimalik väärtus" + +#~ msgid "Has separator" +#~ msgstr "Omab eraldajat" + +#~ msgid "The dialog has a separator bar above its buttons" +#~ msgstr "Kas dialoogil on nuppude kohal eraldaja" + +#~ msgid "Invisible char set" +#~ msgstr "Nähtamatu märk määratud" + +#~ msgid "State Hint" +#~ msgstr "Olekusvihje" + +#~ msgid "File System Backend" +#~ msgstr "Failisüsteemi taustaprogramm" + +#~ msgid "Name of file system backend to use" +#~ msgstr "Kasutatava failisüsteemi taustaprogrammi nimi" + +#~ msgid "The currently selected filename" +#~ msgstr "Hetkel valitud faili nimi" + +#~ msgid "Show file operations" +#~ msgstr "Näita failitegevusi" + +#~ msgid "The GdkFont that is currently selected" +#~ msgstr "Hetkel valitud GdkFont" + +#~ msgid "Mask" +#~ msgstr "Mask" + +#~ msgid "Use separator" +#~ msgstr "Eraldaja kasutamine" + +#~ msgid "" +#~ "Whether to put a separator between the message dialog's text and the " +#~ "buttons" +#~ msgstr "Kas teatedialoogi teate ja nuppude vahel peab olema eraldaja" + +#~ msgid "Tab Border" +#~ msgstr "Saki ääris" + +#~ msgid "Width of the border around the tab labels" +#~ msgstr "Saki sildi ümber oleva äärise laius" + +#~ msgid "Horizontal Tab Border" +#~ msgstr "Saki rõhtne ääris" + +#~ msgid "Width of the horizontal border of tab labels" +#~ msgstr "Sakisildi rõhtsa äärise laius" + +#~ msgid "Vertical Tab Border" +#~ msgstr "Saki püstine ääris" + +#~ msgid "Width of the vertical border of tab labels" +#~ msgstr "Sakisildi püstise äärise laius" + +#~ msgid "Whether tabs should have homogeneous sizes" +#~ msgstr "Kas sakis peavad olema ühesuurused või mitte" + +#~ msgid "Spacing around indicator" +#~ msgstr "Näidiku ümber olev ruum" + +#~ msgid "Blinking" +#~ msgstr "Vilkumine" + +#~ msgid "Whether or not the status icon is blinking" +#~ msgstr "Kas olekuikoon vilgub või mitte" + +#~ msgid "Horizontal adjustment for the text widget" +#~ msgstr "Tekstividina rõhtjoondus" + +#~ msgid "Vertical adjustment for the text widget" +#~ msgstr "Tekstividina püstjoondus" + +#~ msgid "Line Wrap" +#~ msgstr "Reamurdmine" + +#~ msgid "Whether lines are wrapped at widget edges" +#~ msgstr "Kas vidinate servas murtakse ridu või mitte" + +#~ msgid "Word Wrap" +#~ msgstr "Sõnade murdmine" + +#~ msgid "Whether words are wrapped at widget edges" +#~ msgstr "Kas sõnad murtakse vidina serval või mite" + +#~ msgid "Tooltips" +#~ msgstr "Vihjed" + +#~ msgid "If the tooltips of the toolbar should be active or not" +#~ msgstr "Kas tööriistariba vihjed peaks olema aktiveeritud või mitte" + +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "Vidina horisontaalne suund" + +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "Vidina vertikaalne suund" + +#~ msgid "Draw Border" +#~ msgstr "Raami joonistamine" + +#~ msgid "" +#~ "If TRUE, the window has no mimimum size. Setting this to TRUE is 99% of " +#~ "the time a bad idea" +#~ msgstr "" +#~ "Kui TÕENE, siis aknal puudub minimaalne suurus. Sättides selle TÕESEKS on " +#~ "99% ulatuses halb idee" + +#~ msgid "Allow Grow" +#~ msgstr "Luba kasvada" + +#~ msgid "If TRUE, users can expand the window beyond its minimum size" +#~ msgstr "" +#~ "Kui TÕENE, siis kasutajad saavad laiendada akent miinimumsuurusest " +#~ "suuremaks" #~ msgid "The orientation of the toolbar" #~ msgstr "Tööriistariba suund" diff --git a/po-properties/eu.po b/po-properties/eu.po index f116a6d7bb..fd503ed91e 100644 --- a/po-properties/eu.po +++ b/po-properties/eu.po @@ -1,162 +1,172 @@ -# translation of eu.po to Basque +# translation of eu2.po to Basque # Hizkuntza Politikarako Sailburuordetza , 2005. -# Iñaki Larrañaga Murgoitio , 2006, 2008, 2009, 2010. +# Iñaki Larrañaga Murgoitio , 2006, 2008, 2009, 2010, 2011. # Iñaki Larrañaga Murgoitio , 2007. msgid "" msgstr "" -"Project-Id-Version: eu\n" +"Project-Id-Version: eu2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:54-0400\n" -"PO-Revision-Date: 2010-03-27 13:46+0100\n" +"POT-Creation-Date: 2011-01-15 18:15+0100\n" +"PO-Revision-Date: 2011-01-15 18:17+0100\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" "Language-Team: Basque \n" -"Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "\n" # -#: gdk/gdkdevice.c:97 -#, fuzzy -msgid "Device Display" -msgstr "Bistaratze lehenetsia" - -#: gdk/gdkdevice.c:98 -#, fuzzy -msgid "Display which the device belongs to" -msgstr "Bistaratu gelaxka sentikorra" - -#: gdk/gdkdevice.c:112 -#, fuzzy -msgid "Device manager" -msgstr "Azkenen kudeatzailea" - -#: gdk/gdkdevice.c:113 -msgid "Device manager which the device belongs to" -msgstr "" - -# -#: gdk/gdkdevice.c:127 gdk/gdkdevice.c:128 -#, fuzzy -msgid "Device name" -msgstr "Trepeta-izena" - -# -#: gdk/gdkdevice.c:142 -#, fuzzy -msgid "Device type" -msgstr "Kurba-mota" - -#: gdk/gdkdevice.c:143 -msgid "Device role in the device manager" -msgstr "" - -#: gdk/gdkdevice.c:159 -msgid "Associated device" -msgstr "" - -#: gdk/gdkdevice.c:160 -msgid "Associated pointer or keyboard with this device" -msgstr "" - -#: gdk/gdkdevice.c:173 -msgid "Input source" -msgstr "" - -#: gdk/gdkdevice.c:174 -#, fuzzy -msgid "Source type for the device" -msgstr "Zuhaitz-ikuspegirako modeloa" - -#: gdk/gdkdevice.c:189 gdk/gdkdevice.c:190 -#, fuzzy -msgid "Input mode for the device" -msgstr "Zuhaitz-ikuspegirako modeloa" - -#: gdk/gdkdevice.c:205 -#, fuzzy -msgid "Whether the device has a cursor" -msgstr "Trepetak sarrera-fokua duen ala ez adierazten du" - -#: gdk/gdkdevice.c:206 -#, fuzzy -msgid "Whether there is a visible cursor following device motion" -msgstr "Karaktereen ikusezintasuna ezarri den edo ez" - -#: gdk/gdkdevice.c:220 gdk/gdkdevice.c:221 -#, fuzzy -msgid "Number of axes in the device" -msgstr "Dokumentuaren orrialde kopurua." - -# -#: gdk/gdkdevicemanager.c:134 -#, fuzzy +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" -msgstr "Bistaratze lehenetsia" - -#: gdk/gdkdevicemanager.c:135 -#, fuzzy -msgid "Display for the device manager" -msgstr "Bistaratu gelaxka" +msgstr "Bistaratu" # -#: gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkcursor.c:128 +msgid "Cursor type" +msgstr "Kurtsore mota" + +#: ../gdk/gdkcursor.c:129 +msgid "Standard cursor type" +msgstr "Kurtsore mota estandarra" + +#: ../gdk/gdkcursor.c:137 +msgid "Display of this cursor" +msgstr "Bistaratu kurtsore hau" + +# +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "Gailuaren pantaila" + +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "Gailuari dagokion pantaila" + +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "Gailuen kudeatzailea" + +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "Gailuen kudeatzailea (gailua horren mendeko dena)" + +# +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "Gailuaren izena" + +# +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "Gailu mota" + +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "Gailuaren betekizuna gailuen kudeatzailean" + +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "Esleitutako gailua" + +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "Gailu honekin esleitutako erakusle edo teklatua" + +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "Sarrerako iturburua" + +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "Gailuaren iturburu mota" + +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "Gailuaren sarrera modua" + +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "Gailuak kurtsore bat duen edo ez" + +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "Gailuaren mugimenduari jarraitzen dion kurtsore ikusgai bat dagoen edo ez" + +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "Ardatz kopurua gailuan" + +#: ../gdk/gdkdevicemanager.c:147 +msgid "Display for the device manager" +msgstr "Gailuen kudeatzailearen pantaila" + +# +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "Bistaratze lehenetsia" -#: gdk/gdkdisplaymanager.c:103 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "GDKren bistaratze lehenetsia" # -#: gdk/gdkscreen.c:72 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Letra-tipoaren aukerak" -#: gdk/gdkscreen.c:73 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "Pantailako letra-tipo lehenetsiaren aukerak" # -#: gdk/gdkscreen.c:80 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Letra-tipoaren bereizmena" -#: gdk/gdkscreen.c:81 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "Pantailako letra-tipoaren bereizmena" # -#: gdk/gdkwindow.c:392 gdk/gdkwindow.c:393 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Kurtsorea" -#: gdk/x11/gdkdevice-xi.c:132 gdk/x11/gdkdevice-xi.c:133 -#: gdk/x11/gdkdevice-xi2.c:111 +#: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" -msgstr "" +msgstr "Gailuaren IDa" -#: gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" -msgstr "" +msgstr "Gailuaren identifikatzailea" -#: gdk/x11/gdkdevicemanager-xi.c:84 -#, fuzzy +# +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +msgid "Opcode" +msgstr "Eragiketa-kodea" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +msgid "Opcode for XInput2 requests" +msgstr "Eragiketa-kodea XInput2 eskaerentzako" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" -msgstr "Gertaerak" +msgstr "Gertaeraren oinarria" -#: gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" -msgstr "" +msgstr "Gertaeren oinarria XInput gertaerentzako" -#: gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "Programa-izena" -#: gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -164,98 +174,91 @@ msgstr "" "Programaren izena. Ez badago ezarrita, g_get_application_name() jarriko da " "lehenetsi gisa." -#: gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "Programa-bertsioa" -#: gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "Programaren bertsioa" -#: gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "Copyright-aren katea" -#: gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "Programaren Copyright informazioa" -#: gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "Iruzkin-katea" -#: gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "Programari buruzko iruzkinak" -#: gtk/gtkaboutdialog.c:368 -#, fuzzy +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" -msgstr "Mezu-mota" +msgstr "Lizentzia mota" -#: gtk/gtkaboutdialog.c:369 -#, fuzzy +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" -msgstr "Programaren bertsioa" +msgstr "Programaren lizentzia mota" -#: gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "Web gunearen URLa" -#: gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "Programaren web gunearen estekaren URLa" -#: gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "Web guneko etiketa" -#: gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"Programaren web gunearen estekarentzako etiketa. Ez bada ezartzen, " -"lehenetsitako URLa erabiliko da." +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "Etiketa programaren webgunearen estekarentzako" -#: gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "Egileak" -#: gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "Programaren egileen zerrenda" -#: gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "Dokumentalistak" -#: gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "Programarako informazioa bildu duten pertsonen zerrenda" -#: gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "Artistak" -#: gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "Programako artelanak egin dituzten pertsonen zerrenda" -#: gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "Itzultzaileen kredituak" -#: gtk/gtkaboutdialog.c:471 -msgid "" -"Credits to the translators. This string should be marked as translatable" +#: ../gtk/gtkaboutdialog.c:477 +msgid "Credits to the translators. This string should be marked as translatable" msgstr "Itzultzaileen kredituak. Kate haut itzulgai gisa markatu behar da" -#: gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "Logotipoa" -#: gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -263,110 +266,111 @@ msgstr "" "'Honi buruzko' kutxaren logotipoa. Ez bada ezartzen, " "gtk_window_get_default_icon_list() erabiliko da lehenetsi gisa." -#: gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "Logotipoaren ikonoaren izena" -#: gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "'Honi buruz' kutxako logotipoan erabiliko den izendun ikonoa" # -#: gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "Saltatu lizentzia" -#: gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "Lizentziako testua saltatuko den edo ez." -#: gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "Bizkortzailea ixtea" -#: gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "Bizkortzailearen aldaketentzat kontrolatu beharreko itxiera" -#: gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "Bizkortzailearen trepeta" -#: gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "Bizkortzailearen aldaketentzat kontrolatu beharreko trepeta" # -#: gtk/gtkaction.c:222 gtk/gtkactiongroup.c:228 gtk/gtkprinter.c:125 -#: gtk/gtktextmark.c:89 +#: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "Izena" -#: gtk/gtkaction.c:223 +#: ../gtk/gtkaction.c:223 msgid "A unique name for the action." msgstr "Ekintza honentzako izen bakarra." -#: gtk/gtkaction.c:241 gtk/gtkbutton.c:238 gtk/gtkexpander.c:209 -#: gtk/gtkframe.c:130 gtk/gtklabel.c:549 gtk/gtkmenuitem.c:333 -#: gtk/gtktoolbutton.c:202 gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:131 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1594 msgid "Label" msgstr "Etiketa" -#: gtk/gtkaction.c:242 +#: ../gtk/gtkaction.c:242 msgid "The label used for menu items and buttons that activate this action." msgstr "" "Ekintza hau aktibatzen duten menu-elementuetarako eta botoietarako " "erabiltzen den etiketa." -#: gtk/gtkaction.c:258 +#: ../gtk/gtkaction.c:258 msgid "Short label" msgstr "Etiketa laburra" -#: gtk/gtkaction.c:259 +#: ../gtk/gtkaction.c:259 msgid "A shorter label that may be used on toolbar buttons." msgstr "Tresna-barraren botoietan erabil daitekeen etiketa laburragoa." -#: gtk/gtkaction.c:267 +#: ../gtk/gtkaction.c:267 msgid "Tooltip" msgstr "Argibidea" -#: gtk/gtkaction.c:268 +#: ../gtk/gtkaction.c:268 msgid "A tooltip for this action." msgstr "Ekintza honetarako argibidea." -#: gtk/gtkaction.c:283 +#: ../gtk/gtkaction.c:283 msgid "Stock Icon" msgstr "Oinarri-ikonoa" -#: gtk/gtkaction.c:284 +#: ../gtk/gtkaction.c:284 msgid "The stock icon displayed in widgets representing this action." msgstr "Ekintza hau adierazten duten trepetetan bistaratutako oinarri-ikonoa." # -#: gtk/gtkaction.c:304 gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "GIcon" -#: gtk/gtkaction.c:305 gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:320 -#: gtk/gtkstatusicon.c:253 +#: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 +#: ../gtk/gtkimage.c:327 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "GIcon bistaratuta" -#: gtk/gtkaction.c:325 gtk/gtkcellrendererpixbuf.c:180 gtk/gtkimage.c:302 -#: gtk/gtkprinter.c:174 gtk/gtkstatusicon.c:236 gtk/gtkwindow.c:685 +#: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 +#: ../gtk/gtkimage.c:309 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "Ikono-izena" -#: gtk/gtkaction.c:326 gtk/gtkcellrendererpixbuf.c:181 gtk/gtkimage.c:303 -#: gtk/gtkstatusicon.c:237 +#: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 +#: ../gtk/gtkimage.c:310 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "Ikono-gaiko ikonoaren izena" -#: gtk/gtkaction.c:333 gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "Ikusgai horizontal dagoenean" -#: gtk/gtkaction.c:334 gtk/gtktoolitem.c:187 +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 msgid "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." @@ -374,11 +378,11 @@ msgstr "" "Tresna-barra horizontal dagoenean tresna-barrako elementua ikusgai dagoen " "ala ez adierazten du." -#: gtk/gtkaction.c:349 +#: ../gtk/gtkaction.c:349 msgid "Visible when overflown" msgstr "Ikusgai gainezka egitean" -#: gtk/gtkaction.c:350 +#: ../gtk/gtkaction.c:350 msgid "" "When TRUE, toolitem proxies for this action are represented in the toolbar " "overflow menu." @@ -386,11 +390,11 @@ msgstr "" "TRUE (egia) denean, menuen proxy-ak tresna-barrako gainezkako menuan " "adierazten dira." -#: gtk/gtkaction.c:357 gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "Ikusgai bertikal dagoenean" -#: gtk/gtkaction.c:358 gtk/gtktoolitem.c:194 +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 msgid "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." @@ -398,11 +402,11 @@ msgstr "" "Tresna-barra bertikal dagoenean tresna-barrako elementua ikusgai dagoen ala " "ez adierazten du." -#: gtk/gtkaction.c:365 gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "Garrantzitsua da" -#: gtk/gtkaction.c:366 +#: ../gtk/gtkaction.c:366 msgid "" "Whether the action is considered important. When TRUE, toolitem proxies for " "this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." @@ -411,39 +415,39 @@ msgstr "" "honetako toolitem proxy-ek testua GTK_TOOLBAR_BOTH_HORIZ moduan adierazten " "dute." -#: gtk/gtkaction.c:374 +#: ../gtk/gtkaction.c:374 msgid "Hide if empty" msgstr "Ezkutatu hutsa badago" -#: gtk/gtkaction.c:375 +#: ../gtk/gtkaction.c:375 msgid "When TRUE, empty menu proxies for this action are hidden." -msgstr "" -"TRUE (egia) denean, ekintza honetako menu hutseko proxy-ak ezkutatuta daude." +msgstr "TRUE (egia) denean, ekintza honetako menu hutseko proxy-ak ezkutatuta daude." -#: gtk/gtkaction.c:381 gtk/gtkactiongroup.c:235 gtk/gtkcellrenderer.c:242 -#: gtk/gtkwidget.c:754 +#: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:941 msgid "Sensitive" msgstr "Sentikorra" -#: gtk/gtkaction.c:382 +#: ../gtk/gtkaction.c:382 msgid "Whether the action is enabled." msgstr "Ekintza gaituta dagoen ala ez adierazten du." # -#: gtk/gtkaction.c:388 gtk/gtkactiongroup.c:242 gtk/gtkstatusicon.c:287 -#: gtk/gtktreeviewcolumn.c:195 gtk/gtkwidget.c:747 +#: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:934 msgid "Visible" msgstr "Ikusgai" -#: gtk/gtkaction.c:389 +#: ../gtk/gtkaction.c:389 msgid "Whether the action is visible." msgstr "Ekintza ikusgai dagoen ala ez adierazten du." -#: gtk/gtkaction.c:395 +#: ../gtk/gtkaction.c:395 msgid "Action Group" msgstr "Ekintza-taldea" -#: gtk/gtkaction.c:396 +#: ../gtk/gtkaction.c:396 msgid "" "The GtkActionGroup this GtkAction is associated with, or NULL (for internal " "use)." @@ -451,101 +455,101 @@ msgstr "" "GtkAction honekin lotuta dagoen GtkActionGroup, edo NULL (barne-" "erabilerarako)." -#: gtk/gtkaction.c:414 gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Erakutsi beti irudia" -#: gtk/gtkaction.c:415 gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Irudia beti erakutsiko den ala ez adierazten du" -#: gtk/gtkactiongroup.c:229 +#: ../gtk/gtkactiongroup.c:229 msgid "A name for the action group." msgstr "Ekintza-talderako izena." -#: gtk/gtkactiongroup.c:236 +#: ../gtk/gtkactiongroup.c:236 msgid "Whether the action group is enabled." msgstr "Ekintza-taldea gaituta dagoen ala ez adierazten du." -#: gtk/gtkactiongroup.c:243 +#: ../gtk/gtkactiongroup.c:243 msgid "Whether the action group is visible." msgstr "Ekintza-taldea ikusgai dagoen ala ez adierazten du." # -#: gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "Dagokion ekintza" -#: gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "" "Aktibagarri honek aktibatuko duen ekintza eta bertatik jasoko dituen " "eguneraketak" -#: gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "Erabili ekintzaren itxura" -#: gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "Dagokien ekintzen itxuraren propietateak erabili edo ez" # -#: gtk/gtkadjustment.c:93 gtk/gtkcellrendererprogress.c:126 -#: gtk/gtkscalebutton.c:220 gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "Balioa" -#: gtk/gtkadjustment.c:94 +#: ../gtk/gtkadjustment.c:124 msgid "The value of the adjustment" msgstr "Doikuntzaren balioa" -#: gtk/gtkadjustment.c:110 +#: ../gtk/gtkadjustment.c:140 msgid "Minimum Value" msgstr "Balio minimoa" -#: gtk/gtkadjustment.c:111 +#: ../gtk/gtkadjustment.c:141 msgid "The minimum value of the adjustment" msgstr "Doikuntzaren balio minimoa" -#: gtk/gtkadjustment.c:130 +#: ../gtk/gtkadjustment.c:160 msgid "Maximum Value" msgstr "Balio maximoa" -#: gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:161 msgid "The maximum value of the adjustment" msgstr "Doikuntzaren balio maximoa" -#: gtk/gtkadjustment.c:147 +#: ../gtk/gtkadjustment.c:177 msgid "Step Increment" msgstr "Urrats-gehikuntza" -#: gtk/gtkadjustment.c:148 +#: ../gtk/gtkadjustment.c:178 msgid "The step increment of the adjustment" msgstr "Doikuntzaren urrats-gehikuntza" -#: gtk/gtkadjustment.c:164 +#: ../gtk/gtkadjustment.c:194 msgid "Page Increment" msgstr "Orri-gehikuntza" -#: gtk/gtkadjustment.c:165 +#: ../gtk/gtkadjustment.c:195 msgid "The page increment of the adjustment" msgstr "Doikuntzaren orri-gehikuntza" # -#: gtk/gtkadjustment.c:184 +#: ../gtk/gtkadjustment.c:214 msgid "Page Size" msgstr "Orrialde-tamaina" -#: gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:215 msgid "The page size of the adjustment" msgstr "Doikuntzaren orrialde-tamaina" -#: gtk/gtkalignment.c:123 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Lerrokatze horizontala" -#: gtk/gtkalignment.c:124 gtk/gtkbutton.c:289 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -553,11 +557,11 @@ msgstr "" "Umearen kokaleku horizontala leku erabilgarrian. 0.0 ezkerrean lerrokatzea " "da, 1.0 eskuinean" -#: gtk/gtkalignment.c:133 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Lerrokatze bertikala" -#: gtk/gtkalignment.c:134 gtk/gtkbutton.c:308 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -566,11 +570,11 @@ msgstr "" "behean lerrokatzea" # -#: gtk/gtkalignment.c:142 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Eskala horizontala" -#: gtk/gtkalignment.c:143 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -579,11 +583,11 @@ msgstr "" "umeak zenbat erabili behar duen adierazten du. 0.0 'bat ere ez' da, eta 1.0 " "'dena'." -#: gtk/gtkalignment.c:151 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Eskala bertikala" -#: gtk/gtkalignment.c:152 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -591,203 +595,278 @@ msgstr "" "Erabilgarri dagoen leku bertikala umeak behar duena baino handiagoa bada, " "harrak zenbat erabili behar duen. 0.0k bat ere ez esan nahi du eta 1.0k dena." -#: gtk/gtkalignment.c:169 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Goiko betegarria" -#: gtk/gtkalignment.c:170 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "Trepetaren goialdean txertatzeko betegarria." -#: gtk/gtkalignment.c:186 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Beheko betegarria" -#: gtk/gtkalignment.c:187 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "Trepetaren behealdean txertatzeko betegarria." -#: gtk/gtkalignment.c:203 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Ezkerreko betegarria" -#: gtk/gtkalignment.c:204 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "Trepetaren ezkerrean txertatzeko betegarria." -#: gtk/gtkalignment.c:220 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Eskuineko betegarria" -#: gtk/gtkalignment.c:221 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "Trepetaren eskuinean txertatzeko betegarria." +#: ../gtk/gtkappchooserbutton.c:538 +msgid "Include an 'Other...' item" +msgstr "Sartu 'Bestelakoa...' elementu bat" + +#: ../gtk/gtkappchooserbutton.c:539 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" +"Konbinazio-koadroak 'GtkAppChooserDialog' abiarazten duen elementu bat eduki " +"behar duen edo ez" + +#: ../gtk/gtkappchooser.c:58 +msgid "Content type" +msgstr "Eduki mota" + +#: ../gtk/gtkappchooser.c:59 +msgid "The content type used by the open with object" +msgstr "'Ireki objektuarekin' erabilitako eduki mota" + +#: ../gtk/gtkappchooserdialog.c:683 +msgid "GFile" +msgstr "GFile" + +#: ../gtk/gtkappchooserdialog.c:684 +msgid "The GFile used by the app chooser dialog" +msgstr "Aplikazioaren aukeratzailearen elkarrizketa-koadroak erabilitako GFile" + +#: ../gtk/gtkappchooserwidget.c:1017 +msgid "Show default app" +msgstr "Erakutsi aplikazio lehenetsia" + +#: ../gtk/gtkappchooserwidget.c:1018 +msgid "Whether the widget should show the default application" +msgstr "Trepetak aplikazio lehenetsia erakutsi behar duen edo ez" + +#: ../gtk/gtkappchooserwidget.c:1031 +msgid "Show recommended apps" +msgstr "Erakutsi gomendatutako aplikazioak" + +#: ../gtk/gtkappchooserwidget.c:1032 +msgid "Whether the widget should show recommended applications" +msgstr "Trepetak gomendatutako aplikazioak erakutsi behar dituen edo ez" + +#: ../gtk/gtkappchooserwidget.c:1045 +msgid "Show fallback apps" +msgstr "Erakutsi ordezko aplikazioak" + +#: ../gtk/gtkappchooserwidget.c:1046 +msgid "Whether the widget should show fallback applications" +msgstr "Trepetak ordezko aplikazioak erakutsi behar dituen edo ez" + +#: ../gtk/gtkappchooserwidget.c:1058 +msgid "Show other apps" +msgstr "Erakutsi beste aplikazioak" + +#: ../gtk/gtkappchooserwidget.c:1059 +msgid "Whether the widget should show other applications" +msgstr "Trepetak beste aplikazioak erakutsi behar dituen edo ez" + +#: ../gtk/gtkappchooserwidget.c:1072 +msgid "Show all apps" +msgstr "Erakutsi aplikazio guztiak" + +#: ../gtk/gtkappchooserwidget.c:1073 +msgid "Whether the widget should show all applications" +msgstr "Trepetak aplikazio guztiak erakutsi behar dituen edo ez" + +#: ../gtk/gtkappchooserwidget.c:1086 +msgid "Widget's default text" +msgstr "Trepetaren testu lehenetsia" + +#: ../gtk/gtkappchooserwidget.c:1087 +msgid "The default text appearing when there are no applications" +msgstr "Aplikaziorik ez dagoenean agertuko den testu lehenetsia" + # -#: gtk/gtkarrow.c:110 +#: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Geziaren noranzkoa" -#: gtk/gtkarrow.c:111 +#: ../gtk/gtkarrow.c:111 msgid "The direction the arrow should point" msgstr "Geziak seinalatu behar duen noranzkoa" -#: gtk/gtkarrow.c:119 +#: ../gtk/gtkarrow.c:119 msgid "Arrow shadow" msgstr "Gezi-itzala" -#: gtk/gtkarrow.c:120 +#: ../gtk/gtkarrow.c:120 msgid "Appearance of the shadow surrounding the arrow" msgstr "Gezia inguratzen duen itzalaren itxura" # -#: gtk/gtkarrow.c:127 gtk/gtkmenu.c:735 gtk/gtkmenuitem.c:396 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:726 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Gezia eskalatzea" -#: gtk/gtkarrow.c:128 +#: ../gtk/gtkarrow.c:128 msgid "Amount of space used up by arrow" msgstr "Geziak erabiltzen duen leku kopurua" -#: gtk/gtkaspectframe.c:109 gtk/gtkwidget.c:950 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1129 msgid "Horizontal Alignment" msgstr "Lerrokatze horizontala" -#: gtk/gtkaspectframe.c:110 +#: ../gtk/gtkaspectframe.c:110 msgid "X alignment of the child" msgstr "Umearen X lerrokatzea" -#: gtk/gtkaspectframe.c:116 gtk/gtkwidget.c:966 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1145 msgid "Vertical Alignment" msgstr "Lerrokatze bertikala" -#: gtk/gtkaspectframe.c:117 +#: ../gtk/gtkaspectframe.c:117 msgid "Y alignment of the child" msgstr "Umearen Y lerrokatzea" -#: gtk/gtkaspectframe.c:123 +#: ../gtk/gtkaspectframe.c:123 msgid "Ratio" msgstr "Erlazioa" -#: gtk/gtkaspectframe.c:124 +#: ../gtk/gtkaspectframe.c:124 msgid "Aspect ratio if obey_child is FALSE" msgstr "Aspektu-erlazioa obey_child FALTSUA bada" -#: gtk/gtkaspectframe.c:130 +#: ../gtk/gtkaspectframe.c:130 msgid "Obey child" msgstr "Umeari obeditu" -#: gtk/gtkaspectframe.c:131 +#: ../gtk/gtkaspectframe.c:131 msgid "Force aspect ratio to match that of the frame's child" msgstr "Behartu aspektu-erlazioa markoaren umearekin bat etor dadin" -#: gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "Goiburuko betegarria" -#: gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "Goiburuaren inguruko pixel kopurua." -#: gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "Edukiaren betegarria" -#: gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "Edukiaren orrialdeen inguruko pixel kopurua." -#: gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "Orrialde mota" -#: gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "Laguntzako orrialde mota" # -#: gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "Orrialdearen titulua" -#: gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "Laguntzako orrialdearen titulua" -#: gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "Goiburuko irudia" -#: gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "Laguntzako orrialdearen goiburuko irudia" -#: gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "Albo-panelaren irudia" -#: gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "Laguntzako orrialdearen albo-panelaren irudia" -#: gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "Orrialdea osatu da" -#: gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "Orrialdean beharrezko eremu guztiak bete diren edo ez" -#: gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "Umearen gutxieneko zabalera" -#: gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "Laukiaren barruan botoiek duten gutxieneko zabalera" -#: gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "Umearen gutxieneko altuera" -#: gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "Laukiaren barruan botoiek duten gutxieneko altuera" -#: gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "Umearen barneko zabaleraren betegarria" -#: gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "Umearen tamaina bi alboetan handitzeko kopurua" -#: gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "Umearen barneko altueraren betegarria" -#: gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "Umearen tamaina goian eta behean handitzeko kopurua" -#: gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "Diseinuaren estiloa" -#: gtk/gtkbbox.c:172 -#, fuzzy +#: ../gtk/gtkbbox.c:189 msgid "" "How to lay out the buttons in the box. Possible values are: spread, edge, " "start and end" msgstr "" -"Botoiak laukian nola antolatuko diren. Hauek dira balio posibleak: " -"lehenetsia, zabalduta, ertzean, hasieran eta amaieran" +"Botoiak laukian nola antolatuko diren. Hauek dira balio posibleak: spread " +"(zabalduta), edge (ertzean), start (hasieran) eta end (amaieran)" -#: gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "Bigarren mailakoa" -#: gtk/gtkbbox.c:181 +#: ../gtk/gtkbbox.c:198 msgid "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" @@ -796,41 +875,42 @@ msgstr "" "laguntza-botoietarako egoki" # -#: gtk/gtkbox.c:227 gtk/gtkexpander.c:233 gtk/gtkiconview.c:666 -#: gtk/gtktreeviewcolumn.c:220 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "Tartea" -#: gtk/gtkbox.c:228 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "Umeen arteko tarte-kopurua" -#: gtk/gtkbox.c:237 gtk/gtktable.c:184 gtk/gtktoolbar.c:527 -#: gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1647 msgid "Homogeneous" msgstr "Homogeneoa" -#: gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "Ume guztiek tamaina bera eduki behar duten ala ez adierazten du" -#: gtk/gtkbox.c:254 gtk/gtktoolbar.c:519 gtk/gtktoolitemgroup.c:1631 -#: gtk/gtktoolpalette.c:1065 gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1654 ../gtk/gtktoolpalette.c:1094 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "Zabaldu" -#: gtk/gtkbox.c:255 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "" "Gurasoa handitzean, umeak beste tarte bat jaso behar duen ala ez adierazten " "du" # -#: gtk/gtkbox.c:271 gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1661 msgid "Fill" msgstr "Bete" -#: gtk/gtkbox.c:272 +#: ../gtk/gtkbox.c:282 msgid "" "Whether extra space given to the child should be allocated to the child or " "used as padding" @@ -838,21 +918,21 @@ msgstr "" "Umeari emandako beste tartea umeari esleitu behar zaion ala tarte betegarri " "gisa erabili behar den adierazten du" -#: gtk/gtkbox.c:279 gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "Betegarria" -#: gtk/gtkbox.c:280 +#: ../gtk/gtkbox.c:290 msgid "Extra space to put between the child and its neighbors, in pixels" msgstr "" "Umearen eta haren ingurukoen artean jarri beharreko tarte osagarria, " "pixeletan" -#: gtk/gtkbox.c:286 +#: ../gtk/gtkbox.c:296 msgid "Pack type" msgstr "Pakete-mota" -#: gtk/gtkbox.c:287 gtk/gtknotebook.c:692 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -860,36 +940,36 @@ msgstr "" "Umea gurasoaren hasierari edo amaierari erreferentzia eginez paketatu den " "adierazten duen GtkPackType" -#: gtk/gtkbox.c:293 gtk/gtknotebook.c:670 gtk/gtkpaned.c:270 -#: gtk/gtkruler.c:158 gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1675 msgid "Position" msgstr "Kokalekua" -#: gtk/gtkbox.c:294 gtk/gtknotebook.c:671 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "Umearen indizea gurasoan" -#: gtk/gtkbuilder.c:315 +#: ../gtk/gtkbuilder.c:314 msgid "Translation Domain" msgstr "Itzulpenaren domeinua" -#: gtk/gtkbuilder.c:316 +#: ../gtk/gtkbuilder.c:315 msgid "The translation domain used by gettext" msgstr "Gettext-ek erabiltzen duen itzulpenaren domeinua" -#: gtk/gtkbutton.c:239 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" msgstr "Etiketa-trepetaren testua botoi barruan, botoiak etiketa-trepeta badu" -#: gtk/gtkbutton.c:246 gtk/gtkexpander.c:217 gtk/gtklabel.c:570 -#: gtk/gtkmenuitem.c:348 gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "Erabili azpimarra" -#: gtk/gtkbutton.c:247 gtk/gtkexpander.c:218 gtk/gtklabel.c:571 -#: gtk/gtkmenuitem.c:349 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -897,73 +977,72 @@ msgstr "" "Ezartzen bada, testuko azpimarrak adierazten du hurrengo karakterea tekla " "bizkortzaile mnemoteknikorako erabili behar dela" -#: gtk/gtkbutton.c:254 gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Erabili oinarria" -#: gtk/gtkbutton.c:255 -msgid "" -"If set, the label is used to pick a stock item instead of being displayed" +#: ../gtk/gtkbutton.c:244 +msgid "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "Ezartzen bada, etiketa oinarriko elementu bat hautatzeko erabiltzen da, " "bistaratu ordez" -#: gtk/gtkbutton.c:262 gtk/gtkcombobox.c:811 gtk/gtkfilechooserbutton.c:385 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 +#: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Fokua klik egindakoan" -#: gtk/gtkbutton.c:263 gtk/gtkfilechooserbutton.c:386 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" -msgstr "" -"Botoiak saguaren klik egindakoan fokua hartzen duen ala ez adierazten du" +msgstr "Botoiak saguaren klik egindakoan fokua hartzen duen ala ez adierazten du" -#: gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "Ertzaren erliebea" -#: gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "Ertzaren erliebearen estiloa" -#: gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "Umearentzako lerrokatze horizontala" -#: gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "Umearentzako lerrokatze bertikala" # -#: gtk/gtkbutton.c:324 gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Ikono-trepeta" -#: gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "Menuaren testuaren ondoan agertu beharreko trepeta umea" -#: gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "Irudiaren posizioa" -#: gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "Irudiaren posizioa, testuarekiko erlatiboa" # -#: gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "Tarte lehenetsia" -#: gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "GTK_CAN_DEFAULT botoiei gehitzeko tarte osagarria" -#: gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "Kanpoko tarte lehenetsia" -#: gtk/gtkbutton.c:476 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -971,29 +1050,27 @@ msgstr "" "GTK_CAN_DEFAULT botoiei gehitzeko tarte osagarria, beti ertzetik kanpo " "marraztuta dagoena" -#: gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "Umearen X desplazamendua" -#: gtk/gtkbutton.c:482 -msgid "" -"How far in the x direction to move the child when the button is depressed" +#: ../gtk/gtkbutton.c:471 +msgid "How far in the x direction to move the child when the button is depressed" msgstr "Umea noraino eraman behar den x norabidean, botoia askatutakoan" -#: gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "Umearen Y desplazamendua" -#: gtk/gtkbutton.c:490 -msgid "" -"How far in the y direction to move the child when the button is depressed" +#: ../gtk/gtkbutton.c:479 +msgid "How far in the y direction to move the child when the button is depressed" msgstr "Umea noraino eraman behar den y norabidean, botoia askatutakoan" -#: gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "Fokuaren desplazamendua" -#: gtk/gtkbutton.c:507 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" @@ -1001,51 +1078,43 @@ msgstr "" "child_displacement_x/_y propietateak foku-laukian ere eragingo duen ala ez " "adierazten du" -#: gtk/gtkbutton.c:520 gtk/gtkentry.c:696 gtk/gtkentry.c:1741 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Barneko ertza" -#: gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "Botoi-ertzaren eta umearen arteko ertza." -#: gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "Irudi-tartea" -#: gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "irudiaren eta etiketaren arteko tartea (pixeletan)" -#: gtk/gtkbutton.c:549 -msgid "Show button images" -msgstr "Erakutsi botoien irudiak" - -#: gtk/gtkbutton.c:550 -msgid "Whether images should be shown on buttons" -msgstr "Irudiak botoietan erakutsi behar diren ala ez adierazten du" - -#: gtk/gtkcalendar.c:478 +#: ../gtk/gtkcalendar.c:468 msgid "Year" msgstr "Urtea" -#: gtk/gtkcalendar.c:479 +#: ../gtk/gtkcalendar.c:469 msgid "The selected year" msgstr "Hautatutako urtea" -#: gtk/gtkcalendar.c:492 +#: ../gtk/gtkcalendar.c:482 msgid "Month" msgstr "Hila" -#: gtk/gtkcalendar.c:493 +#: ../gtk/gtkcalendar.c:483 msgid "The selected month (as a number between 0 and 11)" msgstr "Hautatutako hila (0 eta 11 arteko zenbakia)" -#: gtk/gtkcalendar.c:507 +#: ../gtk/gtkcalendar.c:497 msgid "Day" msgstr "Eguna" -#: gtk/gtkcalendar.c:508 +#: ../gtk/gtkcalendar.c:498 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" @@ -1054,366 +1123,459 @@ msgstr "" "desautatzeko)" # -#: gtk/gtkcalendar.c:522 +#: ../gtk/gtkcalendar.c:512 msgid "Show Heading" msgstr "Erakutsi izenburua" -#: gtk/gtkcalendar.c:523 +#: ../gtk/gtkcalendar.c:513 msgid "If TRUE, a heading is displayed" msgstr "TRUE (egia) bada, izenburu bat bistaratuko da" -#: gtk/gtkcalendar.c:537 +#: ../gtk/gtkcalendar.c:527 msgid "Show Day Names" msgstr "Erakutsi egunen izenak" -#: gtk/gtkcalendar.c:538 +#: ../gtk/gtkcalendar.c:528 msgid "If TRUE, day names are displayed" msgstr "TRUE (egia) bada, egunen izenak bistaratuko dira" -#: gtk/gtkcalendar.c:551 +#: ../gtk/gtkcalendar.c:541 msgid "No Month Change" msgstr "Ezin da hila aldatu" -#: gtk/gtkcalendar.c:552 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, the selected month cannot be changed" msgstr "TRUE (egia) bada, hautatutako hila ezin da aldatu" -#: gtk/gtkcalendar.c:566 +#: ../gtk/gtkcalendar.c:556 msgid "Show Week Numbers" msgstr "Erakutsi asteen zenbakiak" -#: gtk/gtkcalendar.c:567 +#: ../gtk/gtkcalendar.c:557 msgid "If TRUE, week numbers are displayed" msgstr "TRUE (egia) bada, asteen zenbakiak bistaratuko dira" -#: gtk/gtkcalendar.c:582 +#: ../gtk/gtkcalendar.c:572 msgid "Details Width" msgstr "Zabaleraren xehetasunak" -#: gtk/gtkcalendar.c:583 +#: ../gtk/gtkcalendar.c:573 msgid "Details width in characters" msgstr "Zabaleraren xehetasuna karakteretan" -#: gtk/gtkcalendar.c:598 +#: ../gtk/gtkcalendar.c:588 msgid "Details Height" msgstr "Altueraren xehetasunak" -#: gtk/gtkcalendar.c:599 +#: ../gtk/gtkcalendar.c:589 msgid "Details height in rows" msgstr "Altueraren xehetasuna karakteretan" -#: gtk/gtkcalendar.c:615 +#: ../gtk/gtkcalendar.c:605 msgid "Show Details" msgstr "Erakutsi xehetasunak" -#: gtk/gtkcalendar.c:616 +#: ../gtk/gtkcalendar.c:606 msgid "If TRUE, details are shown" msgstr "TRUE (egia) bada, xehetasunak bistaratuko dira" -#: gtk/gtkcalendar.c:628 -#, fuzzy +#: ../gtk/gtkcalendar.c:618 msgid "Inner border" msgstr "Barneko ertza" -#: gtk/gtkcalendar.c:629 -#, fuzzy +#: ../gtk/gtkcalendar.c:619 msgid "Inner border space" -msgstr "Barneko ertza" +msgstr "Barneko ertzaren espazioa" -#: gtk/gtkcalendar.c:640 -#, fuzzy +#: ../gtk/gtkcalendar.c:630 msgid "Vertical separation" -msgstr "Aukera bertikalak" +msgstr "Bereizle bertikala" -#: gtk/gtkcalendar.c:641 -#, fuzzy +#: ../gtk/gtkcalendar.c:631 msgid "Space between day headers and main area" -msgstr "Zabaltzailearen geziaren eta epigrafearen arteko tartea" +msgstr "Eguneko goiburuen eta area nagusiaren arteko tartea" # -#: gtk/gtkcalendar.c:652 -#, fuzzy +#: ../gtk/gtkcalendar.c:642 msgid "Horizontal separation" -msgstr "Aukera horizontalak" +msgstr "Bereizle horizontala" -#: gtk/gtkcalendar.c:653 -#, fuzzy +#: ../gtk/gtkcalendar.c:643 msgid "Space between week headers and main area" -msgstr "Elkarrizketa-koadro nagusiko areako elementuen arteko tartea" +msgstr "Asteko goiburuen eta area nagusiaren arteko tartea" -#: gtk/gtkcelleditable.c:53 +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "Gelaxken artean txertatuko den tartea" + +#: ../gtk/gtkcellareabox.c:339 +msgid "Whether the cell expands" +msgstr "Gelaxkak zabaldu edo ez" + +# +#: ../gtk/gtkcellareabox.c:354 +msgid "Align" +msgstr "Lerrokatu" + +#: ../gtk/gtkcellareabox.c:355 +msgid "Whether cell should align with adjacent rows" +msgstr "Gelaxka aldameneko errenkadarekin lerrokatuko den edo ez" + +# +#: ../gtk/gtkcellareabox.c:371 +msgid "Fixed Size" +msgstr "Finkatutako tamaina" + +#: ../gtk/gtkcellareabox.c:372 +msgid "Whether cells should be the same size in all rows" +msgstr "Gelaxkek tamaina bera eduki behar duten errenkada guztietan edo ez" + +#: ../gtk/gtkcellareabox.c:388 +msgid "Pack Type" +msgstr "Pakete mota" + +#: ../gtk/gtkcellareabox.c:389 +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"Gelaxkaren arearen hasierari edo amaierari erreferentzia eginez gelaxka " +"paketatu den edo ez adierazten duen GtkPackType" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "Fokudun gelaxka" + +#: ../gtk/gtkcellarea.c:774 +msgid "The cell which currently has focus" +msgstr "Unean fokua aktibatuta daukan gelaxka" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "Editatutako gelaxka" + +#: ../gtk/gtkcellarea.c:793 +msgid "The cell which is currently being edited" +msgstr "Unean editatzen ari den gelaxka" + +# +#: ../gtk/gtkcellarea.c:811 +msgid "Edit Widget" +msgstr "Editatu trepeta" + +#: ../gtk/gtkcellarea.c:812 +msgid "The widget currently editing the edited cell" +msgstr "Editatutako gelaxka unean editatzen duen trepeta" + +#: ../gtk/gtkcellareacontext.c:127 +msgid "Area" +msgstr "Area" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "Gelaxkaren area (testuinguru hau sortu zaiona)" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "Gutxieneko zabalera" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +msgid "Minimum cached width" +msgstr "Cachean gordetako gutxieneko zabalera" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +msgid "Minimum Height" +msgstr "Gutxieneko altuera" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +msgid "Minimum cached height" +msgstr "Cachean gordetako gutxieneko altuera" + +#: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Edizioa bertan behera utzita" -#: gtk/gtkcelleditable.c:54 +#: ../gtk/gtkcelleditable.c:54 msgid "Indicates that editing has been canceled" msgstr "Edizioa bertan behera utzi dela adierazten du" -#: gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "Tekla bizkortzailea" -#: gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "Bizkortzailearen balioa" -#: gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "Bizkortzailearen aldatzaileak" -#: gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "Bizkortzailearen aldatzaile-maskara" -#: gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "Bizkortzailearen kodea" -#: gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "Bizkortzailearen hardwareko kodea" -#: gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "Bizkortzaile modua" -#: gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "Bizkortzaile motak" # -#: gtk/gtkcellrenderer.c:226 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "modua" -#: gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "CellRenderer-en modu editagarria" # -#: gtk/gtkcellrenderer.c:235 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "ikusgai" -#: gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "Bistaratu gelaxka" -#: gtk/gtkcellrenderer.c:243 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "Bistaratu gelaxka sentikorra" # -#: gtk/gtkcellrenderer.c:250 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "xalign" -#: gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "x lerrokatzea" -#: gtk/gtkcellrenderer.c:260 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "yalign" -#: gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "y lerrokatzea" -#: gtk/gtkcellrenderer.c:270 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "x betegarria" -#: gtk/gtkcellrenderer.c:280 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "y betegarria" # -#: gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "zabalera" # -#: gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "zabalera finkoa" # -#: gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "altuera" -#: gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "Altuera finkoa" -#: gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "Zabaltzailea da" -#: gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "Errenkadak umeak ditu" -#: gtk/gtkcellrenderer.c:319 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "Zabaltzailea da" -#: gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "Errenkada errenkada zabaltzailea da eta zabalduta dago" -#: gtk/gtkcellrenderer.c:327 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "Gelaxkaren atzeko planoaren kolore-izena" -#: gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "Gelaxkaren atzeko planoaren kolorea kate gisa" -#: gtk/gtkcellrenderer.c:335 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "Gelaxkaren atzeko planoaren kolorea" -#: gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "Gelaxkaren atzeko planoaren kolorea GdkColor gisa" -#: gtk/gtkcellrenderer.c:343 +#: ../gtk/gtkcellrenderer.c:395 +msgid "Cell background RGBA color" +msgstr "Gelaxkaren atzeko planoaren GBUA kolorea" + +#: ../gtk/gtkcellrenderer.c:396 +msgid "Cell background color as a GdkRGBA" +msgstr "Gelaxkaren atzeko planoaren kolorea GdkRGBA gisa" + +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "Edizioa" -#: gtk/gtkcellrenderer.c:344 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "Gelaxka errendatzea edizio moduan dagoen ala ez adierazten du" -#: gtk/gtkcellrenderer.c:352 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "Gelaxkaren atzeko planoaren ezarpena" -#: gtk/gtkcellrenderer.c:353 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "" "Etiketa honek gelaxkaren atzeko planoaren koloreari eragiten dion ala ez " "adierazten du" # -#: gtk/gtkcellrenderercombo.c:110 +#: ../gtk/gtkcellrenderercombo.c:109 msgid "Model" msgstr "Modeloa" -#: gtk/gtkcellrenderercombo.c:111 +#: ../gtk/gtkcellrenderercombo.c:110 msgid "The model containing the possible values for the combo box" msgstr "Konbinazio-koadroaren balio posibleak dituen modeloa" -#: gtk/gtkcellrenderercombo.c:133 gtk/gtkcomboboxentry.c:104 +#: ../gtk/gtkcellrenderercombo.c:132 msgid "Text Column" msgstr "Testu-zutabea" -#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcomboboxentry.c:105 +#: ../gtk/gtkcellrenderercombo.c:133 msgid "A column in the data source model to get the strings from" msgstr "Kateak datu-iturburuen modeloko zein zutabetik hartu behar diren" -#: gtk/gtkcellrenderercombo.c:151 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "Sarrera du" -#: gtk/gtkcellrenderercombo.c:152 +#: ../gtk/gtkcellrenderercombo.c:151 msgid "If FALSE, don't allow to enter strings other than the chosen ones" msgstr "FALSE bada, ez du hautatutakoak ez diren kateak sartzen uzten" -#: gtk/gtkcellrendererpixbuf.c:120 +#: ../gtk/gtkcellrendererpixbuf.c:120 msgid "Pixbuf Object" msgstr "Pixbuf objektua" -#: gtk/gtkcellrendererpixbuf.c:121 +#: ../gtk/gtkcellrendererpixbuf.c:121 msgid "The pixbuf to render" msgstr "Errendatzeko pixbuf-a" -#: gtk/gtkcellrendererpixbuf.c:128 +#: ../gtk/gtkcellrendererpixbuf.c:128 msgid "Pixbuf Expander Open" msgstr "Pixbuf zabaltzailea irekita" -#: gtk/gtkcellrendererpixbuf.c:129 +#: ../gtk/gtkcellrendererpixbuf.c:129 msgid "Pixbuf for open expander" msgstr "Irekitako zabaltzailearen pixbuf-a" -#: gtk/gtkcellrendererpixbuf.c:136 +#: ../gtk/gtkcellrendererpixbuf.c:136 msgid "Pixbuf Expander Closed" msgstr "Pixbuf zabaltzailea itxita" -#: gtk/gtkcellrendererpixbuf.c:137 +#: ../gtk/gtkcellrendererpixbuf.c:137 msgid "Pixbuf for closed expander" msgstr "Itxitako zabaltzailearen pixbuf-a" -#: gtk/gtkcellrendererpixbuf.c:144 gtk/gtkimage.c:244 gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:251 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "Oinarri-IDa" -#: gtk/gtkcellrendererpixbuf.c:145 +#: ../gtk/gtkcellrendererpixbuf.c:145 msgid "The stock ID of the stock icon to render" msgstr "Errendatu behar den oinarri-ikonoaren oinarri-IDa" # -#: gtk/gtkcellrendererpixbuf.c:152 gtk/gtkcellrendererspinner.c:153 -#: gtk/gtkrecentmanager.c:305 gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "Tamaina" -#: gtk/gtkcellrendererpixbuf.c:153 +#: ../gtk/gtkcellrendererpixbuf.c:153 msgid "The GtkIconSize value that specifies the size of the rendered icon" msgstr "Errendatutako ikonoaren tamaina zehazten duen GtkIconSize-(r)en balioa" -#: gtk/gtkcellrendererpixbuf.c:162 +#: ../gtk/gtkcellrendererpixbuf.c:162 msgid "Detail" msgstr "Xehetasunak" -#: gtk/gtkcellrendererpixbuf.c:163 +#: ../gtk/gtkcellrendererpixbuf.c:163 msgid "Render detail to pass to the theme engine" msgstr "Errendatu gaiaren motorrera pasatzeko xehetasunak " -#: gtk/gtkcellrendererpixbuf.c:196 +#: ../gtk/gtkcellrendererpixbuf.c:196 msgid "Follow State" msgstr "Hurrengo egoera" -#: gtk/gtkcellrendererpixbuf.c:197 +#: ../gtk/gtkcellrendererpixbuf.c:197 msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "" "Errendatutako 'pixbuf'a egoerarekin bat koloreztatuko den ala ez adierazten " "du" # -#: gtk/gtkcellrendererpixbuf.c:214 gtk/gtkimage.c:319 gtk/gtkwindow.c:662 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:326 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "Ikonoa" -#: gtk/gtkcellrendererprogress.c:127 +#: ../gtk/gtkcellrendererprogress.c:127 msgid "Value of the progress bar" msgstr "Progresio-barraren balioa" -#: gtk/gtkcellrendererprogress.c:144 gtk/gtkcellrenderertext.c:231 -#: gtk/gtkentry.c:739 gtk/gtkentrybuffer.c:352 gtk/gtkmessagedialog.c:226 -#: gtk/gtkprogressbar.c:150 gtk/gtktextbuffer.c:210 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "Testua" -#: gtk/gtkcellrendererprogress.c:145 +#: ../gtk/gtkcellrendererprogress.c:145 msgid "Text on the progress bar" msgstr "Progresio-barraren testua" -#: gtk/gtkcellrendererprogress.c:168 gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 msgid "Pulse" msgstr "Pultsua" -#: gtk/gtkcellrendererprogress.c:169 +#: ../gtk/gtkcellrendererprogress.c:169 msgid "" "Set this to positive values to indicate that some progress is made, but you " "don't know how much." @@ -1421,11 +1583,11 @@ msgstr "" "Ezarri balio positiboekin zehaztasunik gabeko progresio batzuk burutu direla " "adierazteko." -#: gtk/gtkcellrendererprogress.c:185 +#: ../gtk/gtkcellrendererprogress.c:185 msgid "Text x alignment" msgstr "Testuaren x lerrokatzea" -#: gtk/gtkcellrendererprogress.c:186 +#: ../gtk/gtkcellrendererprogress.c:186 msgid "" "The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -1433,242 +1595,258 @@ msgstr "" "Lerrokatze horizontala, 0tik (ezkerretik) 1era (eskuinera). Alderantziz RTL " "diseinuetan." -#: gtk/gtkcellrendererprogress.c:202 +#: ../gtk/gtkcellrendererprogress.c:202 msgid "Text y alignment" msgstr "Testuaren y lerrokatzea" -#: gtk/gtkcellrendererprogress.c:203 +#: ../gtk/gtkcellrendererprogress.c:203 msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "Lerrokatze bertikala, 0tik (goian) 1era (behean)." -#: gtk/gtkcellrendererprogress.c:214 gtk/gtkprogressbar.c:126 -#: gtk/gtkrange.c:427 +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:424 msgid "Inverted" msgstr "Alderantzikatuta" -#: gtk/gtkcellrendererprogress.c:215 gtk/gtkprogressbar.c:127 -#, fuzzy +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 msgid "Invert the direction in which the progress bar grows" -msgstr "Progresio-barraren orientazioa eta hazte-norabidea" +msgstr "Alderantzikatu aurrerapen-barraren hazte-norabidea" -#: gtk/gtkcellrendererspin.c:91 gtk/gtkrange.c:419 gtk/gtkscalebutton.c:239 -#: gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:416 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "Doitzea" -#: gtk/gtkcellrendererspin.c:92 gtk/gtkspinbutton.c:229 -#, fuzzy +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "Biratze-botoiaren balioa duen doitzea" -#: gtk/gtkcellrendererspin.c:107 +#: ../gtk/gtkcellrendererspin.c:107 msgid "Climb rate" msgstr "Igoera-abiadura" -#: gtk/gtkcellrendererspin.c:108 gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "Azelerazio-abiadura botoia sakatzean" -#: gtk/gtkcellrendererspin.c:121 gtk/gtkscale.c:244 gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "Digituak" -#: gtk/gtkcellrendererspin.c:122 gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "Bistaratu beharreko hamartarren kopurua" -#: gtk/gtkcellrendererspinner.c:119 gtk/gtkcheckmenuitem.c:105 -#: gtk/gtkmenu.c:525 gtk/gtkspinner.c:131 gtk/gtktoggleaction.c:133 -#: gtk/gtktogglebutton.c:115 gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:516 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:752 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "Aktibo" -#: gtk/gtkcellrendererspinner.c:120 +#: ../gtk/gtkcellrendererspinner.c:120 msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Birakaria gelaxkan aktibatuta dagoen (bistaratua alegia) edo ez" -#: gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:138 msgid "Pulse of the spinner" msgstr "Birakariaren taupada" -#: gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:152 msgid "The GtkIconSize value that specifies the size of the rendered spinner" -msgstr "" -"Errendatutako birakariaren tamaina zehazten duen GtkIconSize-ren balioa" +msgstr "Errendatutako birakariaren tamaina zehazten duen GtkIconSize-ren balioa" -#: gtk/gtkcellrenderertext.c:232 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Errendatu beharreko testua" -#: gtk/gtkcellrenderertext.c:239 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Markaketa" -#: gtk/gtkcellrenderertext.c:240 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Errendatu beharreko testu markatua" -#: gtk/gtkcellrenderertext.c:247 gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Atributuak" -#: gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "Errendatzaileko testuari aplikatu beharreko estilo-atributuen zerrenda" -#: gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Paragrafo bakarreko modua" -#: gtk/gtkcellrenderertext.c:256 -#, fuzzy +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "Testu osoa paragrafo bakar batean mantenduko den ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:264 gtk/gtkcellview.c:178 gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:196 msgid "Background color name" msgstr "Atzeko planoaren kolore-izena" -#: gtk/gtkcellrenderertext.c:265 gtk/gtkcellview.c:179 gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:197 msgid "Background color as a string" msgstr "Atzeko planoaren kolorea kate gisa" -#: gtk/gtkcellrenderertext.c:272 gtk/gtkcellview.c:185 gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:204 msgid "Background color" msgstr "Atzeko planoaren kolorea" -#: gtk/gtkcellrenderertext.c:273 gtk/gtkcellview.c:186 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "Atzeko planoaren kolorea GdkColor gisa" -#: gtk/gtkcellrenderertext.c:280 gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:311 +msgid "Background color as RGBA" +msgstr "Atzeko planoaren kolorea GBUA gisa" + +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 +msgid "Background color as a GdkRGBA" +msgstr "Atzeko planoaren kolorea GdkRGBA gisa" + +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:220 msgid "Foreground color name" msgstr "Aurreko planoaren kolore-izena" -#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:221 msgid "Foreground color as a string" msgstr "Aurreko planoaren kolorea kate gisa" -#: gtk/gtkcellrenderertext.c:288 gtk/gtktexttag.c:210 -#: gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:228 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "Aurreko planoko kolorea" -#: gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Aurreko planoaren kolorea GdkColor gisa" +#: ../gtk/gtkcellrenderertext.c:341 +msgid "Foreground color as RGBA" +msgstr "Aurreko planoaren kolorea GBUA gisa" + +#: ../gtk/gtkcellrenderertext.c:342 +msgid "Foreground color as a GdkRGBA" +msgstr "Aurreko planoaren kolorea GdkRGBA gisa" + # -#: gtk/gtkcellrenderertext.c:297 gtk/gtkentry.c:663 gtk/gtktexttag.c:227 -#: gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktextview.c:686 msgid "Editable" msgstr "Editagarria" -#: gtk/gtkcellrenderertext.c:298 gtk/gtktexttag.c:228 gtk/gtktextview.c:669 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:246 +#: ../gtk/gtktextview.c:687 msgid "Whether the text can be modified by the user" msgstr "Erabiltzaileak testua alda dezakeen ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:305 gtk/gtkcellrenderertext.c:313 -#: gtk/gtktexttag.c:243 gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:261 ../gtk/gtktexttag.c:269 msgid "Font" msgstr "Letra-tipoa" -#: gtk/gtkcellrenderertext.c:306 gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:262 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "Letra-tipoaren azalpena kate gisa; adibidez, \"Sans Italic 12\"" -#: gtk/gtkcellrenderertext.c:314 gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:270 msgid "Font description as a PangoFontDescription struct" msgstr "Letra-tipoaren azalpena PangoFontDescription-en egitura gisa" # -#: gtk/gtkcellrenderertext.c:322 gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:277 msgid "Font family" msgstr "Letra-tipoen familia" -#: gtk/gtkcellrenderertext.c:323 gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:278 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" -msgstr "" -"Letra-tipoen familien izena; adibidez, Sans, Helvetica, Times, Monospace" +msgstr "Letra-tipoen familien izena; adibidez, Sans, Helvetica, Times, Monospace" -#: gtk/gtkcellrenderertext.c:330 gtk/gtkcellrenderertext.c:331 -#: gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:285 msgid "Font style" msgstr "Letra-tipoaren estiloa" -#: gtk/gtkcellrenderertext.c:339 gtk/gtkcellrenderertext.c:340 -#: gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:294 msgid "Font variant" msgstr "Letra-tipoaren aldaera" # -#: gtk/gtkcellrenderertext.c:348 gtk/gtkcellrenderertext.c:349 -#: gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:303 msgid "Font weight" msgstr "Letraren zabalera" # -#: gtk/gtkcellrenderertext.c:358 gtk/gtkcellrenderertext.c:359 -#: gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:314 msgid "Font stretch" msgstr "Letra-tipo tiratua" -#: gtk/gtkcellrenderertext.c:367 gtk/gtkcellrenderertext.c:368 -#: gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:323 msgid "Font size" msgstr "Letra-tamaina" # -#: gtk/gtkcellrenderertext.c:377 gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:343 msgid "Font points" msgstr "Letraren puntuak" -#: gtk/gtkcellrenderertext.c:378 gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:344 msgid "Font size in points" msgstr "Letra-tamaina puntutan" # -#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:333 msgid "Font scale" msgstr "Letra-tipoaren eskala" -#: gtk/gtkcellrenderertext.c:388 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Letra-tipoa eskalatzeko faktorea" # -#: gtk/gtkcellrenderertext.c:397 gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:412 msgid "Rise" msgstr "Goratzea" -#: gtk/gtkcellrenderertext.c:398 -msgid "" -"Offset of text above the baseline (below the baseline if rise is negative)" +#: ../gtk/gtkcellrenderertext.c:451 +msgid "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Testuaren desplazamendua oinarri-lerroaren gainetik (oinarri-lerroaren " "azpitik goratzea negatiboa bada)" -#: gtk/gtkcellrenderertext.c:409 gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:452 msgid "Strikethrough" msgstr "Marratua" -#: gtk/gtkcellrenderertext.c:410 gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:453 msgid "Whether to strike through the text" msgstr "Testua marratuko den ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:417 gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:460 msgid "Underline" msgstr "Azpimarra" -#: gtk/gtkcellrenderertext.c:418 gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:461 msgid "Style of underline for this text" msgstr "Testu honen azpimarra-estiloa" -#: gtk/gtkcellrenderertext.c:426 gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:372 msgid "Language" msgstr "Hizkuntza" -#: gtk/gtkcellrenderertext.c:427 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1678,11 +1856,12 @@ msgstr "" "dezake testua bihurtzean. Parametro hori ulertzen ez baduzu, beharbada ez " "duzu beharko" -#: gtk/gtkcellrenderertext.c:447 gtk/gtklabel.c:681 gtk/gtkprogressbar.c:180 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:217 msgid "Ellipsize" msgstr "Elipsi gisa" -#: gtk/gtkcellrenderertext.c:448 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1690,30 +1869,29 @@ msgstr "" "Katea elipsi gisa jartzeko lekurik egokiena, errendatutako gelaxkak ez badu " "nahikoa toki kate osoa bistaratzeko." -#: gtk/gtkcellrenderertext.c:467 gtk/gtkfilechooserbutton.c:413 -#: gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Zabalera karakteretan" -#: gtk/gtkcellrenderertext.c:468 gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "Etiketaren zabalera (karakteretan)" -#: gtk/gtkcellrenderertext.c:492 gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Zabalera maximoa karakteretan" -#: gtk/gtkcellrenderertext.c:493 -#, fuzzy +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" -msgstr "Etiketaren zabalera maximoa, karaktereetan" +msgstr "Gelaxkaren gehienezko zabalera, karaktereetan" # -#: gtk/gtkcellrenderertext.c:511 gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:469 msgid "Wrap mode" msgstr "Itzulbiratze-modua" -#: gtk/gtkcellrenderertext.c:512 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1722,574 +1900,661 @@ msgstr "" "toki kate osoa bistaratzeko." # -#: gtk/gtkcellrenderertext.c:531 gtk/gtkcombobox.c:700 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "Doitze-zabalera" -#: gtk/gtkcellrenderertext.c:532 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "Testua itzulbiratzeko zabalera" -#: gtk/gtkcellrenderertext.c:552 gtk/gtktreeviewcolumn.c:301 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "Lerrokatzea" -#: gtk/gtkcellrenderertext.c:553 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "Marrak nola lerrokatu" -#: gtk/gtkcellrenderertext.c:565 gtk/gtkcellview.c:208 gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:558 msgid "Background set" msgstr "Atzeko planoaren ezarpena" -#: gtk/gtkcellrenderertext.c:566 gtk/gtkcellview.c:209 gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the background color" -msgstr "" -"Etiketa honek atzeko planoaren koloreari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek atzeko planoaren koloreari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:569 gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:566 msgid "Foreground set" msgstr "Aurreko planoaren ezarpena" -#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the foreground color" -msgstr "" -"Etiketa honek aurreko planoaren koloreari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek aurreko planoaren koloreari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:573 gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:570 msgid "Editability set" msgstr "Editagarritasunaren ezarpena" -#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects text editability" -msgstr "" -"Etiketa honek testuaren editagarritasunari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek testuaren editagarritasunari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:577 gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:574 msgid "Font family set" msgstr "Letra-tipoen familiaren ezarpena" -#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font family" -msgstr "" -"Etiketa honek letra-tipoen familiari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek letra-tipoen familiari eragiten dion ala ez adierazten du" # -#: gtk/gtkcellrenderertext.c:581 gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:578 msgid "Font style set" msgstr "Letra-tipoen estiloaren ezarpena" -#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font style" msgstr "Etiketa honek letra-estiloari eragingo dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:585 gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:582 msgid "Font variant set" msgstr "Letra-tipoen aldaeraren ezarpena" -#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:583 msgid "Whether this tag affects the font variant" -msgstr "" -"Etiketa honek letra-tipoen aldaerari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek letra-tipoen aldaerari eragiten dion ala ez adierazten du" # -#: gtk/gtkcellrenderertext.c:589 gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:586 msgid "Font weight set" msgstr "Letraren zabaleraren ezarpena" -#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:587 msgid "Whether this tag affects the font weight" msgstr "Etiketa honek letraren zabalerari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:593 gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:590 msgid "Font stretch set" msgstr "Letra-tipo tiratuaren ezarpena" -#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the font stretch" -msgstr "" -"Etiketa honek letra-tipoaren luzatzeari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek letra-tipoaren luzatzeari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:597 gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:594 msgid "Font size set" msgstr "Letra-tamainaren ezarpena" -#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the font size" msgstr "Etiketa honek letra-tamainari eragingo dion ala ez adierazten du" # -#: gtk/gtkcellrenderertext.c:601 gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:598 msgid "Font scale set" msgstr "Letra-tipoaren eskalaren ezarpena" -#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:599 msgid "Whether this tag scales the font size by a factor" msgstr "" "Etiketa honek faktore batez letraren tamaina eskalatzen duen ala ez " "adierazten du" -#: gtk/gtkcellrenderertext.c:605 gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:618 msgid "Rise set" msgstr "Goratzearen ezarpena " -#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects the rise" msgstr "Etiketa honek goratzeari eragingo dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:609 gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:634 msgid "Strikethrough set" msgstr "Marratuaren ezarpena" -#: gtk/gtkcellrenderertext.c:610 gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:635 msgid "Whether this tag affects strikethrough" msgstr "Etiketa honek marratuari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:613 gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:642 msgid "Underline set" msgstr "Azpimarraren ezarpena" -#: gtk/gtkcellrenderertext.c:614 gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:643 msgid "Whether this tag affects underlining" msgstr "Etiketa honek azpimarrari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:617 gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:606 msgid "Language set" msgstr "Hizkuntzaren ezarpena" -#: gtk/gtkcellrenderertext.c:618 gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:607 msgid "Whether this tag affects the language the text is rendered as" msgstr "" "Etiketa honek testua errendatzen den hizkuntzari eragiten dion ala ez " "adierazten du" -#: gtk/gtkcellrenderertext.c:621 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Elipsi multzoa" -#: gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" -msgstr "" -"Etiketa honek elipsi sortzearen moduari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek elipsi sortzearen moduari eragiten dion ala ez adierazten du" -#: gtk/gtkcellrenderertext.c:625 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Lerrokatzea ezarri" -#: gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Etiketa honek lerrokatze moduari eragiten dion ala ez" -#: gtk/gtkcellrenderertoggle.c:128 +#: ../gtk/gtkcellrenderertoggle.c:128 msgid "Toggle state" msgstr "Aktibatze-egoera" -#: gtk/gtkcellrenderertoggle.c:129 +#: ../gtk/gtkcellrenderertoggle.c:129 msgid "The toggle state of the button" msgstr "Botoia aktibatuta dagoen ala ez" -#: gtk/gtkcellrenderertoggle.c:136 +#: ../gtk/gtkcellrenderertoggle.c:136 msgid "Inconsistent state" msgstr "Sendotasunik gabeko egoera" -#: gtk/gtkcellrenderertoggle.c:137 +#: ../gtk/gtkcellrenderertoggle.c:137 msgid "The inconsistent state of the button" msgstr "Botoiaren sendotasunik gabeko egoera" -#: gtk/gtkcellrenderertoggle.c:144 +#: ../gtk/gtkcellrenderertoggle.c:144 msgid "Activatable" msgstr "Aktibagarritasuna" -#: gtk/gtkcellrenderertoggle.c:145 +#: ../gtk/gtkcellrenderertoggle.c:145 msgid "The toggle button can be activated" msgstr "Txandakatze-botoia aktiba daiteke" -#: gtk/gtkcellrenderertoggle.c:152 +#: ../gtk/gtkcellrenderertoggle.c:152 msgid "Radio state" msgstr "Aukera-egoera" -#: gtk/gtkcellrenderertoggle.c:153 +#: ../gtk/gtkcellrenderertoggle.c:153 msgid "Draw the toggle button as a radio button" msgstr "Marraztu txandakatze-botoia aukera-botoi gisa" -#: gtk/gtkcellrenderertoggle.c:160 +#: ../gtk/gtkcellrenderertoggle.c:160 msgid "Indicator size" msgstr "Adierazlearen tamaina" -#: gtk/gtkcellrenderertoggle.c:161 gtk/gtkcheckbutton.c:72 -#: gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Kontrol-laukiaren edo aukera-adierazlearen tamaina" -#: gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:210 +msgid "Background RGBA color" +msgstr "Atzeko planoaren GBUA kolorea" + +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "CellView modeloa" -#: gtk/gtkcellview.c:201 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "Gelaxka-ikustailearen modeloa" -#: gtk/gtkcheckbutton.c:71 gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "Gelaxkaren area" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "Gelaxkak diseinatzeko erabilitako GtkCellArea" + +#: ../gtk/gtkcellview.c:265 +msgid "Cell Area Context" +msgstr "Gelaxkaren arearen testuingurua" + +#: ../gtk/gtkcellview.c:266 +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "Gelaxkaren ikuspegiaren geometria kalkulatzeko erabilitako GtkCellAreaContext" + +#: ../gtk/gtkcellview.c:283 +msgid "Draw Sensitive" +msgstr "Marrazketa sentikorra" + +#: ../gtk/gtkcellview.c:284 +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Gelaxkak modu sentikorrean marraztea derrigortu edo ez" + +# +#: ../gtk/gtkcellview.c:302 +msgid "Fit Model" +msgstr "Doitu eredua" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "Ereduan errenkada bakoitzarentzako nahiko leku eskatu edo ez" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Adierazlearen tamaina" -#: gtk/gtkcheckbutton.c:79 gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "Adierazlearen tartea" -#: gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "Kontrol-laukiaren edo aukera-adierazlearen inguruko tartea" -#: gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Menu-elementuak hautamarka duen ala ez adierazten du" # -#: gtk/gtkcheckmenuitem.c:113 gtk/gtktogglebutton.c:123 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Sendotasunik gabea" -#: gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "\"sendotasunik gabeko\" egoera bistaratuko den ala ez adierazten du" -#: gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Marraztu aukera ugariko menu-elementu gisa" -#: gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "" "Menu-elementuak aukera ugariko menu-elementuaren itxura duen ala ez " "adierazten du" -#: gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "Erabili alfa" -#: gtk/gtkcolorbutton.c:160 -#, fuzzy +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" -msgstr "Koloreari alfa balioa emango zaion ala ez adierazten du" +msgstr "Koloreari alfa balioa emango zaion edo ez" # -#: gtk/gtkcolorbutton.c:174 gtk/gtkfilechooserbutton.c:399 -#: gtk/gtkfontbutton.c:140 gtk/gtkprintjob.c:115 gtk/gtkstatusicon.c:415 -#: gtk/gtktreeviewcolumn.c:268 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:141 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "Izenburua" -#: gtk/gtkcolorbutton.c:175 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "Kolorea hautatzeko elkarrizketa-koadroaren izenburua" -#: gtk/gtkcolorbutton.c:189 gtk/gtkcolorsel.c:323 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Uneko kolorea" -#: gtk/gtkcolorbutton.c:190 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "Hautatutako kolorea" -#: gtk/gtkcolorbutton.c:204 gtk/gtkcolorsel.c:330 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Uneko alfa" -#: gtk/gtkcolorbutton.c:205 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "Hautatutako opakutasun-balioa (0 guztiz gardena, 65535 guztiz opakua)" -#: gtk/gtkcolorsel.c:309 +#: ../gtk/gtkcolorbutton.c:230 +msgid "Current RGBA Color" +msgstr "Uneko GBUA kolorea" + +#: ../gtk/gtkcolorbutton.c:231 +msgid "The selected RGBA color" +msgstr "Hautatutako GBUA kolorea" + +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Opakutasun-kontrola du" -#: gtk/gtkcolorsel.c:310 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "" "Kolore-hautatzaileak opakutasuna ezartzeko baimena eman behar duen ala ez " "adierazten du" -#: gtk/gtkcolorsel.c:316 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Paleta dauka" -#: gtk/gtkcolorsel.c:317 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Paleta erabili behar den ala ez adierazten du" -#: gtk/gtkcolorsel.c:324 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "Uneko kolorea" -#: gtk/gtkcolorsel.c:331 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "Uneko opakutasun-balioa (0 guztiz gardena, 65535 guztiz opakua)" -#: gtk/gtkcolorsel.c:345 -msgid "Custom palette" -msgstr "Paleta pertsonalizatua" +#: ../gtk/gtkcolorsel.c:360 +msgid "Current RGBA" +msgstr "Uneko GBUA" -#: gtk/gtkcolorsel.c:346 -msgid "Palette to use in the color selector" -msgstr "Kolore-hautatzailean erabili beharreko paleta" +#: ../gtk/gtkcolorsel.c:361 +msgid "The current RGBA color" +msgstr "Uneko GBUA kolorea" -#: gtk/gtkcolorseldialog.c:110 +#: ../gtk/gtkcolorseldialog.c:110 msgid "Color Selection" msgstr "Kolore hautapena" -#: gtk/gtkcolorseldialog.c:111 +#: ../gtk/gtkcolorseldialog.c:111 msgid "The color selection embedded in the dialog." msgstr "Kolore hautapena elkarrizketa-koadroan kapsulatuta dago." -#: gtk/gtkcolorseldialog.c:117 +#: ../gtk/gtkcolorseldialog.c:117 msgid "OK Button" msgstr "Ados botoia" -#: gtk/gtkcolorseldialog.c:118 +#: ../gtk/gtkcolorseldialog.c:118 msgid "The OK button of the dialog." msgstr "Elkarrizketa-koadroan agertzen den Ados botoia." -#: gtk/gtkcolorseldialog.c:124 +#: ../gtk/gtkcolorseldialog.c:124 msgid "Cancel Button" msgstr "Utzi botoia" -#: gtk/gtkcolorseldialog.c:125 +#: ../gtk/gtkcolorseldialog.c:125 msgid "The cancel button of the dialog." msgstr "Elkarrizketa-koadroan agertzen den Utzi botoia." -#: gtk/gtkcolorseldialog.c:131 +#: ../gtk/gtkcolorseldialog.c:131 msgid "Help Button" msgstr "Laguntza botoia" -#: gtk/gtkcolorseldialog.c:132 +#: ../gtk/gtkcolorseldialog.c:132 msgid "The help button of the dialog." msgstr "Elkarrizketa-koadroan agertzen den Laguntza botoia." -#: gtk/gtkcombobox.c:683 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "Konbinazio-koadroaren modeloa" -#: gtk/gtkcombobox.c:684 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "Konbinazio-koadroa zein modelotakoa den" -#: gtk/gtkcombobox.c:701 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "Sareta bateko elementuak diseinatzeko doitze-zabalera" # -#: gtk/gtkcombobox.c:723 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "Errenkada-hedaduraren zutabea" -#: gtk/gtkcombobox.c:724 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "Errenkada-hedaduraren balioak dituen TreeModel zutabea" -#: gtk/gtkcombobox.c:745 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "Zutabe-hedaduraren zutabea" -#: gtk/gtkcombobox.c:746 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "Zutabe-hedaduraren balioak dituen TreeModel zutabea" -#: gtk/gtkcombobox.c:767 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "Elementu aktiboa" -#: gtk/gtkcombobox.c:768 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "Unean aktibatuta dagoen elementua" -#: gtk/gtkcombobox.c:787 gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Gehitu askagarriak menuei" -#: gtk/gtkcombobox.c:788 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "" "Goitibeherako menuek askagarri bat eduki dezaketen menuko elementu gisa ala " "ez adierazten du" -#: gtk/gtkcombobox.c:803 gtk/gtkentry.c:688 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Markoa dauka" -#: gtk/gtkcombobox.c:804 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "" "Konbinazio-koadroko goitibeherako menuek umearen inguruan markoa marraztu " "behar duten ala ez adierazten du" -#: gtk/gtkcombobox.c:812 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "" "Konbinazio-koadroko goitibeherako menuek fokoa hartzen duten (bertan " "saguarekin klik egitean) ala ez adierazten du" -#: gtk/gtkcombobox.c:827 gtk/gtkmenu.c:580 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:571 msgid "Tearoff Title" msgstr "Askagarriaren izenburua" -#: gtk/gtkcombobox.c:828 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" msgstr "Leiho-kudeatzaileak bistara dezakeen izenburua laster-leihoa kentzean" -#: gtk/gtkcombobox.c:845 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "Laster-leihoa erakutsita" -#: gtk/gtkcombobox.c:846 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "Goitibeherako konbinazioa erakutsi edo ez" -#: gtk/gtkcombobox.c:862 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "Botoiaren sentikortasuna" -#: gtk/gtkcombobox.c:863 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "" "Modeloa hutsik dagoenean goitibeherako botoia sentikorra izango den ala ez " "adierazten du" -#: gtk/gtkcombobox.c:870 +#: ../gtk/gtkcombobox.c:859 +msgid "Whether combo box has an entry" +msgstr "Konbinazio-koadroak sarrera bat duen edo ez adierazten du" + +#: ../gtk/gtkcombobox.c:874 +msgid "Entry Text Column" +msgstr "Sarrerako testu-zutabea" + +#: ../gtk/gtkcombobox.c:875 +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" +msgstr "" +"Konbinazio-koadroaren ereduko zutabea sarrerako kateekin esleitzeko, baldin " +"eta konbinazio-koadroa '#GtkComboBox:has-entry = %TRUE'-rekin sortu bazen" + +#: ../gtk/gtkcombobox.c:892 +msgid "ID Column" +msgstr "ID zutabea" + +#: ../gtk/gtkcombobox.c:893 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "Konbinazio-koadroaren ereduko zutabea (ereduko balioen ID kateak eskaintzeko)" + +#: ../gtk/gtkcombobox.c:908 +msgid "Active id" +msgstr "ID aktiboa" + +#: ../gtk/gtkcombobox.c:909 +msgid "The value of the id column for the active row" +msgstr "Errenkada aktiboaren ID zutabearen balioa" + +# +#: ../gtk/gtkcombobox.c:924 +msgid "Popup Fixed Width" +msgstr "Laster-menuaren zabalera finkoa" + +#: ../gtk/gtkcombobox.c:925 +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "" +"Leiho gainerakorraren zabalera konbinazio-koadroaren zabalerarekin bat " +"datorren finkatutako zabalera izan behar duen edo ez" + +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "Zerrenda gisa agertzen da" -#: gtk/gtkcombobox.c:871 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "" "Konbinazio-koadroko goitibeherako menuek menu-itxura baino zerrenda-itxura " "gehiago eduki behar duten ala ez adierazten du" # -#: gtk/gtkcombobox.c:887 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "Geziaren tamaina" -#: gtk/gtkcombobox.c:888 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "Geziaren gutxiengo tamaina konbinazio-koadroan" -#: gtk/gtkcombobox.c:903 gtk/gtkentry.c:788 gtk/gtkhandlebox.c:182 -#: gtk/gtkmenubar.c:189 gtk/gtkstatusbar.c:244 gtk/gtktoolbar.c:577 -#: gtk/gtkviewport.c:158 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:207 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:153 msgid "Shadow type" msgstr "Itzal-mota" -#: gtk/gtkcombobox.c:904 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "Konbinazio-koadroaren inguruan marraztuko den itzal mota" # -#: gtk/gtkcontainer.c:259 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "Tamaina aldatzeko modua" -#: gtk/gtkcontainer.c:260 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "Tamaina-aldatzeak nola kudeatzen diren adierazten du" # -#: gtk/gtkcontainer.c:267 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "Ertzaren zabalera" -#: gtk/gtkcontainer.c:268 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "Edukiontzi umeen kanpoko ertz hutsaren zabalera" -#: gtk/gtkcontainer.c:276 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "Umea" -#: gtk/gtkcontainer.c:277 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "Edukiontziari beste ume bat gehitzeko erabil daiteke" -#: gtk/gtkdialog.c:165 gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Edukiaren arearen ertza" -#: gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "Ertzak elkarrizketa-area nagusiaren inguruan duen zabalera" -#: gtk/gtkdialog.c:183 gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Edukiaren arearen tartea" -#: gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "Elkarrizketa-koadro nagusiko areako elementuen arteko tartea" -#: gtk/gtkdialog.c:191 gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Botoien tartea" -#: gtk/gtkdialog.c:192 gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Botoien arteko tartea" -#: gtk/gtkdialog.c:200 gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Ekintza-arearen ertza" -#: gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" -msgstr "" -"Elkarrizketa-koadroaren behealdeko botoi-arearen inguruko ertzaren zabalera" +msgstr "Elkarrizketa-koadroaren behealdeko botoi-arearen inguruko ertzaren zabalera" -#: gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Testuaren bufferra" -#: gtk/gtkentry.c:636 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Testu-bufferra objektua (sarrerako testua gordetzen duena)" # -#: gtk/gtkentry.c:643 gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Kurtsorearen posizioa" -#: gtk/gtkentry.c:644 gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "Txertatze-kurtsorearen uneko posizioa karakteretan" # -#: gtk/gtkentry.c:653 gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Hautapen-muga" -#: gtk/gtkentry.c:654 gtk/gtklabel.c:655 -msgid "" -"The position of the opposite end of the selection from the cursor in chars" +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 +msgid "The position of the opposite end of the selection from the cursor in chars" msgstr "Hautapenaren kontrako bukaera kurtsoretik zenbat karakteretara dagoen." -#: gtk/gtkentry.c:664 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Sarreraren edukia edita daitekeen ala ez adierazten du" -#: gtk/gtkentry.c:671 gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Gehienezko luzera" -#: gtk/gtkentry.c:672 gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" -msgstr "" -"Sarrera honen gehienezko karaktere-kopurua. Gehienezkorik ez badago, zero" +msgstr "Sarrera honen gehienezko karaktere-kopurua. Gehienezkorik ez badago, zero" -#: gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Ikusgaitasuna" -#: gtk/gtkentry.c:681 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" @@ -2297,32 +2562,31 @@ msgstr "" "FALTSUAk \"karaktere ikusezina\" bistaratzen du uneko testuaren ordez " "(pasahitz-modua)" -#: gtk/gtkentry.c:689 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALTSUAk kanpoko alaka kentzen du sarreratik" -#: gtk/gtkentry.c:697 -msgid "" -"Border between text and frame. Overrides the inner-border style property" +#: ../gtk/gtkentry.c:788 +msgid "Border between text and frame. Overrides the inner-border style property" msgstr "" "Testua eta markoaren arteko ertza. 'Barneko ertza' propietateari jaramonik " "ez zaio egingo" -#: gtk/gtkentry.c:704 gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Karaktere ikusezina" -#: gtk/gtkentry.c:705 gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "Sarreraren edukia maskaratzean erabili beharreko karakterea (\"pasahitz-" "moduan\")" -#: gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Lehenetsia aktibatzen du" -#: gtk/gtkentry.c:713 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2330,33 +2594,33 @@ msgstr "" "Sartu botoia sakatutakoan, trepeta lehenetsia aktibatuko den ala ez " "adierazten du (adibidez, elkarrizketa-koadroko botoi lehenetsia)" -#: gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Zabalera karakteretan" -#: gtk/gtkentry.c:720 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Sarreran zenbat karaktererentzako tartea utzi behar den " # -#: gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Korritze-desplazamendua" -#: gtk/gtkentry.c:730 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "Sarrerako pixel-kopurua pantailan ezkerrera korrituta " -#: gtk/gtkentry.c:740 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "Sarreraren edukia" # -#: gtk/gtkentry.c:755 gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X lerrokatzea" -#: gtk/gtkentry.c:756 gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2365,69 +2629,66 @@ msgstr "" "diseinuetan" # -#: gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Trunkatu lerro-anitzak" -#: gtk/gtkentry.c:773 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Lerro-anitzeko itsatsiak lerro bakarrean trunkatu edo ez" -#: gtk/gtkentry.c:789 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "Sarreraren inguruan marraztuko den itzal mota 'markoa du' ezartzean" -#: gtk/gtkentry.c:804 gtk/gtktextview.c:748 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:766 msgid "Overwrite mode" msgstr "Gainidazteko modua" -#: gtk/gtkentry.c:805 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" -msgstr "" -"Testu berriak lehendik dagoen testua gainidazten duen ala ez adierazten du" +msgstr "Testu berriak lehendik dagoen testua gainidazten duen ala ez adierazten du" -#: gtk/gtkentry.c:819 gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Testuaren luzera" -#: gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Uneko testuaren luzera sarreran" -#: gtk/gtkentry.c:835 -#, fuzzy +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" -msgstr "Karaktere ikusezina" +msgstr "Karaktere ikusezina ezarrita" -#: gtk/gtkentry.c:836 -#, fuzzy +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "Karaktereen ikusezintasuna ezarri den edo ez" -#: gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Blok.maius. abisua" -#: gtk/gtkentry.c:855 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "" "Pasahitzen sarrerek abisua erakutsi behar duten maiuskulak blokeatuta " "daudenean edo ez." # -#: gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Progresioaren frakzioa" -#: gtk/gtkentry.c:870 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "Atazaren amaitutako uneko frakzioa" -#: gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Progresioaren pultsuaren urratsa" -#: gtk/gtkentry.c:888 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2435,271 +2696,250 @@ msgstr "" "Sarreraren zabalera osoaren frakzioa progresioaren itzulerako blokea " "mugitzeko gtk_entry_progress_pulse() funtzioaren dei bakoitzagatik" -#: gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Pixbuf nagusia" -#: gtk/gtkentry.c:905 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "Sarreraren pixbuf nagusia" -#: gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Bigarren mailako pixbuf-a" -#: gtk/gtkentry.c:920 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "Sarreraren bigarren mailako pixbuf-a" -#: gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "Oinarri-ID nagusia" -#: gtk/gtkentry.c:935 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "Ikono nagusiarentzako oinarri-IDa" -#: gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "Bigarren mailako oinarri-IDa" -#: gtk/gtkentry.c:950 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "Bigarren mailako ikonoarentzako oinarri-IDa" -#: gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Ikono-izen nagusia" -#: gtk/gtkentry.c:965 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Ikono nagusiarentzako ikono-izena" -#: gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Bigarren mailako ikono-izena" -#: gtk/gtkentry.c:980 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "Bigarren mailako ikonoarentzako ikono-izena" -#: gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "GIcon nagusia" -#: gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "Ikono nagusiarentzako GIcon" -#: gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "Bigarren mailako GIcon" -#: gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "Bigarren mailako ikonoarentzako GIcon" # -#: gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Biltegi mota nagusia" -#: gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "Ikono nagusientzat erabiltzen den adierazpidea" -#: gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Bigarren mailako biltegi mota" -#: gtk/gtkentry.c:1041 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "Bigarren mailako ikonoentzat erabiltzen den adierazpidea" -#: gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Ikono nagusia aktibagarria" -#: gtk/gtkentry.c:1063 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Ikono nagusia aktibagarria den edo ez" -#: gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Bigarren mailako ikonoa aktibagarria" -#: gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Bigarren mailako ikonoa aktibagarria den edo ez" -#: gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Ikono nagusia sentikorra" -#: gtk/gtkentry.c:1107 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Ikono nagusia sentikorra den edo ez" -#: gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Bigarren mailako ikonoa sentikorra" -#: gtk/gtkentry.c:1129 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Bigarren mailako ikonoa sentikorra den edo ez" -#: gtk/gtkentry.c:1145 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Ikono nagusiaren argibidearen testua" -#: gtk/gtkentry.c:1146 gtk/gtkentry.c:1182 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "Ikono nagusiaren argibidearen edukia" -#: gtk/gtkentry.c:1162 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Bigarren mailako ikonoaren argibidearen testua" -#: gtk/gtkentry.c:1163 gtk/gtkentry.c:1201 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "Bigarren mailako ikonoaren argibidearen edukia" -#: gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Ikono nagusiaren argibidearen markaketa" -#: gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Bigarren mailako ikonoaren argibidearen markaketa" -#: gtk/gtkentry.c:1220 gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:794 msgid "IM module" msgstr "BM modulua" -#: gtk/gtkentry.c:1221 gtk/gtktextview.c:777 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:795 msgid "Which IM module should be used" msgstr "Zein BM modulu erabiliko den" # -#: gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Ikono argitua" -#: gtk/gtkentry.c:1236 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" -msgstr "" -"Ikono aktibagarriak argitu behar diren sagua gainetik igarotzean edo ez" +msgstr "Ikono aktibagarriak argitu behar diren sagua gainetik igarotzean edo ez" -#: gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Progresioaren ertza" -#: gtk/gtkentry.c:1250 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "Progresio-barraren inguruko ertza" -#: gtk/gtkentry.c:1742 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Testu eta markoaren arteko ertza." -# -#: gtk/gtkentry.c:1747 gtk/gtklabel.c:903 -msgid "Select on focus" -msgstr "Hautatu enfokatzean" - -#: gtk/gtkentry.c:1748 -msgid "Whether to select the contents of an entry when it is focused" -msgstr "Enfokatzean, sarreraren edukia hautatuko den ala ez adierazten du" - -#: gtk/gtkentry.c:1762 -msgid "Password Hint Timeout" -msgstr "Pasahitzaren gonbitearen denbora-muga" - -#: gtk/gtkentry.c:1763 -msgid "How long to show the last input character in hidden entries" -msgstr "" -"Zenbat denboran erakutsiko den idatzitako azken karakterea ezkutuko " -"sarreretan" - -#: gtk/gtkentrybuffer.c:353 +#: ../gtk/gtkentrybuffer.c:353 msgid "The contents of the buffer" msgstr "Bufferraren edukia" -#: gtk/gtkentrybuffer.c:368 +#: ../gtk/gtkentrybuffer.c:368 msgid "Length of the text currently in the buffer" msgstr "Bufferreko uneko testuaren luzera" -#: gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "Osatze-eredua" -#: gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "Berdinak direnak bilatzeko eredua" -#: gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "Gakoaren gutxieneko luzera" -#: gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "Bilaketa-gakoaren gutxieneko luzera berdinak direnak bilatzeko" -#: gtk/gtkentrycompletion.c:304 gtk/gtkiconview.c:587 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 msgid "Text column" msgstr "Testu-zutabea" -#: gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "Kateak dauzkan modeloaren zutabea." -#: gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "Lineako osaketa" -#: gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "Aurrizki arruntak automatikoki txertatuko diren ala ez adierazten du" -#: gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "Laster-leiho osaketa" -#: gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "Osaketak laster-leihoan erakutsiko diren ala ez adierazten du" -#: gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "Laster-leihoak zabalera ezarri" -#: gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "TRUE bada, laster-leihoak sarreraren tamaina berdina izango du" -#: gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "Agertarazi bat-etortze bakuna" -#: gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." -msgstr "" -"TRUE bada, laster-leihoa agertuko da konparazioan bat datorren bakunarentzat" +msgstr "TRUE bada, laster-leihoa agertuko da konparazioan bat datorren bakunarentzat" -#: gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "Lineako hautapena" -#: gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "Zure azalpena hemen" # -#: gtk/gtkeventbox.c:93 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "Leihoa ikusgai" -#: gtk/gtkeventbox.c:94 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2707,11 +2947,11 @@ msgstr "" "Gertaera-koadroa ikusgai dagoen edo, alderantziz, ikusezin dagoen eta " "gertaerak geldiarazteko bakarrik erabiltzen den adierazten du." -#: gtk/gtkeventbox.c:100 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "Umearen gainean" -#: gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2719,168 +2959,167 @@ msgstr "" "Gertaera-koadroko gertaerak geldiarazteko leihoa trepeta umearen leihoaren " "gainean edo azpian dagoen adierazten du." -#: gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "Zabalduta" -#: gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Zabaltzailea trepeta umea erakusteko ireki den ala ez adierazten du" -#: gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "Zabaltzailearen etiketako testua" -#: gtk/gtkexpander.c:225 gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Erabili markaketa" -#: gtk/gtkexpander.c:226 gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "Etiketako testuak XML markaketa dauka. Ikus pango_parse_markup()" -#: gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "Etiketaren eta umearen artean jarri beharreko tartea" -#: gtk/gtkexpander.c:243 gtk/gtkframe.c:165 gtk/gtktoolbutton.c:216 -#: gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:166 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1601 msgid "Label widget" msgstr "Etiketa-trepeta" -#: gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "Ohiko zabaltzaile-etiketaren ordez bistaratu beharreko trepeta" -#: gtk/gtkexpander.c:251 -#, fuzzy +#: ../gtk/gtkexpander.c:329 msgid "Label fill" -msgstr "Fitxa betetzea" +msgstr "Etiketa betetzea" -#: gtk/gtkexpander.c:252 -#, fuzzy +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" -msgstr "Elementuak tarte erabilgarria beteko duen edo ez adierazten du" +msgstr "" +"Etiketaren trepetak tarte horizontal erabilgarri guztia beteko duen edo ez " +"adierazten du" -#: gtk/gtkexpander.c:258 gtk/gtktoolitemgroup.c:1606 gtk/gtktreeview.c:776 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1629 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "Zabaltzailearen tamaina" -#: gtk/gtkexpander.c:259 gtk/gtktoolitemgroup.c:1607 gtk/gtktreeview.c:777 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1630 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "Zabaltzailearen geziaren tamaina" -#: gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "Zabaltzailearen geziaren inguruko tartea" -#: gtk/gtkfilechooserbutton.c:368 +#: ../gtk/gtkfilechooserbutton.c:366 msgid "Dialog" msgstr "Elkarrizketa-koadroa" -#: gtk/gtkfilechooserbutton.c:369 +#: ../gtk/gtkfilechooserbutton.c:367 msgid "The file chooser dialog to use." msgstr "Fitxategiak aukeratzeko erabiliko den elkarrizketa-koadroa." -#: gtk/gtkfilechooserbutton.c:400 +#: ../gtk/gtkfilechooserbutton.c:398 msgid "The title of the file chooser dialog." -msgstr "" -"Elkarrizketa-koadroaren titulua (fitxategiak aukeratzeko erabiliko dena)" +msgstr "Elkarrizketa-koadroaren titulua (fitxategiak aukeratzeko erabiliko dena)" -#: gtk/gtkfilechooserbutton.c:414 +#: ../gtk/gtkfilechooserbutton.c:412 msgid "The desired width of the button widget, in characters." msgstr "Botoi-trepetak edukiko duen zabalera, karaktereetan." # -#: gtk/gtkfilechooser.c:740 +#: ../gtk/gtkfilechooser.c:740 msgid "Action" msgstr "Ekintza" -#: gtk/gtkfilechooser.c:741 +#: ../gtk/gtkfilechooser.c:741 msgid "The type of operation that the file selector is performing" msgstr "Fitxategi-hautatzailea egiten ari den eragiketa-mota" -#: gtk/gtkfilechooser.c:747 gtk/gtkrecentchooser.c:264 +#: ../gtk/gtkfilechooser.c:747 ../gtk/gtkrecentchooser.c:264 msgid "Filter" msgstr "Iragazkia" -#: gtk/gtkfilechooser.c:748 +#: ../gtk/gtkfilechooser.c:748 msgid "The current filter for selecting which files are displayed" msgstr "Zein fitxategi bistaratuko diren hautatzeko uneko iragazkia" -#: gtk/gtkfilechooser.c:753 +#: ../gtk/gtkfilechooser.c:753 msgid "Local Only" msgstr "Lokalak bakarrik" -#: gtk/gtkfilechooser.c:754 +#: ../gtk/gtkfilechooser.c:754 msgid "Whether the selected file(s) should be limited to local file: URLs" msgstr "" "Hautatutako fitxategiek lokalak, hau da, URLak, izan behar duten ala ez " "adierazten du" # -#: gtk/gtkfilechooser.c:759 +#: ../gtk/gtkfilechooser.c:759 msgid "Preview widget" msgstr "Aurrebista-trepeta" -#: gtk/gtkfilechooser.c:760 +#: ../gtk/gtkfilechooser.c:760 msgid "Application supplied widget for custom previews." -msgstr "" -"Aplikazioak aurrebista pertsonalizatuak ikusteko trepeta eskaintzen du." +msgstr "Aplikazioak aurrebista pertsonalizatuak ikusteko trepeta eskaintzen du." # -#: gtk/gtkfilechooser.c:765 +#: ../gtk/gtkfilechooser.c:765 msgid "Preview Widget Active" msgstr "Aurrebista-trepeta aktibatuta" -#: gtk/gtkfilechooser.c:766 -msgid "" -"Whether the application supplied widget for custom previews should be shown." +#: ../gtk/gtkfilechooser.c:766 +msgid "Whether the application supplied widget for custom previews should be shown." msgstr "" "Aurrebista pertsonalizatuak erakusteko aplikazioak eskainitako trepeta " "erakutsi beharko litzatekeen ala ez adierazten du." # -#: gtk/gtkfilechooser.c:771 +#: ../gtk/gtkfilechooser.c:771 msgid "Use Preview Label" msgstr "Erabili aurrebista-etiketa" -#: gtk/gtkfilechooser.c:772 +#: ../gtk/gtkfilechooser.c:772 msgid "Whether to display a stock label with the name of the previewed file." msgstr "" "Stock-etiketa aurrebistan erakutsitako fitxategiaren izenarekin bistaratuko " "den ala ez adierazten du." -#: gtk/gtkfilechooser.c:777 +#: ../gtk/gtkfilechooser.c:777 msgid "Extra widget" msgstr "Aukera osagarrien trepeta" -#: gtk/gtkfilechooser.c:778 +#: ../gtk/gtkfilechooser.c:778 msgid "Application supplied widget for extra options." msgstr "Aplikazioak aukera osagarrietarako trepeta eskaintzen du." # -#: gtk/gtkfilechooser.c:783 gtk/gtkrecentchooser.c:203 +#: ../gtk/gtkfilechooser.c:783 ../gtk/gtkrecentchooser.c:203 msgid "Select Multiple" msgstr "Hautatu hainbat" -#: gtk/gtkfilechooser.c:784 +#: ../gtk/gtkfilechooser.c:784 msgid "Whether to allow multiple files to be selected" msgstr "Hainbat fitxategi hautatzen utziko duen ala ez adierazten du" -#: gtk/gtkfilechooser.c:790 +#: ../gtk/gtkfilechooser.c:790 msgid "Show Hidden" msgstr "Erakutsi ezkutukoa" -#: gtk/gtkfilechooser.c:791 +#: ../gtk/gtkfilechooser.c:791 msgid "Whether the hidden files and folders should be displayed" msgstr "Ezkutuko fitxategiak eta karpetak bistaratu behar diren edo ez" -#: gtk/gtkfilechooser.c:806 +#: ../gtk/gtkfilechooser.c:806 msgid "Do overwrite confirmation" msgstr "Eskatu berrespena gainidaztean" -#: gtk/gtkfilechooser.c:807 +#: ../gtk/gtkfilechooser.c:807 msgid "" "Whether a file chooser in save mode will present an overwrite confirmation " "dialog if necessary." @@ -2888,12 +3127,11 @@ msgstr "" "Fitxategi-aukeratzaileak (gordetzeko moduan) gainidazteko berrespena " "eskatzen duen elkarrizketa-koadroa erakutsi edo ez" -#: gtk/gtkfilechooser.c:823 -#, fuzzy +#: ../gtk/gtkfilechooser.c:823 msgid "Allow folder creation" msgstr "Baimendu karpetak sortzea" -#: gtk/gtkfilechooser.c:824 +#: ../gtk/gtkfilechooser.c:824 msgid "" "Whether a file chooser not in open mode will offer the user to create new " "folders." @@ -2901,139 +3139,205 @@ msgstr "" "Fitxategi-aukeratzaileak (ez-irekitzeko moduan) erabiltzaileari karpeta " "berriak sortzeko aukera eskainiko dion edo ez." -#: gtk/gtkfixed.c:98 gtk/gtklayout.c:605 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:632 msgid "X position" msgstr "X kokalekua" -#: gtk/gtkfixed.c:99 gtk/gtklayout.c:606 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:633 msgid "X position of child widget" msgstr "trepeta umearen X kokalekua" -#: gtk/gtkfixed.c:108 gtk/gtklayout.c:615 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:642 msgid "Y position" msgstr "Y kokalekua" -#: gtk/gtkfixed.c:109 gtk/gtklayout.c:616 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:643 msgid "Y position of child widget" msgstr "trepeta umearen Y kokalekua" -#: gtk/gtkfontbutton.c:141 +#: ../gtk/gtkfontbutton.c:141 msgid "The title of the font selection dialog" msgstr "Letra-tipoa hautatzeko elkarrizketa-koadroaren izenburua" # -#: gtk/gtkfontbutton.c:156 gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:219 msgid "Font name" msgstr "Letra-tipoaren izena" -#: gtk/gtkfontbutton.c:157 +#: ../gtk/gtkfontbutton.c:157 msgid "The name of the selected font" msgstr "Hautatutako letra-tipoaren izena" -#: gtk/gtkfontbutton.c:158 +#: ../gtk/gtkfontbutton.c:158 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:173 +#: ../gtk/gtkfontbutton.c:173 msgid "Use font in label" msgstr "Erabili etiketako letra-tipoa" -#: gtk/gtkfontbutton.c:174 +#: ../gtk/gtkfontbutton.c:174 msgid "Whether the label is drawn in the selected font" -msgstr "" -"Etiketa hautatutako letra-tipoan marraztuta dagoen ala ez adierazten du" +msgstr "Etiketa hautatutako letra-tipoan marraztuta dagoen ala ez adierazten du" -#: gtk/gtkfontbutton.c:189 +#: ../gtk/gtkfontbutton.c:189 msgid "Use size in label" msgstr "Erabili etiketako tamaina" -#: gtk/gtkfontbutton.c:190 +#: ../gtk/gtkfontbutton.c:190 msgid "Whether the label is drawn with the selected font size" msgstr "Etiketa hautatutako tamainan marraztuta dagoen ala ez adierazten du" -#: gtk/gtkfontbutton.c:206 +#: ../gtk/gtkfontbutton.c:206 msgid "Show style" msgstr "Erakutsi estiloa" -#: gtk/gtkfontbutton.c:207 +#: ../gtk/gtkfontbutton.c:207 msgid "Whether the selected font style is shown in the label" msgstr "" "Hautatutako letra-tipoaren estiloa etiketan erakusten den ala ez adierazten " "du" -#: gtk/gtkfontbutton.c:222 +#: ../gtk/gtkfontbutton.c:222 msgid "Show size" msgstr "Erakutsi tamaina" -#: gtk/gtkfontbutton.c:223 +#: ../gtk/gtkfontbutton.c:223 msgid "Whether selected font size is shown in the label" msgstr "" "Hautatutako letra-tipoaren tamaina etiketan erakusten den ala ez adierazten " "du" -#: gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:220 msgid "The string that represents this font" msgstr "Letra-tipo hau adierazten duen katea" # -#: gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:226 msgid "Preview text" msgstr "Testuaren aurrebista" -#: gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:227 msgid "The text to display in order to demonstrate the selected font" msgstr "Hautatutako letra-tipoa erakusteko bistaratu beharreko testua" -#: gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:132 msgid "Text of the frame's label" msgstr "Markoaren etiketako testua" # -#: gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:139 msgid "Label xalign" msgstr "Etiketaren xalign" -#: gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:140 msgid "The horizontal alignment of the label" msgstr "Etiketaren lerrokatze horizontala" -#: gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:148 msgid "Label yalign" msgstr "Etiketaren yalign" -#: gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:149 msgid "The vertical alignment of the label" msgstr "Etiketaren lerrokatze bertikala" -#: gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:157 msgid "Frame shadow" msgstr "Markoaren itzala" -#: gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:158 msgid "Appearance of the frame border" msgstr "Markoaren ertzaren itxura" -#: gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:167 msgid "A widget to display in place of the usual frame label" msgstr "Ohiko marko-etiketaren ordez bistaratu beharreko trepeta" -#: gtk/gtkhandlebox.c:183 +# +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "Errenkaden tartea" + +#: ../gtk/gtkgrid.c:1270 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "Elkarren segidako bi errenkaden arteko lekua" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "Zutabeen tartea" + +#: ../gtk/gtkgrid.c:1277 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "Elkarren segidako bi zutaberen arteko lekua" + +#: ../gtk/gtkgrid.c:1283 +msgid "Row Homogeneous" +msgstr "Errenkada homogeneoak" + +#: ../gtk/gtkgrid.c:1284 +msgid "If TRUE, the rows are all the same height" +msgstr "TRUE (EGIA) bada, errenkada guztiek altuera berdina daukate" + +#: ../gtk/gtkgrid.c:1290 +msgid "Column Homogeneous" +msgstr "Zutabe homogeneoak" + +#: ../gtk/gtkgrid.c:1291 +msgid "If TRUE, the columns are all the same width" +msgstr "TRUE (EGIA) bada, zutabe guztiek zabalera berdina daukate" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "Ezkerreko eranskina" + +#: ../gtk/gtkgrid.c:1298 ../gtk/gtkmenu.c:689 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "Umearen ezkerreko aldean erantsi beharreko zutabeen kopurua" + +#: ../gtk/gtkgrid.c:1304 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "Goiko eranskina" + +#: ../gtk/gtkgrid.c:1305 +msgid "The row number to attach the top side of a child widget to" +msgstr "Trepeta umearen goian erantsi beharreko errenkaden kopurua" + +# +#: ../gtk/gtkgrid.c:1311 ../gtk/gtklayout.c:658 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "Zabalera" + +#: ../gtk/gtkgrid.c:1312 +msgid "The number of columns that a child spans" +msgstr "Ume batek zabaltzen duen zutabeen kopurua" + +# +#: ../gtk/gtkgrid.c:1318 ../gtk/gtklayout.c:667 +msgid "Height" +msgstr "Altuera" + +#: ../gtk/gtkgrid.c:1319 +msgid "The number of rows that a child spans" +msgstr "Ume batek zabaltzen duen errenkaden kopurua" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "Edukiontzia inguratzen duen itzalaren itxura" -#: gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "Heldulekuaren posizioa" -#: gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "Trepeta umeari dagokion heldulekuaren posizioa" -#: gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "Egokitu ertza" -#: gtk/gtkhandlebox.c:201 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" @@ -3041,11 +3345,11 @@ msgstr "" "Helduleku-laukia atrakatzeko atrakatze-puntuarekin lerrokatuta dagoen " "helduleku-laukiaren aldea" -#: gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "Ertz-egokitzearen ezarpena" -#: gtk/gtkhandlebox.c:210 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -3053,291 +3357,282 @@ msgstr "" "snap_edge propietatearen balioa edo handle_position-etik eratorritako balioa " "erabiliko den adierazten du" -#: gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "Umea askatuta" -#: gtk/gtkhandlebox.c:218 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." -msgstr "" -"Balio boolearrak zera adierazten du: umea erantsita edo askatuta dagoen." +msgstr "Balio boolearrak zera adierazten du: umea erantsita edo askatuta dagoen." -#: gtk/gtkiconview.c:550 +#: ../gtk/gtkiconview.c:524 msgid "Selection mode" msgstr "Hautapen modua" -#: gtk/gtkiconview.c:551 +#: ../gtk/gtkiconview.c:525 msgid "The selection mode" msgstr "Hautatzeko modua" -#: gtk/gtkiconview.c:569 +#: ../gtk/gtkiconview.c:543 msgid "Pixbuf column" msgstr "Pixbuf-zutabea" -#: gtk/gtkiconview.c:570 +#: ../gtk/gtkiconview.c:544 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Pixbuf-aren ikonoa eskuratzeko erabiliko de zubate-modeloa" -#: gtk/gtkiconview.c:588 +#: ../gtk/gtkiconview.c:562 msgid "Model column used to retrieve the text from" msgstr "Testua eskuratzeko erabiliko den zutabe-modeloa" -#: gtk/gtkiconview.c:607 +#: ../gtk/gtkiconview.c:581 msgid "Markup column" msgstr "Markaketa-zutabea" -#: gtk/gtkiconview.c:608 +#: ../gtk/gtkiconview.c:582 msgid "Model column used to retrieve the text if using Pango markup" msgstr "" "Testua eskuratzeko erabiliko den zutabe-modeloa, Pango markaketa erabiltzen " "bada" # -#: gtk/gtkiconview.c:615 +#: ../gtk/gtkiconview.c:589 msgid "Icon View Model" msgstr "Ikono-ikustaile modeloa" -#: gtk/gtkiconview.c:616 +#: ../gtk/gtkiconview.c:590 msgid "The model for the icon view" msgstr "Ikono-ikustailearen modeloa" -#: gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:606 msgid "Number of columns" msgstr "Zutabe kopurua" -#: gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:607 msgid "Number of columns to display" msgstr "Bistaratuko diren zutabeen kopurua" -#: gtk/gtkiconview.c:650 +#: ../gtk/gtkiconview.c:624 msgid "Width for each item" msgstr "Elementu bakoitzaren zabalera" -#: gtk/gtkiconview.c:651 +#: ../gtk/gtkiconview.c:625 msgid "The width used for each item" msgstr "Elementu bakoitzean erabiliko den zabalera" -#: gtk/gtkiconview.c:667 +#: ../gtk/gtkiconview.c:641 msgid "Space which is inserted between cells of an item" msgstr "Elementu bateko gelaxken artean txertatuko den tartea" # -#: gtk/gtkiconview.c:682 +#: ../gtk/gtkiconview.c:656 msgid "Row Spacing" msgstr "Errenkada-tartea" -#: gtk/gtkiconview.c:683 +#: ../gtk/gtkiconview.c:657 msgid "Space which is inserted between grid rows" msgstr "Saretako errenkaden artean txertatuko den tartea" -#: gtk/gtkiconview.c:698 +#: ../gtk/gtkiconview.c:672 msgid "Column Spacing" msgstr "Zutabe-tartea" -#: gtk/gtkiconview.c:699 +#: ../gtk/gtkiconview.c:673 msgid "Space which is inserted between grid columns" msgstr "Saretako zutabeen artean txertatuko den tartea" -#: gtk/gtkiconview.c:714 +#: ../gtk/gtkiconview.c:688 msgid "Margin" msgstr "Marjina" -#: gtk/gtkiconview.c:715 +#: ../gtk/gtkiconview.c:689 msgid "Space which is inserted at the edges of the icon view" msgstr "Ikono-ikustailearen ertzetan txertatuko den tartea" -#: gtk/gtkiconview.c:730 -#, fuzzy +#: ../gtk/gtkiconview.c:704 msgid "Item Orientation" -msgstr "Orientazioa" +msgstr "Elementuaren orientazioa" -#: gtk/gtkiconview.c:731 -msgid "" -"How the text and icon of each item are positioned relative to each other" -msgstr "" -"Elementu bakoitzaren testua eta ikonoa elkarrekiko erlatiboki nola kokatu" +#: ../gtk/gtkiconview.c:705 +msgid "How the text and icon of each item are positioned relative to each other" +msgstr "Elementu bakoitzaren testua eta ikonoa elkarrekiko erlatiboki nola kokatu" -#: gtk/gtkiconview.c:747 gtk/gtktreeview.c:611 gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "Berrantolagarria" -#: gtk/gtkiconview.c:748 gtk/gtktreeview.c:612 +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "Ikuspegia berrantolagarria da" -#: gtk/gtkiconview.c:755 gtk/gtktreeview.c:762 +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "Argibidearen zutabea" -#: gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:730 msgid "The column in the model containing the tooltip texts for the items" msgstr "Elementuen argibideak dituen modeloaren zutabea." -#: gtk/gtkiconview.c:773 +#: ../gtk/gtkiconview.c:747 msgid "Item Padding" msgstr "Elementu betegarria" -#: gtk/gtkiconview.c:774 +#: ../gtk/gtkiconview.c:748 msgid "Padding around icon view items" msgstr "Ikonoen ikuspegiko elementuen arteko betegarria" # -#: gtk/gtkiconview.c:783 +#: ../gtk/gtkiconview.c:776 msgid "Selection Box Color" msgstr "Hautapen-koadroaren kolorea" -#: gtk/gtkiconview.c:784 +#: ../gtk/gtkiconview.c:777 msgid "Color of the selection box" msgstr "Hautapen-koadroaren kolorea" # -#: gtk/gtkiconview.c:790 +#: ../gtk/gtkiconview.c:783 msgid "Selection Box Alpha" msgstr "Alfaren hautapen-koadroa" -#: gtk/gtkiconview.c:791 +#: ../gtk/gtkiconview.c:784 msgid "Opacity of the selection box" msgstr "Hautapen-koadroaren opakutasuna" -#: gtk/gtkimage.c:227 gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "Pixbuf" -#: gtk/gtkimage.c:228 gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:235 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "Bistaratu beharreko GdkPixbuf-a" # -#: gtk/gtkimage.c:235 gtk/gtkrecentmanager.c:290 gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:242 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "Fitxategi-izena" -#: gtk/gtkimage.c:236 gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:243 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "Kargatu eta bistaratu beharreko fitxategi-izena" -#: gtk/gtkimage.c:245 gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:252 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "Bistaratu behar den stock-irudiaren stock-IDa" # -#: gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:259 msgid "Icon set" msgstr "Ikonoaren ezarpena" -#: gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:260 msgid "Icon set to display" msgstr "Bistaratu beharreko ikonoa" # -#: gtk/gtkimage.c:260 gtk/gtkscalebutton.c:230 gtk/gtktoolbar.c:494 -#: gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:267 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1032 msgid "Icon size" msgstr "Ikonoaren tamaina" -#: gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:268 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "" "Stock-ikonoarentzat, ikono-multzoarentzat edo izendun ikonoarentzat erabili " "beharreko tamaina sinbolikoa" # -#: gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:284 msgid "Pixel size" msgstr "Pixel-tamaina" -#: gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:285 msgid "Pixel size to use for named icon" msgstr "Izendun ikonoan erabiliko den pixel-tamaina" # -#: gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:293 msgid "Animation" msgstr "Animazioa" -#: gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:294 msgid "GdkPixbufAnimation to display" msgstr "Bistaratu beharreko GdkPixbufAnimation " # -#: gtk/gtkimage.c:327 gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "Biltegi-mota" -#: gtk/gtkimage.c:328 gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:335 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "Irudien datuentzat erabiltzen den adierazpidea" -#: gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Menuaren testuaren ondoan agertu beharreko trepeta umea" -#: gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "" "Etiketako testua erabiliko den oinarriko menu-elementua sortzeko ala ez " "adierazten du" -#: gtk/gtkimagemenuitem.c:187 gtk/gtkmenu.c:540 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:531 msgid "Accel Group" msgstr "Bizkortzaile-taldea" -#: gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "Oinarriko tekla bizkortzaileentzat erabiliko den bizkortzaile-taldea" -#: gtk/gtkimagemenuitem.c:193 -msgid "Show menu images" -msgstr "Erakutsi menuko irudiak" - -#: gtk/gtkimagemenuitem.c:194 -msgid "Whether images should be shown in menus" -msgstr "Irudiak menuetan erakutsi behar diren ala ez adierazten du" - -#: gtk/gtkinfobar.c:375 gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "Mezu-mota" -#: gtk/gtkinfobar.c:376 gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "Mezuaren mota" -#: gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Ertzak edukiaren arearen inguruko ertzaren zabalera" -#: gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Areako elementuen arteko tartea" -#: gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Ekintzaren arearen inguruko ertzaren zabalera" -#: gtk/gtkinvisible.c:89 gtk/gtkmountoperation.c:175 gtk/gtkstatusicon.c:279 -#: gtk/gtkwindow.c:693 +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:546 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "Pantaila" -#: gtk/gtkinvisible.c:90 gtk/gtkwindow.c:694 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "Leiho hau bistaratuko den pantaila" -#: gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "Etiketako testua" -#: gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "Etiketako testuari aplikatu beharreko estilo-atributuen zerrenda" -#: gtk/gtklabel.c:578 gtk/gtktexttag.c:335 gtk/gtktextview.c:685 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:353 ../gtk/gtktextview.c:703 msgid "Justification" msgstr "Justifikazioa" -#: gtk/gtklabel.c:579 +#: ../gtk/gtklabel.c:597 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 " @@ -3347,11 +3642,11 @@ msgstr "" "eragiten bere esleipenaren barruko etiketaren lerrokatzeari. Ikus GtkMisc::" "xalign horretarako" -#: gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "Eredua" -#: gtk/gtklabel.c:588 +#: ../gtk/gtklabel.c:606 msgid "" "A string with _ characters in positions correspond to characters in the text " "to underline" @@ -3359,51 +3654,49 @@ msgstr "" "_ karaktereak dauzkan katea, azpimarratu beharreko testuko karaktereei " "dagozkien kokalekutan" -#: gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "Lerro-itzulbira" -#: gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "Ezarrita badago, testua zabalegia bada lerroak itzulbiratu egingo dira" -#: gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "Lerro-itzulbira modua" -#: gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" -msgstr "" -"Itzulbira ezartzen bada lerro-itzulbira nola egiten den kontrolatuko du" +msgstr "Itzulbira ezartzen bada lerro-itzulbira nola egiten den kontrolatuko du" # -#: gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "Hautagarria" -#: gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "Etiketako testua saguarekin hauta daitekeen ala ez adierazten du" -#: gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "Tekla mnemoteknikoa" -#: gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "Etiketa honen tekla bizkortzaile mnemoteknikoa" # -#: gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "Trepeta mnemoteknikoa" -#: gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" -msgstr "" -"Etiketako tekla mnemoteknikoa sakatuta dagoenean aktibatuko den trepeta" +msgstr "Etiketako tekla mnemoteknikoa sakatuta dagoenean aktibatuko den trepeta" -#: gtk/gtklabel.c:682 +#: ../gtk/gtklabel.c:700 msgid "" "The preferred place to ellipsize the string, if the label does not have " "enough room to display the entire string" @@ -3411,188 +3704,149 @@ msgstr "" "Katea elipsi gisa jartzeko lekua, etiketak ez badu nahikoa toki kate osoa " "bistaratzeko." -#: gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "Lerro bakarreko modua" -#: gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "Etiketa lerro bakarreko moduan dagoen ala ez adierazten du" -#: gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "Angelua" -#: gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "Etiketa biratuko den angelua" -#: gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "Etiketaren zabalera maximoa, karaktereetan" -#: gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "Jarraitu bisitatutako estekak" -#: gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "Bisitatutako estekak jarraituko diren edo ez" -#: gtk/gtklabel.c:904 -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "Enfokatzean, sarreraren edukia hautatuko den edo ez" - -# -#: gtk/gtklayout.c:625 gtk/gtkviewport.c:142 -msgid "Horizontal adjustment" -msgstr "Doitze horizontala" - -#: gtk/gtklayout.c:626 gtk/gtkscrolledwindow.c:244 -msgid "The GtkAdjustment for the horizontal position" -msgstr "Posizio horizontalaren GtkAdjustment" - -#: gtk/gtklayout.c:633 gtk/gtkviewport.c:150 -msgid "Vertical adjustment" -msgstr "Doitze bertikala" - -#: gtk/gtklayout.c:634 gtk/gtkscrolledwindow.c:251 -msgid "The GtkAdjustment for the vertical position" -msgstr "Posizio bertikalaren GtkAdjustment" - -# -#: gtk/gtklayout.c:641 gtk/gtktreeviewcolumn.c:211 -msgid "Width" -msgstr "Zabalera" - -#: gtk/gtklayout.c:642 +#: ../gtk/gtklayout.c:659 msgid "The width of the layout" msgstr "Diseinuaren zabalera" -# -#: gtk/gtklayout.c:650 -msgid "Height" -msgstr "Altuera" - -#: gtk/gtklayout.c:651 +#: ../gtk/gtklayout.c:668 msgid "The height of the layout" msgstr "Diseinuaren altuera" -#: gtk/gtklinkbutton.c:162 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URIa" -#: gtk/gtklinkbutton.c:163 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "Botoi honi lotutako URIa" # -#: gtk/gtklinkbutton.c:177 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "Bisitatua" -#: gtk/gtklinkbutton.c:178 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "Esteka hau bisitatua izan den ala ez." # -#: gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:181 msgid "Pack direction" msgstr "Paketatze norabidea" -#: gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:182 msgid "The pack direction of the menubar" msgstr "Menu-barrako paketatzearen norabidea" -#: gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:198 msgid "Child Pack direction" msgstr "Paketatze norabide umea" -#: gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:199 msgid "The child pack direction of the menubar" msgstr "Menu-barrako paketatze norabide umea" -#: gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:208 msgid "Style of bevel around the menubar" msgstr "Menu-barraren inguruko alaka-estiloa" -#: gtk/gtkmenubar.c:197 gtk/gtktoolbar.c:544 +#: ../gtk/gtkmenubar.c:215 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "Barneko tarte betegarria" -#: gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:216 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "Menu-barraren itzalaren eta menuko elementuen arteko ertzen espazioa" -#: gtk/gtkmenubar.c:205 -msgid "Delay before drop down menus appear" -msgstr "Goitibeherako menuak agertu aurreko atzerapena" - -#: gtk/gtkmenubar.c:206 -msgid "Delay before the submenus of a menu bar appear" -msgstr "Menu-barrako azpimenuak agertu aurreko atzerapena" - -#: gtk/gtkmenu.c:526 +#: ../gtk/gtkmenu.c:517 msgid "The currently selected menu item" msgstr "Unean hautatutako menu-elementua" -#: gtk/gtkmenu.c:541 +#: ../gtk/gtkmenu.c:532 msgid "The accel group holding accelerators for the menu" msgstr "Bizkortzaile-taldea menuaren bizkortzaileak dituenak" -#: gtk/gtkmenu.c:555 gtk/gtkmenuitem.c:318 +#: ../gtk/gtkmenu.c:546 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Bizkortzaile-bidea" -#: gtk/gtkmenu.c:556 +#: ../gtk/gtkmenu.c:547 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" "ume-elementuen bizkortzaile-bideak eraikitzeko erabiliko den bizkortzaile-" "bidea" -#: gtk/gtkmenu.c:572 +#: ../gtk/gtkmenu.c:563 msgid "Attach Widget" msgstr "Erantsi trepeta" -#: gtk/gtkmenu.c:573 +#: ../gtk/gtkmenu.c:564 msgid "The widget the menu is attached to" msgstr "Trepeta erantsita duen menua" -#: gtk/gtkmenu.c:581 +#: ../gtk/gtkmenu.c:572 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" msgstr "Menu hau bereiztean leiho-kudeatzaileak bistara dezakeen izenburua" -#: gtk/gtkmenu.c:595 +#: ../gtk/gtkmenu.c:586 msgid "Tearoff State" msgstr "Askagarri-egoera" -#: gtk/gtkmenu.c:596 +#: ../gtk/gtkmenu.c:587 msgid "A boolean that indicates whether the menu is torn-off" msgstr "Menua askatzen den ala ez adierazten duen balio boolearra" -#: gtk/gtkmenu.c:610 +#: ../gtk/gtkmenu.c:601 msgid "Monitor" msgstr "Monitorea" -#: gtk/gtkmenu.c:611 +#: ../gtk/gtkmenu.c:602 msgid "The monitor the menu will be popped up on" msgstr "Menua bistaratuko den monitorea" -#: gtk/gtkmenu.c:617 +#: ../gtk/gtkmenu.c:608 msgid "Vertical Padding" msgstr "Betegarri bertikala" -#: gtk/gtkmenu.c:618 +#: ../gtk/gtkmenu.c:609 msgid "Extra space at the top and bottom of the menu" msgstr "Menuaren goian eta behean tarte osagarria" -#: gtk/gtkmenu.c:640 +#: ../gtk/gtkmenu.c:631 msgid "Reserve Toggle Size" msgstr "Gorde txandakatzeko tamaina" -#: gtk/gtkmenu.c:641 +#: ../gtk/gtkmenu.c:632 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" @@ -3600,342 +3854,294 @@ msgstr "" "Menuek txandakatzeko eta ikonoentzako lekua gordeko duten edo ez adierazten " "duen balio boolearra" -#: gtk/gtkmenu.c:647 +#: ../gtk/gtkmenu.c:638 msgid "Horizontal Padding" msgstr "Tarte betegarri horizontala" -#: gtk/gtkmenu.c:648 +#: ../gtk/gtkmenu.c:639 msgid "Extra space at the left and right edges of the menu" msgstr "Menuaren ezkerreko eta eskuineko ertzen tarte osagarria" -#: gtk/gtkmenu.c:656 +#: ../gtk/gtkmenu.c:647 msgid "Vertical Offset" msgstr "Desplazamendu bertikala" -#: gtk/gtkmenu.c:657 +#: ../gtk/gtkmenu.c:648 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" -msgstr "" -"Menua azpimenua bada, desplaza ezazu menua bertikalki, horrenbeste pixelez" +msgstr "Menua azpimenua bada, desplaza ezazu menua bertikalki, horrenbeste pixelez" # -#: gtk/gtkmenu.c:665 +#: ../gtk/gtkmenu.c:656 msgid "Horizontal Offset" msgstr "Desplazamendu horizontala" -#: gtk/gtkmenu.c:666 +#: ../gtk/gtkmenu.c:657 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" -msgstr "" -"Menua azpimenua bada, desplaza ezazu menua horizontalki, horrenbeste pixelez" +msgstr "Menua azpimenua bada, desplaza ezazu menua horizontalki, horrenbeste pixelez" -#: gtk/gtkmenu.c:674 +#: ../gtk/gtkmenu.c:665 msgid "Double Arrows" msgstr "Gezi bikoitzak" -#: gtk/gtkmenu.c:675 +#: ../gtk/gtkmenu.c:666 msgid "When scrolling, always show both arrows." msgstr "Korritzean beti erakutsi bi geziak" # -#: gtk/gtkmenu.c:688 +#: ../gtk/gtkmenu.c:679 msgid "Arrow Placement" msgstr "Gezien kokalekua" -#: gtk/gtkmenu.c:689 +#: ../gtk/gtkmenu.c:680 msgid "Indicates where scroll arrows should be placed" msgstr "Korritze-geziak non kokatu behar diren adierazten du" -#: gtk/gtkmenu.c:697 +#: ../gtk/gtkmenu.c:688 msgid "Left Attach" msgstr "Erantsi ezkerrean" -#: gtk/gtkmenu.c:698 gtk/gtktable.c:193 -msgid "The column number to attach the left side of the child to" -msgstr "Umearen ezkerreko aldean erantsi beharreko zutabeen kopurua" - -#: gtk/gtkmenu.c:705 +#: ../gtk/gtkmenu.c:696 msgid "Right Attach" msgstr "Erantsi eskuinean" -#: gtk/gtkmenu.c:706 +#: ../gtk/gtkmenu.c:697 msgid "The column number to attach the right side of the child to" msgstr "Umearen eskuineko aldean erantsi beharreko zutabe-kopurua" -#: gtk/gtkmenu.c:713 +#: ../gtk/gtkmenu.c:704 msgid "Top Attach" msgstr "Erantsi goian" -#: gtk/gtkmenu.c:714 +#: ../gtk/gtkmenu.c:705 msgid "The row number to attach the top of the child to" msgstr "Umearen goialdean erantsi beharreko errenkada-kopurua" -#: gtk/gtkmenu.c:721 +#: ../gtk/gtkmenu.c:712 msgid "Bottom Attach" msgstr "Erantsi behean" -#: gtk/gtkmenu.c:722 gtk/gtktable.c:214 +#: ../gtk/gtkmenu.c:713 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "Umearen behean erantsi beharreko errenkaden kopurua" -#: gtk/gtkmenu.c:736 +#: ../gtk/gtkmenu.c:727 msgid "Arbitrary constant to scale down the size of the scroll arrow" -msgstr "" -"Konstante arbitrarioa korritze-geziaren tamainaren eskala txikiagotzeko" +msgstr "Konstante arbitrarioa korritze-geziaren tamainaren eskala txikiagotzeko" -#: gtk/gtkmenu.c:823 -msgid "Can change accelerators" -msgstr "Bizkortzaileak alda daitezke" - -#: gtk/gtkmenu.c:824 -msgid "" -"Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "" -"Tekla menu-elementuan sakatzean menu-bizkortzailea alda daitekeen ala ez " -"adierazten du" - -#: gtk/gtkmenu.c:829 -msgid "Delay before submenus appear" -msgstr "Azpimenuak agertu aurreko atzerapena" - -#: gtk/gtkmenu.c:830 -msgid "" -"Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "" -"Azpimenua agertzeko erakusleak menu-elementu baten gainean gutxienez zenbat " -"denbora egon behar duen" - -#: gtk/gtkmenu.c:837 -msgid "Delay before hiding a submenu" -msgstr "Azpimenua ezkutatu aurreko atzerapena" - -#: gtk/gtkmenu.c:838 -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "Erakuslea azpimenurantz mugitzean azpimenua ezkutatu aurreko denbora" - -#: gtk/gtkmenuitem.c:285 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Eskuinean lerrokatuta" -#: gtk/gtkmenuitem.c:286 -msgid "" -"Sets whether the menu item appears justified at the right side of a menu bar" +#: ../gtk/gtkmenuitem.c:282 +msgid "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" "Menuko elementuak menu-barraren eskuineko aldean justifikatuta agertuko " "diren edo ez ezartzen du" -#: gtk/gtkmenuitem.c:300 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Azpimenua" -#: gtk/gtkmenuitem.c:301 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "Menuko elementuari erantsitako azpimenua, edo NULL ez badu ezer" -#: gtk/gtkmenuitem.c:319 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Menuko elementuaren bizkortzaile-bidea ezartzen du" -#: gtk/gtkmenuitem.c:334 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "Etiketa umearen testua" -#: gtk/gtkmenuitem.c:397 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "" "Geziak erabiltzen duen leku kopurua, menuko elementuen letra-tamainarekiko " "erlatiboa" -#: gtk/gtkmenuitem.c:410 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Zabalera karakteretan" -#: gtk/gtkmenuitem.c:411 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "Menuko elementuaren gutxieneko zabalera (karakteretan)" -#: gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:420 msgid "Take Focus" msgstr "Hartu fokua" -#: gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:421 msgid "A boolean that determines whether the menu grabs the keyboard focus" -msgstr "" -"Menuak teklatuaren fokua hartuko duen ala ez zehazten duen balio boolearra" +msgstr "Menuak teklatuaren fokua hartuko duen ala ez zehazten duen balio boolearra" -#: gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:257 msgid "Menu" msgstr "Menua" -#: gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:258 msgid "The dropdown menu" msgstr "Goitibeherako menua" -#: gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "Irudiaren/etiketaren ertza" -#: gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" -msgstr "" -"Elkarrizketa-koadroko etiketaren eta irudiaren inguruko ertzaren zabalera" +msgstr "Elkarrizketa-koadroko etiketaren eta irudiaren inguruko ertzaren zabalera" -#: gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "Mezuko botoiak" -#: gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "Mezuaren elkarrizketa-koadroan agertzen diren botoiak" -#: gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "Mezuaren elkarrizketa-koadroaren testu nagusia" -#: gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "Erabili markaketa" -#: gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "Tituluaren testu nagusiak Pango markaketa dauka." -#: gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "Bigarren mailako testua" -#: gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "Mezuaren elkarrizketa-koadroaren 2. mailako testua" -#: gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "Erabili markaketa 2. mailan" -#: gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "2. mailako testuak Pango markaketa dauka." # -#: gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "Irudia" -#: gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "Irudia" -#: gtk/gtkmessagedialog.c:305 -#, fuzzy +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" -msgstr "Mezu-mota" +msgstr "Mezuaren area" -#: gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" -msgstr "" +msgstr "Elkarrizketa-koadroaren lehen eta bigarren mailako etiketak dituen GtkVBox" # -#: gtk/gtkmisc.c:91 +#: ../gtk/gtkmisc.c:91 msgid "Y align" msgstr "Y lerrokatzea" -#: gtk/gtkmisc.c:92 +#: ../gtk/gtkmisc.c:92 msgid "The vertical alignment, from 0 (top) to 1 (bottom)" msgstr "Lerrokatze bertikala, 0tik (goian) 1era (behean)" -#: gtk/gtkmisc.c:101 +#: ../gtk/gtkmisc.c:101 msgid "X pad" msgstr "X betegarria" -#: gtk/gtkmisc.c:102 -msgid "" -"The amount of space to add on the left and right of the widget, in pixels" +#: ../gtk/gtkmisc.c:102 +msgid "The amount of space to add on the left and right of the widget, in pixels" msgstr "Trepetaren ezkerrean eta eskuinean gehitu beharreko lekua, pixeletan" -#: gtk/gtkmisc.c:111 +#: ../gtk/gtkmisc.c:111 msgid "Y pad" msgstr "Y betegarria" -#: gtk/gtkmisc.c:112 -msgid "" -"The amount of space to add on the top and bottom of the widget, in pixels" +#: ../gtk/gtkmisc.c:112 +msgid "The amount of space to add on the top and bottom of the widget, in pixels" msgstr "Trepetaren goian eta behean gehitu beharreko lekua, pixeletan" -#: gtk/gtkmountoperation.c:159 +#: ../gtk/gtkmountoperation.c:159 msgid "Parent" msgstr "Gurasoa" -#: gtk/gtkmountoperation.c:160 +#: ../gtk/gtkmountoperation.c:160 msgid "The parent window" msgstr "Guraso-leihoa" # -#: gtk/gtkmountoperation.c:167 +#: ../gtk/gtkmountoperation.c:167 msgid "Is Showing" msgstr "Bistaratua" -#: gtk/gtkmountoperation.c:168 +#: ../gtk/gtkmountoperation.c:168 msgid "Are we showing a dialog" msgstr "Elkarrizketa-koadro bat erakusten ari al gara" -#: gtk/gtkmountoperation.c:176 +#: ../gtk/gtkmountoperation.c:176 msgid "The screen where this window will be displayed." msgstr "Leiho hau bistaratuko den pantaila." # -#: gtk/gtknotebook.c:595 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "Orrialdea" -#: gtk/gtknotebook.c:596 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "Uneko orrialdearen indizea" -#: gtk/gtknotebook.c:604 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "Fitxen kokalekua" -#: gtk/gtknotebook.c:605 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "Ohar-koadernoaren zein aldetan dauden fitxak" -#: gtk/gtknotebook.c:612 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "Erakutsi fitxak" -#: gtk/gtknotebook.c:613 -#, fuzzy +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "Fitxak erakutsi behar diren ala ez adierazten du" -#: gtk/gtknotebook.c:619 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "Erakutsi ertza" -#: gtk/gtknotebook.c:620 -#, fuzzy +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "Ertza erakutsi behar den ala ez adierazten du" # -#: gtk/gtknotebook.c:626 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "Korrigarria" -#: gtk/gtknotebook.c:627 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" -msgstr "" -"TRUE (egia) bada, korritze-geziak gehitzen dira fitxa gehiegi daudenean" +msgstr "TRUE (egia) bada, korritze-geziak gehitzen dira fitxa gehiegi daudenean" -#: gtk/gtknotebook.c:633 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "Gaitu laster-leihoa" -#: gtk/gtknotebook.c:634 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3943,338 +4149,368 @@ msgstr "" "TRUE (egia) bada, ohar-koadernoan saguaren eskuineko botoia sakatuz orrialde " "batera joateko menua agertuko da" -#: gtk/gtknotebook.c:648 -#, fuzzy +#: ../gtk/gtknotebook.c:738 msgid "Group Name" -msgstr "Taldearen IDa" +msgstr "Taldearen izena" -#: gtk/gtknotebook.c:649 -#, fuzzy +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" -msgstr "Taldea fitxak arrastatu eta jaregiteko" +msgstr "Taldearen izena fitxak arrastatu eta jaregiteko" -#: gtk/gtknotebook.c:656 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "Fitxa-etiketa" -#: gtk/gtknotebook.c:657 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "Fitxa-umearen etiketan bistaratuko den katea" -#: gtk/gtknotebook.c:663 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "Menuaren etiketa" -#: gtk/gtknotebook.c:664 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "Menu-umearen sarreran umean bistaratuko den katea" -#: gtk/gtknotebook.c:677 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "Fitxa zabaltzea" -#: gtk/gtknotebook.c:678 -#, fuzzy +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "Umearen fitxa zabalduko den ala ez adierazten du" -#: gtk/gtknotebook.c:684 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "Fitxa betetzea" -#: gtk/gtknotebook.c:685 -#, fuzzy +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "Fitxa-umeak esleitutako area beteko duen ala ez adierazten du" -#: gtk/gtknotebook.c:691 -msgid "Tab pack type" -msgstr "Fitxaren pakete-mota" - -#: gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "Fitxa berrantolagarria" -#: gtk/gtknotebook.c:699 -#, fuzzy +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "Fitxa berrantola daitekeen erabiltzailearen ekintzaren ondorioz edo ez" -#: gtk/gtknotebook.c:705 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "Fitxa desmuntagarria" -#: gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "Fitxa desmunta daitekeen edo ez" -#: gtk/gtknotebook.c:721 gtk/gtkscrollbar.c:80 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Bigarren mailako atzeranzko gezia" -#: gtk/gtknotebook.c:722 -msgid "" -"Display a second backward arrow button on the opposite end of the tab area" +#: ../gtk/gtknotebook.c:806 +msgid "Display a second backward arrow button on the opposite end of the tab area" msgstr "" "Bigarren atzera-geziaren botoia bistaratzen du etiketa-arearen kontrako " "bukaeran" -#: gtk/gtknotebook.c:737 gtk/gtkscrollbar.c:87 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Bigarren mailako aurreranzko gezia" -#: gtk/gtknotebook.c:738 -msgid "" -"Display a second forward arrow button on the opposite end of the tab area" +#: ../gtk/gtknotebook.c:822 +msgid "Display a second forward arrow button on the opposite end of the tab area" msgstr "" "Bigarren aurrera-geziaren botoia bistaratzen du etiketa-arearen kontrako " "bukaeran" -#: gtk/gtknotebook.c:752 gtk/gtkscrollbar.c:66 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Atzeranzko gezia" -#: gtk/gtknotebook.c:753 gtk/gtkscrollbar.c:67 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Atzera-geziaren botoi estandarra bistaratzen du" -#: gtk/gtknotebook.c:767 gtk/gtkscrollbar.c:73 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Aurreranzko gezia" -#: gtk/gtknotebook.c:768 gtk/gtkscrollbar.c:74 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Aurrera-geziaren botoi estandarra bistaratzen du" -#: gtk/gtknotebook.c:782 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "Fitxa gainjartzea" -#: gtk/gtknotebook.c:783 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "Fitxa gainjarriaren arearen tamaina" -#: gtk/gtknotebook.c:798 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "Fitxa-kurbatura" -#: gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "Fitxa-kurbaturaren tamaina" # -#: gtk/gtknotebook.c:815 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "Gezien tartea" # -#: gtk/gtknotebook.c:816 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "Korritze-gezien tartea" -#: gtk/gtkorientable.c:63 gtk/gtkstatusicon.c:319 gtk/gtktrayicon-x11.c:124 +# +#: ../gtk/gtknumerableicon.c:652 +msgid "Icon's count" +msgstr "Ikonoaren zenbatzailea" + +#: ../gtk/gtknumerableicon.c:653 +msgid "The count of the emblem currently displayed" +msgstr "Unean bistaratutako ikurren kopurua" + +#: ../gtk/gtknumerableicon.c:659 +msgid "Icon's label" +msgstr "Ikonoaren etiketa" + +#: ../gtk/gtknumerableicon.c:660 +msgid "The label to be displayed over the icon" +msgstr "Ikonoaren gainean bistaratuko den etiketa" + +# +#: ../gtk/gtknumerableicon.c:666 +msgid "Icon's style context" +msgstr "Ikonoaren estiloaren testuingurua" + +#: ../gtk/gtknumerableicon.c:667 +msgid "The style context to theme the icon appearance" +msgstr "Estiloaren testuingurua ikonoaren itxura janzteko" + +#: ../gtk/gtknumerableicon.c:673 +msgid "Background icon" +msgstr "Atzeko planoaren ikonoa" + +#: ../gtk/gtknumerableicon.c:674 +msgid "The icon for the number emblem background" +msgstr "Zenbakiaren ikurraren atzeko planoaren ikonoa" + +#: ../gtk/gtknumerableicon.c:680 +msgid "Background icon name" +msgstr "Atzeko planoaren ikonoaren izena" + +#: ../gtk/gtknumerableicon.c:681 +msgid "The icon name for the number emblem background" +msgstr "Zenbaki-ikurraren atzeko planoan erabiliko den ikonoaren izena" + +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "Orientazioa" -#: gtk/gtkorientable.c:64 +#: ../gtk/gtkorientable.c:64 msgid "The orientation of the orientable" msgstr "Orientagarriaren orientazioa" -#: gtk/gtkpaned.c:271 -msgid "" -"Position of paned separator in pixels (0 means all the way to the left/top)" -msgstr "" -"Panel-bereizlearen kokalekua pixeletan (0k ezkerrean/goian esan nahi du)" +#: ../gtk/gtkpaned.c:327 +msgid "Position of paned separator in pixels (0 means all the way to the left/top)" +msgstr "Panel-bereizlearen kokalekua pixeletan (0k ezkerrean/goian esan nahi du)" -#: gtk/gtkpaned.c:280 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "Kokalekuaren ezarpena" -#: gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "TRUE (egia) 'Kokalekua' propietatea erabili behar bada" # -#: gtk/gtkpaned.c:287 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "Heldulekuaren tamaina" -#: gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "Heldulekuaren zabalera" -#: gtk/gtkpaned.c:304 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "Gutxieneko kokalekua" -#: gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "\"kokalekua\" propietatearen ahalik eta balio txikiena" -#: gtk/gtkpaned.c:322 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "Gehienezko balioa" -#: gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "\"kokalekua\" propietatearen ahalik eta balio handiena" # -#: gtk/gtkpaned.c:340 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "Aldatu tamaina" -#: gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "" "TRUE (egia) bada, umea zabaldu eta txikitu egiten da panelean dagoen " "trepetarekin batera" -#: gtk/gtkpaned.c:356 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "Txikitu" -#: gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "TRUE (egia) bada, umea eskakizunak baino txikiagoa egin daiteke" -#: gtk/gtkplug.c:171 gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "Kapsulatuta" -#: gtk/gtkplug.c:172 -#, fuzzy +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "Konektorea kapsulatuta dagoen edo ez" -#: gtk/gtkplug.c:186 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "Socket-aren leihoa" -#: gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "Konektorea kapsulatuta dagoen socket-aren leihoa" -#: gtk/gtkprinter.c:126 +#: ../gtk/gtkprinter.c:126 msgid "Name of the printer" msgstr "Inprimagailuaren izena" -#: gtk/gtkprinter.c:132 +#: ../gtk/gtkprinter.c:132 msgid "Backend" msgstr "Motorra" -#: gtk/gtkprinter.c:133 +#: ../gtk/gtkprinter.c:133 msgid "Backend for the printer" msgstr "Inprimagailuaren motorra" -#: gtk/gtkprinter.c:139 +#: ../gtk/gtkprinter.c:139 msgid "Is Virtual" msgstr "Birtuala da" -#: gtk/gtkprinter.c:140 +#: ../gtk/gtkprinter.c:140 msgid "FALSE if this represents a real hardware printer" msgstr "FALTSUA honek egiazko inprimagailu-hardwarea adierazten badu" -#: gtk/gtkprinter.c:146 +#: ../gtk/gtkprinter.c:146 msgid "Accepts PDF" msgstr "PDF onartzen du" -#: gtk/gtkprinter.c:147 +#: ../gtk/gtkprinter.c:147 msgid "TRUE if this printer can accept PDF" msgstr "EGIA inprimagailuak PDF onartzen badu" -#: gtk/gtkprinter.c:153 +#: ../gtk/gtkprinter.c:153 msgid "Accepts PostScript" msgstr "PostScript onartzen du" -#: gtk/gtkprinter.c:154 +#: ../gtk/gtkprinter.c:154 msgid "TRUE if this printer can accept PostScript" msgstr "EGIA inprimagailuak PostScript onartzen badu" -#: gtk/gtkprinter.c:160 +#: ../gtk/gtkprinter.c:160 msgid "State Message" msgstr "Mezuaren egoera" -#: gtk/gtkprinter.c:161 +#: ../gtk/gtkprinter.c:161 msgid "String giving the current state of the printer" msgstr "Inprimagailuaren uneko egoera azaltzen duen esaldia" # -#: gtk/gtkprinter.c:167 +#: ../gtk/gtkprinter.c:167 msgid "Location" msgstr "Kokalekua" -#: gtk/gtkprinter.c:168 +#: ../gtk/gtkprinter.c:168 msgid "The location of the printer" msgstr "Inprimagailuaren kokalekua" -#: gtk/gtkprinter.c:175 +#: ../gtk/gtkprinter.c:175 msgid "The icon name to use for the printer" msgstr "Inprimagailuan erabiliko den ikonoaren izena" -#: gtk/gtkprinter.c:181 +#: ../gtk/gtkprinter.c:181 msgid "Job Count" msgstr "Lan kopurua" -#: gtk/gtkprinter.c:182 +#: ../gtk/gtkprinter.c:182 msgid "Number of jobs queued in the printer" msgstr "Inprimagailuaren ilaran dagoen lan kopurua" -#: gtk/gtkprinter.c:200 +#: ../gtk/gtkprinter.c:200 msgid "Paused Printer" msgstr "Inprimagailua pausarazita" -#: gtk/gtkprinter.c:201 +#: ../gtk/gtkprinter.c:201 msgid "TRUE if this printer is paused" msgstr "EGIA inprimagailua pausarazita badago" -#: gtk/gtkprinter.c:214 +#: ../gtk/gtkprinter.c:214 msgid "Accepting Jobs" msgstr "Lanak onartzen" -#: gtk/gtkprinter.c:215 +#: ../gtk/gtkprinter.c:215 msgid "TRUE if this printer is accepting new jobs" msgstr "EGIA inprimagailuak lan berriak onartzen baditu" # -#: gtk/gtkprinteroptionwidget.c:122 +#: ../gtk/gtkprinteroptionwidget.c:121 msgid "Source option" msgstr "Iturburuaren aukerak" -#: gtk/gtkprinteroptionwidget.c:123 +#: ../gtk/gtkprinteroptionwidget.c:122 msgid "The PrinterOption backing this widget" msgstr "Trepetaren atzean dagoen PrinterOption" -#: gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:142 msgid "Title of the print job" msgstr "Inprimatze-lanaren titulua" -#: gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:150 msgid "Printer" msgstr "Inprimagailua" -#: gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:151 msgid "Printer to print the job to" msgstr "Inprimagailua lanak inprimatzeko" -#: gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:159 msgid "Settings" msgstr "Ezarpenak" -#: gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:160 msgid "Printer settings" msgstr "Inprimagailuaren ezarpenak" # -#: gtk/gtkprintjob.c:142 gtk/gtkprintjob.c:143 gtk/gtkprintunixdialog.c:298 +#: ../gtk/gtkprintjob.c:168 ../gtk/gtkprintjob.c:169 +#: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Orriaren konfigurazioa" -#: gtk/gtkprintjob.c:151 gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:177 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "Inprimatze-egoeraren jarraipena" -#: gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:178 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." @@ -4283,51 +4519,51 @@ msgstr "" "jarraitzen badu inprimatze-datuak inprimagailura edo inprimatze-zerbitzarira " "bidali ondoren." -#: gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "Orriaren konfigurazio lehenetsia" -#: gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "GtkPageSetup lehenespenez erabilita" -#: gtk/gtkprintoperation.c:1024 gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Inprimatze-ezarpenak" -#: gtk/gtkprintoperation.c:1025 gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "GtkPrintSettings elkarrizketa-koadroa hasieratzeko erabilita" -#: gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "Lanaren izena" -#: gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "Inprimatze-lana identifikatzeko erabiliko den esaldia." -#: gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "Orrialde kopurua" -#: gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "Dokumentuaren orrialde kopurua." -#: gtk/gtkprintoperation.c:1090 gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Uneko orrialdea" -#: gtk/gtkprintoperation.c:1091 gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "Dokumentuaren uneko orrialdea" -#: gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "Erabili orrialde osoa" -#: gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" @@ -4335,7 +4571,7 @@ msgstr "" "EGIA testuinguruaren jatorria orrialdearen ertza izan behar badu eta ez " "irudiaren arearen ertzean" -#: gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4344,161 +4580,157 @@ msgstr "" "jarraitzen badu inprimatze-datuak inprimagailura edo inprimatze-zerbitzarira " "bidali ondoren." -#: gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "Unitatea" -#: gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "Testuinguruaren distantziak neurtzeko unitatea" -#: gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "Erakutsi elkarrizketa-koadroa" -#: gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "EGIA progresio-koadroa erakusten bada inprimatzean." -#: gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "Baimendu asinkronoa" -#: gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "EGIA inprimatze-prozesua asinkronoki exekuta badaiteke" -#: gtk/gtkprintoperation.c:1216 gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "Esportatu fitxategi-izena" -#: gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "Egoera" -#: gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "Inprimatze-eragiketaren egoera" -#: gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "Egoeraren esaldia" -#: gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "Egoeraren azalpena pertsonek irakur ahal izateko" -#: gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "Fitxaren etiketa pertsonalizatua" -#: gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "Trepeta pertsonalizatuak dituen fitxaren etiketa." -#: gtk/gtkprintoperation.c:1287 gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:341 msgid "Support Selection" msgstr "Hautapenaren euskarria" -#: gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." -msgstr "" -"TRUE (egia) inprimatzeko eragiketak hautapena inprimatzea onartzen badu." +msgstr "TRUE (egia) inprimatzeko eragiketak hautapena inprimatzea onartzen badu." -#: gtk/gtkprintoperation.c:1304 gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Hautapena du" -#: gtk/gtkprintoperation.c:1305 -#, fuzzy +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "TRUE (egia) hautapena existitzen bada." # -#: gtk/gtkprintoperation.c:1320 gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:357 msgid "Embed Page Setup" msgstr "Kapsulatutako orriaren konfigurazioa" -#: gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "" "TRUE (egia) orria konfiguratzeko konbinazio-koadroak GtkPrintDialog-en " "kapsulatuta badaude" -#: gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "Orrialde kopurua inprimatzeko" -#: gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "Inprimatuko diren orrialdeen kopurua." -#: gtk/gtkprintunixdialog.c:299 +#: ../gtk/gtkprintunixdialog.c:299 msgid "The GtkPageSetup to use" msgstr "GtkPageSetup erabiltzeko" -#: gtk/gtkprintunixdialog.c:324 +#: ../gtk/gtkprintunixdialog.c:324 msgid "Selected Printer" msgstr "Hautatutako inprimagailua" -#: gtk/gtkprintunixdialog.c:325 +#: ../gtk/gtkprintunixdialog.c:325 msgid "The GtkPrinter which is selected" msgstr "Hautatutako GtkPrinter" -#: gtk/gtkprintunixdialog.c:332 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:332 msgid "Manual Capabilities" msgstr "Eskuzko gaitasunak" -#: gtk/gtkprintunixdialog.c:333 +#: ../gtk/gtkprintunixdialog.c:333 msgid "Capabilities the application can handle" msgstr "Aplikazioak kudea ditzakeen gaitasunak" -#: gtk/gtkprintunixdialog.c:342 +#: ../gtk/gtkprintunixdialog.c:342 msgid "Whether the dialog supports selection" msgstr "Elkarrizketa-koadroak hautapena onartzen duen edo ez" -#: gtk/gtkprintunixdialog.c:350 +#: ../gtk/gtkprintunixdialog.c:350 msgid "Whether the application has a selection" msgstr "Aplikazioak hautapen bat duen edo ez" -#: gtk/gtkprintunixdialog.c:358 +#: ../gtk/gtkprintunixdialog.c:358 msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" msgstr "" "TRUE (egia) orria konfiguratzeko konbinazio-koadroak GtkPrintUnixDialog-en " "kapsulatuta badaude" # -#: gtk/gtkprogressbar.c:134 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "Frakzioa" -#: gtk/gtkprogressbar.c:135 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "Amaitu den lan guztiaren frakzioa" -#: gtk/gtkprogressbar.c:142 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "Pultsuaren urratsa" -#: gtk/gtkprogressbar.c:143 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" -msgstr "" -"Sakatutakoan errebote-blokeak egin beharreko progresio osoaren frakzioa" +msgstr "Sakatutakoan errebote-blokeak egin beharreko progresio osoaren frakzioa" -#: gtk/gtkprogressbar.c:151 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "Progresio-barran bistaratu beharreko testua" -#: gtk/gtkprogressbar.c:158 +#: ../gtk/gtkprogressbar.c:195 msgid "Show text" msgstr "Erakutsi testua" -#: gtk/gtkprogressbar.c:159 +#: ../gtk/gtkprogressbar.c:196 msgid "Whether the progress is shown as text." msgstr "Progresioa testu gisa erakutsiko den ala ez adierazten du" -#: gtk/gtkprogressbar.c:181 +#: ../gtk/gtkprogressbar.c:218 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." @@ -4507,66 +4739,60 @@ msgstr "" "osoa bistaratzeko." # -#: gtk/gtkprogressbar.c:188 -#, fuzzy +#: ../gtk/gtkprogressbar.c:225 msgid "X spacing" -msgstr "XTartea" +msgstr "X tartea" -#: gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:226 msgid "Extra spacing applied to the width of a progress bar." msgstr "Progresio-barraren zabalerari aplikatutako tarte gehigarria." # -#: gtk/gtkprogressbar.c:194 -#, fuzzy +#: ../gtk/gtkprogressbar.c:231 msgid "Y spacing" -msgstr "YTartea" +msgstr "Y tartea" -#: gtk/gtkprogressbar.c:195 +#: ../gtk/gtkprogressbar.c:232 msgid "Extra spacing applied to the height of a progress bar." msgstr "Progresio-barraren altuerari aplikatutako tarte gehigarria." -#: gtk/gtkprogressbar.c:208 -#, fuzzy +#: ../gtk/gtkprogressbar.c:245 msgid "Minimum horizontal bar width" msgstr "Barra horizontalaren gutxieneko zabalera" -#: gtk/gtkprogressbar.c:209 +#: ../gtk/gtkprogressbar.c:246 msgid "The minimum horizontal width of the progress bar" msgstr "Progresio-barraren gutxieneko zabalera horizontala" -#: gtk/gtkprogressbar.c:221 -#, fuzzy +#: ../gtk/gtkprogressbar.c:258 msgid "Minimum horizontal bar height" msgstr "Barra horizontalaren gutxieneko altuera" -#: gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:259 msgid "Minimum horizontal height of the progress bar" msgstr "Progresio-barraren gutxieneko altuera horizontala" -#: gtk/gtkprogressbar.c:234 -#, fuzzy +#: ../gtk/gtkprogressbar.c:271 msgid "Minimum vertical bar width" msgstr "Barra bertikalaren gutxieneko zabalera" -#: gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:272 msgid "The minimum vertical width of the progress bar" msgstr "Progresio-barraren gutxieneko zabalera bertikala" -#: gtk/gtkprogressbar.c:247 -#, fuzzy +#: ../gtk/gtkprogressbar.c:284 msgid "Minimum vertical bar height" msgstr "Barra bertikalaren gutxieneko altuera" -#: gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:285 msgid "The minimum vertical height of the progress bar" msgstr "Progresio-barraren gutxieneko altuera bertikala" -#: gtk/gtkradioaction.c:118 +#: ../gtk/gtkradioaction.c:118 msgid "The value" msgstr "Balioa" -#: gtk/gtkradioaction.c:119 +#: ../gtk/gtkradioaction.c:119 msgid "" "The value returned by gtk_radio_action_get_current_value() when this action " "is the current action of its group." @@ -4574,20 +4800,20 @@ msgstr "" "Ekintza hau bere taldeko uneko ekintza denean, " "gtk_radio_action_get_current_value()-k itzultzen duen balioa." -#: gtk/gtkradioaction.c:135 gtk/gtkradiobutton.c:160 -#: gtk/gtkradiomenuitem.c:373 gtk/gtkradiotoolbutton.c:65 +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 +#: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "Elkartu" -#: gtk/gtkradioaction.c:136 +#: ../gtk/gtkradioaction.c:136 msgid "The radio action whose group this action belongs to." msgstr "Ekintza honen taldeari dagokion aukera-botoien bidezko ekintza." -#: gtk/gtkradioaction.c:151 +#: ../gtk/gtkradioaction.c:151 msgid "The current value" msgstr "Uneko balioa" -#: gtk/gtkradioaction.c:152 +#: ../gtk/gtkradioaction.c:152 msgid "" "The value property of the currently active member of the group to which this " "action belongs." @@ -4595,410 +4821,408 @@ msgstr "" "Ekintza hau dagokion uneko aktibo dagoen taldeko kidearen propietatearen " "balioa." -#: gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "Aukera-botoia (taldeari dagokion trepeta hau)." -#: gtk/gtkradiomenuitem.c:374 +#: ../gtk/gtkradiomenuitem.c:374 msgid "The radio menu item whose group this widget belongs to." msgstr "Aukera-menuko elementua (taldeari dagokion trepeta hau)." -#: gtk/gtkradiotoolbutton.c:66 +#: ../gtk/gtkradiotoolbutton.c:66 msgid "The radio tool button whose group this button belongs to." msgstr "Aukera-tresnaren botoia (taldeari dagokion botoi hau)." -#: gtk/gtkrange.c:410 -msgid "Update policy" -msgstr "Eguneratze-politika" - -#: gtk/gtkrange.c:411 -msgid "How the range should be updated on the screen" -msgstr "Barrutia pantailan nola eguneratu behar den" - -#: gtk/gtkrange.c:420 +#: ../gtk/gtkrange.c:417 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "Barruti-objektu honen uneko balioa duen GtkAdjustment " -#: gtk/gtkrange.c:428 +#: ../gtk/gtkrange.c:425 msgid "Invert direction slider moves to increase range value" -msgstr "" -"Graduatzailea mugitzen den norabidea alderantzikatu barruti-balioa handitzeko" +msgstr "Graduatzailea mugitzen den norabidea alderantzikatu barruti-balioa handitzeko" -#: gtk/gtkrange.c:435 +#: ../gtk/gtkrange.c:432 msgid "Lower stepper sensitivity" msgstr "Beheranzko geziaren sentikortasuna" -#: gtk/gtkrange.c:436 +#: ../gtk/gtkrange.c:433 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" -msgstr "" -"Beheko zatira egokitzeko bideratzen duen geziaren sentikortasun politika" +msgstr "Beheko zatira egokitzeko bideratzen duen geziaren sentikortasun politika" -#: gtk/gtkrange.c:444 +#: ../gtk/gtkrange.c:441 msgid "Upper stepper sensitivity" msgstr "Goiko geziaren sentikortasuna" -#: gtk/gtkrange.c:445 +#: ../gtk/gtkrange.c:442 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" -msgstr "" -"Goiko zatira egokitzeko bideratzen duen geziaren sentikortasun politika" +msgstr "Goiko zatira egokitzeko bideratzen duen geziaren sentikortasun politika" -#: gtk/gtkrange.c:462 +#: ../gtk/gtkrange.c:459 msgid "Show Fill Level" msgstr "Erakutsi betegarri-maila" -#: gtk/gtkrange.c:463 +#: ../gtk/gtkrange.c:460 msgid "Whether to display a fill level indicator graphics on trough." -msgstr "" -"Betegarriaren mailaren adierazlea erakutsi edo ez betetzen ari den bitartean." +msgstr "Betegarriaren mailaren adierazlea erakutsi edo ez betetzen ari den bitartean." -#: gtk/gtkrange.c:479 +#: ../gtk/gtkrange.c:476 msgid "Restrict to Fill Level" msgstr "Murriztu betegarriaren mailara" -#: gtk/gtkrange.c:480 +#: ../gtk/gtkrange.c:477 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Betegarri-mailaren goiko muga murriztu behar den edo ez." -#: gtk/gtkrange.c:495 +#: ../gtk/gtkrange.c:492 msgid "Fill Level" msgstr "Betegarri-maila" -#: gtk/gtkrange.c:496 +#: ../gtk/gtkrange.c:493 msgid "The fill level." msgstr "Betegarriaren maila." +#: ../gtk/gtkrange.c:510 +msgid "Round Digits" +msgstr "Biribildu digituak" + +#: ../gtk/gtkrange.c:511 +msgid "The number of digits to round the value to." +msgstr "Digitu kopurua balioa horra biribiltzeko" + # -#: gtk/gtkrange.c:504 +#: ../gtk/gtkrange.c:519 ../gtk/gtkswitch.c:786 msgid "Slider Width" msgstr "Graduatzailearen zabalera" -#: gtk/gtkrange.c:505 +#: ../gtk/gtkrange.c:520 msgid "Width of scrollbar or scale thumb" msgstr "Korritze-barraren edo eskalaren zabalera" -#: gtk/gtkrange.c:512 +#: ../gtk/gtkrange.c:527 msgid "Trough Border" msgstr "Kanalaren ertza" -#: gtk/gtkrange.c:513 +#: ../gtk/gtkrange.c:528 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "Koadroen/gezien eta ertzaren arteko tartea" -#: gtk/gtkrange.c:520 +#: ../gtk/gtkrange.c:535 msgid "Stepper Size" msgstr "Geziaren tamaina" -#: gtk/gtkrange.c:521 +#: ../gtk/gtkrange.c:536 msgid "Length of step buttons at ends" msgstr "Urrats-botoien bukaerako luzera" # -#: gtk/gtkrange.c:536 +#: ../gtk/gtkrange.c:551 msgid "Stepper Spacing" msgstr "Geziaren tartea" -#: gtk/gtkrange.c:537 +#: ../gtk/gtkrange.c:552 msgid "Spacing between step buttons and thumb" msgstr "Botoien eta kurtsorearen arteko tartea" # -#: gtk/gtkrange.c:544 +#: ../gtk/gtkrange.c:559 msgid "Arrow X Displacement" msgstr "Geziaren X desplazamendua" -#: gtk/gtkrange.c:545 -msgid "" -"How far in the x direction to move the arrow when the button is depressed" +#: ../gtk/gtkrange.c:560 +msgid "How far in the x direction to move the arrow when the button is depressed" msgstr "Gezia noraino eraman behar den x norabidean, botoia sakatutakoan" # -#: gtk/gtkrange.c:552 +#: ../gtk/gtkrange.c:567 msgid "Arrow Y Displacement" msgstr "Geziaren Y desplazamendua" -#: gtk/gtkrange.c:553 -msgid "" -"How far in the y direction to move the arrow when the button is depressed" +#: ../gtk/gtkrange.c:568 +msgid "How far in the y direction to move the arrow when the button is depressed" msgstr "Gezia noraino eraman behar den y norabidean, botoia sakatutakoan" -#: gtk/gtkrange.c:571 +#: ../gtk/gtkrange.c:586 msgid "Trough Under Steppers" msgstr "Kanala gezi azpian" -#: gtk/gtkrange.c:572 +#: ../gtk/gtkrange.c:587 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" msgstr "Barruti osorako marraztu edo desplazamenduko geziak eta tarteak kendu" # -#: gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:600 msgid "Arrow scaling" msgstr "Gezia eskalatzea" -#: gtk/gtkrange.c:586 +#: ../gtk/gtkrange.c:601 msgid "Arrow scaling with regard to scroll button size" msgstr "Gezia eskalatzea korritze botoiaren tamainarekiko" -#: gtk/gtkrecentaction.c:635 gtk/gtkrecentchoosermenu.c:252 +#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:246 msgid "Show Numbers" msgstr "Erakutsi zenbakiak" -#: gtk/gtkrecentaction.c:636 gtk/gtkrecentchoosermenu.c:253 +#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:247 msgid "Whether the items should be displayed with a number" msgstr "Elementuak zenbaki batekin bistaratu behar diren edo ez" -#: gtk/gtkrecentchooser.c:132 +#: ../gtk/gtkrecentchooser.c:132 msgid "Recent Manager" msgstr "Azkenen kudeatzailea" -#: gtk/gtkrecentchooser.c:133 +#: ../gtk/gtkrecentchooser.c:133 msgid "The RecentManager object to use" msgstr "RecentManager objektua erabiltzeko" -#: gtk/gtkrecentchooser.c:147 +#: ../gtk/gtkrecentchooser.c:147 msgid "Show Private" msgstr "Erakutsi pribatua" -#: gtk/gtkrecentchooser.c:148 +#: ../gtk/gtkrecentchooser.c:148 msgid "Whether the private items should be displayed" msgstr "Elementu pribatuak bistaratu behar diren edo ez" -#: gtk/gtkrecentchooser.c:161 +#: ../gtk/gtkrecentchooser.c:161 msgid "Show Tooltips" msgstr "Erakutsi argibideak" -#: gtk/gtkrecentchooser.c:162 +#: ../gtk/gtkrecentchooser.c:162 msgid "Whether there should be a tooltip on the item" msgstr "Elementuan argibidea egon behar duen edo ez" -#: gtk/gtkrecentchooser.c:174 +#: ../gtk/gtkrecentchooser.c:174 msgid "Show Icons" msgstr "Erakutsi ikonoak" -#: gtk/gtkrecentchooser.c:175 +#: ../gtk/gtkrecentchooser.c:175 msgid "Whether there should be an icon near the item" msgstr "Ikonoa elementutik gertu egon behar duen edo ez" -#: gtk/gtkrecentchooser.c:190 +#: ../gtk/gtkrecentchooser.c:190 msgid "Show Not Found" msgstr "Erakutsi ez-aurkituak" -#: gtk/gtkrecentchooser.c:191 +#: ../gtk/gtkrecentchooser.c:191 msgid "Whether the items pointing to unavailable resources should be displayed" msgstr "" "Erabilgarri ez dauden baliabideetara erakusten duten elementuak bistaratu " "edo ez" -#: gtk/gtkrecentchooser.c:204 +#: ../gtk/gtkrecentchooser.c:204 msgid "Whether to allow multiple items to be selected" msgstr "Hainbat elementu hautatzen utziko duen edo ez" -#: gtk/gtkrecentchooser.c:217 +#: ../gtk/gtkrecentchooser.c:217 msgid "Local only" msgstr "Lokalak bakarrik" -#: gtk/gtkrecentchooser.c:218 +#: ../gtk/gtkrecentchooser.c:218 msgid "Whether the selected resource(s) should be limited to local file: URIs" msgstr "" "Hautatutako baliabidea(k) fitxategi lokale(ta)ra mugatu behar den edo ez: " "URIak" -#: gtk/gtkrecentchooser.c:234 +#: ../gtk/gtkrecentchooser.c:234 msgid "Limit" msgstr "Mugatu" -#: gtk/gtkrecentchooser.c:235 +#: ../gtk/gtkrecentchooser.c:235 msgid "The maximum number of items to be displayed" msgstr "Bistaratu beharreko elementuen gehienezko kopurua" -#: gtk/gtkrecentchooser.c:249 +#: ../gtk/gtkrecentchooser.c:249 msgid "Sort Type" msgstr "Ordenatu mota" -#: gtk/gtkrecentchooser.c:250 +#: ../gtk/gtkrecentchooser.c:250 msgid "The sorting order of the items displayed" msgstr "Bistaratutako elementuak nola ordenatuko diren" -#: gtk/gtkrecentchooser.c:265 +#: ../gtk/gtkrecentchooser.c:265 msgid "The current filter for selecting which resources are displayed" msgstr "Zein fitxategi bistaratuko diren hautatzeko uneko iragazkia" -#: gtk/gtkrecentmanager.c:291 +#: ../gtk/gtkrecentmanager.c:295 msgid "The full path to the file to be used to store and read the list" msgstr "" "Zerrenda gordetzeko eta irakurtzeko erabiliko den fitxategiaren bide-izen " "osoa" -#: gtk/gtkrecentmanager.c:306 +#: ../gtk/gtkrecentmanager.c:310 msgid "The size of the recently used resources list" msgstr "Azken aldiz erabilitako baliabideen zerrendaren tamaina" -# -#: gtk/gtkruler.c:138 -msgid "Lower" -msgstr "Behekoa" - -#: gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "Erregelaren beheko muga" - -#: gtk/gtkruler.c:148 -msgid "Upper" -msgstr "Goikoa" - -#: gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "Erregelaren goiko muga" - -#: gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "Markaren posizioa erregelan" - -# -#: gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "Geh. tamaina" - -#: gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "Erregelaren gehienezko tamaina" - -#: gtk/gtkruler.c:184 -msgid "Metric" -msgstr "Metrotan" - -#: gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "Neurria metrotan, erregelan erabiltzeko" - -#: gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "Eskalaren balioa" -#: gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "Ikonoaren tamaina" -#: gtk/gtkscalebutton.c:240 -msgid "" -"The GtkAdjustment that contains the current value of this scale button object" +#: ../gtk/gtkscalebutton.c:237 +msgid "The GtkAdjustment that contains the current value of this scale button object" msgstr "Eskala-botoi objektu honen uneko balioa duen GtkAdjustment" # -#: gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "Ikonoak" -#: gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "Ikonoen izenen zerrenda" -#: gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "Balioan bistaratzen diren hamartarren kopurua" -#: gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Marrazkiaren balioa" -#: gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "" "Uneko balioa graduatzailearen ondoan kate gisa bistaratuko den ala ez " "adierazten du" -#: gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Balioaren posizioa" -#: gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "Uneko balioa zein posiziotan bistaratuko den" -#: gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Graduatzailearen luzera" -#: gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Eskala-graduatzailearen luzera" -#: gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Balioaren tartea" -#: gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" -msgstr "" -"Balio-testuaren eta graduatzailearen/kurtsorearen arearen arteko tartea" +msgstr "Balio-testuaren eta graduatzailearen/kurtsorearen arearen arteko tartea" -#: gtk/gtkscrollbar.c:50 +# +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "Doitze horizontala" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Doiketa horizontala (korritze-trepetaren eta bere kontrolatzailearen artean " +"partekagarria dena)" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "Doitze bertikala" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Doiketa bertikala (korritze-trepetaren eta bere kontrolatzailearen artean " +"partekagarria dena)" + +# +#: ../gtk/gtkscrollable.c:120 +msgid "Horizontal Scrollable Policy" +msgstr "Korritze-barra horizontalaren politika" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "Edukiaren tamaina nola zehaztu behar den" + +#: ../gtk/gtkscrollable.c:136 +msgid "Vertical Scrollable Policy" +msgstr "Korritze-barra bertikalaren politika" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Graduatzailearen gutxieneko luzera" -#: gtk/gtkscrollbar.c:51 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Korritze-barraren graduatzailearen gutxieneko luzera" -#: gtk/gtkscrollbar.c:59 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Graduatzailearen tamaina finkoa" -#: gtk/gtkscrollbar.c:60 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "Ez aldatu graduatzailearen tamaina; blokeatu gutxieneko luzeran" -#: gtk/gtkscrollbar.c:81 -msgid "" -"Display a second backward arrow button on the opposite end of the scrollbar" +#: ../gtk/gtkscrollbar.c:103 +msgid "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "" "Bigarren atzera-geziaren botoia bistaratzen du korritze-barraren kontrako " "bukaeran" -#: gtk/gtkscrollbar.c:88 -msgid "" -"Display a second forward arrow button on the opposite end of the scrollbar" +#: ../gtk/gtkscrollbar.c:110 +msgid "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "" "Bigarren aurrera-geziaren botoia bistaratzen du korritze-barraren kontrako " "bukaeran" # -#: gtk/gtkscrolledwindow.c:243 gtk/gtktreeview.c:571 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "Doitze horizontala" -#: gtk/gtkscrolledwindow.c:250 gtk/gtktreeview.c:579 +#: ../gtk/gtkscrolledwindow.c:297 +msgid "The GtkAdjustment for the horizontal position" +msgstr "Posizio horizontalaren GtkAdjustment" + +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "Doitze bertikala" +#: ../gtk/gtkscrolledwindow.c:304 +msgid "The GtkAdjustment for the vertical position" +msgstr "Posizio bertikalaren GtkAdjustment" + # -#: gtk/gtkscrolledwindow.c:257 +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "Korritze-barra horizontalaren politika" -#: gtk/gtkscrolledwindow.c:258 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "Korritze-barra horizontala bistaratzean" -#: gtk/gtkscrolledwindow.c:265 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "Korritze-barra bertikalaren politika" -#: gtk/gtkscrolledwindow.c:266 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "Korritze-barra bertikala bistaratzean" # -#: gtk/gtkscrolledwindow.c:274 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "Leihoaren kokalekua" -#: gtk/gtkscrolledwindow.c:275 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -5007,11 +5231,11 @@ msgstr "" "izango du baldin eta \"window-placement-set\" EGIA bada." # -#: gtk/gtkscrolledwindow.c:292 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "Leihoa kokatzeko ezarpena" -#: gtk/gtkscrolledwindow.c:293 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -5019,58 +5243,61 @@ msgstr "" "Edukien kokalekua korritze-barrekiko zehazteko \"window-placement\" erabili " "behar den edo ez." -#: gtk/gtkscrolledwindow.c:299 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "Itzal-mota" -#: gtk/gtkscrolledwindow.c:300 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "Edukiaren inguruko alaka-estiloa" # -#: gtk/gtkscrolledwindow.c:314 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "Korritze-barra alaken artean" -#: gtk/gtkscrolledwindow.c:315 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "Korritutako leihoaren alaken artean kokatzen du Korritze-barra" # -#: gtk/gtkscrolledwindow.c:321 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "Korritze-barraren tartea" -#: gtk/gtkscrolledwindow.c:322 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Korritze-barren eta korritutako leihoaren artean dagoen pixel-kopurua" -# -#: gtk/gtkscrolledwindow.c:337 -msgid "Scrolled Window Placement" -msgstr "Korritutako leihoaren kokalekua" +#: ../gtk/gtkscrolledwindow.c:391 +msgid "Minimum Content Width" +msgstr "Edukiaren gutxieneko zabalera" -#: gtk/gtkscrolledwindow.c:338 -msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." -msgstr "" -"Korritutako leihoen edukiak korritze-barrarekiko kokatuta dauden edo ez, " -"baldin eta ez korritutako leihoaren kokaleku bera ez bada gainjartzen." +#: ../gtk/gtkscrolledwindow.c:392 +msgid "The minimum width that the scrolled window will allocate to its content" +msgstr "Korritutako leihoak bere edukiari eslei dezaiokeen gutxieneko zabalera" -#: gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkscrolledwindow.c:406 +msgid "Minimum Content Height" +msgstr "Edukiaren gutxieneko altuera" + +#: ../gtk/gtkscrolledwindow.c:407 +msgid "The minimum height that the scrolled window will allocate to its content" +msgstr "Korritutako leihoak bere edukiari eslei dezaiokeen gutxieneko altuera" + +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "Marraztu" -#: gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "Bereizlea marraztuta edo hutsik dagoen adierazten du" -#: gtk/gtksettings.c:225 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Klik bikoitzaren denbora" -#: gtk/gtksettings.c:226 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -5078,11 +5305,11 @@ msgstr "" "Klik bikoitza izateko bi kliken artean igaro daitekeen gehienezko denbora " "(milisegundotan)" -#: gtk/gtksettings.c:233 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Klik bikoitzaren distantzia" -#: gtk/gtksettings.c:234 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -5092,37 +5319,37 @@ msgstr "" "denbora (milisegundotan)" # -#: gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Kurtsorearen keinua" -#: gtk/gtksettings.c:251 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Kurtsoreak keinu egin behar duen ala ez adierazten du" # -#: gtk/gtksettings.c:258 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Kurtsorearen keinuaren denbora" -#: gtk/gtksettings.c:259 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Kurtsorearen keinu egiteko zikloaren iraupena, milisegundotan" # -#: gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Kurtsorearen keinuaren denbora" -#: gtk/gtksettings.c:279 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "Kurtsorearen keinu egiteari uzteko iraupena, milisegundotan" -#: gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Kurtsore zatitua" -#: gtk/gtksettings.c:287 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -5130,161 +5357,158 @@ msgstr "" "Ezkerretik eskuinera eta eskuinetik ezkerrera doan testu nahasian bi " "kurtsore bistaratu behar diren ala ez adierazten du" -#: gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Gaiaren izena" -#: gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Kargatu behar den gaiaren RC fitxategiaren izena" -#: gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Ikonoen gaiaren izena" -#: gtk/gtksettings.c:304 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Erabili beharreko ikonoaren gaiaren izena" -#: gtk/gtksettings.c:312 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Erreserbako ikono-gaiaren izena" -#: gtk/gtksettings.c:313 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Errore-kasuan erabiliko den ikono-gaiaren izena" -#: gtk/gtksettings.c:321 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Gako-gaiaren izena" -#: gtk/gtksettings.c:322 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Kargatu behar den gako-gaiaren RC fitxategiaren izena" -#: gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Menu-barraren bizkortzailea" -#: gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Menu-barra aktibatzeko laster-tekla" -#: gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Arrastatu muga" -#: gtk/gtksettings.c:340 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Kurtsorea zenbat pixel mugi daitekeen jaregin aurretik" # -#: gtk/gtksettings.c:348 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Letra-tipoaren izena" -#: gtk/gtksettings.c:349 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Erabili behar den letra-tipo lehenetsiaren izena" # -#: gtk/gtksettings.c:371 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Ikonoen tamainak" -#: gtk/gtksettings.c:372 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "Ikono-tamainen zerrenda (gtk-menu=16,16;gtk-button=20,20..." -#: gtk/gtksettings.c:380 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK moduluak" -#: gtk/gtksettings.c:381 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "Unean aktibatuta dauden GTK moduluen zerrenda" -#: gtk/gtksettings.c:390 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft Antialias-a" -#: gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Xft letra-tipoei antialiasing-a aplikatu behar zaien ala ez adierazten du; " "0=ez, 1=bai, -1=lehenetsia" -#: gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft Hinting-a" -#: gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "" -"Xft letra-tipoekin hinting-a erabili behar den ala ez adierazten du; 1=bai, " -"-1=lehenetsia" +"Xft letra-tipoekin hinting-a erabili behar den ala ez adierazten du; 1=bai, -" +"1=lehenetsia" -#: gtk/gtksettings.c:410 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft hinting-estiloa" -#: gtk/gtksettings.c:411 -msgid "" -"What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" -msgstr "" -"Zein hinting-maila erabili behar; bat ere ez, arina, tartekoa, edo osoa" +#: ../gtk/gtksettings.c:485 +msgid "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" +msgstr "Zein hinting-maila erabili behar; bat ere ez, arina, tartekoa, edo osoa" -#: gtk/gtksettings.c:420 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: gtk/gtksettings.c:421 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Azpipixelen antialising-mota; bat ere ez, rgb, bgr, vrgb, vbgr" -#: gtk/gtksettings.c:430 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft DPI" -#: gtk/gtksettings.c:431 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" -msgstr "" -"Xft-n bereizmena, 1024 * hazbete/puntuko. -1 balio lehenetsia erabiltzeko" +msgstr "Xft-n bereizmena, 1024 * hazbete/puntuko. -1 balio lehenetsia erabiltzeko" -#: gtk/gtksettings.c:440 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Ikonoen gaiaren izena" -#: gtk/gtksettings.c:441 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "" "Erabili beharreko kurtsorearen gaiaren izena, edo NULL gai lehenetsia " "erabiltzeko" # -#: gtk/gtksettings.c:449 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Kurtsore-gaiaren tamaina" -#: gtk/gtksettings.c:450 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "Tamaina kurtsoreetan erabiltzeko, edo 0 tamaina lehenetsia erabiltzeko" -#: gtk/gtksettings.c:460 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Botoien ordena alternatiboa" -#: gtk/gtksettings.c:461 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "" "Elkarrizketa-koadroetako botoiak bestelako botoien ordena erabiliko duen ala " "ez adierazten du" -#: gtk/gtksettings.c:478 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Ordena adierazlearen norabide alternatiboa" -#: gtk/gtksettings.c:479 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -5293,11 +5517,11 @@ msgstr "" "alderantzikatzen den edo ez lehenetsiarekin konparatuz (behera gorantz " "adierazten du)" -#: gtk/gtksettings.c:487 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Erakutsi 'Sarrerako metodoak' menua" -#: gtk/gtksettings.c:488 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" @@ -5305,11 +5529,11 @@ msgstr "" "Sarrerako eta testuen ikuspegiko testuinguruko menuak sarrerako metodoa " "aldatzea utzi behar duen edo ez." -#: gtk/gtksettings.c:496 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Erakutsi 'Txertatu Unicode kontroleko karakterea' menua" -#: gtk/gtksettings.c:497 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" @@ -5317,250 +5541,246 @@ msgstr "" "Sarrerako eta testuen ikuspegiko testuinguruko menuak kontroleko karaktereak " "txertatzea utzi behar duen edo ez." -#: gtk/gtksettings.c:505 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Hasierako denbora-muga" -#: gtk/gtksettings.c:506 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Denbora-mugen hasierako balioa, botoia sakatzean" -#: gtk/gtksettings.c:515 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Errepikatzeko denbora-muga" -#: gtk/gtksettings.c:516 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Denbora-mugak errepikatzeko balioa, botoia sakatzean" -#: gtk/gtksettings.c:525 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Zabaltzearen denbora-muga" -#: gtk/gtksettings.c:526 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "Denbora-mugak zabaltzeko balioa, trepeta area berrian zabaltzen denean" -#: gtk/gtksettings.c:561 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Kolore-eskema" -#: gtk/gtksettings.c:562 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "Izendun koloreen paleta gaietan erabiltzeko" # -#: gtk/gtksettings.c:571 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Gaitu animazioak" -#: gtk/gtksettings.c:572 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Toolkit guztian erabiltzeko animazioak gaitu edo ez" -#: gtk/gtksettings.c:590 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Gaitu ukitze-pantaila modua" -#: gtk/gtksettings.c:591 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" -msgstr "" -"EGIA bada ez dago mugimenduaren jakinarazpen gertaerarik pantaila honetan" +msgstr "EGIA bada ez dago mugimenduaren jakinarazpen gertaerarik pantaila honetan" -#: gtk/gtksettings.c:608 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Argibideen denbora" -#: gtk/gtksettings.c:609 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Argibidea erakutsiko den denbora" -#: gtk/gtksettings.c:634 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Arakatzeko argibideen denbora" -#: gtk/gtksettings.c:635 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "" "Argibidea erakutsi aurretik igaroko den denbora arakatzeko modua gaitzen " "denean" -#: gtk/gtksettings.c:656 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Argibideak arakatzeko moduaren denbora" -#: gtk/gtksettings.c:657 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "Denbora arakatzeko modua desgaitzeko" -#: gtk/gtksettings.c:676 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Teklekin nabigatzeko kurtsorea soilik" -#: gtk/gtksettings.c:677 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" -msgstr "" -"EGIA bada, kurtsore-geziak egongo dira soilik trepeten artean nabigatzeko" +msgstr "EGIA bada, kurtsore-geziak egongo dira soilik trepeten artean nabigatzeko" -#: gtk/gtksettings.c:694 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Itzulbiratu nabigazioko teklatua" -#: gtk/gtksettings.c:695 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "Itzulbiratu edo ez trepeten artean teklatuarekin nabigatzeko" -#: gtk/gtksettings.c:715 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Errore soinua" -#: gtk/gtksettings.c:716 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" -msgstr "" -"EGIA bada, nabigazioko teklatuak eta beste erroreek soinua sortuko dute" +msgstr "EGIA bada, nabigazioko teklatuak eta beste erroreek soinua sortuko dute" -#: gtk/gtksettings.c:733 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Kolorearen hash-a" -#: gtk/gtksettings.c:734 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "Kolore-eskema adierazten duen hash taula." -#: gtk/gtksettings.c:742 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Fitxategi-hautatzailearen motor lehenetsia" -#: gtk/gtksettings.c:743 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Lehenespenez erabili beharreko GtkFileChooser motorraren izena" -#: gtk/gtksettings.c:760 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Inprimatze-motor lehenetsia" -#: gtk/gtksettings.c:761 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "Lehenespenez erabili beharreko GtkPrintBackend motorren zerrenda" -#: gtk/gtksettings.c:784 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "Komando lehenetsia inprimatzeko aurrebista bistaratzean exekutatzeko" -#: gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Komandoa inprimatzeko aurrebista bistaratzean exekutatzeko" # -#: gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Gaitu mnemoteknikoa" -#: gtk/gtksettings.c:802 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Etiketek mnemoteknikoak eduki behar duten edo ez" -#: gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Gaitu bizkortzaileak" -#: gtk/gtksettings.c:819 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Menuko elementuek bizkortzaileak edukiko duten edo ez" -#: gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Fitxategi berrien kopurua" -#: gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Erabilitako azken fitxategien kopurua" -#: gtk/gtksettings.c:855 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "BM modulu lehenetsia" -#: gtk/gtksettings.c:856 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "Zein BM modulu erabiliko den lehenetsi gisa" -#: gtk/gtksettings.c:874 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Azken fitxategien geh. antzinatasuna" -#: gtk/gtksettings.c:875 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "Erabilitako azken fitxategien gehienezko antzinatasuna (egunetan)" -#: gtk/gtksettings.c:884 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Fontconfig-en konfigurazioaren data-zigilua" -#: gtk/gtksettings.c:885 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "Uneko fontconfig-en konfigurazioaren data-zigilua" -#: gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Soinu gaiaren izena" -#: gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "XDG soinu gaiaren izena" #. Translators: this means sounds that are played as feedback to user input -#: gtk/gtksettings.c:930 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Sarrerako berrelikadura entzungarria" -#: gtk/gtksettings.c:931 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "" "Erabiltzailearen sarreren aurrean soinuak erreproduzituko duen berrelikadura " "gisa ala ez adierazten du" # -#: gtk/gtksettings.c:952 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Gaitu soinu gertaerak" -#: gtk/gtksettings.c:953 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Gertaeren soinuak erreproduzituko diren ala ez adierazten du" -#: gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Gaitu argibideak" -#: gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Trepetetan argibideak erakutsiko diren ala ez adierazten du" -#: gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Tresna-barraren estiloa" -#: gtk/gtksettings.c:983 -msgid "" -"Whether default toolbars have text only, text and icons, icons only, etc." +#: ../gtk/gtksettings.c:1057 +msgid "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "" "Tresna-barra lehenetsiek testua bakarrik duten, testua eta ikonoak, ikonoak " "bakarrik, etab. adierazten du" -#: gtk/gtksettings.c:997 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Tresna-barrako ikonoen tamaina" -#: gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "Tresna-barra lehenetsietako ikonoen tamaina." # -#: gtk/gtksettings.c:1015 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Mnemotekniko automatikoa" -#: gtk/gtksettings.c:1016 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." @@ -5568,22 +5788,134 @@ msgstr "" "Erabiltzaileak mnemoteknikoen aktibatzailea sakatzean mnemoteknikoak " "automatikoki erakutsi edo ezkutatuko diren adierazten du." -#: gtk/gtksettings.c:1041 -#, fuzzy +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" -msgstr "Aplikazio margogarria" +msgstr "Aplikazioak gai iluna nahiago" -#: gtk/gtksettings.c:1042 -#, fuzzy +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." -msgstr "Aplikazioak hautapen bat duen edo ez" +msgstr "Aplikazioak gai ilun bat edukitzea nahiago duen edo ez." + +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "Erakutsi botoien irudiak" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "Irudiak botoietan erakutsi behar diren ala ez adierazten du" # -#: gtk/gtksizegroup.c:341 +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "Hautatu enfokatzean" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "Enfokatzean, sarreraren edukia hautatuko den ala ez adierazten du" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "Pasahitzaren gonbitearen denbora-muga" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "" +"Zenbat denboran erakutsiko den idatzitako azken karakterea ezkutuko " +"sarreretan" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "Erakutsi menuko irudiak" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "Irudiak menuetan erakutsi behar diren ala ez adierazten du" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "Goitibeherako menuak agertu aurreko atzerapena" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "Menu-barrako azpimenuak agertu aurreko atzerapena" + +# +#: ../gtk/gtksettings.c:1195 +msgid "Scrolled Window Placement" +msgstr "Korritutako leihoaren kokalekua" + +#: ../gtk/gtksettings.c:1196 +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "" +"Korritutako leihoen edukiak korritze-barrarekiko kokatuta dauden edo ez, " +"baldin eta ez korritutako leihoaren kokaleku bera ez bada gainjartzen." + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "Bizkortzaileak alda daitezke" + +#: ../gtk/gtksettings.c:1206 +msgid "Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "" +"Tekla menu-elementuan sakatzean menu-bizkortzailea alda daitekeen ala ez " +"adierazten du" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "Azpimenuak agertu aurreko atzerapena" + +#: ../gtk/gtksettings.c:1215 +msgid "Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "" +"Azpimenua agertzeko erakusleak menu-elementu baten gainean gutxienez zenbat " +"denbora egon behar duen" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "Azpimenua ezkutatu aurreko atzerapena" + +#: ../gtk/gtksettings.c:1225 +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "Erakuslea azpimenurantz mugitzean azpimenua ezkutatu aurreko denbora" + +#: ../gtk/gtksettings.c:1235 +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "Enfokatzean, sarreraren edukia hautatuko den edo ez" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "Paleta pertsonalizatua" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "Kolore-hautatzailean erabili beharreko paleta" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "IM aurreedizioko estiloa" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "Aurreedizioko katearen sarrera-metodoa nola marraztu" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM egoeraren estiloa" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "Egoera-barraren sarrera-metodoa nola marraztu" + +# +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "Modua" -#: gtk/gtksizegroup.c:342 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" @@ -5591,25 +5923,23 @@ msgstr "" "Norabide hauetan, taldearen tamainak osagai-trepetentzat eskatutako tamainei " "eragiten die" -#: gtk/gtksizegroup.c:358 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "Ezikusi egin ezkutukoei" -#: gtk/gtksizegroup.c:359 -msgid "" -"If TRUE, unmapped widgets are ignored when determining the size of the group" -msgstr "" -"EGIA bada ezkutuko trepetak baztertu egingo dira taldearen tamaina zehaztean" +#: ../gtk/gtksizegroup.c:369 +msgid "If TRUE, unmapped widgets are ignored when determining the size of the group" +msgstr "EGIA bada ezkutuko trepetak baztertu egingo dira taldearen tamaina zehaztean" -#: gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "Igoera-abiadura" -#: gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "Atxiki markei" -#: gtk/gtkspinbutton.c:257 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" @@ -5617,220 +5947,186 @@ msgstr "" "Balio okerrak automatikoki botoiaren urrats-gehikuntza hurbilenera aldatzen " "diren ala ez adierazten du" -#: gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "Zenbakizkoa" -#: gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" -msgstr "" -"Karaktere ez-zenbakizkoei ez ikusi egin behar zaien ala ez adierazten du" +msgstr "Karaktere ez-zenbakizkoei ez ikusi egin behar zaien ala ez adierazten du" -#: gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "Itzulbiratu" -#: gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" -msgstr "" -"Botoia bere mugetara iristean itzulbiratu behar den ala ez adierazten du" +msgstr "Botoia bere mugetara iristean itzulbiratu behar den ala ez adierazten du" -#: gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "Eguneratze-politika" -#: gtk/gtkspinbutton.c:281 -msgid "" -"Whether the spin button should update always, or only when the value is legal" +#: ../gtk/gtkspinbutton.c:373 +msgid "Whether the spin button should update always, or only when the value is legal" msgstr "" "Botoia beti eguneratu behar den edo balioa legala denean bakarrik aldatu " "behar den adierazten du" -#: gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "Uneko balioa irakurtzen du edo balio berria ezartzen du" -#: gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "Biratze botoiaren inguruko alaka-estiloa" -#: gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Birakaria aktibo dagoen edo ez" -#: gtk/gtkspinner.c:146 -msgid "Number of steps" -msgstr "Urrats kopurua" - -#: gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"Urrats kopurua biratzaileak begizta bati bira osoa emateko. Lehenetsi gisa, " -"animazioak ziklo oso bat beteko du segundo batean (ikus #GtkSpinner:cycle-" -"duration)." - -# -#: gtk/gtkspinner.c:162 -msgid "Animation duration" -msgstr "Animazioaren iraupena" - -#: gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "" -"Denboraren iraupena (milisegundotan) birakariak begiztari bira osoa emateko" - -#: gtk/gtkstatusbar.c:199 -msgid "Has Resize Grip" -msgstr "Tamainaz aldatzeko sareta" - -#: gtk/gtkstatusbar.c:200 -msgid "Whether the statusbar has a grip for resizing the toplevel" -msgstr "" -"Egoera-barrak goi-maila tamainaz aldatzeko sareta duen ala ez adierazten du" - -#: gtk/gtkstatusbar.c:245 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "Egoera-barrako testuaren inguruko alaka-estiloa" -#: gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "Ikonoaren tamaina" -#: gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "Egoerako ikono hau bistaratuko den pantaila" -#: gtk/gtkstatusicon.c:288 -#, fuzzy +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "Egoerako ikonoa ikusgai dagoen edo ez" -#: gtk/gtkstatusicon.c:304 -#, fuzzy +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "Egoerako ikonoa kapsulatuta dagoen edo ez" -#: gtk/gtkstatusicon.c:320 gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "Erretiluaren orientazioa" -#: gtk/gtkstatusicon.c:347 gtk/gtkwidget.c:863 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1042 msgid "Has tooltip" msgstr "Argibidea du" -#: gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "Erretiluko ikonoak argibidea duen edo ez" -#: gtk/gtkstatusicon.c:373 gtk/gtkwidget.c:884 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1063 msgid "Tooltip Text" msgstr "Argibidearen testua" -#: gtk/gtkstatusicon.c:374 gtk/gtkwidget.c:885 gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1064 ../gtk/gtkwidget.c:1085 msgid "The contents of the tooltip for this widget" msgstr "Trepetaren argibidearen edukia" -#: gtk/gtkstatusicon.c:397 gtk/gtkwidget.c:905 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1084 msgid "Tooltip markup" msgstr "Markaren argibidea" -#: gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "Erretiluko ikonoaren argibidearen edukia" -#: gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "Erretiluko ikono honen titulua" -#: gtk/gtktable.c:148 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "Estiloaren testuingurua" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "GtkStyleContext (hortik estiloa eskuratzeko)" + +#: ../gtk/gtkstylecontext.c:547 +msgid "The associated GdkScreen" +msgstr "Esleitutako GdkScreen" + +# +#: ../gtk/gtkstylecontext.c:553 +msgid "Direction" +msgstr "Norabidea" + +# +#: ../gtk/gtkstylecontext.c:554 ../gtk/gtktexttag.c:236 +msgid "Text direction" +msgstr "Testuaren norabidea" + +#: ../gtk/gtkswitch.c:753 +msgid "Whether the switch is on or off" +msgstr "Kommutadorea piztuta edo itzalita dagoen adierazten du" + +#: ../gtk/gtkswitch.c:787 +msgid "The minimum width of the handle" +msgstr "Heldulekuaren gutxieneko zabalera" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "Errenkadak" -#: gtk/gtktable.c:149 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "Taulako errenkaden kopurua" -#: gtk/gtktable.c:157 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "Zutabeak" -#: gtk/gtktable.c:158 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "Taulako zutabeen kopurua" -# -#: gtk/gtktable.c:166 -msgid "Row spacing" -msgstr "Errenkaden tartea" - -#: gtk/gtktable.c:167 -msgid "The amount of space between two consecutive rows" -msgstr "Elkarren segidako bi errenkaden arteko lekua" - -#: gtk/gtktable.c:175 -msgid "Column spacing" -msgstr "Zutabeen tartea" - -#: gtk/gtktable.c:176 -msgid "The amount of space between two consecutive columns" -msgstr "Elkarren segidako bi zutaberen arteko lekua" - -#: gtk/gtktable.c:185 +#: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "" "EGIA bada, horrek esan nahi du taulako gelaxka guztiek zabalera eta altuera " "bera dutela" -#: gtk/gtktable.c:192 -msgid "Left attachment" -msgstr "Ezkerreko eranskina" - -#: gtk/gtktable.c:199 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Eskuineko eranskina" -#: gtk/gtktable.c:200 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "Trepeta umearen eskuineko aldean erantsi beharreko zutabe-kopurua" -#: gtk/gtktable.c:206 -msgid "Top attachment" -msgstr "Goiko eranskina" - -#: gtk/gtktable.c:207 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "Trepeta umearen goian erantsi beharreko errenkaden kopurua" -#: gtk/gtktable.c:213 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "Beheko eranskina" # -#: gtk/gtktable.c:220 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "Aukera horizontalak" -#: gtk/gtktable.c:221 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "Umearen portaera horizontala zehazten duten aukerak" -#: gtk/gtktable.c:227 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "Aukera bertikalak" -#: gtk/gtktable.c:228 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "Umearen portaera bertikala zehazten duten aukerak" -#: gtk/gtktable.c:234 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "Tarte betegarri horizontala" -#: gtk/gtktable.c:235 +#: ../gtk/gtktable.c:244 msgid "" "Extra space to put between the child and its left and right neighbors, in " "pixels" @@ -5838,11 +6134,11 @@ msgstr "" "Umearen eta haren ezkerreko eta eskuineko auzoen artean jarri beharreko " "tarte estra, pixeletan" -#: gtk/gtktable.c:241 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "Tarte betegarri bertikala" -#: gtk/gtktable.c:242 +#: ../gtk/gtktable.c:251 msgid "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" @@ -5850,53 +6146,50 @@ msgstr "" "Umearen eta haren goiko eta beheko auzoen artean jarri beharreko tarte " "estra, pixeletan" -#: gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:192 msgid "Tag Table" msgstr "Etiketa-taula" -#: gtk/gtktextbuffer.c:193 +#: ../gtk/gtktextbuffer.c:193 msgid "Text Tag Table" msgstr "Testu-etiketen taula" -#: gtk/gtktextbuffer.c:211 +#: ../gtk/gtktextbuffer.c:211 msgid "Current text of the buffer" msgstr "Bufferreko uneko testua" -#: gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:225 msgid "Has selection" msgstr "Hautapena du" -#: gtk/gtktextbuffer.c:226 +#: ../gtk/gtktextbuffer.c:226 msgid "Whether the buffer has some text currently selected" msgstr "Bufferrak unean testurik hautatuta duen edo ez" # -#: gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:242 msgid "Cursor position" msgstr "Kurtsorearen posizioa" -#: gtk/gtktextbuffer.c:243 -msgid "" -"The position of the insert mark (as offset from the beginning of the buffer)" -msgstr "" -"Txertatze-markaren kokalekua (desplazamendu gisa bufferraren hasieratik)" +#: ../gtk/gtktextbuffer.c:243 +msgid "The position of the insert mark (as offset from the beginning of the buffer)" +msgstr "Txertatze-markaren kokalekua (desplazamendu gisa bufferraren hasieratik)" -#: gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:258 msgid "Copy target list" msgstr "Kopia-helburuen zerrenda" -#: gtk/gtktextbuffer.c:259 -msgid "" -"The list of targets this buffer supports for clipboard copying and DND source" +#: ../gtk/gtktextbuffer.c:259 +msgid "The list of targets this buffer supports for clipboard copying and DND source" msgstr "" "Buffer honek onartzen dituen helburuen zerrenda arbeletik kopiatzeko eta " "DNDren iturburua" -#: gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:274 msgid "Paste target list" msgstr "Itsaste-helburuen zerrenda" -#: gtk/gtktextbuffer.c:275 +#: ../gtk/gtktextbuffer.c:275 msgid "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" @@ -5904,37 +6197,35 @@ msgstr "" "Buffer honek onartzen dituen helburuen zerrenda arbeletik itsasteko eta " "DNDren helburua" -#: gtk/gtktextmark.c:90 +#: ../gtk/gtktextmark.c:90 msgid "Mark name" msgstr "Markatu izena" -#: gtk/gtktextmark.c:97 +#: ../gtk/gtktextmark.c:97 msgid "Left gravity" msgstr "Ezker-grabitatea" -#: gtk/gtktextmark.c:98 +#: ../gtk/gtktextmark.c:98 msgid "Whether the mark has left gravity" msgstr "Markak ezker-grabitatea duen edo ez" -#: gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:186 msgid "Tag name" msgstr "Etiketa-izena" -#: gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:187 msgid "Name used to refer to the text tag. NULL for anonymous tags" -msgstr "" -"Testu-etiketa aipatzeko erabiltzen den izena. NULUA etiketa anonimoentzat" +msgstr "Testu-etiketa aipatzeko erabiltzen den izena. NULUA etiketa anonimoentzat" -#: gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:205 msgid "Background color as a (possibly unallocated) GdkColor" -msgstr "" -"Atzeko planoaren kolorea GdkColor gisa (baliteke esleitu gabea izatea) " +msgstr "Atzeko planoaren kolorea GdkColor gisa (baliteke esleitu gabea izatea) " -#: gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:212 msgid "Background full height" msgstr "Atzeko planoaren altuera osoa" -#: gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:213 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5942,31 +6233,23 @@ msgstr "" "Atzeko planoaren koloreak lerroaren altuera osoa betetzen duen edo " "etiketatutako karaktereen altuera bakarrik adierazten duen" -#: gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:229 msgid "Foreground color as a (possibly unallocated) GdkColor" -msgstr "" -"Aurreko planoaren kolorea GdkColor gisa (baliteke esleitu gabea izatea) " +msgstr "Aurreko planoaren kolorea GdkColor gisa (baliteke esleitu gabea izatea) " -# -#: gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "Testuaren norabidea" - -#: gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:237 msgid "Text direction, e.g. right-to-left or left-to-right" -msgstr "" -"Testuaren norabidea; adibidez, eskuinetik ezkerrera edo ezkerretik eskuinera" +msgstr "Testuaren norabidea; adibidez, eskuinetik ezkerrera edo ezkerretik eskuinera" -#: gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:286 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "Letra-tipoaren estiloa PangoStyle gisa; adibidez, PANGO_STYLE_ITALIC" -#: gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:295 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" -msgstr "" -"Letra-tipoaren aldaera PangoVariant gisa; adibidez, PANGO_VARIANT_SMALL_CAPS" +msgstr "Letra-tipoaren aldaera PangoVariant gisa; adibidez, PANGO_VARIANT_SMALL_CAPS" -#: gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:304 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5974,16 +6257,15 @@ msgstr "" "Letra-tipoaren pisua osoko gisa, ikus aurrez definitutako balioak " "PangoWeight-en; adibidez, PANGO_WEIGHT_BOLD" -#: gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:315 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" -msgstr "" -"Letra-tipo tiratua PangoStretch gisa; adibidez, PANGO_STRETCH_CONDENSED" +msgstr "Letra-tipo tiratua PangoStretch gisa; adibidez, PANGO_STRETCH_CONDENSED" -#: gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:324 msgid "Font size in Pango units" msgstr "Letra-tipoaren tamaina Pango unitatetan" -#: gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:334 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 " @@ -5994,11 +6276,11 @@ msgstr "" "denez, gomendagarria da. Pango-k zenbait eskala aurrez definitzen ditu; " "adibidez, PANGO_SCALE_X_LARGE." -#: gtk/gtktexttag.c:336 gtk/gtktextview.c:686 +#: ../gtk/gtktexttag.c:354 ../gtk/gtktextview.c:704 msgid "Left, right, or center justification" msgstr "Ezkerreko, eskuineko edo erdiko justifikazioa" -#: gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:373 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." @@ -6006,31 +6288,31 @@ msgstr "" "Testu honetako hizkuntza ISOren kode gisa dago. Pango-k laguntza gisa erabil " "dezake testua bihurtzean. Ez bada ezartzen, lehenetsitakoa erabiliko da." -#: gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:380 msgid "Left margin" msgstr "Ezkerreko marjina" -#: gtk/gtktexttag.c:363 gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:381 ../gtk/gtktextview.c:713 msgid "Width of the left margin in pixels" msgstr "Ezkerreko marjinaren zabalera pixeletan" -#: gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:390 msgid "Right margin" msgstr "Eskuineko marjina" -#: gtk/gtktexttag.c:373 gtk/gtktextview.c:705 +#: ../gtk/gtktexttag.c:391 ../gtk/gtktextview.c:723 msgid "Width of the right margin in pixels" msgstr "Eskuineko marjinaren zabalera pixeletan" -#: gtk/gtktexttag.c:383 gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:401 ../gtk/gtktextview.c:732 msgid "Indent" msgstr "Koska" -#: gtk/gtktexttag.c:384 gtk/gtktextview.c:715 +#: ../gtk/gtktexttag.c:402 ../gtk/gtktextview.c:733 msgid "Amount to indent the paragraph, in pixels" msgstr "Paragrafoa koskatzeko pixel-kopurua" -#: gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:413 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -6038,363 +6320,360 @@ msgstr "" "Testuaren desplazamendua oinarri-lerroaren gainetik (oinarri-lerroaren " "azpitik goratzea negatiboa bada), Pango unitateetan" -#: gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:422 msgid "Pixels above lines" msgstr "Lerroen gaineko pixelak" -#: gtk/gtktexttag.c:405 gtk/gtktextview.c:639 +#: ../gtk/gtktexttag.c:423 ../gtk/gtktextview.c:657 msgid "Pixels of blank space above paragraphs" msgstr "Paragrafoen gaineko zuriuneen pixelak" -#: gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:432 msgid "Pixels below lines" msgstr "Lerroen azpiko pixelak" -#: gtk/gtktexttag.c:415 gtk/gtktextview.c:649 +#: ../gtk/gtktexttag.c:433 ../gtk/gtktextview.c:667 msgid "Pixels of blank space below paragraphs" msgstr "Paragrafoen azpiko zuriuneen pixelak" -#: gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:442 msgid "Pixels inside wrap" msgstr "Itzulbiratzearen barruko pixelak" -#: gtk/gtktexttag.c:425 gtk/gtktextview.c:659 +#: ../gtk/gtktexttag.c:443 ../gtk/gtktextview.c:677 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Paragrafoko itzulbiratzeen arteko zuriuneen pixelak" -#: gtk/gtktexttag.c:452 gtk/gtktextview.c:677 -msgid "" -"Whether to wrap lines never, at word boundaries, or at character boundaries" +#: ../gtk/gtktexttag.c:470 ../gtk/gtktextview.c:695 +msgid "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "" "Lerroak noiz itzulbiratu behar diren adierazten du: inoiz ez, hitzen mugetan " "edo karaktereen mugetan" -#: gtk/gtktexttag.c:461 gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:479 ../gtk/gtktextview.c:742 msgid "Tabs" msgstr "Tabuladoreak" -#: gtk/gtktexttag.c:462 gtk/gtktextview.c:725 +#: ../gtk/gtktexttag.c:480 ../gtk/gtktextview.c:743 msgid "Custom tabs for this text" msgstr "Pertsonalizatu testu honen tabuladoreak" -#: gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:498 msgid "Invisible" msgstr "Ikusezina" -#: gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:499 msgid "Whether this text is hidden." msgstr "Testu hau ezkutukoa den edo ez" -#: gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color name" msgstr "Paragrafoaren atzeko planoaren kolore-izena" -#: gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a string" msgstr "Paragrafoaren atzeko planoaren kolorea kate gisa" -#: gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:529 msgid "Paragraph background color" msgstr "Paragrafoaren atzeko planoaren kolorea" -#: gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:530 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "" "Paragrafoaren atzeko planoaren kolorea GdkColor gisa (baliteke esleitu gabea " "izatea) " -#: gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:548 msgid "Margin Accumulates" msgstr "Marjinen pilaketa" -#: gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:549 msgid "Whether left and right margins accumulate." msgstr "Ezkerreko eta eskuineko marjinak pilatu edo ez" -#: gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:562 msgid "Background full height set" msgstr "Atzeko planoaren altuera osoaren ezarpena" -#: gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:563 msgid "Whether this tag affects background height" -msgstr "" -"Etiketa honek atzeko planoaren altuerari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek atzeko planoaren altuerari eragiten dion ala ez adierazten du" -#: gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:602 msgid "Justification set" msgstr "Justifikazioaren ezarpena" -#: gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:603 msgid "Whether this tag affects paragraph justification" msgstr "" "Etiketa honek paragrafoaren justifikazioari eragiten dion ala ez adierazten " "du" -#: gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:610 msgid "Left margin set" msgstr "Ezkerreko marjinaren ezarpena" -#: gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the left margin" msgstr "Etiketa honek ezkerreko marjinari eragiten dion ala ez adierazten du" -#: gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:614 msgid "Indent set" msgstr "Koskaren ezarpena" -#: gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects indentation" msgstr "Etiketa honek koskari eragiten dion ala ez adierazten du" -#: gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:622 msgid "Pixels above lines set" msgstr "Lerroen gaineko pixelen ezarpena" -#: gtk/gtktexttag.c:605 gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:623 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects the number of pixels above lines" msgstr "" "Etiketa honek lerroen gaineko pixel-kopuruari eragiten dion ala ez " "adierazten du" -#: gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:626 msgid "Pixels below lines set" msgstr "Lerroen azpiko pixelen ezarpena" -#: gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:630 msgid "Pixels inside wrap set" msgstr "Itzulbiratzearen barruko pixelen ezarpena" -#: gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "" "Etiketa honek itzulbiratutako lerroen arteko pixel-kopuruari eragiten dion " "ala ez adierazten du" -#: gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:638 msgid "Right margin set" msgstr "Eskuineko marjinaren ezarpena" -#: gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects the right margin" msgstr "Etiketa honek eskuineko marjinari eragiten dion ala ez adierazten du" # -#: gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:646 msgid "Wrap mode set" msgstr "Itzulbiratze-moduaren ezarpena" -#: gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:647 msgid "Whether this tag affects line wrap mode" -msgstr "" -"Etiketa honek lerroen itzulbiratze-moduari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek lerroen itzulbiratze-moduari eragiten dion ala ez adierazten du" -#: gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:650 msgid "Tabs set" msgstr "Tabuladoreen ezarpena" -#: gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:651 msgid "Whether this tag affects tabs" msgstr "Etiketa honek tabuladoreei eragiten dien ala ez adierazten du" -#: gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:654 msgid "Invisible set" msgstr "Ikusezintasunaren ezarpena" -#: gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:655 msgid "Whether this tag affects text visibility" -msgstr "" -"Etiketa honek testuaren ikusgaitasunari eragiten dion ala ez adierazten du" +msgstr "Etiketa honek testuaren ikusgaitasunari eragiten dion ala ez adierazten du" -#: gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:658 msgid "Paragraph background set" msgstr "Paragrafoaren atzeko planoaren ezarpena" -#: gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:659 msgid "Whether this tag affects the paragraph background color" -msgstr "" -"Etiketa honek paragrafoaren atzeko planoaren koloreari eragiten dion ala ez" +msgstr "Etiketa honek paragrafoaren atzeko planoaren koloreari eragiten dion ala ez" -#: gtk/gtktextview.c:638 +#: ../gtk/gtktextview.c:656 msgid "Pixels Above Lines" msgstr "Lerroen gaineko pixelak" -#: gtk/gtktextview.c:648 +#: ../gtk/gtktextview.c:666 msgid "Pixels Below Lines" msgstr "Lerroen azpiko pixelak" -#: gtk/gtktextview.c:658 +#: ../gtk/gtktextview.c:676 msgid "Pixels Inside Wrap" msgstr "Itzulbiratzearen barruko pixelak" # -#: gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:694 msgid "Wrap Mode" msgstr "Itzulbiratze-modua" -#: gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:712 msgid "Left Margin" msgstr "Ezkerreko marjina" -#: gtk/gtktextview.c:704 +#: ../gtk/gtktextview.c:722 msgid "Right Margin" msgstr "Eskuineko marjina" # -#: gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:750 msgid "Cursor Visible" msgstr "Kurtsorea ikusgai" -#: gtk/gtktextview.c:733 +#: ../gtk/gtktextview.c:751 msgid "If the insertion cursor is shown" msgstr "Txertatze-kurtsorea agertzen bada" -#: gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:758 msgid "Buffer" msgstr "Bufferra" -#: gtk/gtktextview.c:741 +#: ../gtk/gtktextview.c:759 msgid "The buffer which is displayed" msgstr "Bistaratutako bufferra" -#: gtk/gtktextview.c:749 +#: ../gtk/gtktextview.c:767 msgid "Whether entered text overwrites existing contents" msgstr "" "Sartutako testuak lehendik dauden edukiak gainidazten dituen ala ez " "adierazten du" -#: gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:774 msgid "Accepts tab" msgstr "Tabulazio-marka onartzen du" -#: gtk/gtktextview.c:757 +#: ../gtk/gtktextview.c:775 msgid "Whether Tab will result in a tab character being entered" msgstr "Tabuladoreak tabulazio-marka sartzea eragiten duen adierazten du" -#: gtk/gtktextview.c:786 +#: ../gtk/gtktextview.c:810 msgid "Error underline color" msgstr "Errore-azpimarren kolorea" -#: gtk/gtktextview.c:787 +#: ../gtk/gtktextview.c:811 msgid "Color with which to draw error-indication underlines" msgstr "Errorea adierazteko azpimarrak zein koloretakoa izan behar duen" -#: gtk/gtktoggleaction.c:118 +#: ../gtk/gtkthemingengine.c:249 +msgid "Theming engine name" +msgstr "Gai-motorraren izena" + +#: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Sortu aukera-botoien bidezko ekintzaren proxy berak" -#: gtk/gtktoggleaction.c:119 +#: ../gtk/gtktoggleaction.c:119 msgid "Whether the proxies for this action look like radio action proxies" msgstr "" "Ekintza honen proxy-ek aukera-botoien bidezko ekintzen proxy-en itxura duten " "adierazten du" -#: gtk/gtktoggleaction.c:134 -#, fuzzy +#: ../gtk/gtktoggleaction.c:134 msgid "Whether the toggle action should be active" -msgstr "Txandakatze-botoiak aktibatuta egon behar duen edo ez" +msgstr "Txandakatzailearen ekintza aktibatuta egon behar duen edo ez" -#: gtk/gtktogglebutton.c:116 gtk/gtktoggletoolbutton.c:113 -#, fuzzy +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 msgid "If the toggle button should be pressed in" msgstr "Txandakatze-botoiak sakatuta egon behar duen ala ez" -#: gtk/gtktogglebutton.c:124 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "Txandakatze-botoia \"tarteko\" egoeran dagoen" -#: gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "Marrazki-adierazlea" -#: gtk/gtktogglebutton.c:132 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "Botoiaren txandakatze-aldea bistaratuta dagoen" -#: gtk/gtktoolbar.c:465 gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1062 msgid "Toolbar Style" msgstr "Tresna-barraren estiloa" -#: gtk/gtktoolbar.c:466 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "Tresna-barra nola marraztu" -#: gtk/gtktoolbar.c:473 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "Erakutsi gezia" -#: gtk/gtktoolbar.c:474 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "Gezia erakutsi behar den tresna-barra kabitzen ez denean" -#: gtk/gtktoolbar.c:495 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "Tresna-barrako ikonoen tamaina" -#: gtk/gtktoolbar.c:510 gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1048 msgid "Icon size set" msgstr "Ikono-tamainaren ezarpena" -#: gtk/gtktoolbar.c:511 gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1049 msgid "Whether the icon-size property has been set" msgstr "Ikono-tamainaren propietatea ezarri den edo ez" -#: gtk/gtktoolbar.c:520 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "" "Tresna-barra haztean, elementuak beste tarte bat eduki behar duen ala ez " "adierazten du" -#: gtk/gtktoolbar.c:528 gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1648 msgid "Whether the item should be the same size as other homogeneous items" msgstr "" "Elementuak beste elementu homogeneoen tamaina bera eduki behar duen ala ez " "adierazten du" -#: gtk/gtktoolbar.c:535 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "Zuriune-tamaina" -#: gtk/gtktoolbar.c:536 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "Zuriuneen tamaina" -#: gtk/gtktoolbar.c:545 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "Tresna-barraren itzalaren eta botoien arteko ertzen leku-kantitatea" -#: gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "Umearen gehienezko zabalera" -#: gtk/gtktoolbar.c:554 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "Elementu zabalgarri batek eman dezakeen gehienezko leku-kopurua" -#: gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "Zuriunearen estiloa" -#: gtk/gtktoolbar.c:563 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "Zuriuneak lerro bertikalak edo zuriak bakarrik diren adierazten du" -#: gtk/gtktoolbar.c:570 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "Botoiaren erliebea" -#: gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "Tresna-barraren botoien inguruko alaka-mota" -#: gtk/gtktoolbar.c:578 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "Tresna-barraren inguruko alaka-estiloa" -#: gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "Elementuan erakutsi beharreko testua." -#: gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6403,45 +6682,45 @@ msgstr "" "karakterea tekla bizkortzaile mnemoteknikorako erabili behar dela " "gainezkatze menuan." -#: gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "Elementu-etiketa gisa erabili beharreko trepeta" -#: gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "Stock-ID-a" -#: gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "Elementuan bistaratutako stock-ikonoa" -#: gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "Ikono-izena" -#: gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "Elementuan bistaratutako ikono-gaiaren izena" # -#: gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "Ikono-trepeta" -#: gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "Elementuan bistaratu beharreko ikono-trepeta" # -#: gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "Ikono-tartea" -#: gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "Ikono eta etiketaren arteko tartea (pixeletan)" -#: gtk/gtktoolitem.c:201 +#: ../gtk/gtktoolitem.c:210 msgid "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" @@ -6450,529 +6729,528 @@ msgstr "" "bada, tresna-barrako botoiek testua GTK_TOOLBAR_BOTH_HORIZ moduan adierazten " "dute" -#: gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "The human-readable title of this item group" msgstr "Elementuen talde honen titulua pertsonek irakur ahal izateko" -#: gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "A widget to display in place of the usual label" msgstr "Trepeta ohiko etiketaren ordez bistaratzeko" -#: gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1608 msgid "Collapsed" msgstr "Tolestuta" -#: gtk/gtktoolitemgroup.c:1586 -#, fuzzy +#: ../gtk/gtktoolitemgroup.c:1609 msgid "Whether the group has been collapsed and items are hidden" msgstr "Taldea tolestu egin den eta elementuak ezkutatu diren edo ez" -#: gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1615 msgid "ellipsize" msgstr "elipsi gisa" -#: gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Ellipsize for item group headers" msgstr "Elementuen taldearen goiburuentzako elipsia" -#: gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1622 msgid "Header Relief" msgstr "Goiburuko erliebea" -#: gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1623 msgid "Relief of the group header button" msgstr "Taldearen goiburuko botoiaren erliebea" -#: gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1638 msgid "Header Spacing" msgstr "Goiburuko tartea" -#: gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1639 msgid "Spacing between expander arrow and caption" msgstr "Zabaltzailearen geziaren eta epigrafearen arteko tartea" -#: gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1655 msgid "Whether the item should receive extra space when the group grows" msgstr "" "Taldea haztean, elementuak beste tarte bat eduki behar duen ala ez " "adierazten du" -#: gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "Whether the item should fill the available space" msgstr "Elementuak tarte erabilgarria beteko duen edo ez adierazten du" -#: gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1668 msgid "New Row" msgstr "Errenkada berria" -#: gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Whether the item should start a new row" msgstr "Elementuak errenkada berri bat hasi behar duen edo ez adierazten du" -#: gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1676 msgid "Position of the item within this group" msgstr "Elementuaren posizioa talde honetan" -#: gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1033 msgid "Size of icons in this tool palette" msgstr "Tresnen paleta honetako ikonoen tamaina" -#: gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1063 msgid "Style of items in the tool palette" msgstr "Tresnen paletako elementuen estiloa" -#: gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1079 msgid "Exclusive" msgstr "Esklusiboa" -#: gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1080 msgid "Whether the item group should be the only expanded at a given time" msgstr "Elementuen taldea zehaztutako orduan soilik zabalduko den edo ez" -#: gtk/gtktoolpalette.c:1066 -msgid "" -"Whether the item group should receive extra space when the palette grows" +#: ../gtk/gtktoolpalette.c:1095 +msgid "Whether the item group should receive extra space when the palette grows" msgstr "" "Paleta haztean, elementuen taldeak beste tarte bat eduki behar duen ala ez " "adierazten du" -#: gtk/gtktrayicon-x11.c:134 -#, fuzzy +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" -msgstr "Aurreko planoaren kolorea kate gisa" +msgstr "Aurreko planoaren kolorea ikono sinbolikoentzako" -#: gtk/gtktrayicon-x11.c:141 -#, fuzzy +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" -msgstr "Kurtsorearen kolorea" +msgstr "Errorearen kolorea" -#: gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" -msgstr "" +msgstr "Ikono sinbolikoen erroreen kolorea" -#: gtk/gtktrayicon-x11.c:149 -#, fuzzy +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" -msgstr "Atzeko planoaren kolorea" +msgstr "Abisuaren kolorea" -#: gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" -msgstr "" +msgstr "Ikono sinbolikoen abisuen kolorea" -#: gtk/gtktrayicon-x11.c:157 -#, fuzzy +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" -msgstr "Kurtsorearen kolorea" +msgstr "Ongi burututakoaren kolorea" -#: gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" -msgstr "" +msgstr "Ikono sinbolikoen ongi burututakoen kolorea" -#: gtk/gtktrayicon-x11.c:166 -#, fuzzy +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" -msgstr "Ikonoa elementutik gertu egon behar duen edo ez" +msgstr "Betegarria (erretiluko ikonoaren inguruan jarri beharko litzatekeena)" -#: gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +msgid "TreeMenu model" +msgstr "ZuhaitzMenua modeloa" + +#: ../gtk/gtktreemenu.c:288 +msgid "The model for the tree menu" +msgstr "Zuhaitz-menuaren modeloa" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "ZuhaitzMenuaren erroko errenkada" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "ZuhaitzMenuak zehaztutako erroaren umeak bistaratuko ditu" + +#: ../gtk/gtktreemenu.c:344 +msgid "Tearoff" +msgstr "Askagarria" + +#: ../gtk/gtktreemenu.c:345 +msgid "Whether the menu has a tearoff item" +msgstr "Menuak elementu askagarria duen edo ez" + +# +#: ../gtk/gtktreemenu.c:361 +msgid "Wrap Width" +msgstr "Doitze-zabalera" + +#: ../gtk/gtktreemenu.c:362 +msgid "Wrap width for laying out items in a grid" +msgstr "Sareta bateko elementuak diseinatzeko doitze-zabalera" + +#: ../gtk/gtktreemodelsort.c:312 msgid "TreeModelSort Model" msgstr "TreeModelSort modeloa" -#: gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:313 msgid "The model for the TreeModelSort to sort" msgstr "Ordenatzeko TreeModelSort-en modeloa" -#: gtk/gtktreeview.c:563 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "TreeView modeloa" -#: gtk/gtktreeview.c:564 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "Zuhaitz-ikuspegirako modeloa" -#: gtk/gtktreeview.c:572 -msgid "Horizontal Adjustment for the widget" -msgstr "Trepetaren doitze horizontala" - -#: gtk/gtktreeview.c:580 -msgid "Vertical Adjustment for the widget" -msgstr "Trepetaren doitze bertikala" - -#: gtk/gtktreeview.c:587 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "Goiburu ikusgaiak" -#: gtk/gtktreeview.c:588 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "Zutabearen goiburuko botoiak erakusten ditu" -#: gtk/gtktreeview.c:595 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "Goiburu klikagarriak" -#: gtk/gtktreeview.c:596 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "Zutabeko goiburuek klik-ei erantzuten diete" -#: gtk/gtktreeview.c:603 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "Zabaltzailearen zutabea" -#: gtk/gtktreeview.c:604 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "Ezarri zabaltzailearen zutabearentzako zutabea" -#: gtk/gtktreeview.c:619 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "Arauen aholkua" -#: gtk/gtktreeview.c:620 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "" "Gaiaren motorrarentzat aholku bat ezartzen du, errenkadak hainbat kolorez " "marrazteko" -#: gtk/gtktreeview.c:627 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "Gaitu bilaketa" -#: gtk/gtktreeview.c:628 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "" "Ikuspegiak erabiltzailearen zutabeetan barrena interaktiboki bilatzeko " "baimena ematen dio" -#: gtk/gtktreeview.c:635 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "Bilaketa-zutabea" -#: gtk/gtktreeview.c:636 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "Bilaketa interaktiboan bilaketa egiteko zutabe-eredua" -#: gtk/gtktreeview.c:656 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "Altuera finkoko modua" -#: gtk/gtktreeview.c:657 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" -msgstr "" -"GtkTreeView azkartzen du, errenkada guztiek altuera bera dutela suposatuz" +msgstr "GtkTreeView azkartzen du, errenkada guztiek altuera bera dutela suposatuz" -#: gtk/gtktreeview.c:677 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "Nabarmendutakoa hautatzea" -#: gtk/gtktreeview.c:678 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "Hautapenak erakusleari jarraituko dion ala ez adierazten du" -#: gtk/gtktreeview.c:697 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "Nabarmendutakoa zabaltzea" -#: gtk/gtktreeview.c:698 -msgid "" -"Whether rows should be expanded/collapsed when the pointer moves over them" +#: ../gtk/gtktreeview.c:1113 +msgid "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "Errenkadak zabalduko/tolestuko diren ala ez adierazten du" -#: gtk/gtktreeview.c:712 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "Erakutsi zabaltzaileak" -#: gtk/gtktreeview.c:713 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "Ikuspegiak zabaltzaileak ditu" -#: gtk/gtktreeview.c:727 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "Koska-maila" -#: gtk/gtktreeview.c:728 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "Maila bakoitzaren koska estra" -#: gtk/gtktreeview.c:737 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "Goma-banda" -#: gtk/gtktreeview.c:738 -msgid "" -"Whether to enable selection of multiple items by dragging the mouse pointer" +#: ../gtk/gtktreeview.c:1153 +msgid "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "" "Hainbat elementu hautatzen utziko duen edo ez saguaren erakuslearekin " "arrastatzean" -#: gtk/gtktreeview.c:745 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "Gaitu saretako marrak" -#: gtk/gtktreeview.c:746 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "Saretako marrak zuhaitzaren ikuspegian marraztuko diren edo ez" -#: gtk/gtktreeview.c:754 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "Gaitu zuhaitz-marrak" -#: gtk/gtktreeview.c:755 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "Zuhaitz-marrak zuhaitzaren ikuspegian marraztu edo ez" -#: gtk/gtktreeview.c:763 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "Errenkaden argibideak dauzkan modeloaren zutabea" -#: gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "Bereizle bertikalaren zabalera" -#: gtk/gtktreeview.c:786 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "Gelaxken arteko zuriune bertikala. Zenbaki bikoitia izan behar du" -#: gtk/gtktreeview.c:794 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "Bereizle horizontalaren zabalera" -#: gtk/gtktreeview.c:795 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "Gelaxken arteko zuriune horizontala. Zenbaki bikoitia izan behar du" -#: gtk/gtktreeview.c:803 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "Arauak onartzen dira" -#: gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "Hainbat koloretako errenkadak marraztea onartzen da" -#: gtk/gtktreeview.c:810 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "Koskatu zabaltzaileak" -#: gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "Zabaltzaileei koska jartzen die" -#: gtk/gtktreeview.c:817 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "Errenkada bikoitiaren kolorea" -#: gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "Errenkada bikoitietan erabili beharreko kolorea" -#: gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "Errenkada bakoitien kolorea" -#: gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "Errenkada bakoitietan erabili beharreko kolorea" -#: gtk/gtktreeview.c:831 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "Saretako marren zabalera" -#: gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" msgstr "Zuhaitz ikuspegiko saretako marren zabalera, pixeletan" # -#: gtk/gtktreeview.c:838 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "Zuhaitz-marren zabalera" -#: gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "Zuhaitz ikuspegiko marren zabalera, pixeletan" -#: gtk/gtktreeview.c:845 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "Sareta-marren eredua" -#: gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "Marra etenaren eredua zuhaitz ikuspegiko saretako marrak marrazteko" -#: gtk/gtktreeview.c:852 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "Zuhaitz-marren eredua" -#: gtk/gtktreeview.c:853 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "Marra etenaren eredua zuhaitz ikuspegiko marrak marrazteko" -#: gtk/gtktreeviewcolumn.c:196 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "Zutabea bistaratu behar den ala ez adierazten du" # -#: gtk/gtktreeviewcolumn.c:203 gtk/gtkwindow.c:609 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "Neurriz alda daiteke" -#: gtk/gtktreeviewcolumn.c:204 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "Erabiltzaileak zutabea neurriz alda dezake" -#: gtk/gtktreeviewcolumn.c:212 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "Zutabearen uneko zabalera" -#: gtk/gtktreeviewcolumn.c:221 -msgid "Space which is inserted between cells" -msgstr "Gelaxken artean txertatuko den tartea" - -#: gtk/gtktreeviewcolumn.c:229 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "Neurriak ezartzea" -#: gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "Zutabearen tamainaz aldatzeko modua" # -#: gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "Zabalera finkoa" -#: gtk/gtktreeviewcolumn.c:239 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "Zutabearen uneko zabalera finkoa" -#: gtk/gtktreeviewcolumn.c:248 -msgid "Minimum Width" -msgstr "Gutxieneko zabalera" - -#: gtk/gtktreeviewcolumn.c:249 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "Zutabearen baimendutako gutxieneko zabalera" -#: gtk/gtktreeviewcolumn.c:258 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "Gehienezko zabalera" -#: gtk/gtktreeviewcolumn.c:259 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "Zutabearen baimendutako gehienezko zabalera" -#: gtk/gtktreeviewcolumn.c:269 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "Zutabearen goiburuan azaldu beharreko izenburua" -#: gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "Trepetari esleitutako zabaleraren zati gehigarria lortzen du zutabeak" -#: gtk/gtktreeviewcolumn.c:284 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "Klikagarria" -#: gtk/gtktreeviewcolumn.c:285 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "Goiburua klikagarria den ala ez adierazten du" # -#: gtk/gtktreeviewcolumn.c:293 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "Trepeta" -#: gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "" "Zutabearen goiburuko botoian zutabearen izenburuaren ordez ezarri beharreko " "trepeta " -#: gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "Zutabearen goiburuko testuaren edo trepetaren X lerrokatzea" -#: gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "Zutabea goiburuen inguruan berrantola daitekeen ala ez adierazten du" -#: gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "Ordenaren adierazlea" -#: gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "Ordenaren adierazlea erakutsi behar den ala ez adierazten du" -#: gtk/gtktreeviewcolumn.c:327 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "Ordenazioa" -#: gtk/gtktreeviewcolumn.c:328 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "Adierazleak adierazi behar duen ordenazio-norabidea" -#: gtk/gtktreeviewcolumn.c:344 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "Ordenatu ID zutabea" -#: gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "" "Zutabe honek (ordenatzeko hautatzean) ordenatzen duen ID zutabearen ordena " "logikoa" -#: gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" -msgstr "" -"Menuei menu-elementu askagarriak gehitu behar zaizkien ala ez adierazten du" +msgstr "Menuei menu-elementu askagarriak gehitu behar zaizkien ala ez adierazten du" -#: gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Batutako UI definizioa" -#: gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "Batutako UI azaltzen duen XML katea" -#: gtk/gtkviewport.c:143 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" -"Leihatila honen posizio horizontalaren balioak zehazten dituen GtkAdjustment" - -#: gtk/gtkviewport.c:151 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" -"Leihatila honen posizio bertikalaren balioak zehazten dituen GtkAdjustment" - -#: gtk/gtkviewport.c:159 +#: ../gtk/gtkviewport.c:154 msgid "Determines how the shadowed box around the viewport is drawn" -msgstr "" -"Leihatilaren inguruko lauki itzaleztatua nola marrazten den zehazten du" +msgstr "Leihatilaren inguruko lauki itzaleztatua nola marrazten den zehazten du" + +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "Erabili ikono sinbolikoak" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "Ikono sinbolikoak erabiliko diren edo ez adierazten du" # -#: gtk/gtkwidget.c:714 +#: ../gtk/gtkwidget.c:901 msgid "Widget name" msgstr "Trepeta-izena" -#: gtk/gtkwidget.c:715 +#: ../gtk/gtkwidget.c:902 msgid "The name of the widget" msgstr "Trepetaren izena" # -#: gtk/gtkwidget.c:721 +#: ../gtk/gtkwidget.c:908 msgid "Parent widget" msgstr "Trepeta gurasoa" -#: gtk/gtkwidget.c:722 +#: ../gtk/gtkwidget.c:909 msgid "The parent widget of this widget. Must be a Container widget" msgstr "Trepeta honen trepeta gurasoa. Edukiontzi-trepeta izan behar du" -#: gtk/gtkwidget.c:729 +#: ../gtk/gtkwidget.c:916 msgid "Width request" msgstr "Zabalera-eskaera" -#: gtk/gtkwidget.c:730 +#: ../gtk/gtkwidget.c:917 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6980,11 +7258,11 @@ msgstr "" "Gainidatzi trepetaren zabalera-eskaera, edo -1 eskaera naturala erabili " "behar bada" -#: gtk/gtkwidget.c:738 +#: ../gtk/gtkwidget.c:925 msgid "Height request" msgstr "Altuera-eskaera" -#: gtk/gtkwidget.c:739 +#: ../gtk/gtkwidget.c:926 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6992,242 +7270,262 @@ msgstr "" "Gainidatzi trepetaren altuera-eskaera, edo -1 eskaera naturala erabili behar " "bada" -#: gtk/gtkwidget.c:748 +#: ../gtk/gtkwidget.c:935 msgid "Whether the widget is visible" msgstr "Trepeta ikusgai dagoen ala ez adierazten du" -#: gtk/gtkwidget.c:755 +#: ../gtk/gtkwidget.c:942 msgid "Whether the widget responds to input" msgstr "Trepetak sarrerari erantzuten dion ala ez adierazten du" -#: gtk/gtkwidget.c:761 +#: ../gtk/gtkwidget.c:948 msgid "Application paintable" msgstr "Aplikazio margogarria" -#: gtk/gtkwidget.c:762 +#: ../gtk/gtkwidget.c:949 msgid "Whether the application will paint directly on the widget" msgstr "Aplikazioak zuzenean trepetan margotuko duen ala ez adierazten du" -#: gtk/gtkwidget.c:768 +#: ../gtk/gtkwidget.c:955 msgid "Can focus" msgstr "Enfoka dezake" -#: gtk/gtkwidget.c:769 +#: ../gtk/gtkwidget.c:956 msgid "Whether the widget can accept the input focus" msgstr "Trepetak sarrera-fokua onar dezakeen ala ez adierazten du" -#: gtk/gtkwidget.c:775 +#: ../gtk/gtkwidget.c:962 msgid "Has focus" msgstr "Fokua du" -#: gtk/gtkwidget.c:776 +#: ../gtk/gtkwidget.c:963 msgid "Whether the widget has the input focus" msgstr "Trepetak sarrera-fokua duen ala ez adierazten du" -#: gtk/gtkwidget.c:782 +#: ../gtk/gtkwidget.c:969 msgid "Is focus" msgstr "Fokua da" -#: gtk/gtkwidget.c:783 +#: ../gtk/gtkwidget.c:970 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Trepeta goi-mailakoaren barruan foku-trepeta den ala ez adierazten du" # -#: gtk/gtkwidget.c:789 +#: ../gtk/gtkwidget.c:976 msgid "Can default" msgstr "Lehenetsia izan daiteke" -#: gtk/gtkwidget.c:790 +#: ../gtk/gtkwidget.c:977 msgid "Whether the widget can be the default widget" msgstr "Trepeta trepeta lehenetsia izan daitekeen ala ez adierazten du" # -#: gtk/gtkwidget.c:796 +#: ../gtk/gtkwidget.c:983 msgid "Has default" msgstr "Lehenetsia dauka" -#: gtk/gtkwidget.c:797 +#: ../gtk/gtkwidget.c:984 msgid "Whether the widget is the default widget" msgstr "Trepeta trepeta lehenetsia den ala ez adierazten du" -#: gtk/gtkwidget.c:803 +#: ../gtk/gtkwidget.c:990 msgid "Receives default" msgstr "Lehenetsia jasotzen du" -#: gtk/gtkwidget.c:804 +#: ../gtk/gtkwidget.c:991 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "TRUE (egia) bada, trepetak ekintza lehenetsia jasoko du enfokatutakoan" -#: gtk/gtkwidget.c:810 +#: ../gtk/gtkwidget.c:997 msgid "Composite child" msgstr "Ume konposatua" -#: gtk/gtkwidget.c:811 +#: ../gtk/gtkwidget.c:998 msgid "Whether the widget is part of a composite widget" msgstr "Trepeta trepeta konposatu baten parte den ala ez adierazten du" -#: gtk/gtkwidget.c:817 +#: ../gtk/gtkwidget.c:1004 msgid "Style" msgstr "Estiloa" -#: gtk/gtkwidget.c:818 +#: ../gtk/gtkwidget.c:1005 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" -msgstr "" -"Trepetaren estiloa, zein itxura edukiko duen azaltzen duena (koloreak, etab.)" +msgstr "Trepetaren estiloa, zein itxura edukiko duen azaltzen duena (koloreak, etab.)" -#: gtk/gtkwidget.c:824 +#: ../gtk/gtkwidget.c:1011 msgid "Events" msgstr "Gertaerak" -#: gtk/gtkwidget.c:825 +#: ../gtk/gtkwidget.c:1012 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "" "Trepeta honek zein motatako GdkEvents eskuratuko duen erabakitzen duen " "gertaera-maskara" -#: gtk/gtkwidget.c:832 -msgid "Extension events" -msgstr "Luzapen-gertaerak" - -#: gtk/gtkwidget.c:833 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "" -"Trepeta honek zein motatako luzapen-gertaerak eskuratuko dituen erabakitzen " -"duen maskara" - -#: gtk/gtkwidget.c:840 +#: ../gtk/gtkwidget.c:1019 msgid "No show all" msgstr "Ez erakutsi dena" -#: gtk/gtkwidget.c:841 +#: ../gtk/gtkwidget.c:1020 msgid "Whether gtk_widget_show_all() should not affect this widget" -msgstr "" -"gtk_widget_show_all()-ek trepeta honi ez dion eragingo ala bai adierazten du" +msgstr "gtk_widget_show_all()-ek trepeta honi ez dion eragingo ala bai adierazten du" -#: gtk/gtkwidget.c:864 +#: ../gtk/gtkwidget.c:1043 msgid "Whether this widget has a tooltip" msgstr "Trepetak argibidea duen edo ez" # -#: gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:1099 msgid "Window" msgstr "Leihoa" -#: gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:1100 msgid "The widget's window if it is realized" msgstr "Trepetaren leihoa egiten bada" -#: gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:1114 msgid "Double Buffered" msgstr "Buffer bikoitza" -#: gtk/gtkwidget.c:936 -#, fuzzy +#: ../gtk/gtkwidget.c:1115 msgid "Whether the widget is double buffered" msgstr "Trepeta buffer bikoitzarekin dagoen edo ez" -#: gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:1130 msgid "How to position in extra horizontal space" -msgstr "" +msgstr "Nola kokatu leku horizontal gehigarrian" -#: gtk/gtkwidget.c:967 +#: ../gtk/gtkwidget.c:1146 msgid "How to position in extra vertical space" -msgstr "" +msgstr "Nola kokatu leku bertikal gehigarrian" -#: gtk/gtkwidget.c:986 -#, fuzzy +#: ../gtk/gtkwidget.c:1165 msgid "Margin on Left" -msgstr "Marjina" +msgstr "Marjina ezkerrean" -#: gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1166 msgid "Pixels of extra space on the left side" -msgstr "" +msgstr "Leku gehigarriaren pixelak ezkerreko alboan" -#: gtk/gtkwidget.c:1007 +#: ../gtk/gtkwidget.c:1186 msgid "Margin on Right" -msgstr "" +msgstr "Marjina eskuinean" -#: gtk/gtkwidget.c:1008 -#, fuzzy +#: ../gtk/gtkwidget.c:1187 msgid "Pixels of extra space on the right side" -msgstr "Paragrafoen gaineko zuriuneen pixelak" +msgstr "Eskuin aldeko tarte gehigarriaren pixelak" -#: gtk/gtkwidget.c:1028 -#, fuzzy +#: ../gtk/gtkwidget.c:1207 msgid "Margin on Top" -msgstr "Marjina" +msgstr "Marjina goian" -#: gtk/gtkwidget.c:1029 -#, fuzzy +#: ../gtk/gtkwidget.c:1208 msgid "Pixels of extra space on the top side" -msgstr "Paragrafoen gaineko zuriuneen pixelak" +msgstr "Goi aldeko tarte gehigarriaren pixelak" -#: gtk/gtkwidget.c:1049 +#: ../gtk/gtkwidget.c:1228 msgid "Margin on Bottom" -msgstr "" +msgstr "Marjina behean" -#: gtk/gtkwidget.c:1050 +#: ../gtk/gtkwidget.c:1229 msgid "Pixels of extra space on the bottom side" -msgstr "" +msgstr "Leku gehigarriaren pixelak beheko alboan" -#: gtk/gtkwidget.c:1067 -#, fuzzy +#: ../gtk/gtkwidget.c:1246 msgid "All Margins" -msgstr "Marjina" +msgstr "Marjina guztiak" -#: gtk/gtkwidget.c:1068 +#: ../gtk/gtkwidget.c:1247 msgid "Pixels of extra space on all four sides" -msgstr "" +msgstr "Leku gehigarriaren pixelak lau alboetan" -#: gtk/gtkwidget.c:2741 +#: ../gtk/gtkwidget.c:1280 +msgid "Horizontal Expand" +msgstr "Betegarri horizontala" + +#: ../gtk/gtkwidget.c:1281 +msgid "Whether widget wants more horizontal space" +msgstr "Trepetak tarte horizontal gehiago nahi duen edo ez" + +#: ../gtk/gtkwidget.c:1295 +msgid "Horizontal Expand Set" +msgstr "Betegarri horizontala ezarrita" + +#: ../gtk/gtkwidget.c:1296 +msgid "Whether to use the hexpand property" +msgstr "'hexpand' (betegarri horizontala) propietatea erabiliko den edo ez" + +#: ../gtk/gtkwidget.c:1310 +msgid "Vertical Expand" +msgstr "Betegarri bertikala" + +#: ../gtk/gtkwidget.c:1311 +msgid "Whether widget wants more vertical space" +msgstr "Trepetak tarte bertikal gehiago nahi duen edo ez" + +#: ../gtk/gtkwidget.c:1325 +msgid "Vertical Expand Set" +msgstr "Betegarri bertikala ezarrita" + +#: ../gtk/gtkwidget.c:1326 +msgid "Whether to use the vexpand property" +msgstr "'vexpand' (betegarri bertikala) propietatea erabiliko den edo ez" + +#: ../gtk/gtkwidget.c:1340 +msgid "Expand Both" +msgstr "Zabaldu biak" + +#: ../gtk/gtkwidget.c:1341 +msgid "Whether widget wants to expand in both directions" +msgstr "Trepetak bi norabideetan zabaltzea nahi duen edo ez" + +#: ../gtk/gtkwidget.c:3000 msgid "Interior Focus" msgstr "Barneko fokua" -#: gtk/gtkwidget.c:2742 +#: ../gtk/gtkwidget.c:3001 msgid "Whether to draw the focus indicator inside widgets" -msgstr "" -"Foku-adierazlea trepeten barruan marraztu behar den ala ez adierazten du" +msgstr "Foku-adierazlea trepeten barruan marraztu behar den ala ez adierazten du" -#: gtk/gtkwidget.c:2748 +#: ../gtk/gtkwidget.c:3007 msgid "Focus linewidth" msgstr "Enfokatu lerroaren zabalera" -#: gtk/gtkwidget.c:2749 +#: ../gtk/gtkwidget.c:3008 msgid "Width, in pixels, of the focus indicator line" msgstr "Foku-adierazlearen lerroaren zabalera, pixeletan" -#: gtk/gtkwidget.c:2755 +#: ../gtk/gtkwidget.c:3014 msgid "Focus line dash pattern" msgstr "Enfokatu marra etenaren eredua" -#: gtk/gtkwidget.c:2756 +#: ../gtk/gtkwidget.c:3015 msgid "Dash pattern used to draw the focus indicator" msgstr "Marra etenaren eredua foku-adierazlea marrazteko erabiltzen da" -#: gtk/gtkwidget.c:2761 +#: ../gtk/gtkwidget.c:3020 msgid "Focus padding" msgstr "Fokuaren tarte betegarria" -#: gtk/gtkwidget.c:2762 +#: ../gtk/gtkwidget.c:3021 msgid "Width, in pixels, between focus indicator and the widget 'box'" -msgstr "" -"Foku-adierazlearen eta trepetako 'laukia'ren arteko zabalera, pixeletan" +msgstr "Foku-adierazlearen eta trepetako 'laukia'ren arteko zabalera, pixeletan" -#: gtk/gtkwidget.c:2767 +#: ../gtk/gtkwidget.c:3026 msgid "Cursor color" msgstr "Kurtsorearen kolorea" -#: gtk/gtkwidget.c:2768 +#: ../gtk/gtkwidget.c:3027 msgid "Color with which to draw insertion cursor" msgstr "Txertatze-kurtsorea marrazteko kolorea" -#: gtk/gtkwidget.c:2773 +#: ../gtk/gtkwidget.c:3032 msgid "Secondary cursor color" msgstr "Kurtsorearen bigarren mailako kolorea" -#: gtk/gtkwidget.c:2774 +#: ../gtk/gtkwidget.c:3033 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -7235,46 +7533,45 @@ msgstr "" "Eskuinetik ezkerrera eta ezkerretik eskuinera doan testu nahasia editatzean, " "bigarren txertatze-kurtsorea marrazteko kolorea" -#: gtk/gtkwidget.c:2779 +#: ../gtk/gtkwidget.c:3038 msgid "Cursor line aspect ratio" msgstr "Kurtsore-lerroaren aspektu-erlazioa" -#: gtk/gtkwidget.c:2780 +#: ../gtk/gtkwidget.c:3039 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Txertatze-kurtsorea marrazteko aspektu-erlazioa" -#: gtk/gtkwidget.c:2786 -#, fuzzy +#: ../gtk/gtkwidget.c:3045 msgid "Window dragging" -msgstr "Leihoaren kokalekua" +msgstr "Leihoa arrastatzea" -#: gtk/gtkwidget.c:2787 +#: ../gtk/gtkwidget.c:3046 msgid "Whether windows can be dragged by clicking on empty areas" -msgstr "" +msgstr "Area hutsetan klik eginez leihoak arrasta daitekeen edo ez" # -#: gtk/gtkwidget.c:2800 +#: ../gtk/gtkwidget.c:3059 msgid "Unvisited Link Color" msgstr "Bisitatu gabeko estekaren kolorea" -#: gtk/gtkwidget.c:2801 +#: ../gtk/gtkwidget.c:3060 msgid "Color of unvisited links" msgstr "Bisitatu ez diren esteken kolorea" # -#: gtk/gtkwidget.c:2814 +#: ../gtk/gtkwidget.c:3073 msgid "Visited Link Color" msgstr "Bisitatutako esteken kolorea" -#: gtk/gtkwidget.c:2815 +#: ../gtk/gtkwidget.c:3074 msgid "Color of visited links" msgstr "Bisitatu diren estekan kolorea" -#: gtk/gtkwidget.c:2829 +#: ../gtk/gtkwidget.c:3088 msgid "Wide Separators" msgstr "Bereizle zabalak" -#: gtk/gtkwidget.c:2830 +#: ../gtk/gtkwidget.c:3089 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" @@ -7282,86 +7579,85 @@ msgstr "" "Bereizleen zabalera konfiguragarriak diren edo ez, eta marra erabili " "beharrean kutxa bat erabili marraztu behar diren edo ez" -#: gtk/gtkwidget.c:2844 +#: ../gtk/gtkwidget.c:3103 msgid "Separator Width" msgstr "Bereizlearen zabalera" -#: gtk/gtkwidget.c:2845 +#: ../gtk/gtkwidget.c:3104 msgid "The width of separators if wide-separators is TRUE" msgstr "Bereizleen zabalera 'bereizle zabalak' EGIA gisa ezarrita egonez gero" -#: gtk/gtkwidget.c:2859 +#: ../gtk/gtkwidget.c:3118 msgid "Separator Height" msgstr "Bereizlearen altuera" -#: gtk/gtkwidget.c:2860 +#: ../gtk/gtkwidget.c:3119 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "Bereizleen altuera 'bereizle zabalak' EGIA gisa ezarrita egonez gero" # -#: gtk/gtkwidget.c:2874 +#: ../gtk/gtkwidget.c:3133 msgid "Horizontal Scroll Arrow Length" msgstr "Korritze horizontaleko geziaren luzera" -#: gtk/gtkwidget.c:2875 +#: ../gtk/gtkwidget.c:3134 msgid "The length of horizontal scroll arrows" msgstr "Korritze horizontaleko gezien luzera" -#: gtk/gtkwidget.c:2889 +#: ../gtk/gtkwidget.c:3148 msgid "Vertical Scroll Arrow Length" msgstr "Korritze bertikaleko geziaren luzera" -#: gtk/gtkwidget.c:2890 +#: ../gtk/gtkwidget.c:3149 msgid "The length of vertical scroll arrows" msgstr "Korritze bertikaleko gezien luzera" # -#: gtk/gtkwindow.c:567 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "Leiho-mota" -#: gtk/gtkwindow.c:568 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "Leihoa zein motatakoa den" # -#: gtk/gtkwindow.c:576 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "Leihoaren titulua" -#: gtk/gtkwindow.c:577 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "Leihoaren izenburua" # -#: gtk/gtkwindow.c:584 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "Leihoaren funtzioa" -#: gtk/gtkwindow.c:585 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" -msgstr "" -"Saio bat leheneratzean leihorako erabili beharreko identifikatzaile bakarra" +msgstr "Saio bat leheneratzean leihorako erabili beharreko identifikatzaile bakarra" -#: gtk/gtkwindow.c:601 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "Abioko IDa" -#: gtk/gtkwindow.c:602 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "" "Abioko jakinarazpenak erabiltzen duen leihoaren abioko identifikatzaile " "bakarra" -#: gtk/gtkwindow.c:610 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "TRUE (egia) bada, erabiltzaileek leihoaren tamaina alda dezakete" -#: gtk/gtkwindow.c:617 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "Modala" -#: gtk/gtkwindow.c:618 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" @@ -7369,80 +7665,77 @@ msgstr "" "TRUE (egia) bada, leihoa modala da (beste leihoak ezin dira erabili hau " "gainean dagoen bitartean)" -#: gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "Leihoaren kokalekua" -#: gtk/gtkwindow.c:626 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "Leihoaren hasierako kokalekua" -#: gtk/gtkwindow.c:634 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "Zabalera lehenetsia" -#: gtk/gtkwindow.c:635 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" -msgstr "" -"Leihoaren zabalera lehenetsia, hasieran leihoa erakustean erabiltzen dena" +msgstr "Leihoaren zabalera lehenetsia, hasieran leihoa erakustean erabiltzen dena" -#: gtk/gtkwindow.c:644 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "Altuera lehenetsia" -#: gtk/gtkwindow.c:645 -msgid "" -"The default height of the window, used when initially showing the window" -msgstr "" -"Leihoaren altuera lehenetsia, hasieran leihoa erakustean erabiltzen dena" +#: ../gtk/gtkwindow.c:681 +msgid "The default height of the window, used when initially showing the window" +msgstr "Leihoaren altuera lehenetsia, hasieran leihoa erakustean erabiltzen dena" -#: gtk/gtkwindow.c:654 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "Deuseztatu gurasoarekin" -#: gtk/gtkwindow.c:655 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "" "Gurasoa deuseztatzean, leiho hau ere deuseztatu behar den ala ez adierazten " "du" -#: gtk/gtkwindow.c:663 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "Leiho honen ikonoa" -#: gtk/gtkwindow.c:669 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "Mnemoteknikoak ikusgai" -#: gtk/gtkwindow.c:670 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "Leiho honetan mnemoteknikoak ikusgai dauden edo ez adierazten du" -#: gtk/gtkwindow.c:686 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "Leiho honen ikono-gaiaren izena" -#: gtk/gtkwindow.c:701 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "Aktibo dago" -#: gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "Goi-maila unean aktibo dagoen leihoa den ala ez adierazten du" -#: gtk/gtkwindow.c:709 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "Fokua goi-mailan" -#: gtk/gtkwindow.c:710 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "Sarrera-fokua GtkWindow honen barruan dagoen ala ez adierazten du" -#: gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "Motari buruzko arrastoa" -#: gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7450,495 +7743,116 @@ msgstr "" "Mahai-gaineko inguruneari hau zein leiho-mota den eta nola tratatu behar den " "ulertzen laguntzeko informazio laburra." -#: gtk/gtkwindow.c:726 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "Saltatu ataza-barra" -#: gtk/gtkwindow.c:727 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "TRUE (egia) leihoak ataza-barran egon behar ez badu." -#: gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "Saltatu orrikatzailea" -#: gtk/gtkwindow.c:735 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "TRUE (egia) leihoak orrikatzailean egon behar ez badu." -#: gtk/gtkwindow.c:742 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "Berehalakoa" -#: gtk/gtkwindow.c:743 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "TRUE (egia) leihoak erabiltzailearen atentzioa erakarri behar badu." -#: gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "Onartu fokua" -#: gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "TRUE (egia) leihoak sarrera-fokua jaso behar badu." -#: gtk/gtkwindow.c:772 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "Fokua klik egindakoan" -#: gtk/gtkwindow.c:773 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "TRUE (egia) leihoak sarrera-fokua jaso behar badu." -#: gtk/gtkwindow.c:787 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "Apainduta" -#: gtk/gtkwindow.c:788 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "Leihoa leiho-kudeatzaileak apaindu behar lukeen ala ez adierazten du" # -#: gtk/gtkwindow.c:802 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "Ezabagarria" -#: gtk/gtkwindow.c:803 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "Leiho-markoak ixteko botoia eduki behar duen edo ez" -#: gtk/gtkwindow.c:819 +#: ../gtk/gtkwindow.c:858 +msgid "Resize grip" +msgstr "Tamainaz aldatzeko heldulekua" + +#: ../gtk/gtkwindow.c:859 +msgid "Specifies whether the window should have a resize grip" +msgstr "Leihoak tamainaz aldatzeko heldulekua eduki behar duen edo ez" + +#: ../gtk/gtkwindow.c:873 +msgid "Resize grip is visible" +msgstr "Tamaina aldatzeko heldulekua ikusgai dago" + +#: ../gtk/gtkwindow.c:874 +msgid "Specifies whether the window's resize grip is visible." +msgstr "Leihoa tamainaz aldatzeko heldulekua ikusgai dagoen ala ez zehazten du." + +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "Grabitatea" -#: gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "Leihoaren leiho-grabitatea" -#: gtk/gtkwindow.c:837 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "Leihoaren trantsizioa" -#: gtk/gtkwindow.c:838 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "Elkarrizketa-koadroaren gurasoaren trantsizioa" -#: gtk/gtkwindow.c:853 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "Leihoaren opakutasuna" -#: gtk/gtkwindow.c:854 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "Leihoaren opakutasuna, 0 eta 1 artekoa" -#: modules/input/gtkimcontextxim.c:334 -msgid "IM Preedit style" -msgstr "IM aurreedizioko estiloa" +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 +msgid "Width of resize grip" +msgstr "Tamaina aldatzeko heldulekuaren zabalera" -#: modules/input/gtkimcontextxim.c:335 -msgid "How to draw the input method preedit string" -msgstr "Aurreedizioko katearen sarrera-metodoa nola marraztu" +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 +msgid "Height of resize grip" +msgstr "Tamainaz aldatzeko heldulekuaren altuera" -#: modules/input/gtkimcontextxim.c:343 -msgid "IM Status style" -msgstr "IM egoeraren estiloa" +#: ../gtk/gtkwindow.c:961 +msgid "GtkApplication" +msgstr "GtkApplication" -#: modules/input/gtkimcontextxim.c:344 -msgid "How to draw the input method statusbar" -msgstr "Egoera-barraren sarrera-metodoa nola marraztu" +#: ../gtk/gtkwindow.c:962 +msgid "The GtkApplication for the window" +msgstr "Leihoaren GtkApplication" -#~ msgid "Loop" -#~ msgstr "Begizta" - -#~ msgid "Whether the animation should loop when it reaches the end" -#~ msgstr "Animazioa begizta batean errepikatuko den amaierara iristean edo ez" - -#~ msgid "Number of Channels" -#~ msgstr "Kanal-kopurua" - -#~ msgid "The number of samples per pixel" -#~ msgstr "Pixel bakoitzeko lagin-kopurua" - -#~ msgid "Colorspace" -#~ msgstr "Kolore-eskala" - -#~ msgid "The colorspace in which the samples are interpreted" -#~ msgstr "Laginak interpretatzen diren kolore-eskala" - -#~ msgid "Has Alpha" -#~ msgstr "Alfa dauka" - -#~ msgid "Whether the pixbuf has an alpha channel" -#~ msgstr "pixbuf-ek alfa kanala duen ala ez adierazten du" - -#~ msgid "Bits per Sample" -#~ msgstr "Lagin bakoitzeko bitak" - -#~ msgid "The number of bits per sample" -#~ msgstr "Lagin bakoitzeko bit-kopurua" - -#~ msgid "The number of columns of the pixbuf" -#~ msgstr "pixbuf-eko zutabe-kopurua" - -#~ msgid "The number of rows of the pixbuf" -#~ msgstr "pixbuf-eko errenkada-kopurua" - -#~ msgid "Rowstride" -#~ msgstr "Errenkada-luzera" - -#~ msgid "" -#~ "The number of bytes between the start of a row and the start of the next " -#~ "row" -#~ msgstr "" -#~ "Errenkada baten hasieratik hurrengo errenkadaren hasierara arte dagoen " -#~ "byte-kopurua" - -#~ msgid "Pixels" -#~ msgstr "Pixeletan" - -#~ msgid "A pointer to the pixel data of the pixbuf" -#~ msgstr "pixbuf-eko pixel-datuetarako erakuslea" - -#~ msgid "the GdkScreen for the renderer" -#~ msgstr "GdkScreen errendatzailearentzako" - -#~ msgid "The adjustment that holds the value of the spinbutton." -#~ msgstr "Biratze-botoiaren balioa duen doitzea." - -#~ msgid "Has separator" -#~ msgstr "Bereizlea dauka" - -#~ msgid "The dialog has a separator bar above its buttons" -#~ msgstr "Elkarrizketa-koadroak barra bereizlea du botoien gainean" - -#~ msgid "Invisible char set" -#~ msgstr "Karaktere-multzo ikusezina" - -#~ msgid "State Hint" -#~ msgstr "Egoeraren iradokizuna" - -#~ msgid "Whether to pass a proper state when drawing shadow or background" -#~ msgstr "Dagokion egoera pasatu itzala edo atzeko planoa marraztean ala ez" - -#~ msgid "The GdkFont that is currently selected" -#~ msgstr "GdkFont jadanik hautatuta dago" - -#~ msgid "Deprecated property, use shadow_type instead" -#~ msgstr "Propietate zaharkitua, erabili itzal-mota horren ordez" - -# -#~ msgid "Pixmap" -#~ msgstr "Pixmap" - -#~ msgid "A GdkPixmap to display" -#~ msgstr "Bistaratu beharreko GdkPixmap-a" - -#~ msgid "A GdkImage to display" -#~ msgstr "Bistaratu beharreko GdkImage-a" - -#~ msgid "Mask" -#~ msgstr "Maskaratu" - -#~ msgid "Mask bitmap to use with GdkImage or GdkPixmap" -#~ msgstr "" -#~ "Maskaratu GdkImage-rekin edo GdkPixmap-arekin erabili beharreko bitmap-a" - -#~ msgid "Use separator" -#~ msgstr "Erabili bereizlea" - -#~ msgid "" -#~ "Whether to put a separator between the message dialog's text and the " -#~ "buttons" -#~ msgstr "" -#~ "Mezuaren elkarrizketa-koadroaren testuaren eta botoien artean bereizlea " -#~ "jarri behar den ala ez adierazten du" - -#~ msgid "Activity mode" -#~ msgstr "Jarduera-modua" - -#~ msgid "" -#~ "If TRUE, the GtkProgress is in activity mode, meaning that it signals " -#~ "something is happening, but not how much of the activity is finished. " -#~ "This is used when you're doing something but don't know how long it will " -#~ "take." -#~ msgstr "" -#~ "EGIA bada, GtkProgress jarduera-moduan egongo da; horrek esan nahi du " -#~ "zerbait gertatzen ari dela adieraziko duela, baina ez jarduera " -#~ "zenbateraino dagoen bukatuta. Hori erabiltzen da zerbait egiten ari " -#~ "zarenean eta horretan zenbat denbora emango duzun ez dakizunean." - -#~ msgid "Draw slider ACTIVE during drag" -#~ msgstr "Marraztu graduatzaile AKTIBOA arrastatzean" - -#~ msgid "" -#~ "With this option set to TRUE, sliders will be drawn ACTIVE and with " -#~ "shadow IN while they are dragged" -#~ msgstr "" -#~ "Aukera hau EGIA balioa edukiz gero graduatzaileak AKTIBOKI marraztu " -#~ "egingo dira bere itzala BARRUAN duela arrastatzen diren heinean" - -#~ msgid "Trough Side Details" -#~ msgstr "Kanalaren alboko xehetasunak" - -#~ msgid "" -#~ "When TRUE, the parts of the trough on the two sides of the slider are " -#~ "drawn with different details" -#~ msgstr "" -#~ "EGIA denean, kanalaren zatiak graduatzailearen bi alboetan xehetasun " -#~ "desberdinekin marrazten dira" - -#~ msgid "" -#~ "The maximum number of items to be returned by gtk_recent_manager_get_items" -#~ "()" -#~ msgstr "" -#~ "gtk_recent_manager_get_items() funtzioak itzulitako gehienezko elementu-" -#~ "kopurua" - -#~ msgid "Blinking" -#~ msgstr "Keinukaria" - -#~ msgid "Whether or not the status icon is blinking" -#~ msgstr "Egoerako ikonoa keinuka ari den edo ez" - -#~ msgid "Background stipple mask" -#~ msgstr "Atzeko planoaren maskara puntukatua" - -#~ msgid "Bitmap to use as a mask when drawing the text background" -#~ msgstr "" -#~ "Testuaren atzeko planoa marraztean maskara gisa erabili beharreko bit-mapa" - -#~ msgid "Foreground stipple mask" -#~ msgstr "Aurreko planoaren maskara puntukatua" - -#~ msgid "Bitmap to use as a mask when drawing the text foreground" -#~ msgstr "" -#~ "Testuaren aurreko planoa marraztean maskara gisa erabili beharreko bit-" -#~ "mapa" - -#~ msgid "Background stipple set" -#~ msgstr "Atzeko planoaren puntuen ezarpena" - -#~ msgid "Whether this tag affects the background stipple" -#~ msgstr "" -#~ "Etiketa honek atzeko planoaren puntuei eragiten dien ala ez adierazten du" - -#~ msgid "Foreground stipple set" -#~ msgstr "Aurreko planoaren puntuen ezarpena" - -#~ msgid "Whether this tag affects the foreground stipple" -#~ msgstr "" -#~ "Etiketa honek aurreko planoaren puntuei eragiten dien ala ez adierazten du" - -#~ msgid "Row Ending details" -#~ msgstr "Errenkada amaierako xehetasunak" - -#~ msgid "Enable extended row background theming" -#~ msgstr "Gaitu zabaldutako errenkaden atzeko planoko gaia" - -#~ msgid "Draw Border" -#~ msgstr "Marraztu ertza" - -#~ msgid "Size of areas outside the widget's allocation to draw" -#~ msgstr "Trepetaren marrazteko gunearen kanpoko arearen tamaina" - -#~ msgid "Allow Shrink" -#~ msgstr "Baimendu uzkurtzea" - -#~ msgid "" -#~ "If TRUE, the window has no mimimum size. Setting this to TRUE is 99% of " -#~ "the time a bad idea" -#~ msgstr "" -#~ "TRUE (egia) bada, leihoak ez du gutxieneko tamainarik. Hori TRUE (egia) " -#~ "jartzea ia beti ideia txarra izaten da" - -#~ msgid "Allow Grow" -#~ msgstr "Baimendu handitzea" - -#~ msgid "If TRUE, users can expand the window beyond its minimum size" -#~ msgstr "" -#~ "TRUE (egia) bada, erabiltzaileek leihoa gutxieneko tamainatik gora zabal " -#~ "dezakete" - -#~ msgid "Enable arrow keys" -#~ msgstr "Gaitu gezi-teklak" - -#~ msgid "Whether the arrow keys move through the list of items" -#~ msgstr "" -#~ "Gezi-teklak elementu-zerrendan zehar mugitzen diren ala ez adierazten du" - -#~ msgid "Always enable arrows" -#~ msgstr "Gaitu beti geziak" - -#~ msgid "Obsolete property, ignored" -#~ msgstr "Propietate zaharkitua, ez ikusi egin" - -#~ msgid "Case sensitive" -#~ msgstr "Maiuskula/minuskula" - -#~ msgid "Whether list item matching is case sensitive" -#~ msgstr "" -#~ "Bat datozen elementuen zerrendan maiuskulak eta minuskulak kontuan " -#~ "hartzen dituen adierazten du" - -#~ msgid "Allow empty" -#~ msgstr "Onartu hutsik" - -#~ msgid "Whether an empty value may be entered in this field" -#~ msgstr "Balio huts bat eremu honetan sar daitekeen ala ez adierazten du" - -#~ msgid "Value in list" -#~ msgstr "Zerrendako balioa" - -#~ msgid "Whether entered values must already be present in the list" -#~ msgstr "Sartutako balioek zerrendan egon behar duten ala ez adierazten du" - -#~ msgid "Is this curve linear, spline interpolated, or free-form" -#~ msgstr "Kurba hau lineala, spline-rekin interpolatua edo forma librekoa den" - -#~ msgid "Minimum X" -#~ msgstr "X minimoa" - -#~ msgid "Minimum possible value for X" -#~ msgstr "Xek izan dezakeen balio minimoa" - -#~ msgid "Maximum X" -#~ msgstr "X maximoa" - -#~ msgid "Maximum possible X value" -#~ msgstr "Xek izan dezakeen balio maximoa" - -#~ msgid "Minimum Y" -#~ msgstr "Y minimoa" - -#~ msgid "Minimum possible value for Y" -#~ msgstr "Yk izan dezakeen balio minimoa" - -#~ msgid "Maximum Y" -#~ msgstr "Y maximoa" - -#~ msgid "Maximum possible value for Y" -#~ msgstr "Yk izan dezakeen balio maximoa" - -#~ msgid "File System Backend" -#~ msgstr "Fitxategi-sistemaren motorra" - -#~ msgid "Name of file system backend to use" -#~ msgstr "Erabili beharreko fitxategi-sistemaren motorraren izena" - -#~ msgid "The currently selected filename" -#~ msgstr "Unean hautatutako fitxategi-izena" - -#~ msgid "Show file operations" -#~ msgstr "Erakutsi fitxategi-eragiketak" - -#~ msgid "Whether buttons for creating/manipulating files should be displayed" -#~ msgstr "" -#~ "Fitxategiak sortzeko/manipulatzeko botoiak bistaratu behar diren ala ez " -#~ "adierazten du" - -#~ msgid "Tab Border" -#~ msgstr "Fitxaren ertza" - -#~ msgid "Width of the border around the tab labels" -#~ msgstr "Fitxa-etiketen inguruko ertzaren zabalera" - -# -#~ msgid "Horizontal Tab Border" -#~ msgstr "Fitxaren ertz horizontala" - -#~ msgid "Width of the horizontal border of tab labels" -#~ msgstr "Fitxa-etiketen ertz horizontalaren zabalera" - -#~ msgid "Vertical Tab Border" -#~ msgstr "Fitxaren ertz bertikala" - -#~ msgid "Width of the vertical border of tab labels" -#~ msgstr "Fitxa-etiketen ertz bertikalaren zabalera" - -#~ msgid "Whether tabs should have homogeneous sizes" -#~ msgstr "Fitxek tamaina homogeneoa eduki behar duten ala ez adierazten du" - -#~ msgid "Group ID for tabs drag and drop" -#~ msgstr "Taldearen IDa fitxak arrastatu eta jaregiteko" - -#~ msgid "User Data" -#~ msgstr "Erabiltzailearen datuak" - -#~ msgid "Anonymous User Data Pointer" -#~ msgstr "Erabiltzaile anonimoaren datuen erakuslea" - -#~ msgid "The menu of options" -#~ msgstr "Aukeren menua" - -#~ msgid "Size of dropdown indicator" -#~ msgstr "Goitibeherako adierazlearen tamaina" - -#~ msgid "Spacing around indicator" -#~ msgstr "Adierazlearen inguruko tartea" - -#~ msgid "" -#~ "Whether the preview widget should take up the entire space it is allocated" -#~ msgstr "" -#~ "Aurrebistako trepetak esleitu zaion leku guztia hartu behar duen ala ez " -#~ "adierazten du" - -#~ msgid "The GtkAdjustment connected to the progress bar (Deprecated)" -#~ msgstr "GtkAdjustment progresio-barrarekin konektatuta (zaharkitua)" - -#~ msgid "Bar style" -#~ msgstr "Barra-estiloa" - -#~ msgid "" -#~ "Specifies the visual style of the bar in percentage mode (Deprecated)" -#~ msgstr "Barraren estilo bisuala zehazten du ehuneko-moduan (zaharkitua)" - -#~ msgid "Activity Step" -#~ msgstr "Jarduera-urratsa" - -#~ msgid "The increment used for each iteration in activity mode (Deprecated)" -#~ msgstr "" -#~ "Jarduera-moduan iterazio bakoitzerako erabilitako gehikuntza (zaharkitua)" - -#~ msgid "Activity Blocks" -#~ msgstr "Jarduera-blokeak" - -#~ msgid "" -#~ "The number of blocks which can fit in the progress bar area in activity " -#~ "mode (Deprecated)" -#~ msgstr "" -#~ "Progresio-barraren arean jarduera-moduan doi daitezkeen blokeen kopurua " -#~ "(zaharkitua)" - -#~ msgid "Discrete Blocks" -#~ msgstr "Bloke diskretuak" - -#~ msgid "" -#~ "The number of discrete blocks in a progress bar (when shown in the " -#~ "discrete style)" -#~ msgstr "" -#~ "Progresio-barrako bloke diskretuen kopurua (estilo diskretuan erakusten " -#~ "direnean)" - -#~ msgid "Horizontal adjustment for the text widget" -#~ msgstr "Testu-trepetaren doitze horizontala" - -#~ msgid "Vertical adjustment for the text widget" -#~ msgstr "Testu-trepetaren doitze bertikala" - -#~ msgid "Line Wrap" -#~ msgstr "Lerro-itzulbira" - -#~ msgid "Whether lines are wrapped at widget edges" -#~ msgstr "Lerroak trepetaren ertzetara doitzen diren ala ez adierazten du" - -#~ msgid "Word Wrap" -#~ msgstr "Doitu hitzak" - -#~ msgid "Whether words are wrapped at widget edges" -#~ msgstr "Hitzak trepetaren ertzetara doitzen diren ala ez adierazten du" - -#~ msgid "Tooltips" -#~ msgstr "Argibidea" - -#~ msgid "If the tooltips of the toolbar should be active or not" -#~ msgstr "Tresna-barrako argibideak aktibatuko diren ala ez adierazten du" diff --git a/po-properties/gl.po b/po-properties/gl.po index 6c54be2cf2..4317123ce3 100644 --- a/po-properties/gl.po +++ b/po-properties/gl.po @@ -18,14 +18,14 @@ # Antón Méixome , 2009. # Antón Méixome , 2010. # Fran Dieguez , 2009, 2010. -# Fran Diéguez , 2009, 2010. +# Fran Diéguez , 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gtk+-master-po-properties-gl-77816____.merged\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-26 16:52+0200\n" -"PO-Revision-Date: 2010-10-26 16:58+0200\n" +"POT-Creation-Date: 2011-01-16 17:12+0100\n" +"PO-Revision-Date: 2011-01-14 16:48+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -35,124 +35,145 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: KBabel 1.11.4\n" -#: ../gdk/gdkdevice.c:99 -msgid "Device Display" -msgstr "Pantalla do dispositivo" - -#: ../gdk/gdkdevice.c:100 -msgid "Display which the device belongs to" -msgstr "Pantalla á que pertence o dispositivo" - -#: ../gdk/gdkdevice.c:114 -msgid "Device manager" -msgstr "Xestor de dispositivos" - -#: ../gdk/gdkdevice.c:115 -msgid "Device manager which the device belongs to" -msgstr "Xestor de dispositivos ao que pertence o dispositivos" - -#: ../gdk/gdkdevice.c:129 ../gdk/gdkdevice.c:130 -msgid "Device name" -msgstr "Nome do dispositivo" - -#: ../gdk/gdkdevice.c:144 -msgid "Device type" -msgstr "Tipo de dispositivo" - -#: ../gdk/gdkdevice.c:145 -msgid "Device role in the device manager" -msgstr "Rol do dispositivo no xestor de dispositivos" - -#: ../gdk/gdkdevice.c:161 -msgid "Associated device" -msgstr "Dispositivo asociado" - -#: ../gdk/gdkdevice.c:162 -msgid "Associated pointer or keyboard with this device" -msgstr "Punteiro ou teclado asociado a este dispositivo" - -#: ../gdk/gdkdevice.c:175 -msgid "Input source" -msgstr "Orixe de entrada" - -#: ../gdk/gdkdevice.c:176 -msgid "Source type for the device" -msgstr "Tipo de orixe para o dispositivo" - -#: ../gdk/gdkdevice.c:191 ../gdk/gdkdevice.c:192 -msgid "Input mode for the device" -msgstr "Modo de entrada para o dispositivo" - -#: ../gdk/gdkdevice.c:207 -msgid "Whether the device has a cursor" -msgstr "Indica se o dispositivo ten un cursor" - -#: ../gdk/gdkdevice.c:208 -msgid "Whether there is a visible cursor following device motion" -msgstr "Indica se hai un cursor visíbel seguindo o movemento do dispositivo" - -#: ../gdk/gdkdevice.c:222 ../gdk/gdkdevice.c:223 -msgid "Number of axes in the device" -msgstr "Número de eixos no dispositivo" - -#: ../gdk/gdkdevicemanager.c:136 +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" msgstr "Pantalla" -#: ../gdk/gdkdevicemanager.c:137 +#: ../gdk/gdkcursor.c:128 +msgid "Cursor type" +msgstr "Tipo de cursor" + +#: ../gdk/gdkcursor.c:129 +msgid "Standard cursor type" +msgstr "Tipo de cursor estándar" + +#: ../gdk/gdkcursor.c:137 +msgid "Display of this cursor" +msgstr "" + +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "Pantalla do dispositivo" + +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "Pantalla á que pertence o dispositivo" + +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "Xestor de dispositivos" + +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "Xestor de dispositivos ao que pertence o dispositivos" + +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "Nome do dispositivo" + +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "Tipo de dispositivo" + +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "Rol do dispositivo no xestor de dispositivos" + +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "Dispositivo asociado" + +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "Punteiro ou teclado asociado a este dispositivo" + +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "Orixe de entrada" + +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "Tipo de orixe para o dispositivo" + +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "Modo de entrada para o dispositivo" + +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "Indica se o dispositivo ten un cursor" + +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "Indica se hai un cursor visíbel seguindo o movemento do dispositivo" + +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "Número de eixos no dispositivo" + +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" msgstr "Pantalla para o xestor de dispositivos" -#: ../gdk/gdkdisplaymanager.c:101 +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "Pantalla predefinida" -#: ../gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "Pantalla predefinida para o GDK" -#: ../gdk/gdkscreen.c:74 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Opcións de tipo de letra" -#: ../gdk/gdkscreen.c:75 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "As opcións predefinidas do tipo de letra para a pantalla" -#: ../gdk/gdkscreen.c:82 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Resolución do tipo de letra" -#: ../gdk/gdkscreen.c:83 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "A resolución para os tipos de letra na pantalla" -#: ../gdk/gdkwindow.c:410 ../gdk/gdkwindow.c:411 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Cursor" #: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 -#: ../gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "ID do dispositivo" -#: ../gdk/x11/gdkdevice-xi2.c:113 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "Identificador do dispotitivo" -#: ../gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +msgid "Opcode" +msgstr "Opcode" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +msgid "Opcode for XInput2 requests" +msgstr "Opcode para as solicitudes XInput2" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" msgstr "Evento base" -#: ../gdk/x11/gdkdevicemanager-xi.c:86 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "Evento base para os eventos XInput" -#: ../gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "Nome do programa" -#: ../gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -160,96 +181,92 @@ msgstr "" "O nome do programa. Se non se define, usarase de forma predefinida " "g_get_application_name()" -#: ../gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "Versión do programa" -#: ../gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "A versión do programa" -#: ../gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "Cadea de dereitos de autor" -#: ../gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "Información de dereitos de autor do programa" -#: ../gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "Cadea de comentarios" -#: ../gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "Comentarios sobre o programa" -#: ../gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" msgstr "Tipo de licenza" -#: ../gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" msgstr "O tipo de licenza do programa" -#: ../gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "URL do sitio web" -#: ../gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "O URL para a ligazón ao sitio web do programa" -#: ../gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "Etiqueta do sitio web" -#: ../gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"A etiqueta para a ligazón ao sitio web do programa. Se non se define, " -"usarase o URL predefinido" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "A etiqueta para a ligazón do sitio web para este sitio" -#: ../gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "Autores" -#: ../gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "Lista de autores do programa" -#: ../gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "Documentadores" -#: ../gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "Lista de persoas que documentan o programa" -#: ../gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "Artistas" -#: ../gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "Lista de xente que contribuíu con material gráfico ao programa" -#: ../gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "Créditos de tradución" -#: ../gtk/gtkaboutdialog.c:471 +#: ../gtk/gtkaboutdialog.c:477 msgid "" "Credits to the translators. This string should be marked as translatable" msgstr "Créditos dos tradutores. Esta cadea deberá marcarse como traducíbel" -#: ../gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "Logotipo" -#: ../gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -257,40 +274,40 @@ msgstr "" "Un logotipo para a caixa Sobre. Se non se define, o predefinido é " "gtk_window_get_default_icon_list()" -#: ../gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "Nome da icona do logotipo" -#: ../gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "Unha icona con nome para usar como logotipo na caixa Sobre." -#: ../gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "Axustar a licenza" -#: ../gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "Indica se se debe axustar o texto da licenza." -#: ../gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "Peche do acelerador" -#: ../gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "O peche que se vai monitorizar para os cambios no acelerador" -#: ../gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "Widget do acelerador" -#: ../gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "O widget que se vai monitorizar para os cambios no acelerador" #: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 -#: ../gtk/gtktextmark.c:89 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "Nome" @@ -298,9 +315,9 @@ msgstr "Nome" msgid "A unique name for the action." msgstr "Un nome único para a acción." -#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:238 ../gtk/gtkexpander.c:209 -#: ../gtk/gtkframe.c:130 ../gtk/gtklabel.c:549 ../gtk/gtkmenuitem.c:331 -#: ../gtk/gtktoolbutton.c:202 ../gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:131 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1594 msgid "Label" msgstr "Etiqueta" @@ -336,31 +353,31 @@ msgid "The stock icon displayed in widgets representing this action." msgstr "" "A icona de inventario mostrada nos widgets que representan esta acción." -#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "GIcon" #: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 -#: ../gtk/gtkimage.c:320 ../gtk/gtkstatusicon.c:253 +#: ../gtk/gtkimage.c:327 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "A GIcon que se mostra" #: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 -#: ../gtk/gtkimage.c:302 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:236 -#: ../gtk/gtkwindow.c:733 +#: ../gtk/gtkimage.c:309 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "Nome da icona" #: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 -#: ../gtk/gtkimage.c:303 ../gtk/gtkstatusicon.c:237 +#: ../gtk/gtkimage.c:310 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "O nome da icona do tema de iconas" -#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "Visíbel cando é horizontal" -#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:187 +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 msgid "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." @@ -380,11 +397,11 @@ msgstr "" "Cando é TRUE, os proxies toolitem para esta acción represéntanse no menú de " "desbordamento da barra de tarefas." -#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "Visíbel cando é vertical" -#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:194 +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 msgid "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." @@ -392,7 +409,7 @@ msgstr "" "Indica se o elemento da barra de ferramentas é visíbel cando a barra de " "ferramentas está en orientación vertical." -#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "É importante" @@ -414,7 +431,7 @@ msgstr "" "Cando é TRUE, ocúltanse os proxies de menú baleiro para este aplicativo." #: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 -#: ../gtk/gtkcellrenderer.c:243 ../gtk/gtkwidget.c:975 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:941 msgid "Sensitive" msgstr "Sensíbel" @@ -423,8 +440,8 @@ msgid "Whether the action is enabled." msgstr "Indica se a acción está activada." #: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 -#: ../gtk/gtkstatusicon.c:287 ../gtk/gtktreeviewcolumn.c:213 -#: ../gtk/gtkwidget.c:968 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:934 msgid "Visible" msgstr "Visíbel" @@ -444,11 +461,11 @@ msgstr "" "O GtkActionGroup co que esta GtkAction está asociada ou NULL (para uso " "interno)." -#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Mostrar sempre a imaxe" -#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Indica se hai que mostrar a imaxe sempre" @@ -464,76 +481,76 @@ msgstr "Indica se o grupo de acción está activado." msgid "Whether the action group is visible." msgstr "Indica se o grupo de acción é visíbel." -#: ../gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "Acción relacionada" -#: ../gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "A acción que activará este activábel e do cal recibirá actualizacións" -#: ../gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "Usar aparencia de activación" -#: ../gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "Cando usar as accións relacionadas coas propiedades da aparencia" -#: ../gtk/gtkadjustment.c:114 ../gtk/gtkcellrendererprogress.c:126 -#: ../gtk/gtkscalebutton.c:220 ../gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "Valor" -#: ../gtk/gtkadjustment.c:115 +#: ../gtk/gtkadjustment.c:124 msgid "The value of the adjustment" msgstr "O valor do axuste" -#: ../gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:140 msgid "Minimum Value" msgstr "Valor mínimo" -#: ../gtk/gtkadjustment.c:132 +#: ../gtk/gtkadjustment.c:141 msgid "The minimum value of the adjustment" msgstr "O valor mínimo do axuste" -#: ../gtk/gtkadjustment.c:151 +#: ../gtk/gtkadjustment.c:160 msgid "Maximum Value" msgstr "Valor máximo" -#: ../gtk/gtkadjustment.c:152 +#: ../gtk/gtkadjustment.c:161 msgid "The maximum value of the adjustment" msgstr "O valor máximo do axuste" -#: ../gtk/gtkadjustment.c:168 +#: ../gtk/gtkadjustment.c:177 msgid "Step Increment" msgstr "Incremento de paso" -#: ../gtk/gtkadjustment.c:169 +#: ../gtk/gtkadjustment.c:178 msgid "The step increment of the adjustment" msgstr "O incremento de paso do axuste" -#: ../gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:194 msgid "Page Increment" msgstr "Incremento de páxina" -#: ../gtk/gtkadjustment.c:186 +#: ../gtk/gtkadjustment.c:195 msgid "The page increment of the adjustment" msgstr "O incremento de páxina do axuste" -#: ../gtk/gtkadjustment.c:205 +#: ../gtk/gtkadjustment.c:214 msgid "Page Size" msgstr "Tamaño de páxina" -#: ../gtk/gtkadjustment.c:206 +#: ../gtk/gtkadjustment.c:215 msgid "The page size of the adjustment" msgstr "O tamaño de páxina do axuste" -#: ../gtk/gtkalignment.c:127 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Aliñamento horizontal" -#: ../gtk/gtkalignment.c:128 ../gtk/gtkbutton.c:289 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -541,11 +558,11 @@ msgstr "" "Posición horizontal do fillo no espazo dispoñíbel. 0.0 é aliñado á esquerda, " "1.0 é aliñado á dereita" -#: ../gtk/gtkalignment.c:137 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Aliñamento vertical" -#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:308 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -553,11 +570,11 @@ msgstr "" "Posición vertical do fillo no espazo dispoñíbel. 0.0 é aliñado arriba, 1.0 é " "aliñado abaixo" -#: ../gtk/gtkalignment.c:146 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Escala horizontal" -#: ../gtk/gtkalignment.c:147 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -565,11 +582,11 @@ msgstr "" "Se o espazo horizontal dispoñíbel é maior que o necesitado para o fillo, " "canto se debe usar para o fillo. 0.0 significa nada, 1.0 significa todo" -#: ../gtk/gtkalignment.c:155 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Escala vertical" -#: ../gtk/gtkalignment.c:156 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -577,38 +594,114 @@ msgstr "" "Se o espazo vertical dispoñíbel é maior que o necesario para o fillo, canto " "se debe usar para o fillo. 0.0 significa nada, 1.0 significa todo" -#: ../gtk/gtkalignment.c:173 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Recheo superior" -#: ../gtk/gtkalignment.c:174 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "O recheo para introducir por encima do widget." -#: ../gtk/gtkalignment.c:190 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Recheo inferior" -#: ../gtk/gtkalignment.c:191 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "O recheo para introducir por debaixo do widget." -#: ../gtk/gtkalignment.c:207 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Recheo á esquerda" -#: ../gtk/gtkalignment.c:208 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "O recheo para introducir á esquerda do widget." -#: ../gtk/gtkalignment.c:224 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Recheo á dereita" -#: ../gtk/gtkalignment.c:225 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "O recheo para introducir á dereita do widget." +#: ../gtk/gtkappchooserbutton.c:538 +msgid "Include an 'Other...' item" +msgstr "Incluír un elemento «Outro...»" + +#: ../gtk/gtkappchooserbutton.c:539 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" + +#: ../gtk/gtkappchooser.c:58 +msgid "Content type" +msgstr "Tipo de contido" + +#: ../gtk/gtkappchooser.c:59 +msgid "The content type used by the open with object" +msgstr "O tipo de contido usado polo «abrir con obxecto»" + +#: ../gtk/gtkappchooserdialog.c:683 +msgid "GFile" +msgstr "GFile" + +#: ../gtk/gtkappchooserdialog.c:684 +msgid "The GFile used by the app chooser dialog" +msgstr "O GFile usado polo diálogo de selección de aplicativo" + +#: ../gtk/gtkappchooserwidget.c:1017 +msgid "Show default app" +msgstr "Mostrar o aplicativo predeterminado" + +#: ../gtk/gtkappchooserwidget.c:1018 +msgid "Whether the widget should show the default application" +msgstr "Indica se o widget debería mostrar o aplicativo predeterminado" + +#: ../gtk/gtkappchooserwidget.c:1031 +msgid "Show recommended apps" +msgstr "Mostrar os aplicativos recomendados" + +#: ../gtk/gtkappchooserwidget.c:1032 +msgid "Whether the widget should show recommended applications" +msgstr "Indica se o widget deberían mostrar aplicativos recomendados" + +#: ../gtk/gtkappchooserwidget.c:1045 +msgid "Show fallback apps" +msgstr "Most" + +#: ../gtk/gtkappchooserwidget.c:1046 +#, fuzzy +msgid "Whether the widget should show fallback applications" +msgstr "" +"Indica se o widget etiqueta deben encher todo o espazo horizontal dispoñíbel" + +#: ../gtk/gtkappchooserwidget.c:1058 +msgid "Show other apps" +msgstr "Mostrar outros aplicativos" + +#: ../gtk/gtkappchooserwidget.c:1059 +msgid "Whether the widget should show other applications" +msgstr "Indica se o widget deberían mostrar outros aplicativos" + +#: ../gtk/gtkappchooserwidget.c:1072 +msgid "Show all apps" +msgstr "Mostrar tódolos aplicativos" + +#: ../gtk/gtkappchooserwidget.c:1073 +msgid "Whether the widget should show all applications" +msgstr "Indica se o widget deberían mostrar tódolos aplicativos" + +#: ../gtk/gtkappchooserwidget.c:1086 +msgid "Widget's default text" +msgstr "Texto predeterminado do widget" + +#: ../gtk/gtkappchooserwidget.c:1087 +msgid "The default text appearing when there are no applications" +msgstr "O texto predeterminado que aparece cando non hai aplicativos" + #: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Dirección da frecha" @@ -625,7 +718,7 @@ msgstr "Sombra da frecha" msgid "Appearance of the shadow surrounding the arrow" msgstr "Aparencia da sombra que rodea a frecha" -#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:730 ../gtk/gtkmenuitem.c:394 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:726 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Escalado de frecha" @@ -633,7 +726,7 @@ msgstr "Escalado de frecha" msgid "Amount of space used up by arrow" msgstr "Cantidade de espazo ocupado por frecha" -#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1171 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1129 msgid "Horizontal Alignment" msgstr "Aliñamento horizontal" @@ -641,7 +734,7 @@ msgstr "Aliñamento horizontal" msgid "X alignment of the child" msgstr "Aliñamento X do fillo" -#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1187 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1145 msgid "Vertical Alignment" msgstr "Aliñamento vertical" @@ -665,99 +758,99 @@ msgstr "Obedecer ao fillo" msgid "Force aspect ratio to match that of the frame's child" msgstr "Forzar a proporción de aspecto para que coincida coa do marco do fillo" -#: ../gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "Recheo da cabeceira" -#: ../gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "Número de píxeles ao redor da cabeceira." -#: ../gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "Recheo do contido" -#: ../gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "Número de píxeles ao redor das páxinas de contidos." -#: ../gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "Tipo de páxina" -#: ../gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "O tipo da páxina do asistente" -#: ../gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "Título da páxina" -#: ../gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "O título da páxina do asistente" -#: ../gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "Imaxe de cabeceira" -#: ../gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "Imaxe de cabeceira para a páxina do asistente" -#: ../gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "Imaxe da barra lateral" -#: ../gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "Imaxe da barra lateral da páxina do asistente" -#: ../gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "Páxina completa" -#: ../gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "Indica se todos os campos requiridos na páxina foron cubertos" -#: ../gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "Largura mínima do fillo" -#: ../gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "A largura mínima dos botóns dentro da caixa" -#: ../gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "Altura mínima do fillo" -#: ../gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "A altura mínima dos botóns dentro da caixa" -#: ../gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "Largura interna de recheo do fillo" -#: ../gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "Cantidade na que se aumenta o tamaño do fillo por cada lado" -#: ../gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "Altura interna de recheo do fillo" -#: ../gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "Cantidade en que se aumenta o tamaño do fillo por encima e por debaixo" -#: ../gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "Estilo de disposición" -#: ../gtk/gtkbbox.c:172 +#: ../gtk/gtkbbox.c:189 msgid "" "How to lay out the buttons in the box. Possible values are: spread, edge, " "start and end" @@ -765,11 +858,11 @@ msgstr "" "Como dispor os botóns na caixa. Os valores posíbeis son: " "«spread» (afastados), «edge» (bordos), «start» (inicio) e «end» (final)" -#: ../gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "Secundario" -#: ../gtk/gtkbbox.c:181 +#: ../gtk/gtkbbox.c:198 msgid "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" @@ -777,34 +870,35 @@ msgstr "" "Se é TRUE, o fillo aparece nun grupo secundario de fillos; é útil, por " "exemplo, para botóns de axuda" -#: ../gtk/gtkbox.c:237 ../gtk/gtkexpander.c:233 ../gtk/gtkiconview.c:691 -#: ../gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "Espazamento" -#: ../gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "A cantidade de espazo entre os fillos" -#: ../gtk/gtkbox.c:247 ../gtk/gtktable.c:188 ../gtk/gtktoolbar.c:547 -#: ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1647 msgid "Homogeneous" msgstr "Homoxéneo" -#: ../gtk/gtkbox.c:248 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "Indica se todos os fillos deben ser do mesmo tamaño" -#: ../gtk/gtkbox.c:264 ../gtk/gtktoolbar.c:539 ../gtk/gtktoolitemgroup.c:1631 -#: ../gtk/gtktoolpalette.c:1065 ../gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1654 ../gtk/gtktoolpalette.c:1094 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "Expandir" -#: ../gtk/gtkbox.c:265 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "Indica se o fillo debe recibir espazo adicional cando o pai crece" -#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1661 msgid "Fill" msgstr "Encher" @@ -816,7 +910,7 @@ msgstr "" "Indica se se debe dar espazo adicional para que o fillo poida ser asignado " "no fillo ou usado como recheo" -#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "Recheo" @@ -829,7 +923,7 @@ msgstr "" msgid "Pack type" msgstr "Tipo de empaquetado" -#: ../gtk/gtkbox.c:297 ../gtk/gtknotebook.c:786 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -837,12 +931,12 @@ msgstr "" "Un GtkPackType que indica se o fillo está empaquetado en relación ao inicio " "ou ao final do pai" -#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:757 ../gtk/gtkpaned.c:271 -#: ../gtk/gtkruler.c:158 ../gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1675 msgid "Position" msgstr "Posición" -#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:758 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "O índice do fillo no pai" @@ -854,7 +948,7 @@ msgstr "Dominio de tradución" msgid "The translation domain used by gettext" msgstr "O dominio de tradución usado por gettext" -#: ../gtk/gtkbutton.c:239 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" @@ -862,13 +956,13 @@ msgstr "" "Texto da etiqueta do widget dentro do botón, se o botón contén unha etiqueta " "widget" -#: ../gtk/gtkbutton.c:246 ../gtk/gtkexpander.c:217 ../gtk/gtklabel.c:570 -#: ../gtk/gtkmenuitem.c:346 ../gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "Usar subliñado" -#: ../gtk/gtkbutton.c:247 ../gtk/gtkexpander.c:218 ../gtk/gtklabel.c:571 -#: ../gtk/gtkmenuitem.c:347 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -876,71 +970,71 @@ msgstr "" "Se se define, un subliñado no texto indica que o seguinte carácter debería " "usarse para a tecla rápida mnemónica" -#: ../gtk/gtkbutton.c:254 ../gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Usar inventario" -#: ../gtk/gtkbutton.c:255 +#: ../gtk/gtkbutton.c:244 msgid "" "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "Se se estabelece, a etiqueta úsase para seleccionar un elemento do " "inventario en vez de ser mostrado" -#: ../gtk/gtkbutton.c:262 ../gtk/gtkcombobox.c:861 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 #: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Enfocar ao premer" -#: ../gtk/gtkbutton.c:263 ../gtk/gtkfilechooserbutton.c:384 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Indica se o botón captura o foco cando se preme co rato" -#: ../gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "Relevo do bordo" -#: ../gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "Estilo de relevo do bordo" -#: ../gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "Aliñamento horizontal para o fillo" -#: ../gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "Aliñamento vertical para o fillo" -#: ../gtk/gtkbutton.c:324 ../gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Widget de imaxe" -#: ../gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "Widget fillo que aparecerá ao lado do texto do botón" -#: ../gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "Posición da imaxe" -#: ../gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "A posición da imaxe en relación ao texto" -#: ../gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "Espazamento predefinido" -#: ../gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Espazo adicional que engadir para os botóns GTK_CAN_DEFAULT" -#: ../gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "Espazamento exterior predefinido" -#: ../gtk/gtkbutton.c:476 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -948,31 +1042,31 @@ msgstr "" "Espazo adicional que engadir para os botóns GTK_CAN_DEFAULT que son sempre " "debuxados fóra do bordo" -#: ../gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "Desprazamento X do fillo" -#: ../gtk/gtkbutton.c:482 +#: ../gtk/gtkbutton.c:471 msgid "" "How far in the x direction to move the child when the button is depressed" msgstr "" "Distancia na dirección X que debe moverse o fillo cando se solta o botón" -#: ../gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "Desprazamento Y do fillo" -#: ../gtk/gtkbutton.c:490 +#: ../gtk/gtkbutton.c:479 msgid "" "How far in the y direction to move the child when the button is depressed" msgstr "" "Distancia na dirección Y que debe moverse o fillo cando se solta o botón" -#: ../gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "Desprazar o foco" -#: ../gtk/gtkbutton.c:507 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" @@ -980,43 +1074,43 @@ msgstr "" "Indica se as propiedades child_displacement_x/_y deberían afectar tamén ao " "rectángulo do foco" -#: ../gtk/gtkbutton.c:520 ../gtk/gtkentry.c:695 ../gtk/gtkentry.c:1740 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Bordo interior" -#: ../gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "Bordo entre os bordos do botón e o fillo." -#: ../gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "Espazamento da imaxe" -#: ../gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "Espazamento en píxeles entre a imaxe e a etiqueta" -#: ../gtk/gtkcalendar.c:470 +#: ../gtk/gtkcalendar.c:468 msgid "Year" msgstr "Ano" -#: ../gtk/gtkcalendar.c:471 +#: ../gtk/gtkcalendar.c:469 msgid "The selected year" msgstr "O ano seleccionado" -#: ../gtk/gtkcalendar.c:484 +#: ../gtk/gtkcalendar.c:482 msgid "Month" msgstr "Mes" -#: ../gtk/gtkcalendar.c:485 +#: ../gtk/gtkcalendar.c:483 msgid "The selected month (as a number between 0 and 11)" msgstr "O mes seleccionado (como número entre 0 e 11)" -#: ../gtk/gtkcalendar.c:499 +#: ../gtk/gtkcalendar.c:497 msgid "Day" msgstr "Día" -#: ../gtk/gtkcalendar.c:500 +#: ../gtk/gtkcalendar.c:498 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" @@ -1024,86 +1118,171 @@ msgstr "" "O día seleccionado (como un número entre 1 e 31 ou 0 para anular a selección " "do día seleccionado actualmente)" -#: ../gtk/gtkcalendar.c:514 +#: ../gtk/gtkcalendar.c:512 msgid "Show Heading" msgstr "Mostrar a cabeceira" -#: ../gtk/gtkcalendar.c:515 +#: ../gtk/gtkcalendar.c:513 msgid "If TRUE, a heading is displayed" msgstr "Se é TRUE, móstrase unha cabeceira" -#: ../gtk/gtkcalendar.c:529 +#: ../gtk/gtkcalendar.c:527 msgid "Show Day Names" msgstr "Mostrar os nomes dos días" -#: ../gtk/gtkcalendar.c:530 +#: ../gtk/gtkcalendar.c:528 msgid "If TRUE, day names are displayed" msgstr "Se é TRUE, móstranse os nomes dos días" -#: ../gtk/gtkcalendar.c:543 +#: ../gtk/gtkcalendar.c:541 msgid "No Month Change" msgstr "Sen cambio de mes" -#: ../gtk/gtkcalendar.c:544 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, the selected month cannot be changed" msgstr "Se é TRUE, non será posíbel cambiar o mes seleccionado" -#: ../gtk/gtkcalendar.c:558 +#: ../gtk/gtkcalendar.c:556 msgid "Show Week Numbers" msgstr "Mostrar os números de semana" -#: ../gtk/gtkcalendar.c:559 +#: ../gtk/gtkcalendar.c:557 msgid "If TRUE, week numbers are displayed" msgstr "Se é TRUE, móstranse os números de semana" -#: ../gtk/gtkcalendar.c:574 +#: ../gtk/gtkcalendar.c:572 msgid "Details Width" msgstr "Largura dos detalles" -#: ../gtk/gtkcalendar.c:575 +#: ../gtk/gtkcalendar.c:573 msgid "Details width in characters" msgstr "A largura dos detalles en caracteres" -#: ../gtk/gtkcalendar.c:590 +#: ../gtk/gtkcalendar.c:588 msgid "Details Height" msgstr "Altura dos detalles" -#: ../gtk/gtkcalendar.c:591 +#: ../gtk/gtkcalendar.c:589 msgid "Details height in rows" msgstr "A altura dos detalles en caracteres" -#: ../gtk/gtkcalendar.c:607 +#: ../gtk/gtkcalendar.c:605 msgid "Show Details" msgstr "Mostrar os detalles" -#: ../gtk/gtkcalendar.c:608 +#: ../gtk/gtkcalendar.c:606 msgid "If TRUE, details are shown" msgstr "Se é TRUE móstranse os detalles" -#: ../gtk/gtkcalendar.c:620 +#: ../gtk/gtkcalendar.c:618 msgid "Inner border" msgstr "Bordo interior" -#: ../gtk/gtkcalendar.c:621 +#: ../gtk/gtkcalendar.c:619 msgid "Inner border space" msgstr "Espacio do bordo interior" -#: ../gtk/gtkcalendar.c:632 +#: ../gtk/gtkcalendar.c:630 msgid "Vertical separation" msgstr "Separación vertical" -#: ../gtk/gtkcalendar.c:633 +#: ../gtk/gtkcalendar.c:631 msgid "Space between day headers and main area" msgstr "Espazo entre as cabeceiras de día e o área principal" -#: ../gtk/gtkcalendar.c:644 +#: ../gtk/gtkcalendar.c:642 msgid "Horizontal separation" msgstr "Separación horizontal" -#: ../gtk/gtkcalendar.c:645 +#: ../gtk/gtkcalendar.c:643 msgid "Space between week headers and main area" msgstr "Espazo entre as cabeceiras de semana e o área principal" +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "Espazo que se introduce entre as celas" + +#: ../gtk/gtkcellareabox.c:339 +msgid "Whether the cell expands" +msgstr "Indica se a cela se expande" + +#: ../gtk/gtkcellareabox.c:354 +msgid "Align" +msgstr "Aliñar" + +#: ../gtk/gtkcellareabox.c:355 +msgid "Whether cell should align with adjacent rows" +msgstr "Indica se a cela debería aliñarse coas filas adxacentes" + +#: ../gtk/gtkcellareabox.c:371 +msgid "Fixed Size" +msgstr "Tamaño fixo" + +#: ../gtk/gtkcellareabox.c:372 +msgid "Whether cells should be the same size in all rows" +msgstr "Indica se todas as celas deben ter o mesmo tamaño en todas as filas" + +#: ../gtk/gtkcellareabox.c:388 +msgid "Pack Type" +msgstr "Tipo de empaquetado" + +#: ../gtk/gtkcellareabox.c:389 +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"Un GtkPackType que indica se a cela está empaquetada con referencia ao " +"inicio ou o final da área da cela" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "Cela engocada" + +#: ../gtk/gtkcellarea.c:774 +msgid "The cell which currently has focus" +msgstr "A cela que está enfocada actualmente" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "Cela editada" + +#: ../gtk/gtkcellarea.c:793 +msgid "The cell which is currently being edited" +msgstr "A cela que está editándose actualmente" + +#: ../gtk/gtkcellarea.c:811 +msgid "Edit Widget" +msgstr "Widget editada" + +#: ../gtk/gtkcellarea.c:812 +msgid "The widget currently editing the edited cell" +msgstr "" + +#: ../gtk/gtkcellareacontext.c:127 +msgid "Area" +msgstr "Área" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "A área da cela para a que se creou este contexto" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "Largura mínima" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +msgid "Minimum cached width" +msgstr "" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +msgid "Minimum Height" +msgstr "Altura mínima" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +msgid "Minimum cached height" +msgstr "" + #: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Edición cancelada" @@ -1112,159 +1291,159 @@ msgstr "Edición cancelada" msgid "Indicates that editing has been canceled" msgstr "Indica que a edición foi cancelada" -#: ../gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "Tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "O valor (keyval) da tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "Modificadores de tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "A máscara do modificador da tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "Código de tecla da tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "O código de tecla de hardware da tecla rápida" -#: ../gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "Modo de teclas rápidas" -#: ../gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "O tipo de teclas rápidas" -#: ../gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "modo" -#: ../gtk/gtkcellrenderer.c:228 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "Modo editábel do CellRenderer" -#: ../gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "visíbel" -#: ../gtk/gtkcellrenderer.c:237 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "Mostrar a cela" -#: ../gtk/gtkcellrenderer.c:244 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "Mostrar a cela sensíbel" -#: ../gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "xalign" -#: ../gtk/gtkcellrenderer.c:252 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "O aliñamento x" -#: ../gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "yalign" -#: ../gtk/gtkcellrenderer.c:262 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "O aliñamento y" -#: ../gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: ../gtk/gtkcellrenderer.c:272 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "O xpad" -#: ../gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: ../gtk/gtkcellrenderer.c:282 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "O ypad" -#: ../gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "largura" -#: ../gtk/gtkcellrenderer.c:292 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "A largura fixa" -#: ../gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "altura" -#: ../gtk/gtkcellrenderer.c:302 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "A altura fixa" -#: ../gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "É expansor" -#: ../gtk/gtkcellrenderer.c:312 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "A fila ten fillos" -#: ../gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "Está expandido" -#: ../gtk/gtkcellrenderer.c:321 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "A fila é unha fila de expansor e está expandida" -#: ../gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "Nome da cor de fondo da cela" -#: ../gtk/gtkcellrenderer.c:329 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "Cor de fondo da cela como unha cadea" -#: ../gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "Cor de fondo da cela" -#: ../gtk/gtkcellrenderer.c:337 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "Cor de fondo da cela como unha GdkColor" -#: ../gtk/gtkcellrenderer.c:350 +#: ../gtk/gtkcellrenderer.c:395 msgid "Cell background RGBA color" msgstr "Cor de fondo RGBA da cela" -#: ../gtk/gtkcellrenderer.c:351 +#: ../gtk/gtkcellrenderer.c:396 msgid "Cell background color as a GdkRGBA" msgstr "Cor de fondo da cela como GdkRGBA" -#: ../gtk/gtkcellrenderer.c:358 +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "Editando" -#: ../gtk/gtkcellrenderer.c:359 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "Indica se o renderizador de cela está actualmente no modo de edición" -#: ../gtk/gtkcellrenderer.c:367 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "Definición do fondo da cela" -#: ../gtk/gtkcellrenderer.c:368 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "Indica se esta etiqueta afecta á cor de fondo da cela" @@ -1284,7 +1463,7 @@ msgstr "Columna de texto" msgid "A column in the data source model to get the strings from" msgstr "Unha columna no modelo de orixe de datos da que se obteñen as cadeas" -#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:928 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "Ten entrada" @@ -1316,8 +1495,8 @@ msgstr "O pixbuf do expansor pechado" msgid "Pixbuf for closed expander" msgstr "O pixbuf para o expansor pechado" -#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:244 -#: ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:251 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "ID de inventario" @@ -1325,8 +1504,8 @@ msgstr "ID de inventario" msgid "The stock ID of the stock icon to render" msgstr "O ID de inventario da icona de inventario para renderizar" -#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:153 -#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "Tamaño" @@ -1350,8 +1529,8 @@ msgstr "Seguir o estado" msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Indica se o pixbuf renderizado debería colorearse de acordo co estado" -#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:319 -#: ../gtk/gtkwindow.c:710 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:326 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "Icona" @@ -1359,9 +1538,9 @@ msgstr "Icona" msgid "Value of the progress bar" msgstr "Valor da barra de progreso" -#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:233 -#: ../gtk/gtkentry.c:738 ../gtk/gtkentrybuffer.c:352 -#: ../gtk/gtkmessagedialog.c:226 ../gtk/gtkprogressbar.c:145 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 #: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "Texto" @@ -1370,7 +1549,7 @@ msgstr "Texto" msgid "Text on the progress bar" msgstr "Texto na barra de progreso" -#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 msgid "Pulse" msgstr "Pulsación" @@ -1402,21 +1581,21 @@ msgstr "Aliñamento y do texto" msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "O aliñamento vertical do texto, desde 0 (superior) até 1 (inferior)." -#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:121 -#: ../gtk/gtkrange.c:433 +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:424 msgid "Inverted" msgstr "Invertido" -#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:122 +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 msgid "Invert the direction in which the progress bar grows" msgstr "Inverter a dirección na que crece a barra de progreso" -#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:425 -#: ../gtk/gtkscalebutton.c:239 ../gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:416 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "Axuste" -#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:229 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "O axuste que mantén o valor do botón de axuste" @@ -1424,22 +1603,23 @@ msgstr "O axuste que mantén o valor do botón de axuste" msgid "Climb rate" msgstr "Taxa de incremento" -#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "A taxa de aceleración cando mantén premido un botón" -#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:244 -#: ../gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "Díxitos" -#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "O número de lugares decimais que se vai mostrar" -#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:105 -#: ../gtk/gtkmenu.c:520 ../gtk/gtkspinner.c:131 ../gtk/gtktoggleaction.c:133 -#: ../gtk/gtktogglebutton.c:122 ../gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:516 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:752 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "Activo" @@ -1447,202 +1627,202 @@ msgstr "Activo" msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Indica se o spinner está activo (p.ex mostrado) na cela" -#: ../gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:138 msgid "Pulse of the spinner" msgstr "Pulso do spinner" -#: ../gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:152 msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "O valor do GtkIconSize que especifica o tamaño do spinner renderizado" -#: ../gtk/gtkcellrenderertext.c:234 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Texto para renderizar" -#: ../gtk/gtkcellrenderertext.c:241 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Marcación" -#: ../gtk/gtkcellrenderertext.c:242 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Texto marcado para renderizar" -#: ../gtk/gtkcellrenderertext.c:249 ../gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Atributos" -#: ../gtk/gtkcellrenderertext.c:250 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "" "Unha lista de atributos de estilo para aplicar ao texto do renderizador" -#: ../gtk/gtkcellrenderertext.c:257 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Modo de parágrafo único" -#: ../gtk/gtkcellrenderertext.c:258 +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "Indica se debe manterse ou non todo o texto nun só parágrafo" -#: ../gtk/gtkcellrenderertext.c:266 ../gtk/gtkcellview.c:179 -#: ../gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:196 msgid "Background color name" msgstr "Nome da cor de fondo" -#: ../gtk/gtkcellrenderertext.c:267 ../gtk/gtkcellview.c:180 -#: ../gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:197 msgid "Background color as a string" msgstr "Cor de fondo como unha cadea" -#: ../gtk/gtkcellrenderertext.c:274 ../gtk/gtkcellview.c:186 -#: ../gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:204 msgid "Background color" msgstr "Cor de fondo" -#: ../gtk/gtkcellrenderertext.c:275 ../gtk/gtkcellview.c:187 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "Cor de fondo como unha GdkColor" -#: ../gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:311 msgid "Background color as RGBA" msgstr "Nome do cor de fondo como RGBA" -#: ../gtk/gtkcellrenderertext.c:290 ../gtk/gtkcellview.c:201 +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 msgid "Background color as a GdkRGBA" msgstr "Cor de fondo como GdkRBGA" -#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:220 msgid "Foreground color name" msgstr "Nome da cor de primeiro plano" -#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:221 msgid "Foreground color as a string" msgstr "Cor de primeiro plano como unha cadea" -#: ../gtk/gtkcellrenderertext.c:304 ../gtk/gtktexttag.c:210 -#: ../gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:228 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "Cor de primeiro plano" -#: ../gtk/gtkcellrenderertext.c:305 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Cor de primeiro plano como unha GdkColor" -#: ../gtk/gtkcellrenderertext.c:319 +#: ../gtk/gtkcellrenderertext.c:341 msgid "Foreground color as RGBA" msgstr "Cor de primeiro plano como RGBA" -#: ../gtk/gtkcellrenderertext.c:320 +#: ../gtk/gtkcellrenderertext.c:342 msgid "Foreground color as a GdkRGBA" msgstr "Cor de primeiro plano como GdkRGBA" -#: ../gtk/gtkcellrenderertext.c:328 ../gtk/gtkentry.c:662 -#: ../gtk/gtktexttag.c:227 ../gtk/gtktextview.c:667 +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktextview.c:686 msgid "Editable" msgstr "Editábel" -#: ../gtk/gtkcellrenderertext.c:329 ../gtk/gtktexttag.c:228 -#: ../gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:246 +#: ../gtk/gtktextview.c:687 msgid "Whether the text can be modified by the user" msgstr "Indica se o usuario pode modificar o texto" -#: ../gtk/gtkcellrenderertext.c:336 ../gtk/gtkcellrenderertext.c:344 -#: ../gtk/gtktexttag.c:243 ../gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:261 ../gtk/gtktexttag.c:269 msgid "Font" msgstr "Tipo de letra" -#: ../gtk/gtkcellrenderertext.c:337 ../gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:262 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "" "Descrición do tipo de letra como unha cadea, por exemplo \"Sans Italic 12\"" -#: ../gtk/gtkcellrenderertext.c:345 ../gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:270 msgid "Font description as a PangoFontDescription struct" msgstr "Descrición do tipo de letra como unha estrutura PangoFontDescription" -#: ../gtk/gtkcellrenderertext.c:353 ../gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:277 msgid "Font family" msgstr "Familia do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:354 ../gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:278 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "" "Nome da familia do tipo de letra, por exemplo Sans, Helvética, Times ou " "Monospace" -#: ../gtk/gtkcellrenderertext.c:361 ../gtk/gtkcellrenderertext.c:362 -#: ../gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:285 msgid "Font style" msgstr "Estilo do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:370 ../gtk/gtkcellrenderertext.c:371 -#: ../gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:294 msgid "Font variant" msgstr "Variante do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:379 ../gtk/gtkcellrenderertext.c:380 -#: ../gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:303 msgid "Font weight" msgstr "Grosor do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:389 ../gtk/gtkcellrenderertext.c:390 -#: ../gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:314 msgid "Font stretch" msgstr "Expandir o tipo de letra" -#: ../gtk/gtkcellrenderertext.c:398 ../gtk/gtkcellrenderertext.c:399 -#: ../gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:323 msgid "Font size" msgstr "Tamaño do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:408 ../gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:343 msgid "Font points" msgstr "Puntos do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:409 ../gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:344 msgid "Font size in points" msgstr "Tamaño do tipo de letra en puntos" -#: ../gtk/gtkcellrenderertext.c:418 ../gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:333 msgid "Font scale" msgstr "Escala do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:419 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Factor de escalado do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:428 ../gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:412 msgid "Rise" msgstr "Elevación" -#: ../gtk/gtkcellrenderertext.c:429 +#: ../gtk/gtkcellrenderertext.c:451 msgid "" "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Desprazamento do texto sobre a liña base (por debaixo da liña base se a " "elevación é negativa)" -#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:452 msgid "Strikethrough" msgstr "Riscado" -#: ../gtk/gtkcellrenderertext.c:441 ../gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:453 msgid "Whether to strike through the text" msgstr "Indica se se risca o texto" -#: ../gtk/gtkcellrenderertext.c:448 ../gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:460 msgid "Underline" msgstr "Subliñado" -#: ../gtk/gtkcellrenderertext.c:449 ../gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:461 msgid "Style of underline for this text" msgstr "Estilo de subliñado para este texto" -#: ../gtk/gtkcellrenderertext.c:457 ../gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:372 msgid "Language" msgstr "Idioma" -#: ../gtk/gtkcellrenderertext.c:458 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1652,12 +1832,12 @@ msgstr "" "isto como unha axuda cando está renderizando o texto. Se non comprende este " "parámetro probabelmente non o necesite" -#: ../gtk/gtkcellrenderertext.c:478 ../gtk/gtklabel.c:681 -#: ../gtk/gtkprogressbar.c:175 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:217 msgid "Ellipsize" msgstr "Elipsis" -#: ../gtk/gtkcellrenderertext.c:479 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1665,28 +1845,28 @@ msgstr "" "O lugar preferido para a elipse a cadea, se o renderizador da cela non ten " "espazo suficiente para mostrar a cadea completa" -#: ../gtk/gtkcellrenderertext.c:498 ../gtk/gtkfilechooserbutton.c:411 -#: ../gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Largura en caracteres" -#: ../gtk/gtkcellrenderertext.c:499 ../gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "A largura desexada da etiqueta, en caracteres" -#: ../gtk/gtkcellrenderertext.c:523 ../gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Largura máxima en caracteres" -#: ../gtk/gtkcellrenderertext.c:524 +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" msgstr "A largura máxima da cela, en caracteres" -#: ../gtk/gtkcellrenderertext.c:542 ../gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:469 msgid "Wrap mode" msgstr "Modo de axuste" -#: ../gtk/gtkcellrenderertext.c:543 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1694,149 +1874,149 @@ msgstr "" "Como romper a cadea en liñas múltiples, se o renderizador da cela non ten " "suficiente espazo para mostrar a cadea completa" -#: ../gtk/gtkcellrenderertext.c:562 ../gtk/gtkcombobox.c:750 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "Largura de axuste" -#: ../gtk/gtkcellrenderertext.c:563 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "A largura á que o texto se axustará" -#: ../gtk/gtkcellrenderertext.c:583 ../gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "Aliñamento" -#: ../gtk/gtkcellrenderertext.c:584 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "Como aliñar as liñas" -#: ../gtk/gtkcellrenderertext.c:596 ../gtk/gtkcellview.c:223 -#: ../gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:558 msgid "Background set" msgstr "Definición do fondo" -#: ../gtk/gtkcellrenderertext.c:597 ../gtk/gtkcellview.c:224 -#: ../gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the background color" msgstr "Indica se esta marca afecta á cor de fondo" -#: ../gtk/gtkcellrenderertext.c:600 ../gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:566 msgid "Foreground set" msgstr "Definición do primeiro plano" -#: ../gtk/gtkcellrenderertext.c:601 ../gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the foreground color" msgstr "Indica se esta marca afecta á cor de primeiro plano" -#: ../gtk/gtkcellrenderertext.c:604 ../gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:570 msgid "Editability set" msgstr "Definición da editabilidade" -#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects text editability" msgstr "Indica se esta marca afecta á editabilidade do texto" -#: ../gtk/gtkcellrenderertext.c:608 ../gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:574 msgid "Font family set" msgstr "Definición da familia do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:609 ../gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font family" msgstr "Indica se esta marca afecta á familia do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:612 ../gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:578 msgid "Font style set" msgstr "Definición do estilo do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:613 ../gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font style" msgstr "Indica se esta marca afecta ao estilo do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:616 ../gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:582 msgid "Font variant set" msgstr "Definición da variante do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:617 ../gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:583 msgid "Whether this tag affects the font variant" msgstr "Indica se esta marca afecta á variante do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:620 ../gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:586 msgid "Font weight set" msgstr "Definición do grosor do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:621 ../gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:587 msgid "Whether this tag affects the font weight" msgstr "Indica se esta marca afecta ao grosor do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:624 ../gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:590 msgid "Font stretch set" msgstr "Definición da expansión do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:625 ../gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the font stretch" msgstr "Indica se esta marca afecta á expansión do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:628 ../gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:594 msgid "Font size set" msgstr "Definición do tamaño do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:629 ../gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the font size" msgstr "Indica se esta marca afecta ao tamaño do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:632 ../gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:598 msgid "Font scale set" msgstr "Definición da escala do tipo de letra" -#: ../gtk/gtkcellrenderertext.c:633 ../gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:599 msgid "Whether this tag scales the font size by a factor" msgstr "Indica se esta etiqueta escala o tamaño do tipo de letra por un factor" -#: ../gtk/gtkcellrenderertext.c:636 ../gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:618 msgid "Rise set" msgstr "Definición da elevación" -#: ../gtk/gtkcellrenderertext.c:637 ../gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects the rise" msgstr "Indica se esta marca afecta á elevación" -#: ../gtk/gtkcellrenderertext.c:640 ../gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:634 msgid "Strikethrough set" msgstr "Definición do riscado" -#: ../gtk/gtkcellrenderertext.c:641 ../gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:635 msgid "Whether this tag affects strikethrough" msgstr "Indica se esta marca afecta ao riscado" -#: ../gtk/gtkcellrenderertext.c:644 ../gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:642 msgid "Underline set" msgstr "Definición do subliñado" -#: ../gtk/gtkcellrenderertext.c:645 ../gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:643 msgid "Whether this tag affects underlining" msgstr "Indica se esta marca afecta ao subliñado" -#: ../gtk/gtkcellrenderertext.c:648 ../gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:606 msgid "Language set" msgstr "Definición do idioma" -#: ../gtk/gtkcellrenderertext.c:649 ../gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:607 msgid "Whether this tag affects the language the text is rendered as" msgstr "Indica se esta marca afecta ao idioma en que se renderiza o texto" -#: ../gtk/gtkcellrenderertext.c:652 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Definición da elipse" -#: ../gtk/gtkcellrenderertext.c:653 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Indica se esta marca afecta ao modo de elipse" -#: ../gtk/gtkcellrenderertext.c:656 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Definición de aliñamento" -#: ../gtk/gtkcellrenderertext.c:657 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Indica se esta marca afecta ao modo de aliñamento" @@ -1876,132 +2056,172 @@ msgstr "Debuxar o botón de estado como un botón de opción" msgid "Indicator size" msgstr "Tamaño do indicador" -#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:72 -#: ../gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Tamaño do indicador de opción ou de verificación" -#: ../gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:210 msgid "Background RGBA color" msgstr "Cor de fondo RGBA" -#: ../gtk/gtkcellview.c:215 +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "Modelo CellView" -#: ../gtk/gtkcellview.c:216 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "O modelo para a visualización de cela" -#: ../gtk/gtkcheckbutton.c:71 ../gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "Área da cela" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "O GtkCellArea usado para dispor celas" + +#: ../gtk/gtkcellview.c:265 +msgid "Cell Area Context" +msgstr "Contexto da área da cela" + +#: ../gtk/gtkcellview.c:266 +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "" +"O GtkCellAreaContext usado para calcular a xeometría da visualización da cela" + +#: ../gtk/gtkcellview.c:283 +#, fuzzy +msgid "Draw Sensitive" +msgstr "Sensíbel" + +#: ../gtk/gtkcellview.c:284 +#, fuzzy +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Indica se se deben debuxar as liñas na visualización en árbore" + +#: ../gtk/gtkcellview.c:302 +msgid "Fit Model" +msgstr "Arranxar modelo" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "" +"Indica se solicitar ou non o espazo suficiente para cada fila no modelo" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Tamaño do indicador" -#: ../gtk/gtkcheckbutton.c:79 ../gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "Espazamento do indicador" -#: ../gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "Espazamento ao redor do indicador de opción ou de verificación" -#: ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Indica se o elemento de menú está seleccionado" -#: ../gtk/gtkcheckmenuitem.c:113 ../gtk/gtktogglebutton.c:130 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inconsistente" -#: ../gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "Indica se se debe mostrar un estado \"inconsistente\"" -#: ../gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Debuxar como un elemento do menú de opción" -#: ../gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "" "Indica se a aparencia do elemento de menú é como un elemento do menú de " "opción" -#: ../gtk/gtkcolorbutton.c:158 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "Usar alfa" -#: ../gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" msgstr "Indica se debe dárselle ou non un valor alfa á cor" -#: ../gtk/gtkcolorbutton.c:173 ../gtk/gtkfilechooserbutton.c:397 -#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:115 -#: ../gtk/gtkstatusicon.c:415 ../gtk/gtktreeviewcolumn.c:286 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:141 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "Título" -#: ../gtk/gtkcolorbutton.c:174 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "O título do diálogo de selección da cor" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorsel.c:325 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Cor actual" -#: ../gtk/gtkcolorbutton.c:189 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "A cor seleccionada" -#: ../gtk/gtkcolorbutton.c:203 ../gtk/gtkcolorsel.c:332 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Alfa actual" -#: ../gtk/gtkcolorbutton.c:204 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "O valor de opacidade actual (0 é completamente transparente; 65535 é " "completamente opaco)" -#: ../gtk/gtkcolorbutton.c:218 +#: ../gtk/gtkcolorbutton.c:230 msgid "Current RGBA Color" msgstr "Cor RGBA actual" -#: ../gtk/gtkcolorbutton.c:219 +#: ../gtk/gtkcolorbutton.c:231 msgid "The selected RGBA color" msgstr "A cor RGBA seleccionada" -#: ../gtk/gtkcolorsel.c:311 +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Ten un control de opacidade" -#: ../gtk/gtkcolorsel.c:312 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "Indica se o selector de cor pode permitir seleccionar a opacidade" -#: ../gtk/gtkcolorsel.c:318 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Ten unha paleta" -#: ../gtk/gtkcolorsel.c:319 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Indica se se pode usar unha paleta" -#: ../gtk/gtkcolorsel.c:326 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "A cor actual" -#: ../gtk/gtkcolorsel.c:333 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "O valor de opacidade actual (0 é completamente transparente, 65535 é " "completamente opaco)" -#: ../gtk/gtkcolorsel.c:347 +#: ../gtk/gtkcolorsel.c:360 msgid "Current RGBA" msgstr "RGBA actual" -#: ../gtk/gtkcolorsel.c:348 +#: ../gtk/gtkcolorsel.c:361 msgid "The current RGBA color" msgstr "A cor RGBA actual" @@ -2037,68 +2257,68 @@ msgstr "Botón Axuda" msgid "The help button of the dialog." msgstr "O botón Axuda do diálogo." -#: ../gtk/gtkcombobox.c:733 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "Modelo de caixa de combinación" -#: ../gtk/gtkcombobox.c:734 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "O modelo para a caixa de combinación" -#: ../gtk/gtkcombobox.c:751 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "Largura de axuste para distribuír os elementos nunha grade" -#: ../gtk/gtkcombobox.c:773 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "Columna de expansión da fila" -#: ../gtk/gtkcombobox.c:774 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "Columna TreeModel que contén os valores de expansión da fila" -#: ../gtk/gtkcombobox.c:795 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "Columna de expansión da columna" -#: ../gtk/gtkcombobox.c:796 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "Columna TreeModel que contén os valores de expansión da columna" -#: ../gtk/gtkcombobox.c:817 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "Elemento activo" -#: ../gtk/gtkcombobox.c:818 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "O elemento que está activo actualmente" -#: ../gtk/gtkcombobox.c:837 ../gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Engadir tiradores aos menús" -#: ../gtk/gtkcombobox.c:838 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "" "Indica se os menús despregábeis deben ter un elemento de menú desprazábel" -#: ../gtk/gtkcombobox.c:853 ../gtk/gtkentry.c:687 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Ten marco" -#: ../gtk/gtkcombobox.c:854 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "Indica se a caixa de combinación debuxa un marco ao redor do fillo" -#: ../gtk/gtkcombobox.c:862 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Indica se a caixa de combinación captura o foco cando se preme co rato" -#: ../gtk/gtkcombobox.c:877 ../gtk/gtkmenu.c:575 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:571 msgid "Tearoff Title" msgstr "Título do tirador" -#: ../gtk/gtkcombobox.c:878 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" @@ -2106,31 +2326,31 @@ msgstr "" "Un título que o xestor de xanelas pode mostrar cando o menú emerxente se " "separa" -#: ../gtk/gtkcombobox.c:895 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "Menú emerxente mostrado" -#: ../gtk/gtkcombobox.c:896 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "Indica se se mostra o despregábel da caixa de combinación" -#: ../gtk/gtkcombobox.c:912 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "Sensibilidade do botón" -#: ../gtk/gtkcombobox.c:913 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Indica se o botón despregábel é sensíbel cando o modelo está baleiro" -#: ../gtk/gtkcombobox.c:929 +#: ../gtk/gtkcombobox.c:859 msgid "Whether combo box has an entry" msgstr "Indica se o ComboBox ten unha entrada" -#: ../gtk/gtkcombobox.c:944 +#: ../gtk/gtkcombobox.c:874 msgid "Entry Text Column" msgstr "Columna de entrada de texto" -#: ../gtk/gtkcombobox.c:945 +#: ../gtk/gtkcombobox.c:875 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" @@ -2138,11 +2358,31 @@ msgstr "" "A columna no modelo de caixa de combinación para asociar con cadeas da " "entrada se a caixa combinada creouse con #GtkComboBox:has-entry = %TRUE" -#: ../gtk/gtkcombobox.c:962 +#: ../gtk/gtkcombobox.c:892 +msgid "ID Column" +msgstr "ID da columna" + +#: ../gtk/gtkcombobox.c:893 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "" +"A columna no modelo de caixa de combinación que fornece os ID de cadeas para " +"os valores no modelo" + +#: ../gtk/gtkcombobox.c:908 +msgid "Active id" +msgstr "ID activo" + +#: ../gtk/gtkcombobox.c:909 +msgid "The value of the id column for the active row" +msgstr "O valor do ID da columna para a fila activa" + +#: ../gtk/gtkcombobox.c:924 msgid "Popup Fixed Width" msgstr "Anchura fixa de emerxente" -#: ../gtk/gtkcombobox.c:963 +#: ../gtk/gtkcombobox.c:925 msgid "" "Whether the popup's width should be a fixed width matching the allocated " "width of the combo box" @@ -2150,132 +2390,132 @@ msgstr "" "Indica se a anchura do emerxente debería ser fixa coincidindo coa anchura " "reservada para a caixa de combinación" -#: ../gtk/gtkcombobox.c:971 +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "Móstrase como unha lista" -#: ../gtk/gtkcombobox.c:972 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Indica se os despregábeis deben parecerse a listas en vez de a menús" -#: ../gtk/gtkcombobox.c:988 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "Tamaño da frecha" -#: ../gtk/gtkcombobox.c:989 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "O tamaño mínimo da frecha no caixa de combinación" -#: ../gtk/gtkcombobox.c:1004 ../gtk/gtkentry.c:787 ../gtk/gtkhandlebox.c:182 -#: ../gtk/gtkmenubar.c:189 ../gtk/gtkstatusbar.c:178 ../gtk/gtktoolbar.c:597 -#: ../gtk/gtkviewport.c:155 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:207 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:153 msgid "Shadow type" msgstr "Tipo de sombra" -#: ../gtk/gtkcombobox.c:1005 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "A clase de sombra que se debuxa ao redor da caixa de combinación" -#: ../gtk/gtkcontainer.c:472 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "Modo de redimensionamento" -#: ../gtk/gtkcontainer.c:473 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "Especifica como se manipulan os eventos de redimensionamento" -#: ../gtk/gtkcontainer.c:480 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "Largura do bordo" -#: ../gtk/gtkcontainer.c:481 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "A largura do bordo baleiro fóra dos contedores fillos" -#: ../gtk/gtkcontainer.c:489 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "Fillo" -#: ../gtk/gtkcontainer.c:490 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "Pode usarse para engadir un fillo novo ao contedor" -#: ../gtk/gtkdialog.c:165 ../gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Bordo da área de contidos" -#: ../gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "Largura do bordo ao redor da área principal da caixa de diálogo" -#: ../gtk/gtkdialog.c:183 ../gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Espazamento da área de contido" -#: ../gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "O espazamento entre os elementos da área de diálogo principal" -#: ../gtk/gtkdialog.c:191 ../gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Espazamento dos botóns" -#: ../gtk/gtkdialog.c:192 ../gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Espazamento entre os botóns" -#: ../gtk/gtkdialog.c:200 ../gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Bordo da área de acción" -#: ../gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" msgstr "" "Largura do bordo ao redor da área do botón na parte inferior da caixa de " "diálogo" -#: ../gtk/gtkentry.c:634 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Búfer de texto" -#: ../gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Obxecto de búfer de texto que almacena actualmente a entrada de texto" -#: ../gtk/gtkentry.c:642 ../gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Posición do cursor" -#: ../gtk/gtkentry.c:643 ../gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "A posición actual do cursor de inserción en caracteres" -#: ../gtk/gtkentry.c:652 ../gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Límite da selección" -#: ../gtk/gtkentry.c:653 ../gtk/gtklabel.c:655 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "" "The position of the opposite end of the selection from the cursor in chars" msgstr "A posición en caracteres do extremo oposto da selección desde o cursor" -#: ../gtk/gtkentry.c:663 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Indica se os contidos da entrada se poden editar" -#: ../gtk/gtkentry.c:670 ../gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Lonxitude máxima" -#: ../gtk/gtkentry.c:671 ../gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "Número máximo de caracteres nesta entrada. É cero se non hai un máximo" -#: ../gtk/gtkentry.c:679 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Visibilidade" -#: ../gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" @@ -2283,32 +2523,32 @@ msgstr "" "FALSE mostra o \"carácter invisíbel\" en lugar do texto actual (no modo " "contrasinal)" -#: ../gtk/gtkentry.c:688 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALSE elimina o bisel exterior da entrada" -#: ../gtk/gtkentry.c:696 +#: ../gtk/gtkentry.c:788 msgid "" "Border between text and frame. Overrides the inner-border style property" msgstr "" "Bordo entre o texto e o marco. Sobreponse á propiedade de estilo do bordo " "interno" -#: ../gtk/gtkentry.c:703 ../gtk/gtkentry.c:1269 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Carácter invisíbel" -#: ../gtk/gtkentry.c:704 ../gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "O carácter que usar cando se oculten os contidos da entrada (no \"modo de " "contrasinal\")" -#: ../gtk/gtkentry.c:711 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Activa o predefinido" -#: ../gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2316,32 +2556,32 @@ msgstr "" "Indica se se debe activar o widget predefinido (como o botón predefinido " "nunha caixa de diálogo) cando se prema a tecla Intro" -#: ../gtk/gtkentry.c:718 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Largura en caracteres" -#: ../gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Número de caracteres para os que deixar espazo na entrada" -#: ../gtk/gtkentry.c:728 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Compensación do desprazamento" -#: ../gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "" "Número de píxeles da entrada desprazados fóra da pantalla e cara á esquerda" -#: ../gtk/gtkentry.c:739 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "Os contidos da entrada" -#: ../gtk/gtkentry.c:754 ../gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "Aliñamento X" -#: ../gtk/gtkentry.c:755 ../gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2349,66 +2589,66 @@ msgstr "" "O aliñamento horizontal, desde 0 (esquerda) até 1 (dereita). Ao revés para " "disposicións DAE." -#: ../gtk/gtkentry.c:771 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Truncar multiliña" -#: ../gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Indica se se truncan as accións de pegar multiliñas nunha liña." -#: ../gtk/gtkentry.c:788 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "" "Que tipo de sombra debuxar ao redor da entrada cando has-frame está activado" -#: ../gtk/gtkentry.c:803 ../gtk/gtktextview.c:747 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:766 msgid "Overwrite mode" msgstr "Modo de sobrescritura" -#: ../gtk/gtkentry.c:804 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Indica se o texto novo sobrescribe o texto existente" -#: ../gtk/gtkentry.c:818 ../gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Lonxitude de texto" -#: ../gtk/gtkentry.c:819 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "A lonxitude do texto que está actualmente na entrada" -#: ../gtk/gtkentry.c:834 +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" msgstr "Conxunto de caracteres invisíbel" -#: ../gtk/gtkentry.c:835 +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "Indica se o carácter invisíbel foi definido" -#: ../gtk/gtkentry.c:853 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Aviso de Bloq Maiús" -#: ../gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "" "Indica se as entradas de contrasinal mostrarán un aviso cando Bloq Maiús " "estea activado" -#: ../gtk/gtkentry.c:868 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Fracción de progreso" -#: ../gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "A fracción actual da tarefa que está terminada" -#: ../gtk/gtkentry.c:886 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Paso de pulso de progreso" -#: ../gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2416,169 +2656,169 @@ msgstr "" "A fracción total da largura da entrada para mover o bloque de rebote de " "progreso para cada chamada a gtk_entry_progress_pulse()" -#: ../gtk/gtkentry.c:903 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Pixbuf primario" -#: ../gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "O pixbuf primario para a entrada" -#: ../gtk/gtkentry.c:918 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Pixbuf secundario" -#: ../gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "O pixbuf secundario para a entrada" -#: ../gtk/gtkentry.c:933 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "ID de inventario primario" -#: ../gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "O ID de inventario para a icona primaria" -#: ../gtk/gtkentry.c:948 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "ID de inventario secundario" -#: ../gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "O ID de inventario para a icona secundaria" -#: ../gtk/gtkentry.c:963 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Nome de icona primaria" -#: ../gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "O nome de icona para a icona primaria" -#: ../gtk/gtkentry.c:978 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Nome de icona secundaria" -#: ../gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "O nome de icona para a icona secundaria" -#: ../gtk/gtkentry.c:993 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "GIcon primaria" -#: ../gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "O nome para a GIcon primaria" -#: ../gtk/gtkentry.c:1008 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "GIcon secundaria" -#: ../gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "O nome para a GIcon secundaria" -#: ../gtk/gtkentry.c:1023 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Tipo de almacenamento primario" -#: ../gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "A representación usada para a icona primaria" -#: ../gtk/gtkentry.c:1039 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Tipo de almacenamento secundario" -#: ../gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "A representación usada para a icona secundaria" -#: ../gtk/gtkentry.c:1061 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Icona primaria activábel" -#: ../gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Indica se a icona primaria é activábel" -#: ../gtk/gtkentry.c:1082 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Icona secundaria activábel" -#: ../gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Indica se a icona secundaria é activábel" -#: ../gtk/gtkentry.c:1105 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Sensibilidade da icona primaria" -#: ../gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Indica se a icona primaria é sensíbel" -#: ../gtk/gtkentry.c:1127 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Sensibilidade da icona secundaria" -#: ../gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Indica se a icona secundaria é sensíbel" -#: ../gtk/gtkentry.c:1144 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Texto da indicación da icona primaria" -#: ../gtk/gtkentry.c:1145 ../gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "O contido da indicación da icona primaria" -#: ../gtk/gtkentry.c:1161 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Texto da indicación da icona secundaria" -#: ../gtk/gtkentry.c:1162 ../gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "O contido da indicación da icona secundaria" -#: ../gtk/gtkentry.c:1180 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Marcación da indicación da icona primaria" -#: ../gtk/gtkentry.c:1199 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Marcación da indicación da icona secundaria" -#: ../gtk/gtkentry.c:1219 ../gtk/gtktextview.c:775 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:794 msgid "IM module" msgstr "Módulo MI" -#: ../gtk/gtkentry.c:1220 ../gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:795 msgid "Which IM module should be used" msgstr "O módulo de MI que se debería usar" -#: ../gtk/gtkentry.c:1234 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Iluminación previa da icona" -#: ../gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "" "Indica se as iconas activábeis se deberían iluminar previamente ao pasar o " "rato por encima" -#: ../gtk/gtkentry.c:1248 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Bordo do progreso" -#: ../gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "O bordo ao redor da barra de progreso" -#: ../gtk/gtkentry.c:1741 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Bordo entre o texto e o marco." @@ -2590,75 +2830,75 @@ msgstr "Os contidos do búfer" msgid "Length of the text currently in the buffer" msgstr "A lonxitude do texto que está actualmente no búfer" -#: ../gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "Modelo de completado" -#: ../gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "O modelo para encontrar coincidencias" -#: ../gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "Lonxitude mínima da chave" -#: ../gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "Lonxitude mínima da chave de busca para encontrar coincidencias" -#: ../gtk/gtkentrycompletion.c:304 ../gtk/gtkiconview.c:612 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 msgid "Text column" msgstr "Columna de texto" -#: ../gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "Unha columna do modelo que contén as cadeas." -#: ../gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "Completado en liña" -#: ../gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "Indica se o prefixo común se debe inserir automaticamente" -#: ../gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "Emerxer os completados" -#: ../gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "Indica se os completados se deben mostrar nunha xanela emerxente" -#: ../gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "O emerxente define a largura" -#: ../gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "Se é TRUE, a xanela emerxente terá o mesmo tamaño que a entrada" -#: ../gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "Emerxente para coincidencia única" -#: ../gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." msgstr "Se é TRUE, a xanela emerxente aparecerá para unha coincidencia única." -#: ../gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "Selección en liña" -#: ../gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "A súa descrición aquí" -#: ../gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "Xanela visíbel" -#: ../gtk/gtkeventbox.c:102 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2666,11 +2906,11 @@ msgstr "" "Indica se a caixa de eventos é visíbel, ao contrario da invisíbel; só se usa " "para capturar eventos." -#: ../gtk/gtkeventbox.c:108 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "Encima do fillo" -#: ../gtk/gtkeventbox.c:109 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2678,59 +2918,59 @@ msgstr "" "Indica se a xanela captadora de eventos da caixa de eventos está por encima " "da xanela do widget fillo ao contrario de por debaixo dela." -#: ../gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "Expandido" -#: ../gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Indica se o expansor foi aberto para deixar ver o widget fillo" -#: ../gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "Texto da etiqueta do expansor" -#: ../gtk/gtkexpander.c:225 ../gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Usar a marcación" -#: ../gtk/gtkexpander.c:226 ../gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "O texto da etiqueta inclúe marcación XML. Vexa pango_parse_markup()" -#: ../gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "Espazo para pór entre a etiqueta e o fillo" -#: ../gtk/gtkexpander.c:243 ../gtk/gtkframe.c:165 ../gtk/gtktoolbutton.c:216 -#: ../gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:166 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1601 msgid "Label widget" msgstr "Widget etiqueta" -#: ../gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "Un widget para mostrar en lugar da etiqueta habitual do expansor" -#: ../gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:329 msgid "Label fill" msgstr "Recheo da etiqueta" -#: ../gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" msgstr "" "Indica se o widget etiqueta deben encher todo o espazo horizontal dispoñíbel" -#: ../gtk/gtkexpander.c:258 ../gtk/gtktoolitemgroup.c:1606 -#: ../gtk/gtktreeview.c:770 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1629 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "Tamaño do expansor" -#: ../gtk/gtkexpander.c:259 ../gtk/gtktoolitemgroup.c:1607 -#: ../gtk/gtktreeview.c:771 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1630 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "Tamaño da frecha do expansor" -#: ../gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "Espazamento ao redor da frecha do expansor" @@ -2852,19 +3092,19 @@ msgstr "" "Indica se un selector de ficheiros sen estar en modo aberto lle ofrecerá ao " "usuario crear cartafoles novos." -#: ../gtk/gtkfixed.c:98 ../gtk/gtklayout.c:610 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:632 msgid "X position" msgstr "Posición X" -#: ../gtk/gtkfixed.c:99 ../gtk/gtklayout.c:611 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:633 msgid "X position of child widget" msgstr "Posición X do widget fillo" -#: ../gtk/gtkfixed.c:108 ../gtk/gtklayout.c:620 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:642 msgid "Y position" msgstr "Posición Y" -#: ../gtk/gtkfixed.c:109 ../gtk/gtklayout.c:621 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:643 msgid "Y position of child widget" msgstr "Posición Y do widget fillo" @@ -2872,7 +3112,7 @@ msgstr "Posición Y do widget fillo" msgid "The title of the font selection dialog" msgstr "O título do diálogo de selección do tipo de letra" -#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:219 msgid "Font name" msgstr "Nome do tipo de letra" @@ -2916,68 +3156,132 @@ msgstr "Mostrar o tamaño" msgid "Whether selected font size is shown in the label" msgstr "Indica se o tamaño de tipo de letra seleccionado se mostra na etiqueta" -#: ../gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:220 msgid "The string that represents this font" msgstr "A cadea que representa este tipo de letra" -#: ../gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:226 msgid "Preview text" msgstr "Previsualizar o texto" -#: ../gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:227 msgid "The text to display in order to demonstrate the selected font" msgstr "" "O texto que mostrar como exemplo para indicar o tipo de letra seleccionado" -#: ../gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:132 msgid "Text of the frame's label" msgstr "Texto da etiqueta do marco" -#: ../gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:139 msgid "Label xalign" msgstr "Aliñamento x da etiqueta" -#: ../gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:140 msgid "The horizontal alignment of the label" msgstr "O aliñamento horizontal da etiqueta" -#: ../gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:148 msgid "Label yalign" msgstr "Aliñamento y da etiqueta" -#: ../gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:149 msgid "The vertical alignment of the label" msgstr "O aliñamento vertical da etiqueta" -#: ../gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:157 msgid "Frame shadow" msgstr "Sombra do marco" -#: ../gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:158 msgid "Appearance of the frame border" msgstr "Aparencia do bordo do marco" -#: ../gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:167 msgid "A widget to display in place of the usual frame label" msgstr "Un widget para mostrar en lugar da etiqueta de marco habitual" -#: ../gtk/gtkhandlebox.c:183 +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "Espazamento de fila" + +#: ../gtk/gtkgrid.c:1270 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "A cantidade de espazo entre dúas filas consecutivas" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "Espazamento de columna" + +#: ../gtk/gtkgrid.c:1277 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "A cantidade de espazo entre dúas columnas consecutivas" + +#: ../gtk/gtkgrid.c:1283 +msgid "Row Homogeneous" +msgstr "Fila homoxénea" + +#: ../gtk/gtkgrid.c:1284 +msgid "If TRUE, the rows are all the same height" +msgstr "Se é TRUE, todas as filas teñen a mesma altura" + +#: ../gtk/gtkgrid.c:1290 +msgid "Column Homogeneous" +msgstr "Columnas homoxéneas" + +#: ../gtk/gtkgrid.c:1291 +msgid "If TRUE, the columns are all the same width" +msgstr "Se é TRUE, todas as columnas teñen a mesma largura" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "Anexo á esquerda" + +#: ../gtk/gtkgrid.c:1298 ../gtk/gtkmenu.c:689 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "A cantidade de columnas para anexar ao lado esquerdo do fillo" + +#: ../gtk/gtkgrid.c:1304 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "Anexo superior" + +#: ../gtk/gtkgrid.c:1305 +msgid "The row number to attach the top side of a child widget to" +msgstr "O número de filas para anexar na parte superior do widget fillo" + +#: ../gtk/gtkgrid.c:1311 ../gtk/gtklayout.c:658 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "Largura" + +#: ../gtk/gtkgrid.c:1312 +msgid "The number of columns that a child spans" +msgstr "O número de columnas nas que se expande un fillo" + +#: ../gtk/gtkgrid.c:1318 ../gtk/gtklayout.c:667 +msgid "Height" +msgstr "Altura" + +#: ../gtk/gtkgrid.c:1319 +msgid "The number of rows that a child spans" +msgstr "O número de filas nas que un fillo se expande" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "Aparencia da sombra que rodea o contedor" -#: ../gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "Posición do manipulador" -#: ../gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "Posición do manipulador en relación ao widget fillo" -#: ../gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "Axustar ao bordo" -#: ../gtk/gtkhandlebox.c:201 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" @@ -2985,11 +3289,11 @@ msgstr "" "Lado da caixa manipuladora que está aliñado co punto de ancoraxe, para " "ancorar a caixa manipuladora" -#: ../gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "Definición do axuste de bordo" -#: ../gtk/gtkhandlebox.c:210 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -2997,11 +3301,11 @@ msgstr "" "Indica se se usa o valor da propiedade snap_edge ou un valor derivado de " "handle_position" -#: ../gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "Fillo separado" -#: ../gtk/gtkhandlebox.c:218 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." @@ -3009,263 +3313,264 @@ msgstr "" "Un valor booleano que indica se a caixa de manipulación do fillo está " "separada ou anexada." -#: ../gtk/gtkiconview.c:575 +#: ../gtk/gtkiconview.c:524 msgid "Selection mode" msgstr "Modo de selección" -#: ../gtk/gtkiconview.c:576 +#: ../gtk/gtkiconview.c:525 msgid "The selection mode" msgstr "O modo de selección" -#: ../gtk/gtkiconview.c:594 +#: ../gtk/gtkiconview.c:543 msgid "Pixbuf column" msgstr "Columna de pixbuf" -#: ../gtk/gtkiconview.c:595 +#: ../gtk/gtkiconview.c:544 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Columna modelo usada para recuperar o pixbuf da icona" -#: ../gtk/gtkiconview.c:613 +#: ../gtk/gtkiconview.c:562 msgid "Model column used to retrieve the text from" msgstr "Columna modelo usada para recuperar o texto" -#: ../gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:581 msgid "Markup column" msgstr "Columna de marcación" -#: ../gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:582 msgid "Model column used to retrieve the text if using Pango markup" msgstr "" "Columna modelo usada para recuperar o texto se se emprega a marcación Pango" -#: ../gtk/gtkiconview.c:640 +#: ../gtk/gtkiconview.c:589 msgid "Icon View Model" msgstr "Modelo de visualización de icona" -#: ../gtk/gtkiconview.c:641 +#: ../gtk/gtkiconview.c:590 msgid "The model for the icon view" msgstr "O modelo para a visualización de icona" -#: ../gtk/gtkiconview.c:657 +#: ../gtk/gtkiconview.c:606 msgid "Number of columns" msgstr "Número de columnas" -#: ../gtk/gtkiconview.c:658 +#: ../gtk/gtkiconview.c:607 msgid "Number of columns to display" msgstr "O número de columnas que se mostran" -#: ../gtk/gtkiconview.c:675 +#: ../gtk/gtkiconview.c:624 msgid "Width for each item" msgstr "Largura de cada elemento" -#: ../gtk/gtkiconview.c:676 +#: ../gtk/gtkiconview.c:625 msgid "The width used for each item" msgstr "A largura usada para cada elemento" -#: ../gtk/gtkiconview.c:692 +#: ../gtk/gtkiconview.c:641 msgid "Space which is inserted between cells of an item" msgstr "Espazo que se introduce entre as celas dun elemento" -#: ../gtk/gtkiconview.c:707 +#: ../gtk/gtkiconview.c:656 msgid "Row Spacing" msgstr "Espazamento de fila" -#: ../gtk/gtkiconview.c:708 +#: ../gtk/gtkiconview.c:657 msgid "Space which is inserted between grid rows" msgstr "Espazo que se introduce entre as filas da grade" -#: ../gtk/gtkiconview.c:723 +#: ../gtk/gtkiconview.c:672 msgid "Column Spacing" msgstr "Espazamento de columna" -#: ../gtk/gtkiconview.c:724 +#: ../gtk/gtkiconview.c:673 msgid "Space which is inserted between grid columns" msgstr "Espazo que se introduce entre as columnas da grade" -#: ../gtk/gtkiconview.c:739 +#: ../gtk/gtkiconview.c:688 msgid "Margin" msgstr "Marxe" -#: ../gtk/gtkiconview.c:740 +#: ../gtk/gtkiconview.c:689 msgid "Space which is inserted at the edges of the icon view" msgstr "Espazo que se insire nos bordos da visualización de icona" -#: ../gtk/gtkiconview.c:755 +#: ../gtk/gtkiconview.c:704 msgid "Item Orientation" msgstr "Orientación do elemento" -#: ../gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:705 msgid "" "How the text and icon of each item are positioned relative to each other" msgstr "" "Como se sitúan o texto e a icona de cada elemento en relación un ao outro" -#: ../gtk/gtkiconview.c:772 ../gtk/gtktreeview.c:605 -#: ../gtk/gtktreeviewcolumn.c:329 +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "Reordenábel" -#: ../gtk/gtkiconview.c:773 ../gtk/gtktreeview.c:606 +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "A visualización é reordenábel" -#: ../gtk/gtkiconview.c:780 ../gtk/gtktreeview.c:756 +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "Columna de indicación" -#: ../gtk/gtkiconview.c:781 +#: ../gtk/gtkiconview.c:730 msgid "The column in the model containing the tooltip texts for the items" msgstr "" "A columna do modelo que contén os textos de indicación para os elementos" -#: ../gtk/gtkiconview.c:798 +#: ../gtk/gtkiconview.c:747 msgid "Item Padding" msgstr "Recheo de ítem" -#: ../gtk/gtkiconview.c:799 +#: ../gtk/gtkiconview.c:748 msgid "Padding around icon view items" msgstr "Recheo arredor dos ítems de iconas" -#: ../gtk/gtkiconview.c:812 +#: ../gtk/gtkiconview.c:776 msgid "Selection Box Color" msgstr "Cor da caixa de selección" -#: ../gtk/gtkiconview.c:813 +#: ../gtk/gtkiconview.c:777 msgid "Color of the selection box" msgstr "Cor da caixa de selección" -#: ../gtk/gtkiconview.c:819 +#: ../gtk/gtkiconview.c:783 msgid "Selection Box Alpha" msgstr "Alfa da caixa de selección" -#: ../gtk/gtkiconview.c:820 +#: ../gtk/gtkiconview.c:784 msgid "Opacity of the selection box" msgstr "Opacidade da caixa de selección" -#: ../gtk/gtkimage.c:227 ../gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "Pixbuf" -#: ../gtk/gtkimage.c:228 ../gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:235 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "Un GdkPixbuf para mostrar" -#: ../gtk/gtkimage.c:235 ../gtk/gtkrecentmanager.c:294 -#: ../gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:242 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "Nome do ficheiro" -#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:243 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "Nome de ficheiro para cargar e mostrar" -#: ../gtk/gtkimage.c:245 ../gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:252 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "ID de inventario para unha imaxe de inventario para mostrar" -#: ../gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:259 msgid "Icon set" msgstr "Definición da icona" -#: ../gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:260 msgid "Icon set to display" msgstr "Definición da icona para mostrar" -#: ../gtk/gtkimage.c:260 ../gtk/gtkscalebutton.c:230 ../gtk/gtktoolbar.c:514 -#: ../gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:267 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1032 msgid "Icon size" msgstr "Tamaño da icona" -#: ../gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:268 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "" "Tamaño simbólico que usar para a icona de inventario, conxunto de iconas ou " "icona con nome" -#: ../gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:284 msgid "Pixel size" msgstr "Tamaño do píxel" -#: ../gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:285 msgid "Pixel size to use for named icon" msgstr "Tamaño do píxel que usar para a icona con nome" -#: ../gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:293 msgid "Animation" msgstr "Animación" -#: ../gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:294 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation para mostrar" -#: ../gtk/gtkimage.c:327 ../gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "Tipo de almacenamento" -#: ../gtk/gtkimage.c:328 ../gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:335 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "A representación empregada para as informacións de imaxe" -#: ../gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Widget fillo que aparecerá ao lado do texto de menú" -#: ../gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "" "Indica se hai que usar a etiqueta de texto para crear un elemento de menú de " "inventario" -#: ../gtk/gtkimagemenuitem.c:187 ../gtk/gtkmenu.c:535 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:531 msgid "Accel Group" msgstr "Grupo de teclas rápidas" -#: ../gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "O grupo de teclas rápidas para usar nas teclas rápidas de inventario" -#: ../gtk/gtkinfobar.c:375 ../gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "Tipo de mensaxe" -#: ../gtk/gtkinfobar.c:376 ../gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "O tipo de mensaxe" -#: ../gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Largura do bordo ao redor da área de contido" -#: ../gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "O espazamento entre os elementos da área de acción" -#: ../gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Largura do bordo arredor da área de acción" -#: ../gtk/gtkinvisible.c:90 ../gtk/gtkmountoperation.c:175 -#: ../gtk/gtkstatusicon.c:279 ../gtk/gtkwindow.c:741 +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:546 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "Pantalla" -#: ../gtk/gtkinvisible.c:91 ../gtk/gtkwindow.c:742 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "A pantalla onde se mostrará esta xanela" -#: ../gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "O texto da etiqueta" -#: ../gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "Unha lista de atributos de estilos para aplicar ao texto da etiqueta" -#: ../gtk/gtklabel.c:578 ../gtk/gtktexttag.c:335 ../gtk/gtktextview.c:684 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:353 ../gtk/gtktextview.c:703 msgid "Justification" msgstr "Xustificación" -#: ../gtk/gtklabel.c:579 +#: ../gtk/gtklabel.c:597 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 " @@ -3275,11 +3580,11 @@ msgstr "" "NON afecta ao aliñamento da etiqueta dentro da súa asignación Ver GtkMisc::" "xalign para iso" -#: ../gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "Patrón" -#: ../gtk/gtklabel.c:588 +#: ../gtk/gtklabel.c:606 msgid "" "A string with _ characters in positions correspond to characters in the text " "to underline" @@ -3287,47 +3592,47 @@ msgstr "" "Unha cadea con caracteres _ en posicións correspondentes a caracteres no " "texto para subliñar" -#: ../gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "Axuste de liña" -#: ../gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "Se se define, axusta a liña se o texto se volve demasiado largo" -#: ../gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "Modo de axuste de liña" -#: ../gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" msgstr "Se se estabelece o axuste, controla como se fai o axuste de liña" -#: ../gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "Seleccionábel" -#: ../gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "Indica se o texto da etiqueta pode ser seleccionado co rato" -#: ../gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "Tecla mnemónica" -#: ../gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "A tecla rápida mnemónica para esta etiqueta" -#: ../gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "Widget mnemónico" -#: ../gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" msgstr "O widget que se activará cando se prema a tecla mnemónica da etiqueta" -#: ../gtk/gtklabel.c:682 +#: ../gtk/gtklabel.c:700 msgid "" "The preferred place to ellipsize the string, if the label does not have " "enough room to display the entire string" @@ -3335,123 +3640,115 @@ msgstr "" "O lugar preferido para a elipse da cadea, se a etiqueta non ten suficiente " "espazo para mostrar a cadea completa" -#: ../gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "Modo de liña única" -#: ../gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "Indica se a etiqueta está no modo de liña única" -#: ../gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "Ángulo" -#: ../gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "Ángulo sobre o que se rota a etiqueta" -#: ../gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "A largura máxima desexada da etiqueta, en caracteres" -#: ../gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "Rexistrar as ligazóns visitadas" -#: ../gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "Indica se as ligazóns visitadas deberían ser rexistradas" -#: ../gtk/gtklayout.c:636 ../gtk/gtktreeviewcolumn.c:229 -msgid "Width" -msgstr "Largura" - -#: ../gtk/gtklayout.c:637 +#: ../gtk/gtklayout.c:659 msgid "The width of the layout" msgstr "A largura da disposición" -#: ../gtk/gtklayout.c:645 -msgid "Height" -msgstr "Altura" - -#: ../gtk/gtklayout.c:646 +#: ../gtk/gtklayout.c:668 msgid "The height of the layout" msgstr "A altura da disposición" -#: ../gtk/gtklinkbutton.c:174 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URI" -#: ../gtk/gtklinkbutton.c:175 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "O URI vinculado a este botón" -#: ../gtk/gtklinkbutton.c:189 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "Visitada" -#: ../gtk/gtklinkbutton.c:190 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "Indica se esta ligazón foi visitada." -#: ../gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:181 msgid "Pack direction" msgstr "Dirección do empaquetado" -#: ../gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:182 msgid "The pack direction of the menubar" msgstr "A dirección do empaquetado da barra de menú" -#: ../gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:198 msgid "Child Pack direction" msgstr "Dirección do empaquetado fillo" -#: ../gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:199 msgid "The child pack direction of the menubar" msgstr "A dirección do empaquetado fillo da barra de menú" -#: ../gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:208 msgid "Style of bevel around the menubar" msgstr "Estilo do bisel ao redor da barra de menús" -#: ../gtk/gtkmenubar.c:197 ../gtk/gtktoolbar.c:564 +#: ../gtk/gtkmenubar.c:215 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "Recheo interno" -#: ../gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:216 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "" "Cantidade de espazo do bordo entre a sombra da barra de menús e os elementos " "de menú" -#: ../gtk/gtkmenu.c:521 +#: ../gtk/gtkmenu.c:517 msgid "The currently selected menu item" msgstr "O elemento de menú actualmente seleccionado" -#: ../gtk/gtkmenu.c:536 +#: ../gtk/gtkmenu.c:532 msgid "The accel group holding accelerators for the menu" msgstr "O grupo de teclas rápidas que contén as teclas rápidas para o menú" -#: ../gtk/gtkmenu.c:550 ../gtk/gtkmenuitem.c:316 +#: ../gtk/gtkmenu.c:546 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Camiño de teclas rápidas" -#: ../gtk/gtkmenu.c:551 +#: ../gtk/gtkmenu.c:547 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" "Un camiño de teclas rápidas usado para construír adecuadamente os camiños de " "teclas rápidas dos elementos fillo" -#: ../gtk/gtkmenu.c:567 +#: ../gtk/gtkmenu.c:563 msgid "Attach Widget" msgstr "Widget anexado" -#: ../gtk/gtkmenu.c:568 +#: ../gtk/gtkmenu.c:564 msgid "The widget the menu is attached to" msgstr "O widget ao que está anexado o menú" -#: ../gtk/gtkmenu.c:576 +#: ../gtk/gtkmenu.c:572 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" @@ -3459,54 +3756,54 @@ msgstr "" "Un título que o xestor de xanelas poderá mostrar cando este menú estea " "desprazado" -#: ../gtk/gtkmenu.c:590 +#: ../gtk/gtkmenu.c:586 msgid "Tearoff State" msgstr "Estado de desprazamento" -#: ../gtk/gtkmenu.c:591 +#: ../gtk/gtkmenu.c:587 msgid "A boolean that indicates whether the menu is torn-off" msgstr "Un booleano que indica se o menú está desprazado" -#: ../gtk/gtkmenu.c:605 +#: ../gtk/gtkmenu.c:601 msgid "Monitor" msgstr "Monitor" -#: ../gtk/gtkmenu.c:606 +#: ../gtk/gtkmenu.c:602 msgid "The monitor the menu will be popped up on" msgstr "O monitor en que emerxerá o menú" -#: ../gtk/gtkmenu.c:612 +#: ../gtk/gtkmenu.c:608 msgid "Vertical Padding" msgstr "Recheo vertical" -#: ../gtk/gtkmenu.c:613 +#: ../gtk/gtkmenu.c:609 msgid "Extra space at the top and bottom of the menu" msgstr "O espazo adicional na parte superior e inferior do menú" -#: ../gtk/gtkmenu.c:635 +#: ../gtk/gtkmenu.c:631 msgid "Reserve Toggle Size" msgstr "Reservar o tamaño de alternancia" -#: ../gtk/gtkmenu.c:636 +#: ../gtk/gtkmenu.c:632 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" msgstr "" "Un booleano que indica se o menú reserva espazo para alternancias e iconas" -#: ../gtk/gtkmenu.c:642 +#: ../gtk/gtkmenu.c:638 msgid "Horizontal Padding" msgstr "Recheo horizontal" -#: ../gtk/gtkmenu.c:643 +#: ../gtk/gtkmenu.c:639 msgid "Extra space at the left and right edges of the menu" msgstr "O espazo adicional nos bordos dereito e esquerdo do menú" -#: ../gtk/gtkmenu.c:651 +#: ../gtk/gtkmenu.c:647 msgid "Vertical Offset" msgstr "Desprazamento vertical" -#: ../gtk/gtkmenu.c:652 +#: ../gtk/gtkmenu.c:648 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" @@ -3514,11 +3811,11 @@ msgstr "" "Cando o menú é un submenú, colóqueo verticalmente con este número de píxeles " "de desprazamento" -#: ../gtk/gtkmenu.c:660 +#: ../gtk/gtkmenu.c:656 msgid "Horizontal Offset" msgstr "Desprazamento horizontal" -#: ../gtk/gtkmenu.c:661 +#: ../gtk/gtkmenu.c:657 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" @@ -3526,174 +3823,170 @@ msgstr "" "Cando o menú é un submenú, colóqueo horizontalmente con este número de " "píxeles de desprazamento" -#: ../gtk/gtkmenu.c:669 +#: ../gtk/gtkmenu.c:665 msgid "Double Arrows" msgstr "Frechas dobres" -#: ../gtk/gtkmenu.c:670 +#: ../gtk/gtkmenu.c:666 msgid "When scrolling, always show both arrows." msgstr "Mostrar sempre ambas as frechas ao desprazar." -#: ../gtk/gtkmenu.c:683 +#: ../gtk/gtkmenu.c:679 msgid "Arrow Placement" msgstr "Colocación da frecha" -#: ../gtk/gtkmenu.c:684 +#: ../gtk/gtkmenu.c:680 msgid "Indicates where scroll arrows should be placed" msgstr "Indica onde se deberían colocar as frechas de desprazamento" -#: ../gtk/gtkmenu.c:692 +#: ../gtk/gtkmenu.c:688 msgid "Left Attach" msgstr "Anexar á esquerda" -#: ../gtk/gtkmenu.c:693 ../gtk/gtktable.c:197 -msgid "The column number to attach the left side of the child to" -msgstr "A cantidade de columnas para anexar ao lado esquerdo do fillo" - -#: ../gtk/gtkmenu.c:700 +#: ../gtk/gtkmenu.c:696 msgid "Right Attach" msgstr "Anexar á dereita" -#: ../gtk/gtkmenu.c:701 +#: ../gtk/gtkmenu.c:697 msgid "The column number to attach the right side of the child to" msgstr "A cantidade de columnas para anexar ao lado dereito do fillo" -#: ../gtk/gtkmenu.c:708 +#: ../gtk/gtkmenu.c:704 msgid "Top Attach" msgstr "Anexar arriba" -#: ../gtk/gtkmenu.c:709 +#: ../gtk/gtkmenu.c:705 msgid "The row number to attach the top of the child to" msgstr "O número de filas para anexar encima do fillo" -#: ../gtk/gtkmenu.c:716 +#: ../gtk/gtkmenu.c:712 msgid "Bottom Attach" msgstr "Anexar abaixo" -#: ../gtk/gtkmenu.c:717 ../gtk/gtktable.c:218 +#: ../gtk/gtkmenu.c:713 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "O número de filas para anexar debaixo do fillo" -#: ../gtk/gtkmenu.c:731 +#: ../gtk/gtkmenu.c:727 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "" "Unha constante arbitraria para escalar para abaixo o tamaño da frecha de " "desprazamento" -#: ../gtk/gtkmenuitem.c:283 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Xustificado á dereita" -#: ../gtk/gtkmenuitem.c:284 +#: ../gtk/gtkmenuitem.c:282 msgid "" "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" "Define se o elemento de menú aparece xustificado ao lado dereito dunha barra " "de menú" -#: ../gtk/gtkmenuitem.c:298 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Submenú" -#: ../gtk/gtkmenuitem.c:299 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "O submenú anexado ao elemento do menú, ou NULL se non ten ningún" -#: ../gtk/gtkmenuitem.c:317 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Define o camiño de teclas rápidas dun elemento de menú" -#: ../gtk/gtkmenuitem.c:332 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "O texto da etiqueta filla" -#: ../gtk/gtkmenuitem.c:395 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "" "A cantidade de espazo usado pola frecha, relativa ao tamaño do tipo de letra " "do elemento de menú" -#: ../gtk/gtkmenuitem.c:408 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Largura en caracteres" -#: ../gtk/gtkmenuitem.c:409 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "A largura mínima desexada do elemento de menú en caracteres" -#: ../gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:420 msgid "Take Focus" msgstr "Obtén o foco" -#: ../gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:421 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "Un booleano que determina se o menú captura o foco do teclado" -#: ../gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:257 msgid "Menu" msgstr "Menú" -#: ../gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:258 msgid "The dropdown menu" msgstr "O menú despregábel" -#: ../gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "Bordo da imaxe ou etiqueta" -#: ../gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" msgstr "Largura do bordo ao redor da etiqueta e a imaxe no diálogo de mensaxes" -#: ../gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "Botóns de mensaxe" -#: ../gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "Os botóns mostrados no diálogo de mensaxe" -#: ../gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "O texto primario do diálogo de mensaxe" -#: ../gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "Usar marcación" -#: ../gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "O texto primario do título inclúe a marcación Pango." -#: ../gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "Texto secundario" -#: ../gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "O texto secundario do diálogo de mensaxe" -#: ../gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "Usar marcación no secundario" -#: ../gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "O texto secundario inclúe a marcación Pango." -#: ../gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "Imaxe" -#: ../gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "A imaxe" -#: ../gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" msgstr "Área do mensaxes" -#: ../gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox que contén as etiquetas primaria e secundaria do diálogo" @@ -3747,53 +4040,53 @@ msgstr "Se estamos mostrando un diálogo" msgid "The screen where this window will be displayed." msgstr "A pantalla onde esta xanela se mostrará." -#: ../gtk/gtknotebook.c:682 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "Páxina" -#: ../gtk/gtknotebook.c:683 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "O índice da páxina actual" -#: ../gtk/gtknotebook.c:691 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "Posición do separador" -#: ../gtk/gtknotebook.c:692 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "Que lado do caderno contén os separadores" -#: ../gtk/gtknotebook.c:699 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "Mostrar separadores" -#: ../gtk/gtknotebook.c:700 +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "Indica se os separadores deben mostrarse ou non" -#: ../gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "Mostrar bordo" -#: ../gtk/gtknotebook.c:707 +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "Indica se o bordo debe mostrarse ou non" -#: ../gtk/gtknotebook.c:713 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "Desprazábel" -#: ../gtk/gtknotebook.c:714 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "" "Se é TRUE, engádense frechas de desprazamento se hai demasiados separadores " "para encaixar" -#: ../gtk/gtknotebook.c:720 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "Activar o menú emerxente" -#: ../gtk/gtknotebook.c:721 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3801,131 +4094,171 @@ msgstr "" "Se é TRUE, premendo o botón dereito do rato no caderno emerxe un menú que " "pode usar para ir a unha páxina" -#: ../gtk/gtknotebook.c:735 +#: ../gtk/gtknotebook.c:738 msgid "Group Name" msgstr "Nome do grupo" -#: ../gtk/gtknotebook.c:736 +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" msgstr "Nome do grupo para o arrastre e solte dos separadores" -#: ../gtk/gtknotebook.c:743 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "Etiqueta de separador" -#: ../gtk/gtknotebook.c:744 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "A cadea mostrada na etiqueta do separador fillo" -#: ../gtk/gtknotebook.c:750 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "Etiqueta de menú" -#: ../gtk/gtknotebook.c:751 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "A cadea mostrada na entrada de menú filla" -#: ../gtk/gtknotebook.c:764 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "Expansión do separador" -#: ../gtk/gtknotebook.c:765 +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "Indica se se expanden os separadores fillos ou non" -#: ../gtk/gtknotebook.c:771 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "Recheo de separador" -#: ../gtk/gtknotebook.c:772 +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "Indica se os separadores fillos deberían encher a área asignada ou non" -#: ../gtk/gtknotebook.c:785 -msgid "Tab pack type" -msgstr "Tipo de empaquetado de separador" - -#: ../gtk/gtknotebook.c:792 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "Separador reordenábel" -#: ../gtk/gtknotebook.c:793 +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "" "Indica se o separador se pode ou non reordenar por unha acción do usuario" -#: ../gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "Separador desprazábel" -#: ../gtk/gtknotebook.c:800 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "Indica se o separador é desprazábel" -#: ../gtk/gtknotebook.c:815 ../gtk/gtkscrollbar.c:105 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Paso de retroceso secundario" -#: ../gtk/gtknotebook.c:816 +#: ../gtk/gtknotebook.c:806 msgid "" "Display a second backward arrow button on the opposite end of the tab area" msgstr "" "Mostra un segundo botón de frecha de retroceso no extremo oposto da área de " "tabulación" -#: ../gtk/gtknotebook.c:831 ../gtk/gtkscrollbar.c:112 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Paso de avance secundario" -#: ../gtk/gtknotebook.c:832 +#: ../gtk/gtknotebook.c:822 msgid "" "Display a second forward arrow button on the opposite end of the tab area" msgstr "" "Mostra un segundo botón de frecha de avance no extremo oposto da área de " "tabulación" -#: ../gtk/gtknotebook.c:846 ../gtk/gtkscrollbar.c:91 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Paso de retroceso" -#: ../gtk/gtknotebook.c:847 ../gtk/gtkscrollbar.c:92 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Mostrar o botón estándar de frecha de retroceso" -#: ../gtk/gtknotebook.c:861 ../gtk/gtkscrollbar.c:98 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Paso de avance" -#: ../gtk/gtknotebook.c:862 ../gtk/gtkscrollbar.c:99 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Mostrar o botón estándar de frecha de avance" -#: ../gtk/gtknotebook.c:876 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "Superposición de separador" -#: ../gtk/gtknotebook.c:877 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "Tamaño da área de superposición do separador" -#: ../gtk/gtknotebook.c:892 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "Curvatura do separador" -#: ../gtk/gtknotebook.c:893 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "Tamaño da curvatura do separador" -#: ../gtk/gtknotebook.c:909 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "Espazamento de frechas" -#: ../gtk/gtknotebook.c:910 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "Espazamento das frechas de desprazamento" -#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:319 -#: ../gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtknumerableicon.c:652 +msgid "Icon's count" +msgstr "Contía de iconas" + +#: ../gtk/gtknumerableicon.c:653 +msgid "The count of the emblem currently displayed" +msgstr "A contía dos emblemas mostrados actualmente" + +#: ../gtk/gtknumerableicon.c:659 +msgid "Icon's label" +msgstr "Etiqueta da icona" + +#: ../gtk/gtknumerableicon.c:660 +msgid "The label to be displayed over the icon" +msgstr "A etiqueta a mostrar sobre a icona" + +#: ../gtk/gtknumerableicon.c:666 +msgid "Icon's style context" +msgstr "Contexto de estilo da icona" + +#: ../gtk/gtknumerableicon.c:667 +#, fuzzy +msgid "The style context to theme the icon appearance" +msgstr "O contexto de estilo para aplicar á aparencia da icona" + +#: ../gtk/gtknumerableicon.c:673 +msgid "Background icon" +msgstr "Icona de fondo" + +#: ../gtk/gtknumerableicon.c:674 +#, fuzzy +msgid "The icon for the number emblem background" +msgstr "A icona para o fondo do número de emblema" + +#: ../gtk/gtknumerableicon.c:680 +#, fuzzy +msgid "Background icon name" +msgstr "Nome da icona de fondo" + +#: ../gtk/gtknumerableicon.c:681 +#, fuzzy +msgid "The icon name for the number emblem background" +msgstr "O nome da icona para o fondo do número de emblema" + +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "Orientación" @@ -3933,74 +4266,74 @@ msgstr "Orientación" msgid "The orientation of the orientable" msgstr "A orientación do orientábel" -#: ../gtk/gtkpaned.c:272 +#: ../gtk/gtkpaned.c:327 msgid "" "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "" "Posición do separador de sección en píxeles (0 significa todo o traxecto " "cara á esquerda ou arriba)" -#: ../gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "Definición de posición" -#: ../gtk/gtkpaned.c:282 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "É TRUE se a propiedade de posición debe ser usada" -#: ../gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "Tamaño do manipulador" -#: ../gtk/gtkpaned.c:289 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "Largura do manipulador" -#: ../gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "Posición mínima" -#: ../gtk/gtkpaned.c:306 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "O valor máis pequeno posíbel para a propiedade \"posición\"" -#: ../gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "Posición máxima" -#: ../gtk/gtkpaned.c:324 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "O valor máis grande posíbel para a propiedade \"posición\"" -#: ../gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "Redimensionar" -#: ../gtk/gtkpaned.c:342 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "Se é TRUE, o fillo expándese e redúcese xunto coa sección do widget" -#: ../gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "Reducir" -#: ../gtk/gtkpaned.c:358 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "Se é TRUE, o fillo pode facerse máis pequeno que a súa solicitude" -#: ../gtk/gtkplug.c:172 ../gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "Incorporado" -#: ../gtk/gtkplug.c:173 +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "Indica se o conectador está incrustado" -#: ../gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "Xanela de conectador" -#: ../gtk/gtkplug.c:188 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "A xanela do conectador en que o obxecto \"plug\" está incorporado" @@ -4092,36 +4425,36 @@ msgstr "Opción de orixe" msgid "The PrinterOption backing this widget" msgstr "A PrinterOption que serve de apoio para este widget" -#: ../gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:142 msgid "Title of the print job" msgstr "Título do traballo de impresión" -#: ../gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:150 msgid "Printer" msgstr "Impresora" -#: ../gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:151 msgid "Printer to print the job to" msgstr "Impresora na que imprimir o traballo" -#: ../gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:159 msgid "Settings" msgstr "Configuracións" -#: ../gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:160 msgid "Printer settings" msgstr "Configuracións da impresora" -#: ../gtk/gtkprintjob.c:142 ../gtk/gtkprintjob.c:143 +#: ../gtk/gtkprintjob.c:168 ../gtk/gtkprintjob.c:169 #: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Configuración da páxina" -#: ../gtk/gtkprintjob.c:151 ../gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:177 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "Seguimento do estado de impresión" -#: ../gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:178 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." @@ -4130,51 +4463,51 @@ msgstr "" "estado despois de que os datos de impresión sexan enviados á impresora ou ao " "servidor de impresoras." -#: ../gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "Configuración de páxina predefinida" -#: ../gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "A GtkPageSetup que se usa por defecto" -#: ../gtk/gtkprintoperation.c:1024 ../gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Configuracións da impresora" -#: ../gtk/gtkprintoperation.c:1025 ../gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "Os GtkPrintSettings que se usan para inicializar o diálogo" -#: ../gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "Nome do traballo" -#: ../gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "Unha cadea que se usa para identificar o traballo de impresión." -#: ../gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "Número de páxinas" -#: ../gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "O número de páxinas do documento." -#: ../gtk/gtkprintoperation.c:1090 ../gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Páxina actual" -#: ../gtk/gtkprintoperation.c:1091 ../gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "A páxina actual do documento" -#: ../gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "Usar a páxina completa" -#: ../gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" @@ -4182,7 +4515,7 @@ msgstr "" "É TRUE se a orixe do contexto debe estar na esquina da páxina e non na " "esquina da área de imaxe" -#: ../gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4191,89 +4524,89 @@ msgstr "" "impresión despois de que os datos de impresión sexan enviados á impresora ou " "ao servidor de impresoras." -#: ../gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "Unidade" -#: ../gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "A unidade na que se poden medir as distancias no contexto" -#: ../gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "Mostrar diálogo" -#: ../gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "É TRUE se se mostra un diálogo de progreso ao imprimir." -#: ../gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "Permitir asíncrono" -#: ../gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "É TRUE se o proceso de impresión se pode executar asincronamente." -#: ../gtk/gtkprintoperation.c:1216 ../gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "Exportar nome de ficheiro" -#: ../gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "Estado" -#: ../gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "O estado da operación de impresión" -#: ../gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "Cadea de estado" -#: ../gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "Unha descrición lexíbel por humanos do estado" -#: ../gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "Etiqueta de separador personalizado" -#: ../gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "Etiqueta para o separador que contén widgets personalizados." -#: ../gtk/gtkprintoperation.c:1287 ../gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:341 msgid "Support Selection" msgstr "Permite a selección" -#: ../gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." msgstr "TRUE se a operación de impresión permitirá a impresión da selección." -#: ../gtk/gtkprintoperation.c:1304 ../gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Ten unha selección" -#: ../gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "TRUE se existe unha selección." -#: ../gtk/gtkprintoperation.c:1320 ../gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:357 msgid "Embed Page Setup" msgstr "Configuración da páxina incorporada" -#: ../gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "" "TRUE se as caixas de combinación da configuración de páxina están " "incorporados no GtkPrintDialog" -#: ../gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "Número de páxinas para imprimir" -#: ../gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "O número de páxinas que serán impresas." @@ -4311,36 +4644,36 @@ msgstr "" "TRUE se as caixas de combinación da configuración de páxina están " "incorporadas no GtkPrintUnixDialog" -#: ../gtk/gtkprogressbar.c:129 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "Fracción" -#: ../gtk/gtkprogressbar.c:130 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "A fracción do traballo total que se completou" -#: ../gtk/gtkprogressbar.c:137 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "Paso de pulso" -#: ../gtk/gtkprogressbar.c:138 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" msgstr "" "A fracción do progreso total para mover o bloque rebotador cando se preme" -#: ../gtk/gtkprogressbar.c:146 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "Texto que se mostrará na barra de progreso" -#: ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkprogressbar.c:195 msgid "Show text" msgstr "Mostrar texto" -#: ../gtk/gtkprogressbar.c:154 +#: ../gtk/gtkprogressbar.c:196 msgid "Whether the progress is shown as text." msgstr "Indica se o progreso se mostra como texto." -#: ../gtk/gtkprogressbar.c:176 +#: ../gtk/gtkprogressbar.c:218 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." @@ -4348,51 +4681,51 @@ msgstr "" "O lugar preferido para a elipse da cadea, se a barra de progreso non ten " "espazo suficiente para mostrar a cadea completa." -#: ../gtk/gtkprogressbar.c:183 +#: ../gtk/gtkprogressbar.c:225 msgid "X spacing" msgstr "Espazamento X" -#: ../gtk/gtkprogressbar.c:184 +#: ../gtk/gtkprogressbar.c:226 msgid "Extra spacing applied to the width of a progress bar." msgstr "Espazo extra aplicado á largura dunha barra de progreso." -#: ../gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:231 msgid "Y spacing" msgstr "Espazamento Y" -#: ../gtk/gtkprogressbar.c:190 +#: ../gtk/gtkprogressbar.c:232 msgid "Extra spacing applied to the height of a progress bar." msgstr "Un espazamento extra aplicado á altura dunha barra de progreso." -#: ../gtk/gtkprogressbar.c:203 +#: ../gtk/gtkprogressbar.c:245 msgid "Minimum horizontal bar width" msgstr "Largura horizontal mínima da barra" -#: ../gtk/gtkprogressbar.c:204 +#: ../gtk/gtkprogressbar.c:246 msgid "The minimum horizontal width of the progress bar" msgstr "A largura horizontal mínima da barra de progreso" -#: ../gtk/gtkprogressbar.c:216 +#: ../gtk/gtkprogressbar.c:258 msgid "Minimum horizontal bar height" msgstr "Altura horizontal mínima da barra" -#: ../gtk/gtkprogressbar.c:217 +#: ../gtk/gtkprogressbar.c:259 msgid "Minimum horizontal height of the progress bar" msgstr "A altura horizontal mínima da barra de progreso" -#: ../gtk/gtkprogressbar.c:229 +#: ../gtk/gtkprogressbar.c:271 msgid "Minimum vertical bar width" msgstr "Largura vertical mínima da barra" -#: ../gtk/gtkprogressbar.c:230 +#: ../gtk/gtkprogressbar.c:272 msgid "The minimum vertical width of the progress bar" msgstr "A largura vertical mínima da barra de progreso" -#: ../gtk/gtkprogressbar.c:242 +#: ../gtk/gtkprogressbar.c:284 msgid "Minimum vertical bar height" msgstr "Altura vertical mínima da barra" -#: ../gtk/gtkprogressbar.c:243 +#: ../gtk/gtkprogressbar.c:285 msgid "The minimum vertical height of the progress bar" msgstr "A altura vertical mínima da barra de progreso" @@ -4408,7 +4741,7 @@ msgstr "" "O valor devolto por gtk_radio_action_get_current_value() cando esta acción é " "a acción actual do seu grupo." -#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:160 +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 #: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "Grupo" @@ -4429,7 +4762,7 @@ msgstr "" "A propiedade do valor do membro actualmente activo do grupo ao que esta " "acción pertence." -#: ../gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "O botón de opción a cuxo grupo pertence este widget." @@ -4441,29 +4774,21 @@ msgstr "O elemento do menú de opción a cuxo grupo pertence este widget." msgid "The radio tool button whose group this button belongs to." msgstr "O botón de ferramenta de opción a cuxo grupo pertence este botón." -#: ../gtk/gtkrange.c:416 -msgid "Update policy" -msgstr "Política de actualización" - #: ../gtk/gtkrange.c:417 -msgid "How the range should be updated on the screen" -msgstr "Como se debe actualizar o intervalo na pantalla" - -#: ../gtk/gtkrange.c:426 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "O GtkAdjustment que contén o valor actual deste intervalo de obxectos" -#: ../gtk/gtkrange.c:434 +#: ../gtk/gtkrange.c:425 msgid "Invert direction slider moves to increase range value" msgstr "" "Inverter a dirección en que se move o control desprazábel para incrementar o " "valor do intervalo" -#: ../gtk/gtkrange.c:441 +#: ../gtk/gtkrange.c:432 msgid "Lower stepper sensitivity" msgstr "Sensibilidade de paso inferior" -#: ../gtk/gtkrange.c:442 +#: ../gtk/gtkrange.c:433 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" @@ -4471,11 +4796,11 @@ msgstr "" "A política de sensibilidade para o paso que apunta ao lado máis baixo do " "axuste" -#: ../gtk/gtkrange.c:450 +#: ../gtk/gtkrange.c:441 msgid "Upper stepper sensitivity" msgstr "Sensibilidade do paso superior" -#: ../gtk/gtkrange.c:451 +#: ../gtk/gtkrange.c:442 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" @@ -4483,89 +4808,99 @@ msgstr "" "A política de sensibilidade para o paso que apunta ao lado máis alto do " "axuste" -#: ../gtk/gtkrange.c:468 +#: ../gtk/gtkrange.c:459 msgid "Show Fill Level" msgstr "Mostrar nivel de recheo" -#: ../gtk/gtkrange.c:469 +#: ../gtk/gtkrange.c:460 msgid "Whether to display a fill level indicator graphics on trough." msgstr "" "Indica se se debe mostrar o indicador gráfico de nivel de recheo mentres se " "enche." -#: ../gtk/gtkrange.c:485 +#: ../gtk/gtkrange.c:476 msgid "Restrict to Fill Level" msgstr "Restrinxir ao nivel de recheo" -#: ../gtk/gtkrange.c:486 +#: ../gtk/gtkrange.c:477 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Indica se se debe restrinxir o bordo superior ao nivel de recheo." -#: ../gtk/gtkrange.c:501 +#: ../gtk/gtkrange.c:492 msgid "Fill Level" msgstr "Nivel de recheo" -#: ../gtk/gtkrange.c:502 +#: ../gtk/gtkrange.c:493 msgid "The fill level." msgstr "O nivel de recheo." #: ../gtk/gtkrange.c:510 +#, fuzzy +msgid "Round Digits" +msgstr "Díxitos" + +#: ../gtk/gtkrange.c:511 +#, fuzzy +msgid "The number of digits to round the value to." +msgstr "O número de páxinas do documento." + +#: ../gtk/gtkrange.c:519 ../gtk/gtkswitch.c:786 msgid "Slider Width" msgstr "Largura do control desprazábel" -#: ../gtk/gtkrange.c:511 +#: ../gtk/gtkrange.c:520 msgid "Width of scrollbar or scale thumb" msgstr "Largura da barra de desprazamento ou do indicador de escala" -#: ../gtk/gtkrange.c:518 +#: ../gtk/gtkrange.c:527 msgid "Trough Border" msgstr "Bordo do canal" -#: ../gtk/gtkrange.c:519 +#: ../gtk/gtkrange.c:528 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "" "Espazamento entre o indicador de escala ou os pasos e o bisel do canal " "exterior" -#: ../gtk/gtkrange.c:526 +#: ../gtk/gtkrange.c:535 msgid "Stepper Size" msgstr "Tamaño do paso" -#: ../gtk/gtkrange.c:527 +#: ../gtk/gtkrange.c:536 msgid "Length of step buttons at ends" msgstr "Lonxitude dos botóns de paso nos extremos" -#: ../gtk/gtkrange.c:542 +#: ../gtk/gtkrange.c:551 msgid "Stepper Spacing" msgstr "Espazamento do paso" -#: ../gtk/gtkrange.c:543 +#: ../gtk/gtkrange.c:552 msgid "Spacing between step buttons and thumb" msgstr "Espazamento entre os botóns de paso e o indicador de escala" -#: ../gtk/gtkrange.c:550 +#: ../gtk/gtkrange.c:559 msgid "Arrow X Displacement" msgstr "Desprazamento X da frecha" -#: ../gtk/gtkrange.c:551 +#: ../gtk/gtkrange.c:560 msgid "" "How far in the x direction to move the arrow when the button is depressed" msgstr "Até onde se move a frecha na dirección X cando se solta o botón" -#: ../gtk/gtkrange.c:558 +#: ../gtk/gtkrange.c:567 msgid "Arrow Y Displacement" msgstr "Desprazamento Y da frecha" -#: ../gtk/gtkrange.c:559 +#: ../gtk/gtkrange.c:568 msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "Até onde se move a frecha na dirección Y cando se solta o botón" -#: ../gtk/gtkrange.c:577 +#: ../gtk/gtkrange.c:586 msgid "Trough Under Steppers" msgstr "Canal baixo os pasos" -#: ../gtk/gtkrange.c:578 +#: ../gtk/gtkrange.c:587 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" @@ -4573,11 +4908,11 @@ msgstr "" "Indica se se debuxa para toda a lonxitude do intervalo ou se exclúe os pasos " "e o espazamento" -#: ../gtk/gtkrange.c:591 +#: ../gtk/gtkrange.c:600 msgid "Arrow scaling" msgstr "Escalado de frecha" -#: ../gtk/gtkrange.c:592 +#: ../gtk/gtkrange.c:601 msgid "Arrow scaling with regard to scroll button size" msgstr "O escalado da frecha con atención ao tamaño do botón de desprazamento" @@ -4674,172 +5009,171 @@ msgstr "" msgid "The size of the recently used resources list" msgstr "O tamaño da lista de recursos usados recentemente" -# verificar: High= alta e low= baixa -#: ../gtk/gtkruler.c:138 -msgid "Lower" -msgstr "Inferior" - -#: ../gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "Límite inferior da regra" - -#: ../gtk/gtkruler.c:148 -msgid "Upper" -msgstr "Superior" - -#: ../gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "Límite superior da regra" - -#: ../gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "Posición da marca na regra" - -#: ../gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "Tamaño máximo" - -#: ../gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "Tamaño máximo da regra" - -#: ../gtk/gtkruler.c:184 -msgid "Metric" -msgstr "Métrica" - -#: ../gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "A métrica que se usa na regra" - -#: ../gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "O valor da escala" -#: ../gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "O tamaño da icona" -#: ../gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:237 msgid "" "The GtkAdjustment that contains the current value of this scale button object" msgstr "" "O GtkAdjustment que contén o valor actual deste obxecto de botón de escala" -#: ../gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "Iconas" -#: ../gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "Lista dos nomes de iconas" -#: ../gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "O número de lugares decimais que se mostran no valor" -#: ../gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Valor de debuxo" -#: ../gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "" "Indica se o valor actual se mostra como unha cadea contigua ao control " "desprazábel" -#: ../gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Posición do valor" -#: ../gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "A posición na que se mostra o valor actual" -#: ../gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Lonxitude do control desprazábel" -#: ../gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Lonxitude da escala do control desprazábel" -#: ../gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Espazamento do valor" -#: ../gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "" "Espazo entre os valores de texto e a área do control desprazábel ou o canal" -#: ../gtk/gtkscrollbar.c:75 +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "Axuste horizontal" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Axuste horizontal que é compartido entre o widget desprazábel e o seu " +"controlador" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "Axuste vertical" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"O axuste vertical que é compartido entre o widget desprazábel e o seu " +"controlador" + +#: ../gtk/gtkscrollable.c:120 +msgid "Horizontal Scrollable Policy" +msgstr "Normativa do desprazamento horizontal" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "Como se debe determinar o tamaño do contido" + +#: ../gtk/gtkscrollable.c:136 +msgid "Vertical Scrollable Policy" +msgstr "Normativa de desprazamento vertical" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Lonxitude mínima do control desprazábel" -#: ../gtk/gtkscrollbar.c:76 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Tamaño mínimo da barra de desprazamento do control desprazábel" -#: ../gtk/gtkscrollbar.c:84 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Tamaño fixo do control desprazábel" -#: ../gtk/gtkscrollbar.c:85 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "" "Non cambiar o tamaño do control desprazábel, bloquealo na lonxitude mínima" -#: ../gtk/gtkscrollbar.c:106 +#: ../gtk/gtkscrollbar.c:103 msgid "" "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "" "Mostra un segundo botón de frecha de retroceso no extremo oposto da barra de " "desprazamento" -#: ../gtk/gtkscrollbar.c:113 +#: ../gtk/gtkscrollbar.c:110 msgid "" "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "" "Mostra un segundo botón de frecha de avance no extremo oposto da barra de " "desprazamento" -#: ../gtk/gtkscrolledwindow.c:295 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "Axuste horizontal" -#: ../gtk/gtkscrolledwindow.c:296 +#: ../gtk/gtkscrolledwindow.c:297 msgid "The GtkAdjustment for the horizontal position" msgstr "O GtkAdjustment para a posición horizontal" -#: ../gtk/gtkscrolledwindow.c:302 +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "Axuste vertical" -#: ../gtk/gtkscrolledwindow.c:303 +#: ../gtk/gtkscrolledwindow.c:304 msgid "The GtkAdjustment for the vertical position" msgstr "O GtkAdjustment para a posición vertical" -#: ../gtk/gtkscrolledwindow.c:309 +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "Comportamento da barra de desprazamento horizontal" -#: ../gtk/gtkscrolledwindow.c:310 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "Cando se mostra a barra de desprazamento horizontal" -#: ../gtk/gtkscrolledwindow.c:317 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "Comportamento da barra de desprazamento vertical" -#: ../gtk/gtkscrolledwindow.c:318 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "Cando se mostra a barra de desprazamento vertical" -#: ../gtk/gtkscrolledwindow.c:326 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "Colocación da xanela" -#: ../gtk/gtkscrolledwindow.c:327 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -4847,11 +5181,11 @@ msgstr "" "Onde se colocan os contidos respecto ás barras de desprazamento. Esta " "propiedade só ten efecto se \"window-placement-set\" é TRUE." -#: ../gtk/gtkscrolledwindow.c:344 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "Definición da colocación da xanela" -#: ../gtk/gtkscrolledwindow.c:345 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -4859,63 +5193,63 @@ msgstr "" "Indica se debe usarse \"window-placement\" para determinar a localización do " "contido respecto ás barras de desprazamento." -#: ../gtk/gtkscrolledwindow.c:351 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "Tipo de sombra" -#: ../gtk/gtkscrolledwindow.c:352 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "Estilo de bisel ao redor dos contidos" -#: ../gtk/gtkscrolledwindow.c:366 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "Barra de desprazamento no bisel" -#: ../gtk/gtkscrolledwindow.c:367 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "" "Colocar as barras de desprazamento no bisel da xanela con desprazamento" -#: ../gtk/gtkscrolledwindow.c:373 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "Espazamento da barra de desprazamento" -#: ../gtk/gtkscrolledwindow.c:374 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "" "Número de píxeles entre as barras de desprazamentos e a xanela con " "desprazamento" -#: ../gtk/gtkscrolledwindow.c:383 +#: ../gtk/gtkscrolledwindow.c:391 msgid "Minimum Content Width" msgstr "Anchura mínima do contido" -#: ../gtk/gtkscrolledwindow.c:384 +#: ../gtk/gtkscrolledwindow.c:392 msgid "The minimum width that the scrolled window will allocate to its content" msgstr "A anchura mínima que a xanela desprazada reservará para o seu contido" -#: ../gtk/gtkscrolledwindow.c:390 +#: ../gtk/gtkscrolledwindow.c:406 msgid "Minimum Content Height" msgstr "Altura mínima do contido" -#: ../gtk/gtkscrolledwindow.c:391 +#: ../gtk/gtkscrolledwindow.c:407 msgid "" "The minimum height that the scrolled window will allocate to its content" msgstr "A altura mínima que a xanela desprazada reservará para o seu contido" -#: ../gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "Debuxar" -#: ../gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "Indica se se debuxa o separador ou se se deixa en branco" -#: ../gtk/gtksettings.c:241 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Tempo do dobre clic" -#: ../gtk/gtksettings.c:242 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4923,11 +5257,11 @@ msgstr "" "Tempo máximo permitido entre dous clics para ser considerados como un clic " "dobre (en milisegundos)" -#: ../gtk/gtksettings.c:249 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Distancia do dobre clic" -#: ../gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -4935,36 +5269,36 @@ msgstr "" "Distancia máxima permitida entre dous clics para ser considerados como un " "dobre clic (en píxeles)" -#: ../gtk/gtksettings.c:266 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Intermitencia do cursor" -#: ../gtk/gtksettings.c:267 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Indica se o cursor debe pestanexar" -#: ../gtk/gtksettings.c:274 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Tempo de intermitencia do cursor" -#: ../gtk/gtksettings.c:275 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Duración do ciclo de intermitencia do cursor, en milisegundos" -#: ../gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Tempo de intermitencia do cursor" -#: ../gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "" "Duración a partir de que se detén a intermitencia do cursor, en segundos" -#: ../gtk/gtksettings.c:302 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Cursor dividido" -#: ../gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -4972,157 +5306,157 @@ msgstr "" "Indica se se deben mostrar dous cursores para o texto mesturado de esquerda " "a dereita e de dereita a esquerda" -#: ../gtk/gtksettings.c:310 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Nome do tema" -#: ../gtk/gtksettings.c:311 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Nome do ficheiro de tema RC para cargar" -#: ../gtk/gtksettings.c:319 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Nome do tema de iconas" -#: ../gtk/gtksettings.c:320 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Nome do tema de iconas para usar" -#: ../gtk/gtksettings.c:328 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Nome do tema de iconas do modo de emerxencia" -#: ../gtk/gtksettings.c:329 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Nome do tema de iconas que usar cando o escollido falle" -#: ../gtk/gtksettings.c:337 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Nome do tema principal" -#: ../gtk/gtksettings.c:338 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Nome do ficheiro de tema RC principal para cargar" -#: ../gtk/gtksettings.c:346 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Tecla rápida da barra de menús" -#: ../gtk/gtksettings.c:347 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Combinación de teclas para activar a barra de menús" -#: ../gtk/gtksettings.c:355 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Límite de arrastre" -#: ../gtk/gtksettings.c:356 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Número de píxeles que o cursor pode mover antes de iniciar o arrastre" -#: ../gtk/gtksettings.c:364 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Nome do tipo de letra" -#: ../gtk/gtksettings.c:365 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Nome do tipo de letra predefinido que usar" -#: ../gtk/gtksettings.c:387 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Tamaño das iconas" -#: ../gtk/gtksettings.c:388 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "Lista dos tamaños das iconas (gtk-menu=16,16:gtk-button=20,20..." -#: ../gtk/gtksettings.c:396 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "Módulos GTK" -#: ../gtk/gtksettings.c:397 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "Lista dos módulos GTK actualmente activos" -#: ../gtk/gtksettings.c:406 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Suavizado Xft" -#: ../gtk/gtksettings.c:407 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Indica se se suavizan os bordos dos tipo de letra Xft, 0=non, 1=si, " "-1=predefinido" -#: ../gtk/gtksettings.c:416 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Contorno Xft" -#: ../gtk/gtksettings.c:417 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Indica se se usa o contorno dos tipo de letra Xft; 0=non, 1=si, " "-1=predefinido" -#: ../gtk/gtksettings.c:426 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Estilo de contorno Xft" -#: ../gtk/gtksettings.c:427 +#: ../gtk/gtksettings.c:485 msgid "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "" "Que grao de contorno hai que usar: ningunha, lixeira, media ou completa" -#: ../gtk/gtksettings.c:436 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: ../gtk/gtksettings.c:437 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Tipo de suavizado de subpíxel: ningún, rgb, vrgb, vbgr" -#: ../gtk/gtksettings.c:446 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "PPP Xft" -#: ../gtk/gtksettings.c:447 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "" "Resolución para Xft, en 1024 * puntos por polgada. -1 para usar o valor " "predefinido" -#: ../gtk/gtksettings.c:456 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Nome do tema de cursor" -#: ../gtk/gtksettings.c:457 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "Nome do tema de cursor que usar ou NULL para usar o tema predefinido" -#: ../gtk/gtksettings.c:465 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Tamaño do tema de cursor" -#: ../gtk/gtksettings.c:466 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "" "Tamaño que se vai usar para os cursores ou 0 para usar o tamaño predefinido" -#: ../gtk/gtksettings.c:476 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Orde alternativa dos botóns" -#: ../gtk/gtksettings.c:477 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "" "Indica se os botóns nos diálogos deben usar a orde alternativa de botóns" -#: ../gtk/gtksettings.c:494 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Dirección alternativa do indicador de orde" -#: ../gtk/gtksettings.c:495 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -5131,11 +5465,11 @@ msgstr "" "en árbore está invertida en comparación coa predefinida (onde abaixo " "significa ascendente)" -#: ../gtk/gtksettings.c:503 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Mostrar o menú Métodos de entrada" -#: ../gtk/gtksettings.c:504 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" @@ -5143,11 +5477,11 @@ msgstr "" "Indica se os menús de contexto das entradas e as visualizacións de texto " "deben ofrecer modificar o método de entrada" -#: ../gtk/gtksettings.c:512 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Mostrar o menú Inserir carácter de control Unicode" -#: ../gtk/gtksettings.c:513 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" @@ -5155,253 +5489,253 @@ msgstr "" "Indica se os menús de contexto das entradas e as visualizacións de texto " "deben ofrecer inserir caracteres de control" -#: ../gtk/gtksettings.c:521 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Comezar o tempo de espera" -#: ../gtk/gtksettings.c:522 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Valor de inicio para o tempo de espera, cando se prema o botón" -#: ../gtk/gtksettings.c:531 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Repetir o tempo de espera" -#: ../gtk/gtksettings.c:532 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Valor de repetición para o tempo de espera, cando o botón se prema" -#: ../gtk/gtksettings.c:541 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Ampliar o tempo de espera" -#: ../gtk/gtksettings.c:542 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "" "Valor de ampliación para os tempos de espera, cando un widget está " "expandindo unha nova rexión" -#: ../gtk/gtksettings.c:577 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Esquema de cor" -#: ../gtk/gtksettings.c:578 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "Unha paleta de cores con nome para usar nos temas" -#: ../gtk/gtksettings.c:587 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Activar animacións" -#: ../gtk/gtksettings.c:588 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Indica se se activan as animacións para todo o toolkit." -#: ../gtk/gtksettings.c:606 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Activar o modo de pantalla táctil" -#: ../gtk/gtksettings.c:607 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "" "Cando é TRUE, non se envían eventos de notificación de movemento a esta " "pantalla" -#: ../gtk/gtksettings.c:624 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tempo de espera da indicación" -#: ../gtk/gtksettings.c:625 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Tempo de espera antes de que se mostre a indicación" -#: ../gtk/gtksettings.c:650 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Tempo de espera da indicación de navegación" -#: ../gtk/gtksettings.c:651 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "" "Tempo de espera antes de que se mostre a indicación cando o modo de " "navegación está activo" -#: ../gtk/gtksettings.c:672 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Tempo de espera da indicación en modo de navegación" -#: ../gtk/gtksettings.c:673 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "Tempo de espera despois do que se desactiva o modo de navegación" -#: ../gtk/gtksettings.c:692 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Só cursor para navegar con teclas" -#: ../gtk/gtksettings.c:693 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "" "Cando sexa TRUE, só hai teclas de cursor dispoñíbeis para navegar polos " "widgets" -#: ../gtk/gtksettings.c:710 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Dar a volta coa navegación con teclas" -#: ../gtk/gtksettings.c:711 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "Indica se se dá a volta cando se navegue cos widgets co teclado" -#: ../gtk/gtksettings.c:731 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Campá de erro" -#: ../gtk/gtksettings.c:732 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "" "Cando sexa TRUE, a navegación co teclado e outros erros emitirán un ton de " "aviso" -#: ../gtk/gtksettings.c:749 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Hash da cor" -#: ../gtk/gtksettings.c:750 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "Unha representación en táboa hash do esquema de cor." -#: ../gtk/gtksettings.c:758 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Backend predefinido do selector de ficheiros" -#: ../gtk/gtksettings.c:759 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Nome do backend do GtkFileChooser para usar por defecto" -#: ../gtk/gtksettings.c:776 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Backend de impresión predefinido" -#: ../gtk/gtksettings.c:777 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "Lista dos backends do GtkPrintBackend para usar por defecto" -#: ../gtk/gtksettings.c:800 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "" "Orde predefinida para executar ao mostrar unha visualización previa de " "impresión" -#: ../gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Orde para executar ao mostrar unha visualización previa de impresión" -#: ../gtk/gtksettings.c:817 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Activar mnemónicos" -#: ../gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Indica se as etiquetas deben ser mnemónicas" -#: ../gtk/gtksettings.c:834 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Activar teclas rápidas" -#: ../gtk/gtksettings.c:835 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Indica se os elementos de menús deben ter teclas rápidas" -#: ../gtk/gtksettings.c:852 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Límite de ficheiros recentes" -#: ../gtk/gtksettings.c:853 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Número de ficheiros usados recentemente" -#: ../gtk/gtksettings.c:871 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Módulo de MI predefinido" -#: ../gtk/gtksettings.c:872 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "O módulo de MI que se debería usar por defecto" -#: ../gtk/gtksettings.c:890 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Antigüidade máxima dos ficheiros recentes" -#: ../gtk/gtksettings.c:891 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "A antigüidade máxima dos ficheiros usados recentemente, en días" -#: ../gtk/gtksettings.c:900 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Marca temporal de configuración do Fontconfig" -#: ../gtk/gtksettings.c:901 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "A marca temporal da configuración actual do Fontconfig" -#: ../gtk/gtksettings.c:923 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Nome do tema de son" -#: ../gtk/gtksettings.c:924 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "Nome do tema de son XDG" #. Translators: this means sounds that are played as feedback to user input -#: ../gtk/gtksettings.c:946 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Retroacción audíbel á entrada" -#: ../gtk/gtksettings.c:947 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "" "Indica se hai que reproducir eventos de son como retroacción á entrada do " "usuario" -#: ../gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Activar os eventos de son" -#: ../gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Indica se hai que activar todos os eventos de son" -#: ../gtk/gtksettings.c:984 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Activar indicacións" -#: ../gtk/gtksettings.c:985 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Indica se se deberían mostrar as indicacións nos widgets" -#: ../gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Estilo da barra de ferramentas" -#: ../gtk/gtksettings.c:999 +#: ../gtk/gtksettings.c:1057 msgid "" "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "" "Indica se as barras de ferramentas predefinidas teñen só texto, texto e " "iconas, só iconas etc." -#: ../gtk/gtksettings.c:1013 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Tamaño da icona da barra de ferramentas" -#: ../gtk/gtksettings.c:1014 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "Tamaño das iconas das barras de ferramentas predefinidas." -#: ../gtk/gtksettings.c:1031 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Mnemónicos automáticos" -#: ../gtk/gtksettings.c:1032 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." @@ -5409,62 +5743,62 @@ msgstr "" "Indica se os mnemónicos deberían mostrarse e agocharse automáticamente cando " "o usuario prema un activador de mnemónico." -#: ../gtk/gtksettings.c:1057 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "O aplicativo prefire un tema escuro" -#: ../gtk/gtksettings.c:1058 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "Indica se o aplicativo prefire un tema escuro." -#: ../gtk/gtksettings.c:1073 +#: ../gtk/gtksettings.c:1131 msgid "Show button images" msgstr "Mostrar imaxes no botón" -#: ../gtk/gtksettings.c:1074 +#: ../gtk/gtksettings.c:1132 msgid "Whether images should be shown on buttons" msgstr "Indica se se deberían mostrar as imaxes nos botóns" -#: ../gtk/gtksettings.c:1082 ../gtk/gtksettings.c:1176 +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 msgid "Select on focus" msgstr "Seleccionar ao enfocar" -#: ../gtk/gtksettings.c:1083 +#: ../gtk/gtksettings.c:1141 msgid "Whether to select the contents of an entry when it is focused" msgstr "" "Indica se se deben seleccionar os contidos dunha entrada cando está enfocada" -#: ../gtk/gtksettings.c:1100 +#: ../gtk/gtksettings.c:1158 msgid "Password Hint Timeout" msgstr "Tempo de espera para a suxestión de contrasinal" -#: ../gtk/gtksettings.c:1101 +#: ../gtk/gtksettings.c:1159 msgid "How long to show the last input character in hidden entries" msgstr "" "Durante canto tempo hai que mostrar o último carácter introducido nas " "entradas ocultas" -#: ../gtk/gtksettings.c:1110 +#: ../gtk/gtksettings.c:1168 msgid "Show menu images" msgstr "Mostrar as imaxes de menú" -#: ../gtk/gtksettings.c:1111 +#: ../gtk/gtksettings.c:1169 msgid "Whether images should be shown in menus" msgstr "Indica se se deben mostrar ou non as imaxes nos menús" -#: ../gtk/gtksettings.c:1119 +#: ../gtk/gtksettings.c:1177 msgid "Delay before drop down menus appear" msgstr "Atraso antes de que os menús despregábeis aparezan" -#: ../gtk/gtksettings.c:1120 +#: ../gtk/gtksettings.c:1178 msgid "Delay before the submenus of a menu bar appear" msgstr "Atraso antes de que os submenús dunha barra de menú aparezan" -#: ../gtk/gtksettings.c:1137 +#: ../gtk/gtksettings.c:1195 msgid "Scrolled Window Placement" msgstr "Colocación da xanela con desprazamento" -#: ../gtk/gtksettings.c:1138 +#: ../gtk/gtksettings.c:1196 msgid "" "Where the contents of scrolled windows are located with respect to the " "scrollbars, if not overridden by the scrolled window's own placement." @@ -5473,33 +5807,33 @@ msgstr "" "barras de desprazamento, se non toma precedencia a colocación da propia " "xanela con desprazamento." -#: ../gtk/gtksettings.c:1147 +#: ../gtk/gtksettings.c:1205 msgid "Can change accelerators" msgstr "Pode cambiar as teclas rápidas" -#: ../gtk/gtksettings.c:1148 +#: ../gtk/gtksettings.c:1206 msgid "" "Whether menu accelerators can be changed by pressing a key over the menu item" msgstr "" "Indica se as teclas rápidas do menú poden ser cambiadas premendo unha tecla " "sobre o elemento de menú" -#: ../gtk/gtksettings.c:1156 +#: ../gtk/gtksettings.c:1214 msgid "Delay before submenus appear" msgstr "Atraso antes de que os submenús aparezan" -#: ../gtk/gtksettings.c:1157 +#: ../gtk/gtksettings.c:1215 msgid "" "Minimum time the pointer must stay over a menu item before the submenu appear" msgstr "" "Tempo mínimo no que o punteiro debe permanecer sobre un elemento de menú " "antes de que o submenú apareza" -#: ../gtk/gtksettings.c:1166 +#: ../gtk/gtksettings.c:1224 msgid "Delay before hiding a submenu" msgstr "Atraso antes de ocultar un submenú" -#: ../gtk/gtksettings.c:1167 +#: ../gtk/gtksettings.c:1225 msgid "" "The time before hiding a submenu when the pointer is moving towards the " "submenu" @@ -5507,41 +5841,41 @@ msgstr "" "Tempo antes de ocultar un submenú cando o punteiro se estea a mover cara ao " "submenú" -#: ../gtk/gtksettings.c:1177 +#: ../gtk/gtksettings.c:1235 msgid "Whether to select the contents of a selectable label when it is focused" msgstr "" "Indica se se seleccionan os contidos dunha etiqueta seleccionábel cando está " "enfocada" -#: ../gtk/gtksettings.c:1185 +#: ../gtk/gtksettings.c:1243 msgid "Custom palette" msgstr "Paleta personalizada" -#: ../gtk/gtksettings.c:1186 +#: ../gtk/gtksettings.c:1244 msgid "Palette to use in the color selector" msgstr "A paleta que se usará no selector de cores" -#: ../gtk/gtksettings.c:1194 +#: ../gtk/gtksettings.c:1252 msgid "IM Preedit style" msgstr "Estilo preedit IM" -#: ../gtk/gtksettings.c:1195 +#: ../gtk/gtksettings.c:1253 msgid "How to draw the input method preedit string" msgstr "Como debuxar a cadea do método de entrada de preedit" -#: ../gtk/gtksettings.c:1204 +#: ../gtk/gtksettings.c:1262 msgid "IM Status style" msgstr "Estilo do estado IM" -#: ../gtk/gtksettings.c:1205 +#: ../gtk/gtksettings.c:1263 msgid "How to draw the input method statusbar" msgstr "Como debuxar o método de entrada da barra de estado" -#: ../gtk/gtksizegroup.c:350 +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "Modo" -#: ../gtk/gtksizegroup.c:351 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" @@ -5549,26 +5883,26 @@ msgstr "" "As direccións en que o tamaño do grupo afecta aos tamaños solicitados dos " "seus compoñentes widgets" -#: ../gtk/gtksizegroup.c:367 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "Ignorar ocultos" -#: ../gtk/gtksizegroup.c:368 +#: ../gtk/gtksizegroup.c:369 msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "" "Se é TRUE, os widgets non mapeados ignoraranse ao determinar o tamaño do " "grupo" -#: ../gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "Taxa de incremento" -#: ../gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "Axustar aos pasos" -#: ../gtk/gtkspinbutton.c:257 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" @@ -5576,203 +5910,184 @@ msgstr "" "Indica se os valores errados se cambian automaticamente polo incremento de " "paso máis próximo dun botón de axuste" -#: ../gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "Numérico" -#: ../gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" msgstr "Indica se se deben ignorar os caracteres non numéricos" -#: ../gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "Axustar" -#: ../gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "" "Indica se un botón de axuste debe axustarse cara a arriba até alcanzar os " "seus límites" -#: ../gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "Política de actualización" -#: ../gtk/gtkspinbutton.c:281 +#: ../gtk/gtkspinbutton.c:373 msgid "" "Whether the spin button should update always, or only when the value is legal" msgstr "" "Indica se o botón de axuste debe actualizarse sempre ou só cando o valor é " "correcto" -#: ../gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "Le o valor actual ou define un valor novo" -#: ../gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "Estilo de bisel ao redor do botón de axuste" -#: ../gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Indica se o spinner é activábel" -#: ../gtk/gtkspinner.c:146 -msgid "Number of steps" -msgstr "Número de pasos" - -#: ../gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"O número de pasos do spinner para completar o bucle. A animación completará " -"un ciclo completo nun segundo de forma predefinida (vexa #GtkSpinner:cicyle-" -"duration)." - -#: ../gtk/gtkspinner.c:162 -msgid "Animation duration" -msgstr "Duración da animación" - -#: ../gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "O tempo en milisegundos para que o spinner complete un bucle completo" - -#: ../gtk/gtkstatusbar.c:179 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "Estilo do bisel ao redor do texto da barra de estado" -#: ../gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "O tamaño da icona" -#: ../gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "A pantalla onde se mostrará esta icona de estado" -#: ../gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "Indica se o estado da icona é visíbel ou non" -#: ../gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "Indica se a icona de estado está incrustada" -#: ../gtk/gtkstatusicon.c:320 ../gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "A orientación da bandexa" -#: ../gtk/gtkstatusicon.c:347 ../gtk/gtkwidget.c:1084 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1042 msgid "Has tooltip" msgstr "Ten indicación" -#: ../gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "Indica se esta icona de bandexa ten unha indicación" -#: ../gtk/gtkstatusicon.c:373 ../gtk/gtkwidget.c:1105 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1063 msgid "Tooltip Text" msgstr "Texto da indicación" -#: ../gtk/gtkstatusicon.c:374 ../gtk/gtkwidget.c:1106 ../gtk/gtkwidget.c:1127 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1064 ../gtk/gtkwidget.c:1085 msgid "The contents of the tooltip for this widget" msgstr "Os contidos da indicación para este widget" -#: ../gtk/gtkstatusicon.c:397 ../gtk/gtkwidget.c:1126 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1084 msgid "Tooltip markup" msgstr "Marcado das indicacións" -#: ../gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "O contido da indicación para esta icona de bandexa" -#: ../gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "O título desta icona na barra de tarefas" -#: ../gtk/gtktable.c:152 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "Contexto do estilo" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "GtkStyleContext de onde obter o estilo" + +#: ../gtk/gtkstylecontext.c:547 +msgid "The associated GdkScreen" +msgstr "O GdkScreen asociado" + +#: ../gtk/gtkstylecontext.c:553 +msgid "Direction" +msgstr "Enderezo" + +#: ../gtk/gtkstylecontext.c:554 ../gtk/gtktexttag.c:236 +msgid "Text direction" +msgstr "Dirección do texto" + +#: ../gtk/gtkswitch.c:753 +msgid "Whether the switch is on or off" +msgstr "Indica se o interruptor está acendido ou apagado" + +#: ../gtk/gtkswitch.c:787 +msgid "The minimum width of the handle" +msgstr "O ancho mínimo do tirador" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "Filas" -#: ../gtk/gtktable.c:153 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "O número de filas na táboa" -#: ../gtk/gtktable.c:161 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "Columnas" -#: ../gtk/gtktable.c:162 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "O número de columnas na táboa" -#: ../gtk/gtktable.c:170 -msgid "Row spacing" -msgstr "Espazamento de fila" - -#: ../gtk/gtktable.c:171 -msgid "The amount of space between two consecutive rows" -msgstr "A cantidade de espazo entre dúas filas consecutivas" - -#: ../gtk/gtktable.c:179 -msgid "Column spacing" -msgstr "Espazamento de columna" - -#: ../gtk/gtktable.c:180 -msgid "The amount of space between two consecutive columns" -msgstr "A cantidade de espazo entre dúas columnas consecutivas" - -#: ../gtk/gtktable.c:189 +#: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "Se é TRUE, as celas da táboa teñen todas a mesma largura ou altura" -#: ../gtk/gtktable.c:196 -msgid "Left attachment" -msgstr "Anexo á esquerda" - -#: ../gtk/gtktable.c:203 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Anexo á dereita" -#: ../gtk/gtktable.c:204 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "O número de columnas para anexar ao lado dereito dun widget fillo" -#: ../gtk/gtktable.c:210 -msgid "Top attachment" -msgstr "Anexo superior" - -#: ../gtk/gtktable.c:211 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "O número de filas para anexar encima do widget fillo" -#: ../gtk/gtktable.c:217 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "Anexo inferior" -#: ../gtk/gtktable.c:224 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "Opcións horizontais" -#: ../gtk/gtktable.c:225 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "Opcións que especifican o comportamento horizontal do fillo" -#: ../gtk/gtktable.c:231 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "Opcións verticais" -#: ../gtk/gtktable.c:232 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "Opcións que especifican o comportamento vertical do fillo" -#: ../gtk/gtktable.c:238 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "Recheo horizontal" -#: ../gtk/gtktable.c:239 +#: ../gtk/gtktable.c:244 msgid "" "Extra space to put between the child and its left and right neighbors, in " "pixels" @@ -5780,11 +6095,11 @@ msgstr "" "Espazo adicional en píxeles para colocar entre o fillo e os seus veciños á " "esquerda e á dereita" -#: ../gtk/gtktable.c:245 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "Recheo vertical" -#: ../gtk/gtktable.c:246 +#: ../gtk/gtktable.c:251 msgid "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" @@ -5858,24 +6173,24 @@ msgstr "Gravidade esquerda" msgid "Whether the mark has left gravity" msgstr "Indica se esta marca ten gravidade esquerda" -#: ../gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:186 msgid "Tag name" msgstr "Nome de etiqueta" -#: ../gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:187 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "" "Nome usado para referirse á etiqueta do texto. NULL para etiquetas anónimas" -#: ../gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:205 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Cor de fondo como unha (posibelmente non asignada) GdkColor" -#: ../gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:212 msgid "Background full height" msgstr "Altura completa do fondo" -#: ../gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:213 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5883,32 +6198,28 @@ msgstr "" "Indica se a cor de fondo enche a altura completa da liña ou só a altura dos " "caracteres etiquetados" -#: ../gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:229 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Cor de primeiro plano como unha (posibelmente non asignada) GdkColor" -#: ../gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "Dirección do texto" - -#: ../gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:237 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "" "Dirección do texto, por exemplo de dereita a esquerda ou de esquerda a " "dereita" -#: ../gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:286 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "" "Estilo do tipo de letra coma un PangoStyle, por exemplo PANGO_STYLE_ITALIC" -#: ../gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:295 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "" "Variante do tipo de letra coma unha PangoVariant, por exemplo " "PANGO_VARIANT_SMALL_CAPS" -#: ../gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:304 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5916,17 +6227,17 @@ msgstr "" "Grosor do tipo de letra como un enteiro. Vexa os valores predefinidas en " "PangoWeight; por exemplo PANGO_WEIGHT_BOLD" -#: ../gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:315 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "" "Tipo de letra axustada coma un PangoStretch, por exemplo " "PANGO_STRETCH_CONDENSED" -#: ../gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:324 msgid "Font size in Pango units" msgstr "Tamaño do tipo de letra en unidades Pango" -#: ../gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:334 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 " @@ -5937,11 +6248,11 @@ msgstr "" "etc., polo que é recomendábel. O Pango define previamente algunhas escalas " "tales como PANGO_SCALE_X_LARGE" -#: ../gtk/gtktexttag.c:336 ../gtk/gtktextview.c:685 +#: ../gtk/gtktexttag.c:354 ../gtk/gtktextview.c:704 msgid "Left, right, or center justification" msgstr "Xustificación á esquerda, á dereita ou ao centro" -#: ../gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:373 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." @@ -5950,31 +6261,31 @@ msgstr "" "como unha axuda ao renderizar o texto. Se non se estabelece este parámetro " "usarase como predefinido o máis apropiado." -#: ../gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:380 msgid "Left margin" msgstr "Marxe esquerda" -#: ../gtk/gtktexttag.c:363 ../gtk/gtktextview.c:694 +#: ../gtk/gtktexttag.c:381 ../gtk/gtktextview.c:713 msgid "Width of the left margin in pixels" msgstr "Largura da marxe esquerda en píxeles" -#: ../gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:390 msgid "Right margin" msgstr "Marxe dereita" -#: ../gtk/gtktexttag.c:373 ../gtk/gtktextview.c:704 +#: ../gtk/gtktexttag.c:391 ../gtk/gtktextview.c:723 msgid "Width of the right margin in pixels" msgstr "Largura da marxe dereita en píxeles" -#: ../gtk/gtktexttag.c:383 ../gtk/gtktextview.c:713 +#: ../gtk/gtktexttag.c:401 ../gtk/gtktextview.c:732 msgid "Indent" msgstr "Sangría" -#: ../gtk/gtktexttag.c:384 ../gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:402 ../gtk/gtktextview.c:733 msgid "Amount to indent the paragraph, in pixels" msgstr "Cantidade en píxeles para a sangría de parágrafo" -#: ../gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:413 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -5982,231 +6293,235 @@ msgstr "" "Desprazamento do texto sobre a liña base (por debaixo da liña base se a " "elevación é negativa) en unidades Pango" -#: ../gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:422 msgid "Pixels above lines" msgstr "Píxeles encima das liñas" -#: ../gtk/gtktexttag.c:405 ../gtk/gtktextview.c:638 +#: ../gtk/gtktexttag.c:423 ../gtk/gtktextview.c:657 msgid "Pixels of blank space above paragraphs" msgstr "Píxeles de espazo en branco encima do parágrafos" -#: ../gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:432 msgid "Pixels below lines" msgstr "Píxeles debaixo das liñas" -#: ../gtk/gtktexttag.c:415 ../gtk/gtktextview.c:648 +#: ../gtk/gtktexttag.c:433 ../gtk/gtktextview.c:667 msgid "Pixels of blank space below paragraphs" msgstr "Píxeles de espazo en branco debaixo dos parágrafos" -#: ../gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:442 msgid "Pixels inside wrap" msgstr "Píxeles dentro do axuste" -#: ../gtk/gtktexttag.c:425 ../gtk/gtktextview.c:658 +#: ../gtk/gtktexttag.c:443 ../gtk/gtktextview.c:677 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Píxeles de espazo en branco entre as liñas axustadas nun parágrafo" -#: ../gtk/gtktexttag.c:452 ../gtk/gtktextview.c:676 +#: ../gtk/gtktexttag.c:470 ../gtk/gtktextview.c:695 msgid "" "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "" "Indica se nunca se axustan as liñas aos límites de palabra ou aos límites de " "carácter" -#: ../gtk/gtktexttag.c:461 ../gtk/gtktextview.c:723 +#: ../gtk/gtktexttag.c:479 ../gtk/gtktextview.c:742 msgid "Tabs" msgstr "Separadores" -#: ../gtk/gtktexttag.c:462 ../gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:480 ../gtk/gtktextview.c:743 msgid "Custom tabs for this text" msgstr "Separadores personalizados para este texto" -#: ../gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:498 msgid "Invisible" msgstr "Invisíbel" -#: ../gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:499 msgid "Whether this text is hidden." msgstr "Indica se este texto está oculto." -#: ../gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color name" msgstr "Nome da cor de fondo do parágrafo" -#: ../gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a string" msgstr "Nome da cor de fondo do parágrafo como unha cadea" -#: ../gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:529 msgid "Paragraph background color" msgstr "Cor de fondo do parágrafo" -#: ../gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:530 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "" "Cor de fondo do parágrafo como unha GdkColor (posibelmente non asignada)" -#: ../gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:548 msgid "Margin Accumulates" msgstr "Acumulación de marxes" -#: ../gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:549 msgid "Whether left and right margins accumulate." msgstr "Indica se as marxes esquerda e dereita son acumulativas." -#: ../gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:562 msgid "Background full height set" msgstr "Definición da altura completa do fondo" -#: ../gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:563 msgid "Whether this tag affects background height" msgstr "Indica se esta marca afecta á altura do fondo" -#: ../gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:602 msgid "Justification set" msgstr "Definición da xustificación" -#: ../gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:603 msgid "Whether this tag affects paragraph justification" msgstr "Indica se esta marca afecta á xustificación do parágrafo" -#: ../gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:610 msgid "Left margin set" msgstr "Definición da marxe esquerda" -#: ../gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the left margin" msgstr "Indica se esta marca afecta á marxe esquerda" -#: ../gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:614 msgid "Indent set" msgstr "Definición da sangría" -#: ../gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects indentation" msgstr "Indica se esta marca afecta á sangría" -#: ../gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:622 msgid "Pixels above lines set" msgstr "Definición dos píxeles sobre o conxunto de liñas" -#: ../gtk/gtktexttag.c:605 ../gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:623 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects the number of pixels above lines" msgstr "Indica se esta marca afecta a cantidade de píxeles sobre as liñas" -#: ../gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:626 msgid "Pixels below lines set" msgstr "Definición dos píxeles debaixo do conxunto de liñas" -#: ../gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:630 msgid "Pixels inside wrap set" msgstr "Definición dos píxeles dentro do axuste" -#: ../gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "" "Indica se esta marca afecta a cantidade de píxeles entre as liñas axustadas" -#: ../gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:638 msgid "Right margin set" msgstr "Definición da marxe dereita" -#: ../gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects the right margin" msgstr "Indica se esta marca afecta á marxe dereita" -#: ../gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:646 msgid "Wrap mode set" msgstr "Definición do modo de axuste" -#: ../gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:647 msgid "Whether this tag affects line wrap mode" msgstr "Indica se esta marca afecta ao modo de axuste de liña" -#: ../gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:650 msgid "Tabs set" msgstr "Definición dos separadores" -#: ../gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:651 msgid "Whether this tag affects tabs" msgstr "Indica se esta marca afecta aos separadores" -#: ../gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:654 msgid "Invisible set" msgstr "Definición de invisíbel" -#: ../gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:655 msgid "Whether this tag affects text visibility" msgstr "Indica se esta marca afecta á visibilidade do texto" -#: ../gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:658 msgid "Paragraph background set" msgstr "Definición do fondo de parágrafo" -#: ../gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:659 msgid "Whether this tag affects the paragraph background color" msgstr "Indica se esta etiqueta afecta á cor de fondo de parágrafo" -#: ../gtk/gtktextview.c:637 +#: ../gtk/gtktextview.c:656 msgid "Pixels Above Lines" msgstr "Píxeles encima das liñas" -#: ../gtk/gtktextview.c:647 +#: ../gtk/gtktextview.c:666 msgid "Pixels Below Lines" msgstr "Píxeles debaixo das liñas" -#: ../gtk/gtktextview.c:657 +#: ../gtk/gtktextview.c:676 msgid "Pixels Inside Wrap" msgstr "Píxeles dentro do axuste" -#: ../gtk/gtktextview.c:675 +#: ../gtk/gtktextview.c:694 msgid "Wrap Mode" msgstr "Modo de axuste" -#: ../gtk/gtktextview.c:693 +#: ../gtk/gtktextview.c:712 msgid "Left Margin" msgstr "Marxe esquerda" -#: ../gtk/gtktextview.c:703 +#: ../gtk/gtktextview.c:722 msgid "Right Margin" msgstr "Marxe dereita" -#: ../gtk/gtktextview.c:731 +#: ../gtk/gtktextview.c:750 msgid "Cursor Visible" msgstr "Cursor visíbel" -#: ../gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:751 msgid "If the insertion cursor is shown" msgstr "Se se mostra o cursor de inserción" -#: ../gtk/gtktextview.c:739 +#: ../gtk/gtktextview.c:758 msgid "Buffer" msgstr "Búfer" -#: ../gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:759 msgid "The buffer which is displayed" msgstr "O búfer que se mostra" -#: ../gtk/gtktextview.c:748 +#: ../gtk/gtktextview.c:767 msgid "Whether entered text overwrites existing contents" msgstr "Indica se o texto introducido sobrescribe os contidos existentes" -#: ../gtk/gtktextview.c:755 +#: ../gtk/gtktextview.c:774 msgid "Accepts tab" msgstr "Acepta tabulación" -#: ../gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:775 msgid "Whether Tab will result in a tab character being entered" msgstr "Indica se o tabulador resultará nun carácter de tabulación introducido" -#: ../gtk/gtktextview.c:791 +#: ../gtk/gtktextview.c:810 msgid "Error underline color" msgstr "Cor de subliñado de erros" -#: ../gtk/gtktextview.c:792 +#: ../gtk/gtktextview.c:811 msgid "Color with which to draw error-indication underlines" msgstr "Cor coa que debuxar o subliñado de indicación de erros" +#: ../gtk/gtkthemingengine.c:249 +msgid "Theming engine name" +msgstr "Nome do motor de temas" + #: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Crear os mesmos proxies como unha acción radio" @@ -6221,109 +6536,109 @@ msgstr "" msgid "Whether the toggle action should be active" msgstr "Se a acción de conmutación debe estar activa ou non" -#: ../gtk/gtktogglebutton.c:123 ../gtk/gtktoggletoolbutton.c:113 +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 msgid "If the toggle button should be pressed in" msgstr "Se o botón de estado debe estar premido ou non" -#: ../gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "Se o botón de estado está en estado \"intermedio\"" -#: ../gtk/gtktogglebutton.c:138 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "Debuxar o indicador" -#: ../gtk/gtktogglebutton.c:139 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "Se se mostra a parte de activación do botón" -#: ../gtk/gtktoolbar.c:485 ../gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1062 msgid "Toolbar Style" msgstr "Estilo da barra de ferramentas" -#: ../gtk/gtktoolbar.c:486 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "Como debuxar a barra de ferramentas" -#: ../gtk/gtktoolbar.c:493 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "Mostrar frecha" -#: ../gtk/gtktoolbar.c:494 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "Se debe mostrar unha frecha se a barra de ferramentas non encaixa" -#: ../gtk/gtktoolbar.c:515 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "Tamaño das iconas nesta barra de ferramentas" -#: ../gtk/gtktoolbar.c:530 ../gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1048 msgid "Icon size set" msgstr "Definición do tamaño da icona" -#: ../gtk/gtktoolbar.c:531 ../gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1049 msgid "Whether the icon-size property has been set" msgstr "Indica se se estabeleceu a propiedade de tamaño da icona" -#: ../gtk/gtktoolbar.c:540 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "" "Indica se o elemento debe recibir espazo adicional cando a barra de " "ferramentas medre" -#: ../gtk/gtktoolbar.c:548 ../gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1648 msgid "Whether the item should be the same size as other homogeneous items" msgstr "" "Indica se o elemento debería ser do mesmo tamaño que outros elementos " "homoxéneos" -#: ../gtk/gtktoolbar.c:555 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "Tamaño do espazador" -#: ../gtk/gtktoolbar.c:556 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "Tamaño dos espazadores" -#: ../gtk/gtktoolbar.c:565 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "" "Cantidade de espazo do bordo entre a sombra da barra de ferramentas e os " "botóns" -#: ../gtk/gtktoolbar.c:573 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "Expansión de fillos máxima" -#: ../gtk/gtktoolbar.c:574 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "Cantidade máxima de espazo que se lle dará a un elemento expandíbel" -#: ../gtk/gtktoolbar.c:582 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "Estilo do espazo" -#: ../gtk/gtktoolbar.c:583 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "Indica se os espazadores son liñas verticais ou só espazos en branco" -#: ../gtk/gtktoolbar.c:590 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "Relevo do botón" -#: ../gtk/gtktoolbar.c:591 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "Tipo de bisel ao redor dos botóns da barra de ferramentas" -#: ../gtk/gtktoolbar.c:598 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "Estilo do bisel ao redor da barra de ferramentas" -#: ../gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "Texto para mostrar no elemento." -#: ../gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6332,43 +6647,43 @@ msgstr "" "seguinte carácter debería usarse para a tecla rápida mnemónica no menú de " "desbordamento" -#: ../gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "Widget que usar como etiqueta do elemento" -#: ../gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "ID de inventario" -#: ../gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "A icona de inventario mostrada no elemento" -#: ../gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "Nome da icona" -#: ../gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "O nome da icona de tema mostrada no elemento" -#: ../gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "Icona do widget" -#: ../gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "Icona do widget para mostrar no elemento" -#: ../gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "Espazamento da icona" -#: ../gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "Espazamento en píxeles entre a icona e a etiqueta" -#: ../gtk/gtktoolitem.c:201 +#: ../gtk/gtktoolitem.c:210 msgid "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" @@ -6377,498 +6692,531 @@ msgstr "" "é TRUE, os botóns da barra de ferramentas mostran o texto no modo " "GTK_TOOLBAR_BOTH_HORIZ" -#: ../gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "The human-readable title of this item group" msgstr "Unha descrición lexíbel por humanos do elemento de grupo" -#: ../gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "A widget to display in place of the usual label" msgstr "Un widget para mostrar no lugar da etiqueta habitual" -#: ../gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1608 msgid "Collapsed" msgstr "Recollido" -#: ../gtk/gtktoolitemgroup.c:1586 +#: ../gtk/gtktoolitemgroup.c:1609 msgid "Whether the group has been collapsed and items are hidden" msgstr "Indica se grupo foi contraído e os elementos agochados" -#: ../gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1615 msgid "ellipsize" msgstr "Elipse" -#: ../gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Ellipsize for item group headers" msgstr "Elipse para as cabeceiras de grupo do elemento" -#: ../gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1622 msgid "Header Relief" msgstr "Relieve da cabeceira" -#: ../gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1623 msgid "Relief of the group header button" msgstr "Relieve do botón de cabeceira de grupo" -#: ../gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1638 msgid "Header Spacing" msgstr "Espazamento da cabeceira" -#: ../gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1639 msgid "Spacing between expander arrow and caption" msgstr "Espazamento entre a frecha expansora e o título" -#: ../gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1655 msgid "Whether the item should receive extra space when the group grows" msgstr "Indica se o elemento debe recibir espazo adicional cando o grupo medre" -#: ../gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "Whether the item should fill the available space" msgstr "Indica se o elemento deben encher o espazo dispoñíbel" -#: ../gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1668 msgid "New Row" msgstr "Nova fila" -#: ../gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Whether the item should start a new row" msgstr "Indica se os elementos deberían mostrarse nunha nova fila" -#: ../gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1676 msgid "Position of the item within this group" msgstr "Posición do elemento neste grupo" -#: ../gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1033 msgid "Size of icons in this tool palette" msgstr "Tamaño das iconas nesta paleta de ferramentas" -#: ../gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1063 msgid "Style of items in the tool palette" msgstr "Estilo dos elementos na paleta de ferramentas" -#: ../gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1079 msgid "Exclusive" msgstr "Exclusivo" -#: ../gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1080 msgid "Whether the item group should be the only expanded at a given time" msgstr "" "Indica se o grupo de elementos deberían expandirse só nun momento determinado" -#: ../gtk/gtktoolpalette.c:1066 +#: ../gtk/gtktoolpalette.c:1095 msgid "" "Whether the item group should receive extra space when the palette grows" msgstr "" "Indica se o grupo de elementos debe recibir espazo adicional cando a paleta " "medre" -#: ../gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" msgstr "Cor de primeiro plano para as iconas simbólicas" -#: ../gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" msgstr "Cor de erro" -#: ../gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" msgstr "Cor de erro para as iconas simbólicas" -#: ../gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" msgstr "Cor de aviso" -#: ../gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" msgstr "Cor de aviso para as iconas simbólicas" -#: ../gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" msgstr "Cor de éxito" -#: ../gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" msgstr "Cor de éxito para as iconas simbólicas" -#: ../gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" msgstr "Separación que poñer ao redor das iconas na bandexa" -#: ../gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +msgid "TreeMenu model" +msgstr "Modelo TreeMenu" + +#: ../gtk/gtktreemenu.c:288 +msgid "The model for the tree menu" +msgstr "O modelo para o menú en árbore" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "Fila da raíz do TreeMenu" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "O TreeMenu mostrará os fillos nunha raíz especificada" + +#: ../gtk/gtktreemenu.c:344 +msgid "Tearoff" +msgstr "" + +#: ../gtk/gtktreemenu.c:345 +#, fuzzy +msgid "Whether the menu has a tearoff item" +msgstr "Indica se o menú ten un elemento" + +#: ../gtk/gtktreemenu.c:361 +msgid "Wrap Width" +msgstr "Axustar largura" + +#: ../gtk/gtktreemenu.c:362 +msgid "Wrap width for laying out items in a grid" +msgstr "Axustar a largura para distribuír os elementos nunha grade" + +#: ../gtk/gtktreemodelsort.c:312 msgid "TreeModelSort Model" msgstr "Modelo TreeModelSort" -#: ../gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:313 msgid "The model for the TreeModelSort to sort" msgstr "O modelo para o TreeModelSort que ordenar" -#: ../gtk/gtktreeview.c:568 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "Modelo TreeView" -#: ../gtk/gtktreeview.c:569 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "O modelo para a visualización en árbore" -#: ../gtk/gtktreeview.c:581 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "Cabeceiras visíbeis" -#: ../gtk/gtktreeview.c:582 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "Mostrar botóns nas cabeceiras de columna" -#: ../gtk/gtktreeview.c:589 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "Cabeceiras premíbeis" -#: ../gtk/gtktreeview.c:590 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "As cabeceiras de columna responden aos eventos de clic" -#: ../gtk/gtktreeview.c:597 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "Columna expansora" -#: ../gtk/gtktreeview.c:598 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "Estabelecer a columna para a columna expansora" -#: ../gtk/gtktreeview.c:613 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "Suxestión das regras" -#: ../gtk/gtktreeview.c:614 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "" "Define unha suxestión para o motor de tema para debuxar as filas con cores " "alternas" -#: ../gtk/gtktreeview.c:621 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "Activar a busca" -#: ../gtk/gtktreeview.c:622 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "" "A visualización permite aos usuarios buscar de modo interactivo a través das " "columnas" -#: ../gtk/gtktreeview.c:629 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "Columna de busca" -#: ../gtk/gtktreeview.c:630 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "A columna de modelo na que buscar durante a busca interactiva" -#: ../gtk/gtktreeview.c:650 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "Modo de altura fixa" -#: ../gtk/gtktreeview.c:651 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "Acelera GtkTreeView asumindo que todas as filas teñen a mesma altura" -#: ../gtk/gtktreeview.c:671 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "Seleccionar ao pasar por encima" -#: ../gtk/gtktreeview.c:672 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "Indica se a selección debería seguir o punteiro" -#: ../gtk/gtktreeview.c:691 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "Expandir ao pasar por encima" -#: ../gtk/gtktreeview.c:692 +#: ../gtk/gtktreeview.c:1113 msgid "" "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "" "Indica se as filas deben expandirse ou contraerse cando se move o punteiro " "sobre elas" -#: ../gtk/gtktreeview.c:706 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "Mostrar expansores" -#: ../gtk/gtktreeview.c:707 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "A visualización ten expansores" -#: ../gtk/gtktreeview.c:721 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "Nivel de sangría" -#: ../gtk/gtktreeview.c:722 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "Sangría adicional para cada nivel" -#: ../gtk/gtktreeview.c:731 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "Tiras de goma" -#: ../gtk/gtktreeview.c:732 +#: ../gtk/gtktreeview.c:1153 msgid "" "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "" "Indica se se activa a selección de múltiples elementos arrastrando o " "punteiro do rato" -#: ../gtk/gtktreeview.c:739 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "Activar as liñas da grade" -#: ../gtk/gtktreeview.c:740 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "" "Indica se as liñas da grade se deben debuxar na visualización en árbore" -#: ../gtk/gtktreeview.c:748 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "Activar as liñas da árbore" -#: ../gtk/gtktreeview.c:749 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "Indica se se deben debuxar as liñas na visualización en árbore" -#: ../gtk/gtktreeview.c:757 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "A columna do modelo que contén os textos de indicación para as filas" -#: ../gtk/gtktreeview.c:779 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "Largura do separador vertical" -#: ../gtk/gtktreeview.c:780 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "Espazo vertical entre celas. Debe ser un número par" -#: ../gtk/gtktreeview.c:788 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "Largura do separador horizontal" -#: ../gtk/gtktreeview.c:789 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "Espazo horizontal entre celas. Debe ser un número par" -#: ../gtk/gtktreeview.c:797 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "Permitir regras" -#: ../gtk/gtktreeview.c:798 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "Permitir debuxar filas con cores alternas" -#: ../gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "Sangrar os expansores" -#: ../gtk/gtktreeview.c:805 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "Crear os expansores sangrados" -#: ../gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "Cor da fila par" -#: ../gtk/gtktreeview.c:812 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "Cor que usar para as filas pares" -#: ../gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "Cor da fila impar" -#: ../gtk/gtktreeview.c:819 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "Cor que usar para as filas impares" -#: ../gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "Largura da liña da grade" -#: ../gtk/gtktreeview.c:826 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" -msgstr "Largura en píxeles das liñas da grade da visualización en árbore" +msgstr "Largura, en píxeles, das liñas da grade da visualización en árbore" -#: ../gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "Largura da liña da árbore" -#: ../gtk/gtktreeview.c:833 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "Largura en píxeles das liñas da visualización en árbore" -#: ../gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "Patrón da liña da grade" -#: ../gtk/gtktreeview.c:840 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "" "Patrón de trazos usado para debuxar as liñas da grade da visualización en " "árbore" -#: ../gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "Patrón da liña da árbore" -#: ../gtk/gtktreeview.c:847 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "" "Patrón de trazos usado para debuxar as liñas da visualización en árbore" -#: ../gtk/gtktreeviewcolumn.c:214 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "Indica se se mostra a columna" -#: ../gtk/gtktreeviewcolumn.c:221 ../gtk/gtkwindow.c:657 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "Redimensionábel" -#: ../gtk/gtktreeviewcolumn.c:222 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "O usuario pode redimensionar a columna" -#: ../gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "Largura actual da columna" -#: ../gtk/gtktreeviewcolumn.c:239 -msgid "Space which is inserted between cells" -msgstr "Espazo que se introduce entre as celas" - -#: ../gtk/gtktreeviewcolumn.c:247 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "Dimensionamento" -#: ../gtk/gtktreeviewcolumn.c:248 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "Modo de redimensionamento da columna" -#: ../gtk/gtktreeviewcolumn.c:256 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "Largura fixa" -#: ../gtk/gtktreeviewcolumn.c:257 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "Largura fixa actual da columna" -#: ../gtk/gtktreeviewcolumn.c:266 -msgid "Minimum Width" -msgstr "Largura mínima" - -#: ../gtk/gtktreeviewcolumn.c:267 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "Largura mínima permitida da columna" -#: ../gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "Largura máxima" -#: ../gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "Largura máxima permitida da columna" -#: ../gtk/gtktreeviewcolumn.c:287 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "Título que aparecerá na cabeceira da columna" -#: ../gtk/gtktreeviewcolumn.c:295 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "A columna obtén unha parte da largura adicional asignada ao widget" -#: ../gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "Premíbel" -#: ../gtk/gtktreeviewcolumn.c:303 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "Indica se a cabeceira se pode premer" -#: ../gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "Widget" -#: ../gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "" "O widget para colocar no botón da cabeceira da columna en vez do título da " "columna" -#: ../gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "Aliñamento X do texto da cabeceira da columna ou do widget" -#: ../gtk/gtktreeviewcolumn.c:330 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "Indica se a columna se pode reordenar ao redor das cabeceiras" -#: ../gtk/gtktreeviewcolumn.c:337 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "Indicador de ordenación" -#: ../gtk/gtktreeviewcolumn.c:338 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "Indica se se mostra un indicador de ordenación" -#: ../gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "Orde de clasificación" -#: ../gtk/gtktreeviewcolumn.c:346 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "Dirección de ordenación que o indicador deberá mostrar" -#: ../gtk/gtktreeviewcolumn.c:362 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "ID de columna de ordenación" -#: ../gtk/gtktreeviewcolumn.c:363 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "" "O ID de columna de ordenación lóxica ordena esta columna cando é " "seleccionada para ordenar" -#: ../gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Indica se se deben engadir elementos de menú despregábel aos menús" -#: ../gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Definición de IU combinado" -#: ../gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "Unha cadea XML que describe o IU combinado" -#: ../gtk/gtkviewport.c:156 +#: ../gtk/gtkviewport.c:154 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "" "Determina como se debuxa a caixa sombreada ao redor da área de visualización" -#: ../gtk/gtkwidget.c:935 +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "Usar iconas simbólicas" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "Indica se usar iconas simbólicas" + +#: ../gtk/gtkwidget.c:901 msgid "Widget name" msgstr "Nome do widget" -#: ../gtk/gtkwidget.c:936 +#: ../gtk/gtkwidget.c:902 msgid "The name of the widget" msgstr "O nome do widget" -#: ../gtk/gtkwidget.c:942 +#: ../gtk/gtkwidget.c:908 msgid "Parent widget" msgstr "Widget pai" -#: ../gtk/gtkwidget.c:943 +#: ../gtk/gtkwidget.c:909 msgid "The parent widget of this widget. Must be a Container widget" msgstr "O widget pai deste widget. Debe ser un widget contedor" -#: ../gtk/gtkwidget.c:950 +#: ../gtk/gtkwidget.c:916 msgid "Width request" msgstr "Solicitude de largura" -#: ../gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:917 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6876,11 +7224,11 @@ msgstr "" "Sobrepor a solicitude de largura do widget ou -1 se se debe empregar a " "solicitude normal" -#: ../gtk/gtkwidget.c:959 +#: ../gtk/gtkwidget.c:925 msgid "Height request" msgstr "Solicitude de altura" -#: ../gtk/gtkwidget.c:960 +#: ../gtk/gtkwidget.c:926 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6888,268 +7236,259 @@ msgstr "" "Sobrepor a solicitude de altura do widget ou -1 se se debe empregar a " "solicitude normal" -#: ../gtk/gtkwidget.c:969 +#: ../gtk/gtkwidget.c:935 msgid "Whether the widget is visible" msgstr "Indica se o widget é visíbel" -#: ../gtk/gtkwidget.c:976 +#: ../gtk/gtkwidget.c:942 msgid "Whether the widget responds to input" msgstr "Indica se o widget responde á entrada de datos" -#: ../gtk/gtkwidget.c:982 +#: ../gtk/gtkwidget.c:948 msgid "Application paintable" msgstr "Aplicativo pintábel" -#: ../gtk/gtkwidget.c:983 +#: ../gtk/gtkwidget.c:949 msgid "Whether the application will paint directly on the widget" msgstr "Indica se o aplicativo pintará directamente sobre o widget" -#: ../gtk/gtkwidget.c:989 +#: ../gtk/gtkwidget.c:955 msgid "Can focus" msgstr "Pode enfocar" -#: ../gtk/gtkwidget.c:990 +#: ../gtk/gtkwidget.c:956 msgid "Whether the widget can accept the input focus" msgstr "Indica se o widget pode aceptar o foco de entrada" -#: ../gtk/gtkwidget.c:996 +#: ../gtk/gtkwidget.c:962 msgid "Has focus" msgstr "Ten foco" -#: ../gtk/gtkwidget.c:997 +#: ../gtk/gtkwidget.c:963 msgid "Whether the widget has the input focus" msgstr "Indica se o widget ten o foco de entrada" -#: ../gtk/gtkwidget.c:1003 +#: ../gtk/gtkwidget.c:969 msgid "Is focus" msgstr "É o foco" -#: ../gtk/gtkwidget.c:1004 +#: ../gtk/gtkwidget.c:970 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Indica se o widget é o widget co foco, dentro do nivel superior" -#: ../gtk/gtkwidget.c:1010 +#: ../gtk/gtkwidget.c:976 msgid "Can default" msgstr "Pode ser o predefinido" -#: ../gtk/gtkwidget.c:1011 +#: ../gtk/gtkwidget.c:977 msgid "Whether the widget can be the default widget" msgstr "Indica se o widget pode ser o widget predefinido" -#: ../gtk/gtkwidget.c:1017 +#: ../gtk/gtkwidget.c:983 msgid "Has default" msgstr "É o predefinido" -#: ../gtk/gtkwidget.c:1018 +#: ../gtk/gtkwidget.c:984 msgid "Whether the widget is the default widget" msgstr "Indica se o widget é o widget predefinido" -#: ../gtk/gtkwidget.c:1024 +#: ../gtk/gtkwidget.c:990 msgid "Receives default" msgstr "Recibe o predefinido" -#: ../gtk/gtkwidget.c:1025 +#: ../gtk/gtkwidget.c:991 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "Se é TRUE, o widget recibirá a acción predefinida cando estea enfocado" -#: ../gtk/gtkwidget.c:1031 +#: ../gtk/gtkwidget.c:997 msgid "Composite child" msgstr "Fillo composto" -#: ../gtk/gtkwidget.c:1032 +#: ../gtk/gtkwidget.c:998 msgid "Whether the widget is part of a composite widget" msgstr "Indica se o widget é parte dun widget composto" -#: ../gtk/gtkwidget.c:1038 +#: ../gtk/gtkwidget.c:1004 msgid "Style" msgstr "Estilo" -#: ../gtk/gtkwidget.c:1039 +#: ../gtk/gtkwidget.c:1005 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" msgstr "" -"O estilo do widget, que contén información sobre a aparencia (cores etc.)" +"O estilo do widget, que contén información sobre a aparencia (cores, etc)" -#: ../gtk/gtkwidget.c:1045 +#: ../gtk/gtkwidget.c:1011 msgid "Events" msgstr "Eventos" -#: ../gtk/gtkwidget.c:1046 +#: ../gtk/gtkwidget.c:1012 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "" "A máscara de eventos que decide que tipo de GdkEvents recibe este widget" -#: ../gtk/gtkwidget.c:1053 -msgid "Extension events" -msgstr "Eventos de extensión" - -#: ../gtk/gtkwidget.c:1054 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "" -"A máscara que decide que clase de eventos de extensión consegue este widget" - -#: ../gtk/gtkwidget.c:1061 +#: ../gtk/gtkwidget.c:1019 msgid "No show all" msgstr "Non mostrar todo" -#: ../gtk/gtkwidget.c:1062 +#: ../gtk/gtkwidget.c:1020 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Indica se o gtk_widget_show_all() non debe afectar a este widget" -#: ../gtk/gtkwidget.c:1085 +#: ../gtk/gtkwidget.c:1043 msgid "Whether this widget has a tooltip" msgstr "Indica se este widget ten unha indicación" -#: ../gtk/gtkwidget.c:1141 +#: ../gtk/gtkwidget.c:1099 msgid "Window" msgstr "Xanela" -#: ../gtk/gtkwidget.c:1142 +#: ../gtk/gtkwidget.c:1100 msgid "The widget's window if it is realized" msgstr "A xanela do widget, se se crea" -#: ../gtk/gtkwidget.c:1156 +#: ../gtk/gtkwidget.c:1114 msgid "Double Buffered" msgstr "Con búfer dobre" -#: ../gtk/gtkwidget.c:1157 +#: ../gtk/gtkwidget.c:1115 msgid "Whether the widget is double buffered" msgstr "Indica se o widget conta ou non con búfer dobre" -#: ../gtk/gtkwidget.c:1172 +#: ../gtk/gtkwidget.c:1130 msgid "How to position in extra horizontal space" msgstr "Como posicionar no espazo horizontal adicional" -#: ../gtk/gtkwidget.c:1188 +#: ../gtk/gtkwidget.c:1146 msgid "How to position in extra vertical space" msgstr "Como posicionar no espazo vertical adicional" -#: ../gtk/gtkwidget.c:1207 +#: ../gtk/gtkwidget.c:1165 msgid "Margin on Left" msgstr "Marxe á esquerda" -#: ../gtk/gtkwidget.c:1208 +#: ../gtk/gtkwidget.c:1166 msgid "Pixels of extra space on the left side" msgstr "Píxeles de espacio adicional na lado esquerda" -#: ../gtk/gtkwidget.c:1228 +#: ../gtk/gtkwidget.c:1186 msgid "Margin on Right" msgstr "Marxe á dereita" -#: ../gtk/gtkwidget.c:1229 +#: ../gtk/gtkwidget.c:1187 msgid "Pixels of extra space on the right side" msgstr "Píxeles de espacio adicional na lado dereita" -#: ../gtk/gtkwidget.c:1249 +#: ../gtk/gtkwidget.c:1207 msgid "Margin on Top" msgstr "Marxe superior" -#: ../gtk/gtkwidget.c:1250 +#: ../gtk/gtkwidget.c:1208 msgid "Pixels of extra space on the top side" msgstr "Píxeles de espacio adicional na lado superior" -#: ../gtk/gtkwidget.c:1270 +#: ../gtk/gtkwidget.c:1228 msgid "Margin on Bottom" msgstr "Marxe inferior" -#: ../gtk/gtkwidget.c:1271 +#: ../gtk/gtkwidget.c:1229 msgid "Pixels of extra space on the bottom side" msgstr "Píxeles de espacio adicional na lado inferior" -#: ../gtk/gtkwidget.c:1288 +#: ../gtk/gtkwidget.c:1246 msgid "All Margins" msgstr "Todos os marxes" -#: ../gtk/gtkwidget.c:1289 +#: ../gtk/gtkwidget.c:1247 msgid "Pixels of extra space on all four sides" msgstr "Píxeles de espacio adicional nos catro lados" -#: ../gtk/gtkwidget.c:1322 +#: ../gtk/gtkwidget.c:1280 msgid "Horizontal Expand" msgstr "Expansión horizontal" -#: ../gtk/gtkwidget.c:1323 +#: ../gtk/gtkwidget.c:1281 msgid "Whether widget wants more horizontal space" msgstr "Indica se o widget quere usar máis espazo horizontal" -#: ../gtk/gtkwidget.c:1337 +#: ../gtk/gtkwidget.c:1295 msgid "Horizontal Expand Set" msgstr "Axuste de expansión horizontal" -#: ../gtk/gtkwidget.c:1338 +#: ../gtk/gtkwidget.c:1296 msgid "Whether to use the hexpand property" msgstr "Indica se se debe usar a propiedade hexpand" -#: ../gtk/gtkwidget.c:1352 +#: ../gtk/gtkwidget.c:1310 msgid "Vertical Expand" msgstr "Expansión vertical" -#: ../gtk/gtkwidget.c:1353 +#: ../gtk/gtkwidget.c:1311 msgid "Whether widget wants more vertical space" msgstr "Indica se o widget quere usar máis espazo vertical" -#: ../gtk/gtkwidget.c:1367 +#: ../gtk/gtkwidget.c:1325 msgid "Vertical Expand Set" msgstr "Axuste de expansión vertical" -#: ../gtk/gtkwidget.c:1368 +#: ../gtk/gtkwidget.c:1326 msgid "Whether to use the vexpand property" msgstr "Indica se se debe usar a propiedade vexpand" -#: ../gtk/gtkwidget.c:1382 +#: ../gtk/gtkwidget.c:1340 msgid "Expand Both" msgstr "Expandir en ambas" -#: ../gtk/gtkwidget.c:1383 +#: ../gtk/gtkwidget.c:1341 msgid "Whether widget wants to expand in both directions" msgstr "Indica se o widget quere expandirse en ámbalas dúas direccións" -#: ../gtk/gtkwidget.c:3037 +#: ../gtk/gtkwidget.c:3000 msgid "Interior Focus" msgstr "Foco interior" -#: ../gtk/gtkwidget.c:3038 +#: ../gtk/gtkwidget.c:3001 msgid "Whether to draw the focus indicator inside widgets" msgstr "Indica se se debuxa o foco indicador dentro dos widgets" -#: ../gtk/gtkwidget.c:3044 +#: ../gtk/gtkwidget.c:3007 msgid "Focus linewidth" msgstr "Enfocar a largura da liña" -#: ../gtk/gtkwidget.c:3045 +#: ../gtk/gtkwidget.c:3008 msgid "Width, in pixels, of the focus indicator line" msgstr "Largura en píxeles da liña indicadora do foco" -#: ../gtk/gtkwidget.c:3051 +#: ../gtk/gtkwidget.c:3014 msgid "Focus line dash pattern" msgstr "Patrón de trazos da liña de foco" -#: ../gtk/gtkwidget.c:3052 +#: ../gtk/gtkwidget.c:3015 msgid "Dash pattern used to draw the focus indicator" msgstr "Patrón de trazos empregado para debuxar o indicador de foco" -#: ../gtk/gtkwidget.c:3057 +#: ../gtk/gtkwidget.c:3020 msgid "Focus padding" msgstr "Recheo do foco" -#: ../gtk/gtkwidget.c:3058 +#: ../gtk/gtkwidget.c:3021 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Largura en píxeles entre o indicador de foco e a 'caixa' do widget" -#: ../gtk/gtkwidget.c:3063 +#: ../gtk/gtkwidget.c:3026 msgid "Cursor color" msgstr "Cor do cursor" -#: ../gtk/gtkwidget.c:3064 +#: ../gtk/gtkwidget.c:3027 msgid "Color with which to draw insertion cursor" msgstr "Cor coa que debuxar o cursor de inserción" -#: ../gtk/gtkwidget.c:3069 +#: ../gtk/gtkwidget.c:3032 msgid "Secondary cursor color" msgstr "Cor secundaria do cursor" -#: ../gtk/gtkwidget.c:3070 +#: ../gtk/gtkwidget.c:3033 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -7157,43 +7496,43 @@ msgstr "" "Cor coa que debuxar o cursor de inserción secundario cando se edita unha " "mestura de texto de dereita a esquerda e de esquerda a dereita" -#: ../gtk/gtkwidget.c:3075 +#: ../gtk/gtkwidget.c:3038 msgid "Cursor line aspect ratio" msgstr "Proporción de aspecto da liña do cursor" -#: ../gtk/gtkwidget.c:3076 +#: ../gtk/gtkwidget.c:3039 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Proporción de aspecto coa que debuxar o cursor de inserción" -#: ../gtk/gtkwidget.c:3082 +#: ../gtk/gtkwidget.c:3045 msgid "Window dragging" msgstr "Arrastre da xanela" -#: ../gtk/gtkwidget.c:3083 +#: ../gtk/gtkwidget.c:3046 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "Indica se as xanelas se poden arrastrar premendo nas áreas baleiras" -#: ../gtk/gtkwidget.c:3096 +#: ../gtk/gtkwidget.c:3059 msgid "Unvisited Link Color" msgstr "Cor de ligazón non visitada" -#: ../gtk/gtkwidget.c:3097 +#: ../gtk/gtkwidget.c:3060 msgid "Color of unvisited links" msgstr "Cor de ligazóns non visitadas" -#: ../gtk/gtkwidget.c:3110 +#: ../gtk/gtkwidget.c:3073 msgid "Visited Link Color" msgstr "Cor de ligazón visitada" -#: ../gtk/gtkwidget.c:3111 +#: ../gtk/gtkwidget.c:3074 msgid "Color of visited links" msgstr "Cor de ligazóns visitadas" -#: ../gtk/gtkwidget.c:3125 +#: ../gtk/gtkwidget.c:3088 msgid "Wide Separators" msgstr "Separadores largos" -#: ../gtk/gtkwidget.c:3126 +#: ../gtk/gtkwidget.c:3089 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" @@ -7201,81 +7540,81 @@ msgstr "" "Indica se os separadores teñen unha largura configurábel e se deberían " "debuxarse usando unha caixa en vez dunha liña" -#: ../gtk/gtkwidget.c:3140 +#: ../gtk/gtkwidget.c:3103 msgid "Separator Width" msgstr "Largura do separador" -#: ../gtk/gtkwidget.c:3141 +#: ../gtk/gtkwidget.c:3104 msgid "The width of separators if wide-separators is TRUE" -msgstr "A largura dos separadores se \"wide-separators\" é TRUE" +msgstr "A largura dos separadores se «wide-separators» é TRUE" -#: ../gtk/gtkwidget.c:3155 +#: ../gtk/gtkwidget.c:3118 msgid "Separator Height" msgstr "Altura do separador" -#: ../gtk/gtkwidget.c:3156 +#: ../gtk/gtkwidget.c:3119 msgid "The height of separators if \"wide-separators\" is TRUE" -msgstr "A altura dos separadores se \"wide-separators\" é TRUE" +msgstr "A altura dos separadores se «wide-separators» é TRUE" -#: ../gtk/gtkwidget.c:3170 +#: ../gtk/gtkwidget.c:3133 msgid "Horizontal Scroll Arrow Length" msgstr "Lonxitude da frecha de desprazamento horizontal" -#: ../gtk/gtkwidget.c:3171 +#: ../gtk/gtkwidget.c:3134 msgid "The length of horizontal scroll arrows" msgstr "A lonxitude das frechas de desprazamento horizontal" -#: ../gtk/gtkwidget.c:3185 +#: ../gtk/gtkwidget.c:3148 msgid "Vertical Scroll Arrow Length" msgstr "Lonxitude das frechas de desprazamento vertical" -#: ../gtk/gtkwidget.c:3186 +#: ../gtk/gtkwidget.c:3149 msgid "The length of vertical scroll arrows" msgstr "A lonxitude das frechas de desprazamento vertical" -#: ../gtk/gtkwindow.c:615 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "Tipo de xanela" -#: ../gtk/gtkwindow.c:616 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "O tipo da xanela" -#: ../gtk/gtkwindow.c:624 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "Título da xanela" -#: ../gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "O título da xanela" -#: ../gtk/gtkwindow.c:632 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "Rol da xanela" -#: ../gtk/gtkwindow.c:633 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" msgstr "" "Identificador único para a xanela que se usará ao restaurar unha sesión" -#: ../gtk/gtkwindow.c:649 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "ID de inicio" -#: ../gtk/gtkwindow.c:650 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "" "Identificador único para a xanela que se usará para a notificación de inicio" -#: ../gtk/gtkwindow.c:658 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "Se é TRUE, os usuarios poden redimensionar a xanela" -#: ../gtk/gtkwindow.c:665 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "Modal" -#: ../gtk/gtkwindow.c:666 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" @@ -7283,78 +7622,78 @@ msgstr "" "Se é TRUE, a xanela é modal (non é posíbel usar outras xanelas mentres esta " "está encima)" -#: ../gtk/gtkwindow.c:673 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "Posición da xanela" -#: ../gtk/gtkwindow.c:674 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "A posición inicial da xanela" -#: ../gtk/gtkwindow.c:682 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "Largura predefinida" -#: ../gtk/gtkwindow.c:683 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" msgstr "" "A largura predefinida da xanela, usada cando se mostra inicialmente a xanela" -#: ../gtk/gtkwindow.c:692 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "Altura predefinida" -#: ../gtk/gtkwindow.c:693 +#: ../gtk/gtkwindow.c:681 msgid "" "The default height of the window, used when initially showing the window" msgstr "" "A altura predefinida da xanela, usada cando se mostra inicialmente a xanela" -#: ../gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "Destruír co pai" -#: ../gtk/gtkwindow.c:703 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "Se esta xanela debería ser destruída cando se destrúe o pai" -#: ../gtk/gtkwindow.c:711 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "Icona para esta xanela" -#: ../gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "Mnemónicos visíbeis" -#: ../gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "Indica se os mnemónicos están visíbeis actualmente nesta xanela" -#: ../gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "Nome da icona de tema para esta xanela" -#: ../gtk/gtkwindow.c:749 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "Está activo" -#: ../gtk/gtkwindow.c:750 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "Indica se o nivel superior é a xanela activa actual" -#: ../gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "Foco no nivel superior" -#: ../gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "Indica se o foco de entrada está dentro desta GtkWindow" -#: ../gtk/gtkwindow.c:765 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "Suxestión de tipo" -#: ../gtk/gtkwindow.c:766 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7362,123 +7701,189 @@ msgstr "" "Suxestión para axudar ao contorno de escritorio a entender que clase de " "xanela é e como tratar con ela." -#: ../gtk/gtkwindow.c:774 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "Omitir a barra de tarefas" -#: ../gtk/gtkwindow.c:775 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "É TRUE se a xanela non debe estar na barra de tarefas." -#: ../gtk/gtkwindow.c:782 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "Omitir o paxinador" -#: ../gtk/gtkwindow.c:783 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "É TRUE se a xanela non debe estar no paxinador." -#: ../gtk/gtkwindow.c:790 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "Urxente" -#: ../gtk/gtkwindow.c:791 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "É TRUE se a xanela debe chamar a atención do usuario." -#: ../gtk/gtkwindow.c:805 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "Aceptar o foco" -#: ../gtk/gtkwindow.c:806 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "É TRUE se a xanela non debe recibir o foco de entrada." -#: ../gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "Foco no mapa" -#: ../gtk/gtkwindow.c:821 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "É TRUE se a xanela debería recibir o foco de entrada cando se mapee." -#: ../gtk/gtkwindow.c:835 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "Decorado" -#: ../gtk/gtkwindow.c:836 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "Indica se o xestor de xanelas debe decorar a xanela" -#: ../gtk/gtkwindow.c:850 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "Eliminábel" -#: ../gtk/gtkwindow.c:851 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "Indica se o marco da xanela debería ter un botón de pechar" -#: ../gtk/gtkwindow.c:870 +#: ../gtk/gtkwindow.c:858 msgid "Resize grip" msgstr "Tirador de redimensión" -#: ../gtk/gtkwindow.c:871 +#: ../gtk/gtkwindow.c:859 msgid "Specifies whether the window should have a resize grip" msgstr "Indica se a xanela debe ter un tirador de redimensión" -#: ../gtk/gtkwindow.c:885 +#: ../gtk/gtkwindow.c:873 msgid "Resize grip is visible" msgstr "O tirador de redimensión é visíbel" -#: ../gtk/gtkwindow.c:886 +#: ../gtk/gtkwindow.c:874 msgid "Specifies whether the window's resize grip is visible." msgstr "Indica se o tirador de redimensión da xanela é visíbel." -#: ../gtk/gtkwindow.c:902 +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "Gravidade" -#: ../gtk/gtkwindow.c:903 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "O tipo de gravidade da xanela" -#: ../gtk/gtkwindow.c:920 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "Transición para a xanela" -#: ../gtk/gtkwindow.c:921 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "O pai transicional do diálogo" -#: ../gtk/gtkwindow.c:936 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "Opacidade para a xanela" -#: ../gtk/gtkwindow.c:937 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "A opacidade da xanela; de 0 até 1" -#: ../gtk/gtkwindow.c:947 ../gtk/gtkwindow.c:948 +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 msgid "Width of resize grip" msgstr "Anchura do tirador de redimensión" -#: ../gtk/gtkwindow.c:953 ../gtk/gtkwindow.c:954 +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 msgid "Height of resize grip" msgstr "Altura do tirador de redimensión" -#: ../gtk/gtkwindow.c:973 +#: ../gtk/gtkwindow.c:961 msgid "GtkApplication" msgstr "GtkApplication" -#: ../gtk/gtkwindow.c:974 +#: ../gtk/gtkwindow.c:962 msgid "The GtkApplication for the window" msgstr "O GtkApplication para a xanela" -#~ msgid "Horizontal adjustment" -#~ msgstr "Axuste horizontal" +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "A etiqueta para a ligazón ao sitio web do programa. Se non se define, " +#~ "usarase o URL predefinido" -#~ msgid "Vertical adjustment" -#~ msgstr "Axuste vertical" +#~ msgid "Tab pack type" +#~ msgstr "Tipo de empaquetado de separador" + +#~ msgid "Update policy" +#~ msgstr "Política de actualización" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "Como se debe actualizar o intervalo na pantalla" + +#~ msgid "Number of steps" +#~ msgstr "Número de pasos" + +#~ msgid "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." +#~ msgstr "" +#~ "O número de pasos do spinner para completar o bucle. A animación " +#~ "completará un ciclo completo nun segundo de forma predefinida (vexa " +#~ "#GtkSpinner:cicyle-duration)." + +#~ msgid "Animation duration" +#~ msgstr "Duración da animación" + +#~ msgid "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" +#~ msgstr "" +#~ "O tempo en milisegundos para que o spinner complete un bucle completo" + +#~ msgid "Extension events" +#~ msgstr "Eventos de extensión" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "A máscara que decide que clase de eventos de extensión consegue este " +#~ "widget" + +# verificar: High= alta e low= baixa +#~ msgid "Lower" +#~ msgstr "Inferior" + +#~ msgid "Lower limit of ruler" +#~ msgstr "Límite inferior da regra" + +#~ msgid "Upper" +#~ msgstr "Superior" + +#~ msgid "Upper limit of ruler" +#~ msgstr "Límite superior da regra" + +#~ msgid "Position of mark on the ruler" +#~ msgstr "Posición da marca na regra" + +#~ msgid "Max Size" +#~ msgstr "Tamaño máximo" + +#~ msgid "Maximum size of the ruler" +#~ msgstr "Tamaño máximo da regra" + +#~ msgid "Metric" +#~ msgstr "Métrica" + +#~ msgid "The metric used for the ruler" +#~ msgstr "A métrica que se usa na regra" #~ msgid "Horizontal Adjustment for the widget" #~ msgstr "Axuste horizontal para o widget" diff --git a/po-properties/he.po b/po-properties/he.po index 2bc6dc6ce6..1aaba05d2c 100644 --- a/po-properties/he.po +++ b/po-properties/he.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: gtk+.HEAD.he\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-04 15:26+0200\n" -"PO-Revision-Date: 2010-12-04 15:27+0200\n" +"POT-Creation-Date: 2011-01-19 01:01+0200\n" +"PO-Revision-Date: 2011-01-19 01:02+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" @@ -16,124 +16,145 @@ msgstr "" "Language: he\n" "X-Generator: KBabel 1.0\n" -#: ../gdk/gdkdevice.c:113 -msgid "Device Display" -msgstr "Device Display" - -#: ../gdk/gdkdevice.c:114 -msgid "Display which the device belongs to" -msgstr "Display which the device belongs to" - -#: ../gdk/gdkdevice.c:128 -msgid "Device manager" -msgstr "Device manager" - -#: ../gdk/gdkdevice.c:129 -msgid "Device manager which the device belongs to" -msgstr "Device manager which the device belongs to" - -#: ../gdk/gdkdevice.c:143 ../gdk/gdkdevice.c:144 -msgid "Device name" -msgstr "Device name" - -#: ../gdk/gdkdevice.c:158 -msgid "Device type" -msgstr "Device type" - -#: ../gdk/gdkdevice.c:159 -msgid "Device role in the device manager" -msgstr "Device role in the device manager" - -#: ../gdk/gdkdevice.c:175 -msgid "Associated device" -msgstr "Associated device" - -#: ../gdk/gdkdevice.c:176 -msgid "Associated pointer or keyboard with this device" -msgstr "Associated pointer or keyboard with this device" - -#: ../gdk/gdkdevice.c:189 -msgid "Input source" -msgstr "Input source" - -#: ../gdk/gdkdevice.c:190 -msgid "Source type for the device" -msgstr "Source type for the device" - -#: ../gdk/gdkdevice.c:205 ../gdk/gdkdevice.c:206 -msgid "Input mode for the device" -msgstr "Input mode for the device" - -#: ../gdk/gdkdevice.c:221 -msgid "Whether the device has a cursor" -msgstr "Whether the device has a cursor" - -#: ../gdk/gdkdevice.c:222 -msgid "Whether there is a visible cursor following device motion" -msgstr "Whether there is a visible cursor following device motion" - -#: ../gdk/gdkdevice.c:236 ../gdk/gdkdevice.c:237 -msgid "Number of axes in the device" -msgstr "Number of axes in the device" - -#: ../gdk/gdkdevicemanager.c:136 +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" msgstr "Display" -#: ../gdk/gdkdevicemanager.c:137 +#: ../gdk/gdkcursor.c:128 +msgid "Cursor type" +msgstr "Cursor type" + +#: ../gdk/gdkcursor.c:129 +msgid "Standard cursor type" +msgstr "Standard cursor type" + +#: ../gdk/gdkcursor.c:137 +msgid "Display of this cursor" +msgstr "Display of this cursor" + +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "Device Display" + +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "Display which the device belongs to" + +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "Device manager" + +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "Device manager which the device belongs to" + +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "Device name" + +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "Device type" + +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "Device role in the device manager" + +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "Associated device" + +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "Associated pointer or keyboard with this device" + +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "Input source" + +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "Source type for the device" + +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "Input mode for the device" + +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "Whether the device has a cursor" + +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "Whether there is a visible cursor following device motion" + +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "Number of axes in the device" + +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" msgstr "Display for the device manager" -#: ../gdk/gdkdisplaymanager.c:106 +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "Default Display" -#: ../gdk/gdkdisplaymanager.c:107 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "The default display for GDK" -#: ../gdk/gdkscreen.c:90 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Font options" -#: ../gdk/gdkscreen.c:91 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "The default font options for the screen" -#: ../gdk/gdkscreen.c:98 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Font resolution" -#: ../gdk/gdkscreen.c:99 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "The resolution for fonts on the screen" -#: ../gdk/gdkwindow.c:393 ../gdk/gdkwindow.c:394 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Cursor" #: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 -#: ../gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "Device ID" -#: ../gdk/x11/gdkdevice-xi2.c:113 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "Device identifier" -#: ../gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +msgid "Opcode" +msgstr "Opcode" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +msgid "Opcode for XInput2 requests" +msgstr "Opcode for XInput2 requests" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" msgstr "Event base" -#: ../gdk/x11/gdkdevicemanager-xi.c:86 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "Event base for XInput events" -#: ../gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "Program name" -#: ../gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -141,97 +162,93 @@ msgstr "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" -#: ../gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "Program version" -#: ../gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "The version of the program" -#: ../gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "Copyright string" -#: ../gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "Copyright information for the program" -#: ../gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "Comments string" -#: ../gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "Comments about the program" -#: ../gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" msgstr "License Type" -#: ../gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" msgstr "The license type of the program" -#: ../gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "Website URL" -#: ../gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "The URL for the link to the website of the program" -#: ../gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "Website label" -#: ../gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "The label for the link to the website of the program" -#: ../gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "Authors" -#: ../gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "List of authors of the program" -#: ../gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "Documenters" -#: ../gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "List of people documenting the program" -#: ../gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "Artists" -#: ../gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "List of people who have contributed artwork to the program" -#: ../gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "Translator credits" -#: ../gtk/gtkaboutdialog.c:471 +#: ../gtk/gtkaboutdialog.c:477 msgid "" "Credits to the translators. This string should be marked as translatable" msgstr "" "Credits to the translators. This string should be marked as translatable" -#: ../gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "Logo" -#: ../gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -239,40 +256,40 @@ msgstr "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" -#: ../gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "Logo Icon Name" -#: ../gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "A named icon to use as the logo for the about box." -#: ../gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "Wrap license" -#: ../gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "Whether to wrap the license text." -#: ../gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "Accelerator Closure" -#: ../gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "The closure to be monitored for accelerator changes" -#: ../gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "Accelerator Widget" -#: ../gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "The widget to be monitored for accelerator changes" #: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 -#: ../gtk/gtktextmark.c:89 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "Name" @@ -280,9 +297,9 @@ msgstr "Name" msgid "A unique name for the action." msgstr "A unique name for the action." -#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:226 ../gtk/gtkexpander.c:209 -#: ../gtk/gtkframe.c:130 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:331 -#: ../gtk/gtktoolbutton.c:202 ../gtk/gtktoolitemgroup.c:1588 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:133 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1594 msgid "Label" msgstr "Label" @@ -314,23 +331,23 @@ msgstr "Stock Icon" msgid "The stock icon displayed in widgets representing this action." msgstr "The stock icon displayed in widgets representing this action." -#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "GIcon" #: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 -#: ../gtk/gtkimage.c:326 ../gtk/gtkstatusicon.c:253 +#: ../gtk/gtkimage.c:329 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "The GIcon being displayed" #: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 -#: ../gtk/gtkimage.c:308 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:236 -#: ../gtk/gtkwindow.c:733 +#: ../gtk/gtkimage.c:311 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "Icon Name" #: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 -#: ../gtk/gtkimage.c:309 ../gtk/gtkstatusicon.c:237 +#: ../gtk/gtkimage.c:312 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "The name of the icon from the icon theme" @@ -391,7 +408,7 @@ msgid "When TRUE, empty menu proxies for this action are hidden." msgstr "When TRUE, empty menu proxies for this action are hidden." #: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 -#: ../gtk/gtkcellrenderer.c:282 ../gtk/gtkwidget.c:913 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:941 msgid "Sensitive" msgstr "Sensitive" @@ -400,8 +417,8 @@ msgid "Whether the action is enabled." msgstr "Whether the action is enabled." #: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 -#: ../gtk/gtkstatusicon.c:287 ../gtk/gtktreeviewcolumn.c:213 -#: ../gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:934 msgid "Visible" msgstr "Visible" @@ -421,11 +438,11 @@ msgstr "" "The GtkActionGroup this GtkAction is associated with, or NULL (for internal " "use)." -#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:182 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Always show image" -#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:183 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Whether the image will always be shown" @@ -441,76 +458,76 @@ msgstr "Whether the action group is enabled." msgid "Whether the action group is visible." msgstr "Whether the action group is visible." -#: ../gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "Related Action" -#: ../gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "The action this activatable will activate and receive updates from" -#: ../gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "Use Action Appearance" -#: ../gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "Whether to use the related actions appearance properties" -#: ../gtk/gtkadjustment.c:114 ../gtk/gtkcellrendererprogress.c:126 -#: ../gtk/gtkscalebutton.c:220 ../gtk/gtkspinbutton.c:291 +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "Value" -#: ../gtk/gtkadjustment.c:115 +#: ../gtk/gtkadjustment.c:124 msgid "The value of the adjustment" msgstr "The value of the adjustment" -#: ../gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:140 msgid "Minimum Value" msgstr "Minimum Value" -#: ../gtk/gtkadjustment.c:132 +#: ../gtk/gtkadjustment.c:141 msgid "The minimum value of the adjustment" msgstr "The minimum value of the adjustment" -#: ../gtk/gtkadjustment.c:151 +#: ../gtk/gtkadjustment.c:160 msgid "Maximum Value" msgstr "Maximum Value" -#: ../gtk/gtkadjustment.c:152 +#: ../gtk/gtkadjustment.c:161 msgid "The maximum value of the adjustment" msgstr "The maximum value of the adjustment" -#: ../gtk/gtkadjustment.c:168 +#: ../gtk/gtkadjustment.c:177 msgid "Step Increment" msgstr "Step Increment" -#: ../gtk/gtkadjustment.c:169 +#: ../gtk/gtkadjustment.c:178 msgid "The step increment of the adjustment" msgstr "The step increment of the adjustment" -#: ../gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:194 msgid "Page Increment" msgstr "Page Increment" -#: ../gtk/gtkadjustment.c:186 +#: ../gtk/gtkadjustment.c:195 msgid "The page increment of the adjustment" msgstr "The page increment of the adjustment" -#: ../gtk/gtkadjustment.c:205 +#: ../gtk/gtkadjustment.c:214 msgid "Page Size" msgstr "Page Size" -#: ../gtk/gtkadjustment.c:206 +#: ../gtk/gtkadjustment.c:215 msgid "The page size of the adjustment" msgstr "The page size of the adjustment" -#: ../gtk/gtkalignment.c:127 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Horizontal alignment" -#: ../gtk/gtkalignment.c:128 ../gtk/gtkbutton.c:277 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -518,11 +535,11 @@ msgstr "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" -#: ../gtk/gtkalignment.c:137 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Vertical alignment" -#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:296 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -530,11 +547,11 @@ msgstr "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" -#: ../gtk/gtkalignment.c:146 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Horizontal scale" -#: ../gtk/gtkalignment.c:147 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -542,11 +559,11 @@ msgstr "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" -#: ../gtk/gtkalignment.c:155 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Vertical scale" -#: ../gtk/gtkalignment.c:156 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -554,38 +571,114 @@ msgstr "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" -#: ../gtk/gtkalignment.c:173 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Top Padding" -#: ../gtk/gtkalignment.c:174 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "The padding to insert at the top of the widget." -#: ../gtk/gtkalignment.c:190 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Bottom Padding" -#: ../gtk/gtkalignment.c:191 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "The padding to insert at the bottom of the widget." -#: ../gtk/gtkalignment.c:207 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Left Padding" -#: ../gtk/gtkalignment.c:208 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "The padding to insert at the left of the widget." -#: ../gtk/gtkalignment.c:224 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Right Padding" -#: ../gtk/gtkalignment.c:225 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "The padding to insert at the right of the widget." +#: ../gtk/gtkappchooserbutton.c:538 +msgid "Include an 'Other...' item" +msgstr "Include an 'Other...' item" + +#: ../gtk/gtkappchooserbutton.c:539 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" + +#: ../gtk/gtkappchooser.c:58 +msgid "Content type" +msgstr "Content type" + +#: ../gtk/gtkappchooser.c:59 +msgid "The content type used by the open with object" +msgstr "The content type used by the open with object" + +#: ../gtk/gtkappchooserdialog.c:683 +msgid "GFile" +msgstr "GFile" + +#: ../gtk/gtkappchooserdialog.c:684 +msgid "The GFile used by the app chooser dialog" +msgstr "The GFile used by the app chooser dialog" + +#: ../gtk/gtkappchooserwidget.c:1017 +msgid "Show default app" +msgstr "Show default app" + +#: ../gtk/gtkappchooserwidget.c:1018 +msgid "Whether the widget should show the default application" +msgstr "Whether the widget should show the default application" + +#: ../gtk/gtkappchooserwidget.c:1031 +msgid "Show recommended apps" +msgstr "Show recommended apps" + +#: ../gtk/gtkappchooserwidget.c:1032 +msgid "Whether the widget should show recommended applications" +msgstr "Whether the widget should show recommended applications" + +#: ../gtk/gtkappchooserwidget.c:1045 +msgid "Show fallback apps" +msgstr "Show fallback apps" + +#: ../gtk/gtkappchooserwidget.c:1046 +msgid "Whether the widget should show fallback applications" +msgstr "Whether the widget should show fallback applications" + +#: ../gtk/gtkappchooserwidget.c:1058 +msgid "Show other apps" +msgstr "Show other apps" + +#: ../gtk/gtkappchooserwidget.c:1059 +msgid "Whether the widget should show other applications" +msgstr "Whether the widget should show other applications" + +#: ../gtk/gtkappchooserwidget.c:1072 +msgid "Show all apps" +msgstr "Show all apps" + +#: ../gtk/gtkappchooserwidget.c:1073 +msgid "Whether the widget should show all applications" +msgstr "Whether the widget should show all applications" + +#: ../gtk/gtkappchooserwidget.c:1086 +msgid "Widget's default text" +msgstr "Widget's default text" + +#: ../gtk/gtkappchooserwidget.c:1087 +msgid "The default text appearing when there are no applications" +msgstr "The default text appearing when there are no applications" + #: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Arrow direction" @@ -602,7 +695,7 @@ msgstr "Arrow shadow" msgid "Appearance of the shadow surrounding the arrow" msgstr "Appearance of the shadow surrounding the arrow" -#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:731 ../gtk/gtkmenuitem.c:394 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:796 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Arrow Scaling" @@ -610,7 +703,7 @@ msgstr "Arrow Scaling" msgid "Amount of space used up by arrow" msgstr "Amount of space used up by arrow" -#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1109 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1129 msgid "Horizontal Alignment" msgstr "Horizontal Alignment" @@ -618,7 +711,7 @@ msgstr "Horizontal Alignment" msgid "X alignment of the child" msgstr "X alignment of the child" -#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1125 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1145 msgid "Vertical Alignment" msgstr "Vertical Alignment" @@ -642,59 +735,59 @@ msgstr "Obey child" msgid "Force aspect ratio to match that of the frame's child" msgstr "Force aspect ratio to match that of the frame's child" -#: ../gtk/gtkassistant.c:327 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "Header Padding" -#: ../gtk/gtkassistant.c:328 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "Number of pixels around the header." -#: ../gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "Content Padding" -#: ../gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "Number of pixels around the content pages." -#: ../gtk/gtkassistant.c:352 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "Page type" -#: ../gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "The type of the assistant page" -#: ../gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "Page title" -#: ../gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "The title of the assistant page" -#: ../gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "Header image" -#: ../gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "Header image for the assistant page" -#: ../gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "Sidebar image" -#: ../gtk/gtkassistant.c:405 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "Sidebar image for the assistant page" -#: ../gtk/gtkassistant.c:420 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "Page complete" -#: ../gtk/gtkassistant.c:421 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "Whether all required fields on the page have been filled out" @@ -754,8 +847,8 @@ msgstr "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" -#: ../gtk/gtkbox.c:241 ../gtk/gtkexpander.c:233 ../gtk/gtkiconview.c:696 -#: ../gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "Spacing" @@ -763,8 +856,8 @@ msgstr "Spacing" msgid "The amount of space between children" msgstr "The amount of space between children" -#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:553 -#: ../gtk/gtktoolitemgroup.c:1641 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1647 msgid "Homogeneous" msgstr "Homogeneous" @@ -772,8 +865,9 @@ msgstr "Homogeneous" msgid "Whether the children should all be the same size" msgstr "Whether the children should all be the same size" -#: ../gtk/gtkbox.c:268 ../gtk/gtktoolbar.c:545 ../gtk/gtktoolitemgroup.c:1648 -#: ../gtk/gtktoolpalette.c:1092 ../gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1654 ../gtk/gtktoolpalette.c:1094 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "Expand" @@ -781,7 +875,7 @@ msgstr "Expand" msgid "Whether the child should receive extra space when the parent grows" msgstr "Whether the child should receive extra space when the parent grows" -#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1655 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1661 msgid "Fill" msgstr "Fill" @@ -793,7 +887,7 @@ msgstr "" "Whether extra space given to the child should be allocated to the child or " "used as padding" -#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "Padding" @@ -805,7 +899,7 @@ msgstr "Extra space to put between the child and its neighbors, in pixels" msgid "Pack type" msgstr "Pack type" -#: ../gtk/gtkbox.c:297 ../gtk/gtknotebook.c:793 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -813,12 +907,12 @@ msgstr "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" -#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:764 ../gtk/gtkpaned.c:327 -#: ../gtk/gtktoolitemgroup.c:1669 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1675 msgid "Position" msgstr "Position" -#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:765 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "The index of the child in the parent" @@ -830,7 +924,7 @@ msgstr "Translation Domain" msgid "The translation domain used by gettext" msgstr "The translation domain used by gettext" -#: ../gtk/gtkbutton.c:227 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" @@ -838,13 +932,13 @@ msgstr "" "Text of the label widget inside the button, if the button contains a label " "widget" -#: ../gtk/gtkbutton.c:234 ../gtk/gtkexpander.c:217 ../gtk/gtklabel.c:588 -#: ../gtk/gtkmenuitem.c:346 ../gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "Use underline" -#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:218 ../gtk/gtklabel.c:589 -#: ../gtk/gtkmenuitem.c:347 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -852,70 +946,70 @@ msgstr "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" -#: ../gtk/gtkbutton.c:242 ../gtk/gtkimagemenuitem.c:163 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Use stock" -#: ../gtk/gtkbutton.c:243 +#: ../gtk/gtkbutton.c:244 msgid "" "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "If set, the label is used to pick a stock item instead of being displayed" -#: ../gtk/gtkbutton.c:250 ../gtk/gtkcombobox.c:865 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 #: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Focus on click" -#: ../gtk/gtkbutton.c:251 ../gtk/gtkfilechooserbutton.c:384 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Whether the button grabs focus when it is clicked with the mouse" -#: ../gtk/gtkbutton.c:258 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "Border relief" -#: ../gtk/gtkbutton.c:259 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "The border relief style" -#: ../gtk/gtkbutton.c:276 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "Horizontal alignment for child" -#: ../gtk/gtkbutton.c:295 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "Vertical alignment for child" -#: ../gtk/gtkbutton.c:312 ../gtk/gtkimagemenuitem.c:148 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Image widget" -#: ../gtk/gtkbutton.c:313 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "Child widget to appear next to the button text" -#: ../gtk/gtkbutton.c:327 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "Image position" -#: ../gtk/gtkbutton.c:328 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "The position of the image relative to the text" -#: ../gtk/gtkbutton.c:448 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "Default Spacing" -#: ../gtk/gtkbutton.c:449 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Extra space to add for GTK_CAN_DEFAULT buttons" -#: ../gtk/gtkbutton.c:463 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "Default Outside Spacing" -#: ../gtk/gtkbutton.c:464 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -923,31 +1017,31 @@ msgstr "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" -#: ../gtk/gtkbutton.c:469 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "Child X Displacement" -#: ../gtk/gtkbutton.c:470 +#: ../gtk/gtkbutton.c:471 msgid "" "How far in the x direction to move the child when the button is depressed" msgstr "" "How far in the x direction to move the child when the button is depressed" -#: ../gtk/gtkbutton.c:477 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "Child Y Displacement" -#: ../gtk/gtkbutton.c:478 +#: ../gtk/gtkbutton.c:479 msgid "" "How far in the y direction to move the child when the button is depressed" msgstr "" "How far in the y direction to move the child when the button is depressed" -#: ../gtk/gtkbutton.c:494 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "Displace focus" -#: ../gtk/gtkbutton.c:495 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" @@ -955,43 +1049,43 @@ msgstr "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" -#: ../gtk/gtkbutton.c:508 ../gtk/gtkentry.c:786 ../gtk/gtkentry.c:1831 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Inner Border" -#: ../gtk/gtkbutton.c:509 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "Border between button edges and child." -#: ../gtk/gtkbutton.c:522 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "Image spacing" -#: ../gtk/gtkbutton.c:523 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "Spacing in pixels between the image and label" -#: ../gtk/gtkcalendar.c:475 +#: ../gtk/gtkcalendar.c:468 msgid "Year" msgstr "Year" -#: ../gtk/gtkcalendar.c:476 +#: ../gtk/gtkcalendar.c:469 msgid "The selected year" msgstr "The selected year" -#: ../gtk/gtkcalendar.c:489 +#: ../gtk/gtkcalendar.c:482 msgid "Month" msgstr "Month" -#: ../gtk/gtkcalendar.c:490 +#: ../gtk/gtkcalendar.c:483 msgid "The selected month (as a number between 0 and 11)" msgstr "The selected month (as a number between 0 and 11)" -#: ../gtk/gtkcalendar.c:504 +#: ../gtk/gtkcalendar.c:497 msgid "Day" msgstr "Day" -#: ../gtk/gtkcalendar.c:505 +#: ../gtk/gtkcalendar.c:498 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" @@ -999,86 +1093,171 @@ msgstr "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" -#: ../gtk/gtkcalendar.c:519 +#: ../gtk/gtkcalendar.c:512 msgid "Show Heading" msgstr "Show Heading" -#: ../gtk/gtkcalendar.c:520 +#: ../gtk/gtkcalendar.c:513 msgid "If TRUE, a heading is displayed" msgstr "If TRUE, a heading is displayed" -#: ../gtk/gtkcalendar.c:534 +#: ../gtk/gtkcalendar.c:527 msgid "Show Day Names" msgstr "Show Day Names" -#: ../gtk/gtkcalendar.c:535 +#: ../gtk/gtkcalendar.c:528 msgid "If TRUE, day names are displayed" msgstr "If TRUE, day names are displayed" -#: ../gtk/gtkcalendar.c:548 +#: ../gtk/gtkcalendar.c:541 msgid "No Month Change" msgstr "No Month Change" -#: ../gtk/gtkcalendar.c:549 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, the selected month cannot be changed" msgstr "If TRUE, the selected month cannot be changed" -#: ../gtk/gtkcalendar.c:563 +#: ../gtk/gtkcalendar.c:556 msgid "Show Week Numbers" msgstr "Show Week Numbers" -#: ../gtk/gtkcalendar.c:564 +#: ../gtk/gtkcalendar.c:557 msgid "If TRUE, week numbers are displayed" msgstr "If TRUE, week numbers are displayed" -#: ../gtk/gtkcalendar.c:579 +#: ../gtk/gtkcalendar.c:572 msgid "Details Width" msgstr "Details Width" -#: ../gtk/gtkcalendar.c:580 +#: ../gtk/gtkcalendar.c:573 msgid "Details width in characters" msgstr "Details width in characters" -#: ../gtk/gtkcalendar.c:595 +#: ../gtk/gtkcalendar.c:588 msgid "Details Height" msgstr "Details Height" -#: ../gtk/gtkcalendar.c:596 +#: ../gtk/gtkcalendar.c:589 msgid "Details height in rows" msgstr "Details height in rows" -#: ../gtk/gtkcalendar.c:612 +#: ../gtk/gtkcalendar.c:605 msgid "Show Details" msgstr "Show Details" -#: ../gtk/gtkcalendar.c:613 +#: ../gtk/gtkcalendar.c:606 msgid "If TRUE, details are shown" msgstr "If TRUE, details are shown" -#: ../gtk/gtkcalendar.c:625 +#: ../gtk/gtkcalendar.c:618 msgid "Inner border" msgstr "Inner border" -#: ../gtk/gtkcalendar.c:626 +#: ../gtk/gtkcalendar.c:619 msgid "Inner border space" msgstr "Inner border space" -#: ../gtk/gtkcalendar.c:637 +#: ../gtk/gtkcalendar.c:630 msgid "Vertical separation" msgstr "Vertical separation" -#: ../gtk/gtkcalendar.c:638 +#: ../gtk/gtkcalendar.c:631 msgid "Space between day headers and main area" msgstr "Space between day headers and main area" -#: ../gtk/gtkcalendar.c:649 +#: ../gtk/gtkcalendar.c:642 msgid "Horizontal separation" msgstr "Horizontal separation" -#: ../gtk/gtkcalendar.c:650 +#: ../gtk/gtkcalendar.c:643 msgid "Space between week headers and main area" msgstr "Space between week headers and main area" +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "Space which is inserted between cells" + +#: ../gtk/gtkcellareabox.c:339 +msgid "Whether the cell expands" +msgstr "Whether the cell expands" + +#: ../gtk/gtkcellareabox.c:354 +msgid "Align" +msgstr "Align" + +#: ../gtk/gtkcellareabox.c:355 +msgid "Whether cell should align with adjacent rows" +msgstr "Whether cell should align with adjacent rows" + +#: ../gtk/gtkcellareabox.c:371 +msgid "Fixed Size" +msgstr "Fixed Size" + +#: ../gtk/gtkcellareabox.c:372 +msgid "Whether cells should be the same size in all rows" +msgstr "Whether cells should be the same size in all rows" + +#: ../gtk/gtkcellareabox.c:388 +msgid "Pack Type" +msgstr "Pack Type" + +#: ../gtk/gtkcellareabox.c:389 +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "Focus Cell" + +#: ../gtk/gtkcellarea.c:774 +msgid "The cell which currently has focus" +msgstr "The cell which currently has focus" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "Edited Cell" + +#: ../gtk/gtkcellarea.c:793 +msgid "The cell which is currently being edited" +msgstr "The cell which is currently being edited" + +#: ../gtk/gtkcellarea.c:811 +msgid "Edit Widget" +msgstr "Edit Widget" + +#: ../gtk/gtkcellarea.c:812 +msgid "The widget currently editing the edited cell" +msgstr "The widget currently editing the edited cell" + +#: ../gtk/gtkcellareacontext.c:127 +msgid "Area" +msgstr "Area" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "The Cell Area this context was created for" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "Minimum Width" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +msgid "Minimum cached width" +msgstr "Minimum cached width" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +msgid "Minimum Height" +msgstr "Minimum Height" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +msgid "Minimum cached height" +msgstr "Minimum cached height" + #: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Editing Canceled" @@ -1087,159 +1266,159 @@ msgstr "Editing Canceled" msgid "Indicates that editing has been canceled" msgstr "Indicates that editing has been canceled" -#: ../gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "Accelerator key" -#: ../gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "The keyval of the accelerator" -#: ../gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "Accelerator modifiers" -#: ../gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "The modifier mask of the accelerator" -#: ../gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "Accelerator keycode" -#: ../gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "The hardware keycode of the accelerator" -#: ../gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "Accelerator Mode" -#: ../gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "The type of accelerators" -#: ../gtk/gtkcellrenderer.c:266 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "mode" -#: ../gtk/gtkcellrenderer.c:267 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "Editable mode of the CellRenderer" -#: ../gtk/gtkcellrenderer.c:275 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "visible" -#: ../gtk/gtkcellrenderer.c:276 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "Display the cell" -#: ../gtk/gtkcellrenderer.c:283 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "Display the cell sensitive" -#: ../gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "xalign" -#: ../gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "The x-align" -#: ../gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "yalign" -#: ../gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "The y-align" -#: ../gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: ../gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "The xpad" -#: ../gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: ../gtk/gtkcellrenderer.c:321 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "The ypad" -#: ../gtk/gtkcellrenderer.c:330 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "width" -#: ../gtk/gtkcellrenderer.c:331 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "The fixed width" -#: ../gtk/gtkcellrenderer.c:340 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "height" -#: ../gtk/gtkcellrenderer.c:341 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "The fixed height" -#: ../gtk/gtkcellrenderer.c:350 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "Is Expander" -#: ../gtk/gtkcellrenderer.c:351 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "Row has children" -#: ../gtk/gtkcellrenderer.c:359 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "Is Expanded" -#: ../gtk/gtkcellrenderer.c:360 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "Row is an expander row, and is expanded" -#: ../gtk/gtkcellrenderer.c:367 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "Cell background color name" -#: ../gtk/gtkcellrenderer.c:368 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "Cell background color as a string" -#: ../gtk/gtkcellrenderer.c:375 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "Cell background color" -#: ../gtk/gtkcellrenderer.c:376 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "Cell background color as a GdkColor" -#: ../gtk/gtkcellrenderer.c:389 +#: ../gtk/gtkcellrenderer.c:395 msgid "Cell background RGBA color" msgstr "Cell background RGBA color" -#: ../gtk/gtkcellrenderer.c:390 +#: ../gtk/gtkcellrenderer.c:396 msgid "Cell background color as a GdkRGBA" msgstr "Cell background color as a GdkRGBA" -#: ../gtk/gtkcellrenderer.c:397 +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "Editing" -#: ../gtk/gtkcellrenderer.c:398 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "Whether the cell renderer is currently in editing mode" -#: ../gtk/gtkcellrenderer.c:406 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "Cell background set" -#: ../gtk/gtkcellrenderer.c:407 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "Whether this tag affects the cell background color" @@ -1259,7 +1438,7 @@ msgstr "Text Column" msgid "A column in the data source model to get the strings from" msgstr "A column in the data source model to get the strings from" -#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:932 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "Has Entry" @@ -1291,8 +1470,8 @@ msgstr "Pixbuf Expander Closed" msgid "Pixbuf for closed expander" msgstr "Pixbuf for closed expander" -#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:250 -#: ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:253 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "Stock ID" @@ -1300,8 +1479,8 @@ msgstr "Stock ID" msgid "The stock ID of the stock icon to render" msgstr "The stock ID of the stock icon to render" -#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:153 -#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "Size" @@ -1325,8 +1504,8 @@ msgstr "Follow State" msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Whether the rendered pixbuf should be colorized according to the state" -#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:325 -#: ../gtk/gtkwindow.c:710 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:328 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "Icon" @@ -1334,10 +1513,10 @@ msgstr "Icon" msgid "Value of the progress bar" msgstr "Value of the progress bar" -#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:247 -#: ../gtk/gtkentry.c:829 ../gtk/gtkentrybuffer.c:352 -#: ../gtk/gtkmessagedialog.c:226 ../gtk/gtkprogressbar.c:177 -#: ../gtk/gtktextbuffer.c:209 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "Text" @@ -1345,7 +1524,7 @@ msgstr "Text" msgid "Text on the progress bar" msgstr "Text on the progress bar" -#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 msgid "Pulse" msgstr "Pulse" @@ -1378,7 +1557,7 @@ msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "The vertical text alignment, from 0 (top) to 1 (bottom)." #: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 -#: ../gtk/gtkrange.c:440 +#: ../gtk/gtkrange.c:424 msgid "Inverted" msgstr "Inverted" @@ -1386,12 +1565,12 @@ msgstr "Inverted" msgid "Invert the direction in which the progress bar grows" msgstr "Invert the direction in which the progress bar grows" -#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:432 -#: ../gtk/gtkscalebutton.c:239 ../gtk/gtkspinbutton.c:230 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:416 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "Adjustment" -#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:231 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "The adjustment that holds the value of the spin button" @@ -1399,21 +1578,21 @@ msgstr "The adjustment that holds the value of the spin button" msgid "Climb rate" msgstr "Climb rate" -#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:239 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "The acceleration rate when you hold down a button" -#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:254 -#: ../gtk/gtkspinbutton.c:248 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "Digits" -#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:249 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "The number of decimal places to display" -#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:105 -#: ../gtk/gtkmenu.c:521 ../gtk/gtkspinner.c:131 ../gtk/gtkswitch.c:738 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:586 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:752 #: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 #: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" @@ -1423,197 +1602,197 @@ msgstr "Active" msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Whether the spinner is active (ie. shown) in the cell" -#: ../gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:138 msgid "Pulse of the spinner" msgstr "Pulse of the spinner" -#: ../gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:152 msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "The GtkIconSize value that specifies the size of the rendered spinner" -#: ../gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Text to render" -#: ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Markup" -#: ../gtk/gtkcellrenderertext.c:256 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Marked up text to render" -#: ../gtk/gtkcellrenderertext.c:263 ../gtk/gtklabel.c:574 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Attributes" -#: ../gtk/gtkcellrenderertext.c:264 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "A list of style attributes to apply to the text of the renderer" -#: ../gtk/gtkcellrenderertext.c:271 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Single Paragraph Mode" -#: ../gtk/gtkcellrenderertext.c:272 +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "Whether to keep all text in a single paragraph" -#: ../gtk/gtkcellrenderertext.c:280 ../gtk/gtkcellview.c:192 -#: ../gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:196 msgid "Background color name" msgstr "Background color name" -#: ../gtk/gtkcellrenderertext.c:281 ../gtk/gtkcellview.c:193 -#: ../gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:197 msgid "Background color as a string" msgstr "Background color as a string" -#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:199 -#: ../gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:204 msgid "Background color" msgstr "Background color" -#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:200 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "Background color as a GdkColor" -#: ../gtk/gtkcellrenderertext.c:303 +#: ../gtk/gtkcellrenderertext.c:311 msgid "Background color as RGBA" msgstr "Background color as RGBA" -#: ../gtk/gtkcellrenderertext.c:304 ../gtk/gtkcellview.c:214 +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 msgid "Background color as a GdkRGBA" msgstr "Background color as a GdkRGBA" -#: ../gtk/gtkcellrenderertext.c:310 ../gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:220 msgid "Foreground color name" msgstr "Foreground color name" -#: ../gtk/gtkcellrenderertext.c:311 ../gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:221 msgid "Foreground color as a string" msgstr "Foreground color as a string" -#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:210 -#: ../gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:228 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "Foreground color" -#: ../gtk/gtkcellrenderertext.c:319 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Foreground color as a GdkColor" -#: ../gtk/gtkcellrenderertext.c:333 +#: ../gtk/gtkcellrenderertext.c:341 msgid "Foreground color as RGBA" msgstr "Foreground color as RGBA" -#: ../gtk/gtkcellrenderertext.c:334 +#: ../gtk/gtkcellrenderertext.c:342 msgid "Foreground color as a GdkRGBA" msgstr "Foreground color as a GdkRGBA" -#: ../gtk/gtkcellrenderertext.c:342 ../gtk/gtkentry.c:753 -#: ../gtk/gtktexttag.c:227 ../gtk/gtktextview.c:686 +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktextview.c:686 msgid "Editable" msgstr "Editable" -#: ../gtk/gtkcellrenderertext.c:343 ../gtk/gtktexttag.c:228 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:246 #: ../gtk/gtktextview.c:687 msgid "Whether the text can be modified by the user" msgstr "Whether the text can be modified by the user" -#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkcellrenderertext.c:358 -#: ../gtk/gtktexttag.c:243 ../gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:261 ../gtk/gtktexttag.c:269 msgid "Font" msgstr "Font" -#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:262 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "Font description as a string, e.g. \"Sans Italic 12\"" -#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:270 msgid "Font description as a PangoFontDescription struct" msgstr "Font description as a PangoFontDescription struct" -#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:277 msgid "Font family" msgstr "Font family" -#: ../gtk/gtkcellrenderertext.c:368 ../gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:278 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" -#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtkcellrenderertext.c:376 -#: ../gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:285 msgid "Font style" msgstr "Font style" -#: ../gtk/gtkcellrenderertext.c:384 ../gtk/gtkcellrenderertext.c:385 -#: ../gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:294 msgid "Font variant" msgstr "Font variant" -#: ../gtk/gtkcellrenderertext.c:393 ../gtk/gtkcellrenderertext.c:394 -#: ../gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:303 msgid "Font weight" msgstr "Font weight" -#: ../gtk/gtkcellrenderertext.c:403 ../gtk/gtkcellrenderertext.c:404 -#: ../gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:314 msgid "Font stretch" msgstr "Font stretch" -#: ../gtk/gtkcellrenderertext.c:412 ../gtk/gtkcellrenderertext.c:413 -#: ../gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:323 msgid "Font size" msgstr "Font size" -#: ../gtk/gtkcellrenderertext.c:422 ../gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:343 msgid "Font points" msgstr "Font points" -#: ../gtk/gtkcellrenderertext.c:423 ../gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:344 msgid "Font size in points" msgstr "Font size in points" -#: ../gtk/gtkcellrenderertext.c:432 ../gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:333 msgid "Font scale" msgstr "Font scale" -#: ../gtk/gtkcellrenderertext.c:433 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Font scaling factor" -#: ../gtk/gtkcellrenderertext.c:442 ../gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:412 msgid "Rise" msgstr "Rise" -#: ../gtk/gtkcellrenderertext.c:443 +#: ../gtk/gtkcellrenderertext.c:451 msgid "" "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Offset of text above the baseline (below the baseline if rise is negative)" -#: ../gtk/gtkcellrenderertext.c:454 ../gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:452 msgid "Strikethrough" msgstr "Strikethrough" -#: ../gtk/gtkcellrenderertext.c:455 ../gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:453 msgid "Whether to strike through the text" msgstr "Whether to strike through the text" -#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:460 msgid "Underline" msgstr "Underline" -#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:461 msgid "Style of underline for this text" msgstr "Style of underline for this text" -#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:372 msgid "Language" msgstr "Language" -#: ../gtk/gtkcellrenderertext.c:472 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1623,12 +1802,12 @@ msgstr "" "when rendering the text. If you don't understand this parameter, you " "probably don't need it" -#: ../gtk/gtkcellrenderertext.c:492 ../gtk/gtklabel.c:699 -#: ../gtk/gtkprogressbar.c:207 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:217 msgid "Ellipsize" msgstr "Ellipsize" -#: ../gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1636,28 +1815,28 @@ msgstr "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" -#: ../gtk/gtkcellrenderertext.c:512 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 #: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Width In Characters" -#: ../gtk/gtkcellrenderertext.c:513 ../gtk/gtklabel.c:721 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "The desired width of the label, in characters" -#: ../gtk/gtkcellrenderertext.c:537 ../gtk/gtklabel.c:781 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Maximum Width In Characters" -#: ../gtk/gtkcellrenderertext.c:538 +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" msgstr "The maximum width of the cell, in characters" -#: ../gtk/gtkcellrenderertext.c:556 ../gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:469 msgid "Wrap mode" msgstr "Wrap mode" -#: ../gtk/gtkcellrenderertext.c:557 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1665,149 +1844,149 @@ msgstr "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" -#: ../gtk/gtkcellrenderertext.c:576 ../gtk/gtkcombobox.c:754 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "Wrap width" -#: ../gtk/gtkcellrenderertext.c:577 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "The width at which the text is wrapped" -#: ../gtk/gtkcellrenderertext.c:597 ../gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "Alignment" -#: ../gtk/gtkcellrenderertext.c:598 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "How to draw the toolbar" -#: ../gtk/gtkcellrenderertext.c:610 ../gtk/gtkcellview.c:236 -#: ../gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:558 msgid "Background set" msgstr "Background set" -#: ../gtk/gtkcellrenderertext.c:611 ../gtk/gtkcellview.c:237 -#: ../gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the background color" msgstr "Whether this tag affects the background color" -#: ../gtk/gtkcellrenderertext.c:614 ../gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:566 msgid "Foreground set" msgstr "Foreground set" -#: ../gtk/gtkcellrenderertext.c:615 ../gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the foreground color" msgstr "Whether this tag affects the foreground color" -#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:570 msgid "Editability set" msgstr "Editability set" -#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects text editability" msgstr "Whether this tag affects text editability" -#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:574 msgid "Font family set" msgstr "Font family set" -#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font family" msgstr "Whether this tag affects the font family" -#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:578 msgid "Font style set" msgstr "Font style set" -#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font style" msgstr "Whether this tag affects the font style" -#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:582 msgid "Font variant set" msgstr "Font variant set" -#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:583 msgid "Whether this tag affects the font variant" msgstr "Whether this tag affects the font variant" -#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:586 msgid "Font weight set" msgstr "Font weight set" -#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:587 msgid "Whether this tag affects the font weight" msgstr "Whether this tag affects the font weight" -#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:590 msgid "Font stretch set" msgstr "Font stretch set" -#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the font stretch" msgstr "Whether this tag affects the font stretch" -#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:594 msgid "Font size set" msgstr "Font size set" -#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the font size" msgstr "Whether this tag affects the font size" -#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:598 msgid "Font scale set" msgstr "Font scale set" -#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:599 msgid "Whether this tag scales the font size by a factor" msgstr "Whether this tag scales the font size by a factor" -#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:618 msgid "Rise set" msgstr "Rise set" -#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects the rise" msgstr "Whether this tag affects the rise" -#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:634 msgid "Strikethrough set" msgstr "Strikethrough set" -#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:635 msgid "Whether this tag affects strikethrough" msgstr "Whether this tag affects strikethrough" -#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:642 msgid "Underline set" msgstr "Underline set" -#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:643 msgid "Whether this tag affects underlining" msgstr "Whether this tag affects underlining" -#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:606 msgid "Language set" msgstr "Language set" -#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:607 msgid "Whether this tag affects the language the text is rendered as" msgstr "Whether this tag affects the language the text is rendered as" -#: ../gtk/gtkcellrenderertext.c:666 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Ellipsize set" -#: ../gtk/gtkcellrenderertext.c:667 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Whether this tag affects the ellipsize mode" -#: ../gtk/gtkcellrenderertext.c:670 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Align set" -#: ../gtk/gtkcellrenderertext.c:671 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Whether this tag affects the alignment mode" @@ -1848,27 +2027,63 @@ msgid "Indicator size" msgstr "Indicator size" #: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 -#: ../gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Size of check or radio indicator" -#: ../gtk/gtkcellview.c:213 +#: ../gtk/gtkcellview.c:210 msgid "Background RGBA color" msgstr "Background RGBA color" -#: ../gtk/gtkcellview.c:228 +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "CellView model" -#: ../gtk/gtkcellview.c:229 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "The model for cell view" -#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "Cell Area" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "The GtkCellArea used to layout cells" + +#: ../gtk/gtkcellview.c:265 +msgid "Cell Area Context" +msgstr "Cell Area Context" + +#: ../gtk/gtkcellview.c:266 +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "The GtkCellAreaContext used to compute the geometry of the cell view" + +#: ../gtk/gtkcellview.c:283 +msgid "Draw Sensitive" +msgstr "Draw Sensitive" + +#: ../gtk/gtkcellview.c:284 +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "Whether to force cells to be drawn in a sensitive state" + +#: ../gtk/gtkcellview.c:302 +msgid "Fit Model" +msgstr "Fit Model" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "Whether to request enough space for every row in the model" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Indicator Size" -#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "Indicator Spacing" @@ -1876,97 +2091,97 @@ msgstr "Indicator Spacing" msgid "Spacing around check or radio indicator" msgstr "Spacing around check or radio indicator" -#: ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Whether the menu item is checked" -#: ../gtk/gtkcheckmenuitem.c:113 ../gtk/gtktogglebutton.c:133 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inconsistent" -#: ../gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "Whether to display an \"inconsistent\" state" -#: ../gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Draw as radio menu item" -#: ../gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "Whether the menu item looks like a radio menu item" -#: ../gtk/gtkcolorbutton.c:171 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "Use alpha" -#: ../gtk/gtkcolorbutton.c:172 +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" msgstr "Whether to give the color an alpha value" -#: ../gtk/gtkcolorbutton.c:186 ../gtk/gtkfilechooserbutton.c:397 -#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:115 -#: ../gtk/gtkstatusicon.c:415 ../gtk/gtktreeviewcolumn.c:286 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:141 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "Title" -#: ../gtk/gtkcolorbutton.c:187 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "The title of the color selection dialog" -#: ../gtk/gtkcolorbutton.c:201 ../gtk/gtkcolorsel.c:339 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Current Color" -#: ../gtk/gtkcolorbutton.c:202 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "The selected color" -#: ../gtk/gtkcolorbutton.c:216 ../gtk/gtkcolorsel.c:346 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Current Alpha" -#: ../gtk/gtkcolorbutton.c:217 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "The selected opacity value (0 fully transparent, 65535 fully opaque)" -#: ../gtk/gtkcolorbutton.c:231 +#: ../gtk/gtkcolorbutton.c:230 msgid "Current RGBA Color" msgstr "Current RGBA Color" -#: ../gtk/gtkcolorbutton.c:232 +#: ../gtk/gtkcolorbutton.c:231 msgid "The selected RGBA color" msgstr "The selected RGBA color" -#: ../gtk/gtkcolorsel.c:325 +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Has Opacity Control" -#: ../gtk/gtkcolorsel.c:326 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "Whether the color selector should allow setting opacity" -#: ../gtk/gtkcolorsel.c:332 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Has palette" -#: ../gtk/gtkcolorsel.c:333 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Whether a palette should be used" -#: ../gtk/gtkcolorsel.c:340 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "The current color" -#: ../gtk/gtkcolorsel.c:347 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "The current opacity value (0 fully transparent, 65535 fully opaque)" -#: ../gtk/gtkcolorsel.c:361 +#: ../gtk/gtkcolorsel.c:360 msgid "Current RGBA" msgstr "Current RGBA" -#: ../gtk/gtkcolorsel.c:362 +#: ../gtk/gtkcolorsel.c:361 msgid "The current RGBA color" msgstr "The current RGBA color" @@ -2002,67 +2217,67 @@ msgstr "Help Button" msgid "The help button of the dialog." msgstr "The help button of the dialog." -#: ../gtk/gtkcombobox.c:737 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "ComboBox model" -#: ../gtk/gtkcombobox.c:738 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "The model for the combo box" -#: ../gtk/gtkcombobox.c:755 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "Wrap width for laying out the items in a grid" -#: ../gtk/gtkcombobox.c:777 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "Row span column" -#: ../gtk/gtkcombobox.c:778 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "TreeModel column containing the row span values" -#: ../gtk/gtkcombobox.c:799 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "Column span column" -#: ../gtk/gtkcombobox.c:800 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "TreeModel column containing the column span values" -#: ../gtk/gtkcombobox.c:821 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "Active item" -#: ../gtk/gtkcombobox.c:822 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "The item which is currently active" -#: ../gtk/gtkcombobox.c:841 ../gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Add tearoffs to menus" -#: ../gtk/gtkcombobox.c:842 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "Whether dropdowns should have a tearoff menu item" -#: ../gtk/gtkcombobox.c:857 ../gtk/gtkentry.c:778 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Has Frame" -#: ../gtk/gtkcombobox.c:858 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "Whether the combo box draws a frame around the child" -#: ../gtk/gtkcombobox.c:866 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Whether the combo box grabs focus when it is clicked with the mouse" -#: ../gtk/gtkcombobox.c:881 ../gtk/gtkmenu.c:576 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:641 msgid "Tearoff Title" msgstr "Tearoff Title" -#: ../gtk/gtkcombobox.c:882 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" @@ -2070,31 +2285,31 @@ msgstr "" "A title that may be displayed by the window manager when the popup is torn-" "off" -#: ../gtk/gtkcombobox.c:899 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "Popup shown" -#: ../gtk/gtkcombobox.c:900 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "Whether the combo's dropdown is shown" -#: ../gtk/gtkcombobox.c:916 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "Button Sensitivity" -#: ../gtk/gtkcombobox.c:917 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Whether the dropdown button is sensitive when the model is empty" -#: ../gtk/gtkcombobox.c:933 +#: ../gtk/gtkcombobox.c:859 msgid "Whether combo box has an entry" msgstr "Whether combo box has an entry" -#: ../gtk/gtkcombobox.c:948 +#: ../gtk/gtkcombobox.c:874 msgid "Entry Text Column" msgstr "Entry Text Column" -#: ../gtk/gtkcombobox.c:949 +#: ../gtk/gtkcombobox.c:875 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" @@ -2102,11 +2317,11 @@ msgstr "" "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" -#: ../gtk/gtkcombobox.c:966 +#: ../gtk/gtkcombobox.c:892 msgid "ID Column" msgstr "ID Column" -#: ../gtk/gtkcombobox.c:967 +#: ../gtk/gtkcombobox.c:893 msgid "" "The column in the combo box's model that provides string IDs for the values " "in the model" @@ -2114,19 +2329,19 @@ msgstr "" "The column in the combo box's model that provides string IDs for the values " "in the model" -#: ../gtk/gtkcombobox.c:982 +#: ../gtk/gtkcombobox.c:908 msgid "Active id" msgstr "Active id" -#: ../gtk/gtkcombobox.c:983 +#: ../gtk/gtkcombobox.c:909 msgid "The value of the id column for the active row" msgstr "The value of the id column for the active row" -#: ../gtk/gtkcombobox.c:998 +#: ../gtk/gtkcombobox.c:924 msgid "Popup Fixed Width" msgstr "Popup Fixed Width" -#: ../gtk/gtkcombobox.c:999 +#: ../gtk/gtkcombobox.c:925 msgid "" "Whether the popup's width should be a fixed width matching the allocated " "width of the combo box" @@ -2134,131 +2349,131 @@ msgstr "" "Whether the popup's width should be a fixed width matching the allocated " "width of the combo box" -#: ../gtk/gtkcombobox.c:1007 +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "Appears as list" -#: ../gtk/gtkcombobox.c:1008 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Whether dropdowns should look like lists rather than menus" -#: ../gtk/gtkcombobox.c:1024 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "Arrow Size" -#: ../gtk/gtkcombobox.c:1025 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "The minimum size of the arrow in the combo box" -#: ../gtk/gtkcombobox.c:1040 ../gtk/gtkentry.c:878 ../gtk/gtkhandlebox.c:188 -#: ../gtk/gtkmenubar.c:196 ../gtk/gtkstatusbar.c:180 ../gtk/gtktoolbar.c:603 -#: ../gtk/gtkviewport.c:154 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:207 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:153 msgid "Shadow type" msgstr "Shadow type" -#: ../gtk/gtkcombobox.c:1041 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "Which kind of shadow to draw around the combo box" -#: ../gtk/gtkcontainer.c:472 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "Resize mode" -#: ../gtk/gtkcontainer.c:473 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "Specify how resize events are handled" -#: ../gtk/gtkcontainer.c:480 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "Border width" -#: ../gtk/gtkcontainer.c:481 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "The width of the empty border outside the containers children" -#: ../gtk/gtkcontainer.c:489 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "Child" -#: ../gtk/gtkcontainer.c:490 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "Can be used to add a new child to the container" -#: ../gtk/gtkdialog.c:165 ../gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Content area border" -#: ../gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "Width of border around the main dialog area" -#: ../gtk/gtkdialog.c:183 ../gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Content area spacing" -#: ../gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "Spacing between elements of the main dialog area" -#: ../gtk/gtkdialog.c:191 ../gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Button spacing" -#: ../gtk/gtkdialog.c:192 ../gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Spacing between buttons" -#: ../gtk/gtkdialog.c:200 ../gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Action area border" -#: ../gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" msgstr "Width of border around the button area at the bottom of the dialog" -#: ../gtk/gtkentry.c:725 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Text Buffer" -#: ../gtk/gtkentry.c:726 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Text buffer object which actually stores entry text" -#: ../gtk/gtkentry.c:733 ../gtk/gtklabel.c:662 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Cursor Position" -#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:663 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "The current position of the insertion cursor in chars" -#: ../gtk/gtkentry.c:743 ../gtk/gtklabel.c:672 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Selection Bound" -#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:673 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "" "The position of the opposite end of the selection from the cursor in chars" msgstr "" "The position of the opposite end of the selection from the cursor in chars" -#: ../gtk/gtkentry.c:754 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Whether the entry contents can be edited" -#: ../gtk/gtkentry.c:761 ../gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Maximum length" -#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "Maximum number of characters for this entry. Zero if no maximum" -#: ../gtk/gtkentry.c:770 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Visibility" -#: ../gtk/gtkentry.c:771 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" @@ -2266,30 +2481,30 @@ msgstr "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" -#: ../gtk/gtkentry.c:779 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALSE removes outside bevel from entry" -#: ../gtk/gtkentry.c:787 +#: ../gtk/gtkentry.c:788 msgid "" "Border between text and frame. Overrides the inner-border style property" msgstr "" "Border between text and frame. Overrides the inner-border style property" -#: ../gtk/gtkentry.c:794 ../gtk/gtkentry.c:1360 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Invisible character" -#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "The character to use when masking entry contents (in \"password mode\")" -#: ../gtk/gtkentry.c:802 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Activates default" -#: ../gtk/gtkentry.c:803 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2297,31 +2512,31 @@ msgstr "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" -#: ../gtk/gtkentry.c:809 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Width in chars" -#: ../gtk/gtkentry.c:810 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Number of characters to leave space for in the entry" -#: ../gtk/gtkentry.c:819 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Scroll offset" -#: ../gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "Number of pixels of the entry scrolled off the screen to the left" -#: ../gtk/gtkentry.c:830 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "The contents of the entry" -#: ../gtk/gtkentry.c:845 ../gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X align" -#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2329,63 +2544,63 @@ msgstr "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." -#: ../gtk/gtkentry.c:862 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Truncate multiline" -#: ../gtk/gtkentry.c:863 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Whether to truncate multiline pastes to one line." -#: ../gtk/gtkentry.c:879 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "Which kind of shadow to draw around the entry when has-frame is set" -#: ../gtk/gtkentry.c:894 ../gtk/gtktextview.c:766 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:766 msgid "Overwrite mode" msgstr "Overwrite mode" -#: ../gtk/gtkentry.c:895 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Whether new text overwrites existing text" -#: ../gtk/gtkentry.c:909 ../gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Text length" -#: ../gtk/gtkentry.c:910 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Length of the text currently in the entry" -#: ../gtk/gtkentry.c:925 +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" msgstr "Invisible character set" -#: ../gtk/gtkentry.c:926 +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "Whether the invisible character has been set" -#: ../gtk/gtkentry.c:944 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Caps Lock warning" -#: ../gtk/gtkentry.c:945 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "Whether password entries will show a warning when Caps Lock is on" -#: ../gtk/gtkentry.c:959 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Progress Fraction" -#: ../gtk/gtkentry.c:960 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "The current fraction of the task that's been completed" -#: ../gtk/gtkentry.c:977 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Progress Pulse Step" -#: ../gtk/gtkentry.c:978 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2393,167 +2608,167 @@ msgstr "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" -#: ../gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Primary pixbuf" -#: ../gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "Primary pixbuf for the entry" -#: ../gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Secondary pixbuf" -#: ../gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "Secondary pixbuf for the entry" -#: ../gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "Primary stock ID" -#: ../gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "Stock ID for primary icon" -#: ../gtk/gtkentry.c:1039 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "Secondary stock ID" -#: ../gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "Stock ID for secondary icon" -#: ../gtk/gtkentry.c:1054 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Primary icon name" -#: ../gtk/gtkentry.c:1055 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Icon name for primary icon" -#: ../gtk/gtkentry.c:1069 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Secondary icon name" -#: ../gtk/gtkentry.c:1070 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "Icon name for secondary icon" -#: ../gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "Primary GIcon" -#: ../gtk/gtkentry.c:1085 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "GIcon for primary icon" -#: ../gtk/gtkentry.c:1099 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "Secondary GIcon" -#: ../gtk/gtkentry.c:1100 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "GIcon for secondary icon" -#: ../gtk/gtkentry.c:1114 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Primary storage type" -#: ../gtk/gtkentry.c:1115 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "The representation being used for primary icon" -#: ../gtk/gtkentry.c:1130 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Secondary storage type" -#: ../gtk/gtkentry.c:1131 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "The representation being used for secondary icon" -#: ../gtk/gtkentry.c:1152 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Primary icon activatable" -#: ../gtk/gtkentry.c:1153 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Whether the primary icon is activatable" -#: ../gtk/gtkentry.c:1173 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Secondary icon activatable" -#: ../gtk/gtkentry.c:1174 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Whether the secondary icon is activatable" -#: ../gtk/gtkentry.c:1196 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Primary icon sensitive" -#: ../gtk/gtkentry.c:1197 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Whether the primary icon is sensitive" -#: ../gtk/gtkentry.c:1218 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Secondary icon sensitive" -#: ../gtk/gtkentry.c:1219 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Whether the secondary icon is sensitive" -#: ../gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Primary icon tooltip text" -#: ../gtk/gtkentry.c:1236 ../gtk/gtkentry.c:1272 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "The contents of the tooltip on the primary icon" -#: ../gtk/gtkentry.c:1252 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Secondary icon tooltip text" -#: ../gtk/gtkentry.c:1253 ../gtk/gtkentry.c:1291 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "The contents of the tooltip on the secondary icon" -#: ../gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Primary icon tooltip markup" -#: ../gtk/gtkentry.c:1290 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Secondary icon tooltip markup" -#: ../gtk/gtkentry.c:1310 ../gtk/gtktextview.c:794 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:794 msgid "IM module" msgstr "IM module" -#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:795 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:795 msgid "Which IM module should be used" msgstr "Which IM module should be used" -#: ../gtk/gtkentry.c:1325 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Icon Prelight" -#: ../gtk/gtkentry.c:1326 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "Whether activatable icons should prelight when hovered" -#: ../gtk/gtkentry.c:1339 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Progress Border" -#: ../gtk/gtkentry.c:1340 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "Border around the progress bar" -#: ../gtk/gtkentry.c:1832 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Border between text and frame." @@ -2565,75 +2780,75 @@ msgstr "The contents of the buffer" msgid "Length of the text currently in the buffer" msgstr "Length of the text currently in the buffer" -#: ../gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "Completion Model" -#: ../gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "The model to find matches in" -#: ../gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "Minimum Key Length" -#: ../gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "Minimum length of the search key in order to look up matches" -#: ../gtk/gtkentrycompletion.c:304 ../gtk/gtkiconview.c:617 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 msgid "Text column" msgstr "Text column" -#: ../gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "The column of the model containing the strings." -#: ../gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "Inline completion" -#: ../gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "Whether the common prefix should be inserted automatically" -#: ../gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "Popup completion" -#: ../gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "Whether the completions should be shown in a popup window" -#: ../gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "Popup set width" -#: ../gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "If TRUE, the popup window will have the same size as the entry" -#: ../gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "Popup single match" -#: ../gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." msgstr "If TRUE, the popup window will appear for a single match." -#: ../gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "Inline selection" -#: ../gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "Your description here" -#: ../gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "Visible Window" -#: ../gtk/gtkeventbox.c:102 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2641,11 +2856,11 @@ msgstr "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." -#: ../gtk/gtkeventbox.c:108 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "Above child" -#: ../gtk/gtkeventbox.c:109 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2653,58 +2868,58 @@ msgstr "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." -#: ../gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "Expanded" -#: ../gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Whether the expander has been opened to reveal the child widget" -#: ../gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "Text of the expander's label" -#: ../gtk/gtkexpander.c:225 ../gtk/gtklabel.c:581 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Use markup" -#: ../gtk/gtkexpander.c:226 ../gtk/gtklabel.c:582 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "The text of the label includes XML markup. See pango_parse_markup()" -#: ../gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "Space to put between the label and the child" -#: ../gtk/gtkexpander.c:243 ../gtk/gtkframe.c:165 ../gtk/gtktoolbutton.c:216 -#: ../gtk/gtktoolitemgroup.c:1595 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:168 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1601 msgid "Label widget" msgstr "Label widget" -#: ../gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "A widget to display in place of the usual expander label" -#: ../gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:329 msgid "Label fill" msgstr "Label fill" -#: ../gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" msgstr "Whether the label widget should fill all available horizontal space" -#: ../gtk/gtkexpander.c:258 ../gtk/gtktoolitemgroup.c:1623 -#: ../gtk/gtktreeview.c:863 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1629 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "Expander Size" -#: ../gtk/gtkexpander.c:259 ../gtk/gtktoolitemgroup.c:1624 -#: ../gtk/gtktreeview.c:864 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1630 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "Size of the expander arrow" -#: ../gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "Spacing around expander arrow" @@ -2822,19 +3037,19 @@ msgstr "" "Whether a file chooser not in open mode will offer the user to create new " "folders." -#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:633 +#: ../gtk/gtkfixed.c:152 ../gtk/gtklayout.c:632 msgid "X position" msgstr "X position" -#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:634 +#: ../gtk/gtkfixed.c:153 ../gtk/gtklayout.c:633 msgid "X position of child widget" msgstr "X position of child widget" -#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:643 +#: ../gtk/gtkfixed.c:160 ../gtk/gtklayout.c:642 msgid "Y position" msgstr "Y position" -#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:644 +#: ../gtk/gtkfixed.c:161 ../gtk/gtklayout.c:643 msgid "Y position of child widget" msgstr "Y position of child widget" @@ -2842,7 +3057,7 @@ msgstr "Y position of child widget" msgid "The title of the font selection dialog" msgstr "The title of the font selection dialog" -#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:219 msgid "Font name" msgstr "Font name" @@ -2886,67 +3101,131 @@ msgstr "Show size" msgid "Whether selected font size is shown in the label" msgstr "Whether selected font size is shown in the label" -#: ../gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:220 msgid "The string that represents this font" msgstr "The string that represents this font" -#: ../gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:226 msgid "Preview text" msgstr "Preview text" -#: ../gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:227 msgid "The text to display in order to demonstrate the selected font" msgstr "The text to display in order to demonstrate the selected font" -#: ../gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:134 msgid "Text of the frame's label" msgstr "Text of the frame's label" -#: ../gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:141 msgid "Label xalign" msgstr "Label xalign" -#: ../gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:142 msgid "The horizontal alignment of the label" msgstr "The horizontal alignment of the label" -#: ../gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:150 msgid "Label yalign" msgstr "Label yalign" -#: ../gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:151 msgid "The vertical alignment of the label" msgstr "The vertical alignment of the label" -#: ../gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:159 msgid "Frame shadow" msgstr "Frame shadow" -#: ../gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:160 msgid "Appearance of the frame border" msgstr "Appearance of the frame border" -#: ../gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:169 msgid "A widget to display in place of the usual frame label" msgstr "A widget to display in place of the usual frame label" -#: ../gtk/gtkhandlebox.c:189 +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "Row spacing" + +#: ../gtk/gtkgrid.c:1270 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "The amount of space between two consecutive rows" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "Column spacing" + +#: ../gtk/gtkgrid.c:1277 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "The amount of space between two consecutive columns" + +#: ../gtk/gtkgrid.c:1283 +msgid "Row Homogeneous" +msgstr "Row Homogeneous" + +#: ../gtk/gtkgrid.c:1284 +msgid "If TRUE, the rows are all the same height" +msgstr "If TRUE, the rows are all the same height" + +#: ../gtk/gtkgrid.c:1290 +msgid "Column Homogeneous" +msgstr "Column Homogeneous" + +#: ../gtk/gtkgrid.c:1291 +msgid "If TRUE, the columns are all the same width" +msgstr "If TRUE, the columns are all the same width" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "Left attachment" + +#: ../gtk/gtkgrid.c:1298 ../gtk/gtkmenu.c:759 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "The column number to attach the left side of the child to" + +#: ../gtk/gtkgrid.c:1304 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "Top attachment" + +#: ../gtk/gtkgrid.c:1305 +msgid "The row number to attach the top side of a child widget to" +msgstr "The row number to attach the top side of a child widget to" + +#: ../gtk/gtkgrid.c:1311 ../gtk/gtklayout.c:658 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "Width" + +#: ../gtk/gtkgrid.c:1312 +msgid "The number of columns that a child spans" +msgstr "The number of columns that a child spans" + +#: ../gtk/gtkgrid.c:1318 ../gtk/gtklayout.c:667 +msgid "Height" +msgstr "Height" + +#: ../gtk/gtkgrid.c:1319 +msgid "The number of rows that a child spans" +msgstr "The number of rows that a child spans" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "Appearance of the shadow that surrounds the container" -#: ../gtk/gtkhandlebox.c:197 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "Handle position" -#: ../gtk/gtkhandlebox.c:198 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "Position of the handle relative to the child widget" -#: ../gtk/gtkhandlebox.c:206 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "Snap edge" -#: ../gtk/gtkhandlebox.c:207 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" @@ -2954,11 +3233,11 @@ msgstr "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" -#: ../gtk/gtkhandlebox.c:215 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "Snap edge set" -#: ../gtk/gtkhandlebox.c:216 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -2966,11 +3245,11 @@ msgstr "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" -#: ../gtk/gtkhandlebox.c:223 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "Child Detached" -#: ../gtk/gtkhandlebox.c:224 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." @@ -2978,241 +3257,250 @@ msgstr "" "A boolean value indicating whether the handlebox's child is attached or " "detached." -#: ../gtk/gtkiconview.c:580 +#: ../gtk/gtkiconview.c:524 msgid "Selection mode" msgstr "Selection mode" -#: ../gtk/gtkiconview.c:581 +#: ../gtk/gtkiconview.c:525 msgid "The selection mode" msgstr "The selection mode" -#: ../gtk/gtkiconview.c:599 +#: ../gtk/gtkiconview.c:543 msgid "Pixbuf column" msgstr "Pixbuf column" -#: ../gtk/gtkiconview.c:600 +#: ../gtk/gtkiconview.c:544 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Model column used to retrieve the icon pixbuf from" -#: ../gtk/gtkiconview.c:618 +#: ../gtk/gtkiconview.c:562 msgid "Model column used to retrieve the text from" msgstr "Model column used to retrieve the text from" -#: ../gtk/gtkiconview.c:637 +#: ../gtk/gtkiconview.c:581 msgid "Markup column" msgstr "Markup column" -#: ../gtk/gtkiconview.c:638 +#: ../gtk/gtkiconview.c:582 msgid "Model column used to retrieve the text if using Pango markup" msgstr "Model column used to retrieve the text if using Pango markup" -#: ../gtk/gtkiconview.c:645 +#: ../gtk/gtkiconview.c:589 msgid "Icon View Model" msgstr "Icon View Model" -#: ../gtk/gtkiconview.c:646 +#: ../gtk/gtkiconview.c:590 msgid "The model for the icon view" msgstr "The model for the icon view" -#: ../gtk/gtkiconview.c:662 +#: ../gtk/gtkiconview.c:606 msgid "Number of columns" msgstr "Number of columns" -#: ../gtk/gtkiconview.c:663 +#: ../gtk/gtkiconview.c:607 msgid "Number of columns to display" msgstr "Number of columns to display" -#: ../gtk/gtkiconview.c:680 +#: ../gtk/gtkiconview.c:624 msgid "Width for each item" msgstr "Width for each item" -#: ../gtk/gtkiconview.c:681 +#: ../gtk/gtkiconview.c:625 msgid "The width used for each item" msgstr "The width used for each item" -#: ../gtk/gtkiconview.c:697 +#: ../gtk/gtkiconview.c:641 msgid "Space which is inserted between cells of an item" msgstr "Space which is inserted between cells of an item" -#: ../gtk/gtkiconview.c:712 +#: ../gtk/gtkiconview.c:656 msgid "Row Spacing" msgstr "Row Spacing" -#: ../gtk/gtkiconview.c:713 +#: ../gtk/gtkiconview.c:657 msgid "Space which is inserted between grid rows" msgstr "Space which is inserted between grid rows" -#: ../gtk/gtkiconview.c:728 +#: ../gtk/gtkiconview.c:672 msgid "Column Spacing" msgstr "Column Spacing" -#: ../gtk/gtkiconview.c:729 +#: ../gtk/gtkiconview.c:673 msgid "Space which is inserted between grid columns" msgstr "Space which is inserted between grid columns" -#: ../gtk/gtkiconview.c:744 +#: ../gtk/gtkiconview.c:688 msgid "Margin" msgstr "Margin" -#: ../gtk/gtkiconview.c:745 +#: ../gtk/gtkiconview.c:689 msgid "Space which is inserted at the edges of the icon view" msgstr "Space which is inserted at the edges of the icon view" -#: ../gtk/gtkiconview.c:760 +#: ../gtk/gtkiconview.c:704 msgid "Item Orientation" msgstr "Item Orientation" -#: ../gtk/gtkiconview.c:761 +#: ../gtk/gtkiconview.c:705 msgid "" "How the text and icon of each item are positioned relative to each other" msgstr "" "How the text and icon of each item are positioned relative to each other" -#: ../gtk/gtkiconview.c:777 ../gtk/gtktreeview.c:698 -#: ../gtk/gtktreeviewcolumn.c:329 +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "Reorderable" -#: ../gtk/gtkiconview.c:778 ../gtk/gtktreeview.c:699 +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "View is reorderable" -#: ../gtk/gtkiconview.c:785 ../gtk/gtktreeview.c:849 +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "Tooltip Column" -#: ../gtk/gtkiconview.c:786 +#: ../gtk/gtkiconview.c:730 msgid "The column in the model containing the tooltip texts for the items" msgstr "The column in the model containing the tooltip texts for the items" -#: ../gtk/gtkiconview.c:803 +#: ../gtk/gtkiconview.c:747 msgid "Item Padding" msgstr "Item Padding" -#: ../gtk/gtkiconview.c:804 +#: ../gtk/gtkiconview.c:748 msgid "Padding around icon view items" msgstr "Padding around icon view items" -#: ../gtk/gtkiconview.c:817 +#: ../gtk/gtkiconview.c:776 msgid "Selection Box Color" msgstr "Selection Box Color" -#: ../gtk/gtkiconview.c:818 +#: ../gtk/gtkiconview.c:777 msgid "Color of the selection box" msgstr "Color of the selection box" -#: ../gtk/gtkiconview.c:824 +#: ../gtk/gtkiconview.c:783 msgid "Selection Box Alpha" msgstr "Selection Box Alpha" -#: ../gtk/gtkiconview.c:825 +#: ../gtk/gtkiconview.c:784 msgid "Opacity of the selection box" msgstr "Opacity of the selection box" -#: ../gtk/gtkimage.c:233 ../gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "Pixbuf" -#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:237 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "A GdkPixbuf to display" -#: ../gtk/gtkimage.c:241 ../gtk/gtkrecentmanager.c:294 -#: ../gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:244 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "Filename" -#: ../gtk/gtkimage.c:242 ../gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:245 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "Filename to load and display" -#: ../gtk/gtkimage.c:251 ../gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:254 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "Stock ID for a stock image to display" -#: ../gtk/gtkimage.c:258 +#: ../gtk/gtkimage.c:261 msgid "Icon set" msgstr "Icon set" -#: ../gtk/gtkimage.c:259 +#: ../gtk/gtkimage.c:262 msgid "Icon set to display" msgstr "Icon set to display" -#: ../gtk/gtkimage.c:266 ../gtk/gtkscalebutton.c:230 ../gtk/gtktoolbar.c:520 -#: ../gtk/gtktoolpalette.c:1030 +#: ../gtk/gtkimage.c:269 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1032 msgid "Icon size" msgstr "Icon size" -#: ../gtk/gtkimage.c:267 +#: ../gtk/gtkimage.c:270 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "Symbolic size to use for stock icon, icon set or named icon" -#: ../gtk/gtkimage.c:283 +#: ../gtk/gtkimage.c:286 msgid "Pixel size" msgstr "Pixel size" -#: ../gtk/gtkimage.c:284 +#: ../gtk/gtkimage.c:287 msgid "Pixel size to use for named icon" msgstr "Pixel size to use for named icon" -#: ../gtk/gtkimage.c:292 +#: ../gtk/gtkimage.c:295 msgid "Animation" msgstr "Animation" -#: ../gtk/gtkimage.c:293 +#: ../gtk/gtkimage.c:296 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation to display" -#: ../gtk/gtkimage.c:333 ../gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:336 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "Storage type" -#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:337 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "The representation being used for image data" -#: ../gtk/gtkimagemenuitem.c:149 +#: ../gtk/gtkimage.c:355 +msgid "Use Fallback" +msgstr "Use Fallback" + +#: ../gtk/gtkimage.c:356 +msgid "Whether to use icon names fallback" +msgstr "Whether to use icon names fallback" + +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Child widget to appear next to the menu text" -#: ../gtk/gtkimagemenuitem.c:164 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "Whether to use the label text to create a stock menu item" -#: ../gtk/gtkimagemenuitem.c:197 ../gtk/gtkmenu.c:536 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:601 msgid "Accel Group" msgstr "Accel Group" -#: ../gtk/gtkimagemenuitem.c:198 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "The Accel Group to use for stock accelerator keys" -#: ../gtk/gtkinfobar.c:375 ../gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "Message Type" -#: ../gtk/gtkinfobar.c:376 ../gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "The type of message" -#: ../gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Width of border around the content area" -#: ../gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Spacing between elements of the area" -#: ../gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Width of border around the action area" -#: ../gtk/gtkinvisible.c:90 ../gtk/gtkmountoperation.c:175 -#: ../gtk/gtkstatusicon.c:279 ../gtk/gtkwindow.c:741 +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:546 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "Screen" -#: ../gtk/gtkinvisible.c:91 ../gtk/gtkwindow.c:742 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "The screen where this window will be displayed" @@ -3224,7 +3512,7 @@ msgstr "The text of the label" msgid "A list of style attributes to apply to the text of the label" msgstr "A list of style attributes to apply to the text of the label" -#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:335 ../gtk/gtktextview.c:703 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:353 ../gtk/gtktextview.c:703 msgid "Justification" msgstr "Justification" @@ -3326,92 +3614,84 @@ msgstr "Track visited links" msgid "Whether visited links should be tracked" msgstr "Whether visited links should be tracked" -#: ../gtk/gtklayout.c:659 ../gtk/gtktreeviewcolumn.c:229 -msgid "Width" -msgstr "Width" - -#: ../gtk/gtklayout.c:660 +#: ../gtk/gtklayout.c:659 msgid "The width of the layout" msgstr "The width of the layout" #: ../gtk/gtklayout.c:668 -msgid "Height" -msgstr "Height" - -#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "The height of the layout" -#: ../gtk/gtklinkbutton.c:174 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URI" -#: ../gtk/gtklinkbutton.c:175 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "The URI bound to this button" -#: ../gtk/gtklinkbutton.c:189 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "Visited" -#: ../gtk/gtklinkbutton.c:190 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "Whether this link has been visited." -#: ../gtk/gtkmenubar.c:170 +#: ../gtk/gtkmenubar.c:181 msgid "Pack direction" msgstr "Pack direction" -#: ../gtk/gtkmenubar.c:171 +#: ../gtk/gtkmenubar.c:182 msgid "The pack direction of the menubar" msgstr "The pack direction of the menubar" -#: ../gtk/gtkmenubar.c:187 +#: ../gtk/gtkmenubar.c:198 msgid "Child Pack direction" msgstr "Child Pack direction" -#: ../gtk/gtkmenubar.c:188 +#: ../gtk/gtkmenubar.c:199 msgid "The child pack direction of the menubar" msgstr "The child pack direction of the menubar" -#: ../gtk/gtkmenubar.c:197 +#: ../gtk/gtkmenubar.c:208 msgid "Style of bevel around the menubar" msgstr "Style of bevel around the menubar" -#: ../gtk/gtkmenubar.c:204 ../gtk/gtktoolbar.c:570 +#: ../gtk/gtkmenubar.c:215 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "Internal padding" -#: ../gtk/gtkmenubar.c:205 +#: ../gtk/gtkmenubar.c:216 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "Amount of border space between the menubar shadow and the menu items" -#: ../gtk/gtkmenu.c:522 +#: ../gtk/gtkmenu.c:587 msgid "The currently selected menu item" msgstr "The currently selected menu item" -#: ../gtk/gtkmenu.c:537 +#: ../gtk/gtkmenu.c:602 msgid "The accel group holding accelerators for the menu" msgstr "The accel group holding accelerators for the menu" -#: ../gtk/gtkmenu.c:551 ../gtk/gtkmenuitem.c:316 +#: ../gtk/gtkmenu.c:616 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Accel Path" -#: ../gtk/gtkmenu.c:552 +#: ../gtk/gtkmenu.c:617 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" "An accel path used to conveniently construct accel paths of child items" -#: ../gtk/gtkmenu.c:568 +#: ../gtk/gtkmenu.c:633 msgid "Attach Widget" msgstr "Attach Widget" -#: ../gtk/gtkmenu.c:569 +#: ../gtk/gtkmenu.c:634 msgid "The widget the menu is attached to" msgstr "The widget the menu is attached to" -#: ../gtk/gtkmenu.c:577 +#: ../gtk/gtkmenu.c:642 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" @@ -3419,35 +3699,35 @@ msgstr "" "A title that may be displayed by the window manager when this menu is torn-" "off" -#: ../gtk/gtkmenu.c:591 +#: ../gtk/gtkmenu.c:656 msgid "Tearoff State" msgstr "Tearoff State" -#: ../gtk/gtkmenu.c:592 +#: ../gtk/gtkmenu.c:657 msgid "A boolean that indicates whether the menu is torn-off" msgstr "A boolean that indicates whether the menu is torn-off" -#: ../gtk/gtkmenu.c:606 +#: ../gtk/gtkmenu.c:671 msgid "Monitor" msgstr "Monitor" -#: ../gtk/gtkmenu.c:607 +#: ../gtk/gtkmenu.c:672 msgid "The monitor the menu will be popped up on" msgstr "The monitor the menu will be popped up on" -#: ../gtk/gtkmenu.c:613 +#: ../gtk/gtkmenu.c:678 msgid "Vertical Padding" msgstr "Vertical Padding" -#: ../gtk/gtkmenu.c:614 +#: ../gtk/gtkmenu.c:679 msgid "Extra space at the top and bottom of the menu" msgstr "Extra space at the top and bottom of the menu" -#: ../gtk/gtkmenu.c:636 +#: ../gtk/gtkmenu.c:701 msgid "Reserve Toggle Size" msgstr "Reserve Toggle Size" -#: ../gtk/gtkmenu.c:637 +#: ../gtk/gtkmenu.c:702 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" @@ -3455,19 +3735,19 @@ msgstr "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" -#: ../gtk/gtkmenu.c:643 +#: ../gtk/gtkmenu.c:708 msgid "Horizontal Padding" msgstr "Horizontal Padding" -#: ../gtk/gtkmenu.c:644 +#: ../gtk/gtkmenu.c:709 msgid "Extra space at the left and right edges of the menu" msgstr "Extra space at the left and right edges of the menu" -#: ../gtk/gtkmenu.c:652 +#: ../gtk/gtkmenu.c:717 msgid "Vertical Offset" msgstr "Vertical Offset" -#: ../gtk/gtkmenu.c:653 +#: ../gtk/gtkmenu.c:718 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" @@ -3475,11 +3755,11 @@ msgstr "" "When the menu is a submenu, position it this number of pixels offset " "vertically" -#: ../gtk/gtkmenu.c:661 +#: ../gtk/gtkmenu.c:726 msgid "Horizontal Offset" msgstr "Horizontal Offset" -#: ../gtk/gtkmenu.c:662 +#: ../gtk/gtkmenu.c:727 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" @@ -3487,170 +3767,166 @@ msgstr "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" -#: ../gtk/gtkmenu.c:670 +#: ../gtk/gtkmenu.c:735 msgid "Double Arrows" msgstr "Double Arrows" -#: ../gtk/gtkmenu.c:671 +#: ../gtk/gtkmenu.c:736 msgid "When scrolling, always show both arrows." msgstr "When scrolling, always show both arrows." -#: ../gtk/gtkmenu.c:684 +#: ../gtk/gtkmenu.c:749 msgid "Arrow Placement" msgstr "Arrow Placement" -#: ../gtk/gtkmenu.c:685 +#: ../gtk/gtkmenu.c:750 msgid "Indicates where scroll arrows should be placed" msgstr "Indicates where scroll arrows should be placed" -#: ../gtk/gtkmenu.c:693 +#: ../gtk/gtkmenu.c:758 msgid "Left Attach" msgstr "Left Attach" -#: ../gtk/gtkmenu.c:694 ../gtk/gtktable.c:202 -msgid "The column number to attach the left side of the child to" -msgstr "The column number to attach the left side of the child to" - -#: ../gtk/gtkmenu.c:701 +#: ../gtk/gtkmenu.c:766 msgid "Right Attach" msgstr "Right Attach" -#: ../gtk/gtkmenu.c:702 +#: ../gtk/gtkmenu.c:767 msgid "The column number to attach the right side of the child to" msgstr "The column number to attach the right side of the child to" -#: ../gtk/gtkmenu.c:709 +#: ../gtk/gtkmenu.c:774 msgid "Top Attach" msgstr "Top Attach" -#: ../gtk/gtkmenu.c:710 +#: ../gtk/gtkmenu.c:775 msgid "The row number to attach the top of the child to" msgstr "The row number to attach the top of the child to" -#: ../gtk/gtkmenu.c:717 +#: ../gtk/gtkmenu.c:782 msgid "Bottom Attach" msgstr "Bottom Attach" -#: ../gtk/gtkmenu.c:718 ../gtk/gtktable.c:223 +#: ../gtk/gtkmenu.c:783 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "The row number to attach the bottom of the child to" -#: ../gtk/gtkmenu.c:732 +#: ../gtk/gtkmenu.c:797 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "Arbitrary constant to scale down the size of the scroll arrow" -#: ../gtk/gtkmenuitem.c:283 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Right Justified" -#: ../gtk/gtkmenuitem.c:284 +#: ../gtk/gtkmenuitem.c:282 msgid "" "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" "Sets whether the menu item appears justified at the right side of a menu bar" -#: ../gtk/gtkmenuitem.c:298 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Submenu" -#: ../gtk/gtkmenuitem.c:299 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "The submenu attached to the menu item, or NULL if it has none" -#: ../gtk/gtkmenuitem.c:317 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Sets the accelerator path of the menu item" -#: ../gtk/gtkmenuitem.c:332 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "The text for the child label" -#: ../gtk/gtkmenuitem.c:395 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "" "Amount of space used up by arrow, relative to the menu item's font size" -#: ../gtk/gtkmenuitem.c:408 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Width in Characters" -#: ../gtk/gtkmenuitem.c:409 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "The minimum desired width of the menu item in characters" -#: ../gtk/gtkmenushell.c:381 +#: ../gtk/gtkmenushell.c:420 msgid "Take Focus" msgstr "Take Focus" -#: ../gtk/gtkmenushell.c:382 +#: ../gtk/gtkmenushell.c:421 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "A boolean that determines whether the menu grabs the keyboard focus" -#: ../gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:257 msgid "Menu" msgstr "Menu" -#: ../gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:258 msgid "The dropdown menu" msgstr "The dropdown menu" -#: ../gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "Image/label border" -#: ../gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" msgstr "Width of border around the label and image in the message dialog" -#: ../gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "Message Buttons" -#: ../gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "The buttons shown in the message dialog" -#: ../gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "The primary text of the message dialog" -#: ../gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "Use Markup" -#: ../gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "The primary text of the title includes Pango markup." -#: ../gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "Secondary Text" -#: ../gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "The secondary text of the message dialog" -#: ../gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "Use Markup in secondary" -#: ../gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "The secondary text includes Pango markup." -#: ../gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "Image" -#: ../gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "The image" -#: ../gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" msgstr "Message area" -#: ../gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox that holds the dialog's primary and secondary labels" @@ -3702,51 +3978,51 @@ msgstr "Are we showing a dialog" msgid "The screen where this window will be displayed." msgstr "The screen where this window will be displayed." -#: ../gtk/gtknotebook.c:689 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "Page" -#: ../gtk/gtknotebook.c:690 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "The index of the current page" -#: ../gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "Tab Position" -#: ../gtk/gtknotebook.c:699 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "Which side of the notebook holds the tabs" -#: ../gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "Show Tabs" -#: ../gtk/gtknotebook.c:707 +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "Whether tabs should be shown" -#: ../gtk/gtknotebook.c:713 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "Show Border" -#: ../gtk/gtknotebook.c:714 +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "Whether the border should be shown" -#: ../gtk/gtknotebook.c:720 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "Scrollable" -#: ../gtk/gtknotebook.c:721 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "If TRUE, scroll arrows are added if there are too many tabs to fit" -#: ../gtk/gtknotebook.c:727 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "Enable Popup" -#: ../gtk/gtknotebook.c:728 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3754,128 +4030,164 @@ msgstr "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" -#: ../gtk/gtknotebook.c:742 +#: ../gtk/gtknotebook.c:738 msgid "Group Name" msgstr "Group Name" -#: ../gtk/gtknotebook.c:743 +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" msgstr "Group name for tab drag and drop" -#: ../gtk/gtknotebook.c:750 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "Tab label" -#: ../gtk/gtknotebook.c:751 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "The string displayed on the child's tab label" -#: ../gtk/gtknotebook.c:757 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "Menu label" -#: ../gtk/gtknotebook.c:758 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "The string displayed in the child's menu entry" -#: ../gtk/gtknotebook.c:771 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "Tab expand" -#: ../gtk/gtknotebook.c:772 +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "Whether to expand the child's tab" -#: ../gtk/gtknotebook.c:778 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "Tab fill" -#: ../gtk/gtknotebook.c:779 +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "Whether the child's tab should fill the allocated area" -#: ../gtk/gtknotebook.c:792 -msgid "Tab pack type" -msgstr "Tab pack type" - -#: ../gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "Tab reorderable" -#: ../gtk/gtknotebook.c:800 +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "Whether the tab is reorderable by user action" -#: ../gtk/gtknotebook.c:806 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "Tab detachable" -#: ../gtk/gtknotebook.c:807 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "Whether the tab is detachable" -#: ../gtk/gtknotebook.c:822 ../gtk/gtkscrollbar.c:105 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Secondary backward stepper" -#: ../gtk/gtknotebook.c:823 +#: ../gtk/gtknotebook.c:806 msgid "" "Display a second backward arrow button on the opposite end of the tab area" msgstr "" "Display a second backward arrow button on the opposite end of the tab area" -#: ../gtk/gtknotebook.c:838 ../gtk/gtkscrollbar.c:112 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Secondary forward stepper" -#: ../gtk/gtknotebook.c:839 +#: ../gtk/gtknotebook.c:822 msgid "" "Display a second forward arrow button on the opposite end of the tab area" msgstr "" "Display a second forward arrow button on the opposite end of the tab area" -#: ../gtk/gtknotebook.c:853 ../gtk/gtkscrollbar.c:91 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Backward stepper" -#: ../gtk/gtknotebook.c:854 ../gtk/gtkscrollbar.c:92 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Display the standard backward arrow button" -#: ../gtk/gtknotebook.c:868 ../gtk/gtkscrollbar.c:98 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Forward stepper" -#: ../gtk/gtknotebook.c:869 ../gtk/gtkscrollbar.c:99 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Display the standard forward arrow button" -#: ../gtk/gtknotebook.c:883 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "Tab overlap" -#: ../gtk/gtknotebook.c:884 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "Size of tab overlap area" -#: ../gtk/gtknotebook.c:899 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "Tab curvature" -#: ../gtk/gtknotebook.c:900 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "Size of tab curvature" -#: ../gtk/gtknotebook.c:916 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "Arrow spacing" -#: ../gtk/gtknotebook.c:917 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "Scroll arrow spacing" -#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:319 -#: ../gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtknumerableicon.c:652 +msgid "Icon's count" +msgstr "Icon's count" + +#: ../gtk/gtknumerableicon.c:653 +msgid "The count of the emblem currently displayed" +msgstr "The count of the emblem currently displayed" + +#: ../gtk/gtknumerableicon.c:659 +msgid "Icon's label" +msgstr "Icon's label" + +#: ../gtk/gtknumerableicon.c:660 +msgid "The label to be displayed over the icon" +msgstr "The label to be displayed over the icon" + +#: ../gtk/gtknumerableicon.c:666 +msgid "Icon's style context" +msgstr "Icon's style context" + +#: ../gtk/gtknumerableicon.c:667 +msgid "The style context to theme the icon appearance" +msgstr "The style context to theme the icon appearance" + +#: ../gtk/gtknumerableicon.c:673 +msgid "Background icon" +msgstr "Background icon" + +#: ../gtk/gtknumerableicon.c:674 +msgid "The icon for the number emblem background" +msgstr "The icon for the number emblem background" + +#: ../gtk/gtknumerableicon.c:680 +msgid "Background icon name" +msgstr "Background icon name" + +#: ../gtk/gtknumerableicon.c:681 +msgid "The icon name for the number emblem background" +msgstr "The icon name for the number emblem background" + +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "Orientation" @@ -3883,73 +4195,73 @@ msgstr "Orientation" msgid "The orientation of the orientable" msgstr "The orientation of the orientable" -#: ../gtk/gtkpaned.c:328 +#: ../gtk/gtkpaned.c:327 msgid "" "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "" "Position of paned separator in pixels (0 means all the way to the left/top)" -#: ../gtk/gtkpaned.c:337 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "Position Set" -#: ../gtk/gtkpaned.c:338 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "TRUE if the Position property should be used" -#: ../gtk/gtkpaned.c:344 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "Handle Size" -#: ../gtk/gtkpaned.c:345 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "Width of handle" -#: ../gtk/gtkpaned.c:361 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "Minimal Position" -#: ../gtk/gtkpaned.c:362 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "Smallest possible value for the \"position\" property" -#: ../gtk/gtkpaned.c:379 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "Maximal Position" -#: ../gtk/gtkpaned.c:380 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "Largest possible value for the \"position\" property" -#: ../gtk/gtkpaned.c:397 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "Resize" -#: ../gtk/gtkpaned.c:398 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "If TRUE, the child expands and shrinks along with the paned widget" -#: ../gtk/gtkpaned.c:413 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "Shrink" -#: ../gtk/gtkpaned.c:414 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "If TRUE, the child can be made smaller than its requisition" -#: ../gtk/gtkplug.c:172 ../gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "Embedded" -#: ../gtk/gtkplug.c:173 +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "Whether the plug is embedded" -#: ../gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "Socket Window" -#: ../gtk/gtkplug.c:188 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "The window of the socket the plug is embedded in" @@ -4041,36 +4353,36 @@ msgstr "Source option" msgid "The PrinterOption backing this widget" msgstr "The PrinterOption backing this widget" -#: ../gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:142 msgid "Title of the print job" msgstr "Title of the print job" -#: ../gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:150 msgid "Printer" msgstr "Printer" -#: ../gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:151 msgid "Printer to print the job to" msgstr "Printer to print the job to" -#: ../gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:159 msgid "Settings" msgstr "Settings" -#: ../gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:160 msgid "Printer settings" msgstr "Printer settings" -#: ../gtk/gtkprintjob.c:142 ../gtk/gtkprintjob.c:143 +#: ../gtk/gtkprintjob.c:168 ../gtk/gtkprintjob.c:169 #: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Page Setup" -#: ../gtk/gtkprintjob.c:151 ../gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:177 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "Track Print Status" -#: ../gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:178 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." @@ -4078,51 +4390,51 @@ msgstr "" "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." -#: ../gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "Default Page Setup" -#: ../gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "The GtkPageSetup used by default" -#: ../gtk/gtkprintoperation.c:1024 ../gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Print Settings" -#: ../gtk/gtkprintoperation.c:1025 ../gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "The GtkPrintSettings used for initializing the dialog" -#: ../gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "Job Name" -#: ../gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "A string used for identifying the print job." -#: ../gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "Number of Pages" -#: ../gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "The number of pages in the document." -#: ../gtk/gtkprintoperation.c:1090 ../gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Current Page" -#: ../gtk/gtkprintoperation.c:1091 ../gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "The current page in the document" -#: ../gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "Use full page" -#: ../gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" @@ -4130,7 +4442,7 @@ msgstr "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" -#: ../gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4138,87 +4450,87 @@ msgstr "" "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." -#: ../gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "Unit" -#: ../gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "The unit in which distances can be measured in the context" -#: ../gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "Show Dialog" -#: ../gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "TRUE if a progress dialog is shown while printing." -#: ../gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "Allow Async" -#: ../gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "TRUE if print process may run asynchronous." -#: ../gtk/gtkprintoperation.c:1216 ../gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "Export filename" -#: ../gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "Status" -#: ../gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "The status of the print operation" -#: ../gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "Status String" -#: ../gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "A human-readable description of the status" -#: ../gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "Custom tab label" -#: ../gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "Label for the tab containing custom widgets." -#: ../gtk/gtkprintoperation.c:1287 ../gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:341 msgid "Support Selection" msgstr "Support Selection" -#: ../gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." msgstr "TRUE if the print operation will support print of selection." -#: ../gtk/gtkprintoperation.c:1304 ../gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Has Selection" -#: ../gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "TRUE if a selection exists." -#: ../gtk/gtkprintoperation.c:1320 ../gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:357 msgid "Embed Page Setup" msgstr "Embed Page Setup" -#: ../gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "TRUE if page setup combos are embedded in GtkPrintDialog" -#: ../gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "Number of Pages To Print" -#: ../gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "The number of pages that will be printed." @@ -4274,15 +4586,15 @@ msgstr "The fraction of total progress to move the bouncing block when pulsed" msgid "Text to be displayed in the progress bar" msgstr "Text to be displayed in the progress bar" -#: ../gtk/gtkprogressbar.c:185 +#: ../gtk/gtkprogressbar.c:195 msgid "Show text" msgstr "Show text" -#: ../gtk/gtkprogressbar.c:186 +#: ../gtk/gtkprogressbar.c:196 msgid "Whether the progress is shown as text." msgstr "Whether the progress is shown as text." -#: ../gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:218 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." @@ -4290,51 +4602,51 @@ msgstr "" "The preferred place to ellipsize the string, if the progress bar does not " "have enough room to display the entire string, if at all." -#: ../gtk/gtkprogressbar.c:215 +#: ../gtk/gtkprogressbar.c:225 msgid "X spacing" msgstr "X spacing" -#: ../gtk/gtkprogressbar.c:216 +#: ../gtk/gtkprogressbar.c:226 msgid "Extra spacing applied to the width of a progress bar." msgstr "Extra spacing applied to the width of a progress bar." -#: ../gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:231 msgid "Y spacing" msgstr "Y spacing" -#: ../gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:232 msgid "Extra spacing applied to the height of a progress bar." msgstr "Extra spacing applied to the height of a progress bar." -#: ../gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:245 msgid "Minimum horizontal bar width" msgstr "Minimum horizontal bar width" -#: ../gtk/gtkprogressbar.c:236 +#: ../gtk/gtkprogressbar.c:246 msgid "The minimum horizontal width of the progress bar" msgstr "The minimum horizontal width of the progress bar" -#: ../gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:258 msgid "Minimum horizontal bar height" msgstr "Minimum horizontal bar height" -#: ../gtk/gtkprogressbar.c:249 +#: ../gtk/gtkprogressbar.c:259 msgid "Minimum horizontal height of the progress bar" msgstr "Minimum horizontal height of the progress bar" -#: ../gtk/gtkprogressbar.c:261 +#: ../gtk/gtkprogressbar.c:271 msgid "Minimum vertical bar width" msgstr "Minimum vertical bar width" -#: ../gtk/gtkprogressbar.c:262 +#: ../gtk/gtkprogressbar.c:272 msgid "The minimum vertical width of the progress bar" msgstr "The minimum vertical width of the progress bar" -#: ../gtk/gtkprogressbar.c:274 +#: ../gtk/gtkprogressbar.c:284 msgid "Minimum vertical bar height" msgstr "Minimum vertical bar height" -#: ../gtk/gtkprogressbar.c:275 +#: ../gtk/gtkprogressbar.c:285 msgid "The minimum vertical height of the progress bar" msgstr "The minimum vertical height of the progress bar" @@ -4383,27 +4695,19 @@ msgstr "The radio menu item whose group this widget belongs to." msgid "The radio tool button whose group this button belongs to." msgstr "The radio tool button whose group this button belongs to." -#: ../gtk/gtkrange.c:423 -msgid "Update policy" -msgstr "Update policy" - -#: ../gtk/gtkrange.c:424 -msgid "How the range should be updated on the screen" -msgstr "How the range should be updated on the screen" - -#: ../gtk/gtkrange.c:433 +#: ../gtk/gtkrange.c:417 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "The GtkAdjustment that contains the current value of this range object" -#: ../gtk/gtkrange.c:441 +#: ../gtk/gtkrange.c:425 msgid "Invert direction slider moves to increase range value" msgstr "Invert direction slider moves to increase range value" -#: ../gtk/gtkrange.c:448 +#: ../gtk/gtkrange.c:432 msgid "Lower stepper sensitivity" msgstr "Lower stepper sensitivity" -#: ../gtk/gtkrange.c:449 +#: ../gtk/gtkrange.c:433 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" @@ -4411,11 +4715,11 @@ msgstr "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" -#: ../gtk/gtkrange.c:457 +#: ../gtk/gtkrange.c:441 msgid "Upper stepper sensitivity" msgstr "Upper stepper sensitivity" -#: ../gtk/gtkrange.c:458 +#: ../gtk/gtkrange.c:442 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" @@ -4423,87 +4727,95 @@ msgstr "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" -#: ../gtk/gtkrange.c:475 +#: ../gtk/gtkrange.c:459 msgid "Show Fill Level" msgstr "Show Fill Level" -#: ../gtk/gtkrange.c:476 +#: ../gtk/gtkrange.c:460 msgid "Whether to display a fill level indicator graphics on trough." msgstr "Whether to display a fill level indicator graphics on trough." -#: ../gtk/gtkrange.c:492 +#: ../gtk/gtkrange.c:476 msgid "Restrict to Fill Level" msgstr "Restrict to Fill Level" -#: ../gtk/gtkrange.c:493 +#: ../gtk/gtkrange.c:477 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Whether to restrict the upper boundary to the fill level." -#: ../gtk/gtkrange.c:508 +#: ../gtk/gtkrange.c:492 msgid "Fill Level" msgstr "Fill Level" -#: ../gtk/gtkrange.c:509 +#: ../gtk/gtkrange.c:493 msgid "The fill level." msgstr "The fill level." -#: ../gtk/gtkrange.c:517 ../gtk/gtkswitch.c:772 +#: ../gtk/gtkrange.c:510 +msgid "Round Digits" +msgstr "Round Digits" + +#: ../gtk/gtkrange.c:511 +msgid "The number of digits to round the value to." +msgstr "The number of digits to round the value to." + +#: ../gtk/gtkrange.c:519 ../gtk/gtkswitch.c:786 msgid "Slider Width" msgstr "Slider Width" -#: ../gtk/gtkrange.c:518 +#: ../gtk/gtkrange.c:520 msgid "Width of scrollbar or scale thumb" msgstr "Width of scrollbar or scale thumb" -#: ../gtk/gtkrange.c:525 +#: ../gtk/gtkrange.c:527 msgid "Trough Border" msgstr "Trough Border" -#: ../gtk/gtkrange.c:526 +#: ../gtk/gtkrange.c:528 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "Spacing between thumb/steppers and outer trough bevel" -#: ../gtk/gtkrange.c:533 +#: ../gtk/gtkrange.c:535 msgid "Stepper Size" msgstr "Stepper Size" -#: ../gtk/gtkrange.c:534 +#: ../gtk/gtkrange.c:536 msgid "Length of step buttons at ends" msgstr "Length of step buttons at ends" -#: ../gtk/gtkrange.c:549 +#: ../gtk/gtkrange.c:551 msgid "Stepper Spacing" msgstr "Stepper Spacing" -#: ../gtk/gtkrange.c:550 +#: ../gtk/gtkrange.c:552 msgid "Spacing between step buttons and thumb" msgstr "Spacing between step buttons and thumb" -#: ../gtk/gtkrange.c:557 +#: ../gtk/gtkrange.c:559 msgid "Arrow X Displacement" msgstr "Arrow X Displacement" -#: ../gtk/gtkrange.c:558 +#: ../gtk/gtkrange.c:560 msgid "" "How far in the x direction to move the arrow when the button is depressed" msgstr "" "How far in the x direction to move the arrow when the button is depressed" -#: ../gtk/gtkrange.c:565 +#: ../gtk/gtkrange.c:567 msgid "Arrow Y Displacement" msgstr "Arrow Y Displacement" -#: ../gtk/gtkrange.c:566 +#: ../gtk/gtkrange.c:568 msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "" "How far in the y direction to move the arrow when the button is depressed" -#: ../gtk/gtkrange.c:584 +#: ../gtk/gtkrange.c:586 msgid "Trough Under Steppers" msgstr "Trough Under Steppers" -#: ../gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:587 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" @@ -4511,11 +4823,11 @@ msgstr "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" -#: ../gtk/gtkrange.c:598 +#: ../gtk/gtkrange.c:600 msgid "Arrow scaling" msgstr "Arrow scaling" -#: ../gtk/gtkrange.c:599 +#: ../gtk/gtkrange.c:601 msgid "Arrow scaling with regard to scroll button size" msgstr "Arrow scaling with regard to scroll button size" @@ -4608,129 +4920,165 @@ msgstr "The full path to the file to be used to store and read the list" msgid "The size of the recently used resources list" msgstr "The size of the recently used resources list" -#: ../gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "The value of the scale" -#: ../gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "The icon size" -#: ../gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:237 msgid "" "The GtkAdjustment that contains the current value of this scale button object" msgstr "" "The GtkAdjustment that contains the current value of this scale button object" -#: ../gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "Icons" -#: ../gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "List of icon names" -#: ../gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "The number of decimal places that are displayed in the value" -#: ../gtk/gtkscale.c:264 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Draw Value" -#: ../gtk/gtkscale.c:265 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "Whether the current value is displayed as a string next to the slider" -#: ../gtk/gtkscale.c:272 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Value Position" -#: ../gtk/gtkscale.c:273 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "The position in which the current value is displayed" -#: ../gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Slider Length" -#: ../gtk/gtkscale.c:281 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Length of scale's slider" -#: ../gtk/gtkscale.c:289 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Value spacing" -#: ../gtk/gtkscale.c:290 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "Space between value text and the slider/trough area" -#: ../gtk/gtkscrollbar.c:75 +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "Horizontal adjustment" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "Vertical adjustment" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" + +#: ../gtk/gtkscrollable.c:120 +msgid "Horizontal Scrollable Policy" +msgstr "Horizontal Scrollable Policy" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "How the size of the content should be determined" + +#: ../gtk/gtkscrollable.c:136 +msgid "Vertical Scrollable Policy" +msgstr "Vertical Scrollable Policy" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Minimum Slider Length" -#: ../gtk/gtkscrollbar.c:76 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Minimum length of scrollbar slider" -#: ../gtk/gtkscrollbar.c:84 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Fixed slider size" -#: ../gtk/gtkscrollbar.c:85 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "Don't change slider size, just lock it to the minimum length" -#: ../gtk/gtkscrollbar.c:106 +#: ../gtk/gtkscrollbar.c:103 msgid "" "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "" "Display a second backward arrow button on the opposite end of the scrollbar" -#: ../gtk/gtkscrollbar.c:113 +#: ../gtk/gtkscrollbar.c:110 msgid "" "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "" "Display a second forward arrow button on the opposite end of the scrollbar" -#: ../gtk/gtkscrolledwindow.c:295 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "Horizontal Adjustment" -#: ../gtk/gtkscrolledwindow.c:296 +#: ../gtk/gtkscrolledwindow.c:297 msgid "The GtkAdjustment for the horizontal position" msgstr "The GtkAdjustment for the horizontal position" -#: ../gtk/gtkscrolledwindow.c:302 +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "Vertical Adjustment" -#: ../gtk/gtkscrolledwindow.c:303 +#: ../gtk/gtkscrolledwindow.c:304 msgid "The GtkAdjustment for the vertical position" msgstr "The GtkAdjustment for the vertical position" -#: ../gtk/gtkscrolledwindow.c:309 +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "Horizontal Scrollbar Policy" -#: ../gtk/gtkscrolledwindow.c:310 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "When the horizontal scrollbar is displayed" -#: ../gtk/gtkscrolledwindow.c:317 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "Vertical Scrollbar Policy" -#: ../gtk/gtkscrolledwindow.c:318 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "When the vertical scrollbar is displayed" -#: ../gtk/gtkscrolledwindow.c:326 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "Window Placement" -#: ../gtk/gtkscrolledwindow.c:327 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -4738,11 +5086,11 @@ msgstr "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." -#: ../gtk/gtkscrolledwindow.c:344 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "Window Placement Set" -#: ../gtk/gtkscrolledwindow.c:345 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -4750,44 +5098,44 @@ msgstr "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." -#: ../gtk/gtkscrolledwindow.c:351 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "Shadow Type" -#: ../gtk/gtkscrolledwindow.c:352 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "Style of bevel around the contents" -#: ../gtk/gtkscrolledwindow.c:366 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "Scrollbars within bevel" -#: ../gtk/gtkscrolledwindow.c:367 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "Place scrollbars within the scrolled window's bevel" -#: ../gtk/gtkscrolledwindow.c:373 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "Scrollbar spacing" -#: ../gtk/gtkscrolledwindow.c:374 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Number of pixels between the scrollbars and the scrolled window" -#: ../gtk/gtkscrolledwindow.c:383 +#: ../gtk/gtkscrolledwindow.c:391 msgid "Minimum Content Width" msgstr "Minimum Content Width" -#: ../gtk/gtkscrolledwindow.c:384 +#: ../gtk/gtkscrolledwindow.c:392 msgid "The minimum width that the scrolled window will allocate to its content" msgstr "" "The minimum width that the scrolled window will allocate to its content" -#: ../gtk/gtkscrolledwindow.c:390 +#: ../gtk/gtkscrolledwindow.c:406 msgid "Minimum Content Height" msgstr "Minimum Content Height" -#: ../gtk/gtkscrolledwindow.c:391 +#: ../gtk/gtkscrolledwindow.c:407 msgid "" "The minimum height that the scrolled window will allocate to its content" msgstr "" @@ -4801,11 +5149,11 @@ msgstr "Draw" msgid "Whether the separator is drawn, or just blank" msgstr "Whether the separator is drawn, or just blank" -#: ../gtk/gtksettings.c:277 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Double Click Time" -#: ../gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4813,11 +5161,11 @@ msgstr "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" -#: ../gtk/gtksettings.c:285 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Double Click Distance" -#: ../gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -4825,35 +5173,35 @@ msgstr "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" -#: ../gtk/gtksettings.c:302 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Cursor Blink" -#: ../gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Whether the cursor should blink" -#: ../gtk/gtksettings.c:310 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Cursor Blink Time" -#: ../gtk/gtksettings.c:311 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Length of the cursor blink cycle, in milliseconds" -#: ../gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Cursor Blink Timeout" -#: ../gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "Time after which the cursor stops blinking, in seconds" -#: ../gtk/gtksettings.c:338 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Split Cursor" -#: ../gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -4861,149 +5209,149 @@ msgstr "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" -#: ../gtk/gtksettings.c:346 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Theme Name" -#: ../gtk/gtksettings.c:347 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Name of theme RC file to load" -#: ../gtk/gtksettings.c:355 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Icon Theme Name" -#: ../gtk/gtksettings.c:356 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Name of icon theme to use" -#: ../gtk/gtksettings.c:364 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Fallback Icon Theme Name" -#: ../gtk/gtksettings.c:365 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Name of a icon theme to fall back to" -#: ../gtk/gtksettings.c:373 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Key Theme Name" -#: ../gtk/gtksettings.c:374 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Name of key theme RC file to load" -#: ../gtk/gtksettings.c:382 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Menu bar accelerator" -#: ../gtk/gtksettings.c:383 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Keybinding to activate the menu bar" -#: ../gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Drag threshold" -#: ../gtk/gtksettings.c:392 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Number of pixels the cursor can move before dragging" -#: ../gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Font Name" -#: ../gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Name of default font to use" -#: ../gtk/gtksettings.c:423 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Icon Sizes" -#: ../gtk/gtksettings.c:424 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." -#: ../gtk/gtksettings.c:432 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK Modules" -#: ../gtk/gtksettings.c:433 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "List of currently active GTK modules" -#: ../gtk/gtksettings.c:442 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft Antialias" -#: ../gtk/gtksettings.c:443 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" -#: ../gtk/gtksettings.c:452 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft Hinting" -#: ../gtk/gtksettings.c:453 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" -#: ../gtk/gtksettings.c:462 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft Hint Style" -#: ../gtk/gtksettings.c:463 +#: ../gtk/gtksettings.c:485 msgid "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" -#: ../gtk/gtksettings.c:472 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: ../gtk/gtksettings.c:473 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" -#: ../gtk/gtksettings.c:482 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft DPI" -#: ../gtk/gtksettings.c:483 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" -#: ../gtk/gtksettings.c:492 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Cursor theme name" -#: ../gtk/gtksettings.c:493 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "Name of the cursor theme to use, or NULL to use the default theme" -#: ../gtk/gtksettings.c:501 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Cursor theme size" -#: ../gtk/gtksettings.c:502 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "Size to use for cursors, or 0 to use the default size" -#: ../gtk/gtksettings.c:512 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Alternative button order" -#: ../gtk/gtksettings.c:513 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "Whether buttons in dialogs should use the alternative button order" -#: ../gtk/gtksettings.c:530 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Alternative sort indicator direction" -#: ../gtk/gtksettings.c:531 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -5011,11 +5359,11 @@ msgstr "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" -#: ../gtk/gtksettings.c:539 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Show the 'Input Methods' menu" -#: ../gtk/gtksettings.c:540 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" @@ -5023,11 +5371,11 @@ msgstr "" "Whether the context menus of entries and text views should offer to change " "the input method" -#: ../gtk/gtksettings.c:548 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Show the 'Insert Unicode Control Character' menu" -#: ../gtk/gtksettings.c:549 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" @@ -5035,238 +5383,238 @@ msgstr "" "Whether the context menus of entries and text views should offer to insert " "control characters" -#: ../gtk/gtksettings.c:557 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Start timeout" -#: ../gtk/gtksettings.c:558 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Starting value for timeouts, when button is pressed" -#: ../gtk/gtksettings.c:567 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Repeat timeout" -#: ../gtk/gtksettings.c:568 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Repeat value for timeouts, when button is pressed" -#: ../gtk/gtksettings.c:577 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Expand timeout" -#: ../gtk/gtksettings.c:578 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "Expand value for timeouts, when a widget is expanding a new region" -#: ../gtk/gtksettings.c:613 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Color scheme" -#: ../gtk/gtksettings.c:614 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "A palette of named colors for use in themes" -#: ../gtk/gtksettings.c:623 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Enable Animations" -#: ../gtk/gtksettings.c:624 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Whether to enable toolkit-wide animations." -#: ../gtk/gtksettings.c:642 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Enable Touchscreen Mode" -#: ../gtk/gtksettings.c:643 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "When TRUE, there are no motion notify events delivered on this screen" -#: ../gtk/gtksettings.c:660 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tooltip timeout" -#: ../gtk/gtksettings.c:661 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Timeout before tooltip is shown" -#: ../gtk/gtksettings.c:686 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Tooltip browse timeout" -#: ../gtk/gtksettings.c:687 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "Timeout before tooltip is shown when browse mode is enabled" -#: ../gtk/gtksettings.c:708 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Tooltip browse mode timeout" -#: ../gtk/gtksettings.c:709 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "Timeout after which browse mode is disabled" -#: ../gtk/gtksettings.c:728 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Keynav Cursor Only" -#: ../gtk/gtksettings.c:729 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "When TRUE, there are only cursor keys available to navigate widgets" -#: ../gtk/gtksettings.c:746 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Keynav Wrap Around" -#: ../gtk/gtksettings.c:747 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "Whether to wrap around when keyboard-navigating widgets" -#: ../gtk/gtksettings.c:767 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Error Bell" -#: ../gtk/gtksettings.c:768 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "When TRUE, keyboard navigation and other errors will cause a beep" -#: ../gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Color Hash" -#: ../gtk/gtksettings.c:786 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "A hash table representation of the color scheme." -#: ../gtk/gtksettings.c:794 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Default file chooser backend" -#: ../gtk/gtksettings.c:795 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Name of the GtkFileChooser backend to use by default" -#: ../gtk/gtksettings.c:812 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Default print backend" -#: ../gtk/gtksettings.c:813 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "List of the GtkPrintBackend backends to use by default" -#: ../gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "Default command to run when displaying a print preview" -#: ../gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Command to run when displaying a print preview" -#: ../gtk/gtksettings.c:853 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Enable Mnemonics" -#: ../gtk/gtksettings.c:854 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Whether labels should have mnemonics" -#: ../gtk/gtksettings.c:870 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Enable Accelerators" -#: ../gtk/gtksettings.c:871 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Whether menu items should have accelerators" -#: ../gtk/gtksettings.c:888 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Recent Files Limit" -#: ../gtk/gtksettings.c:889 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Number of recently used files" -#: ../gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Default IM module" -#: ../gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "Which IM module should be used by default" -#: ../gtk/gtksettings.c:926 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Recent Files Max Age" -#: ../gtk/gtksettings.c:927 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "Maximum age of recently used files, in days" -#: ../gtk/gtksettings.c:936 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Fontconfig configuration timestamp" -#: ../gtk/gtksettings.c:937 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "Timestamp of current fontconfig configuration" -#: ../gtk/gtksettings.c:959 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Sound Theme Name" -#: ../gtk/gtksettings.c:960 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "XDG sound theme name" #. Translators: this means sounds that are played as feedback to user input -#: ../gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Audible Input Feedback" -#: ../gtk/gtksettings.c:983 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "Whether to play event sounds as feedback to user input" -#: ../gtk/gtksettings.c:1004 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Enable Event Sounds" -#: ../gtk/gtksettings.c:1005 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Whether to play any event sounds at all" -#: ../gtk/gtksettings.c:1020 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Enable Tooltips" -#: ../gtk/gtksettings.c:1021 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Whether tooltips should be shown on widgets" -#: ../gtk/gtksettings.c:1034 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Toolbar style" -#: ../gtk/gtksettings.c:1035 +#: ../gtk/gtksettings.c:1057 msgid "" "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "" "Whether default toolbars have text only, text and icons, icons only, etc." -#: ../gtk/gtksettings.c:1049 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Toolbar Icon Size" -#: ../gtk/gtksettings.c:1050 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "The size of icons in default toolbars." -#: ../gtk/gtksettings.c:1067 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Auto Mnemonics" -#: ../gtk/gtksettings.c:1068 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." @@ -5274,59 +5622,59 @@ msgstr "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." -#: ../gtk/gtksettings.c:1093 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "Application prefers a dark theme" -#: ../gtk/gtksettings.c:1094 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "Whether the application prefers to have a dark theme." -#: ../gtk/gtksettings.c:1109 +#: ../gtk/gtksettings.c:1131 msgid "Show button images" msgstr "Show button images" -#: ../gtk/gtksettings.c:1110 +#: ../gtk/gtksettings.c:1132 msgid "Whether images should be shown on buttons" msgstr "Whether images should be shown on buttons" -#: ../gtk/gtksettings.c:1118 ../gtk/gtksettings.c:1212 +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 msgid "Select on focus" msgstr "Select on focus" -#: ../gtk/gtksettings.c:1119 +#: ../gtk/gtksettings.c:1141 msgid "Whether to select the contents of an entry when it is focused" msgstr "Whether to select the contents of an entry when it is focused" -#: ../gtk/gtksettings.c:1136 +#: ../gtk/gtksettings.c:1158 msgid "Password Hint Timeout" msgstr "Password Hint Timeout" -#: ../gtk/gtksettings.c:1137 +#: ../gtk/gtksettings.c:1159 msgid "How long to show the last input character in hidden entries" msgstr "How long to show the last input character in hidden entries" -#: ../gtk/gtksettings.c:1146 +#: ../gtk/gtksettings.c:1168 msgid "Show menu images" msgstr "Show menu images" -#: ../gtk/gtksettings.c:1147 +#: ../gtk/gtksettings.c:1169 msgid "Whether images should be shown in menus" msgstr "Whether images should be shown in menus" -#: ../gtk/gtksettings.c:1155 +#: ../gtk/gtksettings.c:1177 msgid "Delay before drop down menus appear" msgstr "Delay before drop down menus appear" -#: ../gtk/gtksettings.c:1156 +#: ../gtk/gtksettings.c:1178 msgid "Delay before the submenus of a menu bar appear" msgstr "Delay before the submenus of a menu bar appear" -#: ../gtk/gtksettings.c:1173 +#: ../gtk/gtksettings.c:1195 msgid "Scrolled Window Placement" msgstr "Scrolled Window Placement" -#: ../gtk/gtksettings.c:1174 +#: ../gtk/gtksettings.c:1196 msgid "" "Where the contents of scrolled windows are located with respect to the " "scrollbars, if not overridden by the scrolled window's own placement." @@ -5334,31 +5682,31 @@ msgstr "" "Where the contents of scrolled windows are located with respect to the " "scrollbars, if not overridden by the scrolled window's own placement." -#: ../gtk/gtksettings.c:1183 +#: ../gtk/gtksettings.c:1205 msgid "Can change accelerators" msgstr "Can change accelerators" -#: ../gtk/gtksettings.c:1184 +#: ../gtk/gtksettings.c:1206 msgid "" "Whether menu accelerators can be changed by pressing a key over the menu item" msgstr "" "Whether menu accelerators can be changed by pressing a key over the menu item" -#: ../gtk/gtksettings.c:1192 +#: ../gtk/gtksettings.c:1214 msgid "Delay before submenus appear" msgstr "Delay before submenus appear" -#: ../gtk/gtksettings.c:1193 +#: ../gtk/gtksettings.c:1215 msgid "" "Minimum time the pointer must stay over a menu item before the submenu appear" msgstr "" "Minimum time the pointer must stay over a menu item before the submenu appear" -#: ../gtk/gtksettings.c:1202 +#: ../gtk/gtksettings.c:1224 msgid "Delay before hiding a submenu" msgstr "Delay before hiding a submenu" -#: ../gtk/gtksettings.c:1203 +#: ../gtk/gtksettings.c:1225 msgid "" "The time before hiding a submenu when the pointer is moving towards the " "submenu" @@ -5366,40 +5714,40 @@ msgstr "" "The time before hiding a submenu when the pointer is moving towards the " "submenu" -#: ../gtk/gtksettings.c:1213 +#: ../gtk/gtksettings.c:1235 msgid "Whether to select the contents of a selectable label when it is focused" msgstr "" "Whether to select the contents of a selectable label when it is focused" -#: ../gtk/gtksettings.c:1221 +#: ../gtk/gtksettings.c:1243 msgid "Custom palette" msgstr "Custom palette" -#: ../gtk/gtksettings.c:1222 +#: ../gtk/gtksettings.c:1244 msgid "Palette to use in the color selector" msgstr "Palette to use in the color selector" -#: ../gtk/gtksettings.c:1230 +#: ../gtk/gtksettings.c:1252 msgid "IM Preedit style" msgstr "IM Preedit style" -#: ../gtk/gtksettings.c:1231 +#: ../gtk/gtksettings.c:1253 msgid "How to draw the input method preedit string" msgstr "How to draw the input method preedit string" -#: ../gtk/gtksettings.c:1240 +#: ../gtk/gtksettings.c:1262 msgid "IM Status style" msgstr "IM Status style" -#: ../gtk/gtksettings.c:1241 +#: ../gtk/gtksettings.c:1263 msgid "How to draw the input method statusbar" msgstr "How to draw the input method statusbar" -#: ../gtk/gtksizegroup.c:350 +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "Mode" -#: ../gtk/gtksizegroup.c:351 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" @@ -5407,25 +5755,25 @@ msgstr "" "The directions in which the size group affects the requested sizes of its " "component widgets" -#: ../gtk/gtksizegroup.c:367 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "Ignore hidden" -#: ../gtk/gtksizegroup.c:368 +#: ../gtk/gtksizegroup.c:369 msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "" "If TRUE, unmapped widgets are ignored when determining the size of the group" -#: ../gtk/gtkspinbutton.c:238 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "Climb Rate" -#: ../gtk/gtkspinbutton.c:258 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "Snap to Ticks" -#: ../gtk/gtkspinbutton.c:259 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" @@ -5433,125 +5781,121 @@ msgstr "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" -#: ../gtk/gtkspinbutton.c:266 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "Numeric" -#: ../gtk/gtkspinbutton.c:267 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" msgstr "Whether non-numeric characters should be ignored" -#: ../gtk/gtkspinbutton.c:274 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "Wrap" -#: ../gtk/gtkspinbutton.c:275 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "Whether a spin button should wrap upon reaching its limits" -#: ../gtk/gtkspinbutton.c:282 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "Update Policy" -#: ../gtk/gtkspinbutton.c:283 +#: ../gtk/gtkspinbutton.c:373 msgid "" "Whether the spin button should update always, or only when the value is legal" msgstr "" "Whether the spin button should update always, or only when the value is legal" -#: ../gtk/gtkspinbutton.c:292 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "Reads the current value, or sets a new value" -#: ../gtk/gtkspinbutton.c:301 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "Style of bevel around the spin button" -#: ../gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Whether the spinner is active" -#: ../gtk/gtkspinner.c:146 -msgid "Number of steps" -msgstr "Number of steps" - -#: ../gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." - -#: ../gtk/gtkspinner.c:162 -msgid "Animation duration" -msgstr "Animation duration" - -#: ../gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "" -"The length of time in milliseconds for the spinner to complete a full loop" - -#: ../gtk/gtkstatusbar.c:181 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "Style of bevel around the statusbar text" -#: ../gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "The size of the icon" -#: ../gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "The screen where this status icon will be displayed" -#: ../gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "Whether the status icon is visible" -#: ../gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "Whether the status icon is embedded" -#: ../gtk/gtkstatusicon.c:320 ../gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "The orientation of the tray" -#: ../gtk/gtkstatusicon.c:347 ../gtk/gtkwidget.c:1022 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1042 msgid "Has tooltip" msgstr "Has tooltip" -#: ../gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "Whether this tray icon has a tooltip" -#: ../gtk/gtkstatusicon.c:373 ../gtk/gtkwidget.c:1043 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1063 msgid "Tooltip Text" msgstr "Tooltip Text" -#: ../gtk/gtkstatusicon.c:374 ../gtk/gtkwidget.c:1044 ../gtk/gtkwidget.c:1065 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1064 ../gtk/gtkwidget.c:1085 msgid "The contents of the tooltip for this widget" msgstr "The contents of the tooltip for this widget" -#: ../gtk/gtkstatusicon.c:397 ../gtk/gtkwidget.c:1064 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1084 msgid "Tooltip markup" msgstr "Tooltip markup" -#: ../gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "The contents of the tooltip for this tray icon" -#: ../gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "The title of this tray icon" -#: ../gtk/gtkswitch.c:739 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "Style context" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "GtkStyleContext to get style from" + +#: ../gtk/gtkstylecontext.c:547 +msgid "The associated GdkScreen" +msgstr "The associated GdkScreen" + +#: ../gtk/gtkstylecontext.c:553 +msgid "Direction" +msgstr "Direction" + +#: ../gtk/gtkstylecontext.c:554 ../gtk/gtktexttag.c:236 +msgid "Text direction" +msgstr "Text direction" + +#: ../gtk/gtkswitch.c:753 msgid "Whether the switch is on or off" msgstr "Whether the switch is on or off" -#: ../gtk/gtkswitch.c:773 +#: ../gtk/gtkswitch.c:787 msgid "The minimum width of the handle" msgstr "The minimum width of the handle" @@ -5571,30 +5915,10 @@ msgstr "Columns" msgid "The number of columns in the table" msgstr "The number of columns in the table" -#: ../gtk/gtktable.c:175 -msgid "Row spacing" -msgstr "Row spacing" - -#: ../gtk/gtktable.c:176 -msgid "The amount of space between two consecutive rows" -msgstr "The amount of space between two consecutive rows" - -#: ../gtk/gtktable.c:184 -msgid "Column spacing" -msgstr "Column spacing" - -#: ../gtk/gtktable.c:185 -msgid "The amount of space between two consecutive columns" -msgstr "The amount of space between two consecutive columns" - #: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "If TRUE, the table cells are all the same width/height" -#: ../gtk/gtktable.c:201 -msgid "Left attachment" -msgstr "Left attachment" - #: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Right attachment" @@ -5603,10 +5927,6 @@ msgstr "Right attachment" msgid "The column number to attach the right side of a child widget to" msgstr "The column number to attach the right side of a child widget to" -#: ../gtk/gtktable.c:215 -msgid "Top attachment" -msgstr "Top attachment" - #: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "The row number to attach the top of a child widget to" @@ -5655,51 +5975,51 @@ msgstr "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" -#: ../gtk/gtktextbuffer.c:191 +#: ../gtk/gtktextbuffer.c:192 msgid "Tag Table" msgstr "Tag Table" -#: ../gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:193 msgid "Text Tag Table" msgstr "Text Tag Table" -#: ../gtk/gtktextbuffer.c:210 +#: ../gtk/gtktextbuffer.c:211 msgid "Current text of the buffer" msgstr "Current text of the buffer" -#: ../gtk/gtktextbuffer.c:224 +#: ../gtk/gtktextbuffer.c:225 msgid "Has selection" msgstr "Has selection" -#: ../gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:226 msgid "Whether the buffer has some text currently selected" msgstr "Whether the buffer has some text currently selected" -#: ../gtk/gtktextbuffer.c:241 +#: ../gtk/gtktextbuffer.c:242 msgid "Cursor position" msgstr "Cursor position" -#: ../gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:243 msgid "" "The position of the insert mark (as offset from the beginning of the buffer)" msgstr "" "The position of the insert mark (as offset from the beginning of the buffer)" -#: ../gtk/gtktextbuffer.c:257 +#: ../gtk/gtktextbuffer.c:258 msgid "Copy target list" msgstr "Copy target list" -#: ../gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:259 msgid "" "The list of targets this buffer supports for clipboard copying and DND source" msgstr "" "The list of targets this buffer supports for clipboard copying and DND source" -#: ../gtk/gtktextbuffer.c:273 +#: ../gtk/gtktextbuffer.c:274 msgid "Paste target list" msgstr "Paste target list" -#: ../gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:275 msgid "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" @@ -5719,23 +6039,23 @@ msgstr "Left gravity" msgid "Whether the mark has left gravity" msgstr "Whether the mark has left gravity" -#: ../gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:186 msgid "Tag name" msgstr "Tag name" -#: ../gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:187 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "Name used to refer to the text tag. NULL for anonymous tags" -#: ../gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:205 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Background color as a (possibly unallocated) GdkColor" -#: ../gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:212 msgid "Background full height" msgstr "Background full height" -#: ../gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:213 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5743,27 +6063,23 @@ msgstr "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" -#: ../gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:229 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Foreground color as a (possibly unallocated) GdkColor" -#: ../gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "Text direction" - -#: ../gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:237 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "Text direction, e.g. right-to-left or left-to-right" -#: ../gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:286 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" -#: ../gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:295 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" -#: ../gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:304 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5771,15 +6087,15 @@ msgstr "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" -#: ../gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:315 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" -#: ../gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:324 msgid "Font size in Pango units" msgstr "Font size in Pango units" -#: ../gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:334 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 " @@ -5789,11 +6105,11 @@ msgstr "" "adapts to theme changes etc. so is recommended. Pango predefines some scales " "such as PANGO_SCALE_X_LARGE" -#: ../gtk/gtktexttag.c:336 ../gtk/gtktextview.c:704 +#: ../gtk/gtktexttag.c:354 ../gtk/gtktextview.c:704 msgid "Left, right, or center justification" msgstr "Left, right, or center justification" -#: ../gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:373 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." @@ -5801,31 +6117,31 @@ msgstr "" "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." -#: ../gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:380 msgid "Left margin" msgstr "Left margin" -#: ../gtk/gtktexttag.c:363 ../gtk/gtktextview.c:713 +#: ../gtk/gtktexttag.c:381 ../gtk/gtktextview.c:713 msgid "Width of the left margin in pixels" msgstr "Width of the left margin in pixels" -#: ../gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:390 msgid "Right margin" msgstr "Right margin" -#: ../gtk/gtktexttag.c:373 ../gtk/gtktextview.c:723 +#: ../gtk/gtktexttag.c:391 ../gtk/gtktextview.c:723 msgid "Width of the right margin in pixels" msgstr "Width of the right margin in pixels" -#: ../gtk/gtktexttag.c:383 ../gtk/gtktextview.c:732 +#: ../gtk/gtktexttag.c:401 ../gtk/gtktextview.c:732 msgid "Indent" msgstr "Indent" -#: ../gtk/gtktexttag.c:384 ../gtk/gtktextview.c:733 +#: ../gtk/gtktexttag.c:402 ../gtk/gtktextview.c:733 msgid "Amount to indent the paragraph, in pixels" msgstr "Amount to indent the paragraph, in pixels" -#: ../gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:413 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -5833,165 +6149,165 @@ msgstr "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" -#: ../gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:422 msgid "Pixels above lines" msgstr "Pixels above lines" -#: ../gtk/gtktexttag.c:405 ../gtk/gtktextview.c:657 +#: ../gtk/gtktexttag.c:423 ../gtk/gtktextview.c:657 msgid "Pixels of blank space above paragraphs" msgstr "Pixels of blank space above paragraphs" -#: ../gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:432 msgid "Pixels below lines" msgstr "Pixels below lines" -#: ../gtk/gtktexttag.c:415 ../gtk/gtktextview.c:667 +#: ../gtk/gtktexttag.c:433 ../gtk/gtktextview.c:667 msgid "Pixels of blank space below paragraphs" msgstr "Pixels of blank space below paragraphs" -#: ../gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:442 msgid "Pixels inside wrap" msgstr "Pixels inside wrap" -#: ../gtk/gtktexttag.c:425 ../gtk/gtktextview.c:677 +#: ../gtk/gtktexttag.c:443 ../gtk/gtktextview.c:677 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Pixels of blank space between wrapped lines in a paragraph" -#: ../gtk/gtktexttag.c:452 ../gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:470 ../gtk/gtktextview.c:695 msgid "" "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "" "Whether to wrap lines never, at word boundaries, or at character boundaries" -#: ../gtk/gtktexttag.c:461 ../gtk/gtktextview.c:742 +#: ../gtk/gtktexttag.c:479 ../gtk/gtktextview.c:742 msgid "Tabs" msgstr "Tabs" -#: ../gtk/gtktexttag.c:462 ../gtk/gtktextview.c:743 +#: ../gtk/gtktexttag.c:480 ../gtk/gtktextview.c:743 msgid "Custom tabs for this text" msgstr "Custom tabs for this text" -#: ../gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:498 msgid "Invisible" msgstr "Invisible" -#: ../gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:499 msgid "Whether this text is hidden." msgstr "Whether this text is hidden." -#: ../gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color name" msgstr "Paragraph background color name" -#: ../gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a string" msgstr "Paragraph background color as a string" -#: ../gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:529 msgid "Paragraph background color" msgstr "Paragraph background color" -#: ../gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:530 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "Paragraph background color as a (possibly unallocated) GdkColor" -#: ../gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:548 msgid "Margin Accumulates" msgstr "Margin Accumulates" -#: ../gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:549 msgid "Whether left and right margins accumulate." msgstr "Whether left and right margins accumulate." -#: ../gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:562 msgid "Background full height set" msgstr "Background full height set" -#: ../gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:563 msgid "Whether this tag affects background height" msgstr "Whether this tag affects background height" -#: ../gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:602 msgid "Justification set" msgstr "Justification set" -#: ../gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:603 msgid "Whether this tag affects paragraph justification" msgstr "Whether this tag affects paragraph justification" -#: ../gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:610 msgid "Left margin set" msgstr "Left margin set" -#: ../gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the left margin" msgstr "Whether this tag affects the left margin" -#: ../gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:614 msgid "Indent set" msgstr "Indent set" -#: ../gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects indentation" msgstr "Whether this tag affects indentation" -#: ../gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:622 msgid "Pixels above lines set" msgstr "Pixels above lines set" -#: ../gtk/gtktexttag.c:605 ../gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:623 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects the number of pixels above lines" msgstr "Whether this tag affects the number of pixels above lines" -#: ../gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:626 msgid "Pixels below lines set" msgstr "Pixels below lines set" -#: ../gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:630 msgid "Pixels inside wrap set" msgstr "Pixels inside wrap set" -#: ../gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "Whether this tag affects the number of pixels between wrapped lines" -#: ../gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:638 msgid "Right margin set" msgstr "Right margin set" -#: ../gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects the right margin" msgstr "Whether this tag affects the right margin" -#: ../gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:646 msgid "Wrap mode set" msgstr "Wrap mode set" -#: ../gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:647 msgid "Whether this tag affects line wrap mode" msgstr "Whether this tag affects line wrap mode" -#: ../gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:650 msgid "Tabs set" msgstr "Tabs set" -#: ../gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:651 msgid "Whether this tag affects tabs" msgstr "Whether this tag affects tabs" -#: ../gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:654 msgid "Invisible set" msgstr "Invisible set" -#: ../gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:655 msgid "Whether this tag affects text visibility" msgstr "Whether this tag affects text visibility" -#: ../gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:658 msgid "Paragraph background set" msgstr "Paragraph background set" -#: ../gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:659 msgid "Whether this tag affects the paragraph background color" msgstr "Whether this tag affects the paragraph background color" @@ -6055,6 +6371,10 @@ msgstr "Error underline color" msgid "Color with which to draw error-indication underlines" msgstr "Color with which to draw error-indication underlines" +#: ../gtk/gtkthemingengine.c:249 +msgid "Theming engine name" +msgstr "Theming engine name" + #: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Create the same proxies as a radio action" @@ -6083,87 +6403,87 @@ msgstr "Draw Indicator" msgid "If the toggle part of the button is displayed" msgstr "If the toggle part of the button is displayed" -#: ../gtk/gtktoolbar.c:491 ../gtk/gtktoolpalette.c:1060 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1062 msgid "Toolbar Style" msgstr "Toolbar Style" -#: ../gtk/gtktoolbar.c:492 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "How to draw the toolbar" -#: ../gtk/gtktoolbar.c:499 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "Show Arrow" -#: ../gtk/gtktoolbar.c:500 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "If an arrow should be shown if the toolbar doesn't fit" -#: ../gtk/gtktoolbar.c:521 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "Size of icons in this toolbar" -#: ../gtk/gtktoolbar.c:536 ../gtk/gtktoolpalette.c:1046 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1048 msgid "Icon size set" msgstr "Icon size set" -#: ../gtk/gtktoolbar.c:537 ../gtk/gtktoolpalette.c:1047 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1049 msgid "Whether the icon-size property has been set" msgstr "Whether the icon-size property has been set" -#: ../gtk/gtktoolbar.c:546 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "Whether the item should receive extra space when the toolbar grows" -#: ../gtk/gtktoolbar.c:554 ../gtk/gtktoolitemgroup.c:1642 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1648 msgid "Whether the item should be the same size as other homogeneous items" msgstr "Whether the item should be the same size as other homogeneous items" -#: ../gtk/gtktoolbar.c:561 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "Spacer size" -#: ../gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "Size of spacers" -#: ../gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "Amount of border space between the toolbar shadow and the buttons" -#: ../gtk/gtktoolbar.c:579 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "Maximum child expand" -#: ../gtk/gtktoolbar.c:580 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "Maximum amount of space an expandable item will be given" -#: ../gtk/gtktoolbar.c:588 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "Space style" -#: ../gtk/gtktoolbar.c:589 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "Whether spacers are vertical lines or just blank" -#: ../gtk/gtktoolbar.c:596 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "Button relief" -#: ../gtk/gtktoolbar.c:597 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "Type of bevel around toolbar buttons" -#: ../gtk/gtktoolbar.c:604 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "Style of bevel around the toolbar" -#: ../gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "Text to show in the item." -#: ../gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6171,39 +6491,39 @@ msgstr "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" -#: ../gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "Widget to use as the item label" -#: ../gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "Stock Id" -#: ../gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "The stock icon displayed on the item" -#: ../gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "Icon name" -#: ../gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "The name of the themed icon displayed on the item" -#: ../gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "Icon widget" -#: ../gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "Icon widget to display in the item" -#: ../gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "Icon spacing" -#: ../gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "Spacing in pixels between the icon and label" @@ -6215,481 +6535,513 @@ msgstr "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" -#: ../gtk/gtktoolitemgroup.c:1589 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "The human-readable title of this item group" msgstr "The human-readable title of this item group" -#: ../gtk/gtktoolitemgroup.c:1596 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "A widget to display in place of the usual label" msgstr "A widget to display in place of the usual label" -#: ../gtk/gtktoolitemgroup.c:1602 +#: ../gtk/gtktoolitemgroup.c:1608 msgid "Collapsed" msgstr "Collapsed" -#: ../gtk/gtktoolitemgroup.c:1603 +#: ../gtk/gtktoolitemgroup.c:1609 msgid "Whether the group has been collapsed and items are hidden" msgstr "Whether the group has been collapsed and items are hidden" -#: ../gtk/gtktoolitemgroup.c:1609 +#: ../gtk/gtktoolitemgroup.c:1615 msgid "ellipsize" msgstr "ellipsize" -#: ../gtk/gtktoolitemgroup.c:1610 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Ellipsize for item group headers" msgstr "Ellipsize for item group headers" -#: ../gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1622 msgid "Header Relief" msgstr "Header Relief" -#: ../gtk/gtktoolitemgroup.c:1617 +#: ../gtk/gtktoolitemgroup.c:1623 msgid "Relief of the group header button" msgstr "Relief of the group header button" -#: ../gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1638 msgid "Header Spacing" msgstr "Header Spacing" -#: ../gtk/gtktoolitemgroup.c:1633 +#: ../gtk/gtktoolitemgroup.c:1639 msgid "Spacing between expander arrow and caption" msgstr "Spacing between expander arrow and caption" -#: ../gtk/gtktoolitemgroup.c:1649 +#: ../gtk/gtktoolitemgroup.c:1655 msgid "Whether the item should receive extra space when the group grows" msgstr "Whether the item should receive extra space when the group grows" -#: ../gtk/gtktoolitemgroup.c:1656 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "Whether the item should fill the available space" msgstr "Whether the item should fill the available space" -#: ../gtk/gtktoolitemgroup.c:1662 +#: ../gtk/gtktoolitemgroup.c:1668 msgid "New Row" msgstr "New Row" -#: ../gtk/gtktoolitemgroup.c:1663 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Whether the item should start a new row" msgstr "Whether the item should start a new row" -#: ../gtk/gtktoolitemgroup.c:1670 +#: ../gtk/gtktoolitemgroup.c:1676 msgid "Position of the item within this group" msgstr "Position of the item within this group" -#: ../gtk/gtktoolpalette.c:1031 +#: ../gtk/gtktoolpalette.c:1033 msgid "Size of icons in this tool palette" msgstr "Size of icons in this tool palette" -#: ../gtk/gtktoolpalette.c:1061 +#: ../gtk/gtktoolpalette.c:1063 msgid "Style of items in the tool palette" msgstr "Style of items in the tool palette" -#: ../gtk/gtktoolpalette.c:1077 +#: ../gtk/gtktoolpalette.c:1079 msgid "Exclusive" msgstr "Exclusive" -#: ../gtk/gtktoolpalette.c:1078 +#: ../gtk/gtktoolpalette.c:1080 msgid "Whether the item group should be the only expanded at a given time" msgstr "Whether the item group should be the only expanded at a given time" -#: ../gtk/gtktoolpalette.c:1093 +#: ../gtk/gtktoolpalette.c:1095 msgid "" "Whether the item group should receive extra space when the palette grows" msgstr "" "Whether the item group should receive extra space when the palette grows" -#: ../gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" msgstr "Foreground color for symbolic icons" -#: ../gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" msgstr "Error color" -#: ../gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" msgstr "Error color for symbolic icons" -#: ../gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" msgstr "Warning color" -#: ../gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" msgstr "Warning color for symbolic icons" -#: ../gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" msgstr "Success color" -#: ../gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" msgstr "Success color for symbolic icons" -#: ../gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" msgstr "Padding that should be put around icons in the tray" -#: ../gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +msgid "TreeMenu model" +msgstr "TreeMenu model" + +#: ../gtk/gtktreemenu.c:288 +msgid "The model for the tree menu" +msgstr "The model for the tree menu" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "TreeMenu root row" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "The TreeMenu will display children of the specified root" + +#: ../gtk/gtktreemenu.c:344 +msgid "Tearoff" +msgstr "Tearoff" + +#: ../gtk/gtktreemenu.c:345 +msgid "Whether the menu has a tearoff item" +msgstr "Whether the menu has a tearoff item" + +#: ../gtk/gtktreemenu.c:361 +msgid "Wrap Width" +msgstr "Wrap Width" + +#: ../gtk/gtktreemenu.c:362 +msgid "Wrap width for laying out items in a grid" +msgstr "Wrap width for laying out items in a grid" + +#: ../gtk/gtktreemodelsort.c:312 msgid "TreeModelSort Model" msgstr "TreeModelSort Model" -#: ../gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:313 msgid "The model for the TreeModelSort to sort" msgstr "The model for the TreeModelSort to sort" -#: ../gtk/gtktreeview.c:661 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "TreeView Model" -#: ../gtk/gtktreeview.c:662 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "The model for the tree view" -#: ../gtk/gtktreeview.c:674 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "Headers Visible" -#: ../gtk/gtktreeview.c:675 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "Show the column header buttons" -#: ../gtk/gtktreeview.c:682 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "Headers Clickable" -#: ../gtk/gtktreeview.c:683 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "Column headers respond to click events" -#: ../gtk/gtktreeview.c:690 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "Expander Column" -#: ../gtk/gtktreeview.c:691 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "Set the column for the expander column" -#: ../gtk/gtktreeview.c:706 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "Rules Hint" -#: ../gtk/gtktreeview.c:707 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "Set a hint to the theme engine to draw rows in alternating colors" -#: ../gtk/gtktreeview.c:714 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "Enable Search" -#: ../gtk/gtktreeview.c:715 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "View allows user to search through columns interactively" -#: ../gtk/gtktreeview.c:722 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "Search Column" -#: ../gtk/gtktreeview.c:723 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "Model column to search through during interactive search" -#: ../gtk/gtktreeview.c:743 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "Fixed Height Mode" -#: ../gtk/gtktreeview.c:744 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "Speeds up GtkTreeView by assuming that all rows have the same height" -#: ../gtk/gtktreeview.c:764 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "Hover Selection" -#: ../gtk/gtktreeview.c:765 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "Whether the selection should follow the pointer" -#: ../gtk/gtktreeview.c:784 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "Hover Expand" -#: ../gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1113 msgid "" "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "" "Whether rows should be expanded/collapsed when the pointer moves over them" -#: ../gtk/gtktreeview.c:799 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "Show Expanders" -#: ../gtk/gtktreeview.c:800 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "View has expanders" -#: ../gtk/gtktreeview.c:814 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "Level Indentation" -#: ../gtk/gtktreeview.c:815 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "Extra indentation for each level" -#: ../gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "Rubber Banding" -#: ../gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1153 msgid "" "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "" "Whether to enable selection of multiple items by dragging the mouse pointer" -#: ../gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "Enable Grid Lines" -#: ../gtk/gtktreeview.c:833 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "Whether grid lines should be drawn in the tree view" -#: ../gtk/gtktreeview.c:841 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "Enable Tree Lines" -#: ../gtk/gtktreeview.c:842 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "Whether tree lines should be drawn in the tree view" -#: ../gtk/gtktreeview.c:850 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "The column in the model containing the tooltip texts for the rows" -#: ../gtk/gtktreeview.c:872 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "Vertical Separator Width" -#: ../gtk/gtktreeview.c:873 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "Vertical space between cells. Must be an even number" -#: ../gtk/gtktreeview.c:881 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "Horizontal Separator Width" -#: ../gtk/gtktreeview.c:882 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "Horizontal space between cells. Must be an even number" -#: ../gtk/gtktreeview.c:890 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "Allow Rules" -#: ../gtk/gtktreeview.c:891 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "Allow drawing of alternating color rows" -#: ../gtk/gtktreeview.c:897 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "Indent Expanders" -#: ../gtk/gtktreeview.c:898 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "Make the expanders indented" -#: ../gtk/gtktreeview.c:904 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "Even Row Color" -#: ../gtk/gtktreeview.c:905 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "Color to use for even rows" -#: ../gtk/gtktreeview.c:911 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "Odd Row Color" -#: ../gtk/gtktreeview.c:912 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "Color to use for odd rows" -#: ../gtk/gtktreeview.c:918 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "Grid line width" -#: ../gtk/gtktreeview.c:919 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" msgstr "Width, in pixels, of the tree view grid lines" -#: ../gtk/gtktreeview.c:925 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "Tree line width" -#: ../gtk/gtktreeview.c:926 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "Width, in pixels, of the tree view lines" -#: ../gtk/gtktreeview.c:932 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "Grid line pattern" -#: ../gtk/gtktreeview.c:933 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "Dash pattern used to draw the tree view grid lines" -#: ../gtk/gtktreeview.c:939 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "Tree line pattern" -#: ../gtk/gtktreeview.c:940 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "Dash pattern used to draw the tree view lines" -#: ../gtk/gtktreeviewcolumn.c:214 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "Whether to display the column" -#: ../gtk/gtktreeviewcolumn.c:221 ../gtk/gtkwindow.c:657 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "Resizable" -#: ../gtk/gtktreeviewcolumn.c:222 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "Column is user-resizable" -#: ../gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "Current width of the column" -#: ../gtk/gtktreeviewcolumn.c:239 -msgid "Space which is inserted between cells" -msgstr "Space which is inserted between cells" - -#: ../gtk/gtktreeviewcolumn.c:247 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "Sizing" -#: ../gtk/gtktreeviewcolumn.c:248 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "Resize mode of the column" -#: ../gtk/gtktreeviewcolumn.c:256 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "Fixed Width" -#: ../gtk/gtktreeviewcolumn.c:257 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "Current fixed width of the column" -#: ../gtk/gtktreeviewcolumn.c:266 -msgid "Minimum Width" -msgstr "Minimum Width" - -#: ../gtk/gtktreeviewcolumn.c:267 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "Minimum allowed width of the column" -#: ../gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "Maximum Width" -#: ../gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "Maximum allowed width of the column" -#: ../gtk/gtktreeviewcolumn.c:287 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "Title to appear in column header" -#: ../gtk/gtktreeviewcolumn.c:295 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "Column gets share of extra width allocated to the widget" -#: ../gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "Clickable" -#: ../gtk/gtktreeviewcolumn.c:303 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "Whether the header can be clicked" -#: ../gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "Widget" -#: ../gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "Widget to put in column header button instead of column title" -#: ../gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "X Alignment of the column header text or widget" -#: ../gtk/gtktreeviewcolumn.c:330 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "Whether the column can be reordered around the headers" -#: ../gtk/gtktreeviewcolumn.c:337 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "Sort indicator" -#: ../gtk/gtktreeviewcolumn.c:338 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "Whether to show a sort indicator" -#: ../gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "Sort order" -#: ../gtk/gtktreeviewcolumn.c:346 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "Sort direction the sort indicator should indicate" -#: ../gtk/gtktreeviewcolumn.c:362 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "Sort column ID" -#: ../gtk/gtktreeviewcolumn.c:363 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "Logical sort column ID this column sorts on when selected for sorting" -#: ../gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Whether tearoff menu items should be added to menus" -#: ../gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Merged UI definition" -#: ../gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "An XML string describing the merged UI" -#: ../gtk/gtkviewport.c:155 +#: ../gtk/gtkviewport.c:154 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "Determines how the shadowed box around the viewport is drawn" -#: ../gtk/gtkwidget.c:873 +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "Use symbolic icons" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "Whether to use symbolic icons" + +#: ../gtk/gtkwidget.c:901 msgid "Widget name" msgstr "Widget name" -#: ../gtk/gtkwidget.c:874 +#: ../gtk/gtkwidget.c:902 msgid "The name of the widget" msgstr "The name of the widget" -#: ../gtk/gtkwidget.c:880 +#: ../gtk/gtkwidget.c:908 msgid "Parent widget" msgstr "Parent widget" -#: ../gtk/gtkwidget.c:881 +#: ../gtk/gtkwidget.c:909 msgid "The parent widget of this widget. Must be a Container widget" msgstr "The parent widget of this widget. Must be a Container widget" -#: ../gtk/gtkwidget.c:888 +#: ../gtk/gtkwidget.c:916 msgid "Width request" msgstr "Width request" -#: ../gtk/gtkwidget.c:889 +#: ../gtk/gtkwidget.c:917 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6697,11 +7049,11 @@ msgstr "" "Override for width request of the widget, or -1 if natural request should be " "used" -#: ../gtk/gtkwidget.c:897 +#: ../gtk/gtkwidget.c:925 msgid "Height request" msgstr "Height request" -#: ../gtk/gtkwidget.c:898 +#: ../gtk/gtkwidget.c:926 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6709,83 +7061,83 @@ msgstr "" "Override for height request of the widget, or -1 if natural request should " "be used" -#: ../gtk/gtkwidget.c:907 +#: ../gtk/gtkwidget.c:935 msgid "Whether the widget is visible" msgstr "Whether the widget is visible" -#: ../gtk/gtkwidget.c:914 +#: ../gtk/gtkwidget.c:942 msgid "Whether the widget responds to input" msgstr "Whether the widget responds to input" -#: ../gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:948 msgid "Application paintable" msgstr "Application paintable" -#: ../gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:949 msgid "Whether the application will paint directly on the widget" msgstr "Whether the application will paint directly on the widget" -#: ../gtk/gtkwidget.c:927 +#: ../gtk/gtkwidget.c:955 msgid "Can focus" msgstr "Can focus" -#: ../gtk/gtkwidget.c:928 +#: ../gtk/gtkwidget.c:956 msgid "Whether the widget can accept the input focus" msgstr "Whether the widget can accept the input focus" -#: ../gtk/gtkwidget.c:934 +#: ../gtk/gtkwidget.c:962 msgid "Has focus" msgstr "Has focus" -#: ../gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:963 msgid "Whether the widget has the input focus" msgstr "Whether the widget has the input focus" -#: ../gtk/gtkwidget.c:941 +#: ../gtk/gtkwidget.c:969 msgid "Is focus" msgstr "Is focus" -#: ../gtk/gtkwidget.c:942 +#: ../gtk/gtkwidget.c:970 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Whether the widget is the focus widget within the toplevel" -#: ../gtk/gtkwidget.c:948 +#: ../gtk/gtkwidget.c:976 msgid "Can default" msgstr "Can default" -#: ../gtk/gtkwidget.c:949 +#: ../gtk/gtkwidget.c:977 msgid "Whether the widget can be the default widget" msgstr "Whether the widget can be the default widget" -#: ../gtk/gtkwidget.c:955 +#: ../gtk/gtkwidget.c:983 msgid "Has default" msgstr "Has default" -#: ../gtk/gtkwidget.c:956 +#: ../gtk/gtkwidget.c:984 msgid "Whether the widget is the default widget" msgstr "Whether the widget is the default widget" -#: ../gtk/gtkwidget.c:962 +#: ../gtk/gtkwidget.c:990 msgid "Receives default" msgstr "Receives default" -#: ../gtk/gtkwidget.c:963 +#: ../gtk/gtkwidget.c:991 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "If TRUE, the widget will receive the default action when it is focused" -#: ../gtk/gtkwidget.c:969 +#: ../gtk/gtkwidget.c:997 msgid "Composite child" msgstr "Composite child" -#: ../gtk/gtkwidget.c:970 +#: ../gtk/gtkwidget.c:998 msgid "Whether the widget is part of a composite widget" msgstr "Whether the widget is part of a composite widget" -#: ../gtk/gtkwidget.c:976 +#: ../gtk/gtkwidget.c:1004 msgid "Style" msgstr "Style" -#: ../gtk/gtkwidget.c:977 +#: ../gtk/gtkwidget.c:1005 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" @@ -6793,183 +7145,175 @@ msgstr "" "The style of the widget, which contains information about how it will look " "(colors etc)" -#: ../gtk/gtkwidget.c:983 +#: ../gtk/gtkwidget.c:1011 msgid "Events" msgstr "Events" -#: ../gtk/gtkwidget.c:984 +#: ../gtk/gtkwidget.c:1012 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "The event mask that decides what kind of GdkEvents this widget gets" -#: ../gtk/gtkwidget.c:991 -msgid "Extension events" -msgstr "Extension events" - -#: ../gtk/gtkwidget.c:992 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "The mask that decides what kind of extension events this widget gets" - -#: ../gtk/gtkwidget.c:999 +#: ../gtk/gtkwidget.c:1019 msgid "No show all" msgstr "No show all" -#: ../gtk/gtkwidget.c:1000 +#: ../gtk/gtkwidget.c:1020 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Whether gtk_widget_show_all() should not affect this widget" -#: ../gtk/gtkwidget.c:1023 +#: ../gtk/gtkwidget.c:1043 msgid "Whether this widget has a tooltip" msgstr "Whether this widget has a tooltip" -#: ../gtk/gtkwidget.c:1079 +#: ../gtk/gtkwidget.c:1099 msgid "Window" msgstr "Window" -#: ../gtk/gtkwidget.c:1080 +#: ../gtk/gtkwidget.c:1100 msgid "The widget's window if it is realized" msgstr "The widget's window if it is realized" -#: ../gtk/gtkwidget.c:1094 +#: ../gtk/gtkwidget.c:1114 msgid "Double Buffered" msgstr "Double Buffered" -#: ../gtk/gtkwidget.c:1095 +#: ../gtk/gtkwidget.c:1115 msgid "Whether the widget is double buffered" msgstr "Whether the widget is double buffered" -#: ../gtk/gtkwidget.c:1110 +#: ../gtk/gtkwidget.c:1130 msgid "How to position in extra horizontal space" msgstr "How to position in extra horizontal space" -#: ../gtk/gtkwidget.c:1126 +#: ../gtk/gtkwidget.c:1146 msgid "How to position in extra vertical space" msgstr "How to position in extra vertical space" -#: ../gtk/gtkwidget.c:1145 +#: ../gtk/gtkwidget.c:1165 msgid "Margin on Left" msgstr "Margin on Left" -#: ../gtk/gtkwidget.c:1146 +#: ../gtk/gtkwidget.c:1166 msgid "Pixels of extra space on the left side" msgstr "Pixels of extra space on the left side" -#: ../gtk/gtkwidget.c:1166 +#: ../gtk/gtkwidget.c:1186 msgid "Margin on Right" msgstr "Margin on Right" -#: ../gtk/gtkwidget.c:1167 +#: ../gtk/gtkwidget.c:1187 msgid "Pixels of extra space on the right side" msgstr "Pixels of extra space on the right side" -#: ../gtk/gtkwidget.c:1187 +#: ../gtk/gtkwidget.c:1207 msgid "Margin on Top" msgstr "Margin on Top" -#: ../gtk/gtkwidget.c:1188 +#: ../gtk/gtkwidget.c:1208 msgid "Pixels of extra space on the top side" msgstr "Pixels of extra space on the top side" -#: ../gtk/gtkwidget.c:1208 +#: ../gtk/gtkwidget.c:1228 msgid "Margin on Bottom" msgstr "Margin on Bottom" -#: ../gtk/gtkwidget.c:1209 +#: ../gtk/gtkwidget.c:1229 msgid "Pixels of extra space on the bottom side" msgstr "Pixels of extra space on the bottom side" -#: ../gtk/gtkwidget.c:1226 +#: ../gtk/gtkwidget.c:1246 msgid "All Margins" msgstr "All Margins" -#: ../gtk/gtkwidget.c:1227 +#: ../gtk/gtkwidget.c:1247 msgid "Pixels of extra space on all four sides" msgstr "Pixels of extra space on all four sides" -#: ../gtk/gtkwidget.c:1260 +#: ../gtk/gtkwidget.c:1280 msgid "Horizontal Expand" msgstr "Horizontal Expand" -#: ../gtk/gtkwidget.c:1261 +#: ../gtk/gtkwidget.c:1281 msgid "Whether widget wants more horizontal space" msgstr "Whether widget wants more horizontal space" -#: ../gtk/gtkwidget.c:1275 +#: ../gtk/gtkwidget.c:1295 msgid "Horizontal Expand Set" msgstr "Horizontal Expand Set" -#: ../gtk/gtkwidget.c:1276 +#: ../gtk/gtkwidget.c:1296 msgid "Whether to use the hexpand property" msgstr "Whether to use the hexpand property" -#: ../gtk/gtkwidget.c:1290 +#: ../gtk/gtkwidget.c:1310 msgid "Vertical Expand" msgstr "Vertical Expand" -#: ../gtk/gtkwidget.c:1291 +#: ../gtk/gtkwidget.c:1311 msgid "Whether widget wants more vertical space" msgstr "Whether widget wants more vertical space" -#: ../gtk/gtkwidget.c:1305 +#: ../gtk/gtkwidget.c:1325 msgid "Vertical Expand Set" msgstr "Vertical Expand Set" -#: ../gtk/gtkwidget.c:1306 +#: ../gtk/gtkwidget.c:1326 msgid "Whether to use the vexpand property" msgstr "Whether to use the vexpand property" -#: ../gtk/gtkwidget.c:1320 +#: ../gtk/gtkwidget.c:1340 msgid "Expand Both" msgstr "Expand Both" -#: ../gtk/gtkwidget.c:1321 +#: ../gtk/gtkwidget.c:1341 msgid "Whether widget wants to expand in both directions" msgstr "Whether widget wants to expand in both directions" -#: ../gtk/gtkwidget.c:2936 +#: ../gtk/gtkwidget.c:3000 msgid "Interior Focus" msgstr "Interior Focus" -#: ../gtk/gtkwidget.c:2937 +#: ../gtk/gtkwidget.c:3001 msgid "Whether to draw the focus indicator inside widgets" msgstr "Whether to draw the focus indicator inside widgets" -#: ../gtk/gtkwidget.c:2943 +#: ../gtk/gtkwidget.c:3007 msgid "Focus linewidth" msgstr "Focus linewidth" -#: ../gtk/gtkwidget.c:2944 +#: ../gtk/gtkwidget.c:3008 msgid "Width, in pixels, of the focus indicator line" msgstr "Width, in pixels, of the focus indicator line" -#: ../gtk/gtkwidget.c:2950 +#: ../gtk/gtkwidget.c:3014 msgid "Focus line dash pattern" msgstr "Focus line dash pattern" -#: ../gtk/gtkwidget.c:2951 +#: ../gtk/gtkwidget.c:3015 msgid "Dash pattern used to draw the focus indicator" msgstr "Dash pattern used to draw the focus indicator" -#: ../gtk/gtkwidget.c:2956 +#: ../gtk/gtkwidget.c:3020 msgid "Focus padding" msgstr "Focus padding" -#: ../gtk/gtkwidget.c:2957 +#: ../gtk/gtkwidget.c:3021 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Width, in pixels, between focus indicator and the widget 'box'" -#: ../gtk/gtkwidget.c:2962 +#: ../gtk/gtkwidget.c:3026 msgid "Cursor color" msgstr "Cursor color" -#: ../gtk/gtkwidget.c:2963 +#: ../gtk/gtkwidget.c:3027 msgid "Color with which to draw insertion cursor" msgstr "Color with which to draw insertion cursor" -#: ../gtk/gtkwidget.c:2968 +#: ../gtk/gtkwidget.c:3032 msgid "Secondary cursor color" msgstr "Secondary cursor color" -#: ../gtk/gtkwidget.c:2969 +#: ../gtk/gtkwidget.c:3033 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -6977,43 +7321,43 @@ msgstr "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" -#: ../gtk/gtkwidget.c:2974 +#: ../gtk/gtkwidget.c:3038 msgid "Cursor line aspect ratio" msgstr "Cursor line aspect ratio" -#: ../gtk/gtkwidget.c:2975 +#: ../gtk/gtkwidget.c:3039 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Aspect ratio with which to draw insertion cursor" -#: ../gtk/gtkwidget.c:2981 +#: ../gtk/gtkwidget.c:3045 msgid "Window dragging" msgstr "Window dragging" -#: ../gtk/gtkwidget.c:2982 +#: ../gtk/gtkwidget.c:3046 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "Whether windows can be dragged by clicking on empty areas" -#: ../gtk/gtkwidget.c:2995 +#: ../gtk/gtkwidget.c:3059 msgid "Unvisited Link Color" msgstr "Unvisited Link Color" -#: ../gtk/gtkwidget.c:2996 +#: ../gtk/gtkwidget.c:3060 msgid "Color of unvisited links" msgstr "Color of unvisited links" -#: ../gtk/gtkwidget.c:3009 +#: ../gtk/gtkwidget.c:3073 msgid "Visited Link Color" msgstr "Visited Link Color" -#: ../gtk/gtkwidget.c:3010 +#: ../gtk/gtkwidget.c:3074 msgid "Color of visited links" msgstr "Color of visited links" -#: ../gtk/gtkwidget.c:3024 +#: ../gtk/gtkwidget.c:3088 msgid "Wide Separators" msgstr "Wide Separators" -#: ../gtk/gtkwidget.c:3025 +#: ../gtk/gtkwidget.c:3089 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" @@ -7021,79 +7365,79 @@ msgstr "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" -#: ../gtk/gtkwidget.c:3039 +#: ../gtk/gtkwidget.c:3103 msgid "Separator Width" msgstr "Separator Width" -#: ../gtk/gtkwidget.c:3040 +#: ../gtk/gtkwidget.c:3104 msgid "The width of separators if wide-separators is TRUE" msgstr "The width of separators if wide-separators is TRUE" -#: ../gtk/gtkwidget.c:3054 +#: ../gtk/gtkwidget.c:3118 msgid "Separator Height" msgstr "Separator Height" -#: ../gtk/gtkwidget.c:3055 +#: ../gtk/gtkwidget.c:3119 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "The height of separators if \"wide-separators\" is TRUE" -#: ../gtk/gtkwidget.c:3069 +#: ../gtk/gtkwidget.c:3133 msgid "Horizontal Scroll Arrow Length" msgstr "Horizontal Scroll Arrow Length" -#: ../gtk/gtkwidget.c:3070 +#: ../gtk/gtkwidget.c:3134 msgid "The length of horizontal scroll arrows" msgstr "The length of horizontal scroll arrows" -#: ../gtk/gtkwidget.c:3084 +#: ../gtk/gtkwidget.c:3148 msgid "Vertical Scroll Arrow Length" msgstr "Vertical Scroll Arrow Length" -#: ../gtk/gtkwidget.c:3085 +#: ../gtk/gtkwidget.c:3149 msgid "The length of vertical scroll arrows" msgstr "The length of vertical scroll arrows" -#: ../gtk/gtkwindow.c:615 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "Window Type" -#: ../gtk/gtkwindow.c:616 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "The type of the window" -#: ../gtk/gtkwindow.c:624 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "Window Title" -#: ../gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "The title of the window" -#: ../gtk/gtkwindow.c:632 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "Window Role" -#: ../gtk/gtkwindow.c:633 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" msgstr "Unique identifier for the window to be used when restoring a session" -#: ../gtk/gtkwindow.c:649 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "Startup ID" -#: ../gtk/gtkwindow.c:650 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "Unique startup identifier for the window used by startup-notification" -#: ../gtk/gtkwindow.c:658 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "If TRUE, users can resize the window" -#: ../gtk/gtkwindow.c:665 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "Modal" -#: ../gtk/gtkwindow.c:666 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" @@ -7101,78 +7445,78 @@ msgstr "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" -#: ../gtk/gtkwindow.c:673 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "Window Position" -#: ../gtk/gtkwindow.c:674 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "The initial position of the window" -#: ../gtk/gtkwindow.c:682 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "Default Width" -#: ../gtk/gtkwindow.c:683 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" msgstr "" "The default width of the window, used when initially showing the window" -#: ../gtk/gtkwindow.c:692 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "Default Height" -#: ../gtk/gtkwindow.c:693 +#: ../gtk/gtkwindow.c:681 msgid "" "The default height of the window, used when initially showing the window" msgstr "" "The default height of the window, used when initially showing the window" -#: ../gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "Destroy with Parent" -#: ../gtk/gtkwindow.c:703 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "If this window should be destroyed when the parent is destroyed" -#: ../gtk/gtkwindow.c:711 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "Icon for this window" -#: ../gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "Mnemonics Visible" -#: ../gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "Whether mnemonics are currently visible in this window" -#: ../gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "Name of the themed icon for this window" -#: ../gtk/gtkwindow.c:749 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "Is Active" -#: ../gtk/gtkwindow.c:750 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "Whether the toplevel is the current active window" -#: ../gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "Focus in Toplevel" -#: ../gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "Whether the input focus is within this GtkWindow" -#: ../gtk/gtkwindow.c:765 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "Type hint" -#: ../gtk/gtkwindow.c:766 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7180,118 +7524,161 @@ msgstr "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." -#: ../gtk/gtkwindow.c:774 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "Skip taskbar" -#: ../gtk/gtkwindow.c:775 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "TRUE if the window should not be in the task bar." -#: ../gtk/gtkwindow.c:782 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "Skip pager" -#: ../gtk/gtkwindow.c:783 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "TRUE if the window should not be in the pager." -#: ../gtk/gtkwindow.c:790 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "Urgent" -#: ../gtk/gtkwindow.c:791 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "TRUE if the window should be brought to the user's attention." -#: ../gtk/gtkwindow.c:805 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "Accept focus" -#: ../gtk/gtkwindow.c:806 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "TRUE if the window should receive the input focus." -#: ../gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "Focus on map" -#: ../gtk/gtkwindow.c:821 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "TRUE if the window should receive the input focus when mapped." -#: ../gtk/gtkwindow.c:835 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "Decorated" -#: ../gtk/gtkwindow.c:836 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "Whether the window should be decorated by the window manager" -#: ../gtk/gtkwindow.c:850 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "Deletable" -#: ../gtk/gtkwindow.c:851 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "Whether the window frame should have a close button" -#: ../gtk/gtkwindow.c:870 +#: ../gtk/gtkwindow.c:858 msgid "Resize grip" msgstr "Resize grip" -#: ../gtk/gtkwindow.c:871 +#: ../gtk/gtkwindow.c:859 msgid "Specifies whether the window should have a resize grip" msgstr "Specifies whether the window should have a resize grip" -#: ../gtk/gtkwindow.c:885 +#: ../gtk/gtkwindow.c:873 msgid "Resize grip is visible" msgstr "Resize grip is visible" -#: ../gtk/gtkwindow.c:886 +#: ../gtk/gtkwindow.c:874 msgid "Specifies whether the window's resize grip is visible." msgstr "Specifies whether the window's resize grip is visible." -#: ../gtk/gtkwindow.c:902 +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "Gravity" -#: ../gtk/gtkwindow.c:903 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "The window gravity of the window" -#: ../gtk/gtkwindow.c:920 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "Transient for Window" -#: ../gtk/gtkwindow.c:921 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "The transient parent of the dialog" -#: ../gtk/gtkwindow.c:936 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "Opacity for Window" -#: ../gtk/gtkwindow.c:937 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "The opacity of the window, from 0 to 1" -#: ../gtk/gtkwindow.c:947 ../gtk/gtkwindow.c:948 +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 msgid "Width of resize grip" msgstr "Width of resize grip" -#: ../gtk/gtkwindow.c:953 ../gtk/gtkwindow.c:954 +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 msgid "Height of resize grip" msgstr "Height of resize grip" -#: ../gtk/gtkwindow.c:973 +#: ../gtk/gtkwindow.c:961 msgid "GtkApplication" msgstr "GtkApplication" -#: ../gtk/gtkwindow.c:974 +#: ../gtk/gtkwindow.c:962 msgid "The GtkApplication for the window" msgstr "The GtkApplication for the window" +#~ msgid "Tab pack type" +#~ msgstr "Tab pack type" + +#~ msgid "Update policy" +#~ msgstr "Update policy" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "How the range should be updated on the screen" + +#~ msgid "Number of steps" +#~ msgstr "Number of steps" + +#~ msgid "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." +#~ msgstr "" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." + +#~ msgid "Animation duration" +#~ msgstr "Animation duration" + +#~ msgid "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" +#~ msgstr "" +#~ "The length of time in milliseconds for the spinner to complete a full loop" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" + +#~ msgid "Extension events" +#~ msgstr "Extension events" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "The mask that decides what kind of extension events this widget gets" + #~ msgid "Lower" #~ msgstr "Lower" @@ -7319,12 +7706,6 @@ msgstr "The GtkApplication for the window" #~ msgid "The metric used for the ruler" #~ msgstr "The metric used for the ruler" -#~ msgid "Horizontal adjustment" -#~ msgstr "Horizontal adjustment" - -#~ msgid "Vertical adjustment" -#~ msgstr "Vertical adjustment" - #~ msgid "Whether the statusbar has a grip for resizing the toplevel" #~ msgstr "Whether the statusbar has a grip for resizing the toplevel" @@ -7418,9 +7799,6 @@ msgstr "The GtkApplication for the window" #~ msgid "Blinking" #~ msgstr "Blinking" -#~ msgid "Whether the status icon is blinking" -#~ msgstr "Whether the status icon is blinking" - #~ msgid "Row Ending details" #~ msgstr "Row Ending details" diff --git a/po-properties/nb.po b/po-properties/nb.po index 99347a5b7e..a345459a86 100644 --- a/po-properties/nb.po +++ b/po-properties/nb.po @@ -1,153 +1,156 @@ # translation of nb.po to Norwegian Bokmal # Norwegian (bokmål) translation of gtk+. # Copyright (C) 1998-2004, 2005 Free Software Foundation, Inc. +# # Kjartan Maraas , 1998-2010. # Terance Edward Sola , 2005. -# +# Torstein Adolf Winterseth , 2010. msgid "" msgstr "" "Project-Id-Version: gtk+ properties\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:54-0400\n" -"PO-Revision-Date: 2010-01-19 11:19+0100\n" -"Last-Translator: Kjartan Maraas \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." +"cgi?product=gtk%2b&component=general\n" +"POT-Creation-Date: 2010-12-24 02:57+0000\n" +"PO-Revision-Date: 2010-12-30 20:37+0100\n" +"Last-Translator: Torstein Adolf Winterseth \n" "Language-Team: Norwegian Bokmål \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" +"Language: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.1\n" -#: gdk/gdkdevice.c:97 +#: ../gdk/gdkdevice.c:96 #, fuzzy msgid "Device Display" msgstr "Forvalgt skjerm" -#: gdk/gdkdevice.c:98 +#: ../gdk/gdkdevice.c:97 #, fuzzy msgid "Display which the device belongs to" msgstr "Vis cellen sensitiv" -#: gdk/gdkdevice.c:112 +#: ../gdk/gdkdevice.c:111 msgid "Device manager" msgstr "" -#: gdk/gdkdevice.c:113 +#: ../gdk/gdkdevice.c:112 msgid "Device manager which the device belongs to" msgstr "" -#: gdk/gdkdevice.c:127 gdk/gdkdevice.c:128 +#: ../gdk/gdkdevice.c:126 ../gdk/gdkdevice.c:127 #, fuzzy msgid "Device name" msgstr "Navn på widget" -#: gdk/gdkdevice.c:142 +#: ../gdk/gdkdevice.c:141 #, fuzzy msgid "Device type" msgstr "Kurvetype" -#: gdk/gdkdevice.c:143 +#: ../gdk/gdkdevice.c:142 msgid "Device role in the device manager" msgstr "" -#: gdk/gdkdevice.c:159 +#: ../gdk/gdkdevice.c:158 msgid "Associated device" msgstr "" -#: gdk/gdkdevice.c:160 +#: ../gdk/gdkdevice.c:159 msgid "Associated pointer or keyboard with this device" msgstr "" -#: gdk/gdkdevice.c:173 +#: ../gdk/gdkdevice.c:172 msgid "Input source" msgstr "" -#: gdk/gdkdevice.c:174 +#: ../gdk/gdkdevice.c:173 #, fuzzy msgid "Source type for the device" msgstr "Modell for treevisning" -#: gdk/gdkdevice.c:189 gdk/gdkdevice.c:190 +#: ../gdk/gdkdevice.c:188 ../gdk/gdkdevice.c:189 #, fuzzy msgid "Input mode for the device" msgstr "Modell for treevisning" -#: gdk/gdkdevice.c:205 +#: ../gdk/gdkdevice.c:204 #, fuzzy msgid "Whether the device has a cursor" msgstr "Widget har inndatafokus" -#: gdk/gdkdevice.c:206 +#: ../gdk/gdkdevice.c:205 #, fuzzy msgid "Whether there is a visible cursor following device motion" msgstr "Om usynlig tegn er satt" -#: gdk/gdkdevice.c:220 gdk/gdkdevice.c:221 +#: ../gdk/gdkdevice.c:219 ../gdk/gdkdevice.c:220 #, fuzzy msgid "Number of axes in the device" msgstr "Antall sider i dokumentet." -#: gdk/gdkdevicemanager.c:134 +#: ../gdk/gdkdevicemanager.c:130 #, fuzzy msgid "Display" msgstr "Forvalgt skjerm" -#: gdk/gdkdevicemanager.c:135 +#: ../gdk/gdkdevicemanager.c:131 #, fuzzy msgid "Display for the device manager" msgstr "Vis cellen" -#: gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkdisplaymanager.c:114 msgid "Default Display" msgstr "Forvalgt skjerm" -#: gdk/gdkdisplaymanager.c:103 +#: ../gdk/gdkdisplaymanager.c:115 msgid "The default display for GDK" msgstr "Forvalgt skjerm for GDK" -#: gdk/gdkscreen.c:72 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Alternativer for skrift" -#: gdk/gdkscreen.c:73 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "Forvalgte alternativer for skrift på skjermen" -#: gdk/gdkscreen.c:80 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Skriftoppløsning" -#: gdk/gdkscreen.c:81 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "Oppløsning for skrifter på skjermen" -#: gdk/gdkwindow.c:392 gdk/gdkwindow.c:393 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Markør" -#: gdk/x11/gdkdevice-xi.c:132 gdk/x11/gdkdevice-xi.c:133 -#: gdk/x11/gdkdevice-xi2.c:111 +#: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "" -#: gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "" -#: gdk/x11/gdkdevicemanager-xi.c:84 +#: ../gdk/x11/gdkdevicemanager-xi.c:95 #, fuzzy msgid "Event base" msgstr "Hendelser" -#: gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "" -#: gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:277 msgid "Program name" msgstr "Navn på program" -#: gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:278 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" @@ -155,99 +158,95 @@ msgstr "" "Navn på programmet. Hvis dette ikke er satt vil forvalgt verdi komme fra " "g_get_application_name()" -#: gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:292 msgid "Program version" msgstr "Programversjon" -#: gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:293 msgid "The version of the program" msgstr "Programmets versjon" -#: gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright string" msgstr "Opphavsrett" -#: gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:308 msgid "Copyright information for the program" msgstr "Informasjon om opphavsrett for programmet" -#: gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments string" msgstr "Kommentar" -#: gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:326 msgid "Comments about the program" msgstr "Kommentar om programmet" -#: gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:376 #, fuzzy msgid "License Type" msgstr "Meldingstype" -#: gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:377 #, fuzzy msgid "The license type of the program" msgstr "Programmets versjon" -#: gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:393 msgid "Website URL" msgstr "URL til nettsted" -#: gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:394 msgid "The URL for the link to the website of the program" msgstr "URL for programmets nettsted" -#: gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:408 msgid "Website label" msgstr "Etikett for nettsted" -#: gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"Merkelappen til programmet sitt nettside. Hvis dette ikke er satt brukes " -"bare nettadressen" +#: ../gtk/gtkaboutdialog.c:409 +#, fuzzy +#| msgid "The URL for the link to the website of the program" +msgid "The label for the link to the website of the program" +msgstr "URL for programmets nettsted" -#: gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:425 msgid "Authors" msgstr "Forfattere" -#: gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:426 msgid "List of authors of the program" msgstr "Liste over programmets utviklere" -#: gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:442 msgid "Documenters" msgstr "Dokumentasjon" -#: gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:443 msgid "List of people documenting the program" msgstr "Liste med personer som har dokumentert programmet" -#: gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:459 msgid "Artists" msgstr "Artister" -#: gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:460 msgid "List of people who have contributed artwork to the program" msgstr "Liste med personer som har bidratt med grafikk til programmet" -#: gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:477 msgid "Translator credits" msgstr "Oversettere" -#: gtk/gtkaboutdialog.c:471 -msgid "" -"Credits to the translators. This string should be marked as translatable" -msgstr "" -"Takk til oversetterne. Denne strengen skal være markert som oversettbar" +#: ../gtk/gtkaboutdialog.c:478 +msgid "Credits to the translators. This string should be marked as translatable" +msgstr "Takk til oversetterne. Denne strengen skal være markert som oversettbar" -#: gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:493 msgid "Logo" msgstr "Logo" -#: gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:494 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -255,108 +254,109 @@ msgstr "" "En logo for «Om»-boksen. Hvis dette ikke er satt brukes " "gtk_window_get_default_icon_list()" -#: gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:509 msgid "Logo Icon Name" msgstr "Navn på ikon for logo" -#: gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:510 msgid "A named icon to use as the logo for the about box." msgstr "Et navngitt ikon å bruke som logoen for «Om»-boksen." -#: gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:523 msgid "Wrap license" msgstr "Brytningslisens" -#: gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:524 msgid "Whether to wrap the license text." msgstr "Om lisensteksten skal brytes." -#: gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:189 msgid "Accelerator Closure" msgstr "Aksellerator-«closure»" -#: gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:190 msgid "The closure to be monitored for accelerator changes" msgstr "«Closure» som skal overvåkes for akselleratorendringer" -#: gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:196 msgid "Accelerator Widget" msgstr "Akselleratorwidget" -#: gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:197 msgid "The widget to be monitored for accelerator changes" msgstr "Widgetet som skal overvåkes for akselleratorendringer" -#: gtk/gtkaction.c:222 gtk/gtkactiongroup.c:228 gtk/gtkprinter.c:125 -#: gtk/gtktextmark.c:89 +#: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 +#: ../gtk/gtktextmark.c:89 msgid "Name" msgstr "Navn" -#: gtk/gtkaction.c:223 +#: ../gtk/gtkaction.c:223 msgid "A unique name for the action." msgstr "Et unikt navn for handlingen." -#: gtk/gtkaction.c:241 gtk/gtkbutton.c:238 gtk/gtkexpander.c:209 -#: gtk/gtkframe.c:130 gtk/gtklabel.c:549 gtk/gtkmenuitem.c:333 -#: gtk/gtktoolbutton.c:202 gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:226 ../gtk/gtkexpander.c:207 +#: ../gtk/gtkframe.c:130 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:332 +#: ../gtk/gtktoolbutton.c:202 ../gtk/gtktoolitemgroup.c:1588 msgid "Label" msgstr "Etikett" -#: gtk/gtkaction.c:242 +#: ../gtk/gtkaction.c:242 msgid "The label used for menu items and buttons that activate this action." msgstr "" "Etikett som brukes for menyoppføringer og knapper som aktiverer denne " "handlingen." -#: gtk/gtkaction.c:258 +#: ../gtk/gtkaction.c:258 msgid "Short label" msgstr "Kort etikett" -#: gtk/gtkaction.c:259 +#: ../gtk/gtkaction.c:259 msgid "A shorter label that may be used on toolbar buttons." msgstr "En kortere etikett som kan brukes på verktøylinjeknapper." -#: gtk/gtkaction.c:267 +#: ../gtk/gtkaction.c:267 msgid "Tooltip" msgstr "Verktøytips" -#: gtk/gtkaction.c:268 +#: ../gtk/gtkaction.c:268 msgid "A tooltip for this action." msgstr "Et verktøytips for denne handlingen." -#: gtk/gtkaction.c:283 +#: ../gtk/gtkaction.c:283 msgid "Stock Icon" msgstr "Standard ikon" -#: gtk/gtkaction.c:284 +#: ../gtk/gtkaction.c:284 msgid "The stock icon displayed in widgets representing this action." msgstr "" "Standard ikon som vises i komponenter som representerer denne handlingen." -#: gtk/gtkaction.c:304 gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:252 msgid "GIcon" msgstr "GIcon" -#: gtk/gtkaction.c:305 gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:320 -#: gtk/gtkstatusicon.c:253 +#: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 +#: ../gtk/gtkimage.c:326 ../gtk/gtkstatusicon.c:253 msgid "The GIcon being displayed" msgstr "GIcon som skal vises" -#: gtk/gtkaction.c:325 gtk/gtkcellrendererpixbuf.c:180 gtk/gtkimage.c:302 -#: gtk/gtkprinter.c:174 gtk/gtkstatusicon.c:236 gtk/gtkwindow.c:685 +#: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 +#: ../gtk/gtkimage.c:308 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:236 +#: ../gtk/gtkwindow.c:722 msgid "Icon Name" msgstr "Navn på ikon" -#: gtk/gtkaction.c:326 gtk/gtkcellrendererpixbuf.c:181 gtk/gtkimage.c:303 -#: gtk/gtkstatusicon.c:237 +#: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 +#: ../gtk/gtkimage.c:309 ../gtk/gtkstatusicon.c:237 msgid "The name of the icon from the icon theme" msgstr "Navn på ikonet fra ikontemaet" -#: gtk/gtkaction.c:333 gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "Synlig når horisontal" -#: gtk/gtkaction.c:334 gtk/gtktoolitem.c:187 +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 msgid "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." @@ -364,22 +364,22 @@ msgstr "" "Om verktøylinjeoppføringen er synlig når verktøylinjen har horisontal " "orientering." -#: gtk/gtkaction.c:349 +#: ../gtk/gtkaction.c:349 msgid "Visible when overflown" msgstr "Synlig når full" -#: gtk/gtkaction.c:350 +#: ../gtk/gtkaction.c:350 #, fuzzy msgid "" "When TRUE, toolitem proxies for this action are represented in the toolbar " "overflow menu." msgstr "Når TRUE vil tomme menyproxyer for denne handlingen skjules." -#: gtk/gtkaction.c:357 gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "Synlig når vertikal" -#: gtk/gtkaction.c:358 gtk/gtktoolitem.c:194 +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 msgid "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." @@ -387,11 +387,11 @@ msgstr "" "Om verktøylinjeoppføringen er synlig når verktøylinjen har vertikal " "orientering." -#: gtk/gtkaction.c:365 gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "Er viktig" -#: gtk/gtkaction.c:366 +#: ../gtk/gtkaction.c:366 msgid "" "Whether the action is considered important. When TRUE, toolitem proxies for " "this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." @@ -399,37 +399,38 @@ msgstr "" "Om handlingen ses på som viktig. Når denne er satt til TRUE viser proxyer " "for verktøylinjeoppføringene tekst i GTK_TOOLBAR_BOTH_HORIZ-modus." -#: gtk/gtkaction.c:374 +#: ../gtk/gtkaction.c:374 msgid "Hide if empty" msgstr "Skjul hvis tom" -#: gtk/gtkaction.c:375 +#: ../gtk/gtkaction.c:375 msgid "When TRUE, empty menu proxies for this action are hidden." msgstr "Når TRUE vil tomme menyproxyer for denne handlingen skjules." -#: gtk/gtkaction.c:381 gtk/gtkactiongroup.c:235 gtk/gtkcellrenderer.c:242 -#: gtk/gtkwidget.c:754 +#: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 +#: ../gtk/gtkcellrenderer.c:287 ../gtk/gtkwidget.c:933 msgid "Sensitive" msgstr "Følsomt" -#: gtk/gtkaction.c:382 +#: ../gtk/gtkaction.c:382 msgid "Whether the action is enabled." msgstr "Om handlingen er aktivert." -#: gtk/gtkaction.c:388 gtk/gtkactiongroup.c:242 gtk/gtkstatusicon.c:287 -#: gtk/gtktreeviewcolumn.c:195 gtk/gtkwidget.c:747 +#: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 +#: ../gtk/gtkstatusicon.c:287 ../gtk/gtktreeviewcolumn.c:242 +#: ../gtk/gtkwidget.c:926 msgid "Visible" msgstr "Synlig" -#: gtk/gtkaction.c:389 +#: ../gtk/gtkaction.c:389 msgid "Whether the action is visible." msgstr "Om handlingen er synlig" -#: gtk/gtkaction.c:395 +#: ../gtk/gtkaction.c:395 msgid "Action Group" msgstr "Handlingsgruppe" -#: gtk/gtkaction.c:396 +#: ../gtk/gtkaction.c:396 msgid "" "The GtkActionGroup this GtkAction is associated with, or NULL (for internal " "use)." @@ -437,97 +438,97 @@ msgstr "" "GtkActionGroup denne GtkAction er assosiert med, eller NULL (for intern " "bruk)." -#: gtk/gtkaction.c:414 gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:182 msgid "Always show image" msgstr "Alltid vis bilde" -#: gtk/gtkaction.c:415 gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:183 msgid "Whether the image will always be shown" msgstr "Om bildet alltid skal være synlig" -#: gtk/gtkactiongroup.c:229 +#: ../gtk/gtkactiongroup.c:229 msgid "A name for the action group." msgstr "Et navn for handlingsgruppen." -#: gtk/gtkactiongroup.c:236 +#: ../gtk/gtkactiongroup.c:236 msgid "Whether the action group is enabled." msgstr "Om handlingsgruppen er aktivert." -#: gtk/gtkactiongroup.c:243 +#: ../gtk/gtkactiongroup.c:243 msgid "Whether the action group is visible." msgstr "Om handlingsgruppen er synlig" -#: gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:290 msgid "Related Action" msgstr "Relatert handling" -#: gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:291 msgid "The action this activatable will activate and receive updates from" msgstr "" -#: gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:313 msgid "Use Action Appearance" msgstr "" -#: gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:314 #, fuzzy msgid "Whether to use the related actions appearance properties" msgstr "Om etiketteksten kan velges med musen" -#: gtk/gtkadjustment.c:93 gtk/gtkcellrendererprogress.c:126 -#: gtk/gtkscalebutton.c:220 gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:114 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:220 ../gtk/gtkspinbutton.c:290 msgid "Value" msgstr "Verdi" -#: gtk/gtkadjustment.c:94 +#: ../gtk/gtkadjustment.c:115 msgid "The value of the adjustment" msgstr "Verdien for justeringen" -#: gtk/gtkadjustment.c:110 +#: ../gtk/gtkadjustment.c:131 msgid "Minimum Value" msgstr "Minimumsverdi" -#: gtk/gtkadjustment.c:111 +#: ../gtk/gtkadjustment.c:132 msgid "The minimum value of the adjustment" msgstr "Minimumsverdi for justeringen" -#: gtk/gtkadjustment.c:130 +#: ../gtk/gtkadjustment.c:151 msgid "Maximum Value" msgstr "Maksimumsverdi" -#: gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:152 msgid "The maximum value of the adjustment" msgstr "Maksimumsverdi for justeringen" -#: gtk/gtkadjustment.c:147 +#: ../gtk/gtkadjustment.c:168 msgid "Step Increment" msgstr "Størrelse på steg" -#: gtk/gtkadjustment.c:148 +#: ../gtk/gtkadjustment.c:169 msgid "The step increment of the adjustment" msgstr "Størrelse på steg for justeringen" -#: gtk/gtkadjustment.c:164 +#: ../gtk/gtkadjustment.c:185 msgid "Page Increment" msgstr "Størrelse på side" -#: gtk/gtkadjustment.c:165 +#: ../gtk/gtkadjustment.c:186 msgid "The page increment of the adjustment" msgstr "Sidestørrelse for justeringen" -#: gtk/gtkadjustment.c:184 +#: ../gtk/gtkadjustment.c:205 msgid "Page Size" msgstr "Sidestørrelse" -#: gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:206 msgid "The page size of the adjustment" msgstr "Sidestørrelse for justeringen" -#: gtk/gtkalignment.c:123 +#: ../gtk/gtkalignment.c:127 msgid "Horizontal alignment" msgstr "Horisontal justering" -#: gtk/gtkalignment.c:124 gtk/gtkbutton.c:289 +#: ../gtk/gtkalignment.c:128 ../gtk/gtkbutton.c:277 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" @@ -535,11 +536,11 @@ msgstr "" "Horisontal posisjon for barn i tilgjengelig område. 0.0 er venstrejustert, " "1.0 er høyrejustert" -#: gtk/gtkalignment.c:133 +#: ../gtk/gtkalignment.c:137 msgid "Vertical alignment" msgstr "Vertikal justering" -#: gtk/gtkalignment.c:134 gtk/gtkbutton.c:308 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:296 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" @@ -547,11 +548,11 @@ msgstr "" "Vertikal plassering av barn i tilgjengelig område. 0.0 er øverst, 1.0 er " "nederst" -#: gtk/gtkalignment.c:142 +#: ../gtk/gtkalignment.c:146 msgid "Horizontal scale" msgstr "Horisontal skalering" -#: gtk/gtkalignment.c:143 +#: ../gtk/gtkalignment.c:147 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -559,11 +560,11 @@ msgstr "" "Hvor mye av det horisontale området som brukes for barnet hvis det er plass " "til overs. 0.0 betyr ingenting, 1.0 betyr hele" -#: gtk/gtkalignment.c:151 +#: ../gtk/gtkalignment.c:155 msgid "Vertical scale" msgstr "Vertikal skalering" -#: gtk/gtkalignment.c:152 +#: ../gtk/gtkalignment.c:156 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -571,187 +572,187 @@ msgstr "" "Hvor mye av det vertikale området som brukes for barnet hvis det er plass " "til overs. 0.0 betyr ingenting, 1.0 betyr hele" -#: gtk/gtkalignment.c:169 +#: ../gtk/gtkalignment.c:173 msgid "Top Padding" msgstr "Toppfyll" -#: gtk/gtkalignment.c:170 +#: ../gtk/gtkalignment.c:174 msgid "The padding to insert at the top of the widget." msgstr "Fyll som plasseres øverst i komponenten." -#: gtk/gtkalignment.c:186 +#: ../gtk/gtkalignment.c:190 msgid "Bottom Padding" msgstr "Bunnfyll" -#: gtk/gtkalignment.c:187 +#: ../gtk/gtkalignment.c:191 msgid "The padding to insert at the bottom of the widget." msgstr "Fyll som plasseres nederst i komponenten." -#: gtk/gtkalignment.c:203 +#: ../gtk/gtkalignment.c:207 msgid "Left Padding" msgstr "Venstrefyll" -#: gtk/gtkalignment.c:204 +#: ../gtk/gtkalignment.c:208 msgid "The padding to insert at the left of the widget." msgstr "Fyll som plasseres til venstre i komponenten." -#: gtk/gtkalignment.c:220 +#: ../gtk/gtkalignment.c:224 msgid "Right Padding" msgstr "Høyrefyll" -#: gtk/gtkalignment.c:221 +#: ../gtk/gtkalignment.c:225 msgid "The padding to insert at the right of the widget." msgstr "Fyll som plasseres til høyre i komponenten." -#: gtk/gtkarrow.c:110 +#: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Pilretning" -#: gtk/gtkarrow.c:111 +#: ../gtk/gtkarrow.c:111 msgid "The direction the arrow should point" msgstr "Pekeretning for pilen" -#: gtk/gtkarrow.c:119 +#: ../gtk/gtkarrow.c:119 msgid "Arrow shadow" msgstr "Pilens skygge" -#: gtk/gtkarrow.c:120 +#: ../gtk/gtkarrow.c:120 msgid "Appearance of the shadow surrounding the arrow" msgstr "Utseende for skyggen som omgir pilen" -#: gtk/gtkarrow.c:127 gtk/gtkmenu.c:735 gtk/gtkmenuitem.c:396 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:728 ../gtk/gtkmenuitem.c:395 msgid "Arrow Scaling" msgstr "Skalering av piler" -#: gtk/gtkarrow.c:128 +#: ../gtk/gtkarrow.c:128 msgid "Amount of space used up by arrow" msgstr "Mengde plass som brukes av pilen" -#: gtk/gtkaspectframe.c:109 gtk/gtkwidget.c:950 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1121 msgid "Horizontal Alignment" msgstr "Horisontal justering" -#: gtk/gtkaspectframe.c:110 +#: ../gtk/gtkaspectframe.c:110 msgid "X alignment of the child" msgstr "X-justering for barn" -#: gtk/gtkaspectframe.c:116 gtk/gtkwidget.c:966 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1137 msgid "Vertical Alignment" msgstr "Vertikal justering" -#: gtk/gtkaspectframe.c:117 +#: ../gtk/gtkaspectframe.c:117 msgid "Y alignment of the child" msgstr "Y-justering for barn" -#: gtk/gtkaspectframe.c:123 +#: ../gtk/gtkaspectframe.c:123 msgid "Ratio" msgstr "Rate" -#: gtk/gtkaspectframe.c:124 +#: ../gtk/gtkaspectframe.c:124 msgid "Aspect ratio if obey_child is FALSE" msgstr "Aspektrate hvis obey_child er USANN" -#: gtk/gtkaspectframe.c:130 +#: ../gtk/gtkaspectframe.c:130 msgid "Obey child" msgstr "Adlyd barn" -#: gtk/gtkaspectframe.c:131 +#: ../gtk/gtkaspectframe.c:131 msgid "Force aspect ratio to match that of the frame's child" msgstr "Tving aspektraten til å passe til rammens barn" -#: gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:327 msgid "Header Padding" msgstr "Fyll for topptekst" -#: gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:328 msgid "Number of pixels around the header." msgstr "Antall piksler rundt toppteksten." -#: gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:335 msgid "Content Padding" msgstr "Innholdsfyll" -#: gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:336 msgid "Number of pixels around the content pages." msgstr "Antall piksler rundt innholdssidene." -#: gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:352 msgid "Page type" msgstr "Sidetype" -#: gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:353 msgid "The type of the assistant page" msgstr "Type assistentside" -#: gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:370 msgid "Page title" msgstr "Sidetittel" -#: gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:371 msgid "The title of the assistant page" msgstr "Tittelen på assistentsiden" -#: gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:387 msgid "Header image" msgstr "Bilde for topptekst" -#: gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:388 msgid "Header image for the assistant page" msgstr "Bilde til toppteksten på en assistentside" -#: gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image" msgstr "Bilde for sidelinje" -#: gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:405 msgid "Sidebar image for the assistant page" msgstr "Bilde for sidelinje på en assistentside" -#: gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:420 msgid "Page complete" msgstr "Side fullført" -#: gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:421 msgid "Whether all required fields on the page have been filled out" msgstr "Om alle felt som kreves på siden er fylt ut" -#: gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "Minimal bredde for barn" -#: gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "Minimum bredde på knappene inne i boksen" -#: gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "Minimal høyde for barn" -#: gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "Minimum høyde på knappene inne i boksen" -#: gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "Internt breddefyll for barn" -#: gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "Økning av størrelse på barn på hver side" -#: gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "Fyll for barns interne høyde" -#: gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "Hvor mye barnets størrelse skal økes på topp og bunn" -#: gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "Stil for plassering" -#: gtk/gtkbbox.c:172 +#: ../gtk/gtkbbox.c:189 #, fuzzy msgid "" "How to lay out the buttons in the box. Possible values are: spread, edge, " @@ -760,11 +761,11 @@ msgstr "" "Hvordan knappene skal plasseres i boksen. Mulige verdier er forvalgt, spre " "utover, kant, start og slutt" -#: gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "Sekundær" -#: gtk/gtkbbox.c:181 +#: ../gtk/gtkbbox.c:198 msgid "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" @@ -772,38 +773,38 @@ msgstr "" "Hvis SANN vil barnet vises i en sekundær gruppe av barn, passer for eksempel " "til hjelp-knapper" -#: gtk/gtkbox.c:227 gtk/gtkexpander.c:233 gtk/gtkiconview.c:666 -#: gtk/gtktreeviewcolumn.c:220 +#: ../gtk/gtkbox.c:241 ../gtk/gtkexpander.c:231 ../gtk/gtkiconview.c:696 +#: ../gtk/gtktreeviewcolumn.c:267 msgid "Spacing" msgstr "Mellomrom" -#: gtk/gtkbox.c:228 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "Mengde mellomrom mellom barn." -#: gtk/gtkbox.c:237 gtk/gtktable.c:184 gtk/gtktoolbar.c:527 -#: gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolitemgroup.c:1641 msgid "Homogeneous" msgstr "Homogen" -#: gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "Om alle barn skal være av samme størrelse." -#: gtk/gtkbox.c:254 gtk/gtktoolbar.c:519 gtk/gtktoolitemgroup.c:1631 -#: gtk/gtktoolpalette.c:1065 gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtkbox.c:268 ../gtk/gtktoolbar.c:545 ../gtk/gtktoolitemgroup.c:1648 +#: ../gtk/gtktoolpalette.c:1092 ../gtk/gtktreeviewcolumn.c:323 msgid "Expand" msgstr "Utvid" -#: gtk/gtkbox.c:255 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "La etterkommeren få mer plass når opphavet vokser" -#: gtk/gtkbox.c:271 gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1655 msgid "Fill" msgstr "Fyll" -#: gtk/gtkbox.c:272 +#: ../gtk/gtkbox.c:282 msgid "" "Whether extra space given to the child should be allocated to the child or " "used as padding" @@ -811,21 +812,21 @@ msgstr "" "Om ekstra mellomrom som gis til etterkommeren skal allokeres til " "etterkommeren eller brukes som fyll" -#: gtk/gtkbox.c:279 gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:165 msgid "Padding" msgstr "Fyll" -#: gtk/gtkbox.c:280 +#: ../gtk/gtkbox.c:290 msgid "Extra space to put between the child and its neighbors, in pixels" msgstr "" "Ekstra mellomrom som skal plasseres mellom en etterkommer og dens naboer i " "piksler" -#: gtk/gtkbox.c:286 +#: ../gtk/gtkbox.c:296 msgid "Pack type" msgstr "Type pakking" -#: gtk/gtkbox.c:287 gtk/gtknotebook.c:692 +#: ../gtk/gtkbox.c:297 ../gtk/gtknotebook.c:796 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" @@ -833,37 +834,36 @@ msgstr "" "En GtkPackType viser om etterkommeren er pakket med referanse til start " "eller slutt av opphavet" -#: gtk/gtkbox.c:293 gtk/gtknotebook.c:670 gtk/gtkpaned.c:270 -#: gtk/gtkruler.c:158 gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:767 ../gtk/gtkpaned.c:327 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Position" msgstr "Posisjon" -#: gtk/gtkbox.c:294 gtk/gtknotebook.c:671 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:768 msgid "The index of the child in the parent" msgstr "Indeks for etterkommer i opphav" -#: gtk/gtkbuilder.c:315 +#: ../gtk/gtkbuilder.c:314 msgid "Translation Domain" msgstr "Oversettelsesdomene" -#: gtk/gtkbuilder.c:316 +#: ../gtk/gtkbuilder.c:315 msgid "The translation domain used by gettext" msgstr "Oversettelsesdomene som brukes av gettext" -#: gtk/gtkbutton.c:239 +#: ../gtk/gtkbutton.c:227 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" -msgstr "" -"Tekst for etiketten inne i knappen, hvis knappen inneholder en etikett." +msgstr "Tekst for etiketten inne i knappen, hvis knappen inneholder en etikett." -#: gtk/gtkbutton.c:246 gtk/gtkexpander.c:217 gtk/gtklabel.c:570 -#: gtk/gtkmenuitem.c:348 gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:234 ../gtk/gtkexpander.c:215 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:347 ../gtk/gtktoolbutton.c:209 msgid "Use underline" msgstr "Bruk understreking" -#: gtk/gtkbutton.c:247 gtk/gtkexpander.c:218 gtk/gtklabel.c:571 -#: gtk/gtkmenuitem.c:349 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:216 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:348 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -871,70 +871,71 @@ msgstr "" "Hvis satt vil en underscore i teksten indikere at neste tegn skal brukes som " "akselleratorhint" -#: gtk/gtkbutton.c:254 gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:242 ../gtk/gtkimagemenuitem.c:163 msgid "Use stock" msgstr "Bruk lager" -#: gtk/gtkbutton.c:255 +#: ../gtk/gtkbutton.c:243 msgid "" "If set, the label is used to pick a stock item instead of being displayed" msgstr "" "HVis satt brukes etiketten til å velge en standardoppføring i stedet for å " "vises" -#: gtk/gtkbutton.c:262 gtk/gtkcombobox.c:811 gtk/gtkfilechooserbutton.c:385 +#: ../gtk/gtkbutton.c:250 ../gtk/gtkcombobox.c:866 +#: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Fokus ved klikk" -#: gtk/gtkbutton.c:263 gtk/gtkfilechooserbutton.c:386 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Om knappen tar fokus når den klikkes med musen" -#: gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:258 msgid "Border relief" msgstr "Kantrelief" -#: gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:259 msgid "The border relief style" msgstr "Stil for kantrelief" -#: gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:276 msgid "Horizontal alignment for child" msgstr "Horisontal justering for barnet" -#: gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:295 msgid "Vertical alignment for child" msgstr "Vertikal justering for barnet" -#: gtk/gtkbutton.c:324 gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:312 ../gtk/gtkimagemenuitem.c:148 msgid "Image widget" msgstr "Bildewidget" -#: gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:313 msgid "Child widget to appear next to the button text" msgstr "Underelement som skal vises ved siden av knappteksten" -#: gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:327 msgid "Image position" msgstr "Plassering av bilde" -#: gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:328 msgid "The position of the image relative to the text" msgstr "Posisjon for bildet i forhold til teksten" -#: gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:448 msgid "Default Spacing" msgstr "Standard avstand" -#: gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:449 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Ekstra plass som skal legges til for GTK_CAN_DEFAULT-knapper" -#: gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:463 msgid "Default Outside Spacing" msgstr "Forvalgt utvendig mellomrom" -#: gtk/gtkbutton.c:476 +#: ../gtk/gtkbutton.c:464 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" @@ -942,442 +943,449 @@ msgstr "" "Ekstra plass som skal legges til for GTK_CAN_DEFAULT-knapper som alltid " "tegnes utenfor kanten" -#: gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:469 msgid "Child X Displacement" msgstr "X-forskyvning for barn" -#: gtk/gtkbutton.c:482 +#: ../gtk/gtkbutton.c:470 msgid "" "How far in the x direction to move the child when the button is depressed" msgstr "Hvor langt barnet flyttes i x-retning når knappen er nedtrykt" -#: gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:477 msgid "Child Y Displacement" msgstr "Y-forskyvning for barn" -#: gtk/gtkbutton.c:490 +#: ../gtk/gtkbutton.c:478 msgid "" "How far in the y direction to move the child when the button is depressed" msgstr "Hvor langt barnet flyttes i y-retning når knappen er nedtrykt" -#: gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:494 msgid "Displace focus" msgstr "Omplasser fokus" -#: gtk/gtkbutton.c:507 +#: ../gtk/gtkbutton.c:495 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" msgstr "" -#: gtk/gtkbutton.c:520 gtk/gtkentry.c:696 gtk/gtkentry.c:1741 +#: ../gtk/gtkbutton.c:508 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Indre kant" -#: gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:509 msgid "Border between button edges and child." msgstr "Kant mellom knappekanter og barn." -#: gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:522 msgid "Image spacing" msgstr "Mellomrom for bilde" -#: gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:523 msgid "Spacing in pixels between the image and label" msgstr "Mellomrom i piksler mellom bildet og etiketten" -#: gtk/gtkbutton.c:549 -msgid "Show button images" -msgstr "Vis knappebilder" - -#: gtk/gtkbutton.c:550 -msgid "Whether images should be shown on buttons" -msgstr "Om bilder skal vises på knapper" - -#: gtk/gtkcalendar.c:478 +#: ../gtk/gtkcalendar.c:479 msgid "Year" msgstr "År" -#: gtk/gtkcalendar.c:479 +#: ../gtk/gtkcalendar.c:480 msgid "The selected year" msgstr "Valgt år" -#: gtk/gtkcalendar.c:492 +#: ../gtk/gtkcalendar.c:493 msgid "Month" msgstr "Måned" -#: gtk/gtkcalendar.c:493 +#: ../gtk/gtkcalendar.c:494 msgid "The selected month (as a number between 0 and 11)" msgstr "Valgt måned (som et tall mellom 0 og 11)" -#: gtk/gtkcalendar.c:507 +#: ../gtk/gtkcalendar.c:508 msgid "Day" msgstr "Dag" -#: gtk/gtkcalendar.c:508 +#: ../gtk/gtkcalendar.c:509 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" msgstr "" "Valgt dag (som et tall mellom 1 og 31, eller 0 for å velge bort valgt dag)" -#: gtk/gtkcalendar.c:522 +#: ../gtk/gtkcalendar.c:523 msgid "Show Heading" msgstr "Vis topptekst" -#: gtk/gtkcalendar.c:523 +#: ../gtk/gtkcalendar.c:524 msgid "If TRUE, a heading is displayed" msgstr "En topptekst vises hvis denne settes til TRUE" -#: gtk/gtkcalendar.c:537 +#: ../gtk/gtkcalendar.c:538 msgid "Show Day Names" msgstr "Vis navn på dager" -#: gtk/gtkcalendar.c:538 +#: ../gtk/gtkcalendar.c:539 msgid "If TRUE, day names are displayed" msgstr "Dagnavn vises hvis denne settes til TRUE" -#: gtk/gtkcalendar.c:551 +#: ../gtk/gtkcalendar.c:552 msgid "No Month Change" msgstr "Ingen endring i måned" -#: gtk/gtkcalendar.c:552 +#: ../gtk/gtkcalendar.c:553 msgid "If TRUE, the selected month cannot be changed" msgstr "Måned kan ikke endres hvis denne er satt til TRUE" -#: gtk/gtkcalendar.c:566 +#: ../gtk/gtkcalendar.c:567 msgid "Show Week Numbers" msgstr "Vis ukenummer" -#: gtk/gtkcalendar.c:567 +#: ../gtk/gtkcalendar.c:568 msgid "If TRUE, week numbers are displayed" msgstr "Ukenummer vises hvis denne er satt til TRUE" -#: gtk/gtkcalendar.c:582 +#: ../gtk/gtkcalendar.c:583 msgid "Details Width" msgstr "Bredde for detaljer" -#: gtk/gtkcalendar.c:583 +#: ../gtk/gtkcalendar.c:584 msgid "Details width in characters" msgstr "Bredde for detaljer i tegn" -#: gtk/gtkcalendar.c:598 +#: ../gtk/gtkcalendar.c:599 msgid "Details Height" msgstr "Høyde for detaljer" -#: gtk/gtkcalendar.c:599 +#: ../gtk/gtkcalendar.c:600 msgid "Details height in rows" msgstr "Høyde for detaljer i rader" -#: gtk/gtkcalendar.c:615 +#: ../gtk/gtkcalendar.c:616 msgid "Show Details" msgstr "Vis detaljer" -#: gtk/gtkcalendar.c:616 +#: ../gtk/gtkcalendar.c:617 msgid "If TRUE, details are shown" msgstr "Detaljer vises hvis denne settes til TRUE" -#: gtk/gtkcalendar.c:628 +#: ../gtk/gtkcalendar.c:629 #, fuzzy msgid "Inner border" msgstr "Indre kant" -#: gtk/gtkcalendar.c:629 +#: ../gtk/gtkcalendar.c:630 #, fuzzy msgid "Inner border space" msgstr "Indre kant" -#: gtk/gtkcalendar.c:640 +#: ../gtk/gtkcalendar.c:641 #, fuzzy msgid "Vertical separation" msgstr "Vertikale alternativer" -#: gtk/gtkcalendar.c:641 +#: ../gtk/gtkcalendar.c:642 #, fuzzy msgid "Space between day headers and main area" msgstr "Tomrom rundt utviderpilen" -#: gtk/gtkcalendar.c:652 +#: ../gtk/gtkcalendar.c:653 #, fuzzy msgid "Horizontal separation" msgstr "Horisontale alternativer" -#: gtk/gtkcalendar.c:653 +#: ../gtk/gtkcalendar.c:654 #, fuzzy msgid "Space between week headers and main area" msgstr "Mellomrom mellom elementene i hovedområdet i dialogen" -#: gtk/gtkcelleditable.c:53 +#: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Redigering avbrutt" -#: gtk/gtkcelleditable.c:54 +#: ../gtk/gtkcelleditable.c:54 msgid "Indicates that editing has been canceled" msgstr "Indikerer at redigering er avbrutt" -#: gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "Accelerator key" msgstr "Akselleratortast" -#: gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:139 msgid "The keyval of the accelerator" msgstr "Tastaturverdien for hurtigtasten" -#: gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "Accelerator modifiers" msgstr "Endringstaster for hurtigtast" -#: gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:156 msgid "The modifier mask of the accelerator" msgstr "Maske for endringstaster for hurtigtasten" -#: gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "Accelerator keycode" msgstr "Tastekode for hurtigtast" -#: gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:174 msgid "The hardware keycode of the accelerator" msgstr "Maskinvaretastekode for hurtigtast" -#: gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "Accelerator Mode" msgstr "Akselleratormodus" -#: gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:194 msgid "The type of accelerators" msgstr "Type akselleratorer" -#: gtk/gtkcellrenderer.c:226 +#: ../gtk/gtkcellrenderer.c:271 msgid "mode" msgstr "modus" -#: gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:272 msgid "Editable mode of the CellRenderer" msgstr "Redigerbart modus for CellRenderer" -#: gtk/gtkcellrenderer.c:235 +#: ../gtk/gtkcellrenderer.c:280 msgid "visible" msgstr "synlig" -#: gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:281 msgid "Display the cell" msgstr "Vis cellen" -#: gtk/gtkcellrenderer.c:243 +#: ../gtk/gtkcellrenderer.c:288 msgid "Display the cell sensitive" msgstr "Vis cellen sensitiv" -#: gtk/gtkcellrenderer.c:250 +#: ../gtk/gtkcellrenderer.c:295 msgid "xalign" msgstr "xalign" -#: gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:296 msgid "The x-align" msgstr "X-justering" -#: gtk/gtkcellrenderer.c:260 +#: ../gtk/gtkcellrenderer.c:305 msgid "yalign" msgstr "yalign" -#: gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:306 msgid "The y-align" msgstr "Y-justering" -#: gtk/gtkcellrenderer.c:270 +#: ../gtk/gtkcellrenderer.c:315 msgid "xpad" msgstr "x-fyll" -#: gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:316 msgid "The xpad" msgstr "X-fyll" -#: gtk/gtkcellrenderer.c:280 +#: ../gtk/gtkcellrenderer.c:325 msgid "ypad" msgstr "y-fyll" -#: gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:326 msgid "The ypad" msgstr "Y-fyll" -#: gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:335 msgid "width" msgstr "bredde" -#: gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:336 msgid "The fixed width" msgstr "Den faste bredden" -#: gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:345 msgid "height" msgstr "høyde" -#: gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:346 msgid "The fixed height" msgstr "Den faste høyden" -#: gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:355 msgid "Is Expander" msgstr "Er utvider" -#: gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:356 msgid "Row has children" msgstr "Rad har etterkommere" -#: gtk/gtkcellrenderer.c:319 +#: ../gtk/gtkcellrenderer.c:364 msgid "Is Expanded" msgstr "Er utvidet" -#: gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:365 msgid "Row is an expander row, and is expanded" msgstr "Raden er en utvider-rad, og er utvidet" -#: gtk/gtkcellrenderer.c:327 +#: ../gtk/gtkcellrenderer.c:372 msgid "Cell background color name" msgstr "Navn på bakgrunnsfarge for celle" -#: gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color as a string" msgstr "Bakgrunnsfarge for celle som en streng" -#: gtk/gtkcellrenderer.c:335 +#: ../gtk/gtkcellrenderer.c:380 msgid "Cell background color" msgstr "Bakgrunnsfarge for celle" -#: gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color as a GdkColor" msgstr "Bakgrunnsfarge for celle som en GdkColor" -#: gtk/gtkcellrenderer.c:343 +#: ../gtk/gtkcellrenderer.c:394 +#, fuzzy +#| msgid "Cell background color" +msgid "Cell background RGBA color" +msgstr "Bakgrunnsfarge for celle" + +#: ../gtk/gtkcellrenderer.c:395 +#, fuzzy +#| msgid "Cell background color as a GdkColor" +msgid "Cell background color as a GdkRGBA" +msgstr "Bakgrunnsfarge for celle som en GdkColor" + +#: ../gtk/gtkcellrenderer.c:402 msgid "Editing" msgstr "Redigerer" -#: gtk/gtkcellrenderer.c:344 +#: ../gtk/gtkcellrenderer.c:403 #, fuzzy msgid "Whether the cell renderer is currently in editing mode" msgstr "Om etiketten er i singellinjemodus" -#: gtk/gtkcellrenderer.c:352 +#: ../gtk/gtkcellrenderer.c:411 msgid "Cell background set" msgstr "Bakgrunn for celle satt" -#: gtk/gtkcellrenderer.c:353 +#: ../gtk/gtkcellrenderer.c:412 msgid "Whether this tag affects the cell background color" msgstr "Om denne merkingen påvirker bakgrunnsfargen for cellen" -#: gtk/gtkcellrenderercombo.c:110 +#: ../gtk/gtkcellrenderercombo.c:109 msgid "Model" msgstr "Modell" -#: gtk/gtkcellrenderercombo.c:111 +#: ../gtk/gtkcellrenderercombo.c:110 msgid "The model containing the possible values for the combo box" msgstr "Modellen som inneholder de mulige verdiene for kombinasjonsboksen" -#: gtk/gtkcellrenderercombo.c:133 gtk/gtkcomboboxentry.c:104 +#: ../gtk/gtkcellrenderercombo.c:132 msgid "Text Column" msgstr "Tekstkolonne" -#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcomboboxentry.c:105 +#: ../gtk/gtkcellrenderercombo.c:133 msgid "A column in the data source model to get the strings from" msgstr "En kolonne i datakildemodellen hvor man kan hente strenger" -#: gtk/gtkcellrenderercombo.c:151 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:933 msgid "Has Entry" msgstr "Har inntastingsfelt" -#: gtk/gtkcellrenderercombo.c:152 +#: ../gtk/gtkcellrenderercombo.c:151 msgid "If FALSE, don't allow to enter strings other than the chosen ones" msgstr "Hvis «FALSE», ikke tillat å skrive inn strenger utenom de valgte" -#: gtk/gtkcellrendererpixbuf.c:120 +#: ../gtk/gtkcellrendererpixbuf.c:120 msgid "Pixbuf Object" msgstr "Pixbuf-objekt" -#: gtk/gtkcellrendererpixbuf.c:121 +#: ../gtk/gtkcellrendererpixbuf.c:121 msgid "The pixbuf to render" msgstr "Pixbuf som skal rendres" -#: gtk/gtkcellrendererpixbuf.c:128 +#: ../gtk/gtkcellrendererpixbuf.c:128 msgid "Pixbuf Expander Open" msgstr "Pixbuf for åpen utvider" -#: gtk/gtkcellrendererpixbuf.c:129 +#: ../gtk/gtkcellrendererpixbuf.c:129 msgid "Pixbuf for open expander" msgstr "Pixbuf for åpen utvider" -#: gtk/gtkcellrendererpixbuf.c:136 +#: ../gtk/gtkcellrendererpixbuf.c:136 msgid "Pixbuf Expander Closed" msgstr "Pixbuf for lukket utvider" -#: gtk/gtkcellrendererpixbuf.c:137 +#: ../gtk/gtkcellrendererpixbuf.c:137 msgid "Pixbuf for closed expander" msgstr "Pixbuf for lukket utvider" -#: gtk/gtkcellrendererpixbuf.c:144 gtk/gtkimage.c:244 gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:250 +#: ../gtk/gtkstatusicon.c:228 msgid "Stock ID" msgstr "Standard ID" -#: gtk/gtkcellrendererpixbuf.c:145 +#: ../gtk/gtkcellrendererpixbuf.c:145 msgid "The stock ID of the stock icon to render" msgstr "Standard-ID for standardikon som skal rendres" -#: gtk/gtkcellrendererpixbuf.c:152 gtk/gtkcellrendererspinner.c:153 -#: gtk/gtkrecentmanager.c:305 gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:153 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:269 msgid "Size" msgstr "Størrelse" -#: gtk/gtkcellrendererpixbuf.c:153 +#: ../gtk/gtkcellrendererpixbuf.c:153 msgid "The GtkIconSize value that specifies the size of the rendered icon" msgstr "Verdien for GtkIconSize som spesifiserer størrelsen for rendret ikon" -#: gtk/gtkcellrendererpixbuf.c:162 +#: ../gtk/gtkcellrendererpixbuf.c:162 msgid "Detail" msgstr "Detalj" -#: gtk/gtkcellrendererpixbuf.c:163 +#: ../gtk/gtkcellrendererpixbuf.c:163 msgid "Render detail to pass to the theme engine" msgstr "Rendringsdetalj som skal sendes til temamotor" -#: gtk/gtkcellrendererpixbuf.c:196 +#: ../gtk/gtkcellrendererpixbuf.c:196 msgid "Follow State" msgstr "Følg tilstand" -#: gtk/gtkcellrendererpixbuf.c:197 +#: ../gtk/gtkcellrendererpixbuf.c:197 msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Om den tegnede «pixbuf»-en skal bli farget i samsvar med tilstanden" -#: gtk/gtkcellrendererpixbuf.c:214 gtk/gtkimage.c:319 gtk/gtkwindow.c:662 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:325 +#: ../gtk/gtkwindow.c:699 msgid "Icon" msgstr "Ikon" -#: gtk/gtkcellrendererprogress.c:127 +#: ../gtk/gtkcellrendererprogress.c:127 msgid "Value of the progress bar" msgstr "Verdi for fremgangsmåleren" -#: gtk/gtkcellrendererprogress.c:144 gtk/gtkcellrenderertext.c:231 -#: gtk/gtkentry.c:739 gtk/gtkentrybuffer.c:352 gtk/gtkmessagedialog.c:226 -#: gtk/gtkprogressbar.c:150 gtk/gtktextbuffer.c:210 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:226 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:209 msgid "Text" msgstr "Tekst" -#: gtk/gtkcellrendererprogress.c:145 +#: ../gtk/gtkcellrendererprogress.c:145 msgid "Text on the progress bar" msgstr "Tekst på fremgangsmåleren" -#: gtk/gtkcellrendererprogress.c:168 gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:139 msgid "Pulse" msgstr "Puls" -#: gtk/gtkcellrendererprogress.c:169 +#: ../gtk/gtkcellrendererprogress.c:169 msgid "" "Set this to positive values to indicate that some progress is made, but you " "don't know how much." msgstr "" -#: gtk/gtkcellrendererprogress.c:185 +#: ../gtk/gtkcellrendererprogress.c:185 msgid "Text x alignment" msgstr "X-justering for tekst" -#: gtk/gtkcellrendererprogress.c:186 +#: ../gtk/gtkcellrendererprogress.c:186 msgid "" "The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -1385,235 +1393,265 @@ msgstr "" "Horisontal tekstjustering, fra 0 (venstre) til 1 (høyre). Omvendt for RTL-" "utforminger." -#: gtk/gtkcellrendererprogress.c:202 +#: ../gtk/gtkcellrendererprogress.c:202 msgid "Text y alignment" msgstr "Y-justering for tekst" -#: gtk/gtkcellrendererprogress.c:203 +#: ../gtk/gtkcellrendererprogress.c:203 msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "Vertikal tekstjustering, fra 0 (øverst) til 1 (nederst)." -#: gtk/gtkcellrendererprogress.c:214 gtk/gtkprogressbar.c:126 -#: gtk/gtkrange.c:427 +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:439 msgid "Inverted" msgstr "Invertert" -#: gtk/gtkcellrendererprogress.c:215 gtk/gtkprogressbar.c:127 +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 #, fuzzy msgid "Invert the direction in which the progress bar grows" msgstr "Orientering og vekstretning for fremgangsmåleren" -#: gtk/gtkcellrendererspin.c:91 gtk/gtkrange.c:419 gtk/gtkscalebutton.c:239 -#: gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:431 +#: ../gtk/gtkscalebutton.c:239 ../gtk/gtkspinbutton.c:229 msgid "Adjustment" msgstr "Justering" -#: gtk/gtkcellrendererspin.c:92 gtk/gtkspinbutton.c:229 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:230 #, fuzzy msgid "The adjustment that holds the value of the spin button" msgstr "Justeringen som innehar verdien for en «spinbutton»" -#: gtk/gtkcellrendererspin.c:107 +#: ../gtk/gtkcellrendererspin.c:107 msgid "Climb rate" msgstr "Klatrerate" -#: gtk/gtkcellrendererspin.c:108 gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:238 msgid "The acceleration rate when you hold down a button" msgstr "Akselleratorrate når du holder nede en knapp" -#: gtk/gtkcellrendererspin.c:121 gtk/gtkscale.c:244 gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:247 msgid "Digits" msgstr "Tall" -#: gtk/gtkcellrendererspin.c:122 gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:248 msgid "The number of decimal places to display" msgstr "Antall desimalplasser som skal vises" -#: gtk/gtkcellrendererspinner.c:119 gtk/gtkcheckmenuitem.c:105 -#: gtk/gtkmenu.c:525 gtk/gtkspinner.c:131 gtk/gtktoggleaction.c:133 -#: gtk/gtktogglebutton.c:115 gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:105 +#: ../gtk/gtkmenu.c:518 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:738 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "Aktiv" -#: gtk/gtkcellrendererspinner.c:120 +#: ../gtk/gtkcellrendererspinner.c:120 #, fuzzy msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Om valgt skriftstil vises i etiketten" -#: gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:140 #, fuzzy msgid "Pulse of the spinner" msgstr "Navn på skriveren" -#: gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:154 #, fuzzy msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "Verdien for GtkIconSize som spesifiserer størrelsen for rendret ikon" -#: gtk/gtkcellrenderertext.c:232 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Tekst som skal rendres" -#: gtk/gtkcellrenderertext.c:239 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Tagging" -#: gtk/gtkcellrenderertext.c:240 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Tagget tekst som skal rendres" -#: gtk/gtkcellrenderertext.c:247 gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Attributter" -#: gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "En liste med stilattributter som skal brukes på teksten som rendres" -#: gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Modus for enkelt avsnitt" -#: gtk/gtkcellrenderertext.c:256 +#: ../gtk/gtkcellrenderertext.c:280 #, fuzzy msgid "Whether to keep all text in a single paragraph" msgstr "Om all tekst skal holdes i ett enkelt avsnitt eller ikke" -#: gtk/gtkcellrenderertext.c:264 gtk/gtkcellview.c:178 gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:192 +#: ../gtk/gtktexttag.c:178 msgid "Background color name" msgstr "Navn på bakgrunnsfarge" -#: gtk/gtkcellrenderertext.c:265 gtk/gtkcellview.c:179 gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:193 +#: ../gtk/gtktexttag.c:179 msgid "Background color as a string" msgstr "Bakgrunnsfarge som en streng" -#: gtk/gtkcellrenderertext.c:272 gtk/gtkcellview.c:185 gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:199 +#: ../gtk/gtktexttag.c:186 msgid "Background color" msgstr "Bakgrunnsfarge" -#: gtk/gtkcellrenderertext.c:273 gtk/gtkcellview.c:186 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:200 msgid "Background color as a GdkColor" msgstr "Bakgrunnsfarge som en GdkColor" -#: gtk/gtkcellrenderertext.c:280 gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:311 +#, fuzzy +#| msgid "Background color name" +msgid "Background color as RGBA" +msgstr "Navn på bakgrunnsfarge" + +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:214 +#, fuzzy +#| msgid "Background color as a GdkColor" +msgid "Background color as a GdkRGBA" +msgstr "Bakgrunnsfarge som en GdkColor" + +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:202 msgid "Foreground color name" msgstr "Navn på forgrunnsfarge" -#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:203 msgid "Foreground color as a string" msgstr "Forgrunnsfarge som en streng" -#: gtk/gtkcellrenderertext.c:288 gtk/gtktexttag.c:210 -#: gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:210 +#: ../gtk/gtktrayicon-x11.c:133 msgid "Foreground color" msgstr "Forgrunnsfarge" -#: gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Forgrunnsfarge som en GdkColor" -#: gtk/gtkcellrenderertext.c:297 gtk/gtkentry.c:663 gtk/gtktexttag.c:227 -#: gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:341 +#, fuzzy +#| msgid "Foreground color name" +msgid "Foreground color as RGBA" +msgstr "Navn på forgrunnsfarge" + +#: ../gtk/gtkcellrenderertext.c:342 +#, fuzzy +#| msgid "Foreground color as a GdkColor" +msgid "Foreground color as a GdkRGBA" +msgstr "Forgrunnsfarge som en GdkColor" + +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:227 ../gtk/gtktextview.c:684 msgid "Editable" msgstr "Redigerbar" -#: gtk/gtkcellrenderertext.c:298 gtk/gtktexttag.c:228 gtk/gtktextview.c:669 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:228 +#: ../gtk/gtktextview.c:685 msgid "Whether the text can be modified by the user" msgstr "Om teksten kan endres av brukeren" -#: gtk/gtkcellrenderertext.c:305 gtk/gtkcellrenderertext.c:313 -#: gtk/gtktexttag.c:243 gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:243 ../gtk/gtktexttag.c:251 msgid "Font" msgstr "Skrift" -#: gtk/gtkcellrenderertext.c:306 gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:244 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "Beskrivelse av skriften som en streng, f.eks «Sans Italic 12»" -#: gtk/gtkcellrenderertext.c:314 gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:252 msgid "Font description as a PangoFontDescription struct" msgstr "Skriftbeskrivelse som en PangoFontDescription struct" -#: gtk/gtkcellrenderertext.c:322 gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:259 msgid "Font family" msgstr "Skriftfamilie" -#: gtk/gtkcellrenderertext.c:323 gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:260 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "Navn på skriftfamilien, f.eks Sans, Helvetica, Times, Monospace" -#: gtk/gtkcellrenderertext.c:330 gtk/gtkcellrenderertext.c:331 -#: gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:267 msgid "Font style" msgstr "Skriftstil" -#: gtk/gtkcellrenderertext.c:339 gtk/gtkcellrenderertext.c:340 -#: gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:276 msgid "Font variant" msgstr "Skriftvariant" -#: gtk/gtkcellrenderertext.c:348 gtk/gtkcellrenderertext.c:349 -#: gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:285 msgid "Font weight" msgstr "Skriftens vekt" -#: gtk/gtkcellrenderertext.c:358 gtk/gtkcellrenderertext.c:359 -#: gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:296 msgid "Font stretch" msgstr "Skriftens \"strekk\"" -#: gtk/gtkcellrenderertext.c:367 gtk/gtkcellrenderertext.c:368 -#: gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:305 msgid "Font size" msgstr "Skriftstørrelse" -#: gtk/gtkcellrenderertext.c:377 gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:325 msgid "Font points" msgstr "Skriftpunkter" -#: gtk/gtkcellrenderertext.c:378 gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:326 msgid "Font size in points" msgstr "Størrelse på skrift i punkter" -#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:315 msgid "Font scale" msgstr "Skriftskalering" -#: gtk/gtkcellrenderertext.c:388 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Skaleringsfaktor for skrift" -#: gtk/gtkcellrenderertext.c:397 gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:394 msgid "Rise" msgstr "Hev" -#: gtk/gtkcellrenderertext.c:398 +#: ../gtk/gtkcellrenderertext.c:451 msgid "" "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "" "Tekstavstand over grunnlinjen (under grunnlinjen hvis hevingen er negativ)" -#: gtk/gtkcellrenderertext.c:409 gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:434 msgid "Strikethrough" msgstr "Gjennomstreking" -#: gtk/gtkcellrenderertext.c:410 gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:435 msgid "Whether to strike through the text" msgstr "Bruk gjennomstreking av teksten" -#: gtk/gtkcellrenderertext.c:417 gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:442 msgid "Underline" msgstr "Understrek" -#: gtk/gtkcellrenderertext.c:418 gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:443 msgid "Style of underline for this text" msgstr "Stil for understreking av denne teksten." -#: gtk/gtkcellrenderertext.c:426 gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:354 msgid "Language" msgstr "Språk" -#: gtk/gtkcellrenderertext.c:427 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1623,11 +1661,12 @@ msgstr "" "som et hint når teksten rendres. Hvis du ikke forstår denne parameteren " "trenger du den sannsynligvis ikke" -#: gtk/gtkcellrenderertext.c:447 gtk/gtklabel.c:681 gtk/gtkprogressbar.c:180 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:207 msgid "Ellipsize" msgstr "Forkort" -#: gtk/gtkcellrenderertext.c:448 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" @@ -1635,29 +1674,29 @@ msgstr "" "Det prioriterte stedet å forkorte strengen hvis celletegneren ikke har nok " "plass til å vise hele strengen" -#: gtk/gtkcellrenderertext.c:467 gtk/gtkfilechooserbutton.c:413 -#: gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Bredde i tegn" -#: gtk/gtkcellrenderertext.c:468 gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "Den ønskede bredden på merkelappen, i tegn" -#: gtk/gtkcellrenderertext.c:492 gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Maksimal bredde i tegn" -#: gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:546 #, fuzzy msgid "The maximum width of the cell, in characters" msgstr "Den ønskede maksimale bredden til merkelappen, i tegn" -#: gtk/gtkcellrenderertext.c:511 gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:451 msgid "Wrap mode" msgstr "Brytningsmodus" -#: gtk/gtkcellrenderertext.c:512 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1665,574 +1704,651 @@ msgstr "" "Hvordan strenger skal splittes på flere linjer hvis celletegneren ikke har " "nok plass til å vise hele strengen" -#: gtk/gtkcellrenderertext.c:531 gtk/gtkcombobox.c:700 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:755 msgid "Wrap width" msgstr "Bredde for bryting" -#: gtk/gtkcellrenderertext.c:532 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "Bredden som teksten blir pakket inn i" -#: gtk/gtkcellrenderertext.c:552 gtk/gtktreeviewcolumn.c:301 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:348 msgid "Alignment" msgstr "Justering" -#: gtk/gtkcellrenderertext.c:553 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "Hvordan linjene justeres" -#: gtk/gtkcellrenderertext.c:565 gtk/gtkcellview.c:208 gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:236 +#: ../gtk/gtktexttag.c:540 msgid "Background set" msgstr "Bakgrunn satt" -#: gtk/gtkcellrenderertext.c:566 gtk/gtkcellview.c:209 gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:237 +#: ../gtk/gtktexttag.c:541 msgid "Whether this tag affects the background color" msgstr "Om denne merkingen påvirker bakgrunnsfargen" -#: gtk/gtkcellrenderertext.c:569 gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:548 msgid "Foreground set" msgstr "Forgrunn satt" -#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:549 msgid "Whether this tag affects the foreground color" msgstr "Om denne merkingen påvirker forgrunnsfargen" -#: gtk/gtkcellrenderertext.c:573 gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:552 msgid "Editability set" msgstr "Redigerbarhet satt" -#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:553 msgid "Whether this tag affects text editability" msgstr "Om denne merkingen påvirker redigerbarhet for teksten" -#: gtk/gtkcellrenderertext.c:577 gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:556 msgid "Font family set" msgstr "Skriftfamilie satt" -#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:557 msgid "Whether this tag affects the font family" msgstr "Om denne merkingen påvirker skriftfamilien" -#: gtk/gtkcellrenderertext.c:581 gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:560 msgid "Font style set" msgstr "Skriftstil satt" -#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:561 msgid "Whether this tag affects the font style" msgstr "Om denne merkingen påvirker skriftstil" -#: gtk/gtkcellrenderertext.c:585 gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:564 msgid "Font variant set" msgstr "Skrifttypevariant satt" -#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:565 msgid "Whether this tag affects the font variant" msgstr "Om denne merkingen påvirker skriftvarianten" -#: gtk/gtkcellrenderertext.c:589 gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:568 msgid "Font weight set" msgstr "Skrifttyngde satt" -#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:569 msgid "Whether this tag affects the font weight" msgstr "Om denne merkingen påvirker skrifttyngden" -#: gtk/gtkcellrenderertext.c:593 gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:572 msgid "Font stretch set" msgstr "Skriftstrekk satt" -#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:573 msgid "Whether this tag affects the font stretch" msgstr "Om denne merkingen påvirker strekking av skriften" -#: gtk/gtkcellrenderertext.c:597 gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:576 msgid "Font size set" msgstr "Skriftstørrelse satt" -#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:577 msgid "Whether this tag affects the font size" msgstr "Om denne merkingen påvirker skriftstørrelsen" -#: gtk/gtkcellrenderertext.c:601 gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:580 msgid "Font scale set" msgstr "Skriftskalering satt" -#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:581 msgid "Whether this tag scales the font size by a factor" msgstr "Om denne merkingen skalerer skriftstørrelsen med en gitt faktor" -#: gtk/gtkcellrenderertext.c:605 gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:600 msgid "Rise set" msgstr "Heving satt" -#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:601 msgid "Whether this tag affects the rise" msgstr "Om denne merkingen påvirker heving" -#: gtk/gtkcellrenderertext.c:609 gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:616 msgid "Strikethrough set" msgstr "Gjennomstreking satt" -#: gtk/gtkcellrenderertext.c:610 gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:617 msgid "Whether this tag affects strikethrough" msgstr "Om denne merkingen påvirker gjennomstreking" -#: gtk/gtkcellrenderertext.c:613 gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:624 msgid "Underline set" msgstr "Understreking satt" -#: gtk/gtkcellrenderertext.c:614 gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:625 msgid "Whether this tag affects underlining" msgstr "Om denne merkingen påvirker understreking" -#: gtk/gtkcellrenderertext.c:617 gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:588 msgid "Language set" msgstr "Språk satt" -#: gtk/gtkcellrenderertext.c:618 gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:589 msgid "Whether this tag affects the language the text is rendered as" msgstr "Om denne merkingen påvirker språket teksten skal rendres som" -#: gtk/gtkcellrenderertext.c:621 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Forkort sett" -#: gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Om denne merkingen påvirker avkortingsmodus" -#: gtk/gtkcellrenderertext.c:625 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Justering satt" -#: gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Om denne merkingen påvirker justeringsmodus" -#: gtk/gtkcellrenderertoggle.c:128 +#: ../gtk/gtkcellrenderertoggle.c:128 msgid "Toggle state" msgstr "Knappetilstand" -#: gtk/gtkcellrenderertoggle.c:129 +#: ../gtk/gtkcellrenderertoggle.c:129 msgid "The toggle state of the button" msgstr "Tilstand for knapp (vending)" -#: gtk/gtkcellrenderertoggle.c:136 +#: ../gtk/gtkcellrenderertoggle.c:136 msgid "Inconsistent state" msgstr "Ukonsistent tilstand" -#: gtk/gtkcellrenderertoggle.c:137 +#: ../gtk/gtkcellrenderertoggle.c:137 msgid "The inconsistent state of the button" msgstr "Den ukonsistente tilstanden for knappen" -#: gtk/gtkcellrenderertoggle.c:144 +#: ../gtk/gtkcellrenderertoggle.c:144 msgid "Activatable" msgstr "Aktiverbar" -#: gtk/gtkcellrenderertoggle.c:145 +#: ../gtk/gtkcellrenderertoggle.c:145 msgid "The toggle button can be activated" msgstr "Venderknappen kan aktiveres" -#: gtk/gtkcellrenderertoggle.c:152 +#: ../gtk/gtkcellrenderertoggle.c:152 msgid "Radio state" msgstr "Radiotilstand" -#: gtk/gtkcellrenderertoggle.c:153 +#: ../gtk/gtkcellrenderertoggle.c:153 msgid "Draw the toggle button as a radio button" msgstr "Tegn knapp for vending som en radioknapp" -#: gtk/gtkcellrenderertoggle.c:160 +#: ../gtk/gtkcellrenderertoggle.c:160 msgid "Indicator size" msgstr "Indikatorstørrelse" -#: gtk/gtkcellrenderertoggle.c:161 gtk/gtkcheckbutton.c:72 -#: gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:129 msgid "Size of check or radio indicator" msgstr "Størrelse på avkrysnings- eller radioindikator" -#: gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:213 +#, fuzzy +#| msgid "Background color" +msgid "Background RGBA color" +msgstr "Bakgrunnsfarge" + +#: ../gtk/gtkcellview.c:228 msgid "CellView model" msgstr "CellView-modell" -#: gtk/gtkcellview.c:201 +#: ../gtk/gtkcellview.c:229 msgid "The model for cell view" msgstr "Modellen for cellevisning" -#: gtk/gtkcheckbutton.c:71 gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:128 msgid "Indicator Size" msgstr "Indikatorstørrelse" -#: gtk/gtkcheckbutton.c:79 gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:265 msgid "Indicator Spacing" msgstr "Mellomrom for indikator" -#: gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "Mellomrom rundt avkrysnings- eller radioindikator" -#: gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:106 msgid "Whether the menu item is checked" msgstr "Om menyoppføringen er avkrysset" -#: gtk/gtkcheckmenuitem.c:113 gtk/gtktogglebutton.c:123 +#: ../gtk/gtkcheckmenuitem.c:113 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inkonsistent" -#: gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:114 msgid "Whether to display an \"inconsistent\" state" msgstr "Om inkonsistent tilstand skal anvises" -#: gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:121 msgid "Draw as radio menu item" msgstr "Tegn som radiomenyoppføring" -#: gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Whether the menu item looks like a radio menu item" msgstr "Om menyoppføringen ser ut som en radiomenyoppføring" -#: gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:171 msgid "Use alpha" msgstr "Bruk alpha" -#: gtk/gtkcolorbutton.c:160 +#: ../gtk/gtkcolorbutton.c:172 #, fuzzy msgid "Whether to give the color an alpha value" msgstr "Om fargen skal få en alphaverdi eller ikke" -#: gtk/gtkcolorbutton.c:174 gtk/gtkfilechooserbutton.c:399 -#: gtk/gtkfontbutton.c:140 gtk/gtkprintjob.c:115 gtk/gtkstatusicon.c:415 -#: gtk/gtktreeviewcolumn.c:268 +#: ../gtk/gtkcolorbutton.c:186 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:126 +#: ../gtk/gtkstatusicon.c:415 ../gtk/gtktreeviewcolumn.c:315 msgid "Title" msgstr "Tittel" -#: gtk/gtkcolorbutton.c:175 +#: ../gtk/gtkcolorbutton.c:187 msgid "The title of the color selection dialog" msgstr "Tittel på dialogen for fargevalg" -#: gtk/gtkcolorbutton.c:189 gtk/gtkcolorsel.c:323 +#: ../gtk/gtkcolorbutton.c:201 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Aktiv farge" -#: gtk/gtkcolorbutton.c:190 +#: ../gtk/gtkcolorbutton.c:202 msgid "The selected color" msgstr "Valgt farge" -#: gtk/gtkcolorbutton.c:204 gtk/gtkcolorsel.c:330 +#: ../gtk/gtkcolorbutton.c:216 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Nåværende alpha" -#: gtk/gtkcolorbutton.c:205 +#: ../gtk/gtkcolorbutton.c:217 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "Nåværende verdi for ugjennomsiktighet (0 helt gjennomsiktig, 65535 helt " "ugjennomsiktig)" -#: gtk/gtkcolorsel.c:309 +#: ../gtk/gtkcolorbutton.c:231 +#, fuzzy +#| msgid "Current Color" +msgid "Current RGBA Color" +msgstr "Aktiv farge" + +#: ../gtk/gtkcolorbutton.c:232 +#, fuzzy +#| msgid "The selected color" +msgid "The selected RGBA color" +msgstr "Valgt farge" + +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Har kontroll for ugjennomsiktighet" -#: gtk/gtkcolorsel.c:310 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "La fargevelgeren tillate å sette ugjennomsiktighet" -#: gtk/gtkcolorsel.c:316 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Har palett" -#: gtk/gtkcolorsel.c:317 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Skal en palett brukes" -#: gtk/gtkcolorsel.c:324 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "Den aktive fargen" -#: gtk/gtkcolorsel.c:331 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "" "Nåværende verdi for ugjennomsiktighet (0 helt gjennomsiktig, 65535 helt " "ugjennomsiktig)" -#: gtk/gtkcolorsel.c:345 -msgid "Custom palette" -msgstr "Egendefinert palett" +#: ../gtk/gtkcolorsel.c:360 +#, fuzzy +#| msgid "Current Alpha" +msgid "Current RGBA" +msgstr "Nåværende alpha" -#: gtk/gtkcolorsel.c:346 -msgid "Palette to use in the color selector" -msgstr "Palett som skal brukes i fargevelgeren" +#: ../gtk/gtkcolorsel.c:361 +#, fuzzy +#| msgid "The current color" +msgid "The current RGBA color" +msgstr "Den aktive fargen" -#: gtk/gtkcolorseldialog.c:110 +#: ../gtk/gtkcolorseldialog.c:110 msgid "Color Selection" msgstr "Fargeutvalg" -#: gtk/gtkcolorseldialog.c:111 +#: ../gtk/gtkcolorseldialog.c:111 msgid "The color selection embedded in the dialog." msgstr "Fargevalg innebygget i dialogen." -#: gtk/gtkcolorseldialog.c:117 +#: ../gtk/gtkcolorseldialog.c:117 msgid "OK Button" msgstr "OK-knapp" -#: gtk/gtkcolorseldialog.c:118 +#: ../gtk/gtkcolorseldialog.c:118 msgid "The OK button of the dialog." msgstr "OK-knappen i dialogen." -#: gtk/gtkcolorseldialog.c:124 +#: ../gtk/gtkcolorseldialog.c:124 msgid "Cancel Button" msgstr "Avbryt-knapp" -#: gtk/gtkcolorseldialog.c:125 +#: ../gtk/gtkcolorseldialog.c:125 msgid "The cancel button of the dialog." msgstr "Avbryt-knapp i dialogen" -#: gtk/gtkcolorseldialog.c:131 +#: ../gtk/gtkcolorseldialog.c:131 msgid "Help Button" msgstr "Hjelp-knapp" -#: gtk/gtkcolorseldialog.c:132 +#: ../gtk/gtkcolorseldialog.c:132 msgid "The help button of the dialog." msgstr "Hjelp-knapp i dialogen." -#: gtk/gtkcombobox.c:683 +#: ../gtk/gtkcombobox.c:738 msgid "ComboBox model" msgstr "Modell for ComboBox" -#: gtk/gtkcombobox.c:684 +#: ../gtk/gtkcombobox.c:739 msgid "The model for the combo box" msgstr "Modell for komboboksen" -#: gtk/gtkcombobox.c:701 +#: ../gtk/gtkcombobox.c:756 #, fuzzy msgid "Wrap width for laying out the items in a grid" msgstr "Brytningsbredde for utplassering av oppføringer i et rutenett" -#: gtk/gtkcombobox.c:723 +#: ../gtk/gtkcombobox.c:778 msgid "Row span column" msgstr "Kolonne for radutbredelse" -#: gtk/gtkcombobox.c:724 +#: ../gtk/gtkcombobox.c:779 msgid "TreeModel column containing the row span values" msgstr "TreeModel-kolonne som inneholder verdier for radutbredelse" -#: gtk/gtkcombobox.c:745 +#: ../gtk/gtkcombobox.c:800 msgid "Column span column" msgstr "Kolonne for kolonneutbredelse" -#: gtk/gtkcombobox.c:746 +#: ../gtk/gtkcombobox.c:801 msgid "TreeModel column containing the column span values" msgstr "TreeModel-kolonne som inneholder verdier for kolonneutbredelse" -#: gtk/gtkcombobox.c:767 +#: ../gtk/gtkcombobox.c:822 msgid "Active item" msgstr "Aktiv oppføring" -#: gtk/gtkcombobox.c:768 +#: ../gtk/gtkcombobox.c:823 msgid "The item which is currently active" msgstr "Oppføringen som er aktiv" -#: gtk/gtkcombobox.c:787 gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:842 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Legg til avrivningsfelt til menyer" -#: gtk/gtkcombobox.c:788 +#: ../gtk/gtkcombobox.c:843 msgid "Whether dropdowns should have a tearoff menu item" msgstr "Om nedtrekksmenyer skal ha et element som kan dras av" -#: gtk/gtkcombobox.c:803 gtk/gtkentry.c:688 +#: ../gtk/gtkcombobox.c:858 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Har ramme" -#: gtk/gtkcombobox.c:804 +#: ../gtk/gtkcombobox.c:859 msgid "Whether the combo box draws a frame around the child" msgstr "Om kombinasjonsboksen tegner en ramme rundt barnet" -#: gtk/gtkcombobox.c:812 +#: ../gtk/gtkcombobox.c:867 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Om kombinasjonsboksen tar fokus når den blir klikket på av musen" -#: gtk/gtkcombobox.c:827 gtk/gtkmenu.c:580 +#: ../gtk/gtkcombobox.c:882 ../gtk/gtkmenu.c:573 msgid "Tearoff Title" msgstr "Tittel for avrevet meny" -#: gtk/gtkcombobox.c:828 +#: ../gtk/gtkcombobox.c:883 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" msgstr "" "En tittel som skal vises av vindushåndtereren når denne menyen er avrevet" -#: gtk/gtkcombobox.c:845 +#: ../gtk/gtkcombobox.c:900 msgid "Popup shown" msgstr "Oppsprettmeny vises" -#: gtk/gtkcombobox.c:846 +#: ../gtk/gtkcombobox.c:901 msgid "Whether the combo's dropdown is shown" msgstr "Om komboboksens nedtrekksmeny vises" -#: gtk/gtkcombobox.c:862 +#: ../gtk/gtkcombobox.c:917 msgid "Button Sensitivity" msgstr "Sensitivitet for knapp" -#: gtk/gtkcombobox.c:863 +#: ../gtk/gtkcombobox.c:918 #, fuzzy msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Om knappen tar fokus når den klikkes med musen" -#: gtk/gtkcombobox.c:870 +#: ../gtk/gtkcombobox.c:934 +#, fuzzy +#| msgid "Whether the combo box draws a frame around the child" +msgid "Whether combo box has an entry" +msgstr "Om kombinasjonsboksen tegner en ramme rundt barnet" + +#: ../gtk/gtkcombobox.c:949 +#, fuzzy +#| msgid "Text Column" +msgid "Entry Text Column" +msgstr "Tekstkolonne" + +#: ../gtk/gtkcombobox.c:950 +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" +msgstr "" + +#: ../gtk/gtkcombobox.c:967 +#, fuzzy +#| msgid "Columns" +msgid "ID Column" +msgstr "Kolonner" + +#: ../gtk/gtkcombobox.c:968 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "" + +#: ../gtk/gtkcombobox.c:983 +#, fuzzy +#| msgid "Active" +msgid "Active id" +msgstr "Aktiv" + +#: ../gtk/gtkcombobox.c:984 +#, fuzzy +#| msgid "The name of the icon from the icon theme" +msgid "The value of the id column for the active row" +msgstr "Navn på ikonet fra ikontemaet" + +#: ../gtk/gtkcombobox.c:999 +#, fuzzy +#| msgid "Fixed Width" +msgid "Popup Fixed Width" +msgstr "Fast bredde" + +#: ../gtk/gtkcombobox.c:1000 +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "" + +#: ../gtk/gtkcombobox.c:1008 msgid "Appears as list" msgstr "Vises som liste" -#: gtk/gtkcombobox.c:871 +#: ../gtk/gtkcombobox.c:1009 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Om nedtrekksmenyer skal se ut som lister i stedet for menyer" -#: gtk/gtkcombobox.c:887 +#: ../gtk/gtkcombobox.c:1025 msgid "Arrow Size" msgstr "Pilstørrelse" -#: gtk/gtkcombobox.c:888 +#: ../gtk/gtkcombobox.c:1026 msgid "The minimum size of the arrow in the combo box" msgstr "Minste størrelse på pilen i komboboksen" -#: gtk/gtkcombobox.c:903 gtk/gtkentry.c:788 gtk/gtkhandlebox.c:182 -#: gtk/gtkmenubar.c:189 gtk/gtkstatusbar.c:244 gtk/gtktoolbar.c:577 -#: gtk/gtkviewport.c:158 +#: ../gtk/gtkcombobox.c:1041 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:188 +#: ../gtk/gtkmenubar.c:197 ../gtk/gtkstatusbar.c:180 ../gtk/gtktoolbar.c:603 +#: ../gtk/gtkviewport.c:154 msgid "Shadow type" msgstr "Skyggetype" -#: gtk/gtkcombobox.c:904 +#: ../gtk/gtkcombobox.c:1042 msgid "Which kind of shadow to draw around the combo box" msgstr "Type skygge som skal tegnes rundt komboboksen" -#: gtk/gtkcontainer.c:259 +#: ../gtk/gtkcontainer.c:451 msgid "Resize mode" msgstr "Modus for endring av størrelse" -#: gtk/gtkcontainer.c:260 +#: ../gtk/gtkcontainer.c:452 msgid "Specify how resize events are handled" msgstr "Spesifiser hvordan hendelser for endring av størrelse håndteres" -#: gtk/gtkcontainer.c:267 +#: ../gtk/gtkcontainer.c:459 msgid "Border width" msgstr "Kantbredde" -#: gtk/gtkcontainer.c:268 +#: ../gtk/gtkcontainer.c:460 msgid "The width of the empty border outside the containers children" msgstr "Bredde på den tomme kanten utenfor kontainerens etterkommere" -#: gtk/gtkcontainer.c:276 +#: ../gtk/gtkcontainer.c:468 msgid "Child" msgstr "Etterkommer" -#: gtk/gtkcontainer.c:277 +#: ../gtk/gtkcontainer.c:469 msgid "Can be used to add a new child to the container" msgstr "Kan brukes for å legge til en ny etterkommer i kontaineren" -#: gtk/gtkdialog.c:165 gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:165 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Kant for innholdsområde" -#: gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:166 msgid "Width of border around the main dialog area" msgstr "Bredde på kanten rundt hoveddialogområdet" -#: gtk/gtkdialog.c:183 gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:183 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Utforming av innholdsområde" -#: gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:184 msgid "Spacing between elements of the main dialog area" msgstr "Mellomrom mellom elementene i hovedområdet i dialogen" -#: gtk/gtkdialog.c:191 gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:191 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Knappeavstand" -#: gtk/gtkdialog.c:192 gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:192 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Avstand mellom knapper" -#: gtk/gtkdialog.c:200 gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:200 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Kant for handlingsområde" -#: gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:201 msgid "Width of border around the button area at the bottom of the dialog" msgstr "Bredde på kanten rundt knappeområdet nederst i dialogen" -#: gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Tekstbuffer" -#: gtk/gtkentry.c:636 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "" -#: gtk/gtkentry.c:643 gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Markørposisjon" -#: gtk/gtkentry.c:644 gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "Nåværende posisjon for innsettingsmarkør i tegn" -#: gtk/gtkentry.c:653 gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Utvalg bundet" -#: gtk/gtkentry.c:654 gtk/gtklabel.c:655 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "" "The position of the opposite end of the selection from the cursor in chars" msgstr "Posisjon for motsatt ende av utvalget fra markøren i tegn" -#: gtk/gtkentry.c:664 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Innhold i oppføringen kan redigeres" -#: gtk/gtkentry.c:671 gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Maksimal lengde" -#: gtk/gtkentry.c:672 gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "" "Maksimalt antall tegn for denne oppføringen. Null hvis ingen maksimalverdi " "er satt" -#: gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Synlighet" -#: gtk/gtkentry.c:681 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" msgstr "USANN viser «usynlige tegn» i stedet for faktisk tekst (passordmodus)" -#: gtk/gtkentry.c:689 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "USANN fjerner ytre kant fra oppføringen" -#: gtk/gtkentry.c:697 -msgid "" -"Border between text and frame. Overrides the inner-border style property" +#: ../gtk/gtkentry.c:788 +msgid "Border between text and frame. Overrides the inner-border style property" msgstr "" -#: gtk/gtkentry.c:704 gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Usynlig tegn" -#: gtk/gtkentry.c:705 gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "" "Tegnet som skal brukes når man masker ut innhold i oppføringen (i «passord " "modus»)" -#: gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Aktiverer forvalg" -#: gtk/gtkentry.c:713 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2240,31 +2356,31 @@ msgstr "" "Om forvalgt widget skal aktiveres (f.eks forvalgt knapp i en dialog) når man " "trykker linjeskift" -#: gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Bredde i tegn" -#: gtk/gtkentry.c:720 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Antall tegn det skal være plass til i feltet" -#: gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Rulleavstand" -#: gtk/gtkentry.c:730 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "Antall piksler av oppføringen som rullet ut av skjermen til venstre" -#: gtk/gtkentry.c:740 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "Innhold i oppføringen" -#: gtk/gtkentry.c:755 gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X-justering" -#: gtk/gtkentry.c:756 gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." @@ -2272,67 +2388,67 @@ msgstr "" "Horisontal justering, fra 0 (venstre) til 1 (høyre). Omvendt for RTL-" "utforminger." -#: gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Gjør om flere linjer til en" -#: gtk/gtkentry.c:773 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Om «Lim inn» av flere linjer skal endres til én linje." -#: gtk/gtkentry.c:789 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "" -#: gtk/gtkentry.c:804 gtk/gtktextview.c:748 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:764 msgid "Overwrite mode" msgstr "Overskrivingsmodus" -#: gtk/gtkentry.c:805 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Om ny tekst overskriver eksisterende" -#: gtk/gtkentry.c:819 gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Lengde på tekst" -#: gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Lengde på tekst i oppføringen" -#: gtk/gtkentry.c:835 +#: ../gtk/gtkentry.c:926 #, fuzzy msgid "Invisible character set" msgstr "Usynlig tegn" -#: gtk/gtkentry.c:836 +#: ../gtk/gtkentry.c:927 #, fuzzy msgid "Whether the invisible character has been set" msgstr "Om usynlig tegn er satt" -#: gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Varsel om Caps Lock" -#: gtk/gtkentry.c:855 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "Om passordoppføringer skal vise en advarsel når Caps Lock er på" -#: gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Andel framdrift" -#: gtk/gtkentry.c:870 +#: ../gtk/gtkentry.c:961 #, fuzzy msgid "The current fraction of the task that's been completed" msgstr "Total andel av arbeid som er fullført" -#: gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:978 #, fuzzy msgid "Progress Pulse Step" msgstr "Pulssteg" -#: gtk/gtkentry.c:888 +#: ../gtk/gtkentry.c:979 #, fuzzy msgid "" "The fraction of total entry width to move the progress bouncing block for " @@ -2340,271 +2456,263 @@ msgid "" msgstr "" "Andel total fremgang for bevegelse av den sprettende blokken for hver puls" -#: gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Primær pixbuf" -#: gtk/gtkentry.c:905 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "Primær pixbuf for oppføringen" -#: gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Sekundær pixbuf" -#: gtk/gtkentry.c:920 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "Sekundær pixbuf for oppføringen" -#: gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "" -#: gtk/gtkentry.c:935 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "" -#: gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1040 #, fuzzy msgid "Secondary stock ID" msgstr "Sekundær tekst" -#: gtk/gtkentry.c:950 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "" -#: gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Primært ikonnavn" -#: gtk/gtkentry.c:965 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Ikonnavn for primært ikon" -#: gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Sekundært ikonnavn" -#: gtk/gtkentry.c:980 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "" -#: gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "Primært GIcon" -#: gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "GIcon for primært ikon" -#: gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "Sekundært GIcon" -#: gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "GIcon for sekundært ikon" -#: gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Primær lagringstype" -#: gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "Representasjonen som brukes for primært ikon" -#: gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Sekundær lagertype" -#: gtk/gtkentry.c:1041 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "Representasjonen som brukes for sekundært ikon" -#: gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Primærikon kan aktiveres" -#: gtk/gtkentry.c:1063 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Om primært ikon kan aktiveres" -#: gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Sekundært ikon aktiverbart" -#: gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Om sekundært ikon kan aktiveres" -#: gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Primærikon er sensitivt" -#: gtk/gtkentry.c:1107 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Om primært ikon er sensitivt" -#: gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Sekundærikon er sensitivt" -#: gtk/gtkentry.c:1129 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Om sekundært ikon er sensitivt" -#: gtk/gtkentry.c:1145 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Tekst for verktøytips for primært ikon" -#: gtk/gtkentry.c:1146 gtk/gtkentry.c:1182 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 #, fuzzy msgid "The contents of the tooltip on the primary icon" msgstr "Innhold i verktøytips for denne komponenten" -#: gtk/gtkentry.c:1162 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Tekst for verktøytips for sekundært ikon" -#: gtk/gtkentry.c:1163 gtk/gtkentry.c:1201 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 #, fuzzy msgid "The contents of the tooltip on the secondary icon" msgstr "Innhold i verktøytips for denne komponenten" -#: gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1272 #, fuzzy msgid "Primary icon tooltip markup" msgstr "Liste med ikonnavn" -#: gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1291 #, fuzzy msgid "Secondary icon tooltip markup" msgstr "Sekundær tekst" -#: gtk/gtkentry.c:1220 gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:792 msgid "IM module" msgstr "IM-modul" -#: gtk/gtkentry.c:1221 gtk/gtktextview.c:777 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:793 msgid "Which IM module should be used" msgstr "IM-modul som skal brukes" -#: gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1326 #, fuzzy msgid "Icon Prelight" msgstr "Høyde" -#: gtk/gtkentry.c:1236 +#: ../gtk/gtkentry.c:1327 #, fuzzy msgid "Whether activatable icons should prelight when hovered" msgstr "Vis/Ikke vis faner" -#: gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Kant for fremgangsmåler" -#: gtk/gtkentry.c:1250 +#: ../gtk/gtkentry.c:1341 #, fuzzy msgid "Border around the progress bar" msgstr "Tekst på fremgangsmåleren" -#: gtk/gtkentry.c:1742 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Kant mellom tekst og ramme." -#: gtk/gtkentry.c:1747 gtk/gtklabel.c:903 -msgid "Select on focus" -msgstr "Velg på fokus" - -#: gtk/gtkentry.c:1748 -msgid "Whether to select the contents of an entry when it is focused" -msgstr "Om innholdet i oppføringen skal markeres når den får fokus" - -#: gtk/gtkentry.c:1762 -msgid "Password Hint Timeout" -msgstr "Tidsavbrudd for passordhint" - -#: gtk/gtkentry.c:1763 -msgid "How long to show the last input character in hidden entries" -msgstr "Hvor lenge skal siste tegn vises i skjulte oppføringer" - -#: gtk/gtkentrybuffer.c:353 +#: ../gtk/gtkentrybuffer.c:353 msgid "The contents of the buffer" msgstr "Innhold i bufferen" -#: gtk/gtkentrybuffer.c:368 +#: ../gtk/gtkentrybuffer.c:368 msgid "Length of the text currently in the buffer" msgstr "Lengde på tekst som er i bufferen" -#: gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:267 msgid "Completion Model" msgstr "Fullføringsmodell" -#: gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:268 msgid "The model to find matches in" msgstr "Modell for søk etter treff" -#: gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:274 msgid "Minimum Key Length" msgstr "Minste lengde på nøkkel" -#: gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:275 msgid "Minimum length of the search key in order to look up matches" msgstr "Minimumslengde på nøkkel for søk for å slå opp treff" -#: gtk/gtkentrycompletion.c:304 gtk/gtkiconview.c:587 +#: ../gtk/gtkentrycompletion.c:291 ../gtk/gtkiconview.c:617 msgid "Text column" msgstr "Tekstkolonne" -#: gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:292 msgid "The column of the model containing the strings." msgstr "En kolonne i modellen som inneholder strengene." -#: gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:311 msgid "Inline completion" msgstr "Innebygd fullføring" -#: gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:312 msgid "Whether the common prefix should be inserted automatically" msgstr "Om det vanlige prefikset skal ble satt inn automatisk" -#: gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:326 msgid "Popup completion" msgstr "Oppsprett fullføring" -#: gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:327 msgid "Whether the completions should be shown in a popup window" msgstr "Om fullføringen skal bli vist i et oppsprettsvindu" -#: gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:342 msgid "Popup set width" msgstr "Sprett opp sett bredde" -#: gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:343 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "Hvis «TRUE» vil oppsprettvinduet ha samme størrelsen som oppføringen" -#: gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:361 msgid "Popup single match" msgstr "Sprett opp enslig treff" -#: gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:362 msgid "If TRUE, the popup window will appear for a single match." msgstr "Hvis «TRUE» vil oppsprettvinduet vises for et enslig treff." -#: gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:376 msgid "Inline selection" msgstr "Innebygd utvalg" -#: gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:377 msgid "Your description here" msgstr "Beskrivelse plasseres her" -#: gtk/gtkeventbox.c:93 +#: ../gtk/gtkentrycompletion.c:392 ../gtk/gtktreeviewcolumn.c:408 +msgid "Cell Area" +msgstr "" + +#: ../gtk/gtkentrycompletion.c:393 ../gtk/gtktreeviewcolumn.c:409 +msgid "The GtkCellArea used to layout cells" +msgstr "" + +#: ../gtk/gtkeventbox.c:101 msgid "Visible Window" msgstr "Synlig vindu" -#: gtk/gtkeventbox.c:94 +#: ../gtk/gtkeventbox.c:102 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." @@ -2612,11 +2720,11 @@ msgstr "" "Om handlingsboksen er synlig i motsetning til usynlig. I tillegg kan den kun " "brukes til å fange opp hendelser." -#: gtk/gtkeventbox.c:100 +#: ../gtk/gtkeventbox.c:108 msgid "Above child" msgstr "Over barn" -#: gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:109 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." @@ -2624,157 +2732,159 @@ msgstr "" "Om vinduet som fanger hendelser i hendelsesboksen er over etterkommers vindu " "eller under det." -#: gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:199 msgid "Expanded" msgstr "Utvidet" -#: gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:200 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Om utvideren er åpnet for å avdekke underkomponenten" -#: gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:208 msgid "Text of the expander's label" msgstr "Tekst i utviderens etikett" -#: gtk/gtkexpander.c:225 gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:223 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Bruk tagging" -#: gtk/gtkexpander.c:226 gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:224 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "Teksten i etiketten inneholder XML-tagger. Se pango_parse_markup()" -#: gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:232 msgid "Space to put between the label and the child" msgstr "Mellomrom som skal plasseres mellom etiketten og barnet" -#: gtk/gtkexpander.c:243 gtk/gtkframe.c:165 gtk/gtktoolbutton.c:216 -#: gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:241 ../gtk/gtkframe.c:165 ../gtk/gtktoolbutton.c:216 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "Label widget" msgstr "Etikett-widget" -#: gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:242 msgid "A widget to display in place of the usual expander label" msgstr "Et widget som vises i stedet for den vanlige utvideretiketten" -#: gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:249 #, fuzzy msgid "Label fill" msgstr "Fyll for fane" -#: gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:250 #, fuzzy msgid "Whether the label widget should fill all available horizontal space" msgstr "Om alle barn skal være av samme størrelse." -#: gtk/gtkexpander.c:258 gtk/gtktoolitemgroup.c:1606 gtk/gtktreeview.c:776 +#: ../gtk/gtkexpander.c:256 ../gtk/gtktoolitemgroup.c:1623 +#: ../gtk/gtktreeview.c:1190 msgid "Expander Size" msgstr "Størrelse på utvider" -#: gtk/gtkexpander.c:259 gtk/gtktoolitemgroup.c:1607 gtk/gtktreeview.c:777 +#: ../gtk/gtkexpander.c:257 ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtktreeview.c:1191 msgid "Size of the expander arrow" msgstr "Størrelse på utviderpil" -#: gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:266 msgid "Spacing around expander arrow" msgstr "Tomrom rundt utviderpilen" -#: gtk/gtkfilechooserbutton.c:368 +#: ../gtk/gtkfilechooserbutton.c:366 msgid "Dialog" msgstr "Dialog" -#: gtk/gtkfilechooserbutton.c:369 +#: ../gtk/gtkfilechooserbutton.c:367 msgid "The file chooser dialog to use." msgstr "Filvelgingsdialog som skal brukes." -#: gtk/gtkfilechooserbutton.c:400 +#: ../gtk/gtkfilechooserbutton.c:398 msgid "The title of the file chooser dialog." msgstr "Tittelen på dialogen for filvalg." -#: gtk/gtkfilechooserbutton.c:414 +#: ../gtk/gtkfilechooserbutton.c:412 msgid "The desired width of the button widget, in characters." msgstr "Den ønskede bredden på knappelementet, i tegn." -#: gtk/gtkfilechooser.c:740 +#: ../gtk/gtkfilechooser.c:740 msgid "Action" msgstr "Handling" -#: gtk/gtkfilechooser.c:741 +#: ../gtk/gtkfilechooser.c:741 msgid "The type of operation that the file selector is performing" msgstr "Type operasjon om utføres av filutvalgsdialogen" -#: gtk/gtkfilechooser.c:747 gtk/gtkrecentchooser.c:264 +#: ../gtk/gtkfilechooser.c:747 ../gtk/gtkrecentchooser.c:264 msgid "Filter" msgstr "Filter" -#: gtk/gtkfilechooser.c:748 +#: ../gtk/gtkfilechooser.c:748 msgid "The current filter for selecting which files are displayed" msgstr "Filter for å velge hvilke filer som vises" -#: gtk/gtkfilechooser.c:753 +#: ../gtk/gtkfilechooser.c:753 msgid "Local Only" msgstr "Kun lokalt" -#: gtk/gtkfilechooser.c:754 +#: ../gtk/gtkfilechooser.c:754 msgid "Whether the selected file(s) should be limited to local file: URLs" msgstr "Om valgt(e) fil(er) skal begrenses til lokale file: URLer" -#: gtk/gtkfilechooser.c:759 +#: ../gtk/gtkfilechooser.c:759 msgid "Preview widget" msgstr "Forhåndsvisningskomponent" -#: gtk/gtkfilechooser.c:760 +#: ../gtk/gtkfilechooser.c:760 msgid "Application supplied widget for custom previews." msgstr "Komponent for egendefinerte forhåndsvisninger levert av programmet." -#: gtk/gtkfilechooser.c:765 +#: ../gtk/gtkfilechooser.c:765 msgid "Preview Widget Active" msgstr "Forhåndsvisningskomponent aktiv" -#: gtk/gtkfilechooser.c:766 +#: ../gtk/gtkfilechooser.c:766 msgid "" "Whether the application supplied widget for custom previews should be shown." msgstr "" "Om komponent for egendefinerte forhåndsvisninger levert av programmet skal " "vises." -#: gtk/gtkfilechooser.c:771 +#: ../gtk/gtkfilechooser.c:771 msgid "Use Preview Label" msgstr "Bruk etikett for forhåndsvisning" -#: gtk/gtkfilechooser.c:772 +#: ../gtk/gtkfilechooser.c:772 msgid "Whether to display a stock label with the name of the previewed file." msgstr "Om en standardetikett med navn på forhåndsvist fil skal vises." -#: gtk/gtkfilechooser.c:777 +#: ../gtk/gtkfilechooser.c:777 msgid "Extra widget" msgstr "Ekstra komponent" -#: gtk/gtkfilechooser.c:778 +#: ../gtk/gtkfilechooser.c:778 msgid "Application supplied widget for extra options." msgstr "Komponent for ekstra alternativer levert av programmet." -#: gtk/gtkfilechooser.c:783 gtk/gtkrecentchooser.c:203 +#: ../gtk/gtkfilechooser.c:783 ../gtk/gtkrecentchooser.c:203 msgid "Select Multiple" msgstr "Velg flere" -#: gtk/gtkfilechooser.c:784 +#: ../gtk/gtkfilechooser.c:784 msgid "Whether to allow multiple files to be selected" msgstr "Om valg av flere filer skal tillates" -#: gtk/gtkfilechooser.c:790 +#: ../gtk/gtkfilechooser.c:790 msgid "Show Hidden" msgstr "Vis skjulte" -#: gtk/gtkfilechooser.c:791 +#: ../gtk/gtkfilechooser.c:791 msgid "Whether the hidden files and folders should be displayed" msgstr "Om skjulte filer og mapper skal vises" -#: gtk/gtkfilechooser.c:806 +#: ../gtk/gtkfilechooser.c:806 msgid "Do overwrite confirmation" msgstr "Vis overskrivingsbekreftelse" -#: gtk/gtkfilechooser.c:807 +#: ../gtk/gtkfilechooser.c:807 msgid "" "Whether a file chooser in save mode will present an overwrite confirmation " "dialog if necessary." @@ -2782,154 +2892,154 @@ msgstr "" "Om filvelger i lagremodus vil presentere en bekreftelsedialog for " "overskriving hvis nødvendig." -#: gtk/gtkfilechooser.c:823 +#: ../gtk/gtkfilechooser.c:823 #, fuzzy msgid "Allow folder creation" msgstr "Tillat oppretting av mapper" -#: gtk/gtkfilechooser.c:824 +#: ../gtk/gtkfilechooser.c:824 msgid "" "Whether a file chooser not in open mode will offer the user to create new " "folders." msgstr "" "Om filvelger som ikke er i åpningsmodus vil la bruker opprette nye mapper." -#: gtk/gtkfixed.c:98 gtk/gtklayout.c:605 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:633 msgid "X position" msgstr "X-posisjon" -#: gtk/gtkfixed.c:99 gtk/gtklayout.c:606 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:634 msgid "X position of child widget" msgstr "X-posisjon for underwidgetet" -#: gtk/gtkfixed.c:108 gtk/gtklayout.c:615 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:643 msgid "Y position" msgstr "Y-posisjon" -#: gtk/gtkfixed.c:109 gtk/gtklayout.c:616 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:644 msgid "Y position of child widget" msgstr "Y-posisjon for underwidgetet" -#: gtk/gtkfontbutton.c:141 +#: ../gtk/gtkfontbutton.c:141 msgid "The title of the font selection dialog" msgstr "Tittelen på dialogen for skriftvalg" -#: gtk/gtkfontbutton.c:156 gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:223 msgid "Font name" msgstr "Skriftnavn" -#: gtk/gtkfontbutton.c:157 +#: ../gtk/gtkfontbutton.c:157 msgid "The name of the selected font" msgstr "Navn på valgt skrift" -#: gtk/gtkfontbutton.c:158 +#: ../gtk/gtkfontbutton.c:158 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:173 +#: ../gtk/gtkfontbutton.c:173 msgid "Use font in label" msgstr "Bruk skrift i etikett" -#: gtk/gtkfontbutton.c:174 +#: ../gtk/gtkfontbutton.c:174 msgid "Whether the label is drawn in the selected font" msgstr "Om etiketten tegnes med valgt skrift" -#: gtk/gtkfontbutton.c:189 +#: ../gtk/gtkfontbutton.c:189 msgid "Use size in label" msgstr "Bruk størrelse i etikett" -#: gtk/gtkfontbutton.c:190 +#: ../gtk/gtkfontbutton.c:190 msgid "Whether the label is drawn with the selected font size" msgstr "Om etiketteksten tegnes med valgt skriftstørrelse" -#: gtk/gtkfontbutton.c:206 +#: ../gtk/gtkfontbutton.c:206 msgid "Show style" msgstr "Vis stil" -#: gtk/gtkfontbutton.c:207 +#: ../gtk/gtkfontbutton.c:207 msgid "Whether the selected font style is shown in the label" msgstr "Om valgt skriftstil vises i etiketten" -#: gtk/gtkfontbutton.c:222 +#: ../gtk/gtkfontbutton.c:222 msgid "Show size" msgstr "Vis størrelse" -#: gtk/gtkfontbutton.c:223 +#: ../gtk/gtkfontbutton.c:223 msgid "Whether selected font size is shown in the label" msgstr "Om valgt skriftstørrelse vises i etiketten" -#: gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:224 msgid "The string that represents this font" msgstr "Strengen som representerer denne skriften" -#: gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:230 msgid "Preview text" msgstr "Forhåndsvisningstekst" -#: gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:231 msgid "The text to display in order to demonstrate the selected font" msgstr "Tekst som skal vises for å demonstrere valgt skrift" -#: gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:131 msgid "Text of the frame's label" msgstr "Teksten i rammens etikett" -#: gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:138 msgid "Label xalign" msgstr "X-justering for etikett" -#: gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:139 msgid "The horizontal alignment of the label" msgstr "Horisontal justering for etikett" -#: gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:147 msgid "Label yalign" msgstr "Y-justering for etikett" -#: gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:148 msgid "The vertical alignment of the label" msgstr "Vertikal justering for etikett" -#: gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:156 msgid "Frame shadow" msgstr "Skygge for ramme" -#: gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:157 msgid "Appearance of the frame border" msgstr "Utseende for rammekanten" -#: gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:166 msgid "A widget to display in place of the usual frame label" msgstr "Et widget som vises i stedet for den vanlige rammeetiketten" -#: gtk/gtkhandlebox.c:183 +#: ../gtk/gtkhandlebox.c:189 msgid "Appearance of the shadow that surrounds the container" msgstr "Utseende for skyggen som omslutter kontaineren" -#: gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:197 msgid "Handle position" msgstr "Plassering av håndtak" -#: gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:198 msgid "Position of the handle relative to the child widget" msgstr "Posisjon for håndtaket relativt til etterkommer" -#: gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:206 msgid "Snap edge" msgstr "Fest til kant" -#: gtk/gtkhandlebox.c:201 +#: ../gtk/gtkhandlebox.c:207 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" msgstr "" "Siden på håndtakboksen som er på linje med dokkingpunktet for håndtakboksen" -#: gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:215 msgid "Snap edge set" msgstr "Fest til kant satt" -#: gtk/gtkhandlebox.c:210 +#: ../gtk/gtkhandlebox.c:216 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" @@ -2937,280 +3047,272 @@ msgstr "" "Om verdien fra egenskapen snap_edge eller en verdi derivert fra " "handle_position skal brukes" -#: gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:223 msgid "Child Detached" msgstr "" -#: gtk/gtkhandlebox.c:218 +#: ../gtk/gtkhandlebox.c:224 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." msgstr "" -#: gtk/gtkiconview.c:550 +#: ../gtk/gtkiconview.c:580 msgid "Selection mode" msgstr "Utvalgsmodus" -#: gtk/gtkiconview.c:551 +#: ../gtk/gtkiconview.c:581 msgid "The selection mode" msgstr "Utvalgsmodus som brukes" -#: gtk/gtkiconview.c:569 +#: ../gtk/gtkiconview.c:599 msgid "Pixbuf column" msgstr "Pixbuf-kolonne" -#: gtk/gtkiconview.c:570 +#: ../gtk/gtkiconview.c:600 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Modellkolonne brukt til å hente «icon pixbuf» fra" -#: gtk/gtkiconview.c:588 +#: ../gtk/gtkiconview.c:618 msgid "Model column used to retrieve the text from" msgstr "Modelkolonne brukt til å hente teksten fra" -#: gtk/gtkiconview.c:607 +#: ../gtk/gtkiconview.c:637 msgid "Markup column" msgstr "Kolonne for tagging" -#: gtk/gtkiconview.c:608 +#: ../gtk/gtkiconview.c:638 msgid "Model column used to retrieve the text if using Pango markup" -msgstr "" -"Modelkolonne brukt til å hente teksten fra hvis «Pango markup» er brukt" +msgstr "Modelkolonne brukt til å hente teksten fra hvis «Pango markup» er brukt" -#: gtk/gtkiconview.c:615 +#: ../gtk/gtkiconview.c:645 msgid "Icon View Model" msgstr "Modell for ikonvisning" -#: gtk/gtkiconview.c:616 +#: ../gtk/gtkiconview.c:646 msgid "The model for the icon view" msgstr "Modellen for ikonvisning" -#: gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:662 msgid "Number of columns" msgstr "Antall kolonner" -#: gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:663 msgid "Number of columns to display" msgstr "Antall kolonner som skal vises" -#: gtk/gtkiconview.c:650 +#: ../gtk/gtkiconview.c:680 msgid "Width for each item" msgstr "Bredde for hver oppføring" -#: gtk/gtkiconview.c:651 +#: ../gtk/gtkiconview.c:681 msgid "The width used for each item" msgstr "Bredde som brukes for hver oppføring" -#: gtk/gtkiconview.c:667 +#: ../gtk/gtkiconview.c:697 msgid "Space which is inserted between cells of an item" msgstr "Plass som er satt inn mellom cellene til et element" -#: gtk/gtkiconview.c:682 +#: ../gtk/gtkiconview.c:712 msgid "Row Spacing" msgstr "Avstand mellom rader" -#: gtk/gtkiconview.c:683 +#: ../gtk/gtkiconview.c:713 msgid "Space which is inserted between grid rows" msgstr "Plass som er satt inn mellom ruterekkene" -#: gtk/gtkiconview.c:698 +#: ../gtk/gtkiconview.c:728 msgid "Column Spacing" msgstr "Avstand mellom kolonner" -#: gtk/gtkiconview.c:699 +#: ../gtk/gtkiconview.c:729 msgid "Space which is inserted between grid columns" msgstr "Plass som er satt inn mellom rutenettkolonnene" -#: gtk/gtkiconview.c:714 +#: ../gtk/gtkiconview.c:744 msgid "Margin" msgstr "Marg" -#: gtk/gtkiconview.c:715 +#: ../gtk/gtkiconview.c:745 msgid "Space which is inserted at the edges of the icon view" msgstr "Plass som er satt inn ved kantene til ikonvisningen" -#: gtk/gtkiconview.c:730 +#: ../gtk/gtkiconview.c:760 #, fuzzy msgid "Item Orientation" msgstr "Orientering" -#: gtk/gtkiconview.c:731 -msgid "" -"How the text and icon of each item are positioned relative to each other" +#: ../gtk/gtkiconview.c:761 +msgid "How the text and icon of each item are positioned relative to each other" msgstr "" "Hvordan teksten og ikonet til hvert element er plassert i forhold til " "hverandre" -#: gtk/gtkiconview.c:747 gtk/gtktreeview.c:611 gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtkiconview.c:777 ../gtk/gtktreeview.c:1025 +#: ../gtk/gtktreeviewcolumn.c:358 msgid "Reorderable" msgstr "Kan omorganiseres" -#: gtk/gtkiconview.c:748 gtk/gtktreeview.c:612 +#: ../gtk/gtkiconview.c:778 ../gtk/gtktreeview.c:1026 msgid "View is reorderable" msgstr "Visningen kan omorganiseres" -#: gtk/gtkiconview.c:755 gtk/gtktreeview.c:762 +#: ../gtk/gtkiconview.c:785 ../gtk/gtktreeview.c:1176 msgid "Tooltip Column" msgstr "Kolonne for verktøytips" -#: gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:786 msgid "The column in the model containing the tooltip texts for the items" msgstr "" "En kolonne i modellen som inneholder tekst for verktøytips for oppføringene" -#: gtk/gtkiconview.c:773 +#: ../gtk/gtkiconview.c:803 msgid "Item Padding" msgstr "Fyll for oppføring" -#: gtk/gtkiconview.c:774 +#: ../gtk/gtkiconview.c:804 msgid "Padding around icon view items" msgstr "" -#: gtk/gtkiconview.c:783 +#: ../gtk/gtkiconview.c:817 msgid "Selection Box Color" msgstr "Boks for fargevalg" -#: gtk/gtkiconview.c:784 +#: ../gtk/gtkiconview.c:818 msgid "Color of the selection box" msgstr "Fargen på valgboksen" -#: gtk/gtkiconview.c:790 +#: ../gtk/gtkiconview.c:824 msgid "Selection Box Alpha" msgstr "Valgboks alfa" -#: gtk/gtkiconview.c:791 +#: ../gtk/gtkiconview.c:825 msgid "Opacity of the selection box" msgstr "Ugjennomsiktigheten for valgboksen" -#: gtk/gtkimage.c:227 gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:233 ../gtk/gtkstatusicon.c:212 msgid "Pixbuf" msgstr "Pixbuf" -#: gtk/gtkimage.c:228 gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:234 ../gtk/gtkstatusicon.c:213 msgid "A GdkPixbuf to display" msgstr "En GdkPixuf som skal vises" -#: gtk/gtkimage.c:235 gtk/gtkrecentmanager.c:290 gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:241 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:220 msgid "Filename" msgstr "Filnavn" -#: gtk/gtkimage.c:236 gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:242 ../gtk/gtkstatusicon.c:221 msgid "Filename to load and display" msgstr "Filnavn som skal lastes og vises" -#: gtk/gtkimage.c:245 gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:251 ../gtk/gtkstatusicon.c:229 msgid "Stock ID for a stock image to display" msgstr "Standard ID for et standardbilde som skal vises" -#: gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:258 msgid "Icon set" msgstr "Ikonsett" -#: gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:259 msgid "Icon set to display" msgstr "Ikonsett som skal vises" -#: gtk/gtkimage.c:260 gtk/gtkscalebutton.c:230 gtk/gtktoolbar.c:494 -#: gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:266 ../gtk/gtkscalebutton.c:230 ../gtk/gtktoolbar.c:520 +#: ../gtk/gtktoolpalette.c:1030 msgid "Icon size" msgstr "Ikonstørrelse" -#: gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:267 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "" "Symbolsk størrelse å bruke for standard ikon, ikonsett eller navngitt ikon" -#: gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:283 msgid "Pixel size" msgstr "Pikselstørrelse" -#: gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:284 msgid "Pixel size to use for named icon" msgstr "Pikselstørrelse å bruke for navngitt ikon" -#: gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:292 msgid "Animation" msgstr "Animasjon" -#: gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:293 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation som skal vises" -#: gtk/gtkimage.c:327 gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:333 ../gtk/gtkstatusicon.c:260 msgid "Storage type" msgstr "Lagertype" -#: gtk/gtkimage.c:328 gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:334 ../gtk/gtkstatusicon.c:261 msgid "The representation being used for image data" msgstr "Representasjonen som brukes for bildedata" -#: gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:149 msgid "Child widget to appear next to the menu text" msgstr "Barnwidget som skal vises ved siden av menyteksten" -#: gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:164 #, fuzzy msgid "Whether to use the label text to create a stock menu item" msgstr "Om etiketteksten kan velges med musen" -#: gtk/gtkimagemenuitem.c:187 gtk/gtkmenu.c:540 +#: ../gtk/gtkimagemenuitem.c:197 ../gtk/gtkmenu.c:533 msgid "Accel Group" msgstr "Akselleratorgruppe" -#: gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:198 #, fuzzy msgid "The Accel Group to use for stock accelerator keys" msgstr "«Closure» som skal overvåkes for akselleratorendringer" -#: gtk/gtkimagemenuitem.c:193 -msgid "Show menu images" -msgstr "Vis bilder i menyer" - -#: gtk/gtkimagemenuitem.c:194 -msgid "Whether images should be shown in menus" -msgstr "Om bilder skal vises i menyer" - -#: gtk/gtkinfobar.c:375 gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:201 msgid "Message Type" msgstr "Meldingstype" -#: gtk/gtkinfobar.c:376 gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:202 msgid "The type of message" msgstr "Type melding" -#: gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Bredde på kanten rundt innholdsområdet" -#: gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Mellomrom mellom elementene i området" -#: gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Bredde på kanten rundt handlingsområdet" -#: gtk/gtkinvisible.c:89 gtk/gtkmountoperation.c:175 gtk/gtkstatusicon.c:279 -#: gtk/gtkwindow.c:693 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtkwindow.c:730 msgid "Screen" msgstr "Skjerm" -#: gtk/gtkinvisible.c:90 gtk/gtkwindow.c:694 +#: ../gtk/gtkinvisible.c:91 ../gtk/gtkwindow.c:731 msgid "The screen where this window will be displayed" msgstr "Skjermen hvor dette vinduet vil vises" -#: gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "Tekst for etiketten" -#: gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "En liste med stilattributter som skal påføres etikettens tekst" -#: gtk/gtklabel.c:578 gtk/gtktexttag.c:335 gtk/gtktextview.c:685 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:335 ../gtk/gtktextview.c:701 msgid "Justification" msgstr "Justering" -#: gtk/gtklabel.c:579 +#: ../gtk/gtklabel.c:597 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 " @@ -3220,11 +3322,11 @@ msgstr "" "påvirker IKKE justeringen av etiketten innen sitt område. Se GtkMisc::xalign " "for det" -#: gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "Mønster" -#: gtk/gtklabel.c:588 +#: ../gtk/gtklabel.c:606 msgid "" "A string with _ characters in positions correspond to characters in the text " "to underline" @@ -3232,47 +3334,47 @@ msgstr "" "En streng med «_»-tegn i posisjoner tilsvarer tegn i teksten som skal " "understrekes" -#: gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "Linjebryting" -#: gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "Bryt linjer hvis teksten blir for bred hvis dette er satt" -#: gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "Linjebrytingsmodus" -#: gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" msgstr "" -#: gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "Velgbar" -#: gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "Om etiketteksten kan velges med musen" -#: gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "Hinttast" -#: gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "Hint for akselleratortast for denne etiketten" -#: gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "Hintwidget" -#: gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" msgstr "Widget som skal aktiveres når etikettens hinttast trykkes" -#: gtk/gtklabel.c:682 +#: ../gtk/gtklabel.c:700 #, fuzzy msgid "" "The preferred place to ellipsize the string, if the label does not have " @@ -3281,203 +3383,174 @@ msgstr "" "Det prioriterte stedet å forkorte strengen hvis etiketten ikke har nok plass " "til å vise hele strengen, hvis i det hele tatt" -#: gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "Enkeltlinjemodus" -#: gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "Om etiketten er i singellinjemodus" -#: gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "Vinkel" -#: gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "Vinkel for rotert etikett" -#: gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "Den ønskede maksimale bredden til merkelappen, i tegn" -#: gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "Spor besøkte lenker" -#: gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "Om besøkte lenker skal spores" -#: gtk/gtklabel.c:904 -#, fuzzy -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "Om innholdet i oppføringen skal markeres når den får fokus" - -#: gtk/gtklayout.c:625 gtk/gtkviewport.c:142 -msgid "Horizontal adjustment" -msgstr "Horisontal justering" - -#: gtk/gtklayout.c:626 gtk/gtkscrolledwindow.c:244 -msgid "The GtkAdjustment for the horizontal position" -msgstr "GtkAdjustment for horisontal posisjon" - -#: gtk/gtklayout.c:633 gtk/gtkviewport.c:150 -msgid "Vertical adjustment" -msgstr "Vertikal justering" - -#: gtk/gtklayout.c:634 gtk/gtkscrolledwindow.c:251 -msgid "The GtkAdjustment for the vertical position" -msgstr "GtkAdjustment for vertikal posisjon" - -#: gtk/gtklayout.c:641 gtk/gtktreeviewcolumn.c:211 +#: ../gtk/gtklayout.c:659 ../gtk/gtktreeviewcolumn.c:258 msgid "Width" msgstr "Bredde" -#: gtk/gtklayout.c:642 +#: ../gtk/gtklayout.c:660 msgid "The width of the layout" msgstr "Bredde på plasseringen" -#: gtk/gtklayout.c:650 +#: ../gtk/gtklayout.c:668 msgid "Height" msgstr "Høyde" -#: gtk/gtklayout.c:651 +#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "Høyde på plasseringen" -#: gtk/gtklinkbutton.c:162 +#: ../gtk/gtklinkbutton.c:174 msgid "URI" msgstr "URI" -#: gtk/gtklinkbutton.c:163 +#: ../gtk/gtklinkbutton.c:175 msgid "The URI bound to this button" msgstr "URI bundet til denne knappen" -#: gtk/gtklinkbutton.c:177 +#: ../gtk/gtklinkbutton.c:189 msgid "Visited" msgstr "Besøkt" -#: gtk/gtklinkbutton.c:178 +#: ../gtk/gtklinkbutton.c:190 msgid "Whether this link has been visited." msgstr "Om denne lenken har vært besøkt.<" -#: gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:171 msgid "Pack direction" msgstr "Pakkeretning" -#: gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:172 msgid "The pack direction of the menubar" msgstr "Pakkeretning for menylinjen" -#: gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:188 msgid "Child Pack direction" msgstr "" -#: gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:189 #, fuzzy msgid "The child pack direction of the menubar" msgstr "Orientering for verktøylinjen" -#: gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:198 msgid "Style of bevel around the menubar" msgstr "Stil på kanten rundt menylinjen" -#: gtk/gtkmenubar.c:197 gtk/gtktoolbar.c:544 +#: ../gtk/gtkmenubar.c:205 ../gtk/gtktoolbar.c:570 msgid "Internal padding" msgstr "Internt fyll" -#: gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:206 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "Mengde med kantplass mellom menylinjens skygge og menyoppføringene" -#: gtk/gtkmenubar.c:205 -msgid "Delay before drop down menus appear" -msgstr "Pause før nedtrekksmenyer vises" - -#: gtk/gtkmenubar.c:206 -msgid "Delay before the submenus of a menu bar appear" -msgstr "Pause før undermenyene i en menylinje vises" - -#: gtk/gtkmenu.c:526 +#: ../gtk/gtkmenu.c:519 msgid "The currently selected menu item" msgstr "Valgt menyoppføring" -#: gtk/gtkmenu.c:541 +#: ../gtk/gtkmenu.c:534 msgid "The accel group holding accelerators for the menu" msgstr "Akselleratorgruppe som inneholder akselleratorer for menyen" -#: gtk/gtkmenu.c:555 gtk/gtkmenuitem.c:318 +#: ../gtk/gtkmenu.c:548 ../gtk/gtkmenuitem.c:317 msgid "Accel Path" msgstr "Akselleratorsti" -#: gtk/gtkmenu.c:556 +#: ../gtk/gtkmenu.c:549 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "" -#: gtk/gtkmenu.c:572 +#: ../gtk/gtkmenu.c:565 msgid "Attach Widget" msgstr "Fest komponent" -#: gtk/gtkmenu.c:573 +#: ../gtk/gtkmenu.c:566 msgid "The widget the menu is attached to" msgstr "Komponenten menyen er festet til" -#: gtk/gtkmenu.c:581 +#: ../gtk/gtkmenu.c:574 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" msgstr "" "En tittel som skal vises av vindushåndtereren når denne menyen er avrevet" -#: gtk/gtkmenu.c:595 +#: ../gtk/gtkmenu.c:588 msgid "Tearoff State" msgstr "Avrevet tilstand" -#: gtk/gtkmenu.c:596 +#: ../gtk/gtkmenu.c:589 msgid "A boolean that indicates whether the menu is torn-off" msgstr "En bolsk verdi som indikerer om menyen er avrevet" -#: gtk/gtkmenu.c:610 +#: ../gtk/gtkmenu.c:603 msgid "Monitor" msgstr "Skjerm" -#: gtk/gtkmenu.c:611 +#: ../gtk/gtkmenu.c:604 msgid "The monitor the menu will be popped up on" msgstr "" -#: gtk/gtkmenu.c:617 +#: ../gtk/gtkmenu.c:610 msgid "Vertical Padding" msgstr "Vertikalt fyll" -#: gtk/gtkmenu.c:618 +#: ../gtk/gtkmenu.c:611 msgid "Extra space at the top and bottom of the menu" msgstr "Ekstra mellomrom på topp og bunn av menyen" -#: gtk/gtkmenu.c:640 +#: ../gtk/gtkmenu.c:633 msgid "Reserve Toggle Size" msgstr "" -#: gtk/gtkmenu.c:641 +#: ../gtk/gtkmenu.c:634 #, fuzzy msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" msgstr "En bolsk verdi som indikerer om menyen er avrevet" -#: gtk/gtkmenu.c:647 +#: ../gtk/gtkmenu.c:640 msgid "Horizontal Padding" msgstr "Horisontalt fyll" -#: gtk/gtkmenu.c:648 +#: ../gtk/gtkmenu.c:641 msgid "Extra space at the left and right edges of the menu" msgstr "Ekstra plass på venstre og høyre side av menyen" -#: gtk/gtkmenu.c:656 +#: ../gtk/gtkmenu.c:649 msgid "Vertical Offset" msgstr "Vertikal avstand" -#: gtk/gtkmenu.c:657 +#: ../gtk/gtkmenu.c:650 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" @@ -3485,11 +3558,11 @@ msgstr "" "Plasser menyen med vertikal avstand lik dette antall piksler når den er en " "undermeny" -#: gtk/gtkmenu.c:665 +#: ../gtk/gtkmenu.c:658 msgid "Horizontal Offset" msgstr "Horisontal avstand" -#: gtk/gtkmenu.c:666 +#: ../gtk/gtkmenu.c:659 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" @@ -3497,301 +3570,271 @@ msgstr "" "Plasser menyen med horisontal avstand lik dette antall piksler når den er en " "undermeny." -#: gtk/gtkmenu.c:674 +#: ../gtk/gtkmenu.c:667 msgid "Double Arrows" msgstr "Doble piler" -#: gtk/gtkmenu.c:675 +#: ../gtk/gtkmenu.c:668 msgid "When scrolling, always show both arrows." msgstr "" -#: gtk/gtkmenu.c:688 +#: ../gtk/gtkmenu.c:681 msgid "Arrow Placement" msgstr "Plassering av pil" -#: gtk/gtkmenu.c:689 +#: ../gtk/gtkmenu.c:682 msgid "Indicates where scroll arrows should be placed" msgstr "" -#: gtk/gtkmenu.c:697 +#: ../gtk/gtkmenu.c:690 msgid "Left Attach" msgstr "Venstre feste" -#: gtk/gtkmenu.c:698 gtk/gtktable.c:193 +#: ../gtk/gtkmenu.c:691 ../gtk/gtktable.c:202 msgid "The column number to attach the left side of the child to" msgstr "Kolonnenummer som venstre side av etterkommer skal festes til" -#: gtk/gtkmenu.c:705 +#: ../gtk/gtkmenu.c:698 msgid "Right Attach" msgstr "Høyre feste" -#: gtk/gtkmenu.c:706 +#: ../gtk/gtkmenu.c:699 msgid "The column number to attach the right side of the child to" msgstr "Kolonnenummer som høyre side av etterkommer skal festes til" -#: gtk/gtkmenu.c:713 +#: ../gtk/gtkmenu.c:706 msgid "Top Attach" msgstr "Toppfeste" -#: gtk/gtkmenu.c:714 +#: ../gtk/gtkmenu.c:707 msgid "The row number to attach the top of the child to" msgstr "Radnummer som toppen av etterkommer skal festes til" -#: gtk/gtkmenu.c:721 +#: ../gtk/gtkmenu.c:714 msgid "Bottom Attach" msgstr "Bunnfeste" -#: gtk/gtkmenu.c:722 gtk/gtktable.c:214 +#: ../gtk/gtkmenu.c:715 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "Radnummer som bunn av etterkommer skal festes til" -#: gtk/gtkmenu.c:736 +#: ../gtk/gtkmenu.c:729 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "" -#: gtk/gtkmenu.c:823 -msgid "Can change accelerators" -msgstr "Kan endre akselleratorer" - -#: gtk/gtkmenu.c:824 -msgid "" -"Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "" -"Om menyakselleratorer kan endres ved å trykke en tast over menyoppføringen" - -#: gtk/gtkmenu.c:829 -msgid "Delay before submenus appear" -msgstr "Pause før undermenyer vises" - -#: gtk/gtkmenu.c:830 -msgid "" -"Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "" -"Minste tid pekeren kan være over en menyoppføring før undermenyen vises" - -#: gtk/gtkmenu.c:837 -msgid "Delay before hiding a submenu" -msgstr "Pause før en undermeny skjules" - -#: gtk/gtkmenu.c:838 -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "Tid før undermenyen skjules når pekeren beveger seg mot undermenyen" - -#: gtk/gtkmenuitem.c:285 +#: ../gtk/gtkmenuitem.c:284 msgid "Right Justified" msgstr "Høyrejustert" -#: gtk/gtkmenuitem.c:286 +#: ../gtk/gtkmenuitem.c:285 msgid "" "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "" -#: gtk/gtkmenuitem.c:300 +#: ../gtk/gtkmenuitem.c:299 msgid "Submenu" msgstr "Undermeny" -#: gtk/gtkmenuitem.c:301 +#: ../gtk/gtkmenuitem.c:300 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "" -#: gtk/gtkmenuitem.c:319 +#: ../gtk/gtkmenuitem.c:318 msgid "Sets the accelerator path of the menu item" msgstr "" -#: gtk/gtkmenuitem.c:334 +#: ../gtk/gtkmenuitem.c:333 msgid "The text for the child label" msgstr "Tekst for underetiketten" -#: gtk/gtkmenuitem.c:397 +#: ../gtk/gtkmenuitem.c:396 #, fuzzy msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "Mengde plass som brukes av pilen" -#: gtk/gtkmenuitem.c:410 +#: ../gtk/gtkmenuitem.c:409 msgid "Width in Characters" msgstr "Bredde i tegn" -#: gtk/gtkmenuitem.c:411 +#: ../gtk/gtkmenuitem.c:410 msgid "The minimum desired width of the menu item in characters" msgstr "Den minste ønskede bredden på menyoppføringen i antall tegn" -#: gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:362 msgid "Take Focus" msgstr "Ta fokus" -#: gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:363 #, fuzzy msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "" "En tittel som skal vises av vindushåndtereren når denne menyen er avrevet" -#: gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:246 msgid "Menu" msgstr "Meny" -#: gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:247 msgid "The dropdown menu" msgstr "Hurtigmenyen" -#: gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:184 msgid "Image/label border" msgstr "Kant for bilde/etikett" -#: gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:185 msgid "Width of border around the label and image in the message dialog" msgstr "Bredde på kanten rundt etikett og bilde i meldingsdialogen" -#: gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:209 msgid "Message Buttons" msgstr "Meldingsknapper" -#: gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:210 msgid "The buttons shown in the message dialog" msgstr "Knappene som vises i meldingsdialogen" -#: gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:227 msgid "The primary text of the message dialog" msgstr "Primær tekst i meldingsdialogen" -#: gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:242 msgid "Use Markup" msgstr "Bruk tagging" -#: gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:243 #, fuzzy msgid "The primary text of the title includes Pango markup." msgstr "Teksten i etiketten inneholder XML-tagger. Se pango_parse_markup()" -#: gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:257 msgid "Secondary Text" msgstr "Sekundær tekst" -#: gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:258 msgid "The secondary text of the message dialog" msgstr "Sekundær tekst i meldingsdialogen" -#: gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:273 msgid "Use Markup in secondary" msgstr "" -#: gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:274 msgid "The secondary text includes Pango markup." msgstr "Sekundær tekst inkluderer Pango-merking." -#: gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:288 msgid "Image" msgstr "Bilde" -#: gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:289 msgid "The image" msgstr "Bildet" -#: gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:305 #, fuzzy msgid "Message area" msgstr "Meldingstype" -#: gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:306 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "" -#: gtk/gtkmisc.c:91 +#: ../gtk/gtkmisc.c:91 msgid "Y align" msgstr "Y-justering" -#: gtk/gtkmisc.c:92 +#: ../gtk/gtkmisc.c:92 msgid "The vertical alignment, from 0 (top) to 1 (bottom)" msgstr "Vertikal justering, fra 0 (øverst) til 1 (nederst)" -#: gtk/gtkmisc.c:101 +#: ../gtk/gtkmisc.c:101 msgid "X pad" msgstr "X-fyll" -#: gtk/gtkmisc.c:102 +#: ../gtk/gtkmisc.c:102 msgid "" "The amount of space to add on the left and right of the widget, in pixels" msgstr "Mengde mellomrom til venstre og høyre for widgetet, i piksler" -#: gtk/gtkmisc.c:111 +#: ../gtk/gtkmisc.c:111 msgid "Y pad" msgstr "Y-fyll" -#: gtk/gtkmisc.c:112 +#: ../gtk/gtkmisc.c:112 msgid "" "The amount of space to add on the top and bottom of the widget, in pixels" msgstr "Mende mellomrom over og under widgetet, i piksler" -#: gtk/gtkmountoperation.c:159 +#: ../gtk/gtkmountoperation.c:159 msgid "Parent" msgstr "Opphav" -#: gtk/gtkmountoperation.c:160 +#: ../gtk/gtkmountoperation.c:160 msgid "The parent window" msgstr "Opphavsvindu" -#: gtk/gtkmountoperation.c:167 +#: ../gtk/gtkmountoperation.c:167 msgid "Is Showing" msgstr "Vises" -#: gtk/gtkmountoperation.c:168 +#: ../gtk/gtkmountoperation.c:168 msgid "Are we showing a dialog" msgstr "Viser vi en dialog" -#: gtk/gtkmountoperation.c:176 +#: ../gtk/gtkmountoperation.c:176 msgid "The screen where this window will be displayed." msgstr "Skjermen hvor dette vinduet vil vises." -#: gtk/gtknotebook.c:595 +#: ../gtk/gtknotebook.c:692 msgid "Page" msgstr "Side" -#: gtk/gtknotebook.c:596 +#: ../gtk/gtknotebook.c:693 msgid "The index of the current page" msgstr "Indeks for aktiv side" -#: gtk/gtknotebook.c:604 +#: ../gtk/gtknotebook.c:701 msgid "Tab Position" msgstr "Faneplassering" -#: gtk/gtknotebook.c:605 +#: ../gtk/gtknotebook.c:702 msgid "Which side of the notebook holds the tabs" msgstr "Hvilken side av notisblokken innehar fanene" -#: gtk/gtknotebook.c:612 +#: ../gtk/gtknotebook.c:709 msgid "Show Tabs" msgstr "Vis faner" -#: gtk/gtknotebook.c:613 +#: ../gtk/gtknotebook.c:710 #, fuzzy msgid "Whether tabs should be shown" msgstr "Vis/Ikke vis faner" -#: gtk/gtknotebook.c:619 +#: ../gtk/gtknotebook.c:716 msgid "Show Border" msgstr "Vis kant" -#: gtk/gtknotebook.c:620 +#: ../gtk/gtknotebook.c:717 #, fuzzy msgid "Whether the border should be shown" msgstr "Vis/ikke vis kant" -#: gtk/gtknotebook.c:626 +#: ../gtk/gtknotebook.c:723 msgid "Scrollable" msgstr "Rullbar" -#: gtk/gtknotebook.c:627 +#: ../gtk/gtknotebook.c:724 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "" "Hvis SANN vil rullepiler legges til hvis det er flere faner enn det som " "passer" -#: gtk/gtknotebook.c:633 +#: ../gtk/gtknotebook.c:730 msgid "Enable Popup" msgstr "Slå på oppsprett" -#: gtk/gtknotebook.c:634 +#: ../gtk/gtknotebook.c:731 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3799,541 +3842,543 @@ msgstr "" "Hvis denne er satt til SANN vil det ved å klikke på notisblokken med høyre " "musknapp sprette opp en meny som kan brukes til å gå til en side" -#: gtk/gtknotebook.c:648 +#: ../gtk/gtknotebook.c:745 #, fuzzy msgid "Group Name" msgstr "Gruppe-ID" -#: gtk/gtknotebook.c:649 +#: ../gtk/gtknotebook.c:746 #, fuzzy msgid "Group name for tab drag and drop" msgstr "Gruppe for dra-og-slipp av faner" -#: gtk/gtknotebook.c:656 +#: ../gtk/gtknotebook.c:753 msgid "Tab label" msgstr "Etikett for fanen" -#: gtk/gtknotebook.c:657 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed on the child's tab label" msgstr "Strengen som vises i etterkommerens faneetikett" -#: gtk/gtknotebook.c:663 +#: ../gtk/gtknotebook.c:760 msgid "Menu label" msgstr "Etikett for meny" -#: gtk/gtknotebook.c:664 +#: ../gtk/gtknotebook.c:761 msgid "The string displayed in the child's menu entry" msgstr "Strengen som vises i etterkommerens menyoppføring" -#: gtk/gtknotebook.c:677 +#: ../gtk/gtknotebook.c:774 msgid "Tab expand" msgstr "Faneutvidelse" -#: gtk/gtknotebook.c:678 +#: ../gtk/gtknotebook.c:775 #, fuzzy msgid "Whether to expand the child's tab" msgstr "Om etterkommers fane skal utvides eller ikke" -#: gtk/gtknotebook.c:684 +#: ../gtk/gtknotebook.c:781 msgid "Tab fill" msgstr "Fyll for fane" -#: gtk/gtknotebook.c:685 +#: ../gtk/gtknotebook.c:782 #, fuzzy msgid "Whether the child's tab should fill the allocated area" msgstr "Om etterkommers fane skal fylle allokert område eller ikke" -#: gtk/gtknotebook.c:691 +#: ../gtk/gtknotebook.c:795 msgid "Tab pack type" msgstr "Type fanepakking" -#: gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:802 msgid "Tab reorderable" msgstr "Faner kan omorganiseres" -#: gtk/gtknotebook.c:699 +#: ../gtk/gtknotebook.c:803 #, fuzzy msgid "Whether the tab is reorderable by user action" msgstr "Vis/ikke vis kant" -#: gtk/gtknotebook.c:705 +#: ../gtk/gtknotebook.c:809 msgid "Tab detachable" msgstr "Avtagbar fane" -#: gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:810 msgid "Whether the tab is detachable" msgstr "Om fanen er avtagbar" -#: gtk/gtknotebook.c:721 gtk/gtkscrollbar.c:80 +#: ../gtk/gtknotebook.c:825 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Sekundært bakoversteg" -#: gtk/gtknotebook.c:722 +#: ../gtk/gtknotebook.c:826 msgid "" "Display a second backward arrow button on the opposite end of the tab area" msgstr "Vis en sekundær knapp med bakoverpil på motsatt side av fanefeltet" -#: gtk/gtknotebook.c:737 gtk/gtkscrollbar.c:87 +#: ../gtk/gtknotebook.c:841 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Sekundært framoversteg" -#: gtk/gtknotebook.c:738 +#: ../gtk/gtknotebook.c:842 msgid "" "Display a second forward arrow button on the opposite end of the tab area" msgstr "Vis en sekundær knapp med framoverpil på motsatt side av fanefeltet" -#: gtk/gtknotebook.c:752 gtk/gtkscrollbar.c:66 +#: ../gtk/gtknotebook.c:856 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Bakoversteg" -#: gtk/gtknotebook.c:753 gtk/gtkscrollbar.c:67 +#: ../gtk/gtknotebook.c:857 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Vis standard knapp med bakoverpil" -#: gtk/gtknotebook.c:767 gtk/gtkscrollbar.c:73 +#: ../gtk/gtknotebook.c:871 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Framoversteg" -#: gtk/gtknotebook.c:768 gtk/gtkscrollbar.c:74 +#: ../gtk/gtknotebook.c:872 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Vis standard knapp med framoversteg" -#: gtk/gtknotebook.c:782 +#: ../gtk/gtknotebook.c:886 msgid "Tab overlap" msgstr "Faneoverlapping" -#: gtk/gtknotebook.c:783 +#: ../gtk/gtknotebook.c:887 msgid "Size of tab overlap area" msgstr "Størrelse på område for overlapping mellom faner" -#: gtk/gtknotebook.c:798 +#: ../gtk/gtknotebook.c:902 msgid "Tab curvature" msgstr "" -#: gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:903 #, fuzzy msgid "Size of tab curvature" msgstr "Størrelse på plassholdere" -#: gtk/gtknotebook.c:815 +#: ../gtk/gtknotebook.c:919 msgid "Arrow spacing" msgstr "Mellomrom mellom piler" -#: gtk/gtknotebook.c:816 +#: ../gtk/gtknotebook.c:920 #, fuzzy msgid "Scroll arrow spacing" msgstr "Avstand for rullefelt" -#: gtk/gtkorientable.c:63 gtk/gtkstatusicon.c:319 gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:319 +#: ../gtk/gtktrayicon-x11.c:124 msgid "Orientation" msgstr "Orientering" -#: gtk/gtkorientable.c:64 +#: ../gtk/gtkorientable.c:64 msgid "The orientation of the orientable" msgstr "Orientering for orienterbar komponent" -#: gtk/gtkpaned.c:271 +#: ../gtk/gtkpaned.c:328 msgid "" "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "Posisjon for «paned»-separator i piksler (0 betyr øverst til venstre)" -#: gtk/gtkpaned.c:280 +#: ../gtk/gtkpaned.c:337 msgid "Position Set" msgstr "Posisjon satt" -#: gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:338 msgid "TRUE if the Position property should be used" msgstr "SANN hvis egenskapen Position skal brukes" -#: gtk/gtkpaned.c:287 +#: ../gtk/gtkpaned.c:344 msgid "Handle Size" msgstr "Størrelse på håndtak" -#: gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:345 msgid "Width of handle" msgstr "Størrelse på håndtak" -#: gtk/gtkpaned.c:304 +#: ../gtk/gtkpaned.c:361 msgid "Minimal Position" msgstr "Minste posisjon" -#: gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:362 msgid "Smallest possible value for the \"position\" property" msgstr "Minste mulige verdi for egenskapen «position»" -#: gtk/gtkpaned.c:322 +#: ../gtk/gtkpaned.c:379 msgid "Maximal Position" msgstr "Største posisjon" -#: gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:380 msgid "Largest possible value for the \"position\" property" msgstr "Største mulige verdi for egenskapen «position»" -#: gtk/gtkpaned.c:340 +#: ../gtk/gtkpaned.c:397 msgid "Resize" msgstr "Endre størrelse" -#: gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:398 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "" "Hvis SANN vil etterkommer utvides og krypmes sammen med paned-komponenten" -#: gtk/gtkpaned.c:356 +#: ../gtk/gtkpaned.c:413 msgid "Shrink" msgstr "Krymp" -#: gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:414 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "Hvis SANN vil etter kommer gjøres mindre enn forespurt størrelse" -#: gtk/gtkplug.c:171 gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:177 ../gtk/gtkstatusicon.c:303 msgid "Embedded" msgstr "Innebygget" -#: gtk/gtkplug.c:172 +#: ../gtk/gtkplug.c:178 #, fuzzy msgid "Whether the plug is embedded" msgstr "Om pluggen er innebygget" -#: gtk/gtkplug.c:186 +#: ../gtk/gtkplug.c:192 msgid "Socket Window" msgstr "Vindu for plugg" -#: gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:193 #, fuzzy msgid "The window of the socket the plug is embedded in" msgstr "Om handlingen er synlig" -#: gtk/gtkprinter.c:126 +#: ../gtk/gtkprinter.c:126 msgid "Name of the printer" msgstr "Navn på skriveren" -#: gtk/gtkprinter.c:132 +#: ../gtk/gtkprinter.c:132 msgid "Backend" msgstr "Motor" -#: gtk/gtkprinter.c:133 +#: ../gtk/gtkprinter.c:133 msgid "Backend for the printer" msgstr "Motor for skriveren" -#: gtk/gtkprinter.c:139 +#: ../gtk/gtkprinter.c:139 msgid "Is Virtual" msgstr "Er virtuell" -#: gtk/gtkprinter.c:140 +#: ../gtk/gtkprinter.c:140 msgid "FALSE if this represents a real hardware printer" msgstr "FALSE hvis dette representerer en faktisk maskinvareskriver" -#: gtk/gtkprinter.c:146 +#: ../gtk/gtkprinter.c:146 msgid "Accepts PDF" msgstr "Godtar PDF" -#: gtk/gtkprinter.c:147 +#: ../gtk/gtkprinter.c:147 msgid "TRUE if this printer can accept PDF" msgstr "TRUE hvis skriveren kan motta PDF" -#: gtk/gtkprinter.c:153 +#: ../gtk/gtkprinter.c:153 msgid "Accepts PostScript" msgstr "Godtar PostScript" -#: gtk/gtkprinter.c:154 +#: ../gtk/gtkprinter.c:154 msgid "TRUE if this printer can accept PostScript" msgstr "TRUE hvis denne skriveren kan motta PostScript" -#: gtk/gtkprinter.c:160 +#: ../gtk/gtkprinter.c:160 msgid "State Message" msgstr "Tilstandsmelding" -#: gtk/gtkprinter.c:161 +#: ../gtk/gtkprinter.c:161 msgid "String giving the current state of the printer" msgstr "Streng som viser skriverens nåværende tilstand" -#: gtk/gtkprinter.c:167 +#: ../gtk/gtkprinter.c:167 msgid "Location" -msgstr "Lokasjon" +msgstr "Adresse" -#: gtk/gtkprinter.c:168 +#: ../gtk/gtkprinter.c:168 msgid "The location of the printer" -msgstr "Lokasjon for skriveren" +msgstr "Adresse til skriveren" -#: gtk/gtkprinter.c:175 +#: ../gtk/gtkprinter.c:175 msgid "The icon name to use for the printer" msgstr "Ikonnavn som skal brukes for skriveren" -#: gtk/gtkprinter.c:181 +#: ../gtk/gtkprinter.c:181 msgid "Job Count" msgstr "Jobantall" -#: gtk/gtkprinter.c:182 +#: ../gtk/gtkprinter.c:182 msgid "Number of jobs queued in the printer" msgstr "Antall jobber som er kølagt for denne skriveren" -#: gtk/gtkprinter.c:200 +#: ../gtk/gtkprinter.c:200 msgid "Paused Printer" msgstr "Stoppet skriver" -#: gtk/gtkprinter.c:201 +#: ../gtk/gtkprinter.c:201 msgid "TRUE if this printer is paused" msgstr "TRUE hvis skriveren er på pause" -#: gtk/gtkprinter.c:214 +#: ../gtk/gtkprinter.c:214 msgid "Accepting Jobs" msgstr "Godtar jobber" -#: gtk/gtkprinter.c:215 +#: ../gtk/gtkprinter.c:215 msgid "TRUE if this printer is accepting new jobs" msgstr "TRUE hvis skriveren kan motta nye jobber" -#: gtk/gtkprinteroptionwidget.c:122 +#: ../gtk/gtkprinteroptionwidget.c:121 msgid "Source option" msgstr "Alternativ for kilde" -#: gtk/gtkprinteroptionwidget.c:123 +#: ../gtk/gtkprinteroptionwidget.c:122 msgid "The PrinterOption backing this widget" msgstr "" -#: gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:127 msgid "Title of the print job" msgstr "Tittelen på utskriftsjobben" -#: gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:135 msgid "Printer" msgstr "Skriver" -#: gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:136 msgid "Printer to print the job to" msgstr "Skriver jobben skal sendes til" -#: gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:144 msgid "Settings" msgstr "Innstillinger" -#: gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:145 msgid "Printer settings" msgstr "Innstillinger for skriver" -#: gtk/gtkprintjob.c:142 gtk/gtkprintjob.c:143 gtk/gtkprintunixdialog.c:298 +#: ../gtk/gtkprintjob.c:153 ../gtk/gtkprintjob.c:154 +#: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Sideoppsett" -#: gtk/gtkprintjob.c:151 gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:162 ../gtk/gtkprintoperation.c:1133 msgid "Track Print Status" msgstr "Spor skriverstatus" -#: gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:163 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." msgstr "" -#: gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1005 msgid "Default Page Setup" msgstr "Forvalgt sideoppsett" -#: gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1006 msgid "The GtkPageSetup used by default" msgstr "GtkPageSetup brukt som forvalg" -#: gtk/gtkprintoperation.c:1024 gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1024 ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Skriverinnstillinger" -#: gtk/gtkprintoperation.c:1025 gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1025 ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "" -#: gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1043 msgid "Job Name" msgstr "Navn på jobb" -#: gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1044 msgid "A string used for identifying the print job." msgstr "En streng som brukes for å identifisere utskriftsjobben." -#: gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1068 msgid "Number of Pages" msgstr "Antall sider" -#: gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1069 msgid "The number of pages in the document." msgstr "Antall sider i dokumentet." -#: gtk/gtkprintoperation.c:1090 gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1090 ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Denne siden" -#: gtk/gtkprintoperation.c:1091 gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1091 ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "Aktiv side i dokumentet" -#: gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1112 msgid "Use full page" msgstr "Bruk full side" -#: gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1113 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" msgstr "" -#: gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1134 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." msgstr "" -#: gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1151 msgid "Unit" msgstr "Enhet" -#: gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1152 msgid "The unit in which distances can be measured in the context" msgstr "" -#: gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1169 msgid "Show Dialog" msgstr "Vis dialog" -#: gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1170 msgid "TRUE if a progress dialog is shown while printing." msgstr "" -#: gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1193 msgid "Allow Async" msgstr "Tillat asynkron" -#: gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1194 msgid "TRUE if print process may run asynchronous." msgstr "" -#: gtk/gtkprintoperation.c:1216 gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1216 ../gtk/gtkprintoperation.c:1217 msgid "Export filename" msgstr "Eksporter filnavn" -#: gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1231 msgid "Status" msgstr "Status" -#: gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1232 msgid "The status of the print operation" msgstr "Status for utskriftsoperasjonen" -#: gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1252 msgid "Status String" msgstr "Statusstreng" -#: gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1253 msgid "A human-readable description of the status" msgstr "Beskrivelse av status" -#: gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1271 msgid "Custom tab label" msgstr "Egendefinert etikett for fane" -#: gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1272 msgid "Label for the tab containing custom widgets." msgstr "" -#: gtk/gtkprintoperation.c:1287 gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1287 ../gtk/gtkprintunixdialog.c:341 #, fuzzy msgid "Support Selection" msgstr "Fargeutvalg" -#: gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1288 msgid "TRUE if the print operation will support print of selection." msgstr "" -#: gtk/gtkprintoperation.c:1304 gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1304 ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Har utvalg" -#: gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1305 #, fuzzy msgid "TRUE if a selection exists." msgstr "TRUE hvis et utvalg eksisterer." -#: gtk/gtkprintoperation.c:1320 gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1320 ../gtk/gtkprintunixdialog.c:357 #, fuzzy msgid "Embed Page Setup" msgstr "Sideoppsett" -#: gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1321 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "" -#: gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1342 msgid "Number of Pages To Print" msgstr "Antall sider som skal skrives ut" -#: gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1343 msgid "The number of pages that will be printed." msgstr "Antall sider som vil bli skrevet ut." -#: gtk/gtkprintunixdialog.c:299 +#: ../gtk/gtkprintunixdialog.c:299 msgid "The GtkPageSetup to use" msgstr "GtkPageSetup som skal brukes" -#: gtk/gtkprintunixdialog.c:324 +#: ../gtk/gtkprintunixdialog.c:324 msgid "Selected Printer" msgstr "Valgt skriver" -#: gtk/gtkprintunixdialog.c:325 +#: ../gtk/gtkprintunixdialog.c:325 msgid "The GtkPrinter which is selected" msgstr "GtkPrinter som er valgt" -#: gtk/gtkprintunixdialog.c:332 +#: ../gtk/gtkprintunixdialog.c:332 #, fuzzy msgid "Manual Capabilities" msgstr "Manuelle " -#: gtk/gtkprintunixdialog.c:333 +#: ../gtk/gtkprintunixdialog.c:333 msgid "Capabilities the application can handle" msgstr "" -#: gtk/gtkprintunixdialog.c:342 +#: ../gtk/gtkprintunixdialog.c:342 #, fuzzy msgid "Whether the dialog supports selection" msgstr "Om etiketten tegnes med valgt skrift" -#: gtk/gtkprintunixdialog.c:350 +#: ../gtk/gtkprintunixdialog.c:350 #, fuzzy msgid "Whether the application has a selection" msgstr "Om handlingen er aktivert." -#: gtk/gtkprintunixdialog.c:358 +#: ../gtk/gtkprintunixdialog.c:358 msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" msgstr "" -#: gtk/gtkprogressbar.c:134 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "Andel" -#: gtk/gtkprogressbar.c:135 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "Total andel av arbeid som er fullført" -#: gtk/gtkprogressbar.c:142 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "Pulssteg" -#: gtk/gtkprogressbar.c:143 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" msgstr "" "Andel total fremgang for bevegelse av den sprettende blokken for hver puls" -#: gtk/gtkprogressbar.c:151 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "Tekst som skal vises i fremgangsmåleren" -#: gtk/gtkprogressbar.c:158 +#: ../gtk/gtkprogressbar.c:185 msgid "Show text" msgstr "Vis tekst" -#: gtk/gtkprogressbar.c:159 +#: ../gtk/gtkprogressbar.c:186 msgid "Whether the progress is shown as text." msgstr "Om fremgang vises som tekst." -#: gtk/gtkprogressbar.c:181 +#: ../gtk/gtkprogressbar.c:208 #, fuzzy msgid "" "The preferred place to ellipsize the string, if the progress bar does not " @@ -4342,69 +4387,69 @@ msgstr "" "Det prioriterte stedet å forkorte strengen hvis framdriftsviseren ikke har " "nok plass til å vise hele strengen, hvis i det hele tatt" -#: gtk/gtkprogressbar.c:188 +#: ../gtk/gtkprogressbar.c:215 #, fuzzy msgid "X spacing" msgstr "Ekstra mellomrom" -#: gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:216 msgid "Extra spacing applied to the width of a progress bar." msgstr "" -#: gtk/gtkprogressbar.c:194 +#: ../gtk/gtkprogressbar.c:221 #, fuzzy msgid "Y spacing" msgstr "Mellomrom på y-aksen" -#: gtk/gtkprogressbar.c:195 +#: ../gtk/gtkprogressbar.c:222 msgid "Extra spacing applied to the height of a progress bar." msgstr "" -#: gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:235 #, fuzzy msgid "Minimum horizontal bar width" msgstr "Bredde på horisontal separator" -#: gtk/gtkprogressbar.c:209 +#: ../gtk/gtkprogressbar.c:236 #, fuzzy msgid "The minimum horizontal width of the progress bar" msgstr "Horisontal justering for etikett" -#: gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:248 #, fuzzy msgid "Minimum horizontal bar height" msgstr "Horisontal justering" -#: gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:249 #, fuzzy msgid "Minimum horizontal height of the progress bar" msgstr "Verdi for fremgangsmåleren" -#: gtk/gtkprogressbar.c:234 +#: ../gtk/gtkprogressbar.c:261 #, fuzzy msgid "Minimum vertical bar width" msgstr "Bredde på vertikal separator" -#: gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:262 #, fuzzy msgid "The minimum vertical width of the progress bar" msgstr "Tekst på fremgangsmåleren" -#: gtk/gtkprogressbar.c:247 +#: ../gtk/gtkprogressbar.c:274 #, fuzzy msgid "Minimum vertical bar height" msgstr "Minimal høyde for barn" -#: gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:275 #, fuzzy msgid "The minimum vertical height of the progress bar" msgstr "Verdi for fremgangsmåleren" -#: gtk/gtkradioaction.c:118 +#: ../gtk/gtkradioaction.c:118 msgid "The value" msgstr "Verdien" -#: gtk/gtkradioaction.c:119 +#: ../gtk/gtkradioaction.c:119 msgid "" "The value returned by gtk_radio_action_get_current_value() when this action " "is the current action of its group." @@ -4412,481 +4457,461 @@ msgstr "" "Verdien som returneres av gtk_radio_action_get_current_value() når denne " "handlingen er aktiv handling i sin gruppe." -#: gtk/gtkradioaction.c:135 gtk/gtkradiobutton.c:160 -#: gtk/gtkradiomenuitem.c:373 gtk/gtkradiotoolbutton.c:65 +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 +#: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "Gruppe" -#: gtk/gtkradioaction.c:136 +#: ../gtk/gtkradioaction.c:136 msgid "The radio action whose group this action belongs to." msgstr "Radiohandling hvis gruppe denne handlingen tilhører." -#: gtk/gtkradioaction.c:151 +#: ../gtk/gtkradioaction.c:151 msgid "The current value" msgstr "Nåværende verdi" -#: gtk/gtkradioaction.c:152 +#: ../gtk/gtkradioaction.c:152 msgid "" "The value property of the currently active member of the group to which this " "action belongs." msgstr "" -#: gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "Radioknappen med samme gruppe som widgetet tilhører." -#: gtk/gtkradiomenuitem.c:374 +#: ../gtk/gtkradiomenuitem.c:374 #, fuzzy msgid "The radio menu item whose group this widget belongs to." msgstr "Radioknappen med samme gruppe som widgetet tilhører." -#: gtk/gtkradiotoolbutton.c:66 +#: ../gtk/gtkradiotoolbutton.c:66 #, fuzzy msgid "The radio tool button whose group this button belongs to." msgstr "Radioknappen med samme gruppe som widgetet tilhører." -#: gtk/gtkrange.c:410 +#: ../gtk/gtkrange.c:422 msgid "Update policy" msgstr "Oppdateringspolicy" -#: gtk/gtkrange.c:411 +#: ../gtk/gtkrange.c:423 msgid "How the range should be updated on the screen" msgstr "Hvordan området skal oppdateres på skjermen" -#: gtk/gtkrange.c:420 +#: ../gtk/gtkrange.c:432 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "GtkAdjustment som inneholder nåværende verdi for dette områdeobjektet" -#: gtk/gtkrange.c:428 +#: ../gtk/gtkrange.c:440 msgid "Invert direction slider moves to increase range value" msgstr "Snu retningen glideren beveger seg for å øke verdien i området" -#: gtk/gtkrange.c:435 +#: ../gtk/gtkrange.c:447 msgid "Lower stepper sensitivity" msgstr "" -#: gtk/gtkrange.c:436 +#: ../gtk/gtkrange.c:448 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" msgstr "" -#: gtk/gtkrange.c:444 +#: ../gtk/gtkrange.c:456 msgid "Upper stepper sensitivity" msgstr "" -#: gtk/gtkrange.c:445 +#: ../gtk/gtkrange.c:457 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" msgstr "" -#: gtk/gtkrange.c:462 +#: ../gtk/gtkrange.c:474 msgid "Show Fill Level" msgstr "Vis fyllnivå" -#: gtk/gtkrange.c:463 +#: ../gtk/gtkrange.c:475 msgid "Whether to display a fill level indicator graphics on trough." msgstr "" -#: gtk/gtkrange.c:479 +#: ../gtk/gtkrange.c:491 msgid "Restrict to Fill Level" msgstr "" -#: gtk/gtkrange.c:480 +#: ../gtk/gtkrange.c:492 msgid "Whether to restrict the upper boundary to the fill level." msgstr "" -#: gtk/gtkrange.c:495 +#: ../gtk/gtkrange.c:507 msgid "Fill Level" msgstr "Fyllnivå" -#: gtk/gtkrange.c:496 +#: ../gtk/gtkrange.c:508 msgid "The fill level." msgstr "Fyllnivået." -#: gtk/gtkrange.c:504 +#: ../gtk/gtkrange.c:516 ../gtk/gtkswitch.c:772 msgid "Slider Width" msgstr "Bredde på rullelisten" -#: gtk/gtkrange.c:505 +#: ../gtk/gtkrange.c:517 msgid "Width of scrollbar or scale thumb" msgstr "Bredde for rullefeltet eller skalering" -#: gtk/gtkrange.c:512 +#: ../gtk/gtkrange.c:524 msgid "Trough Border" msgstr "Gjennom kant" -#: gtk/gtkrange.c:513 +#: ../gtk/gtkrange.c:525 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "Mellomrom mellom «thumb/steppers» og ytre kant" -#: gtk/gtkrange.c:520 +#: ../gtk/gtkrange.c:532 msgid "Stepper Size" msgstr "Størrelse på steg" -#: gtk/gtkrange.c:521 +#: ../gtk/gtkrange.c:533 msgid "Length of step buttons at ends" msgstr "Lengde på stegknappene ved kantene" -#: gtk/gtkrange.c:536 +#: ../gtk/gtkrange.c:548 msgid "Stepper Spacing" msgstr "Stegmellomrom" -#: gtk/gtkrange.c:537 +#: ../gtk/gtkrange.c:549 msgid "Spacing between step buttons and thumb" msgstr "Mellomrom mellom stegknapper og «thumb»" -#: gtk/gtkrange.c:544 +#: ../gtk/gtkrange.c:556 msgid "Arrow X Displacement" msgstr "X-forskyvning for pil" -#: gtk/gtkrange.c:545 +#: ../gtk/gtkrange.c:557 msgid "" "How far in the x direction to move the arrow when the button is depressed" msgstr "Hvor langt pilen flyttes i x-retning når knappen er nedtrykt" -#: gtk/gtkrange.c:552 +#: ../gtk/gtkrange.c:564 msgid "Arrow Y Displacement" msgstr "Y-forskyvning for pil" -#: gtk/gtkrange.c:553 +#: ../gtk/gtkrange.c:565 msgid "" "How far in the y direction to move the arrow when the button is depressed" msgstr "Hvor langt pilen flyttes i y-retning når knappen er nedtrykt" -#: gtk/gtkrange.c:571 +#: ../gtk/gtkrange.c:583 msgid "Trough Under Steppers" msgstr "" -#: gtk/gtkrange.c:572 +#: ../gtk/gtkrange.c:584 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" msgstr "" -#: gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:597 #, fuzzy msgid "Arrow scaling" msgstr "Skalering av piler" -#: gtk/gtkrange.c:586 +#: ../gtk/gtkrange.c:598 msgid "Arrow scaling with regard to scroll button size" msgstr "" -#: gtk/gtkrecentaction.c:635 gtk/gtkrecentchoosermenu.c:252 +#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:246 msgid "Show Numbers" msgstr "Vis tall" -#: gtk/gtkrecentaction.c:636 gtk/gtkrecentchoosermenu.c:253 +#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:247 #, fuzzy msgid "Whether the items should be displayed with a number" msgstr "Om avrivningsoppføringer skal legges til for menyen" -#: gtk/gtkrecentchooser.c:132 +#: ../gtk/gtkrecentchooser.c:132 msgid "Recent Manager" msgstr "" -#: gtk/gtkrecentchooser.c:133 +#: ../gtk/gtkrecentchooser.c:133 msgid "The RecentManager object to use" msgstr "" -#: gtk/gtkrecentchooser.c:147 +#: ../gtk/gtkrecentchooser.c:147 msgid "Show Private" msgstr "Vis privat" -#: gtk/gtkrecentchooser.c:148 +#: ../gtk/gtkrecentchooser.c:148 msgid "Whether the private items should be displayed" msgstr "Om private oppføringer skal vises" -#: gtk/gtkrecentchooser.c:161 +#: ../gtk/gtkrecentchooser.c:161 msgid "Show Tooltips" msgstr "Vis verktøytips" -#: gtk/gtkrecentchooser.c:162 +#: ../gtk/gtkrecentchooser.c:162 msgid "Whether there should be a tooltip on the item" msgstr "Om oppføringen skal ha verktøytips" -#: gtk/gtkrecentchooser.c:174 +#: ../gtk/gtkrecentchooser.c:174 msgid "Show Icons" msgstr "Vis ikoner" -#: gtk/gtkrecentchooser.c:175 +#: ../gtk/gtkrecentchooser.c:175 #, fuzzy msgid "Whether there should be an icon near the item" msgstr "Vis/ikke vis kant" -#: gtk/gtkrecentchooser.c:190 +#: ../gtk/gtkrecentchooser.c:190 msgid "Show Not Found" msgstr "Vis ikke funnet" -#: gtk/gtkrecentchooser.c:191 +#: ../gtk/gtkrecentchooser.c:191 #, fuzzy msgid "Whether the items pointing to unavailable resources should be displayed" msgstr "Om skjulte filer og mapper skal vises" -#: gtk/gtkrecentchooser.c:204 +#: ../gtk/gtkrecentchooser.c:204 #, fuzzy msgid "Whether to allow multiple items to be selected" msgstr "Om valg av flere filer skal tillates" -#: gtk/gtkrecentchooser.c:217 +#: ../gtk/gtkrecentchooser.c:217 msgid "Local only" msgstr "Kun lokalt" -#: gtk/gtkrecentchooser.c:218 +#: ../gtk/gtkrecentchooser.c:218 #, fuzzy msgid "Whether the selected resource(s) should be limited to local file: URIs" msgstr "Om valgt(e) fil(er) skal begrenses til lokale file: URLer" -#: gtk/gtkrecentchooser.c:234 +#: ../gtk/gtkrecentchooser.c:234 msgid "Limit" msgstr "Grense" -#: gtk/gtkrecentchooser.c:235 +#: ../gtk/gtkrecentchooser.c:235 msgid "The maximum number of items to be displayed" msgstr "Maksimalt antall oppføringer som skal vises" -#: gtk/gtkrecentchooser.c:249 +#: ../gtk/gtkrecentchooser.c:249 msgid "Sort Type" msgstr "Sorteringstype" -#: gtk/gtkrecentchooser.c:250 +#: ../gtk/gtkrecentchooser.c:250 msgid "The sorting order of the items displayed" msgstr "Sorteringsrekkefølge for oppføringer som skal vises" -#: gtk/gtkrecentchooser.c:265 +#: ../gtk/gtkrecentchooser.c:265 #, fuzzy msgid "The current filter for selecting which resources are displayed" msgstr "Filter for å velge hvilke filer som vises" -#: gtk/gtkrecentmanager.c:291 +#: ../gtk/gtkrecentmanager.c:295 msgid "The full path to the file to be used to store and read the list" msgstr "Full sti til filen som skal brukes til å lagre og lese listen" -#: gtk/gtkrecentmanager.c:306 +#: ../gtk/gtkrecentmanager.c:310 msgid "The size of the recently used resources list" msgstr "" -#: gtk/gtkruler.c:138 -msgid "Lower" -msgstr "Nedre" - -#: gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "Nedre grense for linjal" - -#: gtk/gtkruler.c:148 -msgid "Upper" -msgstr "Øvre" - -#: gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "Øvre grense for linjal" - -#: gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "Posisjon for merke på linjal" - -#: gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "Maks størrelse" - -#: gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "Maksimum størrelse på linjal" - -#: gtk/gtkruler.c:184 -msgid "Metric" -msgstr "Måleverdi" - -#: gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "Måleverdi som brukes for linjalen" - -#: gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:221 #, fuzzy msgid "The value of the scale" msgstr "Verdien for justeringen" -#: gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:231 msgid "The icon size" msgstr "Størrelse på ikon" -#: gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:240 #, fuzzy msgid "" "The GtkAdjustment that contains the current value of this scale button object" msgstr "GtkAdjustment som inneholder nåværende verdi for dette områdeobjektet" -#: gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:268 msgid "Icons" msgstr "Ikoner" -#: gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:269 msgid "List of icon names" msgstr "Liste med ikonnavn" -#: gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "Antall desimalplasser som vises i verdien" -#: gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Tegn verdi" -#: gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "Om aktiv verdi vises som en streng ved siden av rullelisten" -#: gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Plassering av verdi" -#: gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "Posisjon hvor aktiv verdi vises" -#: gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Lengde på rulleliste" -#: gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Lendge på skaleringslisten" -#: gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Mellomrom for verdier" -#: gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "Mellomrom mellom verditekst og område for glider/«through»" -#: gtk/gtkscrollbar.c:50 +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Minste lengde på rulleliste" -#: gtk/gtkscrollbar.c:51 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Minste lengde på rullefeltglider" -#: gtk/gtkscrollbar.c:59 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Fast størrelse for rulleliste" -#: gtk/gtkscrollbar.c:60 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "Ikke endre størrelse på glider, bare lås den til minste lengde" -#: gtk/gtkscrollbar.c:81 +#: ../gtk/gtkscrollbar.c:103 msgid "" "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "Vis en sekundær knapp med bakoverpil på motsatt side av rullefeltet" -#: gtk/gtkscrollbar.c:88 +#: ../gtk/gtkscrollbar.c:110 #, fuzzy msgid "" "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "Vis en sekundær knapp med framoverpil på motsatt side av rullefeltet" -#: gtk/gtkscrolledwindow.c:243 gtk/gtktreeview.c:571 +#: ../gtk/gtkscrolledwindow.c:295 msgid "Horizontal Adjustment" msgstr "Horisontal justering" -#: gtk/gtkscrolledwindow.c:250 gtk/gtktreeview.c:579 +#: ../gtk/gtkscrolledwindow.c:296 +msgid "The GtkAdjustment for the horizontal position" +msgstr "GtkAdjustment for horisontal posisjon" + +#: ../gtk/gtkscrolledwindow.c:302 msgid "Vertical Adjustment" msgstr "Vertikal justering" -#: gtk/gtkscrolledwindow.c:257 +#: ../gtk/gtkscrolledwindow.c:303 +msgid "The GtkAdjustment for the vertical position" +msgstr "GtkAdjustment for vertikal posisjon" + +#: ../gtk/gtkscrolledwindow.c:309 msgid "Horizontal Scrollbar Policy" msgstr "Oppførsel for horisontalt rullefelt" -#: gtk/gtkscrolledwindow.c:258 +#: ../gtk/gtkscrolledwindow.c:310 msgid "When the horizontal scrollbar is displayed" msgstr "Når horisontalt rullefelt skal vises" -#: gtk/gtkscrolledwindow.c:265 +#: ../gtk/gtkscrolledwindow.c:317 msgid "Vertical Scrollbar Policy" msgstr "Oppførsel for vertikalt rullefelt" -#: gtk/gtkscrolledwindow.c:266 +#: ../gtk/gtkscrolledwindow.c:318 msgid "When the vertical scrollbar is displayed" msgstr "Når vertikalt rullefelt skal vises" -#: gtk/gtkscrolledwindow.c:274 +#: ../gtk/gtkscrolledwindow.c:326 msgid "Window Placement" msgstr "Vinduplassering" -#: gtk/gtkscrolledwindow.c:275 +#: ../gtk/gtkscrolledwindow.c:327 #, fuzzy msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." msgstr "Plassering av innhold i forhold til rullefeltene" -#: gtk/gtkscrolledwindow.c:292 +#: ../gtk/gtkscrolledwindow.c:344 msgid "Window Placement Set" msgstr "Vinduplassering satt" -#: gtk/gtkscrolledwindow.c:293 +#: ../gtk/gtkscrolledwindow.c:345 #, fuzzy msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." msgstr "Plassering av innhold i forhold til rullefeltene" -#: gtk/gtkscrolledwindow.c:299 +#: ../gtk/gtkscrolledwindow.c:351 msgid "Shadow Type" msgstr "Skyggetype" -#: gtk/gtkscrolledwindow.c:300 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Style of bevel around the contents" msgstr "Stil på kanten rundt innholdet" -#: gtk/gtkscrolledwindow.c:314 +#: ../gtk/gtkscrolledwindow.c:366 #, fuzzy msgid "Scrollbars within bevel" msgstr "Avstand for rullefelt" -#: gtk/gtkscrolledwindow.c:315 +#: ../gtk/gtkscrolledwindow.c:367 #, fuzzy msgid "Place scrollbars within the scrolled window's bevel" msgstr "Antall piksler mellom rullefeltet og vinduet som rulles" -#: gtk/gtkscrolledwindow.c:321 +#: ../gtk/gtkscrolledwindow.c:373 msgid "Scrollbar spacing" msgstr "Avstand for rullefelt" -#: gtk/gtkscrolledwindow.c:322 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Antall piksler mellom rullefeltet og vinduet som rulles" -#: gtk/gtkscrolledwindow.c:337 +#: ../gtk/gtkscrolledwindow.c:383 #, fuzzy -msgid "Scrolled Window Placement" -msgstr "Vinduplassering" +#| msgid "Minimum Width" +msgid "Minimum Content Width" +msgstr "Minimal bredde" -#: gtk/gtkscrolledwindow.c:338 +#: ../gtk/gtkscrolledwindow.c:384 +msgid "The minimum width that the scrolled window will allocate to its content" +msgstr "" + +#: ../gtk/gtkscrolledwindow.c:390 #, fuzzy -msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." -msgstr "Plassering av innhold i forhold til rullefeltene" +#| msgid "Minimum child height" +msgid "Minimum Content Height" +msgstr "Minimal høyde for barn" -#: gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkscrolledwindow.c:391 +msgid "The minimum height that the scrolled window will allocate to its content" +msgstr "" + +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "Tegn" -#: gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "Om en skillelinje eller bare tomrom vises" -#: gtk/gtksettings.c:225 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Tid for dobbelklikk" -#: gtk/gtksettings.c:226 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4894,11 +4919,11 @@ msgstr "" "Lengste tidsintervall mellom to klikk for at de skal betraktes som et " "dobbelklikk (i millisekunder)" -#: gtk/gtksettings.c:233 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Avstand for dobbelklikk" -#: gtk/gtksettings.c:234 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" @@ -4906,36 +4931,36 @@ msgstr "" "Lengste avstand mellom to klikk for at de skal betraktes som et dobbelklikk " "(i piksler)" -#: gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Markørblinking" -#: gtk/gtksettings.c:251 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "La markøren blinke" -#: gtk/gtksettings.c:258 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Tid for markørblink" -#: gtk/gtksettings.c:259 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Lengde på markørblinking, i millisekunder" -#: gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Tidsavbrudd for markørblink" -#: gtk/gtksettings.c:279 +#: ../gtk/gtksettings.c:353 #, fuzzy msgid "Time after which the cursor stops blinking, in seconds" msgstr "Lengde på markørblinking, i millisekunder" -#: gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Delt markør" -#: gtk/gtksettings.c:287 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" @@ -4943,439 +4968,548 @@ msgstr "" "Om to markører skal vises for blandet venstre-til-høyre og høyre-til-venstre " "tekst" -#: gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Temanavn" -#: gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Navn på RC-fil som skal lastes" -#: gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Navn på ikontema" -#: gtk/gtksettings.c:304 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Navn på ikontema som skal brukes" -#: gtk/gtksettings.c:312 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Navn på reserveikontema" -#: gtk/gtksettings.c:313 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Navn på ikontema som skal brukes som reserve" -#: gtk/gtksettings.c:321 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Navn på nøkkeltema" -#: gtk/gtksettings.c:322 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Navn på RC-fil for nøkkeltema som skal lastes" -#: gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Aksellerator for menylinje" -#: gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Tastaturbinding som aktiverer menylinjen" -#: gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Terskel for dra-operasjon" -#: gtk/gtksettings.c:340 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Antall piklser markøren kan flyttes før en dra-operasjon startes" -#: gtk/gtksettings.c:348 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Skriftnavn" -#: gtk/gtksettings.c:349 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Navn på forvalgt skrift" -#: gtk/gtksettings.c:371 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Ikonstørrelser" -#: gtk/gtksettings.c:372 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." -msgstr "Liste over ikonstørrelser (gtk-menu=16,16;gtk-button=20,20..." +msgstr "Liste over ikonstørrelser (gtk-menu=16,16;gtk-button=20,20 …" -#: gtk/gtksettings.c:380 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK-moduler" -#: gtk/gtksettings.c:381 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "Liste over aktive GTK-moduler" -#: gtk/gtksettings.c:390 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft skriftutjevning" -#: gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "" "Om skriftutjevning skal brukes for Xft-skrifter; 0=nei, 1=ja, -1=forvalg" -#: gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft-hint" -#: gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "Om hint skal brukes for Xft-skrifter" -#: gtk/gtksettings.c:410 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft-hintstil" -#: gtk/gtksettings.c:411 +#: ../gtk/gtksettings.c:485 msgid "" "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "" "Grad av hint som skal brukes; hintnone, hintslight, hintmedium, eller " "hintfull" -#: gtk/gtksettings.c:420 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: gtk/gtksettings.c:421 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Type pikselutjevning: none, rgb, bgr, vrgb, vbgr" -#: gtk/gtksettings.c:430 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft DPI" -#: gtk/gtksettings.c:431 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "" "Oppløsning for Xft i 1024 * punkter per tomme. -1 for å bruke forvalgt verdi" -#: gtk/gtksettings.c:440 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Navn på pekertema" -#: gtk/gtksettings.c:441 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" -msgstr "" -"Navn på pekertema som skal brukes, eller NULL for å bruke forvalgt tema" +msgstr "Navn på pekertema som skal brukes, eller NULL for å bruke forvalgt tema" -#: gtk/gtksettings.c:449 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Størrelse på pekertema" -#: gtk/gtksettings.c:450 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "Størrelse å bruke for peker, eller 0 for å bruke forvalgt størrelse" -#: gtk/gtksettings.c:460 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Alternativ knapperekkefølge" -#: gtk/gtksettings.c:461 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "" "Om knapper i dialoger skal bruke den alternative rekkefølgen for knapper" -#: gtk/gtksettings.c:478 +#: ../gtk/gtksettings.c:552 #, fuzzy msgid "Alternative sort indicator direction" msgstr "Alternativ knapperekkefølge" -#: gtk/gtksettings.c:479 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" msgstr "" -#: gtk/gtksettings.c:487 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Vis menyen «Inndatametoder»" -#: gtk/gtksettings.c:488 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" msgstr "" -#: gtk/gtksettings.c:496 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "" -#: gtk/gtksettings.c:497 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" msgstr "" -#: gtk/gtksettings.c:505 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Tidsavbrudd for start" -#: gtk/gtksettings.c:506 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "" -#: gtk/gtksettings.c:515 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Tidsavbrudd for gjentakelse" -#: gtk/gtksettings.c:516 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "" -#: gtk/gtksettings.c:525 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Tidsavbrudd for utvidelse" -#: gtk/gtksettings.c:526 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "" -#: gtk/gtksettings.c:561 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Fargetema" -#: gtk/gtksettings.c:562 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "Palett med navngitte farger for bruk i tema" -#: gtk/gtksettings.c:571 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Aktiver animasjoner" -#: gtk/gtksettings.c:572 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "" -#: gtk/gtksettings.c:590 +#: ../gtk/gtksettings.c:664 #, fuzzy msgid "Enable Touchscreen Mode" msgstr "Slå på " -#: gtk/gtksettings.c:591 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "" -#: gtk/gtksettings.c:608 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tidsavbrudd for verktøytips" -#: gtk/gtksettings.c:609 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Tidsavbrudd før verktøytips vises" -#: gtk/gtksettings.c:634 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "" -#: gtk/gtksettings.c:635 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "" -#: gtk/gtksettings.c:656 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "" -#: gtk/gtksettings.c:657 +#: ../gtk/gtksettings.c:731 #, fuzzy msgid "Timeout after which browse mode is disabled" msgstr "Buffer som vises" -#: gtk/gtksettings.c:676 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "" -#: gtk/gtksettings.c:677 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "" -#: gtk/gtksettings.c:694 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "" -#: gtk/gtksettings.c:695 +#: ../gtk/gtksettings.c:769 #, fuzzy msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "Om fokusindikator skal tegnes inne i et widget" -#: gtk/gtksettings.c:715 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "" -#: gtk/gtksettings.c:716 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "" -#: gtk/gtksettings.c:733 +#: ../gtk/gtksettings.c:807 #, fuzzy msgid "Color Hash" msgstr "Fargeområde" -#: gtk/gtksettings.c:734 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "" -#: gtk/gtksettings.c:742 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Forvalgt motor for filvelger" -#: gtk/gtksettings.c:743 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Navn på GtkFileChooser-motor som skal brukes som forvalg" -#: gtk/gtksettings.c:760 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Forvalgt motor for utskrift" -#: gtk/gtksettings.c:761 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "Liste med GtkFileChooser-motorer som skal brukes som forvalg" -#: gtk/gtksettings.c:784 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "" -#: gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "" -#: gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Slå på hurtigtaster" -#: gtk/gtksettings.c:802 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Om etiketter skal ha hurtigtaster" -#: gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Aktiver hurtigtaster" -#: gtk/gtksettings.c:819 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Om menyoppføringer skal ha akselleratorer" -#: gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Grense for nylig brukte filer" -#: gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Antall nylig brukte filer" -#: gtk/gtksettings.c:855 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Forvalgt IM-modul" -#: gtk/gtksettings.c:856 +#: ../gtk/gtksettings.c:930 #, fuzzy msgid "Which IM module should be used by default" msgstr "Skal en palett brukes" -#: gtk/gtksettings.c:874 +#: ../gtk/gtksettings.c:948 #, fuzzy msgid "Recent Files Max Age" msgstr "Grense for nylig brukte filer" -#: gtk/gtksettings.c:875 +#: ../gtk/gtksettings.c:949 #, fuzzy msgid "Maximum age of recently used files, in days" msgstr "Antall nylig brukte filer" -#: gtk/gtksettings.c:884 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "" -#: gtk/gtksettings.c:885 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "" -#: gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Navn på lydtema" -#: gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "Navn på XDG-lydtema" #. Translators: this means sounds that are played as feedback to user input -#: gtk/gtksettings.c:930 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "" -#: gtk/gtksettings.c:931 +#: ../gtk/gtksettings.c:1005 #, fuzzy msgid "Whether to play event sounds as feedback to user input" msgstr "Widgetet tar imot inndata" -#: gtk/gtksettings.c:952 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Slå på lyder for hendelser" -#: gtk/gtksettings.c:953 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Om lyder skal spilles av for hendelser" -#: gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Slå på verktøytips" -#: gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Om verktøytips skal vises på komponenter" -#: gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Verktøylinjestil" -#: gtk/gtksettings.c:983 +#: ../gtk/gtksettings.c:1057 msgid "" "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "Om forvalgte verktøylinje har tekst, tekst og ikoner, kun ikoner, etc." -#: gtk/gtksettings.c:997 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Størrelse på verktøylinjeikon" -#: gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "Størrelse på ikoner i standard verktøylinjer." -#: gtk/gtksettings.c:1015 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Automatisk visning av hurtigtaster" -#: gtk/gtksettings.c:1016 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." msgstr "" -#: gtk/gtksettings.c:1041 +#: ../gtk/gtksettings.c:1115 #, fuzzy msgid "Application prefers a dark theme" msgstr "Tegnbar av applikasjon" -#: gtk/gtksettings.c:1042 +#: ../gtk/gtksettings.c:1116 #, fuzzy msgid "Whether the application prefers to have a dark theme." msgstr "Om handlingen er aktivert." -#: gtk/gtksizegroup.c:341 +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "Vis knappebilder" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "Om bilder skal vises på knapper" + +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "Velg på fokus" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "Om innholdet i oppføringen skal markeres når den får fokus" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "Tidsavbrudd for passordhint" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "Hvor lenge skal siste tegn vises i skjulte oppføringer" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "Vis bilder i menyer" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "Om bilder skal vises i menyer" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "Pause før nedtrekksmenyer vises" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "Pause før undermenyene i en menylinje vises" + +#: ../gtk/gtksettings.c:1195 +#, fuzzy +msgid "Scrolled Window Placement" +msgstr "Vinduplassering" + +#: ../gtk/gtksettings.c:1196 +#, fuzzy +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "Plassering av innhold i forhold til rullefeltene" + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "Kan endre akselleratorer" + +#: ../gtk/gtksettings.c:1206 +msgid "" +"Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "" +"Om menyakselleratorer kan endres ved å trykke en tast over menyoppføringen" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "Pause før undermenyer vises" + +#: ../gtk/gtksettings.c:1215 +msgid "" +"Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "Minste tid pekeren kan være over en menyoppføring før undermenyen vises" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "Pause før en undermeny skjules" + +#: ../gtk/gtksettings.c:1225 +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "Tid før undermenyen skjules når pekeren beveger seg mot undermenyen" + +#: ../gtk/gtksettings.c:1235 +#, fuzzy +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "Om innholdet i oppføringen skal markeres når den får fokus" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "Egendefinert palett" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "Palett som skal brukes i fargevelgeren" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "Stil for IM-forhåndsredigering" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "Hvordan forhåndsredigeringsstrengen for en inndatametode tegnes" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM statusstil" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "Hvordan statuslinjen for inndatametoden tegnes" + +#: ../gtk/gtksizegroup.c:350 msgid "Mode" msgstr "Modus" -#: gtk/gtksizegroup.c:342 +#: ../gtk/gtksizegroup.c:351 #, fuzzy msgid "" "The directions in which the size group affects the requested sizes of its " @@ -5384,11 +5518,11 @@ msgstr "" "Størrelsesgruppens retning ved effektuering av forespurte størrelser for " "sine komponentwidget" -#: gtk/gtksizegroup.c:358 +#: ../gtk/gtksizegroup.c:367 msgid "Ignore hidden" msgstr "Ignorer gjemt" -#: gtk/gtksizegroup.c:359 +#: ../gtk/gtksizegroup.c:368 #, fuzzy msgid "" "If TRUE, unmapped widgets are ignored when determining the size of the group" @@ -5396,230 +5530,240 @@ msgstr "" "Hvis «TRUE» blir gjemte skjermelementer ignorert når størrelsen til gruppen " "skal bli bestemt" -#: gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:237 msgid "Climb Rate" msgstr "Klatrerate" -#: gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:257 msgid "Snap to Ticks" msgstr "Fest til tikk" -#: gtk/gtkspinbutton.c:257 +#: ../gtk/gtkspinbutton.c:258 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" msgstr "" "Om feilverdier skal endres automatisk til nærmeste verdisteg for knappen" -#: gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:265 msgid "Numeric" msgstr "Numerisk" -#: gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:266 msgid "Whether non-numeric characters should be ignored" msgstr "Ignorer ikke-numeriske tegn" -#: gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:273 msgid "Wrap" msgstr "Bryt" -#: gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:274 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "Om en «spin button» skal snu rundt når den når grenseverdiene" -#: gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:281 msgid "Update Policy" msgstr "Oppdateringspolicy" -#: gtk/gtkspinbutton.c:281 +#: ../gtk/gtkspinbutton.c:282 msgid "" "Whether the spin button should update always, or only when the value is legal" -msgstr "" -"Om «spin button» alltid skal oppdatere, eller kun når verdien er gyldig" +msgstr "Om «spin button» alltid skal oppdatere, eller kun når verdien er gyldig" -#: gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:291 msgid "Reads the current value, or sets a new value" msgstr "Leser aktiv verdi eller setter en ny" -#: gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:300 msgid "Style of bevel around the spin button" msgstr "Stil på kanten rundt spinbutton" -#: gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 #, fuzzy msgid "Whether the spinner is active" msgstr "Om primært ikon kan aktiveres" -#: gtk/gtkspinner.c:146 +#: ../gtk/gtkspinner.c:135 #, fuzzy msgid "Number of steps" msgstr "Antall sider" -#: gtk/gtkspinner.c:147 +#: ../gtk/gtkspinner.c:136 msgid "" "The number of steps for the spinner to complete a full loop. The animation " "will complete a full cycle in one second by default (see #GtkSpinner:cycle-" "duration)." msgstr "" -#: gtk/gtkspinner.c:162 +#: ../gtk/gtkspinner.c:153 #, fuzzy msgid "Animation duration" msgstr "Animasjon" -#: gtk/gtkspinner.c:163 +#: ../gtk/gtkspinner.c:154 msgid "" "The length of time in milliseconds for the spinner to complete a full loop" msgstr "" -#: gtk/gtkstatusbar.c:199 -msgid "Has Resize Grip" -msgstr "Har håndtak for endring av størrelse" - -#: gtk/gtkstatusbar.c:200 -msgid "Whether the statusbar has a grip for resizing the toplevel" -msgstr "Om statuslinjen har et håndtak for å endre størrelse på toppnoden" - -#: gtk/gtkstatusbar.c:245 +#: ../gtk/gtkstatusbar.c:181 msgid "Style of bevel around the statusbar text" msgstr "Stil for kant rundt statuslinjetekst" -#: gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:270 msgid "The size of the icon" msgstr "Størrelse på ikonet" -#: gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:280 msgid "The screen where this status icon will be displayed" msgstr "Skjermen hvor dette statusikonet vil vises" -#: gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:288 #, fuzzy msgid "Whether the status icon is visible" msgstr "Om statusikonet er synlig" -#: gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:304 #, fuzzy msgid "Whether the status icon is embedded" msgstr "Om statusikon er innebygget" -#: gtk/gtkstatusicon.c:320 gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:320 ../gtk/gtktrayicon-x11.c:125 msgid "The orientation of the tray" msgstr "Orientering for systemområdet" -#: gtk/gtkstatusicon.c:347 gtk/gtkwidget.c:863 +#: ../gtk/gtkstatusicon.c:347 ../gtk/gtkwidget.c:1034 msgid "Has tooltip" msgstr "Har verktøytips" -#: gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:348 #, fuzzy msgid "Whether this tray icon has a tooltip" msgstr "Om denne komponenten har verktøytips" -#: gtk/gtkstatusicon.c:373 gtk/gtkwidget.c:884 +#: ../gtk/gtkstatusicon.c:373 ../gtk/gtkwidget.c:1055 msgid "Tooltip Text" msgstr "Tekst for verktøytips" -#: gtk/gtkstatusicon.c:374 gtk/gtkwidget.c:885 gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:374 ../gtk/gtkwidget.c:1056 ../gtk/gtkwidget.c:1077 msgid "The contents of the tooltip for this widget" msgstr "Innhold i verktøytips for denne komponenten" -#: gtk/gtkstatusicon.c:397 gtk/gtkwidget.c:905 +#: ../gtk/gtkstatusicon.c:397 ../gtk/gtkwidget.c:1076 #, fuzzy msgid "Tooltip markup" msgstr "Verktøytips" -#: gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:398 #, fuzzy msgid "The contents of the tooltip for this tray icon" msgstr "Innhold i verktøytips for denne komponenten" -#: gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:416 #, fuzzy msgid "The title of this tray icon" msgstr "Størrelse på ikonet" -#: gtk/gtktable.c:148 +#: ../gtk/gtkstyle.c:470 +msgid "Style context" +msgstr "" + +#: ../gtk/gtkstyle.c:471 +msgid "GtkStyleContext to get style from" +msgstr "" + +#: ../gtk/gtkswitch.c:739 +#, fuzzy +msgid "Whether the switch is on or off" +msgstr "Om handlingen er synlig" + +#: ../gtk/gtkswitch.c:773 +#, fuzzy +#| msgid "The minimum value of the adjustment" +msgid "The minimum width of the handle" +msgstr "Minimumsverdi for justeringen" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "Rader" -#: gtk/gtktable.c:149 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "Antall rader i tabellen" -#: gtk/gtktable.c:157 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "Kolonner" -#: gtk/gtktable.c:158 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "Antall kolonner i tabellen" -#: gtk/gtktable.c:166 +#: ../gtk/gtktable.c:175 msgid "Row spacing" msgstr "Avstand mellom rader" -#: gtk/gtktable.c:167 +#: ../gtk/gtktable.c:176 msgid "The amount of space between two consecutive rows" msgstr "Avstand mellom to etterfølgende rader" -#: gtk/gtktable.c:175 +#: ../gtk/gtktable.c:184 msgid "Column spacing" msgstr "Avstand mellom kolonner" -#: gtk/gtktable.c:176 +#: ../gtk/gtktable.c:185 msgid "The amount of space between two consecutive columns" msgstr "Avstand mellom to etterfølgende kolonner" -#: gtk/gtktable.c:185 +#: ../gtk/gtktable.c:194 #, fuzzy msgid "If TRUE, the table cells are all the same width/height" msgstr "Hvis SANN betyr dette at alle tabellcellene har samme bredde/høyde" -#: gtk/gtktable.c:192 +#: ../gtk/gtktable.c:201 msgid "Left attachment" msgstr "Venstre feste" -#: gtk/gtktable.c:199 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Høyre feste" -#: gtk/gtktable.c:200 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "Kolonnenummer som høyre side av etterkommer skal festes til" -#: gtk/gtktable.c:206 +#: ../gtk/gtktable.c:215 msgid "Top attachment" msgstr "Toppfeste" -#: gtk/gtktable.c:207 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "Radnummer som toppen av etterkommer skal festes til" -#: gtk/gtktable.c:213 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "Bunnfeste" -#: gtk/gtktable.c:220 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "Horisontale alternativer" -#: gtk/gtktable.c:221 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "Alternativer som spesifiserer vertikal oppførsel for etterkommer" -#: gtk/gtktable.c:227 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "Vertikale alternativer" -#: gtk/gtktable.c:228 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "Alternativer som spesifiserer vertikal oppførsel for etterkommer" -#: gtk/gtktable.c:234 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "Horisontalt fyll" -#: gtk/gtktable.c:235 +#: ../gtk/gtktable.c:244 msgid "" "Extra space to put between the child and its left and right neighbors, in " "pixels" @@ -5627,98 +5771,97 @@ msgstr "" "Ekstra plass i piksler som skal legges mellom etterkommer og dens venstre og " "høyre nabo" -#: gtk/gtktable.c:241 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "Vertikalt fyll" -#: gtk/gtktable.c:242 +#: ../gtk/gtktable.c:251 msgid "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" msgstr "" "Ekstra mellomrom mellom etterkommer og dens øvre og nedre naboer, i piksler" -#: gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:191 msgid "Tag Table" msgstr "Tabell med tagger" -#: gtk/gtktextbuffer.c:193 +#: ../gtk/gtktextbuffer.c:192 msgid "Text Tag Table" msgstr "Tabell med teksttagger" -#: gtk/gtktextbuffer.c:211 +#: ../gtk/gtktextbuffer.c:210 msgid "Current text of the buffer" msgstr "Nåværende tekst for mellomlageret" -#: gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:224 msgid "Has selection" msgstr "Har utvalg" -#: gtk/gtktextbuffer.c:226 +#: ../gtk/gtktextbuffer.c:225 #, fuzzy msgid "Whether the buffer has some text currently selected" msgstr "GdkFont som er valgt nå" -#: gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:241 msgid "Cursor position" msgstr "Markørposisjon" -#: gtk/gtktextbuffer.c:243 +#: ../gtk/gtktextbuffer.c:242 msgid "" "The position of the insert mark (as offset from the beginning of the buffer)" msgstr "" -#: gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:257 msgid "Copy target list" msgstr "Kopier målliste" -#: gtk/gtktextbuffer.c:259 +#: ../gtk/gtktextbuffer.c:258 msgid "" "The list of targets this buffer supports for clipboard copying and DND source" msgstr "" -#: gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:273 msgid "Paste target list" msgstr "" -#: gtk/gtktextbuffer.c:275 +#: ../gtk/gtktextbuffer.c:274 msgid "" "The list of targets this buffer supports for clipboard pasting and DND " "destination" msgstr "" -#: gtk/gtktextmark.c:90 +#: ../gtk/gtktextmark.c:90 #, fuzzy msgid "Mark name" msgstr "Navn på tag" -#: gtk/gtktextmark.c:97 +#: ../gtk/gtktextmark.c:97 msgid "Left gravity" msgstr "Venstre tyngde" -#: gtk/gtktextmark.c:98 +#: ../gtk/gtktextmark.c:98 #, fuzzy msgid "Whether the mark has left gravity" msgstr "Om denne merkingen påvirker skriftfamilien" -#: gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:168 msgid "Tag name" msgstr "Navn på tag" -#: gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:169 msgid "Name used to refer to the text tag. NULL for anonymous tags" -msgstr "" -"Navn som brukes ved referanse til tekst-taggen. NULL for anonyme tagger" +msgstr "Navn som brukes ved referanse til tekst-taggen. NULL for anonyme tagger" -#: gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:187 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Bakgrunnsfarge som en (mulig ikke-allokert) GdkColor" -#: gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:194 msgid "Background full height" msgstr "Full høyde for bakgrunnsfarge" -#: gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:195 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" @@ -5726,27 +5869,27 @@ msgstr "" "Om bakgrunnsfargen fyller hele linjehøyden eller kun høyden av de merkede " "tegnene" -#: gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:211 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Forgrunnsfarge som en (mulig ikke-allokert) GdkColor" -#: gtk/gtktexttag.c:218 +#: ../gtk/gtktexttag.c:218 msgid "Text direction" msgstr "Tekstretning" -#: gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:219 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "Tekstretning; høyre-til-venstre eller venstre-til-høyre" -#: gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:268 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "Skriftstil som PangoStyle, f.eks. PANGO_STYLE_ITALIC" -#: gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:277 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "Skriftvariant som PangoVariant, f.eks. PANGO_VARIANT_SMALL_CAPS" -#: gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:286 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" @@ -5754,15 +5897,15 @@ msgstr "" "Skrifttyngde som et heltall. Se forhåndsdefinerte verdier i PangoWeight; f." "eks. PANGO_WEIGHT_BOLD" -#: gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:297 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "Skriftstrekking som PangoStretch, f.eks. PANGO_STRETCH_CONDENSED" -#: gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:306 msgid "Font size in Pango units" msgstr "Størrelse på skrift i Pango-enheter" -#: gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:316 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 " @@ -5773,11 +5916,11 @@ msgstr "" "er derfor anbefalt. Pango predefinerer noen skaleringer slik som " "PANGO_SCALE_X_LARGE" -#: gtk/gtktexttag.c:336 gtk/gtktextview.c:686 +#: ../gtk/gtktexttag.c:336 ../gtk/gtktextview.c:702 msgid "Left, right, or center justification" msgstr "Venstre-, høyre- eller senterjustering" -#: gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:355 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." @@ -5786,31 +5929,31 @@ msgstr "" "et hint når teksten rendres. Hvis dette er ikke er satt finnes et passende " "forvalg." -#: gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:362 msgid "Left margin" msgstr "Venstre marg" -#: gtk/gtktexttag.c:363 gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:363 ../gtk/gtktextview.c:711 msgid "Width of the left margin in pixels" msgstr "Bredde på venstre marg i piksler" -#: gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:372 msgid "Right margin" msgstr "Høyre marg" -#: gtk/gtktexttag.c:373 gtk/gtktextview.c:705 +#: ../gtk/gtktexttag.c:373 ../gtk/gtktextview.c:721 msgid "Width of the right margin in pixels" msgstr "Bredde på høyre marg i piksler" -#: gtk/gtktexttag.c:383 gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:383 ../gtk/gtktextview.c:730 msgid "Indent" msgstr "Rykk inn" -#: gtk/gtktexttag.c:384 gtk/gtktextview.c:715 +#: ../gtk/gtktexttag.c:384 ../gtk/gtktextview.c:731 msgid "Amount to indent the paragraph, in pixels" msgstr "Innrykksmengde for avsnittet, i piksler" -#: gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:395 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" @@ -5818,341 +5961,341 @@ msgstr "" "Tekstavstand over grunnlinjen (under grunnlinjen hvis hevingen er negativ) i " "Pango enheter" -#: gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:404 msgid "Pixels above lines" msgstr "Piksler over linjer" -#: gtk/gtktexttag.c:405 gtk/gtktextview.c:639 +#: ../gtk/gtktexttag.c:405 ../gtk/gtktextview.c:655 msgid "Pixels of blank space above paragraphs" msgstr "Antall piksler med tomrom over avsnittene" -#: gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:414 msgid "Pixels below lines" msgstr "Piksler under linjer" -#: gtk/gtktexttag.c:415 gtk/gtktextview.c:649 +#: ../gtk/gtktexttag.c:415 ../gtk/gtktextview.c:665 msgid "Pixels of blank space below paragraphs" msgstr "Antall piksler med tomrom under avsnittene" -#: gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:424 msgid "Pixels inside wrap" msgstr "Piksler før brytning" -#: gtk/gtktexttag.c:425 gtk/gtktextview.c:659 +#: ../gtk/gtktexttag.c:425 ../gtk/gtktextview.c:675 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Piksler med tomt rom mellom brutte linjer i et avsnitt" -#: gtk/gtktexttag.c:452 gtk/gtktextview.c:677 +#: ../gtk/gtktexttag.c:452 ../gtk/gtktextview.c:693 msgid "" "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "Regler for linjebryting; aldri, ved ordgrenser eller ved tegngrenser" -#: gtk/gtktexttag.c:461 gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:461 ../gtk/gtktextview.c:740 msgid "Tabs" msgstr "Faner" -#: gtk/gtktexttag.c:462 gtk/gtktextview.c:725 +#: ../gtk/gtktexttag.c:462 ../gtk/gtktextview.c:741 msgid "Custom tabs for this text" msgstr "Egendefinerte faner for denne teksten" -#: gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:480 msgid "Invisible" msgstr "Usynlig" -#: gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:481 msgid "Whether this text is hidden." msgstr "Om denne teksten er gjemt." -#: gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:495 msgid "Paragraph background color name" msgstr "Bakgrunnsfargenavn for avsnitt" -#: gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:496 msgid "Paragraph background color as a string" msgstr "Bakgrunnsfarge for avsnitt som en streng" -#: gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:511 msgid "Paragraph background color" msgstr "Bakgrunnsfarge for avsnitt" -#: gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:512 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "Bakgrunnsfarge for avsnitt som en (mulig ikke-allokert) GdkColor" -#: gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:530 msgid "Margin Accumulates" msgstr "" -#: gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:531 msgid "Whether left and right margins accumulate." msgstr "" -#: gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:544 msgid "Background full height set" msgstr "Full høyde for bakgrunn satt" -#: gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:545 msgid "Whether this tag affects background height" msgstr "Om denne merkingen påvirker bakgrunnshøyden" -#: gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:584 msgid "Justification set" msgstr "Plassering satt" -#: gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:585 msgid "Whether this tag affects paragraph justification" msgstr "Om denne merkingen påvirker plassering av avsnitt" -#: gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:592 msgid "Left margin set" msgstr "Venstre marg satt" -#: gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:593 msgid "Whether this tag affects the left margin" msgstr "Om denne merkingen påvirker venstre marg" -#: gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:596 msgid "Indent set" msgstr "Innrykk satt" -#: gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:597 msgid "Whether this tag affects indentation" msgstr "Om denne merkingen påvirker innrykk" -#: gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:604 msgid "Pixels above lines set" msgstr "Piksler over linjer satt" -#: gtk/gtktexttag.c:605 gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:605 ../gtk/gtktexttag.c:609 msgid "Whether this tag affects the number of pixels above lines" msgstr "Om denne merkingen påvirker antall piksler over linjer" -#: gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:608 msgid "Pixels below lines set" msgstr "Piksler under linjer satt" -#: gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:612 msgid "Pixels inside wrap set" msgstr "Piksler innenfor brytningssett" -#: gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:613 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "Om denne merkingen påvirker antall piksler mellom brutte linjer" -#: gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:620 msgid "Right margin set" msgstr "Høyre marg satt" -#: gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:621 msgid "Whether this tag affects the right margin" msgstr "Om denne merkingen påvirker høyre marg" -#: gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:628 msgid "Wrap mode set" msgstr "Brytningsmodus satt" -#: gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:629 msgid "Whether this tag affects line wrap mode" msgstr "Om denne merkingen påvirker brytningsmodus" -#: gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:632 msgid "Tabs set" msgstr "Faner satt" -#: gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:633 msgid "Whether this tag affects tabs" msgstr "Om denne merkingen påvirker faner" -#: gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:636 msgid "Invisible set" msgstr "Usynlig satt" -#: gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:637 msgid "Whether this tag affects text visibility" msgstr "Om denne merkingen påvirker tekstsynlighet" -#: gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:640 msgid "Paragraph background set" msgstr "Bakgrunn for avsnitt satt" -#: gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:641 msgid "Whether this tag affects the paragraph background color" msgstr "Om denne merkingen påvirker bakgrunnsfargen for avsnitt" -#: gtk/gtktextview.c:638 +#: ../gtk/gtktextview.c:654 msgid "Pixels Above Lines" msgstr "Piksler over linjer" -#: gtk/gtktextview.c:648 +#: ../gtk/gtktextview.c:664 msgid "Pixels Below Lines" msgstr "Piksler under linjer" -#: gtk/gtktextview.c:658 +#: ../gtk/gtktextview.c:674 msgid "Pixels Inside Wrap" msgstr "Piksler før brytning" -#: gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:692 msgid "Wrap Mode" msgstr "Brytningsmodus" -#: gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:710 msgid "Left Margin" msgstr "Venstre marg" -#: gtk/gtktextview.c:704 +#: ../gtk/gtktextview.c:720 msgid "Right Margin" msgstr "Høyre marg" -#: gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:748 msgid "Cursor Visible" msgstr "Synlig markør" -#: gtk/gtktextview.c:733 +#: ../gtk/gtktextview.c:749 msgid "If the insertion cursor is shown" msgstr "Vis innsettingsmarkør" -#: gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:756 msgid "Buffer" msgstr "Buffer" -#: gtk/gtktextview.c:741 +#: ../gtk/gtktextview.c:757 msgid "The buffer which is displayed" msgstr "Buffer som vises" -#: gtk/gtktextview.c:749 +#: ../gtk/gtktextview.c:765 msgid "Whether entered text overwrites existing contents" msgstr "Om oppgitt tekst overskriver eksisterende innhold" -#: gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:772 msgid "Accepts tab" msgstr "Godtar tabulator" -#: gtk/gtktextview.c:757 +#: ../gtk/gtktextview.c:773 msgid "Whether Tab will result in a tab character being entered" msgstr "Om tab resulterer i at et tabulatortegn settes inn" -#: gtk/gtktextview.c:786 +#: ../gtk/gtktextview.c:808 msgid "Error underline color" msgstr "Farge for understreking av feil" -#: gtk/gtktextview.c:787 +#: ../gtk/gtktextview.c:809 msgid "Color with which to draw error-indication underlines" msgstr "Farge for understreking av feil" -#: gtk/gtktoggleaction.c:118 +#: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Opprett samme proxyer som en radiohandling" -#: gtk/gtktoggleaction.c:119 +#: ../gtk/gtktoggleaction.c:119 msgid "Whether the proxies for this action look like radio action proxies" msgstr "Om proxyene for denne handlingen ser ut som radiohandlingproxyer" -#: gtk/gtktoggleaction.c:134 +#: ../gtk/gtktoggleaction.c:134 #, fuzzy msgid "Whether the toggle action should be active" msgstr "Om knappen skal trykkes inn eller ikke" -#: gtk/gtktogglebutton.c:116 gtk/gtktoggletoolbutton.c:113 +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 #, fuzzy msgid "If the toggle button should be pressed in" msgstr "Om knappen skal trykkes inn eller ikke" -#: gtk/gtktogglebutton.c:124 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "Om knappen er i en mellomtilstand" -#: gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "Tegn indikator" -#: gtk/gtktogglebutton.c:132 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "Om venderdelen av knappen skal vises" -#: gtk/gtktoolbar.c:465 gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:491 ../gtk/gtktoolpalette.c:1060 msgid "Toolbar Style" msgstr "Stil for verktøylinje" -#: gtk/gtktoolbar.c:466 +#: ../gtk/gtktoolbar.c:492 msgid "How to draw the toolbar" msgstr "Hvordan tegnes verktøylinjen" -#: gtk/gtktoolbar.c:473 +#: ../gtk/gtktoolbar.c:499 msgid "Show Arrow" msgstr "Vis pil" -#: gtk/gtktoolbar.c:474 +#: ../gtk/gtktoolbar.c:500 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "Om en pil skal vises hvis verktøylinjen ikke passer" -#: gtk/gtktoolbar.c:495 +#: ../gtk/gtktoolbar.c:521 msgid "Size of icons in this toolbar" msgstr "Størrelse på ikoner i denne verktøylinjen" -#: gtk/gtktoolbar.c:510 gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:536 ../gtk/gtktoolpalette.c:1046 msgid "Icon size set" msgstr "Ikonstørrelse satt" -#: gtk/gtktoolbar.c:511 gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:537 ../gtk/gtktoolpalette.c:1047 #, fuzzy msgid "Whether the icon-size property has been set" msgstr "Om handlingsgruppen er aktivert." -#: gtk/gtktoolbar.c:520 +#: ../gtk/gtktoolbar.c:546 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "Om oppføringen skal få mer plass når verktøylinjen vokser" -#: gtk/gtktoolbar.c:528 gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:554 ../gtk/gtktoolitemgroup.c:1642 msgid "Whether the item should be the same size as other homogeneous items" msgstr "" "Om oppføringen skal forbli samme størrelse som andre homogene oppføringer" -#: gtk/gtktoolbar.c:535 +#: ../gtk/gtktoolbar.c:561 msgid "Spacer size" msgstr "Størrelse på mellomrom" -#: gtk/gtktoolbar.c:536 +#: ../gtk/gtktoolbar.c:562 msgid "Size of spacers" msgstr "Størrelse på plassholdere" -#: gtk/gtktoolbar.c:545 +#: ../gtk/gtktoolbar.c:571 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "Mengde kantområde mellom verktøylinjens skygge og knappene" -#: gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolbar.c:579 #, fuzzy msgid "Maximum child expand" msgstr "Minimal bredde for barn" -#: gtk/gtktoolbar.c:554 +#: ../gtk/gtktoolbar.c:580 msgid "Maximum amount of space an expandable item will be given" msgstr "" -#: gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:588 msgid "Space style" msgstr "Stil på mellomrom" -#: gtk/gtktoolbar.c:563 +#: ../gtk/gtktoolbar.c:589 msgid "Whether spacers are vertical lines or just blank" msgstr "Om mellomrommene er vertikale linjer eller bare tomrom" -#: gtk/gtktoolbar.c:570 +#: ../gtk/gtktoolbar.c:596 msgid "Button relief" msgstr "Kantavsleping" -#: gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:597 msgid "Type of bevel around toolbar buttons" msgstr "Type kant rundt verktøylinjeknappene" -#: gtk/gtktoolbar.c:578 +#: ../gtk/gtktoolbar.c:604 msgid "Style of bevel around the toolbar" msgstr "Stil på kant rundt verktøylinjen" -#: gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:203 msgid "Text to show in the item." msgstr "Tekst som skal vises i oppføringen." -#: gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:210 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -6160,43 +6303,43 @@ msgstr "" "Hvis satt vil en understreking i teksten indikere at neste tegn skal brukes " "som akselleratortast i overflytmenyen" -#: gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:217 msgid "Widget to use as the item label" msgstr "Komponent som skal brukes som etikett for oppføringen" -#: gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:223 msgid "Stock Id" msgstr "Standard-ID" -#: gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:224 msgid "The stock icon displayed on the item" msgstr "Standardikon som vises på oppføringen" -#: gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:240 msgid "Icon name" msgstr "Navn på ikon" -#: gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:241 msgid "The name of the themed icon displayed on the item" msgstr "Navnet på standardikon som vises på oppføringen" -#: gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget" msgstr "Ikonkomponent" -#: gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:248 msgid "Icon widget to display in the item" msgstr "Ikonkomponent som skal vises i oppføringen" -#: gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:261 msgid "Icon spacing" msgstr "Avstand mellom ikoner" -#: gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:262 msgid "Spacing in pixels between the icon and label" msgstr "Mellomrom i piksler mellom ikonet og etiketten" -#: gtk/gtktoolitem.c:201 +#: ../gtk/gtktoolitem.c:210 msgid "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" @@ -6204,539 +6347,525 @@ msgstr "" "Om verktøylinjeoppføringen ses på som viktig. Hvis TRUE vil knapper på " "verktøylinjen ha tekst i GTK_TOOLBAR_BOTH_HORIZ-modus" -#: gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1589 #, fuzzy msgid "The human-readable title of this item group" msgstr "Beskrivelse av status" -#: gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1596 #, fuzzy msgid "A widget to display in place of the usual label" msgstr "Et widget som vises i stedet for den vanlige rammeetiketten" -#: gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "Collapsed" msgstr "" -#: gtk/gtktoolitemgroup.c:1586 +#: ../gtk/gtktoolitemgroup.c:1603 #, fuzzy msgid "Whether the group has been collapsed and items are hidden" msgstr "Om utvideren er åpnet for å avdekke underkomponenten" -#: gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1609 #, fuzzy msgid "ellipsize" msgstr "Forkort" -#: gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1610 msgid "Ellipsize for item group headers" msgstr "" -#: gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1616 #, fuzzy msgid "Header Relief" msgstr "Bilde for topptekst" -#: gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1617 #, fuzzy msgid "Relief of the group header button" msgstr "Vis knapper for kolonnetopptekst" -#: gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1632 #, fuzzy msgid "Header Spacing" msgstr "Fyll for topptekst" -#: gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1633 #, fuzzy msgid "Spacing between expander arrow and caption" msgstr "Tomrom rundt utviderpilen" -#: gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1649 #, fuzzy msgid "Whether the item should receive extra space when the group grows" msgstr "Om oppføringen skal få mer plass når verktøylinjen vokser" -#: gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1656 #, fuzzy msgid "Whether the item should fill the available space" msgstr "Om alle barn skal være av samme størrelse." -#: gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "New Row" msgstr "" -#: gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1663 #, fuzzy msgid "Whether the item should start a new row" msgstr "Om avrivningsoppføringer skal legges til for menyen" -#: gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1670 #, fuzzy msgid "Position of the item within this group" msgstr "Posisjon for merke på linjal" -#: gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1031 #, fuzzy msgid "Size of icons in this tool palette" msgstr "Størrelse på ikoner i denne verktøylinjen" -#: gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1061 #, fuzzy msgid "Style of items in the tool palette" msgstr "Stil på kant rundt verktøylinjen" -#: gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1077 msgid "Exclusive" msgstr "" -#: gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1078 #, fuzzy msgid "Whether the item group should be the only expanded at a given time" msgstr "Om avrivningsoppføringer skal legges til for menyen" -#: gtk/gtktoolpalette.c:1066 +#: ../gtk/gtktoolpalette.c:1093 #, fuzzy -msgid "" -"Whether the item group should receive extra space when the palette grows" +msgid "Whether the item group should receive extra space when the palette grows" msgstr "La etterkommeren få mer plass når opphavet vokser" -#: gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:134 #, fuzzy msgid "Foreground color for symbolic icons" msgstr "Forgrunnsfarge som en streng" -#: gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:141 #, fuzzy msgid "Error color" msgstr "Markørfarge" -#: gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color for symbolic icons" msgstr "" -#: gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:149 #, fuzzy msgid "Warning color" msgstr "Bakgrunnsfarge" -#: gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color for symbolic icons" msgstr "" -#: gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:157 #, fuzzy msgid "Success color" msgstr "Markørfarge" -#: gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color for symbolic icons" msgstr "" -#: gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:166 #, fuzzy msgid "Padding that should be put around icons in the tray" msgstr "Vis/ikke vis kant" -#: gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemodelsort.c:310 msgid "TreeModelSort Model" msgstr "TreeModelSort modell" -#: gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:311 msgid "The model for the TreeModelSort to sort" msgstr "Modell som TreeModelSort skal sortere" -#: gtk/gtktreeview.c:563 +#: ../gtk/gtktreeview.c:988 msgid "TreeView Model" msgstr "TreeView modell" -#: gtk/gtktreeview.c:564 +#: ../gtk/gtktreeview.c:989 msgid "The model for the tree view" msgstr "Modell for treevisning" -#: gtk/gtktreeview.c:572 -msgid "Horizontal Adjustment for the widget" -msgstr "Horisontal justering for widget" - -#: gtk/gtktreeview.c:580 -msgid "Vertical Adjustment for the widget" -msgstr "Vertikal justering for widget" - -#: gtk/gtktreeview.c:587 +#: ../gtk/gtktreeview.c:1001 msgid "Headers Visible" msgstr "Synlig topptekst" -#: gtk/gtktreeview.c:588 +#: ../gtk/gtktreeview.c:1002 msgid "Show the column header buttons" msgstr "Vis knapper for kolonnetopptekst" -#: gtk/gtktreeview.c:595 +#: ../gtk/gtktreeview.c:1009 msgid "Headers Clickable" msgstr "Topptekst kan klikkes" -#: gtk/gtktreeview.c:596 +#: ../gtk/gtktreeview.c:1010 msgid "Column headers respond to click events" msgstr "Kolonnetitler svarer på klikk" -#: gtk/gtktreeview.c:603 +#: ../gtk/gtktreeview.c:1017 msgid "Expander Column" msgstr "Utviderkolonne" -#: gtk/gtktreeview.c:604 +#: ../gtk/gtktreeview.c:1018 msgid "Set the column for the expander column" msgstr "Sett kolonne for utviderkolonne" -#: gtk/gtktreeview.c:619 +#: ../gtk/gtktreeview.c:1033 msgid "Rules Hint" msgstr "Regelhint" -#: gtk/gtktreeview.c:620 +#: ../gtk/gtktreeview.c:1034 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "Sett et hint til temamotoren for å tegne rader i alternerende farger" -#: gtk/gtktreeview.c:627 +#: ../gtk/gtktreeview.c:1041 msgid "Enable Search" msgstr "Aktiver søk" -#: gtk/gtktreeview.c:628 +#: ../gtk/gtktreeview.c:1042 msgid "View allows user to search through columns interactively" msgstr "Visning lar bruker søke gjennom kolonner interaktivt" -#: gtk/gtktreeview.c:635 +#: ../gtk/gtktreeview.c:1049 msgid "Search Column" msgstr "Søkekolonne" -#: gtk/gtktreeview.c:636 +#: ../gtk/gtktreeview.c:1050 #, fuzzy msgid "Model column to search through during interactive search" msgstr "Modellkolonne som skal søkes gjennom ved søk i koden" -#: gtk/gtktreeview.c:656 +#: ../gtk/gtktreeview.c:1070 msgid "Fixed Height Mode" msgstr "Fast høyde" -#: gtk/gtktreeview.c:657 +#: ../gtk/gtktreeview.c:1071 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "Gjør GtkTreeView raskere ved å anta at alle rader har samme høyde" -#: gtk/gtktreeview.c:677 +#: ../gtk/gtktreeview.c:1091 msgid "Hover Selection" msgstr "Svevende utvalg" -#: gtk/gtktreeview.c:678 +#: ../gtk/gtktreeview.c:1092 #, fuzzy msgid "Whether the selection should follow the pointer" msgstr "La fargevelgeren tillate å sette ugjennomsiktighet" -#: gtk/gtktreeview.c:697 +#: ../gtk/gtktreeview.c:1111 msgid "Hover Expand" msgstr "" -#: gtk/gtktreeview.c:698 +#: ../gtk/gtktreeview.c:1112 msgid "" "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "Om rader skal utvides/sammensunket når pekeren beveger seg over dem" -#: gtk/gtktreeview.c:712 +#: ../gtk/gtktreeview.c:1126 msgid "Show Expanders" msgstr "Vis utvidere" -#: gtk/gtktreeview.c:713 +#: ../gtk/gtktreeview.c:1127 msgid "View has expanders" msgstr "Visning har utvidere" -#: gtk/gtktreeview.c:727 +#: ../gtk/gtktreeview.c:1141 msgid "Level Indentation" msgstr "" -#: gtk/gtktreeview.c:728 +#: ../gtk/gtktreeview.c:1142 msgid "Extra indentation for each level" msgstr "" -#: gtk/gtktreeview.c:737 +#: ../gtk/gtktreeview.c:1151 msgid "Rubber Banding" msgstr "" -#: gtk/gtktreeview.c:738 +#: ../gtk/gtktreeview.c:1152 #, fuzzy msgid "" "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "Om valg av flere filer skal tillates" -#: gtk/gtktreeview.c:745 +#: ../gtk/gtktreeview.c:1159 msgid "Enable Grid Lines" msgstr "Aktiver linjer i rutenett" -#: gtk/gtktreeview.c:746 +#: ../gtk/gtktreeview.c:1160 #, fuzzy msgid "Whether grid lines should be drawn in the tree view" msgstr "Vis/ikke vis kant" -#: gtk/gtktreeview.c:754 +#: ../gtk/gtktreeview.c:1168 msgid "Enable Tree Lines" msgstr "Aktiver linjer i tre" -#: gtk/gtktreeview.c:755 +#: ../gtk/gtktreeview.c:1169 #, fuzzy msgid "Whether tree lines should be drawn in the tree view" msgstr "Vis/ikke vis kant" -#: gtk/gtktreeview.c:763 +#: ../gtk/gtktreeview.c:1177 #, fuzzy msgid "The column in the model containing the tooltip texts for the rows" msgstr "En kolonne i modellen som inneholder strengene." -#: gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1199 msgid "Vertical Separator Width" msgstr "Bredde på vertikal separator" -#: gtk/gtktreeview.c:786 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical space between cells. Must be an even number" msgstr "Vertikalt mellomrom mellom celler. Må være et liketall" -#: gtk/gtktreeview.c:794 +#: ../gtk/gtktreeview.c:1208 msgid "Horizontal Separator Width" msgstr "Bredde på horisontal separator" -#: gtk/gtktreeview.c:795 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal space between cells. Must be an even number" msgstr "Horisontalt mellomrom mellom celler. Må være et liketall" -#: gtk/gtktreeview.c:803 +#: ../gtk/gtktreeview.c:1217 msgid "Allow Rules" msgstr "Tillat linjaler" -#: gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1218 msgid "Allow drawing of alternating color rows" msgstr "Tillat tegning av alternerende fargerader" -#: gtk/gtktreeview.c:810 +#: ../gtk/gtktreeview.c:1224 msgid "Indent Expanders" msgstr "Indenter utvidere" -#: gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1225 msgid "Make the expanders indented" msgstr "Gjør utvidere indentert" -#: gtk/gtktreeview.c:817 +#: ../gtk/gtktreeview.c:1231 msgid "Even Row Color" msgstr "Farge for like rader" -#: gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1232 msgid "Color to use for even rows" msgstr "Farge som skal brukes for like rader" -#: gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1238 msgid "Odd Row Color" msgstr "Farge for ulike rader" -#: gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1239 msgid "Color to use for odd rows" msgstr "Farge som skal brukes for ulike rader" -#: gtk/gtktreeview.c:831 +#: ../gtk/gtktreeview.c:1245 msgid "Grid line width" msgstr "Linjebredde i rutenett" -#: gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1246 #, fuzzy msgid "Width, in pixels, of the tree view grid lines" msgstr "Fokusindikatorlinjens bredde i piksler" -#: gtk/gtktreeview.c:838 +#: ../gtk/gtktreeview.c:1252 #, fuzzy msgid "Tree line width" msgstr "Den faste bredden" -#: gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1253 #, fuzzy msgid "Width, in pixels, of the tree view lines" msgstr "Fokusindikatorlinjens bredde i piksler" -#: gtk/gtktreeview.c:845 +#: ../gtk/gtktreeview.c:1259 #, fuzzy msgid "Grid line pattern" msgstr "Prikkemønster for fokuslinje" -#: gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1260 #, fuzzy msgid "Dash pattern used to draw the tree view grid lines" msgstr "Prikkemønster som brukes til å tegne fokusindikator" -#: gtk/gtktreeview.c:852 +#: ../gtk/gtktreeview.c:1266 #, fuzzy msgid "Tree line pattern" msgstr "Prikkemønster for fokuslinje" -#: gtk/gtktreeview.c:853 +#: ../gtk/gtktreeview.c:1267 #, fuzzy msgid "Dash pattern used to draw the tree view lines" msgstr "Prikkemønster som brukes til å tegne fokusindikator" -#: gtk/gtktreeviewcolumn.c:196 +#: ../gtk/gtktreeviewcolumn.c:243 msgid "Whether to display the column" msgstr "Vis kolonnen" -#: gtk/gtktreeviewcolumn.c:203 gtk/gtkwindow.c:609 +#: ../gtk/gtktreeviewcolumn.c:250 ../gtk/gtkwindow.c:646 msgid "Resizable" msgstr "Kan endre størrelse" -#: gtk/gtktreeviewcolumn.c:204 +#: ../gtk/gtktreeviewcolumn.c:251 msgid "Column is user-resizable" msgstr "Bruker kan endre størrelse på kolonnen" -#: gtk/gtktreeviewcolumn.c:212 +#: ../gtk/gtktreeviewcolumn.c:259 msgid "Current width of the column" msgstr "Nåværende bredde på kolonnen" -#: gtk/gtktreeviewcolumn.c:221 +#: ../gtk/gtktreeviewcolumn.c:268 msgid "Space which is inserted between cells" msgstr "Plass som er satt inn mellom celler" -#: gtk/gtktreeviewcolumn.c:229 +#: ../gtk/gtktreeviewcolumn.c:276 msgid "Sizing" msgstr "Størrelse" -#: gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Resize mode of the column" msgstr "Modus for endring av størrelse for kolonnen" -#: gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtktreeviewcolumn.c:285 msgid "Fixed Width" msgstr "Fast bredde" -#: gtk/gtktreeviewcolumn.c:239 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Current fixed width of the column" msgstr "Nåværende fast bredde på kolonnen" -#: gtk/gtktreeviewcolumn.c:248 +#: ../gtk/gtktreeviewcolumn.c:295 msgid "Minimum Width" msgstr "Minimal bredde" -#: gtk/gtktreeviewcolumn.c:249 +#: ../gtk/gtktreeviewcolumn.c:296 msgid "Minimum allowed width of the column" msgstr "Minimum tillatt bredde på kolonne" -#: gtk/gtktreeviewcolumn.c:258 +#: ../gtk/gtktreeviewcolumn.c:305 msgid "Maximum Width" msgstr "Maksimal bredde" -#: gtk/gtktreeviewcolumn.c:259 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum allowed width of the column" msgstr "Maksimum tillatt bredde på kolonnen" -#: gtk/gtktreeviewcolumn.c:269 +#: ../gtk/gtktreeviewcolumn.c:316 msgid "Title to appear in column header" msgstr "Tittel som vises i kolonnetopptekst" -#: gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Column gets share of extra width allocated to the widget" msgstr "Kolonnen får en del av ekstra bredde allokert til komponenten" -#: gtk/gtktreeviewcolumn.c:284 +#: ../gtk/gtktreeviewcolumn.c:331 msgid "Clickable" msgstr "Klikkbar" -#: gtk/gtktreeviewcolumn.c:285 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Whether the header can be clicked" msgstr "Om toppteksten kan klikkes" -#: gtk/gtktreeviewcolumn.c:293 +#: ../gtk/gtktreeviewcolumn.c:340 msgid "Widget" msgstr "Widget" -#: gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget to put in column header button instead of column title" msgstr "" "Widget som skal legges i kappen for kolonneheader i stedet for kolonnens " "tittel" -#: gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:349 msgid "X Alignment of the column header text or widget" msgstr "X-justering for kolonneheaders tekst eller widget" -#: gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Whether the column can be reordered around the headers" msgstr "Kolonnen kan omorganiseres etter titler" -#: gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtktreeviewcolumn.c:366 msgid "Sort indicator" msgstr "Sorter indikator" -#: gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Whether to show a sort indicator" msgstr "Sorter indikator eller ikke" -#: gtk/gtktreeviewcolumn.c:327 +#: ../gtk/gtktreeviewcolumn.c:374 msgid "Sort order" msgstr "Sorteringsrekkefølge" -#: gtk/gtktreeviewcolumn.c:328 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort direction the sort indicator should indicate" msgstr "Sorteringsretning indikert av sorteringsindikator" -#: gtk/gtktreeviewcolumn.c:344 +#: ../gtk/gtktreeviewcolumn.c:391 #, fuzzy msgid "Sort column ID" msgstr "Tekstkolonne" -#: gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "" -#: gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Om avrivningsoppføringer skal legges til for menyen" -#: gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Flettet brukergrensesnittdefinisjon" -#: gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "En XML-streng som beskriver flettet brukergrensesnitt" -#: gtk/gtkviewport.c:143 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" -"GtkAdjustment som bestemmer verdiene for horisontal posisjon for dette " -"visningsområdet" - -#: gtk/gtkviewport.c:151 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" -"GtkAdjustment som bestemmer verdiene for vertikal posisjon for dette " -"visningsområdet" - -#: gtk/gtkviewport.c:159 +#: ../gtk/gtkviewport.c:155 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "Bestemmer hvordan den skyggelagte boksen rundt visningsområdet tegnes" -#: gtk/gtkwidget.c:714 +#: ../gtk/gtkvolumebutton.c:156 +#, fuzzy +msgid "Use symbolic icons" +msgstr "Forgrunnsfarge som en streng" + +#: ../gtk/gtkvolumebutton.c:157 +#, fuzzy +#| msgid "Whether the cursor should blink" +msgid "Whether to use symbolic icons" +msgstr "La markøren blinke" + +#: ../gtk/gtkwidget.c:893 msgid "Widget name" msgstr "Navn på widget" -#: gtk/gtkwidget.c:715 +#: ../gtk/gtkwidget.c:894 msgid "The name of the widget" msgstr "Navnet på komponenten" -#: gtk/gtkwidget.c:721 +#: ../gtk/gtkwidget.c:900 msgid "Parent widget" msgstr "Opphavswidget" -#: gtk/gtkwidget.c:722 +#: ../gtk/gtkwidget.c:901 msgid "The parent widget of this widget. Must be a Container widget" msgstr "Opphav for widget. Må være et container-widget" -#: gtk/gtkwidget.c:729 +#: ../gtk/gtkwidget.c:908 msgid "Width request" msgstr "Breddeforespørsel" -#: gtk/gtkwidget.c:730 +#: ../gtk/gtkwidget.c:909 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" @@ -6744,11 +6873,11 @@ msgstr "" "Overstyring for breddeforespørsel for widget, eller -1 hvis naturlig " "forespørsel skal brukes" -#: gtk/gtkwidget.c:738 +#: ../gtk/gtkwidget.c:917 msgid "Height request" msgstr "Høydeforespørsel" -#: gtk/gtkwidget.c:739 +#: ../gtk/gtkwidget.c:918 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" @@ -6756,83 +6885,83 @@ msgstr "" "Overstyring for høydeforespørsel for widget, eller -1 hvis vanlig " "forespørsel skal brukes" -#: gtk/gtkwidget.c:748 +#: ../gtk/gtkwidget.c:927 msgid "Whether the widget is visible" msgstr "Widgetet er synlig" -#: gtk/gtkwidget.c:755 +#: ../gtk/gtkwidget.c:934 msgid "Whether the widget responds to input" msgstr "Widgetet tar imot inndata" -#: gtk/gtkwidget.c:761 +#: ../gtk/gtkwidget.c:940 msgid "Application paintable" msgstr "Tegnbar av applikasjon" -#: gtk/gtkwidget.c:762 +#: ../gtk/gtkwidget.c:941 msgid "Whether the application will paint directly on the widget" msgstr "Applikasjonen vil tegne direkte på widgetet" -#: gtk/gtkwidget.c:768 +#: ../gtk/gtkwidget.c:947 msgid "Can focus" msgstr "Kan fokusere" -#: gtk/gtkwidget.c:769 +#: ../gtk/gtkwidget.c:948 msgid "Whether the widget can accept the input focus" msgstr "Widget kan akseptere inndatafokus" -#: gtk/gtkwidget.c:775 +#: ../gtk/gtkwidget.c:954 msgid "Has focus" msgstr "Har fokus" -#: gtk/gtkwidget.c:776 +#: ../gtk/gtkwidget.c:955 msgid "Whether the widget has the input focus" msgstr "Widget har inndatafokus" -#: gtk/gtkwidget.c:782 +#: ../gtk/gtkwidget.c:961 msgid "Is focus" msgstr "Er fokus" -#: gtk/gtkwidget.c:783 +#: ../gtk/gtkwidget.c:962 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Om widget er fokus-widget i toppnoden" -#: gtk/gtkwidget.c:789 +#: ../gtk/gtkwidget.c:968 msgid "Can default" msgstr "Kan være forvalgt" -#: gtk/gtkwidget.c:790 +#: ../gtk/gtkwidget.c:969 msgid "Whether the widget can be the default widget" msgstr "Om widget kan være forvalgt widget" -#: gtk/gtkwidget.c:796 +#: ../gtk/gtkwidget.c:975 msgid "Has default" msgstr "Har forvalg" -#: gtk/gtkwidget.c:797 +#: ../gtk/gtkwidget.c:976 msgid "Whether the widget is the default widget" msgstr "Widget er forvalgt widget" -#: gtk/gtkwidget.c:803 +#: ../gtk/gtkwidget.c:982 msgid "Receives default" msgstr "Mottar forvalg" -#: gtk/gtkwidget.c:804 +#: ../gtk/gtkwidget.c:983 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "Hvis SANN, vil widgetet motta forvalgt handling når det er fokusert" -#: gtk/gtkwidget.c:810 +#: ../gtk/gtkwidget.c:989 msgid "Composite child" msgstr "Sammensatt barn" -#: gtk/gtkwidget.c:811 +#: ../gtk/gtkwidget.c:990 msgid "Whether the widget is part of a composite widget" msgstr "Om widgetet er en del av et sammensatt widget" -#: gtk/gtkwidget.c:817 +#: ../gtk/gtkwidget.c:996 msgid "Style" msgstr "Stil" -#: gtk/gtkwidget.c:818 +#: ../gtk/gtkwidget.c:997 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" @@ -6840,152 +6969,200 @@ msgstr "" "Stil for widgetet. Inneholder informasjon om hvordan det vil se ut (farger " "etc)" -#: gtk/gtkwidget.c:824 +#: ../gtk/gtkwidget.c:1003 msgid "Events" msgstr "Hendelser" -#: gtk/gtkwidget.c:825 +#: ../gtk/gtkwidget.c:1004 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "" "Hendelsesmasken som bestemmer hvilke typer GdkEvents dette widgetet mottar" -#: gtk/gtkwidget.c:832 -msgid "Extension events" -msgstr "Utvidelseshendelser" - -#: gtk/gtkwidget.c:833 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "" -"Masken som bestemmer hvilken type utvidelseshendelser dette widgetet mottar" - -#: gtk/gtkwidget.c:840 +#: ../gtk/gtkwidget.c:1011 msgid "No show all" msgstr "Ikke vis alle" -#: gtk/gtkwidget.c:841 +#: ../gtk/gtkwidget.c:1012 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Om gtk_widget_show_all() skal ha effekt for denne komponenten" -#: gtk/gtkwidget.c:864 +#: ../gtk/gtkwidget.c:1035 msgid "Whether this widget has a tooltip" msgstr "Om denne komponenten har verktøytips" -#: gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:1091 msgid "Window" msgstr "Vindu" -#: gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:1092 msgid "The widget's window if it is realized" msgstr "" -#: gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:1106 #, fuzzy msgid "Double Buffered" msgstr "Buffer" -#: gtk/gtkwidget.c:936 +#: ../gtk/gtkwidget.c:1107 #, fuzzy msgid "Whether the widget is double buffered" msgstr "Om handlingen er synlig" -#: gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:1122 msgid "How to position in extra horizontal space" msgstr "" -#: gtk/gtkwidget.c:967 +#: ../gtk/gtkwidget.c:1138 msgid "How to position in extra vertical space" msgstr "" -#: gtk/gtkwidget.c:986 +#: ../gtk/gtkwidget.c:1157 #, fuzzy msgid "Margin on Left" msgstr "Marg" -#: gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1158 msgid "Pixels of extra space on the left side" msgstr "" -#: gtk/gtkwidget.c:1007 +#: ../gtk/gtkwidget.c:1178 msgid "Margin on Right" msgstr "" -#: gtk/gtkwidget.c:1008 +#: ../gtk/gtkwidget.c:1179 #, fuzzy msgid "Pixels of extra space on the right side" msgstr "Antall piksler med tomrom over avsnittene" -#: gtk/gtkwidget.c:1028 +#: ../gtk/gtkwidget.c:1199 #, fuzzy msgid "Margin on Top" msgstr "Marg" -#: gtk/gtkwidget.c:1029 +#: ../gtk/gtkwidget.c:1200 #, fuzzy msgid "Pixels of extra space on the top side" msgstr "Antall piksler med tomrom over avsnittene" -#: gtk/gtkwidget.c:1049 +#: ../gtk/gtkwidget.c:1220 msgid "Margin on Bottom" msgstr "" -#: gtk/gtkwidget.c:1050 +#: ../gtk/gtkwidget.c:1221 msgid "Pixels of extra space on the bottom side" msgstr "" -#: gtk/gtkwidget.c:1067 +#: ../gtk/gtkwidget.c:1238 #, fuzzy msgid "All Margins" msgstr "Marg" -#: gtk/gtkwidget.c:1068 +#: ../gtk/gtkwidget.c:1239 msgid "Pixels of extra space on all four sides" msgstr "" -#: gtk/gtkwidget.c:2741 +#: ../gtk/gtkwidget.c:1272 +#, fuzzy +#| msgid "Horizontal padding" +msgid "Horizontal Expand" +msgstr "Horisontalt fyll" + +#: ../gtk/gtkwidget.c:1273 +#, fuzzy +msgid "Whether widget wants more horizontal space" +msgstr "Om alle barn skal være av samme størrelse." + +#: ../gtk/gtkwidget.c:1287 +#, fuzzy +#| msgid "Horizontal alignment" +msgid "Horizontal Expand Set" +msgstr "Horisontal justering" + +#: ../gtk/gtkwidget.c:1288 +#, fuzzy +msgid "Whether to use the hexpand property" +msgstr "Om etiketteksten kan velges med musen" + +#: ../gtk/gtkwidget.c:1302 +#, fuzzy +#| msgid "Vertical padding" +msgid "Vertical Expand" +msgstr "Vertikalt fyll" + +#: ../gtk/gtkwidget.c:1303 +#, fuzzy +#| msgid "Whether the widget is visible" +msgid "Whether widget wants more vertical space" +msgstr "Widgetet er synlig" + +#: ../gtk/gtkwidget.c:1317 +#, fuzzy +#| msgid "Vertical alignment" +msgid "Vertical Expand Set" +msgstr "Vertikal justering" + +#: ../gtk/gtkwidget.c:1318 +#, fuzzy +msgid "Whether to use the vexpand property" +msgstr "Om etiketteksten kan velges med musen" + +#: ../gtk/gtkwidget.c:1332 +#, fuzzy +#| msgid "Expand timeout" +msgid "Expand Both" +msgstr "Tidsavbrudd for utvidelse" + +#: ../gtk/gtkwidget.c:1333 +#, fuzzy +#| msgid "Whether the widget has the input focus" +msgid "Whether widget wants to expand in both directions" +msgstr "Widget har inndatafokus" + +#: ../gtk/gtkwidget.c:2992 msgid "Interior Focus" msgstr "Internt fokus" -#: gtk/gtkwidget.c:2742 +#: ../gtk/gtkwidget.c:2993 msgid "Whether to draw the focus indicator inside widgets" msgstr "Om fokusindikator skal tegnes inne i et widget" -#: gtk/gtkwidget.c:2748 +#: ../gtk/gtkwidget.c:2999 msgid "Focus linewidth" msgstr "Fokuslinjebredde" -#: gtk/gtkwidget.c:2749 +#: ../gtk/gtkwidget.c:3000 msgid "Width, in pixels, of the focus indicator line" msgstr "Fokusindikatorlinjens bredde i piksler" -#: gtk/gtkwidget.c:2755 +#: ../gtk/gtkwidget.c:3006 msgid "Focus line dash pattern" msgstr "Prikkemønster for fokuslinje" -#: gtk/gtkwidget.c:2756 +#: ../gtk/gtkwidget.c:3007 msgid "Dash pattern used to draw the focus indicator" msgstr "Prikkemønster som brukes til å tegne fokusindikator" -#: gtk/gtkwidget.c:2761 +#: ../gtk/gtkwidget.c:3012 msgid "Focus padding" msgstr "Fyll for fokus" -#: gtk/gtkwidget.c:2762 +#: ../gtk/gtkwidget.c:3013 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Bredde i piksler mellom fokusindikator og widgetboksen" -#: gtk/gtkwidget.c:2767 +#: ../gtk/gtkwidget.c:3018 msgid "Cursor color" msgstr "Markørfarge" -#: gtk/gtkwidget.c:2768 +#: ../gtk/gtkwidget.c:3019 msgid "Color with which to draw insertion cursor" msgstr "Farge som markøren skal tegnes med" -#: gtk/gtkwidget.c:2773 +#: ../gtk/gtkwidget.c:3024 msgid "Secondary cursor color" msgstr "Sekundær markørfarge" -#: gtk/gtkwidget.c:2774 +#: ../gtk/gtkwidget.c:3025 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -6993,207 +7170,204 @@ msgstr "" "Farge for sekundær innsettingsmarkør ved redigering av blandet høyre-til-" "venstre og venstre-til-høyre tekst" -#: gtk/gtkwidget.c:2779 +#: ../gtk/gtkwidget.c:3030 msgid "Cursor line aspect ratio" msgstr "Aspektrate for markørlinje" -#: gtk/gtkwidget.c:2780 +#: ../gtk/gtkwidget.c:3031 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Aspektrate for tegning av innsettingsmarkør" -#: gtk/gtkwidget.c:2786 +#: ../gtk/gtkwidget.c:3037 #, fuzzy msgid "Window dragging" msgstr "Vindusplassering" -#: gtk/gtkwidget.c:2787 +#: ../gtk/gtkwidget.c:3038 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "" -#: gtk/gtkwidget.c:2800 +#: ../gtk/gtkwidget.c:3051 msgid "Unvisited Link Color" msgstr "Lenkefarge for ikke besøkt lenke" -#: gtk/gtkwidget.c:2801 +#: ../gtk/gtkwidget.c:3052 msgid "Color of unvisited links" msgstr "Farge på ikke besøkte lenker" -#: gtk/gtkwidget.c:2814 +#: ../gtk/gtkwidget.c:3065 msgid "Visited Link Color" msgstr "Lenkefarge for besøkt lenke" -#: gtk/gtkwidget.c:2815 +#: ../gtk/gtkwidget.c:3066 msgid "Color of visited links" msgstr "Farge på besøkte lenker" -#: gtk/gtkwidget.c:2829 +#: ../gtk/gtkwidget.c:3080 msgid "Wide Separators" msgstr "Brede skillelinjer" -#: gtk/gtkwidget.c:2830 +#: ../gtk/gtkwidget.c:3081 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" msgstr "" -#: gtk/gtkwidget.c:2844 +#: ../gtk/gtkwidget.c:3095 msgid "Separator Width" msgstr "Bredde på separator" -#: gtk/gtkwidget.c:2845 +#: ../gtk/gtkwidget.c:3096 msgid "The width of separators if wide-separators is TRUE" msgstr "" -#: gtk/gtkwidget.c:2859 +#: ../gtk/gtkwidget.c:3110 msgid "Separator Height" msgstr "Høyde på separator" -#: gtk/gtkwidget.c:2860 +#: ../gtk/gtkwidget.c:3111 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "" -#: gtk/gtkwidget.c:2874 +#: ../gtk/gtkwidget.c:3125 #, fuzzy msgid "Horizontal Scroll Arrow Length" msgstr "Oppførsel for horisontalt rullefelt" -#: gtk/gtkwidget.c:2875 +#: ../gtk/gtkwidget.c:3126 #, fuzzy msgid "The length of horizontal scroll arrows" msgstr "Når horisontalt rullefelt skal vises" -#: gtk/gtkwidget.c:2889 +#: ../gtk/gtkwidget.c:3140 #, fuzzy msgid "Vertical Scroll Arrow Length" msgstr "Oppførsel for vertikalt rullefelt" -#: gtk/gtkwidget.c:2890 +#: ../gtk/gtkwidget.c:3141 #, fuzzy msgid "The length of vertical scroll arrows" msgstr "Når vertikalt rullefelt skal vises" -#: gtk/gtkwindow.c:567 +#: ../gtk/gtkwindow.c:604 msgid "Window Type" msgstr "Vindustype" -#: gtk/gtkwindow.c:568 +#: ../gtk/gtkwindow.c:605 msgid "The type of the window" msgstr "Type vindu" -#: gtk/gtkwindow.c:576 +#: ../gtk/gtkwindow.c:613 msgid "Window Title" msgstr "Vindustittel" -#: gtk/gtkwindow.c:577 +#: ../gtk/gtkwindow.c:614 msgid "The title of the window" msgstr "Tittelen på vinduet" -#: gtk/gtkwindow.c:584 +#: ../gtk/gtkwindow.c:621 msgid "Window Role" msgstr "Vindusrolle" -#: gtk/gtkwindow.c:585 +#: ../gtk/gtkwindow.c:622 msgid "Unique identifier for the window to be used when restoring a session" -msgstr "" -"Unik indentifikator for vinduet som brukes ved gjenoppretting av en sesjon" +msgstr "Unik indentifikator for vinduet som brukes ved gjenoppretting av en økt" -#: gtk/gtkwindow.c:601 +#: ../gtk/gtkwindow.c:638 msgid "Startup ID" msgstr "Oppstarts-ID" -#: gtk/gtkwindow.c:602 +#: ../gtk/gtkwindow.c:639 #, fuzzy msgid "Unique startup identifier for the window used by startup-notification" -msgstr "" -"Unik indentifikator for vinduet som brukes ved gjenoppretting av en sesjon" +msgstr "Unik indentifikator for vinduet som brukes ved gjenoppretting av en økt" -#: gtk/gtkwindow.c:610 +#: ../gtk/gtkwindow.c:647 msgid "If TRUE, users can resize the window" msgstr "Brukere kan endre størrelse på vinduet hvis SANN" -#: gtk/gtkwindow.c:617 +#: ../gtk/gtkwindow.c:654 msgid "Modal" msgstr "Modal" -#: gtk/gtkwindow.c:618 +#: ../gtk/gtkwindow.c:655 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" msgstr "" "Hvis SANN er vinduet modalt (andre vinduer er ikke brukbare når dette vises)" -#: gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:662 msgid "Window Position" msgstr "Vindusplassering" -#: gtk/gtkwindow.c:626 +#: ../gtk/gtkwindow.c:663 msgid "The initial position of the window" msgstr "Startposisjon for vinduet" -#: gtk/gtkwindow.c:634 +#: ../gtk/gtkwindow.c:671 msgid "Default Width" msgstr "Standard bredde" -#: gtk/gtkwindow.c:635 +#: ../gtk/gtkwindow.c:672 msgid "The default width of the window, used when initially showing the window" msgstr "Forvalgt bredde for vinduet. Brukt når vinduet først vises" -#: gtk/gtkwindow.c:644 +#: ../gtk/gtkwindow.c:681 msgid "Default Height" msgstr "Standard høyde" -#: gtk/gtkwindow.c:645 -msgid "" -"The default height of the window, used when initially showing the window" +#: ../gtk/gtkwindow.c:682 +msgid "The default height of the window, used when initially showing the window" msgstr "Forvalgt høyde for vindu. Brukt når vinduet først vises" -#: gtk/gtkwindow.c:654 +#: ../gtk/gtkwindow.c:691 msgid "Destroy with Parent" msgstr "Ødelegg med opphav" -#: gtk/gtkwindow.c:655 +#: ../gtk/gtkwindow.c:692 msgid "If this window should be destroyed when the parent is destroyed" msgstr "Vinduet skal ødelegges når opphavet ødelegges" -#: gtk/gtkwindow.c:663 +#: ../gtk/gtkwindow.c:700 msgid "Icon for this window" msgstr "Ikon for dette vinduet" -#: gtk/gtkwindow.c:669 +#: ../gtk/gtkwindow.c:706 #, fuzzy msgid "Mnemonics Visible" msgstr "Hinttast" -#: gtk/gtkwindow.c:670 +#: ../gtk/gtkwindow.c:707 #, fuzzy msgid "Whether mnemonics are currently visible in this window" msgstr "Om toppnivået er aktivt vindu" -#: gtk/gtkwindow.c:686 +#: ../gtk/gtkwindow.c:723 msgid "Name of the themed icon for this window" msgstr "Navnet på temaikonet for dette vinduet" -#: gtk/gtkwindow.c:701 +#: ../gtk/gtkwindow.c:738 msgid "Is Active" msgstr "Er aktiv" -#: gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:739 msgid "Whether the toplevel is the current active window" msgstr "Om toppnivået er aktivt vindu" -#: gtk/gtkwindow.c:709 +#: ../gtk/gtkwindow.c:746 msgid "Focus in Toplevel" msgstr "Fokus i toppnivå" -#: gtk/gtkwindow.c:710 +#: ../gtk/gtkwindow.c:747 msgid "Whether the input focus is within this GtkWindow" msgstr "Om inndatafokus er i dette GtkWindow" -#: gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:754 msgid "Type hint" msgstr "Type hint" -#: gtk/gtkwindow.c:718 +#: ../gtk/gtkwindow.c:755 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -7201,103 +7375,202 @@ msgstr "" "Hint som skal hjelpe skrivebordsmiljøet med å forstå hvilken type vindu " "dette er og hvordan det skal behandles." -#: gtk/gtkwindow.c:726 +#: ../gtk/gtkwindow.c:763 msgid "Skip taskbar" msgstr "Hopp over oppgaveliste" -#: gtk/gtkwindow.c:727 +#: ../gtk/gtkwindow.c:764 msgid "TRUE if the window should not be in the task bar." msgstr "SANN hvis vinduet ikke skal være i oppgavelisten." -#: gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:771 msgid "Skip pager" msgstr "Hopp over vinduliste" -#: gtk/gtkwindow.c:735 +#: ../gtk/gtkwindow.c:772 msgid "TRUE if the window should not be in the pager." msgstr "SANN hvis vinduet ikke skal være i vindulisten." -#: gtk/gtkwindow.c:742 +#: ../gtk/gtkwindow.c:779 msgid "Urgent" msgstr "Viktig" -#: gtk/gtkwindow.c:743 +#: ../gtk/gtkwindow.c:780 msgid "TRUE if the window should be brought to the user's attention." msgstr "TRUE hvis vinduet skal bli gitt brukerens oppmerksomhet." -#: gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:794 msgid "Accept focus" msgstr "Godta fokus" -#: gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:795 msgid "TRUE if the window should receive the input focus." msgstr "SANN hvis vinduet skal motta fokus for inndata." -#: gtk/gtkwindow.c:772 +#: ../gtk/gtkwindow.c:809 msgid "Focus on map" msgstr "Fokuser på kart" -#: gtk/gtkwindow.c:773 +#: ../gtk/gtkwindow.c:810 msgid "TRUE if the window should receive the input focus when mapped." msgstr "«TRUE» hvis vinduet skal få inndatafokus når kartlagt." -#: gtk/gtkwindow.c:787 +#: ../gtk/gtkwindow.c:824 msgid "Decorated" msgstr "Dekorert" -#: gtk/gtkwindow.c:788 +#: ../gtk/gtkwindow.c:825 msgid "Whether the window should be decorated by the window manager" msgstr "Om vinduet skal dekoreres av vindushåndtereren" -#: gtk/gtkwindow.c:802 +#: ../gtk/gtkwindow.c:839 msgid "Deletable" msgstr "Slettbar" -#: gtk/gtkwindow.c:803 +#: ../gtk/gtkwindow.c:840 msgid "Whether the window frame should have a close button" msgstr "Om vinduet skal ha en knapp for å lukke det" -#: gtk/gtkwindow.c:819 +#: ../gtk/gtkwindow.c:859 +#, fuzzy +#| msgid "Has Resize Grip" +msgid "Resize grip" +msgstr "Har håndtak for endring av størrelse" + +#: ../gtk/gtkwindow.c:860 +#, fuzzy +#| msgid "Whether the window frame should have a close button" +msgid "Specifies whether the window should have a resize grip" +msgstr "Om vinduet skal ha en knapp for å lukke det" + +#: ../gtk/gtkwindow.c:874 +msgid "Resize grip is visible" +msgstr "" + +#: ../gtk/gtkwindow.c:875 +#, fuzzy +#| msgid "Whether the action group is visible." +msgid "Specifies whether the window's resize grip is visible." +msgstr "Om handlingsgruppen er synlig" + +#: ../gtk/gtkwindow.c:891 msgid "Gravity" msgstr "Tyngde" -#: gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:892 msgid "The window gravity of the window" msgstr "Vinduets tyngde" -#: gtk/gtkwindow.c:837 +#: ../gtk/gtkwindow.c:909 msgid "Transient for Window" msgstr "" -#: gtk/gtkwindow.c:838 +#: ../gtk/gtkwindow.c:910 #, fuzzy msgid "The transient parent of the dialog" msgstr "Knappene som vises i meldingsdialogen" -#: gtk/gtkwindow.c:853 +#: ../gtk/gtkwindow.c:925 msgid "Opacity for Window" msgstr "" -#: gtk/gtkwindow.c:854 +#: ../gtk/gtkwindow.c:926 #, fuzzy msgid "The opacity of the window, from 0 to 1" msgstr "Type vindu" -#: modules/input/gtkimcontextxim.c:334 -msgid "IM Preedit style" -msgstr "Stil for IM-forhåndsredigering" +#: ../gtk/gtkwindow.c:936 ../gtk/gtkwindow.c:937 +msgid "Width of resize grip" +msgstr "" -#: modules/input/gtkimcontextxim.c:335 -msgid "How to draw the input method preedit string" -msgstr "Hvordan forhåndsredigeringsstrengen for en inndatametode tegnes" +#: ../gtk/gtkwindow.c:942 ../gtk/gtkwindow.c:943 +#, fuzzy +#| msgid "Has Resize Grip" +msgid "Height of resize grip" +msgstr "Har håndtak for endring av størrelse" -#: modules/input/gtkimcontextxim.c:343 -msgid "IM Status style" -msgstr "IM statusstil" +#: ../gtk/gtkwindow.c:962 +#, fuzzy +#| msgid "Application paintable" +msgid "GtkApplication" +msgstr "Tegnbar av applikasjon" -#: modules/input/gtkimcontextxim.c:344 -msgid "How to draw the input method statusbar" -msgstr "Hvordan statuslinjen for inndatametoden tegnes" +#: ../gtk/gtkwindow.c:963 +#, fuzzy +#| msgid "The initial position of the window" +msgid "The GtkApplication for the window" +msgstr "Startposisjon for vinduet" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "Merkelappen til programmet sitt nettside. Hvis dette ikke er satt brukes " +#~ "bare nettadressen" + +#~ msgid "Horizontal adjustment" +#~ msgstr "Horisontal justering" + +#~ msgid "Vertical adjustment" +#~ msgstr "Vertikal justering" + +#~ msgid "Lower" +#~ msgstr "Nedre" + +#~ msgid "Lower limit of ruler" +#~ msgstr "Nedre grense for linjal" + +#~ msgid "Upper" +#~ msgstr "Øvre" + +#~ msgid "Upper limit of ruler" +#~ msgstr "Øvre grense for linjal" + +#~ msgid "Position of mark on the ruler" +#~ msgstr "Posisjon for merke på linjal" + +#~ msgid "Max Size" +#~ msgstr "Maks størrelse" + +#~ msgid "Maximum size of the ruler" +#~ msgstr "Maksimum størrelse på linjal" + +#~ msgid "Metric" +#~ msgstr "Måleverdi" + +#~ msgid "The metric used for the ruler" +#~ msgstr "Måleverdi som brukes for linjalen" + +#~ msgid "Whether the statusbar has a grip for resizing the toplevel" +#~ msgstr "Om statuslinjen har et håndtak for å endre størrelse på toppnoden" + +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "Horisontal justering for widget" + +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "Vertikal justering for widget" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "" +#~ "GtkAdjustment som bestemmer verdiene for horisontal posisjon for dette " +#~ "visningsområdet" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "" +#~ "GtkAdjustment som bestemmer verdiene for vertikal posisjon for dette " +#~ "visningsområdet" + +#~ msgid "Extension events" +#~ msgstr "Utvidelseshendelser" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "Masken som bestemmer hvilken type utvidelseshendelser dette widgetet " +#~ "mottar" #~ msgid "Loop" #~ msgstr "Gå i løkke" diff --git a/po-properties/pa.po b/po-properties/pa.po index c50bd94454..a121fd6ede 100644 --- a/po-properties/pa.po +++ b/po-properties/pa.po @@ -3,15 +3,15 @@ # This file is distributed under the same license as the gtk+-properties.HEAD package. # # Amanpreet Singh Alam , 2004. -# A S Alam , 2005, 2006, 2007, 2009, 2010. +# A S Alam , 2005, 2006, 2007, 2009, 2010, 2011. # ASB , 2007. # Amanpreet Singh Alam , 2009. msgid "" msgstr "" "Project-Id-Version: gtk+-properties.HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" -"POT-Creation-Date: 2010-10-08 06:20+0000\n" -"PO-Revision-Date: 2010-10-09 08:27+0530\n" +"POT-Creation-Date: 2011-01-05 17:27+0000\n" +"PO-Revision-Date: 2011-01-06 07:14+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" @@ -21,216 +21,240 @@ msgstr "" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gdk/gdkdevice.c:97 -msgid "Device Display" -msgstr "ਜੰਤਰ ਡਿਸਪਲੇਅ" - -#: ../gdk/gdkdevice.c:98 -msgid "Display which the device belongs to" -msgstr "ਡਿਸਪਲੇਅ, ਜਿਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਹੈ" - -#: ../gdk/gdkdevice.c:112 -msgid "Device manager" -msgstr "ਜੰਤਰ ਮੈਨੇਜਰ" - -#: ../gdk/gdkdevice.c:113 -msgid "Device manager which the device belongs to" -msgstr "ਜੰਤਰ ਮੈਨੇਜਰ, ਜਿਸ ਨਾਲ ਜੰਤਰ ਸਬੰਧਿਤ ਹੈ" - -#: ../gdk/gdkdevice.c:127 ../gdk/gdkdevice.c:128 -msgid "Device name" -msgstr "ਜੰਤਰ ਨਾਂ" - -#: ../gdk/gdkdevice.c:142 -msgid "Device type" -msgstr "ਜੰਤਰ ਕਿਸਮ" - -#: ../gdk/gdkdevice.c:143 -msgid "Device role in the device manager" -msgstr "ਜੰਤਰ ਮੈਨੇਜਰ ਵਿੱਚ ਜੰਤਰ ਰੋਲ" - -#: ../gdk/gdkdevice.c:159 -msgid "Associated device" -msgstr "ਸਬੰਧਿਤ ਜੰਤਰ" - -#: ../gdk/gdkdevice.c:160 -msgid "Associated pointer or keyboard with this device" -msgstr "ਇਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਪੁਆਇੰਟਰ ਜਾਂ ਕੀਬੋਰਡ" - -#: ../gdk/gdkdevice.c:173 -msgid "Input source" -msgstr "ਇੰਪੁੱਟ ਸਰੋਤ" - -#: ../gdk/gdkdevice.c:174 -msgid "Source type for the device" -msgstr "ਜੰਤਰ ਲਈ ਸਰੋਤ ਕਿਸਮ" - -#: ../gdk/gdkdevice.c:189 ../gdk/gdkdevice.c:190 -msgid "Input mode for the device" -msgstr "ਜੰਤਰ ਲਈ ਇੰਪੁੱਟ ਮੋਡ" - -#: ../gdk/gdkdevice.c:205 -msgid "Whether the device has a cursor" -msgstr "ਕੀ ਜੰਤਰ ਲਈ ਕਰਸਰ ਹੈ" - -#: ../gdk/gdkdevice.c:206 -msgid "Whether there is a visible cursor following device motion" -msgstr "ਕੀ ਅੱਗੇ ਦਿੱਤੀ ਜੰਤਰ ਹਲਚਲ ਲਈ ਦਿੱਖ ਕਰਸਰ ਹੈ" - -#: ../gdk/gdkdevice.c:220 ../gdk/gdkdevice.c:221 -msgid "Number of axes in the device" -msgstr "ਜੰਤਰ ਵਿੱਚ ਧੁਰਿਆਂ ਦੀ ਗਿਣਤੀ" - -#: ../gdk/gdkdevicemanager.c:134 +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" msgstr "ਡਿਸਪਲੇਅ" -#: ../gdk/gdkdevicemanager.c:135 +#: ../gdk/gdkcursor.c:128 +#| msgid "Cursor" +msgid "Cursor type" +msgstr "ਕਰਸਰ ਕਿਸਮ" + +#: ../gdk/gdkcursor.c:129 +#| msgid "Secondary storage type" +msgid "Standard cursor type" +msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਕਿਸਮ" + +#: ../gdk/gdkcursor.c:137 +#| msgid "Display the cell" +msgid "Display of this cursor" +msgstr "ਇਹ ਕਰਸਰ ਵੇਖੋ" + +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "ਜੰਤਰ ਡਿਸਪਲੇਅ" + +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "ਡਿਸਪਲੇਅ, ਜਿਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਹੈ" + +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ" + +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ, ਜਿਸ ਨਾਲ ਜੰਤਰ ਸਬੰਧਿਤ ਹੈ" + +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "ਜੰਤਰ ਨਾਂ" + +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "ਜੰਤਰ ਕਿਸਮ" + +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ ਵਿੱਚ ਜੰਤਰ ਰੋਲ" + +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "ਸਬੰਧਿਤ ਜੰਤਰ" + +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "ਇਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਪੁਆਇੰਟਰ ਜਾਂ ਕੀਬੋਰਡ" + +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "ਇੰਪੁੱਟ ਸਰੋਤ" + +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "ਜੰਤਰ ਲਈ ਸਰੋਤ ਕਿਸਮ" + +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "ਜੰਤਰ ਲਈ ਇੰਪੁੱਟ ਮੋਡ" + +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "ਕੀ ਜੰਤਰ ਲਈ ਕਰਸਰ ਹੈ" + +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "ਕੀ ਅੱਗੇ ਦਿੱਤੀ ਜੰਤਰ ਹਲਚਲ ਲਈ ਦਿੱਖ ਕਰਸਰ ਹੈ" + +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "ਜੰਤਰ ਵਿੱਚ ਧੁਰਿਆਂ ਦੀ ਗਿਣਤੀ" + +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" msgstr "ਜੰਤਰ ਮੈਨੇਜਰ ਲਈ ਡਿਸਪਲੇਅ" -#: ../gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkdisplaymanager.c:117 msgid "Default Display" msgstr "ਡਿਫਾਲਟ ਡਿਸਪਲੇਅ" -#: ../gdk/gdkdisplaymanager.c:103 +#: ../gdk/gdkdisplaymanager.c:118 msgid "The default display for GDK" msgstr "GDK ਲਈ ਡਿਫਾਲਟ ਡਿਸਪਲੇਅ" -#: ../gdk/gdkscreen.c:72 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "ਫੋਂਟ ਚੋਣਾਂ" -#: ../gdk/gdkscreen.c:73 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "ਸਕਰੀਨ ਲਈ ਡਿਫਾਲਟ ਫੋਂਟ ਚੋਣਾਂ" -#: ../gdk/gdkscreen.c:80 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "ਫੋਂਟ ਰੈਜ਼ੋਲੂਸ਼ਨ" -#: ../gdk/gdkscreen.c:81 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "ਸਕਰੀਨ ਉੱਤੇ ਫੋਂਟਾਂ ਲਈ ਰੈਜ਼ੋਲੂਸ਼ਨ ਹੈ" -#: ../gdk/gdkwindow.c:392 ../gdk/gdkwindow.c:393 +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "ਕਰਸਰ" -#: ../gdk/x11/gdkdevice-xi.c:132 ../gdk/x11/gdkdevice-xi.c:133 -#: ../gdk/x11/gdkdevice-xi2.c:111 +#: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "ਜੰਤਰ ID" -#: ../gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" msgstr "ਜੰਤਰ ਪਛਾਣਕਰਤਾ" -#: ../gdk/x11/gdkdevicemanager-xi.c:84 +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +#| msgid "mode" +msgid "Opcode" +msgstr "Opcode" + +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +#| msgid "Event base for XInput events" +msgid "Opcode for XInput2 requests" +msgstr "XInput2 ਈਵੈਂਟ ਲਈ Opcode" + +#: ../gdk/x11/gdkdevicemanager-xi.c:95 msgid "Event base" msgstr "ਈਵੈਂਟ ਬੇਸ" -#: ../gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "XInput ਈਵੈਂਟ ਲਈ ਈਵੈਂਟ ਬੇਸ" -#: ../gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:276 msgid "Program name" msgstr "ਪਰੋਗਰਾਮ ਨਾਂ" -#: ../gtk/gtkaboutdialog.c:270 +#: ../gtk/gtkaboutdialog.c:277 msgid "" "The name of the program. If this is not set, it defaults to " "g_get_application_name()" msgstr "ਪਰੋਗਰਾਮ ਦਾ ਨਾਂ ਹੈ। ਜੇਕਰ ਇਹ ਨਾ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਡਿਫਾਲਟ g_get_application_name() ਹੋਵੇਗਾ।" -#: ../gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:291 msgid "Program version" msgstr "ਪਰੋਗਰਾਮ ਵਰਜਨ" -#: ../gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:292 msgid "The version of the program" msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜਨ ਹੈ" -#: ../gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:306 msgid "Copyright string" msgstr "ਕਾਪੀਰਾਈਟ ਲਾਈਨ" -#: ../gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright information for the program" msgstr "ਪਰੋਗਰਾਮ ਬਾਰੇ ਕਾਪੀਰਾਈਟ ਜਾਣਕਾਰੀ ਹੈ" -#: ../gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:324 msgid "Comments string" msgstr "ਟਿੱਪਣੀ ਲਾਈਨ" -#: ../gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments about the program" msgstr "ਪਰੋਗਰਾਮ ਬਾਰੇ ਟਿੱਪਣੀ ਹੈ।" -#: ../gtk/gtkaboutdialog.c:368 +#: ../gtk/gtkaboutdialog.c:375 msgid "License Type" msgstr "ਲਾਈਸੈਂਸ ਕਿਸਮ" -#: ../gtk/gtkaboutdialog.c:369 +#: ../gtk/gtkaboutdialog.c:376 msgid "The license type of the program" msgstr "ਪਰੋਗਰਾਮ ਲਈ ਲਾਈਸੈਂਸ ਕਿਸਮ" -#: ../gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:392 msgid "Website URL" msgstr "ਵੈਬਸਾਇਟ URL" -#: ../gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:393 msgid "The URL for the link to the website of the program" msgstr "ਪਰੋਗਰਾਮ ਦੀ ਵੈੱਬ ਸਾਇਟ ਨਾਲ ਸਬੰਧਤ URL ਹੈ" -#: ../gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:407 msgid "Website label" msgstr "ਵੈਬਸਾਇਟ ਲੇਬਲ" -#: ../gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "ਪਰੋਗਰਾਮ ਦੀ ਵੈਬਸਾਇਟ ਨਾਲ ਲਿੰਕ ਦਾ ਲੇਬਲ ਹੈ। ਜੇਕਰ ਇਹ ਨਾਂ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਇਹ ਮੂਲ URL ਹੋਵੇਗਾ।" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "ਪਰੋਗਰਾਮ ਦੀ ਵੈੱਬ ਸਾਇਟ ਨਾਲ ਲਿੰਕ ਲਈ ਲੇਬਲ ਹੈ" -#: ../gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:424 msgid "Authors" msgstr "ਲੇਖਕ" -#: ../gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:425 msgid "List of authors of the program" msgstr "ਪਰੋਗਰਾਮ ਦੇ ਲੇਖਕਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:441 msgid "Documenters" msgstr "ਦਸਤਾਵੇਜ਼ ਲੇਖਕ" -#: ../gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:442 msgid "List of people documenting the program" msgstr "ਪਰੋਗਰਾਮ ਦੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਵਾਲੇ ਲੇਖਕਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:458 msgid "Artists" msgstr "ਕਲਾਕਾਰ" -#: ../gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:459 msgid "List of people who have contributed artwork to the program" msgstr "ਪਰੋਗਰਾਮ ਵਿੱਚ ਕਲਾਕਾਰੀ ਕਰਨ ਵਾਲੇ ਲੋਕਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:476 msgid "Translator credits" msgstr "ਅਨੁਵਾਦ ਮਾਣ" -#: ../gtk/gtkaboutdialog.c:471 +#: ../gtk/gtkaboutdialog.c:477 msgid "Credits to the translators. This string should be marked as translatable" msgstr "ਅਨੁਵਾਦ ਕਰਨ ਵਾਲਿਆਂ ਦਾ ਨਾਂ ਹੈ। ਇਹ ਅਨੁਵਾਦ ਯੋਗ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" -#: ../gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:492 msgid "Logo" msgstr "ਲੋਗੋ" -#: ../gtk/gtkaboutdialog.c:487 +#: ../gtk/gtkaboutdialog.c:493 msgid "" "A logo for the about box. If this is not set, it defaults to " "gtk_window_get_default_icon_list()" @@ -238,40 +262,40 @@ msgstr "" "ਇਸ ਬਾਰੇ ਬਕਸੇ ਲਈ ਇੱਕ ਲੋਗੋ ਹੈ। ਜੇਕਰ ਇਹ ਨਾ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਮੂਲ " "gtk_window_get_default_icon_list() ਵਰਤਿਆ ਜਾਵੇਗਾ।" -#: ../gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:508 msgid "Logo Icon Name" msgstr "ਲੋਗੋ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:509 msgid "A named icon to use as the logo for the about box." msgstr "ਇਸ ਬਾਰੇ ਲੋਗੋ ਵਿੱਚ ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਲੋਗੋ ਹੈ।" -#: ../gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:522 msgid "Wrap license" msgstr "ਲਾਈਸੈਂਸ ਸਮੇਟਣਾ" -#: ../gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:523 msgid "Whether to wrap the license text." msgstr "ਕੀ ਲਾਈਸੈਂਸ ਟੈਕਸਟ ਨੂੰ ਸਮੇਟਣਾ ਹੈ।" -#: ../gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:187 msgid "Accelerator Closure" msgstr "ਐਕਸਰਲੇਟਰ ਬੰਦ" -#: ../gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:188 msgid "The closure to be monitored for accelerator changes" msgstr "ਐਕਸਰਲੇਟਰ ਤਬਦੀਲੀਆਂ ਦੀ ਨਿਗਰਾਨੀ ਲਈ ਸਬੰਧ" -#: ../gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:194 msgid "Accelerator Widget" msgstr "ਐਕਸਰਲੇਟਰ ਵਿਦਗਿਟ" -#: ../gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:195 msgid "The widget to be monitored for accelerator changes" msgstr "ਐਕਸਰਲੇਟਰ ਤਬਦੀਲੀਆਂ ਦੀ ਨਿਗਰਾਨੀ ਲਈ ਵਿਦਗਿਟ" #: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 -#: ../gtk/gtktextmark.c:89 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "ਨਾਂ" @@ -279,9 +303,9 @@ msgstr "ਨਾਂ" msgid "A unique name for the action." msgstr "ਕਾਰਵਾਈ ਲਈ ਸ਼ਨਾਖਤੀ ਨਾਂ ਹੈ।" -#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:238 ../gtk/gtkexpander.c:209 -#: ../gtk/gtkframe.c:130 ../gtk/gtklabel.c:549 ../gtk/gtkmenuitem.c:333 -#: ../gtk/gtktoolbutton.c:202 ../gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:131 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1588 msgid "Label" msgstr "ਲੇਬਲ" @@ -313,31 +337,31 @@ msgstr "ਸਟਾਕ ਆਈਕਾਨ" msgid "The stock icon displayed in widgets representing this action." msgstr "ਸਟਾਕ ਆਈਕਾਨ ਇਸ ਕਾਰਵਾਈ ਲਈ ਵਿਦਗਿਟ ਵਿੱਚ ਵਿਖਾ ਰਿਹਾ ਹੈ" -#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 msgid "GIcon" msgstr "ਗਲਕੋਨ" #: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 -#: ../gtk/gtkimage.c:320 ../gtk/gtkstatusicon.c:253 +#: ../gtk/gtkimage.c:328 ../gtk/gtkstatusicon.c:245 msgid "The GIcon being displayed" msgstr "ਗਲਕੋਨ ਵੇਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 -#: ../gtk/gtkimage.c:302 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:236 -#: ../gtk/gtkwindow.c:720 +#: ../gtk/gtkimage.c:310 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 msgid "Icon Name" msgstr "ਆਈਕਾਨ ਨਾਂ" #: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 -#: ../gtk/gtkimage.c:303 ../gtk/gtkstatusicon.c:237 +#: ../gtk/gtkimage.c:311 ../gtk/gtkstatusicon.c:229 msgid "The name of the icon from the icon theme" msgstr "ਆਈਕਾਨ ਸਰੂਪ ਤੋਂ ਆਈਕਾਨ ਦਾ ਨਾਂ" -#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "ਜਦੋਂ ਲੇਟਵਾਂ ਹੋਵੇ ਤਾਂ ਵੇਖਾਓ" -#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:187 +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 msgid "" "Whether the toolbar item is visible when the toolbar is in a horizontal " "orientation." @@ -353,17 +377,17 @@ msgid "" "overflow menu." msgstr "ਜੇਕਰ ਠੀਕ ਹੈ ਤਾਂ, ਇਸ ਕਾਰਵਾਈ ਲਈ ਟੂਲ-ਆਈਟਮ ਪਰਾਕਸੀ ਨੂੰ ਟੂਲਬਾਰ ਭਰਨ ਮੇਨੂ ਵਿੱਚ ਵਿਖਾਇਆ ਜਾਵੇਗਾ।" -#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "ਜਦੋਂ ਲੰਬਕਾਰੀ ਹੋਵੇ ਤਾਂ ਵੇਖਾਓ" -#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:194 +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 msgid "" "Whether the toolbar item is visible when the toolbar is in a vertical " "orientation." msgstr "ਕੀ ਟੂਲਬਾਰ ਦੀ ਆਈਟਮ ਉਪਲੱਬਧ ਹੋਵੇ, ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਲੰਬਕਾਰੀ ਹਾਲਤ ਵਿੱਚ ਹੋਵੇ।" -#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "ਖਾਸ ਹੈ" @@ -384,7 +408,7 @@ msgid "When TRUE, empty menu proxies for this action are hidden." msgstr "ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ ਇਸ ਕਾਰਵਾਈ ਵਿੱਚ ਖਾਲੀ ਲਿਸਟ ਪਰਾਕਸੀਆਂ ਨੂੰ ਉਹਲੇ ਕਰ ਦਿਓ" #: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 -#: ../gtk/gtkcellrenderer.c:242 ../gtk/gtkwidget.c:754 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:935 msgid "Sensitive" msgstr "ਸੰਵੇਦਨਸ਼ੀਲ" @@ -393,8 +417,8 @@ msgid "Whether the action is enabled." msgstr "ਕੀ ਕਾਰਵਾਈ ਯੋਗ ਹੈ" #: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 -#: ../gtk/gtkstatusicon.c:287 ../gtk/gtktreeviewcolumn.c:195 -#: ../gtk/gtkwidget.c:747 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:928 msgid "Visible" msgstr "ਦਿੱਖ" @@ -412,11 +436,11 @@ msgid "" "use)." msgstr "ਇਹ GtkActionGroup, GtkAction ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ, ਜਾਂ NULL (ਸਿਰਫ ਅੰਦਰੂਨੀ ਵਰਤੋਂ ਲਈ)" -#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "ਹਮੇਸ਼ਾਂ ਚਿੱਤਰ ਵੇਖੋ" -#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "ਕੀ ਚਿੱਤਰ ਵੇਖਾਇਆ ਜਾਵੇ" @@ -432,96 +456,96 @@ msgstr "ਕੀ ਕਾਰਵਾਈ ਗਰੁੱਪ ਯੋਗ ਹੈ।" msgid "Whether the action group is visible." msgstr "ਕੀ ਕਾਰਵਾਈ ਗਰੁੱਪ ਦਿੱਸ ਰਿਹਾ ਹੈ।" -#: ../gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:289 msgid "Related Action" msgstr "ਸਬੰਧਿਤ ਕਾਰਵਾਈ" -#: ../gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:290 msgid "The action this activatable will activate and receive updates from" msgstr "ਕਾਰਵਾਈ, ਜੋ ਕਿ ਸਰਗਰਮ ਕਰਨ ਹੈ, ਸਰਗਰਮ ਕੀਤਾ ਜਾਵੇਗਾ ਅਤੇ ਅੱਪਡੇਟ ਲਵੇ" -#: ../gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:312 msgid "Use Action Appearance" msgstr "ਕਾਰਵਾਈ ਦਿੱਖ ਵਰਤੋਂ" -#: ../gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:313 msgid "Whether to use the related actions appearance properties" msgstr "ਕੀ ਸਬੰਧਿਤ ਕਾਰਵਾਈ ਦਿੱਖ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" -#: ../gtk/gtkadjustment.c:93 ../gtk/gtkcellrendererprogress.c:126 -#: ../gtk/gtkscalebutton.c:220 ../gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:114 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 msgid "Value" msgstr "ਮੁੱਲ" -#: ../gtk/gtkadjustment.c:94 +#: ../gtk/gtkadjustment.c:115 msgid "The value of the adjustment" msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਮੁੱਲ ਹੈ" -#: ../gtk/gtkadjustment.c:110 +#: ../gtk/gtkadjustment.c:131 msgid "Minimum Value" msgstr "ਘੱਟੋ-ਘੱਟ ਮੁੱਲ" -#: ../gtk/gtkadjustment.c:111 +#: ../gtk/gtkadjustment.c:132 msgid "The minimum value of the adjustment" msgstr "ਅਜਡੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਹੈ" -#: ../gtk/gtkadjustment.c:130 +#: ../gtk/gtkadjustment.c:151 msgid "Maximum Value" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ" -#: ../gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:152 msgid "The maximum value of the adjustment" msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ ਹੈ" -#: ../gtk/gtkadjustment.c:147 +#: ../gtk/gtkadjustment.c:168 msgid "Step Increment" msgstr "ਸਟੈਪ ਵਾਧਾ" -#: ../gtk/gtkadjustment.c:148 +#: ../gtk/gtkadjustment.c:169 msgid "The step increment of the adjustment" msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਟੈਪ ਵਾਧਾ ਹੈ" -#: ../gtk/gtkadjustment.c:164 +#: ../gtk/gtkadjustment.c:185 msgid "Page Increment" msgstr "ਸਫ਼ਾ ਵਾਧਾ" -#: ../gtk/gtkadjustment.c:165 +#: ../gtk/gtkadjustment.c:186 msgid "The page increment of the adjustment" msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਫ਼ਾ ਵਾਧਾ ਹੈ" -#: ../gtk/gtkadjustment.c:184 +#: ../gtk/gtkadjustment.c:205 msgid "Page Size" msgstr "ਸਫ਼ਾ ਅਕਾਰ" -#: ../gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:206 msgid "The page size of the adjustment" msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਫ਼ਾ ਅਕਾਰ ਹੈ" -#: ../gtk/gtkalignment.c:123 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "ਲੇਟਵੀਂ ਸਫਬੰਦੀ" -#: ../gtk/gtkalignment.c:124 ../gtk/gtkbutton.c:289 +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 msgid "" "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " "right aligned" msgstr "ਉਪਲੱਬਧ ਥਾਂ ਵਿੱਚ ਚਲਾਇਡ ਲਈ ਲੇਟਵੀ ਸਥਿਤੀ, ਸਫਬੰਦੀ ਖੱਬੇ 0.0 ਤੇ , ਸੱਜੇ 1.0 ਤੇ " -#: ../gtk/gtkalignment.c:133 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "ਲੰਬਰੂਪੀ ਸਫਬੰਦੀ" -#: ../gtk/gtkalignment.c:134 ../gtk/gtkbutton.c:308 +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 msgid "" "Vertical position of child in available space. 0.0 is top aligned, 1.0 is " "bottom aligned" msgstr "ਉਪਲੱਬਧ ਥਾਂ ਵਿੱਚ ਚਲਾਇਡ ਲਈ ਲੰਬਕਾਰੀ ਹਾਲਤ ਸਫਬੰਦੀ ਉਪਰੋਂ 0.0 ਤੇ , ਥੱਲਿਉ1.0 'ਤੇ।" -#: ../gtk/gtkalignment.c:142 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "ਲੇਟਵਾਂ ਸਕੇਲ" -#: ../gtk/gtkalignment.c:143 +#: ../gtk/gtkalignment.c:157 msgid "" "If available horizontal space is bigger than needed for the child, how much " "of it to use for the child. 0.0 means none, 1.0 means all" @@ -529,11 +553,11 @@ msgstr "" "ਜੇਕਰ ਉਪਲੱਬਧ ਲੇਟਵੀ ਥਾਂ ਚਲਾਇਡ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਤੋਂ ਵਧੇਰੇ ਹੋਵੇ ਤਾਂਚਲਾਇਡ ਕਿੰਨੀ ਵਰਤੇ 0.0 ਦਾ ਮਤਲਬ ਕੁਝ " "ਵੀ ਨਹੀ, 1.0 ਸਭ" -#: ../gtk/gtkalignment.c:151 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "ਲੰਬਕਾਰੀ ਪੈਮਾਨਾ" -#: ../gtk/gtkalignment.c:152 +#: ../gtk/gtkalignment.c:166 msgid "" "If available vertical space is bigger than needed for the child, how much of " "it to use for the child. 0.0 means none, 1.0 means all" @@ -541,38 +565,125 @@ msgstr "" "ਜੇਕਰ ਉਪਲੱਬਧ ਲੰਬਕਾਰੀ ਥਾਂ ਚਲਾਇਡ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਤੋਂ ਵਧੇਰੇ ਹੋਵੇ ਤਾਂ ਚਲਾਇਡ ਕਿੰਨੀ ਵਰਤੇ 0.0 ਦਾ ਮਤਲਬ " "ਕੁਝ ਵੀ ਨਹੀ, 1.0 ਸਭ" -#: ../gtk/gtkalignment.c:169 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "ਉੱਤੇ ਚਿਣੋ" -#: ../gtk/gtkalignment.c:170 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "ਵਿਡਗਿਟ ਦੇ ਉੱਤੇ ਚਿਣ ਦਿਓ" -#: ../gtk/gtkalignment.c:186 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "ਥੱਲੇ ਚਿਣੋ" -#: ../gtk/gtkalignment.c:187 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "ਵਿਡਗਿਟ ਦੇ ਹੇਠਾਂ ਚਿਣ ਦਿਓ" -#: ../gtk/gtkalignment.c:203 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "ਖੱਬੇ ਚਿਣੋ" -#: ../gtk/gtkalignment.c:204 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "ਵਿਡਗਿਟ ਦੇ ਖੱਬੇ ਚਿਣ ਦਿਓ" -#: ../gtk/gtkalignment.c:220 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "ਸੱਜੇ ਚਿਣੋ" -#: ../gtk/gtkalignment.c:221 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "ਵਿਡਗਿਟ ਦੇ ਸੱਜੇ ਚਿਣ ਦਿਓ" +#: ../gtk/gtkappchooserbutton.c:528 +msgid "Include an 'Other...' item" +msgstr "'ਹੋਰ...' ਆਈਟਮ ਸਮੇਤ" + +#: ../gtk/gtkappchooserbutton.c:529 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" +"ਕੀ ਕੰਬੋਬਾਕਸ ਵਿੱਚ ਆਈਟਮ ਸ਼ਾਮਲ ਕਰਨੀ ਹੈ, ਜੋ ਕਿ GtkAppChooserDialog ਚਾਲੂ " +"ਕਰੇ" + +#: ../gtk/gtkappchooser.c:47 +#| msgid "Font style" +msgid "Content type" +msgstr "ਸਮੱਗਰੀ ਕਿਸਮ" + +#: ../gtk/gtkappchooser.c:48 +#| msgid "The contents of the entry" +msgid "The content type used by the open with object" +msgstr "ਆਬਜੈਕਟ ਨਾਲ ਖੋਲ੍ਹਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਸਮੱਗਰੀ ਕਿਸਮ" + +#: ../gtk/gtkappchooserdialog.c:671 +#| msgid "Filter" +msgid "GFile" +msgstr "ਜੀਫਾਇਲ" + +#: ../gtk/gtkappchooserdialog.c:672 +#| msgid "The title of the file chooser dialog." +msgid "The GFile used by the app chooser dialog" +msgstr "ਫਾਇਲ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਵਲੋਂ ਵਰਤੀ ਜੀਫਾਇਲ" + +#: ../gtk/gtkappchooserwidget.c:1004 +msgid "Show default app" +msgstr "ਡਿਫਾਲਟ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ" + +#: ../gtk/gtkappchooserwidget.c:1005 +#| msgid "Whether the widget is the default widget" +msgid "Whether the widget should show the default application" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਡਿਫਾਲਟ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1018 +msgid "Show recommended apps" +msgstr "ਸਿਫਾਰਸ਼ੀ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1019 +#| msgid "Whether images should be shown on buttons" +msgid "Whether the widget should show recommended applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਸਿਫਾਰਸ਼ੀ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1032 +msgid "Show fallback apps" +msgstr "ਫਾਲਬੈਕ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1033 +#| msgid "Whether the label widget should fill all available horizontal space" +msgid "Whether the widget should show fallback applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਫਾਲਬੈਕ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1045 +#| msgid "Show Tooltips" +msgid "Show other apps" +msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1046 +#| msgid "Whether the widget has the input focus" +msgid "Whether the widget should show other applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1059 +#| msgid "Show Day Names" +msgid "Show all apps" +msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1060 +#| msgid "Whether the label widget should fill all available horizontal space" +msgid "Whether the widget should show all applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1073 +msgid "Widget's default text" +msgstr "ਵਿਦਜੈੱਟ ਦਾ ਮੂਲ ਟੈਕਸਟ" + +#: ../gtk/gtkappchooserwidget.c:1074 +msgid "The default text appearing when there are no applications" +msgstr "ਜਦੋਂ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਾ ਹੋਵੇ ਤਾਂ ਵੇਖਾਉਣ ਲਈ ਡਿਫਾਲਟ ਟੈਕਸਟ" + #: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "ਤੀਰ ਦਿਸ਼ਾ" @@ -589,7 +700,7 @@ msgstr "ਤੀਰ ਛਾਂ" msgid "Appearance of the shadow surrounding the arrow" msgstr "ਤੀਰ ਦੇ ਆਲੇ ਦੁਆਲੇ ਛਾਂ ਵੇਖਾਓ" -#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:735 ../gtk/gtkmenuitem.c:396 +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:726 ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "ਤੀਰ ਸਕੇਲਿੰਗ" @@ -597,7 +708,7 @@ msgstr "ਤੀਰ ਸਕੇਲਿੰਗ" msgid "Amount of space used up by arrow" msgstr "ਤੀਰ ਵਲੋਂ ਵਰਤੀ ਗਈ ਥਾਂ ਦੀ ਮਾਤਰਾ" -#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:950 +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1123 msgid "Horizontal Alignment" msgstr "ਲੇਟਵੀਂ ਸਫਬੰਦੀ" @@ -605,7 +716,7 @@ msgstr "ਲੇਟਵੀਂ ਸਫਬੰਦੀ" msgid "X alignment of the child" msgstr "ਚਾਇਲਡ ਦੀ X ਕਤਾਰਬੰਦੀ" -#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:966 +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1139 msgid "Vertical Alignment" msgstr "ਲੰਬਕਾਰੀ ਸਫਬੰਦੀ" @@ -629,199 +740,200 @@ msgstr "ਉਬੇ-ਚਾਇਲਡ" msgid "Force aspect ratio to match that of the frame's child" msgstr "ਫਰੇਮ ਦੀ ਚਾਇਲਡ ਨਾਲ ਆਕਾਰ-ਅਨੁਪਾਤ ਨਾਲ ਮਿਲਾਓ" -#: ../gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:326 msgid "Header Padding" msgstr "ਹੈੱਡਰ ਪੈਡਿੰਗ" -#: ../gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:327 msgid "Number of pixels around the header." msgstr "ਹੈੱਡਰ ਦੇ ਦੁਆਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" -#: ../gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:334 msgid "Content Padding" msgstr "ਸਮੱਗਰੀ ਪੈਡਿੰਗ" -#: ../gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:335 msgid "Number of pixels around the content pages." msgstr "ਸਮੱਗਰੀ ਪੇਜ਼ਾਂ ਦੁਆਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" -#: ../gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:351 msgid "Page type" msgstr "ਪੇਜ਼ ਕਿਸਮ" -#: ../gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:352 msgid "The type of the assistant page" msgstr "ਜਾਰੀ ਪੇਜ਼ ਦੀ ਕਿਸਮ ਹੈ" -#: ../gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:369 msgid "Page title" msgstr "ਸਫ਼ਾ ਟਾਇਟਲ" -#: ../gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:370 msgid "The title of the assistant page" msgstr "ਜਾਰੀ ਸਫ਼ੇ ਦਾ ਟਾਇਟਲ" -#: ../gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:386 msgid "Header image" msgstr "ਹੈੱਡਰ ਚਿੱਤਰ" -#: ../gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:387 msgid "Header image for the assistant page" msgstr "ਸਹਾਇਕ ਸਫ਼ੇ ਲਈ ਹੈੱਡਰ ਚਿੱਤਰ" -#: ../gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:403 msgid "Sidebar image" msgstr "ਸਾਈਡ-ਬਾਰ ਚਿੱਤਰ" -#: ../gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image for the assistant page" msgstr "ਸਹਾਇਕ ਸਫ਼ੇ ਲਈ ਬਾਹੀ ਚਿੱਤਰ" -#: ../gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:419 msgid "Page complete" msgstr "ਸਫ਼ਾ ਪੂਰਾ ਹੋਇਆ" -#: ../gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:420 msgid "Whether all required fields on the page have been filled out" msgstr "ਕੀ ਸਫ਼ੇ ਉੱਤੇ ਸਭ ਲੋੜੀਦੇ ਖੇਤਰ ਭਰਨੇ ਹਨ" -#: ../gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "ਘੱਟੋ-ਘੱਟ ਚਾਇਲਡ ਚੌੜਾਈ" -#: ../gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "ਡੱਬੇ ਦੇ ਅੰਦਰ ਬਟਨਾਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" -#: ../gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "ਘੱਟੋ-ਘੱਟ ਚਾਇਲਡ ਉਚਾਈ" -#: ../gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "ਡੱਬੇ ਦੇ ਅੰਦਰ ਬਟਨਾਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਉਚਾਈ" -#: ../gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "ਚਾਇਲਡ ਦੀ ਅੰਦਰੂਨੀ ਚਿਣਨ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "ਚਾਇਲਡ ਦੇ ਆਕਾਰ ਵਿੱਚ ਕਿਸੇ ਵੀ ਪਾਸੇ ਵਾਧੇ ਦੀ ਮਿਣਤੀ" -#: ../gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "ਚਾਇਲਡ ਦੀ ਅੰਦਰੂਨੀ ਚਿਣਨ ਦੀ ਉਚਾਈ" -#: ../gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "ਚਾਇਲਡ ਦੇ ਆਕਾਰ ਵਿੱਚ ਉੱਪਰ ਅਤੇ ਹੇਠਾਂ ਵਾਲੇ ਪਾਸੇ ਵਾਧੇ ਦੀ ਮਿਣਤੀ" -#: ../gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "ਲੇਆਉਟ ਸਟਾਇਲ" -#: ../gtk/gtkbbox.c:172 +#: ../gtk/gtkbbox.c:189 msgid "" "How to lay out the buttons in the box. Possible values are: spread, edge, " "start and end" msgstr "ਡੱਬੇ ਵਿੱਚ ਬਟਨਾਂ ਦਾ ਲੇ-ਆਉਟ ਕਿਵੇਂ ਹੋਵੇ। ਉਪਲੱਬਧ ਮੁੱਲ ਹਨ: ਖਿਲਰਿਆ, ਕਿਨਾਰਾ, ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ" -#: ../gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "ਸੈਕੰਡਰੀ" -#: ../gtk/gtkbbox.c:181 +#: ../gtk/gtkbbox.c:198 msgid "" "If TRUE, the child appears in a secondary group of children, suitable for, e." "g., help buttons" msgstr "ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ ਚਾਇਲਡ, ਚਾਇਲਡਰਨ ਦੇ ਗਰੁੱਪ ਦਾ ਸੈਕੰਡਰੀ ਬਣ ਰਹੀ ਜਾਪਦੀ ਹੈ ਜਿਵੇ ਕਿ ਮੱਦਦ ਬਟਨ " -#: ../gtk/gtkbox.c:227 ../gtk/gtkexpander.c:233 ../gtk/gtkiconview.c:666 -#: ../gtk/gtktreeviewcolumn.c:220 +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:696 ../gtk/gtktreeviewcolumn.c:268 msgid "Spacing" msgstr "ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkbox.c:228 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "ਚੈਲਡਰਨ ਵਿੱਚ ਕਿੰਨੀ ਥਾਂ ਹੈ" -#: ../gtk/gtkbox.c:237 ../gtk/gtktable.c:184 ../gtk/gtktoolbar.c:550 -#: ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1641 msgid "Homogeneous" msgstr "ਸਮਰੂਪ" -#: ../gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "ਕੀ ਚੈਲਰਨ ਇੱਕੋ ਆਕਾਰ ਦੇ ਹੋਣ" -#: ../gtk/gtkbox.c:254 ../gtk/gtktoolbar.c:542 ../gtk/gtktoolitemgroup.c:1631 -#: ../gtk/gtktoolpalette.c:1065 ../gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1648 ../gtk/gtktoolpalette.c:1093 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Expand" msgstr "ਫੈਲਾਓ" -#: ../gtk/gtkbox.c:255 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "ਕੀ ਚਾਇਲਡ ਵੱਖਰੀ ਥਾਂ ਲੈ ਲੈਣ ਜਦੋਂ ਕਿ ਮੂਲ਼ (ਪੇਰੈਨਟ) ਵੱਧ ਰਹੇ ਹੋ" -#: ../gtk/gtkbox.c:271 ../gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1655 msgid "Fill" msgstr "ਭਰੋ" -#: ../gtk/gtkbox.c:272 +#: ../gtk/gtkbox.c:282 msgid "" "Whether extra space given to the child should be allocated to the child or " "used as padding" msgstr "ਕੀ ਚਾਇਲਡ ਦੀ ਖਾਲੀ ਥਾਂ ਚਾਇਡ ਨੂੰ ਦੇ ਦਿੱਤੀ ਜਾਵੇ ਜਾਂ ਚਿਣਨ ਲਈ ਵਰਤੀ ਜਾਵੇ " -#: ../gtk/gtkbox.c:279 ../gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 msgid "Padding" msgstr "ਚਿਣਿਆ" -#: ../gtk/gtkbox.c:280 +#: ../gtk/gtkbox.c:290 msgid "Extra space to put between the child and its neighbors, in pixels" msgstr "ਵਾਧੂ ਥਾਂ, ਚਾਇਲਡ ਅਤੇ ਗੁਆਢੀ ਵਿੱਚਕਾਰ ਦੇਣ ਲਈ ( ਪਿਕਸਲਾਂ ਵਿੱਚ)" -#: ../gtk/gtkbox.c:286 +#: ../gtk/gtkbox.c:296 msgid "Pack type" msgstr "ਪੈਕ ਕਿਸਮ" -#: ../gtk/gtkbox.c:287 ../gtk/gtknotebook.c:752 +#: ../gtk/gtkbox.c:297 msgid "" "A GtkPackType indicating whether the child is packed with reference to the " "start or end of the parent" msgstr "ਇਹ GtkPackType ਵੇਖਾ ਰਿਹਾ ਹੈ ਕਿ ਚਲਾਇਡ ਨੂੰ ਪੇਰੈਟ ਦੇ ਸ਼ੁਰੂ ਜ਼ਾਂ ਅਖੀਰ ਵਿੱਚ ਪੈਕ ਕੀਤਾ ਜਾਏ" -#: ../gtk/gtkbox.c:293 ../gtk/gtknotebook.c:723 ../gtk/gtkpaned.c:270 -#: ../gtk/gtkruler.c:158 ../gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Position" msgstr "ਟਿਕਾਣਾ" -#: ../gtk/gtkbox.c:294 ../gtk/gtknotebook.c:724 +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 msgid "The index of the child in the parent" msgstr "ਪੇਰੈਟ ਵਿੱਚ ਚਾਇਲਡ ਦਾ ਇੰਡੈਕਸ" -#: ../gtk/gtkbuilder.c:315 +#: ../gtk/gtkbuilder.c:314 msgid "Translation Domain" msgstr "ਟਰਾਂਸਲੇਟ ਡੋਮੇਨ" -#: ../gtk/gtkbuilder.c:316 +#: ../gtk/gtkbuilder.c:315 msgid "The translation domain used by gettext" msgstr "gettext ਵਲੋਂ ਵਰਤੀ ਟਰਾਂਸਲੇਟ ਡੋਮੇਨ" -#: ../gtk/gtkbutton.c:239 +#: ../gtk/gtkbutton.c:228 msgid "" "Text of the label widget inside the button, if the button contains a label " "widget" msgstr "ਬਟਨ ਵਿੱਚ ਲੇਬਲ ਵਿਦਗਿਟ ਦੇ ਸ਼ਬਦ, ਜੇਕਰ ਬਟਨ ਵਿੱਚ ਲੇਬਲ ਵਿਦਗਿਟ ਹੈ" -#: ../gtk/gtkbutton.c:246 ../gtk/gtkexpander.c:217 ../gtk/gtklabel.c:570 -#: ../gtk/gtkmenuitem.c:348 ../gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 msgid "Use underline" msgstr "ਹੇਠਾਂ-ਲਾਈਨ ਵਰਤੋਂ" -#: ../gtk/gtkbutton.c:247 ../gtk/gtkexpander.c:218 ../gtk/gtklabel.c:571 -#: ../gtk/gtkmenuitem.c:349 +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 msgid "" "If set, an underline in the text indicates the next character should be used " "for the mnemonic accelerator key" @@ -829,229 +941,321 @@ msgstr "" "ਜੇਕਰ, ਸ਼ਬਦ ਵਿੱਚ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚੀ ਗਈ ਹੈ ਤਾਂ ਇਹ ਅਗਲੇ ਅੱਖਰ ਨੂੰ ਵੇਖਾਵੇਗਾ ਕਿ ਉਹ ਕੀ-ਬੋਰਡ ਤੋਂ ਵਰਤਿਆ " "ਜਾ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkbutton.c:254 ../gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "ਸਟਾਕ ਵਰਤੋਂ" -#: ../gtk/gtkbutton.c:255 +#: ../gtk/gtkbutton.c:244 msgid "If set, the label is used to pick a stock item instead of being displayed" msgstr "ਜੇਕਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ, ਲੇਬਲ ਸਟਾਕ ਆਈਟਮ ਨੂੰ ਚੁੱਕੇਗਾ ਨਾ ਕਿ ਉਸ ਨੂੰ ਵੇਖਾਵੇਗਾ" -#: ../gtk/gtkbutton.c:262 ../gtk/gtkcombobox.c:842 -#: ../gtk/gtkfilechooserbutton.c:385 +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 +#: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "ਕਲਿੱਕ 'ਤੇ ਫੋਕਸ" -#: ../gtk/gtkbutton.c:263 ../gtk/gtkfilechooserbutton.c:386 +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "ਕੀ ਬਟਨ ਫੋਕਸ ਹੋ ਜਾਵੇ, ਜਦੋਂ ਕਿ ਇਹ ਮਾਊਸ ਨਾਲ ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:259 msgid "Border relief" msgstr "ਹਾਸ਼ੀਏ ਦੀ ਛੋਟ" -#: ../gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:260 msgid "The border relief style" msgstr "ਬਾਰਡਰ ਛੋਟ ਸਟਾਇਲ" -#: ../gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:277 msgid "Horizontal alignment for child" msgstr "ਚਾਇਲਡ ਲਈ ਲੇਟਵੀ ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:296 msgid "Vertical alignment for child" msgstr "ਚਾਇਲਡ ਲਈ ਲੰਬਕਾਰੀ ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkbutton.c:324 ../gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "ਚਿੱਤਰ ਵਿਦਗਿਟ" -#: ../gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:314 msgid "Child widget to appear next to the button text" msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ, ਬਟਨ ਟੈਕਸਟ ਤੋਂ ਅੱਗੇ ਦਿੱਸਣ ਲਈ" -#: ../gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:328 msgid "Image position" msgstr "ਚਿੱਤਰ ਸਥਿਤੀ" -#: ../gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:329 msgid "The position of the image relative to the text" msgstr "ਟੈਕਸਟ ਦੇ ਮੁਤਾਬਕ ਚਿੱਤਰ ਦੀ ਅਨੁਸਾਰੀ ਸਥਿਤੀ" -#: ../gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:449 msgid "Default Spacing" msgstr "ਮੂਲ ਫਾਸਲਾ" -#: ../gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:450 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "GTK_CAN_DEFAULT ਬਟਨਾਂ ਲਈ ਹੋਰ ਥਾਂ ਸ਼ਾਮਲ ਕੀਤੀ" -#: ../gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:464 msgid "Default Outside Spacing" msgstr "ਮੂਲ ਬਾਹਰੀ ਖਾਲ਼ੀ ਥਾਂ" -#: ../gtk/gtkbutton.c:476 +#: ../gtk/gtkbutton.c:465 msgid "" "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " "the border" msgstr "ਬਟਨਾਂ GTK_CAN_DEFAULT ਲਈ ਵੱਖਰੀ ਥਾਂ ਜੋੜੋ, ਹੋ ਕਿ ਹਾਸ਼ੀਏ ਤੋਂ ਹਮੇਸ਼ਾ ਬਾਹਰ ਖਿੱਚੀ ਜਾਵੇ" -#: ../gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:470 msgid "Child X Displacement" msgstr "ਚਾਇਲਡ X ਹਿਲਾਉਣਾ" -#: ../gtk/gtkbutton.c:482 +#: ../gtk/gtkbutton.c:471 msgid "How far in the x direction to move the child when the button is depressed" msgstr "ਜਦੋ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ ਚਾਇਲਡ ਨੂੰ X ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿਲਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:478 msgid "Child Y Displacement" msgstr "ਚਾਇਲਡ Y ਹਿਲਾਉਣਾ" -#: ../gtk/gtkbutton.c:490 +#: ../gtk/gtkbutton.c:479 msgid "How far in the y direction to move the child when the button is depressed" msgstr "ਜਦੋ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ ਚਾਇਲਡ ਨੂੰ Y ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿਲਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:495 msgid "Displace focus" msgstr "ਫੋਕਸ ਹਿਲਾਓ" -#: ../gtk/gtkbutton.c:507 +#: ../gtk/gtkbutton.c:496 msgid "" "Whether the child_displacement_x/_y properties should also affect the focus " "rectangle" msgstr "ਕੀ child_displacement_x/_y properties ਚਤੁਰਭੁਜ ਫੋਕਸ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkbutton.c:520 ../gtk/gtkentry.c:696 ../gtk/gtkentry.c:1741 +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ" -#: ../gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:510 msgid "Border between button edges and child." msgstr "ਬਟਨ ਕਿਨਾਰੇ ਅਤੇ ਅਧੀਨ ਵਿੱਚ ਹਾਸ਼ੀਆ ਹੈ।" -#: ../gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:523 msgid "Image spacing" msgstr "ਚਿੱਤਰ ਫਾਸਲਾ" -#: ../gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:524 msgid "Spacing in pixels between the image and label" msgstr "ਚਿੱਤਰ ਅਤੇ ਲੇਬਲ ਵਿੱਚ ਫਾਸਲਾ ਪਿਕਸਲ ਵਿੱਚ" -#: ../gtk/gtkbutton.c:549 -msgid "Show button images" -msgstr "ਬਟਨ-ਚਿੱਤਰ ਵੇਖਾਓ" - -#: ../gtk/gtkbutton.c:550 -msgid "Whether images should be shown on buttons" -msgstr "ਕੀ ਬਟਨਾਂ ਉੱਤੇ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" - -#: ../gtk/gtkcalendar.c:478 +#: ../gtk/gtkcalendar.c:482 msgid "Year" msgstr "ਵਰ੍ਹਾ" -#: ../gtk/gtkcalendar.c:479 +#: ../gtk/gtkcalendar.c:483 msgid "The selected year" msgstr "ਚੁਣਿਆ ਵਰ੍ਹਾ" -#: ../gtk/gtkcalendar.c:492 +#: ../gtk/gtkcalendar.c:496 msgid "Month" msgstr "ਮਹੀਨਾ" -#: ../gtk/gtkcalendar.c:493 +#: ../gtk/gtkcalendar.c:497 msgid "The selected month (as a number between 0 and 11)" msgstr "ਚੁਣਿਆ ਮਹੀਨਾ (ਇੱਕ ਨੰਬਰ 0 ਅਤੇ 11 ਵਿੱਚੋਂ)" -#: ../gtk/gtkcalendar.c:507 +#: ../gtk/gtkcalendar.c:511 msgid "Day" msgstr "ਦਿਨ" -#: ../gtk/gtkcalendar.c:508 +#: ../gtk/gtkcalendar.c:512 msgid "" "The selected day (as a number between 1 and 31, or 0 to unselect the " "currently selected day)" msgstr "ਚੁਣਿਆ ਦਿਨ ( ਇੱਕ ਨੰਬਰ 1 ਅਤੇ 31 ਵਿੱਚੋ, ਜਾਂ 0 ਮੌਜੂਦਾ ਚੁਣੇ ਦਿਨ ਨੂੰ ਰੱਦ ਕਰਨ ਲਈ)" -#: ../gtk/gtkcalendar.c:522 +#: ../gtk/gtkcalendar.c:526 msgid "Show Heading" msgstr "ਹੈਡਿੰਗ ਵੇਖਾਓ" -#: ../gtk/gtkcalendar.c:523 +#: ../gtk/gtkcalendar.c:527 msgid "If TRUE, a heading is displayed" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਹੈਡਿੰਗ ਦਿੱਸੇਗਾ" -#: ../gtk/gtkcalendar.c:537 +#: ../gtk/gtkcalendar.c:541 msgid "Show Day Names" msgstr "ਦਿਨ ਦੇ ਨਾਂ ਵੇਖਾਓ" -#: ../gtk/gtkcalendar.c:538 +#: ../gtk/gtkcalendar.c:542 msgid "If TRUE, day names are displayed" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਦਿਨ ਦਾ ਨਾਂ ਵਿਖਾਈ ਦੇਵੇਗਾ" -#: ../gtk/gtkcalendar.c:551 +#: ../gtk/gtkcalendar.c:555 msgid "No Month Change" msgstr "ਕੋਈ ਮਹੀਨਾ ਨਾ ਬਦਲੋ" -#: ../gtk/gtkcalendar.c:552 +#: ../gtk/gtkcalendar.c:556 msgid "If TRUE, the selected month cannot be changed" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਕੋਈ ਮਹੀਨਾ ਨਹੀਂ ਬਦਲ ਸਕੇਗਾ" -#: ../gtk/gtkcalendar.c:566 +#: ../gtk/gtkcalendar.c:570 msgid "Show Week Numbers" msgstr "ਹਫਤਾ ਨੰਬਰ ਵੇਖਾਓ" -#: ../gtk/gtkcalendar.c:567 +#: ../gtk/gtkcalendar.c:571 msgid "If TRUE, week numbers are displayed" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਹਫਤੇ ਦਾ ਨੰਬਰ ਦਿੱਸੇਗਾ" -#: ../gtk/gtkcalendar.c:582 +#: ../gtk/gtkcalendar.c:586 msgid "Details Width" msgstr "ਵੇਰਵਾ ਚੌੜਾਈ" -#: ../gtk/gtkcalendar.c:583 +#: ../gtk/gtkcalendar.c:587 msgid "Details width in characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਵੇਰਵਾ ਚੌੜਾਈ" -#: ../gtk/gtkcalendar.c:598 +#: ../gtk/gtkcalendar.c:602 msgid "Details Height" msgstr "ਵੇਰਵਾ ਉਚਾਈ" -#: ../gtk/gtkcalendar.c:599 +#: ../gtk/gtkcalendar.c:603 msgid "Details height in rows" msgstr "ਕਤਾਰਾਂ ਵਿੱਚ ਵੇਰਵੇ ਦੀ ਉਚਾਈ" -#: ../gtk/gtkcalendar.c:615 +#: ../gtk/gtkcalendar.c:619 msgid "Show Details" msgstr "ਵੇਰਵਾ ਵੇਖੋ" -#: ../gtk/gtkcalendar.c:616 +#: ../gtk/gtkcalendar.c:620 msgid "If TRUE, details are shown" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਵੇਰਵਾ ਵੇਖੋ" -#: ../gtk/gtkcalendar.c:628 +#: ../gtk/gtkcalendar.c:632 msgid "Inner border" msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ" -#: ../gtk/gtkcalendar.c:629 +#: ../gtk/gtkcalendar.c:633 msgid "Inner border space" msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ ਥਾਂ" -#: ../gtk/gtkcalendar.c:640 +#: ../gtk/gtkcalendar.c:644 msgid "Vertical separation" msgstr "ਲੰਬਕਾਰ ਵੱਖਰੇਵਾਂ" -#: ../gtk/gtkcalendar.c:641 +#: ../gtk/gtkcalendar.c:645 msgid "Space between day headers and main area" msgstr "ਦਿਨ ਹੈੱਡਰ ਤੇ ਮੁੱਖ ਖੇਤਰ ਵਿੱਚ ਥਾਂ" -#: ../gtk/gtkcalendar.c:652 +#: ../gtk/gtkcalendar.c:656 msgid "Horizontal separation" msgstr "ਹਰੀਜੱਟਲ ਵੱਖਰੇਵਾਂ" -#: ../gtk/gtkcalendar.c:653 +#: ../gtk/gtkcalendar.c:657 msgid "Space between week headers and main area" msgstr "ਹਫ਼ਤਾ ਹੈੱਡਰ ਤੇ ਮੁੱਖ ਖੇਤਰ ਵਿੱਚ ਫਾਸਲਾ" +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "ਸੈੱਲਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਥਾਂ" + +#: ../gtk/gtkcellareabox.c:339 +#| msgid "Whether to use the related actions appearance properties" +msgid "Whether the cell expands" +msgstr "ਕੀ ਸੈੱਲ ਫੈਲਾਉਣਾ ਹੈ" + +#: ../gtk/gtkcellareabox.c:354 +#| msgid "xalign" +msgid "Align" +msgstr "ਇਕਸਾਰ" + +#: ../gtk/gtkcellareabox.c:355 +#| msgid "Whether the item should start a new row" +msgid "Whether cell should align with adjacent rows" +msgstr "ਕੀ ਸੈੱਲ ਗੁਆਂਡੀ ਕਤਾਰਾਂ ਮੁਤਾਬਕ ਇਕਸਾਰ ਹੋਵੇ" + +#: ../gtk/gtkcellareabox.c:371 +#| msgid "Pixel size" +msgid "Fixed Size" +msgstr "ਸਥਿਰ ਆਕਾਰ" + +#: ../gtk/gtkcellareabox.c:372 +#| msgid "Whether the children should all be the same size" +msgid "Whether cells should be the same size in all rows" +msgstr "ਕੀ ਸੈੱਲ ਸਭ ਕਤਾਰਾਂ ਵਿੱਚ ਇੱਕੋ ਆਕਾਰ ਦੇ ਹੋਣ" + +#: ../gtk/gtkcellareabox.c:388 +#| msgid "Pack type" +msgid "Pack Type" +msgstr "ਪੈਕ ਕਿਸਮ" + +#: ../gtk/gtkcellareabox.c:389 +#| msgid "" +#| "A GtkPackType indicating whether the child is packed with reference to " +#| "the start or end of the parent" +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "ਇਹ GtkPackType ਵੇਖਾ ਰਿਹਾ ਹੈ ਕਿ ਸੈੱਲ ਨੂੰ ਸੈੱਲ ਖੇਤਰ ਦੇ ਸ਼ੁਰੂ ਜ਼ਾਂ ਅਖੀਰ ਵਿੱਚ ਪੈਕ ਕੀਤਾ ਜਾਏ" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "ਫੋਕਸ ਸੈੱਲ" + +#: ../gtk/gtkcellarea.c:774 +#| msgid "The item which is currently active" +msgid "The cell which currently has focus" +msgstr "ਸੈੱਲ, ਜੋ ਇਸ ਸਮੇਂ ਫੋਕਸ ਹੈ" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "ਸੋਧਯੋਗ ਸੈੱਲ" + +#: ../gtk/gtkcellarea.c:793 +#| msgid "The item which is currently active" +msgid "The cell which is currently being edited" +msgstr "ਸੈੱਲ, ਜੋ ਇਸ ਸਮੇਂ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkcellarea.c:811 +#| msgid "Widget" +msgid "Edit Widget" +msgstr "ਵਿਦਜੈੱਟ ਸੋਧ" + +#: ../gtk/gtkcellarea.c:812 +#| msgid "The current page in the document" +msgid "The widget currently editing the edited cell" +msgstr "ਵਿਦਜੈੱਟ, ਜੋ ਸੋਧੇ ਜਾ ਰਹੇ ਸੈੱਲ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkcellareacontext.c:128 +#| msgid "Cell Area" +msgid "Area" +msgstr "ਖੇਤਰ" + +#: ../gtk/gtkcellareacontext.c:129 +msgid "The Cell Area this context was created for" +msgstr "ਸੈੱਲ ਖੇਤਰ, ਜਿਸ ਲਈ ਇਕ ਪਰਸੰਗ ਬਣਾਇਆ ਗਿਆ ਸੀ" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" + +#: ../gtk/gtkcellareacontext.c:146 ../gtk/gtkcellareacontext.c:165 +#| msgid "Minimum child width" +msgid "Minimum cached width" +msgstr "ਘੱਟੋ-ਘੱਟ ਕੈਸ਼ ਕੀਤੀ ਚੌੜਾਈ" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +#| msgid "Minimum Content Height" +msgid "Minimum Height" +msgstr "ਘੱਟੋ-ਘੱਟ ਉਚਾਈ" + +#: ../gtk/gtkcellareacontext.c:184 ../gtk/gtkcellareacontext.c:203 +#| msgid "Minimum child height" +msgid "Minimum cached height" +msgstr "ਘੱਟੋ-ਘੱਟ ਕੈਸ਼ ਕੀਤੀ ਉਚਾਈ" + #: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "ਸੋਧ ਰੱਦ ਕੀਤੀ" @@ -1060,175 +1264,183 @@ msgstr "ਸੋਧ ਰੱਦ ਕੀਤੀ" msgid "Indicates that editing has been canceled" msgstr "ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸੋਧਣ ਨੂੰ ਰੱਦ ਕੀਤਾ ਗਿਆ ਹੈ" -#: ../gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:137 msgid "Accelerator key" msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚ" -#: ../gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "The keyval of the accelerator" msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਸਵਿੱਚ-ਮੁੱਲ" -#: ../gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:154 msgid "Accelerator modifiers" msgstr "ਐਕਸਰਲੇਟਰ ਸੋਧਕ" -#: ../gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "The modifier mask of the accelerator" msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਸੋਧਕ ਮਾਸਕ" -#: ../gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:172 msgid "Accelerator keycode" msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚ-ਕੋਡ" -#: ../gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "The hardware keycode of the accelerator" msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਜੰਤਰ ਸਵਿੱਚ-ਕੋਡ" -#: ../gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:192 msgid "Accelerator Mode" msgstr "ਐਕਸਰਲੇਟਰ ਢੰਗ" -#: ../gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "The type of accelerators" msgstr "ਐਕਸਰਲੇਟਰ ਦੀ ਕਿਸਮ" -#: ../gtk/gtkcellrenderer.c:226 +#: ../gtk/gtkcellrenderer.c:272 msgid "mode" msgstr "ਢੰਗ" -#: ../gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:273 msgid "Editable mode of the CellRenderer" msgstr "CellRenderer ਦਾ ਸੋਧਣਯੋਗ ਮੋਡ" -#: ../gtk/gtkcellrenderer.c:235 +#: ../gtk/gtkcellrenderer.c:281 msgid "visible" msgstr "ਦਿੱਖ" -#: ../gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:282 msgid "Display the cell" msgstr "ਸੈਲ ਵੇਖਾਓ" -#: ../gtk/gtkcellrenderer.c:243 +#: ../gtk/gtkcellrenderer.c:289 msgid "Display the cell sensitive" msgstr "ਸੈਲ ਸੰਵੇਦਸ਼ੀਲ ਵੇਖਾਓ" -#: ../gtk/gtkcellrenderer.c:250 +#: ../gtk/gtkcellrenderer.c:296 msgid "xalign" msgstr "x ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:297 msgid "The x-align" msgstr "x-ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkcellrenderer.c:260 +#: ../gtk/gtkcellrenderer.c:306 msgid "yalign" msgstr "y ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:307 msgid "The y-align" msgstr "y-ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkcellrenderer.c:270 +#: ../gtk/gtkcellrenderer.c:316 msgid "xpad" msgstr "xpad" -#: ../gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:317 msgid "The xpad" msgstr "xpad" -#: ../gtk/gtkcellrenderer.c:280 +#: ../gtk/gtkcellrenderer.c:326 msgid "ypad" msgstr "ypad" -#: ../gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:327 msgid "The ypad" msgstr "ypad" -#: ../gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:336 msgid "width" msgstr "ਚੌੜਾਈ" -#: ../gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:337 msgid "The fixed width" msgstr "ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" -#: ../gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:346 msgid "height" msgstr "ਉਚਾਈ" -#: ../gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:347 msgid "The fixed height" msgstr "ਨਿਸ਼ਚਿਤ ਉਚਾਈ" -#: ../gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:356 msgid "Is Expander" msgstr "ਫੈਲਣਯੋਗ ਹੈ" -#: ../gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:357 msgid "Row has children" msgstr "ਕਤਾਰ ਵਿੱਚ ਚਾਇਲਡਰਨ ਹਨ" -#: ../gtk/gtkcellrenderer.c:319 +#: ../gtk/gtkcellrenderer.c:365 msgid "Is Expanded" msgstr "ਫੈਲ ਗਿਆ ਹੈ" -#: ../gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:366 msgid "Row is an expander row, and is expanded" msgstr "ਕਤਾਰ ਇੱਕ ਫੈਲਣਯੋਗ ਕਤਾਰ ਹੈ ਅਤੇ ਫੈਲ ਗਈ ਹੈ" -#: ../gtk/gtkcellrenderer.c:327 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color name" msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਦਾ ਨਾਂ" -#: ../gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:374 msgid "Cell background color as a string" msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ ਸਤਰ ਵਾਂਗ" -#: ../gtk/gtkcellrenderer.c:335 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color" msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" -#: ../gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:382 msgid "Cell background color as a GdkColor" msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkColor ਵਾਂਗ" -#: ../gtk/gtkcellrenderer.c:343 +#: ../gtk/gtkcellrenderer.c:395 +msgid "Cell background RGBA color" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ RGBA ਰੰਗ" + +#: ../gtk/gtkcellrenderer.c:396 +msgid "Cell background color as a GdkRGBA" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderer.c:403 msgid "Editing" msgstr "ਸੋਧ ਜਾਰੀ" -#: ../gtk/gtkcellrenderer.c:344 +#: ../gtk/gtkcellrenderer.c:404 msgid "Whether the cell renderer is currently in editing mode" msgstr "ਕੀ ਸੋਧ ਢੰਗ ਵਿੱਚ ਮੌਜੂਦਾ ਸੈੱਲ ਰੈਡਰਿੰਗ ਹੋਵੇ" -#: ../gtk/gtkcellrenderer.c:352 +#: ../gtk/gtkcellrenderer.c:412 msgid "Cell background set" msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtkcellrenderer.c:353 +#: ../gtk/gtkcellrenderer.c:413 msgid "Whether this tag affects the cell background color" msgstr "ਕੀ ਇਹ ਟੈਗ ਸੈਲ਼ ਦੀ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ" -#: ../gtk/gtkcellrenderercombo.c:110 +#: ../gtk/gtkcellrenderercombo.c:109 msgid "Model" msgstr "ਮਾਡਲ" -#: ../gtk/gtkcellrenderercombo.c:111 +#: ../gtk/gtkcellrenderercombo.c:110 msgid "The model containing the possible values for the combo box" msgstr "ਮਾਡਲ ਕੰਬੋ-ਬਾਕਸ ਲਈ ਸੰਭਵ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" -#: ../gtk/gtkcellrenderercombo.c:133 ../gtk/gtkcomboboxentry.c:146 +#: ../gtk/gtkcellrenderercombo.c:132 msgid "Text Column" msgstr "ਟੈਕਸਟ ਕਾਲਮ" -#: ../gtk/gtkcellrenderercombo.c:134 ../gtk/gtkcomboboxentry.c:147 +#: ../gtk/gtkcellrenderercombo.c:133 msgid "A column in the data source model to get the strings from" msgstr "ਕਾਲਮ ਡੈਟਾ-ਸਰੋਤ ਮਾਡਲ ਵਿੱਚ ਸਤਰਾਂ ਇਸ ਤੋਂ ਪਰਾਪਤ ਕਰੇਗਾ" -#: ../gtk/gtkcellrenderercombo.c:151 +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 msgid "Has Entry" msgstr "ਇੰਦਰਾਜ਼ ਹੈ" -#: ../gtk/gtkcellrenderercombo.c:152 +#: ../gtk/gtkcellrenderercombo.c:151 msgid "If FALSE, don't allow to enter strings other than the chosen ones" msgstr "ਜੇਕਰ ਗਲਤ ਹੋਇਆ ਤਾਂ, ਇਹ ਚੁਣਿਆਂ ਤੋਂ ਬਿਨਾਂ ਸਤਰ ਦੇਣ ਨੂੰ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰੇਗਾ" @@ -1256,8 +1468,8 @@ msgstr "ਪਿਕਬੱਪ ਐਕਸਪੈਡਰ ਬੰਦ" msgid "Pixbuf for closed expander" msgstr "ਬੰਦ ਐਕਸਪੈਡਰ ਲਈ ਪਿਕਬੱਪ" -#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:244 -#: ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:252 +#: ../gtk/gtkstatusicon.c:220 msgid "Stock ID" msgstr "ਸਟਾਕ ID" @@ -1266,7 +1478,7 @@ msgid "The stock ID of the stock icon to render" msgstr "ਪੇਸ਼ ਕਰਨ ਲਈ ਸਟਾਕ ਆਈਕਾਨ ਦਾ ਸਟਾਕ ID" #: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:153 -#: ../gtk/gtkrecentmanager.c:305 ../gtk/gtkstatusicon.c:269 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "ਅਕਾਰ" @@ -1290,8 +1502,8 @@ msgstr "ਅੱਗੇ ਹਾਲਤ" msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "ਕੀ ਪੇਸ਼ਕਾਰੀ ਪਿਕਬਫ਼ਰ ਨੂੰ ਹਾਲਤ ਦੇ ਅਨੁਸਾਰ ਰੰਗਦਾਰ ਬਣਾਉਣਾ ਹੈ" -#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:319 -#: ../gtk/gtkwindow.c:697 +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:327 +#: ../gtk/gtkwindow.c:698 msgid "Icon" msgstr "ਆਈਕਾਨ" @@ -1299,9 +1511,9 @@ msgstr "ਆਈਕਾਨ" msgid "Value of the progress bar" msgstr "ਤਰੱਕੀ ਪੱਟੀ ਦਾ ਮੁੱਲ" -#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:231 -#: ../gtk/gtkentry.c:739 ../gtk/gtkentrybuffer.c:352 -#: ../gtk/gtkmessagedialog.c:226 ../gtk/gtkprogressbar.c:150 +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 #: ../gtk/gtktextbuffer.c:210 msgid "Text" msgstr "ਪਾਠ" @@ -1338,21 +1550,21 @@ msgstr "ਪਾਠ y -ਸ਼ਫ਼ਬੰਦੀ" msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "ਲੰਬਕਾਰੀ ਸ਼ਫ਼ਬੰਦੀ, 0 (ਉਤੋਂ) ਤੋਂ 1 (ਹੇਠਾਂ) ਹੈ।" -#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:126 -#: ../gtk/gtkrange.c:433 +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:423 msgid "Inverted" msgstr "ਬਦਲਵਾਂ" -#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:127 +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 msgid "Invert the direction in which the progress bar grows" msgstr "ਤਰੱਕੀ-ਪੱਟੀ ਦੇ ਵੱਧਣ ਦੀ ਦਿਸ਼ਾ ਨੂੰ ਉਲਟਾ ਕਰੋ" -#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:425 -#: ../gtk/gtkscalebutton.c:239 ../gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:415 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 msgid "Adjustment" msgstr "ਅਨਕੂਲਤਾ" -#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:229 +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 msgid "The adjustment that holds the value of the spin button" msgstr "ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਸਪਿਨ-ਬਟਨ ਦਾ ਮੁੱਲ ਰੱਖਦੀ ਹੈ" @@ -1360,22 +1572,23 @@ msgstr "ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਸਪਿਨ-ਬਟਨ ਦਾ ਮ msgid "Climb rate" msgstr "ਚੜ੍ਹਨ ਦਰ" -#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 msgid "The acceleration rate when you hold down a button" msgstr "ਬਟਨ ਨੂੰ ਦਬਾਕੇ ਰੱਖਣ ਤੇ ਐਕਸਲੇਸ਼ਨ" -#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:244 -#: ../gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 msgid "Digits" msgstr "ਅੰਕ" -#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 msgid "The number of decimal places to display" msgstr "ਵੇਖਾਉਣ ਲਈ ਦਸ਼ਮਲਵ ਅੰਕਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:105 -#: ../gtk/gtkmenu.c:525 ../gtk/gtkspinner.c:131 ../gtk/gtktoggleaction.c:133 -#: ../gtk/gtktogglebutton.c:115 ../gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:516 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:743 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "ਸਰਗਰਮ" @@ -1391,171 +1604,187 @@ msgstr "ਸਪਿੱਨਰ ਦੀ ਪਲਸ" msgid "The GtkIconSize value that specifies the size of the rendered spinner" msgstr "GtkIconSize ਮੁੱਲ ਜੋ ਕਿ ਰੈਂਡਰ ਕੀਤੇ ਸਪਿੱਨਰ ਦਾ ਆਕਾਰ ਹੈ" -#: ../gtk/gtkcellrenderertext.c:232 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "ਪੇਸ਼ਕਾਰੀ ਪਾਠ" -#: ../gtk/gtkcellrenderertext.c:239 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "ਨਿਸ਼ਾਨਬੱਧ" -#: ../gtk/gtkcellrenderertext.c:240 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "ਪੇਸ਼ਕਾਰੀ ਲਈ ਟੈਕਸਟ ਦੀ ਨਿਸ਼ਾਨਬੰਦੀ" -#: ../gtk/gtkcellrenderertext.c:247 ../gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "ਗੁਣ" -#: ../gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "ਪੇਸ਼ ਕਰਨ ਲਈ ਟੈਕਸਟ ਲਈ ਜਾਰੀ ਸਟਾਇਲ ਗੁਣਾਂ ਦੀ ਲਿਸਟ ਹੈ" -#: ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "ਇੱਕ ਪੈਰਾ ਮੋਡ" -#: ../gtk/gtkcellrenderertext.c:256 +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" msgstr "ਕੀ ਸਾਰੇ ਟੈਕਸਟ ਨੂੰ ਇੱਕੋ ਪ੍ਹੈਰੇ ਵਿੱਚ ਰੱਖਣਾ ਹੈ" -#: ../gtk/gtkcellrenderertext.c:264 ../gtk/gtkcellview.c:178 -#: ../gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:180 msgid "Background color name" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" -#: ../gtk/gtkcellrenderertext.c:265 ../gtk/gtkcellview.c:179 -#: ../gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:181 msgid "Background color as a string" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ ਸਤਰ ਵਾਂਗ" -#: ../gtk/gtkcellrenderertext.c:272 ../gtk/gtkcellview.c:185 -#: ../gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:188 msgid "Background color" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ" -#: ../gtk/gtkcellrenderertext.c:273 ../gtk/gtkcellview.c:186 +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 msgid "Background color as a GdkColor" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkColor ਵਾਂਗ" -#: ../gtk/gtkcellrenderertext.c:280 ../gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:311 +msgid "Background color as RGBA" +msgstr "RGBA ਵਜੋਂ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 +msgid "Background color as a GdkRGBA" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:204 msgid "Foreground color name" msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" -#: ../gtk/gtkcellrenderertext.c:281 ../gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:205 msgid "Foreground color as a string" msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਇੱਕ ਸਤਰ ਵਾਂਗ" -#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtktexttag.c:210 -#: ../gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:212 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color" msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ" -#: ../gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "ਫਾਰਗਰਾਊਂਡ GdkColor ਵਾਂਗ" -#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkentry.c:663 -#: ../gtk/gtktexttag.c:227 ../gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:341 +msgid "Foreground color as RGBA" +msgstr "RGBA ਵਜੋਂ ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:342 +msgid "Foreground color as a GdkRGBA" +msgstr "ਫਾਰਗਰਾਊਂਡ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:229 ../gtk/gtktextview.c:685 msgid "Editable" msgstr "ਸੋਧਯੋਗ" -#: ../gtk/gtkcellrenderertext.c:298 ../gtk/gtktexttag.c:228 -#: ../gtk/gtktextview.c:669 +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:230 +#: ../gtk/gtktextview.c:686 msgid "Whether the text can be modified by the user" msgstr "ਕੀ ਟੈਕਸਟ ਵਰਤਣਵਾਲਾ ਸੋਧ ਸਕੇ ਜਾਂ ਨਾ" -#: ../gtk/gtkcellrenderertext.c:305 ../gtk/gtkcellrenderertext.c:313 -#: ../gtk/gtktexttag.c:243 ../gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktexttag.c:253 msgid "Font" msgstr "ਫੋਟ" -#: ../gtk/gtkcellrenderertext.c:306 ../gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:246 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "ਫੋਂਟ ਵਰਨਣ ਇੱਕ ਸਤਰ ਦੀ ਤਰਾਂ ਜਿਵੇ ਕਿ \"ਸੇਨਸ਼ ਇਟਾਲਿਕ 12\"" -#: ../gtk/gtkcellrenderertext.c:314 ../gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:254 msgid "Font description as a PangoFontDescription struct" msgstr "ਫੋਂਟ ਦਾ ਵੇਰਵਾ PangoFontDescription ਢਾਚੇ ਵਾਂਗ" -#: ../gtk/gtkcellrenderertext.c:322 ../gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:261 msgid "Font family" msgstr "ਫੋਂਟ ਸਮੂਹ" -#: ../gtk/gtkcellrenderertext.c:323 ../gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:262 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" msgstr "ਫੋਂਟ ਸਮੂਹ ਦਾ ਨਾਂ, ਜਿਵੇ ਕਿ ਸੰਨਜ, ਟਾਇਮਜ਼, ਮੋਨੋਸਪੇਸ" -#: ../gtk/gtkcellrenderertext.c:330 ../gtk/gtkcellrenderertext.c:331 -#: ../gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:269 msgid "Font style" msgstr "ਫੋਂਟ ਸਟਾਇਲ" -#: ../gtk/gtkcellrenderertext.c:339 ../gtk/gtkcellrenderertext.c:340 -#: ../gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:278 msgid "Font variant" msgstr "ਫੋਂਟ ਬਦਲ" -#: ../gtk/gtkcellrenderertext.c:348 ../gtk/gtkcellrenderertext.c:349 -#: ../gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:287 msgid "Font weight" msgstr "ਫੋਂਟ ਵੇਟ" -#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:359 -#: ../gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:298 msgid "Font stretch" msgstr "ਫੋਂਟ ਤਣਾਅ" -#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtkcellrenderertext.c:368 -#: ../gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:307 msgid "Font size" msgstr "ਫੋਂਟ ਅਕਾਰ" -#: ../gtk/gtkcellrenderertext.c:377 ../gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:327 msgid "Font points" msgstr "ਫੋਂਟ ਬਿੰਦੂ" -#: ../gtk/gtkcellrenderertext.c:378 ../gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:328 msgid "Font size in points" msgstr "ਫੋਂਟ ਅਕਾਰ ਪੁਆਇਟ ਵਿੱਚ" -#: ../gtk/gtkcellrenderertext.c:387 ../gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:317 msgid "Font scale" msgstr "ਫੋਂਟ ਸਕੇਲ" -#: ../gtk/gtkcellrenderertext.c:388 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "ਫੋਂਟ ਸਕੇਲਿੰਗ ਫੈਕਟਰ" -#: ../gtk/gtkcellrenderertext.c:397 ../gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:396 msgid "Rise" msgstr "ਉਭਰੋ" -#: ../gtk/gtkcellrenderertext.c:398 +#: ../gtk/gtkcellrenderertext.c:451 msgid "Offset of text above the baseline (below the baseline if rise is negative)" msgstr "ਟੈਕਸਟ ਦਾ ਮੁੱਖ-ਸਤਰ ਤੋਂ ਉੱਤੇ ਸੰਤੁਲਨ (ਮੁੱਖ-ਸਤਰ ਤੋਂ ਹੇਠਾਂ ਉਭਾਰ ਰਿਣਾਤਮਕ ਹੈ)" -#: ../gtk/gtkcellrenderertext.c:409 ../gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:436 msgid "Strikethrough" msgstr "ਵਿੰਨ੍ਹੋ" -#: ../gtk/gtkcellrenderertext.c:410 ../gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:437 msgid "Whether to strike through the text" msgstr "ਕੀ ਟੈਕਸਟ ਨੂੰ ਵਿੱਚੋਂ ਵਿੰਨ੍ਹਣਾ ਹੈ" -#: ../gtk/gtkcellrenderertext.c:417 ../gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:444 msgid "Underline" msgstr "ਹੇਠਾਂ ਲਾਈਨ" -#: ../gtk/gtkcellrenderertext.c:418 ../gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:445 msgid "Style of underline for this text" msgstr "ਇਸ ਟੈਕਸਟ ਦੇ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚਣ ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtkcellrenderertext.c:426 ../gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:356 msgid "Language" msgstr "ਭਾਸ਼ਾ" -#: ../gtk/gtkcellrenderertext.c:427 +#: ../gtk/gtkcellrenderertext.c:480 msgid "" "The language this text is in, as an ISO code. Pango can use this as a hint " "when rendering the text. If you don't understand this parameter, you " @@ -1564,39 +1793,39 @@ msgstr "" "ਭਾਸ਼ਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਕੋਡ ਹੈ, ਦਾ ISO ਕੋਡ ਹੈ, ਟੈਕਸਟ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਪੈਨਗੋ ਦੀ ਉਦਾਹਰਨ ਲਈ ਜਾ " "ਸਕਦੀ ਹੈ, ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਹੀਂ ਸਮਝ ਸਕੇ ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਵੀ ਨਹੀਂ ਹੈ " -#: ../gtk/gtkcellrenderertext.c:447 ../gtk/gtklabel.c:681 -#: ../gtk/gtkprogressbar.c:180 +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:207 msgid "Ellipsize" msgstr "ਅੰਡਕਾਰ-ਅਕਾਰ" -#: ../gtk/gtkcellrenderertext.c:448 +#: ../gtk/gtkcellrenderertext.c:501 msgid "" "The preferred place to ellipsize the string, if the cell renderer does not " "have enough room to display the entire string" msgstr "ਅੰਡਾਕਾਰ-ਅਕਾਰ ਸਤਰ ਦੀ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਸੈਲ ਕੋਈ ਪੂਰੀ ਸਤਰ ਨੂੰ ਵੇਖਾਉਣ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਨਾ ਹੋਵੇ" -#: ../gtk/gtkcellrenderertext.c:467 ../gtk/gtkfilechooserbutton.c:413 -#: ../gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" -#: ../gtk/gtkcellrenderertext.c:468 ../gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "ਲੇਬਲ ਦੀ ਲੋੜੀਦੀ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkcellrenderertext.c:492 ../gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:546 msgid "The maximum width of the cell, in characters" msgstr "ਸੈੱਲ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkcellrenderertext.c:511 ../gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:453 msgid "Wrap mode" msgstr "ਸਮੇਟਣ ਢੰਗ" -#: ../gtk/gtkcellrenderertext.c:512 +#: ../gtk/gtkcellrenderertext.c:565 msgid "" "How to break the string into multiple lines, if the cell renderer does not " "have enough room to display the entire string" @@ -1604,149 +1833,149 @@ msgstr "" "ਲਾਈਨਾਂ ਨੂੰ ਬਹੁ-ਲਾਈਨਾਂ ਵਿੱਚ ਕਿਵੇਂ ਵੰਡਿਆ ਜਾਵੇ, ਜੇਕਰ ਸੈਲ ਕੋਲ ਲਾਈਨਾਂ ਨੂੰ ਵਿਖਾਉਣ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਨਾ " "ਹੋਵੇ।" -#: ../gtk/gtkcellrenderertext.c:531 ../gtk/gtkcombobox.c:731 +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 msgid "Wrap width" msgstr "ਚੌੜਾਈ ਨੂੰ ਲੇਪਟੋ" -#: ../gtk/gtkcellrenderertext.c:532 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "ਚੌੜਾਈ, ਜਿਸ ਨਾਲ ਟੈਕਸਟ ਸਮੇਟਿਆ ਜਾਵੇਗਾ" -#: ../gtk/gtkcellrenderertext.c:552 ../gtk/gtktreeviewcolumn.c:301 +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 msgid "Alignment" msgstr "ਸ਼ਫਬੰਦੀ" -#: ../gtk/gtkcellrenderertext.c:553 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "ਲਾਈਨਾਂ ਨੂੰ ਇਕਸਾਰ ਕਿਵੇਂ ਕਰਨਾ ਹੈ" -#: ../gtk/gtkcellrenderertext.c:565 ../gtk/gtkcellview.c:208 -#: ../gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:542 msgid "Background set" msgstr "ਬੈਕਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtkcellrenderertext.c:566 ../gtk/gtkcellview.c:209 -#: ../gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:543 msgid "Whether this tag affects the background color" msgstr "ਕੀ ਇਹ ਟੈਗ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:569 ../gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:550 msgid "Foreground set" msgstr "ਫਾਰ-ਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtkcellrenderertext.c:570 ../gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:551 msgid "Whether this tag affects the foreground color" msgstr "ਕੀ ਇਹ ਟੈਗ ਫਾਰ-ਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:573 ../gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:554 msgid "Editability set" msgstr "ਸੋਧਣਯੋਗਤਾ ਦਿਓ" -#: ../gtk/gtkcellrenderertext.c:574 ../gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:555 msgid "Whether this tag affects text editability" msgstr "ਕੀ ਇਹ ਟੈਕਸਟ ਸੋਧਣਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:577 ../gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:558 msgid "Font family set" msgstr "ਫੋਂਟ ਸਮੂਹ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:578 ../gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:559 msgid "Whether this tag affects the font family" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਸਮੂਹ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:581 ../gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:562 msgid "Font style set" msgstr "ਫੋਂਟ ਸਟਾਇਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:582 ../gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:563 msgid "Whether this tag affects the font style" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਸਟਾਇਲ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:585 ../gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:566 msgid "Font variant set" msgstr "ਫੋਂਟ ਬਦਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:586 ../gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:567 msgid "Whether this tag affects the font variant" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਤਬਦੀਲੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:589 ../gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:570 msgid "Font weight set" msgstr "ਫੋਂਟ ਵੇਟ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:590 ../gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:571 msgid "Whether this tag affects the font weight" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਫੈਲਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:593 ../gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:574 msgid "Font stretch set" msgstr "ਫੋਂਟ ਤਣਾਅ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:594 ../gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:575 msgid "Whether this tag affects the font stretch" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਤਣਾਅ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:597 ../gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:578 msgid "Font size set" msgstr "ਫੋਂਟ ਆਕਾਰ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:598 ../gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:579 msgid "Whether this tag affects the font size" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਆਕਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:601 ../gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:582 msgid "Font scale set" msgstr "ਫੋਂਟ ਸਕੇਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:602 ../gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:583 msgid "Whether this tag scales the font size by a factor" msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਅਕਾਰ ਨੂੰ ਗੁਣਾਂਕ ਪੈਮਾਨਾ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:602 msgid "Rise set" msgstr "ਉਭਾਰਨਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:606 ../gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:603 msgid "Whether this tag affects the rise" msgstr "ਕੀ ਇਹ ਟੈਗ ਉਭਾਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:609 ../gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:618 msgid "Strikethrough set" msgstr "ਵਿੰਨ੍ਹਣਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:610 ../gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:619 msgid "Whether this tag affects strikethrough" msgstr "ਕੀ ਇਹ ਟੈਗ ਵਿੰਨ੍ਹਣ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:613 ../gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:626 msgid "Underline set" msgstr "ਹੇਠਾਂ ਲਾਈਨ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:614 ../gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:627 msgid "Whether this tag affects underlining" msgstr "ਕੀ ਇਹ ਟੈਗ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚਣ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:617 ../gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:590 msgid "Language set" msgstr "ਭਾਸ਼ਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:591 msgid "Whether this tag affects the language the text is rendered as" msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਕਸਟ ਪੇਸ਼ ਕਰਨ ਦੀ ਭਾਸ਼ਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:621 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "ਅੰਡਾਕਾਰ-ਅਕਾਰ ਦਿਓ" -#: ../gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "ਕੀ ਅੰਡਾਕਾਰਅਕਾਰ ਢੰਗ ਇਸ ਟੈਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkcellrenderertext.c:625 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "ਸ਼ਫਬੰਦੀ ਸੈੱਟ" -#: ../gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "ਕੀ ਇਹ ਟੈਗ ਅੰਡਾਕਾਰਅਕਾਰ ਢੰਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" @@ -1786,116 +2015,169 @@ msgstr "ਬਦਲਣ ਵਾਲੇ ਬਟਨ ਨੂੰ ਰੇਡੀੳ ਬਟਨ msgid "Indicator size" msgstr "ਸੰਕੇਤਕ ਆਕਾਰ" -#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:72 -#: ../gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "ਚੈਕ ਜਾਂ ਰੇਡੀਓ ਸੰਕੇਤਕ ਦਾ ਆਕਾਰ" -#: ../gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:210 +msgid "Background RGBA color" +msgstr "ਬੈਕਗਰਾਊਂਡ RGBA ਰੰਗ" + +#: ../gtk/gtkcellview.c:225 msgid "CellView model" msgstr "ਸੈੱਲ-ਝਲਕ ਮਾਡਲ" -#: ../gtk/gtkcellview.c:201 +#: ../gtk/gtkcellview.c:226 msgid "The model for cell view" msgstr "ਸੈੱਲ ਝਲਕ ਲਈ ਮਾਡਲ" -#: ../gtk/gtkcheckbutton.c:71 ../gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtktreemenu.c:329 +#: ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "ਸੈੱਲ ਖੇਤਰ" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtktreemenu.c:330 +#: ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "ਸੈੱਲ ਲੇਆਉਟ ਲਈ ਵਰਤਣ ਵਾਸਤੇ GtkCellArea" + +#: ../gtk/gtkcellview.c:265 +#| msgid "Cell Area" +msgid "Cell Area Context" +msgstr "ਸੈੱਲ ਖੇਤਰ ਪਰਸੰਗ" + +#: ../gtk/gtkcellview.c:266 +#| msgid "The GtkCellArea used to layout cells" +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "ਸੈੱਲ ਝਲਕ ਦੀ ਜੁਮੈਟਰੀ ਕੱਢਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ GtkCellAreaContext" + +#: ../gtk/gtkcellview.c:283 +#| msgid "Sensitive" +msgid "Draw Sensitive" +msgstr "ਸੰਵੇਦਨਸ਼ੀਲ ਬਣਾਓ" + +#: ../gtk/gtkcellview.c:284 +#| msgid "Whether tree lines should be drawn in the tree view" +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "ਕੀ ਸੈੱਲਾਂ ਨੂੰ ਸੰਵੇਦਨਸ਼ੀਲ ਹਾਲਤ ਵਿੱਚ ਬਣਾਉਣ ਲਈ ਮਜ਼ਬੂਰ ਕਰਨਾ ਹੈ" + +#: ../gtk/gtkcellview.c:302 +#| msgid "Model" +msgid "Fit Model" +msgstr "ਫਿੱਟ ਮਾਡਲ" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "ਕੀ ਮਾਡਲ ਵਿੱਚ ਹਰੇਕ ਕਤਾਰ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਦੀ ਮੰਗ ਕਰਨੀ ਹੈ" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "ਸੰਕੇਤਕ ਦਾ ਆਕਾਰ" -#: ../gtk/gtkcheckbutton.c:79 ../gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 msgid "Indicator Spacing" msgstr "ਸੰਕੇਤਕ ਦੀ ਥਾਂ" -#: ../gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "ਚੈਕ ਜਾਂ ਰੇਡੀਓ ਸੰਕੇਤਕ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਥਾਂ" -#: ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "ਕੀ ਮੇਨੂ ਆਈਟਮ ਚੈੱਕ ਹੋ ਜਾਏ" -#: ../gtk/gtkcheckmenuitem.c:113 ../gtk/gtktogglebutton.c:123 +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "ਅਸੰਗਤ" -#: ../gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "ਕੀ \"ਅਸੰਗਤ\" ਸਥਿਤੀ ਵੇਖਾਈ ਜਾਏ" -#: ../gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "ਰੇਡੀਓ ਮੇਨੂ ਆਈਟਮ ਬਣਾਓ" -#: ../gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "ਕੀ ਮੇਨੂ ਆਈਟਮ ਇੱਕ ਰੇਡੀਓ ਮੇਨੂ ਆਈਟਮ ਵਾਂਗ ਲੱਗੇ" -#: ../gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:170 msgid "Use alpha" msgstr "ਐਲਫਾ ਵਰਤੋ" -#: ../gtk/gtkcolorbutton.c:160 +#: ../gtk/gtkcolorbutton.c:171 msgid "Whether to give the color an alpha value" msgstr "ਕੀ ਰੰਗ ਨੂੰ ਐਲਫਾ ਮੁੱਲ ਦਿੱਤਾ ਜਾਵੇ ਜਾਂ ਨਾ" -#: ../gtk/gtkcolorbutton.c:174 ../gtk/gtkfilechooserbutton.c:399 -#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:115 -#: ../gtk/gtkstatusicon.c:415 ../gtk/gtktreeviewcolumn.c:268 +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:126 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 msgid "Title" msgstr "ਟਾਈਟਲ" -#: ../gtk/gtkcolorbutton.c:175 +#: ../gtk/gtkcolorbutton.c:186 msgid "The title of the color selection dialog" msgstr "ਰੰਗ ਚੁਣਨ ਵਾਲੀ ਤਖਤੀ ਦਾ ਟਾਈਟਲ" -#: ../gtk/gtkcolorbutton.c:189 ../gtk/gtkcolorsel.c:323 +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "ਮੌਜੂਦਾ ਰੰਗ" -#: ../gtk/gtkcolorbutton.c:190 +#: ../gtk/gtkcolorbutton.c:201 msgid "The selected color" msgstr "ਚੁਣਿਆ ਰੰਗ" -#: ../gtk/gtkcolorbutton.c:204 ../gtk/gtkcolorsel.c:330 +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "ਮੌਜੂਦਾ ਐਲਫਾ" -#: ../gtk/gtkcolorbutton.c:205 +#: ../gtk/gtkcolorbutton.c:216 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "ਚੁਣਿਆ ਧੁੰਦਲਾਪਨ (0 ਪੂਰੀ ਤਰਾਂ ਪਾਰਦਰਸ਼ੀ , 65535 ਪੂਰੀ ਤਰਾਂ ਧੁੰਦਲਾ)" -#: ../gtk/gtkcolorsel.c:309 +#: ../gtk/gtkcolorbutton.c:230 +msgid "Current RGBA Color" +msgstr "ਮੌਜੂਦਾ RGBA ਰੰਗ" + +#: ../gtk/gtkcolorbutton.c:231 +msgid "The selected RGBA color" +msgstr "ਚੁਣਿਆ RGBA ਰੰਗ" + +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "ਧੁੰਦਲਾਪਨ ਕੰਟਰੋਲ ਹੈ" -#: ../gtk/gtkcolorsel.c:310 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "ਕੀ ਰੰਗ ਚੋਣ ਧੁੰਦਕਾਪਨ ਦੀ ਸੈਟਿੰਗ ਵੇਖਾਵੇ" -#: ../gtk/gtkcolorsel.c:316 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "ਰੰਗ-ਪੱਟੀ" -#: ../gtk/gtkcolorsel.c:317 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "ਕੀ ਰੰਗ-ਪੱਟੀ ਨੂੰ ਵਰਤਣਾ ਹੈ" -#: ../gtk/gtkcolorsel.c:324 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "ਮੌਜੂਦਾ ਰੰਗ" -#: ../gtk/gtkcolorsel.c:331 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "ਮੌਜੂਦਾ ਧੁੰਦਲਾਪਨ ਦਾ ਮੁੱਲ (0 ਪੂਰੀ ਤਰਾਂ ਪਾਰਦਰਸ਼ੀ , 65535 ਪੂਰੀ ਤਰਾਂ ਧੁੰਦਲਾ)" -#: ../gtk/gtkcolorsel.c:345 -msgid "Custom palette" -msgstr "ਰੰਗ-ਪੱਟੀ ਦੀ ਚੋਣ" +#: ../gtk/gtkcolorsel.c:360 +msgid "Current RGBA" +msgstr "ਮੌਜੂਦਾ RGBA" -#: ../gtk/gtkcolorsel.c:346 -msgid "Palette to use in the color selector" -msgstr "ਰੰਗ ਚੋਣ ਵਿੱਚ ਰੰਗ-ਪੱਟੀ ਵਰਤੋਂ" +#: ../gtk/gtkcolorsel.c:361 +msgid "The current RGBA color" +msgstr "ਮੌਜੂਦਾ RGBA ਰੰਗ" #: ../gtk/gtkcolorseldialog.c:110 msgid "Color Selection" @@ -1929,237 +2211,282 @@ msgstr "ਮੱਦਦ ਬਟਨ" msgid "The help button of the dialog." msgstr "ਡਾਈਲਾਗ ਲਈ ਮੱਦਦ ਬਟਨ ਹੈ।" -#: ../gtk/gtkcombobox.c:714 +#: ../gtk/gtkcombobox.c:663 msgid "ComboBox model" msgstr "ਕੰਬੋ-ਬਾਕਸ ਮਾਡਲ" -#: ../gtk/gtkcombobox.c:715 +#: ../gtk/gtkcombobox.c:664 msgid "The model for the combo box" msgstr "ਕੰਬੋ-ਬਾਕਸ ਲਈ ਮਾਡਲ" -#: ../gtk/gtkcombobox.c:732 +#: ../gtk/gtkcombobox.c:681 msgid "Wrap width for laying out the items in a grid" msgstr "ਗਰਿੱਡ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਲੇਪਟਣ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkcombobox.c:754 +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 msgid "Row span column" msgstr "ਕਤਾਰ ਕਾਲਮ ਦਾ ਫਾਸਲਾ" -#: ../gtk/gtkcombobox.c:755 +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 msgid "TreeModel column containing the row span values" msgstr "ਟਰੀਮਾਡਲ ਕਾਲਮ ਵਿੱਚ ਕਤਾਰਾਂ ਦੇ ਵਿੱਚ ਦੂਰੀ ਦਾ ਮੁੱਲ" -#: ../gtk/gtkcombobox.c:776 +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 msgid "Column span column" msgstr "ਕਾਲਮ ਕਾਲਮ ਵਿੱਚ ਦੂਰੀ" -#: ../gtk/gtkcombobox.c:777 +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 msgid "TreeModel column containing the column span values" msgstr "ਟਰੀਮਾਡਲ ਕਾਲਮ ਵਿੱਚ ਕਾਲਮਾਂ ਦੇ ਵਿੱਚ ਦੂਰੀ ਦਾ ਮੁੱਲ" -#: ../gtk/gtkcombobox.c:798 +#: ../gtk/gtkcombobox.c:747 msgid "Active item" msgstr "ਸਰਗਰਮ ਆਈਟਮ" -#: ../gtk/gtkcombobox.c:799 +#: ../gtk/gtkcombobox.c:748 msgid "The item which is currently active" msgstr "ਆਈਟਮ, ਜੋ ਹੁਣ ਸਰਗਰਮ ਹੈ" -#: ../gtk/gtkcombobox.c:818 ../gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "ਵੱਖ-ਕਰਨ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ" -#: ../gtk/gtkcombobox.c:819 +#: ../gtk/gtkcombobox.c:768 msgid "Whether dropdowns should have a tearoff menu item" msgstr "ਕੀ ਲਟਕਣ ਵਾਲੇ ਵੱਖ ਮੇਨੂ ਆਈਟਮਾਂ ਹੋਣ" -#: ../gtk/gtkcombobox.c:834 ../gtk/gtkentry.c:688 +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "ਫਰੇਮ ਹੈ" -#: ../gtk/gtkcombobox.c:835 +#: ../gtk/gtkcombobox.c:784 msgid "Whether the combo box draws a frame around the child" msgstr "ਕੀ ਕੰਬੋ-ਬਕਸਾ ਚਾਈਲਡ ਦੁਆਲੇ ਫਰੇਮ ਵੇਖਾਓ" -#: ../gtk/gtkcombobox.c:843 +#: ../gtk/gtkcombobox.c:792 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "ਕੀ ਕੰਬੋ-ਬਕਸ ਫੋਕਸ ਹੋ ਜਾਵੇ, ਜਦੋਂ ਕਿ ਇਹ ਮਾਊਸ ਨਾਲ ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkcombobox.c:858 ../gtk/gtkmenu.c:580 +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:571 msgid "Tearoff Title" msgstr "ਟਾਈਟਲ ਨੂੰ ਵੱਖ ਕਰੋ" -#: ../gtk/gtkcombobox.c:859 +#: ../gtk/gtkcombobox.c:808 msgid "" "A title that may be displayed by the window manager when the popup is torn-" "off" msgstr "ਜਦੋਂ ਪੋਪਅੱਪ ਵੱਖ ਹੋਵੇ ਤਾਂ ਵਿੰਡੋ ਮੈਨੇਜਰ ਵਲੋਂ ਵੇਖਾਇਆ ਜਾਣ ਵਾਲਾ ਇੱਕ ਟਾਈਟਲ" -#: ../gtk/gtkcombobox.c:876 +#: ../gtk/gtkcombobox.c:825 msgid "Popup shown" msgstr "ਪੋਪਅੱਪ ਵੇਖਾਉਣਾ" -#: ../gtk/gtkcombobox.c:877 +#: ../gtk/gtkcombobox.c:826 msgid "Whether the combo's dropdown is shown" msgstr "ਕੀ ਕੰਬੋ ਦੀ ਲਟਕਦੀ ਸੂਚੀ ਵੇਖਾਈ ਜਾਵੇ" -#: ../gtk/gtkcombobox.c:893 +#: ../gtk/gtkcombobox.c:842 msgid "Button Sensitivity" msgstr "ਬਟਨ ਸੰਵਦੇਨਸ਼ੀਲਤਾ" -#: ../gtk/gtkcombobox.c:894 +#: ../gtk/gtkcombobox.c:843 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "ਜਦੋਂ ਮਾਡਲ ਖਾਲੀ ਹੋਵੇ ਤਾਂ ਲਟਕਦੇ ਬਟਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" -#: ../gtk/gtkcombobox.c:901 +#: ../gtk/gtkcombobox.c:859 +msgid "Whether combo box has an entry" +msgstr "ਕੀ ਕੰਬੋ-ਬਕਸਾ ਦੀ ਐਂਟਰੀ ਹੈ" + +#: ../gtk/gtkcombobox.c:874 +msgid "Entry Text Column" +msgstr "ਐਂਟਰੀ ਟੈਕਸਟ ਕਾਲਮ" + +#: ../gtk/gtkcombobox.c:875 +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" +msgstr "" +"ਕੰਬੋਬਾਕਸ ਦੇ ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਐਂਟਰੀ ਤੋਂ ਲਾਈਨ ਨਾਲ ਸਬੰਧਿਤ ਹੈ, ਜੇ ਕਾਲਮ ਨੂੰ " +"#GtkComboBox:has-entry = %TRUE " +"ਨਾਲ ਬਣਾਇਆ ਹੋਵੇ" + +#: ../gtk/gtkcombobox.c:892 +msgid "ID Column" +msgstr "ID ਕਾਲਮ" + +#: ../gtk/gtkcombobox.c:893 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "ਕੰਬੋਬਾਕਸ ਦੇ ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਮਾਡਲ ਵਿੱਚ ਮੁੱਲ ਲਈ ਲਾਈਨ ID ਦਿੰਦਾ ਹੈ" + +#: ../gtk/gtkcombobox.c:908 +msgid "Active id" +msgstr "ਸਰਗਰਮ id" + +#: ../gtk/gtkcombobox.c:909 +msgid "The value of the id column for the active row" +msgstr "ਐਕਟਿਵ ਕਤਾਰ ਲਈ id ਕਾਲਮ ਦਾ ਮੁੱਲ" + +#: ../gtk/gtkcombobox.c:924 +msgid "Popup Fixed Width" +msgstr "ਪੋਪਅੱਪ ਸਥਿਰ ਚੌੜਾਈ" + +#: ../gtk/gtkcombobox.c:925 +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "ਕੀ ਪੋਪਅੱਪ ਦੀ ਚੌੜਾਈ ਕੰਬੋ ਬਾਕਸ ਦੀ ਦਿੱਤੀ ਗਈ ਚੌੜਾਈ ਦੇ ਮੁਤਾਬਕ ਸਥਿਰ ਹੋਵੇ" + +#: ../gtk/gtkcombobox.c:948 msgid "Appears as list" msgstr "ਸੂਚੀ ਦੀ ਦਿੱਸੇ" -#: ../gtk/gtkcombobox.c:902 +#: ../gtk/gtkcombobox.c:949 msgid "Whether dropdowns should look like lists rather than menus" msgstr "ਕੀ ਲਟਕਣ ਹੇਠਾਂ-ਖੁੱਲ੍ਹਣ ਵਾਲਾ ਮੇਨੂ ਦੀ ਤਰਾਂ ਨਾ ਹੋਕੇ ਇੱਕ ਲਿਸਟ ਵਾਂਗ ਦਿੱਸੇ" -#: ../gtk/gtkcombobox.c:918 +#: ../gtk/gtkcombobox.c:965 msgid "Arrow Size" msgstr "ਤੀਰ ਆਕਾਰ" -#: ../gtk/gtkcombobox.c:919 +#: ../gtk/gtkcombobox.c:966 msgid "The minimum size of the arrow in the combo box" msgstr "ਕੰਬੋ ਬਾਕਸ ਵਿੱਚ ਤੀਰ ਦਾ ਘੱਟੋ-ਘੱਟ ਆਕਾਰ ਹੈ।" -#: ../gtk/gtkcombobox.c:934 ../gtk/gtkentry.c:788 ../gtk/gtkhandlebox.c:182 -#: ../gtk/gtkmenubar.c:189 ../gtk/gtkstatusbar.c:178 ../gtk/gtktoolbar.c:600 -#: ../gtk/gtkviewport.c:158 +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:196 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:154 msgid "Shadow type" msgstr "ਛਾਂ ਕਿਸਮ" -#: ../gtk/gtkcombobox.c:935 +#: ../gtk/gtkcombobox.c:982 msgid "Which kind of shadow to draw around the combo box" msgstr "ਕੰਬੋ ਬਾਕਸ ਦੁਆਲੇ ਕਿਸ ਕਿਸਮ ਦੀ ਛਾਂ ਖਿੱਚੀ ਜਾਵੇ" -#: ../gtk/gtkcontainer.c:259 +#: ../gtk/gtkcontainer.c:453 msgid "Resize mode" msgstr "ਮੁੜ-ਅਕਾਰ ਮੋਡ" -#: ../gtk/gtkcontainer.c:260 +#: ../gtk/gtkcontainer.c:454 msgid "Specify how resize events are handled" msgstr "ਦੱਸੋ ਕਿ ਮੁੜ-ਅਕਾਰ ਘਟਨਾ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਿਆ ਜਾਵੇਗਾ" -#: ../gtk/gtkcontainer.c:267 +#: ../gtk/gtkcontainer.c:461 msgid "Border width" msgstr "ਕਿਨਾਰੇ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkcontainer.c:268 +#: ../gtk/gtkcontainer.c:462 msgid "The width of the empty border outside the containers children" msgstr "ਕੰਨਟੇਨਰ ਚਲਾਇਡਰਨ ਦੇ ਬਾਹਰ ਖਾਲੀ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkcontainer.c:276 +#: ../gtk/gtkcontainer.c:470 msgid "Child" msgstr "ਚਲਾਇਡ" -#: ../gtk/gtkcontainer.c:277 +#: ../gtk/gtkcontainer.c:471 msgid "Can be used to add a new child to the container" msgstr "ਕੰਨਟੇਨਰ ਵਿੱਚ ਨਵਾਂ ਚਲਾਇਡ ਨੂੰ ਜੋੜਨ ਦੇ ਕੰਮ ਆਉਦੀ ਹੈ" -#: ../gtk/gtkdialog.c:165 ../gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "ਸੰਖੇਪ ਖੇਤਰ ਦਾ ਕਿਨਾਰਾ" -#: ../gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:290 msgid "Width of border around the main dialog area" msgstr "ਮੁੱਲ਼ ਤੱਖਤੀ ਖੇਤਰ ਦੇ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkdialog.c:183 ../gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "ਸਮੱਗਰੀ ਖੇਤਰ ਥਾਂ" -#: ../gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:308 msgid "Spacing between elements of the main dialog area" msgstr "ਮੁੱਖ ਡਾਈਲਾਗ ਖੇਤਰ ਦੀਆਂ ਇਕਾਈਆਂ ਵਿੱਚ ਥਾਂ" -#: ../gtk/gtkdialog.c:191 ../gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "ਬਟਨ ਦੀ ਥਾਂ" -#: ../gtk/gtkdialog.c:192 ../gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "ਬਟਨਾਂ ਵਿੱਚਕਾਰ ਥਾਂ" -#: ../gtk/gtkdialog.c:200 ../gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "ਕਾਰਵਾਈ ਖੇਤਰ ਦਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:325 msgid "Width of border around the button area at the bottom of the dialog" msgstr "ਤੱਖਤੀ ਦੇ ਹੇਠ ਬਟਨਾਂ ਦੇ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "ਟੈਕਸਟ ਬਫਰ" -#: ../gtk/gtkentry.c:636 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "ਟੈਕਸਟ ਬਫ਼ਰ ਆਬਜੈਕਟ, ਜੋ ਕਿ ਅਸਲ ਵਿੱਚ ਐਂਟਰੀ ਟੈਕਸਟ ਸਟੋਰ ਕਰਦਾ ਹੈ" -#: ../gtk/gtkentry.c:643 ../gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "ਕਰਸਰ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtkentry.c:644 ../gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ" -#: ../gtk/gtkentry.c:653 ../gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "ਚੋਣ ਸੀਮਾ" -#: ../gtk/gtkentry.c:654 ../gtk/gtklabel.c:655 +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 msgid "The position of the opposite end of the selection from the cursor in chars" msgstr "ਕਰਸਰ ਤੋਂ ਚੋਣ ਦੀ ਵਿਰੋਧੀ ਸਿਰਿਆ ਤੱਕ ਦੀ ਸਥਿਤੀ ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkentry.c:664 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "ਕੀ ਇੰਦਰਾਜ਼ ਹਿੱਸੇ ਨੁੰ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkentry.c:671 ../gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਲੰਬਾਈ" -#: ../gtk/gtkentry.c:672 ../gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "ਇਸ ਇੰਦਰਾਜ਼ ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ ਅੱਖਰਾਂ ਦੀ ਥਾਂ 0 ਜੇਕਰ ਕੋਈ ਵੱਧ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੈ " -#: ../gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "ਵੇਖਣਯੋਗਤਾ" -#: ../gtk/gtkentry.c:681 +#: ../gtk/gtkentry.c:772 msgid "" "FALSE displays the \"invisible char\" instead of the actual text (password " "mode)" msgstr "ਗਲਤ, ਅਸਲੀ ਸ਼ਬਦਾਂ(ਗੁਪਤ ਕੋਡ) ਦੀ ਬਜਾਏ \"ਲੁਕਵੇ ਅੱਖਰ\" ਵੇਖਾਵੇਗਾ" -#: ../gtk/gtkentry.c:689 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "ਗਲਤ ਇੰਦਰਾਜ਼ ਵਿਚੋ ਬਾਹਰੀ bevel ਨੂੰ ਹਟਾ ਦੇਵੇਗਾ" -#: ../gtk/gtkentry.c:697 +#: ../gtk/gtkentry.c:788 msgid "Border between text and frame. Overrides the inner-border style property" msgstr "ਟੈਕਸਟ ਅਤੇ ਫਰੇਮ ਵਿੱਚ ਹਾਸ਼ੀਆ ਹੈ। ਅੰਦਰੂਨੀ-ਹਾਸ਼ੀਆ ਸਟਾਇਲ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦਾ ਹੈ" -#: ../gtk/gtkentry.c:704 ../gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "ਅਦਿੱਖ ਅੱਖਰ" -#: ../gtk/gtkentry.c:705 ../gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" msgstr "ਅੱਖਰ, ਜੋ ਕਿ ਇੰਦਰਾਜ਼ ਦੇ ਸ਼ਬਦਾਂ ਨੂੰ ਲੁਕਉਣ ਦੇ ਕੰਮ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ (\"ਗੁਪਤ ਕੋਡ\" ਵਿੱਚ)" -#: ../gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "ਡਿਫਾਲਟ ਸਰਗਰਮ" -#: ../gtk/gtkentry.c:713 +#: ../gtk/gtkentry.c:804 msgid "" "Whether to activate the default widget (such as the default button in a " "dialog) when Enter is pressed" @@ -2167,93 +2494,93 @@ msgstr "" "ਕੀ ਡਿਫਾਲਟ ਵਿਦਗਿਟ ਹੀ ਸਰਗਰਮ ਕਰਨਾ ਹੈ, (ਜਿਵੇਂ ਕਿ ਡਾਈਲਾਗ ਵਿੱਚ ਡਿਫਾਲਟ ਬਟਨ)ਜਦੋ ਕਿ ਐਟਰ ਨੂੰ " "ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" -#: ../gtk/gtkentry.c:720 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "ਇੰਦਰਾਜ਼ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਛੱਡਣ ਲਈ ਅੱਖਰਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "ਸੰਤੁਲਿਤ ਸਕਰੋਲ" -#: ../gtk/gtkentry.c:730 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" msgstr "ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ, ਜੋ ਕਿ ਸਕਰੀਨ ਦੇ ਖੱਬਿਉ ਇੰਦਰਾਜ਼ ਵਿੱਚ ਸੰਤੁਲਿਤ ਸਕਰੋਲ ਹੋਣ" -#: ../gtk/gtkentry.c:740 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "ਐਂਟਰੀ ਦੀ ਸਮੱਗਰੀ" -#: ../gtk/gtkentry.c:755 ../gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkentry.c:756 ../gtk/gtkmisc.c:82 +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 msgid "" "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " "layouts." msgstr "ਲੇਟਵੀ ਸਫ਼ਬੰਦੀ, 0 (ਖੱਬਿਉ) ਤੋ 1 (ਸੱਜਿਉ) RTL ਲਈ ਉਲਟ ਹੈ।" -#: ../gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "ਛਾਂਟੀਆਂ ਬਹੁ-ਲਾਈਨਾਂ" -#: ../gtk/gtkentry.c:773 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "ਕੀ ਇੱਕ ਲਾਈਨ ਵਿੱਚ ਛਾਂਟੀਆਂ ਬਹੁ-ਲਾਈਨਾਂ ਨੂੰ ਚੇਪਿਆ ਜਾਵੇ।" -#: ../gtk/gtkentry.c:789 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" msgstr "ਐਂਟਰੀ ਦੁਆਲੇ ਕਿਸ ਕਿਸਮ ਦੀ ਸ਼ੈਡੋ ਬਣਾਉਣੀ ਹੈ, ਜਦੋਂ ਕਿ ਫਰੇਮ ਸੈੱਟ ਹੋਵੇ" -#: ../gtk/gtkentry.c:804 ../gtk/gtktextview.c:748 +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:765 msgid "Overwrite mode" msgstr "ਉੱਤੇ ਵੇਖਾਉਣ ਦਾ ਢੰਗ" -#: ../gtk/gtkentry.c:805 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "ਕੀ ਨਵਾਂ ਟੈਕਸਟ ਪੁਰਾਣੇ ਟੈਕਸਟ ਉੱਤੇ ਲਿਖੇ" -#: ../gtk/gtkentry.c:819 ../gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "ਟੈਕਸਟ ਲੰਬਾਈ" -#: ../gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "ਐਂਟਰੀ ਵਿੱਚ ਮੌਜੂਦ ਟੈਕਸਟ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkentry.c:835 +#: ../gtk/gtkentry.c:926 msgid "Invisible character set" msgstr "ਅਦਿੱਖ ਅੱਖਰ ਸੈੱਟ" -#: ../gtk/gtkentry.c:836 +#: ../gtk/gtkentry.c:927 msgid "Whether the invisible character has been set" msgstr "ਕੀ ਅਦਿੱਖ ਅੱਖਰ ਸੈੱਟ ਕਰਨੇ ਹਨ" -#: ../gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "ਕੈਪਸ ਲਾਕ ਚੇਤਾਵਨੀ" -#: ../gtk/gtkentry.c:855 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "ਕੀ ਜਦੋਂ ਕੈਪਸ ਲਾਕ ਚਾਲੂ ਹੋਵੇ ਤਾਂ ਪਾਸਵਰਡ ਐਂਟਰੀਆਂ ਇੱਕ ਚੇਤਾਵਨੀ ਵੇਖਾਉਣ" -#: ../gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "ਤਰੱਕੀ ਭਾਗ" -#: ../gtk/gtkentry.c:870 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "ਟਾਸਕ ਦਾ ਮੌਜੂਦਾ ਭਾਗ, ਜੋ ਕਿ ਪੂਰਾ ਹੋ ਗਿਆ" -#: ../gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "ਤਰੱਕੀ ਪਲੱਸ ਸਟੈਪ" -#: ../gtk/gtkentry.c:888 +#: ../gtk/gtkentry.c:979 msgid "" "The fraction of total entry width to move the progress bouncing block for " "each call to gtk_entry_progress_pulse()" @@ -2261,186 +2588,170 @@ msgstr "" "ਤਰੱਕੀ ਬਲਾਕ ਹਿਲਾਉਣ ਲਈ ਭਾਗ ਦੀ ਕੁੱਲ ਐਂਟਰੀ ਚੌੜਾਈ, ਜੋ ਕਿ gtk_entry_progress_pulse() ਦੀ " "ਹਰੇਕ ਕਾਲ ਲਈ ਹੋਵੇ" -#: ../gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "ਪ੍ਰਾਇਮਰੀ ਪਿਕਬਫ਼" -#: ../gtk/gtkentry.c:905 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "ਐਂਟਰੀ ਲਈ ਪ੍ਰਾਇਮਰੀ ਪਿਕਬਫ਼" -#: ../gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "ਸੈਕੰਡਰੀ ਪਿਕਬਫ਼" -#: ../gtk/gtkentry.c:920 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "ਐਂਟਰੀ ਲਈ ਸੈਕੰਡਰੀ ਪਿਕਬਫ਼" -#: ../gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "ਪ੍ਰਾਇਮਰੀ ਸਟਾਕ ID" -#: ../gtk/gtkentry.c:935 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਸਟਾਕ ID" -#: ../gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "ਸੈਕੰਡਰੀ ਸਟਾਕ ID" -#: ../gtk/gtkentry.c:950 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਸਟਾਕ ID" -#: ../gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkentry.c:965 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkentry.c:980 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "ਪ੍ਰਾਇਮਰੀ GIcon" -#: ../gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ GIcon" -#: ../gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "ਸੈਕੰਡਰੀ GIcon" -#: ../gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ GIcon" -#: ../gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "ਪ੍ਰਾਇਮਰੀ ਸਟੋਰੇਜ਼ ਟਾਈਪ" -#: ../gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਨੁਮਾਇੰਦਾ" -#: ../gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "ਸੈਕੰਡਰੀ ਸਟੋਰੇਜ਼ ਟਾਈਪ" -#: ../gtk/gtkentry.c:1041 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਨੁਮਾਇੰਦਾ" -#: ../gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਯੋਗ" -#: ../gtk/gtkentry.c:1063 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "ਕੀ ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਹੋਣ" -#: ../gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ" -#: ../gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "ਕੀ ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਹੋਣ" -#: ../gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ" -#: ../gtk/gtkentry.c:1107 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "ਕੀ ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" -#: ../gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ" -#: ../gtk/gtkentry.c:1129 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "ਕੀ ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" -#: ../gtk/gtkentry.c:1145 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ" -#: ../gtk/gtkentry.c:1146 ../gtk/gtkentry.c:1182 +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਦੀ ਸਮੱਗਰੀ" -#: ../gtk/gtkentry.c:1162 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ" -#: ../gtk/gtkentry.c:1163 ../gtk/gtkentry.c:1201 +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਦੀ ਸਮੱਗਰੀ" -#: ../gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਨਿਸ਼ਾਨਬੱਧ" -#: ../gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਨਿਸ਼ਾਨਬੱਧ" -#: ../gtk/gtkentry.c:1220 ../gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:793 msgid "IM module" msgstr "IM ਮੋਡੀਊਲ" -#: ../gtk/gtkentry.c:1221 ../gtk/gtktextview.c:777 +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:794 msgid "Which IM module should be used" msgstr "ਕਿਹੜਾ IM ਮੋਡੀਊਲ ਵਰਤਿਆ ਜਾਵੇ" -#: ../gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "ਆਈਕਾਨ ਪ੍ਰੀ-ਲਾਈਟ" -#: ../gtk/gtkentry.c:1236 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "ਕੀ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਆਈਕਾਨ ਪ੍ਰੀ-ਲਾਈਟ ਕੀਤੇ ਜਾਣ, ਜਦੋਂ ਉੱਤੇ ਇਸ਼ਾਰਾ ਹੋਵੇ" -#: ../gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "ਤਰੱਕੀ ਬਾਰਡਰ" -#: ../gtk/gtkentry.c:1250 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "ਤਰੱਕੀ ਪੱਟੀ ਦੇ ਦੁਆਲੇ ਬਾਰਡਰ" -#: ../gtk/gtkentry.c:1742 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "ਟੈਕਸਟ ਅਤੇ ਫਰੇਮ ਵਿੱਚ ਬਾਰਡਰ" -#: ../gtk/gtkentry.c:1747 ../gtk/gtklabel.c:903 -msgid "Select on focus" -msgstr "ਫੋਕਸ ਉੱਤੇ ਚੁਣੋ" - -#: ../gtk/gtkentry.c:1748 -msgid "Whether to select the contents of an entry when it is focused" -msgstr "ਕੀ ਇੰਦਰਾਜ਼ ਵਿੱਚਲੇ ਹਿੱਸੇ ਨੂੰ ਚੁਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਹ ਕੇਦਰਿਤ ਹੋ ਜਾਵੇ" - -#: ../gtk/gtkentry.c:1762 -msgid "Password Hint Timeout" -msgstr "ਪਾਸਵਰਡ ਇਸ਼ਾਰਾ ਸਮਾਂ-ਅੰਤਰਾਲ" - -#: ../gtk/gtkentry.c:1763 -msgid "How long to show the last input character in hidden entries" -msgstr "ਲੁਕਵੇਂ ਇੰਦਰਾਜ਼ਾਂ ਵਿੱਚ ਆਖਰੀ ਦਿੱਤੇ ਅੱਖਰ ਨੂੰ ਵੇਖਾਉਣ ਨੂੰ ਕਿੰਨਾ ਸਮਾਂ ਲੱਗੇ" - #: ../gtk/gtkentrybuffer.c:353 msgid "The contents of the buffer" msgstr "ਬਫ਼ਰ ਦੀ ਸਮੱਗਰੀ" @@ -2449,158 +2760,158 @@ msgstr "ਬਫ਼ਰ ਦੀ ਸਮੱਗਰੀ" msgid "Length of the text currently in the buffer" msgstr "ਬਫ਼ਰ ਵਿੱਚ ਮੌਜੂਦਾ ਟੈਕਸਟ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:301 msgid "Completion Model" msgstr "ਪੂਰਤੀ ਮਾਡਲ" -#: ../gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:302 msgid "The model to find matches in" msgstr "ਮਾਡਲ, ਜਿਸ ਵਿੱਚ ਮੇਲ ਲੱਭਣਾ ਹੈ" -#: ../gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:308 msgid "Minimum Key Length" msgstr "ਘੱਟੋ-ਘੱਟ ਕੁੰਜੀ ਲੰਬਾਈ" -#: ../gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:309 msgid "Minimum length of the search key in order to look up matches" msgstr "ਮੇਲ ਲੱਭਣ ਲਈ ਖੋਜ ਕੁੰਜੀ ਦੀ ਘੱਟੋ-ਘੱਟ ਲੰਬਾਈ" -#: ../gtk/gtkentrycompletion.c:304 ../gtk/gtkiconview.c:587 +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:617 msgid "Text column" msgstr "ਟੈਕਸਟ ਕਾਲਮ" -#: ../gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:326 msgid "The column of the model containing the strings." msgstr "ਮਾਡਲ ਦੇ ਕਾਲਮ ਵਿੱਚ ਸਤਰਾਂ ਇਸ ਤੋਂ ਪਰਾਪਤ ਕਰੇਗਾ।" -#: ../gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:345 msgid "Inline completion" msgstr "ਲਾਈਨ ਵਿੱਚ ਪੂਰਨ" -#: ../gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:346 msgid "Whether the common prefix should be inserted automatically" msgstr "ਕੀ ਆਮ ਅਗੇਤਰ ਆਟੋਮੈਟਿਕ ਹੀ ਜੋੜ ਦਿੱਤਾ ਜਾਵੇ" -#: ../gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:360 msgid "Popup completion" msgstr "ਪੋਪਅੱਪ ਪੂਰਨ" -#: ../gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:361 msgid "Whether the completions should be shown in a popup window" msgstr "ਕੀ ਇੱਕ ਪੋਪਅੱਪ ਵਿੰਡੋ ਵਿੱਚ ਪੂਰਨ ਕੀਤਾ ਜਾਵੇ" -#: ../gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:376 msgid "Popup set width" msgstr "ਪੋਪਅੱਪ ਸੈਟ ਚੌੜਾਈ" -#: ../gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:377 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਪੋਪਅੱਪ ਵਿੰਡੋ ਨੂੰ ਉਸੇ ਅਕਾਰ ਦੇ ਹੋਵੇਗਾ, ਜਿਸ ਦਾ ਇੰਦਰਾਜ਼ ਹੈ" -#: ../gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:395 msgid "Popup single match" msgstr "ਪੋਪਅੱਪ ਇੱਕਲਾ ਮੇਲ" -#: ../gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:396 msgid "If TRUE, the popup window will appear for a single match." msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਪੋਪਅੱਪ ਵਿੰਡੋ ਇੱਕ ਇੱਕਲੇ ਮੇਲ ਲਈ ਵਿਖਾਈ ਦੇਵੇਗਾ।" -#: ../gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:410 msgid "Inline selection" msgstr "ਇਨ-ਲਾਈਨ ਚੋਣ" -#: ../gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:411 msgid "Your description here" msgstr "ਆਪਣਾ ਵੇਰਵਾ ਇੱਥੇ ਦਿਓ" -#: ../gtk/gtkeventbox.c:93 +#: ../gtk/gtkeventbox.c:109 msgid "Visible Window" msgstr "ਦਿੱਖ ਵਿੰਡੋ" -#: ../gtk/gtkeventbox.c:94 +#: ../gtk/gtkeventbox.c:110 msgid "" "Whether the event box is visible, as opposed to invisible and only used to " "trap events." msgstr "ਕੀ ਘਟਨਾ-ਡੱਬਾ ਦਿੱਸਯੋਗ ਹੋਵੇ, ਇਸ ਦੇ ਉਲਟ ਕਿ ਲੁਕਵਾਂ ਅਤੇ ਸਿਰਫ ਘਟਨਾਵਾਂ ਨੂੰ ਫੜੇ ਹੀ" -#: ../gtk/gtkeventbox.c:100 +#: ../gtk/gtkeventbox.c:116 msgid "Above child" msgstr "ਚਲਾਇਡ ਤੋਂ ਉੱਤੇ" -#: ../gtk/gtkeventbox.c:101 +#: ../gtk/gtkeventbox.c:117 msgid "" "Whether the event-trapping window of the eventbox is above the window of the " "child widget as opposed to below it." msgstr "ਕੀ ਘਟਨਾ-ਡੱਬੇ ਦਾ ਘਟਨਾ ਫੜਨ ਵਾਲੀ ਵਿੰਡੋ ਚਾਲਇਡ ਵਿਦਗਿਟ ਦੇ ਉੱਤੇ ਹੋਵੇ ,ਇਸ ਦੇ ਉਲਟ ਕਿ ਇਸ ਦੇ ਹੇਠਾਂ" -#: ../gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:279 msgid "Expanded" msgstr "ਫੈਲਿਆ" -#: ../gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:280 msgid "Whether the expander has been opened to reveal the child widget" msgstr "ਕੀ ਫੈਲਾਣਵਾਲੇ ਨੂੰ ਚਲਾਇਡ ਵਿਦਗਿਟ ਨੂੰ ਖੋਲ੍ਹਣਾ ਚਾਹੀਦਾ ਹੈ" -#: ../gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:288 msgid "Text of the expander's label" msgstr "ਫੈਲੇ ਲੇਬਲ ਦਾ ਪਾਠ" -#: ../gtk/gtkexpander.c:225 ../gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "ਨਿਸ਼ਾਨਬੰਦੀ ਵਰਤੋਂ" -#: ../gtk/gtkexpander.c:226 ../gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਵਿੱਚ XML ਮਾਰਕਅੱਪ ਹੋਵੇ ਵੇਖੋ pango_parse_markup()" -#: ../gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:312 msgid "Space to put between the label and the child" msgstr "ਲੇਬਲ ਅਤੇ ਚਲਾਇਡ ਵਿੱਚ ਦੇਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkexpander.c:243 ../gtk/gtkframe.c:165 ../gtk/gtktoolbutton.c:216 -#: ../gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:166 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "Label widget" msgstr "ਲੇਬਲ ਵਿਦਗਿਟ" -#: ../gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:322 msgid "A widget to display in place of the usual expander label" msgstr "ਵਿਦਗਿਟ, ਆਮ ਫੈਲਾੳ ਲੇਬਲ ਦੀ ਥਾਂ ਵੇਖਾਉ " -#: ../gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:329 msgid "Label fill" msgstr "ਲੇਬਲ ਭਰੋ" -#: ../gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:330 msgid "Whether the label widget should fill all available horizontal space" msgstr "ਕੀ ਲੇਬਲ ਵਿਦਜੈੱਟ ਸਭ ਉਪਲੱਬਧ ਹਰੀਜੱਟਲ ਥਾਂ ਨੂੰ ਭਰੇ" -#: ../gtk/gtkexpander.c:258 ../gtk/gtktoolitemgroup.c:1606 -#: ../gtk/gtktreeview.c:776 +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1623 +#: ../gtk/gtktreeview.c:1191 msgid "Expander Size" msgstr "ਫੈਲਾ ਦਾ ਅਕਾਰ" -#: ../gtk/gtkexpander.c:259 ../gtk/gtktoolitemgroup.c:1607 -#: ../gtk/gtktreeview.c:777 +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtktreeview.c:1192 msgid "Size of the expander arrow" msgstr "ਫੈਲਾ ਵਾਲੇ ਤੀਰ ਦਾ ਅਕਾਰ" -#: ../gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:346 msgid "Spacing around expander arrow" msgstr "ਫੈਲਾ ਵਾਲੇ ਤੀਰ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਥਾਂ" -#: ../gtk/gtkfilechooserbutton.c:368 +#: ../gtk/gtkfilechooserbutton.c:366 msgid "Dialog" msgstr "ਡਾਈਲਾਗ" -#: ../gtk/gtkfilechooserbutton.c:369 +#: ../gtk/gtkfilechooserbutton.c:367 msgid "The file chooser dialog to use." msgstr "ਵਰਤਣ ਲਈ ਫਾਇਲ ਚੋਣਕਾਰ ਵਰਤੋਂ।" -#: ../gtk/gtkfilechooserbutton.c:400 +#: ../gtk/gtkfilechooserbutton.c:398 msgid "The title of the file chooser dialog." msgstr "ਫਾਇਲ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਦਾ ਨਾਂ ਹੈ।" -#: ../gtk/gtkfilechooserbutton.c:414 +#: ../gtk/gtkfilechooserbutton.c:412 msgid "The desired width of the button widget, in characters." msgstr "ਬਟਨ ਵਿਦਗਿਟ ਦੀ ਲੋੜੀਦੀ ਚੌਰਾਈ ਅੱਖਰਾਂ ਵਿੱਚ ਹੈ।" @@ -2697,19 +3008,19 @@ msgid "" "folders." msgstr "ਕੀ ਖੋਲ੍ਹੋ ਮੋਡ ਵਿੱਚ ਇੱਕ ਫਾਇਲ ਚੋਣਕਾਰ ਲੋੜ ਪੈਣ ਉੱਤੇ ਯੂਜ਼ਰ ਨੂੰ ਨਵੇਂ ਫੋਲਡਰ ਬਣਾਉਣ ਲਈ ਸਹਾਇਕ ਹੋਵੇ।" -#: ../gtk/gtkfixed.c:98 ../gtk/gtklayout.c:605 +#: ../gtk/gtkfixed.c:103 ../gtk/gtklayout.c:633 msgid "X position" msgstr "X ਟਿਕਾਣਾ" -#: ../gtk/gtkfixed.c:99 ../gtk/gtklayout.c:606 +#: ../gtk/gtkfixed.c:104 ../gtk/gtklayout.c:634 msgid "X position of child widget" msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੀ X ਸਥਿਤੀ" -#: ../gtk/gtkfixed.c:108 ../gtk/gtklayout.c:615 +#: ../gtk/gtkfixed.c:111 ../gtk/gtklayout.c:643 msgid "Y position" msgstr "Y ਟਿਕਾਣਾ" -#: ../gtk/gtkfixed.c:109 ../gtk/gtklayout.c:616 +#: ../gtk/gtkfixed.c:112 ../gtk/gtklayout.c:644 msgid "Y position of child widget" msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੀ Y ਸਥਿਤੀ" @@ -2717,7 +3028,7 @@ msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੀ Y ਸਥਿਤੀ" msgid "The title of the font selection dialog" msgstr "ਫੋਂਟ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਦਾ ਟਾਈਟਲ" -#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:220 msgid "Font name" msgstr "ਫੋਂਟ ਨਾਂ" @@ -2761,349 +3072,413 @@ msgstr "ਅਕਾਰ ਵੇਖੋ" msgid "Whether selected font size is shown in the label" msgstr "ਕੀ ਚੁਣੇ ਫੋਂਟ ਅਕਾਰ ਨੂੰ ਲੇਬਲ ਵਿੱਚ ਵੇਖਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:221 msgid "The string that represents this font" msgstr "ਇਸ ਫੋਂਟ ਨੂੰ ਵੇਖਾਉਦੀ ਇੱਕ ਲਾਈਨ" -#: ../gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:227 msgid "Preview text" msgstr "ਟੈਕਸਟ ਝਲਕ" -#: ../gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:228 msgid "The text to display in order to demonstrate the selected font" msgstr "ਚੁਣੇ ਫੋਟਾਂ ਲਈ ਝਲਕ ਵੇਖਾਉਣ ਲਈ ਟੈਕਸਟ" -#: ../gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:132 msgid "Text of the frame's label" msgstr "ਫਰੇਮ ਦੇ ਲੇਬਲ ਦਾ ਸ਼ਬਦ" -#: ../gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:139 msgid "Label xalign" msgstr "ਲੇਬਲ x ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:140 msgid "The horizontal alignment of the label" msgstr "ਲੇਬਲ ਦੀ ਲੇਟਵੀ ਦਿਸ਼ਾ ਵਿੱਚ ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:148 msgid "Label yalign" msgstr "ਲੇਬਲ y ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:149 msgid "The vertical alignment of the label" msgstr "ਲੇਬਲ ਦੀ ਲੰਬਕਾਰੀ ਦਿਸ਼ਾ ਵਿੱਚ ਸਫ਼ਬੰਦੀ" -#: ../gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:157 msgid "Frame shadow" msgstr "ਫਰੇਮ ਛਾਂ" -#: ../gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:158 msgid "Appearance of the frame border" msgstr "ਫਰੇਮ ਦੇ ਹਾਸ਼ੀਏ ਦੀ ਦਿੱਖ" -#: ../gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:167 msgid "A widget to display in place of the usual frame label" msgstr "ਫਾਰਮ ਦੇ ਲੇਬਲ ਲਈ ਥਾਂ ਵੇਖਾਉਣ ਲਈ ਵਿਦਗਿਟ" -#: ../gtk/gtkhandlebox.c:183 +#: ../gtk/gtkgrid.c:1268 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "ਸਤਰਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਤਾਰਾਂ ਵਿਚਕਾਰ" + +#: ../gtk/gtkgrid.c:1275 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "ਕਾਲਮਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਾਲਮਾਂ ਵਿਚਕਾਰ" + +#: ../gtk/gtkgrid.c:1282 +#| msgid "Homogeneous" +msgid "Row Homogeneous" +msgstr "ਕਤਾਰ ਸਮਰੂਪ" + +#: ../gtk/gtkgrid.c:1283 +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the rows are all the same height" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਭ ਕਤਾਰਾਂ ਇੱਕੋ ਉਚਾਈ ਦੀਆਂ ਹੋਣਗੀਆਂ" + +#: ../gtk/gtkgrid.c:1289 +#| msgid "Homogeneous" +msgid "Column Homogeneous" +msgstr "ਕਾਲਮ ਸਮਰੂਪ" + +#: ../gtk/gtkgrid.c:1290 +#| msgid "If TRUE, the table cells are all the same width/height" +msgid "If TRUE, the columns are all the same width" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਭ ਕਾਲਮ ਇੱਕੋ ਉਚਾਈ ਦੇ ਹੋਣਗੇ" + +#: ../gtk/gtkgrid.c:1296 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "ਖੱਬਾ ਨੱਥੀ" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtkmenu.c:689 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "ਚਲਾਇਡ ਨਾਲ ਖੱਬੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਕਾਲਮ ਦਾ ਨੰਬਰ" + +#: ../gtk/gtkgrid.c:1303 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "ਉੱਤੇ ਨੱਥੀ" + +#: ../gtk/gtkgrid.c:1304 +#| msgid "The row number to attach the top of a child widget to" +msgid "The row number to attach the top side of a child widget to" +msgstr "ਕਤਾਰ ਗਿਣਤੀ, ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਉੱਪਰ ਸਿਰੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" + +#: ../gtk/gtkgrid.c:1310 ../gtk/gtklayout.c:659 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "ਚੌੜਾਈ" + +#: ../gtk/gtkgrid.c:1311 +#| msgid "The number of columns in the table" +msgid "The number of columns that a child spans" +msgstr "ਚਲਾਈਡ ਸਪੇਨਸ ਲਈ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkgrid.c:1317 ../gtk/gtklayout.c:668 +msgid "Height" +msgstr "ਉਚਾਈ" + +#: ../gtk/gtkgrid.c:1318 +#| msgid "The number of rows in the table" +msgid "The number of rows that a child spans" +msgstr "ਚਲਾਈਡ ਸਪੇਨਸ ਲਈ ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkhandlebox.c:191 msgid "Appearance of the shadow that surrounds the container" msgstr "ਕੰਨਟੇਨਰ ਦੇ ਦੁਆਲੇ ਛਾਂ ਦੀ ਮੌਜੂਦਗੀ" -#: ../gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:199 msgid "Handle position" msgstr "ਸਥਿਤੀ ਨੂੰ ਵੇਖੋ" -#: ../gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:200 msgid "Position of the handle relative to the child widget" msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਅਨੁਸਾਰ ਸੰਭਾਲਣ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:208 msgid "Snap edge" msgstr "ਕਿਨਾਰੇ ਦਾ ਦਰਿਸ਼" -#: ../gtk/gtkhandlebox.c:201 +#: ../gtk/gtkhandlebox.c:209 msgid "" "Side of the handlebox that's lined up with the docking point to dock the " "handlebox" msgstr "ਹੈਡਲ-ਡੱਬੇ ਦਾ ਪਾਸਾ ਜੋ ਕਿ ਹੈਡਲ-ਡੱਬੇ ਨਾਲ ਡਾਕ ਅਤੇ ਡਾਕ-ਬਿੰਦੂ ਨਾਲ ਕਤਾਰਬੱਧ ਕੀਤਾ ਹੈ" -#: ../gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:217 msgid "Snap edge set" msgstr "ਕਿਨਾਰਾ ਸਮੂਹ ਦਾ ਦਰਿਸ਼" -#: ../gtk/gtkhandlebox.c:210 +#: ../gtk/gtkhandlebox.c:218 msgid "" "Whether to use the value from the snap_edge property or a value derived from " "handle_position" msgstr "ਕੀ ਸਨੈਪ-ਕਿਨਾਰੇ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਤੋਂ ਮੁੱਲ ਵਰਤਣਾ ਹੈ ਜਾਂ ਸਥਿਤੀ ਤੋਂ ਬਣਾਉਣਾ ਹੈ" -#: ../gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:225 msgid "Child Detached" msgstr "ਚਲਾਈਡ ਵੱਖ ਕੀਤਾ" -#: ../gtk/gtkhandlebox.c:218 +#: ../gtk/gtkhandlebox.c:226 msgid "" "A boolean value indicating whether the handlebox's child is attached or " "detached." msgstr "ਬੁਲੀਅਨ ਮੁੱਲ ਵੇਖਾਉਦਾ ਹੈ ਕਿ ਕੀ ਹੈਂਡਲਬਾਕਸ ਦਾ ਚਾਈਲਡ ਅਟੈਚ ਕੀਤਾ ਜਾਂ ਵੱਖ" -#: ../gtk/gtkiconview.c:550 +#: ../gtk/gtkiconview.c:580 msgid "Selection mode" msgstr "ਚੋਣ ਢੰਗ" -#: ../gtk/gtkiconview.c:551 +#: ../gtk/gtkiconview.c:581 msgid "The selection mode" msgstr "ਚੋਣ ਢੰਗ" -#: ../gtk/gtkiconview.c:569 +#: ../gtk/gtkiconview.c:599 msgid "Pixbuf column" msgstr "ਪਿਕਬਫ਼ ਕਾਲਮ" -#: ../gtk/gtkiconview.c:570 +#: ../gtk/gtkiconview.c:600 msgid "Model column used to retrieve the icon pixbuf from" msgstr "ਆਈਕਾਨ ਪਿਕਬਫ਼ ਤੋਂ ਮਾਡਲ ਕਾਲਮ ਵਰਤਣ ਲਈ" -#: ../gtk/gtkiconview.c:588 +#: ../gtk/gtkiconview.c:618 msgid "Model column used to retrieve the text from" msgstr "ਟੈਕਸਟ ਤੋਂ ਪਰਾਪਤ ਕਰਨ ਲਈ ਮਾਡਲ ਕਾਲਮ" -#: ../gtk/gtkiconview.c:607 +#: ../gtk/gtkiconview.c:637 msgid "Markup column" msgstr "ਨਿਸ਼ਾਨਬੰਦੀ ਕਾਲਮ" -#: ../gtk/gtkiconview.c:608 +#: ../gtk/gtkiconview.c:638 msgid "Model column used to retrieve the text if using Pango markup" msgstr "ਜੇਕਰ ਪੈਂਗੋ ਨਿਸ਼ਾਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਮਾਡਲ ਕਾਲਮ ਵਰਤਣ ਲਈ ਪਰਾਪਤ ਪਾਠ" -#: ../gtk/gtkiconview.c:615 +#: ../gtk/gtkiconview.c:645 msgid "Icon View Model" msgstr "ਆਈਕਾਨ ਵੇਖਣ ਮਾਡਲ" -#: ../gtk/gtkiconview.c:616 +#: ../gtk/gtkiconview.c:646 msgid "The model for the icon view" msgstr "ਆਈਕਾਨ ਵੇਖਣ ਲਈ ਮਾਡਲ" -#: ../gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:662 msgid "Number of columns" msgstr "ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:663 msgid "Number of columns to display" msgstr "ਵੇਖਾਉਣ ਲਈ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkiconview.c:650 +#: ../gtk/gtkiconview.c:680 msgid "Width for each item" msgstr "ਹਰੇਕ ਆਈਟਮ ਲਈ ਚੌੜਾਈ" -#: ../gtk/gtkiconview.c:651 +#: ../gtk/gtkiconview.c:681 msgid "The width used for each item" msgstr "ਹਰ ਆਈਟਮ ਲਈ ਵਰਤਨ ਲਈ ਚੌੜਾਈ" -#: ../gtk/gtkiconview.c:667 +#: ../gtk/gtkiconview.c:697 msgid "Space which is inserted between cells of an item" msgstr "ਇੱਕ ਆਈਟਮ ਦੇ ਸੈੱਲਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkiconview.c:682 +#: ../gtk/gtkiconview.c:712 msgid "Row Spacing" msgstr "ਕਤਾਰ ਫਾਸਲਾ" -#: ../gtk/gtkiconview.c:683 +#: ../gtk/gtkiconview.c:713 msgid "Space which is inserted between grid rows" msgstr "ਗਰਿੱਡ ਕਤਾਰਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkiconview.c:698 +#: ../gtk/gtkiconview.c:728 msgid "Column Spacing" msgstr "ਕਾਲਮ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkiconview.c:699 +#: ../gtk/gtkiconview.c:729 msgid "Space which is inserted between grid columns" msgstr "ਖਾਲੀ ਥਾਂ, ਜੋ ਕਿ ਗਰਿੱਡ ਕਾਲਮ ਵਿੱਚ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ" -#: ../gtk/gtkiconview.c:714 +#: ../gtk/gtkiconview.c:744 msgid "Margin" msgstr "ਫਾਸਲਾ" -#: ../gtk/gtkiconview.c:715 +#: ../gtk/gtkiconview.c:745 msgid "Space which is inserted at the edges of the icon view" msgstr "ਆਈਕਾਨ ਝਲਕ ਦੇ ਕਿਨਾਰੇ ਤੇ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkiconview.c:730 +#: ../gtk/gtkiconview.c:760 msgid "Item Orientation" msgstr "ਆਈਟਮ ਸਥਿਤੀ" -#: ../gtk/gtkiconview.c:731 +#: ../gtk/gtkiconview.c:761 msgid "How the text and icon of each item are positioned relative to each other" msgstr "ਇੱਕ ਆਈਕਾਨ ਲਈ ਉਸਦਾ ਟੈਕਸਟ ਅਤੇ ਆਈਕਾਨ ਨੂੰ ਕਿਵੇਂ ਟਿਕਾਇਆ ਜਾਵੇ" -#: ../gtk/gtkiconview.c:747 ../gtk/gtktreeview.c:611 -#: ../gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtkiconview.c:777 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Reorderable" msgstr "ਮੁੜ-ਕਰਮਯੋਗ" -#: ../gtk/gtkiconview.c:748 ../gtk/gtktreeview.c:612 +#: ../gtk/gtkiconview.c:778 ../gtk/gtktreeview.c:1027 msgid "View is reorderable" msgstr "ਮੁੜ-ਕਰਮਯੋਗ ਦੀ ਤਰਾਂ ਵੇਖੋ" -#: ../gtk/gtkiconview.c:755 ../gtk/gtktreeview.c:762 +#: ../gtk/gtkiconview.c:785 ../gtk/gtktreeview.c:1177 msgid "Tooltip Column" msgstr "ਟੂਲ-ਟਿੱਪ ਕਾਲਮ" -#: ../gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:786 msgid "The column in the model containing the tooltip texts for the items" msgstr "ਮਾਡਲ ਦੇ ਕਾਲਮ ਵਿੱਚ , ਜੋ ਕਿ ਆਈਟਮਾਂ ਲਈ ਟੂਲ-ਟਿੱਪ ਲਵੇਗਾ।" -#: ../gtk/gtkiconview.c:773 +#: ../gtk/gtkiconview.c:803 msgid "Item Padding" msgstr "ਆਈਟਮ ਚਿਣੋ" -#: ../gtk/gtkiconview.c:774 +#: ../gtk/gtkiconview.c:804 msgid "Padding around icon view items" msgstr "ਆਈਕਾਨ ਝਲਕ ਆਈਟਮਾਂ ਦੁਆਲੇ ਚਿਣੋ" -#: ../gtk/gtkiconview.c:783 +#: ../gtk/gtkiconview.c:817 msgid "Selection Box Color" msgstr "ਚੋਣ ਬਕਸਾ ਰੰਗ" -#: ../gtk/gtkiconview.c:784 +#: ../gtk/gtkiconview.c:818 msgid "Color of the selection box" msgstr "ਚੋਣ ਬਕਸੇ ਦਾ ਰੰਗ" -#: ../gtk/gtkiconview.c:790 +#: ../gtk/gtkiconview.c:824 msgid "Selection Box Alpha" msgstr "ਚੋਣ ਬਕਸਾ ਐਲਫ਼ਾ" -#: ../gtk/gtkiconview.c:791 +#: ../gtk/gtkiconview.c:825 msgid "Opacity of the selection box" msgstr "ਚੋਣ ਬਕਸੇ ਦਾ ਬਲੌਰੀਪਨ" -#: ../gtk/gtkimage.c:227 ../gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:235 ../gtk/gtkstatusicon.c:204 msgid "Pixbuf" msgstr "ਪਿਕਬਫ" -#: ../gtk/gtkimage.c:228 ../gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:205 msgid "A GdkPixbuf to display" msgstr "ਵੇਖਾਉਣ ਲਈ GdkPixbuf" -#: ../gtk/gtkimage.c:235 ../gtk/gtkrecentmanager.c:290 -#: ../gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:243 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 msgid "Filename" msgstr "ਫਾਇਲ-ਨਾਂ" -#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:244 ../gtk/gtkstatusicon.c:213 msgid "Filename to load and display" msgstr "ਲੋਡ ਕਰਨ ਅਤੇ ਵੇਖਾਉਣ ਲਈ ਫਾਇਲ-ਨਾਂ" -#: ../gtk/gtkimage.c:245 ../gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:253 ../gtk/gtkstatusicon.c:221 msgid "Stock ID for a stock image to display" msgstr "ਸਟਾਕ ਚਿੱਤਰ ਵੇਖਾਉਣ ਲਈ ਸਟਾਕ ID" -#: ../gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:260 msgid "Icon set" msgstr "ਆਈਕਾਨ ਸੈੱਟ" -#: ../gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:261 msgid "Icon set to display" msgstr "ਵੇਖਾਉਣ ਲਈ ਆਈਕਾਨ ਸੈੱਟ" -#: ../gtk/gtkimage.c:260 ../gtk/gtkscalebutton.c:230 ../gtk/gtktoolbar.c:517 -#: ../gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:268 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1031 msgid "Icon size" msgstr "ਆਈਕਾਨ ਆਕਾਰ" -#: ../gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:269 msgid "Symbolic size to use for stock icon, icon set or named icon" msgstr "ਸਟਾਕ ਆਈਕਾਨ, ਆਈਕਾਨ ਸੈਟ ਜਾਂ ਨਾਂ ਆਈਕਾਨ ਲਈ ਲਿੰਕ ਅਕਾਰ" -#: ../gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:285 msgid "Pixel size" msgstr "ਪਿਕਸਲ ਅਕਾਰ" -#: ../gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:286 msgid "Pixel size to use for named icon" msgstr "ਨਾਮੀ ਆਈਕਾਨ ਲਈ ਪਿਕਸਲ ਅਕਾਰ" -#: ../gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:294 msgid "Animation" msgstr "ਸਜੀਵਤਾ" -#: ../gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:295 msgid "GdkPixbufAnimation to display" msgstr "ਵੇਖਾਉਣ ਲਈ GdkPixbufAnimation" -#: ../gtk/gtkimage.c:327 ../gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:335 ../gtk/gtkstatusicon.c:252 msgid "Storage type" msgstr "ਸੰਭਾਲਣ ਦੀ ਕਿਸਮ" -#: ../gtk/gtkimage.c:328 ../gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:336 ../gtk/gtkstatusicon.c:253 msgid "The representation being used for image data" msgstr "ਚਿੱਤਰ ਡੈਟਾ ਲਈ ਪੇਸ਼ਕਾਰੀ" -#: ../gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ, ਮੇਨੂ ਟੈਕਸਟ ਤੋਂ ਅੱਗੇ ਦਿੱਸਣ ਲਈ" -#: ../gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" msgstr "ਸਟਾਕ ਮੇਨੂ ਆਈਟਮ ਬਣਾਉਣ ਲਈ ਕੀ ਲੇਬਲ ਟੈਕਸਟ ਵਰਤਣਾ ਹੈ" -#: ../gtk/gtkimagemenuitem.c:187 ../gtk/gtkmenu.c:540 +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:531 msgid "Accel Group" msgstr "ਅਸੈੱਲ ਗਰੁੱਪ" -#: ../gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚਾਂ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਅਸੈੱਲ ਗਰੁੱਪ" -#: ../gtk/gtkimagemenuitem.c:193 -msgid "Show menu images" -msgstr "ਮੇਨੂ ਚਿੱਤਰ ਵੇਖੋ" - -#: ../gtk/gtkimagemenuitem.c:194 -msgid "Whether images should be shown in menus" -msgstr "ਕੀ ਮੇਨੂ ਵਿੱਚ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" - -#: ../gtk/gtkinfobar.c:375 ../gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 msgid "Message Type" msgstr "ਸੁਨੇਹਾ ਕਿਸਮ" -#: ../gtk/gtkinfobar.c:376 ../gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 msgid "The type of message" msgstr "ਸੁਨੇਹੇ ਦੀ ਕਿਸਮ" -#: ../gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "ਸਮੱਗਰੀ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "ਖੇਤਰ ਦੇ ਐਲੀਮੈਂਟ ਵਿੱਚ ਥਾਂ" -#: ../gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "ਕਾਰਵਾਈ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" #: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 -#: ../gtk/gtkstatusicon.c:279 ../gtk/gtkwindow.c:728 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:540 +#: ../gtk/gtkwindow.c:729 msgid "Screen" msgstr "ਸਕਰੀਨ" -#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:729 +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 msgid "The screen where this window will be displayed" msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਕਿ ਵਿੰਡੋ ਵੇਖਾਈ ਜਾਵੇਗੀ" -#: ../gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "ਲੇਬਲ ਦੇ ਸ਼ਬਦ" -#: ../gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਸਟਾਇਲ ਗੁਣਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtklabel.c:578 ../gtk/gtktexttag.c:335 ../gtk/gtktextview.c:685 +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:337 ../gtk/gtktextview.c:702 msgid "Justification" msgstr "ਤਰਕਸੰਗਤ ਕਰੋ" -#: ../gtk/gtklabel.c:579 +#: ../gtk/gtklabel.c:597 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 " @@ -3112,389 +3487,323 @@ msgstr "" "ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਦੀਆਂ ਸਤਰਾਂ ਦੀ ਇੱਕ-ਦੂਰਦੇ ਪ੍ਰਤੀ ਸ਼ਫ਼ਬੰਦੀ ਇਹ ਲੇਬਲ ਦੀ ਉਪਲੱਬਧ ਸਥਿਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ " "ਨਹੀਂ ਕਰਦੀ ਹੈ। ਇਸ ਦੇ ਲਈGtkMisc::xalign ਨੂੰ ਵੇਖੋ।" -#: ../gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "ਪੈਟਰਨ" -#: ../gtk/gtklabel.c:588 +#: ../gtk/gtklabel.c:606 msgid "" "A string with _ characters in positions correspond to characters in the text " "to underline" msgstr "ਕੀ ਸਤਰਾਂ _ ਅੱਖਰਾਂ ਨਾਲ ਜਿੱਥੇ ਕਿ ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ ਹੈ, ਨੂੰ ਸ਼ਬਦਾਂ ਨੂੰ ਹੇਠਾਂ ਲਾਈਨ ਲਾ ਦੇਵੇ" -#: ../gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "ਲਾਈਨ ਸਮੇਟੋ" -#: ../gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "ਜੇ ਦਿੱਤਾ ਤਾਂ, ਲਾਈਨਾਂ ਨੂੰ ਲੇਪਟਿਆ ਜਾਵੇਗਾ ਜੇਕਰ ਟੈਕਸਟ ਜਿਆਦਾ ਹੀ ਚੌੜਾ ਹੋ ਗਿਆ" -#: ../gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "ਲਾਈਨ ਲਪੇਟਣ ਮੋਡ" -#: ../gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" msgstr "ਜੇਕਰ ਲਪੇਟਣਾ ਸੈੱਟ ਹੋਵੇ ਤਾਂ ਲਾਈਨ-ਲਪੇਟਣ ਬਾਰੇ ਕੰਟਰੋਲ ਹੋਇਆ" -#: ../gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "ਚੋਣ-ਯੋਗ" -#: ../gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "ਕੀ ਲੇਬਲ ਦੇ ਸ਼ਬਦ ਮਾਊਸ ਨਾਲ ਚੁਣੇ ਜਾ ਸਕਣ" -#: ../gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "ਮਨਾਮੈਰਿਕ ਕੀ" -#: ../gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "ਇਸ ਲੇਬਲ ਲਈ ਮਨਾਮੈਰਿਕ -ਤੇਜ਼-ਕੀ" -#: ../gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "ਮਨਾਮੈਰਿਕ ਵਿਦਗਿਟ" -#: ../gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" msgstr "ਵਿਦਗਿਟ ਸਰਗਰਮ ਹੋ ਜਾਵੇ ਜਦੋਂ ਕਿ ਲੇਬਲ ਦੀ ਅੰਕੀ ਕੀ ਦਬਾਈ ਜਾਵੇ" -#: ../gtk/gtklabel.c:682 +#: ../gtk/gtklabel.c:700 msgid "" "The preferred place to ellipsize the string, if the label does not have " "enough room to display the entire string" msgstr "ਅੰਡਾਕਾਰ ਸਤਰ ਲਈ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਲੇਬਲ ਕੋਲ ਲੋੜੀਂਦੀ ਸਤਰ ਵੇਖਾਉਣ ਲਈ ਪੂਰੀ ਥਾਂ ਨਾ ਹੋਵੇ" -#: ../gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "ਇੱਕਲੀ ਲਾਈਨ ਮੋਡ" -#: ../gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "ਕੀ ਲੇਬਲ ਇੱਕ ਇੱਕਲੇ ਲਾਈਨ ਮੋਡ ਵਿੱਚ ਹੋਵੇ" -#: ../gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "ਕੋਣ" -#: ../gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "ਕੋਣ, ਜਿਸ ਉੱਤੇ ਲੇਬਲ ਨੂੰ ਘੁੰਮਾਉਣਾ ਹੈ" -#: ../gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "ਲੇਬਲ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਲੋੜੀਦੀ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "ਖੋਲ੍ਹੋ ਲਿੰਕ ਵੇਖੋ" -#: ../gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "ਕੀ ਖੋਲ੍ਹੇ ਗਏ ਟਰੈਕਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨਾ ਹੈ" -#: ../gtk/gtklabel.c:904 -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "ਕੀ ਚੁਣਨਯੋਗ ਲੇਬਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੀ ਜਾਵੇ, ਜਦੋਂ ਇਹ ਫੋਕਸ ਹੋਵੇ" - -#: ../gtk/gtklayout.c:625 ../gtk/gtkviewport.c:142 -msgid "Horizontal adjustment" -msgstr "ਲੇਟਵਾਂ ਅਡਜੱਸਟਮੈਂਟ" - -#: ../gtk/gtklayout.c:626 ../gtk/gtkscrolledwindow.c:244 -msgid "The GtkAdjustment for the horizontal position" -msgstr "ਲੇਟਵੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" - -#: ../gtk/gtklayout.c:633 ../gtk/gtkviewport.c:150 -msgid "Vertical adjustment" -msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ" - -#: ../gtk/gtklayout.c:634 ../gtk/gtkscrolledwindow.c:251 -msgid "The GtkAdjustment for the vertical position" -msgstr "ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" - -#: ../gtk/gtklayout.c:641 ../gtk/gtktreeviewcolumn.c:211 -msgid "Width" -msgstr "ਚੌੜਾਈ" - -#: ../gtk/gtklayout.c:642 +#: ../gtk/gtklayout.c:660 msgid "The width of the layout" msgstr "ਲੇਆਉਟ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtklayout.c:650 -msgid "Height" -msgstr "ਉਚਾਈ" - -#: ../gtk/gtklayout.c:651 +#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "ਲੇਆਉਟ ਦੀ ਉਚਾਈ" -#: ../gtk/gtklinkbutton.c:162 +#: ../gtk/gtklinkbutton.c:173 msgid "URI" msgstr "URI" -#: ../gtk/gtklinkbutton.c:163 +#: ../gtk/gtklinkbutton.c:174 msgid "The URI bound to this button" msgstr "ਇਸ ਬਟਨ ਲਈ URI ਬਾਊਂਡ" -#: ../gtk/gtklinkbutton.c:177 +#: ../gtk/gtklinkbutton.c:188 msgid "Visited" msgstr "ਖੋਲ੍ਹੇ ਗਏ" -#: ../gtk/gtklinkbutton.c:178 +#: ../gtk/gtklinkbutton.c:189 msgid "Whether this link has been visited." msgstr "ਕੀ ਇਹ ਲਿੰਕ ਪਹਿਲਾਂ ਖੋਲ੍ਹਿਆ ਗਿਆ ਹੈ।" -#: ../gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:170 msgid "Pack direction" msgstr "ਪੈਕ ਦਿਸ਼ਾ" -#: ../gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:171 msgid "The pack direction of the menubar" msgstr "ਮੇਨੂ-ਪੱਟੀ ਵਿੱਚ ਪੈਕ ਦੀ ਦਿਸ਼ਾ" -#: ../gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:187 msgid "Child Pack direction" msgstr "ਚਾਈਲਡ ਪੈਕ ਦਿਸ਼ਾ" -#: ../gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:188 msgid "The child pack direction of the menubar" msgstr "ਮੇਨ-ਪੱਟੀ ਦੀ ਚਾਈਲਡ ਪੈਕ ਦਿਸ਼ਾ" -#: ../gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:197 msgid "Style of bevel around the menubar" msgstr "ਮੇਨੂ-ਬਾਰ ਦੇ ਦੁਆਲੇ ਬੀਵਲ ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtkmenubar.c:197 ../gtk/gtktoolbar.c:567 +#: ../gtk/gtkmenubar.c:204 ../gtk/gtktoolbar.c:568 msgid "Internal padding" msgstr "ਅੰਦਰੂਨੀ ਚਿਣਾਈ" -#: ../gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:205 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "ਹਾਸ਼ੀਏ ਦੀ ਥਾਂ ਦਾ ਅਕਾਰ ਮੇਨੂ-ਬਾਰ ਦੇ ਪਰਛਾਵੇ ਅਤੇ ਮੇਨੂ ਚੀਜਾਂ ਦੇ ਵਿੱਚਕਾਰ" -#: ../gtk/gtkmenubar.c:205 -msgid "Delay before drop down menus appear" -msgstr "ਲਟਕਦੇ ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" - -#: ../gtk/gtkmenubar.c:206 -msgid "Delay before the submenus of a menu bar appear" -msgstr "ਮੇਨੂ-ਬਾਰ ਦੀ ਸਬ-ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" - -#: ../gtk/gtkmenu.c:526 +#: ../gtk/gtkmenu.c:517 msgid "The currently selected menu item" msgstr "ਮੌਜੂਦਾ ਚੁਣੀ ਮੇਨੂ ਆਈਟਮ ਹੈ।" -#: ../gtk/gtkmenu.c:541 +#: ../gtk/gtkmenu.c:532 msgid "The accel group holding accelerators for the menu" msgstr "ਮੇਨੂ ਲਈ ਅਸੈੱਲ ਗਰੁੱਪ ਰੱਖਣ ਵਾਲੇ ਐਕਸਰਲੇਟਰ" -#: ../gtk/gtkmenu.c:555 ../gtk/gtkmenuitem.c:318 +#: ../gtk/gtkmenu.c:546 ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "ਅਸੈੱਲ ਪਾਥ" -#: ../gtk/gtkmenu.c:556 +#: ../gtk/gtkmenu.c:547 msgid "An accel path used to conveniently construct accel paths of child items" msgstr "ਅਸੈੱਲ ਪਾਥ, ਜੋ ਕਿ ਚਾਈਲਡ ਆਈਟਮਾਂ ਦਾ ਅਸੈਲ ਪਾਥ ਬਣਾਉਣ ਲਈ ਸੌਖਾ ਹੋਵੇ" -#: ../gtk/gtkmenu.c:572 +#: ../gtk/gtkmenu.c:563 msgid "Attach Widget" msgstr "ਵਿਡਜੈੱਟ ਨੱਥੀ" -#: ../gtk/gtkmenu.c:573 +#: ../gtk/gtkmenu.c:564 msgid "The widget the menu is attached to" msgstr "ਨੱਥੀ ਕਰਨ ਲਈ ਵਿਡਜੈੱਟ ਮੇਨੂ" -#: ../gtk/gtkmenu.c:581 +#: ../gtk/gtkmenu.c:572 msgid "" "A title that may be displayed by the window manager when this menu is torn-" "off" msgstr "ਜਦੋਂ ਲਿਸਟ ਨੂੰ ਹਟਾਇਆ ਜਾਵੇ ਤਾਂ ਵਿੰਡੋ ਮੈਨੇਜਰ ਦਾ ਉਪਲੱਬਧ ਟਾਇਟਲ, ਜੋ ਕਿ ਦਿੱਸ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkmenu.c:595 +#: ../gtk/gtkmenu.c:586 msgid "Tearoff State" msgstr "ਵੱਖ ਹਾਲਤ" -#: ../gtk/gtkmenu.c:596 +#: ../gtk/gtkmenu.c:587 msgid "A boolean that indicates whether the menu is torn-off" msgstr "ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ, ਜੋ ਕਿ ਮੇਨੂ ਨੂੰ ਵੱਖ ਹੋਣਯੋਗ ਬਣਾਉਦਾ ਹੈ" -#: ../gtk/gtkmenu.c:610 +#: ../gtk/gtkmenu.c:601 msgid "Monitor" msgstr "ਮਾਨੀਟਰ" -#: ../gtk/gtkmenu.c:611 +#: ../gtk/gtkmenu.c:602 msgid "The monitor the menu will be popped up on" msgstr "ਮੇਨੂ ਨਿਗਾਰਨ ਖੁੱਲ੍ਹੇਗਾ" -#: ../gtk/gtkmenu.c:617 +#: ../gtk/gtkmenu.c:608 msgid "Vertical Padding" msgstr "ਲੰਬਕਾਰੀ ਚਿਣੋ" -#: ../gtk/gtkmenu.c:618 +#: ../gtk/gtkmenu.c:609 msgid "Extra space at the top and bottom of the menu" msgstr "ਮੇਨੂ ਦੇ ਉੱਤੇ ਅਤੇ ਹੇਠਾਂ ਵਾਧੂ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkmenu.c:640 +#: ../gtk/gtkmenu.c:631 msgid "Reserve Toggle Size" msgstr "ਉਲਟ ਟਾਗਲ ਆਕਾਰ" -#: ../gtk/gtkmenu.c:641 +#: ../gtk/gtkmenu.c:632 msgid "" "A boolean that indicates whether the menu reserves space for toggles and " "icons" msgstr "ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ, ਜੋ ਕਿ ਮੇਨੂ ਨੂੰ ਟਾਗਲ ਅਤੇ ਆਈਕਾਨ ਲਈ ਮੇਨੂ ਉਲਟ ਥਾਂ ਰੱਖੇ।" -#: ../gtk/gtkmenu.c:647 +#: ../gtk/gtkmenu.c:638 msgid "Horizontal Padding" msgstr "ਖਿਤਿਜੀ ਚਿਣੋ" -#: ../gtk/gtkmenu.c:648 +#: ../gtk/gtkmenu.c:639 msgid "Extra space at the left and right edges of the menu" msgstr "ਮੇਨੂ ਦੇ ਉੱਪਰਲੇ ਅਤੇ ਹੇਠਲੇ ਕਿਨਾਰੇ ਉੱਤੇ ਵਾਧੂ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkmenu.c:656 +#: ../gtk/gtkmenu.c:647 msgid "Vertical Offset" msgstr "ਲੰਬਕਾਰੀ ਆਫਸੈੱਟ" -#: ../gtk/gtkmenu.c:657 +#: ../gtk/gtkmenu.c:648 msgid "" "When the menu is a submenu, position it this number of pixels offset " "vertically" msgstr "ਜਦੋਂ ਮੇਨੂ ਵਿੱਚ ਸਬ-ਮੇਨੂ ਹੋਵੇ ਤਾਂ, ਇਸ ਨੂੰ ਇੰਨੇ ਪਿਕਸਿਲ ਲੰਬਕਾਰ ਦਿਸ਼ਾ ਵਿੱਚ ਸੰਤੁਲਿਤ ਕਰੋ" -#: ../gtk/gtkmenu.c:665 +#: ../gtk/gtkmenu.c:656 msgid "Horizontal Offset" msgstr "ਲੇਟਵੀ ਆਫਸੈੱਟ" -#: ../gtk/gtkmenu.c:666 +#: ../gtk/gtkmenu.c:657 msgid "" "When the menu is a submenu, position it this number of pixels offset " "horizontally" msgstr "ਜਦੋਂ ਮੇਨੂ ਵਿੱਚ ਸਬ-ਮੇਨੂ ਹੋਵੇ ਤਾਂ, ਇਸ ਨੂੰ ਇੰਨੇ ਪਿਕਸਿਲ ਲੇਟਵੀ ਦਿਸ਼ਾ ਸੰਤੁਲਿਤ ਕਰੋ" -#: ../gtk/gtkmenu.c:674 +#: ../gtk/gtkmenu.c:665 msgid "Double Arrows" msgstr "ਦੋਹਰੇ ਤੀਰ" -#: ../gtk/gtkmenu.c:675 +#: ../gtk/gtkmenu.c:666 msgid "When scrolling, always show both arrows." msgstr "ਸਕਰੋਲ ਕਰਨ ਦੌਰਾਨ, ਹਮੇਸ਼ਾ ਦੋਵੇਂ ਤੀਰ ਵੇਖਾਓ।" -#: ../gtk/gtkmenu.c:688 +#: ../gtk/gtkmenu.c:679 msgid "Arrow Placement" msgstr "ਤੀਰ ਥਾਂ" -#: ../gtk/gtkmenu.c:689 +#: ../gtk/gtkmenu.c:680 msgid "Indicates where scroll arrows should be placed" msgstr "ਵੇਖਾਉਦਾ ਹੈ ਕਿ ਕਿੱਥੇ ਸਕਰੋਲ ਤੀਰ ਰੱਖੇ ਜਾਣਗੇ" -#: ../gtk/gtkmenu.c:697 +#: ../gtk/gtkmenu.c:688 msgid "Left Attach" msgstr "ਖੱਬਾ ਜੋੜੋ" -#: ../gtk/gtkmenu.c:698 ../gtk/gtktable.c:193 -msgid "The column number to attach the left side of the child to" -msgstr "ਚਲਾਇਡ ਨਾਲ ਖੱਬੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਕਾਲਮ ਦਾ ਨੰਬਰ" - -#: ../gtk/gtkmenu.c:705 +#: ../gtk/gtkmenu.c:696 msgid "Right Attach" msgstr "ਸੱਜੇ ਜੋੜੋ" -#: ../gtk/gtkmenu.c:706 +#: ../gtk/gtkmenu.c:697 msgid "The column number to attach the right side of the child to" msgstr "ਚਲਾਇਡ ਨਾਲ ਸੱਜੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਕਾਲਮ ਦਾ ਨੰਬਰ" -#: ../gtk/gtkmenu.c:713 +#: ../gtk/gtkmenu.c:704 msgid "Top Attach" msgstr "ਉੱਤੇ ਜੋੜੋ" -#: ../gtk/gtkmenu.c:714 +#: ../gtk/gtkmenu.c:705 msgid "The row number to attach the top of the child to" msgstr "ਚਲਾਇਡ ਨਾਲ ਉਪਰਲੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਸਤਰ ਦਾ ਨੰਬਰ" -#: ../gtk/gtkmenu.c:721 +#: ../gtk/gtkmenu.c:712 msgid "Bottom Attach" msgstr "ਹੇਠਾਂ ਜੋੜੋ" -#: ../gtk/gtkmenu.c:722 ../gtk/gtktable.c:214 +#: ../gtk/gtkmenu.c:713 ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "ਚਲਾਇਡ ਨਾਲ ਹੇਠਲੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਸਤਰ ਦਾ ਨੰਬਰ" -#: ../gtk/gtkmenu.c:736 +#: ../gtk/gtkmenu.c:727 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "ਸਕਰੋਲ ਤੀਰ ਦਾ ਸਾਈਜ਼ ਘਟਾਉਣ ਲਈ ਸਥਿਰ ਅੰਕ" -#: ../gtk/gtkmenu.c:823 -msgid "Can change accelerators" -msgstr "ਐਕਸਲੇਟਰ ਬਦਲ ਸਕਦੇ ਹਨ" - -#: ../gtk/gtkmenu.c:824 -msgid "Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "ਕੀ ਮੇਨੂ-ਤੇਜ਼ ਲਿਸਟ ਉੱਤੇ ਇੱਕ ਕੀ ਦਬਾਉਣ ਨਾਲ ਤਬਦੀਲ ਹੋ ਜਾਣ" - -#: ../gtk/gtkmenu.c:829 -msgid "Delay before submenus appear" -msgstr "ਸਬ-ਮੇਨੂ ਦੇ ਉਭੱਰਨ ਵਿੱਚ ਦੇਰੀ" - -#: ../gtk/gtkmenu.c:830 -msgid "Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "ਘੱਟੋ-ਘੱਟ ਸਮਾਂ, ਜਿਸ ਲਈ ਸਬ-ਮੇਨੂ ਦੇ ਖੁੱਲਣ ਤੋਂ ਪਹਿਲਾਂ ਸੰਕੇਤਕ ਮੇਨੂ ਆਈਟਮ ਉੱਤੇ ਹੀ ਰਹੇ" - -#: ../gtk/gtkmenu.c:837 -msgid "Delay before hiding a submenu" -msgstr "ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਵਿੱਚ ਦੇਰੀ" - -#: ../gtk/gtkmenu.c:838 -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "ਸਮਾਂ ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ, ਜਦੋਂ ਕਿ ਸੰਕੇਤਕ ਸਬ-ਮੇਨੂ ਵੱਲ ਆ ਰਿਹਾ ਹੋਵੇ" - -#: ../gtk/gtkmenuitem.c:285 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "ਸੱਜੇ ਇਕਸਾਰ" -#: ../gtk/gtkmenuitem.c:286 +#: ../gtk/gtkmenuitem.c:282 msgid "Sets whether the menu item appears justified at the right side of a menu bar" msgstr "ਮੇਨ ਬਾਰੇ ਦੇ ਸੱਜੇ ਕੋਨੇ ਉੱਤੇ ਮੇਨੂ ਆਈਟਮ ਵੇਖਾਉਣ ਲਈ ਸੈੱਟ ਕਰੇਗਾ" -#: ../gtk/gtkmenuitem.c:300 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "ਸਬ-ਮੇਨੂ" -#: ../gtk/gtkmenuitem.c:301 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "ਮੇਨ ਆਈਟਮ ਨਾਲ ਜੁੜਿਆ ਸਬ-ਮੇਨੂ, ਜਾਂ ਕੁਝ ਨਾ ਹੋਣ ਦੇ ਰੂਪ ਵਿੱਚ NULL" -#: ../gtk/gtkmenuitem.c:319 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "ਮੇਨੂ ਆਈਟਮ ਦਾ ਐਕਸਰਲੇਸ਼ਨ ਪਾਥ ਸੈੱਟ ਕਰਦਾ ਹੈ" -#: ../gtk/gtkmenuitem.c:334 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "ਚਾਈਲਡ ਲੇਬਲ ਲਈ ਟੈਕਸਟ" -#: ../gtk/gtkmenuitem.c:397 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" msgstr "ਤੀਰ ਵਲੋਂ ਮੇਨੂ ਆਈਟਮ ਦੇ ਫੋਂਟ ਸਾਈਜ਼ ਮੁਤਾਬਕ ਵਰਤੀ ਥਾਂ ਦੀ ਮਾਤਰਾ" -#: ../gtk/gtkmenuitem.c:410 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" -#: ../gtk/gtkmenuitem.c:411 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਮੇਨੂ ਆਈਟਮਾਂਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਲੋੜੀਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:363 msgid "Take Focus" msgstr "ਫੋਕਸ ਲਵੋ" -#: ../gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:364 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "ਇੱਕ ਬੁਲੀਅਨ, ਜੋ ਕਿ ਮੇਨੂ-ਪੱਟੀ ਵਿੱਚ ਕੀ-ਬੋਰਡ ਫੋਕਸ ਲਵੇ" @@ -3506,63 +3815,63 @@ msgstr "ਮੇਨੂ" msgid "The dropdown menu" msgstr "ਲਕਟਦਾ ਮੇਨੂ" -#: ../gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:185 msgid "Image/label border" msgstr "ਚਿੱਤਰ/ਲੇਬਲ ਦਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:186 msgid "Width of border around the label and image in the message dialog" msgstr "ਸੁਨੇਹਾ ਤਖਤੀ ਵਿੱਚ ਲੇਬਲ ਅਤੇ ਚਿੱਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦਾ ਚੌੜਾਈ" -#: ../gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:210 msgid "Message Buttons" msgstr "ਸੁਨੇਹਾ ਬਟਨ" -#: ../gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:211 msgid "The buttons shown in the message dialog" msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਵਿੱਚ ਬਟਨ ਵੇਖਾਓ" -#: ../gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:228 msgid "The primary text of the message dialog" msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਲਈ ਮੁੱਢਲਾ ਪਾਠ" -#: ../gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:243 msgid "Use Markup" msgstr "ਮਾਰਕਅੱਪ ਵਰਤੋਂ" -#: ../gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:244 msgid "The primary text of the title includes Pango markup." msgstr "ਪੈਂਗੋ ਨਿਸ਼ਾਨਬੱਧ ਸਮੇਤ ਟਾਈਟਲ ਦਾ ਮੁੱਢਲਾ ਟੈਕਸਟ ਹੈ।" -#: ../gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:258 msgid "Secondary Text" msgstr "ਸੈਕੰਡਰੀ ਪਾਠ" -#: ../gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:259 msgid "The secondary text of the message dialog" msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਦਾ ਸੈਕੰਡਰੀ ਪਾਠ" -#: ../gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:274 msgid "Use Markup in secondary" msgstr "ਸੈਕੰਡਰੀ ਵਿੱਚ ਨਿਸ਼ਾਨਬੱਧ ਵਰਤੋਂ" -#: ../gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:275 msgid "The secondary text includes Pango markup." msgstr "ਪੈਂਗੋ ਨਿਸ਼ਾਨਬੱਧ ਸਮੇਤ ਸੈਕੰਡਰੀ ਟੈਕਸਟ ਹੈ।" -#: ../gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:289 msgid "Image" msgstr "ਚਿੱਤਰ" -#: ../gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:290 msgid "The image" msgstr "ਚਿੱਤਰ" -#: ../gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:306 msgid "Message area" msgstr "ਸੁਨੇਹਾ ਖੇਤਰ" -#: ../gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:307 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox ਜੋ ਕਿ ਡਾਈਲਾਗ ਦੇ ਪ੍ਰਾਇਮਰੀ ਤੇ ਸੈਕੰਡਰੀ ਲੇਬਲ ਰੱਖਦਾ ਹੈ" @@ -3610,51 +3919,51 @@ msgstr "ਕੀ ਅਸੀਂ ਡਾਈਲਾਗ ਵੇਖਾ ਰਹੇ ਹਨ" msgid "The screen where this window will be displayed." msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਇਹ ਵਿੰਡੋ ਵੇਖਾਈ ਜਾਵੇਗੀ।" -#: ../gtk/gtknotebook.c:648 +#: ../gtk/gtknotebook.c:685 msgid "Page" msgstr "ਸਫ਼ਾ" -#: ../gtk/gtknotebook.c:649 +#: ../gtk/gtknotebook.c:686 msgid "The index of the current page" msgstr "ਮੌਜੂਦਾ ਸਫ਼ੇ ਦਾ ਇੰਡੈਕਸ" -#: ../gtk/gtknotebook.c:657 +#: ../gtk/gtknotebook.c:694 msgid "Tab Position" msgstr "ਟੈਬ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtknotebook.c:658 +#: ../gtk/gtknotebook.c:695 msgid "Which side of the notebook holds the tabs" msgstr "ਨੋਟਬੁੱਕ ਦੇ ਕਿਹੜੇ ਪਾਸੇ ਟੈਬਾਂ ਨੂੰ ਸੰਭਾਲਿਆ ਜਾਵੇ" -#: ../gtk/gtknotebook.c:665 +#: ../gtk/gtknotebook.c:702 msgid "Show Tabs" msgstr "ਟੈਬਾਂ ਵੇਖਾਓ" -#: ../gtk/gtknotebook.c:666 +#: ../gtk/gtknotebook.c:703 msgid "Whether tabs should be shown" msgstr "ਕੀ ਟੈਬ ਵੇਖਣੀਆਂ ਹਨ" -#: ../gtk/gtknotebook.c:672 +#: ../gtk/gtknotebook.c:709 msgid "Show Border" msgstr "ਹਾਸ਼ੀਆ ਵੇਖਾਓ" -#: ../gtk/gtknotebook.c:673 +#: ../gtk/gtknotebook.c:710 msgid "Whether the border should be shown" msgstr "ਕੀ ਬਾਰਡਰ ਵੇਖਣਾ ਹੈ" -#: ../gtk/gtknotebook.c:679 +#: ../gtk/gtknotebook.c:716 msgid "Scrollable" msgstr "ਸਲਰੋਲ-ਵੋਗ" -#: ../gtk/gtknotebook.c:680 +#: ../gtk/gtknotebook.c:717 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਕਰੋਲ ਤੀਰ ਜੋੜੇ ਜਾਣਗੇ ਜੇਕਰ ਜਿਆਦਾ ਟੈਬਾਂ ਆ ਗਈਆ" -#: ../gtk/gtknotebook.c:686 +#: ../gtk/gtknotebook.c:723 msgid "Enable Popup" msgstr "ਉਭਾਰਨ ਨੂੰ ਚਾਲੂ ਕਰੋ" -#: ../gtk/gtknotebook.c:687 +#: ../gtk/gtknotebook.c:724 msgid "" "If TRUE, pressing the right mouse button on the notebook pops up a menu that " "you can use to go to a page" @@ -3662,124 +3971,120 @@ msgstr "" "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਨੋਟ-ਬੁੱਕ ਤੇ ਮਾਊਸ ਦਾ ਸੱਜਾ ਬਟਨ ਦਬਾਉਣ ਨਾਲ ਮੇਨੂ ਆ ਜਾਵੇਗੀ, ਜੋ ਕਿ ਤੁਸੀਂ ਸਫੇ ਤੇ ਜਾਣ " "ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ " -#: ../gtk/gtknotebook.c:701 +#: ../gtk/gtknotebook.c:738 msgid "Group Name" msgstr "ਗਰੁੱਪ ਨਾਂ" -#: ../gtk/gtknotebook.c:702 +#: ../gtk/gtknotebook.c:739 msgid "Group name for tab drag and drop" msgstr "ਟੈਬ ਚੁੱਕਣ ਅਤੇ ਸੁੱਟਣ ਲਈ ਗਰੁੱਪ ਨਾਂ" -#: ../gtk/gtknotebook.c:709 +#: ../gtk/gtknotebook.c:746 msgid "Tab label" msgstr "ਟੈਬ ਲੇਬਲ" -#: ../gtk/gtknotebook.c:710 +#: ../gtk/gtknotebook.c:747 msgid "The string displayed on the child's tab label" msgstr "ਚਾਈਲਡ ਦੇ ਟੈਬ ਲੇਬਲ ਉੱਤੇ ਸਤਰ ਵਿਖਾਈ ਜਾਵੇ" -#: ../gtk/gtknotebook.c:716 +#: ../gtk/gtknotebook.c:753 msgid "Menu label" msgstr "ਮੇਨੂ ਲੇਬਲ" -#: ../gtk/gtknotebook.c:717 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed in the child's menu entry" msgstr "ਚਾਈਲਡ ਦੀ ਮੇਨੂ ਇੰਦਰਾਜ਼ ਵਿੱਚ ਸਤਰ ਵੇਖਾਓ" -#: ../gtk/gtknotebook.c:730 +#: ../gtk/gtknotebook.c:767 msgid "Tab expand" msgstr "ਟੈਬ ਫੈਲਾਓ" -#: ../gtk/gtknotebook.c:731 +#: ../gtk/gtknotebook.c:768 msgid "Whether to expand the child's tab" msgstr "ਕੀ ਚਲਾਇਡ ਟੈਬ ਨੂੰ ਫੈਲਾਉਣਾ ਹੈ" -#: ../gtk/gtknotebook.c:737 +#: ../gtk/gtknotebook.c:774 msgid "Tab fill" msgstr "ਟੈਬ ਭਰੋ" -#: ../gtk/gtknotebook.c:738 +#: ../gtk/gtknotebook.c:775 msgid "Whether the child's tab should fill the allocated area" msgstr "ਕੀ ਚਾਈਲਡ ਦੀ ਟੈਬ ਨੂੰ ਦਿੱਤੇ ਖੇਤਰ ਨੂੰ ਭਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇ" -#: ../gtk/gtknotebook.c:751 -msgid "Tab pack type" -msgstr "ਟੈਬ ਪੈਕ ਕਿਸਮ" - -#: ../gtk/gtknotebook.c:758 +#: ../gtk/gtknotebook.c:782 msgid "Tab reorderable" msgstr "ਟੈਬ ਮੁੜ-ਕ੍ਰਮਯੋਗ" -#: ../gtk/gtknotebook.c:759 +#: ../gtk/gtknotebook.c:783 msgid "Whether the tab is reorderable by user action" msgstr "ਕੀ ਟੈਬ ਯੂਜ਼ਰ ਕਾਰਵਾਈ ਰਾਹੀਂ ਮੁੜ-ਕ੍ਰਮਬੱਧ ਹੋਣ ਯੋਗ ਹੋਵੇ" -#: ../gtk/gtknotebook.c:765 +#: ../gtk/gtknotebook.c:789 msgid "Tab detachable" msgstr "ਟੈਬ ਵੱਖ ਹੋਣ ਯੋਗ" -#: ../gtk/gtknotebook.c:766 +#: ../gtk/gtknotebook.c:790 msgid "Whether the tab is detachable" msgstr "ਕੀ ਟੈਬ ਵੱਖ ਹੋਣ ਹੋਵੇ" -#: ../gtk/gtknotebook.c:781 ../gtk/gtkscrollbar.c:80 +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "ਸੈਕੰਡਰੀ ਪਿੱਛੇਵੱਲ ਜਾਣਵਾਲਾ" -#: ../gtk/gtknotebook.c:782 +#: ../gtk/gtknotebook.c:806 msgid "Display a second backward arrow button on the opposite end of the tab area" msgstr "ਟੈਬ ਖੇਤਰ ਦੇ ਵਿਰੋਧੀ ਸਿਰੇ ਤੇ ਦੂਜਾ ਪਿੱਛੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਓ" -#: ../gtk/gtknotebook.c:797 ../gtk/gtkscrollbar.c:87 +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "ਸੈਕੰਡਰੀ ਅੱਗੇਵੱਲ ਜਾਣਵਾਲਾ" -#: ../gtk/gtknotebook.c:798 +#: ../gtk/gtknotebook.c:822 msgid "Display a second forward arrow button on the opposite end of the tab area" msgstr "ਟੈਬ ਖੇਤਰ ਦੇ ਵਿਰੋਧੀ ਸਿਰੇ ਤੇ ਦੂਜਾ ਅੱਗੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਉ" -#: ../gtk/gtknotebook.c:812 ../gtk/gtkscrollbar.c:66 +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "ਪਿੱਛੇ ਵੱਲ ਜਾਣਵਾਲਾ" -#: ../gtk/gtknotebook.c:813 ../gtk/gtkscrollbar.c:67 +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "ਮਿਆਰੀ ਪਿੱਛੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਉ" -#: ../gtk/gtknotebook.c:827 ../gtk/gtkscrollbar.c:73 +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "ਅੱਗੇਵੱਲ ਜਾਣਵਾਲਾ" -#: ../gtk/gtknotebook.c:828 ../gtk/gtkscrollbar.c:74 +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "ਸਟੈਂਡਰਡ ਅੱਗੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਓ" -#: ../gtk/gtknotebook.c:842 +#: ../gtk/gtknotebook.c:866 msgid "Tab overlap" msgstr "ਟੈਬ ਢਕਣ" -#: ../gtk/gtknotebook.c:843 +#: ../gtk/gtknotebook.c:867 msgid "Size of tab overlap area" msgstr "ਟੈਬ ਢਕਣ ਖੇਤਰ ਦਾ ਅਕਾਰ" -#: ../gtk/gtknotebook.c:858 +#: ../gtk/gtknotebook.c:882 msgid "Tab curvature" msgstr "ਟੈਬ ਕਰਵੇਚਰ" -#: ../gtk/gtknotebook.c:859 +#: ../gtk/gtknotebook.c:883 msgid "Size of tab curvature" msgstr "ਟੈਬ ਕਰਵੇਚਰ ਦਾ ਆਕਾਰ" -#: ../gtk/gtknotebook.c:875 +#: ../gtk/gtknotebook.c:899 msgid "Arrow spacing" msgstr "ਤੀਰ ਥਾਂ" -#: ../gtk/gtknotebook.c:876 +#: ../gtk/gtknotebook.c:900 msgid "Scroll arrow spacing" msgstr "ਸਕਰੋਲ ਤੀਰ ਥਾਂ" -#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:319 -#: ../gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 msgid "Orientation" msgstr "ਹਾਲਤ" @@ -3787,71 +4092,71 @@ msgstr "ਹਾਲਤ" msgid "The orientation of the orientable" msgstr "ਸਥਿਤੀ-ਯੋਗ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtkpaned.c:271 +#: ../gtk/gtkpaned.c:327 msgid "Position of paned separator in pixels (0 means all the way to the left/top)" msgstr "ਪੈਨਡ ਵੱਖਰੇਵੇ ਦੀ ਸਥਿਤੀ ਪਿਕਸਲ ਵਿੱਚ (0 ਦਾ ਅਰਥ ਹੈ ਸਭ ਪਾਸਿਆ ਤੋਂ ਖੱਬੇ/ਉੱਤੇ ਵੱਲ)" -#: ../gtk/gtkpaned.c:280 +#: ../gtk/gtkpaned.c:336 msgid "Position Set" msgstr "ਸਥਿਤੀ ਸੈੱਟ" -#: ../gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:337 msgid "TRUE if the Position property should be used" msgstr "ਸਹੀ ਜੇਕਰ ਸਥਿਤੀ-ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" -#: ../gtk/gtkpaned.c:287 +#: ../gtk/gtkpaned.c:343 msgid "Handle Size" msgstr "ਹੈਡਲ ਅਕਾਰ" -#: ../gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:344 msgid "Width of handle" msgstr "ਹੈਡਲ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkpaned.c:304 +#: ../gtk/gtkpaned.c:360 msgid "Minimal Position" msgstr "ਘੱਟੋ-ਘੱਟੋ ਟਿਕਾਣਾ" -#: ../gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:361 msgid "Smallest possible value for the \"position\" property" msgstr "\"ਟਿਕਾਣਾ\" ਵਿਸ਼ੇਸ਼ਤਾ ਲਈ ਸੰਭਵ ਛੋਟੇ ਤੋਂ ਛੋਟਾ ਮੁੱਲ" -#: ../gtk/gtkpaned.c:322 +#: ../gtk/gtkpaned.c:378 msgid "Maximal Position" msgstr "ਵੱਡੀ ਤੋਂ ਵੱਡੀ ਟਿਕਾਣਾ" -#: ../gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:379 msgid "Largest possible value for the \"position\" property" msgstr "\"ਟਿਕਾਣਾ\" ਵਿਸ਼ੇਸ਼ਤਾ ਲਈ ਸੰਭਵ ਵੱਡੇ ਤੋਂ ਵੱਡਾ ਮੁੱਲ" -#: ../gtk/gtkpaned.c:340 +#: ../gtk/gtkpaned.c:396 msgid "Resize" msgstr "ਮੁੜ-ਅਕਾਰ" -#: ../gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:397 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਚਲਾਇਡ ਪੈਨਲ ਵਿਦਗਿਟ ਨਾਲ ਫੈਲ਼ ਅਤੇ ਸੁੰਘੜ ਸਕਦਾ ਹੈ " -#: ../gtk/gtkpaned.c:356 +#: ../gtk/gtkpaned.c:412 msgid "Shrink" msgstr "ਸੁੰਘੜੋ" -#: ../gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:413 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਚਲਾਇਡ ਇਸ ਦੇ ਅਸਲੀ ਅਕਾਰ ਤੋਂ ਛੋਟਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkplug.c:171 ../gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 msgid "Embedded" msgstr "ਸ਼ਾਮਲ ਕੀਤਾ" -#: ../gtk/gtkplug.c:172 +#: ../gtk/gtkplug.c:181 msgid "Whether the plug is embedded" msgstr "ਕੀ ਪਲੱਗ ਸ਼ਾਮਲ (ਇੰਬੈੱਡ) ਕੀਤਾ ਜਾਵੇ" -#: ../gtk/gtkplug.c:186 +#: ../gtk/gtkplug.c:195 msgid "Socket Window" msgstr "ਸਾਕਟ ਵਿੰਡੋ" -#: ../gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:196 msgid "The window of the socket the plug is embedded in" msgstr "ਇੰਬੈੱਡ ਕੀਤੇ ਪਲੱਗਇ ਦੇ ਸਾਕਟ ਦੀ ਵਿੰਡੋ" @@ -3935,44 +4240,44 @@ msgstr "ਜਾਬ ਲੈ ਰਿਹਾ" msgid "TRUE if this printer is accepting new jobs" msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਰ ਨਵੇਂ ਜਾਬ ਮਨਜ਼ੂਰ ਕਰਦਾ ਹੋਵੇ" -#: ../gtk/gtkprinteroptionwidget.c:122 +#: ../gtk/gtkprinteroptionwidget.c:121 msgid "Source option" msgstr "ਸਰੋਤ ਚੋਣਾਂ" -#: ../gtk/gtkprinteroptionwidget.c:123 +#: ../gtk/gtkprinteroptionwidget.c:122 msgid "The PrinterOption backing this widget" msgstr "ਇਹ ਵਿਦਗਿਟ ਲਈ PrinterOption ਬੈਕਿੰਗ ਹੈ" -#: ../gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:127 msgid "Title of the print job" msgstr "ਪਰਿੰਟ ਜਾਬ ਦਾ ਟਾਇਟਲ" -#: ../gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:135 msgid "Printer" msgstr "ਪਰਿੰਟਰ" -#: ../gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:136 msgid "Printer to print the job to" msgstr "ਪਰਿੰਟ ਜਾਬ ਲਈ ਪਰਿੰਟਰ" -#: ../gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:144 msgid "Settings" msgstr "ਸੈਟਿੰਗ" -#: ../gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:145 msgid "Printer settings" msgstr "ਪਰਿੰਟਰ ਸੈਟਿੰਗ" -#: ../gtk/gtkprintjob.c:142 ../gtk/gtkprintjob.c:143 -#: ../gtk/gtkprintunixdialog.c:298 +#: ../gtk/gtkprintjob.c:153 ../gtk/gtkprintjob.c:154 +#: ../gtk/gtkprintunixdialog.c:299 msgid "Page Setup" msgstr "ਸਫ਼ਾ ਸੈੱਟਅੱਪ" -#: ../gtk/gtkprintjob.c:151 ../gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:162 ../gtk/gtkprintoperation.c:1136 msgid "Track Print Status" msgstr "ਪਰਿੰਟ ਹਾਲਤ ਟਰੈਕ" -#: ../gtk/gtkprintjob.c:152 +#: ../gtk/gtkprintjob.c:163 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." @@ -3980,57 +4285,57 @@ msgstr "" "ਸਹੀਂ, ਜੇ ਪਰਿੰਟ ਕਾਰਵਾਈ ਬਦਲਵੇਂ ਹਾਲਤ ਮੁਤਾਬਕ ਸਿੰਗਨਲ ਦਿੰਦਾ ਰਹੇ, ਭਾਵੇਂ ਕਿ ਪਰਿੰਟ ਡਾਟਾ ਪਰਿੰਟਰ ਜਾਂ " "ਪਰਿੰਟ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੋਵੇ।" -#: ../gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1008 msgid "Default Page Setup" msgstr "ਡਿਫਾਲਟ ਸਫ਼ਾ ਸੈੱਟਅੱਪ" -#: ../gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1009 msgid "The GtkPageSetup used by default" msgstr "ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ GtkPageSetup" -#: ../gtk/gtkprintoperation.c:1024 ../gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:317 msgid "Print Settings" msgstr "ਪਰਿੰਟ ਸੈਟਿੰਗ" -#: ../gtk/gtkprintoperation.c:1025 ../gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:318 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "ਡਾਈਲਾਗ ਸ਼ੁਰੂ ਕਰਨ ਲਈ GtkPrintSettings" -#: ../gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1046 msgid "Job Name" msgstr "ਜਾਬ ਨਾਂ" -#: ../gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1047 msgid "A string used for identifying the print job." msgstr "ਪਰਿੰਟ ਕੰਮ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਇੱਕ ਸਤਰ ਹੈ।" -#: ../gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1071 msgid "Number of Pages" msgstr "ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1072 msgid "The number of pages in the document." msgstr "ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" -#: ../gtk/gtkprintoperation.c:1090 ../gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:307 msgid "Current Page" msgstr "ਮੌਜੂਦਾ ਸਫ਼ਾ" -#: ../gtk/gtkprintoperation.c:1091 ../gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:308 msgid "The current page in the document" msgstr "ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਮੌਜੂਦਾ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1115 msgid "Use full page" msgstr "ਪੂਰਾ ਸਫ਼ਾ ਵਰਤੋਂ" -#: ../gtk/gtkprintoperation.c:1113 +#: ../gtk/gtkprintoperation.c:1116 msgid "" "TRUE if the origin of the context should be at the corner of the page and " "not the corner of the imageable area" msgstr "ਸਹੀ, ਜੇ ਪਰਸੰਗ ਦੀ ਸ਼ੁਰੂਆਤ ਸਫ਼ੇ ਦੇ ਕੋਨੇ ਤੋਂ ਹੋਵੇ ਅਤੇ ਚਿੱਤਰ-ਯੋਗ ਖੇਤਰ ਦੇ ਕੋਨੇ ਤੋਂ ਨਹੀਂ" -#: ../gtk/gtkprintoperation.c:1134 +#: ../gtk/gtkprintoperation.c:1137 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." @@ -4038,201 +4343,201 @@ msgstr "" "ਸਹੀਂ, ਜੇ ਪਰਿੰਟ ਓਪਰੇਸ਼ਨ ਪਰਿੰਟ ਜਾਬ ਹਾਲਤ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿੰਦਾ ਰਹੇ, ਭਾਵੇਂ ਕਿ ਪਰਿੰਟ ਡਾਟਾ ਪਰਿੰਟਰ " "ਜਾਂ ਪਰਿੰਟ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੋਵੇ।" -#: ../gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1154 msgid "Unit" msgstr "ਯੂਨਿਟ" -#: ../gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1155 msgid "The unit in which distances can be measured in the context" msgstr "ਪਰਸੰਗ ਵਿੱਚ ਦੂਰੀ ਮਾਪਣ ਵਾਸਤੇ ਇਕਾਈ" -#: ../gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1172 msgid "Show Dialog" msgstr "ਡਾਈਲਾਗ ਵੇਖਾਓ" -#: ../gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1173 msgid "TRUE if a progress dialog is shown while printing." msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਿੰਗ ਦੌਰਾਨ ਤਰੱਕੀ ਡਾਈਲਾਗ ਵੇਖਾਉਣਾ ਹੈ।" -#: ../gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1196 msgid "Allow Async" msgstr "ਅਸਮਕਾਲੀ ਵਰਤੋਂ" -#: ../gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1197 msgid "TRUE if print process may run asynchronous." msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟ ਕਾਰਵਾਈ ਅਸਮਕਾਲੀ ਢੰਗ ਨਾਲ ਚੱਲ ਸਕਦਾ ਹੋਵੇ।" -#: ../gtk/gtkprintoperation.c:1216 ../gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 msgid "Export filename" msgstr "ਫਾਇਲ-ਨਾਂ ਐਕਸਪੋਰਟ" -#: ../gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "ਹਾਲਤ" -#: ../gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1235 msgid "The status of the print operation" msgstr "ਪਰਿੰਟਰ ਦੀ ਕਾਰਜਕਾਰੀ ਹਾਲਤ" -#: ../gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1255 msgid "Status String" msgstr "ਹਾਲਤ ਸਤਰ" -#: ../gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1256 msgid "A human-readable description of the status" msgstr "ਹਾਲਤ ਦੀ ਪੜ੍ਹਨਯੋਗ ਵੇਰਵਾ" -#: ../gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1274 msgid "Custom tab label" msgstr "ਮੌਜਦਾ ਟੈਬ ਲੇਬਲ" -#: ../gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1275 msgid "Label for the tab containing custom widgets." msgstr "ਕਸਟਮ ਵਿਦਗਿਟ ਰੱਖਣ ਵਾਲੀ ਟੈਬ ਲਈ ਲੇਬਲ ਹੈ।" -#: ../gtk/gtkprintoperation.c:1287 ../gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:342 msgid "Support Selection" msgstr "ਚੋਣ ਸਹਿਯੋਗ" -#: ../gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1291 msgid "TRUE if the print operation will support print of selection." msgstr "ਜੇ ਪਰਿੰਟਰ ਕਾਰਵਾਈ ਚੋਣ ਲਈ ਪਰਿੰਟ ਲਈ ਸਹਾਇਕ ਹੋਵੇ ਤਾਂ ਸਹੀਂ।" -#: ../gtk/gtkprintoperation.c:1304 ../gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:350 msgid "Has Selection" msgstr "ਚੋਣ ਹੈ" -#: ../gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1308 msgid "TRUE if a selection exists." msgstr "ਸਹੀ, ਜੇ ਚੋਣ ਮੌਜੂਦ ਹੈ" -#: ../gtk/gtkprintoperation.c:1320 ../gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:358 msgid "Embed Page Setup" msgstr "ਵਿੱਚੇ ਸ਼ਾਮਲ ਸਫ਼ਾ ਸੈਟਅੱਪ" -#: ../gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1324 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" msgstr "ਸਹੀ, ਜੇ ਸਫ਼ਾ ਸੈਟਅੱਪ ਨੂੰ GtkPrintDialog ਵਿੱਚ ਹੀ ਸ਼ਾਮਲ ਰੱਖਣਾ ਹੈ" -#: ../gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1345 msgid "Number of Pages To Print" msgstr "ਛਾਪਣ ਲਈ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1346 msgid "The number of pages that will be printed." msgstr "ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ, ਜੋ ਕਿ ਛਾਪੇ ਜਾਣਗੇ।" -#: ../gtk/gtkprintunixdialog.c:299 +#: ../gtk/gtkprintunixdialog.c:300 msgid "The GtkPageSetup to use" msgstr "ਵਰਤਣ ਲਈ GtkPageSetup" -#: ../gtk/gtkprintunixdialog.c:324 +#: ../gtk/gtkprintunixdialog.c:325 msgid "Selected Printer" msgstr "ਚੁਣਿਆ ਪਰਿੰਟਰ" -#: ../gtk/gtkprintunixdialog.c:325 +#: ../gtk/gtkprintunixdialog.c:326 msgid "The GtkPrinter which is selected" msgstr "GtkPrinter, ਜੋ ਕਿ ਚੁਣਿਆ ਹੈ" -#: ../gtk/gtkprintunixdialog.c:332 +#: ../gtk/gtkprintunixdialog.c:333 msgid "Manual Capabilities" msgstr "ਦਸਤੀ ਸਮਰੱਥਾ" -#: ../gtk/gtkprintunixdialog.c:333 +#: ../gtk/gtkprintunixdialog.c:334 msgid "Capabilities the application can handle" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਜੋ ਸਮਰੱਥਾ ਹੈਂਡਲ ਕਰ ਸਕਦੀ ਹੈ" -#: ../gtk/gtkprintunixdialog.c:342 +#: ../gtk/gtkprintunixdialog.c:343 msgid "Whether the dialog supports selection" msgstr "ਕੀ ਡਾਈਲਾਗ ਚੋਣ ਸਹਿਯੋਗ ਦੇਵੇ" -#: ../gtk/gtkprintunixdialog.c:350 +#: ../gtk/gtkprintunixdialog.c:351 msgid "Whether the application has a selection" msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਚੋਣ ਦੇਵੇ" -#: ../gtk/gtkprintunixdialog.c:358 +#: ../gtk/gtkprintunixdialog.c:359 msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" msgstr "ਸਹੀ, ਜੇ ਸਫ਼ਾ ਸੈਟਅੱਪ GtkPrintUnixDialog ਵਿਚੇ ਹੀ ਸ਼ਾਮਲ ਹੋਵੇ" -#: ../gtk/gtkprogressbar.c:134 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "ਭਾਗ" -#: ../gtk/gtkprogressbar.c:135 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "ਕੁੱਲ ਕੰਮ ਦੇ ਹਿੱਸੇ ਜੋ ਕਿ ਪੂਰੇ ਹੋ ਗਏ ਹਨ" -#: ../gtk/gtkprogressbar.c:142 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "ਪਲਸ ਸਟੈਪ" -#: ../gtk/gtkprogressbar.c:143 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" msgstr "ਕੁੱਲ ਕੰਮ ਦੇ ਹਿੱਸੇ ਜੋ ਕਿ ਜਦੋਂ ਲਹਿਰ ਆਉਦੀ ਹੈ ਤਾਂ ਬਲਾਕ ਨੂੰ ਅੱਗੇ ਖਿਸਕਾਉਦੇ ਹਨ" -#: ../gtk/gtkprogressbar.c:151 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "ਤਰੱਕੀ-ਪੱਟੀ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸ਼ਬਦ" -#: ../gtk/gtkprogressbar.c:158 +#: ../gtk/gtkprogressbar.c:185 msgid "Show text" msgstr "ਟੈਕਸਟ ਵੇਖੋ" -#: ../gtk/gtkprogressbar.c:159 +#: ../gtk/gtkprogressbar.c:186 msgid "Whether the progress is shown as text." msgstr "ਕੀ ਤਰੱਕੀ ਨੂੰ ਸ਼ਬਦ ਵਾਂਗ ਵੇਖਾਇਆ ਜਾਵੇ।" -#: ../gtk/gtkprogressbar.c:181 +#: ../gtk/gtkprogressbar.c:208 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." msgstr "ਅੰਡਕਾਰ-ਅਕਾਰ ਸਤਰ ਲਈ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਤਰੱਕੀ ਪੱਟੀ ਲਈ ਪੂਰੀ ਸਤਰ ਵੇਖਾਉਣ ਲਈ ਥਾਂ ਨਾ ਹੋਵੇ।" -#: ../gtk/gtkprogressbar.c:188 +#: ../gtk/gtkprogressbar.c:215 msgid "X spacing" msgstr "X ਫਾਸਲਾ" -#: ../gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:216 msgid "Extra spacing applied to the width of a progress bar." msgstr "ਇੱਕ ਤਰੱਕੀ ਬਾਰ ਦੀ ਚੌੜਾਈ ਵਿੱਚ ਵਾਧੂ ਥਾਂ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇਗੀ।" -#: ../gtk/gtkprogressbar.c:194 +#: ../gtk/gtkprogressbar.c:221 msgid "Y spacing" msgstr "Y ਥਾਂ" -#: ../gtk/gtkprogressbar.c:195 +#: ../gtk/gtkprogressbar.c:222 msgid "Extra spacing applied to the height of a progress bar." msgstr "ਇੱਕ ਤਰੱਕੀ ਬਾਰ ਦੀ ਉਚਾਈ ਵਿੱਚ ਵਾਧੂ ਥਾਂ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇਗੀ।" -#: ../gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:235 msgid "Minimum horizontal bar width" msgstr "ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਬਾਰ ਚੌੜਾਈ" -#: ../gtk/gtkprogressbar.c:209 +#: ../gtk/gtkprogressbar.c:236 msgid "The minimum horizontal width of the progress bar" msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਚੌੜਾਈ" -#: ../gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:248 msgid "Minimum horizontal bar height" msgstr "ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਬਾਰ ਚੌੜਾਈ" -#: ../gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:249 msgid "Minimum horizontal height of the progress bar" msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਉਚਾਈ" -#: ../gtk/gtkprogressbar.c:234 +#: ../gtk/gtkprogressbar.c:261 msgid "Minimum vertical bar width" msgstr "ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਬਾਰ ਚੌੜਾਈ" -#: ../gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:262 msgid "The minimum vertical width of the progress bar" msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਚੌੜਾਈ" -#: ../gtk/gtkprogressbar.c:247 +#: ../gtk/gtkprogressbar.c:274 msgid "Minimum vertical bar height" msgstr "ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਬਾਰ ਉਚਾਈ" -#: ../gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:275 msgid "The minimum vertical height of the progress bar" msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਉਚਾਈ" @@ -4248,7 +4553,7 @@ msgstr "" "ਇਹ ਕਾਰਵਾਈ ਆਪਣੇ ਗਰੁੱਪ ਦੀ ਮੌਜੂਦਾ ਕਾਰਵਾਈ ਹੈ ਤਾਂ gtk_radio_action_get_current_value() ਨੇ " "ਵਾਪਿਸ ਕੀਤਾ ਮੁੱਲ" -#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:160 +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 #: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "ਗਰੁੱਪ" @@ -4267,7 +4572,7 @@ msgid "" "action belongs." msgstr "ਗਰੁੱਪ ਦੇ ਮੌਜੂਦਾ ਐਕਟਿਵ ਮੈਂਬਰ ਦੀ ਮੁੱਲ ਵਿਸ਼ੇਸ਼ਤਾ, ਜਿਸ ਨਾਲ ਇਹ ਐਕਸ਼ਨ ਸਬੰਧਿਤ ਹੈ।" -#: ../gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "ਰੇਡੀਉ ਬਟਨ, ਜਦੋਂ ਕਿ ਇਸ ਗਰੁੱਪ ਜਿਸ ਨਾਲ ਵਿਦਗਿਟ ਸਬੰਧਤ ਹੈ।" @@ -4280,136 +4585,128 @@ msgid "The radio tool button whose group this button belongs to." msgstr "ਰੇਡੀਉ ਟੂਲ ਬਟਨ, ਜਦੋਂ ਕਿ ਇਸ ਗਰੁੱਪ ਜਿਸ ਨਾਲ ਬਟਨ ਸਬੰਧਤ ਹੈ।" #: ../gtk/gtkrange.c:416 -msgid "Update policy" -msgstr "ਅੱਪਡੇਟ ਪਾਲਸੀ" - -#: ../gtk/gtkrange.c:417 -msgid "How the range should be updated on the screen" -msgstr "ਸਕਰੀਨ ਤੇ ਰੇਜ਼ ਦਾ ਕਿੰਨੀ ਵਾਰ ਅੱਪਡੇਟ ਕਰਨਾ ਹੈ" - -#: ../gtk/gtkrange.c:426 msgid "The GtkAdjustment that contains the current value of this range object" msgstr "GtkAdjustment ਜੋ ਕਿ ਰੇਜ਼ ਆਬਜੈਕਟ ਦੀ ਮੌਜੂਦਾ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" -#: ../gtk/gtkrange.c:434 +#: ../gtk/gtkrange.c:424 msgid "Invert direction slider moves to increase range value" msgstr "ਬਦਲਵੀ ਦਿਸ਼ਾ ਵਾਲਾ ਸਲਾਇਡਰ ਰੇਜ਼ ਦਾ ਮੁੱਲ ਵਧਾਉਣ ਲਈ ਹਿੱਲੇ" -#: ../gtk/gtkrange.c:441 +#: ../gtk/gtkrange.c:431 msgid "Lower stepper sensitivity" msgstr "ਹੇਠਲੀ ਸਟੈਪਰ ਸੰਵੇਦਨਸ਼ੀਲਤਾ" -#: ../gtk/gtkrange.c:442 +#: ../gtk/gtkrange.c:432 msgid "" "The sensitivity policy for the stepper that points to the adjustment's lower " "side" msgstr "ਸਟਿੱਪਰ ਲਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪਾਲਸੀ, ਜੋ ਕਿ ਹੇਠਲੇ ਪਾਸੇ ਦੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਪੁਆਇੰਟ ਕਰੇ।" -#: ../gtk/gtkrange.c:450 +#: ../gtk/gtkrange.c:440 msgid "Upper stepper sensitivity" msgstr "ਉੱਪਰੀ ਸਟੈਪਰ ਸੰਵੇਦਨਸ਼ੀਲਤਾ" -#: ../gtk/gtkrange.c:451 +#: ../gtk/gtkrange.c:441 msgid "" "The sensitivity policy for the stepper that points to the adjustment's upper " "side" msgstr "ਸਟਿੱਪਰ ਲਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪਾਲਸੀ, ਜੋ ਕਿ ਉਤਲੇ ਪਾਸੇ ਦੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਪੁਆਇੰਟ ਕਰੇ।" -#: ../gtk/gtkrange.c:468 +#: ../gtk/gtkrange.c:458 msgid "Show Fill Level" msgstr "ਭਰਨ ਲੈਵਲ ਵੇਖਾਓ" -#: ../gtk/gtkrange.c:469 +#: ../gtk/gtkrange.c:459 msgid "Whether to display a fill level indicator graphics on trough." msgstr "ਕੀ ਭਰਨ ਲੈਵਲ ਇੰਡੀਕੇਟਰ ਗਰਾਫਿਕਸ ਰਾਹੀਂ ਵੇਖਾਇਆ ਜਾਵੇ।" -#: ../gtk/gtkrange.c:485 +#: ../gtk/gtkrange.c:475 msgid "Restrict to Fill Level" msgstr "ਭਰਨ ਲੈਵਲ ਲਈ ਪਾਬੰਦੀ" -#: ../gtk/gtkrange.c:486 +#: ../gtk/gtkrange.c:476 msgid "Whether to restrict the upper boundary to the fill level." msgstr "ਕੀ ਭਰਨ ਲੈਵਲ ਲਈ ਉਤਲੀ ਸੀਮਾ ਦੀ ਪਾਬੰਦੀ ਹੋਵੇ" -#: ../gtk/gtkrange.c:501 +#: ../gtk/gtkrange.c:491 msgid "Fill Level" msgstr "ਭਰਨ ਲੈਵਲ" -#: ../gtk/gtkrange.c:502 +#: ../gtk/gtkrange.c:492 msgid "The fill level." msgstr "ਭਰਨ ਲੈਵਲ ਹੈ।" -#: ../gtk/gtkrange.c:510 +#: ../gtk/gtkrange.c:500 ../gtk/gtkswitch.c:777 msgid "Slider Width" msgstr "ਸਲਾਇਡਰ ਚੌੜਾਈ" -#: ../gtk/gtkrange.c:511 +#: ../gtk/gtkrange.c:501 msgid "Width of scrollbar or scale thumb" msgstr "ਸਕਰੋਲਬਾਰ ਜਾਂ ਪੈਮਾਨਾ ਥੰਮ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtkrange.c:518 +#: ../gtk/gtkrange.c:508 msgid "Trough Border" msgstr "ਕੁੰਡ ਦਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtkrange.c:519 +#: ../gtk/gtkrange.c:509 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "ਥੰਬ/ਪਗਕਾਰਾਂ ਅਤੇ trough bevel ਵਿਚ ਫਾਸਲਾ" -#: ../gtk/gtkrange.c:526 +#: ../gtk/gtkrange.c:516 msgid "Stepper Size" msgstr "ਪਗਕਾਰ ਅਕਾਰ" -#: ../gtk/gtkrange.c:527 +#: ../gtk/gtkrange.c:517 msgid "Length of step buttons at ends" msgstr "ਅਖੀਰ ਤੇ ਪਗ-ਬਟਨ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkrange.c:542 +#: ../gtk/gtkrange.c:532 msgid "Stepper Spacing" msgstr "ਪਗਕਾਰ ਦੀ ਥਾਂ" -#: ../gtk/gtkrange.c:543 +#: ../gtk/gtkrange.c:533 msgid "Spacing between step buttons and thumb" msgstr "ਪਗ-ਬਟਨ ਅਤੇ ਥੰਬ ਵਿੱਚਕਾਰ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtkrange.c:550 +#: ../gtk/gtkrange.c:540 msgid "Arrow X Displacement" msgstr "ਤੀਰ X ਵਿਸਥਾਪਨ" -#: ../gtk/gtkrange.c:551 +#: ../gtk/gtkrange.c:541 msgid "How far in the x direction to move the arrow when the button is depressed" msgstr "ਜਦੋ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ x-ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿੱਲਾਉਣਾ ਹੈ" -#: ../gtk/gtkrange.c:558 +#: ../gtk/gtkrange.c:548 msgid "Arrow Y Displacement" msgstr "ਤੀਟ Y ਵਿਸਥਾਪਨ" -#: ../gtk/gtkrange.c:559 +#: ../gtk/gtkrange.c:549 msgid "How far in the y direction to move the arrow when the button is depressed" msgstr "ਜਦੋ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ y-ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿੱਲਾਉਣਾ ਹੈ" -#: ../gtk/gtkrange.c:577 +#: ../gtk/gtkrange.c:567 msgid "Trough Under Steppers" msgstr "ਸਟਿੱਪਰ ਦੇ ਹੇਠ ਤੱਕ" -#: ../gtk/gtkrange.c:578 +#: ../gtk/gtkrange.c:568 msgid "" "Whether to draw trough for full length of range or exclude the steppers and " "spacing" msgstr "ਕੀ ਪੂਰੀ ਰੇਜ਼ ਦੀ ਲੰਬਾਈ ਮੁਤਾਬਕ ਰੱਖਣਾ ਹੈ ਜਾਂ ਸਟਿੱਪਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਨੂੰ ਅੱਡ ਰੱਖਣਾ ਹੈ।" -#: ../gtk/gtkrange.c:591 +#: ../gtk/gtkrange.c:581 msgid "Arrow scaling" msgstr "ਤੀਰ ਸਕੇਲਿੰਗ" -#: ../gtk/gtkrange.c:592 +#: ../gtk/gtkrange.c:582 msgid "Arrow scaling with regard to scroll button size" msgstr "ਸਕਰੋਲ ਬਟਨ ਸਾਈਜ਼ ਮੁਤਾਬਕ ਤੀਰ ਸਕੇਲ ਕਰੋ" -#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:252 +#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:246 msgid "Show Numbers" msgstr "ਗਿਣਤੀ ਵੇਖਾਓ" -#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:253 +#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:247 msgid "Whether the items should be displayed with a number" msgstr "ਕੀ ਆਈਟਮਾਂ ਨੂੰ ਇੱਕ ਨੰਬਰ ਵਾਂਗ ਵੇਖਾਇਆ ਜਾਵੇ" @@ -4485,159 +4782,165 @@ msgstr "ਆਈਟਮਾਂ ਵੇਖਾਉਣ ਲਈ ਕ੍ਰਮਬੱਧ ਢ msgid "The current filter for selecting which resources are displayed" msgstr "ਚੋਣ ਲਈ ਮੌਜੂਦਾ ਫਿਲਟਰ, ਜਿਸ ਨਾਲ ਸਰੋਤ ਵੇਖਾਏ ਜਾਣ" -#: ../gtk/gtkrecentmanager.c:291 +#: ../gtk/gtkrecentmanager.c:295 msgid "The full path to the file to be used to store and read the list" msgstr "ਸੂਚੀ ਸੰਭਾਲਣ ਅਤੇ ਪੜ੍ਹਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਫਾਇਲ ਲਈ ਪੂਰਾ ਮਾਰਗ" -#: ../gtk/gtkrecentmanager.c:306 +#: ../gtk/gtkrecentmanager.c:310 msgid "The size of the recently used resources list" msgstr "ਇਸ ਸਮੇਂ ਵਰਤੀ ਸਰੋਤ ਸੂਚੀ ਦਾ ਆਕਾਰ" -#: ../gtk/gtkruler.c:138 -msgid "Lower" -msgstr "ਹੇਠਲੀ" - -#: ../gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "ਪੈਮਾਨੇ ਲਈ ਹੇਠਲੀ ਹੱਦ" - -#: ../gtk/gtkruler.c:148 -msgid "Upper" -msgstr "ਉੱਤੇਲੀ" - -#: ../gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "ਪੈਮਾਨੇ ਲਈ ਉੱਤੇਲੀ ਹੱਦ" - -#: ../gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "ਪੈਮਾਨੇ ਤੇ ਨਿਸ਼ਾਨ ਦੀ ਟਿਕਾਣਾ" - -#: ../gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" - -#: ../gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "ਪੈਮਾਨ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" - -#: ../gtk/gtkruler.c:184 -msgid "Metric" -msgstr "ਮੈਟਰਿਕ" - -#: ../gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "ਫੁੱਟੇ ਲਈ ਵਰਤਣ ਲਈ ਮੈਟਰਿਕ" - -#: ../gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:218 msgid "The value of the scale" msgstr "ਸਕੇਲ ਦਾ ਮੁੱਲ" -#: ../gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:228 msgid "The icon size" msgstr "ਆਈਕਾਨ ਆਕਾਰ" -#: ../gtk/gtkscalebutton.c:240 +#: ../gtk/gtkscalebutton.c:237 msgid "The GtkAdjustment that contains the current value of this scale button object" msgstr "GtkAdjustment, ਜੋ ਕਿ ਇਹ ਸਕੇਲ ਬਟਨ ਆਬਜੈਕਟ ਦੀ ਮੌਜੂਦਾ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" -#: ../gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:265 msgid "Icons" msgstr "ਆਈਕਾਨ" -#: ../gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:266 msgid "List of icon names" msgstr "ਆਈਕਾਨ ਨਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "ਦਸ਼ਮਲਵ ਦੀ ਗਿਣਤੀ ਜੋ ਕਿ ਮੁੱਲ ਵਿੱਚ ਦਿੱਸੇਗੀ" -#: ../gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "ਮੁੱਲ ਕੱਢੋ" -#: ../gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" msgstr "ਕੀ ਮੌਜੂਦਾ ਮੁੱਲ ਪਗਕਾਰ ਤੇ ਅਗਲ਼ੀ ਸਤਰ ਵੇਖਾ ਰਿਹਾ ਹੈ" -#: ../gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "ਟਿਕਾਣਾ ਮੁੱਲ" -#: ../gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "ਟਿਕਾਣਾ ਜਿੱਥੇ ਮੌਜੂਦਾ ਮੁੱਲ ਵੇਖਾ ਰਿਹਾ ਹੈ" -#: ../gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "ਪਗਕਾਰ ਲੰਬਾਈ" -#: ../gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "ਪੈਮਾਨੇ ਦੇ ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "ਮੁੱਲ ਦੀ ਥਾਂ" -#: ../gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "ਖਾਲ਼ੀ ਥਾਂ, ਸ਼ਬਦ ਅਤੇ ਪਗਕਾਰ/ਕੁੰਡ ਖੇਤਰ ਵਿੱਚ" -#: ../gtk/gtkscrollbar.c:50 +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "ਲੇਟਵਾਂ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "ਹਰੀਜੱਟਲ ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਕਿ ਸਕਰੋਲਯੋਗ ਵਿਦਜੈੱਟ ਤੇ ਇਸ ਦੇ ਕੰਟਰੋਲਰ ਵਿੱਚ ਸਾਂਝੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "ਵਰਟੀਕਲ ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਕਿ ਸਕਰੋਲਯੋਗ ਵਿਦਜੈੱਟ ਤੇ ਇਸ ਦੇ ਕੰਟਰੋਲਰ ਵਿੱਚ ਸਾਂਝੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ" + +#: ../gtk/gtkscrollable.c:120 +#| msgid "Horizontal Scrollbar Policy" +msgid "Horizontal Scrollable Policy" +msgstr "ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਪਾਲਸੀ" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "ਸਮੱਗਰੀ ਦਾ ਆਕਾਰ ਕਿਵੇਂ ਜਾਣਿਆ ਜਾਵੇ" + +#: ../gtk/gtkscrollable.c:136 +#| msgid "Vertical Scrollbar Policy" +msgid "Vertical Scrollable Policy" +msgstr "ਵਰਟੀਕਲ ਸਕਰੋਲਯੋਗ ਪਾਲਸੀ" + +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "ਘੱਟੋ-ਘੱਟ ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkscrollbar.c:51 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "ਘੱਟੋ-ਘੱਟ ਸਕਰੋਲਬਾਰ-ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkscrollbar.c:59 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "ਪਗਕਾਰ ਦਾ ਨਿਸ਼ਚਿਤ ਅਕਾਰ" -#: ../gtk/gtkscrollbar.c:60 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" msgstr "ਪਗਕਾਰ ਦਾ ਅਕਾਰ ਨਾ ਬਦਲੋ, ਸਿਰਫ ਘੱਟੋ-ਘੱਟ ਲੰਬਾਈ ਨਿਸ਼ਚਿਤ ਕਰ ਦਿਓ" -#: ../gtk/gtkscrollbar.c:81 +#: ../gtk/gtkscrollbar.c:103 msgid "Display a second backward arrow button on the opposite end of the scrollbar" msgstr "ਸਕਰੋਲਬਾਰ ਦੇ ਉਲਟ ਕਿਨਾਰੇ ਤੇ ਦੂਜਾ ਪਿੱਛੇ ਵਾਲਾ ਤੀਰ-ਬਟਨ ਵੇਖਾਓ" -#: ../gtk/gtkscrollbar.c:88 +#: ../gtk/gtkscrollbar.c:110 msgid "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "ਸਕਰੋਲਬਾਰ ਦੇ ਉਲਟ ਕਿਨਾਰੇ ਉੱਤੇ ਦੂਜਾ ਅੱਗੇ ਵਾਲਾ ਤੀਰ-ਬਟਨ ਵੇਖਾਓ" -#: ../gtk/gtkscrolledwindow.c:243 ../gtk/gtktreeview.c:571 +#: ../gtk/gtkscrolledwindow.c:296 msgid "Horizontal Adjustment" msgstr "ਲੇਟਵੀ ਅਡਜੱਸਟਮੈਂਟ" -#: ../gtk/gtkscrolledwindow.c:250 ../gtk/gtktreeview.c:579 +#: ../gtk/gtkscrolledwindow.c:297 +msgid "The GtkAdjustment for the horizontal position" +msgstr "ਲੇਟਵੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" + +#: ../gtk/gtkscrolledwindow.c:303 msgid "Vertical Adjustment" msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ" -#: ../gtk/gtkscrolledwindow.c:257 +#: ../gtk/gtkscrolledwindow.c:304 +msgid "The GtkAdjustment for the vertical position" +msgstr "ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" + +#: ../gtk/gtkscrolledwindow.c:310 msgid "Horizontal Scrollbar Policy" msgstr "ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਦਾ ਢੰਗ" -#: ../gtk/gtkscrolledwindow.c:258 +#: ../gtk/gtkscrolledwindow.c:311 msgid "When the horizontal scrollbar is displayed" msgstr "ਜਦੋਂ ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਵਿਖਾਇਆ ਗਿਆ" -#: ../gtk/gtkscrolledwindow.c:265 +#: ../gtk/gtkscrolledwindow.c:318 msgid "Vertical Scrollbar Policy" msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ ਪਾਲਸੀ" -#: ../gtk/gtkscrolledwindow.c:266 +#: ../gtk/gtkscrolledwindow.c:319 msgid "When the vertical scrollbar is displayed" msgstr "ਜਦੋਂ ਲੰਬਕਾਰੀ ਸਕਰੌਲਬਾਰ ਵਿਖਾਇਆ ਗਿਆ" -#: ../gtk/gtkscrolledwindow.c:274 +#: ../gtk/gtkscrolledwindow.c:327 msgid "Window Placement" msgstr "ਵਿੰਡੋ ਟਿਕਾਣਾ" -#: ../gtk/gtkscrolledwindow.c:275 +#: ../gtk/gtkscrolledwindow.c:328 msgid "" "Where the contents are located with respect to the scrollbars. This property " "only takes effect if \"window-placement-set\" is TRUE." @@ -4645,11 +4948,11 @@ msgstr "" "ਸਮੱਗਰੀ ਨੂੰ ਸਕਰੋਲਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਕਿੱਥੇ ਰੱਖਿਆ ਜਾਵੇ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ \"window-placement-set\" ਦੇ " "ਸਹੀਂ ਹੋਣ ਦੀ ਸੂਰਤ ਵਿੱਚ ਹੀ ਪਰਭਾਵੀ ਹੁੰਦੀ ਹੈ।" -#: ../gtk/gtkscrolledwindow.c:292 +#: ../gtk/gtkscrolledwindow.c:345 msgid "Window Placement Set" msgstr "ਵਿੰਡੋ ਟਿਕਾਣਾ ਦਿਓ" -#: ../gtk/gtkscrolledwindow.c:293 +#: ../gtk/gtkscrolledwindow.c:346 msgid "" "Whether \"window-placement\" should be used to determine the location of the " "contents with respect to the scrollbars." @@ -4657,55 +4960,59 @@ msgstr "" "ਕੀ \"window-placement\" ਨੂੰ ਸਕਰੋਲ-ਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਸਮੱਗਰੀ ਨੂੰ ਰੱਖਣ ਲਈ ਪਤਾ ਕਰਨ ਵਾਸਤੇ ਵਰਤਿਆ " "ਜਾਵੇ।" -#: ../gtk/gtkscrolledwindow.c:299 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Shadow Type" msgstr "ਛਾਂ ਕਿਸਮ" -#: ../gtk/gtkscrolledwindow.c:300 +#: ../gtk/gtkscrolledwindow.c:353 msgid "Style of bevel around the contents" msgstr "ਹਿੱਸੇ ਦੁਆਲੇ bevel ਦੀ ਕਿਸਮ" -#: ../gtk/gtkscrolledwindow.c:314 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Scrollbars within bevel" msgstr "ਬੀਵਲ ਨਾਲ ਸਕਰੋਲਬਾਰ" -#: ../gtk/gtkscrolledwindow.c:315 +#: ../gtk/gtkscrolledwindow.c:368 msgid "Place scrollbars within the scrolled window's bevel" msgstr "ਸਕਰੋਲ ਕੀਤੇ ਵਿੰਡੋ ਦੇ ਬੀਵਲ ਵਿੱਚ ਸਕਰੋਲਬਾਰ ਰੱਖੋ" -#: ../gtk/gtkscrolledwindow.c:321 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Scrollbar spacing" msgstr "ਸਕਰੌਲਬਾਰ ਵਿੱਥ" -#: ../gtk/gtkscrolledwindow.c:322 +#: ../gtk/gtkscrolledwindow.c:375 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "ਸਕਰੌਲਬਾਰ ਅਤੇ ਸਕਰੌਲ ਕੀਤੇ ਵਿੰਡੋ ਵਿਚਕਾਰ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkscrolledwindow.c:337 -msgid "Scrolled Window Placement" -msgstr "ਸਕਰੋਲ ਕੀਤਾ ਵਿੰਡੋ ਟਿਕਾਣਾ" +#: ../gtk/gtkscrolledwindow.c:384 +msgid "Minimum Content Width" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਮੱਗਰੀ ਚੌੜਾਈ" -#: ../gtk/gtkscrolledwindow.c:338 -msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." -msgstr "" -"ਕੀ ਸਕਰੋਲ ਕੀਤੀਆਂ ਵਿੰਡੋਜ਼ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਸਕਰੋਲ-ਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਰੱਖਣਾ ਹੈ, ਜੇ ਨਹੀਂ ਤਾਂ ਸਕਰੋਲ ਕੀਤੀਆਂ " -"ਵਿੰਡੋਜ਼ ਦੀ ਆਪਣੀ ਸਥਿਤੀ ਮੁਤਾਬਕ ਵਰਤੀਆਂ ਜਾਣਗੀਆਂ।" +#: ../gtk/gtkscrolledwindow.c:385 +msgid "The minimum width that the scrolled window will allocate to its content" +msgstr "ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ, ਜੋ ਕਿ ਸਕਰੋਲ ਵਿੰਡੋ ਆਪਣੀ ਸਮੱਗਰੀ ਨੂੰ ਦੇਵੇਗੀ" -#: ../gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkscrolledwindow.c:391 +msgid "Minimum Content Height" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਮੱਗਰੀ ਉਚਾਈ" + +#: ../gtk/gtkscrolledwindow.c:392 +msgid "The minimum height that the scrolled window will allocate to its content" +msgstr "ਘੱਟੋ-ਘੱਟ ਉਚਾਈ, ਜੋ ਕਿ ਸਕਰੋਲ ਵਿੰਡੋ ਆਪਣੀ ਸਮੱਗਰੀ ਨੂੰ ਦੇਵੇਗੀ" + +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "ਉਲੀਕੋ" -#: ../gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "ਵਖਰੇਵਾਂ ਉਲੀਕਿਆ ਜਾਵੇ ਜਾਂ ਸਿਰਫ ਖਾਲੀ ਛੱਡਿਆ ਜਾਵੇ" -#: ../gtk/gtksettings.c:225 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "ਦੋ-ਵਾਰ ਦਬਾਉਣ ਦਾ ਸਮਾਂ" -#: ../gtk/gtksettings.c:226 +#: ../gtk/gtksettings.c:300 msgid "" "Maximum time allowed between two clicks for them to be considered a double " "click (in milliseconds)" @@ -4713,191 +5020,191 @@ msgstr "" "ਵੱਧ ਤੋਂ ਵੱਧ ਸਮਾਂ, ਪਹਿਲੀ ਤੇ ਦੂਜੀ ਵਾਰ ਦਬਾਉਣ ਵਿਚਕਾਰ ਜੋ ਕਿ ਇਹ ਸਮਝਿਆ ਜਾਵੇ ਕਿ ਇਹ ਦੋ-ਵਾਰ-" "ਦਬਾਇਆ ਗਿਆ ਹੈ (ਮਿਲੀ-ਸਕਿੰਟਾਂ ਵਿੱਚ)" -#: ../gtk/gtksettings.c:233 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "ਦੋ-ਵਾਰ ਦਬਾਉਣ ਦਾ ਫਾਸਲਾ" -#: ../gtk/gtksettings.c:234 +#: ../gtk/gtksettings.c:308 msgid "" "Maximum distance allowed between two clicks for them to be considered a " "double click (in pixels)" msgstr "ਦੋ ਦਬਾਉਣ ਵਿਚਕਾਰ ਵੱਧ ਤੋਂ ਵੱਧ ਮੰਨਣਯੋਗ ਦੂਰੀ ਜਿਸ ਨੂੰ ਦੋ-ਵਾਰ-ਦਬਾਇਆ ਜਾਵੇ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" -#: ../gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "ਕਰਸਰ ਝਪਕਣਾ" -#: ../gtk/gtksettings.c:251 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "ਕੀ ਕਰਸਰ ਝਪਕੇ" -#: ../gtk/gtksettings.c:258 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "ਕਰਸਰ ਝਪਕਣ ਦਾ ਸਮਾਂ" -#: ../gtk/gtksettings.c:259 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "ਕਰਸਰ ਝਪਕਣ ਦੇ ਸਮਾਂ ਚੱਕਰ ਦੀ ਲੰਬਾਈ, ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ" -#: ../gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "ਕਰਸਰ ਝਪਕਣ ਦਾ ਸਮਾਂ" -#: ../gtk/gtksettings.c:279 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "ਸਮਾਂ, ਜਿਸ ਉਪਰੰਤ ਕਰਸਰ ਝਪਕਣਾ ਬੰਦ ਹੋਵੇ, ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ" -#: ../gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "ਕਰਸਰ ਖਿੰਡਾਓ" -#: ../gtk/gtksettings.c:287 +#: ../gtk/gtksettings.c:361 msgid "" "Whether two cursors should be displayed for mixed left-to-right and right-to-" "left text" msgstr "ਕੀ ਦੋ ਕਰਸਰਾਂ ਵੇਖਾਈਆ ਜਾਣ ਜੋ ਕਿ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਤੇ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਟੈਕਸਟ ਰੱਲਵੇ ਨੂੰ ਵੇਖਾਉਣ" -#: ../gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "ਸਰੂਪ ਨਾਂ" -#: ../gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸਰੂਪ RC ਫਾਇਲ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:304 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:312 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "ਵਾਪਸੀ ਆਈਕਾਨ ਸਰੂਪ ਨਾਂ" -#: ../gtk/gtksettings.c:313 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "ਵਾਪਸ ਪਰਤਣ ਲਈ ਇੱਕ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:321 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "ਕੀ-ਸਰੂਪ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:322 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "ਲੋਡ ਕਰਨ ਲਈ ਕੀ-ਸਰੂਪ RC ਫਾਇਲ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "ਮੇਨੂ-ਪੱਟੀ ਤੇਜ਼" -#: ../gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "ਮੇਨੂ ਨੂੰ ਸਰਗਰਮ ਕਰਨ ਲਈ ਕੀ-ਬਾਈਡਿੰਗ" -#: ../gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "ਚੁੱਕਣ ਸਮੱਰਥਾ" -#: ../gtk/gtksettings.c:340 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "ਖਿੱਚਣ ਤੋਂ ਪਹਿਲਾਂ ਕਰਸਰ ਕਿੰਨੇ ਪਿਕਸਲ ਹਿੱਲੇ" -#: ../gtk/gtksettings.c:348 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "ਫੋਂਟ-ਨਾਂ" -#: ../gtk/gtksettings.c:349 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "ਵਰਤਣ ਲਈ ਮੂਲ-ਫੋਂਟ ਦਾ ਨਾਂ" -#: ../gtk/gtksettings.c:371 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "ਆਈਕਾਨ ਅਕਾਰ" -#: ../gtk/gtksettings.c:372 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "ਆਈਕਾਨ ਅਕਾਰ ਦੀ ਸੂਚੀ (gtk-ਸੂਚੀ=16,16;gtk-ਬਟਨ=20,20..." -#: ../gtk/gtksettings.c:380 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK ਮੈਡੀਊਲ" -#: ../gtk/gtksettings.c:381 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "ਇਸ ਸਮੇਂ ਸਰਗਰਮ GTK ਮੈਡੀਊਲਾਂ ਦੀ ਸੂਚੀ" -#: ../gtk/gtksettings.c:390 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft ਐਟੀਲਾਈਸਿਕ" -#: ../gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "ਕੀ Xft ਫੋਂਟ ਨੂੰ ਐਟੀਲਾਈਸਿਕ ਕਰਨਾ ਹੈ; 0= ਨਹੀ, 1=ਹਾਂ, -1=ਮੂਲ" -#: ../gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft ਸੰਕੇਤ" -#: ../gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "ਕੀ ਸੰਕੇਤ ਦੇਣੇ ਹਨ Xft ਫੋਟ; 0=ਨਹੀ, 1=ਹਾਂ, -1=ਮੂਲ" -#: ../gtk/gtksettings.c:410 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft ਸੰਕੇਤ ਸਟਾਇਲ" -#: ../gtk/gtksettings.c:411 +#: ../gtk/gtksettings.c:485 msgid "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" msgstr "ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਸੰਕੇਤ ਵਰਤਣੇ ਹਨ ; ਕੋਈ ਨਹੀ, ਥੋੜੇ, ਮੱਧਮ, ਜਾਂ ਲੋੜ ਮੁਤਾਬਕ" -#: ../gtk/gtksettings.c:420 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft RGBA" -#: ../gtk/gtksettings.c:421 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "ਸਬ-ਪਿਕਸਲ ਐਟੀਲਾਈਸਇੰਗ ਦੀ ਕਿਸਮ; ਕੋਈ ਨਹੀ, rgb, bgr, vrgb, vbgr" -#: ../gtk/gtksettings.c:430 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft DPI" -#: ../gtk/gtksettings.c:431 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" msgstr "Xft ਲਈ ਰੈਜ਼ੋਲੂਸ਼ਨ, 1024 * ਬਿੰਦੂ/ਇੰਚ -1 ਮੂਲ ਮੁੱਲ ਦੇ ਰੂਪ ਵਿੱਚ ਵਰਤੋਂ" -#: ../gtk/gtksettings.c:440 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "ਕਰਸਰ ਸਰੂਪ ਨਾਂ" -#: ../gtk/gtksettings.c:441 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" msgstr "ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ, ਜਾਂ ਮੂਲ ਸਰੂਪ ਲਈ NULL" -#: ../gtk/gtksettings.c:449 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "ਕਰਸਰ ਸਰੂਪ ਅਕਾਰ" -#: ../gtk/gtksettings.c:450 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" msgstr "ਵਰਤਣ ਲਈ ਕਰਸਰ ਅਕਾਰ, ਜਾਂ ਮੂਲ ਅਕਾਰ ਲਈ 0 ਦਿਓ" -#: ../gtk/gtksettings.c:460 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "ਬਦਲਵਾਂ ਬਟਨ ਕਰਮ" -#: ../gtk/gtksettings.c:461 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "ਕੀ ਡਾਈਲਾਗ ਦੇ ਬਟਨ ਲਈ ਬਦਲਵਾਂ ਬਟਨ ਕਰਮ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ" -#: ../gtk/gtksettings.c:478 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "ਬਦਲਵੀਂ ਲੜੀਬੱਧ ਸੂਚਕ ਦਿਸ਼ਾ" -#: ../gtk/gtksettings.c:479 +#: ../gtk/gtksettings.c:553 msgid "" "Whether the direction of the sort indicators in list and tree views is " "inverted compared to the default (where down means ascending)" @@ -4905,342 +5212,448 @@ msgstr "" "ਕੀ ਲਿਸਟ ਅਤੇ ਟਰੀ ਝਲਕ ਵਿੱਚ ਲੜੀਬੱਧ ਇੰਡੀਕੇਟਰ ਦੀ ਦਿਸ਼ਾ ਡਿਫਾਲਟ ਦੀ ਬਜਾਏ ਉਲਟ ਹੋਵੇ (ਜਿੱਥੇ ਕਿ " "ਹੇਠਾਂ ਦਾ ਮਤਲਬ ਵੱਧਦਾ ਹੈ)" -#: ../gtk/gtksettings.c:487 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "'ਇੰਪੁੱਟ ਢੰਗ' ਮੇਨੂ ਵੇਖਾਓ" -#: ../gtk/gtksettings.c:488 +#: ../gtk/gtksettings.c:562 msgid "" "Whether the context menus of entries and text views should offer to change " "the input method" msgstr "ਕੀ ਐਂਟਰੀਆਂ ਦੇ ਸਬੰਧਿਤ ਮੇਨੂ ਅਤੇ ਟੈਕਸਟ ਝਲਕ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਨੂੰ ਦਰਸਾਉਣ" -#: ../gtk/gtksettings.c:496 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "'ਯੂਨੀਕੋਡ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਲ ਕਰੋ' ਮੇਨੂ ਵੇਖਾਓ" -#: ../gtk/gtksettings.c:497 +#: ../gtk/gtksettings.c:571 msgid "" "Whether the context menus of entries and text views should offer to insert " "control characters" msgstr "ਕੀ ਐਂਟਰੀਆਂ ਦੇ ਸਬੰਧਿਤ ਮੇਨੂ ਅਤੇ ਟੈਕਸਟ ਝਲਕ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਲ ਕਰਨ ਨੂੰ ਦਰਸਾਉਣ" -#: ../gtk/gtksettings.c:505 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "ਸ਼ੁਰੂਆਤੀ ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:506 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "ਅੰਤਰਾਲ ਲਈ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ, ਜਦੋਂ ਕਿ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtksettings.c:515 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "ਦੁਹਰਾਉ ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:516 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "ਅੰਤਰਾਲ ਦੁਹਰਾਉਣ ਮੁੱਲ, ਜਦੋਂ ਇੱਕ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtksettings.c:525 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "ਫੈਲਾ ਸਮਾਂ-ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:526 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "ਫੈਲਾਉਣ ਲਈ ਅੰਤਰਾਲ ਦਾ ਮੁੱਲ, ਜਦੋਂ ਕਿ ਇੱਕ ਵਿਦਗਿਟ ਇੱਕ ਨਵੇਂ ਖੇਤਰ ਨੂੰ ਫੈਲਾਉਦਾ ਹੋਵੇ" -#: ../gtk/gtksettings.c:561 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "ਰੰਗ ਸਕੀਮ" -#: ../gtk/gtksettings.c:562 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "ਸਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ ਨਾਮੀ ਰੰਗ ਦੀ ਇੱਕ ਰੰਗ-ਪੱਟੀ" -#: ../gtk/gtksettings.c:571 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "ਸਜੀਵਤਾ ਯੋਗ" -#: ../gtk/gtksettings.c:572 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "ਕੀ ਟੂਲ-ਕਿੱਟ ਸਜੀਵਤਾ ਯੋਗ" -#: ../gtk/gtksettings.c:590 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "ਟੱਚ-ਸਕਰੀਨ ਢੰਗ ਯੋਗ" -#: ../gtk/gtksettings.c:591 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਇਸ ਸਕਰੀਨ ਉੱਤੇ ਕੋਈ ਚੱਲਦੇ ਸੂਚਨਾ ਈਵੈਂਟ ਨਹੀਂ ਦਿੱਤੇ ਜਾਣਗੇ।" -#: ../gtk/gtksettings.c:608 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "ਟੂਲ-ਟਿੱਪ ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:609 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "ਟੂਲ-ਟਿੱਪ ਵੇਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਸਮਾਂ" -#: ../gtk/gtksettings.c:634 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "ਟੂਲ-ਟਿੱਪ ਝਲਕ ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:635 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "ਝਲਕ ਮੋਡ ਯੋਗ ਕਰਨ ਦੌਰਾਨ ਟੂਲ-ਟਿੱਪ ਵੇਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ-ਆਉਟ" -#: ../gtk/gtksettings.c:656 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "ਟੂਲ-ਟਿੱਪ ਝਲਕ ਢੰਗ ਅੰਤਰਾਲ" -#: ../gtk/gtksettings.c:657 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "ਅੰਤਰਾਲ, ਜਿਸ ਉਪਰੰਤ ਝਲਕ ਢੰਗ ਨੂੰ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਜਾਵੇ" -#: ../gtk/gtksettings.c:676 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "ਕੀ-ਨੇਵੀ ਕਰਸਰ ਹੀ" -#: ../gtk/gtksettings.c:677 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" msgstr "ਜਦੋਂ ਸਹੀਂ ਹੋਵੇ ਤਾਂ ਕੇਵਲ ਇਹੀ ਕਰਸਰ ਸਵਿੱਚਾਂ ਹੋਣਗੀਆਂ, ਜੋ ਕਿ ਵਿਦਜੈੱਟ ਨੇਵੀਗੇਟ ਲਈ ਹੋਣਗੀਆਂ" -#: ../gtk/gtksettings.c:694 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "ਕੀ-ਨੇਵੀ ਦੁਆਥੇ ਸਮੇਟਣਾ" -#: ../gtk/gtksettings.c:695 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" msgstr "ਕੀ ਪਾਸੇ ਸਮੇਟਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਕੀ-ਬੋਰਡ-ਨੇਵੀਗੇਸ਼ਨ ਵਿਦਗਿਟ ਹੋਵੇ" -#: ../gtk/gtksettings.c:715 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "ਗਲਤੀ ਘੰਟੀ" -#: ../gtk/gtksettings.c:716 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" msgstr "ਜਦੋਂ ਸਹੀਂ ਤਾਂ ਕੀਬੋਰਡ ਨੇਵੀਗੇਸ਼ਨ ਅਤੇ ਹੋਰ ਗਲਤੀਆਂ ਲਈ ਬੀਪ ਹੋਵੇਗੀ" -#: ../gtk/gtksettings.c:733 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "ਰੰਗ ਹੈਸ਼" -#: ../gtk/gtksettings.c:734 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "ਰੰਗ ਸਕੀਮ ਨੂੰ ਇੱਕ ਹੈਸ਼ ਸਾਰਣੀ ਵਿੱਚ ਵੇਖਾਓ।" -#: ../gtk/gtksettings.c:742 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "ਮੂਲ ਫਾਇਲ ਚੋਣ ਬੈਕਐਂਡ" -#: ../gtk/gtksettings.c:743 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "GtkFileChooser ਬੈਕਐਂਡ ਦਾ ਨਾਂ, ਜੋ ਕਿ ਮੂਲ ਰੂਪ ਵਿੱਚ ਵਰਤਣਾ ਹੈ" -#: ../gtk/gtksettings.c:760 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "ਮੂਲ ਪਰਿੰਟ ਬੈਕਐਂਡ" -#: ../gtk/gtksettings.c:761 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ GtkPrintBackend ਬੈਕਐਂਡ ਦੀ ਸੂਚੀ" -#: ../gtk/gtksettings.c:784 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "ਇੱਕ ਪਰਿੰਟ ਝਲਕ ਵੇਖਾਉਣ ਸਮੇਂ ਚਲਾਉਣ ਲਈ ਮੂਲ ਕਮਾਂਡ" -#: ../gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "ਇੱਕ ਪਰਿੰਟ ਝਲਕ ਵੇਖਾਉਣ ਦੌਰਾਨ ਚਲਾਉਣ ਲਈ ਕਮਾਂਡ" -#: ../gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "ਨੀਮੋਨੀਸ ਯੋਗ" -#: ../gtk/gtksettings.c:802 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "ਕੀ ਲੇਬਲਾਂ ਨਾਲ ਨੀਮੋਨੀਸ ਹੋਣ" -#: ../gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "ਐਕਸਰਲੇਟਰ ਯੋਗ" -#: ../gtk/gtksettings.c:819 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "ਕੀ ਮੇਨ ਆਈਟਮਾਂ ਵਿੱਚ ਐਕਸਲੇਟਰ ਹੋਣ" -#: ../gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "ਤਾਜ਼ਾ ਫਾਇਲ ਲਿਮਟ" -#: ../gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "ਤਾਜ਼ਾ ਵਰਤੀਆਂ ਫਾਇਲਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtksettings.c:855 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "ਮੂਲ IM ਮੋਡੀਊਲ" -#: ../gtk/gtksettings.c:856 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਕਿਹੜਾ IM ਮੋਡੀਊਲ ਵਰਤਿਆ ਜਾਵੇ" -#: ../gtk/gtksettings.c:874 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "ਤਾਜ਼ਾ ਫਾਇਲਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਉਮਰ" -#: ../gtk/gtksettings.c:875 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "ਦਿਨਾਂ ਵਿੱਚ ਤਾਜ਼ਾ ਵਰਤੀਆਂ ਫਾਇਲਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਉਮਰ" -#: ../gtk/gtksettings.c:884 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "ਫੋਂਟ-ਸੰਰਚਨਾ ਸੰਰਚਨਾ ਟਾਈਮ-ਸਟੈਂਪ" -#: ../gtk/gtksettings.c:885 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "ਮੌਜੂਦਾ ਫੋਂਟ-ਸੰਰਚਨਾ ਸੰਰਚਨਾ ਲਈ ਟਾਈਮ-ਸਟੈਂਪ" -#: ../gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "ਸਾਊਂਡ ਥੀਮ ਨਾਂ" -#: ../gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "XDG ਸਾਊਂਡ ਥੀਮ ਨਾਂ" #. Translators: this means sounds that are played as feedback to user input -#: ../gtk/gtksettings.c:930 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "ਸੁਣਨਯੋਗ ਇੰਪੁੱਟ ਫੀਡਬੈਕ" -#: ../gtk/gtksettings.c:931 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" msgstr "ਕੀ ਯੂਜ਼ਰ ਇੰਪੁੱਟ ਲਈ ਫੀਬੈੱਕ ਵਜੋਂ ਈਵੈਂਟ ਸਾਊਂਡ ਦਿੱਤੀ ਜਾਵੇ" -#: ../gtk/gtksettings.c:952 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "ਈਵੈਂਟ ਸਾਊਂਡ ਯੋਗ" -#: ../gtk/gtksettings.c:953 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "ਕੀ ਸਭ ਲਈ ਕਿਸੇ ਵੀ ਈਵੈਂਟ ਲਈ ਸਾਊਂਡ ਚਲਾਈ ਜਾਵੇ" -#: ../gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "ਟੂਲ-ਟਿੱਪ ਯੋਗ" -#: ../gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "ਕੀ ਵਿਡਜੈੱਟਾਂ ਉੱਤੇ ਟੂਲ-ਟਿੱਪ ਵੇਖਾਏ ਜਾਣ" -#: ../gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "ਟੂਲਬਾਰ ਸਟਾਇਲ" -#: ../gtk/gtksettings.c:983 +#: ../gtk/gtksettings.c:1057 msgid "Whether default toolbars have text only, text and icons, icons only, etc." msgstr "ਕੀ ਮੂਲ ਟੂਲਬਾਰ ਲਈ ਸ਼ਬਦ ਹੀ, ਸ਼ਬਦ ਤੇ ਆਈਕਾਨ, ਆਈਕਾਨ ਹੀ ਆਦਿ ਹੋਣ" -#: ../gtk/gtksettings.c:997 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "ਟੂਲਬਾਰ ਆਈਕਾਨ ਆਕਾਰ" -#: ../gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "ਡਿਫਾਲਟ ਟੂਲਬਾਰ ਵਿੱਚ ਆਈਕਾਨ ਦਾ ਆਕਾਰ ਹੈ।" -#: ../gtk/gtksettings.c:1015 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "ਆਟੋ ਨੀਮੋਨੀਸ" -#: ../gtk/gtksettings.c:1016 +#: ../gtk/gtksettings.c:1090 msgid "" "Whether mnemonics should be automatically shown and hidden when the user " "presses the mnemonic activator." msgstr "ਕੀ ਮਨਾਮੈਰਿਕ ਆਟੋਮੈਟਿਕ ਹੀ ਵੇਖਾਏ ਅਤੇ ਓਹਲੇ ਕੀਤੇ ਜਾਣ, ਜਦੋਂ ਯੂਜ਼ਰ ਮਨਾਮੈਰਿਕ ਐਕਟੀਵੇਟਰ ਕੀਤਾ ਜਾਵੇ।" -#: ../gtk/gtksettings.c:1041 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਗੂੜ੍ਹਾ ਥੀਮ ਚਾਹੁੰਦੀ ਹੈ" -#: ../gtk/gtksettings.c:1042 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਗੂੜ੍ਹਾ ਥੀਮ ਪਸੰਦ ਕਰੇ" -#: ../gtk/gtksizegroup.c:341 +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "ਬਟਨ-ਚਿੱਤਰ ਵੇਖਾਓ" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "ਕੀ ਬਟਨਾਂ ਉੱਤੇ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" + +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "ਫੋਕਸ ਉੱਤੇ ਚੁਣੋ" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "ਕੀ ਇੰਦਰਾਜ਼ ਵਿੱਚਲੇ ਹਿੱਸੇ ਨੂੰ ਚੁਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਹ ਕੇਦਰਿਤ ਹੋ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "ਪਾਸਵਰਡ ਇਸ਼ਾਰਾ ਸਮਾਂ-ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "ਲੁਕਵੇਂ ਇੰਦਰਾਜ਼ਾਂ ਵਿੱਚ ਆਖਰੀ ਦਿੱਤੇ ਅੱਖਰ ਨੂੰ ਵੇਖਾਉਣ ਨੂੰ ਕਿੰਨਾ ਸਮਾਂ ਲੱਗੇ" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "ਮੇਨੂ ਚਿੱਤਰ ਵੇਖੋ" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "ਕੀ ਮੇਨੂ ਵਿੱਚ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "ਲਟਕਦੇ ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "ਮੇਨੂ-ਬਾਰ ਦੀ ਸਬ-ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1195 +msgid "Scrolled Window Placement" +msgstr "ਸਕਰੋਲ ਕੀਤਾ ਵਿੰਡੋ ਟਿਕਾਣਾ" + +#: ../gtk/gtksettings.c:1196 +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "" +"ਕੀ ਸਕਰੋਲ ਕੀਤੀਆਂ ਵਿੰਡੋਜ਼ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਸਕਰੋਲ-ਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਰੱਖਣਾ ਹੈ, ਜੇ ਨਹੀਂ ਤਾਂ ਸਕਰੋਲ ਕੀਤੀਆਂ " +"ਵਿੰਡੋਜ਼ ਦੀ ਆਪਣੀ ਸਥਿਤੀ ਮੁਤਾਬਕ ਵਰਤੀਆਂ ਜਾਣਗੀਆਂ।" + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "ਐਕਸਲੇਟਰ ਬਦਲ ਸਕਦੇ ਹਨ" + +#: ../gtk/gtksettings.c:1206 +msgid "Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "ਕੀ ਮੇਨੂ-ਤੇਜ਼ ਲਿਸਟ ਉੱਤੇ ਇੱਕ ਕੀ ਦਬਾਉਣ ਨਾਲ ਤਬਦੀਲ ਹੋ ਜਾਣ" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "ਸਬ-ਮੇਨੂ ਦੇ ਉਭੱਰਨ ਵਿੱਚ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1215 +msgid "Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਮਾਂ, ਜਿਸ ਲਈ ਸਬ-ਮੇਨੂ ਦੇ ਖੁੱਲਣ ਤੋਂ ਪਹਿਲਾਂ ਸੰਕੇਤਕ ਮੇਨੂ ਆਈਟਮ ਉੱਤੇ ਹੀ ਰਹੇ" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਵਿੱਚ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1225 +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "ਸਮਾਂ ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ, ਜਦੋਂ ਕਿ ਸੰਕੇਤਕ ਸਬ-ਮੇਨੂ ਵੱਲ ਆ ਰਿਹਾ ਹੋਵੇ" + +#: ../gtk/gtksettings.c:1235 +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "ਕੀ ਚੁਣਨਯੋਗ ਲੇਬਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੀ ਜਾਵੇ, ਜਦੋਂ ਇਹ ਫੋਕਸ ਹੋਵੇ" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "ਰੰਗ-ਪੱਟੀ ਦੀ ਚੋਣ" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "ਰੰਗ ਚੋਣ ਵਿੱਚ ਰੰਗ-ਪੱਟੀ ਵਰਤੋਂ" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "IM ਪ੍ਰੀ-ਐਡੀਟ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਪ੍ਰੀ-ਐਡੀਟ ਲਾਈਨ ਨੂੰ ਕਿਸ-ਤਰ੍ਹਾਂ ਬਣਾਏ" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM ਹਾਲਤ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਦੀ ਹਾਲਤ-ਪੱਟੀ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ" + +#: ../gtk/gtksizegroup.c:351 msgid "Mode" msgstr "ਢੰਗ" -#: ../gtk/gtksizegroup.c:342 +#: ../gtk/gtksizegroup.c:352 msgid "" "The directions in which the size group affects the requested sizes of its " "component widgets" msgstr "ਦਿਸ਼ਾ, ਜਿਸ ਅਨੁਸਾਰ ਗਰੁੱਪ ਦਾ ਅਕਾਰ ਇਸ ਦੇ ਭਾਗ ਵਿਦਗਿਟਾਂ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtksizegroup.c:358 +#: ../gtk/gtksizegroup.c:368 msgid "Ignore hidden" msgstr "ਲੁਕਵਾਂ ਅਣਡਿੱਠਾ" -#: ../gtk/gtksizegroup.c:359 +#: ../gtk/gtksizegroup.c:369 msgid "If TRUE, unmapped widgets are ignored when determining the size of the group" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਗਰੁੱਪ ਦਾ ਅਕਾਰ ਬਣਾਉਣ ਸਮੇਂ ਲੁਕਵੇਂ ਵਿਦਗਿਟਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ" -#: ../gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:328 msgid "Climb Rate" msgstr "ਚੜਨ ਗਤੀ" -#: ../gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:348 msgid "Snap to Ticks" msgstr "ਸੰਕੇਤਾਂ ਲਈ ਸਨੈਪ" -#: ../gtk/gtkspinbutton.c:257 +#: ../gtk/gtkspinbutton.c:349 msgid "" "Whether erroneous values are automatically changed to a spin button's " "nearest step increment" msgstr "ਕੀ ਗਲਤ ਮੁੱਲ ਆਪਣੇ-ਆਪ ਹੀ ਸਪਿਨ-ਬਟਨ ਦੇ ਨਜ਼ਦੀਕੀ ਵਾਧਾ ਮੁੱਲ ਵਿੱਚ ਬਦਲ ਜਾਣ" -#: ../gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:356 msgid "Numeric" msgstr "ਅੰਕੀ" -#: ../gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:357 msgid "Whether non-numeric characters should be ignored" msgstr "ਕੀ ਅੰਕਾਂ ਤੋਂ ਬਿਨਾਂ ਅੱਖਰਾਂ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇ" -#: ../gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:364 msgid "Wrap" msgstr "ਲਪੇਟਣਾ" -#: ../gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:365 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "ਕੀ ਸਪਿਨ ਬਟਨ ਨੂੰ ਸਮੇਟਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਹ ਆਪਣੀਆ ਸੀਮਾਵਾਂ ਤੇ ਪੁੱਜ ਜਾਵੇ" -#: ../gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:372 msgid "Update Policy" msgstr "ਅੱਪਡੇਟ ਨੀਤੀ" -#: ../gtk/gtkspinbutton.c:281 +#: ../gtk/gtkspinbutton.c:373 msgid "Whether the spin button should update always, or only when the value is legal" msgstr "ਕੀ ਸਪਿਨ ਬਟਨ ਹਮੇਸ਼ਾ ਅੱਪਡੇਟ ਹੁੰਦਾ ਰਹੇ, ਜਾਂ ਇਸ ਦਾ ਮੁੱਲ ਸਥਿਰ ਹੈ" -#: ../gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:382 msgid "Reads the current value, or sets a new value" msgstr "ਮੌਜੂਦਾ ਮੁੱਲ ਨੂੰ ਪੜ੍ਹੋ, ਜਾਂ ਨਵਾਂ ਮੁੱਲ ਦਿਓ" -#: ../gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:391 msgid "Style of bevel around the spin button" msgstr "ਸਪੈਨ ਬਟਨ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "ਕੀ ਸਨਿੱਪਰ ਐਕਟਿਵ ਹੋਣ" -#: ../gtk/gtkspinner.c:146 +#: ../gtk/gtkspinner.c:135 msgid "Number of steps" msgstr "ਪਗ਼ਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtkspinner.c:147 +#: ../gtk/gtkspinner.c:136 msgid "" "The number of steps for the spinner to complete a full loop. The animation " "will complete a full cycle in one second by default (see #GtkSpinner:cycle-" @@ -5249,157 +5662,163 @@ msgstr "" "ਪਗ਼ਾਂ ਦੀ ਗਿਣਤੀ, ਜਿਸ ਦੌਰਾਨ ਸਪਿੱਨਰ ਚੱਕਰ ਪੂਰਾ ਕਰੇ। ਐਨੀਮੇਸ਼ਨ ਮੂਲ ਰੂਪ ਵਿੱਚ ਇੱਕ ਸਕਿੰਟ ਵਿੱਚ ਚੱਕਰ " "ਪੂਰਾ ਕਰਦੀ ਹੈ (see #GtkSpinner:cycle-duration ਵੇਖੋ)।" -#: ../gtk/gtkspinner.c:162 +#: ../gtk/gtkspinner.c:153 msgid "Animation duration" msgstr "ਐਨੀਮੇਸ਼ਨ ਅੰਤਰਾਲ" -#: ../gtk/gtkspinner.c:163 +#: ../gtk/gtkspinner.c:154 msgid "The length of time in milliseconds for the spinner to complete a full loop" msgstr "ਸਮੇਂ ਦਾ ਅੰਤਰਾਲ ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ, ਜਿਸ ਲਈ ਸਪਿਨਰ ਚੱਕਰ ਪੂਰਾ ਕਰੇ" -#: ../gtk/gtkstatusbar.c:179 +#: ../gtk/gtkstatusbar.c:183 msgid "Style of bevel around the statusbar text" msgstr "ਹਾਲਤ-ਪੱਟੀ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:262 msgid "The size of the icon" msgstr "ਆਈਕਾਨ ਦਾ ਅਕਾਰ" -#: ../gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:272 msgid "The screen where this status icon will be displayed" msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਕਿ ਹਾਲਤ ਆਈਕਾਨ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" -#: ../gtk/gtkstatusicon.c:288 +#: ../gtk/gtkstatusicon.c:280 msgid "Whether the status icon is visible" msgstr "ਕੀ ਹਾਲਤ ਆਈਕਾਨ ਵੇਖਾਈ ਦੇਵੇ" -#: ../gtk/gtkstatusicon.c:304 +#: ../gtk/gtkstatusicon.c:296 msgid "Whether the status icon is embedded" msgstr "ਕੀ ਹਾਲਤ ਆਈਕਾਨ ਸ਼ਾਮਲ ਕੀਤਾ ਹੋਵੇ" -#: ../gtk/gtkstatusicon.c:320 ../gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 msgid "The orientation of the tray" msgstr "ਟਰੇ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtkstatusicon.c:347 ../gtk/gtkwidget.c:863 +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1036 msgid "Has tooltip" msgstr "ਟੂਲ-ਟਿੱਪ ਹੋਣ" -#: ../gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:340 msgid "Whether this tray icon has a tooltip" msgstr "ਕੀ ਇਹ ਟਰੇ ਆਈਕਾਨ ਲਈ ਟੂਲ-ਟਿੱਪ ਹੋਵੇ" -#: ../gtk/gtkstatusicon.c:373 ../gtk/gtkwidget.c:884 +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1057 msgid "Tooltip Text" msgstr "ਟੂਲ-ਟਿੱਪ ਪਾਠ" -#: ../gtk/gtkstatusicon.c:374 ../gtk/gtkwidget.c:885 ../gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1058 ../gtk/gtkwidget.c:1079 msgid "The contents of the tooltip for this widget" msgstr "ਇਹ ਵਿਦਗਿਟ ਲਈ ਟੂਲ-ਟਿੱਪ ਦੀ ਸਮੱਗਰੀ ਹੈ" -#: ../gtk/gtkstatusicon.c:397 ../gtk/gtkwidget.c:905 +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1078 msgid "Tooltip markup" msgstr "ਟੂਲ-ਟਿੱਪ ਮਾਰਕਅੱਪ" -#: ../gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:390 msgid "The contents of the tooltip for this tray icon" msgstr "ਇਸ ਟਰੇ ਆਈਕਾਨ ਲਈ ਟੂਲ-ਟਿੱਪ ਦੀ ਸਮੱਗਰੀ" -#: ../gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:408 msgid "The title of this tray icon" msgstr "ਇਹ ਟਰੇ ਆਈਕਾਨ ਦਾ ਟਾਈਟਲ" -#: ../gtk/gtktable.c:148 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "ਸਟਾਈਲ ਪਰਸੰਦ" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "ਇੱਥੋਂ ਸਟਾਈਲ ਲੈਣ ਲਈ GtkStyleContext " + +#: ../gtk/gtkstylecontext.c:541 +#| msgid "Associated device" +msgid "The associated GdkScreen" +msgstr "ਸਬੰਧਤ GdkScreen" + +#: ../gtk/gtkstylecontext.c:547 +#| msgid "Fraction" +msgid "Direction" +msgstr "ਦਿਸ਼ਾ" + +#: ../gtk/gtkstylecontext.c:548 ../gtk/gtktexttag.c:220 +msgid "Text direction" +msgstr "ਟੈਕਸਟ ਦੀ ਦਿਸ਼ਾ" + +#: ../gtk/gtkswitch.c:744 +msgid "Whether the switch is on or off" +msgstr "ਕੀ ਸਵਿੱਚ ਚਾਲੂ ਹੈ ਜਾਂ ਬੰਦ" + +#: ../gtk/gtkswitch.c:778 +msgid "The minimum width of the handle" +msgstr "ਹੈਂਡਲ ਲਈ ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "ਸਤਰਾਂ" -#: ../gtk/gtktable.c:149 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "ਸਾਰਣੀ ਵਿੱਚ ਸਤਰਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtktable.c:157 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "ਕਾਲਮ" -#: ../gtk/gtktable.c:158 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" -#: ../gtk/gtktable.c:166 -msgid "Row spacing" -msgstr "ਸਤਰਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" - -#: ../gtk/gtktable.c:167 -msgid "The amount of space between two consecutive rows" -msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਤਾਰਾਂ ਵਿਚਕਾਰ" - -#: ../gtk/gtktable.c:175 -msgid "Column spacing" -msgstr "ਕਾਲਮਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" - -#: ../gtk/gtktable.c:176 -msgid "The amount of space between two consecutive columns" -msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਾਲਮਾਂ ਵਿਚਕਾਰ" - -#: ../gtk/gtktable.c:185 +#: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਸਾਰਣੀ ਦੇ ਸਾਰੇ ਸੈਲ ਇੱਕੋ ਚੌੜਾਈ/ਉਚਾਈ ਹੈ" -#: ../gtk/gtktable.c:192 -msgid "Left attachment" -msgstr "ਖੱਬਾ ਨੱਥੀ" - -#: ../gtk/gtktable.c:199 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "ਸੱਜਾ ਨੱਥੀ" -#: ../gtk/gtktable.c:200 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "ਕਾਲਮ ਗਿਣਤੀ ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਸੱਜੇ ਪਾਸੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" -#: ../gtk/gtktable.c:206 -msgid "Top attachment" -msgstr "ਉੱਤੇ ਨੱਥੀ" - -#: ../gtk/gtktable.c:207 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "ਕਤਾਰ ਗਿਣਤੀ ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਸਿਰੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" -#: ../gtk/gtktable.c:213 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "ਥੱਲੇ ਨੱਥੀ" -#: ../gtk/gtktable.c:220 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "ਲੇਟਵੀ ਚੋਣ" -#: ../gtk/gtktable.c:221 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "ਚੋਣ ਚਲਾਇਡ ਦੇ ਲੇਟਵੇ ਰਵੱਈਏ ਨੂੰ ਸੈੱਟ ਕਰਦੀ ਹੈ" -#: ../gtk/gtktable.c:227 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "ਲੰਬਕਾਰ ਚੋਣ" -#: ../gtk/gtktable.c:228 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "ਚੋਣ ਚਲਾਇਡ ਦੇ ਲੰਬਕਾਰੀ ਵਿਵਹਾਰ ਨੂੰ ਸੈੱਟ ਕਰਦੀ ਹੈ" -#: ../gtk/gtktable.c:234 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "ਲੇਟਵਾਂ ਚਿਣੋ" -#: ../gtk/gtktable.c:235 +#: ../gtk/gtktable.c:244 msgid "" "Extra space to put between the child and its left and right neighbors, in " "pixels" msgstr "ਚਲਾਇਡ ਅਤੇ ਇਸ ਦੇ ਸੱਜੇ ਤੇ ਖੱਬੇ ਗੁਆਢੀਆ ਵਿਚਕਾਰ ਵਾਧੂ ਥਾਂ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" -#: ../gtk/gtktable.c:241 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "ਲੰਬਕਾਰੀ ਚਿਣੋ" -#: ../gtk/gtktable.c:242 +#: ../gtk/gtktable.c:251 msgid "" "Extra space to put between the child and its upper and lower neighbors, in " "pixels" @@ -5463,63 +5882,59 @@ msgstr "ਖੱਬੀ ਗਰੇਵਿਟੀ" msgid "Whether the mark has left gravity" msgstr "ਕੀ ਮਾਰਕ ਕੋਲ ਖੱਬੀ ਗਰੇਵਿਟੀ ਹੋਵੇ" -#: ../gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:170 msgid "Tag name" msgstr "ਟੈਗ ਨਾਂ" -#: ../gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:171 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "ਟੈਕਸਟ ਟੈਗ ਨੂੰ ਲੱਭਣ ਲਈ ਲੌੜੀਦਾ ਨਾਂ NULL ਬੇਪਛਾਣ ਲਈ ਵਰਤੋ" -#: ../gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:189 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" -#: ../gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:196 msgid "Background full height" msgstr "ਬੈਕਗਰਾਊਂਡ ਦੀ ਪੂਰੀ ਉਚਾਈ" -#: ../gtk/gtktexttag.c:195 +#: ../gtk/gtktexttag.c:197 msgid "" "Whether the background color fills the entire line height or only the height " "of the tagged characters" msgstr "ਕੀ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸਤਰ ਦੀ ਪੂਰੀ ਉਚਾਈ ਨੁੰ ਭਰ ਦੇਵੇ ਜਾਂ ਸਿਰਫ ਟੈਗ ਅੱਖਰਾਂ ਦੀ ਉਚਾਈ ਤੱਕ " -#: ../gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:213 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "ਫਾਰਗਰਾਊਂਡ ਦਾ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" -#: ../gtk/gtktexttag.c:218 -msgid "Text direction" -msgstr "ਟੈਕਸਟ ਦੀ ਦਿਸ਼ਾ" - -#: ../gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:221 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "ਟੈਕਸਟ ਦੀ ਦਿਸ਼ਾ, ਜਿਵੇ ਕਿ ਸੱਜੇ-ਤੋ ਖੱਬਾ ਜਾਂ ਖੱਬੇ ਤੋਂ ਸੱਜਾ" -#: ../gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:270 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "ਪੈਂਨਗੋ-ਸਟਾਇਲ ਵਾਂਗ ਫੋਂਟ ਸਟਾਇਲ ਜਿਵੇਂ ਕਿ PANGO_STYLE_ITALIC" -#: ../gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:279 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "ਪੈਂਨਗੋ-ਵੈਰੀਐਂਟ ਵਾਂਗ ਫੋਂਟ ਵੈਰੀਐਂਟ ਜਿਵੇਂ ਕਿ PANGO_VARIANT_SMALL_CAPS" -#: ../gtk/gtktexttag.c:286 +#: ../gtk/gtktexttag.c:288 msgid "" "Font weight as an integer, see predefined values in PangoWeight; for " "example, PANGO_WEIGHT_BOLD" msgstr "ਫੋਂਟ ਦਾ ਫੈਲਾ ਇੱਕ ਸੰਖਿਆ ਦੀ ਤਰਾਂ, ਪਹਿਲ਼ਾ ਦਿੱਤੇ ਪੈਨਗੋਵੇਟ ਵੇਖੋ; ਜਿਵੇ ਕਿ PANGO_WEIGHT_BOLD" -#: ../gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:299 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "ਫੋਂਟ ਤਣੇ ਪੈਨਗੋ-ਤਣੇ ਵਾਂਗ ਜਿਵੇਂ ਕਿ PANGO_STRETCH_CONDENSED" -#: ../gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:308 msgid "Font size in Pango units" msgstr "ਫੋਂਟ ਅਕਾਰ ਪੈਨਗੋ-ਇਕਾਈ ਵਿੱਚ" -#: ../gtk/gtktexttag.c:316 +#: ../gtk/gtktexttag.c:318 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 " @@ -5529,11 +5944,11 @@ msgstr "" "ਇਸ ਦੀ ਸਿਫਾਰਸ ਕੀਤੀ ਗਈ ਹੈ। ਪੈਨਗੋ ਕੁਝ ਪੈਮਾਨੇ ਪਹਿਲ਼ਾ ਹੀਨਿਰਦਾਰਿਤ ਕਰ ਚੁੱਕਾ ਹੈ , ਜਿਵੇ ਕਿ " "PANGO_SCALE_X_LARGE" -#: ../gtk/gtktexttag.c:336 ../gtk/gtktextview.c:686 +#: ../gtk/gtktexttag.c:338 ../gtk/gtktextview.c:703 msgid "Left, right, or center justification" msgstr "ਖੱਬੇ, ਸੱਜੇ ਜਾਂ ਵਿੱਚਕਾਰ ਤਰਕਸੰਗਤ ਕਰੋ" -#: ../gtk/gtktexttag.c:355 +#: ../gtk/gtktexttag.c:357 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." @@ -5541,256 +5956,261 @@ msgstr "" "ਭਾਸ਼ਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਕੋਡ ਹੈ, ਦਾ ISO ਕੋਡ ਹੈ। ਟੈਕਸਟ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਪੈਨਗੋ ਦੀ ਉਦਾਹਰਨ ਲਈ ਜਾ " "ਸਕਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਹੀਂ ਸਮਝ ਸਕੇ ਤਾਂ, ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਵੀ ਨਹੀਂ ਹੈ।" -#: ../gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:364 msgid "Left margin" msgstr "ਖੱਬਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtktexttag.c:363 ../gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:365 ../gtk/gtktextview.c:712 msgid "Width of the left margin in pixels" msgstr "ਖੱਬੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲਾਂ ਵਿੱਚ" -#: ../gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:374 msgid "Right margin" msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtktexttag.c:373 ../gtk/gtktextview.c:705 +#: ../gtk/gtktexttag.c:375 ../gtk/gtktextview.c:722 msgid "Width of the right margin in pixels" msgstr "ਸੱਜੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲਾਂ ਵਿੱਚ" -#: ../gtk/gtktexttag.c:383 ../gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:385 ../gtk/gtktextview.c:731 msgid "Indent" msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰ" -#: ../gtk/gtktexttag.c:384 ../gtk/gtktextview.c:715 +#: ../gtk/gtktexttag.c:386 ../gtk/gtktextview.c:732 msgid "Amount to indent the paragraph, in pixels" msgstr "ਪ੍ਹੈਰੇ ਵਿੱਚ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ, ਪਿਕਸਲਾਂ ਵਿੱਚ" -#: ../gtk/gtktexttag.c:395 +#: ../gtk/gtktexttag.c:397 msgid "" "Offset of text above the baseline (below the baseline if rise is negative) " "in Pango units" msgstr "ਬੇਸ-ਲਾਈਨ ਤੋਂ ਉੱਤੇ ਟੈਕਸਟ ਦਾ ਸੰਤੁਲਨ ਪੈਗੋ ਇਕਾਈ ਵਿੱਚ (ਹੇਠਾਂ ਉਭਾਰ ਰਿਣਾਤਮਿਕ ਹੈ)" -#: ../gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:406 msgid "Pixels above lines" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉੱਤੇ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:405 ../gtk/gtktextview.c:639 +#: ../gtk/gtktexttag.c:407 ../gtk/gtktextview.c:656 msgid "Pixels of blank space above paragraphs" msgstr "ਪ੍ਹੈਰੇ ਤੋਂ ਉੱਤੇ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:416 msgid "Pixels below lines" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਾਂ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:415 ../gtk/gtktextview.c:649 +#: ../gtk/gtktexttag.c:417 ../gtk/gtktextview.c:666 msgid "Pixels of blank space below paragraphs" msgstr "ਪ੍ਹੈਰੇ ਤੋਂ ਹੇਠਾਂ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:426 msgid "Pixels inside wrap" msgstr "ਲੇਪਟਣ ਵਿੱਚ ਆਏ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:425 ../gtk/gtktextview.c:659 +#: ../gtk/gtktexttag.c:427 ../gtk/gtktextview.c:676 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "ਪ੍ਹੈਰੇ ਵਿੱਚ ਲੇਪਟੀਆਂ ਗਈਆਂ ਸਤਰਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" -#: ../gtk/gtktexttag.c:452 ../gtk/gtktextview.c:677 +#: ../gtk/gtktexttag.c:454 ../gtk/gtktextview.c:694 msgid "Whether to wrap lines never, at word boundaries, or at character boundaries" msgstr "ਕੀ ਲਾਈਨਾਂ ਕਦੇ ਨਹੀਂ ਲੇਪਟਣੀਆਂ ਹਨ, ਨਾ ਸ਼ਬਦ ਦੀ ਹੱਦ ਤੇ ਨਾ ਅੱਖਰਾਂ ਦੀ ਹੱਦ ਤੇ" -#: ../gtk/gtktexttag.c:461 ../gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:463 ../gtk/gtktextview.c:741 msgid "Tabs" msgstr "ਟੈਬ" -#: ../gtk/gtktexttag.c:462 ../gtk/gtktextview.c:725 +#: ../gtk/gtktexttag.c:464 ../gtk/gtktextview.c:742 msgid "Custom tabs for this text" msgstr "ਇਸ ਟੈਕਸਟ ਲਈ ਟੈਬਾਂ ਦੀ ਚੋਣ" -#: ../gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:482 msgid "Invisible" msgstr "ਅਦਿੱਖ" -#: ../gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:483 msgid "Whether this text is hidden." msgstr "ਕੀ ਇਹ ਟੈਕਸਟ ਲੁਕਵਾਂ ਹੋਵੇ" -#: ../gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:497 msgid "Paragraph background color name" msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" -#: ../gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:498 msgid "Paragraph background color as a string" msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸਤਰ ਵਾਂਗ" -#: ../gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:513 msgid "Paragraph background color" msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" -#: ../gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:514 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" -#: ../gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:532 msgid "Margin Accumulates" msgstr "ਹਾਸ਼ੀਆ ਇਕਸਾਰ" -#: ../gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:533 msgid "Whether left and right margins accumulate." msgstr "ਕੀ ਖੱਬਾ ਅਤੇ ਸੱਜਾ ਹਾਸ਼ੀਆ ਇੱਕਠਾ ਹੋਵੇ" -#: ../gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:546 msgid "Background full height set" msgstr "ਬੈਕਗਰਾਊਂਡ ਪੂਰੀ ਉਚਾਈ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:547 msgid "Whether this tag affects background height" msgstr "ਕੀ ਇਹ ਟੈਗ ਬੈਕਗਰਾਊਂਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:586 msgid "Justification set" msgstr "ਅਨੁਕੂਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:587 msgid "Whether this tag affects paragraph justification" msgstr "ਕੀ ਇਹ ਟੈਗ ਤਰਕਸੰਗਤ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:594 msgid "Left margin set" msgstr "ਖੱਬਾ-ਹਾਸ਼ੀਏ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:595 msgid "Whether this tag affects the left margin" msgstr "ਕੀ ਇਹ ਟੈਗ ਅਗਲੇ-ਪਰਦਾ-ਚਿਤਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:598 msgid "Indent set" msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:599 msgid "Whether this tag affects indentation" msgstr "ਕੀ ਇਹ ਟੈਗ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:606 msgid "Pixels above lines set" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉਪਰਲੇ ਪਿਕਸਲਾਂ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:605 ../gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:607 ../gtk/gtktexttag.c:611 msgid "Whether this tag affects the number of pixels above lines" msgstr "ਕੀ ਇਹ ਟੈਗ ਸਤਰ ਤੋਂ ਉਪਰਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:610 msgid "Pixels below lines set" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਲੇ ਪਿਕਸਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:614 msgid "Pixels inside wrap set" msgstr "ਪਿਕਸਲ ਅੰਦਰੂਨੀ ਲਪੇਟਣ ਦਿਓ" -#: ../gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:615 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "ਕੀ ਇਹ ਟੈਗ ਸਤਰਾਂ ਵਿੱਚ ਲੇਪਟੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:622 msgid "Right margin set" msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ ਦਿਓ" -#: ../gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:623 msgid "Whether this tag affects the right margin" msgstr "ਕੀ ਇਹ ਟੈਗ ਸੱਜਾ ਹਾਸ਼ੀਏ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:630 msgid "Wrap mode set" msgstr "ਲਪੇਟਣ ਮੋਡ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:631 msgid "Whether this tag affects line wrap mode" msgstr "ਕੀ ਇਹ ਟੈਗ ਲੇਪਟਣ ਦੀ ਢੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:634 msgid "Tabs set" msgstr "ਟੈਬ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:635 msgid "Whether this tag affects tabs" msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਬਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:638 msgid "Invisible set" msgstr "ਅਦਿੱਖ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:639 msgid "Whether this tag affects text visibility" msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਕਸਟ ਦੀ ਦਿੱਖ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:642 msgid "Paragraph background set" msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:643 msgid "Whether this tag affects the paragraph background color" msgstr "ਕੀ ਇਹ ਟੈਗ ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtktextview.c:638 +#: ../gtk/gtktextview.c:655 msgid "Pixels Above Lines" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉੱਤੇ ਪਿਕਸਲ" -#: ../gtk/gtktextview.c:648 +#: ../gtk/gtktextview.c:665 msgid "Pixels Below Lines" msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਾਂ ਪਿਕਸਲ" -#: ../gtk/gtktextview.c:658 +#: ../gtk/gtktextview.c:675 msgid "Pixels Inside Wrap" msgstr "ਲੇਪਟਣ ਵਿੱਚ ਪਿਕਸਲ" -#: ../gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:693 msgid "Wrap Mode" msgstr "ਲੇਪਟਣ ਮੋਡ" -#: ../gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:711 msgid "Left Margin" msgstr "ਖੱਬਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtktextview.c:704 +#: ../gtk/gtktextview.c:721 msgid "Right Margin" msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ" -#: ../gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:749 msgid "Cursor Visible" msgstr "ਕਰਸਰ ਅਦਿੱਖ" -#: ../gtk/gtktextview.c:733 +#: ../gtk/gtktextview.c:750 msgid "If the insertion cursor is shown" msgstr "ਜੇ ਵਿਚਕਾਰ ਕਰਸਰ ਵੇਖਾਈ ਗਈ ਹੈ" -#: ../gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:757 msgid "Buffer" msgstr "ਬਫਰ" -#: ../gtk/gtktextview.c:741 +#: ../gtk/gtktextview.c:758 msgid "The buffer which is displayed" msgstr "ਬਫਰ, ਜੋ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" -#: ../gtk/gtktextview.c:749 +#: ../gtk/gtktextview.c:766 msgid "Whether entered text overwrites existing contents" msgstr "ਕੀ ਦਿੱਤਾ ਗਿਆ ਟੈਕਸਟ ਮੌਜੂਦਾ ਹਿੱਸੇ ਨੂੰ ਖਤਮ ਕਰ ਦੇਵੇ" -#: ../gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:773 msgid "Accepts tab" msgstr "ਮਨਜ਼ੂਰ ਟੈਬ" -#: ../gtk/gtktextview.c:757 +#: ../gtk/gtktextview.c:774 msgid "Whether Tab will result in a tab character being entered" msgstr "ਕੀ ਟੈਬ ਨਤੀਜਾ ਹੋਵੇ, ਦਿੱਤੇ ਗਏ ਟੈਬ ਅੱਖਰ ਦਾ" -#: ../gtk/gtktextview.c:786 +#: ../gtk/gtktextview.c:809 msgid "Error underline color" msgstr "ਗਲਤੀ ਹੇਠ ਰੰਗਦਾਰ ਲਾਈਨ" -#: ../gtk/gtktextview.c:787 +#: ../gtk/gtktextview.c:810 msgid "Color with which to draw error-indication underlines" msgstr "ਰੰਗ ਜਿਸ ਨਾਲ ਗਲਤੀ-ਸੰਕੇਤਕ ਲਾਈਨ ਖਿੱਚੀ ਜਾਵੇ" +#: ../gtk/gtkthemingengine.c:249 +#| msgid "Theme Name" +msgid "Theming engine name" +msgstr "ਥੀਮਿੰਗ ਇੰਜਣ ਨਾਂ" + #: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "ਉਸੇਤਰ੍ਹਾਂ ਦੀਆਂ ਪਰਾਕਸੀ ਬਣਾਉ, ਜਿਸਤਰਾਂ ਦੀਆਂ ਰੇਡੀਉ ਕਾਰਵਾਈ ਹੈ" @@ -5803,103 +6223,103 @@ msgstr "ਕੀ ਇਸ ਕਾਰਵਾਈ ਦੀ ਪਰਾਕਸੀ ਰੇਡੀ msgid "Whether the toggle action should be active" msgstr "ਜੇ ਤਬਦੀਲ ਕਾਰਵਾਈ ਸਰਗਰਮ ਹੋਵੇ" -#: ../gtk/gtktogglebutton.c:116 ../gtk/gtktoggletoolbutton.c:113 +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 msgid "If the toggle button should be pressed in" msgstr "ਕੀ ਬਦਲਵਾਂ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ" -#: ../gtk/gtktogglebutton.c:124 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "ਕੀ ਬਦਲਵੇ ਬਟਨ \"ਵਿਚਕਾਰਲੀ\" ਸਥਿਤੀ ਵਿੱਚ ਹੈ" -#: ../gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "ਇੰਡੀਕੇਟਰ ਬਣਾਓ" -#: ../gtk/gtktogglebutton.c:132 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "ਕੀ ਬਟਨ ਦਾ ਬਦਲਵਾਂ ਹਿੱਸਾ ਵੇਖਾਇਆ ਜਾਵੇ" -#: ../gtk/gtktoolbar.c:488 ../gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1061 msgid "Toolbar Style" msgstr "ਟੂਲਬਾਰ ਸਟਾਇਲ" -#: ../gtk/gtktoolbar.c:489 +#: ../gtk/gtktoolbar.c:490 msgid "How to draw the toolbar" msgstr "ਟੂਲਬਾਰ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ" -#: ../gtk/gtktoolbar.c:496 +#: ../gtk/gtktoolbar.c:497 msgid "Show Arrow" msgstr "ਤੀਰ ਵੇਖਾਓ" -#: ../gtk/gtktoolbar.c:497 +#: ../gtk/gtktoolbar.c:498 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "ਕੀ ਤੀਰ ਵੇਖਾਇਆ ਜਾਵੇ ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਵਿੱਚ ਸਮਾ ਨਾ ਸਕੇ" -#: ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolbar.c:519 msgid "Size of icons in this toolbar" msgstr "ਇਹ ਟੂਲਬਾਰ ਵਿੱਚ ਆਈਕਾਨਾਂ ਦਾ ਅਕਾਰ" -#: ../gtk/gtktoolbar.c:533 ../gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1047 msgid "Icon size set" msgstr "ਆਈਕਾਨ ਅਕਾਰ ਦਿਓ" -#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1048 msgid "Whether the icon-size property has been set" msgstr "ਕੀ ਆਈਕਾਨ-ਅਕਾਰ ਵਿਸ਼ੇਸ਼ਤਾ ਦਿੱਤੀ ਜਾਵੇ" -#: ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolbar.c:544 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "ਕੀ ਆਈਟਮ ਹੋਰ ਵਾਧੂ ਥਾਂ ਲਵੇ ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਫੈਲੇ" -#: ../gtk/gtktoolbar.c:551 ../gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1642 msgid "Whether the item should be the same size as other homogeneous items" msgstr "ਕੀ ਆਈਟਮ ਉਸੇ ਆਕਾਰ ਦੀ ਹੋਵੇ ਜਿਸ ਦੀ ਹੋਰ ਸਮ-ਰੂਪ ਆਈਟਮਾਂ ਹਨ" -#: ../gtk/gtktoolbar.c:558 +#: ../gtk/gtktoolbar.c:559 msgid "Spacer size" msgstr "ਸਪੇਸਰ ਆਕਾਰ" -#: ../gtk/gtktoolbar.c:559 +#: ../gtk/gtktoolbar.c:560 msgid "Size of spacers" msgstr "ਸਪੇਸਰ ਦਾ ਅਕਾਰ" -#: ../gtk/gtktoolbar.c:568 +#: ../gtk/gtktoolbar.c:569 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "ਟੂਲਬਾਰ ਦੇ ਪਰਛਾਵੇ ਅਤੇ ਬਟਨਾਂ ਵਿਚਕਾਰ ਹਾਸ਼ੀਏ ਦੀ ਥਾਂ ਦੀ ਮਾਤਰਾ" -#: ../gtk/gtktoolbar.c:576 +#: ../gtk/gtktoolbar.c:577 msgid "Maximum child expand" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚਾਈਲਡ ਫੈਲਾ" -#: ../gtk/gtktoolbar.c:577 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum amount of space an expandable item will be given" msgstr "ਇੱਕ ਫੈਲਣਯੋਗ ਆਈਟਮ ਨੂੰ ਦਿੱਤਾ ਜਾਣ ਵਾਲਾ ਵੱਧ ਤੋਂ ਵੱਧ ਫਾਸਲਾ" -#: ../gtk/gtktoolbar.c:585 +#: ../gtk/gtktoolbar.c:586 msgid "Space style" msgstr "ਖਾਲੀ ਸਟਾਇਲ" -#: ../gtk/gtktoolbar.c:586 +#: ../gtk/gtktoolbar.c:587 msgid "Whether spacers are vertical lines or just blank" msgstr "ਕੀ ਵੱਖਰਵੇ ਵਿੱਚ ਲੰਬਕਾਰੀ ਲਾਈਨਾਂ ਹੋਣ ਜਾਂ ਸਿਰਫ ਖਾਲੀ ਹੀ ਹੋਵੇ" -#: ../gtk/gtktoolbar.c:593 +#: ../gtk/gtktoolbar.c:594 msgid "Button relief" msgstr "ਬਟਨ ਛੋਟ" -#: ../gtk/gtktoolbar.c:594 +#: ../gtk/gtktoolbar.c:595 msgid "Type of bevel around toolbar buttons" msgstr "ਟੂਲਬਾਰ ਦੁਆਲੇ bevel ਦੀ ਕਿਸਮ" -#: ../gtk/gtktoolbar.c:601 +#: ../gtk/gtktoolbar.c:602 msgid "Style of bevel around the toolbar" msgstr "ਟੂਲਬਾਰ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:202 msgid "Text to show in the item." msgstr "ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸ਼ਬਦ" -#: ../gtk/gtktoolbutton.c:210 +#: ../gtk/gtktoolbutton.c:209 msgid "" "If set, an underline in the label property indicates that the next character " "should be used for the mnemonic accelerator key in the overflow menu" @@ -5907,43 +6327,43 @@ msgstr "" "ਜੇਕਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ, ਲੇਬਲ ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਹੇਠ ਲਾਈਨ ਵੇਖਾਵੇਗੀ ਕਿ ਅਗਲਾ ਅੱਖਰ ਮੇਨੂ ਵਿੱਚ ਤੇਜ਼-ਕੀ ਵਲੋਂ " "ਵਰਤਿਆ ਜਾਵੇਗਾ " -#: ../gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:216 msgid "Widget to use as the item label" msgstr "ਆਈਟਮ ਲੇਬਲ ਦੀ ਤਰ੍ਹਾਂ ਵਰਤਣ ਲਈ ਵਿਦਗਿਟ" -#: ../gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:222 msgid "Stock Id" msgstr "ਸਟਾਕ Id" -#: ../gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:223 msgid "The stock icon displayed on the item" msgstr "ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸਟਾਕ ਆਈਕਾਨ" -#: ../gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:239 msgid "Icon name" msgstr "ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:240 msgid "The name of the themed icon displayed on the item" msgstr "ਆਈਟਮ ਉੱਤੇ ਵੇਖਾਉਣ ਲਈ ਸਰੂਪ ਆਈਕਾਨ ਦਾ ਨਾਂ" -#: ../gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:246 msgid "Icon widget" msgstr "ਆਈਕਾਨ ਵਿਦਗਿਟ" -#: ../gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget to display in the item" msgstr "ਆਈਕਾਨ ਵਿਦਗਿਟ, ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ" -#: ../gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:260 msgid "Icon spacing" msgstr "ਆਈਕਾਨ ਫਾਸਲਾ" -#: ../gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:261 msgid "Spacing in pixels between the icon and label" msgstr "ਆਈਕਾਨ ਅਤੇ ਲੇਬਲ ਵਿੱਚ ਪਿਕਸਲ ਅਨੁਸਾਰ ਫਾਸਲਾ" -#: ../gtk/gtktoolitem.c:201 +#: ../gtk/gtktoolitem.c:210 msgid "" "Whether the toolbar item is considered important. When TRUE, toolbar buttons " "show text in GTK_TOOLBAR_BOTH_HORIZ mode" @@ -5951,729 +6371,781 @@ msgstr "" "ਕੀ ਟੂਲਬਾਰ ਦੀ ਆਈਟਮ ਨੂੰ ਖਾਸ ਮੰਨਣਾ ਹੈ ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਟੂਲਬਾਰ ਦੇ ਬਟਨGTK_TOOLBAR_BOTH_HORIZ " "ਮੋਡ ਵਿੱਚ ਸ਼ਬਦ ਵੇਖਾਉਣਗੇ।" -#: ../gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1589 msgid "The human-readable title of this item group" msgstr "ਇਹ ਆਈਟਮ ਗਰੁੱਪ ਦਾ ਪੜ੍ਹਨਯੋਗ ਟਾਈਟਲ" -#: ../gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1596 msgid "A widget to display in place of the usual label" msgstr "ਆਮ ਲੇਬਲ ਦੀ ਥਾਂ ਵੇਖਾਉਣ ਲਈ ਵਿਦਜੈੱਟ" -#: ../gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "Collapsed" msgstr "ਸਮੇਟੇ" -#: ../gtk/gtktoolitemgroup.c:1586 +#: ../gtk/gtktoolitemgroup.c:1603 msgid "Whether the group has been collapsed and items are hidden" msgstr "ਕੀ ਗਰੁੱਪ ਸਮੇਟਿਆ ਜਾਵੇ ਅਤੇ ਆਈਟਮਾਂ ਓਹਲੇ ਹੋਣ" -#: ../gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1609 msgid "ellipsize" msgstr "ਅੰਡਕਾਰ-ਅਕਾਰ" -#: ../gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1610 msgid "Ellipsize for item group headers" msgstr "ਆਈਟਮ ਗਰੁੱਪ ਹੈੱਡਰਾਂ ਲਈ ਅੰਡਾਕਾਰ" -#: ../gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Header Relief" msgstr "ਹੈੱਡਰ ਰੀਲਿਫ਼" -#: ../gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1617 msgid "Relief of the group header button" msgstr "ਗਰੁੱਪ ਹੈੱਡਰ ਬਟਨ ਲਈ ਰੀਲਿਫ਼" -#: ../gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1632 msgid "Header Spacing" msgstr "ਹੈੱਡਰ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1633 msgid "Spacing between expander arrow and caption" msgstr "ਐਕਸਪੈਂਡਰ ਤੀਰ ਅਤੇ ਸੁਰਖੀ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" -#: ../gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1649 msgid "Whether the item should receive extra space when the group grows" msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਫੈਲਣ ਦੌਰਾਨ ਵਾਧੂ ਥਾਂ ਲਵੇ" -#: ../gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1656 msgid "Whether the item should fill the available space" msgstr "ਕੀ ਆਈਟਮ ਉਪਲੱਬਧ ਥਾਂ ਭਰੇ" -#: ../gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "New Row" msgstr "ਨਵੀਂ ਕਤਾਰ" -#: ../gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1663 msgid "Whether the item should start a new row" msgstr "ਕੀ ਆਈਟਮ ਨਵੀਂ ਕਤਾਰ ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਵੇ" -#: ../gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1670 msgid "Position of the item within this group" msgstr "ਇਸ ਗਰੁੱਪ ਵਿੱਚ ਆਈਟਮ ਦੀ ਸਥਿਤੀ" -#: ../gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1032 msgid "Size of icons in this tool palette" msgstr "ਇਸ ਟੂਲ ਪਲੇਅਟ ਵਿੱਚ ਆਈਕਾਨਾਂ ਦਾ ਆਕਾਰ" -#: ../gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1062 msgid "Style of items in the tool palette" msgstr "ਟੂਲ ਪਲੇਅਟ ਵਿੱਚ ਆਈਟਮਾਂ ਦਾ ਸਟਾਈਲ" -#: ../gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1078 msgid "Exclusive" msgstr "ਖਾਸ" -#: ../gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1079 msgid "Whether the item group should be the only expanded at a given time" msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਦਿੱਤੇ ਸਮੇਂ ਦੌਰਾਨ ਹੀ ਫੈਲੇ" -#: ../gtk/gtktoolpalette.c:1066 +#: ../gtk/gtktoolpalette.c:1094 msgid "Whether the item group should receive extra space when the palette grows" msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਪਲੇਅਟ ਫੈਲਣ ਦੌਰਾਨ ਵਾਧੂ ਥਾਂ ਲਵੇ" -#: ../gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:135 msgid "Foreground color for symbolic icons" msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਫਾਰਗਰਾਊਂਡ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color" msgstr "ਗਲਤੀ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:143 msgid "Error color for symbolic icons" msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਗਲਤੀ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color" msgstr "ਚੇਤਾਵਨੀ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:151 msgid "Warning color for symbolic icons" msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਚੇਤਾਵਨੀ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color" msgstr "ਸਫ਼ਲ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:159 msgid "Success color for symbolic icons" msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਸਫ਼ਲ ਰੰਗ" -#: ../gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:167 msgid "Padding that should be put around icons in the tray" msgstr "ਪੈਡਿੰਗ, ਜੋ ਕਿ ਟਰੇ ਦੇ ਆਈਕਾਨ ਦੁਆਲੇ ਰੱਖਣੀ ਹੈ" -#: ../gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemenu.c:287 +#| msgid "TreeView Model" +msgid "TreeMenu model" +msgstr "ਟਰੀ-ਮੇਨੂ ਮਾਡਲ" + +#: ../gtk/gtktreemenu.c:288 +#| msgid "The model for the tree view" +msgid "The model for the tree menu" +msgstr "ਟਰੀ ਮੇਨੂ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "ਟਰੀਮੇਨੂ ਰੂਟ ਕਤਾਰ" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "ਟਰੀਮੇਨੂ ਦਿੱਤੇ ਰੂਟ ਲਈ ਚਲਾਈਡ ਵੇਖਾਏਗਾ" + +#: ../gtk/gtktreemenu.c:344 +#| msgid "Tearoff Title" +msgid "Tearoff" +msgstr "ਵੱਖ ਕਰੋ" + +#: ../gtk/gtktreemenu.c:345 +#| msgid "Whether the mark has left gravity" +msgid "Whether the menu has a tearoff item" +msgstr "ਕੀ ਮੇਨੂ ਵਿੱਚ ਵੱਖ ਕਰੋ ਆਈਟਮ ਹੋਵੇ" + +#: ../gtk/gtktreemenu.c:361 +#| msgid "Wrap width" +msgid "Wrap Width" +msgstr "ਚੌੜਾਈ ਲਪੇਟੋ" + +#: ../gtk/gtktreemenu.c:362 +#| msgid "Wrap width for laying out the items in a grid" +msgid "Wrap width for laying out items in a grid" +msgstr "ਗਰਿੱਡ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਲਪੇਟਣ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtktreemodelsort.c:310 msgid "TreeModelSort Model" msgstr "TreeModelSort ਮਾਡਲ" -#: ../gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:311 msgid "The model for the TreeModelSort to sort" msgstr "TreeModelSort ਲੜੀਬੱਧ ਕਰਨ ਲਈ ਮਾਡਲ" -#: ../gtk/gtktreeview.c:563 +#: ../gtk/gtktreeview.c:989 msgid "TreeView Model" msgstr "ਟਰੀ-ਵਿਊ ਮਾਡਲ" -#: ../gtk/gtktreeview.c:564 +#: ../gtk/gtktreeview.c:990 msgid "The model for the tree view" msgstr "ਟਰੀ-ਵਿਊ ਲਈ ਮਾਡਲ" -#: ../gtk/gtktreeview.c:572 -msgid "Horizontal Adjustment for the widget" -msgstr "ਲੇਟਵੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" - -#: ../gtk/gtktreeview.c:580 -msgid "Vertical Adjustment for the widget" -msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" - -#: ../gtk/gtktreeview.c:587 +#: ../gtk/gtktreeview.c:1002 msgid "Headers Visible" msgstr "ਹੈੱਡਰ ਦਿੱਖ" -#: ../gtk/gtktreeview.c:588 +#: ../gtk/gtktreeview.c:1003 msgid "Show the column header buttons" msgstr "ਕਾਲਮ ਹੈੱਡਰ ਬਟਨ ਵੇਖਾਓ" -#: ../gtk/gtktreeview.c:595 +#: ../gtk/gtktreeview.c:1010 msgid "Headers Clickable" msgstr "ਹੈੱਡਰ ਦਬਾਉਣਯੋਗ" -#: ../gtk/gtktreeview.c:596 +#: ../gtk/gtktreeview.c:1011 msgid "Column headers respond to click events" msgstr "ਦਬਾੳਣ ਦੀ ਕਾਰਵਾਈ ਤੇ ਕਾਲਮ ਹੈੱਡਰ ਜਵਾਬਦੇਹ ਹੋਵੇ" -#: ../gtk/gtktreeview.c:603 +#: ../gtk/gtktreeview.c:1018 msgid "Expander Column" msgstr "ਫੈਲਣਵਾਲਾ ਕਾਲਮ" -#: ../gtk/gtktreeview.c:604 +#: ../gtk/gtktreeview.c:1019 msgid "Set the column for the expander column" msgstr "ਫੈਲਣਵਾਲਾ ਕਾਲਮ ਲਈ ਕਾਲਮ ਚੁਣੋ" -#: ../gtk/gtktreeview.c:619 +#: ../gtk/gtktreeview.c:1034 msgid "Rules Hint" msgstr "ਨਿਯਮ ਇਸ਼ਾਰਾ" -#: ../gtk/gtktreeview.c:620 +#: ../gtk/gtktreeview.c:1035 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "ਬਦਲਵੇ ਰੰਗ ਵਿੱਚ ਕਤਾਰ ਬਣਾਉਣ ਲਈ ਸਰੂਪ-ਇੰਜਣ ਦੇ ਲਈ ਸੰਕੇਤ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtktreeview.c:627 +#: ../gtk/gtktreeview.c:1042 msgid "Enable Search" msgstr "ਖੋਜ ਨੂੰ ਯੋਗ ਕਰੋ" -#: ../gtk/gtktreeview.c:628 +#: ../gtk/gtktreeview.c:1043 msgid "View allows user to search through columns interactively" msgstr "ਦਰਿਸ਼ ਵਰਤਣਵਾਲਿਆ ਨੂੰ ਕਾਲਮਾਂ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲ਼ੀ ਤਰੀਕੇ ਨਾਲ ਖੋਜ ਕਰਨ ਦਿੰਦਾ ਹੈ" -#: ../gtk/gtktreeview.c:635 +#: ../gtk/gtktreeview.c:1050 msgid "Search Column" msgstr "ਕਾਲਮ ਖੋਜ" -#: ../gtk/gtktreeview.c:636 +#: ../gtk/gtktreeview.c:1051 msgid "Model column to search through during interactive search" msgstr "ਦਿਲਖਿੱਚਵੀਂ ਖੋਜ ਦੌਰਾਨ ਮਾਡਲ ਕਾਲਮ ਦੀ ਖੋਜ" -#: ../gtk/gtktreeview.c:656 +#: ../gtk/gtktreeview.c:1071 msgid "Fixed Height Mode" msgstr "ਨਿਸ਼ਚਿਤ ਉਚਾਈ ਮੋਡ" -#: ../gtk/gtktreeview.c:657 +#: ../gtk/gtktreeview.c:1072 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "ਸਾਰੀਆ ਕਤਾਰਾਂ ਦੀ ਨਿਸ਼ਚਿਤ ਉਚਾਈ ਮੰਨ ਕੇ GtkTreeView ਦੀ ਗਤੀ ਵਧਾਉ " -#: ../gtk/gtktreeview.c:677 +#: ../gtk/gtktreeview.c:1092 msgid "Hover Selection" msgstr "ਹੋਵਰ ਚੋਣ" -#: ../gtk/gtktreeview.c:678 +#: ../gtk/gtktreeview.c:1093 msgid "Whether the selection should follow the pointer" msgstr "ਕੀ ਚੋਣ ਸੂਚਕ ਦਾ ਪਿੱਛਾ ਕਰੇ" -#: ../gtk/gtktreeview.c:697 +#: ../gtk/gtktreeview.c:1112 msgid "Hover Expand" msgstr "ਹੋਵਰ ਫੈਲਾਓ" -#: ../gtk/gtktreeview.c:698 +#: ../gtk/gtktreeview.c:1113 msgid "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "ਕੀ ਸੂਚਕ ਕਤਾਰਾਂ ਦੇ ਉੱਪਰ ਹੋਣ ਸਮੇਂ ਸਮੇਟੀਆਂ/ਫੈਲਾਈਆਂ ਜਾਣ" -#: ../gtk/gtktreeview.c:712 +#: ../gtk/gtktreeview.c:1127 msgid "Show Expanders" msgstr "ਫੈਲਣ ਵਾਲੇ ਵੇਖਾਓ" -#: ../gtk/gtktreeview.c:713 +#: ../gtk/gtktreeview.c:1128 msgid "View has expanders" msgstr "ਫੈਲਾਉਣ ਵਾਲੇ ਵਾਂਗ ਵੇਖਾਓ" -#: ../gtk/gtktreeview.c:727 +#: ../gtk/gtktreeview.c:1142 msgid "Level Indentation" msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਦਾ ਲੈਵਲ" -#: ../gtk/gtktreeview.c:728 +#: ../gtk/gtktreeview.c:1143 msgid "Extra indentation for each level" msgstr "ਹਰੇਕ ਲੈਵਲ ਲਈ ਵਾਧੂ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ" -#: ../gtk/gtktreeview.c:737 +#: ../gtk/gtktreeview.c:1152 msgid "Rubber Banding" msgstr "ਰਬਰ ਬੈਂਗਿੰਡ" -#: ../gtk/gtktreeview.c:738 +#: ../gtk/gtktreeview.c:1153 msgid "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "ਮਾਊਸ ਸੰਕੇਤਕ ਰਾਹੀਂ ਚੁੱਕ ਕੇ ਕਈ ਆਈਟਮਾਂ ਦੀ ਚੋਣ ਨੂੰ ਮਨਜ਼ੂਰ ਕਰਨਾ ਹੈ" -#: ../gtk/gtktreeview.c:745 +#: ../gtk/gtktreeview.c:1160 msgid "Enable Grid Lines" msgstr "ਗਰਿੱਡ ਲਾਈਨਾਂ ਯੋਗ" -#: ../gtk/gtktreeview.c:746 +#: ../gtk/gtktreeview.c:1161 msgid "Whether grid lines should be drawn in the tree view" msgstr "ਕੀ ਲੜੀ ਝਲਕ ਵਿੱਚ ਗਰਿੱਡ ਲਾਈਨਾਂ ਵੇਖਾਉਣੀਆਂ ਹਨ" -#: ../gtk/gtktreeview.c:754 +#: ../gtk/gtktreeview.c:1169 msgid "Enable Tree Lines" msgstr "ਲੜੀ ਲਾਈਨਾਂ ਯੋਗ" -#: ../gtk/gtktreeview.c:755 +#: ../gtk/gtktreeview.c:1170 msgid "Whether tree lines should be drawn in the tree view" msgstr "ਕੀ ਲੜੀ ਝਲਕ ਵਿੱਚ ਲੜੀ ਲਾਈਨਾਂ ਖਿੱਚੀਆਂ ਜਾਣ" -#: ../gtk/gtktreeview.c:763 +#: ../gtk/gtktreeview.c:1178 msgid "The column in the model containing the tooltip texts for the rows" msgstr "ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਕਤਾਰਾਂ ਲਈ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਰੱਖਦਾ ਹੈ" -#: ../gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical Separator Width" msgstr "ਲੰਬਕਾਰੀ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਈ" -#: ../gtk/gtktreeview.c:786 +#: ../gtk/gtktreeview.c:1201 msgid "Vertical space between cells. Must be an even number" msgstr "ਸੈੱਲ਼ਾਂ ਵਿੱਚਕਾਰ ਲੰਬਕਾਰੀ ਖਾਲੀ ਚੌੜਾਈ, ਜਿਸਤ ਸੰਖਿਆ ਹੋਣੀ ਜ਼ਰੂਰੀ ਹੈ" -#: ../gtk/gtktreeview.c:794 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal Separator Width" msgstr "ਲੇਟਵੇ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ" -#: ../gtk/gtktreeview.c:795 +#: ../gtk/gtktreeview.c:1210 msgid "Horizontal space between cells. Must be an even number" msgstr "ਸੈੱਲ਼ਾਂ ਵਿੱਚਕਾਰ ਲੇਟਵੀ ਖਾਲੀ ਚੌੜਾਈ, ਜਿਸਤ ਸੰਖਿਆ ਹੋਣੀ ਜ਼ਰੂਰੀ ਹੈ" -#: ../gtk/gtktreeview.c:803 +#: ../gtk/gtktreeview.c:1218 msgid "Allow Rules" msgstr "ਰੂਲ ਮਨਜ਼ੂਰ" -#: ../gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1219 msgid "Allow drawing of alternating color rows" msgstr "ਬਦਲਵੇ ਰੰਗ ਦੀਆ ਕਤਾਰਾਂ ਬਣਾਉਣ ਨੂੰ ਚਾਲੂ ਕਰੋ" -#: ../gtk/gtktreeview.c:810 +#: ../gtk/gtktreeview.c:1225 msgid "Indent Expanders" msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਨੂੰ ਫੈਲਾਓ" -#: ../gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1226 msgid "Make the expanders indented" msgstr "ਫੈਲਾਉ ਨੂੰ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰ ਬਣਾਓ" -#: ../gtk/gtktreeview.c:817 +#: ../gtk/gtktreeview.c:1232 msgid "Even Row Color" msgstr "ਜਿਸਤ ਕਤਾਰ ਦਾ ਰੰਗ" -#: ../gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1233 msgid "Color to use for even rows" msgstr "ਜਿਸਤ ਕਤਾਰ ਲਈ ਵਰਤਣ ਵਾਲਾ ਰੰਗ" -#: ../gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1239 msgid "Odd Row Color" msgstr "ਟਾਂਕ ਕਤਾਰ ਦਾ ਰੰਗ" -#: ../gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1240 msgid "Color to use for odd rows" msgstr "ਟਾਂਕ ਕਤਾਰ ਲਈ ਵਰਤਣ ਵਾਲਾ ਰੰਗ" -#: ../gtk/gtktreeview.c:831 +#: ../gtk/gtktreeview.c:1246 msgid "Grid line width" msgstr "ਗਰਿੱਡ ਲਾਈਨ ਚੌੜਾਈ" -#: ../gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1247 msgid "Width, in pixels, of the tree view grid lines" msgstr "ਟਰੀ ਝਲਕ ਗਰਿੱਡ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲ ਵਿੱਚ" -#: ../gtk/gtktreeview.c:838 +#: ../gtk/gtktreeview.c:1253 msgid "Tree line width" msgstr "ਟਰੀ ਲਾਈਨ ਚੌੜਾਈ" -#: ../gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1254 msgid "Width, in pixels, of the tree view lines" msgstr "ਲੜੀ ਝਲਕ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲ ਵਿੱਚ" -#: ../gtk/gtktreeview.c:845 +#: ../gtk/gtktreeview.c:1260 msgid "Grid line pattern" msgstr "ਗਰਿੱਡ ਲਾਈਨ ਪੈਟਰਨ" -#: ../gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1261 msgid "Dash pattern used to draw the tree view grid lines" msgstr "ਲੜੀ ਝਲਕ ਗਰਿੱਡ ਲਾਈਨਾਂ ਖਿੱਚਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡੈਸ਼ ਪੈਟਰਨ" -#: ../gtk/gtktreeview.c:852 +#: ../gtk/gtktreeview.c:1267 msgid "Tree line pattern" msgstr "ਟਰੀ ਲਾਈਨ ਪੈਟਰਨ" -#: ../gtk/gtktreeview.c:853 +#: ../gtk/gtktreeview.c:1268 msgid "Dash pattern used to draw the tree view lines" msgstr "ਲੜੀ ਝਲਕ ਲਾਈਨਾਂ ਖਿੱਚਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡੈਸ਼ ਪੈਟਰਨ" -#: ../gtk/gtktreeviewcolumn.c:196 +#: ../gtk/gtktreeviewcolumn.c:244 msgid "Whether to display the column" msgstr "ਕੀ ਕਾਲਮ ਵੇਖਾਉਣਾ ਹੈ" -#: ../gtk/gtktreeviewcolumn.c:203 ../gtk/gtkwindow.c:644 +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 msgid "Resizable" msgstr "ਮੁੜ-ਆਕਾਰਯੋਗ" -#: ../gtk/gtktreeviewcolumn.c:204 +#: ../gtk/gtktreeviewcolumn.c:252 msgid "Column is user-resizable" msgstr "ਕਾਲਮ ਵਰਤਣਵਾਲੇ ਰਾਹੀਂ ਮੁੜ-ਅਕਾਰਯੋਗ ਹੈ" -#: ../gtk/gtktreeviewcolumn.c:212 +#: ../gtk/gtktreeviewcolumn.c:260 msgid "Current width of the column" msgstr "ਕਾਲਮ ਦੀ ਮੌਜੂਦਾ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:221 -msgid "Space which is inserted between cells" -msgstr "ਸੈੱਲਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਥਾਂ" - -#: ../gtk/gtktreeviewcolumn.c:229 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Sizing" msgstr "ਅਕਾਰ" -#: ../gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:278 msgid "Resize mode of the column" msgstr "ਕਾਲਮ ਦਾ ਮੁੜ-ਅਕਾਰ ਮੋਡ" -#: ../gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Fixed Width" msgstr "ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:239 +#: ../gtk/gtktreeviewcolumn.c:287 msgid "Current fixed width of the column" msgstr "ਕਾਲਮ ਦੀ ਮੌਜੂਦਾ ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:248 -msgid "Minimum Width" -msgstr "ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" - -#: ../gtk/gtktreeviewcolumn.c:249 +#: ../gtk/gtktreeviewcolumn.c:297 msgid "Minimum allowed width of the column" msgstr "ਕਾਲਮ ਦੀ ਘੱਟੋ-ਘੱਟ ਲਾਗੂ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:258 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum Width" msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:259 +#: ../gtk/gtktreeviewcolumn.c:307 msgid "Maximum allowed width of the column" msgstr "ਕਾਲਮ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਲਾਗੂ ਚੌੜਾਈ" -#: ../gtk/gtktreeviewcolumn.c:269 +#: ../gtk/gtktreeviewcolumn.c:317 msgid "Title to appear in column header" msgstr "ਕਾਲਮ ਦੇ ਹੈੱਡਰ ਉੱਤੇ ਦਿੱਸਣ ਵਾਲਾ ਕਾਲਮ" -#: ../gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:325 msgid "Column gets share of extra width allocated to the widget" msgstr "ਵਿਦਗਿਟ ਨੂੰ ਦਿੱਤੀ ਗਈ ਵਾਧੂ ਚੌੜਾਈ ਵਿੱਚੋਂ ਕਾਲਮ ਹਿੱਸਾ ਪਰਾਪਤ ਕਰੇ" -#: ../gtk/gtktreeviewcolumn.c:284 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Clickable" msgstr "ਕਲਿੱਕ-ਯੋਗ" -#: ../gtk/gtktreeviewcolumn.c:285 +#: ../gtk/gtktreeviewcolumn.c:333 msgid "Whether the header can be clicked" msgstr "ਕੀ ਹੈੱਡਰ ਦਬਾਉਣਯੋਗ ਹੋਵੇ" -#: ../gtk/gtktreeviewcolumn.c:293 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget" msgstr "ਵਿਦਗਿਟ" -#: ../gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtktreeviewcolumn.c:342 msgid "Widget to put in column header button instead of column title" msgstr "ਕਾਲਮ ਹੈੱਡਰ ਦੀ ਬਜਾਏ ਕਾਲਮ ਟਾਈਟਲ ਬਟਨ ਲਗਾਉਣ ਲਈ ਵਿਦਗਿਟ" -#: ../gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:350 msgid "X Alignment of the column header text or widget" msgstr "ਕਾਲਮ ਹੈੱਡਰ ਦੇ ਟੈਕਸਟ ਜਾਂ ਵਿਦਗਿਟ ਦੀ X ਸ਼ਫਬੰਦੀ" -#: ../gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:360 msgid "Whether the column can be reordered around the headers" msgstr "ਕੀ ਕਾਲਮ ਹੈੱਡਰ ਦੁਆਲੇ ਮੁੜ-ਕਰਮਬੱਧ ਹੋਣ ਦੇ ਯੋਗ ਹੈ" -#: ../gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Sort indicator" msgstr "ਕ੍ਰਮ ਇੰਡੀਕੇਟਰ" -#: ../gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:368 msgid "Whether to show a sort indicator" msgstr "ਕੀ ਕ੍ਰਮ ਸੰਕੇਤਕ ਨੂੰ ਵੇਖਾਉਣਾ ਹੈ" -#: ../gtk/gtktreeviewcolumn.c:327 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort order" msgstr "ਕ੍ਰਮ ਪੈਟਰਨ" -#: ../gtk/gtktreeviewcolumn.c:328 +#: ../gtk/gtktreeviewcolumn.c:376 msgid "Sort direction the sort indicator should indicate" msgstr "ਕ੍ਰਮ ਦਿਸ਼ਾ, ਜੋ ਕਿ ਕ੍ਰਮ ਸੰਕੇਤਕ ਵੇਖਾਵੇ" -#: ../gtk/gtktreeviewcolumn.c:344 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Sort column ID" msgstr "ਲੜੀਬੱਧ ਕਾਲਮ ID" -#: ../gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:393 msgid "Logical sort column ID this column sorts on when selected for sorting" msgstr "ਜਦੋਂ ਲੜੀਬੱਧ ਦੀ ਚੋਣ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਕਾਲਮ ਲੜੀਬੱਧ ਕਰਨ ਲਈ ਲਾਜ਼ੀਕਲ ਕਾਲਮ ID" -#: ../gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "ਮੇਨੂ ਆਈਟਮ ਨੂੰ ਵੱਖ-ਕਰਨ ਵਾਲਾ ਨੂੰ ਮੇਨੂ ਵਿੱਚ ਜੋੜਨਾ ਹੈ" -#: ../gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "ਰੱਲਗੱਡ UI ਪਰਿਭਾਸ਼ਾ" -#: ../gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "ਰੱਲਗੱਡ UI ਪਰੀਭਾਸ਼ਾ ਨੂੰ ਦਰਸਾਉਣ ਲਈ XML ਦੀ ਸਤਰ" -#: ../gtk/gtkviewport.c:143 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੇਟਵੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" - -#: ../gtk/gtkviewport.c:151 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" - -#: ../gtk/gtkviewport.c:159 +#: ../gtk/gtkviewport.c:155 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "ਵਿਊ-ਪੋਰਟ ਦੇ ਦੁਆਲੇ ਪਰਛਾਵਾਂ-ਡੱਬਾ ਕਿਵੇਂ ਖਿੱਚਿਆ ਜਾਵੇਗਾ" -#: ../gtk/gtkwidget.c:714 +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਵਰਤੋਂ" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "ਕੀ ਸਿੰਬਲ ਆਈਕਾਨ ਵਰਤਣੇ ਹਨ" + +#: ../gtk/gtkwidget.c:895 msgid "Widget name" msgstr "ਵਿਦਗਿਟ ਨਾਂ" -#: ../gtk/gtkwidget.c:715 +#: ../gtk/gtkwidget.c:896 msgid "The name of the widget" msgstr "ਵਿਦਗਿਟ ਦਾ ਨਾਂ" -#: ../gtk/gtkwidget.c:721 +#: ../gtk/gtkwidget.c:902 msgid "Parent widget" msgstr "ਪੇਰੈਟ ਵਿਦਗਿਟ" -#: ../gtk/gtkwidget.c:722 +#: ../gtk/gtkwidget.c:903 msgid "The parent widget of this widget. Must be a Container widget" msgstr "ਇਸ ਵਿਦਗਿਟ ਦਾ ਪੇਰੈਟ ਵਿਦਗਿਟ ਇੱਕ ਕੰਨਟੇਨਰ ਵਿਦਗਿਟ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ " -#: ../gtk/gtkwidget.c:729 +#: ../gtk/gtkwidget.c:910 msgid "Width request" msgstr "ਵਿਦਗਿਟ ਬੇਨਤੀ" -#: ../gtk/gtkwidget.c:730 +#: ../gtk/gtkwidget.c:911 msgid "" "Override for width request of the widget, or -1 if natural request should be " "used" msgstr "ਵਿਦਗਿਟ ਲਈ ਚੌੜਾਈ ਦੀ ਮੰਗ ਨੂੰ ਉੱਤੇ ਲਿਖ ਦਿਉ, ਜਾਂ -1 ਕੁਦਰਤੀ ਮੰਗ ਹੀ ਵਰਤਣੀ ਹੈ" -#: ../gtk/gtkwidget.c:738 +#: ../gtk/gtkwidget.c:919 msgid "Height request" msgstr "ਉਚਾਈ ਬੇਨਤੀ" -#: ../gtk/gtkwidget.c:739 +#: ../gtk/gtkwidget.c:920 msgid "" "Override for height request of the widget, or -1 if natural request should " "be used" msgstr "ਵਿਦਗਿਟ ਲਈ ਉਚਾਈ ਦੀ ਮੰਗ ਨੂੰ ਉੱਤੇ ਲਿਖ ਦਿਉ, ਜਾਂ -1 ਕੁਦਰਤੀ ਮੰਗ ਹੀ ਵਰਤਣੀ ਹੈ " -#: ../gtk/gtkwidget.c:748 +#: ../gtk/gtkwidget.c:929 msgid "Whether the widget is visible" msgstr "ਕੀ ਵਿਦਗਿਟ ਵੇਖਣਯੋਗ ਹੈ" -#: ../gtk/gtkwidget.c:755 +#: ../gtk/gtkwidget.c:936 msgid "Whether the widget responds to input" msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਨੂੰ ਜਵਾਬਦੇਹ ਹੋਵੇ" -#: ../gtk/gtkwidget.c:761 +#: ../gtk/gtkwidget.c:942 msgid "Application paintable" msgstr "ਕਾਰਜ ਚਿੱਤਰਯੋਗ" -#: ../gtk/gtkwidget.c:762 +#: ../gtk/gtkwidget.c:943 msgid "Whether the application will paint directly on the widget" msgstr "ਕੀ ਕਾਰਜ ਵਿਦਗਿਟ ਤੇ ਸਿੱਧਾ ਹੀ ਚਿੱਤਰਕਾਰੀ ਕਰ ਸਕੇ" -#: ../gtk/gtkwidget.c:768 +#: ../gtk/gtkwidget.c:949 msgid "Can focus" msgstr "ਫੋਕਸ ਹੋ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkwidget.c:769 +#: ../gtk/gtkwidget.c:950 msgid "Whether the widget can accept the input focus" msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਫੋਕਸ ਲਾਗੂ ਕਰ ਸਕੇ" -#: ../gtk/gtkwidget.c:775 +#: ../gtk/gtkwidget.c:956 msgid "Has focus" msgstr "ਫੋਕਸ ਹੈ" -#: ../gtk/gtkwidget.c:776 +#: ../gtk/gtkwidget.c:957 msgid "Whether the widget has the input focus" msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਫੋਕਸ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਹੈ" -#: ../gtk/gtkwidget.c:782 +#: ../gtk/gtkwidget.c:963 msgid "Is focus" msgstr "ਫੋਕਸ ਹੈ" -#: ../gtk/gtkwidget.c:783 +#: ../gtk/gtkwidget.c:964 msgid "Whether the widget is the focus widget within the toplevel" msgstr "ਕੀ ਵਿਦਗਿਟ ਸਿਰੇ ਦੀ ਸਥਿਤੀ ਵਿੱਚ ਵਿਦਗਿਟ ਫੋਕਸ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਹੈ" -#: ../gtk/gtkwidget.c:789 +#: ../gtk/gtkwidget.c:970 msgid "Can default" msgstr "ਡਿਫਾਲਟ ਹੋ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkwidget.c:790 +#: ../gtk/gtkwidget.c:971 msgid "Whether the widget can be the default widget" msgstr "ਕੀ ਵਿਦਗਿਟ ਮੂਲ ਵਿਦਗਿਟ ਬਣ ਸਕੇ" -#: ../gtk/gtkwidget.c:796 +#: ../gtk/gtkwidget.c:977 msgid "Has default" msgstr "ਡਿਫਾਲਟ ਹੈ" -#: ../gtk/gtkwidget.c:797 +#: ../gtk/gtkwidget.c:978 msgid "Whether the widget is the default widget" msgstr "ਕੀ ਵਿਦਗਿਟ ਮੂਲ ਵਿਦਗਿਟ ਹੈ" -#: ../gtk/gtkwidget.c:803 +#: ../gtk/gtkwidget.c:984 msgid "Receives default" msgstr "ਡਿਫਾਲਟ ਲੈ ਸਕੇ" -#: ../gtk/gtkwidget.c:804 +#: ../gtk/gtkwidget.c:985 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਵਿਦਗਿਟ ਮੂਲ ਕਾਰਵਾਈ ਕਰੇਗੇ, ਜਦੋਂ ਕਿ ਇਹ ਕੇਦਰਿਤ ਹੋਵੇਗਾ" -#: ../gtk/gtkwidget.c:810 +#: ../gtk/gtkwidget.c:991 msgid "Composite child" msgstr "ਯੋਗਿਕ ਚਲਾਇਡ" -#: ../gtk/gtkwidget.c:811 +#: ../gtk/gtkwidget.c:992 msgid "Whether the widget is part of a composite widget" msgstr "ਕੀ ਵਿਦਗਿਟ ਯੋਗਿਕ ਵਿਦਗਿਟ ਦਾ ਹਿੱਸਾ ਹੈ" -#: ../gtk/gtkwidget.c:817 +#: ../gtk/gtkwidget.c:998 msgid "Style" msgstr "ਸਟਾਇਲ" -#: ../gtk/gtkwidget.c:818 +#: ../gtk/gtkwidget.c:999 msgid "" "The style of the widget, which contains information about how it will look " "(colors etc)" msgstr "ਵਿਦਗਿਟ ਦਾ ਸਟਾਇਲ, ਜੋ ਕਿ ਇਹ ਜਾਣਕਾਰੀ ਰੱਖਦਾ ਹੈ ਇਹ ਕਿਸਤਰਾਂ ਦਾ ਦਿੱਸੇਗਾ (ਜਿਵੇਂ ਰੰਗ ਆਦਿ)" -#: ../gtk/gtkwidget.c:824 +#: ../gtk/gtkwidget.c:1005 msgid "Events" msgstr "ਘਟਨਾਵਾਂ" -#: ../gtk/gtkwidget.c:825 +#: ../gtk/gtkwidget.c:1006 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "ਘਟਨਾ-ਮਖੌਟਾ, ਜੋ ਕਿ ਇਹ ਸੈੱਟ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਵਿਦਗਿਟ ਕਿਸਤਰ੍ਹਾਂ ਦਾ GdkEvents ਨੂੰ ਪਰਾਪਤ ਕਰਦਾ ਹੈ" -#: ../gtk/gtkwidget.c:832 -msgid "Extension events" -msgstr "ਹੋਰ ਘਟਨਾਵਾਂ" - -#: ../gtk/gtkwidget.c:833 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "ਮਖੌਟਾ, ਜੋ ਕਿ ਇਹ ਸੈੱਟ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਵਿਦਗਿਟ ਕਿਸਤਰ੍ਹਾਂ ਦੀਆ ਵਾਧੂ-ਘਟਨਾਵਾਂ ਨੂੰ ਪਰਾਪਤ ਕਰਦਾ ਹੈ" - -#: ../gtk/gtkwidget.c:840 +#: ../gtk/gtkwidget.c:1013 msgid "No show all" msgstr "ਸਭ ਨਾ ਵੇਖਾਓ" -#: ../gtk/gtkwidget.c:841 +#: ../gtk/gtkwidget.c:1014 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "ਕੀ gtk_widget_show_all() ਸਾਰੇ ਵਿਦਗਿਟ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਾ ਕਰੇ" -#: ../gtk/gtkwidget.c:864 +#: ../gtk/gtkwidget.c:1037 msgid "Whether this widget has a tooltip" msgstr "ਕੀ ਇਹ ਵਿਦਗਿਟ ਉੱਤੇ ਟੂਲ-ਟਿੱਪ ਹੋਣ" -#: ../gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:1093 msgid "Window" msgstr "ਵਿੰਡੋ" -#: ../gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:1094 msgid "The widget's window if it is realized" msgstr "ਜੇ ਮੰਨਿਆ ਜਾਵੇ ਤਾਂ ਵਿਡਜੈੱਟ ਦੀ ਵਿੰਡੋ" -#: ../gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:1108 msgid "Double Buffered" msgstr "ਦੂਹਰਾ ਬਫਰ" -#: ../gtk/gtkwidget.c:936 +#: ../gtk/gtkwidget.c:1109 msgid "Whether the widget is double buffered" msgstr "ਕੀ ਵਿਦਗਿਟ ਦੂਹਰਾ ਬਫ਼ਰ ਹੋਵੇ" -#: ../gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:1124 msgid "How to position in extra horizontal space" msgstr "ਵਾਧੂ ਹਰੀਜੱਟਲ ਥਾਂ ਵਿੱਚ ਸਥਿਤੀ ਕਿਵੇਂ" -#: ../gtk/gtkwidget.c:967 +#: ../gtk/gtkwidget.c:1140 msgid "How to position in extra vertical space" msgstr "ਵਾਧੂ ਵਰਟੀਕਲ ਥਾਂ ਵਿੱਚ ਸਥਿਤੀ ਕਿਵੇਂ" -#: ../gtk/gtkwidget.c:986 +#: ../gtk/gtkwidget.c:1159 msgid "Margin on Left" msgstr "ਖੱਬੇ ਤੋਂ ਫਾਸਲਾ" -#: ../gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1160 msgid "Pixels of extra space on the left side" msgstr "ਖੱਬੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" -#: ../gtk/gtkwidget.c:1007 +#: ../gtk/gtkwidget.c:1180 msgid "Margin on Right" msgstr "ਸੱਜੇ ਤੋਂ ਫਾਸਲਾ" -#: ../gtk/gtkwidget.c:1008 +#: ../gtk/gtkwidget.c:1181 msgid "Pixels of extra space on the right side" msgstr "ਸੱਜੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" -#: ../gtk/gtkwidget.c:1028 +#: ../gtk/gtkwidget.c:1201 msgid "Margin on Top" msgstr "ਉੱਤੇ ਤੋਂ ਫਾਸਲਾ" -#: ../gtk/gtkwidget.c:1029 +#: ../gtk/gtkwidget.c:1202 msgid "Pixels of extra space on the top side" msgstr "ਉੱਤਲੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" -#: ../gtk/gtkwidget.c:1049 +#: ../gtk/gtkwidget.c:1222 msgid "Margin on Bottom" msgstr "ਹੇਠਾਂ ਤੋਂ ਫਾਸਲਾ" -#: ../gtk/gtkwidget.c:1050 +#: ../gtk/gtkwidget.c:1223 msgid "Pixels of extra space on the bottom side" msgstr "ਹੇਠਲੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" -#: ../gtk/gtkwidget.c:1067 +#: ../gtk/gtkwidget.c:1240 msgid "All Margins" msgstr "ਸਭ ਫਾਸਲੇ" -#: ../gtk/gtkwidget.c:1068 +#: ../gtk/gtkwidget.c:1241 msgid "Pixels of extra space on all four sides" msgstr "ਸਭ ਚਾਰੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" -#: ../gtk/gtkwidget.c:2741 +#: ../gtk/gtkwidget.c:1274 +msgid "Horizontal Expand" +msgstr "ਹਰੀਜੱਟਲ ਫੈਲਾਉ" + +#: ../gtk/gtkwidget.c:1275 +msgid "Whether widget wants more horizontal space" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਨੂੰ ਹੋਰ ਹਰੀਜੱਟਲ ਥਾਂ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1289 +msgid "Horizontal Expand Set" +msgstr "ਹਰੀਜੱਟਲ ਫੈਲਾਉ ਸੈੱਟ" + +#: ../gtk/gtkwidget.c:1290 +#| msgid "Whether to use the related actions appearance properties" +msgid "Whether to use the hexpand property" +msgstr "ਕੀ ਹੈਕਸਾਪੈਂਡ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1304 +msgid "Vertical Expand" +msgstr "ਵਰਟੀਕਲ ਫੈਲਾਓ" + +#: ../gtk/gtkwidget.c:1305 +msgid "Whether widget wants more vertical space" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਨੂੰ ਹੋਰ ਵਰਟੀਕਲ ਥਾਂ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1319 +msgid "Vertical Expand Set" +msgstr "ਵਰਟੀਕਲ ਫੈਲਾਉ ਸੈੱਟ" + +#: ../gtk/gtkwidget.c:1320 +#| msgid "Whether to use the related actions appearance properties" +msgid "Whether to use the vexpand property" +msgstr "ਕੀ ਵੈਕਸਪੈਂਡ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1334 +msgid "Expand Both" +msgstr "ਦੋਵੇਂ ਫੈਲਾਓ" + +#: ../gtk/gtkwidget.c:1335 +msgid "Whether widget wants to expand in both directions" +msgstr "ਕੀ ਵਿਦਜੈਟ ਨੂੰ ਦੋਵੇਂ ਦਿਸ਼ਾਵਾਂ ਫੈਲਣ ਦੀ ਲੋੜ ਹੈ" + +#: ../gtk/gtkwidget.c:2994 msgid "Interior Focus" msgstr "ਅੰਦਰੂਨੀ ਫੋਕਸ" -#: ../gtk/gtkwidget.c:2742 +#: ../gtk/gtkwidget.c:2995 msgid "Whether to draw the focus indicator inside widgets" msgstr "ਕੀ ਵਿਦਗਿਟ ਵਿੱਚ ਫੋਕਸ ਸੰਕੇਤਕ ਬਣਾਉਣਾ ਹੈ" -#: ../gtk/gtkwidget.c:2748 +#: ../gtk/gtkwidget.c:3001 msgid "Focus linewidth" msgstr "ਫੋਕਸ ਰੇਖਾ-ਚੌੜਾਈ" -#: ../gtk/gtkwidget.c:2749 +#: ../gtk/gtkwidget.c:3002 msgid "Width, in pixels, of the focus indicator line" msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਲਾਈਨ ਦੀ ਚੌੜਾਈ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" -#: ../gtk/gtkwidget.c:2755 +#: ../gtk/gtkwidget.c:3008 msgid "Focus line dash pattern" msgstr "ਫੋਕਸ ਲਾਈਨ ਡੈਸ ਪੈਟਰਨ" -#: ../gtk/gtkwidget.c:2756 +#: ../gtk/gtkwidget.c:3009 msgid "Dash pattern used to draw the focus indicator" msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਨੂੰ ਬਣਾਉਣ ਲਈ ਡੱਬੀਦਾਰ ਪੈਟਰਨ" -#: ../gtk/gtkwidget.c:2761 +#: ../gtk/gtkwidget.c:3014 msgid "Focus padding" msgstr "ਫੋਕਸ ਪੈਡਿੰਗ" -#: ../gtk/gtkwidget.c:2762 +#: ../gtk/gtkwidget.c:3015 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਅਤੇ ਵਿਦਗਿਟ 'ਡੱਬੇ' ਵਿਚਕਾਰ ਦੀ ਚੌੜਾਈ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" -#: ../gtk/gtkwidget.c:2767 +#: ../gtk/gtkwidget.c:3020 msgid "Cursor color" msgstr "ਕਰਸਰ ਰੰਗ" -#: ../gtk/gtkwidget.c:2768 +#: ../gtk/gtkwidget.c:3021 msgid "Color with which to draw insertion cursor" msgstr "ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਬਣਾਉਣ ਵਾਲਾ ਰੰਗ" -#: ../gtk/gtkwidget.c:2773 +#: ../gtk/gtkwidget.c:3026 msgid "Secondary cursor color" msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਰੰਗ" -#: ../gtk/gtkwidget.c:2774 +#: ../gtk/gtkwidget.c:3027 msgid "" "Color with which to draw the secondary insertion cursor when editing mixed " "right-to-left and left-to-right text" @@ -6681,196 +7153,196 @@ msgstr "" "ਰੰਗ, ਜਿਸ ਨਾਲ ਸੈਕੰਡਰੀ ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਬਣਾਈ ਜਾਵੇਗੀ, ਜਦੋਂ ਕਿ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਤੇ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਟੈਕਸਟ ਦੇ " "ਰਲਵੇ ਨੂੰ ਸੋਧਣਾ ਹੈ" -#: ../gtk/gtkwidget.c:2779 +#: ../gtk/gtkwidget.c:3032 msgid "Cursor line aspect ratio" msgstr "ਕਰਸਰ ਲਾਈਨ ਅਕਾਰ ਅਨੁਪਾਤ" -#: ../gtk/gtkwidget.c:2780 +#: ../gtk/gtkwidget.c:3033 msgid "Aspect ratio with which to draw insertion cursor" msgstr "ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਖਿੱਚਣ ਲਈ ਅਕਾਰ ਅਨੁਪਾਤ" -#: ../gtk/gtkwidget.c:2786 +#: ../gtk/gtkwidget.c:3039 msgid "Window dragging" msgstr "ਵਿੰਡੋ ਡਰੈਗਿੰਗ" -#: ../gtk/gtkwidget.c:2787 +#: ../gtk/gtkwidget.c:3040 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "ਕੀ ਵਿੰਡੋ ਨੂੰ ਖਾਲੀ ਖੇਤਰਾਂ 'ਚ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਡਰੈਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkwidget.c:2800 +#: ../gtk/gtkwidget.c:3053 msgid "Unvisited Link Color" msgstr "ਨਾ-ਖੋਲ੍ਹੇ ਲਿੰਕ ਰੰਗ" -#: ../gtk/gtkwidget.c:2801 +#: ../gtk/gtkwidget.c:3054 msgid "Color of unvisited links" msgstr "ਨਾ-ਖੋਲ੍ਹੇ ਲਿੰਕਾਂ ਦਾ ਰੰਗ ਹੈ" -#: ../gtk/gtkwidget.c:2814 +#: ../gtk/gtkwidget.c:3067 msgid "Visited Link Color" msgstr "ਖੋਲ੍ਹੇ ਲਿੰਕ ਰੰਗ" -#: ../gtk/gtkwidget.c:2815 +#: ../gtk/gtkwidget.c:3068 msgid "Color of visited links" msgstr "ਖੋਲ੍ਹੇ ਗਏ ਲਿੰਕਦਾ ਰੰਗ" -#: ../gtk/gtkwidget.c:2829 +#: ../gtk/gtkwidget.c:3082 msgid "Wide Separators" msgstr "ਖੁੱਲ੍ਹੇ ਵੱਖਰੇਵੇਂ" -#: ../gtk/gtkwidget.c:2830 +#: ../gtk/gtkwidget.c:3083 msgid "" "Whether separators have configurable width and should be drawn using a box " "instead of a line" msgstr "ਕੀ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ ਸੰਰਚਨਾ ਯੋਗ ਹੋਵੇ ਅਤੇ ਇੱਕ ਸਤਰ ਦੀ ਬਜਾਏ ਇੱਕ ਬਕਸਾ ਖਿੱਚਣ ਦੇ ਯੋਗ ਹੋਵੇ" -#: ../gtk/gtkwidget.c:2844 +#: ../gtk/gtkwidget.c:3097 msgid "Separator Width" msgstr "ਵੱਖਰੇਵਾ ਚੌੜਾਈ" -#: ../gtk/gtkwidget.c:2845 +#: ../gtk/gtkwidget.c:3098 msgid "The width of separators if wide-separators is TRUE" msgstr "ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ, ਜੇਕਰ ਖੁੱਲ੍ਹਾ-ਵੱਖਰੇਵਾ ਸੱਚ ਹੋਵੇ" -#: ../gtk/gtkwidget.c:2859 +#: ../gtk/gtkwidget.c:3112 msgid "Separator Height" msgstr "ਵੱਖਰੇਵਾ ਉਚਾਈ" -#: ../gtk/gtkwidget.c:2860 +#: ../gtk/gtkwidget.c:3113 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "ਵੱਖਰੇਵੇ ਦੀ ਉਚਾਈ, ਜੇਕਰ \"ਖੁੱਲ੍ਹਾ-ਵੱਖਰੇਵਾ\" ਸੱਚ ਹੋਵੇ" -#: ../gtk/gtkwidget.c:2874 +#: ../gtk/gtkwidget.c:3127 msgid "Horizontal Scroll Arrow Length" msgstr "ਖਿਤਿਜੀ ਸਰਕੋਲ ਤੀਰ ਲੰਬਾਈ" -#: ../gtk/gtkwidget.c:2875 +#: ../gtk/gtkwidget.c:3128 msgid "The length of horizontal scroll arrows" msgstr "ਖਿਤਿਜੀ ਸਕਰੋਲ ਤੀਰਾਂ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkwidget.c:2889 +#: ../gtk/gtkwidget.c:3142 msgid "Vertical Scroll Arrow Length" msgstr "ਲੰਬਕਾਰੀ ਸਕਰੋਲ ਤੀਰ ਲੰਬਾਈ" -#: ../gtk/gtkwidget.c:2890 +#: ../gtk/gtkwidget.c:3143 msgid "The length of vertical scroll arrows" msgstr "ਲੰਬਕਾਰੀ ਸਕਰੋਲ ਤੀਰਾਂ ਦੀ ਲੰਬਾਈ" -#: ../gtk/gtkwindow.c:602 +#: ../gtk/gtkwindow.c:603 msgid "Window Type" msgstr "ਵਿੰਡੋ ਟਾਈਪ" -#: ../gtk/gtkwindow.c:603 +#: ../gtk/gtkwindow.c:604 msgid "The type of the window" msgstr "ਵਿੰਡੋ ਦੀ ਕਿਸਮ" -#: ../gtk/gtkwindow.c:611 +#: ../gtk/gtkwindow.c:612 msgid "Window Title" msgstr "ਵਿੰਡੋ ਟਾਈਟਲ" -#: ../gtk/gtkwindow.c:612 +#: ../gtk/gtkwindow.c:613 msgid "The title of the window" msgstr "ਵਿੰਡੋ ਦਾ ਟਾਈਟਲ" -#: ../gtk/gtkwindow.c:619 +#: ../gtk/gtkwindow.c:620 msgid "Window Role" msgstr "ਵਿੰਡੋ ਰੂਲ" -#: ../gtk/gtkwindow.c:620 +#: ../gtk/gtkwindow.c:621 msgid "Unique identifier for the window to be used when restoring a session" msgstr "ਵਿੰਡੋ ਲਈ ਇਕਸਾਰ ਸ਼ਨਾਖਤੀ ਜੋ ਕਿ ਸ਼ੈਸ਼ਨ ਨੁੰ ਮੁੜ-ਸੰਭਾਲਣ ਸਮੇ ਵਰਤਿਆ ਜਾ ਸਕੇ" -#: ../gtk/gtkwindow.c:636 +#: ../gtk/gtkwindow.c:637 msgid "Startup ID" msgstr "ਸ਼ੁਰੂਆਤੀ ID" -#: ../gtk/gtkwindow.c:637 +#: ../gtk/gtkwindow.c:638 msgid "Unique startup identifier for the window used by startup-notification" msgstr "ਵਿੰਡੋ ਲਈ ਵਿਲੱਖਣ ਸ਼ੁਰੂਆਤੀ ਸ਼ਨਾਖਤੀ, ਜੋ ਕਿ ਸ਼ੁਰੂਆਤੀ ਸੂਚਨਾ ਵਜੋਂ ਵਰਤਿਆ ਜਾਵੇ।" -#: ../gtk/gtkwindow.c:645 +#: ../gtk/gtkwindow.c:646 msgid "If TRUE, users can resize the window" msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਯੂਜ਼ਰ ਵਿੰਡ ਦਾ ਮੁੜ-ਅਕਾਰ ਕਰ ਸਕਦਾ ਹੈ" -#: ../gtk/gtkwindow.c:652 +#: ../gtk/gtkwindow.c:653 msgid "Modal" msgstr "ਮਾਡਲ" -#: ../gtk/gtkwindow.c:653 +#: ../gtk/gtkwindow.c:654 msgid "" "If TRUE, the window is modal (other windows are not usable while this one is " "up)" msgstr "" "ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ, ਵਿੰਡੋ ਮਾਡਲ ਹੋਵੇਗੀ (ਹੋਰ ਵਿੰਡੋ ਉਪਲੱਬਧ ਨਹੀਂ ਹੋ ਸਕਣਗੇ, ਜਦੋਂ ਕਿ ਇੱਕ ਨੂੰ ਵਰਤ ਰਹੇ ਹੋ)" -#: ../gtk/gtkwindow.c:660 +#: ../gtk/gtkwindow.c:661 msgid "Window Position" msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" -#: ../gtk/gtkwindow.c:661 +#: ../gtk/gtkwindow.c:662 msgid "The initial position of the window" msgstr "ਵਿੰਡੋ ਦੀ ਮੁੱਢਲੀ ਸਥਿਤੀ" -#: ../gtk/gtkwindow.c:669 +#: ../gtk/gtkwindow.c:670 msgid "Default Width" msgstr "ਮੂਲ ਚੌੜਾਈ" -#: ../gtk/gtkwindow.c:670 +#: ../gtk/gtkwindow.c:671 msgid "The default width of the window, used when initially showing the window" msgstr "ਵਿੰਡੋ ਦੀ ਡਿਫਾਲਟ ਚੌੜਾਈ, ਜੋ ਕਿ ਵਿੰਡੋ ਦੇ ਸ਼ੁਰੂ ਵੇਲੇ ਵੇਖਾਈ ਜਾਵੇਗੀ" -#: ../gtk/gtkwindow.c:679 +#: ../gtk/gtkwindow.c:680 msgid "Default Height" msgstr "ਮੂਲ ਉਚਾਈ" -#: ../gtk/gtkwindow.c:680 +#: ../gtk/gtkwindow.c:681 msgid "The default height of the window, used when initially showing the window" msgstr "ਵਿੰਡੋ ਦੀ ਡਿਫਾਲਟ ਉਚਾਈ, ਜੋ ਕਿ ਵਿੰਡੋ ਦੇ ਸ਼ੁਰੂ ਵੇਲੇ ਵੇਖਾਈ ਜਾਵੇਗੀ" -#: ../gtk/gtkwindow.c:689 +#: ../gtk/gtkwindow.c:690 msgid "Destroy with Parent" msgstr "ਪੇਰੈਟ ਨੂੰ ਖਤਮ ਕਰ ਦਿਉ" -#: ../gtk/gtkwindow.c:690 +#: ../gtk/gtkwindow.c:691 msgid "If this window should be destroyed when the parent is destroyed" msgstr "ਜੇਕਰ ਇਹ ਵਿੰਡੋ ਨੂੰ ਖਤਮ ਕੀਤਾ ਤਾਂ ਪੈਰੈਟ ਵੀ ਖਤਮ ਹੋ ਜਾਏਗਾ" -#: ../gtk/gtkwindow.c:698 +#: ../gtk/gtkwindow.c:699 msgid "Icon for this window" msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਆਈਕਾਨ" -#: ../gtk/gtkwindow.c:704 +#: ../gtk/gtkwindow.c:705 msgid "Mnemonics Visible" msgstr "ਮਨਾਮੈਰਿਕ ਦਿੱਖ" -#: ../gtk/gtkwindow.c:705 +#: ../gtk/gtkwindow.c:706 msgid "Whether mnemonics are currently visible in this window" msgstr "ਕੀ ਇਸ ਵਿੰਡੋ ਵਿੱਚ ਮਨਾਮੈਰਿਕ ਇਸ ਸਮੇਂ ਉਪਲੱਬਧ ਹੋਵੇ" -#: ../gtk/gtkwindow.c:721 +#: ../gtk/gtkwindow.c:722 msgid "Name of the themed icon for this window" msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਥੀਮ ਆਈਕਾਨ ਦਾ ਨਾਂ" -#: ../gtk/gtkwindow.c:736 +#: ../gtk/gtkwindow.c:737 msgid "Is Active" msgstr "ਸਰਗਰਮ ਹੈ" -#: ../gtk/gtkwindow.c:737 +#: ../gtk/gtkwindow.c:738 msgid "Whether the toplevel is the current active window" msgstr "ਕੀ ਉੱਤਲਾ ਮੌਜੂਦਾ ਸਰਗਰਮ ਵਿੰਡੋ ਹੈ" -#: ../gtk/gtkwindow.c:744 +#: ../gtk/gtkwindow.c:745 msgid "Focus in Toplevel" msgstr "ਉਪਰਲੇ ਨੂੰ ਕੇਦਰਿਤ ਕਰੋ" -#: ../gtk/gtkwindow.c:745 +#: ../gtk/gtkwindow.c:746 msgid "Whether the input focus is within this GtkWindow" msgstr "ਕੀ ਇਸ GtkWindow ਵਿੱਚ ਇੰਪੁੱਟ ਕੇਦਰ ਹੋਵੇ" -#: ../gtk/gtkwindow.c:752 +#: ../gtk/gtkwindow.c:753 msgid "Type hint" msgstr "ਸੰਕੇਤ ਲਿਖੋ" -#: ../gtk/gtkwindow.c:753 +#: ../gtk/gtkwindow.c:754 msgid "" "Hint to help the desktop environment understand what kind of window this is " "and how to treat it." @@ -6878,102 +7350,99 @@ msgstr "" "ਸੰਕੇਤ, ਡੈਸਕਟਾਪ ਮਾਹੌਲ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਮੱਦਦ ਕਰਦਾ ਹੈ ਕਿ ਵਿੰਡੋ ਕਿਸ ਕਿਸਮ ਦੀ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਕਿਵੇਂ " "ਵਰਤਣਾ ਹੈ।" -#: ../gtk/gtkwindow.c:761 +#: ../gtk/gtkwindow.c:762 msgid "Skip taskbar" msgstr "ਕਾਰਜ-ਪੱਟੀ ਨੂੰ ਛੱਡੋ" -#: ../gtk/gtkwindow.c:762 +#: ../gtk/gtkwindow.c:763 msgid "TRUE if the window should not be in the task bar." msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਟਾਸਕਬਾਰ ਵਿੱਚ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" -#: ../gtk/gtkwindow.c:769 +#: ../gtk/gtkwindow.c:770 msgid "Skip pager" msgstr "ਪੇਜ਼ਰ ਨੂੰ ਛੱਡੋ" -#: ../gtk/gtkwindow.c:770 +#: ../gtk/gtkwindow.c:771 msgid "TRUE if the window should not be in the pager." msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਪੇਜ਼ਰ ਵਿੱਚ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" -#: ../gtk/gtkwindow.c:777 +#: ../gtk/gtkwindow.c:778 msgid "Urgent" msgstr "ਲਾਜ਼ਮੀ" -#: ../gtk/gtkwindow.c:778 +#: ../gtk/gtkwindow.c:779 msgid "TRUE if the window should be brought to the user's attention." msgstr "ਸੱਚ, ਜੇਕਰ ਵਿੰਡੋ ਯੂਜ਼ਰ ਦਾ ਧਿਆਨ ਖਿੱਚੇ" -#: ../gtk/gtkwindow.c:792 +#: ../gtk/gtkwindow.c:793 msgid "Accept focus" msgstr "ਫੋਕਸ ਮਨਜ਼ੂਰ" -#: ../gtk/gtkwindow.c:793 +#: ../gtk/gtkwindow.c:794 msgid "TRUE if the window should receive the input focus." msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਇੰਪੁੱਟ ਫੋਕਸ ਲੈ ਸਕੇ।" -#: ../gtk/gtkwindow.c:807 +#: ../gtk/gtkwindow.c:808 msgid "Focus on map" msgstr "ਨਕਸ਼ੇ ਉੱਤੇ ਫੋਕਸ" -#: ../gtk/gtkwindow.c:808 +#: ../gtk/gtkwindow.c:809 msgid "TRUE if the window should receive the input focus when mapped." msgstr "ਸੱਚ, ਜੇਕਰ ਵਿੰਡੋ ਇੰਪੁੱਟ ਧਿਆਨ ਲਵੇ, ਜਦੋਂ ਮਿਲਾਇਆ ਗਿਆ ਹੋਵੇ।" -#: ../gtk/gtkwindow.c:822 +#: ../gtk/gtkwindow.c:823 msgid "Decorated" msgstr "ਸਜਾਇਆ" -#: ../gtk/gtkwindow.c:823 +#: ../gtk/gtkwindow.c:824 msgid "Whether the window should be decorated by the window manager" msgstr "ਕੀ ਵਿੰਡੋ, ਵਿੰਡੋ ਮੈਨੇਜਰ ਰਾਹੀਂ ਸਜਾਈ ਜਾ ਸਕੇ" -#: ../gtk/gtkwindow.c:837 +#: ../gtk/gtkwindow.c:838 msgid "Deletable" msgstr "ਵੱਖ-ਹੋਣ ਯੋਗ" -#: ../gtk/gtkwindow.c:838 +#: ../gtk/gtkwindow.c:839 msgid "Whether the window frame should have a close button" msgstr "ਕੀ ਵਿੰਡੋ ਫਰੇਮ ਉੱਤੇ ਇੱਕ ਬੰਦ ਕਰਨ ਦਾ ਬਟਨ ਹੋਵੇ" -#: ../gtk/gtkwindow.c:857 -#| msgid "Has Resize Grip" +#: ../gtk/gtkwindow.c:858 msgid "Resize grip" msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ" -#: ../gtk/gtkwindow.c:858 -#| msgid "Whether the window frame should have a close button" +#: ../gtk/gtkwindow.c:859 msgid "Specifies whether the window should have a resize grip" msgstr "ਦੱਸੋ ਕਿ ਕੀ ਵਿੰਡੋ ਕੋਲ ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਹੋਵੇ" -#: ../gtk/gtkwindow.c:872 +#: ../gtk/gtkwindow.c:873 msgid "Resize grip is visible" msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਵੇਖੋ" -#: ../gtk/gtkwindow.c:873 -#| msgid "Whether the action group is visible." +#: ../gtk/gtkwindow.c:874 msgid "Specifies whether the window's resize grip is visible." msgstr "ਦੱਸੋ ਕਿ ਕੀ ਵਿੰਡੋ ਦਾ ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦਿੱਖ ਹੋਵੇ।" -#: ../gtk/gtkwindow.c:889 +#: ../gtk/gtkwindow.c:890 msgid "Gravity" msgstr "ਗਰੇਵਿਟੀ" -#: ../gtk/gtkwindow.c:890 +#: ../gtk/gtkwindow.c:891 msgid "The window gravity of the window" msgstr "ਵਿੰਡੋ ਦੀ ਵਿੰਡੋ ਗਰੇਵਿਟੀ" -#: ../gtk/gtkwindow.c:907 +#: ../gtk/gtkwindow.c:908 msgid "Transient for Window" msgstr "ਵਿੰਡੋ ਲਈ ਟਰਾਂਸੀਨੇਟ" -#: ../gtk/gtkwindow.c:908 +#: ../gtk/gtkwindow.c:909 msgid "The transient parent of the dialog" msgstr "ਡਾਈਲਾਗ ਦੀ ਟਰਾਂਸਟ ਮੁੱਢਲਾ" -#: ../gtk/gtkwindow.c:923 +#: ../gtk/gtkwindow.c:924 msgid "Opacity for Window" msgstr "ਵਿੰਡੋ ਲਈ ਧੁੰਦਲਾਪਨ" -#: ../gtk/gtkwindow.c:924 +#: ../gtk/gtkwindow.c:925 msgid "The opacity of the window, from 0 to 1" msgstr "ਵਿੰਡੋ ਦਾ ਧੁੰਦਲਾਪਨ, 0 ਤੋਂ 1" @@ -6982,25 +7451,81 @@ msgid "Width of resize grip" msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦੀ ਚੌੜਾਈ" #: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 -#| msgid "Has Resize Grip" msgid "Height of resize grip" msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦੀ ਉਚਾਈ" -#: ../modules/input/gtkimcontextxim.c:334 -msgid "IM Preedit style" -msgstr "IM ਪ੍ਰੀ-ਐਡੀਟ ਸਟਾਇਲ" +#: ../gtk/gtkwindow.c:961 +msgid "GtkApplication" +msgstr "GtkApplication" -#: ../modules/input/gtkimcontextxim.c:335 -msgid "How to draw the input method preedit string" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਪ੍ਰੀ-ਐਡੀਟ ਲਾਈਨ ਨੂੰ ਕਿਸ-ਤਰ੍ਹਾਂ ਬਣਾਏ" +#: ../gtk/gtkwindow.c:962 +msgid "The GtkApplication for the window" +msgstr "ਵਿੰਡੋ ਲਈ GtkApplication" -#: ../modules/input/gtkimcontextxim.c:343 -msgid "IM Status style" -msgstr "IM ਹਾਲਤ ਸਟਾਇਲ" +#~ msgid "Tab pack type" +#~ msgstr "ਟੈਬ ਪੈਕ ਕਿਸਮ" -#: ../modules/input/gtkimcontextxim.c:344 -msgid "How to draw the input method statusbar" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਦੀ ਹਾਲਤ-ਪੱਟੀ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ" +#~ msgid "Update policy" +#~ msgstr "ਅੱਪਡੇਟ ਪਾਲਸੀ" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "ਸਕਰੀਨ ਤੇ ਰੇਜ਼ ਦਾ ਕਿੰਨੀ ਵਾਰ ਅੱਪਡੇਟ ਕਰਨਾ ਹੈ" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "ਪਰੋਗਰਾਮ ਦੀ ਵੈਬਸਾਇਟ ਨਾਲ ਲਿੰਕ ਦਾ ਲੇਬਲ ਹੈ। ਜੇਕਰ ਇਹ ਨਾਂ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਇਹ ਮੂਲ URL ਹੋਵੇਗਾ।" + +#~ msgid "Lower" +#~ msgstr "ਹੇਠਲੀ" + +#~ msgid "Lower limit of ruler" +#~ msgstr "ਪੈਮਾਨੇ ਲਈ ਹੇਠਲੀ ਹੱਦ" + +#~ msgid "Upper" +#~ msgstr "ਉੱਤੇਲੀ" + +#~ msgid "Upper limit of ruler" +#~ msgstr "ਪੈਮਾਨੇ ਲਈ ਉੱਤੇਲੀ ਹੱਦ" + +#~ msgid "Position of mark on the ruler" +#~ msgstr "ਪੈਮਾਨੇ ਤੇ ਨਿਸ਼ਾਨ ਦੀ ਟਿਕਾਣਾ" + +#~ msgid "Max Size" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" + +#~ msgid "Maximum size of the ruler" +#~ msgstr "ਪੈਮਾਨ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" + +#~ msgid "Metric" +#~ msgstr "ਮੈਟਰਿਕ" + +#~ msgid "The metric used for the ruler" +#~ msgstr "ਫੁੱਟੇ ਲਈ ਵਰਤਣ ਲਈ ਮੈਟਰਿਕ" + +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "ਲੇਟਵੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" + +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੇਟਵੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" + +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" + +#~ msgid "Extension events" +#~ msgstr "ਹੋਰ ਘਟਨਾਵਾਂ" + +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "ਮਖੌਟਾ, ਜੋ ਕਿ ਇਹ ਸੈੱਟ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਵਿਦਗਿਟ ਕਿਸਤਰ੍ਹਾਂ ਦੀਆ ਵਾਧੂ-ਘਟਨਾਵਾਂ ਨੂੰ ਪਰਾਪਤ ਕਰਦਾ ਹੈ" #~ msgid "Whether the statusbar has a grip for resizing the toplevel" #~ msgstr "ਕੀ ਹਾਲਤ-ਪੱਟੀ ਉਪਰੀ ਦੇ ਮੁੜ-ਅਕਾਰ ਨੂੰ ਵੇਖੇ" diff --git a/po-properties/sv.po b/po-properties/sv.po index ebaa2810fb..61fb48105d 100644 --- a/po-properties/sv.po +++ b/po-properties/sv.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gtk+ properties\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:54-0400\n" -"PO-Revision-Date: 2010-08-06 14:10+0100\n" +"POT-Creation-Date: 2010-12-30 21:16+0100\n" +"PO-Revision-Date: 2010-12-31 01:41+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -20,7434 +20,7374 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gdk/gdkdevice.c:97 -#, fuzzy +#: ../gdk/gdkdevice.c:109 msgid "Device Display" -msgstr "Standarddisplay" +msgstr "Enhetsdisplay" -#: gdk/gdkdevice.c:98 -#, fuzzy +#: ../gdk/gdkdevice.c:110 msgid "Display which the device belongs to" -msgstr "Visa cellen som känslig" +msgstr "Display som enheten tillhör" -#: gdk/gdkdevice.c:112 -#, fuzzy +#: ../gdk/gdkdevice.c:124 msgid "Device manager" -msgstr "Senaste hanterare" +msgstr "Enhetshanterare" -#: gdk/gdkdevice.c:113 +#: ../gdk/gdkdevice.c:125 msgid "Device manager which the device belongs to" -msgstr "" +msgstr "Enhetshanteraren som enheten tillhör" -#: gdk/gdkdevice.c:127 gdk/gdkdevice.c:128 -#, fuzzy +#: ../gdk/gdkdevice.c:139 +#: ../gdk/gdkdevice.c:140 msgid "Device name" -msgstr "Widgetnamn" +msgstr "Enhetsnamn" -#: gdk/gdkdevice.c:142 -#, fuzzy +#: ../gdk/gdkdevice.c:154 msgid "Device type" -msgstr "Kurvtyp" +msgstr "Enhetstyp" -#: gdk/gdkdevice.c:143 +#: ../gdk/gdkdevice.c:155 msgid "Device role in the device manager" -msgstr "" +msgstr "Enhetsroll i enhetshanteraren" -#: gdk/gdkdevice.c:159 +#: ../gdk/gdkdevice.c:171 msgid "Associated device" -msgstr "" +msgstr "Associerad enhet" -#: gdk/gdkdevice.c:160 +#: ../gdk/gdkdevice.c:172 msgid "Associated pointer or keyboard with this device" msgstr "" -#: gdk/gdkdevice.c:173 +#: ../gdk/gdkdevice.c:185 msgid "Input source" msgstr "" -#: gdk/gdkdevice.c:174 -#, fuzzy +#: ../gdk/gdkdevice.c:186 msgid "Source type for the device" -msgstr "Modell för trädvyn" +msgstr "Källtyp för enheten" -#: gdk/gdkdevice.c:189 gdk/gdkdevice.c:190 -#, fuzzy +#: ../gdk/gdkdevice.c:201 +#: ../gdk/gdkdevice.c:202 msgid "Input mode for the device" -msgstr "Modell för trädvyn" +msgstr "Inmatningsläge för enheten" -#: gdk/gdkdevice.c:205 -#, fuzzy +#: ../gdk/gdkdevice.c:217 msgid "Whether the device has a cursor" -msgstr "Huruvida widgeten har inmatningsfokus" +msgstr "Huruvida enheten har en markör" -#: gdk/gdkdevice.c:206 -#, fuzzy +#: ../gdk/gdkdevice.c:218 msgid "Whether there is a visible cursor following device motion" -msgstr "Huruvida bläddringsdialogen är synlig eller inte." +msgstr "Huruvida det finns en synlig markör som följer enhetsrörelser" -#: gdk/gdkdevice.c:220 gdk/gdkdevice.c:221 -#, fuzzy +#: ../gdk/gdkdevice.c:232 +#: ../gdk/gdkdevice.c:233 msgid "Number of axes in the device" -msgstr "Antalet sidor i dokumentet." +msgstr "Antal axlar i enheten" -#: gdk/gdkdevicemanager.c:134 -#, fuzzy +#: ../gdk/gdkdevicemanager.c:146 msgid "Display" -msgstr "Standarddisplay" +msgstr "Display" -#: gdk/gdkdevicemanager.c:135 -#, fuzzy +#: ../gdk/gdkdevicemanager.c:147 msgid "Display for the device manager" -msgstr "Visa cellen" +msgstr "Display för enhetshanteraren" -#: gdk/gdkdisplaymanager.c:102 +#: ../gdk/gdkdisplaymanager.c:114 msgid "Default Display" msgstr "Standarddisplay" -#: gdk/gdkdisplaymanager.c:103 +#: ../gdk/gdkdisplaymanager.c:115 msgid "The default display for GDK" msgstr "Standarddisplayen för GDK" -#: gdk/gdkscreen.c:72 +#: ../gdk/gdkscreen.c:89 msgid "Font options" msgstr "Typsnittsalternativ" -#: gdk/gdkscreen.c:73 +#: ../gdk/gdkscreen.c:90 msgid "The default font options for the screen" msgstr "Standardtypsnittsalternativen för skärmen" -#: gdk/gdkscreen.c:80 +#: ../gdk/gdkscreen.c:97 msgid "Font resolution" msgstr "Typsnittsupplösning" -#: gdk/gdkscreen.c:81 +#: ../gdk/gdkscreen.c:98 msgid "The resolution for fonts on the screen" msgstr "Upplösningen för typsnitt på skärmen" -#: gdk/gdkwindow.c:392 gdk/gdkwindow.c:393 +#: ../gdk/gdkwindow.c:373 +#: ../gdk/gdkwindow.c:374 msgid "Cursor" msgstr "Markör" -#: gdk/x11/gdkdevice-xi.c:132 gdk/x11/gdkdevice-xi.c:133 -#: gdk/x11/gdkdevice-xi2.c:111 +#: ../gdk/x11/gdkdevice-xi.c:133 +#: ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 msgid "Device ID" msgstr "" -#: gdk/x11/gdkdevice-xi2.c:112 +#: ../gdk/x11/gdkdevice-xi2.c:124 msgid "Device identifier" -msgstr "" +msgstr "Enhetsidentifierare" -#: gdk/x11/gdkdevicemanager-xi.c:84 +#: ../gdk/x11/gdkdevicemanager-xi.c:95 #, fuzzy msgid "Event base" msgstr "Händelser" -#: gdk/x11/gdkdevicemanager-xi.c:85 +#: ../gdk/x11/gdkdevicemanager-xi.c:96 msgid "Event base for XInput events" msgstr "" -#: gtk/gtkaboutdialog.c:269 +#: ../gtk/gtkaboutdialog.c:277 msgid "Program name" msgstr "Programnamn" -#: gtk/gtkaboutdialog.c:270 -msgid "" -"The name of the program. If this is not set, it defaults to " -"g_get_application_name()" -msgstr "" -"Namnet på programmet. Om detta inte är angivet är standardalternativet " -"g_get_application_name()" +#: ../gtk/gtkaboutdialog.c:278 +msgid "The name of the program. If this is not set, it defaults to g_get_application_name()" +msgstr "Namnet på programmet. Om detta inte är angivet är standardalternativet g_get_application_name()" -#: gtk/gtkaboutdialog.c:284 +#: ../gtk/gtkaboutdialog.c:292 msgid "Program version" msgstr "Programversion" -#: gtk/gtkaboutdialog.c:285 +#: ../gtk/gtkaboutdialog.c:293 msgid "The version of the program" msgstr "Programmets version" -#: gtk/gtkaboutdialog.c:299 +#: ../gtk/gtkaboutdialog.c:307 msgid "Copyright string" msgstr "Copyrightsträng" -#: gtk/gtkaboutdialog.c:300 +#: ../gtk/gtkaboutdialog.c:308 msgid "Copyright information for the program" msgstr "Copyrightinformation om programmet" -#: gtk/gtkaboutdialog.c:317 +#: ../gtk/gtkaboutdialog.c:325 msgid "Comments string" msgstr "Kommentarsträng" -#: gtk/gtkaboutdialog.c:318 +#: ../gtk/gtkaboutdialog.c:326 msgid "Comments about the program" msgstr "Kommentarer om programmet" -#: gtk/gtkaboutdialog.c:368 -#, fuzzy +#: ../gtk/gtkaboutdialog.c:376 msgid "License Type" -msgstr "Meddelandetyp" +msgstr "Licenstyp" -#: gtk/gtkaboutdialog.c:369 -#, fuzzy +#: ../gtk/gtkaboutdialog.c:377 msgid "The license type of the program" -msgstr "Programmets version" +msgstr "Licenstypen för programmet" -#: gtk/gtkaboutdialog.c:385 +#: ../gtk/gtkaboutdialog.c:393 msgid "Website URL" msgstr "URL till webbplats" -#: gtk/gtkaboutdialog.c:386 +#: ../gtk/gtkaboutdialog.c:394 msgid "The URL for the link to the website of the program" msgstr "URL:en för länken till programmets webbplats" -#: gtk/gtkaboutdialog.c:401 +#: ../gtk/gtkaboutdialog.c:408 msgid "Website label" msgstr "Webbplatsetikett" -#: gtk/gtkaboutdialog.c:402 -msgid "" -"The label for the link to the website of the program. If this is not set, it " -"defaults to the URL" -msgstr "" -"Etiketten för länken till programmets webbplats. Om detta inte är angivet är " -"standardalternativet URL:en" +#: ../gtk/gtkaboutdialog.c:409 +msgid "The label for the link to the website of the program" +msgstr "Etiketten för länken till programmets webbplats" -#: gtk/gtkaboutdialog.c:418 +#: ../gtk/gtkaboutdialog.c:425 msgid "Authors" msgstr "Upphovsmän" -#: gtk/gtkaboutdialog.c:419 +#: ../gtk/gtkaboutdialog.c:426 msgid "List of authors of the program" msgstr "Lista med programmets upphovsmän" -#: gtk/gtkaboutdialog.c:435 +#: ../gtk/gtkaboutdialog.c:442 msgid "Documenters" msgstr "Dokumentatörer" -#: gtk/gtkaboutdialog.c:436 +#: ../gtk/gtkaboutdialog.c:443 msgid "List of people documenting the program" msgstr "Lista med folk som dokumenterat programmet" -#: gtk/gtkaboutdialog.c:452 +#: ../gtk/gtkaboutdialog.c:459 msgid "Artists" msgstr "Artister" -#: gtk/gtkaboutdialog.c:453 +#: ../gtk/gtkaboutdialog.c:460 msgid "List of people who have contributed artwork to the program" msgstr "Lista med folk som har bidragit med grafik till programmet" -#: gtk/gtkaboutdialog.c:470 +#: ../gtk/gtkaboutdialog.c:477 msgid "Translator credits" msgstr "Tack till översättare" -#: gtk/gtkaboutdialog.c:471 -msgid "" -"Credits to the translators. This string should be marked as translatable" -msgstr "" -"Tack till översättarna. Denna sträng ska vara markerad för översättning" +#: ../gtk/gtkaboutdialog.c:478 +msgid "Credits to the translators. This string should be marked as translatable" +msgstr "Tack till översättarna. Denna sträng ska vara markerad för översättning" -#: gtk/gtkaboutdialog.c:486 +#: ../gtk/gtkaboutdialog.c:493 msgid "Logo" msgstr "Logotyp" -#: gtk/gtkaboutdialog.c:487 -msgid "" -"A logo for the about box. If this is not set, it defaults to " -"gtk_window_get_default_icon_list()" -msgstr "" -"En logotyp för om-rutan. Om detta inte är angivet är standardalternativet " -"gtk_window_get_default_icon_list()" +#: ../gtk/gtkaboutdialog.c:494 +msgid "A logo for the about box. If this is not set, it defaults to gtk_window_get_default_icon_list()" +msgstr "En logotyp för om-rutan. Om detta inte är angivet är standardalternativet gtk_window_get_default_icon_list()" -#: gtk/gtkaboutdialog.c:502 +#: ../gtk/gtkaboutdialog.c:509 msgid "Logo Icon Name" msgstr "Namn på logotypikon" -#: gtk/gtkaboutdialog.c:503 +#: ../gtk/gtkaboutdialog.c:510 msgid "A named icon to use as the logo for the about box." msgstr "En namngiven ikon att använda som logotyp för om-rutan." -#: gtk/gtkaboutdialog.c:516 +#: ../gtk/gtkaboutdialog.c:523 msgid "Wrap license" msgstr "Radbryt licensen" -#: gtk/gtkaboutdialog.c:517 +#: ../gtk/gtkaboutdialog.c:524 msgid "Whether to wrap the license text." msgstr "Huruvida licenstexten ska radbrytas." -#: gtk/gtkaccellabel.c:189 +#: ../gtk/gtkaccellabel.c:189 msgid "Accelerator Closure" msgstr "Genvägsstängning" -#: gtk/gtkaccellabel.c:190 +#: ../gtk/gtkaccellabel.c:190 msgid "The closure to be monitored for accelerator changes" msgstr "Stängningen som ska övervakas för genvägsändringar" -#: gtk/gtkaccellabel.c:196 +#: ../gtk/gtkaccellabel.c:196 msgid "Accelerator Widget" msgstr "Genvägswidget" -#: gtk/gtkaccellabel.c:197 +#: ../gtk/gtkaccellabel.c:197 msgid "The widget to be monitored for accelerator changes" msgstr "Widgeten som ska övervakas för genvägsändringar" -#: gtk/gtkaction.c:222 gtk/gtkactiongroup.c:228 gtk/gtkprinter.c:125 -#: gtk/gtktextmark.c:89 +#: ../gtk/gtkaction.c:222 +#: ../gtk/gtkactiongroup.c:228 +#: ../gtk/gtkprinter.c:125 +#: ../gtk/gtktextmark.c:89 msgid "Name" msgstr "Namn" -#: gtk/gtkaction.c:223 +#: ../gtk/gtkaction.c:223 msgid "A unique name for the action." msgstr "Ett unikt namn för åtgärden." -#: gtk/gtkaction.c:241 gtk/gtkbutton.c:238 gtk/gtkexpander.c:209 -#: gtk/gtkframe.c:130 gtk/gtklabel.c:549 gtk/gtkmenuitem.c:333 -#: gtk/gtktoolbutton.c:202 gtk/gtktoolitemgroup.c:1571 +#: ../gtk/gtkaction.c:241 +#: ../gtk/gtkbutton.c:226 +#: ../gtk/gtkexpander.c:207 +#: ../gtk/gtkframe.c:130 +#: ../gtk/gtklabel.c:567 +#: ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:202 +#: ../gtk/gtktoolitemgroup.c:1588 msgid "Label" msgstr "Etikett" -#: gtk/gtkaction.c:242 +#: ../gtk/gtkaction.c:242 msgid "The label used for menu items and buttons that activate this action." -msgstr "" -"Etiketten som används för menyobjekt och knappar som aktiverar denna åtgärd." +msgstr "Etiketten som används för menyobjekt och knappar som aktiverar denna åtgärd." -#: gtk/gtkaction.c:258 +#: ../gtk/gtkaction.c:258 msgid "Short label" msgstr "Kort etikett" -#: gtk/gtkaction.c:259 +#: ../gtk/gtkaction.c:259 msgid "A shorter label that may be used on toolbar buttons." msgstr "En kortare etikett som kan användas på verktygsradsknappar." -#: gtk/gtkaction.c:267 +#: ../gtk/gtkaction.c:267 msgid "Tooltip" msgstr "Verktygstips" -#: gtk/gtkaction.c:268 +#: ../gtk/gtkaction.c:268 msgid "A tooltip for this action." msgstr "Ett verktygstips för denna åtgärd." -#: gtk/gtkaction.c:283 +#: ../gtk/gtkaction.c:283 msgid "Stock Icon" msgstr "Standardikon" -#: gtk/gtkaction.c:284 +#: ../gtk/gtkaction.c:284 msgid "The stock icon displayed in widgets representing this action." msgstr "Standardikonen som visas i widgetar som representerar denna åtgärd." -#: gtk/gtkaction.c:304 gtk/gtkstatusicon.c:252 +#: ../gtk/gtkaction.c:304 +#: ../gtk/gtkstatusicon.c:252 msgid "GIcon" msgstr "GIcon" -#: gtk/gtkaction.c:305 gtk/gtkcellrendererpixbuf.c:215 gtk/gtkimage.c:320 -#: gtk/gtkstatusicon.c:253 +#: ../gtk/gtkaction.c:305 +#: ../gtk/gtkcellrendererpixbuf.c:215 +#: ../gtk/gtkimage.c:326 +#: ../gtk/gtkstatusicon.c:253 msgid "The GIcon being displayed" msgstr "GIcon som visas" -#: gtk/gtkaction.c:325 gtk/gtkcellrendererpixbuf.c:180 gtk/gtkimage.c:302 -#: gtk/gtkprinter.c:174 gtk/gtkstatusicon.c:236 gtk/gtkwindow.c:685 +#: ../gtk/gtkaction.c:325 +#: ../gtk/gtkcellrendererpixbuf.c:180 +#: ../gtk/gtkimage.c:308 +#: ../gtk/gtkprinter.c:174 +#: ../gtk/gtkstatusicon.c:236 +#: ../gtk/gtkwindow.c:722 msgid "Icon Name" msgstr "Ikonnamn" -#: gtk/gtkaction.c:326 gtk/gtkcellrendererpixbuf.c:181 gtk/gtkimage.c:303 -#: gtk/gtkstatusicon.c:237 +#: ../gtk/gtkaction.c:326 +#: ../gtk/gtkcellrendererpixbuf.c:181 +#: ../gtk/gtkimage.c:309 +#: ../gtk/gtkstatusicon.c:237 msgid "The name of the icon from the icon theme" msgstr "Namnet på ikonen från ikontemat" -#: gtk/gtkaction.c:333 gtk/gtktoolitem.c:186 +#: ../gtk/gtkaction.c:333 +#: ../gtk/gtktoolitem.c:195 msgid "Visible when horizontal" msgstr "Synlig då horisontell" -#: gtk/gtkaction.c:334 gtk/gtktoolitem.c:187 -msgid "" -"Whether the toolbar item is visible when the toolbar is in a horizontal " -"orientation." -msgstr "" -"Huruvida verktygsradsobjektet är synligt då verktygsraden är orienterad " -"horisontellt." +#: ../gtk/gtkaction.c:334 +#: ../gtk/gtktoolitem.c:196 +msgid "Whether the toolbar item is visible when the toolbar is in a horizontal orientation." +msgstr "Huruvida verktygsradsobjektet är synligt då verktygsraden är orienterad horisontellt." -#: gtk/gtkaction.c:349 +#: ../gtk/gtkaction.c:349 msgid "Visible when overflown" msgstr "Synlig då spilld" -#: gtk/gtkaction.c:350 -msgid "" -"When TRUE, toolitem proxies for this action are represented in the toolbar " -"overflow menu." -msgstr "" -"Då detta är SANT visas ställföreträdare för verktygsobjekt för denna åtgärd " -"i verktygsradens spillmeny." +#: ../gtk/gtkaction.c:350 +msgid "When TRUE, toolitem proxies for this action are represented in the toolbar overflow menu." +msgstr "Då detta är SANT visas ställföreträdare för verktygsobjekt för denna åtgärd i verktygsradens spillmeny." -#: gtk/gtkaction.c:357 gtk/gtktoolitem.c:193 +#: ../gtk/gtkaction.c:357 +#: ../gtk/gtktoolitem.c:202 msgid "Visible when vertical" msgstr "Synlig då vertikal" -#: gtk/gtkaction.c:358 gtk/gtktoolitem.c:194 -msgid "" -"Whether the toolbar item is visible when the toolbar is in a vertical " -"orientation." -msgstr "" -"Huruvida verktygsradsobjektet är synligt då verktygsraden är orienterad " -"vertikalt." +#: ../gtk/gtkaction.c:358 +#: ../gtk/gtktoolitem.c:203 +msgid "Whether the toolbar item is visible when the toolbar is in a vertical orientation." +msgstr "Huruvida verktygsradsobjektet är synligt då verktygsraden är orienterad vertikalt." -#: gtk/gtkaction.c:365 gtk/gtktoolitem.c:200 +#: ../gtk/gtkaction.c:365 +#: ../gtk/gtktoolitem.c:209 msgid "Is important" msgstr "Är viktig" -#: gtk/gtkaction.c:366 -msgid "" -"Whether the action is considered important. When TRUE, toolitem proxies for " -"this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." -msgstr "" -"Huruvida åtgärden är viktig. Då detta är SANT visar ställföreträdare för " -"verktygsobjekt för denna åtgärd text i GTK_TOOLBAR_BOTH_HORIZ-läge." +#: ../gtk/gtkaction.c:366 +msgid "Whether the action is considered important. When TRUE, toolitem proxies for this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." +msgstr "Huruvida åtgärden är viktig. Då detta är SANT visar ställföreträdare för verktygsobjekt för denna åtgärd text i GTK_TOOLBAR_BOTH_HORIZ-läge." -#: gtk/gtkaction.c:374 +#: ../gtk/gtkaction.c:374 msgid "Hide if empty" msgstr "Dölj om tom" -#: gtk/gtkaction.c:375 +#: ../gtk/gtkaction.c:375 msgid "When TRUE, empty menu proxies for this action are hidden." msgstr "Då detta är SANT döljs tomma menyställföreträdare för denna åtgärd." -#: gtk/gtkaction.c:381 gtk/gtkactiongroup.c:235 gtk/gtkcellrenderer.c:242 -#: gtk/gtkwidget.c:754 +#: ../gtk/gtkaction.c:381 +#: ../gtk/gtkactiongroup.c:235 +#: ../gtk/gtkcellrenderer.c:287 +#: ../gtk/gtkwidget.c:933 msgid "Sensitive" msgstr "Känslig" -#: gtk/gtkaction.c:382 +#: ../gtk/gtkaction.c:382 msgid "Whether the action is enabled." msgstr "Huruvida åtgärden är aktiverad." -#: gtk/gtkaction.c:388 gtk/gtkactiongroup.c:242 gtk/gtkstatusicon.c:287 -#: gtk/gtktreeviewcolumn.c:195 gtk/gtkwidget.c:747 +#: ../gtk/gtkaction.c:388 +#: ../gtk/gtkactiongroup.c:242 +#: ../gtk/gtkstatusicon.c:287 +#: ../gtk/gtktreeviewcolumn.c:242 +#: ../gtk/gtkwidget.c:926 msgid "Visible" msgstr "Synlig" -#: gtk/gtkaction.c:389 +#: ../gtk/gtkaction.c:389 msgid "Whether the action is visible." msgstr "Huruvida åtgärden är synlig." -#: gtk/gtkaction.c:395 +#: ../gtk/gtkaction.c:395 msgid "Action Group" msgstr "Åtgärdsgrupp" -#: gtk/gtkaction.c:396 -msgid "" -"The GtkActionGroup this GtkAction is associated with, or NULL (for internal " -"use)." -msgstr "" -"Den GtkActionGroup som denna GtkAction är associerad med, eller NULL (för " -"internt bruk)." +#: ../gtk/gtkaction.c:396 +msgid "The GtkActionGroup this GtkAction is associated with, or NULL (for internal use)." +msgstr "Den GtkActionGroup som denna GtkAction är associerad med, eller NULL (för internt bruk)." -#: gtk/gtkaction.c:414 gtk/gtkimagemenuitem.c:172 +#: ../gtk/gtkaction.c:414 +#: ../gtk/gtkimagemenuitem.c:183 msgid "Always show image" msgstr "Visa alltid bild" -#: gtk/gtkaction.c:415 gtk/gtkimagemenuitem.c:173 +#: ../gtk/gtkaction.c:415 +#: ../gtk/gtkimagemenuitem.c:184 msgid "Whether the image will always be shown" msgstr "Huruvida bilden alltid ska visas" -#: gtk/gtkactiongroup.c:229 +#: ../gtk/gtkactiongroup.c:229 msgid "A name for the action group." msgstr "Ett namn för åtgärdsgruppen." -#: gtk/gtkactiongroup.c:236 +#: ../gtk/gtkactiongroup.c:236 msgid "Whether the action group is enabled." msgstr "Huruvida åtgärdsgruppen är aktiverad." -#: gtk/gtkactiongroup.c:243 +#: ../gtk/gtkactiongroup.c:243 msgid "Whether the action group is visible." msgstr "Huruvida åtgärdsgruppen är synlig." -#: gtk/gtkactivatable.c:290 +#: ../gtk/gtkactivatable.c:290 msgid "Related Action" msgstr "Relaterad åtgärd" -#: gtk/gtkactivatable.c:291 +#: ../gtk/gtkactivatable.c:291 msgid "The action this activatable will activate and receive updates from" -msgstr "" -"Åtgärden denna aktiverbara kommer att aktivera och ta emot uppdateringar från" +msgstr "Åtgärden denna aktiverbara kommer att aktivera och ta emot uppdateringar från" -#: gtk/gtkactivatable.c:313 +#: ../gtk/gtkactivatable.c:313 msgid "Use Action Appearance" msgstr "Utseende för Använd åtgärd" -#: gtk/gtkactivatable.c:314 +#: ../gtk/gtkactivatable.c:314 msgid "Whether to use the related actions appearance properties" msgstr "Huruvida egenskaper för utseende av relaterade åtgärder ska användas" -#: gtk/gtkadjustment.c:93 gtk/gtkcellrendererprogress.c:126 -#: gtk/gtkscalebutton.c:220 gtk/gtkspinbutton.c:289 +#: ../gtk/gtkadjustment.c:114 +#: ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:220 +#: ../gtk/gtkspinbutton.c:290 msgid "Value" msgstr "Värde" -#: gtk/gtkadjustment.c:94 +#: ../gtk/gtkadjustment.c:115 msgid "The value of the adjustment" msgstr "Värdet på justeringen" -#: gtk/gtkadjustment.c:110 +#: ../gtk/gtkadjustment.c:131 msgid "Minimum Value" msgstr "Minsta värde" -#: gtk/gtkadjustment.c:111 +#: ../gtk/gtkadjustment.c:132 msgid "The minimum value of the adjustment" msgstr "Minsta värdet på justeringen" -#: gtk/gtkadjustment.c:130 +#: ../gtk/gtkadjustment.c:151 msgid "Maximum Value" msgstr "Största värde" -#: gtk/gtkadjustment.c:131 +#: ../gtk/gtkadjustment.c:152 msgid "The maximum value of the adjustment" msgstr "Största värdet på justeringen" -#: gtk/gtkadjustment.c:147 +#: ../gtk/gtkadjustment.c:168 msgid "Step Increment" msgstr "Stegökning" -#: gtk/gtkadjustment.c:148 +#: ../gtk/gtkadjustment.c:169 msgid "The step increment of the adjustment" msgstr "Stegökningen på justeringen" -#: gtk/gtkadjustment.c:164 +#: ../gtk/gtkadjustment.c:185 msgid "Page Increment" msgstr "Sidökning" -#: gtk/gtkadjustment.c:165 +#: ../gtk/gtkadjustment.c:186 msgid "The page increment of the adjustment" msgstr "Sidökningen på justeringen" -#: gtk/gtkadjustment.c:184 +#: ../gtk/gtkadjustment.c:205 msgid "Page Size" msgstr "Sidstorlek" -#: gtk/gtkadjustment.c:185 +#: ../gtk/gtkadjustment.c:206 msgid "The page size of the adjustment" msgstr "Sidstorleken på justeringen" -#: gtk/gtkalignment.c:123 +#: ../gtk/gtkalignment.c:137 msgid "Horizontal alignment" msgstr "Horisontell justering" -#: gtk/gtkalignment.c:124 gtk/gtkbutton.c:289 -msgid "" -"Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " -"right aligned" -msgstr "" -"Horisontell position av barnet i tillgängligt utrymme. 0,0 är " -"vänsterjusterat, 1,0 är högerjusterat" +#: ../gtk/gtkalignment.c:138 +#: ../gtk/gtkbutton.c:277 +msgid "Horizontal position of child in available space. 0.0 is left aligned, 1.0 is right aligned" +msgstr "Horisontell position av barnet i tillgängligt utrymme. 0,0 är vänsterjusterat, 1,0 är högerjusterat" -#: gtk/gtkalignment.c:133 +#: ../gtk/gtkalignment.c:147 msgid "Vertical alignment" msgstr "Vertikal justering" -#: gtk/gtkalignment.c:134 gtk/gtkbutton.c:308 -msgid "" -"Vertical position of child in available space. 0.0 is top aligned, 1.0 is " -"bottom aligned" -msgstr "" -"Vertikal position av barnet i tillgängligt utrymme. 0,0 är " -"överkantsjusterat, 1,0 är nederkantsjusterat" +#: ../gtk/gtkalignment.c:148 +#: ../gtk/gtkbutton.c:296 +msgid "Vertical position of child in available space. 0.0 is top aligned, 1.0 is bottom aligned" +msgstr "Vertikal position av barnet i tillgängligt utrymme. 0,0 är överkantsjusterat, 1,0 är nederkantsjusterat" -#: gtk/gtkalignment.c:142 +#: ../gtk/gtkalignment.c:156 msgid "Horizontal scale" msgstr "Horisontell skala" -#: gtk/gtkalignment.c:143 -msgid "" -"If available horizontal space is bigger than needed for the child, how much " -"of it to use for the child. 0.0 means none, 1.0 means all" -msgstr "" -"Om tillgängligt horisontellt utrymme är större än vad som krävs för barnet, " -"är detta hur mycket av det som ska användas för barnet. 0,0 betyder inget, " -"1,0 betyder allt" +#: ../gtk/gtkalignment.c:157 +msgid "If available horizontal space is bigger than needed for the child, how much of it to use for the child. 0.0 means none, 1.0 means all" +msgstr "Om tillgängligt horisontellt utrymme är större än vad som krävs för barnet, är detta hur mycket av det som ska användas för barnet. 0,0 betyder inget, 1,0 betyder allt" -#: gtk/gtkalignment.c:151 +#: ../gtk/gtkalignment.c:165 msgid "Vertical scale" msgstr "Vertikal skala" -#: gtk/gtkalignment.c:152 -msgid "" -"If available vertical space is bigger than needed for the child, how much of " -"it to use for the child. 0.0 means none, 1.0 means all" -msgstr "" -"Om tillgängligt vertikalt utrymme är större än vad som krävs för barnet, är " -"detta hur mycket av det som ska användas för barnet. 0,0 betyder inget, 1,0 " -"betyder allt" +#: ../gtk/gtkalignment.c:166 +msgid "If available vertical space is bigger than needed for the child, how much of it to use for the child. 0.0 means none, 1.0 means all" +msgstr "Om tillgängligt vertikalt utrymme är större än vad som krävs för barnet, är detta hur mycket av det som ska användas för barnet. 0,0 betyder inget, 1,0 betyder allt" -#: gtk/gtkalignment.c:169 +#: ../gtk/gtkalignment.c:183 msgid "Top Padding" msgstr "Överkantsutfyllnad" -#: gtk/gtkalignment.c:170 +#: ../gtk/gtkalignment.c:184 msgid "The padding to insert at the top of the widget." msgstr "Den utfyllnad som ska infogas överst i widgeten." -#: gtk/gtkalignment.c:186 +#: ../gtk/gtkalignment.c:200 msgid "Bottom Padding" msgstr "Nederkantsutfyllnad" -#: gtk/gtkalignment.c:187 +#: ../gtk/gtkalignment.c:201 msgid "The padding to insert at the bottom of the widget." msgstr "Den utfyllnad som ska infogas nederst i widgeten." -#: gtk/gtkalignment.c:203 +#: ../gtk/gtkalignment.c:217 msgid "Left Padding" msgstr "Vänsterutfyllnad" -#: gtk/gtkalignment.c:204 +#: ../gtk/gtkalignment.c:218 msgid "The padding to insert at the left of the widget." msgstr "Den utfyllnad som ska infogas till vänster om widgeten." -#: gtk/gtkalignment.c:220 +#: ../gtk/gtkalignment.c:234 msgid "Right Padding" msgstr "Högerutfyllnad" -#: gtk/gtkalignment.c:221 +#: ../gtk/gtkalignment.c:235 msgid "The padding to insert at the right of the widget." msgstr "Den utfyllnad som ska infogas till höger om widgeten." -#: gtk/gtkarrow.c:110 +#: ../gtk/gtkarrow.c:110 msgid "Arrow direction" msgstr "Pilriktning" -#: gtk/gtkarrow.c:111 +#: ../gtk/gtkarrow.c:111 msgid "The direction the arrow should point" msgstr "Riktningen som pilen ska peka" -#: gtk/gtkarrow.c:119 +#: ../gtk/gtkarrow.c:119 msgid "Arrow shadow" msgstr "Pilskugga" -#: gtk/gtkarrow.c:120 +#: ../gtk/gtkarrow.c:120 msgid "Appearance of the shadow surrounding the arrow" msgstr "Utseende på skuggan som omger pilen" -#: gtk/gtkarrow.c:127 gtk/gtkmenu.c:735 gtk/gtkmenuitem.c:396 +#: ../gtk/gtkarrow.c:127 +#: ../gtk/gtkmenu.c:729 +#: ../gtk/gtkmenuitem.c:391 msgid "Arrow Scaling" msgstr "Pilskalning" -#: gtk/gtkarrow.c:128 +#: ../gtk/gtkarrow.c:128 msgid "Amount of space used up by arrow" msgstr "Mängd utrymme som används av pil" -#: gtk/gtkaspectframe.c:109 gtk/gtkwidget.c:950 +#: ../gtk/gtkaspectframe.c:109 +#: ../gtk/gtkwidget.c:1121 msgid "Horizontal Alignment" msgstr "Horisontell justering" -#: gtk/gtkaspectframe.c:110 +#: ../gtk/gtkaspectframe.c:110 msgid "X alignment of the child" msgstr "X-justering av barnet" -#: gtk/gtkaspectframe.c:116 gtk/gtkwidget.c:966 +#: ../gtk/gtkaspectframe.c:116 +#: ../gtk/gtkwidget.c:1137 msgid "Vertical Alignment" msgstr "Vertikal justering" -#: gtk/gtkaspectframe.c:117 +#: ../gtk/gtkaspectframe.c:117 msgid "Y alignment of the child" msgstr "Y-justering av barnet" -#: gtk/gtkaspectframe.c:123 +#: ../gtk/gtkaspectframe.c:123 msgid "Ratio" msgstr "Förhållande" -#: gtk/gtkaspectframe.c:124 +#: ../gtk/gtkaspectframe.c:124 msgid "Aspect ratio if obey_child is FALSE" msgstr "Proportionsförhållande om obey_child är FALSKT" -#: gtk/gtkaspectframe.c:130 +#: ../gtk/gtkaspectframe.c:130 msgid "Obey child" msgstr "Lyd barn" -#: gtk/gtkaspectframe.c:131 +#: ../gtk/gtkaspectframe.c:131 msgid "Force aspect ratio to match that of the frame's child" msgstr "Tvinga proportionsförhållande för att matcha den av ramens barn" -#: gtk/gtkassistant.c:310 +#: ../gtk/gtkassistant.c:327 msgid "Header Padding" msgstr "Huvudutfyllnad" -#: gtk/gtkassistant.c:311 +#: ../gtk/gtkassistant.c:328 msgid "Number of pixels around the header." msgstr "Antal bildpunkter runt huvudet." -#: gtk/gtkassistant.c:318 +#: ../gtk/gtkassistant.c:335 msgid "Content Padding" msgstr "Innehållsutfyllnad" -#: gtk/gtkassistant.c:319 +#: ../gtk/gtkassistant.c:336 msgid "Number of pixels around the content pages." msgstr "Antal bildpunkter runt innehållssidorna." -#: gtk/gtkassistant.c:335 +#: ../gtk/gtkassistant.c:352 msgid "Page type" msgstr "Sidtyp" -#: gtk/gtkassistant.c:336 +#: ../gtk/gtkassistant.c:353 msgid "The type of the assistant page" msgstr "Typen för guidesidan" -#: gtk/gtkassistant.c:353 +#: ../gtk/gtkassistant.c:370 msgid "Page title" msgstr "Sidtitel" -#: gtk/gtkassistant.c:354 +#: ../gtk/gtkassistant.c:371 msgid "The title of the assistant page" msgstr "Titeln på guidesidan" -#: gtk/gtkassistant.c:370 +#: ../gtk/gtkassistant.c:387 msgid "Header image" msgstr "Huvudbild" -#: gtk/gtkassistant.c:371 +#: ../gtk/gtkassistant.c:388 msgid "Header image for the assistant page" msgstr "Huvudbild för guidesidan" -#: gtk/gtkassistant.c:387 +#: ../gtk/gtkassistant.c:404 msgid "Sidebar image" msgstr "Sidopanelsbild" -#: gtk/gtkassistant.c:388 +#: ../gtk/gtkassistant.c:405 msgid "Sidebar image for the assistant page" msgstr "Sidopanelsbild för guidesidan" -#: gtk/gtkassistant.c:403 +#: ../gtk/gtkassistant.c:420 msgid "Page complete" msgstr "Sida komplett" -#: gtk/gtkassistant.c:404 +#: ../gtk/gtkassistant.c:421 msgid "Whether all required fields on the page have been filled out" msgstr "Huruvida alla nödvändiga fält på sidan har fyllts i" -#: gtk/gtkbbox.c:135 +#: ../gtk/gtkbbox.c:152 msgid "Minimum child width" msgstr "Minsta bredd på barn" -#: gtk/gtkbbox.c:136 +#: ../gtk/gtkbbox.c:153 msgid "Minimum width of buttons inside the box" msgstr "Minsta bredd på knappar inuti rutan" -#: gtk/gtkbbox.c:144 +#: ../gtk/gtkbbox.c:161 msgid "Minimum child height" msgstr "Minsta höjd på barn" -#: gtk/gtkbbox.c:145 +#: ../gtk/gtkbbox.c:162 msgid "Minimum height of buttons inside the box" msgstr "Minsta höjd på knappar inuti rutan" -#: gtk/gtkbbox.c:153 +#: ../gtk/gtkbbox.c:170 msgid "Child internal width padding" msgstr "Intern utfyllnad i bredd runt barn" -#: gtk/gtkbbox.c:154 +#: ../gtk/gtkbbox.c:171 msgid "Amount to increase child's size on either side" msgstr "Mängd att öka barns storlek på var sida" -#: gtk/gtkbbox.c:162 +#: ../gtk/gtkbbox.c:179 msgid "Child internal height padding" msgstr "Intern utfyllnad i höjd runt barn" -#: gtk/gtkbbox.c:163 +#: ../gtk/gtkbbox.c:180 msgid "Amount to increase child's size on the top and bottom" msgstr "Mängd att öka barns storlek överst och nederst" -#: gtk/gtkbbox.c:171 +#: ../gtk/gtkbbox.c:188 msgid "Layout style" msgstr "Utseendestil" -#: gtk/gtkbbox.c:172 +#: ../gtk/gtkbbox.c:189 #, fuzzy -msgid "" -"How to lay out the buttons in the box. Possible values are: spread, edge, " -"start and end" -msgstr "" -"Hur knappar ska placeras ut i rutan. Möjliga värden är standard, spridd, " -"kant, start och slut" +msgid "How to lay out the buttons in the box. Possible values are: spread, edge, start and end" +msgstr "Hur knappar ska placeras ut i rutan. Möjliga värden är standard, spridd, kant, start och slut" -#: gtk/gtkbbox.c:180 +#: ../gtk/gtkbbox.c:197 msgid "Secondary" msgstr "Sekundär" -#: gtk/gtkbbox.c:181 -msgid "" -"If TRUE, the child appears in a secondary group of children, suitable for, e." -"g., help buttons" -msgstr "" -"Om SANT kommer barnet att visas i en sekundär grupp med barn. Användbart " -"exempelvis för hjälpknappar" +#: ../gtk/gtkbbox.c:198 +msgid "If TRUE, the child appears in a secondary group of children, suitable for, e.g., help buttons" +msgstr "Om SANT kommer barnet att visas i en sekundär grupp med barn. Användbart exempelvis för hjälpknappar" -#: gtk/gtkbox.c:227 gtk/gtkexpander.c:233 gtk/gtkiconview.c:666 -#: gtk/gtktreeviewcolumn.c:220 +#: ../gtk/gtkbox.c:241 +#: ../gtk/gtkexpander.c:231 +#: ../gtk/gtkiconview.c:696 +#: ../gtk/gtktreeviewcolumn.c:267 msgid "Spacing" msgstr "Utrymme" -#: gtk/gtkbox.c:228 +#: ../gtk/gtkbox.c:242 msgid "The amount of space between children" msgstr "Mängden utrymme mellan barn" -#: gtk/gtkbox.c:237 gtk/gtktable.c:184 gtk/gtktoolbar.c:527 -#: gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtkbox.c:251 +#: ../gtk/gtktable.c:193 +#: ../gtk/gtktoolbar.c:552 +#: ../gtk/gtktoolitemgroup.c:1641 msgid "Homogeneous" msgstr "Homogena" -#: gtk/gtkbox.c:238 +#: ../gtk/gtkbox.c:252 msgid "Whether the children should all be the same size" msgstr "Huruvida barnen allihop ska vara av samma storlek" -#: gtk/gtkbox.c:254 gtk/gtktoolbar.c:519 gtk/gtktoolitemgroup.c:1631 -#: gtk/gtktoolpalette.c:1065 gtk/gtktreeviewcolumn.c:276 +#: ../gtk/gtkbox.c:268 +#: ../gtk/gtktoolbar.c:544 +#: ../gtk/gtktoolitemgroup.c:1648 +#: ../gtk/gtktoolpalette.c:1092 +#: ../gtk/gtktreeviewcolumn.c:323 msgid "Expand" msgstr "Expandera" -#: gtk/gtkbox.c:255 +#: ../gtk/gtkbox.c:269 msgid "Whether the child should receive extra space when the parent grows" msgstr "Huruvida barnet ska få extra utrymme när föräldern växer" -#: gtk/gtkbox.c:271 gtk/gtktoolitemgroup.c:1638 +#: ../gtk/gtkbox.c:281 +#: ../gtk/gtktoolitemgroup.c:1655 msgid "Fill" msgstr "Fyll" -#: gtk/gtkbox.c:272 -msgid "" -"Whether extra space given to the child should be allocated to the child or " -"used as padding" -msgstr "" -"Huruvida extra utrymme som ges till barnet ska allokeras till barnet eller " -"användas som utfyllnad" +#: ../gtk/gtkbox.c:282 +msgid "Whether extra space given to the child should be allocated to the child or used as padding" +msgstr "Huruvida extra utrymme som ges till barnet ska allokeras till barnet eller användas som utfyllnad" -#: gtk/gtkbox.c:279 gtk/gtktrayicon-x11.c:165 +#: ../gtk/gtkbox.c:289 +#: ../gtk/gtktrayicon-x11.c:165 msgid "Padding" msgstr "Utfyllnad" -#: gtk/gtkbox.c:280 +#: ../gtk/gtkbox.c:290 msgid "Extra space to put between the child and its neighbors, in pixels" -msgstr "" -"Extra utrymme att placera mellan barnet och dess grannar, i bildpunkter" +msgstr "Extra utrymme att placera mellan barnet och dess grannar, i bildpunkter" -#: gtk/gtkbox.c:286 +#: ../gtk/gtkbox.c:296 msgid "Pack type" msgstr "Packningstyp" -#: gtk/gtkbox.c:287 gtk/gtknotebook.c:692 -msgid "" -"A GtkPackType indicating whether the child is packed with reference to the " -"start or end of the parent" -msgstr "" -"En GtkPackType som indikerar huruvida barnet packas med avseende på början " -"eller slutet på föräldern" +#: ../gtk/gtkbox.c:297 +#: ../gtk/gtknotebook.c:796 +msgid "A GtkPackType indicating whether the child is packed with reference to the start or end of the parent" +msgstr "En GtkPackType som indikerar huruvida barnet packas med avseende på början eller slutet på föräldern" -#: gtk/gtkbox.c:293 gtk/gtknotebook.c:670 gtk/gtkpaned.c:270 -#: gtk/gtkruler.c:158 gtk/gtktoolitemgroup.c:1652 +#: ../gtk/gtkbox.c:303 +#: ../gtk/gtknotebook.c:767 +#: ../gtk/gtkpaned.c:327 +#: ../gtk/gtktoolitemgroup.c:1669 msgid "Position" msgstr "Position" -#: gtk/gtkbox.c:294 gtk/gtknotebook.c:671 +#: ../gtk/gtkbox.c:304 +#: ../gtk/gtknotebook.c:768 msgid "The index of the child in the parent" msgstr "Indexet för barnet i föräldern" -#: gtk/gtkbuilder.c:315 +#: ../gtk/gtkbuilder.c:314 msgid "Translation Domain" msgstr "Översättningsdomän" -#: gtk/gtkbuilder.c:316 +#: ../gtk/gtkbuilder.c:315 msgid "The translation domain used by gettext" msgstr "Översättningsdomänen som används av gettext" -#: gtk/gtkbutton.c:239 -msgid "" -"Text of the label widget inside the button, if the button contains a label " -"widget" -msgstr "" -"Texten på etikettwidgeten inuti knappen, om knappen innehåller en " -"etikettwidget" +#: ../gtk/gtkbutton.c:227 +msgid "Text of the label widget inside the button, if the button contains a label widget" +msgstr "Texten på etikettwidgeten inuti knappen, om knappen innehåller en etikettwidget" -#: gtk/gtkbutton.c:246 gtk/gtkexpander.c:217 gtk/gtklabel.c:570 -#: gtk/gtkmenuitem.c:348 gtk/gtktoolbutton.c:209 +#: ../gtk/gtkbutton.c:234 +#: ../gtk/gtkexpander.c:215 +#: ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 +#: ../gtk/gtktoolbutton.c:209 msgid "Use underline" msgstr "Använd understrykning" -#: gtk/gtkbutton.c:247 gtk/gtkexpander.c:218 gtk/gtklabel.c:571 -#: gtk/gtkmenuitem.c:349 -msgid "" -"If set, an underline in the text indicates the next character should be used " -"for the mnemonic accelerator key" -msgstr "" -"Om detta är angivet kommer en understrykning i texten att indikera att nästa " -"tecken ska användas som en genvägstangent" +#: ../gtk/gtkbutton.c:235 +#: ../gtk/gtkexpander.c:216 +#: ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 +msgid "If set, an underline in the text indicates the next character should be used for the mnemonic accelerator key" +msgstr "Om detta är angivet kommer en understrykning i texten att indikera att nästa tecken ska användas som en genvägstangent" -#: gtk/gtkbutton.c:254 gtk/gtkimagemenuitem.c:153 +#: ../gtk/gtkbutton.c:242 +#: ../gtk/gtkimagemenuitem.c:164 msgid "Use stock" msgstr "Använd standard" -#: gtk/gtkbutton.c:255 -msgid "" -"If set, the label is used to pick a stock item instead of being displayed" -msgstr "" -"Om detta är angivet kommer etiketten att användas för att plocka ett " -"standardobjekt istället för att visas" +#: ../gtk/gtkbutton.c:243 +msgid "If set, the label is used to pick a stock item instead of being displayed" +msgstr "Om detta är angivet kommer etiketten att användas för att plocka ett standardobjekt istället för att visas" -#: gtk/gtkbutton.c:262 gtk/gtkcombobox.c:811 gtk/gtkfilechooserbutton.c:385 +#: ../gtk/gtkbutton.c:250 +#: ../gtk/gtkcombobox.c:866 +#: ../gtk/gtkfilechooserbutton.c:383 msgid "Focus on click" msgstr "Fokusera vid klick" -#: gtk/gtkbutton.c:263 gtk/gtkfilechooserbutton.c:386 +#: ../gtk/gtkbutton.c:251 +#: ../gtk/gtkfilechooserbutton.c:384 msgid "Whether the button grabs focus when it is clicked with the mouse" msgstr "Huruvida knappen tar fokus när den klickas på med musen" -#: gtk/gtkbutton.c:270 +#: ../gtk/gtkbutton.c:258 msgid "Border relief" msgstr "Kantrelief" -#: gtk/gtkbutton.c:271 +#: ../gtk/gtkbutton.c:259 msgid "The border relief style" msgstr "Reliefstilen på kanten" -#: gtk/gtkbutton.c:288 +#: ../gtk/gtkbutton.c:276 msgid "Horizontal alignment for child" msgstr "Horisontell justering för barn" -#: gtk/gtkbutton.c:307 +#: ../gtk/gtkbutton.c:295 msgid "Vertical alignment for child" msgstr "Vertikal justering för barn" -#: gtk/gtkbutton.c:324 gtk/gtkimagemenuitem.c:138 +#: ../gtk/gtkbutton.c:312 +#: ../gtk/gtkimagemenuitem.c:149 msgid "Image widget" msgstr "Bildwidget" -#: gtk/gtkbutton.c:325 +#: ../gtk/gtkbutton.c:313 msgid "Child widget to appear next to the button text" msgstr "Barnwidget att visa bredvid knapptexten" -#: gtk/gtkbutton.c:339 +#: ../gtk/gtkbutton.c:327 msgid "Image position" msgstr "Bildposition" -#: gtk/gtkbutton.c:340 +#: ../gtk/gtkbutton.c:328 msgid "The position of the image relative to the text" msgstr "Position på bilden relativ till texten" -#: gtk/gtkbutton.c:460 +#: ../gtk/gtkbutton.c:448 msgid "Default Spacing" msgstr "Standardutrymme" -#: gtk/gtkbutton.c:461 +#: ../gtk/gtkbutton.c:449 msgid "Extra space to add for GTK_CAN_DEFAULT buttons" msgstr "Extra utrymme att lägga till för GTK_CAN_DEFAULT-knappar" -#: gtk/gtkbutton.c:475 +#: ../gtk/gtkbutton.c:463 msgid "Default Outside Spacing" msgstr "Standardutrymme på utsidan" -#: gtk/gtkbutton.c:476 -msgid "" -"Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " -"the border" -msgstr "" -"Extra utrymme att lägga till för GTK_CAN_DEFAULT-knappar som alltid visas " -"utanför kanten" +#: ../gtk/gtkbutton.c:464 +msgid "Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside the border" +msgstr "Extra utrymme att lägga till för GTK_CAN_DEFAULT-knappar som alltid visas utanför kanten" -#: gtk/gtkbutton.c:481 +#: ../gtk/gtkbutton.c:469 msgid "Child X Displacement" msgstr "X-förflyttning av barn" -#: gtk/gtkbutton.c:482 -msgid "" -"How far in the x direction to move the child when the button is depressed" +#: ../gtk/gtkbutton.c:470 +msgid "How far in the x direction to move the child when the button is depressed" msgstr "Hur långt bort i x-riktingen barnet ska flyttas då knappen trycks ned" -#: gtk/gtkbutton.c:489 +#: ../gtk/gtkbutton.c:477 msgid "Child Y Displacement" msgstr "Y-förflyttning av barn" -#: gtk/gtkbutton.c:490 -msgid "" -"How far in the y direction to move the child when the button is depressed" +#: ../gtk/gtkbutton.c:478 +msgid "How far in the y direction to move the child when the button is depressed" msgstr "Hur långt bort i y-riktningen barnet ska flyttas då knappen trycks ned" -#: gtk/gtkbutton.c:506 +#: ../gtk/gtkbutton.c:494 msgid "Displace focus" msgstr "Förflytta fokus" -#: gtk/gtkbutton.c:507 -msgid "" -"Whether the child_displacement_x/_y properties should also affect the focus " -"rectangle" -msgstr "" -"Huruvida egenskaperna child_displacement_x/_y även ska påverka " -"fokusrektangeln" +#: ../gtk/gtkbutton.c:495 +msgid "Whether the child_displacement_x/_y properties should also affect the focus rectangle" +msgstr "Huruvida egenskaperna child_displacement_x/_y även ska påverka fokusrektangeln" -#: gtk/gtkbutton.c:520 gtk/gtkentry.c:696 gtk/gtkentry.c:1741 +#: ../gtk/gtkbutton.c:508 +#: ../gtk/gtkentry.c:787 +#: ../gtk/gtkentry.c:1832 msgid "Inner Border" msgstr "Inre kant" -#: gtk/gtkbutton.c:521 +#: ../gtk/gtkbutton.c:509 msgid "Border between button edges and child." msgstr "Kant mellan knappsidor och barn." -#: gtk/gtkbutton.c:534 +#: ../gtk/gtkbutton.c:522 msgid "Image spacing" msgstr "Bildutrymme" -#: gtk/gtkbutton.c:535 +#: ../gtk/gtkbutton.c:523 msgid "Spacing in pixels between the image and label" msgstr "Utrymme att placera mellan bilden och etiketten (i bildpunkter)" -#: gtk/gtkbutton.c:549 -msgid "Show button images" -msgstr "Visa knappbilder" - -#: gtk/gtkbutton.c:550 -msgid "Whether images should be shown on buttons" -msgstr "Huruvida bilder ska visas på knappar" - -#: gtk/gtkcalendar.c:478 +#: ../gtk/gtkcalendar.c:479 msgid "Year" msgstr "År" -#: gtk/gtkcalendar.c:479 +#: ../gtk/gtkcalendar.c:480 msgid "The selected year" msgstr "Det markerade året" -#: gtk/gtkcalendar.c:492 +#: ../gtk/gtkcalendar.c:493 msgid "Month" msgstr "Månad" -#: gtk/gtkcalendar.c:493 +#: ../gtk/gtkcalendar.c:494 msgid "The selected month (as a number between 0 and 11)" msgstr "Den markerade månaden (som ett tal mellan 0 och 11)" -#: gtk/gtkcalendar.c:507 +#: ../gtk/gtkcalendar.c:508 msgid "Day" msgstr "Dag" -#: gtk/gtkcalendar.c:508 -msgid "" -"The selected day (as a number between 1 and 31, or 0 to unselect the " -"currently selected day)" -msgstr "" -"Den markerade dagen (som ett tal mellan 1 och 31, eller 0 för att avmarkera " -"den för tillfället markerade dagen)" +#: ../gtk/gtkcalendar.c:509 +msgid "The selected day (as a number between 1 and 31, or 0 to unselect the currently selected day)" +msgstr "Den markerade dagen (som ett tal mellan 1 och 31, eller 0 för att avmarkera den för tillfället markerade dagen)" -#: gtk/gtkcalendar.c:522 +#: ../gtk/gtkcalendar.c:523 msgid "Show Heading" msgstr "Visa tabellhuvud" -#: gtk/gtkcalendar.c:523 +#: ../gtk/gtkcalendar.c:524 msgid "If TRUE, a heading is displayed" msgstr "Om SANT visas ett tabellhuvud" -#: gtk/gtkcalendar.c:537 +#: ../gtk/gtkcalendar.c:538 msgid "Show Day Names" msgstr "Visa dagsnamn" -#: gtk/gtkcalendar.c:538 +#: ../gtk/gtkcalendar.c:539 msgid "If TRUE, day names are displayed" msgstr "Om SANT visas dagsnamn" -#: gtk/gtkcalendar.c:551 +#: ../gtk/gtkcalendar.c:552 msgid "No Month Change" msgstr "Ingen månadsändring" -#: gtk/gtkcalendar.c:552 +#: ../gtk/gtkcalendar.c:553 msgid "If TRUE, the selected month cannot be changed" msgstr "Om SANT kan den markerade månaden inte ändras" -#: gtk/gtkcalendar.c:566 +#: ../gtk/gtkcalendar.c:567 msgid "Show Week Numbers" msgstr "Visa veckonummer" -#: gtk/gtkcalendar.c:567 +#: ../gtk/gtkcalendar.c:568 msgid "If TRUE, week numbers are displayed" msgstr "Om SANT visas veckonummer" -#: gtk/gtkcalendar.c:582 +#: ../gtk/gtkcalendar.c:583 msgid "Details Width" msgstr "Bredd för detaljer" -#: gtk/gtkcalendar.c:583 +#: ../gtk/gtkcalendar.c:584 msgid "Details width in characters" msgstr "Bredd för detaljer, i tecken" -#: gtk/gtkcalendar.c:598 +#: ../gtk/gtkcalendar.c:599 msgid "Details Height" msgstr "Höjd för detaljer" -#: gtk/gtkcalendar.c:599 +#: ../gtk/gtkcalendar.c:600 msgid "Details height in rows" msgstr "Höjd för detaljer, i rader" -#: gtk/gtkcalendar.c:615 +#: ../gtk/gtkcalendar.c:616 msgid "Show Details" msgstr "Visa detaljer" -#: gtk/gtkcalendar.c:616 +#: ../gtk/gtkcalendar.c:617 msgid "If TRUE, details are shown" msgstr "Om SANT visas detaljer" -#: gtk/gtkcalendar.c:628 +#: ../gtk/gtkcalendar.c:629 msgid "Inner border" msgstr "Inre ram" -#: gtk/gtkcalendar.c:629 +#: ../gtk/gtkcalendar.c:630 msgid "Inner border space" msgstr "Inre ramutrymme" -#: gtk/gtkcalendar.c:640 +#: ../gtk/gtkcalendar.c:641 msgid "Vertical separation" msgstr "Vertikal separation" -#: gtk/gtkcalendar.c:641 +#: ../gtk/gtkcalendar.c:642 msgid "Space between day headers and main area" msgstr "Utrymme mellan dagrubrik och huvudyta" -#: gtk/gtkcalendar.c:652 +#: ../gtk/gtkcalendar.c:653 msgid "Horizontal separation" msgstr "Horisontell separation" -#: gtk/gtkcalendar.c:653 +#: ../gtk/gtkcalendar.c:654 msgid "Space between week headers and main area" msgstr "Utrymme mellan veckorubrik och huvudyta" -#: gtk/gtkcelleditable.c:53 +#: ../gtk/gtkcelleditable.c:53 msgid "Editing Canceled" msgstr "Redigeringen avbruten" -#: gtk/gtkcelleditable.c:54 +#: ../gtk/gtkcelleditable.c:54 msgid "Indicates that editing has been canceled" msgstr "Indikerar att redigeringen har avbrutits" -#: gtk/gtkcellrendereraccel.c:138 +#: ../gtk/gtkcellrendereraccel.c:138 msgid "Accelerator key" msgstr "Snabbtangent" -#: gtk/gtkcellrendereraccel.c:139 +#: ../gtk/gtkcellrendereraccel.c:139 msgid "The keyval of the accelerator" msgstr "Nyckelvärdet för snabbtangenten" -#: gtk/gtkcellrendereraccel.c:155 +#: ../gtk/gtkcellrendereraccel.c:155 msgid "Accelerator modifiers" msgstr "Genvägsmodiferare" -#: gtk/gtkcellrendereraccel.c:156 +#: ../gtk/gtkcellrendereraccel.c:156 msgid "The modifier mask of the accelerator" msgstr "Modifierarmasken för genvägen" -#: gtk/gtkcellrendereraccel.c:173 +#: ../gtk/gtkcellrendereraccel.c:173 msgid "Accelerator keycode" msgstr "Genvägstangentkod" -#: gtk/gtkcellrendereraccel.c:174 +#: ../gtk/gtkcellrendereraccel.c:174 msgid "The hardware keycode of the accelerator" msgstr "Hårdvarutangentkoden för genvägen" -#: gtk/gtkcellrendereraccel.c:193 +#: ../gtk/gtkcellrendereraccel.c:193 msgid "Accelerator Mode" msgstr "Genvägsläge" -#: gtk/gtkcellrendereraccel.c:194 +#: ../gtk/gtkcellrendereraccel.c:194 msgid "The type of accelerators" msgstr "Typen av genvägar" -#: gtk/gtkcellrenderer.c:226 +#: ../gtk/gtkcellrenderer.c:271 msgid "mode" msgstr "läge" -#: gtk/gtkcellrenderer.c:227 +#: ../gtk/gtkcellrenderer.c:272 msgid "Editable mode of the CellRenderer" msgstr "Redigerbart läge för CellRenderer" -#: gtk/gtkcellrenderer.c:235 +#: ../gtk/gtkcellrenderer.c:280 msgid "visible" msgstr "synlig" -#: gtk/gtkcellrenderer.c:236 +#: ../gtk/gtkcellrenderer.c:281 msgid "Display the cell" msgstr "Visa cellen" -#: gtk/gtkcellrenderer.c:243 +#: ../gtk/gtkcellrenderer.c:288 msgid "Display the cell sensitive" msgstr "Visa cellen som känslig" # SUN CHANGED MESSAGE -#: gtk/gtkcellrenderer.c:250 +#: ../gtk/gtkcellrenderer.c:295 msgid "xalign" msgstr "x-justering" -#: gtk/gtkcellrenderer.c:251 +#: ../gtk/gtkcellrenderer.c:296 msgid "The x-align" msgstr "X-justeringen" # SUN CHANGED MESSAGE -#: gtk/gtkcellrenderer.c:260 +#: ../gtk/gtkcellrenderer.c:305 msgid "yalign" msgstr "y-justering" -#: gtk/gtkcellrenderer.c:261 +#: ../gtk/gtkcellrenderer.c:306 msgid "The y-align" msgstr "Y-justeringen" # SUN CHANGED MESSAGE -#: gtk/gtkcellrenderer.c:270 +#: ../gtk/gtkcellrenderer.c:315 msgid "xpad" msgstr "x-utfyllnad" -#: gtk/gtkcellrenderer.c:271 +#: ../gtk/gtkcellrenderer.c:316 msgid "The xpad" msgstr "X-utfyllnaden" # SUN CHANGED MESSAGE -#: gtk/gtkcellrenderer.c:280 +#: ../gtk/gtkcellrenderer.c:325 msgid "ypad" msgstr "y-utfyllnad" -#: gtk/gtkcellrenderer.c:281 +#: ../gtk/gtkcellrenderer.c:326 msgid "The ypad" msgstr "Y-utfyllnaden" -#: gtk/gtkcellrenderer.c:290 +#: ../gtk/gtkcellrenderer.c:335 msgid "width" msgstr "bredd" -#: gtk/gtkcellrenderer.c:291 +#: ../gtk/gtkcellrenderer.c:336 msgid "The fixed width" msgstr "Den fasta bredden" -#: gtk/gtkcellrenderer.c:300 +#: ../gtk/gtkcellrenderer.c:345 msgid "height" msgstr "höjd" -#: gtk/gtkcellrenderer.c:301 +#: ../gtk/gtkcellrenderer.c:346 msgid "The fixed height" msgstr "Den fasta höjden" -#: gtk/gtkcellrenderer.c:310 +#: ../gtk/gtkcellrenderer.c:355 msgid "Is Expander" msgstr "Är expanderare" -#: gtk/gtkcellrenderer.c:311 +#: ../gtk/gtkcellrenderer.c:356 msgid "Row has children" msgstr "Rad har barn" -#: gtk/gtkcellrenderer.c:319 +#: ../gtk/gtkcellrenderer.c:364 msgid "Is Expanded" msgstr "Är expanderad" -#: gtk/gtkcellrenderer.c:320 +#: ../gtk/gtkcellrenderer.c:365 msgid "Row is an expander row, and is expanded" msgstr "Raden är en expanderingsrad, och är expanderad" -#: gtk/gtkcellrenderer.c:327 +#: ../gtk/gtkcellrenderer.c:372 msgid "Cell background color name" msgstr "Namn på cellbakgrundsfärg" -#: gtk/gtkcellrenderer.c:328 +#: ../gtk/gtkcellrenderer.c:373 msgid "Cell background color as a string" msgstr "Cellbakgrundsfärg som en sträng" -#: gtk/gtkcellrenderer.c:335 +#: ../gtk/gtkcellrenderer.c:380 msgid "Cell background color" msgstr "Cellbakgrundsfärg" -#: gtk/gtkcellrenderer.c:336 +#: ../gtk/gtkcellrenderer.c:381 msgid "Cell background color as a GdkColor" msgstr "Cellbakgrundsfärg som en GdkColor" -#: gtk/gtkcellrenderer.c:343 +#: ../gtk/gtkcellrenderer.c:394 +#, fuzzy +msgid "Cell background RGBA color" +msgstr "Cellbakgrundsfärg" + +#: ../gtk/gtkcellrenderer.c:395 +#, fuzzy +msgid "Cell background color as a GdkRGBA" +msgstr "Cellbakgrundsfärg som en GdkColor" + +#: ../gtk/gtkcellrenderer.c:402 msgid "Editing" msgstr "Redigering" -#: gtk/gtkcellrenderer.c:344 +#: ../gtk/gtkcellrenderer.c:403 msgid "Whether the cell renderer is currently in editing mode" msgstr "Huruvida cellrenderaren för närvarande är i redigeringsläge" -#: gtk/gtkcellrenderer.c:352 +#: ../gtk/gtkcellrenderer.c:411 msgid "Cell background set" msgstr "Cellbakgrund inställd" -#: gtk/gtkcellrenderer.c:353 +#: ../gtk/gtkcellrenderer.c:412 msgid "Whether this tag affects the cell background color" msgstr "Huruvida denna tagg påverkar cellbakgrundsfärgen" -#: gtk/gtkcellrenderercombo.c:110 +#: ../gtk/gtkcellrenderercombo.c:109 msgid "Model" msgstr "Modell" -#: gtk/gtkcellrenderercombo.c:111 +#: ../gtk/gtkcellrenderercombo.c:110 msgid "The model containing the possible values for the combo box" msgstr "Modellen som innehåller de möjliga värdena för kombinationsrutan" -#: gtk/gtkcellrenderercombo.c:133 gtk/gtkcomboboxentry.c:104 +#: ../gtk/gtkcellrenderercombo.c:132 msgid "Text Column" msgstr "Textkolumn" -#: gtk/gtkcellrenderercombo.c:134 gtk/gtkcomboboxentry.c:105 +#: ../gtk/gtkcellrenderercombo.c:133 msgid "A column in the data source model to get the strings from" msgstr "En kolumn i datakällmodellen att hämta strängar från" -#: gtk/gtkcellrenderercombo.c:151 +#: ../gtk/gtkcellrenderercombo.c:150 +#: ../gtk/gtkcombobox.c:933 msgid "Has Entry" msgstr "Har post" -#: gtk/gtkcellrenderercombo.c:152 +#: ../gtk/gtkcellrenderercombo.c:151 msgid "If FALSE, don't allow to enter strings other than the chosen ones" -msgstr "" -"Om detta är FALSKT kommer det inte att vara tillåtet att ange andra strängar " -"än de utvalda" +msgstr "Om detta är FALSKT kommer det inte att vara tillåtet att ange andra strängar än de utvalda" -#: gtk/gtkcellrendererpixbuf.c:120 +#: ../gtk/gtkcellrendererpixbuf.c:120 msgid "Pixbuf Object" msgstr "Pixbuf-objekt" -#: gtk/gtkcellrendererpixbuf.c:121 +#: ../gtk/gtkcellrendererpixbuf.c:121 msgid "The pixbuf to render" msgstr "Pixbuf:en att rendera" # SUN CHANGED MESSAGE -#: gtk/gtkcellrendererpixbuf.c:128 +#: ../gtk/gtkcellrendererpixbuf.c:128 msgid "Pixbuf Expander Open" msgstr "Pixbuf-expanderare, öppen" -#: gtk/gtkcellrendererpixbuf.c:129 +#: ../gtk/gtkcellrendererpixbuf.c:129 msgid "Pixbuf for open expander" msgstr "Pixbuf för öppen expanderare" # SUN CHANGED MESSAGE -#: gtk/gtkcellrendererpixbuf.c:136 +#: ../gtk/gtkcellrendererpixbuf.c:136 msgid "Pixbuf Expander Closed" msgstr "Pixbuf-expanderare, stängd" # SUN CHANGED MESSAGE -#: gtk/gtkcellrendererpixbuf.c:137 +#: ../gtk/gtkcellrendererpixbuf.c:137 msgid "Pixbuf for closed expander" msgstr "Pixbuf för stängd expanderare" -#: gtk/gtkcellrendererpixbuf.c:144 gtk/gtkimage.c:244 gtk/gtkstatusicon.c:228 +#: ../gtk/gtkcellrendererpixbuf.c:144 +#: ../gtk/gtkimage.c:250 +#: ../gtk/gtkstatusicon.c:228 msgid "Stock ID" msgstr "Standard-ID" -#: gtk/gtkcellrendererpixbuf.c:145 +#: ../gtk/gtkcellrendererpixbuf.c:145 msgid "The stock ID of the stock icon to render" msgstr "Standard-ID på standardikonen att rendera" -#: gtk/gtkcellrendererpixbuf.c:152 gtk/gtkcellrendererspinner.c:153 -#: gtk/gtkrecentmanager.c:305 gtk/gtkstatusicon.c:269 +#: ../gtk/gtkcellrendererpixbuf.c:152 +#: ../gtk/gtkcellrendererspinner.c:153 +#: ../gtk/gtkrecentmanager.c:309 +#: ../gtk/gtkstatusicon.c:269 msgid "Size" msgstr "Storlek" -#: gtk/gtkcellrendererpixbuf.c:153 +#: ../gtk/gtkcellrendererpixbuf.c:153 msgid "The GtkIconSize value that specifies the size of the rendered icon" msgstr "Det GtkIconSize-värde som anger storleken på den renderade ikonen" -#: gtk/gtkcellrendererpixbuf.c:162 +#: ../gtk/gtkcellrendererpixbuf.c:162 msgid "Detail" msgstr "Detalj" -#: gtk/gtkcellrendererpixbuf.c:163 +#: ../gtk/gtkcellrendererpixbuf.c:163 msgid "Render detail to pass to the theme engine" msgstr "Renderingsdetalj att skicka till temamotorn" -#: gtk/gtkcellrendererpixbuf.c:196 +#: ../gtk/gtkcellrendererpixbuf.c:196 msgid "Follow State" msgstr "Följ tillstånd" -#: gtk/gtkcellrendererpixbuf.c:197 +#: ../gtk/gtkcellrendererpixbuf.c:197 msgid "Whether the rendered pixbuf should be colorized according to the state" msgstr "Huruvida den renderade pixbufen ska färgsättas enligt tillståndet" -#: gtk/gtkcellrendererpixbuf.c:214 gtk/gtkimage.c:319 gtk/gtkwindow.c:662 +#: ../gtk/gtkcellrendererpixbuf.c:214 +#: ../gtk/gtkimage.c:325 +#: ../gtk/gtkwindow.c:699 msgid "Icon" msgstr "Ikon" -#: gtk/gtkcellrendererprogress.c:127 +#: ../gtk/gtkcellrendererprogress.c:127 msgid "Value of the progress bar" msgstr "Värde på förloppsmätaren" -#: gtk/gtkcellrendererprogress.c:144 gtk/gtkcellrenderertext.c:231 -#: gtk/gtkentry.c:739 gtk/gtkentrybuffer.c:352 gtk/gtkmessagedialog.c:226 -#: gtk/gtkprogressbar.c:150 gtk/gtktextbuffer.c:210 +#: ../gtk/gtkcellrendererprogress.c:144 +#: ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 +#: ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:226 +#: ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:209 msgid "Text" msgstr "Text" -#: gtk/gtkcellrendererprogress.c:145 +#: ../gtk/gtkcellrendererprogress.c:145 msgid "Text on the progress bar" msgstr "Text på förloppsmätaren" -#: gtk/gtkcellrendererprogress.c:168 gtk/gtkcellrendererspinner.c:139 +#: ../gtk/gtkcellrendererprogress.c:168 +#: ../gtk/gtkcellrendererspinner.c:139 msgid "Pulse" msgstr "Puls" -#: gtk/gtkcellrendererprogress.c:169 -msgid "" -"Set this to positive values to indicate that some progress is made, but you " -"don't know how much." -msgstr "" -"Ställ in den här till positiva värden för att indikera att förloppet " -"ändrats, men du vet inte hur mycket." +#: ../gtk/gtkcellrendererprogress.c:169 +msgid "Set this to positive values to indicate that some progress is made, but you don't know how much." +msgstr "Ställ in den här till positiva värden för att indikera att förloppet ändrats, men du vet inte hur mycket." -#: gtk/gtkcellrendererprogress.c:185 +#: ../gtk/gtkcellrendererprogress.c:185 msgid "Text x alignment" msgstr "X-justering för text" -#: gtk/gtkcellrendererprogress.c:186 -msgid "" -"The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " -"layouts." -msgstr "" -"Den horisontella textjusteringen, från 0 (vänster) till 1 (höger). Omvänd " -"för höger-till-vänster-layouter." +#: ../gtk/gtkcellrendererprogress.c:186 +msgid "The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL layouts." +msgstr "Den horisontella textjusteringen, från 0 (vänster) till 1 (höger). Omvänd för höger-till-vänster-layouter." -#: gtk/gtkcellrendererprogress.c:202 +#: ../gtk/gtkcellrendererprogress.c:202 msgid "Text y alignment" msgstr "Y-justering för text" -#: gtk/gtkcellrendererprogress.c:203 +#: ../gtk/gtkcellrendererprogress.c:203 msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." msgstr "Den vertikala textjusteringen, från 0 (överst) till 1 (nederst)." -#: gtk/gtkcellrendererprogress.c:214 gtk/gtkprogressbar.c:126 -#: gtk/gtkrange.c:427 +#: ../gtk/gtkcellrendererprogress.c:214 +#: ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:439 msgid "Inverted" msgstr "Inverterad" -#: gtk/gtkcellrendererprogress.c:215 gtk/gtkprogressbar.c:127 -#, fuzzy +#: ../gtk/gtkcellrendererprogress.c:215 +#: ../gtk/gtkprogressbar.c:154 msgid "Invert the direction in which the progress bar grows" -msgstr "Orientering och tillväxtriktning för förloppsmätaren" +msgstr "Invertera riktningen i vilken förloppsmätaren växer" -#: gtk/gtkcellrendererspin.c:91 gtk/gtkrange.c:419 gtk/gtkscalebutton.c:239 -#: gtk/gtkspinbutton.c:228 +#: ../gtk/gtkcellrendererspin.c:91 +#: ../gtk/gtkrange.c:431 +#: ../gtk/gtkscalebutton.c:239 +#: ../gtk/gtkspinbutton.c:229 msgid "Adjustment" msgstr "Justering" -#: gtk/gtkcellrendererspin.c:92 gtk/gtkspinbutton.c:229 +#: ../gtk/gtkcellrendererspin.c:92 +#: ../gtk/gtkspinbutton.c:230 #, fuzzy msgid "The adjustment that holds the value of the spin button" msgstr "Justeringen som håller värdet på snurrknappen" -#: gtk/gtkcellrendererspin.c:107 +#: ../gtk/gtkcellrendererspin.c:107 msgid "Climb rate" msgstr "Klättringsfrekvens" -#: gtk/gtkcellrendererspin.c:108 gtk/gtkspinbutton.c:237 +#: ../gtk/gtkcellrendererspin.c:108 +#: ../gtk/gtkspinbutton.c:238 msgid "The acceleration rate when you hold down a button" msgstr "Accelerationen då du trycker ned en knapp" -#: gtk/gtkcellrendererspin.c:121 gtk/gtkscale.c:244 gtk/gtkspinbutton.c:246 +#: ../gtk/gtkcellrendererspin.c:121 +#: ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:247 msgid "Digits" msgstr "Siffror" -#: gtk/gtkcellrendererspin.c:122 gtk/gtkspinbutton.c:247 +#: ../gtk/gtkcellrendererspin.c:122 +#: ../gtk/gtkspinbutton.c:248 msgid "The number of decimal places to display" msgstr "Antalet siffror att visas" -#: gtk/gtkcellrendererspinner.c:119 gtk/gtkcheckmenuitem.c:105 -#: gtk/gtkmenu.c:525 gtk/gtkspinner.c:131 gtk/gtktoggleaction.c:133 -#: gtk/gtktogglebutton.c:115 gtk/gtktoggletoolbutton.c:112 +#: ../gtk/gtkcellrendererspinner.c:119 +#: ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:519 +#: ../gtk/gtkspinner.c:118 +#: ../gtk/gtkswitch.c:747 +#: ../gtk/gtktoggleaction.c:133 +#: ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 msgid "Active" msgstr "Aktiv" -#: gtk/gtkcellrendererspinner.c:120 +#: ../gtk/gtkcellrendererspinner.c:120 msgid "Whether the spinner is active (ie. shown) in the cell" msgstr "Huruvida snurrväljaren är aktiv (alltså visas) i cellen" -#: gtk/gtkcellrendererspinner.c:140 +#: ../gtk/gtkcellrendererspinner.c:140 msgid "Pulse of the spinner" msgstr "Puls för snurrväljaren" -#: gtk/gtkcellrendererspinner.c:154 +#: ../gtk/gtkcellrendererspinner.c:154 msgid "The GtkIconSize value that specifies the size of the rendered spinner" -msgstr "" -"Det GtkIconSize-värde som anger storleken på den renderade snurrväljaren" +msgstr "Det GtkIconSize-värde som anger storleken på den renderade snurrväljaren" -#: gtk/gtkcellrenderertext.c:232 +#: ../gtk/gtkcellrenderertext.c:256 msgid "Text to render" msgstr "Text att rendera" -#: gtk/gtkcellrenderertext.c:239 +#: ../gtk/gtkcellrenderertext.c:263 msgid "Markup" msgstr "Markup" -#: gtk/gtkcellrenderertext.c:240 +#: ../gtk/gtkcellrenderertext.c:264 msgid "Marked up text to render" msgstr "Markup-text att rendera" -#: gtk/gtkcellrenderertext.c:247 gtk/gtklabel.c:556 +#: ../gtk/gtkcellrenderertext.c:271 +#: ../gtk/gtklabel.c:574 msgid "Attributes" msgstr "Attribut" -#: gtk/gtkcellrenderertext.c:248 +#: ../gtk/gtkcellrenderertext.c:272 msgid "A list of style attributes to apply to the text of the renderer" msgstr "En lista med stilattribut att applicera på texten av renderaren" -#: gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkcellrenderertext.c:279 msgid "Single Paragraph Mode" msgstr "Enkelstyckesläge" -#: gtk/gtkcellrenderertext.c:256 -#, fuzzy +#: ../gtk/gtkcellrenderertext.c:280 msgid "Whether to keep all text in a single paragraph" -msgstr "Huruvida all text ska vara i ett enda stycke eller inte" +msgstr "Huruvida all text ska vara i ett enda stycke" -#: gtk/gtkcellrenderertext.c:264 gtk/gtkcellview.c:178 gtk/gtktexttag.c:178 +#: ../gtk/gtkcellrenderertext.c:288 +#: ../gtk/gtkcellview.c:192 +#: ../gtk/gtktexttag.c:178 msgid "Background color name" msgstr "Namn på bakgrundsfärg" -#: gtk/gtkcellrenderertext.c:265 gtk/gtkcellview.c:179 gtk/gtktexttag.c:179 +#: ../gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellview.c:193 +#: ../gtk/gtktexttag.c:179 msgid "Background color as a string" msgstr "Bakgrundsfärg som en sträng" -#: gtk/gtkcellrenderertext.c:272 gtk/gtkcellview.c:185 gtk/gtktexttag.c:186 +#: ../gtk/gtkcellrenderertext.c:296 +#: ../gtk/gtkcellview.c:199 +#: ../gtk/gtktexttag.c:186 msgid "Background color" msgstr "Bakgrundsfärg" -#: gtk/gtkcellrenderertext.c:273 gtk/gtkcellview.c:186 +#: ../gtk/gtkcellrenderertext.c:297 +#: ../gtk/gtkcellview.c:200 msgid "Background color as a GdkColor" msgstr "Bakgrundsfärg som en GdkColor" -#: gtk/gtkcellrenderertext.c:280 gtk/gtktexttag.c:202 +#: ../gtk/gtkcellrenderertext.c:311 +msgid "Background color as RGBA" +msgstr "Bakgrundsfärg som RGBA" + +#: ../gtk/gtkcellrenderertext.c:312 +#: ../gtk/gtkcellview.c:214 +msgid "Background color as a GdkRGBA" +msgstr "Bakgrundsfärg som en GdkRGBA" + +#: ../gtk/gtkcellrenderertext.c:318 +#: ../gtk/gtktexttag.c:202 msgid "Foreground color name" msgstr "Namn på förgrundsfärg" -#: gtk/gtkcellrenderertext.c:281 gtk/gtktexttag.c:203 +#: ../gtk/gtkcellrenderertext.c:319 +#: ../gtk/gtktexttag.c:203 msgid "Foreground color as a string" msgstr "Förgrundsfärg som en sträng" -#: gtk/gtkcellrenderertext.c:288 gtk/gtktexttag.c:210 -#: gtk/gtktrayicon-x11.c:133 +#: ../gtk/gtkcellrenderertext.c:326 +#: ../gtk/gtktexttag.c:210 +#: ../gtk/gtktrayicon-x11.c:133 msgid "Foreground color" msgstr "Förgrundsfärg" -#: gtk/gtkcellrenderertext.c:289 +#: ../gtk/gtkcellrenderertext.c:327 msgid "Foreground color as a GdkColor" msgstr "Förgrundsfärg som en GdkColor" -#: gtk/gtkcellrenderertext.c:297 gtk/gtkentry.c:663 gtk/gtktexttag.c:227 -#: gtk/gtktextview.c:668 +#: ../gtk/gtkcellrenderertext.c:341 +msgid "Foreground color as RGBA" +msgstr "Förgrundsfärg som RGBA" + +#: ../gtk/gtkcellrenderertext.c:342 +msgid "Foreground color as a GdkRGBA" +msgstr "Förgrundsfärg som en GdkRGBA" + +#: ../gtk/gtkcellrenderertext.c:350 +#: ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:227 +#: ../gtk/gtktextview.c:684 msgid "Editable" msgstr "Redigerbar" -#: gtk/gtkcellrenderertext.c:298 gtk/gtktexttag.c:228 gtk/gtktextview.c:669 +#: ../gtk/gtkcellrenderertext.c:351 +#: ../gtk/gtktexttag.c:228 +#: ../gtk/gtktextview.c:685 msgid "Whether the text can be modified by the user" msgstr "Huruvida texten kan ändras av användaren" -#: gtk/gtkcellrenderertext.c:305 gtk/gtkcellrenderertext.c:313 -#: gtk/gtktexttag.c:243 gtk/gtktexttag.c:251 +#: ../gtk/gtkcellrenderertext.c:358 +#: ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:243 +#: ../gtk/gtktexttag.c:251 msgid "Font" msgstr "Typsnitt" -#: gtk/gtkcellrenderertext.c:306 gtk/gtktexttag.c:244 +#: ../gtk/gtkcellrenderertext.c:359 +#: ../gtk/gtktexttag.c:244 msgid "Font description as a string, e.g. \"Sans Italic 12\"" msgstr "Typsnittsbeskrivning som en sträng, t.ex. \"Sans Italic 12\"" -#: gtk/gtkcellrenderertext.c:314 gtk/gtktexttag.c:252 +#: ../gtk/gtkcellrenderertext.c:367 +#: ../gtk/gtktexttag.c:252 msgid "Font description as a PangoFontDescription struct" msgstr "Typsnittsbeskrivning som en PangoFontDescription-struct" -#: gtk/gtkcellrenderertext.c:322 gtk/gtktexttag.c:259 +#: ../gtk/gtkcellrenderertext.c:375 +#: ../gtk/gtktexttag.c:259 msgid "Font family" msgstr "Typsnittsfamilj" -#: gtk/gtkcellrenderertext.c:323 gtk/gtktexttag.c:260 +#: ../gtk/gtkcellrenderertext.c:376 +#: ../gtk/gtktexttag.c:260 msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" -msgstr "" -"Namn på typsnittsfamiljen, till exempel Sans, Helvetica, Times, Monospace" +msgstr "Namn på typsnittsfamiljen, till exempel Sans, Helvetica, Times, Monospace" -#: gtk/gtkcellrenderertext.c:330 gtk/gtkcellrenderertext.c:331 -#: gtk/gtktexttag.c:267 +#: ../gtk/gtkcellrenderertext.c:383 +#: ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:267 msgid "Font style" msgstr "Typsnittsstil" -#: gtk/gtkcellrenderertext.c:339 gtk/gtkcellrenderertext.c:340 -#: gtk/gtktexttag.c:276 +#: ../gtk/gtkcellrenderertext.c:392 +#: ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:276 msgid "Font variant" msgstr "Typsnittsvariant" -#: gtk/gtkcellrenderertext.c:348 gtk/gtkcellrenderertext.c:349 -#: gtk/gtktexttag.c:285 +#: ../gtk/gtkcellrenderertext.c:401 +#: ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:285 msgid "Font weight" msgstr "Typsnittsvikt" -#: gtk/gtkcellrenderertext.c:358 gtk/gtkcellrenderertext.c:359 -#: gtk/gtktexttag.c:296 +#: ../gtk/gtkcellrenderertext.c:411 +#: ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:296 msgid "Font stretch" msgstr "Typsnittsbredd" -#: gtk/gtkcellrenderertext.c:367 gtk/gtkcellrenderertext.c:368 -#: gtk/gtktexttag.c:305 +#: ../gtk/gtkcellrenderertext.c:420 +#: ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:305 msgid "Font size" msgstr "Typsnittsstorlek" -#: gtk/gtkcellrenderertext.c:377 gtk/gtktexttag.c:325 +#: ../gtk/gtkcellrenderertext.c:430 +#: ../gtk/gtktexttag.c:325 msgid "Font points" msgstr "Typsnittspunkter" -#: gtk/gtkcellrenderertext.c:378 gtk/gtktexttag.c:326 +#: ../gtk/gtkcellrenderertext.c:431 +#: ../gtk/gtktexttag.c:326 msgid "Font size in points" msgstr "Typsnittsstorlek i punkter" -#: gtk/gtkcellrenderertext.c:387 gtk/gtktexttag.c:315 +#: ../gtk/gtkcellrenderertext.c:440 +#: ../gtk/gtktexttag.c:315 msgid "Font scale" msgstr "Typsnittsskalning" -#: gtk/gtkcellrenderertext.c:388 +#: ../gtk/gtkcellrenderertext.c:441 msgid "Font scaling factor" msgstr "Typsnittsskalfaktor" -#: gtk/gtkcellrenderertext.c:397 gtk/gtktexttag.c:394 +#: ../gtk/gtkcellrenderertext.c:450 +#: ../gtk/gtktexttag.c:394 msgid "Rise" msgstr "Höjning" -#: gtk/gtkcellrenderertext.c:398 -msgid "" -"Offset of text above the baseline (below the baseline if rise is negative)" -msgstr "" -"Avstånd för texten ovanför baslinjen (nedanför baslinjen om höjning är " -"negativt)" +#: ../gtk/gtkcellrenderertext.c:451 +msgid "Offset of text above the baseline (below the baseline if rise is negative)" +msgstr "Avstånd för texten ovanför baslinjen (nedanför baslinjen om höjning är negativt)" -#: gtk/gtkcellrenderertext.c:409 gtk/gtktexttag.c:434 +#: ../gtk/gtkcellrenderertext.c:462 +#: ../gtk/gtktexttag.c:434 msgid "Strikethrough" msgstr "Genomstrykning" -#: gtk/gtkcellrenderertext.c:410 gtk/gtktexttag.c:435 +#: ../gtk/gtkcellrenderertext.c:463 +#: ../gtk/gtktexttag.c:435 msgid "Whether to strike through the text" msgstr "Huruvida texten ska genomstrykas" -#: gtk/gtkcellrenderertext.c:417 gtk/gtktexttag.c:442 +#: ../gtk/gtkcellrenderertext.c:470 +#: ../gtk/gtktexttag.c:442 msgid "Underline" msgstr "Understruken" -#: gtk/gtkcellrenderertext.c:418 gtk/gtktexttag.c:443 +#: ../gtk/gtkcellrenderertext.c:471 +#: ../gtk/gtktexttag.c:443 msgid "Style of underline for this text" msgstr "Stil på understrykningen för denna text" -#: gtk/gtkcellrenderertext.c:426 gtk/gtktexttag.c:354 +#: ../gtk/gtkcellrenderertext.c:479 +#: ../gtk/gtktexttag.c:354 msgid "Language" msgstr "Språk" -#: gtk/gtkcellrenderertext.c:427 -msgid "" -"The language this text is in, as an ISO code. Pango can use this as a hint " -"when rendering the text. If you don't understand this parameter, you " -"probably don't need it" -msgstr "" -"Språket som denna text är i, angivet som ISO-kod. Pango kan använda detta " -"som ett tips vid rendering av text. Om du inte förstår denna parameter " -"behöver du den troligtvis inte" +#: ../gtk/gtkcellrenderertext.c:480 +msgid "The language this text is in, as an ISO code. Pango can use this as a hint when rendering the text. If you don't understand this parameter, you probably don't need it" +msgstr "Språket som denna text är i, angivet som ISO-kod. Pango kan använda detta som ett tips vid rendering av text. Om du inte förstår denna parameter behöver du den troligtvis inte" -#: gtk/gtkcellrenderertext.c:447 gtk/gtklabel.c:681 gtk/gtkprogressbar.c:180 +#: ../gtk/gtkcellrenderertext.c:500 +#: ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:207 msgid "Ellipsize" msgstr "Elliptisera" -#: gtk/gtkcellrenderertext.c:448 -msgid "" -"The preferred place to ellipsize the string, if the cell renderer does not " -"have enough room to display the entire string" -msgstr "" -"Den föredragna platsen att elliptisera strängen, om cellrenderaren inte har " -"tillräckligt med utrymme för att visa hela strängen" +#: ../gtk/gtkcellrenderertext.c:501 +msgid "The preferred place to ellipsize the string, if the cell renderer does not have enough room to display the entire string" +msgstr "Den föredragna platsen att elliptisera strängen, om cellrenderaren inte har tillräckligt med utrymme för att visa hela strängen" -#: gtk/gtkcellrenderertext.c:467 gtk/gtkfilechooserbutton.c:413 -#: gtk/gtklabel.c:702 +#: ../gtk/gtkcellrenderertext.c:520 +#: ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 msgid "Width In Characters" msgstr "Bredd i antal tecken" -#: gtk/gtkcellrenderertext.c:468 gtk/gtklabel.c:703 +#: ../gtk/gtkcellrenderertext.c:521 +#: ../gtk/gtklabel.c:721 msgid "The desired width of the label, in characters" msgstr "Den önskade bredden på etiketten, i antal tecken" -#: gtk/gtkcellrenderertext.c:492 gtk/gtklabel.c:763 +#: ../gtk/gtkcellrenderertext.c:545 +#: ../gtk/gtklabel.c:781 msgid "Maximum Width In Characters" msgstr "Maximal bredd i antal tecken" -#: gtk/gtkcellrenderertext.c:493 +#: ../gtk/gtkcellrenderertext.c:546 #, fuzzy msgid "The maximum width of the cell, in characters" msgstr "Den önskade maximala bredden på etiketten, i antal tecken" -#: gtk/gtkcellrenderertext.c:511 gtk/gtktexttag.c:451 +#: ../gtk/gtkcellrenderertext.c:564 +#: ../gtk/gtktexttag.c:451 msgid "Wrap mode" msgstr "Automatisk radbrytning" -#: gtk/gtkcellrenderertext.c:512 -msgid "" -"How to break the string into multiple lines, if the cell renderer does not " -"have enough room to display the entire string" -msgstr "" -"Hur strängen ska delas upp i flera rader, om cellrenderaren inte har " -"tillräckligt med utrymme för att visa hela strängen" +#: ../gtk/gtkcellrenderertext.c:565 +msgid "How to break the string into multiple lines, if the cell renderer does not have enough room to display the entire string" +msgstr "Hur strängen ska delas upp i flera rader, om cellrenderaren inte har tillräckligt med utrymme för att visa hela strängen" -#: gtk/gtkcellrenderertext.c:531 gtk/gtkcombobox.c:700 +#: ../gtk/gtkcellrenderertext.c:584 +#: ../gtk/gtkcombobox.c:755 msgid "Wrap width" msgstr "Radbrytningsbredd" -#: gtk/gtkcellrenderertext.c:532 +#: ../gtk/gtkcellrenderertext.c:585 msgid "The width at which the text is wrapped" msgstr "Bredden på vilken texten radbryts" -#: gtk/gtkcellrenderertext.c:552 gtk/gtktreeviewcolumn.c:301 +#: ../gtk/gtkcellrenderertext.c:605 +#: ../gtk/gtktreeviewcolumn.c:348 msgid "Alignment" msgstr "Justering" -#: gtk/gtkcellrenderertext.c:553 +#: ../gtk/gtkcellrenderertext.c:606 msgid "How to align the lines" msgstr "Hur rader ska justeras" -#: gtk/gtkcellrenderertext.c:565 gtk/gtkcellview.c:208 gtk/gtktexttag.c:540 +#: ../gtk/gtkcellrenderertext.c:618 +#: ../gtk/gtkcellview.c:236 +#: ../gtk/gtktexttag.c:540 msgid "Background set" msgstr "Bakgrund inställd" -#: gtk/gtkcellrenderertext.c:566 gtk/gtkcellview.c:209 gtk/gtktexttag.c:541 +#: ../gtk/gtkcellrenderertext.c:619 +#: ../gtk/gtkcellview.c:237 +#: ../gtk/gtktexttag.c:541 msgid "Whether this tag affects the background color" msgstr "Huruvida denna tagg påverkar bakgrundsfärgen" -#: gtk/gtkcellrenderertext.c:569 gtk/gtktexttag.c:548 +#: ../gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtktexttag.c:548 msgid "Foreground set" msgstr "Förgrund inställd" -#: gtk/gtkcellrenderertext.c:570 gtk/gtktexttag.c:549 +#: ../gtk/gtkcellrenderertext.c:623 +#: ../gtk/gtktexttag.c:549 msgid "Whether this tag affects the foreground color" msgstr "Huruvida denna tagg påverkar förgrundsfärgen" -#: gtk/gtkcellrenderertext.c:573 gtk/gtktexttag.c:552 +#: ../gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtktexttag.c:552 msgid "Editability set" msgstr "Redigerbarhet inställd" -#: gtk/gtkcellrenderertext.c:574 gtk/gtktexttag.c:553 +#: ../gtk/gtkcellrenderertext.c:627 +#: ../gtk/gtktexttag.c:553 msgid "Whether this tag affects text editability" msgstr "Huruvida denna tagg påverkar redigerbarheten för texten" -#: gtk/gtkcellrenderertext.c:577 gtk/gtktexttag.c:556 +#: ../gtk/gtkcellrenderertext.c:630 +#: ../gtk/gtktexttag.c:556 msgid "Font family set" msgstr "Typsnittsfamilj inställd" -#: gtk/gtkcellrenderertext.c:578 gtk/gtktexttag.c:557 +#: ../gtk/gtkcellrenderertext.c:631 +#: ../gtk/gtktexttag.c:557 msgid "Whether this tag affects the font family" msgstr "Huruvida denna tagg påverkar typsnittsfamiljen" -#: gtk/gtkcellrenderertext.c:581 gtk/gtktexttag.c:560 +#: ../gtk/gtkcellrenderertext.c:634 +#: ../gtk/gtktexttag.c:560 msgid "Font style set" msgstr "Typsnittsstil inställd" -#: gtk/gtkcellrenderertext.c:582 gtk/gtktexttag.c:561 +#: ../gtk/gtkcellrenderertext.c:635 +#: ../gtk/gtktexttag.c:561 msgid "Whether this tag affects the font style" msgstr "Huruvida denna tagg påverkar typsnittsstilen" -#: gtk/gtkcellrenderertext.c:585 gtk/gtktexttag.c:564 +#: ../gtk/gtkcellrenderertext.c:638 +#: ../gtk/gtktexttag.c:564 msgid "Font variant set" msgstr "Typsnittsvariant inställd" -#: gtk/gtkcellrenderertext.c:586 gtk/gtktexttag.c:565 +#: ../gtk/gtkcellrenderertext.c:639 +#: ../gtk/gtktexttag.c:565 msgid "Whether this tag affects the font variant" msgstr "Huruvida denna tagg påverkar typsnittsvarianten" -#: gtk/gtkcellrenderertext.c:589 gtk/gtktexttag.c:568 +#: ../gtk/gtkcellrenderertext.c:642 +#: ../gtk/gtktexttag.c:568 msgid "Font weight set" msgstr "Typsnittsvikt inställd" -#: gtk/gtkcellrenderertext.c:590 gtk/gtktexttag.c:569 +#: ../gtk/gtkcellrenderertext.c:643 +#: ../gtk/gtktexttag.c:569 msgid "Whether this tag affects the font weight" msgstr "Huruvida denna tagg påverkar typsnittsvikten" -#: gtk/gtkcellrenderertext.c:593 gtk/gtktexttag.c:572 +#: ../gtk/gtkcellrenderertext.c:646 +#: ../gtk/gtktexttag.c:572 msgid "Font stretch set" msgstr "Typsnittsbredd inställd" -#: gtk/gtkcellrenderertext.c:594 gtk/gtktexttag.c:573 +#: ../gtk/gtkcellrenderertext.c:647 +#: ../gtk/gtktexttag.c:573 msgid "Whether this tag affects the font stretch" msgstr "Huruvida denna tagg påverkar typsnittsbredden" -#: gtk/gtkcellrenderertext.c:597 gtk/gtktexttag.c:576 +#: ../gtk/gtkcellrenderertext.c:650 +#: ../gtk/gtktexttag.c:576 msgid "Font size set" msgstr "Typsnittsstorlek inställd" -#: gtk/gtkcellrenderertext.c:598 gtk/gtktexttag.c:577 +#: ../gtk/gtkcellrenderertext.c:651 +#: ../gtk/gtktexttag.c:577 msgid "Whether this tag affects the font size" msgstr "Huruvida denna tagg påverkar typsnittsstorleken" -#: gtk/gtkcellrenderertext.c:601 gtk/gtktexttag.c:580 +#: ../gtk/gtkcellrenderertext.c:654 +#: ../gtk/gtktexttag.c:580 msgid "Font scale set" msgstr "Typsnittsskalning inställd" -#: gtk/gtkcellrenderertext.c:602 gtk/gtktexttag.c:581 +#: ../gtk/gtkcellrenderertext.c:655 +#: ../gtk/gtktexttag.c:581 msgid "Whether this tag scales the font size by a factor" msgstr "Huruvida denna tagg skalar typsnittet med en faktor" -#: gtk/gtkcellrenderertext.c:605 gtk/gtktexttag.c:600 +#: ../gtk/gtkcellrenderertext.c:658 +#: ../gtk/gtktexttag.c:600 msgid "Rise set" msgstr "Höjning inställd" -#: gtk/gtkcellrenderertext.c:606 gtk/gtktexttag.c:601 +#: ../gtk/gtkcellrenderertext.c:659 +#: ../gtk/gtktexttag.c:601 msgid "Whether this tag affects the rise" msgstr "Huruvida denna tagg påverkar höjningen" -#: gtk/gtkcellrenderertext.c:609 gtk/gtktexttag.c:616 +#: ../gtk/gtkcellrenderertext.c:662 +#: ../gtk/gtktexttag.c:616 msgid "Strikethrough set" msgstr "Genomstrykning inställd" -#: gtk/gtkcellrenderertext.c:610 gtk/gtktexttag.c:617 +#: ../gtk/gtkcellrenderertext.c:663 +#: ../gtk/gtktexttag.c:617 msgid "Whether this tag affects strikethrough" msgstr "Huruvida denna tagg påverkar genomstrykningen" -#: gtk/gtkcellrenderertext.c:613 gtk/gtktexttag.c:624 +#: ../gtk/gtkcellrenderertext.c:666 +#: ../gtk/gtktexttag.c:624 msgid "Underline set" msgstr "Understrykning inställd" -#: gtk/gtkcellrenderertext.c:614 gtk/gtktexttag.c:625 +#: ../gtk/gtkcellrenderertext.c:667 +#: ../gtk/gtktexttag.c:625 msgid "Whether this tag affects underlining" msgstr "Huruvida denna tagg påverkar understrykningen" -#: gtk/gtkcellrenderertext.c:617 gtk/gtktexttag.c:588 +#: ../gtk/gtkcellrenderertext.c:670 +#: ../gtk/gtktexttag.c:588 msgid "Language set" msgstr "Språk inställt" -#: gtk/gtkcellrenderertext.c:618 gtk/gtktexttag.c:589 +#: ../gtk/gtkcellrenderertext.c:671 +#: ../gtk/gtktexttag.c:589 msgid "Whether this tag affects the language the text is rendered as" msgstr "Huruvida denna tagg påverkar språket texten renderas som" -#: gtk/gtkcellrenderertext.c:621 +#: ../gtk/gtkcellrenderertext.c:674 msgid "Ellipsize set" msgstr "Elliptisering inställd" -#: gtk/gtkcellrenderertext.c:622 +#: ../gtk/gtkcellrenderertext.c:675 msgid "Whether this tag affects the ellipsize mode" msgstr "Huruvida denna tagg påverkar elliptiseringsläget" -#: gtk/gtkcellrenderertext.c:625 +#: ../gtk/gtkcellrenderertext.c:678 msgid "Align set" msgstr "Justering inställd" -#: gtk/gtkcellrenderertext.c:626 +#: ../gtk/gtkcellrenderertext.c:679 msgid "Whether this tag affects the alignment mode" msgstr "Huruvida denna tagg påverkar justeringsläget" -#: gtk/gtkcellrenderertoggle.c:128 +#: ../gtk/gtkcellrenderertoggle.c:128 msgid "Toggle state" msgstr "Växlingstillstånd" -#: gtk/gtkcellrenderertoggle.c:129 +#: ../gtk/gtkcellrenderertoggle.c:129 msgid "The toggle state of the button" msgstr "Knappens växlingstillstånd" -#: gtk/gtkcellrenderertoggle.c:136 +#: ../gtk/gtkcellrenderertoggle.c:136 msgid "Inconsistent state" msgstr "Inkonsekvent tillstånd" -#: gtk/gtkcellrenderertoggle.c:137 +#: ../gtk/gtkcellrenderertoggle.c:137 msgid "The inconsistent state of the button" msgstr "Knappens inkonsekventa tillstånd" -#: gtk/gtkcellrenderertoggle.c:144 +#: ../gtk/gtkcellrenderertoggle.c:144 msgid "Activatable" msgstr "Aktiverbar" -#: gtk/gtkcellrenderertoggle.c:145 +#: ../gtk/gtkcellrenderertoggle.c:145 msgid "The toggle button can be activated" msgstr "Växlingsknappen kan aktiveras" -#: gtk/gtkcellrenderertoggle.c:152 +#: ../gtk/gtkcellrenderertoggle.c:152 msgid "Radio state" msgstr "Radiotillstånd" -#: gtk/gtkcellrenderertoggle.c:153 +#: ../gtk/gtkcellrenderertoggle.c:153 msgid "Draw the toggle button as a radio button" msgstr "Rita växlingsknappen som en radioknapp" -#: gtk/gtkcellrenderertoggle.c:160 +#: ../gtk/gtkcellrenderertoggle.c:160 msgid "Indicator size" msgstr "Indikatorstorlek" -#: gtk/gtkcellrenderertoggle.c:161 gtk/gtkcheckbutton.c:72 -#: gtk/gtkcheckmenuitem.c:129 +#: ../gtk/gtkcellrenderertoggle.c:161 +#: ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 msgid "Size of check or radio indicator" msgstr "Storlek på kryss- eller radioindikator" -#: gtk/gtkcellview.c:200 +#: ../gtk/gtkcellview.c:213 +#, fuzzy +msgid "Background RGBA color" +msgstr "Bakgrundsfärg" + +#: ../gtk/gtkcellview.c:228 msgid "CellView model" msgstr "Cellvisningsmodell" -#: gtk/gtkcellview.c:201 +#: ../gtk/gtkcellview.c:229 msgid "The model for cell view" msgstr "Modellen för cellvisning" -#: gtk/gtkcheckbutton.c:71 gtk/gtkcheckmenuitem.c:128 +#: ../gtk/gtkcheckbutton.c:77 +#: ../gtk/gtkcheckmenuitem.c:129 msgid "Indicator Size" msgstr "Indikatorstorlek" -#: gtk/gtkcheckbutton.c:79 gtk/gtkexpander.c:267 +#: ../gtk/gtkcheckbutton.c:85 +#: ../gtk/gtkexpander.c:265 msgid "Indicator Spacing" msgstr "Indikatorutrymme" -#: gtk/gtkcheckbutton.c:80 +#: ../gtk/gtkcheckbutton.c:86 msgid "Spacing around check or radio indicator" msgstr "Utrymme runt kryss- eller radioindikator" -#: gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkcheckmenuitem.c:107 msgid "Whether the menu item is checked" msgstr "Huruvida menyobjektet är kryssat" # SUN CHANGED MESSAGE -#: gtk/gtkcheckmenuitem.c:113 gtk/gtktogglebutton.c:123 +#: ../gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtktogglebutton.c:133 msgid "Inconsistent" msgstr "Inkonsekvent" -#: gtk/gtkcheckmenuitem.c:114 +#: ../gtk/gtkcheckmenuitem.c:115 msgid "Whether to display an \"inconsistent\" state" msgstr "Huruvida ett \"inkonsekvent\" tillstånd ska visas" -#: gtk/gtkcheckmenuitem.c:121 +#: ../gtk/gtkcheckmenuitem.c:122 msgid "Draw as radio menu item" msgstr "Rita som radiomenyobjekt" -#: gtk/gtkcheckmenuitem.c:122 +#: ../gtk/gtkcheckmenuitem.c:123 msgid "Whether the menu item looks like a radio menu item" msgstr "Huruvida menyobjektet ser ut som ett radiomenyobjekt" -#: gtk/gtkcolorbutton.c:159 +#: ../gtk/gtkcolorbutton.c:171 msgid "Use alpha" msgstr "Använd alfa" -#: gtk/gtkcolorbutton.c:160 -#, fuzzy +#: ../gtk/gtkcolorbutton.c:172 msgid "Whether to give the color an alpha value" -msgstr "Huruvida färgen ska ges ett alfavärde eller inte" +msgstr "Huruvida färgen ska ges ett alfavärde" -#: gtk/gtkcolorbutton.c:174 gtk/gtkfilechooserbutton.c:399 -#: gtk/gtkfontbutton.c:140 gtk/gtkprintjob.c:115 gtk/gtkstatusicon.c:415 -#: gtk/gtktreeviewcolumn.c:268 +#: ../gtk/gtkcolorbutton.c:186 +#: ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 +#: ../gtk/gtkprintjob.c:126 +#: ../gtk/gtkstatusicon.c:415 +#: ../gtk/gtktreeviewcolumn.c:315 msgid "Title" msgstr "Titel" -#: gtk/gtkcolorbutton.c:175 +#: ../gtk/gtkcolorbutton.c:187 msgid "The title of the color selection dialog" msgstr "Titeln på färgvalsdialogen" -#: gtk/gtkcolorbutton.c:189 gtk/gtkcolorsel.c:323 +#: ../gtk/gtkcolorbutton.c:201 +#: ../gtk/gtkcolorsel.c:338 msgid "Current Color" msgstr "Aktuell färg" -#: gtk/gtkcolorbutton.c:190 +#: ../gtk/gtkcolorbutton.c:202 msgid "The selected color" msgstr "Den markerade färgen" -#: gtk/gtkcolorbutton.c:204 gtk/gtkcolorsel.c:330 +#: ../gtk/gtkcolorbutton.c:216 +#: ../gtk/gtkcolorsel.c:345 msgid "Current Alpha" msgstr "Aktuellt alfavärde" -#: gtk/gtkcolorbutton.c:205 +#: ../gtk/gtkcolorbutton.c:217 msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" msgstr "Det valda opakhetsvärdet (0 är helt transparent, 65535 helt opakt)" -#: gtk/gtkcolorsel.c:309 +#: ../gtk/gtkcolorbutton.c:231 +msgid "Current RGBA Color" +msgstr "Aktuell RGBA-färg" + +#: ../gtk/gtkcolorbutton.c:232 +msgid "The selected RGBA color" +msgstr "Den valda RGBA-färgen" + +#: ../gtk/gtkcolorsel.c:324 msgid "Has Opacity Control" msgstr "Har opakhetskontoll" -#: gtk/gtkcolorsel.c:310 +#: ../gtk/gtkcolorsel.c:325 msgid "Whether the color selector should allow setting opacity" msgstr "Huruvida färgväljaren ska tillåta inställning av opakhet" -#: gtk/gtkcolorsel.c:316 +#: ../gtk/gtkcolorsel.c:331 msgid "Has palette" msgstr "Har palett" -#: gtk/gtkcolorsel.c:317 +#: ../gtk/gtkcolorsel.c:332 msgid "Whether a palette should be used" msgstr "Huruvida en palett ska användas" -#: gtk/gtkcolorsel.c:324 +#: ../gtk/gtkcolorsel.c:339 msgid "The current color" msgstr "Den aktuella färgen" -#: gtk/gtkcolorsel.c:331 +#: ../gtk/gtkcolorsel.c:346 msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" msgstr "Aktuellt opakhetsvärde (0 är helt transparent, 65535 helt opakt)" -#: gtk/gtkcolorsel.c:345 -msgid "Custom palette" -msgstr "Anpassad palett" +#: ../gtk/gtkcolorsel.c:360 +msgid "Current RGBA" +msgstr "Aktuellt RGBA" -#: gtk/gtkcolorsel.c:346 -msgid "Palette to use in the color selector" -msgstr "Palett att använda i färgväljaren" +#: ../gtk/gtkcolorsel.c:361 +msgid "The current RGBA color" +msgstr "Den aktuella RGBA-färgen" -#: gtk/gtkcolorseldialog.c:110 +#: ../gtk/gtkcolorseldialog.c:110 msgid "Color Selection" msgstr "Färgval" -#: gtk/gtkcolorseldialog.c:111 +#: ../gtk/gtkcolorseldialog.c:111 msgid "The color selection embedded in the dialog." msgstr "Färgväljaren inbäddad i dialogrutan." -#: gtk/gtkcolorseldialog.c:117 +#: ../gtk/gtkcolorseldialog.c:117 msgid "OK Button" msgstr "OK-knapp" -#: gtk/gtkcolorseldialog.c:118 +#: ../gtk/gtkcolorseldialog.c:118 msgid "The OK button of the dialog." msgstr "OK-knappen för dialogrutan." -#: gtk/gtkcolorseldialog.c:124 +#: ../gtk/gtkcolorseldialog.c:124 msgid "Cancel Button" msgstr "Avbryt-knapp" # Bättre ord? -#: gtk/gtkcolorseldialog.c:125 +#: ../gtk/gtkcolorseldialog.c:125 msgid "The cancel button of the dialog." msgstr "Avbryt-knappen för dialogrutan." -#: gtk/gtkcolorseldialog.c:131 +#: ../gtk/gtkcolorseldialog.c:131 msgid "Help Button" msgstr "Hjälp-knapp" -#: gtk/gtkcolorseldialog.c:132 +#: ../gtk/gtkcolorseldialog.c:132 msgid "The help button of the dialog." msgstr "Hjälp-knappen för dialogrutan." -#: gtk/gtkcombobox.c:683 +#: ../gtk/gtkcombobox.c:738 msgid "ComboBox model" msgstr "ComboBox-modell" -#: gtk/gtkcombobox.c:684 +#: ../gtk/gtkcombobox.c:739 msgid "The model for the combo box" msgstr "Modellen för kombinationsrutan" -#: gtk/gtkcombobox.c:701 +#: ../gtk/gtkcombobox.c:756 msgid "Wrap width for laying out the items in a grid" msgstr "Radbrytningsbredd för utläggning av objekten i ett rutnät" -#: gtk/gtkcombobox.c:723 +#: ../gtk/gtkcombobox.c:778 msgid "Row span column" msgstr "Radspannskolumn" -#: gtk/gtkcombobox.c:724 +#: ../gtk/gtkcombobox.c:779 msgid "TreeModel column containing the row span values" msgstr "TreeModel-kolumn som innehåller radspannsvärden" -#: gtk/gtkcombobox.c:745 +#: ../gtk/gtkcombobox.c:800 msgid "Column span column" msgstr "Kolumnspannskolumn" -#: gtk/gtkcombobox.c:746 +#: ../gtk/gtkcombobox.c:801 msgid "TreeModel column containing the column span values" msgstr "TreeModel-kolumn som innehåller kolumnspannsvärden" -#: gtk/gtkcombobox.c:767 +#: ../gtk/gtkcombobox.c:822 msgid "Active item" msgstr "Aktivt objekt" -#: gtk/gtkcombobox.c:768 +#: ../gtk/gtkcombobox.c:823 msgid "The item which is currently active" msgstr "Det objekt som är aktivt för tillfället" -#: gtk/gtkcombobox.c:787 gtk/gtkuimanager.c:224 +#: ../gtk/gtkcombobox.c:842 +#: ../gtk/gtkuimanager.c:225 msgid "Add tearoffs to menus" msgstr "Lägg till löstagbara i menyer" -#: gtk/gtkcombobox.c:788 +#: ../gtk/gtkcombobox.c:843 msgid "Whether dropdowns should have a tearoff menu item" msgstr "Huruvida nedfällningar ska ha ett löstagbart menyobjekt" -#: gtk/gtkcombobox.c:803 gtk/gtkentry.c:688 +#: ../gtk/gtkcombobox.c:858 +#: ../gtk/gtkentry.c:779 msgid "Has Frame" msgstr "Har ram" -#: gtk/gtkcombobox.c:804 +#: ../gtk/gtkcombobox.c:859 msgid "Whether the combo box draws a frame around the child" msgstr "Huruvida kombinationsrutan ritar en ram runt barnet" -#: gtk/gtkcombobox.c:812 +#: ../gtk/gtkcombobox.c:867 msgid "Whether the combo box grabs focus when it is clicked with the mouse" msgstr "Huruvida kombinationsrutan tar fokus när den klickas på med musen" -#: gtk/gtkcombobox.c:827 gtk/gtkmenu.c:580 +#: ../gtk/gtkcombobox.c:882 +#: ../gtk/gtkmenu.c:574 msgid "Tearoff Title" msgstr "Löstagbar titel" -#: gtk/gtkcombobox.c:828 -msgid "" -"A title that may be displayed by the window manager when the popup is torn-" -"off" -msgstr "" -"En titel som kan visas av fönsterhanteraren då denna popupmeny tas loss" +#: ../gtk/gtkcombobox.c:883 +msgid "A title that may be displayed by the window manager when the popup is torn-off" +msgstr "En titel som kan visas av fönsterhanteraren då denna popupmeny tas loss" -#: gtk/gtkcombobox.c:845 +#: ../gtk/gtkcombobox.c:900 msgid "Popup shown" msgstr "Popup visas" -#: gtk/gtkcombobox.c:846 +#: ../gtk/gtkcombobox.c:901 msgid "Whether the combo's dropdown is shown" msgstr "Huruvida kombinationsrutans rullgardinsmeny visas" -#: gtk/gtkcombobox.c:862 +#: ../gtk/gtkcombobox.c:917 msgid "Button Sensitivity" msgstr "Knappkänslighet" -#: gtk/gtkcombobox.c:863 +#: ../gtk/gtkcombobox.c:918 msgid "Whether the dropdown button is sensitive when the model is empty" msgstr "Huruvida rullgardinsknappen är känslig när modellen är tom" -#: gtk/gtkcombobox.c:870 +#: ../gtk/gtkcombobox.c:934 +#, fuzzy +msgid "Whether combo box has an entry" +msgstr "Huruvida kombinationsrutan ritar en ram runt barnet" + +#: ../gtk/gtkcombobox.c:949 +#, fuzzy +msgid "Entry Text Column" +msgstr "Textkolumn" + +#: ../gtk/gtkcombobox.c:950 +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" +msgstr "" + +#: ../gtk/gtkcombobox.c:967 +msgid "ID Column" +msgstr "Id-kolumn" + +#: ../gtk/gtkcombobox.c:968 +msgid "The column in the combo box's model that provides string IDs for the values in the model" +msgstr "" + +#: ../gtk/gtkcombobox.c:983 +msgid "Active id" +msgstr "Aktivt id" + +#: ../gtk/gtkcombobox.c:984 +#, fuzzy +msgid "The value of the id column for the active row" +msgstr "Namnet på ikonen från ikontemat" + +#: ../gtk/gtkcombobox.c:999 +#, fuzzy +msgid "Popup Fixed Width" +msgstr "Fast bredd" + +#: ../gtk/gtkcombobox.c:1000 +msgid "Whether the popup's width should be a fixed width matching the allocated width of the combo box" +msgstr "" + +#: ../gtk/gtkcombobox.c:1008 msgid "Appears as list" msgstr "Visas som lista" -#: gtk/gtkcombobox.c:871 +#: ../gtk/gtkcombobox.c:1009 msgid "Whether dropdowns should look like lists rather than menus" msgstr "Huruvida nedfällningar ska se ut som listor istället för menyer" -#: gtk/gtkcombobox.c:887 +#: ../gtk/gtkcombobox.c:1025 msgid "Arrow Size" msgstr "Pilstorlek" -#: gtk/gtkcombobox.c:888 +#: ../gtk/gtkcombobox.c:1026 msgid "The minimum size of the arrow in the combo box" msgstr "Minsta storleken för pilen i kombinationsrutan" -#: gtk/gtkcombobox.c:903 gtk/gtkentry.c:788 gtk/gtkhandlebox.c:182 -#: gtk/gtkmenubar.c:189 gtk/gtkstatusbar.c:244 gtk/gtktoolbar.c:577 -#: gtk/gtkviewport.c:158 +#: ../gtk/gtkcombobox.c:1041 +#: ../gtk/gtkentry.c:879 +#: ../gtk/gtkhandlebox.c:187 +#: ../gtk/gtkmenubar.c:197 +#: ../gtk/gtkstatusbar.c:180 +#: ../gtk/gtktoolbar.c:602 +#: ../gtk/gtkviewport.c:154 msgid "Shadow type" msgstr "Skuggtyp" -#: gtk/gtkcombobox.c:904 +#: ../gtk/gtkcombobox.c:1042 msgid "Which kind of shadow to draw around the combo box" msgstr "Vilken typ av skugga som ska ritas runt kombinationsrutan" -#: gtk/gtkcontainer.c:259 +#: ../gtk/gtkcontainer.c:451 msgid "Resize mode" msgstr "Storleksändringsläge" -#: gtk/gtkcontainer.c:260 +#: ../gtk/gtkcontainer.c:452 msgid "Specify how resize events are handled" msgstr "Ange hur storleksändringshändelser hanteras" -#: gtk/gtkcontainer.c:267 +#: ../gtk/gtkcontainer.c:459 msgid "Border width" msgstr "Kantbredd" -#: gtk/gtkcontainer.c:268 +#: ../gtk/gtkcontainer.c:460 msgid "The width of the empty border outside the containers children" msgstr "Bredden på den tomma kanten utanför behållarens barn" -#: gtk/gtkcontainer.c:276 +#: ../gtk/gtkcontainer.c:468 msgid "Child" msgstr "Barn" -#: gtk/gtkcontainer.c:277 +#: ../gtk/gtkcontainer.c:469 msgid "Can be used to add a new child to the container" msgstr "Kan användas för att lägga till ett nytt barn till behållaren" -#: gtk/gtkdialog.c:165 gtk/gtkinfobar.c:430 +#: ../gtk/gtkdialog.c:165 +#: ../gtk/gtkinfobar.c:434 msgid "Content area border" msgstr "Kant för innehållsområde" -#: gtk/gtkdialog.c:166 +#: ../gtk/gtkdialog.c:166 msgid "Width of border around the main dialog area" msgstr "Bredd på kanten runt huvuddialogområdet" -#: gtk/gtkdialog.c:183 gtk/gtkinfobar.c:447 +#: ../gtk/gtkdialog.c:183 +#: ../gtk/gtkinfobar.c:451 msgid "Content area spacing" msgstr "Utfyllnad för innehållsområde" -#: gtk/gtkdialog.c:184 +#: ../gtk/gtkdialog.c:184 msgid "Spacing between elements of the main dialog area" msgstr "Utrymme mellan element i huvuddialogrutan" -#: gtk/gtkdialog.c:191 gtk/gtkinfobar.c:463 +#: ../gtk/gtkdialog.c:191 +#: ../gtk/gtkinfobar.c:467 msgid "Button spacing" msgstr "Knapputrymme" -#: gtk/gtkdialog.c:192 gtk/gtkinfobar.c:464 +#: ../gtk/gtkdialog.c:192 +#: ../gtk/gtkinfobar.c:468 msgid "Spacing between buttons" msgstr "Utrymme mellan knappar" -#: gtk/gtkdialog.c:200 gtk/gtkinfobar.c:479 +#: ../gtk/gtkdialog.c:200 +#: ../gtk/gtkinfobar.c:483 msgid "Action area border" msgstr "Kant på åtgärdsområde" -#: gtk/gtkdialog.c:201 +#: ../gtk/gtkdialog.c:201 msgid "Width of border around the button area at the bottom of the dialog" msgstr "Bredd på kanten runt knappområdet runt nederkanten på dialogen" -#: gtk/gtkentry.c:635 +#: ../gtk/gtkentry.c:726 msgid "Text Buffer" msgstr "Textbuffert" -#: gtk/gtkentry.c:636 +#: ../gtk/gtkentry.c:727 msgid "Text buffer object which actually stores entry text" msgstr "Textbuffertobjektet som faktiskt lagrar inmatningstexten" -#: gtk/gtkentry.c:643 gtk/gtklabel.c:644 +#: ../gtk/gtkentry.c:734 +#: ../gtk/gtklabel.c:662 msgid "Cursor Position" msgstr "Markörposition" -#: gtk/gtkentry.c:644 gtk/gtklabel.c:645 +#: ../gtk/gtkentry.c:735 +#: ../gtk/gtklabel.c:663 msgid "The current position of the insertion cursor in chars" msgstr "Den aktuella positionen på insättningspekaren i antal tecken" -#: gtk/gtkentry.c:653 gtk/gtklabel.c:654 +#: ../gtk/gtkentry.c:744 +#: ../gtk/gtklabel.c:672 msgid "Selection Bound" msgstr "Markeringsgräns" -#: gtk/gtkentry.c:654 gtk/gtklabel.c:655 -msgid "" -"The position of the opposite end of the selection from the cursor in chars" -msgstr "" -"Positionen för den motsatta änden av markeringen från markören i antal tecken" +#: ../gtk/gtkentry.c:745 +#: ../gtk/gtklabel.c:673 +msgid "The position of the opposite end of the selection from the cursor in chars" +msgstr "Positionen för den motsatta änden av markeringen från markören i antal tecken" -#: gtk/gtkentry.c:664 +#: ../gtk/gtkentry.c:755 msgid "Whether the entry contents can be edited" msgstr "Huruvida fältets innehåll kan redigeras" -#: gtk/gtkentry.c:671 gtk/gtkentrybuffer.c:382 +#: ../gtk/gtkentry.c:762 +#: ../gtk/gtkentrybuffer.c:382 msgid "Maximum length" msgstr "Maxlängd" -#: gtk/gtkentry.c:672 gtk/gtkentrybuffer.c:383 +#: ../gtk/gtkentry.c:763 +#: ../gtk/gtkentrybuffer.c:383 msgid "Maximum number of characters for this entry. Zero if no maximum" msgstr "Maximala antalet tecken i detta fält. Noll om inget maxvärde" -#: gtk/gtkentry.c:680 +#: ../gtk/gtkentry.c:771 msgid "Visibility" msgstr "Synlighet" -#: gtk/gtkentry.c:681 -msgid "" -"FALSE displays the \"invisible char\" instead of the actual text (password " -"mode)" -msgstr "" -"FALSKT visar det \"osynliga tecknet\" istället för den verkliga texten " -"(lösenordsläge)" +#: ../gtk/gtkentry.c:772 +msgid "FALSE displays the \"invisible char\" instead of the actual text (password mode)" +msgstr "FALSKT visar det \"osynliga tecknet\" istället för den verkliga texten (lösenordsläge)" -#: gtk/gtkentry.c:689 +#: ../gtk/gtkentry.c:780 msgid "FALSE removes outside bevel from entry" msgstr "FALSKT tar bort den yttre avfasningen från fältet" -#: gtk/gtkentry.c:697 -msgid "" -"Border between text and frame. Overrides the inner-border style property" +#: ../gtk/gtkentry.c:788 +msgid "Border between text and frame. Overrides the inner-border style property" msgstr "Kant mellan text och ram. Åsidosätter den inre kantstilsegenskapen" -#: gtk/gtkentry.c:704 gtk/gtkentry.c:1270 +#: ../gtk/gtkentry.c:795 +#: ../gtk/gtkentry.c:1361 msgid "Invisible character" msgstr "Osynligt tecken" -#: gtk/gtkentry.c:705 gtk/gtkentry.c:1271 +#: ../gtk/gtkentry.c:796 +#: ../gtk/gtkentry.c:1362 msgid "The character to use when masking entry contents (in \"password mode\")" -msgstr "" -"Tecknet att använda när fältets innehåll ska maskeras (i \"lösenordsläge\")" +msgstr "Tecknet att använda när fältets innehåll ska maskeras (i \"lösenordsläge\")" -#: gtk/gtkentry.c:712 +#: ../gtk/gtkentry.c:803 msgid "Activates default" msgstr "Aktiverar standard" -#: gtk/gtkentry.c:713 -msgid "" -"Whether to activate the default widget (such as the default button in a " -"dialog) when Enter is pressed" -msgstr "" -"Huruvida standardwidgeten ska aktiveras (som exempelvis standardknappen i " -"ett dialogfönster) när Retur trycks ned" +#: ../gtk/gtkentry.c:804 +msgid "Whether to activate the default widget (such as the default button in a dialog) when Enter is pressed" +msgstr "Huruvida standardwidgeten ska aktiveras (som exempelvis standardknappen i ett dialogfönster) när Retur trycks ned" -#: gtk/gtkentry.c:719 +#: ../gtk/gtkentry.c:810 msgid "Width in chars" msgstr "Bredd i antal tecken" -#: gtk/gtkentry.c:720 +#: ../gtk/gtkentry.c:811 msgid "Number of characters to leave space for in the entry" msgstr "Antal tecken som ska lämnas plats till i fältet" -#: gtk/gtkentry.c:729 +#: ../gtk/gtkentry.c:820 msgid "Scroll offset" msgstr "Rullningsavstånd" -#: gtk/gtkentry.c:730 +#: ../gtk/gtkentry.c:821 msgid "Number of pixels of the entry scrolled off the screen to the left" -msgstr "" -"Antalet bildpunkter i objektet som är rullad utanför skärmen till vänster" +msgstr "Antalet bildpunkter i objektet som är rullad utanför skärmen till vänster" -#: gtk/gtkentry.c:740 +#: ../gtk/gtkentry.c:831 msgid "The contents of the entry" msgstr "Innehållet i fältet" -#: gtk/gtkentry.c:755 gtk/gtkmisc.c:81 +#: ../gtk/gtkentry.c:846 +#: ../gtk/gtkmisc.c:81 msgid "X align" msgstr "X-justering" -#: gtk/gtkentry.c:756 gtk/gtkmisc.c:82 -msgid "" -"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " -"layouts." -msgstr "" -"Den horisontella justeringen, från 0 (vänster) till 1 (höger). Omvänd för " -"höger-till-vänster-layouter." +#: ../gtk/gtkentry.c:847 +#: ../gtk/gtkmisc.c:82 +msgid "The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL layouts." +msgstr "Den horisontella justeringen, från 0 (vänster) till 1 (höger). Omvänd för höger-till-vänster-layouter." -#: gtk/gtkentry.c:772 +#: ../gtk/gtkentry.c:863 msgid "Truncate multiline" msgstr "Kapa flerradersrad" -#: gtk/gtkentry.c:773 +#: ../gtk/gtkentry.c:864 msgid "Whether to truncate multiline pastes to one line." msgstr "Huruvida inklistringar av flerraderrad ska kapas till en rad." -#: gtk/gtkentry.c:789 +#: ../gtk/gtkentry.c:880 msgid "Which kind of shadow to draw around the entry when has-frame is set" -msgstr "" -"Vilken typ av skugga som ska ritas runt fältet när has-frame är inställd" +msgstr "Vilken typ av skugga som ska ritas runt fältet när has-frame är inställd" -#: gtk/gtkentry.c:804 gtk/gtktextview.c:748 +#: ../gtk/gtkentry.c:895 +#: ../gtk/gtktextview.c:764 msgid "Overwrite mode" msgstr "Överskrivningsläge" -#: gtk/gtkentry.c:805 +#: ../gtk/gtkentry.c:896 msgid "Whether new text overwrites existing text" msgstr "Huruvida ny text skriver över befintlig text" -#: gtk/gtkentry.c:819 gtk/gtkentrybuffer.c:367 +#: ../gtk/gtkentry.c:910 +#: ../gtk/gtkentrybuffer.c:367 msgid "Text length" msgstr "Textlängd" -#: gtk/gtkentry.c:820 +#: ../gtk/gtkentry.c:911 msgid "Length of the text currently in the entry" msgstr "Längden på aktuell text i posten " -#: gtk/gtkentry.c:835 +#: ../gtk/gtkentry.c:926 #, fuzzy msgid "Invisible character set" msgstr "Osynligt tecken" -#: gtk/gtkentry.c:836 +#: ../gtk/gtkentry.c:927 #, fuzzy msgid "Whether the invisible character has been set" msgstr "Huruvida det osynliga tecknet har ställts in" -#: gtk/gtkentry.c:854 +#: ../gtk/gtkentry.c:945 msgid "Caps Lock warning" msgstr "Caps Lock-varning" -#: gtk/gtkentry.c:855 +#: ../gtk/gtkentry.c:946 msgid "Whether password entries will show a warning when Caps Lock is on" msgstr "Huruvida lösenordsfält ska visa en varning när Caps Lock är aktiverad" -#: gtk/gtkentry.c:869 +#: ../gtk/gtkentry.c:960 msgid "Progress Fraction" msgstr "Förloppsandel" -#: gtk/gtkentry.c:870 +#: ../gtk/gtkentry.c:961 msgid "The current fraction of the task that's been completed" msgstr "Den aktuella delen av åtgärden som har färdigställts" -#: gtk/gtkentry.c:887 +#: ../gtk/gtkentry.c:978 msgid "Progress Pulse Step" msgstr "Pulssteg för förlopp" -#: gtk/gtkentry.c:888 -msgid "" -"The fraction of total entry width to move the progress bouncing block for " -"each call to gtk_entry_progress_pulse()" -msgstr "" -"Den del av den totala bredden att flytta förloppets studsande block för " -"varje anrop till gtk_entry_progress_pulse()" +#: ../gtk/gtkentry.c:979 +msgid "The fraction of total entry width to move the progress bouncing block for each call to gtk_entry_progress_pulse()" +msgstr "Den del av den totala bredden att flytta förloppets studsande block för varje anrop till gtk_entry_progress_pulse()" -#: gtk/gtkentry.c:904 +#: ../gtk/gtkentry.c:995 msgid "Primary pixbuf" msgstr "Primär pixbuf" -#: gtk/gtkentry.c:905 +#: ../gtk/gtkentry.c:996 msgid "Primary pixbuf for the entry" msgstr "Primär pixbuf för posten" -#: gtk/gtkentry.c:919 +#: ../gtk/gtkentry.c:1010 msgid "Secondary pixbuf" msgstr "Sekundär pixbuf" -#: gtk/gtkentry.c:920 +#: ../gtk/gtkentry.c:1011 msgid "Secondary pixbuf for the entry" msgstr "Sekundär pixbuf för posten" -#: gtk/gtkentry.c:934 +#: ../gtk/gtkentry.c:1025 msgid "Primary stock ID" msgstr "Primärt standard-id" -#: gtk/gtkentry.c:935 +#: ../gtk/gtkentry.c:1026 msgid "Stock ID for primary icon" msgstr "Standard-id för primär ikon" -#: gtk/gtkentry.c:949 +#: ../gtk/gtkentry.c:1040 msgid "Secondary stock ID" msgstr "Sekundärt standard-id" -#: gtk/gtkentry.c:950 +#: ../gtk/gtkentry.c:1041 msgid "Stock ID for secondary icon" msgstr "Standard-id för sekundär ikon" -#: gtk/gtkentry.c:964 +#: ../gtk/gtkentry.c:1055 msgid "Primary icon name" msgstr "Primärt ikonnamn" -#: gtk/gtkentry.c:965 +#: ../gtk/gtkentry.c:1056 msgid "Icon name for primary icon" msgstr "Ikonnamn för primär ikon" -#: gtk/gtkentry.c:979 +#: ../gtk/gtkentry.c:1070 msgid "Secondary icon name" msgstr "Sekundärt ikonnamn" -#: gtk/gtkentry.c:980 +#: ../gtk/gtkentry.c:1071 msgid "Icon name for secondary icon" msgstr "Ikonnamn för sekundär ikon" -#: gtk/gtkentry.c:994 +#: ../gtk/gtkentry.c:1085 msgid "Primary GIcon" msgstr "Primär GIcon" -#: gtk/gtkentry.c:995 +#: ../gtk/gtkentry.c:1086 msgid "GIcon for primary icon" msgstr "GIcon för primär ikon" -#: gtk/gtkentry.c:1009 +#: ../gtk/gtkentry.c:1100 msgid "Secondary GIcon" msgstr "Sekundär GIcon" -#: gtk/gtkentry.c:1010 +#: ../gtk/gtkentry.c:1101 msgid "GIcon for secondary icon" msgstr "GIcon för sekundär ikon" -#: gtk/gtkentry.c:1024 +#: ../gtk/gtkentry.c:1115 msgid "Primary storage type" msgstr "Primär lagringstyp" -#: gtk/gtkentry.c:1025 +#: ../gtk/gtkentry.c:1116 msgid "The representation being used for primary icon" msgstr "Representationen som används för primär ikon" -#: gtk/gtkentry.c:1040 +#: ../gtk/gtkentry.c:1131 msgid "Secondary storage type" msgstr "Sekundär lagringstyp" -#: gtk/gtkentry.c:1041 +#: ../gtk/gtkentry.c:1132 msgid "The representation being used for secondary icon" msgstr "Representationen som används för sekundär ikon" -#: gtk/gtkentry.c:1062 +#: ../gtk/gtkentry.c:1153 msgid "Primary icon activatable" msgstr "Primär ikon aktiverbar" -#: gtk/gtkentry.c:1063 +#: ../gtk/gtkentry.c:1154 msgid "Whether the primary icon is activatable" msgstr "Huruvida primära ikonen är aktiverbar" -#: gtk/gtkentry.c:1083 +#: ../gtk/gtkentry.c:1174 msgid "Secondary icon activatable" msgstr "Sekundär ikon aktiverbar" -#: gtk/gtkentry.c:1084 +#: ../gtk/gtkentry.c:1175 msgid "Whether the secondary icon is activatable" msgstr "Huruvida sekundära ikonen är aktiverbar" -#: gtk/gtkentry.c:1106 +#: ../gtk/gtkentry.c:1197 msgid "Primary icon sensitive" msgstr "Primär ikon är känslig" -#: gtk/gtkentry.c:1107 +#: ../gtk/gtkentry.c:1198 msgid "Whether the primary icon is sensitive" msgstr "Huruvida primära ikonen är känslig" -#: gtk/gtkentry.c:1128 +#: ../gtk/gtkentry.c:1219 msgid "Secondary icon sensitive" msgstr "Sekundär ikon är känslig" -#: gtk/gtkentry.c:1129 +#: ../gtk/gtkentry.c:1220 msgid "Whether the secondary icon is sensitive" msgstr "Huruvida sekundära ikonen är känslig" -#: gtk/gtkentry.c:1145 +#: ../gtk/gtkentry.c:1236 msgid "Primary icon tooltip text" msgstr "Verktygstipstext för primär ikon" -#: gtk/gtkentry.c:1146 gtk/gtkentry.c:1182 +#: ../gtk/gtkentry.c:1237 +#: ../gtk/gtkentry.c:1273 msgid "The contents of the tooltip on the primary icon" msgstr "Innehållet för verktygstipset på primära ikonen" -#: gtk/gtkentry.c:1162 +#: ../gtk/gtkentry.c:1253 msgid "Secondary icon tooltip text" msgstr "Verktygstipstext för sekundär ikon" -#: gtk/gtkentry.c:1163 gtk/gtkentry.c:1201 +#: ../gtk/gtkentry.c:1254 +#: ../gtk/gtkentry.c:1292 msgid "The contents of the tooltip on the secondary icon" msgstr "Innehållet för verktygstipset på sekundära ikonen" -#: gtk/gtkentry.c:1181 +#: ../gtk/gtkentry.c:1272 msgid "Primary icon tooltip markup" msgstr "Verktygstipsmarkup för primär ikon" -#: gtk/gtkentry.c:1200 +#: ../gtk/gtkentry.c:1291 msgid "Secondary icon tooltip markup" msgstr "Verktygstipsmarkup för sekundär ikon" -#: gtk/gtkentry.c:1220 gtk/gtktextview.c:776 +#: ../gtk/gtkentry.c:1311 +#: ../gtk/gtktextview.c:792 msgid "IM module" msgstr "IM-modul" -#: gtk/gtkentry.c:1221 gtk/gtktextview.c:777 +#: ../gtk/gtkentry.c:1312 +#: ../gtk/gtktextview.c:793 msgid "Which IM module should be used" msgstr "Vilken IM-modul som ska användas" -#: gtk/gtkentry.c:1235 +#: ../gtk/gtkentry.c:1326 msgid "Icon Prelight" msgstr "Ikonförljus" -#: gtk/gtkentry.c:1236 +#: ../gtk/gtkentry.c:1327 msgid "Whether activatable icons should prelight when hovered" msgstr "Huruvida aktiverbara ikoner ska förljusas när svävande" -#: gtk/gtkentry.c:1249 +#: ../gtk/gtkentry.c:1340 msgid "Progress Border" msgstr "Förloppsram" -#: gtk/gtkentry.c:1250 +#: ../gtk/gtkentry.c:1341 msgid "Border around the progress bar" msgstr "Ram runt förloppsmätaren" -#: gtk/gtkentry.c:1742 +#: ../gtk/gtkentry.c:1833 msgid "Border between text and frame." msgstr "Kant mellan text och ram." -#: gtk/gtkentry.c:1747 gtk/gtklabel.c:903 -msgid "Select on focus" -msgstr "Markera vid fokus" - -#: gtk/gtkentry.c:1748 -msgid "Whether to select the contents of an entry when it is focused" -msgstr "Huruvida ett fälts innehåll markeras då fältet får fokus" - -#: gtk/gtkentry.c:1762 -msgid "Password Hint Timeout" -msgstr "Tidsgräns för lösenordstips" - -#: gtk/gtkentry.c:1763 -msgid "How long to show the last input character in hidden entries" -msgstr "Hur länge det senaste inmatade tecknet i dolda objekt ska visas" - -#: gtk/gtkentrybuffer.c:353 +#: ../gtk/gtkentrybuffer.c:353 msgid "The contents of the buffer" msgstr "Innehållet i bufferten" -#: gtk/gtkentrybuffer.c:368 +#: ../gtk/gtkentrybuffer.c:368 msgid "Length of the text currently in the buffer" msgstr "Längden på texten för närvarande i bufferten " -#: gtk/gtkentrycompletion.c:280 +#: ../gtk/gtkentrycompletion.c:267 msgid "Completion Model" msgstr "Ifyllningsmodell" -#: gtk/gtkentrycompletion.c:281 +#: ../gtk/gtkentrycompletion.c:268 msgid "The model to find matches in" msgstr "Modellen för att hitta träffar" -#: gtk/gtkentrycompletion.c:287 +#: ../gtk/gtkentrycompletion.c:274 msgid "Minimum Key Length" msgstr "Minsta nyckellängd" -#: gtk/gtkentrycompletion.c:288 +#: ../gtk/gtkentrycompletion.c:275 msgid "Minimum length of the search key in order to look up matches" msgstr "Minsta längd på söknyckeln för att hitta träffar" -#: gtk/gtkentrycompletion.c:304 gtk/gtkiconview.c:587 +#: ../gtk/gtkentrycompletion.c:291 +#: ../gtk/gtkiconview.c:617 msgid "Text column" msgstr "Textkolumn" -#: gtk/gtkentrycompletion.c:305 +#: ../gtk/gtkentrycompletion.c:292 msgid "The column of the model containing the strings." msgstr "Kolumnen för modellen som innehåller strängarna." -#: gtk/gtkentrycompletion.c:324 +#: ../gtk/gtkentrycompletion.c:311 msgid "Inline completion" msgstr "Inlineifyllning" -#: gtk/gtkentrycompletion.c:325 +#: ../gtk/gtkentrycompletion.c:312 msgid "Whether the common prefix should be inserted automatically" msgstr "Huruvida det gemensamma prefixet ska infogas automatiskt" -#: gtk/gtkentrycompletion.c:339 +#: ../gtk/gtkentrycompletion.c:326 msgid "Popup completion" msgstr "Popupifyllning" -#: gtk/gtkentrycompletion.c:340 +#: ../gtk/gtkentrycompletion.c:327 msgid "Whether the completions should be shown in a popup window" msgstr "Huruvida ifyllningarna ska visas i ett popupfönster" -#: gtk/gtkentrycompletion.c:355 +#: ../gtk/gtkentrycompletion.c:342 msgid "Popup set width" msgstr "Popup med fast bredd" -#: gtk/gtkentrycompletion.c:356 +#: ../gtk/gtkentrycompletion.c:343 msgid "If TRUE, the popup window will have the same size as the entry" msgstr "OM detta är SANT kommer popupfönstret att ha samma storlek som fältet" -#: gtk/gtkentrycompletion.c:374 +#: ../gtk/gtkentrycompletion.c:361 msgid "Popup single match" msgstr "Popup för enstaka träff" -#: gtk/gtkentrycompletion.c:375 +#: ../gtk/gtkentrycompletion.c:362 msgid "If TRUE, the popup window will appear for a single match." msgstr "Om detta är SANT kommer popupfönstret att visas för en enstaka träff." -#: gtk/gtkentrycompletion.c:389 +#: ../gtk/gtkentrycompletion.c:376 msgid "Inline selection" msgstr "Inline-markering" -#: gtk/gtkentrycompletion.c:390 +#: ../gtk/gtkentrycompletion.c:377 msgid "Your description here" msgstr "Din beskrivning här" -#: gtk/gtkeventbox.c:93 +#: ../gtk/gtkentrycompletion.c:392 +#: ../gtk/gtktreeviewcolumn.c:408 +msgid "Cell Area" +msgstr "" + +#: ../gtk/gtkentrycompletion.c:393 +#: ../gtk/gtktreeviewcolumn.c:409 +msgid "The GtkCellArea used to layout cells" +msgstr "" + +#: ../gtk/gtkeventbox.c:101 msgid "Visible Window" msgstr "Synligt fönster" -#: gtk/gtkeventbox.c:94 -msgid "" -"Whether the event box is visible, as opposed to invisible and only used to " -"trap events." -msgstr "" -"Huruvida händelserutan är synlig istället för osynlig och endast använd för " -"att fånga händelser." +#: ../gtk/gtkeventbox.c:102 +msgid "Whether the event box is visible, as opposed to invisible and only used to trap events." +msgstr "Huruvida händelserutan är synlig istället för osynlig och endast använd för att fånga händelser." -#: gtk/gtkeventbox.c:100 +#: ../gtk/gtkeventbox.c:108 msgid "Above child" msgstr "Ovanför barn" -#: gtk/gtkeventbox.c:101 -msgid "" -"Whether the event-trapping window of the eventbox is above the window of the " -"child widget as opposed to below it." -msgstr "" -"Huruvida händelserutans händelsefångande fönster är över barnwidgetens " -"fönster istället för under det." +#: ../gtk/gtkeventbox.c:109 +msgid "Whether the event-trapping window of the eventbox is above the window of the child widget as opposed to below it." +msgstr "Huruvida händelserutans händelsefångande fönster är över barnwidgetens fönster istället för under det." -#: gtk/gtkexpander.c:201 +#: ../gtk/gtkexpander.c:199 msgid "Expanded" msgstr "Expanderad" -#: gtk/gtkexpander.c:202 +#: ../gtk/gtkexpander.c:200 msgid "Whether the expander has been opened to reveal the child widget" msgstr "Huruvida expanderaren har öppnats för att avslöja barnwidgeten" -#: gtk/gtkexpander.c:210 +#: ../gtk/gtkexpander.c:208 msgid "Text of the expander's label" msgstr "Text på expanderarens etikett" -#: gtk/gtkexpander.c:225 gtk/gtklabel.c:563 +#: ../gtk/gtkexpander.c:223 +#: ../gtk/gtklabel.c:581 msgid "Use markup" msgstr "Använd markup" -#: gtk/gtkexpander.c:226 gtk/gtklabel.c:564 +#: ../gtk/gtkexpander.c:224 +#: ../gtk/gtklabel.c:582 msgid "The text of the label includes XML markup. See pango_parse_markup()" msgstr "Etikettens text innehåller XML-markup. Se pango_parse_markup()" -#: gtk/gtkexpander.c:234 +#: ../gtk/gtkexpander.c:232 msgid "Space to put between the label and the child" msgstr "Utrymme att placera mellan etiketten och barnet" -#: gtk/gtkexpander.c:243 gtk/gtkframe.c:165 gtk/gtktoolbutton.c:216 -#: gtk/gtktoolitemgroup.c:1578 +#: ../gtk/gtkexpander.c:241 +#: ../gtk/gtkframe.c:165 +#: ../gtk/gtktoolbutton.c:216 +#: ../gtk/gtktoolitemgroup.c:1595 msgid "Label widget" msgstr "Etikettwidget" -#: gtk/gtkexpander.c:244 +#: ../gtk/gtkexpander.c:242 msgid "A widget to display in place of the usual expander label" msgstr "En widget att visa istället för den vanliga expanderaretiketten" -#: gtk/gtkexpander.c:251 +#: ../gtk/gtkexpander.c:249 #, fuzzy msgid "Label fill" msgstr "Flikfyllning" -#: gtk/gtkexpander.c:252 +#: ../gtk/gtkexpander.c:250 #, fuzzy msgid "Whether the label widget should fill all available horizontal space" msgstr "Huruvida objektet ska fylla upp tillgängligt utrymme" -#: gtk/gtkexpander.c:258 gtk/gtktoolitemgroup.c:1606 gtk/gtktreeview.c:776 +#: ../gtk/gtkexpander.c:256 +#: ../gtk/gtktoolitemgroup.c:1623 +#: ../gtk/gtktreeview.c:1190 msgid "Expander Size" msgstr "Storlek på expanderare" -#: gtk/gtkexpander.c:259 gtk/gtktoolitemgroup.c:1607 gtk/gtktreeview.c:777 +#: ../gtk/gtkexpander.c:257 +#: ../gtk/gtktoolitemgroup.c:1624 +#: ../gtk/gtktreeview.c:1191 msgid "Size of the expander arrow" msgstr "Storlek på expanderarpilen" -#: gtk/gtkexpander.c:268 +#: ../gtk/gtkexpander.c:266 msgid "Spacing around expander arrow" msgstr "Utrymme runt expanderarpil" -#: gtk/gtkfilechooserbutton.c:368 +#: ../gtk/gtkfilechooserbutton.c:366 msgid "Dialog" msgstr "Dialog" -#: gtk/gtkfilechooserbutton.c:369 +#: ../gtk/gtkfilechooserbutton.c:367 msgid "The file chooser dialog to use." msgstr "Filväljardialogen att använda." -#: gtk/gtkfilechooserbutton.c:400 +#: ../gtk/gtkfilechooserbutton.c:398 msgid "The title of the file chooser dialog." msgstr "Titeln på filväljardialogen." -#: gtk/gtkfilechooserbutton.c:414 +#: ../gtk/gtkfilechooserbutton.c:412 msgid "The desired width of the button widget, in characters." msgstr "Den önskade bredden på knappwidgeten, i antal tecken." -#: gtk/gtkfilechooser.c:740 +#: ../gtk/gtkfilechooser.c:740 msgid "Action" msgstr "Åtgärd" -#: gtk/gtkfilechooser.c:741 +#: ../gtk/gtkfilechooser.c:741 msgid "The type of operation that the file selector is performing" msgstr "Typen av åtgärd som filväljaren utför" -#: gtk/gtkfilechooser.c:747 gtk/gtkrecentchooser.c:264 +#: ../gtk/gtkfilechooser.c:747 +#: ../gtk/gtkrecentchooser.c:264 msgid "Filter" msgstr "Filter" -#: gtk/gtkfilechooser.c:748 +#: ../gtk/gtkfilechooser.c:748 msgid "The current filter for selecting which files are displayed" msgstr "Det aktuella filtret för val av vilka filer som visas" -#: gtk/gtkfilechooser.c:753 +#: ../gtk/gtkfilechooser.c:753 msgid "Local Only" msgstr "Endast lokala" -#: gtk/gtkfilechooser.c:754 +#: ../gtk/gtkfilechooser.c:754 msgid "Whether the selected file(s) should be limited to local file: URLs" msgstr "Huruvida de valda filerna ska begränsas till lokala file:-URI:er" -#: gtk/gtkfilechooser.c:759 +#: ../gtk/gtkfilechooser.c:759 msgid "Preview widget" msgstr "Förhandsvisningswidget" -#: gtk/gtkfilechooser.c:760 +#: ../gtk/gtkfilechooser.c:760 msgid "Application supplied widget for custom previews." msgstr "Programtillhandahållen widget för anpassade förhandsvisningar." -#: gtk/gtkfilechooser.c:765 +#: ../gtk/gtkfilechooser.c:765 msgid "Preview Widget Active" msgstr "Förhandsvisningswidget aktiv" -#: gtk/gtkfilechooser.c:766 -msgid "" -"Whether the application supplied widget for custom previews should be shown." -msgstr "" -"Huruvida den programtillhandahållna widgeten för anpassade förhandsvisningar " -"ska visas." +#: ../gtk/gtkfilechooser.c:766 +msgid "Whether the application supplied widget for custom previews should be shown." +msgstr "Huruvida den programtillhandahållna widgeten för anpassade förhandsvisningar ska visas." -#: gtk/gtkfilechooser.c:771 +#: ../gtk/gtkfilechooser.c:771 msgid "Use Preview Label" msgstr "Använd förhandsvisningsetikett" -#: gtk/gtkfilechooser.c:772 +#: ../gtk/gtkfilechooser.c:772 msgid "Whether to display a stock label with the name of the previewed file." -msgstr "" -"Huruvida en standardetikett med namnet på den förhandsvisade filen ska visas." +msgstr "Huruvida en standardetikett med namnet på den förhandsvisade filen ska visas." -#: gtk/gtkfilechooser.c:777 +#: ../gtk/gtkfilechooser.c:777 msgid "Extra widget" msgstr "Extrawidget" -#: gtk/gtkfilechooser.c:778 +#: ../gtk/gtkfilechooser.c:778 msgid "Application supplied widget for extra options." msgstr "Programtillhandahållen widget för extra alternativ." -#: gtk/gtkfilechooser.c:783 gtk/gtkrecentchooser.c:203 +#: ../gtk/gtkfilechooser.c:783 +#: ../gtk/gtkrecentchooser.c:203 msgid "Select Multiple" msgstr "Välj flera" -#: gtk/gtkfilechooser.c:784 +#: ../gtk/gtkfilechooser.c:784 msgid "Whether to allow multiple files to be selected" msgstr "Huruvida flera filer kan väljas" -#: gtk/gtkfilechooser.c:790 +#: ../gtk/gtkfilechooser.c:790 msgid "Show Hidden" msgstr "Visa dolda" -#: gtk/gtkfilechooser.c:791 +#: ../gtk/gtkfilechooser.c:791 msgid "Whether the hidden files and folders should be displayed" msgstr "Huruvida de dolda filerna och mapparna ska visas" -#: gtk/gtkfilechooser.c:806 +#: ../gtk/gtkfilechooser.c:806 msgid "Do overwrite confirmation" msgstr "Utför överskrivningsbekräftelse" -#: gtk/gtkfilechooser.c:807 -msgid "" -"Whether a file chooser in save mode will present an overwrite confirmation " -"dialog if necessary." -msgstr "" -"Huruvidare en filväljare i sparandeläge kommer att visa en " -"överskrivningsbekräftelsedialog om så behövs." +#: ../gtk/gtkfilechooser.c:807 +msgid "Whether a file chooser in save mode will present an overwrite confirmation dialog if necessary." +msgstr "Huruvidare en filväljare i sparandeläge kommer att visa en överskrivningsbekräftelsedialog om så behövs." -#: gtk/gtkfilechooser.c:823 -#, fuzzy +#: ../gtk/gtkfilechooser.c:823 msgid "Allow folder creation" -msgstr "Tillåt skapandet av mappar" +msgstr "Tillåt mappskapande" -#: gtk/gtkfilechooser.c:824 -msgid "" -"Whether a file chooser not in open mode will offer the user to create new " -"folders." -msgstr "" -"Huruvidare en filväljare som inte är i öppnat läge ska erbjuda användaren " -"möjligheten att skapa nya mappar." +#: ../gtk/gtkfilechooser.c:824 +msgid "Whether a file chooser not in open mode will offer the user to create new folders." +msgstr "Huruvidare en filväljare som inte är i öppnat läge ska erbjuda användaren möjligheten att skapa nya mappar." -#: gtk/gtkfixed.c:98 gtk/gtklayout.c:605 +#: ../gtk/gtkfixed.c:103 +#: ../gtk/gtklayout.c:633 msgid "X position" msgstr "X-position" -#: gtk/gtkfixed.c:99 gtk/gtklayout.c:606 +#: ../gtk/gtkfixed.c:104 +#: ../gtk/gtklayout.c:634 msgid "X position of child widget" msgstr "X-position på barnwidgeten" -#: gtk/gtkfixed.c:108 gtk/gtklayout.c:615 +#: ../gtk/gtkfixed.c:111 +#: ../gtk/gtklayout.c:643 msgid "Y position" msgstr "Y-position" -#: gtk/gtkfixed.c:109 gtk/gtklayout.c:616 +#: ../gtk/gtkfixed.c:112 +#: ../gtk/gtklayout.c:644 msgid "Y position of child widget" msgstr "Y-position på barnwidgeten" -#: gtk/gtkfontbutton.c:141 +#: ../gtk/gtkfontbutton.c:141 msgid "The title of the font selection dialog" msgstr "Titeln på typsnittsväljardialogen" -#: gtk/gtkfontbutton.c:156 gtk/gtkfontsel.c:223 +#: ../gtk/gtkfontbutton.c:156 +#: ../gtk/gtkfontsel.c:223 msgid "Font name" msgstr "Typsnittsnamn" -#: gtk/gtkfontbutton.c:157 +#: ../gtk/gtkfontbutton.c:157 msgid "The name of the selected font" msgstr "Namnet på det valda typsnittet" -#: gtk/gtkfontbutton.c:158 +#: ../gtk/gtkfontbutton.c:158 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:173 +#: ../gtk/gtkfontbutton.c:173 msgid "Use font in label" msgstr "Använd typsnitt i etikett" -#: gtk/gtkfontbutton.c:174 +#: ../gtk/gtkfontbutton.c:174 msgid "Whether the label is drawn in the selected font" msgstr "Huruvida etiketten ritas med det valda typsnittet" -#: gtk/gtkfontbutton.c:189 +#: ../gtk/gtkfontbutton.c:189 msgid "Use size in label" msgstr "Använd storlek i etikett" -#: gtk/gtkfontbutton.c:190 +#: ../gtk/gtkfontbutton.c:190 msgid "Whether the label is drawn with the selected font size" msgstr "Huruvida etiketten ritas med den valda typsnittsstorleken" -#: gtk/gtkfontbutton.c:206 +#: ../gtk/gtkfontbutton.c:206 msgid "Show style" msgstr "Visa stil" -#: gtk/gtkfontbutton.c:207 +#: ../gtk/gtkfontbutton.c:207 msgid "Whether the selected font style is shown in the label" msgstr "Huruvida den valda typsnittsstilen visas i etiketten" -#: gtk/gtkfontbutton.c:222 +#: ../gtk/gtkfontbutton.c:222 msgid "Show size" msgstr "Visa storlek" -#: gtk/gtkfontbutton.c:223 +#: ../gtk/gtkfontbutton.c:223 msgid "Whether selected font size is shown in the label" msgstr "Huruvida den valda typsnittsstorleken visas i etiketten" -#: gtk/gtkfontsel.c:224 +#: ../gtk/gtkfontsel.c:224 msgid "The string that represents this font" msgstr "Strängen som representerar detta typsnitt" -#: gtk/gtkfontsel.c:230 +#: ../gtk/gtkfontsel.c:230 msgid "Preview text" msgstr "Förhandsvisningstext" -#: gtk/gtkfontsel.c:231 +#: ../gtk/gtkfontsel.c:231 msgid "The text to display in order to demonstrate the selected font" msgstr "Den text som ska visas för att demonstrera det valda typsnittet" -#: gtk/gtkframe.c:131 +#: ../gtk/gtkframe.c:131 msgid "Text of the frame's label" msgstr "Text på ramens etikett" -#: gtk/gtkframe.c:138 +#: ../gtk/gtkframe.c:138 msgid "Label xalign" msgstr "X-justering av etikett" -#: gtk/gtkframe.c:139 +#: ../gtk/gtkframe.c:139 msgid "The horizontal alignment of the label" msgstr "Den horisontella justeringen av etiketten" -#: gtk/gtkframe.c:147 +#: ../gtk/gtkframe.c:147 msgid "Label yalign" msgstr "Y-justering av etikett" -#: gtk/gtkframe.c:148 +#: ../gtk/gtkframe.c:148 msgid "The vertical alignment of the label" msgstr "Den vertikala justeringen av etiketten" -#: gtk/gtkframe.c:156 +#: ../gtk/gtkframe.c:156 msgid "Frame shadow" msgstr "Ramskugga" -#: gtk/gtkframe.c:157 +#: ../gtk/gtkframe.c:157 msgid "Appearance of the frame border" msgstr "Utseende på ramkanten" -#: gtk/gtkframe.c:166 +#: ../gtk/gtkframe.c:166 msgid "A widget to display in place of the usual frame label" msgstr "En widget att visa istället för den vanliga rametiketten" -#: gtk/gtkhandlebox.c:183 +#: ../gtk/gtkhandlebox.c:188 msgid "Appearance of the shadow that surrounds the container" msgstr "Utseende på skuggan som omger behållaren" -#: gtk/gtkhandlebox.c:191 +#: ../gtk/gtkhandlebox.c:196 msgid "Handle position" msgstr "Handtagsposition" -#: gtk/gtkhandlebox.c:192 +#: ../gtk/gtkhandlebox.c:197 msgid "Position of the handle relative to the child widget" msgstr "Position på handtaget relativt barnwidgeten" -#: gtk/gtkhandlebox.c:200 +#: ../gtk/gtkhandlebox.c:205 msgid "Snap edge" msgstr "Fäst kant" -#: gtk/gtkhandlebox.c:201 -msgid "" -"Side of the handlebox that's lined up with the docking point to dock the " -"handlebox" -msgstr "" -"Sida på handtaget som är jämsides med dockningspunkten för att docka " -"handtaget" +#: ../gtk/gtkhandlebox.c:206 +msgid "Side of the handlebox that's lined up with the docking point to dock the handlebox" +msgstr "Sida på handtaget som är jämsides med dockningspunkten för att docka handtaget" -#: gtk/gtkhandlebox.c:209 +#: ../gtk/gtkhandlebox.c:214 msgid "Snap edge set" msgstr "Fäst kant inställd" -#: gtk/gtkhandlebox.c:210 -msgid "" -"Whether to use the value from the snap_edge property or a value derived from " -"handle_position" -msgstr "" -"Huruvida värdet från egenskapen snap_edge eller ett värde härlett från " -"handle_position ska användas" +#: ../gtk/gtkhandlebox.c:215 +msgid "Whether to use the value from the snap_edge property or a value derived from handle_position" +msgstr "Huruvida värdet från egenskapen snap_edge eller ett värde härlett från handle_position ska användas" -#: gtk/gtkhandlebox.c:217 +#: ../gtk/gtkhandlebox.c:222 msgid "Child Detached" msgstr "Barn frånkopplat" -#: gtk/gtkhandlebox.c:218 -msgid "" -"A boolean value indicating whether the handlebox's child is attached or " -"detached." -msgstr "" -"Ett booleskt värde som indikerar huruvida handlebox:ens barn är fäst eller " -"frånkopplat." +#: ../gtk/gtkhandlebox.c:223 +msgid "A boolean value indicating whether the handlebox's child is attached or detached." +msgstr "Ett booleskt värde som indikerar huruvida handlebox:ens barn är fäst eller frånkopplat." -#: gtk/gtkiconview.c:550 +#: ../gtk/gtkiconview.c:580 msgid "Selection mode" msgstr "Markeringsläge" -#: gtk/gtkiconview.c:551 +#: ../gtk/gtkiconview.c:581 msgid "The selection mode" msgstr "Markeringsläget" -#: gtk/gtkiconview.c:569 +#: ../gtk/gtkiconview.c:599 msgid "Pixbuf column" msgstr "Pixbufkolumn" -#: gtk/gtkiconview.c:570 +#: ../gtk/gtkiconview.c:600 msgid "Model column used to retrieve the icon pixbuf from" msgstr "Modellkolumn som används för att hämta ikonpixbufen från" -#: gtk/gtkiconview.c:588 +#: ../gtk/gtkiconview.c:618 msgid "Model column used to retrieve the text from" msgstr "Modellkolumn som används för att hämta texten från" -#: gtk/gtkiconview.c:607 +#: ../gtk/gtkiconview.c:637 msgid "Markup column" msgstr "Markupkolumn" -#: gtk/gtkiconview.c:608 +#: ../gtk/gtkiconview.c:638 msgid "Model column used to retrieve the text if using Pango markup" msgstr "Modellkolumn som används för att hämta texten om Pango-markup används" -#: gtk/gtkiconview.c:615 +#: ../gtk/gtkiconview.c:645 msgid "Icon View Model" msgstr "Ikonvymodell" -#: gtk/gtkiconview.c:616 +#: ../gtk/gtkiconview.c:646 msgid "The model for the icon view" msgstr "Modellen för ikonvyn" -#: gtk/gtkiconview.c:632 +#: ../gtk/gtkiconview.c:662 msgid "Number of columns" msgstr "Antal kolumner" -#: gtk/gtkiconview.c:633 +#: ../gtk/gtkiconview.c:663 msgid "Number of columns to display" msgstr "Antalet kolumner att visa" -#: gtk/gtkiconview.c:650 +#: ../gtk/gtkiconview.c:680 msgid "Width for each item" msgstr "Bredd på varje objekt" -#: gtk/gtkiconview.c:651 +#: ../gtk/gtkiconview.c:681 msgid "The width used for each item" msgstr "Bredden som används på varje objekt" -#: gtk/gtkiconview.c:667 +#: ../gtk/gtkiconview.c:697 msgid "Space which is inserted between cells of an item" msgstr "Utrymme som infogas mellan cellerna i ett objekt" -#: gtk/gtkiconview.c:682 +#: ../gtk/gtkiconview.c:712 msgid "Row Spacing" msgstr "Radutrymme" -#: gtk/gtkiconview.c:683 +#: ../gtk/gtkiconview.c:713 msgid "Space which is inserted between grid rows" msgstr "Utrymme som infogas mellan rader i rutnät" -#: gtk/gtkiconview.c:698 +#: ../gtk/gtkiconview.c:728 msgid "Column Spacing" msgstr "Kolumnutrymme" -#: gtk/gtkiconview.c:699 +#: ../gtk/gtkiconview.c:729 msgid "Space which is inserted between grid columns" msgstr "Utrymme som infogas mellan kolumner i rutnät" -#: gtk/gtkiconview.c:714 +#: ../gtk/gtkiconview.c:744 msgid "Margin" msgstr "Marginal" -#: gtk/gtkiconview.c:715 +#: ../gtk/gtkiconview.c:745 msgid "Space which is inserted at the edges of the icon view" msgstr "Utrymme som infogas vid kanterna på ikonvyn" -#: gtk/gtkiconview.c:730 -#, fuzzy +#: ../gtk/gtkiconview.c:760 msgid "Item Orientation" -msgstr "Orientering" +msgstr "Objektorientering" -#: gtk/gtkiconview.c:731 -msgid "" -"How the text and icon of each item are positioned relative to each other" +#: ../gtk/gtkiconview.c:761 +msgid "How the text and icon of each item are positioned relative to each other" msgstr "Hur texten och ikonen för varje objekt positioneras relativt varandra" -#: gtk/gtkiconview.c:747 gtk/gtktreeview.c:611 gtk/gtktreeviewcolumn.c:311 +#: ../gtk/gtkiconview.c:777 +#: ../gtk/gtktreeview.c:1025 +#: ../gtk/gtktreeviewcolumn.c:358 msgid "Reorderable" msgstr "Omarrangeringsbar" -#: gtk/gtkiconview.c:748 gtk/gtktreeview.c:612 +#: ../gtk/gtkiconview.c:778 +#: ../gtk/gtktreeview.c:1026 msgid "View is reorderable" msgstr "Vyn är omarrangeringsbar" -#: gtk/gtkiconview.c:755 gtk/gtktreeview.c:762 +#: ../gtk/gtkiconview.c:785 +#: ../gtk/gtktreeview.c:1176 msgid "Tooltip Column" msgstr "Verktygstipskolumn" -#: gtk/gtkiconview.c:756 +#: ../gtk/gtkiconview.c:786 msgid "The column in the model containing the tooltip texts for the items" msgstr "Kolumnen för modellen som innehåller verktygstipstexterna för objekten" -#: gtk/gtkiconview.c:773 +#: ../gtk/gtkiconview.c:803 msgid "Item Padding" msgstr "Objektutfyllnad" -#: gtk/gtkiconview.c:774 +#: ../gtk/gtkiconview.c:804 msgid "Padding around icon view items" msgstr "Utfyllnad runt objekt i ikonvy" -#: gtk/gtkiconview.c:783 +#: ../gtk/gtkiconview.c:817 msgid "Selection Box Color" msgstr "Färg på markeringsruta" -#: gtk/gtkiconview.c:784 +#: ../gtk/gtkiconview.c:818 msgid "Color of the selection box" msgstr "Färgen på markeringsrutan" -#: gtk/gtkiconview.c:790 +#: ../gtk/gtkiconview.c:824 msgid "Selection Box Alpha" msgstr "Alfavärde för markeringsrutan" -#: gtk/gtkiconview.c:791 +#: ../gtk/gtkiconview.c:825 msgid "Opacity of the selection box" msgstr "Opakhet för markeringsrutan" -#: gtk/gtkimage.c:227 gtk/gtkstatusicon.c:212 +#: ../gtk/gtkimage.c:233 +#: ../gtk/gtkstatusicon.c:212 msgid "Pixbuf" msgstr "Pixbuf" -#: gtk/gtkimage.c:228 gtk/gtkstatusicon.c:213 +#: ../gtk/gtkimage.c:234 +#: ../gtk/gtkstatusicon.c:213 msgid "A GdkPixbuf to display" msgstr "En GdkPixbuf att visa" -#: gtk/gtkimage.c:235 gtk/gtkrecentmanager.c:290 gtk/gtkstatusicon.c:220 +#: ../gtk/gtkimage.c:241 +#: ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:220 msgid "Filename" msgstr "Filnamn" -#: gtk/gtkimage.c:236 gtk/gtkstatusicon.c:221 +#: ../gtk/gtkimage.c:242 +#: ../gtk/gtkstatusicon.c:221 msgid "Filename to load and display" msgstr "Filnamn att läsa in och visa" -#: gtk/gtkimage.c:245 gtk/gtkstatusicon.c:229 +#: ../gtk/gtkimage.c:251 +#: ../gtk/gtkstatusicon.c:229 msgid "Stock ID for a stock image to display" msgstr "Standard-ID för en standardbild att visa" -#: gtk/gtkimage.c:252 +#: ../gtk/gtkimage.c:258 msgid "Icon set" msgstr "Ikonsamling" -#: gtk/gtkimage.c:253 +#: ../gtk/gtkimage.c:259 msgid "Icon set to display" msgstr "Ikonsamling att visa" -#: gtk/gtkimage.c:260 gtk/gtkscalebutton.c:230 gtk/gtktoolbar.c:494 -#: gtk/gtktoolpalette.c:1003 +#: ../gtk/gtkimage.c:266 +#: ../gtk/gtkscalebutton.c:230 +#: ../gtk/gtktoolbar.c:519 +#: ../gtk/gtktoolpalette.c:1030 msgid "Icon size" msgstr "Ikonstorlek" -#: gtk/gtkimage.c:261 +#: ../gtk/gtkimage.c:267 msgid "Symbolic size to use for stock icon, icon set or named icon" -msgstr "" -"Symbolisk storlek att använda för standardikon, ikonsamling eller namngiven " -"ikon" +msgstr "Symbolisk storlek att använda för standardikon, ikonsamling eller namngiven ikon" -#: gtk/gtkimage.c:277 +#: ../gtk/gtkimage.c:283 msgid "Pixel size" msgstr "Bildpunktsstorlek" -#: gtk/gtkimage.c:278 +#: ../gtk/gtkimage.c:284 msgid "Pixel size to use for named icon" msgstr "Bildpunktsstorlek att använda för namngiven ikon" -#: gtk/gtkimage.c:286 +#: ../gtk/gtkimage.c:292 msgid "Animation" msgstr "Animering" -#: gtk/gtkimage.c:287 +#: ../gtk/gtkimage.c:293 msgid "GdkPixbufAnimation to display" msgstr "GdkPixbufAnimation att visa" -#: gtk/gtkimage.c:327 gtk/gtkstatusicon.c:260 +#: ../gtk/gtkimage.c:333 +#: ../gtk/gtkstatusicon.c:260 msgid "Storage type" msgstr "Lagringstyp" -#: gtk/gtkimage.c:328 gtk/gtkstatusicon.c:261 +#: ../gtk/gtkimage.c:334 +#: ../gtk/gtkstatusicon.c:261 msgid "The representation being used for image data" msgstr "Representationen som används för bilddata" -#: gtk/gtkimagemenuitem.c:139 +#: ../gtk/gtkimagemenuitem.c:150 msgid "Child widget to appear next to the menu text" msgstr "Bildwidget att visa vid sidan om menytexten" -#: gtk/gtkimagemenuitem.c:154 +#: ../gtk/gtkimagemenuitem.c:165 msgid "Whether to use the label text to create a stock menu item" -msgstr "" -"Huruvida text i etiketten ska användas för att skapa ett standardmenyobjekt" +msgstr "Huruvida text i etiketten ska användas för att skapa ett standardmenyobjekt" -#: gtk/gtkimagemenuitem.c:187 gtk/gtkmenu.c:540 +#: ../gtk/gtkimagemenuitem.c:198 +#: ../gtk/gtkmenu.c:534 msgid "Accel Group" msgstr "Genvägsgrupp" -#: gtk/gtkimagemenuitem.c:188 +#: ../gtk/gtkimagemenuitem.c:199 msgid "The Accel Group to use for stock accelerator keys" msgstr "Genvägsgruppen att använda för standardsnabbtangenter" -#: gtk/gtkimagemenuitem.c:193 -msgid "Show menu images" -msgstr "Visa menybilder" - -#: gtk/gtkimagemenuitem.c:194 -msgid "Whether images should be shown in menus" -msgstr "Huruvida bilder ska visas i menyer" - -#: gtk/gtkinfobar.c:375 gtk/gtkmessagedialog.c:201 +#: ../gtk/gtkinfobar.c:379 +#: ../gtk/gtkmessagedialog.c:201 msgid "Message Type" msgstr "Meddelandetyp" -#: gtk/gtkinfobar.c:376 gtk/gtkmessagedialog.c:202 +#: ../gtk/gtkinfobar.c:380 +#: ../gtk/gtkmessagedialog.c:202 msgid "The type of message" msgstr "Typen av meddelande" -#: gtk/gtkinfobar.c:431 +#: ../gtk/gtkinfobar.c:435 msgid "Width of border around the content area" msgstr "Bredd på kanten runt innehållsområdet" -#: gtk/gtkinfobar.c:448 +#: ../gtk/gtkinfobar.c:452 msgid "Spacing between elements of the area" msgstr "Utrymme mellan elementen i området" -#: gtk/gtkinfobar.c:480 +#: ../gtk/gtkinfobar.c:484 msgid "Width of border around the action area" msgstr "Bredd på kanten runt åtgärdsområdet" # Se http://bugzilla.gnome.org/show_bug.cgi?id=148437 -- detta ska vara # "skärm" -#: gtk/gtkinvisible.c:89 gtk/gtkmountoperation.c:175 gtk/gtkstatusicon.c:279 -#: gtk/gtkwindow.c:693 +#: ../gtk/gtkinvisible.c:90 +#: ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:279 +#: ../gtk/gtkwindow.c:730 msgid "Screen" msgstr "Skärm" -#: gtk/gtkinvisible.c:90 gtk/gtkwindow.c:694 +#: ../gtk/gtkinvisible.c:91 +#: ../gtk/gtkwindow.c:731 msgid "The screen where this window will be displayed" msgstr "Den skärm där detta fönster kommer att visas" -#: gtk/gtklabel.c:550 +#: ../gtk/gtklabel.c:568 msgid "The text of the label" msgstr "Texten på etiketten" -#: gtk/gtklabel.c:557 +#: ../gtk/gtklabel.c:575 msgid "A list of style attributes to apply to the text of the label" msgstr "En lista med stilattribut att tillämpa på texten i etiketten" -#: gtk/gtklabel.c:578 gtk/gtktexttag.c:335 gtk/gtktextview.c:685 +#: ../gtk/gtklabel.c:596 +#: ../gtk/gtktexttag.c:335 +#: ../gtk/gtktextview.c:701 msgid "Justification" msgstr "Justering" -#: gtk/gtklabel.c:579 -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 " -"GtkMisc::xalign for that" -msgstr "" -"Justering av raderna i etikettens text relativt varandra. Detta påverkar " -"INTE justeringen av etiketten inom dess allokering. Se GtkMisc::xalign för " -"det" +#: ../gtk/gtklabel.c:597 +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 GtkMisc::xalign for that" +msgstr "Justering av raderna i etikettens text relativt varandra. Detta påverkar INTE justeringen av etiketten inom dess allokering. Se GtkMisc::xalign för det" -#: gtk/gtklabel.c:587 +#: ../gtk/gtklabel.c:605 msgid "Pattern" msgstr "Mönster" -#: gtk/gtklabel.c:588 -msgid "" -"A string with _ characters in positions correspond to characters in the text " -"to underline" -msgstr "" -"En sträng med \"_\"-tecken i positioner som motsvarar tecken i texten som " -"ska understrykas" +#: ../gtk/gtklabel.c:606 +msgid "A string with _ characters in positions correspond to characters in the text to underline" +msgstr "En sträng med \"_\"-tecken i positioner som motsvarar tecken i texten som ska understrykas" -#: gtk/gtklabel.c:595 +#: ../gtk/gtklabel.c:613 msgid "Line wrap" msgstr "Radbryt" -#: gtk/gtklabel.c:596 +#: ../gtk/gtklabel.c:614 msgid "If set, wrap lines if the text becomes too wide" msgstr "Om detta är angivet kommer texten att radbrytas om den blir för bred" -#: gtk/gtklabel.c:611 +#: ../gtk/gtklabel.c:629 msgid "Line wrap mode" msgstr "Radbrytsläge" -#: gtk/gtklabel.c:612 +#: ../gtk/gtklabel.c:630 msgid "If wrap is set, controls how linewrapping is done" msgstr "Om brytning är inställd, kontrollera hur radbrytning hanteras" -#: gtk/gtklabel.c:619 +#: ../gtk/gtklabel.c:637 msgid "Selectable" msgstr "Markerbar" -#: gtk/gtklabel.c:620 +#: ../gtk/gtklabel.c:638 msgid "Whether the label text can be selected with the mouse" msgstr "Huruvida texten i etiketten kan markeras med musen" -#: gtk/gtklabel.c:626 +#: ../gtk/gtklabel.c:644 msgid "Mnemonic key" msgstr "Snabbtangent" -#: gtk/gtklabel.c:627 +#: ../gtk/gtklabel.c:645 msgid "The mnemonic accelerator key for this label" msgstr "Snabbtangenten för denna etikett" -#: gtk/gtklabel.c:635 +#: ../gtk/gtklabel.c:653 msgid "Mnemonic widget" msgstr "Snabbtangentswidget" -#: gtk/gtklabel.c:636 +#: ../gtk/gtklabel.c:654 msgid "The widget to be activated when the label's mnemonic key is pressed" msgstr "Den widget som ska aktiveras då etikettens snabbtangent trycks ned" -#: gtk/gtklabel.c:682 -msgid "" -"The preferred place to ellipsize the string, if the label does not have " -"enough room to display the entire string" -msgstr "" -"Den föredragna platsen att elliptisera strängen, om etiketten inte har " -"tillräckligt med utrymme för att visa hela strängen" +#: ../gtk/gtklabel.c:700 +msgid "The preferred place to ellipsize the string, if the label does not have enough room to display the entire string" +msgstr "Den föredragna platsen att elliptisera strängen, om etiketten inte har tillräckligt med utrymme för att visa hela strängen" -#: gtk/gtklabel.c:723 +#: ../gtk/gtklabel.c:741 msgid "Single Line Mode" msgstr "Enkelradsläge" -#: gtk/gtklabel.c:724 +#: ../gtk/gtklabel.c:742 msgid "Whether the label is in single line mode" msgstr "Huruvida etiketten är i enkelradsläge" -#: gtk/gtklabel.c:741 +#: ../gtk/gtklabel.c:759 msgid "Angle" msgstr "Vinkel" -#: gtk/gtklabel.c:742 +#: ../gtk/gtklabel.c:760 msgid "Angle at which the label is rotated" msgstr "Vinkel som etiketten roteras" -#: gtk/gtklabel.c:764 +#: ../gtk/gtklabel.c:782 msgid "The desired maximum width of the label, in characters" msgstr "Den önskade maximala bredden på etiketten, i antal tecken" -#: gtk/gtklabel.c:782 +#: ../gtk/gtklabel.c:800 msgid "Track visited links" msgstr "Spåra besökta länkar" -#: gtk/gtklabel.c:783 +#: ../gtk/gtklabel.c:801 msgid "Whether visited links should be tracked" msgstr "Huruvida besökta länkar ska spåras" -#: gtk/gtklabel.c:904 -msgid "Whether to select the contents of a selectable label when it is focused" -msgstr "Huruvida innehållet av en valbar etikett väljs när den fokuseras" - -#: gtk/gtklayout.c:625 gtk/gtkviewport.c:142 -msgid "Horizontal adjustment" -msgstr "Horisontell justering" - -#: gtk/gtklayout.c:626 gtk/gtkscrolledwindow.c:244 -msgid "The GtkAdjustment for the horizontal position" -msgstr "GtkAdjustment på den horisontella positionen" - -#: gtk/gtklayout.c:633 gtk/gtkviewport.c:150 -msgid "Vertical adjustment" -msgstr "Vertikal justering" - -#: gtk/gtklayout.c:634 gtk/gtkscrolledwindow.c:251 -msgid "The GtkAdjustment for the vertical position" -msgstr "GtkAdjustment på den vertikala positionen" - -#: gtk/gtklayout.c:641 gtk/gtktreeviewcolumn.c:211 +#: ../gtk/gtklayout.c:659 +#: ../gtk/gtktreeviewcolumn.c:258 msgid "Width" msgstr "Bredd" -#: gtk/gtklayout.c:642 +#: ../gtk/gtklayout.c:660 msgid "The width of the layout" msgstr "Bredden på layouten" -#: gtk/gtklayout.c:650 +#: ../gtk/gtklayout.c:668 msgid "Height" msgstr "Höjd" -#: gtk/gtklayout.c:651 +#: ../gtk/gtklayout.c:669 msgid "The height of the layout" msgstr "Höjden på layouten" -#: gtk/gtklinkbutton.c:162 +#: ../gtk/gtklinkbutton.c:174 msgid "URI" msgstr "URI" -#: gtk/gtklinkbutton.c:163 +#: ../gtk/gtklinkbutton.c:175 msgid "The URI bound to this button" msgstr "Den URI som bundits till denna knapp" -#: gtk/gtklinkbutton.c:177 +#: ../gtk/gtklinkbutton.c:189 msgid "Visited" msgstr "Besökt" -#: gtk/gtklinkbutton.c:178 +#: ../gtk/gtklinkbutton.c:190 msgid "Whether this link has been visited." msgstr "Huruvida denna länk har besökts." -#: gtk/gtkmenubar.c:163 +#: ../gtk/gtkmenubar.c:171 msgid "Pack direction" msgstr "Packningsriktning" -#: gtk/gtkmenubar.c:164 +#: ../gtk/gtkmenubar.c:172 msgid "The pack direction of the menubar" msgstr "Packningsriktningen på menyraden" -#: gtk/gtkmenubar.c:180 +#: ../gtk/gtkmenubar.c:188 msgid "Child Pack direction" msgstr "Barnpackningsriktning" -#: gtk/gtkmenubar.c:181 +#: ../gtk/gtkmenubar.c:189 msgid "The child pack direction of the menubar" msgstr "Barnpackningsriktningen på menyraden" -#: gtk/gtkmenubar.c:190 +#: ../gtk/gtkmenubar.c:198 msgid "Style of bevel around the menubar" msgstr "Stil på avfasning runt menyraden" -#: gtk/gtkmenubar.c:197 gtk/gtktoolbar.c:544 +#: ../gtk/gtkmenubar.c:205 +#: ../gtk/gtktoolbar.c:569 msgid "Internal padding" msgstr "Intern utfyllnad" -#: gtk/gtkmenubar.c:198 +#: ../gtk/gtkmenubar.c:206 msgid "Amount of border space between the menubar shadow and the menu items" msgstr "Mängd kantutrymme mellan skuggan på menyraden och menyobjekten" -#: gtk/gtkmenubar.c:205 -msgid "Delay before drop down menus appear" -msgstr "Fördröjning innan utfällningsmenyer visas" - -#: gtk/gtkmenubar.c:206 -msgid "Delay before the submenus of a menu bar appear" -msgstr "Fördröjning innan undermenyer till en menyrad visas" - -#: gtk/gtkmenu.c:526 +#: ../gtk/gtkmenu.c:520 msgid "The currently selected menu item" msgstr "Det för närvarande markerade menyobjektet" -#: gtk/gtkmenu.c:541 +#: ../gtk/gtkmenu.c:535 msgid "The accel group holding accelerators for the menu" msgstr "Genvägsgruppen som innehåller genvägar för menyn" -#: gtk/gtkmenu.c:555 gtk/gtkmenuitem.c:318 +#: ../gtk/gtkmenu.c:549 +#: ../gtk/gtkmenuitem.c:313 msgid "Accel Path" msgstr "Genvägssökväg" -#: gtk/gtkmenu.c:556 +#: ../gtk/gtkmenu.c:550 msgid "An accel path used to conveniently construct accel paths of child items" -msgstr "" -"En genvägssökväg som använd för att bekvämt skapa genvägssökvägar för " -"barnobjekt" +msgstr "En genvägssökväg som använd för att bekvämt skapa genvägssökvägar för barnobjekt" -#: gtk/gtkmenu.c:572 +#: ../gtk/gtkmenu.c:566 msgid "Attach Widget" msgstr "Fäst widget" -#: gtk/gtkmenu.c:573 +#: ../gtk/gtkmenu.c:567 msgid "The widget the menu is attached to" msgstr "Widgeten som menyn är fäst till" -#: gtk/gtkmenu.c:581 -msgid "" -"A title that may be displayed by the window manager when this menu is torn-" -"off" +#: ../gtk/gtkmenu.c:575 +msgid "A title that may be displayed by the window manager when this menu is torn-off" msgstr "En titel som kan visas av fönsterhanteraren då denna meny tas loss" -#: gtk/gtkmenu.c:595 +#: ../gtk/gtkmenu.c:589 msgid "Tearoff State" msgstr "Löstagbarhetstillstånd" -#: gtk/gtkmenu.c:596 +#: ../gtk/gtkmenu.c:590 msgid "A boolean that indicates whether the menu is torn-off" msgstr "Ett booleskt värde som indikerar huruvida menyn har tagits loss" -#: gtk/gtkmenu.c:610 +#: ../gtk/gtkmenu.c:604 msgid "Monitor" msgstr "Skärm" -#: gtk/gtkmenu.c:611 +#: ../gtk/gtkmenu.c:605 msgid "The monitor the menu will be popped up on" msgstr "Skärmen som menyn ska visas på" -#: gtk/gtkmenu.c:617 +#: ../gtk/gtkmenu.c:611 msgid "Vertical Padding" msgstr "Vertikal utfyllnad" -#: gtk/gtkmenu.c:618 +#: ../gtk/gtkmenu.c:612 msgid "Extra space at the top and bottom of the menu" msgstr "Extra utrymme överst och nederst i menyn" -#: gtk/gtkmenu.c:640 +#: ../gtk/gtkmenu.c:634 msgid "Reserve Toggle Size" msgstr "Reservera växlingsstorlek" -#: gtk/gtkmenu.c:641 -msgid "" -"A boolean that indicates whether the menu reserves space for toggles and " -"icons" -msgstr "" -"Ett booleskt värde som indikerar huruvida menyn reserverar utrymme för " -"växlingar och ikoner" +#: ../gtk/gtkmenu.c:635 +msgid "A boolean that indicates whether the menu reserves space for toggles and icons" +msgstr "Ett booleskt värde som indikerar huruvida menyn reserverar utrymme för växlingar och ikoner" -#: gtk/gtkmenu.c:647 +#: ../gtk/gtkmenu.c:641 msgid "Horizontal Padding" msgstr "Horisontell utfyllnad" -#: gtk/gtkmenu.c:648 +#: ../gtk/gtkmenu.c:642 msgid "Extra space at the left and right edges of the menu" msgstr "Extra utrymme på vänstra och högra kanterna av menyn" -#: gtk/gtkmenu.c:656 +#: ../gtk/gtkmenu.c:650 msgid "Vertical Offset" msgstr "Vertikalt avstånd" -#: gtk/gtkmenu.c:657 -msgid "" -"When the menu is a submenu, position it this number of pixels offset " -"vertically" -msgstr "" -"Positionera menyn med vertikalt avstånd i detta antal bildpunkter när den är " -"en undermeny" +#: ../gtk/gtkmenu.c:651 +msgid "When the menu is a submenu, position it this number of pixels offset vertically" +msgstr "Positionera menyn med vertikalt avstånd i detta antal bildpunkter när den är en undermeny" -#: gtk/gtkmenu.c:665 +#: ../gtk/gtkmenu.c:659 msgid "Horizontal Offset" msgstr "Horisontellt avstånd" -#: gtk/gtkmenu.c:666 -msgid "" -"When the menu is a submenu, position it this number of pixels offset " -"horizontally" -msgstr "" -"Positionera menyn med horisontellt avstånd i detta antal bildpunkter när den " -"är en undermeny" +#: ../gtk/gtkmenu.c:660 +msgid "When the menu is a submenu, position it this number of pixels offset horizontally" +msgstr "Positionera menyn med horisontellt avstånd i detta antal bildpunkter när den är en undermeny" -#: gtk/gtkmenu.c:674 +#: ../gtk/gtkmenu.c:668 msgid "Double Arrows" msgstr "Dubbelpilar" -#: gtk/gtkmenu.c:675 +#: ../gtk/gtkmenu.c:669 msgid "When scrolling, always show both arrows." msgstr "Visa alltid båda pilarna vid rullning." -#: gtk/gtkmenu.c:688 +#: ../gtk/gtkmenu.c:682 msgid "Arrow Placement" msgstr "Pilplacering" -#: gtk/gtkmenu.c:689 +#: ../gtk/gtkmenu.c:683 msgid "Indicates where scroll arrows should be placed" msgstr "Indikerar var rullningspilar ska placeras" -#: gtk/gtkmenu.c:697 +#: ../gtk/gtkmenu.c:691 msgid "Left Attach" msgstr "Vänsterfäste" -#: gtk/gtkmenu.c:698 gtk/gtktable.c:193 +#: ../gtk/gtkmenu.c:692 +#: ../gtk/gtktable.c:202 msgid "The column number to attach the left side of the child to" msgstr "Det kolumnnummer som vänster sida av barnet ska fästas vid" -#: gtk/gtkmenu.c:705 +#: ../gtk/gtkmenu.c:699 msgid "Right Attach" msgstr "Högerfäste" -#: gtk/gtkmenu.c:706 +#: ../gtk/gtkmenu.c:700 msgid "The column number to attach the right side of the child to" msgstr "Det kolumnnummer som höger sida av barnet ska fästas vid" -#: gtk/gtkmenu.c:713 +#: ../gtk/gtkmenu.c:707 msgid "Top Attach" msgstr "Övre fäste" -#: gtk/gtkmenu.c:714 +#: ../gtk/gtkmenu.c:708 msgid "The row number to attach the top of the child to" msgstr "Det radnummer som överkanten på barnet ska fästas vid" -#: gtk/gtkmenu.c:721 +#: ../gtk/gtkmenu.c:715 msgid "Bottom Attach" msgstr "Nedre fäste" -#: gtk/gtkmenu.c:722 gtk/gtktable.c:214 +#: ../gtk/gtkmenu.c:716 +#: ../gtk/gtktable.c:223 msgid "The row number to attach the bottom of the child to" msgstr "Det radnummer som nederkanten på barnet ska fästas vid" -#: gtk/gtkmenu.c:736 +#: ../gtk/gtkmenu.c:730 msgid "Arbitrary constant to scale down the size of the scroll arrow" msgstr "Godtycklig konstant för att skala ned storleken för rullningspilen" -#: gtk/gtkmenu.c:823 -msgid "Can change accelerators" -msgstr "Kan ändra snabbtangenter" - -#: gtk/gtkmenu.c:824 -msgid "" -"Whether menu accelerators can be changed by pressing a key over the menu item" -msgstr "" -"Huruvida menysnabbtangenter kan ändras genom att en tangent trycks ovanför " -"menyobjektet" - -#: gtk/gtkmenu.c:829 -msgid "Delay before submenus appear" -msgstr "Fördröjning innan undermenyer visas" - -#: gtk/gtkmenu.c:830 -msgid "" -"Minimum time the pointer must stay over a menu item before the submenu appear" -msgstr "" -"Minsta tid som pekaren måste stanna över ett menyobjekt innan undermenyn " -"visas" - -#: gtk/gtkmenu.c:837 -msgid "Delay before hiding a submenu" -msgstr "Fördröjning innan en undermeny döljs" - -#: gtk/gtkmenu.c:838 -msgid "" -"The time before hiding a submenu when the pointer is moving towards the " -"submenu" -msgstr "Tiden innan en undermeny ska döljas när pekaren rör sig mot undermenyn" - -#: gtk/gtkmenuitem.c:285 +#: ../gtk/gtkmenuitem.c:281 msgid "Right Justified" msgstr "Högerjusterad" -#: gtk/gtkmenuitem.c:286 -msgid "" -"Sets whether the menu item appears justified at the right side of a menu bar" -msgstr "" -"Ställer in huruvida menyobjektet visas justerat på höger sida av en menyrad" +#: ../gtk/gtkmenuitem.c:282 +msgid "Sets whether the menu item appears justified at the right side of a menu bar" +msgstr "Ställer in huruvida menyobjektet visas justerat på höger sida av en menyrad" -#: gtk/gtkmenuitem.c:300 +#: ../gtk/gtkmenuitem.c:296 msgid "Submenu" msgstr "Undermeny" -#: gtk/gtkmenuitem.c:301 +#: ../gtk/gtkmenuitem.c:297 msgid "The submenu attached to the menu item, or NULL if it has none" msgstr "Undermenyn kopplad till menyobjektet, eller NULL om den inte har någon" -#: gtk/gtkmenuitem.c:319 +#: ../gtk/gtkmenuitem.c:314 msgid "Sets the accelerator path of the menu item" msgstr "Ställer in genvägssökvägen till menyobjektet" -#: gtk/gtkmenuitem.c:334 +#: ../gtk/gtkmenuitem.c:329 msgid "The text for the child label" msgstr "Texten på barnetiketten" -#: gtk/gtkmenuitem.c:397 +#: ../gtk/gtkmenuitem.c:392 msgid "Amount of space used up by arrow, relative to the menu item's font size" -msgstr "" -"Mängd utrymme som används av pil, relativ till menyobjektets typsnittsstorlek" +msgstr "Mängd utrymme som används av pil, relativ till menyobjektets typsnittsstorlek" -#: gtk/gtkmenuitem.c:410 +#: ../gtk/gtkmenuitem.c:405 msgid "Width in Characters" msgstr "Bredd i antal tecken" -#: gtk/gtkmenuitem.c:411 +#: ../gtk/gtkmenuitem.c:406 msgid "The minimum desired width of the menu item in characters" msgstr "Den kortaste bredden på menyobjektet, i antal tecken" -#: gtk/gtkmenushell.c:379 +#: ../gtk/gtkmenushell.c:362 msgid "Take Focus" msgstr "Ta fokus" -#: gtk/gtkmenushell.c:380 +#: ../gtk/gtkmenushell.c:363 msgid "A boolean that determines whether the menu grabs the keyboard focus" msgstr "Ett booleskt värde som avgör huruvida menyn tar tangentbordsfokuset" -#: gtk/gtkmenutoolbutton.c:246 +#: ../gtk/gtkmenutoolbutton.c:246 msgid "Menu" msgstr "Meny" -#: gtk/gtkmenutoolbutton.c:247 +#: ../gtk/gtkmenutoolbutton.c:247 msgid "The dropdown menu" msgstr "Nedfällningsmenyn" -#: gtk/gtkmessagedialog.c:184 +#: ../gtk/gtkmessagedialog.c:184 msgid "Image/label border" msgstr "Bild-/etikettkant" -#: gtk/gtkmessagedialog.c:185 +#: ../gtk/gtkmessagedialog.c:185 msgid "Width of border around the label and image in the message dialog" msgstr "Bredd på ramen runt etiketten och bilden i meddelandedialogen" -#: gtk/gtkmessagedialog.c:209 +#: ../gtk/gtkmessagedialog.c:209 msgid "Message Buttons" msgstr "Meddelandeknappar" -#: gtk/gtkmessagedialog.c:210 +#: ../gtk/gtkmessagedialog.c:210 msgid "The buttons shown in the message dialog" msgstr "Knapparna som visas i meddelandedialogen" -#: gtk/gtkmessagedialog.c:227 +#: ../gtk/gtkmessagedialog.c:227 msgid "The primary text of the message dialog" msgstr "Primära texten för meddelandedialogen" -#: gtk/gtkmessagedialog.c:242 +#: ../gtk/gtkmessagedialog.c:242 msgid "Use Markup" msgstr "Använd markup" -#: gtk/gtkmessagedialog.c:243 +#: ../gtk/gtkmessagedialog.c:243 msgid "The primary text of the title includes Pango markup." msgstr "Primära texten för titeln inkluderar Pango-markup." -#: gtk/gtkmessagedialog.c:257 +#: ../gtk/gtkmessagedialog.c:257 msgid "Secondary Text" msgstr "Sekundär text" -#: gtk/gtkmessagedialog.c:258 +#: ../gtk/gtkmessagedialog.c:258 msgid "The secondary text of the message dialog" msgstr "Sekundära texten för meddelandedialogen" -#: gtk/gtkmessagedialog.c:273 +#: ../gtk/gtkmessagedialog.c:273 msgid "Use Markup in secondary" msgstr "Använd markup i sekundär" -#: gtk/gtkmessagedialog.c:274 +#: ../gtk/gtkmessagedialog.c:274 msgid "The secondary text includes Pango markup." msgstr "Sekundär text som inkluderar Pango-markup." -#: gtk/gtkmessagedialog.c:288 +#: ../gtk/gtkmessagedialog.c:288 msgid "Image" msgstr "Bild" -#: gtk/gtkmessagedialog.c:289 +#: ../gtk/gtkmessagedialog.c:289 msgid "The image" msgstr "Bilden" -#: gtk/gtkmessagedialog.c:305 +#: ../gtk/gtkmessagedialog.c:305 msgid "Message area" msgstr "Meddelandeyta" -#: gtk/gtkmessagedialog.c:306 +#: ../gtk/gtkmessagedialog.c:306 msgid "GtkVBox that holds the dialog's primary and secondary labels" msgstr "GtkVBox som innehåller dialogrutans primära och sekundära etiketter" -#: gtk/gtkmisc.c:91 +#: ../gtk/gtkmisc.c:91 msgid "Y align" msgstr "Y-justering" -#: gtk/gtkmisc.c:92 +#: ../gtk/gtkmisc.c:92 msgid "The vertical alignment, from 0 (top) to 1 (bottom)" msgstr "Vertikal justering, från 0 (överst) till 1 (nederst)" -#: gtk/gtkmisc.c:101 +#: ../gtk/gtkmisc.c:101 msgid "X pad" msgstr "X-utfyllnad" -#: gtk/gtkmisc.c:102 -msgid "" -"The amount of space to add on the left and right of the widget, in pixels" -msgstr "" -"Mängden utrymme att lägga till på vänster och höger sida, i bildpunkter" +#: ../gtk/gtkmisc.c:102 +msgid "The amount of space to add on the left and right of the widget, in pixels" +msgstr "Mängden utrymme att lägga till på vänster och höger sida, i bildpunkter" -#: gtk/gtkmisc.c:111 +#: ../gtk/gtkmisc.c:111 msgid "Y pad" msgstr "Y-utfyllnad" -#: gtk/gtkmisc.c:112 -msgid "" -"The amount of space to add on the top and bottom of the widget, in pixels" -msgstr "" -"Mängden utrymme att lägga till på vänster och höger sida, i bildpunkter" +#: ../gtk/gtkmisc.c:112 +msgid "The amount of space to add on the top and bottom of the widget, in pixels" +msgstr "Mängden utrymme att lägga till på vänster och höger sida, i bildpunkter" -#: gtk/gtkmountoperation.c:159 +#: ../gtk/gtkmountoperation.c:159 msgid "Parent" msgstr "Förälder" -#: gtk/gtkmountoperation.c:160 +#: ../gtk/gtkmountoperation.c:160 msgid "The parent window" msgstr "Föräldrafönstret" -#: gtk/gtkmountoperation.c:167 +#: ../gtk/gtkmountoperation.c:167 msgid "Is Showing" msgstr "Visar" -#: gtk/gtkmountoperation.c:168 +#: ../gtk/gtkmountoperation.c:168 msgid "Are we showing a dialog" msgstr "Visar vi en dialogruta" -#: gtk/gtkmountoperation.c:176 +#: ../gtk/gtkmountoperation.c:176 msgid "The screen where this window will be displayed." msgstr "Den skärm där detta fönster kommer att visas." -#: gtk/gtknotebook.c:595 +#: ../gtk/gtknotebook.c:692 msgid "Page" msgstr "Sida" -#: gtk/gtknotebook.c:596 +#: ../gtk/gtknotebook.c:693 msgid "The index of the current page" msgstr "Indexet för den aktuella sidan" -#: gtk/gtknotebook.c:604 +#: ../gtk/gtknotebook.c:701 msgid "Tab Position" msgstr "Flikposition" -#: gtk/gtknotebook.c:605 +#: ../gtk/gtknotebook.c:702 msgid "Which side of the notebook holds the tabs" msgstr "Vilken sida på flikhäftet som har flikarna" -#: gtk/gtknotebook.c:612 +#: ../gtk/gtknotebook.c:709 msgid "Show Tabs" msgstr "Visa flikar" -#: gtk/gtknotebook.c:613 -#, fuzzy +#: ../gtk/gtknotebook.c:710 msgid "Whether tabs should be shown" -msgstr "Huruvida flikar ska visas eller inte" +msgstr "Huruvida flikar ska visas" -#: gtk/gtknotebook.c:619 +#: ../gtk/gtknotebook.c:716 msgid "Show Border" msgstr "Visa ram" -#: gtk/gtknotebook.c:620 -#, fuzzy +#: ../gtk/gtknotebook.c:717 msgid "Whether the border should be shown" -msgstr "Huruvida ramen ska visas eller inte" +msgstr "Huruvida ramen ska visas" -#: gtk/gtknotebook.c:626 +#: ../gtk/gtknotebook.c:723 msgid "Scrollable" msgstr "Rullningsbar" -#: gtk/gtknotebook.c:627 +#: ../gtk/gtknotebook.c:724 msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" -msgstr "" -"Om SANT kommer rullningspilar att läggas till om det finns fler flikar än " -"vad som ryms" +msgstr "Om SANT kommer rullningspilar att läggas till om det finns fler flikar än vad som ryms" -#: gtk/gtknotebook.c:633 +#: ../gtk/gtknotebook.c:730 msgid "Enable Popup" msgstr "Använd popupmeny" -#: gtk/gtknotebook.c:634 -msgid "" -"If TRUE, pressing the right mouse button on the notebook pops up a menu that " -"you can use to go to a page" -msgstr "" -"Om SANT kommer ett tryck på höger musknapp på flikhäftet att visa en " -"popupmeny som du kan använda för att gå till en sida" +#: ../gtk/gtknotebook.c:731 +msgid "If TRUE, pressing the right mouse button on the notebook pops up a menu that you can use to go to a page" +msgstr "Om SANT kommer ett tryck på höger musknapp på flikhäftet att visa en popupmeny som du kan använda för att gå till en sida" -#: gtk/gtknotebook.c:648 -#, fuzzy +#: ../gtk/gtknotebook.c:745 msgid "Group Name" -msgstr "Grupp-id" +msgstr "Gruppnamn" -#: gtk/gtknotebook.c:649 +#: ../gtk/gtknotebook.c:746 #, fuzzy msgid "Group name for tab drag and drop" msgstr "Grupp för flikarnas drag-och-släpp" -#: gtk/gtknotebook.c:656 +#: ../gtk/gtknotebook.c:753 msgid "Tab label" msgstr "Fliketikett" -#: gtk/gtknotebook.c:657 +#: ../gtk/gtknotebook.c:754 msgid "The string displayed on the child's tab label" msgstr "Strängen som visas på barnets fliketikett" -#: gtk/gtknotebook.c:663 +#: ../gtk/gtknotebook.c:760 msgid "Menu label" msgstr "Menyetikett" -#: gtk/gtknotebook.c:664 +#: ../gtk/gtknotebook.c:761 msgid "The string displayed in the child's menu entry" msgstr "Strängen som visas i barnets menyobjekt" -#: gtk/gtknotebook.c:677 +#: ../gtk/gtknotebook.c:774 msgid "Tab expand" msgstr "Flikexpandering" -#: gtk/gtknotebook.c:678 -#, fuzzy +#: ../gtk/gtknotebook.c:775 msgid "Whether to expand the child's tab" -msgstr "Huruvida barnets flik ska expanderas eller inte" +msgstr "Huruvida barnets flik ska expanderas" -#: gtk/gtknotebook.c:684 +#: ../gtk/gtknotebook.c:781 msgid "Tab fill" msgstr "Flikfyllning" -#: gtk/gtknotebook.c:685 -#, fuzzy +#: ../gtk/gtknotebook.c:782 msgid "Whether the child's tab should fill the allocated area" -msgstr "Huruvida barnets flik ska fylla det allokerade området eller inte" +msgstr "Huruvida barnets flik ska fylla det allokerade området" -#: gtk/gtknotebook.c:691 +#: ../gtk/gtknotebook.c:795 msgid "Tab pack type" msgstr "Flikpackningstyp" -#: gtk/gtknotebook.c:698 +#: ../gtk/gtknotebook.c:802 msgid "Tab reorderable" msgstr "Omarrangeringsbar flik" -#: gtk/gtknotebook.c:699 -#, fuzzy +#: ../gtk/gtknotebook.c:803 msgid "Whether the tab is reorderable by user action" -msgstr "Huruvida fliken är omarrangeringsbar av en användaråtgärd eller inte" +msgstr "Huruvida fliken är omarrangeringsbar av en användaråtgärd" -#: gtk/gtknotebook.c:705 +#: ../gtk/gtknotebook.c:809 msgid "Tab detachable" msgstr "Flik löstagbar" -#: gtk/gtknotebook.c:706 +#: ../gtk/gtknotebook.c:810 msgid "Whether the tab is detachable" msgstr "Huruvida fliken är möjlig att koppla loss." -#: gtk/gtknotebook.c:721 gtk/gtkscrollbar.c:80 +#: ../gtk/gtknotebook.c:825 +#: ../gtk/gtkscrollbar.c:102 msgid "Secondary backward stepper" msgstr "Sekundär baklängesstegare" -#: gtk/gtknotebook.c:722 -msgid "" -"Display a second backward arrow button on the opposite end of the tab area" +#: ../gtk/gtknotebook.c:826 +msgid "Display a second backward arrow button on the opposite end of the tab area" msgstr "Visa en andra bakåtpil-knapp på motsatt sida av flikområdet" -#: gtk/gtknotebook.c:737 gtk/gtkscrollbar.c:87 +#: ../gtk/gtknotebook.c:841 +#: ../gtk/gtkscrollbar.c:109 msgid "Secondary forward stepper" msgstr "Sekundär framlängesstegare" -#: gtk/gtknotebook.c:738 -msgid "" -"Display a second forward arrow button on the opposite end of the tab area" +#: ../gtk/gtknotebook.c:842 +msgid "Display a second forward arrow button on the opposite end of the tab area" msgstr "Visa en andra framåtpil-knapp på motsatt sida av flikområdet" -#: gtk/gtknotebook.c:752 gtk/gtkscrollbar.c:66 +#: ../gtk/gtknotebook.c:856 +#: ../gtk/gtkscrollbar.c:88 msgid "Backward stepper" msgstr "Baklängesstegare" -#: gtk/gtknotebook.c:753 gtk/gtkscrollbar.c:67 +#: ../gtk/gtknotebook.c:857 +#: ../gtk/gtkscrollbar.c:89 msgid "Display the standard backward arrow button" msgstr "Visa standardknappen med baklängespil" -#: gtk/gtknotebook.c:767 gtk/gtkscrollbar.c:73 +#: ../gtk/gtknotebook.c:871 +#: ../gtk/gtkscrollbar.c:95 msgid "Forward stepper" msgstr "Framåtstegare" -#: gtk/gtknotebook.c:768 gtk/gtkscrollbar.c:74 +#: ../gtk/gtknotebook.c:872 +#: ../gtk/gtkscrollbar.c:96 msgid "Display the standard forward arrow button" msgstr "Visa standardknappen med framåtpil" -#: gtk/gtknotebook.c:782 +#: ../gtk/gtknotebook.c:886 msgid "Tab overlap" msgstr "Fliköverlappning" -#: gtk/gtknotebook.c:783 +#: ../gtk/gtknotebook.c:887 msgid "Size of tab overlap area" msgstr "Storlek på fliköverlappningsområdet" -#: gtk/gtknotebook.c:798 +#: ../gtk/gtknotebook.c:902 msgid "Tab curvature" msgstr "Flikdeformering" -#: gtk/gtknotebook.c:799 +#: ../gtk/gtknotebook.c:903 msgid "Size of tab curvature" msgstr "Storlek på flikdeformering" -#: gtk/gtknotebook.c:815 +#: ../gtk/gtknotebook.c:919 msgid "Arrow spacing" msgstr "Pilutrymme" -#: gtk/gtknotebook.c:816 +#: ../gtk/gtknotebook.c:920 msgid "Scroll arrow spacing" msgstr "Utrymme för rullningspil" -#: gtk/gtkorientable.c:63 gtk/gtkstatusicon.c:319 gtk/gtktrayicon-x11.c:124 +#: ../gtk/gtkorientable.c:63 +#: ../gtk/gtkstatusicon.c:319 +#: ../gtk/gtktrayicon-x11.c:124 msgid "Orientation" msgstr "Orientering" -#: gtk/gtkorientable.c:64 +#: ../gtk/gtkorientable.c:64 msgid "The orientation of the orientable" msgstr "Orienteringen för orientable" -#: gtk/gtkpaned.c:271 -msgid "" -"Position of paned separator in pixels (0 means all the way to the left/top)" -msgstr "" -"Position på panelavgränsare i bildpunkter (0 betyder längst till vänster/" -"överst)" +#: ../gtk/gtkpaned.c:328 +msgid "Position of paned separator in pixels (0 means all the way to the left/top)" +msgstr "Position på panelavgränsare i bildpunkter (0 betyder längst till vänster/överst)" -#: gtk/gtkpaned.c:280 +#: ../gtk/gtkpaned.c:337 msgid "Position Set" msgstr "Inställd position" -#: gtk/gtkpaned.c:281 +#: ../gtk/gtkpaned.c:338 msgid "TRUE if the Position property should be used" msgstr "SANT om positionsegenskapen ska användas" -#: gtk/gtkpaned.c:287 +#: ../gtk/gtkpaned.c:344 msgid "Handle Size" msgstr "Storlek på handtag" -#: gtk/gtkpaned.c:288 +#: ../gtk/gtkpaned.c:345 msgid "Width of handle" msgstr "Bredd på handtag" -#: gtk/gtkpaned.c:304 +#: ../gtk/gtkpaned.c:361 msgid "Minimal Position" msgstr "Minimal position" -#: gtk/gtkpaned.c:305 +#: ../gtk/gtkpaned.c:362 msgid "Smallest possible value for the \"position\" property" msgstr "Minsta möjliga värde för egenskapen \"position\"" -#: gtk/gtkpaned.c:322 +#: ../gtk/gtkpaned.c:379 msgid "Maximal Position" msgstr "Maximal position" -#: gtk/gtkpaned.c:323 +#: ../gtk/gtkpaned.c:380 msgid "Largest possible value for the \"position\" property" msgstr "Största möjliga värde för egenskapen \"position\"" -#: gtk/gtkpaned.c:340 +#: ../gtk/gtkpaned.c:397 msgid "Resize" msgstr "Ändra storlek" -#: gtk/gtkpaned.c:341 +#: ../gtk/gtkpaned.c:398 msgid "If TRUE, the child expands and shrinks along with the paned widget" msgstr "Om SANT expanderar barnet och krymper tillsammans med panelwidgeten" -#: gtk/gtkpaned.c:356 +#: ../gtk/gtkpaned.c:413 msgid "Shrink" msgstr "Krymp" -#: gtk/gtkpaned.c:357 +#: ../gtk/gtkpaned.c:414 msgid "If TRUE, the child can be made smaller than its requisition" msgstr "Om SANT kan barnet göras mindre än dess begäran" -#: gtk/gtkplug.c:171 gtk/gtkstatusicon.c:303 +#: ../gtk/gtkplug.c:177 +#: ../gtk/gtkstatusicon.c:303 msgid "Embedded" msgstr "Inbäddad" -#: gtk/gtkplug.c:172 -#, fuzzy +#: ../gtk/gtkplug.c:178 msgid "Whether the plug is embedded" -msgstr "Huruvida pluggen är inbäddad eller inte" +msgstr "Huruvida pluggen är inbäddad" -#: gtk/gtkplug.c:186 +#: ../gtk/gtkplug.c:192 msgid "Socket Window" msgstr "Uttagsfönster" -#: gtk/gtkplug.c:187 +#: ../gtk/gtkplug.c:193 msgid "The window of the socket the plug is embedded in" msgstr "Fönstret för uttaget som pluggen är inbäddad i" -#: gtk/gtkprinter.c:126 +#: ../gtk/gtkprinter.c:126 msgid "Name of the printer" msgstr "Namn på skrivaren" -#: gtk/gtkprinter.c:132 +#: ../gtk/gtkprinter.c:132 msgid "Backend" msgstr "Bakände" -#: gtk/gtkprinter.c:133 +#: ../gtk/gtkprinter.c:133 msgid "Backend for the printer" msgstr "Bakände för skrivaren" -#: gtk/gtkprinter.c:139 +#: ../gtk/gtkprinter.c:139 msgid "Is Virtual" msgstr "Är virtuell" -#: gtk/gtkprinter.c:140 +#: ../gtk/gtkprinter.c:140 msgid "FALSE if this represents a real hardware printer" msgstr "FALSE om detta representerar en riktig hårdvaruskrivare" -#: gtk/gtkprinter.c:146 +#: ../gtk/gtkprinter.c:146 msgid "Accepts PDF" msgstr "Accepterar PDF" -#: gtk/gtkprinter.c:147 +#: ../gtk/gtkprinter.c:147 msgid "TRUE if this printer can accept PDF" msgstr "TRUE om denna skrivare kan ta emot PDF" -#: gtk/gtkprinter.c:153 +#: ../gtk/gtkprinter.c:153 msgid "Accepts PostScript" msgstr "Accepterar PostScript" -#: gtk/gtkprinter.c:154 +#: ../gtk/gtkprinter.c:154 msgid "TRUE if this printer can accept PostScript" msgstr "TRUE om denna skrivare kan ta emot PostScript" -#: gtk/gtkprinter.c:160 +#: ../gtk/gtkprinter.c:160 msgid "State Message" msgstr "Tillståndsmeddelande" -#: gtk/gtkprinter.c:161 +#: ../gtk/gtkprinter.c:161 msgid "String giving the current state of the printer" msgstr "Sträng som ger aktuellt tillstånd för skrivaren" -#: gtk/gtkprinter.c:167 +#: ../gtk/gtkprinter.c:167 msgid "Location" msgstr "Plats" -#: gtk/gtkprinter.c:168 +#: ../gtk/gtkprinter.c:168 msgid "The location of the printer" msgstr "Platsen för skrivaren" # Osäker. -#: gtk/gtkprinter.c:175 +#: ../gtk/gtkprinter.c:175 msgid "The icon name to use for the printer" msgstr "Ikonnamnet att använda för skrivaren" -#: gtk/gtkprinter.c:181 +#: ../gtk/gtkprinter.c:181 msgid "Job Count" msgstr "Jobbantal" -#: gtk/gtkprinter.c:182 +#: ../gtk/gtkprinter.c:182 msgid "Number of jobs queued in the printer" msgstr "Antalet jobb som finns i skrivarens kö" -#: gtk/gtkprinter.c:200 +#: ../gtk/gtkprinter.c:200 msgid "Paused Printer" msgstr "Pausad skrivare" -#: gtk/gtkprinter.c:201 +#: ../gtk/gtkprinter.c:201 msgid "TRUE if this printer is paused" msgstr "TRUE om denna skrivare är pausad" -#: gtk/gtkprinter.c:214 +#: ../gtk/gtkprinter.c:214 msgid "Accepting Jobs" msgstr "Accepterar jobb" -#: gtk/gtkprinter.c:215 +#: ../gtk/gtkprinter.c:215 msgid "TRUE if this printer is accepting new jobs" msgstr "TRUE om denna skrivare accepterar nya jobb" -#: gtk/gtkprinteroptionwidget.c:122 +#: ../gtk/gtkprinteroptionwidget.c:121 msgid "Source option" msgstr "Källalternativ" -#: gtk/gtkprinteroptionwidget.c:123 +#: ../gtk/gtkprinteroptionwidget.c:122 msgid "The PrinterOption backing this widget" msgstr "Den PrinterOption som står bakom denna widget" -#: gtk/gtkprintjob.c:116 +#: ../gtk/gtkprintjob.c:127 msgid "Title of the print job" msgstr "Titel på utskriftsjobbet" -#: gtk/gtkprintjob.c:124 +#: ../gtk/gtkprintjob.c:135 msgid "Printer" msgstr "Skrivare" -#: gtk/gtkprintjob.c:125 +#: ../gtk/gtkprintjob.c:136 msgid "Printer to print the job to" msgstr "Skrivare att skriva ut jobbet till" -#: gtk/gtkprintjob.c:133 +#: ../gtk/gtkprintjob.c:144 msgid "Settings" msgstr "Inställningar" -#: gtk/gtkprintjob.c:134 +#: ../gtk/gtkprintjob.c:145 msgid "Printer settings" msgstr "Skrivarinställningar" -#: gtk/gtkprintjob.c:142 gtk/gtkprintjob.c:143 gtk/gtkprintunixdialog.c:298 +#: ../gtk/gtkprintjob.c:153 +#: ../gtk/gtkprintjob.c:154 +#: ../gtk/gtkprintunixdialog.c:298 msgid "Page Setup" msgstr "Sidinställning" -#: gtk/gtkprintjob.c:151 gtk/gtkprintoperation.c:1133 +#: ../gtk/gtkprintjob.c:162 +#: ../gtk/gtkprintoperation.c:1133 msgid "Track Print Status" msgstr "Spåra utskriftsstatus" -#: gtk/gtkprintjob.c:152 -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." -msgstr "" -"TRUE om utskriftsjobbet ska fortsätta att skicka statusändrade signaler " -"efter att utskriftsdata har skickats till skrivaren eller utskriftsservern." +#: ../gtk/gtkprintjob.c:163 +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." +msgstr "TRUE om utskriftsjobbet ska fortsätta att skicka statusändrade signaler efter att utskriftsdata har skickats till skrivaren eller utskriftsservern." -#: gtk/gtkprintoperation.c:1005 +#: ../gtk/gtkprintoperation.c:1005 msgid "Default Page Setup" msgstr "Standardsidinställning" -#: gtk/gtkprintoperation.c:1006 +#: ../gtk/gtkprintoperation.c:1006 msgid "The GtkPageSetup used by default" msgstr "GtkPageSetup som används som standard" -#: gtk/gtkprintoperation.c:1024 gtk/gtkprintunixdialog.c:316 +#: ../gtk/gtkprintoperation.c:1024 +#: ../gtk/gtkprintunixdialog.c:316 msgid "Print Settings" msgstr "Utskriftsinställningar" -#: gtk/gtkprintoperation.c:1025 gtk/gtkprintunixdialog.c:317 +#: ../gtk/gtkprintoperation.c:1025 +#: ../gtk/gtkprintunixdialog.c:317 msgid "The GtkPrintSettings used for initializing the dialog" msgstr "GtkPrintSettings som används för att initiera dialogen" -#: gtk/gtkprintoperation.c:1043 +#: ../gtk/gtkprintoperation.c:1043 msgid "Job Name" msgstr "Jobbnamn" -#: gtk/gtkprintoperation.c:1044 +#: ../gtk/gtkprintoperation.c:1044 msgid "A string used for identifying the print job." msgstr "En sträng som används för att identifiera utskriftsjobbet." -#: gtk/gtkprintoperation.c:1068 +#: ../gtk/gtkprintoperation.c:1068 msgid "Number of Pages" msgstr "Antal sidor" -#: gtk/gtkprintoperation.c:1069 +#: ../gtk/gtkprintoperation.c:1069 msgid "The number of pages in the document." msgstr "Antalet sidor i dokumentet." -#: gtk/gtkprintoperation.c:1090 gtk/gtkprintunixdialog.c:306 +#: ../gtk/gtkprintoperation.c:1090 +#: ../gtk/gtkprintunixdialog.c:306 msgid "Current Page" msgstr "Aktuell sida" -#: gtk/gtkprintoperation.c:1091 gtk/gtkprintunixdialog.c:307 +#: ../gtk/gtkprintoperation.c:1091 +#: ../gtk/gtkprintunixdialog.c:307 msgid "The current page in the document" msgstr "Aktuella sidan i dokumentet" -#: gtk/gtkprintoperation.c:1112 +#: ../gtk/gtkprintoperation.c:1112 msgid "Use full page" msgstr "Använd hela sidan" -#: gtk/gtkprintoperation.c:1113 -msgid "" -"TRUE if the origin of the context should be at the corner of the page and " -"not the corner of the imageable area" -msgstr "" -"TRUE om sammanhangets ursprung bör vara hörnet av sidan och inte hörnet av " -"det bildmässiga området" +#: ../gtk/gtkprintoperation.c:1113 +msgid "TRUE if the origin of the context should be at the corner of the page and not the corner of the imageable area" +msgstr "TRUE om sammanhangets ursprung bör vara hörnet av sidan och inte hörnet av det bildmässiga området" -#: gtk/gtkprintoperation.c:1134 -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." -msgstr "" -"TRUE om utskriftsoperationen ska fortsätta att rapportera om statusen för " -"utskriftsjobbet efter att utskriftsdata har skickats till skrivaren eller " -"utskriftsservern." +#: ../gtk/gtkprintoperation.c:1134 +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." +msgstr "TRUE om utskriftsoperationen ska fortsätta att rapportera om statusen för utskriftsjobbet efter att utskriftsdata har skickats till skrivaren eller utskriftsservern." -#: gtk/gtkprintoperation.c:1151 +#: ../gtk/gtkprintoperation.c:1151 msgid "Unit" msgstr "Enhet" -#: gtk/gtkprintoperation.c:1152 +#: ../gtk/gtkprintoperation.c:1152 msgid "The unit in which distances can be measured in the context" msgstr "Enheten som avstånd kan mätas efter i sammanhanget" -#: gtk/gtkprintoperation.c:1169 +#: ../gtk/gtkprintoperation.c:1169 msgid "Show Dialog" msgstr "Visa dialog" -#: gtk/gtkprintoperation.c:1170 +#: ../gtk/gtkprintoperation.c:1170 msgid "TRUE if a progress dialog is shown while printing." msgstr "TRUE om en förloppsdialog visas vid utskrift." -#: gtk/gtkprintoperation.c:1193 +#: ../gtk/gtkprintoperation.c:1193 msgid "Allow Async" msgstr "Tillåt asynkront" -#: gtk/gtkprintoperation.c:1194 +#: ../gtk/gtkprintoperation.c:1194 msgid "TRUE if print process may run asynchronous." msgstr "TRUE om en utskriftsprocess kan köras asynkront." -#: gtk/gtkprintoperation.c:1216 gtk/gtkprintoperation.c:1217 +#: ../gtk/gtkprintoperation.c:1216 +#: ../gtk/gtkprintoperation.c:1217 msgid "Export filename" msgstr "Exportera filnamn" -#: gtk/gtkprintoperation.c:1231 +#: ../gtk/gtkprintoperation.c:1231 msgid "Status" msgstr "Status" -#: gtk/gtkprintoperation.c:1232 +#: ../gtk/gtkprintoperation.c:1232 msgid "The status of the print operation" msgstr "Statusen för utskriftsåtgärden" -#: gtk/gtkprintoperation.c:1252 +#: ../gtk/gtkprintoperation.c:1252 msgid "Status String" msgstr "Statussträng" -#: gtk/gtkprintoperation.c:1253 +#: ../gtk/gtkprintoperation.c:1253 msgid "A human-readable description of the status" msgstr "En läsbar beskrivning av statusen" -#: gtk/gtkprintoperation.c:1271 +#: ../gtk/gtkprintoperation.c:1271 msgid "Custom tab label" msgstr "Anpassad fliketikett" -#: gtk/gtkprintoperation.c:1272 +#: ../gtk/gtkprintoperation.c:1272 msgid "Label for the tab containing custom widgets." msgstr "Etikett för fliken som innehåller anpassade widgetar." -#: gtk/gtkprintoperation.c:1287 gtk/gtkprintunixdialog.c:341 +#: ../gtk/gtkprintoperation.c:1287 +#: ../gtk/gtkprintunixdialog.c:341 msgid "Support Selection" msgstr "Stöd för markering" -#: gtk/gtkprintoperation.c:1288 +#: ../gtk/gtkprintoperation.c:1288 msgid "TRUE if the print operation will support print of selection." msgstr "TRUE om utskriftsåtgärden har stöd för utskrift av markering." -#: gtk/gtkprintoperation.c:1304 gtk/gtkprintunixdialog.c:349 +#: ../gtk/gtkprintoperation.c:1304 +#: ../gtk/gtkprintunixdialog.c:349 msgid "Has Selection" msgstr "Har markering" -#: gtk/gtkprintoperation.c:1305 +#: ../gtk/gtkprintoperation.c:1305 msgid "TRUE if a selection exists." msgstr "TRUE om en markering finns." -#: gtk/gtkprintoperation.c:1320 gtk/gtkprintunixdialog.c:357 +#: ../gtk/gtkprintoperation.c:1320 +#: ../gtk/gtkprintunixdialog.c:357 msgid "Embed Page Setup" msgstr "Konfiguration av sidinbäddning" -#: gtk/gtkprintoperation.c:1321 +#: ../gtk/gtkprintoperation.c:1321 msgid "TRUE if page setup combos are embedded in GtkPrintDialog" -msgstr "" -"TRUE om kombinationsrutor i sidkonfigurationen är inbäddade i GtkPrintDialog" +msgstr "TRUE om kombinationsrutor i sidkonfigurationen är inbäddade i GtkPrintDialog" -#: gtk/gtkprintoperation.c:1342 +#: ../gtk/gtkprintoperation.c:1342 msgid "Number of Pages To Print" msgstr "Antal sidor att skriva ut" -#: gtk/gtkprintoperation.c:1343 +#: ../gtk/gtkprintoperation.c:1343 msgid "The number of pages that will be printed." msgstr "Antalet sidor som ska skrivas ut." -#: gtk/gtkprintunixdialog.c:299 +#: ../gtk/gtkprintunixdialog.c:299 msgid "The GtkPageSetup to use" msgstr "GtkPageSetup att använda" -#: gtk/gtkprintunixdialog.c:324 +#: ../gtk/gtkprintunixdialog.c:324 msgid "Selected Printer" msgstr "Markerad skrivare" -#: gtk/gtkprintunixdialog.c:325 +#: ../gtk/gtkprintunixdialog.c:325 msgid "The GtkPrinter which is selected" msgstr "GtkPrinter som är markerad" -#: gtk/gtkprintunixdialog.c:332 +#: ../gtk/gtkprintunixdialog.c:332 #, fuzzy msgid "Manual Capabilities" msgstr "Manuella förmågor" -#: gtk/gtkprintunixdialog.c:333 +#: ../gtk/gtkprintunixdialog.c:333 msgid "Capabilities the application can handle" msgstr "Förmågor som programmet kan hantera" -#: gtk/gtkprintunixdialog.c:342 +#: ../gtk/gtkprintunixdialog.c:342 msgid "Whether the dialog supports selection" msgstr "Huruvida dialogrutan har stöd för markering" -#: gtk/gtkprintunixdialog.c:350 +#: ../gtk/gtkprintunixdialog.c:350 msgid "Whether the application has a selection" msgstr "Huruvida programmet har en markering" -#: gtk/gtkprintunixdialog.c:358 +#: ../gtk/gtkprintunixdialog.c:358 msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" -msgstr "" -"TRUE om kombinationsrutor i sidkonfigurationen är inbäddade i " -"GtkPrintUnixDialog" +msgstr "TRUE om kombinationsrutor i sidkonfigurationen är inbäddade i GtkPrintUnixDialog" -#: gtk/gtkprogressbar.c:134 +#: ../gtk/gtkprogressbar.c:161 msgid "Fraction" msgstr "Andel" -#: gtk/gtkprogressbar.c:135 +#: ../gtk/gtkprogressbar.c:162 msgid "The fraction of total work that has been completed" msgstr "Andelen av det totala arbetet som har färdigställts" -#: gtk/gtkprogressbar.c:142 +#: ../gtk/gtkprogressbar.c:169 msgid "Pulse Step" msgstr "Pulssteg" -#: gtk/gtkprogressbar.c:143 +#: ../gtk/gtkprogressbar.c:170 msgid "The fraction of total progress to move the bouncing block when pulsed" -msgstr "" -"Andelen av det totala förloppet att flytta det studsande blocket när det " -"pulsas" +msgstr "Andelen av det totala förloppet att flytta det studsande blocket när det pulsas" -#: gtk/gtkprogressbar.c:151 +#: ../gtk/gtkprogressbar.c:178 msgid "Text to be displayed in the progress bar" msgstr "Text att visa i förloppsmätaren" -#: gtk/gtkprogressbar.c:158 +#: ../gtk/gtkprogressbar.c:185 msgid "Show text" msgstr "Visa text" -#: gtk/gtkprogressbar.c:159 +#: ../gtk/gtkprogressbar.c:186 msgid "Whether the progress is shown as text." msgstr "Huruvida förloppet visas som text." -#: gtk/gtkprogressbar.c:181 -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." -msgstr "" -"Den föredragna platsen att elliptisera strängen, om det alls ska göras, om " -"förloppsmätaren inte har tillräckligt med utrymme för att visa hela strängen." +#: ../gtk/gtkprogressbar.c:208 +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." +msgstr "Den föredragna platsen att elliptisera strängen, om det alls ska göras, om förloppsmätaren inte har tillräckligt med utrymme för att visa hela strängen." -#: gtk/gtkprogressbar.c:188 +#: ../gtk/gtkprogressbar.c:215 #, fuzzy msgid "X spacing" msgstr "X-utrymme" -#: gtk/gtkprogressbar.c:189 +#: ../gtk/gtkprogressbar.c:216 msgid "Extra spacing applied to the width of a progress bar." msgstr "Extra utrymme tillämpas till bredden för en förloppsmätare." -#: gtk/gtkprogressbar.c:194 +#: ../gtk/gtkprogressbar.c:221 #, fuzzy msgid "Y spacing" msgstr "YUtrymme" -#: gtk/gtkprogressbar.c:195 +#: ../gtk/gtkprogressbar.c:222 msgid "Extra spacing applied to the height of a progress bar." msgstr "Extra utrymme tillämpas till höjden för en förloppsmätare." -#: gtk/gtkprogressbar.c:208 +#: ../gtk/gtkprogressbar.c:235 #, fuzzy msgid "Minimum horizontal bar width" msgstr "Minsta horisontella stapelbredd" -#: gtk/gtkprogressbar.c:209 +#: ../gtk/gtkprogressbar.c:236 msgid "The minimum horizontal width of the progress bar" msgstr "Den minsta horisontella bredden för förloppsmätaren" -#: gtk/gtkprogressbar.c:221 +#: ../gtk/gtkprogressbar.c:248 #, fuzzy msgid "Minimum horizontal bar height" msgstr "Minsta horisontella stapelhöjd" -#: gtk/gtkprogressbar.c:222 +#: ../gtk/gtkprogressbar.c:249 msgid "Minimum horizontal height of the progress bar" msgstr "Minsta horisontella höjden för förloppsmätaren" -#: gtk/gtkprogressbar.c:234 +#: ../gtk/gtkprogressbar.c:261 #, fuzzy msgid "Minimum vertical bar width" msgstr "Minsta vertikala stapelbredd" -#: gtk/gtkprogressbar.c:235 +#: ../gtk/gtkprogressbar.c:262 msgid "The minimum vertical width of the progress bar" msgstr "Den minsta vertikala bredden för förloppsmätaren" -#: gtk/gtkprogressbar.c:247 +#: ../gtk/gtkprogressbar.c:274 #, fuzzy msgid "Minimum vertical bar height" msgstr "Minsta vertikala stapelhöjd" -#: gtk/gtkprogressbar.c:248 +#: ../gtk/gtkprogressbar.c:275 msgid "The minimum vertical height of the progress bar" msgstr "Den minsta vertikala höjden för förloppsmätaren" -#: gtk/gtkradioaction.c:118 +#: ../gtk/gtkradioaction.c:118 msgid "The value" msgstr "Värdet" -#: gtk/gtkradioaction.c:119 -msgid "" -"The value returned by gtk_radio_action_get_current_value() when this action " -"is the current action of its group." -msgstr "" -"Värdet som returneras av gtk_radio_action_get_current_value() då denna " -"åtgärd är den aktuella åtgärden i sin grupp." +#: ../gtk/gtkradioaction.c:119 +msgid "The value returned by gtk_radio_action_get_current_value() when this action is the current action of its group." +msgstr "Värdet som returneras av gtk_radio_action_get_current_value() då denna åtgärd är den aktuella åtgärden i sin grupp." -#: gtk/gtkradioaction.c:135 gtk/gtkradiobutton.c:160 -#: gtk/gtkradiomenuitem.c:373 gtk/gtkradiotoolbutton.c:65 +#: ../gtk/gtkradioaction.c:135 +#: ../gtk/gtkradiobutton.c:163 +#: ../gtk/gtkradiomenuitem.c:373 +#: ../gtk/gtkradiotoolbutton.c:65 msgid "Group" msgstr "Grupp" -#: gtk/gtkradioaction.c:136 +#: ../gtk/gtkradioaction.c:136 msgid "The radio action whose group this action belongs to." msgstr "Den radioåtgärd vars grupp denna åtgärd tillhör." -#: gtk/gtkradioaction.c:151 +#: ../gtk/gtkradioaction.c:151 msgid "The current value" msgstr "Det aktuella värdet" -#: gtk/gtkradioaction.c:152 -msgid "" -"The value property of the currently active member of the group to which this " -"action belongs." -msgstr "" -"Värdet för den för närvarande aktiva medlemmen av gruppen till vilken denna " -"åtgärd hör till." +#: ../gtk/gtkradioaction.c:152 +msgid "The value property of the currently active member of the group to which this action belongs." +msgstr "Värdet för den för närvarande aktiva medlemmen av gruppen till vilken denna åtgärd hör till." -#: gtk/gtkradiobutton.c:161 +#: ../gtk/gtkradiobutton.c:164 msgid "The radio button whose group this widget belongs to." msgstr "Den radioknapp vars grupp denna widget tillhör." -#: gtk/gtkradiomenuitem.c:374 +#: ../gtk/gtkradiomenuitem.c:374 msgid "The radio menu item whose group this widget belongs to." msgstr "Det radioknappsobjekt vars grupp denna widget tillhör." -#: gtk/gtkradiotoolbutton.c:66 +#: ../gtk/gtkradiotoolbutton.c:66 msgid "The radio tool button whose group this button belongs to." msgstr "Den radioknapp vars grupp denna knapp tillhör." -#: gtk/gtkrange.c:410 +#: ../gtk/gtkrange.c:422 msgid "Update policy" msgstr "Uppdateringspolicy" -#: gtk/gtkrange.c:411 +#: ../gtk/gtkrange.c:423 msgid "How the range should be updated on the screen" msgstr "Hur intervallet ska uppdateras på skärmen" -#: gtk/gtkrange.c:420 +#: ../gtk/gtkrange.c:432 msgid "The GtkAdjustment that contains the current value of this range object" -msgstr "" -"GtkAdjustment som innehåller det aktuella värdet på detta intervallobjekt" +msgstr "GtkAdjustment som innehåller det aktuella värdet på detta intervallobjekt" -#: gtk/gtkrange.c:428 +#: ../gtk/gtkrange.c:440 msgid "Invert direction slider moves to increase range value" -msgstr "" -"Invertera riktningen som rullningslisten flyttar sig för att öka " -"intervallvärdet" +msgstr "Invertera riktningen som rullningslisten flyttar sig för att öka intervallvärdet" -#: gtk/gtkrange.c:435 +#: ../gtk/gtkrange.c:447 msgid "Lower stepper sensitivity" msgstr "Lägre stegarkänslighet" -#: gtk/gtkrange.c:436 -msgid "" -"The sensitivity policy for the stepper that points to the adjustment's lower " -"side" +#: ../gtk/gtkrange.c:448 +msgid "The sensitivity policy for the stepper that points to the adjustment's lower side" msgstr "Känslighetspolicyn för stegaren som pekar till justeringens lägre sida" -#: gtk/gtkrange.c:444 +#: ../gtk/gtkrange.c:456 msgid "Upper stepper sensitivity" msgstr "Övre stegarkänslighet" -#: gtk/gtkrange.c:445 -msgid "" -"The sensitivity policy for the stepper that points to the adjustment's upper " -"side" +#: ../gtk/gtkrange.c:457 +msgid "The sensitivity policy for the stepper that points to the adjustment's upper side" msgstr "Känslighetspolicyn för stegaren som pekar till justeringens övre sida" -#: gtk/gtkrange.c:462 +#: ../gtk/gtkrange.c:474 msgid "Show Fill Level" msgstr "Visa fyllnadsnivå" -#: gtk/gtkrange.c:463 +#: ../gtk/gtkrange.c:475 msgid "Whether to display a fill level indicator graphics on trough." msgstr "Huruvida en fyllnadsnivåindikator ska visas vid tråg." -#: gtk/gtkrange.c:479 +#: ../gtk/gtkrange.c:491 msgid "Restrict to Fill Level" msgstr "Begränsa till fyllnadsnivå" -#: gtk/gtkrange.c:480 +#: ../gtk/gtkrange.c:492 msgid "Whether to restrict the upper boundary to the fill level." msgstr "Huruvida den övre fyllnadsnivågränsen ska begränsas." -#: gtk/gtkrange.c:495 +#: ../gtk/gtkrange.c:507 msgid "Fill Level" msgstr "Fyllnadsnivå" -#: gtk/gtkrange.c:496 +#: ../gtk/gtkrange.c:508 msgid "The fill level." msgstr "Fyllnadsnivån." -#: gtk/gtkrange.c:504 +#: ../gtk/gtkrange.c:516 +#: ../gtk/gtkswitch.c:781 msgid "Slider Width" msgstr "Bredd på rullningslist" -#: gtk/gtkrange.c:505 +#: ../gtk/gtkrange.c:517 msgid "Width of scrollbar or scale thumb" msgstr "Bredd på rullningslisten eller skalning" -#: gtk/gtkrange.c:512 +#: ../gtk/gtkrange.c:524 msgid "Trough Border" msgstr "Trågkant" # Förslag mottages tacksamt -#: gtk/gtkrange.c:513 +#: ../gtk/gtkrange.c:525 msgid "Spacing between thumb/steppers and outer trough bevel" msgstr "Utrymme mellan tumme/stegare och yttre trågavfasning" -#: gtk/gtkrange.c:520 +#: ../gtk/gtkrange.c:532 msgid "Stepper Size" msgstr "Stegarstorlek" -#: gtk/gtkrange.c:521 +#: ../gtk/gtkrange.c:533 msgid "Length of step buttons at ends" msgstr "Längd på stegknappar vid ändarna" -#: gtk/gtkrange.c:536 +#: ../gtk/gtkrange.c:548 msgid "Stepper Spacing" msgstr "Stegarutrymme" -#: gtk/gtkrange.c:537 +#: ../gtk/gtkrange.c:549 msgid "Spacing between step buttons and thumb" msgstr "Utrymme mellan stegknappar och steg" -#: gtk/gtkrange.c:544 +#: ../gtk/gtkrange.c:556 msgid "Arrow X Displacement" msgstr "X-förflyttning av pil" -#: gtk/gtkrange.c:545 -msgid "" -"How far in the x direction to move the arrow when the button is depressed" +#: ../gtk/gtkrange.c:557 +msgid "How far in the x direction to move the arrow when the button is depressed" msgstr "Hur långt bort i x-riktingen pilen ska flyttas då knappen trycks ned" -#: gtk/gtkrange.c:552 +#: ../gtk/gtkrange.c:564 msgid "Arrow Y Displacement" msgstr "Y-förflyttning av pil" -#: gtk/gtkrange.c:553 -msgid "" -"How far in the y direction to move the arrow when the button is depressed" +#: ../gtk/gtkrange.c:565 +msgid "How far in the y direction to move the arrow when the button is depressed" msgstr "Hur långt bort i y-riktningen pilen ska flyttas då knappen trycks ned" -#: gtk/gtkrange.c:571 +#: ../gtk/gtkrange.c:583 msgid "Trough Under Steppers" msgstr "Tråg under stegare" -#: gtk/gtkrange.c:572 -msgid "" -"Whether to draw trough for full length of range or exclude the steppers and " -"spacing" -msgstr "" -"Huruvida tråget ska ritas ut för hela längden eller undanta stegarna och " -"mellanrum" +#: ../gtk/gtkrange.c:584 +msgid "Whether to draw trough for full length of range or exclude the steppers and spacing" +msgstr "Huruvida tråget ska ritas ut för hela längden eller undanta stegarna och mellanrum" -#: gtk/gtkrange.c:585 +#: ../gtk/gtkrange.c:597 msgid "Arrow scaling" msgstr "Pilskalning" -#: gtk/gtkrange.c:586 +#: ../gtk/gtkrange.c:598 msgid "Arrow scaling with regard to scroll button size" msgstr "Pilskalning med hänseende till storleken för rullningsknapp" -#: gtk/gtkrecentaction.c:635 gtk/gtkrecentchoosermenu.c:252 +#: ../gtk/gtkrecentaction.c:635 +#: ../gtk/gtkrecentchoosermenu.c:246 msgid "Show Numbers" msgstr "Visa nummer" -#: gtk/gtkrecentaction.c:636 gtk/gtkrecentchoosermenu.c:253 +#: ../gtk/gtkrecentaction.c:636 +#: ../gtk/gtkrecentchoosermenu.c:247 msgid "Whether the items should be displayed with a number" msgstr "Huruvida objekten ska visas med ett nummer" -#: gtk/gtkrecentchooser.c:132 +#: ../gtk/gtkrecentchooser.c:132 msgid "Recent Manager" msgstr "Senaste hanterare" -#: gtk/gtkrecentchooser.c:133 +#: ../gtk/gtkrecentchooser.c:133 msgid "The RecentManager object to use" msgstr "RecentManager-objektet att använda" -#: gtk/gtkrecentchooser.c:147 +#: ../gtk/gtkrecentchooser.c:147 msgid "Show Private" msgstr "Visa privat" -#: gtk/gtkrecentchooser.c:148 +#: ../gtk/gtkrecentchooser.c:148 msgid "Whether the private items should be displayed" msgstr "Huruvida privata objekt ska visas" -#: gtk/gtkrecentchooser.c:161 +#: ../gtk/gtkrecentchooser.c:161 msgid "Show Tooltips" msgstr "Visa verktygstips" -#: gtk/gtkrecentchooser.c:162 +#: ../gtk/gtkrecentchooser.c:162 msgid "Whether there should be a tooltip on the item" msgstr "Huruvida det ska finnas ett verktygstips på objektet" -#: gtk/gtkrecentchooser.c:174 +#: ../gtk/gtkrecentchooser.c:174 msgid "Show Icons" msgstr "Visa ikoner" -#: gtk/gtkrecentchooser.c:175 +#: ../gtk/gtkrecentchooser.c:175 msgid "Whether there should be an icon near the item" msgstr "Huruvida det ska finnas en ikon nära objektet" -#: gtk/gtkrecentchooser.c:190 +#: ../gtk/gtkrecentchooser.c:190 msgid "Show Not Found" msgstr "Visa Hittades inte" -#: gtk/gtkrecentchooser.c:191 +#: ../gtk/gtkrecentchooser.c:191 msgid "Whether the items pointing to unavailable resources should be displayed" msgstr "Huruvida objekt som pekar till otillgängliga resurser ska visas" -#: gtk/gtkrecentchooser.c:204 +#: ../gtk/gtkrecentchooser.c:204 msgid "Whether to allow multiple items to be selected" msgstr "Huruvida att flera objekt kan väljas ska tillåtas" -#: gtk/gtkrecentchooser.c:217 +#: ../gtk/gtkrecentchooser.c:217 msgid "Local only" msgstr "Endast lokala" -#: gtk/gtkrecentchooser.c:218 +#: ../gtk/gtkrecentchooser.c:218 msgid "Whether the selected resource(s) should be limited to local file: URIs" msgstr "Huruvida de valda resurs(erna) ska begränsas till lokala file:-URI:er" -#: gtk/gtkrecentchooser.c:234 +#: ../gtk/gtkrecentchooser.c:234 msgid "Limit" msgstr "Gräns" -#: gtk/gtkrecentchooser.c:235 +#: ../gtk/gtkrecentchooser.c:235 msgid "The maximum number of items to be displayed" msgstr "Maximalt antal objekt som ska visas" -#: gtk/gtkrecentchooser.c:249 +#: ../gtk/gtkrecentchooser.c:249 msgid "Sort Type" msgstr "Sorteringstyp" -#: gtk/gtkrecentchooser.c:250 +#: ../gtk/gtkrecentchooser.c:250 msgid "The sorting order of the items displayed" msgstr "Sorteringsordningen för visade objekt" -#: gtk/gtkrecentchooser.c:265 +#: ../gtk/gtkrecentchooser.c:265 msgid "The current filter for selecting which resources are displayed" msgstr "Det aktuella filtret för val av vilka resurser som visas" -#: gtk/gtkrecentmanager.c:291 +#: ../gtk/gtkrecentmanager.c:295 msgid "The full path to the file to be used to store and read the list" -msgstr "" -"Fullständiga sökvägen till filen som ska användas för att lagra och läsa " -"listan" +msgstr "Fullständiga sökvägen till filen som ska användas för att lagra och läsa listan" -#: gtk/gtkrecentmanager.c:306 +#: ../gtk/gtkrecentmanager.c:310 msgid "The size of the recently used resources list" msgstr "Storleken för senast använda resurslistan" -#: gtk/gtkruler.c:138 -msgid "Lower" -msgstr "Lägre" - -#: gtk/gtkruler.c:139 -msgid "Lower limit of ruler" -msgstr "Lägre gräns för linjal" - -#: gtk/gtkruler.c:148 -msgid "Upper" -msgstr "Övre" - -#: gtk/gtkruler.c:149 -msgid "Upper limit of ruler" -msgstr "Övre gräns för linjal" - -#: gtk/gtkruler.c:159 -msgid "Position of mark on the ruler" -msgstr "Position för märket på linjalen" - -#: gtk/gtkruler.c:168 -msgid "Max Size" -msgstr "Maxstorlek" - -#: gtk/gtkruler.c:169 -msgid "Maximum size of the ruler" -msgstr "Största storlek på linjalen" - -# Osäker. -#: gtk/gtkruler.c:184 -msgid "Metric" -msgstr "Metrik" - -# Osäker. -#: gtk/gtkruler.c:185 -msgid "The metric used for the ruler" -msgstr "Metriken som används i linjalen" - -#: gtk/gtkscalebutton.c:221 +#: ../gtk/gtkscalebutton.c:221 msgid "The value of the scale" msgstr "Värdet på skalan" -#: gtk/gtkscalebutton.c:231 +#: ../gtk/gtkscalebutton.c:231 msgid "The icon size" msgstr "Ikonstorleken" -#: gtk/gtkscalebutton.c:240 -msgid "" -"The GtkAdjustment that contains the current value of this scale button object" -msgstr "" -"GtkAdjustment som innehåller det aktuella värdet på detta skalknappsobjekt" +#: ../gtk/gtkscalebutton.c:240 +msgid "The GtkAdjustment that contains the current value of this scale button object" +msgstr "GtkAdjustment som innehåller det aktuella värdet på detta skalknappsobjekt" -#: gtk/gtkscalebutton.c:268 +#: ../gtk/gtkscalebutton.c:268 msgid "Icons" msgstr "Ikoner" -#: gtk/gtkscalebutton.c:269 +#: ../gtk/gtkscalebutton.c:269 msgid "List of icon names" msgstr "Lista över ikonnamn" -#: gtk/gtkscale.c:245 +#: ../gtk/gtkscale.c:254 msgid "The number of decimal places that are displayed in the value" msgstr "Antalet tecken som visas i värdet" -#: gtk/gtkscale.c:254 +#: ../gtk/gtkscale.c:263 msgid "Draw Value" msgstr "Visa värde" -#: gtk/gtkscale.c:255 +#: ../gtk/gtkscale.c:264 msgid "Whether the current value is displayed as a string next to the slider" -msgstr "" -"Huruvida det aktuella värdet visas som en sträng bredvid rullningslisten" +msgstr "Huruvida det aktuella värdet visas som en sträng bredvid rullningslisten" -#: gtk/gtkscale.c:262 +#: ../gtk/gtkscale.c:271 msgid "Value Position" msgstr "Värdeposition" -#: gtk/gtkscale.c:263 +#: ../gtk/gtkscale.c:272 msgid "The position in which the current value is displayed" msgstr "Positionen som det aktuella värdet visas på" -#: gtk/gtkscale.c:270 +#: ../gtk/gtkscale.c:279 msgid "Slider Length" msgstr "Längd på rullningslist" -#: gtk/gtkscale.c:271 +#: ../gtk/gtkscale.c:280 msgid "Length of scale's slider" msgstr "Längd på skalans rullningslist" -#: gtk/gtkscale.c:279 +#: ../gtk/gtkscale.c:288 msgid "Value spacing" msgstr "Värdeutrymme" -#: gtk/gtkscale.c:280 +#: ../gtk/gtkscale.c:289 msgid "Space between value text and the slider/trough area" msgstr "Utrymme mellan värdetext och draglist/trågområdet" -#: gtk/gtkscrollbar.c:50 +#: ../gtk/gtkscrollbar.c:72 msgid "Minimum Slider Length" msgstr "Minsta bredd på rullningslist" -#: gtk/gtkscrollbar.c:51 +#: ../gtk/gtkscrollbar.c:73 msgid "Minimum length of scrollbar slider" msgstr "Minsta längd på lullningslisten" -#: gtk/gtkscrollbar.c:59 +#: ../gtk/gtkscrollbar.c:81 msgid "Fixed slider size" msgstr "Fast storlek på rullningslist" -#: gtk/gtkscrollbar.c:60 +#: ../gtk/gtkscrollbar.c:82 msgid "Don't change slider size, just lock it to the minimum length" -msgstr "" -"Ändra inte storleken på rullningslisten, lås den bara till den minsta längden" +msgstr "Ändra inte storleken på rullningslisten, lås den bara till den minsta längden" -#: gtk/gtkscrollbar.c:81 -msgid "" -"Display a second backward arrow button on the opposite end of the scrollbar" -msgstr "" -"Visa en andra knapp med baklängespil på motsatt sida av rullningslisten" +#: ../gtk/gtkscrollbar.c:103 +msgid "Display a second backward arrow button on the opposite end of the scrollbar" +msgstr "Visa en andra knapp med baklängespil på motsatt sida av rullningslisten" -#: gtk/gtkscrollbar.c:88 -msgid "" -"Display a second forward arrow button on the opposite end of the scrollbar" +#: ../gtk/gtkscrollbar.c:110 +msgid "Display a second forward arrow button on the opposite end of the scrollbar" msgstr "Visa en andra framåtpil-knapp på motsatt sida av rullningslisten" -#: gtk/gtkscrolledwindow.c:243 gtk/gtktreeview.c:571 +#: ../gtk/gtkscrolledwindow.c:295 msgid "Horizontal Adjustment" msgstr "Horisontell justering" -#: gtk/gtkscrolledwindow.c:250 gtk/gtktreeview.c:579 +#: ../gtk/gtkscrolledwindow.c:296 +msgid "The GtkAdjustment for the horizontal position" +msgstr "GtkAdjustment på den horisontella positionen" + +#: ../gtk/gtkscrolledwindow.c:302 msgid "Vertical Adjustment" msgstr "Vertikal justering" -#: gtk/gtkscrolledwindow.c:257 +#: ../gtk/gtkscrolledwindow.c:303 +msgid "The GtkAdjustment for the vertical position" +msgstr "GtkAdjustment på den vertikala positionen" + +#: ../gtk/gtkscrolledwindow.c:309 msgid "Horizontal Scrollbar Policy" msgstr "Policy för horisontella rullningslister" -#: gtk/gtkscrolledwindow.c:258 +#: ../gtk/gtkscrolledwindow.c:310 msgid "When the horizontal scrollbar is displayed" msgstr "När den horisontella rullningslisten visas" -#: gtk/gtkscrolledwindow.c:265 +#: ../gtk/gtkscrolledwindow.c:317 msgid "Vertical Scrollbar Policy" msgstr "Policy för vertikal rullningslista" -#: gtk/gtkscrolledwindow.c:266 +#: ../gtk/gtkscrolledwindow.c:318 msgid "When the vertical scrollbar is displayed" msgstr "När den vertikala rullningslisten visas" -#: gtk/gtkscrolledwindow.c:274 +#: ../gtk/gtkscrolledwindow.c:326 msgid "Window Placement" msgstr "Fönsterplacering" -#: gtk/gtkscrolledwindow.c:275 -msgid "" -"Where the contents are located with respect to the scrollbars. This property " -"only takes effect if \"window-placement-set\" is TRUE." -msgstr "" -"Där innehållet placeras i förhållande till rullningslisterna. Denna egenskap " -"blir endast aktiv om \"window-placement-set\" är TRUE." +#: ../gtk/gtkscrolledwindow.c:327 +msgid "Where the contents are located with respect to the scrollbars. This property only takes effect if \"window-placement-set\" is TRUE." +msgstr "Där innehållet placeras i förhållande till rullningslisterna. Denna egenskap blir endast aktiv om \"window-placement-set\" är TRUE." -#: gtk/gtkscrolledwindow.c:292 +#: ../gtk/gtkscrolledwindow.c:344 msgid "Window Placement Set" msgstr "Fönsterplacering" -#: gtk/gtkscrolledwindow.c:293 -msgid "" -"Whether \"window-placement\" should be used to determine the location of the " -"contents with respect to the scrollbars." -msgstr "" -"Huruvida \"window-placement\" ska används för att fastställa platsen för " -"innehållet i förhållande till rullningslisterna." +#: ../gtk/gtkscrolledwindow.c:345 +msgid "Whether \"window-placement\" should be used to determine the location of the contents with respect to the scrollbars." +msgstr "Huruvida \"window-placement\" ska används för att fastställa platsen för innehållet i förhållande till rullningslisterna." -#: gtk/gtkscrolledwindow.c:299 +#: ../gtk/gtkscrolledwindow.c:351 msgid "Shadow Type" msgstr "Skuggtyp" -#: gtk/gtkscrolledwindow.c:300 +#: ../gtk/gtkscrolledwindow.c:352 msgid "Style of bevel around the contents" msgstr "Stil på avfasning runt innehållet" -#: gtk/gtkscrolledwindow.c:314 +#: ../gtk/gtkscrolledwindow.c:366 msgid "Scrollbars within bevel" msgstr "Rullningslist inom avfasning" -#: gtk/gtkscrolledwindow.c:315 +#: ../gtk/gtkscrolledwindow.c:367 msgid "Place scrollbars within the scrolled window's bevel" msgstr "Placera rullningslister inom det rullade fönstrets avrundning" -#: gtk/gtkscrolledwindow.c:321 +#: ../gtk/gtkscrolledwindow.c:373 msgid "Scrollbar spacing" msgstr "Rullningslistutrymme" -#: gtk/gtkscrolledwindow.c:322 +#: ../gtk/gtkscrolledwindow.c:374 msgid "Number of pixels between the scrollbars and the scrolled window" msgstr "Antalet bildpunkter mellan rullningslisterna och det rullade fönstret" -#: gtk/gtkscrolledwindow.c:337 -msgid "Scrolled Window Placement" -msgstr "Placering för rullade fönster" +#: ../gtk/gtkscrolledwindow.c:383 +#, fuzzy +msgid "Minimum Content Width" +msgstr "Minsta bredd" -#: gtk/gtkscrolledwindow.c:338 -msgid "" -"Where the contents of scrolled windows are located with respect to the " -"scrollbars, if not overridden by the scrolled window's own placement." +#: ../gtk/gtkscrolledwindow.c:384 +msgid "The minimum width that the scrolled window will allocate to its content" msgstr "" -"Där innehållet i rullade fönster placeras i förhållande till " -"rullningslisterna, om inte åsidosatt av det rullade fönstrets egna placering." -#: gtk/gtkseparatortoolitem.c:138 +#: ../gtk/gtkscrolledwindow.c:390 +#, fuzzy +msgid "Minimum Content Height" +msgstr "Minsta höjd på barn" + +#: ../gtk/gtkscrolledwindow.c:391 +msgid "The minimum height that the scrolled window will allocate to its content" +msgstr "" + +#: ../gtk/gtkseparatortoolitem.c:143 msgid "Draw" msgstr "Rita" -#: gtk/gtkseparatortoolitem.c:139 +#: ../gtk/gtkseparatortoolitem.c:144 msgid "Whether the separator is drawn, or just blank" msgstr "Huruvida avgränsaren är ritad eller enbart tom" -#: gtk/gtksettings.c:225 +#: ../gtk/gtksettings.c:299 msgid "Double Click Time" msgstr "Tid för dubbelklick" -#: gtk/gtksettings.c:226 -msgid "" -"Maximum time allowed between two clicks for them to be considered a double " -"click (in milliseconds)" -msgstr "" -"Största tid som tillåts mellan två klick för att de ska betraktas som en " -"dubbelklickning (i millisekunder)" +#: ../gtk/gtksettings.c:300 +msgid "Maximum time allowed between two clicks for them to be considered a double click (in milliseconds)" +msgstr "Största tid som tillåts mellan två klick för att de ska betraktas som en dubbelklickning (i millisekunder)" -#: gtk/gtksettings.c:233 +#: ../gtk/gtksettings.c:307 msgid "Double Click Distance" msgstr "Avstånd för dubbelklick" -#: gtk/gtksettings.c:234 -msgid "" -"Maximum distance allowed between two clicks for them to be considered a " -"double click (in pixels)" -msgstr "" -"Största avstånd som tillåts mellan två klick för att de ska betraktas som en " -"dubbelklickning (i bildpunkter)" +#: ../gtk/gtksettings.c:308 +msgid "Maximum distance allowed between two clicks for them to be considered a double click (in pixels)" +msgstr "Största avstånd som tillåts mellan två klick för att de ska betraktas som en dubbelklickning (i bildpunkter)" -#: gtk/gtksettings.c:250 +#: ../gtk/gtksettings.c:324 msgid "Cursor Blink" msgstr "Markörblinkning" -#: gtk/gtksettings.c:251 +#: ../gtk/gtksettings.c:325 msgid "Whether the cursor should blink" msgstr "Huruvida markören ska blinka" -#: gtk/gtksettings.c:258 +#: ../gtk/gtksettings.c:332 msgid "Cursor Blink Time" msgstr "Blinktid för markör" -#: gtk/gtksettings.c:259 +#: ../gtk/gtksettings.c:333 msgid "Length of the cursor blink cycle, in milliseconds" msgstr "Längd på markörens blinkcykel, i millisekunder" -#: gtk/gtksettings.c:278 +#: ../gtk/gtksettings.c:352 msgid "Cursor Blink Timeout" msgstr "Tidsgräns för markörblinkning" -#: gtk/gtksettings.c:279 +#: ../gtk/gtksettings.c:353 msgid "Time after which the cursor stops blinking, in seconds" msgstr "Tid efter vilken markören slutar blinka, i sekunder" -#: gtk/gtksettings.c:286 +#: ../gtk/gtksettings.c:360 msgid "Split Cursor" msgstr "Delad markör" -#: gtk/gtksettings.c:287 -msgid "" -"Whether two cursors should be displayed for mixed left-to-right and right-to-" -"left text" -msgstr "" -"Huruvida två markörer ska visas för blandad vänster-till-höger- och höger-" -"till-vänster-text" +#: ../gtk/gtksettings.c:361 +msgid "Whether two cursors should be displayed for mixed left-to-right and right-to-left text" +msgstr "Huruvida två markörer ska visas för blandad vänster-till-höger- och höger-till-vänster-text" -#: gtk/gtksettings.c:294 +#: ../gtk/gtksettings.c:368 msgid "Theme Name" msgstr "Temanamn" -#: gtk/gtksettings.c:295 +#: ../gtk/gtksettings.c:369 msgid "Name of theme RC file to load" msgstr "Namn på den tema-RC-fil som ska läsas in" -#: gtk/gtksettings.c:303 +#: ../gtk/gtksettings.c:377 msgid "Icon Theme Name" msgstr "Namn på ikontema" -#: gtk/gtksettings.c:304 +#: ../gtk/gtksettings.c:378 msgid "Name of icon theme to use" msgstr "Namn på ikontemat att använda" -#: gtk/gtksettings.c:312 +#: ../gtk/gtksettings.c:386 msgid "Fallback Icon Theme Name" msgstr "Ikontema att falla tillbaka på" -#: gtk/gtksettings.c:313 +#: ../gtk/gtksettings.c:387 msgid "Name of a icon theme to fall back to" msgstr "Namnet på ikontemat att falla tillbaka på" -#: gtk/gtksettings.c:321 +#: ../gtk/gtksettings.c:395 msgid "Key Theme Name" msgstr "Nyckeltemanamn" -#: gtk/gtksettings.c:322 +#: ../gtk/gtksettings.c:396 msgid "Name of key theme RC file to load" msgstr "Namn på den nyckeltema-RC-fil som ska läsas in" -#: gtk/gtksettings.c:330 +#: ../gtk/gtksettings.c:404 msgid "Menu bar accelerator" msgstr "Snabbtangent för menyrad" -#: gtk/gtksettings.c:331 +#: ../gtk/gtksettings.c:405 msgid "Keybinding to activate the menu bar" msgstr "Snabbtangent för att aktivera menyraden" -#: gtk/gtksettings.c:339 +#: ../gtk/gtksettings.c:413 msgid "Drag threshold" msgstr "Dragtröskel" -#: gtk/gtksettings.c:340 +#: ../gtk/gtksettings.c:414 msgid "Number of pixels the cursor can move before dragging" msgstr "Antalet bildpunkter markören kan flyttas innan drag" -#: gtk/gtksettings.c:348 +#: ../gtk/gtksettings.c:422 msgid "Font Name" msgstr "Typsnittsnamn" -#: gtk/gtksettings.c:349 +#: ../gtk/gtksettings.c:423 msgid "Name of default font to use" msgstr "Namn på standardtypsnittet att använda" -#: gtk/gtksettings.c:371 +#: ../gtk/gtksettings.c:445 msgid "Icon Sizes" msgstr "Ikonstorlekar" -#: gtk/gtksettings.c:372 +#: ../gtk/gtksettings.c:446 msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." msgstr "Lista med ikonstorlekar (gtk-menu=16,16;gtk-button=20,20..." -#: gtk/gtksettings.c:380 +#: ../gtk/gtksettings.c:454 msgid "GTK Modules" msgstr "GTK-moduler" -#: gtk/gtksettings.c:381 +#: ../gtk/gtksettings.c:455 msgid "List of currently active GTK modules" msgstr "Lista med GTK-moduler som är aktiva för tillfället" -#: gtk/gtksettings.c:390 +#: ../gtk/gtksettings.c:464 msgid "Xft Antialias" msgstr "Xft-kantutjämning" -#: gtk/gtksettings.c:391 +#: ../gtk/gtksettings.c:465 msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" msgstr "Huruvida Xft-typsnitt ska kantutjämnas; 0=nej, 1=ja, -1=standardvärdet" -#: gtk/gtksettings.c:400 +#: ../gtk/gtksettings.c:474 msgid "Xft Hinting" msgstr "Xft-hintning" -#: gtk/gtksettings.c:401 +#: ../gtk/gtksettings.c:475 msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" msgstr "Huruvida Xft-typsnitt ska hintas; 0=nej, 1=ja, -1=standardvärdet" -#: gtk/gtksettings.c:410 +#: ../gtk/gtksettings.c:484 msgid "Xft Hint Style" msgstr "Xft-hintningsstil" -#: gtk/gtksettings.c:411 -msgid "" -"What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" -msgstr "" -"Vilken grad av hintning att använda; hintaingen, hintaliten, hintamellan, " -"eller hintafullständig" +#: ../gtk/gtksettings.c:485 +msgid "What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" +msgstr "Vilken grad av hintning att använda; hintaingen, hintaliten, hintamellan, eller hintafullständig" -#: gtk/gtksettings.c:420 +#: ../gtk/gtksettings.c:494 msgid "Xft RGBA" msgstr "Xft-RGBA" -#: gtk/gtksettings.c:421 +#: ../gtk/gtksettings.c:495 msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" msgstr "Typ av underbildpunktskantutjämning; ingen, rgb, bgr, vrgb, vbgr" -#: gtk/gtksettings.c:430 +#: ../gtk/gtksettings.c:504 msgid "Xft DPI" msgstr "Xft-DPI" -#: gtk/gtksettings.c:431 +#: ../gtk/gtksettings.c:505 msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" -msgstr "" -"Upplösning för Xft, i 1024 × punkter/tum. -1 för att använda standardvärdet" +msgstr "Upplösning för Xft, i 1024 × punkter/tum. -1 för att använda standardvärdet" -#: gtk/gtksettings.c:440 +#: ../gtk/gtksettings.c:514 msgid "Cursor theme name" msgstr "Namn på markörtema" -#: gtk/gtksettings.c:441 +#: ../gtk/gtksettings.c:515 msgid "Name of the cursor theme to use, or NULL to use the default theme" -msgstr "" -"Namn på markörtemat att använda, eller NULL för att använda standardtemat" +msgstr "Namn på markörtemat att använda, eller NULL för att använda standardtemat" -#: gtk/gtksettings.c:449 +#: ../gtk/gtksettings.c:523 msgid "Cursor theme size" msgstr "Storlek på markörtema" -#: gtk/gtksettings.c:450 +#: ../gtk/gtksettings.c:524 msgid "Size to use for cursors, or 0 to use the default size" -msgstr "" -"Storlek att använda på markörer, eller 0 för att använda standardstorleken" +msgstr "Storlek att använda på markörer, eller 0 för att använda standardstorleken" -#: gtk/gtksettings.c:460 +#: ../gtk/gtksettings.c:534 msgid "Alternative button order" msgstr "Alternativ knappordning" -#: gtk/gtksettings.c:461 +#: ../gtk/gtksettings.c:535 msgid "Whether buttons in dialogs should use the alternative button order" msgstr "Huruvida knappar i dialoger ska använda den alternativa knappordningen" -#: gtk/gtksettings.c:478 +#: ../gtk/gtksettings.c:552 msgid "Alternative sort indicator direction" msgstr "Alternativ riktning för sorteringsindikator" -#: gtk/gtksettings.c:479 -msgid "" -"Whether the direction of the sort indicators in list and tree views is " -"inverted compared to the default (where down means ascending)" -msgstr "" -"Huruvida riktningen på sorteringsindikatorerna i list- och trädvyer är " -"inverterade jämfört med standarden (där ner betyder stigande)" +#: ../gtk/gtksettings.c:553 +msgid "Whether the direction of the sort indicators in list and tree views is inverted compared to the default (where down means ascending)" +msgstr "Huruvida riktningen på sorteringsindikatorerna i list- och trädvyer är inverterade jämfört med standarden (där ner betyder stigande)" -#: gtk/gtksettings.c:487 +#: ../gtk/gtksettings.c:561 msgid "Show the 'Input Methods' menu" msgstr "Visa \"Inmatningsmetoder\"-menyn" -#: gtk/gtksettings.c:488 -msgid "" -"Whether the context menus of entries and text views should offer to change " -"the input method" -msgstr "" -"Huruvida sammanhangsmenyer av poster och textvyer ska erbjuda ändring av " -"inmatningsmetod" +#: ../gtk/gtksettings.c:562 +msgid "Whether the context menus of entries and text views should offer to change the input method" +msgstr "Huruvida sammanhangsmenyer av poster och textvyer ska erbjuda ändring av inmatningsmetod" -#: gtk/gtksettings.c:496 +#: ../gtk/gtksettings.c:570 msgid "Show the 'Insert Unicode Control Character' menu" msgstr "Visa \"Infoga Unicode-styrtecken\"-menyn" -#: gtk/gtksettings.c:497 -msgid "" -"Whether the context menus of entries and text views should offer to insert " -"control characters" -msgstr "" -"Huruvida sammanhangsmenyer av poster och textvyer ska erbjuda att infoga " -"styrtecken" +#: ../gtk/gtksettings.c:571 +msgid "Whether the context menus of entries and text views should offer to insert control characters" +msgstr "Huruvida sammanhangsmenyer av poster och textvyer ska erbjuda att infoga styrtecken" -#: gtk/gtksettings.c:505 +#: ../gtk/gtksettings.c:579 msgid "Start timeout" msgstr "Tidsgräns för start" -#: gtk/gtksettings.c:506 +#: ../gtk/gtksettings.c:580 msgid "Starting value for timeouts, when button is pressed" msgstr "Startvärde för tidsgränser, när knappen blir nedtryckt" -#: gtk/gtksettings.c:515 +#: ../gtk/gtksettings.c:589 msgid "Repeat timeout" msgstr "Tidsgräns för upprepning" -#: gtk/gtksettings.c:516 +#: ../gtk/gtksettings.c:590 msgid "Repeat value for timeouts, when button is pressed" msgstr "Upprepningsvärde för tidsgränser, när knappen blir nedtryckt" -#: gtk/gtksettings.c:525 +#: ../gtk/gtksettings.c:599 msgid "Expand timeout" msgstr "Utöka tidsgräns" -#: gtk/gtksettings.c:526 +#: ../gtk/gtksettings.c:600 msgid "Expand value for timeouts, when a widget is expanding a new region" msgstr "Expandera värde för tidsgränser, när en widget expanderar en ny region" -#: gtk/gtksettings.c:561 +#: ../gtk/gtksettings.c:635 msgid "Color scheme" msgstr "Färgschema" -#: gtk/gtksettings.c:562 +#: ../gtk/gtksettings.c:636 msgid "A palette of named colors for use in themes" msgstr "En palett av namngivna färger att använda i teman" -#: gtk/gtksettings.c:571 +#: ../gtk/gtksettings.c:645 msgid "Enable Animations" msgstr "Aktivera animeringar" -#: gtk/gtksettings.c:572 +#: ../gtk/gtksettings.c:646 msgid "Whether to enable toolkit-wide animations." msgstr "Huruvida verktygslådebreda animeringar ska aktiveras." -#: gtk/gtksettings.c:590 +#: ../gtk/gtksettings.c:664 msgid "Enable Touchscreen Mode" msgstr "Aktivera pekskärmsläge" -#: gtk/gtksettings.c:591 +#: ../gtk/gtksettings.c:665 msgid "When TRUE, there are no motion notify events delivered on this screen" -msgstr "" -"När TRUE kommer inga rörelsenotifieringshändelser att levereras på denna " -"skärm" +msgstr "När TRUE kommer inga rörelsenotifieringshändelser att levereras på denna skärm" -#: gtk/gtksettings.c:608 +#: ../gtk/gtksettings.c:682 msgid "Tooltip timeout" msgstr "Tidsgräns för verktygstips" -#: gtk/gtksettings.c:609 +#: ../gtk/gtksettings.c:683 msgid "Timeout before tooltip is shown" msgstr "Tidsgräns innan verktygstips visas" -#: gtk/gtksettings.c:634 +#: ../gtk/gtksettings.c:708 msgid "Tooltip browse timeout" msgstr "Tidsgräns för bläddring i verktygstips" -#: gtk/gtksettings.c:635 +#: ../gtk/gtksettings.c:709 msgid "Timeout before tooltip is shown when browse mode is enabled" msgstr "Tidsgräns innan verktygstips visas när bläddringsläge är aktiverat" -#: gtk/gtksettings.c:656 +#: ../gtk/gtksettings.c:730 msgid "Tooltip browse mode timeout" msgstr "Tidsgräns för bläddringsläge för verktygstips" -#: gtk/gtksettings.c:657 +#: ../gtk/gtksettings.c:731 msgid "Timeout after which browse mode is disabled" msgstr "Tidsgräns efter vilken bläddringsläget inaktiveras" -#: gtk/gtksettings.c:676 +#: ../gtk/gtksettings.c:750 msgid "Keynav Cursor Only" msgstr "Tangentnavigeringsmarkör endast" -#: gtk/gtksettings.c:677 +#: ../gtk/gtksettings.c:751 msgid "When TRUE, there are only cursor keys available to navigate widgets" -msgstr "" -"När TRUE finns det endast markörtangenter tillgängliga för att navigera " -"bland widgetar" +msgstr "När TRUE finns det endast markörtangenter tillgängliga för att navigera bland widgetar" -#: gtk/gtksettings.c:694 +#: ../gtk/gtksettings.c:768 msgid "Keynav Wrap Around" msgstr "Radbrytning för tangentnavigering" -#: gtk/gtksettings.c:695 +#: ../gtk/gtksettings.c:769 msgid "Whether to wrap around when keyboard-navigating widgets" -msgstr "" -"Huruvida radbrytning ska ske vid tangentbordsnavigering bland widgetar " +msgstr "Huruvida radbrytning ska ske vid tangentbordsnavigering bland widgetar " -#: gtk/gtksettings.c:715 +#: ../gtk/gtksettings.c:789 msgid "Error Bell" msgstr "Felklocka" -#: gtk/gtksettings.c:716 +#: ../gtk/gtksettings.c:790 msgid "When TRUE, keyboard navigation and other errors will cause a beep" -msgstr "" -"När TRUE kommer tangentbordsnavigering och andra fel att orsaka ett pip" +msgstr "När TRUE kommer tangentbordsnavigering och andra fel att orsaka ett pip" -#: gtk/gtksettings.c:733 +#: ../gtk/gtksettings.c:807 msgid "Color Hash" msgstr "Färgrymd" -#: gtk/gtksettings.c:734 +#: ../gtk/gtksettings.c:808 msgid "A hash table representation of the color scheme." msgstr "En hashtabell som representerar färgschemat." -#: gtk/gtksettings.c:742 +#: ../gtk/gtksettings.c:816 msgid "Default file chooser backend" msgstr "Standardbakände för filväljare" -#: gtk/gtksettings.c:743 +#: ../gtk/gtksettings.c:817 msgid "Name of the GtkFileChooser backend to use by default" msgstr "Namn på den GtkFileChooser-bakände som ska användas som standard" -#: gtk/gtksettings.c:760 +#: ../gtk/gtksettings.c:834 msgid "Default print backend" msgstr "Standardbakände för utskrifter" -#: gtk/gtksettings.c:761 +#: ../gtk/gtksettings.c:835 msgid "List of the GtkPrintBackend backends to use by default" msgstr "Lista på de GtkPrintBackend-bakändor som ska användas som standard" -#: gtk/gtksettings.c:784 +#: ../gtk/gtksettings.c:858 msgid "Default command to run when displaying a print preview" msgstr "Standardkommando att köra vid förhandsvisning av utskrift " -#: gtk/gtksettings.c:785 +#: ../gtk/gtksettings.c:859 msgid "Command to run when displaying a print preview" msgstr "Kommando att köra vid visning av en utskriftförhandsvisning" -#: gtk/gtksettings.c:801 +#: ../gtk/gtksettings.c:875 msgid "Enable Mnemonics" msgstr "Aktivera snabbtangenter" -#: gtk/gtksettings.c:802 +#: ../gtk/gtksettings.c:876 msgid "Whether labels should have mnemonics" msgstr "Huruvida etiketter ska ha snabbtangenter" -#: gtk/gtksettings.c:818 +#: ../gtk/gtksettings.c:892 msgid "Enable Accelerators" msgstr "Aktivera snabbtangenter" -#: gtk/gtksettings.c:819 +#: ../gtk/gtksettings.c:893 msgid "Whether menu items should have accelerators" msgstr "Huruvida menyobjekt ska ha snabbtangenter" -#: gtk/gtksettings.c:836 +#: ../gtk/gtksettings.c:910 msgid "Recent Files Limit" msgstr "Gräns för Senaste filer" -#: gtk/gtksettings.c:837 +#: ../gtk/gtksettings.c:911 msgid "Number of recently used files" msgstr "Antal senast använda filer" -#: gtk/gtksettings.c:855 +#: ../gtk/gtksettings.c:929 msgid "Default IM module" msgstr "Standard-IM-modul" -#: gtk/gtksettings.c:856 +#: ../gtk/gtksettings.c:930 msgid "Which IM module should be used by default" msgstr "Vilken IM-modul som ska användas som standard" -#: gtk/gtksettings.c:874 +#: ../gtk/gtksettings.c:948 msgid "Recent Files Max Age" msgstr "Maximal ålder för Senaste filer" -#: gtk/gtksettings.c:875 +#: ../gtk/gtksettings.c:949 msgid "Maximum age of recently used files, in days" msgstr "Maximal ålder för senast använda filer, i dagar" -#: gtk/gtksettings.c:884 +#: ../gtk/gtksettings.c:958 msgid "Fontconfig configuration timestamp" msgstr "Fontconfig-konfigurationens tidsstämpel" -#: gtk/gtksettings.c:885 +#: ../gtk/gtksettings.c:959 msgid "Timestamp of current fontconfig configuration" msgstr "Tidsstämpel för aktuell fontconfig-konfiguration" -#: gtk/gtksettings.c:907 +#: ../gtk/gtksettings.c:981 msgid "Sound Theme Name" msgstr "Namn på ljudtema" -#: gtk/gtksettings.c:908 +#: ../gtk/gtksettings.c:982 msgid "XDG sound theme name" msgstr "Namn på XDG-ljudtema" #. Translators: this means sounds that are played as feedback to user input -#: gtk/gtksettings.c:930 +#: ../gtk/gtksettings.c:1004 msgid "Audible Input Feedback" msgstr "Ljudåterkoppling för inmatning" -#: gtk/gtksettings.c:931 +#: ../gtk/gtksettings.c:1005 msgid "Whether to play event sounds as feedback to user input" -msgstr "" -"Huruvida händelseljud som spelas upp som återkoppling till användarinmatning" +msgstr "Huruvida händelseljud som spelas upp som återkoppling till användarinmatning" -#: gtk/gtksettings.c:952 +#: ../gtk/gtksettings.c:1026 msgid "Enable Event Sounds" msgstr "Aktivera händelseljud" -#: gtk/gtksettings.c:953 +#: ../gtk/gtksettings.c:1027 msgid "Whether to play any event sounds at all" msgstr "Huruvida händelseljud ska spelas överhuvudtaget" -#: gtk/gtksettings.c:968 +#: ../gtk/gtksettings.c:1042 msgid "Enable Tooltips" msgstr "Aktivera verktygstips" -#: gtk/gtksettings.c:969 +#: ../gtk/gtksettings.c:1043 msgid "Whether tooltips should be shown on widgets" msgstr "Huruvida verktygstips ska visas på widgetar" -#: gtk/gtksettings.c:982 +#: ../gtk/gtksettings.c:1056 msgid "Toolbar style" msgstr "Stil på verktygsrad" -#: gtk/gtksettings.c:983 -msgid "" -"Whether default toolbars have text only, text and icons, icons only, etc." -msgstr "" -"Huruvida standardverktygsrader endast har text, text och ikoner, endast " -"ikoner, osv." +#: ../gtk/gtksettings.c:1057 +msgid "Whether default toolbars have text only, text and icons, icons only, etc." +msgstr "Huruvida standardverktygsrader endast har text, text och ikoner, endast ikoner, osv." -#: gtk/gtksettings.c:997 +#: ../gtk/gtksettings.c:1071 msgid "Toolbar Icon Size" msgstr "Ikonstorlek på verktygsrad" -#: gtk/gtksettings.c:998 +#: ../gtk/gtksettings.c:1072 msgid "The size of icons in default toolbars." msgstr "Storlek på ikoner i standardverktygsrader." -#: gtk/gtksettings.c:1015 +#: ../gtk/gtksettings.c:1089 msgid "Auto Mnemonics" msgstr "Automatiska snabbtangenter" -#: gtk/gtksettings.c:1016 -msgid "" -"Whether mnemonics should be automatically shown and hidden when the user " -"presses the mnemonic activator." -msgstr "" -"Huruvida snabbtangenter ska visas och döljas automatiskt när användaren " -"trycker på snabbtangentaktiveraren." +#: ../gtk/gtksettings.c:1090 +msgid "Whether mnemonics should be automatically shown and hidden when the user presses the mnemonic activator." +msgstr "Huruvida snabbtangenter ska visas och döljas automatiskt när användaren trycker på snabbtangentaktiveraren." -#: gtk/gtksettings.c:1041 +#: ../gtk/gtksettings.c:1115 msgid "Application prefers a dark theme" msgstr "Programmet föredrar ett mörk tema" -#: gtk/gtksettings.c:1042 +#: ../gtk/gtksettings.c:1116 msgid "Whether the application prefers to have a dark theme." msgstr "Huruvida programmet föredrar att ha ett mörkt tema." -#: gtk/gtksizegroup.c:341 +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "Visa knappbilder" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "Huruvida bilder ska visas på knappar" + +#: ../gtk/gtksettings.c:1140 +#: ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "Markera vid fokus" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "Huruvida ett fälts innehåll markeras då fältet får fokus" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "Tidsgräns för lösenordstips" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "Hur länge det senaste inmatade tecknet i dolda objekt ska visas" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "Visa menybilder" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "Huruvida bilder ska visas i menyer" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "Fördröjning innan utfällningsmenyer visas" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "Fördröjning innan undermenyer till en menyrad visas" + +#: ../gtk/gtksettings.c:1195 +msgid "Scrolled Window Placement" +msgstr "Placering för rullade fönster" + +#: ../gtk/gtksettings.c:1196 +msgid "Where the contents of scrolled windows are located with respect to the scrollbars, if not overridden by the scrolled window's own placement." +msgstr "Där innehållet i rullade fönster placeras i förhållande till rullningslisterna, om inte åsidosatt av det rullade fönstrets egna placering." + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "Kan ändra snabbtangenter" + +#: ../gtk/gtksettings.c:1206 +msgid "Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "Huruvida menysnabbtangenter kan ändras genom att en tangent trycks ovanför menyobjektet" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "Fördröjning innan undermenyer visas" + +#: ../gtk/gtksettings.c:1215 +msgid "Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "Minsta tid som pekaren måste stanna över ett menyobjekt innan undermenyn visas" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "Fördröjning innan en undermeny döljs" + +#: ../gtk/gtksettings.c:1225 +msgid "The time before hiding a submenu when the pointer is moving towards the submenu" +msgstr "Tiden innan en undermeny ska döljas när pekaren rör sig mot undermenyn" + +#: ../gtk/gtksettings.c:1235 +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "Huruvida innehållet av en valbar etikett väljs när den fokuseras" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "Anpassad palett" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "Palett att använda i färgväljaren" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "IM-förredigeringsstil" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "Hur inmatningsmetodens förredigeringssträng ska ritas" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM-statusstil" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "Hur inmatningsmetodens statusrad ska ritas" + +#: ../gtk/gtksizegroup.c:350 msgid "Mode" msgstr "Läge" -#: gtk/gtksizegroup.c:342 -msgid "" -"The directions in which the size group affects the requested sizes of its " -"component widgets" -msgstr "" -"De riktningar i vilka storleksgruppen påverkar de begärda storlekarna på " -"dess komponentwidgetar" +#: ../gtk/gtksizegroup.c:351 +msgid "The directions in which the size group affects the requested sizes of its component widgets" +msgstr "De riktningar i vilka storleksgruppen påverkar de begärda storlekarna på dess komponentwidgetar" -#: gtk/gtksizegroup.c:358 +#: ../gtk/gtksizegroup.c:367 msgid "Ignore hidden" msgstr "Ignorera dolda" -#: gtk/gtksizegroup.c:359 -msgid "" -"If TRUE, unmapped widgets are ignored when determining the size of the group" -msgstr "" -"Om detta är SANT kommer ej mappade widgetar att ignoreras vid avgörandet av " -"storleken på gruppen" +#: ../gtk/gtksizegroup.c:368 +msgid "If TRUE, unmapped widgets are ignored when determining the size of the group" +msgstr "Om detta är SANT kommer ej mappade widgetar att ignoreras vid avgörandet av storleken på gruppen" -#: gtk/gtkspinbutton.c:236 +#: ../gtk/gtkspinbutton.c:237 msgid "Climb Rate" msgstr "Klättringshastighet" -#: gtk/gtkspinbutton.c:256 +#: ../gtk/gtkspinbutton.c:257 msgid "Snap to Ticks" msgstr "Fäst vid tick" -#: gtk/gtkspinbutton.c:257 -msgid "" -"Whether erroneous values are automatically changed to a spin button's " -"nearest step increment" -msgstr "" -"Huruvida felaktiga värden automatiskt korrigeras till en snurrknapps " -"närmaste stegökning" +#: ../gtk/gtkspinbutton.c:258 +msgid "Whether erroneous values are automatically changed to a spin button's nearest step increment" +msgstr "Huruvida felaktiga värden automatiskt korrigeras till en snurrknapps närmaste stegökning" -#: gtk/gtkspinbutton.c:264 +#: ../gtk/gtkspinbutton.c:265 msgid "Numeric" msgstr "Numerisk" -#: gtk/gtkspinbutton.c:265 +#: ../gtk/gtkspinbutton.c:266 msgid "Whether non-numeric characters should be ignored" msgstr "Huruvida icke-numeriska tecken ska ignoreras" -#: gtk/gtkspinbutton.c:272 +#: ../gtk/gtkspinbutton.c:273 msgid "Wrap" msgstr "Börja om" -#: gtk/gtkspinbutton.c:273 +#: ../gtk/gtkspinbutton.c:274 msgid "Whether a spin button should wrap upon reaching its limits" msgstr "Huruvida en snurrknapp ska börja om då dess gränser nås" -#: gtk/gtkspinbutton.c:280 +#: ../gtk/gtkspinbutton.c:281 msgid "Update Policy" msgstr "Uppdateringspolicy" -#: gtk/gtkspinbutton.c:281 -msgid "" -"Whether the spin button should update always, or only when the value is legal" -msgstr "" -"Huruvida snurrknappen alltid ska uppdatera, eller endast då värdet är giltigt" +#: ../gtk/gtkspinbutton.c:282 +msgid "Whether the spin button should update always, or only when the value is legal" +msgstr "Huruvida snurrknappen alltid ska uppdatera, eller endast då värdet är giltigt" -#: gtk/gtkspinbutton.c:290 +#: ../gtk/gtkspinbutton.c:291 msgid "Reads the current value, or sets a new value" msgstr "Läser aktuellt värde, eller ställer in ett nytt värde" -#: gtk/gtkspinbutton.c:299 +#: ../gtk/gtkspinbutton.c:300 msgid "Style of bevel around the spin button" msgstr "Stil på avfasning runt snurrknappen" -#: gtk/gtkspinner.c:132 +#: ../gtk/gtkspinner.c:119 msgid "Whether the spinner is active" msgstr "Huruvida snurrväljaren är aktiv" -#: gtk/gtkspinner.c:146 +#: ../gtk/gtkspinner.c:135 msgid "Number of steps" msgstr "Antal steg" -#: gtk/gtkspinner.c:147 -msgid "" -"The number of steps for the spinner to complete a full loop. The animation " -"will complete a full cycle in one second by default (see #GtkSpinner:cycle-" -"duration)." -msgstr "" -"Antalet steg för att snurrväljaren ska fullföra ett helt varv. Animationen " -"kommer att fullgöra ett fullt varv på en sekund som standard (se #GtkSpinner:" -"cycle-duration)." +#: ../gtk/gtkspinner.c:136 +msgid "The number of steps for the spinner to complete a full loop. The animation will complete a full cycle in one second by default (see #GtkSpinner:cycle-duration)." +msgstr "Antalet steg för att snurrväljaren ska fullföra ett helt varv. Animationen kommer att fullgöra ett fullt varv på en sekund som standard (se #GtkSpinner:cycle-duration)." -#: gtk/gtkspinner.c:162 +#: ../gtk/gtkspinner.c:153 msgid "Animation duration" msgstr "Animeringslängd" -#: gtk/gtkspinner.c:163 -msgid "" -"The length of time in milliseconds for the spinner to complete a full loop" -msgstr "" -"Tidslängden i millisekunder för att snurrväljaren ska fullgöra ett varv" +#: ../gtk/gtkspinner.c:154 +msgid "The length of time in milliseconds for the spinner to complete a full loop" +msgstr "Tidslängden i millisekunder för att snurrväljaren ska fullgöra ett varv" -#: gtk/gtkstatusbar.c:199 -msgid "Has Resize Grip" -msgstr "Har handtag för storleksändring" - -#: gtk/gtkstatusbar.c:200 -msgid "Whether the statusbar has a grip for resizing the toplevel" -msgstr "Huruvida statusraden har ett handtag för storleksändring av toppnivån" - -#: gtk/gtkstatusbar.c:245 +#: ../gtk/gtkstatusbar.c:181 msgid "Style of bevel around the statusbar text" msgstr "Stil på avfasningen runt statusradstexten" -#: gtk/gtkstatusicon.c:270 +#: ../gtk/gtkstatusicon.c:270 msgid "The size of the icon" msgstr "Storleken på ikonen" -#: gtk/gtkstatusicon.c:280 +#: ../gtk/gtkstatusicon.c:280 msgid "The screen where this status icon will be displayed" msgstr "Skärmen där denna statusikon kommer att visas" -#: gtk/gtkstatusicon.c:288 -#, fuzzy +#: ../gtk/gtkstatusicon.c:288 msgid "Whether the status icon is visible" -msgstr "Huruvida statusikonen är synlig eller inte" +msgstr "Huruvida statusikonen är synlig" -#: gtk/gtkstatusicon.c:304 -#, fuzzy +#: ../gtk/gtkstatusicon.c:304 msgid "Whether the status icon is embedded" -msgstr "Huruvida statusikonen är inbäddad eller inte" +msgstr "Huruvida statusikonen är inbäddad" -#: gtk/gtkstatusicon.c:320 gtk/gtktrayicon-x11.c:125 +#: ../gtk/gtkstatusicon.c:320 +#: ../gtk/gtktrayicon-x11.c:125 msgid "The orientation of the tray" msgstr "Orienteringen för lådan" -#: gtk/gtkstatusicon.c:347 gtk/gtkwidget.c:863 +#: ../gtk/gtkstatusicon.c:347 +#: ../gtk/gtkwidget.c:1034 msgid "Has tooltip" msgstr "Har verktygstips" -#: gtk/gtkstatusicon.c:348 +#: ../gtk/gtkstatusicon.c:348 msgid "Whether this tray icon has a tooltip" msgstr "Huruvida denna brickikon har ett verktygstips" -#: gtk/gtkstatusicon.c:373 gtk/gtkwidget.c:884 +#: ../gtk/gtkstatusicon.c:373 +#: ../gtk/gtkwidget.c:1055 msgid "Tooltip Text" msgstr "Text för verktygstips" -#: gtk/gtkstatusicon.c:374 gtk/gtkwidget.c:885 gtk/gtkwidget.c:906 +#: ../gtk/gtkstatusicon.c:374 +#: ../gtk/gtkwidget.c:1056 +#: ../gtk/gtkwidget.c:1077 msgid "The contents of the tooltip for this widget" msgstr "Innehållet i verktygstipset för denna widget" -#: gtk/gtkstatusicon.c:397 gtk/gtkwidget.c:905 +#: ../gtk/gtkstatusicon.c:397 +#: ../gtk/gtkwidget.c:1076 msgid "Tooltip markup" msgstr "Verktygstips-markup" -#: gtk/gtkstatusicon.c:398 +#: ../gtk/gtkstatusicon.c:398 msgid "The contents of the tooltip for this tray icon" msgstr "Innehållet i verktygstipset för denna brickikon" -#: gtk/gtkstatusicon.c:416 +#: ../gtk/gtkstatusicon.c:416 msgid "The title of this tray icon" msgstr "Titeln för denna brickikon" -#: gtk/gtktable.c:148 +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "" + +#: ../gtk/gtkswitch.c:748 +#, fuzzy +msgid "Whether the switch is on or off" +msgstr "Huruvida widgeten är dubbelbuffrad eller inte" + +#: ../gtk/gtkswitch.c:782 +#, fuzzy +msgid "The minimum width of the handle" +msgstr "Minsta värdet på justeringen" + +#: ../gtk/gtktable.c:157 msgid "Rows" msgstr "Rader" -#: gtk/gtktable.c:149 +#: ../gtk/gtktable.c:158 msgid "The number of rows in the table" msgstr "Antalet rader i tabellen" -#: gtk/gtktable.c:157 +#: ../gtk/gtktable.c:166 msgid "Columns" msgstr "Kolumner" -#: gtk/gtktable.c:158 +#: ../gtk/gtktable.c:167 msgid "The number of columns in the table" msgstr "Antalet kolumner i tabellen" -#: gtk/gtktable.c:166 +#: ../gtk/gtktable.c:175 msgid "Row spacing" msgstr "Radutrymme" -#: gtk/gtktable.c:167 +#: ../gtk/gtktable.c:176 msgid "The amount of space between two consecutive rows" msgstr "Mängden utrymme mellan två efterföljande rader" -#: gtk/gtktable.c:175 +#: ../gtk/gtktable.c:184 msgid "Column spacing" msgstr "Kolumnutrymme" -#: gtk/gtktable.c:176 +#: ../gtk/gtktable.c:185 msgid "The amount of space between two consecutive columns" msgstr "Mängden utrymme mellan två efterföljande kolumner" -#: gtk/gtktable.c:185 +#: ../gtk/gtktable.c:194 msgid "If TRUE, the table cells are all the same width/height" msgstr "Om SANT betyder detta att alla tabellceller har samma bredd/höjd" -#: gtk/gtktable.c:192 +#: ../gtk/gtktable.c:201 msgid "Left attachment" msgstr "Vänsterfäste" -#: gtk/gtktable.c:199 +#: ../gtk/gtktable.c:208 msgid "Right attachment" msgstr "Högerfäste" -#: gtk/gtktable.c:200 +#: ../gtk/gtktable.c:209 msgid "The column number to attach the right side of a child widget to" msgstr "Det kolumnnummer som höger sida av en barnwidget ska fästas vid" -#: gtk/gtktable.c:206 +#: ../gtk/gtktable.c:215 msgid "Top attachment" msgstr "Övre fäste" -#: gtk/gtktable.c:207 +#: ../gtk/gtktable.c:216 msgid "The row number to attach the top of a child widget to" msgstr "Det radnummer som överkanten på en barnwidget ska fästas vid" -#: gtk/gtktable.c:213 +#: ../gtk/gtktable.c:222 msgid "Bottom attachment" msgstr "Nedre fäste" -#: gtk/gtktable.c:220 +#: ../gtk/gtktable.c:229 msgid "Horizontal options" msgstr "Horisontella alternativ" -#: gtk/gtktable.c:221 +#: ../gtk/gtktable.c:230 msgid "Options specifying the horizontal behaviour of the child" msgstr "Alternativ som anger det horisontella beteendet på barnet" -#: gtk/gtktable.c:227 +#: ../gtk/gtktable.c:236 msgid "Vertical options" msgstr "Vertikala alternativ" -#: gtk/gtktable.c:228 +#: ../gtk/gtktable.c:237 msgid "Options specifying the vertical behaviour of the child" msgstr "Alternativ som anger det vertikala beteendet på barnet" -#: gtk/gtktable.c:234 +#: ../gtk/gtktable.c:243 msgid "Horizontal padding" msgstr "Horisontell utfyllnad" -#: gtk/gtktable.c:235 -msgid "" -"Extra space to put between the child and its left and right neighbors, in " -"pixels" -msgstr "" -"Extra utrymme att lägga till mellan barnet och dess vänstra och högra " -"grannar, i bildpunkter" +#: ../gtk/gtktable.c:244 +msgid "Extra space to put between the child and its left and right neighbors, in pixels" +msgstr "Extra utrymme att lägga till mellan barnet och dess vänstra och högra grannar, i bildpunkter" -#: gtk/gtktable.c:241 +#: ../gtk/gtktable.c:250 msgid "Vertical padding" msgstr "Vertikal utfyllnad" -#: gtk/gtktable.c:242 -msgid "" -"Extra space to put between the child and its upper and lower neighbors, in " -"pixels" -msgstr "" -"Extra utrymme att lägga till mellan barnet och dess övre och nedre grannar, " -"i bildpunkter" +#: ../gtk/gtktable.c:251 +msgid "Extra space to put between the child and its upper and lower neighbors, in pixels" +msgstr "Extra utrymme att lägga till mellan barnet och dess övre och nedre grannar, i bildpunkter" -#: gtk/gtktextbuffer.c:192 +#: ../gtk/gtktextbuffer.c:191 msgid "Tag Table" msgstr "Taggtabell" -#: gtk/gtktextbuffer.c:193 +#: ../gtk/gtktextbuffer.c:192 msgid "Text Tag Table" msgstr "Texttaggtabell" -#: gtk/gtktextbuffer.c:211 +#: ../gtk/gtktextbuffer.c:210 msgid "Current text of the buffer" msgstr "Aktuell text i bufferten" -#: gtk/gtktextbuffer.c:225 +#: ../gtk/gtktextbuffer.c:224 msgid "Has selection" msgstr "Har markering" -#: gtk/gtktextbuffer.c:226 +#: ../gtk/gtktextbuffer.c:225 msgid "Whether the buffer has some text currently selected" msgstr "Huruvida bufferten har någon text för närvarande markerad" -#: gtk/gtktextbuffer.c:242 +#: ../gtk/gtktextbuffer.c:241 msgid "Cursor position" msgstr "Markörposition" -#: gtk/gtktextbuffer.c:243 -msgid "" -"The position of the insert mark (as offset from the beginning of the buffer)" -msgstr "" -"Positionen för infogningsmarkeringen (som position från början av bufferten)" +#: ../gtk/gtktextbuffer.c:242 +msgid "The position of the insert mark (as offset from the beginning of the buffer)" +msgstr "Positionen för infogningsmarkeringen (som position från början av bufferten)" -#: gtk/gtktextbuffer.c:258 +#: ../gtk/gtktextbuffer.c:257 msgid "Copy target list" msgstr "Kopiera mållista" -#: gtk/gtktextbuffer.c:259 -msgid "" -"The list of targets this buffer supports for clipboard copying and DND source" -msgstr "" -"Listan över mål som den här bufferten har stöd för urklippskopiering och dra-" -"och-släpp-källa" +#: ../gtk/gtktextbuffer.c:258 +msgid "The list of targets this buffer supports for clipboard copying and DND source" +msgstr "Listan över mål som den här bufferten har stöd för urklippskopiering och dra-och-släpp-källa" -#: gtk/gtktextbuffer.c:274 +#: ../gtk/gtktextbuffer.c:273 msgid "Paste target list" msgstr "Klistra in mållista" -#: gtk/gtktextbuffer.c:275 -msgid "" -"The list of targets this buffer supports for clipboard pasting and DND " -"destination" -msgstr "" -"Listan över mål som den här bufferten har stöd för urklippsinklistring och " -"dra-och-släpp-mål" +#: ../gtk/gtktextbuffer.c:274 +msgid "The list of targets this buffer supports for clipboard pasting and DND destination" +msgstr "Listan över mål som den här bufferten har stöd för urklippsinklistring och dra-och-släpp-mål" -#: gtk/gtktextmark.c:90 +#: ../gtk/gtktextmark.c:90 msgid "Mark name" msgstr "Markeringsnamn" -#: gtk/gtktextmark.c:97 +#: ../gtk/gtktextmark.c:97 msgid "Left gravity" msgstr "Vänstergravitet" -#: gtk/gtktextmark.c:98 +#: ../gtk/gtktextmark.c:98 msgid "Whether the mark has left gravity" msgstr "Huruvida markeringen har vänstergravitet" -#: gtk/gtktexttag.c:168 +#: ../gtk/gtktexttag.c:168 msgid "Tag name" msgstr "Taggnamn" -#: gtk/gtktexttag.c:169 +#: ../gtk/gtktexttag.c:169 msgid "Name used to refer to the text tag. NULL for anonymous tags" msgstr "Namn som används för att peka på texttaggen. NULL för anonyma taggar" -#: gtk/gtktexttag.c:187 +#: ../gtk/gtktexttag.c:187 msgid "Background color as a (possibly unallocated) GdkColor" msgstr "Bakgrundsfärg som en (möjligtvis oallokerad) GdkColor" -#: gtk/gtktexttag.c:194 +#: ../gtk/gtktexttag.c:194 msgid "Background full height" msgstr "Bakgrundens fullständiga höjd" -#: gtk/gtktexttag.c:195 -msgid "" -"Whether the background color fills the entire line height or only the height " -"of the tagged characters" -msgstr "" -"Huruvida bakgrundsfärgen fyller hela radhöjden eller endast höjden på de " -"taggade tecknen" +#: ../gtk/gtktexttag.c:195 +msgid "Whether the background color fills the entire line height or only the height of the tagged characters" +msgstr "Huruvida bakgrundsfärgen fyller hela radhöjden eller endast höjden på de taggade tecknen" -#: gtk/gtktexttag.c:211 +#: ../gtk/gtktexttag.c:211 msgid "Foreground color as a (possibly unallocated) GdkColor" msgstr "Förgrundsfärg som en (möjligtvis oallokerad) GdkColor" -#: gtk/gtktexttag.c:218 +#: ../gtk/gtktexttag.c:218 msgid "Text direction" msgstr "Textriktning" -#: gtk/gtktexttag.c:219 +#: ../gtk/gtktexttag.c:219 msgid "Text direction, e.g. right-to-left or left-to-right" msgstr "Textriktning, d.v.s. höger till vänster eller vänster till höger" -#: gtk/gtktexttag.c:268 +#: ../gtk/gtktexttag.c:268 msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" msgstr "Typsnittsstil som en PangoStyle, t.ex. PANGO_STYLE_ITALIC" -#: gtk/gtktexttag.c:277 +#: ../gtk/gtktexttag.c:277 msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" msgstr "Typsnittsvariant som en PangoVariant, t.ex. PANGO_VARIANT_SMALL_CAPS" -#: gtk/gtktexttag.c:286 -msgid "" -"Font weight as an integer, see predefined values in PangoWeight; for " -"example, PANGO_WEIGHT_BOLD" -msgstr "" -"Typsnittsvikt som ett heltal, se fördefinierade värden i PangoWeight; t.ex. " -"PANGO_WEIGHT_BOLD" +#: ../gtk/gtktexttag.c:286 +msgid "Font weight as an integer, see predefined values in PangoWeight; for example, PANGO_WEIGHT_BOLD" +msgstr "Typsnittsvikt som ett heltal, se fördefinierade värden i PangoWeight; t.ex. PANGO_WEIGHT_BOLD" -#: gtk/gtktexttag.c:297 +#: ../gtk/gtktexttag.c:297 msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" msgstr "Typsnittsbredd som en PangoStretch, t.ex. PANGO_STRETCH_CONDENSED" -#: gtk/gtktexttag.c:306 +#: ../gtk/gtktexttag.c:306 msgid "Font size in Pango units" msgstr "Typsnittsstorlek i Pango-enheter" -#: gtk/gtktexttag.c:316 -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 " -"such as PANGO_SCALE_X_LARGE" -msgstr "" -"Typsnittsstorlek som en skalfaktor relativt standardtypsnittsstorleken. " -"Detta anpassar sig till temaändringar med mera och rekommenderas. Pango " -"fördefinierar en del skalor som exempelvis PANGO_SCALE_X_LARGE" +#: ../gtk/gtktexttag.c:316 +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 such as PANGO_SCALE_X_LARGE" +msgstr "Typsnittsstorlek som en skalfaktor relativt standardtypsnittsstorleken. Detta anpassar sig till temaändringar med mera och rekommenderas. Pango fördefinierar en del skalor som exempelvis PANGO_SCALE_X_LARGE" -#: gtk/gtktexttag.c:336 gtk/gtktextview.c:686 +#: ../gtk/gtktexttag.c:336 +#: ../gtk/gtktextview.c:702 msgid "Left, right, or center justification" msgstr "Vänsterjustering, högerjustering eller centrering" -#: gtk/gtktexttag.c:355 -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." -msgstr "" -"Språket som denna text är i, angivet som ISO-kod. Pango kan använda detta " -"som ett tips vid rendering av text. Om detta inte är angivet kommer ett " -"lämpligt standardalternativ att användas." +#: ../gtk/gtktexttag.c:355 +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." +msgstr "Språket som denna text är i, angivet som ISO-kod. Pango kan använda detta som ett tips vid rendering av text. Om detta inte är angivet kommer ett lämpligt standardalternativ att användas." -#: gtk/gtktexttag.c:362 +#: ../gtk/gtktexttag.c:362 msgid "Left margin" msgstr "Vänstermarginal" -#: gtk/gtktexttag.c:363 gtk/gtktextview.c:695 +#: ../gtk/gtktexttag.c:363 +#: ../gtk/gtktextview.c:711 msgid "Width of the left margin in pixels" msgstr "Bredd på vänstermarginalen i bildpunkter" -#: gtk/gtktexttag.c:372 +#: ../gtk/gtktexttag.c:372 msgid "Right margin" msgstr "Högermarginal" -#: gtk/gtktexttag.c:373 gtk/gtktextview.c:705 +#: ../gtk/gtktexttag.c:373 +#: ../gtk/gtktextview.c:721 msgid "Width of the right margin in pixels" msgstr "Bredd på högermarginalen i bildpunkter" -#: gtk/gtktexttag.c:383 gtk/gtktextview.c:714 +#: ../gtk/gtktexttag.c:383 +#: ../gtk/gtktextview.c:730 msgid "Indent" msgstr "Gör indrag" -#: gtk/gtktexttag.c:384 gtk/gtktextview.c:715 +#: ../gtk/gtktexttag.c:384 +#: ../gtk/gtktextview.c:731 msgid "Amount to indent the paragraph, in pixels" msgstr "Hur mycket stycket ska dras in, i bildpunkter" -#: gtk/gtktexttag.c:395 -msgid "" -"Offset of text above the baseline (below the baseline if rise is negative) " -"in Pango units" -msgstr "" -"Avstånd för texten ovanför baslinjen (nedanför baslinjen om höjning är " -"negativt) i Pango-enheter" +#: ../gtk/gtktexttag.c:395 +msgid "Offset of text above the baseline (below the baseline if rise is negative) in Pango units" +msgstr "Avstånd för texten ovanför baslinjen (nedanför baslinjen om höjning är negativt) i Pango-enheter" -#: gtk/gtktexttag.c:404 +#: ../gtk/gtktexttag.c:404 msgid "Pixels above lines" msgstr "Bildpunkter ovanför rader" -#: gtk/gtktexttag.c:405 gtk/gtktextview.c:639 +#: ../gtk/gtktexttag.c:405 +#: ../gtk/gtktextview.c:655 msgid "Pixels of blank space above paragraphs" msgstr "Bildpunkter med tomt utrymme ovanför stycken" -#: gtk/gtktexttag.c:414 +#: ../gtk/gtktexttag.c:414 msgid "Pixels below lines" msgstr "Bildpunkter nedanför rader" -#: gtk/gtktexttag.c:415 gtk/gtktextview.c:649 +#: ../gtk/gtktexttag.c:415 +#: ../gtk/gtktextview.c:665 msgid "Pixels of blank space below paragraphs" msgstr "Bildpunkter med tomt utrymme nedanför stycken" -#: gtk/gtktexttag.c:424 +#: ../gtk/gtktexttag.c:424 msgid "Pixels inside wrap" msgstr "Bildpunkter mellan radbrytningar" -#: gtk/gtktexttag.c:425 gtk/gtktextview.c:659 +#: ../gtk/gtktexttag.c:425 +#: ../gtk/gtktextview.c:675 msgid "Pixels of blank space between wrapped lines in a paragraph" msgstr "Bildpunkter med tomt utrymme mellan radbrytningar i ett stycke" -#: gtk/gtktexttag.c:452 gtk/gtktextview.c:677 -msgid "" -"Whether to wrap lines never, at word boundaries, or at character boundaries" -msgstr "" -"Huruvida radbrytningar inte alls ska ske, om de ska ske mellan ord, eller " -"mellan tecken" +#: ../gtk/gtktexttag.c:452 +#: ../gtk/gtktextview.c:693 +msgid "Whether to wrap lines never, at word boundaries, or at character boundaries" +msgstr "Huruvida radbrytningar inte alls ska ske, om de ska ske mellan ord, eller mellan tecken" -#: gtk/gtktexttag.c:461 gtk/gtktextview.c:724 +#: ../gtk/gtktexttag.c:461 +#: ../gtk/gtktextview.c:740 msgid "Tabs" msgstr "Tabbsteg" -#: gtk/gtktexttag.c:462 gtk/gtktextview.c:725 +#: ../gtk/gtktexttag.c:462 +#: ../gtk/gtktextview.c:741 msgid "Custom tabs for this text" msgstr "Anpassade tabbsteg för denna text" -#: gtk/gtktexttag.c:480 +#: ../gtk/gtktexttag.c:480 msgid "Invisible" msgstr "Osynlig" -#: gtk/gtktexttag.c:481 +#: ../gtk/gtktexttag.c:481 msgid "Whether this text is hidden." msgstr "Huruvida denna text är dold." -#: gtk/gtktexttag.c:495 +#: ../gtk/gtktexttag.c:495 msgid "Paragraph background color name" msgstr "Namn på styckebakgrundsfärg" -#: gtk/gtktexttag.c:496 +#: ../gtk/gtktexttag.c:496 msgid "Paragraph background color as a string" msgstr "Styckebakgrundsfärg som en sträng" -#: gtk/gtktexttag.c:511 +#: ../gtk/gtktexttag.c:511 msgid "Paragraph background color" msgstr "Styckebakgrundsfärg" -#: gtk/gtktexttag.c:512 +#: ../gtk/gtktexttag.c:512 msgid "Paragraph background color as a (possibly unallocated) GdkColor" msgstr "Styckebakgrundsfärg som en (möjligtvis oallokerad) GdkColor" -#: gtk/gtktexttag.c:530 +#: ../gtk/gtktexttag.c:530 msgid "Margin Accumulates" msgstr "Marginaler ackumuleras" -#: gtk/gtktexttag.c:531 +#: ../gtk/gtktexttag.c:531 msgid "Whether left and right margins accumulate." msgstr "Huruvida vänstra och högra marginalerna ackumuleras." -#: gtk/gtktexttag.c:544 +#: ../gtk/gtktexttag.c:544 msgid "Background full height set" msgstr "Bakgrund i fullständig höjd inställd" -#: gtk/gtktexttag.c:545 +#: ../gtk/gtktexttag.c:545 msgid "Whether this tag affects background height" msgstr "Huruvida denna tagg påverkar bakgrundens höjd" -#: gtk/gtktexttag.c:584 +#: ../gtk/gtktexttag.c:584 msgid "Justification set" msgstr "Justering inställd" -#: gtk/gtktexttag.c:585 +#: ../gtk/gtktexttag.c:585 msgid "Whether this tag affects paragraph justification" msgstr "Huruvida denna tagg påverkar styckets justering" -#: gtk/gtktexttag.c:592 +#: ../gtk/gtktexttag.c:592 msgid "Left margin set" msgstr "Vänstermarginal inställd" -#: gtk/gtktexttag.c:593 +#: ../gtk/gtktexttag.c:593 msgid "Whether this tag affects the left margin" msgstr "Huruvida denna tagg påverkar vänstermarginalen" -#: gtk/gtktexttag.c:596 +#: ../gtk/gtktexttag.c:596 msgid "Indent set" msgstr "Indrag inställt" -#: gtk/gtktexttag.c:597 +#: ../gtk/gtktexttag.c:597 msgid "Whether this tag affects indentation" msgstr "Huruvida denna tagg påverkar indraget" -#: gtk/gtktexttag.c:604 +#: ../gtk/gtktexttag.c:604 msgid "Pixels above lines set" msgstr "Bildpunkter ovanför rader inställt" -#: gtk/gtktexttag.c:605 gtk/gtktexttag.c:609 +#: ../gtk/gtktexttag.c:605 +#: ../gtk/gtktexttag.c:609 msgid "Whether this tag affects the number of pixels above lines" msgstr "Huruvida denna tagg påverkar antalet bildpunkter ovanför rader" -#: gtk/gtktexttag.c:608 +#: ../gtk/gtktexttag.c:608 msgid "Pixels below lines set" msgstr "Bildpunkter nedanför rader inställt" -#: gtk/gtktexttag.c:612 +#: ../gtk/gtktexttag.c:612 msgid "Pixels inside wrap set" msgstr "Bildpunkter inuti radbrytningar inställt" -#: gtk/gtktexttag.c:613 +#: ../gtk/gtktexttag.c:613 msgid "Whether this tag affects the number of pixels between wrapped lines" msgstr "Huruvida denna tagg påverkar antalet bildpunkter mellan radbrytningar" -#: gtk/gtktexttag.c:620 +#: ../gtk/gtktexttag.c:620 msgid "Right margin set" msgstr "Högermarginal inställd" -#: gtk/gtktexttag.c:621 +#: ../gtk/gtktexttag.c:621 msgid "Whether this tag affects the right margin" msgstr "Huruvida denna tagg påverkar högermarginalen" -#: gtk/gtktexttag.c:628 +#: ../gtk/gtktexttag.c:628 msgid "Wrap mode set" msgstr "Radbrytningsläge inställt" -#: gtk/gtktexttag.c:629 +#: ../gtk/gtktexttag.c:629 msgid "Whether this tag affects line wrap mode" msgstr "Huruvida denna tagg påverkar radbrytningsläget" -#: gtk/gtktexttag.c:632 +#: ../gtk/gtktexttag.c:632 msgid "Tabs set" msgstr "Tabbsteg inställt" -#: gtk/gtktexttag.c:633 +#: ../gtk/gtktexttag.c:633 msgid "Whether this tag affects tabs" msgstr "Huruvida denna tagg påverkar tabbsteg" -#: gtk/gtktexttag.c:636 +#: ../gtk/gtktexttag.c:636 msgid "Invisible set" msgstr "Osynlig inställd" -#: gtk/gtktexttag.c:637 +#: ../gtk/gtktexttag.c:637 msgid "Whether this tag affects text visibility" msgstr "Huruvida denna tagg påverkar textens synlighet" -#: gtk/gtktexttag.c:640 +#: ../gtk/gtktexttag.c:640 msgid "Paragraph background set" msgstr "Styckebakgrund inställd" -#: gtk/gtktexttag.c:641 +#: ../gtk/gtktexttag.c:641 msgid "Whether this tag affects the paragraph background color" msgstr "Huruvida denna tagg påverkar styckebakgrundsfärgen" -#: gtk/gtktextview.c:638 +#: ../gtk/gtktextview.c:654 msgid "Pixels Above Lines" msgstr "Bildpunkter ovanför rader" -#: gtk/gtktextview.c:648 +#: ../gtk/gtktextview.c:664 msgid "Pixels Below Lines" msgstr "Bildpunkter nedanför rader" -#: gtk/gtktextview.c:658 +#: ../gtk/gtktextview.c:674 msgid "Pixels Inside Wrap" msgstr "Bildpunkter mellan radbrytningar" -#: gtk/gtktextview.c:676 +#: ../gtk/gtktextview.c:692 msgid "Wrap Mode" msgstr "Radbrytningsläge" -#: gtk/gtktextview.c:694 +#: ../gtk/gtktextview.c:710 msgid "Left Margin" msgstr "Vänstermarginal" -#: gtk/gtktextview.c:704 +#: ../gtk/gtktextview.c:720 msgid "Right Margin" msgstr "Högermarginal" -#: gtk/gtktextview.c:732 +#: ../gtk/gtktextview.c:748 msgid "Cursor Visible" msgstr "Synlig markör" -#: gtk/gtktextview.c:733 +#: ../gtk/gtktextview.c:749 msgid "If the insertion cursor is shown" msgstr "Huruvida insättningsmarkören visas" -#: gtk/gtktextview.c:740 +#: ../gtk/gtktextview.c:756 msgid "Buffer" msgstr "Buffert" -#: gtk/gtktextview.c:741 +#: ../gtk/gtktextview.c:757 msgid "The buffer which is displayed" msgstr "Bufferten som visas" -#: gtk/gtktextview.c:749 +#: ../gtk/gtktextview.c:765 msgid "Whether entered text overwrites existing contents" msgstr "Huruvida inmatad text skriver över befintligt innehåll" -#: gtk/gtktextview.c:756 +#: ../gtk/gtktextview.c:772 msgid "Accepts tab" msgstr "Accepterar tabulator" -#: gtk/gtktextview.c:757 +#: ../gtk/gtktextview.c:773 msgid "Whether Tab will result in a tab character being entered" -msgstr "" -"Huruvida ett tabulatorsteg kommer att resultera i att ett tabulatortecken " -"anges" +msgstr "Huruvida ett tabulatorsteg kommer att resultera i att ett tabulatortecken anges" -#: gtk/gtktextview.c:786 +#: ../gtk/gtktextview.c:808 msgid "Error underline color" msgstr "Felunderstrykningsfärg" -#: gtk/gtktextview.c:787 +#: ../gtk/gtktextview.c:809 msgid "Color with which to draw error-indication underlines" msgstr "Färg att rita felindikerande understrykningar med" -#: gtk/gtktoggleaction.c:118 +#: ../gtk/gtktoggleaction.c:118 msgid "Create the same proxies as a radio action" msgstr "Skapa samma ställföreträdare som en radioåtgärd" -#: gtk/gtktoggleaction.c:119 +#: ../gtk/gtktoggleaction.c:119 msgid "Whether the proxies for this action look like radio action proxies" -msgstr "" -"Huruvida ställföreträdarna för denna åtgärd ser ut som ställföreträdare för " -"radioåtgärder" +msgstr "Huruvida ställföreträdarna för denna åtgärd ser ut som ställföreträdare för radioåtgärder" -#: gtk/gtktoggleaction.c:134 -#, fuzzy +#: ../gtk/gtktoggleaction.c:134 msgid "Whether the toggle action should be active" -msgstr "Om växlingsåtgärden ska vara aktiv in eller inte" +msgstr "Om växlingsåtgärden ska vara aktiv" -#: gtk/gtktogglebutton.c:116 gtk/gtktoggletoolbutton.c:113 -#, fuzzy +#: ../gtk/gtktogglebutton.c:126 +#: ../gtk/gtktoggletoolbutton.c:113 msgid "If the toggle button should be pressed in" -msgstr "Om växlingsknappen ska vara nedtryckt eller inte" +msgstr "Om växlingsknappen ska vara nedtryckt" -#: gtk/gtktogglebutton.c:124 +#: ../gtk/gtktogglebutton.c:134 msgid "If the toggle button is in an \"in between\" state" msgstr "Om växlingsknappen är i ett \"mellanläge\"" -#: gtk/gtktogglebutton.c:131 +#: ../gtk/gtktogglebutton.c:141 msgid "Draw Indicator" msgstr "Ritningsindikator" -#: gtk/gtktogglebutton.c:132 +#: ../gtk/gtktogglebutton.c:142 msgid "If the toggle part of the button is displayed" msgstr "Om växlingsdelen av knappen visas" -#: gtk/gtktoolbar.c:465 gtk/gtktoolpalette.c:1033 +#: ../gtk/gtktoolbar.c:490 +#: ../gtk/gtktoolpalette.c:1060 msgid "Toolbar Style" msgstr "Stil på verktygsrad" -#: gtk/gtktoolbar.c:466 +#: ../gtk/gtktoolbar.c:491 msgid "How to draw the toolbar" msgstr "Hur verktygsraden ska ritas" -#: gtk/gtktoolbar.c:473 +#: ../gtk/gtktoolbar.c:498 msgid "Show Arrow" msgstr "Visa pil" -#: gtk/gtktoolbar.c:474 +#: ../gtk/gtktoolbar.c:499 msgid "If an arrow should be shown if the toolbar doesn't fit" msgstr "Om en pil ska visas om verktygsraden inte passar" -#: gtk/gtktoolbar.c:495 +#: ../gtk/gtktoolbar.c:520 msgid "Size of icons in this toolbar" msgstr "Storlek på ikoner i denna verktygsrad" -#: gtk/gtktoolbar.c:510 gtk/gtktoolpalette.c:1019 +#: ../gtk/gtktoolbar.c:535 +#: ../gtk/gtktoolpalette.c:1046 msgid "Icon size set" msgstr "Ikonstorlek inställd" -#: gtk/gtktoolbar.c:511 gtk/gtktoolpalette.c:1020 +#: ../gtk/gtktoolbar.c:536 +#: ../gtk/gtktoolpalette.c:1047 msgid "Whether the icon-size property has been set" msgstr "Huruvida egenskapen ikonstorlek har ställts in" -#: gtk/gtktoolbar.c:520 +#: ../gtk/gtktoolbar.c:545 msgid "Whether the item should receive extra space when the toolbar grows" msgstr "Huruvida objektet ska få extra utrymme när verktygsraden växer" -#: gtk/gtktoolbar.c:528 gtk/gtktoolitemgroup.c:1625 +#: ../gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolitemgroup.c:1642 msgid "Whether the item should be the same size as other homogeneous items" msgstr "Huruvida objektet ska vara av samma storlek som andra liknande objekt" -#: gtk/gtktoolbar.c:535 +#: ../gtk/gtktoolbar.c:560 msgid "Spacer size" msgstr "Storlek på utfyllnad" -#: gtk/gtktoolbar.c:536 +#: ../gtk/gtktoolbar.c:561 msgid "Size of spacers" msgstr "Storlek på utfyllnad" -#: gtk/gtktoolbar.c:545 +#: ../gtk/gtktoolbar.c:570 msgid "Amount of border space between the toolbar shadow and the buttons" msgstr "Mängden kantutrymme mellan skuggan från verktygsraden och knapparna" -#: gtk/gtktoolbar.c:553 +#: ../gtk/gtktoolbar.c:578 msgid "Maximum child expand" msgstr "Maximal barnexpanderare" -#: gtk/gtktoolbar.c:554 +#: ../gtk/gtktoolbar.c:579 msgid "Maximum amount of space an expandable item will be given" msgstr "Maximal mängd utrymme som ett expanderbart objekt ska ges" -#: gtk/gtktoolbar.c:562 +#: ../gtk/gtktoolbar.c:587 msgid "Space style" msgstr "Stil på utfyllnad" -#: gtk/gtktoolbar.c:563 +#: ../gtk/gtktoolbar.c:588 msgid "Whether spacers are vertical lines or just blank" msgstr "Huruvida utfyllnad är vertikala linjer eller enbart tomt" -#: gtk/gtktoolbar.c:570 +#: ../gtk/gtktoolbar.c:595 msgid "Button relief" msgstr "Knapprelief" -#: gtk/gtktoolbar.c:571 +#: ../gtk/gtktoolbar.c:596 msgid "Type of bevel around toolbar buttons" msgstr "Typ av avfasning runt verktygsradsknappar" -#: gtk/gtktoolbar.c:578 +#: ../gtk/gtktoolbar.c:603 msgid "Style of bevel around the toolbar" msgstr "Stil på avfasning runt verktygsraden" -#: gtk/gtktoolbutton.c:203 +#: ../gtk/gtktoolbutton.c:203 msgid "Text to show in the item." msgstr "Text att visa i objektet." -#: gtk/gtktoolbutton.c:210 -msgid "" -"If set, an underline in the label property indicates that the next character " -"should be used for the mnemonic accelerator key in the overflow menu" -msgstr "" -"Om detta är angivet kommer en understrykning i etikettegenskapen att " -"indikera att nästa tecken ska användas som en genvägstangent i spillmenyn" +#: ../gtk/gtktoolbutton.c:210 +msgid "If set, an underline in the label property indicates that the next character should be used for the mnemonic accelerator key in the overflow menu" +msgstr "Om detta är angivet kommer en understrykning i etikettegenskapen att indikera att nästa tecken ska användas som en genvägstangent i spillmenyn" -#: gtk/gtktoolbutton.c:217 +#: ../gtk/gtktoolbutton.c:217 msgid "Widget to use as the item label" msgstr "Widget att använda som objektetikett" -#: gtk/gtktoolbutton.c:223 +#: ../gtk/gtktoolbutton.c:223 msgid "Stock Id" msgstr "Standard-id" -#: gtk/gtktoolbutton.c:224 +#: ../gtk/gtktoolbutton.c:224 msgid "The stock icon displayed on the item" msgstr "Standardikonen som visas på objektet" -#: gtk/gtktoolbutton.c:240 +#: ../gtk/gtktoolbutton.c:240 msgid "Icon name" msgstr "Ikonstorlek" -#: gtk/gtktoolbutton.c:241 +#: ../gtk/gtktoolbutton.c:241 msgid "The name of the themed icon displayed on the item" msgstr "Namnet på temaikonen som visas på objektet" -#: gtk/gtktoolbutton.c:247 +#: ../gtk/gtktoolbutton.c:247 msgid "Icon widget" msgstr "Ikonwidget" -#: gtk/gtktoolbutton.c:248 +#: ../gtk/gtktoolbutton.c:248 msgid "Icon widget to display in the item" msgstr "Ikonsamling att visa i objektet" -#: gtk/gtktoolbutton.c:261 +#: ../gtk/gtktoolbutton.c:261 msgid "Icon spacing" msgstr "Ikonutrymme" -#: gtk/gtktoolbutton.c:262 +#: ../gtk/gtktoolbutton.c:262 msgid "Spacing in pixels between the icon and label" msgstr "Utrymme mellan ikonen och etikett (i bildpunkter)" -#: gtk/gtktoolitem.c:201 -msgid "" -"Whether the toolbar item is considered important. When TRUE, toolbar buttons " -"show text in GTK_TOOLBAR_BOTH_HORIZ mode" -msgstr "" -"Huruvida verktygsradsobjektet är viktigt. Då detta är SANT visar " -"verktygsradsknappar text i GTK_TOOLBAR_BOTH_HORIZ-läge" +#: ../gtk/gtktoolitem.c:210 +msgid "Whether the toolbar item is considered important. When TRUE, toolbar buttons show text in GTK_TOOLBAR_BOTH_HORIZ mode" +msgstr "Huruvida verktygsradsobjektet är viktigt. Då detta är SANT visar verktygsradsknappar text i GTK_TOOLBAR_BOTH_HORIZ-läge" -#: gtk/gtktoolitemgroup.c:1572 +#: ../gtk/gtktoolitemgroup.c:1589 msgid "The human-readable title of this item group" msgstr "En läsbar titel för denna objektgrupp" -#: gtk/gtktoolitemgroup.c:1579 +#: ../gtk/gtktoolitemgroup.c:1596 msgid "A widget to display in place of the usual label" msgstr "En widget att visa istället för den vanliga etiketten" -#: gtk/gtktoolitemgroup.c:1585 +#: ../gtk/gtktoolitemgroup.c:1602 msgid "Collapsed" msgstr "Utfälld" -#: gtk/gtktoolitemgroup.c:1586 +#: ../gtk/gtktoolitemgroup.c:1603 #, fuzzy msgid "Whether the group has been collapsed and items are hidden" msgstr "Huruvida gruppen har fällts ut och objekten är dolda" -#: gtk/gtktoolitemgroup.c:1592 +#: ../gtk/gtktoolitemgroup.c:1609 msgid "ellipsize" msgstr "elliptisera" -#: gtk/gtktoolitemgroup.c:1593 +#: ../gtk/gtktoolitemgroup.c:1610 msgid "Ellipsize for item group headers" msgstr "Elliptisera för objektgruppens rubriker" -#: gtk/gtktoolitemgroup.c:1599 +#: ../gtk/gtktoolitemgroup.c:1616 msgid "Header Relief" msgstr "Rubrikrelief" -#: gtk/gtktoolitemgroup.c:1600 +#: ../gtk/gtktoolitemgroup.c:1617 msgid "Relief of the group header button" msgstr "Relief för gruppens rubrikknapp" -#: gtk/gtktoolitemgroup.c:1615 +#: ../gtk/gtktoolitemgroup.c:1632 msgid "Header Spacing" msgstr "Rubrikutfyllnad" -#: gtk/gtktoolitemgroup.c:1616 +#: ../gtk/gtktoolitemgroup.c:1633 msgid "Spacing between expander arrow and caption" msgstr "Utrymme mellan expanderarpil och text" -#: gtk/gtktoolitemgroup.c:1632 +#: ../gtk/gtktoolitemgroup.c:1649 msgid "Whether the item should receive extra space when the group grows" msgstr "Huruvida objektet ska få extra utrymme när gruppen växer" -#: gtk/gtktoolitemgroup.c:1639 +#: ../gtk/gtktoolitemgroup.c:1656 msgid "Whether the item should fill the available space" msgstr "Huruvida objektet ska fylla upp tillgängligt utrymme" -#: gtk/gtktoolitemgroup.c:1645 +#: ../gtk/gtktoolitemgroup.c:1662 msgid "New Row" msgstr "Ny rad" -#: gtk/gtktoolitemgroup.c:1646 +#: ../gtk/gtktoolitemgroup.c:1663 msgid "Whether the item should start a new row" msgstr "Huruvida objektet ska påbörja en ny rad" -#: gtk/gtktoolitemgroup.c:1653 +#: ../gtk/gtktoolitemgroup.c:1670 msgid "Position of the item within this group" msgstr "Position för objektet inom denna grupp" -#: gtk/gtktoolpalette.c:1004 +#: ../gtk/gtktoolpalette.c:1031 msgid "Size of icons in this tool palette" msgstr "Storlek på ikoner i denna verktygspalett" -#: gtk/gtktoolpalette.c:1034 +#: ../gtk/gtktoolpalette.c:1061 msgid "Style of items in the tool palette" msgstr "Stil för objekten i verktygspaletten" -#: gtk/gtktoolpalette.c:1050 +#: ../gtk/gtktoolpalette.c:1077 msgid "Exclusive" msgstr "Exklusiv" -#: gtk/gtktoolpalette.c:1051 +#: ../gtk/gtktoolpalette.c:1078 msgid "Whether the item group should be the only expanded at a given time" msgstr "Huruvida objektgruppen ska vara den enda utfällda på angiven tid" -#: gtk/gtktoolpalette.c:1066 -msgid "" -"Whether the item group should receive extra space when the palette grows" +#: ../gtk/gtktoolpalette.c:1093 +msgid "Whether the item group should receive extra space when the palette grows" msgstr "Huruvida objektgruppen ska få extra utrymme när paletten växer" -#: gtk/gtktrayicon-x11.c:134 +#: ../gtk/gtktrayicon-x11.c:134 msgid "Foreground color for symbolic icons" msgstr "Förgrundsfärg för symboliska ikoner" -#: gtk/gtktrayicon-x11.c:141 +#: ../gtk/gtktrayicon-x11.c:141 msgid "Error color" msgstr "Felfärg" -#: gtk/gtktrayicon-x11.c:142 +#: ../gtk/gtktrayicon-x11.c:142 msgid "Error color for symbolic icons" msgstr "Felfärg för symboliska ikoner" -#: gtk/gtktrayicon-x11.c:149 +#: ../gtk/gtktrayicon-x11.c:149 msgid "Warning color" msgstr "Varningsfärg" -#: gtk/gtktrayicon-x11.c:150 +#: ../gtk/gtktrayicon-x11.c:150 msgid "Warning color for symbolic icons" msgstr "Varningsfärg för symboliska ikoner" -#: gtk/gtktrayicon-x11.c:157 +#: ../gtk/gtktrayicon-x11.c:157 msgid "Success color" msgstr "Lyckad färg" -#: gtk/gtktrayicon-x11.c:158 +#: ../gtk/gtktrayicon-x11.c:158 msgid "Success color for symbolic icons" msgstr "Lyckad färg för symboliska ikoner" -#: gtk/gtktrayicon-x11.c:166 +#: ../gtk/gtktrayicon-x11.c:166 msgid "Padding that should be put around icons in the tray" msgstr "Utfyllnad som ska läggas runt ikoner i lådan" -#: gtk/gtktreemodelsort.c:278 +#: ../gtk/gtktreemodelsort.c:310 msgid "TreeModelSort Model" msgstr "Modell för TreeModelSort" -#: gtk/gtktreemodelsort.c:279 +#: ../gtk/gtktreemodelsort.c:311 msgid "The model for the TreeModelSort to sort" msgstr "Modell för TreeModelSort att sortera" -#: gtk/gtktreeview.c:563 +#: ../gtk/gtktreeview.c:988 msgid "TreeView Model" msgstr "Trädvymodell" -#: gtk/gtktreeview.c:564 +#: ../gtk/gtktreeview.c:989 msgid "The model for the tree view" msgstr "Modell för trädvyn" -#: gtk/gtktreeview.c:572 -msgid "Horizontal Adjustment for the widget" -msgstr "Horisontell justering för widgeten" - -#: gtk/gtktreeview.c:580 -msgid "Vertical Adjustment for the widget" -msgstr "Vertikal justering för widgeten" - -#: gtk/gtktreeview.c:587 +#: ../gtk/gtktreeview.c:1001 msgid "Headers Visible" msgstr "Huvuden är synliga" -#: gtk/gtktreeview.c:588 +#: ../gtk/gtktreeview.c:1002 msgid "Show the column header buttons" msgstr "Visa knappar i kolumnhuvuden" -#: gtk/gtktreeview.c:595 +#: ../gtk/gtktreeview.c:1009 msgid "Headers Clickable" msgstr "Huvuden är klickbara" -#: gtk/gtktreeview.c:596 +#: ../gtk/gtktreeview.c:1010 msgid "Column headers respond to click events" msgstr "Kolumnhuvuden svarar på klickhändelser" -#: gtk/gtktreeview.c:603 +#: ../gtk/gtktreeview.c:1017 msgid "Expander Column" msgstr "Expanderarkolumn" -#: gtk/gtktreeview.c:604 +#: ../gtk/gtktreeview.c:1018 msgid "Set the column for the expander column" msgstr "Ställ in kolumnen för expanderarkolumnen" -#: gtk/gtktreeview.c:619 +#: ../gtk/gtktreeview.c:1033 msgid "Rules Hint" msgstr "Regeltips" -#: gtk/gtktreeview.c:620 +#: ../gtk/gtktreeview.c:1034 msgid "Set a hint to the theme engine to draw rows in alternating colors" msgstr "Ställ in ett tips för temamotorn att rita rader i alternerande färger" -#: gtk/gtktreeview.c:627 +#: ../gtk/gtktreeview.c:1041 msgid "Enable Search" msgstr "Använd sökning" -#: gtk/gtktreeview.c:628 +#: ../gtk/gtktreeview.c:1042 msgid "View allows user to search through columns interactively" msgstr "Vyn tillåter användaren att söka igenom kolumner interaktivt" -#: gtk/gtktreeview.c:635 +#: ../gtk/gtktreeview.c:1049 msgid "Search Column" msgstr "Sök kolumn" -#: gtk/gtktreeview.c:636 +#: ../gtk/gtktreeview.c:1050 msgid "Model column to search through during interactive search" msgstr "Modellkolumn att söka igenom vid interaktiv sökning" -#: gtk/gtktreeview.c:656 +#: ../gtk/gtktreeview.c:1070 msgid "Fixed Height Mode" msgstr "Läge med fast höjd" -#: gtk/gtktreeview.c:657 +#: ../gtk/gtktreeview.c:1071 msgid "Speeds up GtkTreeView by assuming that all rows have the same height" msgstr "Snabbar upp GtkTreeView genom att antaga att alla rader har samma höjd" -#: gtk/gtktreeview.c:677 +#: ../gtk/gtktreeview.c:1091 msgid "Hover Selection" msgstr "Svävningsmarkering" -#: gtk/gtktreeview.c:678 +#: ../gtk/gtktreeview.c:1092 msgid "Whether the selection should follow the pointer" msgstr "Huruvida markeringen ska följa pekaren" -#: gtk/gtktreeview.c:697 +#: ../gtk/gtktreeview.c:1111 msgid "Hover Expand" msgstr "Svävningsexpansion" -#: gtk/gtktreeview.c:698 -msgid "" -"Whether rows should be expanded/collapsed when the pointer moves over them" +#: ../gtk/gtktreeview.c:1112 +msgid "Whether rows should be expanded/collapsed when the pointer moves over them" msgstr "Huruvida rader ska fällas ut/fällas in då pekaren flyttas över dem" -#: gtk/gtktreeview.c:712 +#: ../gtk/gtktreeview.c:1126 msgid "Show Expanders" msgstr "Visa expanderare" -#: gtk/gtktreeview.c:713 +#: ../gtk/gtktreeview.c:1127 msgid "View has expanders" msgstr "Vy har expanderare" -#: gtk/gtktreeview.c:727 +#: ../gtk/gtktreeview.c:1141 msgid "Level Indentation" msgstr "Indenteringsnivå" -#: gtk/gtktreeview.c:728 +#: ../gtk/gtktreeview.c:1142 msgid "Extra indentation for each level" msgstr "Extra indentering för varje nivå" -#: gtk/gtktreeview.c:737 +#: ../gtk/gtktreeview.c:1151 msgid "Rubber Banding" msgstr "Gummiband" -#: gtk/gtktreeview.c:738 -msgid "" -"Whether to enable selection of multiple items by dragging the mouse pointer" +#: ../gtk/gtktreeview.c:1152 +msgid "Whether to enable selection of multiple items by dragging the mouse pointer" msgstr "Huruvida flera objekt kan markeras genom att dra muspekaren" -#: gtk/gtktreeview.c:745 +#: ../gtk/gtktreeview.c:1159 msgid "Enable Grid Lines" msgstr "Aktivera rutnät" -#: gtk/gtktreeview.c:746 +#: ../gtk/gtktreeview.c:1160 msgid "Whether grid lines should be drawn in the tree view" msgstr "Huruvida rutnät ska ritas i trädvyn" -#: gtk/gtktreeview.c:754 +#: ../gtk/gtktreeview.c:1168 msgid "Enable Tree Lines" msgstr "Aktivera trädrader" -#: gtk/gtktreeview.c:755 +#: ../gtk/gtktreeview.c:1169 msgid "Whether tree lines should be drawn in the tree view" msgstr "Huruvida trädlinjer ska ritas i trädvyn" -#: gtk/gtktreeview.c:763 +#: ../gtk/gtktreeview.c:1177 msgid "The column in the model containing the tooltip texts for the rows" msgstr "Kolumnen för modellen som innehåller verktygstipstexterna för raderna" -#: gtk/gtktreeview.c:785 +#: ../gtk/gtktreeview.c:1199 msgid "Vertical Separator Width" msgstr "Vertikal avgränsarbredd" -#: gtk/gtktreeview.c:786 +#: ../gtk/gtktreeview.c:1200 msgid "Vertical space between cells. Must be an even number" msgstr "Vertikalt utrymme mellan celler. Måste vara ett jämnt tal" -#: gtk/gtktreeview.c:794 +#: ../gtk/gtktreeview.c:1208 msgid "Horizontal Separator Width" msgstr "Horisontell avgränsarbredd" -#: gtk/gtktreeview.c:795 +#: ../gtk/gtktreeview.c:1209 msgid "Horizontal space between cells. Must be an even number" msgstr "Horisontellt utrymme mellan celler. Måsta vara ett jämnt tal" -#: gtk/gtktreeview.c:803 +#: ../gtk/gtktreeview.c:1217 msgid "Allow Rules" msgstr "Tillåt linjaler" -#: gtk/gtktreeview.c:804 +#: ../gtk/gtktreeview.c:1218 msgid "Allow drawing of alternating color rows" msgstr "Tillåt ritning av alternerande färgrader" -#: gtk/gtktreeview.c:810 +#: ../gtk/gtktreeview.c:1224 msgid "Indent Expanders" msgstr "Indentera expanderare" -#: gtk/gtktreeview.c:811 +#: ../gtk/gtktreeview.c:1225 msgid "Make the expanders indented" msgstr "Gör expanderarna indenterade" -#: gtk/gtktreeview.c:817 +#: ../gtk/gtktreeview.c:1231 msgid "Even Row Color" msgstr "Färg på jämna rader" -#: gtk/gtktreeview.c:818 +#: ../gtk/gtktreeview.c:1232 msgid "Color to use for even rows" msgstr "Färg att använda på jämna rader" -#: gtk/gtktreeview.c:824 +#: ../gtk/gtktreeview.c:1238 msgid "Odd Row Color" msgstr "Färg på udda rader" -#: gtk/gtktreeview.c:825 +#: ../gtk/gtktreeview.c:1239 msgid "Color to use for odd rows" msgstr "Färg att använda på udda rader" -#: gtk/gtktreeview.c:831 +#: ../gtk/gtktreeview.c:1245 msgid "Grid line width" msgstr "Rutnätsradbredd" -#: gtk/gtktreeview.c:832 +#: ../gtk/gtktreeview.c:1246 msgid "Width, in pixels, of the tree view grid lines" msgstr "Bredd, i bildpunkter, på trädvyns rutnätsrader" -#: gtk/gtktreeview.c:838 +#: ../gtk/gtktreeview.c:1252 msgid "Tree line width" msgstr "Trädradsbredd" -#: gtk/gtktreeview.c:839 +#: ../gtk/gtktreeview.c:1253 msgid "Width, in pixels, of the tree view lines" msgstr "Bredd, i bildpunkter, på trädvyns rader" -#: gtk/gtktreeview.c:845 +#: ../gtk/gtktreeview.c:1259 msgid "Grid line pattern" msgstr "Rutnätsradmönster" -#: gtk/gtktreeview.c:846 +#: ../gtk/gtktreeview.c:1260 msgid "Dash pattern used to draw the tree view grid lines" msgstr "Punktmönster som används för att rita trädvyns rutnätslinjer" -#: gtk/gtktreeview.c:852 +#: ../gtk/gtktreeview.c:1266 msgid "Tree line pattern" msgstr "Trädradsmönster" -#: gtk/gtktreeview.c:853 +#: ../gtk/gtktreeview.c:1267 msgid "Dash pattern used to draw the tree view lines" msgstr "Punktmönster som används för att rita trädvyns linjer" -#: gtk/gtktreeviewcolumn.c:196 +#: ../gtk/gtktreeviewcolumn.c:243 msgid "Whether to display the column" msgstr "Huruvida kolumnen ska visas" -#: gtk/gtktreeviewcolumn.c:203 gtk/gtkwindow.c:609 +#: ../gtk/gtktreeviewcolumn.c:250 +#: ../gtk/gtkwindow.c:646 msgid "Resizable" msgstr "Storleksändringsbar" -#: gtk/gtktreeviewcolumn.c:204 +#: ../gtk/gtktreeviewcolumn.c:251 msgid "Column is user-resizable" msgstr "Användaren kan ändra storleken på kolumnen" -#: gtk/gtktreeviewcolumn.c:212 +#: ../gtk/gtktreeviewcolumn.c:259 msgid "Current width of the column" msgstr "Aktuell bredd på kolumnen" -#: gtk/gtktreeviewcolumn.c:221 +#: ../gtk/gtktreeviewcolumn.c:268 msgid "Space which is inserted between cells" msgstr "Utrymme som infogas mellan celler" -#: gtk/gtktreeviewcolumn.c:229 +#: ../gtk/gtktreeviewcolumn.c:276 msgid "Sizing" msgstr "Storleksändring" -#: gtk/gtktreeviewcolumn.c:230 +#: ../gtk/gtktreeviewcolumn.c:277 msgid "Resize mode of the column" msgstr "Kolumnens storleksändringsläge" -#: gtk/gtktreeviewcolumn.c:238 +#: ../gtk/gtktreeviewcolumn.c:285 msgid "Fixed Width" msgstr "Fast bredd" -#: gtk/gtktreeviewcolumn.c:239 +#: ../gtk/gtktreeviewcolumn.c:286 msgid "Current fixed width of the column" msgstr "Aktuell fast bredd på kolumnen" -#: gtk/gtktreeviewcolumn.c:248 +#: ../gtk/gtktreeviewcolumn.c:295 msgid "Minimum Width" msgstr "Minsta bredd" -#: gtk/gtktreeviewcolumn.c:249 +#: ../gtk/gtktreeviewcolumn.c:296 msgid "Minimum allowed width of the column" msgstr "Minsta tillåtna bredd på kolumnen" -#: gtk/gtktreeviewcolumn.c:258 +#: ../gtk/gtktreeviewcolumn.c:305 msgid "Maximum Width" msgstr "Största bredd" -#: gtk/gtktreeviewcolumn.c:259 +#: ../gtk/gtktreeviewcolumn.c:306 msgid "Maximum allowed width of the column" msgstr "Största tillåtna bredd på kolumnen" -#: gtk/gtktreeviewcolumn.c:269 +#: ../gtk/gtktreeviewcolumn.c:316 msgid "Title to appear in column header" msgstr "Titel att visa i kolumnhuvudet" -#: gtk/gtktreeviewcolumn.c:277 +#: ../gtk/gtktreeviewcolumn.c:324 msgid "Column gets share of extra width allocated to the widget" msgstr "Kolumnen får del av extra bredd som allokeras till widgeten" -#: gtk/gtktreeviewcolumn.c:284 +#: ../gtk/gtktreeviewcolumn.c:331 msgid "Clickable" msgstr "Klickbar" -#: gtk/gtktreeviewcolumn.c:285 +#: ../gtk/gtktreeviewcolumn.c:332 msgid "Whether the header can be clicked" msgstr "Huruvida huvudet kan klickas i" -#: gtk/gtktreeviewcolumn.c:293 +#: ../gtk/gtktreeviewcolumn.c:340 msgid "Widget" msgstr "Widget" -#: gtk/gtktreeviewcolumn.c:294 +#: ../gtk/gtktreeviewcolumn.c:341 msgid "Widget to put in column header button instead of column title" msgstr "Widget att placera kolumnhuvudets knapp istället för kolumntiteln" -#: gtk/gtktreeviewcolumn.c:302 +#: ../gtk/gtktreeviewcolumn.c:349 msgid "X Alignment of the column header text or widget" msgstr "X-justering av kolumnhuvudets text eller widget" -#: gtk/gtktreeviewcolumn.c:312 +#: ../gtk/gtktreeviewcolumn.c:359 msgid "Whether the column can be reordered around the headers" msgstr "Huruvida kolumnen kan omarrangeras runt huvudena" -#: gtk/gtktreeviewcolumn.c:319 +#: ../gtk/gtktreeviewcolumn.c:366 msgid "Sort indicator" msgstr "Sorteringsindikator" -#: gtk/gtktreeviewcolumn.c:320 +#: ../gtk/gtktreeviewcolumn.c:367 msgid "Whether to show a sort indicator" msgstr "Huruvida en sorteringsindikator ska visas" -#: gtk/gtktreeviewcolumn.c:327 +#: ../gtk/gtktreeviewcolumn.c:374 msgid "Sort order" msgstr "Sorteringsordning" -#: gtk/gtktreeviewcolumn.c:328 +#: ../gtk/gtktreeviewcolumn.c:375 msgid "Sort direction the sort indicator should indicate" msgstr "Sorteringsriktning som sorteringsindikatorn ska indikera" -#: gtk/gtktreeviewcolumn.c:344 +#: ../gtk/gtktreeviewcolumn.c:391 msgid "Sort column ID" msgstr "Kolumn-id för sortering" -#: gtk/gtktreeviewcolumn.c:345 +#: ../gtk/gtktreeviewcolumn.c:392 msgid "Logical sort column ID this column sorts on when selected for sorting" -msgstr "" -"Logiskt kolumn-id för sortering som denna kolumn sorterar efter när den " -"väljs för sortering" +msgstr "Logiskt kolumn-id för sortering som denna kolumn sorterar efter när den väljs för sortering" -#: gtk/gtkuimanager.c:225 +#: ../gtk/gtkuimanager.c:226 msgid "Whether tearoff menu items should be added to menus" msgstr "Huruvida löstagbara menyobjekt ska läggas till i menyer" -#: gtk/gtkuimanager.c:232 +#: ../gtk/gtkuimanager.c:233 msgid "Merged UI definition" msgstr "Sammanslagen användargränssnittsdefinition" -#: gtk/gtkuimanager.c:233 +#: ../gtk/gtkuimanager.c:234 msgid "An XML string describing the merged UI" msgstr "En XML-sträng som beskriver det sammanslagna användargränssnittet" -#: gtk/gtkviewport.c:143 -msgid "" -"The GtkAdjustment that determines the values of the horizontal position for " -"this viewport" -msgstr "" -"Det GtkAdjustment som avgör värdena på den horisontella positionen för denna " -"skrivbordsvy" - -#: gtk/gtkviewport.c:151 -msgid "" -"The GtkAdjustment that determines the values of the vertical position for " -"this viewport" -msgstr "" -"Det GtkAdjustment som avgör värdena på den vertikala positionen för denna " -"skrivbordsvy" - -#: gtk/gtkviewport.c:159 +#: ../gtk/gtkviewport.c:155 msgid "Determines how the shadowed box around the viewport is drawn" msgstr "Bestämmer hur den skuggade rutan runt skrivbordsvyn ritas" -#: gtk/gtkwidget.c:714 +#: ../gtk/gtkvolumebutton.c:156 +#, fuzzy +msgid "Use symbolic icons" +msgstr "Lyckad färg för symboliska ikoner" + +#: ../gtk/gtkvolumebutton.c:157 +#, fuzzy +msgid "Whether to use symbolic icons" +msgstr "Varningsfärg för symboliska ikoner" + +#: ../gtk/gtkwidget.c:893 msgid "Widget name" msgstr "Widgetnamn" -#: gtk/gtkwidget.c:715 +#: ../gtk/gtkwidget.c:894 msgid "The name of the widget" msgstr "Namnen på widgeten" -#: gtk/gtkwidget.c:721 +#: ../gtk/gtkwidget.c:900 msgid "Parent widget" msgstr "Förälderwidget" -#: gtk/gtkwidget.c:722 +#: ../gtk/gtkwidget.c:901 msgid "The parent widget of this widget. Must be a Container widget" msgstr "Förälderwidgeten till denna widget. Måste vara en behållarwidget" -#: gtk/gtkwidget.c:729 +#: ../gtk/gtkwidget.c:908 msgid "Width request" msgstr "Breddbegäran" -#: gtk/gtkwidget.c:730 -msgid "" -"Override for width request of the widget, or -1 if natural request should be " -"used" -msgstr "" -"Åsidosättande för breddbegäran av widgeten, eller -1 om naturlig begäran ska " -"användas" +#: ../gtk/gtkwidget.c:909 +msgid "Override for width request of the widget, or -1 if natural request should be used" +msgstr "Åsidosättande för breddbegäran av widgeten, eller -1 om naturlig begäran ska användas" -#: gtk/gtkwidget.c:738 +#: ../gtk/gtkwidget.c:917 msgid "Height request" msgstr "Höjdbegäran" -#: gtk/gtkwidget.c:739 -msgid "" -"Override for height request of the widget, or -1 if natural request should " -"be used" -msgstr "" -"Åsidosättande för höjdbegäran av widgeten, eller -1 om naturlig begäran ska " -"användas" +#: ../gtk/gtkwidget.c:918 +msgid "Override for height request of the widget, or -1 if natural request should be used" +msgstr "Åsidosättande för höjdbegäran av widgeten, eller -1 om naturlig begäran ska användas" -#: gtk/gtkwidget.c:748 +#: ../gtk/gtkwidget.c:927 msgid "Whether the widget is visible" msgstr "Huruvida widgeten är synlig" -#: gtk/gtkwidget.c:755 +#: ../gtk/gtkwidget.c:934 msgid "Whether the widget responds to input" msgstr "Huruvida widgeten svarar på inmatning" -#: gtk/gtkwidget.c:761 +#: ../gtk/gtkwidget.c:940 msgid "Application paintable" msgstr "Programmet kan rita" -#: gtk/gtkwidget.c:762 +#: ../gtk/gtkwidget.c:941 msgid "Whether the application will paint directly on the widget" msgstr "Huruvida programmet kan rita direkt på widgeten" -#: gtk/gtkwidget.c:768 +#: ../gtk/gtkwidget.c:947 msgid "Can focus" msgstr "Kan få fokus" -#: gtk/gtkwidget.c:769 +#: ../gtk/gtkwidget.c:948 msgid "Whether the widget can accept the input focus" msgstr "Huruvida widgeten kan acceptera inmatningsfokus" -#: gtk/gtkwidget.c:775 +#: ../gtk/gtkwidget.c:954 msgid "Has focus" msgstr "Har fokus" -#: gtk/gtkwidget.c:776 +#: ../gtk/gtkwidget.c:955 msgid "Whether the widget has the input focus" msgstr "Huruvida widgeten har inmatningsfokus" -#: gtk/gtkwidget.c:782 +#: ../gtk/gtkwidget.c:961 msgid "Is focus" msgstr "Är fokus" -#: gtk/gtkwidget.c:783 +#: ../gtk/gtkwidget.c:962 msgid "Whether the widget is the focus widget within the toplevel" msgstr "Huruvida widgeten är fokuswidgeten på toppnivån" -#: gtk/gtkwidget.c:789 +#: ../gtk/gtkwidget.c:968 msgid "Can default" msgstr "Kan vara standard" -#: gtk/gtkwidget.c:790 +#: ../gtk/gtkwidget.c:969 msgid "Whether the widget can be the default widget" msgstr "Huruvida widgeten kan vara standardwidgeten" -#: gtk/gtkwidget.c:796 +#: ../gtk/gtkwidget.c:975 msgid "Has default" msgstr "Har standard" -#: gtk/gtkwidget.c:797 +#: ../gtk/gtkwidget.c:976 msgid "Whether the widget is the default widget" msgstr "Huruvida widgeten är standardwidgeten" -#: gtk/gtkwidget.c:803 +#: ../gtk/gtkwidget.c:982 msgid "Receives default" msgstr "Mottar standard" -#: gtk/gtkwidget.c:804 +#: ../gtk/gtkwidget.c:983 msgid "If TRUE, the widget will receive the default action when it is focused" msgstr "Om SANT kommer widgeten att motta standardåtgärden då den har fokus" -#: gtk/gtkwidget.c:810 +#: ../gtk/gtkwidget.c:989 msgid "Composite child" msgstr "Sammansatt barn" -#: gtk/gtkwidget.c:811 +#: ../gtk/gtkwidget.c:990 msgid "Whether the widget is part of a composite widget" msgstr "Huruvida widgeten är en del av en sammansatt widget" -#: gtk/gtkwidget.c:817 +#: ../gtk/gtkwidget.c:996 msgid "Style" msgstr "Stil" -#: gtk/gtkwidget.c:818 -msgid "" -"The style of the widget, which contains information about how it will look " -"(colors etc)" -msgstr "" -"Stilen på widgeten, som innehåller information om hur den kommer att se ut " -"(färger osv)" +#: ../gtk/gtkwidget.c:997 +msgid "The style of the widget, which contains information about how it will look (colors etc)" +msgstr "Stilen på widgeten, som innehåller information om hur den kommer att se ut (färger osv)" -#: gtk/gtkwidget.c:824 +#: ../gtk/gtkwidget.c:1003 msgid "Events" msgstr "Händelser" -#: gtk/gtkwidget.c:825 +#: ../gtk/gtkwidget.c:1004 msgid "The event mask that decides what kind of GdkEvents this widget gets" msgstr "Händelsemasken som avgör vilken typ av GdkEvent som denna widget får" -#: gtk/gtkwidget.c:832 -msgid "Extension events" -msgstr "Utökningshändelser" - -#: gtk/gtkwidget.c:833 -msgid "The mask that decides what kind of extension events this widget gets" -msgstr "Masken som avgör vilken typ av utökningshändelser som denna widget får" - -#: gtk/gtkwidget.c:840 +#: ../gtk/gtkwidget.c:1011 msgid "No show all" msgstr "Visa inte alla" -#: gtk/gtkwidget.c:841 +#: ../gtk/gtkwidget.c:1012 msgid "Whether gtk_widget_show_all() should not affect this widget" msgstr "Huruvida gtk_widget_show_all() inte ska påverka denna widget" -#: gtk/gtkwidget.c:864 +#: ../gtk/gtkwidget.c:1035 msgid "Whether this widget has a tooltip" msgstr "Huruvida denna widget har ett verktygstips" -#: gtk/gtkwidget.c:920 +#: ../gtk/gtkwidget.c:1091 msgid "Window" msgstr "Fönster" -#: gtk/gtkwidget.c:921 +#: ../gtk/gtkwidget.c:1092 msgid "The widget's window if it is realized" msgstr "Widgetens fönster om det finns" -#: gtk/gtkwidget.c:935 +#: ../gtk/gtkwidget.c:1106 msgid "Double Buffered" msgstr "Dubbelbuffrad" -#: gtk/gtkwidget.c:936 -#, fuzzy +#: ../gtk/gtkwidget.c:1107 msgid "Whether the widget is double buffered" -msgstr "Huruvida widgeten är dubbelbuffrad eller inte" +msgstr "Huruvida widgeten är dubbelbuffrad" -#: gtk/gtkwidget.c:951 +#: ../gtk/gtkwidget.c:1122 msgid "How to position in extra horizontal space" msgstr "" -#: gtk/gtkwidget.c:967 +#: ../gtk/gtkwidget.c:1138 msgid "How to position in extra vertical space" msgstr "" -#: gtk/gtkwidget.c:986 -#, fuzzy +#: ../gtk/gtkwidget.c:1157 msgid "Margin on Left" -msgstr "Marginal" +msgstr "Marginal på vänsterkanten" -#: gtk/gtkwidget.c:987 +#: ../gtk/gtkwidget.c:1158 msgid "Pixels of extra space on the left side" msgstr "" -#: gtk/gtkwidget.c:1007 +#: ../gtk/gtkwidget.c:1178 msgid "Margin on Right" -msgstr "" +msgstr "Marginal på högerkanten" -#: gtk/gtkwidget.c:1008 -#, fuzzy +#: ../gtk/gtkwidget.c:1179 msgid "Pixels of extra space on the right side" -msgstr "Bildpunkter med tomt utrymme ovanför stycken" +msgstr "Bildpunkter med tomt utrymme på högra sidan" -#: gtk/gtkwidget.c:1028 -#, fuzzy +#: ../gtk/gtkwidget.c:1199 msgid "Margin on Top" -msgstr "Marginal" +msgstr "Marginal på överkanten" -#: gtk/gtkwidget.c:1029 -#, fuzzy +#: ../gtk/gtkwidget.c:1200 msgid "Pixels of extra space on the top side" -msgstr "Bildpunkter med tomt utrymme ovanför stycken" +msgstr "Bildpunkter med tomt utrymme på ovansidan" -#: gtk/gtkwidget.c:1049 +#: ../gtk/gtkwidget.c:1220 msgid "Margin on Bottom" -msgstr "" +msgstr "Marginal på nederkanten" -#: gtk/gtkwidget.c:1050 +#: ../gtk/gtkwidget.c:1221 msgid "Pixels of extra space on the bottom side" msgstr "" -#: gtk/gtkwidget.c:1067 -#, fuzzy +#: ../gtk/gtkwidget.c:1238 msgid "All Margins" -msgstr "Marginal" +msgstr "Alla marginaler" -#: gtk/gtkwidget.c:1068 +#: ../gtk/gtkwidget.c:1239 msgid "Pixels of extra space on all four sides" msgstr "" -#: gtk/gtkwidget.c:2741 +#: ../gtk/gtkwidget.c:1272 +#, fuzzy +msgid "Horizontal Expand" +msgstr "Horisontell utfyllnad" + +#: ../gtk/gtkwidget.c:1273 +msgid "Whether widget wants more horizontal space" +msgstr "Huruvida widgeten vill ha mer horisontellt utrymme" + +#: ../gtk/gtkwidget.c:1287 +#, fuzzy +msgid "Horizontal Expand Set" +msgstr "Horisontell justering" + +#: ../gtk/gtkwidget.c:1288 +#, fuzzy +msgid "Whether to use the hexpand property" +msgstr "Huruvida egenskaper för utseende av relaterade åtgärder ska användas" + +#: ../gtk/gtkwidget.c:1302 +#, fuzzy +msgid "Vertical Expand" +msgstr "Vertikal utfyllnad" + +#: ../gtk/gtkwidget.c:1303 +msgid "Whether widget wants more vertical space" +msgstr "Huruvida widgeten vill ha mer vertikalt utrymme" + +#: ../gtk/gtkwidget.c:1317 +#, fuzzy +msgid "Vertical Expand Set" +msgstr "Vertikal justering" + +#: ../gtk/gtkwidget.c:1318 +#, fuzzy +msgid "Whether to use the vexpand property" +msgstr "Huruvida egenskaper för utseende av relaterade åtgärder ska användas" + +#: ../gtk/gtkwidget.c:1332 +#, fuzzy +msgid "Expand Both" +msgstr "Utöka tidsgräns" + +#: ../gtk/gtkwidget.c:1333 +msgid "Whether widget wants to expand in both directions" +msgstr "Huruvida widgeten vill expandera i båda riktningarna" + +#: ../gtk/gtkwidget.c:2992 msgid "Interior Focus" msgstr "Interiörfokus" -#: gtk/gtkwidget.c:2742 +#: ../gtk/gtkwidget.c:2993 msgid "Whether to draw the focus indicator inside widgets" msgstr "Huruvida fokusindikatorn ritas inuti widgetar" -#: gtk/gtkwidget.c:2748 +#: ../gtk/gtkwidget.c:2999 msgid "Focus linewidth" msgstr "Fokuslinjebredd" -#: gtk/gtkwidget.c:2749 +#: ../gtk/gtkwidget.c:3000 msgid "Width, in pixels, of the focus indicator line" msgstr "Bredd, i bildpunkter, på fokusindikatorlinjen" -#: gtk/gtkwidget.c:2755 +#: ../gtk/gtkwidget.c:3006 msgid "Focus line dash pattern" msgstr "Punktmönster för fokuslinje" -#: gtk/gtkwidget.c:2756 +#: ../gtk/gtkwidget.c:3007 msgid "Dash pattern used to draw the focus indicator" msgstr "Punktmönster som används för att rita fokusindikatorn" -#: gtk/gtkwidget.c:2761 +#: ../gtk/gtkwidget.c:3012 msgid "Focus padding" msgstr "Fokusutfyllnad" -#: gtk/gtkwidget.c:2762 +#: ../gtk/gtkwidget.c:3013 msgid "Width, in pixels, between focus indicator and the widget 'box'" msgstr "Bredd, i bildpunkter, mellan fokusindikatorn och \"widgetrutan\"" -#: gtk/gtkwidget.c:2767 +#: ../gtk/gtkwidget.c:3018 msgid "Cursor color" msgstr "Markörfärg" -#: gtk/gtkwidget.c:2768 +#: ../gtk/gtkwidget.c:3019 msgid "Color with which to draw insertion cursor" msgstr "Färg att rita insättningsmarkören med" -#: gtk/gtkwidget.c:2773 +#: ../gtk/gtkwidget.c:3024 msgid "Secondary cursor color" msgstr "Sekundär markörfärg" -#: gtk/gtkwidget.c:2774 -msgid "" -"Color with which to draw the secondary insertion cursor when editing mixed " -"right-to-left and left-to-right text" -msgstr "" -"Färg med vilken den sekundära insättningspekaren vid redigering av blandad " -"höger-till-vänster- och vänster-till-höger-text ritas" +#: ../gtk/gtkwidget.c:3025 +msgid "Color with which to draw the secondary insertion cursor when editing mixed right-to-left and left-to-right text" +msgstr "Färg med vilken den sekundära insättningspekaren vid redigering av blandad höger-till-vänster- och vänster-till-höger-text ritas" -#: gtk/gtkwidget.c:2779 +#: ../gtk/gtkwidget.c:3030 msgid "Cursor line aspect ratio" msgstr "Proportioner för markörrad" -#: gtk/gtkwidget.c:2780 +#: ../gtk/gtkwidget.c:3031 msgid "Aspect ratio with which to draw insertion cursor" msgstr "Proportioner att rita insättningsmarkören med" -#: gtk/gtkwidget.c:2786 +#: ../gtk/gtkwidget.c:3037 msgid "Window dragging" msgstr "Fönsterdragning" -#: gtk/gtkwidget.c:2787 +#: ../gtk/gtkwidget.c:3038 msgid "Whether windows can be dragged by clicking on empty areas" msgstr "Huruvida fönster kan dras genom att klicka på tomma ytor" -#: gtk/gtkwidget.c:2800 +#: ../gtk/gtkwidget.c:3051 msgid "Unvisited Link Color" msgstr "Inte besökt länkfärg" -#: gtk/gtkwidget.c:2801 +#: ../gtk/gtkwidget.c:3052 msgid "Color of unvisited links" msgstr "Färg på inte besökta länkar" -#: gtk/gtkwidget.c:2814 +#: ../gtk/gtkwidget.c:3065 msgid "Visited Link Color" msgstr "Besökt länkfärg" -#: gtk/gtkwidget.c:2815 +#: ../gtk/gtkwidget.c:3066 msgid "Color of visited links" msgstr "Färg på besökta länkar" -#: gtk/gtkwidget.c:2829 +#: ../gtk/gtkwidget.c:3080 msgid "Wide Separators" msgstr "Breda avgränsare" -#: gtk/gtkwidget.c:2830 -msgid "" -"Whether separators have configurable width and should be drawn using a box " -"instead of a line" -msgstr "" -"Huruvida avgränsare har konfigurerbar bredd och ska ritas ut med en ruta " -"istället för en linje" +#: ../gtk/gtkwidget.c:3081 +msgid "Whether separators have configurable width and should be drawn using a box instead of a line" +msgstr "Huruvida avgränsare har konfigurerbar bredd och ska ritas ut med en ruta istället för en linje" -#: gtk/gtkwidget.c:2844 +#: ../gtk/gtkwidget.c:3095 msgid "Separator Width" msgstr "Avgränsarbredd" -#: gtk/gtkwidget.c:2845 +#: ../gtk/gtkwidget.c:3096 msgid "The width of separators if wide-separators is TRUE" msgstr "Bredden på avgränsare om wide-separators är TRUE" -#: gtk/gtkwidget.c:2859 +#: ../gtk/gtkwidget.c:3110 msgid "Separator Height" msgstr "Avgränsarhöjd" -#: gtk/gtkwidget.c:2860 +#: ../gtk/gtkwidget.c:3111 msgid "The height of separators if \"wide-separators\" is TRUE" msgstr "Höjden på avgränsare om \"wide-separators\" är TRUE" -#: gtk/gtkwidget.c:2874 +#: ../gtk/gtkwidget.c:3125 msgid "Horizontal Scroll Arrow Length" msgstr "Längd på horisontell rullningspil" -#: gtk/gtkwidget.c:2875 +#: ../gtk/gtkwidget.c:3126 msgid "The length of horizontal scroll arrows" msgstr "Längden på horisonella rullningspilar" -#: gtk/gtkwidget.c:2889 +#: ../gtk/gtkwidget.c:3140 msgid "Vertical Scroll Arrow Length" msgstr "Längd på vertikal rullningspil" -#: gtk/gtkwidget.c:2890 +#: ../gtk/gtkwidget.c:3141 msgid "The length of vertical scroll arrows" msgstr "Längden på vertikala rullningspilar" -#: gtk/gtkwindow.c:567 +#: ../gtk/gtkwindow.c:604 msgid "Window Type" msgstr "Fönstertyp" -#: gtk/gtkwindow.c:568 +#: ../gtk/gtkwindow.c:605 msgid "The type of the window" msgstr "Typen av fönster" -#: gtk/gtkwindow.c:576 +#: ../gtk/gtkwindow.c:613 msgid "Window Title" msgstr "Fönstertitel" -#: gtk/gtkwindow.c:577 +#: ../gtk/gtkwindow.c:614 msgid "The title of the window" msgstr "Titeln på fönstret" -#: gtk/gtkwindow.c:584 +#: ../gtk/gtkwindow.c:621 msgid "Window Role" msgstr "Fönsterroll" -#: gtk/gtkwindow.c:585 +#: ../gtk/gtkwindow.c:622 msgid "Unique identifier for the window to be used when restoring a session" -msgstr "" -"Unik identifierare för fönstret som ska användas vid återställning av en " -"session" +msgstr "Unik identifierare för fönstret som ska användas vid återställning av en session" -#: gtk/gtkwindow.c:601 +#: ../gtk/gtkwindow.c:638 msgid "Startup ID" msgstr "Uppstarts-id" -#: gtk/gtkwindow.c:602 +#: ../gtk/gtkwindow.c:639 msgid "Unique startup identifier for the window used by startup-notification" -msgstr "" -"Unik uppstartsidentifierare för fönstret som ska användas av startup-" -"notification" +msgstr "Unik uppstartsidentifierare för fönstret som ska användas av startup-notification" -#: gtk/gtkwindow.c:610 +#: ../gtk/gtkwindow.c:647 msgid "If TRUE, users can resize the window" msgstr "Om SANT kan användare storleksändra fönstret" -#: gtk/gtkwindow.c:617 +#: ../gtk/gtkwindow.c:654 msgid "Modal" msgstr "Modalt" -#: gtk/gtkwindow.c:618 -msgid "" -"If TRUE, the window is modal (other windows are not usable while this one is " -"up)" -msgstr "" -"Om SANT är fönstret modalt (andra fönster är inte användbara så länge detta " -"fönster visas)" +#: ../gtk/gtkwindow.c:655 +msgid "If TRUE, the window is modal (other windows are not usable while this one is up)" +msgstr "Om SANT är fönstret modalt (andra fönster är inte användbara så länge detta fönster visas)" -#: gtk/gtkwindow.c:625 +#: ../gtk/gtkwindow.c:662 msgid "Window Position" msgstr "Fönsterposition" -#: gtk/gtkwindow.c:626 +#: ../gtk/gtkwindow.c:663 msgid "The initial position of the window" msgstr "Den första positionen på fönstret" -#: gtk/gtkwindow.c:634 +#: ../gtk/gtkwindow.c:671 msgid "Default Width" msgstr "Standardbredd" -#: gtk/gtkwindow.c:635 +#: ../gtk/gtkwindow.c:672 msgid "The default width of the window, used when initially showing the window" msgstr "Standardbredden på fönstret, används då fönstret först visas" -#: gtk/gtkwindow.c:644 +#: ../gtk/gtkwindow.c:681 msgid "Default Height" msgstr "Standardhöjd" -#: gtk/gtkwindow.c:645 -msgid "" -"The default height of the window, used when initially showing the window" +#: ../gtk/gtkwindow.c:682 +msgid "The default height of the window, used when initially showing the window" msgstr "Standardhöjden på fönstret, används då fönstret först visas" -#: gtk/gtkwindow.c:654 +#: ../gtk/gtkwindow.c:691 msgid "Destroy with Parent" msgstr "Förstör med förälder" -#: gtk/gtkwindow.c:655 +#: ../gtk/gtkwindow.c:692 msgid "If this window should be destroyed when the parent is destroyed" msgstr "Om detta fönster ska förstöras då dess förälder förstörs" -#: gtk/gtkwindow.c:663 +#: ../gtk/gtkwindow.c:700 msgid "Icon for this window" msgstr "Ikon för detta fönster" -#: gtk/gtkwindow.c:669 +#: ../gtk/gtkwindow.c:706 msgid "Mnemonics Visible" msgstr "Snabbtangenter synliga" -#: gtk/gtkwindow.c:670 +#: ../gtk/gtkwindow.c:707 msgid "Whether mnemonics are currently visible in this window" msgstr "Huruvida snabbtangenter visas för närvarande i detta fönster" -#: gtk/gtkwindow.c:686 +#: ../gtk/gtkwindow.c:723 msgid "Name of the themed icon for this window" msgstr "Namnet på den tematiserade ikonen för detta fönster" -#: gtk/gtkwindow.c:701 +#: ../gtk/gtkwindow.c:738 msgid "Is Active" msgstr "Är aktiv" -#: gtk/gtkwindow.c:702 +#: ../gtk/gtkwindow.c:739 msgid "Whether the toplevel is the current active window" msgstr "Huruvida toppnivån är det för tillfället aktiva fönstret" -#: gtk/gtkwindow.c:709 +#: ../gtk/gtkwindow.c:746 msgid "Focus in Toplevel" msgstr "Fokus i toppnivå" -#: gtk/gtkwindow.c:710 +#: ../gtk/gtkwindow.c:747 msgid "Whether the input focus is within this GtkWindow" msgstr "Huruvida inmatningsfokus är inom detta GtkWindow" -#: gtk/gtkwindow.c:717 +#: ../gtk/gtkwindow.c:754 msgid "Type hint" msgstr "Typtips" -#: gtk/gtkwindow.c:718 -msgid "" -"Hint to help the desktop environment understand what kind of window this is " -"and how to treat it." -msgstr "" -"Tips för att hjälpa skrivbordmiljön förstå vad för typ av fönster detta är " -"och hur det ska behandlas." +#: ../gtk/gtkwindow.c:755 +msgid "Hint to help the desktop environment understand what kind of window this is and how to treat it." +msgstr "Tips för att hjälpa skrivbordmiljön förstå vad för typ av fönster detta är och hur det ska behandlas." -#: gtk/gtkwindow.c:726 +#: ../gtk/gtkwindow.c:763 msgid "Skip taskbar" msgstr "Hoppa över fönsterlista" -#: gtk/gtkwindow.c:727 +#: ../gtk/gtkwindow.c:764 msgid "TRUE if the window should not be in the task bar." msgstr "SANT om fönstret inte ska visas i fönsterlistan." -#: gtk/gtkwindow.c:734 +#: ../gtk/gtkwindow.c:771 msgid "Skip pager" msgstr "Hoppa över väljaren" -#: gtk/gtkwindow.c:735 +#: ../gtk/gtkwindow.c:772 msgid "TRUE if the window should not be in the pager." msgstr "SANT om fönstret inte ska vara i skrivbordsväljaren." -#: gtk/gtkwindow.c:742 +#: ../gtk/gtkwindow.c:779 msgid "Urgent" msgstr "Brådskande" -#: gtk/gtkwindow.c:743 +#: ../gtk/gtkwindow.c:780 msgid "TRUE if the window should be brought to the user's attention." msgstr "SANT om användaren ska göras uppmärksam på fönstret." -#: gtk/gtkwindow.c:757 +#: ../gtk/gtkwindow.c:794 msgid "Accept focus" msgstr "Acceptera fokus" -#: gtk/gtkwindow.c:758 +#: ../gtk/gtkwindow.c:795 msgid "TRUE if the window should receive the input focus." msgstr "SANT om fönstret ska få inmatningsfokus." -#: gtk/gtkwindow.c:772 +#: ../gtk/gtkwindow.c:809 msgid "Focus on map" msgstr "Fokusera vid mappning" -#: gtk/gtkwindow.c:773 +#: ../gtk/gtkwindow.c:810 msgid "TRUE if the window should receive the input focus when mapped." msgstr "SANT om fönstret ska få inmatningsfokus då det mappas." -#: gtk/gtkwindow.c:787 +#: ../gtk/gtkwindow.c:824 msgid "Decorated" msgstr "Dekorerat" -#: gtk/gtkwindow.c:788 +#: ../gtk/gtkwindow.c:825 msgid "Whether the window should be decorated by the window manager" msgstr "Huruvida fönstret ska vara dekorerat i fönsterhanteraren" -#: gtk/gtkwindow.c:802 +#: ../gtk/gtkwindow.c:839 msgid "Deletable" msgstr "Borttagningsbart" -#: gtk/gtkwindow.c:803 +#: ../gtk/gtkwindow.c:840 msgid "Whether the window frame should have a close button" msgstr "Huruvida fönsterramen ska ha en stängningsknapp" -#: gtk/gtkwindow.c:819 +#: ../gtk/gtkwindow.c:859 +#, fuzzy +msgid "Resize grip" +msgstr "Har handtag för storleksändring" + +#: ../gtk/gtkwindow.c:860 +#, fuzzy +msgid "Specifies whether the window should have a resize grip" +msgstr "Huruvida fönsterramen ska ha en stängningsknapp" + +#: ../gtk/gtkwindow.c:874 +msgid "Resize grip is visible" +msgstr "" + +#: ../gtk/gtkwindow.c:875 +#, fuzzy +msgid "Specifies whether the window's resize grip is visible." +msgstr "Huruvida åtgärdsgruppen är synlig." + +#: ../gtk/gtkwindow.c:891 msgid "Gravity" msgstr "Gravitet" -#: gtk/gtkwindow.c:820 +#: ../gtk/gtkwindow.c:892 msgid "The window gravity of the window" msgstr "Fönstrets fönstergravitet" # Bättre ord saknas -#: gtk/gtkwindow.c:837 +#: ../gtk/gtkwindow.c:909 msgid "Transient for Window" msgstr "Kortvarighet för fönster" # Bättre ord? -#: gtk/gtkwindow.c:838 +#: ../gtk/gtkwindow.c:910 msgid "The transient parent of the dialog" msgstr "Kortvarig förälder för dialogrutan" -#: gtk/gtkwindow.c:853 +#: ../gtk/gtkwindow.c:925 msgid "Opacity for Window" msgstr "Opakhet för fönster" -#: gtk/gtkwindow.c:854 +#: ../gtk/gtkwindow.c:926 msgid "The opacity of the window, from 0 to 1" msgstr "Opakheten för fönstret, från 0 till 1" -#: modules/input/gtkimcontextxim.c:334 -msgid "IM Preedit style" -msgstr "IM-förredigeringsstil" +#: ../gtk/gtkwindow.c:936 +#: ../gtk/gtkwindow.c:937 +msgid "Width of resize grip" +msgstr "" -#: modules/input/gtkimcontextxim.c:335 -msgid "How to draw the input method preedit string" -msgstr "Hur inmatningsmetodens förredigeringssträng ska ritas" +#: ../gtk/gtkwindow.c:942 +#: ../gtk/gtkwindow.c:943 +#, fuzzy +msgid "Height of resize grip" +msgstr "Har handtag för storleksändring" -#: modules/input/gtkimcontextxim.c:343 -msgid "IM Status style" -msgstr "IM-statusstil" +#: ../gtk/gtkwindow.c:962 +msgid "GtkApplication" +msgstr "GtkApplication" -#: modules/input/gtkimcontextxim.c:344 -msgid "How to draw the input method statusbar" -msgstr "Hur inmatningsmetodens statusrad ska ritas" +#: ../gtk/gtkwindow.c:963 +msgid "The GtkApplication for the window" +msgstr "GtkApplication för fönstret" +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" +#~ msgstr "" +#~ "Etiketten för länken till programmets webbplats. Om detta inte är angivet " +#~ "är standardalternativet URL:en" +#~ msgid "Horizontal adjustment" +#~ msgstr "Horisontell justering" +#~ msgid "Vertical adjustment" +#~ msgstr "Vertikal justering" +#~ msgid "Lower" +#~ msgstr "Lägre" +#~ msgid "Lower limit of ruler" +#~ msgstr "Lägre gräns för linjal" +#~ msgid "Upper" +#~ msgstr "Övre" +#~ msgid "Upper limit of ruler" +#~ msgstr "Övre gräns för linjal" +#~ msgid "Position of mark on the ruler" +#~ msgstr "Position för märket på linjalen" +#~ msgid "Max Size" +#~ msgstr "Maxstorlek" +#~ msgid "Maximum size of the ruler" +#~ msgstr "Största storlek på linjalen" + +# Osäker. +#~ msgid "Metric" +#~ msgstr "Metrik" +# Osäker. +#~ msgid "The metric used for the ruler" +#~ msgstr "Metriken som används i linjalen" +#~ msgid "Whether the statusbar has a grip for resizing the toplevel" +#~ msgstr "" +#~ "Huruvida statusraden har ett handtag för storleksändring av toppnivån" +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "Horisontell justering för widgeten" +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "Vertikal justering för widgeten" +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "" +#~ "Det GtkAdjustment som avgör värdena på den horisontella positionen för " +#~ "denna skrivbordsvy" +#~ msgid "" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "" +#~ "Det GtkAdjustment som avgör värdena på den vertikala positionen för denna " +#~ "skrivbordsvy" +#~ msgid "Extension events" +#~ msgstr "Utökningshändelser" +#~ msgid "The mask that decides what kind of extension events this widget gets" +#~ msgstr "" +#~ "Masken som avgör vilken typ av utökningshändelser som denna widget får" #~ msgid "the GdkScreen for the renderer" #~ msgstr "GdkScreen för renderaren" - #~ msgid "The adjustment that holds the value of the spinbutton." #~ msgstr "Justeringen som håller värdet på snurrknappen." - #~ msgid "Has separator" #~ msgstr "Har avgränsare" - #~ msgid "The dialog has a separator bar above its buttons" #~ msgstr "Dialogen har en avgränsarrad ovanför dess knappar" - #~ msgid "Invisible char set" #~ msgstr "Osynligt tecken inställt" - #~ msgid "State Hint" #~ msgstr "Tillståndshint" - #~ msgid "Whether to pass a proper state when drawing shadow or background" #~ msgstr "" #~ "Huruvida ett korrekt tillstånd ska skickas när skuggor eller bakgrund " #~ "ritas ut" - #~ msgid "Deprecated property, use shadow_type instead" #~ msgstr "Föråldrad egenskap, använd shadow_type istället" - #~ msgid "Pixmap" #~ msgstr "Pixmap" - #~ msgid "A GdkPixmap to display" #~ msgstr "En GdkPixmap att visa" - #~ msgid "A GdkImage to display" #~ msgstr "En GdkImage att visa" - #~ msgid "Mask" #~ msgstr "Mask" - #~ msgid "Mask bitmap to use with GdkImage or GdkPixmap" #~ msgstr "Maskbitmappsbild att använda med GdkImage eller GdkPixmap" - #~ msgid "Use separator" #~ msgstr "Använd avgränsare" - #~ msgid "" #~ "Whether to put a separator between the message dialog's text and the " #~ "buttons" #~ msgstr "" #~ "Huruvida en avgränsare ska placeras mellan meddelandedialogens text och " #~ "knapparna" - #~ msgid "Draw slider ACTIVE during drag" #~ msgstr "Rita ut draglisten AKTIV under dragning" - #~ msgid "" #~ "With this option set to TRUE, sliders will be drawn ACTIVE and with " #~ "shadow IN while they are dragged" #~ msgstr "" #~ "Med det här alternativ inställt till TRUE kommer draglister att ritas " #~ "AKTIVA och med skugga I när de dras" - #~ msgid "Trough Side Details" #~ msgstr "Detaljer för trågsida" - #~ msgid "" #~ "When TRUE, the parts of the trough on the two sides of the slider are " #~ "drawn with different details" #~ msgstr "" #~ "När TRUE kommer delarna av tråget på båda sidor av draglisten att ritas " #~ "ut med olika detaljer" - #~ msgid "Stepper Position Details" #~ msgstr "Positionsdetaljer om stegare" - #~ msgid "" #~ "When TRUE, the detail string for rendering the steppers is suffixed with " #~ "position information" #~ msgstr "" #~ "När TRUE så läggs positionsinformation på slutet av detaljsträngen för " #~ "utritning av stegare" - #~ msgid "Blinking" #~ msgstr "Blinkar" - #~ msgid "Whether or not the status icon is blinking" #~ msgstr "Huruvida statusikonen blinkar eller inte" - #~ msgid "Background stipple mask" #~ msgstr "Bakgrundens punkteringsmask" - #~ msgid "Bitmap to use as a mask when drawing the text background" #~ msgstr "Bitmappsbild att använda som mask när textbakgrunden ritas" - #~ msgid "Foreground stipple mask" #~ msgstr "Förgrundens punkteringsmask" - #~ msgid "Bitmap to use as a mask when drawing the text foreground" #~ msgstr "Bitmappsbild att använda som mask när textförgrunden ritas" - #~ msgid "Background stipple set" #~ msgstr "Bakgrundspunktering inställd" - #~ msgid "Whether this tag affects the background stipple" #~ msgstr "Huruvida denna tagg påverkar bagrundspunkteringen" - #~ msgid "Foreground stipple set" #~ msgstr "Förgrundspunktering inställd" - #~ msgid "Whether this tag affects the foreground stipple" #~ msgstr "Huruvida denna tagg påverkar förgrundens punktering" - #~ msgid "Row Ending details" #~ msgstr "Detaljer för radslut" - #~ msgid "Enable extended row background theming" #~ msgstr "Aktivera utökat radbakgrundstema" - #~ msgid "Draw Border" #~ msgstr "Rita ram" - #~ msgid "Size of areas outside the widget's allocation to draw" #~ msgstr "Storlek på områden utanför widgetens allokering för att rita" - #~ msgid "Loop" #~ msgstr "Upprepa" - #~ msgid "Whether the animation should loop when it reaches the end" #~ msgstr "Huruvida animationen ska upprepas när den når slutet" - #~ msgid "Number of Channels" #~ msgstr "Antal kanaler" - #~ msgid "The number of samples per pixel" #~ msgstr "Antal prov per bildpunkt" - #~ msgid "Colorspace" #~ msgstr "Färgrymd" - #~ msgid "The colorspace in which the samples are interpreted" #~ msgstr "Den färgrymd i vilken proven tolkas" - #~ msgid "Has Alpha" #~ msgstr "Har alfa" - #~ msgid "Whether the pixbuf has an alpha channel" #~ msgstr "Huruvida pixbufen har en alfakanal" - #~ msgid "Bits per Sample" #~ msgstr "Bitar per prov" - #~ msgid "The number of bits per sample" #~ msgstr "Antalet bitar per prov" - #~ msgid "The number of columns of the pixbuf" #~ msgstr "Antalet kolumner i pixbufen" - #~ msgid "The number of rows of the pixbuf" #~ msgstr "Antalet rader i pixbufen" - # Osäker #~ msgid "Rowstride" #~ msgstr "Radhöjd" - #~ msgid "" #~ "The number of bytes between the start of a row and the start of the next " #~ "row" #~ msgstr "Antalet byte mellan början av en rad och början på nästa rad" - #~ msgid "Pixels" #~ msgstr "Bildpunkter" - #~ msgid "A pointer to the pixel data of the pixbuf" #~ msgstr "En pekare till bildpunktsdata för pixbufen" - #~ msgid "The GdkFont that is currently selected" #~ msgstr "Den GdkFont som är vald för tillfället" - #~ msgid "Activity mode" #~ msgstr "Aktivitetsläge" - #~ msgid "" #~ "If TRUE, the GtkProgress is in activity mode, meaning that it signals " #~ "something is happening, but not how much of the activity is finished. " @@ -7458,298 +7398,215 @@ msgstr "Hur inmatningsmetodens statusrad ska ritas" #~ "signalerar att något händer, men inte hur mycket aktiviteten är slutförd. " #~ "Detta används när du gör någonting som du inte vet hur lång tid det " #~ "kommer att ta." - #~ msgid "" #~ "The maximum number of items to be returned by gtk_recent_manager_get_items" #~ "()" #~ msgstr "" #~ "Maximalt antal objekt att returnera av gtk_recent_manager_get_items()" - #~ msgid "Allow Shrink" #~ msgstr "Tillåt krympning" - #~ msgid "" #~ "If TRUE, the window has no mimimum size. Setting this to TRUE is 99% of " #~ "the time a bad idea" #~ msgstr "" #~ "Om SANT har fönstret ingen minsta storlek. Att ställa in detta till SANT " #~ "är en dum idé i 99% av fallen" - #~ msgid "Allow Grow" #~ msgstr "Tillåt växande" - #~ msgid "If TRUE, users can expand the window beyond its minimum size" #~ msgstr "Om SANT kan användare utöka fönstret utöver dess minsta storlek" - #~ msgid "Enable arrow keys" #~ msgstr "Använd piltangenter" - #~ msgid "Whether the arrow keys move through the list of items" #~ msgstr "Huruvida piltangenter flyttar genom listan med objekt" - #~ msgid "Always enable arrows" #~ msgstr "Använd alltid pilar" - #~ msgid "Obsolete property, ignored" #~ msgstr "Föråldrad egenskap, ignorerad" - #~ msgid "Case sensitive" #~ msgstr "Gör skillnad på VERSALER/gemener" - #~ msgid "Whether list item matching is case sensitive" #~ msgstr "Huruvida listobjektet gör skillnad på versaler/gemener" - #~ msgid "Allow empty" #~ msgstr "Tillåt tomt" - #~ msgid "Whether an empty value may be entered in this field" #~ msgstr "Huruvida ett tomt värde kan anges i detta fält" - #~ msgid "Value in list" #~ msgstr "Värde i lista" - #~ msgid "Whether entered values must already be present in the list" #~ msgstr "Huruvida angivna värden redan måste finnas i listan" - #~ msgid "Is this curve linear, spline interpolated, or free-form" #~ msgstr "Är denna kurva linjär, spline-interpolerad eller friform" - #~ msgid "Minimum X" #~ msgstr "Minsta X" - #~ msgid "Minimum possible value for X" #~ msgstr "Minsta möjliga värde på X" - #~ msgid "Maximum X" #~ msgstr "Största X" - #~ msgid "Maximum possible X value" #~ msgstr "Största möjliga värde på X" - #~ msgid "Minimum Y" #~ msgstr "Minsta Y" - #~ msgid "Minimum possible value for Y" #~ msgstr "Minsta möjliga värde på Y" - #~ msgid "Maximum Y" #~ msgstr "Största Y" - #~ msgid "Maximum possible value for Y" #~ msgstr "Största möjliga värde på Y" - #~ msgid "File System Backend" #~ msgstr "Filsystemsbakände" - #~ msgid "Name of file system backend to use" #~ msgstr "Namn på filsystemsbakände att använda" - #~ msgid "The currently selected filename" #~ msgstr "Det filnamn som är valt för tillfället" - #~ msgid "Show file operations" #~ msgstr "Visa filoperationer" - #~ msgid "Whether buttons for creating/manipulating files should be displayed" #~ msgstr "Huruvida knappar för skapande/manipulering av filer ska visas" - #~ msgid "Tab Border" #~ msgstr "Flikram" - #~ msgid "Width of the border around the tab labels" #~ msgstr "Bredd på ramen runt fliketiketterna" - #~ msgid "Horizontal Tab Border" #~ msgstr "Horisontell flikram" - #~ msgid "Width of the horizontal border of tab labels" #~ msgstr "Bredd på den horisontella ramen runt fliketiketter" - #~ msgid "Vertical Tab Border" #~ msgstr "Vertikal flikram" - #~ msgid "Width of the vertical border of tab labels" #~ msgstr "Bredd på den vertikala ramen runt fliketiketter" - #~ msgid "Whether tabs should have homogeneous sizes" #~ msgstr "Huruvida flikar ska ha samma storlek" - #~ msgid "Group ID for tabs drag and drop" #~ msgstr "Grupp-id för flikarnas drag-och-släpp" - #~ msgid "User Data" #~ msgstr "Användardata" - #~ msgid "Anonymous User Data Pointer" #~ msgstr "Pekare till anonym användardata" - #~ msgid "The menu of options" #~ msgstr "Alternativmenyn" - #~ msgid "Size of dropdown indicator" #~ msgstr "Storlek på nedfällningsindikator" - #~ msgid "Spacing around indicator" #~ msgstr "Utrymme runt indikator" - #~ msgid "" #~ "Whether the preview widget should take up the entire space it is allocated" #~ msgstr "" #~ "Huruvida förhandsvisningswidgeten ska fylla ut hela det utrymme det har " #~ "allokerats" - #~ msgid "The GtkAdjustment connected to the progress bar (Deprecated)" #~ msgstr "GtkAdjustment ansluten till förloppsmätaren (föråldrat)" - #~ msgid "Bar style" #~ msgstr "Mätarstil" - #~ msgid "" #~ "Specifies the visual style of the bar in percentage mode (Deprecated)" #~ msgstr "Anger utseendet på mätaren i procentläge (föråldrat)" - #~ msgid "Activity Step" #~ msgstr "Aktivitetssteg" - #~ msgid "The increment used for each iteration in activity mode (Deprecated)" #~ msgstr "" #~ "Ökningen som används för varje iterering i aktivitetsläge (föråldrat)" - #~ msgid "Activity Blocks" #~ msgstr "Aktivitetsblock" - #~ msgid "" #~ "The number of blocks which can fit in the progress bar area in activity " #~ "mode (Deprecated)" #~ msgstr "" #~ "Antalet block som kan passa in i förloppsmätarområdet i aktivitetsläge " #~ "(föråldrat)" - #~ msgid "Discrete Blocks" #~ msgstr "Diskreta block" - #~ msgid "" #~ "The number of discrete blocks in a progress bar (when shown in the " #~ "discrete style)" #~ msgstr "" #~ "Antalet diskreta block i en förloppsmätare (när den visas i diskret stil)" - #~ msgid "Horizontal adjustment for the text widget" #~ msgstr "Horisontell justering för textwidgeten" - #~ msgid "Vertical adjustment for the text widget" #~ msgstr "Vertikal justering för textwidgeten" - #~ msgid "Line Wrap" #~ msgstr "Radbryt" - #~ msgid "Whether lines are wrapped at widget edges" #~ msgstr "Huruvida radbrytning sker vid widgetkanter" - #~ msgid "Word Wrap" #~ msgstr "Ordbryt" - #~ msgid "Whether words are wrapped at widget edges" #~ msgstr "Huruvida ord bryts vid widgetkanter" - #~ msgid "Tooltips" #~ msgstr "Verktygstips" - #~ msgid "If the tooltips of the toolbar should be active or not" #~ msgstr "Om verktygstipsen på verktygsraden ska vara aktiva eller inte" - #~ msgid "The orientation of the toolbar" #~ msgstr "Orienteringen för verktygsraden" - #~ msgid "Whether stock icons should be shown in buttons" #~ msgstr "Huruvida standardikoner ska visas i knappar" - #~ msgid "Whether or not the operation has been successfully cancelled" #~ msgstr "Huruvida avbrytandet av åtgärden har lyckats eller inte" - #~ msgid "" #~ "A number between 0.0 and 1.0 specifying the horizontal alignment of the " #~ "text in the progress widget" #~ msgstr "" #~ "Ett tal mellan 0.0 och 1.0 som anger den horisontella justeringen av " #~ "texten i förloppswidgeten" - #~ msgid "" #~ "A number between 0.0 and 1.0 specifying the vertical alignment of the " #~ "text in the progress widget" #~ msgstr "" #~ "Ett tal mellan 0.0 och 1.0 som anger den vertikala justeringen av texten " #~ "i förloppswidgeten" - #, fuzzy #~ msgid "The current page in the document." #~ msgstr "Sidstorleken på justeringen" - #~ msgid "Homogenous" #~ msgstr "Homogena" #, fuzzy #~ msgid "Show Preview" #~ msgstr "Visa text" - #~ msgid "" #~ "Whether a file chooser in save modewill present an overwrite confirmation " #~ "dialog if necessary." #~ msgstr "" #~ "Huruvidare en filväljare i sparandeläge kommer att visa en " #~ "överskrivningsbekräftelsedialog om så behövs." - #~ msgid "What degree of hinting to use; none, slight, medium, or full" #~ msgstr "" #~ "Vilken grad av hintning att använda; ingen, liten, mellan, eller " #~ "fullständig" - #~ msgid "" #~ "Offset of text above the baseline (below the baseline if rise is " #~ "negative) in pixels" #~ msgstr "" #~ "Avstånd för texten ovanför baslinjen (nedanför baslinjen om höjning är " #~ "negativt) i bildpunkter" - #~ msgid "Space which is inserted between grid column" #~ msgstr "Mellanrum som infogas mellan kolumn i rutnät" - #~ msgid "Whether this text is hidden. Not implemented in GTK 2.0" #~ msgstr "Huruvida denna text är dold. Inte implementerat i GTK 2.0" - #~ msgid "" #~ "Whether rows should be expanded/collaped when the pointer moves over them" #~ msgstr "Huruvida rader ska fällas ut/fällas in då pekaren flyttas över dem" - #~ msgid "Width in characters" #~ msgstr "Bredd i antal tecken" - #~ msgid "Maximum Width in Characters" #~ msgstr "Maximal bredd i antal tecken" - #~ msgid "Modules" #~ msgstr "Moduler" - #~ msgid "Width In Chararacters" #~ msgstr "Bredd i antal tecken" - #~ msgid "Row separator column" #~ msgstr "Radavskiljarkolumn" - #~ msgid "ComboBox appareance" #~ msgstr "ComboBox-utseende" - #~ msgid "ComboBox appearance, where TRUE means Windows-style." #~ msgstr "ComboBox-utseende, där SANT betyder av Windows-typ." - #~ msgid "The horizontal alignment, from 0 (left) to 1 (right)" #~ msgstr "Horisontell justering, från 0 (vänster) till 1 (höger)" - #~ msgid "Folder Mode" #~ msgstr "Mappläge" - #~ msgid "Whether to select folders rather than files" #~ msgstr "Huruvida den mappar ska väljas istället för filer" - #~ msgid "File System" #~ msgstr "Filsystem" + diff --git a/po/POTFILES.in b/po/POTFILES.in index 35783a698e..a57514ba91 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,6 +1,8 @@ # Files from the Gtk distribution which have already been # marked to allow runtime translation of messages gdk/gdk.c +gdk/gdkapplaunchcontext.c +gdk/gdkcursor.c gdk/gdkdevice.c gdk/gdkdevicemanager.c gdk/gdkdisplaymanager.c @@ -13,6 +15,7 @@ gdk/x11/gdkapplaunchcontext-x11.c gdk/x11/gdkdevice-xi.c gdk/x11/gdkdevice-xi2.c gdk/x11/gdkdevicemanager-xi.c +gdk/x11/gdkdevicemanager-xi2.c gdk/x11/gdkmain-x11.c gtk/gtkaboutdialog.c gtk/gtkaccelgroup.c @@ -26,15 +29,24 @@ gtk/gtkadjustment.c gtk/gtkalignment.c gtk/gtkarrow.c gtk/gtkaspectframe.c +gtk/gtkanimationdescription.c +gtk/gtkappchooser.c +gtk/gtkappchooserbutton.c +gtk/gtkappchooserdialog.c +gtk/gtkappchooserwidget.c gtk/gtkassistant.c gtk/gtkbbox.c gtk/gtkbin.c +gtk/gtkbindings.c gtk/gtkbox.c gtk/gtkbuildable.c gtk/gtkbuilder.c gtk/gtkbuilderparser.c gtk/gtkbutton.c gtk/gtkcalendar.c +gtk/gtkcellarea.c +gtk/gtkcellareabox.c +gtk/gtkcellareacontext.c gtk/gtkcelleditable.c gtk/gtkcelllayout.c gtk/gtkcellrendereraccel.c @@ -82,6 +94,7 @@ gtk/gtkfixed.c gtk/gtkfontbutton.c gtk/gtkfontsel.c gtk/gtkframe.c +gtk/gtkgrid.c gtk/gtkhandlebox.c gtk/gtkhbbox.c gtk/gtkhbox.c @@ -113,11 +126,13 @@ gtk/gtkmenushell.c gtk/gtkmenutoolbutton.c gtk/gtkmessagedialog.c gtk/gtkmisc.c +gtk/gtkmodifierstyle.c gtk/gtkmodules.c gtk/gtkmountoperation.c gtk/gtkmountoperation-stub.c gtk/gtkmountoperation-x11.c gtk/gtknotebook.c +gtk/gtknumerableicon.c gtk/gtkorientable.c gtk/gtkpagesetup.c gtk/gtkpagesetupunixdialog.c @@ -148,6 +163,7 @@ gtk/gtkrecentchoosermenu.c gtk/gtkrecentmanager.c gtk/gtkscalebutton.c gtk/gtkscale.c +gtk/gtkscrollable.c gtk/gtkscrollbar.c gtk/gtkscrolledwindow.c gtk/gtkselection.c @@ -163,6 +179,8 @@ gtk/gtkstatusbar.c gtk/gtkstatusicon.c gtk/gtkstock.c gtk/gtkstyle.c +gtk/gtkstylecontext.c +gtk/gtkstyleprovider.c gtk/gtkswitch.c gtk/gtktable.c gtk/gtktearoffmenuitem.c @@ -178,7 +196,7 @@ gtk/gtktexttag.c gtk/gtktexttagtable.c gtk/gtktextutil.c gtk/gtktextview.c -gtk/gtkthemes.c +gtk/gtkthemingengine.c gtk/gtktoggleaction.c gtk/gtktogglebutton.c gtk/gtktoggletoolbutton.c @@ -190,6 +208,7 @@ gtk/gtktoolpalette.c gtk/gtktoolshell.c gtk/gtktrayicon-x11.c gtk/gtktreednd.c +gtk/gtktreemenu.c gtk/gtktreemodel.c gtk/gtktreemodelfilter.c gtk/gtktreemodelsort.c @@ -198,7 +217,6 @@ gtk/gtktreesortable.c gtk/gtktreestore.c gtk/gtktreeview.c gtk/gtktreeviewcolumn.c -gtk/gtktypeutils.c gtk/gtkuimanager.c gtk/gtkvbbox.c gtk/gtkvbox.c @@ -210,7 +228,6 @@ gtk/gtkvscrollbar.c gtk/gtkvseparator.c gtk/gtkwidget.c gtk/gtkwindow.c -gtk/gtkwindow-decorate.c gtk/paper_names_offsets.c gtk/updateiconcache.c modules/input/gtkimcontextxim.c diff --git a/po/ar.po b/po/ar.po index d2b87d0563..074e338d45 100644 --- a/po/ar.po +++ b/po/ar.po @@ -7,75 +7,65 @@ # Djihed Afifi , 2006. # Seba Barto , 2006. # Anas Afif Emad , 2008. -# Khaled Hosny , 2006, 2007, 2008, 2009, 2010. +# Khaled Hosny , 2006, 2007, 2008, 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gtk+.HEAD\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-13 03:09+0200\n" -"PO-Revision-Date: 2010-11-13 03:20+0300\n" +"POT-Creation-Date: 2011-01-12 09:10+0200\n" +"PO-Revision-Date: 2011-01-12 09:10+0300\n" "Last-Translator: Khaled Hosny \n" "Language-Team: Arabic \n" -"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Virtaal 0.6.1\n" -#: gdk/gdk.c:104 +#: gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "حدث خطأ أثناء تحليل الخيار ‪--gdk-debug‬" -#: gdk/gdk.c:124 +#: gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "حدث خطأ أثناء تحليل الخيار ‪--gdk-no-debug‬" #. Description of --class=CLASS in --help output -#: gdk/gdk.c:152 +#: gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "صنف البرنامج كما يستخدمه مدير النوافذ" #. Placeholder in --class=CLASS in --help output -#: gdk/gdk.c:153 +#: gdk/gdk.c:201 msgid "CLASS" msgstr "صنف" #. Description of --name=NAME in --help output -#: gdk/gdk.c:155 +#: gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "اسم البرنامج كما يستخدمه مدير النوافذ" #. Placeholder in --name=NAME in --help output -#: gdk/gdk.c:156 +#: gdk/gdk.c:204 msgid "NAME" msgstr "اسم" #. Description of --display=DISPLAY in --help output -#: gdk/gdk.c:158 +#: gdk/gdk.c:206 msgid "X display to use" msgstr "مِعراض س ليستخدم" #. Placeholder in --display=DISPLAY in --help output -#: gdk/gdk.c:159 +#: gdk/gdk.c:207 msgid "DISPLAY" msgstr "مِعراض" -#. Description of --screen=SCREEN in --help output -#: gdk/gdk.c:161 -msgid "X screen to use" -msgstr "شاشة س لتُستخدم" - -#. Placeholder in --screen=SCREEN in --help output -#: gdk/gdk.c:162 -msgid "SCREEN" -msgstr "شاشة" - #. Description of --gdk-debug=FLAGS in --help output -#: gdk/gdk.c:165 +#: gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "شارات تنقيح ج‌د‌ك+ التي ستضبط" @@ -83,12 +73,12 @@ msgstr "شارات تنقيح ج‌د‌ك+ التي ستضبط" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: gdk/gdk.c:166 gdk/gdk.c:169 gtk/gtkmain.c:534 gtk/gtkmain.c:537 +#: gdk/gdk.c:211 gdk/gdk.c:214 gtk/gtkmain.c:570 gtk/gtkmain.c:573 msgid "FLAGS" msgstr "شارات" #. Description of --gdk-no-debug=FLAGS in --help output -#: gdk/gdk.c:168 +#: gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "شارات تنقيح ج‌د‌ك+ التي ستُصفّر" @@ -278,46 +268,46 @@ msgid "Delete" msgstr "Delete" #. Description of --sync in --help output -#: gdk/win32/gdkmain-win32.c:54 +#: gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "لا ترسل طلبات GDI دفعة واحدة" #. Description of --no-wintab in --help output -#: gdk/win32/gdkmain-win32.c:56 +#: gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "لا تستخدم Wintab API لدعم اللوحة" #. Description of --ignore-wintab in --help output -#: gdk/win32/gdkmain-win32.c:58 +#: gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "مثل --no-wintab" #. Description of --use-wintab in --help output -#: gdk/win32/gdkmain-win32.c:60 +#: gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "لا تستخدم Wintab API [مبدئي]" #. Description of --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:62 +#: gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "حجم لوح الألوان في نمط 8 بتة" #. Placeholder in --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:63 +#: gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "ألوان" -#: gdk/x11/gdkapplaunchcontext-x11.c:312 +#: gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "يجري بدء %s" -#: gdk/x11/gdkapplaunchcontext-x11.c:316 +#: gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "يجري فتح %s" -#: gdk/x11/gdkapplaunchcontext-x11.c:321 +#: gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" @@ -328,63 +318,62 @@ msgstr[3] "يجري فتح %Id عناصر" msgstr[4] "يجري فتح %Id عنصرا" msgstr[5] "يجري فتح %Id عنصر" -#. Description of --sync in --help output -#: gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "اجعل نداءات س متزامنة" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: gtk/gtkaboutdialog.c:101 +#: gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "يأتي هذا البرنامج دون أي ضمانات على الإطلاق؛ زر %s لمزيد من المعلومات." +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "" +"يأتي هذا البرنامج دون أي ضمانات على الإطلاق؛ زر %s لمزيد " +"من المعلومات." -#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2233 +#: gtk/gtkaboutdialog.c:346 msgid "License" msgstr "الترخيص" -#: gtk/gtkaboutdialog.c:340 +#: gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "ترخيص البرنامج" #. Add the credits button -#: gtk/gtkaboutdialog.c:622 +#: gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "إ_شادات" #. Add the license button -#: gtk/gtkaboutdialog.c:636 +#: gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "ال_ترخيص" -#: gtk/gtkaboutdialog.c:840 +#: gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "تعذّر إظهار الوصلة" -#: gtk/gtkaboutdialog.c:933 +#: gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "الموقع" + +#: gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "عنْ %s" -#: gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "إشادات" +#: gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "أنشئه" -#: gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "كتَبَهُ" - -#: gtk/gtkaboutdialog.c:2186 +#: gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "وثّقه" -#: gtk/gtkaboutdialog.c:2198 +#: gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "ترجَمَهُ" -#: gtk/gtkaboutdialog.c:2202 +#: gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "جمَّلَهُ" @@ -393,7 +382,7 @@ msgstr "جمَّلَهُ" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:160 +#: gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -403,7 +392,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:166 +#: gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -413,7 +402,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:172 +#: gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -423,7 +412,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:770 +#: gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -433,7 +422,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:783 +#: gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -443,37 +432,120 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:797 +#: gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: gtk/gtkaccellabel.c:813 +#: gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Space" -#: gtk/gtkaccellabel.c:816 +#: gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Backslash" -#: gtk/gtkbuilderparser.c:343 +#: gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "تطبيق آخر..." + +#: gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "فشل البحث عن تطبيق على الإنترنت" + +#: gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "ابحث عن تطبيق على الإنترنت" + +#: gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "تعذّر تشغيل التّطبيق" + +#: gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "تعذر إيجاد '%s'" + +#: gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "تعذّر العثور على تطبيق" + +#. Translators: %s is a filename +#: gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "اختر تطبيقا لفتح \"%s\"" + +#: gtk/gtkappchooserdialog.c:335 gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "لا توجد أي تطبيقات لفتح \"%s\"" + +#. Translators: %s is a file type description +#: gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "اختر تطبيقا لملفات \"%s\"" + +#: gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "لا توجد أي تطبيقات لفتح ملفات \"%s\"" + +#: gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"انقر على \"أظهر التطبيقات الأخرى\" لمزيد من الخيارات، أو \"ابحث عن تطبيق على " +"الإنترنت\" لتثبيت تطبيق جديد." + +#: gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "انس الارتباط" + +#: gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "أظهر التطبيقات الأخرى" + +#: gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "ا_فتح" + +#: gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "التطبيق المبدئي" + +#: gtk/gtkappchooserwidget.c:730 +msgid "Recommended Applications" +msgstr "التطبيقات المُزكّاة" + +#: gtk/gtkappchooserwidget.c:744 +msgid "Related Applications" +msgstr "التطبيقات المتعلقة" + +#: gtk/gtkappchooserwidget.c:758 +msgid "Other Applications" +msgstr "التطبيقات الأخرى" + +#: gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "نوع دالة غير سليم في سطر %d: '%s'" -#: gtk/gtkbuilderparser.c:407 +#: gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "معرّف كائن مكرر '%s' في سطر %d (السابق في سطر %d)" -#: gtk/gtkbuilderparser.c:859 +#: gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "عنصر جذري غير سليم: %s" -#: gtk/gtkbuilderparser.c:898 +#: gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "وسم غير معتبر: '%s'" @@ -488,7 +560,7 @@ msgstr "وسم غير معتبر: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: gtk/gtkcalendar.c:878 +#: gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:MY" @@ -496,7 +568,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:916 +#: gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:7" @@ -505,7 +577,7 @@ msgstr "calendar:week_start:7" #. * #. * If you don't understand this, leave it as "2000" #. -#: gtk/gtkcalendar.c:1848 +#: gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -520,7 +592,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:1879 gtk/gtkcalendar.c:2564 +#: gtk/gtkcalendar.c:1941 gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -536,7 +608,7 @@ msgstr "%Id" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:1911 gtk/gtkcalendar.c:2432 +#: gtk/gtkcalendar.c:1973 gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -552,7 +624,7 @@ msgstr "%Id" #. * #. * "%Y" is appropriate for most locales. #. -#: gtk/gtkcalendar.c:2197 +#: gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -560,7 +632,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: gtk/gtkcellrendereraccel.c:272 +#: gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "معطّل" @@ -569,7 +641,7 @@ msgstr "معطّل" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: gtk/gtkcellrendereraccel.c:282 +#: gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "غير صحيح" @@ -578,7 +650,7 @@ msgstr "غير صحيح" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: gtk/gtkcellrendereraccel.c:418 gtk/gtkcellrendereraccel.c:675 +#: gtk/gtkcellrendereraccel.c:417 gtk/gtkcellrendereraccel.c:674 msgid "New accelerator..." msgstr "اختصار جديد..." @@ -588,15 +660,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%Id ٪" -#: gtk/gtkcolorbutton.c:188 gtk/gtkcolorbutton.c:473 +#: gtk/gtkcolorbutton.c:187 gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "اختر لونًا" -#: gtk/gtkcolorbutton.c:363 +#: gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "استُلِمت بيانات لون غير سليمة\n" -#: gtk/gtkcolorsel.c:416 +#: gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -604,73 +676,73 @@ msgstr "" "اختر اللون الذي تريده من الحلقة الخارجية. اختر ظلمة أو إضاءة ذلك اللون " "باستخدام المثلث الداخلي." -#: gtk/gtkcolorsel.c:440 +#: gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." msgstr "انقر القطّارة ثم انقر أيّ لون في أيّ مكان على الشاشة لاختيار ذلك اللون." -#: gtk/gtkcolorsel.c:449 +#: gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "ال_تدرج:" -#: gtk/gtkcolorsel.c:450 +#: gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "الموقع على عجلة الألوان." -#: gtk/gtkcolorsel.c:452 +#: gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "الت_شبع:" -#: gtk/gtkcolorsel.c:453 +#: gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "كثافة اللون." -#: gtk/gtkcolorsel.c:454 +#: gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "ال_قيمة:" -#: gtk/gtkcolorsel.c:455 +#: gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "سُطوع اللون." -#: gtk/gtkcolorsel.c:456 +#: gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_أحمر:" -#: gtk/gtkcolorsel.c:457 +#: gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "كمية الضوء الأحمر في اللون." -#: gtk/gtkcolorsel.c:458 +#: gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "أ_خضر:" -#: gtk/gtkcolorsel.c:459 +#: gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "كمية الضوء الأخضر في اللون." -#: gtk/gtkcolorsel.c:460 +#: gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "أ_زرق:" -#: gtk/gtkcolorsel.c:461 +#: gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "كمية الضوء الأزرق في اللون." -#: gtk/gtkcolorsel.c:464 +#: gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "ال_عتامة:" -#: gtk/gtkcolorsel.c:471 gtk/gtkcolorsel.c:481 +#: gtk/gtkcolorsel.c:470 gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "شفافية اللون." -#: gtk/gtkcolorsel.c:488 +#: gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "ا_سم اللون:" -#: gtk/gtkcolorsel.c:502 +#: gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -678,15 +750,15 @@ msgstr "" "يمكنك إدخال قيمة لون بالنظام الست عشري و أسلوب HTML، أو اسم لون بكل بساطة " "مثل 'orange' في هذه الخانة." -#: gtk/gtkcolorsel.c:532 +#: gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_لوحة الألوان:" -#: gtk/gtkcolorsel.c:561 +#: gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "عجلة الألوان" -#: gtk/gtkcolorsel.c:1031 +#: gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -695,7 +767,7 @@ msgstr "" "اللون المُختار سابقًا، للمقارنة باللون الذي اخترتَه الآن. يُمكِنك سحب هذا اللون " "لخانة لوحة ألوان، أو جعله كاللون الحالي بسحبه للمربع اللوني." -#: gtk/gtkcolorsel.c:1034 +#: gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -703,21 +775,21 @@ msgstr "" "اللون الذي اخترته. تستطيع سحب هذا اللون إلى خانة لوحة الألوان لحفظه حتى " "تستخدمه مستقبلًا." -#: gtk/gtkcolorsel.c:1039 +#: gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." msgstr "اللون المختار سابقا، لمقارنته مع اللون الذي تختاره الآن." -#: gtk/gtkcolorsel.c:1042 +#: gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "اللون الذي اخترته." -#: gtk/gtkcolorsel.c:1442 +#: gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "ا_حفظ اللون هنا" -#: gtk/gtkcolorsel.c:1647 +#: gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -740,7 +812,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: gtk/gtkcustompaperunixdialog.c:374 gtk/gtkprintunixdialog.c:3240 +#: gtk/gtkcustompaperunixdialog.c:374 gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "أدِر المقاسات المخصّصة" @@ -793,66 +865,66 @@ msgstr "_يمين:" msgid "Paper Margins" msgstr "حواف الورق" -#: gtk/gtkentry.c:8652 gtk/gtktextview.c:8229 +#: gtk/gtkentry.c:8806 gtk/gtktextview.c:8227 msgid "Input _Methods" msgstr "طرق ال_إدخال" -#: gtk/gtkentry.c:8666 gtk/gtktextview.c:8243 +#: gtk/gtkentry.c:8820 gtk/gtktextview.c:8241 msgid "_Insert Unicode Control Character" msgstr "أ_درج محرف تحكم يونيكود" -#: gtk/gtkentry.c:10066 +#: gtk/gtkentry.c:10224 msgid "Caps Lock and Num Lock are on" msgstr "زر الحروف العالية والأرقام مفعل" -#: gtk/gtkentry.c:10068 +#: gtk/gtkentry.c:10226 msgid "Num Lock is on" msgstr "زر الأرقام مفعّل" -#: gtk/gtkentry.c:10070 +#: gtk/gtkentry.c:10228 msgid "Caps Lock is on" msgstr "زر الحروف العالية مفعّل" #. **************** * #. * Private Macros * #. * **************** -#: gtk/gtkfilechooserbutton.c:61 +#: gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "اختر ملفًا" -#: gtk/gtkfilechooserbutton.c:62 gtk/gtkfilechooserdefault.c:1833 +#: gtk/gtkfilechooserbutton.c:63 gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "سطح المكتب" -#: gtk/gtkfilechooserbutton.c:63 +#: gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(لا شيء)" -#: gtk/gtkfilechooserbutton.c:2001 +#: gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "أخرى..." -#: gtk/gtkfilechooserdefault.c:147 +#: gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "اكتب اسما للمجلد الجديد" -#: gtk/gtkfilechooserdefault.c:946 +#: gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "تعذّر جلب معلومات عن الملف" -#: gtk/gtkfilechooserdefault.c:957 +#: gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "تعذّر إضافة علامة" -#: gtk/gtkfilechooserdefault.c:968 +#: gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "تعذّر حذف العلامة" -#: gtk/gtkfilechooserdefault.c:979 +#: gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "تعذّر إنشاء المجلّد" -#: gtk/gtkfilechooserdefault.c:992 +#: gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -860,19 +932,18 @@ msgstr "" "تعذّر إنشاء المجلد بسبب وجود ملف يحمل نفس الاسم. حاول استخدام اسم آخر للمجلد، " "أو غيّر اسم الملف أولا." -#: gtk/gtkfilechooserdefault.c:1006 +#: gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." msgstr "" -"يمكن اختيار المجلدات فقط. العنصر الذي اخترته ليس مجلدا، حاول اختيار عنصر " -"آخر." +"يمكن اختيار المجلدات فقط. العنصر الذي اخترته ليس مجلدا، حاول اختيار عنصر آخر." -#: gtk/gtkfilechooserdefault.c:1016 +#: gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "اسم ملف غير صالح" -#: gtk/gtkfilechooserdefault.c:1026 +#: gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "تعذّر عرض محتويات المجلد." @@ -880,236 +951,236 @@ msgstr "تعذّر عرض محتويات المجلد." #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: gtk/gtkfilechooserdefault.c:1576 +#: gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s على %2$s" -#: gtk/gtkfilechooserdefault.c:1752 +#: gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "ابحث" -#: gtk/gtkfilechooserdefault.c:1776 gtk/gtkfilechooserdefault.c:9383 +#: gtk/gtkfilechooserdefault.c:1777 gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "مستخدمة مؤخرا" -#: gtk/gtkfilechooserdefault.c:2430 +#: gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "اختر أنواع الملفات التي ستعرض" -#: gtk/gtkfilechooserdefault.c:2789 +#: gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "أضِف المجلّد '%s' إلى العلامات" -#: gtk/gtkfilechooserdefault.c:2833 +#: gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "أضِف المجلّد الحالي إلى العلامات" -#: gtk/gtkfilechooserdefault.c:2835 +#: gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "أضِف المجلدات المحددة إلى العلامات" -#: gtk/gtkfilechooserdefault.c:2873 +#: gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "احذِف العلامة '%s'" -#: gtk/gtkfilechooserdefault.c:2875 +#: gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "لا يمكن إزالة العلامة '%s'" -#: gtk/gtkfilechooserdefault.c:2882 gtk/gtkfilechooserdefault.c:3747 +#: gtk/gtkfilechooserdefault.c:2890 gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "احذِف العلامة المحددة" -#: gtk/gtkfilechooserdefault.c:3442 +#: gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "احذف" -#: gtk/gtkfilechooserdefault.c:3451 +#: gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "غيّر الاسم..." #. Accessible object name for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3614 +#: gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "أماكن" #. Column header for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3671 +#: gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "أ_ماكن" -#: gtk/gtkfilechooserdefault.c:3728 +#: gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "أ_ضف" -#: gtk/gtkfilechooserdefault.c:3735 +#: gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "أضِف المجلد المحدد للعلامات" -#: gtk/gtkfilechooserdefault.c:3740 +#: gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "ا_حذِف" -#: gtk/gtkfilechooserdefault.c:3882 +#: gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "تعذّر اختيار الملف" -#: gtk/gtkfilechooserdefault.c:4057 +#: gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "أ_ضف للعلامات" -#: gtk/gtkfilechooserdefault.c:4070 +#: gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "أظهر الملفات ال_مخفيّة" -#: gtk/gtkfilechooserdefault.c:4077 +#: gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "أظهر _عمود الحجم" -#: gtk/gtkfilechooserdefault.c:4303 +#: gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "ملفات" -#: gtk/gtkfilechooserdefault.c:4354 +#: gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "الا_سم" -#: gtk/gtkfilechooserdefault.c:4377 +#: gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "الحجم" -#: gtk/gtkfilechooserdefault.c:4391 +#: gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "معدّل" #. Label -#: gtk/gtkfilechooserdefault.c:4646 gtk/gtkprinteroptionwidget.c:793 +#: gtk/gtkfilechooserdefault.c:4657 gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "الا_سم:" -#: gtk/gtkfilechooserdefault.c:4689 +#: gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_تصفّح مجلدات أخرى" -#: gtk/gtkfilechooserdefault.c:4959 +#: gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "اكتب اسم ملف" #. Create Folder -#: gtk/gtkfilechooserdefault.c:5002 +#: gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "أنشئ _مجلّدًا" -#: gtk/gtkfilechooserdefault.c:5012 +#: gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "ال_موقع:" -#: gtk/gtkfilechooserdefault.c:5216 +#: gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "احفظ في ال_مجلّد:" -#: gtk/gtkfilechooserdefault.c:5218 +#: gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "أنشئ في ال_مجلّد:" -#: gtk/gtkfilechooserdefault.c:6287 +#: gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "تعذّرت قراءة محتويات %s" -#: gtk/gtkfilechooserdefault.c:6291 +#: gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "تعذّرت قراءة محتويات المجلّد" -#: gtk/gtkfilechooserdefault.c:6384 gtk/gtkfilechooserdefault.c:6452 -#: gtk/gtkfilechooserdefault.c:6597 +#: gtk/gtkfilechooserdefault.c:6393 gtk/gtkfilechooserdefault.c:6461 +#: gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "مجهول" -#: gtk/gtkfilechooserdefault.c:6399 +#: gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%OH:%OM" -#: gtk/gtkfilechooserdefault.c:6401 +#: gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "أمس في %OH:%OM" -#: gtk/gtkfilechooserdefault.c:7067 +#: gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "تعذّر الانتقال إلى المجلّد لأنه غير محلي" -#: gtk/gtkfilechooserdefault.c:7664 gtk/gtkfilechooserdefault.c:7685 +#: gtk/gtkfilechooserdefault.c:7673 gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "الاختصار %s موجود مسبقا" -#: gtk/gtkfilechooserdefault.c:7775 +#: gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "الاختصار %s غير موجود" -#: gtk/gtkfilechooserdefault.c:8036 gtk/gtkprintunixdialog.c:480 +#: gtk/gtkfilechooserdefault.c:8046 gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "هناك ملف باسم \"%s\" موجود حاليا. أتريد استبداله؟" -#: gtk/gtkfilechooserdefault.c:8039 gtk/gtkprintunixdialog.c:484 +#: gtk/gtkfilechooserdefault.c:8049 gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "الملف موجود بالفعل في \"%s\". استبداله سيكتب فوق محتواه." -#: gtk/gtkfilechooserdefault.c:8044 gtk/gtkprintunixdialog.c:491 +#: gtk/gtkfilechooserdefault.c:8054 gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "است_بدِل" -#: gtk/gtkfilechooserdefault.c:8752 +#: gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "تعذّر تشغيل عملية البحث" -#: gtk/gtkfilechooserdefault.c:8753 +#: gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." msgstr "" "لم يمكن للبرنامج أن ينشئ اتصالا بخادوم الفهرسة. الرجاء التأكد من أنه مشتغل." -#: gtk/gtkfilechooserdefault.c:8767 +#: gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "تعذّر إرسال طلب البحث" -#: gtk/gtkfilechooserdefault.c:8955 +#: gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "ابحث:" -#: gtk/gtkfilechooserdefault.c:9560 +#: gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "تعذّر وصْل %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: gtk/gtkfilechooserentry.c:702 gtk/gtkfilechooserentry.c:1172 +#: gtk/gtkfilechooserentry.c:700 gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "مسار غير صحيح" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1104 +#: gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "لا تطابق" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1115 +#: gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "مجرد اكتمال" @@ -1117,13 +1188,13 @@ msgstr "مجرد اكتمال" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: gtk/gtkfilechooserentry.c:1131 +#: gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "مكتمل، لكن ليس فريدا" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: gtk/gtkfilechooserentry.c:1163 +#: gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "يجري الإكمال..." @@ -1131,7 +1202,7 @@ msgstr "يجري الإكمال..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: gtk/gtkfilechooserentry.c:1185 gtk/gtkfilechooserentry.c:1210 +#: gtk/gtkfilechooserentry.c:1191 gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "يتاح اختيار الملفات المحلية فقط" @@ -1139,14 +1210,14 @@ msgstr "يتاح اختيار الملفات المحلية فقط" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: gtk/gtkfilechooserentry.c:1194 +#: gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "اسم مستضيف غير كامل؛ أضف '/' إلى نهايته" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: gtk/gtkfilechooserentry.c:1205 +#: gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "المسار غير موجود" @@ -1174,40 +1245,40 @@ msgstr "الخطّ" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: gtk/gtkfontsel.c:103 +#: gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "أبجد هوز حطي كلمن abcdefg ABCDEFG" -#: gtk/gtkfontsel.c:370 +#: gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "ال_عائلة:" -#: gtk/gtkfontsel.c:376 +#: gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "الأ_سلوب:" -#: gtk/gtkfontsel.c:382 +#: gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "ال_حجم:" #. create the text entry widget -#: gtk/gtkfontsel.c:558 +#: gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_معاينة:" -#: gtk/gtkfontsel.c:1658 +#: gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "اختيار الخط" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: gtk/gtkiconfactory.c:1356 +#: gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "خطأ أثناء تحميل الأيقونة: %s" -#: gtk/gtkicontheme.c:1355 +#: gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1220,12 +1291,12 @@ msgstr "" "يمكنك جلب نسخة من:\n" "\t%s" -#: gtk/gtkicontheme.c:1536 +#: gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "الأيقونة '%s' غير موجودة في السِمة" -#: gtk/gtkicontheme.c:3057 +#: gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "فشل تحميل الأيقونة" @@ -1250,45 +1321,45 @@ msgid "System (%s)" msgstr "النظام (%s)" #. Open Link -#: gtk/gtklabel.c:6214 +#: gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "ا_فتح الوصلة" #. Copy Link Address -#: gtk/gtklabel.c:6226 +#: gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "ا_نسخ عنوان الوصلة" -#: gtk/gtklinkbutton.c:484 +#: gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "ا_نسخ المسار" -#: gtk/gtklinkbutton.c:647 +#: gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "عنوان غير صحيح" #. Description of --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:527 +#: gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "حمّل وحدات ج‌ت‌ك+ إضافية" #. Placeholder in --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:528 +#: gtk/gtkmain.c:564 msgid "MODULES" msgstr "وحدات" #. Description of --g-fatal-warnings in --help output -#: gtk/gtkmain.c:530 +#: gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "اجعل جميع التحذيرات قاتلة" #. Description of --gtk-debug=FLAGS in --help output -#: gtk/gtkmain.c:533 +#: gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "شارات تنقيح ج‌ت‌ك+ التي ستضبط" #. Description of --gtk-no-debug=FLAGS in --help output -#: gtk/gtkmain.c:536 +#: gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "شارات تنقيح ج‌ت‌ك+ التي ستُصفّر" @@ -1297,20 +1368,20 @@ 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:799 +#: gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:RTL" -#: gtk/gtkmain.c:864 +#: gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "غير قادر على فتح العرض: %s" -#: gtk/gtkmain.c:923 +#: gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "خيارات ج‌ت‌ك+" -#: gtk/gtkmain.c:923 +#: gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "اعرض خيارات ج‌ت‌ك+" @@ -1394,7 +1465,7 @@ msgstr "صدفة زِد" msgid "Cannot end process with PID %d: %s" msgstr "تعذّر إنهاء العملية ذات المعرف %d:‏ %s" -#: gtk/gtknotebook.c:4756 gtk/gtknotebook.c:7319 +#: gtk/gtknotebook.c:4817 gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "صفحة %Iu" @@ -1427,7 +1498,7 @@ msgstr "" "فوق: %s %s\n" "تحت: %s %s" -#: gtk/gtkpagesetupunixdialog.c:858 gtk/gtkprintunixdialog.c:3291 +#: gtk/gtkpagesetupunixdialog.c:858 gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "أدِر المقاسات المخصّصة..." @@ -1435,7 +1506,7 @@ msgstr "أدِر المقاسات المخصّصة..." msgid "_Format for:" msgstr "_صيغة:" -#: gtk/gtkpagesetupunixdialog.c:931 gtk/gtkprintunixdialog.c:3463 +#: gtk/gtkpagesetupunixdialog.c:931 gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "_مقاس الورقة:" @@ -1443,19 +1514,19 @@ msgstr "_مقاس الورقة:" msgid "_Orientation:" msgstr "الا_تجاه:" -#: gtk/gtkpagesetupunixdialog.c:1026 gtk/gtkprintunixdialog.c:3525 +#: gtk/gtkpagesetupunixdialog.c:1026 gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "إعداد الصفحة" -#: gtk/gtkpathbar.c:158 +#: gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "المسار العلوي" -#: gtk/gtkpathbar.c:160 +#: gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "المسار السفلي" -#: gtk/gtkpathbar.c:1523 +#: gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "جذر نظام الملفات" @@ -1479,83 +1550,83 @@ msgstr "ا_حفظ في مجلّد:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: gtk/gtkprintoperation.c:190 +#: gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s مهمّة #%Id" -#: gtk/gtkprintoperation.c:1695 +#: gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "الحالة الأولية" -#: gtk/gtkprintoperation.c:1696 +#: gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "يحضّر للطباعة" -#: gtk/gtkprintoperation.c:1697 +#: gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "يولّد البيانات" -#: gtk/gtkprintoperation.c:1698 +#: gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "يرسل البيانات" -#: gtk/gtkprintoperation.c:1699 +#: gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "ينتظر" -#: gtk/gtkprintoperation.c:1700 +#: gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "متعطّل بسبب مشكلة" -#: gtk/gtkprintoperation.c:1701 +#: gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "يطبع" -#: gtk/gtkprintoperation.c:1702 +#: gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "ينهي" -#: gtk/gtkprintoperation.c:1703 +#: gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "تم مع خطأ" -#: gtk/gtkprintoperation.c:2270 +#: gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "يحضّر %Id" -#: gtk/gtkprintoperation.c:2272 gtk/gtkprintoperation.c:2902 +#: gtk/gtkprintoperation.c:2275 gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "يحضّر" -#: gtk/gtkprintoperation.c:2275 +#: gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "يطبع %Id" -#: gtk/gtkprintoperation.c:2932 +#: gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "حدث خطأ أثناء إنشاء معاينة الطباعة" -#: gtk/gtkprintoperation.c:2935 +#: gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "السبب الأكثر احتمالاً هو عدم القدرة على إنشاء ملف مؤقت." -#: gtk/gtkprintoperation-unix.c:297 +#: gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "حدث خطأ أثناء بدء المعاينة" -#: gtk/gtkprintoperation-unix.c:470 gtk/gtkprintoperation-win32.c:1447 +#: gtk/gtkprintoperation-unix.c:477 gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "تطبيق" @@ -1569,7 +1640,7 @@ msgstr "نَفَذ الورق" #. Translators: this is a printer status. #: gtk/gtkprintoperation-win32.c:615 -#: modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "أُلبِث" @@ -1622,41 +1693,41 @@ msgstr "فشل جلب معلومات الطابعة" msgid "Getting printer information..." msgstr "يجلب معلومات الطابعة..." -#: gtk/gtkprintunixdialog.c:2139 +#: gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "الطابعة" #. Translators: this is the header for the location column in the print dialog -#: gtk/gtkprintunixdialog.c:2149 +#: gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "الموقع" #. Translators: this is the header for the printer status column in the print dialog -#: gtk/gtkprintunixdialog.c:2160 +#: gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "الحالة" -#: gtk/gtkprintunixdialog.c:2186 +#: gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "المدى" -#: gtk/gtkprintunixdialog.c:2190 +#: gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "_كل الصفحات" -#: gtk/gtkprintunixdialog.c:2197 +#: gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "الصفحة ال_حالية" -#: gtk/gtkprintunixdialog.c:2207 +#: gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "ال_تحديد:" -#: gtk/gtkprintunixdialog.c:2216 +#: gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "_صفحات:" -#: gtk/gtkprintunixdialog.c:2217 +#: gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1664,28 +1735,28 @@ msgstr "" "حدد مدى أو أكثر من أرقام الصفحات،\n" " مثلا: 1-3,7,11" -#: gtk/gtkprintunixdialog.c:2227 +#: gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "صفحات" -#: gtk/gtkprintunixdialog.c:2240 +#: gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "نُسَخْ" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: gtk/gtkprintunixdialog.c:2245 +#: gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "نُسَ_خ:" -#: gtk/gtkprintunixdialog.c:2263 +#: gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "_صفحة بصفحة" -#: gtk/gtkprintunixdialog.c:2271 +#: gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "م_قلوب" -#: gtk/gtkprintunixdialog.c:2291 +#: gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "عامّ" @@ -1695,168 +1766,168 @@ msgstr "عامّ" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: gtk/gtkprintunixdialog.c:3024 -#: modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: gtk/gtkprintunixdialog.c:3039 +#: modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "من اليسار لليمين، ومن الأعلى للأسفل" -#: gtk/gtkprintunixdialog.c:3024 -#: modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: gtk/gtkprintunixdialog.c:3039 +#: modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "من اليسار لليمين، ومن الأسفل للأعلى" -#: gtk/gtkprintunixdialog.c:3025 -#: modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: gtk/gtkprintunixdialog.c:3040 +#: modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "من اليمين لليسار، ومن الأعلى للأسفل" -#: gtk/gtkprintunixdialog.c:3025 -#: modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: gtk/gtkprintunixdialog.c:3040 +#: modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "من اليمين لليسار، ومن الأسفل للأعلى" -#: gtk/gtkprintunixdialog.c:3026 -#: modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: gtk/gtkprintunixdialog.c:3041 +#: modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "من الأعلى للأسفل، ومن اليسار لليمين" -#: gtk/gtkprintunixdialog.c:3026 -#: modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: gtk/gtkprintunixdialog.c:3041 +#: modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "من الأعلى للأسفل، ومن اليمين لليسار" -#: gtk/gtkprintunixdialog.c:3027 -#: modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: gtk/gtkprintunixdialog.c:3042 +#: modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "من الأسفل للأعلى، ومن اليسار لليمين" -#: gtk/gtkprintunixdialog.c:3027 -#: modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: gtk/gtkprintunixdialog.c:3042 +#: modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "من الأسفل للأعلى، ومن اليمين لليسار" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: gtk/gtkprintunixdialog.c:3031 gtk/gtkprintunixdialog.c:3044 -#: modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: gtk/gtkprintunixdialog.c:3046 gtk/gtkprintunixdialog.c:3059 +#: modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "ترتيب الصفحات" -#: gtk/gtkprintunixdialog.c:3060 +#: gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "من اليسار لليمين" -#: gtk/gtkprintunixdialog.c:3061 +#: gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "من اليمين لليسار" -#: gtk/gtkprintunixdialog.c:3073 +#: gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "من الأعلى للأسفل" -#: gtk/gtkprintunixdialog.c:3074 +#: gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "من الأسفل للأعلى" -#: gtk/gtkprintunixdialog.c:3314 +#: gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "التصميم" -#: gtk/gtkprintunixdialog.c:3318 +#: gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "ذو _وجهين:" -#: gtk/gtkprintunixdialog.c:3333 +#: gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "الصفحات في كل _جهة:" -#: gtk/gtkprintunixdialog.c:3350 +#: gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "_ترتيب الصفحات:" -#: gtk/gtkprintunixdialog.c:3366 +#: gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "الطباعة _فقط:" #. In enum order -#: gtk/gtkprintunixdialog.c:3381 +#: gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "كل الورقات" -#: gtk/gtkprintunixdialog.c:3382 +#: gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "الورقات الزوجية" -#: gtk/gtkprintunixdialog.c:3383 +#: gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "الورقات الفردية" -#: gtk/gtkprintunixdialog.c:3386 +#: gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "_المقياس:" -#: gtk/gtkprintunixdialog.c:3413 +#: gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "ورق" -#: gtk/gtkprintunixdialog.c:3417 +#: gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "نوع الورق:" -#: gtk/gtkprintunixdialog.c:3432 +#: gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "_مصدر الورق:" -#: gtk/gtkprintunixdialog.c:3447 +#: gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "_لوحة الخرْج:" -#: gtk/gtkprintunixdialog.c:3487 +#: gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "الا_تجاه:" #. In enum order -#: gtk/gtkprintunixdialog.c:3502 +#: gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "طوليّ" -#: gtk/gtkprintunixdialog.c:3503 +#: gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "عرضيّ" -#: gtk/gtkprintunixdialog.c:3504 +#: gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "طوليّ مقلوب" -#: gtk/gtkprintunixdialog.c:3505 +#: gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "عرضيّ مقلوب" -#: gtk/gtkprintunixdialog.c:3550 +#: gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "تفاصيل المهمّة" -#: gtk/gtkprintunixdialog.c:3556 +#: gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "الأو_لوية:" -#: gtk/gtkprintunixdialog.c:3571 +#: gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr " _معلومات الدفع:" -#: gtk/gtkprintunixdialog.c:3589 +#: gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "اطبع المستند" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: gtk/gtkprintunixdialog.c:3598 +#: gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "الآ_ن" -#: gtk/gtkprintunixdialog.c:3609 +#: gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_في:" @@ -1864,7 +1935,7 @@ msgstr "_في:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: gtk/gtkprintunixdialog.c:3615 +#: gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1872,77 +1943,72 @@ msgstr "" "حدد وقت الطباعة،\n" "مثلا: 15:30، 2:35 م، 14:15:20، 11:46:30 ص، 4 م" -#: gtk/gtkprintunixdialog.c:3625 +#: gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "وقت الطباعة" -#: gtk/gtkprintunixdialog.c:3641 +#: gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "قيد الان_تظار" -#: gtk/gtkprintunixdialog.c:3642 +#: gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "احجز المهمّة حتّى تطلق صراحة" -#: gtk/gtkprintunixdialog.c:3662 +#: gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "أضِف صفحة غلاف" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: gtk/gtkprintunixdialog.c:3671 +#: gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "ق_بل:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: gtk/gtkprintunixdialog.c:3689 +#: gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "ب_عد:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: gtk/gtkprintunixdialog.c:3707 +#: gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "مَهمّة" -#: gtk/gtkprintunixdialog.c:3773 +#: gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "متقدّم" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3811 +#: gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "جودة الصورة" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3815 +#: gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "اللون" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: gtk/gtkprintunixdialog.c:3820 +#: gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "يجري الإنهاء" -#: gtk/gtkprintunixdialog.c:3830 +#: gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "بعض الإعدادات في الحوار تتعارض" -#: gtk/gtkprintunixdialog.c:3853 +#: gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "اطبع" -#: gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "تعذّر العثور على ملف الاحتواء: \"%s\"" - -#: gtk/gtkrc.c:3470 gtk/gtkrc.c:3473 +#: gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "تعذّر إيجاد موقع ملف الصورة في pixmap_path: \"%s\"" @@ -1957,36 +2023,36 @@ msgstr "هذه الوظيفة غير مدعومة للنوع '%s'" msgid "Select which type of documents are shown" msgstr "اختر أنواع المستندات التي ستعرض" -#: gtk/gtkrecentchooserdefault.c:1133 gtk/gtkrecentchooserdefault.c:1170 +#: gtk/gtkrecentchooserdefault.c:1137 gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "لا يوجد عنصر للعنوان '%s'" -#: gtk/gtkrecentchooserdefault.c:1297 +#: gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "مرشّح من دون عنوان" -#: gtk/gtkrecentchooserdefault.c:1650 +#: gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "تعذّر حذف عنصر" -#: gtk/gtkrecentchooserdefault.c:1694 +#: gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "تعذّر مسح القائمة" -#: gtk/gtkrecentchooserdefault.c:1778 +#: gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "ا_نسخ الموقع" -#: gtk/gtkrecentchooserdefault.c:1791 +#: gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "ا_حذف من القائمة" -#: gtk/gtkrecentchooserdefault.c:1800 +#: gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "ا_مسح القائمة" -#: gtk/gtkrecentchooserdefault.c:1814 +#: gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "أظهِر الموارِد ال_خاصة" @@ -2049,14 +2115,14 @@ msgstr "لا يُمكن العثور على عنصر بالعنوان '%s'" #: gtk/gtkrecentmanager.c:2437 #, c-format msgid "No registered application with name '%s' for item with URI '%s' found" -msgstr "" +msgstr "لا يوجد أي تطبيق مسجّل بالاسم '%s' لعناصر مسار '%s'" -#: gtk/gtkspinner.c:456 +#: gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "دوّارة" -#: gtk/gtkspinner.c:457 +#: gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "يوفر إشارة مرئية على التقدم" @@ -2564,6 +2630,32 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "_بعّد" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: gtk/gtkswitch.c:304 gtk/gtkswitch.c:353 gtk/gtkswitch.c:544 +msgctxt "switch" +msgid "ON" +msgstr "❙" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: gtk/gtkswitch.c:312 gtk/gtkswitch.c:354 gtk/gtkswitch.c:560 +msgctxt "switch" +msgid "OFF" +msgstr "○" + +#: gtk/gtkswitch.c:959 +msgctxt "light switch widget" +msgid "Switch" +msgstr "مفتاح" + +#: gtk/gtkswitch.c:960 +msgid "Switches between on and off states" +msgstr "يبدّل بين حالات الفتح والإغلاق" + #: gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2574,106 +2666,106 @@ msgstr "حدث خطأ مجهول عند محاولة فتح %s" msgid "No deserialize function found for format %s" msgstr "لا وظيفة تفكيك موجودة للنوع %s" -#: gtk/gtktextbufferserialize.c:803 gtk/gtktextbufferserialize.c:829 +#: gtk/gtktextbufferserialize.c:800 gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "كلا \"id\" و \"name\" لم يعثر عليهما في العنصر <%s>" -#: gtk/gtktextbufferserialize.c:813 gtk/gtktextbufferserialize.c:839 +#: gtk/gtktextbufferserialize.c:810 gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "الصفة \"%s\" معادة مرتان في نفس العنصر <%s>" -#: gtk/gtktextbufferserialize.c:855 +#: gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "معرّف العنصر <%s> غير صحيح \"%s\"" -#: gtk/gtktextbufferserialize.c:865 +#: gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "العنصر <%s> ليس له لا صفة \"name\" ولا \"id\"" -#: gtk/gtktextbufferserialize.c:952 +#: gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "الصفة \"%s\" مكررة مرتان في نفس العنصر <%s>" -#: gtk/gtktextbufferserialize.c:970 gtk/gtktextbufferserialize.c:995 +#: gtk/gtktextbufferserialize.c:967 gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "الصفة \"%s\" خاطئة في العنصر <%s> في هذا السياق" -#: gtk/gtktextbufferserialize.c:1034 +#: gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "لم يتم تعريف الشّارة \"%s\"." -#: gtk/gtktextbufferserialize.c:1046 +#: gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "وُجِد وسم مجهول و لا يمكن إنشاؤه." -#: gtk/gtktextbufferserialize.c:1057 +#: gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "الوسم \"%s\" غير موجود في النص و لا يمكن إنشاؤه." -#: gtk/gtktextbufferserialize.c:1156 gtk/gtktextbufferserialize.c:1231 -#: gtk/gtktextbufferserialize.c:1336 gtk/gtktextbufferserialize.c:1410 +#: gtk/gtktextbufferserialize.c:1153 gtk/gtktextbufferserialize.c:1228 +#: gtk/gtktextbufferserialize.c:1333 gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "العنصر <%s> غير مسموح به تحت <%s>" -#: gtk/gtktextbufferserialize.c:1187 +#: gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" قيمة غير سليمة لصفة" -#: gtk/gtktextbufferserialize.c:1195 +#: gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" قيمة غير سليمة لاسم صفة" -#: gtk/gtktextbufferserialize.c:1205 +#: gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "لا يمكن تحويل \"%s\" إلى قيمة من نوع \"%s\" للخاصية \"%s\"" -#: gtk/gtktextbufferserialize.c:1214 +#: gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" قيمة غير سليمة لاسم الصفة \"%s\"" -#: gtk/gtktextbufferserialize.c:1299 +#: gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "الوسم \"%s\" معرف مسبقًا" -#: gtk/gtktextbufferserialize.c:1312 +#: gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "الوسم \"%s\" له خاصية غير صالحة \"%s\"" -#: gtk/gtktextbufferserialize.c:1365 +#: gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "العنصر العلوي في نص يجب أن يكون و ليس <%s>" -#: gtk/gtktextbufferserialize.c:1374 gtk/gtktextbufferserialize.c:1390 +#: gtk/gtktextbufferserialize.c:1371 gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "عنصر <%s> تم تحديده بالفعل" -#: gtk/gtktextbufferserialize.c:1396 +#: gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "العنصر لا يمكن أن يظهر قبل العنصر " -#: gtk/gtktextbufferserialize.c:1796 +#: gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "البيانات المرسلة غير صالحة" -#: gtk/gtktextbufferserialize.c:1874 +#: gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "البيانات المرسلة غير صالحة. القسم الأول ليس GTKTEXTBUFFERCONTENTS-0001" @@ -2718,58 +2810,53 @@ msgstr "_واصل صفري العرض (ZWJ)" msgid "ZWNJ Zero width _non-joiner" msgstr "_فاصل صفري العرض (ZWNJ)" -#: gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "تعذّر إيجاد محرّك السِمة في module_path: \"%s\"" - -#: gtk/gtkuimanager.c:1505 +#: gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "وسم بدء غير متوقّع '%s' عند السطر %Id المحرف %Id" -#: gtk/gtkuimanager.c:1595 +#: gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "بيانات محارف غير متوقّعة عند السطر %Id المحرف %Id" -#: gtk/gtkuimanager.c:2427 +#: gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "فارغ" -#: gtk/gtkvolumebutton.c:83 +#: gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "شدة الصوت" -#: gtk/gtkvolumebutton.c:85 +#: gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "يرفع أو يخفض الصوت" -#: gtk/gtkvolumebutton.c:88 +#: gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "يضبط الصوت" -#: gtk/gtkvolumebutton.c:94 gtk/gtkvolumebutton.c:97 +#: gtk/gtkvolumebutton.c:181 gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "أخفض الصوت" -#: gtk/gtkvolumebutton.c:96 +#: gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "يخفض الصوت" -#: gtk/gtkvolumebutton.c:100 gtk/gtkvolumebutton.c:103 +#: gtk/gtkvolumebutton.c:187 gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "ارفع الصوت" -#: gtk/gtkvolumebutton.c:102 +#: gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "يرفع الصوت" -#: gtk/gtkvolumebutton.c:160 +#: gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "صامت" -#: gtk/gtkvolumebutton.c:164 +#: gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "شدة الصوت القصوى" @@ -2778,7 +2865,7 @@ msgstr "شدة الصوت القصوى" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: gtk/gtkvolumebutton.c:177 +#: gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3629,81 +3716,81 @@ msgstr "فشلت كتابة فهرس المجلدات\n" msgid "Failed to rewrite header\n" msgstr "فشلت إعادة كتابة الترويسة\n" -#: gtk/updateiconcache.c:1463 +#: gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "فشل فتح الملف %s : %s\n" -#: gtk/updateiconcache.c:1471 +#: gtk/updateiconcache.c:1496 gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "فشلت الكتابة في الملف: %s\n" -#: gtk/updateiconcache.c:1507 +#: gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "المخزن المنتج غير صحيح.\n" -#: gtk/updateiconcache.c:1521 +#: gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "تعذّر تغيير اسم %s إلى %s: %s، سيُحذف %s إذن.\n" -#: gtk/updateiconcache.c:1535 +#: gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "تعذّر تغيير اسم %s إلى %s: %s\n" -#: gtk/updateiconcache.c:1545 +#: gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "تعذّر تغيير اسم %s إلى %s: %s.\n" -#: gtk/updateiconcache.c:1572 +#: gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "تم إنشاء ملف الخزن (Cache) بنجاح.\n" -#: gtk/updateiconcache.c:1611 +#: gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "اكتب فوق ملف cache (خزن) موجود، حتى إذا كان محدّثا" -#: gtk/updateiconcache.c:1612 +#: gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "لا تتحقق من وجود index.theme" -#: gtk/updateiconcache.c:1613 +#: gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "لا تضع بيانات الصور في المخزن" -#: gtk/updateiconcache.c:1614 +#: gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "اخرج ملف ترويسة C" -#: gtk/updateiconcache.c:1615 +#: gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "اغلق الخرْج المطنب" -#: gtk/updateiconcache.c:1616 +#: gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "تصحيح مخزن الإيقونات الموجود" -#: gtk/updateiconcache.c:1683 +#: gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "الملفّ غير موجود: %s\n" -#: gtk/updateiconcache.c:1689 +#: gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "مخزن إيقونات غير سليم: %s\n" -#: gtk/updateiconcache.c:1702 +#: gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "لا ملف فهرس للسمة.\n" -#: gtk/updateiconcache.c:1706 +#: gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3767,254 +3854,254 @@ msgstr "فيتنامية (VIQR)" msgid "X Input Method" msgstr "طريقة إدخال س" -#: modules/printbackends/cups/gtkprintbackendcups.c:810 -#: modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: modules/printbackends/cups/gtkprintbackendcups.c:814 +#: modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "اسم المستخدم:" -#: modules/printbackends/cups/gtkprintbackendcups.c:811 -#: modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: modules/printbackends/cups/gtkprintbackendcups.c:815 +#: modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "كلمة السر:" -#: modules/printbackends/cups/gtkprintbackendcups.c:850 -#: modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: modules/printbackends/cups/gtkprintbackendcups.c:854 +#: modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "الاستيثاق مطلوب لطبع المستند '%s' على الطابعة %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:852 +#: modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "الاستيثاق مطلوب لطبع مستند على %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:856 +#: modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "الاستيثاق مطلوب لجلب خصائص المهمة '%s'" -#: modules/printbackends/cups/gtkprintbackendcups.c:858 +#: modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "الاستيثاق مطلوب لجلب خصائص المهمة" -#: modules/printbackends/cups/gtkprintbackendcups.c:862 +#: modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "الاستيثاق مطلوب لجلب خصائص الطابعة %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:864 +#: modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "الاستيثاق مطلوب لجلب خصائص الطابعة" -#: modules/printbackends/cups/gtkprintbackendcups.c:867 +#: modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "الاستيثاق مطلوب لمعرفة طابعة %s المبدئية" -#: modules/printbackends/cups/gtkprintbackendcups.c:870 +#: modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "الاستيثاق مطلوب لمعرفة طابعات %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:875 +#: modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "الاستيثاق مطلوب لجلب الملف من %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:877 +#: modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "الاستيثاق مطلوب على %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "النطاق:" -#: modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "الاستيثاق مطلوب لطبع المستند '%s'" -#: modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "الاستيثاق مطلوب لطبع هذا المستند على الطابعة %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "الاستيثاق مطلوب لطبع هذا المستند" -#: modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "الطابعة '%s' بها نقص في الحبر." -#: modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "نفذ الحبر من الطابعة '%s'." #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "مستوى المُظّهِر منخفض في الطابعة '%s'." #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "نفذت الطابعة '%s' من المُظّهِر." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "الطابعة '%s' بها نقص في واحد من الأقلام على الأقل." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "نفذ حبر واحد من أقلام الطابعة '%s' على الأقل." -#: modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "غطاء الطابعة '%s' مفتوح." -#: modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "باب الطابعة '%s' مفتوح." -#: modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "الطابعة '%s' بها نقص في الورق." -#: modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "نفذ الورق من الطابعة '%s'." -#: modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "الطابعة '%s' غير متصلة حاليا." -#: modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "هناك مشكلة بالطابعة '%s'." #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "إيقاف مؤقت ؛ يجري رفض المهام" #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "يجري رفض المهام" -#: modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "ذو جانبين" -#: modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "نوع الورق" -#: modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "مصدر الورق" -#: modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "لوحة الخرْج" -#: modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "الميز" -#: modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "ترشيح مسبق بغوست‌سكربت" -#: modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "أحادي الجانب" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "حافة طويلة (قياسي)" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "حافة قصيرة (ملفوف)" #. Translators: this is an option of "Paper Source" -#: modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "اختيار تلقائي" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: modules/printbackends/cups/gtkprintbackendcups.c:2803 #: modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: modules/printbackends/cups/gtkprintbackendcups.c:2807 #: modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "مبدئي الطابعة" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "ادمج خطوط غوست‌سكربت فقط" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "حوّل إلى بوستسكربت المستوى ١" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "حوّل إلى بوستسكربت المستوى ٢" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "لا ترشيح مسبق" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "متفرقات" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "عاجِل" -#: modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "عال" -#: modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "متوسط" -#: modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "منخفض" @@ -4022,66 +4109,66 @@ msgstr "منخفض" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "الصفحات بكل ورقة" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "أولوية المهمة" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "معلومات الدفع" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "لا شيء" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "مصنّف" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "سرّي" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "سر" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "معياري" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "سرّي للغاية" -#: modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "غير مصنّف" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "قبل" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "بعد" @@ -4089,14 +4176,14 @@ msgstr "بعد" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "إطبع في" #. 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/cups/gtkprintbackendcups.c:3697 +#: modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "إطبع في الوقت" @@ -4104,7 +4191,7 @@ msgstr "إطبع في الوقت" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "مخصص %sx%s" @@ -4119,28 +4206,28 @@ msgstr "ناتج.%s" msgid "Print to File" msgstr "اطبع إلى ملف" -#: modules/printbackends/file/gtkprintbackendfile.c:578 +#: modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: modules/printbackends/file/gtkprintbackendfile.c:578 +#: modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "PostScript" -#: modules/printbackends/file/gtkprintbackendfile.c:578 +#: modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: modules/printbackends/file/gtkprintbackendfile.c:590 +#: modules/printbackends/file/gtkprintbackendfile.c:640 #: modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "الصفحات لكل _ورقة :" -#: modules/printbackends/file/gtkprintbackendfile.c:649 +#: modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "ملف" -#: modules/printbackends/file/gtkprintbackendfile.c:659 +#: modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "صيغة ال_خرْج" @@ -4207,6 +4294,27 @@ msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "فشل تحميل الصورة '%s': السبب مجهول، ربما يكون ملف الصورة تالفًا" +#~ msgid "X screen to use" +#~ msgstr "شاشة س لتُستخدم" + +#~ msgid "SCREEN" +#~ msgstr "شاشة" + +#~ msgid "Make X calls synchronous" +#~ msgstr "اجعل نداءات س متزامنة" + +#~ msgid "Credits" +#~ msgstr "إشادات" + +#~ msgid "Written by" +#~ msgstr "كتَبَهُ" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "تعذّر العثور على ملف الاحتواء: \"%s\"" + +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "تعذّر إيجاد محرّك السِمة في module_path: \"%s\"" + #~ msgid "Error creating folder '%s': %s" #~ msgstr "خطأ أثناء إنشاء المجلد '%s': %s" @@ -4898,9 +5006,6 @@ msgstr "فشل تحميل الصورة '%s': السبب مجهول، ربما ي #~ msgid "_Folder name:" #~ msgstr "ا_سم المجلّد:" -#~ msgid "C_reate" -#~ msgstr "ان_شئ" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "اسم الملف \"%s\" يحوي رموزا غير مسموح باستخدامها في أسماء الملفات" diff --git a/po/en_GB.po b/po/en_GB.po index 5cc7c22485..0777447afc 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -2,14 +2,14 @@ # Copyright (C) 2004 GTK+'s COPYRIGHT HOLDER # This file is distributed under the same licence as the gtk+ package. # Abigail Brady , Gareth Owen 2004 -# Bruce Cowan , 2009, 2010. +# Bruce Cowan , 2009, 2010, 2011. # Philip Withnall , 2010. msgid "" msgstr "" "Project-Id-Version: gtk+\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-14 14:33+0000\n" -"PO-Revision-Date: 2010-11-14 14:34+0100\n" +"POT-Creation-Date: 2011-01-07 23:20+0000\n" +"PO-Revision-Date: 2011-01-07 23:24+0100\n" "Last-Translator: Bruce Cowan \n" "Language-Team: British English \n" "Language: en_GB\n" @@ -21,58 +21,48 @@ msgstr "" "X-Poedit-Language: English\n" "X-Poedit-Country: UNITED KINGDOM\n" -#: ../gdk/gdk.c:104 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Error parsing option --gdk-debug" -#: ../gdk/gdk.c:124 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Error parsing option --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:152 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Program class as used by the window manager" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:153 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "CLASS" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:155 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Program name as used by the window manager" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:156 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NAME" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:158 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "X display to use" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:159 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "DISPLAY" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:161 -msgid "X screen to use" -msgstr "X screen to use" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:162 -msgid "SCREEN" -msgstr "SCREEN" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:165 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "GDK debugging flags to set" @@ -80,12 +70,12 @@ msgstr "GDK debugging flags to set" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:166 ../gdk/gdk.c:169 ../gtk/gtkmain.c:534 ../gtk/gtkmain.c:537 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "FLAGS" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:168 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "GDK debugging flags to unset" @@ -275,109 +265,108 @@ msgid "Delete" msgstr "Delete" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Don't batch GDI requests" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Don't use the Wintab API for tablet support" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "Same as --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Do use the Wintab API [default]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Size of the palette in 8 bit mode" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "COLOURS" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Starting %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Opening %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Opening %d Item" msgstr[1] "Opening %d Items" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Make X calls synchronous" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Licence" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "The licence of the program" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "C_redits" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Licence" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "Could not show link" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "Homepage" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "About %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "Credits" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "Created by" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "Written by" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Documented by" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "Translated by" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Artwork by" @@ -386,7 +375,7 @@ msgstr "Artwork by" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -396,7 +385,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -406,7 +395,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -416,7 +405,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -426,7 +415,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -436,37 +425,120 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Space" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Backslash" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "Other application..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Failed to look for applications online" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Find applications online" + +#: ../gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "Could not run application" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "Could not find '%s'" + +#: ../gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "Could not find application" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Select an application to open \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "No applications available to open \"%s\"" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Select an application for \"%s\" files" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "No applications available to open \"%s\" files" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" + +#: ../gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "Forget association" + +#: ../gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "Show other applications" + +#: ../gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "_Open" + +#: ../gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "Default Application" + +#: ../gtk/gtkappchooserwidget.c:729 +msgid "Recommended Applications" +msgstr "Recommended Applications" + +#: ../gtk/gtkappchooserwidget.c:743 +msgid "Related Applications" +msgstr "Related Applications" + +#: ../gtk/gtkappchooserwidget.c:756 +msgid "Other Applications" +msgstr "Other Applications" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Invalid type function on line %d: '%s'" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "Duplicate object ID '%s' on line %d (previously on line %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Invalid root element: '%s'" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Unhandled tag: '%s'" @@ -481,7 +553,7 @@ msgstr "Unhandled tag: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:885 msgid "calendar:MY" msgstr "calendar:MY" @@ -489,16 +561,16 @@ 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:916 +#: ../gtk/gtkcalendar.c:923 msgid "calendar:week_start:0" -msgstr "calendar:week_start:0" +msgstr "calendar:week_start:1" #. Translators: This is a text measurement template. #. * Translate it to the widest year text #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1903 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -513,7 +585,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1934 ../gtk/gtkcalendar.c:2623 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -529,7 +601,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1966 ../gtk/gtkcalendar.c:2491 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -545,7 +617,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2256 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -553,7 +625,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Disabled" @@ -562,7 +634,7 @@ msgstr "Disabled" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "Invalid" @@ -571,7 +643,7 @@ msgstr "Invalid" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:674 msgid "New accelerator..." msgstr "New accelerator…" @@ -581,15 +653,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "Pick a Colour" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "Received invalid colour data\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -597,7 +669,7 @@ msgstr "" "Select the colour you want from the outer ring. Select the darkness or " "lightness of that colour using the inner triangle." -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -605,67 +677,67 @@ msgstr "" "Click the eyedropper, then click a colour anywhere on your screen to select " "that colour." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Hue:" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Position on the colour wheel." -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Saturation:" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensity of the colour." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Value:" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Brightness of the colour." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Red:" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Amount of red light in the colour." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Green:" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Amount of green light in the colour." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Blue:" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Amount of blue light in the colour." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "Op_acity:" -#: ../gtk/gtkcolorsel.c:471 ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Transparency of the colour." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "Colour _name:" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -673,15 +745,15 @@ msgstr "" "You can enter an HTML-style hexadecimal colour value, or simply a colour " "name such as 'orange' in this entry." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Palette:" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Colour Wheel" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -691,7 +763,7 @@ msgstr "" "selecting now. You can drag this colour to a palette entry, or select this " "colour as current by dragging it to the other colour swatch alongside." -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -699,7 +771,7 @@ msgstr "" "The colour you've chosen. You can drag this colour to a palette entry to " "save it for use in the future." -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." @@ -707,15 +779,15 @@ msgstr "" "The previously-selected colour, for comparison to the colour you're " "selecting now." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "The colour you've chosen." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1444 msgid "_Save color here" msgstr "_Save colour here" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1652 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -739,7 +811,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3242 msgid "Manage Custom Sizes" msgstr "Manage Custom Sizes" @@ -792,66 +864,66 @@ msgstr "_Right:" msgid "Paper Margins" msgstr "Paper Margins" -#: ../gtk/gtkentry.c:8652 ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8806 ../gtk/gtktextview.c:8222 msgid "Input _Methods" msgstr "Input _Methods" -#: ../gtk/gtkentry.c:8666 ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8820 ../gtk/gtktextview.c:8236 msgid "_Insert Unicode Control Character" msgstr "_Insert Unicode Control Character" -#: ../gtk/gtkentry.c:10066 +#: ../gtk/gtkentry.c:10224 msgid "Caps Lock and Num Lock are on" msgstr "Caps Lock and Num Lock are on" -#: ../gtk/gtkentry.c:10068 +#: ../gtk/gtkentry.c:10226 msgid "Num Lock is on" msgstr "Num Lock is on" -#: ../gtk/gtkentry.c:10070 +#: ../gtk/gtkentry.c:10228 msgid "Caps Lock is on" msgstr "Caps Lock is on" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Select A File" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Desktop" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(None)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Other…" -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Type name of new folder" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "Could not retrieve information about the file" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "Could not add a bookmark" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "Could not remove bookmark" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "The folder could not be created" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -859,7 +931,7 @@ msgstr "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." @@ -867,11 +939,11 @@ msgstr "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "Invalid file name" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "The folder contents could not be displayed" @@ -879,201 +951,201 @@ msgstr "The folder contents could not be displayed" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s on %2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Search" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9383 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Recently Used" -#: ../gtk/gtkfilechooserdefault.c:2430 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Select which types of files are shown" -#: ../gtk/gtkfilechooserdefault.c:2789 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Add the folder '%s' to the bookmarks" -#: ../gtk/gtkfilechooserdefault.c:2833 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Add the current folder to the bookmarks" -#: ../gtk/gtkfilechooserdefault.c:2835 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Add the selected folders to the bookmarks" -#: ../gtk/gtkfilechooserdefault.c:2873 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Remove the bookmark '%s'" -#: ../gtk/gtkfilechooserdefault.c:2875 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "Bookmark '%s' cannot be removed" -#: ../gtk/gtkfilechooserdefault.c:2882 ../gtk/gtkfilechooserdefault.c:3747 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Remove the selected bookmark" -#: ../gtk/gtkfilechooserdefault.c:3442 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Remove" -#: ../gtk/gtkfilechooserdefault.c:3451 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Rename…" #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3614 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Places" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3671 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Places" -#: ../gtk/gtkfilechooserdefault.c:3728 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_Add" -#: ../gtk/gtkfilechooserdefault.c:3735 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Add the selected folder to the Bookmarks" -#: ../gtk/gtkfilechooserdefault.c:3740 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_Remove" -#: ../gtk/gtkfilechooserdefault.c:3882 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "Could not select file" -#: ../gtk/gtkfilechooserdefault.c:4057 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "_Add to Bookmarks" -#: ../gtk/gtkfilechooserdefault.c:4070 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "Show _Hidden Files" -#: ../gtk/gtkfilechooserdefault.c:4077 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Show _Size Column" -#: ../gtk/gtkfilechooserdefault.c:4303 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Files" -#: ../gtk/gtkfilechooserdefault.c:4354 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Name" -#: ../gtk/gtkfilechooserdefault.c:4377 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Size" -#: ../gtk/gtkfilechooserdefault.c:4391 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Modified" #. Label -#: ../gtk/gtkfilechooserdefault.c:4646 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Name:" -#: ../gtk/gtkfilechooserdefault.c:4689 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Browse for other folders" -#: ../gtk/gtkfilechooserdefault.c:4959 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Type a file name" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5002 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Create Fo_lder" -#: ../gtk/gtkfilechooserdefault.c:5012 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_Location:" -#: ../gtk/gtkfilechooserdefault.c:5216 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "Save in _folder:" -#: ../gtk/gtkfilechooserdefault.c:5218 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Create in _folder:" -#: ../gtk/gtkfilechooserdefault.c:6287 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "Could not read the contents of %s" -#: ../gtk/gtkfilechooserdefault.c:6291 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "Could not read the contents of the folder" -#: ../gtk/gtkfilechooserdefault.c:6384 ../gtk/gtkfilechooserdefault.c:6452 -#: ../gtk/gtkfilechooserdefault.c:6597 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Unknown" -#: ../gtk/gtkfilechooserdefault.c:6399 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6401 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "Yesterday at %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7067 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "Cannot change to folder because it is not local" -#: ../gtk/gtkfilechooserdefault.c:7664 ../gtk/gtkfilechooserdefault.c:7685 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "Shortcut %s already exists" -#: ../gtk/gtkfilechooserdefault.c:7775 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "Shortcut %s does not exist" -#: ../gtk/gtkfilechooserdefault.c:8036 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:481 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "A file named \"%s\" already exists. Do you want to replace it?" -#: ../gtk/gtkfilechooserdefault.c:8039 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:485 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" "The file already exists in \"%s\". Replacing it will overwrite its contents." -#: ../gtk/gtkfilechooserdefault.c:8044 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:492 msgid "_Replace" msgstr "_Replace" -#: ../gtk/gtkfilechooserdefault.c:8752 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Could not start the search process" -#: ../gtk/gtkfilechooserdefault.c:8753 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1081,36 +1153,36 @@ msgstr "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." -#: ../gtk/gtkfilechooserdefault.c:8767 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Could not send the search request" -#: ../gtk/gtkfilechooserdefault.c:8955 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Search:" -#: ../gtk/gtkfilechooserdefault.c:9560 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Could not mount %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Invalid path" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "No match" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Sole completion" @@ -1118,13 +1190,13 @@ msgstr "Sole completion" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Complete, but not unique" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Completing…" @@ -1132,7 +1204,7 @@ msgstr "Completing…" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Only local files may be selected" @@ -1140,14 +1212,14 @@ msgstr "Only local files may be selected" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "Incomplete hostname; end it with '/'" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "Path does not exist" @@ -1175,40 +1247,40 @@ msgstr "Font" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:367 msgid "_Family:" msgstr "_Family:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:373 msgid "_Style:" msgstr "_Style:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:379 msgid "Si_ze:" msgstr "Si_ze:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:555 msgid "_Preview:" msgstr "_Preview:" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1655 msgid "Font Selection" msgstr "Font Selection" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Error loading icon: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1221,12 +1293,12 @@ msgstr "" "You can get a copy from:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "Icon '%s' not present in theme" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Failed to load icon" @@ -1251,45 +1323,45 @@ msgid "System (%s)" msgstr "System (%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Open Link" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Copy _Link Address" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Copy URL" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "Invalid URI" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Load additional GTK+ modules" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:528 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MODULES" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:530 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Make all warnings fatal" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:533 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "GTK+ debugging flags to set" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:536 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "GTK+ debugging flags to unset" @@ -1298,20 +1370,20 @@ msgstr "GTK+ debugging flags to unset" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:799 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:864 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Cannot open display: %s" -#: ../gtk/gtkmain.c:923 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "GTK+ Options" -#: ../gtk/gtkmain.c:923 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Show GTK+ Options" @@ -1395,7 +1467,7 @@ msgstr "Z Shell" msgid "Cannot end process with PID %d: %s" msgstr "Cannot end process with PID %d: %s" -#: ../gtk/gtknotebook.c:4756 ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "Page %u" @@ -1428,7 +1500,7 @@ msgstr "" " Top: %s %s\n" " Bottom: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3293 msgid "Manage Custom Sizes..." msgstr "Manage Custom Sizes…" @@ -1436,7 +1508,7 @@ msgstr "Manage Custom Sizes…" msgid "_Format for:" msgstr "_Format for:" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3465 msgid "_Paper size:" msgstr "_Paper size:" @@ -1444,19 +1516,19 @@ msgstr "_Paper size:" msgid "_Orientation:" msgstr "_Orientation:" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3527 msgid "Page Setup" msgstr "Page Setup" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Up Path" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Down Path" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "File System Root" @@ -1480,84 +1552,84 @@ msgstr "_Save in folder:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s job #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Initial state" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "Preparing to print" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Generating data" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Sending data" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "Waiting" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Blocking on issue" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Printing" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Finished" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Finished with error" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "Preparing %d" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Preparing" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "Printing %d" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Error creating print preview" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "" "The most probable reason is that a temporary file could not be created." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Error launching preview" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Application" @@ -1571,7 +1643,7 @@ msgstr "Out of paper" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Paused" @@ -1616,49 +1688,49 @@ msgstr "Invalid handle to PrintDlgEx" msgid "Unspecified error" msgstr "Unspecified error" -#: ../gtk/gtkprintunixdialog.c:618 +#: ../gtk/gtkprintunixdialog.c:619 msgid "Getting printer information failed" msgstr "Getting printer information failed" -#: ../gtk/gtkprintunixdialog.c:1873 +#: ../gtk/gtkprintunixdialog.c:1874 msgid "Getting printer information..." msgstr "Getting printer information…" -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2141 msgid "Printer" msgstr "Printer" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2151 msgid "Location" msgstr "Location" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2162 msgid "Status" msgstr "Status" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2188 msgid "Range" msgstr "Range" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2192 msgid "_All Pages" msgstr "_All Pages" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2199 msgid "C_urrent Page" msgstr "C_urrent Page" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2209 msgid "Se_lection" msgstr "Se_lection" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "Pag_es:" msgstr "Pag_es:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2219 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1666,28 +1738,28 @@ msgstr "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2229 msgid "Pages" msgstr "Pages" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2242 msgid "Copies" msgstr "Copies" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2247 msgid "Copie_s:" msgstr "Copie_s:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2265 msgid "C_ollate" msgstr "C_ollate" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2273 msgid "_Reverse" msgstr "_Reverse" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2293 msgid "General" msgstr "General" @@ -1697,168 +1769,168 @@ msgstr "General" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "Left to right, top to bottom" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "Left to right, bottom to top" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "Right to left, top to bottom" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "Right to left, bottom to top" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "Top to bottom, left to right" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "Top to bottom, right to left" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "Bottom to top, left to right" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "Bottom to top, right to left" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3033 ../gtk/gtkprintunixdialog.c:3046 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Page Ordering" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Left to right" msgstr "Left to right" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3063 msgid "Right to left" msgstr "Right to left" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Top to bottom" msgstr "Top to bottom" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Bottom to top" msgstr "Bottom to top" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3316 msgid "Layout" msgstr "Layout" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3320 msgid "T_wo-sided:" msgstr "T_wo-sided:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3335 msgid "Pages per _side:" msgstr "Pages per _side:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3352 msgid "Page or_dering:" msgstr "Page or_dering:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3368 msgid "_Only print:" msgstr "_Only print:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3383 msgid "All sheets" msgstr "All sheets" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Even sheets" msgstr "Even sheets" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3385 msgid "Odd sheets" msgstr "Odd sheets" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3388 msgid "Sc_ale:" msgstr "Sc_ale:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3415 msgid "Paper" msgstr "Paper" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3419 msgid "Paper _type:" msgstr "Paper _type:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3434 msgid "Paper _source:" msgstr "Paper _source:" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3449 msgid "Output t_ray:" msgstr "Output t_ray:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3489 msgid "Or_ientation:" msgstr "Or_ientation:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Portrait" msgstr "Portrait" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Landscape" msgstr "Landscape" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse portrait" msgstr "Reverse portrait" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3507 msgid "Reverse landscape" msgstr "Reverse landscape" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3552 msgid "Job Details" msgstr "Job Details" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3558 msgid "Pri_ority:" msgstr "Pri_ority:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3573 msgid "_Billing info:" msgstr "_Billing info:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3591 msgid "Print Document" msgstr "Print Document" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3600 msgid "_Now" msgstr "_Now" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3611 msgid "A_t:" msgstr "A_t:" @@ -1866,7 +1938,7 @@ msgstr "A_t:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3617 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1874,77 +1946,72 @@ msgstr "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3627 msgid "Time of print" msgstr "Time of print" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "On _hold" msgstr "On _hold" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3644 msgid "Hold the job until it is explicitly released" msgstr "Hold the job until it is explicitly released" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3664 msgid "Add Cover Page" msgstr "Add Cover Page" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3673 msgid "Be_fore:" msgstr "Be_fore:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3691 msgid "_After:" msgstr "_After:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3709 msgid "Job" msgstr "Job" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3775 msgid "Advanced" msgstr "Advanced" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3813 msgid "Image Quality" msgstr "Image Quality" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3817 msgid "Color" msgstr "Colour" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3822 msgid "Finishing" msgstr "Finishing" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3832 msgid "Some of the settings in the dialog conflict" msgstr "Some of the settings in the dialogue conflict" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3855 msgid "Print" msgstr "Print" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Unable to find include file: \"%s\"" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Unable to locate image file in pixmap_path: \"%s\"" @@ -1959,36 +2026,36 @@ msgstr "This function is not implemented for widgets of class '%s'" msgid "Select which type of documents are shown" msgstr "Select which type of documents are shown" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "No item for URI '%s' found" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Untitled filter" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "Could not remove item" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "Could not clear list" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "Copy _Location" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "_Remove From List" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_Clear List" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Show _Private Resources" @@ -2053,12 +2120,12 @@ msgstr "Unable to find an item with URI '%s'" msgid "No registered application with name '%s' for item with URI '%s' found" msgstr "No registered application with name '%s' for item with URI '%s' found" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Spinner" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Provides visual indication of progress" @@ -2566,6 +2633,32 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "Zoom _Out" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:304 ../gtk/gtkswitch.c:353 ../gtk/gtkswitch.c:544 +msgctxt "switch" +msgid "ON" +msgstr "ON" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:312 ../gtk/gtkswitch.c:354 ../gtk/gtkswitch.c:560 +msgctxt "switch" +msgid "OFF" +msgstr "OFF" + +#: ../gtk/gtkswitch.c:959 +msgctxt "light switch widget" +msgid "Switch" +msgstr "Switch" + +#: ../gtk/gtkswitch.c:960 +msgid "Switches between on and off states" +msgstr "Switches between on and off states" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2576,107 +2669,107 @@ msgstr "Unknown error when trying to deserialise %s" msgid "No deserialize function found for format %s" msgstr "No deserialise function found for format %s" -#: ../gtk/gtktextbufferserialize.c:803 ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Both \"id\" and \"name\" were found on the <%s> element" -#: ../gtk/gtktextbufferserialize.c:813 ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "The attribute \"%s\" was found twice on the <%s> element" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "<%s> element has invalid ID \"%s\"" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s> element has neither a \"name\" nor an \"id\" attribute" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Attribute \"%s\" repeated twice on the same <%s> element" -#: ../gtk/gtktextbufferserialize.c:970 ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Attribute \"%s\" is invalid on <%s> element in this context" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Tag \"%s\" has not been defined." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Anonymous tag found and tags can not be created." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "Tag \"%s\" does not exist in buffer and tags can not be created." -#: ../gtk/gtktextbufferserialize.c:1156 ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Element <%s> is not allowed below <%s>" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" is not a valid attribute type" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" is not a valid attribute name" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" is not a valid value for attribute \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "Tag \"%s\" already defined" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Tag \"%s\" has invalid priority \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Outermost element in text must be not <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "A <%s> element has already been specified" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "A element can't occur before a element" -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Serialised data is malformed" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" @@ -2722,58 +2815,53 @@ msgstr "ZWJ Zero width _joiner" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ Zero width _non-joiner" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Unable to locate theme engine in module_path: \"%s\"," - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Unexpected start tag '%s' on line %d char %d" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Unexpected character data on line %d char %d" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Empty" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Volume" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Turns volume down or up" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Adjusts the volume" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Volume Down" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Decreases the volume" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Volume Up" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Increases the volume" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Muted" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Full Volume" @@ -2782,7 +2870,7 @@ msgstr "Full Volume" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3633,81 +3721,81 @@ msgstr "Failed to write folder index\n" msgid "Failed to rewrite header\n" msgstr "Failed to rewrite header\n" -#: ../gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Failed to open file %s : %s\n" -#: ../gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Failed to write cache file: %s\n" -#: ../gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "The generated cache was invalid.\n" -#: ../gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "Could not rename %s to %s: %s, removing %s then.\n" -#: ../gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "Could not rename %s to %s: %s\n" -#: ../gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "Could not rename %s back to %s: %s.\n" -#: ../gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Cache file created successfully.\n" -#: ../gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Overwrite an existing cache, even if up to date" -#: ../gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Don't check for the existence of index.theme" -#: ../gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Don't include image data in the cache" -#: ../gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Output a C header file" -#: ../gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Turn off verbose output" -#: ../gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Validate existing icon cache" -#: ../gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "File not found: %s\n" -#: ../gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Not a valid icon cache: %s\n" -#: ../gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "No theme index file.\n" -#: ../gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3771,254 +3859,254 @@ msgstr "Vietnamese (VIQR)" msgid "X Input Method" msgstr "X Input Method" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "Username:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "Password:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "Authentication is required to print document '%s' on printer %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Authentication is required to print a document on %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "Authentication is required to get attributes of job '%s'" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "Authentication is required to get attributes of a job" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "Authentication is required to get attributes of printer %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "Authentication is required to get attributes of a printer" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "Authentication is required to get default printer of %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Authentication is required to get printers from %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "Authentication is required to get a file from %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "Authentication is required on %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "Domain:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Authentication is required to print document '%s'" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "Authentication is required to print this document on printer %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "Authentication is required to print this document" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "Printer '%s' is low on toner." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "Printer '%s' has no toner left." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "Printer '%s' is low on developer." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "Printer '%s' is out of developer." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "Printer '%s' is low on at least one marker supply." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "Printer '%s' is out of at least one marker supply." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "The cover is open on printer '%s'." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "The door is open on printer '%s'." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "Printer '%s' is low on paper." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "Printer '%s' is out of paper." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "Printer '%s' is currently offline." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "There is a problem on printer '%s'." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "Paused ; Rejecting Jobs" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "Rejecting Jobs" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "Paper Type" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "Output Tray" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "GhostScript pre-filtering" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "One Sided" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "Long Edge (Standard)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "Short Edge (Flip)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "Auto Select" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "Printer Default" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "Embed GhostScript fonts only" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "Convert to PS level 1" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "Convert to PS level 2" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "No pre-filtering" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "Miscellaneous" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "Urgent" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "High" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "Medium" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "Low" @@ -4026,66 +4114,66 @@ msgstr "Low" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "Pages per Sheet" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "Job Priority" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "Billing Info" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "None" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "Classified" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "Confidential" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "Secret" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "Standard" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "Top Secret" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "Unclassified" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "Before" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "After" @@ -4093,14 +4181,14 @@ msgstr "After" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "Print at" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "Print at time" @@ -4108,7 +4196,7 @@ msgstr "Print at time" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "Custom %sx%s" @@ -4123,28 +4211,28 @@ msgstr "output.%s" msgid "Print to File" msgstr "Print to File" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Pages per _sheet:" -#: ../modules/printbackends/file/gtkprintbackendfile.c:649 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "File" -#: ../modules/printbackends/file/gtkprintbackendfile.c:659 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "_Output format" @@ -4212,6 +4300,27 @@ msgid "" msgstr "" "Failed to load image '%s': reason not known, probably a corrupt image file" +#~ msgid "X screen to use" +#~ msgstr "X screen to use" + +#~ msgid "SCREEN" +#~ msgstr "SCREEN" + +#~ msgid "Make X calls synchronous" +#~ msgstr "Make X calls synchronous" + +#~ msgid "Credits" +#~ msgstr "Credits" + +#~ msgid "Written by" +#~ msgstr "Written by" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Unable to find include file: \"%s\"" + +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "Unable to locate theme engine in module_path: \"%s\"," + #~ msgid "Error creating folder '%s': %s" #~ msgstr "Error creating folder '%s': %s" @@ -4912,9 +5021,6 @@ msgstr "" #~ msgid "_Folder name:" #~ msgstr "_Folder name:" -#~ msgid "C_reate" -#~ msgstr "C_reate" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "" diff --git a/po/es.po b/po/es.po index 1934a51173..a0c37e1e1c 100644 --- a/po/es.po +++ b/po/es.po @@ -9,16 +9,17 @@ # Pablo Gonzalo del Campo , 2002, 2003. # Juan Manuel García Molina , 2003. # Francisco Javier F. Serrador , 2003 - 2006. -# Jorge González , 2007, 2008, 2009, 2010. +# Jorge González , 2007, 2008, 2009, 2010, 2011. +# Daniel Mustieles , 2011. # msgid "" msgstr "" "Project-Id-Version: gtk+.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk" "%2b&component=general\n" -"POT-Creation-Date: 2010-11-29 20:28+0000\n" -"PO-Revision-Date: 2010-12-02 19:10+0100\n" -"Last-Translator: Jorge González \n" +"POT-Creation-Date: 2011-01-16 08:26+0000\n" +"PO-Revision-Date: 2011-01-16 19:29+0100\n" +"Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,58 +28,48 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gdk/gdk.c:115 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Error al analizar la opción --gdk-debug" -#: ../gdk/gdk.c:135 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Error al analizar la opción --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:163 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Clase del programa tal como la usa el gestor de ventanas" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "CLASE" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:166 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Nombre del programa tal como lo usa el gestor de ventanas" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NOMBRE" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:169 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "Visor [display] X que usar" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:170 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "VISOR" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:172 -msgid "X screen to use" -msgstr "Pantalla [screen] X que usar" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:173 -msgid "SCREEN" -msgstr "PANTALLA" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:176 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "Opciones de depuración GTK+ que establecer" @@ -86,12 +77,12 @@ msgstr "Opciones de depuración GTK+ que establecer" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:177 ../gdk/gdk.c:180 ../gtk/gtkmain.c:525 ../gtk/gtkmain.c:528 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "OPCIONES" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:179 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "Opciones de depuración GTK+ que quitar" @@ -281,110 +272,108 @@ msgid "Delete" msgstr "Supr" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "No poner en lotes las solicitudes GDI" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "No usar el API Wintab para el soporte de tablas digitalizadoras" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "Lo mismo que --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "No usar el API Wintab [predeterminado]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Tamaño de la paleta en modo 8 bits" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "COLORES" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:305 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Iniciando %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:318 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Abriendo %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:323 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Aberiendo %d elemento" msgstr[1] "Abriendo %d elementos" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Hacer llamadas a X síncronas" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" -"Este programa viene SIN NINGUNA GARANTÍA; para obtener más detalles visite %s" +"Este programa viene SIN NINGUNA GARANTÍA; para obtener más detalles visite " +"%s" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Licencia" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "La licencia del programa" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "C_réditos" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Licencia" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "No se pudo mostrar el enlace" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "Página web" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "Acerca de %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "Créditos" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "Creado por" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "Escrito por" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Documentado por" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "Traducido por" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Arte por" @@ -393,7 +382,7 @@ msgstr "Arte por" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Mayús" @@ -403,7 +392,7 @@ msgstr "Mayús" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -413,7 +402,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -423,7 +412,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -433,7 +422,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -443,38 +432,121 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Espacio" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Contrabarra" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "Otra aplicación…" + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Falló al buscar aplicaciones en línea" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Buscar aplicaciones en línea" + +#: ../gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "No se pudo ejecutar la aplicación" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "No se pudo encontrar «%s»" + +#: ../gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "No se pudo encontrar la aplicación" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Seleccionar una aplicación para abrir «%s»" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "No existen aplicaciones disponibles para abrir «%s»" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Seleccionar una aplicación para archivos de «%s»" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "No existen aplicaciones disponibles para abrir archivos de «%s»" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"Para más opciones, pulsar «Mostrar otras aplicaciones» o para instalar una " +"nueva aplicación, pulsar «Buscar aplicaciones en línea»" + +#: ../gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "Olvidar asociación" + +#: ../gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "Mostrar otras aplicaciones" + +#: ../gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "_Abrir" + +#: ../gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "Aplicación predeterminada" + +#: ../gtk/gtkappchooserwidget.c:730 +msgid "Recommended Applications" +msgstr "Aplicaciones recomendadas" + +#: ../gtk/gtkappchooserwidget.c:744 +msgid "Related Applications" +msgstr "Aplicaciones relacionadas" + +#: ../gtk/gtkappchooserwidget.c:758 +msgid "Other Applications" +msgstr "Otras aplicaciones" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Tipo de función no válido en la línea %d: «%s»" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "" "ID «%s» de objeto duplicado en la línea %d (anteriormente en la línea %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Nombre de elemento raíz no válido: «%s»" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Etiqueta no soportada: «%s»" @@ -489,7 +561,7 @@ msgstr "Etiqueta no soportada: «%s»" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:MY" @@ -497,7 +569,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:916 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -506,7 +578,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -521,7 +593,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -537,7 +609,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -553,7 +625,7 @@ msgstr "%Id" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -561,7 +633,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Desactivado" @@ -570,7 +642,7 @@ msgstr "Desactivado" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "No válido" @@ -579,7 +651,7 @@ msgstr "No válido" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:730 msgid "New accelerator..." msgstr "Acelerador nuevo…" @@ -589,15 +661,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "Escoja un color" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "Se recibió un dato de color no válido\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -605,7 +677,7 @@ msgstr "" "Seleccionar el color que desea desde el anillo exterior. Seleccionar la " "oscuridad o luminosidad de ese color usando el triángulo interior." -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -613,67 +685,67 @@ msgstr "" "Pulse en el gotero, luego pulse sobre cualquier color que haya en su " "pantalla para seleccionar ese color." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Matiz:" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Posición en la rueda de colores." -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Saturación:" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensidad del color." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Valor:" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Brillo del color." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Rojo:" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Cantidad de luz roja en el color." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Verde:" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Cantidad de luz verde en el color." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Azul:" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Cantidad de luz azul en el color." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "_Opacidad:" -#: ../gtk/gtkcolorsel.c:471 ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Transparencia del color." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "_Nombre del color:" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -681,15 +753,15 @@ msgstr "" "Puede introducir en esta entrada un valor de color en estilo HTML " "hexadecimal, o simplemente un nombre de color como «orange»." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Paleta:" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Rueda de color" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -700,7 +772,7 @@ msgstr "" "seleccionar este color como actual arrastrándolo al otro color a lo largo de " "la muestra." -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -708,7 +780,7 @@ msgstr "" "El color elegido. Puede arrastrar este color a una entrada de la paleta para " "guardarlo para usarlo en el futuro." -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." @@ -716,15 +788,15 @@ msgstr "" "El color anteriormente seleccionado, para compararlo con el color que está " "seleccionando ahora" -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "El color que ha elegido." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "_Guardar color aquí" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -748,7 +820,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "Gestionar tamaños personalizados" @@ -801,67 +873,67 @@ msgstr "_Derecho:" msgid "Paper Margins" msgstr "Márgenes del papel" -#: ../gtk/gtkentry.c:8794 ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8755 ../gtk/gtktextview.c:8228 msgid "Input _Methods" msgstr "_Métodos de entrada" -#: ../gtk/gtkentry.c:8808 ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8769 ../gtk/gtktextview.c:8242 msgid "_Insert Unicode Control Character" msgstr "_Insertar un carácter de control Unicode" -#: ../gtk/gtkentry.c:10208 +#: ../gtk/gtkentry.c:10173 msgid "Caps Lock and Num Lock are on" msgstr "Bloq Mayús y Bloq Num están activados" -#: ../gtk/gtkentry.c:10210 +#: ../gtk/gtkentry.c:10175 msgid "Num Lock is on" msgstr "Bloq Num está activado" -#: ../gtk/gtkentry.c:10212 +#: ../gtk/gtkentry.c:10177 msgid "Caps Lock is on" msgstr "Bloq Mayús está activado" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Seleccionar un archivo" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Escritorio" # src/file-manager/fm-icon-text-window.c:85 -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(Ninguno)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Otra…" -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Teclee el nombre de la carpeta nueva" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "No se pudo obtener la información acerca del archivo" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "No se pudo añadir un marcador" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "No se pudo quitar el marcador" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "No se pudo crear la carpeta" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -869,7 +941,7 @@ msgstr "" "No se pudo crear la carpeta, debido a que ya existe un archivo con el mismo " "nombre. Intenta usar un nombre distinto o renombre el archivo primero." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." @@ -877,11 +949,11 @@ msgstr "" "Sólo puede seleccionar carpetas. El elemento que ha seleccionado no es una " "carpeta; intentélo seleccionar un elemento diferente." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "Nombre de archivo no válido" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "No se pudo mostrar el contenido de la carpeta" @@ -889,203 +961,203 @@ msgstr "No se pudo mostrar el contenido de la carpeta" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s en %2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Buscar" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Usados recientemente" -#: ../gtk/gtkfilechooserdefault.c:2437 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Seleccionar qué tipos de archivos se muestran" -#: ../gtk/gtkfilechooserdefault.c:2796 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Añadir la carpeta «%s» a los marcadores" -#: ../gtk/gtkfilechooserdefault.c:2840 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Añadir la carpeta actual a los marcadores" -#: ../gtk/gtkfilechooserdefault.c:2842 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Añadir las carpetas seleccionadas a los marcadores" -#: ../gtk/gtkfilechooserdefault.c:2880 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Quitar el marcador «%s»" -#: ../gtk/gtkfilechooserdefault.c:2882 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "No se puede quitar el marcador «%s»" -#: ../gtk/gtkfilechooserdefault.c:2889 ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Quitar el marcador seleccionado" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Quitar" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Renombrar…" #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Lugares" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Lugares" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_Añadir" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Añade la carpeta seleccionada a los marcadores" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_Quitar" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "No se pudo seleccionar el archivo" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "_Añadir a los marcadores" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "Mostrar archivos _ocultos" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Mostrar columna de _tamaño" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Archivos" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Nombre" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Tamaño" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Modificado" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Nombre:" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Buscar otras carpetas" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Teclee un nombre de archivo" # C en conflicto con Cancelar #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Crear car_peta" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_Lugar:" # El acelerador c entra en conflicto con cancelar -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "_Guardar en la carpeta:" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Crear en la _carpeta:" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "No se pudo leer el contenido de %s" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "No se pudo leer el contenido del la carpeta" -#: ../gtk/gtkfilechooserdefault.c:6387 ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Desconocido" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "Ayer a las %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "No se pudo cambiar a la carpeta porque no es local" -#: ../gtk/gtkfilechooserdefault.c:7667 ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "La combinación %s ya existe" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "La combinación %s no existe" -#: ../gtk/gtkfilechooserdefault.c:8039 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "Ya existe un archivo llamado «%s». ¿Quiere reemplazarlo?" -#: ../gtk/gtkfilechooserdefault.c:8042 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" "El archivo ya existe en «%s». Si lo reemplaza sobreescribirá su contenido." -#: ../gtk/gtkfilechooserdefault.c:8047 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_Reemplazar" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "No se ha podido iniciar el proceso de búsqueda" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1093,36 +1165,36 @@ msgstr "" "El programa no fue capaz de crear una conexión con el demonio indexador. Por " "favor asegúrese de que se está ejecutando." -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "No se ha podido enviar la petición de búsqueda" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Buscar:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "No se pudo montar %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Ruta no válida" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "No hay coincidencias" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Completado único" @@ -1130,13 +1202,13 @@ msgstr "Completado único" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Completado, pero no único" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Completando…" @@ -1144,7 +1216,7 @@ msgstr "Completando…" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Sólo se pueden seleccionar archivos locales" @@ -1152,14 +1224,14 @@ msgstr "Sólo se pueden seleccionar archivos locales" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "Nombre de equipo incompleto; termínelo con «/»" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "La ruta no existe" @@ -1187,42 +1259,42 @@ msgstr "Tipografía" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "" "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el " "saxofón detrás del palenque de paja." -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "_Familia:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "_Estilo:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "_Tamaño:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_Vista previa:" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "Selección de tipografías" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Ocurrió un error al cargar el icono: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1235,12 +1307,12 @@ msgstr "" "Puede obtener una copia desde:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "El icono «%s» no está presente en el tema" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "No se pudo cargar el icono" @@ -1266,45 +1338,45 @@ msgid "System (%s)" msgstr "Sistema (%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Abrir enlace" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Copiar la dirección del _enlace" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Copiar URL" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "URI inválida" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:518 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Cargar módulos adicionales GTK+" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MÓDULOS" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:521 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Hacer todas las advertencias fatales" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:524 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "Opciones de depuración GTK+ a poner" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "Opciones de depuración GTK+ a quitar" @@ -1313,20 +1385,20 @@ msgstr "Opciones de depuración GTK+ a quitar" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:790 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:855 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "No se puede abrir el visor: %s" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "Opciones GTK+" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Mostrar opciones GTK+" @@ -1411,13 +1483,24 @@ msgstr "Shell Z" msgid "Cannot end process with PID %d: %s" msgstr "No se puede finalizar el proceso con PID %d: %s" -#: ../gtk/gtknotebook.c:4756 ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "Página %u" -#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 +#. Translators: the format here is used to build the string that will be rendered +#. * in the number emblem. +#. +#: ../gtk/gtknumerableicon.c:481 +#, c-format +#| msgctxt "calendar:day:digits" +#| msgid "%d" +msgctxt "Number format" +msgid "%d" +msgstr "%d" + +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:847 +#: ../gtk/gtkpapersize.c:889 msgid "Not a valid page setup file" msgstr "No es un archivo válido de configuración de página" @@ -1444,7 +1527,7 @@ msgstr "" " Superior: %s %s\n" " Inferior: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "Gestión de tamaños personalizados…" @@ -1452,7 +1535,7 @@ msgstr "Gestión de tamaños personalizados…" msgid "_Format for:" msgstr "_Formato para:" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "Tamaño del _papel:" @@ -1460,19 +1543,19 @@ msgstr "Tamaño del _papel:" msgid "_Orientation:" msgstr "_Orientación:" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "Configuración de página" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Ruta superior" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Ruta inferior" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "Sistema de archivos raíz" @@ -1496,83 +1579,83 @@ msgstr "_Guardar en la carpeta:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s tarea #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Estado inicial" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "Preparándose para imprimir" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Generando datos" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Enviando datos" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "Esperando" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Bloqueado en una hoja" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Imprimiendo" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Terminando" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Terminado con error" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "Preparando %d" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Preparando" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "Imprimiendo %d" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Error al crear la vista previa de impresión" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "La razón más probable es que no se pudiera crear un archivo temporal." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Error al lanzar la vista previa" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Aplicación" @@ -1586,7 +1669,7 @@ msgstr "Papel agotado" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Pausada" @@ -1639,41 +1722,41 @@ msgstr "Falló la obtención de la información de la impresora" msgid "Getting printer information..." msgstr "Obteniendo la información de la impresora…" -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "Impresora" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "Lugar" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "Estado" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "Rango" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "_Todas las páginas" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "Página a_ctual" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "Se_lección" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "Págin_as:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1681,28 +1764,28 @@ msgstr "" "Especifique uno o más rangos de páginas,\n" "ej. 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "Páginas" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "Copias" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "_Copias:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "_Intercalar" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "In_vertir" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "General" @@ -1712,168 +1795,168 @@ msgstr "General" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "De izquierda a derecha, de arriba a abajo" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "De izquierda a derecha, de abajo a arriba" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "De derecha a izquierda, de arriba a abajo" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "De derecha a izquierda, de abajo a arriba" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "De arriba a abajo, de izquierda a derecha" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "De arriba a abajo, de derecha a izquierda" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "De abajo a arriba, de izquierda a derecha" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "De abajo a arriba, de derecha a izquierda" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Orden de las hojas" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "Izquierda a derecha" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "Derecha a izquierda" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "De arriba a abajo" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "De abajo a arriba" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "Disposición" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "Por las _dos caras:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "Páginas por _hoja:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "Or_den de páginas:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "_Sólo imprimir:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "Todas las hojas" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "Hojas pares" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "Hojas impares" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "_Escala:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "Papel" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "_Tipo de papel:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "_Fuente del papel:" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "_Bandeja de salida:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "Or_ientación:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "Retrato" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "Paisaje" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "Retrato invertido" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "Paisaje invertido" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "Detalles de la tarea" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "_Prioridad:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "Info de _facturación:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "Imprimir documento" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "_Ahora" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_En:" @@ -1881,7 +1964,7 @@ msgstr "_En:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1889,77 +1972,72 @@ msgstr "" "Especifique la hora de impresión,\n" "ej. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "Hora de la impresión" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "En _espera" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "Retener el trabajo hasta que se libere explícitamente" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "Añadir página de cubierta" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "An_tes:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "_Después:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "Tarea" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "Avanzado" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "Calidad de imagen" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "Color" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "Terminando" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "Algunos de los ajustes del diálogo están en conflicto" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "Imprimir" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "No se ha podido encontrar el archivo «include»: «%s»" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Imposible encontrar un archivo imagen en pixmap_path: «%s»" @@ -1974,36 +2052,36 @@ msgstr "Esta función no está implementada para los widgets de la clase «%s»" msgid "Select which type of documents are shown" msgstr "Seleccionar qué tipos de documentos se muestran" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "No se encontró ningún elementos para la URI «%s»" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Filtro sin título" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "No se pudo quitar el elemento" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "No se pudo limpiar la lista" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "Copiar _lugar" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "_Quitar de la lista" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_Limpiar lista" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Mostrar recursos _privados" @@ -2070,12 +2148,12 @@ msgstr "" "No se encontró ninguna aplicación registrada con el nombre «%s» para el " "elemento con el URI «%s»" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Marcador incrementable" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Proporciona una indicación visual del progreso" @@ -2589,26 +2667,25 @@ msgstr "_Reducir" #. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for #. * the state #. -#: ../gtk/gtkswitch.c:297 ../gtk/gtkswitch.c:340 ../gtk/gtkswitch.c:532 +#: ../gtk/gtkswitch.c:313 ../gtk/gtkswitch.c:362 ../gtk/gtkswitch.c:553 msgctxt "switch" msgid "ON" -msgstr "ENCENDIDO" +msgstr "❙" #. Translators: if the "off" state label requires more than three #. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state #. -#: ../gtk/gtkswitch.c:305 ../gtk/gtkswitch.c:341 ../gtk/gtkswitch.c:553 +#: ../gtk/gtkswitch.c:321 ../gtk/gtkswitch.c:363 ../gtk/gtkswitch.c:569 msgctxt "switch" msgid "OFF" -msgstr "APAGADO" +msgstr "○" -#: ../gtk/gtkswitch.c:938 -#| msgid "inch" +#: ../gtk/gtkswitch.c:968 msgctxt "light switch widget" msgid "Switch" msgstr "Interruptor" -#: ../gtk/gtkswitch.c:939 +#: ../gtk/gtkswitch.c:969 msgid "Switches between on and off states" msgstr "Cambia entre los estados encendido y apagado" @@ -2622,108 +2699,108 @@ msgstr "Error desconocido al intentar deserializar %s" msgid "No deserialize function found for format %s" msgstr "No se encontró función de deserialización para el formato %s" -#: ../gtk/gtktextbufferserialize.c:803 ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Se encontraron tanto «id» como «name» en el elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:813 ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Se encontró el atributo «%s» dos veces en el elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "El elemento <%s> tiene el ID inválido «%s»" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "El elemento <%s> no tiene ni un elemento «name» ni un elemento «id»" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "El atributo «%s» se repite dos veces en el mismo elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:970 ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "El atributo «%s» es inválido en el elemento <%s> en este contexto" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "La etiqueta «%s» no ha sido definida." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Se encontró una etiqueta anónima y las etiquetas no se pueden crear." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "" "La etiqueta «%s» no existe en el búfer y las etiquetas no se pueden crear." -#: ../gtk/gtktextbufferserialize.c:1156 ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "El elemento <%s» no se permite debajo de <%s>" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "«%s» no es un tipo de atributo válido" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "«%s» no es un nombre de atributo válido" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "«%s» no se pudo convertir a un valor de tipo «%s»para el atributo «%s»" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "«%s» no es un valor válido para el atributo «%s»" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "La etiqueta «%s» ya está definida" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "La etiqueta «%s» tiene prioridad «%s» inválida" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "" "El elemento más externo en el texto debe ser no <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "Ya se ha especificado un elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "Un elemento no puede estar antes de un elemento " -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Los datos serializados están mal formados" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" @@ -2770,58 +2847,53 @@ msgstr "En_samblador de ancho cero [ZWJ]" msgid "ZWNJ Zero width _non-joiner" msgstr "_No ensamblador de ancho cero [ZWNJ]" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Imposible encontrar el motor de temas en la ruta al _modulo: «%s»," - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Etiqueta de inicio «%s» inesperada en la línea %d, carácter %d" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Dato carácter inesperado en la línea %d, carácter %d" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Vacío" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Volumen" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Sube o baja el volumen" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Ajusta el volumen" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Bajar volumen" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Disminuye el volumen" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Subir volumen" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Aumenta el volumen" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Silenciado" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Volumen total" @@ -2830,7 +2902,7 @@ msgstr "Volumen total" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3822,258 +3894,258 @@ msgstr "Vietnamita (VIQR)" msgid "X Input Method" msgstr "Método de entrada X" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "Nombre de usuario:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "Contraseña:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "" "Se necesita autenticación para imprimir el documento «%s» en la impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Se necesita autenticación para imprimir el documento en %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "Se necesita autenticación para obtener los atributos del trabajo «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "Se necesita autenticación para obtener los atributos de un trabajo" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "" "Se necesita autenticación para obtener los atributos de la impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "Se necesita autenticación para obtener los atributos de una impresora" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "" "Se necesita autenticación para obtener la impresora predeterminada de %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Se necesita autenticación para obtener las impresoras de %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "Se necesita autenticación para obtener un archivo de %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "Se necesita autenticación en %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "Dominio:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Se necesita autenticación para imprimir el documento «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "" "Se necesita autenticación para imprimir este documento en la impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "Se necesita autenticación para imprimir este documento" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "A la impresora «%s» le queda poco tóner." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "A la impresora «%s» no le queda tóner." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "A la impresora «%s» le queda poco revelador." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "A la impresora «%s» no le queda revelador." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "A la impresora «%s» le queda poco de, al menos, un cartucho." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "A la impresora «%s» no le queda, al menos, un cartucho." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "La tapa de la impresora «%s» está abierta." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "La puerta de la impresora «%s» está abierta." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "La impresora «%s» tiene poco papel." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "La impresora «%s» no tiene papel." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "La impresora «%s» está actualmente desconectada." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "Existe un problema con la impresora «%s»." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "Pausado; rechazando trabajos" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "Rechazando trabajos" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "Dos caras" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "Tipo de papel" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "Fuente de papel" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "Bandeja de salida" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "Resolución" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "Prefiltrado GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "Una cara" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "Margen largo (estándar)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "Margen corto (girar)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "Autoseleccionar" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "Predeterminado de la impresora" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "Sólo empotrar tipografías GhostScript" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "Convertir a PS de nivel 1" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "Convertir a PS de nivel 2" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "Sin prefiltrado" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "Miscelánea" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "Urgente" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "Alta" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "Media" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "Baja" @@ -4081,21 +4153,21 @@ msgstr "Baja" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "Páginas por hoja" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "Prioridad del trabajo" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "Información de facturación" @@ -4103,45 +4175,45 @@ msgstr "Información de facturación" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "Ninguna" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "Clasificado" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "Confidencial" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "Secreto" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "Estándar" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "Alto secreto" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "Desclasificado" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "Antes" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "Después" @@ -4149,14 +4221,14 @@ msgstr "Después" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "Imprimir en" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "Imprimir a la hora" @@ -4164,7 +4236,7 @@ msgstr "Imprimir a la hora" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "Personalizado %sx%s" @@ -4179,28 +4251,28 @@ msgstr "salida.%s" msgid "Print to File" msgstr "Imprimir a un archivo" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Páginas por _hoja:" -#: ../modules/printbackends/file/gtkprintbackendfile.c:649 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "Archivo" -#: ../modules/printbackends/file/gtkprintbackendfile.c:659 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "Formato de _salida" @@ -4269,6 +4341,27 @@ msgstr "" "No se ha podido cargar la imagen «%s»: el motivo es desconocido, " "probablemente el archivo gráfico esté corrupto" +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "Imposible encontrar el motor de temas en la ruta al _modulo: «%s»," + +#~ msgid "X screen to use" +#~ msgstr "Pantalla [screen] X que usar" + +#~ msgid "SCREEN" +#~ msgstr "PANTALLA" + +#~ msgid "Make X calls synchronous" +#~ msgstr "Hacer llamadas a X síncronas" + +#~ msgid "Credits" +#~ msgstr "Créditos" + +#~ msgid "Written by" +#~ msgstr "Escrito por" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "No se ha podido encontrar el archivo «include»: «%s»" + #~ msgid "Error creating folder '%s': %s" #~ msgstr "Error al crear la carpeta «%s» : %s" @@ -4989,9 +5082,6 @@ msgstr "" #~ msgid "_Folder name:" #~ msgstr "_Nombre de la carpeta:" -#~ msgid "C_reate" -#~ msgstr "C_rear" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "" diff --git a/po/et.po b/po/et.po index b2079502a9..77fac01f4b 100644 --- a/po/et.po +++ b/po/et.po @@ -1,23 +1,23 @@ # GTK+ eesti keele tõlge. # Estonian translation of GTK+. # -# Copyright (C) 1999-2007 Free Software Foundation, Inc. -# Copyright (C) 2007-2010 The GNOME Project. +# Copyright (C) 1999–2007 Free Software Foundation, Inc. +# Copyright (C) 2007–2011 The GNOME Project. # This file is distributed under the same license as the gtk package. # # Lauris Kaplinski , 1999. -# Tõivo Leedjärv , 2002-2004. +# Tõivo Leedjärv , 2002–2004. # Priit Laes , 2004, 2005. -# Ivar Smolin , 2005-2010. -# Mattias Põldaru , 2009-2010. +# Ivar Smolin , 2005–2011. +# Mattias Põldaru , 2009–2010. # msgid "" msgstr "" "Project-Id-Version: gtk+ MASTER\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk" "%2b&component=general\n" -"POT-Creation-Date: 2010-11-29 20:28+0000\n" -"PO-Revision-Date: 2010-11-30 14:03+0200\n" +"POT-Creation-Date: 2011-01-15 11:09+0000\n" +"PO-Revision-Date: 2011-01-15 15:48+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" @@ -58,14 +58,6 @@ msgstr "Kasutatav X'i kuva" msgid "DISPLAY" msgstr "KUVA" -#. Description of --screen=SCREEN in --help output -msgid "X screen to use" -msgstr "Kasutatav X'i ekraan" - -#. Placeholder in --screen=SCREEN in --help output -msgid "SCREEN" -msgstr "EKRAAN" - #. Description of --gdk-debug=FLAGS in --help output msgid "GDK debugging flags to set" msgstr "GDK silumislipud, mida seada" @@ -267,16 +259,16 @@ msgid_plural "Opening %d Items" msgstr[0] "Avamine: %d kirje" msgstr[1] "Avamine: %d kirjet" -#. Description of --sync in --help output -msgid "Make X calls synchronous" -msgstr "X'i kutsungid sünkroonseks" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "See programm on ILMA IGASUGUSE GARANTIITA. Üksikasjade kohta vaata %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "" +"See programm on ILMA IGASUGUSE GARANTIITA. Üksikasjade kohta vaata %s" msgid "License" msgstr "Litsents" @@ -295,15 +287,15 @@ msgstr "_Litsents" msgid "Could not show link" msgstr "Linki pole võimalik kuvada" +msgid "Homepage" +msgstr "Koduleht" + #, c-format msgid "About %s" msgstr "Lähem teave %s kohta" -msgid "Credits" -msgstr "Autorid" - -msgid "Written by" -msgstr "Programmeerimine" +msgid "Created by" +msgstr "Autor:" msgid "Documented by" msgstr "Dokumentatsioon" @@ -376,6 +368,69 @@ msgctxt "keyboard label" msgid "Backslash" msgstr "Backslash" +msgid "Other application..." +msgstr "Muu rakendus..." + +msgid "Failed to look for applications online" +msgstr "" + +msgid "Find applications online" +msgstr "" + +msgid "Could not run application" +msgstr "Rakendust pole võimalik käivitada" + +#, c-format +msgid "Could not find '%s'" +msgstr "Rakendust \"%s\" pole võimalik leida" + +msgid "Could not find application" +msgstr "Rakendust pole võimalik leida" + +#. Translators: %s is a filename +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Vali faili \"%s\" avamiseks rakendus" + +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Puudub rakendus faili \"%s\" avamiseks" + +#. Translators: %s is a file type description +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Vali \"%s\" liiki failide avamiseks rakendus" + +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Puudub rakendus \"%s\" liiki failide avamiseks" + +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" + +msgid "Forget association" +msgstr "Unusta seos" + +msgid "Show other applications" +msgstr "Näita teisi rakendusi" + +msgid "_Open" +msgstr "_Ava" + +msgid "Default Application" +msgstr "Vaikimisi rakendus" + +msgid "Recommended Applications" +msgstr "Soovitatavad rakendused" + +msgid "Related Applications" +msgstr "Seotud rakendused" + +msgid "Other Applications" +msgstr "Muud rakendused" + #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Vigast liiki funktsioon real %d: '%s'" @@ -1144,6 +1199,14 @@ msgstr "Protsessi PID-iga %d pole võimalik lõpetada: %s" msgid "Page %u" msgstr "Lehekülg %u" +#. Translators: the format here is used to build the string that will be rendered +#. * in the number emblem. +#. +#, c-format +msgctxt "Number format" +msgid "%d" +msgstr "%d" + msgid "Not a valid page setup file" msgstr "Pole korrektne lehekülje sätete fail" @@ -1558,13 +1621,9 @@ msgstr "Selle dialoogi mõned sätted on omavahel vastuolus" msgid "Print" msgstr "Printimine" -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Faili pole võimalik kaasata: \"%s\"" - #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" -msgstr "Ei leia pildifaili otsingurajalt 'pixmap_path': \"%s\"" +msgstr "Pildifaili pole otsingurajalt 'pixmap_path' võimalik leida: \"%s\"" #, c-format msgid "This function is not implemented for widgets of class '%s'" @@ -2211,10 +2270,6 @@ msgstr "ZWJ Null-laiusega ü_hendaja" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWJ Null-laiusega _mitteühendaja" -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Ei leia teemamootorit otsingurajalt 'module_path': \"%s\"," - #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Tundmatu algussilt '%s', rida %d sümbol %d" @@ -3397,3 +3452,21 @@ msgid "" msgstr "" "Tõrge pildifaili '%s' laadimisel: põhjus teadmata, arvatavasti on pildifail " "rikutud" + +#~ msgid "X screen to use" +#~ msgstr "Kasutatav X'i ekraan" + +#~ msgid "SCREEN" +#~ msgstr "EKRAAN" + +#~ msgid "Make X calls synchronous" +#~ msgstr "X'i kutsungid sünkroonseks" + +#~ msgid "Credits" +#~ msgstr "Autorid" + +#~ msgid "Written by" +#~ msgstr "Programmeerimine" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Faili pole võimalik kaasata: \"%s\"" diff --git a/po/eu.po b/po/eu.po index f9ac9477ea..47398980c8 100644 --- a/po/eu.po +++ b/po/eu.po @@ -1,383 +1,373 @@ # translation of eu.po to Basque # Joseba Bidaurrazaga van Dierdonck , 1999-2000. # Hizkuntza Politikarako Sailburuordetza , 2004. -# Iñaki Larrañaga Murgoitio , 2004, 2005, 2006, 2008, 2009, 2010. +# Iñaki Larrañaga Murgoitio , 2004, 2005, 2006, 2008, 2009, 2010, 2011. # Iñaki Larrañaga Murgoitio , 2007. -# Copyright (C) 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# Copyright (C) 1999, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. msgid "" msgstr "" "Project-Id-Version: eu\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:41-0400\n" -"PO-Revision-Date: 2010-03-31 12:22+0200\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" +"POT-Creation-Date: 2011-01-10 22:02+0000\n" +"PO-Revision-Date: 2011-01-12 23:20+0100\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" "Language-Team: Basque \n" -"Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gdk/gdk.c:103 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Errorea --gdk-debug aukera analizatzean" -#: gdk/gdk.c:123 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Errorea --gdk-no-debug aukera analizatzean" #. Description of --class=CLASS in --help output -#: gdk/gdk.c:151 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Programa-klasea, leiho kudeatzaileak erabiltzen duen bezala" #. Placeholder in --class=CLASS in --help output -#: gdk/gdk.c:152 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "KLASEA" #. Description of --name=NAME in --help output -#: gdk/gdk.c:154 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Programa-izena, leiho kudeatzaileak erabiltzen duen bezala" #. Placeholder in --name=NAME in --help output -#: gdk/gdk.c:155 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "IZENA" #. Description of --display=DISPLAY in --help output -#: gdk/gdk.c:157 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "Erabili beharreko X bistaratzea" #. Placeholder in --display=DISPLAY in --help output -#: gdk/gdk.c:158 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "BISTARATZEA" -#. Description of --screen=SCREEN in --help output -#: gdk/gdk.c:160 -msgid "X screen to use" -msgstr "Erabili beharreko X pantaila" - -#. Placeholder in --screen=SCREEN in --help output -#: gdk/gdk.c:161 -msgid "SCREEN" -msgstr "PANTAILA" - #. Description of --gdk-debug=FLAGS in --help output -#: gdk/gdk.c:164 -#, fuzzy +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" -msgstr "Ezarri beharreko Gtk+ arazketa-banderak" +msgstr "Ezarri beharreko GDK arazketa-banderak" #. Placeholder in --gdk-debug=FLAGS in --help output #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: gdk/gdk.c:165 gdk/gdk.c:168 gtk/gtkmain.c:533 gtk/gtkmain.c:536 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "BANDERAK" #. Description of --gdk-no-debug=FLAGS in --help output -#: gdk/gdk.c:167 -#, fuzzy +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" -msgstr "Ezarpenetik kendu beharreko Gtk+ arazketa-banderak" +msgstr "Ezarpenetik kendu beharreko GDK arazketa-banderak" -#: gdk/keyname-table.h:3940 +#: ../gdk/keyname-table.h:3940 msgctxt "keyboard label" msgid "BackSpace" msgstr "Atzera-tekla" -#: gdk/keyname-table.h:3941 +#: ../gdk/keyname-table.h:3941 msgctxt "keyboard label" msgid "Tab" msgstr "Tabulazioa" -#: gdk/keyname-table.h:3942 +#: ../gdk/keyname-table.h:3942 msgctxt "keyboard label" msgid "Return" msgstr "Itzuli" -#: gdk/keyname-table.h:3943 +#: ../gdk/keyname-table.h:3943 msgctxt "keyboard label" msgid "Pause" msgstr "Pausatu" -#: gdk/keyname-table.h:3944 +#: ../gdk/keyname-table.h:3944 msgctxt "keyboard label" msgid "Scroll_Lock" msgstr "Blok. _Korr." -#: gdk/keyname-table.h:3945 +#: ../gdk/keyname-table.h:3945 msgctxt "keyboard label" msgid "Sys_Req" msgstr "Sist. _Esk." -#: gdk/keyname-table.h:3946 +#: ../gdk/keyname-table.h:3946 msgctxt "keyboard label" msgid "Escape" msgstr "Ihes" -#: gdk/keyname-table.h:3947 +#: ../gdk/keyname-table.h:3947 msgctxt "keyboard label" msgid "Multi_key" msgstr "Hainbat _tekla" -#: gdk/keyname-table.h:3948 +#: ../gdk/keyname-table.h:3948 msgctxt "keyboard label" msgid "Home" msgstr "Hasiera" -#: gdk/keyname-table.h:3949 +#: ../gdk/keyname-table.h:3949 msgctxt "keyboard label" msgid "Left" msgstr "Ezkerrera" -#: gdk/keyname-table.h:3950 +#: ../gdk/keyname-table.h:3950 msgctxt "keyboard label" msgid "Up" msgstr "Gora" -#: gdk/keyname-table.h:3951 +#: ../gdk/keyname-table.h:3951 msgctxt "keyboard label" msgid "Right" msgstr "Eskuinera" -#: gdk/keyname-table.h:3952 +#: ../gdk/keyname-table.h:3952 msgctxt "keyboard label" msgid "Down" msgstr "Behera" -#: gdk/keyname-table.h:3953 +#: ../gdk/keyname-table.h:3953 msgctxt "keyboard label" msgid "Page_Up" msgstr "Orri-_gora" -#: gdk/keyname-table.h:3954 +#: ../gdk/keyname-table.h:3954 msgctxt "keyboard label" msgid "Page_Down" msgstr "Orri-_behera" -#: gdk/keyname-table.h:3955 +#: ../gdk/keyname-table.h:3955 msgctxt "keyboard label" msgid "End" msgstr "Amaiera" -#: gdk/keyname-table.h:3956 +#: ../gdk/keyname-table.h:3956 msgctxt "keyboard label" msgid "Begin" msgstr "Hasiera" -#: gdk/keyname-table.h:3957 +#: ../gdk/keyname-table.h:3957 msgctxt "keyboard label" msgid "Print" msgstr "Inprimatu" -#: gdk/keyname-table.h:3958 +#: ../gdk/keyname-table.h:3958 msgctxt "keyboard label" msgid "Insert" msgstr "Txertatu" -#: gdk/keyname-table.h:3959 +#: ../gdk/keyname-table.h:3959 msgctxt "keyboard label" msgid "Num_Lock" msgstr "_Blok. zenb." -#: gdk/keyname-table.h:3960 +#: ../gdk/keyname-table.h:3960 msgctxt "keyboard label" msgid "KP_Space" msgstr "TNum. _Zuriunea" -#: gdk/keyname-table.h:3961 +#: ../gdk/keyname-table.h:3961 msgctxt "keyboard label" msgid "KP_Tab" msgstr "TNum. _Tabulazioa" -#: gdk/keyname-table.h:3962 +#: ../gdk/keyname-table.h:3962 msgctxt "keyboard label" msgid "KP_Enter" msgstr "TNum. _Sartu" -#: gdk/keyname-table.h:3963 +#: ../gdk/keyname-table.h:3963 msgctxt "keyboard label" msgid "KP_Home" msgstr "TNum. _Hasiera" -#: gdk/keyname-table.h:3964 +#: ../gdk/keyname-table.h:3964 msgctxt "keyboard label" msgid "KP_Left" msgstr "TNum. E_zkerrera" -#: gdk/keyname-table.h:3965 +#: ../gdk/keyname-table.h:3965 msgctxt "keyboard label" msgid "KP_Up" msgstr "TNum. _Gora" -#: gdk/keyname-table.h:3966 +#: ../gdk/keyname-table.h:3966 msgctxt "keyboard label" msgid "KP_Right" msgstr "TNum. E_skuinera" -#: gdk/keyname-table.h:3967 +#: ../gdk/keyname-table.h:3967 msgctxt "keyboard label" msgid "KP_Down" msgstr "TNum. _Behera" -#: gdk/keyname-table.h:3968 +#: ../gdk/keyname-table.h:3968 msgctxt "keyboard label" msgid "KP_Page_Up" msgstr "TNum. Orri-_gora" -#: gdk/keyname-table.h:3969 +#: ../gdk/keyname-table.h:3969 msgctxt "keyboard label" msgid "KP_Prior" msgstr "TNum. _Aurrekoa" -#: gdk/keyname-table.h:3970 +#: ../gdk/keyname-table.h:3970 msgctxt "keyboard label" msgid "KP_Page_Down" msgstr "TNum. Orri-_behera" -#: gdk/keyname-table.h:3971 +#: ../gdk/keyname-table.h:3971 msgctxt "keyboard label" msgid "KP_Next" msgstr "TNum. H_urrengoa" -#: gdk/keyname-table.h:3972 +#: ../gdk/keyname-table.h:3972 msgctxt "keyboard label" msgid "KP_End" msgstr "TNum. _Amaiera" -#: gdk/keyname-table.h:3973 +#: ../gdk/keyname-table.h:3973 msgctxt "keyboard label" msgid "KP_Begin" msgstr "TNum. _Hasiera" -#: gdk/keyname-table.h:3974 +#: ../gdk/keyname-table.h:3974 msgctxt "keyboard label" msgid "KP_Insert" msgstr "TNum. _Txertatu" -#: gdk/keyname-table.h:3975 +#: ../gdk/keyname-table.h:3975 msgctxt "keyboard label" msgid "KP_Delete" msgstr "TNum. _Ezabatu" -#: gdk/keyname-table.h:3976 +#: ../gdk/keyname-table.h:3976 msgctxt "keyboard label" msgid "Delete" msgstr "Ezabatu" #. Description of --sync in --help output -#: gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Ez jarri GDI eskaerak batch gisa" #. Description of --no-wintab in --help output -#: gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Ez erabili Wintab APIa taulak onartzeko" #. Description of --ignore-wintab in --help output -#: gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "'--no-wintab' bezala ere" #. Description of --use-wintab in --help output -#: gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Erabili Wintab APIa [lehenetsia]" #. Description of --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "8-bit motako paletaren tamaina" #. Placeholder in --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "KOLOREAK" -#: gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "'%s' hasieratzen" -#: gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "'%s' irekitzen" -#: gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Elementu %d irekitzen" msgstr[1] "%d elementu irekitzen" -#. Description of --sync in --help output -#: gdk/x11/gdkmain-x11.c:96 -msgid "Make X calls synchronous" -msgstr "Bihurtu X dei sinkroniko" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" +"Programa honek ez du INOLAKO BERMERIK. Xehetasun gehiagorako, bisitatu " +"%s" -#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2235 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Lizentzia" -#: gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "Programaren lizentzia" #. Add the credits button -#: gtk/gtkaboutdialog.c:621 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "K_redituak" #. Add the license button -#: gtk/gtkaboutdialog.c:635 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Lizentzia" -#: gtk/gtkaboutdialog.c:839 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "Ezin izan da esteka erakutsi" -#: gtk/gtkaboutdialog.c:932 +#: ../gtk/gtkaboutdialog.c:994 +#| msgctxt "keyboard label" +#| msgid "Home" +msgid "Homepage" +msgstr "Webgune nagusia" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "%s buruz" -#: gtk/gtkaboutdialog.c:2153 -msgid "Credits" -msgstr "Kredituak" +#: ../gtk/gtkaboutdialog.c:2372 +#| msgid "C_reate" +msgid "Created by" +msgstr "Sortzaileak" -#: gtk/gtkaboutdialog.c:2185 -msgid "Written by" -msgstr "Garapena" - -#: gtk/gtkaboutdialog.c:2188 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Dokumentazioa" -#: gtk/gtkaboutdialog.c:2200 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" -msgstr "Itzulpena" +msgstr "Itzultzaileak" -#: gtk/gtkaboutdialog.c:2204 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Marrazki lanak" @@ -386,7 +376,7 @@ msgstr "Marrazki lanak" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Maius" @@ -396,7 +386,7 @@ msgstr "Maius" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ktrl" @@ -406,7 +396,7 @@ msgstr "Ktrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -416,7 +406,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -426,7 +416,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hiper" @@ -436,37 +426,132 @@ msgstr "Hiper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Zuriunea" -#: gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Alderantzizko barra" -#: gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +#| msgid "Application" +msgid "Other application..." +msgstr "Beste aplikazioa..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Huts egin du lineako aplikazioak bilatzean" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Bilatu lineako aplikazioak" + +#: ../gtk/gtkappchooserdialog.c:208 +#| msgid "Could not clear list" +msgid "Could not run application" +msgstr "Ezin izan da aplikazioa exekutatu" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +#| msgid "Could not mount %s" +msgid "Could not find '%s'" +msgstr "Ezin izan da '%s' aurkitu." + +#: ../gtk/gtkappchooserdialog.c:224 +#| msgid "Could not show link" +msgid "Could not find application" +msgstr "Ezin izan da aplikazioa aurkitu" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Hautatu aplikazio bat \"%s\" irekitzeko" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Ez dago aplikaziorik erabilgarri \"%s\" irekitzeko" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Hautatu aplikazio bat \"%s\" fitxategientzako" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Ez dago aplikaziorik erabilgarri \"%s\" fitxategiak irekitzeko" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"Egin klik \"Erakutsi beste aplikazioak\" gainean aukera gehiagorako, " +"edo \"Bilatu lineako aplikazioak\" aplikazio berri bat instalatzeko" + +#: ../gtk/gtkappchooserdialog.c:428 +#| msgid "Forget password _immediately" +msgid "Forget association" +msgstr "Ahaztu esleipena" + +#: ../gtk/gtkappchooserdialog.c:493 +#| msgid "Show GTK+ Options" +msgid "Show other applications" +msgstr "Erakutsi beste aplikazioak" + +#: ../gtk/gtkappchooserdialog.c:511 +#| msgctxt "Stock label" +#| msgid "_Open" +msgid "_Open" +msgstr "_Ireki" + +#: ../gtk/gtkappchooserwidget.c:593 +#| msgid "Application" +msgid "Default Application" +msgstr "Aplikazio lehenetsia" + +#: ../gtk/gtkappchooserwidget.c:729 +#| msgid "Application" +msgid "Recommended Applications" +msgstr "Gomendatutako aplikazioak" + +#: ../gtk/gtkappchooserwidget.c:743 +#| msgid "Application" +msgid "Related Applications" +msgstr "Zerikusia duten aplikazioak" + +#: ../gtk/gtkappchooserwidget.c:756 +#| msgid "Application" +msgid "Other Applications" +msgstr "Beste aplikazioak" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Funtzio mota baliogabea %d lerroan: '%s'" -#: gtk/gtkbuilderparser.c:407 -#, fuzzy, c-format +#: ../gtk/gtkbuilderparser.c:406 +#, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" -msgstr "Bikoiztutako '%s' id objektua %d lerroan (aurrez %d lerroan)" +msgstr "Bikoiztutako '%s' ID objektua %d. lerroan (aurrez %d. lerroan)" -#: gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Erroko elementu baliogabea: %s" -#: gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Kudeatu gabeko etiketa: '%s'" @@ -481,7 +566,7 @@ msgstr "Kudeatu gabeko etiketa: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: gtk/gtkcalendar.c:883 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:YM" @@ -489,7 +574,7 @@ msgstr "calendar:YM" #. * 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:921 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -498,7 +583,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: gtk/gtkcalendar.c:2006 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -513,7 +598,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2037 gtk/gtkcalendar.c:2719 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -529,7 +614,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2069 gtk/gtkcalendar.c:2579 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -545,7 +630,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: gtk/gtkcalendar.c:2361 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -553,7 +638,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Desgaituta" @@ -562,7 +647,7 @@ msgstr "Desgaituta" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "Baliogabea" @@ -571,25 +656,25 @@ msgstr "Baliogabea" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: gtk/gtkcellrendereraccel.c:418 gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:674 msgid "New accelerator..." msgstr "Bizkortzaile berria..." -#: gtk/gtkcellrendererprogress.c:362 gtk/gtkcellrendererprogress.c:452 +#: ../gtk/gtkcellrendererprogress.c:362 ../gtk/gtkcellrendererprogress.c:452 #, c-format msgctxt "progress bar label" msgid "%d %%" msgstr "%% %d" -#: gtk/gtkcolorbutton.c:176 gtk/gtkcolorbutton.c:445 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "Hautatu kolorea" -#: gtk/gtkcolorbutton.c:336 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "Kolore datu baliogabea jaso da\n" -#: gtk/gtkcolorsel.c:384 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -597,7 +682,7 @@ msgstr "" "Hautatu nahi duzun kolorea kanpoko biribiletik. Hautatu kolore horren " "iluntasuna edo argitasuna barruko triangelua erabiliz" -#: gtk/gtkcolorsel.c:408 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -605,68 +690,67 @@ msgstr "" "Egin klik tanta-kontagailuan, eta egin klik zure pantailako edozein " "koloretan kolore hori hautatzeko." -#: gtk/gtkcolorsel.c:417 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Ñabardura:" -#: gtk/gtkcolorsel.c:418 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Kolore-gurpileko kokalekua." -#: gtk/gtkcolorsel.c:420 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Saturazioa:" -#: gtk/gtkcolorsel.c:421 -#, fuzzy +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." -msgstr "Kolorearen gardentasuna." +msgstr "Kolorearen intentsitatea." -#: gtk/gtkcolorsel.c:422 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Balioa:" -#: gtk/gtkcolorsel.c:423 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Kolorearen distira." -#: gtk/gtkcolorsel.c:424 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Gorria:" -#: gtk/gtkcolorsel.c:425 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Argi gorriaren kantitatea kolorean." -#: gtk/gtkcolorsel.c:426 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "Be_rdea:" -#: gtk/gtkcolorsel.c:427 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Argi berdearen kantitatea kolorean." -#: gtk/gtkcolorsel.c:428 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Urdina:" -#: gtk/gtkcolorsel.c:429 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Argi urdinaren kantitatea kolorean." -#: gtk/gtkcolorsel.c:432 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "_Opakutasuna:" -#: gtk/gtkcolorsel.c:439 gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Kolorearen gardentasuna." -#: gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "Kolorearen i_zena:" -#: gtk/gtkcolorsel.c:470 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -674,15 +758,15 @@ msgstr "" "HTML estiloko kolore-balio hamaseitarra sar dezakezu edo bestela kolore " "baten izena, adibidez 'laranja', sarrera honetan." -#: gtk/gtkcolorsel.c:500 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Paleta:" -#: gtk/gtkcolorsel.c:529 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Kolore-gurpila" -#: gtk/gtkcolorsel.c:988 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -692,7 +776,7 @@ msgstr "" "konparatzeko. Kolore hori paleta-sarrerara arrasta dezakezu edo kolore hori " "uneko kolore gisa hauta dezakezu, koloreen ondoko lagin-multzora arrastatuz." -#: gtk/gtkcolorsel.c:991 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -700,7 +784,7 @@ msgstr "" "Hautatu duzun kolorea. Kolore hori paleta-sarrerara arrasta dezakezu eta han " "gorde aurrerago erabiltzeko." -#: gtk/gtkcolorsel.c:996 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." @@ -708,15 +792,15 @@ msgstr "" "Aurrez hautatutako kolorea, orain hautatzen ari zaren kolorearekin " "konparatzeko." -#: gtk/gtkcolorsel.c:999 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "Aukeratu duzun kolorea." -#: gtk/gtkcolorsel.c:1396 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "_Gorde kolorea hemen" -#: gtk/gtkcolorsel.c:1601 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -725,7 +809,7 @@ msgstr "" "aldatzeko, arrastatu koloreen lagin-multzoa hona edo egin klik eskuineko " "botoiarekin eta hautatu \"Gorde kolorea hemen.\"" -#: gtk/gtkcolorseldialog.c:189 +#: ../gtk/gtkcolorseldialog.c:189 msgid "Color Selection" msgstr "Kolore-hautapena" @@ -735,125 +819,124 @@ msgstr "Kolore-hautapena" #. * Do *not* translate it to "predefinito:mm", if it #. * it isn't default:mm or default:inch it will not work #. -#: gtk/gtkcustompaperunixdialog.c:116 +#: ../gtk/gtkcustompaperunixdialog.c:116 msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: gtk/gtkcustompaperunixdialog.c:374 gtk/gtkprintunixdialog.c:3233 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "Kudeatu tamaina pertsonalak" -#: gtk/gtkcustompaperunixdialog.c:534 gtk/gtkpagesetupunixdialog.c:790 +#: ../gtk/gtkcustompaperunixdialog.c:534 ../gtk/gtkpagesetupunixdialog.c:790 msgid "inch" msgstr "hazbete" -#: gtk/gtkcustompaperunixdialog.c:536 gtk/gtkpagesetupunixdialog.c:788 +#: ../gtk/gtkcustompaperunixdialog.c:536 ../gtk/gtkpagesetupunixdialog.c:788 msgid "mm" msgstr "mm" -#: gtk/gtkcustompaperunixdialog.c:581 +#: ../gtk/gtkcustompaperunixdialog.c:581 msgid "Margins from Printer..." msgstr "Marjinak inprimagailutik..." -#: gtk/gtkcustompaperunixdialog.c:747 +#: ../gtk/gtkcustompaperunixdialog.c:747 #, c-format msgid "Custom Size %d" msgstr "%d tamaina pertsonalizatua" -#: gtk/gtkcustompaperunixdialog.c:1059 +#: ../gtk/gtkcustompaperunixdialog.c:1059 msgid "_Width:" msgstr "_Zabalera:" -#: gtk/gtkcustompaperunixdialog.c:1071 +#: ../gtk/gtkcustompaperunixdialog.c:1071 msgid "_Height:" msgstr "_Altuera:" -#: gtk/gtkcustompaperunixdialog.c:1083 +#: ../gtk/gtkcustompaperunixdialog.c:1083 msgid "Paper Size" msgstr "Paper-tamaina" -#: gtk/gtkcustompaperunixdialog.c:1092 +#: ../gtk/gtkcustompaperunixdialog.c:1092 msgid "_Top:" msgstr "_Goian:" -#: gtk/gtkcustompaperunixdialog.c:1104 +#: ../gtk/gtkcustompaperunixdialog.c:1104 msgid "_Bottom:" msgstr "_Behean:" -#: gtk/gtkcustompaperunixdialog.c:1116 +#: ../gtk/gtkcustompaperunixdialog.c:1116 msgid "_Left:" msgstr "E_zkerrean:" -#: gtk/gtkcustompaperunixdialog.c:1128 +#: ../gtk/gtkcustompaperunixdialog.c:1128 msgid "_Right:" msgstr "E_skuinean:" -#: gtk/gtkcustompaperunixdialog.c:1169 +#: ../gtk/gtkcustompaperunixdialog.c:1169 msgid "Paper Margins" msgstr "Paper-marjinak" -#: gtk/gtkentry.c:8601 gtk/gtktextview.c:8248 +#: ../gtk/gtkentry.c:8806 ../gtk/gtktextview.c:8227 msgid "Input _Methods" msgstr "Sartzeko _metodoak" -#: gtk/gtkentry.c:8615 gtk/gtktextview.c:8262 +#: ../gtk/gtkentry.c:8820 ../gtk/gtktextview.c:8241 msgid "_Insert Unicode Control Character" msgstr "_Txertatu Unicode kontrol-karakterea" -#: gtk/gtkentry.c:10015 +#: ../gtk/gtkentry.c:10224 msgid "Caps Lock and Num Lock are on" -msgstr "" +msgstr "Blok. Maius. eta Blok. Zenb. teklak aktibatuta daude" -#: gtk/gtkentry.c:10017 -#, fuzzy +#: ../gtk/gtkentry.c:10226 msgid "Num Lock is on" -msgstr "Blok.maius. aktibatuta dago" +msgstr "Blok. Zenb. aktibatuta dago" -#: gtk/gtkentry.c:10019 +#: ../gtk/gtkentry.c:10228 msgid "Caps Lock is on" msgstr "Blok.maius. aktibatuta dago" #. **************** * #. * Private Macros * #. * **************** -#: gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Hautatu fitxategia" -#: gtk/gtkfilechooserbutton.c:62 gtk/gtkfilechooserdefault.c:1812 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Mahaigaina" -#: gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(bat ere ez)" -#: gtk/gtkfilechooserbutton.c:2005 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Besterik..." -#: gtk/gtkfilechooserdefault.c:148 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Idatzi karpeta berriaren izena" -#: gtk/gtkfilechooserdefault.c:938 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "Ezin da fitxategiari buruzko informaziorik lortu" -#: gtk/gtkfilechooserdefault.c:949 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "Ezin da laster-marka gehitu" -#: gtk/gtkfilechooserdefault.c:960 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "Ezin izan da laster-marka ezabatu" -#: gtk/gtkfilechooserdefault.c:971 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "Ezin izan da karpeta sortu" -#: gtk/gtkfilechooserdefault.c:984 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -862,11 +945,19 @@ msgstr "" "Saiatu karpeta beste izen batekin sortzen, edo aldatu fitxategiaren izena " "lehenbizi." -#: gtk/gtkfilechooserdefault.c:995 +#: ../gtk/gtkfilechooserdefault.c:1004 +msgid "" +"You may only select folders. The item that you selected is not a folder; " +"try using a different item." +msgstr "" +"Karpetak soilik hautatu behar dituzu. Hautatu duzun elementua ez da " +"karpeta bat. Saiatu bestelako elementu bat erabiltzen." + +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "Fitxategi-izen baliogabea" -#: gtk/gtkfilechooserdefault.c:1005 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "Karpetaren edukia ezin izan da bistaratu" @@ -874,202 +965,201 @@ msgstr "Karpetaren edukia ezin izan da bistaratu" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: gtk/gtkfilechooserdefault.c:1555 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s, %2$s" -#: gtk/gtkfilechooserdefault.c:1731 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Bilatu" -#: gtk/gtkfilechooserdefault.c:1755 gtk/gtkfilechooserdefault.c:9289 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Duela gutxi erabilita" -#: gtk/gtkfilechooserdefault.c:2409 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Hautatu erakutsiko diren fitxategi motak" -#: gtk/gtkfilechooserdefault.c:2768 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Gehitu '%s' karpeta laster-markei" -#: gtk/gtkfilechooserdefault.c:2812 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Gehitu uneko karpeta laster-markei" -#: gtk/gtkfilechooserdefault.c:2814 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Gehitu hautatutako karpetak laster-markei" -#: gtk/gtkfilechooserdefault.c:2852 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Kendu '%s' laster-marka" -#: gtk/gtkfilechooserdefault.c:2854 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "'%s' laster-marka ezin da kendu" -#: gtk/gtkfilechooserdefault.c:2861 gtk/gtkfilechooserdefault.c:3725 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Kendu hautatutako laster-marka" -#: gtk/gtkfilechooserdefault.c:3421 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Kendu" -#: gtk/gtkfilechooserdefault.c:3430 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Izena aldatu..." #. Accessible object name for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3593 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Lekuak" #. Column header for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3650 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Lekuak" -#: gtk/gtkfilechooserdefault.c:3706 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_Gehitu" -#: gtk/gtkfilechooserdefault.c:3713 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Gehitu hautatutako karpetak laster-markei" -#: gtk/gtkfilechooserdefault.c:3718 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_Kendu" -#: gtk/gtkfilechooserdefault.c:3860 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "Ezin izan da fitxategia hautatu" -#: gtk/gtkfilechooserdefault.c:4035 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "_Gehitu laster-markei" -#: gtk/gtkfilechooserdefault.c:4048 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "Erakutsi fitxategi _ezkutuak" -#: gtk/gtkfilechooserdefault.c:4055 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Erakutsi zutabearen _tamaina" -#: gtk/gtkfilechooserdefault.c:4281 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Fitxategiak" -#: gtk/gtkfilechooserdefault.c:4332 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Izena" -#: gtk/gtkfilechooserdefault.c:4355 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Tamaina" -#: gtk/gtkfilechooserdefault.c:4369 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Aldatua" #. Label -#: gtk/gtkfilechooserdefault.c:4624 gtk/gtkprinteroptionwidget.c:801 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Izena:" -#: gtk/gtkfilechooserdefault.c:4667 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Arakatu beste karpetak" -#: gtk/gtkfilechooserdefault.c:4937 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Idatzi fitxategi-izena" #. Create Folder -#: gtk/gtkfilechooserdefault.c:4980 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Sortu karpeta" -#: gtk/gtkfilechooserdefault.c:4990 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_Kokalekua:" -#: gtk/gtkfilechooserdefault.c:5194 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "Gorde _karpetan:" -#: gtk/gtkfilechooserdefault.c:5196 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Sortu _karpetan:" -#: gtk/gtkfilechooserdefault.c:6248 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "Ezin izan da %s(r)en edukia irakurri" -#: gtk/gtkfilechooserdefault.c:6252 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "Ezin izan da karpetaren edukia irakurri" -#: gtk/gtkfilechooserdefault.c:6345 gtk/gtkfilechooserdefault.c:6413 -#: gtk/gtkfilechooserdefault.c:6558 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Ezezaguna" -#: gtk/gtkfilechooserdefault.c:6360 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: gtk/gtkfilechooserdefault.c:6362 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "Atzo %H:%M orduan" -#: gtk/gtkfilechooserdefault.c:7028 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "Ezin aldatu karpetara, lokala ez delako." -#: gtk/gtkfilechooserdefault.c:7625 gtk/gtkfilechooserdefault.c:7646 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "%s lasterbidea badago lehendik ere" -#: gtk/gtkfilechooserdefault.c:7736 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "%s lasterbidea ez da existitzen" -#: gtk/gtkfilechooserdefault.c:7997 gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr " \"%s\" izeneko fitxategia badago lehendik. Ordeztea nahi duzu?" -#: gtk/gtkfilechooserdefault.c:8000 gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format -msgid "" -"The file already exists in \"%s\". Replacing it will overwrite its contents." +msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" "\"%s\"(e)n badago fitxategia lehendik. Hau ordeztean bere eduki guztia " "gainidatziko da." -#: gtk/gtkfilechooserdefault.c:8005 gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_Ordeztu" -#: gtk/gtkfilechooserdefault.c:8658 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Ezin izan da bilaketako prozesua abiarazi" -#: gtk/gtkfilechooserdefault.c:8659 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1077,36 +1167,36 @@ msgstr "" "Programak ezin izan du indexatzaileren daemon-arekin konexiorik sortu. " "Ziurtatu exekutatzen ari dela." -#: gtk/gtkfilechooserdefault.c:8673 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Ezin izan da bilaketako eskaera bidali" -#: gtk/gtkfilechooserdefault.c:8861 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Bilatu:" -#: gtk/gtkfilechooserdefault.c:9466 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Ezin da %s muntatu" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: gtk/gtkfilechooserentry.c:702 gtk/gtkfilechooserentry.c:1169 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Bide-izen baliogabea" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1101 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "Ez dago bat datorrenik" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1112 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Osaketa bakarra" @@ -1114,13 +1204,13 @@ msgstr "Osaketa bakarra" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: gtk/gtkfilechooserentry.c:1128 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Osaketa, baina ez bakarra" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: gtk/gtkfilechooserentry.c:1160 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Osaketa lantzen..." @@ -1128,7 +1218,7 @@ msgstr "Osaketa lantzen..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: gtk/gtkfilechooserentry.c:1182 gtk/gtkfilechooserentry.c:1207 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Fitxategi lokalak soilik hauta daitezke" @@ -1136,80 +1226,75 @@ msgstr "Fitxategi lokalak soilik hauta daitezke" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: gtk/gtkfilechooserentry.c:1191 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "Ostalari-izena osatu gabea: amaitu '/'-rekin" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: gtk/gtkfilechooserentry.c:1202 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "Bide-izena ez da existitzen" -#: gtk/gtkfilechoosersettings.c:486 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "Errorea '%s' karpeta sortzean: %s" - #. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are #. * really pointers to GDrive, GVolume or GMount objects. We need an extra #. * token for the fake "File System" volume. So, we'll return a pointer to #. * this particular string. #. -#: gtk/gtkfilesystem.c:48 +#: ../gtk/gtkfilesystem.c:48 msgid "File System" msgstr "Fitxategi-sistema" -#: gtk/gtkfontbutton.c:142 gtk/gtkfontbutton.c:266 +#: ../gtk/gtkfontbutton.c:142 ../gtk/gtkfontbutton.c:266 msgid "Pick a Font" msgstr "Hautatu letra-tipoa" #. Initialize fields -#: gtk/gtkfontbutton.c:260 +#: ../gtk/gtkfontbutton.c:260 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:785 +#: ../gtk/gtkfontbutton.c:785 msgid "Font" msgstr "Letra-tipoa" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" -#: gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "_Familia:" -#: gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "_Estiloa:" -#: gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "Ta_maina:" #. create the text entry widget -#: gtk/gtkfontsel.c:559 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_Aurrebista:" -#: gtk/gtkfontsel.c:1659 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "Letra-tipoaren hautapena" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Errorea ikonoa kargatzean: %s" -#: gtk/gtkicontheme.c:1354 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1222,75 +1307,75 @@ msgstr "" "Kopia bat hemen lor dezakezu:\n" "\t%s" -#: gtk/gtkicontheme.c:1535 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "'%s' ikonoa ez dago gaian" -#: gtk/gtkicontheme.c:3048 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Huts egin du ikonoa kargatzean" -#: gtk/gtkimmodule.c:526 +#: ../gtk/gtkimmodule.c:526 msgid "Simple" msgstr "Bakuna" -#: gtk/gtkimmulticontext.c:588 +#: ../gtk/gtkimmulticontext.c:588 msgctxt "input method menu" msgid "System" msgstr "Sistema" -#: gtk/gtkimmulticontext.c:598 +#: ../gtk/gtkimmulticontext.c:598 msgctxt "input method menu" msgid "None" msgstr "Bat ere ez" -#: gtk/gtkimmulticontext.c:681 +#: ../gtk/gtkimmulticontext.c:681 #, c-format msgctxt "input method menu" msgid "System (%s)" msgstr "Sistema (%s)" #. Open Link -#: gtk/gtklabel.c:6202 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Ireki esteka" #. Copy Link Address -#: gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Kopiatu _estekaren helbidea" -#: gtk/gtklinkbutton.c:449 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Kopiatu URLa" -#: gtk/gtklinkbutton.c:601 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "URI baliogabea" #. Description of --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:526 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Kargatu GTK+ modulu gehigarriak" #. Placeholder in --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MODULUAK" #. Description of --g-fatal-warnings in --help output -#: gtk/gtkmain.c:529 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Bihurtu abisu guztiak errore larri" #. Description of --gtk-debug=FLAGS in --help output -#: gtk/gtkmain.c:532 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "Ezarri beharreko Gtk+ arazketa-banderak" #. Description of --gtk-no-debug=FLAGS in --help output -#: gtk/gtkmain.c:535 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "Ezarpenetik kendu beharreko Gtk+ arazketa-banderak" @@ -1299,122 +1384,122 @@ msgstr "Ezarpenetik kendu beharreko Gtk+ arazketa-banderak" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: gtk/gtkmain.c:798 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: gtk/gtkmain.c:863 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Ezin da pantaila ireki: %s" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "GTK+ aukerak" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Erakutsi GTK+ aukerak" -#: gtk/gtkmountoperation.c:491 +#: ../gtk/gtkmountoperation.c:491 msgid "Co_nnect" msgstr "_Konektatu" -#: gtk/gtkmountoperation.c:558 +#: ../gtk/gtkmountoperation.c:558 msgid "Connect _anonymously" msgstr "Konektatu _anonimoki" -#: gtk/gtkmountoperation.c:567 +#: ../gtk/gtkmountoperation.c:567 msgid "Connect as u_ser:" msgstr "Konektatu _erabiltzaile gisa:" -#: gtk/gtkmountoperation.c:605 +#: ../gtk/gtkmountoperation.c:605 msgid "_Username:" msgstr "_Erabiltzaile-izena:" -#: gtk/gtkmountoperation.c:610 +#: ../gtk/gtkmountoperation.c:610 msgid "_Domain:" msgstr "_Domeinua:" -#: gtk/gtkmountoperation.c:616 +#: ../gtk/gtkmountoperation.c:616 msgid "_Password:" msgstr "_Pasahitza:" -#: gtk/gtkmountoperation.c:634 +#: ../gtk/gtkmountoperation.c:634 msgid "Forget password _immediately" msgstr "Ahaztu pasahitza _berehala" -#: gtk/gtkmountoperation.c:644 +#: ../gtk/gtkmountoperation.c:644 msgid "Remember password until you _logout" msgstr "Gogoratu pasahitza saioa _amaitu arte" -#: gtk/gtkmountoperation.c:654 +#: ../gtk/gtkmountoperation.c:654 msgid "Remember _forever" msgstr "_Gogoratu beti" -#: gtk/gtkmountoperation.c:883 -#, fuzzy, c-format -msgid "Unknown Application (PID %d)" -msgstr "Aplikazio ezezaguna (%d pid)" - -#: gtk/gtkmountoperation.c:1066 +#: ../gtk/gtkmountoperation.c:883 #, c-format +msgid "Unknown Application (PID %d)" +msgstr "Aplikazio ezezaguna (PIDa: %d)" + +#: ../gtk/gtkmountoperation.c:1066 msgid "Unable to end process" msgstr "Ezin da prozesua amaitu" -#: gtk/gtkmountoperation.c:1103 +#: ../gtk/gtkmountoperation.c:1103 msgid "_End Process" msgstr "_Amaitu prozesua" -#: gtk/gtkmountoperation-stub.c:64 -#, fuzzy, c-format +#: ../gtk/gtkmountoperation-stub.c:64 +#, c-format msgid "Cannot kill process with PID %d. Operation is not implemented." -msgstr "Ezin da %d pid prozesua hil. Eragiketa ez dago inplementatuta." +msgstr "Ezin da %d PID prozesua hil. Eragiketa ez dago inplementatuta." #. translators: this string is a name for the 'less' command -#: gtk/gtkmountoperation-x11.c:862 +#: ../gtk/gtkmountoperation-x11.c:862 msgid "Terminal Pager" msgstr "Terminaleko orrikatzailea" -#: gtk/gtkmountoperation-x11.c:863 +#: ../gtk/gtkmountoperation-x11.c:863 msgid "Top Command" msgstr "Top komandoa" -#: gtk/gtkmountoperation-x11.c:864 +#: ../gtk/gtkmountoperation-x11.c:864 msgid "Bourne Again Shell" msgstr "Bourne Again Shell" -#: gtk/gtkmountoperation-x11.c:865 +#: ../gtk/gtkmountoperation-x11.c:865 msgid "Bourne Shell" msgstr "Bourne Shell" -#: gtk/gtkmountoperation-x11.c:866 +#: ../gtk/gtkmountoperation-x11.c:866 msgid "Z Shell" msgstr "Z Shell" -#: gtk/gtkmountoperation-x11.c:963 -#, fuzzy, c-format +#: ../gtk/gtkmountoperation-x11.c:963 +#, c-format msgid "Cannot end process with PID %d: %s" -msgstr "Ezin da %d pid prozesua amaitu: %s" +msgstr "Ezin da %d PID prozesua amaitu: %s" -#: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "%u. orrialdea" -#: gtk/gtkpagesetup.c:596 gtk/gtkpapersize.c:838 gtk/gtkpapersize.c:880 +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 +#: ../gtk/gtkpapersize.c:880 msgid "Not a valid page setup file" msgstr "Ez da orria konfiguratzeko baliozko fitxategia" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 msgid "Any Printer" msgstr "Edozein inprimagailu" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 msgid "For portable documents" msgstr "Dokumentu eramangarrientzako" -#: gtk/gtkpagesetupunixdialog.c:809 +#: ../gtk/gtkpagesetupunixdialog.c:809 #, c-format msgid "" "Margins:\n" @@ -1429,52 +1514,51 @@ msgstr "" " Goian: %s %s\n" " Behean: %s %s" -#: gtk/gtkpagesetupunixdialog.c:858 gtk/gtkprintunixdialog.c:3284 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "Kudeatu tamaina pertsonalizatuak..." -#: gtk/gtkpagesetupunixdialog.c:909 +#: ../gtk/gtkpagesetupunixdialog.c:909 msgid "_Format for:" msgstr "_Formatua:" -#: gtk/gtkpagesetupunixdialog.c:931 gtk/gtkprintunixdialog.c:3456 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "_Paper-tamaina:" -#: gtk/gtkpagesetupunixdialog.c:962 +#: ../gtk/gtkpagesetupunixdialog.c:962 msgid "_Orientation:" msgstr "_Orientazioa:" -#: gtk/gtkpagesetupunixdialog.c:1026 gtk/gtkprintunixdialog.c:3518 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "Prestatu orrialdea" -#: gtk/gtkpathbar.c:154 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Goiko bidea" -#: gtk/gtkpathbar.c:156 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Azpiko bidea" -#: gtk/gtkpathbar.c:1497 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "Erroko fitxategi-sistema" -#: gtk/gtkprintbackend.c:749 +#: ../gtk/gtkprintbackend.c:749 msgid "Authentication" msgstr "Autentifikazioa" -#: gtk/gtkprinteroptionwidget.c:694 +#: ../gtk/gtkprinteroptionwidget.c:686 msgid "Not available" msgstr "Ez dago erabilgarri" -#: gtk/gtkprinteroptionwidget.c:794 -#, fuzzy +#: ../gtk/gtkprinteroptionwidget.c:786 msgid "Select a folder" -msgstr "Hautatu fitxategia" +msgstr "Hautatu karpeta" -#: gtk/gtkprinteroptionwidget.c:813 +#: ../gtk/gtkprinteroptionwidget.c:805 msgid "_Save in folder:" msgstr "Gorde _karpetan:" @@ -1482,187 +1566,184 @@ msgstr "Gorde _karpetan:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s ataza (%d)" -#: gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Hasierako egoera" -#: gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "inprimatzeko prestatzen" -#: gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Datuak sortzen" -#: gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Datuak bidaltzen" -#: gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "Zain" -#: gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Jaulkipenean blokeatuta" -#: gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Inprimatzen" -#: gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Amaituta" -#: gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Errorearekin amaituta" -#: gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "%d prestatzen" -#: gtk/gtkprintoperation.c:2272 gtk/gtkprintoperation.c:2902 -#, c-format +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Prestatzen" -#: gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "%d inprimatzen" -#: gtk/gtkprintoperation.c:2932 -#, c-format +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Errorea inprimatzeko aurrebista sortzean" -#: gtk/gtkprintoperation.c:2935 -#, c-format +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "Baliteke aldi baterako fitxategia ezin sortu izatea." -#: gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Errorea aurrebista abiaraztean" -#: gtk/gtkprintoperation-unix.c:470 gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Aplikazioa" -#: gtk/gtkprintoperation-win32.c:611 +#: ../gtk/gtkprintoperation-win32.c:611 msgid "Printer offline" msgstr "Inprimagailua lineaz kanpo" -#: gtk/gtkprintoperation-win32.c:613 +#: ../gtk/gtkprintoperation-win32.c:613 msgid "Out of paper" msgstr "Paperik ez" #. Translators: this is a printer status. -#: gtk/gtkprintoperation-win32.c:615 -#: modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../gtk/gtkprintoperation-win32.c:615 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Pausarazita" -#: gtk/gtkprintoperation-win32.c:617 +#: ../gtk/gtkprintoperation-win32.c:617 msgid "Need user intervention" msgstr "Erabiltzailearen laguntza behar da" -#: gtk/gtkprintoperation-win32.c:717 +#: ../gtk/gtkprintoperation-win32.c:717 msgid "Custom size" msgstr "Tamaina pertsonalizatua" -#: gtk/gtkprintoperation-win32.c:1539 +#: ../gtk/gtkprintoperation-win32.c:1539 msgid "No printer found" msgstr "Ez da inprimagailurik aurkitu" -#: gtk/gtkprintoperation-win32.c:1566 +#: ../gtk/gtkprintoperation-win32.c:1566 msgid "Invalid argument to CreateDC" msgstr "CreateDC-ren baliogabeko argumentua" -#: gtk/gtkprintoperation-win32.c:1602 gtk/gtkprintoperation-win32.c:1829 +#: ../gtk/gtkprintoperation-win32.c:1602 ../gtk/gtkprintoperation-win32.c:1829 msgid "Error from StartDoc" msgstr "Errorea StartDoc-etik" -#: gtk/gtkprintoperation-win32.c:1684 gtk/gtkprintoperation-win32.c:1707 -#: gtk/gtkprintoperation-win32.c:1755 +#: ../gtk/gtkprintoperation-win32.c:1684 ../gtk/gtkprintoperation-win32.c:1707 +#: ../gtk/gtkprintoperation-win32.c:1755 msgid "Not enough free memory" msgstr "Ez dago nahikoa memoria" -#: gtk/gtkprintoperation-win32.c:1760 +#: ../gtk/gtkprintoperation-win32.c:1760 msgid "Invalid argument to PrintDlgEx" msgstr "PrintDlgEx-en baliogabeko argumentua" -#: gtk/gtkprintoperation-win32.c:1765 +#: ../gtk/gtkprintoperation-win32.c:1765 msgid "Invalid pointer to PrintDlgEx" msgstr "PrintDlgEx-en baliogabeko erakuslea" -#: gtk/gtkprintoperation-win32.c:1770 +#: ../gtk/gtkprintoperation-win32.c:1770 msgid "Invalid handle to PrintDlgEx" msgstr "PrintDlgEx-en baliogabeko kudeatzailea" -#: gtk/gtkprintoperation-win32.c:1775 +#: ../gtk/gtkprintoperation-win32.c:1775 msgid "Unspecified error" msgstr "Zehaztugabeko errorea" -#: gtk/gtkprintunixdialog.c:618 +#: ../gtk/gtkprintunixdialog.c:618 msgid "Getting printer information failed" msgstr "Huts egin du inprimagailuaren informazioa lortzean" -#: gtk/gtkprintunixdialog.c:1873 +#: ../gtk/gtkprintunixdialog.c:1873 msgid "Getting printer information..." msgstr "Inprimagailuaren informazioa lortzen..." -#: gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "Inprimagailua" #. Translators: this is the header for the location column in the print dialog -#: gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "Kokalekua" #. Translators: this is the header for the printer status column in the print dialog -#: gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "Egoera" -#: gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "Barrutia" -#: gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "Orrialde _guztiak" -#: gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "_Uneko orrialdea" -#: gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "_Hautapena" -#: gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "_Orrialdeak:" -#: gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1670,28 +1751,28 @@ msgstr "" "Zehaztu orrialdeen barruti bat edo gehiago,\n" "adib. 1-3,7,11" -#: gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "Orrialdeak" -#: gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "Kopiak" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "_Kopiak:" -#: gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "_Alderatu" -#: gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "_Alderantzikatu" -#: gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "Orokorra" @@ -1701,168 +1782,168 @@ msgstr "Orokorra" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "Ezkerretik eskuinera, goitik behera" -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "Ezkerretik eskuinera, behetik gora" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "Eskuinetik ezkerrera, goitik behera" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "Eskuinetik ezkerrera, behetik gora" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "Goitik behera, ezkerretik eskuinera" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "Goitik behera, eskuinetik ezkerrera" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "Behetik gora, ezkerretik eskuinera" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "Behetik gora, eskuinetik ezkerrera" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: gtk/gtkprintunixdialog.c:3024 gtk/gtkprintunixdialog.c:3037 -#: modules/printbackends/cups/gtkprintbackendcups.c:3543 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Orrialdeak ordenatzea" -#: gtk/gtkprintunixdialog.c:3053 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "Ezkerretik eskuinera" -#: gtk/gtkprintunixdialog.c:3054 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "Eskuinetik ezkerrera" -#: gtk/gtkprintunixdialog.c:3066 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "Goitik behera" -#: gtk/gtkprintunixdialog.c:3067 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "Behetik gora" -#: gtk/gtkprintunixdialog.c:3307 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "Diseinua" -#: gtk/gtkprintunixdialog.c:3311 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "_Bi aldetatik:" -#: gtk/gtkprintunixdialog.c:3326 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "Orrialdeak _aldeko:" -#: gtk/gtkprintunixdialog.c:3343 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "Orrialdeen _ordena:" -#: gtk/gtkprintunixdialog.c:3359 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "Inprimatu _soilik:" #. In enum order -#: gtk/gtkprintunixdialog.c:3374 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "Orri guztiak" -#: gtk/gtkprintunixdialog.c:3375 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "Orri bikoitiak" -#: gtk/gtkprintunixdialog.c:3376 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "Orri bakoitiak" -#: gtk/gtkprintunixdialog.c:3379 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "E_skala:" -#: gtk/gtkprintunixdialog.c:3406 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "Papera" -#: gtk/gtkprintunixdialog.c:3410 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "Paper-_mota:" -#: gtk/gtkprintunixdialog.c:3425 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "Paper-iturria:" -#: gtk/gtkprintunixdialog.c:3440 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "Irteerako _erretilua:" -#: gtk/gtkprintunixdialog.c:3480 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "_Orientazioa:" #. In enum order -#: gtk/gtkprintunixdialog.c:3495 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "Bertikala" -#: gtk/gtkprintunixdialog.c:3496 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "Horizontala" -#: gtk/gtkprintunixdialog.c:3497 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "Alderantzizko bertikala" -#: gtk/gtkprintunixdialog.c:3498 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "Alderantzizko horizontala" -#: gtk/gtkprintunixdialog.c:3543 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "Lanaren xehetasunak" -#: gtk/gtkprintunixdialog.c:3549 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "_Lehentasuna:" -#: gtk/gtkprintunixdialog.c:3564 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "_Fakturaren datuak:" -#: gtk/gtkprintunixdialog.c:3582 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "Inprimatu dokumentua" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: gtk/gtkprintunixdialog.c:3591 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "_Orain" -#: gtk/gtkprintunixdialog.c:3602 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_Noiz:" @@ -1870,7 +1951,7 @@ msgstr "_Noiz:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: gtk/gtkprintunixdialog.c:3608 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1878,121 +1959,116 @@ msgstr "" "Zehaztu inprimatze-ordua,\n" "adib. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -#: gtk/gtkprintunixdialog.c:3618 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "Inprimatze-ordua" -#: gtk/gtkprintunixdialog.c:3634 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "_Itxaron" -#: gtk/gtkprintunixdialog.c:3635 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "Mantendu lana esplizitoki askatu arte" -#: gtk/gtkprintunixdialog.c:3655 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "Gehitu gainazaleko orria" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: gtk/gtkprintunixdialog.c:3664 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "_Aurretik:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: gtk/gtkprintunixdialog.c:3682 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "_Ondoren:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: gtk/gtkprintunixdialog.c:3700 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "Lana" -#: gtk/gtkprintunixdialog.c:3766 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "Aurreratua" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3804 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "Irudiaren kalitatea" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3808 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "Kolorea" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: gtk/gtkprintunixdialog.c:3813 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "Amaitzen" -#: gtk/gtkprintunixdialog.c:3823 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "Elkarrizketa-koadroko ezarpen batzuk gatazkan daude" -#: gtk/gtkprintunixdialog.c:3846 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "Inprimatu" -#: gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Ezin izan da include fitxategi hau aurkitu: \"%s\" " - -#: gtk/gtkrc.c:3470 gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Ezin izan da irudi-fitxategia pixmap_path-en aurkitu: \"%s\"" -#: gtk/gtkrecentaction.c:165 gtk/gtkrecentaction.c:173 -#: gtk/gtkrecentchoosermenu.c:615 gtk/gtkrecentchoosermenu.c:623 +#: ../gtk/gtkrecentaction.c:165 ../gtk/gtkrecentaction.c:173 +#: ../gtk/gtkrecentchoosermenu.c:608 ../gtk/gtkrecentchoosermenu.c:616 #, c-format msgid "This function is not implemented for widgets of class '%s'" msgstr "'%s' klasearen trepeten funtzioa oraindik garatu gabe dago" -#: gtk/gtkrecentchooserdefault.c:482 +#: ../gtk/gtkrecentchooserdefault.c:483 msgid "Select which type of documents are shown" msgstr "Hautatu erakutsiko diren fitxategi motak" -#: gtk/gtkrecentchooserdefault.c:1138 gtk/gtkrecentchooserdefault.c:1175 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "Ez da'%s' URIaren elementua aurkitu" -#: gtk/gtkrecentchooserdefault.c:1302 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Izenik gabeko iragazkia" -#: gtk/gtkrecentchooserdefault.c:1655 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "Ezin da elementua kendu" -#: gtk/gtkrecentchooserdefault.c:1699 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "Ezin da zerrenda garbitu" -#: gtk/gtkrecentchooserdefault.c:1783 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "Kopiatu _helbidea" -#: gtk/gtkrecentchooserdefault.c:1796 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "_Kendu zerrendatik" -#: gtk/gtkrecentchooserdefault.c:1805 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_Garbitu zerrenda" -#: gtk/gtkrecentchooserdefault.c:1819 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Erakutsi baliabide _pribatuak" @@ -2006,21 +2082,21 @@ msgstr "Erakutsi baliabide _pribatuak" #. * user appended or prepended custom menu items to the #. * recent chooser menu widget. #. -#: gtk/gtkrecentchoosermenu.c:369 +#: ../gtk/gtkrecentchoosermenu.c:362 msgid "No items found" msgstr "Ez da elementurik aurkitu" -#: gtk/gtkrecentchoosermenu.c:535 gtk/gtkrecentchoosermenu.c:591 +#: ../gtk/gtkrecentchoosermenu.c:528 ../gtk/gtkrecentchoosermenu.c:584 #, c-format msgid "No recently used resource found with URI `%s'" msgstr "Ez da duela gutxi erabilitako '%s' URIaren baliabiderik aurkitu" -#: gtk/gtkrecentchoosermenu.c:802 +#: ../gtk/gtkrecentchoosermenu.c:795 #, c-format msgid "Open '%s'" msgstr "Ireki '%s'" -#: gtk/gtkrecentchoosermenu.c:832 +#: ../gtk/gtkrecentchoosermenu.c:825 msgid "Unknown item" msgstr "Elementu ezezaguna" @@ -2029,7 +2105,7 @@ msgstr "Elementu ezezaguna" #. * the %s is the name of the item. Please keep the _ in front #. * of the number to give these menu items a mnemonic. #. -#: gtk/gtkrecentchoosermenu.c:843 +#: ../gtk/gtkrecentchoosermenu.c:836 #, c-format msgctxt "recent menu label" msgid "_%d. %s" @@ -2038,46 +2114,53 @@ msgstr "_%d. %s" #. This is the format that is used for items in a recent files menu. #. * The %d is the number of the item, the %s is the name of the item. #. -#: gtk/gtkrecentchoosermenu.c:848 +#: ../gtk/gtkrecentchoosermenu.c:841 #, c-format msgctxt "recent menu label" msgid "%d. %s" msgstr "%d. %s" -#: gtk/gtkrecentmanager.c:980 gtk/gtkrecentmanager.c:993 -#: gtk/gtkrecentmanager.c:1131 gtk/gtkrecentmanager.c:1141 -#: gtk/gtkrecentmanager.c:1194 gtk/gtkrecentmanager.c:1203 -#: gtk/gtkrecentmanager.c:1218 +#: ../gtk/gtkrecentmanager.c:1000 ../gtk/gtkrecentmanager.c:1013 +#: ../gtk/gtkrecentmanager.c:1150 ../gtk/gtkrecentmanager.c:1160 +#: ../gtk/gtkrecentmanager.c:1213 ../gtk/gtkrecentmanager.c:1222 +#: ../gtk/gtkrecentmanager.c:1237 #, c-format msgid "Unable to find an item with URI '%s'" msgstr "Ezin izan da '%s' URIa duen elementua aurkitu" -#: gtk/gtkspinner.c:456 +#: ../gtk/gtkrecentmanager.c:2437 +#, c-format +msgid "No registered application with name '%s' for item with URI '%s' found" +msgstr "" +"Ez da '%s' izenarekin erregistratutako aplikaziorik aurkitu " +"'%s' URIa duen elementuarentzako" + +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Birakaria" -#: gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Aurrerapenaren adierazle bisuala eskaintzen du" #. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate -#: gtk/gtkstock.c:313 +#: ../gtk/gtkstock.c:313 msgctxt "Stock label" msgid "Information" msgstr "Informazioa" -#: gtk/gtkstock.c:314 +#: ../gtk/gtkstock.c:314 msgctxt "Stock label" msgid "Warning" msgstr "Abisua" -#: gtk/gtkstock.c:315 +#: ../gtk/gtkstock.c:315 msgctxt "Stock label" msgid "Error" msgstr "Errorea" -#: gtk/gtkstock.c:316 +#: ../gtk/gtkstock.c:316 msgctxt "Stock label" msgid "Question" msgstr "Galdera" @@ -2085,698 +2168,714 @@ msgstr "Galdera" #. FIXME these need accelerators when appropriate, and #. * need the mnemonics to be rationalized #. -#: gtk/gtkstock.c:321 +#: ../gtk/gtkstock.c:321 msgctxt "Stock label" msgid "_About" msgstr "Honi _buruz" -#: gtk/gtkstock.c:322 +#: ../gtk/gtkstock.c:322 msgctxt "Stock label" msgid "_Add" msgstr "_Gehitu" -#: gtk/gtkstock.c:323 +#: ../gtk/gtkstock.c:323 msgctxt "Stock label" msgid "_Apply" msgstr "_Aplikatu" -#: gtk/gtkstock.c:324 +#: ../gtk/gtkstock.c:324 msgctxt "Stock label" msgid "_Bold" msgstr "_Lodia" -#: gtk/gtkstock.c:325 +#: ../gtk/gtkstock.c:325 msgctxt "Stock label" msgid "_Cancel" msgstr "_Utzi" -#: gtk/gtkstock.c:326 -#, fuzzy +#: ../gtk/gtkstock.c:326 msgctxt "Stock label" msgid "_CD-ROM" -msgstr "_CD-ROMa" +msgstr "CD-ROMa" -#: gtk/gtkstock.c:327 +#: ../gtk/gtkstock.c:327 msgctxt "Stock label" msgid "_Clear" msgstr "_Garbitu" -#: gtk/gtkstock.c:328 +#: ../gtk/gtkstock.c:328 msgctxt "Stock label" msgid "_Close" msgstr "It_xi" -#: gtk/gtkstock.c:329 +#: ../gtk/gtkstock.c:329 msgctxt "Stock label" msgid "C_onnect" msgstr "_Konektatu" -#: gtk/gtkstock.c:330 +#: ../gtk/gtkstock.c:330 msgctxt "Stock label" msgid "_Convert" msgstr "_Bihurtu" -#: gtk/gtkstock.c:331 +#: ../gtk/gtkstock.c:331 msgctxt "Stock label" msgid "_Copy" msgstr "_Kopiatu" -#: gtk/gtkstock.c:332 +#: ../gtk/gtkstock.c:332 msgctxt "Stock label" msgid "Cu_t" msgstr "_Ebaki" -#: gtk/gtkstock.c:333 +#: ../gtk/gtkstock.c:333 msgctxt "Stock label" msgid "_Delete" msgstr "_Ezabatu" -#: gtk/gtkstock.c:334 +#: ../gtk/gtkstock.c:334 msgctxt "Stock label" msgid "_Discard" msgstr "_Baztertu" -#: gtk/gtkstock.c:335 +#: ../gtk/gtkstock.c:335 msgctxt "Stock label" msgid "_Disconnect" msgstr "_Deskonektatu" -#: gtk/gtkstock.c:336 +#: ../gtk/gtkstock.c:336 msgctxt "Stock label" msgid "_Execute" msgstr "_Exekutatu" -#: gtk/gtkstock.c:337 +#: ../gtk/gtkstock.c:337 msgctxt "Stock label" msgid "_Edit" msgstr "_Editatu" -#: gtk/gtkstock.c:338 -#, fuzzy +#: ../gtk/gtkstock.c:338 msgctxt "Stock label" msgid "_File" -msgstr "_Fitxategiak" +msgstr "_Fitxategia" -#: gtk/gtkstock.c:339 +#: ../gtk/gtkstock.c:339 msgctxt "Stock label" msgid "_Find" msgstr "_Bilatu" -#: gtk/gtkstock.c:340 +#: ../gtk/gtkstock.c:340 msgctxt "Stock label" msgid "Find and _Replace" msgstr "Bilatu eta _ordeztu" -#: gtk/gtkstock.c:341 +#: ../gtk/gtkstock.c:341 msgctxt "Stock label" msgid "_Floppy" msgstr "_Disketea" -#: gtk/gtkstock.c:342 +#: ../gtk/gtkstock.c:342 msgctxt "Stock label" msgid "_Fullscreen" msgstr "_Pantaila osoa" -#: gtk/gtkstock.c:343 +#: ../gtk/gtkstock.c:343 msgctxt "Stock label" msgid "_Leave Fullscreen" msgstr "_Irten pantaila osotik" #. This is a navigation label as in "go to the bottom of the page" -#: gtk/gtkstock.c:345 +#: ../gtk/gtkstock.c:345 msgctxt "Stock label, navigation" msgid "_Bottom" msgstr "_Behean" #. This is a navigation label as in "go to the first page" -#: gtk/gtkstock.c:347 +#: ../gtk/gtkstock.c:347 msgctxt "Stock label, navigation" msgid "_First" msgstr "_Aurrenekora" #. This is a navigation label as in "go to the last page" -#: gtk/gtkstock.c:349 +#: ../gtk/gtkstock.c:349 msgctxt "Stock label, navigation" msgid "_Last" msgstr "_Azkenera" #. This is a navigation label as in "go to the top of the page" -#: gtk/gtkstock.c:351 +#: ../gtk/gtkstock.c:351 msgctxt "Stock label, navigation" msgid "_Top" msgstr "_Goian" #. This is a navigation label as in "go back" -#: gtk/gtkstock.c:353 +#: ../gtk/gtkstock.c:353 msgctxt "Stock label, navigation" msgid "_Back" msgstr "_Atzera" #. This is a navigation label as in "go down" -#: gtk/gtkstock.c:355 +#: ../gtk/gtkstock.c:355 msgctxt "Stock label, navigation" msgid "_Down" msgstr "_Behera" #. This is a navigation label as in "go forward" -#: gtk/gtkstock.c:357 +#: ../gtk/gtkstock.c:357 msgctxt "Stock label, navigation" msgid "_Forward" msgstr "A_urrera" #. This is a navigation label as in "go up" -#: gtk/gtkstock.c:359 +#: ../gtk/gtkstock.c:359 msgctxt "Stock label, navigation" msgid "_Up" msgstr "_Gora" -#: gtk/gtkstock.c:360 -#, fuzzy +#: ../gtk/gtkstock.c:360 msgctxt "Stock label" msgid "_Hard Disk" msgstr "_Disko gogorra" -#: gtk/gtkstock.c:361 +#: ../gtk/gtkstock.c:361 msgctxt "Stock label" msgid "_Help" msgstr "_Laguntza" -#: gtk/gtkstock.c:362 +#: ../gtk/gtkstock.c:362 msgctxt "Stock label" msgid "_Home" msgstr "_Karpeta nagusia" -#: gtk/gtkstock.c:363 +#: ../gtk/gtkstock.c:363 msgctxt "Stock label" msgid "Increase Indent" msgstr "Handitu koska" -#: gtk/gtkstock.c:364 +#: ../gtk/gtkstock.c:364 msgctxt "Stock label" msgid "Decrease Indent" msgstr "Txikitu koska" -#: gtk/gtkstock.c:365 +#: ../gtk/gtkstock.c:365 msgctxt "Stock label" msgid "_Index" msgstr "_Indizea" -#: gtk/gtkstock.c:366 +#: ../gtk/gtkstock.c:366 msgctxt "Stock label" msgid "_Information" msgstr "_Informazioa" -#: gtk/gtkstock.c:367 +#: ../gtk/gtkstock.c:367 msgctxt "Stock label" msgid "_Italic" msgstr "_Etzana" -#: gtk/gtkstock.c:368 +#: ../gtk/gtkstock.c:368 msgctxt "Stock label" msgid "_Jump to" msgstr "_Jauzi hona" #. This is about text justification, "centered text" -#: gtk/gtkstock.c:370 +#: ../gtk/gtkstock.c:370 msgctxt "Stock label" msgid "_Center" msgstr "_Zentratuta" #. This is about text justification -#: gtk/gtkstock.c:372 +#: ../gtk/gtkstock.c:372 msgctxt "Stock label" msgid "_Fill" msgstr "_Bete" #. This is about text justification, "left-justified text" -#: gtk/gtkstock.c:374 +#: ../gtk/gtkstock.c:374 msgctxt "Stock label" msgid "_Left" msgstr "E_zkerrean" #. This is about text justification, "right-justified text" -#: gtk/gtkstock.c:376 +#: ../gtk/gtkstock.c:376 msgctxt "Stock label" msgid "_Right" msgstr "E_skuinean" #. Media label, as in "fast forward" -#: gtk/gtkstock.c:379 +#: ../gtk/gtkstock.c:379 msgctxt "Stock label, media" msgid "_Forward" msgstr "A_urrera" #. Media label, as in "next song" -#: gtk/gtkstock.c:381 +#: ../gtk/gtkstock.c:381 msgctxt "Stock label, media" msgid "_Next" msgstr "_Hurrengoa" #. Media label, as in "pause music" -#: gtk/gtkstock.c:383 +#: ../gtk/gtkstock.c:383 msgctxt "Stock label, media" msgid "P_ause" msgstr "_Pausatu" #. Media label, as in "play music" -#: gtk/gtkstock.c:385 +#: ../gtk/gtkstock.c:385 msgctxt "Stock label, media" msgid "_Play" msgstr "_Erreproduzitu" #. Media label, as in "previous song" -#: gtk/gtkstock.c:387 +#: ../gtk/gtkstock.c:387 msgctxt "Stock label, media" msgid "Pre_vious" msgstr "_Aurrekoa" #. Media label -#: gtk/gtkstock.c:389 +#: ../gtk/gtkstock.c:389 msgctxt "Stock label, media" msgid "_Record" msgstr "_Grabatu" #. Media label -#: gtk/gtkstock.c:391 +#: ../gtk/gtkstock.c:391 msgctxt "Stock label, media" msgid "R_ewind" msgstr "_Birbobinatu" #. Media label -#: gtk/gtkstock.c:393 +#: ../gtk/gtkstock.c:393 msgctxt "Stock label, media" msgid "_Stop" msgstr "_Gelditu" -#: gtk/gtkstock.c:394 +#: ../gtk/gtkstock.c:394 msgctxt "Stock label" msgid "_Network" msgstr "_Sarea" -#: gtk/gtkstock.c:395 +#: ../gtk/gtkstock.c:395 msgctxt "Stock label" msgid "_New" msgstr "_Berria" -#: gtk/gtkstock.c:396 +#: ../gtk/gtkstock.c:396 msgctxt "Stock label" msgid "_No" msgstr "_Ez" -#: gtk/gtkstock.c:397 +#: ../gtk/gtkstock.c:397 msgctxt "Stock label" msgid "_OK" msgstr "_Ados" -#: gtk/gtkstock.c:398 +#: ../gtk/gtkstock.c:398 msgctxt "Stock label" msgid "_Open" msgstr "_Ireki" #. Page orientation -#: gtk/gtkstock.c:400 +#: ../gtk/gtkstock.c:400 msgctxt "Stock label" msgid "Landscape" msgstr "Horizontala" #. Page orientation -#: gtk/gtkstock.c:402 +#: ../gtk/gtkstock.c:402 msgctxt "Stock label" msgid "Portrait" msgstr "Bertikala" #. Page orientation -#: gtk/gtkstock.c:404 +#: ../gtk/gtkstock.c:404 msgctxt "Stock label" msgid "Reverse landscape" msgstr "Alderantzizko horizontala" #. Page orientation -#: gtk/gtkstock.c:406 +#: ../gtk/gtkstock.c:406 msgctxt "Stock label" msgid "Reverse portrait" msgstr "Alderantzizko bertikala" -#: gtk/gtkstock.c:407 +#: ../gtk/gtkstock.c:407 msgctxt "Stock label" msgid "Page Set_up" msgstr "Prestatu _orrialdea" -#: gtk/gtkstock.c:408 +#: ../gtk/gtkstock.c:408 msgctxt "Stock label" msgid "_Paste" msgstr "_Itsatsi" -#: gtk/gtkstock.c:409 +#: ../gtk/gtkstock.c:409 msgctxt "Stock label" msgid "_Preferences" msgstr "_Hobespenak" -#: gtk/gtkstock.c:410 +#: ../gtk/gtkstock.c:410 msgctxt "Stock label" msgid "_Print" msgstr "I_nprimatu" -#: gtk/gtkstock.c:411 +#: ../gtk/gtkstock.c:411 msgctxt "Stock label" msgid "Print Pre_view" msgstr "Inprimatzeko _aurrebista" -#: gtk/gtkstock.c:412 +#: ../gtk/gtkstock.c:412 msgctxt "Stock label" msgid "_Properties" msgstr "_Propietateak" -#: gtk/gtkstock.c:413 +#: ../gtk/gtkstock.c:413 msgctxt "Stock label" msgid "_Quit" msgstr "Irte_n" -#: gtk/gtkstock.c:414 +#: ../gtk/gtkstock.c:414 msgctxt "Stock label" msgid "_Redo" msgstr "_Berregin" -#: gtk/gtkstock.c:415 +#: ../gtk/gtkstock.c:415 msgctxt "Stock label" msgid "_Refresh" msgstr "_Freskatu" -#: gtk/gtkstock.c:416 +#: ../gtk/gtkstock.c:416 msgctxt "Stock label" msgid "_Remove" msgstr "_Kendu" -#: gtk/gtkstock.c:417 +#: ../gtk/gtkstock.c:417 msgctxt "Stock label" msgid "_Revert" msgstr "_Leheneratu" -#: gtk/gtkstock.c:418 +#: ../gtk/gtkstock.c:418 msgctxt "Stock label" msgid "_Save" msgstr "_Gorde" -#: gtk/gtkstock.c:419 +#: ../gtk/gtkstock.c:419 msgctxt "Stock label" msgid "Save _As" msgstr "Gorde _honela" -#: gtk/gtkstock.c:420 +#: ../gtk/gtkstock.c:420 msgctxt "Stock label" msgid "Select _All" msgstr "Hautatu _denak" -#: gtk/gtkstock.c:421 +#: ../gtk/gtkstock.c:421 msgctxt "Stock label" msgid "_Color" msgstr "_Kolorea" -#: gtk/gtkstock.c:422 +#: ../gtk/gtkstock.c:422 msgctxt "Stock label" msgid "_Font" msgstr "_Letra-tipoa" #. Sorting direction -#: gtk/gtkstock.c:424 +#: ../gtk/gtkstock.c:424 msgctxt "Stock label" msgid "_Ascending" msgstr "Go_rantz" #. Sorting direction -#: gtk/gtkstock.c:426 +#: ../gtk/gtkstock.c:426 msgctxt "Stock label" msgid "_Descending" msgstr "Be_herantz" -#: gtk/gtkstock.c:427 +#: ../gtk/gtkstock.c:427 msgctxt "Stock label" msgid "_Spell Check" msgstr "Ortogra_fia-egiaztapena" -#: gtk/gtkstock.c:428 +#: ../gtk/gtkstock.c:428 msgctxt "Stock label" msgid "_Stop" msgstr "_Gelditu" #. Font variant -#: gtk/gtkstock.c:430 +#: ../gtk/gtkstock.c:430 msgctxt "Stock label" msgid "_Strikethrough" msgstr "_Marratua" -#: gtk/gtkstock.c:431 +#: ../gtk/gtkstock.c:431 msgctxt "Stock label" msgid "_Undelete" msgstr "_Desezabatu" #. Font variant -#: gtk/gtkstock.c:433 +#: ../gtk/gtkstock.c:433 msgctxt "Stock label" msgid "_Underline" msgstr "_Azpimarratua" -#: gtk/gtkstock.c:434 +#: ../gtk/gtkstock.c:434 msgctxt "Stock label" msgid "_Undo" msgstr "_Desegin" -#: gtk/gtkstock.c:435 +#: ../gtk/gtkstock.c:435 msgctxt "Stock label" msgid "_Yes" msgstr "_Bai" #. Zoom -#: gtk/gtkstock.c:437 +#: ../gtk/gtkstock.c:437 msgctxt "Stock label" msgid "_Normal Size" msgstr "Tamaina _normala" #. Zoom -#: gtk/gtkstock.c:439 +#: ../gtk/gtkstock.c:439 msgctxt "Stock label" msgid "Best _Fit" msgstr "_Egokiena" -#: gtk/gtkstock.c:440 +#: ../gtk/gtkstock.c:440 msgctxt "Stock label" msgid "Zoom _In" msgstr "_Zooma handiagotu" -#: gtk/gtkstock.c:441 +#: ../gtk/gtkstock.c:441 msgctxt "Stock label" msgid "Zoom _Out" msgstr "Zooma _txikiagotu" -#: gtk/gtktextbufferrichtext.c:650 +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759❙) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:304 ../gtk/gtkswitch.c:353 ../gtk/gtkswitch.c:544 +msgctxt "switch" +msgid "ON" +msgstr "❙" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:312 ../gtk/gtkswitch.c:354 ../gtk/gtkswitch.c:560 +msgctxt "switch" +msgid "OFF" +msgstr "○" + +#: ../gtk/gtkswitch.c:959 +#| msgid "inch" +msgctxt "light switch widget" +msgid "Switch" +msgstr "Kommutadorea" + +#: ../gtk/gtkswitch.c:960 +msgid "Switches between on and off states" +msgstr "Aktibatuta eta desaktibatuta egoeren artean aldatzen du" + +#: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" msgstr "Errore ezezaguna %s serietik kentzen saiatzean" -#: gtk/gtktextbufferrichtext.c:709 +#: ../gtk/gtktextbufferrichtext.c:709 #, c-format msgid "No deserialize function found for format %s" msgstr "Ez da %s formatuaren serietik kentzeko funtziorik aurkitu" -#: gtk/gtktextbufferserialize.c:795 gtk/gtktextbufferserialize.c:821 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Bai \"id\" bai \"name\" aurkitu dira <%s> elementuan" -#: gtk/gtktextbufferserialize.c:805 gtk/gtktextbufferserialize.c:831 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "\"%s\" atributua birritan aurkitu da <%s> elementuan" -#: gtk/gtktextbufferserialize.c:845 -#, fuzzy, c-format +#: ../gtk/gtktextbufferserialize.c:852 +#, c-format msgid "<%s> element has invalid ID \"%s\"" -msgstr "<%s> elementuak \"%s\" id baliogabea du" +msgstr "<%s> elementuak \"%s\" ID baliogabea du" -#: gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s> elementuak ez du \"name\" ez \"id\" elementurik" -#: gtk/gtktextbufferserialize.c:942 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "\"%s\" atributua birritan errepikatuta <%s> elementu berean" -#: gtk/gtktextbufferserialize.c:960 gtk/gtktextbufferserialize.c:985 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "\"%s\" atributua ez da baliozkoa <%s> elementuan testuinguru honetan" -#: gtk/gtktextbufferserialize.c:1024 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "\"%s\" etiketa ez da definitu." -#: gtk/gtktextbufferserialize.c:1036 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Etiketa anonimoa aurkitu da eta etiketak ezin dira sortu." -#: gtk/gtktextbufferserialize.c:1047 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." -msgstr "" -"\"%s\" etiketa ez da existitzen bufferrean eta etiketak ezin dira sortu." +msgstr "\"%s\" etiketa ez da existitzen bufferrean eta etiketak ezin dira sortu." -#: gtk/gtktextbufferserialize.c:1146 gtk/gtktextbufferserialize.c:1221 -#: gtk/gtktextbufferserialize.c:1324 gtk/gtktextbufferserialize.c:1398 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Ez da onartzen <%s> elementua <%s>(r)en azpian jartzea" -#: gtk/gtktextbufferserialize.c:1177 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" ez da baliozko atributu-mota" -#: gtk/gtktextbufferserialize.c:1185 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" ez da baliozko atributu-izena" -#: gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format -msgid "" -"\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" +msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "Ezin izan da \"%s\" bihurtu \"%s\" atributuaren \"%s\" motara" -#: gtk/gtktextbufferserialize.c:1204 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" ez da \"%s\" atributuaren baliozko balioa" -#: gtk/gtktextbufferserialize.c:1289 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "\"%s\" etiketa lehendik definituta dago" -#: gtk/gtktextbufferserialize.c:1300 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "\"%s\" etiketak \"%s\" lehentasun baliogabea du" -#: gtk/gtktextbufferserialize.c:1353 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Testuko elementu kanpokoena izen behar du, ez <%s>" -#: gtk/gtktextbufferserialize.c:1362 gtk/gtktextbufferserialize.c:1378 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "<%s> elementua jadanik zehaztuta dago" -#: gtk/gtktextbufferserialize.c:1384 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr " elementua ezin da baino lehenago agertu" -#: gtk/gtktextbufferserialize.c:1784 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Serieko datuak formatu okerra du" -#: gtk/gtktextbufferserialize.c:1862 -msgid "" -"Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" +#: ../gtk/gtktextbufferserialize.c:1871 +msgid "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" "Serieko datuak formatu okerra du. Aurreneko atala ez da " "GTKTEXTBUFFERCONTENTS-0001" -#: gtk/gtktextutil.c:60 +#: ../gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" msgstr "LRM _Ezkerretik_eskuinera marka" -#: gtk/gtktextutil.c:61 +#: ../gtk/gtktextutil.c:61 msgid "RLM _Right-to-left mark" msgstr "RLM E_skuinetik_ezkerrera marka" -#: gtk/gtktextutil.c:62 +#: ../gtk/gtktextutil.c:62 msgid "LRE Left-to-right _embedding" msgstr "LRE Ezkerretik_eskuinera ka_psulatzea" -#: gtk/gtktextutil.c:63 +#: ../gtk/gtktextutil.c:63 msgid "RLE Right-to-left e_mbedding" msgstr "RLE Eskuinetik_ezkerrera _kapsulatzea" -#: gtk/gtktextutil.c:64 +#: ../gtk/gtktextutil.c:64 msgid "LRO Left-to-right _override" msgstr "LRO Ezkerretik_eskuinera _gainidaztea" -#: gtk/gtktextutil.c:65 +#: ../gtk/gtktextutil.c:65 msgid "RLO Right-to-left o_verride" msgstr "RLO Eskuinetik_ezkerrera gai_nidaztea" -#: gtk/gtktextutil.c:66 +#: ../gtk/gtktextutil.c:66 msgid "PDF _Pop directional formatting" msgstr "PDF _Formateatze direkzionala agertzea" -#: gtk/gtktextutil.c:67 +#: ../gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" msgstr "ZWS _Zero zabaleraren tartea" -#: gtk/gtktextutil.c:68 +#: ../gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" msgstr "ZWJ Zero zabaleraren _mihiztatzailea" -#: gtk/gtktextutil.c:69 +#: ../gtk/gtktextutil.c:69 msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ Zero zabaleraren ez-mihiztatzailea" -#: gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Ezin izan da gaiaren gailua lokalizatu module_path-en: \"%s\"," - -#: gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Uste gabeko '%s' hasierako etiketa %d lerroan, %d karakterea" -#: gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Uste gabeko datu-karakterea %d lerroan, %d karakterea" -#: gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Hutsik" -#: gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Bolumena" -#: gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Bolumena igo edo jaisten du" -#: gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Bolumena doitzen du" -#: gtk/gtkvolumebutton.c:94 gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Jaitsi bolumena" -#: gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Bolumena gutxiagotzen du" -#: gtk/gtkvolumebutton.c:100 gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Igo bolumena" -#: gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Bolumena handiagotzen du" -#: gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Mutututa" -#: gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Bolumen osoa" @@ -2785,932 +2884,932 @@ msgstr "Bolumen osoa" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" msgstr "%% %d" -#: gtk/paper_names_offsets.c:4 +#: ../gtk/paper_names_offsets.c:4 msgctxt "paper size" msgid "asme_f" msgstr "asme_f" -#: gtk/paper_names_offsets.c:5 +#: ../gtk/paper_names_offsets.c:5 msgctxt "paper size" msgid "A0x2" msgstr "A0x2" -#: gtk/paper_names_offsets.c:6 +#: ../gtk/paper_names_offsets.c:6 msgctxt "paper size" msgid "A0" msgstr "A0" -#: gtk/paper_names_offsets.c:7 +#: ../gtk/paper_names_offsets.c:7 msgctxt "paper size" msgid "A0x3" msgstr "A0x3" -#: gtk/paper_names_offsets.c:8 +#: ../gtk/paper_names_offsets.c:8 msgctxt "paper size" msgid "A1" msgstr "A1" -#: gtk/paper_names_offsets.c:9 +#: ../gtk/paper_names_offsets.c:9 msgctxt "paper size" msgid "A10" msgstr "A10" -#: gtk/paper_names_offsets.c:10 +#: ../gtk/paper_names_offsets.c:10 msgctxt "paper size" msgid "A1x3" msgstr "A1x3" -#: gtk/paper_names_offsets.c:11 +#: ../gtk/paper_names_offsets.c:11 msgctxt "paper size" msgid "A1x4" msgstr "A1x4" -#: gtk/paper_names_offsets.c:12 +#: ../gtk/paper_names_offsets.c:12 msgctxt "paper size" msgid "A2" msgstr "A2" -#: gtk/paper_names_offsets.c:13 +#: ../gtk/paper_names_offsets.c:13 msgctxt "paper size" msgid "A2x3" msgstr "A2x3" -#: gtk/paper_names_offsets.c:14 +#: ../gtk/paper_names_offsets.c:14 msgctxt "paper size" msgid "A2x4" msgstr "A2x4" -#: gtk/paper_names_offsets.c:15 +#: ../gtk/paper_names_offsets.c:15 msgctxt "paper size" msgid "A2x5" msgstr "A2x5" -#: gtk/paper_names_offsets.c:16 +#: ../gtk/paper_names_offsets.c:16 msgctxt "paper size" msgid "A3" msgstr "A3" -#: gtk/paper_names_offsets.c:17 +#: ../gtk/paper_names_offsets.c:17 msgctxt "paper size" msgid "A3 Extra" msgstr "A3 estra" -#: gtk/paper_names_offsets.c:18 +#: ../gtk/paper_names_offsets.c:18 msgctxt "paper size" msgid "A3x3" msgstr "A3x3" -#: gtk/paper_names_offsets.c:19 +#: ../gtk/paper_names_offsets.c:19 msgctxt "paper size" msgid "A3x4" msgstr "A3x4" -#: gtk/paper_names_offsets.c:20 +#: ../gtk/paper_names_offsets.c:20 msgctxt "paper size" msgid "A3x5" msgstr "A3x5" -#: gtk/paper_names_offsets.c:21 +#: ../gtk/paper_names_offsets.c:21 msgctxt "paper size" msgid "A3x6" msgstr "A3x6" -#: gtk/paper_names_offsets.c:22 +#: ../gtk/paper_names_offsets.c:22 msgctxt "paper size" msgid "A3x7" msgstr "A3x7" -#: gtk/paper_names_offsets.c:23 +#: ../gtk/paper_names_offsets.c:23 msgctxt "paper size" msgid "A4" msgstr "A4" -#: gtk/paper_names_offsets.c:24 +#: ../gtk/paper_names_offsets.c:24 msgctxt "paper size" msgid "A4 Extra" msgstr "A4 estra" -#: gtk/paper_names_offsets.c:25 +#: ../gtk/paper_names_offsets.c:25 msgctxt "paper size" msgid "A4 Tab" msgstr "A4 fitxa" -#: gtk/paper_names_offsets.c:26 +#: ../gtk/paper_names_offsets.c:26 msgctxt "paper size" msgid "A4x3" msgstr "A4x3" -#: gtk/paper_names_offsets.c:27 +#: ../gtk/paper_names_offsets.c:27 msgctxt "paper size" msgid "A4x4" msgstr "A4x4" -#: gtk/paper_names_offsets.c:28 +#: ../gtk/paper_names_offsets.c:28 msgctxt "paper size" msgid "A4x5" msgstr "A4x5" -#: gtk/paper_names_offsets.c:29 +#: ../gtk/paper_names_offsets.c:29 msgctxt "paper size" msgid "A4x6" msgstr "A4x6" -#: gtk/paper_names_offsets.c:30 +#: ../gtk/paper_names_offsets.c:30 msgctxt "paper size" msgid "A4x7" msgstr "A4x7" -#: gtk/paper_names_offsets.c:31 +#: ../gtk/paper_names_offsets.c:31 msgctxt "paper size" msgid "A4x8" msgstr "A4x8" -#: gtk/paper_names_offsets.c:32 +#: ../gtk/paper_names_offsets.c:32 msgctxt "paper size" msgid "A4x9" msgstr "A4x9" -#: gtk/paper_names_offsets.c:33 +#: ../gtk/paper_names_offsets.c:33 msgctxt "paper size" msgid "A5" msgstr "A5" -#: gtk/paper_names_offsets.c:34 +#: ../gtk/paper_names_offsets.c:34 msgctxt "paper size" msgid "A5 Extra" msgstr "A5 estra" -#: gtk/paper_names_offsets.c:35 +#: ../gtk/paper_names_offsets.c:35 msgctxt "paper size" msgid "A6" msgstr "A6" -#: gtk/paper_names_offsets.c:36 +#: ../gtk/paper_names_offsets.c:36 msgctxt "paper size" msgid "A7" msgstr "A7" -#: gtk/paper_names_offsets.c:37 +#: ../gtk/paper_names_offsets.c:37 msgctxt "paper size" msgid "A8" msgstr "A8" -#: gtk/paper_names_offsets.c:38 +#: ../gtk/paper_names_offsets.c:38 msgctxt "paper size" msgid "A9" msgstr "A9" -#: gtk/paper_names_offsets.c:39 +#: ../gtk/paper_names_offsets.c:39 msgctxt "paper size" msgid "B0" msgstr "B0" -#: gtk/paper_names_offsets.c:40 +#: ../gtk/paper_names_offsets.c:40 msgctxt "paper size" msgid "B1" msgstr "B1" -#: gtk/paper_names_offsets.c:41 +#: ../gtk/paper_names_offsets.c:41 msgctxt "paper size" msgid "B10" msgstr "B10" -#: gtk/paper_names_offsets.c:42 +#: ../gtk/paper_names_offsets.c:42 msgctxt "paper size" msgid "B2" msgstr "B2" -#: gtk/paper_names_offsets.c:43 +#: ../gtk/paper_names_offsets.c:43 msgctxt "paper size" msgid "B3" msgstr "B3" -#: gtk/paper_names_offsets.c:44 +#: ../gtk/paper_names_offsets.c:44 msgctxt "paper size" msgid "B4" msgstr "B4" -#: gtk/paper_names_offsets.c:45 +#: ../gtk/paper_names_offsets.c:45 msgctxt "paper size" msgid "B5" msgstr "B5" -#: gtk/paper_names_offsets.c:46 +#: ../gtk/paper_names_offsets.c:46 msgctxt "paper size" msgid "B5 Extra" msgstr "B5 estra" -#: gtk/paper_names_offsets.c:47 +#: ../gtk/paper_names_offsets.c:47 msgctxt "paper size" msgid "B6" msgstr "B6" -#: gtk/paper_names_offsets.c:48 +#: ../gtk/paper_names_offsets.c:48 msgctxt "paper size" msgid "B6/C4" msgstr "B6/C4" -#: gtk/paper_names_offsets.c:49 +#: ../gtk/paper_names_offsets.c:49 msgctxt "paper size" msgid "B7" msgstr "B7" -#: gtk/paper_names_offsets.c:50 +#: ../gtk/paper_names_offsets.c:50 msgctxt "paper size" msgid "B8" msgstr "B8" -#: gtk/paper_names_offsets.c:51 +#: ../gtk/paper_names_offsets.c:51 msgctxt "paper size" msgid "B9" msgstr "B9" -#: gtk/paper_names_offsets.c:52 +#: ../gtk/paper_names_offsets.c:52 msgctxt "paper size" msgid "C0" msgstr "C0" -#: gtk/paper_names_offsets.c:53 +#: ../gtk/paper_names_offsets.c:53 msgctxt "paper size" msgid "C1" msgstr "C1" -#: gtk/paper_names_offsets.c:54 +#: ../gtk/paper_names_offsets.c:54 msgctxt "paper size" msgid "C10" msgstr "C10" -#: gtk/paper_names_offsets.c:55 +#: ../gtk/paper_names_offsets.c:55 msgctxt "paper size" msgid "C2" msgstr "C2" -#: gtk/paper_names_offsets.c:56 +#: ../gtk/paper_names_offsets.c:56 msgctxt "paper size" msgid "C3" msgstr "C3" -#: gtk/paper_names_offsets.c:57 +#: ../gtk/paper_names_offsets.c:57 msgctxt "paper size" msgid "C4" msgstr "C4" -#: gtk/paper_names_offsets.c:58 +#: ../gtk/paper_names_offsets.c:58 msgctxt "paper size" msgid "C5" msgstr "C5" -#: gtk/paper_names_offsets.c:59 +#: ../gtk/paper_names_offsets.c:59 msgctxt "paper size" msgid "C6" msgstr "C6" -#: gtk/paper_names_offsets.c:60 +#: ../gtk/paper_names_offsets.c:60 msgctxt "paper size" msgid "C6/C5" msgstr "C6/C5" -#: gtk/paper_names_offsets.c:61 +#: ../gtk/paper_names_offsets.c:61 msgctxt "paper size" msgid "C7" msgstr "C7" -#: gtk/paper_names_offsets.c:62 +#: ../gtk/paper_names_offsets.c:62 msgctxt "paper size" msgid "C7/C6" msgstr "C7/C6" -#: gtk/paper_names_offsets.c:63 +#: ../gtk/paper_names_offsets.c:63 msgctxt "paper size" msgid "C8" msgstr "C8" -#: gtk/paper_names_offsets.c:64 +#: ../gtk/paper_names_offsets.c:64 msgctxt "paper size" msgid "C9" msgstr "C9" -#: gtk/paper_names_offsets.c:65 +#: ../gtk/paper_names_offsets.c:65 msgctxt "paper size" msgid "DL Envelope" msgstr "DL gutun-azala" -#: gtk/paper_names_offsets.c:66 +#: ../gtk/paper_names_offsets.c:66 msgctxt "paper size" msgid "RA0" msgstr "RA0" -#: gtk/paper_names_offsets.c:67 +#: ../gtk/paper_names_offsets.c:67 msgctxt "paper size" msgid "RA1" msgstr "RA1" -#: gtk/paper_names_offsets.c:68 +#: ../gtk/paper_names_offsets.c:68 msgctxt "paper size" msgid "RA2" msgstr "RA2" -#: gtk/paper_names_offsets.c:69 +#: ../gtk/paper_names_offsets.c:69 msgctxt "paper size" msgid "SRA0" msgstr "SRA0" -#: gtk/paper_names_offsets.c:70 +#: ../gtk/paper_names_offsets.c:70 msgctxt "paper size" msgid "SRA1" msgstr "SRA1" -#: gtk/paper_names_offsets.c:71 +#: ../gtk/paper_names_offsets.c:71 msgctxt "paper size" msgid "SRA2" msgstr "SRA2" -#: gtk/paper_names_offsets.c:72 +#: ../gtk/paper_names_offsets.c:72 msgctxt "paper size" msgid "JB0" msgstr "JB0" -#: gtk/paper_names_offsets.c:73 +#: ../gtk/paper_names_offsets.c:73 msgctxt "paper size" msgid "JB1" msgstr "JB1" -#: gtk/paper_names_offsets.c:74 +#: ../gtk/paper_names_offsets.c:74 msgctxt "paper size" msgid "JB10" msgstr "JB10" -#: gtk/paper_names_offsets.c:75 +#: ../gtk/paper_names_offsets.c:75 msgctxt "paper size" msgid "JB2" msgstr "JB2" -#: gtk/paper_names_offsets.c:76 +#: ../gtk/paper_names_offsets.c:76 msgctxt "paper size" msgid "JB3" msgstr "JB3" -#: gtk/paper_names_offsets.c:77 +#: ../gtk/paper_names_offsets.c:77 msgctxt "paper size" msgid "JB4" msgstr "JB4" -#: gtk/paper_names_offsets.c:78 +#: ../gtk/paper_names_offsets.c:78 msgctxt "paper size" msgid "JB5" msgstr "JB5" -#: gtk/paper_names_offsets.c:79 +#: ../gtk/paper_names_offsets.c:79 msgctxt "paper size" msgid "JB6" msgstr "JB6" -#: gtk/paper_names_offsets.c:80 +#: ../gtk/paper_names_offsets.c:80 msgctxt "paper size" msgid "JB7" msgstr "JB7" -#: gtk/paper_names_offsets.c:81 +#: ../gtk/paper_names_offsets.c:81 msgctxt "paper size" msgid "JB8" msgstr "JB8" -#: gtk/paper_names_offsets.c:82 +#: ../gtk/paper_names_offsets.c:82 msgctxt "paper size" msgid "JB9" msgstr "JB9" -#: gtk/paper_names_offsets.c:83 +#: ../gtk/paper_names_offsets.c:83 msgctxt "paper size" msgid "jis exec" msgstr "jis exec" -#: gtk/paper_names_offsets.c:84 +#: ../gtk/paper_names_offsets.c:84 msgctxt "paper size" msgid "Choukei 2 Envelope" msgstr "Choukei 2 gutun-azala" -#: gtk/paper_names_offsets.c:85 +#: ../gtk/paper_names_offsets.c:85 msgctxt "paper size" msgid "Choukei 3 Envelope" msgstr "Choukei 3 gutun-azala" -#: gtk/paper_names_offsets.c:86 +#: ../gtk/paper_names_offsets.c:86 msgctxt "paper size" msgid "Choukei 4 Envelope" msgstr "Choukei 4 gutun-azala" -#: gtk/paper_names_offsets.c:87 +#: ../gtk/paper_names_offsets.c:87 msgctxt "paper size" msgid "hagaki (postcard)" msgstr "hagaki (posta-txartela)" -#: gtk/paper_names_offsets.c:88 +#: ../gtk/paper_names_offsets.c:88 msgctxt "paper size" msgid "kahu Envelope" msgstr "Kahu gutun-azala" -#: gtk/paper_names_offsets.c:89 +#: ../gtk/paper_names_offsets.c:89 msgctxt "paper size" msgid "kaku2 Envelope" msgstr "Kaku2 gutun-azala" -#: gtk/paper_names_offsets.c:90 +#: ../gtk/paper_names_offsets.c:90 msgctxt "paper size" msgid "oufuku (reply postcard)" msgstr "oufuku (erantzuteko posta-txartela)" -#: gtk/paper_names_offsets.c:91 +#: ../gtk/paper_names_offsets.c:91 msgctxt "paper size" msgid "you4 Envelope" msgstr "you4 gutun-azala" -#: gtk/paper_names_offsets.c:92 +#: ../gtk/paper_names_offsets.c:92 msgctxt "paper size" msgid "10x11" msgstr "10x11" -#: gtk/paper_names_offsets.c:93 +#: ../gtk/paper_names_offsets.c:93 msgctxt "paper size" msgid "10x13" msgstr "10x13" -#: gtk/paper_names_offsets.c:94 +#: ../gtk/paper_names_offsets.c:94 msgctxt "paper size" msgid "10x14" msgstr "10x14" -#: gtk/paper_names_offsets.c:95 gtk/paper_names_offsets.c:96 +#: ../gtk/paper_names_offsets.c:95 ../gtk/paper_names_offsets.c:96 msgctxt "paper size" msgid "10x15" msgstr "10x15" -#: gtk/paper_names_offsets.c:97 +#: ../gtk/paper_names_offsets.c:97 msgctxt "paper size" msgid "11x12" msgstr "11x12" -#: gtk/paper_names_offsets.c:98 +#: ../gtk/paper_names_offsets.c:98 msgctxt "paper size" msgid "11x15" msgstr "11x15" -#: gtk/paper_names_offsets.c:99 +#: ../gtk/paper_names_offsets.c:99 msgctxt "paper size" msgid "12x19" msgstr "12x19" -#: gtk/paper_names_offsets.c:100 +#: ../gtk/paper_names_offsets.c:100 msgctxt "paper size" msgid "5x7" msgstr "5x7" -#: gtk/paper_names_offsets.c:101 +#: ../gtk/paper_names_offsets.c:101 msgctxt "paper size" msgid "6x9 Envelope" msgstr "6x9 gutun-azala" -#: gtk/paper_names_offsets.c:102 +#: ../gtk/paper_names_offsets.c:102 msgctxt "paper size" msgid "7x9 Envelope" msgstr "7x9 gutun-azala" -#: gtk/paper_names_offsets.c:103 +#: ../gtk/paper_names_offsets.c:103 msgctxt "paper size" msgid "9x11 Envelope" msgstr "9x11 gutun-azala" -#: gtk/paper_names_offsets.c:104 +#: ../gtk/paper_names_offsets.c:104 msgctxt "paper size" msgid "a2 Envelope" msgstr "a2 gutun-azala" -#: gtk/paper_names_offsets.c:105 +#: ../gtk/paper_names_offsets.c:105 msgctxt "paper size" msgid "Arch A" msgstr "Arch A" -#: gtk/paper_names_offsets.c:106 +#: ../gtk/paper_names_offsets.c:106 msgctxt "paper size" msgid "Arch B" msgstr "Arch B" -#: gtk/paper_names_offsets.c:107 +#: ../gtk/paper_names_offsets.c:107 msgctxt "paper size" msgid "Arch C" msgstr "Arch C" -#: gtk/paper_names_offsets.c:108 +#: ../gtk/paper_names_offsets.c:108 msgctxt "paper size" msgid "Arch D" msgstr "Arch D" -#: gtk/paper_names_offsets.c:109 +#: ../gtk/paper_names_offsets.c:109 msgctxt "paper size" msgid "Arch E" msgstr "Arch E" -#: gtk/paper_names_offsets.c:110 +#: ../gtk/paper_names_offsets.c:110 msgctxt "paper size" msgid "b-plus" msgstr "b-plus" -#: gtk/paper_names_offsets.c:111 +#: ../gtk/paper_names_offsets.c:111 msgctxt "paper size" msgid "c" msgstr "c" -#: gtk/paper_names_offsets.c:112 +#: ../gtk/paper_names_offsets.c:112 msgctxt "paper size" msgid "c5 Envelope" msgstr "c5 gutun-azala" -#: gtk/paper_names_offsets.c:113 +#: ../gtk/paper_names_offsets.c:113 msgctxt "paper size" msgid "d" msgstr "d" -#: gtk/paper_names_offsets.c:114 +#: ../gtk/paper_names_offsets.c:114 msgctxt "paper size" msgid "e" msgstr "e" -#: gtk/paper_names_offsets.c:115 +#: ../gtk/paper_names_offsets.c:115 msgctxt "paper size" msgid "edp" msgstr "edp" -#: gtk/paper_names_offsets.c:116 +#: ../gtk/paper_names_offsets.c:116 msgctxt "paper size" msgid "European edp" msgstr "Europako edp" -#: gtk/paper_names_offsets.c:117 +#: ../gtk/paper_names_offsets.c:117 msgctxt "paper size" msgid "Executive" msgstr "Exekutiboa" -#: gtk/paper_names_offsets.c:118 +#: ../gtk/paper_names_offsets.c:118 msgctxt "paper size" msgid "f" msgstr "f" -#: gtk/paper_names_offsets.c:119 +#: ../gtk/paper_names_offsets.c:119 msgctxt "paper size" msgid "FanFold European" msgstr "Europako FanFold" -#: gtk/paper_names_offsets.c:120 +#: ../gtk/paper_names_offsets.c:120 msgctxt "paper size" msgid "FanFold US" msgstr "AEBko FanFold" -#: gtk/paper_names_offsets.c:121 +#: ../gtk/paper_names_offsets.c:121 msgctxt "paper size" msgid "FanFold German Legal" msgstr "Alemaniako FanFold legala" -#: gtk/paper_names_offsets.c:122 +#: ../gtk/paper_names_offsets.c:122 msgctxt "paper size" msgid "Government Legal" msgstr "Gobernuaren legala" -#: gtk/paper_names_offsets.c:123 +#: ../gtk/paper_names_offsets.c:123 msgctxt "paper size" msgid "Government Letter" msgstr "Gobernuaren gutuna" -#: gtk/paper_names_offsets.c:124 +#: ../gtk/paper_names_offsets.c:124 msgctxt "paper size" msgid "Index 3x5" msgstr "Indizea 3x5" -#: gtk/paper_names_offsets.c:125 +#: ../gtk/paper_names_offsets.c:125 msgctxt "paper size" msgid "Index 4x6 (postcard)" msgstr "Indizea 4x6 (posta-txartela)" -#: gtk/paper_names_offsets.c:126 +#: ../gtk/paper_names_offsets.c:126 msgctxt "paper size" msgid "Index 4x6 ext" msgstr "Indizea 4x6 est." -#: gtk/paper_names_offsets.c:127 +#: ../gtk/paper_names_offsets.c:127 msgctxt "paper size" msgid "Index 5x8" msgstr "Indizea 5x8" -#: gtk/paper_names_offsets.c:128 +#: ../gtk/paper_names_offsets.c:128 msgctxt "paper size" msgid "Invoice" msgstr "Faktura" -#: gtk/paper_names_offsets.c:129 +#: ../gtk/paper_names_offsets.c:129 msgctxt "paper size" msgid "Tabloid" msgstr "Tabloidea" -#: gtk/paper_names_offsets.c:130 +#: ../gtk/paper_names_offsets.c:130 msgctxt "paper size" msgid "US Legal" msgstr "US legala" -#: gtk/paper_names_offsets.c:131 +#: ../gtk/paper_names_offsets.c:131 msgctxt "paper size" msgid "US Legal Extra" msgstr "US legala estra" -#: gtk/paper_names_offsets.c:132 +#: ../gtk/paper_names_offsets.c:132 msgctxt "paper size" msgid "US Letter" msgstr "US gutuna" -#: gtk/paper_names_offsets.c:133 +#: ../gtk/paper_names_offsets.c:133 msgctxt "paper size" msgid "US Letter Extra" msgstr "US gutuna estra" -#: gtk/paper_names_offsets.c:134 +#: ../gtk/paper_names_offsets.c:134 msgctxt "paper size" msgid "US Letter Plus" msgstr "US gutuna plus" -#: gtk/paper_names_offsets.c:135 +#: ../gtk/paper_names_offsets.c:135 msgctxt "paper size" msgid "Monarch Envelope" msgstr "Monarka gutun-azala" -#: gtk/paper_names_offsets.c:136 +#: ../gtk/paper_names_offsets.c:136 msgctxt "paper size" msgid "#10 Envelope" msgstr "#10 gutun-azala" -#: gtk/paper_names_offsets.c:137 +#: ../gtk/paper_names_offsets.c:137 msgctxt "paper size" msgid "#11 Envelope" msgstr "#11 gutun-azala" -#: gtk/paper_names_offsets.c:138 +#: ../gtk/paper_names_offsets.c:138 msgctxt "paper size" msgid "#12 Envelope" msgstr "#12 gutun-azala" -#: gtk/paper_names_offsets.c:139 +#: ../gtk/paper_names_offsets.c:139 msgctxt "paper size" msgid "#14 Envelope" msgstr "#14 gutun-azala" -#: gtk/paper_names_offsets.c:140 +#: ../gtk/paper_names_offsets.c:140 msgctxt "paper size" msgid "#9 Envelope" msgstr "#9 gutun-azala" -#: gtk/paper_names_offsets.c:141 +#: ../gtk/paper_names_offsets.c:141 msgctxt "paper size" msgid "Personal Envelope" msgstr "Gutun-azal pertsonala" -#: gtk/paper_names_offsets.c:142 +#: ../gtk/paper_names_offsets.c:142 msgctxt "paper size" msgid "Quarto" msgstr "Laurdena" -#: gtk/paper_names_offsets.c:143 +#: ../gtk/paper_names_offsets.c:143 msgctxt "paper size" msgid "Super A" msgstr "Super A" -#: gtk/paper_names_offsets.c:144 +#: ../gtk/paper_names_offsets.c:144 msgctxt "paper size" msgid "Super B" msgstr "Super B" -#: gtk/paper_names_offsets.c:145 +#: ../gtk/paper_names_offsets.c:145 msgctxt "paper size" msgid "Wide Format" msgstr "Formatu zabala" -#: gtk/paper_names_offsets.c:146 +#: ../gtk/paper_names_offsets.c:146 msgctxt "paper size" msgid "Dai-pa-kai" msgstr "Dai-pa-kai" -#: gtk/paper_names_offsets.c:147 +#: ../gtk/paper_names_offsets.c:147 msgctxt "paper size" msgid "Folio" msgstr "Folioa" -#: gtk/paper_names_offsets.c:148 +#: ../gtk/paper_names_offsets.c:148 msgctxt "paper size" msgid "Folio sp" msgstr "Folioa sp" -#: gtk/paper_names_offsets.c:149 +#: ../gtk/paper_names_offsets.c:149 msgctxt "paper size" msgid "Invite Envelope" msgstr "Gonbidapen gutun-azala" -#: gtk/paper_names_offsets.c:150 +#: ../gtk/paper_names_offsets.c:150 msgctxt "paper size" msgid "Italian Envelope" msgstr "Italiako gutun-azala" -#: gtk/paper_names_offsets.c:151 +#: ../gtk/paper_names_offsets.c:151 msgctxt "paper size" msgid "juuro-ku-kai" msgstr "juuro-ku-kai" -#: gtk/paper_names_offsets.c:152 +#: ../gtk/paper_names_offsets.c:152 msgctxt "paper size" msgid "pa-kai" msgstr "pa-kai" -#: gtk/paper_names_offsets.c:153 +#: ../gtk/paper_names_offsets.c:153 msgctxt "paper size" msgid "Postfix Envelope" msgstr "Postfix gutun-azala" -#: gtk/paper_names_offsets.c:154 +#: ../gtk/paper_names_offsets.c:154 msgctxt "paper size" msgid "Small Photo" msgstr "Argazki txikia" -#: gtk/paper_names_offsets.c:155 +#: ../gtk/paper_names_offsets.c:155 msgctxt "paper size" msgid "prc1 Envelope" msgstr "prc1 gutun-azala" -#: gtk/paper_names_offsets.c:156 +#: ../gtk/paper_names_offsets.c:156 msgctxt "paper size" msgid "prc10 Envelope" msgstr "prc10 gutun-azala" -#: gtk/paper_names_offsets.c:157 +#: ../gtk/paper_names_offsets.c:157 msgctxt "paper size" msgid "prc 16k" msgstr "prc 16k" -#: gtk/paper_names_offsets.c:158 +#: ../gtk/paper_names_offsets.c:158 msgctxt "paper size" msgid "prc2 Envelope" msgstr "prc2 gutun-azala" -#: gtk/paper_names_offsets.c:159 +#: ../gtk/paper_names_offsets.c:159 msgctxt "paper size" msgid "prc3 Envelope" msgstr "prc3 gutun-azala" -#: gtk/paper_names_offsets.c:160 +#: ../gtk/paper_names_offsets.c:160 msgctxt "paper size" msgid "prc 32k" msgstr "prc 32k" -#: gtk/paper_names_offsets.c:161 +#: ../gtk/paper_names_offsets.c:161 msgctxt "paper size" msgid "prc4 Envelope" msgstr "prc4 gutun-azala" -#: gtk/paper_names_offsets.c:162 +#: ../gtk/paper_names_offsets.c:162 msgctxt "paper size" msgid "prc5 Envelope" msgstr "prc5 gutun-azala" -#: gtk/paper_names_offsets.c:163 +#: ../gtk/paper_names_offsets.c:163 msgctxt "paper size" msgid "prc6 Envelope" msgstr "prc6 gutun-azala" -#: gtk/paper_names_offsets.c:164 +#: ../gtk/paper_names_offsets.c:164 msgctxt "paper size" msgid "prc7 Envelope" msgstr "prc7 gutun-azala" -#: gtk/paper_names_offsets.c:165 +#: ../gtk/paper_names_offsets.c:165 msgctxt "paper size" msgid "prc8 Envelope" msgstr "prc8 gutun-azala" -#: gtk/paper_names_offsets.c:166 +#: ../gtk/paper_names_offsets.c:166 msgctxt "paper size" msgid "prc9 Envelope" msgstr "prc9 gutun-azala" -#: gtk/paper_names_offsets.c:167 +#: ../gtk/paper_names_offsets.c:167 msgctxt "paper size" msgid "ROC 16k" msgstr "ROC 16k" -#: gtk/paper_names_offsets.c:168 +#: ../gtk/paper_names_offsets.c:168 msgctxt "paper size" msgid "ROC 8k" msgstr "ROC 8k" -#: gtk/updateiconcache.c:492 gtk/updateiconcache.c:552 +#: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 #, c-format msgid "different idatas found for symlinked '%s' and '%s'\n" msgstr "'%s' eta '%s' esteken 'idata' ezberdinak aurkitu dira\n" -#: gtk/updateiconcache.c:1374 +#: ../gtk/updateiconcache.c:1374 #, c-format msgid "Failed to write header\n" msgstr "Huts egin du goiburukoa idaztean\n" -#: gtk/updateiconcache.c:1380 +#: ../gtk/updateiconcache.c:1380 #, c-format msgid "Failed to write hash table\n" msgstr "Huts egin du 'hash' taula idaztean\n" -#: gtk/updateiconcache.c:1386 +#: ../gtk/updateiconcache.c:1386 #, c-format msgid "Failed to write folder index\n" msgstr "Huts egin du karpetaren indizea idaztean\n" -#: gtk/updateiconcache.c:1394 +#: ../gtk/updateiconcache.c:1394 #, c-format msgid "Failed to rewrite header\n" msgstr "Huts egin du goiburukoa berridaztean\n" -#: gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Huts egin du '%s' fitxategia irekitzean: %s\n" -#: gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Ezin izan da cache fitxategian idatzi: %s\n" -#: gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "Sortutako cache-a baliogabea da.\n" -#: gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "%s ezin izan da %s izenagatik aldatu: %s, %s kentzen orduan.\n" -#: gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "%s ezin izan da %s izenagatik aldatu: %s\n" -#: gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "%s ezin izan da jatorriko %s izenera aldatu: %s\n" -#: gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Cache fitxategia ongi sortu da.\n" -#: gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Gainidatzi existitzen den cache-a, nahiz eta eguneratuta egon" -#: gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Ez egiaztatu index.theme dagoen edo ez" -#: gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Ez txertatu irudiaren daturik cache-an" -#: gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Kanporatu C goiburuko fitxategia" -#: gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Desaktibatu hitzez hitzeko irteera" -#: gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Balidatu ikonoen cache-a" -#: gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "Ezin da fitxategia aurkitu: %s\n" -#: gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Ez da baliozko ikonoen cache-a: %s\n" -#: gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "Ez dago gaiaren indize-fitxategirik.\n" -#: gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3720,310 +3819,308 @@ msgstr "" "Ikono-cache bat sortzea nahi baduzu erabili --ignore-theme-index.\n" #. ID -#: modules/input/imam-et.c:454 +#: ../modules/input/imam-et.c:454 msgid "Amharic (EZ+)" msgstr "Amharic (EZ+)" #. ID -#: modules/input/imcedilla.c:92 +#: ../modules/input/imcedilla.c:92 msgid "Cedilla" msgstr "Ze hautsia" #. ID -#: modules/input/imcyrillic-translit.c:217 +#: ../modules/input/imcyrillic-translit.c:217 msgid "Cyrillic (Transliterated)" msgstr "Zirilikoa (Transliteratua)" #. ID -#: modules/input/iminuktitut.c:127 +#: ../modules/input/iminuktitut.c:127 msgid "Inuktitut (Transliterated)" msgstr "Inukitut (Transliteratua)" #. ID -#: modules/input/imipa.c:145 +#: ../modules/input/imipa.c:145 msgid "IPA" msgstr "IPA" #. ID -#: modules/input/immultipress.c:31 +#: ../modules/input/immultipress.c:31 msgid "Multipress" msgstr "Hainbat pultsazio" #. ID -#: modules/input/imthai.c:35 +#: ../modules/input/imthai.c:35 msgid "Thai-Lao" msgstr "Thailandiera-Laosera" #. ID -#: modules/input/imti-er.c:453 +#: ../modules/input/imti-er.c:453 msgid "Tigrigna-Eritrean (EZ+)" msgstr "Tigrigna-Eritrearra (EZ+)" #. ID -#: modules/input/imti-et.c:453 +#: ../modules/input/imti-et.c:453 msgid "Tigrigna-Ethiopian (EZ+)" msgstr "Tigrigna-Etiopiarra (EZ+)" #. ID -#: modules/input/imviqr.c:244 +#: ../modules/input/imviqr.c:244 msgid "Vietnamese (VIQR)" msgstr "Vietnamdarra (VIQR)" #. ID -#: modules/input/imxim.c:28 +#: ../modules/input/imxim.c:28 msgid "X Input Method" msgstr "X sarrera-metodoa" -#: modules/printbackends/cups/gtkprintbackendcups.c:811 -#: modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "Erabiltzaile-izena:" -#: modules/printbackends/cups/gtkprintbackendcups.c:812 -#: modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "Pasahitza:" -#: modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "Autentifikazioa behar da fitxategia %s(e)tik lortzeko" - -#: modules/printbackends/cups/gtkprintbackendcups.c:854 -#: modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" -msgstr "" -"Autentifikazioa behar da '%s' dokumentua '%s' inprimagailuan inprimatzeko" +msgstr "Autentifikazioa behar da '%s' dokumentua '%s' inprimagailuan inprimatzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Autentifikazioa behar da dokumentu bat '%s'(e)n inprimatzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:860 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "Autentifikazioa behar da '%s' lanaren atributuak lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "Autentifikazioa behar da lan baten atributuak lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:866 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "Autentifikazioa behar da '%s' inprimagailuaren atributuak lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:868 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "Autentifikazioa behar da inprimagailu baten atributuak lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:871 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "Autentifikazioa behar da %s(r)en inprimagailu lehenetsia lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:874 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Autentifikazioa behar da %s(e)tik inprimagailuak lortzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 +#, c-format +msgid "Authentication is required to get a file from %s" +msgstr "Autentifikazioa behar da fitxategia %s(e)tik lortzeko" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "Autentifikazioa behar da %s(e)n" -#: modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "Domeinua:" -#: modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Autentifikazioa behar da '%s' dokumentua inprimatzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" -msgstr "" -"Autentifikazioa behar da dokumentu hau '%s' inprimagailuan inprimatzeko" +msgstr "Autentifikazioa behar da dokumentu hau '%s' inprimagailuan inprimatzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "Autentifikazioa behar da dokumentu hau inprimatzeko" -#: modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "'%s' inprimagailuak toner baxua du." -#: modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "'%s' inprimagailuak ez du tonerrik." #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "'%s' inprimagailuak errebelatzaile baxua du." #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "'%s' inprimagailuak ez du errebelatzailerik." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "'%s' inprimagailuak gutxienez tinta-kartutxo bat baxua du." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "'%s' inprimagailuak gutxienez tinta-kartutxo bat gabe dago." -#: modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "'%s' inprimagailuaren estalkia irekita dago." -#: modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "'%s' inprimagailuaren atea irekita dago." -#: modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "'%s' inprimagailuak paper gutxi du." -#: modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "'%s' inprimagailuak ez du paperik." -#: modules/printbackends/cups/gtkprintbackendcups.c:1686 -#, fuzzy, c-format +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 +#, c-format msgid "Printer '%s' is currently offline." -msgstr "'%s' inprimagailua lineaz kanpo dago." +msgstr "'%s' inprimagailua unean lineaz kanpo dago." -#: modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "Arazoa dago '%s' inprimagailuarekin." #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "Pausarazita; Lanak baztertzen" #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "Lanak baztertzen" -#: modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "Bi aldetatik" -#: modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "Paper-mota" -#: modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "Paper-iturria" -#: modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "Irteerako erretilua" -#: modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "Bereizmena" -#: modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "GhostScript aurre-iragazketa" -#: modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "Alde batetik" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "Marjina luzea (estandarra)" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "Marjina laburra (iraulia)" #. Translators: this is an option of "Paper Source" -#: modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "Hautapen automatikoa" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: modules/printbackends/cups/gtkprintbackendcups.c:2803 -#: modules/printbackends/cups/gtkprintbackendcups.c:2805 -#: modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: modules/printbackends/cups/gtkprintbackendcups.c:3295 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "Inprimagailu lehenetsia" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "Kapsulatutako GhostScript letra-tipoak soilik" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "Bihurtu PS 1. mailara" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "Bihurtu PS 2. mailara" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "Aurre-iragazketarik gabe" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "Hainbat" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "Presazkoa" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "Altua" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "Tartekoa" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "Baxua" @@ -4031,66 +4128,66 @@ msgstr "Baxua" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3527 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "Orrialde orriko" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3564 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "Lanaren lehentasuna" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3575 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "Fakturaren datuak" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "Bat ere ez" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "Klasifikatuta" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "Konfidentziala" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "Ezkutukoa" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "Estandarra" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "Ezkutu gorenekoa" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "Sailkatu gabe" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3625 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "Aurretik" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3640 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "Ondoren" @@ -4098,14 +4195,14 @@ msgstr "Ondoren" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3660 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "Noiz inprimatu" #. 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/cups/gtkprintbackendcups.c:3671 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "Noiz inprimatu" @@ -4113,932 +4210,107 @@ msgstr "Noiz inprimatu" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3706 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "%sx%s pertsonalizatua" #. default filename used for print-to-file -#: modules/printbackends/file/gtkprintbackendfile.c:250 +#: ../modules/printbackends/file/gtkprintbackendfile.c:250 #, c-format msgid "output.%s" msgstr "irteera.%s" -#: modules/printbackends/file/gtkprintbackendfile.c:493 +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "Inprimatu fitxategian" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: modules/printbackends/file/gtkprintbackendfile.c:582 -#: modules/printbackends/test/gtkprintbackendtest.c:503 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 +#: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Orrialdeak _orriko:" -#: modules/printbackends/file/gtkprintbackendfile.c:641 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "Fitxategia" -#: modules/printbackends/file/gtkprintbackendfile.c:651 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "_Irteerako formatua" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:395 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 msgid "Print to LPR" msgstr "Inprimatu LPRen" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:421 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 msgid "Pages Per Sheet" msgstr "Orrialde orriko" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:428 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 msgid "Command Line" msgstr "Komando-lerroa" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:811 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 msgid "printer offline" msgstr "inprimagailua lineaz kanpo" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:829 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 msgid "ready to print" msgstr "inprimatzeko prest" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:832 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 msgid "processing job" msgstr "lana prozesatzen" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:836 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 msgid "paused" msgstr "pausarazita" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:839 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 msgid "unknown" msgstr "ezezaguna" #. default filename used for print-to-test -#: modules/printbackends/test/gtkprintbackendtest.c:234 +#: ../modules/printbackends/test/gtkprintbackendtest.c:234 #, c-format msgid "test-output.%s" msgstr "irteerako-proba.%s" -#: modules/printbackends/test/gtkprintbackendtest.c:467 +#: ../modules/printbackends/test/gtkprintbackendtest.c:467 msgid "Print to Test Printer" msgstr "Inprimatu probako inprimagailuan" -#: tests/testfilechooser.c:207 +#: ../tests/testfilechooser.c:207 #, c-format msgid "Could not get information for file '%s': %s" msgstr "Ezin izan da %s fitxategirako informaziorik lortu: %s" -#: tests/testfilechooser.c:222 +#: ../tests/testfilechooser.c:222 #, c-format msgid "Failed to open file '%s': %s" msgstr "Ezin izan da '%s' fitxategia ireki: %s" -#: tests/testfilechooser.c:267 +#: ../tests/testfilechooser.c:267 #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "" "Ezin izan da '%s' irudia kargatu: arrazoia ez dakigu, beharbada hondatutako " "irudi-fitxategia izango da" -#~ msgid "Gdk debugging flags to set" -#~ msgstr "Ezarri beharreko Gdk arazketa-banderak" - -#~ msgid "Gdk debugging flags to unset" -#~ msgstr "Ezarpenetik kendu beharreko Gdk arazketa-banderak" - -#~ msgid "Image file '%s' contains no data" -#~ msgstr "'%s' irudi-fitxategiak ez du daturik" - -#~ msgid "" -#~ "Failed to load animation '%s': reason not known, probably a corrupt " -#~ "animation file" -#~ msgstr "" -#~ "Ezin izan da '%s' animazioa kargatu: arrazoia ez dakigu, beharbada " -#~ "hondatutako animazio-fitxategia izango da" - -#~ msgid "Unable to load image-loading module: %s: %s" -#~ msgstr "Ezin da irudiak kargatzeko modulua kargatu: %s: %s" - -#~ msgid "" -#~ "Image-loading module %s does not export the proper interface; perhaps " -#~ "it's from a different GTK version?" -#~ msgstr "" -#~ "%s irudiak kargatzeko moduluak ez du interfaze egokia esportatzen; agian " -#~ "beste GTK bertsio batekoa da?" - -#~ msgid "Image type '%s' is not supported" -#~ msgstr "'%s' motako irudia ez dira onartzen" - -#~ msgid "Couldn't recognize the image file format for file '%s'" -#~ msgstr "" -#~ "Ezin izan da ezagutu '%s' fitxategiaren irudi-fitxategiaren formatua " - -#~ msgid "Unrecognized image file format" -#~ msgstr "Irudi-fitxategiaren formatu ezezaguna" - -#~ msgid "Failed to load image '%s': %s" -#~ msgstr "Ezin izan da `%s' irudia kargatu: %s" - -#~ msgid "Error writing to image file: %s" -#~ msgstr "Errorea irudi-fitxategia idaztean: %s" - -#~ msgid "" -#~ "This build of gdk-pixbuf does not support saving the image format: %s" -#~ msgstr "" -#~ "gdk-pixbuf-en bertsio honek ez du irudi-formatu hau gordetzea onartzen: %s" - -#~ msgid "Insufficient memory to save image to callback" -#~ msgstr "Ez dago irudi-fitxategia atzeradeian gordetzeko behar adina memoria" - -#~ msgid "Failed to open temporary file" -#~ msgstr "Huts egin du aldi baterako fitxategia irekitzean" - -#~ msgid "Failed to read from temporary file" -#~ msgstr "Huts egin du aldi baterako fitxategitik irakurtzean" - -#~ msgid "Failed to open '%s' for writing: %s" -#~ msgstr "Ezin izan da `%s' ireki idazteko: %s" - -#~ msgid "" -#~ "Failed to close '%s' while writing image, all data may not have been " -#~ "saved: %s" -#~ msgstr "" -#~ "Ezin izan da '%s' itxi irudia idatzi bitartean, baliteke datu guztiak ez " -#~ "gorde izana: %s" - -#~ msgid "Insufficient memory to save image into a buffer" -#~ msgstr "Ez dago irudi-fitxategia bufferrean gordetzeko behar adina memoria" - -#~ msgid "Error writing to image stream" -#~ msgstr "Errorea irudi-korrontean idaztean" - -#~ msgid "" -#~ "Internal error: Image loader module '%s' failed to complete an operation, " -#~ "but didn't give a reason for the failure" -#~ msgstr "" -#~ "Barne-errorea: '%s' irudi kargatzailearen moduluak ezin izan du eragiketa " -#~ "burutu, baina ez du hutsegitearen arrazoirik eman" - -#~ msgid "Incremental loading of image type '%s' is not supported" -#~ msgstr "'%s' motako irudien kargatze inkrementala ez da onartzen" - -#~ msgid "Image header corrupt" -#~ msgstr "Irudi-goiburua hondatuta" - -#~ msgid "Image format unknown" -#~ msgstr "Irudi-formatu ezezaguna" - -#~ msgid "Image pixel data corrupt" -#~ msgstr "Irudiko pixelen datuak hondatuta" - -#~ msgid "failed to allocate image buffer of %u byte" -#~ msgid_plural "failed to allocate image buffer of %u bytes" -#~ msgstr[0] "huts egin du irudiaren bufferra byte %u-ekin esleitzean" -#~ msgstr[1] "huts egin du irudiaren bufferra %u byte-rekin esleitzean" - -#~ msgid "Unexpected icon chunk in animation" -#~ msgstr "Ustekabeko ikono-zatia animazioan" - -#~ msgid "Unsupported animation type" -#~ msgstr "Onartzen ez den animazio-mota" - -#~ msgid "Invalid header in animation" -#~ msgstr "Goiburu baliogabea animazioan" - -#~ msgid "Not enough memory to load animation" -#~ msgstr "Ez dago animazioa kargatzeko adina memoria" - -#~ msgid "Malformed chunk in animation" -#~ msgstr "Gaizki osatutako zatia animazioan" - -#~ msgid "The ANI image format" -#~ msgstr "ANI irudi-formatua" - -#~ msgid "BMP image has bogus header data" -#~ msgstr "BMP irudiak goiburu-datu akastunak ditu" - -#~ msgid "Not enough memory to load bitmap image" -#~ msgstr "Ez dago bit-mapen irudia kargatzeko adina memoria" - -#~ msgid "BMP image has unsupported header size" -#~ msgstr "BMP irudiaren goiburu-tamaina ez da onartzen" - -#~ msgid "Topdown BMP images cannot be compressed" -#~ msgstr "BMP 'Topdown' irudiak ezin dira konprimatu" - -#~ msgid "Premature end-of-file encountered" -#~ msgstr "Fitxategiaren amaiera uste baino lehen aurkitu da" - -#~ msgid "Couldn't allocate memory for saving BMP file" -#~ msgstr "Ezin izan da BMP fitxategia gordetzeko memoria esleitu" - -#~ msgid "Couldn't write to BMP file" -#~ msgstr "Ezin izan da BMP fitxategia idatzi" - -#~ msgid "The BMP image format" -#~ msgstr "BMP irudi-formatua" - -#~ msgid "Failure reading GIF: %s" -#~ msgstr "Ezin izan da GIF irakurri: %s" - -#~ msgid "GIF file was missing some data (perhaps it was truncated somehow?)" -#~ msgstr "" -#~ "GIF fitxategian datu batzuk falta dira (agian nolabait trunkatuta zegoen?)" - -#~ msgid "Internal error in the GIF loader (%s)" -#~ msgstr "Barne-errorea GIF kargatzailean (%s)" - -#~ msgid "Stack overflow" -#~ msgstr "Pila-gainezkatzea" - -#~ msgid "GIF image loader cannot understand this image." -#~ msgstr "GIF irudi kargatzaileak ezin du irudi hau ulertu." - -#~ msgid "Bad code encountered" -#~ msgstr "Kode okerra aurkitu da" - -#~ msgid "Circular table entry in GIF file" -#~ msgstr "Taula-sarrera zirkularra GIF fitxategian" - -#~ msgid "Not enough memory to load GIF file" -#~ msgstr "Ez dago GIF fitxategia kargatzeko adina memoria" - -#~ msgid "Not enough memory to composite a frame in GIF file" -#~ msgstr "Ez dago GIF fitxategian markoa konposatzeko adina memoria" - -#~ msgid "GIF image is corrupt (incorrect LZW compression)" -#~ msgstr "GIF irudia hondatuta dago (LZW konpresio okerra)" - -#~ msgid "File does not appear to be a GIF file" -#~ msgstr "Fitxategiak ez dirudi GIF fitxategia" - -#~ msgid "Version %s of the GIF file format is not supported" -#~ msgstr "GIF fitxategi-formatuaren %s bertsioa ez da onartzen" - -#~ msgid "" -#~ "GIF image has no global colormap, and a frame inside it has no local " -#~ "colormap." -#~ msgstr "" -#~ "GIF irudiak ez du kolore-mapa orokorrik, eta bere barruko markoak ez du " -#~ "kolore-mapa lokalik." - -#~ msgid "GIF image was truncated or incomplete." -#~ msgstr "GIF irudia trunkatuta edo osatu gabe zegoen." - -#~ msgid "The GIF image format" -#~ msgstr "GIF irudi-formatua" - -#~ msgid "Invalid header in icon" -#~ msgstr "Goiburu baliogabea ikonoan" - -#~ msgid "Not enough memory to load icon" -#~ msgstr "Ez dago ikonoa kargatzeko adina memoria" - -#~ msgid "Icon has zero width" -#~ msgstr "Ikonoaren zabalera zero da" - -#~ msgid "Icon has zero height" -#~ msgstr "Ikonoaren altuera zero da" - -#~ msgid "Compressed icons are not supported" -#~ msgstr "Konprimitutako ikonoak ez dira onartzen" - -#~ msgid "Unsupported icon type" -#~ msgstr "Onartzen ez den ikono-mota" - -#~ msgid "Not enough memory to load ICO file" -#~ msgstr "Ez dago ICO fitxategia kargatzeko adina memoria" - -#~ msgid "Image too large to be saved as ICO" -#~ msgstr "Irudia handiegia da ICO gisa gordetzeko" - -#~ msgid "Cursor hotspot outside image" -#~ msgstr "Kurtsorearen puntu-beroa iruditik kanpo" - -#~ msgid "Unsupported depth for ICO file: %d" -#~ msgstr "ICO fitxategiko kolore-sakonera ez da onartzen: %d" - -#~ msgid "The ICO image format" -#~ msgstr "ICO irudi-formatua" - -#~ msgid "Error reading ICNS image: %s" -#~ msgstr "Errorea ICNS irudia irakurtzean: %s" - -#~ msgid "Could not decode ICNS file" -#~ msgstr "Ezin izan da ICNS fitxategia deskodetu" - -#~ msgid "The ICNS image format" -#~ msgstr "ICNS irudi-formatua" - -#~ msgid "Couldn't allocate memory for stream" -#~ msgstr "Ezin izan da korronterako memoria esleitu" - -#~ msgid "Couldn't decode image" -#~ msgstr "Ezin izan da irudia deskodetu" - -#~ msgid "Transformed JPEG2000 has zero width or height" -#~ msgstr "Bihurtutako JPEG2000ren zabalera edo altuera zero da." - -#~ msgid "Image type currently not supported" -#~ msgstr "Irudi mota ez da onartzen" - -#~ msgid "Couldn't allocate memory for color profile" -#~ msgstr "Ezin izan da kolore-profilarentzako memoria esleitu" - -#~ msgid "Insufficient memory to open JPEG 2000 file" -#~ msgstr "Ez dago JPEG 2000 fitxategia irekitzeko behar adina memoria" - -#~ msgid "Couldn't allocate memory to buffer image data" -#~ msgstr "Ezin izan da irudiaren datuen bufferrerako memoriarik esleitu" - -#~ msgid "The JPEG 2000 image format" -#~ msgstr "JPEG 2000 irudi-formatua" - -#~ msgid "Error interpreting JPEG image file (%s)" -#~ msgstr "Errorea JPEG irudi-fitxategia (%s) interpretatzen " - -#~ msgid "" -#~ "Insufficient memory to load image, try exiting some applications to free " -#~ "memory" -#~ msgstr "" -#~ "Ez dago nahikoa memoria irudia kargatzeko, saiatu aplikazio batzuetatik " -#~ "irteten memoria libratzeko" - -#~ msgid "Unsupported JPEG color space (%s)" -#~ msgstr "Onartzen ez den JPEGren kolore-area (%s)" - -#~ msgid "Couldn't allocate memory for loading JPEG file" -#~ msgstr "Ezin izan da JPEG fitxategia kargatzeko memoria esleitu" - -#~ msgid "Transformed JPEG has zero width or height." -#~ msgstr "Bihurtutako JPEGren zabalera edo altuera zero da." - -#~ msgid "" -#~ "JPEG quality must be a value between 0 and 100; value '%s' could not be " -#~ "parsed." -#~ msgstr "" -#~ "JPEG kalitatearen balioak 0 eta 100 artean egon behar du; '%s' balioa " -#~ "ezin izan da analizatu." - -#~ msgid "" -#~ "JPEG quality must be a value between 0 and 100; value '%d' is not allowed." -#~ msgstr "" -#~ "JPEG kalitatearen balioak 0 eta 100 artean egon behar du; '%d' balioa ez " -#~ "da onartzen." - -#~ msgid "The JPEG image format" -#~ msgstr "JPEG irudi-formatua" - -#~ msgid "Couldn't allocate memory for header" -#~ msgstr "Ezin da goibururako memoria esleitu" - -#~ msgid "Couldn't allocate memory for context buffer" -#~ msgstr "Ezin da testuinguru-bufferrerako memoria esleitu" - -#~ msgid "Image has invalid width and/or height" -#~ msgstr "Irudiak altuera edota zabalera baliogabea du" - -#~ msgid "Image has unsupported bpp" -#~ msgstr "Irudiak onartzen ez den bpp du" - -#~ msgid "Image has unsupported number of %d-bit planes" -#~ msgstr "Irudiak onartu gabeko %d bit plano kopurua du" - -#~ msgid "Couldn't create new pixbuf" -#~ msgstr "Ezin da pixbuf berria sortu" - -#~ msgid "Couldn't allocate memory for line data" -#~ msgstr "Ezin da lerroko datuentzako memoriarik esleitu" - -#~ msgid "Couldn't allocate memory for paletted data" -#~ msgstr "Ezin da paletako datuentzako memoriarik esleitu" - -#~ msgid "Didn't get all lines of PCX image" -#~ msgstr "Ez dira PCX irudiko marra guztiak lortu" - -#~ msgid "No palette found at end of PCX data" -#~ msgstr "PCX datuen amaieran ez da paletarik aurkitu" - -#~ msgid "The PCX image format" -#~ msgstr "PCX irudi-formatua" - -#~ msgid "Bits per channel of PNG image is invalid." -#~ msgstr "PNG irudiaren kanal bakoitzeko bitak baliogabeak dira." - -#~ msgid "Transformed PNG has zero width or height." -#~ msgstr "Bihurtutako PNGren zabalera edo altuera zero da." - -#~ msgid "Bits per channel of transformed PNG is not 8." -#~ msgstr "Bihurtutako PNGren kanal bakoitzeko bitak ez dira 8." - -#~ msgid "Transformed PNG not RGB or RGBA." -#~ msgstr "Bihurtutako PNG ez da RGB edo RGBA." - -#~ msgid "Transformed PNG has unsupported number of channels, must be 3 or 4." -#~ msgstr "" -#~ "Bihurtutako PNGk duen kanal-kopurua ez da onartzen; 3 edo 4 izan behar " -#~ "ditu." - -#~ msgid "Fatal error in PNG image file: %s" -#~ msgstr "Errore larria PNG irudi-fitxategian: %s" - -#~ msgid "Insufficient memory to load PNG file" -#~ msgstr "Ez dago PNG fitxategia kargatzeko adina memoria" - -#~ msgid "" -#~ "Insufficient memory to store a %ld by %ld image; try exiting some " -#~ "applications to reduce memory usage" -#~ msgstr "" -#~ "Ez dago $2%ld irudiak $1%ld bat gordetzeko adina memoria; saiatu " -#~ "aplikazio batzuetatik irteten memoria-erabilera murrizteko" - -#~ msgid "Fatal error reading PNG image file" -#~ msgstr "Errore larria PNG irudi-fitxategia irakurtzean" - -#~ msgid "Fatal error reading PNG image file: %s" -#~ msgstr "Errore larria PNG irudi-fitxategia irakurtzean: %s" - -#~ msgid "" -#~ "Keys for PNG text chunks must have at least 1 and at most 79 characters." -#~ msgstr "" -#~ "PNGren testu-zatiek gutxienez karaktere 1 eta gehienez 79 eduki behar " -#~ "dituzte." - -#~ msgid "Keys for PNG text chunks must be ASCII characters." -#~ msgstr "PNGren testu-zatien gakoek ASCII karaktereak izan behar dute." - -#~ msgid "Color profile has invalid length %d." -#~ msgstr "Kolore-profilak luzera baliogabea du: %d." - -#~ msgid "" -#~ "PNG compression level must be a value between 0 and 9; value '%s' could " -#~ "not be parsed." -#~ msgstr "" -#~ "PNG konpresioaren balioak 0 eta 9 artean egon behar du; '%s' balioa ezin " -#~ "izan da analizatu." - -#~ msgid "" -#~ "PNG compression level must be a value between 0 and 9; value '%d' is not " -#~ "allowed." -#~ msgstr "" -#~ "PNG konpresioaren balioak 0 eta 9 artean egon behar du; '%d' balioa ez da " -#~ "onartzen." - -#~ msgid "" -#~ "Value for PNG text chunk %s cannot be converted to ISO-8859-1 encoding." -#~ msgstr "" -#~ "PNGren %s testu-zatiaren balioa ezin da ISO-8859-1 kodeketara bihurtu." - -#~ msgid "The PNG image format" -#~ msgstr "PNG irudi-formatua" - -#~ msgid "PNM loader expected to find an integer, but didn't" -#~ msgstr "PNM kargatzaileak osokoa aurkitzea espero zuen, baina ez du aurkitu" - -#~ msgid "PNM file has an incorrect initial byte" -#~ msgstr "PNM fitxategiak hasierako byte okerra du" - -#~ msgid "PNM file is not in a recognized PNM subformat" -#~ msgstr "PNM fitxategiak ez du PNM azpiformatu ezaguna" - -#~ msgid "PNM file has an image width of 0" -#~ msgstr "PNM fitxategiaren irudi-zabalera 0 da" - -#~ msgid "PNM file has an image height of 0" -#~ msgstr "PNM fitxategiaren irudi-altuera 0 da" - -#~ msgid "Maximum color value in PNM file is 0" -#~ msgstr "PNM fitxategian kolorearen gehienezko balioa 0 da" - -#~ msgid "Maximum color value in PNM file is too large" -#~ msgstr "PNM fitxategiko kolorearen gehienezko balioa handiegia da" - -#~ msgid "Raw PNM image type is invalid" -#~ msgstr "PNM irudi-mota gordina baliogabea da" - -#~ msgid "PNM image loader does not support this PNM subformat" -#~ msgstr "PNM irudi kargatzaileak ez du PNM azpiformatu hau onartzen" - -#~ msgid "Raw PNM formats require exactly one whitespace before sample data" -#~ msgstr "" -#~ "PNM formatu gordinek zuriune bat behar dute lagin-informazioaren aurretik" - -#~ msgid "Cannot allocate memory for loading PNM image" -#~ msgstr "Ezin da PNM irudia kargatzeko memoria esleitu" - -#~ msgid "Insufficient memory to load PNM context struct" -#~ msgstr "Ez dago PNM testuinguru-egitura kargatzeko adina memoria" - -#~ msgid "Unexpected end of PNM image data" -#~ msgstr "PNM irudi-datuen ustekabeko amaiera" - -#~ msgid "Insufficient memory to load PNM file" -#~ msgstr "Ez dago PNM fitxategia kargatzeko behar adina memoria" - -#~ msgid "The PNM/PBM/PGM/PPM image format family" -#~ msgstr "PNM/PBM/PGM/PPM irudi-formatuen familia" - -#~ msgid "Input file descriptor is NULL." -#~ msgstr "Sarrerako fitxategiaren deskriptorea NULL da." - -#~ msgid "Failed to read QTIF header" -#~ msgstr "Huts egin du QTIF goiburukoa irakurtzean" - -#~ msgid "QTIF atom size too large (%d bytes)" -#~ msgstr "QTIF elementuaren tamaina handiegia da (%d byte)" - -#~ msgid "Failed to allocate %d bytes for file read buffer" -#~ msgstr "" -#~ "Huts egin du %d byte esleitzean fitxategia irakurtzeko bufferrarentzako" - -#~ msgid "File error when reading QTIF atom: %s" -#~ msgstr "Fitxategiaren errorea QTIF elementua irakurtzean: %s" - -#~ msgid "Failed to skip the next %d bytes with seek()." -#~ msgstr "Huts egin du hurrengo %d byte saltatzean seek() funtzioarekin." - -#~ msgid "Failed to allocate QTIF context structure." -#~ msgstr "Huts egin du QTIFen testuinguru-egitura esleitzean." - -#~ msgid "Failed to create GdkPixbufLoader object." -#~ msgstr "Huts egin du GdkPixbufLoader objektua sortzean." - -#~ msgid "Failed to find an image data atom." -#~ msgstr "Huts egin du irudiaren datuen elementu bat bilatzean." - -#~ msgid "The QTIF image format" -#~ msgstr "QTIF irudi-formatua" - -#~ msgid "RAS image has bogus header data" -#~ msgstr "RAS irudiak goiburu-datu akastunak ditu" - -#~ msgid "RAS image has unknown type" -#~ msgstr "RAS irudiak mota ezezaguna du" - -#~ msgid "unsupported RAS image variation" -#~ msgstr "onartzen ez den RAS irudi-aldaera" - -#~ msgid "Not enough memory to load RAS image" -#~ msgstr "Ez dago RAS irudia kargatzeko behar adina memoria" - -#~ msgid "The Sun raster image format" -#~ msgstr "Sun bilbe-irudiaren formatua" - -#~ msgid "Cannot allocate memory for IOBuffer struct" -#~ msgstr "Ezin zaio IOBuffer-en egiturari memoria esleitu" - -#~ msgid "Cannot allocate memory for IOBuffer data" -#~ msgstr "Ezin zaie IOBuffer-en datuei memoria esleitu" - -#~ msgid "Cannot realloc IOBuffer data" -#~ msgstr "Ezin dira IOBuffer-en datuak berriro esleitu" - -#~ msgid "Cannot allocate temporary IOBuffer data" -#~ msgstr "Ezin dira IOBuffer-en aldi baterako datuak esleitu" - -#~ msgid "Cannot allocate new pixbuf" -#~ msgstr "Ezin da pixbuf berria esleitu" - -#~ msgid "Image is corrupted or truncated" -#~ msgstr "Irudia trunkatuta edo hondatuta dago" - -#~ msgid "Cannot allocate colormap structure" -#~ msgstr "Ezin da kolore-maparen egitura esleitu" - -#~ msgid "Cannot allocate colormap entries" -#~ msgstr "Ezin dira kolore-maparen sarrerak esleitu" - -#~ msgid "Unexpected bitdepth for colormap entries" -#~ msgstr "Kolore-maparen sarreren ustekabeko bit-sakonera" - -#~ msgid "Cannot allocate TGA header memory" -#~ msgstr "Ezin da TGAren goiburu-memoria esleitu" - -#~ msgid "TGA image has invalid dimensions" -#~ msgstr "TGA irudiak tamaina baliogabeak ditu" - -#~ msgid "TGA image type not supported" -#~ msgstr "TGA irudi-mota ez da onartzen" - -#~ msgid "Cannot allocate memory for TGA context struct" -#~ msgstr "Ezin da TGAren testuinguru-egiturarako memoria esleitu" - -#~ msgid "Excess data in file" -#~ msgstr "Fitxategian datu gehiegi daude" - -#~ msgid "The Targa image format" -#~ msgstr "Targa irudi-formatua" - -#~ msgid "Could not get image width (bad TIFF file)" -#~ msgstr "Ezin izan da irudiaren zabalera lortu (TIFF fitxategi hondatua)" - -#~ msgid "Could not get image height (bad TIFF file)" -#~ msgstr "Ezin izan da irudiaren altuera lortu (TIFF fitxategi hondatua)" - -#~ msgid "Width or height of TIFF image is zero" -#~ msgstr "TIFF irudiaren zabalera edo altuera zero da" - -#~ msgid "Dimensions of TIFF image too large" -#~ msgstr "TIFF irudiaren neurriak handiegiak dira" - -#~ msgid "Insufficient memory to open TIFF file" -#~ msgstr "Ez dago TIFF fitxategia irekitzeko behar adina memoria" - -#~ msgid "Failed to load RGB data from TIFF file" -#~ msgstr "Ezin izan dira RGB datuak kargatu TIFF fitxategitik" - -#~ msgid "Failed to open TIFF image" -#~ msgstr "Ezin izan da TIFF irudia ireki" - -#~ msgid "TIFFClose operation failed" -#~ msgstr "TIFFClose eragiketak huts egin du" - -#~ msgid "Failed to load TIFF image" -#~ msgstr "Ezin izan da TIFF irudia kargatu" - -#~ msgid "Failed to save TIFF image" -#~ msgstr "Ezin izan da TIFF irudia gorde" - -#~ msgid "TIFF compression doesn't refer to a valid codec." -#~ msgstr "TIFF konpresioak ez du baliozko koderik adierazten." - -#~ msgid "Failed to write TIFF data" -#~ msgstr "Ezin izan da TIFF irudia idatzi" - -#~ msgid "Couldn't write to TIFF file" -#~ msgstr "Ezin izan da TIFF fitxategian idatzi" - -#~ msgid "The TIFF image format" -#~ msgstr "TIFF irudi-formatua" - -#~ msgid "Image has zero width" -#~ msgstr "Irudiaren zabalera zero da" - -#~ msgid "Image has zero height" -#~ msgstr "Irudiaren altuera zero da" - -#~ msgid "Not enough memory to load image" -#~ msgstr "Ez dago irudia kargatzeko behar adina memoria" - -#~ msgid "Couldn't save the rest" -#~ msgstr "Ezin izan da gainerakoa gorde" - -#~ msgid "The WBMP image format" -#~ msgstr "WBMP irudi-formatua" - -#~ msgid "Invalid XBM file" -#~ msgstr "XBM fitxategi baliogabea" - -#~ msgid "Insufficient memory to load XBM image file" -#~ msgstr "Ez dago XBM irudi-fitxategia kargatzeko behar adina memoria" - -#~ msgid "Failed to write to temporary file when loading XBM image" -#~ msgstr "Ezin izan da aldi baterako fitxategian idatzi XBM irudia kargatzean" - -#~ msgid "The XBM image format" -#~ msgstr "XBM irudi-formatua" - -#~ msgid "No XPM header found" -#~ msgstr "Ez da XPM goibururik aurkitu" - -#~ msgid "Invalid XPM header" -#~ msgstr "XPM goiburu baliogabea" - -#~ msgid "XPM file has image width <= 0" -#~ msgstr "XPM fitxategiaren irudi-zabalera <= 0 da" - -#~ msgid "XPM file has image height <= 0" -#~ msgstr "XPM fitxategiaren irudi-altuera <= 0 da" - -#~ msgid "XPM has invalid number of chars per pixel" -#~ msgstr "XPMk pixel bakoitzeko karaktere-kopuru baliogabea du" - -#~ msgid "XPM file has invalid number of colors" -#~ msgstr "XPM fitxategiak kolore-kopuru baliogabea du" - -#~ msgid "Cannot allocate memory for loading XPM image" -#~ msgstr "Ezin da XPM irudia kargatzeko memoria esleitu" - -#~ msgid "Cannot read XPM colormap" -#~ msgstr "Ezin da XPMren kolore-mapa irakurri" - -#~ msgid "Failed to write to temporary file when loading XPM image" -#~ msgstr "Ezin izan da aldi baterako fitxategian idatzi XPM irudia kargatzean" - -#~ msgid "The XPM image format" -#~ msgstr "XPM irudi-formatua" - -#~ msgid "The EMF image format" -#~ msgstr "EMF irudi-formatua" - -#~ msgid "Could not allocate memory: %s" -#~ msgstr "Ezin izan da memoria esleitu: %s" - -#~ msgid "Could not create stream: %s" -#~ msgstr "Ezin izan da korrontea sortu: %s" - -#~ msgid "Could not seek stream: %s" -#~ msgstr "Ezin izan da korrontea bilatu: %s" - -#~ msgid "Could not read from stream: %s" -#~ msgstr "Ezin izan da korrontearentzako irakurri: %s" - -#~ msgid "Couldn't load bitmap" -#~ msgstr "Ezin izan da bit-mapa kargatu" - -#~ msgid "Couldn't load metafile" -#~ msgstr "Ezin izan da metafitxategia kargatu" - -#~ msgid "Unsupported image format for GDI+" -#~ msgstr "Onartu gabeko irudi-formatua GDI+entzako" - -#~ msgid "Couldn't save" -#~ msgstr "Ezin izan da gorde" - -#~ msgid "The WMF image format" -#~ msgstr "WMF irudi-formatua" - -#~ msgid "\"Deepness\" of the color." -#~ msgstr "Kolorearen \"intentsitatea\"." - -#~ msgid "Error printing" -#~ msgstr "Errorea inprimatzean" - -#~ msgid "Printer '%s' may not be connected." -#~ msgstr "'%s' inprimagailua ez dirudi konektatuta dagoenik." - -#~ msgid "Folders" -#~ msgstr "Karpetak" - -#~ msgid "Fol_ders" -#~ msgstr "Kar_petak" - -#~ msgid "Folder unreadable: %s" -#~ msgstr "Karpeta ezin da irakurri: %s" - -#~ msgid "" -#~ "The file \"%s\" resides on another machine (called %s) and may not be " -#~ "available to this program.\n" -#~ "Are you sure that you want to select it?" -#~ msgstr "" -#~ "\"%s\" fitxategia beste makina batean dago (%s izenekoan) eta beharbada " -#~ "ez dago programa honetarako erabilgarri.\n" -#~ "Ziur zaude hautatu nahi duzula?" - -#~ msgid "_New Folder" -#~ msgstr "Kar_peta berria" - -#~ msgid "De_lete File" -#~ msgstr "E_zabatu fitxategia" - -#~ msgid "_Rename File" -#~ msgstr "_Aldatu fitxategi-izena" - -#~ msgid "" -#~ "The folder name \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "" -#~ "\"%s\" izeneko karpetak fitxategi-izenetan onartzen ez diren ikurrak ditu" - -#~ msgid "New Folder" -#~ msgstr "Karpeta berria" - -#~ msgid "_Folder name:" -#~ msgstr "_Karpeta-izena:" - -#~ msgid "C_reate" -#~ msgstr "S_ortu" - -#~ msgid "" -#~ "The filename \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "" -#~ "\"%s\" fitxategi-izenak fitxategi-izenetan onartzen ez diren ikurrak ditu" - -#~ msgid "Error deleting file '%s': %s" -#~ msgstr "Errorea '%s' fitxategia ezabatzean: %s" - -#~ msgid "Really delete file \"%s\"?" -#~ msgstr "Benetan \"%s\" fitxategia ezabatu?" - -#~ msgid "Delete File" -#~ msgstr "Ezabatu fitxategia" - -#~ msgid "Error renaming file to \"%s\": %s" -#~ msgstr "Errorea \"%s\" karpetari izena aldatzean: %s" - -#~ msgid "Error renaming file \"%s\": %s" -#~ msgstr "Errorea \"%s\" fitxategiari izena aldatzean: %s" - -#~ msgid "Error renaming file \"%s\" to \"%s\": %s" -#~ msgstr "Errorea fitxategiari \"%s\" izenaren ordez \"%s\" ipintzean: %s" - -#~ msgid "Rename File" -#~ msgstr "Aldatu fitxategi-izena" - -#~ msgid "Rename file \"%s\" to:" -#~ msgstr "Fitxategiari \"%s\" izena ipini honen ordez:" - -#~ msgid "_Rename" -#~ msgstr "I_zena aldatu" - -#~ msgid "_Selection: " -#~ msgstr "_Hautapena: " - -#~ msgid "" -#~ "The filename \"%s\" couldn't be converted to UTF-8. (try setting the " -#~ "environment variable G_FILENAME_ENCODING): %s" -#~ msgstr "" -#~ "\"%s\" fitxategi-izena ezin izan da UTF-8 bihurtu (saiatu " -#~ "G_FILENAME_ENCODING ingurune-aldagaia ezartzen): %s" - -#~ msgid "Invalid UTF-8" -#~ msgstr "Utf-8 baliogabea" - -#~ msgid "Name too long" -#~ msgstr "Izena luzeegia da" - -#~ msgid "Couldn't convert filename" -#~ msgstr "Ezin izan da fitxategi-izena bihurtu" - -#~ msgid "Gamma" -#~ msgstr "Gamma" - -#~ msgid "_Gamma value" -#~ msgstr "_Gamma-balioa" - -#~ msgid "Input" -#~ msgstr "Sarrera" - -#~ msgid "No extended input devices" -#~ msgstr "Ez dago sarrerako gailu hedaturik" - -#~ msgid "_Device:" -#~ msgstr "_Gailua:" - -#~ msgid "Disabled" -#~ msgstr "Desgaituta" - -#~ msgid "Screen" -#~ msgstr "Pantaila" - -#~ msgid "Window" -#~ msgstr "Leihoa" - -#~ msgid "_Mode:" -#~ msgstr "_Modua:" - -#~ msgid "Axes" -#~ msgstr "Ardatzak" - -#~ msgid "Keys" -#~ msgstr "Gakoak" - -#~ msgid "_X:" -#~ msgstr "_X:" - -#~ msgid "_Y:" -#~ msgstr "_Y:" - -#~ msgid "_Pressure:" -#~ msgstr "_Presioa:" - -#~ msgid "X _tilt:" -#~ msgstr "X _okerdura:" - -#~ msgid "Y t_ilt:" -#~ msgstr "Y o_kerdura:" - -#~ msgid "_Wheel:" -#~ msgstr "_Gurpila:" - -#~ msgid "none" -#~ msgstr "bat ere ez" - -#~ msgid "(disabled)" -#~ msgstr "(desgaituta)" - -#~ msgid "(unknown)" -#~ msgstr "(ezezaguna)" - -#~ msgid "Cl_ear" -#~ msgstr "_Garbitu" - -#~ msgid "--- No Tip ---" -#~ msgstr "--- Iradokizunik ez ---" diff --git a/po/fa.po b/po/fa.po index 2d5e7a38c4..e4e6efbf5e 100644 --- a/po/fa.po +++ b/po/fa.po @@ -4,13 +4,14 @@ # Roozbeh Pournader , 2000, 2002, 2003, 2004, 2005. # Meelad Zakaria , 2005. # Mahyar Moghimi , 2010. +# Ali Yousefi Sabzevar , 2010. # msgid "" msgstr "" "Project-Id-Version: gtk+ 2.6\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" -"POT-Creation-Date: 2010-11-30 21:56+0000\n" -"PO-Revision-Date: 2010-12-01 14:19+0330\n" +"POT-Creation-Date: 2010-12-19 09:25+0000\n" +"PO-Revision-Date: 2011-01-13 11:34+0330\n" "Last-Translator: Mahyar Moghimi \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" @@ -24,17 +25,17 @@ msgstr "" #: ../gdk/gdk.c:115 #, c-format msgid "Error parsing option --gdk-debug" -msgstr "خطا در تجزیهٔ گزینهٔ --gdk-debug" +msgstr "خطا در تجزیه‌ی گزینه‌ی --gdk-debug" #: ../gdk/gdk.c:135 #, c-format msgid "Error parsing option --gdk-no-debug" -msgstr "خطا در تجزیهٔ گزینه --gdk-no-debug" +msgstr "خطا در تجزیه‌ی گزینه --gdk-no-debug" #. Description of --class=CLASS in --help output #: ../gdk/gdk.c:163 msgid "Program class as used by the window manager" -msgstr "ردهٔ برنامه، به شکل مورد استفادهٔ مدیر پنجره‌ها" +msgstr "رده‌ی برنامه، به شکل مورد استفاده‌ی مدیر پنجره‌ها" #. Placeholder in --class=CLASS in --help output #: ../gdk/gdk.c:164 @@ -44,7 +45,7 @@ msgstr "CLASS" #. Description of --name=NAME in --help output #: ../gdk/gdk.c:166 msgid "Program name as used by the window manager" -msgstr "نام برنامه، به شکل مورد استفادهٔ مدیر پنجره‌ها" +msgstr "نام برنامه، به شکل مورد استفاده‌ی مدیر پنجره‌ها" #. Placeholder in --name=NAME in --help output #: ../gdk/gdk.c:167 @@ -64,7 +65,7 @@ msgstr "DISPLAY" #. Description of --screen=SCREEN in --help output #: ../gdk/gdk.c:172 msgid "X screen to use" -msgstr "صفحهٔ X مورد استفاده" +msgstr "صفحه‌ی X مورد استفاده" #. Placeholder in --screen=SCREEN in --help output #: ../gdk/gdk.c:173 @@ -82,8 +83,8 @@ msgstr "پرچمهای اشکال‌زدایی GDK که باید یک شوند" #. Placeholder in --gtk-no-debug=FLAGS in --help output #: ../gdk/gdk.c:177 #: ../gdk/gdk.c:180 -#: ../gtk/gtkmain.c:525 -#: ../gtk/gtkmain.c:528 +#: ../gtk/gtkmain.c:523 +#: ../gtk/gtkmain.c:526 msgid "FLAGS" msgstr "FLAGS" @@ -195,82 +196,82 @@ msgstr "قفل _اعداد" #: ../gdk/keyname-table.h:3960 msgctxt "keyboard label" msgid "KP_Space" -msgstr "_فاصلهٔ صفحهٔ اعداد" +msgstr "_فاصله‌ی صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3961 msgctxt "keyboard label" msgid "KP_Tab" -msgstr "_جهش صفحهٔ اعداد" +msgstr "_جهش صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3962 msgctxt "keyboard label" msgid "KP_Enter" -msgstr "_ورود صفحهٔ اعداد" +msgstr "_ورود صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3963 msgctxt "keyboard label" msgid "KP_Home" -msgstr "آغا_زهٔ صفحهٔ اعداد" +msgstr "آغا_زه‌ی صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3964 msgctxt "keyboard label" msgid "KP_Left" -msgstr "_چپ صفحهٔ اعداد" +msgstr "_چپ صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3965 msgctxt "keyboard label" msgid "KP_Up" -msgstr "_بالای صفحهٔ اعداد" +msgstr "_بالای صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3966 msgctxt "keyboard label" msgid "KP_Right" -msgstr "_راست صفحهٔ اعداد" +msgstr "_راست صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3967 msgctxt "keyboard label" msgid "KP_Down" -msgstr "_پایین صفحهٔ اعداد" +msgstr "_پایین صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3968 msgctxt "keyboard label" msgid "KP_Page_Up" -msgstr "_صفحه‌بالای صفحهٔ اعداد" +msgstr "_صفحه‌بالای صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3969 msgctxt "keyboard label" msgid "KP_Prior" -msgstr "_پیشین صفحهٔ اعداد" +msgstr "_پیشین صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3970 msgctxt "keyboard label" msgid "KP_Page_Down" -msgstr "_صفحه‌بالای صفحهٔ اعداد" +msgstr "_صفحه‌بالای صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3971 msgctxt "keyboard label" msgid "KP_Next" -msgstr "_پسین صفحهٔ اعداد" +msgstr "_پسین صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3972 msgctxt "keyboard label" msgid "KP_End" -msgstr "_پایان صفحهٔ اعداد" +msgstr "_پایان صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3973 msgctxt "keyboard label" msgid "KP_Begin" -msgstr "آ_غاز صفحهٔ اعداد" +msgstr "آ_غاز صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3974 msgctxt "keyboard label" msgid "KP_Insert" -msgstr "_درج صفحهٔ اعداد" +msgstr "_درج صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3975 msgctxt "keyboard label" msgid "KP_Delete" -msgstr "_حذف صفحهٔ اعداد" +msgstr "_حذف صفحه‌ی اعداد" #: ../gdk/keyname-table.h:3976 msgctxt "keyboard label" @@ -300,7 +301,7 @@ msgstr "از Wintab API استفاده شود [پیش‌فرض]" #. Description of --max-colors=COLORS in --help output #: ../gdk/win32/gdkmain-win32.c:62 msgid "Size of the palette in 8 bit mode" -msgstr "اندازهٔ تخته‌رنگ در حالت ۸ بیتی" +msgstr "اندازه‌ی تخته‌رنگ در حالت ۸ بیتی" #. Placeholder in --max-colors=COLORS in --help output #: ../gdk/win32/gdkmain-win32.c:63 @@ -331,56 +332,55 @@ msgstr "تماسهای با X همگام شوند" #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:105 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "این برنامه هیچ‌گونه گارانتی ندارد؛ برای جزئیات بیشتر %s را ببینید" +msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "این برنامه هیچ‌گونه ضمانتی ندارد؛ برای جزئیات بیشتر %s را ببینید" -#: ../gtk/gtkaboutdialog.c:339 -#: ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:347 msgid "License" msgstr "مجوز" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:348 msgid "The license of the program" msgstr "مجوز برنامه" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:741 msgid "C_redits" msgstr "_دست اندر کاران" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:754 msgid "_License" msgstr "_مجوز" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:959 msgid "Could not show link" msgstr "نمی توان پیوند را نمایش داد" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:996 +msgid "Homepage" +msgstr "صفحه‌ی خانگی" + +#: ../gtk/gtkaboutdialog.c:1052 #, c-format msgid "About %s" -msgstr "دربارهٔ %s" +msgstr "درباره‌ی %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "دست‌اندرکاران" +#: ../gtk/gtkaboutdialog.c:2370 +msgid "Created by" +msgstr "ایجاد شده توسط" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "نوشتهٔ" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2373 msgid "Documented by" msgstr "مستندسازی از" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "ترجمه از" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2389 msgid "Artwork by" msgstr "طرح‌ها و تصاویر از" @@ -462,12 +462,12 @@ msgstr "تابع با نوع نامعتبر در خط %d: «%s»" #: ../gtk/gtkbuilderparser.c:407 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" -msgstr "شناسهٔ شئ «%s»تکراری در خط %d (پیش‌تر در خط %d)" +msgstr "شناسه‌ی شئ «%s»تکراری در خط %d (پیش‌تر در خط %d)" #: ../gtk/gtkbuilderparser.c:859 #, c-format msgid "Invalid root element: '%s'" -msgstr "عنصر ریشهٔ نامعتبر: «%s»" +msgstr "عنصر ریشه‌ی نامعتبر: «%s»" #: ../gtk/gtkbuilderparser.c:898 #, c-format @@ -589,17 +589,17 @@ msgid "%d %%" msgstr "%Id ٪" #: ../gtk/gtkcolorbutton.c:188 -#: ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "یک رنگ بردارید" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "اطلاعات رنگی نامعتبر دریافت شد\n" #: ../gtk/gtkcolorsel.c:416 msgid "Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle." -msgstr "رنگی را که می‌خواهید از حلقهٔ خارجی انتخاب کنید. تیرگی یا روشنی آن رنگ را با استفاده از مثلث داخلی انتخاب کنید." +msgstr "رنگی را که می‌خواهید از حلقه‌ی خارجی انتخاب کنید. تیرگی یا روشنی آن رنگ را با استفاده از مثلث داخلی انتخاب کنید." #: ../gtk/gtkcolorsel.c:440 msgid "Click the eyedropper, then click a color anywhere on your screen to select that color." @@ -655,7 +655,7 @@ msgstr "میزان نور آبی در رنگ." #: ../gtk/gtkcolorsel.c:464 msgid "Op_acity:" -msgstr "درجهٔ _ماتی:" +msgstr "درجه‌ی _ماتی:" #: ../gtk/gtkcolorsel.c:471 #: ../gtk/gtkcolorsel.c:481 @@ -678,29 +678,29 @@ msgstr "_تخته‌رنگ:" msgid "Color Wheel" msgstr "چرخ رنگ" -#: ../gtk/gtkcolorsel.c:1031 -msgid "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside." -msgstr "رنگی که پیش‌تر انتخاب شده بود، برای مقایسه با رنگی که حالا دارید انتخاب می‌کنید. می‌توانید این رنگ را تا یک مدخل تخته‌رنگ بکشید، یا با کشیدنش به نمونهٔ دیگر در کنار آن، این رنگ را به عنوان رنگ فعلی انتخاب کنید." - #: ../gtk/gtkcolorsel.c:1034 +msgid "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside." +msgstr "رنگی که پیش‌تر انتخاب شده بود، برای مقایسه با رنگی که حالا دارید انتخاب می‌کنید. می‌توانید این رنگ را تا یک مدخل تخته‌رنگ بکشید، یا با کشیدنش به نمونه‌ی دیگر در کنار آن، این رنگ را به عنوان رنگ فعلی انتخاب کنید." + +#: ../gtk/gtkcolorsel.c:1037 msgid "The color you've chosen. You can drag this color to a palette entry to save it for use in the future." msgstr "رنگی که انتخاب کرده‌اید. می‌توانید این رنگ را به یک مدخل تخته‌رنگ بکشید تا برای استفاده در آینده ذخیره شود." -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1042 msgid "The previously-selected color, for comparison to the color you're selecting now." msgstr "رنگ انتخابی پیشین، برای مقایسه با رنگی که اکنون می‌گزینید." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1045 msgid "The color you've chosen." msgstr "رنگی که گزیده‌اید." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1445 msgid "_Save color here" -msgstr "_ذخیرهٔ رنگ در این‌جا" +msgstr "_ذخیره‌ی رنگ در این‌جا" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1653 msgid "Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\"" -msgstr "روی این مدخل تخته‌رنگ کلیک کنید تا رنگ فعلی شود. برای تغییر این مدخل، یک نمونهٔ رنگ را به اینجا بکشید یا روی آن کلیک راست کنید و «ذخیرهٔ رنگ در اینجا» را انتخاب کنید." +msgstr "روی این مدخل تخته‌رنگ کلیک کنید تا رنگ فعلی شود. برای تغییر این مدخل، یک نمونه‌ی رنگ را به اینجا بکشید یا روی آن کلیک راست کنید و «ذخیره‌ی رنگ در اینجا» را انتخاب کنید." #: ../gtk/gtkcolorseldialog.c:189 msgid "Color Selection" @@ -718,7 +718,7 @@ msgstr "default:mm" #. And show the custom paper dialog #: ../gtk/gtkcustompaperunixdialog.c:374 -#: ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkprintunixdialog.c:3241 msgid "Manage Custom Sizes" msgstr "مدیریت اندازه‌های سفارشی" @@ -739,7 +739,7 @@ msgstr "حاشیه‌ها از چاپگر..." #: ../gtk/gtkcustompaperunixdialog.c:747 #, c-format msgid "Custom Size %d" -msgstr "اندازهٔ سفارشی %Id" +msgstr "اندازه‌ی سفارشی %Id" #: ../gtk/gtkcustompaperunixdialog.c:1059 msgid "_Width:" @@ -751,7 +751,7 @@ msgstr "_بلندی:" #: ../gtk/gtkcustompaperunixdialog.c:1083 msgid "Paper Size" -msgstr "اندازهٔ _کاغذ:" +msgstr "اندازه‌ی _کاغذ:" #: ../gtk/gtkcustompaperunixdialog.c:1092 msgid "_Top:" @@ -773,25 +773,25 @@ msgstr "_راست:" msgid "Paper Margins" msgstr "حاشیه کاغذ" -#: ../gtk/gtkentry.c:8794 -#: ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8807 +#: ../gtk/gtktextview.c:8246 msgid "Input _Methods" msgstr "روش‌های ورودی" -#: ../gtk/gtkentry.c:8808 -#: ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8821 +#: ../gtk/gtktextview.c:8260 msgid "_Insert Unicode Control Character" -msgstr "_درج نویسهٔ کنترلی یونی‌کد" +msgstr "_درج نویسه‌ی کنترلی یونی‌کد" -#: ../gtk/gtkentry.c:10208 +#: ../gtk/gtkentry.c:10225 msgid "Caps Lock and Num Lock are on" msgstr "قفل تبدیل و قفل اعداد هردو روشن هستند" -#: ../gtk/gtkentry.c:10210 +#: ../gtk/gtkentry.c:10227 msgid "Num Lock is on" msgstr "قفل اعداد روشن است" -#: ../gtk/gtkentry.c:10212 +#: ../gtk/gtkentry.c:10229 msgid "Caps Lock is on" msgstr "قفل تبدیل روشن است." @@ -818,11 +818,11 @@ msgstr "غیره..." #: ../gtk/gtkfilechooserdefault.c:147 msgid "Type name of new folder" -msgstr "نام پوشهٔ جدید را وارد کنید" +msgstr "نام پوشه‌ی جدید را وارد کنید" #: ../gtk/gtkfilechooserdefault.c:946 msgid "Could not retrieve information about the file" -msgstr "نمی‌توان اطلاعاتی دربارهٔ پرونده بازیابی کرد" +msgstr "نمی‌توان اطلاعاتی درباره‌ی پرونده بازیابی کرد" #: ../gtk/gtkfilechooserdefault.c:957 msgid "Could not add a bookmark" @@ -846,7 +846,7 @@ msgstr "شما فقط می‌توانید پوشه‌ها را بگزینید. #: ../gtk/gtkfilechooserdefault.c:1016 msgid "Invalid file name" -msgstr "نام پروندهٔ نامعتبر" +msgstr "نام پرونده‌ی نامعتبر" #: ../gtk/gtkfilechooserdefault.c:1026 msgid "The folder contents could not be displayed" @@ -866,7 +866,7 @@ msgid "Search" msgstr "جستجو" #: ../gtk/gtkfilechooserdefault.c:1776 -#: ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "به‌تازه‌گی استفاده شده" @@ -877,12 +877,12 @@ msgstr "انتخاب این که کدام نوع پرونده‌ها نمایش #: ../gtk/gtkfilechooserdefault.c:2796 #, c-format msgid "Add the folder '%s' to the bookmarks" -msgstr "اضافه کردن پوشهٔ «%s» به نشانک‌ها" +msgstr "اضافه کردن پوشه‌ی «%s» به نشانک‌ها" #: ../gtk/gtkfilechooserdefault.c:2840 #, c-format msgid "Add the current folder to the bookmarks" -msgstr "اضافه کردن پوشهٔ فعلی به نشانک‌ها" +msgstr "اضافه کردن پوشه‌ی فعلی به نشانک‌ها" #: ../gtk/gtkfilechooserdefault.c:2842 #, c-format @@ -900,175 +900,175 @@ msgid "Bookmark '%s' cannot be removed" msgstr "نشانک '%s' حذف نمی‌شود" #: ../gtk/gtkfilechooserdefault.c:2889 -#: ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:3757 msgid "Remove the selected bookmark" msgstr "حذف پوشه‌های انتخاب‌شده" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3452 msgid "Remove" msgstr "حذف" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3461 msgid "Rename..." msgstr "تغییر نام..." #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3624 msgid "Places" msgstr "محل‌ها" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3681 msgid "_Places" msgstr "_محل‌ها" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3738 msgid "_Add" msgstr "_افزودن" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3745 msgid "Add the selected folder to the Bookmarks" -msgstr "افزودن پوشهٔ گزیده‌شده به نشانک‌ها" +msgstr "افزودن پوشه‌ی گزیده‌شده به نشانک‌ها" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3750 msgid "_Remove" msgstr "_حذف" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3892 msgid "Could not select file" msgstr "پرونده گزیده نشد" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4067 msgid "_Add to Bookmarks" msgstr "_افزودن به نشانک‌ها" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4080 msgid "Show _Hidden Files" msgstr "نمایش پرونده‌های _مخفی" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4087 msgid "Show _Size Column" msgstr "نمایش ستون _اندازه" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4313 msgid "Files" msgstr "پرونده‌ها" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4364 msgid "Name" msgstr "نام" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4387 msgid "Size" msgstr "اندازه" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4401 msgid "Modified" msgstr "تغییریافته" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 +#: ../gtk/gtkfilechooserdefault.c:4656 #: ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_نام:" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4699 msgid "_Browse for other folders" msgstr "_مرور برای سایر پوشه‌ها" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4969 msgid "Type a file name" msgstr "یک نام پرونده وارد کنید" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5012 msgid "Create Fo_lder" msgstr "ایجاد پو_شه" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5022 msgid "_Location:" msgstr "_مکان:" -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5226 msgid "Save in _folder:" -msgstr "ذخیره در پو_شهٔ:" +msgstr "ذخیره در پو_شه‌ی:" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5228 msgid "Create in _folder:" -msgstr "ایجاد در پو_شهٔ:" +msgstr "ایجاد در پو_شه‌ی:" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6297 #, c-format msgid "Could not read the contents of %s" msgstr "محتوای %s خوانده نشد" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6301 msgid "Could not read the contents of the folder" msgstr "محتوای پوشه خوانده نشد" -#: ../gtk/gtkfilechooserdefault.c:6387 -#: ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6394 +#: ../gtk/gtkfilechooserdefault.c:6462 +#: ../gtk/gtkfilechooserdefault.c:6607 msgid "Unknown" msgstr "نامعلوم" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6409 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6411 msgid "Yesterday at %H:%M" msgstr "دیروز ساعت %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7077 msgid "Cannot change to folder because it is not local" msgstr "نمی‌توان به پوشه رفت چون محلی نیست" -#: ../gtk/gtkfilechooserdefault.c:7667 -#: ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7674 +#: ../gtk/gtkfilechooserdefault.c:7695 #, c-format msgid "Shortcut %s already exists" msgstr "میان‌بر %s پیشاپیش موجود است" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7785 #, c-format msgid "Shortcut %s does not exist" msgstr "میانبر %s وجود ندارد" -#: ../gtk/gtkfilechooserdefault.c:8039 +#: ../gtk/gtkfilechooserdefault.c:8046 #: ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "پرونده‌ایبا نام \"%s\" پیشاپیش وجود دارد. می‌خواهید آن را جایگزین کنید؟" -#: ../gtk/gtkfilechooserdefault.c:8042 +#: ../gtk/gtkfilechooserdefault.c:8049 #: ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "پرونده پیشاپیش در \"%s\" وجود دارد. با جایگزینی آن تمام محتوایش بازنویسی می‌شود." -#: ../gtk/gtkfilechooserdefault.c:8047 +#: ../gtk/gtkfilechooserdefault.c:8054 #: ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_جایگزینی" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "فرآیند جستجو شروع نشد" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "The program was not able to create a connection to the indexer daemon. Please make sure it is running." msgstr "برنامه نتوانست اتصالی به شبح نمایه‌گذار برقرار کند. بررسی کنید که آن در حال اجرا باشد." -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "درخواست جستجو فرستاده نشد" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "جستجو:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "نمی‌توان %s را سوار کرد" @@ -1190,7 +1190,7 @@ msgstr "انتخاب قلم" msgid "Error loading icon: %s" msgstr "خطا در بار کردن نشان: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1203,12 +1203,12 @@ msgstr "" "می‌توانید یک رونوشت از نشانی زیر بگیرید:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "نشان «%s» در تم وجود ندارد" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "خراب شدن بارکردن نشان" @@ -1234,12 +1234,12 @@ msgid "System (%s)" msgstr "سیستم (%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6249 msgid "_Open Link" msgstr "_باز کردن پیوند" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6261 msgid "Copy _Link Address" msgstr "_رونوشت از نشانی پیوند" @@ -1252,27 +1252,27 @@ msgid "Invalid URI" msgstr "نشانی وب نامعتبر" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:518 +#: ../gtk/gtkmain.c:516 msgid "Load additional GTK+ modules" msgstr "پیمانه‌های GTK+ بیشتری بار شود" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:517 msgid "MODULES" msgstr "پیمانه‌ها" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:521 +#: ../gtk/gtkmain.c:519 msgid "Make all warnings fatal" -msgstr "همهٔ اخطارها مهلک شوند" +msgstr "همه‌ی اخطارها مهلک شوند" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:524 +#: ../gtk/gtkmain.c:522 msgid "GTK+ debugging flags to set" msgstr "پرچمهای اشکال‌زدایی GTK+ که باید یک شوند" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:525 msgid "GTK+ debugging flags to unset" msgstr "پرچمهای اشکال‌زدایی GTK+ که باید صفر شوند" @@ -1281,20 +1281,20 @@ msgstr "پرچمهای اشکال‌زدایی GTK+ که باید صفر شون #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:790 +#: ../gtk/gtkmain.c:788 msgid "default:LTR" msgstr "default:RTL" -#: ../gtk/gtkmain.c:855 +#: ../gtk/gtkmain.c:852 #, c-format msgid "Cannot open display: %s" msgstr "نمایش %s باز نمی‌شود" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:916 msgid "GTK+ Options" msgstr "گزینه‌های GTK+" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:916 msgid "Show GTK+ Options" msgstr "نشان دادن گزینه‌های GTK+" @@ -1337,7 +1337,7 @@ msgstr "برای _همیشه به‌خاطر سپرده شود." #: ../gtk/gtkmountoperation.c:883 #, c-format msgid "Unknown Application (PID %d)" -msgstr "برنامهٔ ناشناخته (شناسهٔ فرآیند %d)" +msgstr "برنامه‌ی ناشناخته (شناسه‌ی فرآیند %d)" #: ../gtk/gtkmountoperation.c:1066 msgid "Unable to end process" @@ -1350,7 +1350,7 @@ msgstr "به _پایان بردن فرآیند" #: ../gtk/gtkmountoperation-stub.c:64 #, c-format msgid "Cannot kill process with PID %d. Operation is not implemented." -msgstr "نمی‌توان فرآیند با شناسهٔ %d را کشت. این کنش پیاده‌سازی نشده است." +msgstr "نمی‌توان فرآیند با شناسه‌ی %d را کشت. این کنش پیاده‌سازی نشده است." #. translators: this string is a name for the 'less' command #: ../gtk/gtkmountoperation-x11.c:862 @@ -1363,32 +1363,32 @@ msgstr "فرمان تاپ (top)" #: ../gtk/gtkmountoperation-x11.c:864 msgid "Bourne Again Shell" -msgstr "پوستهٔ بورن اِگِین" +msgstr "پوسته‌ی بورن اِگِین" #: ../gtk/gtkmountoperation-x11.c:865 msgid "Bourne Shell" -msgstr "پوستهٔ بورن" +msgstr "پوسته‌ی بورن" #: ../gtk/gtkmountoperation-x11.c:866 msgid "Z Shell" -msgstr "پوستهٔ زی" +msgstr "پوسته‌ی زی" #: ../gtk/gtkmountoperation-x11.c:963 #, c-format msgid "Cannot end process with PID %d: %s" -msgstr "نمی‌توان فرآیند با شناسهٔ %d را به پایان برد: %s" +msgstr "نمی‌توان فرآیند با شناسه‌ی %d را به پایان برد: %s" -#: ../gtk/gtknotebook.c:4756 -#: ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4914 +#: ../gtk/gtknotebook.c:7571 #, c-format msgid "Page %u" -msgstr "صفحهٔ %Iu" +msgstr "صفحه‌ی %Iu" #: ../gtk/gtkpagesetup.c:648 #: ../gtk/gtkpapersize.c:838 #: ../gtk/gtkpapersize.c:880 msgid "Not a valid page setup file" -msgstr "پروندهٔ برپایی صفحه نامعتبر است." +msgstr "پرونده‌ی برپایی صفحه نامعتبر است." #: ../gtk/gtkpagesetupunixdialog.c:179 msgid "Any Printer" @@ -1414,7 +1414,7 @@ msgstr "" "ته:%s %s" #: ../gtk/gtkpagesetupunixdialog.c:858 -#: ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkprintunixdialog.c:3292 msgid "Manage Custom Sizes..." msgstr "مدیریت اندازه‌های سفارشی..." @@ -1423,16 +1423,16 @@ msgid "_Format for:" msgstr "_قالب‌بندی برای:" #: ../gtk/gtkpagesetupunixdialog.c:931 -#: ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkprintunixdialog.c:3464 msgid "_Paper size:" -msgstr "اندازهٔ _کاغذ:" +msgstr "اندازه‌ی _کاغذ:" #: ../gtk/gtkpagesetupunixdialog.c:962 msgid "_Orientation:" msgstr "جهت_" #: ../gtk/gtkpagesetupunixdialog.c:1026 -#: ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkprintunixdialog.c:3526 msgid "Page Setup" msgstr "برپایی صفحه" @@ -1446,7 +1446,7 @@ msgstr "مسیر پایین" #: ../gtk/gtkpathbar.c:1523 msgid "File System Root" -msgstr "ریشهٔ سیستم پرونده" +msgstr "ریشه‌ی سیستم پرونده" #: ../gtk/gtkprintbackend.c:749 msgid "Authentication" @@ -1462,7 +1462,7 @@ msgstr "یک پوشه انتخاب کنید" #: ../gtk/gtkprinteroptionwidget.c:805 msgid "_Save in folder:" -msgstr "ذخیره در _پوشهٔ:" +msgstr "ذخیره در _پوشه‌ی:" #. translators: this string is the default job title for print #. * jobs. %s gets replaced by the application name, %d gets replaced @@ -1539,7 +1539,7 @@ msgstr "خطا در ایجاد پیش‌نمایش چاپ" #: ../gtk/gtkprintoperation.c:2935 msgid "The most probable reason is that a temporary file could not be created." -msgstr "محتمل‌ترین دلیل این‌است که یک پروندهٔ موقت ایجاد نشد." +msgstr "محتمل‌ترین دلیل این‌است که یک پرونده‌ی موقت ایجاد نشد." #: ../gtk/gtkprintoperation-unix.c:297 msgid "Error launching preview" @@ -1570,7 +1570,7 @@ msgstr "نیاز به مداخله کاربر هست" #: ../gtk/gtkprintoperation-win32.c:717 msgid "Custom size" -msgstr "اندازهٔ سفارشی" +msgstr "اندازه‌ی سفارشی" #: ../gtk/gtkprintoperation-win32.c:1539 msgid "No printer found" @@ -1589,7 +1589,7 @@ msgstr "خطا از StartDoc" #: ../gtk/gtkprintoperation-win32.c:1707 #: ../gtk/gtkprintoperation-win32.c:1755 msgid "Not enough free memory" -msgstr "حافظهٔ کافی نیست" +msgstr "حافظه‌ی کافی نیست" #: ../gtk/gtkprintoperation-win32.c:1760 msgid "Invalid argument to PrintDlgEx" @@ -1615,70 +1615,70 @@ msgstr "گرفتن اطلاعات چاپگر خراب شد" msgid "Getting printer information..." msgstr "در حال گرفتن اطلاعاتِ چاپگر..." -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2140 msgid "Printer" msgstr "چاپگر" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2150 msgid "Location" msgstr "مکان" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2161 msgid "Status" msgstr "وضعیت" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2187 msgid "Range" msgstr "گستره" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2191 msgid "_All Pages" -msgstr "_همهٔ صفحات" +msgstr "_همه‌ی صفحات" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "C_urrent Page" -msgstr "صفحهٔ _جاری" +msgstr "صفحه‌ی _جاری" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2208 msgid "Se_lection" msgstr "_گزینش" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2217 msgid "Pag_es:" msgstr "_صفحه‌ها:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" msgstr "" -"یک یا چند گسترهٔ صفحه‌ها را مشخص کنید، \n" +"یک یا چند گستره‌ی صفحه‌ها را مشخص کنید، \n" "مثلا: ۱-۳،۷،۱۱" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2228 msgid "Pages" msgstr "صفحه‌ها" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2241 msgid "Copies" msgstr "رونوشت‌ها" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2246 msgid "Copie_s:" msgstr "_رونوشت‌ها:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2264 msgid "C_ollate" msgstr "_تلفیق" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2272 msgid "_Reverse" msgstr "ترتیب _معکوس" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2292 msgid "General" msgstr "کلی" @@ -1688,42 +1688,42 @@ msgstr "کلی" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 +#: ../gtk/gtkprintunixdialog.c:3025 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, top to bottom" msgstr "از چپ به راست، از سر به ته" -#: ../gtk/gtkprintunixdialog.c:3024 +#: ../gtk/gtkprintunixdialog.c:3025 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, bottom to top" msgstr "از چپ به راست، از ته به سر" -#: ../gtk/gtkprintunixdialog.c:3025 +#: ../gtk/gtkprintunixdialog.c:3026 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, top to bottom" msgstr "از راست به چپ، از سر به ته" -#: ../gtk/gtkprintunixdialog.c:3025 +#: ../gtk/gtkprintunixdialog.c:3026 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, bottom to top" msgstr "از راست به چپ، از ته به سر" -#: ../gtk/gtkprintunixdialog.c:3026 +#: ../gtk/gtkprintunixdialog.c:3027 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, left to right" msgstr "از سر به ته، از چپ به راست" -#: ../gtk/gtkprintunixdialog.c:3026 +#: ../gtk/gtkprintunixdialog.c:3027 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, right to left" msgstr "از سر به ته، از راست به چپ" -#: ../gtk/gtkprintunixdialog.c:3027 +#: ../gtk/gtkprintunixdialog.c:3028 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, left to right" msgstr "از ته به سر، از چپ به راست" -#: ../gtk/gtkprintunixdialog.c:3027 +#: ../gtk/gtkprintunixdialog.c:3028 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, right to left" msgstr "از ته به سر، از راست به چپ" @@ -1731,126 +1731,126 @@ msgstr "از ته به سر، از راست به چپ" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 -#: ../gtk/gtkprintunixdialog.c:3044 +#: ../gtk/gtkprintunixdialog.c:3032 +#: ../gtk/gtkprintunixdialog.c:3045 #: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 msgid "Page Ordering" msgstr "ترتیب صفحه‌ها" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3061 msgid "Left to right" msgstr "چپ به راست" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Right to left" msgstr "چپ به راست" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3074 msgid "Top to bottom" msgstr "از سر به ته" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Bottom to top" msgstr "از ته به سر" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3315 msgid "Layout" msgstr "صفحه‌بندی" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3319 msgid "T_wo-sided:" msgstr "_دو رو:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3334 msgid "Pages per _side:" msgstr "_تعداد صفحه‌ها در یک رو" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3351 msgid "Page or_dering:" msgstr "_ترتیب صفحه‌ها" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3367 msgid "_Only print:" msgstr "_فقط چاپ" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 -msgid "All sheets" -msgstr "همهٔ صفحه‌ها" - #: ../gtk/gtkprintunixdialog.c:3382 +msgid "All sheets" +msgstr "همه‌ی صفحه‌ها" + +#: ../gtk/gtkprintunixdialog.c:3383 msgid "Even sheets" msgstr "صفحه‌های زوج" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Odd sheets" msgstr "صفحه‌های فرد" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3387 msgid "Sc_ale:" msgstr "م_قیاس:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3414 msgid "Paper" msgstr "کاغذ" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3418 msgid "Paper _type:" msgstr "نو_ع کاغذ:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3433 msgid "Paper _source:" msgstr "_منبع کاغذ" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3448 msgid "Output t_ray:" msgstr "_سینی خروجی:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3488 msgid "Or_ientation:" msgstr "_جهت:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3503 msgid "Portrait" msgstr "عمودی" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Landscape" msgstr "منظره‌‌ای" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Reverse portrait" msgstr "عمودی معکوس" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse landscape" msgstr "منظره‌ای معکوس" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3551 msgid "Job Details" msgstr "جزئیات کار" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3557 msgid "Pri_ority:" msgstr "او_لویت:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3572 msgid "_Billing info:" msgstr "ا_طلاعات صورتحساب" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3590 msgid "Print Document" msgstr "چاپ سند" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3599 msgid "_Now" msgstr "_اکنون" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3610 msgid "A_t:" msgstr "_در:" @@ -1858,7 +1858,7 @@ msgstr "_در:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3616 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1866,81 +1866,75 @@ msgstr "" "زمان چاپ را مشخص کنید، \n" "مثلا ۱۵:۳۰، ۲:۳۵ ب.ظ، ۱۴:۱۵:۲۰، ۱۱:۴۶ ق.ظ، ۴ ب.ظ" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3626 msgid "Time of print" msgstr "زمان چاپ" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3642 msgid "On _hold" msgstr "_در حل انتظار:" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "Hold the job until it is explicitly released" msgstr "کار را نگهدار تا آشکارا منتشر شود" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3663 msgid "Add Cover Page" -msgstr "افزودن صفحهٔ رویه" +msgstr "افزودن صفحه‌ی رویه" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3672 msgid "Be_fore:" msgstr "_پیش از:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3690 msgid "_After:" msgstr "_پس از:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3708 msgid "Job" msgstr "کار" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3774 msgid "Advanced" msgstr "پیشرفته" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3812 msgid "Image Quality" msgstr "کیفیت تصویر" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3816 msgid "Color" msgstr "رنگ" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3821 msgid "Finishing" msgstr "در حال پایان بردن" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3831 msgid "Some of the settings in the dialog conflict" -msgstr "ببعضی از تنظیمات در جعبهٔ محاوره ناسازگارند." +msgstr "ببعضی از تنظیمات در جعبه‌ی محاوره ناسازگارند." -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3854 msgid "Print" msgstr "چاپ" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "نمی‌توان پروندهٔ درجی را یافت: «%s»" - -#: ../gtk/gtkrc.c:3470 -#: ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:871 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" -msgstr "نمی‌توان پروندهٔ تصویر را در pixmap_path یافت: «%s»" +msgstr "نمی‌توان پرونده‌ی تصویر را در pixmap_path یافت: «%s»" #: ../gtk/gtkrecentaction.c:165 #: ../gtk/gtkrecentaction.c:173 @@ -1948,7 +1942,7 @@ msgstr "نمی‌توان پروندهٔ تصویر را در pixmap_path یاف #: ../gtk/gtkrecentchoosermenu.c:616 #, c-format msgid "This function is not implemented for widgets of class '%s'" -msgstr "این تابع برای عنصر‌های ردهٔ '%s' پیاده‌سازی نشده است" +msgstr "این تابع برای عنصر‌های رده‌ی '%s' پیاده‌سازی نشده است" #: ../gtk/gtkrecentchooserdefault.c:483 msgid "Select which type of documents are shown" @@ -2051,14 +2045,14 @@ msgstr "نمی‌توان موردی با نشانی «%s» یافت" #: ../gtk/gtkrecentmanager.c:2437 #, c-format msgid "No registered application with name '%s' for item with URI '%s' found" -msgstr "هیچ برنامهٔ ثبت شده‌ای با نام «%s» برای آدرس ولی «%s» یافت نشد" +msgstr "هیچ برنامه‌ی ثبت شده‌ای با نام «%s» برای آدرس ولی «%s» یافت نشد" -#: ../gtk/gtkspinner.c:439 +#: ../gtk/gtkspinner.c:326 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "گرداننده" -#: ../gtk/gtkspinner.c:440 +#: ../gtk/gtkspinner.c:327 msgid "Provides visual indication of progress" msgstr "نشان‌گر تصویری پیشرفت را فراهم می‌کند" @@ -2548,7 +2542,7 @@ msgstr "بله" #: ../gtk/gtkstock.c:437 msgctxt "Stock label" msgid "_Normal Size" -msgstr "اندازهٔ _عادی" +msgstr "اندازه‌ی _عادی" #. Zoom #: ../gtk/gtkstock.c:439 @@ -2575,7 +2569,7 @@ msgstr "_کوچک نمایی" #: ../gtk/gtkswitch.c:531 msgctxt "switch" msgid "ON" -msgstr "U+2759" +msgstr "❙" #. Translators: if the "off" state label requires more than three #. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state @@ -2585,10 +2579,9 @@ msgstr "U+2759" #: ../gtk/gtkswitch.c:552 msgctxt "switch" msgid "OFF" -msgstr "U+25CB" +msgstr "○" #: ../gtk/gtkswitch.c:943 -#| msgid "inch" msgctxt "light switch widget" msgid "Switch" msgstr "تعویض" @@ -2607,121 +2600,121 @@ msgstr "خطای ناشناخته هنگام تلاش برای نامتوالی msgid "No deserialize function found for format %s" msgstr "هیچ تابع نامتوالی‌کننده‌ای برای قالب %s یافت نشد" -#: ../gtk/gtktextbufferserialize.c:803 -#: ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:799 +#: ../gtk/gtktextbufferserialize.c:825 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "هم «id» و هم «name» در عنصر <%s> یافت شدند" -#: ../gtk/gtktextbufferserialize.c:813 -#: ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:809 +#: ../gtk/gtktextbufferserialize.c:835 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "خصیصه«%s» دوبار در عنصر <%s> یافت شد" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:851 #, c-format msgid "<%s> element has invalid ID \"%s\"" -msgstr "عنصر <%s> شناسهٔ نامعتبر «%s» دارد" +msgstr "عنصر <%s> شناسه‌ی نامعتبر «%s» دارد" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:861 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" -msgstr "عنصر <%s> نه خصیصهٔ «name» و نه خصیصهٔ «id» دارد" +msgstr "عنصر <%s> نه خصیصه‌ی «name» و نه خصیصه‌ی «id» دارد" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:948 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" -msgstr "خصیصهٔ «%s» در عنصر <%s> یکسان دو بار تکرار شده است" +msgstr "خصیصه‌ی «%s» در عنصر <%s> یکسان دو بار تکرار شده است" -#: ../gtk/gtktextbufferserialize.c:970 -#: ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:966 +#: ../gtk/gtktextbufferserialize.c:991 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" -msgstr "خصیصهٔ «%s» در این متن روی عنصر <%s> نامعتبر است" +msgstr "خصیصه‌ی «%s» در این متن روی عنصر <%s> نامعتبر است" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1030 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "برچسب «%s» تعریف نشده است." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1042 msgid "Anonymous tag found and tags can not be created." msgstr "برچسب بی‌نام پیدا شده و نمی‌توان برچسب ساخت." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1053 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "برچسب \"%s\" در میان‌گیر وجود ندارد و نمی‌توان برچسب ساخت." -#: ../gtk/gtktextbufferserialize.c:1156 -#: ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 -#: ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1152 +#: ../gtk/gtktextbufferserialize.c:1227 +#: ../gtk/gtktextbufferserialize.c:1332 +#: ../gtk/gtktextbufferserialize.c:1406 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "عنصر <%s> زیر <%s> مجاز نیست" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1183 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "«%s» نوع خصیصه‌ای نامعتبر است" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1191 #, c-format msgid "\"%s\" is not a valid attribute name" -msgstr "«%s» نام خصیصهٔ معتبری نیست" +msgstr "«%s» نام خصیصه‌ی معتبری نیست" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1201 #, c-format msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -msgstr "«%s» نمی‌تواند به یک مقدار معتبر از نوع «%s» برای خصیصهٔ «%s» تبدیل شود" +msgstr "«%s» نمی‌تواند به یک مقدار معتبر از نوع «%s» برای خصیصه‌ی «%s» تبدیل شود" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1210 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" -msgstr "«%s» مقدار معتبری برای خصیصهٔ «%s» نیست" +msgstr "«%s» مقدار معتبری برای خصیصه‌ی «%s» نیست" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1295 #, c-format msgid "Tag \"%s\" already defined" msgstr "برچسب «%s» پیشاپیش تعریف شده است" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1308 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "برچسب «%s» دارای اولویت نامعتبر«%s» است." -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1361 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "بیرونی‌ترین عنصر در متن بایستی باشد نه <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 -#: ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1370 +#: ../gtk/gtktextbufferserialize.c:1386 #, c-format msgid "A <%s> element has already been specified" msgstr "یک عنصر <%s> پیشاپیش مشخص شده‌است" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1392 msgid "A element can't occur before a element" msgstr "یک عنصر نمی‌تواند پیش از یک عنصر پیش‌بیاید" -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1792 msgid "Serialized data is malformed" -msgstr "دادهٔ متوالی شده بد‌ریخت است" +msgstr "داده‌ی متوالی شده بد‌ریخت است" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1870 msgid "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" -msgstr "دادهٔ متوالی شده بد‌ریخت است. اولین بخش GTKTEXTBUFFERCONTENTS-0001 نیست" +msgstr "داده‌ی متوالی شده بد‌ریخت است. اولین بخش GTKTEXTBUFFERCONTENTS-0001 نیست" #: ../gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" -msgstr "LRM نشانهٔ _چپ‌به‌راست" +msgstr "LRM نشانه‌ی _چپ‌به‌راست" #: ../gtk/gtktextutil.c:61 msgid "RLM _Right-to-left mark" -msgstr "RLM نشانهٔ _راست‌به‌چپ" +msgstr "RLM نشانه‌ی _راست‌به‌چپ" #: ../gtk/gtktextutil.c:62 msgid "LRE Left-to-right _embedding" @@ -2745,7 +2738,7 @@ msgstr "PDF پایان زیرمتن_" #: ../gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" -msgstr "ZWS فاصلهٔ _بی‌عرض" +msgstr "ZWS فاصله‌ی _بی‌عرض" #: ../gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" @@ -2753,7 +2746,7 @@ msgstr "ZWJ _اتصال بی‌عرض" #: ../gtk/gtktextutil.c:69 msgid "ZWNJ Zero width _non-joiner" -msgstr "ZWNJ _جداکنندهٔ بی‌عرض" +msgstr "ZWNJ _جداکننده‌ی بی‌عرض" #: ../gtk/gtkthemes.c:72 #, c-format @@ -2763,52 +2756,52 @@ msgstr "نمی‌توان موتور تم را در module_path یافت: «%s» #: ../gtk/gtkuimanager.c:1505 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" -msgstr "برچسب شروع غیرمنتظره «%s» در سطر %Id نویسهٔ %Id" +msgstr "برچسب شروع غیرمنتظره «%s» در سطر %Id نویسه‌ی %Id" #: ../gtk/gtkuimanager.c:1595 #, c-format msgid "Unexpected character data on line %d char %d" -msgstr "دادهٔ نویسه‌ای غیرمنتظره در سطر %Id نویسهٔ %Id" +msgstr "داده‌ی نویسه‌ای غیرمنتظره در سطر %Id نویسه‌ی %Id" #: ../gtk/gtkuimanager.c:2427 msgid "Empty" msgstr "خالی" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "بلندی" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "صدا را کم یا زیاد می‌کند." -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "_تنظیم بلندی صدا" -#: ../gtk/gtkvolumebutton.c:94 -#: ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 +#: ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "کم کردن صدا" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "کم کردن بلندی صدا" -#: ../gtk/gtkvolumebutton.c:100 -#: ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 +#: ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "بلند کردن صدا" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "بلند کردن صدا" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "بی‌صدا" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "_آخرِ صدا" @@ -2817,7 +2810,7 @@ msgstr "_آخرِ صدا" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3417,12 +3410,12 @@ msgstr "قانونی دولتی" #: ../gtk/paper_names_offsets.c:123 msgctxt "paper size" msgid "Government Letter" -msgstr "نامهٔ دولتی" +msgstr "نامه‌ی دولتی" #: ../gtk/paper_names_offsets.c:124 msgctxt "paper size" msgid "Index 3x5" -msgstr "نمایهٔ ۵×۳" +msgstr "نمایه‌ی ۵×۳" #: ../gtk/paper_names_offsets.c:125 msgctxt "paper size" @@ -3437,7 +3430,7 @@ msgstr "نمایه ۶×۴ خارجی" #: ../gtk/paper_names_offsets.c:127 msgctxt "paper size" msgid "Index 5x8" -msgstr "نمایهٔ ۸×۵" +msgstr "نمایه‌ی ۸×۵" #: ../gtk/paper_names_offsets.c:128 msgctxt "paper size" @@ -3467,12 +3460,12 @@ msgstr "نامه‌ای ایالات متحده" #: ../gtk/paper_names_offsets.c:133 msgctxt "paper size" msgid "US Letter Extra" -msgstr "نامهٔ ایالات متحده ویژه" +msgstr "نامه‌ی ایالات متحده ویژه" #: ../gtk/paper_names_offsets.c:134 msgctxt "paper size" msgid "US Letter Plus" -msgstr "نامهٔ ایالات متحده اضافه" +msgstr "نامه‌ی ایالات متحده اضافه" #: ../gtk/paper_names_offsets.c:135 msgctxt "paper size" @@ -3648,7 +3641,7 @@ msgstr "ROC 8k" #: ../gtk/updateiconcache.c:552 #, c-format msgid "different idatas found for symlinked '%s' and '%s'\n" -msgstr "برای پیوند نمادی «%s» و «%s» مشخصهٔ idatas متفاتی پیدا شد\n" +msgstr "برای پیوند نمادی «%s» و «%s» مشخصه‌ی idatas متفاتی پیدا شد\n" #: ../gtk/updateiconcache.c:1374 #, c-format @@ -3663,7 +3656,7 @@ msgstr "نوشتن جدول درهم خراب شد \n" #: ../gtk/updateiconcache.c:1386 #, c-format msgid "Failed to write folder index\n" -msgstr "نوشتن نمایهٔ پوشه خراب شد\n" +msgstr "نوشتن نمایه‌ی پوشه خراب شد\n" #: ../gtk/updateiconcache.c:1394 #, c-format @@ -3673,13 +3666,13 @@ msgstr "بازنویسی سرآیند خراب شد\n" #: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" -msgstr "باز کردن پروندهٔ%s : %s خراب شد\n" +msgstr "باز کردن پرونده‌ی%s : %s خراب شد\n" #: ../gtk/updateiconcache.c:1496 #: ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" -msgstr "نوشتن پروندهٔ نهان‌گاه «‎%s» خراب شد\n" +msgstr "نوشتن پرونده‌ی نهان‌گاه «‎%s» خراب شد\n" #: ../gtk/updateiconcache.c:1537 #, c-format @@ -3699,12 +3692,12 @@ msgstr "تغییر نام «%s» به %s ممکن نبود: %s \n" #: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" -msgstr "برگشت تغییر نام پوشهٔ %s به %s ممکن نبود: %s \n" +msgstr "برگشت تغییر نام پوشه‌ی %s به %s ممکن نبود: %s \n" #: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" -msgstr "پروندهٔ نهان‌گاه با موفقیت ایجاد شد.\n" +msgstr "پرونده‌ی نهان‌گاه با موفقیت ایجاد شد.\n" #: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" @@ -3743,7 +3736,7 @@ msgstr "این یک نهان‌گاه نشان معتبر نیست: %s\n" #: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" -msgstr "پروندهٔ نمایهٔ چهره‌ای نیست.\n" +msgstr "پرونده‌ی نمایه‌ی چهره‌ای نیست.\n" #: ../gtk/updateiconcache.c:1736 #, c-format @@ -3751,7 +3744,7 @@ msgid "" "No theme index file in '%s'.\n" "If you really want to create an icon cache here, use --ignore-theme-index.\n" msgstr "" -"پروندهٔ نمایهٔ تم در '%s' نیست.\n" +"پرونده‌ی نمایه‌ی تم در '%s' نیست.\n" "اگر به‌راستی می‌خواهید یک نهان‌گاه نشان اینجا ایجاد کنید، از --ignore-theme-index استفاده کنید..\n" #. ID @@ -3807,7 +3800,7 @@ msgstr "ویتنامی (VIQR)" #. ID #: ../modules/input/imxim.c:28 msgid "X Input Method" -msgstr "شیوهٔ ورودی X" +msgstr "شیوه‌ی ورودی X" #: ../modules/printbackends/cups/gtkprintbackendcups.c:810 #: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 @@ -4207,7 +4200,7 @@ msgstr "چاپگر برون‌خط" #. SUN_BRANDING #: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 msgid "ready to print" -msgstr "آمادهٔ چاپ" +msgstr "آماده‌ی چاپ" #. SUN_BRANDING #: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 @@ -4237,18 +4230,24 @@ msgstr "چاپ به چاپگر آزمایشی" #: ../tests/testfilechooser.c:207 #, c-format msgid "Could not get information for file '%s': %s" -msgstr "نمی‌توان برای پروندهٔ «%s» اطلاعات گرفت: %s" +msgstr "نمی‌توان برای پرونده‌ی «%s» اطلاعات گرفت: %s" #: ../tests/testfilechooser.c:222 #, c-format msgid "Failed to open file '%s': %s" -msgstr "باز کردن پروندهٔ «%s» شکست خورد: %s" +msgstr "باز کردن پرونده‌ی «%s» شکست خورد: %s" #: ../tests/testfilechooser.c:267 #, c-format msgid "Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن معلوم نیست، احتمالاً پروندهٔ تصویری خراب است" +msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن معلوم نیست، احتمالاً پرونده‌ی تصویری خراب است" +#~ msgid "Credits" +#~ msgstr "دست‌اندرکاران" +#~ msgid "Written by" +#~ msgstr "نوشته‌ی" +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "نمی‌توان پرونده‌ی درجی را یافت: «%s»" #~ msgid "Gdk debugging flags to set" #~ msgstr "پرچم‌های اشکال‌زدایی Gdk که باید یک شوند" #~ msgid "Gdk debugging flags to unset" @@ -4256,64 +4255,64 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Error creating folder '%s': %s" #~ msgstr "خطا هنگام ایجاد پوشه «%s» : %s" #~ msgid "Image file '%s' contains no data" -#~ msgstr "پروندهٔ تصویری «%s» هیچ داده‌ای ندارد" +#~ msgstr "پرونده‌ی تصویری «%s» هیچ داده‌ای ندارد" #~ msgid "" #~ "Failed to load animation '%s': reason not known, probably a corrupt " #~ "animation file" #~ msgstr "" -#~ "بار کردن پویانمایی «%s» شکست خورد: دلیل آن معلوم نیست، احتمالاً پروندهٔ " +#~ "بار کردن پویانمایی «%s» شکست خورد: دلیل آن معلوم نیست، احتمالاً پرونده‌ی " #~ "پویانمایی خراب است" #~ msgid "Unable to load image-loading module: %s: %s" -#~ msgstr "نمی‌توان پیمانهٔ تصویربارکن را بار کرد: %s: %s" +#~ msgstr "نمی‌توان پیمانه‌ی تصویربارکن را بار کرد: %s: %s" #~ msgid "" #~ "Image-loading module %s does not export the proper interface; perhaps " #~ "it's from a different GTK version?" #~ msgstr "" -#~ "پیمانهٔ بار کردن پرونده %s رابط مناسب را صادر نمی‌کند؛ شاید از نسخهٔ دیگری " +#~ "پیمانه‌ی بار کردن پرونده %s رابط مناسب را صادر نمی‌کند؛ شاید از نسخه‌ی دیگری " #~ "از GTK است؟" #~ msgid "Image type '%s' is not supported" #~ msgstr "تصویر نوع «%s» پشتیبانی نمی‌شود" #~ msgid "Couldn't recognize the image file format for file '%s'" -#~ msgstr "قالب پروندهٔ تصویر برای پروندهٔ «%s» تشخیص داده نشد" +#~ msgstr "قالب پرونده‌ی تصویر برای پرونده‌ی «%s» تشخیص داده نشد" #~ msgid "Unrecognized image file format" -#~ msgstr "قالب پروندهٔ تصویری ناشناخته" +#~ msgstr "قالب پرونده‌ی تصویری ناشناخته" #~ msgid "Failed to load image '%s': %s" #~ msgstr "بار کردن تصویر «%s» شکست خورد: %s" #~ msgid "Error writing to image file: %s" -#~ msgstr "خطا در نوشتن در پروندهٔ تصویر: %s" +#~ msgstr "خطا در نوشتن در پرونده‌ی تصویر: %s" #~ msgid "" #~ "This build of gdk-pixbuf does not support saving the image format: %s" -#~ msgstr "این ساخت gdk-pixbuf از ذخیرهٔ این قالب تصویری پشتیبانی نمی‌کند: %s" +#~ msgstr "این ساخت gdk-pixbuf از ذخیره‌ی این قالب تصویری پشتیبانی نمی‌کند: %s" #~ msgid "Failed to open temporary file" -#~ msgstr "باز کردن پروندهٔ موقت شکست خورد" +#~ msgstr "باز کردن پرونده‌ی موقت شکست خورد" #~ msgid "Failed to read from temporary file" -#~ msgstr "خواندن از پروندهٔ موقت شکست خورد" +#~ msgstr "خواندن از پرونده‌ی موقت شکست خورد" #~ msgid "Failed to open '%s' for writing: %s" #~ msgstr "نمی‌توان «%s» را برای نوشتن باز کرد: %s" #~ msgid "" #~ "Failed to close '%s' while writing image, all data may not have been " #~ "saved: %s" #~ msgstr "" -#~ "بستن «%s» هنگام نوشتن تصویر شکست خورد، ممکن است همهٔ داده‌ها ذخیره نشده " +#~ "بستن «%s» هنگام نوشتن تصویر شکست خورد، ممکن است همه‌ی داده‌ها ذخیره نشده " #~ "باشند: %s" #~ msgid "Insufficient memory to save image into a buffer" #~ msgstr "حافظه برای ذخیره کردن تصویر در میان‌گیر کافی نیست" #, fuzzy #~ msgid "Error writing to image stream" -#~ msgstr "خطا در نوشتن در پروندهٔ تصویر: %s" +#~ msgstr "خطا در نوشتن در پرونده‌ی تصویر: %s" #, fuzzy #~ msgid "" #~ "Internal error: Image loader module '%s' failed to complete an operation, " #~ "but didn't give a reason for the failure" #~ msgstr "" -#~ "خطای داخلی: پیمانهٔ بارکنندهٔ تصویر «%s» در بار کردن یک تصویر شکست خورد،ولی " +#~ "خطای داخلی: پیمانه‌ی بارکننده‌ی تصویر «%s» در بار کردن یک تصویر شکست خورد،ولی " #~ "دلیلی برای این شکست اعلام نکرد" #~ msgid "Incremental loading of image type '%s' is not supported" #~ msgstr "بار کردن افزایشی تصویر نوع «%s» پشتیبانی نمی‌شود" #~ msgid "Image header corrupt" -#~ msgstr "سرصفحهٔ تصویر خراب است" +#~ msgstr "سرصفحه‌ی تصویر خراب است" #~ msgid "Image format unknown" #~ msgstr "قالب تصویر نامعلوم است" #~ msgid "Image pixel data corrupt" @@ -4326,19 +4325,19 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Unsupported animation type" #~ msgstr "پویانمایی از نوع پشتیبانی‌نشده" #~ msgid "Invalid header in animation" -#~ msgstr "سرصفحهٔ نامعتبر در پویانمایی" +#~ msgstr "سرصفحه‌ی نامعتبر در پویانمایی" #~ msgid "Not enough memory to load animation" #~ msgstr "حافظه برای بار کردن پویانمایی کافی نیست" #~ msgid "Malformed chunk in animation" -#~ msgstr "تکهٔ معیوب در پویانمایی" +#~ msgstr "تکه‌ی معیوب در پویانمایی" #~ msgid "The ANI image format" #~ msgstr "قالب تصویر ANI" #~ msgid "BMP image has bogus header data" -#~ msgstr "داده‌های سرصفحهٔ تصویر BMP جعلی است" +#~ msgstr "داده‌های سرصفحه‌ی تصویر BMP جعلی است" #~ msgid "Not enough memory to load bitmap image" #~ msgstr "حافظه برای بار کردن تصویر نقشه‌بیتی کافی نیست" #~ msgid "BMP image has unsupported header size" -#~ msgstr "اندازهٔ سرصفحهٔ تصویر BMP پشتیبانی نمی‌شود" +#~ msgstr "اندازه‌ی سرصفحه‌ی تصویر BMP پشتیبانی نمی‌شود" #~ msgid "Topdown BMP images cannot be compressed" #~ msgstr "تصاویر BMP ازبالا‌به‌پایین نمی‌توانند فشرده باشند" #~ msgid "Premature end-of-file encountered" @@ -4346,7 +4345,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Couldn't allocate memory for saving BMP file" -#~ msgstr "نمی‌توان برای بار کردن پروندهٔ JPEG حافظه تخصیص داد" +#~ msgstr "نمی‌توان برای بار کردن پرونده‌ی JPEG حافظه تخصیص داد" #, fuzzy #~ msgid "Couldn't write to BMP file" @@ -4357,29 +4356,29 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgstr "شکست در خواندن GIF: %s" #~ msgid "GIF file was missing some data (perhaps it was truncated somehow?)" #~ msgstr "" -#~ "بعضی از داده‌های پروندهٔ GIF مفقود شده‌اند (شاید پرونده به شکلی قطع شده است؟)‏" +#~ "بعضی از داده‌های پرونده‌ی GIF مفقود شده‌اند (شاید پرونده به شکلی قطع شده است؟)‏" #~ msgid "Internal error in the GIF loader (%s)" #~ msgstr "خطای داخلی در بارگذار GIF (%s)" #~ msgid "Stack overflow" #~ msgstr "سرریز پشته" #~ msgid "GIF image loader cannot understand this image." -#~ msgstr "بارکنندهٔ تصویر GIF نمی‌تواند این تصویر را بفهمد." +#~ msgstr "بارکننده‌ی تصویر GIF نمی‌تواند این تصویر را بفهمد." #~ msgid "Bad code encountered" #~ msgstr "برخورد با کد بد" #~ msgid "Circular table entry in GIF file" -#~ msgstr "مدخل دوری جدول در پروندهٔ GIF" +#~ msgstr "مدخل دوری جدول در پرونده‌ی GIF" #~ msgid "Not enough memory to load GIF file" -#~ msgstr "حافظه برای بار کردن پروندهٔ GIF کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی GIF کافی نیست" #, fuzzy #~ msgid "Not enough memory to composite a frame in GIF file" -#~ msgstr "حافظه برای بار کردن پروندهٔ GIF کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی GIF کافی نیست" #~ msgid "GIF image is corrupt (incorrect LZW compression)" #~ msgstr "تصویر GIF خراب است (فشرده‌سازی LZW غلط)" #~ msgid "File does not appear to be a GIF file" -#~ msgstr "پرونده به‌نظر یک پروندهٔ GIF نمی‌رسد" +#~ msgstr "پرونده به‌نظر یک پرونده‌ی GIF نمی‌رسد" #~ msgid "Version %s of the GIF file format is not supported" -#~ msgstr "نسخهٔ %s از قالب پروندهٔ GIF پشتیبانی نمی‌شود" +#~ msgstr "نسخه‌ی %s از قالب پرونده‌ی GIF پشتیبانی نمی‌شود" #~ msgid "" #~ "GIF image has no global colormap, and a frame inside it has no local " #~ "colormap." @@ -4391,7 +4390,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "The GIF image format" #~ msgstr "قالب تصویر GIF" #~ msgid "Invalid header in icon" -#~ msgstr "سرصفحهٔ نامعتبر در شمایل" +#~ msgstr "سرصفحه‌ی نامعتبر در شمایل" #~ msgid "Not enough memory to load icon" #~ msgstr "حافظه برای بار کردن شمایل کافی نیست" #~ msgid "Icon has zero width" @@ -4403,19 +4402,19 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Unsupported icon type" #~ msgstr "شمایل از نوع پشتیانی‌نشده" #~ msgid "Not enough memory to load ICO file" -#~ msgstr "حافظه برای بار کردن پروندهٔ ICO کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی ICO کافی نیست" #~ msgid "Image too large to be saved as ICO" #~ msgstr "تصویر برای ذخیره شدن به‌عنوان ICO خیلی بزرگ است" #~ msgid "Cursor hotspot outside image" #~ msgstr "کانون مکان‌نما خارج از تصویر است" #~ msgid "Unsupported depth for ICO file: %d" -#~ msgstr "عمق پشتیبانی‌نشده برای پروندهٔ ICO: %Id" +#~ msgstr "عمق پشتیبانی‌نشده برای پرونده‌ی ICO: %Id" #~ msgid "The ICO image format" #~ msgstr "قالب تصویر ICO" #, fuzzy #~ msgid "Error reading ICNS image: %s" -#~ msgstr "خطای مهلک در خواندن پروندهٔ تصویری PNG‏: %s" +#~ msgstr "خطای مهلک در خواندن پرونده‌ی تصویری PNG‏: %s" #, fuzzy #~ msgid "Could not decode ICNS file" @@ -4443,11 +4442,11 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Couldn't allocate memory for color profile" -#~ msgstr "نمی‌توان برای بار کردن پروندهٔ JPEG حافظه تخصیص داد" +#~ msgstr "نمی‌توان برای بار کردن پرونده‌ی JPEG حافظه تخصیص داد" #, fuzzy #~ msgid "Insufficient memory to open JPEG 2000 file" -#~ msgstr "حافظه برای بار کردن پروندهٔ TIFF کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی TIFF کافی نیست" #, fuzzy #~ msgid "Couldn't allocate memory to buffer image data" @@ -4457,7 +4456,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "The JPEG 2000 image format" #~ msgstr "قالب تصویر JPEG" #~ msgid "Error interpreting JPEG image file (%s)" -#~ msgstr "خطا در تفسیر پروندهٔ JPEG ‏(%s)" +#~ msgstr "خطا در تفسیر پرونده‌ی JPEG ‏(%s)" #~ msgid "" #~ "Insufficient memory to load image, try exiting some applications to free " #~ "memory" @@ -4467,7 +4466,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Unsupported JPEG color space (%s)" #~ msgstr "فضای رنگ JPEG پشتیبانی نمی‌شود (%s)" #~ msgid "Couldn't allocate memory for loading JPEG file" -#~ msgstr "نمی‌توان برای بار کردن پروندهٔ JPEG حافظه تخصیص داد" +#~ msgstr "نمی‌توان برای بار کردن پرونده‌ی JPEG حافظه تخصیص داد" #, fuzzy #~ msgid "Transformed JPEG has zero width or height." @@ -4498,7 +4497,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Couldn't allocate memory for paletted data" #~ msgstr "نمی‌توان برای داده‌های تخته‌رنگ‌شده حافظه تخصیص داد" #~ msgid "Didn't get all lines of PCX image" -#~ msgstr "همهٔ خطهای تصویر PCX گرفته نشد" +#~ msgstr "همه‌ی خطهای تصویر PCX گرفته نشد" #~ msgid "No palette found at end of PCX data" #~ msgstr "در انتهای داده‌های PCX تخته‌رنگی یافته نشد" #~ msgid "The PCX image format" @@ -4514,19 +4513,19 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Transformed PNG has unsupported number of channels, must be 3 or 4." #~ msgstr "تعداد کانالهای PNG تبدیل‌شده پشتیبانی نمی‌شود، باید ۳ یا ۴ تا باشد." #~ msgid "Fatal error in PNG image file: %s" -#~ msgstr "خطای مهلک در پروندهٔ تصویر PNG‏: %s" +#~ msgstr "خطای مهلک در پرونده‌ی تصویر PNG‏: %s" #~ msgid "Insufficient memory to load PNG file" -#~ msgstr "حافظه برای بار کردن پروندهٔ PNG کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی PNG کافی نیست" #~ msgid "" #~ "Insufficient memory to store a %ld by %ld image; try exiting some " #~ "applications to reduce memory usage" #~ msgstr "" -#~ "حافظه برای ذخیرهٔ یک تصویر %Ild در %Ild کافی نیست؛ برای کاهش مصرف حافظه " +#~ "حافظه برای ذخیره‌ی یک تصویر %Ild در %Ild کافی نیست؛ برای کاهش مصرف حافظه " #~ "خروج از بعضی برنامه‌ها را امتحان کنید" #~ msgid "Fatal error reading PNG image file" -#~ msgstr "خطای مهلک در خواندن پروندهٔ تصویری PNG" +#~ msgstr "خطای مهلک در خواندن پرونده‌ی تصویری PNG" #~ msgid "Fatal error reading PNG image file: %s" -#~ msgstr "خطای مهلک در خواندن پروندهٔ تصویری PNG‏: %s" +#~ msgstr "خطای مهلک در خواندن پرونده‌ی تصویری PNG‏: %s" #~ msgid "" #~ "Keys for PNG text chunks must have at least 1 and at most 79 characters." #~ msgstr "کلیدهای تکه‌متنهای PNG باید حداقل یک و حداکثر ۷۹ نویسه داشته باشند." @@ -4550,40 +4549,40 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "The PNG image format" #~ msgstr "قالب تصویر PNG" #~ msgid "PNM loader expected to find an integer, but didn't" -#~ msgstr "بارکنندهٔ PNM انتظار داشت یک عدد صحیح ببیند، ولی ندید" +#~ msgstr "بارکننده‌ی PNM انتظار داشت یک عدد صحیح ببیند، ولی ندید" #~ msgid "PNM file has an incorrect initial byte" -#~ msgstr "بایت ابتدایی پروندهٔ PNM نادرست است" +#~ msgstr "بایت ابتدایی پرونده‌ی PNM نادرست است" #~ msgid "PNM file is not in a recognized PNM subformat" -#~ msgstr "پروندهٔ PNM در زیرقالب شناخته‌شده‌ای از PNM نیست" +#~ msgstr "پرونده‌ی PNM در زیرقالب شناخته‌شده‌ای از PNM نیست" #~ msgid "PNM file has an image width of 0" -#~ msgstr "عرض تصویر پروندهٔ PNM صفر است" +#~ msgstr "عرض تصویر پرونده‌ی PNM صفر است" #~ msgid "PNM file has an image height of 0" -#~ msgstr "ارتفاع تصویر پروندهٔ PNM صفر است" +#~ msgstr "ارتفاع تصویر پرونده‌ی PNM صفر است" #~ msgid "Maximum color value in PNM file is 0" -#~ msgstr "حداکثر مقدار رنگ در پروندهٔ PNM صفر است" +#~ msgstr "حداکثر مقدار رنگ در پرونده‌ی PNM صفر است" #~ msgid "Maximum color value in PNM file is too large" -#~ msgstr "مقدار حداکثر رنگ در پروندهٔ PNM خیلی بزرگ است" +#~ msgstr "مقدار حداکثر رنگ در پرونده‌ی PNM خیلی بزرگ است" #~ msgid "Raw PNM image type is invalid" #~ msgstr "نوع تصویر PNM خام نامعتبر است" #~ msgid "PNM image loader does not support this PNM subformat" -#~ msgstr "بارکنندهٔ تصویر PNM از این زیرقالب پشتیبانی نمی‌کند" +#~ msgstr "بارکننده‌ی تصویر PNM از این زیرقالب پشتیبانی نمی‌کند" #~ msgid "Raw PNM formats require exactly one whitespace before sample data" #~ msgstr "" -#~ "قالبهای PNM خام به دقیقاً یک فاصلهٔ خالی قبل از داده‌های نمونه نیاز دارند" +#~ "قالبهای PNM خام به دقیقاً یک فاصله‌ی خالی قبل از داده‌های نمونه نیاز دارند" #~ msgid "Cannot allocate memory for loading PNM image" #~ msgstr "نمی‌توان برای بار کردن تصویر PNM حافظه تخصیص داد" #~ msgid "Insufficient memory to load PNM context struct" -#~ msgstr "حافظه برای بار کردن ساختار زمینهٔ PNM کافی نیست" +#~ msgstr "حافظه برای بار کردن ساختار زمینه‌ی PNM کافی نیست" #~ msgid "Unexpected end of PNM image data" -#~ msgstr "پایان غیرمنتظرهٔ داده‌های تصویر PNM" +#~ msgstr "پایان غیرمنتظره‌ی داده‌های تصویر PNM" #~ msgid "Insufficient memory to load PNM file" -#~ msgstr "حافظه برای بار کردن پروندهٔ PNM کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی PNM کافی نیست" #~ msgid "The PNM/PBM/PGM/PPM image format family" -#~ msgstr "خانوادهٔ قالبهای تصویر PNM/PBM/PGM/PPM" +#~ msgstr "خانواده‌ی قالبهای تصویر PNM/PBM/PGM/PPM" #, fuzzy #~ msgid "Failed to read QTIF header" -#~ msgstr "باز کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "باز کردن پرونده‌ی TIFF شکست خورد" #, fuzzy #~ msgid "Failed to allocate %d bytes for file read buffer" @@ -4595,15 +4594,15 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Failed to allocate QTIF context structure." -#~ msgstr "نمی‌توان برای ساختار زمینهٔ TGA حافظه تخصیص داد" +#~ msgstr "نمی‌توان برای ساختار زمینه‌ی TGA حافظه تخصیص داد" #, fuzzy #~ msgid "Failed to create GdkPixbufLoader object." -#~ msgstr "خواندن از پروندهٔ موقت شکست خورد" +#~ msgstr "خواندن از پرونده‌ی موقت شکست خورد" #, fuzzy #~ msgid "Failed to find an image data atom." -#~ msgstr "باز کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "باز کردن پرونده‌ی TIFF شکست خورد" #, fuzzy #~ msgid "The QTIF image format" @@ -4637,43 +4636,43 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Unexpected bitdepth for colormap entries" #~ msgstr "عمق بیتی غیرمنتظره برای مدخلهای نقشه‌رنگ" #~ msgid "Cannot allocate TGA header memory" -#~ msgstr "نمی‌توان حافظهٔ سرصفحهٔ TGA را تخصیص داد" +#~ msgstr "نمی‌توان حافظه‌ی سرصفحه‌ی TGA را تخصیص داد" #~ msgid "TGA image has invalid dimensions" -#~ msgstr "ابعاد پروندهٔ TGA نامعتبر است" +#~ msgstr "ابعاد پرونده‌ی TGA نامعتبر است" #~ msgid "TGA image type not supported" #~ msgstr "تصویر نوع TGA پشتیبانی نمی‌شود" #~ msgid "Cannot allocate memory for TGA context struct" -#~ msgstr "نمی‌توان برای ساختار زمینهٔ TGA حافظه تخصیص داد" +#~ msgstr "نمی‌توان برای ساختار زمینه‌ی TGA حافظه تخصیص داد" #~ msgid "Excess data in file" #~ msgstr "داده‌های اضافی در پرونده" #~ msgid "The Targa image format" #~ msgstr "قالب تصویر تارگا" #~ msgid "Could not get image width (bad TIFF file)" -#~ msgstr "نمی‌توان عرض تصویر را گرفت (پروندهٔ TIFF خراب)" +#~ msgstr "نمی‌توان عرض تصویر را گرفت (پرونده‌ی TIFF خراب)" #~ msgid "Could not get image height (bad TIFF file)" -#~ msgstr "نمی‌توان ارتفاع تصویر را گرفت (پروندهٔ TIFF خراب)" +#~ msgstr "نمی‌توان ارتفاع تصویر را گرفت (پرونده‌ی TIFF خراب)" #~ msgid "Width or height of TIFF image is zero" #~ msgstr "عرض یا ارتفاع تصویر TIFF صفر است" #~ msgid "Dimensions of TIFF image too large" #~ msgstr "ابعاد تصویر TIFF خیلی بزرگ است" #~ msgid "Insufficient memory to open TIFF file" -#~ msgstr "حافظه برای بار کردن پروندهٔ TIFF کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی TIFF کافی نیست" #~ msgid "Failed to load RGB data from TIFF file" -#~ msgstr "نمی‌توان داده‌های RGB را از پروندهٔ TIFF بار کرد" +#~ msgstr "نمی‌توان داده‌های RGB را از پرونده‌ی TIFF بار کرد" #~ msgid "Failed to open TIFF image" -#~ msgstr "باز کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "باز کردن پرونده‌ی TIFF شکست خورد" #~ msgid "TIFFClose operation failed" #~ msgstr "عملیات TIFFClose شکست خورد" #~ msgid "Failed to load TIFF image" -#~ msgstr "بار کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "بار کردن پرونده‌ی TIFF شکست خورد" #, fuzzy #~ msgid "Failed to save TIFF image" -#~ msgstr "باز کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "باز کردن پرونده‌ی TIFF شکست خورد" #, fuzzy #~ msgid "Failed to write TIFF data" -#~ msgstr "باز کردن پروندهٔ TIFF شکست خورد" +#~ msgstr "باز کردن پرونده‌ی TIFF شکست خورد" #, fuzzy #~ msgid "Couldn't write to TIFF file" @@ -4691,33 +4690,33 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "The WBMP image format" #~ msgstr "قالب تصویری WBMP" #~ msgid "Invalid XBM file" -#~ msgstr "پروندهٔ XBM نامعتبر" +#~ msgstr "پرونده‌ی XBM نامعتبر" #~ msgid "Insufficient memory to load XBM image file" -#~ msgstr "حافظه برای بار کردن پروندهٔ تصویری XBM کافی نیست" +#~ msgstr "حافظه برای بار کردن پرونده‌ی تصویری XBM کافی نیست" #~ msgid "Failed to write to temporary file when loading XBM image" -#~ msgstr "نوشتن پروندهٔ موقت هنگام بار کردن تصویر XNM شکست خورد" +#~ msgstr "نوشتن پرونده‌ی موقت هنگام بار کردن تصویر XNM شکست خورد" #~ msgid "The XBM image format" #~ msgstr "قالب تصویر XBM" #~ msgid "No XPM header found" -#~ msgstr "سرصفحهٔ XPM یافت نشد" +#~ msgstr "سرصفحه‌ی XPM یافت نشد" #, fuzzy #~ msgid "Invalid XPM header" -#~ msgstr "پروندهٔ XBM نامعتبر" +#~ msgstr "پرونده‌ی XBM نامعتبر" #~ msgid "XPM file has image width <= 0" -#~ msgstr "عرض تصویر پروندهٔ XPM کمتر یا مساوی صفر است" +#~ msgstr "عرض تصویر پرونده‌ی XPM کمتر یا مساوی صفر است" #~ msgid "XPM file has image height <= 0" -#~ msgstr "ارتفاع تصویر پروندهٔ XPM کمتر یا مساوی صفر است" +#~ msgstr "ارتفاع تصویر پرونده‌ی XPM کمتر یا مساوی صفر است" #~ msgid "XPM has invalid number of chars per pixel" -#~ msgstr "تعداد نویسه بر نقطهٔ XPM نامعتبر است" +#~ msgstr "تعداد نویسه بر نقطه‌ی XPM نامعتبر است" #~ msgid "XPM file has invalid number of colors" -#~ msgstr "تعداد رنگهای پروندهٔ XPM نامعتبر است" +#~ msgstr "تعداد رنگهای پرونده‌ی XPM نامعتبر است" #~ msgid "Cannot allocate memory for loading XPM image" #~ msgstr "نمی‌توان برای بار کردن تصویر XPM حافظه تخصیص داد" #~ msgid "Cannot read XPM colormap" #~ msgstr "نمی‌توان نقشه‌رنگ XPM را خواند" #~ msgid "Failed to write to temporary file when loading XPM image" -#~ msgstr "نوشتن در پروندهٔ موقت هنگام بار کردن تصویر XPM شکست خورد" +#~ msgstr "نوشتن در پرونده‌ی موقت هنگام بار کردن تصویر XPM شکست خورد" #~ msgid "The XPM image format" #~ msgstr "قالب تصویر XPM" @@ -4731,7 +4730,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Could not create stream: %s" -#~ msgstr "خطا در ایجاد شاخهٔ «%s»: %s" +#~ msgstr "خطا در ایجاد شاخه‌ی «%s»: %s" #, fuzzy #~ msgid "Could not seek stream: %s" @@ -4739,7 +4738,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Could not read from stream: %s" -#~ msgstr "خطا در ایجاد شاخهٔ «%s»: %s" +#~ msgstr "خطا در ایجاد شاخه‌ی «%s»: %s" #, fuzzy #~ msgid "Couldn't load bitmap" @@ -4773,53 +4772,51 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ "available to this program.\n" #~ "Are you sure that you want to select it?" #~ msgstr "" -#~ "پروندهٔ «%s» روی دستگاه دیگری (به نام %s) است و ممکن است برای این برنامه " +#~ "پرونده‌ی «%s» روی دستگاه دیگری (به نام %s) است و ممکن است برای این برنامه " #~ "قابل دسترسی نباشد.\n" #~ "آیا مطمئنید می‌خواهید انتخابش کنید؟" #~ msgid "_New Folder" -#~ msgstr "پوشهٔ _جدید" +#~ msgstr "پوشه‌ی _جدید" #~ msgid "De_lete File" #~ msgstr "_حذف پرونده" #~ msgid "_Rename File" #~ msgstr "_تغییر نام پرونده" #~ msgid "" #~ "The folder name \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "نام پوشهٔ «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" +#~ msgstr "نام پوشه‌ی «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" #~ msgid "New Folder" -#~ msgstr "پوشهٔ جدید" +#~ msgstr "پوشه‌ی جدید" #~ msgid "_Folder name:" #~ msgstr "_نام پوشه:" -#~ msgid "C_reate" -#~ msgstr "_ایجاد" #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "نام پروندهٔ «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" +#~ msgstr "نام پرونده‌ی «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" #, fuzzy #~ msgid "Error deleting file '%s': %s" -#~ msgstr "خطا در حذف پروندهٔ \"%s\": %s" +#~ msgstr "خطا در حذف پرونده‌ی \"%s\": %s" #~ msgid "Really delete file \"%s\"?" -#~ msgstr "پروندهٔ «%s» واقعاً حذف شود؟" +#~ msgstr "پرونده‌ی «%s» واقعاً حذف شود؟" #~ msgid "Delete File" #~ msgstr "حذف پرونده" #, fuzzy #~ msgid "Error renaming file to \"%s\": %s" #~ msgstr "" -#~ "خطا در تغییر نام پروندهٔ «%s»: %s\n" +#~ "خطا در تغییر نام پرونده‌ی «%s»: %s\n" #~ "%s" #, fuzzy #~ msgid "Error renaming file \"%s\": %s" #~ msgstr "" -#~ "خطا در تغییر نام پروندهٔ «%s»: %s\n" +#~ "خطا در تغییر نام پرونده‌ی «%s»: %s\n" #~ "%s" #~ msgid "Error renaming file \"%s\" to \"%s\": %s" -#~ msgstr "خطا در تغییر نام پروندهٔ «%s» به «%s»: %s" +#~ msgstr "خطا در تغییر نام پرونده‌ی «%s» به «%s»: %s" #~ msgid "Rename File" #~ msgstr "تغییر نام پرونده" #~ msgid "Rename file \"%s\" to:" -#~ msgstr "تغییر نام پروندهٔ «%s» به:" +#~ msgstr "تغییر نام پرونده‌ی «%s» به:" #~ msgid "_Rename" #~ msgstr "_تغییر نام" #~ msgid "_Selection: " @@ -4828,7 +4825,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ "The filename \"%s\" couldn't be converted to UTF-8. (try setting the " #~ "environment variable G_FILENAME_ENCODING): %s" #~ msgstr "" -#~ "نام پروندهٔ «%s» را نمی‌توان به UTF-8 تبدیل کرد. (تنظیم متغیر محیطی " +#~ "نام پرونده‌ی «%s» را نمی‌توان به UTF-8 تبدیل کرد. (تنظیم متغیر محیطی " #~ "G_FILENAME_ENCODING را امتحان کنید): %s" #~ msgid "Invalid UTF-8" #~ msgstr "‏UTF-8 نامعتبر" @@ -4941,9 +4938,9 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Group" #~ msgstr "گروه" #~ msgid "The radio tool button whose group this button belongs to." -#~ msgstr "دکمهٔ ابزار رادیویی‌ای که این دکمه به گروه آن تعلق دارد." +#~ msgstr "دکمه‌ی ابزار رادیویی‌ای که این دکمه به گروه آن تعلق دارد." #~ msgid "Invalid filename: %s" -#~ msgstr "نام پروندهٔ نامعتبر: %s" +#~ msgstr "نام پرونده‌ی نامعتبر: %s" #~ msgid "" #~ "Could not add a bookmark for '%s' because it is an invalid path name." #~ msgstr "نمی‌توان برای «%s» نشانکی اضافه کرد چون نام مسیر نامعتبری است." @@ -4958,7 +4955,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgstr[0] "%Id بایت" #, fuzzy #~ msgid "Could not get a stock icon for %s\n" -#~ msgstr "نمی‌توان برای پروندهٔ «%s» اطلاعات گرفت: %s" +#~ msgstr "نمی‌توان برای پرونده‌ی «%s» اطلاعات گرفت: %s" #~ msgid "Error getting information for '%s': %s" #~ msgstr "خطا در گرفتن اطلاعات برای «%s»: %s" #~ msgid "This file system does not support mounting" @@ -4967,15 +4964,15 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ "The name \"%s\" is not valid because it contains the character \"%s\". " #~ "Please use a different name." #~ msgstr "" -#~ "نام «%s» معتبر نیست چون شامل نویسهٔ «%s» است. لطفاً از نام دیگری استفاده کنید." +#~ "نام «%s» معتبر نیست چون شامل نویسه‌ی «%s» است. لطفاً از نام دیگری استفاده کنید." #~ msgid "Bookmark saving failed: %s" -#~ msgstr "ذخیرهٔ نشانک‌ شکست خورد: %s" +#~ msgstr "ذخیره‌ی نشانک‌ شکست خورد: %s" #~ msgid "'%s' already exists in the bookmarks list" #~ msgstr "‏«%s» از قبل در فهرست نشانک‌ها موجود است" #~ msgid "'%s' does not exist in the bookmarks list" #~ msgstr "‏«%s» در فهرست نشانک‌ها موجود نیست" #~ msgid "Unknown attribute '%s' on line %d char %d" -#~ msgstr "مشخصهٔ نامعلوم «%s» در سطر %Id نویسهٔ %Id" +#~ msgstr "مشخصه‌ی نامعلوم «%s» در سطر %Id نویسه‌ی %Id" #~ msgid "Default" #~ msgstr "پیش‌فرض" @@ -4991,14 +4988,14 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "PNM image format is invalid" #~ msgstr "قالب تصویر PNM نامعتبر است" #~ msgid "Error creating directory '%s': %s" -#~ msgstr "خطا در ایجاد شاخهٔ «%s»: %s" +#~ msgstr "خطا در ایجاد شاخه‌ی «%s»: %s" #~ msgid "Thai (Broken)" #~ msgstr "تایلندی (شکسته)" #~ msgid "" #~ "Error creating folder \"%s\": %s\n" #~ "%s" #~ msgstr "" -#~ "خطا در ایجاد پوشهٔ «%s»: %s\n" +#~ "خطا در ایجاد پوشه‌ی «%s»: %s\n" #~ "%s" #~ msgid "You probably used symbols not allowed in filenames." #~ msgstr "احتمالاً از نمادهایی استفاده کرده‌اید که در نام پرونده‌ها مجاز نیستند" @@ -5006,13 +5003,13 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ "Error deleting file \"%s\": %s\n" #~ "%s" #~ msgstr "" -#~ "خطا در حذف پروندهٔ «%s»: %s\n" +#~ "خطا در حذف پرونده‌ی «%s»: %s\n" #~ "%s" #~ msgid "It probably contains symbols not allowed in filenames." #~ msgstr "احتمالاً نمادهایی دارد که در نام پرونده‌ها مجاز نیست." #~ msgid "" #~ "The file name \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "نام پروندهٔ «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" +#~ msgstr "نام پرونده‌ی «%s» نمادهایی دارد که در نام پرونده‌ها مجاز نیستند" #~ msgid "Error getting information for '/': %s" #~ msgstr "خطا در گرفتن اطلاعات برای «/»: %s" #~ msgid "Select All" @@ -5024,7 +5021,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "Cannot handle PNM files with maximum color values greater than 255" #~ msgstr "نمی‌توان با پرونده‌های PNM با حداکثر مقدار رنگ بیشتر از ۲۵۵ کار کرد" #~ msgid "Could not get information about '%s': %s" -#~ msgstr "نمی‌توان دربارهٔ «%s» اطلاعات گرفت: %s" +#~ msgstr "نمی‌توان درباره‌ی «%s» اطلاعات گرفت: %s" #~ msgid "Shortcuts" #~ msgstr "میانبرها" #~ msgid "Folder" @@ -5044,7 +5041,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #, fuzzy #~ msgid "Writing %s failed: %s" -#~ msgstr "ذخیرهٔ نشانک‌ شکست خورد: %s" +#~ msgstr "ذخیره‌ی نشانک‌ شکست خورد: %s" #~ msgid "_Credits" #~ msgstr "_دست‌اندرکاران" @@ -5057,7 +5054,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ "Could not change the current folder to %s:\n" #~ "%s" #~ msgstr "" -#~ "خطا در ایجاد پوشهٔ \"%s\": %s\n" +#~ "خطا در ایجاد پوشه‌ی \"%s\": %s\n" #~ "%s" #, fuzzy @@ -5076,7 +5073,7 @@ msgstr "بار کردن تصویر «%s» شکست خورد: دلیل آن مع #~ msgid "_Filename:" #~ msgstr "نام پرونده" #~ msgid "Current folder: %s" -#~ msgstr "پوشهٔ فعلی: %s" +#~ msgstr "پوشه‌ی فعلی: %s" #~ msgid "Zoom _100%" #~ msgstr "زوم _۱۰۰٪" diff --git a/po/gl.po b/po/gl.po index 63272e3950..a96eafa016 100644 --- a/po/gl.po +++ b/po/gl.po @@ -15,14 +15,14 @@ # Antón Méixome , 2010. # Francisco Diéguez , 2010. # Fran Dieguez , 2009, 2010. -# Fran Diéguez , 2009, 2010. +# Fran Diéguez , 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gtk+-master-po-gl-77922___.merged\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-26 16:52+0200\n" -"PO-Revision-Date: 2010-10-25 01:05+0200\n" +"POT-Creation-Date: 2011-01-16 17:11+0100\n" +"PO-Revision-Date: 2011-01-16 17:11+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -32,58 +32,48 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: KBabel 1.11.4\n" -#: ../gdk/gdk.c:104 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Produciuse un erro ao analizar a opción --gdk-debug" -#: ../gdk/gdk.c:124 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Produciuse un erro ao analizar a opción --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:152 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Clase de programa tal como a usa o xestor de xanelas" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:153 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "CLASE" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:155 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Nome do programa tal como o usa o xestor de xanelas" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:156 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NOME" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:158 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "Pantalla de X que se vai usar" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:159 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "PANTALLA" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:161 -msgid "X screen to use" -msgstr "Pantalla X que se vai usar" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:162 -msgid "SCREEN" -msgstr "PANTALLA" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:165 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "Opcións de depuración GDK para estabelecer" @@ -91,12 +81,12 @@ msgstr "Opcións de depuración GDK para estabelecer" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:166 ../gdk/gdk.c:169 ../gtk/gtkmain.c:534 ../gtk/gtkmain.c:537 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "PARÁMETROS" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:168 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "Opcións de depuración GDK para quitar" @@ -286,110 +276,108 @@ msgid "Delete" msgstr "Eliminar" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Non procesar en lotes os pedidos GDI" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Non usar a API Wintab para a compatibilide de táboas" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "O mesmo que --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Usar a API Wintab [predefinido]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Tamaño da paleta en modo 8 bits" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "CORES" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Iniciando %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Abrindo %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Abrindo %d elemento" msgstr[1] "Abrindo %d elementos" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Facer chamadas a X síncronas" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" -"Este programa non fornece NINGUNHA GARANTÍA, para máis información visite %s" +"Este programa non fornece NINGUNHA GARANTÍA, para máis información visite %s" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2232 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Licenza" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "A licenza do programa" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:621 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "C_réditos" #. Add the license button -#: ../gtk/gtkaboutdialog.c:635 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Licenza" -#: ../gtk/gtkaboutdialog.c:839 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "Non foi posíbel mostrar a ligazón" -#: ../gtk/gtkaboutdialog.c:932 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "Páxina web" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "Sobre %s" -#: ../gtk/gtkaboutdialog.c:2150 -msgid "Credits" -msgstr "Créditos" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "Creado por" -#: ../gtk/gtkaboutdialog.c:2182 -msgid "Written by" -msgstr "Escrito por" - -#: ../gtk/gtkaboutdialog.c:2185 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Documentado por" -#: ../gtk/gtkaboutdialog.c:2197 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "Traducido por" -#: ../gtk/gtkaboutdialog.c:2201 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Material gráfico por" @@ -398,7 +386,7 @@ msgstr "Material gráfico por" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Maiús" @@ -408,7 +396,7 @@ msgstr "Maiús" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -418,7 +406,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -428,7 +416,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Súper" @@ -438,7 +426,7 @@ msgstr "Súper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Híper" @@ -448,39 +436,122 @@ msgstr "Híper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Espazo" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Barra invertida" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "Outro aplicativo..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Produciuse un fallo ao ver os aplicativos en liña" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Buscar os aplicativos en liña" + +#: ../gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "Non foi posíbel executar o aplicativo" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "Non foi posíbel encontrar «%s»" + +#: ../gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "Non foi posíbel atopar o aplicativo" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Seleccione un aplicativo para abrir «%s»" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Non existen aplicativos dispoñíbeis para abrir «%s»" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Seleccione un aplicativo para os ficheiros «%s»" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Non hai ningún aplicativo dispoñíbel para abrir os ficheiros «%s»" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"Prema «Mostrar outros aplicativos», para ver máis opcións, ou «Buscar " +"aplicativos en liña» para instalar un novo aplicativo" + +#: ../gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "Esquecer a asociación" + +#: ../gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "Mostrar outros aplicativos" + +#: ../gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "_Abrir" + +#: ../gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "Aplicativo predeterminado" + +#: ../gtk/gtkappchooserwidget.c:730 +msgid "Recommended Applications" +msgstr "Aplicativos recomendados" + +#: ../gtk/gtkappchooserwidget.c:744 +msgid "Related Applications" +msgstr "Aplicativos relacionados" + +#: ../gtk/gtkappchooserwidget.c:758 +msgid "Other Applications" +msgstr "Outros aplicativos" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Tipo de función incorrecta na liña %d: «%s»" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "" "O identificador de obxecto «%s» na liña %d está duplicado (anteriormente na " "liña %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Elemento raíz incorrecto: «%s»" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Etiqueta non compatíbel: «%s»" @@ -495,7 +566,7 @@ msgstr "Etiqueta non compatíbel: «%s»" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:873 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:MY" @@ -503,7 +574,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:911 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -512,7 +583,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1843 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -527,7 +598,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1874 ../gtk/gtkcalendar.c:2535 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -543,7 +614,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1906 ../gtk/gtkcalendar.c:2403 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -559,7 +630,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2168 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -567,7 +638,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Desactivada" @@ -576,7 +647,7 @@ msgstr "Desactivada" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "Incorrecta" @@ -585,7 +656,7 @@ msgstr "Incorrecta" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:730 msgid "New accelerator..." msgstr "Tecla rápida nova..." @@ -595,15 +666,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:175 ../gtk/gtkcolorbutton.c:460 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "Seleccione unha cor" -#: ../gtk/gtkcolorbutton.c:350 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "Recibiuse un dato de cor incorrecto\n" -#: ../gtk/gtkcolorsel.c:395 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -611,7 +682,7 @@ msgstr "" "Seleccione a cor que quere desde o anel exterior. Seleccione a escuridade ou " "luminosidade usando o triángulo interior." -#: ../gtk/gtkcolorsel.c:419 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -619,67 +690,67 @@ msgstr "" "Seleccione o contagotas, despois prema sobre calquera cor que haxa na súa " "pantalla para seleccionala." -#: ../gtk/gtkcolorsel.c:428 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Matiz:" -#: ../gtk/gtkcolorsel.c:429 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Posición na roda de cores." -#: ../gtk/gtkcolorsel.c:431 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Saturación:" -#: ../gtk/gtkcolorsel.c:432 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensidade da cor." -#: ../gtk/gtkcolorsel.c:433 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Valor:" -#: ../gtk/gtkcolorsel.c:434 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Brillo da cor." -#: ../gtk/gtkcolorsel.c:435 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Vermello:" -#: ../gtk/gtkcolorsel.c:436 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Cantidade de luz vermella na cor." -#: ../gtk/gtkcolorsel.c:437 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "V_erde:" -#: ../gtk/gtkcolorsel.c:438 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Cantidade de luz verde na cor." -#: ../gtk/gtkcolorsel.c:439 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Azul:" -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Cantidade de luz azul na cor." -#: ../gtk/gtkcolorsel.c:443 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "Op_acidade:" -#: ../gtk/gtkcolorsel.c:450 ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Transparencia da cor." -#: ../gtk/gtkcolorsel.c:467 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "_Nome da cor:" -#: ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -687,15 +758,15 @@ msgstr "" "Nesta entrada pode introducir un valor de cor en estilo HTML hexadecimal ou " "simplemente un nome de cor como 'orange'." -#: ../gtk/gtkcolorsel.c:511 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Paleta:" -#: ../gtk/gtkcolorsel.c:540 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Roda de cor" -#: ../gtk/gtkcolorsel.c:1010 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -706,7 +777,7 @@ msgstr "" "seleccionar esta cor como actual arrastrándoa até a outra cor ao longo da " "mostra." -#: ../gtk/gtkcolorsel.c:1013 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -714,7 +785,7 @@ msgstr "" "A cor que escolleu. Pode arrastrar esta cor a unha entrada da paleta e " "gardala para usala no futuro." -#: ../gtk/gtkcolorsel.c:1018 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." @@ -722,15 +793,15 @@ msgstr "" "A cor seleccionada anteriormente, para comparar coa cor que seleccionou " "agora." -#: ../gtk/gtkcolorsel.c:1021 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "A cor que seleccionou." -#: ../gtk/gtkcolorsel.c:1421 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "_Gardar a cor aquí" -#: ../gtk/gtkcolorsel.c:1626 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -754,7 +825,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "Xestionar os tamaños personalizados" @@ -807,66 +878,66 @@ msgstr "_Dereito:" msgid "Paper Margins" msgstr "Marxes do papel" -#: ../gtk/gtkentry.c:8570 ../gtk/gtktextview.c:8185 +#: ../gtk/gtkentry.c:8755 ../gtk/gtktextview.c:8228 msgid "Input _Methods" msgstr "_Métodos de entrada" -#: ../gtk/gtkentry.c:8584 ../gtk/gtktextview.c:8199 +#: ../gtk/gtkentry.c:8769 ../gtk/gtktextview.c:8242 msgid "_Insert Unicode Control Character" msgstr "_Inserir un carácter de control Unicode" -#: ../gtk/gtkentry.c:9984 +#: ../gtk/gtkentry.c:10173 msgid "Caps Lock and Num Lock are on" msgstr "Bloq Maiús e Bloq Num estás activados" -#: ../gtk/gtkentry.c:9986 +#: ../gtk/gtkentry.c:10175 msgid "Num Lock is on" msgstr "Bloq Num está activado" -#: ../gtk/gtkentry.c:9988 +#: ../gtk/gtkentry.c:10177 msgid "Caps Lock is on" msgstr "Bloq Maiús está activado" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Seleccionar un ficheiro" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Escritorio" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(Ningún)" -#: ../gtk/gtkfilechooserbutton.c:1997 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Outro..." -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Escriba o nome do cartafol novo" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "Non foi posíbel recuperar a información sobre o ficheiro" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "Non foi posíbel engadir un marcador" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "Non foi posíbel eliminar o marcador" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "Non foi posíbel crear o cartafol" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -874,7 +945,7 @@ msgstr "" "Non foi posíbel crear o cartafol: xa existe un ficheiro co mesmo nome. Tente " "usar un nome diferente para o cartafol ou renomee o ficheiro primeiro." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." @@ -882,11 +953,11 @@ msgstr "" "Debe seleccionar só cartafoles. O elemento que vostede seleccionou non é un " "cartafol. Tente usar un elemento diferente." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "O nome do ficheiro é incorrecto" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "Non foi posíbel mostrar o contido do cartafol" @@ -894,201 +965,201 @@ msgstr "Non foi posíbel mostrar o contido do cartafol" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s en %2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Buscar" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9382 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Usado recentemente" -#: ../gtk/gtkfilechooserdefault.c:2430 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Seleccione que tipos de ficheiros se mostran" -#: ../gtk/gtkfilechooserdefault.c:2789 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Engadirlle o cartafol «%s» aos marcadores" -#: ../gtk/gtkfilechooserdefault.c:2833 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Engadirlle o cartafol actual aos marcadores" -#: ../gtk/gtkfilechooserdefault.c:2835 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Engadirlle os cartafoles seleccionados aos marcadores" -#: ../gtk/gtkfilechooserdefault.c:2873 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Eliminar o marcador «%s»" -#: ../gtk/gtkfilechooserdefault.c:2875 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "O marcador «%s» non pode ser eliminado" -#: ../gtk/gtkfilechooserdefault.c:2882 ../gtk/gtkfilechooserdefault.c:3746 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Eliminar o marcador seleccionado" -#: ../gtk/gtkfilechooserdefault.c:3442 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Eliminar" -#: ../gtk/gtkfilechooserdefault.c:3451 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Renomear..." #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3614 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Lugares" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3671 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Lugares" -#: ../gtk/gtkfilechooserdefault.c:3727 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_Engadir" -#: ../gtk/gtkfilechooserdefault.c:3734 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Engadir o cartafol seleccionado aos marcadores" -#: ../gtk/gtkfilechooserdefault.c:3739 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_Eliminar" -#: ../gtk/gtkfilechooserdefault.c:3881 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "Non foi posíbel seleccionar o ficheiro" -#: ../gtk/gtkfilechooserdefault.c:4056 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "_Engadir aos marcadores" -#: ../gtk/gtkfilechooserdefault.c:4069 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "Mostrar os ficheiros _ocultos" -#: ../gtk/gtkfilechooserdefault.c:4076 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Mostrar a columna de _tamaño" -#: ../gtk/gtkfilechooserdefault.c:4302 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Ficheiros" -#: ../gtk/gtkfilechooserdefault.c:4353 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Nome" -#: ../gtk/gtkfilechooserdefault.c:4376 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Tamaño" -#: ../gtk/gtkfilechooserdefault.c:4390 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Modificado" #. Label -#: ../gtk/gtkfilechooserdefault.c:4645 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Nome:" -#: ../gtk/gtkfilechooserdefault.c:4688 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Buscar outros cartafoles" -#: ../gtk/gtkfilechooserdefault.c:4958 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Teclee un nome de ficheiro" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5001 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Crear car_tafol" -#: ../gtk/gtkfilechooserdefault.c:5011 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_Localización:" -#: ../gtk/gtkfilechooserdefault.c:5215 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "Gardar no _cartafol:" -#: ../gtk/gtkfilechooserdefault.c:5217 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Crear no _cartafol:" -#: ../gtk/gtkfilechooserdefault.c:6286 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "Non foi posíbel ler os contidos do %s" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "Non foi posíbel ler os contidos do cartafol" -#: ../gtk/gtkfilechooserdefault.c:6383 ../gtk/gtkfilechooserdefault.c:6451 -#: ../gtk/gtkfilechooserdefault.c:6596 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Descoñecido" -#: ../gtk/gtkfilechooserdefault.c:6398 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6400 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "Onte ás %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7066 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "Non é posíbel cambiar ao cartafol porque non é local" -#: ../gtk/gtkfilechooserdefault.c:7663 ../gtk/gtkfilechooserdefault.c:7684 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "O atallo %s xa existe" -#: ../gtk/gtkfilechooserdefault.c:7774 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "O atallo %s non existe" -#: ../gtk/gtkfilechooserdefault.c:8035 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "Xa existe un ficheiro con nome «%s». Quere substituílo?" -#: ../gtk/gtkfilechooserdefault.c:8038 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "" "O ficheiro xa existe en «%s». Se o substitúe sobrescribirá os seus contidos." -#: ../gtk/gtkfilechooserdefault.c:8043 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_Substituír" -#: ../gtk/gtkfilechooserdefault.c:8751 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Non foi posíbel iniciar o proceso de busca" -#: ../gtk/gtkfilechooserdefault.c:8752 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1096,36 +1167,36 @@ msgstr "" "O programa non puido crear unha conexión co deamon indexador. Asegúrese de " "que está en execución." -#: ../gtk/gtkfilechooserdefault.c:8766 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Non foi posíbel enviar a solicitude de busca" -#: ../gtk/gtkfilechooserdefault.c:8954 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Buscar:" -#: ../gtk/gtkfilechooserdefault.c:9559 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Non foi posíbel montar %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Camiño incorrecto" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "Non houbo coincidencia" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Único completado" @@ -1133,13 +1204,13 @@ msgstr "Único completado" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Completado, mais non é o único" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Completando..." @@ -1147,7 +1218,7 @@ msgstr "Completando..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Só se poden seleccionar ficheiros locais" @@ -1155,14 +1226,14 @@ msgstr "Só se poden seleccionar ficheiros locais" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "O nome do servidor está incompleto; finaliza con '/'" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "O camiño non existe" @@ -1190,40 +1261,40 @@ msgstr "Tipo de letra" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghi ABCDEFGHI" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "_Familia:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "_Estilo:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "_Tamaño:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:559 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_Previsualización:" -#: ../gtk/gtkfontsel.c:1659 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "Selección do tipo de letra" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Produciuse un erro ao cargar a icona: %s" -#: ../gtk/gtkicontheme.c:1354 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1236,12 +1307,12 @@ msgstr "" "Pode obter unha copia desde:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1535 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "A icona «%s» non está presente no tema" -#: ../gtk/gtkicontheme.c:3048 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Produciuse un fallo ao cargar a icona" @@ -1266,45 +1337,45 @@ msgid "System (%s)" msgstr "Sistema (%s)" #. Open Link -#: ../gtk/gtklabel.c:6196 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Abrir a ligazón" #. Copy Link Address -#: ../gtk/gtklabel.c:6208 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Copiar o enderezo da _ligazón" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Copiar URL" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "URI incorrecto" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Cargar os módulos adicionais GTK+" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:528 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MÓDULOS" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:530 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Facer todos os avisos fatais" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:533 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "Marcas de depuración GTK+ para activar" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:536 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "Marcas de depuración GTK+ para desconfigurar" @@ -1313,20 +1384,20 @@ msgstr "Marcas de depuración GTK+ para desconfigurar" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:799 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:864 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Non é posíbel abrir a pantalla: %s" -#: ../gtk/gtkmain.c:923 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "Opcións GTK+" -#: ../gtk/gtkmain.c:923 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Mostrar opcións GTK+" @@ -1411,13 +1482,22 @@ msgstr "Intérprete de ordes Z" msgid "Cannot end process with PID %d: %s" msgstr "Non é posíbel finalizar o proceso co PID %d: %s" -#: ../gtk/gtknotebook.c:4724 ../gtk/gtknotebook.c:7287 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "Páxina %u" -#: ../gtk/gtkpagesetup.c:596 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 +#. Translators: the format here is used to build the string that will be rendered +#. * in the number emblem. +#. +#: ../gtk/gtknumerableicon.c:481 +#, c-format +msgctxt "Number format" +msgid "%d" +msgstr "%d" + +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:847 +#: ../gtk/gtkpapersize.c:889 msgid "Not a valid page setup file" msgstr "Non é un ficheiro correcto de configuración de páxina" @@ -1444,7 +1524,7 @@ msgstr "" " Superior: %s %s\n" " Inferior: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "Xestionar tamaños personalizados..." @@ -1452,7 +1532,7 @@ msgstr "Xestionar tamaños personalizados..." msgid "_Format for:" msgstr "_Formato para:" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "Tamaño de _papel:" @@ -1460,19 +1540,19 @@ msgstr "Tamaño de _papel:" msgid "_Orientation:" msgstr "_Orientación:" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "Configuración de páxina" -#: ../gtk/gtkpathbar.c:154 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Camiño superior" -#: ../gtk/gtkpathbar.c:156 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Camiño inferior" -#: ../gtk/gtkpathbar.c:1490 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "Sistema de ficheiros raíz" @@ -1496,84 +1576,84 @@ msgstr "_Gardar no cartafol:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s traballo #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Estado inicial" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "Preparándose para a impresión" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Xerando datos" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Enviando datos" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "En espera" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Bloqueada por un problema" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Imprimir" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Finalizado" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Finalizado con erros" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "Preparando %d" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Preparando" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "Imprimindo %d" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Produciuse un erro ao crear a previsualización da páxina" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "" "O motivo máis probábel é que non foi posíbel crear un ficheiro temporal." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Produciuse un erro ao iniciar a previsualización" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Aplicativo" @@ -1587,7 +1667,7 @@ msgstr "Sen papel" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Detida" @@ -1640,41 +1720,41 @@ msgstr "Fallou a obtención de información da impresora" msgid "Getting printer information..." msgstr "Obtención de información da impresora..." -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "Impresora" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "Localización" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "Estado" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "Intervalo" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "Tod_as as páxinas" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "Páxina act_ual" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "_Selección" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "Páx_inas:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1682,28 +1762,28 @@ msgstr "" "Especificar un ou máis intervalos de páxina,\n" " por ex. 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "Páxinas" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "Copias" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "Copia_s:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "_Ordenar" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "In_verter" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "Xeral" @@ -1713,168 +1793,168 @@ msgstr "Xeral" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "De esquerda a dereita, de arriba a abaixo" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "De esquerda a dereita, de abaixo a arriba" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "De dereita a esquerda, de arriba a abaixo" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "De dereita a esquerda, de abaixo a arriba" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "De arriba a abaixo, de esquerda a dereita" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "De arriba a abaixo, de dereita a esquerda" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "De abaixo a arriba, de esquerda a dereita" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "De arriba a abaixo, de esquerda a dereita" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Ordenación de páxinas" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "De esquerda a dereita" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "De dereita a esquerda" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "De arriba a abaixo" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "De abaixo a arriba" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "Disposición" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "Polos dous _lados:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "Pá_xinas por lado:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "Or_denación de páxinas:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "Imprimir _só:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "Todas as follas" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "Follas pares" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "Follas impares" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "Esc_ala:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "Papel" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "_Tipo de papel:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "_Orixe do papel:" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "_Bandexa de saída:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "Or_ientación:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "Vertical" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "Horizontal" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "Vertical invertido" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "Horizontal invertido" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "Detalles do traballo" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "Pri_oridade:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "Información de _facturación:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "Imprimir o documento" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "_Agora" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_En:" @@ -1882,7 +1962,7 @@ msgstr "_En:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1890,77 +1970,72 @@ msgstr "" "Especifique a hora de impresión,\n" "por exemplo 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "Tempo de impresión" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "En e_spera" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "Termar do traballo até que sexa explicitamente liberado" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "Engadir páxina de tapa" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "An_tes:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "_Despois:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "Traballo" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "Avanzado" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "Calidade da imaxe" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "Cor" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "Finalizando" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "Algunhas das configuracións do diálogo están en conflito" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "Imprimir" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Non é posíbel localizar o ficheiro 'include': «%s»" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Non é posíbel localizar o ficheiro de imaxe no pixmap_path: «%s»" @@ -1975,36 +2050,36 @@ msgstr "Esta función non está implementada para os trebellos da clase «%s»" msgid "Select which type of documents are shown" msgstr "Seleccione o tipo de documentos que se mostran" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "Non se encontrou un elemento para o URI «%s»" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Filtro sen título" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "Non foi posíbel eliminar o elemento" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "Non foi posíbel limpar a lista" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "Copiar a _localización" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "Elimina_r da lista" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "Li_mpar a lista" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Mostrar recursos _privados" @@ -2071,12 +2146,12 @@ msgstr "" "Non foi posíbel encontrar ningún aplicativo rexistrado co nome «%s» para o " "elemento co URI «%s»" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Axustador" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Fornece un indicador visual de progreso" @@ -2584,6 +2659,32 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "Red_ucir" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:313 ../gtk/gtkswitch.c:362 ../gtk/gtkswitch.c:553 +msgctxt "switch" +msgid "ON" +msgstr "❙" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:321 ../gtk/gtkswitch.c:363 ../gtk/gtkswitch.c:569 +msgctxt "switch" +msgid "OFF" +msgstr "○" + +#: ../gtk/gtkswitch.c:968 +msgctxt "light switch widget" +msgid "Switch" +msgstr "Interruptor" + +#: ../gtk/gtkswitch.c:969 +msgid "Switches between on and off states" +msgstr "Cambia entre os estados acendido e apagado" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2594,109 +2695,109 @@ msgstr "Erro descoñecido ao tentar deserializar %s" msgid "No deserialize function found for format %s" msgstr "Non se localizou a función de deserializar para o formato %s" -#: ../gtk/gtktextbufferserialize.c:803 ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Localizáronse tanto \"id\" como \"name\" no elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:813 ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "O atributo «%s» localizouse dúas veces no elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "O elemento <%s> ten un ID «%s» non válido" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "" "O elemento <%s> non ten nin un atributo \"name\" nin un atributo \"id\"" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "O atributo «%s» repítese dúas veces no mesmo elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:970 ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "O atributo «%s» non é válido no elemento <%s> neste contexto" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "A etiqueta «%s» non foi definida." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Localizouse unha etiqueta anónima e non é posíbel crear as etiquetas." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "" "A etiqueta «%s» non existe no búfer e non é posíbel crear as etiquetas." -#: ../gtk/gtktextbufferserialize.c:1156 ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Non se permite o elemento <%s> por baixo de <%s>" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "«%s» non é un tipo de atributo correcto" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "«%s» non é un nome de atributo correcto" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "" "Non foi posíbel converter «%s» nun valor de tipo «%s» para o atributo «%s»" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "«%s» non é un valor correcto para o atributo «%s»" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "A etiqueta «%s» xa está definida" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "A etiqueta «%s» ten a prioridade incorrecta«%s»" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "O elemento máis extremo no texto debe ser non <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "Xa se especificou un elemento <%s>" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "Un elemento non pode aparecer antes dun elemento " -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Os datos serializados están formados incorrectamente" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" @@ -2743,58 +2844,53 @@ msgstr "ZWJ En_samblaxe de largura cero" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ _Desensamblaxe de largura cero" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Non é posíbel localizar o motor de temas no module_path: «%s»," - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Etiqueta de inicio inesperada «%s» na liña %d carácter %d" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Datos de carácter inesperados na liña %d carácter %d" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Baleiro" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Volume" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Sobe ou baixa o volume" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Axusta o volume" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Baixar o volume" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Abaixa o volume" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Subir o volume" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Sobe o volume" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Silenciado" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Volume máximo" @@ -2803,7 +2899,7 @@ 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:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3655,81 +3751,81 @@ msgstr "Produciuse un fallo ao escribir o índice do cartafol\n" msgid "Failed to rewrite header\n" msgstr "Produciuse un fallo ao reescribir a cabeceira\n" -#: ../gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Produciuse un fallo ao abrir o ficheiro %s : %s\n" -#: ../gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Produciuse un fallo ao escribir o ficheiro da caché: %s\n" -#: ../gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "A caché xerada non é correcta.\n" -#: ../gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "Non foi posíbel renomear %s como %s: %s, ao eliminar %s despois.\n" -#: ../gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "Non foi posíbel renomear %s como %s: %s\n" -#: ../gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "Non foi posíbel volver a renomear %s como %s: %s.\n" -#: ../gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "O ficheiro da caché creouse correctamente.\n" -#: ../gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Substituír unha caché existente, mesmo se está actualizada" -#: ../gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Non verificar a existencia de index.theme" -#: ../gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Non incluír os datos da imaxe na caché" -#: ../gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Xerar un ficheiro de cabeceira C" -#: ../gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Desactivar a saída detallada" -#: ../gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Validar a caché de iconas existente" -#: ../gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "O ficheiro non foi encontrado: %s\n" -#: ../gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Non é unha caché de iconas correcta: %s\n" -#: ../gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "Non hai ficheiro de índice de tema.\n" -#: ../gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3794,259 +3890,259 @@ msgstr "Vietnamita (VIQR)" msgid "X Input Method" msgstr "Método da entrada X" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "Nome de usuario:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "Contrasinal:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "" "Requírese a súa autenticación para imprimir o documento «%s» na impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Requírese a súa autenticación para imprimir un documento en %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "" "Requírese a súa autenticación para recoller os atributos do traballo «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "Requírese a súa autenticación para recoller os atributos dun traballo" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "" "Requírese a súa autenticación para recoller os atributos da impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "" "Requírese a súa autenticación para recoller os atributos dunha impresora" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "Requírese a súa autenticación para obter a impresora predefinida de %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Requírese a súa autenticación para obter as impresoras desde %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "Requírese a súa autenticación para obter o ficheiro dende %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "Requírese a súa autenticación en %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "Dominio:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Requírese a súa autenticación para imprimir un documento en «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "" "Requírese a súa autenticación para imprimir este documento na impresora %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "Requírese a súa autenticación para imprimir este documento" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "A impresora «%s» está baixa de tóner." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "A impresora «%s» non ten tóner." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "A impresora «%s» está baixa de revelador." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "A impresora «%s» está sen revelador." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "A impresora «%s» ten baixo polo menos un cartucho de cor." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "A impresora «%s» ten baleiro polo menos un cartucho de cor." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "A impresora «%s» ten a tapa aberta." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "A porta da impresora «%s» está aberta." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "A impresora «%s» ten pouco papel." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "A impresora «%s» está sen papel." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "A impresora «%s» está actualmente desconectada." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "Hai un problema na impresora «%s»." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "Detida ; Rexeitando traballos" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "Rexeitando traballos" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "Dúas caras" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "Tipo de papel" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "Orixe do papel" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "Bandexa de saída" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "Resolución" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "Filtraxe previa GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "Un lado" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "Marxe longa (estándar)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "Marxe estreita (xirar)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "Selección automática" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "Impresora predefinida" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "Incorporar só os tipos de letra GhostScript" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "Converter a PS nivel 1" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "Converter a PS nivel 2" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "Sen filtrado previo" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "Varios" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "Urxente" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "Alto" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "Medio" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "Baixo" @@ -4054,66 +4150,66 @@ msgstr "Baixo" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "Páxinas por folla" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "Prioridade do traballo" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "Información de facturación" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "Ningún" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "Clasificado" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "Confidencial" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "Secreto" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "Estándar" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "Alto segredo" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "Sen clasificar" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "Antes" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "Despois" @@ -4121,14 +4217,14 @@ msgstr "Despois" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "Imprimir" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "Imprimir á hora" @@ -4136,7 +4232,7 @@ msgstr "Imprimir á hora" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "Personalizado %sx%s" @@ -4147,32 +4243,32 @@ msgstr "Personalizado %sx%s" msgid "output.%s" msgstr "saída.%s" -#: ../modules/printbackends/file/gtkprintbackendfile.c:493 +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "Imprimir a un ficheiro" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:582 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Pá_xinas por folla:" -#: ../modules/printbackends/file/gtkprintbackendfile.c:641 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "Ficheiro" -#: ../modules/printbackends/file/gtkprintbackendfile.c:651 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "Formato de _saída" @@ -4241,6 +4337,27 @@ msgstr "" "Produciuse un fallo ao cargar a imaxe «%s»: o motivo é descoñecido, é " "probábel que o ficheiro de imaxe estea corrupto" +#~ msgid "X screen to use" +#~ msgstr "Pantalla X que se vai usar" + +#~ msgid "SCREEN" +#~ msgstr "PANTALLA" + +#~ msgid "Make X calls synchronous" +#~ msgstr "Facer chamadas a X síncronas" + +#~ msgid "Credits" +#~ msgstr "Créditos" + +#~ msgid "Written by" +#~ msgstr "Escrito por" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Non é posíbel localizar o ficheiro 'include': «%s»" + +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "Non é posíbel localizar o motor de temas no module_path: «%s»," + #~ msgid "Error creating folder '%s': %s" #~ msgstr "Produciuse un erro ao crear o cartafol «%s»: %s" @@ -4958,9 +5075,6 @@ msgstr "" #~ msgid "_Folder name:" #~ msgstr "Nome do _cartafol:" -#~ msgid "C_reate" -#~ msgstr "C_rear" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "" diff --git a/po/he.po b/po/he.po index 4f465b6de0..2c7249dd90 100644 --- a/po/he.po +++ b/po/he.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gtk+.HEAD.he\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-04 15:16+0200\n" -"PO-Revision-Date: 2010-12-04 15:25+0200\n" +"POT-Creation-Date: 2011-01-18 12:54+0200\n" +"PO-Revision-Date: 2011-01-18 12:55+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" @@ -20,58 +20,48 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gdk/gdk.c:115 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Error parsing option --gdk-debug" -#: ../gdk/gdk.c:135 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Error parsing option --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:163 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Program class as used by the window manager" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "CLASS" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:166 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Program name as used by the window manager" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NAME" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:169 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "X display to use" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:170 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "DISPLAY" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:172 -msgid "X screen to use" -msgstr "X screen to use" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:173 -msgid "SCREEN" -msgstr "SCREEN" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:176 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "GDK debugging flags to set" @@ -79,12 +69,12 @@ msgstr "GDK debugging flags to set" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:177 ../gdk/gdk.c:180 ../gtk/gtkmain.c:523 ../gtk/gtkmain.c:526 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "FLAGS" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:179 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "GDK debugging flags to unset" @@ -138,7 +128,7 @@ msgstr "בית" #: ../gdk/keyname-table.h:3949 msgctxt "keyboard label" msgid "Left" -msgstr "שמאל" +msgstr "שמאלה" #: ../gdk/keyname-table.h:3950 msgctxt "keyboard label" @@ -148,7 +138,7 @@ msgstr "מעלה" #: ../gdk/keyname-table.h:3951 msgctxt "keyboard label" msgid "Right" -msgstr "ימין" +msgstr "ימינה" #: ../gdk/keyname-table.h:3952 msgctxt "keyboard label" @@ -158,32 +148,32 @@ msgstr "מטה" #: ../gdk/keyname-table.h:3953 msgctxt "keyboard label" msgid "Page_Up" -msgstr "עמוד_למעלה" +msgstr "Page_Up" #: ../gdk/keyname-table.h:3954 msgctxt "keyboard label" msgid "Page_Down" -msgstr "עמוד_למטה" +msgstr "Page_Down" #: ../gdk/keyname-table.h:3955 msgctxt "keyboard label" msgid "End" -msgstr "סוף" +msgstr "End" #: ../gdk/keyname-table.h:3956 msgctxt "keyboard label" msgid "Begin" -msgstr "התחלה" +msgstr "Begin" #: ../gdk/keyname-table.h:3957 msgctxt "keyboard label" msgid "Print" -msgstr "הדפסה" +msgstr "Print" #: ../gdk/keyname-table.h:3958 msgctxt "keyboard label" msgid "Insert" -msgstr "הוספה" +msgstr "Insert" #: ../gdk/keyname-table.h:3959 msgctxt "keyboard label" @@ -208,12 +198,12 @@ msgstr "Enter" #: ../gdk/keyname-table.h:3963 msgctxt "keyboard label" msgid "KP_Home" -msgstr "בית" +msgstr "Home" #: ../gdk/keyname-table.h:3964 msgctxt "keyboard label" msgid "KP_Left" -msgstr "שמאל" +msgstr "שמאלה" #: ../gdk/keyname-table.h:3965 msgctxt "keyboard label" @@ -223,7 +213,7 @@ msgstr "מעלה" #: ../gdk/keyname-table.h:3966 msgctxt "keyboard label" msgid "KP_Right" -msgstr "ימין" +msgstr "ימינה" #: ../gdk/keyname-table.h:3967 msgctxt "keyboard label" @@ -233,7 +223,7 @@ msgstr "מטה" #: ../gdk/keyname-table.h:3968 msgctxt "keyboard label" msgid "KP_Page_Up" -msgstr "עמוד למעלה" +msgstr "Page Up" #: ../gdk/keyname-table.h:3969 msgctxt "keyboard label" @@ -243,7 +233,7 @@ msgstr "קודם" #: ../gdk/keyname-table.h:3970 msgctxt "keyboard label" msgid "KP_Page_Down" -msgstr "עמוד למטה" +msgstr "Page Down" #: ../gdk/keyname-table.h:3971 msgctxt "keyboard label" @@ -253,132 +243,130 @@ msgstr "הבא" #: ../gdk/keyname-table.h:3972 msgctxt "keyboard label" msgid "KP_End" -msgstr "סוף" +msgstr "End" #: ../gdk/keyname-table.h:3973 msgctxt "keyboard label" msgid "KP_Begin" -msgstr "התחלה" +msgstr "Begin" #: ../gdk/keyname-table.h:3974 msgctxt "keyboard label" msgid "KP_Insert" -msgstr "הוספה" +msgstr "Insert" #: ../gdk/keyname-table.h:3975 msgctxt "keyboard label" msgid "KP_Delete" -msgstr "מחיקה" +msgstr "Delete" #: ../gdk/keyname-table.h:3976 msgctxt "keyboard label" msgid "Delete" -msgstr "מחיקה" +msgstr "Delete" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Don't batch GDI requests" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Don't use the Wintab API for tablet support" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "Same as --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Do use the Wintab API [default]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Size of the palette in 8 bit mode" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "COLORS" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:305 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" -msgstr "מתחיל את %s" +msgstr "%s מתחיל" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:318 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" -msgstr "פותח את %s" +msgstr "%s נפתח" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:323 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "פותח פריט אחד" msgstr[1] "פותח %d פריטים" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Make X calls synchronous" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "תכנית זו מופצת ללא שום אחריות; לפרטים נא לבקר בכתובת %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "" +"תכנית זו מופצת ללא שום אחריות; לפרטים נא לבקר בכתובת %s" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "רישיון" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "רישיון השימוש בתוכנה" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "_תודות" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_רישיון" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "לא ניתן להציג את הקישור" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "דף הבית" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "על אודות %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "תודות" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "נוצר על ידי" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "נכתב על ידי" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "תועד על ידי" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "תורגם על ידי" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "אומנות על ידי" @@ -387,7 +375,7 @@ msgstr "אומנות על ידי" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -397,7 +385,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -407,7 +395,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -417,7 +405,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -427,7 +415,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -437,37 +425,120 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "מטה" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "רווח" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "לוכסן אחורי" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "יישום אחר..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "אירע כשל בחיפוש אחר יישומים באינטרנט" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "חיפוש יישומים באינטרנט" + +#: ../gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "לא ניתן להפעיל את היישום" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "לא ניתן למצוא את '%s'" + +#: ../gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "לא ניתן למצוא יישום" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "נא לבחור יישום לפתיחת \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "אין יישומים הזמינים לפתיחת \"%s\"" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "נא לבחור יישום עבור קובצי \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "אין יישומים זמינים לפתיחת קובצי \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"יש ללחוץ על \"הצגת יישומים אחרים\", להצגת אפשרויות נוספות, או על \"חיפוש " +"יישומים באינטרנט\" כדי להתקין יישום חדש" + +#: ../gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "מחיקת השיוך" + +#: ../gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "הצגת יישומים אחרים" + +#: ../gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "_פתיחה" + +#: ../gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "יישום בררת המחדל" + +#: ../gtk/gtkappchooserwidget.c:730 +msgid "Recommended Applications" +msgstr "היישומים המומלצים" + +#: ../gtk/gtkappchooserwidget.c:744 +msgid "Related Applications" +msgstr "יישומים קשורים" + +#: ../gtk/gtkappchooserwidget.c:758 +msgid "Other Applications" +msgstr "יישומים אחרים" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "סוג הפונקציה שבשורה %d אינו תקין: '%s'" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "מזהה פריט כפול '%s' בשורה %d (לשעבר בשורה %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "רכיב שורש בלתי תקני: '%s'" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "תגית בלתי מטופלת: '%s'" @@ -482,7 +553,7 @@ msgstr "תגית בלתי מטופלת: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:YM" @@ -490,7 +561,7 @@ msgstr "calendar:YM" #. * 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:916 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" @@ -499,7 +570,7 @@ msgstr "calendar:week_start:0" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -514,7 +585,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -530,7 +601,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -546,7 +617,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -554,7 +625,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "כבוי" @@ -563,7 +634,7 @@ msgstr "כבוי" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "בלתי תקני" @@ -572,7 +643,7 @@ msgstr "בלתי תקני" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:730 msgid "New accelerator..." msgstr "מאיץ חדש..." @@ -582,15 +653,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "בחירת צבע" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "התקבלו נתוני צבע בלתי תקינים\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -598,73 +669,73 @@ msgstr "" "יש לבחור את הצבע הרצוי מהטבעת החיצונית. ניתן לבחור כמה כהה או בהיר יהיה צבע " "זה בעזרת המשולש הפנימי." -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." msgstr "יש ללחוץ על הטפטפת ואז ללחוץ על צבע כלשהו במסך לבחירת אותו הצבע." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_גוון:" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "מיקום על גלגל הצבעים." -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_רוויה:" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "חוזק הצבע." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_ערך:" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "בהירות הצבע." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_אדום:" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "כמות האור האדום בצבע." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_ירוק:" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "כמות האור הירוק בצבע." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_כחול:" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "כמות האור הכחול בצבע." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "_אטימות:" -#: ../gtk/gtkcolorsel.c:471 ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "אטימות הצבע." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "_שם הצבע:" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -672,15 +743,15 @@ msgstr "" "ניתן להזין ערך צבע הקסדצימלי בסגנון HTML, או פשוט לכתוב שם צבע באנגלית כמו " "'orange' ברשומה זו." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_פלטה:" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "גלגל הצבעים" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -689,27 +760,27 @@ msgstr "" "הצבע הקודם שנבחר, להשוואה עם הצבע הנבחר כעת. ניתן לגרור צבע זה לרשומה בפלטה, " "או לבחור צבע זה כנוכחי על־ידי גרירתו לפיסת הצבע השנייה שלצידו." -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." msgstr "הצבע שנבחר. ניתן לגרור צבע זה לרשומת פלטה כדי לשמור אותו לשימוש בעתיד." -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." msgstr "הצבע הקודם שנבחר, להשוואה עם הצבע שנבחר כעת." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "הצבע שנבחר." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "_שמירת הצבע כאן" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -732,7 +803,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "ניהול גדלים מותאמים" @@ -785,66 +856,66 @@ msgstr "_ימין:" msgid "Paper Margins" msgstr "שולי נייר" -#: ../gtk/gtkentry.c:8794 ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8760 ../gtk/gtktextview.c:8228 msgid "Input _Methods" msgstr "_שיטות קלט" -#: ../gtk/gtkentry.c:8808 ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8774 ../gtk/gtktextview.c:8242 msgid "_Insert Unicode Control Character" msgstr "_הזנת תו בקרה יוניקוד" -#: ../gtk/gtkentry.c:10208 +#: ../gtk/gtkentry.c:10178 msgid "Caps Lock and Num Lock are on" msgstr "ה־Caps Lock וה־Num Lock פעילים" -#: ../gtk/gtkentry.c:10210 +#: ../gtk/gtkentry.c:10180 msgid "Num Lock is on" msgstr "ה־Num Lock פעיל" -#: ../gtk/gtkentry.c:10212 +#: ../gtk/gtkentry.c:10182 msgid "Caps Lock is on" msgstr "ה־Caps Lock פעיל" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 -msgid "Select A File" -msgstr "בחירת קובץ" +#: ../gtk/gtkfilechooserbutton.c:62 +msgid "Select a File" +msgstr "נא לבחור קובץ" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "שולחן עבודה" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(ללא)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "אחר..." -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "הזנת שם לתיקייה החדשה" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "לא ניתן לקבל מידע על הקובץ" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "לא ניתן להוסיף סימנייה" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "לא ניתן להסיר את הסימנייה" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "לא ניתן ליצור את התיקייה" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -852,18 +923,18 @@ msgstr "" "לא ניתן לייצר את התיקייה מכיוון שקיים קובץ בעל שם דומה. יש לנסות ולבחור שם " "חדש לתיקייה, או לשנות את שם הקובץ." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." msgstr "" "ניתן לבחור תיקיות בלבד. הפריט שברחת אינו תיקייה; נא לנסות לבחור בפריט אחר." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "שם קובץ לא תקני" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "לא ניתן להציג את תוכן התיקייה" @@ -871,237 +942,237 @@ msgstr "לא ניתן להציג את תוכן התיקייה" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "‏%1$s ב־%2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "חיפוש" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "בשימוש לאחרונה" -#: ../gtk/gtkfilechooserdefault.c:2437 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "בחירה בסוגי הקבצים שיוצגו" -#: ../gtk/gtkfilechooserdefault.c:2796 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "הוסף את התיקייה '%s' לסימניות" -#: ../gtk/gtkfilechooserdefault.c:2840 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "הוסף את התיקייה הנוכחית לסימניות" -#: ../gtk/gtkfilechooserdefault.c:2842 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "הוסף את התיקיות הנבחרות לסימניות" -#: ../gtk/gtkfilechooserdefault.c:2880 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "הסרת הסימנייה '%s'" -#: ../gtk/gtkfilechooserdefault.c:2882 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "לא ניתן להסיר את הסימנייה '%s'" -#: ../gtk/gtkfilechooserdefault.c:2889 ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "הסרת הסימנייה הנבחרת" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "הסרה" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "שינוי שם..." #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "מקומות" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_מקומות" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_הוספה" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "הוספת התיקייה הנבחרת לסימניות" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_הסרה" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "לא ניתן לבחור את הקובץ" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "_הוספה לסימניות" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "הצגת קבצים _נסתרים" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "הצגת _רוחב העמודה" # hebrew note: "תיקייה" is "folder", but there is no better word for # "directory" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "קבצים" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "שם" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "גודל" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "שונה" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_שם:" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_דפדוף לתיקיות אחרות" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "הזנת שם קובץ" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "יצירת _תיקייה" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_מיקום:" -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "שמירה ב_תיקייה:" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "יצירה ב_תיקייה:" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "לא ניתן לקרוא את התוכן של %s" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "לא ניתן לקרוא את תכני התיקייה" -#: ../gtk/gtkfilechooserdefault.c:6387 ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "לא ידוע" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "אתמול ב־%H:%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "לא ניתן לשנות תיקייה כיוון שהיא איננה מקומית" -#: ../gtk/gtkfilechooserdefault.c:7667 ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "הקיצור %s כבר קיים" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "הקיצור %s אינו קיים" -#: ../gtk/gtkfilechooserdefault.c:8039 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "קובץ בשם \"%s\" כבר קיים. האם ברצונך להחליפו?" -#: ../gtk/gtkfilechooserdefault.c:8042 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "הקובץ כבר קיים ב-\"%s\". החלפתו תגרום לאיבוד תוכנו." -#: ../gtk/gtkfilechooserdefault.c:8047 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "ה_חלפה" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "לא ניתן להתחיל את תהליך החיפוש" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." msgstr "התנית לא הצליחה ליצור חיבור אל סוכן האינדקס. יש לוודא כי הוא פעיל." -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "לא ניתן לשלוח את בקשת החיפוש" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "חיפוש:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "לא ניתן לעגון את %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "נתיב לא תקין" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "אין התאמה" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "השלמה יחידה" @@ -1109,13 +1180,13 @@ msgstr "השלמה יחידה" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "שלם, אבל לא ייחודי" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "משלים..." @@ -1123,7 +1194,7 @@ msgstr "משלים..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "ניתן לבחור קבצים מקומיים בלבד" @@ -1131,14 +1202,14 @@ msgstr "ניתן לבחור קבצים מקומיים בלבד" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "שם המארח אינו מלא; יש לסיימו ב־'/'" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "נתיב לא קיים" @@ -1168,40 +1239,40 @@ msgstr "גופן" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdef ABCDEF אבגדהו" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "_משפחה:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "_סגנון:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "_גודל:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_תצוגה מקדימה:" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "בחירת גופן" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "שגיאה בטעינת סמל: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1214,12 +1285,12 @@ msgstr "" "אתה יכול לקבל עותק מ:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "הסמל '%s' לא קיים בערכת הנושא" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "ארע כשל בטעינת סמל" @@ -1246,45 +1317,45 @@ msgid "System (%s)" msgstr "מערכת (%s)" #. Open Link -#: ../gtk/gtklabel.c:6215 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_פתיחת קישור" #. Copy Link Address -#: ../gtk/gtklabel.c:6227 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "העתקת כתובת ה_קישור" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "ה_עתקת כתובת" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "כתובת לא תקנית" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:516 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Load additional GTK+ modules" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:517 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MODULES" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Make all warnings fatal" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:522 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "GTK+ debugging flags to set" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:525 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "GTK+ debugging flags to unset" @@ -1293,20 +1364,20 @@ msgstr "GTK+ debugging flags to unset" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:788 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:RTL" -#: ../gtk/gtkmain.c:853 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Cannot open display: %s" -#: ../gtk/gtkmain.c:912 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "GTK+ Options" -#: ../gtk/gtkmain.c:912 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Show GTK+ Options" @@ -1390,13 +1461,22 @@ msgstr "מעטפת Z" msgid "Cannot end process with PID %d: %s" msgstr "לא ניתן לסיים את התהליך בעל המזהה %d: ‏%s" -#: ../gtk/gtknotebook.c:4756 ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "עמוד %u" -#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 +#. Translators: the format here is used to build the string that will be rendered +#. * in the number emblem. +#. +#: ../gtk/gtknumerableicon.c:481 +#, c-format +msgctxt "Number format" +msgid "%d" +msgstr "%d" + +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:847 +#: ../gtk/gtkpapersize.c:889 msgid "Not a valid page setup file" msgstr "קובץ הגדרות עמוד לא תקין" @@ -1423,7 +1503,7 @@ msgstr "" " מעלה: %s %s\n" " מטה: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "ניהול גדלים _מותאמים..." @@ -1431,7 +1511,7 @@ msgstr "ניהול גדלים _מותאמים..." msgid "_Format for:" msgstr "_תצורה עבור:" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "_גודל הנייר:" @@ -1439,21 +1519,21 @@ msgstr "_גודל הנייר:" msgid "_Orientation:" msgstr "_כיווניות:" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "הגדרות עמוד" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "נתיב מעלה" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "נתיב מטה" # hebrew note: "תיקייה" is "folder", but there is no better word for # "directory" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "שורש מערכת הקבצים" @@ -1477,83 +1557,83 @@ msgstr "שמירה ב_תיקייה:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s משימה מס' %d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "מצב התחלתי" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "בהכנה להדפסה" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "נוצרים נתונים" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "נשלחים נתונים" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "בהמתנה" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "חסימה עקב תקלה" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "בהדפסה" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "הסתיים" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "הסתיים עם שגיאה" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "בהכנה %d" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "בהכנה" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "%d בהדפסה" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "שגיאה ביצירת תצוגה מקדימה" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "הסיבה ההגיונית ביותר שבגללה לא ניתן היה ליצור קובץ זמני." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "שגיאה בשיגור תצוגה מקדימה" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "יישום" @@ -1567,7 +1647,7 @@ msgstr "חסר נייר" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "מופסק" @@ -1620,41 +1700,41 @@ msgstr "קבלת נתוני המדפסת נכשלה" msgid "Getting printer information..." msgstr "נתוני המדפסת מתקבלים..." -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "מדפסת" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "מיקום" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "מצב" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "טווח" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "כל ה_דפים" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "_הדף הנוכחי" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "_בחירה" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "_דפים:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1662,28 +1742,28 @@ msgstr "" "ניתן לציין טווח דפים אחד או יותר,\n" " לדוגמה: 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "דפים" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "עותקים" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "_עותקים:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "_איסוף" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "_החזרה" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "כללי" @@ -1693,168 +1773,168 @@ msgstr "כללי" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "שמאל לימין, מלמעלה למטה" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "שמאל לימין, מלמטה למעלה" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "ימין לשמאל, מלמעלה למטה" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "ימין לשמאל, מלמטה למעלה" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "מלמעלה למטה, משמאל לימין" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "מלמעלה למטה, מימין לשמאל" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "מלמטה למעלה, משמאל לימין" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "מלמטה למעלה, מימין לשמאל" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "סדר דפים" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "שמאל לימין" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "ימין לשמאל" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "מלמעלה למטה" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "מלמטה למעלה" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "פריסה" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "ד_ו־צדדי:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "מספר _עמודים בכל צג:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "_סדר הדפים:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "ה_דפסה בלבד:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "כל הדפים" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "דפים זוגיים" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "דפים אי זוגיים" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "_התאמה:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "נייר" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "_סוג נייר:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "מ_קור נייר:" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "_מגש פלט:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "_כיווניות:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "לאורך" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "לרוחב" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "לאורך הפוך" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "לרוחב הפוך" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "פרטי המשימה" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "_עדיפות:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "_נתוני חיוב:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "הדפסת מסמך" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "_כעת" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_ב:" @@ -1862,7 +1942,7 @@ msgstr "_ב:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1870,77 +1950,72 @@ msgstr "" "ציון זמן ההדפסה,\n" "לדוגמה: 15:30, 2:35‎ pm,‏ 14:15:20, 11:46:30‎ am,‏ 4‎ pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "זמן ההדפסה" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "ב_המתנה" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "החזקת המשימה עד שתשוחרר מפורשות" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "הוספת עמוד שער" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "ל_פני:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "א_חרי:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "משימה" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "מתקדם" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "איכות תמונה" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "צבע" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "גימור" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "חלק מההגדרות בתיבת הדו־שיח מתנגשות" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "הדפסה" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "לא ניתן למצוא את קובץ ה include: \"%s\"" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "לא ניתן לאתר את קובץ התמונה ב־pixmap_path:‏ \"%s\"" @@ -1955,36 +2030,36 @@ msgstr "This function is not implemented for widgets of class '%s'" msgid "Select which type of documents are shown" msgstr "יש לבחור אילו סוגי מסמכים יוצגו" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "לא נמצא פריט עבור הכתובת '%s'" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "מסנן ללא שם" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "לא ניתן להסיר את הפריט" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "לא ניתן לפנות את הרשימה" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "הע_תקת מיקום" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "_הסרה מהרשימה" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_פינוי הרשימה" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "הצג _משאבים פרטיים" @@ -2049,12 +2124,12 @@ msgstr "לא ניתן למצוא פריט עם כתובת '%s'" msgid "No registered application with name '%s' for item with URI '%s' found" msgstr "לא נמצא יישום הרשום בשם '%s' עבור הפריט בעל הכתובת '%s'" -#: ../gtk/gtkspinner.c:439 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "הנפשת המתנה" -#: ../gtk/gtkspinner.c:440 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "אספקת חיווי חזותי של התהליך" @@ -2571,7 +2646,7 @@ msgstr "הת_רחקות" #. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for #. * the state #. -#: ../gtk/gtkswitch.c:296 ../gtk/gtkswitch.c:339 ../gtk/gtkswitch.c:531 +#: ../gtk/gtkswitch.c:313 ../gtk/gtkswitch.c:362 ../gtk/gtkswitch.c:553 msgctxt "switch" msgid "ON" msgstr "❙" @@ -2579,17 +2654,17 @@ msgstr "❙" #. Translators: if the "off" state label requires more than three #. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state #. -#: ../gtk/gtkswitch.c:304 ../gtk/gtkswitch.c:340 ../gtk/gtkswitch.c:552 +#: ../gtk/gtkswitch.c:321 ../gtk/gtkswitch.c:363 ../gtk/gtkswitch.c:569 msgctxt "switch" msgid "OFF" msgstr "○" -#: ../gtk/gtkswitch.c:943 +#: ../gtk/gtkswitch.c:968 msgctxt "light switch widget" msgid "Switch" msgstr "החלפה" -#: ../gtk/gtkswitch.c:944 +#: ../gtk/gtkswitch.c:969 msgid "Switches between on and off states" msgstr "החלפה בין המצבים פעיל ולא פעיל" @@ -2603,107 +2678,107 @@ msgstr "Unknown error when trying to deserialize %s" msgid "No deserialize function found for format %s" msgstr "No deserialize function found for format %s" -#: ../gtk/gtktextbufferserialize.c:799 ../gtk/gtktextbufferserialize.c:825 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Both \"id\" and \"name\" were found on the <%s> element" -#: ../gtk/gtktextbufferserialize.c:809 ../gtk/gtktextbufferserialize.c:835 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "The attribute \"%s\" was found twice on the <%s> element" -#: ../gtk/gtktextbufferserialize.c:851 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "<%s> element has invalid ID \"%s\"" -#: ../gtk/gtktextbufferserialize.c:861 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s> element has neither a \"name\" nor an \"id\" attribute" -#: ../gtk/gtktextbufferserialize.c:948 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Attribute \"%s\" repeated twice on the same <%s> element" -#: ../gtk/gtktextbufferserialize.c:966 ../gtk/gtktextbufferserialize.c:991 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Attribute \"%s\" is invalid on <%s> element in this context" -#: ../gtk/gtktextbufferserialize.c:1030 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Tag \"%s\" has not been defined." -#: ../gtk/gtktextbufferserialize.c:1042 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Anonymous tag found and tags can not be created." -#: ../gtk/gtktextbufferserialize.c:1053 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "Tag \"%s\" does not exist in buffer and tags can not be created." -#: ../gtk/gtktextbufferserialize.c:1152 ../gtk/gtktextbufferserialize.c:1227 -#: ../gtk/gtktextbufferserialize.c:1332 ../gtk/gtktextbufferserialize.c:1406 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Element <%s> is not allowed below <%s>" -#: ../gtk/gtktextbufferserialize.c:1183 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" is not a valid attribute type" -#: ../gtk/gtktextbufferserialize.c:1191 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" is not a valid attribute name" -#: ../gtk/gtktextbufferserialize.c:1201 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1210 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" is not a valid value for attribute \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1295 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "Tag \"%s\" already defined" -#: ../gtk/gtktextbufferserialize.c:1308 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Tag \"%s\" has invalid priority \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1361 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Outermost element in text must be not <%s>" -#: ../gtk/gtktextbufferserialize.c:1370 ../gtk/gtktextbufferserialize.c:1386 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "A <%s> element has already been specified" -#: ../gtk/gtktextbufferserialize.c:1392 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "A element can't occur before a element" -#: ../gtk/gtktextbufferserialize.c:1792 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Serialized data is malformed" -#: ../gtk/gtktextbufferserialize.c:1870 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" @@ -2749,58 +2824,53 @@ msgstr "ZWJ _מצרף ברוחב אפס" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ _לא מצרף ברוחב אפס" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "לא ניתן לאתר את מנוע ערכת הנושא הנטען ב־module_path:‏ \"%s\"," - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "תג פתיחה בלתי צפוי '%s' בשורה %d תו %d" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "מידע תו לא צפוי בשורה %d תו %d" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "ריק" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "עצמת שמע" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "מגביר או מנמיך את העצמה" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "מכוון את העצמה" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "הנמכת העצמה" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "מנמיך את העצמה" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "הגברת העצמה" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "מגביר את העצמה" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "מושתק" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "עצמה מלאה" @@ -2809,7 +2879,7 @@ msgstr "עצמה מלאה" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3798,254 +3868,254 @@ msgstr "ויאטנמית (VIQR)" msgid "X Input Method" msgstr "שיטת הקלט של X" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "שם משתמש:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "סיסמה:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "נדרש אימות כדי להדפיס את המסמך '%s' במדפסת %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "נדרש אימות כדי להדפיס מסמך באמצעות %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "נדרש אימות כדי לקבל את מאפייני המשימה '%s'" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "נדרש אימות כדי לקבל את מאפייני המשימה" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "נדרש אימות כדי לקבל את מאפייני המדפסת %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "נדרש אימות כדי לקבל את מאפייני המדפסת" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "נדרש אימות כדי לקבל את מדפסת ברירת המחדל של %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "נדרש אימות כדי לקבל מדפסות מ־%s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "נדרש אימות כדי לקבל את הקובץ מ־%s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "%s דורש אימות" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "מתחם:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "נדרש אימות כדי להדפיס את המסמך '%s'" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "נדרש אימות כדי להדפיס מסמך זה למדפסת %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "נדרש אימות כדי להדפיס מסמך זה" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "במדפסת '%s' חסר דיו." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "במדפסת '%s' לא נשאר דיו." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "המדפסת '%s' דלה במתכנתים." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "למדפסת '%s' אזלו המתכנתים." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "למדפסת '%s' כמעט אזל לפחות אחד מחומרי ההדפסה." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "במדפסת '%s' אזל לפחות אחד מחומרי ההדפסה." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "המכסה פתוח במדפסת '%s'." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "הדלת פתוחה במדפסת '%s'." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "במדפסת '%s' חסר נייר." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "במדפסת '%s' אין נייר" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "המדפסת '%s' אינה מקוונת נכון לעכשיו." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "קיימת בעיה במדפסת '%s'." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "מופסק; דוחה עבודות" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "דוחה עבודות" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "שני צדדים" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "סוג נייר" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "מקור נייר" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "מגש פלט" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "רזולוציה" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "סינון קדם של GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "צד אחד" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "הצד הארוך (תקני)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "הצד הקצר (היפוך)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "בחירה אוטומטית" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "ברירת מחדל עבור המדפסת" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "הטמעת גופני PostScript בלבד" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "המרה ל־PS רמה 1" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "המרה ל־PS רמה 2" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "אין סינון קדם" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "שונות" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "דחוף" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "גבוה" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "בינוני" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "נמוך" @@ -4053,66 +4123,66 @@ msgstr "נמוך" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "מספר העמודים בדף" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "עדיפות המשימה" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "נתוני חיוב" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "ללא" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "מסווג" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "חסוי" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "סודי" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "רגיל" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "סודי ביותר" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "לא מסווג" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "לפני" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "אחרי" @@ -4120,14 +4190,14 @@ msgstr "אחרי" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "זמן הדפסה" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "הדפסה בזמן" @@ -4135,7 +4205,7 @@ msgstr "הדפסה בזמן" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "מותאם אישית %sx%s" @@ -4150,30 +4220,30 @@ msgstr "פלט.%s" msgid "Print to File" msgstr "הדפסה לקובץ" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "מספר העמודים ב_דף" # hebrew note: "תיקייה" is "folder", but there is no better word for # "directory" -#: ../modules/printbackends/file/gtkprintbackendfile.c:649 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "קובץ" -#: ../modules/printbackends/file/gtkprintbackendfile.c:659 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "_תצורת הפלט" @@ -4240,6 +4310,27 @@ msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "נכשל בפתיחת התמונה '%s': הסיבה איננה ידועה, כנראה קובץ תמונה פגום" +#~ msgid "X screen to use" +#~ msgstr "X screen to use" + +#~ msgid "SCREEN" +#~ msgstr "SCREEN" + +#~ msgid "Make X calls synchronous" +#~ msgstr "Make X calls synchronous" + +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "לא ניתן לאתר את מנוע ערכת הנושא הנטען ב־module_path:‏ \"%s\"," + +#~ msgid "Credits" +#~ msgstr "תודות" + +#~ msgid "Written by" +#~ msgstr "נכתב על ידי" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "לא ניתן למצוא את קובץ ה include: \"%s\"" + #~ msgid "Error creating folder '%s': %s" #~ msgstr "שגיאה ביצירת התיקייה '%s': %s" @@ -4931,9 +5022,6 @@ msgstr "נכשל בפתיחת התמונה '%s': הסיבה איננה ידוע #~ msgid "_Folder name:" #~ msgstr "שם ה_תיקייה:" -#~ msgid "C_reate" -#~ msgstr "_צור" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "שם הקובץ \"%s\" מכיל סמלים שאינם מותרים לשימוש בשמות קבצים" diff --git a/po/id.po b/po/id.po index fbf6506cfb..f51bdf3323 100644 --- a/po/id.po +++ b/po/id.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: gtk+.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" -"POT-Creation-Date: 2010-11-24 12:37+0000\n" -"PO-Revision-Date: 2010-11-26 12:06+0700\n" +"POT-Creation-Date: 2011-01-06 23:12+0000\n" +"PO-Revision-Date: 2011-01-07 19:47+0700\n" "Last-Translator: Andika Triwidada \n" "Language-Team: GNOME Indonesian Translation Team \n" "MIME-Version: 1.0\n" @@ -25,58 +25,48 @@ msgstr "" "X-Poedit-Country: Indonesia\n" "X-Generator: Lokalize 1.1\n" -#: ../gdk/gdk.c:115 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Galat sewaktu mengurai opsi --gdk-debug" -#: ../gdk/gdk.c:135 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Galat sewaktu mengurai opsi --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:163 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Kelas program yang digunakan pengatur jendela program" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "KELAS" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:166 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Nama program sebagaimana digunakan oleh program pengatur jendela" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NAMA" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:169 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "Tampilan X yang akan dipakai" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:170 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "TAMPILAN" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:172 -msgid "X screen to use" -msgstr "Layar X yang akan dipakai" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:173 -msgid "SCREEN" -msgstr "LAYAR" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:176 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "Tanda debug GDK yang hendak disetel" @@ -84,15 +74,15 @@ msgstr "Tanda debug GDK yang hendak disetel" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:177 -#: ../gdk/gdk.c:180 -#: ../gtk/gtkmain.c:525 -#: ../gtk/gtkmain.c:528 +#: ../gdk/gdk.c:211 +#: ../gdk/gdk.c:214 +#: ../gtk/gtkmain.c:570 +#: ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "TANDA" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:179 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "Tanda debug GDK yang ingin dibuang setelannya" @@ -282,109 +272,108 @@ msgid "Delete" msgstr "Delete" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Jangan antrikan permintaan GDI" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Jangan gunakan API Wintab untuk dukungan tablet" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "Sama dengan --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Jangan gunakan API Wintab (berlaku pada kondisi awal)" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Ukuran palet dalam moda 8 bit" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "WARNA" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Memulai %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Membuka '%s'" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Membuka %d Item" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Buat panggilan X sinkronus" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "Program ini TANPA JAMINAN APA PUN; untuk lebih jelas, kunjungi %s" +#| msgid "" +#| "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "Program ini TANPA JAMINAN APA PUN; untuk lebih jelas, kunjungi %s" -#: ../gtk/gtkaboutdialog.c:339 -#: ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Lisensi" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "Lisensi program" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "K_redit" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Lisensi" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "Tidak dapat menampilkan taut" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +#| msgctxt "keyboard label" +#| msgid "Home" +msgid "Homepage" +msgstr "Laman Web" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "Tentang %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "Kredit" +#: ../gtk/gtkaboutdialog.c:2372 +#| msgid "Translated by" +msgid "Created by" +msgstr "Dibuat oleh" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "Penulis" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Dokumentasi" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "Penerjemah" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Karya Seni" @@ -393,7 +382,7 @@ msgstr "Karya Seni" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -403,7 +392,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -413,7 +402,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -423,7 +412,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -433,7 +422,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -443,37 +432,129 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Spasi" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Backslash" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +#| msgid "Application" +msgid "Other application..." +msgstr "Aplikasi lain..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Gagal mencari aplikasi daring" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Cari aplikasi daring" + +#: ../gtk/gtkappchooserdialog.c:208 +#| msgid "Could not clear list" +msgid "Could not run application" +msgstr "Tidak dapat menjalankan aplikasi" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +#| msgid "Could not mount %s" +msgid "Could not find '%s'" +msgstr "Tidak dapat menemukan '%s'" + +#: ../gtk/gtkappchooserdialog.c:224 +#| msgid "Could not show link" +msgid "Could not find application" +msgstr "Tidak dapat menemukan aplikasi" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Pilih aplikasi untuk membuka \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:335 +#: ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Tak tersedia aplikasi untuk membuka \"%s\"" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Pilih aplikasi bagi berkas \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Tak tersedia aplikasi untuk membuka berka \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "Click \"Show other applications\", for more options, or \"Find applications online\" to install a new application" +msgstr "Klik \"Tampilkan aplikasi lain\" untuk opsi lebih banyak, atau \"Cari aplikasi daring\" untuk memasang aplikasi baru" + +#: ../gtk/gtkappchooserdialog.c:428 +#| msgid "Forget password _immediately" +msgid "Forget association" +msgstr "Lupakan asosiasi" + +#: ../gtk/gtkappchooserdialog.c:493 +#| msgid "Show GTK+ Options" +msgid "Show other applications" +msgstr "Tampilkan aplikasi lain" + +#: ../gtk/gtkappchooserdialog.c:511 +#| msgctxt "Stock label" +#| msgid "_Open" +msgid "_Open" +msgstr "Buk_a" + +#: ../gtk/gtkappchooserwidget.c:593 +#| msgid "Application" +msgid "Default Application" +msgstr "Aplikasi Bawaan" + +#: ../gtk/gtkappchooserwidget.c:729 +#| msgid "Application" +msgid "Recommended Applications" +msgstr "Aplikasi Yang Disarankan" + +#: ../gtk/gtkappchooserwidget.c:743 +#| msgid "Application" +msgid "Related Applications" +msgstr "Aplikasi Terkait" + +#: ../gtk/gtkappchooserwidget.c:756 +#| msgid "Application" +msgid "Other Applications" +msgstr "Aplikasi Lain" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Tipe fungsi tak valid pada baris %d: '%s'" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "Objek ID '%s' ganda pada baris %d (sebelumnya pada baris %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Elemen akar tidak berlaku: %s" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Tag tak tertangani: '%s'" @@ -488,7 +569,7 @@ msgstr "Tag tak tertangani: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:885 msgid "calendar:MY" msgstr "calendar:MY" @@ -497,7 +578,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:916 +#: ../gtk/gtkcalendar.c:923 msgid "calendar:week_start:0" msgstr "calendar:week_start:0" @@ -506,7 +587,7 @@ msgstr "calendar:week_start:0" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1903 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -521,8 +602,8 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 -#: ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1934 +#: ../gtk/gtkcalendar.c:2623 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -538,8 +619,8 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 -#: ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1966 +#: ../gtk/gtkcalendar.c:2491 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -555,7 +636,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2256 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -563,7 +644,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Dinonaktifkan" @@ -572,7 +653,7 @@ msgstr "Dinonaktifkan" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "Tak valid" @@ -581,8 +662,8 @@ msgstr "Tak valid" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 -#: ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 +#: ../gtk/gtkcellrendereraccel.c:674 msgid "New accelerator..." msgstr "Akselerator baru..." @@ -593,117 +674,117 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 -#: ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 +#: ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "Pilih Warna" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "Menerima data warna yang salah\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle." msgstr "Pilih warna untuk ring terluar. Pilih tingkat kegelapan atau keterangan pada warna tersebut menggunakan segitiga yang ada di dalam." -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "Click the eyedropper, then click a color anywhere on your screen to select that color." msgstr "Klik pada pengambil warna, lalu klik pada warna apa saja di layar untuk memilih warna tersebut." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Corak:" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Posisi pada roda warna." -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Saturasi:" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensitas warna." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Nilai:" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Kecerahan warna." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "Me_rah:" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Intensiyas cahaya merah pada warna." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Hijau:" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Intensitas cahaya hijau pada warna." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Biru:" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Intensitas cahaya biru pada warna." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "Op_asitas:" -#: ../gtk/gtkcolorsel.c:471 -#: ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 +#: ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Nilai transparansi warna." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "_Nama warna:" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "You can enter an HTML-style hexadecimal color value, or simply a color name such as 'orange' in this entry." msgstr "Anda dapat memasukkan nilai warna dalam gaya HTML heksadesimal, atau bisa juga masukkan namanya, misalnya 'orange'." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Palet:" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Roda Warna" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside." msgstr "Warna yang sebelumnya dipilih sebagai warna perbandingan dengan warna yang Anda pilih sekarang. Ambil warna ini ke dalam palet, atau pilih warna ini sebagai warna aktif dengan menyeretnya ke dalam kotak warna." -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "The color you've chosen. You can drag this color to a palette entry to save it for use in the future." msgstr "Warna yang Anda pilih. Ambil warna ini ke dalam palet agar dapat digunakan di kemudian hari" -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "The previously-selected color, for comparison to the color you're selecting now." msgstr "Warna yang sebelumnya dipilih, untuk perbandingan dengan warna yang kini sedang Anda pilih." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "Warna yang telah Anda pilih." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1444 msgid "_Save color here" msgstr "_Simpan warna di sini" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1652 msgid "Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\"" msgstr "Klik pada palet untuk menjadikannya sebagai warna aktif. Untuk merubahnya, ambil warna pada kotak warna atau klik kanan dan pilih \"Simpan warna di sini\"" @@ -723,7 +804,7 @@ msgstr "default:mm" #. And show the custom paper dialog #: ../gtk/gtkcustompaperunixdialog.c:374 -#: ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkprintunixdialog.c:3242 msgid "Manage Custom Sizes" msgstr "Kelola Ukuran Sesuaian" @@ -778,81 +859,81 @@ msgstr "_Kanan:" msgid "Paper Margins" msgstr "Margin Kertas" -#: ../gtk/gtkentry.c:8794 -#: ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8806 +#: ../gtk/gtktextview.c:8222 msgid "Input _Methods" msgstr "_Metode Input" -#: ../gtk/gtkentry.c:8808 -#: ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8820 +#: ../gtk/gtktextview.c:8236 msgid "_Insert Unicode Control Character" msgstr "_Isikan karakter kontrol Unicode" -#: ../gtk/gtkentry.c:10208 +#: ../gtk/gtkentry.c:10224 msgid "Caps Lock and Num Lock are on" msgstr "Tombol Caps Lock dan Num Lock sedang aktif" -#: ../gtk/gtkentry.c:10210 +#: ../gtk/gtkentry.c:10226 msgid "Num Lock is on" msgstr "Num Lock menyala" -#: ../gtk/gtkentry.c:10212 +#: ../gtk/gtkentry.c:10228 msgid "Caps Lock is on" msgstr "Caps Lock menyala" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Pilih Berkas" -#: ../gtk/gtkfilechooserbutton.c:62 -#: ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Desktop" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(Nihil)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Lainnya..." -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Ketikkan nama folder baru" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "Informasi mengenai berkas ini tidak tersedia" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "Tidak dapat menambah buku alamat" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "Tidak dapat menghapus penanda alamat" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "Folder tidak dapat dibuat" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "The folder could not be created, as a file with the same name already exists. Try using a different name for the folder, or rename the file first." msgstr "Folder ini tidak dapat dibuat karena sudah ada berkas di situ dengan nama yang sama. Silakan ganti nama folder ini, atau ganti nama berkas itu terlebih dahulu." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "You may only select folders. The item that you selected is not a folder; try using a different item." msgstr "Anda hanya boleh memilih folder. Butir yang Anda pilih bukan folder; cobalah memilih butir lain." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "Nama berkas tidak sah" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "Isi folder tidak dapat ditampilkan" @@ -860,241 +941,241 @@ msgstr "Isi folder tidak dapat ditampilkan" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s pada %2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Cari" -#: ../gtk/gtkfilechooserdefault.c:1776 -#: ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:1777 +#: ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Baru-baru Ini Digunakan" -#: ../gtk/gtkfilechooserdefault.c:2437 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Pilih jenis berkas yang ingin ditampilkan" -#: ../gtk/gtkfilechooserdefault.c:2796 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Menambahkan folder '%s' dalam penanda tautan" -#: ../gtk/gtkfilechooserdefault.c:2840 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Masukkan folder ini dalam penanda tautan" -#: ../gtk/gtkfilechooserdefault.c:2842 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Menambahkan folder yang dipilih dalam penanda tautan" -#: ../gtk/gtkfilechooserdefault.c:2880 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Menghapus penanda '%s'" -#: ../gtk/gtkfilechooserdefault.c:2882 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "Penanda '%s' tidak dapat dihapus" -#: ../gtk/gtkfilechooserdefault.c:2889 -#: ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:2890 +#: ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Menghapus penanda yang dipilih" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Hapus" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Ubah Nama..." #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Lokasi" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Lokasi" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "T_ambah" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Menambahkan folder yang dipilih dalam Penanda Tautan" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "_Hapus" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "Tidak dapat memilih berkas" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "T_ambah dalam Penanda Tautan" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "_Tampilkan Berkas Tersembunyi" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Tampilkan Kolom _Ukuran" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Berkas" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Nama" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Ukuran" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Diubah" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 +#: ../gtk/gtkfilechooserdefault.c:4657 #: ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Nama:" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Lihat folder lainnya" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Ketikkan nama berkas" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Buat Fo_lder" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "_Lokasi:" -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "Simpan dalam _folder:" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Buat dalam _folder:" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "Tidak dapat membaca isi dari %s" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "Tidak bisa membaca isi dari folder" -#: ../gtk/gtkfilechooserdefault.c:6387 -#: ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6393 +#: ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Tidak Diketahui" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "Kemarin, pukul %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "Tidak dapat mengganti folder karena tidak berada pada komputer lokal" -#: ../gtk/gtkfilechooserdefault.c:7667 -#: ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7673 +#: ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "Pintasan %s sudah ada" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "Pintasan %s tidak ada" -#: ../gtk/gtkfilechooserdefault.c:8039 -#: ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 +#: ../gtk/gtkprintunixdialog.c:481 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "Berkas \"%s\" sudah ada. Timpa?" -#: ../gtk/gtkfilechooserdefault.c:8042 -#: ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 +#: ../gtk/gtkprintunixdialog.c:485 #, c-format msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "Berkas sudah ada dalam \"%s\". Berkas lama akan diganti dengan yang baru bila Anda menimpanya." -#: ../gtk/gtkfilechooserdefault.c:8047 -#: ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 +#: ../gtk/gtkprintunixdialog.c:492 msgid "_Replace" msgstr "_Timpa" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Tidak dapat memulai proses pencarian" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "The program was not able to create a connection to the indexer daemon. Please make sure it is running." msgstr "Program tidak dapat membuat koneksi ke indexer daemon. Pastikan program sedang berjalan." -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Tidak dapat mengirim permintaan pencarian" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Cari:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Tidak dapat mengaitkan %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 -#: ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 +#: ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Lokasi salah" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "Tak ada yang cocok" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Hasil satu-satunya" @@ -1102,13 +1183,13 @@ msgstr "Hasil satu-satunya" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Lengkap, tapi tak unik" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Sedang menyelesaikan..." @@ -1116,8 +1197,8 @@ msgstr "Sedang menyelesaikan..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 -#: ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 +#: ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Hanya boleh memilih berkas lokal" @@ -1125,14 +1206,14 @@ msgstr "Hanya boleh memilih berkas lokal" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "Nama host tak lengkap; akhirilah dengan '/'" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "Lokasi tidak ada" @@ -1161,40 +1242,40 @@ msgstr "Fonta" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:367 msgid "_Family:" msgstr "_Keluarga:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:373 msgid "_Style:" msgstr "_Gaya:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:379 msgid "Si_ze:" msgstr "_Ukuran:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:555 msgid "_Preview:" msgstr "_Pratinjau:" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1655 msgid "Font Selection" msgstr "Seleksi Fonta" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Galat ketika memuat ikon: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1207,12 +1288,12 @@ msgstr "" "Anda bisa mendapatkannya dari:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "Ikon '%s' tidak ada pada tema" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Gagal memuat ikon" @@ -1237,45 +1318,45 @@ msgid "System (%s)" msgstr "Sistem (%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Buka Taut" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Sa_lin Alamat Taut" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Salin URL" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "URI Salah" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:518 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Panggil modul GTK+ lainnya" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MODUL" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:521 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "Buat semua peringatan menjadi pesan fatal" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:524 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "Bendera debug GTK+ yang hendak dipasang" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "Bendera debug GTK+ yang hendak dilepas" @@ -1284,20 +1365,20 @@ msgstr "Bendera debug GTK+ yang hendak dilepas" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:790 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:855 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Tak bisa membuka tampilan: %s" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "Opsi GTK+" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Menampilkan Opsi GTK+" @@ -1382,8 +1463,8 @@ msgstr "Z Shell" msgid "Cannot end process with PID %d: %s" msgstr "Tidak dapat mengakhiri proses dengan PID %d: %s" -#: ../gtk/gtknotebook.c:4756 -#: ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 +#: ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "Halaman %u" @@ -1418,7 +1499,7 @@ msgstr "" " Bawah: %s %s" #: ../gtk/gtkpagesetupunixdialog.c:858 -#: ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkprintunixdialog.c:3293 msgid "Manage Custom Sizes..." msgstr "Kelola Ukuran Sesuaian..." @@ -1427,7 +1508,7 @@ msgid "_Format for:" msgstr "_Bentuk untuk:" #: ../gtk/gtkpagesetupunixdialog.c:931 -#: ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkprintunixdialog.c:3465 msgid "_Paper size:" msgstr "_Ukuran kertas:" @@ -1436,19 +1517,19 @@ msgid "_Orientation:" msgstr "_Orientasi:" #: ../gtk/gtkpagesetupunixdialog.c:1026 -#: ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkprintunixdialog.c:3527 msgid "Page Setup" msgstr "Atur Halaman" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Lokasi Naik" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Lokasi Turun" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "Akar Sistem Berkas" @@ -1472,84 +1553,84 @@ msgstr "_Simpan pada folder:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s tugas #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Keadaan awal" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "Bersiap mencetak..." -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Membangkitkan data" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Mengirim data" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "Menunggu" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Menghadang karena ada masalah" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Mencetak" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Selesai" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Selesai dengan galat" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "Bersiap %d" -#: ../gtk/gtkprintoperation.c:2272 -#: ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Bersiap" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "Mencetak %d" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Galat membuat pratinjau cetak" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "Alasan paling mungkin adalah berkas temporer tidak dapat dibuat." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Galat ketika membuka pratinjau" -#: ../gtk/gtkprintoperation-unix.c:470 +#: ../gtk/gtkprintoperation-unix.c:477 #: ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Aplikasi" @@ -1564,7 +1645,7 @@ msgstr "Habis kertas" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Ditahan" @@ -1611,49 +1692,49 @@ msgstr "Penanganan salah untuk PrintDlgEx" msgid "Unspecified error" msgstr "Kesalahan tidak jelas" -#: ../gtk/gtkprintunixdialog.c:618 +#: ../gtk/gtkprintunixdialog.c:619 msgid "Getting printer information failed" msgstr "Gagal memperoleh informasi pencetak" -#: ../gtk/gtkprintunixdialog.c:1873 +#: ../gtk/gtkprintunixdialog.c:1874 msgid "Getting printer information..." msgstr "Mengambil informasi pencetak..." -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2141 msgid "Printer" msgstr "Pencetak" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2151 msgid "Location" msgstr "Lokasi" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2162 msgid "Status" msgstr "Status" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2188 msgid "Range" msgstr "Jangkauan" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2192 msgid "_All Pages" msgstr "Semu_a Halaman" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2199 msgid "C_urrent Page" msgstr "Halaman Sekarang" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2209 msgid "Se_lection" msgstr "Se_leksi" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "Pag_es:" msgstr "_Halaman:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2219 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1661,28 +1742,28 @@ msgstr "" "Nyatakan satu atau lebih rentang halaman,\n" "mis: 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2229 msgid "Pages" msgstr "Halaman" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2242 msgid "Copies" msgstr "Rangkap" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2247 msgid "Copie_s:" msgstr "_Rangkap:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2265 msgid "C_ollate" msgstr "K_olasi" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2273 msgid "_Reverse" msgstr "Te_rbalik" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2293 msgid "General" msgstr "Umum" @@ -1692,169 +1773,169 @@ msgstr "Umum" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "Kiri ke kanan, puncak ke dasar" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "Kiri ke kanan, dasar ke puncak" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "Kanan ke kiri, puncak ke dasar" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "Kanan ke kiri, dasar ke puncak" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "Puncak ke dasar, kiri ke kanan" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "Puncak ke dasar, kanan ke kiri" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "Dasar ke puncak, kiri ke kanan" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "Dasar ke puncak, kanan ke kiri" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 -#: ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3033 +#: ../gtk/gtkprintunixdialog.c:3046 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Urutan Halaman" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Left to right" msgstr "Kiri ke kanan" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3063 msgid "Right to left" msgstr "Kanan ke kiri" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Top to bottom" msgstr "Puncak ke dasar" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Bottom to top" msgstr "Dasar ke puncak" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3316 msgid "Layout" msgstr "Tata letak" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3320 msgid "T_wo-sided:" msgstr "D_ua sisi:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3335 msgid "Pages per _side:" msgstr "Halaman per _sisi:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3352 msgid "Page or_dering:" msgstr "U_rutan halaman:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3368 msgid "_Only print:" msgstr "_Hanya cetak:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3383 msgid "All sheets" msgstr "Semua lembar" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Even sheets" msgstr "Halaman genap" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3385 msgid "Odd sheets" msgstr "Halaman Ganjil" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3388 msgid "Sc_ale:" msgstr "Sk_ala:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3415 msgid "Paper" msgstr "Kertas" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3419 msgid "Paper _type:" msgstr "Jenis ker_tas:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3434 msgid "Paper _source:" msgstr "_Sumber kertas" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3449 msgid "Output t_ray:" msgstr "Baki kelua_ran:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3489 msgid "Or_ientation:" msgstr "Or_ientasi:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Portrait" msgstr "Tegak" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Landscape" msgstr "Tumbang" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse portrait" msgstr "Tegak terjungkir" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3507 msgid "Reverse landscape" msgstr "Tumbang terbalik" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3552 msgid "Job Details" msgstr "Rincian Tugas" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3558 msgid "Pri_ority:" msgstr "Pri_oritas:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3573 msgid "_Billing info:" msgstr "Info _Billing:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3591 msgid "Print Document" msgstr "Cetak Dokumen" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3600 msgid "_Now" msgstr "Sekara_ng" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3611 msgid "A_t:" msgstr "_Pada:" @@ -1862,7 +1943,7 @@ msgstr "_Pada:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3617 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1870,78 +1951,72 @@ msgstr "" "Nyatakan waktu pencetakan,\n" "mis: 15:30, 14:15:20, 4" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3627 msgid "Time of print" msgstr "Waktu cetak" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "On _hold" msgstr "_Tahan" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3644 msgid "Hold the job until it is explicitly released" msgstr "Tahan tugas sampai dilepas secara eksplisit" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3664 msgid "Add Cover Page" msgstr "Tambahkan Sampulan Halaman" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3673 msgid "Be_fore:" msgstr "_Sebelum:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3691 msgid "_After:" msgstr "Sesud_ah:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3709 msgid "Job" msgstr "Tugas" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3775 msgid "Advanced" msgstr "Diperluas" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3813 msgid "Image Quality" msgstr "Kualitas Gambar" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3817 msgid "Color" msgstr "Warna" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3822 msgid "Finishing" msgstr "Penyelesaian" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3832 msgid "Some of the settings in the dialog conflict" msgstr "Beberapa ketentuan pada dialog konflik" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3855 msgid "Print" msgstr "Cetak" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Tidak dapat menemukan berkas yang hendak disisipkan: \"%s\"" - -#: ../gtk/gtkrc.c:3470 -#: ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "TIdak dapat menemukan berkas gambar pada pixmap_path: \"%s\"" @@ -1958,37 +2033,37 @@ msgstr "Fungsi ini tidak diterapkan untuk widget kelas '%s'" msgid "Select which type of documents are shown" msgstr "Pilih jenis berkas mana yang ingin ditampilkan" -#: ../gtk/gtkrecentchooserdefault.c:1133 -#: ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 +#: ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "Tidak menemukan item untuk URI '%s'" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Penyaring tanpa nama" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "Tidak dapat menghapus item" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "Tidak dapat membersihkan daftar" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "Salin _Lokasi" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "Buang Dari Dafta_r" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_Kosongkan Daftar" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Tampilkan Sumber _Pribadi" @@ -2057,12 +2132,12 @@ msgstr "Tidak dapat menemukan objek dengan URI '%s'" msgid "No registered application with name '%s' for item with URI '%s' found" msgstr "Tak ditemukan aplikasi terdaftar dengan nama '%s' bagi butir dengan URI '%s'" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Gambar Putar" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Menyediakan indikasi visual dari kemajuan" @@ -2570,6 +2645,37 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "P_erkecil Tampilan" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:304 +#: ../gtk/gtkswitch.c:353 +#: ../gtk/gtkswitch.c:544 +msgctxt "switch" +msgid "ON" +msgstr "NYALA" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:312 +#: ../gtk/gtkswitch.c:354 +#: ../gtk/gtkswitch.c:560 +msgctxt "switch" +msgid "OFF" +msgstr "MATI" + +#: ../gtk/gtkswitch.c:959 +#| msgid "inch" +msgctxt "light switch widget" +msgid "Switch" +msgstr "Tukar" + +#: ../gtk/gtkswitch.c:960 +msgid "Switches between on and off states" +msgstr "Bertukar antara keadaan nyala dan mati" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2580,111 +2686,111 @@ msgstr "Kesalahan tidak dikenal ketika mencoba deserialisasi %s" msgid "No deserialize function found for format %s" msgstr "Tidak menemukan fungsi deserialiasi untuk bentuk %s" -#: ../gtk/gtktextbufferserialize.c:803 -#: ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 +#: ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Bagian \"id\" dan \"nama\" ditemukan pada bagian <%s>" -#: ../gtk/gtktextbufferserialize.c:813 -#: ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 +#: ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Atribu \"%s\" ditemukan dua kali di bagian <%s>" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "Elemen <%s> memiliki ID \"%s\" yang tidak sah" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "bagian <%s> telah memiliki atribut \"nama\" ataupun \"id\"" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Atribut \"%s\" mengulang dua kali pada bagian <%s> yang sama" -#: ../gtk/gtktextbufferserialize.c:970 -#: ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 +#: ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Atribut \"%s\" salah pada bagian <%s> dalam konteks ini" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Tag \"%s\" tidak dijelaskan." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Tag tak dikenal ditemukan dan tags tidak bisa dibuat." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "Tag \"%s\" tidak ada dalam buffer dan tags tidak bisa dibuat." -#: ../gtk/gtktextbufferserialize.c:1156 -#: ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 -#: ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 +#: ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 +#: ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Elemen <%s> tidak diperbolehkan di bawah <%s>" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" bukan jenis atribut yang benar" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" bukan nama atribut yang benar" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "\"%s\" tidak bisa dirubah ke nilai jenis \"%s\" untuk atribut \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" tidak benar untuk atribut \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "Tag \"%s\" sudah ditentukan" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Tag \"%s\" memiliki prioritas yang salah \"%s\"" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Bagian terluar dari teks harus bukan <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 -#: ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 +#: ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "Suatu bagian <%s> sudah ditentukan" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "Suatu bagian \n" "Language-Team: Kazakh \n" "MIME-Version: 1.0\n" @@ -19,58 +19,58 @@ msgstr "" "X-Poedit-Language: Kazakh\n" "X-Poedit-Country: KAZAKHSTAN\n" -#: ../gdk/gdk.c:103 +#: ../gdk/gdk.c:115 #, c-format msgid "Error parsing option --gdk-debug" msgstr "--gdk-debug опциясын өңдеу қатесі" -#: ../gdk/gdk.c:123 +#: ../gdk/gdk.c:135 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "--gdk-no-debug опциясын өңдеу қатесі" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:151 +#: ../gdk/gdk.c:163 msgid "Program class as used by the window manager" msgstr "Терезелер басқарушы қолданатындай бағдарлама класы" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:152 +#: ../gdk/gdk.c:164 msgid "CLASS" msgstr "КЛАСС" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:154 +#: ../gdk/gdk.c:166 msgid "Program name as used by the window manager" msgstr "Терезелер басқарушы қолданатындай бағдарлама аты" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:155 +#: ../gdk/gdk.c:167 msgid "NAME" msgstr "АТЫ" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:157 +#: ../gdk/gdk.c:169 msgid "X display to use" msgstr "Қолданылатын X дисплейі" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:158 +#: ../gdk/gdk.c:170 msgid "DISPLAY" msgstr "ДИСПЛЕЙ" #. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:160 +#: ../gdk/gdk.c:172 msgid "X screen to use" msgstr "Қолданылатын X экраны" #. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:161 +#: ../gdk/gdk.c:173 msgid "SCREEN" msgstr "ЭКРАН" #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:176 msgid "GDK debugging flags to set" msgstr "GDK жөндеу жалаушалары орнатылған" @@ -78,15 +78,15 @@ msgstr "GDK жөндеу жалаушалары орнатылған" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:165 -#: ../gdk/gdk.c:168 -#: ../gtk/gtkmain.c:533 -#: ../gtk/gtkmain.c:536 +#: ../gdk/gdk.c:177 +#: ../gdk/gdk.c:180 +#: ../gtk/gtkmain.c:523 +#: ../gtk/gtkmain.c:526 msgid "FLAGS" msgstr "ЖАЛАУШАЛАР" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:179 msgid "GDK debugging flags to unset" msgstr "GDK жөндеу жалаушалары орнатылмаған" @@ -305,80 +305,84 @@ msgstr "8 биттік режиміндегі палитра өлшемі" msgid "COLORS" msgstr "ТҮСТЕР" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:305 #, c-format msgid "Starting %s" msgstr "%s қосылу" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:318 #, c-format msgid "Opening %s" msgstr "%s ашу" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:323 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "%d нәрсе ашылуда" #. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:96 +#: ../gdk/x11/gdkmain-x11.c:94 msgid "Make X calls synchronous" msgstr "X сервер шақыруларын синхронды қылу" #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:105 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "Бұл бағдарлама ЕШҚАНДАЙ КЕПІЛДЕМЕСІЗ таратылады; көбірек білу үшін, %s шолыңыз" +#| msgid "" +#| "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "Бұл бағдарлама ЕШҚАНДАЙ КЕПІЛДЕМЕСІЗ таратылады; көбірек білу үшін, %s шолыңыз" -#: ../gtk/gtkaboutdialog.c:339 -#: ../gtk/gtkaboutdialog.c:2235 +#: ../gtk/gtkaboutdialog.c:347 msgid "License" msgstr "Лицензиясы" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:348 msgid "The license of the program" msgstr "Бағдарлама лицензиясы" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:621 +#: ../gtk/gtkaboutdialog.c:741 msgid "C_redits" msgstr "Ж_асағандар" #. Add the license button -#: ../gtk/gtkaboutdialog.c:635 +#: ../gtk/gtkaboutdialog.c:754 msgid "_License" msgstr "Л_ицензиясы" -#: ../gtk/gtkaboutdialog.c:839 +#: ../gtk/gtkaboutdialog.c:959 msgid "Could not show link" msgstr "Сілтемені көрсету мүмкін емес" -#: ../gtk/gtkaboutdialog.c:932 +#: ../gtk/gtkaboutdialog.c:996 +#| msgctxt "keyboard label" +#| msgid "Home" +msgid "Homepage" +msgstr "Үй парағы" + +#: ../gtk/gtkaboutdialog.c:1052 #, c-format msgid "About %s" msgstr "%s туралы" -#: ../gtk/gtkaboutdialog.c:2153 -msgid "Credits" -msgstr "Жасағандар" +#: ../gtk/gtkaboutdialog.c:2367 +#| msgid "C_reate" +msgid "Created by" +msgstr "Жасаған" -#: ../gtk/gtkaboutdialog.c:2185 -msgid "Written by" -msgstr "Жазған" - -#: ../gtk/gtkaboutdialog.c:2188 +#: ../gtk/gtkaboutdialog.c:2370 msgid "Documented by" msgstr "Құжаттаманы жазған" -#: ../gtk/gtkaboutdialog.c:2200 +#: ../gtk/gtkaboutdialog.c:2382 msgid "Translated by" msgstr "Аударған" -#: ../gtk/gtkaboutdialog.c:2204 +#: ../gtk/gtkaboutdialog.c:2386 msgid "Artwork by" msgstr "Бейнелеуі" @@ -482,7 +486,7 @@ msgstr "Өңделмеген тег: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:883 +#: ../gtk/gtkcalendar.c:878 msgid "calendar:MY" msgstr "calendar:MY" @@ -490,7 +494,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:921 +#: ../gtk/gtkcalendar.c:916 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -499,7 +503,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:2006 +#: ../gtk/gtkcalendar.c:1848 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -514,8 +518,8 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:2037 -#: ../gtk/gtkcalendar.c:2719 +#: ../gtk/gtkcalendar.c:1879 +#: ../gtk/gtkcalendar.c:2564 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -531,8 +535,8 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:2069 -#: ../gtk/gtkcalendar.c:2579 +#: ../gtk/gtkcalendar.c:1911 +#: ../gtk/gtkcalendar.c:2432 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -548,7 +552,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2361 +#: ../gtk/gtkcalendar.c:2197 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -586,117 +590,117 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:176 -#: ../gtk/gtkcolorbutton.c:445 +#: ../gtk/gtkcolorbutton.c:188 +#: ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "Түсті таңдаңыз" -#: ../gtk/gtkcolorbutton.c:336 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "Алынған түс мәні қате\n" -#: ../gtk/gtkcolorsel.c:384 +#: ../gtk/gtkcolorsel.c:416 msgid "Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle." msgstr "Өіңізге керек түсті сыртқы шеңберден таңдаңыз. Ол түстің күңгірттігін не ашықтығын ішіндегі үшбұрыштан көрсетіңіз." -#: ../gtk/gtkcolorsel.c:408 +#: ../gtk/gtkcolorsel.c:440 msgid "Click the eyedropper, then click a color anywhere on your screen to select that color." msgstr "Түс алушыны шертіп, экранның кез-келген аймағының түсін таңдау үшін жай ғана ол түске шертіңіз." -#: ../gtk/gtkcolorsel.c:417 +#: ../gtk/gtkcolorsel.c:449 msgid "_Hue:" msgstr "Р_еңі:" -#: ../gtk/gtkcolorsel.c:418 +#: ../gtk/gtkcolorsel.c:450 msgid "Position on the color wheel." msgstr "Түс шеңберіндегі орны." -#: ../gtk/gtkcolorsel.c:420 +#: ../gtk/gtkcolorsel.c:452 msgid "_Saturation:" msgstr "Қ_аңықтылығы:" -#: ../gtk/gtkcolorsel.c:421 +#: ../gtk/gtkcolorsel.c:453 msgid "Intensity of the color." msgstr "Түс мөлдірлілігі." -#: ../gtk/gtkcolorsel.c:422 +#: ../gtk/gtkcolorsel.c:454 msgid "_Value:" msgstr "Мә_ні:" -#: ../gtk/gtkcolorsel.c:423 +#: ../gtk/gtkcolorsel.c:455 msgid "Brightness of the color." msgstr "Түс жарықтылығы." -#: ../gtk/gtkcolorsel.c:424 +#: ../gtk/gtkcolorsel.c:456 msgid "_Red:" msgstr "Қ_ызыл:" -#: ../gtk/gtkcolorsel.c:425 +#: ../gtk/gtkcolorsel.c:457 msgid "Amount of red light in the color." msgstr "Түстегі қызыл мәннің шамасы." -#: ../gtk/gtkcolorsel.c:426 +#: ../gtk/gtkcolorsel.c:458 msgid "_Green:" msgstr "Ж_асыл:" -#: ../gtk/gtkcolorsel.c:427 +#: ../gtk/gtkcolorsel.c:459 msgid "Amount of green light in the color." msgstr "Түстегі жасыл мәннің шамасы." -#: ../gtk/gtkcolorsel.c:428 +#: ../gtk/gtkcolorsel.c:460 msgid "_Blue:" msgstr "_Көк:" -#: ../gtk/gtkcolorsel.c:429 +#: ../gtk/gtkcolorsel.c:461 msgid "Amount of blue light in the color." msgstr "Түстегі көк мәннің шамасы." -#: ../gtk/gtkcolorsel.c:432 +#: ../gtk/gtkcolorsel.c:464 msgid "Op_acity:" msgstr "Мө_лдірсіздігі:" -#: ../gtk/gtkcolorsel.c:439 -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:471 +#: ../gtk/gtkcolorsel.c:481 msgid "Transparency of the color." msgstr "Түс мөлдірлілігі." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:488 msgid "Color _name:" msgstr "Тү_с аты:" -#: ../gtk/gtkcolorsel.c:470 +#: ../gtk/gtkcolorsel.c:502 msgid "You can enter an HTML-style hexadecimal color value, or simply a color name such as 'orange' in this entry." msgstr "Сіз осында HTML-дей он алтылық түрде түс мәнін не жай ғана түс атын енгізе аласыз, мысалға, 'orange'." -#: ../gtk/gtkcolorsel.c:500 +#: ../gtk/gtkcolorsel.c:532 msgid "_Palette:" msgstr "_Палитра:" -#: ../gtk/gtkcolorsel.c:529 +#: ../gtk/gtkcolorsel.c:561 msgid "Color Wheel" msgstr "Түстер шеңбері." -#: ../gtk/gtkcolorsel.c:988 +#: ../gtk/gtkcolorsel.c:1034 msgid "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside." msgstr "Алдында таңдалған түс, қазіргі таңдаумен салыстыру үшін көрсетілген. Осы түсті палитраға тартып апаруға, не оны ағымдағы түс қылу үшін осы түстер ауыстырғыштың екінші жағына тартып апарыңыз." -#: ../gtk/gtkcolorsel.c:991 +#: ../gtk/gtkcolorsel.c:1037 msgid "The color you've chosen. You can drag this color to a palette entry to save it for use in the future." msgstr "Сіз таңдаған түс. Оны сақтау үшін палитраға тартып апарсаңыз болады." -#: ../gtk/gtkcolorsel.c:996 +#: ../gtk/gtkcolorsel.c:1042 msgid "The previously-selected color, for comparison to the color you're selecting now." msgstr "Алдында таңдалған түс, қазіргі таңдаумен салыстыру үшін көрсетілген." -#: ../gtk/gtkcolorsel.c:999 +#: ../gtk/gtkcolorsel.c:1045 msgid "The color you've chosen." msgstr "Сіз таңдаған түс." -#: ../gtk/gtkcolorsel.c:1396 +#: ../gtk/gtkcolorsel.c:1445 msgid "_Save color here" msgstr "_Түсті осында сақтау" -#: ../gtk/gtkcolorsel.c:1601 +#: ../gtk/gtkcolorsel.c:1653 msgid "Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\"" msgstr "Ағымдағы түс ретінде орнату үшін палитраның осы мүшесін шертіңіз. Осы мүшені өзгерту үшін, түс таңдаушыны осында тартып әкеліңіз, не оң жақпен шертіп, \"Түсті осында сақтау\"-ды таңдаңыз." @@ -716,7 +720,7 @@ msgstr "default:mm" #. And show the custom paper dialog #: ../gtk/gtkcustompaperunixdialog.c:374 -#: ../gtk/gtkprintunixdialog.c:3233 +#: ../gtk/gtkprintunixdialog.c:3241 msgid "Manage Custom Sizes" msgstr "Таңдауыңызша өлшемдерді басқару" @@ -771,25 +775,25 @@ msgstr "Оң ж_ақ:" msgid "Paper Margins" msgstr "Қағаздың шет өрістері" -#: ../gtk/gtkentry.c:8601 -#: ../gtk/gtktextview.c:8248 +#: ../gtk/gtkentry.c:8807 +#: ../gtk/gtktextview.c:8246 msgid "Input _Methods" msgstr "Ен_гізу тәсілдері" -#: ../gtk/gtkentry.c:8615 -#: ../gtk/gtktextview.c:8262 +#: ../gtk/gtkentry.c:8821 +#: ../gtk/gtktextview.c:8260 msgid "_Insert Unicode Control Character" msgstr "Unicode б_асқару таңбасын кірістіру" -#: ../gtk/gtkentry.c:10015 +#: ../gtk/gtkentry.c:10225 msgid "Caps Lock and Num Lock are on" msgstr "Caps Lock пен Num Lock қосулы тұр" -#: ../gtk/gtkentry.c:10017 +#: ../gtk/gtkentry.c:10227 msgid "Num Lock is on" msgstr "Num Lock is қосулы тұр" -#: ../gtk/gtkentry.c:10019 +#: ../gtk/gtkentry.c:10229 msgid "Caps Lock is on" msgstr "Caps Lock қосулы тұр" @@ -801,7 +805,7 @@ msgid "Select A File" msgstr "Файлды таңдаңыз" #: ../gtk/gtkfilechooserbutton.c:62 -#: ../gtk/gtkfilechooserdefault.c:1825 +#: ../gtk/gtkfilechooserdefault.c:1833 msgid "Desktop" msgstr "Жұмыс үстелі" @@ -809,43 +813,43 @@ msgstr "Жұмыс үстелі" msgid "(None)" msgstr "(Ешнәрсе)" -#: ../gtk/gtkfilechooserbutton.c:2005 +#: ../gtk/gtkfilechooserbutton.c:2001 msgid "Other..." msgstr "Басқа..." -#: ../gtk/gtkfilechooserdefault.c:148 +#: ../gtk/gtkfilechooserdefault.c:147 msgid "Type name of new folder" msgstr "Жаңа буманың атын енгізіңіз" -#: ../gtk/gtkfilechooserdefault.c:938 +#: ../gtk/gtkfilechooserdefault.c:946 msgid "Could not retrieve information about the file" msgstr "Файл туралы ақпаратты алу мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:949 +#: ../gtk/gtkfilechooserdefault.c:957 msgid "Could not add a bookmark" msgstr "Бетбелгіні қосу мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:960 +#: ../gtk/gtkfilechooserdefault.c:968 msgid "Could not remove bookmark" msgstr "Бетбелгіні өшіру мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:971 +#: ../gtk/gtkfilechooserdefault.c:979 msgid "The folder could not be created" msgstr "Буманы жасау мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:984 +#: ../gtk/gtkfilechooserdefault.c:992 msgid "The folder could not be created, as a file with the same name already exists. Try using a different name for the folder, or rename the file first." msgstr "Буманы жасау мүмкін емес, өйткені аттас файл бар болып тұр. Бума үшін басқа атын таңдаңыз, не файлды өшіріңіз." -#: ../gtk/gtkfilechooserdefault.c:998 +#: ../gtk/gtkfilechooserdefault.c:1006 msgid "You may only select folders. The item that you selected is not a folder; try using a different item." msgstr "Сізге тек бумаларды таңдауға болады. Сіз таңдаған нәрсе бума емес; басқа нәрсені таңдап көріңіз." -#: ../gtk/gtkfilechooserdefault.c:1008 +#: ../gtk/gtkfilechooserdefault.c:1016 msgid "Invalid file name" msgstr "Файл аты қате" -#: ../gtk/gtkfilechooserdefault.c:1018 +#: ../gtk/gtkfilechooserdefault.c:1026 msgid "The folder contents could not be displayed" msgstr "Бума құрамасын көрсету мүмкін емес" @@ -853,219 +857,219 @@ msgstr "Бума құрамасын көрсету мүмкін емес" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1568 +#: ../gtk/gtkfilechooserdefault.c:1576 #, c-format msgid "%1$s on %2$s" msgstr "%1$s, қайда: %2$s" -#: ../gtk/gtkfilechooserdefault.c:1744 +#: ../gtk/gtkfilechooserdefault.c:1752 msgid "Search" msgstr "Іздеу" -#: ../gtk/gtkfilechooserdefault.c:1768 -#: ../gtk/gtkfilechooserdefault.c:9349 +#: ../gtk/gtkfilechooserdefault.c:1776 +#: ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Соңғы қолданылған" -#: ../gtk/gtkfilechooserdefault.c:2422 +#: ../gtk/gtkfilechooserdefault.c:2437 msgid "Select which types of files are shown" msgstr "Файлдардың қай түрлері көрсетілетінін таңдаңыз" -#: ../gtk/gtkfilechooserdefault.c:2781 +#: ../gtk/gtkfilechooserdefault.c:2796 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "'%s' бумасын бетбелгілерге қосу" -#: ../gtk/gtkfilechooserdefault.c:2825 +#: ../gtk/gtkfilechooserdefault.c:2840 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Ағымдағы буманы бетбелгілерге қосу" -#: ../gtk/gtkfilechooserdefault.c:2827 +#: ../gtk/gtkfilechooserdefault.c:2842 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Таңдалған бумаларды бетбелгілерге қосу" -#: ../gtk/gtkfilechooserdefault.c:2865 +#: ../gtk/gtkfilechooserdefault.c:2880 #, c-format msgid "Remove the bookmark '%s'" msgstr "'%s' бетбелгісін өшіру" -#: ../gtk/gtkfilechooserdefault.c:2867 +#: ../gtk/gtkfilechooserdefault.c:2882 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "'%s' бетбелгісін өшіру мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:2874 -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:2889 +#: ../gtk/gtkfilechooserdefault.c:3757 msgid "Remove the selected bookmark" msgstr "Таңдалған бетбелгіні өшіру" -#: ../gtk/gtkfilechooserdefault.c:3434 +#: ../gtk/gtkfilechooserdefault.c:3452 msgid "Remove" msgstr "Өшіру" -#: ../gtk/gtkfilechooserdefault.c:3443 +#: ../gtk/gtkfilechooserdefault.c:3461 msgid "Rename..." msgstr "Атын ауыстыру..." #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3606 +#: ../gtk/gtkfilechooserdefault.c:3624 msgid "Places" msgstr "Орындар" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3663 +#: ../gtk/gtkfilechooserdefault.c:3681 msgid "_Places" msgstr "Орын_дар" -#: ../gtk/gtkfilechooserdefault.c:3719 +#: ../gtk/gtkfilechooserdefault.c:3738 msgid "_Add" msgstr "Қ_осу" -#: ../gtk/gtkfilechooserdefault.c:3726 +#: ../gtk/gtkfilechooserdefault.c:3745 msgid "Add the selected folder to the Bookmarks" msgstr "Таңдалған буманы бетбелгілерге қосу" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3750 msgid "_Remove" msgstr "Ө_шіру" -#: ../gtk/gtkfilechooserdefault.c:3873 +#: ../gtk/gtkfilechooserdefault.c:3892 msgid "Could not select file" msgstr "Файлды таңдау мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:4048 +#: ../gtk/gtkfilechooserdefault.c:4067 msgid "_Add to Bookmarks" msgstr "Б_етбелгілерге қосу" -#: ../gtk/gtkfilechooserdefault.c:4061 +#: ../gtk/gtkfilechooserdefault.c:4080 msgid "Show _Hidden Files" msgstr "Жас_ырын файлдарды көрсету" -#: ../gtk/gtkfilechooserdefault.c:4068 +#: ../gtk/gtkfilechooserdefault.c:4087 msgid "Show _Size Column" msgstr "Ө_лшем бағанын көрсету" -#: ../gtk/gtkfilechooserdefault.c:4294 +#: ../gtk/gtkfilechooserdefault.c:4313 msgid "Files" msgstr "Файлдар" -#: ../gtk/gtkfilechooserdefault.c:4345 +#: ../gtk/gtkfilechooserdefault.c:4364 msgid "Name" msgstr "Аты" -#: ../gtk/gtkfilechooserdefault.c:4368 +#: ../gtk/gtkfilechooserdefault.c:4387 msgid "Size" msgstr "Өлшемі" -#: ../gtk/gtkfilechooserdefault.c:4382 +#: ../gtk/gtkfilechooserdefault.c:4401 msgid "Modified" msgstr "Өзгертілген" #. Label -#: ../gtk/gtkfilechooserdefault.c:4637 -#: ../gtk/gtkprinteroptionwidget.c:801 +#: ../gtk/gtkfilechooserdefault.c:4656 +#: ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Аты:" -#: ../gtk/gtkfilechooserdefault.c:4680 +#: ../gtk/gtkfilechooserdefault.c:4699 msgid "_Browse for other folders" msgstr "_Басқа бумаларды қарау" -#: ../gtk/gtkfilechooserdefault.c:4950 +#: ../gtk/gtkfilechooserdefault.c:4969 msgid "Type a file name" msgstr "Файл атын енгізіңіз" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:4993 +#: ../gtk/gtkfilechooserdefault.c:5012 msgid "Create Fo_lder" msgstr "Бу_маны жасау" -#: ../gtk/gtkfilechooserdefault.c:5003 +#: ../gtk/gtkfilechooserdefault.c:5022 msgid "_Location:" msgstr "Ор_наласуы:" -#: ../gtk/gtkfilechooserdefault.c:5207 +#: ../gtk/gtkfilechooserdefault.c:5226 msgid "Save in _folder:" msgstr "Бу_маға сақтау:" -#: ../gtk/gtkfilechooserdefault.c:5209 +#: ../gtk/gtkfilechooserdefault.c:5228 msgid "Create in _folder:" msgstr "Бума_да жасау:" -#: ../gtk/gtkfilechooserdefault.c:6261 +#: ../gtk/gtkfilechooserdefault.c:6297 #, c-format msgid "Could not read the contents of %s" msgstr "%s құрамасын оқу мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:6265 +#: ../gtk/gtkfilechooserdefault.c:6301 msgid "Could not read the contents of the folder" msgstr "Бума құрамасын оқу мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:6358 -#: ../gtk/gtkfilechooserdefault.c:6426 -#: ../gtk/gtkfilechooserdefault.c:6571 +#: ../gtk/gtkfilechooserdefault.c:6394 +#: ../gtk/gtkfilechooserdefault.c:6462 +#: ../gtk/gtkfilechooserdefault.c:6607 msgid "Unknown" msgstr "Белгісіз" -#: ../gtk/gtkfilechooserdefault.c:6373 +#: ../gtk/gtkfilechooserdefault.c:6409 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6375 +#: ../gtk/gtkfilechooserdefault.c:6411 msgid "Yesterday at %H:%M" msgstr "Кеше, уақыты %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7041 +#: ../gtk/gtkfilechooserdefault.c:7077 msgid "Cannot change to folder because it is not local" msgstr "Бумаға ауысу мүмкін емес, өйткені ол жергілікті емес" -#: ../gtk/gtkfilechooserdefault.c:7638 -#: ../gtk/gtkfilechooserdefault.c:7659 +#: ../gtk/gtkfilechooserdefault.c:7674 +#: ../gtk/gtkfilechooserdefault.c:7695 #, c-format msgid "Shortcut %s already exists" msgstr "%s жарлығы бар болып тұр" -#: ../gtk/gtkfilechooserdefault.c:7749 +#: ../gtk/gtkfilechooserdefault.c:7785 #, c-format msgid "Shortcut %s does not exist" msgstr "%s жарлығы жоқ болып тұр" -#: ../gtk/gtkfilechooserdefault.c:8010 +#: ../gtk/gtkfilechooserdefault.c:8046 #: ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "\"%s\" аты бар файл бар болып тұр. Оны алмастыруды қалайсыз ба?" -#: ../gtk/gtkfilechooserdefault.c:8013 +#: ../gtk/gtkfilechooserdefault.c:8049 #: ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "Файл \"%s\" ішінде бар болып тұр. Оны алмастыру нітижесінде құрамасы үстінен жазылады." -#: ../gtk/gtkfilechooserdefault.c:8018 +#: ../gtk/gtkfilechooserdefault.c:8054 #: ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "А_лмастыру" -#: ../gtk/gtkfilechooserdefault.c:8718 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Іздеу үрдісін бастау мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:8719 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "The program was not able to create a connection to the indexer daemon. Please make sure it is running." msgstr "Индекстеу қызметімен байланыс орнату мүмкін емес. Оның қосулы тұрғанын тексеріңіз." -#: ../gtk/gtkfilechooserdefault.c:8733 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Іздеу сұранымын жіберу мүмкін емес" -#: ../gtk/gtkfilechooserdefault.c:8921 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Іздеу:" -#: ../gtk/gtkfilechooserdefault.c:9526 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "%s тіркеу мүмкін емес" @@ -1073,21 +1077,21 @@ msgstr "%s тіркеу мүмкін емес" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. #: ../gtk/gtkfilechooserentry.c:702 -#: ../gtk/gtkfilechooserentry.c:1169 +#: ../gtk/gtkfilechooserentry.c:1172 msgid "Invalid path" msgstr "Жолы қате" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1101 +#: ../gtk/gtkfilechooserentry.c:1104 msgid "No match" msgstr "Сәйкестік жоқ" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1112 +#: ../gtk/gtkfilechooserentry.c:1115 msgid "Sole completion" msgstr "Бір сәйкестік" @@ -1095,13 +1099,13 @@ msgstr "Бір сәйкестік" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1128 +#: ../gtk/gtkfilechooserentry.c:1131 msgid "Complete, but not unique" msgstr "Аяқталған, бірақ жалғыз емес" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1160 +#: ../gtk/gtkfilechooserentry.c:1163 msgid "Completing..." msgstr "Аяқтау..." @@ -1109,8 +1113,8 @@ msgstr "Аяқтау..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1182 -#: ../gtk/gtkfilechooserentry.c:1207 +#: ../gtk/gtkfilechooserentry.c:1185 +#: ../gtk/gtkfilechooserentry.c:1210 msgid "Only local files may be selected" msgstr "Тек жергілікті файлдарды таңдай аласыз" @@ -1118,22 +1122,17 @@ msgstr "Тек жергілікті файлдарды таңдай аласыз #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1191 +#: ../gtk/gtkfilechooserentry.c:1194 msgid "Incomplete hostname; end it with '/'" msgstr "Хост аты толық емес; оны '/' таңбасымен аяқтаңыз" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1202 +#: ../gtk/gtkfilechooserentry.c:1205 msgid "Path does not exist" msgstr "Жол жоқ болып тұр" -#: ../gtk/gtkfilechoosersettings.c:486 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "'%s' бумасын жасау қатесі: %s" - #. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are #. * really pointers to GDrive, GVolume or GMount objects. We need an extra #. * token for the fake "File System" volume. So, we'll return a pointer to @@ -1176,11 +1175,11 @@ msgid "Si_ze:" msgstr "Өл_шемі:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:559 +#: ../gtk/gtkfontsel.c:558 msgid "_Preview:" msgstr "А_лдын-ала қарау:" -#: ../gtk/gtkfontsel.c:1659 +#: ../gtk/gtkfontsel.c:1658 msgid "Font Selection" msgstr "Қаріпті таңдау" @@ -1192,7 +1191,7 @@ msgstr "Қаріпті таңдау" msgid "Error loading icon: %s" msgstr "Таңбашаны жүктеу қатесі: %s" -#: ../gtk/gtkicontheme.c:1354 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1205,12 +1204,12 @@ msgstr "" "Көшірмесін мына жерден ала аласыз:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1535 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "'%s' таңбашасы темада жоқ" -#: ../gtk/gtkicontheme.c:3048 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Таңбашаны жүктеу сәтсіз" @@ -1235,45 +1234,45 @@ msgid "System (%s)" msgstr "Жүйе (%s)" #. Open Link -#: ../gtk/gtklabel.c:6202 +#: ../gtk/gtklabel.c:6249 msgid "_Open Link" msgstr "Сі_лтемені ашу" #. Copy Link Address -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6261 msgid "Copy _Link Address" msgstr "Сілтеме адр_есін көшіру" -#: ../gtk/gtklinkbutton.c:449 +#: ../gtk/gtklinkbutton.c:484 msgid "Copy URL" msgstr "URL көшіру" -#: ../gtk/gtklinkbutton.c:601 +#: ../gtk/gtklinkbutton.c:647 msgid "Invalid URI" msgstr "URI қате" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:526 +#: ../gtk/gtkmain.c:516 msgid "Load additional GTK+ modules" msgstr "Қосымша GTK+ модульдерін жүктеу" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:517 msgid "MODULES" msgstr "МОДУЛЬДЕР" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:529 +#: ../gtk/gtkmain.c:519 msgid "Make all warnings fatal" msgstr "Барлық ескертулерді қатаң деп белгілеу" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:532 +#: ../gtk/gtkmain.c:522 msgid "GTK+ debugging flags to set" msgstr "GTK+ жөндеу жалаушалары орнатылған" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:535 +#: ../gtk/gtkmain.c:525 msgid "GTK+ debugging flags to unset" msgstr "GTK+ жөндеу жалаушалары орнатылмаған" @@ -1282,20 +1281,20 @@ msgstr "GTK+ жөндеу жалаушалары орнатылмаған" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:798 +#: ../gtk/gtkmain.c:788 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:863 +#: ../gtk/gtkmain.c:852 #, c-format msgid "Cannot open display: %s" msgstr "Экранды ашу мүмкін емес: %s" -#: ../gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:911 msgid "GTK+ Options" msgstr "GTK+ опциялары" -#: ../gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:911 msgid "Show GTK+ Options" msgstr "GTK+ опцияларын көрсету" @@ -1379,13 +1378,13 @@ msgstr "Z қоршамы" msgid "Cannot end process with PID %d: %s" msgstr "PID %d бар үрдісті аяқтау мүмкін емес: %s" -#: ../gtk/gtknotebook.c:4690 -#: ../gtk/gtknotebook.c:7241 +#: ../gtk/gtknotebook.c:4914 +#: ../gtk/gtknotebook.c:7571 #, c-format msgid "Page %u" msgstr "Парақ %u" -#: ../gtk/gtkpagesetup.c:596 +#: ../gtk/gtkpagesetup.c:648 #: ../gtk/gtkpapersize.c:838 #: ../gtk/gtkpapersize.c:880 msgid "Not a valid page setup file" @@ -1415,7 +1414,7 @@ msgstr "" " Асты: %s %s" #: ../gtk/gtkpagesetupunixdialog.c:858 -#: ../gtk/gtkprintunixdialog.c:3284 +#: ../gtk/gtkprintunixdialog.c:3292 msgid "Manage Custom Sizes..." msgstr "Таңдауыңызша өлшемдерді басқару..." @@ -1424,7 +1423,7 @@ msgid "_Format for:" msgstr "Ү_шін пішімдеу:" #: ../gtk/gtkpagesetupunixdialog.c:931 -#: ../gtk/gtkprintunixdialog.c:3456 +#: ../gtk/gtkprintunixdialog.c:3464 msgid "_Paper size:" msgstr "Қағаз өл_шемі:" @@ -1433,19 +1432,19 @@ msgid "_Orientation:" msgstr "Бағдар_ы:" #: ../gtk/gtkpagesetupunixdialog.c:1026 -#: ../gtk/gtkprintunixdialog.c:3518 +#: ../gtk/gtkprintunixdialog.c:3526 msgid "Page Setup" msgstr "Парақ баптаулары" -#: ../gtk/gtkpathbar.c:154 +#: ../gtk/gtkpathbar.c:158 msgid "Up Path" msgstr "Ағашпен жоғары" -#: ../gtk/gtkpathbar.c:156 +#: ../gtk/gtkpathbar.c:160 msgid "Down Path" msgstr "Ағашпен төмен" -#: ../gtk/gtkpathbar.c:1497 +#: ../gtk/gtkpathbar.c:1523 msgid "File System Root" msgstr "Файлдық жүйенің түбірі" @@ -1453,15 +1452,15 @@ msgstr "Файлдық жүйенің түбірі" msgid "Authentication" msgstr "Аутентификация" -#: ../gtk/gtkprinteroptionwidget.c:694 +#: ../gtk/gtkprinteroptionwidget.c:686 msgid "Not available" msgstr "Қол жетерлік емес" -#: ../gtk/gtkprinteroptionwidget.c:794 +#: ../gtk/gtkprinteroptionwidget.c:786 msgid "Select a folder" msgstr "Буманы тандаңыз" -#: ../gtk/gtkprinteroptionwidget.c:813 +#: ../gtk/gtkprinteroptionwidget.c:805 msgid "_Save in folder:" msgstr "Бу_мада сақтау:" @@ -1616,41 +1615,41 @@ msgstr "Принтер ақпаратын алу сәтсіз" msgid "Getting printer information..." msgstr "Принтер ақпаратын алу..." -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2140 msgid "Printer" msgstr "Принтер" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2150 msgid "Location" msgstr "Орналасуы" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2161 msgid "Status" msgstr "Күйі" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2187 msgid "Range" msgstr "Диапазон" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2191 msgid "_All Pages" msgstr "Барл_ық парақтар" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "C_urrent Page" msgstr "Ағ_ымдағы парақ" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2208 msgid "Se_lection" msgstr "Таң_далғанды" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2217 msgid "Pag_es:" msgstr "Парақ_тар:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1658,28 +1657,28 @@ msgstr "" "Бір не бірнеше аралықты көрсетіңіз,\n" " мыс. 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2228 msgid "Pages" msgstr "Парақтар" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2241 msgid "Copies" msgstr "Көшірмелер" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2246 msgid "Copie_s:" msgstr "Кө_шірмелер саны:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2264 msgid "C_ollate" msgstr "Ж_инау" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2272 msgid "_Reverse" msgstr "К_ері" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2292 msgid "General" msgstr "Жалпы" @@ -1689,169 +1688,169 @@ msgstr "Жалпы" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3017 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, top to bottom" msgstr "Солдан оңға, үстінен астыға" -#: ../gtk/gtkprintunixdialog.c:3017 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, bottom to top" msgstr "Солдан оңға, астынан үстіге" -#: ../gtk/gtkprintunixdialog.c:3018 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, top to bottom" msgstr "Оңнан солға, үстінен астыға" -#: ../gtk/gtkprintunixdialog.c:3018 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, bottom to top" msgstr "Оңнан солға, астынан үстіге" -#: ../gtk/gtkprintunixdialog.c:3019 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, left to right" msgstr "Үстінен астыға, солдан оңға" -#: ../gtk/gtkprintunixdialog.c:3019 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, right to left" msgstr "Үстінен астыға, оңнан солға" -#: ../gtk/gtkprintunixdialog.c:3020 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, left to right" msgstr "Астынан үстіге, солдан оңға" -#: ../gtk/gtkprintunixdialog.c:3020 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, right to left" msgstr "Астынан үстіге, оңнан солға" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../gtk/gtkprintunixdialog.c:3037 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3543 +#: ../gtk/gtkprintunixdialog.c:3032 +#: ../gtk/gtkprintunixdialog.c:3045 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 msgid "Page Ordering" msgstr "Парақтар реті" -#: ../gtk/gtkprintunixdialog.c:3053 +#: ../gtk/gtkprintunixdialog.c:3061 msgid "Left to right" msgstr "Солдан оңға" -#: ../gtk/gtkprintunixdialog.c:3054 +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Right to left" msgstr "Оңнан солға" -#: ../gtk/gtkprintunixdialog.c:3066 +#: ../gtk/gtkprintunixdialog.c:3074 msgid "Top to bottom" msgstr "Үстінен астыға" -#: ../gtk/gtkprintunixdialog.c:3067 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Bottom to top" msgstr "Астынан үстіге" -#: ../gtk/gtkprintunixdialog.c:3307 +#: ../gtk/gtkprintunixdialog.c:3315 msgid "Layout" msgstr "Жайма" -#: ../gtk/gtkprintunixdialog.c:3311 +#: ../gtk/gtkprintunixdialog.c:3319 msgid "T_wo-sided:" msgstr "Е_кі жақты:" -#: ../gtk/gtkprintunixdialog.c:3326 +#: ../gtk/gtkprintunixdialog.c:3334 msgid "Pages per _side:" msgstr "Бір жақ_тағы парақтар:" -#: ../gtk/gtkprintunixdialog.c:3343 +#: ../gtk/gtkprintunixdialog.c:3351 msgid "Page or_dering:" msgstr "Парақт_ар реті:" -#: ../gtk/gtkprintunixdialog.c:3359 +#: ../gtk/gtkprintunixdialog.c:3367 msgid "_Only print:" msgstr "Т_ек шығару:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3374 +#: ../gtk/gtkprintunixdialog.c:3382 msgid "All sheets" msgstr "Барлық парақтар" -#: ../gtk/gtkprintunixdialog.c:3375 +#: ../gtk/gtkprintunixdialog.c:3383 msgid "Even sheets" msgstr "Жұп парақтар" -#: ../gtk/gtkprintunixdialog.c:3376 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Odd sheets" msgstr "Тақ парақтар" -#: ../gtk/gtkprintunixdialog.c:3379 +#: ../gtk/gtkprintunixdialog.c:3387 msgid "Sc_ale:" msgstr "Мас_штаб:" -#: ../gtk/gtkprintunixdialog.c:3406 +#: ../gtk/gtkprintunixdialog.c:3414 msgid "Paper" msgstr "Қағаз" -#: ../gtk/gtkprintunixdialog.c:3410 +#: ../gtk/gtkprintunixdialog.c:3418 msgid "Paper _type:" msgstr "Қаға_з түрі:" -#: ../gtk/gtkprintunixdialog.c:3425 +#: ../gtk/gtkprintunixdialog.c:3433 msgid "Paper _source:" msgstr "Қ_ағаз көзі:" -#: ../gtk/gtkprintunixdialog.c:3440 +#: ../gtk/gtkprintunixdialog.c:3448 msgid "Output t_ray:" msgstr "Шығ_ыс сөресі:" -#: ../gtk/gtkprintunixdialog.c:3480 +#: ../gtk/gtkprintunixdialog.c:3488 msgid "Or_ientation:" msgstr "_Бағдары:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3495 +#: ../gtk/gtkprintunixdialog.c:3503 msgid "Portrait" msgstr "Тік" -#: ../gtk/gtkprintunixdialog.c:3496 +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Landscape" msgstr "Жатық" -#: ../gtk/gtkprintunixdialog.c:3497 +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Reverse portrait" msgstr "Теріс тік" -#: ../gtk/gtkprintunixdialog.c:3498 +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse landscape" msgstr "Теріс жатық" -#: ../gtk/gtkprintunixdialog.c:3543 +#: ../gtk/gtkprintunixdialog.c:3551 msgid "Job Details" msgstr "Тапсырма ақпараты" -#: ../gtk/gtkprintunixdialog.c:3549 +#: ../gtk/gtkprintunixdialog.c:3557 msgid "Pri_ority:" msgstr "Пр_иоритет:" -#: ../gtk/gtkprintunixdialog.c:3564 +#: ../gtk/gtkprintunixdialog.c:3572 msgid "_Billing info:" msgstr "_Орналасуы:" -#: ../gtk/gtkprintunixdialog.c:3582 +#: ../gtk/gtkprintunixdialog.c:3590 msgid "Print Document" msgstr "Құжатты баспаға шығару" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3591 +#: ../gtk/gtkprintunixdialog.c:3599 msgid "_Now" msgstr "Қ_азір" -#: ../gtk/gtkprintunixdialog.c:3602 +#: ../gtk/gtkprintunixdialog.c:3610 msgid "A_t:" msgstr "Қа_шан:" @@ -1859,7 +1858,7 @@ msgstr "Қа_шан:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3608 +#: ../gtk/gtkprintunixdialog.c:3616 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1867,125 +1866,120 @@ msgstr "" "Басып шығару уақытын көрсетіңіз,\n" " мысалы, 15:30, 14:15:20, 11:46" -#: ../gtk/gtkprintunixdialog.c:3618 +#: ../gtk/gtkprintunixdialog.c:3626 msgid "Time of print" msgstr "Басып шығару уақыты" -#: ../gtk/gtkprintunixdialog.c:3634 +#: ../gtk/gtkprintunixdialog.c:3642 msgid "On _hold" msgstr "Кү_ту" -#: ../gtk/gtkprintunixdialog.c:3635 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "Hold the job until it is explicitly released" msgstr "Қосымша команда берілгенге дейін тапсырманы күттіру" -#: ../gtk/gtkprintunixdialog.c:3655 +#: ../gtk/gtkprintunixdialog.c:3663 msgid "Add Cover Page" msgstr "Титулдық парақты қосу" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3664 +#: ../gtk/gtkprintunixdialog.c:3672 msgid "Be_fore:" msgstr "Де_йін:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3682 +#: ../gtk/gtkprintunixdialog.c:3690 msgid "_After:" msgstr "К_ейін:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3700 +#: ../gtk/gtkprintunixdialog.c:3708 msgid "Job" msgstr "Тапсырма" -#: ../gtk/gtkprintunixdialog.c:3766 +#: ../gtk/gtkprintunixdialog.c:3774 msgid "Advanced" msgstr "Кеңейтілген" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3804 +#: ../gtk/gtkprintunixdialog.c:3812 msgid "Image Quality" msgstr "Сурет сапасы" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3808 +#: ../gtk/gtkprintunixdialog.c:3816 msgid "Color" msgstr "Түс" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3813 +#: ../gtk/gtkprintunixdialog.c:3821 msgid "Finishing" msgstr "Аяқтау" -#: ../gtk/gtkprintunixdialog.c:3823 +#: ../gtk/gtkprintunixdialog.c:3831 msgid "Some of the settings in the dialog conflict" msgstr "Сұхбаттағы кейбір баптаулар өзара ерегіседі" -#: ../gtk/gtkprintunixdialog.c:3846 +#: ../gtk/gtkprintunixdialog.c:3854 msgid "Print" msgstr "Баспаға шығару" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Қосылатын файлды табу мүмкін емес: \"%s\"" - -#: ../gtk/gtkrc.c:3470 -#: ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:2366 +#: ../gtk/gtkrc.c:2369 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "pixmap_path ішінен суретті табу мүмкін емес: \"%s\"" #: ../gtk/gtkrecentaction.c:165 #: ../gtk/gtkrecentaction.c:173 -#: ../gtk/gtkrecentchoosermenu.c:615 -#: ../gtk/gtkrecentchoosermenu.c:623 +#: ../gtk/gtkrecentchoosermenu.c:608 +#: ../gtk/gtkrecentchoosermenu.c:616 #, c-format msgid "This function is not implemented for widgets of class '%s'" msgstr "'%s' класы виджеттері үшін функция іске асырылмаған" -#: ../gtk/gtkrecentchooserdefault.c:482 +#: ../gtk/gtkrecentchooserdefault.c:483 msgid "Select which type of documents are shown" msgstr "Көрсетілетін құжаттар түрлерін таңдаңыз" -#: ../gtk/gtkrecentchooserdefault.c:1138 -#: ../gtk/gtkrecentchooserdefault.c:1175 +#: ../gtk/gtkrecentchooserdefault.c:1133 +#: ../gtk/gtkrecentchooserdefault.c:1170 #, c-format msgid "No item for URI '%s' found" msgstr "URI '%s' үшін нәрсе табылмады" -#: ../gtk/gtkrecentchooserdefault.c:1302 +#: ../gtk/gtkrecentchooserdefault.c:1297 msgid "Untitled filter" msgstr "Атаусыз фильтр" -#: ../gtk/gtkrecentchooserdefault.c:1655 +#: ../gtk/gtkrecentchooserdefault.c:1650 msgid "Could not remove item" msgstr "Элементті өшіру мүмкін емес" -#: ../gtk/gtkrecentchooserdefault.c:1699 +#: ../gtk/gtkrecentchooserdefault.c:1694 msgid "Could not clear list" msgstr "Тізімді тазарту мүмкін емес" -#: ../gtk/gtkrecentchooserdefault.c:1783 +#: ../gtk/gtkrecentchooserdefault.c:1778 msgid "Copy _Location" msgstr "_Сілтеме адресін көшіру" -#: ../gtk/gtkrecentchooserdefault.c:1796 +#: ../gtk/gtkrecentchooserdefault.c:1791 msgid "_Remove From List" msgstr "Ті_зімнен өшіру" -#: ../gtk/gtkrecentchooserdefault.c:1805 +#: ../gtk/gtkrecentchooserdefault.c:1800 msgid "_Clear List" msgstr "Тізі_мді тазарту" -#: ../gtk/gtkrecentchooserdefault.c:1819 +#: ../gtk/gtkrecentchooserdefault.c:1814 msgid "Show _Private Resources" msgstr "Ж_еке ресурстарды көрсету" @@ -1999,22 +1993,22 @@ msgstr "Ж_еке ресурстарды көрсету" #. * user appended or prepended custom menu items to the #. * recent chooser menu widget. #. -#: ../gtk/gtkrecentchoosermenu.c:369 +#: ../gtk/gtkrecentchoosermenu.c:362 msgid "No items found" msgstr "Ешнәрсе табылмады" -#: ../gtk/gtkrecentchoosermenu.c:535 -#: ../gtk/gtkrecentchoosermenu.c:591 +#: ../gtk/gtkrecentchoosermenu.c:528 +#: ../gtk/gtkrecentchoosermenu.c:584 #, c-format msgid "No recently used resource found with URI `%s'" msgstr "URI `%s' бар соңғы қолданылған ресурс жоқ" -#: ../gtk/gtkrecentchoosermenu.c:802 +#: ../gtk/gtkrecentchoosermenu.c:795 #, c-format msgid "Open '%s'" msgstr "'%s' ашу" -#: ../gtk/gtkrecentchoosermenu.c:832 +#: ../gtk/gtkrecentchoosermenu.c:825 msgid "Unknown item" msgstr "Белгісіз элемент" @@ -2023,7 +2017,7 @@ msgstr "Белгісіз элемент" #. * the %s is the name of the item. Please keep the _ in front #. * of the number to give these menu items a mnemonic. #. -#: ../gtk/gtkrecentchoosermenu.c:843 +#: ../gtk/gtkrecentchoosermenu.c:836 #, c-format msgctxt "recent menu label" msgid "_%d. %s" @@ -2032,29 +2026,34 @@ msgstr "_%d. %s" #. This is the format that is used for items in a recent files menu. #. * The %d is the number of the item, the %s is the name of the item. #. -#: ../gtk/gtkrecentchoosermenu.c:848 +#: ../gtk/gtkrecentchoosermenu.c:841 #, c-format msgctxt "recent menu label" msgid "%d. %s" msgstr "%d. %s" -#: ../gtk/gtkrecentmanager.c:980 -#: ../gtk/gtkrecentmanager.c:993 -#: ../gtk/gtkrecentmanager.c:1131 -#: ../gtk/gtkrecentmanager.c:1141 -#: ../gtk/gtkrecentmanager.c:1194 -#: ../gtk/gtkrecentmanager.c:1203 -#: ../gtk/gtkrecentmanager.c:1218 +#: ../gtk/gtkrecentmanager.c:1000 +#: ../gtk/gtkrecentmanager.c:1013 +#: ../gtk/gtkrecentmanager.c:1150 +#: ../gtk/gtkrecentmanager.c:1160 +#: ../gtk/gtkrecentmanager.c:1213 +#: ../gtk/gtkrecentmanager.c:1222 +#: ../gtk/gtkrecentmanager.c:1237 #, c-format msgid "Unable to find an item with URI '%s'" msgstr "URI '%s' бар нәрсе табылмады" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkrecentmanager.c:2437 +#, c-format +msgid "No registered application with name '%s' for item with URI '%s' found" +msgstr "URI '%s' үшін аты '%s' болатын ешбір тіркелген қолданба табылмады" + +#: ../gtk/gtkspinner.c:326 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Айналғыш" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:327 msgid "Provides visual indication of progress" msgstr "Үрдістің графикалық көрсеткішін ұсынады" @@ -2562,6 +2561,37 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "Кі_шірейту" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:296 +#: ../gtk/gtkswitch.c:339 +#: ../gtk/gtkswitch.c:531 +msgctxt "switch" +msgid "ON" +msgstr "ON" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:304 +#: ../gtk/gtkswitch.c:340 +#: ../gtk/gtkswitch.c:552 +msgctxt "switch" +msgid "OFF" +msgstr "OFF" + +#: ../gtk/gtkswitch.c:943 +#| msgid "inch" +msgctxt "light switch widget" +msgid "Switch" +msgstr "Ауыстыру" + +#: ../gtk/gtkswitch.c:944 +msgid "Switches between on and off states" +msgstr "On және off қалып-күйлерін ауыстырғышы" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2572,111 +2602,111 @@ msgstr "%s десериализациялап көру кезінде белгі msgid "No deserialize function found for format %s" msgstr "%s пішімі үшін десериализация функциясы табылмады" -#: ../gtk/gtktextbufferserialize.c:795 -#: ../gtk/gtktextbufferserialize.c:821 +#: ../gtk/gtktextbufferserialize.c:799 +#: ../gtk/gtktextbufferserialize.c:825 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "<%s> элементінде \"id\" мен \"name\" екеуі де бар" -#: ../gtk/gtktextbufferserialize.c:805 -#: ../gtk/gtktextbufferserialize.c:831 +#: ../gtk/gtktextbufferserialize.c:809 +#: ../gtk/gtktextbufferserialize.c:835 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "<%s> элементінен \"%s\" атрибуты екі рет табылды" -#: ../gtk/gtktextbufferserialize.c:845 +#: ../gtk/gtktextbufferserialize.c:851 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "<%s> элементінің \"%s\" ID-і қате" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:861 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s> элементінің не \"name\", не \"id\" атрибуты жоқ" -#: ../gtk/gtktextbufferserialize.c:942 +#: ../gtk/gtktextbufferserialize.c:948 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "<%s> элементінде \"%s\" атрибуты екі рет қайталанды" -#: ../gtk/gtktextbufferserialize.c:960 -#: ../gtk/gtktextbufferserialize.c:985 +#: ../gtk/gtktextbufferserialize.c:966 +#: ../gtk/gtktextbufferserialize.c:991 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Бұл контекстте \"%s\" атрибуты <%s> элементінің ішінде қате" -#: ../gtk/gtktextbufferserialize.c:1024 +#: ../gtk/gtktextbufferserialize.c:1030 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "\"%s\" тегі анықталмаған." -#: ../gtk/gtktextbufferserialize.c:1036 +#: ../gtk/gtktextbufferserialize.c:1042 msgid "Anonymous tag found and tags can not be created." msgstr "Анонимды тег табылды, тегтерді жасау мүмкін емес." -#: ../gtk/gtktextbufferserialize.c:1047 +#: ../gtk/gtktextbufferserialize.c:1053 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "\"%s\" тегі буферде жоқ, тегтерді жасау мүмкін емес." -#: ../gtk/gtktextbufferserialize.c:1146 -#: ../gtk/gtktextbufferserialize.c:1221 -#: ../gtk/gtktextbufferserialize.c:1324 -#: ../gtk/gtktextbufferserialize.c:1398 +#: ../gtk/gtktextbufferserialize.c:1152 +#: ../gtk/gtktextbufferserialize.c:1227 +#: ../gtk/gtktextbufferserialize.c:1332 +#: ../gtk/gtktextbufferserialize.c:1406 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "<%s> элементін <%s> алдында орналастыру рұқсат етілмеген" -#: ../gtk/gtktextbufferserialize.c:1177 +#: ../gtk/gtktextbufferserialize.c:1183 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" - атрибуттың дұрыс түрі емес" -#: ../gtk/gtktextbufferserialize.c:1185 +#: ../gtk/gtktextbufferserialize.c:1191 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" - атрибуттың дұрыс аты емес" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1201 #, c-format msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "\"%s\" қазір \"%s\" түріндегі мәнге, \"%s\" атрибуты үшін, түрлендіру мүмкін емес" -#: ../gtk/gtktextbufferserialize.c:1204 +#: ../gtk/gtktextbufferserialize.c:1210 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" - \"%s\" атрибуты үшін дұрыс мән емес" -#: ../gtk/gtktextbufferserialize.c:1289 +#: ../gtk/gtktextbufferserialize.c:1295 #, c-format msgid "Tag \"%s\" already defined" msgstr "\"%s\" тегі анықталып тұр" -#: ../gtk/gtktextbufferserialize.c:1300 +#: ../gtk/gtktextbufferserialize.c:1308 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "\"%s\" тегтің \"%s\" приоритеті қате" -#: ../gtk/gtktextbufferserialize.c:1353 +#: ../gtk/gtktextbufferserialize.c:1361 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Мәтінде ен қашық нәрсе болуы тиіс, <%s> емес" -#: ../gtk/gtktextbufferserialize.c:1362 -#: ../gtk/gtktextbufferserialize.c:1378 +#: ../gtk/gtktextbufferserialize.c:1370 +#: ../gtk/gtktextbufferserialize.c:1386 #, c-format msgid "A <%s> element has already been specified" msgstr "<%s> элементі көрсетілген болып тұр" -#: ../gtk/gtktextbufferserialize.c:1384 +#: ../gtk/gtktextbufferserialize.c:1392 msgid "A element can't occur before a element" msgstr " элементі элементінің алдында кездесуі мүмкін емес" -#: ../gtk/gtktextbufferserialize.c:1784 +#: ../gtk/gtktextbufferserialize.c:1792 msgid "Serialized data is malformed" msgstr "Сериализацияланған мәліметтер қате жасалған." -#: ../gtk/gtktextbufferserialize.c:1862 +#: ../gtk/gtktextbufferserialize.c:1870 msgid "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "Сериализацияланған мәліметтер қате жасалған. Бірінші секциясы GTKTEXTBUFFERCONTENTS-0001 емес болып тұр" @@ -3635,81 +3665,82 @@ msgstr "Бума индексін жазу сәтсіз\n" msgid "Failed to rewrite header\n" msgstr "Тақырыптаманы қайта жазу сәтсіз\n" -#: ../gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Файлды ашу қатемен аяқталды %s : %s\n" -#: ../gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 +#: ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Кэш файлын жазу сәтсіз: %s\n" -#: ../gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "Жасалған кэш қате.\n" -#: ../gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "%s үшін жаңа %s атын орнату мүмкін емес: %s, кейін %s өшіріледі.\n" -#: ../gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "%s атын жаңа %s атына ауыстыру мүмкін емес: %s\n" -#: ../gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "%s атын қайта %s етіп орнату мүмкін емес: %s.\n" -#: ../gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Кэш файлы сәтті жасалды.\n" -#: ../gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Бар кэшті үстінен жазу, ескірмесе де" -#: ../gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "index.theme файлының бар-жоғын тексермеу" -#: ../gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Кэш ішіне сурет файлдарын қоспау" -#: ../gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "C тақырыптама файлын шығару" -#: ../gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Кеңейтілген шығысты сөндіру" -#: ../gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Бар болып тұрған таңбашалар кэшін тексеру" -#: ../gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "Файл табылмады: %s\n" -#: ../gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Дұрыс таңбашалар кэші емес: %s\n" -#: ../gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "Теманың индекс файлы табылмады.\n" -#: ../gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3773,60 +3804,60 @@ msgstr "Вьетнам (VIQR)" msgid "X Input Method" msgstr "X енгізу тәсілі" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 #: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 msgid "Username:" msgstr "Пайдаланушы аты:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:812 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 #: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 msgid "Password:" msgstr "Пароль:" #: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "%s ішінен файлды алу үшін аутентификация керек" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 #: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "'%s' құжатын %s принтерінен басып шығару үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 #, c-format msgid "Authentication is required to print a document on %s" msgstr "%s жерінде құажтты басып шығару үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "'%s' тапсырмасының атрибуттарын алу үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 msgid "Authentication is required to get attributes of a job" msgstr "Тапсырманың атрибуттарын алу үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "'%s' принтерінің атрибуттарын алу үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 msgid "Authentication is required to get attributes of a printer" msgstr "Принтердің атрибуттарын алу үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "%s үшін бастапқы принтерді алу үшін аутентификация керек" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 #, c-format msgid "Authentication is required to get printers from %s" msgstr "%s жерінен принтерлерді алу үшін аутентификация керек" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#, c-format +msgid "Authentication is required to get a file from %s" +msgstr "%s ішінен файлды алу үшін аутентификация керек" + #: ../modules/printbackends/cups/gtkprintbackendcups.c:877 #, c-format msgid "Authentication is required on %s" @@ -3975,7 +4006,7 @@ msgstr "Авто таңдау" #: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3295 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 msgid "Printer Default" msgstr "Принтердің негізгісі" @@ -4008,19 +4039,19 @@ msgstr "Әр түрлі" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Urgent" msgstr "Жедел" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "High" msgstr "Жоғары" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Medium" msgstr "Орташа" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Low" msgstr "Төмен" @@ -4028,66 +4059,66 @@ msgstr "Төмен" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3527 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 msgid "Pages per Sheet" msgstr "Бір параққа беттер" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3564 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 msgid "Job Priority" msgstr "Тапсырма приоритеті" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3575 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 msgid "Billing Info" msgstr "Орналасуы" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "None" msgstr "Жоқ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Classified" msgstr "Классификацияланған" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Confidential" msgstr "Конфиденциалды" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Secret" msgstr "Құпия сөз" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Standard" msgstr "Қалыпты" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Top Secret" msgstr "Қатаң құпия" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Unclassified" msgstr "Классификацияланбаған" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3625 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 msgid "Before" msgstr "Дейін" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3640 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 msgid "After" msgstr "Кейін" @@ -4095,14 +4126,14 @@ msgstr "Кейін" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3660 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 msgid "Print at" msgstr "Уақыты" #. 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/cups/gtkprintbackendcups.c:3671 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3697 msgid "Print at time" msgstr "Баспаны бастау уақыты" @@ -4110,7 +4141,7 @@ msgstr "Баспаны бастау уақыты" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3706 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 #, c-format msgid "Custom %sx%s" msgstr "Ерекше %sx%s" @@ -4121,32 +4152,32 @@ msgstr "Ерекше %sx%s" msgid "output.%s" msgstr "шығыс.%s" -#: ../modules/printbackends/file/gtkprintbackendfile.c:493 +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "Print to File" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:582 +#: ../modules/printbackends/file/gtkprintbackendfile.c:590 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Бір _параққа беттер:" -#: ../modules/printbackends/file/gtkprintbackendfile.c:641 +#: ../modules/printbackends/file/gtkprintbackendfile.c:649 msgid "File" msgstr "Файл" -#: ../modules/printbackends/file/gtkprintbackendfile.c:651 +#: ../modules/printbackends/file/gtkprintbackendfile.c:659 msgid "_Output format" msgstr "Шығыс _пішімі" @@ -4212,6 +4243,18 @@ msgstr "'%s' файлын ашу сәтсіз: %s" msgid "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "'%s' суретін жүктеу сәтсіз: себебі белгісіз, мүмкін сурет файлы зақымдалған" +#~ msgid "Credits" +#~ msgstr "Жасағандар" + +#~ msgid "Written by" +#~ msgstr "Жазған" + +#~ msgid "Error creating folder '%s': %s" +#~ msgstr "'%s' бумасын жасау қатесі: %s" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Қосылатын файлды табу мүмкін емес: \"%s\"" + #~ msgid "\"Deepness\" of the color." #~ msgstr "Түс \"тереңділігі\"." @@ -4256,9 +4299,6 @@ msgstr "'%s' суретін жүктеу сәтсіз: себебі белгіс #~ msgid "_Folder name:" #~ msgstr "Бу_ма аты:" -#~ msgid "C_reate" -#~ msgstr "Жа_сау" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "\"%s\" файл атауында рұқсат етілмеген таңбалары бар" diff --git a/po/ku.po b/po/ku.po index 8b35432fa2..b951639f59 100644 --- a/po/ku.po +++ b/po/ku.po @@ -3,74 +3,65 @@ # Copyright (C) 2005 THE gtk+'S COPYRIGHT HOLDER. # Erdal Ronahi , 2008. # Erdal Ronahi , 2009 +# Erdal Ronahî , 2010. msgid "" msgstr "" "Project-Id-Version: ku\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:41-0400\n" -"PO-Revision-Date: 2009-02-24 01:08+0200\n" -"Last-Translator: Erdal Ronahi \n" -"Language-Team: http;//pckurd.net\n" +"POT-Creation-Date: 2010-12-23 13:45+0100\n" +"PO-Revision-Date: 2010-12-23 14:13+0200\n" +"Last-Translator: Erdal Ronahî \n" +"Language-Team: Kurdish Team http://pckurd.net\n" "Language: None\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural= n != 1\n" -"X-Generator: Virtaal 0.3.0\n" +"X-Generator: Virtaal 0.6.1\n" -#: gdk/gdk.c:103 +#: ../gdk/gdk.c:155 #, fuzzy, c-format msgid "Error parsing option --gdk-debug" msgstr "Çewtiya çapkirinê" -#: gdk/gdk.c:123 +#: ../gdk/gdk.c:175 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "" #. Description of --class=CLASS in --help output -#: gdk/gdk.c:151 +#: ../gdk/gdk.c:203 msgid "Program class as used by the window manager" msgstr "" "Dabeşkirina bernameyê weke ku ji alî gerînendeyê paceyan ve tê bikaranîn" #. Placeholder in --class=CLASS in --help output -#: gdk/gdk.c:152 +#: ../gdk/gdk.c:204 msgid "CLASS" msgstr "Celeb" #. Description of --name=NAME in --help output -#: gdk/gdk.c:154 +#: ../gdk/gdk.c:206 msgid "Program name as used by the window manager" msgstr "Navê bernameyê wekî ku ji alî gerînendeyê paceyan ve tê bikaranîn" #. Placeholder in --name=NAME in --help output -#: gdk/gdk.c:155 +#: ../gdk/gdk.c:207 msgid "NAME" msgstr "NAV" #. Description of --display=DISPLAY in --help output -#: gdk/gdk.c:157 +#: ../gdk/gdk.c:209 msgid "X display to use" msgstr "Dîmendêra X ya ku dê were bikaranîn" #. Placeholder in --display=DISPLAY in --help output -#: gdk/gdk.c:158 +#: ../gdk/gdk.c:210 msgid "DISPLAY" msgstr "DÎMEN" -#. Description of --screen=SCREEN in --help output -#: gdk/gdk.c:160 -msgid "X screen to use" -msgstr "Dîmender a X ya bikaranînê" - -#. Placeholder in --screen=SCREEN in --help output -#: gdk/gdk.c:161 -msgid "SCREEN" -msgstr "Dîmender" - #. Description of --gdk-debug=FLAGS in --help output -#: gdk/gdk.c:164 +#: ../gdk/gdk.c:213 #, fuzzy msgid "GDK debugging flags to set" msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine tayînkirin" @@ -79,319 +70,317 @@ msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine tayînkirin" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: gdk/gdk.c:165 gdk/gdk.c:168 gtk/gtkmain.c:533 gtk/gtkmain.c:536 +#: ../gdk/gdk.c:214 ../gdk/gdk.c:217 ../gtk/gtkmain.c:522 ../gtk/gtkmain.c:525 msgid "FLAGS" msgstr "Al" #. Description of --gdk-no-debug=FLAGS in --help output -#: gdk/gdk.c:167 +#: ../gdk/gdk.c:216 #, fuzzy msgid "GDK debugging flags to unset" msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine rakirin" -#: gdk/keyname-table.h:3940 +#: ../gdk/keyname-table.h:3940 #, fuzzy msgctxt "keyboard label" msgid "BackSpace" msgstr "_Guhestin" -#: gdk/keyname-table.h:3941 +#: ../gdk/keyname-table.h:3941 msgctxt "keyboard label" msgid "Tab" msgstr "" -#: gdk/keyname-table.h:3942 +#: ../gdk/keyname-table.h:3942 msgctxt "keyboard label" msgid "Return" msgstr "" -#: gdk/keyname-table.h:3943 +#: ../gdk/keyname-table.h:3943 msgctxt "keyboard label" msgid "Pause" msgstr "Rawestandin" -#: gdk/keyname-table.h:3944 +#: ../gdk/keyname-table.h:3944 msgctxt "keyboard label" msgid "Scroll_Lock" msgstr "" -#: gdk/keyname-table.h:3945 +#: ../gdk/keyname-table.h:3945 #, fuzzy msgctxt "keyboard label" msgid "Sys_Req" msgstr "Pergala Pelan" -#: gdk/keyname-table.h:3946 +#: ../gdk/keyname-table.h:3946 #, fuzzy msgctxt "keyboard label" msgid "Escape" msgstr "Serpahnayê" -#: gdk/keyname-table.h:3947 +#: ../gdk/keyname-table.h:3947 #, fuzzy msgctxt "keyboard label" msgid "Multi_key" msgstr "Multipress" -#: gdk/keyname-table.h:3948 +#: ../gdk/keyname-table.h:3948 msgctxt "keyboard label" msgid "Home" msgstr "Mal" -#: gdk/keyname-table.h:3949 +#: ../gdk/keyname-table.h:3949 msgctxt "keyboard label" msgid "Left" msgstr "Çep" -#: gdk/keyname-table.h:3950 +#: ../gdk/keyname-table.h:3950 msgctxt "keyboard label" msgid "Up" msgstr "Berjor" -#: gdk/keyname-table.h:3951 +#: ../gdk/keyname-table.h:3951 msgctxt "keyboard label" msgid "Right" msgstr "Rast" -#: gdk/keyname-table.h:3952 +#: ../gdk/keyname-table.h:3952 msgctxt "keyboard label" msgid "Down" msgstr "Berjêr" -#: gdk/keyname-table.h:3953 +#: ../gdk/keyname-table.h:3953 #, fuzzy msgctxt "keyboard label" msgid "Page_Up" msgstr "Mîhengên Rûpelê" -#: gdk/keyname-table.h:3954 +#: ../gdk/keyname-table.h:3954 msgctxt "keyboard label" msgid "Page_Down" msgstr "" -#: gdk/keyname-table.h:3955 +#: ../gdk/keyname-table.h:3955 msgctxt "keyboard label" msgid "End" msgstr "Dawî" -#: gdk/keyname-table.h:3956 +#: ../gdk/keyname-table.h:3956 msgctxt "keyboard label" msgid "Begin" msgstr "Destpêk" -#: gdk/keyname-table.h:3957 +#: ../gdk/keyname-table.h:3957 #, fuzzy msgctxt "keyboard label" msgid "Print" msgstr "Çap" -#: gdk/keyname-table.h:3958 +#: ../gdk/keyname-table.h:3958 msgctxt "keyboard label" msgid "Insert" msgstr "" -#: gdk/keyname-table.h:3959 +#: ../gdk/keyname-table.h:3959 msgctxt "keyboard label" msgid "Num_Lock" msgstr "" -#: gdk/keyname-table.h:3960 +#: ../gdk/keyname-table.h:3960 #, fuzzy msgctxt "keyboard label" msgid "KP_Space" msgstr "_Guhestin" -#: gdk/keyname-table.h:3961 +#: ../gdk/keyname-table.h:3961 msgctxt "keyboard label" msgid "KP_Tab" msgstr "" -#: gdk/keyname-table.h:3962 +#: ../gdk/keyname-table.h:3962 #, fuzzy msgctxt "keyboard label" msgid "KP_Enter" msgstr "Çaper" -#: gdk/keyname-table.h:3963 +#: ../gdk/keyname-table.h:3963 #, fuzzy msgctxt "keyboard label" msgid "KP_Home" msgstr "_Mal" -#: gdk/keyname-table.h:3964 +#: ../gdk/keyname-table.h:3964 #, fuzzy msgctxt "keyboard label" msgid "KP_Left" msgstr "_Çep:" -#: gdk/keyname-table.h:3965 +#: ../gdk/keyname-table.h:3965 msgctxt "keyboard label" msgid "KP_Up" msgstr "" -#: gdk/keyname-table.h:3966 +#: ../gdk/keyname-table.h:3966 #, fuzzy msgctxt "keyboard label" msgid "KP_Right" msgstr "_Rast:" -#: gdk/keyname-table.h:3967 +#: ../gdk/keyname-table.h:3967 msgctxt "keyboard label" msgid "KP_Down" msgstr "" -#: gdk/keyname-table.h:3968 +#: ../gdk/keyname-table.h:3968 msgctxt "keyboard label" msgid "KP_Page_Up" msgstr "" -#: gdk/keyname-table.h:3969 +#: ../gdk/keyname-table.h:3969 msgctxt "keyboard label" msgid "KP_Prior" msgstr "" -#: gdk/keyname-table.h:3970 +#: ../gdk/keyname-table.h:3970 #, fuzzy msgctxt "keyboard label" msgid "KP_Page_Down" msgstr "KP_Page_Down" -#: gdk/keyname-table.h:3971 +#: ../gdk/keyname-table.h:3971 msgctxt "keyboard label" msgid "KP_Next" msgstr "" -#: gdk/keyname-table.h:3972 +#: ../gdk/keyname-table.h:3972 msgctxt "keyboard label" msgid "KP_End" msgstr "" -#: gdk/keyname-table.h:3973 +#: ../gdk/keyname-table.h:3973 msgctxt "keyboard label" msgid "KP_Begin" msgstr "" -#: gdk/keyname-table.h:3974 +#: ../gdk/keyname-table.h:3974 msgctxt "keyboard label" msgid "KP_Insert" msgstr "" -#: gdk/keyname-table.h:3975 +#: ../gdk/keyname-table.h:3975 #, fuzzy msgctxt "keyboard label" msgid "KP_Delete" msgstr "_Rake" -#: gdk/keyname-table.h:3976 +#: ../gdk/keyname-table.h:3976 msgctxt "keyboard label" msgid "Delete" msgstr "Jêbirin" #. Description of --sync in --help output -#: gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:54 msgid "Don't batch GDI requests" msgstr "Koma GDI ne pêwiste" #. Description of --no-wintab in --help output -#: gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:56 msgid "Don't use the Wintab API for tablet support" msgstr "Wintab API ji bo li hevhatinê nede bikaranîn" #. Description of --ignore-wintab in --help output -#: gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:58 msgid "Same as --no-wintab" msgstr "wekî --no-wintab" #. Description of --use-wintab in --help output -#: gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:60 msgid "Do use the Wintab API [default]" msgstr "Wintab APIyê bikar bîne [pêşravekî]" #. Description of --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:62 msgid "Size of the palette in 8 bit mode" msgstr "Mezinahiya paletê ya di moda 8 bîtan de" #. Placeholder in --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "COLORS" msgstr "RENG" -#: gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "%s tê dest pê kirin" -#: gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "%s tê vekirin" -#: gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "" msgstr[1] "" -#. Description of --sync in --help output -#: gdk/x11/gdkmain-x11.c:96 -msgid "Make X calls synchronous" -msgstr "Lêdanên X hevdem bike" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:105 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" -#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2235 +#: ../gtk/gtkaboutdialog.c:347 msgid "License" msgstr "Peyman" -#: gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:348 msgid "The license of the program" msgstr "Lîsansa bernameyê" #. Add the credits button -#: gtk/gtkaboutdialog.c:621 +#: ../gtk/gtkaboutdialog.c:740 msgid "C_redits" msgstr "_Spas" #. Add the license button -#: gtk/gtkaboutdialog.c:635 +#: ../gtk/gtkaboutdialog.c:753 msgid "_License" msgstr "_Lîsans" -#: gtk/gtkaboutdialog.c:839 +#: ../gtk/gtkaboutdialog.c:958 #, fuzzy msgid "Could not show link" msgstr "Lîste nehate paqijkirin" -#: gtk/gtkaboutdialog.c:932 +#: ../gtk/gtkaboutdialog.c:995 +#, fuzzy +msgid "Homepage" +msgstr "Mal" + +#: ../gtk/gtkaboutdialog.c:1049 #, c-format msgid "About %s" msgstr "Der barê %s de" -#: gtk/gtkaboutdialog.c:2153 -msgid "Credits" -msgstr "Spas" +#: ../gtk/gtkaboutdialog.c:2371 +msgid "Created by" +msgstr "Afirandêr" -#: gtk/gtkaboutdialog.c:2185 -msgid "Written by" -msgstr "Nivîskar" - -#: gtk/gtkaboutdialog.c:2188 +#: ../gtk/gtkaboutdialog.c:2374 msgid "Documented by" msgstr "Belgekirin" -#: gtk/gtkaboutdialog.c:2200 +#: ../gtk/gtkaboutdialog.c:2384 msgid "Translated by" msgstr "Wergêr" -#: gtk/gtkaboutdialog.c:2204 +#: ../gtk/gtkaboutdialog.c:2389 msgid "Artwork by" msgstr "Huner" @@ -400,7 +389,7 @@ msgstr "Huner" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:160 msgctxt "keyboard label" msgid "Shift" msgstr "" @@ -410,7 +399,7 @@ msgstr "" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:166 msgctxt "keyboard label" msgid "Ctrl" msgstr "" @@ -420,7 +409,7 @@ msgstr "" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:172 msgctxt "keyboard label" msgid "Alt" msgstr "" @@ -430,7 +419,7 @@ msgstr "" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:770 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -440,7 +429,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:783 msgctxt "keyboard label" msgid "Hyper" msgstr "Hîper" @@ -450,37 +439,37 @@ msgstr "Hîper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:797 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:813 msgctxt "keyboard label" msgid "Space" msgstr "Navber" -#: gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:816 msgctxt "keyboard label" msgid "Backslash" msgstr "" -#: gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkbuilderparser.c:343 #, fuzzy, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Fonksiyona nivîsandina nederbasdar: `%s'" -#: gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:407 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "" -#: gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:859 #, c-format msgid "Invalid root element: '%s'" msgstr "Navê pelê nederbasdar: `%s'" -#: gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:898 #, c-format msgid "Unhandled tag: '%s'" msgstr "Etîket nefehmkirî: '%s'" @@ -495,7 +484,7 @@ msgstr "Etîket nefehmkirî: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: gtk/gtkcalendar.c:883 +#: ../gtk/gtkcalendar.c:882 msgid "calendar:MY" msgstr "calendar:MY" @@ -503,7 +492,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:921 +#: ../gtk/gtkcalendar.c:920 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -512,7 +501,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: gtk/gtkcalendar.c:2006 +#: ../gtk/gtkcalendar.c:1900 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -527,7 +516,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2037 gtk/gtkcalendar.c:2719 +#: ../gtk/gtkcalendar.c:1931 ../gtk/gtkcalendar.c:2620 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -543,7 +532,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2069 gtk/gtkcalendar.c:2579 +#: ../gtk/gtkcalendar.c:1963 ../gtk/gtkcalendar.c:2488 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -559,7 +548,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: gtk/gtkcalendar.c:2361 +#: ../gtk/gtkcalendar.c:2253 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -567,45 +556,43 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: gtk/gtkcellrendereraccel.c:272 -#, fuzzy +#: ../gtk/gtkcellrendereraccel.c:272 msgctxt "Accelerator" msgid "Disabled" -msgstr "Ne çalak" +msgstr "Neçalak" #. This label is displayed in a treeview cell displaying #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: gtk/gtkcellrendereraccel.c:282 -#, fuzzy +#: ../gtk/gtkcellrendereraccel.c:282 msgctxt "Accelerator" msgid "Invalid" -msgstr "URI nederbasdar e" +msgstr "Nederbasdar" #. This label is displayed in a treeview cell displaying #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: gtk/gtkcellrendereraccel.c:418 gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 msgid "New accelerator..." msgstr "Lezkera nû..." -#: gtk/gtkcellrendererprogress.c:362 gtk/gtkcellrendererprogress.c:452 +#: ../gtk/gtkcellrendererprogress.c:362 ../gtk/gtkcellrendererprogress.c:452 #, c-format msgctxt "progress bar label" msgid "%d %%" msgstr "%% %d" -#: gtk/gtkcolorbutton.c:176 gtk/gtkcolorbutton.c:445 +#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "Rengeke hilbijêre" -#: gtk/gtkcolorbutton.c:336 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "Daneya rengan ne tekûze\n" -#: gtk/gtkcolorsel.c:384 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -613,7 +600,7 @@ msgstr "" "Ji giloverîka ku derve ye rengekî hilbijêrin. Tu dikarî ji sêgoşeya ku li " "hundir e tarîbûn û vekirîbûna reng hilbijêre." -#: gtk/gtkcolorsel.c:408 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -621,68 +608,68 @@ msgstr "" "Piştî ku te dilopdank tikand, tu dikarî rengekî ku li ser dîmendera te ye " "bitikîne û reng hilbijêre." -#: gtk/gtkcolorsel.c:417 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Reng:" -#: gtk/gtkcolorsel.c:418 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Cihê li ser dolaba rengan." -#: gtk/gtkcolorsel.c:420 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Têrkirin:" -#: gtk/gtkcolorsel.c:421 +#: ../gtk/gtkcolorsel.c:452 #, fuzzy msgid "Intensity of the color." msgstr "Zelaliya rengî." -#: gtk/gtkcolorsel.c:422 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Nirx:" -#: gtk/gtkcolorsel.c:423 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Biriqandina rengî." -#: gtk/gtkcolorsel.c:424 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Sor:" -#: gtk/gtkcolorsel.c:425 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Asta rengê sor." -#: gtk/gtkcolorsel.c:426 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Kesk:" -#: gtk/gtkcolorsel.c:427 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Asta rengê kesk di reng de." -#: gtk/gtkcolorsel.c:428 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Şîn:" -#: gtk/gtkcolorsel.c:429 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Asta rengê şîn di reng de." -#: gtk/gtkcolorsel.c:432 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "_Tarîkirin:" -#: gtk/gtkcolorsel.c:439 gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Zelaliya rengî." -#: gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "Navê _reng:" -#: gtk/gtkcolorsel.c:470 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -690,15 +677,15 @@ msgstr "" "Tu dikarî wek şêweyê HTML reng derbasbikî, an jî bi hesanî dikarî navê reng " "binvîsî wekî mînak 'sor'." -#: gtk/gtkcolorsel.c:500 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Palet:" -#: gtk/gtkcolorsel.c:529 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Dolabê rengan" -#: gtk/gtkcolorsel.c:988 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -708,7 +695,7 @@ msgstr "" "hilbijartiye. tu dikarî vî rengî bibî malikên rengan an jî wekî rengê " "bikaranînê hilbijêrî." -#: gtk/gtkcolorsel.c:991 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -716,21 +703,21 @@ msgstr "" "Tu dikarî rengê ku te niha hilbijartiye di malikên rengan de tomar bikî ji " "bo di pêşerojê de tu bikaribî bikar bînî." -#: gtk/gtkcolorsel.c:996 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." msgstr "" -#: gtk/gtkcolorsel.c:999 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "" -#: gtk/gtkcolorsel.c:1396 +#: ../gtk/gtkcolorsel.c:1444 msgid "_Save color here" msgstr "Reng li vir _tomar bike" -#: gtk/gtkcolorsel.c:1601 +#: ../gtk/gtkcolorsel.c:1652 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -738,7 +725,7 @@ msgstr "" "Malika rengan bitikîne da tu bikî rengê bikaranîne. ji bo guhertina vê " "malikê bişkoja rastê ya mişk bitikîne û \"reng li vir tomar bike\" hilbijêre" -#: gtk/gtkcolorseldialog.c:189 +#: ../gtk/gtkcolorseldialog.c:189 msgid "Color Selection" msgstr "Hilbijartina rengan" @@ -748,124 +735,124 @@ msgstr "Hilbijartina rengan" #. * Do *not* translate it to "predefinito:mm", if it #. * it isn't default:mm or default:inch it will not work #. -#: gtk/gtkcustompaperunixdialog.c:116 +#: ../gtk/gtkcustompaperunixdialog.c:116 msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: gtk/gtkcustompaperunixdialog.c:374 gtk/gtkprintunixdialog.c:3233 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3241 msgid "Manage Custom Sizes" msgstr "Gerînendeya mezinahiyên taybet bike" -#: gtk/gtkcustompaperunixdialog.c:534 gtk/gtkpagesetupunixdialog.c:790 +#: ../gtk/gtkcustompaperunixdialog.c:534 ../gtk/gtkpagesetupunixdialog.c:790 msgid "inch" msgstr "înç" -#: gtk/gtkcustompaperunixdialog.c:536 gtk/gtkpagesetupunixdialog.c:788 +#: ../gtk/gtkcustompaperunixdialog.c:536 ../gtk/gtkpagesetupunixdialog.c:788 msgid "mm" msgstr "mm" -#: gtk/gtkcustompaperunixdialog.c:581 +#: ../gtk/gtkcustompaperunixdialog.c:581 msgid "Margins from Printer..." msgstr "Sînorên Çaperê..." -#: gtk/gtkcustompaperunixdialog.c:747 +#: ../gtk/gtkcustompaperunixdialog.c:747 #, c-format msgid "Custom Size %d" msgstr "Mezinahiya %d" -#: gtk/gtkcustompaperunixdialog.c:1059 +#: ../gtk/gtkcustompaperunixdialog.c:1059 msgid "_Width:" msgstr "_Firehî:" -#: gtk/gtkcustompaperunixdialog.c:1071 +#: ../gtk/gtkcustompaperunixdialog.c:1071 msgid "_Height:" msgstr "_Bilindahî:" -#: gtk/gtkcustompaperunixdialog.c:1083 +#: ../gtk/gtkcustompaperunixdialog.c:1083 msgid "Paper Size" msgstr "Mezinahiya kaxizê" -#: gtk/gtkcustompaperunixdialog.c:1092 +#: ../gtk/gtkcustompaperunixdialog.c:1092 msgid "_Top:" msgstr "_Jor:" -#: gtk/gtkcustompaperunixdialog.c:1104 +#: ../gtk/gtkcustompaperunixdialog.c:1104 msgid "_Bottom:" msgstr "_jêr:" -#: gtk/gtkcustompaperunixdialog.c:1116 +#: ../gtk/gtkcustompaperunixdialog.c:1116 msgid "_Left:" msgstr "_Çep:" -#: gtk/gtkcustompaperunixdialog.c:1128 +#: ../gtk/gtkcustompaperunixdialog.c:1128 msgid "_Right:" msgstr "_Rast:" -#: gtk/gtkcustompaperunixdialog.c:1169 +#: ../gtk/gtkcustompaperunixdialog.c:1169 msgid "Paper Margins" msgstr "Valehiyên rûpel" -#: gtk/gtkentry.c:8601 gtk/gtktextview.c:8248 +#: ../gtk/gtkentry.c:8809 ../gtk/gtktextview.c:8246 msgid "Input _Methods" msgstr "Riyên_Têketinê" -#: gtk/gtkentry.c:8615 gtk/gtktextview.c:8262 +#: ../gtk/gtkentry.c:8823 ../gtk/gtktextview.c:8260 msgid "_Insert Unicode Control Character" msgstr "_Şifreya kontrola sembolê derbas bike" -#: gtk/gtkentry.c:10015 +#: ../gtk/gtkentry.c:10227 msgid "Caps Lock and Num Lock are on" msgstr "" -#: gtk/gtkentry.c:10017 +#: ../gtk/gtkentry.c:10229 msgid "Num Lock is on" msgstr "" -#: gtk/gtkentry.c:10019 +#: ../gtk/gtkentry.c:10231 msgid "Caps Lock is on" msgstr "" #. **************** * #. * Private Macros * #. * **************** -#: gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:61 msgid "Select A File" msgstr "Pelekî Hilbijêre" -#: gtk/gtkfilechooserbutton.c:62 gtk/gtkfilechooserdefault.c:1812 +#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 msgid "Desktop" msgstr "Sermasê" -#: gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:63 msgid "(None)" msgstr "(Ne yek jî)" -#: gtk/gtkfilechooserbutton.c:2005 +#: ../gtk/gtkfilechooserbutton.c:2001 msgid "Other..." msgstr "Yên din..." -#: gtk/gtkfilechooserdefault.c:148 +#: ../gtk/gtkfilechooserdefault.c:147 msgid "Type name of new folder" msgstr "Navê celebê peldanka nû" -#: gtk/gtkfilechooserdefault.c:938 +#: ../gtk/gtkfilechooserdefault.c:946 msgid "Could not retrieve information about the file" msgstr "Nikare agahiyên li ser pelî bibîne" -#: gtk/gtkfilechooserdefault.c:949 +#: ../gtk/gtkfilechooserdefault.c:957 msgid "Could not add a bookmark" msgstr "Nikare beyanameyekê lê zêde bike" -#: gtk/gtkfilechooserdefault.c:960 +#: ../gtk/gtkfilechooserdefault.c:968 msgid "Could not remove bookmark" msgstr "Nikare beyanameyekê jê bibe" -#: gtk/gtkfilechooserdefault.c:971 +#: ../gtk/gtkfilechooserdefault.c:979 msgid "The folder could not be created" msgstr "Reng nehatiye avakirin" -#: gtk/gtkfilechooserdefault.c:984 +#: ../gtk/gtkfilechooserdefault.c:992 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -873,11 +860,17 @@ msgstr "" "Peldank pêk nehat, bi vî navî jixwe peldankek heye. Ji bo peldankê yan " "navekî din bikar bîne an jî berê berê navê pelê biguherîne." -#: gtk/gtkfilechooserdefault.c:995 +#: ../gtk/gtkfilechooserdefault.c:1006 +msgid "" +"You may only select folders. The item that you selected is not a folder; " +"try using a different item." +msgstr "" + +#: ../gtk/gtkfilechooserdefault.c:1016 msgid "Invalid file name" msgstr "Navê pelî ne derbasbare" -#: gtk/gtkfilechooserdefault.c:1005 +#: ../gtk/gtkfilechooserdefault.c:1026 msgid "The folder contents could not be displayed" msgstr "Naveroka peldankê nehate nîşandan" @@ -885,187 +878,186 @@ msgstr "Naveroka peldankê nehate nîşandan" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: gtk/gtkfilechooserdefault.c:1555 +#: ../gtk/gtkfilechooserdefault.c:1576 #, c-format msgid "%1$s on %2$s" msgstr "%1$s di %2$s de" -#: gtk/gtkfilechooserdefault.c:1731 +#: ../gtk/gtkfilechooserdefault.c:1752 msgid "Search" msgstr "Lêgerîn" -#: gtk/gtkfilechooserdefault.c:1755 gtk/gtkfilechooserdefault.c:9289 +#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Teze Bikaranî" -#: gtk/gtkfilechooserdefault.c:2409 +#: ../gtk/gtkfilechooserdefault.c:2437 msgid "Select which types of files are shown" msgstr "Hilbijêre kîjan cureyê pelan hatiye nîşandan" -#: gtk/gtkfilechooserdefault.c:2768 +#: ../gtk/gtkfilechooserdefault.c:2796 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Belgedankekê '%s' li beyanameyê zêde bike" -#: gtk/gtkfilechooserdefault.c:2812 +#: ../gtk/gtkfilechooserdefault.c:2840 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Belgedanka heyî li beyanameyê zêde bike" -#: gtk/gtkfilechooserdefault.c:2814 +#: ../gtk/gtkfilechooserdefault.c:2842 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Belgedanka hilbijartî li beyanameyê zêde bike" -#: gtk/gtkfilechooserdefault.c:2852 +#: ../gtk/gtkfilechooserdefault.c:2880 #, c-format msgid "Remove the bookmark '%s'" msgstr "Bijareya '%s' rake" -#: gtk/gtkfilechooserdefault.c:2854 +#: ../gtk/gtkfilechooserdefault.c:2882 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "" -#: gtk/gtkfilechooserdefault.c:2861 gtk/gtkfilechooserdefault.c:3725 +#: ../gtk/gtkfilechooserdefault.c:2889 ../gtk/gtkfilechooserdefault.c:3757 msgid "Remove the selected bookmark" msgstr "Beyanameya hilbijartî jê bibe" -#: gtk/gtkfilechooserdefault.c:3421 +#: ../gtk/gtkfilechooserdefault.c:3452 msgid "Remove" msgstr "Rake" -#: gtk/gtkfilechooserdefault.c:3430 +#: ../gtk/gtkfilechooserdefault.c:3461 msgid "Rename..." msgstr "Nav biguherîne..." #. Accessible object name for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3593 +#: ../gtk/gtkfilechooserdefault.c:3624 msgid "Places" msgstr "Cih" #. Column header for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3650 +#: ../gtk/gtkfilechooserdefault.c:3681 msgid "_Places" msgstr "_Cih" -#: gtk/gtkfilechooserdefault.c:3706 +#: ../gtk/gtkfilechooserdefault.c:3738 msgid "_Add" msgstr "_Têxê" -#: gtk/gtkfilechooserdefault.c:3713 +#: ../gtk/gtkfilechooserdefault.c:3745 msgid "Add the selected folder to the Bookmarks" msgstr "Beyanameya hilbijartî li peldankê zêde bike" -#: gtk/gtkfilechooserdefault.c:3718 +#: ../gtk/gtkfilechooserdefault.c:3750 msgid "_Remove" msgstr "_Rakirin" -#: gtk/gtkfilechooserdefault.c:3860 +#: ../gtk/gtkfilechooserdefault.c:3892 msgid "Could not select file" msgstr "Nikare pel hilbijêre" -#: gtk/gtkfilechooserdefault.c:4035 +#: ../gtk/gtkfilechooserdefault.c:4067 msgid "_Add to Bookmarks" msgstr "_Li beyanameyê zêde bike" -#: gtk/gtkfilechooserdefault.c:4048 +#: ../gtk/gtkfilechooserdefault.c:4080 msgid "Show _Hidden Files" msgstr "Pelên veşartî _nîşan bide" -#: gtk/gtkfilechooserdefault.c:4055 +#: ../gtk/gtkfilechooserdefault.c:4087 msgid "Show _Size Column" msgstr "" -#: gtk/gtkfilechooserdefault.c:4281 +#: ../gtk/gtkfilechooserdefault.c:4313 msgid "Files" msgstr "Pel" -#: gtk/gtkfilechooserdefault.c:4332 +#: ../gtk/gtkfilechooserdefault.c:4364 msgid "Name" msgstr "Nav" -#: gtk/gtkfilechooserdefault.c:4355 +#: ../gtk/gtkfilechooserdefault.c:4387 msgid "Size" msgstr "Mezinahî" -#: gtk/gtkfilechooserdefault.c:4369 +#: ../gtk/gtkfilechooserdefault.c:4401 msgid "Modified" msgstr "Hatiye guherandin" #. Label -#: gtk/gtkfilechooserdefault.c:4624 gtk/gtkprinteroptionwidget.c:801 +#: ../gtk/gtkfilechooserdefault.c:4656 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Nav:" -#: gtk/gtkfilechooserdefault.c:4667 +#: ../gtk/gtkfilechooserdefault.c:4699 msgid "_Browse for other folders" msgstr "_Li peldankên din binere" -#: gtk/gtkfilechooserdefault.c:4937 +#: ../gtk/gtkfilechooserdefault.c:4969 msgid "Type a file name" msgstr "Navê pelekî binivîse" #. Create Folder -#: gtk/gtkfilechooserdefault.c:4980 +#: ../gtk/gtkfilechooserdefault.c:5012 msgid "Create Fo_lder" msgstr "_Peldankê biafirîne" -#: gtk/gtkfilechooserdefault.c:4990 +#: ../gtk/gtkfilechooserdefault.c:5022 msgid "_Location:" msgstr "_Cih:" -#: gtk/gtkfilechooserdefault.c:5194 +#: ../gtk/gtkfilechooserdefault.c:5226 msgid "Save in _folder:" msgstr "Di _peldankê de tomar bike:" -#: gtk/gtkfilechooserdefault.c:5196 +#: ../gtk/gtkfilechooserdefault.c:5228 msgid "Create in _folder:" msgstr "Di peldankê de _biafirîne:" -#: gtk/gtkfilechooserdefault.c:6248 -#, fuzzy, c-format +#: ../gtk/gtkfilechooserdefault.c:6297 +#, c-format msgid "Could not read the contents of %s" -msgstr "Nikare ji nû nav li pelê %s bike ji bo %s: %s\n" +msgstr "Nikarî naveroka %s bixwîne" -#: gtk/gtkfilechooserdefault.c:6252 -#, fuzzy +#: ../gtk/gtkfilechooserdefault.c:6301 msgid "Could not read the contents of the folder" -msgstr "Nikare ikona lodkirî bibîne" +msgstr "Nikarî naveroka peldankê bixwîne" -#: gtk/gtkfilechooserdefault.c:6345 gtk/gtkfilechooserdefault.c:6413 -#: gtk/gtkfilechooserdefault.c:6558 +#: ../gtk/gtkfilechooserdefault.c:6394 ../gtk/gtkfilechooserdefault.c:6462 +#: ../gtk/gtkfilechooserdefault.c:6607 msgid "Unknown" msgstr "Nenas" -#: gtk/gtkfilechooserdefault.c:6360 +#: ../gtk/gtkfilechooserdefault.c:6409 msgid "%H:%M" msgstr "%H:%M" -#: gtk/gtkfilechooserdefault.c:6362 +#: ../gtk/gtkfilechooserdefault.c:6411 msgid "Yesterday at %H:%M" msgstr "Do de %H:%M de" -#: gtk/gtkfilechooserdefault.c:7028 +#: ../gtk/gtkfilechooserdefault.c:7077 msgid "Cannot change to folder because it is not local" msgstr "Nikare peldank biguhêre ji ber ne herîmiye" -#: gtk/gtkfilechooserdefault.c:7625 gtk/gtkfilechooserdefault.c:7646 +#: ../gtk/gtkfilechooserdefault.c:7674 ../gtk/gtkfilechooserdefault.c:7695 #, c-format msgid "Shortcut %s already exists" msgstr "Kurterê %s jixwe heye" -#: gtk/gtkfilechooserdefault.c:7736 +#: ../gtk/gtkfilechooserdefault.c:7785 #, c-format msgid "Shortcut %s does not exist" msgstr "Kurterê %s tuneye" -#: gtk/gtkfilechooserdefault.c:7997 gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "Pelek bi navê \"%s\" ji berê ve heye. Tu dixwazî ser wî binivîsî?" -#: gtk/gtkfilechooserdefault.c:8000 gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." @@ -1073,15 +1065,15 @@ msgstr "" "Ev pel ji berê ve di \"%s\" de heye. Heke tu biguhêrî dê di ser naveroka " "pelê berê de were nivisandin." -#: gtk/gtkfilechooserdefault.c:8005 gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_Guhestin" -#: gtk/gtkfilechooserdefault.c:8658 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Despêkirina lêgerînê biserneket" -#: gtk/gtkfilechooserdefault.c:8659 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1089,53 +1081,50 @@ msgstr "" "Bername nikarî bi daemona fihrîstkirina re girê bide. Ji kerema xwe re " "xebitandina wî kontrol bike." -#: gtk/gtkfilechooserdefault.c:8673 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Şandina lêpirsîna lêgerînê biserneket" -#: gtk/gtkfilechooserdefault.c:8861 -#, fuzzy +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" -msgstr "Lêgerîn" +msgstr "Lêgerîn:" -#: gtk/gtkfilechooserdefault.c:9466 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Siwarkirina %s biserneket" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: gtk/gtkfilechooserentry.c:702 gtk/gtkfilechooserentry.c:1169 -#, fuzzy +#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 msgid "Invalid path" msgstr "Rêç nederbasdar e" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1101 +#: ../gtk/gtkfilechooserentry.c:1104 msgid "No match" msgstr "" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1112 -#, fuzzy +#: ../gtk/gtkfilechooserentry.c:1115 msgid "Sole completion" -msgstr "Hilbijartina rengan" +msgstr "\t" #. translators: this text is shown when the text in a file chooser #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: gtk/gtkfilechooserentry.c:1128 +#: ../gtk/gtkfilechooserentry.c:1131 msgid "Complete, but not unique" msgstr "" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: gtk/gtkfilechooserentry.c:1160 +#: ../gtk/gtkfilechooserentry.c:1163 msgid "Completing..." msgstr "" @@ -1143,7 +1132,7 @@ msgstr "" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: gtk/gtkfilechooserentry.c:1182 gtk/gtkfilechooserentry.c:1207 +#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 msgid "Only local files may be selected" msgstr "" @@ -1151,81 +1140,75 @@ msgstr "" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: gtk/gtkfilechooserentry.c:1191 +#: ../gtk/gtkfilechooserentry.c:1194 msgid "Incomplete hostname; end it with '/'" msgstr "" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: gtk/gtkfilechooserentry.c:1202 -#, fuzzy +#: ../gtk/gtkfilechooserentry.c:1205 msgid "Path does not exist" -msgstr "Ev rêc tuneye" - -#: gtk/gtkfilechoosersettings.c:486 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "Di afirandina peldanka '%s' de çewtî: %s" +msgstr "Ev rêç tuneye" #. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are #. * really pointers to GDrive, GVolume or GMount objects. We need an extra #. * token for the fake "File System" volume. So, we'll return a pointer to #. * this particular string. #. -#: gtk/gtkfilesystem.c:48 +#: ../gtk/gtkfilesystem.c:48 msgid "File System" msgstr "Pergala Pelan" -#: gtk/gtkfontbutton.c:142 gtk/gtkfontbutton.c:266 +#: ../gtk/gtkfontbutton.c:142 ../gtk/gtkfontbutton.c:266 msgid "Pick a Font" msgstr "Curetîpekê Hilbijêre" #. Initialize fields -#: gtk/gtkfontbutton.c:260 +#: ../gtk/gtkfontbutton.c:260 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:785 +#: ../gtk/gtkfontbutton.c:785 msgid "Font" msgstr "Cureyê nivîsê" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:103 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abçdêfghîjşû ABÇDÊFGHÎJKŞÛ" -#: gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:370 msgid "_Family:" msgstr "_Malbat:" -#: gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:376 msgid "_Style:" msgstr "_Teşe:" -#: gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:382 msgid "Si_ze:" msgstr "_Mezinahî:" #. create the text entry widget -#: gtk/gtkfontsel.c:559 +#: ../gtk/gtkfontsel.c:558 msgid "_Preview:" msgstr "_Pêşdîtin:" -#: gtk/gtkfontsel.c:1659 +#: ../gtk/gtkfontsel.c:1658 msgid "Font Selection" msgstr "Hilbijartina Curetîpan" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1356 #, c-format msgid "Error loading icon: %s" msgstr "Çewtî di dema barkirina îkonê de: %s" -#: gtk/gtkicontheme.c:1354 +#: ../gtk/gtkicontheme.c:1351 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1238,78 +1221,75 @@ msgstr "" " Tu dikarî copya li vir bibînî\n" "\t%s" -#: gtk/gtkicontheme.c:1535 +#: ../gtk/gtkicontheme.c:1532 #, c-format msgid "Icon '%s' not present in theme" msgstr "îkon %s' ne têde ye" -#: gtk/gtkicontheme.c:3048 +#: ../gtk/gtkicontheme.c:3053 msgid "Failed to load icon" msgstr "Barkirina îkonê biserneket" -#: gtk/gtkimmodule.c:526 +#: ../gtk/gtkimmodule.c:526 msgid "Simple" msgstr "Hesan" -#: gtk/gtkimmulticontext.c:588 -#, fuzzy +#: ../gtk/gtkimmulticontext.c:588 msgctxt "input method menu" msgid "System" msgstr "Pergal" -#: gtk/gtkimmulticontext.c:598 -#, fuzzy +#: ../gtk/gtkimmulticontext.c:598 msgctxt "input method menu" msgid "None" -msgstr "Ne yek jî" +msgstr "Ne yek" -#: gtk/gtkimmulticontext.c:681 -#, fuzzy, c-format +#: ../gtk/gtkimmulticontext.c:681 +#, c-format msgctxt "input method menu" msgid "System (%s)" msgstr "Pergal (%s)" #. Open Link -#: gtk/gtklabel.c:6202 -#, fuzzy +#: ../gtk/gtklabel.c:6249 msgid "_Open Link" -msgstr "_Vekirin" +msgstr "Lînkê _veke" #. Copy Link Address -#: gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6261 msgid "Copy _Link Address" -msgstr "" +msgstr "Navnîşana _lînkê ji ber bigire" -#: gtk/gtklinkbutton.c:449 +#: ../gtk/gtklinkbutton.c:484 msgid "Copy URL" msgstr "URL kopî bike" -#: gtk/gtklinkbutton.c:601 +#: ../gtk/gtklinkbutton.c:647 msgid "Invalid URI" msgstr "URI nederbasdar e" #. Description of --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:526 +#: ../gtk/gtkmain.c:515 msgid "Load additional GTK+ modules" msgstr "Modulên GTK+ yên pêvek bar bike" #. Placeholder in --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:516 msgid "MODULES" msgstr "MODUL" #. Description of --g-fatal-warnings in --help output -#: gtk/gtkmain.c:529 +#: ../gtk/gtkmain.c:518 msgid "Make all warnings fatal" msgstr "Hemû hişyariyan xedar bike" #. Description of --gtk-debug=FLAGS in --help output -#: gtk/gtkmain.c:532 +#: ../gtk/gtkmain.c:521 msgid "GTK+ debugging flags to set" msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine tayînkirin" #. Description of --gtk-no-debug=FLAGS in --help output -#: gtk/gtkmain.c:535 +#: ../gtk/gtkmain.c:524 msgid "GTK+ debugging flags to unset" msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine rakirin" @@ -1318,131 +1298,127 @@ msgstr "Nîşenekên neqandina çewtiyên GTK+ yên wê werine rakirin" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: gtk/gtkmain.c:798 +#: ../gtk/gtkmain.c:787 msgid "default:LTR" msgstr "default:LTR" -#: gtk/gtkmain.c:863 +#: ../gtk/gtkmain.c:851 #, c-format msgid "Cannot open display: %s" msgstr "" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:915 msgid "GTK+ Options" msgstr "Vebijarkên GTK+" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:915 msgid "Show GTK+ Options" msgstr "Vebijarkên GTK+ Nîşan Bide" -#: gtk/gtkmountoperation.c:491 -#, fuzzy +#: ../gtk/gtkmountoperation.c:491 msgid "Co_nnect" msgstr "_Girêdan" -#: gtk/gtkmountoperation.c:558 +#: ../gtk/gtkmountoperation.c:558 msgid "Connect _anonymously" msgstr "" -#: gtk/gtkmountoperation.c:567 +#: ../gtk/gtkmountoperation.c:567 msgid "Connect as u_ser:" msgstr "" -#: gtk/gtkmountoperation.c:605 -#, fuzzy +#: ../gtk/gtkmountoperation.c:605 msgid "_Username:" -msgstr "_Navê bikarhêneê" +msgstr "_Navê bikarhêner:" -#: gtk/gtkmountoperation.c:610 -#, fuzzy +#: ../gtk/gtkmountoperation.c:610 msgid "_Domain:" -msgstr "_Cih:" +msgstr "" -#: gtk/gtkmountoperation.c:616 -#, fuzzy +#: ../gtk/gtkmountoperation.c:616 msgid "_Password:" msgstr "Şî_fre:" -#: gtk/gtkmountoperation.c:634 +#: ../gtk/gtkmountoperation.c:634 msgid "Forget password _immediately" msgstr "" -#: gtk/gtkmountoperation.c:644 +#: ../gtk/gtkmountoperation.c:644 msgid "Remember password until you _logout" -msgstr "" +msgstr "Heta _derketinê şîfreyê bi bîr bîne" -#: gtk/gtkmountoperation.c:654 +#: ../gtk/gtkmountoperation.c:654 msgid "Remember _forever" msgstr "" -#: gtk/gtkmountoperation.c:883 +#: ../gtk/gtkmountoperation.c:883 #, c-format msgid "Unknown Application (PID %d)" -msgstr "" +msgstr "Sepana nenas (PID %d)" -#: gtk/gtkmountoperation.c:1066 -#, c-format +#: ../gtk/gtkmountoperation.c:1066 msgid "Unable to end process" msgstr "" -#: gtk/gtkmountoperation.c:1103 +#: ../gtk/gtkmountoperation.c:1103 msgid "_End Process" msgstr "" -#: gtk/gtkmountoperation-stub.c:64 +#: ../gtk/gtkmountoperation-stub.c:64 #, c-format msgid "Cannot kill process with PID %d. Operation is not implemented." msgstr "" #. translators: this string is a name for the 'less' command -#: gtk/gtkmountoperation-x11.c:862 +#: ../gtk/gtkmountoperation-x11.c:862 msgid "Terminal Pager" msgstr "" -#: gtk/gtkmountoperation-x11.c:863 +#: ../gtk/gtkmountoperation-x11.c:863 #, fuzzy msgid "Top Command" msgstr "Rêzika Fermanê" -#: gtk/gtkmountoperation-x11.c:864 +#: ../gtk/gtkmountoperation-x11.c:864 msgid "Bourne Again Shell" msgstr "" -#: gtk/gtkmountoperation-x11.c:865 +#: ../gtk/gtkmountoperation-x11.c:865 msgid "Bourne Shell" msgstr "" -#: gtk/gtkmountoperation-x11.c:866 +#: ../gtk/gtkmountoperation-x11.c:866 msgid "Z Shell" msgstr "" -#: gtk/gtkmountoperation-x11.c:963 +#: ../gtk/gtkmountoperation-x11.c:963 #, c-format msgid "Cannot end process with PID %d: %s" msgstr "" -#: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170 +#: ../gtk/gtknotebook.c:4910 ../gtk/gtknotebook.c:7567 #, c-format msgid "Page %u" msgstr "Rûpela %u" -#: gtk/gtkpagesetup.c:596 gtk/gtkpapersize.c:838 gtk/gtkpapersize.c:880 +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 +#: ../gtk/gtkpapersize.c:880 msgid "Not a valid page setup file" msgstr "Pelê sazkirina rûpelê yê nederbasdar" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 #, fuzzy msgid "Any Printer" msgstr "Çaper" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 #, fuzzy msgid "For portable documents" msgstr "" "Kîjan çaper be\n" "Ji bo belgeyên guhêrbar" -#: gtk/gtkpagesetupunixdialog.c:809 +#: ../gtk/gtkpagesetupunixdialog.c:809 #, c-format msgid "" "Margins:\n" @@ -1457,53 +1433,53 @@ msgstr "" " Jor: %s %s\n" " Jêr: %s %s" -#: gtk/gtkpagesetupunixdialog.c:858 gtk/gtkprintunixdialog.c:3284 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3292 msgid "Manage Custom Sizes..." msgstr "Mezinahiyên Taybet Bi Rê Ve Bibe..." -#: gtk/gtkpagesetupunixdialog.c:909 +#: ../gtk/gtkpagesetupunixdialog.c:909 msgid "_Format for:" msgstr "_Wê were teşekirin:" -#: gtk/gtkpagesetupunixdialog.c:931 gtk/gtkprintunixdialog.c:3456 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3464 msgid "_Paper size:" msgstr "_Mezinahiya rûpelê:" -#: gtk/gtkpagesetupunixdialog.c:962 +#: ../gtk/gtkpagesetupunixdialog.c:962 msgid "_Orientation:" msgstr "_Alî:" -#: gtk/gtkpagesetupunixdialog.c:1026 gtk/gtkprintunixdialog.c:3518 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3526 msgid "Page Setup" msgstr "Mîhengên Rûpelê" -#: gtk/gtkpathbar.c:154 +#: ../gtk/gtkpathbar.c:158 msgid "Up Path" msgstr "Rêça Berjor" -#: gtk/gtkpathbar.c:156 +#: ../gtk/gtkpathbar.c:160 msgid "Down Path" msgstr "Rêça Berjêr" -#: gtk/gtkpathbar.c:1497 +#: ../gtk/gtkpathbar.c:1523 msgid "File System Root" msgstr "Koka Pergala Pelan" -#: gtk/gtkprintbackend.c:749 +#: ../gtk/gtkprintbackend.c:749 #, fuzzy msgid "Authentication" msgstr "Sepan" -#: gtk/gtkprinteroptionwidget.c:694 +#: ../gtk/gtkprinteroptionwidget.c:686 msgid "Not available" msgstr "Ne amade ye" -#: gtk/gtkprinteroptionwidget.c:794 +#: ../gtk/gtkprinteroptionwidget.c:786 #, fuzzy msgid "Select a folder" msgstr "Pelekî Hilbijêre" -#: gtk/gtkprinteroptionwidget.c:813 +#: ../gtk/gtkprinteroptionwidget.c:805 msgid "_Save in folder:" msgstr "Di _peldankê de tomar bike:" @@ -1511,194 +1487,188 @@ msgstr "Di _peldankê de tomar bike:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:190 #, c-format msgid "%s job #%d" msgstr "Xebata %s a #%d" -#: gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1695 msgctxt "print operation status" msgid "Initial state" msgstr "" -#: gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1696 #, fuzzy msgctxt "print operation status" msgid "Preparing to print" msgstr "%d tê amadekirin" -#: gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1697 msgctxt "print operation status" msgid "Generating data" msgstr "" -#: gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Sending data" msgstr "" -#: gtk/gtkprintoperation.c:1699 -#, fuzzy +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Waiting" msgstr "Li bendê" -#: gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Blocking on issue" msgstr "" -#: gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Printing" msgstr "Tê çapkirin" -#: gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1702 #, fuzzy msgctxt "print operation status" msgid "Finished" msgstr "Bidawîkirin" -#: gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1703 #, fuzzy msgctxt "print operation status" msgid "Finished with error" msgstr "Qediya lê çewtiyek derket" -#: gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2270 #, c-format msgid "Preparing %d" msgstr "%d tê amadekirin" -#: gtk/gtkprintoperation.c:2272 gtk/gtkprintoperation.c:2902 -#, c-format +#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 msgid "Preparing" msgstr "Tê amadekirin" -#: gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2275 #, c-format msgid "Printing %d" msgstr "%d tê çapkirin" -#: gtk/gtkprintoperation.c:2932 -#, fuzzy, c-format +#: ../gtk/gtkprintoperation.c:2932 +#, fuzzy msgid "Error creating print preview" msgstr "Çewtî di dema destpêkirinê" -#: gtk/gtkprintoperation.c:2935 -#, c-format +#: ../gtk/gtkprintoperation.c:2935 msgid "The most probable reason is that a temporary file could not be created." msgstr "" -#: gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Çewtî di dema destpêkirinê" -#: gtk/gtkprintoperation-unix.c:470 gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Sepan" -#: gtk/gtkprintoperation-win32.c:611 +#: ../gtk/gtkprintoperation-win32.c:611 msgid "Printer offline" msgstr "Çaper ne girêdayî ye" -#: gtk/gtkprintoperation-win32.c:613 +#: ../gtk/gtkprintoperation-win32.c:613 msgid "Out of paper" msgstr "Li derveyî rûpel" #. Translators: this is a printer status. -#: gtk/gtkprintoperation-win32.c:615 -#: modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../gtk/gtkprintoperation-win32.c:615 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 msgid "Paused" msgstr "Hatiye rawestandin" -#: gtk/gtkprintoperation-win32.c:617 +#: ../gtk/gtkprintoperation-win32.c:617 msgid "Need user intervention" msgstr "Pêwistî bi destwerdana bikarhêner heye" -#: gtk/gtkprintoperation-win32.c:717 +#: ../gtk/gtkprintoperation-win32.c:717 msgid "Custom size" msgstr "Mezinahiya taybet" -#: gtk/gtkprintoperation-win32.c:1539 -#, fuzzy +#: ../gtk/gtkprintoperation-win32.c:1539 msgid "No printer found" -msgstr "Hêman nehatine dîtin" +msgstr "Çaper nehatine dîtin" -#: gtk/gtkprintoperation-win32.c:1566 -#, fuzzy +#: ../gtk/gtkprintoperation-win32.c:1566 msgid "Invalid argument to CreateDC" -msgstr "Di çapkirina DlgEx de parametre çewte" +msgstr "Di CreateDC de parametre nederbas" -#: gtk/gtkprintoperation-win32.c:1602 gtk/gtkprintoperation-win32.c:1829 +#: ../gtk/gtkprintoperation-win32.c:1602 ../gtk/gtkprintoperation-win32.c:1829 msgid "Error from StartDoc" msgstr "Ji StartDocê çewtî" -#: gtk/gtkprintoperation-win32.c:1684 gtk/gtkprintoperation-win32.c:1707 -#: gtk/gtkprintoperation-win32.c:1755 +#: ../gtk/gtkprintoperation-win32.c:1684 ../gtk/gtkprintoperation-win32.c:1707 +#: ../gtk/gtkprintoperation-win32.c:1755 msgid "Not enough free memory" msgstr "Têra xwe bîra vala tuneye" -#: gtk/gtkprintoperation-win32.c:1760 +#: ../gtk/gtkprintoperation-win32.c:1760 msgid "Invalid argument to PrintDlgEx" msgstr "Di çapkirina DlgEx de parametre çewte" -#: gtk/gtkprintoperation-win32.c:1765 +#: ../gtk/gtkprintoperation-win32.c:1765 msgid "Invalid pointer to PrintDlgEx" msgstr "Di çapkirina PrintDlgEx de nîşanker çewte" -#: gtk/gtkprintoperation-win32.c:1770 +#: ../gtk/gtkprintoperation-win32.c:1770 msgid "Invalid handle to PrintDlgEx" msgstr "Ji bo PrintDlgEx xebatkera nederbasdar" -#: gtk/gtkprintoperation-win32.c:1775 +#: ../gtk/gtkprintoperation-win32.c:1775 msgid "Unspecified error" msgstr "Çewtiyeke nenas" -#: gtk/gtkprintunixdialog.c:618 +#: ../gtk/gtkprintunixdialog.c:618 msgid "Getting printer information failed" -msgstr "" +msgstr "Standina agahiya çaperê bi ser neket" -#: gtk/gtkprintunixdialog.c:1873 +#: ../gtk/gtkprintunixdialog.c:1873 msgid "Getting printer information..." -msgstr "" +msgstr "Agahiya çaperê tê standin..." -#: gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2140 msgid "Printer" msgstr "Çaper" #. Translators: this is the header for the location column in the print dialog -#: gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2150 msgid "Location" msgstr "Cih" #. Translators: this is the header for the printer status column in the print dialog -#: gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2161 msgid "Status" msgstr "Rewş" -#: gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2187 msgid "Range" msgstr "Beş" -#: gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2191 msgid "_All Pages" msgstr "_Hemû Rûpel" -#: gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "C_urrent Page" msgstr "Rûpela _Heyî" -#: gtk/gtkprintunixdialog.c:2207 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:2208 msgid "Se_lection" -msgstr "_Hilbijartin: " +msgstr "_Hilbijartin" -#: gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2217 msgid "Pag_es:" msgstr "_Rûpel:" -#: gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1706,29 +1676,28 @@ msgstr "" "Yek an zêdetir beş diyar bike,\n" " wekî 1-3,7,11" -#: gtk/gtkprintunixdialog.c:2227 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:2228 msgid "Pages" -msgstr "_Rûpel:" +msgstr "Rûpel" -#: gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2241 msgid "Copies" msgstr "Kopî" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2246 msgid "Copie_s:" msgstr "Kopî:" -#: gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2264 msgid "C_ollate" msgstr "B_irêzkirin" -#: gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2272 msgid "_Reverse" msgstr "_Berevajî bike" -#: gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2292 msgid "General" msgstr "Giştî" @@ -1738,177 +1707,168 @@ msgstr "Giştî" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, top to bottom" -msgstr "" +msgstr "Çep ber bi rast, jor ber bi jêr" -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, bottom to top" -msgstr "" +msgstr "Çep ber bi rast, jêr ber bi jor" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, top to bottom" -msgstr "" +msgstr "Rast ber bi çep, jor ber bi jêr" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, bottom to top" -msgstr "" +msgstr "Rast ber bi çep, jêr ber bi jor" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, left to right" -msgstr "" +msgstr "Jor ber bi jêr, çep ber bi rast" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, right to left" -msgstr "" +msgstr "Jor ber bi jêr, rast ber bi çep" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, left to right" -msgstr "" +msgstr "Jêr ber bi jor, çep ber bi rast" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, right to left" -msgstr "" +msgstr "Jêr ber bi jor, rast ber bi çep" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: gtk/gtkprintunixdialog.c:3024 gtk/gtkprintunixdialog.c:3037 -#: modules/printbackends/cups/gtkprintbackendcups.c:3543 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3032 ../gtk/gtkprintunixdialog.c:3045 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 msgid "Page Ordering" -msgstr "Tê amadekirin" +msgstr "Rêza rûpelan" -#: gtk/gtkprintunixdialog.c:3053 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3061 msgid "Left to right" -msgstr "LRM nîşankirina ji çepê ya ber bi rastê ve" +msgstr "Çep ber bi rast" -#: gtk/gtkprintunixdialog.c:3054 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Right to left" -msgstr "Li ser pelê (file) çap bike" +msgstr "Rast ber bi çep" -#: gtk/gtkprintunixdialog.c:3066 +#: ../gtk/gtkprintunixdialog.c:3074 msgid "Top to bottom" -msgstr "" +msgstr "Jor ber bi jêr" -#: gtk/gtkprintunixdialog.c:3067 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Bottom to top" -msgstr "" +msgstr "Jêr ber bi jor" -#: gtk/gtkprintunixdialog.c:3307 +#: ../gtk/gtkprintunixdialog.c:3315 msgid "Layout" msgstr "Bicihkirin" -#: gtk/gtkprintunixdialog.c:3311 +#: ../gtk/gtkprintunixdialog.c:3319 msgid "T_wo-sided:" msgstr "Du_alî:" -#: gtk/gtkprintunixdialog.c:3326 +#: ../gtk/gtkprintunixdialog.c:3334 msgid "Pages per _side:" msgstr "Di her ka_xizekê rûpel:" -#: gtk/gtkprintunixdialog.c:3343 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3351 msgid "Page or_dering:" -msgstr "Di her ka_xizekê rûpel:" +msgstr "Rêza rûpelan:" -#: gtk/gtkprintunixdialog.c:3359 +#: ../gtk/gtkprintunixdialog.c:3367 msgid "_Only print:" msgstr "_tenê bide çapê:" #. In enum order -#: gtk/gtkprintunixdialog.c:3374 +#: ../gtk/gtkprintunixdialog.c:3382 msgid "All sheets" msgstr "Hemû kaxiz" -#: gtk/gtkprintunixdialog.c:3375 +#: ../gtk/gtkprintunixdialog.c:3383 msgid "Even sheets" msgstr "Kaxizên cot" -#: gtk/gtkprintunixdialog.c:3376 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Odd sheets" msgstr "Kaxizên fer" -#: gtk/gtkprintunixdialog.c:3379 +#: ../gtk/gtkprintunixdialog.c:3387 msgid "Sc_ale:" msgstr "Pî_van:" -#: gtk/gtkprintunixdialog.c:3406 +#: ../gtk/gtkprintunixdialog.c:3414 msgid "Paper" msgstr "Kaxiz" -#: gtk/gtkprintunixdialog.c:3410 +#: ../gtk/gtkprintunixdialog.c:3418 msgid "Paper _type:" msgstr "_Cureyê rûpel:" -#: gtk/gtkprintunixdialog.c:3425 +#: ../gtk/gtkprintunixdialog.c:3433 msgid "Paper _source:" msgstr "Çavkaniya _rûpelan:" -#: gtk/gtkprintunixdialog.c:3440 +#: ../gtk/gtkprintunixdialog.c:3448 msgid "Output t_ray:" msgstr "Tepsiya _derketanê:" -#: gtk/gtkprintunixdialog.c:3480 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3488 msgid "Or_ientation:" msgstr "_Alî:" #. In enum order -#: gtk/gtkprintunixdialog.c:3495 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3503 msgid "Portrait" msgstr "Portre" -#: gtk/gtkprintunixdialog.c:3496 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Landscape" msgstr "Serpahnayê" -#: gtk/gtkprintunixdialog.c:3497 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Reverse portrait" -msgstr "serdirêjahiya berevajî" +msgstr "Portreya berevajî" -#: gtk/gtkprintunixdialog.c:3498 -#, fuzzy +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse landscape" -msgstr "serbahnaya berevajî" +msgstr "Serpahnahya berevajî" -#: gtk/gtkprintunixdialog.c:3543 +#: ../gtk/gtkprintunixdialog.c:3551 msgid "Job Details" msgstr "Kîtekîtên Kar" -#: gtk/gtkprintunixdialog.c:3549 +#: ../gtk/gtkprintunixdialog.c:3557 msgid "Pri_ority:" msgstr "Pê_şikî:" -#: gtk/gtkprintunixdialog.c:3564 +#: ../gtk/gtkprintunixdialog.c:3572 msgid "_Billing info:" msgstr "_Agahiyên fatorê:" -#: gtk/gtkprintunixdialog.c:3582 +#: ../gtk/gtkprintunixdialog.c:3590 msgid "Print Document" msgstr "Belgeyê çap bike" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: gtk/gtkprintunixdialog.c:3591 +#: ../gtk/gtkprintunixdialog.c:3599 msgid "_Now" msgstr "_Niha" -#: gtk/gtkprintunixdialog.c:3602 +#: ../gtk/gtkprintunixdialog.c:3610 msgid "A_t:" msgstr "_Li:" @@ -1916,127 +1876,122 @@ msgstr "_Li:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: gtk/gtkprintunixdialog.c:3608 +#: ../gtk/gtkprintunixdialog.c:3616 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" msgstr "" -#: gtk/gtkprintunixdialog.c:3618 +#: ../gtk/gtkprintunixdialog.c:3626 msgid "Time of print" -msgstr "" +msgstr "Dema çapkirinê" -#: gtk/gtkprintunixdialog.c:3634 +#: ../gtk/gtkprintunixdialog.c:3642 msgid "On _hold" msgstr "Li _bendê ye" -#: gtk/gtkprintunixdialog.c:3635 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "Hold the job until it is explicitly released" msgstr "" -#: gtk/gtkprintunixdialog.c:3655 +#: ../gtk/gtkprintunixdialog.c:3663 msgid "Add Cover Page" msgstr "Rûpelê xuya lê zêde bike" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: gtk/gtkprintunixdialog.c:3664 +#: ../gtk/gtkprintunixdialog.c:3672 msgid "Be_fore:" msgstr "_Berê:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: gtk/gtkprintunixdialog.c:3682 +#: ../gtk/gtkprintunixdialog.c:3690 msgid "_After:" msgstr "_Piştî:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: gtk/gtkprintunixdialog.c:3700 +#: ../gtk/gtkprintunixdialog.c:3708 msgid "Job" msgstr "Kar" -#: gtk/gtkprintunixdialog.c:3766 +#: ../gtk/gtkprintunixdialog.c:3774 msgid "Advanced" msgstr "Pêşketî" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3804 +#: ../gtk/gtkprintunixdialog.c:3812 msgid "Image Quality" msgstr "Kalîteya Dîmen" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3808 +#: ../gtk/gtkprintunixdialog.c:3816 msgid "Color" msgstr "Reng" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: gtk/gtkprintunixdialog.c:3813 +#: ../gtk/gtkprintunixdialog.c:3821 msgid "Finishing" msgstr "Bidawîkirin" -#: gtk/gtkprintunixdialog.c:3823 +#: ../gtk/gtkprintunixdialog.c:3831 msgid "Some of the settings in the dialog conflict" msgstr "Hin mîhengên ku di paceyê de ne li hev nakin" -#: gtk/gtkprintunixdialog.c:3846 +#: ../gtk/gtkprintunixdialog.c:3854 msgid "Print" msgstr "Çap" -#: gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Nikare pelê hundirandinê bibîne: \"%s\"" - -#: gtk/gtkrc.c:3470 gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:947 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Pelê wêneyê di pixmap_path de nehat dîtin: \"%s\"" -#: gtk/gtkrecentaction.c:165 gtk/gtkrecentaction.c:173 -#: gtk/gtkrecentchoosermenu.c:615 gtk/gtkrecentchoosermenu.c:623 +#: ../gtk/gtkrecentaction.c:165 ../gtk/gtkrecentaction.c:173 +#: ../gtk/gtkrecentchoosermenu.c:608 ../gtk/gtkrecentchoosermenu.c:616 #, c-format msgid "This function is not implemented for widgets of class '%s'" msgstr "Ev kar ji bo perçekên di pola '%s' de ne nehatiye sepandin" -#: gtk/gtkrecentchooserdefault.c:482 +#: ../gtk/gtkrecentchooserdefault.c:483 msgid "Select which type of documents are shown" msgstr "Hilbijêre kîjan cureyê pelan were nîşandan" -#: gtk/gtkrecentchooserdefault.c:1138 gtk/gtkrecentchooserdefault.c:1175 +#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 #, c-format msgid "No item for URI '%s' found" msgstr "Ti hêman ji bo URI '%s' nehate xuyakirin" -#: gtk/gtkrecentchooserdefault.c:1302 +#: ../gtk/gtkrecentchooserdefault.c:1297 msgid "Untitled filter" msgstr "Parzûna bênav" -#: gtk/gtkrecentchooserdefault.c:1655 +#: ../gtk/gtkrecentchooserdefault.c:1650 msgid "Could not remove item" msgstr "Rakirina hêmanê biserneket" -#: gtk/gtkrecentchooserdefault.c:1699 +#: ../gtk/gtkrecentchooserdefault.c:1694 msgid "Could not clear list" msgstr "Lîste nehate paqijkirin" -#: gtk/gtkrecentchooserdefault.c:1783 +#: ../gtk/gtkrecentchooserdefault.c:1778 msgid "Copy _Location" msgstr "_Cih kopî bike" -#: gtk/gtkrecentchooserdefault.c:1796 +#: ../gtk/gtkrecentchooserdefault.c:1791 msgid "_Remove From List" msgstr "_Ji Lîsteyê _Ji Bibe" -#: gtk/gtkrecentchooserdefault.c:1805 +#: ../gtk/gtkrecentchooserdefault.c:1800 msgid "_Clear List" msgstr "Lîsteyê _Paqij Bike" -#: gtk/gtkrecentchooserdefault.c:1819 +#: ../gtk/gtkrecentchooserdefault.c:1814 msgid "Show _Private Resources" msgstr "Çavkaniyên-berê nîşan bide" @@ -2050,21 +2005,21 @@ msgstr "Çavkaniyên-berê nîşan bide" #. * user appended or prepended custom menu items to the #. * recent chooser menu widget. #. -#: gtk/gtkrecentchoosermenu.c:369 +#: ../gtk/gtkrecentchoosermenu.c:362 msgid "No items found" msgstr "Hêman nehatine dîtin" -#: gtk/gtkrecentchoosermenu.c:535 gtk/gtkrecentchoosermenu.c:591 +#: ../gtk/gtkrecentchoosermenu.c:528 ../gtk/gtkrecentchoosermenu.c:584 #, c-format msgid "No recently used resource found with URI `%s'" msgstr "Ti çavkaniya bikarhênerên dawî ên URI `%s' nehate dîtin" -#: gtk/gtkrecentchoosermenu.c:802 +#: ../gtk/gtkrecentchoosermenu.c:795 #, c-format msgid "Open '%s'" msgstr "'%s' Veke" -#: gtk/gtkrecentchoosermenu.c:832 +#: ../gtk/gtkrecentchoosermenu.c:825 msgid "Unknown item" msgstr "Hêmana nenas" @@ -2073,7 +2028,7 @@ msgstr "Hêmana nenas" #. * the %s is the name of the item. Please keep the _ in front #. * of the number to give these menu items a mnemonic. #. -#: gtk/gtkrecentchoosermenu.c:843 +#: ../gtk/gtkrecentchoosermenu.c:836 #, c-format msgctxt "recent menu label" msgid "_%d. %s" @@ -2082,47 +2037,52 @@ msgstr "_%d. %s" #. This is the format that is used for items in a recent files menu. #. * The %d is the number of the item, the %s is the name of the item. #. -#: gtk/gtkrecentchoosermenu.c:848 -#, fuzzy, c-format +#: ../gtk/gtkrecentchoosermenu.c:841 +#, c-format msgctxt "recent menu label" msgid "%d. %s" msgstr "%d. %s" -#: gtk/gtkrecentmanager.c:980 gtk/gtkrecentmanager.c:993 -#: gtk/gtkrecentmanager.c:1131 gtk/gtkrecentmanager.c:1141 -#: gtk/gtkrecentmanager.c:1194 gtk/gtkrecentmanager.c:1203 -#: gtk/gtkrecentmanager.c:1218 +#: ../gtk/gtkrecentmanager.c:1000 ../gtk/gtkrecentmanager.c:1013 +#: ../gtk/gtkrecentmanager.c:1150 ../gtk/gtkrecentmanager.c:1160 +#: ../gtk/gtkrecentmanager.c:1213 ../gtk/gtkrecentmanager.c:1222 +#: ../gtk/gtkrecentmanager.c:1237 #, c-format msgid "Unable to find an item with URI '%s'" msgstr "Hêmaneke ku bi URIya '%s' têkildar e nehate dîtin" -#: gtk/gtkspinner.c:456 +#: ../gtk/gtkrecentmanager.c:2437 +#, c-format +msgid "No registered application with name '%s' for item with URI '%s' found" +msgstr "" + +#: ../gtk/gtkspinner.c:326 #, fuzzy msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Super" -#: gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:327 msgid "Provides visual indication of progress" msgstr "" #. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate -#: gtk/gtkstock.c:313 +#: ../gtk/gtkstock.c:313 msgctxt "Stock label" msgid "Information" msgstr "Agahî" -#: gtk/gtkstock.c:314 +#: ../gtk/gtkstock.c:314 msgctxt "Stock label" msgid "Warning" msgstr "Şiyarî" -#: gtk/gtkstock.c:315 +#: ../gtk/gtkstock.c:315 msgctxt "Stock label" msgid "Error" msgstr "Çewtî" -#: gtk/gtkstock.c:316 +#: ../gtk/gtkstock.c:316 msgctxt "Stock label" msgid "Question" msgstr "Pirs" @@ -2130,630 +2090,590 @@ msgstr "Pirs" #. FIXME these need accelerators when appropriate, and #. * need the mnemonics to be rationalized #. -#: gtk/gtkstock.c:321 +#: ../gtk/gtkstock.c:321 msgctxt "Stock label" msgid "_About" msgstr "_Der barê" -#: gtk/gtkstock.c:322 -#, fuzzy +#: ../gtk/gtkstock.c:322 msgctxt "Stock label" msgid "_Add" msgstr "_Lêzêdekirin" -#: gtk/gtkstock.c:323 -#, fuzzy +#: ../gtk/gtkstock.c:323 msgctxt "Stock label" msgid "_Apply" msgstr "Bise_pîne" -#: gtk/gtkstock.c:324 -#, fuzzy +#: ../gtk/gtkstock.c:324 msgctxt "Stock label" msgid "_Bold" msgstr "_Qalind" -#: gtk/gtkstock.c:325 +#: ../gtk/gtkstock.c:325 msgctxt "Stock label" msgid "_Cancel" msgstr "_Betal" -#: gtk/gtkstock.c:326 -#, fuzzy +#: ../gtk/gtkstock.c:326 msgctxt "Stock label" msgid "_CD-ROM" -msgstr "_CD-Rom" +msgstr "_CD-ROM" -#: gtk/gtkstock.c:327 +#: ../gtk/gtkstock.c:327 #, fuzzy msgctxt "Stock label" msgid "_Clear" msgstr "_Jê bibe" -#: gtk/gtkstock.c:328 -#, fuzzy +#: ../gtk/gtkstock.c:328 msgctxt "Stock label" msgid "_Close" -msgstr "_Bigire" +msgstr "_Girtin" -#: gtk/gtkstock.c:329 -#, fuzzy +#: ../gtk/gtkstock.c:329 msgctxt "Stock label" msgid "C_onnect" -msgstr "_Girêbide" +msgstr "_Girêdan" -#: gtk/gtkstock.c:330 -#, fuzzy +#: ../gtk/gtkstock.c:330 msgctxt "Stock label" msgid "_Convert" -msgstr "_Veguherîne" +msgstr "_Veguherandin" -#: gtk/gtkstock.c:331 -#, fuzzy +#: ../gtk/gtkstock.c:331 msgctxt "Stock label" msgid "_Copy" -msgstr "_Ji ber bigire" +msgstr "_Kopîkirin" -#: gtk/gtkstock.c:332 -#, fuzzy +#: ../gtk/gtkstock.c:332 msgctxt "Stock label" msgid "Cu_t" -msgstr "_Jê bike" +msgstr "_Jêkirin" -#: gtk/gtkstock.c:333 -#, fuzzy +#: ../gtk/gtkstock.c:333 msgctxt "Stock label" msgid "_Delete" -msgstr "_Rake" +msgstr "_Jêbirin" -#: gtk/gtkstock.c:334 -#, fuzzy +#: ../gtk/gtkstock.c:334 msgctxt "Stock label" msgid "_Discard" -msgstr "Bia_vêje" +msgstr "_Avêtin" -#: gtk/gtkstock.c:335 -#, fuzzy +#: ../gtk/gtkstock.c:335 msgctxt "Stock label" msgid "_Disconnect" -msgstr "Girêdanê _qut bike" +msgstr "Girêdanê _qutkirin" -#: gtk/gtkstock.c:336 -#, fuzzy +#: ../gtk/gtkstock.c:336 msgctxt "Stock label" msgid "_Execute" -msgstr "Bisepîne" +msgstr "_Xebitandin" -#: gtk/gtkstock.c:337 -#, fuzzy +#: ../gtk/gtkstock.c:337 msgctxt "Stock label" msgid "_Edit" -msgstr "_Biguherîne" +msgstr "_Sererastkirin" -#: gtk/gtkstock.c:338 -#, fuzzy +#: ../gtk/gtkstock.c:338 msgctxt "Stock label" msgid "_File" msgstr "_Pel" -#: gtk/gtkstock.c:339 -#, fuzzy +#: ../gtk/gtkstock.c:339 msgctxt "Stock label" msgid "_Find" -msgstr "_Bibîne" +msgstr "_Lêgerîn" -#: gtk/gtkstock.c:340 -#, fuzzy +#: ../gtk/gtkstock.c:340 msgctxt "Stock label" msgid "Find and _Replace" -msgstr "Bibîne û _Biguherîne" +msgstr "Lêgerîn û _guherandin" -#: gtk/gtkstock.c:341 -#, fuzzy +#: ../gtk/gtkstock.c:341 msgctxt "Stock label" msgid "_Floppy" msgstr "_Dîsket" -#: gtk/gtkstock.c:342 -#, fuzzy +#: ../gtk/gtkstock.c:342 msgctxt "Stock label" msgid "_Fullscreen" msgstr "_Dîmender tijî" -#: gtk/gtkstock.c:343 -#, fuzzy +#: ../gtk/gtkstock.c:343 msgctxt "Stock label" msgid "_Leave Fullscreen" msgstr "_Ji dîmendera tije derkeve" #. This is a navigation label as in "go to the bottom of the page" -#: gtk/gtkstock.c:345 -#, fuzzy +#: ../gtk/gtkstock.c:345 msgctxt "Stock label, navigation" msgid "_Bottom" -msgstr "_jêr:" +msgstr "_Jêr" #. This is a navigation label as in "go to the first page" -#: gtk/gtkstock.c:347 -#, fuzzy +#: ../gtk/gtkstock.c:347 msgctxt "Stock label, navigation" msgid "_First" -msgstr "_Pel" +msgstr "_Ser" #. This is a navigation label as in "go to the last page" -#: gtk/gtkstock.c:349 -#, fuzzy +#: ../gtk/gtkstock.c:349 msgctxt "Stock label, navigation" msgid "_Last" -msgstr "_Pêve bike" +msgstr "_Dawî" #. This is a navigation label as in "go to the top of the page" -#: gtk/gtkstock.c:351 -#, fuzzy +#: ../gtk/gtkstock.c:351 msgctxt "Stock label, navigation" msgid "_Top" -msgstr "_Jor:" +msgstr "_Jor" #. This is a navigation label as in "go back" -#: gtk/gtkstock.c:353 +#: ../gtk/gtkstock.c:353 msgctxt "Stock label, navigation" msgid "_Back" -msgstr "" +msgstr "_Pêşve" #. This is a navigation label as in "go down" -#: gtk/gtkstock.c:355 -#, fuzzy +#: ../gtk/gtkstock.c:355 msgctxt "Stock label, navigation" msgid "_Down" -msgstr "_Niha" +msgstr "_Berjêr" #. This is a navigation label as in "go forward" -#: gtk/gtkstock.c:357 -#, fuzzy +#: ../gtk/gtkstock.c:357 msgctxt "Stock label, navigation" msgid "_Forward" -msgstr "Pêş_" +msgstr "Pêş_ve" #. This is a navigation label as in "go up" -#: gtk/gtkstock.c:359 +#: ../gtk/gtkstock.c:359 msgctxt "Stock label, navigation" msgid "_Up" -msgstr "" +msgstr "_Berjor" -#: gtk/gtkstock.c:360 -#, fuzzy +#: ../gtk/gtkstock.c:360 msgctxt "Stock label" msgid "_Hard Disk" -msgstr "_Dîska Sabît" +msgstr "_Dîska sabît" -#: gtk/gtkstock.c:361 -#, fuzzy +#: ../gtk/gtkstock.c:361 msgctxt "Stock label" msgid "_Help" msgstr "_Alîkarî" -#: gtk/gtkstock.c:362 -#, fuzzy +#: ../gtk/gtkstock.c:362 msgctxt "Stock label" msgid "_Home" msgstr "_Mal" -#: gtk/gtkstock.c:363 +#: ../gtk/gtkstock.c:363 #, fuzzy msgctxt "Stock label" msgid "Increase Indent" msgstr "Çalikê mezintir bike" -#: gtk/gtkstock.c:364 +#: ../gtk/gtkstock.c:364 #, fuzzy msgctxt "Stock label" msgid "Decrease Indent" msgstr "Bialîkirinê kêmtir bike" -#: gtk/gtkstock.c:365 -#, fuzzy +#: ../gtk/gtkstock.c:365 msgctxt "Stock label" msgid "_Index" msgstr "_Pêrist" -#: gtk/gtkstock.c:366 -#, fuzzy +#: ../gtk/gtkstock.c:366 msgctxt "Stock label" msgid "_Information" msgstr "_Agahî" -#: gtk/gtkstock.c:367 -#, fuzzy +#: ../gtk/gtkstock.c:367 msgctxt "Stock label" msgid "_Italic" msgstr "_Paldayî" -#: gtk/gtkstock.c:368 +#: ../gtk/gtkstock.c:368 #, fuzzy msgctxt "Stock label" msgid "_Jump to" msgstr "_Qevastin" #. This is about text justification, "centered text" -#: gtk/gtkstock.c:370 +#: ../gtk/gtkstock.c:370 #, fuzzy msgctxt "Stock label" msgid "_Center" msgstr "_Veguherîne" #. This is about text justification -#: gtk/gtkstock.c:372 -#, fuzzy +#: ../gtk/gtkstock.c:372 msgctxt "Stock label" msgid "_Fill" -msgstr "_Pel" +msgstr "" #. This is about text justification, "left-justified text" -#: gtk/gtkstock.c:374 -#, fuzzy +#: ../gtk/gtkstock.c:374 msgctxt "Stock label" msgid "_Left" -msgstr "_Çep:" +msgstr "_Çep" #. This is about text justification, "right-justified text" -#: gtk/gtkstock.c:376 -#, fuzzy +#: ../gtk/gtkstock.c:376 msgctxt "Stock label" msgid "_Right" -msgstr "_Rast:" +msgstr "_Rast" #. Media label, as in "fast forward" -#: gtk/gtkstock.c:379 -#, fuzzy +#: ../gtk/gtkstock.c:379 msgctxt "Stock label, media" msgid "_Forward" -msgstr "Pêş_" +msgstr "_Pêş" #. Media label, as in "next song" -#: gtk/gtkstock.c:381 +#: ../gtk/gtkstock.c:381 #, fuzzy msgctxt "Stock label, media" msgid "_Next" -msgstr "_Nû" +msgstr "_Ya dû" #. Media label, as in "pause music" -#: gtk/gtkstock.c:383 -#, fuzzy +#: ../gtk/gtkstock.c:383 msgctxt "Stock label, media" msgid "P_ause" -msgstr "Hatiye rawestandin" +msgstr "_Rawestandin" #. Media label, as in "play music" -#: gtk/gtkstock.c:385 +#: ../gtk/gtkstock.c:385 msgctxt "Stock label, media" msgid "_Play" msgstr "_Lêdan" #. Media label, as in "previous song" -#: gtk/gtkstock.c:387 -#, fuzzy +#: ../gtk/gtkstock.c:387 msgctxt "Stock label, media" msgid "Pre_vious" msgstr "Ya _berê" #. Media label -#: gtk/gtkstock.c:389 -#, fuzzy +#: ../gtk/gtkstock.c:389 msgctxt "Stock label, media" msgid "_Record" msgstr "_Tomarkirin" #. Media label -#: gtk/gtkstock.c:391 -#, fuzzy +#: ../gtk/gtkstock.c:391 msgctxt "Stock label, media" msgid "R_ewind" -msgstr "D_îtin" +msgstr "" #. Media label -#: gtk/gtkstock.c:393 -#, fuzzy +#: ../gtk/gtkstock.c:393 msgctxt "Stock label, media" msgid "_Stop" -msgstr "_Bisekine" +msgstr "_Sekinandin" -#: gtk/gtkstock.c:394 +#: ../gtk/gtkstock.c:394 msgctxt "Stock label" msgid "_Network" msgstr "_Tor" -#: gtk/gtkstock.c:395 +#: ../gtk/gtkstock.c:395 msgctxt "Stock label" msgid "_New" msgstr "_Nû" -#: gtk/gtkstock.c:396 +#: ../gtk/gtkstock.c:396 msgctxt "Stock label" msgid "_No" msgstr "_Na" -#: gtk/gtkstock.c:397 +#: ../gtk/gtkstock.c:397 msgctxt "Stock label" msgid "_OK" msgstr "_Temam" -#: gtk/gtkstock.c:398 +#: ../gtk/gtkstock.c:398 msgctxt "Stock label" msgid "_Open" msgstr "_Vekirin" #. Page orientation -#: gtk/gtkstock.c:400 -#, fuzzy +#: ../gtk/gtkstock.c:400 msgctxt "Stock label" msgid "Landscape" msgstr "Serpahnayê" #. Page orientation -#: gtk/gtkstock.c:402 -#, fuzzy +#: ../gtk/gtkstock.c:402 msgctxt "Stock label" msgid "Portrait" msgstr "Portre" #. Page orientation -#: gtk/gtkstock.c:404 -#, fuzzy +#: ../gtk/gtkstock.c:404 msgctxt "Stock label" msgid "Reverse landscape" -msgstr "serbahnaya berevajî" +msgstr "Serpahnaya berevajî" #. Page orientation -#: gtk/gtkstock.c:406 -#, fuzzy +#: ../gtk/gtkstock.c:406 msgctxt "Stock label" msgid "Reverse portrait" -msgstr "serdirêjahiya berevajî" +msgstr "Portreya berevajî" -#: gtk/gtkstock.c:407 +#: ../gtk/gtkstock.c:407 msgctxt "Stock label" msgid "Page Set_up" msgstr "_Mîhengên Rûpelê" -#: gtk/gtkstock.c:408 +#: ../gtk/gtkstock.c:408 msgctxt "Stock label" msgid "_Paste" msgstr "_Pêvekirin" -#: gtk/gtkstock.c:409 -#, fuzzy +#: ../gtk/gtkstock.c:409 msgctxt "Stock label" msgid "_Preferences" msgstr "_Vebijêrk" -#: gtk/gtkstock.c:410 +#: ../gtk/gtkstock.c:410 msgctxt "Stock label" msgid "_Print" msgstr "_Çap" -#: gtk/gtkstock.c:411 -#, fuzzy +#: ../gtk/gtkstock.c:411 msgctxt "Stock label" msgid "Print Pre_view" -msgstr "_Pêşdîtina Çapê" +msgstr "_Pêşdîtina çapê" -#: gtk/gtkstock.c:412 +#: ../gtk/gtkstock.c:412 msgctxt "Stock label" msgid "_Properties" msgstr "_Taybetmendî" -#: gtk/gtkstock.c:413 -#, fuzzy +#: ../gtk/gtkstock.c:413 msgctxt "Stock label" msgid "_Quit" msgstr "_Derketin" -#: gtk/gtkstock.c:414 -#, fuzzy +#: ../gtk/gtkstock.c:414 msgctxt "Stock label" msgid "_Redo" -msgstr "_Dîsa bikeDubare bike" +msgstr "_Dîsa kirin" -#: gtk/gtkstock.c:415 -#, fuzzy +#: ../gtk/gtkstock.c:415 msgctxt "Stock label" msgid "_Refresh" -msgstr "_Teze bike" +msgstr "_Tezekirin" -#: gtk/gtkstock.c:416 +#: ../gtk/gtkstock.c:416 msgctxt "Stock label" msgid "_Remove" msgstr "_Rakirin" -#: gtk/gtkstock.c:417 -#, fuzzy +#: ../gtk/gtkstock.c:417 msgctxt "Stock label" msgid "_Revert" -msgstr "_Bizivirîne Paş" +msgstr "_Bizivirîne paş" -#: gtk/gtkstock.c:418 +#: ../gtk/gtkstock.c:418 msgctxt "Stock label" msgid "_Save" msgstr "_Tomarkirin" -#: gtk/gtkstock.c:419 -#, fuzzy +#: ../gtk/gtkstock.c:419 msgctxt "Stock label" msgid "Save _As" -msgstr "_Cuda Tomar bike" +msgstr "Tomar bike _wekî" -#: gtk/gtkstock.c:420 -#, fuzzy +#: ../gtk/gtkstock.c:420 msgctxt "Stock label" msgid "Select _All" -msgstr "Hemûyî _Hilbijêre" +msgstr "Hemûyî _hilbijêre" -#: gtk/gtkstock.c:421 +#: ../gtk/gtkstock.c:421 msgctxt "Stock label" msgid "_Color" msgstr "_Reng" -#: gtk/gtkstock.c:422 -#, fuzzy +#: ../gtk/gtkstock.c:422 msgctxt "Stock label" msgid "_Font" msgstr "_Curenivîs" #. Sorting direction -#: gtk/gtkstock.c:424 -#, fuzzy +#: ../gtk/gtkstock.c:424 msgctxt "Stock label" msgid "_Ascending" -msgstr "_Ber bi Jor" +msgstr "_Ber bi jor" #. Sorting direction -#: gtk/gtkstock.c:426 -#, fuzzy +#: ../gtk/gtkstock.c:426 msgctxt "Stock label" msgid "_Descending" msgstr "_Ber bi jêr" -#: gtk/gtkstock.c:427 -#, fuzzy +#: ../gtk/gtkstock.c:427 msgctxt "Stock label" msgid "_Spell Check" -msgstr "_Kontrola Nivîsînê" +msgstr "_Kontrola rastnivîsînê" -#: gtk/gtkstock.c:428 -#, fuzzy +#: ../gtk/gtkstock.c:428 msgctxt "Stock label" msgid "_Stop" msgstr "_Bisekine" #. Font variant -#: gtk/gtkstock.c:430 -#, fuzzy +#: ../gtk/gtkstock.c:430 msgctxt "Stock label" msgid "_Strikethrough" -msgstr "_xêzkirin" +msgstr "_Xêzkirin" -#: gtk/gtkstock.c:431 -#, fuzzy +#: ../gtk/gtkstock.c:431 msgctxt "Stock label" msgid "_Undelete" -msgstr "_Xelas Bike" +msgstr "_Xelaskirin" #. Font variant -#: gtk/gtkstock.c:433 -#, fuzzy +#: ../gtk/gtkstock.c:433 msgctxt "Stock label" msgid "_Underline" msgstr "_Binxêz" -#: gtk/gtkstock.c:434 -#, fuzzy +#: ../gtk/gtkstock.c:434 msgctxt "Stock label" msgid "_Undo" -msgstr "_jê veger" +msgstr "_Vegerîn" -#: gtk/gtkstock.c:435 +#: ../gtk/gtkstock.c:435 msgctxt "Stock label" msgid "_Yes" msgstr "_Erê" #. Zoom -#: gtk/gtkstock.c:437 -#, fuzzy +#: ../gtk/gtkstock.c:437 msgctxt "Stock label" msgid "_Normal Size" -msgstr "_Mezinahiya Asayî" +msgstr "_Mezinahiya asayî" #. Zoom -#: gtk/gtkstock.c:439 -#, fuzzy +#: ../gtk/gtkstock.c:439 msgctxt "Stock label" msgid "Best _Fit" -msgstr "Bila tê de hilê" +msgstr "_Bila tê de hilê" -#: gtk/gtkstock.c:440 -#, fuzzy +#: ../gtk/gtkstock.c:440 msgctxt "Stock label" msgid "Zoom _In" msgstr "Nê_zîk bîne" -#: gtk/gtkstock.c:441 -#, fuzzy +#: ../gtk/gtkstock.c:441 msgctxt "Stock label" msgid "Zoom _Out" msgstr "_Dûr bibe" -#: gtk/gtktextbufferrichtext.c:650 +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:296 ../gtk/gtkswitch.c:339 ../gtk/gtkswitch.c:531 +msgctxt "switch" +msgid "ON" +msgstr "❙" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:304 ../gtk/gtkswitch.c:340 ../gtk/gtkswitch.c:552 +msgctxt "switch" +msgid "OFF" +msgstr "○" + +#: ../gtk/gtkswitch.c:943 +msgctxt "light switch widget" +msgid "Switch" +msgstr "" + +#: ../gtk/gtkswitch.c:944 +msgid "Switches between on and off states" +msgstr "" + +#: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" msgstr "Çewtiyeke nenas di dema hewildana vegerandina %s de" -#: gtk/gtktextbufferrichtext.c:709 +#: ../gtk/gtktextbufferrichtext.c:709 #, c-format msgid "No deserialize function found for format %s" msgstr "ji bo vegerandina şêwazê %s ti pêwir nayê dîtin" -#: gtk/gtktextbufferserialize.c:795 gtk/gtktextbufferserialize.c:821 +#: ../gtk/gtktextbufferserialize.c:799 ../gtk/gtktextbufferserialize.c:825 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "\"id\" û \"nav\" herdu di endama <%s> de hatin dîtin" -#: gtk/gtktextbufferserialize.c:805 gtk/gtktextbufferserialize.c:831 +#: ../gtk/gtktextbufferserialize.c:809 ../gtk/gtktextbufferserialize.c:835 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Nirxdariya \"%s\" du caran di endamê <%s> de hate dîtin" -#: gtk/gtktextbufferserialize.c:845 -#, fuzzy, c-format +#: ../gtk/gtktextbufferserialize.c:851 +#, c-format msgid "<%s> element has invalid ID \"%s\"" -msgstr "elemanê <%s> nedarbasbare di id a \"%s\"" +msgstr "ID \"%s\" ya hêmana <%s> nedarbasbar e" -#: gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:861 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "Ne \"nav\" ne jî \"id\" ji bo pêşbîra endam <%s> heye" -#: gtk/gtktextbufferserialize.c:942 +#: ../gtk/gtktextbufferserialize.c:948 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Pêşbîr \"%s\" hatiye dubare kirin di heman endamê <%s> de" -#: gtk/gtktextbufferserialize.c:960 gtk/gtktextbufferserialize.c:985 +#: ../gtk/gtktextbufferserialize.c:966 ../gtk/gtktextbufferserialize.c:991 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Pêşbîr \"%s\" di têkileya endam <%s> de ne derbasbare" -#: gtk/gtktextbufferserialize.c:1024 +#: ../gtk/gtktextbufferserialize.c:1030 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Etîketa \"%s\" ne hatiye danasîn." -#: gtk/gtktextbufferserialize.c:1036 +#: ../gtk/gtktextbufferserialize.c:1042 msgid "Anonymous tag found and tags can not be created." msgstr "Etîketa anonîm hate dîtin û etîket nikarin werin afirandin." -#: gtk/gtktextbufferserialize.c:1047 +#: ../gtk/gtktextbufferserialize.c:1053 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "" "Etîketa \"%s\" di tamponê de nayê xuyakirin û etîket nikare were afirandin." -#: gtk/gtktextbufferserialize.c:1146 gtk/gtktextbufferserialize.c:1221 -#: gtk/gtktextbufferserialize.c:1324 gtk/gtktextbufferserialize.c:1398 +#: ../gtk/gtktextbufferserialize.c:1152 ../gtk/gtktextbufferserialize.c:1227 +#: ../gtk/gtktextbufferserialize.c:1332 ../gtk/gtktextbufferserialize.c:1406 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Endam <%s> ne derbasbare li jêr <%s>" -#: gtk/gtktextbufferserialize.c:1177 +#: ../gtk/gtktextbufferserialize.c:1183 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" ne cureyeke derbasbar ê pêşbîrê ye" -#: gtk/gtktextbufferserialize.c:1185 +#: ../gtk/gtktextbufferserialize.c:1191 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" ne navekî derbasbare ji bo pêşbîrê" -#: gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1201 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" @@ -2761,139 +2681,139 @@ msgstr "" "\"%s\" nikare were veguhertin ji bo nirxa cureyê \"%s\" yê nirxdariya \"%s\" " "ye" -#: gtk/gtktextbufferserialize.c:1204 +#: ../gtk/gtktextbufferserialize.c:1210 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" Ne nirxeke derbasbare ji bo \"%s\"" -#: gtk/gtktextbufferserialize.c:1289 +#: ../gtk/gtktextbufferserialize.c:1295 #, c-format msgid "Tag \"%s\" already defined" msgstr "Etîketa \"%s\" berê hatiye danasîn" -#: gtk/gtktextbufferserialize.c:1300 +#: ../gtk/gtktextbufferserialize.c:1308 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Etîketa \"%s\" xwedî destûreke ne derbasbare \"%s\"" -#: gtk/gtktextbufferserialize.c:1353 +#: ../gtk/gtktextbufferserialize.c:1361 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "" "Hêmana herî derve ya di nivîsê de ye divê be, divê ne <" "%s> be" -#: gtk/gtktextbufferserialize.c:1362 gtk/gtktextbufferserialize.c:1378 +#: ../gtk/gtktextbufferserialize.c:1370 ../gtk/gtktextbufferserialize.c:1386 #, c-format msgid "A <%s> element has already been specified" msgstr "Endamekî <%s> berê hatiye taybetkirin" -#: gtk/gtktextbufferserialize.c:1384 +#: ../gtk/gtktextbufferserialize.c:1392 msgid "A element can't occur before a element" msgstr "Endamê nikare berî endamê xuya bike" -#: gtk/gtktextbufferserialize.c:1784 +#: ../gtk/gtktextbufferserialize.c:1792 msgid "Serialized data is malformed" msgstr "Daneya vegerandî xirabûye" -#: gtk/gtktextbufferserialize.c:1862 +#: ../gtk/gtktextbufferserialize.c:1870 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" "Xirakirina Daneya vegerandî. Beşa destpêkê ne eve GTKTEXTBUFFERCONTENTS-0001" -#: gtk/gtktextutil.c:60 +#: ../gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" msgstr "LRM nîşankirina ji çepê ya ber bi rastê ve" -#: gtk/gtktextutil.c:61 +#: ../gtk/gtktextutil.c:61 msgid "RLM _Right-to-left mark" msgstr "Nîşankirina ji rastê ber bi çepê ya RLM" -#: gtk/gtktextutil.c:62 +#: ../gtk/gtktextutil.c:62 msgid "LRE Left-to-right _embedding" msgstr "LRE ji çepê ber bi rastê de" -#: gtk/gtktextutil.c:63 +#: ../gtk/gtktextutil.c:63 msgid "RLE Right-to-left e_mbedding" msgstr "RLE ji rastê ber bi çepê de_" -#: gtk/gtktextutil.c:64 +#: ../gtk/gtktextutil.c:64 msgid "LRO Left-to-right _override" msgstr "LRO ji çepê-ya- ber bi rastê de_guhnedan" -#: gtk/gtktextutil.c:65 +#: ../gtk/gtktextutil.c:65 msgid "RLO Right-to-left o_verride" msgstr "RLO zordayîna ji çepê_ya ber bi rastê" -#: gtk/gtktextutil.c:66 +#: ../gtk/gtktextutil.c:66 msgid "PDF _Pop directional formatting" msgstr "Dirûvkirina alî ya PDF_POP" -#: gtk/gtktextutil.c:67 +#: ../gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" msgstr "Qada firehbûna sifirê_ya ZWS" -#: gtk/gtktextutil.c:68 +#: ../gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" msgstr "ZWJ di firehiya sifirê de_ bi gîrêdan" -#: gtk/gtktextutil.c:69 +#: ../gtk/gtktextutil.c:69 msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ di firehiya sifirê de_ bê girêdan" -#: gtk/gtkthemes.c:72 +#: ../gtk/gtkthemes.c:72 #, c-format msgid "Unable to locate theme engine in module_path: \"%s\"," msgstr "Cîhaza têmayan di hundirê module_path \"%s\" de nehate dîtin," -#: gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1505 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Etîketa destpêkirinê ya tu ne li hêvîyê bû '%s' rêzik %d karakter %d" -#: gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1595 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Daneyê karakteran ya tu ne li hêviyê bû, rêzik %d karakter %d" -#: gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2427 msgid "Empty" msgstr "Vala" -#: gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Deng" -#: gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "" -#: gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "" -#: gtk/gtkvolumebutton.c:94 gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Kêmtir Deng" -#: gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "" -#: gtk/gtkvolumebutton.c:100 gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Zêdetir Deng" -#: gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "" -#: gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Bêdeng" -#: gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Tam Deng" @@ -2902,989 +2822,987 @@ msgstr "Tam Deng" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" msgstr "" -#: gtk/paper_names_offsets.c:4 +#: ../gtk/paper_names_offsets.c:4 #, fuzzy msgctxt "paper size" msgid "asme_f" msgstr "Nav" -#: gtk/paper_names_offsets.c:5 +#: ../gtk/paper_names_offsets.c:5 msgctxt "paper size" msgid "A0x2" -msgstr "" +msgstr "A0x2" -#: gtk/paper_names_offsets.c:6 +#: ../gtk/paper_names_offsets.c:6 msgctxt "paper size" msgid "A0" -msgstr "" +msgstr "A0" -#: gtk/paper_names_offsets.c:7 +#: ../gtk/paper_names_offsets.c:7 msgctxt "paper size" msgid "A0x3" -msgstr "" +msgstr "A0x3" -#: gtk/paper_names_offsets.c:8 +#: ../gtk/paper_names_offsets.c:8 msgctxt "paper size" msgid "A1" -msgstr "" +msgstr "A1" -#: gtk/paper_names_offsets.c:9 +#: ../gtk/paper_names_offsets.c:9 msgctxt "paper size" msgid "A10" -msgstr "" +msgstr "A10" -#: gtk/paper_names_offsets.c:10 +#: ../gtk/paper_names_offsets.c:10 msgctxt "paper size" msgid "A1x3" -msgstr "" +msgstr "A1x3" -#: gtk/paper_names_offsets.c:11 +#: ../gtk/paper_names_offsets.c:11 msgctxt "paper size" msgid "A1x4" -msgstr "" +msgstr "A1x4" -#: gtk/paper_names_offsets.c:12 +#: ../gtk/paper_names_offsets.c:12 msgctxt "paper size" msgid "A2" -msgstr "" +msgstr "A2" -#: gtk/paper_names_offsets.c:13 +#: ../gtk/paper_names_offsets.c:13 msgctxt "paper size" msgid "A2x3" -msgstr "" +msgstr "A2x3" -#: gtk/paper_names_offsets.c:14 +#: ../gtk/paper_names_offsets.c:14 msgctxt "paper size" msgid "A2x4" -msgstr "" +msgstr "A2x4" -#: gtk/paper_names_offsets.c:15 +#: ../gtk/paper_names_offsets.c:15 msgctxt "paper size" msgid "A2x5" -msgstr "" +msgstr "A2x5" -#: gtk/paper_names_offsets.c:16 +#: ../gtk/paper_names_offsets.c:16 msgctxt "paper size" msgid "A3" -msgstr "" +msgstr "A3" -#: gtk/paper_names_offsets.c:17 +#: ../gtk/paper_names_offsets.c:17 msgctxt "paper size" msgid "A3 Extra" -msgstr "" +msgstr "A3 Extra" -#: gtk/paper_names_offsets.c:18 +#: ../gtk/paper_names_offsets.c:18 msgctxt "paper size" msgid "A3x3" -msgstr "" +msgstr "A3x3" -#: gtk/paper_names_offsets.c:19 +#: ../gtk/paper_names_offsets.c:19 msgctxt "paper size" msgid "A3x4" -msgstr "" +msgstr "A3x4" -#: gtk/paper_names_offsets.c:20 +#: ../gtk/paper_names_offsets.c:20 msgctxt "paper size" msgid "A3x5" -msgstr "" +msgstr "A3x5" -#: gtk/paper_names_offsets.c:21 +#: ../gtk/paper_names_offsets.c:21 msgctxt "paper size" msgid "A3x6" -msgstr "" +msgstr "A3x6" -#: gtk/paper_names_offsets.c:22 +#: ../gtk/paper_names_offsets.c:22 msgctxt "paper size" msgid "A3x7" -msgstr "" +msgstr "A3x7" -#: gtk/paper_names_offsets.c:23 +#: ../gtk/paper_names_offsets.c:23 msgctxt "paper size" msgid "A4" -msgstr "" +msgstr "A4" -#: gtk/paper_names_offsets.c:24 +#: ../gtk/paper_names_offsets.c:24 msgctxt "paper size" msgid "A4 Extra" -msgstr "" +msgstr "A4 Extra" -#: gtk/paper_names_offsets.c:25 +#: ../gtk/paper_names_offsets.c:25 msgctxt "paper size" msgid "A4 Tab" -msgstr "" +msgstr "A4 Tab" -#: gtk/paper_names_offsets.c:26 +#: ../gtk/paper_names_offsets.c:26 msgctxt "paper size" msgid "A4x3" -msgstr "" +msgstr "A4x3" -#: gtk/paper_names_offsets.c:27 +#: ../gtk/paper_names_offsets.c:27 msgctxt "paper size" msgid "A4x4" -msgstr "" +msgstr "A4x4" -#: gtk/paper_names_offsets.c:28 +#: ../gtk/paper_names_offsets.c:28 msgctxt "paper size" msgid "A4x5" -msgstr "" +msgstr "A4x5" -#: gtk/paper_names_offsets.c:29 +#: ../gtk/paper_names_offsets.c:29 msgctxt "paper size" msgid "A4x6" -msgstr "" +msgstr "A4x6" -#: gtk/paper_names_offsets.c:30 +#: ../gtk/paper_names_offsets.c:30 msgctxt "paper size" msgid "A4x7" -msgstr "" +msgstr "A4x7" -#: gtk/paper_names_offsets.c:31 +#: ../gtk/paper_names_offsets.c:31 msgctxt "paper size" msgid "A4x8" -msgstr "" +msgstr "A4x8" -#: gtk/paper_names_offsets.c:32 +#: ../gtk/paper_names_offsets.c:32 msgctxt "paper size" msgid "A4x9" -msgstr "" +msgstr "A4x9" -#: gtk/paper_names_offsets.c:33 +#: ../gtk/paper_names_offsets.c:33 msgctxt "paper size" msgid "A5" -msgstr "" +msgstr "A5" -#: gtk/paper_names_offsets.c:34 +#: ../gtk/paper_names_offsets.c:34 msgctxt "paper size" msgid "A5 Extra" -msgstr "" +msgstr "A5 Extra" -#: gtk/paper_names_offsets.c:35 +#: ../gtk/paper_names_offsets.c:35 msgctxt "paper size" msgid "A6" -msgstr "" +msgstr "A6" -#: gtk/paper_names_offsets.c:36 +#: ../gtk/paper_names_offsets.c:36 msgctxt "paper size" msgid "A7" -msgstr "" +msgstr "A7" -#: gtk/paper_names_offsets.c:37 +#: ../gtk/paper_names_offsets.c:37 msgctxt "paper size" msgid "A8" -msgstr "" +msgstr "A8" -#: gtk/paper_names_offsets.c:38 +#: ../gtk/paper_names_offsets.c:38 msgctxt "paper size" msgid "A9" -msgstr "" +msgstr "A9" -#: gtk/paper_names_offsets.c:39 +#: ../gtk/paper_names_offsets.c:39 msgctxt "paper size" msgid "B0" -msgstr "" +msgstr "B0" -#: gtk/paper_names_offsets.c:40 +#: ../gtk/paper_names_offsets.c:40 msgctxt "paper size" msgid "B1" -msgstr "" +msgstr "B1" -#: gtk/paper_names_offsets.c:41 +#: ../gtk/paper_names_offsets.c:41 msgctxt "paper size" msgid "B10" -msgstr "" +msgstr "B10" -#: gtk/paper_names_offsets.c:42 +#: ../gtk/paper_names_offsets.c:42 msgctxt "paper size" msgid "B2" -msgstr "" +msgstr "B2" -#: gtk/paper_names_offsets.c:43 +#: ../gtk/paper_names_offsets.c:43 msgctxt "paper size" msgid "B3" -msgstr "" +msgstr "B3" -#: gtk/paper_names_offsets.c:44 +#: ../gtk/paper_names_offsets.c:44 msgctxt "paper size" msgid "B4" -msgstr "" +msgstr "B4" -#: gtk/paper_names_offsets.c:45 +#: ../gtk/paper_names_offsets.c:45 msgctxt "paper size" msgid "B5" -msgstr "" +msgstr "B5" -#: gtk/paper_names_offsets.c:46 +#: ../gtk/paper_names_offsets.c:46 msgctxt "paper size" msgid "B5 Extra" -msgstr "" +msgstr "B5 Extra" -#: gtk/paper_names_offsets.c:47 +#: ../gtk/paper_names_offsets.c:47 msgctxt "paper size" msgid "B6" -msgstr "" +msgstr "B6" -#: gtk/paper_names_offsets.c:48 +#: ../gtk/paper_names_offsets.c:48 msgctxt "paper size" msgid "B6/C4" -msgstr "" +msgstr "B6/C4" -#: gtk/paper_names_offsets.c:49 +#: ../gtk/paper_names_offsets.c:49 msgctxt "paper size" msgid "B7" -msgstr "" +msgstr "B7" -#: gtk/paper_names_offsets.c:50 +#: ../gtk/paper_names_offsets.c:50 msgctxt "paper size" msgid "B8" -msgstr "" +msgstr "B8" -#: gtk/paper_names_offsets.c:51 +#: ../gtk/paper_names_offsets.c:51 msgctxt "paper size" msgid "B9" -msgstr "" +msgstr "B9" -#: gtk/paper_names_offsets.c:52 +#: ../gtk/paper_names_offsets.c:52 msgctxt "paper size" msgid "C0" -msgstr "" +msgstr "C0" -#: gtk/paper_names_offsets.c:53 +#: ../gtk/paper_names_offsets.c:53 msgctxt "paper size" msgid "C1" -msgstr "" +msgstr "C1" -#: gtk/paper_names_offsets.c:54 +#: ../gtk/paper_names_offsets.c:54 msgctxt "paper size" msgid "C10" -msgstr "" +msgstr "C10" -#: gtk/paper_names_offsets.c:55 +#: ../gtk/paper_names_offsets.c:55 msgctxt "paper size" msgid "C2" -msgstr "" +msgstr "C2" -#: gtk/paper_names_offsets.c:56 +#: ../gtk/paper_names_offsets.c:56 msgctxt "paper size" msgid "C3" -msgstr "" +msgstr "C3" -#: gtk/paper_names_offsets.c:57 +#: ../gtk/paper_names_offsets.c:57 msgctxt "paper size" msgid "C4" -msgstr "" +msgstr "C4" -#: gtk/paper_names_offsets.c:58 +#: ../gtk/paper_names_offsets.c:58 msgctxt "paper size" msgid "C5" -msgstr "" +msgstr "C5" -#: gtk/paper_names_offsets.c:59 +#: ../gtk/paper_names_offsets.c:59 msgctxt "paper size" msgid "C6" -msgstr "" +msgstr "C6" -#: gtk/paper_names_offsets.c:60 +#: ../gtk/paper_names_offsets.c:60 msgctxt "paper size" msgid "C6/C5" -msgstr "" +msgstr "C6/C5" -#: gtk/paper_names_offsets.c:61 +#: ../gtk/paper_names_offsets.c:61 msgctxt "paper size" msgid "C7" -msgstr "" +msgstr "C7" -#: gtk/paper_names_offsets.c:62 +#: ../gtk/paper_names_offsets.c:62 msgctxt "paper size" msgid "C7/C6" -msgstr "" +msgstr "C7/C6" -#: gtk/paper_names_offsets.c:63 +#: ../gtk/paper_names_offsets.c:63 msgctxt "paper size" msgid "C8" -msgstr "" +msgstr "C8" -#: gtk/paper_names_offsets.c:64 +#: ../gtk/paper_names_offsets.c:64 msgctxt "paper size" msgid "C9" -msgstr "" +msgstr "C9" -#: gtk/paper_names_offsets.c:65 -#, fuzzy +#: ../gtk/paper_names_offsets.c:65 msgctxt "paper size" msgid "DL Envelope" -msgstr "DL Envelope" +msgstr "" -#: gtk/paper_names_offsets.c:66 +#: ../gtk/paper_names_offsets.c:66 msgctxt "paper size" msgid "RA0" -msgstr "" +msgstr "RA0" -#: gtk/paper_names_offsets.c:67 +#: ../gtk/paper_names_offsets.c:67 msgctxt "paper size" msgid "RA1" -msgstr "" +msgstr "RA1" -#: gtk/paper_names_offsets.c:68 +#: ../gtk/paper_names_offsets.c:68 msgctxt "paper size" msgid "RA2" -msgstr "" +msgstr "RA2" -#: gtk/paper_names_offsets.c:69 +#: ../gtk/paper_names_offsets.c:69 msgctxt "paper size" msgid "SRA0" -msgstr "" +msgstr "SRA0" -#: gtk/paper_names_offsets.c:70 +#: ../gtk/paper_names_offsets.c:70 msgctxt "paper size" msgid "SRA1" -msgstr "" +msgstr "SRA1" -#: gtk/paper_names_offsets.c:71 +#: ../gtk/paper_names_offsets.c:71 msgctxt "paper size" msgid "SRA2" -msgstr "" +msgstr "SRA2" -#: gtk/paper_names_offsets.c:72 +#: ../gtk/paper_names_offsets.c:72 msgctxt "paper size" msgid "JB0" -msgstr "" +msgstr "JB0" -#: gtk/paper_names_offsets.c:73 +#: ../gtk/paper_names_offsets.c:73 msgctxt "paper size" msgid "JB1" -msgstr "" +msgstr "JB1" -#: gtk/paper_names_offsets.c:74 +#: ../gtk/paper_names_offsets.c:74 msgctxt "paper size" msgid "JB10" -msgstr "" +msgstr "JB10" -#: gtk/paper_names_offsets.c:75 +#: ../gtk/paper_names_offsets.c:75 msgctxt "paper size" msgid "JB2" -msgstr "" +msgstr "JB2" -#: gtk/paper_names_offsets.c:76 +#: ../gtk/paper_names_offsets.c:76 msgctxt "paper size" msgid "JB3" -msgstr "" +msgstr "JB3" -#: gtk/paper_names_offsets.c:77 +#: ../gtk/paper_names_offsets.c:77 msgctxt "paper size" msgid "JB4" -msgstr "" +msgstr "JB4" -#: gtk/paper_names_offsets.c:78 +#: ../gtk/paper_names_offsets.c:78 msgctxt "paper size" msgid "JB5" -msgstr "" +msgstr "JB5" -#: gtk/paper_names_offsets.c:79 +#: ../gtk/paper_names_offsets.c:79 msgctxt "paper size" msgid "JB6" -msgstr "" +msgstr "JB6" -#: gtk/paper_names_offsets.c:80 +#: ../gtk/paper_names_offsets.c:80 msgctxt "paper size" msgid "JB7" -msgstr "" +msgstr "JB7" -#: gtk/paper_names_offsets.c:81 +#: ../gtk/paper_names_offsets.c:81 msgctxt "paper size" msgid "JB8" -msgstr "" +msgstr "JB8" -#: gtk/paper_names_offsets.c:82 +#: ../gtk/paper_names_offsets.c:82 msgctxt "paper size" msgid "JB9" -msgstr "" +msgstr "JB9" -#: gtk/paper_names_offsets.c:83 +#: ../gtk/paper_names_offsets.c:83 msgctxt "paper size" msgid "jis exec" msgstr "" -#: gtk/paper_names_offsets.c:84 +#: ../gtk/paper_names_offsets.c:84 #, fuzzy msgctxt "paper size" msgid "Choukei 2 Envelope" msgstr "Choukei 2 Envelope" -#: gtk/paper_names_offsets.c:85 +#: ../gtk/paper_names_offsets.c:85 #, fuzzy msgctxt "paper size" msgid "Choukei 3 Envelope" msgstr "Choukei 3 Envelope" -#: gtk/paper_names_offsets.c:86 +#: ../gtk/paper_names_offsets.c:86 #, fuzzy msgctxt "paper size" msgid "Choukei 4 Envelope" msgstr "Choukei 4 Envelope" -#: gtk/paper_names_offsets.c:87 +#: ../gtk/paper_names_offsets.c:87 #, fuzzy msgctxt "paper size" msgid "hagaki (postcard)" msgstr "hagaki (postcard)" -#: gtk/paper_names_offsets.c:88 +#: ../gtk/paper_names_offsets.c:88 #, fuzzy msgctxt "paper size" msgid "kahu Envelope" msgstr "kahu Envelope" -#: gtk/paper_names_offsets.c:89 +#: ../gtk/paper_names_offsets.c:89 #, fuzzy msgctxt "paper size" msgid "kaku2 Envelope" msgstr "kaku2 Envelope" -#: gtk/paper_names_offsets.c:90 +#: ../gtk/paper_names_offsets.c:90 #, fuzzy msgctxt "paper size" msgid "oufuku (reply postcard)" msgstr "oufuku (reply postcard)" -#: gtk/paper_names_offsets.c:91 +#: ../gtk/paper_names_offsets.c:91 #, fuzzy msgctxt "paper size" msgid "you4 Envelope" msgstr "you4 Envelope" -#: gtk/paper_names_offsets.c:92 +#: ../gtk/paper_names_offsets.c:92 msgctxt "paper size" msgid "10x11" -msgstr "" +msgstr "10x11" -#: gtk/paper_names_offsets.c:93 +#: ../gtk/paper_names_offsets.c:93 msgctxt "paper size" msgid "10x13" -msgstr "" +msgstr "10x13" -#: gtk/paper_names_offsets.c:94 +#: ../gtk/paper_names_offsets.c:94 msgctxt "paper size" msgid "10x14" -msgstr "" +msgstr "10x14" -#: gtk/paper_names_offsets.c:95 gtk/paper_names_offsets.c:96 +#: ../gtk/paper_names_offsets.c:95 ../gtk/paper_names_offsets.c:96 msgctxt "paper size" msgid "10x15" -msgstr "" +msgstr "10x15" -#: gtk/paper_names_offsets.c:97 +#: ../gtk/paper_names_offsets.c:97 msgctxt "paper size" msgid "11x12" -msgstr "" +msgstr "11x12" -#: gtk/paper_names_offsets.c:98 +#: ../gtk/paper_names_offsets.c:98 msgctxt "paper size" msgid "11x15" -msgstr "" +msgstr "11x15" -#: gtk/paper_names_offsets.c:99 +#: ../gtk/paper_names_offsets.c:99 msgctxt "paper size" msgid "12x19" -msgstr "" +msgstr "12x19" -#: gtk/paper_names_offsets.c:100 +#: ../gtk/paper_names_offsets.c:100 msgctxt "paper size" msgid "5x7" -msgstr "" +msgstr "5x7" -#: gtk/paper_names_offsets.c:101 +#: ../gtk/paper_names_offsets.c:101 #, fuzzy msgctxt "paper size" msgid "6x9 Envelope" msgstr "6x9 Envelope" -#: gtk/paper_names_offsets.c:102 +#: ../gtk/paper_names_offsets.c:102 #, fuzzy msgctxt "paper size" msgid "7x9 Envelope" msgstr "7x9 Envelope" -#: gtk/paper_names_offsets.c:103 +#: ../gtk/paper_names_offsets.c:103 #, fuzzy msgctxt "paper size" msgid "9x11 Envelope" msgstr "9x11 Envelope" -#: gtk/paper_names_offsets.c:104 +#: ../gtk/paper_names_offsets.c:104 #, fuzzy msgctxt "paper size" msgid "a2 Envelope" msgstr "a2 Envelope" -#: gtk/paper_names_offsets.c:105 +#: ../gtk/paper_names_offsets.c:105 msgctxt "paper size" msgid "Arch A" msgstr "" -#: gtk/paper_names_offsets.c:106 +#: ../gtk/paper_names_offsets.c:106 msgctxt "paper size" msgid "Arch B" msgstr "" -#: gtk/paper_names_offsets.c:107 +#: ../gtk/paper_names_offsets.c:107 msgctxt "paper size" msgid "Arch C" msgstr "" -#: gtk/paper_names_offsets.c:108 +#: ../gtk/paper_names_offsets.c:108 msgctxt "paper size" msgid "Arch D" msgstr "" -#: gtk/paper_names_offsets.c:109 +#: ../gtk/paper_names_offsets.c:109 msgctxt "paper size" msgid "Arch E" msgstr "" -#: gtk/paper_names_offsets.c:110 +#: ../gtk/paper_names_offsets.c:110 msgctxt "paper size" msgid "b-plus" msgstr "" -#: gtk/paper_names_offsets.c:111 +#: ../gtk/paper_names_offsets.c:111 msgctxt "paper size" msgid "c" msgstr "" -#: gtk/paper_names_offsets.c:112 +#: ../gtk/paper_names_offsets.c:112 #, fuzzy msgctxt "paper size" msgid "c5 Envelope" msgstr "c5 Envelope" -#: gtk/paper_names_offsets.c:113 +#: ../gtk/paper_names_offsets.c:113 msgctxt "paper size" msgid "d" msgstr "" -#: gtk/paper_names_offsets.c:114 +#: ../gtk/paper_names_offsets.c:114 msgctxt "paper size" msgid "e" msgstr "" -#: gtk/paper_names_offsets.c:115 +#: ../gtk/paper_names_offsets.c:115 msgctxt "paper size" msgid "edp" msgstr "" -#: gtk/paper_names_offsets.c:116 +#: ../gtk/paper_names_offsets.c:116 #, fuzzy msgctxt "paper size" msgid "European edp" msgstr "edp ya ewropî" -#: gtk/paper_names_offsets.c:117 +#: ../gtk/paper_names_offsets.c:117 #, fuzzy msgctxt "paper size" msgid "Executive" msgstr "Bisepîne" -#: gtk/paper_names_offsets.c:118 +#: ../gtk/paper_names_offsets.c:118 msgctxt "paper size" msgid "f" msgstr "" -#: gtk/paper_names_offsets.c:119 +#: ../gtk/paper_names_offsets.c:119 #, fuzzy msgctxt "paper size" msgid "FanFold European" msgstr "FanFold European" -#: gtk/paper_names_offsets.c:120 +#: ../gtk/paper_names_offsets.c:120 #, fuzzy msgctxt "paper size" msgid "FanFold US" msgstr "FanFold US" -#: gtk/paper_names_offsets.c:121 +#: ../gtk/paper_names_offsets.c:121 #, fuzzy msgctxt "paper size" msgid "FanFold German Legal" msgstr "FanFold German Legal" -#: gtk/paper_names_offsets.c:122 +#: ../gtk/paper_names_offsets.c:122 #, fuzzy msgctxt "paper size" msgid "Government Legal" msgstr "Government Legal" -#: gtk/paper_names_offsets.c:123 +#: ../gtk/paper_names_offsets.c:123 #, fuzzy msgctxt "paper size" msgid "Government Letter" msgstr "Government Letter" -#: gtk/paper_names_offsets.c:124 +#: ../gtk/paper_names_offsets.c:124 #, fuzzy msgctxt "paper size" msgid "Index 3x5" msgstr "_Pêrist" -#: gtk/paper_names_offsets.c:125 +#: ../gtk/paper_names_offsets.c:125 #, fuzzy msgctxt "paper size" msgid "Index 4x6 (postcard)" msgstr "Index 4x6 (kart)" -#: gtk/paper_names_offsets.c:126 +#: ../gtk/paper_names_offsets.c:126 #, fuzzy msgctxt "paper size" msgid "Index 4x6 ext" msgstr "Index 4x6 ext" -#: gtk/paper_names_offsets.c:127 +#: ../gtk/paper_names_offsets.c:127 #, fuzzy msgctxt "paper size" msgid "Index 5x8" msgstr "_Pêrist" -#: gtk/paper_names_offsets.c:128 +#: ../gtk/paper_names_offsets.c:128 msgctxt "paper size" msgid "Invoice" msgstr "" -#: gtk/paper_names_offsets.c:129 +#: ../gtk/paper_names_offsets.c:129 msgctxt "paper size" msgid "Tabloid" msgstr "" -#: gtk/paper_names_offsets.c:130 +#: ../gtk/paper_names_offsets.c:130 msgctxt "paper size" msgid "US Legal" -msgstr "" +msgstr "US Legal" -#: gtk/paper_names_offsets.c:131 +#: ../gtk/paper_names_offsets.c:131 #, fuzzy msgctxt "paper size" msgid "US Legal Extra" msgstr "US Legal Extra" -#: gtk/paper_names_offsets.c:132 -#, fuzzy +#: ../gtk/paper_names_offsets.c:132 msgctxt "paper size" msgid "US Letter" msgstr "US Letter" -#: gtk/paper_names_offsets.c:133 +#: ../gtk/paper_names_offsets.c:133 #, fuzzy msgctxt "paper size" msgid "US Letter Extra" msgstr "US Letter Extra" -#: gtk/paper_names_offsets.c:134 +#: ../gtk/paper_names_offsets.c:134 #, fuzzy msgctxt "paper size" msgid "US Letter Plus" msgstr "US Letter Plus" -#: gtk/paper_names_offsets.c:135 +#: ../gtk/paper_names_offsets.c:135 #, fuzzy msgctxt "paper size" msgid "Monarch Envelope" msgstr "Monarch Envelope" -#: gtk/paper_names_offsets.c:136 +#: ../gtk/paper_names_offsets.c:136 #, fuzzy msgctxt "paper size" msgid "#10 Envelope" msgstr "#10 Envelope" -#: gtk/paper_names_offsets.c:137 +#: ../gtk/paper_names_offsets.c:137 #, fuzzy msgctxt "paper size" msgid "#11 Envelope" msgstr "#11 Envelope" -#: gtk/paper_names_offsets.c:138 +#: ../gtk/paper_names_offsets.c:138 #, fuzzy msgctxt "paper size" msgid "#12 Envelope" msgstr "#12 Envelope" -#: gtk/paper_names_offsets.c:139 +#: ../gtk/paper_names_offsets.c:139 #, fuzzy msgctxt "paper size" msgid "#14 Envelope" msgstr "#14 Envelope" -#: gtk/paper_names_offsets.c:140 +#: ../gtk/paper_names_offsets.c:140 #, fuzzy msgctxt "paper size" msgid "#9 Envelope" msgstr "#9 Envelope" -#: gtk/paper_names_offsets.c:141 +#: ../gtk/paper_names_offsets.c:141 #, fuzzy msgctxt "paper size" msgid "Personal Envelope" msgstr "Personal Envelope" -#: gtk/paper_names_offsets.c:142 +#: ../gtk/paper_names_offsets.c:142 msgctxt "paper size" msgid "Quarto" msgstr "" -#: gtk/paper_names_offsets.c:143 +#: ../gtk/paper_names_offsets.c:143 #, fuzzy msgctxt "paper size" msgid "Super A" msgstr "Kaxiz" -#: gtk/paper_names_offsets.c:144 +#: ../gtk/paper_names_offsets.c:144 #, fuzzy msgctxt "paper size" msgid "Super B" msgstr "Kaxiz" -#: gtk/paper_names_offsets.c:145 +#: ../gtk/paper_names_offsets.c:145 #, fuzzy msgctxt "paper size" msgid "Wide Format" msgstr "Teşeya fireh" -#: gtk/paper_names_offsets.c:146 +#: ../gtk/paper_names_offsets.c:146 #, fuzzy msgctxt "paper size" msgid "Dai-pa-kai" msgstr "Dai-pa-kai" -#: gtk/paper_names_offsets.c:147 +#: ../gtk/paper_names_offsets.c:147 #, fuzzy msgctxt "paper size" msgid "Folio" msgstr "Reng" -#: gtk/paper_names_offsets.c:148 +#: ../gtk/paper_names_offsets.c:148 msgctxt "paper size" msgid "Folio sp" msgstr "" -#: gtk/paper_names_offsets.c:149 +#: ../gtk/paper_names_offsets.c:149 #, fuzzy msgctxt "paper size" msgid "Invite Envelope" msgstr "Invite Envelope" -#: gtk/paper_names_offsets.c:150 +#: ../gtk/paper_names_offsets.c:150 #, fuzzy msgctxt "paper size" msgid "Italian Envelope" msgstr "Italian Envelope" -#: gtk/paper_names_offsets.c:151 +#: ../gtk/paper_names_offsets.c:151 #, fuzzy msgctxt "paper size" msgid "juuro-ku-kai" msgstr "juuro-ku-kai" -#: gtk/paper_names_offsets.c:152 +#: ../gtk/paper_names_offsets.c:152 msgctxt "paper size" msgid "pa-kai" msgstr "" -#: gtk/paper_names_offsets.c:153 +#: ../gtk/paper_names_offsets.c:153 #, fuzzy msgctxt "paper size" msgid "Postfix Envelope" msgstr "Postfix Envelope" -#: gtk/paper_names_offsets.c:154 +#: ../gtk/paper_names_offsets.c:154 #, fuzzy msgctxt "paper size" msgid "Small Photo" msgstr "Small Photo" -#: gtk/paper_names_offsets.c:155 +#: ../gtk/paper_names_offsets.c:155 #, fuzzy msgctxt "paper size" msgid "prc1 Envelope" msgstr "prc1 Envelope" -#: gtk/paper_names_offsets.c:156 +#: ../gtk/paper_names_offsets.c:156 #, fuzzy msgctxt "paper size" msgid "prc10 Envelope" msgstr "prc10 Envelope" -#: gtk/paper_names_offsets.c:157 +#: ../gtk/paper_names_offsets.c:157 msgctxt "paper size" msgid "prc 16k" msgstr "" -#: gtk/paper_names_offsets.c:158 +#: ../gtk/paper_names_offsets.c:158 #, fuzzy msgctxt "paper size" msgid "prc2 Envelope" msgstr "prc2 Envelope" -#: gtk/paper_names_offsets.c:159 +#: ../gtk/paper_names_offsets.c:159 #, fuzzy msgctxt "paper size" msgid "prc3 Envelope" msgstr "prc3 Envelope" -#: gtk/paper_names_offsets.c:160 +#: ../gtk/paper_names_offsets.c:160 msgctxt "paper size" msgid "prc 32k" msgstr "" -#: gtk/paper_names_offsets.c:161 +#: ../gtk/paper_names_offsets.c:161 #, fuzzy msgctxt "paper size" msgid "prc4 Envelope" msgstr "prc4 Envelope" -#: gtk/paper_names_offsets.c:162 +#: ../gtk/paper_names_offsets.c:162 #, fuzzy msgctxt "paper size" msgid "prc5 Envelope" msgstr "c5 Envelope" -#: gtk/paper_names_offsets.c:163 +#: ../gtk/paper_names_offsets.c:163 #, fuzzy msgctxt "paper size" msgid "prc6 Envelope" msgstr "Enveloppe prc6" -#: gtk/paper_names_offsets.c:164 +#: ../gtk/paper_names_offsets.c:164 #, fuzzy msgctxt "paper size" msgid "prc7 Envelope" msgstr "prc7 Envelope" -#: gtk/paper_names_offsets.c:165 +#: ../gtk/paper_names_offsets.c:165 #, fuzzy msgctxt "paper size" msgid "prc8 Envelope" msgstr "prc8 Envelope" -#: gtk/paper_names_offsets.c:166 +#: ../gtk/paper_names_offsets.c:166 #, fuzzy msgctxt "paper size" msgid "prc9 Envelope" msgstr "prc1 Envelope" -#: gtk/paper_names_offsets.c:167 +#: ../gtk/paper_names_offsets.c:167 msgctxt "paper size" msgid "ROC 16k" msgstr "" -#: gtk/paper_names_offsets.c:168 +#: ../gtk/paper_names_offsets.c:168 msgctxt "paper size" msgid "ROC 8k" msgstr "" -#: gtk/updateiconcache.c:492 gtk/updateiconcache.c:552 +#: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 #, c-format msgid "different idatas found for symlinked '%s' and '%s'\n" msgstr "Gelek idata ji bo symlinka '%s' û '%s' hatin dîtin\n" -#: gtk/updateiconcache.c:1374 +#: ../gtk/updateiconcache.c:1374 #, c-format msgid "Failed to write header\n" msgstr "Di sernivîsê de têkçûn\n" -#: gtk/updateiconcache.c:1380 +#: ../gtk/updateiconcache.c:1380 #, c-format msgid "Failed to write hash table\n" msgstr "Çewtî di nivisandina hash tabloyê de\n" -#: gtk/updateiconcache.c:1386 +#: ../gtk/updateiconcache.c:1386 #, c-format msgid "Failed to write folder index\n" msgstr "Nivisîna pêrista peldankê biserneket\n" -#: gtk/updateiconcache.c:1394 +#: ../gtk/updateiconcache.c:1394 #, c-format msgid "Failed to rewrite header\n" msgstr "Ji nû nivisîna sernivîsê biserneket\n" -#: gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, fuzzy, c-format msgid "Failed to open file %s : %s\n" msgstr "Vekirina pelê '%s' biserneket: %s" -#: gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Nivisîna pelê pêşbîrê biserneket: %s\n" -#: gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "Pêşbîra afirandî nederbasdar bû.\n" -#: gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "Nikare ji nû nav li pelê %s bike ji bo %s: %s, wê gavê %s jê dibe\n" -#: gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "Nikare ji nû nav li pelê %s bike ji bo %s: %s\n" -#: gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "Nikare %s ji nû nav lê bike, vegere %s: %s.\n" -#: gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Pelê pêşbîr bi rengekî serkeftî hate afirandin.\n" -#: gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Wê li ser pêşbîreke heyî were nivîsîn, ew rojane be jî" -#: gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Kontrol neke bê ka index.theme heye yan jî tuneye" -#: gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Di pêşbîrê de daneya wêne tuneye" -#: gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Derana pelekî C header" -#: gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Derana kîtekît bigire" -#: gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Pêşbîra îkonan a heyî kontrol bike" -#: gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "Pel nehat dîtin: %s\n" -#: gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Pêşbîra îkonan a nederbasdar: %s\n" -#: gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "" -#: gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3895,313 +3813,313 @@ msgstr "" "index bikar bîne.\n" #. ID -#: modules/input/imam-et.c:454 +#: ../modules/input/imam-et.c:454 msgid "Amharic (EZ+)" msgstr "Habeşî (EZ+)" #. ID -#: modules/input/imcedilla.c:92 +#: ../modules/input/imcedilla.c:92 msgid "Cedilla" msgstr "Cedilla" #. ID -#: modules/input/imcyrillic-translit.c:217 +#: ../modules/input/imcyrillic-translit.c:217 msgid "Cyrillic (Transliterated)" msgstr "Suryalî (bi tîpîn zimaneke din hatine neqişandin)" #. ID -#: modules/input/iminuktitut.c:127 +#: ../modules/input/iminuktitut.c:127 msgid "Inuktitut (Transliterated)" msgstr "Inuktitut(bi tîpên zimanekî din hatine neqişandin)" #. ID -#: modules/input/imipa.c:145 +#: ../modules/input/imipa.c:145 msgid "IPA" msgstr "IPA" #. ID -#: modules/input/immultipress.c:31 +#: ../modules/input/immultipress.c:31 msgid "Multipress" msgstr "Multipress" #. ID -#: modules/input/imthai.c:35 +#: ../modules/input/imthai.c:35 msgid "Thai-Lao" msgstr "Tay-Lao" #. ID -#: modules/input/imti-er.c:453 +#: ../modules/input/imti-er.c:453 msgid "Tigrigna-Eritrean (EZ+)" msgstr "Tigrigna-Erîteriya (EZ+)" #. ID -#: modules/input/imti-et.c:453 +#: ../modules/input/imti-et.c:453 msgid "Tigrigna-Ethiopian (EZ+)" msgstr "Tîgrîgna-Etiyopî (EZ+)" #. ID -#: modules/input/imviqr.c:244 +#: ../modules/input/imviqr.c:244 msgid "Vietnamese (VIQR)" msgstr "(VIQR) a Vetnamî" #. ID -#: modules/input/imxim.c:28 +#: ../modules/input/imxim.c:28 msgid "X Input Method" msgstr "Metoda Ketana X" -#: modules/printbackends/cups/gtkprintbackendcups.c:811 -#: modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 #, fuzzy msgid "Username:" msgstr "_Navê bikarhêneê" -#: modules/printbackends/cups/gtkprintbackendcups.c:812 -#: modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 #, fuzzy msgid "Password:" msgstr "Şî_fre:" -#: modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "" - -#: modules/printbackends/cups/gtkprintbackendcups.c:854 -#: modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 #, c-format msgid "Authentication is required to print a document on %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:860 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 msgid "Authentication is required to get attributes of a job" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:866 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:868 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 msgid "Authentication is required to get attributes of a printer" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:871 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:874 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 #, c-format msgid "Authentication is required to get printers from %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#, c-format +msgid "Authentication is required to get a file from %s" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 #, c-format msgid "Authentication is required on %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 #, fuzzy msgid "Domain:" msgstr "_Cih:" -#: modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 #, c-format msgid "Authentication is required to print document '%s'" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 msgid "Authentication is required to print this document" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 #, c-format msgid "Printer '%s' is low on toner." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 #, c-format msgid "Printer '%s' has no toner left." msgstr "" #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 #, c-format msgid "Printer '%s' is low on developer." msgstr "" #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' is out of developer." msgstr "" #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "" #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 #, c-format msgid "The cover is open on printer '%s'." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "The door is open on printer '%s'." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 #, c-format msgid "Printer '%s' is low on paper." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of paper." msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, fuzzy, c-format msgid "Printer '%s' is currently offline." msgstr "Çaper ne girêdayî ye" -#: modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "There is a problem on printer '%s'." msgstr "" #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 msgid "Paused ; Rejecting Jobs" msgstr "" #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 msgid "Rejecting Jobs" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 msgid "Two Sided" msgstr "Du alî" -#: modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 msgid "Paper Type" msgstr "Cureyê rûpel" -#: modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 msgid "Paper Source" msgstr "Çavkaniya rûpel" -#: modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 msgid "Output Tray" msgstr "Tepsiya derketanê" -#: modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 #, fuzzy msgid "Resolution" msgstr "Pirs" -#: modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "GhostScript pre-filtering" msgstr "" -#: modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 msgid "One Sided" msgstr "Yek alî" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 msgid "Long Edge (Standard)" msgstr "" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "Short Edge (Flip)" msgstr "" #. Translators: this is an option of "Paper Source" -#: modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 msgid "Auto Select" msgstr "Hilbijartina bixweber" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: modules/printbackends/cups/gtkprintbackendcups.c:2803 -#: modules/printbackends/cups/gtkprintbackendcups.c:2805 -#: modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: modules/printbackends/cups/gtkprintbackendcups.c:3295 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 msgid "Printer Default" msgstr "Standarda Çapgerê" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Embed GhostScript fonts only" msgstr "" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 msgid "Convert to PS level 1" msgstr "" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Convert to PS level 2" msgstr "" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 #, fuzzy msgid "No pre-filtering" msgstr "Hêman nehatine dîtin" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 msgid "Miscellaneous" msgstr "" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Urgent" msgstr "Bilez" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "High" msgstr "Bilind" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Medium" msgstr "Orte" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Low" msgstr "Nizim" @@ -4209,7 +4127,7 @@ msgstr "Nizim" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3527 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 #, fuzzy msgid "Pages per Sheet" msgstr "Serê Kaxiz Rûpelek" @@ -4217,7 +4135,7 @@ msgstr "Serê Kaxiz Rûpelek" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3564 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 #, fuzzy msgid "Job Priority" msgstr "Pê_şikî:" @@ -4225,7 +4143,7 @@ msgstr "Pê_şikî:" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3575 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 #, fuzzy msgid "Billing Info" msgstr "_Agahiyên fatorê:" @@ -4233,55 +4151,53 @@ msgstr "_Agahiyên fatorê:" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "None" msgstr "Ne yek jî" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Classified" msgstr "Taybet" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Confidential" msgstr "Veşartî" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Secret" msgstr "Veşartî" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Standard" msgstr "Standart" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Top Secret" msgstr "Gelekî Veşartî" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Unclassified" msgstr "Ji rêzê" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3625 -#, fuzzy +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 msgid "Before" -msgstr "_Berê:" +msgstr "Berê" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3640 -#, fuzzy +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 msgid "After" -msgstr "_Piştî:" +msgstr "Piştî" #. Translators: this is the name of the option that controls when #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3660 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 #, fuzzy msgid "Print at" msgstr "Çap" @@ -4289,7 +4205,7 @@ msgstr "Çap" #. 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/cups/gtkprintbackendcups.c:3671 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3697 #, fuzzy msgid "Print at time" msgstr "Li ser pelê (file) çap bike" @@ -4298,114 +4214,131 @@ msgstr "Li ser pelê (file) çap bike" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3706 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 #, fuzzy, c-format msgid "Custom %sx%s" msgstr "Taybet %.2fx%.2f" #. default filename used for print-to-file -#: modules/printbackends/file/gtkprintbackendfile.c:250 +#: ../modules/printbackends/file/gtkprintbackendfile.c:250 #, c-format msgid "output.%s" msgstr "Derketan %s" -#: modules/printbackends/file/gtkprintbackendfile.c:493 +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "Li ser pelê (file) çap bike" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "PDF" msgstr "PDF" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "Postscript" msgstr "Postscript" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "SVG" -msgstr "" +msgstr "SVG" -#: modules/printbackends/file/gtkprintbackendfile.c:582 -#: modules/printbackends/test/gtkprintbackendtest.c:503 +#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Rûpelê her ka_xizekê:" -#: modules/printbackends/file/gtkprintbackendfile.c:641 +#: ../modules/printbackends/file/gtkprintbackendfile.c:649 msgid "File" msgstr "Pel" -#: modules/printbackends/file/gtkprintbackendfile.c:651 +#: ../modules/printbackends/file/gtkprintbackendfile.c:659 msgid "_Output format" msgstr "_Şêweyê derketanê" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:395 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 msgid "Print to LPR" msgstr "Li ser LPR çap bike" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:421 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 msgid "Pages Per Sheet" msgstr "Serê Kaxiz Rûpelek" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:428 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 msgid "Command Line" msgstr "Rêzika Fermanê" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:811 -#, fuzzy +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 msgid "printer offline" -msgstr "Çaper ne girêdayî ye" +msgstr "çaper ne girêdayî ye" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:829 -#, fuzzy +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 msgid "ready to print" -msgstr "%d tê amadekirin" +msgstr "ji bo çapkirinê amade" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:832 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 msgid "processing job" msgstr "" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:836 -#, fuzzy +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 msgid "paused" -msgstr "Hatiye rawestandin" +msgstr "hatiye rawestandin" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:839 -#, fuzzy +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 msgid "unknown" -msgstr "(nenas)" +msgstr "nenas" #. default filename used for print-to-test -#: modules/printbackends/test/gtkprintbackendtest.c:234 +#: ../modules/printbackends/test/gtkprintbackendtest.c:234 #, c-format msgid "test-output.%s" msgstr "Derketana-test.%s" -#: modules/printbackends/test/gtkprintbackendtest.c:467 +#: ../modules/printbackends/test/gtkprintbackendtest.c:467 msgid "Print to Test Printer" msgstr "Bi çapera test çap bike" -#: tests/testfilechooser.c:207 +#: ../tests/testfilechooser.c:207 #, c-format msgid "Could not get information for file '%s': %s" msgstr "Nikarî agahiya pelê '%s' bistîne: %s" -#: tests/testfilechooser.c:222 +#: ../tests/testfilechooser.c:222 #, c-format msgid "Failed to open file '%s': %s" msgstr "Vekirina pelê '%s' biserneket: %s" -#: tests/testfilechooser.c:267 +#: ../tests/testfilechooser.c:267 #, c-format msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" msgstr "" "Wêneyê '%s' nehate barkirin: sedem nayê zanîn, dibe pelê wêne xerabe be" +#~ msgid "X screen to use" +#~ msgstr "Dîmender a X ya bikaranînê" + +#~ msgid "SCREEN" +#~ msgstr "Dîmender" + +#~ msgid "Make X calls synchronous" +#~ msgstr "Lêdanên X hevdem bike" + +#~ msgid "Credits" +#~ msgstr "Spas" + +#~ msgid "Written by" +#~ msgstr "Nivîskar" + +#~ msgid "Error creating folder '%s': %s" +#~ msgstr "Di afirandina peldanka '%s' de çewtî: %s" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Nikare pelê hundirandinê bibîne: \"%s\"" + #~ msgid "Gdk debugging flags to set" #~ msgstr "Nîşanên Gdk bo çespandinê" @@ -5105,9 +5038,6 @@ msgstr "" #~ msgid "_Folder name:" #~ msgstr "_Navê peldankê:" -#~ msgid "C_reate" -#~ msgstr "Bi_afirîne" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "Di navê pelî de \"%s\" sembolên qedexe hene" diff --git a/po/lg.po b/po/lg.po index 79e3810708..ad1a37c812 100644 --- a/po/lg.po +++ b/po/lg.po @@ -1,4360 +1,4305 @@ -# Translation of gtk+ into Luganda. -# Copyright (C) 2005 Free Software Foundation, Inc. -# This file is distributed under the same license as the gtk+ package. -# Kizito Birabwa , 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: gtk+-2.22\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%" -"2b&component=general\n" -"POT-Creation-Date: 2010-11-03 00:05+0000\n" -"PO-Revision-Date: 2010-11-06 12:50+0000\n" -"Last-Translator: Kizito Birabwa \n" -"Language-Team: Luganda \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../gdk/gdk.c:103 -#, c-format -msgid "Error parsing option --gdk-debug" -msgstr "Wazzewo kiremya mu kuyungulula makulu mu kawayiro aka --gdk-debug" - -#: ../gdk/gdk.c:123 -#, c-format -msgid "Error parsing option --gdk-no-debug" -msgstr "Wazzewo kiremya mu kuyungululamakulu mu kawayiro aka --gdk-no-debug" - -#. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:151 -msgid "Program class as used by the window manager" -msgstr "Kiti ekiteekateekamadirisa mwe kissa puloguramu" - -#. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:152 -msgid "CLASS" -msgstr "KITI" - -#. Description of --name=NAME in --help output -#: ../gdk/gdk.c:154 -msgid "Program name as used by the window manager" -msgstr "Erinnya ekiteekateekamadirisa lye kiyita puloguramu" - -#. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:155 -msgid "NAME" -msgstr "LINNYA" - -#. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:157 -msgid "X display to use" -msgstr "Omulimu gwa X ogunaakozesebwa" - -#. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:158 -msgid "DISPLAY" -msgstr "MULIMU" - -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:160 -msgid "X screen to use" -msgstr "Olutmbe olunaakozesebwa" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:161 -msgid "SCREEN" -msgstr "LUTIMBE" - -#. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:164 -msgid "GDK debugging flags to set" -msgstr "" - -#. Placeholder in --gdk-debug=FLAGS in --help output -#. Placeholder in --gdk-no-debug=FLAGS in --help output -#. Placeholder in --gtk-debug=FLAGS in --help output -#. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:165 ../gdk/gdk.c:168 ../gtk/gtkmain.c:459 ../gtk/gtkmain.c:462 -msgid "FLAGS" -msgstr "" - -#. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:167 -msgid "GDK debugging flags to unset" -msgstr "" - -#: ../gdk/keyname-table.h:3940 -msgctxt "keyboard label" -msgid "BackSpace" -msgstr "" - -#: ../gdk/keyname-table.h:3941 -msgctxt "keyboard label" -msgid "Tab" -msgstr "" - -#: ../gdk/keyname-table.h:3942 -msgctxt "keyboard label" -msgid "Return" -msgstr "" - -#: ../gdk/keyname-table.h:3943 -msgctxt "keyboard label" -msgid "Pause" -msgstr "" - -#: ../gdk/keyname-table.h:3944 -msgctxt "keyboard label" -msgid "Scroll_Lock" -msgstr "" - -#: ../gdk/keyname-table.h:3945 -msgctxt "keyboard label" -msgid "Sys_Req" -msgstr "" - -#: ../gdk/keyname-table.h:3946 -msgctxt "keyboard label" -msgid "Escape" -msgstr "" - -#: ../gdk/keyname-table.h:3947 -msgctxt "keyboard label" -msgid "Multi_key" -msgstr "" - -#: ../gdk/keyname-table.h:3948 -msgctxt "keyboard label" -msgid "Home" -msgstr "" - -#: ../gdk/keyname-table.h:3949 -msgctxt "keyboard label" -msgid "Left" -msgstr "" - -#: ../gdk/keyname-table.h:3950 -msgctxt "keyboard label" -msgid "Up" -msgstr "" - -#: ../gdk/keyname-table.h:3951 -msgctxt "keyboard label" -msgid "Right" -msgstr "" - -#: ../gdk/keyname-table.h:3952 -msgctxt "keyboard label" -msgid "Down" -msgstr "" - -#: ../gdk/keyname-table.h:3953 -msgctxt "keyboard label" -msgid "Page_Up" -msgstr "" - -#: ../gdk/keyname-table.h:3954 -msgctxt "keyboard label" -msgid "Page_Down" -msgstr "" - -#: ../gdk/keyname-table.h:3955 -msgctxt "keyboard label" -msgid "End" -msgstr "" - -#: ../gdk/keyname-table.h:3956 -msgctxt "keyboard label" -msgid "Begin" -msgstr "" - -#: ../gdk/keyname-table.h:3957 -msgctxt "keyboard label" -msgid "Print" -msgstr "" - -#: ../gdk/keyname-table.h:3958 -msgctxt "keyboard label" -msgid "Insert" -msgstr "" - -#: ../gdk/keyname-table.h:3959 -msgctxt "keyboard label" -msgid "Num_Lock" -msgstr "" - -#: ../gdk/keyname-table.h:3960 -msgctxt "keyboard label" -msgid "KP_Space" -msgstr "" - -#: ../gdk/keyname-table.h:3961 -msgctxt "keyboard label" -msgid "KP_Tab" -msgstr "" - -#: ../gdk/keyname-table.h:3962 -msgctxt "keyboard label" -msgid "KP_Enter" -msgstr "" - -#: ../gdk/keyname-table.h:3963 -msgctxt "keyboard label" -msgid "KP_Home" -msgstr "" - -#: ../gdk/keyname-table.h:3964 -msgctxt "keyboard label" -msgid "KP_Left" -msgstr "" - -#: ../gdk/keyname-table.h:3965 -msgctxt "keyboard label" -msgid "KP_Up" -msgstr "" - -#: ../gdk/keyname-table.h:3966 -msgctxt "keyboard label" -msgid "KP_Right" -msgstr "" - -#: ../gdk/keyname-table.h:3967 -msgctxt "keyboard label" -msgid "KP_Down" -msgstr "" - -#: ../gdk/keyname-table.h:3968 -msgctxt "keyboard label" -msgid "KP_Page_Up" -msgstr "" - -#: ../gdk/keyname-table.h:3969 -msgctxt "keyboard label" -msgid "KP_Prior" -msgstr "" - -#: ../gdk/keyname-table.h:3970 -msgctxt "keyboard label" -msgid "KP_Page_Down" -msgstr "" - -#: ../gdk/keyname-table.h:3971 -msgctxt "keyboard label" -msgid "KP_Next" -msgstr "" - -#: ../gdk/keyname-table.h:3972 -msgctxt "keyboard label" -msgid "KP_End" -msgstr "" - -#: ../gdk/keyname-table.h:3973 -msgctxt "keyboard label" -msgid "KP_Begin" -msgstr "" - -#: ../gdk/keyname-table.h:3974 -msgctxt "keyboard label" -msgid "KP_Insert" -msgstr "" - -#: ../gdk/keyname-table.h:3975 -msgctxt "keyboard label" -msgid "KP_Delete" -msgstr "" - -#: ../gdk/keyname-table.h:3976 -msgctxt "keyboard label" -msgid "Delete" -msgstr "" - -#. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 -msgid "Don't batch GDI requests" -msgstr "" - -#. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 -msgid "Don't use the Wintab API for tablet support" -msgstr "" - -#. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 -msgid "Same as --no-wintab" -msgstr "" - -#. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 -msgid "Do use the Wintab API [default]" -msgstr "" - -#. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 -msgid "Size of the palette in 8 bit mode" -msgstr "" - -#. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 -msgid "COLORS" -msgstr "" - -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:93 -msgid "Make X calls synchronous" -msgstr "" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:313 -#, c-format -msgid "Starting %s" -msgstr "Ntandika %s" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:317 -#, c-format -msgid "Opening %s" -msgstr "Mbikkula %s" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:322 -#, c-format -msgid "Opening %d Item" -msgid_plural "Opening %d Items" -msgstr[0] "" -msgstr[1] "" - -#: ../gtk/gtkaboutdialog.c:242 -msgid "Could not show link" -msgstr "Nnemedwa okulaga enyunzi" - -#: ../gtk/gtkaboutdialog.c:365 ../gtk/gtkaboutdialog.c:2263 -msgid "License" -msgstr "Layisinsi" - -#: ../gtk/gtkaboutdialog.c:366 -msgid "The license of the program" -msgstr "Layisinsi efuga nkozesa ya puloguramu" - -#. Add the credits button -#: ../gtk/gtkaboutdialog.c:625 -msgid "C_redits" -msgstr "A_baakola" - -#. Add the license button -#: ../gtk/gtkaboutdialog.c:639 -msgid "_License" -msgstr "_Layisinsi" - -#: ../gtk/gtkaboutdialog.c:917 -#, c-format -msgid "About %s" -msgstr "Okwanjula %s" - -#: ../gtk/gtkaboutdialog.c:2186 -msgid "Credits" -msgstr "Abaakola" - -#: ../gtk/gtkaboutdialog.c:2215 -msgid "Written by" -msgstr "Yawandikibwa" - -#: ../gtk/gtkaboutdialog.c:2218 -msgid "Documented by" -msgstr "Yawandikibwako" - -#: ../gtk/gtkaboutdialog.c:2230 -msgid "Translated by" -msgstr "Yavvuunulibwa" - -#: ../gtk/gtkaboutdialog.c:2234 -msgid "Artwork by" -msgstr "Abaakola ku nfaanana ya yo" - -#. This is the text that should appear next to menu accelerators -#. * that use the shift key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:146 -msgctxt "keyboard label" -msgid "Shift" -msgstr "" - -#. This is the text that should appear next to menu accelerators -#. * that use the control key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:152 -msgctxt "keyboard label" -msgid "Ctrl" -msgstr "" - -#. This is the text that should appear next to menu accelerators -#. * that use the alt key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:158 -msgctxt "keyboard label" -msgid "Alt" -msgstr "" - -#. This is the text that should appear next to menu accelerators -#. * that use the super key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:743 -msgctxt "keyboard label" -msgid "Super" -msgstr "" - -#. This is the text that should appear next to menu accelerators -#. * that use the hyper key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:756 -msgctxt "keyboard label" -msgid "Hyper" -msgstr "" - -#. This is the text that should appear next to menu accelerators -#. * that use the meta key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:770 -msgctxt "keyboard label" -msgid "Meta" -msgstr "" - -#: ../gtk/gtkaccellabel.c:787 -msgctxt "keyboard label" -msgid "Space" -msgstr "Kabangirizi" - -#: ../gtk/gtkaccellabel.c:790 -msgctxt "keyboard label" -msgid "Backslash" -msgstr "Kasaze ka kaddanyuma" - -#: ../gtk/gtkbuilderparser.c:343 -#, c-format -msgid "Invalid type function on line %d: '%s'" -msgstr "" - -#: ../gtk/gtkbuilderparser.c:407 -#, c-format -msgid "Duplicate object ID '%s' on line %d (previously on line %d)" -msgstr "" - -#: ../gtk/gtkbuilderparser.c:859 -#, c-format -msgid "Invalid root element: '%s'" -msgstr "" - -#: ../gtk/gtkbuilderparser.c:898 -#, c-format -msgid "Unhandled tag: '%s'" -msgstr "" - -#. Translate to calendar:YM if you want years to be displayed -#. * before months; otherwise translate to calendar:MY. -#. * Do *not* translate it to anything else, if it -#. * it isn't calendar:YM or calendar:MY it will not work. -#. * -#. * Note that the ordering described here is logical order, which is -#. * further influenced by BIDI ordering. Thus, if you have a default -#. * text direction of RTL and specify "calendar:YM", then the year -#. * will appear to the right of the month. -#. -#: ../gtk/gtkcalendar.c:799 -msgid "calendar:MY" -msgstr "" - -#. Translate to calendar:week_start:0 if you want Sunday to be the -#. * 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:837 -msgid "calendar:week_start:0" -msgstr "calendar:week_start:0" - -#. Translators: This is a text measurement template. -#. * Translate it to the widest year text -#. * -#. * If you don't understand this, leave it as "2000" -#. -#: ../gtk/gtkcalendar.c:1890 -msgctxt "year measurement template" -msgid "2000" -msgstr "2000" - -#. Translators: this defines whether the day numbers should use -#. * localized digits or the ones used in English (0123...). -#. * -#. * Translate to "%Id" if you want to use localized digits, or -#. * translate to "%d" otherwise. -#. * -#. * 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:1921 ../gtk/gtkcalendar.c:2584 -#, c-format -msgctxt "calendar:day:digits" -msgid "%d" -msgstr "%d" - -#. Translators: this defines whether the week numbers should use -#. * localized digits or the ones used in English (0123...). -#. * -#. * Translate to "%Id" if you want to use localized digits, or -#. * translate to "%d" otherwise. -#. * -#. * 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:1953 ../gtk/gtkcalendar.c:2447 -#, c-format -msgctxt "calendar:week:digits" -msgid "%d" -msgstr "%d" - -#. Translators: This dictates how the year is displayed in -#. * gtkcalendar widget. See strftime() manual for the format. -#. * Use only ASCII in the translation. -#. * -#. * Also look for the msgid "2000". -#. * Translate that entry to a year with the widest output of this -#. * msgid. -#. * -#. * "%Y" is appropriate for most locales. -#. -#: ../gtk/gtkcalendar.c:2235 -msgctxt "calendar year format" -msgid "%Y" -msgstr "%Y" - -#. This label is displayed in a treeview cell displaying -#. * a disabled accelerator key combination. -#. -#: ../gtk/gtkcellrendereraccel.c:244 -msgctxt "Accelerator" -msgid "Disabled" -msgstr "Tegakola" - -#. This label is displayed in a treeview cell displaying -#. * an accelerator key combination that is not valid according -#. * to gtk_accelerator_valid(). -#. -#: ../gtk/gtkcellrendereraccel.c:254 -msgctxt "Accelerator" -msgid "Invalid" -msgstr "Tegakkirizibwa" - -#. This label is displayed in a treeview cell displaying -#. * an accelerator when the cell is clicked to change the -#. * acelerator. -#. -#: ../gtk/gtkcellrendereraccel.c:389 ../gtk/gtkcellrendereraccel.c:603 -msgid "New accelerator..." -msgstr "Gakyuse..." - -#: ../gtk/gtkcellrendererprogress.c:361 ../gtk/gtkcellrendererprogress.c:448 -#, c-format -msgctxt "progress bar label" -msgid "%d %%" -msgstr "" - -#: ../gtk/gtkcolorbutton.c:178 ../gtk/gtkcolorbutton.c:457 -msgid "Pick a Color" -msgstr "Londako langi" - -#: ../gtk/gtkcolorbutton.c:350 -msgid "Received invalid color data\n" -msgstr "Nfunye ebya langi ebitakkirizibwa\n" - -#: ../gtk/gtkcolorsel.c:363 -msgid "" -"Select the color you want from the outer ring. Select the darkness or " -"lightness of that color using the inner triangle." -msgstr "" -"Kozesa namuziga okulonda langi. Kozesa nsondasatu obutegeka obukwafu bwa yo." - -#: ../gtk/gtkcolorsel.c:387 -msgid "" -"Click the eyedropper, then click a color anywhere on your screen to select " -"that color." -msgstr "" -"Bw'onyiga ku katonyesa, ofuna ekikusobozesa okukwata langi okuva wonna " -"w'oyagala ku lutimbe" - -#: ../gtk/gtkcolorsel.c:396 -msgid "_Hue:" -msgstr "_Kiti kya langi:" - -#: ../gtk/gtkcolorsel.c:397 -msgid "Position on the color wheel." -msgstr "Kifo ku namuziga y'erangi." - -#: ../gtk/gtkcolorsel.c:399 -msgid "_Saturation:" -msgstr "_Busaabulukufu:" - -#: ../gtk/gtkcolorsel.c:400 -msgid "\"Deepness\" of the color." -msgstr "Obusaabulufu bwa langi." - -#: ../gtk/gtkcolorsel.c:401 -msgid "_Value:" -msgstr "_Butaangaavu:" - -#: ../gtk/gtkcolorsel.c:402 -msgid "Brightness of the color." -msgstr "Obutaangaavu bw'erangi." - -#: ../gtk/gtkcolorsel.c:403 -msgid "_Red:" -msgstr "Obu_myufu" - -#: ../gtk/gtkcolorsel.c:404 -msgid "Amount of red light in the color." -msgstr "Obumyufu obuli mu langi." - -#: ../gtk/gtkcolorsel.c:405 -msgid "_Green:" -msgstr "Obwaki_ragala:" - -#: ../gtk/gtkcolorsel.c:406 -msgid "Amount of green light in the color." -msgstr "Obwakiragala obuli mu langi." - -#: ../gtk/gtkcolorsel.c:407 -msgid "_Blue:" -msgstr "Obwa_bbululu:" - -#: ../gtk/gtkcolorsel.c:408 -msgid "Amount of blue light in the color." -msgstr "Obwabbululu obuli mu langi." - -#: ../gtk/gtkcolorsel.c:411 -msgid "Op_acity:" -msgstr "Oku_taangaala:" - -#: ../gtk/gtkcolorsel.c:418 ../gtk/gtkcolorsel.c:428 -msgid "Transparency of the color." -msgstr "Okutaangaala kw'erangi." - -#: ../gtk/gtkcolorsel.c:435 -msgid "Color _name:" -msgstr "_Linnya lya langi:" - -#: ../gtk/gtkcolorsel.c:449 -msgid "" -"You can enter an HTML-style hexadecimal color value, or simply a color name " -"such as 'orange' in this entry." -msgstr "" -"Wano oyinz'okuwandikawo ennamba ey'omu nnengakkuminamukaaga nga mu HTML, oba " -"oyinz'okuwandikawo erinya nga 'orange'." - -#: ../gtk/gtkcolorsel.c:479 -msgid "_Palette:" -msgstr "" - -#: ../gtk/gtkcolorsel.c:508 -msgid "Color Wheel" -msgstr "Namuziga ya langi" - -#: ../gtk/gtkcolorsel.c:967 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now. You can drag this color to a palette entry, or select this color as " -"current by dragging it to the other color swatch alongside." -msgstr "" - -#: ../gtk/gtkcolorsel.c:970 -msgid "" -"The color you've chosen. You can drag this color to a palette entry to save " -"it for use in the future." -msgstr "" - -#: ../gtk/gtkcolorsel.c:975 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now." -msgstr "" - -#: ../gtk/gtkcolorsel.c:978 -msgid "The color you've chosen." -msgstr "" - -#: ../gtk/gtkcolorsel.c:1391 -msgid "_Save color here" -msgstr "" - -#: ../gtk/gtkcolorsel.c:1596 -msgid "" -"Click this palette entry to make it the current color. To change this entry, " -"drag a color swatch here or right-click it and select \"Save color here.\"" -msgstr "" - -#: ../gtk/gtkcolorseldialog.c:170 -msgid "Color Selection" -msgstr "" - -#. Translate to the default units to use for presenting -#. * lengths to the user. Translate to default:inch if you -#. * want inches, otherwise translate to default:mm. -#. * Do *not* translate it to "predefinito:mm", if it -#. * it isn't default:mm or default:inch it will not work -#. -#: ../gtk/gtkcustompaperunixdialog.c:118 -msgid "default:mm" -msgstr "default:mm" - -#. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:373 ../gtk/gtkprintunixdialog.c:3226 -msgid "Manage Custom Sizes" -msgstr "Teekateeka ebigero by'empapula ebitasangibwasangibwa" - -#: ../gtk/gtkcustompaperunixdialog.c:533 ../gtk/gtkpagesetupunixdialog.c:778 -msgid "inch" -msgstr "yinci" - -#: ../gtk/gtkcustompaperunixdialog.c:535 ../gtk/gtkpagesetupunixdialog.c:776 -msgid "mm" -msgstr "mm" - -#: ../gtk/gtkcustompaperunixdialog.c:580 -msgid "Margins from Printer..." -msgstr "" - -#: ../gtk/gtkcustompaperunixdialog.c:746 -#, c-format -msgid "Custom Size %d" -msgstr "Ekigero ekyeteekateekere %d" - -#: ../gtk/gtkcustompaperunixdialog.c:1054 -msgid "_Width:" -msgstr "Bu_gazi:" - -#: ../gtk/gtkcustompaperunixdialog.c:1066 -msgid "_Height:" -msgstr "Bu_wanvu:" - -#: ../gtk/gtkcustompaperunixdialog.c:1078 -msgid "Paper Size" -msgstr "Kigero ky'empapula" - -#: ../gtk/gtkcustompaperunixdialog.c:1087 -msgid "_Top:" -msgstr "Wa_ggulu:" - -#: ../gtk/gtkcustompaperunixdialog.c:1099 -msgid "_Bottom:" -msgstr "Wa_nsi:" - -#: ../gtk/gtkcustompaperunixdialog.c:1111 -msgid "_Left:" -msgstr "_Kkono:" - -#: ../gtk/gtkcustompaperunixdialog.c:1123 -msgid "_Right:" -msgstr "_Ddyo:" - -#: ../gtk/gtkcustompaperunixdialog.c:1164 -msgid "Paper Margins" -msgstr "Emyagaanya ku mpapula" - -#: ../gtk/gtkentry.c:8751 ../gtk/gtktextview.c:7974 -msgid "Input _Methods" -msgstr "" - -#: ../gtk/gtkentry.c:8765 ../gtk/gtktextview.c:7988 -msgid "_Insert Unicode Control Character" -msgstr "" - -#: ../gtk/gtkentry.c:10144 -msgid "Caps Lock is on" -msgstr "" - -#: ../gtk/gtkfilechooserbutton.c:64 -msgid "Select A File" -msgstr "Londayo fayiro" - -#: ../gtk/gtkfilechooserbutton.c:65 ../gtk/gtkfilechooserdefault.c:1839 -msgid "Desktop" -msgstr "Awakolerwa" - -#: ../gtk/gtkfilechooserbutton.c:66 -msgid "(None)" -msgstr "" - -#: ../gtk/gtkfilechooserbutton.c:2021 -msgid "Other..." -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:148 -msgid "Type name of new folder" -msgstr "Wandika linnya ly'etterekero eppya" - -#: ../gtk/gtkfilechooserdefault.c:965 -msgid "Could not retrieve information about the file" -msgstr "Nnemedwa okufuna ebifa ku fayiro" - -#: ../gtk/gtkfilechooserdefault.c:976 -msgid "Could not add a bookmark" -msgstr "Nnemedwa okukwata ekifo" - -#: ../gtk/gtkfilechooserdefault.c:987 -msgid "Could not remove bookmark" -msgstr "Nnemedwa okugyawo akakwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:998 -msgid "The folder could not be created" -msgstr "Tekisobose tterekero okulikolawo" - -#: ../gtk/gtkfilechooserdefault.c:1011 -msgid "" -"The folder could not be created, as a file with the same name already " -"exists. Try using a different name for the folder, or rename the file first." -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:1022 -msgid "Invalid file name" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:1032 -msgid "The folder contents could not be displayed" -msgstr "" - -#. Translators: the first string is a path and the second string -#. * is a hostname. Nautilus and the panel contain the same string -#. * to translate. -#. -#: ../gtk/gtkfilechooserdefault.c:1582 -#, c-format -msgid "%1$s on %2$s" -msgstr "%1$s ku %2$s" - -#: ../gtk/gtkfilechooserdefault.c:1758 -msgid "Search" -msgstr "Noonya" - -#: ../gtk/gtkfilechooserdefault.c:1782 ../gtk/gtkfilechooserdefault.c:9465 -msgid "Recently Used" -msgstr "Ebyakabukkulibwa" - -#: ../gtk/gtkfilechooserdefault.c:2422 -msgid "Select which types of files are shown" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:2781 -#, c-format -msgid "Add the folder '%s' to the bookmarks" -msgstr "Tterekero'%s' likolerewo akakwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:2825 -#, c-format -msgid "Add the current folder to the bookmarks" -msgstr "Tterekero lino likolerewo akakwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:2827 -#, c-format -msgid "Add the selected folders to the bookmarks" -msgstr "Amaterekero agalondedwa gakolerewo obukwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:2865 -#, c-format -msgid "Remove the bookmark '%s'" -msgstr "Gyawo akakwatakifo '%s'" - -#: ../gtk/gtkfilechooserdefault.c:2867 -#, c-format -msgid "Bookmark '%s' cannot be removed" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:2874 ../gtk/gtkfilechooserdefault.c:3898 -msgid "Remove the selected bookmark" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:3594 -msgid "Remove" -msgstr "Gyawo" - -#: ../gtk/gtkfilechooserdefault.c:3603 -msgid "Rename..." -msgstr "Kyusa erinnya..." - -#. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3766 -msgid "Places" -msgstr "Bifo" - -#. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3823 -msgid "_Places" -msgstr "_Bifo" - -#: ../gtk/gtkfilechooserdefault.c:3879 -msgid "_Add" -msgstr "_Likolereyo" - -#: ../gtk/gtkfilechooserdefault.c:3886 -msgid "Add the selected folder to the Bookmarks" -msgstr "Etterekero erirondedwa likolerewo akakwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:3891 -msgid "_Remove" -msgstr "_Gyawo" - -#: ../gtk/gtkfilechooserdefault.c:4026 -msgid "Could not select file" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:4201 -msgid "_Add to Bookmarks" -msgstr "_Likolereyo akakwatakifo" - -#: ../gtk/gtkfilechooserdefault.c:4214 -msgid "Show _Hidden Files" -msgstr "Laga fayiro en_kise" - -#: ../gtk/gtkfilechooserdefault.c:4221 -msgid "Show _Size Column" -msgstr "Teekawo olukumbo olulaga _bunene bwa fayiro" - -#: ../gtk/gtkfilechooserdefault.c:4441 ../gtk/gtkfilesel.c:730 -msgid "Files" -msgstr "Fayiro" - -#: ../gtk/gtkfilechooserdefault.c:4492 -msgid "Name" -msgstr "Linnya" - -#: ../gtk/gtkfilechooserdefault.c:4515 -msgid "Size" -msgstr "Bunene" - -#: ../gtk/gtkfilechooserdefault.c:4529 -msgid "Modified" -msgstr "Amakyusibwa" - -#. Label -#: ../gtk/gtkfilechooserdefault.c:4784 ../gtk/gtkprinteroptionwidget.c:802 -msgid "_Name:" -msgstr "_Linnya" - -#: ../gtk/gtkfilechooserdefault.c:4827 -msgid "_Browse for other folders" -msgstr "_Noonya amaterekero amalala" - -#: ../gtk/gtkfilechooserdefault.c:5097 -msgid "Type a file name" -msgstr "Wandikawo erinnya lya fayiro" - -#. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5140 -msgid "Create Fo_lder" -msgstr "Kolawo e_tterekero" - -#: ../gtk/gtkfilechooserdefault.c:5150 -msgid "_Location:" -msgstr "_Obusangiro:" - -#: ../gtk/gtkfilechooserdefault.c:5354 -msgid "Save in _folder:" -msgstr "Teeka mu _tterekero:" - -#: ../gtk/gtkfilechooserdefault.c:5356 -msgid "Create in _folder:" -msgstr "Tondera mu _tterekero:" - -#: ../gtk/gtkfilechooserdefault.c:6431 -#, c-format -msgid "Could not read the contents of %s" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:6435 -msgid "Could not read the contents of the folder" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:6528 ../gtk/gtkfilechooserdefault.c:6596 -#: ../gtk/gtkfilechooserdefault.c:6741 -msgid "Unknown" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:6543 -msgid "%H:%M" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:6545 -msgid "Yesterday at %H:%M" -msgstr "Eggulo ku %H:%M" - -#: ../gtk/gtkfilechooserdefault.c:7211 -msgid "Cannot change to folder because it is not local" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:7808 ../gtk/gtkfilechooserdefault.c:7829 -#, c-format -msgid "Shortcut %s already exists" -msgstr "Enynzi %s yabaawo dda" - -#: ../gtk/gtkfilechooserdefault.c:7919 -#, c-format -msgid "Shortcut %s does not exist" -msgstr "Enyunzi %s teriwo" - -#: ../gtk/gtkfilechooserdefault.c:8174 ../gtk/gtkprintunixdialog.c:480 -#, c-format -msgid "A file named \"%s\" already exists. Do you want to replace it?" -msgstr "Fayiro \"%s\" yabaawo dda. Oyagala eyo esangidwawo eggyibwewo?" - -#: ../gtk/gtkfilechooserdefault.c:8177 ../gtk/gtkprintunixdialog.c:484 -#, c-format -msgid "" -"The file already exists in \"%s\". Replacing it will overwrite its contents." -msgstr "" -"Fayiro yabaawo dda mu \"%s\". Bw'olonda ku gigyawo ebigirimu " -"bijjakusaanyizibwawo." - -#: ../gtk/gtkfilechooserdefault.c:8182 ../gtk/gtkprintunixdialog.c:491 -msgid "_Replace" -msgstr "_Esangidwawo eggyibwewo" - -#: ../gtk/gtkfilechooserdefault.c:8834 -msgid "Could not start the search process" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:8835 -msgid "" -"The program was not able to create a connection to the indexer daemon. " -"Please make sure it is running." -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:8849 -msgid "Could not send the search request" -msgstr "" - -#: ../gtk/gtkfilechooserdefault.c:9037 -msgid "Search:" -msgstr "Noonya:" - -#: ../gtk/gtkfilechooserdefault.c:9642 -#, c-format -msgid "Could not mount %s" -msgstr "Nnemedwa okuwabga %s" - -#. Translators: this is shown in the feedback for Tab-completion in a file -#. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1166 -msgid "Invalid path" -msgstr "" - -#. translators: this text is shown when there are no completions -#. * for something the user typed in a file chooser entry -#. -#: ../gtk/gtkfilechooserentry.c:1098 -msgid "No match" -msgstr "" - -#. translators: this text is shown when there is exactly one completion -#. * for something the user typed in a file chooser entry -#. -#: ../gtk/gtkfilechooserentry.c:1109 -msgid "Sole completion" -msgstr "" - -#. translators: this text is shown when the text in a file chooser -#. * entry is a complete filename, but could be continued to find -#. * a longer match -#. -#: ../gtk/gtkfilechooserentry.c:1125 -msgid "Complete, but not unique" -msgstr "" - -#. Translators: this text is shown while the system is searching -#. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1157 -msgid "Completing..." -msgstr "" - -#. hostnames in a local_only file chooser? user error -#. Translators: this is shown in the feedback for Tab-completion in a -#. * file chooser's text entry when the user enters something like -#. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1179 ../gtk/gtkfilechooserentry.c:1204 -msgid "Only local files may be selected" -msgstr "" - -#. Another option is to complete the hostname based on the remote volumes that are mounted -#. Translators: this is shown in the feedback for Tab-completion in a -#. * file chooser's text entry when the user hasn't entered the first '/' -#. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1188 -msgid "Incomplete hostname; end it with '/'" -msgstr "" - -#. Translators: this is shown in the feedback for Tab-completion in a file -#. * chooser's text entry when the user enters a path that does not exist -#. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1199 -msgid "Path does not exist" -msgstr "" - -#: ../gtk/gtkfilechoosersettings.c:487 ../gtk/gtkfilesel.c:1349 -#: ../gtk/gtkfilesel.c:1360 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:694 -msgid "Folders" -msgstr "Materekero" - -#: ../gtk/gtkfilesel.c:698 -msgid "Fol_ders" -msgstr "Ma_terekero" - -#: ../gtk/gtkfilesel.c:734 -msgid "_Files" -msgstr "_Fayiro" - -#: ../gtk/gtkfilesel.c:821 ../gtk/gtkfilesel.c:2154 -#, c-format -msgid "Folder unreadable: %s" -msgstr "Tterekero eritakebereka: %s" - -#: ../gtk/gtkfilesel.c:905 -#, c-format -msgid "" -"The file \"%s\" resides on another machine (called %s) and may not be " -"available to this program.\n" -"Are you sure that you want to select it?" -msgstr "" - -#: ../gtk/gtkfilesel.c:1020 -msgid "_New Folder" -msgstr "Tterekero _ppya" - -#: ../gtk/gtkfilesel.c:1031 -msgid "De_lete File" -msgstr "_Gyawo fayiro" - -#: ../gtk/gtkfilesel.c:1042 -msgid "_Rename File" -msgstr "Fayiro gik_yuse erinnya" - -#: ../gtk/gtkfilesel.c:1347 -#, c-format -msgid "" -"The folder name \"%s\" contains symbols that are not allowed in filenames" -msgstr "" - -#: ../gtk/gtkfilesel.c:1394 -msgid "New Folder" -msgstr "Tterekero ppya" - -#: ../gtk/gtkfilesel.c:1409 -msgid "_Folder name:" -msgstr "Linnya lya _tterekero" - -#: ../gtk/gtkfilesel.c:1433 -msgid "C_reate" -msgstr "_Kolawo" - -#: ../gtk/gtkfilesel.c:1476 ../gtk/gtkfilesel.c:1585 ../gtk/gtkfilesel.c:1598 -#, c-format -msgid "The filename \"%s\" contains symbols that are not allowed in filenames" -msgstr "" - -#: ../gtk/gtkfilesel.c:1479 ../gtk/gtkfilesel.c:1491 -#, c-format -msgid "Error deleting file '%s': %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:1534 -#, c-format -msgid "Really delete file \"%s\"?" -msgstr "Fayiro \"%s\" ngiggirewo ddala?" - -#: ../gtk/gtkfilesel.c:1539 -msgid "Delete File" -msgstr "Gyawo fayiro" - -#: ../gtk/gtkfilesel.c:1587 -#, c-format -msgid "Error renaming file to \"%s\": %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:1600 -#, c-format -msgid "Error renaming file \"%s\": %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:1611 -#, c-format -msgid "Error renaming file \"%s\" to \"%s\": %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:1658 -msgid "Rename File" -msgstr "Fayiro gikyuse erinnya" - -#: ../gtk/gtkfilesel.c:1673 -#, c-format -msgid "Rename file \"%s\" to:" -msgstr "Fayiro \"%s\" gituume:" - -#: ../gtk/gtkfilesel.c:1702 -msgid "_Rename" -msgstr "K_yusa linnya" - -#: ../gtk/gtkfilesel.c:2134 -msgid "_Selection: " -msgstr "" - -#: ../gtk/gtkfilesel.c:3056 -#, c-format -msgid "" -"The filename \"%s\" couldn't be converted to UTF-8. (try setting the " -"environment variable G_FILENAME_ENCODING): %s" -msgstr "" - -#: ../gtk/gtkfilesel.c:3059 -msgid "Invalid UTF-8" -msgstr "" - -#: ../gtk/gtkfilesel.c:3935 -msgid "Name too long" -msgstr "" - -#: ../gtk/gtkfilesel.c:3937 -msgid "Couldn't convert filename" -msgstr "" - -#. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are -#. * really pointers to GDrive, GVolume or GMount objects. We need an extra -#. * token for the fake "File System" volume. So, we'll return a pointer to -#. * this particular string. -#. -#: ../gtk/gtkfilesystem.c:52 -msgid "File System" -msgstr "Sisitemu ya fayiro" - -#: ../gtk/gtkfontbutton.c:144 ../gtk/gtkfontbutton.c:266 -msgid "Pick a Font" -msgstr "Londayo enkula y'ennukuta" - -#. Initialize fields -#: ../gtk/gtkfontbutton.c:260 -msgid "Sans 12" -msgstr "" - -#: ../gtk/gtkfontbutton.c:785 -msgid "Font" -msgstr "Nkula y'ennukuta" - -#. This is the default text shown in the preview entry, though the user -#. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:75 -msgid "abcdefghijk ABCDEFGHIJK" -msgstr "" - -#: ../gtk/gtkfontsel.c:343 -msgid "_Family:" -msgstr "_Lulyo:" - -#: ../gtk/gtkfontsel.c:349 -msgid "_Style:" -msgstr "_Musono:" - -#: ../gtk/gtkfontsel.c:355 -msgid "Si_ze:" -msgstr "Bu_nene:" - -#. create the text entry widget -#: ../gtk/gtkfontsel.c:532 -msgid "_Preview:" -msgstr "Ku_lagako:" - -#: ../gtk/gtkfontsel.c:1649 -msgid "Font Selection" -msgstr "" - -#: ../gtk/gtkgamma.c:410 -msgid "Gamma" -msgstr "" - -#: ../gtk/gtkgamma.c:420 -msgid "_Gamma value" -msgstr "" - -#. Remove this icon source so we don't keep trying to -#. * load it. -#. -#: ../gtk/gtkiconfactory.c:1354 -#, c-format -msgid "Error loading icon: %s" -msgstr "" - -#: ../gtk/gtkicontheme.c:1363 -#, c-format -msgid "" -"Could not find the icon '%s'. The '%s' theme\n" -"was not found either, perhaps you need to install it.\n" -"You can get a copy from:\n" -"\t%s" -msgstr "" - -#: ../gtk/gtkicontheme.c:1543 -#, c-format -msgid "Icon '%s' not present in theme" -msgstr "" - -#: ../gtk/gtkicontheme.c:3074 -msgid "Failed to load icon" -msgstr "" - -#: ../gtk/gtkimmodule.c:527 -msgid "Simple" -msgstr "" - -#: ../gtk/gtkimmulticontext.c:563 -msgctxt "input method menu" -msgid "System" -msgstr "" - -#: ../gtk/gtkimmulticontext.c:573 -msgctxt "input method menu" -msgid "None" -msgstr "" - -#: ../gtk/gtkimmulticontext.c:656 -#, c-format -msgctxt "input method menu" -msgid "System (%s)" -msgstr "" - -#: ../gtk/gtkinputdialog.c:192 -msgid "Input" -msgstr "" - -#: ../gtk/gtkinputdialog.c:207 -msgid "No extended input devices" -msgstr "" - -#: ../gtk/gtkinputdialog.c:220 -msgid "_Device:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:237 -msgid "Disabled" -msgstr "" - -#: ../gtk/gtkinputdialog.c:244 -msgid "Screen" -msgstr "" - -#: ../gtk/gtkinputdialog.c:251 -msgid "Window" -msgstr "" - -#: ../gtk/gtkinputdialog.c:258 -msgid "_Mode:" -msgstr "" - -#. The axis listbox -#: ../gtk/gtkinputdialog.c:279 -msgid "Axes" -msgstr "" - -#. Keys listbox -#: ../gtk/gtkinputdialog.c:297 -msgid "Keys" -msgstr "" - -#: ../gtk/gtkinputdialog.c:524 -msgid "_X:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:525 -msgid "_Y:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:526 -msgid "_Pressure:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:527 -msgid "X _tilt:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:528 -msgid "Y t_ilt:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:529 -msgid "_Wheel:" -msgstr "" - -#: ../gtk/gtkinputdialog.c:581 -msgid "none" -msgstr "" - -#: ../gtk/gtkinputdialog.c:618 ../gtk/gtkinputdialog.c:654 -msgid "(disabled)" -msgstr "" - -#: ../gtk/gtkinputdialog.c:647 -msgid "(unknown)" -msgstr "" - -#. and clear button -#: ../gtk/gtkinputdialog.c:751 -msgid "Cl_ear" -msgstr "" - -#. Open Link -#: ../gtk/gtklabel.c:5700 -msgid "_Open Link" -msgstr "_Bikkula nyunzi" - -#. Copy Link Address -#: ../gtk/gtklabel.c:5712 -msgid "Copy _Link Address" -msgstr "Kwata e_ndagiriro enyunzi kw'egguka" - -#: ../gtk/gtklinkbutton.c:428 -msgid "Copy URL" -msgstr "Kwata koppi ya URL" - -#: ../gtk/gtklinkbutton.c:586 -msgid "Invalid URI" -msgstr "" - -#. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:452 -msgid "Load additional GTK+ modules" -msgstr "" - -#. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:453 -msgid "MODULES" -msgstr "" - -#. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:455 -msgid "Make all warnings fatal" -msgstr "" - -#. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:458 -msgid "GTK+ debugging flags to set" -msgstr "" - -#. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:461 -msgid "GTK+ debugging flags to unset" -msgstr "" - -#. Translate to default:RTL if you want your widgets -#. * to be RTL, otherwise translate to default:LTR. -#. * Do *not* translate it to "predefinito:LTR", if it -#. * it isn't default:LTR or default:RTL it will not work -#. -#: ../gtk/gtkmain.c:731 -msgid "default:LTR" -msgstr "" - -#: ../gtk/gtkmain.c:796 -#, c-format -msgid "Cannot open display: %s" -msgstr "" - -#: ../gtk/gtkmain.c:833 -msgid "GTK+ Options" -msgstr "" - -#: ../gtk/gtkmain.c:833 -msgid "Show GTK+ Options" -msgstr "" - -#: ../gtk/gtkmountoperation.c:489 -msgid "Co_nnect" -msgstr "" - -#: ../gtk/gtkmountoperation.c:556 -msgid "Connect _anonymously" -msgstr "" - -#: ../gtk/gtkmountoperation.c:565 -msgid "Connect as u_ser:" -msgstr "" - -#: ../gtk/gtkmountoperation.c:603 -msgid "_Username:" -msgstr "" - -#: ../gtk/gtkmountoperation.c:608 -msgid "_Domain:" -msgstr "" - -#: ../gtk/gtkmountoperation.c:614 -msgid "_Password:" -msgstr "" - -#: ../gtk/gtkmountoperation.c:632 -msgid "Forget password _immediately" -msgstr "" - -#: ../gtk/gtkmountoperation.c:642 -msgid "Remember password until you _logout" -msgstr "" - -#: ../gtk/gtkmountoperation.c:652 -msgid "Remember _forever" -msgstr "" - -#: ../gtk/gtkmountoperation.c:881 -#, c-format -msgid "Unknown Application (PID %d)" -msgstr "" - -#: ../gtk/gtkmountoperation.c:1064 -msgid "Unable to end process" -msgstr "" - -#: ../gtk/gtkmountoperation.c:1101 -msgid "_End Process" -msgstr "" - -#: ../gtk/gtkmountoperation-stub.c:64 -#, c-format -msgid "Cannot kill process with PID %d. Operation is not implemented." -msgstr "" - -#. translators: this string is a name for the 'less' command -#: ../gtk/gtkmountoperation-x11.c:865 -msgid "Terminal Pager" -msgstr "" - -#: ../gtk/gtkmountoperation-x11.c:866 -msgid "Top Command" -msgstr "" - -#: ../gtk/gtkmountoperation-x11.c:867 -msgid "Bourne Again Shell" -msgstr "" - -#: ../gtk/gtkmountoperation-x11.c:868 -msgid "Bourne Shell" -msgstr "" - -#: ../gtk/gtkmountoperation-x11.c:869 -msgid "Z Shell" -msgstr "" - -#: ../gtk/gtkmountoperation-x11.c:966 -#, c-format -msgid "Cannot end process with PID %d: %s" -msgstr "" - -#: ../gtk/gtknotebook.c:4705 ../gtk/gtknotebook.c:7311 -#, c-format -msgid "Page %u" -msgstr "" - -#: ../gtk/gtkpagesetup.c:597 ../gtk/gtkpapersize.c:826 -#: ../gtk/gtkpapersize.c:868 -msgid "Not a valid page setup file" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:167 -msgid "Any Printer" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:167 -msgid "For portable documents" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:797 -#, c-format -msgid "" -"Margins:\n" -" Left: %s %s\n" -" Right: %s %s\n" -" Top: %s %s\n" -" Bottom: %s %s" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:846 ../gtk/gtkprintunixdialog.c:3277 -msgid "Manage Custom Sizes..." -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:894 -msgid "_Format for:" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:916 ../gtk/gtkprintunixdialog.c:3449 -msgid "_Paper size:" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:947 -msgid "_Orientation:" -msgstr "" - -#: ../gtk/gtkpagesetupunixdialog.c:1011 ../gtk/gtkprintunixdialog.c:3511 -msgid "Page Setup" -msgstr "" - -#: ../gtk/gtkpathbar.c:151 -msgid "Up Path" -msgstr "" - -#: ../gtk/gtkpathbar.c:153 -msgid "Down Path" -msgstr "" - -#: ../gtk/gtkpathbar.c:1469 -msgid "File System Root" -msgstr "" - -#: ../gtk/gtkprintbackend.c:749 -msgid "Authentication" -msgstr "" - -#: ../gtk/gtkprinteroptionwidget.c:695 -msgid "Not available" -msgstr "" - -#: ../gtk/gtkprinteroptionwidget.c:814 -msgid "_Save in folder:" -msgstr "" - -#. translators: this string is the default job title for print -#. * jobs. %s gets replaced by the application name, %d gets replaced -#. * by the job number. -#. -#: ../gtk/gtkprintoperation.c:190 -#, c-format -msgid "%s job #%d" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1687 -msgctxt "print operation status" -msgid "Initial state" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1688 -msgctxt "print operation status" -msgid "Preparing to print" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1689 -msgctxt "print operation status" -msgid "Generating data" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1690 -msgctxt "print operation status" -msgid "Sending data" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1691 -msgctxt "print operation status" -msgid "Waiting" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1692 -msgctxt "print operation status" -msgid "Blocking on issue" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1693 -msgctxt "print operation status" -msgid "Printing" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1694 -msgctxt "print operation status" -msgid "Finished" -msgstr "" - -#: ../gtk/gtkprintoperation.c:1695 -msgctxt "print operation status" -msgid "Finished with error" -msgstr "" - -#: ../gtk/gtkprintoperation.c:2254 -#, c-format -msgid "Preparing %d" -msgstr "" - -#: ../gtk/gtkprintoperation.c:2256 ../gtk/gtkprintoperation.c:2875 -msgid "Preparing" -msgstr "" - -#: ../gtk/gtkprintoperation.c:2259 -#, c-format -msgid "Printing %d" -msgstr "" - -#: ../gtk/gtkprintoperation.c:2905 -msgid "Error creating print preview" -msgstr "" - -#: ../gtk/gtkprintoperation.c:2908 -msgid "The most probable reason is that a temporary file could not be created." -msgstr "" - -#: ../gtk/gtkprintoperation-unix.c:297 ../gtk/gtkprintoperation-unix.c:314 -msgid "Error launching preview" -msgstr "" - -#: ../gtk/gtkprintoperation-unix.c:358 -msgid "Error printing" -msgstr "" - -#: ../gtk/gtkprintoperation-unix.c:494 ../gtk/gtkprintoperation-win32.c:1447 -msgid "Application" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:612 -msgid "Printer offline" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:614 -msgid "Out of paper" -msgstr "" - -#. Translators: this is a printer status. -#: ../gtk/gtkprintoperation-win32.c:616 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 -msgid "Paused" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:618 -msgid "Need user intervention" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:718 -msgid "Custom size" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1539 -msgid "No printer found" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1566 -msgid "Invalid argument to CreateDC" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1602 ../gtk/gtkprintoperation-win32.c:1829 -msgid "Error from StartDoc" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1684 ../gtk/gtkprintoperation-win32.c:1707 -#: ../gtk/gtkprintoperation-win32.c:1755 -msgid "Not enough free memory" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1760 -msgid "Invalid argument to PrintDlgEx" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1765 -msgid "Invalid pointer to PrintDlgEx" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1770 -msgid "Invalid handle to PrintDlgEx" -msgstr "" - -#: ../gtk/gtkprintoperation-win32.c:1775 -msgid "Unspecified error" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:614 -msgid "Getting printer information failed" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:1862 -msgid "Getting printer information..." -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2132 -msgid "Printer" -msgstr "" - -#. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2142 -msgid "Location" -msgstr "Obusangiro" - -#. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2153 -msgid "Status" -msgstr "Embeera" - -#: ../gtk/gtkprintunixdialog.c:2179 -msgid "Range" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2183 -msgid "_All Pages" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2190 -msgid "C_urrent Page" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2200 -msgid "Se_lection" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2209 -msgid "Pag_es:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2210 -msgid "" -"Specify one or more page ranges,\n" -" e.g. 1-3,7,11" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2220 -msgid "Pages" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2233 -msgid "Copies" -msgstr "" - -#. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2238 -msgid "Copie_s:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2256 -msgid "C_ollate" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2264 -msgid "_Reverse" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:2284 -msgid "General" -msgstr "" - -#. Translators: These strings name the possible arrangements of -#. * multiple pages on a sheet when printing (same as in gtkprintbackendcups.c) -#. -#. Translators: These strings name the possible arrangements of -#. * multiple pages on a sheet when printing -#. -#: ../gtk/gtkprintunixdialog.c:3010 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 -msgid "Left to right, top to bottom" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3010 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 -msgid "Left to right, bottom to top" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3011 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 -msgid "Right to left, top to bottom" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3011 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 -msgid "Right to left, bottom to top" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3012 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 -msgid "Top to bottom, left to right" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3012 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 -msgid "Top to bottom, right to left" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3013 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 -msgid "Bottom to top, left to right" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3013 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 -msgid "Bottom to top, right to left" -msgstr "" - -#. Translators, this string is used to label the option in the print -#. * dialog that controls in what order multiple pages are arranged -#. -#: ../gtk/gtkprintunixdialog.c:3017 ../gtk/gtkprintunixdialog.c:3030 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3543 -msgid "Page Ordering" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3046 -msgid "Left to right" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3047 -msgid "Right to left" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3059 -msgid "Top to bottom" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3060 -msgid "Bottom to top" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3300 -msgid "Layout" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3304 -msgid "T_wo-sided:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3319 -msgid "Pages per _side:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3336 -msgid "Page or_dering:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3352 -msgid "_Only print:" -msgstr "" - -#. In enum order -#: ../gtk/gtkprintunixdialog.c:3367 -msgid "All sheets" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3368 -msgid "Even sheets" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3369 -msgid "Odd sheets" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3372 -msgid "Sc_ale:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3399 -msgid "Paper" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3403 -msgid "Paper _type:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3418 -msgid "Paper _source:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3433 -msgid "Output t_ray:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3473 -msgid "Or_ientation:" -msgstr "" - -#. In enum order -#: ../gtk/gtkprintunixdialog.c:3488 -msgid "Portrait" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3489 -msgid "Landscape" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3490 -msgid "Reverse portrait" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3491 -msgid "Reverse landscape" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3536 -msgid "Job Details" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3542 -msgid "Pri_ority:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3557 -msgid "_Billing info:" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3575 -msgid "Print Document" -msgstr "" - -#. Translators: this is one of the choices for the print at option -#. * in the print dialog -#. -#: ../gtk/gtkprintunixdialog.c:3584 -msgid "_Now" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3595 -msgid "A_t:" -msgstr "" - -#. Translators: Ability to parse the am/pm format depends on actual locale. -#. * You can remove the am/pm values below for your locale if they are not -#. * supported. -#. -#: ../gtk/gtkprintunixdialog.c:3601 -msgid "" -"Specify the time of print,\n" -" e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3611 -msgid "Time of print" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3627 -msgid "On _hold" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3628 -msgid "Hold the job until it is explicitly released" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3648 -msgid "Add Cover Page" -msgstr "" - -#. Translators, this is the label used for the option in the print -#. * dialog that controls the front cover page. -#. -#: ../gtk/gtkprintunixdialog.c:3657 -msgid "Be_fore:" -msgstr "" - -#. Translators, this is the label used for the option in the print -#. * dialog that controls the back cover page. -#. -#: ../gtk/gtkprintunixdialog.c:3675 -msgid "_After:" -msgstr "" - -#. Translators: this is the tab label for the notebook tab containing -#. * job-specific options in the print dialog -#. -#: ../gtk/gtkprintunixdialog.c:3693 -msgid "Job" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3759 -msgid "Advanced" -msgstr "" - -#. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3794 -msgid "Image Quality" -msgstr "" - -#. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3798 -msgid "Color" -msgstr "" - -#. Translators: this will appear as tab label in print dialog. -#. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3803 -msgid "Finishing" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3813 -msgid "Some of the settings in the dialog conflict" -msgstr "" - -#: ../gtk/gtkprintunixdialog.c:3836 -msgid "Print" -msgstr "" - -#: ../gtk/gtkrc.c:2878 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "" - -#: ../gtk/gtkrc.c:3508 ../gtk/gtkrc.c:3511 -#, c-format -msgid "Unable to locate image file in pixmap_path: \"%s\"" -msgstr "" - -#: ../gtk/gtkrecentaction.c:154 ../gtk/gtkrecentaction.c:162 -#: ../gtk/gtkrecentchoosermenu.c:588 ../gtk/gtkrecentchoosermenu.c:596 -#, c-format -msgid "This function is not implemented for widgets of class '%s'" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:481 -msgid "Select which type of documents are shown" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1134 ../gtk/gtkrecentchooserdefault.c:1171 -#, c-format -msgid "No item for URI '%s' found" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1298 -msgid "Untitled filter" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1651 -msgid "Could not remove item" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1695 -msgid "Could not clear list" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1779 -msgid "Copy _Location" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1792 -msgid "_Remove From List" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1801 -msgid "_Clear List" -msgstr "" - -#: ../gtk/gtkrecentchooserdefault.c:1815 -msgid "Show _Private Resources" -msgstr "" - -#. we create a placeholder menuitem, to be used in case -#. * the menu is empty. this placeholder will stay around -#. * for the entire lifetime of the menu, and we just hide it -#. * when it's not used. we have to do this, and do it here, -#. * because we need a marker for the beginning of the recent -#. * items list, so that we can insert the new items at the -#. * right place when idly populating the menu in case the -#. * user appended or prepended custom menu items to the -#. * recent chooser menu widget. -#. -#: ../gtk/gtkrecentchoosermenu.c:342 -msgid "No items found" -msgstr "" - -#: ../gtk/gtkrecentchoosermenu.c:508 ../gtk/gtkrecentchoosermenu.c:564 -#, c-format -msgid "No recently used resource found with URI `%s'" -msgstr "" - -#: ../gtk/gtkrecentchoosermenu.c:775 -#, c-format -msgid "Open '%s'" -msgstr "" - -#: ../gtk/gtkrecentchoosermenu.c:805 -msgid "Unknown item" -msgstr "" - -#. This is the label format that is used for the first 10 items -#. * in a recent files menu. The %d is the number of the item, -#. * the %s is the name of the item. Please keep the _ in front -#. * of the number to give these menu items a mnemonic. -#. -#: ../gtk/gtkrecentchoosermenu.c:816 -#, c-format -msgctxt "recent menu label" -msgid "_%d. %s" -msgstr "" - -#. This is the format that is used for items in a recent files menu. -#. * The %d is the number of the item, the %s is the name of the item. -#. -#: ../gtk/gtkrecentchoosermenu.c:821 -#, c-format -msgctxt "recent menu label" -msgid "%d. %s" -msgstr "" - -#: ../gtk/gtkrecentmanager.c:1033 ../gtk/gtkrecentmanager.c:1046 -#: ../gtk/gtkrecentmanager.c:1184 ../gtk/gtkrecentmanager.c:1194 -#: ../gtk/gtkrecentmanager.c:1247 ../gtk/gtkrecentmanager.c:1256 -#: ../gtk/gtkrecentmanager.c:1271 -#, c-format -msgid "Unable to find an item with URI '%s'" -msgstr "" - -#: ../gtk/gtkspinner.c:458 -msgctxt "throbbing progress animation widget" -msgid "Spinner" -msgstr "" - -#: ../gtk/gtkspinner.c:459 -msgid "Provides visual indication of progress" -msgstr "" - -#. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate -#: ../gtk/gtkstock.c:314 -msgctxt "Stock label" -msgid "Information" -msgstr "Okumanyisa" - -#: ../gtk/gtkstock.c:315 -msgctxt "Stock label" -msgid "Warning" -msgstr "Kulabula" - -#: ../gtk/gtkstock.c:316 -msgctxt "Stock label" -msgid "Error" -msgstr "Kiremya" - -#: ../gtk/gtkstock.c:317 -msgctxt "Stock label" -msgid "Question" -msgstr "Kibuuzo" - -#. FIXME these need accelerators when appropriate, and -#. * need the mnemonics to be rationalized -#. -#: ../gtk/gtkstock.c:322 -msgctxt "Stock label" -msgid "_About" -msgstr "K_wanjula" - -#: ../gtk/gtkstock.c:323 -msgctxt "Stock label" -msgid "_Add" -msgstr "_Yongerako" - -#: ../gtk/gtkstock.c:324 -msgctxt "Stock label" -msgid "_Apply" -msgstr "_Kaza" - -#: ../gtk/gtkstock.c:325 -msgctxt "Stock label" -msgid "_Bold" -msgstr "_Nziggumivu" - -#: ../gtk/gtkstock.c:326 -msgctxt "Stock label" -msgid "_Cancel" -msgstr "_Sazamu" - -#: ../gtk/gtkstock.c:327 -msgctxt "Stock label" -msgid "_CD-Rom" -msgstr "_CDROMU" - -#: ../gtk/gtkstock.c:328 -msgctxt "Stock label" -msgid "_Clear" -msgstr "S_iimula" - -#: ../gtk/gtkstock.c:329 -msgctxt "Stock label" -msgid "_Close" -msgstr "_Gala" - -#: ../gtk/gtkstock.c:330 -msgctxt "Stock label" -msgid "C_onnect" -msgstr "We_yungeko" - -#: ../gtk/gtkstock.c:331 -msgctxt "Stock label" -msgid "_Convert" -msgstr "_Fuula" - -#: ../gtk/gtkstock.c:332 -msgctxt "Stock label" -msgid "_Copy" -msgstr "_Koppa" - -#: ../gtk/gtkstock.c:333 -msgctxt "Stock label" -msgid "Cu_t" -msgstr "Si_tulawo" - -#: ../gtk/gtkstock.c:334 -msgctxt "Stock label" -msgid "_Delete" -msgstr "_Gyawo" - -#: ../gtk/gtkstock.c:335 -msgctxt "Stock label" -msgid "_Discard" -msgstr "L_eka" - -#: ../gtk/gtkstock.c:336 -msgctxt "Stock label" -msgid "_Disconnect" -msgstr "We_kutuleko" - -#: ../gtk/gtkstock.c:337 -msgctxt "Stock label" -msgid "_Execute" -msgstr "_Tandika" - -#: ../gtk/gtkstock.c:338 -msgctxt "Stock label" -msgid "_Edit" -msgstr "_Kyusa" - -#: ../gtk/gtkstock.c:339 -msgctxt "Stock label" -msgid "_Find" -msgstr "_Zuula" - -#: ../gtk/gtkstock.c:340 -msgctxt "Stock label" -msgid "Find and _Replace" -msgstr "Zuula ozze_wo ekirala" - -#: ../gtk/gtkstock.c:341 -msgctxt "Stock label" -msgid "_Floppy" -msgstr "_Fuloppi" - -#: ../gtk/gtkstock.c:342 -msgctxt "Stock label" -msgid "_Fullscreen" -msgstr "_Malayo olutimbe" - -#: ../gtk/gtkstock.c:343 -msgctxt "Stock label" -msgid "_Leave Fullscreen" -msgstr "_Ta olutimbe" - -#. This is a navigation label as in "go to the bottom of the page" -#: ../gtk/gtkstock.c:345 -msgctxt "Stock label, navigation" -msgid "_Bottom" -msgstr "Ku _ntobo" - -#. This is a navigation label as in "go to the first page" -#: ../gtk/gtkstock.c:347 -msgctxt "Stock label, navigation" -msgid "_First" -msgstr "Awa_sooka" - -#. This is a navigation label as in "go to the last page" -#: ../gtk/gtkstock.c:349 -msgctxt "Stock label, navigation" -msgid "_Last" -msgstr "Awas_emba" - -#. This is a navigation label as in "go to the top of the page" -#: ../gtk/gtkstock.c:351 -msgctxt "Stock label, navigation" -msgid "_Top" -msgstr "Ku nt_andikwa" - -#. This is a navigation label as in "go back" -#: ../gtk/gtkstock.c:353 -msgctxt "Stock label, navigation" -msgid "_Back" -msgstr "_Mabega" - -#. This is a navigation label as in "go down" -#: ../gtk/gtkstock.c:355 -msgctxt "Stock label, navigation" -msgid "_Down" -msgstr "_Serengesa" - -#. This is a navigation label as in "go forward" -#: ../gtk/gtkstock.c:357 -msgctxt "Stock label, navigation" -msgid "_Forward" -msgstr "_Maaso" - -#. This is a navigation label as in "go up" -#: ../gtk/gtkstock.c:359 -msgctxt "Stock label, navigation" -msgid "_Up" -msgstr "_Yambusa" - -#: ../gtk/gtkstock.c:360 -msgctxt "Stock label" -msgid "_Harddisk" -msgstr "_Disiki ya munda" - -#: ../gtk/gtkstock.c:361 -msgctxt "Stock label" -msgid "_Help" -msgstr "_Nymaba" - -#: ../gtk/gtkstock.c:362 -msgctxt "Stock label" -msgid "_Home" -msgstr "_Kka" - -#: ../gtk/gtkstock.c:363 -msgctxt "Stock label" -msgid "Increase Indent" -msgstr "" - -#: ../gtk/gtkstock.c:364 -msgctxt "Stock label" -msgid "Decrease Indent" -msgstr "" - -#: ../gtk/gtkstock.c:365 -msgctxt "Stock label" -msgid "_Index" -msgstr "N_dagiriro" - -#: ../gtk/gtkstock.c:366 -msgctxt "Stock label" -msgid "_Information" -msgstr "Oku_manyisa" - -#: ../gtk/gtkstock.c:367 -msgctxt "Stock label" -msgid "_Italic" -msgstr "" - -#: ../gtk/gtkstock.c:368 -msgctxt "Stock label" -msgid "_Jump to" -msgstr "_Buukira" - -#. This is about text justification, "centered text" -#: ../gtk/gtkstock.c:370 -msgctxt "Stock label" -msgid "_Center" -msgstr "" - -#. This is about text justification -#: ../gtk/gtkstock.c:372 -msgctxt "Stock label" -msgid "_Fill" -msgstr "" - -#. This is about text justification, "left-justified text" -#: ../gtk/gtkstock.c:374 -msgctxt "Stock label" -msgid "_Left" -msgstr "" - -#. This is about text justification, "right-justified text" -#: ../gtk/gtkstock.c:376 -msgctxt "Stock label" -msgid "_Right" -msgstr "" - -#. Media label, as in "fast forward" -#: ../gtk/gtkstock.c:379 -msgctxt "Stock label, media" -msgid "_Forward" -msgstr "" - -#. Media label, as in "next song" -#: ../gtk/gtkstock.c:381 -msgctxt "Stock label, media" -msgid "_Next" -msgstr "" - -#. Media label, as in "pause music" -#: ../gtk/gtkstock.c:383 -msgctxt "Stock label, media" -msgid "P_ause" -msgstr "" - -#. Media label, as in "play music" -#: ../gtk/gtkstock.c:385 -msgctxt "Stock label, media" -msgid "_Play" -msgstr "" - -#. Media label, as in "previous song" -#: ../gtk/gtkstock.c:387 -msgctxt "Stock label, media" -msgid "Pre_vious" -msgstr "" - -#. Media label -#: ../gtk/gtkstock.c:389 -msgctxt "Stock label, media" -msgid "_Record" -msgstr "" - -#. Media label -#: ../gtk/gtkstock.c:391 -msgctxt "Stock label, media" -msgid "R_ewind" -msgstr "" - -#. Media label -#: ../gtk/gtkstock.c:393 -msgctxt "Stock label, media" -msgid "_Stop" -msgstr "" - -#: ../gtk/gtkstock.c:394 -msgctxt "Stock label" -msgid "_Network" -msgstr "Ka_yungirizi" - -#: ../gtk/gtkstock.c:395 -msgctxt "Stock label" -msgid "_New" -msgstr "" - -#: ../gtk/gtkstock.c:396 -msgctxt "Stock label" -msgid "_No" -msgstr "_Nedda" - -#: ../gtk/gtkstock.c:397 -msgctxt "Stock label" -msgid "_OK" -msgstr "_Kale" - -#: ../gtk/gtkstock.c:398 -msgctxt "Stock label" -msgid "_Open" -msgstr "_Bikkula" - -#. Page orientation -#: ../gtk/gtkstock.c:400 -msgctxt "Stock label" -msgid "Landscape" -msgstr "Bugazi" - -#. Page orientation -#: ../gtk/gtkstock.c:402 -msgctxt "Stock label" -msgid "Portrait" -msgstr "Busimbalaala" - -#. Page orientation -#: ../gtk/gtkstock.c:404 -msgctxt "Stock label" -msgid "Reverse landscape" -msgstr "" - -#. Page orientation -#: ../gtk/gtkstock.c:406 -msgctxt "Stock label" -msgid "Reverse portrait" -msgstr "" - -#: ../gtk/gtkstock.c:407 -msgctxt "Stock label" -msgid "Page Set_up" -msgstr "Nteekateeka y'olupapula" - -#: ../gtk/gtkstock.c:408 -msgctxt "Stock label" -msgid "_Paste" -msgstr "_Paatiika" - -#: ../gtk/gtkstock.c:409 -msgctxt "Stock label" -msgid "_Preferences" -msgstr "_Nteekateeka" - -#: ../gtk/gtkstock.c:410 -msgctxt "Stock label" -msgid "_Print" -msgstr "_Kubisa" - -#: ../gtk/gtkstock.c:411 -msgctxt "Stock label" -msgid "Print Pre_view" -msgstr "Kebera enfaanana y'ebinaakubibwa" - -#: ../gtk/gtkstock.c:412 -msgctxt "Stock label" -msgid "_Properties" -msgstr "Ebi_kwata ku fayiro" - -#: ../gtk/gtkstock.c:413 -msgctxt "Stock label" -msgid "_Quit" -msgstr "_Mala" - -#: ../gtk/gtkstock.c:414 -msgctxt "Stock label" -msgid "_Redo" -msgstr "_Zawo" - -#: ../gtk/gtkstock.c:415 -msgctxt "Stock label" -msgid "_Refresh" -msgstr "" - -#: ../gtk/gtkstock.c:416 -msgctxt "Stock label" -msgid "_Remove" -msgstr "_Gyawo" - -#: ../gtk/gtkstock.c:417 -msgctxt "Stock label" -msgid "_Revert" -msgstr "_Dda ku by'edda" - -#: ../gtk/gtkstock.c:418 -msgctxt "Stock label" -msgid "_Save" -msgstr "_Kaza" - -#: ../gtk/gtkstock.c:419 -msgctxt "Stock label" -msgid "Save _As" -msgstr "Gyamu ko_ppi" - -#: ../gtk/gtkstock.c:420 -msgctxt "Stock label" -msgid "Select _All" -msgstr "Londa by_onna" - -#: ../gtk/gtkstock.c:421 -msgctxt "Stock label" -msgid "_Color" -msgstr "_Langi" - -#: ../gtk/gtkstock.c:422 -msgctxt "Stock label" -msgid "_Font" -msgstr "N_kula y'ennukuta" - -#. Sorting direction -#: ../gtk/gtkstock.c:424 -msgctxt "Stock label" -msgid "_Ascending" -msgstr "K'_ambukiriro" - -#. Sorting direction -#: ../gtk/gtkstock.c:426 -msgctxt "Stock label" -msgid "_Descending" -msgstr "Ka_kkiririro" - -#: ../gtk/gtkstock.c:427 -msgctxt "Stock label" -msgid "_Spell Check" -msgstr "Kebera m_pandika" - -#: ../gtk/gtkstock.c:428 -msgctxt "Stock label" -msgid "_Stop" -msgstr "_Yimiriza" - -#. Font variant -#: ../gtk/gtkstock.c:430 -msgctxt "Stock label" -msgid "_Strikethrough" -msgstr "" - -#: ../gtk/gtkstock.c:431 -msgctxt "Stock label" -msgid "_Undelete" -msgstr "Komya_wo" - -#. Font variant -#: ../gtk/gtkstock.c:433 -msgctxt "Stock label" -msgid "_Underline" -msgstr "" - -#: ../gtk/gtkstock.c:434 -msgctxt "Stock label" -msgid "_Undo" -msgstr "_Julula" - -#: ../gtk/gtkstock.c:435 -msgctxt "Stock label" -msgid "_Yes" -msgstr "_Ye" - -#. Zoom -#: ../gtk/gtkstock.c:437 -msgctxt "Stock label" -msgid "_Normal Size" -msgstr "" - -#. Zoom -#: ../gtk/gtkstock.c:439 -msgctxt "Stock label" -msgid "Best _Fit" -msgstr "" - -#: ../gtk/gtkstock.c:440 -msgctxt "Stock label" -msgid "Zoom _In" -msgstr "_Zimbukulusa" - -#: ../gtk/gtkstock.c:441 -msgctxt "Stock label" -msgid "Zoom _Out" -msgstr "_Kendeeza" - -#: ../gtk/gtktextbufferrichtext.c:651 -#, c-format -msgid "Unknown error when trying to deserialize %s" -msgstr "" - -#: ../gtk/gtktextbufferrichtext.c:710 -#, c-format -msgid "No deserialize function found for format %s" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:796 ../gtk/gtktextbufferserialize.c:822 -#, c-format -msgid "Both \"id\" and \"name\" were found on the <%s> element" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:806 ../gtk/gtktextbufferserialize.c:832 -#, c-format -msgid "The attribute \"%s\" was found twice on the <%s> element" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:846 -#, c-format -msgid "<%s> element has invalid ID \"%s\"" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:856 -#, c-format -msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:943 -#, c-format -msgid "Attribute \"%s\" repeated twice on the same <%s> element" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:961 ../gtk/gtktextbufferserialize.c:986 -#, c-format -msgid "Attribute \"%s\" is invalid on <%s> element in this context" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1022 -#, c-format -msgid "Tag \"%s\" has not been defined." -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1034 -msgid "Anonymous tag found and tags can not be created." -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1045 -#, c-format -msgid "Tag \"%s\" does not exist in buffer and tags can not be created." -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1144 ../gtk/gtktextbufferserialize.c:1219 -#: ../gtk/gtktextbufferserialize.c:1320 ../gtk/gtktextbufferserialize.c:1394 -#, c-format -msgid "Element <%s> is not allowed below <%s>" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1175 -#, c-format -msgid "\"%s\" is not a valid attribute type" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1183 -#, c-format -msgid "\"%s\" is not a valid attribute name" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1193 -#, c-format -msgid "" -"\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1202 -#, c-format -msgid "\"%s\" is not a valid value for attribute \"%s\"" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1285 -#, c-format -msgid "Tag \"%s\" already defined" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1296 -#, c-format -msgid "Tag \"%s\" has invalid priority \"%s\"" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1349 -#, c-format -msgid "Outermost element in text must be not <%s>" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1358 ../gtk/gtktextbufferserialize.c:1374 -#, c-format -msgid "A <%s> element has already been specified" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1380 -msgid "A element can't occur before a element" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1779 -msgid "Serialized data is malformed" -msgstr "" - -#: ../gtk/gtktextbufferserialize.c:1857 -msgid "" -"Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" -msgstr "" - -#: ../gtk/gtktextutil.c:61 -msgid "LRM _Left-to-right mark" -msgstr "" - -#: ../gtk/gtktextutil.c:62 -msgid "RLM _Right-to-left mark" -msgstr "" - -#: ../gtk/gtktextutil.c:63 -msgid "LRE Left-to-right _embedding" -msgstr "" - -#: ../gtk/gtktextutil.c:64 -msgid "RLE Right-to-left e_mbedding" -msgstr "" - -#: ../gtk/gtktextutil.c:65 -msgid "LRO Left-to-right _override" -msgstr "" - -#: ../gtk/gtktextutil.c:66 -msgid "RLO Right-to-left o_verride" -msgstr "" - -#: ../gtk/gtktextutil.c:67 -msgid "PDF _Pop directional formatting" -msgstr "" - -#: ../gtk/gtktextutil.c:68 -msgid "ZWS _Zero width space" -msgstr "" - -#: ../gtk/gtktextutil.c:69 -msgid "ZWJ Zero width _joiner" -msgstr "" - -#: ../gtk/gtktextutil.c:70 -msgid "ZWNJ Zero width _non-joiner" -msgstr "" - -#: ../gtk/gtkthemes.c:71 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "" - -#: ../gtk/gtktipsquery.c:188 -msgid "--- No Tip ---" -msgstr "" - -#: ../gtk/gtkuimanager.c:1505 -#, c-format -msgid "Unexpected start tag '%s' on line %d char %d" -msgstr "" - -#: ../gtk/gtkuimanager.c:1595 -#, c-format -msgid "Unexpected character data on line %d char %d" -msgstr "" - -#: ../gtk/gtkuimanager.c:2427 -msgid "Empty" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:83 -msgid "Volume" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:85 -msgid "Turns volume down or up" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:88 -msgid "Adjusts the volume" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:91 ../gtk/gtkvolumebutton.c:94 -msgid "Volume Down" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:93 -msgid "Decreases the volume" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:97 ../gtk/gtkvolumebutton.c:100 -msgid "Volume Up" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:99 -msgid "Increases the volume" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:157 -msgid "Muted" -msgstr "" - -#: ../gtk/gtkvolumebutton.c:161 -msgid "Full Volume" -msgstr "" - -#. Translators: this is the percentage of the current volume, -#. * as used in the tooltip, eg. "49 %". -#. * Translate the "%d" to "%Id" if you want to use localised digits, -#. * or otherwise translate the "%d" to "%d". -#. -#: ../gtk/gtkvolumebutton.c:174 -#, c-format -msgctxt "volume percentage" -msgid "%d %%" -msgstr "" - -#: ../gtk/paper_names_offsets.c:4 -msgctxt "paper size" -msgid "asme_f" -msgstr "" - -#: ../gtk/paper_names_offsets.c:5 -msgctxt "paper size" -msgid "A0x2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:6 -msgctxt "paper size" -msgid "A0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:7 -msgctxt "paper size" -msgid "A0x3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:8 -msgctxt "paper size" -msgid "A1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:9 -msgctxt "paper size" -msgid "A10" -msgstr "" - -#: ../gtk/paper_names_offsets.c:10 -msgctxt "paper size" -msgid "A1x3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:11 -msgctxt "paper size" -msgid "A1x4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:12 -msgctxt "paper size" -msgid "A2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:13 -msgctxt "paper size" -msgid "A2x3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:14 -msgctxt "paper size" -msgid "A2x4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:15 -msgctxt "paper size" -msgid "A2x5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:16 -msgctxt "paper size" -msgid "A3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:17 -msgctxt "paper size" -msgid "A3 Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:18 -msgctxt "paper size" -msgid "A3x3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:19 -msgctxt "paper size" -msgid "A3x4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:20 -msgctxt "paper size" -msgid "A3x5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:21 -msgctxt "paper size" -msgid "A3x6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:22 -msgctxt "paper size" -msgid "A3x7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:23 -msgctxt "paper size" -msgid "A4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:24 -msgctxt "paper size" -msgid "A4 Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:25 -msgctxt "paper size" -msgid "A4 Tab" -msgstr "" - -#: ../gtk/paper_names_offsets.c:26 -msgctxt "paper size" -msgid "A4x3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:27 -msgctxt "paper size" -msgid "A4x4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:28 -msgctxt "paper size" -msgid "A4x5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:29 -msgctxt "paper size" -msgid "A4x6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:30 -msgctxt "paper size" -msgid "A4x7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:31 -msgctxt "paper size" -msgid "A4x8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:32 -msgctxt "paper size" -msgid "A4x9" -msgstr "" - -#: ../gtk/paper_names_offsets.c:33 -msgctxt "paper size" -msgid "A5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:34 -msgctxt "paper size" -msgid "A5 Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:35 -msgctxt "paper size" -msgid "A6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:36 -msgctxt "paper size" -msgid "A7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:37 -msgctxt "paper size" -msgid "A8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:38 -msgctxt "paper size" -msgid "A9" -msgstr "" - -#: ../gtk/paper_names_offsets.c:39 -msgctxt "paper size" -msgid "B0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:40 -msgctxt "paper size" -msgid "B1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:41 -msgctxt "paper size" -msgid "B10" -msgstr "" - -#: ../gtk/paper_names_offsets.c:42 -msgctxt "paper size" -msgid "B2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:43 -msgctxt "paper size" -msgid "B3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:44 -msgctxt "paper size" -msgid "B4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:45 -msgctxt "paper size" -msgid "B5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:46 -msgctxt "paper size" -msgid "B5 Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:47 -msgctxt "paper size" -msgid "B6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:48 -msgctxt "paper size" -msgid "B6/C4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:49 -msgctxt "paper size" -msgid "B7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:50 -msgctxt "paper size" -msgid "B8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:51 -msgctxt "paper size" -msgid "B9" -msgstr "" - -#: ../gtk/paper_names_offsets.c:52 -msgctxt "paper size" -msgid "C0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:53 -msgctxt "paper size" -msgid "C1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:54 -msgctxt "paper size" -msgid "C10" -msgstr "" - -#: ../gtk/paper_names_offsets.c:55 -msgctxt "paper size" -msgid "C2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:56 -msgctxt "paper size" -msgid "C3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:57 -msgctxt "paper size" -msgid "C4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:58 -msgctxt "paper size" -msgid "C5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:59 -msgctxt "paper size" -msgid "C6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:60 -msgctxt "paper size" -msgid "C6/C5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:61 -msgctxt "paper size" -msgid "C7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:62 -msgctxt "paper size" -msgid "C7/C6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:63 -msgctxt "paper size" -msgid "C8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:64 -msgctxt "paper size" -msgid "C9" -msgstr "" - -#: ../gtk/paper_names_offsets.c:65 -msgctxt "paper size" -msgid "DL Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:66 -msgctxt "paper size" -msgid "RA0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:67 -msgctxt "paper size" -msgid "RA1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:68 -msgctxt "paper size" -msgid "RA2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:69 -msgctxt "paper size" -msgid "SRA0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:70 -msgctxt "paper size" -msgid "SRA1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:71 -msgctxt "paper size" -msgid "SRA2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:72 -msgctxt "paper size" -msgid "JB0" -msgstr "" - -#: ../gtk/paper_names_offsets.c:73 -msgctxt "paper size" -msgid "JB1" -msgstr "" - -#: ../gtk/paper_names_offsets.c:74 -msgctxt "paper size" -msgid "JB10" -msgstr "" - -#: ../gtk/paper_names_offsets.c:75 -msgctxt "paper size" -msgid "JB2" -msgstr "" - -#: ../gtk/paper_names_offsets.c:76 -msgctxt "paper size" -msgid "JB3" -msgstr "" - -#: ../gtk/paper_names_offsets.c:77 -msgctxt "paper size" -msgid "JB4" -msgstr "" - -#: ../gtk/paper_names_offsets.c:78 -msgctxt "paper size" -msgid "JB5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:79 -msgctxt "paper size" -msgid "JB6" -msgstr "" - -#: ../gtk/paper_names_offsets.c:80 -msgctxt "paper size" -msgid "JB7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:81 -msgctxt "paper size" -msgid "JB8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:82 -msgctxt "paper size" -msgid "JB9" -msgstr "" - -#: ../gtk/paper_names_offsets.c:83 -msgctxt "paper size" -msgid "jis exec" -msgstr "" - -#: ../gtk/paper_names_offsets.c:84 -msgctxt "paper size" -msgid "Choukei 2 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:85 -msgctxt "paper size" -msgid "Choukei 3 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:86 -msgctxt "paper size" -msgid "Choukei 4 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:87 -msgctxt "paper size" -msgid "hagaki (postcard)" -msgstr "" - -#: ../gtk/paper_names_offsets.c:88 -msgctxt "paper size" -msgid "kahu Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:89 -msgctxt "paper size" -msgid "kaku2 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:90 -msgctxt "paper size" -msgid "oufuku (reply postcard)" -msgstr "" - -#: ../gtk/paper_names_offsets.c:91 -msgctxt "paper size" -msgid "you4 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:92 -msgctxt "paper size" -msgid "10x11" -msgstr "" - -#: ../gtk/paper_names_offsets.c:93 -msgctxt "paper size" -msgid "10x13" -msgstr "" - -#: ../gtk/paper_names_offsets.c:94 -msgctxt "paper size" -msgid "10x14" -msgstr "" - -#: ../gtk/paper_names_offsets.c:95 ../gtk/paper_names_offsets.c:96 -msgctxt "paper size" -msgid "10x15" -msgstr "" - -#: ../gtk/paper_names_offsets.c:97 -msgctxt "paper size" -msgid "11x12" -msgstr "" - -#: ../gtk/paper_names_offsets.c:98 -msgctxt "paper size" -msgid "11x15" -msgstr "" - -#: ../gtk/paper_names_offsets.c:99 -msgctxt "paper size" -msgid "12x19" -msgstr "" - -#: ../gtk/paper_names_offsets.c:100 -msgctxt "paper size" -msgid "5x7" -msgstr "" - -#: ../gtk/paper_names_offsets.c:101 -msgctxt "paper size" -msgid "6x9 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:102 -msgctxt "paper size" -msgid "7x9 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:103 -msgctxt "paper size" -msgid "9x11 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:104 -msgctxt "paper size" -msgid "a2 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:105 -msgctxt "paper size" -msgid "Arch A" -msgstr "" - -#: ../gtk/paper_names_offsets.c:106 -msgctxt "paper size" -msgid "Arch B" -msgstr "" - -#: ../gtk/paper_names_offsets.c:107 -msgctxt "paper size" -msgid "Arch C" -msgstr "" - -#: ../gtk/paper_names_offsets.c:108 -msgctxt "paper size" -msgid "Arch D" -msgstr "" - -#: ../gtk/paper_names_offsets.c:109 -msgctxt "paper size" -msgid "Arch E" -msgstr "" - -#: ../gtk/paper_names_offsets.c:110 -msgctxt "paper size" -msgid "b-plus" -msgstr "" - -#: ../gtk/paper_names_offsets.c:111 -msgctxt "paper size" -msgid "c" -msgstr "" - -#: ../gtk/paper_names_offsets.c:112 -msgctxt "paper size" -msgid "c5 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:113 -msgctxt "paper size" -msgid "d" -msgstr "" - -#: ../gtk/paper_names_offsets.c:114 -msgctxt "paper size" -msgid "e" -msgstr "" - -#: ../gtk/paper_names_offsets.c:115 -msgctxt "paper size" -msgid "edp" -msgstr "" - -#: ../gtk/paper_names_offsets.c:116 -msgctxt "paper size" -msgid "European edp" -msgstr "" - -#: ../gtk/paper_names_offsets.c:117 -msgctxt "paper size" -msgid "Executive" -msgstr "" - -#: ../gtk/paper_names_offsets.c:118 -msgctxt "paper size" -msgid "f" -msgstr "" - -#: ../gtk/paper_names_offsets.c:119 -msgctxt "paper size" -msgid "FanFold European" -msgstr "" - -#: ../gtk/paper_names_offsets.c:120 -msgctxt "paper size" -msgid "FanFold US" -msgstr "" - -#: ../gtk/paper_names_offsets.c:121 -msgctxt "paper size" -msgid "FanFold German Legal" -msgstr "" - -#: ../gtk/paper_names_offsets.c:122 -msgctxt "paper size" -msgid "Government Legal" -msgstr "" - -#: ../gtk/paper_names_offsets.c:123 -msgctxt "paper size" -msgid "Government Letter" -msgstr "" - -#: ../gtk/paper_names_offsets.c:124 -msgctxt "paper size" -msgid "Index 3x5" -msgstr "" - -#: ../gtk/paper_names_offsets.c:125 -msgctxt "paper size" -msgid "Index 4x6 (postcard)" -msgstr "" - -#: ../gtk/paper_names_offsets.c:126 -msgctxt "paper size" -msgid "Index 4x6 ext" -msgstr "" - -#: ../gtk/paper_names_offsets.c:127 -msgctxt "paper size" -msgid "Index 5x8" -msgstr "" - -#: ../gtk/paper_names_offsets.c:128 -msgctxt "paper size" -msgid "Invoice" -msgstr "" - -#: ../gtk/paper_names_offsets.c:129 -msgctxt "paper size" -msgid "Tabloid" -msgstr "" - -#: ../gtk/paper_names_offsets.c:130 -msgctxt "paper size" -msgid "US Legal" -msgstr "" - -#: ../gtk/paper_names_offsets.c:131 -msgctxt "paper size" -msgid "US Legal Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:132 -msgctxt "paper size" -msgid "US Letter" -msgstr "" - -#: ../gtk/paper_names_offsets.c:133 -msgctxt "paper size" -msgid "US Letter Extra" -msgstr "" - -#: ../gtk/paper_names_offsets.c:134 -msgctxt "paper size" -msgid "US Letter Plus" -msgstr "" - -#: ../gtk/paper_names_offsets.c:135 -msgctxt "paper size" -msgid "Monarch Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:136 -msgctxt "paper size" -msgid "#10 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:137 -msgctxt "paper size" -msgid "#11 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:138 -msgctxt "paper size" -msgid "#12 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:139 -msgctxt "paper size" -msgid "#14 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:140 -msgctxt "paper size" -msgid "#9 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:141 -msgctxt "paper size" -msgid "Personal Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:142 -msgctxt "paper size" -msgid "Quarto" -msgstr "" - -#: ../gtk/paper_names_offsets.c:143 -msgctxt "paper size" -msgid "Super A" -msgstr "" - -#: ../gtk/paper_names_offsets.c:144 -msgctxt "paper size" -msgid "Super B" -msgstr "" - -#: ../gtk/paper_names_offsets.c:145 -msgctxt "paper size" -msgid "Wide Format" -msgstr "" - -#: ../gtk/paper_names_offsets.c:146 -msgctxt "paper size" -msgid "Dai-pa-kai" -msgstr "" - -#: ../gtk/paper_names_offsets.c:147 -msgctxt "paper size" -msgid "Folio" -msgstr "" - -#: ../gtk/paper_names_offsets.c:148 -msgctxt "paper size" -msgid "Folio sp" -msgstr "" - -#: ../gtk/paper_names_offsets.c:149 -msgctxt "paper size" -msgid "Invite Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:150 -msgctxt "paper size" -msgid "Italian Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:151 -msgctxt "paper size" -msgid "juuro-ku-kai" -msgstr "" - -#: ../gtk/paper_names_offsets.c:152 -msgctxt "paper size" -msgid "pa-kai" -msgstr "" - -#: ../gtk/paper_names_offsets.c:153 -msgctxt "paper size" -msgid "Postfix Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:154 -msgctxt "paper size" -msgid "Small Photo" -msgstr "" - -#: ../gtk/paper_names_offsets.c:155 -msgctxt "paper size" -msgid "prc1 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:156 -msgctxt "paper size" -msgid "prc10 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:157 -msgctxt "paper size" -msgid "prc 16k" -msgstr "" - -#: ../gtk/paper_names_offsets.c:158 -msgctxt "paper size" -msgid "prc2 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:159 -msgctxt "paper size" -msgid "prc3 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:160 -msgctxt "paper size" -msgid "prc 32k" -msgstr "" - -#: ../gtk/paper_names_offsets.c:161 -msgctxt "paper size" -msgid "prc4 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:162 -msgctxt "paper size" -msgid "prc5 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:163 -msgctxt "paper size" -msgid "prc6 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:164 -msgctxt "paper size" -msgid "prc7 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:165 -msgctxt "paper size" -msgid "prc8 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:166 -msgctxt "paper size" -msgid "prc9 Envelope" -msgstr "" - -#: ../gtk/paper_names_offsets.c:167 -msgctxt "paper size" -msgid "ROC 16k" -msgstr "" - -#: ../gtk/paper_names_offsets.c:168 -msgctxt "paper size" -msgid "ROC 8k" -msgstr "" - -#: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 -#, c-format -msgid "different idatas found for symlinked '%s' and '%s'\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1374 -#, c-format -msgid "Failed to write header\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1380 -#, c-format -msgid "Failed to write hash table\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1386 -#, c-format -msgid "Failed to write folder index\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1394 -#, c-format -msgid "Failed to rewrite header\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1463 -#, c-format -msgid "Failed to open file %s : %s\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1471 -#, c-format -msgid "Failed to write cache file: %s\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1507 -#, c-format -msgid "The generated cache was invalid.\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1521 -#, c-format -msgid "Could not rename %s to %s: %s, removing %s then.\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1535 -#, c-format -msgid "Could not rename %s to %s: %s\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1545 -#, c-format -msgid "Could not rename %s back to %s: %s.\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1572 -#, c-format -msgid "Cache file created successfully.\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1611 -msgid "Overwrite an existing cache, even if up to date" -msgstr "" - -#: ../gtk/updateiconcache.c:1612 -msgid "Don't check for the existence of index.theme" -msgstr "" - -#: ../gtk/updateiconcache.c:1613 -msgid "Don't include image data in the cache" -msgstr "" - -#: ../gtk/updateiconcache.c:1614 -msgid "Output a C header file" -msgstr "" - -#: ../gtk/updateiconcache.c:1615 -msgid "Turn off verbose output" -msgstr "" - -#: ../gtk/updateiconcache.c:1616 -msgid "Validate existing icon cache" -msgstr "" - -#: ../gtk/updateiconcache.c:1683 -#, c-format -msgid "File not found: %s\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1689 -#, c-format -msgid "Not a valid icon cache: %s\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1702 -#, c-format -msgid "No theme index file.\n" -msgstr "" - -#: ../gtk/updateiconcache.c:1706 -#, 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 "" - -#. ID -#: ../modules/input/imam-et.c:454 -msgid "Amharic (EZ+)" -msgstr "" - -#. ID -#: ../modules/input/imcedilla.c:92 -msgid "Cedilla" -msgstr "" - -#. ID -#: ../modules/input/imcyrillic-translit.c:217 -msgid "Cyrillic (Transliterated)" -msgstr "" - -#. ID -#: ../modules/input/iminuktitut.c:127 -msgid "Inuktitut (Transliterated)" -msgstr "" - -#. ID -#: ../modules/input/imipa.c:145 -msgid "IPA" -msgstr "" - -#. ID -#: ../modules/input/immultipress.c:31 -msgid "Multipress" -msgstr "" - -#. ID -#: ../modules/input/imthai.c:35 -msgid "Thai-Lao" -msgstr "" - -#. ID -#: ../modules/input/imti-er.c:453 -msgid "Tigrigna-Eritrean (EZ+)" -msgstr "" - -#. ID -#: ../modules/input/imti-et.c:453 -msgid "Tigrigna-Ethiopian (EZ+)" -msgstr "" - -#. ID -#: ../modules/input/imviqr.c:244 -msgid "Vietnamese (VIQR)" -msgstr "" - -#. ID -#: ../modules/input/imxim.c:28 -msgid "X Input Method" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 -msgid "Username:" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:812 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 -msgid "Password:" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 -#, c-format -msgid "Authentication is required to print document '%s' on printer %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 -#, c-format -msgid "Authentication is required to print a document on %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 -#, c-format -msgid "Authentication is required to get attributes of job '%s'" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 -msgid "Authentication is required to get attributes of a job" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 -#, c-format -msgid "Authentication is required to get attributes of printer %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 -msgid "Authentication is required to get attributes of a printer" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 -#, c-format -msgid "Authentication is required to get default printer of %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 -#, c-format -msgid "Authentication is required to get printers from %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 -#, c-format -msgid "Authentication is required on %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 -msgid "Domain:" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 -#, c-format -msgid "Authentication is required to print document '%s'" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 -#, c-format -msgid "Authentication is required to print this document on printer %s" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 -msgid "Authentication is required to print this document" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 -#, c-format -msgid "Printer '%s' is low on toner." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 -#, c-format -msgid "Printer '%s' has no toner left." -msgstr "" - -#. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 -#, c-format -msgid "Printer '%s' is low on developer." -msgstr "" - -#. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 -#, c-format -msgid "Printer '%s' is out of developer." -msgstr "" - -#. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 -#, c-format -msgid "Printer '%s' is low on at least one marker supply." -msgstr "" - -#. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 -#, c-format -msgid "Printer '%s' is out of at least one marker supply." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 -#, c-format -msgid "The cover is open on printer '%s'." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 -#, c-format -msgid "The door is open on printer '%s'." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 -#, c-format -msgid "Printer '%s' is low on paper." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 -#, c-format -msgid "Printer '%s' is out of paper." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 -#, c-format -msgid "Printer '%s' is currently offline." -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 -#, c-format -msgid "There is a problem on printer '%s'." -msgstr "" - -#. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 -msgid "Paused ; Rejecting Jobs" -msgstr "" - -#. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 -msgid "Rejecting Jobs" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 -msgid "Two Sided" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 -msgid "Paper Type" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 -msgid "Paper Source" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 -msgid "Output Tray" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 -msgid "Resolution" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 -msgid "GhostScript pre-filtering" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 -msgid "One Sided" -msgstr "" - -#. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 -msgid "Long Edge (Standard)" -msgstr "" - -#. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 -msgid "Short Edge (Flip)" -msgstr "" - -#. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 -msgid "Auto Select" -msgstr "" - -#. Translators: this is an option of "Paper Source" -#. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3295 -msgid "Printer Default" -msgstr "" - -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 -msgid "Embed GhostScript fonts only" -msgstr "" - -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 -msgid "Convert to PS level 1" -msgstr "" - -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 -msgid "Convert to PS level 2" -msgstr "" - -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 -msgid "No pre-filtering" -msgstr "" - -#. Translators: "Miscellaneous" is the label for a button, that opens -#. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 -msgid "Miscellaneous" -msgstr "" - -#. Translators: These strings name the possible values of the -#. * job priority option in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "Urgent" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "High" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "Medium" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "Low" -msgstr "" - -#. Cups specific, non-ppd related settings -#. Translators, this string is used to label the pages-per-sheet option -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3527 -msgid "Pages per Sheet" -msgstr "" - -#. Translators, this string is used to label the job priority option -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3564 -msgid "Job Priority" -msgstr "" - -#. Translators, this string is used to label the billing info entry -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3575 -msgid "Billing Info" -msgstr "" - -#. Translators, these strings are names for various 'standard' cover -#. * pages that the printing system may support. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "None" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Classified" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Confidential" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Secret" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Standard" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Top Secret" -msgstr "" - -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Unclassified" -msgstr "" - -#. Translators, this is the label used for the option in the print -#. * dialog that controls the front cover page. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3625 -msgid "Before" -msgstr "" - -#. Translators, this is the label used for the option in the print -#. * dialog that controls the back cover page. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3640 -msgid "After" -msgstr "" - -#. Translators: this is the name of the option that controls when -#. * a print job is printed. Possible values are 'now', a specified time, -#. * or 'on hold' -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3660 -msgid "Print at" -msgstr "" - -#. 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/cups/gtkprintbackendcups.c:3671 -msgid "Print at time" -msgstr "" - -#. Translators: this format is used to display a custom paper -#. * size. The two placeholders are replaced with the width and height -#. * in points. E.g: "Custom 230.4x142.9" -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3706 -#, c-format -msgid "Custom %sx%s" -msgstr "" - -#. default filename used for print-to-file -#: ../modules/printbackends/file/gtkprintbackendfile.c:250 -#, c-format -msgid "output.%s" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:493 -msgid "Print to File" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "PDF" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "Postscript" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "SVG" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:582 -#: ../modules/printbackends/test/gtkprintbackendtest.c:503 -msgid "Pages per _sheet:" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:641 -msgid "File" -msgstr "" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:651 -msgid "_Output format" -msgstr "" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 -msgid "Print to LPR" -msgstr "" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 -msgid "Pages Per Sheet" -msgstr "" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 -msgid "Command Line" -msgstr "" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 -msgid "printer offline" -msgstr "" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 -msgid "ready to print" -msgstr "" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 -msgid "processing job" -msgstr "" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 -msgid "paused" -msgstr "" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 -msgid "unknown" -msgstr "" - -#. default filename used for print-to-test -#: ../modules/printbackends/test/gtkprintbackendtest.c:234 -#, c-format -msgid "test-output.%s" -msgstr "" - -#: ../modules/printbackends/test/gtkprintbackendtest.c:467 -msgid "Print to Test Printer" -msgstr "" - -#: ../tests/testfilechooser.c:207 -#, c-format -msgid "Could not get information for file '%s': %s" -msgstr "" - -#: ../tests/testfilechooser.c:222 -#, c-format -msgid "Failed to open file '%s': %s" -msgstr "" - -#: ../tests/testfilechooser.c:267 -#, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" +# Translation of gtk+ into Luganda. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the gtk+ package. +# Kizito Birabwa , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: gtk+-2.22\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk" +"%2b&component=general\n" +"POT-Creation-Date: 2011-01-05 17:26+0000\n" +"PO-Revision-Date: 2011-01-25 23:45+0000\n" +"Last-Translator: Kizito Birabwa \n" +"Language-Team: Luganda \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../gdk/gdk.c:152 +#, c-format +msgid "Error parsing option --gdk-debug" +msgstr "Wazzewo kiremya mu kuyungulula makulu mu kawayiro aka --gdk-debug" + +#: ../gdk/gdk.c:172 +#, c-format +msgid "Error parsing option --gdk-no-debug" +msgstr "Wazzewo kiremya mu kuyungulula makulu mu kawayiro aka --gdk-no-debug" + +#. Description of --class=CLASS in --help output +#: ../gdk/gdk.c:200 +msgid "Program class as used by the window manager" +msgstr "Kiti ekiteekateekamadirisa mwe kissa puloguramu" + +#. Placeholder in --class=CLASS in --help output +#: ../gdk/gdk.c:201 +msgid "CLASS" +msgstr "KITI" + +#. Description of --name=NAME in --help output +#: ../gdk/gdk.c:203 +msgid "Program name as used by the window manager" +msgstr "Erinnya ekiteekateekamadirisa lye kiyita puloguramu" + +#. Placeholder in --name=NAME in --help output +#: ../gdk/gdk.c:204 +msgid "NAME" +msgstr "LINNYA" + +#. Description of --display=DISPLAY in --help output +#: ../gdk/gdk.c:206 +msgid "X display to use" +msgstr "Omulimu gwa X ogunaakozesebwa" + +#. Placeholder in --display=DISPLAY in --help output +#: ../gdk/gdk.c:207 +msgid "DISPLAY" +msgstr "MULIMU" + +#. Description of --gdk-debug=FLAGS in --help output +#: ../gdk/gdk.c:210 +msgid "GDK debugging flags to set" +msgstr "Kano kategeka obutuuti GDK bw'en'ekozesa mu kunoonya nsobi" + +#. Placeholder in --gdk-debug=FLAGS in --help output +#. Placeholder in --gdk-no-debug=FLAGS in --help output +#. Placeholder in --gtk-debug=FLAGS in --help output +#. Placeholder in --gtk-no-debug=FLAGS in --help output +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 +msgid "FLAGS" +msgstr "BUTUUTI" + +#. Description of --gdk-no-debug=FLAGS in --help output +#: ../gdk/gdk.c:213 +msgid "GDK debugging flags to unset" +msgstr "" +"Kano ke kalaga obutuuti obweyambisibwa mu kunoonya nsobi obunaategekululwa" + +#: ../gdk/keyname-table.h:3940 +msgctxt "keyboard label" +msgid "BackSpace" +msgstr "BackSpace" + +#: ../gdk/keyname-table.h:3941 +msgctxt "keyboard label" +msgid "Tab" +msgstr "Tab" + +#: ../gdk/keyname-table.h:3942 +msgctxt "keyboard label" +msgid "Return" +msgstr "Return" + +#: ../gdk/keyname-table.h:3943 +msgctxt "keyboard label" +msgid "Pause" +msgstr "Pause" + +#: ../gdk/keyname-table.h:3944 +msgctxt "keyboard label" +msgid "Scroll_Lock" +msgstr "Scroll_Lock" + +#: ../gdk/keyname-table.h:3945 +msgctxt "keyboard label" +msgid "Sys_Req" +msgstr "Sys_Req" + +#: ../gdk/keyname-table.h:3946 +msgctxt "keyboard label" +msgid "Escape" +msgstr "Escape" + +#: ../gdk/keyname-table.h:3947 +msgctxt "keyboard label" +msgid "Multi_key" +msgstr "Multi_key" + +#: ../gdk/keyname-table.h:3948 +msgctxt "keyboard label" +msgid "Home" +msgstr "Home" + +#: ../gdk/keyname-table.h:3949 +msgctxt "keyboard label" +msgid "Left" +msgstr "Left" + +#: ../gdk/keyname-table.h:3950 +msgctxt "keyboard label" +msgid "Up" +msgstr "Up" + +#: ../gdk/keyname-table.h:3951 +msgctxt "keyboard label" +msgid "Right" +msgstr "Right" + +#: ../gdk/keyname-table.h:3952 +msgctxt "keyboard label" +msgid "Down" +msgstr "Down" + +#: ../gdk/keyname-table.h:3953 +msgctxt "keyboard label" +msgid "Page_Up" +msgstr "Page_Up" + +#: ../gdk/keyname-table.h:3954 +msgctxt "keyboard label" +msgid "Page_Down" +msgstr "Page_Down" + +#: ../gdk/keyname-table.h:3955 +msgctxt "keyboard label" +msgid "End" +msgstr "End" + +#: ../gdk/keyname-table.h:3956 +msgctxt "keyboard label" +msgid "Begin" +msgstr "Begin" + +#: ../gdk/keyname-table.h:3957 +msgctxt "keyboard label" +msgid "Print" +msgstr "Print" + +#: ../gdk/keyname-table.h:3958 +msgctxt "keyboard label" +msgid "Insert" +msgstr "Insert" + +#: ../gdk/keyname-table.h:3959 +msgctxt "keyboard label" +msgid "Num_Lock" +msgstr "Num_Lock" + +#: ../gdk/keyname-table.h:3960 +msgctxt "keyboard label" +msgid "KP_Space" +msgstr "KP_Space" + +#: ../gdk/keyname-table.h:3961 +msgctxt "keyboard label" +msgid "KP_Tab" +msgstr "KP_Tab" + +#: ../gdk/keyname-table.h:3962 +msgctxt "keyboard label" +msgid "KP_Enter" +msgstr "" + +#: ../gdk/keyname-table.h:3963 +msgctxt "keyboard label" +msgid "KP_Home" +msgstr "" + +#: ../gdk/keyname-table.h:3964 +msgctxt "keyboard label" +msgid "KP_Left" +msgstr "" + +#: ../gdk/keyname-table.h:3965 +msgctxt "keyboard label" +msgid "KP_Up" +msgstr "" + +#: ../gdk/keyname-table.h:3966 +msgctxt "keyboard label" +msgid "KP_Right" +msgstr "" + +#: ../gdk/keyname-table.h:3967 +msgctxt "keyboard label" +msgid "KP_Down" +msgstr "" + +#: ../gdk/keyname-table.h:3968 +msgctxt "keyboard label" +msgid "KP_Page_Up" +msgstr "" + +#: ../gdk/keyname-table.h:3969 +msgctxt "keyboard label" +msgid "KP_Prior" +msgstr "" + +#: ../gdk/keyname-table.h:3970 +msgctxt "keyboard label" +msgid "KP_Page_Down" +msgstr "" + +#: ../gdk/keyname-table.h:3971 +msgctxt "keyboard label" +msgid "KP_Next" +msgstr "" + +#: ../gdk/keyname-table.h:3972 +msgctxt "keyboard label" +msgid "KP_End" +msgstr "" + +#: ../gdk/keyname-table.h:3973 +msgctxt "keyboard label" +msgid "KP_Begin" +msgstr "" + +#: ../gdk/keyname-table.h:3974 +msgctxt "keyboard label" +msgid "KP_Insert" +msgstr "" + +#: ../gdk/keyname-table.h:3975 +msgctxt "keyboard label" +msgid "KP_Delete" +msgstr "" + +#: ../gdk/keyname-table.h:3976 +msgctxt "keyboard label" +msgid "Delete" +msgstr "" + +#. Description of --sync in --help output +#: ../gdk/win32/gdkmain-win32.c:55 +msgid "Don't batch GDI requests" +msgstr "" + +#. Description of --no-wintab in --help output +#: ../gdk/win32/gdkmain-win32.c:57 +msgid "Don't use the Wintab API for tablet support" +msgstr "" + +#. Description of --ignore-wintab in --help output +#: ../gdk/win32/gdkmain-win32.c:59 +msgid "Same as --no-wintab" +msgstr "Kano kye kimu n'aka --no-wintab" + +#. Description of --use-wintab in --help output +#: ../gdk/win32/gdkmain-win32.c:61 +msgid "Do use the Wintab API [default]" +msgstr "" + +#. Description of --max-colors=COLORS in --help output +#: ../gdk/win32/gdkmain-win32.c:63 +msgid "Size of the palette in 8 bit mode" +msgstr "Kano ke kategeka obungi bwa langi ezifunika mu nkola eya bbiti 8" + +#. Placeholder in --max-colors=COLORS in --help output +#: ../gdk/win32/gdkmain-win32.c:64 +msgid "COLORS" +msgstr "LANGI" + +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 +#, c-format +msgid "Starting %s" +msgstr "Ntandika %s" + +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 +#, c-format +msgid "Opening %s" +msgstr "Mbikkula %s" + +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#, c-format +msgid "Opening %d Item" +msgid_plural "Opening %d Items" +msgstr[0] "Mbikkula ekintu %d" +msgstr[1] "Mbikkula ebintu %d" + +#. Translators: this is the license preamble; the string at the end +#. * contains the URL of the license. +#. +#: ../gtk/gtkaboutdialog.c:104 +#, c-format +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "" + +#: ../gtk/gtkaboutdialog.c:346 +msgid "License" +msgstr "Layisinsi" + +#: ../gtk/gtkaboutdialog.c:347 +msgid "The license of the program" +msgstr "Layisinsi efuga nkozesa ya puloguramu" + +#. Add the credits button +#: ../gtk/gtkaboutdialog.c:739 +msgid "C_redits" +msgstr "A_baakola" + +#. Add the license button +#: ../gtk/gtkaboutdialog.c:752 +msgid "_License" +msgstr "_Layisinsi" + +#: ../gtk/gtkaboutdialog.c:957 +msgid "Could not show link" +msgstr "Nnemedwa okulaga enyunzi" + +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "Obusangira ku yintaneti" + +#: ../gtk/gtkaboutdialog.c:1048 +#, c-format +msgid "About %s" +msgstr "Okwanjula %s" + +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "Yakolebwa" + +#: ../gtk/gtkaboutdialog.c:2375 +msgid "Documented by" +msgstr "Yawandikibwako" + +#: ../gtk/gtkaboutdialog.c:2385 +msgid "Translated by" +msgstr "Yavvuunulibwa" + +#: ../gtk/gtkaboutdialog.c:2390 +msgid "Artwork by" +msgstr "Abaakola ku nfaanana ya yo" + +#. This is the text that should appear next to menu accelerators +#. * that use the shift key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:158 +msgctxt "keyboard label" +msgid "Shift" +msgstr "" + +#. This is the text that should appear next to menu accelerators +#. * that use the control key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:164 +msgctxt "keyboard label" +msgid "Ctrl" +msgstr "" + +#. This is the text that should appear next to menu accelerators +#. * that use the alt key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:170 +msgctxt "keyboard label" +msgid "Alt" +msgstr "" + +#. This is the text that should appear next to menu accelerators +#. * that use the super key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:768 +msgctxt "keyboard label" +msgid "Super" +msgstr "" + +#. This is the text that should appear next to menu accelerators +#. * that use the hyper key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:781 +msgctxt "keyboard label" +msgid "Hyper" +msgstr "" + +#. This is the text that should appear next to menu accelerators +#. * that use the meta key. If the text on this key isn't typically +#. * translated on keyboards used for your language, don't translate +#. * this. +#. +#: ../gtk/gtkaccellabel.c:795 +msgctxt "keyboard label" +msgid "Meta" +msgstr "" + +#: ../gtk/gtkaccellabel.c:811 +msgctxt "keyboard label" +msgid "Space" +msgstr "Kabangirizi" + +#: ../gtk/gtkaccellabel.c:814 +msgctxt "keyboard label" +msgid "Backslash" +msgstr "Kasaze ka kaddanyuma" + +#: ../gtk/gtkappchooserbutton.c:251 +msgid "Other application..." +msgstr "Puloguramu endala..." + +#: ../gtk/gtkappchooserdialog.c:115 +msgid "Failed to look for applications online" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:152 +msgid "Find applications online" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:196 +msgid "Could not run application" +msgstr "Nnemedwa okutandika puloguramu" + +#: ../gtk/gtkappchooserdialog.c:209 +msgid "Could not find '%s'" +msgstr "Nnemedwa okuzuula '%s'" + +#: ../gtk/gtkappchooserdialog.c:212 +msgid "Could not find application" +msgstr "Nnemedwa okuzuula puloguramu" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:322 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:323 ../gtk/gtkappchooserwidget.c:633 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:329 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:332 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:346 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:416 +msgid "Forget association" +msgstr "Enkwatagana ne puloguramu gigyewo" + +#: ../gtk/gtkappchooserdialog.c:481 +msgid "Show other applications" +msgstr "Laga puloguramu endala" + +#: ../gtk/gtkappchooserdialog.c:499 +msgid "_Open" +msgstr "_Bikkula" + +#: ../gtk/gtkappchooserwidget.c:582 +msgid "Default Application" +msgstr "Puloguramu ekozesebwa bulijjo" + +#: ../gtk/gtkappchooserwidget.c:718 +msgid "Recommended Applications" +msgstr "Puloguramu ezisaana" + +#: ../gtk/gtkappchooserwidget.c:732 +msgid "Related Applications" +msgstr "Puloguramu ezikwatagana" + +#: ../gtk/gtkappchooserwidget.c:745 +msgid "Other Applications" +msgstr "Puloguramu endala" + +#: ../gtk/gtkbuilderparser.c:342 +#, c-format +msgid "Invalid type function on line %d: '%s'" +msgstr "" +"Olunyiriri %d luliko omukolo oguzuula oba ogutegeka ekika kya data omusobi: " +"'%s'" + +#: ../gtk/gtkbuilderparser.c:406 +#, c-format +msgid "Duplicate object ID '%s' on line %d (previously on line %d)" +msgstr "" +"Ennamba y'ekyetongole '%s' ku lunyiriri %d eddidwamu (ekozesebwa ku " +"lunyiriri %d)" + +#: ../gtk/gtkbuilderparser.c:858 +#, c-format +msgid "Invalid root element: '%s'" +msgstr "Ekitundu ekikongojja ekiwandike kisobu: '%s'" + +#: ../gtk/gtkbuilderparser.c:897 +#, c-format +msgid "Unhandled tag: '%s'" +msgstr "Waliwo erinnya lya data ekwatagizidwa eribulako data enyanjuzi: '%s'" + +#. Translate to calendar:YM if you want years to be displayed +#. * before months; otherwise translate to calendar:MY. +#. * Do *not* translate it to anything else, if it +#. * it isn't calendar:YM or calendar:MY it will not work. +#. * +#. * Note that the ordering described here is logical order, which is +#. * further influenced by BIDI ordering. Thus, if you have a default +#. * text direction of RTL and specify "calendar:YM", then the year +#. * will appear to the right of the month. +#. +#: ../gtk/gtkcalendar.c:885 +msgid "calendar:MY" +msgstr "" + +#. Translate to calendar:week_start:0 if you want Sunday to be the +#. * 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:923 +msgid "calendar:week_start:0" +msgstr "calendar:week_start:1" + +#. Translators: This is a text measurement template. +#. * Translate it to the widest year text +#. * +#. * If you don't understand this, leave it as "2000" +#. +#: ../gtk/gtkcalendar.c:1903 +msgctxt "year measurement template" +msgid "2000" +msgstr "2000" + +#. Translators: this defines whether the day numbers should use +#. * localized digits or the ones used in English (0123...). +#. * +#. * Translate to "%Id" if you want to use localized digits, or +#. * translate to "%d" otherwise. +#. * +#. * 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:1934 ../gtk/gtkcalendar.c:2623 +#, c-format +msgctxt "calendar:day:digits" +msgid "%d" +msgstr "%d" + +#. Translators: this defines whether the week numbers should use +#. * localized digits or the ones used in English (0123...). +#. * +#. * Translate to "%Id" if you want to use localized digits, or +#. * translate to "%d" otherwise. +#. * +#. * 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:1966 ../gtk/gtkcalendar.c:2491 +#, c-format +msgctxt "calendar:week:digits" +msgid "%d" +msgstr "%d" + +#. Translators: This dictates how the year is displayed in +#. * gtkcalendar widget. See strftime() manual for the format. +#. * Use only ASCII in the translation. +#. * +#. * Also look for the msgid "2000". +#. * Translate that entry to a year with the widest output of this +#. * msgid. +#. * +#. * "%Y" is appropriate for most locales. +#. +#: ../gtk/gtkcalendar.c:2256 +msgctxt "calendar year format" +msgid "%Y" +msgstr "%Y" + +#. This label is displayed in a treeview cell displaying +#. * a disabled accelerator key combination. +#. +#: ../gtk/gtkcellrendereraccel.c:271 +msgctxt "Accelerator" +msgid "Disabled" +msgstr "Tegakola" + +#. This label is displayed in a treeview cell displaying +#. * an accelerator key combination that is not valid according +#. * to gtk_accelerator_valid(). +#. +#: ../gtk/gtkcellrendereraccel.c:281 +msgctxt "Accelerator" +msgid "Invalid" +msgstr "Tegakkirizibwa" + +#. This label is displayed in a treeview cell displaying +#. * an accelerator when the cell is clicked to change the +#. * acelerator. +#. +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:674 +msgid "New accelerator..." +msgstr "Gakyuse..." + +#: ../gtk/gtkcellrendererprogress.c:362 ../gtk/gtkcellrendererprogress.c:452 +#, c-format +msgctxt "progress bar label" +msgid "%d %%" +msgstr "%d %%" + +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:477 +msgid "Pick a Color" +msgstr "Londako langi" + +#: ../gtk/gtkcolorbutton.c:366 +msgid "Received invalid color data\n" +msgstr "Nfunye ebya langi ebitakkirizibwa\n" + +#: ../gtk/gtkcolorsel.c:415 +msgid "" +"Select the color you want from the outer ring. Select the darkness or " +"lightness of that color using the inner triangle." +msgstr "" +"Kozesa namuziga okulonda langi. Kozesa nsondasatu obutegeka obukwafu bwa yo." + +#: ../gtk/gtkcolorsel.c:439 +msgid "" +"Click the eyedropper, then click a color anywhere on your screen to select " +"that color." +msgstr "" +"Bw'onyiga ku katonyesa, ofuna ekikusobozesa okukwata langi okuva wonna " +"w'oyagala ku lutimbe" + +#: ../gtk/gtkcolorsel.c:448 +msgid "_Hue:" +msgstr "_Kiti kya langi:" + +#: ../gtk/gtkcolorsel.c:449 +msgid "Position on the color wheel." +msgstr "Kifo ky'erangi ku namuziga." + +#: ../gtk/gtkcolorsel.c:451 +msgid "_Saturation:" +msgstr "_Okunoga:" + +#: ../gtk/gtkcolorsel.c:452 +msgid "Intensity of the color." +msgstr "Okunoga kw'erangi." + +#: ../gtk/gtkcolorsel.c:453 +msgid "_Value:" +msgstr "_Butaangaavu:" + +#: ../gtk/gtkcolorsel.c:454 +msgid "Brightness of the color." +msgstr "Obutaangaavu bw'erangi." + +#: ../gtk/gtkcolorsel.c:455 +msgid "_Red:" +msgstr "Obu_myufu" + +#: ../gtk/gtkcolorsel.c:456 +msgid "Amount of red light in the color." +msgstr "Obumyufu obuli mu langi." + +#: ../gtk/gtkcolorsel.c:457 +msgid "_Green:" +msgstr "Obwaki_ragala:" + +#: ../gtk/gtkcolorsel.c:458 +msgid "Amount of green light in the color." +msgstr "Obwakiragala obuli mu langi." + +#: ../gtk/gtkcolorsel.c:459 +msgid "_Blue:" +msgstr "Obwa_bbululu:" + +#: ../gtk/gtkcolorsel.c:460 +msgid "Amount of blue light in the color." +msgstr "Obwabbululu obuli mu langi." + +#: ../gtk/gtkcolorsel.c:463 +msgid "Op_acity:" +msgstr "Oku_taangaala:" + +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 +msgid "Transparency of the color." +msgstr "Okutaangaala kw'erangi." + +#: ../gtk/gtkcolorsel.c:487 +msgid "Color _name:" +msgstr "_Linnya lya langi:" + +#: ../gtk/gtkcolorsel.c:501 +msgid "" +"You can enter an HTML-style hexadecimal color value, or simply a color name " +"such as 'orange' in this entry." +msgstr "" +"Wano oyinz'okuwandikawo ennamba ey'omu nnengakkuminamukaaga nga mu HTML, oba " +"oyinz'okuwandikawo erinya nga 'orange'." + +#: ../gtk/gtkcolorsel.c:531 +msgid "_Palette:" +msgstr "Kkuŋaanizo lya _langi:" + +#: ../gtk/gtkcolorsel.c:560 +msgid "Color Wheel" +msgstr "Namuziga ya langi" + +#: ../gtk/gtkcolorsel.c:1033 +msgid "" +"The previously-selected color, for comparison to the color you're selecting " +"now. You can drag this color to a palette entry, or select this color as " +"current by dragging it to the other color swatch alongside." +msgstr "" +"Eno ye langi eyabadde esangidwawo, osobole okugigerageranya ne gy'ogenda " +"okulonda kakati. Langi eno osobola okugikulula n'ogyongera ku kkuŋaanizo lya " +"langi, oba oyinza okugikululira ku ddyo awali egiriraanye ereme okukyusibwa." + +#: ../gtk/gtkcolorsel.c:1036 +msgid "" +"The color you've chosen. You can drag this color to a palette entry to save " +"it for use in the future." +msgstr "" +"Langi gy'olonze. Eno osobola okugikulula n'ogissa mu " +"kakuŋaanizookukwanguyira kuddamu kugironda olulala" + +#: ../gtk/gtkcolorsel.c:1041 +msgid "" +"The previously-selected color, for comparison to the color you're selecting " +"now." +msgstr "" +"Langi esangidwawo. Osobole okugigeraageranya ne gy'ogenda okulonda kaakati." + +#: ../gtk/gtkcolorsel.c:1044 +msgid "The color you've chosen." +msgstr "Langi gy'olonze" + +#: ../gtk/gtkcolorsel.c:1444 +msgid "_Save color here" +msgstr "Langi gi_terekere wano" + +#: ../gtk/gtkcolorsel.c:1652 +msgid "" +"Click this palette entry to make it the current color. To change this entry, " +"drag a color swatch here or right-click it and select \"Save color here.\"" +msgstr "" +"Nyiga ku langi eno ebeere nga y'ekola. Okukyusa langi esangibwa wano, " +"kululayo endala oba nyigira wano eppeesa ery'oku kasongesebwa erya " +"ddyoolonde \"Kaliza wano erangi.\"" + +#: ../gtk/gtkcolorseldialog.c:189 +msgid "Color Selection" +msgstr "Kulonda langi" + +#. Translate to the default units to use for presenting +#. * lengths to the user. Translate to default:inch if you +#. * want inches, otherwise translate to default:mm. +#. * Do *not* translate it to "predefinito:mm", if it +#. * it isn't default:mm or default:inch it will not work +#. +#: ../gtk/gtkcustompaperunixdialog.c:116 +msgid "default:mm" +msgstr "default:mm" + +#. And show the custom paper dialog +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3242 +msgid "Manage Custom Sizes" +msgstr "Teekateeka ebigero by'empapula ebitasangibwasangibwa" + +#: ../gtk/gtkcustompaperunixdialog.c:534 ../gtk/gtkpagesetupunixdialog.c:790 +msgid "inch" +msgstr "yinci" + +#: ../gtk/gtkcustompaperunixdialog.c:536 ../gtk/gtkpagesetupunixdialog.c:788 +msgid "mm" +msgstr "mm" + +#: ../gtk/gtkcustompaperunixdialog.c:581 +msgid "Margins from Printer..." +msgstr "Pulinta y'eba etegeka myagaanya ku mpapula..." + +#: ../gtk/gtkcustompaperunixdialog.c:747 +#, c-format +msgid "Custom Size %d" +msgstr "Ekigero ekyeteekateekere %d" + +#: ../gtk/gtkcustompaperunixdialog.c:1059 +msgid "_Width:" +msgstr "Bu_gazi:" + +#: ../gtk/gtkcustompaperunixdialog.c:1071 +msgid "_Height:" +msgstr "Bu_wanvu:" + +#: ../gtk/gtkcustompaperunixdialog.c:1083 +msgid "Paper Size" +msgstr "Kigero ky'empapula" + +#: ../gtk/gtkcustompaperunixdialog.c:1092 +msgid "_Top:" +msgstr "Wa_ggulu:" + +#: ../gtk/gtkcustompaperunixdialog.c:1104 +msgid "_Bottom:" +msgstr "Wa_nsi:" + +#: ../gtk/gtkcustompaperunixdialog.c:1116 +msgid "_Left:" +msgstr "_Kkono:" + +#: ../gtk/gtkcustompaperunixdialog.c:1128 +msgid "_Right:" +msgstr "_Ddyo:" + +#: ../gtk/gtkcustompaperunixdialog.c:1169 +msgid "Paper Margins" +msgstr "Emyagaanya ku mpapula" + +#: ../gtk/gtkentry.c:8806 ../gtk/gtktextview.c:8241 +msgid "Input _Methods" +msgstr "Empandika z'en_nukuta" + +#: ../gtk/gtkentry.c:8820 ../gtk/gtktextview.c:8255 +msgid "_Insert Unicode Control Character" +msgstr "_Teekawo akabonero akafuzi ak'omu Unicode" + +#: ../gtk/gtkentry.c:10224 +msgid "Caps Lock and Num Lock are on" +msgstr "" + +#: ../gtk/gtkentry.c:10226 +msgid "Num Lock is on" +msgstr "Num Lock ekola" + +#: ../gtk/gtkentry.c:10228 +msgid "Caps Lock is on" +msgstr "Caps Lock ekola" + +#. **************** * +#. * Private Macros * +#. * **************** +#: ../gtk/gtkfilechooserbutton.c:62 +msgid "Select A File" +msgstr "Londayo fayiro" + +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1831 +msgid "Desktop" +msgstr "Awakolerwa" + +#: ../gtk/gtkfilechooserbutton.c:64 +msgid "(None)" +msgstr "(Bbule)" + +#: ../gtk/gtkfilechooserbutton.c:1999 +msgid "Other..." +msgstr "Walala..." + +#: ../gtk/gtkfilechooserdefault.c:146 +msgid "Type name of new folder" +msgstr "Wandika linnya ly'etterekero eppya" + +#: ../gtk/gtkfilechooserdefault.c:944 +msgid "Could not retrieve information about the file" +msgstr "Nnemedwa okufuna ebifa ku fayiro" + +#: ../gtk/gtkfilechooserdefault.c:955 +msgid "Could not add a bookmark" +msgstr "Nnemedwa okukwata ekifo" + +#: ../gtk/gtkfilechooserdefault.c:966 +msgid "Could not remove bookmark" +msgstr "Nnemedwa okugyawo akakwatakifo" + +#: ../gtk/gtkfilechooserdefault.c:977 +msgid "The folder could not be created" +msgstr "Tekisobose tterekero okulikolawo" + +#: ../gtk/gtkfilechooserdefault.c:990 +msgid "" +"The folder could not be created, as a file with the same name already " +"exists. Try using a different name for the folder, or rename the file first." +msgstr "" +"Tekisobose okukulawo tterekero, kubanga wasangidwawo eddala ery'erinnya lye " +"limu.Lironderewo erinnya eddala oba erisangidwawo sooka erikyuse erinnya." + +#: ../gtk/gtkfilechooserdefault.c:1004 +msgid "" +"You may only select folders. The item that you selected is not a folder; " +"try using a different item." +msgstr "" + +#: ../gtk/gtkfilechooserdefault.c:1014 +msgid "Invalid file name" +msgstr "Ekyo tekikola nga linnya lya fayiro" + +#: ../gtk/gtkfilechooserdefault.c:1024 +msgid "The folder contents could not be displayed" +msgstr "Tekisobose kulaga ebiri mu tterekero" + +#. Translators: the first string is a path and the second string +#. * is a hostname. Nautilus and the panel contain the same string +#. * to translate. +#. +#: ../gtk/gtkfilechooserdefault.c:1574 +#, c-format +msgid "%1$s on %2$s" +msgstr "%1$s ku %2$s" + +#: ../gtk/gtkfilechooserdefault.c:1750 +msgid "Search" +msgstr "Noonya" + +#: ../gtk/gtkfilechooserdefault.c:1774 ../gtk/gtkfilechooserdefault.c:9422 +msgid "Recently Used" +msgstr "Ebyakabukkulibwa" + +#: ../gtk/gtkfilechooserdefault.c:2435 +msgid "Select which types of files are shown" +msgstr "Londa ebika bya fayiro ebiba birabika" + +#: ../gtk/gtkfilechooserdefault.c:2794 +#, c-format +msgid "Add the folder '%s' to the bookmarks" +msgstr "Tterekero'%s' likolerewo akakwatakifo" + +#: ../gtk/gtkfilechooserdefault.c:2838 +#, c-format +msgid "Add the current folder to the bookmarks" +msgstr "Tterekero lino likolerewo akakwatakifo" + +#: ../gtk/gtkfilechooserdefault.c:2840 +#, c-format +msgid "Add the selected folders to the bookmarks" +msgstr "Amaterekero agalondedwa gakolerewo obukwatakifo" + +#: ../gtk/gtkfilechooserdefault.c:2878 +#, c-format +msgid "Remove the bookmark '%s'" +msgstr "Gyawo akakwatakifo '%s'" + +#: ../gtk/gtkfilechooserdefault.c:2880 +#, c-format +msgid "Bookmark '%s' cannot be removed" +msgstr "Tekisobose okugyawo akakwatakifo '%s'" + +#: ../gtk/gtkfilechooserdefault.c:2887 ../gtk/gtkfilechooserdefault.c:3755 +msgid "Remove the selected bookmark" +msgstr "Gyawo akakwatakifo akalondedwa" + +#: ../gtk/gtkfilechooserdefault.c:3450 +msgid "Remove" +msgstr "Gyawo" + +#: ../gtk/gtkfilechooserdefault.c:3459 +msgid "Rename..." +msgstr "Kyusa erinnya..." + +#. Accessible object name for the file chooser's shortcuts pane +#: ../gtk/gtkfilechooserdefault.c:3622 +msgid "Places" +msgstr "Bifo" + +#. Column header for the file chooser's shortcuts pane +#: ../gtk/gtkfilechooserdefault.c:3679 +msgid "_Places" +msgstr "_Bifo" + +#: ../gtk/gtkfilechooserdefault.c:3736 +msgid "_Add" +msgstr "_Kolawo" + +#: ../gtk/gtkfilechooserdefault.c:3743 +msgid "Add the selected folder to the Bookmarks" +msgstr "Etterekero erirondedwa likolerewo akakwatakifo" + +#: ../gtk/gtkfilechooserdefault.c:3748 +msgid "_Remove" +msgstr "_Gyawo" + +#: ../gtk/gtkfilechooserdefault.c:3890 +msgid "Could not select file" +msgstr "Nnemedwa okulonda fayiro" + +#: ../gtk/gtkfilechooserdefault.c:4065 +msgid "_Add to Bookmarks" +msgstr "_Kwata ekifo kino" + +#: ../gtk/gtkfilechooserdefault.c:4078 +msgid "Show _Hidden Files" +msgstr "Laga fayiro en_kise" + +#: ../gtk/gtkfilechooserdefault.c:4085 +msgid "Show _Size Column" +msgstr "Teekawo olukumbo olulaga _bunene bwa fayiro" + +#: ../gtk/gtkfilechooserdefault.c:4311 +msgid "Files" +msgstr "Fayiro" + +#: ../gtk/gtkfilechooserdefault.c:4362 +msgid "Name" +msgstr "Linnya" + +#: ../gtk/gtkfilechooserdefault.c:4385 +msgid "Size" +msgstr "Bunene" + +#: ../gtk/gtkfilechooserdefault.c:4399 +msgid "Modified" +msgstr "Amakyusibwa" + +#. Label +#: ../gtk/gtkfilechooserdefault.c:4654 ../gtk/gtkprinteroptionwidget.c:793 +msgid "_Name:" +msgstr "_Linnya" + +#: ../gtk/gtkfilechooserdefault.c:4697 +msgid "_Browse for other folders" +msgstr "_Noonya amaterekero amalala" + +#: ../gtk/gtkfilechooserdefault.c:4967 +msgid "Type a file name" +msgstr "Wandikawo erinnya lya fayiro" + +#. Create Folder +#: ../gtk/gtkfilechooserdefault.c:5010 +msgid "Create Fo_lder" +msgstr "Kolawo e_tterekero" + +#: ../gtk/gtkfilechooserdefault.c:5020 +msgid "_Location:" +msgstr "_Obusangiro:" + +#: ../gtk/gtkfilechooserdefault.c:5224 +msgid "Save in _folder:" +msgstr "Teeka mu _tterekero:" + +#: ../gtk/gtkfilechooserdefault.c:5226 +msgid "Create in _folder:" +msgstr "Tondera mu _tterekero:" + +#: ../gtk/gtkfilechooserdefault.c:6294 +#, c-format +msgid "Could not read the contents of %s" +msgstr "Nnemedwa okusoma ebiri mu %s" + +#: ../gtk/gtkfilechooserdefault.c:6298 +msgid "Could not read the contents of the folder" +msgstr "Nnemedwa okutegeera ebiri mu tterekero" + +#: ../gtk/gtkfilechooserdefault.c:6391 ../gtk/gtkfilechooserdefault.c:6459 +#: ../gtk/gtkfilechooserdefault.c:6604 +msgid "Unknown" +msgstr "Embulakunyonyola" + +#: ../gtk/gtkfilechooserdefault.c:6406 +msgid "%H:%M" +msgstr "%H:%M" + +#: ../gtk/gtkfilechooserdefault.c:6408 +msgid "Yesterday at %H:%M" +msgstr "Eggulo ku %H:%M" + +#: ../gtk/gtkfilechooserdefault.c:7074 +msgid "Cannot change to folder because it is not local" +msgstr "" +"Nnemedwa okugenda mu tterekero kubanga teriri ku sisitemu ya fayiro eno" + +#: ../gtk/gtkfilechooserdefault.c:7671 ../gtk/gtkfilechooserdefault.c:7692 +#, c-format +msgid "Shortcut %s already exists" +msgstr "Enyunzi %s yabaawo dda" + +#: ../gtk/gtkfilechooserdefault.c:7782 +#, c-format +msgid "Shortcut %s does not exist" +msgstr "Enyunzi %s teriwo" + +#: ../gtk/gtkfilechooserdefault.c:8044 ../gtk/gtkprintunixdialog.c:481 +#, c-format +msgid "A file named \"%s\" already exists. Do you want to replace it?" +msgstr "Fayiro \"%s\" yabaawo dda. Oyagala eyo esangidwawo eggyibwewo?" + +#: ../gtk/gtkfilechooserdefault.c:8047 ../gtk/gtkprintunixdialog.c:485 +#, c-format +msgid "" +"The file already exists in \"%s\". Replacing it will overwrite its contents." +msgstr "" +"Fayiro yabaawo dda mu \"%s\". Bw'olonda ku gigyawo ebigirimu " +"bijjakusaanyizibwawo." + +#: ../gtk/gtkfilechooserdefault.c:8052 ../gtk/gtkprintunixdialog.c:492 +msgid "_Replace" +msgstr "_Esangidwawo eggyibwewo" + +#: ../gtk/gtkfilechooserdefault.c:8760 +msgid "Could not start the search process" +msgstr "Nnemdwa okutandika omulimu ogw'okunoonya" + +#: ../gtk/gtkfilechooserdefault.c:8761 +msgid "" +"The program was not able to create a connection to the indexer daemon. " +"Please make sure it is running." +msgstr "" +"Puloguramu eremedwa okukwatagana ne dayimoni ekola enkalala. Dayimoni eyo " +"eyinz'okuba nga tekola. Gezako okugitandika." + +#: ../gtk/gtkfilechooserdefault.c:8775 +msgid "Could not send the search request" +msgstr "Nnemedwa okusindika kiragiro kya kunoonya" + +#: ../gtk/gtkfilechooserdefault.c:8994 +msgid "Search:" +msgstr "Noonya:" + +#: ../gtk/gtkfilechooserdefault.c:9599 +#, c-format +msgid "Could not mount %s" +msgstr "Nnemedwa okuwabga %s" + +#. Translators: this is shown in the feedback for Tab-completion in a file +#. * chooser's text entry, when the user enters an invalid path. +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 +msgid "Invalid path" +msgstr "Ekyo tekikola ng'ekkubo" + +#. translators: this text is shown when there are no completions +#. * for something the user typed in a file chooser entry +#. +#: ../gtk/gtkfilechooserentry.c:1110 +msgid "No match" +msgstr "Ky'onoonyezesezza ebikwatagana nakyo bimbuze" + +#. translators: this text is shown when there is exactly one completion +#. * for something the user typed in a file chooser entry +#. +#: ../gtk/gtkfilechooserentry.c:1121 +msgid "Sole completion" +msgstr "Kino kyokka kye kikwataganye ne ky'onoonyezesezza" + +#. translators: this text is shown when the text in a file chooser +#. * entry is a complete filename, but could be continued to find +#. * a longer match +#. +#: ../gtk/gtkfilechooserentry.c:1137 +msgid "Complete, but not unique" +msgstr "" +"Ky'onoonyezesa kijjakubaako ne bye kiwatagana naye " +"b'wokyongerakokijjakusobola okubisunsulamu okusingawo" + +#. Translators: this text is shown while the system is searching +#. * for possible completions for filenames in a file chooser entry. +#: ../gtk/gtkfilechooserentry.c:1169 +msgid "Completing..." +msgstr "Nnoonya ebikwatagana..." + +#. hostnames in a local_only file chooser? user error +#. Translators: this is shown in the feedback for Tab-completion in a +#. * file chooser's text entry when the user enters something like +#. * "sftp://blahblah" in an app that only supports local filenames. +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 +msgid "Only local files may be selected" +msgstr "Londa fayiro eziri ku sisitemu eya fayiro eno zokka" + +#. Another option is to complete the hostname based on the remote volumes that are mounted +#. Translators: this is shown in the feedback for Tab-completion in a +#. * file chooser's text entry when the user hasn't entered the first '/' +#. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") +#: ../gtk/gtkfilechooserentry.c:1200 +msgid "Incomplete hostname; end it with '/'" +msgstr "Yongerako ka '/' ku linnya lya kompyuta enyunge" + +#. Translators: this is shown in the feedback for Tab-completion in a file +#. * chooser's text entry when the user enters a path that does not exist +#. * and then hits Tab +#: ../gtk/gtkfilechooserentry.c:1211 +msgid "Path does not exist" +msgstr "Ekkubo eryo teririiyo" + +#. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are +#. * really pointers to GDrive, GVolume or GMount objects. We need an extra +#. * token for the fake "File System" volume. So, we'll return a pointer to +#. * this particular string. +#. +#: ../gtk/gtkfilesystem.c:48 +msgid "File System" +msgstr "Sisitemu ya fayiro" + +#: ../gtk/gtkfontbutton.c:142 ../gtk/gtkfontbutton.c:266 +msgid "Pick a Font" +msgstr "Londayo enkula y'ennukuta" + +#. Initialize fields +#: ../gtk/gtkfontbutton.c:260 +msgid "Sans 12" +msgstr "Sans 12" + +#: ../gtk/gtkfontbutton.c:785 +msgid "Font" +msgstr "Nkula y'ennukuta" + +#. This is the default text shown in the preview entry, though the user +#. can set it. Remember that some fonts only have capital letters. +#: ../gtk/gtkfontsel.c:100 +msgid "abcdefghijk ABCDEFGHIJK" +msgstr "abcdefghijkŋ ABCDEFGHIJKŊ" + +#: ../gtk/gtkfontsel.c:367 +msgid "_Family:" +msgstr "_Lulyo:" + +#: ../gtk/gtkfontsel.c:373 +msgid "_Style:" +msgstr "_Musono:" + +#: ../gtk/gtkfontsel.c:379 +msgid "Si_ze:" +msgstr "Bu_nene:" + +#. create the text entry widget +#: ../gtk/gtkfontsel.c:555 +msgid "_Preview:" +msgstr "Ku_lagako:" + +#: ../gtk/gtkfontsel.c:1655 +msgid "Font Selection" +msgstr "Kutegeka nkula y'ennukuta" + +#. Remove this icon source so we don't keep trying to +#. * load it. +#. +#: ../gtk/gtkiconfactory.c:1358 +#, c-format +msgid "Error loading icon: %s" +msgstr "Wazzewo kiremya mu kuteekawo akafaananyi: %s" + +#: ../gtk/gtkicontheme.c:1351 +#, c-format +msgid "" +"Could not find the icon '%s'. The '%s' theme\n" +"was not found either, perhaps you need to install it.\n" +"You can get a copy from:\n" +"\t%s" +msgstr "" +"Akafaananyi '%s' kambuze. Olulyo '%s'\n" +"nalwo lumbuze. Oba teruliiko ku sisitemu?\n" +"Osobola okulufunira wano:\n" +"\t%s" + +#: ../gtk/gtkicontheme.c:1532 +#, c-format +msgid "Icon '%s' not present in theme" +msgstr "Olulyo terurinaamu akafaananyi '%s'" + +#: ../gtk/gtkicontheme.c:3053 +msgid "Failed to load icon" +msgstr "Akafaananyi kannemye okusawo" + +#: ../gtk/gtkimmodule.c:526 +msgid "Simple" +msgstr "Eyajja ne sisitemu" + +#: ../gtk/gtkimmulticontext.c:588 +msgctxt "input method menu" +msgid "System" +msgstr "Eyajja ne sisitemu" + +#: ../gtk/gtkimmulticontext.c:598 +msgctxt "input method menu" +msgid "None" +msgstr "Tewali" + +#: ../gtk/gtkimmulticontext.c:681 +#, c-format +msgctxt "input method menu" +msgid "System (%s)" +msgstr "Eya sisitemu (%s)" + +#. Open Link +#: ../gtk/gtklabel.c:6250 +msgid "_Open Link" +msgstr "_Bikkula nyunzi" + +#. Copy Link Address +#: ../gtk/gtklabel.c:6262 +msgid "Copy _Link Address" +msgstr "Kwata e_ndagiriro enyunzi kw'egguka" + +#: ../gtk/gtklinkbutton.c:482 +msgid "Copy URL" +msgstr "Kwata koppi ya URL" + +#: ../gtk/gtklinkbutton.c:645 +msgid "Invalid URI" +msgstr "URI eyo tekola" + +#. Description of --gtk-module=MODULES in --help output +#: ../gtk/gtkmain.c:563 +msgid "Load additional GTK+ modules" +msgstr "Kano kalaga obusobozi obw'enyongeza obwa GTK+ obuba buwangibwa" + +#. Placeholder in --gtk-module=MODULES in --help output +#: ../gtk/gtkmain.c:564 +msgid "MODULES" +msgstr "OBUSOBOZI" + +#. Description of --g-fatal-warnings in --help output +#: ../gtk/gtkmain.c:566 +msgid "Make all warnings fatal" +msgstr "Buli lwe wabawo okulabula, kireetere omulimu okumala" + +#. Description of --gtk-debug=FLAGS in --help output +#: ../gtk/gtkmain.c:569 +msgid "GTK+ debugging flags to set" +msgstr "Kano kategeka obutuuti obwa GTK+ obunaakozesebwa mu kunoonya nsobi" + +#. Description of --gtk-no-debug=FLAGS in --help output +#: ../gtk/gtkmain.c:572 +msgid "GTK+ debugging flags to unset" +msgstr "" +"Kano kalaga obutuuti obwa GTK+ obukozesebwa mu kunoonya nsobi " +"obunaategekululwa" + +#. Translate to default:RTL if you want your widgets +#. * to be RTL, otherwise translate to default:LTR. +#. * Do *not* translate it to "predefinito:LTR", if it +#. * it isn't default:LTR or default:RTL it will not work +#. +#: ../gtk/gtkmain.c:835 +msgid "default:LTR" +msgstr "default:LTR" + +#: ../gtk/gtkmain.c:899 +#, c-format +msgid "Cannot open display: %s" +msgstr "Nnemedwa okutandika omulimu gwa X: %s" + +#: ../gtk/gtkmain.c:965 +msgid "GTK+ Options" +msgstr "Obuwayiro obwa GTK+" + +#: ../gtk/gtkmain.c:965 +msgid "Show GTK+ Options" +msgstr "Laga obuwayiro obusobola okwongerwa ku GTK+" + +#: ../gtk/gtkmountoperation.c:491 +msgid "Co_nnect" +msgstr "We_yungeko" + +#: ../gtk/gtkmountoperation.c:558 +msgid "Connect _anonymously" +msgstr "Weyungeko ki_teyanjula" + +#: ../gtk/gtkmountoperation.c:567 +msgid "Connect as u_ser:" +msgstr "Weyungeko ng'okozesa erinnya:" + +#: ../gtk/gtkmountoperation.c:605 +msgid "_Username:" +msgstr "_Linnya lya mukozesa:" + +#: ../gtk/gtkmountoperation.c:610 +msgid "_Domain:" +msgstr "_Twale:" + +#: ../gtk/gtkmountoperation.c:616 +msgid "_Password:" +msgstr "_Kyama:" + +#: ../gtk/gtkmountoperation.c:634 +msgid "Forget password _immediately" +msgstr "Olumala kukozesa ekyama, k_isangule mu ggwanika" + +#: ../gtk/gtkmountoperation.c:644 +msgid "Remember password until you _logout" +msgstr "Ekyama kisangule mu ggwanika nga nkomyeza o_lutuula" + +#: ../gtk/gtkmountoperation.c:654 +msgid "Remember _forever" +msgstr "Terekera ddala _ekyama" + +#: ../gtk/gtkmountoperation.c:883 +#, c-format +msgid "Unknown Application (PID %d)" +msgstr "Puloguramu eriko PID %d tetegeerese" + +#: ../gtk/gtkmountoperation.c:1066 +msgid "Unable to end process" +msgstr "Nnemedwa okukomya omulimu" + +#: ../gtk/gtkmountoperation.c:1103 +msgid "_End Process" +msgstr "K_omya omulimu" + +#: ../gtk/gtkmountoperation-stub.c:64 +#, c-format +msgid "Cannot kill process with PID %d. Operation is not implemented." +msgstr "" +"Sisobola okumazisa mbagirawo omulimu oguliko PID %d. Omukolo ogwo teguliiko " +"ku sisitemu." + +#. translators: this string is a name for the 'less' command +#: ../gtk/gtkmountoperation-x11.c:862 +msgid "Terminal Pager" +msgstr "Puloguramu ey'okusomer'ebintu mu kiwandikiro" + +#: ../gtk/gtkmountoperation-x11.c:863 +msgid "Top Command" +msgstr "Ekiragiro ekitandika Top" + +#: ../gtk/gtkmountoperation-x11.c:864 +msgid "Bourne Again Shell" +msgstr "Enzivvuunuzi eya Bourne Again" + +#: ../gtk/gtkmountoperation-x11.c:865 +msgid "Bourne Shell" +msgstr "Enzivvuunuzi eya Bourne" + +#: ../gtk/gtkmountoperation-x11.c:866 +msgid "Z Shell" +msgstr "Enzivvuunuzi ya Z" + +#: ../gtk/gtkmountoperation-x11.c:963 +#, c-format +msgid "Cannot end process with PID %d: %s" +msgstr "Nnemedwa okukomya omulimu ogwa PID %d: %s" + +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 +#, c-format +msgid "Page %u" +msgstr "Lupapula %u" + +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 +#: ../gtk/gtkpapersize.c:880 +msgid "Not a valid page setup file" +msgstr "Eyo tekola nga fayiro eteekateeka lupapula" + +#: ../gtk/gtkpagesetupunixdialog.c:179 +msgid "Any Printer" +msgstr "Pulinta yonna" + +#: ../gtk/gtkpagesetupunixdialog.c:179 +msgid "For portable documents" +msgstr "Fayiro ezikolera ku sisitemu ezitafaanagana" + +#: ../gtk/gtkpagesetupunixdialog.c:809 +#, c-format +msgid "" +"Margins:\n" +" Left: %s %s\n" +" Right: %s %s\n" +" Top: %s %s\n" +" Bottom: %s %s" +msgstr "" +"Emyagaanya:\n" +" Ogwa kkono: %s %s\n" +" Ogwa ddyo: %s %s\n" +" Ogwa waggulu: %s %s\n" +" Ogwa wansi: %s %s" + +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3293 +msgid "Manage Custom Sizes..." +msgstr "Teekateeka ebigero byeweyiyizza..." + +#: ../gtk/gtkpagesetupunixdialog.c:909 +msgid "_Format for:" +msgstr "_Enteekateeka ya:" + +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3465 +msgid "_Paper size:" +msgstr "Ki_gero kya lupapula:" + +#: ../gtk/gtkpagesetupunixdialog.c:962 +msgid "_Orientation:" +msgstr "En_simba ya lupapula:" + +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3527 +msgid "Page Setup" +msgstr "Entegeka ya lupapula" + +#: ../gtk/gtkpathbar.c:157 +msgid "Up Path" +msgstr "Mabega" + +#: ../gtk/gtkpathbar.c:159 +msgid "Down Path" +msgstr "Mu maaso" + +#: ../gtk/gtkpathbar.c:1519 +msgid "File System Root" +msgstr "Musingi gwa sisitemu ya fayiro" + +#: ../gtk/gtkprintbackend.c:749 +msgid "Authentication" +msgstr "Enkakasa" + +#: ../gtk/gtkprinteroptionwidget.c:686 +msgid "Not available" +msgstr "Bbule" + +#: ../gtk/gtkprinteroptionwidget.c:786 +msgid "Select a folder" +msgstr "Londayo tterekero" + +#: ../gtk/gtkprinteroptionwidget.c:805 +msgid "_Save in folder:" +msgstr "_Kaliza mu tterekero:" + +#. translators: this string is the default job title for print +#. * jobs. %s gets replaced by the application name, %d gets replaced +#. * by the job number. +#. +#: ../gtk/gtkprintoperation.c:193 +#, c-format +msgid "%s job #%d" +msgstr "Omulimu gwa %s #%d" + +#: ../gtk/gtkprintoperation.c:1698 +msgctxt "print operation status" +msgid "Initial state" +msgstr "Embeera etandikidwako" + +#: ../gtk/gtkprintoperation.c:1699 +msgctxt "print operation status" +msgid "Preparing to print" +msgstr "Yetegekera okukubisa" + +#: ../gtk/gtkprintoperation.c:1700 +msgctxt "print operation status" +msgid "Generating data" +msgstr "Eteekateeka ebinaakubisibwa" + +#: ../gtk/gtkprintoperation.c:1701 +msgctxt "print operation status" +msgid "Sending data" +msgstr "Ebinaakubibwa bigenda mu kyuma" + +#: ../gtk/gtkprintoperation.c:1702 +msgctxt "print operation status" +msgid "Waiting" +msgstr "Erinda mirimu" + +#: ../gtk/gtkprintoperation.c:1703 +msgctxt "print operation status" +msgid "Blocking on issue" +msgstr "" + +#: ../gtk/gtkprintoperation.c:1704 +msgctxt "print operation status" +msgid "Printing" +msgstr "Ekubisa" + +#: ../gtk/gtkprintoperation.c:1705 +msgctxt "print operation status" +msgid "Finished" +msgstr "Guwedde" + +#: ../gtk/gtkprintoperation.c:1706 +msgctxt "print operation status" +msgid "Finished with error" +msgstr "Gudweredde ku kiremya" + +#: ../gtk/gtkprintoperation.c:2273 +#, c-format +msgid "Preparing %d" +msgstr "Ntegeka %d" + +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 +msgid "Preparing" +msgstr "Ntegeka" + +#: ../gtk/gtkprintoperation.c:2278 +#, c-format +msgid "Printing %d" +msgstr "Nkubisa %d" + +#: ../gtk/gtkprintoperation.c:2935 +msgid "Error creating print preview" +msgstr "Wazzewo kiremya mu kukulagako ebinaakubisibwa" + +#: ../gtk/gtkprintoperation.c:2938 +msgid "The most probable reason is that a temporary file could not be created." +msgstr "" +"Ebiseera ebisinga, kino kijja olw'okuba tekisibose okukolawo fayiro " +"eye'kiseerabuseera." + +#: ../gtk/gtkprintoperation-unix.c:304 +msgid "Error launching preview" +msgstr "Wazzewo kiremya mu kutandika ogw'okukulagako ebinaakubisibwa" + +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 +msgid "Application" +msgstr "Puloguramu" + +#: ../gtk/gtkprintoperation-win32.c:611 +msgid "Printer offline" +msgstr "Omukutu gwa pulinta ssi muggule" + +#: ../gtk/gtkprintoperation-win32.c:613 +msgid "Out of paper" +msgstr "Empapula ziweddewo" + +#. Translators: this is a printer status. +#: ../gtk/gtkprintoperation-win32.c:615 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 +msgid "Paused" +msgstr "Guyimirizidwamu" + +#: ../gtk/gtkprintoperation-win32.c:617 +msgid "Need user intervention" +msgstr "Kyetaagisa byambi bwa mukozesa" + +#: ../gtk/gtkprintoperation-win32.c:717 +msgid "Custom size" +msgstr "Kigero ekyeyiyize" + +#: ../gtk/gtkprintoperation-win32.c:1539 +msgid "No printer found" +msgstr "Mbulidwa pulinta" + +#: ../gtk/gtkprintoperation-win32.c:1566 +msgid "Invalid argument to CreateDC" +msgstr "CreateDC efunye agumenti etakola" + +#: ../gtk/gtkprintoperation-win32.c:1602 ../gtk/gtkprintoperation-win32.c:1829 +msgid "Error from StartDoc" +msgstr "StartDoc efunye kiremya" + +#: ../gtk/gtkprintoperation-win32.c:1684 ../gtk/gtkprintoperation-win32.c:1707 +#: ../gtk/gtkprintoperation-win32.c:1755 +msgid "Not enough free memory" +msgstr "Ebbanga erisigadde mu ggwanika terimala" + +#: ../gtk/gtkprintoperation-win32.c:1760 +msgid "Invalid argument to PrintDlgEx" +msgstr "PrintDlogEx efunye agumenti etakola" + +#: ../gtk/gtkprintoperation-win32.c:1765 +msgid "Invalid pointer to PrintDlgEx" +msgstr "Akasonga ku PrintDlgEx kasobu" + +#: ../gtk/gtkprintoperation-win32.c:1770 +msgid "Invalid handle to PrintDlgEx" +msgstr "Data enyanjuzi eya PrintDlgEx nsobu" + +#: ../gtk/gtkprintoperation-win32.c:1775 +msgid "Unspecified error" +msgstr "Wazzewo kiremya etanyonyodwa" + +#: ../gtk/gtkprintunixdialog.c:619 +msgid "Getting printer information failed" +msgstr "Okufuna ebifa ku pulinta kulemye" + +#: ../gtk/gtkprintunixdialog.c:1874 +msgid "Getting printer information..." +msgstr "Nnona ebikwata ku pulinta..." + +#: ../gtk/gtkprintunixdialog.c:2141 +msgid "Printer" +msgstr "Pulinta" + +#. Translators: this is the header for the location column in the print dialog +#: ../gtk/gtkprintunixdialog.c:2151 +msgid "Location" +msgstr "Obusangiro" + +#. Translators: this is the header for the printer status column in the print dialog +#: ../gtk/gtkprintunixdialog.c:2162 +msgid "Status" +msgstr "Embeera" + +#: ../gtk/gtkprintunixdialog.c:2188 +msgid "Range" +msgstr "Lubu" + +#: ../gtk/gtkprintunixdialog.c:2192 +msgid "_All Pages" +msgstr "Mpapula _zonna" + +#: ../gtk/gtkprintunixdialog.c:2199 +msgid "C_urrent Page" +msgstr "Lupapula _Luno" + +#: ../gtk/gtkprintunixdialog.c:2209 +msgid "Se_lection" +msgstr "Ebi_rondedwa" + +#: ../gtk/gtkprintunixdialog.c:2218 +msgid "Pag_es:" +msgstr "Mpapula:" + +#: ../gtk/gtkprintunixdialog.c:2219 +msgid "" +"Specify one or more page ranges,\n" +" e.g. 1-3,7,11" +msgstr "" +"Wandika olubu oba mbu za mpapula,\n" +" okugeza: 1-3 oba 3,7,11" + +#: ../gtk/gtkprintunixdialog.c:2229 +msgid "Pages" +msgstr "Mpapula" + +#: ../gtk/gtkprintunixdialog.c:2242 +msgid "Copies" +msgstr "Koppi" + +#. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns +#: ../gtk/gtkprintunixdialog.c:2247 +msgid "Copie_s:" +msgstr "_Koppi:" + +#: ../gtk/gtkprintunixdialog.c:2265 +msgid "C_ollate" +msgstr "Bi_sengeke" + +#: ../gtk/gtkprintunixdialog.c:2273 +msgid "_Reverse" +msgstr "_Vuunika ngobereragana y'empapula" + +#: ../gtk/gtkprintunixdialog.c:2293 +msgid "General" +msgstr "Bitalibimu" + +#. Translators: These strings name the possible arrangements of +#. * multiple pages on a sheet when printing (same as in gtkprintbackendcups.c) +#. +#. Translators: These strings name the possible arrangements of +#. * multiple pages on a sheet when printing +#. +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 +msgid "Left to right, top to bottom" +msgstr "Tandikira waggulu okke nga ova ku kkono odda ku ddyo" + +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 +msgid "Left to right, bottom to top" +msgstr "Tandikira wansi oyambuke nga ova ku kkono odda ku ddyo" + +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 +msgid "Right to left, top to bottom" +msgstr "Tandikira waggulu okke nga ova ku ddyo odda ku kkono" + +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 +msgid "Right to left, bottom to top" +msgstr "Tandikira wansi oyambuke nga ova ku ddyo odda ku kkono" + +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 +msgid "Top to bottom, left to right" +msgstr "Tandikira ku kkono osenserere ku ddyo nga ova waggulu odda wansi" + +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 +msgid "Top to bottom, right to left" +msgstr "Tandikira ku ddyo osenserere ku kkono nga ova waggulu odda wasni" + +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 +msgid "Bottom to top, left to right" +msgstr "Tandikira ku kkono osenserere ku ddyo nga ova wansi odda waggulu" + +#: ../gtk/gtkprintunixdialog.c:3029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 +msgid "Bottom to top, right to left" +msgstr "Tandikira ku ddyo osenserere ku kkono nga ova wansi odda waggulu" + +#. Translators, this string is used to label the option in the print +#. * dialog that controls in what order multiple pages are arranged +#. +#: ../gtk/gtkprintunixdialog.c:3033 ../gtk/gtkprintunixdialog.c:3046 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 +msgid "Page Ordering" +msgstr "Ensengeka y'empapula" + +#: ../gtk/gtkprintunixdialog.c:3062 +msgid "Left to right" +msgstr "Zitandikire ku kkono" + +#: ../gtk/gtkprintunixdialog.c:3063 +msgid "Right to left" +msgstr "Zitandikire ku ddyo" + +#: ../gtk/gtkprintunixdialog.c:3075 +msgid "Top to bottom" +msgstr "Zive waggulu zikke" + +#: ../gtk/gtkprintunixdialog.c:3076 +msgid "Bottom to top" +msgstr "Zive wansi z'ambuka" + +#: ../gtk/gtkprintunixdialog.c:3316 +msgid "Layout" +msgstr "Entegeka" + +#: ../gtk/gtkprintunixdialog.c:3320 +msgid "T_wo-sided:" +msgstr "Mpandikeko kungulu n'emabega:" + +#: ../gtk/gtkprintunixdialog.c:3335 +msgid "Pages per _side:" +msgstr "Bya mpapula meka ku buli ludda:" + +#: ../gtk/gtkprintunixdialog.c:3352 +msgid "Page or_dering:" +msgstr "Nsengeka ya mpapula z'ekikubisibwa:" + +#: ../gtk/gtkprintunixdialog.c:3368 +msgid "_Only print:" +msgstr "K_ubisako:" + +#. In enum order +#: ../gtk/gtkprintunixdialog.c:3383 +msgid "All sheets" +msgstr "mpapula zonna" + +#: ../gtk/gtkprintunixdialog.c:3384 +msgid "Even sheets" +msgstr "mpapula eza namba ezigabizikamu bbiri" + +#: ../gtk/gtkprintunixdialog.c:3385 +msgid "Odd sheets" +msgstr "mpapula eza namba ezitagabizikamu bbiri" + +#: ../gtk/gtkprintunixdialog.c:3388 +msgid "Sc_ale:" +msgstr "Ki_gero:" + +#: ../gtk/gtkprintunixdialog.c:3415 +msgid "Paper" +msgstr "Mpapula" + +#: ../gtk/gtkprintunixdialog.c:3419 +msgid "Paper _type:" +msgstr "K_ika ku mpapula" + +#: ../gtk/gtkprintunixdialog.c:3434 +msgid "Paper _source:" +msgstr "Nnono _y'empapula:" + +#: ../gtk/gtkprintunixdialog.c:3449 +msgid "Output t_ray:" +msgstr "Ebiwedde gye bi_raga" + +#: ../gtk/gtkprintunixdialog.c:3489 +msgid "Or_ientation:" +msgstr "Ensi_mba" + +#. In enum order +#: ../gtk/gtkprintunixdialog.c:3504 +msgid "Portrait" +msgstr "Busimbalaala" + +#: ../gtk/gtkprintunixdialog.c:3505 +msgid "Landscape" +msgstr "Bugazi" + +#: ../gtk/gtkprintunixdialog.c:3506 +msgid "Reverse portrait" +msgstr "Busimbalaala nga ebikubisidwa bivuunikidwa mu busimba" + +#: ../gtk/gtkprintunixdialog.c:3507 +msgid "Reverse landscape" +msgstr "Bugazi nga ebikubisidwa bivuunukdwa mu bugazi" + +#: ../gtk/gtkprintunixdialog.c:3552 +msgid "Job Details" +msgstr "Ebikwata ku mulimu" + +#: ../gtk/gtkprintunixdialog.c:3558 +msgid "Pri_ority:" +msgstr "Obusengeke bw'omulimu:" + +#: ../gtk/gtkprintunixdialog.c:3573 +msgid "_Billing info:" +msgstr "Eby'oku_banja:" + +#: ../gtk/gtkprintunixdialog.c:3591 +msgid "Print Document" +msgstr "Kubisa kiwandiko" + +#. Translators: this is one of the choices for the print at option +#. * in the print dialog +#. +#: ../gtk/gtkprintunixdialog.c:3600 +msgid "_Now" +msgstr "Kaka_ti" + +#: ../gtk/gtkprintunixdialog.c:3611 +msgid "A_t:" +msgstr "Ku _saawa:" + +#. Translators: Ability to parse the am/pm format depends on actual locale. +#. * You can remove the am/pm values below for your locale if they are not +#. * supported. +#. +#: ../gtk/gtkprintunixdialog.c:3617 +msgid "" +"Specify the time of print,\n" +" e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" +msgstr "" +"Wandikawo obudde omulimu kwe guba gukolebwa,\n" +" okugeza nga 15:30, 2:35 pm, 14:15:20, 11:46:30 am oba 4 pm" + +#: ../gtk/gtkprintunixdialog.c:3627 +msgid "Time of print" +msgstr "Essaawa ez'okutandika" + +#: ../gtk/gtkprintunixdialog.c:3643 +msgid "On _hold" +msgstr "Gu_sibidwa" + +#: ../gtk/gtkprintunixdialog.c:3644 +msgid "Hold the job until it is explicitly released" +msgstr "Omulimu gusibe okutuuse lwe wabawo agulagira okuteebwa" + +#: ../gtk/gtkprintunixdialog.c:3664 +msgid "Add Cover Page" +msgstr "Teekawo olupapula olusabika" + +#. Translators, this is the label used for the option in the print +#. * dialog that controls the front cover page. +#. +#: ../gtk/gtkprintunixdialog.c:3673 +msgid "Be_fore:" +msgstr "Nga lu_tandika ez'omu kiti kya:" + +#. Translators, this is the label used for the option in the print +#. * dialog that controls the back cover page. +#. +#: ../gtk/gtkprintunixdialog.c:3691 +msgid "_After:" +msgstr "Nga lu_fundikira ez'omu kiti kya:" + +#. Translators: this is the tab label for the notebook tab containing +#. * job-specific options in the print dialog +#. +#: ../gtk/gtkprintunixdialog.c:3709 +msgid "Job" +msgstr "Eby'omulimu" + +#: ../gtk/gtkprintunixdialog.c:3775 +msgid "Advanced" +msgstr "Ebyetaagisa bumanyirivu" + +#. Translators: this will appear as tab label in print dialog. +#: ../gtk/gtkprintunixdialog.c:3813 +msgid "Image Quality" +msgstr "Obulongoofu bw'ekifaananyi" + +#. Translators: this will appear as tab label in print dialog. +#: ../gtk/gtkprintunixdialog.c:3817 +msgid "Color" +msgstr "Langi" + +#. Translators: this will appear as tab label in print dialog. +#. It's a typographical term, as in "Binding and finishing" +#: ../gtk/gtkprintunixdialog.c:3822 +msgid "Finishing" +msgstr "Emmaliriza" + +#: ../gtk/gtkprintunixdialog.c:3832 +msgid "Some of the settings in the dialog conflict" +msgstr "Ebimu ku by'oteekateese bikontana" + +#: ../gtk/gtkprintunixdialog.c:3855 +msgid "Print" +msgstr "Kubisa" + +#: ../gtk/gtkrc.c:946 +#, c-format +msgid "Unable to locate image file in pixmap_path: \"%s\"" +msgstr "Fayiro erimu ekifaananyi, mu pixmap_path embuze: \"%s\"" + +#: ../gtk/gtkrecentaction.c:165 ../gtk/gtkrecentaction.c:173 +#: ../gtk/gtkrecentchoosermenu.c:608 ../gtk/gtkrecentchoosermenu.c:616 +#, c-format +msgid "This function is not implemented for widgets of class '%s'" +msgstr "Obutundu bwa'awakolerwa obw'omu kiti kya '%s' tebuliimu omukolo guno" + +#: ../gtk/gtkrecentchooserdefault.c:483 +msgid "Select which type of documents are shown" +msgstr "Londa ekika ky'ebiwandike ekiba kirabika" + +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 +#, c-format +msgid "No item for URI '%s' found" +msgstr "Tewali kizuulidwa ekirina URI ya '%s'" + +#: ../gtk/gtkrecentchooserdefault.c:1301 +msgid "Untitled filter" +msgstr "Ensunsula etalina linnya" + +#: ../gtk/gtkrecentchooserdefault.c:1654 +msgid "Could not remove item" +msgstr "Nnemedwa okugyako ekirondedwa" + +#: ../gtk/gtkrecentchooserdefault.c:1698 +msgid "Could not clear list" +msgstr "Nnemedwa okugigya ku lukalala" + +#: ../gtk/gtkrecentchooserdefault.c:1782 +msgid "Copy _Location" +msgstr "Ko_la koppi mu kisangibwa wano" + +#: ../gtk/gtkrecentchooserdefault.c:1795 +msgid "_Remove From List" +msgstr "_Giggye ku lukalala" + +#: ../gtk/gtkrecentchooserdefault.c:1804 +msgid "_Clear List" +msgstr "_Gyawo olukalala" + +#: ../gtk/gtkrecentchooserdefault.c:1818 +msgid "Show _Private Resources" +msgstr "" + +#. we create a placeholder menuitem, to be used in case +#. * the menu is empty. this placeholder will stay around +#. * for the entire lifetime of the menu, and we just hide it +#. * when it's not used. we have to do this, and do it here, +#. * because we need a marker for the beginning of the recent +#. * items list, so that we can insert the new items at the +#. * right place when idly populating the menu in case the +#. * user appended or prepended custom menu items to the +#. * recent chooser menu widget. +#. +#: ../gtk/gtkrecentchoosermenu.c:362 +msgid "No items found" +msgstr "Tewali byakakozesebwa" + +#: ../gtk/gtkrecentchoosermenu.c:528 ../gtk/gtkrecentchoosermenu.c:584 +#, c-format +msgid "No recently used resource found with URI `%s'" +msgstr "Tewali byakakozesebwa ebirina URI eya `%s'" + +#: ../gtk/gtkrecentchoosermenu.c:795 +#, c-format +msgid "Open '%s'" +msgstr "Bikkula '%s'" + +#: ../gtk/gtkrecentchoosermenu.c:825 +msgid "Unknown item" +msgstr "Embulakunyonyola" + +#. This is the label format that is used for the first 10 items +#. * in a recent files menu. The %d is the number of the item, +#. * the %s is the name of the item. Please keep the _ in front +#. * of the number to give these menu items a mnemonic. +#. +#: ../gtk/gtkrecentchoosermenu.c:836 +#, c-format +msgctxt "recent menu label" +msgid "_%d. %s" +msgstr "_%d. %s" + +#. This is the format that is used for items in a recent files menu. +#. * The %d is the number of the item, the %s is the name of the item. +#. +#: ../gtk/gtkrecentchoosermenu.c:841 +#, c-format +msgctxt "recent menu label" +msgid "%d. %s" +msgstr "%d. %s" + +#: ../gtk/gtkrecentmanager.c:1000 ../gtk/gtkrecentmanager.c:1013 +#: ../gtk/gtkrecentmanager.c:1150 ../gtk/gtkrecentmanager.c:1160 +#: ../gtk/gtkrecentmanager.c:1213 ../gtk/gtkrecentmanager.c:1222 +#: ../gtk/gtkrecentmanager.c:1237 +#, c-format +msgid "Unable to find an item with URI '%s'" +msgstr "Nnemedwa okuzuulayo ekirina URI ya '%s'" + +#: ../gtk/gtkrecentmanager.c:2437 +#, c-format +msgid "No registered application with name '%s' for item with URI '%s' found" +msgstr "" + +#: ../gtk/gtkspinner.c:326 +msgctxt "throbbing progress animation widget" +msgid "Spinner" +msgstr "Ak'etoolola" + +#: ../gtk/gtkspinner.c:327 +msgid "Provides visual indication of progress" +msgstr "Kalaga nti omulimu gutambula" + +#. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate +#: ../gtk/gtkstock.c:313 +msgctxt "Stock label" +msgid "Information" +msgstr "Okumanyisa" + +#: ../gtk/gtkstock.c:314 +msgctxt "Stock label" +msgid "Warning" +msgstr "Kulabula" + +#: ../gtk/gtkstock.c:315 +msgctxt "Stock label" +msgid "Error" +msgstr "Kiremya" + +#: ../gtk/gtkstock.c:316 +msgctxt "Stock label" +msgid "Question" +msgstr "Kibuuzo" + +#. FIXME these need accelerators when appropriate, and +#. * need the mnemonics to be rationalized +#. +#: ../gtk/gtkstock.c:321 +msgctxt "Stock label" +msgid "_About" +msgstr "K_wanjula" + +#: ../gtk/gtkstock.c:322 +msgctxt "Stock label" +msgid "_Add" +msgstr "_Yongerako" + +#: ../gtk/gtkstock.c:323 +msgctxt "Stock label" +msgid "_Apply" +msgstr "_Kaza" + +#: ../gtk/gtkstock.c:324 +msgctxt "Stock label" +msgid "_Bold" +msgstr "_Nziggumivu" + +#: ../gtk/gtkstock.c:325 +msgctxt "Stock label" +msgid "_Cancel" +msgstr "_Sazamu" + +#: ../gtk/gtkstock.c:326 +msgctxt "Stock label" +msgid "_CD-ROM" +msgstr "_CDROMU" + +#: ../gtk/gtkstock.c:327 +msgctxt "Stock label" +msgid "_Clear" +msgstr "S_iimula" + +#: ../gtk/gtkstock.c:328 +msgctxt "Stock label" +msgid "_Close" +msgstr "_Gala" + +#: ../gtk/gtkstock.c:329 +msgctxt "Stock label" +msgid "C_onnect" +msgstr "We_yungeko" + +#: ../gtk/gtkstock.c:330 +msgctxt "Stock label" +msgid "_Convert" +msgstr "_Fuula" + +#: ../gtk/gtkstock.c:331 +msgctxt "Stock label" +msgid "_Copy" +msgstr "_Koppa" + +#: ../gtk/gtkstock.c:332 +msgctxt "Stock label" +msgid "Cu_t" +msgstr "Si_tulawo" + +#: ../gtk/gtkstock.c:333 +msgctxt "Stock label" +msgid "_Delete" +msgstr "_Gyawo" + +#: ../gtk/gtkstock.c:334 +msgctxt "Stock label" +msgid "_Discard" +msgstr "L_eka" + +#: ../gtk/gtkstock.c:335 +msgctxt "Stock label" +msgid "_Disconnect" +msgstr "We_kutuleko" + +#: ../gtk/gtkstock.c:336 +msgctxt "Stock label" +msgid "_Execute" +msgstr "_Tandika" + +#: ../gtk/gtkstock.c:337 +msgctxt "Stock label" +msgid "_Edit" +msgstr "_Kyusa" + +#: ../gtk/gtkstock.c:338 +msgctxt "Stock label" +msgid "_File" +msgstr "_Fayiro" + +#: ../gtk/gtkstock.c:339 +msgctxt "Stock label" +msgid "_Find" +msgstr "_Zuula" + +#: ../gtk/gtkstock.c:340 +msgctxt "Stock label" +msgid "Find and _Replace" +msgstr "Zuula ozze_wo ekirala" + +#: ../gtk/gtkstock.c:341 +msgctxt "Stock label" +msgid "_Floppy" +msgstr "_Fuloppi" + +#: ../gtk/gtkstock.c:342 +msgctxt "Stock label" +msgid "_Fullscreen" +msgstr "_Malayo olutimbe" + +#: ../gtk/gtkstock.c:343 +msgctxt "Stock label" +msgid "_Leave Fullscreen" +msgstr "_Ta olutimbe" + +#. This is a navigation label as in "go to the bottom of the page" +#: ../gtk/gtkstock.c:345 +msgctxt "Stock label, navigation" +msgid "_Bottom" +msgstr "Ku _ntobo" + +#. This is a navigation label as in "go to the first page" +#: ../gtk/gtkstock.c:347 +msgctxt "Stock label, navigation" +msgid "_First" +msgstr "Awa_sooka" + +#. This is a navigation label as in "go to the last page" +#: ../gtk/gtkstock.c:349 +msgctxt "Stock label, navigation" +msgid "_Last" +msgstr "Awas_emba" + +#. This is a navigation label as in "go to the top of the page" +#: ../gtk/gtkstock.c:351 +msgctxt "Stock label, navigation" +msgid "_Top" +msgstr "Ku nt_andikwa" + +#. This is a navigation label as in "go back" +#: ../gtk/gtkstock.c:353 +msgctxt "Stock label, navigation" +msgid "_Back" +msgstr "_Mabega" + +#. This is a navigation label as in "go down" +#: ../gtk/gtkstock.c:355 +msgctxt "Stock label, navigation" +msgid "_Down" +msgstr "_Serengesa" + +#. This is a navigation label as in "go forward" +#: ../gtk/gtkstock.c:357 +msgctxt "Stock label, navigation" +msgid "_Forward" +msgstr "_Maaso" + +#. This is a navigation label as in "go up" +#: ../gtk/gtkstock.c:359 +msgctxt "Stock label, navigation" +msgid "_Up" +msgstr "_Yambusa" + +#: ../gtk/gtkstock.c:360 +msgctxt "Stock label" +msgid "_Hard Disk" +msgstr "_Disiki ya munda" + +#: ../gtk/gtkstock.c:361 +msgctxt "Stock label" +msgid "_Help" +msgstr "_Nymaba" + +#: ../gtk/gtkstock.c:362 +msgctxt "Stock label" +msgid "_Home" +msgstr "_Kka" + +#: ../gtk/gtkstock.c:363 +msgctxt "Stock label" +msgid "Increase Indent" +msgstr "Yongera ebbanga erikulembera entandikwa y'olunyiriri" + +#: ../gtk/gtkstock.c:364 +msgctxt "Stock label" +msgid "Decrease Indent" +msgstr "Kendeeza ebbanga erikulembera entandikwa y'olunyiriri" + +#: ../gtk/gtkstock.c:365 +msgctxt "Stock label" +msgid "_Index" +msgstr "N_dagiriro" + +#: ../gtk/gtkstock.c:366 +msgctxt "Stock label" +msgid "_Information" +msgstr "Oku_manyisa" + +#: ../gtk/gtkstock.c:367 +msgctxt "Stock label" +msgid "_Italic" +msgstr "N_surike" + +#: ../gtk/gtkstock.c:368 +msgctxt "Stock label" +msgid "_Jump to" +msgstr "_Buukira" + +#. This is about text justification, "centered text" +#: ../gtk/gtkstock.c:370 +msgctxt "Stock label" +msgid "_Center" +msgstr "Mu ma_kkati" + +#. This is about text justification +#: ../gtk/gtkstock.c:372 +msgctxt "Stock label" +msgid "_Fill" +msgstr "_Jjuzawo" + +#. This is about text justification, "left-justified text" +#: ../gtk/gtkstock.c:374 +msgctxt "Stock label" +msgid "_Left" +msgstr "_Kkono" + +#. This is about text justification, "right-justified text" +#: ../gtk/gtkstock.c:376 +msgctxt "Stock label" +msgid "_Right" +msgstr "_Ddyo" + +#. Media label, as in "fast forward" +#: ../gtk/gtkstock.c:379 +msgctxt "Stock label, media" +msgid "_Forward" +msgstr "Weyongere mu m_aaso" + +#. Media label, as in "next song" +#: ../gtk/gtkstock.c:381 +msgctxt "Stock label, media" +msgid "_Next" +msgstr "_Weyongereyo" + +#. Media label, as in "pause music" +#: ../gtk/gtkstock.c:383 +msgctxt "Stock label, media" +msgid "P_ause" +msgstr "_Yimirizamu" + +#. Media label, as in "play music" +#: ../gtk/gtkstock.c:385 +msgctxt "Stock label, media" +msgid "_Play" +msgstr "_Tandika" + +#. Media label, as in "previous song" +#: ../gtk/gtkstock.c:387 +msgctxt "Stock label, media" +msgid "Pre_vious" +msgstr "_Ddayo" + +#. Media label +#: ../gtk/gtkstock.c:389 +msgctxt "Stock label, media" +msgid "_Record" +msgstr "_Kwata" + +#. Media label +#: ../gtk/gtkstock.c:391 +msgctxt "Stock label, media" +msgid "R_ewind" +msgstr "Dda ma_bega" + +#. Media label +#: ../gtk/gtkstock.c:393 +msgctxt "Stock label, media" +msgid "_Stop" +msgstr "_Koma" + +#: ../gtk/gtkstock.c:394 +msgctxt "Stock label" +msgid "_Network" +msgstr "Ka_yungirizi" + +#: ../gtk/gtkstock.c:395 +msgctxt "Stock label" +msgid "_New" +msgstr "_Bipya" + +#: ../gtk/gtkstock.c:396 +msgctxt "Stock label" +msgid "_No" +msgstr "_Nedda" + +#: ../gtk/gtkstock.c:397 +msgctxt "Stock label" +msgid "_OK" +msgstr "_Kale" + +#: ../gtk/gtkstock.c:398 +msgctxt "Stock label" +msgid "_Open" +msgstr "_Bikkula" + +#. Page orientation +#: ../gtk/gtkstock.c:400 +msgctxt "Stock label" +msgid "Landscape" +msgstr "Bugazi" + +#. Page orientation +#: ../gtk/gtkstock.c:402 +msgctxt "Stock label" +msgid "Portrait" +msgstr "Busimbalaala" + +#. Page orientation +#: ../gtk/gtkstock.c:404 +msgctxt "Stock label" +msgid "Reverse landscape" +msgstr "Bugazi nga bivuunikedwa mu busimba" + +#. Page orientation +#: ../gtk/gtkstock.c:406 +msgctxt "Stock label" +msgid "Reverse portrait" +msgstr "Busimbalaala nga bivuunikdwa mu busimba" + +#: ../gtk/gtkstock.c:407 +msgctxt "Stock label" +msgid "Page Set_up" +msgstr "Nteekateeka y'olupapula" + +#: ../gtk/gtkstock.c:408 +msgctxt "Stock label" +msgid "_Paste" +msgstr "_Paatiika" + +#: ../gtk/gtkstock.c:409 +msgctxt "Stock label" +msgid "_Preferences" +msgstr "_Nteekateeka" + +#: ../gtk/gtkstock.c:410 +msgctxt "Stock label" +msgid "_Print" +msgstr "_Kubisa" + +#: ../gtk/gtkstock.c:411 +msgctxt "Stock label" +msgid "Print Pre_view" +msgstr "Kebera enfaanana y'ebinaakubibwa" + +#: ../gtk/gtkstock.c:412 +msgctxt "Stock label" +msgid "_Properties" +msgstr "Ebi_kwata ku fayiro" + +#: ../gtk/gtkstock.c:413 +msgctxt "Stock label" +msgid "_Quit" +msgstr "_Mala" + +#: ../gtk/gtkstock.c:414 +msgctxt "Stock label" +msgid "_Redo" +msgstr "_Zawo" + +#: ../gtk/gtkstock.c:415 +msgctxt "Stock label" +msgid "_Refresh" +msgstr "" + +#: ../gtk/gtkstock.c:416 +msgctxt "Stock label" +msgid "_Remove" +msgstr "_Gyawo" + +#: ../gtk/gtkstock.c:417 +msgctxt "Stock label" +msgid "_Revert" +msgstr "_Dda ku by'edda" + +#: ../gtk/gtkstock.c:418 +msgctxt "Stock label" +msgid "_Save" +msgstr "_Kaza" + +#: ../gtk/gtkstock.c:419 +msgctxt "Stock label" +msgid "Save _As" +msgstr "Gyamu ko_ppi" + +#: ../gtk/gtkstock.c:420 +msgctxt "Stock label" +msgid "Select _All" +msgstr "Londa by_onna" + +#: ../gtk/gtkstock.c:421 +msgctxt "Stock label" +msgid "_Color" +msgstr "_Langi" + +#: ../gtk/gtkstock.c:422 +msgctxt "Stock label" +msgid "_Font" +msgstr "N_kula y'ennukuta" + +#. Sorting direction +#: ../gtk/gtkstock.c:424 +msgctxt "Stock label" +msgid "_Ascending" +msgstr "K'_ambukiriro" + +#. Sorting direction +#: ../gtk/gtkstock.c:426 +msgctxt "Stock label" +msgid "_Descending" +msgstr "Ka_kkiririro" + +#: ../gtk/gtkstock.c:427 +msgctxt "Stock label" +msgid "_Spell Check" +msgstr "Kebera m_pandika" + +#: ../gtk/gtkstock.c:428 +msgctxt "Stock label" +msgid "_Stop" +msgstr "_Yimiriza" + +#. Font variant +#: ../gtk/gtkstock.c:430 +msgctxt "Stock label" +msgid "_Strikethrough" +msgstr "Eziyisidwamu olu_saze" + +#: ../gtk/gtkstock.c:431 +msgctxt "Stock label" +msgid "_Undelete" +msgstr "Komya_wo" + +#. Font variant +#: ../gtk/gtkstock.c:433 +msgctxt "Stock label" +msgid "_Underline" +msgstr "Ezi_tudde ku lusaze" + +#: ../gtk/gtkstock.c:434 +msgctxt "Stock label" +msgid "_Undo" +msgstr "_Julula" + +#: ../gtk/gtkstock.c:435 +msgctxt "Stock label" +msgid "_Yes" +msgstr "_Ye" + +#. Zoom +#: ../gtk/gtkstock.c:437 +msgctxt "Stock label" +msgid "_Normal Size" +msgstr "Bunene obwa _ddala" + +#. Zoom +#: ../gtk/gtkstock.c:439 +msgctxt "Stock label" +msgid "Best _Fit" +msgstr "Bunene obusinga oku_jjawo" + +#: ../gtk/gtkstock.c:440 +msgctxt "Stock label" +msgid "Zoom _In" +msgstr "_Zimbukulusa" + +#: ../gtk/gtkstock.c:441 +msgctxt "Stock label" +msgid "Zoom _Out" +msgstr "_Kendeeza" + +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:304 ../gtk/gtkswitch.c:353 ../gtk/gtkswitch.c:544 +msgctxt "switch" +msgid "ON" +msgstr "" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:312 ../gtk/gtkswitch.c:354 ../gtk/gtkswitch.c:560 +msgctxt "switch" +msgid "OFF" +msgstr "" + +#: ../gtk/gtkswitch.c:959 +#| msgid "inch" +msgctxt "light switch widget" +msgid "Switch" +msgstr "yinci" + +#: ../gtk/gtkswitch.c:960 +msgid "Switches between on and off states" +msgstr "" + +#: ../gtk/gtktextbufferrichtext.c:650 +#, c-format +msgid "Unknown error when trying to deserialize %s" +msgstr "" + +#: ../gtk/gtktextbufferrichtext.c:709 +#, c-format +msgid "No deserialize function found for format %s" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 +#, c-format +msgid "Both \"id\" and \"name\" were found on the <%s> element" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 +#, c-format +msgid "The attribute \"%s\" was found twice on the <%s> element" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:852 +#, c-format +msgid "<%s> element has invalid ID \"%s\"" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:862 +#, c-format +msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:949 +#, c-format +msgid "Attribute \"%s\" repeated twice on the same <%s> element" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 +#, c-format +msgid "Attribute \"%s\" is invalid on <%s> element in this context" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1031 +#, c-format +msgid "Tag \"%s\" has not been defined." +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1043 +msgid "Anonymous tag found and tags can not be created." +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1054 +#, c-format +msgid "Tag \"%s\" does not exist in buffer and tags can not be created." +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 +#, c-format +msgid "Element <%s> is not allowed below <%s>" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1184 +#, c-format +msgid "\"%s\" is not a valid attribute type" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1192 +#, c-format +msgid "\"%s\" is not a valid attribute name" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1202 +#, c-format +msgid "" +"\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1211 +#, c-format +msgid "\"%s\" is not a valid value for attribute \"%s\"" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1296 +#, c-format +msgid "Tag \"%s\" already defined" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1309 +#, c-format +msgid "Tag \"%s\" has invalid priority \"%s\"" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1362 +#, c-format +msgid "Outermost element in text must be not <%s>" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 +#, c-format +msgid "A <%s> element has already been specified" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1393 +msgid "A element can't occur before a element" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1793 +msgid "Serialized data is malformed" +msgstr "" + +#: ../gtk/gtktextbufferserialize.c:1871 +msgid "" +"Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" +msgstr "" + +#: ../gtk/gtktextutil.c:60 +msgid "LRM _Left-to-right mark" +msgstr "LRM Aka_lagira ennukuta emu okuva ku kkono okudda ku ddyo" + +#: ../gtk/gtktextutil.c:61 +msgid "RLM _Right-to-left mark" +msgstr "RLM Akalagi_ra ennukuta emu okuva ku ddyo okudda ku kkono" + +#: ../gtk/gtktextutil.c:62 +msgid "LRE Left-to-right _embedding" +msgstr "LR_E Akalagira omuko okuva ku kkono okudda ku ddyo" + +#: ../gtk/gtktextutil.c:63 +msgid "RLE Right-to-left e_mbedding" +msgstr "RLE Akalagira o_muko okuva ku ddyo okudda ku kkono" + +#: ../gtk/gtktextutil.c:64 +msgid "LRO Left-to-right _override" +msgstr "" +"LRO Akalagira ekigambo ekimu _okuva ku kkono okusinzira ku kika ky'ennukuta " +"zaamu" + +#: ../gtk/gtktextutil.c:65 +msgid "RLO Right-to-left o_verride" +msgstr "" +"RLO Akalagira ekigambo ekimu oku_va ku ddyo okusinzira ku kika ky'ennukuta zaamu" + +#: ../gtk/gtktextutil.c:66 +msgid "PDF _Pop directional formatting" +msgstr "_PDF Akalagira obwolekefu bw'empandika obwa bulijjo okuddawo" + +#: ../gtk/gtktextutil.c:67 +msgid "ZWS _Zero width space" +msgstr "_ZWS Akabonero akatalabika akalaga ekigambo we kiyinz'okukutulibwamu" + +#: ../gtk/gtktextutil.c:68 +msgid "ZWJ Zero width _joiner" +msgstr "ZW_J Akabonero akatalabika akaleetera nnukuta bbiri okwegatta" + +#: ../gtk/gtktextutil.c:69 +msgid "ZWNJ Zero width _non-joiner" +msgstr "ZW_NJ Akabonero akatalabika akagaana ennukuta okwegatta" + +#: ../gtk/gtkuimanager.c:1506 +#, c-format +msgid "Unexpected start tag '%s' on line %d char %d" +msgstr "" +"Waliwo okulamba entadikwa '%s' gye kutasuubiridwa ku lunyiriri %d, akabonero %d" + +#: ../gtk/gtkuimanager.c:1596 +#, c-format +msgid "Unexpected character data on line %d char %d" +msgstr "Waliwo data ey'obubonero gy'etasuubiridwa, lunyiriri %d, akabonero %d" + +#: ../gtk/gtkuimanager.c:2428 +msgid "Empty" +msgstr "Wereere" + +#: ../gtk/gtkvolumebutton.c:170 +msgid "Volume" +msgstr "Bwangufu" + +#: ../gtk/gtkvolumebutton.c:172 +msgid "Turns volume down or up" +msgstr "Kitumbula era ne kissa eddoboozi" + +#: ../gtk/gtkvolumebutton.c:175 +msgid "Adjusts the volume" +msgstr "Kikyusa obwangufu bw'eddoboozi" + +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 +msgid "Volume Down" +msgstr "Ssa ddoboozi" + +#: ../gtk/gtkvolumebutton.c:183 +msgid "Decreases the volume" +msgstr "Kissa ddoboozis" + +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 +msgid "Volume Up" +msgstr "Kangula ddoboozi" + +#: ../gtk/gtkvolumebutton.c:189 +msgid "Increases the volume" +msgstr "Kitumbula ddoboozi" + +#: ../gtk/gtkvolumebutton.c:247 +msgid "Muted" +msgstr "Lisirisidwa" + +#: ../gtk/gtkvolumebutton.c:251 +msgid "Full Volume" +msgstr "Eddoboozi limalidwayo" + +#. Translators: this is the percentage of the current volume, +#. * as used in the tooltip, eg. "49 %". +#. * Translate the "%d" to "%Id" if you want to use localised digits, +#. * or otherwise translate the "%d" to "%d". +#. +#: ../gtk/gtkvolumebutton.c:264 +#, c-format +msgctxt "volume percentage" +msgid "%d %%" +msgstr "%d %%" + +#: ../gtk/paper_names_offsets.c:4 +msgctxt "paper size" +msgid "asme_f" +msgstr "asme_f" + +#: ../gtk/paper_names_offsets.c:5 +msgctxt "paper size" +msgid "A0x2" +msgstr "A0x2" + +#: ../gtk/paper_names_offsets.c:6 +msgctxt "paper size" +msgid "A0" +msgstr "A0" + +#: ../gtk/paper_names_offsets.c:7 +msgctxt "paper size" +msgid "A0x3" +msgstr "A0x3" + +#: ../gtk/paper_names_offsets.c:8 +msgctxt "paper size" +msgid "A1" +msgstr "A1" + +#: ../gtk/paper_names_offsets.c:9 +msgctxt "paper size" +msgid "A10" +msgstr "A10" + +#: ../gtk/paper_names_offsets.c:10 +msgctxt "paper size" +msgid "A1x3" +msgstr "A1x3" + +#: ../gtk/paper_names_offsets.c:11 +msgctxt "paper size" +msgid "A1x4" +msgstr "A1x4" + +#: ../gtk/paper_names_offsets.c:12 +msgctxt "paper size" +msgid "A2" +msgstr "A2" + +#: ../gtk/paper_names_offsets.c:13 +msgctxt "paper size" +msgid "A2x3" +msgstr "A2x3" + +#: ../gtk/paper_names_offsets.c:14 +msgctxt "paper size" +msgid "A2x4" +msgstr "A2x4" + +#: ../gtk/paper_names_offsets.c:15 +msgctxt "paper size" +msgid "A2x5" +msgstr "A2x5" + +#: ../gtk/paper_names_offsets.c:16 +msgctxt "paper size" +msgid "A3" +msgstr "A3" + +#: ../gtk/paper_names_offsets.c:17 +msgctxt "paper size" +msgid "A3 Extra" +msgstr "A3 'Ekisitura'" + +#: ../gtk/paper_names_offsets.c:18 +msgctxt "paper size" +msgid "A3x3" +msgstr "A3x3" + +#: ../gtk/paper_names_offsets.c:19 +msgctxt "paper size" +msgid "A3x4" +msgstr "A3x4" + +#: ../gtk/paper_names_offsets.c:20 +msgctxt "paper size" +msgid "A3x5" +msgstr "A3x5" + +#: ../gtk/paper_names_offsets.c:21 +msgctxt "paper size" +msgid "A3x6" +msgstr "A3x6" + +#: ../gtk/paper_names_offsets.c:22 +msgctxt "paper size" +msgid "A3x7" +msgstr "A3x7" + +#: ../gtk/paper_names_offsets.c:23 +msgctxt "paper size" +msgid "A4" +msgstr "A4" + +#: ../gtk/paper_names_offsets.c:24 +msgctxt "paper size" +msgid "A4 Extra" +msgstr "A4 'Ekisitura'" + +#: ../gtk/paper_names_offsets.c:25 +msgctxt "paper size" +msgid "A4 Tab" +msgstr "A4 'Tabu'" + +#: ../gtk/paper_names_offsets.c:26 +msgctxt "paper size" +msgid "A4x3" +msgstr "A4x3" + +#: ../gtk/paper_names_offsets.c:27 +msgctxt "paper size" +msgid "A4x4" +msgstr "A4x4" + +#: ../gtk/paper_names_offsets.c:28 +msgctxt "paper size" +msgid "A4x5" +msgstr "A4x5" + +#: ../gtk/paper_names_offsets.c:29 +msgctxt "paper size" +msgid "A4x6" +msgstr "A4x6" + +#: ../gtk/paper_names_offsets.c:30 +msgctxt "paper size" +msgid "A4x7" +msgstr "A4x7" + +#: ../gtk/paper_names_offsets.c:31 +msgctxt "paper size" +msgid "A4x8" +msgstr "A4x8" + +#: ../gtk/paper_names_offsets.c:32 +msgctxt "paper size" +msgid "A4x9" +msgstr "A4x9" + +#: ../gtk/paper_names_offsets.c:33 +msgctxt "paper size" +msgid "A5" +msgstr "A5" + +#: ../gtk/paper_names_offsets.c:34 +msgctxt "paper size" +msgid "A5 Extra" +msgstr "A5 Ekisitura" + +#: ../gtk/paper_names_offsets.c:35 +msgctxt "paper size" +msgid "A6" +msgstr "A6" + +#: ../gtk/paper_names_offsets.c:36 +msgctxt "paper size" +msgid "A7" +msgstr "A7" + +#: ../gtk/paper_names_offsets.c:37 +msgctxt "paper size" +msgid "A8" +msgstr "A8" + +#: ../gtk/paper_names_offsets.c:38 +msgctxt "paper size" +msgid "A9" +msgstr "A9" + +#: ../gtk/paper_names_offsets.c:39 +msgctxt "paper size" +msgid "B0" +msgstr "B0" + +#: ../gtk/paper_names_offsets.c:40 +msgctxt "paper size" +msgid "B1" +msgstr "B1" + +#: ../gtk/paper_names_offsets.c:41 +msgctxt "paper size" +msgid "B10" +msgstr "B10" + +#: ../gtk/paper_names_offsets.c:42 +msgctxt "paper size" +msgid "B2" +msgstr "B2" + +#: ../gtk/paper_names_offsets.c:43 +msgctxt "paper size" +msgid "B3" +msgstr "B3" + +#: ../gtk/paper_names_offsets.c:44 +msgctxt "paper size" +msgid "B4" +msgstr "B4" + +#: ../gtk/paper_names_offsets.c:45 +msgctxt "paper size" +msgid "B5" +msgstr "B5" + +#: ../gtk/paper_names_offsets.c:46 +msgctxt "paper size" +msgid "B5 Extra" +msgstr "B5 Ekisitura" + +#: ../gtk/paper_names_offsets.c:47 +msgctxt "paper size" +msgid "B6" +msgstr "B6" + +#: ../gtk/paper_names_offsets.c:48 +msgctxt "paper size" +msgid "B6/C4" +msgstr "B6 oba C4" + +#: ../gtk/paper_names_offsets.c:49 +msgctxt "paper size" +msgid "B7" +msgstr "B7" + +#: ../gtk/paper_names_offsets.c:50 +msgctxt "paper size" +msgid "B8" +msgstr "B8" + +#: ../gtk/paper_names_offsets.c:51 +msgctxt "paper size" +msgid "B9" +msgstr "B9" + +#: ../gtk/paper_names_offsets.c:52 +msgctxt "paper size" +msgid "C0" +msgstr "C0" + +#: ../gtk/paper_names_offsets.c:53 +msgctxt "paper size" +msgid "C1" +msgstr "C1" + +#: ../gtk/paper_names_offsets.c:54 +msgctxt "paper size" +msgid "C10" +msgstr "C10" + +#: ../gtk/paper_names_offsets.c:55 +msgctxt "paper size" +msgid "C2" +msgstr "C2" + +#: ../gtk/paper_names_offsets.c:56 +msgctxt "paper size" +msgid "C3" +msgstr "C3" + +#: ../gtk/paper_names_offsets.c:57 +msgctxt "paper size" +msgid "C4" +msgstr "C4" + +#: ../gtk/paper_names_offsets.c:58 +msgctxt "paper size" +msgid "C5" +msgstr "C5" + +#: ../gtk/paper_names_offsets.c:59 +msgctxt "paper size" +msgid "C6" +msgstr "C6" + +#: ../gtk/paper_names_offsets.c:60 +msgctxt "paper size" +msgid "C6/C5" +msgstr "C6 oba C5" + +#: ../gtk/paper_names_offsets.c:61 +msgctxt "paper size" +msgid "C7" +msgstr "C7" + +#: ../gtk/paper_names_offsets.c:62 +msgctxt "paper size" +msgid "C7/C6" +msgstr "C7 oba C6" + +#: ../gtk/paper_names_offsets.c:63 +msgctxt "paper size" +msgid "C8" +msgstr "C8" + +#: ../gtk/paper_names_offsets.c:64 +msgctxt "paper size" +msgid "C9" +msgstr "C9" + +#: ../gtk/paper_names_offsets.c:65 +msgctxt "paper size" +msgid "DL Envelope" +msgstr "Bbaasa lya DL" + +#: ../gtk/paper_names_offsets.c:66 +msgctxt "paper size" +msgid "RA0" +msgstr "RA0" + +#: ../gtk/paper_names_offsets.c:67 +msgctxt "paper size" +msgid "RA1" +msgstr "RA1" + +#: ../gtk/paper_names_offsets.c:68 +msgctxt "paper size" +msgid "RA2" +msgstr "RA2" + +#: ../gtk/paper_names_offsets.c:69 +msgctxt "paper size" +msgid "SRA0" +msgstr "SRA0" + +#: ../gtk/paper_names_offsets.c:70 +msgctxt "paper size" +msgid "SRA1" +msgstr "SRA1" + +#: ../gtk/paper_names_offsets.c:71 +msgctxt "paper size" +msgid "SRA2" +msgstr "SRA2" + +#: ../gtk/paper_names_offsets.c:72 +msgctxt "paper size" +msgid "JB0" +msgstr "JB0" + +#: ../gtk/paper_names_offsets.c:73 +msgctxt "paper size" +msgid "JB1" +msgstr "JB1" + +#: ../gtk/paper_names_offsets.c:74 +msgctxt "paper size" +msgid "JB10" +msgstr "JB10" + +#: ../gtk/paper_names_offsets.c:75 +msgctxt "paper size" +msgid "JB2" +msgstr "JB2" + +#: ../gtk/paper_names_offsets.c:76 +msgctxt "paper size" +msgid "JB3" +msgstr "JB3" + +#: ../gtk/paper_names_offsets.c:77 +msgctxt "paper size" +msgid "JB4" +msgstr "JB4" + +#: ../gtk/paper_names_offsets.c:78 +msgctxt "paper size" +msgid "JB5" +msgstr "JB5" + +#: ../gtk/paper_names_offsets.c:79 +msgctxt "paper size" +msgid "JB6" +msgstr "JB6" + +#: ../gtk/paper_names_offsets.c:80 +msgctxt "paper size" +msgid "JB7" +msgstr "JB7" + +#: ../gtk/paper_names_offsets.c:81 +msgctxt "paper size" +msgid "JB8" +msgstr "JB8" + +#: ../gtk/paper_names_offsets.c:82 +msgctxt "paper size" +msgid "JB9" +msgstr "JB9" + +#: ../gtk/paper_names_offsets.c:83 +msgctxt "paper size" +msgid "jis exec" +msgstr "" + +#: ../gtk/paper_names_offsets.c:84 +msgctxt "paper size" +msgid "Choukei 2 Envelope" +msgstr "Bbaasa lya Choukei 2" + +#: ../gtk/paper_names_offsets.c:85 +msgctxt "paper size" +msgid "Choukei 3 Envelope" +msgstr "Bbaasa lya Choukei 3" + +#: ../gtk/paper_names_offsets.c:86 +msgctxt "paper size" +msgid "Choukei 4 Envelope" +msgstr "Bbaasa lya Choukei 4" + +#: ../gtk/paper_names_offsets.c:87 +msgctxt "paper size" +msgid "hagaki (postcard)" +msgstr "hagaki (kaadi)" + +#: ../gtk/paper_names_offsets.c:88 +msgctxt "paper size" +msgid "kahu Envelope" +msgstr "Bbaasa lya kahu" + +#: ../gtk/paper_names_offsets.c:89 +msgctxt "paper size" +msgid "kaku2 Envelope" +msgstr "Bbaasa lya kaku2" + +#: ../gtk/paper_names_offsets.c:90 +msgctxt "paper size" +msgid "oufuku (reply postcard)" +msgstr "oufuku (kaadi ey'okuddamu)" + +#: ../gtk/paper_names_offsets.c:91 +msgctxt "paper size" +msgid "you4 Envelope" +msgstr "Bbaasa lya you4" + +#: ../gtk/paper_names_offsets.c:92 +msgctxt "paper size" +msgid "10x11" +msgstr "yinci 10x11" + +#: ../gtk/paper_names_offsets.c:93 +msgctxt "paper size" +msgid "10x13" +msgstr "yinci 10x13" + +#: ../gtk/paper_names_offsets.c:94 +msgctxt "paper size" +msgid "10x14" +msgstr "yinci 10x14" + +#: ../gtk/paper_names_offsets.c:95 ../gtk/paper_names_offsets.c:96 +msgctxt "paper size" +msgid "10x15" +msgstr "yinci 10x15" + +#: ../gtk/paper_names_offsets.c:97 +msgctxt "paper size" +msgid "11x12" +msgstr "yinci 11x12" + +#: ../gtk/paper_names_offsets.c:98 +msgctxt "paper size" +msgid "11x15" +msgstr "yinci 11x15" + +#: ../gtk/paper_names_offsets.c:99 +msgctxt "paper size" +msgid "12x19" +msgstr "yinci 12x19" + +#: ../gtk/paper_names_offsets.c:100 +msgctxt "paper size" +msgid "5x7" +msgstr "yinci 5x7" + +#: ../gtk/paper_names_offsets.c:101 +msgctxt "paper size" +msgid "6x9 Envelope" +msgstr "Bbaasa lya yinci 6x9" + +#: ../gtk/paper_names_offsets.c:102 +msgctxt "paper size" +msgid "7x9 Envelope" +msgstr "Bbaasa lya yinci 7x9" + +#: ../gtk/paper_names_offsets.c:103 +msgctxt "paper size" +msgid "9x11 Envelope" +msgstr "Bbaasa lya yinci 9x11" + +#: ../gtk/paper_names_offsets.c:104 +msgctxt "paper size" +msgid "a2 Envelope" +msgstr "Bbaasa lya A2" + +#: ../gtk/paper_names_offsets.c:105 +msgctxt "paper size" +msgid "Arch A" +msgstr "Arch A (lwa pulaani)" + +#: ../gtk/paper_names_offsets.c:106 +msgctxt "paper size" +msgid "Arch B" +msgstr "Arch B (lwa pulaani)" + +#: ../gtk/paper_names_offsets.c:107 +msgctxt "paper size" +msgid "Arch C" +msgstr "Arch C (lwa pulaani)" + +#: ../gtk/paper_names_offsets.c:108 +msgctxt "paper size" +msgid "Arch D" +msgstr "Arch D (lwa pulaani)" + +#: ../gtk/paper_names_offsets.c:109 +msgctxt "paper size" +msgid "Arch E" +msgstr "Arch E (lwa pulaani)" + +#: ../gtk/paper_names_offsets.c:110 +msgctxt "paper size" +msgid "b-plus" +msgstr "b-plus" + +#: ../gtk/paper_names_offsets.c:111 +msgctxt "paper size" +msgid "c" +msgstr "c" + +#: ../gtk/paper_names_offsets.c:112 +msgctxt "paper size" +msgid "c5 Envelope" +msgstr "Bbaasa lya c5" + +#: ../gtk/paper_names_offsets.c:113 +msgctxt "paper size" +msgid "d" +msgstr "d" + +#: ../gtk/paper_names_offsets.c:114 +msgctxt "paper size" +msgid "e" +msgstr "e" + +#: ../gtk/paper_names_offsets.c:115 +msgctxt "paper size" +msgid "edp" +msgstr "edp" + +#: ../gtk/paper_names_offsets.c:116 +msgctxt "paper size" +msgid "European edp" +msgstr "edp ey'eBulaaya" + +#: ../gtk/paper_names_offsets.c:117 +msgctxt "paper size" +msgid "Executive" +msgstr "Kizecutivu" + +#: ../gtk/paper_names_offsets.c:118 +msgctxt "paper size" +msgid "f" +msgstr "f" + +#: ../gtk/paper_names_offsets.c:119 +msgctxt "paper size" +msgid "FanFold European" +msgstr "FanFold ye'eBulaaya" + +#: ../gtk/paper_names_offsets.c:120 +msgctxt "paper size" +msgid "FanFold US" +msgstr "FanFold ey'Amerika" + +#: ../gtk/paper_names_offsets.c:121 +msgctxt "paper size" +msgid "FanFold German Legal" +msgstr "FanFold eya kinnamateeka ey'eBudaaki" + +#: ../gtk/paper_names_offsets.c:122 +msgctxt "paper size" +msgid "Government Legal" +msgstr "Government Legal (Amerika)" + +#: ../gtk/paper_names_offsets.c:123 +msgctxt "paper size" +msgid "Government Letter" +msgstr "Government Letter (Amerika)" + +#: ../gtk/paper_names_offsets.c:124 +msgctxt "paper size" +msgid "Index 3x5" +msgstr "Index 3x5 (Amerika)" + +#: ../gtk/paper_names_offsets.c:125 +msgctxt "paper size" +msgid "Index 4x6 (postcard)" +msgstr "" + +#: ../gtk/paper_names_offsets.c:126 +msgctxt "paper size" +msgid "Index 4x6 ext" +msgstr "" + +#: ../gtk/paper_names_offsets.c:127 +msgctxt "paper size" +msgid "Index 5x8" +msgstr "" + +#: ../gtk/paper_names_offsets.c:128 +msgctxt "paper size" +msgid "Invoice" +msgstr "" + +#: ../gtk/paper_names_offsets.c:129 +msgctxt "paper size" +msgid "Tabloid" +msgstr "" + +#: ../gtk/paper_names_offsets.c:130 +msgctxt "paper size" +msgid "US Legal" +msgstr "" + +#: ../gtk/paper_names_offsets.c:131 +msgctxt "paper size" +msgid "US Legal Extra" +msgstr "" + +#: ../gtk/paper_names_offsets.c:132 +msgctxt "paper size" +msgid "US Letter" +msgstr "" + +#: ../gtk/paper_names_offsets.c:133 +msgctxt "paper size" +msgid "US Letter Extra" +msgstr "" + +#: ../gtk/paper_names_offsets.c:134 +msgctxt "paper size" +msgid "US Letter Plus" +msgstr "" + +#: ../gtk/paper_names_offsets.c:135 +msgctxt "paper size" +msgid "Monarch Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:136 +msgctxt "paper size" +msgid "#10 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:137 +msgctxt "paper size" +msgid "#11 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:138 +msgctxt "paper size" +msgid "#12 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:139 +msgctxt "paper size" +msgid "#14 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:140 +msgctxt "paper size" +msgid "#9 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:141 +msgctxt "paper size" +msgid "Personal Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:142 +msgctxt "paper size" +msgid "Quarto" +msgstr "" + +#: ../gtk/paper_names_offsets.c:143 +msgctxt "paper size" +msgid "Super A" +msgstr "" + +#: ../gtk/paper_names_offsets.c:144 +msgctxt "paper size" +msgid "Super B" +msgstr "" + +#: ../gtk/paper_names_offsets.c:145 +msgctxt "paper size" +msgid "Wide Format" +msgstr "" + +#: ../gtk/paper_names_offsets.c:146 +msgctxt "paper size" +msgid "Dai-pa-kai" +msgstr "" + +#: ../gtk/paper_names_offsets.c:147 +msgctxt "paper size" +msgid "Folio" +msgstr "" + +#: ../gtk/paper_names_offsets.c:148 +msgctxt "paper size" +msgid "Folio sp" +msgstr "" + +#: ../gtk/paper_names_offsets.c:149 +msgctxt "paper size" +msgid "Invite Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:150 +msgctxt "paper size" +msgid "Italian Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:151 +msgctxt "paper size" +msgid "juuro-ku-kai" +msgstr "" + +#: ../gtk/paper_names_offsets.c:152 +msgctxt "paper size" +msgid "pa-kai" +msgstr "" + +#: ../gtk/paper_names_offsets.c:153 +msgctxt "paper size" +msgid "Postfix Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:154 +msgctxt "paper size" +msgid "Small Photo" +msgstr "" + +#: ../gtk/paper_names_offsets.c:155 +msgctxt "paper size" +msgid "prc1 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:156 +msgctxt "paper size" +msgid "prc10 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:157 +msgctxt "paper size" +msgid "prc 16k" +msgstr "" + +#: ../gtk/paper_names_offsets.c:158 +msgctxt "paper size" +msgid "prc2 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:159 +msgctxt "paper size" +msgid "prc3 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:160 +msgctxt "paper size" +msgid "prc 32k" +msgstr "" + +#: ../gtk/paper_names_offsets.c:161 +msgctxt "paper size" +msgid "prc4 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:162 +msgctxt "paper size" +msgid "prc5 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:163 +msgctxt "paper size" +msgid "prc6 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:164 +msgctxt "paper size" +msgid "prc7 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:165 +msgctxt "paper size" +msgid "prc8 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:166 +msgctxt "paper size" +msgid "prc9 Envelope" +msgstr "" + +#: ../gtk/paper_names_offsets.c:167 +msgctxt "paper size" +msgid "ROC 16k" +msgstr "" + +#: ../gtk/paper_names_offsets.c:168 +msgctxt "paper size" +msgid "ROC 8k" +msgstr "" + +#: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 +#, c-format +msgid "different idatas found for symlinked '%s' and '%s'\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1374 +#, c-format +msgid "Failed to write header\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1380 +#, c-format +msgid "Failed to write hash table\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1386 +#, c-format +msgid "Failed to write folder index\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1394 +#, c-format +msgid "Failed to rewrite header\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1488 +#, c-format +msgid "Failed to open file %s : %s\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 +#, c-format +msgid "Failed to write cache file: %s\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1537 +#, c-format +msgid "The generated cache was invalid.\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1551 +#, c-format +msgid "Could not rename %s to %s: %s, removing %s then.\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1565 +#, c-format +msgid "Could not rename %s to %s: %s\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1575 +#, c-format +msgid "Could not rename %s back to %s: %s.\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1602 +#, c-format +msgid "Cache file created successfully.\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1641 +msgid "Overwrite an existing cache, even if up to date" +msgstr "" + +#: ../gtk/updateiconcache.c:1642 +msgid "Don't check for the existence of index.theme" +msgstr "" + +#: ../gtk/updateiconcache.c:1643 +msgid "Don't include image data in the cache" +msgstr "" + +#: ../gtk/updateiconcache.c:1644 +msgid "Output a C header file" +msgstr "" + +#: ../gtk/updateiconcache.c:1645 +msgid "Turn off verbose output" +msgstr "" + +#: ../gtk/updateiconcache.c:1646 +msgid "Validate existing icon cache" +msgstr "" + +#: ../gtk/updateiconcache.c:1713 +#, c-format +msgid "File not found: %s\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1719 +#, c-format +msgid "Not a valid icon cache: %s\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1732 +#, c-format +msgid "No theme index file.\n" +msgstr "" + +#: ../gtk/updateiconcache.c:1736 +#, 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 "" + +#. ID +#: ../modules/input/imam-et.c:454 +msgid "Amharic (EZ+)" +msgstr "Ki-amuhara (EZ+)" + +#. ID +#: ../modules/input/imcedilla.c:92 +msgid "Cedilla" +msgstr "Kisedila" + +#. ID +#: ../modules/input/imcyrillic-translit.c:217 +msgid "Cyrillic (Transliterated)" +msgstr "Kisiriiri (Mu mpandika etali nnansi)" + +#. ID +#: ../modules/input/iminuktitut.c:127 +msgid "Inuktitut (Transliterated)" +msgstr "Inukitituti (Mu mpandika etali nnansi)" + +#. ID +#: ../modules/input/imipa.c:145 +msgid "IPA" +msgstr "IPA" + +#. ID +#: ../modules/input/immultipress.c:31 +msgid "Multipress" +msgstr "'Mulitpress'" + +#. ID +#: ../modules/input/imthai.c:35 +msgid "Thai-Lao" +msgstr "Tayi-Lawo" + +#. ID +#: ../modules/input/imti-er.c:453 +msgid "Tigrigna-Eritrean (EZ+)" +msgstr "Tigirigina-Eritureya (EZ+)" + +#. ID +#: ../modules/input/imti-et.c:453 +msgid "Tigrigna-Ethiopian (EZ+)" +msgstr "Tigirigina-kisiyopiya (EZ+)" + +#. ID +#: ../modules/input/imviqr.c:244 +msgid "Vietnamese (VIQR)" +msgstr "Kiviyetinaamu (VIQR)" + +#. ID +#: ../modules/input/imxim.c:28 +msgid "X Input Method" +msgstr "Empandika y'ennukuta eya X" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 +msgid "Username:" +msgstr "Linnya lya mukozesa:" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 +msgid "Password:" +msgstr "Kyama:" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 +#, c-format +msgid "Authentication is required to print document '%s' on printer %s" +msgstr "Okukubisiza ekiwandike '%s' ku pulinta %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#, c-format +msgid "Authentication is required to print a document on %s" +msgstr "Okukubisiza ekiwandike ku %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 +#, c-format +msgid "Authentication is required to get attributes of job '%s'" +msgstr "Okufuna atiributo ez'omulimu '%s' kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +msgid "Authentication is required to get attributes of a job" +msgstr "Okufuna atiributo ez'omulimu kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 +#, c-format +msgid "Authentication is required to get attributes of printer %s" +msgstr "Okufuna atiributo eza pulinta %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 +msgid "Authentication is required to get attributes of a printer" +msgstr "Okufuna atiriuto eza pulinta kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 +#, c-format +msgid "Authentication is required to get default printer of %s" +msgstr "Okufuna pulinta ey'oku %s eya bulijjo kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 +#, c-format +msgid "Authentication is required to get printers from %s" +msgstr "Okufuna pulinta ez'oku %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 +#, c-format +msgid "Authentication is required to get a file from %s" +msgstr "Okunona fayiro ku %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 +#, c-format +msgid "Authentication is required on %s" +msgstr "%s ekwetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 +msgid "Domain:" +msgstr "Twale:" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 +#, c-format +msgid "Authentication is required to print document '%s'" +msgstr "Okukubisa ekiwandike '%s' kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 +#, c-format +msgid "Authentication is required to print this document on printer %s" +msgstr "Okukubisiza ekiwandike kino ku pulinta %s kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 +msgid "Authentication is required to print this document" +msgstr "Okukubisa ekiwandike kino kyetaagisa eby'okukakasibwa" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 +#, c-format +msgid "Printer '%s' is low on toner." +msgstr "Pulinta '%s' eri kumpi okuggwamu bwiino." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#, c-format +msgid "Printer '%s' has no toner left." +msgstr "Pulinta '%s' eweddemu bwiino." + +#. Translators: "Developer" like on photo development context + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#, c-format +msgid "Printer '%s' is low on developer." +msgstr "Pulinta '%s' egenda okuggwamu eddagala erikaza." + +#. Translators: "Developer" like on photo development context +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#, c-format +msgid "Printer '%s' is out of developer." +msgstr "Pulinta '%s' eweddemu eddagala erikaza" + +#. Translators: "marker" is one color bin of the printer +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#, c-format +msgid "Printer '%s' is low on at least one marker supply." +msgstr "Pulinta '%s' eri kumpi okuggwamu ku bwiino wa mu." + +#. Translators: "marker" is one color bin of the printer +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#, c-format +msgid "Printer '%s' is out of at least one marker supply." +msgstr "Pulinta '%s' eriko bwiino aweddemu." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#, c-format +msgid "The cover is open on printer '%s'." +msgstr "Ekisaanikira kya pulinta '%s' kibikkuse." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#, c-format +msgid "The door is open on printer '%s'." +msgstr "Oluggi olw'oku pulinta '%s' luggule." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 +#, c-format +msgid "Printer '%s' is low on paper." +msgstr "Pulinta '%s' eri kumpi okuggwamu empapula." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 +#, c-format +msgid "Printer '%s' is out of paper." +msgstr "Pulinta '%s' eweddemu empapula." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 +#, c-format +msgid "Printer '%s' is currently offline." +msgstr "Pulinta '%s' kaakano ku mukutu teriko." + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 +#, c-format +msgid "There is a problem on printer '%s'." +msgstr "Pulinta '%s' eriko kiremya." + +#. Translators: this is a printer status. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 +msgid "Paused ; Rejecting Jobs" +msgstr "Eyimirizidwamu ; Tekkiriza mirimu" + +#. Translators: this is a printer status. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 +msgid "Rejecting Jobs" +msgstr "Tekkiriza mirimu" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +msgid "Two Sided" +msgstr "Ku ludda zombi" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +msgid "Paper Type" +msgstr "Kika kya mpapula" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 +msgid "Paper Source" +msgstr "Nnono y'empapula" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 +msgid "Output Tray" +msgstr "Ebiwedde gye bigenda" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 +msgid "Resolution" +msgstr "Obungi bw'obutonyeze" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 +msgid "GhostScript pre-filtering" +msgstr "Okulongoosa kw'omu GhostScript" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +msgid "One Sided" +msgstr "Ku ludda lumu lwokka" + +#. Translators: this is an option of "Two Sided" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 +msgid "Long Edge (Standard)" +msgstr "Busimba (Ekya bulijjo)" + +#. Translators: this is an option of "Two Sided" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 +msgid "Short Edge (Flip)" +msgstr "Bugazi" + +#. Translators: this is an option of "Paper Source" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +msgid "Auto Select" +msgstr "Ekyuma kyerondere" + +#. Translators: this is an option of "Paper Source" +#. Translators: this is an option of "Resolution" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 +msgid "Printer Default" +msgstr "Ekitegekedwa mu pulinta" + +#. Translators: this is an option of "GhostScript" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +msgid "Embed GhostScript fonts only" +msgstr "" + +#. Translators: this is an option of "GhostScript" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +msgid "Convert to PS level 1" +msgstr "" + +#. Translators: this is an option of "GhostScript" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 +msgid "Convert to PS level 2" +msgstr "" + +#. Translators: this is an option of "GhostScript" +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 +msgid "No pre-filtering" +msgstr "Tolongoosa" + +#. Translators: "Miscellaneous" is the label for a button, that opens +#. up an extra panel of settings in a print dialog. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 +msgid "Miscellaneous" +msgstr "Bitalibimu" + +#. Translators: These strings name the possible values of the +#. * job priority option in the print dialog +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 +msgid "Urgent" +msgstr "Kya mangu ddala" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 +msgid "High" +msgstr "Kikulu" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 +msgid "Medium" +msgstr "Kya bulijjo" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 +msgid "Low" +msgstr "Ssi kikulu" + +#. Cups specific, non-ppd related settings +#. Translators, this string is used to label the pages-per-sheet option +#. * in the print dialog +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 +msgid "Pages per Sheet" +msgstr "Mpapula z'ekiwandike ku buli lupapula" + +#. Translators, this string is used to label the job priority option +#. * in the print dialog +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 +msgid "Job Priority" +msgstr "Obwetaavu bw'omulimu" + +#. Translators, this string is used to label the billing info entry +#. * in the print dialog +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 +msgid "Billing Info" +msgstr "Eby'okubanja" + +#. Translators, these strings are names for various 'standard' cover +#. * pages that the printing system may support. +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "None" +msgstr "-" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Classified" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Confidential" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Secret" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Standard" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Top Secret" +msgstr "" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 +msgid "Unclassified" +msgstr "" + +#. Translators, this is the label used for the option in the print +#. * dialog that controls the front cover page. +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 +msgid "Before" +msgstr "" + +#. Translators, this is the label used for the option in the print +#. * dialog that controls the back cover page. +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 +msgid "After" +msgstr "" + +#. Translators: this is the name of the option that controls when +#. * a print job is printed. Possible values are 'now', a specified time, +#. * or 'on hold' +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 +msgid "Print at" +msgstr "" + +#. 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/cups/gtkprintbackendcups.c:3701 +msgid "Print at time" +msgstr "" + +#. Translators: this format is used to display a custom paper +#. * size. The two placeholders are replaced with the width and height +#. * in points. E.g: "Custom 230.4x142.9" +#. +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 +#, c-format +msgid "Custom %sx%s" +msgstr "" + +#. default filename used for print-to-file +#: ../modules/printbackends/file/gtkprintbackendfile.c:250 +#, c-format +msgid "output.%s" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 +msgid "Print to File" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 +msgid "PDF" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 +msgid "Postscript" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 +msgid "SVG" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 +#: ../modules/printbackends/test/gtkprintbackendtest.c:503 +msgid "Pages per _sheet:" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 +msgid "File" +msgstr "" + +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 +msgid "_Output format" +msgstr "" + +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 +msgid "Print to LPR" +msgstr "" + +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 +msgid "Pages Per Sheet" +msgstr "" + +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 +msgid "Command Line" +msgstr "" + +#. SUN_BRANDING +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 +msgid "printer offline" +msgstr "" + +#. SUN_BRANDING +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 +msgid "ready to print" +msgstr "" + +#. SUN_BRANDING +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 +msgid "processing job" +msgstr "" + +#. SUN_BRANDING +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 +msgid "paused" +msgstr "" + +#. SUN_BRANDING +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 +msgid "unknown" +msgstr "" + +#. default filename used for print-to-test +#: ../modules/printbackends/test/gtkprintbackendtest.c:234 +#, c-format +msgid "test-output.%s" +msgstr "" + +#: ../modules/printbackends/test/gtkprintbackendtest.c:467 +msgid "Print to Test Printer" +msgstr "" + +#: ../tests/testfilechooser.c:207 +#, c-format +msgid "Could not get information for file '%s': %s" +msgstr "" + +#: ../tests/testfilechooser.c:222 +#, c-format +msgid "Failed to open file '%s': %s" +msgstr "" + +#: ../tests/testfilechooser.c:267 +#, c-format +msgid "" +"Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "" + diff --git a/po/nb.po b/po/nb.po index 13efa46c7c..c7f6cf5892 100644 --- a/po/nb.po +++ b/po/nb.po @@ -6,9 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: gtk+ 2.92.x\n" -"Report-Msgid-Bugs-To:\n" -"POT-Creation-Date: 2010-11-20 11:47+0100\n" -"PO-Revision-Date: 2010-11-20 11:48+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-15 12:07+0100\n" +"PO-Revision-Date: 2011-01-15 12:07+0100\n" "Last-Translator: Torstein Adolf Winterseth \n" "Language-Team: Norwegian Nynorsk \n" "Language: nn\n" @@ -16,60 +16,50 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.6.1\n" +"X-Generator: Lokalize 1.1\n" -#: ../gdk/gdk.c:115 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Feil ved lesing av flagg --gdk-debug" -#: ../gdk/gdk.c:135 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Feil ved lesing av flagg --gdk-no-debug" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:163 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Programklasse som brukes av vindushåndtereren" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "KLASSE" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:166 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Programnavn som brukes av vindushåndtereren" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NAVN" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:169 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "X-skjerm som skal brukes" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:170 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "SKJERM" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:172 -msgid "X screen to use" -msgstr "X-skjerm som skal brukes" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:173 -msgid "SCREEN" -msgstr "SKJERM" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:176 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "Feilsøkingsflagg som skal settes for GDK" @@ -77,12 +67,12 @@ msgstr "Feilsøkingsflagg som skal settes for GDK" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:177 ../gdk/gdk.c:180 ../gtk/gtkmain.c:525 ../gtk/gtkmain.c:528 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "FLAGG" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:179 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "Feilsøkingsflagg som skal fjernes for GDK" @@ -272,110 +262,108 @@ msgid "Delete" msgstr "Slett" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "Ikke send flere GDI-forespørsler sammen" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Ikke bruk Wintab-APIet for støtte for tablet" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "Samme som --no-wintab" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Ikke bruk Wintab-API [forvalgt]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "Størrelse på paletten i 8-bits modus" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "FARGER" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Starter %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Åpner %s" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Åpner %d oppføring" msgstr[1] "Åpner %d oppføringer" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "Gjør kall til X-bibliotekene synkrone" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" -"Dette programmet kommer UTEN NOEN SOM HELST GARANTI; besøk %s for detaljer" +"Dette programmet kommer UTEN NOEN SOM HELST GARANTI; besøk " +"%s for detaljer" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "Lisens" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "Programmets lisens" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "Bid_ragsytere" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" msgstr "_Lisens" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "Klarte ikke å vise lenke" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "Hjemmeside" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "Om %s" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "Bidragsytere" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "Laget av" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "Skrevet av" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "Dokumentert av" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "Oversatt av" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "Grafikk av" @@ -384,7 +372,7 @@ msgstr "Grafikk av" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -394,7 +382,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -404,7 +392,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -414,7 +402,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -424,7 +412,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -434,37 +422,120 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" msgstr "Mellomrom" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" msgstr "Backslash" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +msgid "Other application..." +msgstr "Annet program..." + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "Klarte ikke å se etter programmer på nettet" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "Finn programmer på nettet" + +#: ../gtk/gtkappchooserdialog.c:208 +msgid "Could not run application" +msgstr "Klarte ikke å kjøre programmet" + +#: ../gtk/gtkappchooserdialog.c:221 +#, c-format +msgid "Could not find '%s'" +msgstr "Klarte ikke å finne «%s»" + +#: ../gtk/gtkappchooserdialog.c:224 +msgid "Could not find application" +msgstr "Klarte ikke å finne programmet" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Velg et program å åpne «%s» i" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Ingen tilgjengelige programmer for åpning av «%s»" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Velg et program for «%s»-filer" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Ingen tilgjengelige programmer for åpning av «%s»-filer" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" +"Klikk på «Vis andre programmer» for flere alternativer, eller «Finn " +"programmer på nettet» for å installere et nytt program" + +#: ../gtk/gtkappchooserdialog.c:428 +msgid "Forget association" +msgstr "Glem kobling" + +#: ../gtk/gtkappchooserdialog.c:493 +msgid "Show other applications" +msgstr "Vis andre programmer" + +#: ../gtk/gtkappchooserdialog.c:511 +msgid "_Open" +msgstr "_Åpne" + +#: ../gtk/gtkappchooserwidget.c:593 +msgid "Default Application" +msgstr "Forvalgt program" + +#: ../gtk/gtkappchooserwidget.c:730 +msgid "Recommended Applications" +msgstr "Anbefalte programmer" + +#: ../gtk/gtkappchooserwidget.c:744 +msgid "Related Applications" +msgstr "Relaterte programmer" + +#: ../gtk/gtkappchooserwidget.c:758 +msgid "Other Applications" +msgstr "Andre programmer" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Ugyldig type funksjon på linje %d: «%s»" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "Duplisert objekt-ID «%s» på linje %d (tidligere på linje %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "Ugyldig rotelement: «%s»" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" msgstr "Uhåndtert tag «%s»" @@ -479,7 +550,7 @@ msgstr "Uhåndtert tag «%s»" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" msgstr "calendar:MY" @@ -487,7 +558,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:916 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -496,7 +567,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -511,7 +582,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -527,7 +598,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -543,7 +614,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -551,7 +622,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "Slått av" @@ -560,7 +631,7 @@ msgstr "Slått av" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "Ugyldig" @@ -569,7 +640,7 @@ msgstr "Ugyldig" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:730 msgid "New accelerator..." msgstr "Ny hurtigtast …" @@ -579,15 +650,15 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "Velg en farge" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" msgstr "Mottok ugyldige fargedata\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." @@ -595,7 +666,7 @@ msgstr "" "Velg fargen du ønsker fra den ytre ringen. Velg lysstyrke for denne fargen " "ved å bruke den indre trekanten." -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." @@ -603,67 +674,67 @@ msgstr "" "Trykk på dråpetelleren og trykk så på en farge hvor som helst på skjermen " "for å velge denne fargen." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Glød:" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Posisjon på fargehjulet." -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Metning:" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensitet for fargen." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Verdi:" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Lysstyrke for fargen." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Rød:" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Mende med rødt lys i fargen." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Grønn:" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Mengde med grønt lys i fargen." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Blå:" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Mengde med blått lys i fargen." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "_Ugjennomsiktighet:" -#: ../gtk/gtkcolorsel.c:471 ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Gjennomsiktighet for fargen." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "Farge_navn:" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." @@ -671,15 +742,15 @@ msgstr "" "Du kan skrive inn en heksadesimal fargeverdi i HTML-stil, eller bruke et " "fargenavn som f.eks. «oransje» i denne oppføringen." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Palett:" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Fargehjul" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " @@ -689,7 +760,7 @@ msgstr "" "denne fargen til en palettoppføring, eller velge denne fargen som aktiv ved " "å dra den til den andre fargeprøven ved siden av." -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." @@ -697,21 +768,21 @@ msgstr "" "Fargen du har valgt. Du kan dra denne fargen til en palettoppføring for å " "lagre den for senere bruk." -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." msgstr "Tidligere valgt farge. For sammenligning med fargen du velger nå." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "Fargen du har valgt." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "_Lagre fargen her" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" @@ -735,7 +806,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "Håndter egendefinerte størrelser" @@ -788,66 +859,66 @@ msgstr "Høy_re:" msgid "Paper Margins" msgstr "Papirmarger" -#: ../gtk/gtkentry.c:8630 ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8755 ../gtk/gtktextview.c:8228 msgid "Input _Methods" msgstr "Inndata_metoder" -#: ../gtk/gtkentry.c:8644 ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8769 ../gtk/gtktextview.c:8242 msgid "_Insert Unicode Control Character" msgstr "Sett _inn Unicode kontrolltegn" -#: ../gtk/gtkentry.c:10044 +#: ../gtk/gtkentry.c:10173 msgid "Caps Lock and Num Lock are on" msgstr "Caps Lock og Num Lock er på" -#: ../gtk/gtkentry.c:10046 +#: ../gtk/gtkentry.c:10175 msgid "Num Lock is on" msgstr "Num Lock er på" -#: ../gtk/gtkentry.c:10048 +#: ../gtk/gtkentry.c:10177 msgid "Caps Lock is on" msgstr "Caps Lock er på" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "Velg en fil" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" msgstr "Skrivebord" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(Ingen)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "Annet …" -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "Skriv inn navn på ny mappe" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "Klarte ikke å hente informasjon om filen" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "Klarte ikke å legge til bokmerke" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "Klarte ikke å fjerne bokmerke" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "Klarte ikke å lage mappen" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." @@ -855,7 +926,7 @@ msgstr "" "Klarte ikke å lage mappen på grunn av at det allerede eksisterer en fil med " "samme navn. Bruk et annet navn for mappen eller gi et nytt navn til filen." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." @@ -863,11 +934,11 @@ msgstr "" "Du kan kun velge mapper. Oppføringen du valgte er ikke en mappe. Prøv å " "bruke en annen oppføring." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "Ugyldig filnavn" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" msgstr "Mappeinholdet kunne ikke vises" @@ -875,186 +946,186 @@ msgstr "Mappeinholdet kunne ikke vises" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%1$s på %2$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "Søk" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Sist brukt" -#: ../gtk/gtkfilechooserdefault.c:2437 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "Velg hvilke filtyper som skal vises" -#: ../gtk/gtkfilechooserdefault.c:2796 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Legg til mappe «%s» i bokmerker" -#: ../gtk/gtkfilechooserdefault.c:2840 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Legg til aktiv mappe i bokmerker" -#: ../gtk/gtkfilechooserdefault.c:2842 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Legg til valgte mapper i bokmerker" -#: ../gtk/gtkfilechooserdefault.c:2880 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "Fjern bokmerke «%s»" -#: ../gtk/gtkfilechooserdefault.c:2882 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "Bokmerke «%s» kan ikke fjernes" -#: ../gtk/gtkfilechooserdefault.c:2889 ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "Fjern valgt bokmerke" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "Fjern" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "Gi nytt navn …" #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "Steder" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "_Steder" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "_Legg til" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "Legg til valgt mappe i bokmerker" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" msgstr "Fje_rn" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "Klarte ikke å merke filen" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "L_egg til i bokmerker" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "Vis sk_julte filer" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" msgstr "Vis kolonne for _størrelse" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "Filer" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "Navn" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "Størrelse" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "Endret" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Navn:" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "_Se gjennom andre mapper" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "Skriv et filnavn" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "Opprett _mappe" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" -msgstr "_Lokasjon:" +msgstr "_Adresse:" -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "Lagre i _mappe:" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "Opprett i _mappe:" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "Klarte ikke å lese innholdet av %s" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "Klarte ikke å lese innholdet i mappen" -#: ../gtk/gtkfilechooserdefault.c:6387 ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "Ukjent" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H.%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" msgstr "I går kl. %H.%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "Kan ikke gå til mappen fordi den ikke er lokal" -#: ../gtk/gtkfilechooserdefault.c:7667 ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "Snarvei %s eksisterer allerede" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "Snarvei %s eksisterer ikke" -#: ../gtk/gtkfilechooserdefault.c:8039 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "En fil med navn «%s» eksisterer allerede. Vil du erstatte den?" -#: ../gtk/gtkfilechooserdefault.c:8042 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." @@ -1062,15 +1133,15 @@ msgstr "" "Fila eksisterer allerede i «%s». Hvis du erstatter denne vil du overskrive " "innholdet." -#: ../gtk/gtkfilechooserdefault.c:8047 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "E_rstatt" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Klarte ikke å starte søkeprosessen" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." @@ -1078,36 +1149,36 @@ msgstr "" "Programmet kunne ikke opprette en tilkobling til indekseringstjenesten. " "Sjekk at denne kjører." -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Klarte ikke å sende søkeforespørselen" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Søk:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Klarte ikke å montere %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "Ugyldig sti" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "Ingen treff" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "Eneste fullføring" @@ -1115,13 +1186,13 @@ msgstr "Eneste fullføring" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "Fullført men ikke unik" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "Fullfører …" @@ -1129,7 +1200,7 @@ msgstr "Fullfører …" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "Du kan kun velge lokale filer" @@ -1137,14 +1208,14 @@ msgstr "Du kan kun velge lokale filer" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" msgstr "Ikke fullstendig vertsnavn; avslutt med «/»" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "Stien eksisterer ikke" @@ -1172,40 +1243,40 @@ msgstr "Skrift" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "_Familie:" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "_Stil:" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "St_ørrelse:" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "_Forhåndsvisning:" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "Valg av skrift" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "Feil under lasting av ikon: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1218,12 +1289,12 @@ msgstr "" "Du kan finne en kopi av det på:\n" "\t%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "Ikon «%s» er ikke tilstede i tema" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "Feil under lasting av ikon" @@ -1248,45 +1319,45 @@ msgid "System (%s)" msgstr "System (%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Åpne lenke" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Kopier _lenkas adresse" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "Kopier URL" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "Ugyldig URI" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:518 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "Last tilleggsmoduler for GTK+" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "MODULER" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:521 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "La alle advarsler være fatale" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:524 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "Feilsøkingsflagg som skal settes for GTK+" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" msgstr "Feilsøkingsflagg som skal fjernes for GTK+" @@ -1295,20 +1366,20 @@ msgstr "Feilsøkingsflagg som skal fjernes for GTK+" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:790 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:LTR" -#: ../gtk/gtkmain.c:855 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "Kan ikke åpne skjerm: %s" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "Alternativer for GTK+" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "Vis alternativer for GTK+" @@ -1393,13 +1464,22 @@ msgstr "Z Shell" msgid "Cannot end process with PID %d: %s" msgstr "Kan ikke avslutte prosess med PID %d: %s" -#: ../gtk/gtknotebook.c:4756 ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "Side %u" -#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 +#. Translators: the format here is used to build the string that will be rendered +#. * in the number emblem. +#. +#: ../gtk/gtknumerableicon.c:481 +#, c-format +msgctxt "Number format" +msgid "%d" +msgstr "%d" + +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:847 +#: ../gtk/gtkpapersize.c:889 msgid "Not a valid page setup file" msgstr "Ikke en gyldig fil for sideoppsett" @@ -1426,7 +1506,7 @@ msgstr "" " Topp: %s %s\n" " Bunn: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "Håndter egendefinerte størrelser …" @@ -1434,7 +1514,7 @@ msgstr "Håndter egendefinerte størrelser …" msgid "_Format for:" msgstr "_Format for:" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "_Papirstørrelse:" @@ -1442,19 +1522,19 @@ msgstr "_Papirstørrelse:" msgid "_Orientation:" msgstr "_Orientering:" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "Sideoppsett" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "Opp sti" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "Ned sti" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "Filsystemrot" @@ -1478,84 +1558,84 @@ msgstr "_Lagre i mappe:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s jobb #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "Starttilstand" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "Forbereder utskrift" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "Genererer data" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" msgstr "Sender data" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" msgstr "Venter" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Blokkert pga hendelse" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "Skriver ut" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "Fullført" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "Fullført med feil" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "Forbereder %d" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" msgstr "Forbereder" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "Skriver ut %d" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "Feil under oppretting av forhåndsvisning for utskrift" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." msgstr "" "Den mest sannsynlige årsaken er at en midlertidig fil ikke kunne lages." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Feil under start av forhåndsvisning" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Program" @@ -1569,7 +1649,7 @@ msgstr "Tom for papir" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "Pause" @@ -1622,41 +1702,41 @@ msgstr "Klarte ikke å hente informasjon om skriveren" msgid "Getting printer information..." msgstr "Henter informasjon om skriver …" -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "Skriver" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" -msgstr "Lokasjon" +msgstr "Adresse" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "Status" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" msgstr "Område" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "Alle sider" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "D_enne siden" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "Utva_lg" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "Sid_er:" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1664,28 +1744,28 @@ msgstr "" "Oppgi en ett eller flere sideområder,\n" " f.eks 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "Sider" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "Kopier" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "_Kopier:" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "S_lå sammen" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "_Omvendt" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" msgstr "Generelt" @@ -1695,168 +1775,168 @@ msgstr "Generelt" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "Venstre til høyre, topp til bunn" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "Venstre til høyre, bunn til topp" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "Høyre til venstre, topp til bunn" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "Høyre til venstre, bunn til topp" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "Topp til bunn, venstre til høyre" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "Topp til bunn, høyre til venstre" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "Bunn til topp, venstre til høyre" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "Bunn til topp, høyre til venstre" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "Siderekkefølge" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "Venstre til høyre" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "Høyre til venstre" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "Topp til bunn" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "Bunn til topp" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "Utforming" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "T_osidig:" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "Ark per _side:" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "Si_derekkefølge:" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "K_un skriv ut:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "Alle ark" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "Like ark" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "Ulike ark" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "Sk_aler:" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "Papir" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "Papir_type:" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "Papi_rkilde:" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "U_tskuff:" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "Or_ientering:" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "Portrett" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "Landskap" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "Omvendt portrett" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "Omvendt landskap" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "Detaljer for jobb" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "Pri_oritet:" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "_Faktureringsinformasjon:" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "Skriv ut dokument" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "_Nå" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "_Tid:" @@ -1864,7 +1944,7 @@ msgstr "_Tid:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1872,77 +1952,72 @@ msgstr "" "Oppgi klokkeslett for utskrift.\n" " f.eks 15.30, 2.35 pm, 14.15.20, 11.46.30 am, 4 pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "Tid for utskrift" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "På _vent" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" msgstr "Sett jobben på vent inntil den er eksplisitt aktivert" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "Legg til omslag" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "_Før:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "_Etter:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "Jobb" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "Avansert" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "Bildekvalitet" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "Farge" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "Fullfører" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" msgstr "Noen innstillinger i dialogen er i konflikt" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "Skriv ut" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Kan ikke finne include-fil: «%s»" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Klarte ikke å finne bildefil i pixmap_path: «%s»" @@ -1957,36 +2032,36 @@ msgstr "Denne funksjonen er ikke implementert for komponenter av klasse «%s»" msgid "Select which type of documents are shown" msgstr "Velg hvilke dokumenttyper som skal vises" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "Ingen oppføring funnet for URI «%s»" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "Filter uten tittel" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "Klarte ikke å fjerne oppføring" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "Klarte ikke tømme listen" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" -msgstr "Kopier _lokasjon" +msgstr "Kopier _adresse" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "Fje_rn fra listen" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "_Tøm listen" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "Vis _private ressurser" @@ -2049,14 +2124,15 @@ msgstr "Kan ikke finne en oppføring med URI «%s»" #: ../gtk/gtkrecentmanager.c:2437 #, c-format msgid "No registered application with name '%s' for item with URI '%s' found" -msgstr "Ingen registrerte programmer med navn «%s» funnet for oppføring med URI «%s»" +msgstr "" +"Ingen registrerte programmer med navn «%s» funnet for oppføring med URI «%s»" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Spinner" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "Gir visuell indikasjon av framdrift" @@ -2564,6 +2640,32 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "Zoom _ut" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:313 ../gtk/gtkswitch.c:362 ../gtk/gtkswitch.c:553 +msgctxt "switch" +msgid "ON" +msgstr "PÅ" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:321 ../gtk/gtkswitch.c:363 ../gtk/gtkswitch.c:569 +msgctxt "switch" +msgid "OFF" +msgstr "AV" + +#: ../gtk/gtkswitch.c:968 +msgctxt "light switch widget" +msgid "Switch" +msgstr "Bryter" + +#: ../gtk/gtkswitch.c:969 +msgid "Switches between on and off states" +msgstr "Bytter mellom av/på tilstand" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" @@ -2574,107 +2676,107 @@ msgstr "Ukjent feil ved forsøk på å deserialisere %s" msgid "No deserialize function found for format %s" msgstr "Ingen de-serialiseringsfunksjon funnet for format %s" -#: ../gtk/gtktextbufferserialize.c:803 ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Både «id» og «name» ble finnet i element <%s>" -#: ../gtk/gtktextbufferserialize.c:813 ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Attributten «%s» ble funnet to ganger på element <%s>" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "Element <%s> har ugyldig ID «%s»" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "Element <%s> har ikke et «name»- eller «id»-element" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Attributt «%s» gjentatt to ganger på samme <%s>-element" -#: ../gtk/gtktextbufferserialize.c:970 ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Attributt «%s» er ugyldig på <%s>-element i denne konteksten" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Tagg «%s» er ikke definert." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "Anonym tagg funnet og tagger kan ikke opprettes." -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "Tagg «%s» eksisterer ikke i bufferen og tagger kan ikke opprettes." -#: ../gtk/gtktextbufferserialize.c:1156 ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Element <%s> er ikke tillatt under <%s>" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "«%s» er ikke en gyldig type attributt" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "«%s» er ikke et gyldig attributtnavn" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" msgstr "" "«%s» kunne ikke konverteres til en verdi av type «%s» for attributt «%s»" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "«%s» er ikke en gyldig verdi for attributt «%s»" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "Tagg «%s» er allerede definert" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Tagg «%s» har ugyldig prioritet «%s»" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Det ytterste elementet i en tekst må være ikke <%s>" -#: ../gtk/gtktextbufferserialize.c:1374 ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "Et element <%s> er allerede spesifisert" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr "Et -element kan ikke brukes før et -element" -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "Serialiserte data har feil utforming" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" msgstr "" @@ -2721,58 +2823,53 @@ msgstr "ZWJ Zero width _joiner" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ Zero width _non-joiner" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Klarte ikke å finne temamotor i module_path: «%s»." - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Uventet startmarkering «%s» på linje %d tegn %d" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Uventet tegndata på linje %d tegn %d" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Tom" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Volum" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Tar volumet ned eller opp" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Justerer volumet" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Volum ned" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Senker volumet" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Volum opp" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Hever volumet" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Dempet" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Fullt volum" @@ -2781,7 +2878,7 @@ msgstr "Fullt volum" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3632,81 +3729,81 @@ msgstr "Klarte ikke å skrive mappeindeks\n" msgid "Failed to rewrite header\n" msgstr "Klarte ikke skrive om hode\n" -#: ../gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Klarte ikke å åpne fil %s: %s\n" -#: ../gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Klarte ikke å skrive bufferfil: %s\n" -#: ../gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "Generert buffer var ugyldig.\n" -#: ../gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "Klarte ikke å endre navn på %s til %s: %s, fjerner %s.\n" -#: ../gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "Klarte ikke å endre navn på %s til %s: %s\n" -#: ../gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "Klarte ikke å endre navn på %s tilbake til %s: %s\n" -#: ../gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Oppretting av bufferfil fullført.\n" -#: ../gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Overskriv en eksisterende buffer, selv om den er oppdatert" -#: ../gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Ikke sjekk om index.theme eksisterer" -#: ../gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Ikke ta med bildedata i bufferen" -#: ../gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Skriv ut en C-headerfil" -#: ../gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Slå av ekstra utdata" -#: ../gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Valider eksisterende ikonbuffer" -#: ../gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "Fil ikke funnet %s\n" -#: ../gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Ikke en gyldig ikonbuffer: %s\n" -#: ../gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "Ingen indeksfil for tema.\n" -#: ../gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3770,254 +3867,254 @@ msgstr "Vietnamesisk (VIQR)" msgid "X Input Method" msgstr "X-inndatametode" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "Brukernavn:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "Passord:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "Autentisering kreves for å skrive ut dokument «%s» på skriver %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Autentisering kreves for å skrive ut et dokument på %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "Autentisering kreves for å hente attributter for jobb «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "Autentisering kreves for å hente attributter for en jobb" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "Autentisering kreves for å hente attributter for skriver %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "Autentisering kreves for å hente attributter for en skriver" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "Autentisering kreves for å hente forvalgt skriver for %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Autentisering kreves for å hente skrivere fra %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "Autentisering kreves for å hente en fil fra %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "Autentisering kreves på %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "Domene:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Autentisering kreves for å skrive ut dokument «%s»" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "Autentisering kreves for å skrive ut dette dokumentet på skriver %s" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "Autentisering kreves for å skrive ut dette dokumentet" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "Skriver «%s» har lite toner." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "Skriver «%s» er tom for toner." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "Skriver «%s» har lite framkallingsmiddel." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "Skriver «%s» er tom for framkallingsmiddel." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "Skriver «%s» har minst en tonerkassett som snart er tom." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "Skriver «%s» har minst en tom tonerkassett." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "Lokket er åpent på skriver «%s»." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "Døren er åpen på skriver «%s»." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "Skriver «%s» har lite papir." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "Skriver «%s» er tom for papir." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "Skriver «%s» er frakoblet for tiden." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "Det er et problem med skriver «%s»." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "Satt på pause. Avviser jobber" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "Avviser jobber" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "Tosidig" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "Papirtype" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "Papirkilde" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "Utskuff" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "Oppløsning" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "Forhåndsfiltrering med GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "Ensidig" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "Lang kant (standard)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "Kort kant (vend)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "Velg automatisk" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" msgstr "Forvalg for skriver" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "Bygg kun inn GhostScript-skrifter" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "Konverter til PS nivå 1" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "Konverter til PS nivå 2" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "Ingen forhåndsfiltrering" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "Forskjellig" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "Haster" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" msgstr "Høy" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "Middels" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "Lav" @@ -4025,66 +4122,66 @@ msgstr "Lav" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "Sider per ark" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "Prioritet for jobb" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "Faktureringsinformasjon:" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "Ingen" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "Klassifisert" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "Konfidensiell" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "Hemmelig" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "Vanlig" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "Topphemmelig" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" msgstr "Ikke klassifisert" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "Før" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "Etter" @@ -4092,14 +4189,14 @@ msgstr "Etter" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "Tidspunkt for utskrift" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "Tidspunkt for utskrift" @@ -4107,7 +4204,7 @@ msgstr "Tidspunkt for utskrift" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "Egendefinert %s×%s" @@ -4122,28 +4219,28 @@ msgstr "utfil.%s" msgid "Print to File" msgstr "Skriv ut til fil" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "_Sider per ark:" -#: ../modules/printbackends/file/gtkprintbackendfile.c:649 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "Fil" -#: ../modules/printbackends/file/gtkprintbackendfile.c:659 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "F_ormat" diff --git a/po/pa.po b/po/pa.po index 2ffc1e61d5..2962ddb603 100644 --- a/po/pa.po +++ b/po/pa.po @@ -1,5013 +1,8070 @@ -# translation of gtk+.HEAD.po to Punjabi -# Copyright (C) 2004 THE gtk+.HEAD'S COPYRIGHT HOLDER -# This file is distributed under the same license as the gtk+.HEAD package. +# translation of gtk+-properties.HEAD.po to Punjabi +# Copyright (C) 2004 THE gtk+-properties.HEAD'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gtk+-properties.HEAD package. # # Amanpreet Singh Alam , 2004. -# Amanpreet Singh Alam , 2005,2006,2007, 2008, 2009. -# A S Alam , 2009, 2010. +# A S Alam , 2005, 2006, 2007, 2009, 2010, 2011. +# ASB , 2007. +# Amanpreet Singh Alam , 2009. msgid "" msgstr "" -"Project-Id-Version: gtk+.HEAD\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" -"POT-Creation-Date: 2010-10-05 23:12+0000\n" -"PO-Revision-Date: 2010-10-09 08:15+0530\n" +"Project-Id-Version: gtk+-properties.HEAD\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%" +"2b&component=general\n" +"POT-Creation-Date: 2011-01-18 16:14+0000\n" +"PO-Revision-Date: 2011-01-19 08:40+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: \n" -"X-Generator: Lokalize 1.1\n" +"X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gdk/gdk.c:103 -#, c-format -msgid "Error parsing option --gdk-debug" -msgstr "--gdk-debug ਚੋਣ ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" - -#: ../gdk/gdk.c:123 -#, c-format -msgid "Error parsing option --gdk-no-debug" -msgstr "ਚੋਣ --gdk-no-debug ਪਾਰਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" - -#. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:151 -msgid "Program class as used by the window manager" -msgstr "ਵਿੰਡੋ ਮੈਨੇਜਰ ਰਾਹੀਂ ਪਰੋਗਰਾਮ ਕਲਾਸ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ" - -#. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:152 -msgid "CLASS" -msgstr "ਕਲਾਸ" - -#. Description of --name=NAME in --help output -#: ../gdk/gdk.c:154 -msgid "Program name as used by the window manager" -msgstr "ਵਿੰਡੋ ਮੈਨੇਜਰ ਰਾਹੀਂ ਪਰੋਗਰਾਮ ਨਾਂ ਦੇ ਤੌਰ ਉੱਤੇ ਇਸਤੇਮਾਲ" - -#. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:155 -msgid "NAME" -msgstr "ਨਾਂ" - -#. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:157 -msgid "X display to use" -msgstr "ਵਰਤਣ ਲਈ X ਡਿਸਪਲੇਅ" - -#. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:158 -msgid "DISPLAY" +#: ../gdk/gdkapplaunchcontext.c:129 ../gdk/gdkcursor.c:136 +#: ../gdk/gdkdevicemanager.c:146 +msgid "Display" msgstr "ਡਿਸਪਲੇਅ" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:160 -msgid "X screen to use" -msgstr "ਵਰਤਣ ਲਈ X ਸਕਰੀਨ" +#: ../gdk/gdkcursor.c:128 +msgid "Cursor type" +msgstr "ਕਰਸਰ ਕਿਸਮ" -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:161 -msgid "SCREEN" -msgstr "ਸਕਰੀਨ" +#: ../gdk/gdkcursor.c:129 +msgid "Standard cursor type" +msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਕਿਸਮ" -#. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:164 -msgid "GDK debugging flags to set" -msgstr "ਸੈੱਟ ਕਰਨ ਲਈ GDK+ ਡੀਬੱਗਿੰਗ ਨਿਸ਼ਾਨ" +#: ../gdk/gdkcursor.c:137 +msgid "Display of this cursor" +msgstr "ਇਹ ਕਰਸਰ ਵੇਖੋ" -#. Placeholder in --gdk-debug=FLAGS in --help output -#. Placeholder in --gdk-no-debug=FLAGS in --help output -#. Placeholder in --gtk-debug=FLAGS in --help output -#. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:165 ../gdk/gdk.c:168 ../gtk/gtkmain.c:533 ../gtk/gtkmain.c:536 -msgid "FLAGS" -msgstr "ਫਲੈਗ" +#: ../gdk/gdkdevice.c:111 +msgid "Device Display" +msgstr "ਜੰਤਰ ਡਿਸਪਲੇਅ" -#. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:167 -msgid "GDK debugging flags to unset" -msgstr "ਅਣ-ਸੈੱਟ ਕਰਨ ਲਈ GDK+ ਡੀਬੱਗਿੰਗ ਨਿਸ਼ਾਨ" +#: ../gdk/gdkdevice.c:112 +msgid "Display which the device belongs to" +msgstr "ਡਿਸਪਲੇਅ, ਜਿਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਹੈ" -#: ../gdk/keyname-table.h:3940 -msgctxt "keyboard label" -msgid "BackSpace" -msgstr "ਪਿੱਛੇ-ਸਪੇਸ" +#: ../gdk/gdkdevice.c:126 +msgid "Device manager" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ" -#: ../gdk/keyname-table.h:3941 -msgctxt "keyboard label" -msgid "Tab" -msgstr "ਟੈਬ" +#: ../gdk/gdkdevice.c:127 +msgid "Device manager which the device belongs to" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ, ਜਿਸ ਨਾਲ ਜੰਤਰ ਸਬੰਧਿਤ ਹੈ" -#: ../gdk/keyname-table.h:3942 -msgctxt "keyboard label" -msgid "Return" -msgstr "ਵਾਪਸ" +#: ../gdk/gdkdevice.c:141 ../gdk/gdkdevice.c:142 +msgid "Device name" +msgstr "ਜੰਤਰ ਨਾਂ" -#: ../gdk/keyname-table.h:3943 -msgctxt "keyboard label" -msgid "Pause" -msgstr "ਵਿਰਾਮ" +#: ../gdk/gdkdevice.c:156 +msgid "Device type" +msgstr "ਜੰਤਰ ਕਿਸਮ" -#: ../gdk/keyname-table.h:3944 -msgctxt "keyboard label" -msgid "Scroll_Lock" -msgstr "ਸਕਰੋਲ ਤਾਲਾ(_L)" +#: ../gdk/gdkdevice.c:157 +msgid "Device role in the device manager" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ ਵਿੱਚ ਜੰਤਰ ਰੋਲ" -#: ../gdk/keyname-table.h:3945 -msgctxt "keyboard label" -msgid "Sys_Req" -msgstr "Sys_Req" +#: ../gdk/gdkdevice.c:173 +msgid "Associated device" +msgstr "ਸਬੰਧਿਤ ਜੰਤਰ" -#: ../gdk/keyname-table.h:3946 -msgctxt "keyboard label" -msgid "Escape" -msgstr "ਇਸਕੇਪ" +#: ../gdk/gdkdevice.c:174 +msgid "Associated pointer or keyboard with this device" +msgstr "ਇਸ ਜੰਤਰ ਨਾਲ ਸਬੰਧਿਤ ਪੁਆਇੰਟਰ ਜਾਂ ਕੀਬੋਰਡ" -#: ../gdk/keyname-table.h:3947 -msgctxt "keyboard label" -msgid "Multi_key" -msgstr "ਬਹੁ-ਕੁੰਜੀ" +#: ../gdk/gdkdevice.c:187 +msgid "Input source" +msgstr "ਇੰਪੁੱਟ ਸਰੋਤ" -#: ../gdk/keyname-table.h:3948 -msgctxt "keyboard label" -msgid "Home" -msgstr "ਘਰ" +#: ../gdk/gdkdevice.c:188 +msgid "Source type for the device" +msgstr "ਜੰਤਰ ਲਈ ਸਰੋਤ ਕਿਸਮ" -#: ../gdk/keyname-table.h:3949 -msgctxt "keyboard label" -msgid "Left" -msgstr "ਖੱਬੇ" +#: ../gdk/gdkdevice.c:203 ../gdk/gdkdevice.c:204 +msgid "Input mode for the device" +msgstr "ਜੰਤਰ ਲਈ ਇੰਪੁੱਟ ਮੋਡ" -#: ../gdk/keyname-table.h:3950 -msgctxt "keyboard label" -msgid "Up" -msgstr "ਉੱਤੇ" +#: ../gdk/gdkdevice.c:219 +msgid "Whether the device has a cursor" +msgstr "ਕੀ ਜੰਤਰ ਲਈ ਕਰਸਰ ਹੈ" -#: ../gdk/keyname-table.h:3951 -msgctxt "keyboard label" -msgid "Right" -msgstr "ਸੱਜੇ" +#: ../gdk/gdkdevice.c:220 +msgid "Whether there is a visible cursor following device motion" +msgstr "ਕੀ ਅੱਗੇ ਦਿੱਤੀ ਜੰਤਰ ਹਲਚਲ ਲਈ ਦਿੱਖ ਕਰਸਰ ਹੈ" -#: ../gdk/keyname-table.h:3952 -msgctxt "keyboard label" -msgid "Down" -msgstr "ਹੇਠਾਂ" +#: ../gdk/gdkdevice.c:234 ../gdk/gdkdevice.c:235 +msgid "Number of axes in the device" +msgstr "ਜੰਤਰ ਵਿੱਚ ਧੁਰਿਆਂ ਦੀ ਗਿਣਤੀ" -#: ../gdk/keyname-table.h:3953 -msgctxt "keyboard label" -msgid "Page_Up" -msgstr "ਸਫ਼ਾ ਥੱਲੇ(_U)" +#: ../gdk/gdkdevicemanager.c:147 +msgid "Display for the device manager" +msgstr "ਜੰਤਰ ਮੈਨੇਜਰ ਲਈ ਡਿਸਪਲੇਅ" -#: ../gdk/keyname-table.h:3954 -msgctxt "keyboard label" -msgid "Page_Down" -msgstr "ਸਫ਼ਾ ਹੇਠਾਂ(_D)" +#: ../gdk/gdkdisplaymanager.c:117 +msgid "Default Display" +msgstr "ਡਿਫਾਲਟ ਡਿਸਪਲੇਅ" -#: ../gdk/keyname-table.h:3955 -msgctxt "keyboard label" -msgid "End" -msgstr "ਅੰਤ" +#: ../gdk/gdkdisplaymanager.c:118 +msgid "The default display for GDK" +msgstr "GDK ਲਈ ਡਿਫਾਲਟ ਡਿਸਪਲੇਅ" -#: ../gdk/keyname-table.h:3956 -msgctxt "keyboard label" -msgid "Begin" -msgstr "ਸ਼ੁਰੂ" +#: ../gdk/gdkscreen.c:89 +msgid "Font options" +msgstr "ਫੋਂਟ ਚੋਣਾਂ" -#: ../gdk/keyname-table.h:3957 -msgctxt "keyboard label" -msgid "Print" -msgstr "ਛਾਪੋ" +#: ../gdk/gdkscreen.c:90 +msgid "The default font options for the screen" +msgstr "ਸਕਰੀਨ ਲਈ ਡਿਫਾਲਟ ਫੋਂਟ ਚੋਣਾਂ" -#: ../gdk/keyname-table.h:3958 -msgctxt "keyboard label" -msgid "Insert" -msgstr "ਸ਼ਾਮਲ" +#: ../gdk/gdkscreen.c:97 +msgid "Font resolution" +msgstr "ਫੋਂਟ ਰੈਜ਼ੋਲੂਸ਼ਨ" -#: ../gdk/keyname-table.h:3959 -msgctxt "keyboard label" -msgid "Num_Lock" -msgstr "ਨਮ ਤਾਲਾ(_L)" +#: ../gdk/gdkscreen.c:98 +msgid "The resolution for fonts on the screen" +msgstr "ਸਕਰੀਨ ਉੱਤੇ ਫੋਂਟਾਂ ਲਈ ਰੈਜ਼ੋਲੂਸ਼ਨ ਹੈ" -#: ../gdk/keyname-table.h:3960 -msgctxt "keyboard label" -msgid "KP_Space" -msgstr "KP_Space" +#: ../gdk/gdkwindow.c:373 ../gdk/gdkwindow.c:374 +msgid "Cursor" +msgstr "ਕਰਸਰ" -#: ../gdk/keyname-table.h:3961 -msgctxt "keyboard label" -msgid "KP_Tab" -msgstr "KP_Tab" +#: ../gdk/x11/gdkdevice-xi.c:133 ../gdk/x11/gdkdevice-xi.c:134 +#: ../gdk/x11/gdkdevice-xi2.c:123 +msgid "Device ID" +msgstr "ਜੰਤਰ ID" -#: ../gdk/keyname-table.h:3962 -msgctxt "keyboard label" -msgid "KP_Enter" -msgstr "KP_Enter" +#: ../gdk/x11/gdkdevice-xi2.c:124 +msgid "Device identifier" +msgstr "ਜੰਤਰ ਪਛਾਣਕਰਤਾ" -#: ../gdk/keyname-table.h:3963 -msgctxt "keyboard label" -msgid "KP_Home" -msgstr "KP_Home" +#: ../gdk/x11/gdkdevicemanager-xi2.c:115 +msgid "Opcode" +msgstr "Opcode" -#: ../gdk/keyname-table.h:3964 -msgctxt "keyboard label" -msgid "KP_Left" -msgstr "KP_Left" +#: ../gdk/x11/gdkdevicemanager-xi2.c:116 +msgid "Opcode for XInput2 requests" +msgstr "XInput2 ਈਵੈਂਟ ਲਈ Opcode" -#: ../gdk/keyname-table.h:3965 -msgctxt "keyboard label" -msgid "KP_Up" -msgstr "KP_Up" +#: ../gdk/x11/gdkdevicemanager-xi.c:95 +msgid "Event base" +msgstr "ਈਵੈਂਟ ਬੇਸ" -#: ../gdk/keyname-table.h:3966 -msgctxt "keyboard label" -msgid "KP_Right" -msgstr "KP_Right" +#: ../gdk/x11/gdkdevicemanager-xi.c:96 +msgid "Event base for XInput events" +msgstr "XInput ਈਵੈਂਟ ਲਈ ਈਵੈਂਟ ਬੇਸ" -#: ../gdk/keyname-table.h:3967 -msgctxt "keyboard label" -msgid "KP_Down" -msgstr "KP_Down" +#: ../gtk/gtkaboutdialog.c:276 +msgid "Program name" +msgstr "ਪਰੋਗਰਾਮ ਨਾਂ" -#: ../gdk/keyname-table.h:3968 -msgctxt "keyboard label" -msgid "KP_Page_Up" -msgstr "KP_Page_Up" +#: ../gtk/gtkaboutdialog.c:277 +msgid "" +"The name of the program. If this is not set, it defaults to " +"g_get_application_name()" +msgstr "" +"ਪਰੋਗਰਾਮ ਦਾ ਨਾਂ ਹੈ। ਜੇਕਰ ਇਹ ਨਾ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਡਿਫਾਲਟ g_get_application_name() " +"ਹੋਵੇਗਾ।" -#: ../gdk/keyname-table.h:3969 -msgctxt "keyboard label" -msgid "KP_Prior" -msgstr "KP_Prior" +#: ../gtk/gtkaboutdialog.c:291 +msgid "Program version" +msgstr "ਪਰੋਗਰਾਮ ਵਰਜਨ" -#: ../gdk/keyname-table.h:3970 -msgctxt "keyboard label" -msgid "KP_Page_Down" -msgstr "KP_Page_Down" +#: ../gtk/gtkaboutdialog.c:292 +msgid "The version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜਨ ਹੈ" -#: ../gdk/keyname-table.h:3971 -msgctxt "keyboard label" -msgid "KP_Next" -msgstr "KP_Next" +#: ../gtk/gtkaboutdialog.c:306 +msgid "Copyright string" +msgstr "ਕਾਪੀਰਾਈਟ ਲਾਈਨ" -#: ../gdk/keyname-table.h:3972 -msgctxt "keyboard label" -msgid "KP_End" -msgstr "KP_End" +#: ../gtk/gtkaboutdialog.c:307 +msgid "Copyright information for the program" +msgstr "ਪਰੋਗਰਾਮ ਬਾਰੇ ਕਾਪੀਰਾਈਟ ਜਾਣਕਾਰੀ ਹੈ" -#: ../gdk/keyname-table.h:3973 -msgctxt "keyboard label" -msgid "KP_Begin" -msgstr "KP_Begin" +#: ../gtk/gtkaboutdialog.c:324 +msgid "Comments string" +msgstr "ਟਿੱਪਣੀ ਲਾਈਨ" -#: ../gdk/keyname-table.h:3974 -msgctxt "keyboard label" -msgid "KP_Insert" -msgstr "KP_Insert" +#: ../gtk/gtkaboutdialog.c:325 +msgid "Comments about the program" +msgstr "ਪਰੋਗਰਾਮ ਬਾਰੇ ਟਿੱਪਣੀ ਹੈ।" -#: ../gdk/keyname-table.h:3975 -msgctxt "keyboard label" -msgid "KP_Delete" -msgstr "KP_Delete" +#: ../gtk/gtkaboutdialog.c:375 +msgid "License Type" +msgstr "ਲਾਈਸੈਂਸ ਕਿਸਮ" -#: ../gdk/keyname-table.h:3976 -msgctxt "keyboard label" -msgid "Delete" -msgstr "ਹਟਾਓ" +#: ../gtk/gtkaboutdialog.c:376 +msgid "The license type of the program" +msgstr "ਪਰੋਗਰਾਮ ਲਈ ਲਾਈਸੈਂਸ ਕਿਸਮ" -#. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 -msgid "Don't batch GDI requests" -msgstr "GDI ਬੇਨਤੀਆਂ ਨੂੰ ਇੱਕ ਨਾਲ ਨਾ ਕਰੋ" +#: ../gtk/gtkaboutdialog.c:392 +msgid "Website URL" +msgstr "ਵੈਬਸਾਇਟ URL" -#. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 -msgid "Don't use the Wintab API for tablet support" -msgstr "Wintab API ਨੂੰ ਟੈਬਲਿਟ ਸਹਿਯੋਗ ਲਈ ਨਾ ਵਰਤੋਂ" +#: ../gtk/gtkaboutdialog.c:393 +msgid "The URL for the link to the website of the program" +msgstr "ਪਰੋਗਰਾਮ ਦੀ ਵੈੱਬ ਸਾਇਟ ਨਾਲ ਸਬੰਧਤ URL ਹੈ" -#. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 -msgid "Same as --no-wintab" -msgstr "--no-wintab ਵਾਂਗ ਹੀ" +#: ../gtk/gtkaboutdialog.c:407 +msgid "Website label" +msgstr "ਵੈਬਸਾਇਟ ਲੇਬਲ" -#. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 -msgid "Do use the Wintab API [default]" -msgstr "Wintab API [ਡਿਫਾਲਟ] ਨੂੰ ਇਸਤੇਮਾਲ ਨਾ ਕਰੋ" +#: ../gtk/gtkaboutdialog.c:408 +msgid "The label for the link to the website of the program" +msgstr "ਪਰੋਗਰਾਮ ਦੀ ਵੈੱਬ ਸਾਇਟ ਨਾਲ ਲਿੰਕ ਲਈ ਲੇਬਲ ਹੈ" -#. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 -msgid "Size of the palette in 8 bit mode" -msgstr "8 ਬਿੱਟ ਮੋਡ ਵਿੱਚ ਰੰਗ-ਪੱਟੀ ਦਾ ਆਕਾਰ" - -#. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 -msgid "COLORS" -msgstr "ਰੰਗ" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 -#, c-format -msgid "Starting %s" -msgstr "%s ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 -#, c-format -msgid "Opening %s" -msgstr "%s ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਿਆ" - -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 -#, c-format -msgid "Opening %d Item" -msgid_plural "Opening %d Items" -msgstr[0] "%d ਇਕਾਈ ਖੋਲ੍ਹੀ ਜਾ ਰਹੀ ਹੈ" -msgstr[1] "%d ਇਕਾਈਆਂ ਖੋਲ੍ਹੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ" - -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:96 -msgid "Make X calls synchronous" -msgstr "X ਕਾਲਾਂ ਸੈਕੋਰਨਸ ਕਰੋ" - -#. Translators: this is the license preamble; the string at the end -#. * contains the URL of the license. -#. -#: ../gtk/gtkaboutdialog.c:101 -#, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "ਇਹ ਪਰੋਗਰਾਮ ਦੀ *ਕੋਈ ਵੀ ਵਾਰੰਟੀ* ਨਹੀਂ ਹੈ; ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, %s ਵੇਖੋ।" - -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2235 -msgid "License" -msgstr "ਲਾਈਸੈਂਸ" - -#: ../gtk/gtkaboutdialog.c:340 -msgid "The license of the program" -msgstr "ਪਰੋਗਰਾਮ ਦਾ ਲਾਈਸੈਂਸ" - -#. Add the credits button -#: ../gtk/gtkaboutdialog.c:621 -msgid "C_redits" -msgstr "ਮਾਣ(_r)" - -#. Add the license button -#: ../gtk/gtkaboutdialog.c:635 -msgid "_License" -msgstr "ਲਾਈਸੈਂਸ(_L)" - -#: ../gtk/gtkaboutdialog.c:839 -msgid "Could not show link" -msgstr "ਲਿੰਕ ਵੇਖਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkaboutdialog.c:932 -#, c-format -msgid "About %s" -msgstr "%s ਬਾਰੇ" - -#: ../gtk/gtkaboutdialog.c:2153 -msgid "Credits" -msgstr "ਮਾਣ" - -#: ../gtk/gtkaboutdialog.c:2185 -msgid "Written by" +#: ../gtk/gtkaboutdialog.c:424 +msgid "Authors" msgstr "ਲੇਖਕ" -#: ../gtk/gtkaboutdialog.c:2188 -msgid "Documented by" -msgstr "ਦਸਤਾਵੇਜ਼ ਲਿਖੇ" +#: ../gtk/gtkaboutdialog.c:425 +msgid "List of authors of the program" +msgstr "ਪਰੋਗਰਾਮ ਦੇ ਲੇਖਕਾਂ ਦੀ ਲਿਸਟ" -#: ../gtk/gtkaboutdialog.c:2200 -msgid "Translated by" -msgstr "ਅਨੁਵਾਦ ਕੀਤਾ" +#: ../gtk/gtkaboutdialog.c:441 +msgid "Documenters" +msgstr "ਦਸਤਾਵੇਜ਼ ਲੇਖਕ" -#: ../gtk/gtkaboutdialog.c:2204 -msgid "Artwork by" -msgstr "ਕਲਾਕਾਰੀ" +#: ../gtk/gtkaboutdialog.c:442 +msgid "List of people documenting the program" +msgstr "ਪਰੋਗਰਾਮ ਦੇ ਦਸਤਾਵੇਜ਼ ਲਿਖਣ ਵਾਲੇ ਲੇਖਕਾਂ ਦੀ ਲਿਸਟ" -#. This is the text that should appear next to menu accelerators -#. * that use the shift key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:160 -msgctxt "keyboard label" -msgid "Shift" -msgstr "ਸਿਫਟ" +#: ../gtk/gtkaboutdialog.c:458 +msgid "Artists" +msgstr "ਕਲਾਕਾਰ" -#. This is the text that should appear next to menu accelerators -#. * that use the control key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:166 -msgctxt "keyboard label" -msgid "Ctrl" -msgstr "ਕੰਟਰੋਲ" +#: ../gtk/gtkaboutdialog.c:459 +msgid "List of people who have contributed artwork to the program" +msgstr "ਪਰੋਗਰਾਮ ਵਿੱਚ ਕਲਾਕਾਰੀ ਕਰਨ ਵਾਲੇ ਲੋਕਾਂ ਦੀ ਲਿਸਟ" -#. This is the text that should appear next to menu accelerators -#. * that use the alt key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:172 -msgctxt "keyboard label" -msgid "Alt" -msgstr "ਆਲਟ" +#: ../gtk/gtkaboutdialog.c:476 +msgid "Translator credits" +msgstr "ਅਨੁਵਾਦ ਮਾਣ" -#. This is the text that should appear next to menu accelerators -#. * that use the super key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:770 -msgctxt "keyboard label" -msgid "Super" -msgstr "ਸੁਪਰ" - -#. This is the text that should appear next to menu accelerators -#. * that use the hyper key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:783 -msgctxt "keyboard label" -msgid "Hyper" -msgstr "ਹਾਈਪਰ" - -#. This is the text that should appear next to menu accelerators -#. * that use the meta key. If the text on this key isn't typically -#. * translated on keyboards used for your language, don't translate -#. * this. -#. -#: ../gtk/gtkaccellabel.c:797 -msgctxt "keyboard label" -msgid "Meta" -msgstr "ਮੇਟਾ" - -#: ../gtk/gtkaccellabel.c:813 -msgctxt "keyboard label" -msgid "Space" -msgstr "ਖਾਲੀ ਥਾਂ" - -#: ../gtk/gtkaccellabel.c:816 -msgctxt "keyboard label" -msgid "Backslash" -msgstr "ਪਿੱਛੇ ਡੰਡਾ" - -#: ../gtk/gtkbuilderparser.c:343 -#, c-format -msgid "Invalid type function on line %d: '%s'" -msgstr "ਲਾਈਨ %d ਉੱਤੇ ਗਲਤ ਟਾਈਪ ਫੰਕਸ਼ਨ: '%s'" - -#: ../gtk/gtkbuilderparser.c:407 -#, c-format -msgid "Duplicate object ID '%s' on line %d (previously on line %d)" -msgstr "ਲਾਈਨ %2$d ਉੱਤੇ ਡੁਪਲੀਕੇਟ ਆਬਜੈਕਟ ID '%1$s' (ਲਾਈਨ %3$d ਉੱਤੇ ਪਿੱਛੇ)" - -#: ../gtk/gtkbuilderparser.c:859 -#, c-format -msgid "Invalid root element: '%s'" -msgstr "ਗਲਤ root ਐਲੀਮੈਂਟ: '%s'" - -#: ../gtk/gtkbuilderparser.c:898 -#, c-format -msgid "Unhandled tag: '%s'" -msgstr "ਅਣ-ਹੈਂਡਲ ਟੈਗ: '%s'" - -#. Translate to calendar:YM if you want years to be displayed -#. * before months; otherwise translate to calendar:MY. -#. * Do *not* translate it to anything else, if it -#. * it isn't calendar:YM or calendar:MY it will not work. -#. * -#. * Note that the ordering described here is logical order, which is -#. * further influenced by BIDI ordering. Thus, if you have a default -#. * text direction of RTL and specify "calendar:YM", then the year -#. * will appear to the right of the month. -#. -#: ../gtk/gtkcalendar.c:883 -msgid "calendar:MY" -msgstr "calendar:MY" - -#. Translate to calendar:week_start:0 if you want Sunday to be the -#. * 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:921 -msgid "calendar:week_start:0" -msgstr "calendar:week_start:1" - -#. Translators: This is a text measurement template. -#. * Translate it to the widest year text -#. * -#. * If you don't understand this, leave it as "2000" -#. -#: ../gtk/gtkcalendar.c:2006 -msgctxt "year measurement template" -msgid "2000" -msgstr "2000" - -#. Translators: this defines whether the day numbers should use -#. * localized digits or the ones used in English (0123...). -#. * -#. * Translate to "%Id" if you want to use localized digits, or -#. * translate to "%d" otherwise. -#. * -#. * 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:2037 ../gtk/gtkcalendar.c:2719 -#, c-format -msgctxt "calendar:day:digits" -msgid "%d" -msgstr "%Id" - -#. Translators: this defines whether the week numbers should use -#. * localized digits or the ones used in English (0123...). -#. * -#. * Translate to "%Id" if you want to use localized digits, or -#. * translate to "%d" otherwise. -#. * -#. * 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:2069 ../gtk/gtkcalendar.c:2579 -#, c-format -msgctxt "calendar:week:digits" -msgid "%d" -msgstr "%Id" - -#. Translators: This dictates how the year is displayed in -#. * gtkcalendar widget. See strftime() manual for the format. -#. * Use only ASCII in the translation. -#. * -#. * Also look for the msgid "2000". -#. * Translate that entry to a year with the widest output of this -#. * msgid. -#. * -#. * "%Y" is appropriate for most locales. -#. -#: ../gtk/gtkcalendar.c:2361 -msgctxt "calendar year format" -msgid "%Y" -msgstr "%Y" - -#. This label is displayed in a treeview cell displaying -#. * a disabled accelerator key combination. -#. -#: ../gtk/gtkcellrendereraccel.c:272 -msgctxt "Accelerator" -msgid "Disabled" -msgstr "ਆਯੋਗ" - -#. This label is displayed in a treeview cell displaying -#. * an accelerator key combination that is not valid according -#. * to gtk_accelerator_valid(). -#. -#: ../gtk/gtkcellrendereraccel.c:282 -msgctxt "Accelerator" -msgid "Invalid" -msgstr "ਅਢੁੱਕਵਾਂ" - -#. This label is displayed in a treeview cell displaying -#. * an accelerator when the cell is clicked to change the -#. * acelerator. -#. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 -msgid "New accelerator..." -msgstr "ਨਵਾਂ ਪਰਵੇਸ਼ਕ..." - -#: ../gtk/gtkcellrendererprogress.c:362 ../gtk/gtkcellrendererprogress.c:452 -#, c-format -msgctxt "progress bar label" -msgid "%d %%" -msgstr "%d %%" - -#: ../gtk/gtkcolorbutton.c:176 ../gtk/gtkcolorbutton.c:445 -msgid "Pick a Color" -msgstr "ਇੱਕ ਰੰਗ ਚੁਣੋ" - -#: ../gtk/gtkcolorbutton.c:336 -msgid "Received invalid color data\n" -msgstr "ਗਲਤ ਰੰਗ ਡਾਟਾ ਮਿਲਿਆ\n" - -#: ../gtk/gtkcolorsel.c:384 +#: ../gtk/gtkaboutdialog.c:477 msgid "" -"Select the color you want from the outer ring. Select the darkness or " -"lightness of that color using the inner triangle." +"Credits to the translators. This string should be marked as translatable" +msgstr "ਅਨੁਵਾਦ ਕਰਨ ਵਾਲਿਆਂ ਦਾ ਨਾਂ ਹੈ। ਇਹ ਅਨੁਵਾਦ ਯੋਗ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + +#: ../gtk/gtkaboutdialog.c:492 +msgid "Logo" +msgstr "ਲੋਗੋ" + +#: ../gtk/gtkaboutdialog.c:493 +msgid "" +"A logo for the about box. If this is not set, it defaults to " +"gtk_window_get_default_icon_list()" msgstr "" -"ਬਾਹਰੀ ਚੱਕਰ ਵਿੱਚ ਰੰਗ, ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਨੂੰ ਚੁਣੋ। ਅੰਦਰੂਨੀ ਤਿਕੋਣ ਨਾਲ ਰੰਗ ਦਾ ਗੂੜਾਪਨ ਜਾਂ ਫਿੱਕਾਪਨ " -"ਦਿਓ।" +"ਇਸ ਬਾਰੇ ਬਕਸੇ ਲਈ ਇੱਕ ਲੋਗੋ ਹੈ। ਜੇਕਰ ਇਹ ਨਾ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਮੂਲ " +"gtk_window_get_default_icon_list() ਵਰਤਿਆ ਜਾਵੇਗਾ।" -#: ../gtk/gtkcolorsel.c:408 -msgid "" -"Click the eyedropper, then click a color anywhere on your screen to select " -"that color." -msgstr "ਆਈਡਰਾਪਰ ਦਬਾਉ, ਤਦ ਇੱਕ ਰੰਗ ਚੁਣਨ ਲਈ ਆਪਣੀ ਸਕਰੀਨ ਉੱਤੇ ਕਿਸੇ ਵੀ ਰੰਗ 'ਤੇ ਦਬਾਓ।" +#: ../gtk/gtkaboutdialog.c:508 +msgid "Logo Icon Name" +msgstr "ਲੋਗੋ ਆਈਕਾਨ ਨਾਂ" -#: ../gtk/gtkcolorsel.c:417 -msgid "_Hue:" -msgstr "ਆਭਾ(_H):" +#: ../gtk/gtkaboutdialog.c:509 +msgid "A named icon to use as the logo for the about box." +msgstr "ਇਸ ਬਾਰੇ ਲੋਗੋ ਵਿੱਚ ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਲੋਗੋ ਹੈ।" -#: ../gtk/gtkcolorsel.c:418 -msgid "Position on the color wheel." -msgstr "ਰੰਗ ਚੱਕਰ 'ਤੇ ਟਿਕਾਣਾ ਹੈ।" +#: ../gtk/gtkaboutdialog.c:522 +msgid "Wrap license" +msgstr "ਲਾਈਸੈਂਸ ਸਮੇਟਣਾ" -#: ../gtk/gtkcolorsel.c:420 -msgid "_Saturation:" -msgstr "ਸੰਤ੍ਰਿਪਤ(_S):" +#: ../gtk/gtkaboutdialog.c:523 +msgid "Whether to wrap the license text." +msgstr "ਕੀ ਲਾਈਸੈਂਸ ਟੈਕਸਟ ਨੂੰ ਸਮੇਟਣਾ ਹੈ।" -#: ../gtk/gtkcolorsel.c:421 -msgid "Intensity of the color." -msgstr "ਰੰਗ ਦੀ ਤੀਬਰਤਾ ਹੈ।" +#: ../gtk/gtkaccellabel.c:187 +msgid "Accelerator Closure" +msgstr "ਐਕਸਰਲੇਟਰ ਬੰਦ" -#: ../gtk/gtkcolorsel.c:422 -msgid "_Value:" -msgstr "ਮੁੱਲ(_V):" +#: ../gtk/gtkaccellabel.c:188 +msgid "The closure to be monitored for accelerator changes" +msgstr "ਐਕਸਰਲੇਟਰ ਤਬਦੀਲੀਆਂ ਦੀ ਨਿਗਰਾਨੀ ਲਈ ਸਬੰਧ" -#: ../gtk/gtkcolorsel.c:423 -msgid "Brightness of the color." -msgstr "ਰੰਗ ਦੀ ਚਮਕ ਹੈ।" +#: ../gtk/gtkaccellabel.c:194 +msgid "Accelerator Widget" +msgstr "ਐਕਸਰਲੇਟਰ ਵਿਦਗਿਟ" -#: ../gtk/gtkcolorsel.c:424 -msgid "_Red:" -msgstr "ਲਾਲ(_R):" +#: ../gtk/gtkaccellabel.c:195 +msgid "The widget to be monitored for accelerator changes" +msgstr "ਐਕਸਰਲੇਟਰ ਤਬਦੀਲੀਆਂ ਦੀ ਨਿਗਰਾਨੀ ਲਈ ਵਿਦਗਿਟ" -#: ../gtk/gtkcolorsel.c:425 -msgid "Amount of red light in the color." -msgstr "ਰੰਗ ਵਿੱਚ ਲਾਲ ਰੋਸ਼ਨੀ ਦੀ ਮਾਤਰਾ ਹੈ।" - -#: ../gtk/gtkcolorsel.c:426 -msgid "_Green:" -msgstr "ਹਰਾ(_G):" - -#: ../gtk/gtkcolorsel.c:427 -msgid "Amount of green light in the color." -msgstr "ਰੰਗ ਵਿੱਚ ਹਰੀ ਰੋਸ਼ਨੀ ਦੀ ਮਾਤਰਾ ਹੈ।" - -#: ../gtk/gtkcolorsel.c:428 -msgid "_Blue:" -msgstr "ਨੀਲਾ(_B):" - -#: ../gtk/gtkcolorsel.c:429 -msgid "Amount of blue light in the color." -msgstr "ਰੰਗ ਵਿੱਚ ਨੀਲੀ ਰੋਸ਼ਨੀ ਦੀ ਮਾਤਰਾ ਹੈ।" - -#: ../gtk/gtkcolorsel.c:432 -msgid "Op_acity:" -msgstr "ਧੁੰਦਲਾਪਨ(_a):" - -#: ../gtk/gtkcolorsel.c:439 ../gtk/gtkcolorsel.c:449 -msgid "Transparency of the color." -msgstr "ਰੰਗ ਦੀ ਪਾਰਦਰਸ਼ਤਾ ਹੈ।" - -#: ../gtk/gtkcolorsel.c:456 -msgid "Color _name:" -msgstr "ਰੰਗ ਨਾਂ(_N):" - -#: ../gtk/gtkcolorsel.c:470 -msgid "" -"You can enter an HTML-style hexadecimal color value, or simply a color name " -"such as 'orange' in this entry." -msgstr "" -"ਤੁਸੀਂ ਇਸ ਐਂਟਰੀ ਵਿੱਚ HTML-ਸਟਾਇਲ ਵਾਂਗ ਹੈਕਸਾਡੈਸੀਮਲ ਮੁੱਲ ਵੀ ਦੇ ਸਕਦੇ ਹੋ ਜਾਂ ਰੰਗ ਦਾ ਨਾਂ ਵੀ ਭਰ ਸਕਦੇ " -"ਹੋ, ਜਿਵੇਂ ਕਿ 'ਲਾਲ'।" - -#: ../gtk/gtkcolorsel.c:500 -msgid "_Palette:" -msgstr "ਰੰਗ-ਪੱਟੀ(_P):" - -#: ../gtk/gtkcolorsel.c:529 -msgid "Color Wheel" -msgstr "ਰੰਗ ਚੱਕਰ" - -#: ../gtk/gtkcolorsel.c:988 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now. You can drag this color to a palette entry, or select this color as " -"current by dragging it to the other color swatch alongside." -msgstr "" -"ਪਹਿਲਾਂ ਚੁਣਿਆ ਰੰਗ, ਮੌਜੂਦਾ ਤੁਹਾਡੇ ਰਾਹੀਂ ਰੰਗ ਦੇ ਮੁਕਾਬਲੇ। ਤੁਸੀਂ ਇਸ ਰੰਗ ਨੂੰ ਰੰਗ-ਪੱਟੀ ਐਂਟਰੀ ਵਿੱਚ ਸੁੱਟ ਸਕਦੇ " -"ਹੋ ਜਾਂ ਇਸ ਰੰਗ ਨੂੰ ਰੰਗ ਸਵਿੱਚ ਵਿੱਚ ਰੱਖ ਸਕਦੇ ਹੋ।" - -#: ../gtk/gtkcolorsel.c:991 -msgid "" -"The color you've chosen. You can drag this color to a palette entry to save " -"it for use in the future." -msgstr "" -"ਰੰਗ ਜੋ ਤੁਸੀਂ ਚੁਣਿਆ ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਰੰਗ-ਪੱਟੀ ਵਿੱਚ ਰੱਖ ਸਕਦੇ ਹੋ ਤਾਂ ਕਿ ਇਸ ਨੂੰ ਭਵਿੱਖ ਵਿੱਚ ਵੀ ਵਰਤਿਆ " -"ਜਾ ਸਕੇ।" - -#: ../gtk/gtkcolorsel.c:996 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now." -msgstr "ਪਿਛਲਾ ਚੁਣਿਆ ਰੰਗ, ਤੁਹਾਡੇ ਵਲੋਂ ਹੁਣ ਚੁਣੇ ਗਏ ਰੰਗ ਨਾਲ ਤੁਲਨਾ ਕਰਨ ਲਈ।" - -#: ../gtk/gtkcolorsel.c:999 -msgid "The color you've chosen." -msgstr "ਰੰਗ, ਜੋ ਤੁਸੀਂ ਚੁਣਿਆ" - -#: ../gtk/gtkcolorsel.c:1396 -msgid "_Save color here" -msgstr "ਰੰਗ ਇੱਥੇ ਸੰਭਾਲੋ(_S)" - -#: ../gtk/gtkcolorsel.c:1601 -msgid "" -"Click this palette entry to make it the current color. To change this entry, " -"drag a color swatch here or right-click it and select \"Save color here.\"" -msgstr "" -"ਇਸ ਰੰਗ-ਪੱਟੀ ਐਂਟਰੀ ਨੂੰ ਦਬਾਉ ਤਾਂ ਇਹ ਮੌਜੂਦਾ ਰੰਗ ਬਣ ਜਾਵੇ। ਇਸ ਐਂਟਰੀ ਨੂੰ ਤਬਦੀਲ ਕਰਨ ਲਈ ਇੱਕ ਰੰਗ ਨੂੰ " -"ਇੱਥੇ ਤਬਦੀਲ ਕਰ ਦਿਉ ਜਾਂ ਸੱਜਾ-ਬਟਨ ਦਬਾਉ ਤੇ 'ਰੰਗ ਇੱਥੇ ਸੰਭਾਲੋ' ਨੂੰ ਚੁਣੋ।" - -#: ../gtk/gtkcolorseldialog.c:189 -msgid "Color Selection" -msgstr "ਰੰਗ ਚੋਣ" - -#. Translate to the default units to use for presenting -#. * lengths to the user. Translate to default:inch if you -#. * want inches, otherwise translate to default:mm. -#. * Do *not* translate it to "predefinito:mm", if it -#. * it isn't default:mm or default:inch it will not work -#. -#: ../gtk/gtkcustompaperunixdialog.c:116 -msgid "default:mm" -msgstr "default:mm" - -#. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3233 -msgid "Manage Custom Sizes" -msgstr "ਕਸਟਮ ਅਕਾਰ ਪਰਬੰਧ" - -#: ../gtk/gtkcustompaperunixdialog.c:534 ../gtk/gtkpagesetupunixdialog.c:790 -msgid "inch" -msgstr "ਇੰਚ" - -#: ../gtk/gtkcustompaperunixdialog.c:536 ../gtk/gtkpagesetupunixdialog.c:788 -msgid "mm" -msgstr "mm" - -#: ../gtk/gtkcustompaperunixdialog.c:581 -msgid "Margins from Printer..." -msgstr "ਪਰਿੰਟਰ ਤੋਂ ਹਾਸ਼ੀਆ..." - -#: ../gtk/gtkcustompaperunixdialog.c:747 -#, c-format -msgid "Custom Size %d" -msgstr "ਕਸਟਮ ਅਕਾਰ %d" - -#: ../gtk/gtkcustompaperunixdialog.c:1059 -msgid "_Width:" -msgstr "ਚੌੜਾਈ(_W):" - -#: ../gtk/gtkcustompaperunixdialog.c:1071 -msgid "_Height:" -msgstr "ਉਚਾਈ(_H):" - -#: ../gtk/gtkcustompaperunixdialog.c:1083 -msgid "Paper Size" -msgstr "ਸਫ਼ਾ ਅਕਾਰ" - -#: ../gtk/gtkcustompaperunixdialog.c:1092 -msgid "_Top:" -msgstr "ਉੱਤੇ(_T):" - -#: ../gtk/gtkcustompaperunixdialog.c:1104 -msgid "_Bottom:" -msgstr "ਹੇਠਾਂ(_B):" - -#: ../gtk/gtkcustompaperunixdialog.c:1116 -msgid "_Left:" -msgstr "ਖੱਬੇ(_L):" - -#: ../gtk/gtkcustompaperunixdialog.c:1128 -msgid "_Right:" -msgstr "ਸੱਜੇ(_R):" - -#: ../gtk/gtkcustompaperunixdialog.c:1169 -msgid "Paper Margins" -msgstr "ਸਫ਼ਾ ਹਾਸ਼ੀਆ" - -#: ../gtk/gtkentry.c:8601 ../gtk/gtktextview.c:8248 -msgid "Input _Methods" -msgstr "ਇੰਪੁੱਟ ਢੰਗ(_M)" - -#: ../gtk/gtkentry.c:8615 ../gtk/gtktextview.c:8262 -msgid "_Insert Unicode Control Character" -msgstr "ਯੂਨੀਕੋਡ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਲ(_I)" - -#: ../gtk/gtkentry.c:10015 -msgid "Caps Lock and Num Lock are on" -msgstr "ਕੈਪਸ ਲਾਕ ਤੇ ਨਮ ਲਾਕ ਚਾਲੂ ਹਨ" - -#: ../gtk/gtkentry.c:10017 -msgid "Num Lock is on" -msgstr "ਨਮ ਲਾਕ ਚਾਲੂ ਹੈ" - -#: ../gtk/gtkentry.c:10019 -msgid "Caps Lock is on" -msgstr "ਕੈਪਸ ਤਾਲਾ ਚਾਲੂ ਹੈ" - -#. **************** * -#. * Private Macros * -#. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 -msgid "Select A File" -msgstr "ਇੱਕ ਫਾਇਲ ਚੁਣੋ" - -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1825 -msgid "Desktop" -msgstr "ਡੈਸਕਟਾਪ" - -#: ../gtk/gtkfilechooserbutton.c:63 -msgid "(None)" -msgstr "(ਕੋਈ ਨਹੀਂ)" - -#: ../gtk/gtkfilechooserbutton.c:2005 -msgid "Other..." -msgstr "ਹੋਰ..." - -#: ../gtk/gtkfilechooserdefault.c:148 -msgid "Type name of new folder" -msgstr "ਨਵੇਂ ਫੋਲਡਰ ਦਾ ਨਾਂ ਲਿਖੋ" - -#: ../gtk/gtkfilechooserdefault.c:938 -msgid "Could not retrieve information about the file" -msgstr "ਫਾਇਲ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪਰਾਪਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" - -#: ../gtk/gtkfilechooserdefault.c:949 -msgid "Could not add a bookmark" -msgstr "ਬੁੱਕਮਾਰਕ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkfilechooserdefault.c:960 -msgid "Could not remove bookmark" -msgstr "ਬੁੱਕਮਾਰਕ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkfilechooserdefault.c:971 -msgid "The folder could not be created" -msgstr "ਫੋਲਡਰ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkfilechooserdefault.c:984 -msgid "" -"The folder could not be created, as a file with the same name already " -"exists. Try using a different name for the folder, or rename the file first." -msgstr "" -"ਫੋਲਡਰ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਕਿ ਇਸੇ ਨਾਂ ਨਾਲ ਫਾਇਲ ਮੌਜੂਦ ਹੈ। ਫੋਲਡਰ ਲਈ ਵੱਖਰਾ ਨਾਂ ਵਰਤੋਂ ਜਾਂ " -"ਫਾਇਲ ਦਾ ਨਾਂ ਪਹਿਲਾਂ ਬਦਲ ਦਿਓ।" - -#: ../gtk/gtkfilechooserdefault.c:998 -msgid "" -"You may only select folders. The item that you selected is not a folder; " -"try using a different item." -msgstr "" -"ਤੁਸੀਂ ਸ਼ਾਇਦ ਕੇਵਲ ਫੋਲਡਰ ਹੀ ਚੁਣ ਸਕਦੇ ਹੋ। ਆਈਟਮ, ਜਿਸ ਦੀ ਤੁਸੀਂ ਚੋਣ ਕੀਤੀ ਹੈ, ਫੋਲਡਰ ਨਹੀਂ ਹੈ; " -"ਵੱਖਰੀ ਆਈਟਮ ਦੀ ਚੋਣ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" - -#: ../gtk/gtkfilechooserdefault.c:1008 -msgid "Invalid file name" -msgstr "ਗਲਤ ਫਾਇਲ ਨਾਂ" - -#: ../gtk/gtkfilechooserdefault.c:1018 -msgid "The folder contents could not be displayed" -msgstr "ਫੋਲਡਰ ਦੀ ਸਮੱਗਰੀ ਵੇਖਾਈ ਨਹੀਂ ਜਾ ਸਕੀ" - -#. Translators: the first string is a path and the second string -#. * is a hostname. Nautilus and the panel contain the same string -#. * to translate. -#. -#: ../gtk/gtkfilechooserdefault.c:1568 -#, c-format -msgid "%1$s on %2$s" -msgstr "%2$s ਉੱਤੇ %1$s" - -#: ../gtk/gtkfilechooserdefault.c:1744 -msgid "Search" -msgstr "ਖੋਜ" - -#: ../gtk/gtkfilechooserdefault.c:1768 ../gtk/gtkfilechooserdefault.c:9349 -msgid "Recently Used" -msgstr "ਤਾਜ਼ਾ ਵਰਤੇ" - -#: ../gtk/gtkfilechooserdefault.c:2422 -msgid "Select which types of files are shown" -msgstr "ਚੁਣੋ ਕਿ ਕਿਸ ਕਿਸਮ ਦੀਆਂ ਫਾਇਲਾਂ ਵੇਖਾਈਆਂ ਜਾਣ" - -#: ../gtk/gtkfilechooserdefault.c:2781 -#, c-format -msgid "Add the folder '%s' to the bookmarks" -msgstr "ਫੋਲਡਰ '%s' ਨੂੰ ਬੁੱਕਮਾਰਕ ਵਿੱਚ ਸ਼ਾਮਲ" - -#: ../gtk/gtkfilechooserdefault.c:2825 -#, c-format -msgid "Add the current folder to the bookmarks" -msgstr "ਮੌਜੂਦਾ ਫੋਲਡਰ ਨੂੰ ਬੁੱਕਮਾਰਕ ਵਿੱਚ ਸ਼ਾਮਲ" - -#: ../gtk/gtkfilechooserdefault.c:2827 -#, c-format -msgid "Add the selected folders to the bookmarks" -msgstr "ਚੁਣੇ ਫੋਲਡਰਾਂ ਨੂੰ ਬੁੱਕਮਾਰਕ ਵਿੱਚ ਸ਼ਾਮਲ" - -#: ../gtk/gtkfilechooserdefault.c:2865 -#, c-format -msgid "Remove the bookmark '%s'" -msgstr "ਬੁੱਕਮਾਰਕ '%s' ਹਟਾਓ" - -#: ../gtk/gtkfilechooserdefault.c:2867 -#, c-format -msgid "Bookmark '%s' cannot be removed" -msgstr "ਬੁੱਕਮਾਰਕ '%s' ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" - -#: ../gtk/gtkfilechooserdefault.c:2874 ../gtk/gtkfilechooserdefault.c:3738 -msgid "Remove the selected bookmark" -msgstr "ਚੁਣੇ ਬੁੱਕਮਾਰਕ ਹਟਾਓ" - -#: ../gtk/gtkfilechooserdefault.c:3434 -msgid "Remove" -msgstr "ਹਟਾਓ" - -#: ../gtk/gtkfilechooserdefault.c:3443 -msgid "Rename..." -msgstr "...ਨਾਂ-ਬਦਲੋ" - -#. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3606 -msgid "Places" -msgstr "ਥਾਵਾਂ" - -#. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3663 -msgid "_Places" -msgstr "ਥਾਵਾਂ(_P)" - -#: ../gtk/gtkfilechooserdefault.c:3719 -msgid "_Add" -msgstr "ਸ਼ਾਮਲ(_A)" - -#: ../gtk/gtkfilechooserdefault.c:3726 -msgid "Add the selected folder to the Bookmarks" -msgstr "ਚੁਣਿਆ ਫੋਲਡਰ ਬੁੱਕਮਾਰਕ ਵਿੱਚ ਸ਼ਾਮਲ" - -#: ../gtk/gtkfilechooserdefault.c:3731 -msgid "_Remove" -msgstr "ਹਟਾਓ(_R)" - -#: ../gtk/gtkfilechooserdefault.c:3873 -msgid "Could not select file" -msgstr "ਫਾਇਲ ਚੁਣੀ ਨਹੀਂ ਜਾ ਸਕੀ" - -#: ../gtk/gtkfilechooserdefault.c:4048 -msgid "_Add to Bookmarks" -msgstr "ਬੁੱਕਮਾਰਕ ਸ਼ਾਮਲ(_A)" - -#: ../gtk/gtkfilechooserdefault.c:4061 -msgid "Show _Hidden Files" -msgstr "ਲੁਕਵੀਆਂ ਫਾਇਲਾਂ ਵੇਖੋ(_H)" - -#: ../gtk/gtkfilechooserdefault.c:4068 -msgid "Show _Size Column" -msgstr "ਅਕਾਰ ਕਾਲਮ ਵੇਖੋ(_S)" - -#: ../gtk/gtkfilechooserdefault.c:4294 -msgid "Files" -msgstr "ਫਾਇਲਾਂ" - -#: ../gtk/gtkfilechooserdefault.c:4345 +#: ../gtk/gtkaction.c:222 ../gtk/gtkactiongroup.c:228 ../gtk/gtkprinter.c:125 +#: ../gtk/gtktextmark.c:89 ../gtk/gtkthemingengine.c:248 msgid "Name" msgstr "ਨਾਂ" -#: ../gtk/gtkfilechooserdefault.c:4368 +#: ../gtk/gtkaction.c:223 +msgid "A unique name for the action." +msgstr "ਕਾਰਵਾਈ ਲਈ ਸ਼ਨਾਖਤੀ ਨਾਂ ਹੈ।" + +#: ../gtk/gtkaction.c:241 ../gtk/gtkbutton.c:227 ../gtk/gtkexpander.c:287 +#: ../gtk/gtkframe.c:133 ../gtk/gtklabel.c:567 ../gtk/gtkmenuitem.c:328 +#: ../gtk/gtktoolbutton.c:201 ../gtk/gtktoolitemgroup.c:1594 +msgid "Label" +msgstr "ਲੇਬਲ" + +#: ../gtk/gtkaction.c:242 +msgid "The label used for menu items and buttons that activate this action." +msgstr "" +"ਲੇਬਲ, ਜੋ ਮੇਨੂ ਆਈਟਮਾਂ ਅਤੇ ਬਟਨਾਂ ਲਈ ਵਰਤਿਆ ਜਾਦਾ ਹੈ, ਜੋ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਸਰਗਰਮ ਕਰਦੇ " +"ਹਨ।" + +#: ../gtk/gtkaction.c:258 +msgid "Short label" +msgstr "ਛੋਟਾ ਲੇਬਲ" + +#: ../gtk/gtkaction.c:259 +msgid "A shorter label that may be used on toolbar buttons." +msgstr "ਛੋਟਾ ਲੇਬਲ ਜੋ ਕਿ ਟੂਲਬਾਰ ਦੇ ਬਟਨਾਂ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ " + +#: ../gtk/gtkaction.c:267 +msgid "Tooltip" +msgstr "ਟੂਲ-ਟਿੱਪ" + +#: ../gtk/gtkaction.c:268 +msgid "A tooltip for this action." +msgstr "ਇਸ ਕਾਰਵਾਈ ਲਈ ਇੱਕ ਟਿੱਪ ਸੰਕੇਤ ਹੈ " + +#: ../gtk/gtkaction.c:283 +msgid "Stock Icon" +msgstr "ਸਟਾਕ ਆਈਕਾਨ" + +#: ../gtk/gtkaction.c:284 +msgid "The stock icon displayed in widgets representing this action." +msgstr "ਸਟਾਕ ਆਈਕਾਨ ਇਸ ਕਾਰਵਾਈ ਲਈ ਵਿਦਗਿਟ ਵਿੱਚ ਵਿਖਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkaction.c:304 ../gtk/gtkstatusicon.c:244 +msgid "GIcon" +msgstr "ਗਲਕੋਨ" + +#: ../gtk/gtkaction.c:305 ../gtk/gtkcellrendererpixbuf.c:215 +#: ../gtk/gtkimage.c:329 ../gtk/gtkstatusicon.c:245 +msgid "The GIcon being displayed" +msgstr "ਗਲਕੋਨ ਵੇਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkaction.c:325 ../gtk/gtkcellrendererpixbuf.c:180 +#: ../gtk/gtkimage.c:311 ../gtk/gtkprinter.c:174 ../gtk/gtkstatusicon.c:228 +#: ../gtk/gtkwindow.c:721 +msgid "Icon Name" +msgstr "ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkaction.c:326 ../gtk/gtkcellrendererpixbuf.c:181 +#: ../gtk/gtkimage.c:312 ../gtk/gtkstatusicon.c:229 +msgid "The name of the icon from the icon theme" +msgstr "ਆਈਕਾਨ ਸਰੂਪ ਤੋਂ ਆਈਕਾਨ ਦਾ ਨਾਂ" + +#: ../gtk/gtkaction.c:333 ../gtk/gtktoolitem.c:195 +msgid "Visible when horizontal" +msgstr "ਜਦੋਂ ਲੇਟਵਾਂ ਹੋਵੇ ਤਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtkaction.c:334 ../gtk/gtktoolitem.c:196 +msgid "" +"Whether the toolbar item is visible when the toolbar is in a horizontal " +"orientation." +msgstr "ਕੀ ਟੂਲਬਾਰ ਦੀ ਆਈਟਮ ਉਪਲੱਬਧ ਹੋਵੇ, ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਲੇਟਵੀ ਹਾਲਤ ਵਿੱਚ ਹੋਵੇ " + +#: ../gtk/gtkaction.c:349 +msgid "Visible when overflown" +msgstr "ਜਦੋਂ ਭਰ ਹੋਵੇ ਤਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtkaction.c:350 +msgid "" +"When TRUE, toolitem proxies for this action are represented in the toolbar " +"overflow menu." +msgstr "" +"ਜੇਕਰ ਠੀਕ ਹੈ ਤਾਂ, ਇਸ ਕਾਰਵਾਈ ਲਈ ਟੂਲ-ਆਈਟਮ ਪਰਾਕਸੀ ਨੂੰ ਟੂਲਬਾਰ ਭਰਨ ਮੇਨੂ ਵਿੱਚ ਵਿਖਾਇਆ " +"ਜਾਵੇਗਾ।" + +#: ../gtk/gtkaction.c:357 ../gtk/gtktoolitem.c:202 +msgid "Visible when vertical" +msgstr "ਜਦੋਂ ਲੰਬਕਾਰੀ ਹੋਵੇ ਤਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtkaction.c:358 ../gtk/gtktoolitem.c:203 +msgid "" +"Whether the toolbar item is visible when the toolbar is in a vertical " +"orientation." +msgstr "ਕੀ ਟੂਲਬਾਰ ਦੀ ਆਈਟਮ ਉਪਲੱਬਧ ਹੋਵੇ, ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਲੰਬਕਾਰੀ ਹਾਲਤ ਵਿੱਚ ਹੋਵੇ।" + +#: ../gtk/gtkaction.c:365 ../gtk/gtktoolitem.c:209 +msgid "Is important" +msgstr "ਖਾਸ ਹੈ" + +#: ../gtk/gtkaction.c:366 +msgid "" +"Whether the action is considered important. When TRUE, toolitem proxies for " +"this action show text in GTK_TOOLBAR_BOTH_HORIZ mode." +msgstr "" +"ਕੀ ਕਾਰਵਾਈ ਨੂੰ ਜ਼ਰੂਰੀ ਮੰਨਣਾ ਹੈ ਜੇਕਰ ਹਾਂ ਤਾਂ GTK_TOOLBAR_BOTH_HORIZ ਮੋਡ ਵਿੱਚ " +"ਟੂਲ-ਆਈਟਮ " +"ਪਰਾਕਸੀ ਲਈ ਇਹ ਕਾਰਵਾਈ ਟੈਕਸਟ ਰੂਪੀ ਵੇਖਾਵੇਗੀ।" + +#: ../gtk/gtkaction.c:374 +msgid "Hide if empty" +msgstr "ਜੇ ਖਾਲੀ ਹੈ ਤਾਂ ਉਹਲੇ" + +#: ../gtk/gtkaction.c:375 +msgid "When TRUE, empty menu proxies for this action are hidden." +msgstr "ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ ਇਸ ਕਾਰਵਾਈ ਵਿੱਚ ਖਾਲੀ ਲਿਸਟ ਪਰਾਕਸੀਆਂ ਨੂੰ ਉਹਲੇ ਕਰ ਦਿਓ" + +#: ../gtk/gtkaction.c:381 ../gtk/gtkactiongroup.c:235 +#: ../gtk/gtkcellrenderer.c:288 ../gtk/gtkwidget.c:941 +msgid "Sensitive" +msgstr "ਸੰਵੇਦਨਸ਼ੀਲ" + +#: ../gtk/gtkaction.c:382 +msgid "Whether the action is enabled." +msgstr "ਕੀ ਕਾਰਵਾਈ ਯੋਗ ਹੈ" + +#: ../gtk/gtkaction.c:388 ../gtk/gtkactiongroup.c:242 +#: ../gtk/gtkstatusicon.c:279 ../gtk/gtktreeviewcolumn.c:243 +#: ../gtk/gtkwidget.c:934 +msgid "Visible" +msgstr "ਦਿੱਖ" + +#: ../gtk/gtkaction.c:389 +msgid "Whether the action is visible." +msgstr "ਕੀ ਕਾਰਵਾਈ ਦਿੱਸ ਰਹੀ ਹੈ।" + +#: ../gtk/gtkaction.c:395 +msgid "Action Group" +msgstr "ਕਾਰਵਾਈ ਗਰੁੱਪ" + +#: ../gtk/gtkaction.c:396 +msgid "" +"The GtkActionGroup this GtkAction is associated with, or NULL (for internal " +"use)." +msgstr "" +"ਇਹ GtkActionGroup, GtkAction ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ, ਜਾਂ NULL (ਸਿਰਫ ਅੰਦਰੂਨੀ ਵਰਤੋਂ ਲਈ)" + +#: ../gtk/gtkaction.c:414 ../gtk/gtkimagemenuitem.c:183 +msgid "Always show image" +msgstr "ਹਮੇਸ਼ਾਂ ਚਿੱਤਰ ਵੇਖੋ" + +#: ../gtk/gtkaction.c:415 ../gtk/gtkimagemenuitem.c:184 +msgid "Whether the image will always be shown" +msgstr "ਕੀ ਚਿੱਤਰ ਵੇਖਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkactiongroup.c:229 +msgid "A name for the action group." +msgstr "ਕਾਰਵਾਈ ਗਰੁੱਪ ਦਾ ਨਾਂ ਹੈ।" + +#: ../gtk/gtkactiongroup.c:236 +msgid "Whether the action group is enabled." +msgstr "ਕੀ ਕਾਰਵਾਈ ਗਰੁੱਪ ਯੋਗ ਹੈ।" + +#: ../gtk/gtkactiongroup.c:243 +msgid "Whether the action group is visible." +msgstr "ਕੀ ਕਾਰਵਾਈ ਗਰੁੱਪ ਦਿੱਸ ਰਿਹਾ ਹੈ।" + +#: ../gtk/gtkactivatable.c:289 +msgid "Related Action" +msgstr "ਸਬੰਧਿਤ ਕਾਰਵਾਈ" + +#: ../gtk/gtkactivatable.c:290 +msgid "The action this activatable will activate and receive updates from" +msgstr "ਕਾਰਵਾਈ, ਜੋ ਕਿ ਸਰਗਰਮ ਕਰਨ ਹੈ, ਸਰਗਰਮ ਕੀਤਾ ਜਾਵੇਗਾ ਅਤੇ ਅੱਪਡੇਟ ਲਵੇ" + +#: ../gtk/gtkactivatable.c:312 +msgid "Use Action Appearance" +msgstr "ਕਾਰਵਾਈ ਦਿੱਖ ਵਰਤੋਂ" + +#: ../gtk/gtkactivatable.c:313 +msgid "Whether to use the related actions appearance properties" +msgstr "ਕੀ ਸਬੰਧਿਤ ਕਾਰਵਾਈ ਦਿੱਖ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkadjustment.c:123 ../gtk/gtkcellrendererprogress.c:126 +#: ../gtk/gtkscalebutton.c:217 ../gtk/gtkspinbutton.c:381 +msgid "Value" +msgstr "ਮੁੱਲ" + +#: ../gtk/gtkadjustment.c:124 +msgid "The value of the adjustment" +msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਮੁੱਲ ਹੈ" + +#: ../gtk/gtkadjustment.c:140 +msgid "Minimum Value" +msgstr "ਘੱਟੋ-ਘੱਟ ਮੁੱਲ" + +#: ../gtk/gtkadjustment.c:141 +msgid "The minimum value of the adjustment" +msgstr "ਅਜਡੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਹੈ" + +#: ../gtk/gtkadjustment.c:160 +msgid "Maximum Value" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ" + +#: ../gtk/gtkadjustment.c:161 +msgid "The maximum value of the adjustment" +msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ ਹੈ" + +#: ../gtk/gtkadjustment.c:177 +msgid "Step Increment" +msgstr "ਸਟੈਪ ਵਾਧਾ" + +#: ../gtk/gtkadjustment.c:178 +msgid "The step increment of the adjustment" +msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਟੈਪ ਵਾਧਾ ਹੈ" + +#: ../gtk/gtkadjustment.c:194 +msgid "Page Increment" +msgstr "ਸਫ਼ਾ ਵਾਧਾ" + +#: ../gtk/gtkadjustment.c:195 +msgid "The page increment of the adjustment" +msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਫ਼ਾ ਵਾਧਾ ਹੈ" + +#: ../gtk/gtkadjustment.c:214 +msgid "Page Size" +msgstr "ਸਫ਼ਾ ਅਕਾਰ" + +#: ../gtk/gtkadjustment.c:215 +msgid "The page size of the adjustment" +msgstr "ਅਡਜੱਸਟਮੈਂਟ ਕਰਨ ਦਾ ਸਫ਼ਾ ਅਕਾਰ ਹੈ" + +#: ../gtk/gtkalignment.c:137 +msgid "Horizontal alignment" +msgstr "ਲੇਟਵੀਂ ਸਫਬੰਦੀ" + +#: ../gtk/gtkalignment.c:138 ../gtk/gtkbutton.c:278 +msgid "" +"Horizontal position of child in available space. 0.0 is left aligned, 1.0 is " +"right aligned" +msgstr "" +"ਉਪਲੱਬਧ ਥਾਂ ਵਿੱਚ ਚਲਾਇਡ ਲਈ ਲੇਟਵੀ ਸਥਿਤੀ, ਸਫਬੰਦੀ ਖੱਬੇ 0.0 ਤੇ , ਸੱਜੇ 1.0 ਤੇ " + +#: ../gtk/gtkalignment.c:147 +msgid "Vertical alignment" +msgstr "ਲੰਬਰੂਪੀ ਸਫਬੰਦੀ" + +#: ../gtk/gtkalignment.c:148 ../gtk/gtkbutton.c:297 +msgid "" +"Vertical position of child in available space. 0.0 is top aligned, 1.0 is " +"bottom aligned" +msgstr "" +"ਉਪਲੱਬਧ ਥਾਂ ਵਿੱਚ ਚਲਾਇਡ ਲਈ ਲੰਬਕਾਰੀ ਹਾਲਤ ਸਫਬੰਦੀ ਉਪਰੋਂ 0.0 ਤੇ , ਥੱਲਿਉ1.0 'ਤੇ।" + +#: ../gtk/gtkalignment.c:156 +msgid "Horizontal scale" +msgstr "ਲੇਟਵਾਂ ਸਕੇਲ" + +#: ../gtk/gtkalignment.c:157 +msgid "" +"If available horizontal space is bigger than needed for the child, how much " +"of it to use for the child. 0.0 means none, 1.0 means all" +msgstr "" +"ਜੇਕਰ ਉਪਲੱਬਧ ਲੇਟਵੀ ਥਾਂ ਚਲਾਇਡ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਤੋਂ ਵਧੇਰੇ ਹੋਵੇ ਤਾਂਚਲਾਇਡ ਕਿੰਨੀ ਵਰਤੇ " +"0.0 ਦਾ ਮਤਲਬ ਕੁਝ " +"ਵੀ ਨਹੀ, 1.0 ਸਭ" + +#: ../gtk/gtkalignment.c:165 +msgid "Vertical scale" +msgstr "ਲੰਬਕਾਰੀ ਪੈਮਾਨਾ" + +#: ../gtk/gtkalignment.c:166 +msgid "" +"If available vertical space is bigger than needed for the child, how much of " +"it to use for the child. 0.0 means none, 1.0 means all" +msgstr "" +"ਜੇਕਰ ਉਪਲੱਬਧ ਲੰਬਕਾਰੀ ਥਾਂ ਚਲਾਇਡ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਤੋਂ ਵਧੇਰੇ ਹੋਵੇ ਤਾਂ ਚਲਾਇਡ ਕਿੰਨੀ " +"ਵਰਤੇ 0.0 ਦਾ ਮਤਲਬ " +"ਕੁਝ ਵੀ ਨਹੀ, 1.0 ਸਭ" + +#: ../gtk/gtkalignment.c:183 +msgid "Top Padding" +msgstr "ਉੱਤੇ ਚਿਣੋ" + +#: ../gtk/gtkalignment.c:184 +msgid "The padding to insert at the top of the widget." +msgstr "ਵਿਡਗਿਟ ਦੇ ਉੱਤੇ ਚਿਣ ਦਿਓ" + +#: ../gtk/gtkalignment.c:200 +msgid "Bottom Padding" +msgstr "ਥੱਲੇ ਚਿਣੋ" + +#: ../gtk/gtkalignment.c:201 +msgid "The padding to insert at the bottom of the widget." +msgstr "ਵਿਡਗਿਟ ਦੇ ਹੇਠਾਂ ਚਿਣ ਦਿਓ" + +#: ../gtk/gtkalignment.c:217 +msgid "Left Padding" +msgstr "ਖੱਬੇ ਚਿਣੋ" + +#: ../gtk/gtkalignment.c:218 +msgid "The padding to insert at the left of the widget." +msgstr "ਵਿਡਗਿਟ ਦੇ ਖੱਬੇ ਚਿਣ ਦਿਓ" + +#: ../gtk/gtkalignment.c:234 +msgid "Right Padding" +msgstr "ਸੱਜੇ ਚਿਣੋ" + +#: ../gtk/gtkalignment.c:235 +msgid "The padding to insert at the right of the widget." +msgstr "ਵਿਡਗਿਟ ਦੇ ਸੱਜੇ ਚਿਣ ਦਿਓ" + +#: ../gtk/gtkappchooserbutton.c:538 +msgid "Include an 'Other...' item" +msgstr "'ਹੋਰ...' ਆਈਟਮ ਸਮੇਤ" + +#: ../gtk/gtkappchooserbutton.c:539 +msgid "" +"Whether the combobox should include an item that triggers a " +"GtkAppChooserDialog" +msgstr "" +"ਕੀ ਕੰਬੋਬਾਕਸ ਵਿੱਚ ਆਈਟਮ ਸ਼ਾਮਲ ਕਰਨੀ ਹੈ, ਜੋ ਕਿ GtkAppChooserDialog ਚਾਲੂ ਕਰੇ" + +#: ../gtk/gtkappchooser.c:58 +msgid "Content type" +msgstr "ਸਮੱਗਰੀ ਕਿਸਮ" + +#: ../gtk/gtkappchooser.c:59 +msgid "The content type used by the open with object" +msgstr "ਆਬਜੈਕਟ ਨਾਲ ਖੋਲ੍ਹਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਸਮੱਗਰੀ ਕਿਸਮ" + +#: ../gtk/gtkappchooserdialog.c:683 +msgid "GFile" +msgstr "ਜੀਫਾਇਲ" + +#: ../gtk/gtkappchooserdialog.c:684 +msgid "The GFile used by the app chooser dialog" +msgstr "ਫਾਇਲ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਵਲੋਂ ਵਰਤੀ ਜੀਫਾਇਲ" + +#: ../gtk/gtkappchooserwidget.c:1017 +msgid "Show default app" +msgstr "ਡਿਫਾਲਟ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖੋ" + +#: ../gtk/gtkappchooserwidget.c:1018 +msgid "Whether the widget should show the default application" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਡਿਫਾਲਟ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1031 +msgid "Show recommended apps" +msgstr "ਸਿਫਾਰਸ਼ੀ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1032 +msgid "Whether the widget should show recommended applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਸਿਫਾਰਸ਼ੀ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1045 +msgid "Show fallback apps" +msgstr "ਫਾਲਬੈਕ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1046 +msgid "Whether the widget should show fallback applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਫਾਲਬੈਕ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1058 +msgid "Show other apps" +msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1059 +msgid "Whether the widget should show other applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1072 +msgid "Show all apps" +msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਓ" + +#: ../gtk/gtkappchooserwidget.c:1073 +msgid "Whether the widget should show all applications" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵੇਖਾਏ" + +#: ../gtk/gtkappchooserwidget.c:1086 +msgid "Widget's default text" +msgstr "ਵਿਦਜੈੱਟ ਦਾ ਮੂਲ ਟੈਕਸਟ" + +#: ../gtk/gtkappchooserwidget.c:1087 +msgid "The default text appearing when there are no applications" +msgstr "ਜਦੋਂ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਾ ਹੋਵੇ ਤਾਂ ਵੇਖਾਉਣ ਲਈ ਡਿਫਾਲਟ ਟੈਕਸਟ" + +#: ../gtk/gtkarrow.c:110 +msgid "Arrow direction" +msgstr "ਤੀਰ ਦਿਸ਼ਾ" + +#: ../gtk/gtkarrow.c:111 +msgid "The direction the arrow should point" +msgstr "ਤੀਰ ਦੀ ਦਿਸ਼ਾ ਨਿਸ਼ਾਨਦੇਹੀ ਕਰੇ" + +#: ../gtk/gtkarrow.c:119 +msgid "Arrow shadow" +msgstr "ਤੀਰ ਛਾਂ" + +#: ../gtk/gtkarrow.c:120 +msgid "Appearance of the shadow surrounding the arrow" +msgstr "ਤੀਰ ਦੇ ਆਲੇ ਦੁਆਲੇ ਛਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtkarrow.c:127 ../gtk/gtkmenu.c:796 ../gtk/gtkmenuitem.c:391 +msgid "Arrow Scaling" +msgstr "ਤੀਰ ਸਕੇਲਿੰਗ" + +#: ../gtk/gtkarrow.c:128 +msgid "Amount of space used up by arrow" +msgstr "ਤੀਰ ਵਲੋਂ ਵਰਤੀ ਗਈ ਥਾਂ ਦੀ ਮਾਤਰਾ" + +#: ../gtk/gtkaspectframe.c:109 ../gtk/gtkwidget.c:1129 +msgid "Horizontal Alignment" +msgstr "ਲੇਟਵੀਂ ਸਫਬੰਦੀ" + +#: ../gtk/gtkaspectframe.c:110 +msgid "X alignment of the child" +msgstr "ਚਾਇਲਡ ਦੀ X ਕਤਾਰਬੰਦੀ" + +#: ../gtk/gtkaspectframe.c:116 ../gtk/gtkwidget.c:1145 +msgid "Vertical Alignment" +msgstr "ਲੰਬਕਾਰੀ ਸਫਬੰਦੀ" + +#: ../gtk/gtkaspectframe.c:117 +msgid "Y alignment of the child" +msgstr "ਚਾਇਲਡ ਦੀ Y ਸਫਬੰਦੀ" + +#: ../gtk/gtkaspectframe.c:123 +msgid "Ratio" +msgstr "ਅਨੁਪਾਤ" + +#: ../gtk/gtkaspectframe.c:124 +msgid "Aspect ratio if obey_child is FALSE" +msgstr "ਜੇ obey_child ਗਲਤ ਹੈ ਤਾਂ ਆਕਾਰ-ਅਨੁਪਾਤ" + +#: ../gtk/gtkaspectframe.c:130 +msgid "Obey child" +msgstr "ਉਬੇ-ਚਾਇਲਡ" + +#: ../gtk/gtkaspectframe.c:131 +msgid "Force aspect ratio to match that of the frame's child" +msgstr "ਫਰੇਮ ਦੀ ਚਾਇਲਡ ਨਾਲ ਆਕਾਰ-ਅਨੁਪਾਤ ਨਾਲ ਮਿਲਾਓ" + +#: ../gtk/gtkassistant.c:326 +msgid "Header Padding" +msgstr "ਹੈੱਡਰ ਪੈਡਿੰਗ" + +#: ../gtk/gtkassistant.c:327 +msgid "Number of pixels around the header." +msgstr "ਹੈੱਡਰ ਦੇ ਦੁਆਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: ../gtk/gtkassistant.c:334 +msgid "Content Padding" +msgstr "ਸਮੱਗਰੀ ਪੈਡਿੰਗ" + +#: ../gtk/gtkassistant.c:335 +msgid "Number of pixels around the content pages." +msgstr "ਸਮੱਗਰੀ ਪੇਜ਼ਾਂ ਦੁਆਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: ../gtk/gtkassistant.c:351 +msgid "Page type" +msgstr "ਪੇਜ਼ ਕਿਸਮ" + +#: ../gtk/gtkassistant.c:352 +msgid "The type of the assistant page" +msgstr "ਜਾਰੀ ਪੇਜ਼ ਦੀ ਕਿਸਮ ਹੈ" + +#: ../gtk/gtkassistant.c:369 +msgid "Page title" +msgstr "ਸਫ਼ਾ ਟਾਇਟਲ" + +#: ../gtk/gtkassistant.c:370 +msgid "The title of the assistant page" +msgstr "ਜਾਰੀ ਸਫ਼ੇ ਦਾ ਟਾਇਟਲ" + +#: ../gtk/gtkassistant.c:386 +msgid "Header image" +msgstr "ਹੈੱਡਰ ਚਿੱਤਰ" + +#: ../gtk/gtkassistant.c:387 +msgid "Header image for the assistant page" +msgstr "ਸਹਾਇਕ ਸਫ਼ੇ ਲਈ ਹੈੱਡਰ ਚਿੱਤਰ" + +#: ../gtk/gtkassistant.c:403 +msgid "Sidebar image" +msgstr "ਸਾਈਡ-ਬਾਰ ਚਿੱਤਰ" + +#: ../gtk/gtkassistant.c:404 +msgid "Sidebar image for the assistant page" +msgstr "ਸਹਾਇਕ ਸਫ਼ੇ ਲਈ ਬਾਹੀ ਚਿੱਤਰ" + +#: ../gtk/gtkassistant.c:419 +msgid "Page complete" +msgstr "ਸਫ਼ਾ ਪੂਰਾ ਹੋਇਆ" + +#: ../gtk/gtkassistant.c:420 +msgid "Whether all required fields on the page have been filled out" +msgstr "ਕੀ ਸਫ਼ੇ ਉੱਤੇ ਸਭ ਲੋੜੀਦੇ ਖੇਤਰ ਭਰਨੇ ਹਨ" + +#: ../gtk/gtkbbox.c:152 +msgid "Minimum child width" +msgstr "ਘੱਟੋ-ਘੱਟ ਚਾਇਲਡ ਚੌੜਾਈ" + +#: ../gtk/gtkbbox.c:153 +msgid "Minimum width of buttons inside the box" +msgstr "ਡੱਬੇ ਦੇ ਅੰਦਰ ਬਟਨਾਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" + +#: ../gtk/gtkbbox.c:161 +msgid "Minimum child height" +msgstr "ਘੱਟੋ-ਘੱਟ ਚਾਇਲਡ ਉਚਾਈ" + +#: ../gtk/gtkbbox.c:162 +msgid "Minimum height of buttons inside the box" +msgstr "ਡੱਬੇ ਦੇ ਅੰਦਰ ਬਟਨਾਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਉਚਾਈ" + +#: ../gtk/gtkbbox.c:170 +msgid "Child internal width padding" +msgstr "ਚਾਇਲਡ ਦੀ ਅੰਦਰੂਨੀ ਚਿਣਨ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkbbox.c:171 +msgid "Amount to increase child's size on either side" +msgstr "ਚਾਇਲਡ ਦੇ ਆਕਾਰ ਵਿੱਚ ਕਿਸੇ ਵੀ ਪਾਸੇ ਵਾਧੇ ਦੀ ਮਿਣਤੀ" + +#: ../gtk/gtkbbox.c:179 +msgid "Child internal height padding" +msgstr "ਚਾਇਲਡ ਦੀ ਅੰਦਰੂਨੀ ਚਿਣਨ ਦੀ ਉਚਾਈ" + +#: ../gtk/gtkbbox.c:180 +msgid "Amount to increase child's size on the top and bottom" +msgstr "ਚਾਇਲਡ ਦੇ ਆਕਾਰ ਵਿੱਚ ਉੱਪਰ ਅਤੇ ਹੇਠਾਂ ਵਾਲੇ ਪਾਸੇ ਵਾਧੇ ਦੀ ਮਿਣਤੀ" + +#: ../gtk/gtkbbox.c:188 +msgid "Layout style" +msgstr "ਲੇਆਉਟ ਸਟਾਇਲ" + +#: ../gtk/gtkbbox.c:189 +msgid "" +"How to lay out the buttons in the box. Possible values are: spread, edge, " +"start and end" +msgstr "" +"ਡੱਬੇ ਵਿੱਚ ਬਟਨਾਂ ਦਾ ਲੇ-ਆਉਟ ਕਿਵੇਂ ਹੋਵੇ। ਉਪਲੱਬਧ ਮੁੱਲ ਹਨ: ਖਿਲਰਿਆ, ਕਿਨਾਰਾ, ਸ਼ੁਰੂ " +"ਅਤੇ ਅੰਤ" + +#: ../gtk/gtkbbox.c:197 +msgid "Secondary" +msgstr "ਸੈਕੰਡਰੀ" + +#: ../gtk/gtkbbox.c:198 +msgid "" +"If TRUE, the child appears in a secondary group of children, suitable for, e." +"g., help buttons" +msgstr "" +"ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ ਚਾਇਲਡ, ਚਾਇਲਡਰਨ ਦੇ ਗਰੁੱਪ ਦਾ ਸੈਕੰਡਰੀ ਬਣ ਰਹੀ ਜਾਪਦੀ ਹੈ ਜਿਵੇ ਕਿ " +"ਮੱਦਦ ਬਟਨ " + +#: ../gtk/gtkbox.c:241 ../gtk/gtkcellareabox.c:318 ../gtk/gtkexpander.c:311 +#: ../gtk/gtkiconview.c:640 ../gtk/gtktreeviewcolumn.c:268 +msgid "Spacing" +msgstr "ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkbox.c:242 +msgid "The amount of space between children" +msgstr "ਚੈਲਡਰਨ ਵਿੱਚ ਕਿੰਨੀ ਥਾਂ ਹੈ" + +#: ../gtk/gtkbox.c:251 ../gtk/gtktable.c:193 ../gtk/gtktoolbar.c:551 +#: ../gtk/gtktoolitemgroup.c:1647 +msgid "Homogeneous" +msgstr "ਸਮਰੂਪ" + +#: ../gtk/gtkbox.c:252 +msgid "Whether the children should all be the same size" +msgstr "ਕੀ ਚੈਲਰਨ ਇੱਕੋ ਆਕਾਰ ਦੇ ਹੋਣ" + +#: ../gtk/gtkbox.c:268 ../gtk/gtkcellareabox.c:338 ../gtk/gtktoolbar.c:543 +#: ../gtk/gtktoolitemgroup.c:1654 ../gtk/gtktoolpalette.c:1094 +#: ../gtk/gtktreeviewcolumn.c:324 +msgid "Expand" +msgstr "ਫੈਲਾਓ" + +#: ../gtk/gtkbox.c:269 +msgid "Whether the child should receive extra space when the parent grows" +msgstr "ਕੀ ਚਾਇਲਡ ਵੱਖਰੀ ਥਾਂ ਲੈ ਲੈਣ ਜਦੋਂ ਕਿ ਮੂਲ਼ (ਪੇਰੈਨਟ) ਵੱਧ ਰਹੇ ਹੋ" + +#: ../gtk/gtkbox.c:281 ../gtk/gtktoolitemgroup.c:1661 +msgid "Fill" +msgstr "ਭਰੋ" + +#: ../gtk/gtkbox.c:282 +msgid "" +"Whether extra space given to the child should be allocated to the child or " +"used as padding" +msgstr "ਕੀ ਚਾਇਲਡ ਦੀ ਖਾਲੀ ਥਾਂ ਚਾਇਡ ਨੂੰ ਦੇ ਦਿੱਤੀ ਜਾਵੇ ਜਾਂ ਚਿਣਨ ਲਈ ਵਰਤੀ ਜਾਵੇ " + +#: ../gtk/gtkbox.c:289 ../gtk/gtktrayicon-x11.c:166 +msgid "Padding" +msgstr "ਚਿਣਿਆ" + +#: ../gtk/gtkbox.c:290 +msgid "Extra space to put between the child and its neighbors, in pixels" +msgstr "ਵਾਧੂ ਥਾਂ, ਚਾਇਲਡ ਅਤੇ ਗੁਆਢੀ ਵਿੱਚਕਾਰ ਦੇਣ ਲਈ ( ਪਿਕਸਲਾਂ ਵਿੱਚ)" + +#: ../gtk/gtkbox.c:296 +msgid "Pack type" +msgstr "ਪੈਕ ਕਿਸਮ" + +#: ../gtk/gtkbox.c:297 +msgid "" +"A GtkPackType indicating whether the child is packed with reference to the " +"start or end of the parent" +msgstr "" +"ਇਹ GtkPackType ਵੇਖਾ ਰਿਹਾ ਹੈ ਕਿ ਚਲਾਇਡ ਨੂੰ ਪੇਰੈਟ ਦੇ ਸ਼ੁਰੂ ਜ਼ਾਂ ਅਖੀਰ ਵਿੱਚ ਪੈਕ " +"ਕੀਤਾ ਜਾਏ" + +#: ../gtk/gtkbox.c:303 ../gtk/gtknotebook.c:760 ../gtk/gtkpaned.c:326 +#: ../gtk/gtktoolitemgroup.c:1675 +msgid "Position" +msgstr "ਟਿਕਾਣਾ" + +#: ../gtk/gtkbox.c:304 ../gtk/gtknotebook.c:761 +msgid "The index of the child in the parent" +msgstr "ਪੇਰੈਟ ਵਿੱਚ ਚਾਇਲਡ ਦਾ ਇੰਡੈਕਸ" + +#: ../gtk/gtkbuilder.c:314 +msgid "Translation Domain" +msgstr "ਟਰਾਂਸਲੇਟ ਡੋਮੇਨ" + +#: ../gtk/gtkbuilder.c:315 +msgid "The translation domain used by gettext" +msgstr "gettext ਵਲੋਂ ਵਰਤੀ ਟਰਾਂਸਲੇਟ ਡੋਮੇਨ" + +#: ../gtk/gtkbutton.c:228 +msgid "" +"Text of the label widget inside the button, if the button contains a label " +"widget" +msgstr "ਬਟਨ ਵਿੱਚ ਲੇਬਲ ਵਿਦਗਿਟ ਦੇ ਸ਼ਬਦ, ਜੇਕਰ ਬਟਨ ਵਿੱਚ ਲੇਬਲ ਵਿਦਗਿਟ ਹੈ" + +#: ../gtk/gtkbutton.c:235 ../gtk/gtkexpander.c:295 ../gtk/gtklabel.c:588 +#: ../gtk/gtkmenuitem.c:343 ../gtk/gtktoolbutton.c:208 +msgid "Use underline" +msgstr "ਹੇਠਾਂ-ਲਾਈਨ ਵਰਤੋਂ" + +#: ../gtk/gtkbutton.c:236 ../gtk/gtkexpander.c:296 ../gtk/gtklabel.c:589 +#: ../gtk/gtkmenuitem.c:344 +msgid "" +"If set, an underline in the text indicates the next character should be used " +"for the mnemonic accelerator key" +msgstr "" +"ਜੇਕਰ, ਸ਼ਬਦ ਵਿੱਚ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚੀ ਗਈ ਹੈ ਤਾਂ ਇਹ ਅਗਲੇ ਅੱਖਰ ਨੂੰ ਵੇਖਾਵੇਗਾ ਕਿ ਉਹ " +"ਕੀ-ਬੋਰਡ ਤੋਂ ਵਰਤਿਆ " +"ਜਾ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkbutton.c:243 ../gtk/gtkimagemenuitem.c:164 +msgid "Use stock" +msgstr "ਸਟਾਕ ਵਰਤੋਂ" + +#: ../gtk/gtkbutton.c:244 +msgid "" +"If set, the label is used to pick a stock item instead of being displayed" +msgstr "ਜੇਕਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ, ਲੇਬਲ ਸਟਾਕ ਆਈਟਮ ਨੂੰ ਚੁੱਕੇਗਾ ਨਾ ਕਿ ਉਸ ਨੂੰ ਵੇਖਾਵੇਗਾ" + +#: ../gtk/gtkbutton.c:251 ../gtk/gtkcombobox.c:791 +#: ../gtk/gtkfilechooserbutton.c:383 +msgid "Focus on click" +msgstr "ਕਲਿੱਕ 'ਤੇ ਫੋਕਸ" + +#: ../gtk/gtkbutton.c:252 ../gtk/gtkfilechooserbutton.c:384 +msgid "Whether the button grabs focus when it is clicked with the mouse" +msgstr "ਕੀ ਬਟਨ ਫੋਕਸ ਹੋ ਜਾਵੇ, ਜਦੋਂ ਕਿ ਇਹ ਮਾਊਸ ਨਾਲ ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkbutton.c:259 +msgid "Border relief" +msgstr "ਹਾਸ਼ੀਏ ਦੀ ਛੋਟ" + +#: ../gtk/gtkbutton.c:260 +msgid "The border relief style" +msgstr "ਬਾਰਡਰ ਛੋਟ ਸਟਾਇਲ" + +#: ../gtk/gtkbutton.c:277 +msgid "Horizontal alignment for child" +msgstr "ਚਾਇਲਡ ਲਈ ਲੇਟਵੀ ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkbutton.c:296 +msgid "Vertical alignment for child" +msgstr "ਚਾਇਲਡ ਲਈ ਲੰਬਕਾਰੀ ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkbutton.c:313 ../gtk/gtkimagemenuitem.c:149 +msgid "Image widget" +msgstr "ਚਿੱਤਰ ਵਿਦਗਿਟ" + +#: ../gtk/gtkbutton.c:314 +msgid "Child widget to appear next to the button text" +msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ, ਬਟਨ ਟੈਕਸਟ ਤੋਂ ਅੱਗੇ ਦਿੱਸਣ ਲਈ" + +#: ../gtk/gtkbutton.c:328 +msgid "Image position" +msgstr "ਚਿੱਤਰ ਸਥਿਤੀ" + +#: ../gtk/gtkbutton.c:329 +msgid "The position of the image relative to the text" +msgstr "ਟੈਕਸਟ ਦੇ ਮੁਤਾਬਕ ਚਿੱਤਰ ਦੀ ਅਨੁਸਾਰੀ ਸਥਿਤੀ" + +#: ../gtk/gtkbutton.c:449 +msgid "Default Spacing" +msgstr "ਮੂਲ ਫਾਸਲਾ" + +#: ../gtk/gtkbutton.c:450 +msgid "Extra space to add for GTK_CAN_DEFAULT buttons" +msgstr "GTK_CAN_DEFAULT ਬਟਨਾਂ ਲਈ ਹੋਰ ਥਾਂ ਸ਼ਾਮਲ ਕੀਤੀ" + +#: ../gtk/gtkbutton.c:464 +msgid "Default Outside Spacing" +msgstr "ਮੂਲ ਬਾਹਰੀ ਖਾਲ਼ੀ ਥਾਂ" + +#: ../gtk/gtkbutton.c:465 +msgid "" +"Extra space to add for GTK_CAN_DEFAULT buttons that is always drawn outside " +"the border" +msgstr "" +"ਬਟਨਾਂ GTK_CAN_DEFAULT ਲਈ ਵੱਖਰੀ ਥਾਂ ਜੋੜੋ, ਹੋ ਕਿ ਹਾਸ਼ੀਏ ਤੋਂ ਹਮੇਸ਼ਾ ਬਾਹਰ ਖਿੱਚੀ " +"ਜਾਵੇ" + +#: ../gtk/gtkbutton.c:470 +msgid "Child X Displacement" +msgstr "ਚਾਇਲਡ X ਹਿਲਾਉਣਾ" + +#: ../gtk/gtkbutton.c:471 +msgid "" +"How far in the x direction to move the child when the button is depressed" +msgstr "ਜਦੋ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ ਚਾਇਲਡ ਨੂੰ X ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿਲਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkbutton.c:478 +msgid "Child Y Displacement" +msgstr "ਚਾਇਲਡ Y ਹਿਲਾਉਣਾ" + +#: ../gtk/gtkbutton.c:479 +msgid "" +"How far in the y direction to move the child when the button is depressed" +msgstr "ਜਦੋ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ ਚਾਇਲਡ ਨੂੰ Y ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿਲਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkbutton.c:495 +msgid "Displace focus" +msgstr "ਫੋਕਸ ਹਿਲਾਓ" + +#: ../gtk/gtkbutton.c:496 +msgid "" +"Whether the child_displacement_x/_y properties should also affect the focus " +"rectangle" +msgstr "ਕੀ child_displacement_x/_y properties ਚਤੁਰਭੁਜ ਫੋਕਸ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtkbutton.c:509 ../gtk/gtkentry.c:787 ../gtk/gtkentry.c:1832 +msgid "Inner Border" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtkbutton.c:510 +msgid "Border between button edges and child." +msgstr "ਬਟਨ ਕਿਨਾਰੇ ਅਤੇ ਅਧੀਨ ਵਿੱਚ ਹਾਸ਼ੀਆ ਹੈ।" + +#: ../gtk/gtkbutton.c:523 +msgid "Image spacing" +msgstr "ਚਿੱਤਰ ਫਾਸਲਾ" + +#: ../gtk/gtkbutton.c:524 +msgid "Spacing in pixels between the image and label" +msgstr "ਚਿੱਤਰ ਅਤੇ ਲੇਬਲ ਵਿੱਚ ਫਾਸਲਾ ਪਿਕਸਲ ਵਿੱਚ" + +#: ../gtk/gtkcalendar.c:468 +msgid "Year" +msgstr "ਵਰ੍ਹਾ" + +#: ../gtk/gtkcalendar.c:469 +msgid "The selected year" +msgstr "ਚੁਣਿਆ ਵਰ੍ਹਾ" + +#: ../gtk/gtkcalendar.c:482 +msgid "Month" +msgstr "ਮਹੀਨਾ" + +#: ../gtk/gtkcalendar.c:483 +msgid "The selected month (as a number between 0 and 11)" +msgstr "ਚੁਣਿਆ ਮਹੀਨਾ (ਇੱਕ ਨੰਬਰ 0 ਅਤੇ 11 ਵਿੱਚੋਂ)" + +#: ../gtk/gtkcalendar.c:497 +msgid "Day" +msgstr "ਦਿਨ" + +#: ../gtk/gtkcalendar.c:498 +msgid "" +"The selected day (as a number between 1 and 31, or 0 to unselect the " +"currently selected day)" +msgstr "" +"ਚੁਣਿਆ ਦਿਨ ( ਇੱਕ ਨੰਬਰ 1 ਅਤੇ 31 ਵਿੱਚੋ, ਜਾਂ 0 ਮੌਜੂਦਾ ਚੁਣੇ ਦਿਨ ਨੂੰ ਰੱਦ ਕਰਨ ਲਈ)" + +#: ../gtk/gtkcalendar.c:512 +msgid "Show Heading" +msgstr "ਹੈਡਿੰਗ ਵੇਖਾਓ" + +#: ../gtk/gtkcalendar.c:513 +msgid "If TRUE, a heading is displayed" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਹੈਡਿੰਗ ਦਿੱਸੇਗਾ" + +#: ../gtk/gtkcalendar.c:527 +msgid "Show Day Names" +msgstr "ਦਿਨ ਦੇ ਨਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtkcalendar.c:528 +msgid "If TRUE, day names are displayed" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਦਿਨ ਦਾ ਨਾਂ ਵਿਖਾਈ ਦੇਵੇਗਾ" + +#: ../gtk/gtkcalendar.c:541 +msgid "No Month Change" +msgstr "ਕੋਈ ਮਹੀਨਾ ਨਾ ਬਦਲੋ" + +#: ../gtk/gtkcalendar.c:542 +msgid "If TRUE, the selected month cannot be changed" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਕੋਈ ਮਹੀਨਾ ਨਹੀਂ ਬਦਲ ਸਕੇਗਾ" + +#: ../gtk/gtkcalendar.c:556 +msgid "Show Week Numbers" +msgstr "ਹਫਤਾ ਨੰਬਰ ਵੇਖਾਓ" + +#: ../gtk/gtkcalendar.c:557 +msgid "If TRUE, week numbers are displayed" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਹਫਤੇ ਦਾ ਨੰਬਰ ਦਿੱਸੇਗਾ" + +#: ../gtk/gtkcalendar.c:572 +msgid "Details Width" +msgstr "ਵੇਰਵਾ ਚੌੜਾਈ" + +#: ../gtk/gtkcalendar.c:573 +msgid "Details width in characters" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਵੇਰਵਾ ਚੌੜਾਈ" + +#: ../gtk/gtkcalendar.c:588 +msgid "Details Height" +msgstr "ਵੇਰਵਾ ਉਚਾਈ" + +#: ../gtk/gtkcalendar.c:589 +msgid "Details height in rows" +msgstr "ਕਤਾਰਾਂ ਵਿੱਚ ਵੇਰਵੇ ਦੀ ਉਚਾਈ" + +#: ../gtk/gtkcalendar.c:605 +msgid "Show Details" +msgstr "ਵੇਰਵਾ ਵੇਖੋ" + +#: ../gtk/gtkcalendar.c:606 +msgid "If TRUE, details are shown" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਵੇਰਵਾ ਵੇਖੋ" + +#: ../gtk/gtkcalendar.c:618 +msgid "Inner border" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtkcalendar.c:619 +msgid "Inner border space" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ ਥਾਂ" + +#: ../gtk/gtkcalendar.c:630 +msgid "Vertical separation" +msgstr "ਲੰਬਕਾਰ ਵੱਖਰੇਵਾਂ" + +#: ../gtk/gtkcalendar.c:631 +msgid "Space between day headers and main area" +msgstr "ਦਿਨ ਹੈੱਡਰ ਤੇ ਮੁੱਖ ਖੇਤਰ ਵਿੱਚ ਥਾਂ" + +#: ../gtk/gtkcalendar.c:642 +msgid "Horizontal separation" +msgstr "ਹਰੀਜੱਟਲ ਵੱਖਰੇਵਾਂ" + +#: ../gtk/gtkcalendar.c:643 +msgid "Space between week headers and main area" +msgstr "ਹਫ਼ਤਾ ਹੈੱਡਰ ਤੇ ਮੁੱਖ ਖੇਤਰ ਵਿੱਚ ਫਾਸਲਾ" + +#: ../gtk/gtkcellareabox.c:319 ../gtk/gtktreeviewcolumn.c:269 +msgid "Space which is inserted between cells" +msgstr "ਸੈੱਲਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਥਾਂ" + +#: ../gtk/gtkcellareabox.c:339 +msgid "Whether the cell expands" +msgstr "ਕੀ ਸੈੱਲ ਫੈਲਾਉਣਾ ਹੈ" + +#: ../gtk/gtkcellareabox.c:354 +msgid "Align" +msgstr "ਇਕਸਾਰ" + +#: ../gtk/gtkcellareabox.c:355 +msgid "Whether cell should align with adjacent rows" +msgstr "ਕੀ ਸੈੱਲ ਗੁਆਂਡੀ ਕਤਾਰਾਂ ਮੁਤਾਬਕ ਇਕਸਾਰ ਹੋਵੇ" + +#: ../gtk/gtkcellareabox.c:371 +msgid "Fixed Size" +msgstr "ਸਥਿਰ ਆਕਾਰ" + +#: ../gtk/gtkcellareabox.c:372 +msgid "Whether cells should be the same size in all rows" +msgstr "ਕੀ ਸੈੱਲ ਸਭ ਕਤਾਰਾਂ ਵਿੱਚ ਇੱਕੋ ਆਕਾਰ ਦੇ ਹੋਣ" + +#: ../gtk/gtkcellareabox.c:388 +msgid "Pack Type" +msgstr "ਪੈਕ ਕਿਸਮ" + +#: ../gtk/gtkcellareabox.c:389 +msgid "" +"A GtkPackType indicating whether the cell is packed with reference to the " +"start or end of the cell area" +msgstr "" +"ਇਹ GtkPackType ਵੇਖਾ ਰਿਹਾ ਹੈ ਕਿ ਸੈੱਲ ਨੂੰ ਸੈੱਲ ਖੇਤਰ ਦੇ ਸ਼ੁਰੂ ਜ਼ਾਂ ਅਖੀਰ ਵਿੱਚ ਪੈਕ " +"ਕੀਤਾ ਜਾਏ" + +#: ../gtk/gtkcellarea.c:773 +msgid "Focus Cell" +msgstr "ਫੋਕਸ ਸੈੱਲ" + +#: ../gtk/gtkcellarea.c:774 +msgid "The cell which currently has focus" +msgstr "ਸੈੱਲ, ਜੋ ਇਸ ਸਮੇਂ ਫੋਕਸ ਹੈ" + +#: ../gtk/gtkcellarea.c:792 +msgid "Edited Cell" +msgstr "ਸੋਧਯੋਗ ਸੈੱਲ" + +#: ../gtk/gtkcellarea.c:793 +msgid "The cell which is currently being edited" +msgstr "ਸੈੱਲ, ਜੋ ਇਸ ਸਮੇਂ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkcellarea.c:811 +msgid "Edit Widget" +msgstr "ਵਿਦਜੈੱਟ ਸੋਧ" + +#: ../gtk/gtkcellarea.c:812 +msgid "The widget currently editing the edited cell" +msgstr "ਵਿਦਜੈੱਟ, ਜੋ ਸੋਧੇ ਜਾ ਰਹੇ ਸੈੱਲ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkcellareacontext.c:127 +msgid "Area" +msgstr "ਖੇਤਰ" + +#: ../gtk/gtkcellareacontext.c:128 +msgid "The Cell Area this context was created for" +msgstr "ਸੈੱਲ ਖੇਤਰ, ਜਿਸ ਲਈ ਇਕ ਪਰਸੰਗ ਬਣਾਇਆ ਗਿਆ ਸੀ" + +#: ../gtk/gtkcellareacontext.c:144 ../gtk/gtkcellareacontext.c:163 +#: ../gtk/gtktreeviewcolumn.c:296 +msgid "Minimum Width" +msgstr "ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" + +#: ../gtk/gtkcellareacontext.c:145 ../gtk/gtkcellareacontext.c:164 +msgid "Minimum cached width" +msgstr "ਘੱਟੋ-ਘੱਟ ਕੈਸ਼ ਕੀਤੀ ਚੌੜਾਈ" + +#: ../gtk/gtkcellareacontext.c:182 ../gtk/gtkcellareacontext.c:201 +msgid "Minimum Height" +msgstr "ਘੱਟੋ-ਘੱਟ ਉਚਾਈ" + +#: ../gtk/gtkcellareacontext.c:183 ../gtk/gtkcellareacontext.c:202 +msgid "Minimum cached height" +msgstr "ਘੱਟੋ-ਘੱਟ ਕੈਸ਼ ਕੀਤੀ ਉਚਾਈ" + +#: ../gtk/gtkcelleditable.c:53 +msgid "Editing Canceled" +msgstr "ਸੋਧ ਰੱਦ ਕੀਤੀ" + +#: ../gtk/gtkcelleditable.c:54 +msgid "Indicates that editing has been canceled" +msgstr "ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸੋਧਣ ਨੂੰ ਰੱਦ ਕੀਤਾ ਗਿਆ ਹੈ" + +#: ../gtk/gtkcellrendereraccel.c:137 +msgid "Accelerator key" +msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚ" + +#: ../gtk/gtkcellrendereraccel.c:138 +msgid "The keyval of the accelerator" +msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਸਵਿੱਚ-ਮੁੱਲ" + +#: ../gtk/gtkcellrendereraccel.c:154 +msgid "Accelerator modifiers" +msgstr "ਐਕਸਰਲੇਟਰ ਸੋਧਕ" + +#: ../gtk/gtkcellrendereraccel.c:155 +msgid "The modifier mask of the accelerator" +msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਸੋਧਕ ਮਾਸਕ" + +#: ../gtk/gtkcellrendereraccel.c:172 +msgid "Accelerator keycode" +msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚ-ਕੋਡ" + +#: ../gtk/gtkcellrendereraccel.c:173 +msgid "The hardware keycode of the accelerator" +msgstr "ਐਕਸਰਲੇਟਰ ਲਈ ਜੰਤਰ ਸਵਿੱਚ-ਕੋਡ" + +#: ../gtk/gtkcellrendereraccel.c:192 +msgid "Accelerator Mode" +msgstr "ਐਕਸਰਲੇਟਰ ਢੰਗ" + +#: ../gtk/gtkcellrendereraccel.c:193 +msgid "The type of accelerators" +msgstr "ਐਕਸਰਲੇਟਰ ਦੀ ਕਿਸਮ" + +#: ../gtk/gtkcellrenderer.c:272 +msgid "mode" +msgstr "ਢੰਗ" + +#: ../gtk/gtkcellrenderer.c:273 +msgid "Editable mode of the CellRenderer" +msgstr "CellRenderer ਦਾ ਸੋਧਣਯੋਗ ਮੋਡ" + +#: ../gtk/gtkcellrenderer.c:281 +msgid "visible" +msgstr "ਦਿੱਖ" + +#: ../gtk/gtkcellrenderer.c:282 +msgid "Display the cell" +msgstr "ਸੈਲ ਵੇਖਾਓ" + +#: ../gtk/gtkcellrenderer.c:289 +msgid "Display the cell sensitive" +msgstr "ਸੈਲ ਸੰਵੇਦਸ਼ੀਲ ਵੇਖਾਓ" + +#: ../gtk/gtkcellrenderer.c:296 +msgid "xalign" +msgstr "x ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkcellrenderer.c:297 +msgid "The x-align" +msgstr "x-ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkcellrenderer.c:306 +msgid "yalign" +msgstr "y ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkcellrenderer.c:307 +msgid "The y-align" +msgstr "y-ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkcellrenderer.c:316 +msgid "xpad" +msgstr "xpad" + +#: ../gtk/gtkcellrenderer.c:317 +msgid "The xpad" +msgstr "xpad" + +#: ../gtk/gtkcellrenderer.c:326 +msgid "ypad" +msgstr "ypad" + +#: ../gtk/gtkcellrenderer.c:327 +msgid "The ypad" +msgstr "ypad" + +#: ../gtk/gtkcellrenderer.c:336 +msgid "width" +msgstr "ਚੌੜਾਈ" + +#: ../gtk/gtkcellrenderer.c:337 +msgid "The fixed width" +msgstr "ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" + +#: ../gtk/gtkcellrenderer.c:346 +msgid "height" +msgstr "ਉਚਾਈ" + +#: ../gtk/gtkcellrenderer.c:347 +msgid "The fixed height" +msgstr "ਨਿਸ਼ਚਿਤ ਉਚਾਈ" + +#: ../gtk/gtkcellrenderer.c:356 +msgid "Is Expander" +msgstr "ਫੈਲਣਯੋਗ ਹੈ" + +#: ../gtk/gtkcellrenderer.c:357 +msgid "Row has children" +msgstr "ਕਤਾਰ ਵਿੱਚ ਚਾਇਲਡਰਨ ਹਨ" + +#: ../gtk/gtkcellrenderer.c:365 +msgid "Is Expanded" +msgstr "ਫੈਲ ਗਿਆ ਹੈ" + +#: ../gtk/gtkcellrenderer.c:366 +msgid "Row is an expander row, and is expanded" +msgstr "ਕਤਾਰ ਇੱਕ ਫੈਲਣਯੋਗ ਕਤਾਰ ਹੈ ਅਤੇ ਫੈਲ ਗਈ ਹੈ" + +#: ../gtk/gtkcellrenderer.c:373 +msgid "Cell background color name" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਦਾ ਨਾਂ" + +#: ../gtk/gtkcellrenderer.c:374 +msgid "Cell background color as a string" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ ਸਤਰ ਵਾਂਗ" + +#: ../gtk/gtkcellrenderer.c:381 +msgid "Cell background color" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + +#: ../gtk/gtkcellrenderer.c:382 +msgid "Cell background color as a GdkColor" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkColor ਵਾਂਗ" + +#: ../gtk/gtkcellrenderer.c:395 +msgid "Cell background RGBA color" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ RGBA ਰੰਗ" + +#: ../gtk/gtkcellrenderer.c:396 +msgid "Cell background color as a GdkRGBA" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderer.c:403 +msgid "Editing" +msgstr "ਸੋਧ ਜਾਰੀ" + +#: ../gtk/gtkcellrenderer.c:404 +msgid "Whether the cell renderer is currently in editing mode" +msgstr "ਕੀ ਸੋਧ ਢੰਗ ਵਿੱਚ ਮੌਜੂਦਾ ਸੈੱਲ ਰੈਡਰਿੰਗ ਹੋਵੇ" + +#: ../gtk/gtkcellrenderer.c:412 +msgid "Cell background set" +msgstr "ਸੈਲ ਬੈਕਗਰਾਊਂਡ ਦਿਓ" + +#: ../gtk/gtkcellrenderer.c:413 +msgid "Whether this tag affects the cell background color" +msgstr "ਕੀ ਇਹ ਟੈਗ ਸੈਲ਼ ਦੀ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ" + +#: ../gtk/gtkcellrenderercombo.c:109 +msgid "Model" +msgstr "ਮਾਡਲ" + +#: ../gtk/gtkcellrenderercombo.c:110 +msgid "The model containing the possible values for the combo box" +msgstr "ਮਾਡਲ ਕੰਬੋ-ਬਾਕਸ ਲਈ ਸੰਭਵ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" + +#: ../gtk/gtkcellrenderercombo.c:132 +msgid "Text Column" +msgstr "ਟੈਕਸਟ ਕਾਲਮ" + +#: ../gtk/gtkcellrenderercombo.c:133 +msgid "A column in the data source model to get the strings from" +msgstr "ਕਾਲਮ ਡੈਟਾ-ਸਰੋਤ ਮਾਡਲ ਵਿੱਚ ਸਤਰਾਂ ਇਸ ਤੋਂ ਪਰਾਪਤ ਕਰੇਗਾ" + +#: ../gtk/gtkcellrenderercombo.c:150 ../gtk/gtkcombobox.c:858 +msgid "Has Entry" +msgstr "ਇੰਦਰਾਜ਼ ਹੈ" + +#: ../gtk/gtkcellrenderercombo.c:151 +msgid "If FALSE, don't allow to enter strings other than the chosen ones" +msgstr "ਜੇਕਰ ਗਲਤ ਹੋਇਆ ਤਾਂ, ਇਹ ਚੁਣਿਆਂ ਤੋਂ ਬਿਨਾਂ ਸਤਰ ਦੇਣ ਨੂੰ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰੇਗਾ" + +#: ../gtk/gtkcellrendererpixbuf.c:120 +msgid "Pixbuf Object" +msgstr "ਪਿਕਬਫ ਆਬਜੈਕਟ" + +#: ../gtk/gtkcellrendererpixbuf.c:121 +msgid "The pixbuf to render" +msgstr "ਪੇਸ਼ ਕਰਨ ਲਈ ਪਿਕਬੱਫ" + +#: ../gtk/gtkcellrendererpixbuf.c:128 +msgid "Pixbuf Expander Open" +msgstr "ਪਿਕਬੱਪ ਐਕਸਪੈਡਰ ਖੋਲ੍ਹੋ" + +#: ../gtk/gtkcellrendererpixbuf.c:129 +msgid "Pixbuf for open expander" +msgstr "ਖੁੱਲੇ ਐਕਸਪੈਡਰ ਲਈ ਪਿਕਬੱਪ" + +#: ../gtk/gtkcellrendererpixbuf.c:136 +msgid "Pixbuf Expander Closed" +msgstr "ਪਿਕਬੱਪ ਐਕਸਪੈਡਰ ਬੰਦ" + +#: ../gtk/gtkcellrendererpixbuf.c:137 +msgid "Pixbuf for closed expander" +msgstr "ਬੰਦ ਐਕਸਪੈਡਰ ਲਈ ਪਿਕਬੱਪ" + +#: ../gtk/gtkcellrendererpixbuf.c:144 ../gtk/gtkimage.c:253 +#: ../gtk/gtkstatusicon.c:220 +msgid "Stock ID" +msgstr "ਸਟਾਕ ID" + +#: ../gtk/gtkcellrendererpixbuf.c:145 +msgid "The stock ID of the stock icon to render" +msgstr "ਪੇਸ਼ ਕਰਨ ਲਈ ਸਟਾਕ ਆਈਕਾਨ ਦਾ ਸਟਾਕ ID" + +#: ../gtk/gtkcellrendererpixbuf.c:152 ../gtk/gtkcellrendererspinner.c:151 +#: ../gtk/gtkrecentmanager.c:309 ../gtk/gtkstatusicon.c:261 msgid "Size" msgstr "ਅਕਾਰ" -#: ../gtk/gtkfilechooserdefault.c:4382 -msgid "Modified" -msgstr "ਸੋਧੀਆਂ" +#: ../gtk/gtkcellrendererpixbuf.c:153 +msgid "The GtkIconSize value that specifies the size of the rendered icon" +msgstr "GtkIconSize ਮੁੱਲ ਜੋ ਕਿ ਪੇਸ਼ ਆਈਕਾਨ ਦਾ ਆਕਾਰ ਸੈੱਟ ਕਰਦਾ ਹੈ" -#. Label -#: ../gtk/gtkfilechooserdefault.c:4637 ../gtk/gtkprinteroptionwidget.c:801 -msgid "_Name:" -msgstr "ਨਾਂ(_N):" +#: ../gtk/gtkcellrendererpixbuf.c:162 +msgid "Detail" +msgstr "ਵੇਰਵਾ" -#: ../gtk/gtkfilechooserdefault.c:4680 -msgid "_Browse for other folders" -msgstr "ਹੋਰ ਫੋਲਡਰਾਂ ਲਈ ਝਲਕ(_B)" +#: ../gtk/gtkcellrendererpixbuf.c:163 +msgid "Render detail to pass to the theme engine" +msgstr "ਸਰੂਪ ਇੰਜਣ ਨੂੰ ਦੇਣ ਲਈ ਪੇਸ਼ਕਾਰੀ ਵੇਰਵਾ" -#: ../gtk/gtkfilechooserdefault.c:4950 -msgid "Type a file name" -msgstr "ਇੱਕ ਫਾਇਲ ਨਾਂ ਦਿਓ" +#: ../gtk/gtkcellrendererpixbuf.c:196 +msgid "Follow State" +msgstr "ਅੱਗੇ ਹਾਲਤ" -#. Create Folder -#: ../gtk/gtkfilechooserdefault.c:4993 -msgid "Create Fo_lder" -msgstr "ਫੋਲਡਰ ਬਣਾਓ(_l)" +#: ../gtk/gtkcellrendererpixbuf.c:197 +msgid "Whether the rendered pixbuf should be colorized according to the state" +msgstr "ਕੀ ਪੇਸ਼ਕਾਰੀ ਪਿਕਬਫ਼ਰ ਨੂੰ ਹਾਲਤ ਦੇ ਅਨੁਸਾਰ ਰੰਗਦਾਰ ਬਣਾਉਣਾ ਹੈ" -#: ../gtk/gtkfilechooserdefault.c:5003 -msgid "_Location:" -msgstr "ਟਿਕਾਣਾ(_L):" +#: ../gtk/gtkcellrendererpixbuf.c:214 ../gtk/gtkimage.c:328 +#: ../gtk/gtkwindow.c:698 +msgid "Icon" +msgstr "ਆਈਕਾਨ" -#: ../gtk/gtkfilechooserdefault.c:5207 -msgid "Save in _folder:" -msgstr "ਫੋਲਡਰ ਵਿੱਚ ਸੰਭਾਲੋ(_f):" +#: ../gtk/gtkcellrendererprogress.c:127 +msgid "Value of the progress bar" +msgstr "ਤਰੱਕੀ ਪੱਟੀ ਦਾ ਮੁੱਲ" -#: ../gtk/gtkfilechooserdefault.c:5209 -msgid "Create in _folder:" -msgstr "ਫੋਲਡਰ ਵਿੱਚ ਬਣਾਓ(_f):" +#: ../gtk/gtkcellrendererprogress.c:144 ../gtk/gtkcellrenderertext.c:255 +#: ../gtk/gtkentry.c:830 ../gtk/gtkentrybuffer.c:352 +#: ../gtk/gtkmessagedialog.c:227 ../gtk/gtkprogressbar.c:177 +#: ../gtk/gtktextbuffer.c:210 +msgid "Text" +msgstr "ਪਾਠ" -#: ../gtk/gtkfilechooserdefault.c:6261 -#, c-format -msgid "Could not read the contents of %s" -msgstr "%s ਦੀ ਸਮੱਗਰੀ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ" +#: ../gtk/gtkcellrendererprogress.c:145 +msgid "Text on the progress bar" +msgstr "ਤਰੱਕੀ ਪੱਟੀ ਉੱਤੇ ਪਾਠ" -#: ../gtk/gtkfilechooserdefault.c:6265 -msgid "Could not read the contents of the folder" -msgstr "ਫੋਲਡਰ ਦੀ ਸਮੱਗਰੀ ਪੜ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ" +#: ../gtk/gtkcellrendererprogress.c:168 ../gtk/gtkcellrendererspinner.c:137 +msgid "Pulse" +msgstr "ਲਹਿਰ" -#: ../gtk/gtkfilechooserdefault.c:6358 ../gtk/gtkfilechooserdefault.c:6426 -#: ../gtk/gtkfilechooserdefault.c:6571 -msgid "Unknown" -msgstr "ਅਣਜਾਣ" - -#: ../gtk/gtkfilechooserdefault.c:6373 -msgid "%H:%M" -msgstr "%H:%M" - -#: ../gtk/gtkfilechooserdefault.c:6375 -msgid "Yesterday at %H:%M" -msgstr "%H:%M ਵਜੇ ਕੱਲ੍ਹ" - -#: ../gtk/gtkfilechooserdefault.c:7041 -msgid "Cannot change to folder because it is not local" -msgstr "ਫੋਲਡਰ ਨੂੰ ਬਦਲਿਆ ਨਹੀਂ ਕਰ ਸਕਿਆ, ਕਿਉਂਕਿ ਇਹ ਲੋਕਲ ਨਹੀਂ ਹੈ" - -#: ../gtk/gtkfilechooserdefault.c:7638 ../gtk/gtkfilechooserdefault.c:7659 -#, c-format -msgid "Shortcut %s already exists" -msgstr "ਸ਼ਾਰਟਕੱਟ %s ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" - -#: ../gtk/gtkfilechooserdefault.c:7749 -#, c-format -msgid "Shortcut %s does not exist" -msgstr "ਸ਼ਾਰਟਕੱਟ %s ਮੌਜੂਦ ਨਹੀਂ ਹੈ" - -#: ../gtk/gtkfilechooserdefault.c:8010 ../gtk/gtkprintunixdialog.c:480 -#, c-format -msgid "A file named \"%s\" already exists. Do you want to replace it?" -msgstr "ਇੱਕ ਫਾਇਲ ਨਾਂ \"%s\" ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#: ../gtk/gtkfilechooserdefault.c:8013 ../gtk/gtkprintunixdialog.c:484 -#, c-format -msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." -msgstr "ਫਾਇਲ ਪਹਿਲਾਂ ਹੀ \"%s\" ਵਿੱਚ ਮੌਜੂਦ ਹੈ। ਇਸ ਨੂੰ ਇਸ ਦੇ ਸਭ ਭਾਗਾਂ ਸਮੇਤ ਬਦਲਿਆ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" - -#: ../gtk/gtkfilechooserdefault.c:8018 ../gtk/gtkprintunixdialog.c:491 -msgid "_Replace" -msgstr "ਬਦਲੋ(_R)" - -#: ../gtk/gtkfilechooserdefault.c:8718 -msgid "Could not start the search process" -msgstr "ਖੋਜ ਕਾਰਵਾਈ ਨੂੰ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkfilechooserdefault.c:8719 +#: ../gtk/gtkcellrendererprogress.c:169 msgid "" -"The program was not able to create a connection to the indexer daemon. " -"Please make sure it is running." -msgstr "ਪਰੋਗਰਾਮ ਤਤਕਰਾ ਡੈਮਨ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫ਼ਲ ਹੈ। ਜਾਂਚ ਲਵੋ ਕਿ ਇਹ ਚੱਲ ਰਹੀ ਹੈ।" +"Set this to positive values to indicate that some progress is made, but you " +"don't know how much." +msgstr "" +"ਇਸ ਲਈ ਧਨਾਤਮਕ ਮੁੱਲ ਦਿਓ, ਜੋ ਕਿ ਕੁਝ ਹੋਈ ਤਰੱਕੀ ਨੂੰ ਵੇਖਾਏ, ਪਰ ਤੁਸੀਂ ਨਹੀਂ ਜਾਣਦੇ ਕਿ " +"ਕਿੰਨੀ।" -#: ../gtk/gtkfilechooserdefault.c:8733 -msgid "Could not send the search request" -msgstr "ਖੋਜ ਮੰਗ ਭੇਜੀ ਨਹੀਂ ਜਾ ਸਕੀ" +#: ../gtk/gtkcellrendererprogress.c:185 +msgid "Text x alignment" +msgstr "ਪਾਠ x -ਸ਼ਫ਼ਬੰਦੀ" -#: ../gtk/gtkfilechooserdefault.c:8921 -msgid "Search:" -msgstr "ਖੋਜ:" +#: ../gtk/gtkcellrendererprogress.c:186 +msgid "" +"The horizontal text alignment, from 0 (left) to 1 (right). Reversed for RTL " +"layouts." +msgstr "" +"ਖਿਤਿਜੀ ਟੈਕਸਟ ਸਫ਼ਬੰਦੀ, 0 (ਖੱਬਿਓ) ਤੋਂ 1 (ਸੱਜੇ) ਹੈ। RTL ਲੇਆਉਟ ਲਈ ਰਾਖਵਾਂ ਹੈ।" -#: ../gtk/gtkfilechooserdefault.c:9526 -#, c-format -msgid "Could not mount %s" -msgstr "%s ਮਾਊਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +#: ../gtk/gtkcellrendererprogress.c:202 +msgid "Text y alignment" +msgstr "ਪਾਠ y -ਸ਼ਫ਼ਬੰਦੀ" -#. Translators: this is shown in the feedback for Tab-completion in a file -#. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1169 -msgid "Invalid path" -msgstr "ਗਲਤ ਪਾਥ" +#: ../gtk/gtkcellrendererprogress.c:203 +msgid "The vertical text alignment, from 0 (top) to 1 (bottom)." +msgstr "ਲੰਬਕਾਰੀ ਸ਼ਫ਼ਬੰਦੀ, 0 (ਉਤੋਂ) ਤੋਂ 1 (ਹੇਠਾਂ) ਹੈ।" -#. translators: this text is shown when there are no completions -#. * for something the user typed in a file chooser entry -#. -#: ../gtk/gtkfilechooserentry.c:1101 -msgid "No match" -msgstr "ਕੋਈ ਮੇਲ ਨਹੀਂ" +#: ../gtk/gtkcellrendererprogress.c:214 ../gtk/gtkprogressbar.c:153 +#: ../gtk/gtkrange.c:424 +msgid "Inverted" +msgstr "ਬਦਲਵਾਂ" -#. translators: this text is shown when there is exactly one completion -#. * for something the user typed in a file chooser entry -#. -#: ../gtk/gtkfilechooserentry.c:1112 -msgid "Sole completion" -msgstr "ਪੂਰਾ ਮੁਕੰਮਲ" +#: ../gtk/gtkcellrendererprogress.c:215 ../gtk/gtkprogressbar.c:154 +msgid "Invert the direction in which the progress bar grows" +msgstr "ਤਰੱਕੀ-ਪੱਟੀ ਦੇ ਵੱਧਣ ਦੀ ਦਿਸ਼ਾ ਨੂੰ ਉਲਟਾ ਕਰੋ" -#. translators: this text is shown when the text in a file chooser -#. * entry is a complete filename, but could be continued to find -#. * a longer match -#. -#: ../gtk/gtkfilechooserentry.c:1128 -msgid "Complete, but not unique" -msgstr "ਪੂਰਾ, ਪਰ ਵਿਲੱਖਣ ਨਹੀਂ" +#: ../gtk/gtkcellrendererspin.c:91 ../gtk/gtkrange.c:416 +#: ../gtk/gtkscalebutton.c:236 ../gtk/gtkspinbutton.c:320 +msgid "Adjustment" +msgstr "ਅਨਕੂਲਤਾ" -#. Translators: this text is shown while the system is searching -#. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1160 -msgid "Completing..." -msgstr "...ਪੂਰਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrendererspin.c:92 ../gtk/gtkspinbutton.c:321 +msgid "The adjustment that holds the value of the spin button" +msgstr "ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਸਪਿਨ-ਬਟਨ ਦਾ ਮੁੱਲ ਰੱਖਦੀ ਹੈ" -#. hostnames in a local_only file chooser? user error -#. Translators: this is shown in the feedback for Tab-completion in a -#. * file chooser's text entry when the user enters something like -#. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1182 ../gtk/gtkfilechooserentry.c:1207 -msgid "Only local files may be selected" -msgstr "ਕੇਵਲ ਲੋਕਲ ਫਾਇਲਾਂ ਹੀ ਚੁਣੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ" +#: ../gtk/gtkcellrendererspin.c:107 +msgid "Climb rate" +msgstr "ਚੜ੍ਹਨ ਦਰ" -#. Another option is to complete the hostname based on the remote volumes that are mounted -#. Translators: this is shown in the feedback for Tab-completion in a -#. * file chooser's text entry when the user hasn't entered the first '/' -#. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1191 -msgid "Incomplete hostname; end it with '/'" -msgstr "ਅਧੂਰਾ ਹੋਸਟ ਨਾਂ, '/' ਨਾਲ ਅੰਤ" +#: ../gtk/gtkcellrendererspin.c:108 ../gtk/gtkspinbutton.c:329 +msgid "The acceleration rate when you hold down a button" +msgstr "ਬਟਨ ਨੂੰ ਦਬਾਕੇ ਰੱਖਣ ਤੇ ਐਕਸਲੇਸ਼ਨ" -#. Translators: this is shown in the feedback for Tab-completion in a file -#. * chooser's text entry when the user enters a path that does not exist -#. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1202 -msgid "Path does not exist" -msgstr "ਪਾਥ ਮੌਜੂਦ ਨਹੀਂ" +#: ../gtk/gtkcellrendererspin.c:121 ../gtk/gtkscale.c:253 +#: ../gtk/gtkspinbutton.c:338 +msgid "Digits" +msgstr "ਅੰਕ" -#: ../gtk/gtkfilechoosersettings.c:486 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "ਫੋਲਡਰ '%s' ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ: %s" +#: ../gtk/gtkcellrendererspin.c:122 ../gtk/gtkspinbutton.c:339 +msgid "The number of decimal places to display" +msgstr "ਵੇਖਾਉਣ ਲਈ ਦਸ਼ਮਲਵ ਅੰਕਾਂ ਦੀ ਗਿਣਤੀ" -#. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are -#. * really pointers to GDrive, GVolume or GMount objects. We need an extra -#. * token for the fake "File System" volume. So, we'll return a pointer to -#. * this particular string. -#. -#: ../gtk/gtkfilesystem.c:48 -msgid "File System" -msgstr "ਫਾਇਲ ਸਿਸਟਮ" +#: ../gtk/gtkcellrendererspinner.c:119 ../gtk/gtkcheckmenuitem.c:106 +#: ../gtk/gtkmenu.c:586 ../gtk/gtkspinner.c:118 ../gtk/gtkswitch.c:752 +#: ../gtk/gtktoggleaction.c:133 ../gtk/gtktogglebutton.c:125 +#: ../gtk/gtktoggletoolbutton.c:112 +msgid "Active" +msgstr "ਸਰਗਰਮ" -#: ../gtk/gtkfontbutton.c:142 ../gtk/gtkfontbutton.c:266 -msgid "Pick a Font" -msgstr "ਇੱਕ ਫੋਂਟ ਚੁਣੋ" +#: ../gtk/gtkcellrendererspinner.c:120 +msgid "Whether the spinner is active (ie. shown) in the cell" +msgstr "ਕੀ ਸੈੱਲ ਵਿੱਚ ਸਪਿੱਨਰ ਐਕਟਿਵ ਹੋਵੇ (ਜਿਵੇਂ ਵੇਖਾਇਆ)" -#. Initialize fields -#: ../gtk/gtkfontbutton.c:260 -msgid "Sans 12" -msgstr "Sans ੧੨" +#: ../gtk/gtkcellrendererspinner.c:138 +msgid "Pulse of the spinner" +msgstr "ਸਪਿੱਨਰ ਦੀ ਪਲਸ" -#: ../gtk/gtkfontbutton.c:785 +#: ../gtk/gtkcellrendererspinner.c:152 +msgid "The GtkIconSize value that specifies the size of the rendered spinner" +msgstr "GtkIconSize ਮੁੱਲ ਜੋ ਕਿ ਰੈਂਡਰ ਕੀਤੇ ਸਪਿੱਨਰ ਦਾ ਆਕਾਰ ਹੈ" + +#: ../gtk/gtkcellrenderertext.c:256 +msgid "Text to render" +msgstr "ਪੇਸ਼ਕਾਰੀ ਪਾਠ" + +#: ../gtk/gtkcellrenderertext.c:263 +msgid "Markup" +msgstr "ਨਿਸ਼ਾਨਬੱਧ" + +#: ../gtk/gtkcellrenderertext.c:264 +msgid "Marked up text to render" +msgstr "ਪੇਸ਼ਕਾਰੀ ਲਈ ਟੈਕਸਟ ਦੀ ਨਿਸ਼ਾਨਬੰਦੀ" + +#: ../gtk/gtkcellrenderertext.c:271 ../gtk/gtklabel.c:574 +msgid "Attributes" +msgstr "ਗੁਣ" + +#: ../gtk/gtkcellrenderertext.c:272 +msgid "A list of style attributes to apply to the text of the renderer" +msgstr "ਪੇਸ਼ ਕਰਨ ਲਈ ਟੈਕਸਟ ਲਈ ਜਾਰੀ ਸਟਾਇਲ ਗੁਣਾਂ ਦੀ ਲਿਸਟ ਹੈ" + +#: ../gtk/gtkcellrenderertext.c:279 +msgid "Single Paragraph Mode" +msgstr "ਇੱਕ ਪੈਰਾ ਮੋਡ" + +#: ../gtk/gtkcellrenderertext.c:280 +msgid "Whether to keep all text in a single paragraph" +msgstr "ਕੀ ਸਾਰੇ ਟੈਕਸਟ ਨੂੰ ਇੱਕੋ ਪ੍ਹੈਰੇ ਵਿੱਚ ਰੱਖਣਾ ਹੈ" + +#: ../gtk/gtkcellrenderertext.c:288 ../gtk/gtkcellview.c:189 +#: ../gtk/gtktexttag.c:196 +msgid "Background color name" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:289 ../gtk/gtkcellview.c:190 +#: ../gtk/gtktexttag.c:197 +msgid "Background color as a string" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ ਸਤਰ ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:296 ../gtk/gtkcellview.c:196 +#: ../gtk/gtktexttag.c:204 +msgid "Background color" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + +#: ../gtk/gtkcellrenderertext.c:297 ../gtk/gtkcellview.c:197 +msgid "Background color as a GdkColor" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkColor ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:311 +msgid "Background color as RGBA" +msgstr "RGBA ਵਜੋਂ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:312 ../gtk/gtkcellview.c:211 +msgid "Background color as a GdkRGBA" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਇੱਕ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:318 ../gtk/gtktexttag.c:220 +msgid "Foreground color name" +msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:319 ../gtk/gtktexttag.c:221 +msgid "Foreground color as a string" +msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਇੱਕ ਸਤਰ ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:326 ../gtk/gtktexttag.c:228 +#: ../gtk/gtktrayicon-x11.c:134 +msgid "Foreground color" +msgstr "ਫਾਰਗਰਾਊਂਡ ਰੰਗ" + +#: ../gtk/gtkcellrenderertext.c:327 +msgid "Foreground color as a GdkColor" +msgstr "ਫਾਰਗਰਾਊਂਡ GdkColor ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:341 +msgid "Foreground color as RGBA" +msgstr "RGBA ਵਜੋਂ ਫਾਰਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtkcellrenderertext.c:342 +msgid "Foreground color as a GdkRGBA" +msgstr "ਫਾਰਗਰਾਊਂਡ GdkRGBA ਵਾਂਗ" + +#: ../gtk/gtkcellrenderertext.c:350 ../gtk/gtkentry.c:754 +#: ../gtk/gtktexttag.c:245 ../gtk/gtktextview.c:686 +msgid "Editable" +msgstr "ਸੋਧਯੋਗ" + +#: ../gtk/gtkcellrenderertext.c:351 ../gtk/gtktexttag.c:246 +#: ../gtk/gtktextview.c:687 +msgid "Whether the text can be modified by the user" +msgstr "ਕੀ ਟੈਕਸਟ ਵਰਤਣਵਾਲਾ ਸੋਧ ਸਕੇ ਜਾਂ ਨਾ" + +#: ../gtk/gtkcellrenderertext.c:358 ../gtk/gtkcellrenderertext.c:366 +#: ../gtk/gtktexttag.c:261 ../gtk/gtktexttag.c:269 msgid "Font" -msgstr "ਫੋਂਟ" +msgstr "ਫੋਟ" -#. This is the default text shown in the preview entry, though the user -#. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 -msgid "abcdefghijk ABCDEFGHIJK" -msgstr "abcdefghijk ABCDEFGHIJK" +#: ../gtk/gtkcellrenderertext.c:359 ../gtk/gtktexttag.c:262 +msgid "Font description as a string, e.g. \"Sans Italic 12\"" +msgstr "ਫੋਂਟ ਵਰਨਣ ਇੱਕ ਸਤਰ ਦੀ ਤਰਾਂ ਜਿਵੇ ਕਿ \"ਸੇਨਸ਼ ਇਟਾਲਿਕ 12\"" -#: ../gtk/gtkfontsel.c:370 -msgid "_Family:" -msgstr "ਫੈਮਲੀ(_F):" +#: ../gtk/gtkcellrenderertext.c:367 ../gtk/gtktexttag.c:270 +msgid "Font description as a PangoFontDescription struct" +msgstr "ਫੋਂਟ ਦਾ ਵੇਰਵਾ PangoFontDescription ਢਾਚੇ ਵਾਂਗ" -#: ../gtk/gtkfontsel.c:376 -msgid "_Style:" -msgstr "ਸਟਾਇਲ(_S):" +#: ../gtk/gtkcellrenderertext.c:375 ../gtk/gtktexttag.c:277 +msgid "Font family" +msgstr "ਫੋਂਟ ਸਮੂਹ" -#: ../gtk/gtkfontsel.c:382 -msgid "Si_ze:" -msgstr "ਅਕਾਰ(_z):" +#: ../gtk/gtkcellrenderertext.c:376 ../gtk/gtktexttag.c:278 +msgid "Name of the font family, e.g. Sans, Helvetica, Times, Monospace" +msgstr "ਫੋਂਟ ਸਮੂਹ ਦਾ ਨਾਂ, ਜਿਵੇ ਕਿ ਸੰਨਜ, ਟਾਇਮਜ਼, ਮੋਨੋਸਪੇਸ" -#. create the text entry widget -#: ../gtk/gtkfontsel.c:559 -msgid "_Preview:" -msgstr "ਝਲਕ(_P):" +#: ../gtk/gtkcellrenderertext.c:383 ../gtk/gtkcellrenderertext.c:384 +#: ../gtk/gtktexttag.c:285 +msgid "Font style" +msgstr "ਫੋਂਟ ਸਟਾਇਲ" -#: ../gtk/gtkfontsel.c:1659 -msgid "Font Selection" -msgstr "ਫੋਂਟ ਚੋਣ" +#: ../gtk/gtkcellrenderertext.c:392 ../gtk/gtkcellrenderertext.c:393 +#: ../gtk/gtktexttag.c:294 +msgid "Font variant" +msgstr "ਫੋਂਟ ਬਦਲ" -#. Remove this icon source so we don't keep trying to -#. * load it. -#. -#: ../gtk/gtkiconfactory.c:1356 -#, c-format -msgid "Error loading icon: %s" -msgstr "ਆਈਕਾਨ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ: %s" +#: ../gtk/gtkcellrenderertext.c:401 ../gtk/gtkcellrenderertext.c:402 +#: ../gtk/gtktexttag.c:303 +msgid "Font weight" +msgstr "ਫੋਂਟ ਵੇਟ" -#: ../gtk/gtkicontheme.c:1354 -#, c-format +#: ../gtk/gtkcellrenderertext.c:411 ../gtk/gtkcellrenderertext.c:412 +#: ../gtk/gtktexttag.c:314 +msgid "Font stretch" +msgstr "ਫੋਂਟ ਤਣਾਅ" + +#: ../gtk/gtkcellrenderertext.c:420 ../gtk/gtkcellrenderertext.c:421 +#: ../gtk/gtktexttag.c:323 +msgid "Font size" +msgstr "ਫੋਂਟ ਅਕਾਰ" + +#: ../gtk/gtkcellrenderertext.c:430 ../gtk/gtktexttag.c:343 +msgid "Font points" +msgstr "ਫੋਂਟ ਬਿੰਦੂ" + +#: ../gtk/gtkcellrenderertext.c:431 ../gtk/gtktexttag.c:344 +msgid "Font size in points" +msgstr "ਫੋਂਟ ਅਕਾਰ ਪੁਆਇਟ ਵਿੱਚ" + +#: ../gtk/gtkcellrenderertext.c:440 ../gtk/gtktexttag.c:333 +msgid "Font scale" +msgstr "ਫੋਂਟ ਸਕੇਲ" + +#: ../gtk/gtkcellrenderertext.c:441 +msgid "Font scaling factor" +msgstr "ਫੋਂਟ ਸਕੇਲਿੰਗ ਫੈਕਟਰ" + +#: ../gtk/gtkcellrenderertext.c:450 ../gtk/gtktexttag.c:412 +msgid "Rise" +msgstr "ਉਭਰੋ" + +#: ../gtk/gtkcellrenderertext.c:451 msgid "" -"Could not find the icon '%s'. The '%s' theme\n" -"was not found either, perhaps you need to install it.\n" -"You can get a copy from:\n" -"\t%s" -msgstr "" -"ਆਈਕਾਨ '%s' ਨਹੀਂ ਲੱਭਿਆ. ਜਾਂ ਸਰੂਪ '%s'\n" -"ਹੀ ਲੱਭਿਆ, ਜਾਂ ਸ਼ਾਇਦ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਇੰਸਟਾਲ ਕਰਨਾ ਪਵੇ\n" -"ਤੁਸੀਂ ਇਸ ਦੀ ਕਾਪੀ ਇਥੋਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ:\n" -"\t%s" +"Offset of text above the baseline (below the baseline if rise is negative)" +msgstr "ਟੈਕਸਟ ਦਾ ਮੁੱਖ-ਸਤਰ ਤੋਂ ਉੱਤੇ ਸੰਤੁਲਨ (ਮੁੱਖ-ਸਤਰ ਤੋਂ ਹੇਠਾਂ ਉਭਾਰ ਰਿਣਾਤਮਕ ਹੈ)" -#: ../gtk/gtkicontheme.c:1535 -#, c-format -msgid "Icon '%s' not present in theme" -msgstr "ਥੀਮ ਵਿੱਚ ਆਈਕਾਨ '%s' ਮੌਜੂਦ ਨਹੀਂ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:462 ../gtk/gtktexttag.c:452 +msgid "Strikethrough" +msgstr "ਵਿੰਨ੍ਹੋ" -#: ../gtk/gtkicontheme.c:3048 -msgid "Failed to load icon" -msgstr "ਆਈਕਾਨ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" +#: ../gtk/gtkcellrenderertext.c:463 ../gtk/gtktexttag.c:453 +msgid "Whether to strike through the text" +msgstr "ਕੀ ਟੈਕਸਟ ਨੂੰ ਵਿੱਚੋਂ ਵਿੰਨ੍ਹਣਾ ਹੈ" -#: ../gtk/gtkimmodule.c:526 -msgid "Simple" -msgstr "ਸੈਂਪਲ" +#: ../gtk/gtkcellrenderertext.c:470 ../gtk/gtktexttag.c:460 +msgid "Underline" +msgstr "ਹੇਠਾਂ ਲਾਈਨ" -#: ../gtk/gtkimmulticontext.c:588 -msgctxt "input method menu" -msgid "System" -msgstr "ਸਿਸਟਮ" +#: ../gtk/gtkcellrenderertext.c:471 ../gtk/gtktexttag.c:461 +msgid "Style of underline for this text" +msgstr "ਇਸ ਟੈਕਸਟ ਦੇ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚਣ ਦਾ ਸਟਾਇਲ" -#: ../gtk/gtkimmulticontext.c:598 -msgctxt "input method menu" -msgid "None" -msgstr "ਕੋਈ ਨਹੀਂ" +#: ../gtk/gtkcellrenderertext.c:479 ../gtk/gtktexttag.c:372 +msgid "Language" +msgstr "ਭਾਸ਼ਾ" -#: ../gtk/gtkimmulticontext.c:681 -#, c-format -msgctxt "input method menu" -msgid "System (%s)" -msgstr "ਸਿਸਟਮ (%s)" - -#. Open Link -#: ../gtk/gtklabel.c:6202 -msgid "_Open Link" -msgstr "ਲਿੰਕ ਖੋਲ੍ਹੋ(_O)" - -#. Copy Link Address -#: ../gtk/gtklabel.c:6214 -msgid "Copy _Link Address" -msgstr "ਲਿੰਕ ਐਡਰੈੱਸ ਕਾਪੀ ਕਰੋ(_L)" - -#: ../gtk/gtklinkbutton.c:449 -msgid "Copy URL" -msgstr "URL ਕਾਪੀ ਕਰੋ" - -#: ../gtk/gtklinkbutton.c:601 -msgid "Invalid URI" -msgstr "ਗਲਤ URI" - -#. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:526 -msgid "Load additional GTK+ modules" -msgstr "ਵਾਧੂ GTK+ ਮੋਡੀਊਲ ਲੋਡ ਕਰੋ" - -#. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:527 -msgid "MODULES" -msgstr "ਮੋਡੀਊਲ" - -#. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:529 -msgid "Make all warnings fatal" -msgstr "ਸਭ ਚੇਤਾਵਨੀਆਂ ਨੂੰ ਘਾਤਕ ਬਣਾਓ" - -#. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:532 -msgid "GTK+ debugging flags to set" -msgstr "ਸੈੱਟ ਕਰਨ ਲਈ GTK+ ਡੀਬੱਗਿੰਗ ਨਿਸ਼ਾਨ" - -#. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:535 -msgid "GTK+ debugging flags to unset" -msgstr "ਅਣ-ਸੈੱਟ ਕਰਨ ਲਈ GTK+ ਡੀਬੱਗਿੰਗ ਨਿਸ਼ਾਨ" - -#. Translate to default:RTL if you want your widgets -#. * to be RTL, otherwise translate to default:LTR. -#. * Do *not* translate it to "predefinito:LTR", if it -#. * it isn't default:LTR or default:RTL it will not work -#. -#: ../gtk/gtkmain.c:798 -msgid "default:LTR" -msgstr "default:LTR" - -#: ../gtk/gtkmain.c:863 -#, c-format -msgid "Cannot open display: %s" -msgstr "ਦਿੱਖ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ: %s" - -#: ../gtk/gtkmain.c:922 -msgid "GTK+ Options" -msgstr "GTK+ ਚੋਣ" - -#: ../gtk/gtkmain.c:922 -msgid "Show GTK+ Options" -msgstr "GTK+ ਚੋਣ ਵੇਖੋ" - -#: ../gtk/gtkmountoperation.c:491 -msgid "Co_nnect" -msgstr "ਕੁਨੈਕਟ ਕਰੋ(_n)" - -#: ../gtk/gtkmountoperation.c:558 -msgid "Connect _anonymously" -msgstr "ਅਗਿਆਤ ਢੰਗ ਨਾਲ ਕੁਨੈਕਟ ਕਰੋ(_a)" - -#: ../gtk/gtkmountoperation.c:567 -msgid "Connect as u_ser:" -msgstr "ਯੂਜ਼ਰ ਵਾਂਗ ਕੁਨੈਕਟ(_s):" - -#: ../gtk/gtkmountoperation.c:605 -msgid "_Username:" -msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):" - -#: ../gtk/gtkmountoperation.c:610 -msgid "_Domain:" -msgstr "ਡੋਮੇਨ(_D):" - -#: ../gtk/gtkmountoperation.c:616 -msgid "_Password:" -msgstr "ਪਾਸਵਰਡ(_P):" - -#: ../gtk/gtkmountoperation.c:634 -msgid "Forget password _immediately" -msgstr "ਪਾਸਵਰਡ ਤੁਰੰਤ ਭੁੱਲ ਜਾਓ(_i)" - -#: ../gtk/gtkmountoperation.c:644 -msgid "Remember password until you _logout" -msgstr "ਜਦੋਂ ਤੱਕ ਲਾਗਆਉਟ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ(_l)" - -#: ../gtk/gtkmountoperation.c:654 -msgid "Remember _forever" -msgstr "ਹਮੇਸ਼ਾਂ ਯਾਦ ਰੱਖੋ(_f)" - -#: ../gtk/gtkmountoperation.c:883 -#, c-format -msgid "Unknown Application (PID %d)" -msgstr "ਅਣਜਾਣ ਐਪਲੀਕੇਸ਼ਨ (PID %d)" - -#: ../gtk/gtkmountoperation.c:1066 -msgid "Unable to end process" -msgstr "ਪਰੋਸੈਸ ਖਤਮ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" - -#: ../gtk/gtkmountoperation.c:1103 -msgid "_End Process" -msgstr "ਪਰੋਸੈਸ ਖਤਮ(_E)" - -#: ../gtk/gtkmountoperation-stub.c:64 -#, c-format -msgid "Cannot kill process with PID %d. Operation is not implemented." -msgstr "PID %d ਵਾਲਾ ਪਰੋਸੈਸ ਖਤਮ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਓਪਰੇਸ਼ਨ ਬਣਾਇਆ ਨਹੀਂ।" - -#. translators: this string is a name for the 'less' command -#: ../gtk/gtkmountoperation-x11.c:862 -msgid "Terminal Pager" -msgstr "ਟਰਮੀਨਲ ਪੇਜ਼ਰ" - -#: ../gtk/gtkmountoperation-x11.c:863 -msgid "Top Command" -msgstr "ਟਾਪ ਕਮਾਂਡ" - -#: ../gtk/gtkmountoperation-x11.c:864 -msgid "Bourne Again Shell" -msgstr "ਬਰਾਊਨ ਅਗੇਨ ਸ਼ੈੱਲ" - -#: ../gtk/gtkmountoperation-x11.c:865 -msgid "Bourne Shell" -msgstr "ਬਰਾਊਨ ਸ਼ੈੱਲ" - -#: ../gtk/gtkmountoperation-x11.c:866 -msgid "Z Shell" -msgstr "Z ਸ਼ੈੱਲ" - -#: ../gtk/gtkmountoperation-x11.c:963 -#, c-format -msgid "Cannot end process with PID %d: %s" -msgstr "PID %d ਨਾਲ ਪਰੋਸੈਸ ਖਤਮ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ: %s" - -#: ../gtk/gtknotebook.c:4690 ../gtk/gtknotebook.c:7241 -#, c-format -msgid "Page %u" -msgstr "ਸਫ਼ਾ %u" - -#: ../gtk/gtkpagesetup.c:596 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 -msgid "Not a valid page setup file" -msgstr "ਇੱਕ ਠੀਕ ਸਫ਼ਾ ਸੈੱਟਅੱਪ ਫਾਇਲ ਨਹੀਂ" - -#: ../gtk/gtkpagesetupunixdialog.c:179 -msgid "Any Printer" -msgstr "ਕੋਈ ਵੀ ਪਰਿੰਟਰ" - -#: ../gtk/gtkpagesetupunixdialog.c:179 -msgid "For portable documents" -msgstr "ਪੋਰਟੇਬਲ ਡੌਕੂਮੈਂਟਾਂ ਲਈ" - -#: ../gtk/gtkpagesetupunixdialog.c:809 -#, c-format +#: ../gtk/gtkcellrenderertext.c:480 msgid "" -"Margins:\n" -" Left: %s %s\n" -" Right: %s %s\n" -" Top: %s %s\n" -" Bottom: %s %s" +"The language this text is in, as an ISO code. Pango can use this as a hint " +"when rendering the text. If you don't understand this parameter, you " +"probably don't need it" msgstr "" -"ਹਾਸ਼ੀਆ:\n" -" ਖੱਬੇ: %s %s\n" -" ਸੱਜੇ: %s %s\n" -" ਉੱਤੇ: %s %s\n" -" ਹੇਠਾਂ: %s %s" +"ਭਾਸ਼ਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਕੋਡ ਹੈ, ਦਾ ISO ਕੋਡ ਹੈ, ਟੈਕਸਟ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਪੈਨਗੋ ਦੀ " +"ਉਦਾਹਰਨ ਲਈ ਜਾ " +"ਸਕਦੀ ਹੈ, ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਹੀਂ ਸਮਝ ਸਕੇ ਤਾਂ ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਵੀ " +"ਨਹੀਂ ਹੈ " -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3284 -msgid "Manage Custom Sizes..." -msgstr "...ਪਸੰਦੀਦਾ ਅਕਾਰ ਪਰਬੰਧ" +#: ../gtk/gtkcellrenderertext.c:500 ../gtk/gtklabel.c:699 +#: ../gtk/gtkprogressbar.c:217 +msgid "Ellipsize" +msgstr "ਅੰਡਕਾਰ-ਅਕਾਰ" -#: ../gtk/gtkpagesetupunixdialog.c:909 -msgid "_Format for:" -msgstr "ਫਾਰਮੈਟ(_F):" +#: ../gtk/gtkcellrenderertext.c:501 +msgid "" +"The preferred place to ellipsize the string, if the cell renderer does not " +"have enough room to display the entire string" +msgstr "" +"ਅੰਡਾਕਾਰ-ਅਕਾਰ ਸਤਰ ਦੀ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਸੈਲ ਕੋਈ ਪੂਰੀ ਸਤਰ ਨੂੰ ਵੇਖਾਉਣ ਲਈ ਲੋੜੀਦੀ " +"ਥਾਂ ਨਾ ਹੋਵੇ" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3456 -msgid "_Paper size:" -msgstr "ਸਫ਼ਾ ਆਕਾਰ(_P):" +#: ../gtk/gtkcellrenderertext.c:520 ../gtk/gtkfilechooserbutton.c:411 +#: ../gtk/gtklabel.c:720 +msgid "Width In Characters" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" -#: ../gtk/gtkpagesetupunixdialog.c:962 -msgid "_Orientation:" -msgstr "ਸਥਿਤੀ(_O):" +#: ../gtk/gtkcellrenderertext.c:521 ../gtk/gtklabel.c:721 +msgid "The desired width of the label, in characters" +msgstr "ਲੇਬਲ ਦੀ ਲੋੜੀਦੀ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3518 -msgid "Page Setup" -msgstr "ਸਫ਼ਾ ਸੈੱਟਅੱਪ" +#: ../gtk/gtkcellrenderertext.c:545 ../gtk/gtklabel.c:781 +msgid "Maximum Width In Characters" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkpathbar.c:154 -msgid "Up Path" -msgstr "ਉੱਤੇ ਮਾਰਗ" +#: ../gtk/gtkcellrenderertext.c:546 +msgid "The maximum width of the cell, in characters" +msgstr "ਸੈੱਲ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" -#: ../gtk/gtkpathbar.c:156 -msgid "Down Path" -msgstr "ਹੇਠਾਂ ਮਾਰਗ" +#: ../gtk/gtkcellrenderertext.c:564 ../gtk/gtktexttag.c:469 +msgid "Wrap mode" +msgstr "ਸਮੇਟਣ ਢੰਗ" -#: ../gtk/gtkpathbar.c:1497 -msgid "File System Root" -msgstr "ਫਾਇਲ ਸਿਸਟਮ ਰੂਟ" +#: ../gtk/gtkcellrenderertext.c:565 +msgid "" +"How to break the string into multiple lines, if the cell renderer does not " +"have enough room to display the entire string" +msgstr "" +"ਲਾਈਨਾਂ ਨੂੰ ਬਹੁ-ਲਾਈਨਾਂ ਵਿੱਚ ਕਿਵੇਂ ਵੰਡਿਆ ਜਾਵੇ, ਜੇਕਰ ਸੈਲ ਕੋਲ ਲਾਈਨਾਂ ਨੂੰ ਵਿਖਾਉਣ " +"ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਨਾ " +"ਹੋਵੇ।" -#: ../gtk/gtkprintbackend.c:749 -msgid "Authentication" -msgstr "ਪਰਮਾਣਕਿਤਾ" +#: ../gtk/gtkcellrenderertext.c:584 ../gtk/gtkcombobox.c:680 +msgid "Wrap width" +msgstr "ਚੌੜਾਈ ਨੂੰ ਲੇਪਟੋ" -#: ../gtk/gtkprinteroptionwidget.c:694 -msgid "Not available" -msgstr "ਉਪਲੱਬਧ ਨਹੀਂ" +#: ../gtk/gtkcellrenderertext.c:585 +msgid "The width at which the text is wrapped" +msgstr "ਚੌੜਾਈ, ਜਿਸ ਨਾਲ ਟੈਕਸਟ ਸਮੇਟਿਆ ਜਾਵੇਗਾ" -#: ../gtk/gtkprinteroptionwidget.c:794 -msgid "Select a folder" -msgstr "ਫੋਲਡਰ ਚੁਣੋ" +#: ../gtk/gtkcellrenderertext.c:605 ../gtk/gtktreeviewcolumn.c:349 +msgid "Alignment" +msgstr "ਸ਼ਫਬੰਦੀ" -#: ../gtk/gtkprinteroptionwidget.c:813 -msgid "_Save in folder:" -msgstr "ਫੋਲਡਰ ਵਿੱਚ ਸੰਭਾਲੋ(_S):" +#: ../gtk/gtkcellrenderertext.c:606 +msgid "How to align the lines" +msgstr "ਲਾਈਨਾਂ ਨੂੰ ਇਕਸਾਰ ਕਿਵੇਂ ਕਰਨਾ ਹੈ" -#. translators: this string is the default job title for print -#. * jobs. %s gets replaced by the application name, %d gets replaced -#. * by the job number. -#. -#: ../gtk/gtkprintoperation.c:190 -#, c-format -msgid "%s job #%d" -msgstr "%s ਜਾਬ #%d" +#: ../gtk/gtkcellrenderertext.c:618 ../gtk/gtkcellview.c:312 +#: ../gtk/gtktexttag.c:558 +msgid "Background set" +msgstr "ਬੈਕਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtkprintoperation.c:1695 -msgctxt "print operation status" -msgid "Initial state" -msgstr "ਸ਼ੁਰੂਆਤੀ ਹਾਲਤ" +#: ../gtk/gtkcellrenderertext.c:619 ../gtk/gtkcellview.c:313 +#: ../gtk/gtktexttag.c:559 +msgid "Whether this tag affects the background color" +msgstr "ਕੀ ਇਹ ਟੈਗ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:1696 -msgctxt "print operation status" -msgid "Preparing to print" -msgstr "ਛਾਪਣ ਲਈ ਤਿਆਰੀ" +#: ../gtk/gtkcellrenderertext.c:622 ../gtk/gtktexttag.c:566 +msgid "Foreground set" +msgstr "ਫਾਰ-ਗਰਾਊਂਡ ਦਿਓ" -#: ../gtk/gtkprintoperation.c:1697 -msgctxt "print operation status" -msgid "Generating data" -msgstr "ਡਾਟਾ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:623 ../gtk/gtktexttag.c:567 +msgid "Whether this tag affects the foreground color" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫਾਰ-ਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:1698 -msgctxt "print operation status" -msgid "Sending data" -msgstr "ਡਾਟਾ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:626 ../gtk/gtktexttag.c:570 +msgid "Editability set" +msgstr "ਸੋਧਣਯੋਗਤਾ ਦਿਓ" -#: ../gtk/gtkprintoperation.c:1699 -msgctxt "print operation status" -msgid "Waiting" -msgstr "ਉਡੀਕ ਜਾਰੀ" +#: ../gtk/gtkcellrenderertext.c:627 ../gtk/gtktexttag.c:571 +msgid "Whether this tag affects text editability" +msgstr "ਕੀ ਇਹ ਟੈਕਸਟ ਸੋਧਣਯੋਗਤਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:1700 -msgctxt "print operation status" -msgid "Blocking on issue" -msgstr "ਮੁੱਦੇ ਉੱਤੇ ਰੋਕੋ" +#: ../gtk/gtkcellrenderertext.c:630 ../gtk/gtktexttag.c:574 +msgid "Font family set" +msgstr "ਫੋਂਟ ਸਮੂਹ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation.c:1701 -msgctxt "print operation status" -msgid "Printing" -msgstr "ਛਾਪਿਆ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:631 ../gtk/gtktexttag.c:575 +msgid "Whether this tag affects the font family" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਸਮੂਹ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:1702 -msgctxt "print operation status" -msgid "Finished" -msgstr "ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:634 ../gtk/gtktexttag.c:578 +msgid "Font style set" +msgstr "ਫੋਂਟ ਸਟਾਇਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation.c:1703 -msgctxt "print operation status" -msgid "Finished with error" -msgstr "ਗਲਤੀ ਨਾਲ ਪੂਰਾ ਹੋਇਆ" +#: ../gtk/gtkcellrenderertext.c:635 ../gtk/gtktexttag.c:579 +msgid "Whether this tag affects the font style" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਸਟਾਇਲ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:2270 -#, c-format -msgid "Preparing %d" -msgstr "%d ਲਈ ਤਿਆਰੀ" +#: ../gtk/gtkcellrenderertext.c:638 ../gtk/gtktexttag.c:582 +msgid "Font variant set" +msgstr "ਫੋਂਟ ਬਦਲ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 -msgid "Preparing" -msgstr "ਤਿਆਰੀ" +#: ../gtk/gtkcellrenderertext.c:639 ../gtk/gtktexttag.c:583 +msgid "Whether this tag affects the font variant" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਤਬਦੀਲੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:2275 -#, c-format -msgid "Printing %d" -msgstr "%d ਪਰਿੰਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:642 ../gtk/gtktexttag.c:586 +msgid "Font weight set" +msgstr "ਫੋਂਟ ਵੇਟ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation.c:2932 -msgid "Error creating print preview" -msgstr "ਪਰਿੰਟ ਝਲਕ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" +#: ../gtk/gtkcellrenderertext.c:643 ../gtk/gtktexttag.c:587 +msgid "Whether this tag affects the font weight" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਫੈਲਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation.c:2935 -msgid "The most probable reason is that a temporary file could not be created." -msgstr "ਸਭ ਤੋਂ ਵੱਧ ਸੰਭਵਾਨਾ ਹੈ ਕਿ ਆਰਜ਼ੀ ਫਾਇਲ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕੀ।" +#: ../gtk/gtkcellrenderertext.c:646 ../gtk/gtktexttag.c:590 +msgid "Font stretch set" +msgstr "ਫੋਂਟ ਤਣਾਅ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-unix.c:297 -msgid "Error launching preview" -msgstr "ਝਲਕ ਵੇਖਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" +#: ../gtk/gtkcellrenderertext.c:647 ../gtk/gtktexttag.c:591 +msgid "Whether this tag affects the font stretch" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਤਣਾਅ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 -msgid "Application" -msgstr "ਐਪਲੀਕੇਸ਼ਨ" +#: ../gtk/gtkcellrenderertext.c:650 ../gtk/gtktexttag.c:594 +msgid "Font size set" +msgstr "ਫੋਂਟ ਆਕਾਰ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-win32.c:611 -msgid "Printer offline" -msgstr "ਪਰਿੰਟਰ ਬੰਦ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:651 ../gtk/gtktexttag.c:595 +msgid "Whether this tag affects the font size" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਆਕਾਰ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:613 -msgid "Out of paper" -msgstr "ਪੇਪਰ ਖਤਮ ਹੋ ਗਏ" +#: ../gtk/gtkcellrenderertext.c:654 ../gtk/gtktexttag.c:598 +msgid "Font scale set" +msgstr "ਫੋਂਟ ਸਕੇਲ ਸੈੱਟ ਕਰੋ" -#. Translators: this is a printer status. -#: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 -msgid "Paused" -msgstr "ਵਿਰਾਮ" +#: ../gtk/gtkcellrenderertext.c:655 ../gtk/gtktexttag.c:599 +msgid "Whether this tag scales the font size by a factor" +msgstr "ਕੀ ਇਹ ਟੈਗ ਫੋਂਟ ਅਕਾਰ ਨੂੰ ਗੁਣਾਂਕ ਪੈਮਾਨਾ ਨਾਲ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:617 -msgid "Need user intervention" -msgstr "ਯੂਜ਼ਰ ਦੇ ਦਖਲ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:658 ../gtk/gtktexttag.c:618 +msgid "Rise set" +msgstr "ਉਭਾਰਨਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-win32.c:717 -msgid "Custom size" -msgstr "ਕਸਟਮ ਅਕਾਰ" +#: ../gtk/gtkcellrenderertext.c:659 ../gtk/gtktexttag.c:619 +msgid "Whether this tag affects the rise" +msgstr "ਕੀ ਇਹ ਟੈਗ ਉਭਾਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:1539 -msgid "No printer found" -msgstr "ਕੋਈ ਪਰਿੰਟਰ ਨਹੀਂ ਲੱਭਿਆ" +#: ../gtk/gtkcellrenderertext.c:662 ../gtk/gtktexttag.c:634 +msgid "Strikethrough set" +msgstr "ਵਿੰਨ੍ਹਣਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-win32.c:1566 -msgid "Invalid argument to CreateDC" -msgstr "CreateDC ਲਈ ਗਲਤ ਆਰਗੂਮੈਂਟ" +#: ../gtk/gtkcellrenderertext.c:663 ../gtk/gtktexttag.c:635 +msgid "Whether this tag affects strikethrough" +msgstr "ਕੀ ਇਹ ਟੈਗ ਵਿੰਨ੍ਹਣ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:1602 ../gtk/gtkprintoperation-win32.c:1829 -msgid "Error from StartDoc" -msgstr "StartDoc ਤੋਂ ਗਲਤੀ" +#: ../gtk/gtkcellrenderertext.c:666 ../gtk/gtktexttag.c:642 +msgid "Underline set" +msgstr "ਹੇਠਾਂ ਲਾਈਨ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-win32.c:1684 ../gtk/gtkprintoperation-win32.c:1707 -#: ../gtk/gtkprintoperation-win32.c:1755 -msgid "Not enough free memory" -msgstr "ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਖਾਲੀ ਨਹੀਂ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:667 ../gtk/gtktexttag.c:643 +msgid "Whether this tag affects underlining" +msgstr "ਕੀ ਇਹ ਟੈਗ ਹੇਠਾਂ ਲਾਈਨ ਖਿੱਚਣ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:1760 -msgid "Invalid argument to PrintDlgEx" -msgstr "PrintDlgEx ਲਈ ਗਲਤ ਮੁੱਲ" +#: ../gtk/gtkcellrenderertext.c:670 ../gtk/gtktexttag.c:606 +msgid "Language set" +msgstr "ਭਾਸ਼ਾ ਸੈੱਟ ਕਰੋ" -#: ../gtk/gtkprintoperation-win32.c:1765 -msgid "Invalid pointer to PrintDlgEx" -msgstr "PrintDlgEx ਲਈ ਗਲਤ ਸੰਕੇਤਕ" +#: ../gtk/gtkcellrenderertext.c:671 ../gtk/gtktexttag.c:607 +msgid "Whether this tag affects the language the text is rendered as" +msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਕਸਟ ਪੇਸ਼ ਕਰਨ ਦੀ ਭਾਸ਼ਾ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintoperation-win32.c:1770 -msgid "Invalid handle to PrintDlgEx" -msgstr "PrintDlgEx ਲਈ ਗਲਤ ਹੈਂਡਲ" +#: ../gtk/gtkcellrenderertext.c:674 +msgid "Ellipsize set" +msgstr "ਅੰਡਾਕਾਰ-ਅਕਾਰ ਦਿਓ" -#: ../gtk/gtkprintoperation-win32.c:1775 -msgid "Unspecified error" -msgstr "ਨਾ-ਦੱਸੀ ਗਲਤੀ" +#: ../gtk/gtkcellrenderertext.c:675 +msgid "Whether this tag affects the ellipsize mode" +msgstr "ਕੀ ਅੰਡਾਕਾਰਅਕਾਰ ਢੰਗ ਇਸ ਟੈਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintunixdialog.c:618 -msgid "Getting printer information failed" -msgstr "ਪਰਿੰਟਰ ਲਈ ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ ਫੇਲ੍ਹ" +#: ../gtk/gtkcellrenderertext.c:678 +msgid "Align set" +msgstr "ਸ਼ਫਬੰਦੀ ਸੈੱਟ" -#: ../gtk/gtkprintunixdialog.c:1873 -msgid "Getting printer information..." -msgstr "...ਪਰਿੰਟਰ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ" +#: ../gtk/gtkcellrenderertext.c:679 +msgid "Whether this tag affects the alignment mode" +msgstr "ਕੀ ਇਹ ਟੈਗ ਅੰਡਾਕਾਰਅਕਾਰ ਢੰਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" -#: ../gtk/gtkprintunixdialog.c:2139 -msgid "Printer" -msgstr "ਪਰਿੰਟਰ" +#: ../gtk/gtkcellrenderertoggle.c:128 +msgid "Toggle state" +msgstr "ਬਦਲਵੀਂ ਹਾਲਤ" -#. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkcellrenderertoggle.c:129 +msgid "The toggle state of the button" +msgstr "ਬਟਨ ਦੀ ਬਦਲਵੀ ਹਾਲਤ" + +#: ../gtk/gtkcellrenderertoggle.c:136 +msgid "Inconsistent state" +msgstr "ਅਸੰਗਤ ਹਾਲਤ" + +#: ../gtk/gtkcellrenderertoggle.c:137 +msgid "The inconsistent state of the button" +msgstr "ਬਟਨ ਦੀ ਅਸੰਗਤ ਸਥਿਤੀ" + +#: ../gtk/gtkcellrenderertoggle.c:144 +msgid "Activatable" +msgstr "ਸਰਗਰਮਯੋਗ " + +#: ../gtk/gtkcellrenderertoggle.c:145 +msgid "The toggle button can be activated" +msgstr "ਬਦਲਣਯੋਗ ਬਟਨ ਨੂੰ ਸਰਗਰਮਯੋਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkcellrenderertoggle.c:152 +msgid "Radio state" +msgstr "ਰੇਡੀਉ ਸਥਿਤੀ" + +#: ../gtk/gtkcellrenderertoggle.c:153 +msgid "Draw the toggle button as a radio button" +msgstr "ਬਦਲਣ ਵਾਲੇ ਬਟਨ ਨੂੰ ਰੇਡੀੳ ਬਟਨ ਵਿੱਚ ਤਬਦੀਲ ਕਰੋ" + +#: ../gtk/gtkcellrenderertoggle.c:160 +msgid "Indicator size" +msgstr "ਸੰਕੇਤਕ ਆਕਾਰ" + +#: ../gtk/gtkcellrenderertoggle.c:161 ../gtk/gtkcheckbutton.c:78 +#: ../gtk/gtkcheckmenuitem.c:130 +msgid "Size of check or radio indicator" +msgstr "ਚੈਕ ਜਾਂ ਰੇਡੀਓ ਸੰਕੇਤਕ ਦਾ ਆਕਾਰ" + +#: ../gtk/gtkcellview.c:210 +msgid "Background RGBA color" +msgstr "ਬੈਕਗਰਾਊਂਡ RGBA ਰੰਗ" + +#: ../gtk/gtkcellview.c:225 +msgid "CellView model" +msgstr "ਸੈੱਲ-ਝਲਕ ਮਾਡਲ" + +#: ../gtk/gtkcellview.c:226 +msgid "The model for cell view" +msgstr "ਸੈੱਲ ਝਲਕ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtkcellview.c:241 ../gtk/gtkcombobox.c:941 +#: ../gtk/gtkentrycompletion.c:426 ../gtk/gtkiconview.c:762 +#: ../gtk/gtktreemenu.c:329 ../gtk/gtktreeviewcolumn.c:409 +msgid "Cell Area" +msgstr "ਸੈੱਲ ਖੇਤਰ" + +#: ../gtk/gtkcellview.c:242 ../gtk/gtkcombobox.c:942 +#: ../gtk/gtkentrycompletion.c:427 ../gtk/gtkiconview.c:763 +#: ../gtk/gtktreemenu.c:330 ../gtk/gtktreeviewcolumn.c:410 +msgid "The GtkCellArea used to layout cells" +msgstr "ਸੈੱਲ ਲੇਆਉਟ ਲਈ ਵਰਤਣ ਵਾਸਤੇ GtkCellArea" + +#: ../gtk/gtkcellview.c:265 +msgid "Cell Area Context" +msgstr "ਸੈੱਲ ਖੇਤਰ ਪਰਸੰਗ" + +#: ../gtk/gtkcellview.c:266 +msgid "The GtkCellAreaContext used to compute the geometry of the cell view" +msgstr "ਸੈੱਲ ਝਲਕ ਦੀ ਜੁਮੈਟਰੀ ਕੱਢਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ GtkCellAreaContext" + +#: ../gtk/gtkcellview.c:283 +msgid "Draw Sensitive" +msgstr "ਸੰਵੇਦਨਸ਼ੀਲ ਬਣਾਓ" + +#: ../gtk/gtkcellview.c:284 +msgid "Whether to force cells to be drawn in a sensitive state" +msgstr "ਕੀ ਸੈੱਲਾਂ ਨੂੰ ਸੰਵੇਦਨਸ਼ੀਲ ਹਾਲਤ ਵਿੱਚ ਬਣਾਉਣ ਲਈ ਮਜ਼ਬੂਰ ਕਰਨਾ ਹੈ" + +#: ../gtk/gtkcellview.c:302 +msgid "Fit Model" +msgstr "ਫਿੱਟ ਮਾਡਲ" + +#: ../gtk/gtkcellview.c:303 +msgid "Whether to request enough space for every row in the model" +msgstr "ਕੀ ਮਾਡਲ ਵਿੱਚ ਹਰੇਕ ਕਤਾਰ ਲਈ ਲੋੜੀਦੀ ਥਾਂ ਦੀ ਮੰਗ ਕਰਨੀ ਹੈ" + +#: ../gtk/gtkcheckbutton.c:77 ../gtk/gtkcheckmenuitem.c:129 +msgid "Indicator Size" +msgstr "ਸੰਕੇਤਕ ਦਾ ਆਕਾਰ" + +#: ../gtk/gtkcheckbutton.c:85 ../gtk/gtkexpander.c:345 +msgid "Indicator Spacing" +msgstr "ਸੰਕੇਤਕ ਦੀ ਥਾਂ" + +#: ../gtk/gtkcheckbutton.c:86 +msgid "Spacing around check or radio indicator" +msgstr "ਚੈਕ ਜਾਂ ਰੇਡੀਓ ਸੰਕੇਤਕ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਥਾਂ" + +#: ../gtk/gtkcheckmenuitem.c:107 +msgid "Whether the menu item is checked" +msgstr "ਕੀ ਮੇਨੂ ਆਈਟਮ ਚੈੱਕ ਹੋ ਜਾਏ" + +#: ../gtk/gtkcheckmenuitem.c:114 ../gtk/gtktogglebutton.c:133 +msgid "Inconsistent" +msgstr "ਅਸੰਗਤ" + +#: ../gtk/gtkcheckmenuitem.c:115 +msgid "Whether to display an \"inconsistent\" state" +msgstr "ਕੀ \"ਅਸੰਗਤ\" ਸਥਿਤੀ ਵੇਖਾਈ ਜਾਏ" + +#: ../gtk/gtkcheckmenuitem.c:122 +msgid "Draw as radio menu item" +msgstr "ਰੇਡੀਓ ਮੇਨੂ ਆਈਟਮ ਬਣਾਓ" + +#: ../gtk/gtkcheckmenuitem.c:123 +msgid "Whether the menu item looks like a radio menu item" +msgstr "ਕੀ ਮੇਨੂ ਆਈਟਮ ਇੱਕ ਰੇਡੀਓ ਮੇਨੂ ਆਈਟਮ ਵਾਂਗ ਲੱਗੇ" + +#: ../gtk/gtkcolorbutton.c:170 +msgid "Use alpha" +msgstr "ਐਲਫਾ ਵਰਤੋ" + +#: ../gtk/gtkcolorbutton.c:171 +msgid "Whether to give the color an alpha value" +msgstr "ਕੀ ਰੰਗ ਨੂੰ ਐਲਫਾ ਮੁੱਲ ਦਿੱਤਾ ਜਾਵੇ ਜਾਂ ਨਾ" + +#: ../gtk/gtkcolorbutton.c:185 ../gtk/gtkfilechooserbutton.c:397 +#: ../gtk/gtkfontbutton.c:140 ../gtk/gtkprintjob.c:141 +#: ../gtk/gtkstatusicon.c:407 ../gtk/gtktreeviewcolumn.c:316 +msgid "Title" +msgstr "ਟਾਈਟਲ" + +#: ../gtk/gtkcolorbutton.c:186 +msgid "The title of the color selection dialog" +msgstr "ਰੰਗ ਚੁਣਨ ਵਾਲੀ ਤਖਤੀ ਦਾ ਟਾਈਟਲ" + +#: ../gtk/gtkcolorbutton.c:200 ../gtk/gtkcolorsel.c:338 +msgid "Current Color" +msgstr "ਮੌਜੂਦਾ ਰੰਗ" + +#: ../gtk/gtkcolorbutton.c:201 +msgid "The selected color" +msgstr "ਚੁਣਿਆ ਰੰਗ" + +#: ../gtk/gtkcolorbutton.c:215 ../gtk/gtkcolorsel.c:345 +msgid "Current Alpha" +msgstr "ਮੌਜੂਦਾ ਐਲਫਾ" + +#: ../gtk/gtkcolorbutton.c:216 +msgid "The selected opacity value (0 fully transparent, 65535 fully opaque)" +msgstr "ਚੁਣਿਆ ਧੁੰਦਲਾਪਨ (0 ਪੂਰੀ ਤਰਾਂ ਪਾਰਦਰਸ਼ੀ , 65535 ਪੂਰੀ ਤਰਾਂ ਧੁੰਦਲਾ)" + +#: ../gtk/gtkcolorbutton.c:230 +msgid "Current RGBA Color" +msgstr "ਮੌਜੂਦਾ RGBA ਰੰਗ" + +#: ../gtk/gtkcolorbutton.c:231 +msgid "The selected RGBA color" +msgstr "ਚੁਣਿਆ RGBA ਰੰਗ" + +#: ../gtk/gtkcolorsel.c:324 +msgid "Has Opacity Control" +msgstr "ਧੁੰਦਲਾਪਨ ਕੰਟਰੋਲ ਹੈ" + +#: ../gtk/gtkcolorsel.c:325 +msgid "Whether the color selector should allow setting opacity" +msgstr "ਕੀ ਰੰਗ ਚੋਣ ਧੁੰਦਕਾਪਨ ਦੀ ਸੈਟਿੰਗ ਵੇਖਾਵੇ" + +#: ../gtk/gtkcolorsel.c:331 +msgid "Has palette" +msgstr "ਰੰਗ-ਪੱਟੀ" + +#: ../gtk/gtkcolorsel.c:332 +msgid "Whether a palette should be used" +msgstr "ਕੀ ਰੰਗ-ਪੱਟੀ ਨੂੰ ਵਰਤਣਾ ਹੈ" + +#: ../gtk/gtkcolorsel.c:339 +msgid "The current color" +msgstr "ਮੌਜੂਦਾ ਰੰਗ" + +#: ../gtk/gtkcolorsel.c:346 +msgid "The current opacity value (0 fully transparent, 65535 fully opaque)" +msgstr "" +"ਮੌਜੂਦਾ ਧੁੰਦਲਾਪਨ ਦਾ ਮੁੱਲ (0 ਪੂਰੀ ਤਰਾਂ ਪਾਰਦਰਸ਼ੀ , 65535 ਪੂਰੀ ਤਰਾਂ ਧੁੰਦਲਾ)" + +#: ../gtk/gtkcolorsel.c:360 +msgid "Current RGBA" +msgstr "ਮੌਜੂਦਾ RGBA" + +#: ../gtk/gtkcolorsel.c:361 +msgid "The current RGBA color" +msgstr "ਮੌਜੂਦਾ RGBA ਰੰਗ" + +#: ../gtk/gtkcolorseldialog.c:110 +msgid "Color Selection" +msgstr "ਰੰਗ ਚੋਣ" + +#: ../gtk/gtkcolorseldialog.c:111 +msgid "The color selection embedded in the dialog." +msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਰੰਗ ਚੋਣ ਇੰਬੈੱਡ ਹੈ।" + +#: ../gtk/gtkcolorseldialog.c:117 +msgid "OK Button" +msgstr "ਠੀਕ ਹੈ ਬਟਨ" + +#: ../gtk/gtkcolorseldialog.c:118 +msgid "The OK button of the dialog." +msgstr "ਡਾਈਲਾਗ ਦਾ ਠੀਕ ਹੈ ਬਟਨ।" + +#: ../gtk/gtkcolorseldialog.c:124 +msgid "Cancel Button" +msgstr "ਰੱਦ ਕਰੋ ਬਟਨ" + +#: ../gtk/gtkcolorseldialog.c:125 +msgid "The cancel button of the dialog." +msgstr "ਡਾਈਲਾਗ ਦਾ ਰੱਦ ਕਰੋ ਬਟਨ ਹੈ।" + +#: ../gtk/gtkcolorseldialog.c:131 +msgid "Help Button" +msgstr "ਮੱਦਦ ਬਟਨ" + +#: ../gtk/gtkcolorseldialog.c:132 +msgid "The help button of the dialog." +msgstr "ਡਾਈਲਾਗ ਲਈ ਮੱਦਦ ਬਟਨ ਹੈ।" + +#: ../gtk/gtkcombobox.c:663 +msgid "ComboBox model" +msgstr "ਕੰਬੋ-ਬਾਕਸ ਮਾਡਲ" + +#: ../gtk/gtkcombobox.c:664 +msgid "The model for the combo box" +msgstr "ਕੰਬੋ-ਬਾਕਸ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtkcombobox.c:681 +msgid "Wrap width for laying out the items in a grid" +msgstr "ਗਰਿੱਡ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਲੇਪਟਣ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkcombobox.c:703 ../gtk/gtktreemenu.c:383 +msgid "Row span column" +msgstr "ਕਤਾਰ ਕਾਲਮ ਦਾ ਫਾਸਲਾ" + +#: ../gtk/gtkcombobox.c:704 ../gtk/gtktreemenu.c:384 +msgid "TreeModel column containing the row span values" +msgstr "ਟਰੀਮਾਡਲ ਕਾਲਮ ਵਿੱਚ ਕਤਾਰਾਂ ਦੇ ਵਿੱਚ ਦੂਰੀ ਦਾ ਮੁੱਲ" + +#: ../gtk/gtkcombobox.c:725 ../gtk/gtktreemenu.c:404 +msgid "Column span column" +msgstr "ਕਾਲਮ ਕਾਲਮ ਵਿੱਚ ਦੂਰੀ" + +#: ../gtk/gtkcombobox.c:726 ../gtk/gtktreemenu.c:405 +msgid "TreeModel column containing the column span values" +msgstr "ਟਰੀਮਾਡਲ ਕਾਲਮ ਵਿੱਚ ਕਾਲਮਾਂ ਦੇ ਵਿੱਚ ਦੂਰੀ ਦਾ ਮੁੱਲ" + +#: ../gtk/gtkcombobox.c:747 +msgid "Active item" +msgstr "ਸਰਗਰਮ ਆਈਟਮ" + +#: ../gtk/gtkcombobox.c:748 +msgid "The item which is currently active" +msgstr "ਆਈਟਮ, ਜੋ ਹੁਣ ਸਰਗਰਮ ਹੈ" + +#: ../gtk/gtkcombobox.c:767 ../gtk/gtkuimanager.c:225 +msgid "Add tearoffs to menus" +msgstr "ਵੱਖ-ਕਰਨ ਨੂੰ ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ" + +#: ../gtk/gtkcombobox.c:768 +msgid "Whether dropdowns should have a tearoff menu item" +msgstr "ਕੀ ਲਟਕਣ ਵਾਲੇ ਵੱਖ ਮੇਨੂ ਆਈਟਮਾਂ ਹੋਣ" + +#: ../gtk/gtkcombobox.c:783 ../gtk/gtkentry.c:779 +msgid "Has Frame" +msgstr "ਫਰੇਮ ਹੈ" + +#: ../gtk/gtkcombobox.c:784 +msgid "Whether the combo box draws a frame around the child" +msgstr "ਕੀ ਕੰਬੋ-ਬਕਸਾ ਚਾਈਲਡ ਦੁਆਲੇ ਫਰੇਮ ਵੇਖਾਓ" + +#: ../gtk/gtkcombobox.c:792 +msgid "Whether the combo box grabs focus when it is clicked with the mouse" +msgstr "ਕੀ ਕੰਬੋ-ਬਕਸ ਫੋਕਸ ਹੋ ਜਾਵੇ, ਜਦੋਂ ਕਿ ਇਹ ਮਾਊਸ ਨਾਲ ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkcombobox.c:807 ../gtk/gtkmenu.c:641 +msgid "Tearoff Title" +msgstr "ਟਾਈਟਲ ਨੂੰ ਵੱਖ ਕਰੋ" + +#: ../gtk/gtkcombobox.c:808 +msgid "" +"A title that may be displayed by the window manager when the popup is torn-" +"off" +msgstr "ਜਦੋਂ ਪੋਪਅੱਪ ਵੱਖ ਹੋਵੇ ਤਾਂ ਵਿੰਡੋ ਮੈਨੇਜਰ ਵਲੋਂ ਵੇਖਾਇਆ ਜਾਣ ਵਾਲਾ ਇੱਕ ਟਾਈਟਲ" + +#: ../gtk/gtkcombobox.c:825 +msgid "Popup shown" +msgstr "ਪੋਪਅੱਪ ਵੇਖਾਉਣਾ" + +#: ../gtk/gtkcombobox.c:826 +msgid "Whether the combo's dropdown is shown" +msgstr "ਕੀ ਕੰਬੋ ਦੀ ਲਟਕਦੀ ਸੂਚੀ ਵੇਖਾਈ ਜਾਵੇ" + +#: ../gtk/gtkcombobox.c:842 +msgid "Button Sensitivity" +msgstr "ਬਟਨ ਸੰਵਦੇਨਸ਼ੀਲਤਾ" + +#: ../gtk/gtkcombobox.c:843 +msgid "Whether the dropdown button is sensitive when the model is empty" +msgstr "ਜਦੋਂ ਮਾਡਲ ਖਾਲੀ ਹੋਵੇ ਤਾਂ ਲਟਕਦੇ ਬਟਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" + +#: ../gtk/gtkcombobox.c:859 +msgid "Whether combo box has an entry" +msgstr "ਕੀ ਕੰਬੋ-ਬਕਸਾ ਦੀ ਐਂਟਰੀ ਹੈ" + +#: ../gtk/gtkcombobox.c:874 +msgid "Entry Text Column" +msgstr "ਐਂਟਰੀ ਟੈਕਸਟ ਕਾਲਮ" + +#: ../gtk/gtkcombobox.c:875 +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" +msgstr "" +"ਕੰਬੋਬਾਕਸ ਦੇ ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਐਂਟਰੀ ਤੋਂ ਲਾਈਨ ਨਾਲ ਸਬੰਧਿਤ ਹੈ, ਜੇ ਕਾਲਮ ਨੂੰ " +"#GtkComboBox:" +"has-entry = %TRUE ਨਾਲ ਬਣਾਇਆ ਹੋਵੇ" + +#: ../gtk/gtkcombobox.c:892 +msgid "ID Column" +msgstr "ID ਕਾਲਮ" + +#: ../gtk/gtkcombobox.c:893 +msgid "" +"The column in the combo box's model that provides string IDs for the values " +"in the model" +msgstr "ਕੰਬੋਬਾਕਸ ਦੇ ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਮਾਡਲ ਵਿੱਚ ਮੁੱਲ ਲਈ ਲਾਈਨ ID ਦਿੰਦਾ ਹੈ" + +#: ../gtk/gtkcombobox.c:908 +msgid "Active id" +msgstr "ਸਰਗਰਮ id" + +#: ../gtk/gtkcombobox.c:909 +msgid "The value of the id column for the active row" +msgstr "ਐਕਟਿਵ ਕਤਾਰ ਲਈ id ਕਾਲਮ ਦਾ ਮੁੱਲ" + +#: ../gtk/gtkcombobox.c:924 +msgid "Popup Fixed Width" +msgstr "ਪੋਪਅੱਪ ਸਥਿਰ ਚੌੜਾਈ" + +#: ../gtk/gtkcombobox.c:925 +msgid "" +"Whether the popup's width should be a fixed width matching the allocated " +"width of the combo box" +msgstr "ਕੀ ਪੋਪਅੱਪ ਦੀ ਚੌੜਾਈ ਕੰਬੋ ਬਾਕਸ ਦੀ ਦਿੱਤੀ ਗਈ ਚੌੜਾਈ ਦੇ ਮੁਤਾਬਕ ਸਥਿਰ ਹੋਵੇ" + +#: ../gtk/gtkcombobox.c:948 +msgid "Appears as list" +msgstr "ਸੂਚੀ ਦੀ ਦਿੱਸੇ" + +#: ../gtk/gtkcombobox.c:949 +msgid "Whether dropdowns should look like lists rather than menus" +msgstr "ਕੀ ਲਟਕਣ ਹੇਠਾਂ-ਖੁੱਲ੍ਹਣ ਵਾਲਾ ਮੇਨੂ ਦੀ ਤਰਾਂ ਨਾ ਹੋਕੇ ਇੱਕ ਲਿਸਟ ਵਾਂਗ ਦਿੱਸੇ" + +#: ../gtk/gtkcombobox.c:965 +msgid "Arrow Size" +msgstr "ਤੀਰ ਆਕਾਰ" + +#: ../gtk/gtkcombobox.c:966 +msgid "The minimum size of the arrow in the combo box" +msgstr "ਕੰਬੋ ਬਾਕਸ ਵਿੱਚ ਤੀਰ ਦਾ ਘੱਟੋ-ਘੱਟ ਆਕਾਰ ਹੈ।" + +#: ../gtk/gtkcombobox.c:981 ../gtk/gtkentry.c:879 ../gtk/gtkhandlebox.c:190 +#: ../gtk/gtkmenubar.c:207 ../gtk/gtkstatusbar.c:182 ../gtk/gtktoolbar.c:601 +#: ../gtk/gtkviewport.c:153 +msgid "Shadow type" +msgstr "ਛਾਂ ਕਿਸਮ" + +#: ../gtk/gtkcombobox.c:982 +msgid "Which kind of shadow to draw around the combo box" +msgstr "ਕੰਬੋ ਬਾਕਸ ਦੁਆਲੇ ਕਿਸ ਕਿਸਮ ਦੀ ਛਾਂ ਖਿੱਚੀ ਜਾਵੇ" + +#: ../gtk/gtkcontainer.c:453 +msgid "Resize mode" +msgstr "ਮੁੜ-ਅਕਾਰ ਮੋਡ" + +#: ../gtk/gtkcontainer.c:454 +msgid "Specify how resize events are handled" +msgstr "ਦੱਸੋ ਕਿ ਮੁੜ-ਅਕਾਰ ਘਟਨਾ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਿਆ ਜਾਵੇਗਾ" + +#: ../gtk/gtkcontainer.c:461 +msgid "Border width" +msgstr "ਕਿਨਾਰੇ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkcontainer.c:462 +msgid "The width of the empty border outside the containers children" +msgstr "ਕੰਨਟੇਨਰ ਚਲਾਇਡਰਨ ਦੇ ਬਾਹਰ ਖਾਲੀ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkcontainer.c:470 +msgid "Child" +msgstr "ਚਲਾਇਡ" + +#: ../gtk/gtkcontainer.c:471 +msgid "Can be used to add a new child to the container" +msgstr "ਕੰਨਟੇਨਰ ਵਿੱਚ ਨਵਾਂ ਚਲਾਇਡ ਨੂੰ ਜੋੜਨ ਦੇ ਕੰਮ ਆਉਦੀ ਹੈ" + +#: ../gtk/gtkdialog.c:289 ../gtk/gtkinfobar.c:434 +msgid "Content area border" +msgstr "ਸੰਖੇਪ ਖੇਤਰ ਦਾ ਕਿਨਾਰਾ" + +#: ../gtk/gtkdialog.c:290 +msgid "Width of border around the main dialog area" +msgstr "ਮੁੱਲ਼ ਤੱਖਤੀ ਖੇਤਰ ਦੇ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkdialog.c:307 ../gtk/gtkinfobar.c:451 +msgid "Content area spacing" +msgstr "ਸਮੱਗਰੀ ਖੇਤਰ ਥਾਂ" + +#: ../gtk/gtkdialog.c:308 +msgid "Spacing between elements of the main dialog area" +msgstr "ਮੁੱਖ ਡਾਈਲਾਗ ਖੇਤਰ ਦੀਆਂ ਇਕਾਈਆਂ ਵਿੱਚ ਥਾਂ" + +#: ../gtk/gtkdialog.c:315 ../gtk/gtkinfobar.c:467 +msgid "Button spacing" +msgstr "ਬਟਨ ਦੀ ਥਾਂ" + +#: ../gtk/gtkdialog.c:316 ../gtk/gtkinfobar.c:468 +msgid "Spacing between buttons" +msgstr "ਬਟਨਾਂ ਵਿੱਚਕਾਰ ਥਾਂ" + +#: ../gtk/gtkdialog.c:324 ../gtk/gtkinfobar.c:483 +msgid "Action area border" +msgstr "ਕਾਰਵਾਈ ਖੇਤਰ ਦਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtkdialog.c:325 +msgid "Width of border around the button area at the bottom of the dialog" +msgstr "ਤੱਖਤੀ ਦੇ ਹੇਠ ਬਟਨਾਂ ਦੇ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkentry.c:726 +msgid "Text Buffer" +msgstr "ਟੈਕਸਟ ਬਫਰ" + +#: ../gtk/gtkentry.c:727 +msgid "Text buffer object which actually stores entry text" +msgstr "ਟੈਕਸਟ ਬਫ਼ਰ ਆਬਜੈਕਟ, ਜੋ ਕਿ ਅਸਲ ਵਿੱਚ ਐਂਟਰੀ ਟੈਕਸਟ ਸਟੋਰ ਕਰਦਾ ਹੈ" + +#: ../gtk/gtkentry.c:734 ../gtk/gtklabel.c:662 +msgid "Cursor Position" +msgstr "ਕਰਸਰ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtkentry.c:735 ../gtk/gtklabel.c:663 +msgid "The current position of the insertion cursor in chars" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ" + +#: ../gtk/gtkentry.c:744 ../gtk/gtklabel.c:672 +msgid "Selection Bound" +msgstr "ਚੋਣ ਸੀਮਾ" + +#: ../gtk/gtkentry.c:745 ../gtk/gtklabel.c:673 +msgid "" +"The position of the opposite end of the selection from the cursor in chars" +msgstr "ਕਰਸਰ ਤੋਂ ਚੋਣ ਦੀ ਵਿਰੋਧੀ ਸਿਰਿਆ ਤੱਕ ਦੀ ਸਥਿਤੀ ਅੱਖਰਾਂ ਵਿੱਚ" + +#: ../gtk/gtkentry.c:755 +msgid "Whether the entry contents can be edited" +msgstr "ਕੀ ਇੰਦਰਾਜ਼ ਹਿੱਸੇ ਨੁੰ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkentry.c:762 ../gtk/gtkentrybuffer.c:382 +msgid "Maximum length" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਲੰਬਾਈ" + +#: ../gtk/gtkentry.c:763 ../gtk/gtkentrybuffer.c:383 +msgid "Maximum number of characters for this entry. Zero if no maximum" +msgstr "" +"ਇਸ ਇੰਦਰਾਜ਼ ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ ਅੱਖਰਾਂ ਦੀ ਥਾਂ 0 ਜੇਕਰ ਕੋਈ ਵੱਧ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੈ " + +#: ../gtk/gtkentry.c:771 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: ../gtk/gtkentry.c:772 +msgid "" +"FALSE displays the \"invisible char\" instead of the actual text (password " +"mode)" +msgstr "ਗਲਤ, ਅਸਲੀ ਸ਼ਬਦਾਂ(ਗੁਪਤ ਕੋਡ) ਦੀ ਬਜਾਏ \"ਲੁਕਵੇ ਅੱਖਰ\" ਵੇਖਾਵੇਗਾ" + +#: ../gtk/gtkentry.c:780 +msgid "FALSE removes outside bevel from entry" +msgstr "ਗਲਤ ਇੰਦਰਾਜ਼ ਵਿਚੋ ਬਾਹਰੀ bevel ਨੂੰ ਹਟਾ ਦੇਵੇਗਾ" + +#: ../gtk/gtkentry.c:788 +msgid "" +"Border between text and frame. Overrides the inner-border style property" +msgstr "" +"ਟੈਕਸਟ ਅਤੇ ਫਰੇਮ ਵਿੱਚ ਹਾਸ਼ੀਆ ਹੈ। ਅੰਦਰੂਨੀ-ਹਾਸ਼ੀਆ ਸਟਾਇਲ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਅਣਡਿੱਠਾ " +"ਕਰਦਾ ਹੈ" + +#: ../gtk/gtkentry.c:795 ../gtk/gtkentry.c:1361 +msgid "Invisible character" +msgstr "ਅਦਿੱਖ ਅੱਖਰ" + +#: ../gtk/gtkentry.c:796 ../gtk/gtkentry.c:1362 +msgid "The character to use when masking entry contents (in \"password mode\")" +msgstr "" +"ਅੱਖਰ, ਜੋ ਕਿ ਇੰਦਰਾਜ਼ ਦੇ ਸ਼ਬਦਾਂ ਨੂੰ ਲੁਕਉਣ ਦੇ ਕੰਮ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ (\"ਗੁਪਤ ਕੋਡ\" " +"ਵਿੱਚ)" + +#: ../gtk/gtkentry.c:803 +msgid "Activates default" +msgstr "ਡਿਫਾਲਟ ਸਰਗਰਮ" + +#: ../gtk/gtkentry.c:804 +msgid "" +"Whether to activate the default widget (such as the default button in a " +"dialog) when Enter is pressed" +msgstr "" +"ਕੀ ਡਿਫਾਲਟ ਵਿਦਗਿਟ ਹੀ ਸਰਗਰਮ ਕਰਨਾ ਹੈ, (ਜਿਵੇਂ ਕਿ ਡਾਈਲਾਗ ਵਿੱਚ ਡਿਫਾਲਟ ਬਟਨ)ਜਦੋ ਕਿ " +"ਐਟਰ ਨੂੰ " +"ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkentry.c:810 +msgid "Width in chars" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" + +#: ../gtk/gtkentry.c:811 +msgid "Number of characters to leave space for in the entry" +msgstr "ਇੰਦਰਾਜ਼ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਛੱਡਣ ਲਈ ਅੱਖਰਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkentry.c:820 +msgid "Scroll offset" +msgstr "ਸੰਤੁਲਿਤ ਸਕਰੋਲ" + +#: ../gtk/gtkentry.c:821 +msgid "Number of pixels of the entry scrolled off the screen to the left" +msgstr "ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ, ਜੋ ਕਿ ਸਕਰੀਨ ਦੇ ਖੱਬਿਉ ਇੰਦਰਾਜ਼ ਵਿੱਚ ਸੰਤੁਲਿਤ ਸਕਰੋਲ ਹੋਣ" + +#: ../gtk/gtkentry.c:831 +msgid "The contents of the entry" +msgstr "ਐਂਟਰੀ ਦੀ ਸਮੱਗਰੀ" + +#: ../gtk/gtkentry.c:846 ../gtk/gtkmisc.c:81 +msgid "X align" +msgstr "X ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkentry.c:847 ../gtk/gtkmisc.c:82 +msgid "" +"The horizontal alignment, from 0 (left) to 1 (right). Reversed for RTL " +"layouts." +msgstr "ਲੇਟਵੀ ਸਫ਼ਬੰਦੀ, 0 (ਖੱਬਿਉ) ਤੋ 1 (ਸੱਜਿਉ) RTL ਲਈ ਉਲਟ ਹੈ।" + +#: ../gtk/gtkentry.c:863 +msgid "Truncate multiline" +msgstr "ਛਾਂਟੀਆਂ ਬਹੁ-ਲਾਈਨਾਂ" + +#: ../gtk/gtkentry.c:864 +msgid "Whether to truncate multiline pastes to one line." +msgstr "ਕੀ ਇੱਕ ਲਾਈਨ ਵਿੱਚ ਛਾਂਟੀਆਂ ਬਹੁ-ਲਾਈਨਾਂ ਨੂੰ ਚੇਪਿਆ ਜਾਵੇ।" + +#: ../gtk/gtkentry.c:880 +msgid "Which kind of shadow to draw around the entry when has-frame is set" +msgstr "ਐਂਟਰੀ ਦੁਆਲੇ ਕਿਸ ਕਿਸਮ ਦੀ ਸ਼ੈਡੋ ਬਣਾਉਣੀ ਹੈ, ਜਦੋਂ ਕਿ ਫਰੇਮ ਸੈੱਟ ਹੋਵੇ" + +#: ../gtk/gtkentry.c:895 ../gtk/gtktextview.c:766 +msgid "Overwrite mode" +msgstr "ਉੱਤੇ ਵੇਖਾਉਣ ਦਾ ਢੰਗ" + +#: ../gtk/gtkentry.c:896 +msgid "Whether new text overwrites existing text" +msgstr "ਕੀ ਨਵਾਂ ਟੈਕਸਟ ਪੁਰਾਣੇ ਟੈਕਸਟ ਉੱਤੇ ਲਿਖੇ" + +#: ../gtk/gtkentry.c:910 ../gtk/gtkentrybuffer.c:367 +msgid "Text length" +msgstr "ਟੈਕਸਟ ਲੰਬਾਈ" + +#: ../gtk/gtkentry.c:911 +msgid "Length of the text currently in the entry" +msgstr "ਐਂਟਰੀ ਵਿੱਚ ਮੌਜੂਦ ਟੈਕਸਟ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkentry.c:926 +msgid "Invisible character set" +msgstr "ਅਦਿੱਖ ਅੱਖਰ ਸੈੱਟ" + +#: ../gtk/gtkentry.c:927 +msgid "Whether the invisible character has been set" +msgstr "ਕੀ ਅਦਿੱਖ ਅੱਖਰ ਸੈੱਟ ਕਰਨੇ ਹਨ" + +#: ../gtk/gtkentry.c:945 +msgid "Caps Lock warning" +msgstr "ਕੈਪਸ ਲਾਕ ਚੇਤਾਵਨੀ" + +#: ../gtk/gtkentry.c:946 +msgid "Whether password entries will show a warning when Caps Lock is on" +msgstr "ਕੀ ਜਦੋਂ ਕੈਪਸ ਲਾਕ ਚਾਲੂ ਹੋਵੇ ਤਾਂ ਪਾਸਵਰਡ ਐਂਟਰੀਆਂ ਇੱਕ ਚੇਤਾਵਨੀ ਵੇਖਾਉਣ" + +#: ../gtk/gtkentry.c:960 +msgid "Progress Fraction" +msgstr "ਤਰੱਕੀ ਭਾਗ" + +#: ../gtk/gtkentry.c:961 +msgid "The current fraction of the task that's been completed" +msgstr "ਟਾਸਕ ਦਾ ਮੌਜੂਦਾ ਭਾਗ, ਜੋ ਕਿ ਪੂਰਾ ਹੋ ਗਿਆ" + +#: ../gtk/gtkentry.c:978 +msgid "Progress Pulse Step" +msgstr "ਤਰੱਕੀ ਪਲੱਸ ਸਟੈਪ" + +#: ../gtk/gtkentry.c:979 +msgid "" +"The fraction of total entry width to move the progress bouncing block for " +"each call to gtk_entry_progress_pulse()" +msgstr "" +"ਤਰੱਕੀ ਬਲਾਕ ਹਿਲਾਉਣ ਲਈ ਭਾਗ ਦੀ ਕੁੱਲ ਐਂਟਰੀ ਚੌੜਾਈ, ਜੋ ਕਿ " +"gtk_entry_progress_pulse() ਦੀ " +"ਹਰੇਕ ਕਾਲ ਲਈ ਹੋਵੇ" + +#: ../gtk/gtkentry.c:995 +msgid "Primary pixbuf" +msgstr "ਪ੍ਰਾਇਮਰੀ ਪਿਕਬਫ਼" + +#: ../gtk/gtkentry.c:996 +msgid "Primary pixbuf for the entry" +msgstr "ਐਂਟਰੀ ਲਈ ਪ੍ਰਾਇਮਰੀ ਪਿਕਬਫ਼" + +#: ../gtk/gtkentry.c:1010 +msgid "Secondary pixbuf" +msgstr "ਸੈਕੰਡਰੀ ਪਿਕਬਫ਼" + +#: ../gtk/gtkentry.c:1011 +msgid "Secondary pixbuf for the entry" +msgstr "ਐਂਟਰੀ ਲਈ ਸੈਕੰਡਰੀ ਪਿਕਬਫ਼" + +#: ../gtk/gtkentry.c:1025 +msgid "Primary stock ID" +msgstr "ਪ੍ਰਾਇਮਰੀ ਸਟਾਕ ID" + +#: ../gtk/gtkentry.c:1026 +msgid "Stock ID for primary icon" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਸਟਾਕ ID" + +#: ../gtk/gtkentry.c:1040 +msgid "Secondary stock ID" +msgstr "ਸੈਕੰਡਰੀ ਸਟਾਕ ID" + +#: ../gtk/gtkentry.c:1041 +msgid "Stock ID for secondary icon" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਸਟਾਕ ID" + +#: ../gtk/gtkentry.c:1055 +msgid "Primary icon name" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkentry.c:1056 +msgid "Icon name for primary icon" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkentry.c:1070 +msgid "Secondary icon name" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkentry.c:1071 +msgid "Icon name for secondary icon" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkentry.c:1085 +msgid "Primary GIcon" +msgstr "ਪ੍ਰਾਇਮਰੀ GIcon" + +#: ../gtk/gtkentry.c:1086 +msgid "GIcon for primary icon" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ GIcon" + +#: ../gtk/gtkentry.c:1100 +msgid "Secondary GIcon" +msgstr "ਸੈਕੰਡਰੀ GIcon" + +#: ../gtk/gtkentry.c:1101 +msgid "GIcon for secondary icon" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ GIcon" + +#: ../gtk/gtkentry.c:1115 +msgid "Primary storage type" +msgstr "ਪ੍ਰਾਇਮਰੀ ਸਟੋਰੇਜ਼ ਟਾਈਪ" + +#: ../gtk/gtkentry.c:1116 +msgid "The representation being used for primary icon" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਲਈ ਨੁਮਾਇੰਦਾ" + +#: ../gtk/gtkentry.c:1131 +msgid "Secondary storage type" +msgstr "ਸੈਕੰਡਰੀ ਸਟੋਰੇਜ਼ ਟਾਈਪ" + +#: ../gtk/gtkentry.c:1132 +msgid "The representation being used for secondary icon" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਨੁਮਾਇੰਦਾ" + +#: ../gtk/gtkentry.c:1153 +msgid "Primary icon activatable" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਯੋਗ" + +#: ../gtk/gtkentry.c:1154 +msgid "Whether the primary icon is activatable" +msgstr "ਕੀ ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਹੋਣ" + +#: ../gtk/gtkentry.c:1174 +msgid "Secondary icon activatable" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ" + +#: ../gtk/gtkentry.c:1175 +msgid "Whether the secondary icon is activatable" +msgstr "ਕੀ ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਹੋਣ" + +#: ../gtk/gtkentry.c:1197 +msgid "Primary icon sensitive" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ" + +#: ../gtk/gtkentry.c:1198 +msgid "Whether the primary icon is sensitive" +msgstr "ਕੀ ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" + +#: ../gtk/gtkentry.c:1219 +msgid "Secondary icon sensitive" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ" + +#: ../gtk/gtkentry.c:1220 +msgid "Whether the secondary icon is sensitive" +msgstr "ਕੀ ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਸੰਵੇਦਨਸ਼ੀਲ ਹੋਣ" + +#: ../gtk/gtkentry.c:1236 +msgid "Primary icon tooltip text" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ" + +#: ../gtk/gtkentry.c:1237 ../gtk/gtkentry.c:1273 +msgid "The contents of the tooltip on the primary icon" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਦੀ ਸਮੱਗਰੀ" + +#: ../gtk/gtkentry.c:1253 +msgid "Secondary icon tooltip text" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ" + +#: ../gtk/gtkentry.c:1254 ../gtk/gtkentry.c:1292 +msgid "The contents of the tooltip on the secondary icon" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਦੀ ਸਮੱਗਰੀ" + +#: ../gtk/gtkentry.c:1272 +msgid "Primary icon tooltip markup" +msgstr "ਪ੍ਰਾਇਮਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਨਿਸ਼ਾਨਬੱਧ" + +#: ../gtk/gtkentry.c:1291 +msgid "Secondary icon tooltip markup" +msgstr "ਸੈਕੰਡਰੀ ਆਈਕਾਨ ਟੂਲ-ਟਿੱਪ ਨਿਸ਼ਾਨਬੱਧ" + +#: ../gtk/gtkentry.c:1311 ../gtk/gtktextview.c:794 +msgid "IM module" +msgstr "IM ਮੋਡੀਊਲ" + +#: ../gtk/gtkentry.c:1312 ../gtk/gtktextview.c:795 +msgid "Which IM module should be used" +msgstr "ਕਿਹੜਾ IM ਮੋਡੀਊਲ ਵਰਤਿਆ ਜਾਵੇ" + +#: ../gtk/gtkentry.c:1326 +msgid "Icon Prelight" +msgstr "ਆਈਕਾਨ ਪ੍ਰੀ-ਲਾਈਟ" + +#: ../gtk/gtkentry.c:1327 +msgid "Whether activatable icons should prelight when hovered" +msgstr "ਕੀ ਸਰਗਰਮ-ਹੋਣਯੋਗ ਆਈਕਾਨ ਪ੍ਰੀ-ਲਾਈਟ ਕੀਤੇ ਜਾਣ, ਜਦੋਂ ਉੱਤੇ ਇਸ਼ਾਰਾ ਹੋਵੇ" + +#: ../gtk/gtkentry.c:1340 +msgid "Progress Border" +msgstr "ਤਰੱਕੀ ਬਾਰਡਰ" + +#: ../gtk/gtkentry.c:1341 +msgid "Border around the progress bar" +msgstr "ਤਰੱਕੀ ਪੱਟੀ ਦੇ ਦੁਆਲੇ ਬਾਰਡਰ" + +#: ../gtk/gtkentry.c:1833 +msgid "Border between text and frame." +msgstr "ਟੈਕਸਟ ਅਤੇ ਫਰੇਮ ਵਿੱਚ ਬਾਰਡਰ" + +#: ../gtk/gtkentrybuffer.c:353 +msgid "The contents of the buffer" +msgstr "ਬਫ਼ਰ ਦੀ ਸਮੱਗਰੀ" + +#: ../gtk/gtkentrybuffer.c:368 +msgid "Length of the text currently in the buffer" +msgstr "ਬਫ਼ਰ ਵਿੱਚ ਮੌਜੂਦਾ ਟੈਕਸਟ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkentrycompletion.c:301 +msgid "Completion Model" +msgstr "ਪੂਰਤੀ ਮਾਡਲ" + +#: ../gtk/gtkentrycompletion.c:302 +msgid "The model to find matches in" +msgstr "ਮਾਡਲ, ਜਿਸ ਵਿੱਚ ਮੇਲ ਲੱਭਣਾ ਹੈ" + +#: ../gtk/gtkentrycompletion.c:308 +msgid "Minimum Key Length" +msgstr "ਘੱਟੋ-ਘੱਟ ਕੁੰਜੀ ਲੰਬਾਈ" + +#: ../gtk/gtkentrycompletion.c:309 +msgid "Minimum length of the search key in order to look up matches" +msgstr "ਮੇਲ ਲੱਭਣ ਲਈ ਖੋਜ ਕੁੰਜੀ ਦੀ ਘੱਟੋ-ਘੱਟ ਲੰਬਾਈ" + +#: ../gtk/gtkentrycompletion.c:325 ../gtk/gtkiconview.c:561 +msgid "Text column" +msgstr "ਟੈਕਸਟ ਕਾਲਮ" + +#: ../gtk/gtkentrycompletion.c:326 +msgid "The column of the model containing the strings." +msgstr "ਮਾਡਲ ਦੇ ਕਾਲਮ ਵਿੱਚ ਸਤਰਾਂ ਇਸ ਤੋਂ ਪਰਾਪਤ ਕਰੇਗਾ।" + +#: ../gtk/gtkentrycompletion.c:345 +msgid "Inline completion" +msgstr "ਲਾਈਨ ਵਿੱਚ ਪੂਰਨ" + +#: ../gtk/gtkentrycompletion.c:346 +msgid "Whether the common prefix should be inserted automatically" +msgstr "ਕੀ ਆਮ ਅਗੇਤਰ ਆਟੋਮੈਟਿਕ ਹੀ ਜੋੜ ਦਿੱਤਾ ਜਾਵੇ" + +#: ../gtk/gtkentrycompletion.c:360 +msgid "Popup completion" +msgstr "ਪੋਪਅੱਪ ਪੂਰਨ" + +#: ../gtk/gtkentrycompletion.c:361 +msgid "Whether the completions should be shown in a popup window" +msgstr "ਕੀ ਇੱਕ ਪੋਪਅੱਪ ਵਿੰਡੋ ਵਿੱਚ ਪੂਰਨ ਕੀਤਾ ਜਾਵੇ" + +#: ../gtk/gtkentrycompletion.c:376 +msgid "Popup set width" +msgstr "ਪੋਪਅੱਪ ਸੈਟ ਚੌੜਾਈ" + +#: ../gtk/gtkentrycompletion.c:377 +msgid "If TRUE, the popup window will have the same size as the entry" +msgstr "" +"ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਪੋਪਅੱਪ ਵਿੰਡੋ ਨੂੰ ਉਸੇ ਅਕਾਰ ਦੇ ਹੋਵੇਗਾ, ਜਿਸ ਦਾ ਇੰਦਰਾਜ਼ ਹੈ" + +#: ../gtk/gtkentrycompletion.c:395 +msgid "Popup single match" +msgstr "ਪੋਪਅੱਪ ਇੱਕਲਾ ਮੇਲ" + +#: ../gtk/gtkentrycompletion.c:396 +msgid "If TRUE, the popup window will appear for a single match." +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਪੋਪਅੱਪ ਵਿੰਡੋ ਇੱਕ ਇੱਕਲੇ ਮੇਲ ਲਈ ਵਿਖਾਈ ਦੇਵੇਗਾ।" + +#: ../gtk/gtkentrycompletion.c:410 +msgid "Inline selection" +msgstr "ਇਨ-ਲਾਈਨ ਚੋਣ" + +#: ../gtk/gtkentrycompletion.c:411 +msgid "Your description here" +msgstr "ਆਪਣਾ ਵੇਰਵਾ ਇੱਥੇ ਦਿਓ" + +#: ../gtk/gtkeventbox.c:109 +msgid "Visible Window" +msgstr "ਦਿੱਖ ਵਿੰਡੋ" + +#: ../gtk/gtkeventbox.c:110 +msgid "" +"Whether the event box is visible, as opposed to invisible and only used to " +"trap events." +msgstr "" +"ਕੀ ਘਟਨਾ-ਡੱਬਾ ਦਿੱਸਯੋਗ ਹੋਵੇ, ਇਸ ਦੇ ਉਲਟ ਕਿ ਲੁਕਵਾਂ ਅਤੇ ਸਿਰਫ ਘਟਨਾਵਾਂ ਨੂੰ ਫੜੇ ਹੀ" + +#: ../gtk/gtkeventbox.c:116 +msgid "Above child" +msgstr "ਚਲਾਇਡ ਤੋਂ ਉੱਤੇ" + +#: ../gtk/gtkeventbox.c:117 +msgid "" +"Whether the event-trapping window of the eventbox is above the window of the " +"child widget as opposed to below it." +msgstr "" +"ਕੀ ਘਟਨਾ-ਡੱਬੇ ਦਾ ਘਟਨਾ ਫੜਨ ਵਾਲੀ ਵਿੰਡੋ ਚਾਲਇਡ ਵਿਦਗਿਟ ਦੇ ਉੱਤੇ ਹੋਵੇ ,ਇਸ ਦੇ ਉਲਟ ਕਿ " +"ਇਸ ਦੇ ਹੇਠਾਂ" + +#: ../gtk/gtkexpander.c:279 +msgid "Expanded" +msgstr "ਫੈਲਿਆ" + +#: ../gtk/gtkexpander.c:280 +msgid "Whether the expander has been opened to reveal the child widget" +msgstr "ਕੀ ਫੈਲਾਣਵਾਲੇ ਨੂੰ ਚਲਾਇਡ ਵਿਦਗਿਟ ਨੂੰ ਖੋਲ੍ਹਣਾ ਚਾਹੀਦਾ ਹੈ" + +#: ../gtk/gtkexpander.c:288 +msgid "Text of the expander's label" +msgstr "ਫੈਲੇ ਲੇਬਲ ਦਾ ਪਾਠ" + +#: ../gtk/gtkexpander.c:303 ../gtk/gtklabel.c:581 +msgid "Use markup" +msgstr "ਨਿਸ਼ਾਨਬੰਦੀ ਵਰਤੋਂ" + +#: ../gtk/gtkexpander.c:304 ../gtk/gtklabel.c:582 +msgid "The text of the label includes XML markup. See pango_parse_markup()" +msgstr "ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਵਿੱਚ XML ਮਾਰਕਅੱਪ ਹੋਵੇ ਵੇਖੋ pango_parse_markup()" + +#: ../gtk/gtkexpander.c:312 +msgid "Space to put between the label and the child" +msgstr "ਲੇਬਲ ਅਤੇ ਚਲਾਇਡ ਵਿੱਚ ਦੇਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkexpander.c:321 ../gtk/gtkframe.c:168 ../gtk/gtktoolbutton.c:215 +#: ../gtk/gtktoolitemgroup.c:1601 +msgid "Label widget" +msgstr "ਲੇਬਲ ਵਿਦਗਿਟ" + +#: ../gtk/gtkexpander.c:322 +msgid "A widget to display in place of the usual expander label" +msgstr "ਵਿਦਗਿਟ, ਆਮ ਫੈਲਾੳ ਲੇਬਲ ਦੀ ਥਾਂ ਵੇਖਾਉ " + +#: ../gtk/gtkexpander.c:329 +msgid "Label fill" +msgstr "ਲੇਬਲ ਭਰੋ" + +#: ../gtk/gtkexpander.c:330 +msgid "Whether the label widget should fill all available horizontal space" +msgstr "ਕੀ ਲੇਬਲ ਵਿਦਜੈੱਟ ਸਭ ਉਪਲੱਬਧ ਹਰੀਜੱਟਲ ਥਾਂ ਨੂੰ ਭਰੇ" + +#: ../gtk/gtkexpander.c:336 ../gtk/gtktoolitemgroup.c:1629 +#: ../gtk/gtktreeview.c:1191 +msgid "Expander Size" +msgstr "ਫੈਲਾ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtkexpander.c:337 ../gtk/gtktoolitemgroup.c:1630 +#: ../gtk/gtktreeview.c:1192 +msgid "Size of the expander arrow" +msgstr "ਫੈਲਾ ਵਾਲੇ ਤੀਰ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtkexpander.c:346 +msgid "Spacing around expander arrow" +msgstr "ਫੈਲਾ ਵਾਲੇ ਤੀਰ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਥਾਂ" + +#: ../gtk/gtkfilechooserbutton.c:366 +msgid "Dialog" +msgstr "ਡਾਈਲਾਗ" + +#: ../gtk/gtkfilechooserbutton.c:367 +msgid "The file chooser dialog to use." +msgstr "ਵਰਤਣ ਲਈ ਫਾਇਲ ਚੋਣਕਾਰ ਵਰਤੋਂ।" + +#: ../gtk/gtkfilechooserbutton.c:398 +msgid "The title of the file chooser dialog." +msgstr "ਫਾਇਲ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਦਾ ਨਾਂ ਹੈ।" + +#: ../gtk/gtkfilechooserbutton.c:412 +msgid "The desired width of the button widget, in characters." +msgstr "ਬਟਨ ਵਿਦਗਿਟ ਦੀ ਲੋੜੀਦੀ ਚੌਰਾਈ ਅੱਖਰਾਂ ਵਿੱਚ ਹੈ।" + +#: ../gtk/gtkfilechooser.c:740 +msgid "Action" +msgstr "ਕਾਰਵਾਈ" + +#: ../gtk/gtkfilechooser.c:741 +msgid "The type of operation that the file selector is performing" +msgstr "ਕਾਰਵਾਈ ਦੀ ਕਿਸਮ ਜੋ ਕਿ ਫਾਇਲ ਚੋਣਕਾਰ ਕਰ ਰਿਹਾ ਹੈ " + +#: ../gtk/gtkfilechooser.c:747 ../gtk/gtkrecentchooser.c:264 +msgid "Filter" +msgstr "ਫਿਲਟਰ" + +#: ../gtk/gtkfilechooser.c:748 +msgid "The current filter for selecting which files are displayed" +msgstr "ਵੇਖਾਉਣ ਲਈ ਫਾਇਲਾਂ ਦੀ ਚੋਣ ਕਰਨ ਵਾਲਾ ਮੌਜੂਦਾ ਫਿਲਟਰ" + +#: ../gtk/gtkfilechooser.c:753 +msgid "Local Only" +msgstr "ਲੋਕਲ ਹੀ" + +#: ../gtk/gtkfilechooser.c:754 +msgid "Whether the selected file(s) should be limited to local file: URLs" +msgstr "ਕੀ ਚੁਣੀਆਂ ਫਾਇਲਾਂ ਸਿਰਫ ਲੋਕਲ ਹੀ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ : URL" + +#: ../gtk/gtkfilechooser.c:759 +msgid "Preview widget" +msgstr "ਝਲਕ ਵਿਦਗਿਟ" + +#: ../gtk/gtkfilechooser.c:760 +msgid "Application supplied widget for custom previews." +msgstr "ਕਸਟਮ ਝਲਕ ਲਈ ਕਾਰਜ ਵਲੋਂ ਦਿੱਤੇ ਵਿਦਗਿਟ" + +#: ../gtk/gtkfilechooser.c:765 +msgid "Preview Widget Active" +msgstr "ਵਿਦਗਿਟ ਕਾਰਵਾਈ ਦੀ ਝਲਕ" + +#: ../gtk/gtkfilechooser.c:766 +msgid "" +"Whether the application supplied widget for custom previews should be shown." +msgstr "ਕੀ ਸੋਧ ਝਲਕ ਵੇਖਾਉਣ ਲਈ ਕਾਰਜ ਵਿਦਗਿਟ ਦੇਵੇ।" + +#: ../gtk/gtkfilechooser.c:771 +msgid "Use Preview Label" +msgstr "ਝਲਕ ਲੇਬਲ ਵਰਤੋਂ" + +#: ../gtk/gtkfilechooser.c:772 +msgid "Whether to display a stock label with the name of the previewed file." +msgstr "ਕੀ ਝਲਕ ਫਾਇਲਾਂ ਦੇ ਨਾਂ ਨਾਲ ਸਟਾਕ ਲੇਬਲ ਵੀ ਵੇਖਾਇਆ ਜਾਵੇ।" + +#: ../gtk/gtkfilechooser.c:777 +msgid "Extra widget" +msgstr "ਵਾਧੂ ਵਿਦਗਿਟ" + +#: ../gtk/gtkfilechooser.c:778 +msgid "Application supplied widget for extra options." +msgstr "ਹੋਰ ਚੋਣ ਲਈ ਕਾਰਜ ਵਿਦਗਿਟ ਦੇਵੇ " + +#: ../gtk/gtkfilechooser.c:783 ../gtk/gtkrecentchooser.c:203 +msgid "Select Multiple" +msgstr "ਬਹੁ-ਚੋਣ" + +#: ../gtk/gtkfilechooser.c:784 +msgid "Whether to allow multiple files to be selected" +msgstr "ਕੀ ਬਹੁਤੀਆਂ ਫਾਇਲਾਂ ਦੀ ਚੋਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਦੇਣੀ ਹੈ" + +#: ../gtk/gtkfilechooser.c:790 +msgid "Show Hidden" +msgstr "ਲੁਕਵੇਂ ਵੇਖਾਓ" + +#: ../gtk/gtkfilechooser.c:791 +msgid "Whether the hidden files and folders should be displayed" +msgstr "ਕੀ ਲੁਕਵੀਆਂ ਫਾਇਲਾਂ ਅਤੇ ਫੋਲਡਰਾਂ ਨੂੰ ਵੇਖਾਉਣੇ ਹਨ" + +#: ../gtk/gtkfilechooser.c:806 +msgid "Do overwrite confirmation" +msgstr "ਉੱਤੇ ਲਿਖਣ ਪੁਸ਼ਟੀ ਕਰੋ" + +#: ../gtk/gtkfilechooser.c:807 +msgid "" +"Whether a file chooser in save mode will present an overwrite confirmation " +"dialog if necessary." +msgstr "" +"ਕੀ ਸੰਭਾਲਣ ਢੰਗ ਵਿੱਚ ਇੱਕ ਫਾਇਲ ਚੋਣਕਾਰ ਲੋੜ ਪੈਣ ਉੱਤੇ ਇੱਕ ਉੱਪਰ ਲਿਖਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ " +"ਡਾਈਲਾਗ ਵੇਖਾਏ।" + +#: ../gtk/gtkfilechooser.c:823 +msgid "Allow folder creation" +msgstr "ਫੋਲਡਰ ਬਣਾਉਣੇ ਮਨਜ਼ੂਰ" + +#: ../gtk/gtkfilechooser.c:824 +msgid "" +"Whether a file chooser not in open mode will offer the user to create new " +"folders." +msgstr "" +"ਕੀ ਖੋਲ੍ਹੋ ਮੋਡ ਵਿੱਚ ਇੱਕ ਫਾਇਲ ਚੋਣਕਾਰ ਲੋੜ ਪੈਣ ਉੱਤੇ ਯੂਜ਼ਰ ਨੂੰ ਨਵੇਂ ਫੋਲਡਰ ਬਣਾਉਣ ਲਈ " +"ਸਹਾਇਕ ਹੋਵੇ।" + +#: ../gtk/gtkfixed.c:152 ../gtk/gtklayout.c:632 +msgid "X position" +msgstr "X ਟਿਕਾਣਾ" + +#: ../gtk/gtkfixed.c:153 ../gtk/gtklayout.c:633 +msgid "X position of child widget" +msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੀ X ਸਥਿਤੀ" + +#: ../gtk/gtkfixed.c:160 ../gtk/gtklayout.c:642 +msgid "Y position" +msgstr "Y ਟਿਕਾਣਾ" + +#: ../gtk/gtkfixed.c:161 ../gtk/gtklayout.c:643 +msgid "Y position of child widget" +msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੀ Y ਸਥਿਤੀ" + +#: ../gtk/gtkfontbutton.c:141 +msgid "The title of the font selection dialog" +msgstr "ਫੋਂਟ ਚੋਣਕਾਰ ਡਾਈਲਾਗ ਦਾ ਟਾਈਟਲ" + +#: ../gtk/gtkfontbutton.c:156 ../gtk/gtkfontsel.c:219 +msgid "Font name" +msgstr "ਫੋਂਟ ਨਾਂ" + +#: ../gtk/gtkfontbutton.c:157 +msgid "The name of the selected font" +msgstr "ਚੁਣੇ ਫੋਂਟ ਦਾ ਨਾਂ" + +#: ../gtk/gtkfontbutton.c:158 +msgid "Sans 12" +msgstr "ਸਨਸ ੧੨" + +#: ../gtk/gtkfontbutton.c:173 +msgid "Use font in label" +msgstr "ਲੇਬਲ ਵਿੱਚ ਫੋਂਟ ਵਰਤੋਂ" + +#: ../gtk/gtkfontbutton.c:174 +msgid "Whether the label is drawn in the selected font" +msgstr "ਕੀ ਚੁਣੇ ਫੋਟਾਂ ਨਾਲ ਲੇਬਲ ਨੂੰ ਫਿਰ ਬਣਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkfontbutton.c:189 +msgid "Use size in label" +msgstr "ਲੇਬਲ ਵਿੱਚ ਅਕਾਰ ਵਰਤੋਂ" + +#: ../gtk/gtkfontbutton.c:190 +msgid "Whether the label is drawn with the selected font size" +msgstr "ਕੀ ਚੁਣੇ ਫੋਂਟ ਅਕਾਰ ਨਾਲ ਲੇਬਲ ਨੂੰ ਫਿਰ ਬਣਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkfontbutton.c:206 +msgid "Show style" +msgstr "ਸਟਾਇਲ ਵੇਖੋ" + +#: ../gtk/gtkfontbutton.c:207 +msgid "Whether the selected font style is shown in the label" +msgstr "ਕੀ ਚੁਣੇ ਫੋਂਟ ਸਟਾਇਲ ਨਾਲ ਲੇਬਲ ਨੂੰ ਫਿਰ ਬਣਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkfontbutton.c:222 +msgid "Show size" +msgstr "ਅਕਾਰ ਵੇਖੋ" + +#: ../gtk/gtkfontbutton.c:223 +msgid "Whether selected font size is shown in the label" +msgstr "ਕੀ ਚੁਣੇ ਫੋਂਟ ਅਕਾਰ ਨੂੰ ਲੇਬਲ ਵਿੱਚ ਵੇਖਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkfontsel.c:220 +msgid "The string that represents this font" +msgstr "ਇਸ ਫੋਂਟ ਨੂੰ ਵੇਖਾਉਦੀ ਇੱਕ ਲਾਈਨ" + +#: ../gtk/gtkfontsel.c:226 +msgid "Preview text" +msgstr "ਟੈਕਸਟ ਝਲਕ" + +#: ../gtk/gtkfontsel.c:227 +msgid "The text to display in order to demonstrate the selected font" +msgstr "ਚੁਣੇ ਫੋਟਾਂ ਲਈ ਝਲਕ ਵੇਖਾਉਣ ਲਈ ਟੈਕਸਟ" + +#: ../gtk/gtkframe.c:134 +msgid "Text of the frame's label" +msgstr "ਫਰੇਮ ਦੇ ਲੇਬਲ ਦਾ ਸ਼ਬਦ" + +#: ../gtk/gtkframe.c:141 +msgid "Label xalign" +msgstr "ਲੇਬਲ x ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkframe.c:142 +msgid "The horizontal alignment of the label" +msgstr "ਲੇਬਲ ਦੀ ਲੇਟਵੀ ਦਿਸ਼ਾ ਵਿੱਚ ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkframe.c:150 +msgid "Label yalign" +msgstr "ਲੇਬਲ y ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkframe.c:151 +msgid "The vertical alignment of the label" +msgstr "ਲੇਬਲ ਦੀ ਲੰਬਕਾਰੀ ਦਿਸ਼ਾ ਵਿੱਚ ਸਫ਼ਬੰਦੀ" + +#: ../gtk/gtkframe.c:159 +msgid "Frame shadow" +msgstr "ਫਰੇਮ ਛਾਂ" + +#: ../gtk/gtkframe.c:160 +msgid "Appearance of the frame border" +msgstr "ਫਰੇਮ ਦੇ ਹਾਸ਼ੀਏ ਦੀ ਦਿੱਖ" + +#: ../gtk/gtkframe.c:169 +msgid "A widget to display in place of the usual frame label" +msgstr "ਫਾਰਮ ਦੇ ਲੇਬਲ ਲਈ ਥਾਂ ਵੇਖਾਉਣ ਲਈ ਵਿਦਗਿਟ" + +#: ../gtk/gtkgrid.c:1269 ../gtk/gtktable.c:175 +msgid "Row spacing" +msgstr "ਸਤਰਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkgrid.c:1270 ../gtk/gtktable.c:176 +msgid "The amount of space between two consecutive rows" +msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਤਾਰਾਂ ਵਿਚਕਾਰ" + +#: ../gtk/gtkgrid.c:1276 ../gtk/gtktable.c:184 +msgid "Column spacing" +msgstr "ਕਾਲਮਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkgrid.c:1277 ../gtk/gtktable.c:185 +msgid "The amount of space between two consecutive columns" +msgstr "ਖਾਲੀ ਥਾਂ, ਦੋ ਲਗਾਤਾਰ ਕਾਲਮਾਂ ਵਿਚਕਾਰ" + +#: ../gtk/gtkgrid.c:1283 +msgid "Row Homogeneous" +msgstr "ਕਤਾਰ ਸਮਰੂਪ" + +#: ../gtk/gtkgrid.c:1284 +msgid "If TRUE, the rows are all the same height" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਭ ਕਤਾਰਾਂ ਇੱਕੋ ਉਚਾਈ ਦੀਆਂ ਹੋਣਗੀਆਂ" + +#: ../gtk/gtkgrid.c:1290 +msgid "Column Homogeneous" +msgstr "ਕਾਲਮ ਸਮਰੂਪ" + +#: ../gtk/gtkgrid.c:1291 +msgid "If TRUE, the columns are all the same width" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਭ ਕਾਲਮ ਇੱਕੋ ਉਚਾਈ ਦੇ ਹੋਣਗੇ" + +#: ../gtk/gtkgrid.c:1297 ../gtk/gtktable.c:201 +msgid "Left attachment" +msgstr "ਖੱਬਾ ਨੱਥੀ" + +#: ../gtk/gtkgrid.c:1298 ../gtk/gtkmenu.c:759 ../gtk/gtktable.c:202 +msgid "The column number to attach the left side of the child to" +msgstr "ਚਲਾਇਡ ਨਾਲ ਖੱਬੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਕਾਲਮ ਦਾ ਨੰਬਰ" + +#: ../gtk/gtkgrid.c:1304 ../gtk/gtktable.c:215 +msgid "Top attachment" +msgstr "ਉੱਤੇ ਨੱਥੀ" + +#: ../gtk/gtkgrid.c:1305 +msgid "The row number to attach the top side of a child widget to" +msgstr "ਕਤਾਰ ਗਿਣਤੀ, ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਉੱਪਰ ਸਿਰੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" + +#: ../gtk/gtkgrid.c:1311 ../gtk/gtklayout.c:658 ../gtk/gtktreeviewcolumn.c:259 +msgid "Width" +msgstr "ਚੌੜਾਈ" + +#: ../gtk/gtkgrid.c:1312 +msgid "The number of columns that a child spans" +msgstr "ਚਲਾਈਡ ਸਪੇਨਸ ਲਈ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkgrid.c:1318 ../gtk/gtklayout.c:667 +msgid "Height" +msgstr "ਉਚਾਈ" + +#: ../gtk/gtkgrid.c:1319 +msgid "The number of rows that a child spans" +msgstr "ਚਲਾਈਡ ਸਪੇਨਸ ਲਈ ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkhandlebox.c:191 +msgid "Appearance of the shadow that surrounds the container" +msgstr "ਕੰਨਟੇਨਰ ਦੇ ਦੁਆਲੇ ਛਾਂ ਦੀ ਮੌਜੂਦਗੀ" + +#: ../gtk/gtkhandlebox.c:199 +msgid "Handle position" +msgstr "ਸਥਿਤੀ ਨੂੰ ਵੇਖੋ" + +#: ../gtk/gtkhandlebox.c:200 +msgid "Position of the handle relative to the child widget" +msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਅਨੁਸਾਰ ਸੰਭਾਲਣ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtkhandlebox.c:208 +msgid "Snap edge" +msgstr "ਕਿਨਾਰੇ ਦਾ ਦਰਿਸ਼" + +#: ../gtk/gtkhandlebox.c:209 +msgid "" +"Side of the handlebox that's lined up with the docking point to dock the " +"handlebox" +msgstr "" +"ਹੈਡਲ-ਡੱਬੇ ਦਾ ਪਾਸਾ ਜੋ ਕਿ ਹੈਡਲ-ਡੱਬੇ ਨਾਲ ਡਾਕ ਅਤੇ ਡਾਕ-ਬਿੰਦੂ ਨਾਲ ਕਤਾਰਬੱਧ ਕੀਤਾ ਹੈ" + +#: ../gtk/gtkhandlebox.c:217 +msgid "Snap edge set" +msgstr "ਕਿਨਾਰਾ ਸਮੂਹ ਦਾ ਦਰਿਸ਼" + +#: ../gtk/gtkhandlebox.c:218 +msgid "" +"Whether to use the value from the snap_edge property or a value derived from " +"handle_position" +msgstr "ਕੀ ਸਨੈਪ-ਕਿਨਾਰੇ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਤੋਂ ਮੁੱਲ ਵਰਤਣਾ ਹੈ ਜਾਂ ਸਥਿਤੀ ਤੋਂ ਬਣਾਉਣਾ ਹੈ" + +#: ../gtk/gtkhandlebox.c:225 +msgid "Child Detached" +msgstr "ਚਲਾਈਡ ਵੱਖ ਕੀਤਾ" + +#: ../gtk/gtkhandlebox.c:226 +msgid "" +"A boolean value indicating whether the handlebox's child is attached or " +"detached." +msgstr "ਬੁਲੀਅਨ ਮੁੱਲ ਵੇਖਾਉਦਾ ਹੈ ਕਿ ਕੀ ਹੈਂਡਲਬਾਕਸ ਦਾ ਚਾਈਲਡ ਅਟੈਚ ਕੀਤਾ ਜਾਂ ਵੱਖ" + +#: ../gtk/gtkiconview.c:524 +msgid "Selection mode" +msgstr "ਚੋਣ ਢੰਗ" + +#: ../gtk/gtkiconview.c:525 +msgid "The selection mode" +msgstr "ਚੋਣ ਢੰਗ" + +#: ../gtk/gtkiconview.c:543 +msgid "Pixbuf column" +msgstr "ਪਿਕਬਫ਼ ਕਾਲਮ" + +#: ../gtk/gtkiconview.c:544 +msgid "Model column used to retrieve the icon pixbuf from" +msgstr "ਆਈਕਾਨ ਪਿਕਬਫ਼ ਤੋਂ ਮਾਡਲ ਕਾਲਮ ਵਰਤਣ ਲਈ" + +#: ../gtk/gtkiconview.c:562 +msgid "Model column used to retrieve the text from" +msgstr "ਟੈਕਸਟ ਤੋਂ ਪਰਾਪਤ ਕਰਨ ਲਈ ਮਾਡਲ ਕਾਲਮ" + +#: ../gtk/gtkiconview.c:581 +msgid "Markup column" +msgstr "ਨਿਸ਼ਾਨਬੰਦੀ ਕਾਲਮ" + +#: ../gtk/gtkiconview.c:582 +msgid "Model column used to retrieve the text if using Pango markup" +msgstr "ਜੇਕਰ ਪੈਂਗੋ ਨਿਸ਼ਾਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਮਾਡਲ ਕਾਲਮ ਵਰਤਣ ਲਈ ਪਰਾਪਤ ਪਾਠ" + +#: ../gtk/gtkiconview.c:589 +msgid "Icon View Model" +msgstr "ਆਈਕਾਨ ਵੇਖਣ ਮਾਡਲ" + +#: ../gtk/gtkiconview.c:590 +msgid "The model for the icon view" +msgstr "ਆਈਕਾਨ ਵੇਖਣ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtkiconview.c:606 +msgid "Number of columns" +msgstr "ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkiconview.c:607 +msgid "Number of columns to display" +msgstr "ਵੇਖਾਉਣ ਲਈ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkiconview.c:624 +msgid "Width for each item" +msgstr "ਹਰੇਕ ਆਈਟਮ ਲਈ ਚੌੜਾਈ" + +#: ../gtk/gtkiconview.c:625 +msgid "The width used for each item" +msgstr "ਹਰ ਆਈਟਮ ਲਈ ਵਰਤਨ ਲਈ ਚੌੜਾਈ" + +#: ../gtk/gtkiconview.c:641 +msgid "Space which is inserted between cells of an item" +msgstr "ਇੱਕ ਆਈਟਮ ਦੇ ਸੈੱਲਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkiconview.c:656 +msgid "Row Spacing" +msgstr "ਕਤਾਰ ਫਾਸਲਾ" + +#: ../gtk/gtkiconview.c:657 +msgid "Space which is inserted between grid rows" +msgstr "ਗਰਿੱਡ ਕਤਾਰਾਂ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkiconview.c:672 +msgid "Column Spacing" +msgstr "ਕਾਲਮ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkiconview.c:673 +msgid "Space which is inserted between grid columns" +msgstr "ਖਾਲੀ ਥਾਂ, ਜੋ ਕਿ ਗਰਿੱਡ ਕਾਲਮ ਵਿੱਚ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ" + +#: ../gtk/gtkiconview.c:688 +msgid "Margin" +msgstr "ਫਾਸਲਾ" + +#: ../gtk/gtkiconview.c:689 +msgid "Space which is inserted at the edges of the icon view" +msgstr "ਆਈਕਾਨ ਝਲਕ ਦੇ ਕਿਨਾਰੇ ਤੇ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkiconview.c:704 +msgid "Item Orientation" +msgstr "ਆਈਟਮ ਸਥਿਤੀ" + +#: ../gtk/gtkiconview.c:705 +msgid "" +"How the text and icon of each item are positioned relative to each other" +msgstr "ਇੱਕ ਆਈਕਾਨ ਲਈ ਉਸਦਾ ਟੈਕਸਟ ਅਤੇ ਆਈਕਾਨ ਨੂੰ ਕਿਵੇਂ ਟਿਕਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtkiconview.c:721 ../gtk/gtktreeview.c:1026 +#: ../gtk/gtktreeviewcolumn.c:359 +msgid "Reorderable" +msgstr "ਮੁੜ-ਕਰਮਯੋਗ" + +#: ../gtk/gtkiconview.c:722 ../gtk/gtktreeview.c:1027 +msgid "View is reorderable" +msgstr "ਮੁੜ-ਕਰਮਯੋਗ ਦੀ ਤਰਾਂ ਵੇਖੋ" + +#: ../gtk/gtkiconview.c:729 ../gtk/gtktreeview.c:1177 +msgid "Tooltip Column" +msgstr "ਟੂਲ-ਟਿੱਪ ਕਾਲਮ" + +#: ../gtk/gtkiconview.c:730 +msgid "The column in the model containing the tooltip texts for the items" +msgstr "ਮਾਡਲ ਦੇ ਕਾਲਮ ਵਿੱਚ , ਜੋ ਕਿ ਆਈਟਮਾਂ ਲਈ ਟੂਲ-ਟਿੱਪ ਲਵੇਗਾ।" + +#: ../gtk/gtkiconview.c:747 +msgid "Item Padding" +msgstr "ਆਈਟਮ ਚਿਣੋ" + +#: ../gtk/gtkiconview.c:748 +msgid "Padding around icon view items" +msgstr "ਆਈਕਾਨ ਝਲਕ ਆਈਟਮਾਂ ਦੁਆਲੇ ਚਿਣੋ" + +#: ../gtk/gtkiconview.c:776 +msgid "Selection Box Color" +msgstr "ਚੋਣ ਬਕਸਾ ਰੰਗ" + +#: ../gtk/gtkiconview.c:777 +msgid "Color of the selection box" +msgstr "ਚੋਣ ਬਕਸੇ ਦਾ ਰੰਗ" + +#: ../gtk/gtkiconview.c:783 +msgid "Selection Box Alpha" +msgstr "ਚੋਣ ਬਕਸਾ ਐਲਫ਼ਾ" + +#: ../gtk/gtkiconview.c:784 +msgid "Opacity of the selection box" +msgstr "ਚੋਣ ਬਕਸੇ ਦਾ ਬਲੌਰੀਪਨ" + +#: ../gtk/gtkimage.c:236 ../gtk/gtkstatusicon.c:204 +msgid "Pixbuf" +msgstr "ਪਿਕਬਫ" + +#: ../gtk/gtkimage.c:237 ../gtk/gtkstatusicon.c:205 +msgid "A GdkPixbuf to display" +msgstr "ਵੇਖਾਉਣ ਲਈ GdkPixbuf" + +#: ../gtk/gtkimage.c:244 ../gtk/gtkrecentmanager.c:294 +#: ../gtk/gtkstatusicon.c:212 +msgid "Filename" +msgstr "ਫਾਇਲ-ਨਾਂ" + +#: ../gtk/gtkimage.c:245 ../gtk/gtkstatusicon.c:213 +msgid "Filename to load and display" +msgstr "ਲੋਡ ਕਰਨ ਅਤੇ ਵੇਖਾਉਣ ਲਈ ਫਾਇਲ-ਨਾਂ" + +#: ../gtk/gtkimage.c:254 ../gtk/gtkstatusicon.c:221 +msgid "Stock ID for a stock image to display" +msgstr "ਸਟਾਕ ਚਿੱਤਰ ਵੇਖਾਉਣ ਲਈ ਸਟਾਕ ID" + +#: ../gtk/gtkimage.c:261 +msgid "Icon set" +msgstr "ਆਈਕਾਨ ਸੈੱਟ" + +#: ../gtk/gtkimage.c:262 +msgid "Icon set to display" +msgstr "ਵੇਖਾਉਣ ਲਈ ਆਈਕਾਨ ਸੈੱਟ" + +#: ../gtk/gtkimage.c:269 ../gtk/gtkscalebutton.c:227 ../gtk/gtktoolbar.c:518 +#: ../gtk/gtktoolpalette.c:1032 +msgid "Icon size" +msgstr "ਆਈਕਾਨ ਆਕਾਰ" + +#: ../gtk/gtkimage.c:270 +msgid "Symbolic size to use for stock icon, icon set or named icon" +msgstr "ਸਟਾਕ ਆਈਕਾਨ, ਆਈਕਾਨ ਸੈਟ ਜਾਂ ਨਾਂ ਆਈਕਾਨ ਲਈ ਲਿੰਕ ਅਕਾਰ" + +#: ../gtk/gtkimage.c:286 +msgid "Pixel size" +msgstr "ਪਿਕਸਲ ਅਕਾਰ" + +#: ../gtk/gtkimage.c:287 +msgid "Pixel size to use for named icon" +msgstr "ਨਾਮੀ ਆਈਕਾਨ ਲਈ ਪਿਕਸਲ ਅਕਾਰ" + +#: ../gtk/gtkimage.c:295 +msgid "Animation" +msgstr "ਸਜੀਵਤਾ" + +#: ../gtk/gtkimage.c:296 +msgid "GdkPixbufAnimation to display" +msgstr "ਵੇਖਾਉਣ ਲਈ GdkPixbufAnimation" + +#: ../gtk/gtkimage.c:336 ../gtk/gtkstatusicon.c:252 +msgid "Storage type" +msgstr "ਸੰਭਾਲਣ ਦੀ ਕਿਸਮ" + +#: ../gtk/gtkimage.c:337 ../gtk/gtkstatusicon.c:253 +msgid "The representation being used for image data" +msgstr "ਚਿੱਤਰ ਡੈਟਾ ਲਈ ਪੇਸ਼ਕਾਰੀ" + +#: ../gtk/gtkimage.c:355 +#| msgid "Use alpha" +msgid "Use Fallback" +msgstr "ਫਾਲਬੈਕ ਵਰਤੋਂ" + +#: ../gtk/gtkimage.c:356 +#| msgid "Whether to use symbolic icons" +msgid "Whether to use icon names fallback" +msgstr "ਕੀ ਫਾਲਬੈਕ ਆਈਕਾਨ ਨਾਂ ਵਰਤਣੇ ਹਨ" + +#: ../gtk/gtkimagemenuitem.c:150 +msgid "Child widget to appear next to the menu text" +msgstr "ਚਲਾਇਡ ਵਿਦਗਿਟ, ਮੇਨੂ ਟੈਕਸਟ ਤੋਂ ਅੱਗੇ ਦਿੱਸਣ ਲਈ" + +#: ../gtk/gtkimagemenuitem.c:165 +msgid "Whether to use the label text to create a stock menu item" +msgstr "ਸਟਾਕ ਮੇਨੂ ਆਈਟਮ ਬਣਾਉਣ ਲਈ ਕੀ ਲੇਬਲ ਟੈਕਸਟ ਵਰਤਣਾ ਹੈ" + +#: ../gtk/gtkimagemenuitem.c:198 ../gtk/gtkmenu.c:601 +msgid "Accel Group" +msgstr "ਅਸੈੱਲ ਗਰੁੱਪ" + +#: ../gtk/gtkimagemenuitem.c:199 +msgid "The Accel Group to use for stock accelerator keys" +msgstr "ਐਕਸਰਲੇਟਰ ਸਵਿੱਚਾਂ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਅਸੈੱਲ ਗਰੁੱਪ" + +#: ../gtk/gtkinfobar.c:379 ../gtk/gtkmessagedialog.c:202 +msgid "Message Type" +msgstr "ਸੁਨੇਹਾ ਕਿਸਮ" + +#: ../gtk/gtkinfobar.c:380 ../gtk/gtkmessagedialog.c:203 +msgid "The type of message" +msgstr "ਸੁਨੇਹੇ ਦੀ ਕਿਸਮ" + +#: ../gtk/gtkinfobar.c:435 +msgid "Width of border around the content area" +msgstr "ਸਮੱਗਰੀ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkinfobar.c:452 +msgid "Spacing between elements of the area" +msgstr "ਖੇਤਰ ਦੇ ਐਲੀਮੈਂਟ ਵਿੱਚ ਥਾਂ" + +#: ../gtk/gtkinfobar.c:484 +msgid "Width of border around the action area" +msgstr "ਕਾਰਵਾਈ ਖੇਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkinvisible.c:89 ../gtk/gtkmountoperation.c:175 +#: ../gtk/gtkstatusicon.c:271 ../gtk/gtkstylecontext.c:546 +#: ../gtk/gtkwindow.c:729 +msgid "Screen" +msgstr "ਸਕਰੀਨ" + +#: ../gtk/gtkinvisible.c:90 ../gtk/gtkwindow.c:730 +msgid "The screen where this window will be displayed" +msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਕਿ ਵਿੰਡੋ ਵੇਖਾਈ ਜਾਵੇਗੀ" + +#: ../gtk/gtklabel.c:568 +msgid "The text of the label" +msgstr "ਲੇਬਲ ਦੇ ਸ਼ਬਦ" + +#: ../gtk/gtklabel.c:575 +msgid "A list of style attributes to apply to the text of the label" +msgstr "ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਤੇ ਲਾਗੂ ਕਰਨ ਲਈ ਸਟਾਇਲ ਗੁਣਾਂ ਦੀ ਲਿਸਟ" + +#: ../gtk/gtklabel.c:596 ../gtk/gtktexttag.c:353 ../gtk/gtktextview.c:703 +msgid "Justification" +msgstr "ਤਰਕਸੰਗਤ ਕਰੋ" + +#: ../gtk/gtklabel.c:597 +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 " +"GtkMisc::xalign for that" +msgstr "" +"ਲੇਬਲ ਦੇ ਟੈਕਸਟ ਦੀਆਂ ਸਤਰਾਂ ਦੀ ਇੱਕ-ਦੂਰਦੇ ਪ੍ਰਤੀ ਸ਼ਫ਼ਬੰਦੀ ਇਹ ਲੇਬਲ ਦੀ ਉਪਲੱਬਧ ਸਥਿਤੀ " +"ਨੂੰ ਪ੍ਰਭਾਵਿਤ " +"ਨਹੀਂ ਕਰਦੀ ਹੈ। ਇਸ ਦੇ ਲਈGtkMisc::xalign ਨੂੰ ਵੇਖੋ।" + +#: ../gtk/gtklabel.c:605 +msgid "Pattern" +msgstr "ਪੈਟਰਨ" + +#: ../gtk/gtklabel.c:606 +msgid "" +"A string with _ characters in positions correspond to characters in the text " +"to underline" +msgstr "" +"ਕੀ ਸਤਰਾਂ _ ਅੱਖਰਾਂ ਨਾਲ ਜਿੱਥੇ ਕਿ ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ ਹੈ, ਨੂੰ ਸ਼ਬਦਾਂ ਨੂੰ ਹੇਠਾਂ ਲਾਈਨ " +"ਲਾ ਦੇਵੇ" + +#: ../gtk/gtklabel.c:613 +msgid "Line wrap" +msgstr "ਲਾਈਨ ਸਮੇਟੋ" + +#: ../gtk/gtklabel.c:614 +msgid "If set, wrap lines if the text becomes too wide" +msgstr "ਜੇ ਦਿੱਤਾ ਤਾਂ, ਲਾਈਨਾਂ ਨੂੰ ਲੇਪਟਿਆ ਜਾਵੇਗਾ ਜੇਕਰ ਟੈਕਸਟ ਜਿਆਦਾ ਹੀ ਚੌੜਾ ਹੋ ਗਿਆ" + +#: ../gtk/gtklabel.c:629 +msgid "Line wrap mode" +msgstr "ਲਾਈਨ ਲਪੇਟਣ ਮੋਡ" + +#: ../gtk/gtklabel.c:630 +msgid "If wrap is set, controls how linewrapping is done" +msgstr "ਜੇਕਰ ਲਪੇਟਣਾ ਸੈੱਟ ਹੋਵੇ ਤਾਂ ਲਾਈਨ-ਲਪੇਟਣ ਬਾਰੇ ਕੰਟਰੋਲ ਹੋਇਆ" + +#: ../gtk/gtklabel.c:637 +msgid "Selectable" +msgstr "ਚੋਣ-ਯੋਗ" + +#: ../gtk/gtklabel.c:638 +msgid "Whether the label text can be selected with the mouse" +msgstr "ਕੀ ਲੇਬਲ ਦੇ ਸ਼ਬਦ ਮਾਊਸ ਨਾਲ ਚੁਣੇ ਜਾ ਸਕਣ" + +#: ../gtk/gtklabel.c:644 +msgid "Mnemonic key" +msgstr "ਮਨਾਮੈਰਿਕ ਕੀ" + +#: ../gtk/gtklabel.c:645 +msgid "The mnemonic accelerator key for this label" +msgstr "ਇਸ ਲੇਬਲ ਲਈ ਮਨਾਮੈਰਿਕ -ਤੇਜ਼-ਕੀ" + +#: ../gtk/gtklabel.c:653 +msgid "Mnemonic widget" +msgstr "ਮਨਾਮੈਰਿਕ ਵਿਦਗਿਟ" + +#: ../gtk/gtklabel.c:654 +msgid "The widget to be activated when the label's mnemonic key is pressed" +msgstr "ਵਿਦਗਿਟ ਸਰਗਰਮ ਹੋ ਜਾਵੇ ਜਦੋਂ ਕਿ ਲੇਬਲ ਦੀ ਅੰਕੀ ਕੀ ਦਬਾਈ ਜਾਵੇ" + +#: ../gtk/gtklabel.c:700 +msgid "" +"The preferred place to ellipsize the string, if the label does not have " +"enough room to display the entire string" +msgstr "" +"ਅੰਡਾਕਾਰ ਸਤਰ ਲਈ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਲੇਬਲ ਕੋਲ ਲੋੜੀਂਦੀ ਸਤਰ ਵੇਖਾਉਣ ਲਈ ਪੂਰੀ ਥਾਂ ਨਾ " +"ਹੋਵੇ" + +#: ../gtk/gtklabel.c:741 +msgid "Single Line Mode" +msgstr "ਇੱਕਲੀ ਲਾਈਨ ਮੋਡ" + +#: ../gtk/gtklabel.c:742 +msgid "Whether the label is in single line mode" +msgstr "ਕੀ ਲੇਬਲ ਇੱਕ ਇੱਕਲੇ ਲਾਈਨ ਮੋਡ ਵਿੱਚ ਹੋਵੇ" + +#: ../gtk/gtklabel.c:759 +msgid "Angle" +msgstr "ਕੋਣ" + +#: ../gtk/gtklabel.c:760 +msgid "Angle at which the label is rotated" +msgstr "ਕੋਣ, ਜਿਸ ਉੱਤੇ ਲੇਬਲ ਨੂੰ ਘੁੰਮਾਉਣਾ ਹੈ" + +#: ../gtk/gtklabel.c:782 +msgid "The desired maximum width of the label, in characters" +msgstr "ਲੇਬਲ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਲੋੜੀਦੀ ਚੌੜਾਈ, ਅੱਖਰਾਂ ਵਿੱਚ" + +#: ../gtk/gtklabel.c:800 +msgid "Track visited links" +msgstr "ਖੋਲ੍ਹੋ ਲਿੰਕ ਵੇਖੋ" + +#: ../gtk/gtklabel.c:801 +msgid "Whether visited links should be tracked" +msgstr "ਕੀ ਖੋਲ੍ਹੇ ਗਏ ਟਰੈਕਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨਾ ਹੈ" + +#: ../gtk/gtklayout.c:659 +msgid "The width of the layout" +msgstr "ਲੇਆਉਟ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtklayout.c:668 +msgid "The height of the layout" +msgstr "ਲੇਆਉਟ ਦੀ ਉਚਾਈ" + +#: ../gtk/gtklinkbutton.c:173 +msgid "URI" +msgstr "URI" + +#: ../gtk/gtklinkbutton.c:174 +msgid "The URI bound to this button" +msgstr "ਇਸ ਬਟਨ ਲਈ URI ਬਾਊਂਡ" + +#: ../gtk/gtklinkbutton.c:188 +msgid "Visited" +msgstr "ਖੋਲ੍ਹੇ ਗਏ" + +#: ../gtk/gtklinkbutton.c:189 +msgid "Whether this link has been visited." +msgstr "ਕੀ ਇਹ ਲਿੰਕ ਪਹਿਲਾਂ ਖੋਲ੍ਹਿਆ ਗਿਆ ਹੈ।" + +#: ../gtk/gtkmenubar.c:181 +msgid "Pack direction" +msgstr "ਪੈਕ ਦਿਸ਼ਾ" + +#: ../gtk/gtkmenubar.c:182 +msgid "The pack direction of the menubar" +msgstr "ਮੇਨੂ-ਪੱਟੀ ਵਿੱਚ ਪੈਕ ਦੀ ਦਿਸ਼ਾ" + +#: ../gtk/gtkmenubar.c:198 +msgid "Child Pack direction" +msgstr "ਚਾਈਲਡ ਪੈਕ ਦਿਸ਼ਾ" + +#: ../gtk/gtkmenubar.c:199 +msgid "The child pack direction of the menubar" +msgstr "ਮੇਨ-ਪੱਟੀ ਦੀ ਚਾਈਲਡ ਪੈਕ ਦਿਸ਼ਾ" + +#: ../gtk/gtkmenubar.c:208 +msgid "Style of bevel around the menubar" +msgstr "ਮੇਨੂ-ਬਾਰ ਦੇ ਦੁਆਲੇ ਬੀਵਲ ਦਾ ਸਟਾਇਲ" + +#: ../gtk/gtkmenubar.c:215 ../gtk/gtktoolbar.c:568 +msgid "Internal padding" +msgstr "ਅੰਦਰੂਨੀ ਚਿਣਾਈ" + +#: ../gtk/gtkmenubar.c:216 +msgid "Amount of border space between the menubar shadow and the menu items" +msgstr "ਹਾਸ਼ੀਏ ਦੀ ਥਾਂ ਦਾ ਅਕਾਰ ਮੇਨੂ-ਬਾਰ ਦੇ ਪਰਛਾਵੇ ਅਤੇ ਮੇਨੂ ਚੀਜਾਂ ਦੇ ਵਿੱਚਕਾਰ" + +#: ../gtk/gtkmenu.c:587 +msgid "The currently selected menu item" +msgstr "ਮੌਜੂਦਾ ਚੁਣੀ ਮੇਨੂ ਆਈਟਮ ਹੈ।" + +#: ../gtk/gtkmenu.c:602 +msgid "The accel group holding accelerators for the menu" +msgstr "ਮੇਨੂ ਲਈ ਅਸੈੱਲ ਗਰੁੱਪ ਰੱਖਣ ਵਾਲੇ ਐਕਸਰਲੇਟਰ" + +#: ../gtk/gtkmenu.c:616 ../gtk/gtkmenuitem.c:313 +msgid "Accel Path" +msgstr "ਅਸੈੱਲ ਪਾਥ" + +#: ../gtk/gtkmenu.c:617 +msgid "An accel path used to conveniently construct accel paths of child items" +msgstr "ਅਸੈੱਲ ਪਾਥ, ਜੋ ਕਿ ਚਾਈਲਡ ਆਈਟਮਾਂ ਦਾ ਅਸੈਲ ਪਾਥ ਬਣਾਉਣ ਲਈ ਸੌਖਾ ਹੋਵੇ" + +#: ../gtk/gtkmenu.c:633 +msgid "Attach Widget" +msgstr "ਵਿਡਜੈੱਟ ਨੱਥੀ" + +#: ../gtk/gtkmenu.c:634 +msgid "The widget the menu is attached to" +msgstr "ਨੱਥੀ ਕਰਨ ਲਈ ਵਿਡਜੈੱਟ ਮੇਨੂ" + +#: ../gtk/gtkmenu.c:642 +msgid "" +"A title that may be displayed by the window manager when this menu is torn-" +"off" +msgstr "" +"ਜਦੋਂ ਲਿਸਟ ਨੂੰ ਹਟਾਇਆ ਜਾਵੇ ਤਾਂ ਵਿੰਡੋ ਮੈਨੇਜਰ ਦਾ ਉਪਲੱਬਧ ਟਾਇਟਲ, ਜੋ ਕਿ ਦਿੱਸ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkmenu.c:656 +msgid "Tearoff State" +msgstr "ਵੱਖ ਹਾਲਤ" + +#: ../gtk/gtkmenu.c:657 +msgid "A boolean that indicates whether the menu is torn-off" +msgstr "ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ, ਜੋ ਕਿ ਮੇਨੂ ਨੂੰ ਵੱਖ ਹੋਣਯੋਗ ਬਣਾਉਦਾ ਹੈ" + +#: ../gtk/gtkmenu.c:671 +msgid "Monitor" +msgstr "ਮਾਨੀਟਰ" + +#: ../gtk/gtkmenu.c:672 +msgid "The monitor the menu will be popped up on" +msgstr "ਮੇਨੂ ਨਿਗਾਰਨ ਖੁੱਲ੍ਹੇਗਾ" + +#: ../gtk/gtkmenu.c:678 +msgid "Vertical Padding" +msgstr "ਲੰਬਕਾਰੀ ਚਿਣੋ" + +#: ../gtk/gtkmenu.c:679 +msgid "Extra space at the top and bottom of the menu" +msgstr "ਮੇਨੂ ਦੇ ਉੱਤੇ ਅਤੇ ਹੇਠਾਂ ਵਾਧੂ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkmenu.c:701 +msgid "Reserve Toggle Size" +msgstr "ਉਲਟ ਟਾਗਲ ਆਕਾਰ" + +#: ../gtk/gtkmenu.c:702 +msgid "" +"A boolean that indicates whether the menu reserves space for toggles and " +"icons" +msgstr "ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ, ਜੋ ਕਿ ਮੇਨੂ ਨੂੰ ਟਾਗਲ ਅਤੇ ਆਈਕਾਨ ਲਈ ਮੇਨੂ ਉਲਟ ਥਾਂ ਰੱਖੇ।" + +#: ../gtk/gtkmenu.c:708 +msgid "Horizontal Padding" +msgstr "ਖਿਤਿਜੀ ਚਿਣੋ" + +#: ../gtk/gtkmenu.c:709 +msgid "Extra space at the left and right edges of the menu" +msgstr "ਮੇਨੂ ਦੇ ਉੱਪਰਲੇ ਅਤੇ ਹੇਠਲੇ ਕਿਨਾਰੇ ਉੱਤੇ ਵਾਧੂ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtkmenu.c:717 +msgid "Vertical Offset" +msgstr "ਲੰਬਕਾਰੀ ਆਫਸੈੱਟ" + +#: ../gtk/gtkmenu.c:718 +msgid "" +"When the menu is a submenu, position it this number of pixels offset " +"vertically" +msgstr "" +"ਜਦੋਂ ਮੇਨੂ ਵਿੱਚ ਸਬ-ਮੇਨੂ ਹੋਵੇ ਤਾਂ, ਇਸ ਨੂੰ ਇੰਨੇ ਪਿਕਸਿਲ ਲੰਬਕਾਰ ਦਿਸ਼ਾ ਵਿੱਚ ਸੰਤੁਲਿਤ " +"ਕਰੋ" + +#: ../gtk/gtkmenu.c:726 +msgid "Horizontal Offset" +msgstr "ਲੇਟਵੀ ਆਫਸੈੱਟ" + +#: ../gtk/gtkmenu.c:727 +msgid "" +"When the menu is a submenu, position it this number of pixels offset " +"horizontally" +msgstr "" +"ਜਦੋਂ ਮੇਨੂ ਵਿੱਚ ਸਬ-ਮੇਨੂ ਹੋਵੇ ਤਾਂ, ਇਸ ਨੂੰ ਇੰਨੇ ਪਿਕਸਿਲ ਲੇਟਵੀ ਦਿਸ਼ਾ ਸੰਤੁਲਿਤ ਕਰੋ" + +#: ../gtk/gtkmenu.c:735 +msgid "Double Arrows" +msgstr "ਦੋਹਰੇ ਤੀਰ" + +#: ../gtk/gtkmenu.c:736 +msgid "When scrolling, always show both arrows." +msgstr "ਸਕਰੋਲ ਕਰਨ ਦੌਰਾਨ, ਹਮੇਸ਼ਾ ਦੋਵੇਂ ਤੀਰ ਵੇਖਾਓ।" + +#: ../gtk/gtkmenu.c:749 +msgid "Arrow Placement" +msgstr "ਤੀਰ ਥਾਂ" + +#: ../gtk/gtkmenu.c:750 +msgid "Indicates where scroll arrows should be placed" +msgstr "ਵੇਖਾਉਦਾ ਹੈ ਕਿ ਕਿੱਥੇ ਸਕਰੋਲ ਤੀਰ ਰੱਖੇ ਜਾਣਗੇ" + +#: ../gtk/gtkmenu.c:758 +msgid "Left Attach" +msgstr "ਖੱਬਾ ਜੋੜੋ" + +#: ../gtk/gtkmenu.c:766 +msgid "Right Attach" +msgstr "ਸੱਜੇ ਜੋੜੋ" + +#: ../gtk/gtkmenu.c:767 +msgid "The column number to attach the right side of the child to" +msgstr "ਚਲਾਇਡ ਨਾਲ ਸੱਜੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਕਾਲਮ ਦਾ ਨੰਬਰ" + +#: ../gtk/gtkmenu.c:774 +msgid "Top Attach" +msgstr "ਉੱਤੇ ਜੋੜੋ" + +#: ../gtk/gtkmenu.c:775 +msgid "The row number to attach the top of the child to" +msgstr "ਚਲਾਇਡ ਨਾਲ ਉਪਰਲੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਸਤਰ ਦਾ ਨੰਬਰ" + +#: ../gtk/gtkmenu.c:782 +msgid "Bottom Attach" +msgstr "ਹੇਠਾਂ ਜੋੜੋ" + +#: ../gtk/gtkmenu.c:783 ../gtk/gtktable.c:223 +msgid "The row number to attach the bottom of the child to" +msgstr "ਚਲਾਇਡ ਨਾਲ ਹੇਠਲੇ ਪਾਸੇ ਜੋੜਨ ਲਈ ਸਤਰ ਦਾ ਨੰਬਰ" + +#: ../gtk/gtkmenu.c:797 +msgid "Arbitrary constant to scale down the size of the scroll arrow" +msgstr "ਸਕਰੋਲ ਤੀਰ ਦਾ ਸਾਈਜ਼ ਘਟਾਉਣ ਲਈ ਸਥਿਰ ਅੰਕ" + +#: ../gtk/gtkmenuitem.c:281 +msgid "Right Justified" +msgstr "ਸੱਜੇ ਇਕਸਾਰ" + +#: ../gtk/gtkmenuitem.c:282 +msgid "" +"Sets whether the menu item appears justified at the right side of a menu bar" +msgstr "ਮੇਨ ਬਾਰੇ ਦੇ ਸੱਜੇ ਕੋਨੇ ਉੱਤੇ ਮੇਨੂ ਆਈਟਮ ਵੇਖਾਉਣ ਲਈ ਸੈੱਟ ਕਰੇਗਾ" + +#: ../gtk/gtkmenuitem.c:296 +msgid "Submenu" +msgstr "ਸਬ-ਮੇਨੂ" + +#: ../gtk/gtkmenuitem.c:297 +msgid "The submenu attached to the menu item, or NULL if it has none" +msgstr "ਮੇਨ ਆਈਟਮ ਨਾਲ ਜੁੜਿਆ ਸਬ-ਮੇਨੂ, ਜਾਂ ਕੁਝ ਨਾ ਹੋਣ ਦੇ ਰੂਪ ਵਿੱਚ NULL" + +#: ../gtk/gtkmenuitem.c:314 +msgid "Sets the accelerator path of the menu item" +msgstr "ਮੇਨੂ ਆਈਟਮ ਦਾ ਐਕਸਰਲੇਸ਼ਨ ਪਾਥ ਸੈੱਟ ਕਰਦਾ ਹੈ" + +#: ../gtk/gtkmenuitem.c:329 +msgid "The text for the child label" +msgstr "ਚਾਈਲਡ ਲੇਬਲ ਲਈ ਟੈਕਸਟ" + +#: ../gtk/gtkmenuitem.c:392 +msgid "Amount of space used up by arrow, relative to the menu item's font size" +msgstr "ਤੀਰ ਵਲੋਂ ਮੇਨੂ ਆਈਟਮ ਦੇ ਫੋਂਟ ਸਾਈਜ਼ ਮੁਤਾਬਕ ਵਰਤੀ ਥਾਂ ਦੀ ਮਾਤਰਾ" + +#: ../gtk/gtkmenuitem.c:405 +msgid "Width in Characters" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਚੌੜਾਈ" + +#: ../gtk/gtkmenuitem.c:406 +msgid "The minimum desired width of the menu item in characters" +msgstr "ਅੱਖਰਾਂ ਵਿੱਚ ਮੇਨੂ ਆਈਟਮਾਂਂ ਦੀ ਘੱਟੋ-ਘੱਟ ਲੋੜੀਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkmenushell.c:420 +msgid "Take Focus" +msgstr "ਫੋਕਸ ਲਵੋ" + +#: ../gtk/gtkmenushell.c:421 +msgid "A boolean that determines whether the menu grabs the keyboard focus" +msgstr "ਇੱਕ ਬੁਲੀਅਨ, ਜੋ ਕਿ ਮੇਨੂ-ਪੱਟੀ ਵਿੱਚ ਕੀ-ਬੋਰਡ ਫੋਕਸ ਲਵੇ" + +#: ../gtk/gtkmenutoolbutton.c:257 +msgid "Menu" +msgstr "ਮੇਨੂ" + +#: ../gtk/gtkmenutoolbutton.c:258 +msgid "The dropdown menu" +msgstr "ਲਕਟਦਾ ਮੇਨੂ" + +#: ../gtk/gtkmessagedialog.c:185 +msgid "Image/label border" +msgstr "ਚਿੱਤਰ/ਲੇਬਲ ਦਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtkmessagedialog.c:186 +msgid "Width of border around the label and image in the message dialog" +msgstr "ਸੁਨੇਹਾ ਤਖਤੀ ਵਿੱਚ ਲੇਬਲ ਅਤੇ ਚਿੱਤਰ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦਾ ਚੌੜਾਈ" + +#: ../gtk/gtkmessagedialog.c:210 +msgid "Message Buttons" +msgstr "ਸੁਨੇਹਾ ਬਟਨ" + +#: ../gtk/gtkmessagedialog.c:211 +msgid "The buttons shown in the message dialog" +msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਵਿੱਚ ਬਟਨ ਵੇਖਾਓ" + +#: ../gtk/gtkmessagedialog.c:228 +msgid "The primary text of the message dialog" +msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਲਈ ਮੁੱਢਲਾ ਪਾਠ" + +#: ../gtk/gtkmessagedialog.c:243 +msgid "Use Markup" +msgstr "ਮਾਰਕਅੱਪ ਵਰਤੋਂ" + +#: ../gtk/gtkmessagedialog.c:244 +msgid "The primary text of the title includes Pango markup." +msgstr "ਪੈਂਗੋ ਨਿਸ਼ਾਨਬੱਧ ਸਮੇਤ ਟਾਈਟਲ ਦਾ ਮੁੱਢਲਾ ਟੈਕਸਟ ਹੈ।" + +#: ../gtk/gtkmessagedialog.c:258 +msgid "Secondary Text" +msgstr "ਸੈਕੰਡਰੀ ਪਾਠ" + +#: ../gtk/gtkmessagedialog.c:259 +msgid "The secondary text of the message dialog" +msgstr "ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਦਾ ਸੈਕੰਡਰੀ ਪਾਠ" + +#: ../gtk/gtkmessagedialog.c:274 +msgid "Use Markup in secondary" +msgstr "ਸੈਕੰਡਰੀ ਵਿੱਚ ਨਿਸ਼ਾਨਬੱਧ ਵਰਤੋਂ" + +#: ../gtk/gtkmessagedialog.c:275 +msgid "The secondary text includes Pango markup." +msgstr "ਪੈਂਗੋ ਨਿਸ਼ਾਨਬੱਧ ਸਮੇਤ ਸੈਕੰਡਰੀ ਟੈਕਸਟ ਹੈ।" + +#: ../gtk/gtkmessagedialog.c:289 +msgid "Image" +msgstr "ਚਿੱਤਰ" + +#: ../gtk/gtkmessagedialog.c:290 +msgid "The image" +msgstr "ਚਿੱਤਰ" + +#: ../gtk/gtkmessagedialog.c:306 +msgid "Message area" +msgstr "ਸੁਨੇਹਾ ਖੇਤਰ" + +#: ../gtk/gtkmessagedialog.c:307 +msgid "GtkVBox that holds the dialog's primary and secondary labels" +msgstr "GtkVBox ਜੋ ਕਿ ਡਾਈਲਾਗ ਦੇ ਪ੍ਰਾਇਮਰੀ ਤੇ ਸੈਕੰਡਰੀ ਲੇਬਲ ਰੱਖਦਾ ਹੈ" + +#: ../gtk/gtkmisc.c:91 +msgid "Y align" +msgstr "Y ਸ਼ਫ਼ਬੰਦੀ" + +#: ../gtk/gtkmisc.c:92 +msgid "The vertical alignment, from 0 (top) to 1 (bottom)" +msgstr "ਲੰਬਕਾਰੀ ਸ਼ਫ਼ਬੰਦੀ, ਤੋਂ 0 (ਉੱਤੇ) ਤੋਂ 1 (ਹੇਠੋਂ) " + +#: ../gtk/gtkmisc.c:101 +msgid "X pad" +msgstr "X ਚਿਣਨਾ" + +#: ../gtk/gtkmisc.c:102 +msgid "" +"The amount of space to add on the left and right of the widget, in pixels" +msgstr "ਵਿਦਗਿਟ ਦੇ ਖੱਬੇ ਤੇ ਸੱਜੇ ਜੋੜਨ ਲਈ ਖਾਲ਼ੀ ਥਾਂ (ਪਿਕਸਿਲ ਵਿੱਚ)" + +#: ../gtk/gtkmisc.c:111 +msgid "Y pad" +msgstr "Y ਚਿਣਨਾ" + +#: ../gtk/gtkmisc.c:112 +msgid "" +"The amount of space to add on the top and bottom of the widget, in pixels" +msgstr "ਵਿਦਗਿਟ ਦੇ ਉੱਤੇ ਤੇ ਹੇਠਾਂ ਜੋੜਨ ਲਈ ਖਾਲ਼ੀ ਥਾਂ (ਪਿਕਸਿਲ ਵਿੱਚ)" + +#: ../gtk/gtkmountoperation.c:159 +msgid "Parent" +msgstr "ਪੇਰੈਂਟ" + +#: ../gtk/gtkmountoperation.c:160 +msgid "The parent window" +msgstr "ਪੇਰੈਂਟ ਵਿੰਡੋ" + +#: ../gtk/gtkmountoperation.c:167 +msgid "Is Showing" +msgstr "ਵੇਖਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkmountoperation.c:168 +msgid "Are we showing a dialog" +msgstr "ਕੀ ਅਸੀਂ ਡਾਈਲਾਗ ਵੇਖਾ ਰਹੇ ਹਨ" + +#: ../gtk/gtkmountoperation.c:176 +msgid "The screen where this window will be displayed." +msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਇਹ ਵਿੰਡੋ ਵੇਖਾਈ ਜਾਵੇਗੀ।" + +#: ../gtk/gtknotebook.c:685 +msgid "Page" +msgstr "ਸਫ਼ਾ" + +#: ../gtk/gtknotebook.c:686 +msgid "The index of the current page" +msgstr "ਮੌਜੂਦਾ ਸਫ਼ੇ ਦਾ ਇੰਡੈਕਸ" + +#: ../gtk/gtknotebook.c:694 +msgid "Tab Position" +msgstr "ਟੈਬ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtknotebook.c:695 +msgid "Which side of the notebook holds the tabs" +msgstr "ਨੋਟਬੁੱਕ ਦੇ ਕਿਹੜੇ ਪਾਸੇ ਟੈਬਾਂ ਨੂੰ ਸੰਭਾਲਿਆ ਜਾਵੇ" + +#: ../gtk/gtknotebook.c:702 +msgid "Show Tabs" +msgstr "ਟੈਬਾਂ ਵੇਖਾਓ" + +#: ../gtk/gtknotebook.c:703 +msgid "Whether tabs should be shown" +msgstr "ਕੀ ਟੈਬ ਵੇਖਣੀਆਂ ਹਨ" + +#: ../gtk/gtknotebook.c:709 +msgid "Show Border" +msgstr "ਹਾਸ਼ੀਆ ਵੇਖਾਓ" + +#: ../gtk/gtknotebook.c:710 +msgid "Whether the border should be shown" +msgstr "ਕੀ ਬਾਰਡਰ ਵੇਖਣਾ ਹੈ" + +#: ../gtk/gtknotebook.c:716 +msgid "Scrollable" +msgstr "ਸਲਰੋਲ-ਵੋਗ" + +#: ../gtk/gtknotebook.c:717 +msgid "If TRUE, scroll arrows are added if there are too many tabs to fit" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਸਕਰੋਲ ਤੀਰ ਜੋੜੇ ਜਾਣਗੇ ਜੇਕਰ ਜਿਆਦਾ ਟੈਬਾਂ ਆ ਗਈਆ" + +#: ../gtk/gtknotebook.c:723 +msgid "Enable Popup" +msgstr "ਉਭਾਰਨ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: ../gtk/gtknotebook.c:724 +msgid "" +"If TRUE, pressing the right mouse button on the notebook pops up a menu that " +"you can use to go to a page" +msgstr "" +"ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਨੋਟ-ਬੁੱਕ ਤੇ ਮਾਊਸ ਦਾ ਸੱਜਾ ਬਟਨ ਦਬਾਉਣ ਨਾਲ ਮੇਨੂ ਆ ਜਾਵੇਗੀ, ਜੋ ਕਿ " +"ਤੁਸੀਂ ਸਫੇ ਤੇ ਜਾਣ " +"ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ " + +#: ../gtk/gtknotebook.c:738 +msgid "Group Name" +msgstr "ਗਰੁੱਪ ਨਾਂ" + +#: ../gtk/gtknotebook.c:739 +msgid "Group name for tab drag and drop" +msgstr "ਟੈਬ ਚੁੱਕਣ ਅਤੇ ਸੁੱਟਣ ਲਈ ਗਰੁੱਪ ਨਾਂ" + +#: ../gtk/gtknotebook.c:746 +msgid "Tab label" +msgstr "ਟੈਬ ਲੇਬਲ" + +#: ../gtk/gtknotebook.c:747 +msgid "The string displayed on the child's tab label" +msgstr "ਚਾਈਲਡ ਦੇ ਟੈਬ ਲੇਬਲ ਉੱਤੇ ਸਤਰ ਵਿਖਾਈ ਜਾਵੇ" + +#: ../gtk/gtknotebook.c:753 +msgid "Menu label" +msgstr "ਮੇਨੂ ਲੇਬਲ" + +#: ../gtk/gtknotebook.c:754 +msgid "The string displayed in the child's menu entry" +msgstr "ਚਾਈਲਡ ਦੀ ਮੇਨੂ ਇੰਦਰਾਜ਼ ਵਿੱਚ ਸਤਰ ਵੇਖਾਓ" + +#: ../gtk/gtknotebook.c:767 +msgid "Tab expand" +msgstr "ਟੈਬ ਫੈਲਾਓ" + +#: ../gtk/gtknotebook.c:768 +msgid "Whether to expand the child's tab" +msgstr "ਕੀ ਚਲਾਇਡ ਟੈਬ ਨੂੰ ਫੈਲਾਉਣਾ ਹੈ" + +#: ../gtk/gtknotebook.c:774 +msgid "Tab fill" +msgstr "ਟੈਬ ਭਰੋ" + +#: ../gtk/gtknotebook.c:775 +msgid "Whether the child's tab should fill the allocated area" +msgstr "ਕੀ ਚਾਈਲਡ ਦੀ ਟੈਬ ਨੂੰ ਦਿੱਤੇ ਖੇਤਰ ਨੂੰ ਭਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇ" + +#: ../gtk/gtknotebook.c:782 +msgid "Tab reorderable" +msgstr "ਟੈਬ ਮੁੜ-ਕ੍ਰਮਯੋਗ" + +#: ../gtk/gtknotebook.c:783 +msgid "Whether the tab is reorderable by user action" +msgstr "ਕੀ ਟੈਬ ਯੂਜ਼ਰ ਕਾਰਵਾਈ ਰਾਹੀਂ ਮੁੜ-ਕ੍ਰਮਬੱਧ ਹੋਣ ਯੋਗ ਹੋਵੇ" + +#: ../gtk/gtknotebook.c:789 +msgid "Tab detachable" +msgstr "ਟੈਬ ਵੱਖ ਹੋਣ ਯੋਗ" + +#: ../gtk/gtknotebook.c:790 +msgid "Whether the tab is detachable" +msgstr "ਕੀ ਟੈਬ ਵੱਖ ਹੋਣ ਹੋਵੇ" + +#: ../gtk/gtknotebook.c:805 ../gtk/gtkscrollbar.c:102 +msgid "Secondary backward stepper" +msgstr "ਸੈਕੰਡਰੀ ਪਿੱਛੇਵੱਲ ਜਾਣਵਾਲਾ" + +#: ../gtk/gtknotebook.c:806 +msgid "" +"Display a second backward arrow button on the opposite end of the tab area" +msgstr "ਟੈਬ ਖੇਤਰ ਦੇ ਵਿਰੋਧੀ ਸਿਰੇ ਤੇ ਦੂਜਾ ਪਿੱਛੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਓ" + +#: ../gtk/gtknotebook.c:821 ../gtk/gtkscrollbar.c:109 +msgid "Secondary forward stepper" +msgstr "ਸੈਕੰਡਰੀ ਅੱਗੇਵੱਲ ਜਾਣਵਾਲਾ" + +#: ../gtk/gtknotebook.c:822 +msgid "" +"Display a second forward arrow button on the opposite end of the tab area" +msgstr "ਟੈਬ ਖੇਤਰ ਦੇ ਵਿਰੋਧੀ ਸਿਰੇ ਤੇ ਦੂਜਾ ਅੱਗੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਉ" + +#: ../gtk/gtknotebook.c:836 ../gtk/gtkscrollbar.c:88 +msgid "Backward stepper" +msgstr "ਪਿੱਛੇ ਵੱਲ ਜਾਣਵਾਲਾ" + +#: ../gtk/gtknotebook.c:837 ../gtk/gtkscrollbar.c:89 +msgid "Display the standard backward arrow button" +msgstr "ਮਿਆਰੀ ਪਿੱਛੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਉ" + +#: ../gtk/gtknotebook.c:851 ../gtk/gtkscrollbar.c:95 +msgid "Forward stepper" +msgstr "ਅੱਗੇਵੱਲ ਜਾਣਵਾਲਾ" + +#: ../gtk/gtknotebook.c:852 ../gtk/gtkscrollbar.c:96 +msgid "Display the standard forward arrow button" +msgstr "ਸਟੈਂਡਰਡ ਅੱਗੇ ਜਾਣ ਵਾਲਾ ਤੀਰ ਵੇਖਾਓ" + +#: ../gtk/gtknotebook.c:866 +msgid "Tab overlap" +msgstr "ਟੈਬ ਢਕਣ" + +#: ../gtk/gtknotebook.c:867 +msgid "Size of tab overlap area" +msgstr "ਟੈਬ ਢਕਣ ਖੇਤਰ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtknotebook.c:882 +msgid "Tab curvature" +msgstr "ਟੈਬ ਕਰਵੇਚਰ" + +#: ../gtk/gtknotebook.c:883 +msgid "Size of tab curvature" +msgstr "ਟੈਬ ਕਰਵੇਚਰ ਦਾ ਆਕਾਰ" + +#: ../gtk/gtknotebook.c:899 +msgid "Arrow spacing" +msgstr "ਤੀਰ ਥਾਂ" + +#: ../gtk/gtknotebook.c:900 +msgid "Scroll arrow spacing" +msgstr "ਸਕਰੋਲ ਤੀਰ ਥਾਂ" + +#: ../gtk/gtknumerableicon.c:652 +#| msgid "Icon set" +msgid "Icon's count" +msgstr "ਆਈਕਾਨ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtknumerableicon.c:653 +#| msgid "The index of the current page" +msgid "The count of the emblem currently displayed" +msgstr "ਇਸ ਸਮੇਂ ਵੇਖਾਏ ਜਾ ਰਹੇ ਨਿਸ਼ਾਨਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtknumerableicon.c:659 +#| msgid "Icon Name" +msgid "Icon's label" +msgstr "ਆਈਕਾਨ ਦਾ ਲੇਬਲ" + +#: ../gtk/gtknumerableicon.c:660 +#| msgid "The stock icon displayed on the item" +msgid "The label to be displayed over the icon" +msgstr "ਆਈਕਾਨ ਦੇ ਉੱਤੇ ਵੇਖਾਉਣ ਲਈ ਲੇਬਲ" + +#: ../gtk/gtknumerableicon.c:666 +#| msgid "Style context" +msgid "Icon's style context" +msgstr "ਆਈਕਾਨ ਦਾ ਸਟਾਈਲ ਪਰਸੰਗ" + +#: ../gtk/gtknumerableicon.c:667 +msgid "The style context to theme the icon appearance" +msgstr "ਆਈਕਾਨ ਦਿੱਖ ਲਈ ਥੀਮ ਵਾਸਤੇ ਸਟਾਈਲ ਪਰਸੰਗ" + +#: ../gtk/gtknumerableicon.c:673 +#| msgid "Background color" +msgid "Background icon" +msgstr "ਬੈਕਗਰਾਊਂਡ ਆਈਕਾਨ" + +#: ../gtk/gtknumerableicon.c:674 +msgid "The icon for the number emblem background" +msgstr "ਅੰਕ ਨਿਸ਼ਾਨ ਬੈਕਗਰਾਊਂਡ ਲਈ ਆਈਕਾਨ" + +#: ../gtk/gtknumerableicon.c:680 +#| msgid "Background color name" +msgid "Background icon name" +msgstr "ਬੈਕਗਰਾਊਂਡ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtknumerableicon.c:681 +#| msgid "The icon name to use for the printer" +msgid "The icon name for the number emblem background" +msgstr "ਅੰਕ ਨਿਸ਼ਾਨ ਬੈਕਗਰਾਊਂਡ ਲਈ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkorientable.c:63 ../gtk/gtkstatusicon.c:311 +#: ../gtk/gtktrayicon-x11.c:125 +msgid "Orientation" +msgstr "ਹਾਲਤ" + +#: ../gtk/gtkorientable.c:64 +msgid "The orientation of the orientable" +msgstr "ਸਥਿਤੀ-ਯੋਗ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtkpaned.c:327 +msgid "" +"Position of paned separator in pixels (0 means all the way to the left/top)" +msgstr "" +"ਪੈਨਡ ਵੱਖਰੇਵੇ ਦੀ ਸਥਿਤੀ ਪਿਕਸਲ ਵਿੱਚ (0 ਦਾ ਅਰਥ ਹੈ ਸਭ ਪਾਸਿਆ ਤੋਂ ਖੱਬੇ/ਉੱਤੇ ਵੱਲ)" + +#: ../gtk/gtkpaned.c:336 +msgid "Position Set" +msgstr "ਸਥਿਤੀ ਸੈੱਟ" + +#: ../gtk/gtkpaned.c:337 +msgid "TRUE if the Position property should be used" +msgstr "ਸਹੀ ਜੇਕਰ ਸਥਿਤੀ-ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkpaned.c:343 +msgid "Handle Size" +msgstr "ਹੈਡਲ ਅਕਾਰ" + +#: ../gtk/gtkpaned.c:344 +msgid "Width of handle" +msgstr "ਹੈਡਲ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtkpaned.c:360 +msgid "Minimal Position" +msgstr "ਘੱਟੋ-ਘੱਟੋ ਟਿਕਾਣਾ" + +#: ../gtk/gtkpaned.c:361 +msgid "Smallest possible value for the \"position\" property" +msgstr "\"ਟਿਕਾਣਾ\" ਵਿਸ਼ੇਸ਼ਤਾ ਲਈ ਸੰਭਵ ਛੋਟੇ ਤੋਂ ਛੋਟਾ ਮੁੱਲ" + +#: ../gtk/gtkpaned.c:378 +msgid "Maximal Position" +msgstr "ਵੱਡੀ ਤੋਂ ਵੱਡੀ ਟਿਕਾਣਾ" + +#: ../gtk/gtkpaned.c:379 +msgid "Largest possible value for the \"position\" property" +msgstr "\"ਟਿਕਾਣਾ\" ਵਿਸ਼ੇਸ਼ਤਾ ਲਈ ਸੰਭਵ ਵੱਡੇ ਤੋਂ ਵੱਡਾ ਮੁੱਲ" + +#: ../gtk/gtkpaned.c:396 +msgid "Resize" +msgstr "ਮੁੜ-ਅਕਾਰ" + +#: ../gtk/gtkpaned.c:397 +msgid "If TRUE, the child expands and shrinks along with the paned widget" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਚਲਾਇਡ ਪੈਨਲ ਵਿਦਗਿਟ ਨਾਲ ਫੈਲ਼ ਅਤੇ ਸੁੰਘੜ ਸਕਦਾ ਹੈ " + +#: ../gtk/gtkpaned.c:412 +msgid "Shrink" +msgstr "ਸੁੰਘੜੋ" + +#: ../gtk/gtkpaned.c:413 +msgid "If TRUE, the child can be made smaller than its requisition" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਚਲਾਇਡ ਇਸ ਦੇ ਅਸਲੀ ਅਕਾਰ ਤੋਂ ਛੋਟਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkplug.c:180 ../gtk/gtkstatusicon.c:295 +msgid "Embedded" +msgstr "ਸ਼ਾਮਲ ਕੀਤਾ" + +#: ../gtk/gtkplug.c:181 +msgid "Whether the plug is embedded" +msgstr "ਕੀ ਪਲੱਗ ਸ਼ਾਮਲ (ਇੰਬੈੱਡ) ਕੀਤਾ ਜਾਵੇ" + +#: ../gtk/gtkplug.c:195 +msgid "Socket Window" +msgstr "ਸਾਕਟ ਵਿੰਡੋ" + +#: ../gtk/gtkplug.c:196 +msgid "The window of the socket the plug is embedded in" +msgstr "ਇੰਬੈੱਡ ਕੀਤੇ ਪਲੱਗਇ ਦੇ ਸਾਕਟ ਦੀ ਵਿੰਡੋ" + +#: ../gtk/gtkprinter.c:126 +msgid "Name of the printer" +msgstr "ਪਰਿੰਟਰ ਦਾ ਨਾਂ" + +#: ../gtk/gtkprinter.c:132 +msgid "Backend" +msgstr "ਬੈਕਐਂਡ" + +#: ../gtk/gtkprinter.c:133 +msgid "Backend for the printer" +msgstr "ਪਰਿੰਟਰ ਲਈ ਬੈਕਐਂਡ" + +#: ../gtk/gtkprinter.c:139 +msgid "Is Virtual" +msgstr "ਫ਼ਰਜ਼ੀ ਹੈ" + +#: ../gtk/gtkprinter.c:140 +msgid "FALSE if this represents a real hardware printer" +msgstr "ਝੂਠ, ਜੇਕਰ ਇਹ ਇੱਕ ਅਸਲੀ ਹਾਰਡਵੇਅਰ ਪਰਿੰਟਰ ਨੂੰ ਵੇਖਾਉਦਾ ਹੈ" + +#: ../gtk/gtkprinter.c:146 +msgid "Accepts PDF" +msgstr "PDF ਮਨਜ਼ੂਰ" + +#: ../gtk/gtkprinter.c:147 +msgid "TRUE if this printer can accept PDF" +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਰ PDF ਮਨਜ਼ੂਰ ਕਰਦਾ ਹੋਵੇ" + +#: ../gtk/gtkprinter.c:153 +msgid "Accepts PostScript" +msgstr "ਪੋਸਟਸਕਰਿਪਟ ਮਨਜ਼ੂਰ" + +#: ../gtk/gtkprinter.c:154 +msgid "TRUE if this printer can accept PostScript" +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਰ ਪੋਸਟ-ਸਕਰਿਪਟ ਮਨਜ਼ੂਰ ਕਰਦਾ ਹੋਵੇ" + +#: ../gtk/gtkprinter.c:160 +msgid "State Message" +msgstr "ਹਾਲਤ ਸੁਨੇਹਾ" + +#: ../gtk/gtkprinter.c:161 +msgid "String giving the current state of the printer" +msgstr "ਪਰਿੰਟਰ ਦੀ ਹਾਲਤ ਦੱਸਣ ਵਾਲੀ ਸਤਰ" + +#: ../gtk/gtkprinter.c:167 msgid "Location" msgstr "ਟਿਕਾਣਾ" -#. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprinter.c:168 +msgid "The location of the printer" +msgstr "ਪਰਿੰਟਰ ਦਾ ਟਿਕਾਣਾ" + +#: ../gtk/gtkprinter.c:175 +msgid "The icon name to use for the printer" +msgstr "ਪਰਿੰਟਰ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtkprinter.c:181 +msgid "Job Count" +msgstr "ਜਾਬ ਗਿਣਤੀ" + +#: ../gtk/gtkprinter.c:182 +msgid "Number of jobs queued in the printer" +msgstr "ਪਰਿੰਟਰ ਵਿੱਚ ਕਤਾਰਬੱਧ ਕੰਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkprinter.c:200 +msgid "Paused Printer" +msgstr "ਵਿਰਾਮ ਕੀਤਾ ਪਰਿੰਟਰ" + +#: ../gtk/gtkprinter.c:201 +msgid "TRUE if this printer is paused" +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਰ ਵਿਰਾਮ ਹੈ" + +#: ../gtk/gtkprinter.c:214 +msgid "Accepting Jobs" +msgstr "ਜਾਬ ਲੈ ਰਿਹਾ" + +#: ../gtk/gtkprinter.c:215 +msgid "TRUE if this printer is accepting new jobs" +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਰ ਨਵੇਂ ਜਾਬ ਮਨਜ਼ੂਰ ਕਰਦਾ ਹੋਵੇ" + +#: ../gtk/gtkprinteroptionwidget.c:121 +msgid "Source option" +msgstr "ਸਰੋਤ ਚੋਣਾਂ" + +#: ../gtk/gtkprinteroptionwidget.c:122 +msgid "The PrinterOption backing this widget" +msgstr "ਇਹ ਵਿਦਗਿਟ ਲਈ PrinterOption ਬੈਕਿੰਗ ਹੈ" + +#: ../gtk/gtkprintjob.c:142 +msgid "Title of the print job" +msgstr "ਪਰਿੰਟ ਜਾਬ ਦਾ ਟਾਇਟਲ" + +#: ../gtk/gtkprintjob.c:150 +msgid "Printer" +msgstr "ਪਰਿੰਟਰ" + +#: ../gtk/gtkprintjob.c:151 +msgid "Printer to print the job to" +msgstr "ਪਰਿੰਟ ਜਾਬ ਲਈ ਪਰਿੰਟਰ" + +#: ../gtk/gtkprintjob.c:159 +msgid "Settings" +msgstr "ਸੈਟਿੰਗ" + +#: ../gtk/gtkprintjob.c:160 +msgid "Printer settings" +msgstr "ਪਰਿੰਟਰ ਸੈਟਿੰਗ" + +#: ../gtk/gtkprintjob.c:168 ../gtk/gtkprintjob.c:169 +#: ../gtk/gtkprintunixdialog.c:298 +msgid "Page Setup" +msgstr "ਸਫ਼ਾ ਸੈੱਟਅੱਪ" + +#: ../gtk/gtkprintjob.c:177 ../gtk/gtkprintoperation.c:1136 +msgid "Track Print Status" +msgstr "ਪਰਿੰਟ ਹਾਲਤ ਟਰੈਕ" + +#: ../gtk/gtkprintjob.c:178 +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." +msgstr "" +"ਸਹੀਂ, ਜੇ ਪਰਿੰਟ ਕਾਰਵਾਈ ਬਦਲਵੇਂ ਹਾਲਤ ਮੁਤਾਬਕ ਸਿੰਗਨਲ ਦਿੰਦਾ ਰਹੇ, ਭਾਵੇਂ ਕਿ ਪਰਿੰਟ " +"ਡਾਟਾ ਪਰਿੰਟਰ ਜਾਂ " +"ਪਰਿੰਟ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੋਵੇ।" + +#: ../gtk/gtkprintoperation.c:1008 +msgid "Default Page Setup" +msgstr "ਡਿਫਾਲਟ ਸਫ਼ਾ ਸੈੱਟਅੱਪ" + +#: ../gtk/gtkprintoperation.c:1009 +msgid "The GtkPageSetup used by default" +msgstr "ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ GtkPageSetup" + +#: ../gtk/gtkprintoperation.c:1027 ../gtk/gtkprintunixdialog.c:316 +msgid "Print Settings" +msgstr "ਪਰਿੰਟ ਸੈਟਿੰਗ" + +#: ../gtk/gtkprintoperation.c:1028 ../gtk/gtkprintunixdialog.c:317 +msgid "The GtkPrintSettings used for initializing the dialog" +msgstr "ਡਾਈਲਾਗ ਸ਼ੁਰੂ ਕਰਨ ਲਈ GtkPrintSettings" + +#: ../gtk/gtkprintoperation.c:1046 +msgid "Job Name" +msgstr "ਜਾਬ ਨਾਂ" + +#: ../gtk/gtkprintoperation.c:1047 +msgid "A string used for identifying the print job." +msgstr "ਪਰਿੰਟ ਕੰਮ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਇੱਕ ਸਤਰ ਹੈ।" + +#: ../gtk/gtkprintoperation.c:1071 +msgid "Number of Pages" +msgstr "ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkprintoperation.c:1072 +msgid "The number of pages in the document." +msgstr "ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: ../gtk/gtkprintoperation.c:1093 ../gtk/gtkprintunixdialog.c:306 +msgid "Current Page" +msgstr "ਮੌਜੂਦਾ ਸਫ਼ਾ" + +#: ../gtk/gtkprintoperation.c:1094 ../gtk/gtkprintunixdialog.c:307 +msgid "The current page in the document" +msgstr "ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਮੌਜੂਦਾ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkprintoperation.c:1115 +msgid "Use full page" +msgstr "ਪੂਰਾ ਸਫ਼ਾ ਵਰਤੋਂ" + +#: ../gtk/gtkprintoperation.c:1116 +msgid "" +"TRUE if the origin of the context should be at the corner of the page and " +"not the corner of the imageable area" +msgstr "" +"ਸਹੀ, ਜੇ ਪਰਸੰਗ ਦੀ ਸ਼ੁਰੂਆਤ ਸਫ਼ੇ ਦੇ ਕੋਨੇ ਤੋਂ ਹੋਵੇ ਅਤੇ ਚਿੱਤਰ-ਯੋਗ ਖੇਤਰ ਦੇ ਕੋਨੇ ਤੋਂ " +"ਨਹੀਂ" + +#: ../gtk/gtkprintoperation.c:1137 +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." +msgstr "" +"ਸਹੀਂ, ਜੇ ਪਰਿੰਟ ਓਪਰੇਸ਼ਨ ਪਰਿੰਟ ਜਾਬ ਹਾਲਤ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿੰਦਾ ਰਹੇ, ਭਾਵੇਂ ਕਿ ਪਰਿੰਟ " +"ਡਾਟਾ ਪਰਿੰਟਰ " +"ਜਾਂ ਪਰਿੰਟ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੋਵੇ।" + +#: ../gtk/gtkprintoperation.c:1154 +msgid "Unit" +msgstr "ਯੂਨਿਟ" + +#: ../gtk/gtkprintoperation.c:1155 +msgid "The unit in which distances can be measured in the context" +msgstr "ਪਰਸੰਗ ਵਿੱਚ ਦੂਰੀ ਮਾਪਣ ਵਾਸਤੇ ਇਕਾਈ" + +#: ../gtk/gtkprintoperation.c:1172 +msgid "Show Dialog" +msgstr "ਡਾਈਲਾਗ ਵੇਖਾਓ" + +#: ../gtk/gtkprintoperation.c:1173 +msgid "TRUE if a progress dialog is shown while printing." +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟਿੰਗ ਦੌਰਾਨ ਤਰੱਕੀ ਡਾਈਲਾਗ ਵੇਖਾਉਣਾ ਹੈ।" + +#: ../gtk/gtkprintoperation.c:1196 +msgid "Allow Async" +msgstr "ਅਸਮਕਾਲੀ ਵਰਤੋਂ" + +#: ../gtk/gtkprintoperation.c:1197 +msgid "TRUE if print process may run asynchronous." +msgstr "ਸੱਚ, ਜੇਕਰ ਪਰਿੰਟ ਕਾਰਵਾਈ ਅਸਮਕਾਲੀ ਢੰਗ ਨਾਲ ਚੱਲ ਸਕਦਾ ਹੋਵੇ।" + +#: ../gtk/gtkprintoperation.c:1219 ../gtk/gtkprintoperation.c:1220 +msgid "Export filename" +msgstr "ਫਾਇਲ-ਨਾਂ ਐਕਸਪੋਰਟ" + +#: ../gtk/gtkprintoperation.c:1234 msgid "Status" msgstr "ਹਾਲਤ" -#: ../gtk/gtkprintunixdialog.c:2186 -msgid "Range" -msgstr "ਰੇਜ਼" +#: ../gtk/gtkprintoperation.c:1235 +msgid "The status of the print operation" +msgstr "ਪਰਿੰਟਰ ਦੀ ਕਾਰਜਕਾਰੀ ਹਾਲਤ" -#: ../gtk/gtkprintunixdialog.c:2190 -msgid "_All Pages" -msgstr "ਸਭ ਸਫ਼ਾ(_A)" +#: ../gtk/gtkprintoperation.c:1255 +msgid "Status String" +msgstr "ਹਾਲਤ ਸਤਰ" -#: ../gtk/gtkprintunixdialog.c:2197 -msgid "C_urrent Page" -msgstr "ਮੌਜੂਦਾ ਸਫ਼ਾ(_u)" +#: ../gtk/gtkprintoperation.c:1256 +msgid "A human-readable description of the status" +msgstr "ਹਾਲਤ ਦੀ ਪੜ੍ਹਨਯੋਗ ਵੇਰਵਾ" -#: ../gtk/gtkprintunixdialog.c:2207 -msgid "Se_lection" -msgstr "ਚੋਣ(_l): " +#: ../gtk/gtkprintoperation.c:1274 +msgid "Custom tab label" +msgstr "ਮੌਜਦਾ ਟੈਬ ਲੇਬਲ" -#: ../gtk/gtkprintunixdialog.c:2216 -msgid "Pag_es:" -msgstr "ਸਫ਼ਾ(_e):" +#: ../gtk/gtkprintoperation.c:1275 +msgid "Label for the tab containing custom widgets." +msgstr "ਕਸਟਮ ਵਿਦਗਿਟ ਰੱਖਣ ਵਾਲੀ ਟੈਬ ਲਈ ਲੇਬਲ ਹੈ।" -#: ../gtk/gtkprintunixdialog.c:2217 -msgid "" -"Specify one or more page ranges,\n" -" e.g. 1-3,7,11" +#: ../gtk/gtkprintoperation.c:1290 ../gtk/gtkprintunixdialog.c:341 +msgid "Support Selection" +msgstr "ਚੋਣ ਸਹਿਯੋਗ" + +#: ../gtk/gtkprintoperation.c:1291 +msgid "TRUE if the print operation will support print of selection." +msgstr "ਜੇ ਪਰਿੰਟਰ ਕਾਰਵਾਈ ਚੋਣ ਲਈ ਪਰਿੰਟ ਲਈ ਸਹਾਇਕ ਹੋਵੇ ਤਾਂ ਸਹੀਂ।" + +#: ../gtk/gtkprintoperation.c:1307 ../gtk/gtkprintunixdialog.c:349 +msgid "Has Selection" +msgstr "ਚੋਣ ਹੈ" + +#: ../gtk/gtkprintoperation.c:1308 +msgid "TRUE if a selection exists." +msgstr "ਸਹੀ, ਜੇ ਚੋਣ ਮੌਜੂਦ ਹੈ" + +#: ../gtk/gtkprintoperation.c:1323 ../gtk/gtkprintunixdialog.c:357 +msgid "Embed Page Setup" +msgstr "ਵਿੱਚੇ ਸ਼ਾਮਲ ਸਫ਼ਾ ਸੈਟਅੱਪ" + +#: ../gtk/gtkprintoperation.c:1324 +msgid "TRUE if page setup combos are embedded in GtkPrintDialog" +msgstr "ਸਹੀ, ਜੇ ਸਫ਼ਾ ਸੈਟਅੱਪ ਨੂੰ GtkPrintDialog ਵਿੱਚ ਹੀ ਸ਼ਾਮਲ ਰੱਖਣਾ ਹੈ" + +#: ../gtk/gtkprintoperation.c:1345 +msgid "Number of Pages To Print" +msgstr "ਛਾਪਣ ਲਈ ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkprintoperation.c:1346 +msgid "The number of pages that will be printed." +msgstr "ਸਫ਼ਿਆਂ ਦੀ ਗਿਣਤੀ, ਜੋ ਕਿ ਛਾਪੇ ਜਾਣਗੇ।" + +#: ../gtk/gtkprintunixdialog.c:299 +msgid "The GtkPageSetup to use" +msgstr "ਵਰਤਣ ਲਈ GtkPageSetup" + +#: ../gtk/gtkprintunixdialog.c:324 +msgid "Selected Printer" +msgstr "ਚੁਣਿਆ ਪਰਿੰਟਰ" + +#: ../gtk/gtkprintunixdialog.c:325 +msgid "The GtkPrinter which is selected" +msgstr "GtkPrinter, ਜੋ ਕਿ ਚੁਣਿਆ ਹੈ" + +#: ../gtk/gtkprintunixdialog.c:332 +msgid "Manual Capabilities" +msgstr "ਦਸਤੀ ਸਮਰੱਥਾ" + +#: ../gtk/gtkprintunixdialog.c:333 +msgid "Capabilities the application can handle" +msgstr "ਐਪਲੀਕੇਸ਼ਨ ਜੋ ਸਮਰੱਥਾ ਹੈਂਡਲ ਕਰ ਸਕਦੀ ਹੈ" + +#: ../gtk/gtkprintunixdialog.c:342 +msgid "Whether the dialog supports selection" +msgstr "ਕੀ ਡਾਈਲਾਗ ਚੋਣ ਸਹਿਯੋਗ ਦੇਵੇ" + +#: ../gtk/gtkprintunixdialog.c:350 +msgid "Whether the application has a selection" +msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਚੋਣ ਦੇਵੇ" + +#: ../gtk/gtkprintunixdialog.c:358 +msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog" +msgstr "ਸਹੀ, ਜੇ ਸਫ਼ਾ ਸੈਟਅੱਪ GtkPrintUnixDialog ਵਿਚੇ ਹੀ ਸ਼ਾਮਲ ਹੋਵੇ" + +#: ../gtk/gtkprogressbar.c:161 +msgid "Fraction" +msgstr "ਭਾਗ" + +#: ../gtk/gtkprogressbar.c:162 +msgid "The fraction of total work that has been completed" +msgstr "ਕੁੱਲ ਕੰਮ ਦੇ ਹਿੱਸੇ ਜੋ ਕਿ ਪੂਰੇ ਹੋ ਗਏ ਹਨ" + +#: ../gtk/gtkprogressbar.c:169 +msgid "Pulse Step" +msgstr "ਪਲਸ ਸਟੈਪ" + +#: ../gtk/gtkprogressbar.c:170 +msgid "The fraction of total progress to move the bouncing block when pulsed" msgstr "" -"ਇੱਕ ਜਾਂ ਵੱਧ ਸਫ਼ਾ ਰੇਜ਼ ਦਿਓ ਜਿਵੇਂ,\n" -" ੧-੩,੭,੧੧" +"ਕੁੱਲ ਕੰਮ ਦੇ ਹਿੱਸੇ ਜੋ ਕਿ ਜਦੋਂ ਲਹਿਰ ਆਉਦੀ ਹੈ ਤਾਂ ਬਲਾਕ ਨੂੰ ਅੱਗੇ ਖਿਸਕਾਉਦੇ ਹਨ" -#: ../gtk/gtkprintunixdialog.c:2227 -msgid "Pages" -msgstr "ਸਫ਼ੇ" +#: ../gtk/gtkprogressbar.c:178 +msgid "Text to be displayed in the progress bar" +msgstr "ਤਰੱਕੀ-ਪੱਟੀ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸ਼ਬਦ" -#: ../gtk/gtkprintunixdialog.c:2240 -msgid "Copies" -msgstr "ਕਾਪੀਆਂ" +#: ../gtk/gtkprogressbar.c:195 +msgid "Show text" +msgstr "ਟੈਕਸਟ ਵੇਖੋ" -#. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 -msgid "Copie_s:" -msgstr "ਕਾਪੀਆਂ(_s):" +#: ../gtk/gtkprogressbar.c:196 +msgid "Whether the progress is shown as text." +msgstr "ਕੀ ਤਰੱਕੀ ਨੂੰ ਸ਼ਬਦ ਵਾਂਗ ਵੇਖਾਇਆ ਜਾਵੇ।" -#: ../gtk/gtkprintunixdialog.c:2263 -msgid "C_ollate" -msgstr "ਸਮੇਟੋ(_o)" - -#: ../gtk/gtkprintunixdialog.c:2271 -msgid "_Reverse" -msgstr "ਉਲਟ(_R)" - -#: ../gtk/gtkprintunixdialog.c:2291 -msgid "General" -msgstr "ਆਮ" - -#. Translators: These strings name the possible arrangements of -#. * multiple pages on a sheet when printing (same as in gtkprintbackendcups.c) -#. -#. Translators: These strings name the possible arrangements of -#. * multiple pages on a sheet when printing -#. -#: ../gtk/gtkprintunixdialog.c:3017 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 -msgid "Left to right, top to bottom" -msgstr "ਖੱਬੇ ਤੋਂ ਸੱਜੇ, ਉੱਤੇ ਤੋਂ ਤਲ" - -#: ../gtk/gtkprintunixdialog.c:3017 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3508 -msgid "Left to right, bottom to top" -msgstr "ਖੱਬੇ ਤੋਂ ਸੱਜੇ, ਤਲ ਤੋਂ ਉੱਤੇ" - -#: ../gtk/gtkprintunixdialog.c:3018 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 -msgid "Right to left, top to bottom" -msgstr "ਸੱਜੇ ਤੋਂ ਖੱਬੇ, ਉੱਤੇ ਤੋਂ ਤਲ" - -#: ../gtk/gtkprintunixdialog.c:3018 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3509 -msgid "Right to left, bottom to top" -msgstr "ਸੱਜੇ ਤੋਂ ਖੱਬੇ, ਤਲ ਤੋਂ ਉੱਤੇ" - -#: ../gtk/gtkprintunixdialog.c:3019 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 -msgid "Top to bottom, left to right" -msgstr "ਉੱਤੇ ਤੋਂ ਹੇਠਾਂ, ਖੱਬੇ ਤੋਂ ਸੱਜੇ" - -#: ../gtk/gtkprintunixdialog.c:3019 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3510 -msgid "Top to bottom, right to left" -msgstr "ਉੱਤੇ ਤੋਂ ਹੇਠਾਂ, ਖੱਬੇ ਤੋਂ ਸੱਜੇ" - -#: ../gtk/gtkprintunixdialog.c:3020 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 -msgid "Bottom to top, left to right" -msgstr "ਤਲ ਤੋਂ ਉੱਤੇ, ਖੱਬੇ ਤੋਂ ਸੱਜੇ" - -#: ../gtk/gtkprintunixdialog.c:3020 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3511 -msgid "Bottom to top, right to left" -msgstr "ਤਲ ਤੋਂ ਉੱਤੇ, ਸੱਜੇ ਤੋਂ ਖੱਬੇ" - -#. Translators, this string is used to label the option in the print -#. * dialog that controls in what order multiple pages are arranged -#. -#: ../gtk/gtkprintunixdialog.c:3024 ../gtk/gtkprintunixdialog.c:3037 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3543 -msgid "Page Ordering" -msgstr "ਸਫ਼ਾ ਕ੍ਰਮ" - -#: ../gtk/gtkprintunixdialog.c:3053 -msgid "Left to right" -msgstr "ਖੱਬੇ ਤੋਂ ਸੱਜੇ" - -#: ../gtk/gtkprintunixdialog.c:3054 -msgid "Right to left" -msgstr "ਸੱਜੇ ਤੋਂ ਖੱਬੇ" - -#: ../gtk/gtkprintunixdialog.c:3066 -msgid "Top to bottom" -msgstr "ਉੱਤੇ ਤੋਂ ਹੇਠਾਂ" - -#: ../gtk/gtkprintunixdialog.c:3067 -msgid "Bottom to top" -msgstr "ਤਲ ਤੋਂ ਉੱਤੇ" - -#: ../gtk/gtkprintunixdialog.c:3307 -msgid "Layout" -msgstr "ਲੇਆਉਟ" - -#: ../gtk/gtkprintunixdialog.c:3311 -msgid "T_wo-sided:" -msgstr "ਦੋ ਪਾਸੀਂ(_w):" - -#: ../gtk/gtkprintunixdialog.c:3326 -msgid "Pages per _side:" -msgstr "ਪ੍ਰਤੀ ਸਾਇਡ ਲਈ ਸਫ਼ਾ(_s):" - -#: ../gtk/gtkprintunixdialog.c:3343 -msgid "Page or_dering:" -msgstr "ਸਫ਼ਾ ਜਾਂ ਡੀਰਿੰਗ(_d):" - -#: ../gtk/gtkprintunixdialog.c:3359 -msgid "_Only print:" -msgstr "ਸਿਰਫ਼ ਪਰਿੰਟ(_O):" - -#. In enum order -#: ../gtk/gtkprintunixdialog.c:3374 -msgid "All sheets" -msgstr "ਸਭ ਸ਼ੀਟਾਂ" - -#: ../gtk/gtkprintunixdialog.c:3375 -msgid "Even sheets" -msgstr "ਜਿਸਤ ਸ਼ੀਟਾਂ" - -#: ../gtk/gtkprintunixdialog.c:3376 -msgid "Odd sheets" -msgstr "ਟਾਂਕ ਸ਼ੀਟਾਂ" - -#: ../gtk/gtkprintunixdialog.c:3379 -msgid "Sc_ale:" -msgstr "ਸਕੇਲ(_a):" - -#: ../gtk/gtkprintunixdialog.c:3406 -msgid "Paper" -msgstr "ਸਫ਼ਾ" - -#: ../gtk/gtkprintunixdialog.c:3410 -msgid "Paper _type:" -msgstr "ਸਫ਼ਾ ਕਿਸਮ(_t):" - -#: ../gtk/gtkprintunixdialog.c:3425 -msgid "Paper _source:" -msgstr "ਸਫ਼ਾ ਸਰੋਤ(_s):" - -#: ../gtk/gtkprintunixdialog.c:3440 -msgid "Output t_ray:" -msgstr "ਆਉਟਪੁੱਟ ਟਰੇ(_r):" - -#: ../gtk/gtkprintunixdialog.c:3480 -msgid "Or_ientation:" -msgstr "ਸਥਿਤੀ(_i):" - -#. In enum order -#: ../gtk/gtkprintunixdialog.c:3495 -msgid "Portrait" -msgstr "ਪੋਰਟਰੇਟ" - -#: ../gtk/gtkprintunixdialog.c:3496 -msgid "Landscape" -msgstr "ਲੈਂਡਸਕੇਪ" - -#: ../gtk/gtkprintunixdialog.c:3497 -msgid "Reverse portrait" -msgstr "ਉਲਟ ਪੋਰਟਰੇਟ" - -#: ../gtk/gtkprintunixdialog.c:3498 -msgid "Reverse landscape" -msgstr "ਉਲਟ ਲੈਂਡਸਕੇਪ" - -#: ../gtk/gtkprintunixdialog.c:3543 -msgid "Job Details" -msgstr "ਕੰਮ ਵੇਰਵਾ" - -#: ../gtk/gtkprintunixdialog.c:3549 -msgid "Pri_ority:" -msgstr "ਤਰਜੀਹ(_o):" - -#: ../gtk/gtkprintunixdialog.c:3564 -msgid "_Billing info:" -msgstr "ਬਿੱਲ ਜਾਣਕਾਰੀ(_B):" - -#: ../gtk/gtkprintunixdialog.c:3582 -msgid "Print Document" -msgstr "ਦਸਤਾਵੇਜ਼ ਛਾਪੋ" - -#. Translators: this is one of the choices for the print at option -#. * in the print dialog -#. -#: ../gtk/gtkprintunixdialog.c:3591 -msgid "_Now" -msgstr "ਹੁਣੇ(_N)" - -#: ../gtk/gtkprintunixdialog.c:3602 -msgid "A_t:" -msgstr "ਵਜੇ(_t):" - -#. Translators: Ability to parse the am/pm format depends on actual locale. -#. * You can remove the am/pm values below for your locale if they are not -#. * supported. -#. -#: ../gtk/gtkprintunixdialog.c:3608 +#: ../gtk/gtkprogressbar.c:218 msgid "" -"Specify the time of print,\n" -" e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" +"The preferred place to ellipsize the string, if the progress bar does not " +"have enough room to display the entire string, if at all." msgstr "" -"ਪਰਿੰਟ ਕਰਨ ਦਾ ਸਮਾਂ ਦਿਓ,\n" -" ਜਿਵੇਂ 5:30, 2:35 ਸ਼ਾਮ, 14:15:20, 11:46:30 ਸਵੇਰ, 4 ਸ਼ਾਮ" +"ਅੰਡਕਾਰ-ਅਕਾਰ ਸਤਰ ਲਈ ਪਸੰਦੀਦਾ ਥਾਂ, ਜੇਕਰ ਤਰੱਕੀ ਪੱਟੀ ਲਈ ਪੂਰੀ ਸਤਰ ਵੇਖਾਉਣ ਲਈ ਥਾਂ ਨਾ " +"ਹੋਵੇ।" -#: ../gtk/gtkprintunixdialog.c:3618 -msgid "Time of print" -msgstr "ਪਰਿੰਟ ਦਾ ਸਮਾਂ" +#: ../gtk/gtkprogressbar.c:225 +msgid "X spacing" +msgstr "X ਫਾਸਲਾ" -#: ../gtk/gtkprintunixdialog.c:3634 -msgid "On _hold" -msgstr "ਰੋਕੀ ਰੱਖੋ(_h)" +#: ../gtk/gtkprogressbar.c:226 +msgid "Extra spacing applied to the width of a progress bar." +msgstr "ਇੱਕ ਤਰੱਕੀ ਬਾਰ ਦੀ ਚੌੜਾਈ ਵਿੱਚ ਵਾਧੂ ਥਾਂ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇਗੀ।" -#: ../gtk/gtkprintunixdialog.c:3635 -msgid "Hold the job until it is explicitly released" -msgstr "ਖਾਸ ਤੌਰ ਉੱਤੇ ਜਾਰੀ ਕਰਨ ਤੱਕ ਜਾਬ ਫੜੀ ਰੱਖੋ" +#: ../gtk/gtkprogressbar.c:231 +msgid "Y spacing" +msgstr "Y ਥਾਂ" -#: ../gtk/gtkprintunixdialog.c:3655 -msgid "Add Cover Page" -msgstr "ਕਵਰ ਸਫ਼ਾ ਸ਼ਾਮਲ" +#: ../gtk/gtkprogressbar.c:232 +msgid "Extra spacing applied to the height of a progress bar." +msgstr "ਇੱਕ ਤਰੱਕੀ ਬਾਰ ਦੀ ਉਚਾਈ ਵਿੱਚ ਵਾਧੂ ਥਾਂ ਲਾਗੂ ਕੀਤੀ ਜਾਵੇਗੀ।" -#. Translators, this is the label used for the option in the print -#. * dialog that controls the front cover page. -#. -#: ../gtk/gtkprintunixdialog.c:3664 -msgid "Be_fore:" -msgstr "ਪਹਿਲਾਂ(_f):" +#: ../gtk/gtkprogressbar.c:245 +msgid "Minimum horizontal bar width" +msgstr "ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਬਾਰ ਚੌੜਾਈ" -#. Translators, this is the label used for the option in the print -#. * dialog that controls the back cover page. -#. -#: ../gtk/gtkprintunixdialog.c:3682 -msgid "_After:" -msgstr "ਬਾਅਦ(_A):" +#: ../gtk/gtkprogressbar.c:246 +msgid "The minimum horizontal width of the progress bar" +msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਚੌੜਾਈ" -#. Translators: this is the tab label for the notebook tab containing -#. * job-specific options in the print dialog -#. -#: ../gtk/gtkprintunixdialog.c:3700 -msgid "Job" -msgstr "ਕੰਮ" +#: ../gtk/gtkprogressbar.c:258 +msgid "Minimum horizontal bar height" +msgstr "ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਬਾਰ ਚੌੜਾਈ" -#: ../gtk/gtkprintunixdialog.c:3766 -msgid "Advanced" -msgstr "ਤਕਨੀਕੀ" +#: ../gtk/gtkprogressbar.c:259 +msgid "Minimum horizontal height of the progress bar" +msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਹਰੀਜੱਟਲ ਉਚਾਈ" -#. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3804 -msgid "Image Quality" -msgstr "ਚਿੱਤਰ ਕੁਆਲਟੀ" +#: ../gtk/gtkprogressbar.c:271 +msgid "Minimum vertical bar width" +msgstr "ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਬਾਰ ਚੌੜਾਈ" -#. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3808 -msgid "Color" -msgstr "ਰੰਗ" +#: ../gtk/gtkprogressbar.c:272 +msgid "The minimum vertical width of the progress bar" +msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਚੌੜਾਈ" -#. Translators: this will appear as tab label in print dialog. -#. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3813 -msgid "Finishing" -msgstr "ਮੁਕੰਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" +#: ../gtk/gtkprogressbar.c:284 +msgid "Minimum vertical bar height" +msgstr "ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਬਾਰ ਉਚਾਈ" -#: ../gtk/gtkprintunixdialog.c:3823 -msgid "Some of the settings in the dialog conflict" -msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਕੁਝ ਸੈਟਿੰਗ ਵਿੱਚ ਅਪਵਾਦ ਹੈ" +#: ../gtk/gtkprogressbar.c:285 +msgid "The minimum vertical height of the progress bar" +msgstr "ਤਰੱਕੀ ਬਾਰ ਦੀ ਘੱਟੋ-ਘੱਟ ਵਰਟੀਕਲ ਉਚਾਈ" -#: ../gtk/gtkprintunixdialog.c:3846 -msgid "Print" -msgstr "ਛਾਪੋ" +#: ../gtk/gtkradioaction.c:118 +msgid "The value" +msgstr "ਮੁੱਲ" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "ਸ਼ਾਮਲ ਫਾਇਲ ਲੱਭਣ ਤੋਂ ਅਸਮਰੱਥ: \"%s\"" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 -#, c-format -msgid "Unable to locate image file in pixmap_path: \"%s\"" -msgstr "ਪਿਕਸਮੈਪ ਮਾਰਗ ਵਿੱਚ ਚਿੱਤਰ ਫਾਇਲ ਲੱਭਣ ਵਿੱਚ ਅਸਫ਼ਲ: \"%s\"" - -#: ../gtk/gtkrecentaction.c:165 ../gtk/gtkrecentaction.c:173 -#: ../gtk/gtkrecentchoosermenu.c:615 ../gtk/gtkrecentchoosermenu.c:623 -#, c-format -msgid "This function is not implemented for widgets of class '%s'" -msgstr "ਇਹ ਫੰਕਸ਼ਨ ਕਲਾਸ '%s' ਦੇ ਵਿਦਗਿਟ ਲਈ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ ਹੈ" - -#: ../gtk/gtkrecentchooserdefault.c:482 -msgid "Select which type of documents are shown" -msgstr "ਚੋਣ ਕਰੋ ਕਿ ਕਿਸ ਕਿਸਮ ਦੇ ਦਸਤਾਵੇਜ਼ ਵਿਖਾਏ ਜਾਣ" - -#: ../gtk/gtkrecentchooserdefault.c:1138 ../gtk/gtkrecentchooserdefault.c:1175 -#, c-format -msgid "No item for URI '%s' found" -msgstr "URI '%s' ਲਈ ਕੋਈ ਇਕਾਈ ਨਹੀਂ ਲੱਭੀ" - -#: ../gtk/gtkrecentchooserdefault.c:1302 -msgid "Untitled filter" -msgstr "ਅਣ-ਟਾਇਟਲ ਫਿਲਟਰ" - -#: ../gtk/gtkrecentchooserdefault.c:1655 -msgid "Could not remove item" -msgstr "ਇਕਾਈ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#: ../gtk/gtkrecentchooserdefault.c:1699 -msgid "Could not clear list" -msgstr "ਲਿਸਟ ਸਾਫ਼ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" - -#: ../gtk/gtkrecentchooserdefault.c:1783 -msgid "Copy _Location" -msgstr "ਟਿਕਾਣਾ ਕਾਪੀ ਕਰੋ(_L)" - -#: ../gtk/gtkrecentchooserdefault.c:1796 -msgid "_Remove From List" -msgstr "ਲਿਸਟ ਤੋਂ ਹਟਾਓ(_R)" - -#: ../gtk/gtkrecentchooserdefault.c:1805 -msgid "_Clear List" -msgstr "ਲਿਸਟ ਸਾਫ਼ ਕਰੋ(_C)" - -#: ../gtk/gtkrecentchooserdefault.c:1819 -msgid "Show _Private Resources" -msgstr "ਪ੍ਰਾਈਵੇਟ ਸਰੋਤ ਵੇਖੋ(_P)" - -#. we create a placeholder menuitem, to be used in case -#. * the menu is empty. this placeholder will stay around -#. * for the entire lifetime of the menu, and we just hide it -#. * when it's not used. we have to do this, and do it here, -#. * because we need a marker for the beginning of the recent -#. * items list, so that we can insert the new items at the -#. * right place when idly populating the menu in case the -#. * user appended or prepended custom menu items to the -#. * recent chooser menu widget. -#. -#: ../gtk/gtkrecentchoosermenu.c:369 -msgid "No items found" -msgstr "ਕੋਈ ਆਈਟਮ ਨਹੀਂ ਲੱਭੀ" - -#: ../gtk/gtkrecentchoosermenu.c:535 ../gtk/gtkrecentchoosermenu.c:591 -#, c-format -msgid "No recently used resource found with URI `%s'" -msgstr "URI `%s' ਨਾਲ ਤਾਜ਼ਾ ਵਰਤੇ ਸਰੋਤ ਨਹੀਂ ਲੱਭੇ" - -#: ../gtk/gtkrecentchoosermenu.c:802 -#, c-format -msgid "Open '%s'" -msgstr "'%s' ਖੋਲ੍ਹੋ" - -#: ../gtk/gtkrecentchoosermenu.c:832 -msgid "Unknown item" -msgstr "ਅਣਜਾਣ ਆਈਟਮ" - -#. This is the label format that is used for the first 10 items -#. * in a recent files menu. The %d is the number of the item, -#. * the %s is the name of the item. Please keep the _ in front -#. * of the number to give these menu items a mnemonic. -#. -#: ../gtk/gtkrecentchoosermenu.c:843 -#, c-format -msgctxt "recent menu label" -msgid "_%d. %s" -msgstr "_%d. %s" - -#. This is the format that is used for items in a recent files menu. -#. * The %d is the number of the item, the %s is the name of the item. -#. -#: ../gtk/gtkrecentchoosermenu.c:848 -#, c-format -msgctxt "recent menu label" -msgid "%d. %s" -msgstr "%d. %s" - -#: ../gtk/gtkrecentmanager.c:980 ../gtk/gtkrecentmanager.c:993 -#: ../gtk/gtkrecentmanager.c:1131 ../gtk/gtkrecentmanager.c:1141 -#: ../gtk/gtkrecentmanager.c:1194 ../gtk/gtkrecentmanager.c:1203 -#: ../gtk/gtkrecentmanager.c:1218 -#, c-format -msgid "Unable to find an item with URI '%s'" -msgstr "URI '%s' ਨਾਲ ਇੱਕ ਆਈਟਮ ਲੱਭਣ ਲਈ ਅਸਫ਼ਲ" - -#: ../gtk/gtkspinner.c:456 -msgctxt "throbbing progress animation widget" -msgid "Spinner" -msgstr "ਸਪਿੰਨਰ" - -#: ../gtk/gtkspinner.c:457 -msgid "Provides visual indication of progress" -msgstr "ਤਰੱਕੀ ਲਈ ਦਿੱਖ ਇੰਡੀਕੇਟਰ ਦਿੰਦਾ ਹੈ" - -#. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate -#: ../gtk/gtkstock.c:313 -msgctxt "Stock label" -msgid "Information" -msgstr "ਜਾਣਕਾਰੀ" - -#: ../gtk/gtkstock.c:314 -msgctxt "Stock label" -msgid "Warning" -msgstr "ਚੇਤਾਵਨੀ" - -#: ../gtk/gtkstock.c:315 -msgctxt "Stock label" -msgid "Error" -msgstr "ਗਲਤੀ" - -#: ../gtk/gtkstock.c:316 -msgctxt "Stock label" -msgid "Question" -msgstr "ਸਵਾਲ" - -#. FIXME these need accelerators when appropriate, and -#. * need the mnemonics to be rationalized -#. -#: ../gtk/gtkstock.c:321 -msgctxt "Stock label" -msgid "_About" -msgstr "ਇਸ ਬਾਰੇ(_A)" - -#: ../gtk/gtkstock.c:322 -msgctxt "Stock label" -msgid "_Add" -msgstr "ਸ਼ਾਮਲ(_A)" - -#: ../gtk/gtkstock.c:323 -msgctxt "Stock label" -msgid "_Apply" -msgstr "ਲਾਗੂ ਕਰੋ(_A)" - -#: ../gtk/gtkstock.c:324 -msgctxt "Stock label" -msgid "_Bold" -msgstr "ਗੂੜ੍ਹਾ(_B)" - -#: ../gtk/gtkstock.c:325 -msgctxt "Stock label" -msgid "_Cancel" -msgstr "ਰੱਦ ਕਰੋ(_C)" - -#: ../gtk/gtkstock.c:326 -msgctxt "Stock label" -msgid "_CD-ROM" -msgstr "_CD-ROM" - -#: ../gtk/gtkstock.c:327 -msgctxt "Stock label" -msgid "_Clear" -msgstr "ਸਾਫ਼ ਕਰੋ(_C)" - -#: ../gtk/gtkstock.c:328 -msgctxt "Stock label" -msgid "_Close" -msgstr "ਬੰਦ ਕਰੋ(_C)" - -#: ../gtk/gtkstock.c:329 -msgctxt "Stock label" -msgid "C_onnect" -msgstr "ਕੁਨੈਕਟ ਕਰੋ(_o)" - -#: ../gtk/gtkstock.c:330 -msgctxt "Stock label" -msgid "_Convert" -msgstr "ਬਦਲੋ(_C)" - -#: ../gtk/gtkstock.c:331 -msgctxt "Stock label" -msgid "_Copy" -msgstr "ਕਾਪੀ ਕਰੋ(_C)" - -#: ../gtk/gtkstock.c:332 -msgctxt "Stock label" -msgid "Cu_t" -msgstr "ਕੱਟੋ(_t)" - -#: ../gtk/gtkstock.c:333 -msgctxt "Stock label" -msgid "_Delete" -msgstr "ਹਟਾਓ(_D)" - -#: ../gtk/gtkstock.c:334 -msgctxt "Stock label" -msgid "_Discard" -msgstr "ਨਿਕਾਰੋ(_D)" - -#: ../gtk/gtkstock.c:335 -msgctxt "Stock label" -msgid "_Disconnect" -msgstr "ਕੁਨੈਕਸ਼ਨ ਬੰਦ(_D)" - -#: ../gtk/gtkstock.c:336 -msgctxt "Stock label" -msgid "_Execute" -msgstr "ਚਲਾਓ(_E)" - -#: ../gtk/gtkstock.c:337 -msgctxt "Stock label" -msgid "_Edit" -msgstr "ਸੋਧ(_E)" - -#: ../gtk/gtkstock.c:338 -msgctxt "Stock label" -msgid "_File" -msgstr "ਫਾਇਲ(_F)" - -#: ../gtk/gtkstock.c:339 -msgctxt "Stock label" -msgid "_Find" -msgstr "ਖੋਜ(_F)" - -#: ../gtk/gtkstock.c:340 -msgctxt "Stock label" -msgid "Find and _Replace" -msgstr "ਖੋਜੋ ਅਤੇ ਬਦਲੋ(_R)" - -#: ../gtk/gtkstock.c:341 -msgctxt "Stock label" -msgid "_Floppy" -msgstr "ਫਲਾਪੀ(_F)" - -#: ../gtk/gtkstock.c:342 -msgctxt "Stock label" -msgid "_Fullscreen" -msgstr "ਪੂਰੀ ਸਕਰੀਨ(_F)" - -#: ../gtk/gtkstock.c:343 -msgctxt "Stock label" -msgid "_Leave Fullscreen" -msgstr "ਪੂਰੀ ਸਕਰੀਨ ਛੱਡੋ(_L)" - -#. This is a navigation label as in "go to the bottom of the page" -#: ../gtk/gtkstock.c:345 -msgctxt "Stock label, navigation" -msgid "_Bottom" -msgstr "ਹੇਠਾਂ(_B):" - -#. This is a navigation label as in "go to the first page" -#: ../gtk/gtkstock.c:347 -msgctxt "Stock label, navigation" -msgid "_First" -msgstr "ਪਹਿਲਾਂ(_F)" - -#. This is a navigation label as in "go to the last page" -#: ../gtk/gtkstock.c:349 -msgctxt "Stock label, navigation" -msgid "_Last" -msgstr "ਆਖਰੀ(_L)" - -#. This is a navigation label as in "go to the top of the page" -#: ../gtk/gtkstock.c:351 -msgctxt "Stock label, navigation" -msgid "_Top" -msgstr "ਉੱਤੇ(_T)" - -#. This is a navigation label as in "go back" -#: ../gtk/gtkstock.c:353 -msgctxt "Stock label, navigation" -msgid "_Back" -msgstr "ਪਿੱਛੇ(_B)" - -#. This is a navigation label as in "go down" -#: ../gtk/gtkstock.c:355 -msgctxt "Stock label, navigation" -msgid "_Down" -msgstr "ਹੇਠਾਂ(_D)" - -#. This is a navigation label as in "go forward" -#: ../gtk/gtkstock.c:357 -msgctxt "Stock label, navigation" -msgid "_Forward" -msgstr "ਅੱਗੇ(_F)" - -#. This is a navigation label as in "go up" -#: ../gtk/gtkstock.c:359 -msgctxt "Stock label, navigation" -msgid "_Up" -msgstr "ਉੱਤੇ(_U)" - -#: ../gtk/gtkstock.c:360 -msgctxt "Stock label" -msgid "_Hard Disk" -msgstr "ਹਾਰਡ ਡਿਸਕ(_H)" - -#: ../gtk/gtkstock.c:361 -msgctxt "Stock label" -msgid "_Help" -msgstr "ਮੱਦਦ(_H)" - -#: ../gtk/gtkstock.c:362 -msgctxt "Stock label" -msgid "_Home" -msgstr "ਘਰ(_H)" - -#: ../gtk/gtkstock.c:363 -msgctxt "Stock label" -msgid "Increase Indent" -msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਵਧਾਓ" - -#: ../gtk/gtkstock.c:364 -msgctxt "Stock label" -msgid "Decrease Indent" -msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਘਟਾਓ" - -#: ../gtk/gtkstock.c:365 -msgctxt "Stock label" -msgid "_Index" -msgstr "ਇੰਡੈਕਸ(_I)" - -#: ../gtk/gtkstock.c:366 -msgctxt "Stock label" -msgid "_Information" -msgstr "ਜਾਣਕਾਰੀ(_I)" - -#: ../gtk/gtkstock.c:367 -msgctxt "Stock label" -msgid "_Italic" -msgstr "ਤਿਰਛਾ(_I)" - -#: ../gtk/gtkstock.c:368 -msgctxt "Stock label" -msgid "_Jump to" -msgstr "ਜੰਪ(_J)" - -#. This is about text justification, "centered text" -#: ../gtk/gtkstock.c:370 -msgctxt "Stock label" -msgid "_Center" -msgstr "ਬਦਲੋ(_C)" - -#. This is about text justification -#: ../gtk/gtkstock.c:372 -msgctxt "Stock label" -msgid "_Fill" -msgstr "ਫਾਇਲਾਂ(_F)" - -#. This is about text justification, "left-justified text" -#: ../gtk/gtkstock.c:374 -msgctxt "Stock label" -msgid "_Left" -msgstr "ਖੱਬੇ(_L)" - -#. This is about text justification, "right-justified text" -#: ../gtk/gtkstock.c:376 -msgctxt "Stock label" -msgid "_Right" -msgstr "ਸੱਜੇ(_R)" - -#. Media label, as in "fast forward" -#: ../gtk/gtkstock.c:379 -msgctxt "Stock label, media" -msgid "_Forward" -msgstr "ਅੱਗੇ(_F)" - -#. Media label, as in "next song" -#: ../gtk/gtkstock.c:381 -msgctxt "Stock label, media" -msgid "_Next" -msgstr "ਨਵਾਂ(_N)" - -#. Media label, as in "pause music" -#: ../gtk/gtkstock.c:383 -msgctxt "Stock label, media" -msgid "P_ause" -msgstr "ਵਿਰਾਮ(_a)" - -#. Media label, as in "play music" -#: ../gtk/gtkstock.c:385 -msgctxt "Stock label, media" -msgid "_Play" -msgstr "ਚਲਾਓ(_P)" - -#. Media label, as in "previous song" -#: ../gtk/gtkstock.c:387 -msgctxt "Stock label, media" -msgid "Pre_vious" -msgstr "ਪਿੱਛੇ(_v)" - -#. Media label -#: ../gtk/gtkstock.c:389 -msgctxt "Stock label, media" -msgid "_Record" -msgstr "ਰਿਕਾਰਡ(_R)" - -#. Media label -#: ../gtk/gtkstock.c:391 -msgctxt "Stock label, media" -msgid "R_ewind" -msgstr "ਪਿੱਛੇ ਜਾਓ(_e)" - -#. Media label -#: ../gtk/gtkstock.c:393 -msgctxt "Stock label, media" -msgid "_Stop" -msgstr "ਰੋਕੋ(_S)" - -#: ../gtk/gtkstock.c:394 -msgctxt "Stock label" -msgid "_Network" -msgstr "ਨੈੱਟਵਰਕ(_N)" - -#: ../gtk/gtkstock.c:395 -msgctxt "Stock label" -msgid "_New" -msgstr "ਨਵਾਂ(_N)" - -#: ../gtk/gtkstock.c:396 -msgctxt "Stock label" -msgid "_No" -msgstr "ਨਹੀਂ(_N)" - -#: ../gtk/gtkstock.c:397 -msgctxt "Stock label" -msgid "_OK" -msgstr "ਠੀਕ ਹੈ(_O)" - -#: ../gtk/gtkstock.c:398 -msgctxt "Stock label" -msgid "_Open" -msgstr "ਖੋਲ੍ਹੋ(_O)" - -#. Page orientation -#: ../gtk/gtkstock.c:400 -msgctxt "Stock label" -msgid "Landscape" -msgstr "ਲੈਂਡਸਕੇਪ" - -#. Page orientation -#: ../gtk/gtkstock.c:402 -msgctxt "Stock label" -msgid "Portrait" -msgstr "ਪੋਰਟਰੇਟ" - -#. Page orientation -#: ../gtk/gtkstock.c:404 -msgctxt "Stock label" -msgid "Reverse landscape" -msgstr "ਉਲਟ ਲੈਡਸਕੇਪ" - -#. Page orientation -#: ../gtk/gtkstock.c:406 -msgctxt "Stock label" -msgid "Reverse portrait" -msgstr "ਉਲਟ ਪੋਰਟਰੇਟ" - -#: ../gtk/gtkstock.c:407 -msgctxt "Stock label" -msgid "Page Set_up" -msgstr "ਪੇਜ਼ ਸੈਟਅੱਪ(_u)" - -#: ../gtk/gtkstock.c:408 -msgctxt "Stock label" -msgid "_Paste" -msgstr "ਚੇਪੋ(_P)" - -#: ../gtk/gtkstock.c:409 -msgctxt "Stock label" -msgid "_Preferences" -msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" - -#: ../gtk/gtkstock.c:410 -msgctxt "Stock label" -msgid "_Print" -msgstr "ਛਾਪੋ(_P)" - -#: ../gtk/gtkstock.c:411 -msgctxt "Stock label" -msgid "Print Pre_view" -msgstr "ਛਾਪਣ ਝਲਕ(_v)" - -#: ../gtk/gtkstock.c:412 -msgctxt "Stock label" -msgid "_Properties" -msgstr "ਵਿਸ਼ੇਸ਼ਤਾ(_P)" - -#: ../gtk/gtkstock.c:413 -msgctxt "Stock label" -msgid "_Quit" -msgstr "ਬਾਹਰ(_Q)" - -#: ../gtk/gtkstock.c:414 -msgctxt "Stock label" -msgid "_Redo" -msgstr "ਮੁੜ-ਵਾਪਸ(_R)" - -#: ../gtk/gtkstock.c:415 -msgctxt "Stock label" -msgid "_Refresh" -msgstr "ਤਾਜ਼ਾ(_R)" - -#: ../gtk/gtkstock.c:416 -msgctxt "Stock label" -msgid "_Remove" -msgstr "ਹਟਾਓ(_R)" - -#: ../gtk/gtkstock.c:417 -msgctxt "Stock label" -msgid "_Revert" -msgstr "ਪਰਤਾਓ(_R)" - -#: ../gtk/gtkstock.c:418 -msgctxt "Stock label" -msgid "_Save" -msgstr "ਸੰਭਾਲੋ(_S)" - -#: ../gtk/gtkstock.c:419 -msgctxt "Stock label" -msgid "Save _As" -msgstr "ਇੰਜ ਸੰਭਾਲੋ(_A)" - -#: ../gtk/gtkstock.c:420 -msgctxt "Stock label" -msgid "Select _All" -msgstr "ਸਭ ਚੁਣੋ(_A)" - -#: ../gtk/gtkstock.c:421 -msgctxt "Stock label" -msgid "_Color" -msgstr "ਰੰਗ(_C)" - -#: ../gtk/gtkstock.c:422 -msgctxt "Stock label" -msgid "_Font" -msgstr "ਫੋਂਟ(_F)" - -#. Sorting direction -#: ../gtk/gtkstock.c:424 -msgctxt "Stock label" -msgid "_Ascending" -msgstr "ਵਧਦਾ ਕ੍ਰਮ(_A)" - -#. Sorting direction -#: ../gtk/gtkstock.c:426 -msgctxt "Stock label" -msgid "_Descending" -msgstr "ਘੱਟਦਾ ਕ੍ਰਮ(_D)" - -#: ../gtk/gtkstock.c:427 -msgctxt "Stock label" -msgid "_Spell Check" -msgstr "ਸ਼ਬਦ-ਜੋੜ ਚੈੱਕ(_S)" - -#: ../gtk/gtkstock.c:428 -msgctxt "Stock label" -msgid "_Stop" -msgstr "ਰੋਕੋ(_S)" - -#. Font variant -#: ../gtk/gtkstock.c:430 -msgctxt "Stock label" -msgid "_Strikethrough" -msgstr "ਵਿੰਨੋ(_S)" - -#: ../gtk/gtkstock.c:431 -msgctxt "Stock label" -msgid "_Undelete" -msgstr "ਹਟਾਓਣਾ-ਵਾਪਸ(_U)" - -#. Font variant -#: ../gtk/gtkstock.c:433 -msgctxt "Stock label" -msgid "_Underline" -msgstr "ਹੇਠਾਂ ਲਾਈਨ(_U)" - -#: ../gtk/gtkstock.c:434 -msgctxt "Stock label" -msgid "_Undo" -msgstr "ਵਾਪਸ(_U)" - -#: ../gtk/gtkstock.c:435 -msgctxt "Stock label" -msgid "_Yes" -msgstr "ਹਾਂ(_Y)" - -#. Zoom -#: ../gtk/gtkstock.c:437 -msgctxt "Stock label" -msgid "_Normal Size" -msgstr "ਆਮ ਅਕਾਰ(_N)" - -#. Zoom -#: ../gtk/gtkstock.c:439 -msgctxt "Stock label" -msgid "Best _Fit" -msgstr "ਵਧੀਆ ਫਿੱਟ(_F)" - -#: ../gtk/gtkstock.c:440 -msgctxt "Stock label" -msgid "Zoom _In" -msgstr "ਜ਼ੂਮ ਇਨ(_I)" - -#: ../gtk/gtkstock.c:441 -msgctxt "Stock label" -msgid "Zoom _Out" -msgstr "ਜ਼ੂਮ ਆਉਟ(_O)" - -#: ../gtk/gtktextbufferrichtext.c:650 -#, c-format -msgid "Unknown error when trying to deserialize %s" -msgstr "%s ਡੀਸੀਰੀਅਲਜ਼ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਗਲਤੀ" - -#: ../gtk/gtktextbufferrichtext.c:709 -#, c-format -msgid "No deserialize function found for format %s" -msgstr "ਫਾਰਮੈਟ %s ਲਈ ਡੀਸੀਰੀਲਾਇਜ਼ਡ ਫੰਕਸ਼ਨ ਨਹੀਂ ਲੱਭਿਆ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:795 ../gtk/gtktextbufferserialize.c:821 -#, c-format -msgid "Both \"id\" and \"name\" were found on the <%s> element" -msgstr "ਦੋਵੇਂ \"id\" ਅਤੇ \"name\" ਇਕਾਈ <%s> ਲਈ ਲੱਭੇ ਹਨ" - -#: ../gtk/gtktextbufferserialize.c:805 ../gtk/gtktextbufferserialize.c:831 -#, c-format -msgid "The attribute \"%s\" was found twice on the <%s> element" -msgstr "ਗੁਣ \"%s\" ਇਕਾਈ <%s> ਲਈ ਦੋ ਵਾਰ ਲੱਭਿਆ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:845 -#, c-format -msgid "<%s> element has invalid ID \"%s\"" -msgstr "<%s> ਇਕਾਈ ਦਾ ਗਲਤ ID \"%s\" ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:855 -#, c-format -msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" -msgstr "<%s> ਇਕਾਈ ਨਾ ਤਾਂ ਇੱਕ \"name\" ਗੁਣ ਹੈ ਅਤੇ ਨਾ ਹੀ \"id\"" - -#: ../gtk/gtktextbufferserialize.c:942 -#, c-format -msgid "Attribute \"%s\" repeated twice on the same <%s> element" -msgstr "ਗੁਣ \"%s\" ਇਕਾਈ <%s> ਵਾਰ ਦੋ ਵਾਰ ਰਪੀਟ ਕੀਤਾ ਗਿਆ" - -#: ../gtk/gtktextbufferserialize.c:960 ../gtk/gtktextbufferserialize.c:985 -#, c-format -msgid "Attribute \"%s\" is invalid on <%s> element in this context" -msgstr "ਗੁਣ \"%s\" ਇਸ ਸਬੰਧ ਵਿੱਚ <%s> ਇਕਾਈ ਲਈ ਗਲਤ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1024 -#, c-format -msgid "Tag \"%s\" has not been defined." -msgstr "ਟੈਗ \"%s\" ਪ੍ਰਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ।" - -#: ../gtk/gtktextbufferserialize.c:1036 -msgid "Anonymous tag found and tags can not be created." -msgstr "ਅਗਿਆਤ ਟੈਗ ਲੱਭਿਆ ਹੈ ਅਤੇ ਟੈਗ ਨਹੀਂ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ।" - -#: ../gtk/gtktextbufferserialize.c:1047 -#, c-format -msgid "Tag \"%s\" does not exist in buffer and tags can not be created." -msgstr "ਟੈਗ \"%s\" ਬਫ਼ਰ 'ਚ ਨਹੀਂ ਹੈ ਅਤੇ ਟੈਗ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ।" - -#: ../gtk/gtktextbufferserialize.c:1146 ../gtk/gtktextbufferserialize.c:1221 -#: ../gtk/gtktextbufferserialize.c:1324 ../gtk/gtktextbufferserialize.c:1398 -#, c-format -msgid "Element <%s> is not allowed below <%s>" -msgstr "ਇਕਾਈ <%s> <%s> ਹੇਠਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ" - -#: ../gtk/gtktextbufferserialize.c:1177 -#, c-format -msgid "\"%s\" is not a valid attribute type" -msgstr "\"%s\" ਇੱਕ ਠੀਕ ਗੁਣ ਕਿਸਮ ਨਹੀਂ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1185 -#, c-format -msgid "\"%s\" is not a valid attribute name" -msgstr "\"%s\" ਇੱਕ ਠੀਕ ਗੁਣ ਨਾਂ ਨਹੀਂ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1195 -#, c-format -msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -msgstr "\"%1$s\" \"%3$s\" ਗੁਣ ਲਈ \"%2$s\" ਕਿਸਮ ਦੇ ਮੁੱਲ ਨੂੰ ਬਦਲ ਨਹੀਂ ਸਕਿਆ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1204 -#, c-format -msgid "\"%s\" is not a valid value for attribute \"%s\"" -msgstr "\"%s\" ਗੁਣ \"%s\" ਲਈ ਠੀਕ ਮੁੱਲ ਨਹੀਂ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1289 -#, c-format -msgid "Tag \"%s\" already defined" -msgstr "ਟੈਗ \"%s\" ਪਹਿਲਾਂ ਹੀ ਪ੍ਰਭਾਸ਼ਿਤ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1300 -#, c-format -msgid "Tag \"%s\" has invalid priority \"%s\"" -msgstr "ਟੈਗ \"%s\" ਦੀ ਗਲਤ ਤਰਜੀਹ \"%s\" ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1353 -#, c-format -msgid "Outermost element in text must be not <%s>" -msgstr "ਟੈਕਸਟ ਵਿੱਚ ਬਾਹਰੀ ਇਕਾਈ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ <%s>" - -#: ../gtk/gtktextbufferserialize.c:1362 ../gtk/gtktextbufferserialize.c:1378 -#, c-format -msgid "A <%s> element has already been specified" -msgstr "ਇੱਕ <%s> ਇਕਾਈ ਪਹਿਲਾਂ ਹੀ ਦੱਸੀ ਜਾ ਚੁੱਕੀ ਹੈ।" - -#: ../gtk/gtktextbufferserialize.c:1384 -msgid "A element can't occur before a element" -msgstr "ਇੱਕ ਇਕਾਈ ਇਕਾਈ ਤੋਂ ਪਹਿਲਾਂ ਨਹੀਂ ਆ ਸਕਦਾ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1784 -msgid "Serialized data is malformed" -msgstr "ਸੀਰੀਲਾਈਜ਼ਡ ਡਾਟਾ ਨਿਕਾਰਾ ਹੈ" - -#: ../gtk/gtktextbufferserialize.c:1862 -msgid "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" -msgstr "ਸੀਰੀਲਾਈਜ਼ਡ ਡਾਟਾ ਨਿਕਾਰਾ ਹੈ। ਪਹਿਲਾਂ ਭਾਗ GTKTEXTBUFFERCONTENTS-0001 ਨਹੀਂ ਹੈ" - -#: ../gtk/gtktextutil.c:60 -msgid "LRM _Left-to-right mark" -msgstr "_LRM ਖੱਬੇ ਤੋਂ ਸੱਜਾ ਨਿਸ਼ਾਨ" - -#: ../gtk/gtktextutil.c:61 -msgid "RLM _Right-to-left mark" -msgstr "_RLM ਸੱਜੇ ਤੋਂ ਖੱਬਾ ਨਿਸ਼ਾਨ" - -#: ../gtk/gtktextutil.c:62 -msgid "LRE Left-to-right _embedding" -msgstr "LR_E ਖੱਬੇ ਤੋਂ ਸੱਜਾ ਇੰਬੈਂਡ" - -#: ../gtk/gtktextutil.c:63 -msgid "RLE Right-to-left e_mbedding" -msgstr "RLE ਸੱਜੇ ਤੋਂ ਖੱਬਾ ਇੰਬੈਂਡ(_m)" - -#: ../gtk/gtktextutil.c:64 -msgid "LRO Left-to-right _override" -msgstr "LR_O ਖੱਬੇ ਤੋਂ ਸੱਜਾ ਉੱਤੇ" - -#: ../gtk/gtktextutil.c:65 -msgid "RLO Right-to-left o_verride" -msgstr "RLO ਸੱਜੇ ਤੋਂ ਖੱਬਾ ਉੱਤੇ(_v)" - -#: ../gtk/gtktextutil.c:66 -msgid "PDF _Pop directional formatting" -msgstr "_PDF ਪੋਪ ਦਿਸ਼ਾ ਫਾਰਮੈਟਿੰਗ" - -#: ../gtk/gtktextutil.c:67 -msgid "ZWS _Zero width space" -msgstr "_ZWS ਜ਼ੀਰੋ ਚੌੜਾਈ ਥਾਂ" - -#: ../gtk/gtktextutil.c:68 -msgid "ZWJ Zero width _joiner" -msgstr "ZW_J ਜ਼ੀਰੋ ਚੌੜਾਈ ਜੋੜਕ" - -#: ../gtk/gtktextutil.c:69 -msgid "ZWNJ Zero width _non-joiner" -msgstr "ZW_NJ ਜ਼ੀਰੋ ਚੌੜਾਈ ਨਾ-ਜੋੜਕ" - -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "ਮੋਡੀਊਲ ਮਾਰਗ ਵਿੱਚ ਸਰੂਪ ਇੰਜਣ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ: \"%s\"," - -#: ../gtk/gtkuimanager.c:1505 -#, c-format -msgid "Unexpected start tag '%s' on line %d char %d" -msgstr "ਲਾਈਨ %2$d ਅੱਖਰ %3$d ਉੱਤੇ ਬੇ-ਲੋੜੀਦਾ ਸ਼ੁਰੂਆਤੀ ਟੈਗ '%1$s'" - -#: ../gtk/gtkuimanager.c:1595 -#, c-format -msgid "Unexpected character data on line %d char %d" -msgstr "ਲਾਈਨ %d ਅੱਖਰ %d ਉੱਤੇ ਬੇ-ਲੋੜੀਦਾ ਅੱਖਰ ਡਾਟਾ" - -#: ../gtk/gtkuimanager.c:2427 -msgid "Empty" -msgstr "ਖਾਲੀ" - -#: ../gtk/gtkvolumebutton.c:83 -msgid "Volume" -msgstr "ਵਾਲੀਅਮ" - -#: ../gtk/gtkvolumebutton.c:85 -msgid "Turns volume down or up" -msgstr "ਵਾਲੀਅਮ ਵਧਾਇਆ ਜਾਂ ਘਟਾਇਆ ਜਾਂਦਾ ਹੈ" - -#: ../gtk/gtkvolumebutton.c:88 -msgid "Adjusts the volume" -msgstr "ਵਾਲੀਅਮ ਅਡਜੱਸਟ ਕਰੋ" - -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 -msgid "Volume Down" -msgstr "ਆਵਾਜ਼ ਘਟਾਓ" - -#: ../gtk/gtkvolumebutton.c:96 -msgid "Decreases the volume" -msgstr "ਵਾਲੀਅਮ ਘਟਾਓ" - -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 -msgid "Volume Up" -msgstr "ਆਵਾਜ਼ ਵਧਾਓ" - -#: ../gtk/gtkvolumebutton.c:102 -msgid "Increases the volume" -msgstr "ਵਾਲੀਅਮ ਵਧਾਓ" - -#: ../gtk/gtkvolumebutton.c:160 -msgid "Muted" -msgstr "ਚੁੱਪ ਕੀਤਾ" - -#: ../gtk/gtkvolumebutton.c:164 -msgid "Full Volume" -msgstr "ਪੂਰਾ ਵਾਲੀਅਮ" - -#. Translators: this is the percentage of the current volume, -#. * as used in the tooltip, eg. "49 %". -#. * Translate the "%d" to "%Id" if you want to use localised digits, -#. * or otherwise translate the "%d" to "%d". -#. -#: ../gtk/gtkvolumebutton.c:177 -#, c-format -msgctxt "volume percentage" -msgid "%d %%" -msgstr "%Id %%" - -#: ../gtk/paper_names_offsets.c:4 -msgctxt "paper size" -msgid "asme_f" -msgstr "asme_f" - -#: ../gtk/paper_names_offsets.c:5 -msgctxt "paper size" -msgid "A0x2" -msgstr "A0x2" - -#: ../gtk/paper_names_offsets.c:6 -msgctxt "paper size" -msgid "A0" -msgstr "A0" - -#: ../gtk/paper_names_offsets.c:7 -msgctxt "paper size" -msgid "A0x3" -msgstr "A0x3" - -#: ../gtk/paper_names_offsets.c:8 -msgctxt "paper size" -msgid "A1" -msgstr "A1" - -#: ../gtk/paper_names_offsets.c:9 -msgctxt "paper size" -msgid "A10" -msgstr "A10" - -#: ../gtk/paper_names_offsets.c:10 -msgctxt "paper size" -msgid "A1x3" -msgstr "A1x3" - -#: ../gtk/paper_names_offsets.c:11 -msgctxt "paper size" -msgid "A1x4" -msgstr "A1x4" - -#: ../gtk/paper_names_offsets.c:12 -msgctxt "paper size" -msgid "A2" -msgstr "A2" - -#: ../gtk/paper_names_offsets.c:13 -msgctxt "paper size" -msgid "A2x3" -msgstr "A2x3" - -#: ../gtk/paper_names_offsets.c:14 -msgctxt "paper size" -msgid "A2x4" -msgstr "A2x4" - -#: ../gtk/paper_names_offsets.c:15 -msgctxt "paper size" -msgid "A2x5" -msgstr "A2x5" - -#: ../gtk/paper_names_offsets.c:16 -msgctxt "paper size" -msgid "A3" -msgstr "A3" - -#: ../gtk/paper_names_offsets.c:17 -msgctxt "paper size" -msgid "A3 Extra" -msgstr "A3 ਐਕਸਟਰਾ" - -#: ../gtk/paper_names_offsets.c:18 -msgctxt "paper size" -msgid "A3x3" -msgstr "A3x3" - -#: ../gtk/paper_names_offsets.c:19 -msgctxt "paper size" -msgid "A3x4" -msgstr "A3x4" - -#: ../gtk/paper_names_offsets.c:20 -msgctxt "paper size" -msgid "A3x5" -msgstr "A3x5" - -#: ../gtk/paper_names_offsets.c:21 -msgctxt "paper size" -msgid "A3x6" -msgstr "A3x6" - -#: ../gtk/paper_names_offsets.c:22 -msgctxt "paper size" -msgid "A3x7" -msgstr "A3x7" - -#: ../gtk/paper_names_offsets.c:23 -msgctxt "paper size" -msgid "A4" -msgstr "A4" - -#: ../gtk/paper_names_offsets.c:24 -msgctxt "paper size" -msgid "A4 Extra" -msgstr "A4 ਐਕਸਟਰਾ" - -#: ../gtk/paper_names_offsets.c:25 -msgctxt "paper size" -msgid "A4 Tab" -msgstr "A4 ਟੈਬ" - -#: ../gtk/paper_names_offsets.c:26 -msgctxt "paper size" -msgid "A4x3" -msgstr "A4x3" - -#: ../gtk/paper_names_offsets.c:27 -msgctxt "paper size" -msgid "A4x4" -msgstr "A4x4" - -#: ../gtk/paper_names_offsets.c:28 -msgctxt "paper size" -msgid "A4x5" -msgstr "A4x5" - -#: ../gtk/paper_names_offsets.c:29 -msgctxt "paper size" -msgid "A4x6" -msgstr "A4x6" - -#: ../gtk/paper_names_offsets.c:30 -msgctxt "paper size" -msgid "A4x7" -msgstr "A4x7" - -#: ../gtk/paper_names_offsets.c:31 -msgctxt "paper size" -msgid "A4x8" -msgstr "A4x8" - -#: ../gtk/paper_names_offsets.c:32 -msgctxt "paper size" -msgid "A4x9" -msgstr "A4x9" - -#: ../gtk/paper_names_offsets.c:33 -msgctxt "paper size" -msgid "A5" -msgstr "A5" - -#: ../gtk/paper_names_offsets.c:34 -msgctxt "paper size" -msgid "A5 Extra" -msgstr "A5 ਐਕਸਟਰਾ" - -#: ../gtk/paper_names_offsets.c:35 -msgctxt "paper size" -msgid "A6" -msgstr "A6" - -#: ../gtk/paper_names_offsets.c:36 -msgctxt "paper size" -msgid "A7" -msgstr "A7" - -#: ../gtk/paper_names_offsets.c:37 -msgctxt "paper size" -msgid "A8" -msgstr "A8" - -#: ../gtk/paper_names_offsets.c:38 -msgctxt "paper size" -msgid "A9" -msgstr "A9" - -#: ../gtk/paper_names_offsets.c:39 -msgctxt "paper size" -msgid "B0" -msgstr "B0" - -#: ../gtk/paper_names_offsets.c:40 -msgctxt "paper size" -msgid "B1" -msgstr "B1" - -#: ../gtk/paper_names_offsets.c:41 -msgctxt "paper size" -msgid "B10" -msgstr "B10" - -#: ../gtk/paper_names_offsets.c:42 -msgctxt "paper size" -msgid "B2" -msgstr "B2" - -#: ../gtk/paper_names_offsets.c:43 -msgctxt "paper size" -msgid "B3" -msgstr "B3" - -#: ../gtk/paper_names_offsets.c:44 -msgctxt "paper size" -msgid "B4" -msgstr "B4" - -#: ../gtk/paper_names_offsets.c:45 -msgctxt "paper size" -msgid "B5" -msgstr "B5" - -#: ../gtk/paper_names_offsets.c:46 -msgctxt "paper size" -msgid "B5 Extra" -msgstr "B5 ਐਕਸਟਰਾ" - -#: ../gtk/paper_names_offsets.c:47 -msgctxt "paper size" -msgid "B6" -msgstr "B6" - -#: ../gtk/paper_names_offsets.c:48 -msgctxt "paper size" -msgid "B6/C4" -msgstr "B6/C4" - -#: ../gtk/paper_names_offsets.c:49 -msgctxt "paper size" -msgid "B7" -msgstr "B7" - -#: ../gtk/paper_names_offsets.c:50 -msgctxt "paper size" -msgid "B8" -msgstr "B8" - -#: ../gtk/paper_names_offsets.c:51 -msgctxt "paper size" -msgid "B9" -msgstr "B9" - -#: ../gtk/paper_names_offsets.c:52 -msgctxt "paper size" -msgid "C0" -msgstr "C0" - -#: ../gtk/paper_names_offsets.c:53 -msgctxt "paper size" -msgid "C1" -msgstr "C1" - -#: ../gtk/paper_names_offsets.c:54 -msgctxt "paper size" -msgid "C10" -msgstr "C10" - -#: ../gtk/paper_names_offsets.c:55 -msgctxt "paper size" -msgid "C2" -msgstr "C2" - -#: ../gtk/paper_names_offsets.c:56 -msgctxt "paper size" -msgid "C3" -msgstr "C3" - -#: ../gtk/paper_names_offsets.c:57 -msgctxt "paper size" -msgid "C4" -msgstr "C4" - -#: ../gtk/paper_names_offsets.c:58 -msgctxt "paper size" -msgid "C5" -msgstr "C5" - -#: ../gtk/paper_names_offsets.c:59 -msgctxt "paper size" -msgid "C6" -msgstr "C6" - -#: ../gtk/paper_names_offsets.c:60 -msgctxt "paper size" -msgid "C6/C5" -msgstr "C6/C5" - -#: ../gtk/paper_names_offsets.c:61 -msgctxt "paper size" -msgid "C7" -msgstr "C7" - -#: ../gtk/paper_names_offsets.c:62 -msgctxt "paper size" -msgid "C7/C6" -msgstr "C7/C6" - -#: ../gtk/paper_names_offsets.c:63 -msgctxt "paper size" -msgid "C8" -msgstr "C8" - -#: ../gtk/paper_names_offsets.c:64 -msgctxt "paper size" -msgid "C9" -msgstr "C9" - -#: ../gtk/paper_names_offsets.c:65 -msgctxt "paper size" -msgid "DL Envelope" -msgstr "DL ਲਿਫਾਫ਼ਾ" - -#: ../gtk/paper_names_offsets.c:66 -msgctxt "paper size" -msgid "RA0" -msgstr "RA0" - -#: ../gtk/paper_names_offsets.c:67 -msgctxt "paper size" -msgid "RA1" -msgstr "RA1" - -#: ../gtk/paper_names_offsets.c:68 -msgctxt "paper size" -msgid "RA2" -msgstr "RA2" - -#: ../gtk/paper_names_offsets.c:69 -msgctxt "paper size" -msgid "SRA0" -msgstr "SRA0" - -#: ../gtk/paper_names_offsets.c:70 -msgctxt "paper size" -msgid "SRA1" -msgstr "SRA1" - -#: ../gtk/paper_names_offsets.c:71 -msgctxt "paper size" -msgid "SRA2" -msgstr "SRA2" - -#: ../gtk/paper_names_offsets.c:72 -msgctxt "paper size" -msgid "JB0" -msgstr "JB0" - -#: ../gtk/paper_names_offsets.c:73 -msgctxt "paper size" -msgid "JB1" -msgstr "JB1" - -#: ../gtk/paper_names_offsets.c:74 -msgctxt "paper size" -msgid "JB10" -msgstr "JB10" - -#: ../gtk/paper_names_offsets.c:75 -msgctxt "paper size" -msgid "JB2" -msgstr "JB2" - -#: ../gtk/paper_names_offsets.c:76 -msgctxt "paper size" -msgid "JB3" -msgstr "JB3" - -#: ../gtk/paper_names_offsets.c:77 -msgctxt "paper size" -msgid "JB4" -msgstr "JB4" - -#: ../gtk/paper_names_offsets.c:78 -msgctxt "paper size" -msgid "JB5" -msgstr "JB5" - -#: ../gtk/paper_names_offsets.c:79 -msgctxt "paper size" -msgid "JB6" -msgstr "JB6" - -#: ../gtk/paper_names_offsets.c:80 -msgctxt "paper size" -msgid "JB7" -msgstr "JB7" - -#: ../gtk/paper_names_offsets.c:81 -msgctxt "paper size" -msgid "JB8" -msgstr "JB8" - -#: ../gtk/paper_names_offsets.c:82 -msgctxt "paper size" -msgid "JB9" -msgstr "JB9" - -#: ../gtk/paper_names_offsets.c:83 -msgctxt "paper size" -msgid "jis exec" -msgstr "jis exec" - -#: ../gtk/paper_names_offsets.c:84 -msgctxt "paper size" -msgid "Choukei 2 Envelope" -msgstr "Choukei 2 ਲਿਫ਼ਾਫ਼ਾ" - -#: ../gtk/paper_names_offsets.c:85 -msgctxt "paper size" -msgid "Choukei 3 Envelope" -msgstr "Choukei 3 ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:86 -msgctxt "paper size" -msgid "Choukei 4 Envelope" -msgstr "Choukei 4 ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:87 -msgctxt "paper size" -msgid "hagaki (postcard)" -msgstr "hagaki (ਪੋਸਟਕਾਰਡ)" - -#: ../gtk/paper_names_offsets.c:88 -msgctxt "paper size" -msgid "kahu Envelope" -msgstr "kahu ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:89 -msgctxt "paper size" -msgid "kaku2 Envelope" -msgstr "kaku2 ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:90 -msgctxt "paper size" -msgid "oufuku (reply postcard)" -msgstr "oufuku (ਜਵਾਬੀ ਪੋਸਟਕਾਰਡ)" - -#: ../gtk/paper_names_offsets.c:91 -msgctxt "paper size" -msgid "you4 Envelope" -msgstr "you4 ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:92 -msgctxt "paper size" -msgid "10x11" -msgstr "੧੦x੧੧" - -#: ../gtk/paper_names_offsets.c:93 -msgctxt "paper size" -msgid "10x13" -msgstr "੧੦x੧੩" - -#: ../gtk/paper_names_offsets.c:94 -msgctxt "paper size" -msgid "10x14" -msgstr "੧੦x੧੪" - -#: ../gtk/paper_names_offsets.c:95 ../gtk/paper_names_offsets.c:96 -msgctxt "paper size" -msgid "10x15" -msgstr "੧੦x੧੫" - -#: ../gtk/paper_names_offsets.c:97 -msgctxt "paper size" -msgid "11x12" -msgstr "੧੧x੧੨" - -#: ../gtk/paper_names_offsets.c:98 -msgctxt "paper size" -msgid "11x15" -msgstr "੧੧x੧੫" - -#: ../gtk/paper_names_offsets.c:99 -msgctxt "paper size" -msgid "12x19" -msgstr "੧੨x੧੯" - -#: ../gtk/paper_names_offsets.c:100 -msgctxt "paper size" -msgid "5x7" -msgstr "੫x੭" - -#: ../gtk/paper_names_offsets.c:101 -msgctxt "paper size" -msgid "6x9 Envelope" -msgstr "੬x੯ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:102 -msgctxt "paper size" -msgid "7x9 Envelope" -msgstr "੭x੯ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:103 -msgctxt "paper size" -msgid "9x11 Envelope" -msgstr "੯x੧੧ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:104 -msgctxt "paper size" -msgid "a2 Envelope" -msgstr "a੨ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:105 -msgctxt "paper size" -msgid "Arch A" -msgstr "Arch A" - -#: ../gtk/paper_names_offsets.c:106 -msgctxt "paper size" -msgid "Arch B" -msgstr "Arch B" - -#: ../gtk/paper_names_offsets.c:107 -msgctxt "paper size" -msgid "Arch C" -msgstr "Arch C" - -#: ../gtk/paper_names_offsets.c:108 -msgctxt "paper size" -msgid "Arch D" -msgstr "Arch D" - -#: ../gtk/paper_names_offsets.c:109 -msgctxt "paper size" -msgid "Arch E" -msgstr "Arch E" - -#: ../gtk/paper_names_offsets.c:110 -msgctxt "paper size" -msgid "b-plus" -msgstr "b-plus" - -#: ../gtk/paper_names_offsets.c:111 -msgctxt "paper size" -msgid "c" -msgstr "c" - -#: ../gtk/paper_names_offsets.c:112 -msgctxt "paper size" -msgid "c5 Envelope" -msgstr "c੫ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:113 -msgctxt "paper size" -msgid "d" -msgstr "d" - -#: ../gtk/paper_names_offsets.c:114 -msgctxt "paper size" -msgid "e" -msgstr "e" - -#: ../gtk/paper_names_offsets.c:115 -msgctxt "paper size" -msgid "edp" -msgstr "edp" - -#: ../gtk/paper_names_offsets.c:116 -msgctxt "paper size" -msgid "European edp" -msgstr "ਯੂਰਪੀ edp" - -#: ../gtk/paper_names_offsets.c:117 -msgctxt "paper size" -msgid "Executive" -msgstr "Executive" - -#: ../gtk/paper_names_offsets.c:118 -msgctxt "paper size" -msgid "f" -msgstr "f" - -#: ../gtk/paper_names_offsets.c:119 -msgctxt "paper size" -msgid "FanFold European" -msgstr "FanFold ਯੂਰਪੀ" - -#: ../gtk/paper_names_offsets.c:120 -msgctxt "paper size" -msgid "FanFold US" -msgstr "FanFold US" - -#: ../gtk/paper_names_offsets.c:121 -msgctxt "paper size" -msgid "FanFold German Legal" -msgstr "FanFold ਜਰਮਨ ਲੀਗਲ" - -#: ../gtk/paper_names_offsets.c:122 -msgctxt "paper size" -msgid "Government Legal" -msgstr "ਸਰਕਾਰੀ ਲੀਗਲ" - -#: ../gtk/paper_names_offsets.c:123 -msgctxt "paper size" -msgid "Government Letter" -msgstr "ਸਰਕਾਰੀ ਪੱਤਰ" - -#: ../gtk/paper_names_offsets.c:124 -msgctxt "paper size" -msgid "Index 3x5" -msgstr "ਇੰਡੈਕਸ ੩x੫" - -#: ../gtk/paper_names_offsets.c:125 -msgctxt "paper size" -msgid "Index 4x6 (postcard)" -msgstr "ਇੰਡੈਕਸ ੪x੬ (ਪੋਸਟਕਾਰਡ)" - -#: ../gtk/paper_names_offsets.c:126 -msgctxt "paper size" -msgid "Index 4x6 ext" -msgstr "ਇੰਡੈਕਸ ੪x੬ ext" - -#: ../gtk/paper_names_offsets.c:127 -msgctxt "paper size" -msgid "Index 5x8" -msgstr "ਇੰਡੈਕਸ ੫x੮" - -#: ../gtk/paper_names_offsets.c:128 -msgctxt "paper size" -msgid "Invoice" -msgstr "ਇਨਵਾਈਸ" - -#: ../gtk/paper_names_offsets.c:129 -msgctxt "paper size" -msgid "Tabloid" -msgstr "Tabloid" - -#: ../gtk/paper_names_offsets.c:130 -msgctxt "paper size" -msgid "US Legal" -msgstr "US Legal" - -#: ../gtk/paper_names_offsets.c:131 -msgctxt "paper size" -msgid "US Legal Extra" -msgstr "US ਲੀਗਲ ਵਾਧੂ" - -#: ../gtk/paper_names_offsets.c:132 -msgctxt "paper size" -msgid "US Letter" -msgstr "US ਪੱਤਰ" - -#: ../gtk/paper_names_offsets.c:133 -msgctxt "paper size" -msgid "US Letter Extra" -msgstr "US ਪੱਤਰ ਵਾਧੂ" - -#: ../gtk/paper_names_offsets.c:134 -msgctxt "paper size" -msgid "US Letter Plus" -msgstr "US ਪੱਤਰ ਪਲੱਸ" - -#: ../gtk/paper_names_offsets.c:135 -msgctxt "paper size" -msgid "Monarch Envelope" -msgstr "Monarch ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:136 -msgctxt "paper size" -msgid "#10 Envelope" -msgstr "#੧੦ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:137 -msgctxt "paper size" -msgid "#11 Envelope" -msgstr "#੧੧ ਲਿਫਾਫਾ" - -#: ../gtk/paper_names_offsets.c:138 -msgctxt "paper size" -msgid "#12 Envelope" -msgstr "#੧੨ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:139 -msgctxt "paper size" -msgid "#14 Envelope" -msgstr "#੧੪ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:140 -msgctxt "paper size" -msgid "#9 Envelope" -msgstr "#੯ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:141 -msgctxt "paper size" -msgid "Personal Envelope" -msgstr "ਨਿੱਜੀ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:142 -msgctxt "paper size" -msgid "Quarto" -msgstr "Quarto" - -#: ../gtk/paper_names_offsets.c:143 -msgctxt "paper size" -msgid "Super A" -msgstr "ਸੁਪਰ ਏ" - -#: ../gtk/paper_names_offsets.c:144 -msgctxt "paper size" -msgid "Super B" -msgstr "ਸੁਪਰ ਬੀ" - -#: ../gtk/paper_names_offsets.c:145 -msgctxt "paper size" -msgid "Wide Format" -msgstr "ਚੌੜਾ ਫਾਰਮੈਟ" - -#: ../gtk/paper_names_offsets.c:146 -msgctxt "paper size" -msgid "Dai-pa-kai" -msgstr "Dai-pa-kai" - -#: ../gtk/paper_names_offsets.c:147 -msgctxt "paper size" -msgid "Folio" -msgstr "ਫੋਈਓ" - -#: ../gtk/paper_names_offsets.c:148 -msgctxt "paper size" -msgid "Folio sp" -msgstr "Folio sp" - -#: ../gtk/paper_names_offsets.c:149 -msgctxt "paper size" -msgid "Invite Envelope" -msgstr "ਸੱਦਾ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:150 -msgctxt "paper size" -msgid "Italian Envelope" -msgstr "ਇਤਾਲਵੀ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:151 -msgctxt "paper size" -msgid "juuro-ku-kai" -msgstr "juuro-ku-kai" - -#: ../gtk/paper_names_offsets.c:152 -msgctxt "paper size" -msgid "pa-kai" -msgstr "pa-kai" - -#: ../gtk/paper_names_offsets.c:153 -msgctxt "paper size" -msgid "Postfix Envelope" -msgstr "ਪੋਸਟਫਿਕਸ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:154 -msgctxt "paper size" -msgid "Small Photo" -msgstr "ਛੋਟੀ ਫੋਟੋ" - -#: ../gtk/paper_names_offsets.c:155 -msgctxt "paper size" -msgid "prc1 Envelope" -msgstr "prc੧ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:156 -msgctxt "paper size" -msgid "prc10 Envelope" -msgstr "prc੧੦ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:157 -msgctxt "paper size" -msgid "prc 16k" -msgstr "prc ੧੬k" - -#: ../gtk/paper_names_offsets.c:158 -msgctxt "paper size" -msgid "prc2 Envelope" -msgstr "prc੨ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:159 -msgctxt "paper size" -msgid "prc3 Envelope" -msgstr "prc੩ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:160 -msgctxt "paper size" -msgid "prc 32k" -msgstr "prc ੩੨k" - -#: ../gtk/paper_names_offsets.c:161 -msgctxt "paper size" -msgid "prc4 Envelope" -msgstr "prc੪ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:162 -msgctxt "paper size" -msgid "prc5 Envelope" -msgstr "c੫ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:163 -msgctxt "paper size" -msgid "prc6 Envelope" -msgstr "prc੬ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:164 -msgctxt "paper size" -msgid "prc7 Envelope" -msgstr "prc੭ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:165 -msgctxt "paper size" -msgid "prc8 Envelope" -msgstr "prc੮ ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:166 -msgctxt "paper size" -msgid "prc9 Envelope" -msgstr "prc9 ਲਿਫ਼ਾਫਾ" - -#: ../gtk/paper_names_offsets.c:167 -msgctxt "paper size" -msgid "ROC 16k" -msgstr "ROC ੧੬k" - -#: ../gtk/paper_names_offsets.c:168 -msgctxt "paper size" -msgid "ROC 8k" -msgstr "ROC ੮k" - -#: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 -#, c-format -msgid "different idatas found for symlinked '%s' and '%s'\n" -msgstr "symlinked '%s' ਅਤੇ '%s' ਲਈ ਵੱਖਰੇ idatas ਮਿਲੇ\n" - -#: ../gtk/updateiconcache.c:1374 -#, c-format -msgid "Failed to write header\n" -msgstr "ਹੈਡਰ ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ\n" - -#: ../gtk/updateiconcache.c:1380 -#, c-format -msgid "Failed to write hash table\n" -msgstr "ਹੈਂਸ਼ ਟੇਬਲ ਲਿਖਣ ਲਈ ਅਸਫ਼ਲ ਹੈ\n" - -#: ../gtk/updateiconcache.c:1386 -#, c-format -msgid "Failed to write folder index\n" -msgstr "ਫੋਲਡਰ ਇੰਡੈਕਸ ਲਿਖਣ ਦੌਰਾਨ ਫੇਲ੍ਹ\n" - -#: ../gtk/updateiconcache.c:1394 -#, c-format -msgid "Failed to rewrite header\n" -msgstr "ਹੈਂਡਰ ਮੁੜ-ਲਿਖਣ ਦੌਰਾਨ ਗਲਤੀ\n" - -#: ../gtk/updateiconcache.c:1463 -#, c-format -msgid "Failed to open file %s : %s\n" -msgstr "ਫਾਇਲ %s ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s\n" - -#: ../gtk/updateiconcache.c:1471 -#, c-format -msgid "Failed to write cache file: %s\n" -msgstr "ਫਾਇਲ ਕੈਸ਼ੇ ਲਿਖਣ ਦੌਰਾਨ ਅਸਫ਼ਲ: %s\n" - -#: ../gtk/updateiconcache.c:1507 -#, c-format -msgid "The generated cache was invalid.\n" -msgstr "ਤਿਆਰ ਕੀਤੀ ਕੈਸ਼ੇ ਗਲਤ ਹੈ।\n" - -#: ../gtk/updateiconcache.c:1521 -#, c-format -msgid "Could not rename %s to %s: %s, removing %s then.\n" -msgstr "%s ਦਾ ਨਾਂ %s ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ: %s, ਹੁਣ %s ਨੂੰ ਹਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ।\n" - -#: ../gtk/updateiconcache.c:1535 -#, c-format -msgid "Could not rename %s to %s: %s\n" -msgstr "%s ਦਾ ਨਾਂ %s ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s\n" - -#: ../gtk/updateiconcache.c:1545 -#, c-format -msgid "Could not rename %s back to %s: %s.\n" -msgstr "%s ਦਾ ਨਾਂ ਮੁੜ %s ਬਦਲਿਆ ਨਹੀਂ ਸਕਦਾ ਹੈ: %s\n" - -#: ../gtk/updateiconcache.c:1572 -#, c-format -msgid "Cache file created successfully.\n" -msgstr "ਕੈਸ਼ੇ ਫਾਇਲ ਸਫ਼ਲਤਾਪੂਰਕ ਬਣਾਈ ਗਈ ਹੈ।\n" - -#: ../gtk/updateiconcache.c:1611 -msgid "Overwrite an existing cache, even if up to date" -msgstr "ਇੱਕ ਮੌਜੂਦਾ ਕੈਸ਼ੇ ਉੱਤੇ ਲਿਖੋ, ਭਾਵੇਂ ਅੱਪ-ਟੂ-ਡੇਟ ਹੋਵੇ" - -#: ../gtk/updateiconcache.c:1612 -msgid "Don't check for the existence of index.theme" -msgstr "ਮੌਜੂਦਾ index.theme ਦੀ ਮੌਜੂਦਗੀ ਦੀ ਜਾਂਚ ਨਾ ਕਰੋ" - -#: ../gtk/updateiconcache.c:1613 -msgid "Don't include image data in the cache" -msgstr "ਕੈਸ਼ੇ ਵਿੱਚ ਚਿੱਤਰ ਡਾਟਾ ਸ਼ਾਮਿਲ ਨਾ ਕਰੋ" - -#: ../gtk/updateiconcache.c:1614 -msgid "Output a C header file" -msgstr "ਇੱਕ C header ਫਾਇਲ ਆਉਟਪੁੱਟ" - -#: ../gtk/updateiconcache.c:1615 -msgid "Turn off verbose output" -msgstr "ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਆਉਟਪੁੱਟ ਬੰਦ ਕਰੋ" - -#: ../gtk/updateiconcache.c:1616 -msgid "Validate existing icon cache" -msgstr "ਮੌਜੂਦਾ ਆਈਕਾਨ ਕੈਸ਼ੇ ਦੀ ਵੈਧਤਾ" - -#: ../gtk/updateiconcache.c:1683 -#, c-format -msgid "File not found: %s\n" -msgstr "ਫਾਇਲ ਨਹੀਂ ਲੱਭੀ: %s\n" - -#: ../gtk/updateiconcache.c:1689 -#, c-format -msgid "Not a valid icon cache: %s\n" -msgstr "ਇੱਕ ਠੀਕ ਆਈਕਾਨ ਕੈਸ਼ੇ ਨਹੀਂ ਹੈ: %s\n" - -#: ../gtk/updateiconcache.c:1702 -#, c-format -msgid "No theme index file.\n" -msgstr "ਕੋਈ ਥੀਮ ਇੰਡੈਕਸ ਫਾਇਲ ਨਹੀਂ।\n" - -#: ../gtk/updateiconcache.c:1706 -#, c-format +#: ../gtk/gtkradioaction.c:119 msgid "" -"No theme index file in '%s'.\n" -"If you really want to create an icon cache here, use --ignore-theme-index.\n" +"The value returned by gtk_radio_action_get_current_value() when this action " +"is the current action of its group." msgstr "" -"'%s' ਵਿੱਚ ਕੋਈ ਸਰੂਪ ਇੰਡੈਕਸ ਫਾਇਲ ਨਹੀਂ ਹੈ।\n" -"ਜੇਕਰ ਤੁਸੀਂ ਇੱਥੇ ਆਈਕਾਨ ਕੈਸ਼ੇ ਬਣਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ --ignore-theme-index ਵਰਤੋਂ\n" +"ਇਹ ਕਾਰਵਾਈ ਆਪਣੇ ਗਰੁੱਪ ਦੀ ਮੌਜੂਦਾ ਕਾਰਵਾਈ ਹੈ ਤਾਂ " +"gtk_radio_action_get_current_value() ਨੇ " +"ਵਾਪਿਸ ਕੀਤਾ ਮੁੱਲ" -#. ID -#: ../modules/input/imam-et.c:454 -msgid "Amharic (EZ+)" -msgstr "ਅੰਹਰਿਕ (EZ+)" +#: ../gtk/gtkradioaction.c:135 ../gtk/gtkradiobutton.c:163 +#: ../gtk/gtkradiomenuitem.c:373 ../gtk/gtkradiotoolbutton.c:65 +msgid "Group" +msgstr "ਗਰੁੱਪ" -#. ID -#: ../modules/input/imcedilla.c:92 -msgid "Cedilla" -msgstr "ਕਾਦੀਲਾ" +#: ../gtk/gtkradioaction.c:136 +msgid "The radio action whose group this action belongs to." +msgstr "ਰੇਡੀਓ ਕਾਰਵਾਈ, ਜਿਸ ਗਰੁੱਪ ਨਾਲ ਇਹ ਕਾਰਵਾਈ ਸਬੰਧਤ ਹੈ।" -#. ID -#: ../modules/input/imcyrillic-translit.c:217 -msgid "Cyrillic (Transliterated)" -msgstr "ਸਰਲਿਕ (ਲਿੱਪੀ ਤਬਦੀਲ)" +#: ../gtk/gtkradioaction.c:151 +msgid "The current value" +msgstr "ਮੌਜੂਦਾ ਮੁੱਲ" -#. ID -#: ../modules/input/iminuktitut.c:127 -msgid "Inuktitut (Transliterated)" -msgstr "ਇਨੂਕੀਟੂ (ਲਿੱਪੀ ਤਬਦੀਲ)" +#: ../gtk/gtkradioaction.c:152 +msgid "" +"The value property of the currently active member of the group to which this " +"action belongs." +msgstr "" +"ਗਰੁੱਪ ਦੇ ਮੌਜੂਦਾ ਐਕਟਿਵ ਮੈਂਬਰ ਦੀ ਮੁੱਲ ਵਿਸ਼ੇਸ਼ਤਾ, ਜਿਸ ਨਾਲ ਇਹ ਐਕਸ਼ਨ ਸਬੰਧਿਤ ਹੈ।" -#. ID -#: ../modules/input/imipa.c:145 -msgid "IPA" -msgstr "IPA" +#: ../gtk/gtkradiobutton.c:164 +msgid "The radio button whose group this widget belongs to." +msgstr "ਰੇਡੀਉ ਬਟਨ, ਜਦੋਂ ਕਿ ਇਸ ਗਰੁੱਪ ਜਿਸ ਨਾਲ ਵਿਦਗਿਟ ਸਬੰਧਤ ਹੈ।" -#. ID -#: ../modules/input/immultipress.c:31 -msgid "Multipress" -msgstr "ਮਲਟੀਪਰੈੱਸ" +#: ../gtk/gtkradiomenuitem.c:374 +msgid "The radio menu item whose group this widget belongs to." +msgstr "ਰੇਡੀਉ ਮੇਨੂ, ਜਦੋਂ ਕਿ ਇਸ ਗਰੁੱਪ ਜਿਸ ਨਾਲ ਵਿਦਗਿਟ ਸਬੰਧ ਹੈ।" -#. ID -#: ../modules/input/imthai.c:35 -msgid "Thai-Lao" -msgstr "ਥਾਈ-ਲਾਓ" +#: ../gtk/gtkradiotoolbutton.c:66 +msgid "The radio tool button whose group this button belongs to." +msgstr "ਰੇਡੀਉ ਟੂਲ ਬਟਨ, ਜਦੋਂ ਕਿ ਇਸ ਗਰੁੱਪ ਜਿਸ ਨਾਲ ਬਟਨ ਸਬੰਧਤ ਹੈ।" -#. ID -#: ../modules/input/imti-er.c:453 -msgid "Tigrigna-Eritrean (EZ+)" -msgstr "ਟੀਗਰੋਗਨਾ -ਈਰਟਰੀਨ (EZ+)" +#: ../gtk/gtkrange.c:417 +msgid "The GtkAdjustment that contains the current value of this range object" +msgstr "GtkAdjustment ਜੋ ਕਿ ਰੇਜ਼ ਆਬਜੈਕਟ ਦੀ ਮੌਜੂਦਾ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" -#. ID -#: ../modules/input/imti-et.c:453 -msgid "Tigrigna-Ethiopian (EZ+)" -msgstr "ਟੀਗਰੋਗਨਾ ਈਥੀਨੋਪਿਨ(EZ+)" +#: ../gtk/gtkrange.c:425 +msgid "Invert direction slider moves to increase range value" +msgstr "ਬਦਲਵੀ ਦਿਸ਼ਾ ਵਾਲਾ ਸਲਾਇਡਰ ਰੇਜ਼ ਦਾ ਮੁੱਲ ਵਧਾਉਣ ਲਈ ਹਿੱਲੇ" -#. ID -#: ../modules/input/imviqr.c:244 -msgid "Vietnamese (VIQR)" -msgstr "ਵੀਅਤਨਾਮੀ (VIQR)" +#: ../gtk/gtkrange.c:432 +msgid "Lower stepper sensitivity" +msgstr "ਹੇਠਲੀ ਸਟੈਪਰ ਸੰਵੇਦਨਸ਼ੀਲਤਾ" -#. ID -#: ../modules/input/imxim.c:28 -msgid "X Input Method" -msgstr "X ਇੰਪੁੱਟ ਢੰਗ" +#: ../gtk/gtkrange.c:433 +msgid "" +"The sensitivity policy for the stepper that points to the adjustment's lower " +"side" +msgstr "" +"ਸਟਿੱਪਰ ਲਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪਾਲਸੀ, ਜੋ ਕਿ ਹੇਠਲੇ ਪਾਸੇ ਦੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਪੁਆਇੰਟ ਕਰੇ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 -msgid "Username:" -msgstr "ਯੂਜ਼ਰ ਨਾਂ:" +#: ../gtk/gtkrange.c:441 +msgid "Upper stepper sensitivity" +msgstr "ਉੱਪਰੀ ਸਟੈਪਰ ਸੰਵੇਦਨਸ਼ੀਲਤਾ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:812 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 -msgid "Password:" -msgstr "ਪਾਸਵਰਡ:" +#: ../gtk/gtkrange.c:442 +msgid "" +"The sensitivity policy for the stepper that points to the adjustment's upper " +"side" +msgstr "" +"ਸਟਿੱਪਰ ਲਈ ਸੰਵੇਦਨਸ਼ੀਲ ਪਾਲਸੀ, ਜੋ ਕਿ ਉਤਲੇ ਪਾਸੇ ਦੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਪੁਆਇੰਟ ਕਰੇ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "%s ਤੋਂ ਫਾਇਲ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:459 +msgid "Show Fill Level" +msgstr "ਭਰਨ ਲੈਵਲ ਵੇਖਾਓ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 -#, c-format -msgid "Authentication is required to print document '%s' on printer %s" -msgstr "ਪਰਿੰਟਰ %2$s ਉੱਤੇ '%1$s' ਡੌਕੂਮੈਂਟ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:460 +msgid "Whether to display a fill level indicator graphics on trough." +msgstr "ਕੀ ਭਰਨ ਲੈਵਲ ਇੰਡੀਕੇਟਰ ਗਰਾਫਿਕਸ ਰਾਹੀਂ ਵੇਖਾਇਆ ਜਾਵੇ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 -#, c-format -msgid "Authentication is required to print a document on %s" -msgstr "%s ਉੱਤੇ ਡੌਕੂਮੈਂਟ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:476 +msgid "Restrict to Fill Level" +msgstr "ਭਰਨ ਲੈਵਲ ਲਈ ਪਾਬੰਦੀ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 -#, c-format -msgid "Authentication is required to get attributes of job '%s'" -msgstr "ਜਾਬ '%s' ਦੇ ਗੁਣ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:477 +msgid "Whether to restrict the upper boundary to the fill level." +msgstr "ਕੀ ਭਰਨ ਲੈਵਲ ਲਈ ਉਤਲੀ ਸੀਮਾ ਦੀ ਪਾਬੰਦੀ ਹੋਵੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 -msgid "Authentication is required to get attributes of a job" -msgstr "ਜਾਬ ਦੇ ਗੁਣ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:492 +msgid "Fill Level" +msgstr "ਭਰਨ ਲੈਵਲ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 -#, c-format -msgid "Authentication is required to get attributes of printer %s" -msgstr "ਪਰਿੰਟਰ %s ਦੇ ਗੁਣ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:493 +msgid "The fill level." +msgstr "ਭਰਨ ਲੈਵਲ ਹੈ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 -msgid "Authentication is required to get attributes of a printer" -msgstr "ਪਰਿੰਟਦਰ ਦੇ ਗੁਣ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:510 +#| msgid "Digits" +msgid "Round Digits" +msgstr "ਪੂਰਨ ਅੰਕ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 -#, c-format -msgid "Authentication is required to get default printer of %s" -msgstr "%s ਲਈ ਡਿਫਾਲਟ ਪਰਿੰਟਰ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:511 +#| msgid "The number of pages in the document." +msgid "The number of digits to round the value to." +msgstr "ਮੁੱਲ ਪੂਰਾ ਕਰਨ ਲਈ ਅੰਕਾਂ ਦੀ ਗਿਣਤੀ ਹੈ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 -#, c-format -msgid "Authentication is required to get printers from %s" -msgstr "%s ਤੋਂ ਪਰਿੰਟਰ ਲੈਣ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:519 ../gtk/gtkswitch.c:786 +msgid "Slider Width" +msgstr "ਸਲਾਇਡਰ ਚੌੜਾਈ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 -#, c-format -msgid "Authentication is required on %s" -msgstr "%s ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:520 +msgid "Width of scrollbar or scale thumb" +msgstr "ਸਕਰੋਲਬਾਰ ਜਾਂ ਪੈਮਾਨਾ ਥੰਮ ਦੀ ਚੌੜਾਈ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 -msgid "Domain:" -msgstr "ਡੋਮੇਨ:" +#: ../gtk/gtkrange.c:527 +msgid "Trough Border" +msgstr "ਕੁੰਡ ਦਾ ਹਾਸ਼ੀਆ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 -#, c-format -msgid "Authentication is required to print document '%s'" -msgstr "'%s' ਡੌਕੂਮੈਂਟ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:528 +msgid "Spacing between thumb/steppers and outer trough bevel" +msgstr "ਥੰਬ/ਪਗਕਾਰਾਂ ਅਤੇ trough bevel ਵਿਚ ਫਾਸਲਾ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 -#, c-format -msgid "Authentication is required to print this document on printer %s" -msgstr "ਪਰਿੰਟਰ %s ਉੱਤੇ ਇਹ ਡੌਕੂਮੈਂਟ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:535 +msgid "Stepper Size" +msgstr "ਪਗਕਾਰ ਅਕਾਰ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 -msgid "Authentication is required to print this document" -msgstr "ਇਹ ਡੌਕੂਮੈਂਟ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲਈ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ" +#: ../gtk/gtkrange.c:536 +msgid "Length of step buttons at ends" +msgstr "ਅਖੀਰ ਤੇ ਪਗ-ਬਟਨ ਦੀ ਲੰਬਾਈ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 -#, c-format -msgid "Printer '%s' is low on toner." -msgstr "ਪਰਿੰਟਰ '%s' ਦਾ ਟੋਨਰ ਘੱਟ ਗਿਆ ਹੈ।" +#: ../gtk/gtkrange.c:551 +msgid "Stepper Spacing" +msgstr "ਪਗਕਾਰ ਦੀ ਥਾਂ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 -#, c-format -msgid "Printer '%s' has no toner left." -msgstr "ਪਰਿੰਟਰ '%s' ਲਈ ਟੋਨਰ ਨਹੀਂ ਬਚਿਆ ਹੈ।" +#: ../gtk/gtkrange.c:552 +msgid "Spacing between step buttons and thumb" +msgstr "ਪਗ-ਬਟਨ ਅਤੇ ਥੰਬ ਵਿੱਚਕਾਰ ਖਾਲੀ ਥਾਂ" -#. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 -#, c-format -msgid "Printer '%s' is low on developer." -msgstr "ਪਰਿੰਟਰ '%s' ਇੱਕ ਖੋਜੀ ਤੋਂ ਘੱਟ ਹੈ।" +#: ../gtk/gtkrange.c:559 +msgid "Arrow X Displacement" +msgstr "ਤੀਰ X ਵਿਸਥਾਪਨ" -#. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 -#, c-format -msgid "Printer '%s' is out of developer." -msgstr "ਪਰਿੰਟਰ '%s' ਇੱਕ ਖੋਜੀ ਤੋਂ ਬਾਹਰ ਹੈ।" +#: ../gtk/gtkrange.c:560 +msgid "" +"How far in the x direction to move the arrow when the button is depressed" +msgstr "ਜਦੋ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ x-ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿੱਲਾਉਣਾ ਹੈ" -#. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 -#, c-format -msgid "Printer '%s' is low on at least one marker supply." -msgstr "ਪਰਿੰਟਰ '%s' ਲਈ ਇੱਕ ਨਿਸ਼ਾਨਬੱਧਕ ਸਪਲਾਈ ਘੱਟ ਹੈ।" +#: ../gtk/gtkrange.c:567 +msgid "Arrow Y Displacement" +msgstr "ਤੀਟ Y ਵਿਸਥਾਪਨ" -#. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 -#, c-format -msgid "Printer '%s' is out of at least one marker supply." -msgstr "ਪਰਿੰਟਰ '%s' ਵਿੱਚੋਂ ਇੱਕ ਨਿਸ਼ਾਨਬੱਧਕ ਜਾਰੀ ਨਹੀਂ ਹੈ।" +#: ../gtk/gtkrange.c:568 +msgid "" +"How far in the y direction to move the arrow when the button is depressed" +msgstr "ਜਦੋ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ ਤਾਂ y-ਦਿਸ਼ਾ ਵਿੱਚ ਕਿੰਨਾ ਹਿੱਲਾਉਣਾ ਹੈ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 -#, c-format -msgid "The cover is open on printer '%s'." -msgstr "ਪਰਿੰਟਰ '%s' ਦਾ ਢੱਕਣ ਖੁੱਲ੍ਹਾ ਹੈ।" +#: ../gtk/gtkrange.c:586 +msgid "Trough Under Steppers" +msgstr "ਸਟਿੱਪਰ ਦੇ ਹੇਠ ਤੱਕ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 -#, c-format -msgid "The door is open on printer '%s'." -msgstr "ਪਰਿੰਟਰ '%s' ਦਾ ਦਰਵਾਜ਼ਾ (ਡੋਰ) ਖੁੱਲ੍ਹਾ ਹੈ।" +#: ../gtk/gtkrange.c:587 +msgid "" +"Whether to draw trough for full length of range or exclude the steppers and " +"spacing" +msgstr "" +"ਕੀ ਪੂਰੀ ਰੇਜ਼ ਦੀ ਲੰਬਾਈ ਮੁਤਾਬਕ ਰੱਖਣਾ ਹੈ ਜਾਂ ਸਟਿੱਪਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਨੂੰ ਅੱਡ ਰੱਖਣਾ " +"ਹੈ।" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 -#, c-format -msgid "Printer '%s' is low on paper." -msgstr "ਪਰਿੰਟਰ '%s' ਉੱਤੇ ਪੇਪਰ ਘੱਟ ਹਨ।" +#: ../gtk/gtkrange.c:600 +msgid "Arrow scaling" +msgstr "ਤੀਰ ਸਕੇਲਿੰਗ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 -#, c-format -msgid "Printer '%s' is out of paper." -msgstr "ਪਰਿੰਟਰ '%s' ਲਈ ਪੇਪਰ ਖਤਮ ਹੋ ਗਏ।" +#: ../gtk/gtkrange.c:601 +msgid "Arrow scaling with regard to scroll button size" +msgstr "ਸਕਰੋਲ ਬਟਨ ਸਾਈਜ਼ ਮੁਤਾਬਕ ਤੀਰ ਸਕੇਲ ਕਰੋ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 -#, c-format -msgid "Printer '%s' is currently offline." -msgstr "ਪਰਿੰਟਰ '%s' ਹੁਣ ਆਫਲਾਇਨ ਹੈ।" +#: ../gtk/gtkrecentaction.c:635 ../gtk/gtkrecentchoosermenu.c:246 +msgid "Show Numbers" +msgstr "ਗਿਣਤੀ ਵੇਖਾਓ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 -#, c-format -msgid "There is a problem on printer '%s'." -msgstr "ਪਰਿੰਟਰ '%s' ਉੱਤੇ ਸਮੱਸਿਆ ਹੈ।" +#: ../gtk/gtkrecentaction.c:636 ../gtk/gtkrecentchoosermenu.c:247 +msgid "Whether the items should be displayed with a number" +msgstr "ਕੀ ਆਈਟਮਾਂ ਨੂੰ ਇੱਕ ਨੰਬਰ ਵਾਂਗ ਵੇਖਾਇਆ ਜਾਵੇ" -#. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 -msgid "Paused ; Rejecting Jobs" -msgstr "ਵਿਰਾਮ, ਜੌਬ ਰੱਦ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ।" +#: ../gtk/gtkrecentchooser.c:132 +msgid "Recent Manager" +msgstr "ਤਾਜ਼ਾ ਮੈਨੇਜਰ" -#. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 -msgid "Rejecting Jobs" -msgstr "ਜੌਬ ਰੱਦ ਕੀਤੀਆਂ ਜਾ ਰਹੀਆਂ ਹਨ" +#: ../gtk/gtkrecentchooser.c:133 +msgid "The RecentManager object to use" +msgstr "ਵਰਤਣ ਲਈ ਤਾਜ਼ਾ-ਮੈਨੇਜਰ ਆਬਜੈਕਟ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 -msgid "Two Sided" -msgstr "ਦੋ ਪਾਸੀਂ" +#: ../gtk/gtkrecentchooser.c:147 +msgid "Show Private" +msgstr "ਪ੍ਰਾਈਵੇਟ ਵੇਖਾਓ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 -msgid "Paper Type" -msgstr "ਪੇਪਰ ਕਿਸਮ" +#: ../gtk/gtkrecentchooser.c:148 +msgid "Whether the private items should be displayed" +msgstr "ਕੀ ਪ੍ਰਾਈਵੇਟ ਆਈਟਠਾਂ ਵੇਖਾਈਆਂ ਜਾਣ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 -msgid "Paper Source" -msgstr "ਪੇਪਰ ਸੋਰਸ" +#: ../gtk/gtkrecentchooser.c:161 +msgid "Show Tooltips" +msgstr "ਸੰਦ-ਸੰਕੇਤ ਵੇਖਾਓ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 -msgid "Output Tray" -msgstr "ਆਉਟਪੁੱਟ ਟਰੇ" +#: ../gtk/gtkrecentchooser.c:162 +msgid "Whether there should be a tooltip on the item" +msgstr "ਕੀ ਆਈਟਮ ਉੱਤੇ ਟੂਲ-ਟਿੱਪ ਵੇਖਾਏ ਜਾਣ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 -msgid "Resolution" -msgstr "ਹੱਲ਼" +#: ../gtk/gtkrecentchooser.c:174 +msgid "Show Icons" +msgstr "ਆਈਕਾਨ ਵੇਖਾਓ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 -msgid "GhostScript pre-filtering" -msgstr "ਗੋਸਟ-ਸਕ੍ਰਿਪਟ ਪ੍ਰੀਫਿਲਟਰਿੰਗ" +#: ../gtk/gtkrecentchooser.c:175 +msgid "Whether there should be an icon near the item" +msgstr "ਕੀ ਆਈਟਮ ਦੇ ਨਾਲ ਆਈਕਾਨ ਵੇਖਾਇਆ ਜਾਵੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 -msgid "One Sided" -msgstr "ਇੱਕ ਪਾਸੇ" +#: ../gtk/gtkrecentchooser.c:190 +msgid "Show Not Found" +msgstr "ਨਹੀਂ ਲੱਭਿਆ ਵੇਖਾਓ" -#. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 -msgid "Long Edge (Standard)" -msgstr "ਲੰਮਾ ਕੋਨਾ (ਸਟੈਂਡਰਡ)" +#: ../gtk/gtkrecentchooser.c:191 +msgid "Whether the items pointing to unavailable resources should be displayed" +msgstr "ਕੀ ਨਾ-ਉਪਲੱਬਧ ਸਰੋਤਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀਆਂ ਆਈਟਮਾਂ ਵੇਖਾਈਆਂ ਜਾਣ" -#. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 -msgid "Short Edge (Flip)" -msgstr "ਛੋਟਾ ਕੋਨਾ (ਫਲਿੱਪ)" +#: ../gtk/gtkrecentchooser.c:204 +msgid "Whether to allow multiple items to be selected" +msgstr "ਕੀ ਕਈ ਆਈਟਮਾਂ ਦੀ ਚੋਣ ਕਰਨ ਦੀ ਮਨਜ਼ੂਰੀ ਹੈ" -#. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 -msgid "Auto Select" -msgstr "ਆਟੋ ਚੋਣ" +#: ../gtk/gtkrecentchooser.c:217 +msgid "Local only" +msgstr "ਸਿਰਫ਼ ਲੋਕਲ ਹੀ" -#. Translators: this is an option of "Paper Source" -#. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3295 -msgid "Printer Default" -msgstr "ਪਰਿੰਟਰ ਮੂਲ" +#: ../gtk/gtkrecentchooser.c:218 +msgid "Whether the selected resource(s) should be limited to local file: URIs" +msgstr "ਕੀ ਚੁਣੇ ਸਰੋਤ ਸਿਰਫ਼ ਲੋਕਲ ਫਾਇਲ ਲਈ ਹੀ ਸੀਮਿਤ ਹੋਣ: URI" -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 -msgid "Embed GhostScript fonts only" -msgstr "ਇੰਬੈੱਡ ਕੀਤੇ ਗੋਸਟਸਕ੍ਰਿਪਟ ਫੋਂਟ ਹੀ" +#: ../gtk/gtkrecentchooser.c:234 +msgid "Limit" +msgstr "ਸੀਮਾ" -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 -msgid "Convert to PS level 1" -msgstr "PS ਲੈਵਲ ੧ ਲਈ ਬਦਲੋ" +#: ../gtk/gtkrecentchooser.c:235 +msgid "The maximum number of items to be displayed" +msgstr "ਵੇਖਾਉਣ ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ ਆਈਟਮਾਂ ਦੀ ਗਿਣਤੀ" -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 -msgid "Convert to PS level 2" -msgstr "PS ਲੈਵਲ ੨ ਲਈ ਬਦਲੋ" +#: ../gtk/gtkrecentchooser.c:249 +msgid "Sort Type" +msgstr "ਕ੍ਰਮਬੱਧ ਕਿਸਮ" -#. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 -msgid "No pre-filtering" -msgstr "ਕੋਈ ਪ੍ਰੀ-ਫਿਲਟਰਿੰਗ ਨਹੀਂ" +#: ../gtk/gtkrecentchooser.c:250 +msgid "The sorting order of the items displayed" +msgstr "ਆਈਟਮਾਂ ਵੇਖਾਉਣ ਲਈ ਕ੍ਰਮਬੱਧ ਢੰਗ" -#. Translators: "Miscellaneous" is the label for a button, that opens -#. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 -msgid "Miscellaneous" -msgstr "ਫੁਟਕਲ" +#: ../gtk/gtkrecentchooser.c:265 +msgid "The current filter for selecting which resources are displayed" +msgstr "ਚੋਣ ਲਈ ਮੌਜੂਦਾ ਫਿਲਟਰ, ਜਿਸ ਨਾਲ ਸਰੋਤ ਵੇਖਾਏ ਜਾਣ" -#. Translators: These strings name the possible values of the -#. * job priority option in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../gtk/gtkrecentmanager.c:295 +msgid "The full path to the file to be used to store and read the list" +msgstr "ਸੂਚੀ ਸੰਭਾਲਣ ਅਤੇ ਪੜ੍ਹਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਫਾਇਲ ਲਈ ਪੂਰਾ ਮਾਰਗ" + +#: ../gtk/gtkrecentmanager.c:310 +msgid "The size of the recently used resources list" +msgstr "ਇਸ ਸਮੇਂ ਵਰਤੀ ਸਰੋਤ ਸੂਚੀ ਦਾ ਆਕਾਰ" + +#: ../gtk/gtkscalebutton.c:218 +msgid "The value of the scale" +msgstr "ਸਕੇਲ ਦਾ ਮੁੱਲ" + +#: ../gtk/gtkscalebutton.c:228 +msgid "The icon size" +msgstr "ਆਈਕਾਨ ਆਕਾਰ" + +#: ../gtk/gtkscalebutton.c:237 +msgid "" +"The GtkAdjustment that contains the current value of this scale button object" +msgstr "GtkAdjustment, ਜੋ ਕਿ ਇਹ ਸਕੇਲ ਬਟਨ ਆਬਜੈਕਟ ਦੀ ਮੌਜੂਦਾ ਮੁੱਲ ਰੱਖਦਾ ਹੈ" + +#: ../gtk/gtkscalebutton.c:265 +msgid "Icons" +msgstr "ਆਈਕਾਨ" + +#: ../gtk/gtkscalebutton.c:266 +msgid "List of icon names" +msgstr "ਆਈਕਾਨ ਨਾਂ ਦੀ ਲਿਸਟ" + +#: ../gtk/gtkscale.c:254 +msgid "The number of decimal places that are displayed in the value" +msgstr "ਦਸ਼ਮਲਵ ਦੀ ਗਿਣਤੀ ਜੋ ਕਿ ਮੁੱਲ ਵਿੱਚ ਦਿੱਸੇਗੀ" + +#: ../gtk/gtkscale.c:263 +msgid "Draw Value" +msgstr "ਮੁੱਲ ਕੱਢੋ" + +#: ../gtk/gtkscale.c:264 +msgid "Whether the current value is displayed as a string next to the slider" +msgstr "ਕੀ ਮੌਜੂਦਾ ਮੁੱਲ ਪਗਕਾਰ ਤੇ ਅਗਲ਼ੀ ਸਤਰ ਵੇਖਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkscale.c:271 +msgid "Value Position" +msgstr "ਟਿਕਾਣਾ ਮੁੱਲ" + +#: ../gtk/gtkscale.c:272 +msgid "The position in which the current value is displayed" +msgstr "ਟਿਕਾਣਾ ਜਿੱਥੇ ਮੌਜੂਦਾ ਮੁੱਲ ਵੇਖਾ ਰਿਹਾ ਹੈ" + +#: ../gtk/gtkscale.c:279 +msgid "Slider Length" +msgstr "ਪਗਕਾਰ ਲੰਬਾਈ" + +#: ../gtk/gtkscale.c:280 +msgid "Length of scale's slider" +msgstr "ਪੈਮਾਨੇ ਦੇ ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkscale.c:288 +msgid "Value spacing" +msgstr "ਮੁੱਲ ਦੀ ਥਾਂ" + +#: ../gtk/gtkscale.c:289 +msgid "Space between value text and the slider/trough area" +msgstr "ਖਾਲ਼ੀ ਥਾਂ, ਸ਼ਬਦ ਅਤੇ ਪਗਕਾਰ/ਕੁੰਡ ਖੇਤਰ ਵਿੱਚ" + +#: ../gtk/gtkscrollable.c:86 +msgid "Horizontal adjustment" +msgstr "ਲੇਟਵਾਂ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrollable.c:87 +msgid "" +"Horizontal adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"ਹਰੀਜੱਟਲ ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਕਿ ਸਕਰੋਲਯੋਗ ਵਿਦਜੈੱਟ ਤੇ ਇਸ ਦੇ ਕੰਟਰੋਲਰ ਵਿੱਚ ਸਾਂਝੀ ਕੀਤੀ " +"ਜਾਂਦੀ ਹੈ" + +#: ../gtk/gtkscrollable.c:103 +msgid "Vertical adjustment" +msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrollable.c:104 +msgid "" +"Vertical adjustment that is shared between the scrollable widget and its " +"controller" +msgstr "" +"ਵਰਟੀਕਲ ਅਡਜੱਸਟਮੈਂਟ, ਜੋ ਕਿ ਸਕਰੋਲਯੋਗ ਵਿਦਜੈੱਟ ਤੇ ਇਸ ਦੇ ਕੰਟਰੋਲਰ ਵਿੱਚ ਸਾਂਝੀ ਕੀਤੀ " +"ਜਾਂਦੀ ਹੈ" + +#: ../gtk/gtkscrollable.c:120 +msgid "Horizontal Scrollable Policy" +msgstr "ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਪਾਲਸੀ" + +#: ../gtk/gtkscrollable.c:121 ../gtk/gtkscrollable.c:137 +msgid "How the size of the content should be determined" +msgstr "ਸਮੱਗਰੀ ਦਾ ਆਕਾਰ ਕਿਵੇਂ ਜਾਣਿਆ ਜਾਵੇ" + +#: ../gtk/gtkscrollable.c:136 +msgid "Vertical Scrollable Policy" +msgstr "ਵਰਟੀਕਲ ਸਕਰੋਲਯੋਗ ਪਾਲਸੀ" + +#: ../gtk/gtkscrollbar.c:72 +msgid "Minimum Slider Length" +msgstr "ਘੱਟੋ-ਘੱਟ ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkscrollbar.c:73 +msgid "Minimum length of scrollbar slider" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਕਰੋਲਬਾਰ-ਪਗਕਾਰ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkscrollbar.c:81 +msgid "Fixed slider size" +msgstr "ਪਗਕਾਰ ਦਾ ਨਿਸ਼ਚਿਤ ਅਕਾਰ" + +#: ../gtk/gtkscrollbar.c:82 +msgid "Don't change slider size, just lock it to the minimum length" +msgstr "ਪਗਕਾਰ ਦਾ ਅਕਾਰ ਨਾ ਬਦਲੋ, ਸਿਰਫ ਘੱਟੋ-ਘੱਟ ਲੰਬਾਈ ਨਿਸ਼ਚਿਤ ਕਰ ਦਿਓ" + +#: ../gtk/gtkscrollbar.c:103 +msgid "" +"Display a second backward arrow button on the opposite end of the scrollbar" +msgstr "ਸਕਰੋਲਬਾਰ ਦੇ ਉਲਟ ਕਿਨਾਰੇ ਤੇ ਦੂਜਾ ਪਿੱਛੇ ਵਾਲਾ ਤੀਰ-ਬਟਨ ਵੇਖਾਓ" + +#: ../gtk/gtkscrollbar.c:110 +msgid "" +"Display a second forward arrow button on the opposite end of the scrollbar" +msgstr "ਸਕਰੋਲਬਾਰ ਦੇ ਉਲਟ ਕਿਨਾਰੇ ਉੱਤੇ ਦੂਜਾ ਅੱਗੇ ਵਾਲਾ ਤੀਰ-ਬਟਨ ਵੇਖਾਓ" + +#: ../gtk/gtkscrolledwindow.c:296 +msgid "Horizontal Adjustment" +msgstr "ਲੇਟਵੀ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrolledwindow.c:297 +msgid "The GtkAdjustment for the horizontal position" +msgstr "ਲੇਟਵੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" + +#: ../gtk/gtkscrolledwindow.c:303 +msgid "Vertical Adjustment" +msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ" + +#: ../gtk/gtkscrolledwindow.c:304 +msgid "The GtkAdjustment for the vertical position" +msgstr "ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਲਈ GtkAdjustment" + +#: ../gtk/gtkscrolledwindow.c:310 +msgid "Horizontal Scrollbar Policy" +msgstr "ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਦਾ ਢੰਗ" + +#: ../gtk/gtkscrolledwindow.c:311 +msgid "When the horizontal scrollbar is displayed" +msgstr "ਜਦੋਂ ਲੇਟਵਾਂ ਸਕਰੌਲਬਾਰ ਵਿਖਾਇਆ ਗਿਆ" + +#: ../gtk/gtkscrolledwindow.c:318 +msgid "Vertical Scrollbar Policy" +msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ ਪਾਲਸੀ" + +#: ../gtk/gtkscrolledwindow.c:319 +msgid "When the vertical scrollbar is displayed" +msgstr "ਜਦੋਂ ਲੰਬਕਾਰੀ ਸਕਰੌਲਬਾਰ ਵਿਖਾਇਆ ਗਿਆ" + +#: ../gtk/gtkscrolledwindow.c:327 +msgid "Window Placement" +msgstr "ਵਿੰਡੋ ਟਿਕਾਣਾ" + +#: ../gtk/gtkscrolledwindow.c:328 +msgid "" +"Where the contents are located with respect to the scrollbars. This property " +"only takes effect if \"window-placement-set\" is TRUE." +msgstr "" +"ਸਮੱਗਰੀ ਨੂੰ ਸਕਰੋਲਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਕਿੱਥੇ ਰੱਖਿਆ ਜਾਵੇ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ " +"\"window-placement-set\" ਦੇ " +"ਸਹੀਂ ਹੋਣ ਦੀ ਸੂਰਤ ਵਿੱਚ ਹੀ ਪਰਭਾਵੀ ਹੁੰਦੀ ਹੈ।" + +#: ../gtk/gtkscrolledwindow.c:345 +msgid "Window Placement Set" +msgstr "ਵਿੰਡੋ ਟਿਕਾਣਾ ਦਿਓ" + +#: ../gtk/gtkscrolledwindow.c:346 +msgid "" +"Whether \"window-placement\" should be used to determine the location of the " +"contents with respect to the scrollbars." +msgstr "" +"ਕੀ \"window-placement\" ਨੂੰ ਸਕਰੋਲ-ਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਸਮੱਗਰੀ ਨੂੰ ਰੱਖਣ ਲਈ ਪਤਾ ਕਰਨ " +"ਵਾਸਤੇ ਵਰਤਿਆ " +"ਜਾਵੇ।" + +#: ../gtk/gtkscrolledwindow.c:352 +msgid "Shadow Type" +msgstr "ਛਾਂ ਕਿਸਮ" + +#: ../gtk/gtkscrolledwindow.c:353 +msgid "Style of bevel around the contents" +msgstr "ਹਿੱਸੇ ਦੁਆਲੇ bevel ਦੀ ਕਿਸਮ" + +#: ../gtk/gtkscrolledwindow.c:367 +msgid "Scrollbars within bevel" +msgstr "ਬੀਵਲ ਨਾਲ ਸਕਰੋਲਬਾਰ" + +#: ../gtk/gtkscrolledwindow.c:368 +msgid "Place scrollbars within the scrolled window's bevel" +msgstr "ਸਕਰੋਲ ਕੀਤੇ ਵਿੰਡੋ ਦੇ ਬੀਵਲ ਵਿੱਚ ਸਕਰੋਲਬਾਰ ਰੱਖੋ" + +#: ../gtk/gtkscrolledwindow.c:374 +msgid "Scrollbar spacing" +msgstr "ਸਕਰੌਲਬਾਰ ਵਿੱਥ" + +#: ../gtk/gtkscrolledwindow.c:375 +msgid "Number of pixels between the scrollbars and the scrolled window" +msgstr "ਸਕਰੌਲਬਾਰ ਅਤੇ ਸਕਰੌਲ ਕੀਤੇ ਵਿੰਡੋ ਵਿਚਕਾਰ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtkscrolledwindow.c:391 +msgid "Minimum Content Width" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਮੱਗਰੀ ਚੌੜਾਈ" + +#: ../gtk/gtkscrolledwindow.c:392 +msgid "The minimum width that the scrolled window will allocate to its content" +msgstr "ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ, ਜੋ ਕਿ ਸਕਰੋਲ ਵਿੰਡੋ ਆਪਣੀ ਸਮੱਗਰੀ ਨੂੰ ਦੇਵੇਗੀ" + +#: ../gtk/gtkscrolledwindow.c:406 +msgid "Minimum Content Height" +msgstr "ਘੱਟੋ-ਘੱਟ ਸਮੱਗਰੀ ਉਚਾਈ" + +#: ../gtk/gtkscrolledwindow.c:407 +msgid "" +"The minimum height that the scrolled window will allocate to its content" +msgstr "ਘੱਟੋ-ਘੱਟ ਉਚਾਈ, ਜੋ ਕਿ ਸਕਰੋਲ ਵਿੰਡੋ ਆਪਣੀ ਸਮੱਗਰੀ ਨੂੰ ਦੇਵੇਗੀ" + +#: ../gtk/gtkseparatortoolitem.c:143 +msgid "Draw" +msgstr "ਉਲੀਕੋ" + +#: ../gtk/gtkseparatortoolitem.c:144 +msgid "Whether the separator is drawn, or just blank" +msgstr "ਵਖਰੇਵਾਂ ਉਲੀਕਿਆ ਜਾਵੇ ਜਾਂ ਸਿਰਫ ਖਾਲੀ ਛੱਡਿਆ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:299 +msgid "Double Click Time" +msgstr "ਦੋ-ਵਾਰ ਦਬਾਉਣ ਦਾ ਸਮਾਂ" + +#: ../gtk/gtksettings.c:300 +msgid "" +"Maximum time allowed between two clicks for them to be considered a double " +"click (in milliseconds)" +msgstr "" +"ਵੱਧ ਤੋਂ ਵੱਧ ਸਮਾਂ, ਪਹਿਲੀ ਤੇ ਦੂਜੀ ਵਾਰ ਦਬਾਉਣ ਵਿਚਕਾਰ ਜੋ ਕਿ ਇਹ ਸਮਝਿਆ ਜਾਵੇ ਕਿ ਇਹ " +"ਦੋ-ਵਾਰ-" +"ਦਬਾਇਆ ਗਿਆ ਹੈ (ਮਿਲੀ-ਸਕਿੰਟਾਂ ਵਿੱਚ)" + +#: ../gtk/gtksettings.c:307 +msgid "Double Click Distance" +msgstr "ਦੋ-ਵਾਰ ਦਬਾਉਣ ਦਾ ਫਾਸਲਾ" + +#: ../gtk/gtksettings.c:308 +msgid "" +"Maximum distance allowed between two clicks for them to be considered a " +"double click (in pixels)" +msgstr "" +"ਦੋ ਦਬਾਉਣ ਵਿਚਕਾਰ ਵੱਧ ਤੋਂ ਵੱਧ ਮੰਨਣਯੋਗ ਦੂਰੀ ਜਿਸ ਨੂੰ ਦੋ-ਵਾਰ-ਦਬਾਇਆ ਜਾਵੇ (ਪਿਕਸਲਾਂ " +"ਵਿੱਚ)" + +#: ../gtk/gtksettings.c:324 +msgid "Cursor Blink" +msgstr "ਕਰਸਰ ਝਪਕਣਾ" + +#: ../gtk/gtksettings.c:325 +msgid "Whether the cursor should blink" +msgstr "ਕੀ ਕਰਸਰ ਝਪਕੇ" + +#: ../gtk/gtksettings.c:332 +msgid "Cursor Blink Time" +msgstr "ਕਰਸਰ ਝਪਕਣ ਦਾ ਸਮਾਂ" + +#: ../gtk/gtksettings.c:333 +msgid "Length of the cursor blink cycle, in milliseconds" +msgstr "ਕਰਸਰ ਝਪਕਣ ਦੇ ਸਮਾਂ ਚੱਕਰ ਦੀ ਲੰਬਾਈ, ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ" + +#: ../gtk/gtksettings.c:352 +msgid "Cursor Blink Timeout" +msgstr "ਕਰਸਰ ਝਪਕਣ ਦਾ ਸਮਾਂ" + +#: ../gtk/gtksettings.c:353 +msgid "Time after which the cursor stops blinking, in seconds" +msgstr "ਸਮਾਂ, ਜਿਸ ਉਪਰੰਤ ਕਰਸਰ ਝਪਕਣਾ ਬੰਦ ਹੋਵੇ, ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ" + +#: ../gtk/gtksettings.c:360 +msgid "Split Cursor" +msgstr "ਕਰਸਰ ਖਿੰਡਾਓ" + +#: ../gtk/gtksettings.c:361 +msgid "" +"Whether two cursors should be displayed for mixed left-to-right and right-to-" +"left text" +msgstr "" +"ਕੀ ਦੋ ਕਰਸਰਾਂ ਵੇਖਾਈਆ ਜਾਣ ਜੋ ਕਿ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਤੇ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਟੈਕਸਟ ਰੱਲਵੇ ਨੂੰ " +"ਵੇਖਾਉਣ" + +#: ../gtk/gtksettings.c:368 +msgid "Theme Name" +msgstr "ਸਰੂਪ ਨਾਂ" + +#: ../gtk/gtksettings.c:369 +msgid "Name of theme RC file to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸਰੂਪ RC ਫਾਇਲ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:377 +msgid "Icon Theme Name" +msgstr "ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:378 +msgid "Name of icon theme to use" +msgstr "ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:386 +msgid "Fallback Icon Theme Name" +msgstr "ਵਾਪਸੀ ਆਈਕਾਨ ਸਰੂਪ ਨਾਂ" + +#: ../gtk/gtksettings.c:387 +msgid "Name of a icon theme to fall back to" +msgstr "ਵਾਪਸ ਪਰਤਣ ਲਈ ਇੱਕ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:395 +msgid "Key Theme Name" +msgstr "ਕੀ-ਸਰੂਪ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:396 +msgid "Name of key theme RC file to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਕੀ-ਸਰੂਪ RC ਫਾਇਲ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:404 +msgid "Menu bar accelerator" +msgstr "ਮੇਨੂ-ਪੱਟੀ ਤੇਜ਼" + +#: ../gtk/gtksettings.c:405 +msgid "Keybinding to activate the menu bar" +msgstr "ਮੇਨੂ ਨੂੰ ਸਰਗਰਮ ਕਰਨ ਲਈ ਕੀ-ਬਾਈਡਿੰਗ" + +#: ../gtk/gtksettings.c:413 +msgid "Drag threshold" +msgstr "ਚੁੱਕਣ ਸਮੱਰਥਾ" + +#: ../gtk/gtksettings.c:414 +msgid "Number of pixels the cursor can move before dragging" +msgstr "ਖਿੱਚਣ ਤੋਂ ਪਹਿਲਾਂ ਕਰਸਰ ਕਿੰਨੇ ਪਿਕਸਲ ਹਿੱਲੇ" + +#: ../gtk/gtksettings.c:422 +msgid "Font Name" +msgstr "ਫੋਂਟ-ਨਾਂ" + +#: ../gtk/gtksettings.c:423 +msgid "Name of default font to use" +msgstr "ਵਰਤਣ ਲਈ ਮੂਲ-ਫੋਂਟ ਦਾ ਨਾਂ" + +#: ../gtk/gtksettings.c:445 +msgid "Icon Sizes" +msgstr "ਆਈਕਾਨ ਅਕਾਰ" + +#: ../gtk/gtksettings.c:446 +msgid "List of icon sizes (gtk-menu=16,16:gtk-button=20,20..." +msgstr "ਆਈਕਾਨ ਅਕਾਰ ਦੀ ਸੂਚੀ (gtk-ਸੂਚੀ=16,16;gtk-ਬਟਨ=20,20..." + +#: ../gtk/gtksettings.c:454 +msgid "GTK Modules" +msgstr "GTK ਮੈਡੀਊਲ" + +#: ../gtk/gtksettings.c:455 +msgid "List of currently active GTK modules" +msgstr "ਇਸ ਸਮੇਂ ਸਰਗਰਮ GTK ਮੈਡੀਊਲਾਂ ਦੀ ਸੂਚੀ" + +#: ../gtk/gtksettings.c:464 +msgid "Xft Antialias" +msgstr "Xft ਐਟੀਲਾਈਸਿਕ" + +#: ../gtk/gtksettings.c:465 +msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default" +msgstr "ਕੀ Xft ਫੋਂਟ ਨੂੰ ਐਟੀਲਾਈਸਿਕ ਕਰਨਾ ਹੈ; 0= ਨਹੀ, 1=ਹਾਂ, -1=ਮੂਲ" + +#: ../gtk/gtksettings.c:474 +msgid "Xft Hinting" +msgstr "Xft ਸੰਕੇਤ" + +#: ../gtk/gtksettings.c:475 +msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default" +msgstr "ਕੀ ਸੰਕੇਤ ਦੇਣੇ ਹਨ Xft ਫੋਟ; 0=ਨਹੀ, 1=ਹਾਂ, -1=ਮੂਲ" + +#: ../gtk/gtksettings.c:484 +msgid "Xft Hint Style" +msgstr "Xft ਸੰਕੇਤ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:485 +msgid "" +"What degree of hinting to use; hintnone, hintslight, hintmedium, or hintfull" +msgstr "ਕਿਸ ਤਰ੍ਹਾਂ ਦੇ ਸੰਕੇਤ ਵਰਤਣੇ ਹਨ ; ਕੋਈ ਨਹੀ, ਥੋੜੇ, ਮੱਧਮ, ਜਾਂ ਲੋੜ ਮੁਤਾਬਕ" + +#: ../gtk/gtksettings.c:494 +msgid "Xft RGBA" +msgstr "Xft RGBA" + +#: ../gtk/gtksettings.c:495 +msgid "Type of subpixel antialiasing; none, rgb, bgr, vrgb, vbgr" +msgstr "ਸਬ-ਪਿਕਸਲ ਐਟੀਲਾਈਸਇੰਗ ਦੀ ਕਿਸਮ; ਕੋਈ ਨਹੀ, rgb, bgr, vrgb, vbgr" + +#: ../gtk/gtksettings.c:504 +msgid "Xft DPI" +msgstr "Xft DPI" + +#: ../gtk/gtksettings.c:505 +msgid "Resolution for Xft, in 1024 * dots/inch. -1 to use default value" +msgstr "Xft ਲਈ ਰੈਜ਼ੋਲੂਸ਼ਨ, 1024 * ਬਿੰਦੂ/ਇੰਚ -1 ਮੂਲ ਮੁੱਲ ਦੇ ਰੂਪ ਵਿੱਚ ਵਰਤੋਂ" + +#: ../gtk/gtksettings.c:514 +msgid "Cursor theme name" +msgstr "ਕਰਸਰ ਸਰੂਪ ਨਾਂ" + +#: ../gtk/gtksettings.c:515 +msgid "Name of the cursor theme to use, or NULL to use the default theme" +msgstr "ਵਰਤਣ ਲਈ ਆਈਕਾਨ ਸਰੂਪ ਦਾ ਨਾਂ, ਜਾਂ ਮੂਲ ਸਰੂਪ ਲਈ NULL" + +#: ../gtk/gtksettings.c:523 +msgid "Cursor theme size" +msgstr "ਕਰਸਰ ਸਰੂਪ ਅਕਾਰ" + +#: ../gtk/gtksettings.c:524 +msgid "Size to use for cursors, or 0 to use the default size" +msgstr "ਵਰਤਣ ਲਈ ਕਰਸਰ ਅਕਾਰ, ਜਾਂ ਮੂਲ ਅਕਾਰ ਲਈ 0 ਦਿਓ" + +#: ../gtk/gtksettings.c:534 +msgid "Alternative button order" +msgstr "ਬਦਲਵਾਂ ਬਟਨ ਕਰਮ" + +#: ../gtk/gtksettings.c:535 +msgid "Whether buttons in dialogs should use the alternative button order" +msgstr "ਕੀ ਡਾਈਲਾਗ ਦੇ ਬਟਨ ਲਈ ਬਦਲਵਾਂ ਬਟਨ ਕਰਮ ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ" + +#: ../gtk/gtksettings.c:552 +msgid "Alternative sort indicator direction" +msgstr "ਬਦਲਵੀਂ ਲੜੀਬੱਧ ਸੂਚਕ ਦਿਸ਼ਾ" + +#: ../gtk/gtksettings.c:553 +msgid "" +"Whether the direction of the sort indicators in list and tree views is " +"inverted compared to the default (where down means ascending)" +msgstr "" +"ਕੀ ਲਿਸਟ ਅਤੇ ਟਰੀ ਝਲਕ ਵਿੱਚ ਲੜੀਬੱਧ ਇੰਡੀਕੇਟਰ ਦੀ ਦਿਸ਼ਾ ਡਿਫਾਲਟ ਦੀ ਬਜਾਏ ਉਲਟ ਹੋਵੇ " +"(ਜਿੱਥੇ ਕਿ " +"ਹੇਠਾਂ ਦਾ ਮਤਲਬ ਵੱਧਦਾ ਹੈ)" + +#: ../gtk/gtksettings.c:561 +msgid "Show the 'Input Methods' menu" +msgstr "'ਇੰਪੁੱਟ ਢੰਗ' ਮੇਨੂ ਵੇਖਾਓ" + +#: ../gtk/gtksettings.c:562 +msgid "" +"Whether the context menus of entries and text views should offer to change " +"the input method" +msgstr "ਕੀ ਐਂਟਰੀਆਂ ਦੇ ਸਬੰਧਿਤ ਮੇਨੂ ਅਤੇ ਟੈਕਸਟ ਝਲਕ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਨੂੰ ਦਰਸਾਉਣ" + +#: ../gtk/gtksettings.c:570 +msgid "Show the 'Insert Unicode Control Character' menu" +msgstr "'ਯੂਨੀਕੋਡ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਲ ਕਰੋ' ਮੇਨੂ ਵੇਖਾਓ" + +#: ../gtk/gtksettings.c:571 +msgid "" +"Whether the context menus of entries and text views should offer to insert " +"control characters" +msgstr "" +"ਕੀ ਐਂਟਰੀਆਂ ਦੇ ਸਬੰਧਿਤ ਮੇਨੂ ਅਤੇ ਟੈਕਸਟ ਝਲਕ ਕੰਟਰੋਲ ਅੱਖਰ ਸ਼ਾਮਲ ਕਰਨ ਨੂੰ ਦਰਸਾਉਣ" + +#: ../gtk/gtksettings.c:579 +msgid "Start timeout" +msgstr "ਸ਼ੁਰੂਆਤੀ ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:580 +msgid "Starting value for timeouts, when button is pressed" +msgstr "ਅੰਤਰਾਲ ਲਈ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ, ਜਦੋਂ ਕਿ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:589 +msgid "Repeat timeout" +msgstr "ਦੁਹਰਾਉ ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:590 +msgid "Repeat value for timeouts, when button is pressed" +msgstr "ਅੰਤਰਾਲ ਦੁਹਰਾਉਣ ਮੁੱਲ, ਜਦੋਂ ਇੱਕ ਬਟਨ ਨੂੰ ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:599 +msgid "Expand timeout" +msgstr "ਫੈਲਾ ਸਮਾਂ-ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:600 +msgid "Expand value for timeouts, when a widget is expanding a new region" +msgstr "" +"ਫੈਲਾਉਣ ਲਈ ਅੰਤਰਾਲ ਦਾ ਮੁੱਲ, ਜਦੋਂ ਕਿ ਇੱਕ ਵਿਦਗਿਟ ਇੱਕ ਨਵੇਂ ਖੇਤਰ ਨੂੰ ਫੈਲਾਉਦਾ ਹੋਵੇ" + +#: ../gtk/gtksettings.c:635 +msgid "Color scheme" +msgstr "ਰੰਗ ਸਕੀਮ" + +#: ../gtk/gtksettings.c:636 +msgid "A palette of named colors for use in themes" +msgstr "ਸਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ ਨਾਮੀ ਰੰਗ ਦੀ ਇੱਕ ਰੰਗ-ਪੱਟੀ" + +#: ../gtk/gtksettings.c:645 +msgid "Enable Animations" +msgstr "ਸਜੀਵਤਾ ਯੋਗ" + +#: ../gtk/gtksettings.c:646 +msgid "Whether to enable toolkit-wide animations." +msgstr "ਕੀ ਟੂਲ-ਕਿੱਟ ਸਜੀਵਤਾ ਯੋਗ" + +#: ../gtk/gtksettings.c:664 +msgid "Enable Touchscreen Mode" +msgstr "ਟੱਚ-ਸਕਰੀਨ ਢੰਗ ਯੋਗ" + +#: ../gtk/gtksettings.c:665 +msgid "When TRUE, there are no motion notify events delivered on this screen" +msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਇਸ ਸਕਰੀਨ ਉੱਤੇ ਕੋਈ ਚੱਲਦੇ ਸੂਚਨਾ ਈਵੈਂਟ ਨਹੀਂ ਦਿੱਤੇ ਜਾਣਗੇ।" + +#: ../gtk/gtksettings.c:682 +msgid "Tooltip timeout" +msgstr "ਟੂਲ-ਟਿੱਪ ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:683 +msgid "Timeout before tooltip is shown" +msgstr "ਟੂਲ-ਟਿੱਪ ਵੇਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਸਮਾਂ" + +#: ../gtk/gtksettings.c:708 +msgid "Tooltip browse timeout" +msgstr "ਟੂਲ-ਟਿੱਪ ਝਲਕ ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:709 +msgid "Timeout before tooltip is shown when browse mode is enabled" +msgstr "ਝਲਕ ਮੋਡ ਯੋਗ ਕਰਨ ਦੌਰਾਨ ਟੂਲ-ਟਿੱਪ ਵੇਖਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ-ਆਉਟ" + +#: ../gtk/gtksettings.c:730 +msgid "Tooltip browse mode timeout" +msgstr "ਟੂਲ-ਟਿੱਪ ਝਲਕ ਢੰਗ ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:731 +msgid "Timeout after which browse mode is disabled" +msgstr "ਅੰਤਰਾਲ, ਜਿਸ ਉਪਰੰਤ ਝਲਕ ਢੰਗ ਨੂੰ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:750 +msgid "Keynav Cursor Only" +msgstr "ਕੀ-ਨੇਵੀ ਕਰਸਰ ਹੀ" + +#: ../gtk/gtksettings.c:751 +msgid "When TRUE, there are only cursor keys available to navigate widgets" +msgstr "" +"ਜਦੋਂ ਸਹੀਂ ਹੋਵੇ ਤਾਂ ਕੇਵਲ ਇਹੀ ਕਰਸਰ ਸਵਿੱਚਾਂ ਹੋਣਗੀਆਂ, ਜੋ ਕਿ ਵਿਦਜੈੱਟ ਨੇਵੀਗੇਟ ਲਈ " +"ਹੋਣਗੀਆਂ" + +#: ../gtk/gtksettings.c:768 +msgid "Keynav Wrap Around" +msgstr "ਕੀ-ਨੇਵੀ ਦੁਆਥੇ ਸਮੇਟਣਾ" + +#: ../gtk/gtksettings.c:769 +msgid "Whether to wrap around when keyboard-navigating widgets" +msgstr "ਕੀ ਪਾਸੇ ਸਮੇਟਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਕੀ-ਬੋਰਡ-ਨੇਵੀਗੇਸ਼ਨ ਵਿਦਗਿਟ ਹੋਵੇ" + +#: ../gtk/gtksettings.c:789 +msgid "Error Bell" +msgstr "ਗਲਤੀ ਘੰਟੀ" + +#: ../gtk/gtksettings.c:790 +msgid "When TRUE, keyboard navigation and other errors will cause a beep" +msgstr "ਜਦੋਂ ਸਹੀਂ ਤਾਂ ਕੀਬੋਰਡ ਨੇਵੀਗੇਸ਼ਨ ਅਤੇ ਹੋਰ ਗਲਤੀਆਂ ਲਈ ਬੀਪ ਹੋਵੇਗੀ" + +#: ../gtk/gtksettings.c:807 +msgid "Color Hash" +msgstr "ਰੰਗ ਹੈਸ਼" + +#: ../gtk/gtksettings.c:808 +msgid "A hash table representation of the color scheme." +msgstr "ਰੰਗ ਸਕੀਮ ਨੂੰ ਇੱਕ ਹੈਸ਼ ਸਾਰਣੀ ਵਿੱਚ ਵੇਖਾਓ।" + +#: ../gtk/gtksettings.c:816 +msgid "Default file chooser backend" +msgstr "ਮੂਲ ਫਾਇਲ ਚੋਣ ਬੈਕਐਂਡ" + +#: ../gtk/gtksettings.c:817 +msgid "Name of the GtkFileChooser backend to use by default" +msgstr "GtkFileChooser ਬੈਕਐਂਡ ਦਾ ਨਾਂ, ਜੋ ਕਿ ਮੂਲ ਰੂਪ ਵਿੱਚ ਵਰਤਣਾ ਹੈ" + +#: ../gtk/gtksettings.c:834 +msgid "Default print backend" +msgstr "ਮੂਲ ਪਰਿੰਟ ਬੈਕਐਂਡ" + +#: ../gtk/gtksettings.c:835 +msgid "List of the GtkPrintBackend backends to use by default" +msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਵਰਤਣ ਲਈ GtkPrintBackend ਬੈਕਐਂਡ ਦੀ ਸੂਚੀ" + +#: ../gtk/gtksettings.c:858 +msgid "Default command to run when displaying a print preview" +msgstr "ਇੱਕ ਪਰਿੰਟ ਝਲਕ ਵੇਖਾਉਣ ਸਮੇਂ ਚਲਾਉਣ ਲਈ ਮੂਲ ਕਮਾਂਡ" + +#: ../gtk/gtksettings.c:859 +msgid "Command to run when displaying a print preview" +msgstr "ਇੱਕ ਪਰਿੰਟ ਝਲਕ ਵੇਖਾਉਣ ਦੌਰਾਨ ਚਲਾਉਣ ਲਈ ਕਮਾਂਡ" + +#: ../gtk/gtksettings.c:875 +msgid "Enable Mnemonics" +msgstr "ਨੀਮੋਨੀਸ ਯੋਗ" + +#: ../gtk/gtksettings.c:876 +msgid "Whether labels should have mnemonics" +msgstr "ਕੀ ਲੇਬਲਾਂ ਨਾਲ ਨੀਮੋਨੀਸ ਹੋਣ" + +#: ../gtk/gtksettings.c:892 +msgid "Enable Accelerators" +msgstr "ਐਕਸਰਲੇਟਰ ਯੋਗ" + +#: ../gtk/gtksettings.c:893 +msgid "Whether menu items should have accelerators" +msgstr "ਕੀ ਮੇਨ ਆਈਟਮਾਂ ਵਿੱਚ ਐਕਸਲੇਟਰ ਹੋਣ" + +#: ../gtk/gtksettings.c:910 +msgid "Recent Files Limit" +msgstr "ਤਾਜ਼ਾ ਫਾਇਲ ਲਿਮਟ" + +#: ../gtk/gtksettings.c:911 +msgid "Number of recently used files" +msgstr "ਤਾਜ਼ਾ ਵਰਤੀਆਂ ਫਾਇਲਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtksettings.c:929 +msgid "Default IM module" +msgstr "ਮੂਲ IM ਮੋਡੀਊਲ" + +#: ../gtk/gtksettings.c:930 +msgid "Which IM module should be used by default" +msgstr "ਮੂਲ ਰੂਪ ਵਿੱਚ ਕਿਹੜਾ IM ਮੋਡੀਊਲ ਵਰਤਿਆ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:948 +msgid "Recent Files Max Age" +msgstr "ਤਾਜ਼ਾ ਫਾਇਲਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਉਮਰ" + +#: ../gtk/gtksettings.c:949 +msgid "Maximum age of recently used files, in days" +msgstr "ਦਿਨਾਂ ਵਿੱਚ ਤਾਜ਼ਾ ਵਰਤੀਆਂ ਫਾਇਲਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਉਮਰ" + +#: ../gtk/gtksettings.c:958 +msgid "Fontconfig configuration timestamp" +msgstr "ਫੋਂਟ-ਸੰਰਚਨਾ ਸੰਰਚਨਾ ਟਾਈਮ-ਸਟੈਂਪ" + +#: ../gtk/gtksettings.c:959 +msgid "Timestamp of current fontconfig configuration" +msgstr "ਮੌਜੂਦਾ ਫੋਂਟ-ਸੰਰਚਨਾ ਸੰਰਚਨਾ ਲਈ ਟਾਈਮ-ਸਟੈਂਪ" + +#: ../gtk/gtksettings.c:981 +msgid "Sound Theme Name" +msgstr "ਸਾਊਂਡ ਥੀਮ ਨਾਂ" + +#: ../gtk/gtksettings.c:982 +msgid "XDG sound theme name" +msgstr "XDG ਸਾਊਂਡ ਥੀਮ ਨਾਂ" + +#. Translators: this means sounds that are played as feedback to user input +#: ../gtk/gtksettings.c:1004 +msgid "Audible Input Feedback" +msgstr "ਸੁਣਨਯੋਗ ਇੰਪੁੱਟ ਫੀਡਬੈਕ" + +#: ../gtk/gtksettings.c:1005 +msgid "Whether to play event sounds as feedback to user input" +msgstr "ਕੀ ਯੂਜ਼ਰ ਇੰਪੁੱਟ ਲਈ ਫੀਬੈੱਕ ਵਜੋਂ ਈਵੈਂਟ ਸਾਊਂਡ ਦਿੱਤੀ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:1026 +msgid "Enable Event Sounds" +msgstr "ਈਵੈਂਟ ਸਾਊਂਡ ਯੋਗ" + +#: ../gtk/gtksettings.c:1027 +msgid "Whether to play any event sounds at all" +msgstr "ਕੀ ਸਭ ਲਈ ਕਿਸੇ ਵੀ ਈਵੈਂਟ ਲਈ ਸਾਊਂਡ ਚਲਾਈ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:1042 +msgid "Enable Tooltips" +msgstr "ਟੂਲ-ਟਿੱਪ ਯੋਗ" + +#: ../gtk/gtksettings.c:1043 +msgid "Whether tooltips should be shown on widgets" +msgstr "ਕੀ ਵਿਡਜੈੱਟਾਂ ਉੱਤੇ ਟੂਲ-ਟਿੱਪ ਵੇਖਾਏ ਜਾਣ" + +#: ../gtk/gtksettings.c:1056 +msgid "Toolbar style" +msgstr "ਟੂਲਬਾਰ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:1057 +msgid "" +"Whether default toolbars have text only, text and icons, icons only, etc." +msgstr "ਕੀ ਮੂਲ ਟੂਲਬਾਰ ਲਈ ਸ਼ਬਦ ਹੀ, ਸ਼ਬਦ ਤੇ ਆਈਕਾਨ, ਆਈਕਾਨ ਹੀ ਆਦਿ ਹੋਣ" + +#: ../gtk/gtksettings.c:1071 +msgid "Toolbar Icon Size" +msgstr "ਟੂਲਬਾਰ ਆਈਕਾਨ ਆਕਾਰ" + +#: ../gtk/gtksettings.c:1072 +msgid "The size of icons in default toolbars." +msgstr "ਡਿਫਾਲਟ ਟੂਲਬਾਰ ਵਿੱਚ ਆਈਕਾਨ ਦਾ ਆਕਾਰ ਹੈ।" + +#: ../gtk/gtksettings.c:1089 +msgid "Auto Mnemonics" +msgstr "ਆਟੋ ਨੀਮੋਨੀਸ" + +#: ../gtk/gtksettings.c:1090 +msgid "" +"Whether mnemonics should be automatically shown and hidden when the user " +"presses the mnemonic activator." +msgstr "" +"ਕੀ ਮਨਾਮੈਰਿਕ ਆਟੋਮੈਟਿਕ ਹੀ ਵੇਖਾਏ ਅਤੇ ਓਹਲੇ ਕੀਤੇ ਜਾਣ, ਜਦੋਂ ਯੂਜ਼ਰ ਮਨਾਮੈਰਿਕ ਐਕਟੀਵੇਟਰ " +"ਕੀਤਾ ਜਾਵੇ।" + +#: ../gtk/gtksettings.c:1115 +msgid "Application prefers a dark theme" +msgstr "ਐਪਲੀਕੇਸ਼ਨ ਗੂੜ੍ਹਾ ਥੀਮ ਚਾਹੁੰਦੀ ਹੈ" + +#: ../gtk/gtksettings.c:1116 +msgid "Whether the application prefers to have a dark theme." +msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਗੂੜ੍ਹਾ ਥੀਮ ਪਸੰਦ ਕਰੇ" + +#: ../gtk/gtksettings.c:1131 +msgid "Show button images" +msgstr "ਬਟਨ-ਚਿੱਤਰ ਵੇਖਾਓ" + +#: ../gtk/gtksettings.c:1132 +msgid "Whether images should be shown on buttons" +msgstr "ਕੀ ਬਟਨਾਂ ਉੱਤੇ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" + +#: ../gtk/gtksettings.c:1140 ../gtk/gtksettings.c:1234 +msgid "Select on focus" +msgstr "ਫੋਕਸ ਉੱਤੇ ਚੁਣੋ" + +#: ../gtk/gtksettings.c:1141 +msgid "Whether to select the contents of an entry when it is focused" +msgstr "ਕੀ ਇੰਦਰਾਜ਼ ਵਿੱਚਲੇ ਹਿੱਸੇ ਨੂੰ ਚੁਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਹ ਕੇਦਰਿਤ ਹੋ ਜਾਵੇ" + +#: ../gtk/gtksettings.c:1158 +msgid "Password Hint Timeout" +msgstr "ਪਾਸਵਰਡ ਇਸ਼ਾਰਾ ਸਮਾਂ-ਅੰਤਰਾਲ" + +#: ../gtk/gtksettings.c:1159 +msgid "How long to show the last input character in hidden entries" +msgstr "ਲੁਕਵੇਂ ਇੰਦਰਾਜ਼ਾਂ ਵਿੱਚ ਆਖਰੀ ਦਿੱਤੇ ਅੱਖਰ ਨੂੰ ਵੇਖਾਉਣ ਨੂੰ ਕਿੰਨਾ ਸਮਾਂ ਲੱਗੇ" + +#: ../gtk/gtksettings.c:1168 +msgid "Show menu images" +msgstr "ਮੇਨੂ ਚਿੱਤਰ ਵੇਖੋ" + +#: ../gtk/gtksettings.c:1169 +msgid "Whether images should be shown in menus" +msgstr "ਕੀ ਮੇਨੂ ਵਿੱਚ ਚਿੱਤਰ ਵੇਖਾਏ ਜਾਣ" + +#: ../gtk/gtksettings.c:1177 +msgid "Delay before drop down menus appear" +msgstr "ਲਟਕਦੇ ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1178 +msgid "Delay before the submenus of a menu bar appear" +msgstr "ਮੇਨੂ-ਬਾਰ ਦੀ ਸਬ-ਮੇਨੂ ਦੇ ਉਪਲੱਬਧ ਹੋਣ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1195 +msgid "Scrolled Window Placement" +msgstr "ਸਕਰੋਲ ਕੀਤਾ ਵਿੰਡੋ ਟਿਕਾਣਾ" + +#: ../gtk/gtksettings.c:1196 +msgid "" +"Where the contents of scrolled windows are located with respect to the " +"scrollbars, if not overridden by the scrolled window's own placement." +msgstr "" +"ਕੀ ਸਕਰੋਲ ਕੀਤੀਆਂ ਵਿੰਡੋਜ਼ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਸਕਰੋਲ-ਪੱਟੀ ਦੇ ਮੁਤਾਬਕ ਰੱਖਣਾ ਹੈ, ਜੇ ਨਹੀਂ " +"ਤਾਂ ਸਕਰੋਲ ਕੀਤੀਆਂ " +"ਵਿੰਡੋਜ਼ ਦੀ ਆਪਣੀ ਸਥਿਤੀ ਮੁਤਾਬਕ ਵਰਤੀਆਂ ਜਾਣਗੀਆਂ।" + +#: ../gtk/gtksettings.c:1205 +msgid "Can change accelerators" +msgstr "ਐਕਸਲੇਟਰ ਬਦਲ ਸਕਦੇ ਹਨ" + +#: ../gtk/gtksettings.c:1206 +msgid "" +"Whether menu accelerators can be changed by pressing a key over the menu item" +msgstr "ਕੀ ਮੇਨੂ-ਤੇਜ਼ ਲਿਸਟ ਉੱਤੇ ਇੱਕ ਕੀ ਦਬਾਉਣ ਨਾਲ ਤਬਦੀਲ ਹੋ ਜਾਣ" + +#: ../gtk/gtksettings.c:1214 +msgid "Delay before submenus appear" +msgstr "ਸਬ-ਮੇਨੂ ਦੇ ਉਭੱਰਨ ਵਿੱਚ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1215 +msgid "" +"Minimum time the pointer must stay over a menu item before the submenu appear" +msgstr "" +"ਘੱਟੋ-ਘੱਟ ਸਮਾਂ, ਜਿਸ ਲਈ ਸਬ-ਮੇਨੂ ਦੇ ਖੁੱਲਣ ਤੋਂ ਪਹਿਲਾਂ ਸੰਕੇਤਕ ਮੇਨੂ ਆਈਟਮ ਉੱਤੇ ਹੀ ਰਹੇ" + +#: ../gtk/gtksettings.c:1224 +msgid "Delay before hiding a submenu" +msgstr "ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਵਿੱਚ ਦੇਰੀ" + +#: ../gtk/gtksettings.c:1225 +msgid "" +"The time before hiding a submenu when the pointer is moving towards the " +"submenu" +msgstr "" +"ਸਮਾਂ ਇੱਕ ਸਬ-ਮੇਨੂ ਨੂੰ ਉਹਲੇ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ, ਜਦੋਂ ਕਿ ਸੰਕੇਤਕ ਸਬ-ਮੇਨੂ ਵੱਲ ਆ ਰਿਹਾ " +"ਹੋਵੇ" + +#: ../gtk/gtksettings.c:1235 +msgid "Whether to select the contents of a selectable label when it is focused" +msgstr "ਕੀ ਚੁਣਨਯੋਗ ਲੇਬਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੀ ਜਾਵੇ, ਜਦੋਂ ਇਹ ਫੋਕਸ ਹੋਵੇ" + +#: ../gtk/gtksettings.c:1243 +msgid "Custom palette" +msgstr "ਰੰਗ-ਪੱਟੀ ਦੀ ਚੋਣ" + +#: ../gtk/gtksettings.c:1244 +msgid "Palette to use in the color selector" +msgstr "ਰੰਗ ਚੋਣ ਵਿੱਚ ਰੰਗ-ਪੱਟੀ ਵਰਤੋਂ" + +#: ../gtk/gtksettings.c:1252 +msgid "IM Preedit style" +msgstr "IM ਪ੍ਰੀ-ਐਡੀਟ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:1253 +msgid "How to draw the input method preedit string" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਪ੍ਰੀ-ਐਡੀਟ ਲਾਈਨ ਨੂੰ ਕਿਸ-ਤਰ੍ਹਾਂ ਬਣਾਏ" + +#: ../gtk/gtksettings.c:1262 +msgid "IM Status style" +msgstr "IM ਹਾਲਤ ਸਟਾਇਲ" + +#: ../gtk/gtksettings.c:1263 +msgid "How to draw the input method statusbar" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਦੀ ਹਾਲਤ-ਪੱਟੀ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ" + +#: ../gtk/gtksizegroup.c:351 +msgid "Mode" +msgstr "ਢੰਗ" + +#: ../gtk/gtksizegroup.c:352 +msgid "" +"The directions in which the size group affects the requested sizes of its " +"component widgets" +msgstr "ਦਿਸ਼ਾ, ਜਿਸ ਅਨੁਸਾਰ ਗਰੁੱਪ ਦਾ ਅਕਾਰ ਇਸ ਦੇ ਭਾਗ ਵਿਦਗਿਟਾਂ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtksizegroup.c:368 +msgid "Ignore hidden" +msgstr "ਲੁਕਵਾਂ ਅਣਡਿੱਠਾ" + +#: ../gtk/gtksizegroup.c:369 +msgid "" +"If TRUE, unmapped widgets are ignored when determining the size of the group" +msgstr "" +"ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਗਰੁੱਪ ਦਾ ਅਕਾਰ ਬਣਾਉਣ ਸਮੇਂ ਲੁਕਵੇਂ ਵਿਦਗਿਟਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ " +"ਦਿੱਤਾ ਜਾਵੇਗਾ" + +#: ../gtk/gtkspinbutton.c:328 +msgid "Climb Rate" +msgstr "ਚੜਨ ਗਤੀ" + +#: ../gtk/gtkspinbutton.c:348 +msgid "Snap to Ticks" +msgstr "ਸੰਕੇਤਾਂ ਲਈ ਸਨੈਪ" + +#: ../gtk/gtkspinbutton.c:349 +msgid "" +"Whether erroneous values are automatically changed to a spin button's " +"nearest step increment" +msgstr "ਕੀ ਗਲਤ ਮੁੱਲ ਆਪਣੇ-ਆਪ ਹੀ ਸਪਿਨ-ਬਟਨ ਦੇ ਨਜ਼ਦੀਕੀ ਵਾਧਾ ਮੁੱਲ ਵਿੱਚ ਬਦਲ ਜਾਣ" + +#: ../gtk/gtkspinbutton.c:356 +msgid "Numeric" +msgstr "ਅੰਕੀ" + +#: ../gtk/gtkspinbutton.c:357 +msgid "Whether non-numeric characters should be ignored" +msgstr "ਕੀ ਅੰਕਾਂ ਤੋਂ ਬਿਨਾਂ ਅੱਖਰਾਂ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇ" + +#: ../gtk/gtkspinbutton.c:364 +msgid "Wrap" +msgstr "ਲਪੇਟਣਾ" + +#: ../gtk/gtkspinbutton.c:365 +msgid "Whether a spin button should wrap upon reaching its limits" +msgstr "ਕੀ ਸਪਿਨ ਬਟਨ ਨੂੰ ਸਮੇਟਣਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਹ ਆਪਣੀਆ ਸੀਮਾਵਾਂ ਤੇ ਪੁੱਜ ਜਾਵੇ" + +#: ../gtk/gtkspinbutton.c:372 +msgid "Update Policy" +msgstr "ਅੱਪਡੇਟ ਨੀਤੀ" + +#: ../gtk/gtkspinbutton.c:373 +msgid "" +"Whether the spin button should update always, or only when the value is legal" +msgstr "ਕੀ ਸਪਿਨ ਬਟਨ ਹਮੇਸ਼ਾ ਅੱਪਡੇਟ ਹੁੰਦਾ ਰਹੇ, ਜਾਂ ਇਸ ਦਾ ਮੁੱਲ ਸਥਿਰ ਹੈ" + +#: ../gtk/gtkspinbutton.c:382 +msgid "Reads the current value, or sets a new value" +msgstr "ਮੌਜੂਦਾ ਮੁੱਲ ਨੂੰ ਪੜ੍ਹੋ, ਜਾਂ ਨਵਾਂ ਮੁੱਲ ਦਿਓ" + +#: ../gtk/gtkspinbutton.c:391 +msgid "Style of bevel around the spin button" +msgstr "ਸਪੈਨ ਬਟਨ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" + +#: ../gtk/gtkspinner.c:119 +msgid "Whether the spinner is active" +msgstr "ਕੀ ਸਨਿੱਪਰ ਐਕਟਿਵ ਹੋਣ" + +#: ../gtk/gtkstatusbar.c:183 +msgid "Style of bevel around the statusbar text" +msgstr "ਹਾਲਤ-ਪੱਟੀ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" + +#: ../gtk/gtkstatusicon.c:262 +msgid "The size of the icon" +msgstr "ਆਈਕਾਨ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtkstatusicon.c:272 +msgid "The screen where this status icon will be displayed" +msgstr "ਸਕਰੀਨ, ਜਿੱਥੇ ਕਿ ਹਾਲਤ ਆਈਕਾਨ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" + +#: ../gtk/gtkstatusicon.c:280 +msgid "Whether the status icon is visible" +msgstr "ਕੀ ਹਾਲਤ ਆਈਕਾਨ ਵੇਖਾਈ ਦੇਵੇ" + +#: ../gtk/gtkstatusicon.c:296 +msgid "Whether the status icon is embedded" +msgstr "ਕੀ ਹਾਲਤ ਆਈਕਾਨ ਸ਼ਾਮਲ ਕੀਤਾ ਹੋਵੇ" + +#: ../gtk/gtkstatusicon.c:312 ../gtk/gtktrayicon-x11.c:126 +msgid "The orientation of the tray" +msgstr "ਟਰੇ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtkstatusicon.c:339 ../gtk/gtkwidget.c:1042 +msgid "Has tooltip" +msgstr "ਟੂਲ-ਟਿੱਪ ਹੋਣ" + +#: ../gtk/gtkstatusicon.c:340 +msgid "Whether this tray icon has a tooltip" +msgstr "ਕੀ ਇਹ ਟਰੇ ਆਈਕਾਨ ਲਈ ਟੂਲ-ਟਿੱਪ ਹੋਵੇ" + +#: ../gtk/gtkstatusicon.c:365 ../gtk/gtkwidget.c:1063 +msgid "Tooltip Text" +msgstr "ਟੂਲ-ਟਿੱਪ ਪਾਠ" + +#: ../gtk/gtkstatusicon.c:366 ../gtk/gtkwidget.c:1064 ../gtk/gtkwidget.c:1085 +msgid "The contents of the tooltip for this widget" +msgstr "ਇਹ ਵਿਦਗਿਟ ਲਈ ਟੂਲ-ਟਿੱਪ ਦੀ ਸਮੱਗਰੀ ਹੈ" + +#: ../gtk/gtkstatusicon.c:389 ../gtk/gtkwidget.c:1084 +msgid "Tooltip markup" +msgstr "ਟੂਲ-ਟਿੱਪ ਮਾਰਕਅੱਪ" + +#: ../gtk/gtkstatusicon.c:390 +msgid "The contents of the tooltip for this tray icon" +msgstr "ਇਸ ਟਰੇ ਆਈਕਾਨ ਲਈ ਟੂਲ-ਟਿੱਪ ਦੀ ਸਮੱਗਰੀ" + +#: ../gtk/gtkstatusicon.c:408 +msgid "The title of this tray icon" +msgstr "ਇਹ ਟਰੇ ਆਈਕਾਨ ਦਾ ਟਾਈਟਲ" + +#: ../gtk/gtkstyle.c:468 +msgid "Style context" +msgstr "ਸਟਾਈਲ ਪਰਸੰਦ" + +#: ../gtk/gtkstyle.c:469 +msgid "GtkStyleContext to get style from" +msgstr "ਇੱਥੋਂ ਸਟਾਈਲ ਲੈਣ ਲਈ GtkStyleContext " + +#: ../gtk/gtkstylecontext.c:547 +msgid "The associated GdkScreen" +msgstr "ਸਬੰਧਤ GdkScreen" + +#: ../gtk/gtkstylecontext.c:553 +msgid "Direction" +msgstr "ਦਿਸ਼ਾ" + +#: ../gtk/gtkstylecontext.c:554 ../gtk/gtktexttag.c:236 +msgid "Text direction" +msgstr "ਟੈਕਸਟ ਦੀ ਦਿਸ਼ਾ" + +#: ../gtk/gtkswitch.c:753 +msgid "Whether the switch is on or off" +msgstr "ਕੀ ਸਵਿੱਚ ਚਾਲੂ ਹੈ ਜਾਂ ਬੰਦ" + +#: ../gtk/gtkswitch.c:787 +msgid "The minimum width of the handle" +msgstr "ਹੈਂਡਲ ਲਈ ਘੱਟੋ-ਘੱਟ ਚੌੜਾਈ" + +#: ../gtk/gtktable.c:157 +msgid "Rows" +msgstr "ਸਤਰਾਂ" + +#: ../gtk/gtktable.c:158 +msgid "The number of rows in the table" +msgstr "ਸਾਰਣੀ ਵਿੱਚ ਸਤਰਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtktable.c:166 +msgid "Columns" +msgstr "ਕਾਲਮ" + +#: ../gtk/gtktable.c:167 +msgid "The number of columns in the table" +msgstr "ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#: ../gtk/gtktable.c:194 +msgid "If TRUE, the table cells are all the same width/height" +msgstr "" +"ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਸਾਰਣੀ ਦੇ ਸਾਰੇ ਸੈਲ ਇੱਕੋ ਚੌੜਾਈ/ਉਚਾਈ ਹੈ" + +#: ../gtk/gtktable.c:208 +msgid "Right attachment" +msgstr "ਸੱਜਾ ਨੱਥੀ" + +#: ../gtk/gtktable.c:209 +msgid "The column number to attach the right side of a child widget to" +msgstr "ਕਾਲਮ ਗਿਣਤੀ ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਸੱਜੇ ਪਾਸੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" + +#: ../gtk/gtktable.c:216 +msgid "The row number to attach the top of a child widget to" +msgstr "ਕਤਾਰ ਗਿਣਤੀ ਜੋ ਕਿ ਚਲਾਇਡ ਵਿਦਗਿਟ ਦੇ ਸਿਰੇ ਤੇ ਜੋੜੀ ਜਾਵੇਗੀ" + +#: ../gtk/gtktable.c:222 +msgid "Bottom attachment" +msgstr "ਥੱਲੇ ਨੱਥੀ" + +#: ../gtk/gtktable.c:229 +msgid "Horizontal options" +msgstr "ਲੇਟਵੀ ਚੋਣ" + +#: ../gtk/gtktable.c:230 +msgid "Options specifying the horizontal behaviour of the child" +msgstr "ਚੋਣ ਚਲਾਇਡ ਦੇ ਲੇਟਵੇ ਰਵੱਈਏ ਨੂੰ ਸੈੱਟ ਕਰਦੀ ਹੈ" + +#: ../gtk/gtktable.c:236 +msgid "Vertical options" +msgstr "ਲੰਬਕਾਰ ਚੋਣ" + +#: ../gtk/gtktable.c:237 +msgid "Options specifying the vertical behaviour of the child" +msgstr "ਚੋਣ ਚਲਾਇਡ ਦੇ ਲੰਬਕਾਰੀ ਵਿਵਹਾਰ ਨੂੰ ਸੈੱਟ ਕਰਦੀ ਹੈ" + +#: ../gtk/gtktable.c:243 +msgid "Horizontal padding" +msgstr "ਲੇਟਵਾਂ ਚਿਣੋ" + +#: ../gtk/gtktable.c:244 +msgid "" +"Extra space to put between the child and its left and right neighbors, in " +"pixels" +msgstr "ਚਲਾਇਡ ਅਤੇ ਇਸ ਦੇ ਸੱਜੇ ਤੇ ਖੱਬੇ ਗੁਆਢੀਆ ਵਿਚਕਾਰ ਵਾਧੂ ਥਾਂ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" + +#: ../gtk/gtktable.c:250 +msgid "Vertical padding" +msgstr "ਲੰਬਕਾਰੀ ਚਿਣੋ" + +#: ../gtk/gtktable.c:251 +msgid "" +"Extra space to put between the child and its upper and lower neighbors, in " +"pixels" +msgstr "ਚਲਾਇਡ ਅਤੇ ਇਸ ਦੇ ਉੱਤੇਲੇ ਤੇ ਹੇਠਲੇ ਗੁਆਢੀਆ ਵਿਚਕਾਰ ਵਾਧੂ ਥਾਂ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" + +#: ../gtk/gtktextbuffer.c:192 +msgid "Tag Table" +msgstr "ਟੈਗ ਸਾਰਣੀ" + +#: ../gtk/gtktextbuffer.c:193 +msgid "Text Tag Table" +msgstr "ਟੈਕਸਟ ਟੈਗ ਸਾਰਣੀ" + +#: ../gtk/gtktextbuffer.c:211 +msgid "Current text of the buffer" +msgstr "ਬਫ਼ਰ ਦਾ ਮੌਜੂਦਾ ਪਾਠ" + +#: ../gtk/gtktextbuffer.c:225 +msgid "Has selection" +msgstr "ਚੋਣ ਹੈ" + +#: ../gtk/gtktextbuffer.c:226 +msgid "Whether the buffer has some text currently selected" +msgstr "ਕੀ ਬਫ਼ਰ ਵਿੱਚ ਕੁਝ ਟੈਕਸਟ ਇਸ ਸਮੇਂ ਚੁਣਿਆ ਹੈ" + +#: ../gtk/gtktextbuffer.c:242 +msgid "Cursor position" +msgstr "ਕਰਸਰ ਸਥਿਤੀ" + +#: ../gtk/gtktextbuffer.c:243 +msgid "" +"The position of the insert mark (as offset from the beginning of the buffer)" +msgstr "ਸ਼ਾਮਿਲ ਨਿਸ਼ਾਨ ਦੀ ਸਥਿਤੀ (ਬਫ਼ਰ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਦੂਰੀ)" + +#: ../gtk/gtktextbuffer.c:258 +msgid "Copy target list" +msgstr "ਨਿਸ਼ਾਨ ਸੂਚੀ ਨਕਲ" + +#: ../gtk/gtktextbuffer.c:259 +msgid "" +"The list of targets this buffer supports for clipboard copying and DND source" +msgstr "" +"ਇਸ ਬਫ਼ਰ ਵਲੋਂ ਸਹਾਇਕ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ, ਜੋ ਕਿ ਕਲਿੱਪਬੋਰਡ ਕਾਪੀ ਅਤੇ DND ਸਰੋਤ ਲਈ ਹੈ।" + +#: ../gtk/gtktextbuffer.c:274 +msgid "Paste target list" +msgstr "ਨਿਸ਼ਾਨਾ ਸੂਚੀ ਚੇਪੋ" + +#: ../gtk/gtktextbuffer.c:275 +msgid "" +"The list of targets this buffer supports for clipboard pasting and DND " +"destination" +msgstr "" +"ਇਸ ਬਫ਼ਰ ਵਲੋਂ ਸਹਾਇਕ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ, ਜੋ ਕਿ ਕਲਿੱਪਬੋਰਡ ਚੇਪਣ ਅਤੇ DND ਟਿਕਾਣੇ ਲਈ ਹੈ।" + +#: ../gtk/gtktextmark.c:90 +msgid "Mark name" +msgstr "ਮਾਰਕ ਨਾਂ" + +#: ../gtk/gtktextmark.c:97 +msgid "Left gravity" +msgstr "ਖੱਬੀ ਗਰੇਵਿਟੀ" + +#: ../gtk/gtktextmark.c:98 +msgid "Whether the mark has left gravity" +msgstr "ਕੀ ਮਾਰਕ ਕੋਲ ਖੱਬੀ ਗਰੇਵਿਟੀ ਹੋਵੇ" + +#: ../gtk/gtktexttag.c:186 +msgid "Tag name" +msgstr "ਟੈਗ ਨਾਂ" + +#: ../gtk/gtktexttag.c:187 +msgid "Name used to refer to the text tag. NULL for anonymous tags" +msgstr "ਟੈਕਸਟ ਟੈਗ ਨੂੰ ਲੱਭਣ ਲਈ ਲੌੜੀਦਾ ਨਾਂ NULL ਬੇਪਛਾਣ ਲਈ ਵਰਤੋ" + +#: ../gtk/gtktexttag.c:205 +msgid "Background color as a (possibly unallocated) GdkColor" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" + +#: ../gtk/gtktexttag.c:212 +msgid "Background full height" +msgstr "ਬੈਕਗਰਾਊਂਡ ਦੀ ਪੂਰੀ ਉਚਾਈ" + +#: ../gtk/gtktexttag.c:213 +msgid "" +"Whether the background color fills the entire line height or only the height " +"of the tagged characters" +msgstr "" +"ਕੀ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸਤਰ ਦੀ ਪੂਰੀ ਉਚਾਈ ਨੁੰ ਭਰ ਦੇਵੇ ਜਾਂ ਸਿਰਫ ਟੈਗ ਅੱਖਰਾਂ ਦੀ ਉਚਾਈ ਤੱਕ " + +#: ../gtk/gtktexttag.c:229 +msgid "Foreground color as a (possibly unallocated) GdkColor" +msgstr "ਫਾਰਗਰਾਊਂਡ ਦਾ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" + +#: ../gtk/gtktexttag.c:237 +msgid "Text direction, e.g. right-to-left or left-to-right" +msgstr "ਟੈਕਸਟ ਦੀ ਦਿਸ਼ਾ, ਜਿਵੇ ਕਿ ਸੱਜੇ-ਤੋ ਖੱਬਾ ਜਾਂ ਖੱਬੇ ਤੋਂ ਸੱਜਾ" + +#: ../gtk/gtktexttag.c:286 +msgid "Font style as a PangoStyle, e.g. PANGO_STYLE_ITALIC" +msgstr "ਪੈਂਨਗੋ-ਸਟਾਇਲ ਵਾਂਗ ਫੋਂਟ ਸਟਾਇਲ ਜਿਵੇਂ ਕਿ PANGO_STYLE_ITALIC" + +#: ../gtk/gtktexttag.c:295 +msgid "Font variant as a PangoVariant, e.g. PANGO_VARIANT_SMALL_CAPS" +msgstr "ਪੈਂਨਗੋ-ਵੈਰੀਐਂਟ ਵਾਂਗ ਫੋਂਟ ਵੈਰੀਐਂਟ ਜਿਵੇਂ ਕਿ PANGO_VARIANT_SMALL_CAPS" + +#: ../gtk/gtktexttag.c:304 +msgid "" +"Font weight as an integer, see predefined values in PangoWeight; for " +"example, PANGO_WEIGHT_BOLD" +msgstr "" +"ਫੋਂਟ ਦਾ ਫੈਲਾ ਇੱਕ ਸੰਖਿਆ ਦੀ ਤਰਾਂ, ਪਹਿਲ਼ਾ ਦਿੱਤੇ ਪੈਨਗੋਵੇਟ ਵੇਖੋ; ਜਿਵੇ ਕਿ " +"PANGO_WEIGHT_BOLD" + +#: ../gtk/gtktexttag.c:315 +msgid "Font stretch as a PangoStretch, e.g. PANGO_STRETCH_CONDENSED" +msgstr "ਫੋਂਟ ਤਣੇ ਪੈਨਗੋ-ਤਣੇ ਵਾਂਗ ਜਿਵੇਂ ਕਿ PANGO_STRETCH_CONDENSED" + +#: ../gtk/gtktexttag.c:324 +msgid "Font size in Pango units" +msgstr "ਫੋਂਟ ਅਕਾਰ ਪੈਨਗੋ-ਇਕਾਈ ਵਿੱਚ" + +#: ../gtk/gtktexttag.c:334 +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 " +"such as PANGO_SCALE_X_LARGE" +msgstr "" +"ਫੋਂਟ ਅਕਾਰ, ਮੂਲ ਫੋਂਟ ਅਕਾਰ ਦੇ ਪੈਮਾਨਾ-ਗੁਣਾਂਕ ਨਾਲ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਸਰੂਪ ਬਦਲਣ ਆਦਿ ਲਈ " +"ਵਰਤੀ ਜਾਦੀ, ਸੋ " +"ਇਸ ਦੀ ਸਿਫਾਰਸ ਕੀਤੀ ਗਈ ਹੈ। ਪੈਨਗੋ ਕੁਝ ਪੈਮਾਨੇ ਪਹਿਲ਼ਾ ਹੀਨਿਰਦਾਰਿਤ ਕਰ ਚੁੱਕਾ ਹੈ , " +"ਜਿਵੇ ਕਿ " +"PANGO_SCALE_X_LARGE" + +#: ../gtk/gtktexttag.c:354 ../gtk/gtktextview.c:704 +msgid "Left, right, or center justification" +msgstr "ਖੱਬੇ, ਸੱਜੇ ਜਾਂ ਵਿੱਚਕਾਰ ਤਰਕਸੰਗਤ ਕਰੋ" + +#: ../gtk/gtktexttag.c:373 +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." +msgstr "" +"ਭਾਸ਼ਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਕੋਡ ਹੈ, ਦਾ ISO ਕੋਡ ਹੈ। ਟੈਕਸਟ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਪੈਨਗੋ ਦੀ " +"ਉਦਾਹਰਨ ਲਈ ਜਾ " +"ਸਕਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਪੈਰਾਮੀਟਰ ਨੂੰ ਨਹੀਂ ਸਮਝ ਸਕੇ ਤਾਂ, ਤੁਹਾਨੂੰ ਇਸ ਦੀ ਲੋੜ ਵੀ " +"ਨਹੀਂ ਹੈ।" + +#: ../gtk/gtktexttag.c:380 +msgid "Left margin" +msgstr "ਖੱਬਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtktexttag.c:381 ../gtk/gtktextview.c:713 +msgid "Width of the left margin in pixels" +msgstr "ਖੱਬੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲਾਂ ਵਿੱਚ" + +#: ../gtk/gtktexttag.c:390 +msgid "Right margin" +msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtktexttag.c:391 ../gtk/gtktextview.c:723 +msgid "Width of the right margin in pixels" +msgstr "ਸੱਜੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲਾਂ ਵਿੱਚ" + +#: ../gtk/gtktexttag.c:401 ../gtk/gtktextview.c:732 +msgid "Indent" +msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰ" + +#: ../gtk/gtktexttag.c:402 ../gtk/gtktextview.c:733 +msgid "Amount to indent the paragraph, in pixels" +msgstr "ਪ੍ਹੈਰੇ ਵਿੱਚ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ, ਪਿਕਸਲਾਂ ਵਿੱਚ" + +#: ../gtk/gtktexttag.c:413 +msgid "" +"Offset of text above the baseline (below the baseline if rise is negative) " +"in Pango units" +msgstr "" +"ਬੇਸ-ਲਾਈਨ ਤੋਂ ਉੱਤੇ ਟੈਕਸਟ ਦਾ ਸੰਤੁਲਨ ਪੈਗੋ ਇਕਾਈ ਵਿੱਚ (ਹੇਠਾਂ ਉਭਾਰ ਰਿਣਾਤਮਿਕ ਹੈ)" + +#: ../gtk/gtktexttag.c:422 +msgid "Pixels above lines" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉੱਤੇ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:423 ../gtk/gtktextview.c:657 +msgid "Pixels of blank space above paragraphs" +msgstr "ਪ੍ਹੈਰੇ ਤੋਂ ਉੱਤੇ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:432 +msgid "Pixels below lines" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਾਂ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:433 ../gtk/gtktextview.c:667 +msgid "Pixels of blank space below paragraphs" +msgstr "ਪ੍ਹੈਰੇ ਤੋਂ ਹੇਠਾਂ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:442 +msgid "Pixels inside wrap" +msgstr "ਲੇਪਟਣ ਵਿੱਚ ਆਏ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:443 ../gtk/gtktextview.c:677 +msgid "Pixels of blank space between wrapped lines in a paragraph" +msgstr "ਪ੍ਹੈਰੇ ਵਿੱਚ ਲੇਪਟੀਆਂ ਗਈਆਂ ਸਤਰਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਦੇ ਪਿਕਸਲ" + +#: ../gtk/gtktexttag.c:470 ../gtk/gtktextview.c:695 +msgid "" +"Whether to wrap lines never, at word boundaries, or at character boundaries" +msgstr "ਕੀ ਲਾਈਨਾਂ ਕਦੇ ਨਹੀਂ ਲੇਪਟਣੀਆਂ ਹਨ, ਨਾ ਸ਼ਬਦ ਦੀ ਹੱਦ ਤੇ ਨਾ ਅੱਖਰਾਂ ਦੀ ਹੱਦ ਤੇ" + +#: ../gtk/gtktexttag.c:479 ../gtk/gtktextview.c:742 +msgid "Tabs" +msgstr "ਟੈਬ" + +#: ../gtk/gtktexttag.c:480 ../gtk/gtktextview.c:743 +msgid "Custom tabs for this text" +msgstr "ਇਸ ਟੈਕਸਟ ਲਈ ਟੈਬਾਂ ਦੀ ਚੋਣ" + +#: ../gtk/gtktexttag.c:498 +msgid "Invisible" +msgstr "ਅਦਿੱਖ" + +#: ../gtk/gtktexttag.c:499 +msgid "Whether this text is hidden." +msgstr "ਕੀ ਇਹ ਟੈਕਸਟ ਲੁਕਵਾਂ ਹੋਵੇ" + +#: ../gtk/gtktexttag.c:513 +msgid "Paragraph background color name" +msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨਾਂ" + +#: ../gtk/gtktexttag.c:514 +msgid "Paragraph background color as a string" +msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸਤਰ ਵਾਂਗ" + +#: ../gtk/gtktexttag.c:529 +msgid "Paragraph background color" +msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ" + +#: ../gtk/gtktexttag.c:530 +msgid "Paragraph background color as a (possibly unallocated) GdkColor" +msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਸੰਭਵ ਹੋਵੇ (ਨਾ ਵਰਤਿਆ ਗਿਆ) ਤਾਂ GdkColor" + +#: ../gtk/gtktexttag.c:548 +msgid "Margin Accumulates" +msgstr "ਹਾਸ਼ੀਆ ਇਕਸਾਰ" + +#: ../gtk/gtktexttag.c:549 +msgid "Whether left and right margins accumulate." +msgstr "ਕੀ ਖੱਬਾ ਅਤੇ ਸੱਜਾ ਹਾਸ਼ੀਆ ਇੱਕਠਾ ਹੋਵੇ" + +#: ../gtk/gtktexttag.c:562 +msgid "Background full height set" +msgstr "ਬੈਕਗਰਾਊਂਡ ਪੂਰੀ ਉਚਾਈ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:563 +msgid "Whether this tag affects background height" +msgstr "ਕੀ ਇਹ ਟੈਗ ਬੈਕਗਰਾਊਂਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:602 +msgid "Justification set" +msgstr "ਅਨੁਕੂਲ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:603 +msgid "Whether this tag affects paragraph justification" +msgstr "ਕੀ ਇਹ ਟੈਗ ਤਰਕਸੰਗਤ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:610 +msgid "Left margin set" +msgstr "ਖੱਬਾ-ਹਾਸ਼ੀਏ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:611 +msgid "Whether this tag affects the left margin" +msgstr "ਕੀ ਇਹ ਟੈਗ ਅਗਲੇ-ਪਰਦਾ-ਚਿਤਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:614 +msgid "Indent set" +msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:615 +msgid "Whether this tag affects indentation" +msgstr "ਕੀ ਇਹ ਟੈਗ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:622 +msgid "Pixels above lines set" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉਪਰਲੇ ਪਿਕਸਲਾਂ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:623 ../gtk/gtktexttag.c:627 +msgid "Whether this tag affects the number of pixels above lines" +msgstr "ਕੀ ਇਹ ਟੈਗ ਸਤਰ ਤੋਂ ਉਪਰਲੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:626 +msgid "Pixels below lines set" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਲੇ ਪਿਕਸਲ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:630 +msgid "Pixels inside wrap set" +msgstr "ਪਿਕਸਲ ਅੰਦਰੂਨੀ ਲਪੇਟਣ ਦਿਓ" + +#: ../gtk/gtktexttag.c:631 +msgid "Whether this tag affects the number of pixels between wrapped lines" +msgstr "ਕੀ ਇਹ ਟੈਗ ਸਤਰਾਂ ਵਿੱਚ ਲੇਪਟੇ ਪਿਕਸਲਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:638 +msgid "Right margin set" +msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ ਦਿਓ" + +#: ../gtk/gtktexttag.c:639 +msgid "Whether this tag affects the right margin" +msgstr "ਕੀ ਇਹ ਟੈਗ ਸੱਜਾ ਹਾਸ਼ੀਏ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:646 +msgid "Wrap mode set" +msgstr "ਲਪੇਟਣ ਮੋਡ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:647 +msgid "Whether this tag affects line wrap mode" +msgstr "ਕੀ ਇਹ ਟੈਗ ਲੇਪਟਣ ਦੀ ਢੰਗ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:650 +msgid "Tabs set" +msgstr "ਟੈਬ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:651 +msgid "Whether this tag affects tabs" +msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਬਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:654 +msgid "Invisible set" +msgstr "ਅਦਿੱਖ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktexttag.c:655 +msgid "Whether this tag affects text visibility" +msgstr "ਕੀ ਇਹ ਟੈਗ ਟੈਕਸਟ ਦੀ ਦਿੱਖ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktexttag.c:658 +msgid "Paragraph background set" +msgstr "ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਦਿਓ" + +#: ../gtk/gtktexttag.c:659 +msgid "Whether this tag affects the paragraph background color" +msgstr "ਕੀ ਇਹ ਟੈਗ ਪੈਰਾ ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਨੂੰ ਪਰਭਾਵਿਤ ਕਰੇ" + +#: ../gtk/gtktextview.c:656 +msgid "Pixels Above Lines" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਉੱਤੇ ਪਿਕਸਲ" + +#: ../gtk/gtktextview.c:666 +msgid "Pixels Below Lines" +msgstr "ਲਾਈਨਾਂ ਤੋਂ ਹੇਠਾਂ ਪਿਕਸਲ" + +#: ../gtk/gtktextview.c:676 +msgid "Pixels Inside Wrap" +msgstr "ਲੇਪਟਣ ਵਿੱਚ ਪਿਕਸਲ" + +#: ../gtk/gtktextview.c:694 +msgid "Wrap Mode" +msgstr "ਲੇਪਟਣ ਮੋਡ" + +#: ../gtk/gtktextview.c:712 +msgid "Left Margin" +msgstr "ਖੱਬਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtktextview.c:722 +msgid "Right Margin" +msgstr "ਸੱਜਾ ਹਾਸ਼ੀਆ" + +#: ../gtk/gtktextview.c:750 +msgid "Cursor Visible" +msgstr "ਕਰਸਰ ਅਦਿੱਖ" + +#: ../gtk/gtktextview.c:751 +msgid "If the insertion cursor is shown" +msgstr "ਜੇ ਵਿਚਕਾਰ ਕਰਸਰ ਵੇਖਾਈ ਗਈ ਹੈ" + +#: ../gtk/gtktextview.c:758 +msgid "Buffer" +msgstr "ਬਫਰ" + +#: ../gtk/gtktextview.c:759 +msgid "The buffer which is displayed" +msgstr "ਬਫਰ, ਜੋ ਵੇਖਾਇਆ ਜਾਵੇਗਾ" + +#: ../gtk/gtktextview.c:767 +msgid "Whether entered text overwrites existing contents" +msgstr "ਕੀ ਦਿੱਤਾ ਗਿਆ ਟੈਕਸਟ ਮੌਜੂਦਾ ਹਿੱਸੇ ਨੂੰ ਖਤਮ ਕਰ ਦੇਵੇ" + +#: ../gtk/gtktextview.c:774 +msgid "Accepts tab" +msgstr "ਮਨਜ਼ੂਰ ਟੈਬ" + +#: ../gtk/gtktextview.c:775 +msgid "Whether Tab will result in a tab character being entered" +msgstr "ਕੀ ਟੈਬ ਨਤੀਜਾ ਹੋਵੇ, ਦਿੱਤੇ ਗਏ ਟੈਬ ਅੱਖਰ ਦਾ" + +#: ../gtk/gtktextview.c:810 +msgid "Error underline color" +msgstr "ਗਲਤੀ ਹੇਠ ਰੰਗਦਾਰ ਲਾਈਨ" + +#: ../gtk/gtktextview.c:811 +msgid "Color with which to draw error-indication underlines" +msgstr "ਰੰਗ ਜਿਸ ਨਾਲ ਗਲਤੀ-ਸੰਕੇਤਕ ਲਾਈਨ ਖਿੱਚੀ ਜਾਵੇ" + +#: ../gtk/gtkthemingengine.c:249 +msgid "Theming engine name" +msgstr "ਥੀਮਿੰਗ ਇੰਜਣ ਨਾਂ" + +#: ../gtk/gtktoggleaction.c:118 +msgid "Create the same proxies as a radio action" +msgstr "ਉਸੇਤਰ੍ਹਾਂ ਦੀਆਂ ਪਰਾਕਸੀ ਬਣਾਉ, ਜਿਸਤਰਾਂ ਦੀਆਂ ਰੇਡੀਉ ਕਾਰਵਾਈ ਹੈ" + +#: ../gtk/gtktoggleaction.c:119 +msgid "Whether the proxies for this action look like radio action proxies" +msgstr "ਕੀ ਇਸ ਕਾਰਵਾਈ ਦੀ ਪਰਾਕਸੀ ਰੇਡੀਉ ਕਾਰਵਾਈ ਪਰਾਕਸੀ ਵਾਂਗ ਲੱਗੇ" + +#: ../gtk/gtktoggleaction.c:134 +msgid "Whether the toggle action should be active" +msgstr "ਜੇ ਤਬਦੀਲ ਕਾਰਵਾਈ ਸਰਗਰਮ ਹੋਵੇ" + +#: ../gtk/gtktogglebutton.c:126 ../gtk/gtktoggletoolbutton.c:113 +msgid "If the toggle button should be pressed in" +msgstr "ਕੀ ਬਦਲਵਾਂ ਬਟਨ ਦਬਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtktogglebutton.c:134 +msgid "If the toggle button is in an \"in between\" state" +msgstr "ਕੀ ਬਦਲਵੇ ਬਟਨ \"ਵਿਚਕਾਰਲੀ\" ਸਥਿਤੀ ਵਿੱਚ ਹੈ" + +#: ../gtk/gtktogglebutton.c:141 +msgid "Draw Indicator" +msgstr "ਇੰਡੀਕੇਟਰ ਬਣਾਓ" + +#: ../gtk/gtktogglebutton.c:142 +msgid "If the toggle part of the button is displayed" +msgstr "ਕੀ ਬਟਨ ਦਾ ਬਦਲਵਾਂ ਹਿੱਸਾ ਵੇਖਾਇਆ ਜਾਵੇ" + +#: ../gtk/gtktoolbar.c:489 ../gtk/gtktoolpalette.c:1062 +msgid "Toolbar Style" +msgstr "ਟੂਲਬਾਰ ਸਟਾਇਲ" + +#: ../gtk/gtktoolbar.c:490 +msgid "How to draw the toolbar" +msgstr "ਟੂਲਬਾਰ ਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ" + +#: ../gtk/gtktoolbar.c:497 +msgid "Show Arrow" +msgstr "ਤੀਰ ਵੇਖਾਓ" + +#: ../gtk/gtktoolbar.c:498 +msgid "If an arrow should be shown if the toolbar doesn't fit" +msgstr "ਕੀ ਤੀਰ ਵੇਖਾਇਆ ਜਾਵੇ ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਵਿੱਚ ਸਮਾ ਨਾ ਸਕੇ" + +#: ../gtk/gtktoolbar.c:519 +msgid "Size of icons in this toolbar" +msgstr "ਇਹ ਟੂਲਬਾਰ ਵਿੱਚ ਆਈਕਾਨਾਂ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtktoolbar.c:534 ../gtk/gtktoolpalette.c:1048 +msgid "Icon size set" +msgstr "ਆਈਕਾਨ ਅਕਾਰ ਦਿਓ" + +#: ../gtk/gtktoolbar.c:535 ../gtk/gtktoolpalette.c:1049 +msgid "Whether the icon-size property has been set" +msgstr "ਕੀ ਆਈਕਾਨ-ਅਕਾਰ ਵਿਸ਼ੇਸ਼ਤਾ ਦਿੱਤੀ ਜਾਵੇ" + +#: ../gtk/gtktoolbar.c:544 +msgid "Whether the item should receive extra space when the toolbar grows" +msgstr "ਕੀ ਆਈਟਮ ਹੋਰ ਵਾਧੂ ਥਾਂ ਲਵੇ ਜਦੋਂ ਕਿ ਟੂਲਬਾਰ ਫੈਲੇ" + +#: ../gtk/gtktoolbar.c:552 ../gtk/gtktoolitemgroup.c:1648 +msgid "Whether the item should be the same size as other homogeneous items" +msgstr "ਕੀ ਆਈਟਮ ਉਸੇ ਆਕਾਰ ਦੀ ਹੋਵੇ ਜਿਸ ਦੀ ਹੋਰ ਸਮ-ਰੂਪ ਆਈਟਮਾਂ ਹਨ" + +#: ../gtk/gtktoolbar.c:559 +msgid "Spacer size" +msgstr "ਸਪੇਸਰ ਆਕਾਰ" + +#: ../gtk/gtktoolbar.c:560 +msgid "Size of spacers" +msgstr "ਸਪੇਸਰ ਦਾ ਅਕਾਰ" + +#: ../gtk/gtktoolbar.c:569 +msgid "Amount of border space between the toolbar shadow and the buttons" +msgstr "ਟੂਲਬਾਰ ਦੇ ਪਰਛਾਵੇ ਅਤੇ ਬਟਨਾਂ ਵਿਚਕਾਰ ਹਾਸ਼ੀਏ ਦੀ ਥਾਂ ਦੀ ਮਾਤਰਾ" + +#: ../gtk/gtktoolbar.c:577 +msgid "Maximum child expand" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚਾਈਲਡ ਫੈਲਾ" + +#: ../gtk/gtktoolbar.c:578 +msgid "Maximum amount of space an expandable item will be given" +msgstr "ਇੱਕ ਫੈਲਣਯੋਗ ਆਈਟਮ ਨੂੰ ਦਿੱਤਾ ਜਾਣ ਵਾਲਾ ਵੱਧ ਤੋਂ ਵੱਧ ਫਾਸਲਾ" + +#: ../gtk/gtktoolbar.c:586 +msgid "Space style" +msgstr "ਖਾਲੀ ਸਟਾਇਲ" + +#: ../gtk/gtktoolbar.c:587 +msgid "Whether spacers are vertical lines or just blank" +msgstr "ਕੀ ਵੱਖਰਵੇ ਵਿੱਚ ਲੰਬਕਾਰੀ ਲਾਈਨਾਂ ਹੋਣ ਜਾਂ ਸਿਰਫ ਖਾਲੀ ਹੀ ਹੋਵੇ" + +#: ../gtk/gtktoolbar.c:594 +msgid "Button relief" +msgstr "ਬਟਨ ਛੋਟ" + +#: ../gtk/gtktoolbar.c:595 +msgid "Type of bevel around toolbar buttons" +msgstr "ਟੂਲਬਾਰ ਦੁਆਲੇ bevel ਦੀ ਕਿਸਮ" + +#: ../gtk/gtktoolbar.c:602 +msgid "Style of bevel around the toolbar" +msgstr "ਟੂਲਬਾਰ ਦੁਆਲੇ bevel ਦਾ ਸਟਾਇਲ" + +#: ../gtk/gtktoolbutton.c:202 +msgid "Text to show in the item." +msgstr "ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸ਼ਬਦ" + +#: ../gtk/gtktoolbutton.c:209 +msgid "" +"If set, an underline in the label property indicates that the next character " +"should be used for the mnemonic accelerator key in the overflow menu" +msgstr "" +"ਜੇਕਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ, ਲੇਬਲ ਵਿਸ਼ੇਸ਼ਤਾ ਵਿੱਚ ਹੇਠ ਲਾਈਨ ਵੇਖਾਵੇਗੀ ਕਿ ਅਗਲਾ ਅੱਖਰ ਮੇਨੂ " +"ਵਿੱਚ ਤੇਜ਼-ਕੀ ਵਲੋਂ " +"ਵਰਤਿਆ ਜਾਵੇਗਾ " + +#: ../gtk/gtktoolbutton.c:216 +msgid "Widget to use as the item label" +msgstr "ਆਈਟਮ ਲੇਬਲ ਦੀ ਤਰ੍ਹਾਂ ਵਰਤਣ ਲਈ ਵਿਦਗਿਟ" + +#: ../gtk/gtktoolbutton.c:222 +msgid "Stock Id" +msgstr "ਸਟਾਕ Id" + +#: ../gtk/gtktoolbutton.c:223 +msgid "The stock icon displayed on the item" +msgstr "ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ ਸਟਾਕ ਆਈਕਾਨ" + +#: ../gtk/gtktoolbutton.c:239 +msgid "Icon name" +msgstr "ਆਈਕਾਨ ਨਾਂ" + +#: ../gtk/gtktoolbutton.c:240 +msgid "The name of the themed icon displayed on the item" +msgstr "ਆਈਟਮ ਉੱਤੇ ਵੇਖਾਉਣ ਲਈ ਸਰੂਪ ਆਈਕਾਨ ਦਾ ਨਾਂ" + +#: ../gtk/gtktoolbutton.c:246 +msgid "Icon widget" +msgstr "ਆਈਕਾਨ ਵਿਦਗਿਟ" + +#: ../gtk/gtktoolbutton.c:247 +msgid "Icon widget to display in the item" +msgstr "ਆਈਕਾਨ ਵਿਦਗਿਟ, ਆਈਟਮ ਵਿੱਚ ਵੇਖਾਉਣ ਲਈ" + +#: ../gtk/gtktoolbutton.c:260 +msgid "Icon spacing" +msgstr "ਆਈਕਾਨ ਫਾਸਲਾ" + +#: ../gtk/gtktoolbutton.c:261 +msgid "Spacing in pixels between the icon and label" +msgstr "ਆਈਕਾਨ ਅਤੇ ਲੇਬਲ ਵਿੱਚ ਪਿਕਸਲ ਅਨੁਸਾਰ ਫਾਸਲਾ" + +#: ../gtk/gtktoolitem.c:210 +msgid "" +"Whether the toolbar item is considered important. When TRUE, toolbar buttons " +"show text in GTK_TOOLBAR_BOTH_HORIZ mode" +msgstr "" +"ਕੀ ਟੂਲਬਾਰ ਦੀ ਆਈਟਮ ਨੂੰ ਖਾਸ ਮੰਨਣਾ ਹੈ ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ ਟੂਲਬਾਰ ਦੇ " +"ਬਟਨGTK_TOOLBAR_BOTH_HORIZ " +"ਮੋਡ ਵਿੱਚ ਸ਼ਬਦ ਵੇਖਾਉਣਗੇ।" + +#: ../gtk/gtktoolitemgroup.c:1595 +msgid "The human-readable title of this item group" +msgstr "ਇਹ ਆਈਟਮ ਗਰੁੱਪ ਦਾ ਪੜ੍ਹਨਯੋਗ ਟਾਈਟਲ" + +#: ../gtk/gtktoolitemgroup.c:1602 +msgid "A widget to display in place of the usual label" +msgstr "ਆਮ ਲੇਬਲ ਦੀ ਥਾਂ ਵੇਖਾਉਣ ਲਈ ਵਿਦਜੈੱਟ" + +#: ../gtk/gtktoolitemgroup.c:1608 +msgid "Collapsed" +msgstr "ਸਮੇਟੇ" + +#: ../gtk/gtktoolitemgroup.c:1609 +msgid "Whether the group has been collapsed and items are hidden" +msgstr "ਕੀ ਗਰੁੱਪ ਸਮੇਟਿਆ ਜਾਵੇ ਅਤੇ ਆਈਟਮਾਂ ਓਹਲੇ ਹੋਣ" + +#: ../gtk/gtktoolitemgroup.c:1615 +msgid "ellipsize" +msgstr "ਅੰਡਕਾਰ-ਅਕਾਰ" + +#: ../gtk/gtktoolitemgroup.c:1616 +msgid "Ellipsize for item group headers" +msgstr "ਆਈਟਮ ਗਰੁੱਪ ਹੈੱਡਰਾਂ ਲਈ ਅੰਡਾਕਾਰ" + +#: ../gtk/gtktoolitemgroup.c:1622 +msgid "Header Relief" +msgstr "ਹੈੱਡਰ ਰੀਲਿਫ਼" + +#: ../gtk/gtktoolitemgroup.c:1623 +msgid "Relief of the group header button" +msgstr "ਗਰੁੱਪ ਹੈੱਡਰ ਬਟਨ ਲਈ ਰੀਲਿਫ਼" + +#: ../gtk/gtktoolitemgroup.c:1638 +msgid "Header Spacing" +msgstr "ਹੈੱਡਰ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtktoolitemgroup.c:1639 +msgid "Spacing between expander arrow and caption" +msgstr "ਐਕਸਪੈਂਡਰ ਤੀਰ ਅਤੇ ਸੁਰਖੀ ਵਿੱਚ ਖਾਲੀ ਥਾਂ" + +#: ../gtk/gtktoolitemgroup.c:1655 +msgid "Whether the item should receive extra space when the group grows" +msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਫੈਲਣ ਦੌਰਾਨ ਵਾਧੂ ਥਾਂ ਲਵੇ" + +#: ../gtk/gtktoolitemgroup.c:1662 +msgid "Whether the item should fill the available space" +msgstr "ਕੀ ਆਈਟਮ ਉਪਲੱਬਧ ਥਾਂ ਭਰੇ" + +#: ../gtk/gtktoolitemgroup.c:1668 +msgid "New Row" +msgstr "ਨਵੀਂ ਕਤਾਰ" + +#: ../gtk/gtktoolitemgroup.c:1669 +msgid "Whether the item should start a new row" +msgstr "ਕੀ ਆਈਟਮ ਨਵੀਂ ਕਤਾਰ ਵਿੱਚ ਸ਼ੁਰੂ ਹੋਵੇ" + +#: ../gtk/gtktoolitemgroup.c:1676 +msgid "Position of the item within this group" +msgstr "ਇਸ ਗਰੁੱਪ ਵਿੱਚ ਆਈਟਮ ਦੀ ਸਥਿਤੀ" + +#: ../gtk/gtktoolpalette.c:1033 +msgid "Size of icons in this tool palette" +msgstr "ਇਸ ਟੂਲ ਪਲੇਅਟ ਵਿੱਚ ਆਈਕਾਨਾਂ ਦਾ ਆਕਾਰ" + +#: ../gtk/gtktoolpalette.c:1063 +msgid "Style of items in the tool palette" +msgstr "ਟੂਲ ਪਲੇਅਟ ਵਿੱਚ ਆਈਟਮਾਂ ਦਾ ਸਟਾਈਲ" + +#: ../gtk/gtktoolpalette.c:1079 +msgid "Exclusive" +msgstr "ਖਾਸ" + +#: ../gtk/gtktoolpalette.c:1080 +msgid "Whether the item group should be the only expanded at a given time" +msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਦਿੱਤੇ ਸਮੇਂ ਦੌਰਾਨ ਹੀ ਫੈਲੇ" + +#: ../gtk/gtktoolpalette.c:1095 +msgid "" +"Whether the item group should receive extra space when the palette grows" +msgstr "ਕੀ ਆਈਟਮ ਗਰੁੱਪ ਪਲੇਅਟ ਫੈਲਣ ਦੌਰਾਨ ਵਾਧੂ ਥਾਂ ਲਵੇ" + +#: ../gtk/gtktrayicon-x11.c:135 +msgid "Foreground color for symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਫਾਰਗਰਾਊਂਡ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:142 +msgid "Error color" +msgstr "ਗਲਤੀ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:143 +msgid "Error color for symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਗਲਤੀ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:150 +msgid "Warning color" +msgstr "ਚੇਤਾਵਨੀ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:151 +msgid "Warning color for symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਚੇਤਾਵਨੀ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:158 +msgid "Success color" +msgstr "ਸਫ਼ਲ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:159 +msgid "Success color for symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਲਈ ਸਫ਼ਲ ਰੰਗ" + +#: ../gtk/gtktrayicon-x11.c:167 +msgid "Padding that should be put around icons in the tray" +msgstr "ਪੈਡਿੰਗ, ਜੋ ਕਿ ਟਰੇ ਦੇ ਆਈਕਾਨ ਦੁਆਲੇ ਰੱਖਣੀ ਹੈ" + +#: ../gtk/gtktreemenu.c:287 +msgid "TreeMenu model" +msgstr "ਟਰੀ-ਮੇਨੂ ਮਾਡਲ" + +#: ../gtk/gtktreemenu.c:288 +msgid "The model for the tree menu" +msgstr "ਟਰੀ ਮੇਨੂ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtktreemenu.c:310 +msgid "TreeMenu root row" +msgstr "ਟਰੀਮੇਨੂ ਰੂਟ ਕਤਾਰ" + +#: ../gtk/gtktreemenu.c:311 +msgid "The TreeMenu will display children of the specified root" +msgstr "ਟਰੀਮੇਨੂ ਦਿੱਤੇ ਰੂਟ ਲਈ ਚਲਾਈਡ ਵੇਖਾਏਗਾ" + +#: ../gtk/gtktreemenu.c:344 +msgid "Tearoff" +msgstr "ਵੱਖ ਕਰੋ" + +#: ../gtk/gtktreemenu.c:345 +msgid "Whether the menu has a tearoff item" +msgstr "ਕੀ ਮੇਨੂ ਵਿੱਚ ਵੱਖ ਕਰੋ ਆਈਟਮ ਹੋਵੇ" + +#: ../gtk/gtktreemenu.c:361 +msgid "Wrap Width" +msgstr "ਚੌੜਾਈ ਲਪੇਟੋ" + +#: ../gtk/gtktreemenu.c:362 +msgid "Wrap width for laying out items in a grid" +msgstr "ਗਰਿੱਡ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਲਪੇਟਣ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtktreemodelsort.c:312 +msgid "TreeModelSort Model" +msgstr "TreeModelSort ਮਾਡਲ" + +#: ../gtk/gtktreemodelsort.c:313 +msgid "The model for the TreeModelSort to sort" +msgstr "TreeModelSort ਲੜੀਬੱਧ ਕਰਨ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtktreeview.c:989 +msgid "TreeView Model" +msgstr "ਟਰੀ-ਵਿਊ ਮਾਡਲ" + +#: ../gtk/gtktreeview.c:990 +msgid "The model for the tree view" +msgstr "ਟਰੀ-ਵਿਊ ਲਈ ਮਾਡਲ" + +#: ../gtk/gtktreeview.c:1002 +msgid "Headers Visible" +msgstr "ਹੈੱਡਰ ਦਿੱਖ" + +#: ../gtk/gtktreeview.c:1003 +msgid "Show the column header buttons" +msgstr "ਕਾਲਮ ਹੈੱਡਰ ਬਟਨ ਵੇਖਾਓ" + +#: ../gtk/gtktreeview.c:1010 +msgid "Headers Clickable" +msgstr "ਹੈੱਡਰ ਦਬਾਉਣਯੋਗ" + +#: ../gtk/gtktreeview.c:1011 +msgid "Column headers respond to click events" +msgstr "ਦਬਾੳਣ ਦੀ ਕਾਰਵਾਈ ਤੇ ਕਾਲਮ ਹੈੱਡਰ ਜਵਾਬਦੇਹ ਹੋਵੇ" + +#: ../gtk/gtktreeview.c:1018 +msgid "Expander Column" +msgstr "ਫੈਲਣਵਾਲਾ ਕਾਲਮ" + +#: ../gtk/gtktreeview.c:1019 +msgid "Set the column for the expander column" +msgstr "ਫੈਲਣਵਾਲਾ ਕਾਲਮ ਲਈ ਕਾਲਮ ਚੁਣੋ" + +#: ../gtk/gtktreeview.c:1034 +msgid "Rules Hint" +msgstr "ਨਿਯਮ ਇਸ਼ਾਰਾ" + +#: ../gtk/gtktreeview.c:1035 +msgid "Set a hint to the theme engine to draw rows in alternating colors" +msgstr "ਬਦਲਵੇ ਰੰਗ ਵਿੱਚ ਕਤਾਰ ਬਣਾਉਣ ਲਈ ਸਰੂਪ-ਇੰਜਣ ਦੇ ਲਈ ਸੰਕੇਤ ਸੈੱਟ ਕਰੋ" + +#: ../gtk/gtktreeview.c:1042 +msgid "Enable Search" +msgstr "ਖੋਜ ਨੂੰ ਯੋਗ ਕਰੋ" + +#: ../gtk/gtktreeview.c:1043 +msgid "View allows user to search through columns interactively" +msgstr "" +"ਦਰਿਸ਼ ਵਰਤਣਵਾਲਿਆ ਨੂੰ ਕਾਲਮਾਂ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲ਼ੀ ਤਰੀਕੇ ਨਾਲ ਖੋਜ ਕਰਨ ਦਿੰਦਾ ਹੈ" + +#: ../gtk/gtktreeview.c:1050 +msgid "Search Column" +msgstr "ਕਾਲਮ ਖੋਜ" + +#: ../gtk/gtktreeview.c:1051 +msgid "Model column to search through during interactive search" +msgstr "ਦਿਲਖਿੱਚਵੀਂ ਖੋਜ ਦੌਰਾਨ ਮਾਡਲ ਕਾਲਮ ਦੀ ਖੋਜ" + +#: ../gtk/gtktreeview.c:1071 +msgid "Fixed Height Mode" +msgstr "ਨਿਸ਼ਚਿਤ ਉਚਾਈ ਮੋਡ" + +#: ../gtk/gtktreeview.c:1072 +msgid "Speeds up GtkTreeView by assuming that all rows have the same height" +msgstr "ਸਾਰੀਆ ਕਤਾਰਾਂ ਦੀ ਨਿਸ਼ਚਿਤ ਉਚਾਈ ਮੰਨ ਕੇ GtkTreeView ਦੀ ਗਤੀ ਵਧਾਉ " + +#: ../gtk/gtktreeview.c:1092 +msgid "Hover Selection" +msgstr "ਹੋਵਰ ਚੋਣ" + +#: ../gtk/gtktreeview.c:1093 +msgid "Whether the selection should follow the pointer" +msgstr "ਕੀ ਚੋਣ ਸੂਚਕ ਦਾ ਪਿੱਛਾ ਕਰੇ" + +#: ../gtk/gtktreeview.c:1112 +msgid "Hover Expand" +msgstr "ਹੋਵਰ ਫੈਲਾਓ" + +#: ../gtk/gtktreeview.c:1113 +msgid "" +"Whether rows should be expanded/collapsed when the pointer moves over them" +msgstr "ਕੀ ਸੂਚਕ ਕਤਾਰਾਂ ਦੇ ਉੱਪਰ ਹੋਣ ਸਮੇਂ ਸਮੇਟੀਆਂ/ਫੈਲਾਈਆਂ ਜਾਣ" + +#: ../gtk/gtktreeview.c:1127 +msgid "Show Expanders" +msgstr "ਫੈਲਣ ਵਾਲੇ ਵੇਖਾਓ" + +#: ../gtk/gtktreeview.c:1128 +msgid "View has expanders" +msgstr "ਫੈਲਾਉਣ ਵਾਲੇ ਵਾਂਗ ਵੇਖਾਓ" + +#: ../gtk/gtktreeview.c:1142 +msgid "Level Indentation" +msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਦਾ ਲੈਵਲ" + +#: ../gtk/gtktreeview.c:1143 +msgid "Extra indentation for each level" +msgstr "ਹਰੇਕ ਲੈਵਲ ਲਈ ਵਾਧੂ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ" + +#: ../gtk/gtktreeview.c:1152 +msgid "Rubber Banding" +msgstr "ਰਬਰ ਬੈਂਗਿੰਡ" + +#: ../gtk/gtktreeview.c:1153 +msgid "" +"Whether to enable selection of multiple items by dragging the mouse pointer" +msgstr "ਮਾਊਸ ਸੰਕੇਤਕ ਰਾਹੀਂ ਚੁੱਕ ਕੇ ਕਈ ਆਈਟਮਾਂ ਦੀ ਚੋਣ ਨੂੰ ਮਨਜ਼ੂਰ ਕਰਨਾ ਹੈ" + +#: ../gtk/gtktreeview.c:1160 +msgid "Enable Grid Lines" +msgstr "ਗਰਿੱਡ ਲਾਈਨਾਂ ਯੋਗ" + +#: ../gtk/gtktreeview.c:1161 +msgid "Whether grid lines should be drawn in the tree view" +msgstr "ਕੀ ਲੜੀ ਝਲਕ ਵਿੱਚ ਗਰਿੱਡ ਲਾਈਨਾਂ ਵੇਖਾਉਣੀਆਂ ਹਨ" + +#: ../gtk/gtktreeview.c:1169 +msgid "Enable Tree Lines" +msgstr "ਲੜੀ ਲਾਈਨਾਂ ਯੋਗ" + +#: ../gtk/gtktreeview.c:1170 +msgid "Whether tree lines should be drawn in the tree view" +msgstr "ਕੀ ਲੜੀ ਝਲਕ ਵਿੱਚ ਲੜੀ ਲਾਈਨਾਂ ਖਿੱਚੀਆਂ ਜਾਣ" + +#: ../gtk/gtktreeview.c:1178 +msgid "The column in the model containing the tooltip texts for the rows" +msgstr "ਮਾਡਲ ਵਿੱਚ ਕਾਲਮ, ਜੋ ਕਿ ਕਤਾਰਾਂ ਲਈ ਟੂਲ-ਟਿੱਪ ਟੈਕਸਟ ਰੱਖਦਾ ਹੈ" + +#: ../gtk/gtktreeview.c:1200 +msgid "Vertical Separator Width" +msgstr "ਲੰਬਕਾਰੀ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਈ" + +#: ../gtk/gtktreeview.c:1201 +msgid "Vertical space between cells. Must be an even number" +msgstr "ਸੈੱਲ਼ਾਂ ਵਿੱਚਕਾਰ ਲੰਬਕਾਰੀ ਖਾਲੀ ਚੌੜਾਈ, ਜਿਸਤ ਸੰਖਿਆ ਹੋਣੀ ਜ਼ਰੂਰੀ ਹੈ" + +#: ../gtk/gtktreeview.c:1209 +msgid "Horizontal Separator Width" +msgstr "ਲੇਟਵੇ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ" + +#: ../gtk/gtktreeview.c:1210 +msgid "Horizontal space between cells. Must be an even number" +msgstr "ਸੈੱਲ਼ਾਂ ਵਿੱਚਕਾਰ ਲੇਟਵੀ ਖਾਲੀ ਚੌੜਾਈ, ਜਿਸਤ ਸੰਖਿਆ ਹੋਣੀ ਜ਼ਰੂਰੀ ਹੈ" + +#: ../gtk/gtktreeview.c:1218 +msgid "Allow Rules" +msgstr "ਰੂਲ ਮਨਜ਼ੂਰ" + +#: ../gtk/gtktreeview.c:1219 +msgid "Allow drawing of alternating color rows" +msgstr "ਬਦਲਵੇ ਰੰਗ ਦੀਆ ਕਤਾਰਾਂ ਬਣਾਉਣ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: ../gtk/gtktreeview.c:1225 +msgid "Indent Expanders" +msgstr "ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰੀ ਨੂੰ ਫੈਲਾਓ" + +#: ../gtk/gtktreeview.c:1226 +msgid "Make the expanders indented" +msgstr "ਫੈਲਾਉ ਨੂੰ ਹਾਸ਼ੀਏ ਤੋਂ ਦੂਰ ਬਣਾਓ" + +#: ../gtk/gtktreeview.c:1232 +msgid "Even Row Color" +msgstr "ਜਿਸਤ ਕਤਾਰ ਦਾ ਰੰਗ" + +#: ../gtk/gtktreeview.c:1233 +msgid "Color to use for even rows" +msgstr "ਜਿਸਤ ਕਤਾਰ ਲਈ ਵਰਤਣ ਵਾਲਾ ਰੰਗ" + +#: ../gtk/gtktreeview.c:1239 +msgid "Odd Row Color" +msgstr "ਟਾਂਕ ਕਤਾਰ ਦਾ ਰੰਗ" + +#: ../gtk/gtktreeview.c:1240 +msgid "Color to use for odd rows" +msgstr "ਟਾਂਕ ਕਤਾਰ ਲਈ ਵਰਤਣ ਵਾਲਾ ਰੰਗ" + +#: ../gtk/gtktreeview.c:1246 +msgid "Grid line width" +msgstr "ਗਰਿੱਡ ਲਾਈਨ ਚੌੜਾਈ" + +#: ../gtk/gtktreeview.c:1247 +msgid "Width, in pixels, of the tree view grid lines" +msgstr "ਟਰੀ ਝਲਕ ਗਰਿੱਡ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲ ਵਿੱਚ" + +#: ../gtk/gtktreeview.c:1253 +msgid "Tree line width" +msgstr "ਟਰੀ ਲਾਈਨ ਚੌੜਾਈ" + +#: ../gtk/gtktreeview.c:1254 +msgid "Width, in pixels, of the tree view lines" +msgstr "ਲੜੀ ਝਲਕ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ ਪਿਕਸਲ ਵਿੱਚ" + +#: ../gtk/gtktreeview.c:1260 +msgid "Grid line pattern" +msgstr "ਗਰਿੱਡ ਲਾਈਨ ਪੈਟਰਨ" + +#: ../gtk/gtktreeview.c:1261 +msgid "Dash pattern used to draw the tree view grid lines" +msgstr "ਲੜੀ ਝਲਕ ਗਰਿੱਡ ਲਾਈਨਾਂ ਖਿੱਚਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡੈਸ਼ ਪੈਟਰਨ" + +#: ../gtk/gtktreeview.c:1267 +msgid "Tree line pattern" +msgstr "ਟਰੀ ਲਾਈਨ ਪੈਟਰਨ" + +#: ../gtk/gtktreeview.c:1268 +msgid "Dash pattern used to draw the tree view lines" +msgstr "ਲੜੀ ਝਲਕ ਲਾਈਨਾਂ ਖਿੱਚਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡੈਸ਼ ਪੈਟਰਨ" + +#: ../gtk/gtktreeviewcolumn.c:244 +msgid "Whether to display the column" +msgstr "ਕੀ ਕਾਲਮ ਵੇਖਾਉਣਾ ਹੈ" + +#: ../gtk/gtktreeviewcolumn.c:251 ../gtk/gtkwindow.c:645 +msgid "Resizable" +msgstr "ਮੁੜ-ਆਕਾਰਯੋਗ" + +#: ../gtk/gtktreeviewcolumn.c:252 +msgid "Column is user-resizable" +msgstr "ਕਾਲਮ ਵਰਤਣਵਾਲੇ ਰਾਹੀਂ ਮੁੜ-ਅਕਾਰਯੋਗ ਹੈ" + +#: ../gtk/gtktreeviewcolumn.c:260 +msgid "Current width of the column" +msgstr "ਕਾਲਮ ਦੀ ਮੌਜੂਦਾ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:277 +msgid "Sizing" +msgstr "ਅਕਾਰ" + +#: ../gtk/gtktreeviewcolumn.c:278 +msgid "Resize mode of the column" +msgstr "ਕਾਲਮ ਦਾ ਮੁੜ-ਅਕਾਰ ਮੋਡ" + +#: ../gtk/gtktreeviewcolumn.c:286 +msgid "Fixed Width" +msgstr "ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:287 +msgid "Current fixed width of the column" +msgstr "ਕਾਲਮ ਦੀ ਮੌਜੂਦਾ ਨਿਸ਼ਚਿਤ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:297 +msgid "Minimum allowed width of the column" +msgstr "ਕਾਲਮ ਦੀ ਘੱਟੋ-ਘੱਟ ਲਾਗੂ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:306 +msgid "Maximum Width" +msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:307 +msgid "Maximum allowed width of the column" +msgstr "ਕਾਲਮ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਲਾਗੂ ਚੌੜਾਈ" + +#: ../gtk/gtktreeviewcolumn.c:317 +msgid "Title to appear in column header" +msgstr "ਕਾਲਮ ਦੇ ਹੈੱਡਰ ਉੱਤੇ ਦਿੱਸਣ ਵਾਲਾ ਕਾਲਮ" + +#: ../gtk/gtktreeviewcolumn.c:325 +msgid "Column gets share of extra width allocated to the widget" +msgstr "ਵਿਦਗਿਟ ਨੂੰ ਦਿੱਤੀ ਗਈ ਵਾਧੂ ਚੌੜਾਈ ਵਿੱਚੋਂ ਕਾਲਮ ਹਿੱਸਾ ਪਰਾਪਤ ਕਰੇ" + +#: ../gtk/gtktreeviewcolumn.c:332 +msgid "Clickable" +msgstr "ਕਲਿੱਕ-ਯੋਗ" + +#: ../gtk/gtktreeviewcolumn.c:333 +msgid "Whether the header can be clicked" +msgstr "ਕੀ ਹੈੱਡਰ ਦਬਾਉਣਯੋਗ ਹੋਵੇ" + +#: ../gtk/gtktreeviewcolumn.c:341 +msgid "Widget" +msgstr "ਵਿਦਗਿਟ" + +#: ../gtk/gtktreeviewcolumn.c:342 +msgid "Widget to put in column header button instead of column title" +msgstr "ਕਾਲਮ ਹੈੱਡਰ ਦੀ ਬਜਾਏ ਕਾਲਮ ਟਾਈਟਲ ਬਟਨ ਲਗਾਉਣ ਲਈ ਵਿਦਗਿਟ" + +#: ../gtk/gtktreeviewcolumn.c:350 +msgid "X Alignment of the column header text or widget" +msgstr "ਕਾਲਮ ਹੈੱਡਰ ਦੇ ਟੈਕਸਟ ਜਾਂ ਵਿਦਗਿਟ ਦੀ X ਸ਼ਫਬੰਦੀ" + +#: ../gtk/gtktreeviewcolumn.c:360 +msgid "Whether the column can be reordered around the headers" +msgstr "ਕੀ ਕਾਲਮ ਹੈੱਡਰ ਦੁਆਲੇ ਮੁੜ-ਕਰਮਬੱਧ ਹੋਣ ਦੇ ਯੋਗ ਹੈ" + +#: ../gtk/gtktreeviewcolumn.c:367 +msgid "Sort indicator" +msgstr "ਕ੍ਰਮ ਇੰਡੀਕੇਟਰ" + +#: ../gtk/gtktreeviewcolumn.c:368 +msgid "Whether to show a sort indicator" +msgstr "ਕੀ ਕ੍ਰਮ ਸੰਕੇਤਕ ਨੂੰ ਵੇਖਾਉਣਾ ਹੈ" + +#: ../gtk/gtktreeviewcolumn.c:375 +msgid "Sort order" +msgstr "ਕ੍ਰਮ ਪੈਟਰਨ" + +#: ../gtk/gtktreeviewcolumn.c:376 +msgid "Sort direction the sort indicator should indicate" +msgstr "ਕ੍ਰਮ ਦਿਸ਼ਾ, ਜੋ ਕਿ ਕ੍ਰਮ ਸੰਕੇਤਕ ਵੇਖਾਵੇ" + +#: ../gtk/gtktreeviewcolumn.c:392 +msgid "Sort column ID" +msgstr "ਲੜੀਬੱਧ ਕਾਲਮ ID" + +#: ../gtk/gtktreeviewcolumn.c:393 +msgid "Logical sort column ID this column sorts on when selected for sorting" +msgstr "ਜਦੋਂ ਲੜੀਬੱਧ ਦੀ ਚੋਣ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਕਾਲਮ ਲੜੀਬੱਧ ਕਰਨ ਲਈ ਲਾਜ਼ੀਕਲ ਕਾਲਮ ID" + +#: ../gtk/gtkuimanager.c:226 +msgid "Whether tearoff menu items should be added to menus" +msgstr "ਮੇਨੂ ਆਈਟਮ ਨੂੰ ਵੱਖ-ਕਰਨ ਵਾਲਾ ਨੂੰ ਮੇਨੂ ਵਿੱਚ ਜੋੜਨਾ ਹੈ" + +#: ../gtk/gtkuimanager.c:233 +msgid "Merged UI definition" +msgstr "ਰੱਲਗੱਡ UI ਪਰਿਭਾਸ਼ਾ" + +#: ../gtk/gtkuimanager.c:234 +msgid "An XML string describing the merged UI" +msgstr "ਰੱਲਗੱਡ UI ਪਰੀਭਾਸ਼ਾ ਨੂੰ ਦਰਸਾਉਣ ਲਈ XML ਦੀ ਸਤਰ" + +#: ../gtk/gtkviewport.c:154 +msgid "Determines how the shadowed box around the viewport is drawn" +msgstr "ਵਿਊ-ਪੋਰਟ ਦੇ ਦੁਆਲੇ ਪਰਛਾਵਾਂ-ਡੱਬਾ ਕਿਵੇਂ ਖਿੱਚਿਆ ਜਾਵੇਗਾ" + +#: ../gtk/gtkvolumebutton.c:156 +msgid "Use symbolic icons" +msgstr "ਸਿੰਬਲ ਆਈਕਾਨ ਵਰਤੋਂ" + +#: ../gtk/gtkvolumebutton.c:157 +msgid "Whether to use symbolic icons" +msgstr "ਕੀ ਸਿੰਬਲ ਆਈਕਾਨ ਵਰਤਣੇ ਹਨ" + +#: ../gtk/gtkwidget.c:901 +msgid "Widget name" +msgstr "ਵਿਦਗਿਟ ਨਾਂ" + +#: ../gtk/gtkwidget.c:902 +msgid "The name of the widget" +msgstr "ਵਿਦਗਿਟ ਦਾ ਨਾਂ" + +#: ../gtk/gtkwidget.c:908 +msgid "Parent widget" +msgstr "ਪੇਰੈਟ ਵਿਦਗਿਟ" + +#: ../gtk/gtkwidget.c:909 +msgid "The parent widget of this widget. Must be a Container widget" +msgstr "ਇਸ ਵਿਦਗਿਟ ਦਾ ਪੇਰੈਟ ਵਿਦਗਿਟ ਇੱਕ ਕੰਨਟੇਨਰ ਵਿਦਗਿਟ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ " + +#: ../gtk/gtkwidget.c:916 +msgid "Width request" +msgstr "ਵਿਦਗਿਟ ਬੇਨਤੀ" + +#: ../gtk/gtkwidget.c:917 +msgid "" +"Override for width request of the widget, or -1 if natural request should be " +"used" +msgstr "ਵਿਦਗਿਟ ਲਈ ਚੌੜਾਈ ਦੀ ਮੰਗ ਨੂੰ ਉੱਤੇ ਲਿਖ ਦਿਉ, ਜਾਂ -1 ਕੁਦਰਤੀ ਮੰਗ ਹੀ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkwidget.c:925 +msgid "Height request" +msgstr "ਉਚਾਈ ਬੇਨਤੀ" + +#: ../gtk/gtkwidget.c:926 +msgid "" +"Override for height request of the widget, or -1 if natural request should " +"be used" +msgstr "ਵਿਦਗਿਟ ਲਈ ਉਚਾਈ ਦੀ ਮੰਗ ਨੂੰ ਉੱਤੇ ਲਿਖ ਦਿਉ, ਜਾਂ -1 ਕੁਦਰਤੀ ਮੰਗ ਹੀ ਵਰਤਣੀ ਹੈ " + +#: ../gtk/gtkwidget.c:935 +msgid "Whether the widget is visible" +msgstr "ਕੀ ਵਿਦਗਿਟ ਵੇਖਣਯੋਗ ਹੈ" + +#: ../gtk/gtkwidget.c:942 +msgid "Whether the widget responds to input" +msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਨੂੰ ਜਵਾਬਦੇਹ ਹੋਵੇ" + +#: ../gtk/gtkwidget.c:948 +msgid "Application paintable" +msgstr "ਕਾਰਜ ਚਿੱਤਰਯੋਗ" + +#: ../gtk/gtkwidget.c:949 +msgid "Whether the application will paint directly on the widget" +msgstr "ਕੀ ਕਾਰਜ ਵਿਦਗਿਟ ਤੇ ਸਿੱਧਾ ਹੀ ਚਿੱਤਰਕਾਰੀ ਕਰ ਸਕੇ" + +#: ../gtk/gtkwidget.c:955 +msgid "Can focus" +msgstr "ਫੋਕਸ ਹੋ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkwidget.c:956 +msgid "Whether the widget can accept the input focus" +msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਫੋਕਸ ਲਾਗੂ ਕਰ ਸਕੇ" + +#: ../gtk/gtkwidget.c:962 +msgid "Has focus" +msgstr "ਫੋਕਸ ਹੈ" + +#: ../gtk/gtkwidget.c:963 +msgid "Whether the widget has the input focus" +msgstr "ਕੀ ਵਿਦਗਿਟ ਇੰਪੁੱਟ ਫੋਕਸ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਹੈ" + +#: ../gtk/gtkwidget.c:969 +msgid "Is focus" +msgstr "ਫੋਕਸ ਹੈ" + +#: ../gtk/gtkwidget.c:970 +msgid "Whether the widget is the focus widget within the toplevel" +msgstr "ਕੀ ਵਿਦਗਿਟ ਸਿਰੇ ਦੀ ਸਥਿਤੀ ਵਿੱਚ ਵਿਦਗਿਟ ਫੋਕਸ ਨੂੰ ਲਾਗੂ ਕੀਤਾ ਹੈ" + +#: ../gtk/gtkwidget.c:976 +msgid "Can default" +msgstr "ਡਿਫਾਲਟ ਹੋ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkwidget.c:977 +msgid "Whether the widget can be the default widget" +msgstr "ਕੀ ਵਿਦਗਿਟ ਮੂਲ ਵਿਦਗਿਟ ਬਣ ਸਕੇ" + +#: ../gtk/gtkwidget.c:983 +msgid "Has default" +msgstr "ਡਿਫਾਲਟ ਹੈ" + +#: ../gtk/gtkwidget.c:984 +msgid "Whether the widget is the default widget" +msgstr "ਕੀ ਵਿਦਗਿਟ ਮੂਲ ਵਿਦਗਿਟ ਹੈ" + +#: ../gtk/gtkwidget.c:990 +msgid "Receives default" +msgstr "ਡਿਫਾਲਟ ਲੈ ਸਕੇ" + +#: ../gtk/gtkwidget.c:991 +msgid "If TRUE, the widget will receive the default action when it is focused" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਵਿਦਗਿਟ ਮੂਲ ਕਾਰਵਾਈ ਕਰੇਗੇ, ਜਦੋਂ ਕਿ ਇਹ ਕੇਦਰਿਤ ਹੋਵੇਗਾ" + +#: ../gtk/gtkwidget.c:997 +msgid "Composite child" +msgstr "ਯੋਗਿਕ ਚਲਾਇਡ" + +#: ../gtk/gtkwidget.c:998 +msgid "Whether the widget is part of a composite widget" +msgstr "ਕੀ ਵਿਦਗਿਟ ਯੋਗਿਕ ਵਿਦਗਿਟ ਦਾ ਹਿੱਸਾ ਹੈ" + +#: ../gtk/gtkwidget.c:1004 +msgid "Style" +msgstr "ਸਟਾਇਲ" + +#: ../gtk/gtkwidget.c:1005 +msgid "" +"The style of the widget, which contains information about how it will look " +"(colors etc)" +msgstr "" +"ਵਿਦਗਿਟ ਦਾ ਸਟਾਇਲ, ਜੋ ਕਿ ਇਹ ਜਾਣਕਾਰੀ ਰੱਖਦਾ ਹੈ ਇਹ ਕਿਸਤਰਾਂ ਦਾ ਦਿੱਸੇਗਾ (ਜਿਵੇਂ ਰੰਗ " +"ਆਦਿ)" + +#: ../gtk/gtkwidget.c:1011 +msgid "Events" +msgstr "ਘਟਨਾਵਾਂ" + +#: ../gtk/gtkwidget.c:1012 +msgid "The event mask that decides what kind of GdkEvents this widget gets" +msgstr "" +"ਘਟਨਾ-ਮਖੌਟਾ, ਜੋ ਕਿ ਇਹ ਸੈੱਟ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਵਿਦਗਿਟ ਕਿਸਤਰ੍ਹਾਂ ਦਾ GdkEvents ਨੂੰ " +"ਪਰਾਪਤ ਕਰਦਾ ਹੈ" + +#: ../gtk/gtkwidget.c:1019 +msgid "No show all" +msgstr "ਸਭ ਨਾ ਵੇਖਾਓ" + +#: ../gtk/gtkwidget.c:1020 +msgid "Whether gtk_widget_show_all() should not affect this widget" +msgstr "ਕੀ gtk_widget_show_all() ਸਾਰੇ ਵਿਦਗਿਟ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਾ ਕਰੇ" + +#: ../gtk/gtkwidget.c:1043 +msgid "Whether this widget has a tooltip" +msgstr "ਕੀ ਇਹ ਵਿਦਗਿਟ ਉੱਤੇ ਟੂਲ-ਟਿੱਪ ਹੋਣ" + +#: ../gtk/gtkwidget.c:1099 +msgid "Window" +msgstr "ਵਿੰਡੋ" + +#: ../gtk/gtkwidget.c:1100 +msgid "The widget's window if it is realized" +msgstr "ਜੇ ਮੰਨਿਆ ਜਾਵੇ ਤਾਂ ਵਿਡਜੈੱਟ ਦੀ ਵਿੰਡੋ" + +#: ../gtk/gtkwidget.c:1114 +msgid "Double Buffered" +msgstr "ਦੂਹਰਾ ਬਫਰ" + +#: ../gtk/gtkwidget.c:1115 +msgid "Whether the widget is double buffered" +msgstr "ਕੀ ਵਿਦਗਿਟ ਦੂਹਰਾ ਬਫ਼ਰ ਹੋਵੇ" + +#: ../gtk/gtkwidget.c:1130 +msgid "How to position in extra horizontal space" +msgstr "ਵਾਧੂ ਹਰੀਜੱਟਲ ਥਾਂ ਵਿੱਚ ਸਥਿਤੀ ਕਿਵੇਂ" + +#: ../gtk/gtkwidget.c:1146 +msgid "How to position in extra vertical space" +msgstr "ਵਾਧੂ ਵਰਟੀਕਲ ਥਾਂ ਵਿੱਚ ਸਥਿਤੀ ਕਿਵੇਂ" + +#: ../gtk/gtkwidget.c:1165 +msgid "Margin on Left" +msgstr "ਖੱਬੇ ਤੋਂ ਫਾਸਲਾ" + +#: ../gtk/gtkwidget.c:1166 +msgid "Pixels of extra space on the left side" +msgstr "ਖੱਬੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" + +#: ../gtk/gtkwidget.c:1186 +msgid "Margin on Right" +msgstr "ਸੱਜੇ ਤੋਂ ਫਾਸਲਾ" + +#: ../gtk/gtkwidget.c:1187 +msgid "Pixels of extra space on the right side" +msgstr "ਸੱਜੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" + +#: ../gtk/gtkwidget.c:1207 +msgid "Margin on Top" +msgstr "ਉੱਤੇ ਤੋਂ ਫਾਸਲਾ" + +#: ../gtk/gtkwidget.c:1208 +msgid "Pixels of extra space on the top side" +msgstr "ਉੱਤਲੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" + +#: ../gtk/gtkwidget.c:1228 +msgid "Margin on Bottom" +msgstr "ਹੇਠਾਂ ਤੋਂ ਫਾਸਲਾ" + +#: ../gtk/gtkwidget.c:1229 +msgid "Pixels of extra space on the bottom side" +msgstr "ਹੇਠਲੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" + +#: ../gtk/gtkwidget.c:1246 +msgid "All Margins" +msgstr "ਸਭ ਫਾਸਲੇ" + +#: ../gtk/gtkwidget.c:1247 +msgid "Pixels of extra space on all four sides" +msgstr "ਸਭ ਚਾਰੇ ਪਾਸੇ ਉੱਤੇ ਵਾਧੂ ਥਾਂ ਪਿਕਸਲਾਂ 'ਚ" + +#: ../gtk/gtkwidget.c:1280 +msgid "Horizontal Expand" +msgstr "ਹਰੀਜੱਟਲ ਫੈਲਾਉ" + +#: ../gtk/gtkwidget.c:1281 +msgid "Whether widget wants more horizontal space" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਨੂੰ ਹੋਰ ਹਰੀਜੱਟਲ ਥਾਂ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1295 +msgid "Horizontal Expand Set" +msgstr "ਹਰੀਜੱਟਲ ਫੈਲਾਉ ਸੈੱਟ" + +#: ../gtk/gtkwidget.c:1296 +msgid "Whether to use the hexpand property" +msgstr "ਕੀ ਹੈਕਸਾਪੈਂਡ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1310 +msgid "Vertical Expand" +msgstr "ਵਰਟੀਕਲ ਫੈਲਾਓ" + +#: ../gtk/gtkwidget.c:1311 +msgid "Whether widget wants more vertical space" +msgstr "ਕੀ ਵਿਦਜੈੱਟ ਨੂੰ ਹੋਰ ਵਰਟੀਕਲ ਥਾਂ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1325 +msgid "Vertical Expand Set" +msgstr "ਵਰਟੀਕਲ ਫੈਲਾਉ ਸੈੱਟ" + +#: ../gtk/gtkwidget.c:1326 +msgid "Whether to use the vexpand property" +msgstr "ਕੀ ਵੈਕਸਪੈਂਡ ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਤਣੀ ਹੈ" + +#: ../gtk/gtkwidget.c:1340 +msgid "Expand Both" +msgstr "ਦੋਵੇਂ ਫੈਲਾਓ" + +#: ../gtk/gtkwidget.c:1341 +msgid "Whether widget wants to expand in both directions" +msgstr "ਕੀ ਵਿਦਜੈਟ ਨੂੰ ਦੋਵੇਂ ਦਿਸ਼ਾਵਾਂ ਫੈਲਣ ਦੀ ਲੋੜ ਹੈ" + +#: ../gtk/gtkwidget.c:3000 +msgid "Interior Focus" +msgstr "ਅੰਦਰੂਨੀ ਫੋਕਸ" + +#: ../gtk/gtkwidget.c:3001 +msgid "Whether to draw the focus indicator inside widgets" +msgstr "ਕੀ ਵਿਦਗਿਟ ਵਿੱਚ ਫੋਕਸ ਸੰਕੇਤਕ ਬਣਾਉਣਾ ਹੈ" + +#: ../gtk/gtkwidget.c:3007 +msgid "Focus linewidth" +msgstr "ਫੋਕਸ ਰੇਖਾ-ਚੌੜਾਈ" + +#: ../gtk/gtkwidget.c:3008 +msgid "Width, in pixels, of the focus indicator line" +msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਲਾਈਨ ਦੀ ਚੌੜਾਈ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" + +#: ../gtk/gtkwidget.c:3014 +msgid "Focus line dash pattern" +msgstr "ਫੋਕਸ ਲਾਈਨ ਡੈਸ ਪੈਟਰਨ" + +#: ../gtk/gtkwidget.c:3015 +msgid "Dash pattern used to draw the focus indicator" +msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਨੂੰ ਬਣਾਉਣ ਲਈ ਡੱਬੀਦਾਰ ਪੈਟਰਨ" + +#: ../gtk/gtkwidget.c:3020 +msgid "Focus padding" +msgstr "ਫੋਕਸ ਪੈਡਿੰਗ" + +#: ../gtk/gtkwidget.c:3021 +msgid "Width, in pixels, between focus indicator and the widget 'box'" +msgstr "ਫੋਕਸ ਸੰਕੇਤਕ ਅਤੇ ਵਿਦਗਿਟ 'ਡੱਬੇ' ਵਿਚਕਾਰ ਦੀ ਚੌੜਾਈ (ਪਿਕਸਲਾਂ ਵਿੱਚ)" + +#: ../gtk/gtkwidget.c:3026 +msgid "Cursor color" +msgstr "ਕਰਸਰ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3027 +msgid "Color with which to draw insertion cursor" +msgstr "ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਬਣਾਉਣ ਵਾਲਾ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3032 +msgid "Secondary cursor color" +msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3033 +msgid "" +"Color with which to draw the secondary insertion cursor when editing mixed " +"right-to-left and left-to-right text" +msgstr "" +"ਰੰਗ, ਜਿਸ ਨਾਲ ਸੈਕੰਡਰੀ ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਬਣਾਈ ਜਾਵੇਗੀ, ਜਦੋਂ ਕਿ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਤੇ ਖੱਬੇ " +"ਤੋਂ ਸੱਜੇ ਟੈਕਸਟ ਦੇ " +"ਰਲਵੇ ਨੂੰ ਸੋਧਣਾ ਹੈ" + +#: ../gtk/gtkwidget.c:3038 +msgid "Cursor line aspect ratio" +msgstr "ਕਰਸਰ ਲਾਈਨ ਅਕਾਰ ਅਨੁਪਾਤ" + +#: ../gtk/gtkwidget.c:3039 +msgid "Aspect ratio with which to draw insertion cursor" +msgstr "ਵਿਚਕਾਰਲੀ ਕਰਸਰ ਖਿੱਚਣ ਲਈ ਅਕਾਰ ਅਨੁਪਾਤ" + +#: ../gtk/gtkwidget.c:3045 +msgid "Window dragging" +msgstr "ਵਿੰਡੋ ਡਰੈਗਿੰਗ" + +#: ../gtk/gtkwidget.c:3046 +msgid "Whether windows can be dragged by clicking on empty areas" +msgstr "ਕੀ ਵਿੰਡੋ ਨੂੰ ਖਾਲੀ ਖੇਤਰਾਂ 'ਚ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਡਰੈਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkwidget.c:3059 +msgid "Unvisited Link Color" +msgstr "ਨਾ-ਖੋਲ੍ਹੇ ਲਿੰਕ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3060 +msgid "Color of unvisited links" +msgstr "ਨਾ-ਖੋਲ੍ਹੇ ਲਿੰਕਾਂ ਦਾ ਰੰਗ ਹੈ" + +#: ../gtk/gtkwidget.c:3073 +msgid "Visited Link Color" +msgstr "ਖੋਲ੍ਹੇ ਲਿੰਕ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3074 +msgid "Color of visited links" +msgstr "ਖੋਲ੍ਹੇ ਗਏ ਲਿੰਕਦਾ ਰੰਗ" + +#: ../gtk/gtkwidget.c:3088 +msgid "Wide Separators" +msgstr "ਖੁੱਲ੍ਹੇ ਵੱਖਰੇਵੇਂ" + +#: ../gtk/gtkwidget.c:3089 +msgid "" +"Whether separators have configurable width and should be drawn using a box " +"instead of a line" +msgstr "" +"ਕੀ ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ ਸੰਰਚਨਾ ਯੋਗ ਹੋਵੇ ਅਤੇ ਇੱਕ ਸਤਰ ਦੀ ਬਜਾਏ ਇੱਕ ਬਕਸਾ ਖਿੱਚਣ ਦੇ ਯੋਗ " +"ਹੋਵੇ" + +#: ../gtk/gtkwidget.c:3103 +msgid "Separator Width" +msgstr "ਵੱਖਰੇਵਾ ਚੌੜਾਈ" + +#: ../gtk/gtkwidget.c:3104 +msgid "The width of separators if wide-separators is TRUE" +msgstr "ਵੱਖਰੇਵੇ ਦੀ ਚੌੜਾਈ, ਜੇਕਰ ਖੁੱਲ੍ਹਾ-ਵੱਖਰੇਵਾ ਸੱਚ ਹੋਵੇ" + +#: ../gtk/gtkwidget.c:3118 +msgid "Separator Height" +msgstr "ਵੱਖਰੇਵਾ ਉਚਾਈ" + +#: ../gtk/gtkwidget.c:3119 +msgid "The height of separators if \"wide-separators\" is TRUE" +msgstr "ਵੱਖਰੇਵੇ ਦੀ ਉਚਾਈ, ਜੇਕਰ \"ਖੁੱਲ੍ਹਾ-ਵੱਖਰੇਵਾ\" ਸੱਚ ਹੋਵੇ" + +#: ../gtk/gtkwidget.c:3133 +msgid "Horizontal Scroll Arrow Length" +msgstr "ਖਿਤਿਜੀ ਸਰਕੋਲ ਤੀਰ ਲੰਬਾਈ" + +#: ../gtk/gtkwidget.c:3134 +msgid "The length of horizontal scroll arrows" +msgstr "ਖਿਤਿਜੀ ਸਕਰੋਲ ਤੀਰਾਂ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkwidget.c:3148 +msgid "Vertical Scroll Arrow Length" +msgstr "ਲੰਬਕਾਰੀ ਸਕਰੋਲ ਤੀਰ ਲੰਬਾਈ" + +#: ../gtk/gtkwidget.c:3149 +msgid "The length of vertical scroll arrows" +msgstr "ਲੰਬਕਾਰੀ ਸਕਰੋਲ ਤੀਰਾਂ ਦੀ ਲੰਬਾਈ" + +#: ../gtk/gtkwindow.c:603 +msgid "Window Type" +msgstr "ਵਿੰਡੋ ਟਾਈਪ" + +#: ../gtk/gtkwindow.c:604 +msgid "The type of the window" +msgstr "ਵਿੰਡੋ ਦੀ ਕਿਸਮ" + +#: ../gtk/gtkwindow.c:612 +msgid "Window Title" +msgstr "ਵਿੰਡੋ ਟਾਈਟਲ" + +#: ../gtk/gtkwindow.c:613 +msgid "The title of the window" +msgstr "ਵਿੰਡੋ ਦਾ ਟਾਈਟਲ" + +#: ../gtk/gtkwindow.c:620 +msgid "Window Role" +msgstr "ਵਿੰਡੋ ਰੂਲ" + +#: ../gtk/gtkwindow.c:621 +msgid "Unique identifier for the window to be used when restoring a session" +msgstr "ਵਿੰਡੋ ਲਈ ਇਕਸਾਰ ਸ਼ਨਾਖਤੀ ਜੋ ਕਿ ਸ਼ੈਸ਼ਨ ਨੁੰ ਮੁੜ-ਸੰਭਾਲਣ ਸਮੇ ਵਰਤਿਆ ਜਾ ਸਕੇ" + +#: ../gtk/gtkwindow.c:637 +msgid "Startup ID" +msgstr "ਸ਼ੁਰੂਆਤੀ ID" + +#: ../gtk/gtkwindow.c:638 +msgid "Unique startup identifier for the window used by startup-notification" +msgstr "" +"ਵਿੰਡੋ ਲਈ ਵਿਲੱਖਣ ਸ਼ੁਰੂਆਤੀ ਸ਼ਨਾਖਤੀ, ਜੋ ਕਿ ਸ਼ੁਰੂਆਤੀ ਸੂਚਨਾ ਵਜੋਂ ਵਰਤਿਆ ਜਾਵੇ।" + +#: ../gtk/gtkwindow.c:646 +msgid "If TRUE, users can resize the window" +msgstr "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਯੂਜ਼ਰ ਵਿੰਡ ਦਾ ਮੁੜ-ਅਕਾਰ ਕਰ ਸਕਦਾ ਹੈ" + +#: ../gtk/gtkwindow.c:653 +msgid "Modal" +msgstr "ਮਾਡਲ" + +#: ../gtk/gtkwindow.c:654 +msgid "" +"If TRUE, the window is modal (other windows are not usable while this one is " +"up)" +msgstr "" +"ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ, ਵਿੰਡੋ ਮਾਡਲ ਹੋਵੇਗੀ (ਹੋਰ ਵਿੰਡੋ ਉਪਲੱਬਧ ਨਹੀਂ ਹੋ ਸਕਣਗੇ, ਜਦੋਂ ਕਿ " +"ਇੱਕ ਨੂੰ ਵਰਤ ਰਹੇ ਹੋ)" + +#: ../gtk/gtkwindow.c:661 +msgid "Window Position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: ../gtk/gtkwindow.c:662 +msgid "The initial position of the window" +msgstr "ਵਿੰਡੋ ਦੀ ਮੁੱਢਲੀ ਸਥਿਤੀ" + +#: ../gtk/gtkwindow.c:670 +msgid "Default Width" +msgstr "ਮੂਲ ਚੌੜਾਈ" + +#: ../gtk/gtkwindow.c:671 +msgid "The default width of the window, used when initially showing the window" +msgstr "ਵਿੰਡੋ ਦੀ ਡਿਫਾਲਟ ਚੌੜਾਈ, ਜੋ ਕਿ ਵਿੰਡੋ ਦੇ ਸ਼ੁਰੂ ਵੇਲੇ ਵੇਖਾਈ ਜਾਵੇਗੀ" + +#: ../gtk/gtkwindow.c:680 +msgid "Default Height" +msgstr "ਮੂਲ ਉਚਾਈ" + +#: ../gtk/gtkwindow.c:681 +msgid "" +"The default height of the window, used when initially showing the window" +msgstr "ਵਿੰਡੋ ਦੀ ਡਿਫਾਲਟ ਉਚਾਈ, ਜੋ ਕਿ ਵਿੰਡੋ ਦੇ ਸ਼ੁਰੂ ਵੇਲੇ ਵੇਖਾਈ ਜਾਵੇਗੀ" + +#: ../gtk/gtkwindow.c:690 +msgid "Destroy with Parent" +msgstr "ਪੇਰੈਟ ਨੂੰ ਖਤਮ ਕਰ ਦਿਉ" + +#: ../gtk/gtkwindow.c:691 +msgid "If this window should be destroyed when the parent is destroyed" +msgstr "ਜੇਕਰ ਇਹ ਵਿੰਡੋ ਨੂੰ ਖਤਮ ਕੀਤਾ ਤਾਂ ਪੈਰੈਟ ਵੀ ਖਤਮ ਹੋ ਜਾਏਗਾ" + +#: ../gtk/gtkwindow.c:699 +msgid "Icon for this window" +msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਆਈਕਾਨ" + +#: ../gtk/gtkwindow.c:705 +msgid "Mnemonics Visible" +msgstr "ਮਨਾਮੈਰਿਕ ਦਿੱਖ" + +#: ../gtk/gtkwindow.c:706 +msgid "Whether mnemonics are currently visible in this window" +msgstr "ਕੀ ਇਸ ਵਿੰਡੋ ਵਿੱਚ ਮਨਾਮੈਰਿਕ ਇਸ ਸਮੇਂ ਉਪਲੱਬਧ ਹੋਵੇ" + +#: ../gtk/gtkwindow.c:722 +msgid "Name of the themed icon for this window" +msgstr "ਇਸ ਵਿੰਡੋ ਲਈ ਥੀਮ ਆਈਕਾਨ ਦਾ ਨਾਂ" + +#: ../gtk/gtkwindow.c:737 +msgid "Is Active" +msgstr "ਸਰਗਰਮ ਹੈ" + +#: ../gtk/gtkwindow.c:738 +msgid "Whether the toplevel is the current active window" +msgstr "ਕੀ ਉੱਤਲਾ ਮੌਜੂਦਾ ਸਰਗਰਮ ਵਿੰਡੋ ਹੈ" + +#: ../gtk/gtkwindow.c:745 +msgid "Focus in Toplevel" +msgstr "ਉਪਰਲੇ ਨੂੰ ਕੇਦਰਿਤ ਕਰੋ" + +#: ../gtk/gtkwindow.c:746 +msgid "Whether the input focus is within this GtkWindow" +msgstr "ਕੀ ਇਸ GtkWindow ਵਿੱਚ ਇੰਪੁੱਟ ਕੇਦਰ ਹੋਵੇ" + +#: ../gtk/gtkwindow.c:753 +msgid "Type hint" +msgstr "ਸੰਕੇਤ ਲਿਖੋ" + +#: ../gtk/gtkwindow.c:754 +msgid "" +"Hint to help the desktop environment understand what kind of window this is " +"and how to treat it." +msgstr "" +"ਸੰਕੇਤ, ਡੈਸਕਟਾਪ ਮਾਹੌਲ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਮੱਦਦ ਕਰਦਾ ਹੈ ਕਿ ਵਿੰਡੋ ਕਿਸ ਕਿਸਮ ਦੀ ਹੈ ਅਤੇ " +"ਇਸ ਨੂੰ ਕਿਵੇਂ " +"ਵਰਤਣਾ ਹੈ।" + +#: ../gtk/gtkwindow.c:762 +msgid "Skip taskbar" +msgstr "ਕਾਰਜ-ਪੱਟੀ ਨੂੰ ਛੱਡੋ" + +#: ../gtk/gtkwindow.c:763 +msgid "TRUE if the window should not be in the task bar." +msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਟਾਸਕਬਾਰ ਵਿੱਚ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwindow.c:770 +msgid "Skip pager" +msgstr "ਪੇਜ਼ਰ ਨੂੰ ਛੱਡੋ" + +#: ../gtk/gtkwindow.c:771 +msgid "TRUE if the window should not be in the pager." +msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਪੇਜ਼ਰ ਵਿੱਚ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + +#: ../gtk/gtkwindow.c:778 msgid "Urgent" -msgstr "ਜ਼ਰੂਰੀ" +msgstr "ਲਾਜ਼ਮੀ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "High" -msgstr "ਉੱਚ" +#: ../gtk/gtkwindow.c:779 +msgid "TRUE if the window should be brought to the user's attention." +msgstr "ਸੱਚ, ਜੇਕਰ ਵਿੰਡੋ ਯੂਜ਼ਰ ਦਾ ਧਿਆਨ ਖਿੱਚੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "Medium" -msgstr "ਮੱਧਮ" +#: ../gtk/gtkwindow.c:793 +msgid "Accept focus" +msgstr "ਫੋਕਸ ਮਨਜ਼ੂਰ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3503 -msgid "Low" -msgstr "ਘੱਟ" +#: ../gtk/gtkwindow.c:794 +msgid "TRUE if the window should receive the input focus." +msgstr "ਸਹੀ, ਜੇਕਰ ਵਿੰਡੋ ਇੰਪੁੱਟ ਫੋਕਸ ਲੈ ਸਕੇ।" -#. Cups specific, non-ppd related settings -#. Translators, this string is used to label the pages-per-sheet option -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3527 -msgid "Pages per Sheet" -msgstr "ਸਫ਼ੇ ਪ੍ਰਤੀ ਸ਼ੀਟ" +#: ../gtk/gtkwindow.c:808 +msgid "Focus on map" +msgstr "ਨਕਸ਼ੇ ਉੱਤੇ ਫੋਕਸ" -#. Translators, this string is used to label the job priority option -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3564 -msgid "Job Priority" -msgstr "ਕੰਮ ਤਰਜੀਹ" +#: ../gtk/gtkwindow.c:809 +msgid "TRUE if the window should receive the input focus when mapped." +msgstr "ਸੱਚ, ਜੇਕਰ ਵਿੰਡੋ ਇੰਪੁੱਟ ਧਿਆਨ ਲਵੇ, ਜਦੋਂ ਮਿਲਾਇਆ ਗਿਆ ਹੋਵੇ।" -#. Translators, this string is used to label the billing info entry -#. * in the print dialog -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3575 -msgid "Billing Info" -msgstr "ਬਿੱਲ ਜਾਣਕਾਰੀ" +#: ../gtk/gtkwindow.c:823 +msgid "Decorated" +msgstr "ਸਜਾਇਆ" -#. Translators, these strings are names for various 'standard' cover -#. * pages that the printing system may support. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "None" -msgstr "ਕੋਈ ਨਹੀਂ" +#: ../gtk/gtkwindow.c:824 +msgid "Whether the window should be decorated by the window manager" +msgstr "ਕੀ ਵਿੰਡੋ, ਵਿੰਡੋ ਮੈਨੇਜਰ ਰਾਹੀਂ ਸਜਾਈ ਜਾ ਸਕੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Classified" -msgstr "ਵਰਗੀਕ੍ਰਿਤ" +#: ../gtk/gtkwindow.c:838 +msgid "Deletable" +msgstr "ਵੱਖ-ਹੋਣ ਯੋਗ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Confidential" -msgstr "ਗੁਪਤ" +#: ../gtk/gtkwindow.c:839 +msgid "Whether the window frame should have a close button" +msgstr "ਕੀ ਵਿੰਡੋ ਫਰੇਮ ਉੱਤੇ ਇੱਕ ਬੰਦ ਕਰਨ ਦਾ ਬਟਨ ਹੋਵੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Secret" -msgstr "ਖੁਫੀਆ" +#: ../gtk/gtkwindow.c:858 +msgid "Resize grip" +msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Standard" -msgstr "ਸਟੈਂਡਰਡ" +#: ../gtk/gtkwindow.c:859 +msgid "Specifies whether the window should have a resize grip" +msgstr "ਦੱਸੋ ਕਿ ਕੀ ਵਿੰਡੋ ਕੋਲ ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਹੋਵੇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Top Secret" -msgstr "ਉੱਚ ਗੁਪਤ" +#: ../gtk/gtkwindow.c:873 +msgid "Resize grip is visible" +msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਵੇਖੋ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 -msgid "Unclassified" -msgstr "ਗ਼ੈਰ-ਕਲਾਸੀਫਾਈਡ" +#: ../gtk/gtkwindow.c:874 +msgid "Specifies whether the window's resize grip is visible." +msgstr "ਦੱਸੋ ਕਿ ਕੀ ਵਿੰਡੋ ਦਾ ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦਿੱਖ ਹੋਵੇ।" -#. Translators, this is the label used for the option in the print -#. * dialog that controls the front cover page. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3625 -msgid "Before" -msgstr "ਪਹਿਲਾਂ" +#: ../gtk/gtkwindow.c:890 +msgid "Gravity" +msgstr "ਗਰੇਵਿਟੀ" -#. Translators, this is the label used for the option in the print -#. * dialog that controls the back cover page. -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3640 -msgid "After" -msgstr "ਬਾਅਦ" +#: ../gtk/gtkwindow.c:891 +msgid "The window gravity of the window" +msgstr "ਵਿੰਡੋ ਦੀ ਵਿੰਡੋ ਗਰੇਵਿਟੀ" -#. Translators: this is the name of the option that controls when -#. * a print job is printed. Possible values are 'now', a specified time, -#. * or 'on hold' -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3660 -msgid "Print at" -msgstr "ਛਾਪੋ" +#: ../gtk/gtkwindow.c:908 +msgid "Transient for Window" +msgstr "ਵਿੰਡੋ ਲਈ ਟਰਾਂਸੀਨੇਟ" -#. 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/cups/gtkprintbackendcups.c:3671 -msgid "Print at time" -msgstr "ਸਮੇਂ ਉੱਤੇ ਪਰਿੰਟ" +#: ../gtk/gtkwindow.c:909 +msgid "The transient parent of the dialog" +msgstr "ਡਾਈਲਾਗ ਦੀ ਟਰਾਂਸਟ ਮੁੱਢਲਾ" -#. Translators: this format is used to display a custom paper -#. * size. The two placeholders are replaced with the width and height -#. * in points. E.g: "Custom 230.4x142.9" -#. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3706 -#, c-format -msgid "Custom %sx%s" -msgstr "ਕਸਟਮ %sx%s" +#: ../gtk/gtkwindow.c:924 +msgid "Opacity for Window" +msgstr "ਵਿੰਡੋ ਲਈ ਧੁੰਦਲਾਪਨ" -#. default filename used for print-to-file -#: ../modules/printbackends/file/gtkprintbackendfile.c:250 -#, c-format -msgid "output.%s" -msgstr "ਆਉਟਪੁੱਟ.%s" +#: ../gtk/gtkwindow.c:925 +msgid "The opacity of the window, from 0 to 1" +msgstr "ਵਿੰਡੋ ਦਾ ਧੁੰਦਲਾਪਨ, 0 ਤੋਂ 1" -#: ../modules/printbackends/file/gtkprintbackendfile.c:493 -msgid "Print to File" -msgstr "ਫਾਇਲ ਵਿੱਚ ਪਰਿੰਟ ਕਰੋ" +#: ../gtk/gtkwindow.c:935 ../gtk/gtkwindow.c:936 +msgid "Width of resize grip" +msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦੀ ਚੌੜਾਈ" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "PDF" -msgstr "PDF" +#: ../gtk/gtkwindow.c:941 ../gtk/gtkwindow.c:942 +msgid "Height of resize grip" +msgstr "ਮੁੜ-ਆਕਾਰ ਗਰਿੱਪ ਦੀ ਉਚਾਈ" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "Postscript" -msgstr "ਪੋਸਟ-ਸਕ੍ਰਿਪਟ" +#: ../gtk/gtkwindow.c:961 +msgid "GtkApplication" +msgstr "GtkApplication" -#: ../modules/printbackends/file/gtkprintbackendfile.c:570 -msgid "SVG" -msgstr "SVG" +#: ../gtk/gtkwindow.c:962 +msgid "The GtkApplication for the window" +msgstr "ਵਿੰਡੋ ਲਈ GtkApplication" -#: ../modules/printbackends/file/gtkprintbackendfile.c:582 -#: ../modules/printbackends/test/gtkprintbackendtest.c:503 -msgid "Pages per _sheet:" -msgstr "ਹਰੇਕ ਸ਼ੀਟ ਲਈ ਸਫ਼ੇ(_s):" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:641 -msgid "File" -msgstr "ਫਾਇਲ" - -#: ../modules/printbackends/file/gtkprintbackendfile.c:651 -msgid "_Output format" -msgstr "ਆਉਟਪੁੱਟ ਫਾਰਮੈਟ(_O)" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 -msgid "Print to LPR" -msgstr "LPR ਲਈ ਪਰਿੰਟ ਕਰੋ" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 -msgid "Pages Per Sheet" -msgstr "ਸਫ਼ੇ ਪ੍ਰਤੀ ਸ਼ੀਟ" - -#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 -msgid "Command Line" -msgstr "ਕਮਾਂਡ ਲਾਈਨ" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 -msgid "printer offline" -msgstr "ਪਰਿੰਟਰ ਬੰਦ ਹੈ" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 -msgid "ready to print" -msgstr "ਛਾਪਣ ਲਈ ਤਿਆਰੀ" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 -msgid "processing job" -msgstr "ਜਾਬ ਪਰੋਸੈਸ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 -msgid "paused" -msgstr "ਵਿਰਾਮ" - -#. SUN_BRANDING -#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 -msgid "unknown" -msgstr "ਅਣਜਾਣ" - -#. default filename used for print-to-test -#: ../modules/printbackends/test/gtkprintbackendtest.c:234 -#, c-format -msgid "test-output.%s" -msgstr "ਟੈਸਟ-ਆਉਟਪੁੱਟ.%s" - -#: ../modules/printbackends/test/gtkprintbackendtest.c:467 -msgid "Print to Test Printer" -msgstr "ਟੈਸਟ ਪਰਿੰਟਰ ਲਈ ਪਰਿੰਟ ਕਰੋ" - -#: ../tests/testfilechooser.c:207 -#, c-format -msgid "Could not get information for file '%s': %s" -msgstr "ਫਾਇਲ '%s' ਲਈ ਜਾਣਕਾਰੀ ਪਰਾਪਤ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ: %s" - -#: ../tests/testfilechooser.c:222 -#, c-format -msgid "Failed to open file '%s': %s" -msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" - -#: ../tests/testfilechooser.c:267 -#, c-format -msgid "Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" -"ਚਿੱਤਰ '%s' ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਹੈ ਕਿ ਚਿੱਤਰ ਫਾਇਲ " -"ਨਿਕਾਰਾ ਹੈ" - -#~ msgid "Gdk debugging flags to set" -#~ msgstr "ਸੈੱਟ ਕਰਨ ਲਈ Gdk ਡੀਬੱਗ ਫਲੈਗ" - -#~ msgid "Gdk debugging flags to unset" -#~ msgstr "ਅਣ-ਸੈੱਟ ਕਰਨ ਲਈ Gdk ਫਲੈਗ" - -#~ msgid "Image file '%s' contains no data" -#~ msgstr "ਚਿੱਤਰ ਫਾਇਲ '%s' ਵਿੱਚ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਹੈ" +#~ msgid "Number of steps" +#~ msgstr "ਪਗ਼ਾਂ ਦੀ ਗਿਣਤੀ" #~ msgid "" -#~ "Failed to load animation '%s': reason not known, probably a corrupt " -#~ "animation file" +#~ "The number of steps for the spinner to complete a full loop. The " +#~ "animation will complete a full cycle in one second by default (see " +#~ "#GtkSpinner:cycle-duration)." #~ msgstr "" -#~ "ਐਨੀਮੇਸ਼ਨ '%s' ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਹੈ ਕਿ ਐਨੀਮੇਸ਼ਨ " -#~ "ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ" +#~ "ਪਗ਼ਾਂ ਦੀ ਗਿਣਤੀ, ਜਿਸ ਦੌਰਾਨ ਸਪਿੱਨਰ ਚੱਕਰ ਪੂਰਾ ਕਰੇ। ਐਨੀਮੇਸ਼ਨ ਮੂਲ ਰੂਪ ਵਿੱਚ ਇੱਕ ਸਕਿੰਟ ਵਿੱਚ ਚੱਕਰ " +#~ "ਪੂਰਾ ਕਰਦੀ ਹੈ (see #GtkSpinner:cycle-duration ਵੇਖੋ)।" -#~ msgid "Unable to load image-loading module: %s: %s" -#~ msgstr "ਚਿੱਤਰ- ਲੋਡਕਰਨ-ਮੋਡੀਊਲ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਮੱਰਥ: %s: %s" +#~ msgid "Animation duration" +#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਅੰਤਰਾਲ" #~ msgid "" -#~ "Image-loading module %s does not export the proper interface; perhaps " -#~ "it's from a different GTK version?" +#~ "The length of time in milliseconds for the spinner to complete a full loop" +#~ msgstr "ਸਮੇਂ ਦਾ ਅੰਤਰਾਲ ਮਿਲੀਸਕਿੰਟਾਂ ਵਿੱਚ, ਜਿਸ ਲਈ ਸਪਿਨਰ ਚੱਕਰ ਪੂਰਾ ਕਰੇ" + +#~ msgid "Tab pack type" +#~ msgstr "ਟੈਬ ਪੈਕ ਕਿਸਮ" + +#~ msgid "Update policy" +#~ msgstr "ਅੱਪਡੇਟ ਪਾਲਸੀ" + +#~ msgid "How the range should be updated on the screen" +#~ msgstr "ਸਕਰੀਨ ਤੇ ਰੇਜ਼ ਦਾ ਕਿੰਨੀ ਵਾਰ ਅੱਪਡੇਟ ਕਰਨਾ ਹੈ" + +#~ msgid "" +#~ "The label for the link to the website of the program. If this is not set, " +#~ "it defaults to the URL" #~ msgstr "" -#~ "ਚਿੱਤਰ- ਲੋਡਿੰਗ-ਮੋਡੀਊਲ %s ਢੁੱਕਵਾਂ ਇੰਟਰਫੇਸ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦਾ; ਸੰਭਵ ਹੈ ਕਿ ਇਹ ਵੱਖਰੇ GTK " -#~ "ਵਰਜਨ ਤੋਂ ਹੋਵੇ?" +#~ "ਪਰੋਗਰਾਮ ਦੀ ਵੈਬਸਾਇਟ ਨਾਲ ਲਿੰਕ ਦਾ ਲੇਬਲ ਹੈ। ਜੇਕਰ ਇਹ ਨਾਂ ਦਿੱਤਾ ਗਿਆ ਤਾਂ, ਇਹ ਮੂਲ URL ਹੋਵੇਗਾ।" -#~ msgid "Image type '%s' is not supported" -#~ msgstr "ਚਿੱਤਰ ਕਿਸਮ '%s' ਮੱਦਦ-ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੈ" +#~ msgid "Lower" +#~ msgstr "ਹੇਠਲੀ" -#~ msgid "Couldn't recognize the image file format for file '%s'" -#~ msgstr "ਫਾਇਲ '%s' ਲਈ ਚਿੱਤਰ ਫਾਇਲ ਫਾਰਮੈਟ ਦੀ ਪਛਾਣ ਨਾ ਕੀਤੀ ਜਾ ਸਕੀ ਹੈ।" +#~ msgid "Lower limit of ruler" +#~ msgstr "ਪੈਮਾਨੇ ਲਈ ਹੇਠਲੀ ਹੱਦ" -#~ msgid "Unrecognized image file format" -#~ msgstr "ਬੇ-ਪਛਾਣ ਚਿੱਤਰ ਫਾਇਲ ਫਾਰਮੈਟ" +#~ msgid "Upper" +#~ msgstr "ਉੱਤੇਲੀ" -#~ msgid "Failed to load image '%s': %s" -#~ msgstr "ਚਿੱਤਰ '%s' ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ: %s" +#~ msgid "Upper limit of ruler" +#~ msgstr "ਪੈਮਾਨੇ ਲਈ ਉੱਤੇਲੀ ਹੱਦ" -#~ msgid "Error writing to image file: %s" -#~ msgstr "ਚਿੱਤਰ ਫਾਇਲ 'ਤੇ ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ: %s" +#~ msgid "Position of mark on the ruler" +#~ msgstr "ਪੈਮਾਨੇ ਤੇ ਨਿਸ਼ਾਨ ਦੀ ਟਿਕਾਣਾ" + +#~ msgid "Max Size" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" + +#~ msgid "Maximum size of the ruler" +#~ msgstr "ਪੈਮਾਨ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਅਕਾਰ" + +#~ msgid "Metric" +#~ msgstr "ਮੈਟਰਿਕ" + +#~ msgid "The metric used for the ruler" +#~ msgstr "ਫੁੱਟੇ ਲਈ ਵਰਤਣ ਲਈ ਮੈਟਰਿਕ" + +#~ msgid "Horizontal Adjustment for the widget" +#~ msgstr "ਲੇਟਵੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" + +#~ msgid "Vertical Adjustment for the widget" +#~ msgstr "ਲੰਬਕਾਰੀ ਅਡਜੱਸਟਮੈਂਟ ਲਈ ਵਿਦਗਿਟ" #~ msgid "" -#~ "This build of gdk-pixbuf does not support saving the image format: %s" -#~ msgstr "gdk-pixbuf ਦਾ ਇਹ ਬਿਲੱਡ, ਚਿੱਤਰ ਫਾਰਮੈਟ ਵਿੱਚ ਸੰਭਾਲਣ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ: %s" - -#~ msgid "Insufficient memory to save image to callback" -#~ msgstr "ਚਿੱਤਰ ਨੂੰ ਮੁੜ-ਲਿਆਉਣ ਲਈ ਸੰਭਾਲ ਵਾਸਤੇ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Failed to open temporary file" -#~ msgstr "ਆਰਜ਼ੀ ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ" - -#~ msgid "Failed to read from temporary file" -#~ msgstr "ਆਰਜ਼ੀ ਫਾਇਲ ਪੜ੍ਹਨ ਵਿੱਚ ਫੇਲ੍ਹ" - -#~ msgid "Failed to open '%s' for writing: %s" -#~ msgstr "ਲਿਖਣ ਲਈ '%s' ਨੂੰ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫ਼ਲ: %s" +#~ "The GtkAdjustment that determines the values of the horizontal position " +#~ "for this viewport" +#~ msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੇਟਵੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" #~ msgid "" -#~ "Failed to close '%s' while writing image, all data may not have been " -#~ "saved: %s" +#~ "The GtkAdjustment that determines the values of the vertical position for " +#~ "this viewport" +#~ msgstr "ਇਸ ਵਿਊ-ਪੋਰਟ ਲਈ ਲੰਬਕਾਰੀ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਪਤਾ ਕਰਨ ਲਈ GtkAdjustment" + +#~ msgid "Extension events" +#~ msgstr "ਹੋਰ ਘਟਨਾਵਾਂ" + +#~ msgid "The mask that decides what kind of extension events this widget gets" #~ msgstr "" -#~ "ਚਿੱਤਰ ਨੂੰ ਲਿਖਣ ਸਮੇ, '%s' ਨੂੰ ਬੰਦ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ, ਸਾਰਾ ਡਾਟਾ ਸੰਭਾਲਣ ਵਿੱਚ ਅਸਫ਼ਲ: %s" +#~ "ਮਖੌਟਾ, ਜੋ ਕਿ ਇਹ ਸੈੱਟ ਕਰਦੇ ਹਨ ਕਿ ਇਹ ਵਿਦਗਿਟ ਕਿਸਤਰ੍ਹਾਂ ਦੀਆ ਵਾਧੂ-ਘਟਨਾਵਾਂ ਨੂੰ ਪਰਾਪਤ ਕਰਦਾ ਹੈ" -#~ msgid "Insufficient memory to save image into a buffer" -#~ msgstr "ਚਿੱਤਰ ਨੂੰ ਬਫਰ ਵਿੱਚ ਸੰਭਾਲਣ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" +#~ msgid "Whether the statusbar has a grip for resizing the toplevel" +#~ msgstr "ਕੀ ਹਾਲਤ-ਪੱਟੀ ਉਪਰੀ ਦੇ ਮੁੜ-ਅਕਾਰ ਨੂੰ ਵੇਖੇ" -#~ msgid "Error writing to image stream" -#~ msgstr "ਚਿੱਤਰ ਧਾਰਾ ਲਿਖਣ ਦੌਰਾਨ ਗਲਤੀ" +#~ msgid "the GdkScreen for the renderer" +#~ msgstr "ਰੈਂਡਰਿੰਗ ਲਈ GdkScreen" + +#~ msgid "The adjustment that holds the value of the spinbutton." +#~ msgstr "ਅਨਕੂਲਤਾ, ਜੋ ਕਿ ਸਪਿਨ-ਬਟਨ ਦੇ ਮੁੱਲ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ।" + +#~ msgid "Has separator" +#~ msgstr "ਵੱਖਰੇਵਾਂ ਕਰਨ ਵਾਲਾ ਹੈ" + +#~ msgid "The dialog has a separator bar above its buttons" +#~ msgstr "ਤਖੱਤੀ ਕੋਲ ਇਸ ਦੇ ਬਟਨਾ ਤੋਂ ਉੱਤੇ ਵੱਖਰੇਵਾਂ-ਪੱਟੀ ਹੋਵੇ" + +#~ msgid "Invisible char set" +#~ msgstr "ਅਦਿੱਖ ਅੱਖਰ ਸੈੱਟ" + +#~ msgid "State Hint" +#~ msgstr "ਹਾਲਤ ਹਿੰਟ" + +#~ msgid "Whether to pass a proper state when drawing shadow or background" +#~ msgstr "ਜਦੋਂ ਸ਼ੈਡੋ ਜਾਂ ਬੈਕਗਰਾਊਂਡ ਬਣਾਈ ਜਾਵੇ ਤਾਂ ਕੀ ਠੀਕ ਹਾਲਤ ਦੇਣੀ ਹੈ" + +#~ msgid "Deprecated property, use shadow_type instead" +#~ msgstr "ਪ੍ਰਤੀਕੂਲ ਵਿਸ਼ੇਸ਼ਤਾ, ਬਜਾਏ ਪਰਛਾਵਾਂ-ਕਿਸਮ ਵਰਤੋਂ" + +#~ msgid "Pixmap" +#~ msgstr "ਪਿਕਪੈਮ" + +#~ msgid "A GdkPixmap to display" +#~ msgstr "ਵੇਖਾਉਣ ਲਈ GdkPixmap" + +#~ msgid "A GdkImage to display" +#~ msgstr "ਵੇਖਾਉਣ ਲਈ GdkImage" + +#~ msgid "Mask" +#~ msgstr "ਮਖੌਟਾ" + +#~ msgid "Mask bitmap to use with GdkImage or GdkPixmap" +#~ msgstr "GdkImage ਜਾਂ GdkPixmap ਨਾਲ ਵਰਤਣ ਲਈ ਬਿੱਟਮੈਪ ਕੱਜ ਦਿਉ" + +#~ msgid "Use separator" +#~ msgstr "ਵੱਖਰੇਵਾਂ ਵਰਤੋਂ" #~ msgid "" -#~ "Internal error: Image loader module '%s' failed to complete an operation, " -#~ "but didn't give a reason for the failure" +#~ "Whether to put a separator between the message dialog's text and the " +#~ "buttons" +#~ msgstr "ਕੀ ਸੁਨੇਹਾ ਡਾਈਲਾਗ ਸ਼ਬਦ ਅਤੇ ਬਟਨਾਂ ਵਿੱਚ ਵੱਖਰੇਵਾਂ ਵਰਤਣਾ ਹੈ" + +#~ msgid "Draw slider ACTIVE during drag" +#~ msgstr "ਸੁੱਟਣ ਦੌਰਾਨ ਸਲਾਇਡਰ ਸਰਗਰਮ ਵੇਖਾਓ" + +#~ msgid "" +#~ "With this option set to TRUE, sliders will be drawn ACTIVE and with " +#~ "shadow IN while they are dragged" #~ msgstr "" -#~ "ਅੰਦਰੂਨੀ ਗਲਤੀ: ਚਿੱਤਰ ਦੀ ਲੋਡਿੰਗ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਚਿੱਤਰ ਲੋਡਰ ਮੈਡੀਊਲ '%s' ਅਸਫ਼ਲ, ਪਰ ਗਲਤੀ ਦਾ " -#~ "ਕਾਰਨ ਇਹ ਦੱਸ ਨਹੀਂ ਸਕਿਆ।" +#~ "ਇਹ ਚੋਣ ਸਹੀ ਕਰਨ ਨਾਲ, ਸਲਾਈਡਰ ਐਕਟਿਵ ਬਣਾਏ ਜਾਣਗੇ ਅਤੇ ਸ਼ੈਡੋ ਹੋਵੇਗੀ, ਜਦੋਂ ਡਰੈਗ ਕੀਤੇ ਜਾਣਗੇ।" -#~ msgid "Incremental loading of image type '%s' is not supported" -#~ msgstr "ਚਿੱਤਰ ਕਿਸਮ '%s' ਦੀ ਲਗਾਤਾਰ ਲੋਡਿੰਗ ਮੱਦਦ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੈ" - -#~ msgid "Image header corrupt" -#~ msgstr "ਚਿੱਤਰ ਹੈੱਡਰ ਨਿਕਾਰਾ" - -#~ msgid "Image format unknown" -#~ msgstr "ਚਿੱਤਰ ਫਾਰਮੈਟ ਅਣਜਾਣ" - -#~ msgid "Image pixel data corrupt" -#~ msgstr "ਚਿੱਤਰ ਪਿਕਸਲ ਡਾਟਾ ਨਿਕਾਰਾ" - -#~ msgid "failed to allocate image buffer of %u byte" -#~ msgid_plural "failed to allocate image buffer of %u bytes" -#~ msgstr[0] "ਚਿੱਤਰ ਬਫ਼ਰ ਦੇ %u ਬਾਈਟ ਜਾਰੀ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ" -#~ msgstr[1] "ਚਿੱਤਰ ਬਫ਼ਰ ਦੇ %u ਬਾਈਟ ਜਾਰੀ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ" - -#~ msgid "Unexpected icon chunk in animation" -#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਵਿੱਚ ਬੇਲੋੜੀਦਾ ਆਈਕਾਨ" - -#~ msgid "Unsupported animation type" -#~ msgstr "ਬਿਨ-ਮੱਦਦ ਐਨੀਮੇਸ਼ਨ ਕਿਸਮ" - -#~ msgid "Invalid header in animation" -#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਵਿੱਚ ਗਲਤ ਹੈਂਡਰ" - -#~ msgid "Not enough memory to load animation" -#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Malformed chunk in animation" -#~ msgstr "ਐਨੀਮੇਸ਼ਨ ਵਿੱਚ ਨਿਕਾਰਾ ਭਾਗ" - -#~ msgid "The ANI image format" -#~ msgstr "ANI ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "BMP image has bogus header data" -#~ msgstr "BMP ਚਿੱਤਰ ਵਿੱਚ ਜਾਅਲੀ ਹੈਂਡਰ ਡਾਟਾ ਹੈ" - -#~ msgid "Not enough memory to load bitmap image" -#~ msgstr "ਬਿੱਟਮੈਪ ਚਿੱਤਰ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "BMP image has unsupported header size" -#~ msgstr "BMP ਚਿੱਤਰ ਬਿਨ-ਮੱਦਦ ਹੈਂਡਰ ਅਕਾਰ" - -#~ msgid "Topdown BMP images cannot be compressed" -#~ msgstr "ਉੱਤੋਂ-ਹੇਠਾਂ BMP ਚਿੱਤਰ ਕੰਪਰੈੱਸ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ" - -#~ msgid "Premature end-of-file encountered" -#~ msgstr "ਫਾਇਲ ਦਾ ਅਪੂਰਨ ਅੰਤ ਆ ਗਿਆ" - -#~ msgid "Couldn't allocate memory for saving BMP file" -#~ msgstr "BMP ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ ਹੈ" - -#~ msgid "Couldn't write to BMP file" -#~ msgstr "BMP ਫਾਇਲ ਲਿਖੀ ਨਹੀਂ ਜਾ ਸਕੀ" - -#~ msgid "The BMP image format" -#~ msgstr "BMP ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Failure reading GIF: %s" -#~ msgstr "GIF ਪੜ੍ਹਨਾ ਅਸਫ਼ਲ਼: %s" - -#~ msgid "GIF file was missing some data (perhaps it was truncated somehow?)" -#~ msgstr "GIF ਫਾਇਲ ਵਿੱਚ ਕੁਝ ਡਾਟਾ ਗੁੰਮ ਹੈ (ਸਾਇਦ ਇਸ ਵਿੱਚ ਕੁਝ ਕੱਟ-ਵੱਢ ਹੋਈ ਹੈ?)" - -#~ msgid "Internal error in the GIF loader (%s)" -#~ msgstr "GIF ਲੋਡਰ ਵਿੱਚ ਅੰਦਰੂਨੀ ਗਲਤੀ(%s)" - -#~ msgid "Stack overflow" -#~ msgstr "ਸਟਾਕ ਸੀਮਾ ਤੋਂ ਬਾਹਰ" - -#~ msgid "GIF image loader cannot understand this image." -#~ msgstr "GIF ਚਿੱਤਰ ਲੋਡਰ ਇਸ ਚਿੱਤਰ ਨੂੰ ਸਮਝ ਨਹੀਂ ਸਕਿਆ।" - -#~ msgid "Bad code encountered" -#~ msgstr "ਬਾਰ-ਕੋਡ ਮਿਲ ਗਿਆ ਹੈ" - -#~ msgid "Circular table entry in GIF file" -#~ msgstr "GIF ਫਾਇਲ ਵਿੱਚ ਚੱਕਰੀ ਟੇਬਲ ਐਂਟਰੀ" - -#~ msgid "Not enough memory to load GIF file" -#~ msgstr "GIF ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Not enough memory to composite a frame in GIF file" -#~ msgstr "GIF ਫਾਇਲ ਵਿੱਚ ਇੱਕ ਫਰੇਮ ਬਣਾਉਣ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "GIF image is corrupt (incorrect LZW compression)" -#~ msgstr "GIF ਚਿੱਤਰ ਨਕਾਰਾ ਹੈ (ਗਲਤ LZW ਨਪੀੜੀ)" - -#~ msgid "File does not appear to be a GIF file" -#~ msgstr "ਫਾਇਲ ਇੱਕ GIF ਫਾਇਲ ਲੱਗ ਨਹੀਂ ਰਹੀ ਹੈ" - -#~ msgid "Version %s of the GIF file format is not supported" -#~ msgstr "GIF ਫਾਇਲ ਫਾਰਮੈਟ ਦਾ ਵਰਜਨ %s ਮੱਦਦ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੈ" +#~ msgid "Trough Side Details" +#~ msgstr "ਬਾਹੀ ਵੇਰਵੇ ਰਾਹੀਂ" #~ msgid "" -#~ "GIF image has no global colormap, and a frame inside it has no local " -#~ "colormap." +#~ "When TRUE, the parts of the trough on the two sides of the slider are " +#~ "drawn with different details" +#~ msgstr "ਜੇ ਠੀਕ ਸੈੱਟ ਕੀਤਾ ਤਾਂ ਸਲਾਈਡਰ ਦੇ ਦੋਵੇਂ ਪਾਸਿਆਂ ਦੇ ਭਾਗਾਂ ਉੱਤੇ ਵੱਖ ਵੱਖ ਵੇਰਵਾ ਵਾਹਿਆ ਜਾਵੇਗਾ" + +#~| msgid "Position Set" +#~ msgid "Stepper Position Details" +#~ msgstr "ਸਟਿੱਪਰ ਸਥਿਤੀ ਵੇਰਵਾ" + +#~ msgid "" +#~ "When TRUE, the detail string for rendering the steppers is suffixed with " +#~ "position information" #~ msgstr "" -#~ "GIF ਚਿੱਤਰ ਕੋਲ ਗਲੋਬਲ ਰੰਗ-ਨਕਸ਼ਾ ਨਹੀਂ ਅਤੇ ਇਸ ਦੇ ਫਰੇਮ ਅੰਦਰ ਆਪਣਾ ਕੋਈ ਲੋਕਲ ਰੰਗ-ਨਕਸ਼ਾ ਨਹੀਂ ਹੈ।" +#~ "ਜੇ ਸਹੀਂ ਹੈ ਤਾਂ ਸਟਿੱਪਰ ਰੈਡਰ ਕਰਨ ਲਈ ਵੇਰਵਾ ਲਾਈ ਨੂੰ ਸਥਿਤੀ ਜਾਣਕਾਰੀ ਦੇ ਅੱਗੇ ਜੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ" -#~ msgid "GIF image was truncated or incomplete." -#~ msgstr "GIF ਚਿੱਤਰ ਦੀ ਕੱਟ-ਵੱਢ ਕੀਤੀ ਗਈ ਹੈ ਜਾਂ ਪੂਰਾ ਨਹੀਂ ਹੈ।" +#~ msgid "Blinking" +#~ msgstr "ਝਪਕਣਾ" -#~ msgid "The GIF image format" -#~ msgstr "GIF ਚਿੱਤਰ ਫਾਰਮੈਟ" +#~ msgid "Whether or not the status icon is blinking" +#~ msgstr "ਕੀ ਹਾਲਤ ਆਈਕਾਨ ਝਪਕਦਾ ਹੋਵੇ ਜਾਂ ਨਾ" -#~ msgid "Invalid header in icon" -#~ msgstr "ਆਈਕਾਨ ਵਿੱਚ ਗਲਤ ਹੈਂਡਰ" +#~ msgid "Background stipple mask" +#~ msgstr "ਬੈਕਗਰਾਊਂਡ ਦੀ ਚਿੱਤਰਕਾਰੀ ਦਾ ਮਖੌਟਾ" -#~ msgid "Not enough memory to load icon" -#~ msgstr "ਆਈਕਾਨ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" +#~ msgid "Bitmap to use as a mask when drawing the text background" +#~ msgstr "ਬਿੱਟਮੈਪ ਜੋ ਕਿ ਮਖੌਟੇ ਦੇ ਤੌਰ ਤੇ ਵਰਤਿਆ ਜਾਵੇ, ਜਦੋਂ ਕਿ ਟੈਕਸਟ ਦੀ ਬੈਕਗਰਾਊਂਡ ਖਿੱਚਣੀ ਹੋਵੇ" -#~ msgid "Icon has zero width" -#~ msgstr "ਆਈਕਾਨ ਦੀ ਸਿਫ਼ਰ ਚੌੜਾਈ" +#~ msgid "Foreground stipple mask" +#~ msgstr "ਫਾਰਗਰਾਊਂਡ ਚਿੱਤਰਕਾਰੀ ਦਾ ਮਖੌਟਾ" -#~ msgid "Icon has zero height" -#~ msgstr "ਆਈਕਾਨ ਦੀ ਸਿਫ਼ਰ ਉਚਾਈ" +#~ msgid "Bitmap to use as a mask when drawing the text foreground" +#~ msgstr "ਬਿੱਟਮੈਪ ਜੋ ਕਿ ਮਖੌਟੇ ਦੇ ਤੌਰ ਤੇ ਵਰਤਿਆ ਜਾਵੇ ਜਦੋਂ ਕਿ ਟੈਕਸਟ ਦੇ ਅੱਗੇ ਖਿੱਚਣਾ ਹੋਵੇ" -#~ msgid "Compressed icons are not supported" -#~ msgstr "ਨਪੀੜੇ ਆਈਕਾਨ ਮੱਦਦ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹਨ" +#~ msgid "Background stipple set" +#~ msgstr "ਬੈਕਗਰਾਊਂਡ-ਚਿਤਰਣ ਸੈੱਟ ਕਰੋ" -#~ msgid "Unsupported icon type" -#~ msgstr "ਬਿਨ-ਮੱਦਦ ਪ੍ਰਾਪਤ ਆਈਕਾਨ ਕਿਸਮ" +#~ msgid "Whether this tag affects the background stipple" +#~ msgstr "ਕੀ ਇਹ ਟੈਗ ਬੈਕਗਰਾਊਂਡ-ਚਿਤਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#~ msgid "Not enough memory to load ICO file" -#~ msgstr "ICO ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" +#~ msgid "Foreground stipple set" +#~ msgstr "ਫਾਰਗਰਾਊਂਡ ਚਿਤਰਨ ਸੈੱਟ ਕਰੋ" -#~ msgid "Image too large to be saved as ICO" -#~ msgstr "ਚਿੱਤਰ ਇੰਨਾ ਵੱਡਾ ਹੈ ਕਿ ਇਸ ਨੂੰ ICO ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" +#~ msgid "Whether this tag affects the foreground stipple" +#~ msgstr "ਕੀ ਇਹ ਟੈਗ ਫਾਰਗਰਾਊਂਡ ਚਿਤਰਨ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇ" -#~ msgid "Cursor hotspot outside image" -#~ msgstr "ਕਰਸਰ ਬਿੰਦੂ ਚਿੱਤਰ ਤੋਂ ਬਾਹਰ" +#~ msgid "Row Ending details" +#~ msgstr "ਕਤਾਰ ਅੰਤ ਵੇਰਵਾ" -#~ msgid "Unsupported depth for ICO file: %d" -#~ msgstr "ICO ਚਿੱਤਰ ਲਈ ਬਿਨ-ਮੱਦਦ ਪ੍ਰਾਪਤ ਡੂੰਘਾਈ: %d" +#~ msgid "Enable extended row background theming" +#~ msgstr "ਫੈਲੀ ਕਤਾਰ ਬੈਕਗਰਾਊਂਡ ਸਰੂਪ ਯੋਗ" -#~ msgid "The ICO image format" -#~ msgstr "ICO ਚਿੱਤਰ ਫਾਰਮੈਟ" +#~ msgid "Draw Border" +#~ msgstr "ਬਾਰਡਰ ਬਣਾਓ" -#~ msgid "Error reading ICNS image: %s" -#~ msgstr "ICNS ਚਿੱਤਰ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: %s" +#~ msgid "Size of areas outside the widget's allocation to draw" +#~ msgstr "ਵਿਦਗਿਟ ਦੇ ਜਾਰੀ ਤੋਂ ਬਾਹਰ ਬਣਨ ਵਾਲੇ ਖੇਤਰ ਦਾ ਅਕਾਰ" -#~ msgid "Could not decode ICNS file" -#~ msgstr "ICNS ਫਾਇਲ ਡੀਕੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" +#~ msgid "Loop" +#~ msgstr "ਲੂਪ" -#~ msgid "The ICNS image format" -#~ msgstr "ICNS ਚਿੱਤਰ ਫਾਰਮੈਟ" +#~ msgid "Whether the animation should loop when it reaches the end" +#~ msgstr "ਜਦੋਂ ਐਨੀਮੇਸ਼ਨ ਖਤਮ ਹੋ ਜਾਵੇ ਤਾਂ ਕੀ ਮੁੜ ਚਾਲੂ ਕਰੇ" -#~ msgid "Couldn't allocate memory for stream" -#~ msgstr "ਸਟਰੀਮ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" +#~ msgid "Number of Channels" +#~ msgstr "ਚੈਨਲਾਂ ਦੀ ਗਿਣਤੀ" -#~ msgid "Couldn't decode image" -#~ msgstr "ਚਿੱਤਰ ਡੀਕੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" +#~ msgid "The number of samples per pixel" +#~ msgstr "ਪ੍ਰਤੀ ਪਿਕਸਲ ਵਿੱਚ ਸੈਂਪਲਾਂ ਦੀ ਗਿਣਤੀ" -#~ msgid "Transformed JPEG2000 has zero width or height" -#~ msgstr "ਤਬਦੀਲ JPEG2000 ਦੀ ਸਿਫ਼ਰ ਚੌੜਾਈ ਜਾਂ ਉਚਾਈ ਹੈ।" +#~ msgid "Colorspace" +#~ msgstr "ਰੰਗ-ਸਪੇਸ" -#~ msgid "Image type currently not supported" -#~ msgstr "ਚਿੱਤਰ ਟਾਈਪ ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" +#~ msgid "The colorspace in which the samples are interpreted" +#~ msgstr "ਰੰਗ ਸਪੇਸ ਜਿਸ ਵਿੱਚ ਕਿ ਸੈਂਪਲ ਵੇਖੇ ਜਾ ਸਕਣਗੇ" -#~ msgid "Couldn't allocate memory for color profile" -#~ msgstr "ਰੰਗ ਪਰੋਫਾਇਲ ਲਈ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" +#~ msgid "Has Alpha" +#~ msgstr "ਐਲਫਾ ਹੈ" -#~ msgid "Insufficient memory to open JPEG 2000 file" -#~ msgstr "JPEG 2000 ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" +#~ msgid "Whether the pixbuf has an alpha channel" +#~ msgstr "ਕੀ ਪੈਕਸਬਫ ਵਿੱਚ ਐਲਫਾ ਚੈਨਲ ਹੈ" -#~ msgid "Couldn't allocate memory to buffer image data" -#~ msgstr "ਬਫਰ ਚਿੱਤਰ ਡਾਟਾ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ" +#~ msgid "Bits per Sample" +#~ msgstr "ਪ੍ਰਤੀ ਸੈਂਪਲ ਵਿੱਚ ਬਿੱਟ" -#~ msgid "The JPEG 2000 image format" -#~ msgstr "JPEG 2000 ਚਿੱਤਰ ਫਾਰਮੈਟ" +#~ msgid "The number of bits per sample" +#~ msgstr "ਪ੍ਰਤੀ ਸੈਂਪਲ ਵਿੱਚ ਬਿੱਟਾਂ ਦੀ ਗਿਣਤੀ" -#~ msgid "Error interpreting JPEG image file (%s)" -#~ msgstr "JPEG ਚਿੱਤਰ ਫਾਇਲ (%s) ਦੀ ਪੇਸ਼ਕਾਰੀ ਵਿੱਚ ਗਲਤੀ" +#~ msgid "The number of columns of the pixbuf" +#~ msgstr "ਪੈਕਸਬਫ ਵਿੱਚ ਕਾਲਮਾਂ ਦੀ ਗਿਣਤੀ" + +#~ msgid "The number of rows of the pixbuf" +#~ msgstr "ਪੈਕਸਬਫ ਵਿੱਚ ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ" + +#~ msgid "Rowstride" +#~ msgstr "ਕਤਾਰਾਂ" #~ msgid "" -#~ "Insufficient memory to load image, try exiting some applications to free " -#~ "memory" +#~ "The number of bytes between the start of a row and the start of the next " +#~ "row" +#~ msgstr "ਇਸ ਕਤਾਰ ਦੇ ਸ਼ੁਰੂ ਅਤੇ ਅਗਲੀ ਕਤਾਰ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਬਿੱਟਾਂ ਦੀ ਗਿਣਤੀ" + +#~ msgid "Pixels" +#~ msgstr "ਪਿਕਸਲ" + +#~ msgid "A pointer to the pixel data of the pixbuf" +#~ msgstr "ਪੈਕਸਬਫ ਵਿੱਚ ਪਿਕਸਲ ਡਾਟਾ ਲਈ ਸੰਕੇਤਕ" + +#~ msgid "The GdkFont that is currently selected" +#~ msgstr "GdkFont ਜੋ ਹੁਣ ਚੁਣੇ ਗਏ ਹਨ" + +#~ msgid "Activity mode" +#~ msgstr "ਐਕਟਵਿਟੀ ਮੋਡ" + +#~ msgid "" +#~ "If TRUE, the GtkProgress is in activity mode, meaning that it signals " +#~ "something is happening, but not how much of the activity is finished. " +#~ "This is used when you're doing something but don't know how long it will " +#~ "take." #~ msgstr "" -#~ "ਚਿੱਤਰ ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ, ਕੁਝ ਕਾਰਜਾਂ ਨੂੰ ਬੰਦ ਕਰਕੇ ਮੈਮੋਰੀ ਖਾਲੀ ਕਰੋ" - -#~ msgid "Unsupported JPEG color space (%s)" -#~ msgstr "JPEG ਰੰਗ ਸਪੇਸ (%s) ਮੱਦਦ ਪ੍ਰਾਪਤ ਨਹੀ" - -#~ msgid "Couldn't allocate memory for loading JPEG file" -#~ msgstr "JPEG ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ" - -#~ msgid "Transformed JPEG has zero width or height." -#~ msgstr "ਤਬਦੀਲ JPEG ਦੀ ਸਿਫ਼ਰ ਚੌੜਾਈ ਜਾਂ ਉਚਾਈ ਹੈ।" +#~ "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ GtkProgress ਸਰਗਰਮ ਹੋਵੇਗਾ , ਇਸ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਸੰਕੇਤ ਤਾਂ ਦੇਵੇਗਾ ਕਿ " +#~ "ਕੁਝ ਹੋ ਰਿਹਾ ਹੈ, ਪਰ ਇਹ ਨਹੀਂ ਦੱਸੇਗਾ ਕਿ ਕਾਰਵਾਈ ਕਿੰਨੀ ਪੂਰੀ ਹੋ ਗਈ ਹੈ ਇਹ ਤਾਂ ਹੀ ਵਰਤਿਆ " +#~ "ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਕਿ ਤੁਸੀਂ ਕੁਝ ਕਰ ਰਹੇ ਹੋ, ਜਿਸ ਦੇ ਪੂਰਾ ਹੋਣ ਦੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।" #~ msgid "" -#~ "JPEG quality must be a value between 0 and 100; value '%s' could not be " -#~ "parsed." +#~ "The maximum number of items to be returned by gtk_recent_manager_get_items" +#~ "()" #~ msgstr "" -#~ "JPEG ਗੁਣ ਦਾ ਮੁੱਲ ੦ ਤੇ ੧੦੦ ਹੋਣਾ ਜ਼ਰੂਰੀ ਹੈ; ਮੁੱਲ '%s' ਨੂੰ ਪਾਰਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।" +#~ "gtk_recent_manager_get_items() ਰਾਹੀਂ ਵਾਪਿਸ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਆਈਟਮਾਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ " +#~ "ਗਿਣਤੀ" + +#~ msgid "Allow Shrink" +#~ msgstr "ਸੁੰਘੜਨਾ ਮਨਜ਼ੂਰ" #~ msgid "" -#~ "JPEG quality must be a value between 0 and 100; value '%d' is not allowed." -#~ msgstr "JPEG ਗੁਣ ਦਾ ਮੁੱਲ ੦ ਤੇ ੧੦੦ ਹੋਣਾ ਜ਼ਰੂਰੀ ਹੈ; ਮੁੱਲ '%d' ਦੀ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਹੈ।" - -#~ msgid "The JPEG image format" -#~ msgstr "JPEG ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Couldn't allocate memory for header" -#~ msgstr "ਹੈਂਡਰ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ" - -#~ msgid "Couldn't allocate memory for context buffer" -#~ msgstr "ਹਿੱਸਾ ਬਫ਼ਰ ਲਈ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ" - -#~ msgid "Image has invalid width and/or height" -#~ msgstr "ਚਿੱਤਰ ਦੀ ਚੌੜਾਈ ਅਤੇ/ਜਾਂ ਉਚਾਈ ਗਲਤ ਹੈ" - -#~ msgid "Image has unsupported bpp" -#~ msgstr "ਚਿੱਤਰ ਵਿੱਚ ਬਿਨ-ਮੱਦਦ ਪ੍ਰਾਪਤ bpp ਹੈ" - -#~ msgid "Image has unsupported number of %d-bit planes" -#~ msgstr "ਚਿੱਤਰ ਵਿੱਚ ਬਿਨ-ਮੱਦਦ ਪ੍ਰਾਪਤ %d-ਬਿੱਟ ਪਲੇਨ ਦੀ ਗਿਣਤੀ ਹੈ" - -#~ msgid "Couldn't create new pixbuf" -#~ msgstr "ਨਵਾਂ ਪਿਕਬਫ਼ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਦਾ" - -#~ msgid "Couldn't allocate memory for line data" -#~ msgstr "ਲਾਈਨ ਡਾਟਾ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ" - -#~ msgid "Couldn't allocate memory for paletted data" -#~ msgstr "ਪਲੇਟਡ ਡਾਟਾ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ" - -#~ msgid "Didn't get all lines of PCX image" -#~ msgstr "PCX ਚਿੱਤਰ ਦੀਆਂ ਸਾਰੀਆਂ ਰੇਖਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਈਆ" - -#~ msgid "No palette found at end of PCX data" -#~ msgstr "PCX ਡਾਟਾ ਦੇ ਅਖੀਰ ਤੇ ਕੋਈ ਪਲੇਟਸ ਨਹੀਂ ਲੱਭਾ" - -#~ msgid "The PCX image format" -#~ msgstr "PCX ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Bits per channel of PNG image is invalid." -#~ msgstr "PNG ਚਿੱਤਰ ਵਿੱਚ ਬਿੱਟ ਪ੍ਰਤੀ ਚੈਨਲ ਗਲਤ ਹੈ" - -#~ msgid "Transformed PNG has zero width or height." -#~ msgstr "ਤਬਦੀਲ PNG ਦੀ ਸਿਫ਼ਰ ਚੌੜਾਈ ਜਾਂ ਉਚਾਈ ਹੈ" - -#~ msgid "Bits per channel of transformed PNG is not 8." -#~ msgstr "PNG ਦੇ ਬਿੱਟ ਪ੍ਰਤੀ ਚੈਨਲ 8 ਨਹੀਂ ਹੈ।" - -#~ msgid "Transformed PNG not RGB or RGBA." -#~ msgstr "ਤਬਦੀਲ PNG RGB ਜਾਂ RGBA ਨਹੀਂ ਹੈ।" - -#~ msgid "Transformed PNG has unsupported number of channels, must be 3 or 4." -#~ msgstr "ਤਬਦੀਲ PNG ਵਿੱਚ ਬਿਨ-ਮੱਦਦ ਪ੍ਰਾਪਤ ਚੈਨਲਾਂ ਦੀ ਗਿਣਤੀ, ਇਹ 3 ਜਾਂ 4 ਹੋਣੀ ਜ਼ਰੂਰੀ ਹੈ।" - -#~ msgid "Fatal error in PNG image file: %s" -#~ msgstr "PNG ਚਿੱਤਰ ਫਾਇਲ ਵਿੱਚ ਘਾਤਕ ਗਲਤੀ: %s" - -#~ msgid "Insufficient memory to load PNG file" -#~ msgstr "PNG ਫਾਇਲ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "" -#~ "Insufficient memory to store a %ld by %ld image; try exiting some " -#~ "applications to reduce memory usage" +#~ "If TRUE, the window has no mimimum size. Setting this to TRUE is 99% of " +#~ "the time a bad idea" #~ msgstr "" -#~ "%ld X %ld ਚਿੱਤਰ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ ਕੁਝ ਕਾਰਜ ਬੰਦ ਕਰਕੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ " -#~ "ਘੱਟ ਕਰੋ।" +#~ "ਜੇਕਰ ਸੱਚ ਹੈ ਤਾਂ, ਵਿੰਡੋ ਦਾ ਕੋਈ ਘੱਟੋ-ਘੱਟ ਅਕਾਰ ਨਹੀਂ ਹੋਵੇਗਾ ਇਸ ਨੂੰ ਸੱਚ ਕਰਨਾ 99% ਵਾਰੀ ਗਲਤ ਸੋਚ " +#~ "ਹੈ ।" -#~ msgid "Fatal error reading PNG image file" -#~ msgstr "PNG ਚਿੱਤਰ ਫਾਇਲ ਪੜ੍ਹਨ ਵਿੱਚ ਘਾਤਕ ਗਲਤੀ" +#~ msgid "Allow Grow" +#~ msgstr "ਫੈਲਣਾ ਮਨਜ਼ੂਰ" -#~ msgid "Fatal error reading PNG image file: %s" -#~ msgstr "PNG ਚਿੱਤਰ ਫਾਇਲ ਪੜ੍ਹਨ ਵਿੱਚ ਘਾਤਕ ਗਲਤੀ: %s" +#~ msgid "If TRUE, users can expand the window beyond its minimum size" +#~ msgstr "ਜੇਕਰ ਸਹੀ ਹੈ ਤਾਂ, ਯੂਜ਼ਰ ਵਿੰਡੋ ਨੂੰ ਇਸ ਦੇ ਘੱਟੋ-ਘੱਟ ਸੀਮਾ ਤੋਂ ਵੱਧ ਫੈਲਾ ਸਕਦਾ ਹੈ " + +#~ msgid "Enable arrow keys" +#~ msgstr "ਤੀਰ ਸਵਿੱਚਾਂ ਯੋਗ ਕਰੋ" + +#~ msgid "Whether the arrow keys move through the list of items" +#~ msgstr "ਕੀ ਆਈਟਮਾਂ ਦੀ ਲਿਸਟ ਵਿੱਚ ਤੀਰ ਸਵਿੱਚਾਂ ਵਰਤਣੀਆਂ ਹਨ" + +#~ msgid "Always enable arrows" +#~ msgstr "ਹਮੇਸ਼ਾ ਤੀਰ ਯੋਗ ਕਰੋ" + +#~ msgid "Obsolete property, ignored" +#~ msgstr "ਪੁਰਾਣੀ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਰੱਦ ਕਰੋ" + +#~ msgid "Case sensitive" +#~ msgstr "ਸ਼ਬਦ ਆਕਾਰ ਪ੍ਰਤੀ ਸੰਵੇਦਸ਼ੀਲ" + +#~ msgid "Whether list item matching is case sensitive" +#~ msgstr "ਕੀ ਲਿਸਟ ਆਈਟਮਾਂ ਸ਼ਬਦ ਦੇ ਆਕਾਰ ਨੂੰ ਮੇਲ ਕਰੇ" + +#~ msgid "Allow empty" +#~ msgstr "ਖਾਲੀ ਮਨਜ਼ੂਰ" + +#~ msgid "Whether an empty value may be entered in this field" +#~ msgstr "ਕੀ ਇਸ ਖਾਨੇ ਵਿੱਚ ਖਾਲੀ ਮੁੱਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ" + +#~ msgid "Value in list" +#~ msgstr "ਲਿਸਟ ਵਿੱਚ ਮੁੱਲ" + +#~ msgid "Whether entered values must already be present in the list" +#~ msgstr "ਕੀ ਦਿੱਤਾ ਮੁੱਲ ਲਿਸਟ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੋ ਸਕਦਾ ਹੈ " + +#~ msgid "Is this curve linear, spline interpolated, or free-form" +#~ msgstr "ਕੀ ਇਹ ਚਾਪ ਸਿੱਧੀ ਹੈ, ਜਾਂ ਬੇਢੰਗੀ ਹੈ" + +#~ msgid "Minimum X" +#~ msgstr "ਘੱਟੋ-ਘੱਟ X" + +#~ msgid "Minimum possible value for X" +#~ msgstr "ਘੱਟੋ-ਘੱਟ ਸੰਭਵ X ਦਾ ਮੁੱਲ" + +#~ msgid "Maximum X" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ X" + +#~ msgid "Maximum possible X value" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਸੰਭਵ X ਦਾ ਮੁੱਲ" + +#~ msgid "Minimum Y" +#~ msgstr "ਘੱਟੋ-ਘੱਟ X" + +#~ msgid "Minimum possible value for Y" +#~ msgstr "ਘੱਟੋ-ਘੱਟ ਸੰਭਵ Y ਦਾ ਮੁੱਲ" + +#~ msgid "Maximum Y" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ Y" + +#~ msgid "Maximum possible value for Y" +#~ msgstr "ਵੱਧ ਤੋਂ ਵੱਧ ਸੰਭਵ Y ਦਾ ਮੁੱਲ" + +#~ msgid "File System Backend" +#~ msgstr "ਫਾਇਲ ਸਿਸਟਮ ਬੈਕਐਡ" + +#~ msgid "Name of file system backend to use" +#~ msgstr "ਵਰਤਣ ਵਾਲੇ ਫਾਇਲ ਸਿਸਟਮ ਬੈਕਐਡ ਦਾ ਨਾਂ" + +#~ msgid "The currently selected filename" +#~ msgstr "ਮੌਜੂਦਾ ਚੁਣਿਆ ਫਾਇਲ-ਨਾਂ" + +#~ msgid "Show file operations" +#~ msgstr "ਫਾਇਲ ਕਾਰਵਾਈ ਵੇਖੋ" + +#~ msgid "Whether buttons for creating/manipulating files should be displayed" +#~ msgstr "ਕੀ ਫਾਇਲਾਂ ਨੂੰ ਬਣਾਉਣ/ਵਰਤਣ ਲਈ ਬਟਨ ਵੇਖਾਏ ਜਾਣ" + +#~ msgid "Tab Border" +#~ msgstr "ਟੈਬ ਹਾਸ਼ੀਆ" + +#~ msgid "Width of the border around the tab labels" +#~ msgstr "ਟੈਬ ਲੇਬਲਾਂ ਦੁਆਲੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#~ msgid "Horizontal Tab Border" +#~ msgstr "ਲੇਟਵਾਂ ਟੈਬ ਹਾਸ਼ੀਆ" + +#~ msgid "Width of the horizontal border of tab labels" +#~ msgstr "ਟੈਬ ਲੇਬਲ ਦਾ ਲੇਟਵੇ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#~ msgid "Vertical Tab Border" +#~ msgstr "ਲੰਬਕਾਰੀ ਟੈਬ ਹਾਸ਼ੀਆ" + +#~ msgid "Width of the vertical border of tab labels" +#~ msgstr "ਟੈਬ ਲੇਬਲ ਦਾ ਲੰਬਕਾਰੀ ਹਾਸ਼ੀਏ ਦੀ ਚੌੜਾਈ" + +#~ msgid "Whether tabs should have homogeneous sizes" +#~ msgstr "ਕੀ ਟੈਬਾਂ ਇਕੋ ਅਕਾਰ ਦੀਆ ਹੋਣ" + +#~ msgid "Group ID for tabs drag and drop" +#~ msgstr "ਟੈਬ ਚੁੱਕਣ ਅਤੇ ਸੁੱਟਣ ਲਈ ਗਰੁੱਪ ID" + +#~ msgid "User Data" +#~ msgstr "ਯੂਜ਼ਰ ਡਾਟਾ" + +#~ msgid "Anonymous User Data Pointer" +#~ msgstr "ਅਗਿਆਤ ਯੂਜ਼ਰ ਡਾਟਾ ਸੰਕੇਤਕ" + +#~ msgid "The menu of options" +#~ msgstr "ਚੋਣ ਦੀ ਮੇਨੂ" + +#~ msgid "Size of dropdown indicator" +#~ msgstr "ਹੇਠ-ਡਿੱਗਣ ਵਾਲੇ ਸੰਕੇਤਕ ਦਾ ਅਕਾਰ" + +#~ msgid "Spacing around indicator" +#~ msgstr "ਸੰਕੇਤਕ ਦੇ ਦੁਆਲੇ ਖਾਲੀ ਥਾਂ" #~ msgid "" -#~ "Keys for PNG text chunks must have at least 1 and at most 79 characters." -#~ msgstr "PNG ਵਿੱਚ ਪਾਠ ਹੋਣ ਲਈ ਅੱਖਰਾਂ ਦੀ ਗਿਣਤੀ ਘੱਟੋ-ਘੱਟੋ ੧ ਅਤੇ ਵੱਧੋ-ਵੱਧ ੭੯ ਹੋ ਸਕਦੀ ਹੈ।" +#~ "Whether the preview widget should take up the entire space it is allocated" +#~ msgstr "ਕੀ ਝਲਕ ਵਿਦਗਿਟ ਸਾਰੀ ਉਪਲੱਬਧ ਥਾਂ ਨੂੰ ਵਰਤ ਲਵੇ" -#~ msgid "Keys for PNG text chunks must be ASCII characters." -#~ msgstr "PNG ਪਾਠ ਲਈ ਅੱਖਰ ASCII ਅੱਖਰ ਹੋਣੇ ਜ਼ਰੂਰੀ ਹਨ" +#~ msgid "The GtkAdjustment connected to the progress bar (Deprecated)" +#~ msgstr "GtkAdjustment ਤਰੱਕੀ-ਪੱਟੀ ਨਾਲ ਜੁੜਿਆ ਹੈ (ਹਟਾਉਣ ਲਈ)" -#~ msgid "Color profile has invalid length %d." -#~ msgstr "ਰੰਗ ਪਰੋਫਾਇਲ ਦੀ ਅਢੁੱਕਵੀਂ ਲੰਬਾਈ %d ਹੈ।" +#~ msgid "Bar style" +#~ msgstr "ਬਾਰ ਸਟਾਇਲ" #~ msgid "" -#~ "PNG compression level must be a value between 0 and 9; value '%s' could " -#~ "not be parsed." +#~ "Specifies the visual style of the bar in percentage mode (Deprecated)" +#~ msgstr "ਬਾਰ ਦੀ ਵੇਖਣ-ਸਟਾਇਲ ਪ੍ਰਤੀਸ਼ਤ ਦੇ ਰੂਪ ਵਿੱਚ ਸੈੱਟ ਕਰੋ (ਬਰਤਰਫ਼)" + +#~ msgid "Activity Step" +#~ msgstr "ਐਕਟਵਿਟੀ ਸਟੈਪ" + +#~ msgid "The increment used for each iteration in activity mode (Deprecated)" +#~ msgstr "ਸਰਗਰਮ ਮੋਡ ਵਿੱਚ ਹਰੇਕ ਦੁਹਰਾਉ ਲਈ ਵਾਧਾ (ਪ੍ਰਤੀਕੂਲ)" + +#~ msgid "Activity Blocks" +#~ msgstr "ਐਕਟਵਿਟੀ ਬਲਾਕ" + +#~ msgid "" +#~ "The number of blocks which can fit in the progress bar area in activity " +#~ "mode (Deprecated)" #~ msgstr "" -#~ "PNG ਨਪੀੜਨ ਪੱਧਰ ਦਾ ਮੁੱਲ 0 ਤੋਂ 9 ਦੇ ਵਿੱਚ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਮੁੱਲ '%s' ਨੂੰ ਪਾਰਸ ਨਹੀਂ ਕੀਤਾ " -#~ "ਜਾ ਸਕਿਆ।" +#~ "ਐਕਟਵਿਟੀ ਮੋਡ ਵਿੱਚ ਤਰੱਕੀ-ਪੱਟੀ ਦੇ ਖੇਤਰ ਵਿੱਚ ਸਮਾ ਸਕਣ ਵਾਲੇ ਬਲਾਕਾਂ ਦੀ ਗਿਣਤੀ (ਪ੍ਰਤੀਕੂਲ)" + +#~ msgid "Discrete Blocks" +#~ msgstr "ਖੰਡਿਤ ਬਲਾਕ" #~ msgid "" -#~ "PNG compression level must be a value between 0 and 9; value '%d' is not " -#~ "allowed." +#~ "The number of discrete blocks in a progress bar (when shown in the " +#~ "discrete style)" #~ msgstr "" -#~ "PNG ਨਪੀੜਨ ਪੱਧਰ ਦਾ ਮੁੱਲ 0 ਤੋਂ 9 ਦੇ ਵਿੱਚ ਹੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਮੁੱਲ '%d' ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ।" +#~ "ਸਰਗਰਮੀ ਮੋਡ ਵਿੱਚ ਤਰੱਕੀ-ਪੱਟੀ ਦੇ ਖੇਤਰ ਵਿੱਚ ਸਮਾ ਸਕਣ ਵਾਲੇ ਖੰਡਿਤ ਬਲਾਕਾਂ ਦੀ ਗਿਣਤੀ (ਪ੍ਰਤੀਕੂਲ)" -#~ msgid "" -#~ "Value for PNG text chunk %s cannot be converted to ISO-8859-1 encoding." -#~ msgstr "PNG ਟੈਕਸਟ %s ਦਾ ਮੁੱਲ ਨੂੰ ISO-੮੮੫੯-੧ ਇੰਕੋਡਿੰਗ ਵਿੱਚ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।" +#~ msgid "Horizontal adjustment for the text widget" +#~ msgstr "ਟੈਕਸਟ ਵਿਦਗਿਟ ਲਈ ਲੇਟਵੀ ਅਨਕੂਲਤਾ" -#~ msgid "The PNG image format" -#~ msgstr "PNG ਫਾਇਲ ਫਾਰਮੈਟ" +#~ msgid "Vertical adjustment for the text widget" +#~ msgstr "ਟੈਕਸਟ ਵਿਦਗਿਟ ਲਈ ਲੰਬਕਾਰੀ ਅਨਕੂਲਤਾ" -#~ msgid "PNM loader expected to find an integer, but didn't" -#~ msgstr "PNM ਲੋਡਰ ਲਈ ਪੂਰਨ ਅੰਕ ਲੋੜੀਦਾ ਸੀ, ਪਰ ਮਿਲਿਆ ਨਹੀ" +#~ msgid "Line Wrap" +#~ msgstr "ਸਤਰ ਲੇਪਟੋ" -#~ msgid "PNM file has an incorrect initial byte" -#~ msgstr "PNM ਫਾਇਲ ਵਿੱਚ ਮੁਢਲਾ ਬਾਈਟ ਗਲਤ ਹੈ" +#~ msgid "Whether lines are wrapped at widget edges" +#~ msgstr "ਕੀ ਵਿਦਗਿਟ ਕਿਨਾਰੇ ਤੇ ਸਤਰ ਲੇਪਟੀ ਜਾਏ" -#~ msgid "PNM file is not in a recognized PNM subformat" -#~ msgstr "PNM ਫਾਇਲ ਇੱਕ ਪਛਾਣਯੋਗ PNM ਸਬ-ਫਾਰਮੈਟ ਨਹੀਂ ਹੈ" +#~ msgid "Word Wrap" +#~ msgstr "ਸ਼ਬਦ ਲੇਪਟੋ" -#~ msgid "PNM file has an image width of 0" -#~ msgstr "PNM ਫਾਇਲ ਵਿੱਚ ਚਿੱਤਰ ਦੀ ਚੌੜਾਈ 0 ਹੈ" +#~ msgid "Whether words are wrapped at widget edges" +#~ msgstr "ਕੀ ਵਿਦਗਿਟ ਕਿਨਾਰੇ ਤੇ ਸ਼ਬਦ ਲੇਪਟਿਆ ਜਾਏ" -#~ msgid "PNM file has an image height of 0" -#~ msgstr "PNM ਫਾਇਲ ਵਿੱਚ ਚਿੱਤਰ ਦੀ ਉਚਾਈ 0 ਹੈ" +#~ msgid "Tooltips" +#~ msgstr "ਸੰਦ-ਸੰਕੇਤ" -#~ msgid "Maximum color value in PNM file is 0" -#~ msgstr "PNM ਫਾਇਲ ਵਿੱਚ ਅਧਿਕਤਮ ਰੰਗ ਮੁੱਲ 0 ਹੈ" - -#~ msgid "Maximum color value in PNM file is too large" -#~ msgstr "PNM ਫਾਇਲ ਵਿੱਚ ਅਧਿਕਤਮ ਰੰਗ ਮੁੱਲ ਬਹੁਤ ਜਿਆਦਾ ਹੈ" - -#~ msgid "Raw PNM image type is invalid" -#~ msgstr "ਅਣਘੜ-PNM ਚਿੱਤਰ ਕਿਸਮ ਠੀਕ ਨਹੀਂ ਹੈ" - -#~ msgid "PNM image loader does not support this PNM subformat" -#~ msgstr "PNM ਚਿੱਤਰ ਲੋਡਰ, ਇਸ PNM ਸਬ-ਫਾਰਮੈਟ ਮੱਦਦ ਨਹੀਂ ਦੇ ਰਿਹਾ ਹੈ" - -#~ msgid "Raw PNM formats require exactly one whitespace before sample data" -#~ msgstr "ਅਨਘੜ PNM ਫਾਰਮੈਟ ਲਈ ਇੱਕ ਸੈਂਪਲ ਡਾਟਾ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਸਫੈਦ ਥਾਂ ਲੋੜੀਦੀ ਹੈ" - -#~ msgid "Cannot allocate memory for loading PNM image" -#~ msgstr "PNM ਚਿੱਤਰ ਲੋਡਿੰਗ ਲਈ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕਰ ਸਕਿਆ" - -#~ msgid "Insufficient memory to load PNM context struct" -#~ msgstr "PNM context struct ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Unexpected end of PNM image data" -#~ msgstr "PNM ਚਿੱਤਰ ਡਾਟਾ ਦਾ ਅਨਿਸ਼ਚਿਤ ਅੰਤ" - -#~ msgid "Insufficient memory to load PNM file" -#~ msgstr "PNM ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "The PNM/PBM/PGM/PPM image format family" -#~ msgstr "PNM/PBM/PGM/PPM ਇੱਕ ਚਿੱਤਰ ਫਾਰਮੈਟ ਸਮੂਹ ਹੈ" - -#~ msgid "Input file descriptor is NULL." -#~ msgstr "ਇੰਪੁੱਟ ਫਾਇਲ ਵੇਰਵਾ NULL ਹੈ।" - -#~ msgid "Failed to read QTIF header" -#~ msgstr "QTIF ਹੈੱਡਰ ਪੜ੍ਹਨ ਲਈ ਫੇਲ੍ਹ" - -#~ msgid "QTIF atom size too large (%d bytes)" -#~ msgstr "QTIF ਐਟਮ ਆਕਾਰ ਬਹੁਤ ਵੱਡਾ ਹੈ (%d ਬਾਈਟ)" - -#~ msgid "Failed to allocate %d bytes for file read buffer" -#~ msgstr "ਫਾਇਲ ਬਫ਼ਰ ਦੇ %d ਬਾਈਟ ਜਾਰੀ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ" - -#~ msgid "File error when reading QTIF atom: %s" -#~ msgstr "QTIF ਐਟਮ ਪੜ੍ਹਨ ਦੌਰਾਨ ਫਾਇਲ ਗਲਤੀ: %s" - -#~ msgid "Failed to skip the next %d bytes with seek()." -#~ msgstr "ਅੱਗੇ %d ਬਾਈਟ seek() ਛੱਡਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" - -#~ msgid "Failed to allocate QTIF context structure." -#~ msgstr "QTIF context struct ਲਈ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Failed to create GdkPixbufLoader object." -#~ msgstr "GdkPixbufLoader ਆਬਜੈਕਟ ਬਣਾਉਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" - -#~ msgid "Failed to find an image data atom." -#~ msgstr "ਚਿੱਤਰ ਡਾਟਾ ਐਟਮ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" - -#~ msgid "The QTIF image format" -#~ msgstr "QTIF ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "RAS image has bogus header data" -#~ msgstr "RAS ਚਿੱਤਰ ਦਾ ਜਾਅਲੀ ਹੈਂਡਰ ਡਾਟਾ" - -#~ msgid "RAS image has unknown type" -#~ msgstr "RAS ਚਿੱਤਰ ਦੀ ਕਿਸਮ ਅਣਜਾਣ" - -#~ msgid "unsupported RAS image variation" -#~ msgstr "RAS ਚਿੱਤਰ ਪਰਿਵਰਤਨ ਬਿਨ-ਮੱਦਦ" - -#~ msgid "Not enough memory to load RAS image" -#~ msgstr "RAS ਚਿੱਤਰ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "The Sun raster image format" -#~ msgstr "ਸਨ ਰਾਸਟਰ ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Cannot allocate memory for IOBuffer struct" -#~ msgstr "IOBuffer ਢਾਂਚਾ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Cannot allocate memory for IOBuffer data" -#~ msgstr "IOBuffer ਡਾਟਾ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Cannot realloc IOBuffer data" -#~ msgstr "IOBuffer ਡਾਟਾ ਮੁੜ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" - -#~ msgid "Cannot allocate temporary IOBuffer data" -#~ msgstr "IOBuffer ਡਾਟਾ ਲਈ ਆਰਜ਼ੀ ਜਾਰੀ ਨਹੀਂ ਹੋ ਸਕਿਆ" - -#~ msgid "Cannot allocate new pixbuf" -#~ msgstr "ਨਵਾਂ ਪਿਕਬਫ਼ ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" - -#~ msgid "Image is corrupted or truncated" -#~ msgstr "ਚਿੱਤਰ ਨਿਕਾਰਾ ਜਾਂ ਛਾਂਗਿਆ ਹੈ" - -#~ msgid "Cannot allocate colormap structure" -#~ msgstr "ਰੰਗ-ਨਕਸ਼ਾ ਢਾਂਚਾ ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" - -#~ msgid "Cannot allocate colormap entries" -#~ msgstr "ਰੰਗ-ਨਕਸ਼ਾ ਐਂਟਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" - -#~ msgid "Unexpected bitdepth for colormap entries" -#~ msgstr "ਰੰਗ-ਨਕਸ਼ਾ ਐਂਟਰੀ ਲਈ ਗਲਤ ਬਿੱਟ-ਡੂੰਘਾਈ" - -#~ msgid "Cannot allocate TGA header memory" -#~ msgstr "TGA ਹੈਂਡਰ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਹੋ ਸਕੀ" - -#~ msgid "TGA image has invalid dimensions" -#~ msgstr "TGA ਚਿੱਤਰ ਦਾ ਮਾਪ ਗਲਤ ਹੈ" - -#~ msgid "TGA image type not supported" -#~ msgstr "TGA ਚਿੱਤਰ ਟਾਈਪ ਮੱਦਦ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੈ" - -#~ msgid "Cannot allocate memory for TGA context struct" -#~ msgstr "TGA context struct ਲਈ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Excess data in file" -#~ msgstr "ਫਾਇਲ ਵਿੱਚ ਵੱਧ ਡਾਟਾ ਹੈ" - -#~ msgid "The Targa image format" -#~ msgstr "ਟਾਰਗ ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Could not get image width (bad TIFF file)" -#~ msgstr "ਚਿੱਤਰ ਦੀ ਚੌੜਾਈ ਮਿਲ ਨਹੀਂ (ਗਲਤ TIFF ਫਾਇਲ)" - -#~ msgid "Could not get image height (bad TIFF file)" -#~ msgstr "ਚਿੱਤਰ ਦੀ ਉਚਾਈ ਮਿਲ ਨਹੀਂ (ਗਲਤ TIFF ਫਾਇਲ)" - -#~ msgid "Width or height of TIFF image is zero" -#~ msgstr "TIFF ਚਿੱਤਰ ਦੀ ਉਚਾਈ ਜਾਂ ਚੌੜਾਈ ਸਿਫ਼ਰ ਹੈ" - -#~ msgid "Dimensions of TIFF image too large" -#~ msgstr "TIFF ਚਿੱਤਰ ਦਾ ਮਾਪ ਬਹੁਤ ਵੱਡਾ ਹੈ" - -#~ msgid "Insufficient memory to open TIFF file" -#~ msgstr "TIFF ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Failed to load RGB data from TIFF file" -#~ msgstr "TIFF ਫਾਇਲ ਤੋਂ RGB ਡਾਟਾ ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫ਼ਲ" - -#~ msgid "Failed to open TIFF image" -#~ msgstr "TIFF ਫਾਇਲ ਨੂੰ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫ਼ਲ" - -#~ msgid "TIFFClose operation failed" -#~ msgstr "TIFF ਬੰਦ ਕਰਨ ਦੀ ਕਾਰਵਾਈ ਅਸਫ਼ਲ" - -#~ msgid "Failed to load TIFF image" -#~ msgstr "TIFF ਚਿੱਤਰ ਲੋਡ ਅਸਫ਼ਲ" - -#~ msgid "Failed to save TIFF image" -#~ msgstr "TIFF ਚਿੱਤਰ ਸੰਭਾਲਣ ਲਈ ਅਸਫ਼ਲ" - -#~ msgid "TIFF compression doesn't refer to a valid codec." -#~ msgstr "TIFF ਕੰਪਰੈਸ਼ਨ ਢੁੱਕਵੇਂ codec ਨੂੰ ਨਹੀਂ ਦਰਸਾਉਂਦਾ।" - -#~ msgid "Failed to write TIFF data" -#~ msgstr "TIFF ਡਾਟਾ ਲਿਖਣ ਲਈ ਅਸਫ਼ਲ" - -#~ msgid "Couldn't write to TIFF file" -#~ msgstr "TIFF ਫਾਇਲ ਵਿੱਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#~ msgid "The TIFF image format" -#~ msgstr "TIFF ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Image has zero width" -#~ msgstr "ਚਿੱਤਰ ਦੀ ਚੌੜਾਈ ਸਿਫ਼ਰ" - -#~ msgid "Image has zero height" -#~ msgstr "ਚਿੱਤਰ ਦੀ ਉਚਾਈ ਸਿਫ਼ਰ" - -#~ msgid "Not enough memory to load image" -#~ msgstr "ਚਿੱਤਰ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Couldn't save the rest" -#~ msgstr "ਬਾਕੀ ਨੂੰ ਸੰਭਾਲ ਨਹੀਂ ਸਕਿਆ" - -#~ msgid "The WBMP image format" -#~ msgstr "WBMP ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Invalid XBM file" -#~ msgstr "ਗਲਤ XBM ਫਾਇਲ" - -#~ msgid "Insufficient memory to load XBM image file" -#~ msgstr "XBM ਚਿੱਤਰ ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Failed to write to temporary file when loading XBM image" -#~ msgstr "XBM ਚਿੱਤਰ ਲੋਡਿੰਗ ਦੌਰਾਨ ਆਰਜ਼ੀ ਫਾਇਲ ਲਿਖਣ ਵਿੱਚ ਅਸਫ਼ਲ" - -#~ msgid "The XBM image format" -#~ msgstr "XBM ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "No XPM header found" -#~ msgstr "ਕੋਈ XPM ਹੈਂਡਰ ਨਹੀਂ ਲੱਭਾ" - -#~ msgid "Invalid XPM header" -#~ msgstr "ਗਲਤ XPM ਹੈਂਡਰ" - -#~ msgid "XPM file has image width <= 0" -#~ msgstr "XPM ਫਾਇਲ ਵਿੱਚ ਚਿੱਤਰ ਦੀ ਚੌੜਾਈ<= 0" - -#~ msgid "XPM file has image height <= 0" -#~ msgstr "XPM ਫਾਇਲ ਵਿੱਚ ਚਿੱਤਰ ਦੀ ਉਚਾਈ<= 0" - -#~ msgid "XPM has invalid number of chars per pixel" -#~ msgstr "XPM ਵਿੱਚ ਅੱਖਰ ਪ੍ਰਤੀ ਪਿਕਸਲ ਦੀ ਗਿਣਤੀ ਗਲਤ ਹੈ" - -#~ msgid "XPM file has invalid number of colors" -#~ msgstr "XPM ਫਾਇਲ ਵਿੱਚ ਰੰਗ ਦੀ ਗਿਣਤੀ ਗਲਤ ਹੈ" - -#~ msgid "Cannot allocate memory for loading XPM image" -#~ msgstr "XPM ਲੋਡ ਕਰਨ ਲਈ ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਨਹੀਂ ਹੈ" - -#~ msgid "Cannot read XPM colormap" -#~ msgstr "XPM ਰੰਗ-ਨਕਸ਼ਾ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#~ msgid "Failed to write to temporary file when loading XPM image" -#~ msgstr "XPM ਚਿੱਤਰ ਦੀ ਲੋਡਿੰਗ ਦੌਰਾਨ ਆਰਜ਼ੀ ਫਾਇਲ ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ" - -#~ msgid "The XPM image format" -#~ msgstr "XPM ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "The EMF image format" -#~ msgstr "EMF ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "Could not allocate memory: %s" -#~ msgstr "ਲੋੜੀਦੀ ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ: %s" - -#~ msgid "Could not create stream: %s" -#~ msgstr "ਸਟਰੀਮ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕੀ: %s" - -#~ msgid "Could not seek stream: %s" -#~ msgstr "ਸਟਰੀਮ ਲਈ ਨਹੀਂ ਜਾ ਸਕੀ: %s" - -#~ msgid "Could not read from stream: %s" -#~ msgstr "ਸਟਰੀਮ ਤੋਂ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ: %s" - -#~ msgid "Couldn't load bitmap" -#~ msgstr "ਬਿੱਟਮੈਪ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" - -#~ msgid "Couldn't load metafile" -#~ msgstr "ਮੇਟਾਡਾਟਾ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" - -#~ msgid "Unsupported image format for GDI+" -#~ msgstr "GDI+ ਲਈ ਚਿੱਤਰ ਫਾਰਮੈਟ ਗ਼ੈਰ-ਸਹਾਇਕ" - -#~ msgid "Couldn't save" -#~ msgstr "ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" - -#~ msgid "The WMF image format" -#~ msgstr "WMF ਚਿੱਤਰ ਫਾਰਮੈਟ" - -#~ msgid "\"Deepness\" of the color." -#~ msgstr "ਰੰਗ ਦਾ \"ਗੂੜ੍ਹਾਪਨ\" ਹੈ।" - -#~ msgid "Error printing" -#~ msgstr "ਪਰਿੰਟਿੰਗ ਦੌਰਾਨ ਗਲਤੀ" - -#~ msgid "Printer '%s' may not be connected." -#~ msgstr "ਪਰਿੰਟਰ '%s' ਕੁਨੈਕਟ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।" - -#~ msgid "Folders" -#~ msgstr "ਫੋਲਡਰ" - -#~ msgid "Fol_ders" -#~ msgstr "ਫੋਲਡਰ(_d)" - -#~ msgid "Folder unreadable: %s" -#~ msgstr "ਫੋਲਡਰ ਨਾ-ਪੜ੍ਹਨਯੋਗ: %s" - -#~ msgid "" -#~ "The file \"%s\" resides on another machine (called %s) and may not be " -#~ "available to this program.\n" -#~ "Are you sure that you want to select it?" -#~ msgstr "" -#~ "ਫਾਇਲ \"%s\" ਹੋਰ ਮਸ਼ੀਨ (ਨਾਂ %s) 'ਤੇ ਮੌਜੂਦ ਹੈ ਅਤੇ ਇਸ ਪਰੋਗਰਾਮ ਲਈ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।\n" -#~ "ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਚੁਣਨਾ ਚਾਹੁੰਦੇ ਹੋ?" - -#~ msgid "_New Folder" -#~ msgstr "ਨਵਾਂ ਫੋਲਡਰ(_N)" - -#~ msgid "De_lete File" -#~ msgstr "ਫਾਇਲ ਹਟਾਓ(_l)" - -#~ msgid "_Rename File" -#~ msgstr "ਫਾਇਲ ਨਾਂ-ਬਦਲੋ(_R)" - -#~ msgid "" -#~ "The folder name \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "ਫੋਲਡਰ ਨਾਂ \"%s\" ਵਿੱਚ ਉਹ ਨਿਸ਼ਾਨ ਹਨ, ਜੋ ਕਿ ਫਾਇਲ-ਨਾਂ ਵਿੱਚ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ" - -#~ msgid "New Folder" -#~ msgstr "ਨਵਾਂ ਫੋਲਡਰ" - -#~ msgid "_Folder name:" -#~ msgstr "ਫੋਲਡਰ ਨਾਂ(_F):" - -#~ msgid "C_reate" -#~ msgstr "ਬਣਾਓ(_r)" - -#~ msgid "" -#~ "The filename \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "ਫਾਇਲ ਨਾਂ \"%s\" ਵਿੱਚ ਉਹ ਨਿਸ਼ਾਨ ਹਨ, ਜੋ ਕਿ ਫਾਇਲ ਨਾਂ ਵਿੱਚ ਨਹੀਂ ਹੋ ਸਕਦੇ" - -#~ msgid "Error deleting file '%s': %s" -#~ msgstr "ਫਾਇਲ '%s' ਹਟਾਉਣ ਵਿੱਚ ਗਲਤੀ: %s" - -#~ msgid "Really delete file \"%s\"?" -#~ msgstr "ਕੀ ਫਾਇਲ \"%s\" ਹਟਾਉਣੀ ਹੈ?" - -#~ msgid "Delete File" -#~ msgstr "ਫਾਇਲ ਹਟਾਓ" - -#~ msgid "Error renaming file to \"%s\": %s" -#~ msgstr "ਫਾਇਲ ਨਾਂ \"%s\" ਬਦਲਣ ਵਿੱਚ ਗਲਤੀ: %s" - -#~ msgid "Error renaming file \"%s\": %s" -#~ msgstr "ਫਾਇਲ \"%s\" ਦਾ ਨਾਂ ਬਦਲਣ ਵਿੱਚ ਗਲਤੀ: %s" - -#~ msgid "Error renaming file \"%s\" to \"%s\": %s" -#~ msgstr "ਫਾਇਲ \"%s\" ਦਾ ਨਾਂ \"%s\" ਬਦਲਣ ਵਿੱਚ ਗਲਤੀ: %s" - -#~ msgid "Rename File" -#~ msgstr "ਫਾਇਲ ਨਾਂ-ਬਦਲੋ" - -#~ msgid "Rename file \"%s\" to:" -#~ msgstr "ਫਾਇਲ \"%s\" ਦਾ ਨਾਂ-ਬਦਲੋ:" - -#~ msgid "_Rename" -#~ msgstr "ਨਾਂ-ਬਦਲੋ(_R)" - -#~ msgid "_Selection: " -#~ msgstr "ਚੋਣ(_S): " - -#~ msgid "" -#~ "The filename \"%s\" couldn't be converted to UTF-8. (try setting the " -#~ "environment variable G_FILENAME_ENCODING): %s" -#~ msgstr "" -#~ "ਫਾਇਲ ਨਾਂ \"%s\" ਨੂੰ UTF-8 ਵਿੱਚ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। (ਇੰਵਾਇਰਮਿੰਟ ਵੇਰੀਬਲ " -#~ "G_BROKEN_FILENAMES ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ): %s" - -#~ msgid "Invalid UTF-8" -#~ msgstr "ਗਲਤ UTF-8" - -#~ msgid "Name too long" -#~ msgstr "ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ" - -#~ msgid "Couldn't convert filename" -#~ msgstr "ਫਾਇਲ-ਨਾਂ ਤਬਦੀਲ ਨਹੀਂ ਹੋ ਸਕਿਆ" - -#~ msgid "Gamma" -#~ msgstr "ਗਾਮਾ" - -#~ msgid "_Gamma value" -#~ msgstr "ਗਾਮਾ ਮੁੱਲ(_G)" - -#~ msgid "Input" -#~ msgstr "ਇੰਪੁੱਟ" - -#~ msgid "No extended input devices" -#~ msgstr "ਕੋਈ ਵਾਧੂ ਇੰਪੁੱਟ ਜੰਤਰ ਨਹੀਂ ਹੈ" - -#~ msgid "_Device:" -#~ msgstr "ਜੰਤਰ(_D):" - -#~ msgid "Disabled" -#~ msgstr "ਆਯੋਗ" - -#~ msgid "Screen" -#~ msgstr "ਸਕਰੀਨ" - -#~ msgid "Window" -#~ msgstr "ਵਿੰਡੋ" - -#~ msgid "_Mode:" -#~ msgstr "ਮੋਡ(_M):" - -#~ msgid "Axes" -#~ msgstr "ਧੁਰੇ" - -#~ msgid "Keys" -#~ msgstr "ਕੁੰਜੀਆਂ" - -#~ msgid "_X:" -#~ msgstr "_X:" - -#~ msgid "_Y:" -#~ msgstr "_Y:" - -#~ msgid "_Pressure:" -#~ msgstr "ਦਬਾਓ(_P):" - -#~ msgid "X _tilt:" -#~ msgstr "X _tilt" - -#~ msgid "Y t_ilt:" -#~ msgstr "Y t_ilt" - -#~ msgid "_Wheel:" -#~ msgstr "ਪਹੀਆ(_W):" - -#~ msgid "none" -#~ msgstr "ਕੋਈ ਨਹੀਂ" - -#~ msgid "(disabled)" -#~ msgstr "(ਆਯੋਗ)" - -#~ msgid "(unknown)" -#~ msgstr "(ਅਣਜਾਣ)" - -#~ msgid "Cl_ear" -#~ msgstr "ਸਾਫ਼ ਕਰੋ(_e)" - -#~ msgid "--- No Tip ---" -#~ msgstr "--- ਸੰਕੇਤ ਨਹੀਂ ---" - -#~ msgid "(Empty)" -#~ msgstr "(ਖਾਲੀ)" - -#, fuzzy -#~ msgid "_Search:" -#~ msgstr "ਖੋਜ(_S):" - -#, fuzzy -#~ msgid "Recently Used" -#~ msgstr "ਤਾਜ਼ਾ ਵਰਤੇ" +#~ msgid "If the tooltips of the toolbar should be active or not" +#~ msgstr "ਕੀ ਟੂਲਬਾਰ ਦੇ ਸੰਦ-ਸੰਕੇਤਾਂ ਨੂੰ ਸਰਗਰਮ ਕੀਤਾ ਜਾਵੇ ਜਾਂ ਨਾ" diff --git a/po/sv.po b/po/sv.po index 103139f3e0..f6946737dc 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gtk+\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-01 15:41-0400\n" -"PO-Revision-Date: 2010-08-06 14:11+0100\n" +"POT-Creation-Date: 2010-12-30 21:06+0100\n" +"PO-Revision-Date: 2010-12-30 21:15+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -18,366 +18,352 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: gdk/gdk.c:103 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" msgstr "Fel vid tolkning av flaggan --gdk-debug" -#: gdk/gdk.c:123 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" msgstr "Fel vid tolkning av flaggan --gdk-no-debug" #. Description of --class=CLASS in --help output -#: gdk/gdk.c:151 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "Programklass som den används av fönsterhanteraren" #. Placeholder in --class=CLASS in --help output -#: gdk/gdk.c:152 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "KLASS" #. Description of --name=NAME in --help output -#: gdk/gdk.c:154 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "Programnamn som det används av fönsterhanteraren" #. Placeholder in --name=NAME in --help output -#: gdk/gdk.c:155 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "NAMN" #. Description of --display=DISPLAY in --help output -#: gdk/gdk.c:157 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "X-display att använda" #. Placeholder in --display=DISPLAY in --help output -#: gdk/gdk.c:158 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "DISPLAY" -#. Description of --screen=SCREEN in --help output -#: gdk/gdk.c:160 -msgid "X screen to use" -msgstr "X-skärm att använda" - -#. Placeholder in --screen=SCREEN in --help output -#: gdk/gdk.c:161 -msgid "SCREEN" -msgstr "SKÄRM" - #. Description of --gdk-debug=FLAGS in --help output -#: gdk/gdk.c:164 -#, fuzzy +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" -msgstr "GTK+-felsökningsflaggor att ställa in" +msgstr "GDK-felsökningsflaggor att ställa in" #. Placeholder in --gdk-debug=FLAGS in --help output #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: gdk/gdk.c:165 gdk/gdk.c:168 gtk/gtkmain.c:533 gtk/gtkmain.c:536 +#: ../gdk/gdk.c:211 +#: ../gdk/gdk.c:214 +#: ../gtk/gtkmain.c:522 +#: ../gtk/gtkmain.c:525 msgid "FLAGS" msgstr "FLAGGOR" #. Description of --gdk-no-debug=FLAGS in --help output -#: gdk/gdk.c:167 -#, fuzzy +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" -msgstr "GTK+-felsökningsflaggor att inte ställa in" +msgstr "GDK-felsökningsflaggor att inte ställa in" -#: gdk/keyname-table.h:3940 +#: ../gdk/keyname-table.h:3940 msgctxt "keyboard label" msgid "BackSpace" msgstr "BackSpace" -#: gdk/keyname-table.h:3941 +#: ../gdk/keyname-table.h:3941 msgctxt "keyboard label" msgid "Tab" msgstr "Tabb" -#: gdk/keyname-table.h:3942 +#: ../gdk/keyname-table.h:3942 msgctxt "keyboard label" msgid "Return" msgstr "Retur" -#: gdk/keyname-table.h:3943 +#: ../gdk/keyname-table.h:3943 msgctxt "keyboard label" msgid "Pause" msgstr "Pause" -#: gdk/keyname-table.h:3944 +#: ../gdk/keyname-table.h:3944 msgctxt "keyboard label" msgid "Scroll_Lock" msgstr "Scroll_Lock" -#: gdk/keyname-table.h:3945 +#: ../gdk/keyname-table.h:3945 msgctxt "keyboard label" msgid "Sys_Req" msgstr "Sys_Req" -#: gdk/keyname-table.h:3946 +#: ../gdk/keyname-table.h:3946 msgctxt "keyboard label" msgid "Escape" msgstr "Escape" # Osäker. -#: gdk/keyname-table.h:3947 +#: ../gdk/keyname-table.h:3947 msgctxt "keyboard label" msgid "Multi_key" msgstr "Multi_key" -#: gdk/keyname-table.h:3948 +#: ../gdk/keyname-table.h:3948 msgctxt "keyboard label" msgid "Home" msgstr "Home" -#: gdk/keyname-table.h:3949 +#: ../gdk/keyname-table.h:3949 msgctxt "keyboard label" msgid "Left" msgstr "Vänster" -#: gdk/keyname-table.h:3950 +#: ../gdk/keyname-table.h:3950 msgctxt "keyboard label" msgid "Up" msgstr "Upp" -#: gdk/keyname-table.h:3951 +#: ../gdk/keyname-table.h:3951 msgctxt "keyboard label" msgid "Right" msgstr "Höger" -#: gdk/keyname-table.h:3952 +#: ../gdk/keyname-table.h:3952 msgctxt "keyboard label" msgid "Down" msgstr "Ned" -#: gdk/keyname-table.h:3953 +#: ../gdk/keyname-table.h:3953 msgctxt "keyboard label" msgid "Page_Up" msgstr "Page_Up" -#: gdk/keyname-table.h:3954 +#: ../gdk/keyname-table.h:3954 msgctxt "keyboard label" msgid "Page_Down" msgstr "Page_Down" -#: gdk/keyname-table.h:3955 +#: ../gdk/keyname-table.h:3955 msgctxt "keyboard label" msgid "End" msgstr "End" -#: gdk/keyname-table.h:3956 +#: ../gdk/keyname-table.h:3956 msgctxt "keyboard label" msgid "Begin" msgstr "Begin" -#: gdk/keyname-table.h:3957 +#: ../gdk/keyname-table.h:3957 msgctxt "keyboard label" msgid "Print" msgstr "Print" -#: gdk/keyname-table.h:3958 +#: ../gdk/keyname-table.h:3958 msgctxt "keyboard label" msgid "Insert" msgstr "Insert" -#: gdk/keyname-table.h:3959 +#: ../gdk/keyname-table.h:3959 msgctxt "keyboard label" msgid "Num_Lock" msgstr "Num_Lock" -#: gdk/keyname-table.h:3960 +#: ../gdk/keyname-table.h:3960 msgctxt "keyboard label" msgid "KP_Space" msgstr "KP_Space" -#: gdk/keyname-table.h:3961 +#: ../gdk/keyname-table.h:3961 msgctxt "keyboard label" msgid "KP_Tab" msgstr "KP_Tab" -#: gdk/keyname-table.h:3962 +#: ../gdk/keyname-table.h:3962 msgctxt "keyboard label" msgid "KP_Enter" msgstr "KP_Enter" -#: gdk/keyname-table.h:3963 +#: ../gdk/keyname-table.h:3963 msgctxt "keyboard label" msgid "KP_Home" msgstr "KP_Home" -#: gdk/keyname-table.h:3964 +#: ../gdk/keyname-table.h:3964 msgctxt "keyboard label" msgid "KP_Left" msgstr "KP_Left" -#: gdk/keyname-table.h:3965 +#: ../gdk/keyname-table.h:3965 msgctxt "keyboard label" msgid "KP_Up" msgstr "KP_Up" -#: gdk/keyname-table.h:3966 +#: ../gdk/keyname-table.h:3966 msgctxt "keyboard label" msgid "KP_Right" msgstr "KP_Right" -#: gdk/keyname-table.h:3967 +#: ../gdk/keyname-table.h:3967 msgctxt "keyboard label" msgid "KP_Down" msgstr "KP_Down" -#: gdk/keyname-table.h:3968 +#: ../gdk/keyname-table.h:3968 msgctxt "keyboard label" msgid "KP_Page_Up" msgstr "KP_Page_Up" -#: gdk/keyname-table.h:3969 +#: ../gdk/keyname-table.h:3969 msgctxt "keyboard label" msgid "KP_Prior" msgstr "KP_Prior" -#: gdk/keyname-table.h:3970 +#: ../gdk/keyname-table.h:3970 msgctxt "keyboard label" msgid "KP_Page_Down" msgstr "KP_Page_Down" -#: gdk/keyname-table.h:3971 +#: ../gdk/keyname-table.h:3971 msgctxt "keyboard label" msgid "KP_Next" msgstr "KP_Next" -#: gdk/keyname-table.h:3972 +#: ../gdk/keyname-table.h:3972 msgctxt "keyboard label" msgid "KP_End" msgstr "KP_End" -#: gdk/keyname-table.h:3973 +#: ../gdk/keyname-table.h:3973 msgctxt "keyboard label" msgid "KP_Begin" msgstr "KP_Begin" -#: gdk/keyname-table.h:3974 +#: ../gdk/keyname-table.h:3974 msgctxt "keyboard label" msgid "KP_Insert" msgstr "KP_Insert" -#: gdk/keyname-table.h:3975 +#: ../gdk/keyname-table.h:3975 msgctxt "keyboard label" msgid "KP_Delete" msgstr "KP_Delete" -#: gdk/keyname-table.h:3976 +#: ../gdk/keyname-table.h:3976 msgctxt "keyboard label" msgid "Delete" msgstr "Delete" #. Description of --sync in --help output -#: gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:54 msgid "Don't batch GDI requests" msgstr "Samla inte GDI-förfrågningar i en batch" #. Description of --no-wintab in --help output -#: gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:56 msgid "Don't use the Wintab API for tablet support" msgstr "Använd inte Wintab-API:t för stöd av ritbrädor" #. Description of --ignore-wintab in --help output -#: gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:58 msgid "Same as --no-wintab" msgstr "Samma som --no-wintab" #. Description of --use-wintab in --help output -#: gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:60 msgid "Do use the Wintab API [default]" msgstr "Använd inte Wintab-API:t [standard]" #. Description of --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:62 msgid "Size of the palette in 8 bit mode" msgstr "Storlek på paletten i 8-bitarsläge" #. Placeholder in --max-colors=COLORS in --help output -#: gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "COLORS" msgstr "FÄRGER" -#: gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "Startar %s" -#: gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "Öppnar %s" -#: gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "Öppnar %d objekt" msgstr[1] "Öppnar %d objekt" -#. Description of --sync in --help output -#: gdk/x11/gdkmain-x11.c:96 -msgid "Make X calls synchronous" -msgstr "Gör X-anrop synkrona" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:105 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" -msgstr "" +msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgstr "Detta program levereras utan NÅGON FORM AV GARANTI; besök %s för mer information" -#: gtk/gtkaboutdialog.c:339 gtk/gtkaboutdialog.c:2235 +#: ../gtk/gtkaboutdialog.c:347 msgid "License" msgstr "Licens" -#: gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:348 msgid "The license of the program" msgstr "Licensen för programmet" #. Add the credits button -#: gtk/gtkaboutdialog.c:621 +#: ../gtk/gtkaboutdialog.c:740 msgid "C_redits" msgstr "Ta_ck" #. Add the license button -#: gtk/gtkaboutdialog.c:635 +#: ../gtk/gtkaboutdialog.c:753 msgid "_License" msgstr "_Licens" -#: gtk/gtkaboutdialog.c:839 +#: ../gtk/gtkaboutdialog.c:958 msgid "Could not show link" msgstr "Kunde inte visa länken" -#: gtk/gtkaboutdialog.c:932 +#: ../gtk/gtkaboutdialog.c:995 +msgid "Homepage" +msgstr "Webbplats" + +#: ../gtk/gtkaboutdialog.c:1049 #, c-format msgid "About %s" msgstr "Om %s" -#: gtk/gtkaboutdialog.c:2153 -msgid "Credits" -msgstr "Tack" +#: ../gtk/gtkaboutdialog.c:2371 +msgid "Created by" +msgstr "Skapad av" -#: gtk/gtkaboutdialog.c:2185 -msgid "Written by" -msgstr "Skrivet av" - -#: gtk/gtkaboutdialog.c:2188 +#: ../gtk/gtkaboutdialog.c:2374 msgid "Documented by" msgstr "Dokumenterat av" -#: gtk/gtkaboutdialog.c:2200 +#: ../gtk/gtkaboutdialog.c:2384 msgid "Translated by" msgstr "Översatt av" -#: gtk/gtkaboutdialog.c:2204 +#: ../gtk/gtkaboutdialog.c:2389 msgid "Artwork by" msgstr "Grafik av" @@ -386,7 +372,7 @@ msgstr "Grafik av" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:160 msgctxt "keyboard label" msgid "Shift" msgstr "Skift" @@ -396,7 +382,7 @@ msgstr "Skift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:166 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -406,7 +392,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:172 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -416,7 +402,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:770 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -426,7 +412,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:783 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -436,37 +422,37 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:797 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:813 msgctxt "keyboard label" msgid "Space" msgstr "Blanksteg" -#: gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:816 msgctxt "keyboard label" msgid "Backslash" msgstr "Omvänt snedstreck" -#: gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkbuilderparser.c:343 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "Ogiltig typfunktion på rad %d: \"%s\"" -#: gtk/gtkbuilderparser.c:407 -#, fuzzy, c-format +#: ../gtk/gtkbuilderparser.c:407 +#, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "Duplikat objekt-id \"%s\" på rad %d (tidigare på rad %d)" -#: gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:859 #, c-format msgid "Invalid root element: '%s'" msgstr "Ogiltigt rotelement: \"%s\"" -#: gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:898 #, c-format msgid "Unhandled tag: '%s'" msgstr "Ohanterad tagg: \"%s\"" @@ -481,7 +467,7 @@ msgstr "Ohanterad tagg: \"%s\"" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: gtk/gtkcalendar.c:883 +#: ../gtk/gtkcalendar.c:882 msgid "calendar:MY" msgstr "calendar:MY" @@ -491,7 +477,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:921 +#: ../gtk/gtkcalendar.c:920 msgid "calendar:week_start:0" msgstr "calendar:week_start:1" @@ -500,7 +486,7 @@ msgstr "calendar:week_start:1" #. * #. * If you don't understand this, leave it as "2000" #. -#: gtk/gtkcalendar.c:2006 +#: ../gtk/gtkcalendar.c:1900 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -515,7 +501,8 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2037 gtk/gtkcalendar.c:2719 +#: ../gtk/gtkcalendar.c:1931 +#: ../gtk/gtkcalendar.c:2620 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -531,7 +518,8 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: gtk/gtkcalendar.c:2069 gtk/gtkcalendar.c:2579 +#: ../gtk/gtkcalendar.c:1963 +#: ../gtk/gtkcalendar.c:2488 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -547,7 +535,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: gtk/gtkcalendar.c:2361 +#: ../gtk/gtkcalendar.c:2253 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -555,7 +543,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:272 msgctxt "Accelerator" msgid "Disabled" msgstr "Inaktiverad" @@ -564,7 +552,7 @@ msgstr "Inaktiverad" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:282 msgctxt "Accelerator" msgid "Invalid" msgstr "Ogiltig" @@ -573,158 +561,133 @@ msgstr "Ogiltig" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: gtk/gtkcellrendereraccel.c:418 gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:418 +#: ../gtk/gtkcellrendereraccel.c:675 msgid "New accelerator..." msgstr "Ny snabbtangent..." -#: gtk/gtkcellrendererprogress.c:362 gtk/gtkcellrendererprogress.c:452 +#: ../gtk/gtkcellrendererprogress.c:362 +#: ../gtk/gtkcellrendererprogress.c:452 #, c-format msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: gtk/gtkcolorbutton.c:176 gtk/gtkcolorbutton.c:445 +#: ../gtk/gtkcolorbutton.c:188 +#: ../gtk/gtkcolorbutton.c:477 msgid "Pick a Color" msgstr "Välj en färg" -#: gtk/gtkcolorbutton.c:336 +#: ../gtk/gtkcolorbutton.c:366 msgid "Received invalid color data\n" msgstr "Mottog ogiltig färgdata\n" -#: gtk/gtkcolorsel.c:384 -msgid "" -"Select the color you want from the outer ring. Select the darkness or " -"lightness of that color using the inner triangle." -msgstr "" -"Välj den färg som du vill ha från den yttre ringen. Välj mörkheten eller " -"ljusheten på den färgen genom att använda den inre triangeln." +#: ../gtk/gtkcolorsel.c:415 +msgid "Select the color you want from the outer ring. Select the darkness or lightness of that color using the inner triangle." +msgstr "Välj den färg som du vill ha från den yttre ringen. Välj mörkheten eller ljusheten på den färgen genom att använda den inre triangeln." -#: gtk/gtkcolorsel.c:408 -msgid "" -"Click the eyedropper, then click a color anywhere on your screen to select " -"that color." -msgstr "" -"Klicka på pipetten, och klicka sedan på en färg någonstans på din skärm för " -"att välja den färgen." +#: ../gtk/gtkcolorsel.c:439 +msgid "Click the eyedropper, then click a color anywhere on your screen to select that color." +msgstr "Klicka på pipetten, och klicka sedan på en färg någonstans på din skärm för att välja den färgen." -#: gtk/gtkcolorsel.c:417 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" msgstr "_Nyans:" -#: gtk/gtkcolorsel.c:418 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "Position på färghjulet." -#: gtk/gtkcolorsel.c:420 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" msgstr "_Mättnad:" -#: gtk/gtkcolorsel.c:421 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "Intensiteten för färgen." -#: gtk/gtkcolorsel.c:422 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "_Värde:" -#: gtk/gtkcolorsel.c:423 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "Ljushet på färgen." -#: gtk/gtkcolorsel.c:424 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" msgstr "_Röd:" -#: gtk/gtkcolorsel.c:425 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "Mängd rött ljus i färgen." -#: gtk/gtkcolorsel.c:426 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" msgstr "_Grön:" -#: gtk/gtkcolorsel.c:427 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "Mängd grönt ljus i färgen." -#: gtk/gtkcolorsel.c:428 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "_Blå:" -#: gtk/gtkcolorsel.c:429 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "Mängd blått ljus i bilden." -#: gtk/gtkcolorsel.c:432 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "Op_acitet:" -#: gtk/gtkcolorsel.c:439 gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:470 +#: ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "Genomskinlighet för färgen." -#: gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "Färg_namn:" -#: gtk/gtkcolorsel.c:470 -msgid "" -"You can enter an HTML-style hexadecimal color value, or simply a color name " -"such as 'orange' in this entry." -msgstr "" -"Du kan ange ett hexadecimalt färgvärde i HTML-stil, eller helt enkelt ange " -"ett engelskt namn på färgen som exempelvis \"orange\" i detta fält." +#: ../gtk/gtkcolorsel.c:501 +msgid "You can enter an HTML-style hexadecimal color value, or simply a color name such as 'orange' in this entry." +msgstr "Du kan ange ett hexadecimalt färgvärde i HTML-stil, eller helt enkelt ange ett engelskt namn på färgen som exempelvis \"orange\" i detta fält." -#: gtk/gtkcolorsel.c:500 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "_Palett:" -#: gtk/gtkcolorsel.c:529 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "Färghjul" -#: gtk/gtkcolorsel.c:988 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now. You can drag this color to a palette entry, or select this color as " -"current by dragging it to the other color swatch alongside." -msgstr "" -"Den färg som valdes tidigare, för att du ska kunna jämföra med den färg du " -"väljer nu. Du kan dra färgen till en palettpost, eller välja denna färg som " -"den aktuella genom att dra den till det andra färgprovet." +#: ../gtk/gtkcolorsel.c:1033 +msgid "The previously-selected color, for comparison to the color you're selecting now. You can drag this color to a palette entry, or select this color as current by dragging it to the other color swatch alongside." +msgstr "Den färg som valdes tidigare, för att du ska kunna jämföra med den färg du väljer nu. Du kan dra färgen till en palettpost, eller välja denna färg som den aktuella genom att dra den till det andra färgprovet." -#: gtk/gtkcolorsel.c:991 -msgid "" -"The color you've chosen. You can drag this color to a palette entry to save " -"it for use in the future." -msgstr "" -"Färgen som du valt. Du kan dra den här färgen till en palettpost för att " -"spara den för framtida bruk." +#: ../gtk/gtkcolorsel.c:1036 +msgid "The color you've chosen. You can drag this color to a palette entry to save it for use in the future." +msgstr "Färgen som du valt. Du kan dra den här färgen till en palettpost för att spara den för framtida bruk." -#: gtk/gtkcolorsel.c:996 -msgid "" -"The previously-selected color, for comparison to the color you're selecting " -"now." +#: ../gtk/gtkcolorsel.c:1041 +msgid "The previously-selected color, for comparison to the color you're selecting now." msgstr "Den tidigare valda färgen, för jämförelse med färgen som du väljer nu." -#: gtk/gtkcolorsel.c:999 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "Färgen som du valt." -#: gtk/gtkcolorsel.c:1396 +#: ../gtk/gtkcolorsel.c:1444 msgid "_Save color here" msgstr "_Spara färgen här" -#: gtk/gtkcolorsel.c:1601 -msgid "" -"Click this palette entry to make it the current color. To change this entry, " -"drag a color swatch here or right-click it and select \"Save color here.\"" -msgstr "" -"Klicka på denna palettpost för att göra den till aktuell färg. För att ändra " -"denna post kan du dra ett färgprov hit eller högerklicka och välja \"Spara " -"färg här\"." +#: ../gtk/gtkcolorsel.c:1652 +msgid "Click this palette entry to make it the current color. To change this entry, drag a color swatch here or right-click it and select \"Save color here.\"" +msgstr "Klicka på denna palettpost för att göra den till aktuell färg. För att ändra denna post kan du dra ett färgprov hit eller högerklicka och välja \"Spara färg här\"." -#: gtk/gtkcolorseldialog.c:189 +#: ../gtk/gtkcolorseldialog.c:189 msgid "Color Selection" msgstr "Färgval" @@ -734,136 +697,142 @@ msgstr "Färgval" #. * Do *not* translate it to "predefinito:mm", if it #. * it isn't default:mm or default:inch it will not work #. -#: gtk/gtkcustompaperunixdialog.c:116 +#: ../gtk/gtkcustompaperunixdialog.c:116 msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: gtk/gtkcustompaperunixdialog.c:374 gtk/gtkprintunixdialog.c:3233 +#: ../gtk/gtkcustompaperunixdialog.c:374 +#: ../gtk/gtkprintunixdialog.c:3241 msgid "Manage Custom Sizes" msgstr "Hantera anpassade storlekar" -#: gtk/gtkcustompaperunixdialog.c:534 gtk/gtkpagesetupunixdialog.c:790 +#: ../gtk/gtkcustompaperunixdialog.c:534 +#: ../gtk/gtkpagesetupunixdialog.c:790 msgid "inch" msgstr "tum" -#: gtk/gtkcustompaperunixdialog.c:536 gtk/gtkpagesetupunixdialog.c:788 +#: ../gtk/gtkcustompaperunixdialog.c:536 +#: ../gtk/gtkpagesetupunixdialog.c:788 msgid "mm" msgstr "mm" -#: gtk/gtkcustompaperunixdialog.c:581 +#: ../gtk/gtkcustompaperunixdialog.c:581 msgid "Margins from Printer..." msgstr "Marginaler från skrivare..." -#: gtk/gtkcustompaperunixdialog.c:747 +#: ../gtk/gtkcustompaperunixdialog.c:747 #, c-format msgid "Custom Size %d" msgstr "Anpassad storlek %d" -#: gtk/gtkcustompaperunixdialog.c:1059 +#: ../gtk/gtkcustompaperunixdialog.c:1059 msgid "_Width:" msgstr "_Bredd:" -#: gtk/gtkcustompaperunixdialog.c:1071 +#: ../gtk/gtkcustompaperunixdialog.c:1071 msgid "_Height:" msgstr "_Höjd:" -#: gtk/gtkcustompaperunixdialog.c:1083 +#: ../gtk/gtkcustompaperunixdialog.c:1083 msgid "Paper Size" msgstr "Pappersstorlek" -#: gtk/gtkcustompaperunixdialog.c:1092 +#: ../gtk/gtkcustompaperunixdialog.c:1092 msgid "_Top:" msgstr "_Överst:" -#: gtk/gtkcustompaperunixdialog.c:1104 +#: ../gtk/gtkcustompaperunixdialog.c:1104 msgid "_Bottom:" msgstr "_Nederst:" -#: gtk/gtkcustompaperunixdialog.c:1116 +#: ../gtk/gtkcustompaperunixdialog.c:1116 msgid "_Left:" msgstr "_Vänster:" -#: gtk/gtkcustompaperunixdialog.c:1128 +#: ../gtk/gtkcustompaperunixdialog.c:1128 msgid "_Right:" msgstr "_Höger:" -#: gtk/gtkcustompaperunixdialog.c:1169 +#: ../gtk/gtkcustompaperunixdialog.c:1169 msgid "Paper Margins" msgstr "Pappersmarginaler" -#: gtk/gtkentry.c:8601 gtk/gtktextview.c:8248 +#: ../gtk/gtkentry.c:8809 +#: ../gtk/gtktextview.c:8248 msgid "Input _Methods" msgstr "Inmatnings_metoder" -#: gtk/gtkentry.c:8615 gtk/gtktextview.c:8262 +#: ../gtk/gtkentry.c:8823 +#: ../gtk/gtktextview.c:8262 msgid "_Insert Unicode Control Character" msgstr "_Infoga Unicode-styrtecken" -#: gtk/gtkentry.c:10015 +#: ../gtk/gtkentry.c:10227 msgid "Caps Lock and Num Lock are on" msgstr "Caps Lock och Num Lock är aktiverade" -#: gtk/gtkentry.c:10017 +#: ../gtk/gtkentry.c:10229 msgid "Num Lock is on" msgstr "Num Lock är aktiverad" -#: gtk/gtkentry.c:10019 +#: ../gtk/gtkentry.c:10231 msgid "Caps Lock is on" msgstr "Caps Lock är aktiverad" #. **************** * #. * Private Macros * #. * **************** -#: gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:61 msgid "Select A File" msgstr "Välj en fil" -#: gtk/gtkfilechooserbutton.c:62 gtk/gtkfilechooserdefault.c:1812 +#: ../gtk/gtkfilechooserbutton.c:62 +#: ../gtk/gtkfilechooserdefault.c:1833 msgid "Desktop" msgstr "Skrivbord" -#: gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:63 msgid "(None)" msgstr "(Ingen)" -#: gtk/gtkfilechooserbutton.c:2005 +#: ../gtk/gtkfilechooserbutton.c:2001 msgid "Other..." msgstr "Annan..." -#: gtk/gtkfilechooserdefault.c:148 +#: ../gtk/gtkfilechooserdefault.c:147 msgid "Type name of new folder" msgstr "Ange namnet på den nya mappen" -#: gtk/gtkfilechooserdefault.c:938 +#: ../gtk/gtkfilechooserdefault.c:946 msgid "Could not retrieve information about the file" msgstr "Kunde inte hämta information om filen" -#: gtk/gtkfilechooserdefault.c:949 +#: ../gtk/gtkfilechooserdefault.c:957 msgid "Could not add a bookmark" msgstr "Kunde inte lägga till ett bokmärke" -#: gtk/gtkfilechooserdefault.c:960 +#: ../gtk/gtkfilechooserdefault.c:968 msgid "Could not remove bookmark" msgstr "Kunde inte ta bort bokmärke" -#: gtk/gtkfilechooserdefault.c:971 +#: ../gtk/gtkfilechooserdefault.c:979 msgid "The folder could not be created" msgstr "Mappen kunde inte skapas" -#: gtk/gtkfilechooserdefault.c:984 -msgid "" -"The folder could not be created, as a file with the same name already " -"exists. Try using a different name for the folder, or rename the file first." -msgstr "" -"Mappen kunde inte skapas eftersom det redan finns en fil med samma namn. " -"Prova att använda ett annat namn på mappen, eller byt namn på filen först." +#: ../gtk/gtkfilechooserdefault.c:992 +msgid "The folder could not be created, as a file with the same name already exists. Try using a different name for the folder, or rename the file first." +msgstr "Mappen kunde inte skapas eftersom det redan finns en fil med samma namn. Prova att använda ett annat namn på mappen, eller byt namn på filen först." -#: gtk/gtkfilechooserdefault.c:995 +#: ../gtk/gtkfilechooserdefault.c:1006 +msgid "You may only select folders. The item that you selected is not a folder; try using a different item." +msgstr "Du får endast välja mappar. Objektet som du valde är inte en mapp. Försök att använda ett annat objekt." + +#: ../gtk/gtkfilechooserdefault.c:1016 msgid "Invalid file name" msgstr "Ogiltigt filnamn" -#: gtk/gtkfilechooserdefault.c:1005 +#: ../gtk/gtkfilechooserdefault.c:1026 msgid "The folder contents could not be displayed" msgstr "Mappinnehållet kunde inte visas" @@ -871,239 +840,241 @@ msgstr "Mappinnehållet kunde inte visas" #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: gtk/gtkfilechooserdefault.c:1555 +#: ../gtk/gtkfilechooserdefault.c:1576 #, c-format msgid "%1$s on %2$s" msgstr "%1$s på %2$s" -#: gtk/gtkfilechooserdefault.c:1731 +#: ../gtk/gtkfilechooserdefault.c:1752 msgid "Search" msgstr "Sök" -#: gtk/gtkfilechooserdefault.c:1755 gtk/gtkfilechooserdefault.c:9289 +#: ../gtk/gtkfilechooserdefault.c:1776 +#: ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "Tidigare använda" -#: gtk/gtkfilechooserdefault.c:2409 +#: ../gtk/gtkfilechooserdefault.c:2437 msgid "Select which types of files are shown" msgstr "Välj vilka typer av filer som visas" -#: gtk/gtkfilechooserdefault.c:2768 +#: ../gtk/gtkfilechooserdefault.c:2796 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "Lägg till mappen \"%s\" till bokmärkena" -#: gtk/gtkfilechooserdefault.c:2812 +#: ../gtk/gtkfilechooserdefault.c:2840 #, c-format msgid "Add the current folder to the bookmarks" msgstr "Lägg till den aktuella mappen till dina bokmärken" -#: gtk/gtkfilechooserdefault.c:2814 +#: ../gtk/gtkfilechooserdefault.c:2842 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "Lägg till de valda mapparna till bokmärkena" -#: gtk/gtkfilechooserdefault.c:2852 +#: ../gtk/gtkfilechooserdefault.c:2880 #, c-format msgid "Remove the bookmark '%s'" msgstr "Ta bort bokmärket \"%s\"" -#: gtk/gtkfilechooserdefault.c:2854 +#: ../gtk/gtkfilechooserdefault.c:2882 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "Bokmärket \"%s\" kan inte tas bort" -#: gtk/gtkfilechooserdefault.c:2861 gtk/gtkfilechooserdefault.c:3725 +#: ../gtk/gtkfilechooserdefault.c:2889 +#: ../gtk/gtkfilechooserdefault.c:3757 msgid "Remove the selected bookmark" msgstr "Ta bort markerat bokmärke" -#: gtk/gtkfilechooserdefault.c:3421 +#: ../gtk/gtkfilechooserdefault.c:3452 msgid "Remove" msgstr "Ta bort" -#: gtk/gtkfilechooserdefault.c:3430 +#: ../gtk/gtkfilechooserdefault.c:3461 msgid "Rename..." msgstr "Byt namn..." #. Accessible object name for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3593 +#: ../gtk/gtkfilechooserdefault.c:3624 msgid "Places" msgstr "Platser" #. Column header for the file chooser's shortcuts pane -#: gtk/gtkfilechooserdefault.c:3650 +#: ../gtk/gtkfilechooserdefault.c:3681 msgid "_Places" msgstr "_Platser" -#: gtk/gtkfilechooserdefault.c:3706 +#: ../gtk/gtkfilechooserdefault.c:3738 msgid "_Add" msgstr "_Lägg till" -#: gtk/gtkfilechooserdefault.c:3713 +#: ../gtk/gtkfilechooserdefault.c:3745 msgid "Add the selected folder to the Bookmarks" msgstr "Lägg till den valda mappen i bokmärkena" -#: gtk/gtkfilechooserdefault.c:3718 +#: ../gtk/gtkfilechooserdefault.c:3750 msgid "_Remove" msgstr "_Ta bort" -#: gtk/gtkfilechooserdefault.c:3860 +#: ../gtk/gtkfilechooserdefault.c:3892 msgid "Could not select file" msgstr "Kunde inte välja fil" -#: gtk/gtkfilechooserdefault.c:4035 +#: ../gtk/gtkfilechooserdefault.c:4067 msgid "_Add to Bookmarks" msgstr "_Lägg till i bokmärkena" -#: gtk/gtkfilechooserdefault.c:4048 +#: ../gtk/gtkfilechooserdefault.c:4080 msgid "Show _Hidden Files" msgstr "Visa _dolda filer" -#: gtk/gtkfilechooserdefault.c:4055 +#: ../gtk/gtkfilechooserdefault.c:4087 msgid "Show _Size Column" msgstr "Visa kolumnen _Storlek" -#: gtk/gtkfilechooserdefault.c:4281 +#: ../gtk/gtkfilechooserdefault.c:4313 msgid "Files" msgstr "Filer" -#: gtk/gtkfilechooserdefault.c:4332 +#: ../gtk/gtkfilechooserdefault.c:4364 msgid "Name" msgstr "Namn" -#: gtk/gtkfilechooserdefault.c:4355 +#: ../gtk/gtkfilechooserdefault.c:4387 msgid "Size" msgstr "Storlek" -#: gtk/gtkfilechooserdefault.c:4369 +#: ../gtk/gtkfilechooserdefault.c:4401 msgid "Modified" msgstr "Ändrad" #. Label -#: gtk/gtkfilechooserdefault.c:4624 gtk/gtkprinteroptionwidget.c:801 +#: ../gtk/gtkfilechooserdefault.c:4656 +#: ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "_Namn:" -#: gtk/gtkfilechooserdefault.c:4667 +#: ../gtk/gtkfilechooserdefault.c:4699 msgid "_Browse for other folders" msgstr "_Bläddra efter andra mappar" -#: gtk/gtkfilechooserdefault.c:4937 +#: ../gtk/gtkfilechooserdefault.c:4969 msgid "Type a file name" msgstr "Ange ett filnamn" #. Create Folder -#: gtk/gtkfilechooserdefault.c:4980 +#: ../gtk/gtkfilechooserdefault.c:5012 msgid "Create Fo_lder" msgstr "Skapa ma_pp" -#: gtk/gtkfilechooserdefault.c:4990 +#: ../gtk/gtkfilechooserdefault.c:5022 msgid "_Location:" msgstr "_Plats:" -#: gtk/gtkfilechooserdefault.c:5194 +#: ../gtk/gtkfilechooserdefault.c:5226 msgid "Save in _folder:" msgstr "Spara i _mappen:" -#: gtk/gtkfilechooserdefault.c:5196 +#: ../gtk/gtkfilechooserdefault.c:5228 msgid "Create in _folder:" msgstr "Skapa i _mappen:" -#: gtk/gtkfilechooserdefault.c:6248 +#: ../gtk/gtkfilechooserdefault.c:6297 #, c-format msgid "Could not read the contents of %s" msgstr "Kunde inte läsa innehållet i %s" -#: gtk/gtkfilechooserdefault.c:6252 +#: ../gtk/gtkfilechooserdefault.c:6301 msgid "Could not read the contents of the folder" msgstr "Kunde inte läsa innehållet i mappen" -#: gtk/gtkfilechooserdefault.c:6345 gtk/gtkfilechooserdefault.c:6413 -#: gtk/gtkfilechooserdefault.c:6558 +#: ../gtk/gtkfilechooserdefault.c:6394 +#: ../gtk/gtkfilechooserdefault.c:6462 +#: ../gtk/gtkfilechooserdefault.c:6607 msgid "Unknown" msgstr "Okänd" -#: gtk/gtkfilechooserdefault.c:6360 +#: ../gtk/gtkfilechooserdefault.c:6409 msgid "%H:%M" msgstr "%H.%M" -#: gtk/gtkfilechooserdefault.c:6362 +#: ../gtk/gtkfilechooserdefault.c:6411 msgid "Yesterday at %H:%M" msgstr "Igår klockan %H.%M" -#: gtk/gtkfilechooserdefault.c:7028 +#: ../gtk/gtkfilechooserdefault.c:7077 msgid "Cannot change to folder because it is not local" msgstr "Kan inte byta till mappen eftersom den inte är lokal" -#: gtk/gtkfilechooserdefault.c:7625 gtk/gtkfilechooserdefault.c:7646 +#: ../gtk/gtkfilechooserdefault.c:7674 +#: ../gtk/gtkfilechooserdefault.c:7695 #, c-format msgid "Shortcut %s already exists" msgstr "Genvägen %s finns redan" -#: gtk/gtkfilechooserdefault.c:7736 +#: ../gtk/gtkfilechooserdefault.c:7785 #, c-format msgid "Shortcut %s does not exist" msgstr "Genvägen %s finns inte" -#: gtk/gtkfilechooserdefault.c:7997 gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 +#: ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "En fil med namnet \"%s\" finns redan. Vill du ersätta den?" -#: gtk/gtkfilechooserdefault.c:8000 gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 +#: ../gtk/gtkprintunixdialog.c:484 #, c-format -msgid "" -"The file already exists in \"%s\". Replacing it will overwrite its contents." -msgstr "" -"Filen finns redan i \"%s\". Att ersätta den kommer att skriva över dess " -"innehåll." +msgid "The file already exists in \"%s\". Replacing it will overwrite its contents." +msgstr "Filen finns redan i \"%s\". Att ersätta den kommer att skriva över dess innehåll." -#: gtk/gtkfilechooserdefault.c:8005 gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 +#: ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "_Ersätt" -#: gtk/gtkfilechooserdefault.c:8658 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "Kunde inte starta sökprocessen" -#: gtk/gtkfilechooserdefault.c:8659 -msgid "" -"The program was not able to create a connection to the indexer daemon. " -"Please make sure it is running." -msgstr "" -"Programmet kunde inte skapa en anslutning till indexeringsdemonen. Försäkra " -"dig om att den kör." +#: ../gtk/gtkfilechooserdefault.c:8763 +msgid "The program was not able to create a connection to the indexer daemon. Please make sure it is running." +msgstr "Programmet kunde inte skapa en anslutning till indexeringsdemonen. Försäkra dig om att den kör." -#: gtk/gtkfilechooserdefault.c:8673 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "Kunde inte skicka sökbegäran" -#: gtk/gtkfilechooserdefault.c:8861 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "Sök:" -#: gtk/gtkfilechooserdefault.c:9466 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" msgstr "Kunde inte montera %s" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: gtk/gtkfilechooserentry.c:702 gtk/gtkfilechooserentry.c:1169 +#: ../gtk/gtkfilechooserentry.c:702 +#: ../gtk/gtkfilechooserentry.c:1180 msgid "Invalid path" msgstr "Ogiltig sökväg" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1101 +#: ../gtk/gtkfilechooserentry.c:1112 msgid "No match" msgstr "Ingen matchning" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: gtk/gtkfilechooserentry.c:1112 +#: ../gtk/gtkfilechooserentry.c:1123 msgid "Sole completion" msgstr "Enda komplettering" @@ -1111,13 +1082,13 @@ msgstr "Enda komplettering" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: gtk/gtkfilechooserentry.c:1128 +#: ../gtk/gtkfilechooserentry.c:1139 msgid "Complete, but not unique" msgstr "Komplett, men inte unik" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: gtk/gtkfilechooserentry.c:1160 +#: ../gtk/gtkfilechooserentry.c:1171 msgid "Completing..." msgstr "Kompletterar..." @@ -1125,7 +1096,8 @@ msgstr "Kompletterar..." #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: gtk/gtkfilechooserentry.c:1182 gtk/gtkfilechooserentry.c:1207 +#: ../gtk/gtkfilechooserentry.c:1193 +#: ../gtk/gtkfilechooserentry.c:1218 msgid "Only local files may be selected" msgstr "Endast lokala filer kan väljas" @@ -1133,80 +1105,76 @@ msgstr "Endast lokala filer kan väljas" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: gtk/gtkfilechooserentry.c:1191 +#: ../gtk/gtkfilechooserentry.c:1202 msgid "Incomplete hostname; end it with '/'" msgstr "Okomplett värdnamn; avsluta med \"/\"" #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: gtk/gtkfilechooserentry.c:1202 +#: ../gtk/gtkfilechooserentry.c:1213 msgid "Path does not exist" msgstr "Sökvägen finns inte" -#: gtk/gtkfilechoosersettings.c:486 -#, c-format -msgid "Error creating folder '%s': %s" -msgstr "Fel vid skapande av mappen \"%s\": %s" - #. The pointers we return for a GtkFileSystemVolume are opaque tokens; they are #. * really pointers to GDrive, GVolume or GMount objects. We need an extra #. * token for the fake "File System" volume. So, we'll return a pointer to #. * this particular string. #. -#: gtk/gtkfilesystem.c:48 +#: ../gtk/gtkfilesystem.c:48 msgid "File System" msgstr "Filsystem" -#: gtk/gtkfontbutton.c:142 gtk/gtkfontbutton.c:266 +#: ../gtk/gtkfontbutton.c:142 +#: ../gtk/gtkfontbutton.c:266 msgid "Pick a Font" msgstr "Välj ett typsnitt" #. Initialize fields -#: gtk/gtkfontbutton.c:260 +#: ../gtk/gtkfontbutton.c:260 msgid "Sans 12" msgstr "Sans 12" -#: gtk/gtkfontbutton.c:785 +#: ../gtk/gtkfontbutton.c:785 msgid "Font" msgstr "Typsnitt" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:103 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" -#: gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:370 msgid "_Family:" msgstr "_Familj:" -#: gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:376 msgid "_Style:" msgstr "_Stil:" -#: gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:382 msgid "Si_ze:" msgstr "S_torlek:" #. create the text entry widget -#: gtk/gtkfontsel.c:559 +#: ../gtk/gtkfontsel.c:558 msgid "_Preview:" msgstr "_Förhandsvisning:" -#: gtk/gtkfontsel.c:1659 +#: ../gtk/gtkfontsel.c:1658 msgid "Font Selection" msgstr "Typsnittsval" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1356 #, c-format msgid "Error loading icon: %s" msgstr "Fel vid inläsning av ikonen: %s" -#: gtk/gtkicontheme.c:1354 +#: ../gtk/gtkicontheme.c:1351 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" @@ -1219,75 +1187,75 @@ msgstr "" "Du kan få tag i en kopia från:\n" "\t%s" -#: gtk/gtkicontheme.c:1535 +#: ../gtk/gtkicontheme.c:1532 #, c-format msgid "Icon '%s' not present in theme" msgstr "Ikonen \"%s\" finns inte i temat" -#: gtk/gtkicontheme.c:3048 +#: ../gtk/gtkicontheme.c:3053 msgid "Failed to load icon" msgstr "Misslyckades med att läsa in ikon" -#: gtk/gtkimmodule.c:526 +#: ../gtk/gtkimmodule.c:526 msgid "Simple" msgstr "Enkel" -#: gtk/gtkimmulticontext.c:588 +#: ../gtk/gtkimmulticontext.c:588 msgctxt "input method menu" msgid "System" msgstr "System" -#: gtk/gtkimmulticontext.c:598 +#: ../gtk/gtkimmulticontext.c:598 msgctxt "input method menu" msgid "None" msgstr "Ingen" -#: gtk/gtkimmulticontext.c:681 +#: ../gtk/gtkimmulticontext.c:681 #, c-format msgctxt "input method menu" msgid "System (%s)" msgstr "System (%s)" #. Open Link -#: gtk/gtklabel.c:6202 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "_Öppna länk" #. Copy Link Address -#: gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "Kopiera _länkadress" -#: gtk/gtklinkbutton.c:449 +#: ../gtk/gtklinkbutton.c:484 msgid "Copy URL" msgstr "Kopiera url" -#: gtk/gtklinkbutton.c:601 +#: ../gtk/gtklinkbutton.c:647 msgid "Invalid URI" msgstr "Ogiltig uri" #. Description of --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:526 +#: ../gtk/gtkmain.c:515 msgid "Load additional GTK+ modules" msgstr "Läs in ytterligare GTK+-moduler" #. Placeholder in --gtk-module=MODULES in --help output -#: gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:516 msgid "MODULES" msgstr "MODULER" #. Description of --g-fatal-warnings in --help output -#: gtk/gtkmain.c:529 +#: ../gtk/gtkmain.c:518 msgid "Make all warnings fatal" msgstr "Gör alla varningar ödesdigra" #. Description of --gtk-debug=FLAGS in --help output -#: gtk/gtkmain.c:532 +#: ../gtk/gtkmain.c:521 msgid "GTK+ debugging flags to set" msgstr "GTK+-felsökningsflaggor att ställa in" #. Description of --gtk-no-debug=FLAGS in --help output -#: gtk/gtkmain.c:535 +#: ../gtk/gtkmain.c:524 msgid "GTK+ debugging flags to unset" msgstr "GTK+-felsökningsflaggor att inte ställa in" @@ -1296,122 +1264,124 @@ msgstr "GTK+-felsökningsflaggor att inte ställa in" #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: gtk/gtkmain.c:798 +#: ../gtk/gtkmain.c:787 msgid "default:LTR" msgstr "default:LTR" -#: gtk/gtkmain.c:863 +#: ../gtk/gtkmain.c:851 #, c-format msgid "Cannot open display: %s" msgstr "Kan inte öppna display: %s" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:915 msgid "GTK+ Options" msgstr "GTK+-flaggor" -#: gtk/gtkmain.c:922 +#: ../gtk/gtkmain.c:915 msgid "Show GTK+ Options" msgstr "Visa GTK+-flaggor" -#: gtk/gtkmountoperation.c:491 +#: ../gtk/gtkmountoperation.c:491 msgid "Co_nnect" msgstr "A_nslut" -#: gtk/gtkmountoperation.c:558 +#: ../gtk/gtkmountoperation.c:558 msgid "Connect _anonymously" msgstr "Anslut _anonymt" -#: gtk/gtkmountoperation.c:567 +#: ../gtk/gtkmountoperation.c:567 msgid "Connect as u_ser:" msgstr "Anslut som a_nvändare:" -#: gtk/gtkmountoperation.c:605 +#: ../gtk/gtkmountoperation.c:605 msgid "_Username:" msgstr "_Användarnamn:" -#: gtk/gtkmountoperation.c:610 +#: ../gtk/gtkmountoperation.c:610 msgid "_Domain:" msgstr "_Domän:" -#: gtk/gtkmountoperation.c:616 +#: ../gtk/gtkmountoperation.c:616 msgid "_Password:" msgstr "_Lösenord:" -#: gtk/gtkmountoperation.c:634 +#: ../gtk/gtkmountoperation.c:634 msgid "Forget password _immediately" msgstr "Glöm lösenordet _omedelbart" -#: gtk/gtkmountoperation.c:644 +#: ../gtk/gtkmountoperation.c:644 msgid "Remember password until you _logout" msgstr "Kom ihåg lösenordet tills du _loggar ut" -#: gtk/gtkmountoperation.c:654 +#: ../gtk/gtkmountoperation.c:654 msgid "Remember _forever" msgstr "Kom ihåg _för alltid" -#: gtk/gtkmountoperation.c:883 -#, fuzzy, c-format -msgid "Unknown Application (PID %d)" -msgstr "Okänt program (pid %d)" - -#: gtk/gtkmountoperation.c:1066 +#: ../gtk/gtkmountoperation.c:883 #, c-format +msgid "Unknown Application (PID %d)" +msgstr "Okänt program (PID %d)" + +#: ../gtk/gtkmountoperation.c:1066 msgid "Unable to end process" msgstr "Kunde inte avsluta processen" -#: gtk/gtkmountoperation.c:1103 +#: ../gtk/gtkmountoperation.c:1103 msgid "_End Process" msgstr "A_vsluta process" -#: gtk/gtkmountoperation-stub.c:64 -#, fuzzy, c-format +#: ../gtk/gtkmountoperation-stub.c:64 +#, c-format msgid "Cannot kill process with PID %d. Operation is not implemented." -msgstr "Kan inte döda processen med pid %d. Åtgärden är inte implementerad." +msgstr "Kan inte döda processen med PID %d. Åtgärden är inte implementerad." #. translators: this string is a name for the 'less' command -#: gtk/gtkmountoperation-x11.c:862 +#: ../gtk/gtkmountoperation-x11.c:862 msgid "Terminal Pager" msgstr "Terminalvisare" -#: gtk/gtkmountoperation-x11.c:863 +#: ../gtk/gtkmountoperation-x11.c:863 msgid "Top Command" msgstr "Kommando för \"top\"" -#: gtk/gtkmountoperation-x11.c:864 +#: ../gtk/gtkmountoperation-x11.c:864 msgid "Bourne Again Shell" msgstr "Bourne Again Shell" -#: gtk/gtkmountoperation-x11.c:865 +#: ../gtk/gtkmountoperation-x11.c:865 msgid "Bourne Shell" msgstr "Bourne Shell" -#: gtk/gtkmountoperation-x11.c:866 +#: ../gtk/gtkmountoperation-x11.c:866 msgid "Z Shell" msgstr "Z Shell" -#: gtk/gtkmountoperation-x11.c:963 -#, fuzzy, c-format +#: ../gtk/gtkmountoperation-x11.c:963 +#, c-format msgid "Cannot end process with PID %d: %s" -msgstr "Kan inte avsluta processen med pid %d: %s" +msgstr "Kan inte avsluta processen med PID %d: %s" -#: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170 +#: ../gtk/gtknotebook.c:4911 +#: ../gtk/gtknotebook.c:7568 #, c-format msgid "Page %u" msgstr "Sida %u" -#: gtk/gtkpagesetup.c:596 gtk/gtkpapersize.c:838 gtk/gtkpapersize.c:880 +#: ../gtk/gtkpagesetup.c:648 +#: ../gtk/gtkpapersize.c:838 +#: ../gtk/gtkpapersize.c:880 msgid "Not a valid page setup file" msgstr "Inte en giltig sidkonfigurationsfil" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 msgid "Any Printer" msgstr "Valfri skrivare" -#: gtk/gtkpagesetupunixdialog.c:179 +#: ../gtk/gtkpagesetupunixdialog.c:179 msgid "For portable documents" msgstr "För portabla dokument" -#: gtk/gtkpagesetupunixdialog.c:809 +#: ../gtk/gtkpagesetupunixdialog.c:809 #, c-format msgid "" "Margins:\n" @@ -1426,51 +1396,54 @@ msgstr "" " Övre: %s %s\n" " Undre: %s %s" -#: gtk/gtkpagesetupunixdialog.c:858 gtk/gtkprintunixdialog.c:3284 +#: ../gtk/gtkpagesetupunixdialog.c:858 +#: ../gtk/gtkprintunixdialog.c:3292 msgid "Manage Custom Sizes..." msgstr "Hantera anpassade storlekar..." -#: gtk/gtkpagesetupunixdialog.c:909 +#: ../gtk/gtkpagesetupunixdialog.c:909 msgid "_Format for:" msgstr "_Format för:" -#: gtk/gtkpagesetupunixdialog.c:931 gtk/gtkprintunixdialog.c:3456 +#: ../gtk/gtkpagesetupunixdialog.c:931 +#: ../gtk/gtkprintunixdialog.c:3464 msgid "_Paper size:" msgstr "_Pappersstorlek:" -#: gtk/gtkpagesetupunixdialog.c:962 +#: ../gtk/gtkpagesetupunixdialog.c:962 msgid "_Orientation:" msgstr "_Orientering:" -#: gtk/gtkpagesetupunixdialog.c:1026 gtk/gtkprintunixdialog.c:3518 +#: ../gtk/gtkpagesetupunixdialog.c:1026 +#: ../gtk/gtkprintunixdialog.c:3526 msgid "Page Setup" msgstr "Sidinställning" -#: gtk/gtkpathbar.c:154 +#: ../gtk/gtkpathbar.c:158 msgid "Up Path" msgstr "Sökväg uppåt" -#: gtk/gtkpathbar.c:156 +#: ../gtk/gtkpathbar.c:160 msgid "Down Path" msgstr "Sökväg nedåt" -#: gtk/gtkpathbar.c:1497 +#: ../gtk/gtkpathbar.c:1523 msgid "File System Root" msgstr "Filsystemsrot" -#: gtk/gtkprintbackend.c:749 +#: ../gtk/gtkprintbackend.c:749 msgid "Authentication" msgstr "Autentisering" -#: gtk/gtkprinteroptionwidget.c:694 +#: ../gtk/gtkprinteroptionwidget.c:686 msgid "Not available" msgstr "Inte tillgänglig" -#: gtk/gtkprinteroptionwidget.c:794 +#: ../gtk/gtkprinteroptionwidget.c:786 msgid "Select a folder" msgstr "Välj en mapp" -#: gtk/gtkprinteroptionwidget.c:813 +#: ../gtk/gtkprinteroptionwidget.c:805 msgid "_Save in folder:" msgstr "_Spara i mapp:" @@ -1478,187 +1451,188 @@ msgstr "_Spara i mapp:" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:190 #, c-format msgid "%s job #%d" msgstr "%s jobbnr %d" -#: gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1695 msgctxt "print operation status" msgid "Initial state" msgstr "Initialt tillstånd" -#: gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1696 msgctxt "print operation status" msgid "Preparing to print" msgstr "Förbereder utskrift" -#: gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1697 msgctxt "print operation status" msgid "Generating data" msgstr "Genererar data" -#: gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Sending data" msgstr "Skickar data" -#: gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Waiting" msgstr "Väntar" -#: gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Blocking on issue" msgstr "Blockerar vid problem" -#: gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Printing" msgstr "Skriver ut" -#: gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Finished" msgstr "Färdig" -#: gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Finished with error" msgstr "Färdig men med fel" -#: gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2270 #, c-format msgid "Preparing %d" msgstr "Förbereder %d" -#: gtk/gtkprintoperation.c:2272 gtk/gtkprintoperation.c:2902 -#, c-format +#: ../gtk/gtkprintoperation.c:2272 +#: ../gtk/gtkprintoperation.c:2902 msgid "Preparing" msgstr "Förbereder" -#: gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2275 #, c-format msgid "Printing %d" msgstr "Skriver ut %d" -#: gtk/gtkprintoperation.c:2932 -#, c-format +#: ../gtk/gtkprintoperation.c:2932 msgid "Error creating print preview" msgstr "Fel vid skapande av förhandsgranskning" -#: gtk/gtkprintoperation.c:2935 -#, c-format +#: ../gtk/gtkprintoperation.c:2935 msgid "The most probable reason is that a temporary file could not be created." msgstr "Den mest troliga orsaken är att en temporärfil inte kunde skapas." -#: gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "Fel vid start av förhandsgranskning" -#: gtk/gtkprintoperation-unix.c:470 gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 +#: ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" msgstr "Program" -#: gtk/gtkprintoperation-win32.c:611 +#: ../gtk/gtkprintoperation-win32.c:611 msgid "Printer offline" msgstr "Skrivaren är frånkopplad" -#: gtk/gtkprintoperation-win32.c:613 +#: ../gtk/gtkprintoperation-win32.c:613 msgid "Out of paper" msgstr "Slut på papper" #. Translators: this is a printer status. -#: gtk/gtkprintoperation-win32.c:615 -#: modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../gtk/gtkprintoperation-win32.c:615 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 msgid "Paused" msgstr "Pausad" -#: gtk/gtkprintoperation-win32.c:617 +#: ../gtk/gtkprintoperation-win32.c:617 msgid "Need user intervention" msgstr "Behöver användarhjälp" -#: gtk/gtkprintoperation-win32.c:717 +#: ../gtk/gtkprintoperation-win32.c:717 msgid "Custom size" msgstr "Anpassad storlek" -#: gtk/gtkprintoperation-win32.c:1539 +#: ../gtk/gtkprintoperation-win32.c:1539 msgid "No printer found" msgstr "Ingen skrivare hittades" -#: gtk/gtkprintoperation-win32.c:1566 +#: ../gtk/gtkprintoperation-win32.c:1566 msgid "Invalid argument to CreateDC" msgstr "Ogiltigt argument till CreateDC" -#: gtk/gtkprintoperation-win32.c:1602 gtk/gtkprintoperation-win32.c:1829 +#: ../gtk/gtkprintoperation-win32.c:1602 +#: ../gtk/gtkprintoperation-win32.c:1829 msgid "Error from StartDoc" msgstr "Fel från StartDoc" -#: gtk/gtkprintoperation-win32.c:1684 gtk/gtkprintoperation-win32.c:1707 -#: gtk/gtkprintoperation-win32.c:1755 +#: ../gtk/gtkprintoperation-win32.c:1684 +#: ../gtk/gtkprintoperation-win32.c:1707 +#: ../gtk/gtkprintoperation-win32.c:1755 msgid "Not enough free memory" msgstr "Inte tillräckligt med ledigt minne" -#: gtk/gtkprintoperation-win32.c:1760 +#: ../gtk/gtkprintoperation-win32.c:1760 msgid "Invalid argument to PrintDlgEx" msgstr "Ogiltigt argument till PrintDlgEx" -#: gtk/gtkprintoperation-win32.c:1765 +#: ../gtk/gtkprintoperation-win32.c:1765 msgid "Invalid pointer to PrintDlgEx" msgstr "Ogiltig pekare till PrintDlgEx" -#: gtk/gtkprintoperation-win32.c:1770 +#: ../gtk/gtkprintoperation-win32.c:1770 msgid "Invalid handle to PrintDlgEx" msgstr "Ogiltigt handtag till PrintDlgEx" -#: gtk/gtkprintoperation-win32.c:1775 +#: ../gtk/gtkprintoperation-win32.c:1775 msgid "Unspecified error" msgstr "Ospecificerat fel" -#: gtk/gtkprintunixdialog.c:618 +#: ../gtk/gtkprintunixdialog.c:618 msgid "Getting printer information failed" msgstr "Hämtning av skrivarinformation misslyckades" -#: gtk/gtkprintunixdialog.c:1873 +#: ../gtk/gtkprintunixdialog.c:1873 msgid "Getting printer information..." msgstr "Hämtar skrivarinformation..." -#: gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2140 msgid "Printer" msgstr "Skrivare" #. Translators: this is the header for the location column in the print dialog -#: gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2150 msgid "Location" msgstr "Plats" #. Translators: this is the header for the printer status column in the print dialog -#: gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2161 msgid "Status" msgstr "Status" -#: gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2187 msgid "Range" msgstr "Intervall" -#: gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2191 msgid "_All Pages" msgstr "_Alla sidor" -#: gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "C_urrent Page" msgstr "A_ktuell sida" -#: gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2208 msgid "Se_lection" msgstr "Mar_kering" -#: gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2217 msgid "Pag_es:" msgstr "Sid_or:" -#: gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2218 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" @@ -1666,28 +1640,28 @@ msgstr "" "Ange en eller flera sidintervall,\n" " exempelvis 1-3,7,11" -#: gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2228 msgid "Pages" msgstr "Sidor" -#: gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2241 msgid "Copies" msgstr "Kopior" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2246 msgid "Copie_s:" msgstr "Kop_ior:" -#: gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2264 msgid "C_ollate" msgstr "S_ortera" -#: gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2272 msgid "_Reverse" msgstr "_Omvänd" -#: gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2292 msgid "General" msgstr "Allmänt" @@ -1697,168 +1671,169 @@ msgstr "Allmänt" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, top to bottom" msgstr "Vänster till höger, topp till botten" -#: gtk/gtkprintunixdialog.c:3017 -#: modules/printbackends/cups/gtkprintbackendcups.c:3508 +#: ../gtk/gtkprintunixdialog.c:3025 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 msgid "Left to right, bottom to top" msgstr "Vänster till höger, botten till topp" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, top to bottom" msgstr "Höger till vänster, topp till botten" -#: gtk/gtkprintunixdialog.c:3018 -#: modules/printbackends/cups/gtkprintbackendcups.c:3509 +#: ../gtk/gtkprintunixdialog.c:3026 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 msgid "Right to left, bottom to top" msgstr "Höger till vänster, botten till topp" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, left to right" msgstr "Topp till botten, vänster till höger" -#: gtk/gtkprintunixdialog.c:3019 -#: modules/printbackends/cups/gtkprintbackendcups.c:3510 +#: ../gtk/gtkprintunixdialog.c:3027 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 msgid "Top to bottom, right to left" msgstr "Topp till botten, höger till vänster" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, left to right" msgstr "Botten till topp, vänster till höger" -#: gtk/gtkprintunixdialog.c:3020 -#: modules/printbackends/cups/gtkprintbackendcups.c:3511 +#: ../gtk/gtkprintunixdialog.c:3028 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 msgid "Bottom to top, right to left" msgstr "Botten till topp, höger till vänster" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: gtk/gtkprintunixdialog.c:3024 gtk/gtkprintunixdialog.c:3037 -#: modules/printbackends/cups/gtkprintbackendcups.c:3543 +#: ../gtk/gtkprintunixdialog.c:3032 +#: ../gtk/gtkprintunixdialog.c:3045 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 msgid "Page Ordering" msgstr "Sidordning" -#: gtk/gtkprintunixdialog.c:3053 +#: ../gtk/gtkprintunixdialog.c:3061 msgid "Left to right" msgstr "Vänster till höger" -#: gtk/gtkprintunixdialog.c:3054 +#: ../gtk/gtkprintunixdialog.c:3062 msgid "Right to left" msgstr "Höger till vänster" -#: gtk/gtkprintunixdialog.c:3066 +#: ../gtk/gtkprintunixdialog.c:3074 msgid "Top to bottom" msgstr "Topp till botten" -#: gtk/gtkprintunixdialog.c:3067 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Bottom to top" msgstr "Botten till topp" -#: gtk/gtkprintunixdialog.c:3307 +#: ../gtk/gtkprintunixdialog.c:3315 msgid "Layout" msgstr "Layout" -#: gtk/gtkprintunixdialog.c:3311 +#: ../gtk/gtkprintunixdialog.c:3319 msgid "T_wo-sided:" msgstr "T_våsidig:" -#: gtk/gtkprintunixdialog.c:3326 +#: ../gtk/gtkprintunixdialog.c:3334 msgid "Pages per _side:" msgstr "Sidor per _blad:" -#: gtk/gtkprintunixdialog.c:3343 +#: ../gtk/gtkprintunixdialog.c:3351 msgid "Page or_dering:" msgstr "Sidor_dning:" -#: gtk/gtkprintunixdialog.c:3359 +#: ../gtk/gtkprintunixdialog.c:3367 msgid "_Only print:" msgstr "Skriv endast _ut:" #. In enum order -#: gtk/gtkprintunixdialog.c:3374 +#: ../gtk/gtkprintunixdialog.c:3382 msgid "All sheets" msgstr "Alla blad" -#: gtk/gtkprintunixdialog.c:3375 +#: ../gtk/gtkprintunixdialog.c:3383 msgid "Even sheets" msgstr "Jämna blad" -#: gtk/gtkprintunixdialog.c:3376 +#: ../gtk/gtkprintunixdialog.c:3384 msgid "Odd sheets" msgstr "Udda blad" -#: gtk/gtkprintunixdialog.c:3379 +#: ../gtk/gtkprintunixdialog.c:3387 msgid "Sc_ale:" msgstr "Sk_ala:" -#: gtk/gtkprintunixdialog.c:3406 +#: ../gtk/gtkprintunixdialog.c:3414 msgid "Paper" msgstr "Papper" -#: gtk/gtkprintunixdialog.c:3410 +#: ../gtk/gtkprintunixdialog.c:3418 msgid "Paper _type:" msgstr "Pappers_typ:" -#: gtk/gtkprintunixdialog.c:3425 +#: ../gtk/gtkprintunixdialog.c:3433 msgid "Paper _source:" msgstr "Pappers_källa:" -#: gtk/gtkprintunixdialog.c:3440 +#: ../gtk/gtkprintunixdialog.c:3448 msgid "Output t_ray:" msgstr "Utsk_riftsfack:" -#: gtk/gtkprintunixdialog.c:3480 +#: ../gtk/gtkprintunixdialog.c:3488 msgid "Or_ientation:" msgstr "Or_ientering:" #. In enum order -#: gtk/gtkprintunixdialog.c:3495 +#: ../gtk/gtkprintunixdialog.c:3503 msgid "Portrait" msgstr "Stående" -#: gtk/gtkprintunixdialog.c:3496 +#: ../gtk/gtkprintunixdialog.c:3504 msgid "Landscape" msgstr "Liggande" -#: gtk/gtkprintunixdialog.c:3497 +#: ../gtk/gtkprintunixdialog.c:3505 msgid "Reverse portrait" msgstr "Omvänt stående" -#: gtk/gtkprintunixdialog.c:3498 +#: ../gtk/gtkprintunixdialog.c:3506 msgid "Reverse landscape" msgstr "Omvänt liggande" -#: gtk/gtkprintunixdialog.c:3543 +#: ../gtk/gtkprintunixdialog.c:3551 msgid "Job Details" msgstr "Jobbdetaljer" -#: gtk/gtkprintunixdialog.c:3549 +#: ../gtk/gtkprintunixdialog.c:3557 msgid "Pri_ority:" msgstr "Pri_oritet:" -#: gtk/gtkprintunixdialog.c:3564 +#: ../gtk/gtkprintunixdialog.c:3572 msgid "_Billing info:" msgstr "Fak_tureringsinformation:" -#: gtk/gtkprintunixdialog.c:3582 +#: ../gtk/gtkprintunixdialog.c:3590 msgid "Print Document" msgstr "Skriv ut dokument" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: gtk/gtkprintunixdialog.c:3591 +#: ../gtk/gtkprintunixdialog.c:3599 msgid "_Now" msgstr "_Nu" -#: gtk/gtkprintunixdialog.c:3602 +#: ../gtk/gtkprintunixdialog.c:3610 msgid "A_t:" msgstr "Kloc_kan:" @@ -1866,7 +1841,7 @@ msgstr "Kloc_kan:" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: gtk/gtkprintunixdialog.c:3608 +#: ../gtk/gtkprintunixdialog.c:3616 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" @@ -1874,122 +1849,120 @@ msgstr "" "Ange tiden för utskrift,\n" " t.ex. 15.30, 02.35, 14.15.20, 11.46.30" -#: gtk/gtkprintunixdialog.c:3618 +#: ../gtk/gtkprintunixdialog.c:3626 msgid "Time of print" msgstr "Tid för utskrift" # Är detta verkligen en bra översättning? -#: gtk/gtkprintunixdialog.c:3634 +#: ../gtk/gtkprintunixdialog.c:3642 msgid "On _hold" msgstr "_Pausad" -#: gtk/gtkprintunixdialog.c:3635 +#: ../gtk/gtkprintunixdialog.c:3643 msgid "Hold the job until it is explicitly released" msgstr "Håll kvar jobbet tills det uttryckligen släpps" -#: gtk/gtkprintunixdialog.c:3655 +#: ../gtk/gtkprintunixdialog.c:3663 msgid "Add Cover Page" msgstr "Lägg till försättssida" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: gtk/gtkprintunixdialog.c:3664 +#: ../gtk/gtkprintunixdialog.c:3672 msgid "Be_fore:" msgstr "_Före:" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: gtk/gtkprintunixdialog.c:3682 +#: ../gtk/gtkprintunixdialog.c:3690 msgid "_After:" msgstr "_Efter:" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: gtk/gtkprintunixdialog.c:3700 +#: ../gtk/gtkprintunixdialog.c:3708 msgid "Job" msgstr "Jobb" -#: gtk/gtkprintunixdialog.c:3766 +#: ../gtk/gtkprintunixdialog.c:3774 msgid "Advanced" msgstr "Avancerat" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3804 +#: ../gtk/gtkprintunixdialog.c:3812 msgid "Image Quality" msgstr "Bildkvalitet" #. Translators: this will appear as tab label in print dialog. -#: gtk/gtkprintunixdialog.c:3808 +#: ../gtk/gtkprintunixdialog.c:3816 msgid "Color" msgstr "Färg" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: gtk/gtkprintunixdialog.c:3813 +#: ../gtk/gtkprintunixdialog.c:3821 msgid "Finishing" msgstr "Färdigställning" -#: gtk/gtkprintunixdialog.c:3823 +#: ../gtk/gtkprintunixdialog.c:3831 msgid "Some of the settings in the dialog conflict" msgstr "Vissa av inställningarna i dialogen är i konflikt" -#: gtk/gtkprintunixdialog.c:3846 +#: ../gtk/gtkprintunixdialog.c:3854 msgid "Print" msgstr "Skriv ut" -#: gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "Kan inte hitta inkluderingsfil: \"%s\"" - -#: gtk/gtkrc.c:3470 gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" msgstr "Kan inte hitta bildfil i \"pixmap_path\": \"%s\"" -#: gtk/gtkrecentaction.c:165 gtk/gtkrecentaction.c:173 -#: gtk/gtkrecentchoosermenu.c:615 gtk/gtkrecentchoosermenu.c:623 +#: ../gtk/gtkrecentaction.c:165 +#: ../gtk/gtkrecentaction.c:173 +#: ../gtk/gtkrecentchoosermenu.c:608 +#: ../gtk/gtkrecentchoosermenu.c:616 #, c-format msgid "This function is not implemented for widgets of class '%s'" msgstr "Denna funktion är inte implementerad för widgetar av klassen \"%s\"" -#: gtk/gtkrecentchooserdefault.c:482 +#: ../gtk/gtkrecentchooserdefault.c:483 msgid "Select which type of documents are shown" msgstr "Välj vilken typ av dokument som visas" -#: gtk/gtkrecentchooserdefault.c:1138 gtk/gtkrecentchooserdefault.c:1175 +#: ../gtk/gtkrecentchooserdefault.c:1133 +#: ../gtk/gtkrecentchooserdefault.c:1170 #, c-format msgid "No item for URI '%s' found" msgstr "Inget objekt för uri:n \"%s\" hittades" -#: gtk/gtkrecentchooserdefault.c:1302 +#: ../gtk/gtkrecentchooserdefault.c:1297 msgid "Untitled filter" msgstr "Namnlöst filter" -#: gtk/gtkrecentchooserdefault.c:1655 +#: ../gtk/gtkrecentchooserdefault.c:1650 msgid "Could not remove item" msgstr "Kunde inte ta bort objekt" -#: gtk/gtkrecentchooserdefault.c:1699 +#: ../gtk/gtkrecentchooserdefault.c:1694 msgid "Could not clear list" msgstr "Kunde inte tömma lista" -#: gtk/gtkrecentchooserdefault.c:1783 +#: ../gtk/gtkrecentchooserdefault.c:1778 msgid "Copy _Location" msgstr "Kopiera _plats" -#: gtk/gtkrecentchooserdefault.c:1796 +#: ../gtk/gtkrecentchooserdefault.c:1791 msgid "_Remove From List" msgstr "_Ta bort från lista" -#: gtk/gtkrecentchooserdefault.c:1805 +#: ../gtk/gtkrecentchooserdefault.c:1800 msgid "_Clear List" msgstr "_Töm lista" -#: gtk/gtkrecentchooserdefault.c:1819 +#: ../gtk/gtkrecentchooserdefault.c:1814 msgid "Show _Private Resources" msgstr "Visa _privata resurser" @@ -2003,21 +1976,22 @@ msgstr "Visa _privata resurser" #. * user appended or prepended custom menu items to the #. * recent chooser menu widget. #. -#: gtk/gtkrecentchoosermenu.c:369 +#: ../gtk/gtkrecentchoosermenu.c:362 msgid "No items found" msgstr "Inga objekt hittades" -#: gtk/gtkrecentchoosermenu.c:535 gtk/gtkrecentchoosermenu.c:591 +#: ../gtk/gtkrecentchoosermenu.c:528 +#: ../gtk/gtkrecentchoosermenu.c:584 #, c-format msgid "No recently used resource found with URI `%s'" msgstr "Ingen tidigare använd resurs hittades med uri:n \"%s\"" -#: gtk/gtkrecentchoosermenu.c:802 +#: ../gtk/gtkrecentchoosermenu.c:795 #, c-format msgid "Open '%s'" msgstr "Öppna \"%s\"" -#: gtk/gtkrecentchoosermenu.c:832 +#: ../gtk/gtkrecentchoosermenu.c:825 msgid "Unknown item" msgstr "Okänt objekt" @@ -2026,7 +2000,7 @@ msgstr "Okänt objekt" #. * the %s is the name of the item. Please keep the _ in front #. * of the number to give these menu items a mnemonic. #. -#: gtk/gtkrecentchoosermenu.c:843 +#: ../gtk/gtkrecentchoosermenu.c:836 #, c-format msgctxt "recent menu label" msgid "_%d. %s" @@ -2035,46 +2009,54 @@ msgstr "_%d. %s" #. This is the format that is used for items in a recent files menu. #. * The %d is the number of the item, the %s is the name of the item. #. -#: gtk/gtkrecentchoosermenu.c:848 +#: ../gtk/gtkrecentchoosermenu.c:841 #, c-format msgctxt "recent menu label" msgid "%d. %s" msgstr "%d. %s" -#: gtk/gtkrecentmanager.c:980 gtk/gtkrecentmanager.c:993 -#: gtk/gtkrecentmanager.c:1131 gtk/gtkrecentmanager.c:1141 -#: gtk/gtkrecentmanager.c:1194 gtk/gtkrecentmanager.c:1203 -#: gtk/gtkrecentmanager.c:1218 +#: ../gtk/gtkrecentmanager.c:1000 +#: ../gtk/gtkrecentmanager.c:1013 +#: ../gtk/gtkrecentmanager.c:1150 +#: ../gtk/gtkrecentmanager.c:1160 +#: ../gtk/gtkrecentmanager.c:1213 +#: ../gtk/gtkrecentmanager.c:1222 +#: ../gtk/gtkrecentmanager.c:1237 #, c-format msgid "Unable to find an item with URI '%s'" msgstr "Kan inte hitta ett objekt med uri \"%s\"" -#: gtk/gtkspinner.c:456 +#: ../gtk/gtkrecentmanager.c:2437 +#, c-format +msgid "No registered application with name '%s' for item with URI '%s' found" +msgstr "Inget registrerat program med namnet \"%s\" hittades för objekt med URI:n \"%s\"" + +#: ../gtk/gtkspinner.c:326 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "Snurrväljare" -#: gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:327 msgid "Provides visual indication of progress" msgstr "Tillhandahåller visuell förloppsindikering" #. KEEP IN SYNC with gtkiconfactory.c stock icons, when appropriate -#: gtk/gtkstock.c:313 +#: ../gtk/gtkstock.c:313 msgctxt "Stock label" msgid "Information" msgstr "Information" -#: gtk/gtkstock.c:314 +#: ../gtk/gtkstock.c:314 msgctxt "Stock label" msgid "Warning" msgstr "Varning" -#: gtk/gtkstock.c:315 +#: ../gtk/gtkstock.c:315 msgctxt "Stock label" msgid "Error" msgstr "Fel" -#: gtk/gtkstock.c:316 +#: ../gtk/gtkstock.c:316 msgctxt "Stock label" msgid "Question" msgstr "Fråga" @@ -2082,698 +2064,723 @@ msgstr "Fråga" #. FIXME these need accelerators when appropriate, and #. * need the mnemonics to be rationalized #. -#: gtk/gtkstock.c:321 +#: ../gtk/gtkstock.c:321 msgctxt "Stock label" msgid "_About" msgstr "_Om" -#: gtk/gtkstock.c:322 +#: ../gtk/gtkstock.c:322 msgctxt "Stock label" msgid "_Add" msgstr "_Lägg till" -#: gtk/gtkstock.c:323 +#: ../gtk/gtkstock.c:323 msgctxt "Stock label" msgid "_Apply" msgstr "_Verkställ" -#: gtk/gtkstock.c:324 +#: ../gtk/gtkstock.c:324 msgctxt "Stock label" msgid "_Bold" msgstr "_Fet" -#: gtk/gtkstock.c:325 +#: ../gtk/gtkstock.c:325 msgctxt "Stock label" msgid "_Cancel" msgstr "_Avbryt" -#: gtk/gtkstock.c:326 -#, fuzzy +#: ../gtk/gtkstock.c:326 msgctxt "Stock label" msgid "_CD-ROM" msgstr "_Cd-rom" -#: gtk/gtkstock.c:327 +#: ../gtk/gtkstock.c:327 msgctxt "Stock label" msgid "_Clear" msgstr "_Töm" -#: gtk/gtkstock.c:328 +#: ../gtk/gtkstock.c:328 msgctxt "Stock label" msgid "_Close" msgstr "S_täng" -#: gtk/gtkstock.c:329 +#: ../gtk/gtkstock.c:329 msgctxt "Stock label" msgid "C_onnect" msgstr "A_nslut" -#: gtk/gtkstock.c:330 +#: ../gtk/gtkstock.c:330 msgctxt "Stock label" msgid "_Convert" msgstr "_Konvertera" -#: gtk/gtkstock.c:331 +#: ../gtk/gtkstock.c:331 msgctxt "Stock label" msgid "_Copy" msgstr "_Kopiera" -#: gtk/gtkstock.c:332 +#: ../gtk/gtkstock.c:332 msgctxt "Stock label" msgid "Cu_t" msgstr "Klipp _ut" -#: gtk/gtkstock.c:333 +#: ../gtk/gtkstock.c:333 msgctxt "Stock label" msgid "_Delete" msgstr "_Ta bort" -#: gtk/gtkstock.c:334 +#: ../gtk/gtkstock.c:334 msgctxt "Stock label" msgid "_Discard" msgstr "_Förkasta" -#: gtk/gtkstock.c:335 +#: ../gtk/gtkstock.c:335 msgctxt "Stock label" msgid "_Disconnect" msgstr "_Koppla från" -#: gtk/gtkstock.c:336 +#: ../gtk/gtkstock.c:336 msgctxt "Stock label" msgid "_Execute" msgstr "_Kör" -#: gtk/gtkstock.c:337 +#: ../gtk/gtkstock.c:337 msgctxt "Stock label" msgid "_Edit" msgstr "R_edigera" -#: gtk/gtkstock.c:338 +#: ../gtk/gtkstock.c:338 msgctxt "Stock label" msgid "_File" msgstr "_Arkiv" -#: gtk/gtkstock.c:339 +#: ../gtk/gtkstock.c:339 msgctxt "Stock label" msgid "_Find" msgstr "_Sök" -#: gtk/gtkstock.c:340 +#: ../gtk/gtkstock.c:340 msgctxt "Stock label" msgid "Find and _Replace" msgstr "Sök och _ersätt" -#: gtk/gtkstock.c:341 +#: ../gtk/gtkstock.c:341 msgctxt "Stock label" msgid "_Floppy" msgstr "_Diskett" -#: gtk/gtkstock.c:342 +#: ../gtk/gtkstock.c:342 msgctxt "Stock label" msgid "_Fullscreen" msgstr "_Helskärm" -#: gtk/gtkstock.c:343 +#: ../gtk/gtkstock.c:343 msgctxt "Stock label" msgid "_Leave Fullscreen" msgstr "_Lämna helskärm" #. This is a navigation label as in "go to the bottom of the page" -#: gtk/gtkstock.c:345 +#: ../gtk/gtkstock.c:345 msgctxt "Stock label, navigation" msgid "_Bottom" msgstr "_Nederst" #. This is a navigation label as in "go to the first page" -#: gtk/gtkstock.c:347 +#: ../gtk/gtkstock.c:347 msgctxt "Stock label, navigation" msgid "_First" msgstr "Fö_rsta" #. This is a navigation label as in "go to the last page" -#: gtk/gtkstock.c:349 +#: ../gtk/gtkstock.c:349 msgctxt "Stock label, navigation" msgid "_Last" msgstr "_Sista" #. This is a navigation label as in "go to the top of the page" -#: gtk/gtkstock.c:351 +#: ../gtk/gtkstock.c:351 msgctxt "Stock label, navigation" msgid "_Top" msgstr "_Överst" #. This is a navigation label as in "go back" -#: gtk/gtkstock.c:353 +#: ../gtk/gtkstock.c:353 msgctxt "Stock label, navigation" msgid "_Back" msgstr "_Bakåt" #. This is a navigation label as in "go down" -#: gtk/gtkstock.c:355 +#: ../gtk/gtkstock.c:355 msgctxt "Stock label, navigation" msgid "_Down" msgstr "_Ned" #. This is a navigation label as in "go forward" -#: gtk/gtkstock.c:357 +#: ../gtk/gtkstock.c:357 msgctxt "Stock label, navigation" msgid "_Forward" msgstr "_Framåt" #. This is a navigation label as in "go up" -#: gtk/gtkstock.c:359 +#: ../gtk/gtkstock.c:359 msgctxt "Stock label, navigation" msgid "_Up" msgstr "_Upp" -#: gtk/gtkstock.c:360 -#, fuzzy +#: ../gtk/gtkstock.c:360 msgctxt "Stock label" msgid "_Hard Disk" msgstr "_Hårddisk" -#: gtk/gtkstock.c:361 +#: ../gtk/gtkstock.c:361 msgctxt "Stock label" msgid "_Help" msgstr "_Hjälp" -#: gtk/gtkstock.c:362 +#: ../gtk/gtkstock.c:362 msgctxt "Stock label" msgid "_Home" msgstr "_Hem" -#: gtk/gtkstock.c:363 +#: ../gtk/gtkstock.c:363 msgctxt "Stock label" msgid "Increase Indent" msgstr "Öka indragning" -#: gtk/gtkstock.c:364 +#: ../gtk/gtkstock.c:364 msgctxt "Stock label" msgid "Decrease Indent" msgstr "Minska indragning" -#: gtk/gtkstock.c:365 +#: ../gtk/gtkstock.c:365 msgctxt "Stock label" msgid "_Index" msgstr "_Index" -#: gtk/gtkstock.c:366 +#: ../gtk/gtkstock.c:366 msgctxt "Stock label" msgid "_Information" msgstr "_Information" -#: gtk/gtkstock.c:367 +#: ../gtk/gtkstock.c:367 msgctxt "Stock label" msgid "_Italic" msgstr "_Kursiv" -#: gtk/gtkstock.c:368 +#: ../gtk/gtkstock.c:368 msgctxt "Stock label" msgid "_Jump to" msgstr "_Hoppa till" #. This is about text justification, "centered text" -#: gtk/gtkstock.c:370 +#: ../gtk/gtkstock.c:370 msgctxt "Stock label" msgid "_Center" msgstr "_Centrera" #. This is about text justification -#: gtk/gtkstock.c:372 +#: ../gtk/gtkstock.c:372 msgctxt "Stock label" msgid "_Fill" msgstr "_Fyll" #. This is about text justification, "left-justified text" -#: gtk/gtkstock.c:374 +#: ../gtk/gtkstock.c:374 msgctxt "Stock label" msgid "_Left" msgstr "_Vänster" #. This is about text justification, "right-justified text" -#: gtk/gtkstock.c:376 +#: ../gtk/gtkstock.c:376 msgctxt "Stock label" msgid "_Right" msgstr "_Höger" #. Media label, as in "fast forward" -#: gtk/gtkstock.c:379 +#: ../gtk/gtkstock.c:379 msgctxt "Stock label, media" msgid "_Forward" msgstr "_Framåt" #. Media label, as in "next song" -#: gtk/gtkstock.c:381 +#: ../gtk/gtkstock.c:381 msgctxt "Stock label, media" msgid "_Next" msgstr "_Nästa" #. Media label, as in "pause music" -#: gtk/gtkstock.c:383 +#: ../gtk/gtkstock.c:383 msgctxt "Stock label, media" msgid "P_ause" msgstr "Gör _paus" #. Media label, as in "play music" -#: gtk/gtkstock.c:385 +#: ../gtk/gtkstock.c:385 msgctxt "Stock label, media" msgid "_Play" msgstr "Spela _upp" #. Media label, as in "previous song" -#: gtk/gtkstock.c:387 +#: ../gtk/gtkstock.c:387 msgctxt "Stock label, media" msgid "Pre_vious" msgstr "Före_gående" #. Media label -#: gtk/gtkstock.c:389 +#: ../gtk/gtkstock.c:389 msgctxt "Stock label, media" msgid "_Record" msgstr "Spela _in" #. Media label -#: gtk/gtkstock.c:391 +#: ../gtk/gtkstock.c:391 msgctxt "Stock label, media" msgid "R_ewind" msgstr "Spola _bakåt" #. Media label -#: gtk/gtkstock.c:393 +#: ../gtk/gtkstock.c:393 msgctxt "Stock label, media" msgid "_Stop" msgstr "_Stoppa" -#: gtk/gtkstock.c:394 +#: ../gtk/gtkstock.c:394 msgctxt "Stock label" msgid "_Network" msgstr "_Nätverk" -#: gtk/gtkstock.c:395 +#: ../gtk/gtkstock.c:395 msgctxt "Stock label" msgid "_New" msgstr "_Ny" -#: gtk/gtkstock.c:396 +#: ../gtk/gtkstock.c:396 msgctxt "Stock label" msgid "_No" msgstr "_Nej" -#: gtk/gtkstock.c:397 +#: ../gtk/gtkstock.c:397 msgctxt "Stock label" msgid "_OK" msgstr "_OK" -#: gtk/gtkstock.c:398 +#: ../gtk/gtkstock.c:398 msgctxt "Stock label" msgid "_Open" msgstr "_Öppna" #. Page orientation -#: gtk/gtkstock.c:400 +#: ../gtk/gtkstock.c:400 msgctxt "Stock label" msgid "Landscape" msgstr "Liggande" #. Page orientation -#: gtk/gtkstock.c:402 +#: ../gtk/gtkstock.c:402 msgctxt "Stock label" msgid "Portrait" msgstr "Stående" #. Page orientation -#: gtk/gtkstock.c:404 +#: ../gtk/gtkstock.c:404 msgctxt "Stock label" msgid "Reverse landscape" msgstr "Omvänt liggande" #. Page orientation -#: gtk/gtkstock.c:406 +#: ../gtk/gtkstock.c:406 msgctxt "Stock label" msgid "Reverse portrait" msgstr "Omvänt stående" -#: gtk/gtkstock.c:407 +#: ../gtk/gtkstock.c:407 msgctxt "Stock label" msgid "Page Set_up" msgstr "Sidinst_ällningar" -#: gtk/gtkstock.c:408 +#: ../gtk/gtkstock.c:408 msgctxt "Stock label" msgid "_Paste" msgstr "Klistra _in" -#: gtk/gtkstock.c:409 +#: ../gtk/gtkstock.c:409 msgctxt "Stock label" msgid "_Preferences" msgstr "_Inställningar" -#: gtk/gtkstock.c:410 +#: ../gtk/gtkstock.c:410 msgctxt "Stock label" msgid "_Print" msgstr "Skriv _ut" -#: gtk/gtkstock.c:411 +#: ../gtk/gtkstock.c:411 msgctxt "Stock label" msgid "Print Pre_view" msgstr "_Förhandsgranska" -#: gtk/gtkstock.c:412 +#: ../gtk/gtkstock.c:412 msgctxt "Stock label" msgid "_Properties" msgstr "_Egenskaper" -#: gtk/gtkstock.c:413 +#: ../gtk/gtkstock.c:413 msgctxt "Stock label" msgid "_Quit" msgstr "A_vsluta" -#: gtk/gtkstock.c:414 +#: ../gtk/gtkstock.c:414 msgctxt "Stock label" msgid "_Redo" msgstr "_Gör om" -#: gtk/gtkstock.c:415 +#: ../gtk/gtkstock.c:415 msgctxt "Stock label" msgid "_Refresh" msgstr "_Uppdatera" -#: gtk/gtkstock.c:416 +#: ../gtk/gtkstock.c:416 msgctxt "Stock label" msgid "_Remove" msgstr "_Ta bort" -#: gtk/gtkstock.c:417 +#: ../gtk/gtkstock.c:417 msgctxt "Stock label" msgid "_Revert" msgstr "_Återställ" -#: gtk/gtkstock.c:418 +#: ../gtk/gtkstock.c:418 msgctxt "Stock label" msgid "_Save" msgstr "_Spara" -#: gtk/gtkstock.c:419 +#: ../gtk/gtkstock.c:419 msgctxt "Stock label" msgid "Save _As" msgstr "Spara so_m" -#: gtk/gtkstock.c:420 +#: ../gtk/gtkstock.c:420 msgctxt "Stock label" msgid "Select _All" msgstr "Markera _allt" -#: gtk/gtkstock.c:421 +#: ../gtk/gtkstock.c:421 msgctxt "Stock label" msgid "_Color" msgstr "_Färg" -#: gtk/gtkstock.c:422 +#: ../gtk/gtkstock.c:422 msgctxt "Stock label" msgid "_Font" msgstr "_Typsnitt" #. Sorting direction -#: gtk/gtkstock.c:424 +#: ../gtk/gtkstock.c:424 msgctxt "Stock label" msgid "_Ascending" msgstr "_Stigande" #. Sorting direction -#: gtk/gtkstock.c:426 +#: ../gtk/gtkstock.c:426 msgctxt "Stock label" msgid "_Descending" msgstr "_Fallande" -#: gtk/gtkstock.c:427 +#: ../gtk/gtkstock.c:427 msgctxt "Stock label" msgid "_Spell Check" msgstr "_Stavningskontroll" -#: gtk/gtkstock.c:428 +#: ../gtk/gtkstock.c:428 msgctxt "Stock label" msgid "_Stop" msgstr "_Stoppa" #. Font variant -#: gtk/gtkstock.c:430 +#: ../gtk/gtkstock.c:430 msgctxt "Stock label" msgid "_Strikethrough" msgstr "_Genomstryk" -#: gtk/gtkstock.c:431 +#: ../gtk/gtkstock.c:431 msgctxt "Stock label" msgid "_Undelete" msgstr "_Återskapa" #. Font variant -#: gtk/gtkstock.c:433 +#: ../gtk/gtkstock.c:433 msgctxt "Stock label" msgid "_Underline" msgstr "_Stryk under" -#: gtk/gtkstock.c:434 +#: ../gtk/gtkstock.c:434 msgctxt "Stock label" msgid "_Undo" msgstr "_Ångra" -#: gtk/gtkstock.c:435 +#: ../gtk/gtkstock.c:435 msgctxt "Stock label" msgid "_Yes" msgstr "_Ja" #. Zoom -#: gtk/gtkstock.c:437 +#: ../gtk/gtkstock.c:437 msgctxt "Stock label" msgid "_Normal Size" msgstr "_Normal storlek" #. Zoom -#: gtk/gtkstock.c:439 +#: ../gtk/gtkstock.c:439 msgctxt "Stock label" msgid "Best _Fit" msgstr "Bästa _passning" -#: gtk/gtkstock.c:440 +#: ../gtk/gtkstock.c:440 msgctxt "Stock label" msgid "Zoom _In" msgstr "Zooma _in" -#: gtk/gtkstock.c:441 +#: ../gtk/gtkstock.c:441 msgctxt "Stock label" msgid "Zoom _Out" msgstr "Zooma _ut" -#: gtk/gtktextbufferrichtext.c:650 +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:306 +#: ../gtk/gtkswitch.c:355 +#: ../gtk/gtkswitch.c:548 +msgctxt "switch" +msgid "ON" +msgstr "PÅ" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:314 +#: ../gtk/gtkswitch.c:356 +#: ../gtk/gtkswitch.c:564 +msgctxt "switch" +msgid "OFF" +msgstr "AV" + +#: ../gtk/gtkswitch.c:963 +msgctxt "light switch widget" +msgid "Switch" +msgstr "Växel" + +#: ../gtk/gtkswitch.c:964 +msgid "Switches between on and off states" +msgstr "Växlar mellan av och på" + +#: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" msgstr "Okänt fel vid försök att deserialisera %s" -#: gtk/gtktextbufferrichtext.c:709 +#: ../gtk/gtktextbufferrichtext.c:709 #, c-format msgid "No deserialize function found for format %s" msgstr "Ingen deserialiseringsfunktion hittad för formatet %s" -#: gtk/gtktextbufferserialize.c:795 gtk/gtktextbufferserialize.c:821 +#: ../gtk/gtktextbufferserialize.c:799 +#: ../gtk/gtktextbufferserialize.c:825 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "Både \"id\" och \"name\" hittades på <%s>-elementet" -#: gtk/gtktextbufferserialize.c:805 gtk/gtktextbufferserialize.c:831 +#: ../gtk/gtktextbufferserialize.c:809 +#: ../gtk/gtktextbufferserialize.c:835 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Attributet \"%s\" hittades två gånger på <%s>-elementet" -#: gtk/gtktextbufferserialize.c:845 -#, fuzzy, c-format +#: ../gtk/gtktextbufferserialize.c:851 +#, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "<%s>-elementet har ett ogiltigt id \"%s\"" -#: gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:861 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s>-elementet har varken ett \"name\"- eller ett \"id\"-attribut" -#: gtk/gtktextbufferserialize.c:942 +#: ../gtk/gtktextbufferserialize.c:948 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" msgstr "Attributet \"%s\" repeterades två gånger på samma <%s>-element" -#: gtk/gtktextbufferserialize.c:960 gtk/gtktextbufferserialize.c:985 +#: ../gtk/gtktextbufferserialize.c:966 +#: ../gtk/gtktextbufferserialize.c:991 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "Attributet \"%s\" är ogiltigt på <%s>-elementet i detta sammanhang" -#: gtk/gtktextbufferserialize.c:1024 +#: ../gtk/gtktextbufferserialize.c:1030 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "Taggen \"%s\" har inte blivit definierad." -#: gtk/gtktextbufferserialize.c:1036 +#: ../gtk/gtktextbufferserialize.c:1042 msgid "Anonymous tag found and tags can not be created." msgstr "Anonym tagg hittades och taggar kan inte skapas." -#: gtk/gtktextbufferserialize.c:1047 +#: ../gtk/gtktextbufferserialize.c:1053 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "Taggen \"%s\" finns inte i bufferten och taggar kan inte skapas." -#: gtk/gtktextbufferserialize.c:1146 gtk/gtktextbufferserialize.c:1221 -#: gtk/gtktextbufferserialize.c:1324 gtk/gtktextbufferserialize.c:1398 +#: ../gtk/gtktextbufferserialize.c:1152 +#: ../gtk/gtktextbufferserialize.c:1227 +#: ../gtk/gtktextbufferserialize.c:1332 +#: ../gtk/gtktextbufferserialize.c:1406 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "Elementet <%s> är inte tillåten under <%s>" -#: gtk/gtktextbufferserialize.c:1177 +#: ../gtk/gtktextbufferserialize.c:1183 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" är inte en giltig attributtyp" -#: gtk/gtktextbufferserialize.c:1185 +#: ../gtk/gtktextbufferserialize.c:1191 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" är inte ett giltigt attributnamn" -#: gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1201 #, c-format -msgid "" -"\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -msgstr "" -"\"%s\" kunde inte konverteras till ett värde av typen \"%s\" för attributet " -"\"%s\"" +msgid "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" +msgstr "\"%s\" kunde inte konverteras till ett värde av typen \"%s\" för attributet \"%s\"" -#: gtk/gtktextbufferserialize.c:1204 +#: ../gtk/gtktextbufferserialize.c:1210 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" är inte ett giltigt värde för attributet \"%s\"" -#: gtk/gtktextbufferserialize.c:1289 +#: ../gtk/gtktextbufferserialize.c:1295 #, c-format msgid "Tag \"%s\" already defined" msgstr "Taggen \"%s\" är redan definierad" -#: gtk/gtktextbufferserialize.c:1300 +#: ../gtk/gtktextbufferserialize.c:1308 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "Taggen \"%s\" har ogiltig prioritet \"%s\"" -#: gtk/gtktextbufferserialize.c:1353 +#: ../gtk/gtktextbufferserialize.c:1361 #, c-format msgid "Outermost element in text must be not <%s>" msgstr "Yttersta elementet i texten måste vara inte <%s>" -#: gtk/gtktextbufferserialize.c:1362 gtk/gtktextbufferserialize.c:1378 +#: ../gtk/gtktextbufferserialize.c:1370 +#: ../gtk/gtktextbufferserialize.c:1386 #, c-format msgid "A <%s> element has already been specified" msgstr "Ett <%s>-element har redan specificerats" -#: gtk/gtktextbufferserialize.c:1384 +#: ../gtk/gtktextbufferserialize.c:1392 msgid "A element can't occur before a element" msgstr "Ett -element kan inte inträffa före ett -element" -#: gtk/gtktextbufferserialize.c:1784 +#: ../gtk/gtktextbufferserialize.c:1792 msgid "Serialized data is malformed" msgstr "Serialiserad data är felformulerad" -#: gtk/gtktextbufferserialize.c:1862 -msgid "" -"Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" -msgstr "" -"Serialiserad data är felformulerad. Första sektionen är inte " -"GTKTEXTBUFFERCONTENTS-0001" +#: ../gtk/gtktextbufferserialize.c:1870 +msgid "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" +msgstr "Serialiserad data är felformulerad. Första sektionen är inte GTKTEXTBUFFERCONTENTS-0001" -#: gtk/gtktextutil.c:60 +#: ../gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" msgstr "LRM-märke för _vänster-till-höger" -#: gtk/gtktextutil.c:61 +#: ../gtk/gtktextutil.c:61 msgid "RLM _Right-to-left mark" msgstr "RLM-märke för _höger-till-vänster" -#: gtk/gtktextutil.c:62 +#: ../gtk/gtktextutil.c:62 msgid "LRE Left-to-right _embedding" msgstr "LRE-_inbäddning för vänster-till-höger" -#: gtk/gtktextutil.c:63 +#: ../gtk/gtktextutil.c:63 msgid "RLE Right-to-left e_mbedding" msgstr "RLE-i_nbäddning för höger-till-vänster" -#: gtk/gtktextutil.c:64 +#: ../gtk/gtktextutil.c:64 msgid "LRO Left-to-right _override" msgstr "LRO-_åsidosättning för vänster-till-höger" -#: gtk/gtktextutil.c:65 +#: ../gtk/gtktextutil.c:65 msgid "RLO Right-to-left o_verride" msgstr "RLO-åsi_dosättning för höger-till-vänster" -#: gtk/gtktextutil.c:66 +#: ../gtk/gtktextutil.c:66 msgid "PDF _Pop directional formatting" msgstr "PDF-_popriktningsformatering" -#: gtk/gtktextutil.c:67 +#: ../gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" msgstr "ZWS-blanksteg _utan bredd" -#: gtk/gtktextutil.c:68 +#: ../gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" msgstr "ZWJ-_sammanslagare utan bredd" -#: gtk/gtktextutil.c:69 +#: ../gtk/gtktextutil.c:69 msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ-_ickesammanslagare utan bredd" -#: gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "Kan inte hitta temamotorn i \"module_path\": \"%s\"," - -#: gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "Oväntad starttagg \"%s\" på rad %d tecken %d" -#: gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "Oväntade teckendata på rad %d tecken %d" -#: gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "Tom" -#: gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" msgstr "Volym" -#: gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "Drar volymen ned eller upp" -#: gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "Justerar volymen" -#: gtk/gtkvolumebutton.c:94 gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 +#: ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" msgstr "Sänk volymen" -#: gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "Sänker volymen" -#: gtk/gtkvolumebutton.c:100 gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 +#: ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" msgstr "Höj volymen" -#: gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "Ökar volymen" -#: gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "Tystad" -#: gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "Full volym" @@ -2782,932 +2789,935 @@ msgstr "Full volym" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" msgstr "%d %%" -#: gtk/paper_names_offsets.c:4 +#: ../gtk/paper_names_offsets.c:4 msgctxt "paper size" msgid "asme_f" msgstr "asme_f" -#: gtk/paper_names_offsets.c:5 +#: ../gtk/paper_names_offsets.c:5 msgctxt "paper size" msgid "A0x2" msgstr "A0x2" -#: gtk/paper_names_offsets.c:6 +#: ../gtk/paper_names_offsets.c:6 msgctxt "paper size" msgid "A0" msgstr "A0" -#: gtk/paper_names_offsets.c:7 +#: ../gtk/paper_names_offsets.c:7 msgctxt "paper size" msgid "A0x3" msgstr "A0x3" -#: gtk/paper_names_offsets.c:8 +#: ../gtk/paper_names_offsets.c:8 msgctxt "paper size" msgid "A1" msgstr "A1" -#: gtk/paper_names_offsets.c:9 +#: ../gtk/paper_names_offsets.c:9 msgctxt "paper size" msgid "A10" msgstr "A10" -#: gtk/paper_names_offsets.c:10 +#: ../gtk/paper_names_offsets.c:10 msgctxt "paper size" msgid "A1x3" msgstr "A1x3" -#: gtk/paper_names_offsets.c:11 +#: ../gtk/paper_names_offsets.c:11 msgctxt "paper size" msgid "A1x4" msgstr "A1x4" -#: gtk/paper_names_offsets.c:12 +#: ../gtk/paper_names_offsets.c:12 msgctxt "paper size" msgid "A2" msgstr "A2" -#: gtk/paper_names_offsets.c:13 +#: ../gtk/paper_names_offsets.c:13 msgctxt "paper size" msgid "A2x3" msgstr "A2x3" -#: gtk/paper_names_offsets.c:14 +#: ../gtk/paper_names_offsets.c:14 msgctxt "paper size" msgid "A2x4" msgstr "A2x4" -#: gtk/paper_names_offsets.c:15 +#: ../gtk/paper_names_offsets.c:15 msgctxt "paper size" msgid "A2x5" msgstr "A2x5" -#: gtk/paper_names_offsets.c:16 +#: ../gtk/paper_names_offsets.c:16 msgctxt "paper size" msgid "A3" msgstr "A3" -#: gtk/paper_names_offsets.c:17 +#: ../gtk/paper_names_offsets.c:17 msgctxt "paper size" msgid "A3 Extra" msgstr "A3 Extra" -#: gtk/paper_names_offsets.c:18 +#: ../gtk/paper_names_offsets.c:18 msgctxt "paper size" msgid "A3x3" msgstr "A3x3" -#: gtk/paper_names_offsets.c:19 +#: ../gtk/paper_names_offsets.c:19 msgctxt "paper size" msgid "A3x4" msgstr "A3x4" -#: gtk/paper_names_offsets.c:20 +#: ../gtk/paper_names_offsets.c:20 msgctxt "paper size" msgid "A3x5" msgstr "A3x5" -#: gtk/paper_names_offsets.c:21 +#: ../gtk/paper_names_offsets.c:21 msgctxt "paper size" msgid "A3x6" msgstr "A3x6" -#: gtk/paper_names_offsets.c:22 +#: ../gtk/paper_names_offsets.c:22 msgctxt "paper size" msgid "A3x7" msgstr "A3x7" -#: gtk/paper_names_offsets.c:23 +#: ../gtk/paper_names_offsets.c:23 msgctxt "paper size" msgid "A4" msgstr "A4" -#: gtk/paper_names_offsets.c:24 +#: ../gtk/paper_names_offsets.c:24 msgctxt "paper size" msgid "A4 Extra" msgstr "A4 Extra" -#: gtk/paper_names_offsets.c:25 +#: ../gtk/paper_names_offsets.c:25 msgctxt "paper size" msgid "A4 Tab" msgstr "A4 Tab" -#: gtk/paper_names_offsets.c:26 +#: ../gtk/paper_names_offsets.c:26 msgctxt "paper size" msgid "A4x3" msgstr "A4x3" -#: gtk/paper_names_offsets.c:27 +#: ../gtk/paper_names_offsets.c:27 msgctxt "paper size" msgid "A4x4" msgstr "A4x4" -#: gtk/paper_names_offsets.c:28 +#: ../gtk/paper_names_offsets.c:28 msgctxt "paper size" msgid "A4x5" msgstr "A4x5" -#: gtk/paper_names_offsets.c:29 +#: ../gtk/paper_names_offsets.c:29 msgctxt "paper size" msgid "A4x6" msgstr "A4x6" -#: gtk/paper_names_offsets.c:30 +#: ../gtk/paper_names_offsets.c:30 msgctxt "paper size" msgid "A4x7" msgstr "A4x7" -#: gtk/paper_names_offsets.c:31 +#: ../gtk/paper_names_offsets.c:31 msgctxt "paper size" msgid "A4x8" msgstr "A4x8" -#: gtk/paper_names_offsets.c:32 +#: ../gtk/paper_names_offsets.c:32 msgctxt "paper size" msgid "A4x9" msgstr "A4x9" -#: gtk/paper_names_offsets.c:33 +#: ../gtk/paper_names_offsets.c:33 msgctxt "paper size" msgid "A5" msgstr "A5" -#: gtk/paper_names_offsets.c:34 +#: ../gtk/paper_names_offsets.c:34 msgctxt "paper size" msgid "A5 Extra" msgstr "A5 Extra" -#: gtk/paper_names_offsets.c:35 +#: ../gtk/paper_names_offsets.c:35 msgctxt "paper size" msgid "A6" msgstr "A6" -#: gtk/paper_names_offsets.c:36 +#: ../gtk/paper_names_offsets.c:36 msgctxt "paper size" msgid "A7" msgstr "A7" -#: gtk/paper_names_offsets.c:37 +#: ../gtk/paper_names_offsets.c:37 msgctxt "paper size" msgid "A8" msgstr "A8" -#: gtk/paper_names_offsets.c:38 +#: ../gtk/paper_names_offsets.c:38 msgctxt "paper size" msgid "A9" msgstr "A9" -#: gtk/paper_names_offsets.c:39 +#: ../gtk/paper_names_offsets.c:39 msgctxt "paper size" msgid "B0" msgstr "B0" -#: gtk/paper_names_offsets.c:40 +#: ../gtk/paper_names_offsets.c:40 msgctxt "paper size" msgid "B1" msgstr "B1" -#: gtk/paper_names_offsets.c:41 +#: ../gtk/paper_names_offsets.c:41 msgctxt "paper size" msgid "B10" msgstr "B10" -#: gtk/paper_names_offsets.c:42 +#: ../gtk/paper_names_offsets.c:42 msgctxt "paper size" msgid "B2" msgstr "B2" -#: gtk/paper_names_offsets.c:43 +#: ../gtk/paper_names_offsets.c:43 msgctxt "paper size" msgid "B3" msgstr "B3" -#: gtk/paper_names_offsets.c:44 +#: ../gtk/paper_names_offsets.c:44 msgctxt "paper size" msgid "B4" msgstr "B4" -#: gtk/paper_names_offsets.c:45 +#: ../gtk/paper_names_offsets.c:45 msgctxt "paper size" msgid "B5" msgstr "B5" -#: gtk/paper_names_offsets.c:46 +#: ../gtk/paper_names_offsets.c:46 msgctxt "paper size" msgid "B5 Extra" msgstr "B5 Extra" -#: gtk/paper_names_offsets.c:47 +#: ../gtk/paper_names_offsets.c:47 msgctxt "paper size" msgid "B6" msgstr "B6" -#: gtk/paper_names_offsets.c:48 +#: ../gtk/paper_names_offsets.c:48 msgctxt "paper size" msgid "B6/C4" msgstr "B6/C4" -#: gtk/paper_names_offsets.c:49 +#: ../gtk/paper_names_offsets.c:49 msgctxt "paper size" msgid "B7" msgstr "B7" -#: gtk/paper_names_offsets.c:50 +#: ../gtk/paper_names_offsets.c:50 msgctxt "paper size" msgid "B8" msgstr "B8" -#: gtk/paper_names_offsets.c:51 +#: ../gtk/paper_names_offsets.c:51 msgctxt "paper size" msgid "B9" msgstr "B9" -#: gtk/paper_names_offsets.c:52 +#: ../gtk/paper_names_offsets.c:52 msgctxt "paper size" msgid "C0" msgstr "C0" -#: gtk/paper_names_offsets.c:53 +#: ../gtk/paper_names_offsets.c:53 msgctxt "paper size" msgid "C1" msgstr "C1" -#: gtk/paper_names_offsets.c:54 +#: ../gtk/paper_names_offsets.c:54 msgctxt "paper size" msgid "C10" msgstr "C10" -#: gtk/paper_names_offsets.c:55 +#: ../gtk/paper_names_offsets.c:55 msgctxt "paper size" msgid "C2" msgstr "C2" -#: gtk/paper_names_offsets.c:56 +#: ../gtk/paper_names_offsets.c:56 msgctxt "paper size" msgid "C3" msgstr "C3" -#: gtk/paper_names_offsets.c:57 +#: ../gtk/paper_names_offsets.c:57 msgctxt "paper size" msgid "C4" msgstr "C4" -#: gtk/paper_names_offsets.c:58 +#: ../gtk/paper_names_offsets.c:58 msgctxt "paper size" msgid "C5" msgstr "C5" -#: gtk/paper_names_offsets.c:59 +#: ../gtk/paper_names_offsets.c:59 msgctxt "paper size" msgid "C6" msgstr "C6" -#: gtk/paper_names_offsets.c:60 +#: ../gtk/paper_names_offsets.c:60 msgctxt "paper size" msgid "C6/C5" msgstr "C6/C5" -#: gtk/paper_names_offsets.c:61 +#: ../gtk/paper_names_offsets.c:61 msgctxt "paper size" msgid "C7" msgstr "C7" -#: gtk/paper_names_offsets.c:62 +#: ../gtk/paper_names_offsets.c:62 msgctxt "paper size" msgid "C7/C6" msgstr "C7/C6" -#: gtk/paper_names_offsets.c:63 +#: ../gtk/paper_names_offsets.c:63 msgctxt "paper size" msgid "C8" msgstr "C8" -#: gtk/paper_names_offsets.c:64 +#: ../gtk/paper_names_offsets.c:64 msgctxt "paper size" msgid "C9" msgstr "C9" -#: gtk/paper_names_offsets.c:65 +#: ../gtk/paper_names_offsets.c:65 msgctxt "paper size" msgid "DL Envelope" msgstr "DL-kuvert" -#: gtk/paper_names_offsets.c:66 +#: ../gtk/paper_names_offsets.c:66 msgctxt "paper size" msgid "RA0" msgstr "RA0" -#: gtk/paper_names_offsets.c:67 +#: ../gtk/paper_names_offsets.c:67 msgctxt "paper size" msgid "RA1" msgstr "RA1" -#: gtk/paper_names_offsets.c:68 +#: ../gtk/paper_names_offsets.c:68 msgctxt "paper size" msgid "RA2" msgstr "RA2" -#: gtk/paper_names_offsets.c:69 +#: ../gtk/paper_names_offsets.c:69 msgctxt "paper size" msgid "SRA0" msgstr "SRA0" -#: gtk/paper_names_offsets.c:70 +#: ../gtk/paper_names_offsets.c:70 msgctxt "paper size" msgid "SRA1" msgstr "SRA1" -#: gtk/paper_names_offsets.c:71 +#: ../gtk/paper_names_offsets.c:71 msgctxt "paper size" msgid "SRA2" msgstr "SRA2" -#: gtk/paper_names_offsets.c:72 +#: ../gtk/paper_names_offsets.c:72 msgctxt "paper size" msgid "JB0" msgstr "JB0" -#: gtk/paper_names_offsets.c:73 +#: ../gtk/paper_names_offsets.c:73 msgctxt "paper size" msgid "JB1" msgstr "JB1" -#: gtk/paper_names_offsets.c:74 +#: ../gtk/paper_names_offsets.c:74 msgctxt "paper size" msgid "JB10" msgstr "JB10" -#: gtk/paper_names_offsets.c:75 +#: ../gtk/paper_names_offsets.c:75 msgctxt "paper size" msgid "JB2" msgstr "JB2" -#: gtk/paper_names_offsets.c:76 +#: ../gtk/paper_names_offsets.c:76 msgctxt "paper size" msgid "JB3" msgstr "JB3" -#: gtk/paper_names_offsets.c:77 +#: ../gtk/paper_names_offsets.c:77 msgctxt "paper size" msgid "JB4" msgstr "JB4" -#: gtk/paper_names_offsets.c:78 +#: ../gtk/paper_names_offsets.c:78 msgctxt "paper size" msgid "JB5" msgstr "JB5" -#: gtk/paper_names_offsets.c:79 +#: ../gtk/paper_names_offsets.c:79 msgctxt "paper size" msgid "JB6" msgstr "JB6" -#: gtk/paper_names_offsets.c:80 +#: ../gtk/paper_names_offsets.c:80 msgctxt "paper size" msgid "JB7" msgstr "JB7" -#: gtk/paper_names_offsets.c:81 +#: ../gtk/paper_names_offsets.c:81 msgctxt "paper size" msgid "JB8" msgstr "JB8" -#: gtk/paper_names_offsets.c:82 +#: ../gtk/paper_names_offsets.c:82 msgctxt "paper size" msgid "JB9" msgstr "JB9" -#: gtk/paper_names_offsets.c:83 +#: ../gtk/paper_names_offsets.c:83 msgctxt "paper size" msgid "jis exec" msgstr "jis exec" -#: gtk/paper_names_offsets.c:84 +#: ../gtk/paper_names_offsets.c:84 msgctxt "paper size" msgid "Choukei 2 Envelope" msgstr "Choukei 2-kuvert" -#: gtk/paper_names_offsets.c:85 +#: ../gtk/paper_names_offsets.c:85 msgctxt "paper size" msgid "Choukei 3 Envelope" msgstr "Choukei 3-kuvert" -#: gtk/paper_names_offsets.c:86 +#: ../gtk/paper_names_offsets.c:86 msgctxt "paper size" msgid "Choukei 4 Envelope" msgstr "Choukei 4-kuvert" -#: gtk/paper_names_offsets.c:87 +#: ../gtk/paper_names_offsets.c:87 msgctxt "paper size" msgid "hagaki (postcard)" msgstr "hagaki (vykort)" -#: gtk/paper_names_offsets.c:88 +#: ../gtk/paper_names_offsets.c:88 msgctxt "paper size" msgid "kahu Envelope" msgstr "kahu-kuvert" -#: gtk/paper_names_offsets.c:89 +#: ../gtk/paper_names_offsets.c:89 msgctxt "paper size" msgid "kaku2 Envelope" msgstr "kaku2-kuvert" -#: gtk/paper_names_offsets.c:90 +#: ../gtk/paper_names_offsets.c:90 msgctxt "paper size" msgid "oufuku (reply postcard)" msgstr "oufuku (svarsvykort)" -#: gtk/paper_names_offsets.c:91 +#: ../gtk/paper_names_offsets.c:91 msgctxt "paper size" msgid "you4 Envelope" msgstr "you4-kuvert" -#: gtk/paper_names_offsets.c:92 +#: ../gtk/paper_names_offsets.c:92 msgctxt "paper size" msgid "10x11" msgstr "10x11" -#: gtk/paper_names_offsets.c:93 +#: ../gtk/paper_names_offsets.c:93 msgctxt "paper size" msgid "10x13" msgstr "10x13" -#: gtk/paper_names_offsets.c:94 +#: ../gtk/paper_names_offsets.c:94 msgctxt "paper size" msgid "10x14" msgstr "10x14" -#: gtk/paper_names_offsets.c:95 gtk/paper_names_offsets.c:96 +#: ../gtk/paper_names_offsets.c:95 +#: ../gtk/paper_names_offsets.c:96 msgctxt "paper size" msgid "10x15" msgstr "10x15" -#: gtk/paper_names_offsets.c:97 +#: ../gtk/paper_names_offsets.c:97 msgctxt "paper size" msgid "11x12" msgstr "11x12" -#: gtk/paper_names_offsets.c:98 +#: ../gtk/paper_names_offsets.c:98 msgctxt "paper size" msgid "11x15" msgstr "11x15" -#: gtk/paper_names_offsets.c:99 +#: ../gtk/paper_names_offsets.c:99 msgctxt "paper size" msgid "12x19" msgstr "12x19" -#: gtk/paper_names_offsets.c:100 +#: ../gtk/paper_names_offsets.c:100 msgctxt "paper size" msgid "5x7" msgstr "5x7" -#: gtk/paper_names_offsets.c:101 +#: ../gtk/paper_names_offsets.c:101 msgctxt "paper size" msgid "6x9 Envelope" msgstr "6x9-kuvert" -#: gtk/paper_names_offsets.c:102 +#: ../gtk/paper_names_offsets.c:102 msgctxt "paper size" msgid "7x9 Envelope" msgstr "7x9-kuvert" -#: gtk/paper_names_offsets.c:103 +#: ../gtk/paper_names_offsets.c:103 msgctxt "paper size" msgid "9x11 Envelope" msgstr "9x11-kuvert" -#: gtk/paper_names_offsets.c:104 +#: ../gtk/paper_names_offsets.c:104 msgctxt "paper size" msgid "a2 Envelope" msgstr "a2-kuvert" -#: gtk/paper_names_offsets.c:105 +#: ../gtk/paper_names_offsets.c:105 msgctxt "paper size" msgid "Arch A" msgstr "Arch A" -#: gtk/paper_names_offsets.c:106 +#: ../gtk/paper_names_offsets.c:106 msgctxt "paper size" msgid "Arch B" msgstr "Arch B" -#: gtk/paper_names_offsets.c:107 +#: ../gtk/paper_names_offsets.c:107 msgctxt "paper size" msgid "Arch C" msgstr "Arch C" -#: gtk/paper_names_offsets.c:108 +#: ../gtk/paper_names_offsets.c:108 msgctxt "paper size" msgid "Arch D" msgstr "Arch D" -#: gtk/paper_names_offsets.c:109 +#: ../gtk/paper_names_offsets.c:109 msgctxt "paper size" msgid "Arch E" msgstr "Arch E" -#: gtk/paper_names_offsets.c:110 +#: ../gtk/paper_names_offsets.c:110 msgctxt "paper size" msgid "b-plus" msgstr "b-plus" -#: gtk/paper_names_offsets.c:111 +#: ../gtk/paper_names_offsets.c:111 msgctxt "paper size" msgid "c" msgstr "c" -#: gtk/paper_names_offsets.c:112 +#: ../gtk/paper_names_offsets.c:112 msgctxt "paper size" msgid "c5 Envelope" msgstr "c5-kuvert" -#: gtk/paper_names_offsets.c:113 +#: ../gtk/paper_names_offsets.c:113 msgctxt "paper size" msgid "d" msgstr "d" -#: gtk/paper_names_offsets.c:114 +#: ../gtk/paper_names_offsets.c:114 msgctxt "paper size" msgid "e" msgstr "e" -#: gtk/paper_names_offsets.c:115 +#: ../gtk/paper_names_offsets.c:115 msgctxt "paper size" msgid "edp" msgstr "edp" -#: gtk/paper_names_offsets.c:116 +#: ../gtk/paper_names_offsets.c:116 msgctxt "paper size" msgid "European edp" msgstr "Europeisk edp" -#: gtk/paper_names_offsets.c:117 +#: ../gtk/paper_names_offsets.c:117 msgctxt "paper size" msgid "Executive" msgstr "Executive" -#: gtk/paper_names_offsets.c:118 +#: ../gtk/paper_names_offsets.c:118 msgctxt "paper size" msgid "f" msgstr "f" -#: gtk/paper_names_offsets.c:119 +#: ../gtk/paper_names_offsets.c:119 msgctxt "paper size" msgid "FanFold European" msgstr "FanFold Europeisk" -#: gtk/paper_names_offsets.c:120 +#: ../gtk/paper_names_offsets.c:120 msgctxt "paper size" msgid "FanFold US" msgstr "FanFold US" -#: gtk/paper_names_offsets.c:121 +#: ../gtk/paper_names_offsets.c:121 msgctxt "paper size" msgid "FanFold German Legal" msgstr "FanFold Tysk Legal" -#: gtk/paper_names_offsets.c:122 +#: ../gtk/paper_names_offsets.c:122 msgctxt "paper size" msgid "Government Legal" msgstr "Government Legal" -#: gtk/paper_names_offsets.c:123 +#: ../gtk/paper_names_offsets.c:123 msgctxt "paper size" msgid "Government Letter" msgstr "Government Letter" -#: gtk/paper_names_offsets.c:124 +#: ../gtk/paper_names_offsets.c:124 msgctxt "paper size" msgid "Index 3x5" msgstr "Index 3x5" -#: gtk/paper_names_offsets.c:125 +#: ../gtk/paper_names_offsets.c:125 msgctxt "paper size" msgid "Index 4x6 (postcard)" msgstr "Index 4x6 (vykort)" -#: gtk/paper_names_offsets.c:126 +#: ../gtk/paper_names_offsets.c:126 msgctxt "paper size" msgid "Index 4x6 ext" msgstr "Index 4x6 ext" -#: gtk/paper_names_offsets.c:127 +#: ../gtk/paper_names_offsets.c:127 msgctxt "paper size" msgid "Index 5x8" msgstr "Index 5x8" -#: gtk/paper_names_offsets.c:128 +#: ../gtk/paper_names_offsets.c:128 msgctxt "paper size" msgid "Invoice" msgstr "Faktura" -#: gtk/paper_names_offsets.c:129 +#: ../gtk/paper_names_offsets.c:129 msgctxt "paper size" msgid "Tabloid" msgstr "Tablå" -#: gtk/paper_names_offsets.c:130 +#: ../gtk/paper_names_offsets.c:130 msgctxt "paper size" msgid "US Legal" msgstr "US Legal" -#: gtk/paper_names_offsets.c:131 +#: ../gtk/paper_names_offsets.c:131 msgctxt "paper size" msgid "US Legal Extra" msgstr "US Legal Extra" -#: gtk/paper_names_offsets.c:132 +#: ../gtk/paper_names_offsets.c:132 msgctxt "paper size" msgid "US Letter" msgstr "US Letter" -#: gtk/paper_names_offsets.c:133 +#: ../gtk/paper_names_offsets.c:133 msgctxt "paper size" msgid "US Letter Extra" msgstr "US Letter Extra" -#: gtk/paper_names_offsets.c:134 +#: ../gtk/paper_names_offsets.c:134 msgctxt "paper size" msgid "US Letter Plus" msgstr "US Letter Plus" -#: gtk/paper_names_offsets.c:135 +#: ../gtk/paper_names_offsets.c:135 msgctxt "paper size" msgid "Monarch Envelope" msgstr "Monark-kuvert" -#: gtk/paper_names_offsets.c:136 +#: ../gtk/paper_names_offsets.c:136 msgctxt "paper size" msgid "#10 Envelope" msgstr "#10-kuvert" -#: gtk/paper_names_offsets.c:137 +#: ../gtk/paper_names_offsets.c:137 msgctxt "paper size" msgid "#11 Envelope" msgstr "#11-kuvert" -#: gtk/paper_names_offsets.c:138 +#: ../gtk/paper_names_offsets.c:138 msgctxt "paper size" msgid "#12 Envelope" msgstr "#12-kuvert" -#: gtk/paper_names_offsets.c:139 +#: ../gtk/paper_names_offsets.c:139 msgctxt "paper size" msgid "#14 Envelope" msgstr "#14-kuvert" -#: gtk/paper_names_offsets.c:140 +#: ../gtk/paper_names_offsets.c:140 msgctxt "paper size" msgid "#9 Envelope" msgstr "#9-kuvert" -#: gtk/paper_names_offsets.c:141 +#: ../gtk/paper_names_offsets.c:141 msgctxt "paper size" msgid "Personal Envelope" msgstr "Personligt kuvert" -#: gtk/paper_names_offsets.c:142 +#: ../gtk/paper_names_offsets.c:142 msgctxt "paper size" msgid "Quarto" msgstr "Quarto" -#: gtk/paper_names_offsets.c:143 +#: ../gtk/paper_names_offsets.c:143 msgctxt "paper size" msgid "Super A" msgstr "Super A" -#: gtk/paper_names_offsets.c:144 +#: ../gtk/paper_names_offsets.c:144 msgctxt "paper size" msgid "Super B" msgstr "Super B" -#: gtk/paper_names_offsets.c:145 +#: ../gtk/paper_names_offsets.c:145 msgctxt "paper size" msgid "Wide Format" msgstr "Brett format" -#: gtk/paper_names_offsets.c:146 +#: ../gtk/paper_names_offsets.c:146 msgctxt "paper size" msgid "Dai-pa-kai" msgstr "Dai-pa-kai" -#: gtk/paper_names_offsets.c:147 +#: ../gtk/paper_names_offsets.c:147 msgctxt "paper size" msgid "Folio" msgstr "Folio" -#: gtk/paper_names_offsets.c:148 +#: ../gtk/paper_names_offsets.c:148 msgctxt "paper size" msgid "Folio sp" msgstr "Folio sp" -#: gtk/paper_names_offsets.c:149 +#: ../gtk/paper_names_offsets.c:149 msgctxt "paper size" msgid "Invite Envelope" msgstr "Invite-kuvert" -#: gtk/paper_names_offsets.c:150 +#: ../gtk/paper_names_offsets.c:150 msgctxt "paper size" msgid "Italian Envelope" msgstr "Italienskt kuvert" -#: gtk/paper_names_offsets.c:151 +#: ../gtk/paper_names_offsets.c:151 msgctxt "paper size" msgid "juuro-ku-kai" msgstr "juuro-ku-kai" -#: gtk/paper_names_offsets.c:152 +#: ../gtk/paper_names_offsets.c:152 msgctxt "paper size" msgid "pa-kai" msgstr "pa-kai" -#: gtk/paper_names_offsets.c:153 +#: ../gtk/paper_names_offsets.c:153 msgctxt "paper size" msgid "Postfix Envelope" msgstr "Postfix-kuvert" -#: gtk/paper_names_offsets.c:154 +#: ../gtk/paper_names_offsets.c:154 msgctxt "paper size" msgid "Small Photo" msgstr "Litet foto" -#: gtk/paper_names_offsets.c:155 +#: ../gtk/paper_names_offsets.c:155 msgctxt "paper size" msgid "prc1 Envelope" msgstr "prc1-kuvert" -#: gtk/paper_names_offsets.c:156 +#: ../gtk/paper_names_offsets.c:156 msgctxt "paper size" msgid "prc10 Envelope" msgstr "prc10-kuvert" -#: gtk/paper_names_offsets.c:157 +#: ../gtk/paper_names_offsets.c:157 msgctxt "paper size" msgid "prc 16k" msgstr "prc 16k" -#: gtk/paper_names_offsets.c:158 +#: ../gtk/paper_names_offsets.c:158 msgctxt "paper size" msgid "prc2 Envelope" msgstr "prc2-kuvert" -#: gtk/paper_names_offsets.c:159 +#: ../gtk/paper_names_offsets.c:159 msgctxt "paper size" msgid "prc3 Envelope" msgstr "prc3-kuvert" -#: gtk/paper_names_offsets.c:160 +#: ../gtk/paper_names_offsets.c:160 msgctxt "paper size" msgid "prc 32k" msgstr "prc 32k" -#: gtk/paper_names_offsets.c:161 +#: ../gtk/paper_names_offsets.c:161 msgctxt "paper size" msgid "prc4 Envelope" msgstr "prc4-kuvert" -#: gtk/paper_names_offsets.c:162 +#: ../gtk/paper_names_offsets.c:162 msgctxt "paper size" msgid "prc5 Envelope" msgstr "prc5-kuvert" -#: gtk/paper_names_offsets.c:163 +#: ../gtk/paper_names_offsets.c:163 msgctxt "paper size" msgid "prc6 Envelope" msgstr "prc6-kuvert" -#: gtk/paper_names_offsets.c:164 +#: ../gtk/paper_names_offsets.c:164 msgctxt "paper size" msgid "prc7 Envelope" msgstr "prc7-kuvert" -#: gtk/paper_names_offsets.c:165 +#: ../gtk/paper_names_offsets.c:165 msgctxt "paper size" msgid "prc8 Envelope" msgstr "prc8-kuvert" -#: gtk/paper_names_offsets.c:166 +#: ../gtk/paper_names_offsets.c:166 msgctxt "paper size" msgid "prc9 Envelope" msgstr "prc9-kuvert" -#: gtk/paper_names_offsets.c:167 +#: ../gtk/paper_names_offsets.c:167 msgctxt "paper size" msgid "ROC 16k" msgstr "ROC 16k" -#: gtk/paper_names_offsets.c:168 +#: ../gtk/paper_names_offsets.c:168 msgctxt "paper size" msgid "ROC 8k" msgstr "ROC 8k" -#: gtk/updateiconcache.c:492 gtk/updateiconcache.c:552 +#: ../gtk/updateiconcache.c:492 +#: ../gtk/updateiconcache.c:552 #, c-format msgid "different idatas found for symlinked '%s' and '%s'\n" msgstr "olika idata hittades för symboliska länkade \"%s\" och \"%s\"\n" -#: gtk/updateiconcache.c:1374 +#: ../gtk/updateiconcache.c:1374 #, c-format msgid "Failed to write header\n" msgstr "Misslyckades med att skriva huvud\n" -#: gtk/updateiconcache.c:1380 +#: ../gtk/updateiconcache.c:1380 #, c-format msgid "Failed to write hash table\n" msgstr "Misslyckades med att skriva hashtabell\n" -#: gtk/updateiconcache.c:1386 +#: ../gtk/updateiconcache.c:1386 #, c-format msgid "Failed to write folder index\n" msgstr "Misslyckades med att skriva mappindex\n" -#: gtk/updateiconcache.c:1394 +#: ../gtk/updateiconcache.c:1394 #, c-format msgid "Failed to rewrite header\n" msgstr "Misslyckades med att skriva om huvud\n" -#: gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "Misslyckades med att öppna filen %s : %s\n" -#: gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 +#: ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "Misslyckades med att skriva cachefil: %s\n" -#: gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "Den genererade cachen var ogiltig.\n" -#: gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "Kunde inte byta namn på %s till %s: %s, tar bort %s.\n" -#: gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "Kunde inte byta namn på %s till %s: %s\n" -#: gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "Kunde inte byta namn på %s tillbaka till %s: %s.\n" -#: gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "Cachefil skapades.\n" -#: gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "Skriv över en befintlig cache, även om den är uppdaterad" -#: gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "Kontrollera inte om index.theme finns" -#: gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "Inkludera inte bilddata i cachen" -#: gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "Skriv ut en C-headerfil" -#: gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "Stäng av informativ utskrift" -#: gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "Validera befintlig ikoncache" -#: gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "Filen hittades inte: %s\n" -#: gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "Inte en giltig ikoncache: %s\n" -#: gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "Ingen temaindexfil.\n" -#: gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, c-format msgid "" "No theme index file in '%s'.\n" @@ -3717,311 +3727,310 @@ msgstr "" "Om du verkligen vill skapa en ikoncache här, använd --ignore-theme-index.\n" #. ID -#: modules/input/imam-et.c:454 +#: ../modules/input/imam-et.c:454 msgid "Amharic (EZ+)" msgstr "Amharisk (EZ+)" #. ID -#: modules/input/imcedilla.c:92 +#: ../modules/input/imcedilla.c:92 msgid "Cedilla" msgstr "Cedilj" #. ID -#: modules/input/imcyrillic-translit.c:217 +#: ../modules/input/imcyrillic-translit.c:217 msgid "Cyrillic (Transliterated)" msgstr "Kyrillisk (Translitererad)" #. ID -#: modules/input/iminuktitut.c:127 +#: ../modules/input/iminuktitut.c:127 msgid "Inuktitut (Transliterated)" msgstr "Inuktitut (Translitererad)" #. ID -#: modules/input/imipa.c:145 +#: ../modules/input/imipa.c:145 msgid "IPA" msgstr "IPA" # Osäker. #. ID -#: modules/input/immultipress.c:31 +#: ../modules/input/immultipress.c:31 msgid "Multipress" msgstr "Multipress" #. ID -#: modules/input/imthai.c:35 +#: ../modules/input/imthai.c:35 msgid "Thai-Lao" msgstr "Thai-Lao" #. ID -#: modules/input/imti-er.c:453 +#: ../modules/input/imti-er.c:453 msgid "Tigrigna-Eritrean (EZ+)" msgstr "Tigrigna-Eritreansk (EZ+)" #. ID -#: modules/input/imti-et.c:453 +#: ../modules/input/imti-et.c:453 msgid "Tigrigna-Ethiopian (EZ+)" msgstr "Tigrigna-Etiopisk (EZ+)" #. ID -#: modules/input/imviqr.c:244 +#: ../modules/input/imviqr.c:244 msgid "Vietnamese (VIQR)" msgstr "Vietnamesisk (VIQR)" #. ID -#: modules/input/imxim.c:28 +#: ../modules/input/imxim.c:28 msgid "X Input Method" msgstr "X-inmatningsmetod" -#: modules/printbackends/cups/gtkprintbackendcups.c:811 -#: modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 msgid "Username:" msgstr "Användarnamn:" -#: modules/printbackends/cups/gtkprintbackendcups.c:812 -#: modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 msgid "Password:" msgstr "Lösenord:" -#: modules/printbackends/cups/gtkprintbackendcups.c:850 -#, c-format -msgid "Authentication is required to get a file from %s" -msgstr "Autentisering krävs för att hämta en fil från %s" - -#: modules/printbackends/cups/gtkprintbackendcups.c:854 -#: modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 #, c-format msgid "Authentication is required to print document '%s' on printer %s" -msgstr "" -"Autentisering krävs för att skriva ut dokumentet \"%s\" på skrivaren %s" +msgstr "Autentisering krävs för att skriva ut dokumentet \"%s\" på skrivaren %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 #, c-format msgid "Authentication is required to print a document on %s" msgstr "Autentisering krävs för att skriva ut ett dokument på %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:860 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "Autentisering krävs för att hämta attributen för jobbet \"%s\"" -#: modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 msgid "Authentication is required to get attributes of a job" msgstr "Autentisering krävs för att hämta attributen för ett jobb" -#: modules/printbackends/cups/gtkprintbackendcups.c:866 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "Autentisering krävs för att hämta attributen för skrivaren %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:868 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 msgid "Authentication is required to get attributes of a printer" msgstr "Autentisering krävs för att hämta attributen för en skrivare" -#: modules/printbackends/cups/gtkprintbackendcups.c:871 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "Autentisering krävs för att hämta standardskrivaren för %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:874 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 #, c-format msgid "Authentication is required to get printers from %s" msgstr "Autentisering krävs för att hämta skrivare från %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#, c-format +msgid "Authentication is required to get a file from %s" +msgstr "Autentisering krävs för att hämta en fil från %s" + +#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 #, c-format msgid "Authentication is required on %s" msgstr "Autentisering krävs på %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 msgid "Domain:" msgstr "Domän:" -#: modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 #, c-format msgid "Authentication is required to print document '%s'" msgstr "Autentisering krävs för att skriva ut dokumentet \"%s\"" -#: modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "Autentisering krävs för att skriva ut detta dokument på skrivaren %s" -#: modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 msgid "Authentication is required to print this document" msgstr "Autentisering krävs för att skriva ut detta dokument" -#: modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 #, c-format msgid "Printer '%s' is low on toner." msgstr "Skrivaren \"%s\" har snart slut på toner." -#: modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 #, c-format msgid "Printer '%s' has no toner left." msgstr "Skrivaren \"%s\" har slut på toner." # FIXME: Kolla denna. Hittar inget bättre ord #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 #, c-format msgid "Printer '%s' is low on developer." msgstr "Skrivaren \"%s\" har snart slut på framkallningsmaterial." #. Translators: "Developer" like on photo development context -#: modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' is out of developer." msgstr "Skrivaren \"%s\" har slut på framkallningsmaterial." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "Skrivaren \"%s\" har snart slut på minst en färgpenna." #. Translators: "marker" is one color bin of the printer -#: modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "Skrivaren \"%s\" har slut på minst en färgpenna." -#: modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 #, c-format msgid "The cover is open on printer '%s'." msgstr "Luckan är öppen på skrivaren \"%s\"." -#: modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "The door is open on printer '%s'." msgstr "Dörren är öppen på skrivaren \"%s\"." -#: modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 #, c-format msgid "Printer '%s' is low on paper." msgstr "Skrivaren \"%s\" har snart slut på papper." -#: modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of paper." msgstr "Skrivaren \"%s\" har slut på papper." -#: modules/printbackends/cups/gtkprintbackendcups.c:1686 -#, fuzzy, c-format +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#, c-format msgid "Printer '%s' is currently offline." msgstr "Skrivaren \"%s\" är för närvarande frånkopplad." -#: modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "There is a problem on printer '%s'." msgstr "Det har uppstått ett problem med skrivaren \"%s\"." #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 msgid "Paused ; Rejecting Jobs" msgstr "Pausad ; Avvisar jobb" #. Translators: this is a printer status. -#: modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 msgid "Rejecting Jobs" msgstr "Avvisar jobb" -#: modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 msgid "Two Sided" msgstr "Tvåsidig" -#: modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 msgid "Paper Type" msgstr "Papperstyp" -#: modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 msgid "Paper Source" msgstr "Papperskälla" -#: modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 msgid "Output Tray" msgstr "Utskriftsfack" -#: modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Resolution" msgstr "Upplösning" -#: modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "GhostScript pre-filtering" msgstr "GhostScript-förfiltrering" -#: modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 msgid "One Sided" msgstr "Ensidigt" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 msgid "Long Edge (Standard)" msgstr "Lång kant (Standard)" #. Translators: this is an option of "Two Sided" -#: modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "Short Edge (Flip)" msgstr "Kort kant (Vänd)" #. Translators: this is an option of "Paper Source" -#: modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 msgid "Auto Select" msgstr "Välj automatiskt" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: modules/printbackends/cups/gtkprintbackendcups.c:2803 -#: modules/printbackends/cups/gtkprintbackendcups.c:2805 -#: modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: modules/printbackends/cups/gtkprintbackendcups.c:3295 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 msgid "Printer Default" msgstr "Skrivarens standard" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Embed GhostScript fonts only" msgstr "Endast inbäddade GhostScript-typsnitt" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 msgid "Convert to PS level 1" msgstr "Konvertera till PS nivå 1" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Convert to PS level 2" msgstr "Konvertera till PS nivå 2" #. Translators: this is an option of "GhostScript" -#: modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "No pre-filtering" msgstr "Ingen förfiltrering" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 msgid "Miscellaneous" msgstr "Diverse" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Urgent" msgstr "Viktigt" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "High" msgstr "Hög" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Medium" msgstr "Medel" -#: modules/printbackends/cups/gtkprintbackendcups.c:3503 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 msgid "Low" msgstr "Låg" @@ -4029,68 +4038,68 @@ msgstr "Låg" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3527 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 msgid "Pages per Sheet" msgstr "Sidor per blad" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3564 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 msgid "Job Priority" msgstr "Jobbprioritet" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3575 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 msgid "Billing Info" msgstr "Faktureringsinformation" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "None" msgstr "Ingen" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Classified" msgstr "Klassificerat" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Confidential" msgstr "Konfidentiellt" # Se http://bugzilla.gnome.org/show_bug.cgi?id=148437 -- detta ska vara # "skärm" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Secret" msgstr "Hemlig" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Standard" msgstr "Standard" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Top Secret" msgstr "Topphemligt" -#: modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 msgid "Unclassified" msgstr "Inte klassificerat" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3625 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 msgid "Before" msgstr "Före" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3640 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 msgid "After" msgstr "Efter" @@ -4098,14 +4107,14 @@ msgstr "Efter" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3660 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 msgid "Print at" msgstr "Skriv ut den" #. 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/cups/gtkprintbackendcups.c:3671 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3697 msgid "Print at time" msgstr "Skriv ut klockan" @@ -4113,787 +4122,675 @@ msgstr "Skriv ut klockan" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: modules/printbackends/cups/gtkprintbackendcups.c:3706 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 #, c-format msgid "Custom %sx%s" msgstr "Anpassad %sx%s" #. default filename used for print-to-file -#: modules/printbackends/file/gtkprintbackendfile.c:250 +#: ../modules/printbackends/file/gtkprintbackendfile.c:250 #, c-format msgid "output.%s" msgstr "utdata.%s" -#: modules/printbackends/file/gtkprintbackendfile.c:493 +#: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "Skriv ut till fil" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "PDF" msgstr "PDF" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "Postscript" msgstr "Postscript" -#: modules/printbackends/file/gtkprintbackendfile.c:570 +#: ../modules/printbackends/file/gtkprintbackendfile.c:578 msgid "SVG" msgstr "SVG" -#: modules/printbackends/file/gtkprintbackendfile.c:582 -#: modules/printbackends/test/gtkprintbackendtest.c:503 +#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "Sidor per _blad:" -#: modules/printbackends/file/gtkprintbackendfile.c:641 +#: ../modules/printbackends/file/gtkprintbackendfile.c:649 msgid "File" msgstr "Fil" -#: modules/printbackends/file/gtkprintbackendfile.c:651 +#: ../modules/printbackends/file/gtkprintbackendfile.c:659 msgid "_Output format" msgstr "_Utskriftsformat" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:395 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:395 msgid "Print to LPR" msgstr "Skriv ut till LPR" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:421 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:421 msgid "Pages Per Sheet" msgstr "Sidor per blad" -#: modules/printbackends/lpr/gtkprintbackendlpr.c:428 +#: ../modules/printbackends/lpr/gtkprintbackendlpr.c:428 msgid "Command Line" msgstr "Kommandorad" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:811 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:811 msgid "printer offline" msgstr "skrivaren är frånkopplad" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:829 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:829 msgid "ready to print" msgstr "redo för utskrift" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:832 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:832 msgid "processing job" msgstr "behandlar jobb" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:836 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 msgid "paused" msgstr "pausad" #. SUN_BRANDING -#: modules/printbackends/papi/gtkprintbackendpapi.c:839 +#: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 msgid "unknown" msgstr "okänd" #. default filename used for print-to-test -#: modules/printbackends/test/gtkprintbackendtest.c:234 +#: ../modules/printbackends/test/gtkprintbackendtest.c:234 #, c-format msgid "test-output.%s" msgstr "testutdata.%s" -#: modules/printbackends/test/gtkprintbackendtest.c:467 +#: ../modules/printbackends/test/gtkprintbackendtest.c:467 msgid "Print to Test Printer" msgstr "Skriv ut till testskrivare" -#: tests/testfilechooser.c:207 +#: ../tests/testfilechooser.c:207 #, c-format msgid "Could not get information for file '%s': %s" msgstr "Kunde inte hämta information för filen \"%s\": %s" -#: tests/testfilechooser.c:222 +#: ../tests/testfilechooser.c:222 #, c-format msgid "Failed to open file '%s': %s" msgstr "Misslyckades med att öppna filen \"%s\": %s" -#: tests/testfilechooser.c:267 +#: ../tests/testfilechooser.c:267 #, c-format -msgid "" -"Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "" -"Misslyckades med att läsa in bilden \"%s\": anledningen är okänd, troligtvis " -"en trasig bildfil" +msgid "Failed to load image '%s': reason not known, probably a corrupt image file" +msgstr "Misslyckades med att läsa in bilden \"%s\": anledningen är okänd, troligtvis en trasig bildfil" +#: ../gtk/gtkappchooserbutton.c:251 +msgid "Other application..." +msgstr "Annat program..." + +#: ../gtk/gtkappchooserdialog.c:115 +msgid "Failed to look for applications online" +msgstr "Misslyckades med att leta efter program på nätet" + +#: ../gtk/gtkappchooserdialog.c:152 +msgid "Find applications online" +msgstr "Sök efter program på nätet" + +#: ../gtk/gtkappchooserdialog.c:196 +msgid "Could not run application" +msgstr "Kunde inte köra programmet" + +#: ../gtk/gtkappchooserdialog.c:209 +#, c-format +msgid "Could not find '%s'" +msgstr "Kunde inte hitta \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:212 +msgid "Could not find application" +msgstr "Kunde inte hitta programmet" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:322 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "Välj ett program för att öppna \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:323 +#: ../gtk/gtkappchooserwidget.c:633 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "Inga program tillgängliga för att öppna \"%s\"" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:329 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "Välj ett program för filer av typen \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:332 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "Inga program tillgängliga för att öppna filer av typen \"%s\"" + +#: ../gtk/gtkappchooserdialog.c:346 +msgid "Click \"Show other applications\", for more options, or \"Find applications online\" to install a new application" +msgstr "Klicka på \"Visa övriga program\" för fler alternativ eller \"Sök efter program på nätet\" för att installera ett nytt program" + +#: ../gtk/gtkappchooserdialog.c:416 +msgid "Forget association" +msgstr "Glöm associeringen" + +#: ../gtk/gtkappchooserdialog.c:481 +msgid "Show other applications" +msgstr "Visa övriga program" + +#: ../gtk/gtkappchooserdialog.c:499 +msgid "_Open" +msgstr "_Öppna" + +#: ../gtk/gtkappchooserwidget.c:582 +msgid "Default Application" +msgstr "Standardprogram" + +#: ../gtk/gtkappchooserwidget.c:718 +msgid "Recommended Applications" +msgstr "Rekommenderade program" + +#: ../gtk/gtkappchooserwidget.c:732 +msgid "Related Applications" +msgstr "Relaterade program" + +#: ../gtk/gtkappchooserwidget.c:745 +msgid "Other Applications" +msgstr "Övriga program" + +#~ msgid "X screen to use" +#~ msgstr "X-skärm att använda" +#~ msgid "SCREEN" +#~ msgstr "SKÄRM" +#~ msgid "Make X calls synchronous" +#~ msgstr "Gör X-anrop synkrona" +#~ msgid "Credits" +#~ msgstr "Tack" +#~ msgid "Written by" +#~ msgstr "Skrivet av" +#~ msgid "Error creating folder '%s': %s" +#~ msgstr "Fel vid skapande av mappen \"%s\": %s" +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "Kan inte hitta inkluderingsfil: \"%s\"" +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "Kan inte hitta temamotorn i \"module_path\": \"%s\"," #~ msgid "Gdk debugging flags to set" #~ msgstr "Gdk-felsökningsflaggor att ställa in" - #~ msgid "Gdk debugging flags to unset" #~ msgstr "Gdk-felsökningsflaggor att inte ställa in" # SUN CHANGED MESSAGE #~ msgid "Image file '%s' contains no data" #~ msgstr "Bildfilen \"%s\" innehåller inga data" - #~ msgid "" #~ "Failed to load animation '%s': reason not known, probably a corrupt " #~ "animation file" #~ msgstr "" #~ "Misslyckades med att läsa in animeringen \"%s\": anledningen är okänd, " #~ "troligtvis en trasig animeringsfil" - #~ msgid "Unable to load image-loading module: %s: %s" #~ msgstr "Kan inte läsa in bildinläsningsmodulen: %s: %s" - #~ msgid "" #~ "Image-loading module %s does not export the proper interface; perhaps " #~ "it's from a different GTK version?" #~ msgstr "" #~ "Bildinläsningsmodulen %s exporterar inte rätt gränssnitt; den kanske är " #~ "från en annan GTK-version?" - #~ msgid "Image type '%s' is not supported" #~ msgstr "Bildtypen \"%s\" stöds inte" - #~ msgid "Couldn't recognize the image file format for file '%s'" #~ msgstr "Kunde inte känna igen bildfilformatet på filen \"%s\"" - #~ msgid "Unrecognized image file format" #~ msgstr "Okänt bildfilformat" - #~ msgid "Failed to load image '%s': %s" #~ msgstr "Misslyckades med att läsa in bilden \"%s\": %s" - #~ msgid "Error writing to image file: %s" #~ msgstr "Fel vid skrivning till bildfil: %s" - #~ msgid "" #~ "This build of gdk-pixbuf does not support saving the image format: %s" #~ msgstr "Detta bygge av gdk-pixbuf stöder inte sparande av bildformatet: %s" - #~ msgid "Insufficient memory to save image to callback" #~ msgstr "Inte tillräckligt med minne för att spara bild till återuppringning" - #~ msgid "Failed to open temporary file" #~ msgstr "Misslyckades med att öppna temporär fil" - #~ msgid "Failed to read from temporary file" #~ msgstr "Misslyckades med att läsa från temporär fil" - #~ msgid "Failed to open '%s' for writing: %s" #~ msgstr "Misslyckades med att öppna \"%s\" för skrivning: %s" - #~ msgid "" #~ "Failed to close '%s' while writing image, all data may not have been " #~ "saved: %s" #~ msgstr "" #~ "Misslyckades med att stänga \"%s\" när bilden skrevs, all data kanske " #~ "inte har sparats korrekt: %s" - #~ msgid "Insufficient memory to save image into a buffer" #~ msgstr "Inte tillräckligt med minne för att spara bild till en buffert" - #~ msgid "Error writing to image stream" #~ msgstr "Fel vid skrivning till bildström" - #~ msgid "" #~ "Internal error: Image loader module '%s' failed to complete an operation, " #~ "but didn't give a reason for the failure" #~ msgstr "" #~ "Internt fel: Bildinläsningsmodulen \"%s\" misslyckades med att " #~ "färdigställa en åtgärd, men gav inte en anledning till misslyckandet" - #~ msgid "Incremental loading of image type '%s' is not supported" #~ msgstr "Inkrementell inläsning av bildtypen \"%s\" stöds inte" - #~ msgid "Image header corrupt" #~ msgstr "Bildhuvudet är trasigt" - #~ msgid "Image format unknown" #~ msgstr "Bildformatet är okänt" - #~ msgid "Image pixel data corrupt" #~ msgstr "Bildpunktsdata är trasigt" - #~ msgid "failed to allocate image buffer of %u byte" #~ msgid_plural "failed to allocate image buffer of %u bytes" #~ msgstr[0] "misslyckades med att allokera bildbuffert på %u byte" #~ msgstr[1] "misslyckades med att allokera bildbuffert på %u byte" - #~ msgid "Unexpected icon chunk in animation" #~ msgstr "Oväntat ikonstycke i animation" - #~ msgid "Unsupported animation type" #~ msgstr "Animationstypen stöds inte" - #~ msgid "Invalid header in animation" #~ msgstr "Ogiltigt huvud i animation" - #~ msgid "Not enough memory to load animation" #~ msgstr "Inte tillräckligt med minne för att läsa in animation" - #~ msgid "Malformed chunk in animation" #~ msgstr "Felaktigt stycke i animation" - #~ msgid "The ANI image format" #~ msgstr "Bildformatet ANI" - #~ msgid "BMP image has bogus header data" #~ msgstr "BMP-bilden har felaktig huvuddata" - #~ msgid "Not enough memory to load bitmap image" #~ msgstr "Inte tillräckligt med minne för att läsa in bild" - #~ msgid "BMP image has unsupported header size" #~ msgstr "BMP-bilden har huvudstorlek som inte stöds" - # Osäker. #~ msgid "Topdown BMP images cannot be compressed" #~ msgstr "BMP-bilder som är uppifrån-och-ned kan inte komprimeras" - #~ msgid "Premature end-of-file encountered" #~ msgstr "För tidigt filslut påträffades" - #~ msgid "Couldn't allocate memory for saving BMP file" #~ msgstr "Kunde inte allokera minne för sparande av BMP-fil" - #~ msgid "Couldn't write to BMP file" #~ msgstr "Kunde inte skriva till BMP-fil" - #~ msgid "The BMP image format" #~ msgstr "Bildformatet BMP" - #~ msgid "Failure reading GIF: %s" #~ msgstr "Misslyckades med att läsa GIF: %s" - #~ msgid "GIF file was missing some data (perhaps it was truncated somehow?)" #~ msgstr "GIF-filen saknade en del data (den kanske klipptes på något sätt?)" - #~ msgid "Internal error in the GIF loader (%s)" #~ msgstr "Internt fel i GIF-inläsaren (%s)" - #~ msgid "Stack overflow" #~ msgstr "Stackspill" - #~ msgid "GIF image loader cannot understand this image." #~ msgstr "GIF-bildinläsaren kan inte förstå denna bild." - #~ msgid "Bad code encountered" #~ msgstr "Felaktig kod påträffades" - #~ msgid "Circular table entry in GIF file" #~ msgstr "Cirkulär tabellpost i GIF-filen" - #~ msgid "Not enough memory to load GIF file" #~ msgstr "Inte tillräckligt med minne för att läsa in GIF-fil" - #~ msgid "Not enough memory to composite a frame in GIF file" #~ msgstr "Inte tillräckligt med minne för att komponera en ram i GIF-fil" - #~ msgid "GIF image is corrupt (incorrect LZW compression)" #~ msgstr "GIF-bilden är trasig (felaktig LZW-komprimering)" - #~ msgid "File does not appear to be a GIF file" #~ msgstr "Filen verkar inte vara en GIF-fil" - #~ msgid "Version %s of the GIF file format is not supported" #~ msgstr "Version %s av filformatet GIF stöds inte" - #~ msgid "" #~ "GIF image has no global colormap, and a frame inside it has no local " #~ "colormap." #~ msgstr "" #~ "GIF-bilden har ingen global färgkarta, och en ram i den saknar lokal " #~ "färgkarta." - #~ msgid "GIF image was truncated or incomplete." #~ msgstr "GIF-bilden var trunkerad eller ofullständig." - #~ msgid "The GIF image format" #~ msgstr "Bildformatet GIF" - #~ msgid "Invalid header in icon" #~ msgstr "Ogiltigt huvud i ikon" - #~ msgid "Not enough memory to load icon" #~ msgstr "Inte tillräckligt med minne för att läsa in ikon" - # SUN CHANGED MESSAGE #~ msgid "Icon has zero width" #~ msgstr "Ikonens bredd är noll" - # SUN CHANGED MESSAGE #~ msgid "Icon has zero height" #~ msgstr "Ikonens höjd är noll" - #~ msgid "Compressed icons are not supported" #~ msgstr "Komprimerade ikoner stöds inte" - #~ msgid "Unsupported icon type" #~ msgstr "Ikontypen stöds inte" - #~ msgid "Not enough memory to load ICO file" #~ msgstr "Inte tillräckligt med minne för att läsa in ICO-fil" - #~ msgid "Image too large to be saved as ICO" #~ msgstr "Bilden för stor för att sparas som ICO" - #~ msgid "Cursor hotspot outside image" #~ msgstr "Markörpunkt utanför bilden" - #~ msgid "Unsupported depth for ICO file: %d" #~ msgstr "Djupet stöds inte för ICO-fil: %d" - #~ msgid "The ICO image format" #~ msgstr "Bildformatet ICO" - #~ msgid "Error reading ICNS image: %s" #~ msgstr "Fel vid läsning av ICNS-bild: %s" - #~ msgid "Could not decode ICNS file" #~ msgstr "Kunde inte avkoda ICNS-fil" - #~ msgid "The ICNS image format" #~ msgstr "Bildformatet ICNS" - #~ msgid "Couldn't allocate memory for stream" #~ msgstr "Kunde inte allokera minne för ström" - #~ msgid "Couldn't decode image" #~ msgstr "Kunde inte avkoda bild" - #~ msgid "Transformed JPEG2000 has zero width or height" #~ msgstr "Transformerad JPEG2000 har bredden eller höjden noll." - #~ msgid "Image type currently not supported" #~ msgstr "Bildtypen stöds inte för tillfället" - #~ msgid "Couldn't allocate memory for color profile" #~ msgstr "Kunde inte allokera minne för färgprofil" - #~ msgid "Insufficient memory to open JPEG 2000 file" #~ msgstr "Inte tillräckligt med minne för att öppna JPEG 2000-fil" - #~ msgid "Couldn't allocate memory to buffer image data" #~ msgstr "Kunde inte allokera minne för att buffra bilddata" - #~ msgid "The JPEG 2000 image format" #~ msgstr "Bildformatet JPEG 2000" - #~ msgid "Error interpreting JPEG image file (%s)" #~ msgstr "Fel vid tolkning av JPEG-bildfil (%s)" - #~ msgid "" #~ "Insufficient memory to load image, try exiting some applications to free " #~ "memory" #~ msgstr "" #~ "Inte tillräckligt med minne för att läsa in bild, försök att avsluta " #~ "några program för att frigöra minne" - #~ msgid "Unsupported JPEG color space (%s)" #~ msgstr "JPEG-färgrymden stöds inte (%s)" - #~ msgid "Couldn't allocate memory for loading JPEG file" #~ msgstr "Kunde inte allokera minne för inläsning av JPEG-fil" - #~ msgid "Transformed JPEG has zero width or height." #~ msgstr "Transformerad JPEG har bredden eller höjden noll." - #~ msgid "" #~ "JPEG quality must be a value between 0 and 100; value '%s' could not be " #~ "parsed." #~ msgstr "" #~ "JPEG-kvaliteten måste vara ett värde mellan 0 och 100; värdet \"%s\" " #~ "kunde inte tolkas." - #~ msgid "" #~ "JPEG quality must be a value between 0 and 100; value '%d' is not allowed." #~ msgstr "" #~ "JPEG-kvaliteten måste vara ett värde mellan 0 och 100; värdet \"%d\" är " #~ "inte tillåtet." - #~ msgid "The JPEG image format" #~ msgstr "Bildformatet JPEG" - #~ msgid "Couldn't allocate memory for header" #~ msgstr "Kunde inte allokera minne för huvud" - #~ msgid "Couldn't allocate memory for context buffer" #~ msgstr "Kunde inte allokera minne för sammanhangsbuffert" - #~ msgid "Image has invalid width and/or height" #~ msgstr "Bilden har ogiltig bredd och/eller höjd" - #~ msgid "Image has unsupported bpp" #~ msgstr "Bilden har bitdjup som inte stöds" - #~ msgid "Image has unsupported number of %d-bit planes" #~ msgstr "Bilden har ett antal %d-bitplan som inte stöds" - #~ msgid "Couldn't create new pixbuf" #~ msgstr "Kunde inte skapa ny pixbuf" - #~ msgid "Couldn't allocate memory for line data" #~ msgstr "Kunde inte allokera minne för raddata" - #~ msgid "Couldn't allocate memory for paletted data" #~ msgstr "Kunde inte allokera minne för palettdata" - #~ msgid "Didn't get all lines of PCX image" #~ msgstr "Fick inte tag i alla rader för PCX-bild" - #~ msgid "No palette found at end of PCX data" #~ msgstr "Ingen palett hittades vid slutet av PCX-data" - #~ msgid "The PCX image format" #~ msgstr "Bildformatet PCX" - #~ msgid "Bits per channel of PNG image is invalid." #~ msgstr "Bitar per kanal i PNG-bilden är ogiltigt." - #~ msgid "Transformed PNG has zero width or height." #~ msgstr "Transformerad PNG har bredden eller höjden noll." - #~ msgid "Bits per channel of transformed PNG is not 8." #~ msgstr "Bitar per kanal av transformerad PNG är inte 8." - #~ msgid "Transformed PNG not RGB or RGBA." #~ msgstr "Transformerad PNG är inte RGB eller RGBA." - #~ msgid "Transformed PNG has unsupported number of channels, must be 3 or 4." #~ msgstr "" #~ "Transformerad PNG har antal kanaler som inte stöds, måste vara 3 eller 4." - #~ msgid "Fatal error in PNG image file: %s" #~ msgstr "Ödesdigert fel i PNG-bildfil: %s" - #~ msgid "Insufficient memory to load PNG file" #~ msgstr "Inte tillräckligt med minne för att läsa in PNG-fil" - #~ msgid "" #~ "Insufficient memory to store a %ld by %ld image; try exiting some " #~ "applications to reduce memory usage" #~ msgstr "" #~ "Inte tillräckligt med minne för att lagra en %ld × %ld stor bild; försök " #~ "att avsluta några program för att frigöra minne" - #~ msgid "Fatal error reading PNG image file" #~ msgstr "Ödesdigert fel vid läsning av PNG-bildfil" - #~ msgid "Fatal error reading PNG image file: %s" #~ msgstr "Ödesdigert fel vid läsning av PNG-bildfil: %s" - #~ msgid "" #~ "Keys for PNG text chunks must have at least 1 and at most 79 characters." #~ msgstr "" #~ "Nycklar för PNG-textstycken måste ha minst 1 och som mest 79 tecken." - #~ msgid "Keys for PNG text chunks must be ASCII characters." #~ msgstr "Nycklar för PNG-textstycken måste vara ASCII-tecken." - #~ msgid "Color profile has invalid length %d." #~ msgstr "Färgprofilen har en ogiltig längd %d." - #~ msgid "" #~ "PNG compression level must be a value between 0 and 9; value '%s' could " #~ "not be parsed." #~ msgstr "" #~ "PNG-komprimeringsnivån måste vara ett värde mellan 0 och 9; värdet \"%s\" " #~ "kunde inte tolkas." - #~ msgid "" #~ "PNG compression level must be a value between 0 and 9; value '%d' is not " #~ "allowed." #~ msgstr "" #~ "PNG-komprimeringsnivån måste vara ett värde mellan 0 och 9; värdet \"%d\" " #~ "är inte tillåtet." - #~ msgid "" #~ "Value for PNG text chunk %s cannot be converted to ISO-8859-1 encoding." #~ msgstr "" #~ "Värdet för PNG-textstycket %s kan inte konverteras till ISO-8859-1-" #~ "kodning." - #~ msgid "The PNG image format" #~ msgstr "Bildformatet PNG" - #~ msgid "PNM loader expected to find an integer, but didn't" #~ msgstr "PNM-inläsaren förväntade ett heltal, men fick inte" - #~ msgid "PNM file has an incorrect initial byte" #~ msgstr "PNM-filen har en ogiltig första byte" - #~ msgid "PNM file is not in a recognized PNM subformat" #~ msgstr "PNM-filen är inte i ett känt underformat av PNM" - #~ msgid "PNM file has an image width of 0" #~ msgstr "PNM-filens bildbredd är 0" - #~ msgid "PNM file has an image height of 0" #~ msgstr "PNM-filens bildhöjd är 0" - #~ msgid "Maximum color value in PNM file is 0" #~ msgstr "Maximala färgvärdet i PNM-filen är 0" - #~ msgid "Maximum color value in PNM file is too large" #~ msgstr "Maximala färgvärdet i PNM-filen är för stort" - #~ msgid "Raw PNM image type is invalid" #~ msgstr "Råa PNM-bildtypen är ogiltig" - #~ msgid "PNM image loader does not support this PNM subformat" #~ msgstr "PNM-bildinläsaren stöder inte detta underformat av PNM" - #~ msgid "Raw PNM formats require exactly one whitespace before sample data" #~ msgstr "Råa PNM-format kräver precis ett blanktecken före provdata" - #~ msgid "Cannot allocate memory for loading PNM image" #~ msgstr "Kan inte allokera minne för inläsning av PNM-bild" - #~ msgid "Insufficient memory to load PNM context struct" #~ msgstr "Inte tillräckligt med minne för att läsa in PNM-sammanhangsstruktur" - #~ msgid "Unexpected end of PNM image data" #~ msgstr "Oväntat slut på PNM-bilddata" - #~ msgid "Insufficient memory to load PNM file" #~ msgstr "Inte tillräckligt med minne för att läsa in PNM-fil" - #~ msgid "The PNM/PBM/PGM/PPM image format family" #~ msgstr "Bildformatsfamiljen PNM/PBM/PGM/PPM" - #~ msgid "Input file descriptor is NULL." #~ msgstr "Filbeskrivare för inmating är NULL." - #~ msgid "Failed to read QTIF header" #~ msgstr "Misslyckades med att läsa QTIF-rubrik" - #~ msgid "QTIF atom size too large (%d bytes)" #~ msgstr "QTIF-atomstorlek är för stor (%d byte)" - #~ msgid "Failed to allocate %d bytes for file read buffer" #~ msgstr "Misslyckades med att allokera %d byte för filläsningsbuffert" - #~ msgid "File error when reading QTIF atom: %s" #~ msgstr "Filfel vid läsning av QTIF-atom: %s" - #~ msgid "Failed to skip the next %d bytes with seek()." #~ msgstr "Misslyckades med att hoppa över nästa %d byte med seek()." - #~ msgid "Failed to allocate QTIF context structure." #~ msgstr "Misslyckades med att allokera QTIF-sammanhangsstruktur." - #~ msgid "Failed to create GdkPixbufLoader object." #~ msgstr "Misslyckades med att skapa GdkPixbufLoader-objekt." - #~ msgid "Failed to find an image data atom." #~ msgstr "Misslyckades med att hitta en bilddataatom." - #~ msgid "The QTIF image format" #~ msgstr "Bildformatet QTIF" - #~ msgid "RAS image has bogus header data" #~ msgstr "RAS-bilden har felaktig huvuddata" - #~ msgid "RAS image has unknown type" #~ msgstr "RAS-bilden har okänd typ" - #~ msgid "unsupported RAS image variation" #~ msgstr "RAS-bildvariationen stöds inte" - #~ msgid "Not enough memory to load RAS image" #~ msgstr "Inte tillräckligt med minne för att läsa in RAS-bild" - #~ msgid "The Sun raster image format" #~ msgstr "Bildformatet Sun-raster" - #~ msgid "Cannot allocate memory for IOBuffer struct" #~ msgstr "Kan inte allokera minne för IOBuffer-struct" - #~ msgid "Cannot allocate memory for IOBuffer data" #~ msgstr "Kan inte allokera minne för IOBuffer-data" - #~ msgid "Cannot realloc IOBuffer data" #~ msgstr "Kan inte omallokera IOBuffer-data" - #~ msgid "Cannot allocate temporary IOBuffer data" #~ msgstr "Kan inte allokera temporära IOBuffer-data" - #~ msgid "Cannot allocate new pixbuf" #~ msgstr "Kan inte allokera ny pixbuf" - #~ msgid "Image is corrupted or truncated" #~ msgstr "Bilden är skadad eller trunkerad" - #~ msgid "Cannot allocate colormap structure" #~ msgstr "Kan inte allokera färgkartestruktur" - #~ msgid "Cannot allocate colormap entries" #~ msgstr "Kan inte allokera färgkarteposter" - #~ msgid "Unexpected bitdepth for colormap entries" #~ msgstr "Oväntat bitdjup för färgkarteposter" - #~ msgid "Cannot allocate TGA header memory" #~ msgstr "Kan inte allokera TGA-huvudminne" - #~ msgid "TGA image has invalid dimensions" #~ msgstr "TGA-bilden har ogiltiga dimensioner" - #~ msgid "TGA image type not supported" #~ msgstr "TGA-bildtypen stöds inte" - #~ msgid "Cannot allocate memory for TGA context struct" #~ msgstr "Kan inte allokera minne för TGA-kontextstruct" - #~ msgid "Excess data in file" #~ msgstr "För mycket data i fil" - #~ msgid "The Targa image format" #~ msgstr "Bildformatet Targa" - #~ msgid "Could not get image width (bad TIFF file)" #~ msgstr "Kunde inte få tag i bildbredden (felaktig TIFF-fil)" - #~ msgid "Could not get image height (bad TIFF file)" #~ msgstr "Kunde inte få tag i bildhöjden (felaktig TIFF-fil)" - #~ msgid "Width or height of TIFF image is zero" #~ msgstr "Bredden eller höjden på TIFF-bilden är noll" - #~ msgid "Dimensions of TIFF image too large" #~ msgstr "TIFF-bildens dimensioner är för stora" - #~ msgid "Insufficient memory to open TIFF file" #~ msgstr "Inte tillräckligt med minne för att öppna TIFF-fil" - #~ msgid "Failed to load RGB data from TIFF file" #~ msgstr "Misslyckades med att läsa in RGB-data från TIFF-fil" - #~ msgid "Failed to open TIFF image" #~ msgstr "Misslyckades med att öppna TIFF-bild" - #~ msgid "TIFFClose operation failed" #~ msgstr "Åtgärden TIFFClose misslyckades" - #~ msgid "Failed to load TIFF image" #~ msgstr "Misslyckades med att läsa in TIFF-bild" - #~ msgid "Failed to save TIFF image" #~ msgstr "Misslyckades med att spara TIFF-bild" - #~ msgid "TIFF compression doesn't refer to a valid codec." #~ msgstr "TIFF-komprimering refererar inte till en giltig kodek." - #~ msgid "Failed to write TIFF data" #~ msgstr "Misslyckades med att skriva TIFF-data" - #~ msgid "Couldn't write to TIFF file" #~ msgstr "Kunde inte skriva till TIFF-fil" - #~ msgid "The TIFF image format" #~ msgstr "Bildformatet TIFF" - #~ msgid "Image has zero width" #~ msgstr "Bilden har ingen bredd" - #~ msgid "Image has zero height" #~ msgstr "Bilden har ingen höjd" - #~ msgid "Not enough memory to load image" #~ msgstr "Inte tillräckligt med minne för att läsa in bild" - #~ msgid "Couldn't save the rest" #~ msgstr "Kunde inte spara resten" - #~ msgid "The WBMP image format" #~ msgstr "Bildformatet WBMP" - #~ msgid "Invalid XBM file" #~ msgstr "Ogiltig XBM-fil" - #~ msgid "Insufficient memory to load XBM image file" #~ msgstr "Inte tillräckligt med minne för att läsa in XBM-bildfil" - #~ msgid "Failed to write to temporary file when loading XBM image" #~ msgstr "" #~ "Misslyckades med att skriva till temporär fil vid inläsning av XBM-fil" - #~ msgid "The XBM image format" #~ msgstr "Bildformatet XBM" - #~ msgid "No XPM header found" #~ msgstr "Inget XPM-huvud hittades" - #~ msgid "Invalid XPM header" #~ msgstr "Ogiltigt XPM-huvud" - #~ msgid "XPM file has image width <= 0" #~ msgstr "XPM-filen har bildbredd <= 0" - #~ msgid "XPM file has image height <= 0" #~ msgstr "XPM-filen har bildhöjd <= 0" - #~ msgid "XPM has invalid number of chars per pixel" #~ msgstr "XPM har ogiltigt antal tecken per bildpunkt" - #~ msgid "XPM file has invalid number of colors" #~ msgstr "XPM-filen har ogiltigt antal färger" - #~ msgid "Cannot allocate memory for loading XPM image" #~ msgstr "Kan inte allokera minne för inläsning av XPM-bild" - #~ msgid "Cannot read XPM colormap" #~ msgstr "Kan inte läsa XPM-färgkarta" - #~ msgid "Failed to write to temporary file when loading XPM image" #~ msgstr "" #~ "Misslyckades med skrivning till temporär fil vid inläsning av XPM-bild" - #~ msgid "The XPM image format" #~ msgstr "Bildformatet XPM" - #~ msgid "The EMF image format" #~ msgstr "Bildformatet EMF" - #~ msgid "Could not allocate memory: %s" #~ msgstr "Kunde inte allokera minne: %s" - #~ msgid "Could not create stream: %s" #~ msgstr "Kunde inte skapa ström: %s" - #~ msgid "Could not seek stream: %s" #~ msgstr "Kunde inte spola i ström: %s" - #~ msgid "Could not read from stream: %s" #~ msgstr "Kunde inte läsa från ström: %s" - #~ msgid "Couldn't load bitmap" #~ msgstr "Kunde inte läsa in bitmap" - #~ msgid "Couldn't load metafile" #~ msgstr "Kunde inte läsa in metafil" - #~ msgid "Unsupported image format for GDI+" #~ msgstr "GDI+-bildformatet stöds inte" - #~ msgid "Couldn't save" #~ msgstr "Kunde inte spara" - #~ msgid "The WMF image format" #~ msgstr "Bildformatet WMF" - #~ msgid "\"Deepness\" of the color." #~ msgstr "\"Djup\" på färgen." - #~ msgid "Error printing" #~ msgstr "Fel vid utskrift" - #~ msgid "Printer '%s' may not be connected." #~ msgstr "Skrivaren \"%s\" kanske inte är ansluten." - #~ msgid "Folders" #~ msgstr "Mappar" - #~ msgid "Fol_ders" #~ msgstr "_Mappar" - #~ msgid "Folder unreadable: %s" #~ msgstr "Mappen är oläsbar: %s" - #~ msgid "" #~ "The file \"%s\" resides on another machine (called %s) and may not be " #~ "available to this program.\n" @@ -4902,1047 +4799,717 @@ msgstr "" #~ "Filen \"%s\" finns på en annan maskin (kallad %s) och kanske inte är " #~ "tillgänglig för detta program.\n" #~ "Är du säker på att du vill välja den?" - #~ msgid "_New Folder" #~ msgstr "_Ny mapp" - #~ msgid "De_lete File" #~ msgstr "_Ta bort fil" - #~ msgid "_Rename File" #~ msgstr "_Byt namn på fil" - #~ msgid "" #~ "The folder name \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "Mappnamnet \"%s\" innehåller tecken som inte är tillåtna i filnamn" - #~ msgid "New Folder" #~ msgstr "Ny mapp" - #~ msgid "_Folder name:" #~ msgstr "_Mappnamn:" - -#~ msgid "C_reate" -#~ msgstr "S_kapa" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "Filnamnet \"%s\" innehåller tecken som inte är tillåtna i filnamn" - #~ msgid "Error deleting file '%s': %s" #~ msgstr "Fel vid borttagning av filen \"%s\": %s" - #~ msgid "Really delete file \"%s\"?" #~ msgstr "Verkligen ta bort filen \"%s\"?" - #~ msgid "Delete File" #~ msgstr "Ta bort fil" - #~ msgid "Error renaming file to \"%s\": %s" #~ msgstr "Fel vid namnbyte på filen till \"%s\": %s" - #~ msgid "Error renaming file \"%s\": %s" #~ msgstr "Fel vid namnbyte på filen \"%s\": %s" - #~ msgid "Error renaming file \"%s\" to \"%s\": %s" #~ msgstr "Fel vid byte av namn på filen \"%s\" till \"%s\": %s" - #~ msgid "Rename File" #~ msgstr "Byt namn på fil" - #~ msgid "Rename file \"%s\" to:" #~ msgstr "Byt namn på filen \"%s\" till:" - #~ msgid "_Rename" #~ msgstr "_Byt namn" - #~ msgid "_Selection: " #~ msgstr "_Markering: " - #~ msgid "" #~ "The filename \"%s\" couldn't be converted to UTF-8. (try setting the " #~ "environment variable G_FILENAME_ENCODING): %s" #~ msgstr "" #~ "Filnamnet \"%s\" kunde inte konverteras till UTF-8 (prova att ställa in " #~ "miljövariabeln G_FILENAME_ENCODING): %s" - #~ msgid "Invalid UTF-8" #~ msgstr "Ogiltig UTF-8" - #~ msgid "Name too long" #~ msgstr "Namnet är för långt" - #~ msgid "Couldn't convert filename" #~ msgstr "Kunde inte konvertera filnamn" - #~ msgid "Gamma" #~ msgstr "Gamma" - #~ msgid "_Gamma value" #~ msgstr "_Gammavärde" - #~ msgid "Input" #~ msgstr "Inmatning" - #~ msgid "No extended input devices" #~ msgstr "Inga utökade inmatningsenheter" - #~ msgid "_Device:" #~ msgstr "_Enhet:" - #~ msgid "Disabled" #~ msgstr "Avstängd" - # Se http://bugzilla.gnome.org/show_bug.cgi?id=148437 -- detta ska vara # "skärm" #~ msgid "Screen" #~ msgstr "Skärm" - #~ msgid "Window" #~ msgstr "Fönster" - #~ msgid "_Mode:" #~ msgstr "_Läge:" - #~ msgid "Axes" #~ msgstr "Axlar" - #~ msgid "Keys" #~ msgstr "Tangenter" - #~ msgid "_X:" #~ msgstr "_X:" - #~ msgid "_Y:" #~ msgstr "_Y:" - #~ msgid "_Pressure:" #~ msgstr "_Tryck:" - #~ msgid "X _tilt:" #~ msgstr "X-_lutning:" - #~ msgid "Y t_ilt:" #~ msgstr "Y-lutnin_g:" - #~ msgid "_Wheel:" #~ msgstr "_Hjul:" - #~ msgid "none" #~ msgstr "inget" - #~ msgid "(disabled)" #~ msgstr "(avstängd)" - #~ msgid "(unknown)" #~ msgstr "(okänd)" - #~ msgid "Cl_ear" #~ msgstr "_Töm" - #~ msgid "--- No Tip ---" #~ msgstr "--- Inget tips ---" - #~ msgid "(Empty)" #~ msgstr "(Tom)" - #~ msgid "_Search:" #~ msgstr "_Sök:" - #~ msgid "Recently Used" #~ msgstr "Tidigare använda" - #~ msgid "directfb arg" #~ msgstr "directfb-argument" - #~ msgid "sdl|system" #~ msgstr "system" - #~ msgid "" #~ "You have the Caps Lock key on\n" #~ "and an active input method" #~ msgstr "" #~ "Du har aktiverat Caps Lock\n" #~ "och en aktiv inmatningsmetod" - #~ msgid "You have the Caps Lock key on" #~ msgstr "Du har aktiverat Caps Lock" - #~ msgid "You have an active input method" #~ msgstr "Du har en aktiv inmatningsmetod" - #~ msgid "keyboard label|BackSpace" #~ msgstr "Backsteg" - #~ msgid "keyboard label|Tab" #~ msgstr "Tabb" - #~ msgid "keyboard label|Return" #~ msgstr "Retur" - #~ msgid "keyboard label|Pause" #~ msgstr "Pause" - #~ msgid "keyboard label|Scroll_Lock" #~ msgstr "Scroll_Lock" - #~ msgid "keyboard label|Sys_Req" #~ msgstr "Sys_Req" - #~ msgid "keyboard label|Escape" #~ msgstr "Escape" - # Osäker. #~ msgid "keyboard label|Multi_key" #~ msgstr "Multitangent" - #~ msgid "keyboard label|Home" #~ msgstr "Home" - #~ msgid "keyboard label|Left" #~ msgstr "Vänster" - #~ msgid "keyboard label|Up" #~ msgstr "Upp" - #~ msgid "keyboard label|Right" #~ msgstr "Höger" - #~ msgid "keyboard label|Down" #~ msgstr "Ned" - #~ msgid "keyboard label|Page_Up" #~ msgstr "Page_Up" - #~ msgid "keyboard label|Page_Down" #~ msgstr "Page_Down" - #~ msgid "keyboard label|End" #~ msgstr "End" - #~ msgid "keyboard label|Begin" #~ msgstr "Begin" - #~ msgid "keyboard label|Print" #~ msgstr "Print" - #~ msgid "keyboard label|Insert" #~ msgstr "Insert" - #~ msgid "keyboard label|Num_Lock" #~ msgstr "Num_Lock" - #~ msgid "keyboard label|KP_Space" #~ msgstr "KP_Space" - #~ msgid "keyboard label|KP_Tab" #~ msgstr "KP_Tabb" - #~ msgid "keyboard label|KP_Enter" #~ msgstr "KP_Enter" - #~ msgid "keyboard label|KP_Home" #~ msgstr "KP_Home" - #~ msgid "keyboard label|KP_Left" #~ msgstr "KP_Vänster" - #~ msgid "keyboard label|KP_Up" #~ msgstr "KP_Upp" - #~ msgid "keyboard label|KP_Right" #~ msgstr "KP_Höger" - #~ msgid "keyboard label|KP_Down" #~ msgstr "KP_Ned" - #~ msgid "keyboard label|KP_Page_Up" #~ msgstr "KP_Page_Up" - #~ msgid "keyboard label|KP_Prior" #~ msgstr "KP_Föregående" - #~ msgid "keyboard label|KP_Page_Down" #~ msgstr "KP_Page_Down" - #~ msgid "keyboard label|KP_Next" #~ msgstr "KP_Nästa" - #~ msgid "keyboard label|KP_End" #~ msgstr "KP_End" - #~ msgid "keyboard label|KP_Begin" #~ msgstr "KP_Begin" - #~ msgid "keyboard label|KP_Insert" #~ msgstr "KP_Insert" - #~ msgid "keyboard label|KP_Delete" #~ msgstr "KP_Delete" - #~ msgid "keyboard label|Delete" #~ msgstr "Delete" - #~ msgid "keyboard label|Shift" #~ msgstr "Skift" - #~ msgid "keyboard label|Ctrl" #~ msgstr "Ctrl" - #~ msgid "keyboard label|Alt" #~ msgstr "Alt" - #~ msgid "keyboard label|Super" #~ msgstr "Super" - #~ msgid "keyboard label|Hyper" #~ msgstr "Hyper" - #~ msgid "keyboard label|Meta" #~ msgstr "Meta" - #~ msgid "keyboard label|Space" #~ msgstr "Blanksteg" - #~ msgid "keyboard label|Backslash" #~ msgstr "Omvänt snedstreck" - #~ msgid "year measurement template|2000" #~ msgstr "2000" - #~ msgid "calendar:day:digits|%d" #~ msgstr "%d" - # I Sverige börjar veckan på måndag # #~ msgid "calendar:week:digits|%d" #~ msgstr "%d" - #~ msgid "calendar year format|%Y" #~ msgstr "%Y" - #~ msgid "Accelerator|Disabled" #~ msgstr "Inaktiverad" - #, fuzzy #~ msgid "Icon not present in theme" #~ msgstr "Ikonen \"%s\" finns inte i temat" - #~ msgid "progress bar label|%d %%" #~ msgstr "%d %%" - #~ msgid "input method menu|System" #~ msgstr "System" #, fuzzy #~ msgid "input method menu|System (%s)" #~ msgstr "System" - #~ msgid "print operation status|Initial state" #~ msgstr "Initialt tillstånd" - #~ msgid "print operation status|Preparing to print" #~ msgstr "Förbereder för utskrift" - #~ msgid "print operation status|Generating data" #~ msgstr "Genererar data" - #~ msgid "print operation status|Sending data" #~ msgstr "Skickar data" - #~ msgid "print operation status|Waiting" #~ msgstr "Väntar" - #~ msgid "print operation status|Blocking on issue" #~ msgstr "Blockerar vid problem" - #~ msgid "print operation status|Printing" #~ msgstr "Skriver ut" - #~ msgid "print operation status|Finished" #~ msgstr "Färdig" - #~ msgid "recent menu label|_%d. %s" #~ msgstr "_%d. %s" - #~ msgid "recent menu label|%d. %s" #~ msgstr "%d. %s" - #~ msgid "Navigation|_Bottom" #~ msgstr "_Nederst" - #~ msgid "Navigation|_First" #~ msgstr "_Första" - #~ msgid "Navigation|_Last" #~ msgstr "_Sista" - #~ msgid "Navigation|_Top" #~ msgstr "_Överst" - #~ msgid "Navigation|_Back" #~ msgstr "_Bakåt" - #~ msgid "Navigation|_Down" #~ msgstr "N_ed" - #~ msgid "Navigation|_Forward" #~ msgstr "_Framåt" - #~ msgid "Navigation|_Up" #~ msgstr "_Upp" - #~ msgid "Justify|_Center" #~ msgstr "_Centrera" - #~ msgid "Justify|_Fill" #~ msgstr "_Fyll" - #~ msgid "Justify|_Left" #~ msgstr "_Vänster" - #~ msgid "Justify|_Right" #~ msgstr "_Höger" - #~ msgid "Media|_Next" #~ msgstr "_Nästa" - #~ msgid "Media|P_ause" #~ msgstr "Gör _paus" - #~ msgid "Media|_Play" #~ msgstr "_Spela upp" - #~ msgid "Media|Pre_vious" #~ msgstr "Före_gående" - #~ msgid "Media|_Record" #~ msgstr "Spela _in" - #~ msgid "Media|R_ewind" #~ msgstr "Spola _bakåt" - #~ msgid "Media|_Stop" #~ msgstr "_Stopp" - #~ msgid "volume percentage|%d %%" #~ msgstr "%d %%" - #~ msgid "paper size|asme_f" #~ msgstr "asme_f" - #~ msgid "paper size|A0x2" #~ msgstr "A0x2" - #~ msgid "paper size|A0" #~ msgstr "A0" - #~ msgid "paper size|A0x3" #~ msgstr "A0x3" - #~ msgid "paper size|A1" #~ msgstr "A1" - #~ msgid "paper size|A10" #~ msgstr "A10" - #~ msgid "paper size|A1x3" #~ msgstr "A1x3" - #~ msgid "paper size|A1x4" #~ msgstr "A1x4" - #~ msgid "paper size|A2" #~ msgstr "A2" - #~ msgid "paper size|A2x3" #~ msgstr "A2x3" - #~ msgid "paper size|A2x4" #~ msgstr "A2x4" - #~ msgid "paper size|A2x5" #~ msgstr "A2x5" - #~ msgid "paper size|A3" #~ msgstr "A3" - #~ msgid "paper size|A3 Extra" #~ msgstr "A3 Extra" - #~ msgid "paper size|A3x3" #~ msgstr "A3x3" - #~ msgid "paper size|A3x4" #~ msgstr "A3x4" - #~ msgid "paper size|A3x5" #~ msgstr "A3x5" - #~ msgid "paper size|A3x6" #~ msgstr "A3x6" - #~ msgid "paper size|A3x7" #~ msgstr "A3x7" - #~ msgid "paper size|A4" #~ msgstr "A4" - #~ msgid "paper size|A4 Extra" #~ msgstr "A4 Extra" - #~ msgid "paper size|A4 Tab" #~ msgstr "A4 Tab" - #~ msgid "paper size|A4x3" #~ msgstr "A4x3" - #~ msgid "paper size|A4x4" #~ msgstr "A4x4" - #~ msgid "paper size|A4x5" #~ msgstr "A4x5" - #~ msgid "paper size|A4x6" #~ msgstr "A4x6" - #~ msgid "paper size|A4x7" #~ msgstr "A4x7" - #~ msgid "paper size|A4x8" #~ msgstr "A4x8" - #~ msgid "paper size|A4x9" #~ msgstr "A4x9" - #~ msgid "paper size|A5" #~ msgstr "A5" - #~ msgid "paper size|A5 Extra" #~ msgstr "A5 Extra" - #~ msgid "paper size|A6" #~ msgstr "A6" - #~ msgid "paper size|A7" #~ msgstr "A7" - #~ msgid "paper size|A8" #~ msgstr "A8" - #~ msgid "paper size|A9" #~ msgstr "A9" - #~ msgid "paper size|B0" #~ msgstr "B0" - #~ msgid "paper size|B1" #~ msgstr "B1" - #~ msgid "paper size|B10" #~ msgstr "B10" - #~ msgid "paper size|B2" #~ msgstr "B2" - #~ msgid "paper size|B3" #~ msgstr "B3" - #~ msgid "paper size|B4" #~ msgstr "B4" - #~ msgid "paper size|B5" #~ msgstr "B5" - #~ msgid "paper size|B5 Extra" #~ msgstr "B5 Extra" - #~ msgid "paper size|B6" #~ msgstr "B6" - #~ msgid "paper size|B6/C4" #~ msgstr "B6/C4" - #~ msgid "paper size|B7" #~ msgstr "B7" - #~ msgid "paper size|B8" #~ msgstr "B8" - #~ msgid "paper size|B9" #~ msgstr "B9" - #~ msgid "paper size|C0" #~ msgstr "C0" - #~ msgid "paper size|C1" #~ msgstr "C1" - #~ msgid "paper size|C10" #~ msgstr "C10" - #~ msgid "paper size|C2" #~ msgstr "C2" - #~ msgid "paper size|C3" #~ msgstr "C3" - #~ msgid "paper size|C4" #~ msgstr "C4" - #~ msgid "paper size|C5" #~ msgstr "C5" - #~ msgid "paper size|C6" #~ msgstr "C6" - #~ msgid "paper size|C6/C5" #~ msgstr "C6/C5" - #~ msgid "paper size|C7" #~ msgstr "C7" - #~ msgid "paper size|C7/C6" #~ msgstr "C7/C6" - #~ msgid "paper size|C8" #~ msgstr "C8" - #~ msgid "paper size|C9" #~ msgstr "C9" - #~ msgid "paper size|RA0" #~ msgstr "RA0" - #~ msgid "paper size|RA1" #~ msgstr "RA1" - #~ msgid "paper size|RA2" #~ msgstr "RA2" - #~ msgid "paper size|SRA0" #~ msgstr "SRA0" - #~ msgid "paper size|SRA1" #~ msgstr "SRA1" - #~ msgid "paper size|SRA2" #~ msgstr "SRA2" - #~ msgid "paper size|JB0" #~ msgstr "JB0" - #~ msgid "paper size|JB1" #~ msgstr "JB1" - #~ msgid "paper size|JB10" #~ msgstr "JB10" - #~ msgid "paper size|JB2" #~ msgstr "JB2" - #~ msgid "paper size|JB3" #~ msgstr "JB3" - #~ msgid "paper size|JB4" #~ msgstr "JB4" - #~ msgid "paper size|JB5" #~ msgstr "JB5" - #~ msgid "paper size|JB6" #~ msgstr "JB6" - #~ msgid "paper size|JB7" #~ msgstr "JB7" - #~ msgid "paper size|JB8" #~ msgstr "JB8" - #~ msgid "paper size|JB9" #~ msgstr "JB9" - #~ msgid "paper size|jis exec" #~ msgstr "jis exec" - #~ msgid "paper size|10x11" #~ msgstr "10x11" - #~ msgid "paper size|10x13" #~ msgstr "10x13" - #~ msgid "paper size|10x14" #~ msgstr "10x14" - #~ msgid "paper size|10x15" #~ msgstr "10x15" - #~ msgid "paper size|11x12" #~ msgstr "11x12" - #~ msgid "paper size|11x15" #~ msgstr "11x15" - #~ msgid "paper size|12x19" #~ msgstr "12x19" - #~ msgid "paper size|5x7" #~ msgstr "5x7" - #~ msgid "paper size|Arch A" #~ msgstr "Arch A" - #~ msgid "paper size|Arch B" #~ msgstr "Arch B" - #~ msgid "paper size|Arch C" #~ msgstr "Arch C" - #~ msgid "paper size|Arch D" #~ msgstr "Arch D" - #~ msgid "paper size|Arch E" #~ msgstr "Arch E" - #~ msgid "paper size|b-plus" #~ msgstr "b-plus" - #~ msgid "paper size|c" #~ msgstr "c" - #~ msgid "paper size|d" #~ msgstr "d" - #~ msgid "paper size|e" #~ msgstr "e" - #~ msgid "paper size|edp" #~ msgstr "edp" - #~ msgid "paper size|Executive" #~ msgstr "Executive" - #~ msgid "paper size|f" #~ msgstr "f" - #~ msgid "paper size|Index 3x5" #~ msgstr "Index 3x5" - #~ msgid "paper size|Index 5x8" #~ msgstr "Index 5x8" - #~ msgid "paper size|Invoice" #~ msgstr "Faktura" - #~ msgid "paper size|Tabloid" #~ msgstr "Tabloid" - #~ msgid "paper size|US Legal" #~ msgstr "US Legal" - #~ msgid "paper size|Quarto" #~ msgstr "Quarto" - #~ msgid "paper size|Super A" #~ msgstr "Super A" - #~ msgid "paper size|Super B" #~ msgstr "Super B" - #~ msgid "paper size|Folio" #~ msgstr "Folio" - #~ msgid "paper size|Folio sp" #~ msgstr "Folio sp" - #~ msgid "paper size|pa-kai" #~ msgstr "pa-kai" - #~ msgid "paper size|prc 16k" #~ msgstr "prc 16k" - #~ msgid "paper size|prc 32k" #~ msgstr "prc 32k" - #~ msgid "paper size|prc5 Envelope" #~ msgstr "prc5-kuvert" - #~ msgid "paper size|ROC 16k" #~ msgstr "ROC 16k" - #~ msgid "paper size|ROC 8k" #~ msgstr "ROC 8k" - #~ msgid "Couldn't create pixbuf" #~ msgstr "Kunde inte skapa pixbuf" - #~ msgid "%.1f KB" #~ msgstr "%.1f KB" - #~ msgid "%.1f MB" #~ msgstr "%.1f MB" - #~ msgid "%.1f GB" #~ msgstr "%.1f GB" - #~ msgid "Arrow spacing" #~ msgstr "Pilmellanrum" - #~ msgid "Scroll arrow spacing" #~ msgstr "Rullpilsmellanrum" - #~ msgid "Group" #~ msgstr "Grupp" - #~ msgid "The radio tool button whose group this button belongs to." #~ msgstr "Den radioverktygsknapp vars grupp denna knapp tillhör." - #~ msgid "URI" #~ msgstr "URI" - #~ msgid "The URI bound to this button" #~ msgstr "URI bundet till denna knapp" - #~ msgid "Invalid filename: %s" #~ msgstr "Ogiltigt filnamn: %s" - #~ msgid "" #~ "Could not add a bookmark for '%s' because it is an invalid path name." #~ msgstr "" #~ "Kunde inte lägga till ett bokmärke för \"%s\" eftersom det är ett " #~ "ogiltigt namn på en sökväg." - #~ msgid "Could not select file '%s' because it is an invalid path name." #~ msgstr "" #~ "Kunde inte välja filen \"%s\" eftersom det är ett ogiltigt namn på en " #~ "sökväg." - #~ msgid "%d byte" #~ msgid_plural "%d bytes" #~ msgstr[0] "%d byte" #~ msgstr[1] "%d byte" - #~ msgid "Could not get a stock icon for %s\n" #~ msgstr "Kunde inte hämta en standardikon för %s\n" - #~ msgid "Error getting information for '%s': %s" #~ msgstr "Fel vid hämtning av information för \"%s\": %s" - #~ msgid "This file system does not support mounting" #~ msgstr "Detta filsystem stöder inte montering" - #~ msgid "" #~ "The name \"%s\" is not valid because it contains the character \"%s\". " #~ "Please use a different name." #~ msgstr "" #~ "Namnet \"%s\" är inte giltigt eftersom det innehåller tecknet \"%s\". " #~ "Använd ett annat namn." - #~ msgid "Bookmark saving failed: %s" #~ msgstr "Bokmärkessparande misslyckades: %s" - #~ msgid "'%s' already exists in the bookmarks list" #~ msgstr "\"%s\" finns redan i bokmärkeslistan" - #~ msgid "'%s' does not exist in the bookmarks list" #~ msgstr "\"%s\" finns inte i bokmärkeslistan" - #~ msgid "Path is not a folder: '%s'" #~ msgstr "Sökvägen är inte en mapp: \"%s\"" - #~ msgid "Network Drive (%s)" #~ msgstr "Nätverksenhet (%s)" - #~ msgid "Unknown attribute '%s' on line %d char %d" #~ msgstr "Okänt attribut \"%s\" på rad %d tecken %d" - #~ msgid "Today at %H:%M" #~ msgstr "Idag klockan %H.%M" - #~ msgid "Default" #~ msgstr "Standard" - #~ msgid "_All" #~ msgstr "_Alla" - #~ msgid "Today" #~ msgstr "Idag" - #~ msgid "Location:" #~ msgstr "Plats:" - #~ msgid "PNM image format is invalid" #~ msgstr "PNM-bildformatet är ogiltigt" - #~ msgid "Line %d, column %d: missing attribute \"%s\"" #~ msgstr "Rad %d, kolumn %d: saknar attributet \"%s\"" - #~ msgid "Line %d, column %d: unexpected element \"%s\"" #~ msgstr "Rad %d, kolumn %d: oväntat element \"%s\"" - #~ msgid "" #~ "Line %d, column %d: expected end of element \"%s\", but got element for " #~ "\"%s\" instead" #~ msgstr "" #~ "Rad %d, kolumn %d: förväntade slut på elementet \"%s\", men fick element " #~ "för \"%s\" istället" - #~ msgid "" #~ "Line %d, column %d: expected \"%s\" at the toplevel, but found \"%s\" " #~ "instead" #~ msgstr "" #~ "Rad %d, kolumn %d: förväntade \"%s\" på toppnivån, men hittade \"%s\" " #~ "istället" - #~ msgid "" #~ "Line %d, column %d: expected \"%s\" or \"%s\", but found \"%s\" instead" #~ msgstr "" #~ "Rad %d, kolumn %d: förväntade \"%s\" eller \"%s\", men hittade \"%s\" " #~ "istället" - #~ msgid "Error creating directory '%s': %s" #~ msgstr "Fel vid skapande av katalogen \"%s\": %s" - #~ msgid "Thai (Broken)" #~ msgstr "Thailändsk (Trasig)" - #~ msgid "" #~ "Error creating folder \"%s\": %s\n" #~ "%s" #~ msgstr "" #~ "Fel vid skapande av mappen \"%s\": %s\n" #~ "%s" - #~ msgid "You probably used symbols not allowed in filenames." #~ msgstr "Du använde troligen tecken som inte är tillåtna i filnamn." - #~ msgid "" #~ "Error deleting file \"%s\": %s\n" #~ "%s" #~ msgstr "" #~ "Fel vid borttagning av filen \"%s\": %s\n" #~ "%s" - #~ msgid "It probably contains symbols not allowed in filenames." #~ msgstr "Det innehåller troligen tecken som inte är tillåtna i filnamn." - #~ msgid "" #~ "The file name \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "Filnamnet \"%s\" innehåller tecken som inte är tillåtna i filnamn" - #~ msgid "Error getting information for '/': %s" #~ msgstr "Fel vid hämtning av information för \"/\": %s" - #~ msgid "Select All" #~ msgstr "Markera allt" #, fuzzy #~ msgid "shortcut %s already exists" #~ msgstr "Genvägen %s finns inte" - #~ msgid "Cannot handle PNM files with maximum color values greater than 255" #~ msgstr "Kan inte hantera PNM-filer med maximala färgvärden större än 255" - #~ msgid "Could not get information about '%s': %s" #~ msgstr "Kunde inte hämta information om \"%s\": %s" - #~ msgid "Shortcuts" #~ msgstr "Genvägar" - #~ msgid "Folder" #~ msgstr "Mapp" - #~ msgid "Cannot change folder" #~ msgstr "Kan inte byta mapp" - #~ msgid "The folder you specified is an invalid path." #~ msgstr "Mappen du angav är en ogiltig sökväg." - #~ msgid "Could not build file name from '%s' and '%s'" #~ msgstr "Kunde inte bygga filnamnet från \"%s\" och \"%s\"" - #~ msgid "Save in Location" #~ msgstr "Spara på plats" - #~ msgid "X" #~ msgstr "X" - #~ msgid "clear" #~ msgstr "töm" - #~ msgid "Pixmap path element: \"%s\" must be absolute, %s, line %d" #~ msgstr "Sökvägselement till bild: \"%s\" måste vara absolut, %s, rad %d" - #~ msgid "_Rename..." #~ msgstr "_Byt namn..." - #~ msgid "Rename" #~ msgstr "Byt namn" - #~ msgid "_Replace..." #~ msgstr "_Ersätt..." - #~ msgid "Replace..." #~ msgstr "Ersätt..." - #~ msgid "File system" #~ msgstr "Filsystem" #, fuzzy #~ msgid "Writing %s failed: %s" #~ msgstr "Bokmärkessparande misslyckades: %s" - #~ msgid "Network Drive" #~ msgstr "Nätverksenhet" - #~ msgid "_Credits" #~ msgstr "_Tack" - #~ msgid "Error getting information for '%s'" #~ msgstr "Fel vid hämtning av information för \"%s\"" - #~ msgid "Select a File" #~ msgstr "Välj en fil" - #~ msgid "error getting information for '%s': %s" #~ msgstr "fel vid hämtning av information för \"%s\": %s" - #~ msgid "error creating directory '%s': %s" #~ msgstr "fel vid skapande av katalogen \"%s\": %s" - #~ msgid "Bookmark saving failed (%s)" #~ msgstr "Bokmärkessparande misslyckades (%s)" - #~ msgid "This file system does not support icons for everything" #~ msgstr "Detta filsystem stöder inte ikoner till allt" - #~ msgid "" #~ "Could not change the current folder to %s:\n" #~ "%s" #~ msgstr "" #~ "Kunde inte byta aktuell mapp till %s:\n" #~ "%s" - #~ msgid "Could not add bookmark for %s because it is not a folder." #~ msgstr "Kunde inte lägga till bokmärke för %s eftersom det inte är en mapp." - -#~ msgid "Could not find the path" -#~ msgstr "Kunde inte hitta sökvägen" - #~ msgid "Input Methods" #~ msgstr "Inmatningsmetoder" - #~ msgid "Unsupported TIFF variant" #~ msgstr "TIFF-varianten stöds inte" - #~ msgid "Colors" #~ msgstr "Färger" - #~ msgid "Show Hidden Files" #~ msgstr "Visa dolda filer" - #~ msgid "Create Folder" #~ msgstr "Skapa _mapp" - #~ msgid "Create _Folder" #~ msgstr "Skapa _mapp" + diff --git a/po/ug.po b/po/ug.po index 65a512720e..f75ef719ff 100644 --- a/po/ug.po +++ b/po/ug.po @@ -1,77 +1,67 @@ -# Uighur translation for gtk+2.0 -# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 -# This file is distributed under the same license as the gtk+2.0 package. -# Ömerjan Tursunqasim , 2008. -# Sahran , 2010 -# +# Uighur translation for gtk+2.0 +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the gtk+2.0 package. +# Ömerjan Tursunqasim , 2008. +# Sahran , 2010 +# msgid "" msgstr "" "Project-Id-Version: gtk+2.0\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2b&component=general\n" -"POT-Creation-Date: 2010-11-19 03:45+0000\n" -"PO-Revision-Date: 2010-08-02 01:02+0600\n" -"Last-Translator: Sahran \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%" +"2b&component=general\n" +"POT-Creation-Date: 2011-01-13 03:31+0000\n" +"PO-Revision-Date: 2010-12-29 11:40+0600\n" +"Last-Translator: Sahran \n" "Language-Team: Uyghur Computer Science Association \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2010-05-06 04:15+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: ../gdk/gdk.c:115 +#: ../gdk/gdk.c:152 #, c-format msgid "Error parsing option --gdk-debug" -msgstr "--gdk-debug تاللانمىنى يېشىشتە خاتالىق كۆرۈلدى" +msgstr " --gdk-debug تاللانمىنى يېشىشتە خاتالىق كۆرۈلدى" -#: ../gdk/gdk.c:135 +#: ../gdk/gdk.c:172 #, c-format msgid "Error parsing option --gdk-no-debug" -msgstr "--gdk-no-debug تاللانمىنى يېشىشتە خاتالىق كۆرۈلدى" +msgstr " --gdk-no-debug تاللانمىنى يېشىشتە خاتالىق كۆرۈلدى" #. Description of --class=CLASS in --help output -#: ../gdk/gdk.c:163 +#: ../gdk/gdk.c:200 msgid "Program class as used by the window manager" msgstr "كۆزنەك باشقۇرغۇچ ئىشلەتكەن پروگرامما تۈرى" #. Placeholder in --class=CLASS in --help output -#: ../gdk/gdk.c:164 +#: ../gdk/gdk.c:201 msgid "CLASS" msgstr "تۈر" #. Description of --name=NAME in --help output -#: ../gdk/gdk.c:166 +#: ../gdk/gdk.c:203 msgid "Program name as used by the window manager" msgstr "كۆزنەك باشقۇرغۇچ ئىشلەتكەن پروگرامما ئىسمى" #. Placeholder in --name=NAME in --help output -#: ../gdk/gdk.c:167 +#: ../gdk/gdk.c:204 msgid "NAME" msgstr "ئاتى" #. Description of --display=DISPLAY in --help output -#: ../gdk/gdk.c:169 +#: ../gdk/gdk.c:206 msgid "X display to use" msgstr "X كۆرسىتىش ئېغىزى ئىشلەت" #. Placeholder in --display=DISPLAY in --help output -#: ../gdk/gdk.c:170 +#: ../gdk/gdk.c:207 msgid "DISPLAY" msgstr "كۆرسەت" -#. Description of --screen=SCREEN in --help output -#: ../gdk/gdk.c:172 -msgid "X screen to use" -msgstr "ئىشلەتكەن X ئېكران" - -#. Placeholder in --screen=SCREEN in --help output -#: ../gdk/gdk.c:173 -msgid "SCREEN" -msgstr "ئېكران" - #. Description of --gdk-debug=FLAGS in --help output -#: ../gdk/gdk.c:176 +#: ../gdk/gdk.c:210 msgid "GDK debugging flags to set" msgstr "تەڭشەيدىغان GTK+ سازلاش بەلگىسى" @@ -79,12 +69,12 @@ msgstr "تەڭشەيدىغان GTK+ سازلاش بەلگىسى" #. Placeholder in --gdk-no-debug=FLAGS in --help output #. Placeholder in --gtk-debug=FLAGS in --help output #. Placeholder in --gtk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:177 ../gdk/gdk.c:180 ../gtk/gtkmain.c:525 ../gtk/gtkmain.c:528 +#: ../gdk/gdk.c:211 ../gdk/gdk.c:214 ../gtk/gtkmain.c:570 ../gtk/gtkmain.c:573 msgid "FLAGS" msgstr "بەلگە" #. Description of --gdk-no-debug=FLAGS in --help output -#: ../gdk/gdk.c:179 +#: ../gdk/gdk.c:213 msgid "GDK debugging flags to unset" msgstr "قالدۇرماقچى بولغان GTK+ سازلاش بەلگىسى" @@ -106,7 +96,7 @@ msgstr "Return" #: ../gdk/keyname-table.h:3943 msgctxt "keyboard label" msgid "Pause" -msgstr "ۋاقىتلىق توختاش" +msgstr "ۋاقىتلىق توختا" #: ../gdk/keyname-table.h:3944 msgctxt "keyboard label" @@ -126,12 +116,12 @@ msgstr "Escape" #: ../gdk/keyname-table.h:3947 msgctxt "keyboard label" msgid "Multi_key" -msgstr "Multikey(_K)" +msgstr "Multi_key" #: ../gdk/keyname-table.h:3948 msgctxt "keyboard label" msgid "Home" -msgstr "Home" +msgstr "باش بەت" #: ../gdk/keyname-table.h:3949 msgctxt "keyboard label" @@ -151,7 +141,7 @@ msgstr "ئوڭ" #: ../gdk/keyname-table.h:3952 msgctxt "keyboard label" msgid "Down" -msgstr "تۆۋەن" +msgstr "ئاستى يا ئوق" #: ../gdk/keyname-table.h:3953 msgctxt "keyboard label" @@ -274,108 +264,107 @@ msgid "Delete" msgstr "ئۆچۈر" #. Description of --sync in --help output -#: ../gdk/win32/gdkmain-win32.c:54 +#: ../gdk/win32/gdkmain-win32.c:55 msgid "Don't batch GDI requests" msgstr "GDI ئىلتىماسىنى توپ بىر تەرەپ قىلالمايدۇ" #. Description of --no-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:56 +#: ../gdk/win32/gdkmain-win32.c:57 msgid "Don't use the Wintab API for tablet support" msgstr "Wintab API ئىشلەتمەي tablet قوللايدۇ" #. Description of --ignore-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:58 +#: ../gdk/win32/gdkmain-win32.c:59 msgid "Same as --no-wintab" msgstr "--no-wintab بىلەن ئوخشاش" #. Description of --use-wintab in --help output -#: ../gdk/win32/gdkmain-win32.c:60 +#: ../gdk/win32/gdkmain-win32.c:61 msgid "Do use the Wintab API [default]" msgstr "Wintab API ئىشلەت [كۆڭۈلدىكى]" #. Description of --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:62 +#: ../gdk/win32/gdkmain-win32.c:63 msgid "Size of the palette in 8 bit mode" msgstr "8 بىتلىق رەڭ تەڭشەش تاختا چوڭلۇقى" #. Placeholder in --max-colors=COLORS in --help output -#: ../gdk/win32/gdkmain-win32.c:63 +#: ../gdk/win32/gdkmain-win32.c:64 msgid "COLORS" msgstr "رەڭ" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:294 #, c-format msgid "Starting %s" msgstr "%s قوزغىلىۋاتىدۇ" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:316 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:307 #, c-format msgid "Opening %s" msgstr "%s نى ئېچىۋاتىدۇ" -#: ../gdk/x11/gdkapplaunchcontext-x11.c:321 +#: ../gdk/x11/gdkapplaunchcontext-x11.c:312 #, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" msgstr[0] "%d تۈرنى ئېچىۋاتىدۇ" -#. Description of --sync in --help output -#: ../gdk/x11/gdkmain-x11.c:94 -msgid "Make X calls synchronous" -msgstr "X نى قەدەمداش قىلىپ ئىشلەت" - #. Translators: this is the license preamble; the string at the end #. * contains the URL of the license. #. -#: ../gtk/gtkaboutdialog.c:101 +#: ../gtk/gtkaboutdialog.c:104 #, c-format -msgid "This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" +msgid "" +"This program comes with ABSOLUTELY NO WARRANTY; for details, visit %s" msgstr "" +"بۇ پروگرامما ھېچقانداق كاپالەت بەرمەيدۇ؛ تەپسىلاتىنى %s " +"زىيارەت قىلىڭ" -#: ../gtk/gtkaboutdialog.c:339 ../gtk/gtkaboutdialog.c:2233 +#: ../gtk/gtkaboutdialog.c:346 msgid "License" msgstr "ئىجازەتنامە" -#: ../gtk/gtkaboutdialog.c:340 +#: ../gtk/gtkaboutdialog.c:347 msgid "The license of the program" msgstr "پروگراممىنىڭ ئىجازەت كېلىشىمى" #. Add the credits button -#: ../gtk/gtkaboutdialog.c:622 +#: ../gtk/gtkaboutdialog.c:739 msgid "C_redits" msgstr "تەشەككۈر(_R)" #. Add the license button -#: ../gtk/gtkaboutdialog.c:636 +#: ../gtk/gtkaboutdialog.c:752 msgid "_License" -msgstr "ئىجازەت(_L)" +msgstr "ئىجازەتنامە(_L)" -#: ../gtk/gtkaboutdialog.c:840 +#: ../gtk/gtkaboutdialog.c:957 msgid "Could not show link" msgstr "ئۇلانمىنى كۆرسىتەلمىدى" -#: ../gtk/gtkaboutdialog.c:933 +#: ../gtk/gtkaboutdialog.c:994 +msgid "Homepage" +msgstr "باش بەت" + +#: ../gtk/gtkaboutdialog.c:1048 #, c-format msgid "About %s" msgstr "%s ھەققىدە" -#: ../gtk/gtkaboutdialog.c:2151 -msgid "Credits" -msgstr "تەشەككۈر" +#: ../gtk/gtkaboutdialog.c:2372 +msgid "Created by" +msgstr "قۇرغۇچى" -#: ../gtk/gtkaboutdialog.c:2183 -msgid "Written by" -msgstr "يازغۇچى" - -#: ../gtk/gtkaboutdialog.c:2186 +#: ../gtk/gtkaboutdialog.c:2375 msgid "Documented by" msgstr "پۈتۈكچى" -#: ../gtk/gtkaboutdialog.c:2198 +#: ../gtk/gtkaboutdialog.c:2385 msgid "Translated by" msgstr "تەرجىمان" -#: ../gtk/gtkaboutdialog.c:2202 +#: ../gtk/gtkaboutdialog.c:2390 msgid "Artwork by" msgstr "گۈزەل سەنئەت تەھرىرى" @@ -384,7 +373,7 @@ msgstr "گۈزەل سەنئەت تەھرىرى" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:160 +#: ../gtk/gtkaccellabel.c:158 msgctxt "keyboard label" msgid "Shift" msgstr "Shift" @@ -394,7 +383,7 @@ msgstr "Shift" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:166 +#: ../gtk/gtkaccellabel.c:164 msgctxt "keyboard label" msgid "Ctrl" msgstr "Ctrl" @@ -404,7 +393,7 @@ msgstr "Ctrl" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:172 +#: ../gtk/gtkaccellabel.c:170 msgctxt "keyboard label" msgid "Alt" msgstr "Alt" @@ -414,7 +403,7 @@ msgstr "Alt" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:770 +#: ../gtk/gtkaccellabel.c:768 msgctxt "keyboard label" msgid "Super" msgstr "Super" @@ -424,7 +413,7 @@ msgstr "Super" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:783 +#: ../gtk/gtkaccellabel.c:781 msgctxt "keyboard label" msgid "Hyper" msgstr "Hyper" @@ -434,40 +423,143 @@ msgstr "Hyper" #. * translated on keyboards used for your language, don't translate #. * this. #. -#: ../gtk/gtkaccellabel.c:797 +#: ../gtk/gtkaccellabel.c:795 msgctxt "keyboard label" msgid "Meta" msgstr "Meta" -#: ../gtk/gtkaccellabel.c:813 +#: ../gtk/gtkaccellabel.c:811 msgctxt "keyboard label" msgid "Space" -msgstr "Space" +msgstr "بوشلۇق" -#: ../gtk/gtkaccellabel.c:816 +#: ../gtk/gtkaccellabel.c:814 msgctxt "keyboard label" msgid "Backslash" -msgstr "Backslash" +msgstr "تەتۈر يانتۇ سىزىقBackslash" -#: ../gtk/gtkbuilderparser.c:343 +#: ../gtk/gtkappchooserbutton.c:259 +#, fuzzy +#| msgid "Application" +msgid "Other application..." +msgstr "قوللىنىشچان پروگرامما" + +#: ../gtk/gtkappchooserdialog.c:127 +msgid "Failed to look for applications online" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:164 +msgid "Find applications online" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:208 +#, fuzzy +#| msgid "Could not clear list" +msgid "Could not run application" +msgstr "تىزىملىكنى تازىلىيالمايدۇ" + +#: ../gtk/gtkappchooserdialog.c:221 +#, fuzzy, c-format +#| msgid "Could not mount %s" +msgid "Could not find '%s'" +msgstr "%s يۈك چۈشۈرەلمىدى " + +#: ../gtk/gtkappchooserdialog.c:224 +#, fuzzy +#| msgid "Could not show link" +msgid "Could not find application" +msgstr "ئۇلانمىنى كۆرسىتەلمىدى" + +#. Translators: %s is a filename +#: ../gtk/gtkappchooserdialog.c:334 +#, c-format +msgid "Select an application to open \"%s\"" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:335 ../gtk/gtkappchooserwidget.c:644 +#, c-format +msgid "No applications available to open \"%s\"" +msgstr "" + +#. Translators: %s is a file type description +#: ../gtk/gtkappchooserdialog.c:341 +#, c-format +msgid "Select an application for \"%s\" files" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:344 +#, c-format +msgid "No applications available to open \"%s\" files" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:358 +msgid "" +"Click \"Show other applications\", for more options, or \"Find applications " +"online\" to install a new application" +msgstr "" + +#: ../gtk/gtkappchooserdialog.c:428 +#, fuzzy +#| msgid "Forget password _immediately" +msgid "Forget association" +msgstr "ئىمنى دەرھال ئۇنتۇ(_I)" + +#: ../gtk/gtkappchooserdialog.c:493 +#, fuzzy +#| msgid "Show GTK+ Options" +msgid "Show other applications" +msgstr "GTK+ تاللانما كۆرسەت" + +#: ../gtk/gtkappchooserdialog.c:511 +#, fuzzy +#| msgctxt "Stock label" +#| msgid "_Open" +msgid "_Open" +msgstr "ئاچ(_O)" + +#: ../gtk/gtkappchooserwidget.c:593 +#, fuzzy +#| msgid "Application" +msgid "Default Application" +msgstr "قوللىنىشچان پروگرامما" + +#: ../gtk/gtkappchooserwidget.c:730 +#, fuzzy +#| msgid "Application" +msgid "Recommended Applications" +msgstr "قوللىنىشچان پروگرامما" + +#: ../gtk/gtkappchooserwidget.c:744 +#, fuzzy +#| msgid "Application" +msgid "Related Applications" +msgstr "قوللىنىشچان پروگرامما" + +#: ../gtk/gtkappchooserwidget.c:758 +#, fuzzy +#| msgid "Application" +msgid "Other Applications" +msgstr "قوللىنىشچان پروگرامما" + +#: ../gtk/gtkbuilderparser.c:342 #, c-format msgid "Invalid type function on line %d: '%s'" msgstr "ئىناۋەتسىز تىپ فۇنكسىيىسى كۆرۈنگەن قۇر %d: '%s'" -#: ../gtk/gtkbuilderparser.c:407 +#: ../gtk/gtkbuilderparser.c:406 #, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" msgstr "تەكرار ئوبيېكت id '%s' كۆرۈنگەن قۇر %d (ئىلگىرى كۆرۈنگەن قۇر %d)" -#: ../gtk/gtkbuilderparser.c:859 +#: ../gtk/gtkbuilderparser.c:858 #, c-format msgid "Invalid root element: '%s'" msgstr "ئىناۋەتسىز غول ئېلېمېنت: '%s'" -#: ../gtk/gtkbuilderparser.c:898 +#: ../gtk/gtkbuilderparser.c:897 #, c-format msgid "Unhandled tag: '%s'" -msgstr "بىر تەرەپ قىلىنمىغان بەلگە: '%s'" +msgstr "بىر تەرەپ قىلىنمىغان بەلگە: %s" #. Translate to calendar:YM if you want years to be displayed #. * before months; otherwise translate to calendar:MY. @@ -479,24 +571,24 @@ msgstr "بىر تەرەپ قىلىنمىغان بەلگە: '%s'" #. * text direction of RTL and specify "calendar:YM", then the year #. * will appear to the right of the month. #. -#: ../gtk/gtkcalendar.c:878 +#: ../gtk/gtkcalendar.c:871 msgid "calendar:MY" -msgstr "calendar:MY" +msgstr "يىلنامە:YM" #. Translate to calendar:week_start:0 if you want Sunday to be the #. * 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:916 +#: ../gtk/gtkcalendar.c:909 msgid "calendar:week_start:0" -msgstr "calendar:week_start:0" +msgstr "يىلنامە:week_start:1" #. Translators: This is a text measurement template. #. * Translate it to the widest year text #. * #. * If you don't understand this, leave it as "2000" #. -#: ../gtk/gtkcalendar.c:1848 +#: ../gtk/gtkcalendar.c:1910 msgctxt "year measurement template" msgid "2000" msgstr "2000" @@ -511,7 +603,7 @@ msgstr "2000" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1879 ../gtk/gtkcalendar.c:2564 +#: ../gtk/gtkcalendar.c:1941 ../gtk/gtkcalendar.c:2638 #, c-format msgctxt "calendar:day:digits" msgid "%d" @@ -527,7 +619,7 @@ msgstr "%d" #. * digits. That needs support from your system and locale definition #. * too. #. -#: ../gtk/gtkcalendar.c:1911 ../gtk/gtkcalendar.c:2432 +#: ../gtk/gtkcalendar.c:1973 ../gtk/gtkcalendar.c:2499 #, c-format msgctxt "calendar:week:digits" msgid "%d" @@ -543,7 +635,7 @@ msgstr "%d" #. * #. * "%Y" is appropriate for most locales. #. -#: ../gtk/gtkcalendar.c:2197 +#: ../gtk/gtkcalendar.c:2268 msgctxt "calendar year format" msgid "%Y" msgstr "%Y" @@ -551,7 +643,7 @@ msgstr "%Y" #. This label is displayed in a treeview cell displaying #. * a disabled accelerator key combination. #. -#: ../gtk/gtkcellrendereraccel.c:272 +#: ../gtk/gtkcellrendereraccel.c:271 msgctxt "Accelerator" msgid "Disabled" msgstr "چەكلەنگەن" @@ -560,7 +652,7 @@ msgstr "چەكلەنگەن" #. * an accelerator key combination that is not valid according #. * to gtk_accelerator_valid(). #. -#: ../gtk/gtkcellrendereraccel.c:282 +#: ../gtk/gtkcellrendereraccel.c:281 msgctxt "Accelerator" msgid "Invalid" msgstr "ئىناۋەتسىز" @@ -569,7 +661,7 @@ msgstr "ئىناۋەتسىز" #. * an accelerator when the cell is clicked to change the #. * acelerator. #. -#: ../gtk/gtkcellrendereraccel.c:418 ../gtk/gtkcellrendereraccel.c:675 +#: ../gtk/gtkcellrendereraccel.c:417 ../gtk/gtkcellrendereraccel.c:674 msgid "New accelerator..." msgstr "يېڭى تېزلەتكۈچ كۇنۇپكا…" @@ -579,132 +671,144 @@ msgctxt "progress bar label" msgid "%d %%" msgstr "%d %%" -#: ../gtk/gtkcolorbutton.c:188 ../gtk/gtkcolorbutton.c:473 +#: ../gtk/gtkcolorbutton.c:187 ../gtk/gtkcolorbutton.c:483 msgid "Pick a Color" msgstr "رەڭ ئال" -#: ../gtk/gtkcolorbutton.c:363 +#: ../gtk/gtkcolorbutton.c:372 msgid "Received invalid color data\n" -msgstr "ئىناۋەتسىز رەڭ سانلىق-مەلۇماتى تاپشۇرۇۋالدى\n" +msgstr "ئىناۋەتسىز رەڭ سانلىق مەلۇماتى تاپشۇرۇۋالدى\n" -#: ../gtk/gtkcolorsel.c:416 +#: ../gtk/gtkcolorsel.c:415 msgid "" "Select the color you want from the outer ring. Select the darkness or " "lightness of that color using the inner triangle." -msgstr "سىرتقى ئايلانمىدىن سىزگە لازىملىق رەڭنى تاللاڭ .ئىچكى ئۈچ بۇلۇڭدىن رەڭنىڭ كۈچلۈكلۈكىنى تاللاڭ." +msgstr "" +"سىرتقى ئايلانمىدىن سىزگە لازىملىق رەڭنى تاللاڭ. ئىچكى ئۈچ بۇلۇڭدىن رەڭنىڭ " +"كۈچلۈكلۈكىنى تاللاڭ" -#: ../gtk/gtkcolorsel.c:440 +#: ../gtk/gtkcolorsel.c:439 msgid "" "Click the eyedropper, then click a color anywhere on your screen to select " "that color." msgstr "تېمىتقۇچنى تاق چېكىپ ئاندىن ئېكراننىڭ خالىغان يېرىدىن رەڭ تۇتۇڭ." -#: ../gtk/gtkcolorsel.c:449 +#: ../gtk/gtkcolorsel.c:448 msgid "_Hue:" -msgstr "رەڭ تەڭشەش(_H):" +msgstr "رەڭگى(_H):" -#: ../gtk/gtkcolorsel.c:450 +#: ../gtk/gtkcolorsel.c:449 msgid "Position on the color wheel." msgstr "رەڭ ھالقىسىدىكى ئورنى" -#: ../gtk/gtkcolorsel.c:452 +#: ../gtk/gtkcolorsel.c:451 msgid "_Saturation:" -msgstr "تويۇنۇش دەرىجىسى(_S):" +msgstr "تويۇنۇش دەرىجىسى (_S):" -#: ../gtk/gtkcolorsel.c:453 +#: ../gtk/gtkcolorsel.c:452 msgid "Intensity of the color." msgstr "رەڭ يورۇقلۇق دەرىجىسى." -#: ../gtk/gtkcolorsel.c:454 +#: ../gtk/gtkcolorsel.c:453 msgid "_Value:" msgstr "قىممىتى(_V):" -#: ../gtk/gtkcolorsel.c:455 +#: ../gtk/gtkcolorsel.c:454 msgid "Brightness of the color." msgstr "رەڭ يورۇقلۇقى." -#: ../gtk/gtkcolorsel.c:456 +#: ../gtk/gtkcolorsel.c:455 msgid "_Red:" -msgstr "قىزىل(_R):" +msgstr "قىزىل (_R):" -#: ../gtk/gtkcolorsel.c:457 +#: ../gtk/gtkcolorsel.c:456 msgid "Amount of red light in the color." msgstr "رەڭ تەركىبىدىكى قىزىل رەڭ مىقدارى." -#: ../gtk/gtkcolorsel.c:458 +#: ../gtk/gtkcolorsel.c:457 msgid "_Green:" -msgstr "يېشىل(_G):" +msgstr "يېشىل (_G):" -#: ../gtk/gtkcolorsel.c:459 +#: ../gtk/gtkcolorsel.c:458 msgid "Amount of green light in the color." msgstr "رەڭ تەركىبىدىكى يېشىل رەڭ مىقدارى." -#: ../gtk/gtkcolorsel.c:460 +#: ../gtk/gtkcolorsel.c:459 msgid "_Blue:" msgstr "كۆك(_B):" -#: ../gtk/gtkcolorsel.c:461 +#: ../gtk/gtkcolorsel.c:460 msgid "Amount of blue light in the color." msgstr "رەڭ تەركىبىدىكى كۆك رەڭ مىقدارى." -#: ../gtk/gtkcolorsel.c:464 +#: ../gtk/gtkcolorsel.c:463 msgid "Op_acity:" msgstr "سۈزۈكلۈك(_A):" -#: ../gtk/gtkcolorsel.c:471 ../gtk/gtkcolorsel.c:481 +#: ../gtk/gtkcolorsel.c:470 ../gtk/gtkcolorsel.c:480 msgid "Transparency of the color." msgstr "رەڭ سۈزۈكلۈكى." -#: ../gtk/gtkcolorsel.c:488 +#: ../gtk/gtkcolorsel.c:487 msgid "Color _name:" msgstr "رەڭ ئاتى(_N):" -#: ../gtk/gtkcolorsel.c:502 +#: ../gtk/gtkcolorsel.c:501 msgid "" "You can enter an HTML-style hexadecimal color value, or simply a color name " "such as 'orange' in this entry." -msgstr "سىز بۇ جايغا HTML ئۇسلۇبىدىكى 16 لىك سىستېما رەت نومۇرى ياكى “orange” گە ئوخشاش رەڭ ئاتلىرىنى كىرگۈزسىڭىز بولىدۇ." +msgstr "" +"سىز بۇ جايغا HTML ئۇسلۇبىدىكى 16 لىك سىستېما رەت نومۇرى ياكى “orange” گە " +"ئوخشاش رەڭ ئاتلىرىنى كىرگۈزسىڭىز بولىدۇ." -#: ../gtk/gtkcolorsel.c:532 +#: ../gtk/gtkcolorsel.c:531 msgid "_Palette:" msgstr "رەڭ تاختىسى(_P):" -#: ../gtk/gtkcolorsel.c:561 +#: ../gtk/gtkcolorsel.c:560 msgid "Color Wheel" msgstr "رەڭ ھالقىسى" -#: ../gtk/gtkcolorsel.c:1031 +#: ../gtk/gtkcolorsel.c:1033 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now. You can drag this color to a palette entry, or select this color as " "current by dragging it to the other color swatch alongside." -msgstr "ئىلگىرى تاللانغان رەڭ، سىزنىڭ ھازىر تاللىغىنىڭىزغا قارىتىلغان. سىز بۇ رەڭنى رەڭ تاللاش تاختىسىغا سۆرەپ ياكى بۇ رەڭنى كېيىنكى رەڭ كاتەكچىسىگە سۆرەپ نۆۋەتتىكى رەڭ قىلىپ بەلگىلىسىڭىز بولىدۇ." +msgstr "" +"ئىلگىرى تاللانغان رەڭ، سىزنىڭ ھازىر تاللىغىنىڭىزغا قارىتىلغان. سىز بۇ رەڭنى " +"رەڭ تاللاش تاختىسىغا سۆرەپ ياكى بۇ رەڭنى كېيىنكى رەڭ كاتەكچىسىگە سۆرەپ " +"نۆۋەتتىكى رەڭ قىلىپ بەلگىلىسىڭىز بولىدۇ" -#: ../gtk/gtkcolorsel.c:1034 +#: ../gtk/gtkcolorsel.c:1036 msgid "" "The color you've chosen. You can drag this color to a palette entry to save " "it for use in the future." -msgstr "سىز تاللىغان رەڭ .سىز بۇ رەڭنى تاللاپ ساقلاپ قويۇپ كىيىن ئىشلەتسىڭىز بولىدۇ." +msgstr "" +"سىز تاللىغان رەڭ. سىز بۇ رەڭنى رەڭ تاختىسىغا سۆرەپ ساقلاپ قويۇپ كېيىن " +"ئىشلەتسىڭىز بولىدۇ" -#: ../gtk/gtkcolorsel.c:1039 +#: ../gtk/gtkcolorsel.c:1041 msgid "" "The previously-selected color, for comparison to the color you're selecting " "now." msgstr "ئىلگىرى تاللانغان رەڭ، سىزنىڭ ھازىر تاللىغىنىڭىزغا قارىتىلغان." -#: ../gtk/gtkcolorsel.c:1042 +#: ../gtk/gtkcolorsel.c:1044 msgid "The color you've chosen." msgstr "سىز تاللىغان رەڭ." -#: ../gtk/gtkcolorsel.c:1442 +#: ../gtk/gtkcolorsel.c:1448 msgid "_Save color here" msgstr "رەڭنى بۇ جايغا ساقلا(_S)" -#: ../gtk/gtkcolorsel.c:1647 +#: ../gtk/gtkcolorsel.c:1656 msgid "" "Click this palette entry to make it the current color. To change this entry, " "drag a color swatch here or right-click it and select \"Save color here.\"" -msgstr "رەڭ تاختىسىدىكى رەڭنى تاق چەكسىڭىز نۆۋەتتىكى رەڭ بولۇپ تاللىنىدۇ. بۇ تۈرنى ئۆزگەرتىشتە، رەڭنى بۇ جايغا سۆرەڭ ياكى چاشقىنەك ئوڭ توپچىسىنى چەككەندىن كېيىن بۇ جايدا «رەڭنى بۇ جايغا ساقلا»نى تاللاڭ." +msgstr "" +"رەڭ تاختىسىدىكى رەڭنى تاق چەكسىڭىز نۆۋەتتىكى رەڭ بولۇپ تاللىنىدۇ. بۇ تۈرنى " +"ئۆزگەرتىشتە، رەڭنى بۇ جايغا سۆرەڭ ياكى چاشقىنەك ئوڭ توپچىسىنى چەككەندىن " +"كېيىن بۇ جايدا «رەڭنى بۇ جايغا ساقلا»نى تاللاڭ." #: ../gtk/gtkcolorseldialog.c:189 msgid "Color Selection" @@ -721,7 +825,7 @@ msgid "default:mm" msgstr "default:mm" #. And show the custom paper dialog -#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3240 +#: ../gtk/gtkcustompaperunixdialog.c:374 ../gtk/gtkprintunixdialog.c:3255 msgid "Manage Custom Sizes" msgstr "ئىختىيارى چوڭلۇقنى باشقۇر" @@ -774,318 +878,324 @@ msgstr "ئوڭ(_R):" msgid "Paper Margins" msgstr "قەغەز يان ئارىلىقى" -#: ../gtk/gtkentry.c:8630 ../gtk/gtktextview.c:8229 +#: ../gtk/gtkentry.c:8806 ../gtk/gtktextview.c:8227 msgid "Input _Methods" msgstr "كىرگۈزگۈچ(_M)" -#: ../gtk/gtkentry.c:8644 ../gtk/gtktextview.c:8243 +#: ../gtk/gtkentry.c:8820 ../gtk/gtktextview.c:8241 msgid "_Insert Unicode Control Character" msgstr "يۇنىكودلۇق كونترول بەلگىسى قىستۇر(_I)" -#: ../gtk/gtkentry.c:10044 +#: ../gtk/gtkentry.c:10224 msgid "Caps Lock and Num Lock are on" msgstr "Caps Lock ۋە Num Lock ئوچۇق" -#: ../gtk/gtkentry.c:10046 +#: ../gtk/gtkentry.c:10226 msgid "Num Lock is on" msgstr "Num Lock ئوچۇق" -#: ../gtk/gtkentry.c:10048 +#: ../gtk/gtkentry.c:10228 msgid "Caps Lock is on" msgstr "Caps Lock ئوچۇق" #. **************** * #. * Private Macros * #. * **************** -#: ../gtk/gtkfilechooserbutton.c:61 +#: ../gtk/gtkfilechooserbutton.c:62 msgid "Select A File" msgstr "ھۆججەت تاللاڭ" -#: ../gtk/gtkfilechooserbutton.c:62 ../gtk/gtkfilechooserdefault.c:1833 +#: ../gtk/gtkfilechooserbutton.c:63 ../gtk/gtkfilechooserdefault.c:1834 msgid "Desktop" -msgstr "ئۈستەليۈزى" +msgstr "ئۈستەلئۈستى" -#: ../gtk/gtkfilechooserbutton.c:63 +#: ../gtk/gtkfilechooserbutton.c:64 msgid "(None)" msgstr "(يوق)" -#: ../gtk/gtkfilechooserbutton.c:2001 +#: ../gtk/gtkfilechooserbutton.c:1999 msgid "Other..." msgstr "باشقا…" -#: ../gtk/gtkfilechooserdefault.c:147 +#: ../gtk/gtkfilechooserdefault.c:146 msgid "Type name of new folder" msgstr "يېڭى ھۆججەت قىسقۇچنىڭ ئاتىنى كىرگۈزۈڭ" -#: ../gtk/gtkfilechooserdefault.c:946 +#: ../gtk/gtkfilechooserdefault.c:944 msgid "Could not retrieve information about the file" msgstr "ھۆججەتكە مۇناسىۋەتلىك ئۇچۇرلارغا ئېرىشكىلى بولمايدۇ" -#: ../gtk/gtkfilechooserdefault.c:957 +#: ../gtk/gtkfilechooserdefault.c:955 msgid "Could not add a bookmark" msgstr "قىسقۇچ قىستۇرالمايدۇ" -#: ../gtk/gtkfilechooserdefault.c:968 +#: ../gtk/gtkfilechooserdefault.c:966 msgid "Could not remove bookmark" msgstr "قىسقۇچنى چىقىرىۋېتەلمەيدۇ" -#: ../gtk/gtkfilechooserdefault.c:979 +#: ../gtk/gtkfilechooserdefault.c:977 msgid "The folder could not be created" msgstr "قىسقۇچ قۇرالمايدۇ" -#: ../gtk/gtkfilechooserdefault.c:992 +#: ../gtk/gtkfilechooserdefault.c:990 msgid "" "The folder could not be created, as a file with the same name already " "exists. Try using a different name for the folder, or rename the file first." -msgstr "قىسقۇچ قۇرالمايدۇ، چۈنكى ئوخشاش ئاتلىق قىسقۇچ مەۋجۇت. باشقا ئات ئىشلىتىپ سىناڭ ياكى ھۆججەت ئاتىنى ئۆزگەرتىڭ." +msgstr "" +"قىسقۇچ قۇرالمايدۇ، چۈنكى ئوخشاش ئاتلىق قىسقۇچ مەۋجۇت. باشقا ئات ئىشلىتىپ " +"سىناڭ ياكى ھۆججەت ئاتىنى ئۆزگەرتىڭ." -#: ../gtk/gtkfilechooserdefault.c:1006 +#: ../gtk/gtkfilechooserdefault.c:1004 msgid "" "You may only select folders. The item that you selected is not a folder; " "try using a different item." msgstr "" +"سىز قىسقۇچلا تاللىيالايسىز. سىز تاللىغان تۈر قىسقۇچ ئېمە؛ باشقا تۈرنى " +"ئىشلىتىپ سىناڭ." -#: ../gtk/gtkfilechooserdefault.c:1016 +#: ../gtk/gtkfilechooserdefault.c:1014 msgid "Invalid file name" msgstr "ئىناۋەتسىز ھۆججەت ئاتى" -#: ../gtk/gtkfilechooserdefault.c:1026 +#: ../gtk/gtkfilechooserdefault.c:1024 msgid "The folder contents could not be displayed" -msgstr "قىسقۇچ مەزمۇنىنى كۆرسىتەلمىدى" +msgstr "قىسقۇچ مەزمۇننى كۆرسىتەلمىدى" #. Translators: the first string is a path and the second string #. * is a hostname. Nautilus and the panel contain the same string #. * to translate. #. -#: ../gtk/gtkfilechooserdefault.c:1576 +#: ../gtk/gtkfilechooserdefault.c:1577 #, c-format msgid "%1$s on %2$s" msgstr "%2$s ئۈستىدىكى %1$s" -#: ../gtk/gtkfilechooserdefault.c:1752 +#: ../gtk/gtkfilechooserdefault.c:1753 msgid "Search" msgstr "ئىزدە" -#: ../gtk/gtkfilechooserdefault.c:1776 ../gtk/gtkfilechooserdefault.c:9417 +#: ../gtk/gtkfilechooserdefault.c:1777 ../gtk/gtkfilechooserdefault.c:9424 msgid "Recently Used" msgstr "يېقىندا ئىشلەتكەن" -#: ../gtk/gtkfilechooserdefault.c:2437 +#: ../gtk/gtkfilechooserdefault.c:2438 msgid "Select which types of files are shown" msgstr "كۆرسىتىلىدىغان ھۆججەت تىپىنى تاللاڭ" -#: ../gtk/gtkfilechooserdefault.c:2796 +#: ../gtk/gtkfilechooserdefault.c:2797 #, c-format msgid "Add the folder '%s' to the bookmarks" msgstr "'%s' قىسقۇچنى خەتكۈچكە قوش" -#: ../gtk/gtkfilechooserdefault.c:2840 +#: ../gtk/gtkfilechooserdefault.c:2841 #, c-format msgid "Add the current folder to the bookmarks" msgstr "نۆۋەتتىكى قىسقۇچنى خەتكۈچكە قوش" -#: ../gtk/gtkfilechooserdefault.c:2842 +#: ../gtk/gtkfilechooserdefault.c:2843 #, c-format msgid "Add the selected folders to the bookmarks" msgstr "تاللانغان قىسقۇچنى خەتكۈچكە قوش" -#: ../gtk/gtkfilechooserdefault.c:2880 +#: ../gtk/gtkfilechooserdefault.c:2881 #, c-format msgid "Remove the bookmark '%s'" msgstr "'%s' خەتكۈچنى چىقىرىۋەت" -#: ../gtk/gtkfilechooserdefault.c:2882 +#: ../gtk/gtkfilechooserdefault.c:2883 #, c-format msgid "Bookmark '%s' cannot be removed" msgstr "'%s' خەتكۈچنى چىقىرىۋېتەلمىدى." -#: ../gtk/gtkfilechooserdefault.c:2889 ../gtk/gtkfilechooserdefault.c:3750 +#: ../gtk/gtkfilechooserdefault.c:2890 ../gtk/gtkfilechooserdefault.c:3758 msgid "Remove the selected bookmark" msgstr "تاللانغان خەتكۈچنى چىقىرىۋەت" -#: ../gtk/gtkfilechooserdefault.c:3445 +#: ../gtk/gtkfilechooserdefault.c:3453 msgid "Remove" msgstr "چىقىرىۋەت" -#: ../gtk/gtkfilechooserdefault.c:3454 +#: ../gtk/gtkfilechooserdefault.c:3462 msgid "Rename..." msgstr "ئات ئۆزگەرت…" #. Accessible object name for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3617 +#: ../gtk/gtkfilechooserdefault.c:3625 msgid "Places" msgstr "ئورۇن" #. Column header for the file chooser's shortcuts pane -#: ../gtk/gtkfilechooserdefault.c:3674 +#: ../gtk/gtkfilechooserdefault.c:3682 msgid "_Places" msgstr "ئورۇن(_P)" -#: ../gtk/gtkfilechooserdefault.c:3731 +#: ../gtk/gtkfilechooserdefault.c:3739 msgid "_Add" msgstr "قوش(_A)" -#: ../gtk/gtkfilechooserdefault.c:3738 +#: ../gtk/gtkfilechooserdefault.c:3746 msgid "Add the selected folder to the Bookmarks" msgstr "تاللانغان قىسقۇچنى خەتكۈچكە قوش" -#: ../gtk/gtkfilechooserdefault.c:3743 +#: ../gtk/gtkfilechooserdefault.c:3751 msgid "_Remove" -msgstr "ئۆچۈر(_R)" +msgstr "چىقىرىۋەت(_R)" -#: ../gtk/gtkfilechooserdefault.c:3885 +#: ../gtk/gtkfilechooserdefault.c:3893 msgid "Could not select file" msgstr "ھۆججەت تاللىيالمىدى" -#: ../gtk/gtkfilechooserdefault.c:4060 +#: ../gtk/gtkfilechooserdefault.c:4068 msgid "_Add to Bookmarks" msgstr "خەتكۈچكە قوش(_A)" -#: ../gtk/gtkfilechooserdefault.c:4073 +#: ../gtk/gtkfilechooserdefault.c:4081 msgid "Show _Hidden Files" msgstr "يوشۇرۇن ھۆججەتلەرنى كۆرسەت(_H)" -#: ../gtk/gtkfilechooserdefault.c:4080 +#: ../gtk/gtkfilechooserdefault.c:4088 msgid "Show _Size Column" -msgstr "چوڭلۇق ئىستونىنى كۆرسەت(_S)" +msgstr "چوڭلۇق ئىستونىنى كۆرسەت(~S)" -#: ../gtk/gtkfilechooserdefault.c:4306 +#: ../gtk/gtkfilechooserdefault.c:4314 msgid "Files" msgstr "ھۆججەتلەر" -#: ../gtk/gtkfilechooserdefault.c:4357 +#: ../gtk/gtkfilechooserdefault.c:4365 msgid "Name" msgstr "ئاتى" -#: ../gtk/gtkfilechooserdefault.c:4380 +#: ../gtk/gtkfilechooserdefault.c:4388 msgid "Size" msgstr "چوڭلۇقى" -#: ../gtk/gtkfilechooserdefault.c:4394 +#: ../gtk/gtkfilechooserdefault.c:4402 msgid "Modified" msgstr "ئۆزگەرتكەن" #. Label -#: ../gtk/gtkfilechooserdefault.c:4649 ../gtk/gtkprinteroptionwidget.c:793 +#: ../gtk/gtkfilechooserdefault.c:4657 ../gtk/gtkprinteroptionwidget.c:793 msgid "_Name:" msgstr "ئاتى(_N):" -#: ../gtk/gtkfilechooserdefault.c:4692 +#: ../gtk/gtkfilechooserdefault.c:4700 msgid "_Browse for other folders" msgstr "باشقا قىسقۇچقا كۆز يۈگۈرت(_B)" -#: ../gtk/gtkfilechooserdefault.c:4962 +#: ../gtk/gtkfilechooserdefault.c:4970 msgid "Type a file name" msgstr "ھۆججەت ئاتىنى كىرگۈزۈڭ" #. Create Folder -#: ../gtk/gtkfilechooserdefault.c:5005 +#: ../gtk/gtkfilechooserdefault.c:5013 msgid "Create Fo_lder" msgstr "قىسقۇچ قۇر(_L)" -#: ../gtk/gtkfilechooserdefault.c:5015 +#: ../gtk/gtkfilechooserdefault.c:5023 msgid "_Location:" msgstr "ئورنى(_L):" -#: ../gtk/gtkfilechooserdefault.c:5219 +#: ../gtk/gtkfilechooserdefault.c:5227 msgid "Save in _folder:" msgstr "قىسقۇچقا ساقلا(_F):" -#: ../gtk/gtkfilechooserdefault.c:5221 +#: ../gtk/gtkfilechooserdefault.c:5229 msgid "Create in _folder:" msgstr "قىسقۇچتا قۇر(_F):" -#: ../gtk/gtkfilechooserdefault.c:6290 +#: ../gtk/gtkfilechooserdefault.c:6296 #, c-format msgid "Could not read the contents of %s" msgstr "%s نىڭ مەزمۇنىنى ئوقۇيالمىدى" -#: ../gtk/gtkfilechooserdefault.c:6294 +#: ../gtk/gtkfilechooserdefault.c:6300 msgid "Could not read the contents of the folder" msgstr "قىسقۇچنىڭ مەزمۇنىنى ئوقۇيالمىدى" -#: ../gtk/gtkfilechooserdefault.c:6387 ../gtk/gtkfilechooserdefault.c:6455 -#: ../gtk/gtkfilechooserdefault.c:6600 +#: ../gtk/gtkfilechooserdefault.c:6393 ../gtk/gtkfilechooserdefault.c:6461 +#: ../gtk/gtkfilechooserdefault.c:6606 msgid "Unknown" msgstr "نامەلۇم" -#: ../gtk/gtkfilechooserdefault.c:6402 +#: ../gtk/gtkfilechooserdefault.c:6408 msgid "%H:%M" msgstr "%H:%M" -#: ../gtk/gtkfilechooserdefault.c:6404 +#: ../gtk/gtkfilechooserdefault.c:6410 msgid "Yesterday at %H:%M" -msgstr "ئەتە %H:%M" +msgstr "تۈنۈگۈن %H:%M" -#: ../gtk/gtkfilechooserdefault.c:7070 +#: ../gtk/gtkfilechooserdefault.c:7076 msgid "Cannot change to folder because it is not local" msgstr "قىسقۇچقا ئۆزگەرتەلمەيدۇ چۈنكى ئۇ يەرلىك قىسقۇچ ئەمەس" -#: ../gtk/gtkfilechooserdefault.c:7667 ../gtk/gtkfilechooserdefault.c:7688 +#: ../gtk/gtkfilechooserdefault.c:7673 ../gtk/gtkfilechooserdefault.c:7694 #, c-format msgid "Shortcut %s already exists" msgstr "%s قىسقا يول مەۋجۇت" -#: ../gtk/gtkfilechooserdefault.c:7778 +#: ../gtk/gtkfilechooserdefault.c:7784 #, c-format msgid "Shortcut %s does not exist" msgstr "%s قىسقا يول مەۋجۇت ئەمەس" -#: ../gtk/gtkfilechooserdefault.c:8039 ../gtk/gtkprintunixdialog.c:480 +#: ../gtk/gtkfilechooserdefault.c:8046 ../gtk/gtkprintunixdialog.c:480 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "\"%s\" ئاتلىق ھۆججەت مەۋجۇت. ئۇنى ئالماشتۇرۇۋېتەمسىز؟" -#: ../gtk/gtkfilechooserdefault.c:8042 ../gtk/gtkprintunixdialog.c:484 +#: ../gtk/gtkfilechooserdefault.c:8049 ../gtk/gtkprintunixdialog.c:484 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." -msgstr "ئىچىدە مەۋجۇت . ھۆججەتنى ئالماشتۇرسا ئىچىدىكى مەزمۇنلار قاپلىنىدۇ “%s”ھۆججەت ئاللىبۇرۇن" +msgstr "" +"\"%s\" ئاتلىق ھۆججەت مەۋجۇت. ئۇنى ئالماشتۇرسىڭىز مەزمۇنىنى قاپلىۋېتىدۇ." -#: ../gtk/gtkfilechooserdefault.c:8047 ../gtk/gtkprintunixdialog.c:491 +#: ../gtk/gtkfilechooserdefault.c:8054 ../gtk/gtkprintunixdialog.c:491 msgid "_Replace" msgstr "ئالماشتۇر(_R)" -#: ../gtk/gtkfilechooserdefault.c:8755 +#: ../gtk/gtkfilechooserdefault.c:8762 msgid "Could not start the search process" msgstr "ئىزدىگۈچنى قوزغىتالمىدى" -#: ../gtk/gtkfilechooserdefault.c:8756 +#: ../gtk/gtkfilechooserdefault.c:8763 msgid "" "The program was not able to create a connection to the indexer daemon. " "Please make sure it is running." -msgstr "پروگرامما ئىزدىگۈچكە ئۇلىنالمىدى. indexer daemon نىڭ ئىجرا ھالىتىنى جەزملەڭ" +msgstr "" +"پروگرامما ئىزدىگۈچكە ئۇلىنالمىدى. indexer daemon نىڭ ئىجرا ھالىتىنى جەزملەڭ" -#: ../gtk/gtkfilechooserdefault.c:8770 +#: ../gtk/gtkfilechooserdefault.c:8777 msgid "Could not send the search request" msgstr "ئىزدەش ئىلتىماسىنى يوللىيالمىدى" -#: ../gtk/gtkfilechooserdefault.c:8989 +#: ../gtk/gtkfilechooserdefault.c:8996 msgid "Search:" msgstr "ئىزدە:" -#: ../gtk/gtkfilechooserdefault.c:9594 +#: ../gtk/gtkfilechooserdefault.c:9601 #, c-format msgid "Could not mount %s" -msgstr "%s نى ئېگەرلىگىلى بولمىدى" +msgstr "%s يۈك چۈشۈرەلمىدى " #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry, when the user enters an invalid path. -#: ../gtk/gtkfilechooserentry.c:702 ../gtk/gtkfilechooserentry.c:1172 +#: ../gtk/gtkfilechooserentry.c:700 ../gtk/gtkfilechooserentry.c:1178 msgid "Invalid path" msgstr "ئىناۋەتسىز يول" #. translators: this text is shown when there are no completions #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1104 +#: ../gtk/gtkfilechooserentry.c:1110 msgid "No match" msgstr "ماس كېلىدىغىنى يوق" #. translators: this text is shown when there is exactly one completion #. * for something the user typed in a file chooser entry #. -#: ../gtk/gtkfilechooserentry.c:1115 +#: ../gtk/gtkfilechooserentry.c:1121 msgid "Sole completion" msgstr "بىردىنبىر تاماملاش" @@ -1093,13 +1203,13 @@ msgstr "بىردىنبىر تاماملاش" #. * entry is a complete filename, but could be continued to find #. * a longer match #. -#: ../gtk/gtkfilechooserentry.c:1131 +#: ../gtk/gtkfilechooserentry.c:1137 msgid "Complete, but not unique" msgstr "تاماملاندى، ئەمما بىردىنبىر ئەمەس" #. Translators: this text is shown while the system is searching #. * for possible completions for filenames in a file chooser entry. -#: ../gtk/gtkfilechooserentry.c:1163 +#: ../gtk/gtkfilechooserentry.c:1169 msgid "Completing..." msgstr "تاماملاۋاتىدۇ…" @@ -1107,7 +1217,7 @@ msgstr "تاماملاۋاتىدۇ…" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user enters something like #. * "sftp://blahblah" in an app that only supports local filenames. -#: ../gtk/gtkfilechooserentry.c:1185 ../gtk/gtkfilechooserentry.c:1210 +#: ../gtk/gtkfilechooserentry.c:1191 ../gtk/gtkfilechooserentry.c:1216 msgid "Only local files may be selected" msgstr "يەرلىك ھۆججەتنىلا تاللىغىلى بولىدۇ" @@ -1115,14 +1225,14 @@ msgstr "يەرلىك ھۆججەتنىلا تاللىغىلى بولىدۇ" #. Translators: this is shown in the feedback for Tab-completion in a #. * file chooser's text entry when the user hasn't entered the first '/' #. * after a hostname and yet hits Tab (such as "sftp://blahblah[Tab]") -#: ../gtk/gtkfilechooserentry.c:1194 +#: ../gtk/gtkfilechooserentry.c:1200 msgid "Incomplete hostname; end it with '/'" -msgstr "كومپيۇتېر ئاتى كەمتۈك؛ '/' بىلەن ئاخىرلىشىدۇ" +msgstr "كومپيۇتېر ئاتى كەمتۈك؛ '/' بىلەن ئاخىرلىشىدۇ " #. Translators: this is shown in the feedback for Tab-completion in a file #. * chooser's text entry when the user enters a path that does not exist #. * and then hits Tab -#: ../gtk/gtkfilechooserentry.c:1205 +#: ../gtk/gtkfilechooserentry.c:1211 msgid "Path does not exist" msgstr "يول مەۋجۇت ئەمەس." @@ -1142,7 +1252,7 @@ msgstr "خەت نۇسخا تاللا" #. Initialize fields #: ../gtk/gtkfontbutton.c:260 msgid "Sans 12" -msgstr "UKIJ Tuz Tom 10" +msgstr "Sans 12" #: ../gtk/gtkfontbutton.c:785 msgid "Font" @@ -1150,55 +1260,57 @@ msgstr "خەت نۇسخا" #. This is the default text shown in the preview entry, though the user #. can set it. Remember that some fonts only have capital letters. -#: ../gtk/gtkfontsel.c:103 +#: ../gtk/gtkfontsel.c:100 msgid "abcdefghijk ABCDEFGHIJK" -msgstr "ئا ئە ب پ ت ج چ خ د ر ز ژ abcdefghijk ABCDEFGHIJK" +msgstr "ئائەب پ ت ج چ خ درزژ abcdefghijk ABCDEFGHIJK" -#: ../gtk/gtkfontsel.c:370 +#: ../gtk/gtkfontsel.c:366 msgid "_Family:" msgstr "خەت نۇسخا تۈرى(_F):" -#: ../gtk/gtkfontsel.c:376 +#: ../gtk/gtkfontsel.c:372 msgid "_Style:" msgstr "ئۇسلۇب(_S):" -#: ../gtk/gtkfontsel.c:382 +#: ../gtk/gtkfontsel.c:378 msgid "Si_ze:" msgstr "چوڭلۇقى(_Z):" #. create the text entry widget -#: ../gtk/gtkfontsel.c:558 +#: ../gtk/gtkfontsel.c:554 msgid "_Preview:" msgstr "ئالدىن كۆزەت(_P):" -#: ../gtk/gtkfontsel.c:1658 +#: ../gtk/gtkfontsel.c:1651 msgid "Font Selection" msgstr "خەت نۇسخا تاللاش" #. Remove this icon source so we don't keep trying to #. * load it. #. -#: ../gtk/gtkiconfactory.c:1356 +#: ../gtk/gtkiconfactory.c:1358 #, c-format msgid "Error loading icon: %s" msgstr "سىنبەلگە يۈكلىگەندە خاتالىق كۆرۈلدى: %s" -#: ../gtk/gtkicontheme.c:1355 +#: ../gtk/gtkicontheme.c:1352 #, c-format msgid "" "Could not find the icon '%s'. The '%s' theme\n" "was not found either, perhaps you need to install it.\n" "You can get a copy from:\n" "\t%s" -msgstr "'%s' سىنبەلگىنى تاپالمىدى. '%s' باش تېمىنىمۇ تاپالمىدى، ئۇنى ئورنىتىشىڭىز زۆرۈردەك قىلىدۇ. ئۇنىڭ كۆچۈرۈلمە نۇسخىسىنى تۆۋەندىكى ئادرېستىن تاپالايسىز:\n" +msgstr "" +"'%s' سىنبەلگىنى تاپالمىدى. '%s' باش تېمىنىمۇ تاپالمىدى، ئۇنى ئورنىتىشىڭىز " +"زۆرۈردەك قىلىدۇ. ئۇنىڭ كۆچۈرۈلمە نۇسخىسىنى تۆۋەندىكى ئادرېستىن تاپالايسىز:\n" "%s" -#: ../gtk/gtkicontheme.c:1536 +#: ../gtk/gtkicontheme.c:1533 #, c-format msgid "Icon '%s' not present in theme" msgstr "'%s' سىنبەلگە باش تېمىدا كۆرۈلمىدى" -#: ../gtk/gtkicontheme.c:3057 +#: ../gtk/gtkicontheme.c:3054 msgid "Failed to load icon" msgstr "سىنبەلگە يۈكلىيەلمىدى" @@ -1223,77 +1335,77 @@ msgid "System (%s)" msgstr "سىستېما(%s)" #. Open Link -#: ../gtk/gtklabel.c:6214 +#: ../gtk/gtklabel.c:6250 msgid "_Open Link" msgstr "ئۇلانما ئاچ(_O)" #. Copy Link Address -#: ../gtk/gtklabel.c:6226 +#: ../gtk/gtklabel.c:6262 msgid "Copy _Link Address" msgstr "ئۇلانما مەنزىل كۆچۈر(_L)" -#: ../gtk/gtklinkbutton.c:484 +#: ../gtk/gtklinkbutton.c:482 msgid "Copy URL" msgstr "URL كۆچۈر" -#: ../gtk/gtklinkbutton.c:647 +#: ../gtk/gtklinkbutton.c:645 msgid "Invalid URI" msgstr "ئىناۋەتسىز URI" #. Description of --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:518 +#: ../gtk/gtkmain.c:563 msgid "Load additional GTK+ modules" msgstr "قوشۇمچە GTK+ بۆلىكىنى يۈكلە" #. Placeholder in --gtk-module=MODULES in --help output -#: ../gtk/gtkmain.c:519 +#: ../gtk/gtkmain.c:564 msgid "MODULES" msgstr "بۆلەك" #. Description of --g-fatal-warnings in --help output -#: ../gtk/gtkmain.c:521 +#: ../gtk/gtkmain.c:566 msgid "Make all warnings fatal" msgstr "ھەممە ئاگاھلاندۇرۇشنى ئېغىر خاتالىققا ئۆزگەرت" #. Description of --gtk-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:524 +#: ../gtk/gtkmain.c:569 msgid "GTK+ debugging flags to set" msgstr "تەڭشەيدىغان GTK+ سازلاش بەلگىسى" #. Description of --gtk-no-debug=FLAGS in --help output -#: ../gtk/gtkmain.c:527 +#: ../gtk/gtkmain.c:572 msgid "GTK+ debugging flags to unset" -msgstr "قالدۇرماقچى بولغان GTK+ سازلاش بەلگىسى" +msgstr "قالدۇرماقچى بولغان GTK+ سازلاش بەلگىسى " #. Translate to default:RTL if you want your widgets #. * to be RTL, otherwise translate to default:LTR. #. * Do *not* translate it to "predefinito:LTR", if it #. * it isn't default:LTR or default:RTL it will not work #. -#: ../gtk/gtkmain.c:790 +#: ../gtk/gtkmain.c:835 msgid "default:LTR" msgstr "default:RTL" -#: ../gtk/gtkmain.c:855 +#: ../gtk/gtkmain.c:899 #, c-format msgid "Cannot open display: %s" msgstr "ئېكران ئېچىلمىدى: (%s)" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "GTK+ Options" msgstr "GTK+ تاللانما" -#: ../gtk/gtkmain.c:914 +#: ../gtk/gtkmain.c:965 msgid "Show GTK+ Options" msgstr "GTK+ تاللانما كۆرسەت" #: ../gtk/gtkmountoperation.c:491 msgid "Co_nnect" -msgstr "باغلا(_N)" +msgstr "ئۇلا(_N)" #: ../gtk/gtkmountoperation.c:558 msgid "Connect _anonymously" -msgstr "ئاتسىز باغلانماق(_A)" +msgstr "ئاتسىز ئۇلىنىش(_A)" #: ../gtk/gtkmountoperation.c:567 msgid "Connect as u_ser:" @@ -1334,7 +1446,7 @@ msgstr "جەرياننى ئاخىرلاشتۇرالمايدۇ" #: ../gtk/gtkmountoperation.c:1103 msgid "_End Process" -msgstr "مەشغۇلاتنى ئاخىرلاشتۇر(_E)" +msgstr "جەرياننى ئاخىرلاشتۇر(_E)" #: ../gtk/gtkmountoperation-stub.c:64 #, c-format @@ -1367,13 +1479,13 @@ msgstr "Z Shell" msgid "Cannot end process with PID %d: %s" msgstr "PID %d جەرياننى ئاخىرلاشتۇرالمايدۇ: %s" -#: ../gtk/gtknotebook.c:4756 ../gtk/gtknotebook.c:7319 +#: ../gtk/gtknotebook.c:4817 ../gtk/gtknotebook.c:7392 #, c-format msgid "Page %u" msgstr "%u-بەت" -#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:838 -#: ../gtk/gtkpapersize.c:880 +#: ../gtk/gtkpagesetup.c:648 ../gtk/gtkpapersize.c:847 +#: ../gtk/gtkpapersize.c:889 msgid "Not a valid page setup file" msgstr "ئىناۋەتلىك بەت تەڭشەك ھۆججىتى ئەمەس" @@ -1393,13 +1505,14 @@ msgid "" " Right: %s %s\n" " Top: %s %s\n" " Bottom: %s %s" -msgstr "يان ئارىلىقى:\n" +msgstr "" +"يان ئارىلىقى:\n" "سول: %s %s\n" "ئوڭ: %s %s\n" " ئۈستى: %s %s\n" " ئاستى: %s %s" -#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3291 +#: ../gtk/gtkpagesetupunixdialog.c:858 ../gtk/gtkprintunixdialog.c:3306 msgid "Manage Custom Sizes..." msgstr "ئىختىيارى چوڭلۇق باشقۇر…" @@ -1407,7 +1520,7 @@ msgstr "ئىختىيارى چوڭلۇق باشقۇر…" msgid "_Format for:" msgstr "فورمات(_F):" -#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3463 +#: ../gtk/gtkpagesetupunixdialog.c:931 ../gtk/gtkprintunixdialog.c:3478 msgid "_Paper size:" msgstr "قەغەز چوڭلۇقى(_P):" @@ -1415,19 +1528,19 @@ msgstr "قەغەز چوڭلۇقى(_P):" msgid "_Orientation:" msgstr "يۆنىلىش(_O):" -#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3525 +#: ../gtk/gtkpagesetupunixdialog.c:1026 ../gtk/gtkprintunixdialog.c:3540 msgid "Page Setup" msgstr "بەت تەڭشەك" -#: ../gtk/gtkpathbar.c:158 +#: ../gtk/gtkpathbar.c:157 msgid "Up Path" msgstr "ئۈستۈنكى يول" -#: ../gtk/gtkpathbar.c:160 +#: ../gtk/gtkpathbar.c:159 msgid "Down Path" msgstr "ئاستىنقى يول" -#: ../gtk/gtkpathbar.c:1523 +#: ../gtk/gtkpathbar.c:1519 msgid "File System Root" msgstr "ھۆججەت سىستېما غولى" @@ -1451,85 +1564,86 @@ msgstr "قىسقۇچتا ساقلا(_S):" #. * jobs. %s gets replaced by the application name, %d gets replaced #. * by the job number. #. -#: ../gtk/gtkprintoperation.c:190 +#: ../gtk/gtkprintoperation.c:193 #, c-format msgid "%s job #%d" msgstr "%s نىڭ بېسىش ۋەزىپىسى #%d" -#: ../gtk/gtkprintoperation.c:1695 +#: ../gtk/gtkprintoperation.c:1698 msgctxt "print operation status" msgid "Initial state" msgstr "دەسلەپكى ھالەت" -#: ../gtk/gtkprintoperation.c:1696 +#: ../gtk/gtkprintoperation.c:1699 msgctxt "print operation status" msgid "Preparing to print" msgstr "بېسىشقا تەييارلىنىۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:1697 +#: ../gtk/gtkprintoperation.c:1700 msgctxt "print operation status" msgid "Generating data" msgstr "سانلىق مەلۇمات ياساۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:1698 +#: ../gtk/gtkprintoperation.c:1701 msgctxt "print operation status" msgid "Sending data" -msgstr "ئۇچۇر يوللاۋاتىدۇ" +msgstr "سانلىق مەلۇمات يوللاۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:1699 +#: ../gtk/gtkprintoperation.c:1702 msgctxt "print operation status" msgid "Waiting" -msgstr "ساقلاۋاتىدۇ" +msgstr "كۈتۈۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:1700 +#: ../gtk/gtkprintoperation.c:1703 msgctxt "print operation status" msgid "Blocking on issue" msgstr "توسۇلۇش مەسىلىسى" -#: ../gtk/gtkprintoperation.c:1701 +#: ../gtk/gtkprintoperation.c:1704 msgctxt "print operation status" msgid "Printing" msgstr "بېسىۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:1702 +#: ../gtk/gtkprintoperation.c:1705 msgctxt "print operation status" msgid "Finished" msgstr "تاماملاندى" -#: ../gtk/gtkprintoperation.c:1703 +#: ../gtk/gtkprintoperation.c:1706 msgctxt "print operation status" msgid "Finished with error" msgstr "خاتالىق بىلەن تاماملاندى" -#: ../gtk/gtkprintoperation.c:2270 +#: ../gtk/gtkprintoperation.c:2273 #, c-format msgid "Preparing %d" msgstr "%d تەييارلاۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:2272 ../gtk/gtkprintoperation.c:2902 +#: ../gtk/gtkprintoperation.c:2275 ../gtk/gtkprintoperation.c:2905 msgid "Preparing" -msgstr "تەييارلىق ھالەت" +msgstr "تەييارلاۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:2275 +#: ../gtk/gtkprintoperation.c:2278 #, c-format msgid "Printing %d" msgstr "%d نى بېسىۋاتىدۇ" -#: ../gtk/gtkprintoperation.c:2932 +#: ../gtk/gtkprintoperation.c:2935 msgid "Error creating print preview" msgstr "بېسىشنى ئالدىن كۆزىتىش قۇرۇشتا خاتالىق كۆرۈلدى" -#: ../gtk/gtkprintoperation.c:2935 +#: ../gtk/gtkprintoperation.c:2938 msgid "The most probable reason is that a temporary file could not be created." -msgstr "مۇمكىنچىلىكى يۇقىرى سەۋەب ۋاقىتلىق ھۆججەت قۇرغىلى بولماسلىق بولۇشى مۇمكىن." +msgstr "" +"مۇمكىنچىلىكى يۇقىرى سەۋەب ۋاقىتلىق ھۆججەت قۇرغىلى بولماسلىق بولۇشى مۇمكىن." -#: ../gtk/gtkprintoperation-unix.c:297 +#: ../gtk/gtkprintoperation-unix.c:304 msgid "Error launching preview" msgstr "ئالدىن كۆزىتىشنى قوزغىتىشتا خاتالىق كۆرۈلدى" -#: ../gtk/gtkprintoperation-unix.c:470 ../gtk/gtkprintoperation-win32.c:1447 +#: ../gtk/gtkprintoperation-unix.c:477 ../gtk/gtkprintoperation-win32.c:1447 msgid "Application" -msgstr "پروگرامما" +msgstr "قوللىنىشچان پروگرامما" #: ../gtk/gtkprintoperation-win32.c:611 msgid "Printer offline" @@ -1541,7 +1655,7 @@ msgstr "قەغەز يېتىشمىدى" #. Translators: this is a printer status. #: ../gtk/gtkprintoperation-win32.c:615 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1998 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2002 msgid "Paused" msgstr "ۋاقىتلىق توختىدى" @@ -1584,7 +1698,7 @@ msgstr "PrintDlgEx نىڭ تۇتقۇسى ئىناۋەتسىز" #: ../gtk/gtkprintoperation-win32.c:1775 msgid "Unspecified error" -msgstr "ئېنىقسىز خاتالىق" +msgstr "بەلگىلەنمىگەن خاتالىق" #: ../gtk/gtkprintunixdialog.c:618 msgid "Getting printer information failed" @@ -1594,71 +1708,72 @@ msgstr "پرىنتېر ئۇچۇرىغا ئېرىشەلمىدى" msgid "Getting printer information..." msgstr "پرىنتېر ئۇچۇرىغا ئېرىشىۋاتىدۇ…" -#: ../gtk/gtkprintunixdialog.c:2139 +#: ../gtk/gtkprintunixdialog.c:2147 msgid "Printer" msgstr "پرىنتېر" #. Translators: this is the header for the location column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2149 +#: ../gtk/gtkprintunixdialog.c:2157 msgid "Location" msgstr "ئورنى" #. Translators: this is the header for the printer status column in the print dialog -#: ../gtk/gtkprintunixdialog.c:2160 +#: ../gtk/gtkprintunixdialog.c:2168 msgid "Status" msgstr "ھالىتى" -#: ../gtk/gtkprintunixdialog.c:2186 +#: ../gtk/gtkprintunixdialog.c:2194 msgid "Range" -msgstr "دائىرىسى" +msgstr "دائىرە" -#: ../gtk/gtkprintunixdialog.c:2190 +#: ../gtk/gtkprintunixdialog.c:2198 msgid "_All Pages" msgstr "ھەممە بەت(_A)" -#: ../gtk/gtkprintunixdialog.c:2197 +#: ../gtk/gtkprintunixdialog.c:2205 msgid "C_urrent Page" msgstr "نۆۋەتتىكى بەت(_U)" -#: ../gtk/gtkprintunixdialog.c:2207 +#: ../gtk/gtkprintunixdialog.c:2215 msgid "Se_lection" msgstr "تاللا(_L)" -#: ../gtk/gtkprintunixdialog.c:2216 +#: ../gtk/gtkprintunixdialog.c:2224 msgid "Pag_es:" msgstr "بەتلەر(_E):" -#: ../gtk/gtkprintunixdialog.c:2217 +#: ../gtk/gtkprintunixdialog.c:2225 msgid "" "Specify one or more page ranges,\n" " e.g. 1-3,7,11" -msgstr "بىر ياكى كۆپ بەت دائىرە بەلگىلەڭ،\n" +msgstr "" +"بىر ياكى كۆپ بەت دائىرە بەلگىلەڭ،\n" "مەسىلەن: 1-3,7,11" -#: ../gtk/gtkprintunixdialog.c:2227 +#: ../gtk/gtkprintunixdialog.c:2235 msgid "Pages" msgstr "بەتلەر" -#: ../gtk/gtkprintunixdialog.c:2240 +#: ../gtk/gtkprintunixdialog.c:2248 msgid "Copies" msgstr "نۇسخا" #. FIXME chpe: too much space between Copies and spinbutton, put those 2 in a hbox and make it span 2 columns -#: ../gtk/gtkprintunixdialog.c:2245 +#: ../gtk/gtkprintunixdialog.c:2253 msgid "Copie_s:" msgstr "نۇسخا سانى(_S):" -#: ../gtk/gtkprintunixdialog.c:2263 +#: ../gtk/gtkprintunixdialog.c:2271 msgid "C_ollate" msgstr "رەت بويىچە(_O)" -#: ../gtk/gtkprintunixdialog.c:2271 +#: ../gtk/gtkprintunixdialog.c:2279 msgid "_Reverse" msgstr "ئەكسىچە(_R)" -#: ../gtk/gtkprintunixdialog.c:2291 +#: ../gtk/gtkprintunixdialog.c:2299 msgid "General" -msgstr "ئادەتتە" +msgstr "ئادەتتىكى" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing (same as in gtkprintbackendcups.c) @@ -1666,168 +1781,168 @@ msgstr "ئادەتتە" #. Translators: These strings name the possible arrangements of #. * multiple pages on a sheet when printing #. -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, top to bottom" msgstr "سولدىن ئوڭغا، ئۈستىدىن ئاستىغا" -#: ../gtk/gtkprintunixdialog.c:3024 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3534 +#: ../gtk/gtkprintunixdialog.c:3039 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3538 msgid "Left to right, bottom to top" msgstr "سولدىن ئوڭغا، ئاستىدىن ئۈستىگە" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, top to bottom" msgstr "ئوڭدىن سولغا، ئۈستىدىن ئاستىغا" -#: ../gtk/gtkprintunixdialog.c:3025 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3535 +#: ../gtk/gtkprintunixdialog.c:3040 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3539 msgid "Right to left, bottom to top" msgstr "ئوڭدىن سولغا، ئاستىدىن ئۈستىگە" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, left to right" msgstr "ئۈستىدىن ئاستىغا، سولدىن ئوڭغا" -#: ../gtk/gtkprintunixdialog.c:3026 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3536 +#: ../gtk/gtkprintunixdialog.c:3041 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3540 msgid "Top to bottom, right to left" msgstr "ئۈستىدىن ئاستىغا، ئوڭدىن سولغا" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, left to right" msgstr "ئاستىدىن ئۈستىگە، سولدىن ئوڭغا" -#: ../gtk/gtkprintunixdialog.c:3027 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3537 +#: ../gtk/gtkprintunixdialog.c:3042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3541 msgid "Bottom to top, right to left" msgstr "ئاستىدىن ئۈستىگە، ئوڭدىن سولغا" #. Translators, this string is used to label the option in the print #. * dialog that controls in what order multiple pages are arranged #. -#: ../gtk/gtkprintunixdialog.c:3031 ../gtk/gtkprintunixdialog.c:3044 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3569 +#: ../gtk/gtkprintunixdialog.c:3046 ../gtk/gtkprintunixdialog.c:3059 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3573 msgid "Page Ordering" msgstr "بەت تەرتىپى" -#: ../gtk/gtkprintunixdialog.c:3060 +#: ../gtk/gtkprintunixdialog.c:3075 msgid "Left to right" msgstr "سولدىن ئوڭغا" -#: ../gtk/gtkprintunixdialog.c:3061 +#: ../gtk/gtkprintunixdialog.c:3076 msgid "Right to left" msgstr "ئوڭدىن سولغا" -#: ../gtk/gtkprintunixdialog.c:3073 +#: ../gtk/gtkprintunixdialog.c:3088 msgid "Top to bottom" msgstr "ئۈستىدىن ئاستىغا" -#: ../gtk/gtkprintunixdialog.c:3074 +#: ../gtk/gtkprintunixdialog.c:3089 msgid "Bottom to top" msgstr "ئاستىدىن ئۈستىگە" -#: ../gtk/gtkprintunixdialog.c:3314 +#: ../gtk/gtkprintunixdialog.c:3329 msgid "Layout" msgstr "ئۇسلۇب" -#: ../gtk/gtkprintunixdialog.c:3318 +#: ../gtk/gtkprintunixdialog.c:3333 msgid "T_wo-sided:" msgstr "قوش يۈزلۈك(_W):" -#: ../gtk/gtkprintunixdialog.c:3333 +#: ../gtk/gtkprintunixdialog.c:3348 msgid "Pages per _side:" msgstr "ھەربىر يۈزىنىڭ بەت سانى(_S):" -#: ../gtk/gtkprintunixdialog.c:3350 +#: ../gtk/gtkprintunixdialog.c:3365 msgid "Page or_dering:" msgstr "بەت تەرتىپى(_D):" -#: ../gtk/gtkprintunixdialog.c:3366 +#: ../gtk/gtkprintunixdialog.c:3381 msgid "_Only print:" msgstr "بېسىشلا(_O):" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3381 +#: ../gtk/gtkprintunixdialog.c:3396 msgid "All sheets" msgstr "ھەممە ۋاراقلار" -#: ../gtk/gtkprintunixdialog.c:3382 +#: ../gtk/gtkprintunixdialog.c:3397 msgid "Even sheets" msgstr "تاق ۋاراقلار" -#: ../gtk/gtkprintunixdialog.c:3383 +#: ../gtk/gtkprintunixdialog.c:3398 msgid "Odd sheets" msgstr "جۈپ ۋاراقلار" -#: ../gtk/gtkprintunixdialog.c:3386 +#: ../gtk/gtkprintunixdialog.c:3401 msgid "Sc_ale:" msgstr "نىسبەت(_A):" -#: ../gtk/gtkprintunixdialog.c:3413 +#: ../gtk/gtkprintunixdialog.c:3428 msgid "Paper" msgstr "قەغەز" -#: ../gtk/gtkprintunixdialog.c:3417 +#: ../gtk/gtkprintunixdialog.c:3432 msgid "Paper _type:" msgstr "قەغەز تىپى(_T):" -#: ../gtk/gtkprintunixdialog.c:3432 +#: ../gtk/gtkprintunixdialog.c:3447 msgid "Paper _source:" msgstr "قەغەز مەنبەسى(_S):" -#: ../gtk/gtkprintunixdialog.c:3447 +#: ../gtk/gtkprintunixdialog.c:3462 msgid "Output t_ray:" msgstr "قەغەز قۇتىسى(_R):" -#: ../gtk/gtkprintunixdialog.c:3487 +#: ../gtk/gtkprintunixdialog.c:3502 msgid "Or_ientation:" msgstr "يۆنىلىش(_I):" #. In enum order -#: ../gtk/gtkprintunixdialog.c:3502 +#: ../gtk/gtkprintunixdialog.c:3517 msgid "Portrait" msgstr "بوي يۆنىلىش" -#: ../gtk/gtkprintunixdialog.c:3503 +#: ../gtk/gtkprintunixdialog.c:3518 msgid "Landscape" msgstr "توغرا يۆنىلىش" -#: ../gtk/gtkprintunixdialog.c:3504 +#: ../gtk/gtkprintunixdialog.c:3519 msgid "Reverse portrait" msgstr "تەتۈر بوي يۆنىلىش" -#: ../gtk/gtkprintunixdialog.c:3505 +#: ../gtk/gtkprintunixdialog.c:3520 msgid "Reverse landscape" msgstr "تەتۈر توغرا يۆنىلىش" -#: ../gtk/gtkprintunixdialog.c:3550 +#: ../gtk/gtkprintunixdialog.c:3565 msgid "Job Details" msgstr "ۋەزىپە تەپسىلاتى" -#: ../gtk/gtkprintunixdialog.c:3556 +#: ../gtk/gtkprintunixdialog.c:3571 msgid "Pri_ority:" msgstr "ئالدىنلىق(_O):" -#: ../gtk/gtkprintunixdialog.c:3571 +#: ../gtk/gtkprintunixdialog.c:3586 msgid "_Billing info:" msgstr "ھەق ھېسابلاش ئۇچۇرى(_B):" -#: ../gtk/gtkprintunixdialog.c:3589 +#: ../gtk/gtkprintunixdialog.c:3604 msgid "Print Document" msgstr "پۈتۈك باس" #. Translators: this is one of the choices for the print at option #. * in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3598 +#: ../gtk/gtkprintunixdialog.c:3613 msgid "_Now" msgstr "دەرھال(_N)" -#: ../gtk/gtkprintunixdialog.c:3609 +#: ../gtk/gtkprintunixdialog.c:3624 msgid "A_t:" msgstr "دە(_T):" @@ -1835,87 +1950,83 @@ msgstr "دە(_T):" #. * You can remove the am/pm values below for your locale if they are not #. * supported. #. -#: ../gtk/gtkprintunixdialog.c:3615 +#: ../gtk/gtkprintunixdialog.c:3630 msgid "" "Specify the time of print,\n" " e.g. 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -msgstr "بېسىش ۋاقتى بەلگىلىنىدۇ،\n" +msgstr "" +"بېسىش ۋاقتى بەلگىلىنىدۇ،\n" " مەسىلەن: 15:30, 2:35 pm, 14:15:20, 11:46:30 am, 4 pm" -#: ../gtk/gtkprintunixdialog.c:3625 +#: ../gtk/gtkprintunixdialog.c:3640 msgid "Time of print" msgstr "بېسىش ۋاقتى" -#: ../gtk/gtkprintunixdialog.c:3641 +#: ../gtk/gtkprintunixdialog.c:3656 msgid "On _hold" msgstr "كۈت(_H)" -#: ../gtk/gtkprintunixdialog.c:3642 +#: ../gtk/gtkprintunixdialog.c:3657 msgid "Hold the job until it is explicitly released" -msgstr "ۋەزىپىنى ئېنىق ئاجرىتىلغانغا قەدەر داۋاملاشتۇر" +msgstr "ۋەزىپە ئېنىق ئاجرىتىلغانغا قەدەر داۋاملاشتۇر" -#: ../gtk/gtkprintunixdialog.c:3662 +#: ../gtk/gtkprintunixdialog.c:3677 msgid "Add Cover Page" msgstr "مۇقاۋا بەت قوش" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../gtk/gtkprintunixdialog.c:3671 +#: ../gtk/gtkprintunixdialog.c:3686 msgid "Be_fore:" msgstr "ئالدى(_F):" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../gtk/gtkprintunixdialog.c:3689 +#: ../gtk/gtkprintunixdialog.c:3704 msgid "_After:" msgstr "كەينى(_A):" #. Translators: this is the tab label for the notebook tab containing #. * job-specific options in the print dialog #. -#: ../gtk/gtkprintunixdialog.c:3707 +#: ../gtk/gtkprintunixdialog.c:3722 msgid "Job" msgstr "ۋەزىپە" -#: ../gtk/gtkprintunixdialog.c:3773 +#: ../gtk/gtkprintunixdialog.c:3788 msgid "Advanced" msgstr "ئالىي" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3811 +#: ../gtk/gtkprintunixdialog.c:3826 msgid "Image Quality" msgstr "سۈرەت سۈپىتى" #. Translators: this will appear as tab label in print dialog. -#: ../gtk/gtkprintunixdialog.c:3815 +#: ../gtk/gtkprintunixdialog.c:3830 msgid "Color" msgstr "رەڭ" #. Translators: this will appear as tab label in print dialog. #. It's a typographical term, as in "Binding and finishing" -#: ../gtk/gtkprintunixdialog.c:3820 +#: ../gtk/gtkprintunixdialog.c:3835 msgid "Finishing" msgstr "تامام" -#: ../gtk/gtkprintunixdialog.c:3830 +#: ../gtk/gtkprintunixdialog.c:3845 msgid "Some of the settings in the dialog conflict" -msgstr "سۆزلەشكۈ رامكىسىدىكى بەزى بەلگىلەشتە توقۇنۇش بار" +msgstr "سۆزلىشىش رامكىسىدىكى بەزى تەڭشەكلەردە توقۇنۇش بار" -#: ../gtk/gtkprintunixdialog.c:3853 +#: ../gtk/gtkprintunixdialog.c:3868 msgid "Print" msgstr "باس" -#: ../gtk/gtkrc.c:2834 -#, c-format -msgid "Unable to find include file: \"%s\"" -msgstr "ئىچىدىكى ھۆججەتنى تاپالمىدى:\"%s\"" - -#: ../gtk/gtkrc.c:3470 ../gtk/gtkrc.c:3473 +#: ../gtk/gtkrc.c:946 #, c-format msgid "Unable to locate image file in pixmap_path: \"%s\"" -msgstr "پىكسېل رەسىم يولىدىن رەسىم ھۆججىتى تېپىلمىدى:“%s”" +msgstr "پىكسېل سۈرەت يولىدىن سۈرەت ھۆججىتى تېپىلمىدى:“%s”" #: ../gtk/gtkrecentaction.c:165 ../gtk/gtkrecentaction.c:173 #: ../gtk/gtkrecentchoosermenu.c:608 ../gtk/gtkrecentchoosermenu.c:616 @@ -1927,36 +2038,36 @@ msgstr "فۇنكسىيە “%s” تۈردىكى تۇلۇقتا ئەمەلگە msgid "Select which type of documents are shown" msgstr "كۆرسەتمەكچى بولغان پۈتۈك تىپىنى تاللاڭ" -#: ../gtk/gtkrecentchooserdefault.c:1133 ../gtk/gtkrecentchooserdefault.c:1170 +#: ../gtk/gtkrecentchooserdefault.c:1137 ../gtk/gtkrecentchooserdefault.c:1174 #, c-format msgid "No item for URI '%s' found" msgstr "URI“%s” تۈرنى تاپالمىدى" -#: ../gtk/gtkrecentchooserdefault.c:1297 +#: ../gtk/gtkrecentchooserdefault.c:1301 msgid "Untitled filter" msgstr "تېمىسىز سۈزگۈچ" -#: ../gtk/gtkrecentchooserdefault.c:1650 +#: ../gtk/gtkrecentchooserdefault.c:1654 msgid "Could not remove item" msgstr "تۈرنى چىقىرىۋېتەلمەيدۇ" -#: ../gtk/gtkrecentchooserdefault.c:1694 +#: ../gtk/gtkrecentchooserdefault.c:1698 msgid "Could not clear list" msgstr "تىزىملىكنى تازىلىيالمايدۇ" -#: ../gtk/gtkrecentchooserdefault.c:1778 +#: ../gtk/gtkrecentchooserdefault.c:1782 msgid "Copy _Location" msgstr "ئورۇن كۆچۈر(_L)" -#: ../gtk/gtkrecentchooserdefault.c:1791 +#: ../gtk/gtkrecentchooserdefault.c:1795 msgid "_Remove From List" msgstr "تىزىملىكتىن چىقىرىۋەت(_R)" -#: ../gtk/gtkrecentchooserdefault.c:1800 +#: ../gtk/gtkrecentchooserdefault.c:1804 msgid "_Clear List" msgstr "تىزىملىكنى تازىلا(_C)" -#: ../gtk/gtkrecentchooserdefault.c:1814 +#: ../gtk/gtkrecentchooserdefault.c:1818 msgid "Show _Private Resources" msgstr "شەخسى مەنبەنى كۆرسەت(_P)" @@ -2019,14 +2130,14 @@ msgstr "URI '%s' تۈر تېپىلمىدى" #: ../gtk/gtkrecentmanager.c:2437 #, c-format msgid "No registered application with name '%s' for item with URI '%s' found" -msgstr "" +msgstr "تۈرنىڭ '%s' ئاتلىق خەتلەتكەن پروگراممىسىنىڭ URI '%s' تېپىلمىدى" -#: ../gtk/gtkspinner.c:456 +#: ../gtk/gtkspinner.c:289 msgctxt "throbbing progress animation widget" msgid "Spinner" msgstr "مىكرو تەڭشەك" -#: ../gtk/gtkspinner.c:457 +#: ../gtk/gtkspinner.c:290 msgid "Provides visual indication of progress" msgstr "كۆرۈنمە كۆرسەتكۈچ جەريانى تەمىنلەيدۇ" @@ -2077,17 +2188,17 @@ msgstr "توم(_B)" #: ../gtk/gtkstock.c:325 msgctxt "Stock label" msgid "_Cancel" -msgstr "قالدۇرماق(_C)" +msgstr "ۋاز كەچ(_C)" #: ../gtk/gtkstock.c:326 msgctxt "Stock label" msgid "_CD-ROM" -msgstr "" +msgstr "_CD-ROM" #: ../gtk/gtkstock.c:327 msgctxt "Stock label" msgid "_Clear" -msgstr "ئۆچۈر(_C)" +msgstr "تازىلا(_C)" #: ../gtk/gtkstock.c:328 msgctxt "Stock label" @@ -2157,12 +2268,12 @@ msgstr "ئىزدەپ ئالماشتۇر(_R)" #: ../gtk/gtkstock.c:341 msgctxt "Stock label" msgid "_Floppy" -msgstr "يۇمشاق دىسكا(_F)" +msgstr "يۇمشاق دىسكا (_F)" #: ../gtk/gtkstock.c:342 msgctxt "Stock label" msgid "_Fullscreen" -msgstr "تولۇق ئېكران(_F)" +msgstr "تولۇق ئېكران( _F)" #: ../gtk/gtkstock.c:343 msgctxt "Stock label" @@ -2191,13 +2302,13 @@ msgstr "ئاخىرقى(_L)" #: ../gtk/gtkstock.c:351 msgctxt "Stock label, navigation" msgid "_Top" -msgstr "بېشى(_T)" +msgstr "ئۈستى(_T)" #. This is a navigation label as in "go back" #: ../gtk/gtkstock.c:353 msgctxt "Stock label, navigation" msgid "_Back" -msgstr "كەينىگە(_B)" +msgstr "كەينى(_B)" #. This is a navigation label as in "go down" #: ../gtk/gtkstock.c:355 @@ -2209,7 +2320,7 @@ msgstr "ئاستىغا(_D)" #: ../gtk/gtkstock.c:357 msgctxt "Stock label, navigation" msgid "_Forward" -msgstr "ئالدىغا(_F)" +msgstr "ئالدىنقى(_F)" #. This is a navigation label as in "go up" #: ../gtk/gtkstock.c:359 @@ -2220,7 +2331,7 @@ msgstr "ئۈستىگە(_U)" #: ../gtk/gtkstock.c:360 msgctxt "Stock label" msgid "_Hard Disk" -msgstr "" +msgstr "قاتتىق دىسكا(_H)" #: ../gtk/gtkstock.c:361 msgctxt "Stock label" @@ -2255,7 +2366,7 @@ msgstr "ئۇچۇر(_I)" #: ../gtk/gtkstock.c:367 msgctxt "Stock label" msgid "_Italic" -msgstr "يانتۇ(_I)" +msgstr "يانتۇ (_I)" #: ../gtk/gtkstock.c:368 msgctxt "Stock label" @@ -2290,7 +2401,7 @@ msgstr "ئوڭ(_R)" #: ../gtk/gtkstock.c:379 msgctxt "Stock label, media" msgid "_Forward" -msgstr "ئالدىغا(_F)" +msgstr "ئالدىنقى(_F)" #. Media label, as in "next song" #: ../gtk/gtkstock.c:381 @@ -2314,7 +2425,7 @@ msgstr "قوي(_P)" #: ../gtk/gtkstock.c:387 msgctxt "Stock label, media" msgid "Pre_vious" -msgstr "ئالدىنقى(_V)" +msgstr "ئالدىنقى (_V)" #. Media label #: ../gtk/gtkstock.c:389 @@ -2326,13 +2437,13 @@ msgstr "خاتىرىلە(_R)" #: ../gtk/gtkstock.c:391 msgctxt "Stock label, media" msgid "R_ewind" -msgstr "تېز چېكىن(_E)" +msgstr "تىز چېكىن(_E)" #. Media label #: ../gtk/gtkstock.c:393 msgctxt "Stock label, media" msgid "_Stop" -msgstr "توختا(_S)" +msgstr "توختا (&S)" #: ../gtk/gtkstock.c:394 msgctxt "Stock label" @@ -2431,7 +2542,7 @@ msgstr "يېڭىلا(_R)" #: ../gtk/gtkstock.c:416 msgctxt "Stock label" msgid "_Remove" -msgstr "ئۆچۈر(_R)" +msgstr "چىقىرىۋەت(_R)" #: ../gtk/gtkstock.c:417 msgctxt "Stock label" @@ -2483,13 +2594,13 @@ msgstr "ئىملا تەكشۈر(_S)" #: ../gtk/gtkstock.c:428 msgctxt "Stock label" msgid "_Stop" -msgstr "توختا(_S)" +msgstr "توختا (&S)" #. Font variant #: ../gtk/gtkstock.c:430 msgctxt "Stock label" msgid "_Strikethrough" -msgstr "ئۆچۈرۈش سىزىقى(_S)" +msgstr "ئۆچۈرۈش سىزىقى (_S)" #: ../gtk/gtkstock.c:431 msgctxt "Stock label" @@ -2500,7 +2611,7 @@ msgstr "ئەسلىگە كەلتۈر(_U)" #: ../gtk/gtkstock.c:433 msgctxt "Stock label" msgid "_Underline" -msgstr "ئاستى سىزىق(_U)" +msgstr "ئاستى سىزىق (_U)" #: ../gtk/gtkstock.c:434 msgctxt "Stock label" @@ -2516,7 +2627,7 @@ msgstr "ھەئە(_Y)" #: ../gtk/gtkstock.c:437 msgctxt "Stock label" msgid "_Normal Size" -msgstr "ئەسلى چوڭلۇقى(_N)" +msgstr "ئادەتتىكى چوڭلۇقى(_N)" #. Zoom #: ../gtk/gtkstock.c:439 @@ -2534,119 +2645,150 @@ msgctxt "Stock label" msgid "Zoom _Out" msgstr "كىچىكلەت(_O)" +#. Translators: if the "on" state label requires more than three +#. * glyphs then use MEDIUM VERTICAL BAR (U+2759) as the text for +#. * the state +#. +#: ../gtk/gtkswitch.c:313 ../gtk/gtkswitch.c:362 ../gtk/gtkswitch.c:553 +msgctxt "switch" +msgid "ON" +msgstr "ئاچ" + +#. Translators: if the "off" state label requires more than three +#. * glyphs then use WHITE CIRCLE (U+25CB) as the text for the state +#. +#: ../gtk/gtkswitch.c:321 ../gtk/gtkswitch.c:363 ../gtk/gtkswitch.c:569 +msgctxt "switch" +msgid "OFF" +msgstr "تاقا" + +#: ../gtk/gtkswitch.c:968 +msgctxt "light switch widget" +msgid "Switch" +msgstr "ئالماشتۇرغۇچ" + +#: ../gtk/gtkswitch.c:969 +msgid "Switches between on and off states" +msgstr "ئېچىش بىلەن تاقاش ھالىتى ئارىسىدا ئالماشتۇرىدۇ" + #: ../gtk/gtktextbufferrichtext.c:650 #, c-format msgid "Unknown error when trying to deserialize %s" -msgstr "ئەكسىچە تەرتىپلىگەندە خاتالىق كۆرۈلدى %s" +msgstr "%s ئەكسىچە تەرتىپلىگەندە نامەلۇم خاتالىق كۆرۈلدى" #: ../gtk/gtktextbufferrichtext.c:709 #, c-format msgid "No deserialize function found for format %s" msgstr "%s فورماتتىن ئەكسىچە تەرتىپلەش فۇنكسىيىسى تېپىلمىدى" -#: ../gtk/gtktextbufferserialize.c:803 ../gtk/gtktextbufferserialize.c:829 +#: ../gtk/gtktextbufferserialize.c:800 ../gtk/gtktextbufferserialize.c:826 #, c-format msgid "Both \"id\" and \"name\" were found on the <%s> element" msgstr "<%s> ئېلېمېنتنىڭ بىرلا ۋاقىتتا تاپقىنى “id”بىلەن“name”" -#: ../gtk/gtktextbufferserialize.c:813 ../gtk/gtktextbufferserialize.c:839 +#: ../gtk/gtktextbufferserialize.c:810 ../gtk/gtktextbufferserialize.c:836 #, c-format msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "<%s> ئېلېمېنت ئىككى قېتىم تاپتى “%s”" -#: ../gtk/gtktextbufferserialize.c:855 +#: ../gtk/gtktextbufferserialize.c:852 #, c-format msgid "<%s> element has invalid ID \"%s\"" msgstr "<%s> ئېلېمېنتنىڭ ID سى «%s» ئىناۋەتسىز" -#: ../gtk/gtktextbufferserialize.c:865 +#: ../gtk/gtktextbufferserialize.c:862 #, c-format msgid "<%s> element has neither a \"name\" nor an \"id\" attribute" msgstr "<%s> ئېلېمېنتنىڭ ھەم “name” ھەم “id” خاسلىقى يوق" -#: ../gtk/gtktextbufferserialize.c:952 +#: ../gtk/gtktextbufferserialize.c:949 #, c-format msgid "Attribute \"%s\" repeated twice on the same <%s> element" -msgstr "خاسلىق \"%s\" ئوخشاش بىر <%s> ئېلېمېنتتا ئىككى قېتىم تەكرارلاندى" +msgstr "خاسلىق \"%s\" ئوخشاش بىر <%s> ئېلېمېنتتا ئىككى قېتىم تەكرارلاندى " -#: ../gtk/gtktextbufferserialize.c:970 ../gtk/gtktextbufferserialize.c:995 +#: ../gtk/gtktextbufferserialize.c:967 ../gtk/gtktextbufferserialize.c:992 #, c-format msgid "Attribute \"%s\" is invalid on <%s> element in this context" msgstr "بۇ تىل مۇھىتىدا \"%s\" خاسلىق <%s> ئېلېمېنتقا نىسبەتەن ئىناۋەتسىز" -#: ../gtk/gtktextbufferserialize.c:1034 +#: ../gtk/gtktextbufferserialize.c:1031 #, c-format msgid "Tag \"%s\" has not been defined." msgstr "“%s” بەلگە ئېنىقلانمىغان." -#: ../gtk/gtktextbufferserialize.c:1046 +#: ../gtk/gtktextbufferserialize.c:1043 msgid "Anonymous tag found and tags can not be created." msgstr "ئاتسىز بەلگە بايقالدى. بەلگە قۇرۇشقا بولمايدۇ" -#: ../gtk/gtktextbufferserialize.c:1057 +#: ../gtk/gtktextbufferserialize.c:1054 #, c-format msgid "Tag \"%s\" does not exist in buffer and tags can not be created." msgstr "\"%s\"بەلگە يىغلەكتە مەۋجۇت ئەمەس. بەلگە قۇرۇشقا بولمايدۇ." -#: ../gtk/gtktextbufferserialize.c:1156 ../gtk/gtktextbufferserialize.c:1231 -#: ../gtk/gtktextbufferserialize.c:1336 ../gtk/gtktextbufferserialize.c:1410 +#: ../gtk/gtktextbufferserialize.c:1153 ../gtk/gtktextbufferserialize.c:1228 +#: ../gtk/gtktextbufferserialize.c:1333 ../gtk/gtktextbufferserialize.c:1407 #, c-format msgid "Element <%s> is not allowed below <%s>" msgstr "<%s> ئېلېمېنت <%s> ئاستىدا بولۇشقا يول قويۇلمايدۇ" -#: ../gtk/gtktextbufferserialize.c:1187 +#: ../gtk/gtktextbufferserialize.c:1184 #, c-format msgid "\"%s\" is not a valid attribute type" msgstr "\"%s\" ئىناۋەتلىك خاسلىق تىپى ئەمەس" -#: ../gtk/gtktextbufferserialize.c:1195 +#: ../gtk/gtktextbufferserialize.c:1192 #, c-format msgid "\"%s\" is not a valid attribute name" msgstr "\"%s\" ئىناۋەتلىك خاسلىق ئاتى ئەمەس" -#: ../gtk/gtktextbufferserialize.c:1205 +#: ../gtk/gtktextbufferserialize.c:1202 #, c-format msgid "" "\"%s\" could not be converted to a value of type \"%s\" for attribute \"%s\"" -msgstr "\"%s\"نى \"%s\" تىپلىق قىممەتكە ئالماشتۇرالمايدۇ، بۇ قىممەت \"%s\" خاسلىققا ئىشلىتىلىدۇ" +msgstr "" +"\"%s\"نى \"%s\" تىپلىق قىممەتكە ئالماشتۇرالمايدۇ، بۇ قىممەت \"%s\" خاسلىققا " +"ئىشلىتىلىدۇ" -#: ../gtk/gtktextbufferserialize.c:1214 +#: ../gtk/gtktextbufferserialize.c:1211 #, c-format msgid "\"%s\" is not a valid value for attribute \"%s\"" msgstr "\"%s\" بولسا \"%s\" خاسلىقنىڭ ئىناۋەتلىك قىممىتى ئەمەس" -#: ../gtk/gtktextbufferserialize.c:1299 +#: ../gtk/gtktextbufferserialize.c:1296 #, c-format msgid "Tag \"%s\" already defined" msgstr "\"%s\" بەلگە ئېنىقلاندى" -#: ../gtk/gtktextbufferserialize.c:1312 +#: ../gtk/gtktextbufferserialize.c:1309 #, c-format msgid "Tag \"%s\" has invalid priority \"%s\"" msgstr "بەلگە \"%s\" نىڭ ئالدىنلىقى \"%s\" ئىناۋەتسىز" -#: ../gtk/gtktextbufferserialize.c:1365 +#: ../gtk/gtktextbufferserialize.c:1362 #, c-format msgid "Outermost element in text must be not <%s>" -msgstr "تېكىستنىڭ ئەڭ سىرتىدىكى ئېلېمېنت بولىدۇ، <%s> بولمايدۇ" +msgstr "" +"تېكىستنىڭ ئەڭ سىرتىدىكى ئېلېمېنت بولىدۇ، <%s> بولمايدۇ" -#: ../gtk/gtktextbufferserialize.c:1374 ../gtk/gtktextbufferserialize.c:1390 +#: ../gtk/gtktextbufferserialize.c:1371 ../gtk/gtktextbufferserialize.c:1387 #, c-format msgid "A <%s> element has already been specified" msgstr "<%s> ئېلېمېنت بەلگىلەندى" -#: ../gtk/gtktextbufferserialize.c:1396 +#: ../gtk/gtktextbufferserialize.c:1393 msgid "A element can't occur before a element" msgstr " ئېلېمېنتى نىڭ ئالدىدا كۆرۈلمەيدۇ" -#: ../gtk/gtktextbufferserialize.c:1796 +#: ../gtk/gtktextbufferserialize.c:1793 msgid "Serialized data is malformed" msgstr "تەرتىپلەشكەن سانلىق مەلۇمات فورماتى خاتا" -#: ../gtk/gtktextbufferserialize.c:1874 +#: ../gtk/gtktextbufferserialize.c:1871 msgid "" "Serialized data is malformed. First section isn't GTKTEXTBUFFERCONTENTS-0001" -msgstr "تەرتىپلەشكەن سانلىق مەلۇمات فورماتى خاتا. بىرىنچى بۆلىكى GTKTEXTBUFFERCONTENTS-0001" +msgstr "" +"تەرتىپلەشكەن سانلىق مەلۇمات فورماتى خاتا. بىرىنچى بۆلىكى " +"GTKTEXTBUFFERCONTENTS-0001" #: ../gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" @@ -2678,7 +2820,7 @@ msgstr "PDF قاڭقىش يۆنىلىش فورماتى(_P)" #: ../gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" -msgstr "ZWS نۆل كەڭلىكتىكى بوشلۇق(_Z)" +msgstr "ZWS نۆل كەڭلىكتىكى بوشلۇق (_Z)" #: ../gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" @@ -2688,58 +2830,53 @@ msgstr "ZWJ نۆل كەڭلىكتىكى ئۇلاش بەلگىسى(_J)" msgid "ZWNJ Zero width _non-joiner" msgstr "ZWNJ نۆل كەڭلىكتىكى ئۇلىماسلىق بەلگىسى (_N)" -#: ../gtk/gtkthemes.c:72 -#, c-format -msgid "Unable to locate theme engine in module_path: \"%s\"," -msgstr "بۆلەك يولىدا باش تېما ماتورى تېپىلمىدى: “%s”،" - -#: ../gtk/gtkuimanager.c:1505 +#: ../gtk/gtkuimanager.c:1506 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" msgstr "'%s' ئويلىشىلمىغان باشلاش بەلگىسى %d -قۇر %d -ھەرپتە" -#: ../gtk/gtkuimanager.c:1595 +#: ../gtk/gtkuimanager.c:1596 #, c-format msgid "Unexpected character data on line %d char %d" msgstr "%d- قۇر %d -ھەرپتە ئويلىشىلمىغان بەلگە بار" -#: ../gtk/gtkuimanager.c:2427 +#: ../gtk/gtkuimanager.c:2428 msgid "Empty" msgstr "بوش" -#: ../gtk/gtkvolumebutton.c:83 +#: ../gtk/gtkvolumebutton.c:170 msgid "Volume" -msgstr "قىممەت" +msgstr "ئەن" -#: ../gtk/gtkvolumebutton.c:85 +#: ../gtk/gtkvolumebutton.c:172 msgid "Turns volume down or up" msgstr "ئاۋازنى يۇقىرىلات ياكى تۆۋەنلەت" -#: ../gtk/gtkvolumebutton.c:88 +#: ../gtk/gtkvolumebutton.c:175 msgid "Adjusts the volume" msgstr "ئاۋاز تەڭشىكى" -#: ../gtk/gtkvolumebutton.c:94 ../gtk/gtkvolumebutton.c:97 +#: ../gtk/gtkvolumebutton.c:181 ../gtk/gtkvolumebutton.c:184 msgid "Volume Down" -msgstr "ئاۋازنى تۆۋەنلىتىش" +msgstr "ئاۋازنى تۆۋەنلەت" -#: ../gtk/gtkvolumebutton.c:96 +#: ../gtk/gtkvolumebutton.c:183 msgid "Decreases the volume" msgstr "ئاۋازنى كېمەيت" -#: ../gtk/gtkvolumebutton.c:100 ../gtk/gtkvolumebutton.c:103 +#: ../gtk/gtkvolumebutton.c:187 ../gtk/gtkvolumebutton.c:190 msgid "Volume Up" -msgstr "ئاۋازنى يۇقىرىلىتىش" +msgstr "ئاۋازنى يۇقىرىلات" -#: ../gtk/gtkvolumebutton.c:102 +#: ../gtk/gtkvolumebutton.c:189 msgid "Increases the volume" msgstr "ئاۋازنى ئاشۇر" -#: ../gtk/gtkvolumebutton.c:160 +#: ../gtk/gtkvolumebutton.c:247 msgid "Muted" msgstr "ئۈنسىز" -#: ../gtk/gtkvolumebutton.c:164 +#: ../gtk/gtkvolumebutton.c:251 msgid "Full Volume" msgstr "ئەڭ يۇقىرى ئاۋاز" @@ -2748,7 +2885,7 @@ msgstr "ئەڭ يۇقىرى ئاۋاز" #. * Translate the "%d" to "%Id" if you want to use localised digits, #. * or otherwise translate the "%d" to "%d". #. -#: ../gtk/gtkvolumebutton.c:177 +#: ../gtk/gtkvolumebutton.c:264 #, c-format msgctxt "volume percentage" msgid "%d %%" @@ -3562,17 +3699,17 @@ msgstr "ج خ ج 8 لېپاپ" #: ../gtk/paper_names_offsets.c:166 msgctxt "paper size" msgid "prc9 Envelope" -msgstr "ج خ ج 9 لېپاپ" +msgstr "ج خ ج 8 لېپاپ" #: ../gtk/paper_names_offsets.c:167 msgctxt "paper size" msgid "ROC 16k" -msgstr "ج م 16 كەسلەم" +msgstr "ج خ ج 16 كەسلەم" #: ../gtk/paper_names_offsets.c:168 msgctxt "paper size" msgid "ROC 8k" -msgstr "ج م 8 كەسلەم" +msgstr "ج خ ج 8 كەسلەم" #: ../gtk/updateiconcache.c:492 ../gtk/updateiconcache.c:552 #, c-format @@ -3599,87 +3736,89 @@ msgstr "قىسقۇچ ئىندېكسقا يازالمىدى\n" msgid "Failed to rewrite header\n" msgstr "بېشىغا قايتا يازالمىدى\n" -#: ../gtk/updateiconcache.c:1463 +#: ../gtk/updateiconcache.c:1488 #, c-format msgid "Failed to open file %s : %s\n" msgstr "%s ھۆججەتنى ئاچالمىدى: %s\n" -#: ../gtk/updateiconcache.c:1471 +#: ../gtk/updateiconcache.c:1496 ../gtk/updateiconcache.c:1526 #, c-format msgid "Failed to write cache file: %s\n" msgstr "غەملەك ھۆججىتىگە يازالمىدى: %s\n" -#: ../gtk/updateiconcache.c:1507 +#: ../gtk/updateiconcache.c:1537 #, c-format msgid "The generated cache was invalid.\n" msgstr "قۇرغان غەملەك ئىناۋەتسىز.\n" -#: ../gtk/updateiconcache.c:1521 +#: ../gtk/updateiconcache.c:1551 #, c-format msgid "Could not rename %s to %s: %s, removing %s then.\n" msgstr "%s نى %s غا ئات ئۆزگەرتەلمىدى:%s، %s چىقىرىۋاتىدۇ\n" -#: ../gtk/updateiconcache.c:1535 +#: ../gtk/updateiconcache.c:1565 #, c-format msgid "Could not rename %s to %s: %s\n" msgstr "%s نى %s غا ئات ئۆزگەرتەلمىدى:%s\n" -#: ../gtk/updateiconcache.c:1545 +#: ../gtk/updateiconcache.c:1575 #, c-format msgid "Could not rename %s back to %s: %s.\n" msgstr "%s نى %s غا قايتۇرۇپ ئات ئۆزگەرتەلمىدى:%s\n" -#: ../gtk/updateiconcache.c:1572 +#: ../gtk/updateiconcache.c:1602 #, c-format msgid "Cache file created successfully.\n" msgstr "غەملەك ھۆججىتى مۇۋەپپەقىيەتلىك قۇرۇلدى.\n" -#: ../gtk/updateiconcache.c:1611 +#: ../gtk/updateiconcache.c:1641 msgid "Overwrite an existing cache, even if up to date" msgstr "نۆۋەتتىكى غەملەك ئەڭ يېڭى بولسىمۇ قاپلىۋەت" -#: ../gtk/updateiconcache.c:1612 +#: ../gtk/updateiconcache.c:1642 msgid "Don't check for the existence of index.theme" msgstr "مەۋجۇت index.theme نى تەكشۈرمە" -#: ../gtk/updateiconcache.c:1613 +#: ../gtk/updateiconcache.c:1643 msgid "Don't include image data in the cache" msgstr "غەملەكتە سۈرەت سانلىق مەلۇماتىنى ساقلىما" -#: ../gtk/updateiconcache.c:1614 +#: ../gtk/updateiconcache.c:1644 msgid "Output a C header file" msgstr "C باش ھۆججەتنى چىقار" -#: ../gtk/updateiconcache.c:1615 +#: ../gtk/updateiconcache.c:1645 msgid "Turn off verbose output" msgstr "تەپسىلىي چىقىرىشنى ياپ" -#: ../gtk/updateiconcache.c:1616 +#: ../gtk/updateiconcache.c:1646 msgid "Validate existing icon cache" msgstr "مەۋجۇت سىنبەلگە غەملىكىنى دەلىللە" -#: ../gtk/updateiconcache.c:1683 +#: ../gtk/updateiconcache.c:1713 #, c-format msgid "File not found: %s\n" msgstr "ھۆججەتنى تاپالمىدى: %s\n" -#: ../gtk/updateiconcache.c:1689 +#: ../gtk/updateiconcache.c:1719 #, c-format msgid "Not a valid icon cache: %s\n" msgstr "ئىناۋەتلىك سىنبەلگە غەملەك ئەمەس: %s\n" -#: ../gtk/updateiconcache.c:1702 +#: ../gtk/updateiconcache.c:1732 #, c-format msgid "No theme index file.\n" msgstr "باش تېما ئىندېكس ھۆججىتى يوق.\n" -#: ../gtk/updateiconcache.c:1706 +#: ../gtk/updateiconcache.c:1736 #, 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 "“%s دا باش تېما ئىندېكس ھۆججىتى يوق.\n" -"ئەگەر بۇ جايغا راستىنىلا سىنبەلگە غەملەك قۇرماقچى بولسىڭىز --ignore-theme-index ئىشلىتىڭ\n" +msgstr "" +"“%s دا باش تېما ئىندېكس ھۆججىتى يوق.\n" +"ئەگەر بۇ جايغا راستىنىلا سىنبەلگە غەملەك قۇرماقچى بولسىڭىز --ignore-theme-" +"index ئىشلىتىڭ\n" #. ID #: ../modules/input/imam-et.c:454 @@ -3704,7 +3843,7 @@ msgstr "ئىنۇكتىتۇت (ئاھاڭ تەرجىمىسى)" #. ID #: ../modules/input/imipa.c:145 msgid "IPA" -msgstr "IPA" +msgstr "IPA " #. ID #: ../modules/input/immultipress.c:31 @@ -3729,261 +3868,261 @@ msgstr "تىگرىگنا-ئېفىئوپىيە(EZ+)" #. ID #: ../modules/input/imviqr.c:244 msgid "Vietnamese (VIQR)" -msgstr "ۋيېتنامچە(VIQR)" +msgstr "ۋيېتنامچە(TCVN)" #. ID #: ../modules/input/imxim.c:28 msgid "X Input Method" msgstr "X كىرگۈزگۈچ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:810 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1020 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:814 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1024 msgid "Username:" msgstr "ئىشلەتكۈچى ئاتى:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:811 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1029 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1033 msgid "Password:" msgstr "ئىم:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:850 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1042 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:854 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1046 #, c-format msgid "Authentication is required to print document '%s' on printer %s" msgstr "باسىدىغان '%s' پۈتۈكنى %s پرىنتېردا بېسىشتا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:852 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 #, c-format msgid "Authentication is required to print a document on %s" msgstr "%s دا پۈتۈكتىن بىرنى بېسىشتا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:856 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:860 #, c-format msgid "Authentication is required to get attributes of job '%s'" msgstr "ۋەزىپە '%s' نىڭ خاسلىقىغا ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:858 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 msgid "Authentication is required to get attributes of a job" msgstr "بىر ۋەزىپىنىڭ خاسلىقىغا ئېرىشىش ئۈچۈن دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:862 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:866 #, c-format msgid "Authentication is required to get attributes of printer %s" msgstr "%s پرىنتېرنىڭ خاسلىقىغا ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:864 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:868 msgid "Authentication is required to get attributes of a printer" msgstr "بىر پرىنتېرنىڭ خاسلىقىغا ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:867 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:871 #, c-format msgid "Authentication is required to get default printer of %s" msgstr "%s نىڭ كۆڭۈلدىكى پرىنتېرىغا ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:870 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:874 #, c-format msgid "Authentication is required to get printers from %s" msgstr "%s دىن پرىنتېرغا ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:875 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:879 #, c-format msgid "Authentication is required to get a file from %s" msgstr "%s دىن ھۆججەتكە ئېرىشىشتە دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:877 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:881 #, c-format msgid "Authentication is required on %s" msgstr "%s دا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1014 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1018 msgid "Domain:" msgstr "دائىرە:" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1044 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1048 #, c-format msgid "Authentication is required to print document '%s'" msgstr "%s دا پۈتۈك بېسىشتا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1049 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1053 #, c-format msgid "Authentication is required to print this document on printer %s" msgstr "بۇ پۈتۈكنى %s دا بېسىشتا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1051 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1055 msgid "Authentication is required to print this document" msgstr "بۇ پۈتۈكنى بېسىشتا دەلىللەش لازىم" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1672 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1676 #, c-format msgid "Printer '%s' is low on toner." msgstr "'%s' پرىنتېرنىڭ سىياھى ئاز." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1673 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 #, c-format msgid "Printer '%s' has no toner left." msgstr "'%s' پرىنتېرنىڭ سىياھى قالمىغان." #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1675 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 #, c-format msgid "Printer '%s' is low on developer." msgstr "'%s' پرىنتېر روشەنلەشتۈرۈش خۇرۇچى ئاز" #. Translators: "Developer" like on photo development context -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1677 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 #, c-format msgid "Printer '%s' is out of developer." msgstr "'%s' پرىنتېر روشەنلەشتۈرۈش خۇرۇچى قالمىغان." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1679 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 #, c-format msgid "Printer '%s' is low on at least one marker supply." msgstr "'%s' پرىنتېرنىڭ ئاز دېگەندە بىر رەڭ قۇتىسىنىڭ سىياھى ئاز." #. Translators: "marker" is one color bin of the printer -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1681 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 #, c-format msgid "Printer '%s' is out of at least one marker supply." msgstr "'%s' پرىنتېرنىڭ ئاز دېگەندە بىر رەڭ قۇتىسىنىڭ سىياھى تۈگىگەن." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1682 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 #, c-format msgid "The cover is open on printer '%s'." msgstr "'%s' پرىنتېرنىڭ قاپقىقى ئوچۇق." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1683 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format msgid "The door is open on printer '%s'." msgstr "'%s' پرىنتېرنىڭ ئىشىكى ئوچۇق." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1684 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1688 #, c-format msgid "Printer '%s' is low on paper." msgstr "'%s' پرىنتېرنىڭ قەغىزى قالمىغان." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1685 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1689 #, c-format msgid "Printer '%s' is out of paper." msgstr "'%s' پرىنتېردا قەغەز كەم." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1690 #, c-format msgid "Printer '%s' is currently offline." msgstr "'%s' پرىنتېر نۆۋەتتە توردا يوق." -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1687 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1691 #, c-format msgid "There is a problem on printer '%s'." msgstr "'%s' پرىنتېردا مەسىلە بار." #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:1995 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:1999 msgid "Paused ; Rejecting Jobs" msgstr "ۋاقىتلىق توختىتىلدى؛ ۋەزىپىنى رەت قىلىدۇ" #. Translators: this is a printer status. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2001 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2005 msgid "Rejecting Jobs" msgstr "ۋەزىپىنى رەت قىلىدۇ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2777 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 msgid "Two Sided" msgstr "قوش يۈزلۈك" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2778 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 msgid "Paper Type" msgstr "قەغەز تىپى" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2779 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2783 msgid "Paper Source" msgstr "قەغەز مەنبەسى" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2780 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2784 msgid "Output Tray" msgstr "قەغەز چىقارغۇچ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2781 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2785 msgid "Resolution" msgstr "ئېنىقلىق" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2782 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2786 msgid "GhostScript pre-filtering" msgstr "GhostScript ئالدىن سۈزگۈچ" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2791 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 msgid "One Sided" msgstr "تاق تەرەپلىك" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2793 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 msgid "Long Edge (Standard)" msgstr "ئۇزۇن يان (ئۆلچەملىك)" #. Translators: this is an option of "Two Sided" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2795 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 msgid "Short Edge (Flip)" msgstr "قىسقا يان (ئۆرۈ)" #. Translators: this is an option of "Paper Source" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2797 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2799 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 msgid "Auto Select" msgstr "ئۆزلۈكىدىن تاللا" #. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Resolution" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2801 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2803 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2805 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2807 #: ../modules/printbackends/cups/gtkprintbackendcups.c:2809 -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3305 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3309 msgid "Printer Default" -msgstr "ئالدىن تەڭشەلگەن پرىنتېر" +msgstr "پرىنتېر كۆڭۈلدىكى" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2811 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 msgid "Embed GhostScript fonts only" msgstr "GhostScript خەت نۇسخىنىلا سىڭدۈر" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2813 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 msgid "Convert to PS level 1" msgstr "PS دەرىجە 1 گە ئايلاندۇر" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2815 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2819 msgid "Convert to PS level 2" msgstr "PS دەرىجە 2 گە ئايلاندۇر" #. Translators: this is an option of "GhostScript" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2817 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2821 msgid "No pre-filtering" msgstr "ئالدىن سۈزگۈچ يوق" #. Translators: "Miscellaneous" is the label for a button, that opens #. up an extra panel of settings in a print dialog. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:2826 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:2830 msgid "Miscellaneous" msgstr "باشقىلار" #. Translators: These strings name the possible values of the #. * job priority option in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Urgent" msgstr "جىددىي" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "High" -msgstr "ئېگىز" +msgstr "يۇقىرى" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Medium" msgstr "ئوتتۇرا" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3529 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3533 msgid "Low" msgstr "تۆۋەن" @@ -3991,66 +4130,66 @@ msgstr "تۆۋەن" #. Translators, this string is used to label the pages-per-sheet option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3553 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3557 msgid "Pages per Sheet" msgstr "ھەر ۋاراق بەت سانى" #. Translators, this string is used to label the job priority option #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3590 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3594 msgid "Job Priority" msgstr "ۋەزىپە ئالدىنلىق" #. Translators, this string is used to label the billing info entry #. * in the print dialog #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3601 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3605 msgid "Billing Info" msgstr "ھەق ھېسابلاش ئۇچۇرى" #. Translators, these strings are names for various 'standard' cover #. * pages that the printing system may support. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "None" msgstr "يوق" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Classified" msgstr "تۈرگە ئايرىلغان" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Confidential" msgstr "مەخپىي" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Secret" msgstr "سىر" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Standard" msgstr "ئۆلچەملىك" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Top Secret" msgstr "قەتئىي مەخپىي" -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3616 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3620 msgid "Unclassified" -msgstr "بۆلۈنمىگەن" +msgstr "تۈرگە ئايرىلمىغان" #. Translators, this is the label used for the option in the print #. * dialog that controls the front cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3651 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3655 msgid "Before" msgstr "ئاۋۋال" #. Translators, this is the label used for the option in the print #. * dialog that controls the back cover page. #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3666 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3670 msgid "After" msgstr "داۋامى" @@ -4058,14 +4197,14 @@ msgstr "داۋامى" #. * a print job is printed. Possible values are 'now', a specified time, #. * or 'on hold' #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3686 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3690 msgid "Print at" msgstr "باسىدۇ" #. 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/cups/gtkprintbackendcups.c:3697 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3701 msgid "Print at time" msgstr "بەلگىلەنگەن ۋاقىتتا باسىدۇ" @@ -4073,7 +4212,7 @@ msgstr "بەلگىلەنگەن ۋاقىتتا باسىدۇ" #. * size. The two placeholders are replaced with the width and height #. * in points. E.g: "Custom 230.4x142.9" #. -#: ../modules/printbackends/cups/gtkprintbackendcups.c:3732 +#: ../modules/printbackends/cups/gtkprintbackendcups.c:3736 #, c-format msgid "Custom %sx%s" msgstr "ئىختىيارى %sx%s" @@ -4082,34 +4221,34 @@ msgstr "ئىختىيارى %sx%s" #: ../modules/printbackends/file/gtkprintbackendfile.c:250 #, c-format msgid "output.%s" -msgstr "چىقىش.%s" +msgstr "output.%s" #: ../modules/printbackends/file/gtkprintbackendfile.c:501 msgid "Print to File" msgstr "ھۆججەتكە باس" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "PDF" msgstr "PDF" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "Postscript" msgstr "Postscript" -#: ../modules/printbackends/file/gtkprintbackendfile.c:578 +#: ../modules/printbackends/file/gtkprintbackendfile.c:627 msgid "SVG" msgstr "SVG" -#: ../modules/printbackends/file/gtkprintbackendfile.c:590 +#: ../modules/printbackends/file/gtkprintbackendfile.c:640 #: ../modules/printbackends/test/gtkprintbackendtest.c:503 msgid "Pages per _sheet:" msgstr "ھەر ۋاراق بەت سانى(_S):" -#: ../modules/printbackends/file/gtkprintbackendfile.c:649 +#: ../modules/printbackends/file/gtkprintbackendfile.c:699 msgid "File" msgstr "ھۆججەت" -#: ../modules/printbackends/file/gtkprintbackendfile.c:659 +#: ../modules/printbackends/file/gtkprintbackendfile.c:709 msgid "_Output format" msgstr "چىقىرىش فورماتى(_O)" @@ -4143,7 +4282,7 @@ msgstr "ۋەزىپىنى بىر تەرەپ قىلىۋاتىدۇ" #. SUN_BRANDING #: ../modules/printbackends/papi/gtkprintbackendpapi.c:836 msgid "paused" -msgstr "ۋاقىتلىق توختىتىلدى" +msgstr "ۋاقىتلىق توختىدى" #. SUN_BRANDING #: ../modules/printbackends/papi/gtkprintbackendpapi.c:839 @@ -4174,10 +4313,18 @@ msgstr "ھۆججەت «%s» نى ئاچالمىدى: %s" #, c-format msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق ئەمەس بۇ ھۆججەت بۇزۇلۇپ كەتكەن بولۇشى مۇمكىن" +msgstr "" +"'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق ئەمەس بۇ ھۆججەت بۇزۇلۇپ كەتكەن " +"بولۇشى مۇمكىن" -#~ msgid "Error creating folder '%s': %s" -#~ msgstr "قىسقۇچ قۇرغاندا خاتالىق كۆرۈلدى'%s' : %s" +#~ msgid "Unable to locate theme engine in module_path: \"%s\"," +#~ msgstr "بۆلەك يولىدا باش تېما ماتورى تېپىلمىدى: “%s”،" + +#~ msgid "X screen to use" +#~ msgstr "ئىشلەتكەن X ئېكران " + +#~ msgid "SCREEN" +#~ msgstr "ئېكران" #~ msgid "Gdk debugging flags to set" #~ msgstr "Gdk سازلاش تەڭشەك بەلگىسى" @@ -4185,8 +4332,23 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgid "Gdk debugging flags to unset" #~ msgstr "قالدۇرماقچى بولغان Gdk سازلاش بەلگىسى" +#~ msgid "Make X calls synchronous" +#~ msgstr "X نى قەدەمداش قىلىپ ئىشلەت" + +#~ msgid "Credits" +#~ msgstr "تەشەككۈر" + +#~ msgid "Written by" +#~ msgstr "يازغۇچى" + +#~ msgid "Error creating folder '%s': %s" +#~ msgstr "قىسقۇچ قۇرغاندا خاتالىق كۆرۈلدى'%s' : %s" + +#~ msgid "Unable to find include file: \"%s\"" +#~ msgstr "ئىچىدىكى ھۆججەتنى تاپالمىدى:\"%s\"" + #~ msgid "Image file '%s' contains no data" -#~ msgstr "'%s' سۈرەت ھۆججەتتە ھىچقانداق سانلىق مەلۇمات يوق" +#~ msgstr "'%s' سۈرەت ھۆججەتتە ھېچقانداق سانلىق مەلۇمات يوق" #~ msgid "" #~ "Failed to load animation '%s': reason not known, probably a corrupt " @@ -4344,7 +4506,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "GIF ھۆججەتتىكى بىر كاندۇكنى ھاسىل قىلىشقا يېتەرلىك ئەسلەك يوق" #~ msgid "GIF image is corrupt (incorrect LZW compression)" -#~ msgstr "GIF سۈرەت بۇزۇلغان(ناتوغرا LZW پىرىس شەكلى)" +#~ msgstr "GIF سۈرەت بۇزۇلغان(ناتوغرا LZW پرېس شەكلى)" #~ msgid "File does not appear to be a GIF file" #~ msgstr "ھۆججەت GIF ھۆججەت ئەمەستەك تۇرىدۇ" @@ -4454,13 +4616,13 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ "JPEG quality must be a value between 0 and 100; value '%s' could not be " #~ "parsed." #~ msgstr "" -#~ "JPEG نىڭ سۈپىتى چوقۇم 0 دىن 100 گىچە بۆلۇشى كېرەك. '%s' قىممەتنى تەھلىل " +#~ "JPEG نىڭ سۈپىتى چوقۇم 0 دىن 100 گىچە بولۇشى كېرەك. '%s' قىممەتنى تەھلىل " #~ "قىلالمىدى" #~ msgid "" #~ "JPEG quality must be a value between 0 and 100; value '%d' is not allowed." #~ msgstr "" -#~ "JPEG نىڭ سۈپىتى چوقۇم 0 دىن 100 گىچە بۆلۇشى كېرەك. '%d' قىممەتنى " +#~ "JPEG نىڭ سۈپىتى چوقۇم 0 دىن 100 گىچە بولۇشى كېرەك. '%d' قىممەتنى " #~ "ئىشلىتىشكە يول قويۇلمايدۇ." #~ msgid "The JPEG image format" @@ -4470,7 +4632,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "ھۆججەت بېشىغا ئەسلەك تەقسىملىيەلمىدى" #~ msgid "Couldn't allocate memory for context buffer" -#~ msgstr "كونتېكست يىغلەككە ئەسلەك تەقسىملىيەلمىدى" +#~ msgstr "كونتېكىست يىغلەككە ئەسلەك تەقسىملىيەلمىدى" #~ msgid "Image has invalid width and/or height" #~ msgstr "سۈرەتنىڭ كەڭلىكى ۋە ياكى ئۇزۇنلۇقى ئىناۋەتسىز" @@ -4482,7 +4644,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "سۈرەتتە قوللىمايدىغان %d بىتلىق رەڭ تەخسىسى بار " #~ msgid "Couldn't create new pixbuf" -#~ msgstr "يىڭى پىكسېل يىغلەك قۇرالمايدۇ" +#~ msgstr "يېڭى پىكسېل يىغلەك قۇرالمايدۇ" #~ msgid "Couldn't allocate memory for line data" #~ msgstr "سىزىقلىق سانلىق مەلۇماتقا ئەسلەك تەقسىملىيەلمەيدۇ" @@ -4540,7 +4702,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "PNG يېزىق رامكىسىنىڭ ھالقىلىق سۆزى 1-79 غىچە بولۇشى كېرەك " #~ msgid "Keys for PNG text chunks must be ASCII characters." -#~ msgstr "PNG يېزىق رامكىسىنىڭ ھالقىلىق سۆزى ASCII چوقۇم بۆلۇشى كېرەك" +#~ msgstr "PNG يېزىق رامكىسىنىڭ ھالقىلىق سۆزى ASCII چوقۇم بولۇشى كېرەك" #~ msgid "Color profile has invalid length %d." #~ msgstr "رەڭ سەپلىمە ھۆججىتىنىڭ ئۇزۇنلۇقى %d ئىناۋەتسىز." @@ -4549,7 +4711,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ "PNG compression level must be a value between 0 and 9; value '%s' could " #~ "not be parsed." #~ msgstr "" -#~ "PNG پرېسلاش دەرىجىسى چوقۇم 9-0 گىچە بۆلۇشى كېرەك؛ ئانالىز قىلىنمايدىغان " +#~ "PNG پرېسلاش دەرىجىسى چوقۇم 9-0 گىچە بولۇشى كېرەك؛ ئانالىز قىلىنمايدىغان " #~ "قىممەت %s ." #~ msgid "" @@ -4592,7 +4754,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "ئەسلىدىكى PNM سۈرەتنىڭ تىپى ئىناۋەتسىز" #~ msgid "PNM image loader does not support this PNM subformat" -#~ msgstr "PNM يۈكلەش پروگرامماسى بۇ خىل PNM تارماق فورماتنى قوللىمايدۇ" +#~ msgstr "PNM يۈكلەش پروگراممىسى بۇ خىل PNM تارماق فورماتنى قوللىمايدۇ" #~ msgid "Raw PNM formats require exactly one whitespace before sample data" #~ msgstr "" @@ -4617,7 +4779,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "كىرگۈزگەن ھۆججەت چۈشەندۈرۈشى NULL." #~ msgid "Failed to read QTIF header" -#~ msgstr " QTIF باشىنى ئوقۇيالمىدى" +#~ msgstr " QTIF بېشىنى ئوقۇيالمىدى" #~ msgid "QTIF atom size too large (%d bytes)" #~ msgstr "QTIF ئاتوم چوڭلۇقى بەك چوڭ (%d بايت)" @@ -4671,7 +4833,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "IOBuffer ئۈچۈن ۋاقىتلىق ئەسلەك تەقسىملىيەلمەيدۇ" #~ msgid "Cannot allocate new pixbuf" -#~ msgstr "يىڭى پېكسىللىق يىغلەكنى تەقسىملىيەلمەيدۇ" +#~ msgstr "يېڭى پىكسېللىق يىغلەكنى تەقسىملىيەلمەيدۇ" #~ msgid "Image is corrupted or truncated" #~ msgstr "سۈرەت بۇزۇلغان ياكى كېسىلگەن" @@ -4716,7 +4878,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "TIFF سۈرەت ئۆلچىمى بەك چوڭ " #~ msgid "Insufficient memory to open TIFF file" -#~ msgstr "TIFFھۆججەتنى ئىچىشقا يېتەرلىك ئەسلەك يوق" +#~ msgstr "TIFFھۆججەتنى ئىچىشكە يېتەرلىك ئەسلەك يوق" #~ msgid "Failed to load RGB data from TIFF file" #~ msgstr "TIFF ھۆججەتتىكى RGB سانلىق مەلۇماتلارنى يۈكلىيەلمىدى" @@ -4734,7 +4896,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "TIFF سۈرەتنى ساقلىيالمىدى" #~ msgid "TIFF compression doesn't refer to a valid codec." -#~ msgstr "TIFF پىرىسلاش ئىناۋەتلىك كودلاشتىن پايدىلىنالمىدى." +#~ msgstr "TIFF پرېسلاش ئىناۋەتلىك كودلاشتىن پايدىلىنالمىدى." #~ msgid "Failed to write TIFF data" #~ msgstr "TIFF سانلىق مەلۇماتقا يازالمىدى" @@ -4755,7 +4917,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "سۈرەت يۈكلەشكە يېتەرلىك ئەسلەك يوق" #~ msgid "Couldn't save the rest" -#~ msgstr "قالغان قىسمىنى ساقلايالمايدۇ" +#~ msgstr "قالغان قىسمىنى ساقلىيالمايدۇ" #~ msgid "The WBMP image format" #~ msgstr "WBMP سۈرەت فورماتى" @@ -4785,7 +4947,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "XPM ھۆججەت سۈرەت ئېگىزلىكى <= 0" #~ msgid "XPM has invalid number of chars per pixel" -#~ msgstr "XPM ھەربىر پېكسىل ئىگىلىگەن بىت سانى ئىناۋەتسىز" +#~ msgstr "XPM ھەربىر پىكسېل ئىگىلىگەن بىت سانى ئىناۋەتسىز" #~ msgid "XPM file has invalid number of colors" #~ msgstr "XPM ھۆججەت رەسىم رەڭ سانى توغرا ئەمەس" @@ -4851,10 +5013,10 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgstr "" #~ "ھۆججەت \"%s\" باشقا بىر (%s ئاتلىق)مۇلازىمېتىردا، مەزكۇر پروگرامما " #~ "زىيارەت قىلالماسلىقى مۇمكىن. \n" -#~ "ئۇنى راستىنلا تاللامسىز؟" +#~ "ئۇنى راستىنىلا تاللامسىز؟" #~ msgid "_New Folder" -#~ msgstr "يىڭى قىسقۇچ(_N)" +#~ msgstr "يېڭى قىسقۇچ(_N)" #~ msgid "De_lete File" #~ msgstr "ھۆججەت ئۆچۈر(_L)" @@ -4865,7 +5027,7 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgid "" #~ "The folder name \"%s\" contains symbols that are not allowed in filenames" #~ msgstr "" -#~ "\"%s\" قىسقۇچ ئاتىدا ھۆججەت ئاتىدا مەۋجۇد بولۇشقا يول قويۇلمايدىغان بەلگە " +#~ "\"%s\" قىسقۇچ ئاتىدا ھۆججەت ئاتىدا مەۋجۇت بولۇشقا يول قويۇلمايدىغان بەلگە " #~ "بار" #~ msgid "New Folder" @@ -4874,12 +5036,9 @@ msgstr "'%s' سۈرەتنى يۈكلىيەلمىدى. سەۋەبى ئېنىق #~ msgid "_Folder name:" #~ msgstr "قىسقۇچ ئاتى(_F):" -#~ msgid "C_reate" -#~ msgstr "قۇر(_R)" - #~ msgid "" #~ "The filename \"%s\" contains symbols that are not allowed in filenames" -#~ msgstr "\"%s\" ھۆججەت ئاتىدا مەۋجۇد بولۇشقا يول قويۇلمايدىغان بەلگە بار" +#~ msgstr "\"%s\" ھۆججەت ئاتىدا مەۋجۇت بولۇشقا يول قويۇلمايدىغان بەلگە بار" #~ msgid "Error deleting file '%s': %s" #~ msgstr "'%s' ھۆججەتنى ئۆچۈرگەندە خاتالىق كۆرۈلدى:%s" diff --git a/po/vi.po b/po/vi.po index a2e6a84c39..d1d352a72f 100644 --- a/po/vi.po +++ b/po/vi.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Gtk+ 2.15.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-10-01 15:41-0400\n" -"PO-Revision-Date: 2010-03-22 23:18+0930\n" +"PO-Revision-Date: 2010-12-19 16:22+0700\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -43,7 +43,7 @@ msgstr "HẠNG" #. Description of --name=NAME in --help output #: gdk/gdk.c:154 msgid "Program name as used by the window manager" -msgstr "Tên chương trình như được dùng bởi bộ quản lý cửa sổ" +msgstr "Tên chương trình được dùng bởi trình quản lý cửa sổ" #. Placeholder in --name=NAME in --help output #: gdk/gdk.c:155 @@ -53,12 +53,12 @@ msgstr "TÊN" #. Description of --display=DISPLAY in --help output #: gdk/gdk.c:157 msgid "X display to use" -msgstr "Bộ trình bày X cần dùng" +msgstr "Trình hiển thị X cần dùng" #. Placeholder in --display=DISPLAY in --help output #: gdk/gdk.c:158 msgid "DISPLAY" -msgstr "BỘ TRÌNH BÀY" +msgstr "HIỂN THỊ" #. Description of --screen=SCREEN in --help output #: gdk/gdk.c:160 @@ -72,9 +72,8 @@ msgstr "MÀN HÌNH" #. Description of --gdk-debug=FLAGS in --help output #: gdk/gdk.c:164 -#, fuzzy msgid "GDK debugging flags to set" -msgstr "Các cờ gỡ lỗi GTK+ cần đặt" +msgstr "Các cờ gỡ lỗi GDK cần đặt" #. Placeholder in --gdk-debug=FLAGS in --help output #. Placeholder in --gdk-no-debug=FLAGS in --help output @@ -86,9 +85,8 @@ msgstr "CỜ" #. Description of --gdk-no-debug=FLAGS in --help output #: gdk/gdk.c:167 -#, fuzzy msgid "GDK debugging flags to unset" -msgstr "Các cờ gỡ lỗi GTK+ cần bỏ đặt" +msgstr "Các cờ gỡ lỗi GDK cần bỏ đặt" #: gdk/keyname-table.h:3940 msgctxt "keyboard label" @@ -316,10 +314,10 @@ msgid "Opening %s" msgstr "Đang mở %s" #: gdk/x11/gdkapplaunchcontext-x11.c:321 -#, fuzzy, c-format +#, c-format msgid "Opening %d Item" msgid_plural "Opening %d Items" -msgstr[0] "Đang mở %s" +msgstr[0] "Đang mở %d mục" #. Description of --sync in --help output #: gdk/x11/gdkmain-x11.c:96 @@ -367,19 +365,19 @@ msgstr "Công trạng" #: gtk/gtkaboutdialog.c:2185 msgid "Written by" -msgstr "Tác giả" +msgstr "Tác giả:" #: gtk/gtkaboutdialog.c:2188 msgid "Documented by" -msgstr "Tài liệu" +msgstr "Tài liệu:" #: gtk/gtkaboutdialog.c:2200 msgid "Translated by" -msgstr "Bản dịch" +msgstr "Bản dịch:" #: gtk/gtkaboutdialog.c:2204 msgid "Artwork by" -msgstr "Đồ họa" +msgstr "Đồ họa:" #. This is the text that should appear next to menu accelerators #. * that use the shift key. If the text on this key isn't typically @@ -457,9 +455,9 @@ msgid "Invalid type function on line %d: '%s'" msgstr "Hàm kiểu không hợp lệ tại dòng %d: '%s'" #: gtk/gtkbuilderparser.c:407 -#, fuzzy, c-format +#, c-format msgid "Duplicate object ID '%s' on line %d (previously on line %d)" -msgstr "Trùng ID đối tượng '%s' trên dòng %d (trùng với trên dòng %d)" +msgstr "Trùng ID đối tượng '%s' trên dòng %d (trùng với dòng %d)" #: gtk/gtkbuilderparser.c:859 #, c-format @@ -607,7 +605,7 @@ msgstr "" #: gtk/gtkcolorsel.c:417 msgid "_Hue:" -msgstr "_Sắc độ :" +msgstr "_Sắc độ:" #: gtk/gtkcolorsel.c:418 msgid "Position on the color wheel." @@ -618,9 +616,8 @@ msgid "_Saturation:" msgstr "Độ _bão hòa:" #: gtk/gtkcolorsel.c:421 -#, fuzzy msgid "Intensity of the color." -msgstr "Độ trong suốt của màu." +msgstr "Cường độ màu." #: gtk/gtkcolorsel.c:422 msgid "_Value:" @@ -632,7 +629,7 @@ msgstr "Độ sáng của màu." #: gtk/gtkcolorsel.c:424 msgid "_Red:" -msgstr "Mà_u đỏ :" +msgstr "Đỏ:" #: gtk/gtkcolorsel.c:425 msgid "Amount of red light in the color." @@ -648,7 +645,7 @@ msgstr "Lượng sắc xanh lá cây trong màu." #: gtk/gtkcolorsel.c:428 msgid "_Blue:" -msgstr "Xanh _dương:" +msgstr "Xanh _lục:" #: gtk/gtkcolorsel.c:429 msgid "Amount of blue light in the color." @@ -793,20 +790,19 @@ msgstr "Lề giấy" #: gtk/gtkentry.c:8601 gtk/gtktextview.c:8248 msgid "Input _Methods" -msgstr "_Phương pháp nhập" +msgstr "Cách _gõ" #: gtk/gtkentry.c:8615 gtk/gtktextview.c:8262 msgid "_Insert Unicode Control Character" -msgstr "Chèn ký tự đ_iều khiển Unicode" +msgstr "_Chèn ký tự điều khiển Unicode" #: gtk/gtkentry.c:10015 msgid "Caps Lock and Num Lock are on" -msgstr "" +msgstr "Caps Lock và Num Lock đều bật" #: gtk/gtkentry.c:10017 -#, fuzzy msgid "Num Lock is on" -msgstr "Caps Lock đã bật" +msgstr "Num Lock đã bật" #: gtk/gtkentry.c:10019 msgid "Caps Lock is on" @@ -915,7 +911,7 @@ msgstr "Không thể gỡ bỏ Đánh dấu '%s'." #: gtk/gtkfilechooserdefault.c:2861 gtk/gtkfilechooserdefault.c:3725 msgid "Remove the selected bookmark" -msgstr "Gỡ bỏ đánh dấu được chọn" +msgstr "Gỡ bỏ Đánh dấu được chọn" #: gtk/gtkfilechooserdefault.c:3421 msgid "Remove" @@ -953,7 +949,7 @@ msgstr "Không thể chọn tập tin đó" #: gtk/gtkfilechooserdefault.c:4035 msgid "_Add to Bookmarks" -msgstr "Thê_m vào Đánh dấu" +msgstr "T_hêm Đánh dấu" #: gtk/gtkfilechooserdefault.c:4048 msgid "Show _Hidden Files" @@ -973,7 +969,7 @@ msgstr "Tên" #: gtk/gtkfilechooserdefault.c:4355 msgid "Size" -msgstr "Cỡ" +msgstr "Kích thước" #: gtk/gtkfilechooserdefault.c:4369 msgid "Modified" @@ -1179,20 +1175,20 @@ msgstr "aăâbcdđeêghikoôơuư AĂÂBCDĐEÊGHIKOÔƠUƯ" #: gtk/gtkfontsel.c:370 msgid "_Family:" -msgstr "_Họ :" +msgstr "_Họ:" #: gtk/gtkfontsel.c:376 msgid "_Style:" -msgstr "_Kiểu :" +msgstr "_Kiểu:" #: gtk/gtkfontsel.c:382 msgid "Si_ze:" -msgstr "_Cỡ :" +msgstr "_Cỡ:" #. create the text entry widget #: gtk/gtkfontsel.c:559 msgid "_Preview:" -msgstr "_Xem thử :" +msgstr "_Xem thử:" #: gtk/gtkfontsel.c:1659 msgid "Font Selection" @@ -1350,9 +1346,9 @@ msgid "Remember _forever" msgstr "_Nhớ mãi mãi" #: gtk/gtkmountoperation.c:883 -#, fuzzy, c-format +#, c-format msgid "Unknown Application (PID %d)" -msgstr "Ứng dụng lạ (pid %d)" +msgstr "Ứng dụng lạ (PID %d)" #: gtk/gtkmountoperation.c:1066 #, c-format @@ -1364,10 +1360,10 @@ msgid "_End Process" msgstr "_Chấm dứt tiến trình" #: gtk/gtkmountoperation-stub.c:64 -#, fuzzy, c-format +#, c-format msgid "Cannot kill process with PID %d. Operation is not implemented." msgstr "" -"Không thể buộc chấm dứt tiến trình có pid %d. Thao tác chưa được cài đặt." +"Không thể buộc chấm dứt tiến trình có PID %d. Thao tác chưa được cài đặt." #. translators: this string is a name for the 'less' command #: gtk/gtkmountoperation-x11.c:862 @@ -1391,9 +1387,9 @@ msgid "Z Shell" msgstr "Z Shell" #: gtk/gtkmountoperation-x11.c:963 -#, fuzzy, c-format +#, c-format msgid "Cannot end process with PID %d: %s" -msgstr "Không thể chấm dứt tiến trình có pid %d: %s" +msgstr "Không thể chấm dứt tiến trình có PID %d: %s" #: gtk/gtknotebook.c:4619 gtk/gtknotebook.c:7170 #, c-format @@ -1468,9 +1464,8 @@ msgid "Not available" msgstr "Không sẵn sàng" #: gtk/gtkprinteroptionwidget.c:794 -#, fuzzy msgid "Select a folder" -msgstr "Chọn tập tin" +msgstr "Chọn thư mục" #: gtk/gtkprinteroptionwidget.c:813 msgid "_Save in folder:" @@ -1687,7 +1682,7 @@ msgstr "Đố_i chiếu" #: gtk/gtkprintunixdialog.c:2271 msgid "_Reverse" -msgstr "Để ngu_yên" +msgstr "Đả_o" #: gtk/gtkprintunixdialog.c:2291 msgid "General" @@ -2109,7 +2104,6 @@ msgid "_Cancel" msgstr "_Thôi" #: gtk/gtkstock.c:326 -#, fuzzy msgctxt "Stock label" msgid "_CD-ROM" msgstr "_CD-ROM" @@ -2170,7 +2164,6 @@ msgid "_Edit" msgstr "_Sửa" #: gtk/gtkstock.c:338 -#, fuzzy msgctxt "Stock label" msgid "_File" msgstr "_Tập tin" @@ -2249,7 +2242,6 @@ msgid "_Up" msgstr "_Lên" #: gtk/gtkstock.c:360 -#, fuzzy msgctxt "Stock label" msgid "_Hard Disk" msgstr "Đĩa _cứng" @@ -2587,9 +2579,9 @@ msgid "The attribute \"%s\" was found twice on the <%s> element" msgstr "Tìm thuộc tính « %s » hai lần trên yếu tố <%s>" #: gtk/gtktextbufferserialize.c:845 -#, fuzzy, c-format +#, c-format msgid "<%s> element has invalid ID \"%s\"" -msgstr "Yếu tố <%s> có mã nhận diện không hợp lệ « %s »" +msgstr "Yếu tố <%s> có ID không hợp lệ « %s »" #: gtk/gtktextbufferserialize.c:855 #, c-format @@ -2690,39 +2682,39 @@ msgstr "" #: gtk/gtktextutil.c:60 msgid "LRM _Left-to-right mark" -msgstr "_LRM dấu trái-sang-phải" +msgstr "_LRM Đánh dấu Trái-sang-phải" #: gtk/gtktextutil.c:61 msgid "RLM _Right-to-left mark" -msgstr "_RLM dấu phải-sang-trái" +msgstr "_RLM Đánh dấu Phải-sang-trái" #: gtk/gtktextutil.c:62 msgid "LRE Left-to-right _embedding" -msgstr "LR_E nhúng trái-sang-phải" +msgstr "LRE _Nhúng Trái-sang-phải" #: gtk/gtktextutil.c:63 msgid "RLE Right-to-left e_mbedding" -msgstr "RLE _nhúng phải-sang-trái" +msgstr "RLE N_húng Phải-sang-trái" #: gtk/gtktextutil.c:64 msgid "LRO Left-to-right _override" -msgstr "LR_O đè trái-sang-phải" +msgstr "_LRO Đè Trái-sang-phải" #: gtk/gtktextutil.c:65 msgid "RLO Right-to-left o_verride" -msgstr "RLO đè phải-s_ang-trái" +msgstr "RLO Đè _Phải-sang-trái" #: gtk/gtktextutil.c:66 msgid "PDF _Pop directional formatting" -msgstr "_PDF dạng thức định hướng Pop" +msgstr "PDF dạng thức định hướng Pop" #: gtk/gtktextutil.c:67 msgid "ZWS _Zero width space" -msgstr "_ZWS Dấu cách có độ dài bằng không" +msgstr "ZWS Dấu _cách có độ dài bằng không" #: gtk/gtktextutil.c:68 msgid "ZWJ Zero width _joiner" -msgstr "ZW_J Bộ nối kết có độ dài bằng không" +msgstr "ZWJ Bộ _nối kết có độ dài bằng không" #: gtk/gtktextutil.c:69 msgid "ZWNJ Zero width _non-joiner" @@ -2732,18 +2724,18 @@ msgstr "ZW_NJ Bộ không nối kết có độ dài bằng không" #, c-format msgid "Unable to locate theme engine in module_path: \"%s\"," msgstr "" -"Không thể định vị cơ chế sắc thái tại « module_path » (đường dẫn mô-đun): « " -"%s »," +"Không thể định vị cơ chế sắc thái tại « module_path » (đường dẫn mô-đun): « %s " +"»," #: gtk/gtkuimanager.c:1505 #, c-format msgid "Unexpected start tag '%s' on line %d char %d" -msgstr "Gặp thẻ đầu bất ngờ « %s » trên dòng %d ký tự %d" +msgstr "Gặp thẻ đầu bất thường « %s » trên dòng %d ký tự %d" #: gtk/gtkuimanager.c:1595 #, c-format msgid "Unexpected character data on line %d char %d" -msgstr "Gặp dữ liệu ký tự bất ngờ trên dòng %d ký tự %d" +msgstr "Gặp dữ liệu ký tự bất thường trên dòng %d ký tự %d" #: gtk/gtkuimanager.c:2427 msgid "Empty" @@ -3914,9 +3906,9 @@ msgid "Printer '%s' is out of paper." msgstr "Máy in « %s » cạn giấy." #: modules/printbackends/cups/gtkprintbackendcups.c:1686 -#, fuzzy, c-format +#, c-format msgid "Printer '%s' is currently offline." -msgstr "Máy in « %s » hiện thời ngoại tuyến." +msgstr "Máy in '%s' hiện thời ngoại tuyến." #: modules/printbackends/cups/gtkprintbackendcups.c:1687 #, c-format @@ -4216,13 +4208,50 @@ msgstr "Không thể lấy thông tin cho tập tin « %s »: %s" #: tests/testfilechooser.c:222 #, c-format msgid "Failed to open file '%s': %s" -msgstr "Lỗi mở tập tin « %s »': %s" +msgstr "Không mở được tập tin « %s »: %s" #: tests/testfilechooser.c:267 #, c-format msgid "" "Failed to load image '%s': reason not known, probably a corrupt image file" -msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập tin ảnh bị hỏng" +msgstr "" +"Lỗi tải tập tin ảnh « %s »: không biết lý do, có lẽ tập tin ảnh bị hỏng." + +msgid "Color profile has invalid length %d." +msgstr "Hồ sơ màu sắc có chiều dài sai %d." + +msgid "Input file descriptor is NULL." +msgstr "Tập tin đầu vào có bộ mô tả VÔ GIÁ TRỊ." + +msgid "Failed to read QTIF header" +msgstr "Lỗi đọc phần đầu QTIF" + +msgid "QTIF atom size too large (%d bytes)" +msgstr "Atom QTIF có kích cỡ quá lớn (%d byte)" + +msgid "Failed to allocate %d bytes for file read buffer" +msgstr "Lỗi cấp phát %d byte cho vùng đệm đọc tập tin" + +msgid "File error when reading QTIF atom: %s" +msgstr "Gặp lỗi tập tin khi đọc atom QTIF: %s" + +msgid "Failed to skip the next %d bytes with seek()." +msgstr "Không nhảy được qua %d byte kế tiếp dùng seek()." + +msgid "Failed to allocate QTIF context structure." +msgstr "Không cấp phát được cấu trúc ngữ cảnh QTIF." + +msgid "Failed to create GdkPixbufLoader object." +msgstr "Không tạo được đối tượng kiểu GdkPixbufLoader (nạp vùng đệm điểm ảnh)." + +msgid "Failed to find an image data atom." +msgstr "Không tìm thấy được một atom kiểu dữ liệu ảnh." + +msgid "The QTIF image format" +msgstr "Định dạng ảnh QTIF" + +msgid "Image is corrupted or truncated" +msgstr "Ảnh bị cắt bớt hoặc bị hỏng" #~ msgid "Gdk debugging flags to set" #~ msgstr "Những cờ gỡ lỗi Gdk cần đặt" @@ -4312,10 +4341,9 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgid "Image pixel data corrupt" #~ msgstr "Dữ liệu điểm ảnh của ảnh bị hỏng" -#, fuzzy #~ msgid "failed to allocate image buffer of %u byte" #~ msgid_plural "failed to allocate image buffer of %u bytes" -#~ msgstr[0] "Lỗi cấp phát %d byte cho vùng đệm đọc tập tin" +#~ msgstr[0] "lỗi cấp phát bộ đệm ảnh có kích thước %u byte" #~ msgid "Unexpected icon chunk in animation" #~ msgstr "Gặp đoạn biểu tượng bất thường trong hoạt cảnh" @@ -4586,9 +4614,6 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgid "Keys for PNG text chunks must be ASCII characters." #~ msgstr "Các khóa cho các đoạn PNG text phải là ký tự ASCII." -#~ msgid "Color profile has invalid length %d." -#~ msgstr "Hồ sơ màu sắc có chiều dài sai %d." - #~ msgid "" #~ "PNG compression level must be a value between 0 and 9; value '%s' could " #~ "not be parsed." @@ -4657,37 +4682,6 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgid "The PNM/PBM/PGM/PPM image format family" #~ msgstr "Họ dạng thức ảnh PNM/PBM/PGM/PPM" -#~ msgid "Input file descriptor is NULL." -#~ msgstr "Tập tin đầu vào có bộ mô tả VÔ GIÁ TRỊ." - -#~ msgid "Failed to read QTIF header" -#~ msgstr "Lỗi đọc phần đầu QTIF" - -#~ msgid "QTIF atom size too large (%d bytes)" -#~ msgstr "Atom QTIF có kích cỡ quá lớn (%d byte)" - -#~ msgid "Failed to allocate %d bytes for file read buffer" -#~ msgstr "Lỗi cấp phát %d byte cho vùng đệm đọc tập tin" - -#~ msgid "File error when reading QTIF atom: %s" -#~ msgstr "Gặp lỗi tập tin khi đọc atom QTIF: %s" - -#~ msgid "Failed to skip the next %d bytes with seek()." -#~ msgstr "Không nhảy được qua %d byte kế tiếp dùng seek()." - -#~ msgid "Failed to allocate QTIF context structure." -#~ msgstr "Không cấp phát được cấu trúc ngữ cảnh QTIF." - -#~ msgid "Failed to create GdkPixbufLoader object." -#~ msgstr "" -#~ "Không tạo được đối tượng kiểu GdkPixbufLoader (nạp vùng đệm điểm ảnh)." - -#~ msgid "Failed to find an image data atom." -#~ msgstr "Không tìm thấy được một atom kiểu dữ liệu ảnh." - -#~ msgid "The QTIF image format" -#~ msgstr "Định dạng ảnh QTIF" - #~ msgid "RAS image has bogus header data" #~ msgstr "Ảnh RAS có dữ liệu phần đầu giả" @@ -4719,9 +4713,6 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgid "Cannot allocate new pixbuf" #~ msgstr "Không thể cấp phát bộ đệm điểm ảnh mới" -#~ msgid "Image is corrupted or truncated" -#~ msgstr "Ảnh bị cắt bớt hoặc bị hỏng" - #~ msgid "Cannot allocate colormap structure" #~ msgstr "Không thể cấp phát cấu trúc bản đồ màu sắc" @@ -4912,7 +4903,7 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgstr "_Xóa bỏ tập tin" #~ msgid "_Rename File" -#~ msgstr "Th_ay tên tập tin" +#~ msgstr "Đổ_i tên tập tin" #~ msgid "" #~ "The folder name \"%s\" contains symbols that are not allowed in filenames" @@ -4957,7 +4948,7 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgstr "Đổi tên tập tin « %s » thành:" #~ msgid "_Rename" -#~ msgstr "Th_ay tên" +#~ msgstr "Đổ_i tên" #~ msgid "_Selection: " #~ msgstr "_Vùng chọn: " @@ -4989,7 +4980,7 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgstr "Nhập" #~ msgid "No extended input devices" -#~ msgstr "Không có thiết bị gõ mở rộng nào" +#~ msgstr "Không có thiết bị nhập đã mở rộng nào" #~ msgid "_Device:" #~ msgstr "Thiết _bị:" @@ -5044,3 +5035,54 @@ msgstr "Lỗi tải tập tin ảnh « %s »: không biết sao, có lẽ tập #~ msgid "--- No Tip ---" #~ msgstr "--- Không có mẹo ---" + +#~ msgid "Color profile has invalid length '%" +#~ msgstr "Hồ sơ màu có độ dài không hợp lệ '%" + +#~ msgid "Color profile has invalid length '%d'." +#~ msgstr "Hồ sơ màu có độ dài không hợp lệ '%d'." + +#~ msgid "Duplicate object id '%s' on line %d (previously on line %d)" +#~ msgstr "Trùng ID đối tượng '%s' trên dòng %d (trùng với trên dòng %d)" + +#~ msgid "_Files" +#~ msgstr "_Tập tin" + +#~ msgid "Unknown Application (pid %d)" +#~ msgstr "Ứng dụng lạ (pid %d)" + +#~ msgid "Cannot kill process with pid %d. Operation is not implemented." +#~ msgstr "" +#~ "Không thể buộc chấm dứt tiến trình có pid %d. Thao tác chưa được cài đặt." + +#~ msgid "Cannot end process with pid %d: %s" +#~ msgstr "Không thể chấm dứt tiến trình có pid %d: %s" + +#~ msgctxt "Stock label" +#~ msgid "_CD-Rom" +#~ msgstr "_CD-ROM" + +#~ msgctxt "Stock label" +#~ msgid "_Harddisk" +#~ msgstr "Đĩa _cứng" + +#~ msgid "<%s> element has invalid id \"%s\"" +#~ msgstr "Yếu tố <%s> có mã nhận diện không hợp lệ « %s »" + +#~ msgid "Printer '%s' is currently off-line." +#~ msgstr "Máy in « %s » hiện thời ngoại tuyến." + +#~ msgid "(Empty)" +#~ msgstr "(Rỗng)" + +#~ msgid "_Search:" +#~ msgstr "Tìm _kiếm:" + +#~ msgid "Recently Used" +#~ msgstr "Vừa dùng" + +#~ msgid "directfb arg" +#~ msgstr "directfb arg" + +#~ msgid "sdl|system" +#~ msgstr "sdl|system" diff --git a/tests/Makefile.am b/tests/Makefile.am index 50e3a3167f..5364298800 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -11,14 +11,13 @@ INCLUDES = \ $(GTK_DEP_CFLAGS) \ $(GDK_DEP_CFLAGS) -DEPS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) +DEPS = \ + $(top_builddir)/gtk/libgtk-3.0.la -LDADDS = \ - $(top_builddir)/gdk/$(gdktargetlib) \ - $(top_builddir)/gtk/$(gtktargetlib) \ - $(GTK_DEP_LIBS) \ +LDADDS = \ + $(top_builddir)/gtk/libgtk-3.0.la \ + $(top_builddir)/gdk/libgdk-3.0.la \ + $(GTK_DEP_LIBS) \ -lm if USE_X11 @@ -64,6 +63,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testmultidisplay \ testmultiscreen \ testnotebookdnd \ + testnumerableicon \ testnouiprint \ testoffscreen \ testoffscreenwindow \ @@ -87,6 +87,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testtreecolumns \ testtreecolumnsizing \ testtreesort \ + testverticalcells \ treestoretest \ testxinerama \ testwindows \ @@ -99,7 +100,11 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testvolumebutton \ testscrolledwindow \ testswitch \ - styleexamples + testcellarea \ + testswitch \ + styleexamples \ + testtreemenu \ + testtoplevelembed if USE_X11 noinst_PROGRAMS += testerrors @@ -155,6 +160,7 @@ testmultidisplay_DEPENDENCIES = $(TEST_DEPS) testmultiscreen_DEPENDENCIES = $(TEST_DEPS) testnotebookdnd_DEPENDENCIES = $(TEST_DEPS) testnouiprint_DEPENDENCIES = $(TEST_DEPS) +testnumerableicon_DEPENDENCIES = $(TEST_DEPS) testoffscreen_DEPENDENCIES = $(TEST_DEPS) testoffscreenwindow_DEPENDENCIES = $(TEST_DEPS) testappchooser_DEPENDENCIES = $(TEST_DEPS) @@ -178,6 +184,7 @@ testtreeflow_DEPENDENCIES = $(DEPS) testtreecolumns_DEPENDENCIES = $(DEPS) testtreecolumnsizing_DEPENDENCIES = $(DEPS) testtreesort_DEPENDENCIES = $(DEPS) +testverticalcells_DEPENDENCIES = $(DEPS) treestoretest_DEPENDENCIES = $(TEST_DEPS) testxinerama_DEPENDENCIES = $(TEST_DEPS) testmerge_DEPENDENCIES = $(TEST_DEPS) @@ -186,11 +193,14 @@ testgrouping_DEPENDENCIES = $(TEST_DEPS) testtooltips_DEPENDENCIES = $(TEST_DEPS) testvolumebutton_DEPENDENCIES = $(TEST_DEPS) testscrolledwindow_DEPENDENCIES = $(TEST_DEPS) +testcellarea_DEPENDENCIES = $(TEST_DEPS) +testtreemenu_DEPENDENCIES = $(TEST_DEPS) testwindows_DEPENDENCIES = $(TEST_DEPS) testexpand_DEPENDENCIES = $(TEST_DEPS) testexpander_DEPENDENCIES = $(TEST_DEPS) testswitch_DEPENDENCIES = $(TEST_DEPS) styleexamples_DEPENDENCIES = $(TEST_DEPS) +testtoplevelembed_DEPENDENCIES = $(TEST_DEPS) flicker_LDADD = $(LDADDS) simple_LDADD = $(LDADDS) @@ -230,6 +240,7 @@ testmultidisplay_LDADD = $(LDADDS) testmultiscreen_LDADD = $(LDADDS) testnotebookdnd_LDADD = $(LDADDS) testnouiprint_LDADD = $(LDADDS) +testnumerableicon_LDADD = $(LDADDS) testoffscreen_LDADD = $(LDADDS) testoffscreenwindow_LDADD = $(LDADDS) testappchooser_LDADD = $(LDADDS) @@ -255,6 +266,7 @@ testtreeflow_LDADD = $(LDADDS) testtreecolumns_LDADD = $(LDADDS) testtreecolumnsizing_LDADD = $(LDADDS) testtreesort_LDADD = $(LDADDS) +testverticalcells_LDADD = $(LDADDS) treestoretest_LDADD = $(LDADDS) testxinerama_LDADD = $(LDADDS) testmerge_LDADD = $(LDADDS) @@ -263,11 +275,14 @@ testgrouping_LDADD = $(LDADDS) testtooltips_LDADD = $(LDADDS) testvolumebutton_LDADD = $(LDADDS) testscrolledwindow_LDADD = $(LDADDS) +testcellarea_LDADD = $(LDADDS) +testtreemenu_LDADD = $(LDADDS) testwindows_LDADD = $(LDADDS) testexpand_LDADD = $(LDADDS) testexpander_LDADD = $(LDADDS) testswitch_LDADD = $(LDADDS) styleexamples_LDADD = $(LDADDS) +testtoplevelembed_LDADD = $(LDADDS) testentrycompletion_SOURCES = \ prop-editor.c \ @@ -354,6 +369,10 @@ testiconview_SOURCES = \ testiconview_keynav_SOURCES = \ testiconview-keynav.c +testnumerableicon_SOURCES = \ + testnumerableicon.c \ + prop-editor.c + testrecentchooser_SOURCES = \ prop-editor.c \ testrecentchooser.c @@ -373,6 +392,14 @@ testvolumebutton_SOURCES = \ testscrolledwindow_SOURCES = \ testscrolledwindow.c +testcellarea_SOURCES = \ + testcellarea.c \ + cellareascaffold.c \ + cellareascaffold.h + +testtreemenu_SOURCES = \ + testtreemenu.c + testoffscreen_SOURCES = \ gtkoffscreenbox.c \ gtkoffscreenbox.h \ @@ -395,9 +422,13 @@ testexpand_SOURCES = testexpand.c testexpander_SOURCES = testexpander.c testswitch_SOURCES = testswitch.c + styleexamples_SOURCES = styleexamples.c +testtoplevelembed_SOURCES = testtoplevelembed.c + EXTRA_DIST += \ + gradient1.png \ prop-editor.h \ testgtk.1 \ testgtk.css \ diff --git a/tests/cellareascaffold.c b/tests/cellareascaffold.c new file mode 100644 index 0000000000..ddd5f2a7c9 --- /dev/null +++ b/tests/cellareascaffold.c @@ -0,0 +1,1138 @@ +/* cellareascaffold.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include "cellareascaffold.h" + +/* GObjectClass */ +static void cell_area_scaffold_finalize (GObject *object); +static void cell_area_scaffold_dispose (GObject *object); + +/* GtkWidgetClass */ +static void cell_area_scaffold_realize (GtkWidget *widget); +static void cell_area_scaffold_unrealize (GtkWidget *widget); +static gboolean cell_area_scaffold_draw (GtkWidget *widget, + cairo_t *cr); +static void cell_area_scaffold_size_allocate (GtkWidget *widget, + GtkAllocation *allocation); +static void cell_area_scaffold_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); +static void cell_area_scaffold_get_preferred_height_for_width (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size); +static void cell_area_scaffold_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size); +static void cell_area_scaffold_get_preferred_width_for_height (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size); +static void cell_area_scaffold_map (GtkWidget *widget); +static void cell_area_scaffold_unmap (GtkWidget *widget); +static gint cell_area_scaffold_focus (GtkWidget *widget, + GtkDirectionType direction); +static gboolean cell_area_scaffold_button_press (GtkWidget *widget, + GdkEventButton *event); + +/* GtkContainerClass */ +static void cell_area_scaffold_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data); +static void cell_area_scaffold_remove (GtkContainer *container, + GtkWidget *child); +static void cell_area_scaffold_put_edit_widget (CellAreaScaffold *scaffold, + GtkWidget *edit_widget, + gint x, + gint y, + gint width, + gint height); + +/* CellAreaScaffoldClass */ +static void cell_area_scaffold_activate (CellAreaScaffold *scaffold); + +/* CellArea/GtkTreeModel callbacks */ +static void size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + CellAreaScaffold *scaffold); +static void focus_changed_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *path, + CellAreaScaffold *scaffold); +static void add_editable_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + GdkRectangle *cell_area, + const gchar *path, + CellAreaScaffold *scaffold); +static void remove_editable_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + CellAreaScaffold *scaffold); +static void row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + CellAreaScaffold *scaffold); +static void row_inserted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + CellAreaScaffold *scaffold); +static void row_deleted_cb (GtkTreeModel *model, + GtkTreePath *path, + CellAreaScaffold *scaffold); +static void rows_reordered_cb (GtkTreeModel *model, + GtkTreePath *parent, + GtkTreeIter *iter, + gint *new_order, + CellAreaScaffold *scaffold); + +typedef struct { + gint size; /* The height of rows in the scaffold's */ +} RowData; + +struct _CellAreaScaffoldPrivate { + + /* Window for catching events and dispatching them to the cell area */ + GdkWindow *event_window; + + /* The model we're showing data for */ + GtkTreeModel *model; + gulong row_changed_id; + gulong row_inserted_id; + gulong row_deleted_id; + gulong rows_reordered_id; + + /* The area rendering the data and a global context */ + GtkCellArea *area; + GtkCellAreaContext *context; + + /* Cache some info about rows (hieghts etc) */ + GArray *row_data; + + /* Focus handling */ + gint focus_row; + gulong focus_changed_id; + + /* Check when the underlying area changes the size and + * we need to queue a redraw */ + gulong size_changed_id; + + /* Currently edited widget */ + GtkWidget *edit_widget; + GdkRectangle edit_rect; + gulong add_editable_id; + gulong remove_editable_id; + + + gint row_spacing; + gint indent; +}; + +enum { + ACTIVATE, + N_SIGNALS +}; + +static guint scaffold_signals[N_SIGNALS] = { 0 }; + +#define DIRECTION_STR(dir) \ + ((dir) == GTK_DIR_TAB_FORWARD ? "tab forward" : \ + (dir) == GTK_DIR_TAB_BACKWARD ? "tab backward" : \ + (dir) == GTK_DIR_UP ? "up" : \ + (dir) == GTK_DIR_DOWN ? "down" : \ + (dir) == GTK_DIR_LEFT ? "left" : \ + (dir) == GTK_DIR_RIGHT ? "right" : "invalid") + +G_DEFINE_TYPE_WITH_CODE (CellAreaScaffold, cell_area_scaffold, GTK_TYPE_CONTAINER, + G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL)); + + +static void +cell_area_scaffold_init (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv; + + scaffold->priv = G_TYPE_INSTANCE_GET_PRIVATE (scaffold, + TYPE_CELL_AREA_SCAFFOLD, + CellAreaScaffoldPrivate); + priv = scaffold->priv; + + priv->area = gtk_cell_area_box_new (); + priv->context = gtk_cell_area_create_context (priv->area); + + priv->row_data = g_array_new (FALSE, FALSE, sizeof (RowData)); + + gtk_widget_set_has_window (GTK_WIDGET (scaffold), FALSE); + gtk_widget_set_can_focus (GTK_WIDGET (scaffold), TRUE); + + priv->size_changed_id = + g_signal_connect (priv->context, "notify", + G_CALLBACK (size_changed_cb), scaffold); + + priv->focus_changed_id = + g_signal_connect (priv->area, "focus-changed", + G_CALLBACK (focus_changed_cb), scaffold); + + priv->add_editable_id = + g_signal_connect (priv->area, "add-editable", + G_CALLBACK (add_editable_cb), scaffold); + + priv->remove_editable_id = + g_signal_connect (priv->area, "remove-editable", + G_CALLBACK (remove_editable_cb), scaffold); +} + +static void +cell_area_scaffold_class_init (CellAreaScaffoldClass *class) +{ + GObjectClass *gobject_class; + GtkWidgetClass *widget_class; + GtkContainerClass *container_class; + + gobject_class = G_OBJECT_CLASS (class); + gobject_class->dispose = cell_area_scaffold_dispose; + gobject_class->finalize = cell_area_scaffold_finalize; + + widget_class = GTK_WIDGET_CLASS (class); + widget_class->realize = cell_area_scaffold_realize; + widget_class->unrealize = cell_area_scaffold_unrealize; + widget_class->draw = cell_area_scaffold_draw; + widget_class->size_allocate = cell_area_scaffold_size_allocate; + widget_class->get_preferred_width = cell_area_scaffold_get_preferred_width; + widget_class->get_preferred_height_for_width = cell_area_scaffold_get_preferred_height_for_width; + widget_class->get_preferred_height = cell_area_scaffold_get_preferred_height; + widget_class->get_preferred_width_for_height = cell_area_scaffold_get_preferred_width_for_height; + widget_class->map = cell_area_scaffold_map; + widget_class->unmap = cell_area_scaffold_unmap; + widget_class->focus = cell_area_scaffold_focus; + widget_class->button_press_event = cell_area_scaffold_button_press; + + container_class = GTK_CONTAINER_CLASS (class); + container_class->forall = cell_area_scaffold_forall; + container_class->remove = cell_area_scaffold_remove; + + class->activate = cell_area_scaffold_activate; + + scaffold_signals[ACTIVATE] = + g_signal_new ("activate", + G_OBJECT_CLASS_TYPE (gobject_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (CellAreaScaffoldClass, activate), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + widget_class->activate_signal = scaffold_signals[ACTIVATE]; + + + g_type_class_add_private (gobject_class, sizeof (CellAreaScaffoldPrivate)); +} + +/********************************************************* + * GObjectClass * + *********************************************************/ +static void +cell_area_scaffold_finalize (GObject *object) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (object); + CellAreaScaffoldPrivate *priv; + + priv = scaffold->priv; + + g_array_free (priv->row_data, TRUE); + + G_OBJECT_CLASS (cell_area_scaffold_parent_class)->finalize (object); +} + +static void +cell_area_scaffold_dispose (GObject *object) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (object); + CellAreaScaffoldPrivate *priv; + + priv = scaffold->priv; + + cell_area_scaffold_set_model (scaffold, NULL); + + if (priv->context) + { + /* Disconnect signals */ + g_signal_handler_disconnect (priv->context, priv->size_changed_id); + + g_object_unref (priv->context); + priv->context = NULL; + priv->size_changed_id = 0; + } + + if (priv->area) + { + /* Disconnect signals */ + g_signal_handler_disconnect (priv->area, priv->focus_changed_id); + g_signal_handler_disconnect (priv->area, priv->add_editable_id); + g_signal_handler_disconnect (priv->area, priv->remove_editable_id); + + g_object_unref (priv->area); + priv->area = NULL; + priv->focus_changed_id = 0; + } + + G_OBJECT_CLASS (cell_area_scaffold_parent_class)->dispose (object); +} + +/********************************************************* + * GtkWidgetClass * + *********************************************************/ +static void +cell_area_scaffold_realize (GtkWidget *widget) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkAllocation allocation; + GdkWindow *window; + GdkWindowAttr attributes; + gint attributes_mask; + + gtk_widget_get_allocation (widget, &allocation); + + gtk_widget_set_realized (widget, TRUE); + + attributes.window_type = GDK_WINDOW_CHILD; + attributes.x = allocation.x; + attributes.y = allocation.y; + attributes.width = allocation.width; + attributes.height = allocation.height; + attributes.wclass = GDK_INPUT_ONLY; + attributes.event_mask = gtk_widget_get_events (widget); + attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_KEY_PRESS_MASK | + GDK_KEY_RELEASE_MASK); + + attributes_mask = GDK_WA_X | GDK_WA_Y; + + window = gtk_widget_get_parent_window (widget); + gtk_widget_set_window (widget, window); + g_object_ref (window); + + priv->event_window = gdk_window_new (window, &attributes, attributes_mask); + gdk_window_set_user_data (priv->event_window, widget); +} + +static void +cell_area_scaffold_unrealize (GtkWidget *widget) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + if (priv->event_window) + { + gdk_window_set_user_data (priv->event_window, NULL); + gdk_window_destroy (priv->event_window); + priv->event_window = NULL; + } + + GTK_WIDGET_CLASS (cell_area_scaffold_parent_class)->unrealize (widget); +} + +static gboolean +cell_area_scaffold_draw (GtkWidget *widget, + cairo_t *cr) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkTreeIter iter; + gboolean valid; + GdkRectangle background_area; + GdkRectangle render_area; + GtkAllocation allocation; + gint i = 0; + gboolean have_focus; + GtkCellRendererState flags; + + if (!priv->model) + return FALSE; + + have_focus = gtk_widget_has_focus (widget); + + gtk_widget_get_allocation (widget, &allocation); + + render_area.x = 0; + render_area.y = 0; + render_area.width = allocation.width; + render_area.height = allocation.height; + + background_area = render_area; + + render_area.x = priv->indent; + render_area.width -= priv->indent; + + valid = gtk_tree_model_get_iter_first (priv->model, &iter); + while (valid) + { + RowData *data = &g_array_index (priv->row_data, RowData, i); + + if (have_focus && i == priv->focus_row) + flags = GTK_CELL_RENDERER_FOCUSED; + else + flags = 0; + + render_area.height = data->size; + + background_area.height = render_area.height; + background_area.y = render_area.y; + + if (i == 0) + { + background_area.height += priv->row_spacing / 2; + background_area.height += priv->row_spacing % 2; + } + else if (i == priv->row_data->len - 1) + { + background_area.y -= priv->row_spacing / 2; + background_area.height += priv->row_spacing / 2; + } + else + { + background_area.y -= priv->row_spacing / 2; + background_area.height += priv->row_spacing; + } + + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + gtk_cell_area_render (priv->area, priv->context, widget, cr, + &background_area, &render_area, flags, + (have_focus && i == priv->focus_row)); + + render_area.y += data->size; + render_area.y += priv->row_spacing; + + i++; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } + + /* Draw the edit widget after drawing everything else */ + GTK_WIDGET_CLASS (cell_area_scaffold_parent_class)->draw (widget, cr); + + return FALSE; +} + +static void +request_all_base (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkWidget *widget = GTK_WIDGET (scaffold); + GtkTreeIter iter; + gboolean valid; + + if (!priv->model) + return; + + g_signal_handler_block (priv->context, priv->size_changed_id); + + valid = gtk_tree_model_get_iter_first (priv->model, &iter); + while (valid) + { + gint min, nat; + + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + gtk_cell_area_get_preferred_width (priv->area, priv->context, widget, &min, &nat); + + valid = gtk_tree_model_iter_next (priv->model, &iter); + } + + g_signal_handler_unblock (priv->context, priv->size_changed_id); +} + +static void +get_row_sizes (CellAreaScaffold *scaffold, + GArray *array, + gint for_size) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkWidget *widget = GTK_WIDGET (scaffold); + GtkTreeIter iter; + gboolean valid; + gint i = 0; + + if (!priv->model) + return; + + valid = gtk_tree_model_get_iter_first (priv->model, &iter); + while (valid) + { + RowData *data = &g_array_index (array, RowData, i); + + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + gtk_cell_area_get_preferred_height_for_width (priv->area, priv->context, widget, + for_size, &data->size, NULL); + + i++; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } +} + +static void +cell_area_scaffold_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + gtk_widget_set_allocation (widget, allocation); + + if (gtk_widget_get_realized (widget)) + gdk_window_move_resize (priv->event_window, + allocation->x, + allocation->y, + allocation->width, + allocation->height); + + /* Allocate the child GtkCellEditable widget if one is currently editing a row */ + if (priv->edit_widget) + gtk_widget_size_allocate (priv->edit_widget, &priv->edit_rect); + + if (!priv->model) + return; + + /* Cache the per-row sizes and allocate the context */ + gtk_cell_area_context_allocate (priv->context, allocation->width - priv->indent, -1); + get_row_sizes (scaffold, priv->row_data, allocation->width - priv->indent); +} + + +static void +cell_area_scaffold_get_preferred_width (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + if (!priv->model) + return; + + request_all_base (scaffold); + gtk_cell_area_context_get_preferred_width (priv->context, minimum_size, natural_size); + + *minimum_size += priv->indent; + *natural_size += priv->indent; +} + +static void +cell_area_scaffold_get_preferred_height_for_width (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + GArray *request_array; + gint n_rows, i, full_size = 0; + + if (!priv->model) + return; + + n_rows = gtk_tree_model_iter_n_children (priv->model, NULL); + + /* Get an array for the contextual request */ + request_array = g_array_new (FALSE, FALSE, sizeof (RowData)); + g_array_set_size (request_array, n_rows); + memset (request_array->data, 0x0, n_rows * sizeof (RowData)); + + /* Gather each contextual size into the request array */ + get_row_sizes (scaffold, request_array, for_size - priv->indent); + + /* Sum up the size and add some row spacing */ + for (i = 0; i < n_rows; i++) + { + RowData *data = &g_array_index (request_array, RowData, i); + + full_size += data->size; + } + + full_size += MAX (0, n_rows -1) * priv->row_spacing; + + g_array_free (request_array, TRUE); + + *minimum_size = full_size; + *natural_size = full_size; +} + +static void +cell_area_scaffold_get_preferred_height (GtkWidget *widget, + gint *minimum_size, + gint *natural_size) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + gint min_size, nat_size; + + if (!priv->model) + return; + + GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, &min_size, &nat_size); + GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width (widget, min_size, + minimum_size, natural_size); +} + +static void +cell_area_scaffold_get_preferred_width_for_height (GtkWidget *widget, + gint for_size, + gint *minimum_size, + gint *natural_size) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + if (!priv->model) + return; + + GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget, minimum_size, natural_size); +} + +static void +cell_area_scaffold_map (GtkWidget *widget) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + GTK_WIDGET_CLASS (cell_area_scaffold_parent_class)->map (widget); + + if (priv->event_window) + gdk_window_show (priv->event_window); +} + +static void +cell_area_scaffold_unmap (GtkWidget *widget) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + GTK_WIDGET_CLASS (cell_area_scaffold_parent_class)->unmap (widget); + + if (priv->event_window) + gdk_window_hide (priv->event_window); +} + + +static gint +cell_area_scaffold_focus (GtkWidget *widget, + GtkDirectionType direction) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkTreeIter iter; + gboolean valid; + gint focus_row; + gboolean changed = FALSE; + + /* Grab focus on ourself if we dont already have focus */ + if (!gtk_widget_has_focus (widget)) + gtk_widget_grab_focus (widget); + + /* Move focus from cell to cell and row to row */ + focus_row = priv->focus_row; + + g_signal_handler_block (priv->area, priv->focus_changed_id); + + valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, priv->focus_row); + while (valid) + { + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + + /* If focus stays in the area we dont need to do any more */ + if (gtk_cell_area_focus (priv->area, direction)) + { + priv->focus_row = focus_row; + + /* XXX A smarter implementation would only invalidate the rectangles where + * focus was removed from and new focus was placed */ + gtk_widget_queue_draw (widget); + changed = TRUE; + break; + } + else + { + if (direction == GTK_DIR_RIGHT || + direction == GTK_DIR_LEFT) + break; + else if (direction == GTK_DIR_UP || + direction == GTK_DIR_TAB_BACKWARD) + { + if (focus_row == 0) + break; + else + { + /* XXX A real implementation should check if the + * previous row can focus with it's attributes setup */ + focus_row--; + valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, focus_row); + } + } + else /* direction == GTK_DIR_DOWN || GTK_DIR_TAB_FORWARD */ + { + if (focus_row == priv->row_data->len - 1) + break; + else + { + /* XXX A real implementation should check if the + * previous row can focus with it's attributes setup */ + focus_row++; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } + } + } + } + + g_signal_handler_unblock (priv->area, priv->focus_changed_id); + + /* XXX A smarter implementation would only invalidate the rectangles where + * focus was removed from and new focus was placed */ + gtk_widget_queue_draw (widget); + + return changed; +} + +static gboolean +cell_area_scaffold_button_press (GtkWidget *widget, + GdkEventButton *event) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (widget); + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkTreeIter iter; + gboolean valid; + gint i = 0; + GdkRectangle event_area; + GtkAllocation allocation; + gboolean handled = FALSE; + + gtk_widget_get_allocation (widget, &allocation); + + event_area.x = 0; + event_area.y = 0; + event_area.width = allocation.width; + event_area.height = allocation.height; + + event_area.x = priv->indent; + event_area.width -= priv->indent; + + valid = gtk_tree_model_get_iter_first (priv->model, &iter); + while (valid) + { + RowData *data = &g_array_index (priv->row_data, RowData, i); + + event_area.height = data->size; + + if (event->y >= event_area.y && + event->y <= event_area.y + event_area.height) + { + /* XXX A real implementation would assemble GtkCellRendererState flags here */ + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + handled = gtk_cell_area_event (priv->area, priv->context, GTK_WIDGET (scaffold), + (GdkEvent *)event, &event_area, 0); + break; + } + + event_area.y += data->size; + event_area.y += priv->row_spacing; + + i++; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } + + return handled; +} + + +/********************************************************* + * GtkContainerClass * + *********************************************************/ +static void +cell_area_scaffold_put_edit_widget (CellAreaScaffold *scaffold, + GtkWidget *edit_widget, + gint x, + gint y, + gint width, + gint height) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + + priv->edit_rect.x = x; + priv->edit_rect.y = y; + priv->edit_rect.width = width; + priv->edit_rect.height = height; + priv->edit_widget = edit_widget; + + gtk_widget_set_parent (edit_widget, GTK_WIDGET (scaffold)); +} + +static void +cell_area_scaffold_forall (GtkContainer *container, + gboolean include_internals, + GtkCallback callback, + gpointer callback_data) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (container); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + if (priv->edit_widget) + (* callback) (priv->edit_widget, callback_data); +} + +static void +cell_area_scaffold_remove (GtkContainer *container, + GtkWidget *child) +{ + CellAreaScaffold *scaffold = CELL_AREA_SCAFFOLD (container); + CellAreaScaffoldPrivate *priv = scaffold->priv; + + g_return_if_fail (child == priv->edit_widget); + + gtk_widget_unparent (priv->edit_widget); + priv->edit_widget = NULL; +} + +/********************************************************* + * CellAreaScaffoldClass * + *********************************************************/ +static void +cell_area_scaffold_activate (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkWidget *widget = GTK_WIDGET (scaffold); + GtkAllocation allocation; + GdkRectangle cell_area; + GtkTreeIter iter; + gboolean valid; + gint i = 0; + + gtk_widget_get_allocation (widget, &allocation); + + cell_area.x = 0; + cell_area.y = 0; + cell_area.width = allocation.width; + cell_area.height = allocation.height; + + cell_area.x = priv->indent; + cell_area.width -= priv->indent; + + valid = gtk_tree_model_get_iter_first (priv->model, &iter); + while (valid) + { + RowData *data = &g_array_index (priv->row_data, RowData, i); + + if (i == priv->focus_row) + { + cell_area.height = data->size; + + gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE); + gtk_cell_area_activate (priv->area, priv->context, widget, &cell_area, + GTK_CELL_RENDERER_FOCUSED, FALSE); + + break; + } + + cell_area.y += data->size + priv->row_spacing; + + i++; + valid = gtk_tree_model_iter_next (priv->model, &iter); + } +} + +/********************************************************* + * CellArea/GtkTreeModel callbacks * + *********************************************************/ +static void +size_changed_cb (GtkCellAreaContext *context, + GParamSpec *pspec, + CellAreaScaffold *scaffold) +{ + if (!strcmp (pspec->name, "minimum-width") || + !strcmp (pspec->name, "natural-width") || + !strcmp (pspec->name, "minimum-height") || + !strcmp (pspec->name, "natural-height")) + gtk_widget_queue_resize (GTK_WIDGET (scaffold)); +} + +static void +focus_changed_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + const gchar *path, + CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + GtkWidget *widget = GTK_WIDGET (scaffold); + GtkTreePath *treepath; + gint *indices; + + if (!priv->model) + return; + + /* We can be signaled that a renderer lost focus, here + * we dont care */ + if (!renderer) + return; + + treepath = gtk_tree_path_new_from_string (path); + indices = gtk_tree_path_get_indices (treepath); + + priv->focus_row = indices[0]; + + gtk_tree_path_free (treepath); + + /* Make sure we have focus now */ + if (!gtk_widget_has_focus (widget)) + gtk_widget_grab_focus (widget); + + gtk_widget_queue_draw (widget); +} + +static void +add_editable_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + GdkRectangle *cell_area, + const gchar *path, + CellAreaScaffold *scaffold) +{ + GtkAllocation allocation; + + gtk_widget_get_allocation (GTK_WIDGET (scaffold), &allocation); + + cell_area_scaffold_put_edit_widget (scaffold, GTK_WIDGET (edit_widget), + allocation.x + cell_area->x, + allocation.y + cell_area->y, + cell_area->width, cell_area->height); +} + +static void +remove_editable_cb (GtkCellArea *area, + GtkCellRenderer *renderer, + GtkCellEditable *edit_widget, + CellAreaScaffold *scaffold) +{ + gtk_container_remove (GTK_CONTAINER (scaffold), GTK_WIDGET (edit_widget)); + + gtk_widget_grab_focus (GTK_WIDGET (scaffold)); +} + +static void +rebuild_and_reset_internals (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv = scaffold->priv; + gint n_rows; + + if (priv->model) + { + n_rows = gtk_tree_model_iter_n_children (priv->model, NULL); + + /* Clear/reset the array */ + g_array_set_size (priv->row_data, n_rows); + memset (priv->row_data->data, 0x0, n_rows * sizeof (RowData)); + } + else + g_array_set_size (priv->row_data, 0); + + /* Data changed, lets reset the context and consequently queue resize and + * start everything over again (note this is definitly far from optimized) */ + gtk_cell_area_context_reset (priv->context); +} + +static void +row_changed_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + CellAreaScaffold *scaffold) +{ + rebuild_and_reset_internals (scaffold); +} + +static void +row_inserted_cb (GtkTreeModel *model, + GtkTreePath *path, + GtkTreeIter *iter, + CellAreaScaffold *scaffold) +{ + rebuild_and_reset_internals (scaffold); +} + +static void +row_deleted_cb (GtkTreeModel *model, + GtkTreePath *path, + CellAreaScaffold *scaffold) +{ + rebuild_and_reset_internals (scaffold); +} + +static void +rows_reordered_cb (GtkTreeModel *model, + GtkTreePath *parent, + GtkTreeIter *iter, + gint *new_order, + CellAreaScaffold *scaffold) +{ + rebuild_and_reset_internals (scaffold); +} + +/********************************************************* + * API * + *********************************************************/ +GtkWidget * +cell_area_scaffold_new (void) +{ + return (GtkWidget *)g_object_new (TYPE_CELL_AREA_SCAFFOLD, NULL); +} + +GtkCellArea * +cell_area_scaffold_get_area (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv; + + g_return_val_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold), NULL); + + priv = scaffold->priv; + + return priv->area; +} + +void +cell_area_scaffold_set_model (CellAreaScaffold *scaffold, + GtkTreeModel *model) +{ + CellAreaScaffoldPrivate *priv; + + g_return_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold)); + + priv = scaffold->priv; + + if (priv->model != model) + { + if (priv->model) + { + g_signal_handler_disconnect (priv->model, priv->row_changed_id); + g_signal_handler_disconnect (priv->model, priv->row_inserted_id); + g_signal_handler_disconnect (priv->model, priv->row_deleted_id); + g_signal_handler_disconnect (priv->model, priv->rows_reordered_id); + + g_object_unref (priv->model); + } + + priv->model = model; + + if (priv->model) + { + g_object_ref (priv->model); + + priv->row_changed_id = + g_signal_connect (priv->model, "row-changed", + G_CALLBACK (row_changed_cb), scaffold); + + priv->row_inserted_id = + g_signal_connect (priv->model, "row-inserted", + G_CALLBACK (row_inserted_cb), scaffold); + + priv->row_deleted_id = + g_signal_connect (priv->model, "row-deleted", + G_CALLBACK (row_deleted_cb), scaffold); + + priv->rows_reordered_id = + g_signal_connect (priv->model, "rows-reordered", + G_CALLBACK (rows_reordered_cb), scaffold); + } + + rebuild_and_reset_internals (scaffold); + } +} + +GtkTreeModel * +cell_area_scaffold_get_model (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv; + + g_return_val_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold), NULL); + + priv = scaffold->priv; + + return priv->model; +} + + +void +cell_area_scaffold_set_row_spacing (CellAreaScaffold *scaffold, + gint spacing) +{ + CellAreaScaffoldPrivate *priv; + + g_return_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold)); + + priv = scaffold->priv; + + if (priv->row_spacing != spacing) + { + priv->row_spacing = spacing; + gtk_widget_queue_resize (GTK_WIDGET (scaffold)); + } +} + +gint +cell_area_scaffold_get_row_spacing (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv; + + g_return_val_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold), 0); + + priv = scaffold->priv; + + return priv->row_spacing; +} + +void +cell_area_scaffold_set_indentation (CellAreaScaffold *scaffold, + gint indent) +{ + CellAreaScaffoldPrivate *priv; + + g_return_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold)); + + priv = scaffold->priv; + + if (priv->indent != indent) + { + priv->indent = indent; + gtk_widget_queue_resize (GTK_WIDGET (scaffold)); + } +} + +gint +cell_area_scaffold_get_indentation (CellAreaScaffold *scaffold) +{ + CellAreaScaffoldPrivate *priv; + + g_return_val_if_fail (IS_CELL_AREA_SCAFFOLD (scaffold), 0); + + priv = scaffold->priv; + + return priv->indent; +} + + diff --git a/tests/cellareascaffold.h b/tests/cellareascaffold.h new file mode 100644 index 0000000000..cdc7b254c9 --- /dev/null +++ b/tests/cellareascaffold.h @@ -0,0 +1,79 @@ +/* cellareascaffold.h + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __CELL_AREA_SCAFFOLD_H__ +#define __CELL_AREA_SCAFFOLD_H__ + +#include + + +G_BEGIN_DECLS + +#define TYPE_CELL_AREA_SCAFFOLD (cell_area_scaffold_get_type ()) +#define CELL_AREA_SCAFFOLD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CELL_AREA_SCAFFOLD, CellAreaScaffold)) +#define CELL_AREA_SCAFFOLD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CELL_AREA_SCAFFOLD, CellAreaScaffoldClass)) +#define IS_CELL_AREA_SCAFFOLD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CELL_AREA_SCAFFOLD)) +#define IS_CELL_AREA_SCAFFOLD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CELL_AREA_SCAFFOLD)) +#define CELL_AREA_SCAFFOLD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CELL_AREA_SCAFFOLD, CellAreaScaffoldClass)) + + +typedef struct _CellAreaScaffold CellAreaScaffold; +typedef struct _CellAreaScaffoldClass CellAreaScaffoldClass; +typedef struct _CellAreaScaffoldPrivate CellAreaScaffoldPrivate; + +struct _CellAreaScaffold +{ + GtkContainer widget; + + CellAreaScaffoldPrivate *priv; +}; + +struct _CellAreaScaffoldClass +{ + GtkContainerClass parent_class; + + void (* activate) (CellAreaScaffold *scaffold); +}; + + +GType cell_area_scaffold_get_type (void) G_GNUC_CONST; +GtkWidget *cell_area_scaffold_new (void); + +GtkCellArea *cell_area_scaffold_get_area (CellAreaScaffold *scaffold); +void cell_area_scaffold_set_model (CellAreaScaffold *scaffold, + GtkTreeModel *model); +GtkTreeModel *cell_area_scaffold_get_model (CellAreaScaffold *scaffold); + +void cell_area_scaffold_set_row_spacing (CellAreaScaffold *scaffold, + gint spacing); +gint cell_area_scaffold_get_row_spacing (CellAreaScaffold *scaffold); + +void cell_area_scaffold_set_indentation (CellAreaScaffold *scaffold, + gint indent); +gint cell_area_scaffold_get_indentation (CellAreaScaffold *scaffold); + + + +G_END_DECLS + +#endif /* __CELL_AREA_SCAFFOLD_H__ */ diff --git a/tests/flicker.c b/tests/flicker.c index 738ff341c8..2bd53ce53e 100644 --- a/tests/flicker.c +++ b/tests/flicker.c @@ -204,7 +204,6 @@ main (int argc, char *argv[]) { GtkWidget *window1; - gtk_set_locale (); gtk_init (&argc, &argv); window1 = create_flicker (); diff --git a/tests/gradient1.png b/tests/gradient1.png new file mode 100644 index 0000000000..248c998daf Binary files /dev/null and b/tests/gradient1.png differ diff --git a/tests/gtkoffscreenbox.c b/tests/gtkoffscreenbox.c index 0afaa0b84d..7aeb82cdfd 100644 --- a/tests/gtkoffscreenbox.c +++ b/tests/gtkoffscreenbox.c @@ -345,7 +345,6 @@ gtk_offscreen_box_realize (GtkWidget *widget) g_signal_connect (offscreen_box->offscreen_window2, "from-embedder", G_CALLBACK (offscreen_window_from_parent2), offscreen_box); - gtk_widget_style_attach (widget); context = gtk_widget_get_style_context (widget); gtk_style_context_set_background (context, window); gtk_style_context_set_background (context, offscreen_box->offscreen_window1); diff --git a/tests/makefile.msc b/tests/makefile.msc index 9b097a70f6..8d0532e401 100644 --- a/tests/makefile.msc +++ b/tests/makefile.msc @@ -10,14 +10,12 @@ TOP = ..\.. ################################################################ # Possibly override versions from build/win32/module.defs -GTK_VER = 2.0 -GDK_PIXBUF_VER = 2.0 +GTK_VER = 3.0 GDK_LIBS = ../gdk/gdk-win32-$(GTK_VER).lib GTK_LIBS = ../gtk/gtk-win32-$(GTK_VER).lib -GDK_PIXBUF_LIBS = ../gdk-pixbuf/gdk_pixbuf-$(GDK_PIXBUF_VER).lib -INCLUDES = -I . -I .. -I ../gdk -I ../gdk-pixbuf -I ../gtk +INCLUDES = -I . -I .. -I ../gdk -I ../gtk $(GDK_PIXBUF_CFLAGS) DEPCFLAGS = $(PANGO_CFLAGS) $(GLIB_CFLAGS) $(LIBICONV_CFLAGS) $(INTL_CFLAGS) $(ATK_CFLAGS) $(CAIRO_CFLAGS) LDFLAGS = /link /machine:ix86 $(LINKDEBUG) DEFINES = -DG_LOG_DOMAIN=\"GtkTest\" -DGTK_VERSION=\"$(GTK_VER)\" @@ -43,7 +41,7 @@ TESTAPPS = \ # autotestfilechooser autotestfilesystem \ # buildertest floatingtest \ flicker \ - objecttests \ +# objecttests \ testaccel testactions testassistant \ testbbox testbuttons \ testcairo testcalendar testcellrenderertext testclientmessage testcombo testcombochange \ @@ -52,13 +50,13 @@ TESTAPPS = \ testfilechooser testfilechooserbutton testframe \ testgrouping testgtk \ testicontheme testiconview testimage testinput \ - testmenus testmountoperation testmenubars testmerge testmultidisplay testmultiscreen \ + testmountoperation testmenubars testmerge testmultidisplay testmultiscreen \ testnouiprint testnotebookdnd \ testoffscreen testorientable \ testprint \ - testrecentchooser testrecentchoosermenu testrgb testrichtext \ + testrecentchooser testrecentchoosermenu testrichtext \ testscale testselection testspinbutton \ - testtext testtoolbar testtooltips \ + testtoolbar testtooltips \ testtreecolumns testtreecolumnsizing testtreeedit testtreeflow testtreefocus \ testtreemodel testtreesort testtreeview treestoretest \ testsocket testsocket_child teststatusicon \ @@ -110,7 +108,7 @@ EXTRA_OBJETCS = testsocket_common.obj $(TESTAPP).exe : ../gtk/gtk-win32-$(GTK_VER).lib $(TESTAPP).obj $(EXTRA_OBJETCS) $(CC) $(CFLAGS) $(TESTAPP).obj $(EXTRA_OBJETCS) $(GTK_LIBS) $(GDK_LIBS) $(GDK_PIXBUF_LIBS) \ - $(PANGO_LIBS) $(GLIB_LIBS) $(CAIRO_LIBS) $(EXTRA_LIBS) $(LDFLAGS) + $(PANGO_LIBS) $(PANGOCAIRO_LIBS) $(GLIB_LIBS) $(CAIRO_LIBS) $(EXTRA_LIBS) $(LDFLAGS) $(TESTAPP).obj : $(TESTAPP).c $(CC) $(CFLAGS) -c -DG_LOG_DOMAIN=\"$(TESTAPP)\" $(TESTAPP).c diff --git a/tests/prop-editor.c b/tests/prop-editor.c index bd90e54397..41c61f8af9 100644 --- a/tests/prop-editor.c +++ b/tests/prop-editor.c @@ -159,10 +159,10 @@ int_modified (GtkAdjustment *adj, gpointer data) GtkWidget *parent = gtk_widget_get_parent (widget); gtk_container_child_set (GTK_CONTAINER (parent), - widget, p->spec->name, (int) adj->value, NULL); + widget, p->spec->name, (int) gtk_adjustment_get_value (adj), NULL); } else - g_object_set (p->obj, p->spec->name, (int) adj->value, NULL); + g_object_set (p->obj, p->spec->name, (int) gtk_adjustment_get_value (adj), NULL); } static void @@ -190,7 +190,7 @@ int_changed (GObject *object, GParamSpec *pspec, gpointer data) get_property_value (object, pspec, &val); - if (g_value_get_int (&val) != (int)adj->value) + if (g_value_get_int (&val) != (int)gtk_adjustment_get_value (adj)) { block_controller (G_OBJECT (adj)); gtk_adjustment_set_value (adj, g_value_get_int (&val)); @@ -211,10 +211,10 @@ uint_modified (GtkAdjustment *adj, gpointer data) GtkWidget *parent = gtk_widget_get_parent (widget); gtk_container_child_set (GTK_CONTAINER (parent), - widget, p->spec->name, (guint) adj->value, NULL); + widget, p->spec->name, (guint) gtk_adjustment_get_value (adj), NULL); } else - g_object_set (p->obj, p->spec->name, (guint) adj->value, NULL); + g_object_set (p->obj, p->spec->name, (guint) gtk_adjustment_get_value (adj), NULL); } static void @@ -226,7 +226,7 @@ uint_changed (GObject *object, GParamSpec *pspec, gpointer data) g_value_init (&val, G_TYPE_UINT); get_property_value (object, pspec, &val); - if (g_value_get_uint (&val) != (guint)adj->value) + if (g_value_get_uint (&val) != (guint)gtk_adjustment_get_value (adj)) { block_controller (G_OBJECT (adj)); gtk_adjustment_set_value (adj, g_value_get_uint (&val)); @@ -247,10 +247,10 @@ float_modified (GtkAdjustment *adj, gpointer data) GtkWidget *parent = gtk_widget_get_parent (widget); gtk_container_child_set (GTK_CONTAINER (parent), - widget, p->spec->name, (float) adj->value, NULL); + widget, p->spec->name, (float) gtk_adjustment_get_value (adj), NULL); } else - g_object_set (p->obj, p->spec->name, (float) adj->value, NULL); + g_object_set (p->obj, p->spec->name, (float) gtk_adjustment_get_value (adj), NULL); } static void @@ -262,7 +262,7 @@ float_changed (GObject *object, GParamSpec *pspec, gpointer data) g_value_init (&val, G_TYPE_FLOAT); get_property_value (object, pspec, &val); - if (g_value_get_float (&val) != (float) adj->value) + if (g_value_get_float (&val) != (float) gtk_adjustment_get_value (adj)) { block_controller (G_OBJECT (adj)); gtk_adjustment_set_value (adj, g_value_get_float (&val)); @@ -283,10 +283,10 @@ double_modified (GtkAdjustment *adj, gpointer data) GtkWidget *parent = gtk_widget_get_parent (widget); gtk_container_child_set (GTK_CONTAINER (parent), - widget, p->spec->name, (double) adj->value, NULL); + widget, p->spec->name, (double) gtk_adjustment_get_value (adj), NULL); } else - g_object_set (p->obj, p->spec->name, (double) adj->value, NULL); + g_object_set (p->obj, p->spec->name, (double) gtk_adjustment_get_value (adj), NULL); } static void @@ -298,7 +298,7 @@ double_changed (GObject *object, GParamSpec *pspec, gpointer data) g_value_init (&val, G_TYPE_DOUBLE); get_property_value (object, pspec, &val); - if (g_value_get_double (&val) != adj->value) + if (g_value_get_double (&val) != gtk_adjustment_get_value (adj)) { block_controller (G_OBJECT (adj)); gtk_adjustment_set_value (adj, g_value_get_double (&val)); @@ -909,10 +909,13 @@ property_widget (GObject *object, gtk_container_add (GTK_CONTAINER (prop_edit), label); gtk_container_add (GTK_CONTAINER (prop_edit), button); - + g_object_connect_property (object, spec, G_CALLBACK (object_changed), prop_edit, G_OBJECT (label)); + + /* The Properties button is not really modifying, anyway */ + can_modify = TRUE; } else if (type == G_TYPE_PARAM_BOXED && G_PARAM_SPEC_VALUE_TYPE (spec) == GDK_TYPE_COLOR) @@ -936,6 +939,12 @@ property_widget (GObject *object, gtk_misc_set_alignment (GTK_MISC (prop_edit), 0.0, 0.5); } + if (!can_modify) + gtk_widget_set_sensitive (prop_edit, FALSE); + + if (g_param_spec_get_blurb (spec)) + gtk_widget_set_tooltip_text (prop_edit, g_param_spec_get_blurb (spec)); + return prop_edit; } @@ -1004,18 +1013,9 @@ properties_from_type (GObject *object, prop_edit = property_widget (object, spec, can_modify); gtk_table_attach_defaults (GTK_TABLE (table), prop_edit, 1, 2, i, i + 1); - if (prop_edit) - { - if (!can_modify) - gtk_widget_set_sensitive (prop_edit, FALSE); + /* set initial value */ + g_object_notify (object, spec->name); - if (g_param_spec_get_blurb (spec)) - gtk_widget_set_tooltip_text (prop_edit, g_param_spec_get_blurb (spec)); - - /* set initial value */ - g_object_notify (object, spec->name); - } - ++i; } @@ -1087,18 +1087,9 @@ child_properties_from_object (GObject *object) prop_edit = property_widget (object, spec, can_modify); gtk_table_attach_defaults (GTK_TABLE (table), prop_edit, 1, 2, i, i + 1); - if (prop_edit) - { - if (!can_modify) - gtk_widget_set_sensitive (prop_edit, FALSE); + /* set initial value */ + gtk_widget_child_notify (GTK_WIDGET (object), spec->name); - if (g_param_spec_get_blurb (spec)) - gtk_widget_set_tooltip_text (prop_edit, g_param_spec_get_blurb (spec)); - - /* set initial value */ - gtk_widget_child_notify (GTK_WIDGET (object), spec->name); - } - ++i; } diff --git a/tests/styleexamples.c b/tests/styleexamples.c index 75350ddd2d..e583ce8aea 100644 --- a/tests/styleexamples.c +++ b/tests/styleexamples.c @@ -97,24 +97,17 @@ draw_cb_expanders (GtkWidget *widget, cairo_t *cr) static gboolean draw_cb_background (GtkWidget *widget, cairo_t *cr) { - GtkStyleProvider *provider; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - "* {\n" - " border-radius: 10;\n" - " border-width: 0;\n" - " background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n" - "}\n", -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_class (context, "background"); gtk_style_context_set_junction_sides (context, 0); gtk_render_background (context, cr, 12, 12, 100, 100); - gtk_style_context_remove_provider (context, provider); + gtk_style_context_remove_class (context, "background"); + gtk_style_context_restore (context); return TRUE; @@ -123,33 +116,12 @@ draw_cb_background (GtkWidget *widget, cairo_t *cr) static gboolean draw_cb_frame (GtkWidget *widget, cairo_t *cr) { - GtkStyleProvider *provider; GtkStyleContext *context; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - ".frame1 {\n" - " border-image: url('gradient1.png') 10 10 10 10 stretch;\n" - "}\n" - ".frame2 {\n" - " border-style: solid;\n" - " border-color: rgb(255,0,0);\n" - " border-width: 10;\n" - " border-radius: 10;\n" - "}\n" - ".frame3 {\n" - " border-style: solid;\n" - " border-color: rgb(0,0,0);\n" - " border-width: 2;\n" - " border-radius: 10;\n" - "}\n", - -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - gtk_style_context_add_class (context, "frame1"); gtk_style_context_set_junction_sides (context, 0); gtk_render_frame (context, cr, 12, 12, 50, 50); @@ -166,7 +138,6 @@ draw_cb_frame (GtkWidget *widget, cairo_t *cr) gtk_render_frame (context, cr, 68, 74, 56, 50); gtk_style_context_remove_class (context, "frame3"); - gtk_style_context_remove_provider (context, provider); gtk_style_context_restore (context); return TRUE; @@ -269,29 +240,16 @@ static gboolean draw_cb_frame_gap (GtkWidget *widget, cairo_t *cr) { GtkStyleContext *context; - GtkStyleProvider *provider; context = gtk_widget_get_style_context (widget); gtk_style_context_save (context); - provider = (GtkStyleProvider *)gtk_css_provider_new (); - gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), - ".frame {\n" - " border-style: solid;\n" - " border-width: 1;\n" - " border-radius: 0;\n" - "}\n", - -1, NULL); - gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - gtk_style_context_add_class (context, "frame"); gtk_style_context_set_junction_sides (context, 0); gtk_render_frame_gap (context, cr, 12, 12, 50, 50, GTK_POS_TOP, 15, 35); gtk_style_context_remove_class (context, "frame"); - gtk_style_context_remove_provider (context, provider); - gtk_style_context_restore (context); return TRUE; @@ -359,6 +317,8 @@ int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *ebox; + GtkStyleContext *context; + GtkStyleProvider *provider; gtk_init (&argc, &argv); @@ -373,12 +333,45 @@ int main (int argc, char *argv[]) gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), TRUE); gtk_container_add (GTK_CONTAINER (window), ebox); gtk_widget_set_name (ebox, "ebox"); + + context = gtk_widget_get_style_context (ebox); + provider = (GtkStyleProvider *)gtk_css_provider_new (); + gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), + ".frame1 {\n" + " border-image: url('gradient1.png') 10 10 10 10 stretch;\n" + "}\n" + ".frame2 {\n" + " border-style: solid;\n" + " border-color: rgb(255,0,0);\n" + " border-width: 10;\n" + " border-radius: 10;\n" + "}\n" + ".frame3 {\n" + " border-style: solid;\n" + " border-color: rgb(0,0,0);\n" + " border-width: 2;\n" + " border-radius: 10;\n" + "}\n" + ".background {\n" + " border-radius: 10;\n" + " border-width: 0;\n" + " background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n" + "}\n" + ".frame {\n" + " border-style: solid;\n" + " border-width: 1;\n" + " border-radius: 0;\n" + "}\n", -1, NULL); + gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_signal_connect_after (ebox, "draw", G_CALLBACK (draw_cb), NULL); gtk_widget_show_all (window); gtk_main (); + gtk_style_context_remove_provider (context, provider); + return 0; } diff --git a/tests/testassistant.c b/tests/testassistant.c index a6b4ef5e67..8501bbcc76 100644 --- a/tests/testassistant.c +++ b/tests/testassistant.c @@ -513,11 +513,11 @@ create_full_featured_assistant (GtkWidget *widget) gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE); /* set a side image */ - pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (page, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_side_image (GTK_ASSISTANT (assistant), page, pixbuf); /* set a header image */ - pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page, pixbuf); page = get_test_page ("Invisible page"); @@ -531,7 +531,7 @@ create_full_featured_assistant (GtkWidget *widget) gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE); /* set a header image */ - pixbuf = gtk_widget_render_icon (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (page, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG); gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page, pixbuf); } diff --git a/tests/testcairo.c b/tests/testcairo.c index f66d2d6266..eaca7a83b7 100644 --- a/tests/testcairo.c +++ b/tests/testcairo.c @@ -121,11 +121,10 @@ on_draw (GtkWidget *widget, { cairo_surface_t *overlay, *punch, *circles; cairo_t *overlay_cr, *punch_cr, *circles_cr; - int width, height; /* Fill the background */ - width = gtk_widget_get_allocated_width (widget); - height = gtk_widget_get_allocated_height (widget); + int width = gtk_widget_get_allocated_width (widget); + int height = gtk_widget_get_allocated_height (widget); double radius = 0.5 * (width < height ? width : height) - 10; double xc = width / 2.; double yc = height / 2.; diff --git a/tests/testcellarea.c b/tests/testcellarea.c new file mode 100644 index 0000000000..be54c79b3f --- /dev/null +++ b/tests/testcellarea.c @@ -0,0 +1,627 @@ +#include +#include "cellareascaffold.h" + +/******************************************************* + * Simple Test * + *******************************************************/ +enum { + SIMPLE_COLUMN_NAME, + SIMPLE_COLUMN_ICON, + SIMPLE_COLUMN_DESCRIPTION, + N_SIMPLE_COLUMNS +}; + +static GtkCellRenderer *cell_1 = NULL, *cell_2 = NULL, *cell_3 = NULL; + +static GtkTreeModel * +simple_list_model (void) +{ + GtkTreeIter iter; + GtkListStore *store = + gtk_list_store_new (N_SIMPLE_COLUMNS, + G_TYPE_STRING, /* name text */ + G_TYPE_STRING, /* icon name */ + G_TYPE_STRING); /* description text */ + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Alice in wonderland", + SIMPLE_COLUMN_ICON, "gtk-execute", + SIMPLE_COLUMN_DESCRIPTION, + "Twas brillig, and the slithy toves " + "did gyre and gimble in the wabe; " + "all mimsy were the borogoves, " + "and the mome raths outgrabe", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Marry Poppins", + SIMPLE_COLUMN_ICON, "gtk-yes", + SIMPLE_COLUMN_DESCRIPTION, "Supercalifragilisticexpialidocious", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "George Bush", + SIMPLE_COLUMN_ICON, "gtk-dialog-warning", + SIMPLE_COLUMN_DESCRIPTION, "It's a very good question, very direct, " + "and I'm not going to answer it", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Whinnie the pooh", + SIMPLE_COLUMN_ICON, "gtk-stop", + SIMPLE_COLUMN_DESCRIPTION, "The most wonderful thing about tiggers, " + "is tiggers are wonderful things", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Aleister Crowley", + SIMPLE_COLUMN_ICON, "gtk-about", + SIMPLE_COLUMN_DESCRIPTION, + "Thou shalt do what thou wilt shall be the whole of the law", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Mark Twain", + SIMPLE_COLUMN_ICON, "gtk-quit", + SIMPLE_COLUMN_DESCRIPTION, + "Giving up smoking is the easiest thing in the world. " + "I know because I've done it thousands of times.", + -1); + + + return (GtkTreeModel *)store; +} + +static GtkWidget * +simple_scaffold (void) +{ + GtkTreeModel *model; + GtkWidget *scaffold; + GtkCellArea *area; + GtkCellRenderer *renderer; + + scaffold = cell_area_scaffold_new (); + gtk_widget_show (scaffold); + + model = simple_list_model (); + + cell_area_scaffold_set_model (CELL_AREA_SCAFFOLD (scaffold), model); + + area = cell_area_scaffold_get_area (CELL_AREA_SCAFFOLD (scaffold)); + + cell_1 = renderer = gtk_cell_renderer_text_new (); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, FALSE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_NAME); + + cell_2 = renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (G_OBJECT (renderer), "xalign", 0.0F, NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, TRUE, FALSE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "stock-id", SIMPLE_COLUMN_ICON); + + cell_3 = renderer = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (renderer), + "wrap-mode", PANGO_WRAP_WORD, + "wrap-width", 215, + NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_DESCRIPTION); + + return scaffold; +} + +static void +orientation_changed (GtkComboBox *combo, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + GtkOrientation orientation = gtk_combo_box_get_active (combo); + + gtk_orientable_set_orientation (GTK_ORIENTABLE (area), orientation); +} + +static void +align_cell_2_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean align = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_2, "align", align, NULL); +} + +static void +align_cell_3_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean align = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_3, "align", align, NULL); +} + +static void +expand_cell_1_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_1, "expand", expand, NULL); +} + +static void +expand_cell_2_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_2, "expand", expand, NULL); +} + +static void +expand_cell_3_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_3, "expand", expand, NULL); +} + +static void +simple_cell_area (void) +{ + GtkWidget *window, *widget; + GtkWidget *scaffold, *frame, *vbox, *hbox; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + gtk_window_set_title (GTK_WINDOW (window), "CellArea expand and alignments"); + + scaffold = simple_scaffold (); + + hbox = gtk_hbox_new (FALSE, 4); + frame = gtk_frame_new (NULL); + gtk_widget_show (hbox); + gtk_widget_show (frame); + + gtk_widget_set_valign (frame, GTK_ALIGN_CENTER); + gtk_widget_set_halign (frame, GTK_ALIGN_FILL); + + gtk_container_add (GTK_CONTAINER (frame), scaffold); + + gtk_box_pack_end (GTK_BOX (hbox), frame, TRUE, TRUE, 0); + + /* Now add some controls */ + vbox = gtk_vbox_new (FALSE, 4); + gtk_widget_show (vbox); + gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); + + widget = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical"); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (orientation_changed), scaffold); + + widget = gtk_check_button_new_with_label ("Align 2nd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (align_cell_2_toggled), scaffold); + + widget = gtk_check_button_new_with_label ("Align 3rd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (align_cell_3_toggled), scaffold); + + + widget = gtk_check_button_new_with_label ("Expand 1st Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_1_toggled), scaffold); + + widget = gtk_check_button_new_with_label ("Expand 2nd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_2_toggled), scaffold); + + widget = gtk_check_button_new_with_label ("Expand 3rd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_3_toggled), scaffold); + + gtk_container_add (GTK_CONTAINER (window), hbox); + + gtk_widget_show (window); +} + +/******************************************************* + * Focus Test * + *******************************************************/ +static GtkCellRenderer *focus_renderer, *sibling_renderer; + +enum { + FOCUS_COLUMN_NAME, + FOCUS_COLUMN_CHECK, + FOCUS_COLUMN_STATIC_TEXT, + N_FOCUS_COLUMNS +}; + +static GtkTreeModel * +focus_list_model (void) +{ + GtkTreeIter iter; + GtkListStore *store = + gtk_list_store_new (N_FOCUS_COLUMNS, + G_TYPE_STRING, /* name text */ + G_TYPE_BOOLEAN, /* check */ + G_TYPE_STRING); /* static text */ + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + FOCUS_COLUMN_NAME, "Enter a string", + FOCUS_COLUMN_CHECK, TRUE, + FOCUS_COLUMN_STATIC_TEXT, "Does it fly ?", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + FOCUS_COLUMN_NAME, "Enter a string", + FOCUS_COLUMN_CHECK, FALSE, + FOCUS_COLUMN_STATIC_TEXT, "Would you put it in a toaster ?", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + FOCUS_COLUMN_NAME, "Type something", + FOCUS_COLUMN_CHECK, FALSE, + FOCUS_COLUMN_STATIC_TEXT, "Does it feed on cute kittens ?", + -1); + + return (GtkTreeModel *)store; +} + +static void +cell_toggled (GtkCellRendererToggle *cell_renderer, + const gchar *path, + CellAreaScaffold *scaffold) +{ + GtkTreeModel *model = cell_area_scaffold_get_model (scaffold); + GtkTreeIter iter; + gboolean active; + + g_print ("Cell toggled !\n"); + + if (!gtk_tree_model_get_iter_from_string (model, &iter, path)) + return; + + gtk_tree_model_get (model, &iter, FOCUS_COLUMN_CHECK, &active, -1); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, FOCUS_COLUMN_CHECK, !active, -1); +} + +static void +cell_edited (GtkCellRendererToggle *cell_renderer, + const gchar *path, + const gchar *new_text, + CellAreaScaffold *scaffold) +{ + GtkTreeModel *model = cell_area_scaffold_get_model (scaffold); + GtkTreeIter iter; + + g_print ("Cell edited with new text '%s' !\n", new_text); + + if (!gtk_tree_model_get_iter_from_string (model, &iter, path)) + return; + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, FOCUS_COLUMN_NAME, new_text, -1); +} + +static GtkWidget * +focus_scaffold (gboolean color_bg, GtkCellRenderer **focus, GtkCellRenderer **sibling) +{ + GtkTreeModel *model; + GtkWidget *scaffold; + GtkCellArea *area; + GtkCellRenderer *renderer, *toggle; + + scaffold = cell_area_scaffold_new (); + gtk_widget_show (scaffold); + + model = focus_list_model (); + + cell_area_scaffold_set_model (CELL_AREA_SCAFFOLD (scaffold), model); + + area = cell_area_scaffold_get_area (CELL_AREA_SCAFFOLD (scaffold)); + + renderer = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (renderer), "editable", TRUE, NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, TRUE, FALSE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", FOCUS_COLUMN_NAME); + + if (color_bg) + g_object_set (G_OBJECT (renderer), "cell-background", "red", NULL); + + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (cell_edited), scaffold); + + toggle = renderer = gtk_cell_renderer_toggle_new (); + g_object_set (G_OBJECT (renderer), "xalign", 0.0F, NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "active", FOCUS_COLUMN_CHECK); + + if (color_bg) + g_object_set (G_OBJECT (renderer), "cell-background", "green", NULL); + + if (focus) + *focus = renderer; + + g_signal_connect (G_OBJECT (renderer), "toggled", + G_CALLBACK (cell_toggled), scaffold); + + renderer = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (renderer), + "wrap-mode", PANGO_WRAP_WORD, + "wrap-width", 150, + NULL); + + if (color_bg) + g_object_set (G_OBJECT (renderer), "cell-background", "blue", NULL); + + if (sibling) + *sibling = renderer; + + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", FOCUS_COLUMN_STATIC_TEXT); + + gtk_cell_area_add_focus_sibling (area, toggle, renderer); + + return scaffold; +} + +static void +focus_sibling_toggled (GtkToggleButton *toggle, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gboolean active = gtk_toggle_button_get_active (toggle); + + if (active) + gtk_cell_area_add_focus_sibling (area, focus_renderer, sibling_renderer); + else + gtk_cell_area_remove_focus_sibling (area, focus_renderer, sibling_renderer); + + gtk_widget_queue_draw (GTK_WIDGET (scaffold)); +} + + +static void +focus_cell_area (void) +{ + GtkWidget *window, *widget; + GtkWidget *scaffold, *frame, *vbox, *hbox; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + hbox = gtk_hbox_new (FALSE, 4); + gtk_widget_show (hbox); + + gtk_window_set_title (GTK_WINDOW (window), "Focus and editable cells"); + + scaffold = focus_scaffold (FALSE, &focus_renderer, &sibling_renderer); + + frame = gtk_frame_new (NULL); + gtk_widget_show (frame); + + gtk_widget_set_valign (frame, GTK_ALIGN_CENTER); + gtk_widget_set_halign (frame, GTK_ALIGN_FILL); + + gtk_container_add (GTK_CONTAINER (frame), scaffold); + + gtk_box_pack_end (GTK_BOX (hbox), frame, TRUE, TRUE, 0); + + /* Now add some controls */ + vbox = gtk_vbox_new (FALSE, 4); + gtk_widget_show (vbox); + gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); + + widget = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical"); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (orientation_changed), scaffold); + + widget = gtk_check_button_new_with_label ("Focus Sibling"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (focus_sibling_toggled), scaffold); + + gtk_container_add (GTK_CONTAINER (window), hbox); + + gtk_widget_show (window); +} + + + +/******************************************************* + * Background Area * + *******************************************************/ +static void +cell_spacing_changed (GtkSpinButton *spin_button, + CellAreaScaffold *scaffold) +{ + GtkCellArea *area = cell_area_scaffold_get_area (scaffold); + gint value; + + value = (gint)gtk_spin_button_get_value (spin_button); + + gtk_cell_area_box_set_spacing (GTK_CELL_AREA_BOX (area), value); +} + +static void +row_spacing_changed (GtkSpinButton *spin_button, + CellAreaScaffold *scaffold) +{ + gint value; + + value = (gint)gtk_spin_button_get_value (spin_button); + + cell_area_scaffold_set_row_spacing (scaffold, value); +} + +static void +indentation_changed (GtkSpinButton *spin_button, + CellAreaScaffold *scaffold) +{ + gint value; + + value = (gint)gtk_spin_button_get_value (spin_button); + + cell_area_scaffold_set_indentation (scaffold, value); +} + +static void +background_area (void) +{ + GtkWidget *window, *widget, *label, *main_vbox; + GtkWidget *scaffold, *frame, *vbox, *hbox; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + hbox = gtk_hbox_new (FALSE, 4); + main_vbox = gtk_vbox_new (FALSE, 4); + gtk_widget_show (hbox); + gtk_widget_show (main_vbox); + gtk_container_add (GTK_CONTAINER (window), main_vbox); + + gtk_window_set_title (GTK_WINDOW (window), "Background Area"); + + label = gtk_label_new ("In this example, row spacing gets devided into the background area, " + "column spacing is added between each background area, indentation is " + "prepended space distributed to the background area."); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_label_set_width_chars (GTK_LABEL (label), 40); + gtk_widget_show (label); + gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0); + + scaffold = focus_scaffold (TRUE, NULL, NULL); + + frame = gtk_frame_new (NULL); + gtk_widget_show (frame); + + gtk_widget_set_valign (frame, GTK_ALIGN_CENTER); + gtk_widget_set_halign (frame, GTK_ALIGN_FILL); + + gtk_container_add (GTK_CONTAINER (frame), scaffold); + + gtk_box_pack_end (GTK_BOX (hbox), frame, TRUE, TRUE, 0); + + /* Now add some controls */ + vbox = gtk_vbox_new (FALSE, 4); + gtk_widget_show (vbox); + gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); + + widget = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical"); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (orientation_changed), scaffold); + + widget = gtk_spin_button_new_with_range (0, 10, 1); + label = gtk_label_new ("Cell spacing"); + hbox = gtk_hbox_new (FALSE, 4); + gtk_widget_show (hbox); + gtk_widget_show (label); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "value-changed", + G_CALLBACK (cell_spacing_changed), scaffold); + + + widget = gtk_spin_button_new_with_range (0, 10, 1); + label = gtk_label_new ("Row spacing"); + hbox = gtk_hbox_new (FALSE, 4); + gtk_widget_show (hbox); + gtk_widget_show (label); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "value-changed", + G_CALLBACK (row_spacing_changed), scaffold); + + widget = gtk_spin_button_new_with_range (0, 30, 1); + label = gtk_label_new ("Intentation"); + hbox = gtk_hbox_new (FALSE, 4); + gtk_widget_show (hbox); + gtk_widget_show (label); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "value-changed", + G_CALLBACK (indentation_changed), scaffold); + + gtk_widget_show (window); +} + + + + + + +int +main (int argc, char *argv[]) +{ + gtk_init (NULL, NULL); + + if (g_getenv ("RTL")) + gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL); + + simple_cell_area (); + focus_cell_area (); + background_area (); + + gtk_main (); + + return 0; +} diff --git a/tests/testcombo.c b/tests/testcombo.c index 4a04f1a6bd..0f7d5cee3d 100644 --- a/tests/testcombo.c +++ b/tests/testcombo.c @@ -166,8 +166,8 @@ create_tree_blaat (void) store = gtk_tree_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING, + GTK_ICON_SIZE_BUTTON); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, pixbuf, @@ -175,8 +175,8 @@ create_tree_blaat (void) 2, FALSE, -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP, + GTK_ICON_SIZE_BUTTON); gtk_tree_store_append (store, &iter2, &iter); gtk_tree_store_set (store, &iter2, 0, pixbuf, @@ -184,8 +184,8 @@ create_tree_blaat (void) 2, FALSE, -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW, + GTK_ICON_SIZE_BUTTON); gtk_tree_store_append (store, &iter2, &iter); gtk_tree_store_set (store, &iter2, 0, pixbuf, @@ -193,8 +193,8 @@ create_tree_blaat (void) 2, FALSE, -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR, + GTK_ICON_SIZE_BUTTON); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, pixbuf, @@ -211,8 +211,8 @@ create_tree_blaat (void) -1); #endif - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN, + GTK_ICON_SIZE_BUTTON); gtk_tree_store_append (store, &iter, NULL); gtk_tree_store_set (store, &iter, 0, pixbuf, @@ -237,8 +237,8 @@ create_empty_list_blaat (void) store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, @@ -268,24 +268,24 @@ populate_list_blaat (gpointer data) cellview = gtk_cell_view_new (); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-stop", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-new", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, @@ -298,8 +298,8 @@ populate_list_blaat (gpointer data) 1, "separator", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, @@ -321,32 +321,32 @@ create_list_blaat (void) store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-dialog-warning", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_STOP, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-stop", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_NEW, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-new", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_CLEAR, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, @@ -359,8 +359,8 @@ create_list_blaat (void) 1, "separator", -1); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_OPEN, + GTK_ICON_SIZE_BUTTON); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, @@ -405,6 +405,47 @@ create_list_long (void) return GTK_TREE_MODEL (store); } +static GtkTreeModel * +create_food_list (void) +{ + GtkTreeIter iter; + GtkListStore *store; + + store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, "Pepperoni", + 1, "Pizza", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, "Cheese", + 1, "Burger", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, "Pineapple", + 1, "Milkshake", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, "Orange", + 1, "Soda", + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, "Club", + 1, "Sandwich", + -1); + + return GTK_TREE_MODEL (store); +} + + /* blaat */ static GtkTreeModel * create_phylogenetic_tree (void) @@ -1054,12 +1095,27 @@ main (int argc, char **argv) GtkTreePath *path; GtkTreeIter iter; GdkColor color; + GtkCellArea *area; gtk_init (&argc, &argv); if (g_getenv ("RTL")) gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL); + if (g_getenv ("LISTMODE")) + { + GtkCssProvider *provider = gtk_css_provider_new (); + + gtk_css_provider_load_from_data (provider, + "* { -GtkComboBox-appears-as-list: true; }", + -1, NULL); + + gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_FALLBACK); + + } + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (window), 5); g_signal_connect (window, "destroy", gtk_main_quit, NULL); @@ -1077,8 +1133,8 @@ main (int argc, char **argv) cellview = gtk_cell_view_new (); renderer = gtk_cell_renderer_pixbuf_new (); - pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING, - GTK_ICON_SIZE_BUTTON, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (cellview, GTK_STOCK_DIALOG_WARNING, + GTK_ICON_SIZE_BUTTON); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cellview), renderer, @@ -1334,7 +1390,6 @@ main (int argc, char **argv) gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); - /* Capitals */ tmp = gtk_frame_new ("Where are you ?"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); @@ -1368,6 +1423,41 @@ main (int argc, char **argv) gdk_threads_add_timeout (1000, (GSourceFunc) capital_animation, model); #endif + /* Aligned Food */ + tmp = gtk_frame_new ("Hungry ?"); + gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); + + boom = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_set_border_width (GTK_CONTAINER (boom), 5); + gtk_container_add (GTK_CONTAINER (tmp), boom); + + model = create_food_list (); + combobox = gtk_combo_box_new_with_model (model); + g_object_unref (model); + gtk_container_add (GTK_CONTAINER (boom), combobox); + + area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (combobox)); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_area_add_with_properties (area, renderer, + "align", TRUE, + "expand", TRUE, + NULL); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, + "text", 0, + NULL); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_area_add_with_properties (area, renderer, + "align", TRUE, + "expand", TRUE, + NULL); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer, + "text", 1, + NULL); + + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); + /* Ellipsizing growing combos */ tmp = gtk_frame_new ("Unconstrained Menu"); gtk_box_pack_start (GTK_BOX (mainbox), tmp, FALSE, FALSE, 0); diff --git a/tests/testdnd.c b/tests/testdnd.c index 8777acd1d4..375e5ab854 100644 --- a/tests/testdnd.c +++ b/tests/testdnd.c @@ -335,7 +335,7 @@ target_drag_motion (GtkWidget *widget, G_OBJECT_TYPE_NAME (source_widget) : "NULL"); - tmp_list = context->targets; + tmp_list = gdk_drag_context_list_targets (context); while (tmp_list) { char *name = gdk_atom_name (GDK_POINTER_TO_ATOM (tmp_list->data)); @@ -345,7 +345,8 @@ target_drag_motion (GtkWidget *widget, tmp_list = tmp_list->next; } - gdk_drag_status (context, context->suggested_action, time); + gdk_drag_status (context, gdk_drag_context_get_suggested_action (context), time); + return TRUE; } @@ -361,10 +362,10 @@ target_drag_drop (GtkWidget *widget, gtk_image_set_from_pixbuf (GTK_IMAGE (widget), trashcan_closed); - if (context->targets) + if (gdk_drag_context_list_targets (context)) { - gtk_drag_get_data (widget, context, - GDK_POINTER_TO_ATOM (context->targets->data), + gtk_drag_get_data (widget, context, + GDK_POINTER_TO_ATOM (gdk_drag_context_list_targets (context)->data), time); return TRUE; } @@ -377,13 +378,14 @@ target_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, - GtkSelectionData *data, + GtkSelectionData *selection_data, guint info, guint time) { - if ((data->length >= 0) && (data->format == 8)) + if (gtk_selection_data_get_length (selection_data) >= 0 && + gtk_selection_data_get_format (selection_data) == 8) { - g_print ("Received \"%s\" in trashcan\n", (gchar *)data->data); + g_print ("Received \"%s\" in trashcan\n", (gchar *) gtk_selection_data_get_data (selection_data)); gtk_drag_finish (context, TRUE, FALSE, time); return; } @@ -396,13 +398,14 @@ label_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, - GtkSelectionData *data, + GtkSelectionData *selection_data, guint info, guint time) { - if ((data->length >= 0) && (data->format == 8)) + if (gtk_selection_data_get_length (selection_data) >= 0 && + gtk_selection_data_get_format (selection_data) == 8) { - g_print ("Received \"%s\" in label\n", (gchar *)data->data); + g_print ("Received \"%s\" in label\n", (gchar *) gtk_selection_data_get_data (selection_data)); gtk_drag_finish (context, TRUE, FALSE, time); return; } @@ -422,7 +425,7 @@ source_drag_data_get (GtkWidget *widget, g_print ("I was dropped on the rootwin\n"); else gtk_selection_data_set (selection_data, - selection_data->target, + gtk_selection_data_get_target (selection_data), 8, (guchar *) "I'm Data!", 9); } diff --git a/tests/testgtk.c b/tests/testgtk.c index 76d68387f7..7b90a4242e 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -525,11 +525,11 @@ create_pattern (GtkWidget *widget, #define PATTERN_SIZE (1 << 18) static void -pattern_hadj_changed (GtkAdjustment *adj, +pattern_hadj_changed (GtkAdjustment *adjustment, GtkWidget *darea) { - gint *old_value = g_object_get_data (G_OBJECT (adj), "old-value"); - gint new_value = adj->value; + gint *old_value = g_object_get_data (G_OBJECT (adjustment), "old-value"); + gint new_value = gtk_adjustment_get_value (adjustment); if (gtk_widget_get_realized (darea)) { @@ -540,11 +540,11 @@ pattern_hadj_changed (GtkAdjustment *adj, } static void -pattern_vadj_changed (GtkAdjustment *adj, +pattern_vadj_changed (GtkAdjustment *adjustment, GtkWidget *darea) { - gint *old_value = g_object_get_data (G_OBJECT (adj), "old-value"); - gint new_value = adj->value; + gint *old_value = g_object_get_data (G_OBJECT (adjustment), "old-value"); + gint new_value = gtk_adjustment_get_value (adjustment); if (gtk_widget_get_realized (darea)) { @@ -572,8 +572,8 @@ create_big_windows (GtkWidget *widget) GtkWidget *content_area; GtkWidget *darea, *table, *scrollbar; GtkWidget *eventbox; - GtkAdjustment *hadj; - GtkAdjustment *vadj; + GtkAdjustment *hadjustment; + GtkAdjustment *vadjustment; static gint current_x; static gint current_y; @@ -608,15 +608,15 @@ create_big_windows (GtkWidget *widget) darea = gtk_drawing_area_new (); - hadj = gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100); - g_signal_connect (hadj, "value_changed", + hadjustment = gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100); + g_signal_connect (hadjustment, "value_changed", G_CALLBACK (pattern_hadj_changed), darea); - g_object_set_data (G_OBJECT (hadj), "old-value", ¤t_x); + g_object_set_data (G_OBJECT (hadjustment), "old-value", ¤t_x); - vadj = gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100); - g_signal_connect (vadj, "value_changed", + vadjustment = gtk_adjustment_new (0, 0, PATTERN_SIZE, 10, 100, 100); + g_signal_connect (vadjustment, "value_changed", G_CALLBACK (pattern_vadj_changed), darea); - g_object_set_data (G_OBJECT (vadj), "old-value", ¤t_y); + g_object_set_data (G_OBJECT (vadjustment), "old-value", ¤t_y); g_signal_connect (darea, "realize", G_CALLBACK (pattern_realize), @@ -630,13 +630,13 @@ create_big_windows (GtkWidget *widget) gtk_container_add (GTK_CONTAINER (eventbox), darea); - scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_HORIZONTAL, hadj); + scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_HORIZONTAL, hadjustment); gtk_table_attach (GTK_TABLE (table), scrollbar, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); - scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, vadj); + scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, vadjustment); gtk_table_attach (GTK_TABLE (table), scrollbar, 1, 2, 0, 1, GTK_FILL, GTK_EXPAND | GTK_FILL, @@ -4613,7 +4613,7 @@ create_spins (GtkWidget *widget) GtkWidget *button; GtkWidget *label; GtkWidget *val_label; - GtkAdjustment *adj; + GtkAdjustment *adjustment; if (!window) { @@ -4650,8 +4650,8 @@ create_spins (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (0, 0, 1410, 30, 60, 0); - spinner = gtk_spin_button_new (adj, 0, 0); + adjustment = gtk_adjustment_new (0, 0, 1410, 30, 60, 0); + spinner = gtk_spin_button_new (adjustment, 0, 0); gtk_editable_set_editable (GTK_EDITABLE (spinner), FALSE); g_signal_connect (spinner, "output", @@ -4668,9 +4668,9 @@ create_spins (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (1.0, 1.0, 12.0, 1.0, + adjustment = gtk_adjustment_new (1.0, 1.0, 12.0, 1.0, 5.0, 0.0); - spinner = gtk_spin_button_new (adj, 0, 0); + spinner = gtk_spin_button_new (adjustment, 0, 0); gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (spinner), GTK_UPDATE_IF_VALID); g_signal_connect (spinner, @@ -4692,8 +4692,8 @@ create_spins (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (0, 0, 255, 1, 16, 0); - spinner = gtk_spin_button_new (adj, 0, 0); + adjustment = gtk_adjustment_new (0, 0, 255, 1, 16, 0); + spinner = gtk_spin_button_new (adjustment, 0, 0); gtk_editable_set_editable (GTK_EDITABLE (spinner), TRUE); g_signal_connect (spinner, "input", @@ -4724,9 +4724,9 @@ create_spins (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (0.0, -10000.0, 10000.0, + adjustment = gtk_adjustment_new (0.0, -10000.0, 10000.0, 0.5, 100.0, 0.0); - spinner1 = gtk_spin_button_new (adj, 1.0, 2); + spinner1 = gtk_spin_button_new (adjustment, 1.0, 2); gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (spinner1), TRUE); gtk_box_pack_start (GTK_BOX (vbox2), spinner1, FALSE, TRUE, 0); @@ -4737,9 +4737,9 @@ create_spins (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (2, 1, 15, 1, 1, 0); - spinner2 = gtk_spin_button_new (adj, 0.0, 0); - g_signal_connect (adj, "value_changed", + adjustment = gtk_adjustment_new (2, 1, 15, 1, 1, 0); + spinner2 = gtk_spin_button_new (adjustment, 0.0, 0); + g_signal_connect (adjustment, "value_changed", G_CALLBACK (change_digits), spinner2); gtk_box_pack_start (GTK_BOX (vbox2), spinner2, FALSE, TRUE, 0); @@ -4880,7 +4880,7 @@ set_cursor (GtkWidget *spinner, cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), c); gdk_window_set_cursor (gtk_widget_get_window (widget), cursor); - gdk_cursor_unref (cursor); + g_object_unref (cursor); } static gint @@ -4937,7 +4937,7 @@ create_cursors (GtkWidget *widget) GtkWidget *button; GtkWidget *label; GtkWidget *any; - GtkAdjustment *adj; + GtkAdjustment *adjustment; GtkWidget *entry; GtkWidget *size; @@ -4997,11 +4997,11 @@ create_cursors (GtkWidget *widget) gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); - adj = gtk_adjustment_new (0, + adjustment = gtk_adjustment_new (0, 0, 152, 2, 10, 0); - spinner = gtk_spin_button_new (adj, 0, 0); + spinner = gtk_spin_button_new (adjustment, 0, 0); gtk_box_pack_start (GTK_BOX (hbox), spinner, TRUE, TRUE, 0); frame = @@ -5867,15 +5867,12 @@ create_range_controls (GtkWidget *widget) scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (adjustment)); gtk_widget_set_size_request (GTK_WIDGET (scale), 150, -1); - gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED); gtk_scale_set_digits (GTK_SCALE (scale), 1); gtk_scale_set_draw_value (GTK_SCALE (scale), TRUE); gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0); gtk_widget_show (scale); scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (adjustment)); - gtk_range_set_update_policy (GTK_RANGE (scrollbar), - GTK_UPDATE_CONTINUOUS); gtk_box_pack_start (GTK_BOX (box2), scrollbar, TRUE, TRUE, 0); gtk_widget_show (scrollbar); @@ -6935,23 +6932,27 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event) p->y = (int) event->y; gtk_grab_add (widget); - gdk_pointer_grab (gtk_widget_get_window (widget), TRUE, - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK, - NULL, NULL, 0); + gdk_device_grab (gdk_event_get_device ((GdkEvent*)event), + gtk_widget_get_window (widget), + GDK_OWNERSHIP_NONE, + TRUE, + GDK_BUTTON_RELEASE_MASK | + GDK_BUTTON_MOTION_MASK | + GDK_POINTER_MOTION_HINT_MASK, + NULL, + event->time); } static void -shape_released (GtkWidget *widget) +shape_released (GtkWidget *widget, + GdkEventButton *event) { gtk_grab_remove (widget); - gdk_display_pointer_ungrab (gtk_widget_get_display (widget), - GDK_CURRENT_TIME); + gdk_device_ungrab (gdk_event_get_device ((GdkEvent*)event), event->time); } static void -shape_motion (GtkWidget *widget, +shape_motion (GtkWidget *widget, GdkEventMotion *event) { gint xp, yp; @@ -7921,7 +7922,7 @@ window_controls (GtkWidget *window) GtkWidget *vbox; GtkWidget *button; GtkWidget *spin; - GtkAdjustment *adj; + GtkAdjustment *adjustment; GtkWidget *entry; GtkWidget *om; gint i; @@ -7955,15 +7956,15 @@ window_controls (GtkWidget *window) G_CALLBACK (configure_event_callback), label); - adj = gtk_adjustment_new (10.0, -2000.0, 2000.0, 1.0, 5.0, 0.0); - spin = gtk_spin_button_new (adj, 0, 0); + adjustment = gtk_adjustment_new (10.0, -2000.0, 2000.0, 1.0, 5.0, 0.0); + spin = gtk_spin_button_new (adjustment, 0, 0); gtk_box_pack_start (GTK_BOX (vbox), spin, FALSE, FALSE, 0); g_object_set_data (G_OBJECT (control_window), "spin1", spin); - adj = gtk_adjustment_new (10.0, -2000.0, 2000.0, 1.0, 5.0, 0.0); - spin = gtk_spin_button_new (adj, 0, 0); + adjustment = gtk_adjustment_new (10.0, -2000.0, 2000.0, 1.0, 5.0, 0.0); + spin = gtk_spin_button_new (adjustment, 0, 0); gtk_box_pack_start (GTK_BOX (vbox), spin, FALSE, FALSE, 0); @@ -8572,14 +8573,14 @@ find_widget (GtkWidget *widget, FindWidgetData *data) } static GtkWidget * -find_widget_at_pointer (GdkDisplay *display) +find_widget_at_pointer (GdkDevice *device) { GtkWidget *widget = NULL; GdkWindow *pointer_window; gint x, y; FindWidgetData data; - pointer_window = gdk_display_get_window_at_pointer (display, NULL, NULL); + pointer_window = gdk_device_get_window_at_position (device, NULL, NULL); if (pointer_window) { @@ -8626,7 +8627,7 @@ destroy_properties (GtkWidget *widget, if (data->cursor) { - gdk_cursor_unref (data->cursor); + g_object_unref (data->cursor); data->cursor = NULL; } @@ -8640,22 +8641,21 @@ destroy_properties (GtkWidget *widget, } static gint -property_query_event (GtkWidget *widget, - GdkEvent *event, - struct PropertiesData *data) +property_query_event (GtkWidget *widget, + GdkEvent *event, + struct PropertiesData *data) { GtkWidget *res_widget = NULL; if (!data->in_query) return FALSE; - + if (event->type == GDK_BUTTON_RELEASE) { gtk_grab_remove (widget); - gdk_display_pointer_ungrab (gtk_widget_get_display (widget), - GDK_CURRENT_TIME); - - res_widget = find_widget_at_pointer (gtk_widget_get_display (widget)); + gdk_device_ungrab (gdk_event_get_device (event), GDK_CURRENT_TIME); + + res_widget = find_widget_at_pointer (gdk_event_get_device (event)); if (res_widget) { g_object_set_data (G_OBJECT (res_widget), "prop-editor-screen", @@ -8674,23 +8674,27 @@ query_properties (GtkButton *button, struct PropertiesData *data) { GtkWidget *widget = GTK_WIDGET (button); - gint failure; + GdkDisplay *display; + GdkDeviceManager *device_manager; + GdkDevice *device; g_signal_connect (button, "event", G_CALLBACK (property_query_event), data); + display = gtk_widget_get_display (widget); if (!data->cursor) - data->cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), - GDK_TARGET); - - failure = gdk_pointer_grab (gtk_widget_get_window (widget), - TRUE, - GDK_BUTTON_RELEASE_MASK, - NULL, - data->cursor, - GDK_CURRENT_TIME); + data->cursor = gdk_cursor_new_for_display (display, GDK_TARGET); + device_manager = gdk_display_get_device_manager (display); + device = gdk_device_manager_get_client_pointer (device_manager); + gdk_device_grab (device, + gtk_widget_get_window (widget), + GDK_OWNERSHIP_NONE, + TRUE, + GDK_BUTTON_RELEASE_MASK, + data->cursor, + GDK_CURRENT_TIME); gtk_grab_add (widget); data->in_query = TRUE; @@ -8763,7 +8767,7 @@ destroy_snapshot_data (GtkWidget *widget, if (data->cursor) { - gdk_cursor_unref (data->cursor); + g_object_unref (data->cursor); data->cursor = NULL; } @@ -8789,10 +8793,10 @@ snapshot_widget_event (GtkWidget *widget, if (event->type == GDK_BUTTON_RELEASE) { gtk_grab_remove (widget); - gdk_display_pointer_ungrab (gtk_widget_get_display (widget), - GDK_CURRENT_TIME); + gdk_device_ungrab (gdk_event_get_device (event), + GDK_CURRENT_TIME); - res_widget = find_widget_at_pointer (gtk_widget_get_display (widget)); + res_widget = find_widget_at_pointer (gdk_event_get_device (event)); if (data->is_toplevel && res_widget) res_widget = gtk_widget_get_toplevel (res_widget); if (res_widget) @@ -8836,10 +8840,15 @@ snapshot_widget (GtkButton *button, struct SnapshotData *data) { GtkWidget *widget = GTK_WIDGET (button); + GdkDevice *device; gint failure; - g_signal_connect (button, "event", - G_CALLBACK (snapshot_widget_event), data); + device = gtk_get_current_event_device (); + if (device == NULL) + return; + + if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD) + device = gdk_device_get_associated_device (device); data->is_toplevel = widget == data->toplevel_button; @@ -8847,12 +8856,16 @@ snapshot_widget (GtkButton *button, data->cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), GDK_TARGET); - failure = gdk_pointer_grab (gtk_widget_get_window (widget), - TRUE, - GDK_BUTTON_RELEASE_MASK, - NULL, - data->cursor, - GDK_CURRENT_TIME); + failure = gdk_device_grab (device, + gtk_widget_get_window (widget), + GDK_OWNERSHIP_APPLICATION, + TRUE, + GDK_BUTTON_RELEASE_MASK, + data->cursor, + GDK_CURRENT_TIME); + + g_signal_connect (button, "event", + G_CALLBACK (snapshot_widget_event), data); gtk_grab_add (widget); @@ -8917,19 +8930,19 @@ create_snapshot (GtkWidget *widget) void selection_test_received (GtkWidget *tree_view, - GtkSelectionData *data) + GtkSelectionData *selection_data) { GtkTreeModel *model; GtkListStore *store; GdkAtom *atoms; int i, l; - if (data->length < 0) + if (gtk_selection_data_get_length (selection_data) < 0) { g_print ("Selection retrieval failed\n"); return; } - if (data->type != GDK_SELECTION_TYPE_ATOM) + if (gtk_selection_data_get_data_type (selection_data) != GDK_SELECTION_TYPE_ATOM) { g_print ("Selection \"TARGETS\" was not returned as atoms!\n"); return; @@ -8943,9 +8956,9 @@ selection_test_received (GtkWidget *tree_view, /* Add new items to list */ - atoms = (GdkAtom *)data->data; + gtk_selection_data_get_targets (selection_data, + &atoms, &l); - l = data->length / sizeof (GdkAtom); for (i = 0; i < l; i++) { char *name; @@ -9065,7 +9078,7 @@ static int scroll_test_pos = 0.0; static gint scroll_test_draw (GtkWidget *widget, cairo_t *cr, - GtkAdjustment *adj) + GtkAdjustment *adjustment) { gint i,j; gint imin, imax, jmin, jmax; @@ -9076,13 +9089,13 @@ scroll_test_draw (GtkWidget *widget, imin = (clip.x) / 10; imax = (clip.x + clip.width + 9) / 10; - jmin = ((int)adj->value + clip.y) / 10; - jmax = ((int)adj->value + clip.y + clip.height + 9) / 10; + jmin = ((int)gtk_adjustment_get_value (adjustment) + clip.y) / 10; + jmax = ((int)gtk_adjustment_get_value (adjustment) + clip.y + clip.height + 9) / 10; for (i=imin; ivalue, 1+i%10, 1+j%10); + cairo_rectangle (cr, 10*i, 10*j - (int)gtk_adjustment_get_value (adjustment), 1+i%10, 1+j%10); cairo_fill (cr); @@ -9091,38 +9104,41 @@ scroll_test_draw (GtkWidget *widget, static gint scroll_test_scroll (GtkWidget *widget, GdkEventScroll *event, - GtkAdjustment *adj) + GtkAdjustment *adjustment) { - gdouble new_value = adj->value + ((event->direction == GDK_SCROLL_UP) ? - -adj->page_increment / 2: - adj->page_increment / 2); - new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size); - gtk_adjustment_set_value (adj, new_value); + gdouble new_value = gtk_adjustment_get_value (adjustment) + ((event->direction == GDK_SCROLL_UP) ? + -gtk_adjustment_get_page_increment (adjustment) / 2: + gtk_adjustment_get_page_increment (adjustment) / 2); + new_value = CLAMP (new_value, gtk_adjustment_get_lower (adjustment), gtk_adjustment_get_upper (adjustment) - gtk_adjustment_get_page_size (adjustment)); + gtk_adjustment_set_value (adjustment, new_value); return TRUE; } static void scroll_test_configure (GtkWidget *widget, GdkEventConfigure *event, - GtkAdjustment *adj) + GtkAdjustment *adjustment) { GtkAllocation allocation; gtk_widget_get_allocation (widget, &allocation); - adj->page_increment = 0.9 * allocation.height; - adj->page_size = allocation.height; - - g_signal_emit_by_name (adj, "changed"); + gtk_adjustment_configure (adjustment, + gtk_adjustment_get_value (adjustment), + gtk_adjustment_get_lower (adjustment), + gtk_adjustment_get_upper (adjustment), + 0.1 * allocation.height, + 0.9 * allocation.height, + allocation.height); } static void -scroll_test_adjustment_changed (GtkAdjustment *adj, GtkWidget *widget) +scroll_test_adjustment_changed (GtkAdjustment *adjustment, GtkWidget *widget) { GdkWindow *window; gint dy; - dy = scroll_test_pos - (int)adj->value; - scroll_test_pos = adj->value; + dy = scroll_test_pos - (int)gtk_adjustment_get_value (adjustment); + scroll_test_pos = gtk_adjustment_get_value (adjustment); if (!gtk_widget_is_drawable (widget)) return; @@ -9142,7 +9158,7 @@ create_scroll_test (GtkWidget *widget) GtkWidget *drawing_area; GtkWidget *scrollbar; GtkWidget *button; - GtkAdjustment *adj; + GtkAdjustment *adjustment; GdkGeometry geometry; GdkWindowHints geometry_mask; @@ -9174,21 +9190,21 @@ create_scroll_test (GtkWidget *widget) gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK | GDK_SCROLL_MASK); - adj = gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 180.0, 200.0); + adjustment = gtk_adjustment_new (0.0, 0.0, 1000.0, 1.0, 180.0, 200.0); scroll_test_pos = 0.0; - scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, adj); + scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, adjustment); gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0); gtk_widget_show (scrollbar); g_signal_connect (drawing_area, "draw", - G_CALLBACK (scroll_test_draw), adj); + G_CALLBACK (scroll_test_draw), adjustment); g_signal_connect (drawing_area, "configure_event", - G_CALLBACK (scroll_test_configure), adj); + G_CALLBACK (scroll_test_configure), adjustment); g_signal_connect (drawing_area, "scroll_event", - G_CALLBACK (scroll_test_scroll), adj); + G_CALLBACK (scroll_test_scroll), adjustment); - g_signal_connect (adj, "value_changed", + g_signal_connect (adjustment, "value_changed", G_CALLBACK (scroll_test_adjustment_changed), drawing_area); diff --git a/tests/testiconview-keynav.c b/tests/testiconview-keynav.c index 07e9479fa2..002c003e76 100644 --- a/tests/testiconview-keynav.c +++ b/tests/testiconview-keynav.c @@ -209,20 +209,28 @@ focus_in (GtkWidget *view, return FALSE; } +#define CSS \ + "GtkWindow {\n" \ + " background-color: @base_color;\n" \ + "}\n" + static void -header_style_set (GtkWidget *widget, - GtkStyle *old_style) +set_styles (void) { - GtkStyle *style; + GtkCssProvider *provider; + GdkScreen *screen; - style = gtk_widget_get_style (widget); + provider = gtk_css_provider_new (); - g_signal_handlers_block_by_func (widget, header_style_set, NULL); - gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, - &style->base[GTK_STATE_NORMAL]); - gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, - &style->text[GTK_STATE_NORMAL]); - g_signal_handlers_unblock_by_func (widget, header_style_set, NULL); + if (!gtk_css_provider_load_from_data (provider, CSS, -1, NULL)) + { + g_assert_not_reached (); + } + + screen = gdk_display_get_default_screen (gdk_display_get_default ()); + + gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } int @@ -234,6 +242,8 @@ main (int argc, char *argv[]) gtk_init (&argc, &argv); + set_styles (); + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (window), vbox); @@ -263,12 +273,6 @@ main (int argc, char *argv[]) G_CALLBACK (focus_in), NULL); g_signal_connect (views.view2, "focus-out-event", G_CALLBACK (focus_out), NULL); - g_signal_connect (views.header1, "style-set", - G_CALLBACK (header_style_set), NULL); - g_signal_connect (views.header2, "style-set", - G_CALLBACK (header_style_set), NULL); - g_signal_connect (window, "style-set", - G_CALLBACK (header_style_set), NULL); gtk_container_add (GTK_CONTAINER (vbox), views.header1); gtk_container_add (GTK_CONTAINER (vbox), views.view1); diff --git a/tests/testimage.c b/tests/testimage.c index 375a5b8142..d44559e9b3 100644 --- a/tests/testimage.c +++ b/tests/testimage.c @@ -61,7 +61,7 @@ drag_data_received (GtkWidget *widget, GdkPixbuf *pixbuf; - if (selection_data->length < 0) + if (gtk_selection_data_get_length (selection_data) < 0) return; pixbuf = gtk_selection_data_get_pixbuf (selection_data); diff --git a/tests/testinput.c b/tests/testinput.c index b125c7562c..c7348d7657 100644 --- a/tests/testinput.c +++ b/tests/testinput.c @@ -119,26 +119,27 @@ static void draw_brush (GtkWidget *widget, GdkInputSource source, gdouble x, gdouble y, gdouble pressure) { - GtkStyle *style; - GdkColor color; + GdkRGBA color; GdkRectangle update_rect; cairo_t *cr; - style = gtk_widget_get_style (widget); + color.alpha = 1.0; switch (source) { case GDK_SOURCE_MOUSE: - color = style->dark[gtk_widget_get_state (widget)]; + color.red = color.green = 0.0; + color.blue = 1.0; break; case GDK_SOURCE_PEN: - color.red = color.green = color.blue = 0; + color.red = color.green = color.blue = 0.0; break; case GDK_SOURCE_ERASER: - color.red = color.green = color.blue = 65535; + color.red = color.green = color.blue = 1.0; break; default: - color = style->light[gtk_widget_get_state (widget)]; + color.red = color.blue = 0.0; + color.green = 1.0; } update_rect.x = x - 10 * pressure; @@ -147,7 +148,7 @@ draw_brush (GtkWidget *widget, GdkInputSource source, update_rect.height = 20 * pressure; cr = cairo_create (surface); - gdk_cairo_set_source_color (cr, &color); + gdk_cairo_set_source_rgba (cr, &color); gdk_cairo_rectangle (cr, &update_rect); cairo_fill (cr); cairo_destroy (cr); diff --git a/tests/testnotebookdnd.c b/tests/testnotebookdnd.c index 459146d609..9adf48c254 100644 --- a/tests/testnotebookdnd.c +++ b/tests/testnotebookdnd.c @@ -1,5 +1,5 @@ /* -*- Mode: C; c-file-style: "gnu"; tab-width: 8 -*- */ -/* +/* * GTK - The GIMP Toolkit * Copyright (C) 2006 Carlos Garnacho Parro * @@ -22,12 +22,6 @@ */ #include -enum { - PACK_START, - PACK_END, - PACK_ALTERNATE -}; - static gpointer GROUP_A = "GROUP_A"; static gpointer GROUP_B = "GROUP_B"; @@ -69,10 +63,10 @@ static const GtkTargetEntry button_targets[] = { static GtkNotebook* window_creation_function (GtkNotebook *source_notebook, - GtkWidget *child, - gint x, - gint y, - gpointer data) + GtkWidget *child, + gint x, + gint y, + gpointer data) { GtkWidget *window, *notebook; @@ -82,7 +76,7 @@ window_creation_function (GtkNotebook *source_notebook, G_CALLBACK (window_creation_function), NULL); gtk_notebook_set_group_name (GTK_NOTEBOOK (notebook), - gtk_notebook_get_group_name (source_notebook)); + gtk_notebook_get_group_name (source_notebook)); gtk_container_add (GTK_CONTAINER (window), notebook); @@ -101,8 +95,8 @@ on_page_reordered (GtkNotebook *notebook, GtkWidget *child, guint page_num, gpoi static void on_notebook_drag_begin (GtkWidget *widget, - GdkDragContext *context, - gpointer data) + GdkDragContext *context, + gpointer data) { GdkPixbuf *pixbuf; guint page_num; @@ -111,9 +105,9 @@ on_notebook_drag_begin (GtkWidget *widget, if (page_num > 2) { - pixbuf = gtk_widget_render_icon (widget, - (page_num % 2) ? GTK_STOCK_HELP : GTK_STOCK_STOP, - GTK_ICON_SIZE_DND, NULL); + pixbuf = gtk_widget_render_icon_pixbuf (widget, + (page_num % 2) ? GTK_STOCK_HELP : GTK_STOCK_STOP, + GTK_ICON_SIZE_DND); gtk_drag_set_icon_pixbuf (context, pixbuf, 0, 0); g_object_unref (pixbuf); @@ -122,19 +116,19 @@ on_notebook_drag_begin (GtkWidget *widget, static void on_button_drag_data_received (GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *data, - guint info, - guint time, - gpointer user_data) + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *data, + guint info, + guint time, + gpointer user_data) { GtkWidget *source, *tab_label; GtkWidget **child; source = gtk_drag_get_source_widget (context); - child = (void*) data->data; + child = (void*) gtk_selection_data_get_data (data); tab_label = gtk_notebook_get_tab_label (GTK_NOTEBOOK (source), *child); g_print ("Removing tab: %s\n", gtk_label_get_text (GTK_LABEL (tab_label))); @@ -144,9 +138,8 @@ on_button_drag_data_received (GtkWidget *widget, static GtkWidget* create_notebook (gchar **labels, - const gchar *group, - gint packing, - GtkPositionType pos) + const gchar *group, + GtkPositionType pos) { GtkWidget *notebook, *title, *page; gint count = 0; @@ -171,26 +164,21 @@ create_notebook (gchar **labels, gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (notebook), page, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (notebook), page, TRUE); - if (packing == PACK_END || - (packing == PACK_ALTERNATE && count % 2 == 1)) - gtk_container_child_set (GTK_CONTAINER (notebook), page, "tab-pack", GTK_PACK_END, NULL); - count++; labels++; } g_signal_connect (GTK_NOTEBOOK (notebook), "page-reordered", - G_CALLBACK (on_page_reordered), NULL); + G_CALLBACK (on_page_reordered), NULL); g_signal_connect_after (G_OBJECT (notebook), "drag-begin", - G_CALLBACK (on_notebook_drag_begin), NULL); + G_CALLBACK (on_notebook_drag_begin), NULL); return notebook; } static GtkWidget* create_notebook_with_notebooks (gchar **labels, - const gchar *group, - gint packing, - GtkPositionType pos) + const gchar *group, + GtkPositionType pos) { GtkWidget *notebook, *title, *page; gint count = 0; @@ -206,27 +194,23 @@ create_notebook_with_notebooks (gchar **labels, while (*labels) { - page = create_notebook (labels, group, packing, pos); + page = create_notebook (labels, group, pos); gtk_notebook_popup_enable (GTK_NOTEBOOK (page)); - + title = gtk_label_new (*labels); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, title); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (notebook), page, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (notebook), page, TRUE); - - if (packing == PACK_END || - (packing == PACK_ALTERNATE && count % 2 == 1)) - gtk_container_child_set (GTK_CONTAINER (notebook), page, "tab-pack", GTK_PACK_END, NULL); count++; labels++; } g_signal_connect (GTK_NOTEBOOK (notebook), "page-reordered", - G_CALLBACK (on_page_reordered), NULL); + G_CALLBACK (on_page_reordered), NULL); g_signal_connect_after (G_OBJECT (notebook), "drag-begin", - G_CALLBACK (on_notebook_drag_begin), NULL); + G_CALLBACK (on_notebook_drag_begin), NULL); return notebook; } @@ -238,13 +222,13 @@ create_trash_button (void) button = gtk_button_new_from_stock (GTK_STOCK_DELETE); gtk_drag_dest_set (button, - GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP, - button_targets, - G_N_ELEMENTS (button_targets), - GDK_ACTION_MOVE); + GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP, + button_targets, + G_N_ELEMENTS (button_targets), + GDK_ACTION_MOVE); g_signal_connect_after (G_OBJECT (button), "drag-data-received", - G_CALLBACK (on_button_drag_data_received), NULL); + G_CALLBACK (on_button_drag_data_received), NULL); return button; } @@ -259,24 +243,24 @@ main (gint argc, gchar *argv[]) table = gtk_table_new (3, 2, FALSE); gtk_table_attach_defaults (GTK_TABLE (table), - create_notebook (tabs1, GROUP_A, PACK_ALTERNATE, GTK_POS_TOP), - 0, 1, 0, 1); + create_notebook (tabs1, GROUP_A, GTK_POS_TOP), + 0, 1, 0, 1); gtk_table_attach_defaults (GTK_TABLE (table), - create_notebook (tabs2, GROUP_B, PACK_ALTERNATE, GTK_POS_BOTTOM), - 0, 1, 1, 2); + create_notebook (tabs2, GROUP_B, GTK_POS_BOTTOM), + 0, 1, 1, 2); gtk_table_attach_defaults (GTK_TABLE (table), - create_notebook (tabs3, GROUP_B, PACK_END, GTK_POS_LEFT), - 1, 2, 0, 1); + create_notebook (tabs3, GROUP_B, GTK_POS_LEFT), + 1, 2, 0, 1); gtk_table_attach_defaults (GTK_TABLE (table), - create_notebook_with_notebooks (tabs4, GROUP_A, PACK_ALTERNATE, GTK_POS_RIGHT), - 1, 2, 1, 2); + create_notebook_with_notebooks (tabs4, GROUP_A, GTK_POS_RIGHT), + 1, 2, 1, 2); gtk_table_attach (GTK_TABLE (table), - create_trash_button (), 1, 2, 2, 3, - GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); + create_trash_button (), 1, 2, 2, 3, + GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); gtk_container_add (GTK_CONTAINER (window), table); gtk_window_set_default_size (GTK_WINDOW (window), 400, 400); diff --git a/tests/testnumerableicon.c b/tests/testnumerableicon.c new file mode 100644 index 0000000000..508357bfe1 --- /dev/null +++ b/tests/testnumerableicon.c @@ -0,0 +1,198 @@ +/* testnumerableicon.c + * Copyright (C) 2010 Red Hat, Inc. + * Authors: Cosimo Cecchi + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include "prop-editor.h" + + +typedef struct { + GIcon *numerable; + GtkWidget *image; + gboolean odd; + GtkIconSize size; +} PackData; + +static void +button_clicked_cb (GtkButton *b, + gpointer user_data) +{ + PackData *d = user_data; + GtkCssProvider *provider; + GtkStyleContext *style; + GError *error = NULL; + gchar *data, *bg_str, *grad1, *grad2; + const gchar data_format[] = "GtkNumerableIcon { background-color: %s; color: #000000;" + "background-image: -gtk-gradient (linear, 0 0, 1 1, from(%s), to(%s));" + "font: Monospace 12;" + /* "background-image: url('apple-red.png');" */ + "}"; + + bg_str = g_strdup_printf ("rgb(%d,%d,%d)", g_random_int_range (0, 255), g_random_int_range (0, 255), g_random_int_range (0, 255)); + grad1 = g_strdup_printf ("rgb(%d,%d,%d)", g_random_int_range (0, 255), g_random_int_range (0, 255), g_random_int_range (0, 255)); + grad2 = g_strdup_printf ("rgb(%d,%d,%d)", g_random_int_range (0, 255), g_random_int_range (0, 255), g_random_int_range (0, 255)); + + data = g_strdup_printf (data_format, bg_str, grad1, grad2); + + provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, data, -1, &error); + + g_assert (error == NULL); + + style = gtk_widget_get_style_context (d->image); + gtk_style_context_add_provider (style, GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_USER); + + if (d->odd) { + gtk_numerable_icon_set_background_icon_name (GTK_NUMERABLE_ICON (d->numerable), NULL); + gtk_numerable_icon_set_count (GTK_NUMERABLE_ICON (d->numerable), g_random_int_range (-99, 99)); + } else { + gtk_numerable_icon_set_background_icon_name (GTK_NUMERABLE_ICON (d->numerable), + "emblem-favorite"); + gtk_numerable_icon_set_label (GTK_NUMERABLE_ICON (d->numerable), "IVX"); + } + + gtk_image_set_from_gicon (GTK_IMAGE (d->image), d->numerable, d->size); + + d->odd = !d->odd; + + g_free (data); + g_free (bg_str); + g_free (grad1); + g_free (grad2); + + g_object_unref (provider); +} + +static gboolean +delete_event_cb (GtkWidget *editor, + gint response, + gpointer user_data) +{ + gtk_widget_hide (editor); + + return TRUE; +} + +static void +properties_cb (GtkWidget *button, + GObject *entry) +{ + GtkWidget *editor; + + editor = g_object_get_data (entry, "properties-dialog"); + + if (editor == NULL) + { + editor = create_prop_editor (G_OBJECT (entry), G_TYPE_INVALID); + gtk_container_set_border_width (GTK_CONTAINER (editor), 12); + gtk_window_set_transient_for (GTK_WINDOW (editor), + GTK_WINDOW (gtk_widget_get_toplevel (button))); + g_signal_connect (editor, "delete-event", G_CALLBACK (delete_event_cb), NULL); + g_object_set_data (entry, "properties-dialog", editor); + } + + gtk_window_present (GTK_WINDOW (editor)); +} + +static void +refresh_cb (GtkWidget *button, + gpointer user_data) +{ + PackData *d = user_data; + + gtk_image_set_from_gicon (GTK_IMAGE (d->image), d->numerable, d->size); +} + +static void +pack_numerable (GtkWidget *parent, + GtkIconSize size) +{ + PackData *d; + GtkWidget *vbox, *label, *image, *button; + gchar *str; + GIcon *icon, *numerable; + + d = g_slice_new0 (PackData); + + image = gtk_image_new (); + icon = g_themed_icon_new ("system-file-manager"); + numerable = gtk_numerable_icon_new (icon); + + d->image = image; + d->numerable = numerable; + d->odd = FALSE; + d->size = size; + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_box_pack_start (GTK_BOX (parent), vbox, FALSE, FALSE, 0); + + gtk_numerable_icon_set_count (GTK_NUMERABLE_ICON (numerable), 42); + gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0); + gtk_numerable_icon_set_style_context (GTK_NUMERABLE_ICON (numerable), + gtk_widget_get_style_context (image)); + gtk_image_set_from_gicon (GTK_IMAGE (image), numerable, size); + + label = gtk_label_new (NULL); + str = g_strdup_printf ("Numerable icon, hash %u", g_icon_hash (numerable)); + gtk_label_set_label (GTK_LABEL (label), str); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + + button = gtk_button_new_with_label ("Change icon number"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + g_signal_connect (button, "clicked", + G_CALLBACK (button_clicked_cb), d); + + button = gtk_button_new_with_label ("Properties"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + g_signal_connect (button, "clicked", + G_CALLBACK (properties_cb), numerable); + + button = gtk_button_new_with_label ("Refresh"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + g_signal_connect (button, "clicked", + G_CALLBACK (refresh_cb), d); +} + +int +main (int argc, + char **argv) +{ + GtkWidget *hbox, *toplevel; + + gtk_init (&argc, &argv); + + toplevel = gtk_window_new (GTK_WINDOW_TOPLEVEL); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_add (GTK_CONTAINER (toplevel), hbox); + + pack_numerable (hbox, GTK_ICON_SIZE_DIALOG); + pack_numerable (hbox, GTK_ICON_SIZE_BUTTON); + + gtk_widget_show_all (toplevel); + + g_signal_connect (toplevel, "delete-event", + G_CALLBACK (gtk_main_quit), NULL); + + gtk_main (); + + return 0; +} + diff --git a/tests/testselection.c b/tests/testselection.c index b6b79d3a2f..de4ec6a950 100644 --- a/tests/testselection.c +++ b/tests/testselection.c @@ -265,24 +265,28 @@ stringify_span (guchar *data, gint *position) } void -selection_received (GtkWidget *widget, GtkSelectionData *data) +selection_received (GtkWidget *widget, GtkSelectionData *selection_data) { int position; int i; SelType seltype; char *str; + guchar *data; GtkTextBuffer *buffer; - - if (data->length < 0) + GdkAtom type; + + if (gtk_selection_data_get_length (selection_data) < 0) { g_print("Error retrieving selection\n"); return; } + type = gtk_selection_data_get_data_type (selection_data); + seltype = SEL_TYPE_NONE; for (i=0; itype) + if (seltypes[i] == type) { seltype = i; break; @@ -291,7 +295,7 @@ selection_received (GtkWidget *widget, GtkSelectionData *data) if (seltype == SEL_TYPE_NONE) { - char *name = gdk_atom_name (data->type); + char *name = gdk_atom_name (type); g_print("Don't know how to handle type: %s\n", name?name:""); return; @@ -306,38 +310,39 @@ selection_received (GtkWidget *widget, GtkSelectionData *data) gtk_text_buffer_set_text (buffer, "", -1); position = 0; - while (position < data->length) + while (position < gtk_selection_data_get_length (selection_data)) { + data = (guchar *) gtk_selection_data_get_data (selection_data); switch (seltype) { case ATOM: - str = stringify_atom (data->data, &position); + str = stringify_atom (data, &position); break; case COMPOUND_TEXT: case STRING: case TEXT: - str = stringify_text (data->data, &position); + str = stringify_text (data, &position); break; case BITMAP: case DRAWABLE: case PIXMAP: case WINDOW: case COLORMAP: - str = stringify_xid (data->data, &position); + str = stringify_xid (data, &position); break; case INTEGER: case PIXEL: - str = stringify_integer (data->data, &position); + str = stringify_integer (data, &position); break; case SPAN: - str = stringify_span (data->data, &position); + str = stringify_span (data, &position); break; default: { - char *name = gdk_atom_name (data->type); + char *name = gdk_atom_name (gtk_selection_data_get_data_type (selection_data)); g_print("Can't convert type %s to string\n", name?name:""); - position = data->length; + position = gtk_selection_data_get_length (selection_data); continue; } } diff --git a/tests/testsocket.c b/tests/testsocket.c index e822e13e32..a17a74970e 100644 --- a/tests/testsocket.c +++ b/tests/testsocket.c @@ -281,13 +281,22 @@ static void grab_window_toggled (GtkToggleButton *button, GtkWidget *widget) { + GdkDevice *device = gtk_get_current_event_device (); + + if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) + device = gdk_device_get_associated_device (device); if (gtk_toggle_button_get_active (button)) { int status; - status = gdk_keyboard_grab (gtk_widget_get_window (widget), - FALSE, GDK_CURRENT_TIME); + status = gdk_device_grab (device, + gtk_widget_get_window (widget), + GDK_OWNERSHIP_NONE, + FALSE, + GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, + NULL, + GDK_CURRENT_TIME); if (status != GDK_GRAB_SUCCESS) g_warning ("Could not grab keyboard! (%s)", grab_string (status)); @@ -295,7 +304,7 @@ grab_window_toggled (GtkToggleButton *button, } else { - gdk_keyboard_ungrab (GDK_CURRENT_TIME); + gdk_device_ungrab (device, GDK_CURRENT_TIME); } } diff --git a/tests/testtooltips.c b/tests/testtooltips.c index 54c2e05b88..483b8fd2a3 100644 --- a/tests/testtooltips.c +++ b/tests/testtooltips.c @@ -359,7 +359,7 @@ main (int argc, char *argv[]) /* Set a tooltip on the column */ column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), 0); gtk_tree_view_column_set_clickable (column, TRUE); - g_object_set (column->button, "tooltip-text", "Header", NULL); + g_object_set (gtk_tree_view_column_get_button (column), "tooltip-text", "Header", NULL); gtk_box_pack_start (GTK_BOX (box), tree_view, FALSE, FALSE, 2); diff --git a/tests/testtoplevelembed.c b/tests/testtoplevelembed.c new file mode 100644 index 0000000000..c698252acb --- /dev/null +++ b/tests/testtoplevelembed.c @@ -0,0 +1,103 @@ +#include "config.h" +#include + +GtkWidget *notebook; + + +static void +remove_notebook_page (GtkWidget *button, + GtkWidget *toplevel) +{ + gtk_container_remove (GTK_CONTAINER (notebook), toplevel); + gtk_widget_show (toplevel); +} + +GtkWidget * +create_tab_label (GtkWidget *toplevel) +{ + GtkWidget *box = gtk_hbox_new (FALSE, 2); + GtkWidget *label = gtk_label_new (G_OBJECT_TYPE_NAME (toplevel)); + GtkWidget *button = gtk_button_new (); + GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); + + gtk_container_add (GTK_CONTAINER (button), image); + gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (box), button, FALSE, TRUE, 0); + + g_signal_connect (button, "clicked", + G_CALLBACK (remove_notebook_page), toplevel); + + gtk_widget_show_all (box); + return box; +} + +static void +toplevel_delete_event (GtkWidget *toplevel, + GdkEvent *event, + gpointer none) +{ + GdkWindow *gdk_win; + GtkWidget *label = create_tab_label (toplevel); + + gdk_win = gtk_widget_get_window (notebook); + g_assert (gdk_win); + + gtk_widget_hide (toplevel); + gtk_widget_unrealize (toplevel); + + gtk_widget_set_parent_window (toplevel, gdk_win); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), toplevel, label); + + gtk_widget_show (toplevel); +} + +gint +main (gint argc, gchar **argv) +{ + GtkWidget *window; + GtkWidget *widget; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Toplevel widget embedding example"); + g_signal_connect (window, "destroy", gtk_main_quit, NULL); + + notebook = gtk_notebook_new (); + gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE); + gtk_container_add (GTK_CONTAINER (window), notebook); + + gtk_widget_realize (notebook); + + widget = gtk_about_dialog_new (); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + widget = gtk_file_chooser_dialog_new ("the chooser", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + widget = gtk_color_selection_dialog_new ("the colorsel"); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + widget = gtk_font_selection_dialog_new ("the fontsel"); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + widget = gtk_recent_chooser_dialog_new ("the recent chooser", NULL, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + widget = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, + "Do you have any questions ?"); + toplevel_delete_event (widget, NULL, NULL); + g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); + + gtk_widget_show_all (window); + gtk_main (); +} diff --git a/tests/testtreeedit.c b/tests/testtreeedit.c index 30d2a3fa54..8e0cc32682 100644 --- a/tests/testtreeedit.c +++ b/tests/testtreeedit.c @@ -24,24 +24,27 @@ typedef struct { const gchar *string; gboolean is_editable; + gboolean is_sensitive; gint progress; } ListEntry; enum { STRING_COLUMN, IS_EDITABLE_COLUMN, + IS_SENSITIVE_COLUMN, PIXBUF_COLUMN, + LAST_PIXBUF_COLUMN, PROGRESS_COLUMN, NUM_COLUMNS }; static ListEntry model_strings[] = { - {"A simple string", TRUE, 0 }, - {"Another string!", TRUE, 10 }, - {"Guess what, a third string. This one can't be edited", FALSE, 47 }, - {"And then a fourth string. Neither can this", FALSE, 48 }, - {"Multiline\nFun!", TRUE, 75 }, + {"A simple string", TRUE, TRUE, 0 }, + {"Another string!", TRUE, TRUE, 10 }, + {"Guess what, a third string. This one can't be edited", FALSE, TRUE, 47 }, + {"And then a fourth string. Neither can this", FALSE, TRUE, 48 }, + {"Multiline\nFun!", TRUE, FALSE, 75 }, { NULL } }; @@ -51,16 +54,19 @@ create_model (void) GtkTreeStore *model; GtkTreeIter iter; gint i; - GdkPixbuf *foo; + GdkPixbuf *foo, *bar; GtkWidget *blah; blah = gtk_window_new (GTK_WINDOW_TOPLEVEL); - foo = gtk_widget_render_icon (blah, GTK_STOCK_NEW, GTK_ICON_SIZE_MENU, NULL); + foo = gtk_widget_render_icon_pixbuf (blah, GTK_STOCK_NEW, GTK_ICON_SIZE_MENU); + bar = gtk_widget_render_icon_pixbuf (blah, GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU); gtk_widget_destroy (blah); model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF, G_TYPE_INT); @@ -71,7 +77,9 @@ create_model (void) gtk_tree_store_set (model, &iter, STRING_COLUMN, model_strings[i].string, IS_EDITABLE_COLUMN, model_strings[i].is_editable, + IS_SENSITIVE_COLUMN, model_strings[i].is_sensitive, PIXBUF_COLUMN, foo, + LAST_PIXBUF_COLUMN, bar, PROGRESS_COLUMN, model_strings[i].progress, -1); } @@ -80,9 +88,9 @@ create_model (void) } static void -toggled (GtkCellRendererToggle *cell, - gchar *path_string, - gpointer data) +editable_toggled (GtkCellRendererToggle *cell, + gchar *path_string, + gpointer data) { GtkTreeModel *model = GTK_TREE_MODEL (data); GtkTreeIter iter; @@ -98,6 +106,25 @@ toggled (GtkCellRendererToggle *cell, gtk_tree_path_free (path); } +static void +sensitive_toggled (GtkCellRendererToggle *cell, + gchar *path_string, + gpointer data) +{ + GtkTreeModel *model = GTK_TREE_MODEL (data); + GtkTreeIter iter; + GtkTreePath *path = gtk_tree_path_new_from_string (path_string); + gboolean value; + + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_model_get (model, &iter, IS_SENSITIVE_COLUMN, &value, -1); + + value = !value; + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, IS_SENSITIVE_COLUMN, value, -1); + + gtk_tree_path_free (path); +} + static void edited (GtkCellRendererText *cell, gchar *path_string, @@ -128,15 +155,88 @@ button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer callback_ return FALSE; } +typedef struct { + GtkCellArea *area; + GtkCellRenderer *renderer; +} CallbackData; + +static void +align_cell_toggled (GtkToggleButton *toggle, + CallbackData *data) +{ + gboolean active = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (data->area, data->renderer, "align", active, NULL); +} + +static void +expand_cell_toggled (GtkToggleButton *toggle, + CallbackData *data) +{ + gboolean active = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (data->area, data->renderer, "expand", active, NULL); +} + +static void +fixed_cell_toggled (GtkToggleButton *toggle, + CallbackData *data) +{ + gboolean active = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (data->area, data->renderer, "fixed-size", active, NULL); +} + +enum { + CNTL_EXPAND, + CNTL_ALIGN, + CNTL_FIXED +}; + +static void +create_control (GtkWidget *box, gint number, gint cntl, CallbackData *data) +{ + GtkWidget *checkbutton; + GCallback callback = NULL; + gchar *name = NULL; + + switch (cntl) + { + case CNTL_EXPAND: + name = g_strdup_printf ("Expand Cell #%d", number); + callback = G_CALLBACK (expand_cell_toggled); + break; + case CNTL_ALIGN: + name = g_strdup_printf ("Align Cell #%d", number); + callback = G_CALLBACK (align_cell_toggled); + break; + case CNTL_FIXED: + name = g_strdup_printf ("Fix size Cell #%d", number); + callback = G_CALLBACK (fixed_cell_toggled); + break; + } + + checkbutton = gtk_check_button_new_with_label (name); + gtk_widget_show (checkbutton); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), cntl == CNTL_FIXED); + gtk_box_pack_start (GTK_BOX (box), checkbutton, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (checkbutton), "toggled", callback, data); + g_free (name); +} + gint main (gint argc, gchar **argv) { GtkWidget *window; GtkWidget *scrolled_window; GtkWidget *tree_view; + GtkWidget *vbox, *hbox, *cntl_vbox; GtkTreeModel *tree_model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; + GtkCellArea *area; + CallbackData callback[4]; gtk_init (&argc, &argv); @@ -147,10 +247,15 @@ main (gint argc, gchar **argv) gtk_window_set_title (GTK_WINDOW (window), "GtkTreeView editing sample"); g_signal_connect (window, "destroy", gtk_main_quit, NULL); + vbox = gtk_vbox_new (FALSE, 6); + gtk_widget_show (vbox); + gtk_container_add (GTK_CONTAINER (window), vbox); + scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (window), scrolled_window); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); tree_model = create_model (); tree_view = gtk_tree_view_new_with_model (tree_model); @@ -160,38 +265,58 @@ main (gint argc, gchar **argv) column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, "String"); + area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)); renderer = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, - "pixbuf", PIXBUF_COLUMN, NULL); + "pixbuf", PIXBUF_COLUMN, + "sensitive", IS_SENSITIVE_COLUMN, + NULL); + callback[0].area = area; + callback[0].renderer = renderer; renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, "text", STRING_COLUMN, "editable", IS_EDITABLE_COLUMN, + "sensitive", IS_SENSITIVE_COLUMN, NULL); + callback[1].area = area; + callback[1].renderer = renderer; g_signal_connect (renderer, "edited", G_CALLBACK (edited), tree_model); + renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, "text", STRING_COLUMN, "editable", IS_EDITABLE_COLUMN, + "sensitive", IS_SENSITIVE_COLUMN, NULL); + callback[2].area = area; + callback[2].renderer = renderer; g_signal_connect (renderer, "edited", G_CALLBACK (edited), tree_model); renderer = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (column, renderer, TRUE); + g_object_set (renderer, + "xalign", 0.0, + NULL); + gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, - "pixbuf", PIXBUF_COLUMN, NULL); + "pixbuf", LAST_PIXBUF_COLUMN, + "sensitive", IS_SENSITIVE_COLUMN, + NULL); + callback[3].area = area; + callback[3].renderer = renderer; + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); renderer = gtk_cell_renderer_toggle_new (); g_signal_connect (renderer, "toggled", - G_CALLBACK (toggled), tree_model); + G_CALLBACK (editable_toggled), tree_model); g_object_set (renderer, "xalign", 0.0, @@ -202,6 +327,19 @@ main (gint argc, gchar **argv) "active", IS_EDITABLE_COLUMN, NULL); + renderer = gtk_cell_renderer_toggle_new (); + g_signal_connect (renderer, "toggled", + G_CALLBACK (sensitive_toggled), tree_model); + + g_object_set (renderer, + "xalign", 0.0, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), + -1, "Sensitive", + renderer, + "active", IS_SENSITIVE_COLUMN, + NULL); + renderer = gtk_cell_renderer_progress_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), -1, "Progress", @@ -212,7 +350,41 @@ main (gint argc, gchar **argv) gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); gtk_window_set_default_size (GTK_WINDOW (window), - 800, 175); + 800, 250); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_widget_show (hbox); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + + /* Alignment controls */ + cntl_vbox = gtk_vbox_new (FALSE, 2); + gtk_widget_show (cntl_vbox); + gtk_box_pack_start (GTK_BOX (hbox), cntl_vbox, FALSE, FALSE, 0); + + create_control (cntl_vbox, 1, CNTL_ALIGN, &callback[0]); + create_control (cntl_vbox, 2, CNTL_ALIGN, &callback[1]); + create_control (cntl_vbox, 3, CNTL_ALIGN, &callback[2]); + create_control (cntl_vbox, 4, CNTL_ALIGN, &callback[3]); + + /* Expand controls */ + cntl_vbox = gtk_vbox_new (FALSE, 2); + gtk_widget_show (cntl_vbox); + gtk_box_pack_start (GTK_BOX (hbox), cntl_vbox, FALSE, FALSE, 0); + + create_control (cntl_vbox, 1, CNTL_EXPAND, &callback[0]); + create_control (cntl_vbox, 2, CNTL_EXPAND, &callback[1]); + create_control (cntl_vbox, 3, CNTL_EXPAND, &callback[2]); + create_control (cntl_vbox, 4, CNTL_EXPAND, &callback[3]); + + /* Fixed controls */ + cntl_vbox = gtk_vbox_new (FALSE, 2); + gtk_widget_show (cntl_vbox); + gtk_box_pack_start (GTK_BOX (hbox), cntl_vbox, FALSE, FALSE, 0); + + create_control (cntl_vbox, 1, CNTL_FIXED, &callback[0]); + create_control (cntl_vbox, 2, CNTL_FIXED, &callback[1]); + create_control (cntl_vbox, 3, CNTL_FIXED, &callback[2]); + create_control (cntl_vbox, 4, CNTL_FIXED, &callback[3]); gtk_widget_show_all (window); gtk_main (); diff --git a/tests/testtreemenu.c b/tests/testtreemenu.c new file mode 100644 index 0000000000..7701b9dd0d --- /dev/null +++ b/tests/testtreemenu.c @@ -0,0 +1,556 @@ +#include +#include "cellareascaffold.h" + + +/******************************************************* + * Grid Test * + *******************************************************/ + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ +static GdkPixbuf * +create_color_pixbuf (const char *color) +{ + GdkPixbuf *pixbuf; + GdkColor col; + + int x; + int num; + int rowstride; + guchar *pixels, *p; + + if (!gdk_color_parse (color, &col)) + return NULL; + + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, + FALSE, 8, + 16, 16); + + rowstride = gdk_pixbuf_get_rowstride (pixbuf); + p = pixels = gdk_pixbuf_get_pixels (pixbuf); + + num = gdk_pixbuf_get_width (pixbuf) * + gdk_pixbuf_get_height (pixbuf); + + for (x = 0; x < num; x++) { + p[0] = col.red / 65535 * 255; + p[1] = col.green / 65535 * 255; + p[2] = col.blue / 65535 * 255; + p += 3; + } + + return pixbuf; +} + +static GtkWidget * +create_menu_grid_demo (void) +{ + GtkWidget *menu; + GtkTreeIter iter; + GdkPixbuf *pixbuf; + GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new (); + GtkListStore *store; + + store = gtk_list_store_new (1, GDK_TYPE_PIXBUF); + + menu = gtk_tree_menu_new_full (NULL, GTK_TREE_MODEL (store), NULL); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (menu), cell, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (menu), cell, "pixbuf", 0, NULL); + + gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (menu), 3); + + /* first row */ + pixbuf = create_color_pixbuf ("red"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("green"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("blue"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + /* second row */ + pixbuf = create_color_pixbuf ("yellow"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("black"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("white"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + /* third row */ + pixbuf = create_color_pixbuf ("gray"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("snow"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + pixbuf = create_color_pixbuf ("magenta"); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + -1); + g_object_unref (pixbuf); + + g_object_unref (store); + + return menu; +} +#endif + +/******************************************************* + * Simple Test * + *******************************************************/ +enum { + SIMPLE_COLUMN_NAME, + SIMPLE_COLUMN_ICON, + SIMPLE_COLUMN_DESCRIPTION, + N_SIMPLE_COLUMNS +}; + +static GtkCellRenderer *cell_1 = NULL, *cell_2 = NULL, *cell_3 = NULL; + +static GtkTreeModel * +simple_tree_model (void) +{ + GtkTreeIter iter, parent, child; + GtkTreeStore *store = + gtk_tree_store_new (N_SIMPLE_COLUMNS, + G_TYPE_STRING, /* name text */ + G_TYPE_STRING, /* icon name */ + G_TYPE_STRING); /* description text */ + + + gtk_tree_store_append (store, &parent, NULL); + gtk_tree_store_set (store, &parent, + SIMPLE_COLUMN_NAME, "Alice in wonderland", + SIMPLE_COLUMN_ICON, "gtk-execute", + SIMPLE_COLUMN_DESCRIPTION, + "Twas brillig, and the slithy toves " + "did gyre and gimble in the wabe", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Go ask", + SIMPLE_COLUMN_ICON, "gtk-zoom-out", + SIMPLE_COLUMN_DESCRIPTION, "One pill makes you shorter", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Alice", + SIMPLE_COLUMN_ICON, "gtk-zoom-in", + SIMPLE_COLUMN_DESCRIPTION, "Another one makes you tall", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Jefferson Airplane", + SIMPLE_COLUMN_ICON, "gtk-zoom-fit", + SIMPLE_COLUMN_DESCRIPTION, "The one's that mother gives you dont do anything at all", + -1); + + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Marry Poppins", + SIMPLE_COLUMN_ICON, "gtk-yes", + SIMPLE_COLUMN_DESCRIPTION, "Supercalifragilisticexpialidocious", + -1); + + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "George Bush", + SIMPLE_COLUMN_ICON, "gtk-dialog-question", + SIMPLE_COLUMN_DESCRIPTION, "It's a very good question, very direct, " + "and I'm not going to answer it", + -1); + + gtk_tree_store_append (store, &parent, NULL); + gtk_tree_store_set (store, &parent, + SIMPLE_COLUMN_NAME, "Whinnie the pooh", + SIMPLE_COLUMN_ICON, "gtk-stop", + SIMPLE_COLUMN_DESCRIPTION, "The most wonderful thing about tiggers, " + "is tiggers are wonderful things", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Tigger", + SIMPLE_COLUMN_ICON, "gtk-yes", + SIMPLE_COLUMN_DESCRIPTION, "Eager", + -1); + + gtk_tree_store_append (store, &child, &iter); + gtk_tree_store_set (store, &child, + SIMPLE_COLUMN_NAME, "Jump", + SIMPLE_COLUMN_ICON, "gtk-yes", + SIMPLE_COLUMN_DESCRIPTION, "Very High", + -1); + + gtk_tree_store_append (store, &child, &iter); + gtk_tree_store_set (store, &child, + SIMPLE_COLUMN_NAME, "Pounce", + SIMPLE_COLUMN_ICON, "gtk-no", + SIMPLE_COLUMN_DESCRIPTION, "On Pooh", + -1); + + gtk_tree_store_append (store, &child, &iter); + gtk_tree_store_set (store, &child, + SIMPLE_COLUMN_NAME, "Bounce", + SIMPLE_COLUMN_ICON, "gtk-cancel", + SIMPLE_COLUMN_DESCRIPTION, "Around", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Owl", + SIMPLE_COLUMN_ICON, "gtk-stop", + SIMPLE_COLUMN_DESCRIPTION, "Wise", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Eor", + SIMPLE_COLUMN_ICON, "gtk-no", + SIMPLE_COLUMN_DESCRIPTION, "Depressed", + -1); + + gtk_tree_store_append (store, &iter, &parent); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Piglet", + SIMPLE_COLUMN_ICON, "gtk-media-play", + SIMPLE_COLUMN_DESCRIPTION, "Insecure", + -1); + + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Aleister Crowley", + SIMPLE_COLUMN_ICON, "gtk-about", + SIMPLE_COLUMN_DESCRIPTION, + "Thou shalt do what thou wilt shall be the whole of the law", + -1); + + gtk_tree_store_append (store, &iter, NULL); + gtk_tree_store_set (store, &iter, + SIMPLE_COLUMN_NAME, "Mark Twain", + SIMPLE_COLUMN_ICON, "gtk-quit", + SIMPLE_COLUMN_DESCRIPTION, + "Giving up smoking is the easiest thing in the world. " + "I know because I've done it thousands of times.", + -1); + + + return (GtkTreeModel *)store; +} + +static GtkCellArea * +create_cell_area (void) +{ + GtkCellArea *area; + GtkCellRenderer *renderer; + + area = gtk_cell_area_box_new (); + + cell_1 = renderer = gtk_cell_renderer_text_new (); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, FALSE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_NAME); + + cell_2 = renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (G_OBJECT (renderer), "xalign", 0.0F, NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, TRUE, FALSE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "stock-id", SIMPLE_COLUMN_ICON); + + cell_3 = renderer = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (renderer), + "wrap-mode", PANGO_WRAP_WORD, + "wrap-width", 215, + NULL); + gtk_cell_area_box_pack_start (GTK_CELL_AREA_BOX (area), renderer, FALSE, TRUE, FALSE); + gtk_cell_area_attribute_connect (area, renderer, "text", SIMPLE_COLUMN_DESCRIPTION); + + return area; +} + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ +static GtkWidget * +simple_tree_menu (GtkCellArea *area) +{ + GtkTreeModel *model; + GtkWidget *menu; + + model = simple_tree_model (); + + menu = gtk_tree_menu_new_with_area (area); + gtk_tree_menu_set_model (GTK_TREE_MENU (menu), model); + + return menu; +} +#endif + +static void +orientation_changed (GtkComboBox *combo, + GtkCellArea *area) +{ + GtkOrientation orientation = gtk_combo_box_get_active (combo); + + gtk_orientable_set_orientation (GTK_ORIENTABLE (area), orientation); +} + +static void +align_cell_2_toggled (GtkToggleButton *toggle, + GtkCellArea *area) +{ + gboolean align = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_2, "align", align, NULL); +} + +static void +align_cell_3_toggled (GtkToggleButton *toggle, + GtkCellArea *area) +{ + gboolean align = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_3, "align", align, NULL); +} + +static void +expand_cell_1_toggled (GtkToggleButton *toggle, + GtkCellArea *area) +{ + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_1, "expand", expand, NULL); +} + +static void +expand_cell_2_toggled (GtkToggleButton *toggle, + GtkCellArea *area) +{ + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_2, "expand", expand, NULL); +} + +static void +expand_cell_3_toggled (GtkToggleButton *toggle, + GtkCellArea *area) +{ + gboolean expand = gtk_toggle_button_get_active (toggle); + + gtk_cell_area_cell_set (area, cell_3, "expand", expand, NULL); +} + +gboolean +enable_submenu_headers (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + return TRUE; +} + + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ +static void +menu_activated_cb (GtkTreeMenu *menu, + const gchar *path, + gpointer unused) +{ + GtkTreeModel *model = gtk_tree_menu_get_model (menu); + GtkTreeIter iter; + gchar *row_name; + + if (!gtk_tree_model_get_iter_from_string (model, &iter, path)) + return; + + gtk_tree_model_get (model, &iter, SIMPLE_COLUMN_NAME, &row_name, -1); + + g_print ("Item activated: %s\n", row_name); + + g_free (row_name); +} + +static void +submenu_headers_toggled (GtkToggleButton *toggle, + GtkTreeMenu *menu) +{ + if (gtk_toggle_button_get_active (toggle)) + gtk_tree_menu_set_header_func (menu, enable_submenu_headers, NULL, NULL); + else + gtk_tree_menu_set_header_func (menu, NULL, NULL, NULL); +} + +static void +tearoff_toggled (GtkToggleButton *toggle, + GtkTreeMenu *menu) +{ + gtk_tree_menu_set_tearoff (menu, gtk_toggle_button_get_active (toggle)); +} +#endif + +static void +tree_menu (void) +{ + GtkWidget *window, *widget; + GtkWidget *menubar, *vbox; + GtkCellArea *area; + GtkTreeModel *store; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + gtk_window_set_title (GTK_WINDOW (window), "GtkTreeMenu"); + + vbox = gtk_vbox_new (FALSE, 4); + gtk_widget_show (vbox); + + menubar = gtk_menu_bar_new (); + gtk_widget_show (menubar); + + store = simple_tree_model (); + area = create_cell_area (); + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ + menuitem = gtk_menu_item_new_with_label ("Grid"); + menu = create_menu_grid_demo (); + gtk_widget_show (menu); + gtk_widget_show (menuitem); + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); + + menuitem = gtk_menu_item_new_with_label ("Tree"); + menu = simple_tree_menu (); + gtk_widget_show (menu); + gtk_widget_show (menuitem); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menubar), menuitem); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu); + + g_signal_connect (menu, "menu-activate", G_CALLBACK (menu_activated_cb), NULL); + + gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0); +#endif + + /* Add a combo box with the same menu ! */ + widget = gtk_combo_box_new_with_area (area); + gtk_combo_box_set_model (GTK_COMBO_BOX (widget), store); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_end (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + /* Now add some controls */ + widget = gtk_combo_box_text_new (); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Horizontal"); + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), "Vertical"); + gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "changed", + G_CALLBACK (orientation_changed), area); + + widget = gtk_check_button_new_with_label ("Align 2nd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (align_cell_2_toggled), area); + + widget = gtk_check_button_new_with_label ("Align 3rd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (align_cell_3_toggled), area); + + widget = gtk_check_button_new_with_label ("Expand 1st Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_1_toggled), area); + + widget = gtk_check_button_new_with_label ("Expand 2nd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_2_toggled), area); + + widget = gtk_check_button_new_with_label ("Expand 3rd Cell"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (expand_cell_3_toggled), area); + +#if _GTK_TREE_MENU_WAS_A_PUBLIC_CLASS_ + widget = gtk_check_button_new_with_label ("Submenu Headers"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (submenu_headers_toggled), menu); + + widget = gtk_check_button_new_with_label ("Tearoff menu"); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE); + gtk_widget_show (widget); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (widget), "toggled", + G_CALLBACK (tearoff_toggled), menu); +#endif + + gtk_container_add (GTK_CONTAINER (window), vbox); + + gtk_widget_show (window); +} + +int +main (int argc, char *argv[]) +{ + gtk_init (NULL, NULL); + + tree_menu (); + + gtk_main (); + + return 0; +} diff --git a/tests/testtreeview.c b/tests/testtreeview.c index d28cb3520a..80efc90fb8 100644 --- a/tests/testtreeview.c +++ b/tests/testtreeview.c @@ -351,7 +351,7 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type) gtk_tree_view_set_rules_hint (tree_view, TRUE); rend = gtk_cell_renderer_text_new (); - + col = gtk_tree_view_column_new_with_attributes ("Column 1", rend, "text", 1, @@ -709,6 +709,9 @@ main (int argc, gtk_init (&argc, &argv); + if (g_getenv ("RTL")) + gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL); + our_pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **) book_closed_xpm); #if 0 diff --git a/tests/testverticalcells.c b/tests/testverticalcells.c new file mode 100644 index 0000000000..2f49022414 --- /dev/null +++ b/tests/testverticalcells.c @@ -0,0 +1,379 @@ +/* testverticalcells.c + * + * Copyright (C) 2010 Openismus GmbH + * + * Authors: + * Tristan Van Berkom + * + * 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, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "config.h" +#include + +typedef struct _TreeEntry TreeEntry; + +struct _TreeEntry { + const gchar *icon; + const gchar *info; + const gchar *description; + const gchar *fine_print; + const gchar *fine_print_color; + gint progress; + TreeEntry *entries; +}; + +enum { + ICON_COLUMN, + INFO_COLUMN, + DESCRIPTION_COLUMN, + FINE_PRINT_COLUMN, + FINE_PRINT_COLOR_COLUMN, + PROGRESS_COLUMN, + NUM_COLUMNS +}; + + +static TreeEntry info_entries[] = + { + { + "gtk-execute", + "Will you\n" + "run this ?", + "Currently executing that thing... you might want to abort", + "and every day he went fishing for pigs in the sky", + "green", + 83, + NULL + }, + { + "gtk-dialog-authentication", + "This is the\n" + "realest of the real", + "We are about to authenticate the actual realness, this could take some time", + "one day he caught a giant ogre who barked and barked and barked", + "purple", + 4, + NULL + }, + { 0, }, + }; + +static TreeEntry directory_entries[] = + { + { + "gtk-edit", + "We can edit\n" + "things in here", + "Time to edit your directory, almost finished now", + "she thought the best remedy for daydreams was going to be sleep", + "dark sea green", + 99, + NULL + }, + { + "gtk-file", + "You have a\n" + "file here", + "Who would of thought there would be a file in the directory ?", + "after taking loads of sleeping pills he could still hear the pigs barking", + "green yellow", + 33, + NULL + }, + { + "gtk-dialog-question", + "Any questions ?", + "This file would like to ask you a question", + "so he decided that the fine print underneath the progress bar probably made no sense at all", + "lavender", + 73, + NULL + }, + { 0, }, + }; + +static TreeEntry other_entries[] = + { + { + "gtk-zoom-fit", + "Thats the\n" + "perfect fit", + "Now fitting foo into bar using frobnicator", + "using his nifty wide angle lense, he was able to catch a 'dark salmon', it was no flying pig " + "however it was definitely a keeper", + "dark salmon", + 59, + NULL + }, + { + "gtk-underline", + "Under the\n" + "line", + "Now underlining that this demo would look alot niftier with some real content", + "it was indeed strange to catch a red salmon while fishing for pigs in the deep sky blue.", + "deep sky blue", + 99, + NULL + }, + { 0, }, + }; + +static TreeEntry add_entries[] = + { + { + "gtk-about", + "its about\n" + "to start", + "This is what it's all about", + "so he went ahead and added the 'gtk-about' icon to his story, thinking 'mint cream' would be the " + "right color for something like that", + "dark violet", + 1, + NULL + }, + { + "gtk-zoom-in", + "Watch it\n" + "Zoom !", + "Now zooming into something", + "while fishing for pigs in the sky, maybe he would have caught something faster if only he had zoomed in", + "orchid", + 6, + NULL + }, + { + "gtk-zoom-out", + "Zoom Zoom\n" + "Zoom !", + "Now zooming out of something else", + "the daydream had a much prettier picture over all once he had zoomed out for the wide angle, " + "jill agreed", + "dark magenta", + 46, + other_entries + }, + { 0, }, + }; + + +static TreeEntry main_entries[] = + { + { + "gtk-info", + "This is all\n" + "the info", + "We are currently informing you", + "once upon a time in a land far far away there was a guy named buba", + "red", + 64, + info_entries + }, + { + "gtk-dialog-warning", + "This is a\n" + "warning", + "We would like to warn you that your laptop might explode after we're done", + "so he decided that he must be stark raving mad", + "orange", + 43, + NULL + }, + { + "gtk-dialog-error", + "An error will\n" + "occur", + "Once we're done here, dont worry... an error will surely occur.", + "and went to a see a yellow physiotherapist who's name was jill", + "yellow", + 98, + NULL + }, + { + "gtk-directory", + "The directory", + "Currently scanning your directories.", + "jill didnt know what to make of the barking pigs either so she fed him sleeping pills", + "brown", + 20, + directory_entries + }, + { + "gtk-delete", + "Now deleting\n" + "the whole thing", + "Time to delete the sucker", + "and he decided to just delete the whole conversation since it didnt make sense to him", + "dark orange", + 26, + NULL + }, + { + "gtk-add", + "Anything\n" + "to add ?", + "Now adding stuff... please be patient", + "but on second thought, maybe he had something to add so that things could make a little less sense.", + "maroon", + 72, + add_entries + }, + { + "gtk-redo", + "Time to\n" + "do it again", + "For the hell of it, lets add the content to the treeview over and over again !", + "buba likes telling his story, so maybe he's going to tell it 20 times more.", + "deep pink", + 100, + NULL + }, + { 0, }, + }; + + +static void +populate_model (GtkTreeStore *model, + GtkTreeIter *parent, + TreeEntry *entries) +{ + GtkTreeIter iter; + gint i; + + for (i = 0; entries[i].info != NULL; i++) + { + gtk_tree_store_append (model, &iter, parent); + gtk_tree_store_set (model, &iter, + ICON_COLUMN, entries[i].icon, + INFO_COLUMN, entries[i].info, + DESCRIPTION_COLUMN, entries[i].description, + FINE_PRINT_COLUMN, entries[i].fine_print, + FINE_PRINT_COLOR_COLUMN, entries[i].fine_print_color, + PROGRESS_COLUMN, entries[i].progress, + -1); + + if (entries[i].entries) + populate_model (model, &iter, entries[i].entries); + } +} + +static GtkTreeModel * +create_model (void) +{ + GtkTreeStore *model; + gint i; + + model = gtk_tree_store_new (NUM_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INT); + + for (i = 0; i < 20; i++) + populate_model (model, NULL, main_entries); + + return GTK_TREE_MODEL (model); +} + +gint +main (gint argc, gchar **argv) +{ + GtkWidget *window; + GtkWidget *scrolled_window; + GtkWidget *tree_view; + GtkTreeModel *tree_model; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkCellArea *area; + + gtk_init (&argc, &argv); + + if (g_getenv ("RTL")) + gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Vertical cells in GtkTreeViewColumn example"); + g_signal_connect (window, "destroy", gtk_main_quit, NULL); + + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (window), scrolled_window); + + tree_model = create_model (); + tree_view = gtk_tree_view_new_with_model (tree_model); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); + + /* First column */ + column = gtk_tree_view_column_new (); + + renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (renderer, "stock-size", GTK_ICON_SIZE_DIALOG, NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "stock-id", ICON_COLUMN, NULL); + + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, "scale", 1.2F, "weight", PANGO_WEIGHT_BOLD, NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "text", INFO_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); + + /* Second (vertical) column */ + column = gtk_tree_view_column_new (); + area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (column)); + gtk_orientable_set_orientation (GTK_ORIENTABLE (area), GTK_ORIENTATION_VERTICAL); + + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, "editable", TRUE, NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "text", DESCRIPTION_COLUMN, + NULL); + + renderer = gtk_cell_renderer_progress_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "value", PROGRESS_COLUMN, + NULL); + + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, "scale", 0.6F, "ellipsize", PANGO_ELLIPSIZE_END, NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "text", FINE_PRINT_COLUMN, + "foreground", FINE_PRINT_COLOR_COLUMN, + NULL); + + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); + + gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view)); + + gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); + + gtk_window_set_default_size (GTK_WINDOW (window), + 800, 400); + + gtk_widget_show_all (window); + gtk_main (); + + return 0; +}